Skip to main content

Export your Pydantic settings to documentation with ease!

Project description

pydantic-settings-export

uv Ruff PyPI - Project version PyPI - Downloads Pepy - Total Downloads PyPI - Python Version PyPI - License

Export your Pydantic settings to documentation with ease!

This package seamlessly integrates with pydantic and pydantic-settings to automatically generate documentation from your settings models. Create Markdown docs, .env.example files, and more with minimal configuration.

✨ Key Features

  • 📝 Documentation Generation

    • Markdown with tables and descriptions
    • Environment files (.env.example)
    • Support for region injection in existing files
    • Customizable output formats
  • 🔄 Smart Configuration Handling

    • Automatic type detection
    • Environment variables validation
    • Default values preservation
    • Optional/required fields distinction
  • 🛠 Flexible Integration

    • Command-line interface
    • pre-commit hook support
    • GitHub Actions compatibility
    • Python API for custom solutions
  • 🔌 Additional Features

    • Email validation support (optional)
    • Markdown region injection (optional)
    • Multiple output paths for each generator
    • Configurable through pyproject.toml

📋 Requirements

  • Python 3.9 or higher
  • pydantic >= 2.7
  • pydantic-settings >= 2.3

Optional dependencies (aka extras):

  • email -- for email validation support (email-validator >= 2.2.0).
    • Required for pydantic.EmailStr type.
  • regions -- for Markdown region insertion support (text-region-parser >= 0.1.1).
    • Required for Markdown generator with region option.

Install with optional dependencies:

# Install with all optional dependencies
pip install "pydantic-settings-export[email,regions]"  # Install with all extras

# Install with specific optional dependency
pip install "pydantic-settings-export[email]"  # Install with email extra
pip install "pydantic-settings-export[regions]"  # Install with regions extra

🚀 Quick Start

  1. Install the package:
    pip install pydantic-settings-export
    
  2. Create your settings model:
    from pydantic_settings import BaseSettings
    
    
    class AppSettings(BaseSettings):
        """Application settings."""
        debug: bool = False
        api_key: str
    
  3. Generate documentation:
    pydantic-settings-export app.settings:AppSettings
    

For more detailed usage, see our Getting Started Guide.

Note: The package follows SemVer. GitHub releases/tags use v prefix (e.g. v1.0.0), while PyPI versions don't (e.g. 1.0.0).

Installation

Choose your preferred installation method:

# Using pip
pip install pydantic-settings-export

# Using pipx (recommended for CLI usage)
pipx install pydantic-settings-export

# Using uv
uv tool install pydantic-settings-export

Usage

The recommended way to use this package is through its CLI or as a pre-commit hook.

CLI Usage

The CLI provides a powerful interface for generating documentation:

# Basic usage
pydantic-settings-export your_app.settings:Settings

# Multiple generators
pydantic-settings-export --generator markdown --generator dotenv your_app.settings:Settings

# Help with all options and sub-commands
pydantic-settings-export --help

For complete documentation, including:

  • All command options
  • Environment variables
  • Pre-commit integration
  • Troubleshooting guide

See the CLI Documentation

pre-commit hook

The tool can be used as a pre-commit hook to automatically update documentation:

# .pre-commit-config.yaml
repos:
  - repo: https://github.com/jag-k/pydantic-settings-export
    # Use a tag version with the `v` prefix (e.g. v1.0.0)
    rev: v1.0.0
    hooks:
     - id: pydantic-settings-export
       # Optionally, specify the settings file to trigger the hook only on changes to this file
       files: ^app/config/settings\.py$
       # Optionally, add extra dependencies
       additional_dependencies:
         - pydantic-settings-export[email,regions]

NOTE: You can use pre-commit autoupdate to update the hook to the latest version.

CI/CD Integration

# .github/workflows/docs.yml
name: Update Settings Documentation
on:
  push:
    # Optionally, specify the settings file to trigger the hook only on changes to this file
    paths: [ '**/settings.py' ]
