Skip to main content

Reusable Pydantic settings classes for FastAPI applications

Project description

FastAPI Config Patterns

Reusable Pydantic settings classes for FastAPI applications with common configuration patterns.

Extracted from: GridFlow backend/src/config.py

Installation

pip install fastapi-config-patterns

Features

  • BaseFastAPISettings: Common FastAPI app settings (debug, host, port, CORS)
  • BaseDatabaseSettings: Database connection configuration mixin
  • Validators: Reusable field validators (CORS origins parser)

Usage

Basic Settings

from fastapi_config_patterns import BaseFastAPISettings

class Settings(BaseFastAPISettings):
    # Add your app-specific settings
    app_name: str = "my-app"
    secret_key: str

settings = Settings()
print(settings.debug)  # False
print(settings.port)   # 8000

With Database

from fastapi_config_patterns import (
    BaseFastAPISettings,
    BaseDatabaseSettings
)

class Settings(BaseFastAPISettings, BaseDatabaseSettings):
    app_name: str = "my-app"

settings = Settings()
print(settings.database_url)  # postgresql+asyncpg://...

CORS Origins Validator

from pydantic import field_validator
from pydantic_settings import BaseSettings
from fastapi_config_patterns import assemble_cors_origins

class Settings(BaseSettings):
    allowed_origins: list[str]
    
    @field_validator("allowed_origins", mode="before")
    @classmethod
    def parse_origins(cls, v):
        return assemble_cors_origins(v)

# From environment variable: ALLOWED_ORIGINS="http://localhost:3000,http://localhost:8080"
settings = Settings()
print(settings.allowed_origins)  # ["http://localhost:3000", "http://localhost:8080"]

Environment Variables

The base classes support these environment variables:

# BaseFastAPISettings
DEBUG=true
ALLOWED_ORIGINS="http://localhost:3000,http://localhost:8080"

# BaseDatabaseSettings
DATABASE_URL="postgresql+asyncpg://user:pass@localhost:5432/db"

API Reference

BaseFastAPISettings

Base settings class with common FastAPI configuration.

Fields:

  • debug (bool): Debug mode (default: False, env: DEBUG)
  • api_v1_str (str): API v1 prefix (default: "/v1")
  • host (str): Server host (default: "0.0.0.0")
  • port (int): Server port (default: 8000)
  • allowed_origins (Union[str, List[str]]): CORS origins
  • cors_allow_credentials (bool): Allow credentials (default: False)
  • cors_max_age (int): Preflight cache seconds (default: 600)

BaseDatabaseSettings

Database connection configuration mixin.

Fields:

  • database_url (str): Database connection URL (env: DATABASE_URL)

Supported databases:

  • PostgreSQL: postgresql+asyncpg://user:pass@host:port/db
  • SQLite: sqlite+aiosqlite:///./app.db

assemble_cors_origins(v)

Parse CORS origins from string or list.

Args:

  • v (Union[str, List[str]]): Origins as string or list

Returns:

  • List[str]: Parsed list of origins

Handles:

  • Wildcard "*" for all origins
  • Comma-separated string
  • List of strings

Dependencies

  • pydantic>=2.0.0
  • pydantic-settings>=2.0.0

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fastapi_config_patterns-0.1.0.tar.gz (4.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fastapi_config_patterns-0.1.0-py3-none-any.whl (5.0 kB view details)

Uploaded Python 3

File details

Details for the file fastapi_config_patterns-0.1.0.tar.gz.

File metadata

  • Download URL: fastapi_config_patterns-0.1.0.tar.gz
  • Upload date:
  • Size: 4.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.11

File hashes

Hashes for fastapi_config_patterns-0.1.0.tar.gz
Algorithm Hash digest
SHA256 1b536c79be15ecd21830ec74df42bfa88de6132001fc93fcc61611333d0abd97
MD5 35374f5779cfe18cc8910cd1885450e9
BLAKE2b-256 623f2d6ebe6ae89f13c1dfdfd9e25510cd482ab2e718d2da8fde98f8f7e19fc2

See more details on using hashes here.

File details

Details for the file fastapi_config_patterns-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for fastapi_config_patterns-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b928dba0ca7ae7b3a3e6bb414bfade14e2ad40c366f72c2baff4e85c30b061e9
MD5 613513de5c308a94fbd14da724b9fc5e
BLAKE2b-256 e95fb70270212ea0bd67cc6b398508b2e38b520eb8e0f2a313960d191dd1fc92

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page