diff options
Diffstat (limited to 'src/hrc/config.py')
| -rw-r--r-- | src/hrc/config.py | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/hrc/config.py b/src/hrc/config.py new file mode 100644 index 0000000..d179258 --- /dev/null +++ b/src/hrc/config.py @@ -0,0 +1,34 @@ +from typing import Literal, Optional, Set, Union + +from pydantic import BaseModel, ConfigDict, DirectoryPath, Field + + +class ConfigModel(BaseModel): + model_config = ConfigDict(extra="allow") + + __config_name__: str = "" + + +class LogConfig(ConfigModel): + level: Union[str, int] = "DEBUG" + verbose_exception: bool = False + + +class ServiceConfig(ConfigModel): + """Service configuration.""" + + +class CoreConfig(ConfigModel): + rules: Set[str] = Field(default_factory=set) + rule_dirs: Set[DirectoryPath] = Field(default_factory=set) + log: LogConfig = LogConfig() + services: Set[str] = Field(default_factory=set) + +class RuleConfig(ConfigModel): + """Rule configuration.""" + + +class MainConfig(ConfigModel): + core: CoreConfig = CoreConfig() + rule: RuleConfig = RuleConfig() + service: ServiceConfig = ServiceConfig() |
