config.py 871 B

123456789101112131415161718192021222324252627282930313233
  1. from __future__ import annotations
  2. import dataclasses
  3. import tomllib
  4. import typing
  5. @dataclasses.dataclass(eq=False, frozen=True, slots=True)
  6. class Config:
  7. username: str
  8. fio_api_key: str
  9. market: MarketConfig
  10. supply: SupplyConfig
  11. def __init__(self) -> None:
  12. with open('config.toml', 'rb') as f:
  13. config = tomllib.load(f)
  14. for k, v in config.items():
  15. match k:
  16. case 'market':
  17. v = MarketConfig(**v)
  18. case 'supply':
  19. v = SupplyConfig(**v)
  20. object.__setattr__(self, k, v)
  21. @dataclasses.dataclass(eq=False, frozen=True, slots=True)
  22. class MarketConfig:
  23. ignore_warehouses: typing.Sequence[str]
  24. @dataclasses.dataclass(eq=False, frozen=True, slots=True)
  25. class SupplyConfig:
  26. ignore_materials: typing.Sequence[str]
  27. config = Config()