jobs:
  docs:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: "3.11"  # Minimum required version
      - run: pip install pydantic-settings-export
      - run: pydantic-settings-export your_app.settings:Settings

Programmatic Usage

While CLI is the recommended way, you can also use the package programmatically:

from pydantic_settings import BaseSettings
from pydantic_settings_export import Exporter


class MySettings(BaseSettings):
    """Application settings."""
    debug: bool = False
    api_key: str

    class Config:
        env_prefix = "APP_"


# Create and run exporter
exporter = Exporter()
exporter.run_all(MySettings)

This will generate documentation using all available generators. For custom configuration, see our Wiki.

Configuration

Basic configuration in pyproject.toml:

[tool.pydantic_settings_export]
project_dir = "."
default_settings = ["my_app.settings:AppSettings"]
env_file = ".env"

# Generate Markdown docs
[[tool.pydantic_settings_export.generators.markdown]]
paths = ["docs/settings.md"]

# Generate .env example
[[tool.pydantic_settings_export.generators.dotenv]]
paths = [".env.example"]

For advanced configuration options, see our Configuration Guide.

Examples

See real-world examples of different output formats:

Environment Files

Documentation

📚 Learn More

Check out our comprehensive documentation:

🎯 Why This Project?

Managing configuration in Python applications can be challenging:

  • Documentation gets outdated
  • Environment variables are poorly documented
  • Configuration options are scattered

This project solves these problems by:

  • Automatically generating documentation from your Pydantic models
  • Keeping documentation in sync with code
  • Providing multiple output formats for different use cases

Development Context

This is a personal pet project maintained in my spare time. The development priorities are:

  1. Bug fixes
  2. Features from Roadmap:
    • Issues with the closest milestone,
    • General milestones' issues.
    • Issues labeled bug or feature request.
    • Features listed in this README.
  3. New feature proposals

Note: While we strive for quality and responsiveness, resolution timelines can't be guaranteed.

Development Tools

This project uses modern Python development tools:

  • 🚀 uv - Fast Python package installer and resolver
  • 🔍 ruff - Fast Python linter and formatter
  • 📦 hatch - Modern Python project management
  • pre-commit - Git hooks management

Contributing

We welcome contributions! Before contributing:

  1. Create a GitHub Issue as the first step — this is required
  2. Fork the repository to your own GitHub account
  3. Create a branch following our naming convention:
    • Format: <domain>/<issue-number>-<short-description>.
    • Domains: fix or feature.
    • Example: feature/6-inject-config-to-markdown.
  4. Make your changes
  5. Submit a PR with changelog in description

For complete guidelines, see our:

Support

Primary Contact

Secondary Contact (after creating an issue)

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

pydantic_settings_export-1.0.2.tar.gz (85.9 kB view details)

Uploaded Source

Built Distribution

pydantic_settings_export-1.0.2-py3-none-any.whl (29.1 kB view details)

Uploaded Python 3

File details

Details for the file pydantic_settings_export-1.0.2.tar.gz.

File metadata

File hashes

Hashes for pydantic_settings_export-1.0.2.tar.gz
Algorithm Hash digest
SHA256 1b26277823e25ba4444fcb1e4fa8b1abd81024ecd49d98a7abd9f9c3e8b60c69
MD5 c980e70e0cc7d47f571f59d49359bab7
BLAKE2b-256 75cdf32f697a506f9e421530d064439944ae54c71c9082a84d629dcc9c27ef5d

See more details on using hashes here.

File details

Details for the file pydantic_settings_export-1.0.2-py3-none-any.whl.

File metadata

File hashes

Hashes for pydantic_settings_export-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 12b809f4f1c2388470e720c522dcbfb808d11aa5fb7efc8f7aae6272fddb9bbe
MD5 fcf0da7f694df0d30545795f072a2715
BLAKE2b-256 a8f49f1450310aa3ea76a9c187a6f57f13d6d57ff574330937dbe3afce43fe6c

See more details on using hashes here.

Supported by

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