Metadata-Version: 2.3
Name: pydantic-settings-doppler
Version: 0.1.0
Summary: Settings management for Pydantic models using Doppler
License: MIT
Keywords: pydantic,settings,doppler,configuration,environment variables
Author: Algirdas Jauniskis
Author-email: jauniskis.a@gmail.com
Requires-Python: >=3.9
Classifier: Development Status :: 3 - Alpha
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Information Technology
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: Unix
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: MacOS
Classifier: Operating System :: Microsoft
Classifier: Environment :: Console
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Internet
Requires-Dist: doppler-sdk (>=1.3.0,<2.0.0)
Requires-Dist: pydantic-settings (>=2.0,<3.0)
Project-URL: Bug Tracker, https://github.com/ajauniskis/pydantic-settings-doppler/issues
Project-URL: Changelog, https://github.com/ajauniskis/pydantic-settings-doppler/blob/main/CHANGELOG.md
Project-URL: Homepage, https://github.com/ajauniskis/pydantic-settings-doppler
Project-URL: Repository, https://github.com/ajauniskis/pydantic-settings-doppler
Description-Content-Type: text/markdown

# Pydantic Settings Doppler
[![codecov](https://codecov.io/gh/ajauniskis/pydantic-settings-doppler/graph/badge.svg?token=XB1M3ET2H7)](https://codecov.io/gh/ajauniskis/pydantic-settings-doppler)
[![Pydantic v2 only](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/pydantic/pydantic/main/docs/badge/v2.json)](https://docs.pydantic.dev/latest/contributing/#badges)

Pydantic Settings for Doppler integration! This package provides a seamless way to load configuration values from [Doppler](https://www.doppler.com/) into your Pydantic models. It leverages the power of Doppler's secrets management and Pydantic's settings management to make your application configuration secure and easy to use.

## 🚀 Features

- **Secure**: Fetch secrets directly from Doppler.
- **Simple**: Integrates seamlessly with Pydantic's `BaseSettings`.
- **Flexible**: Supports environment variable fallbacks and default values.

## 📦 Installation

Install the package using `pip`:

```bash
pip install pydantic-settings-doppler
```

## 🛠️ Usage

Here's a quick example to get you started:

```python
from pydantic_settings import BaseSettings
from pydantic_settings.sources import PydanticBaseSettingsSource

from pydantic_settings_doppler import DopplerSettingsSource


class Settings(BaseSettings):
    database_url: str
    api_key: str

    @classmethod
    def settings_customise_sources(
        cls,
        settings_cls: type[BaseSettings],
        init_settings: PydanticBaseSettingsSource,
        env_settings: PydanticBaseSettingsSource,
        dotenv_settings: PydanticBaseSettingsSource,
        file_secret_settings: PydanticBaseSettingsSource,
    ) -> tuple[PydanticBaseSettingsSource, ...]:
        return (
            init_settings,
            DopplerSettingsSource(
                settings_cls,
                token="your-doppler-token",
                project_id="your-project-id",
                config_id="your-config-id",
            ),
            env_settings,
            dotenv_settings,
            file_secret_settings,
        )


# Load settings
settings = Settings()
print(settings.database_url)
print(settings.api_key)

```

## 📖 Documentation

For more details, check out the [Doppler documentation](https://www.doppler.com/docs) and [Pydantic documentation](https://docs.pydantic.dev/).

## 🧑‍💻 Contributing

Contributions are welcome! Feel free to open issues or submit pull requests.

## ⚖️ License

This project is licensed under the [MIT License](./LICENSE).

