trader.config.settings module¶
Raw configuration sourcing from .env.
This module only reads values. Deciding whether those values are safe to act on is loader.py’s job — keeping the two separate means a later change to where config lives does not touch the safety gate.
- class trader.config.settings.LogLevel(*values)[source]¶
Bases:
StrEnumVerbosity for the rotating log file.
A closed set rather than a free string: LOG_LEVEL=VERBOSE should fail at load with the valid values named, not fall back to INFO and leave someone hunting for why their debug output never appeared.
- DEBUG = 'DEBUG'¶
- INFO = 'INFO'¶
- WARNING = 'WARNING'¶
- ERROR = 'ERROR'¶
- CRITICAL = 'CRITICAL'¶
- class trader.config.settings.Settings(_case_sensitive=None, _nested_model_default_partial_update=None, _env_prefix=None, _env_prefix_target=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, _build_sources=None, *, alpaca_paper_api_key=SecretStr(''), alpaca_paper_api_secret=SecretStr(''), alpaca_live_api_key=SecretStr(''), alpaca_live_api_secret=SecretStr(''), anthropic_api_key=SecretStr(''), trading_mode=TradingMode.paper, live_trading_enabled=False, database_url_template, database_password, ollama_base_url='http://localhost:11434', web_host='127.0.0.1', web_port=8000, log_level=LogLevel.INFO)[source]¶
Bases:
BaseSettingsValues read from .env / the process environment.
Secrets live here and only here — never in YAML (requirements §14).
- Parameters:
_case_sensitive (bool | None)
_nested_model_default_partial_update (bool | None)
_env_prefix (str | None)
_env_prefix_target (EnvPrefixTarget | None)
_env_file (DotenvType | None)
_env_file_encoding (str | None)
_env_ignore_empty (bool | None)
_env_nested_delimiter (str | None)
_env_nested_max_split (int | None)
_env_parse_none_str (str | None)
_env_parse_enums (bool | None)
_cli_prog_name (str | None)
_cli_parse_args (bool | list[str] | tuple[str, ...] | None)
_cli_settings_source (CliSettingsSource[Any] | None)
_cli_parse_none_str (str | None)
_cli_hide_none_type (bool | None)
_cli_avoid_json (bool | None)
_cli_enforce_required (bool | None)
_cli_use_class_docs_for_groups (bool | None)
_cli_exit_on_error (bool | None)
_cli_prefix (str | None)
_cli_flag_prefix_char (str | None)
_cli_implicit_flags (bool | Literal['dual', 'toggle'] | None)
_cli_ignore_unknown_args (bool | None)
_cli_kebab_case (bool | Literal['all', 'no_enums'] | None)
_cli_shortcuts (Mapping[str, str | list[str]] | None)
_secrets_dir (PathType | None)
_build_sources (tuple[tuple[PydanticBaseSettingsSource, ...], dict[str, Any]] | None)
alpaca_paper_api_key (SecretStr)
alpaca_paper_api_secret (SecretStr)
alpaca_live_api_key (SecretStr)
alpaca_live_api_secret (SecretStr)
anthropic_api_key (SecretStr)
trading_mode (TradingMode)
live_trading_enabled (bool)
database_url_template (str)
database_password (SecretStr)
ollama_base_url (str)
web_host (str)
web_port (int)
log_level (LogLevel)
- 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': 'utf-8', 'env_ignore_empty': False, 'env_nested_delimiter': None, 'env_nested_max_split': None, 'env_parse_enums': None, 'env_parse_none_str': None, 'env_prefix': '', 'env_prefix_target': 'variable', '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].
- alpaca_paper_api_key: SecretStr¶
- alpaca_paper_api_secret: SecretStr¶
- alpaca_live_api_key: SecretStr¶
- alpaca_live_api_secret: SecretStr¶
- anthropic_api_key: SecretStr¶
- trading_mode: TradingMode¶
- live_trading_enabled: bool¶
- database_url_template: str¶
- database_password: SecretStr¶
- ollama_base_url: str¶
- web_host: str¶
- web_port: int¶