-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathconfig.py
40 lines (28 loc) · 1.54 KB
/
config.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import glob
import pathlib
import typing
import pydantic
DATA_DIR: pathlib.Path = pathlib.Path('./data')
REPORT_DIR: pathlib.Path = pathlib.Path('./report')
class Config(pydantic.BaseModel):
experiment: str = "2024-05--Simulation"
prompt_classify_files: typing.Dict[str, pathlib.Path] = pydantic.Field(default_factory=lambda: dict())
raw_data_files: typing.Dict[str, pathlib.Path] = pydantic.Field(default_factory=lambda: dict())
processed_data_files: typing.Dict[str, pathlib.Path] = pydantic.Field(default_factory=lambda: dict())
final_data_files: typing.Dict[str, pathlib.Path] = pydantic.Field(default_factory=lambda: dict())
data_dir: pathlib.Path = None
report_dir: pathlib.Path = None
def model_post_init(self, __context: typing.Any) -> None:
self.data_dir = DATA_DIR / self.experiment
self.report_dir = REPORT_DIR / self.experiment
pathlib.Path(self.report_dir).mkdir(parents=True, exist_ok=True)
self.prompt_classify_files = Config.load_data_dir(f'{DATA_DIR}/prompts_classify/*')
self.raw_data_files = Config.load_data_dir(f'{DATA_DIR}/{self.experiment}/raw/*')
self.processed_data_files = Config.load_data_dir(f'{DATA_DIR}/{self.experiment}/processed/*')
self.final_data_files = Config.load_data_dir(f'{DATA_DIR}/{self.experiment}/final/*')
@staticmethod
def load_data_dir(path: str) -> typing.Dict[str, pathlib.Path]:
return {
(file_obj := pathlib.Path(file_path)).stem: file_obj
for file_path in glob.glob(path)
}