| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- from pathlib import Path
- class Env:
- envs = {}
- def __new__(cls, context=None):
- if context not in cls.envs:
- obj = object.__new__(cls)
- cls.envs[context] = obj
- return cls.envs[context]
- def __init__(self, context=None):
- self._context = context or {}
- self._data_folder = ''
- self._output_folder = ''
- @property
- def data_folder(self):
- return self._data_folder
- @data_folder.setter
- def data_folder(self, folder):
- path = Path(folder)
- if path.is_absolute():
- self._data_folder = str(path)
- else:
- self._data_folder = str(self.resolve(folder))
- @property
- def output_folder(self):
- return self._output_folder
- @output_folder.setter
- def output_folder(self, folder):
- path = Path(folder)
- if path.is_absolute():
- self._output_folder = str(path)
- else:
- self._output_folder = str(self.resolve(folder))
- @classmethod
- def _resolve(cls, folder, file_name):
- file = Path(file_name).expanduser()
- if file.is_absolute():
- return file
- return Path(folder).joinpath(file_name).resolve()
- def resolve(self, file_name):
- return self._resolve(str(Path(__file__).parent), file_name)
- def resolve_data(self, file_name):
- return self._resolve(self._data_folder, file_name)
- def resolve_output(self, file_name):
- return self._resolve(self._output_folder, file_name)
- env = Env()
|