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: BaseSettings

Centralized 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
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