Settings Module
Application settings - 12-Factor App Factor III: Configuration.
Settings Class
- settings.settings Global settings instance
Centralized configuration - all config in environment variables.
- class settings.Settings(_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, *, ENV_MODE: str = 'development', LOG_LEVEL: str = 'INFO', OLLAMA_HOST: str = 'http://localhost:11434', LLM_MODEL: str = 'llama3', DATABASE_URL: str = 'sqlite:///./job_agent.db', DB_TYPE: str = 'sqlite', SENDER_EMAIL: str = '', SENDER_PASSWORD: str = '', RECIPIENT_EMAIL: str = '', SMTP_HOST: str = 'smtp.gmail.com', SMTP_PORT: int = 587, TWILIO_SID: str = '', TWILIO_TOKEN: str = '', TWILIO_PHONE: str = '', RECIPIENT_PHONE: str = '', LINKEDIN_CLIENT_ID: str = '', LINKEDIN_CLIENT_SECRET: str = '', ADZUNA_APP_ID: str = '', ADZUNA_API_KEY: str = '', ADZUNA_COUNTRY: str = 'us', INDEED_PUBLISHER_ID: str = '', ZIPRECRUITER_API_KEY: str = '', GITHUB_TOKEN: str = '', THE_MUSE_API_KEY: str = '', REMOTE_OK_ENABLED: bool = True, REMOTIVE_ENABLED: bool = True, ARBEITNOW_ENABLED: bool = True, HIMALAYAS_ENABLED: bool = True, JOBICY_ENABLED: bool = True, THE_MUSE_ENABLED: bool = True, WE_WORK_REMOTELY_ENABLED: bool = True, ADZUNA_ENABLED: bool = False, INDEED_ENABLED: bool = False, ZIPRECRUITER_ENABLED: bool = False, LINKEDIN_ENABLED: bool = False, LEVER_ENABLED: bool = True, ASHBY_ENABLED: bool = True, GREENHOUSE_ENABLED: bool = True, GLASSDOOR_ENABLED: bool = False, MONSTER_ENABLED: bool = False, CAREERJET_ENABLED: bool = False, JOOBLE_ENABLED: bool = False, SIMPLYHIRED_ENABLED: bool = False, MAX_JOBS_PER_SEARCH: int = 20, SEARCH_INTERVAL_HOURS: int = 24, AUTO_APPLY_ENABLED: bool = False, LEVER_COMPANIES: str = 'stripe,airbnb,notion,figma,twilio,datadog,snowflake,cloudflare,elastic,gitlab', ASHBY_COMPANIES: str = 'linear,cal.com,resend,raycast,polymarket,loom,retool,dbt-labs', GREENHOUSE_COMPANIES: str = 'shopify,discord,reddit,intercom,dropbox,squarespace,duolingo,eventbrite,hubspot,zendesk', HTTP_HOST: str = '0.0.0.0', HTTP_PORT: int = 8080, CONFIG_FILE_PATH: str = 'input/search_criteria.json', DATA_DIR: str = 'data')[source]
Bases:
BaseSettingsCentralized configuration - all config in environment variables.
- class Config[source]
Bases:
object- env_file = '.env'
- env_file_encoding = 'utf-8'
- extra = 'ignore'
- adzuna_api_key: str
- adzuna_app_id: str
- adzuna_country: str
- adzuna_enabled: bool
- arbeitnow_enabled: bool
- ashby_companies: str
- ashby_enabled: bool
- auto_apply_enabled: bool
- careerjet_enabled: bool
- config_file_path: str
- data_dir: str
- database_url: str
- db_type: str
- env_mode: str
- github_token: str
- glassdoor_enabled: bool
- greenhouse_companies: str
- greenhouse_enabled: bool
- himalayas_enabled: bool
- http_host: str
- http_port: int
- indeed_enabled: bool
- indeed_publisher_id: str
- jobicy_enabled: bool
- jooble_enabled: bool
- lever_companies: str
- lever_enabled: bool
- linkedin_client_id: str
- linkedin_client_secret: str
- linkedin_enabled: bool
- llm_model: str
- log_level: str
- max_jobs_per_search: int
- 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', '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].
- monster_enabled: bool
- ollama_host: str
- recipient_email: str
- recipient_phone: str
- remote_ok_enabled: bool
- remotive_enabled: bool
- search_interval_hours: int
- sender_email: str
- sender_password: str
- simplyhired_enabled: bool
- smtp_host: str
- smtp_port: int
- the_muse_api_key: str
- the_muse_enabled: bool
- twilio_phone: str
- twilio_sid: str
- twilio_token: str
- we_work_remotely_enabled: bool
- ziprecruiter_api_key: str
- ziprecruiter_enabled: bool
Configuration Variables
- ENV_MODE
Environment mode (development, production)
- LOG_LEVEL
Logging level (DEBUG, INFO, WARNING, ERROR)
- OLLAMA_HOST
LLM server host URL
- LLM_MODEL
LLM model name
- DATABASE_URL
Database connection URL
- SENDER_EMAIL
Email sender address
- SENDER_PASSWORD
Email sender password (app password)
- RECIPIENT_EMAIL
Email recipient address
- TWILIO_SID
Twilio account SID
- TWILIO_TOKEN
Twilio auth token
- TWILIO_PHONE
Twilio phone number
- RECIPIENT_PHONE
SMS recipient phone number