Source code for assets_guardian.core.config.paths_config

from dataclasses import dataclass
from typing import Any

from assets_guardian.core.config.loader import get_config_value
from assets_guardian.core.domain.models.location import Location
from assets_guardian.core.domain.models.validator import validate_field

DEFAULT_PATH_EXCEL = "local:outputs/assets_guardian.xlsx"
DEFAULT_PATH_PDF = "local:outputs/audit_report.pdf"
DEFAULT_PATH_RULES = "local:config/rules_config.yml"
DEFAULT_PATH_EXCEL_CONFIG = "local:config/excel_config.json"
DEFAULT_PATH_PDF_CONFIG = "local:config/pdf_config.json"
DEFAULT_PATH_EMPLOYEES = "local:config/employees.json"


[docs] @dataclass class PathsConfig: """Configuration of file paths. Attributes: excel (Location): Path to the Excel repository. pdf (Location): Path to the PDF report. rules (Location): Path to the rules configuration file. excel_config (Location): Path to the Excel rules configuration file. pdf_config (Location): Path to the PDF rules configuration file. """ excel: Location pdf: Location rules: Location excel_config: Location pdf_config: Location employees: Location config_path: Location def __post_init__(self) -> None: """Validates the configuration of file paths.""" validate_field(self, "excel", Location) validate_field(self, "pdf", Location) validate_field(self, "rules", Location) validate_field(self, "excel_config", Location) validate_field(self, "pdf_config", Location) validate_field(self, "employees", Location) validate_field(self, "config_path", Location) @classmethod def from_dict(cls, data: dict[str, Any], config_path: str) -> "PathsConfig": return cls( excel=Location( get_config_value( "excel", data, default=DEFAULT_PATH_EXCEL, env_name="PATH_EXCEL", ) ), pdf=Location( get_config_value( "pdf", data, default=DEFAULT_PATH_PDF, env_name="PATH_PDF", ) ), rules=Location( get_config_value( "rules", data, default=DEFAULT_PATH_RULES, env_name="PATH_RULES", ) ), excel_config=Location( get_config_value( "excel_config", data, default=DEFAULT_PATH_EXCEL_CONFIG, env_name="PATH_EXCEL_CONFIG", ) ), pdf_config=Location( get_config_value( "pdf_config", data, default=DEFAULT_PATH_PDF_CONFIG, env_name="PATH_PDF_CONFIG", ) ), employees=Location( get_config_value( "employees", data, default=DEFAULT_PATH_EMPLOYEES, env_name="PATH_EMPLOYEES", ) ), config_path=Location(f"local:{config_path}"), )