poulet_py.config.settings module#
Configuration settings.
This module defines the application’s configuration settings using Pydantic’s BaseSettings and BaseModel. It supports loading configuration from environment variables and a .env file.
Usage Examples#
- Accessing Default Settings:
>>> from poulet_py.config.settings import settings >>> print(settings.log.level) # Output: "info" >>> print(settings.log.file) # Output: None
- Overriding Settings with Environment Variables:
Set environment variables before running the application:
`bash export LOG__LEVEL="debug" export LOG__FILE="/var/log/myapp.log" `Then access the settings in your code: >>> from poulet_py.config.settings import settings >>> print(settings.log.level) # Output: “debug” >>> print(settings.log.file) # Output: “/var/log/myapp.log”
- Loading Settings from a .env File:
Create a .env file in the project root:
`env LOG__LEVEL=warning LOG__FILE=/tmp/app.log `Then access the settings in your code: >>> from poulet_py.config.settings import settings >>> print(settings.log.level) # Output: “warning” >>> print(settings.log.file) # Output: “/tmp/app.log”
- Programmatically Updating Settings:
>>> from poulet_py.config.settings import Settings >>> custom_settings = Settings(log={"level": "error", "file": "/custom/path.log"}) >>> print(custom_settings.log.level) # Output: "error" >>> print(custom_settings.log.file) # Output: "/custom/path.log"
- class Log(**data)[source]#
Bases:
BaseModel-
level:
str#
-
file:
str|None#
- model_config: ClassVar[ConfigDict] = {}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
-
level:
- class Settings(_case_sensitive=None, _nested_model_default_partial_update=None, _env_prefix=None, _env_file=PosixPath('.'), _env_file_encoding=None, _env_ignore_empty=None, _env_nested_delimiter=None, _env_nested_max_split=None, _env_parse_none_str=None, _env_parse_enums=None, _cli_prog_name=None, _cli_parse_args=None, _cli_settings_source=None, _cli_parse_none_str=None, _cli_hide_none_type=None, _cli_avoid_json=None, _cli_enforce_required=None, _cli_use_class_docs_for_groups=None, _cli_exit_on_error=None, _cli_prefix=None, _cli_flag_prefix_char=None, _cli_implicit_flags=None, _cli_ignore_unknown_args=None, _cli_kebab_case=None, _cli_shortcuts=None, _secrets_dir=None, **values)[source]#
Bases:
BaseSettingsThis class loads configuration from environment variables and a .env file. It supports nested configuration using the env_nested_delimiter (e.g., LOG__LEVEL).
- model_config: ClassVar[SettingsConfigDict] = {'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_file_encoding': 'utf-8', 'env_ignore_empty': False, 'env_nested_delimiter': '__', 'env_nested_max_split': None, 'env_parse_enums': None, 'env_parse_none_str': None, 'env_prefix': '', 'extra': 'ignore', 'json_file': None, 'json_file_encoding': None, 'nested_model_default_partial_update': False, 'protected_namespaces': ('model_validate', 'model_dump', 'settings_customise_sources'), 'secrets_dir': None, 'toml_file': None, 'validate_default': True, 'yaml_config_section': None, 'yaml_file': None, 'yaml_file_encoding': None}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- SETTINGS = Settings(log=Log(level='info', file=None))#
An instance of the Settings class.
This instance holds the application’s configuration, loaded from environment variables and a .env file. It can be imported and used throughout the application to access configuration settings.
Example
To access the logging level: >>> from poulet_py.config.settings import SETTINGS >>> print(SETTINGS.log.level)