Skip to main content

Configuration file provider that uses pydantic and type hints.

Project description

Pydaconf

Modern python configuration file manager using Pydantic and python type hints.

GitHub Workflow Status GitHub last commit GitHub GitHub Docs downloads PyPI - Version PyPI - Python Version

What is PydaConf

Pydaconf is a simple yet powerful open-source Python library for loading application configurations. It leverages modern Python features, including type hints and the awesome data validation Pydantic models for clarity and maintainability. Pydaconf provides seamless configuration loading from YAML, TOML, and JSON files while supporting dynamic secret injection via a pluggable architecture.

Installation

Install using pip install pydaconf[all]
For more installation options see the Install section in the documentation.

A Simple Example

  • Create config file in toml, yaml or json
domain: pydaconf.com
openai_token: ENV:///OPENAI_TOKEN
database:
  host: eu-central-db01.{{ domain }}
  username: svc_db01
  password: SEALED:///gAAAAABnpRqHdho_dFB7iMs_Ufv5nu59LwqQfE3YCjaDTyg-YrYsEpK8bfvdKsdrj6kCxrAjezCGAdVM0FhzwyfYFIgqnquw8w==
  • Create Pydantic Model and load the configuration
from pydaconf import PydaConf
from pydantic import BaseModel

class DbConfig(BaseModel):
    host: str
    username: str
    password: str

class Config(BaseModel):
    domain: str
    openai_token: str
    database: DbConfig

provider = PydaConf[Config]()
provider.from_file("config.yaml")
print(provider.config.database.password)

Help

See documentation for more details.

Interpolation

Templates Example
contact_email: user@{{ domain }}
db_server: {{ backend.server }}
first_username: {{ users[0].username }}

Builtin plugins

Plugin Description
ENV Inject secret from environment variable
SEALED Inject a sealed secret. Secrets can be encrypted with a symmetric key and stored in a file. The provider expects the key in the PYDACONF_SEALED_KEY environment variable.
FILE_CONTENT Inject content from a file. This is useful in scenarios where the secret is mounted on the file system, such as in k8s containers.

Official plugins

Plugin Description Install Info
K8S_SECRET Pydaconf plugin for Kubernetes Secrets pip install pydaconf-plugins-k8s Docs

Tests coverage

Coverage Report

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

pydaconf-0.3.0.tar.gz (88.7 kB view details)

Uploaded Source

Built Distribution

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

pydaconf-0.3.0-py3-none-any.whl (12.8 kB view details)

Uploaded Python 3

File details

Details for the file pydaconf-0.3.0.tar.gz.

File metadata

  • Download URL: pydaconf-0.3.0.tar.gz
  • Upload date:
  • Size: 88.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.32.3

File hashes

Hashes for pydaconf-0.3.0.tar.gz
Algorithm Hash digest
SHA256 08725db568704dd34f0c1b617a892402f12c1a11e7f29da7e755307f513e2945
MD5 1af9a80a3573fa2851b142ee31f2de2e
BLAKE2b-256 d187f7f89851056dcbda74ef0e85dbf2161d0dedc5197585ed0c3ed30d42a289

See more details on using hashes here.

File details

Details for the file pydaconf-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: pydaconf-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 12.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.32.3

File hashes

Hashes for pydaconf-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 abc7bacf60ca29c764d3ee8d0ff42b4685d391e60df2d277fb90158a97a2b5c9
MD5 3ebccc0f8ee74a769f87bb70499b1c4a
BLAKE2b-256 0f9b959e12f648368dcf5a1c1bb660fa997b3c8ab06c3ae0c70cd2b03abd89e8

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