Исходный код core.configs.path

"""Рабочие директории клиента.

Пути считаются от ``BASE``, на диск ничего не пишется до явного вызова
``create_directories()`` — его делает ``configure_runtime()`` при старте
приложения. Раньше директории создавались валидатором, то есть побочным
эффектом импорта."""

from pathlib import Path

from pydantic import BaseModel


[документация] class PathSettings(BaseModel): """Рабочие директории клиента под ``PATHS__BASE``.""" BASE: str = "/tmp/.soniks" OUTPUT_DIR: str = "output" COMPLETE_DIR: str = "complete" INCOMPLETE_DIR: str = "incomplete" # Последний полученный с портала документ состояния (конфигурация станции, # координаты, канал релизов). Не под ``BASE``: тот в compose перекрывается # на постоянный том отдельной переменной, а этот путь лежит на том же томе # сам по себе. Станция без портала стартует на нём. STATE_FILE: str = "/var/lib/soniks-client/desired-state.json" @property def base_path(self) -> Path: return Path(self.BASE) @property def output_path(self) -> Path: return self.base_path / self.OUTPUT_DIR @property def complete_path(self) -> Path: return self.base_path / self.COMPLETE_DIR @property def incomplete_path(self) -> Path: return self.base_path / self.INCOMPLETE_DIR
[документация] def create_directories(self) -> None: """Создать рабочие директории на диске.""" paths_to_create = ( self.base_path, self.output_path, self.complete_path, self.incomplete_path, ) for path in paths_to_create: try: path.mkdir(parents=True, exist_ok=True) except OSError as e: raise RuntimeError(f"Ошибка при создании директории {path}") from e