From c990518cb533a793399e44edbb4bc036342c7175 Mon Sep 17 00:00:00 2001 From: HsiangNianian Date: Sat, 4 Jan 2025 22:38:23 +0800 Subject: feat(core): Initialize core components and configuration models --- src/hrc/config.py | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/hrc/config.py (limited to 'src/hrc/config.py') 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() -- cgit v1.2.3-70-g09d2