config¶
Module-global configuration models
- class mio.models.config.Config(_case_sensitive: bool | None = None, _nested_model_default_partial_update: bool | None = None, _env_prefix: str | None = None, _env_prefix_target: EnvPrefixTarget | None = None, _env_file: DotenvType | None = PosixPath('.'), _env_file_encoding: str | None = None, _env_ignore_empty: bool | None = None, _env_nested_delimiter: str | None = None, _env_nested_max_split: int | None = None, _env_parse_none_str: str | None = None, _env_parse_enums: bool | None = None, _cli_prog_name: str | None = None, _cli_parse_args: bool | list[str] | tuple[str, ...] | None = None, _cli_settings_source: CliSettingsSource[Any] | None = None, _cli_parse_none_str: str | None = None, _cli_hide_none_type: bool | None = None, _cli_avoid_json: bool | None = None, _cli_enforce_required: bool | None = None, _cli_use_class_docs_for_groups: bool | None = None, _cli_exit_on_error: bool | None = None, _cli_prefix: str | None = None, _cli_flag_prefix_char: str | None = None, _cli_implicit_flags: bool | Literal['dual', 'toggle'] | None = None, _cli_ignore_unknown_args: bool | None = None, _cli_kebab_case: bool | Literal['all', 'no_enums'] | None = None, _cli_shortcuts: Mapping[str, str | list[str]] | None = None, _secrets_dir: PathType | None = None, _build_sources: tuple[tuple[PydanticBaseSettingsSource, ...], dict[str, Any]] | None = None, *, user_dir: Path = PosixPath('/home/docs/.config/mio'), config_dir: Path = PosixPath('config'), log_dir: Path = PosixPath('logs'), logs: LogConfig = LogConfig(level='INFO', level_file=None, level_stdout=None, file_n=5, file_size=4194304))¶
Runtime configuration for mio.
See https://docs.pydantic.dev/latest/concepts/pydantic_settings/
Set values either in an
.envfile or using environment variables prefixed withMIO_*. Values in nested models are separated with__, eg.MIO_LOGS__LEVELSee
.env.examplein repository rootPaths are set relative to
user_dirby default, unless explicitly specified.- model_config = {'arbitrary_types_allowed': True, 'case_sensitive': False, 'cli_avoid_json': False, 'cli_enforce_required': False, 'cli_exit_on_error': True, 'cli_flag_prefix_char': '-', 'cli_hide_none_type': False, 'cli_ignore_unknown_args': False, 'cli_implicit_flags': False, 'cli_kebab_case': False, 'cli_parse_args': None, 'cli_parse_none_str': None, 'cli_prefix': '', 'cli_prog_name': None, 'cli_shortcuts': None, 'cli_use_class_docs_for_groups': False, 'enable_decoding': True, 'env_file': '.env', 'env_file_encoding': None, 'env_ignore_empty': False, 'env_nested_delimiter': '__', 'env_nested_max_split': None, 'env_parse_enums': None, 'env_parse_none_str': None, 'env_prefix': 'mio_', 'env_prefix_target': 'variable', 'extra': 'ignore', 'json_file': None, 'json_file_encoding': None, 'nested_model_default_partial_update': True, 'protected_namespaces': ('model_validate', 'model_dump', 'settings_customise_sources'), 'pyproject_toml_table_header': ('tool', 'mio', 'config'), 'secrets_dir': None, 'toml_file': None, 'validate_default': True, 'yaml_config_section': None, 'yaml_file': 'mio_config.yaml', 'yaml_file_encoding': None}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- paths_relative_to_basedir() Config¶
If relative paths are given, make them absolute relative to
user_dir
- classmethod settings_customise_sources(settings_cls: type[BaseSettings], init_settings: PydanticBaseSettingsSource, env_settings: PydanticBaseSettingsSource, dotenv_settings: PydanticBaseSettingsSource, file_secret_settings: PydanticBaseSettingsSource) tuple[PydanticBaseSettingsSource, ...]¶
Read config settings in order of priority (high to low).
Arguments passed to the class constructor (not user configurable)
Environment variables like
export MIO_LOG_DIR=~/.envfile in the working directorymio_config.yamlfile in the working directorytool.mio.configtable inpyproject.tomlin the working directoryUser
mio_config.yamlfile, configured byuser_dirGlobal
mio_config.yaml(usemio config get global_configto find location)Default values in the
GlobalConfigmodel
- class mio.models.config.LogConfig(*, level: Literal['DEBUG', 'INFO', 'WARNING', 'ERROR'] = 'INFO', level_file: Literal['DEBUG', 'INFO', 'WARNING', 'ERROR'] | None = None, level_stdout: Literal['DEBUG', 'INFO', 'WARNING', 'ERROR'] | None = None, file_n: int = 5, file_size: int = 4194304)¶
Configuration for logging
- level_file: Literal['DEBUG', 'INFO', 'WARNING', 'ERROR'] | None¶
Severity for file-based logging. If unset, use
level
- level_stdout: Literal['DEBUG', 'INFO', 'WARNING', 'ERROR'] | None¶
Severity for stream-based logging. If unset, use
level
- model_config = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].