Skip to main content

Confdantic is a Python library that enhances Pydantic's capabilities for working with JSON, YAML, and TOML formats. It preserves field descriptions as comments when serializing to YAML or TOML, making it great for generating user-friendly configuration files.

Project description

Confdantic

Tests PyPI version Supported versions Downloads license

Confdantic is a Python library that enhances Pydantic's capabilities for working with JSON, YAML, and TOML formats. It preserves field descriptions as comments when serializing to YAML or TOML, making it great for generating user-friendly configuration files.

Installation

From PyPi

pip install confdantic

From source

pip install git+https://github.com/zigai/confdantic.git

Example

from typing import Literal
from pydantic import Field
from confdantic import Confdantic

class DatabaseConfig(Confdantic):
    host: str = Field(
        "localhost",
        description="The hostname or IP address of the database server",
    )
    port: int = Field(
        5432,
        description="The port number on which the database server is listening.",
    )
    username: str
    password: str

class ApplicationConfig(Confdantic):
    debug: bool = Field(False, description="Enable debug mode")
    log_level: Literal["DEBUG", "INFO", "WARNING", "ERROR"] = Field(
        "INFO", description="Logging level"
    )
    database: DatabaseConfig
    allowed_hosts: list[str] = Field(
        default_factory=list,
        description="A list of host/domain names that this application can serve.",
    )

config = ApplicationConfig(
    database=DatabaseConfig(username="admin", password="secret"),
    allowed_hosts=["example.com"],
)
config.save("config.yaml", comments=True)
config.save("config.toml", comments=True)

config.yaml

debug: false  # Enable debug mode
log_level: INFO # Logging level | choices: DEBUG, INFO, WARNING, ERROR
database:
  host: localhost  # The hostname or IP address of the database server
  port: 5432 # The port number on which the database server is listening.
  username: admin
  password: secret
allowed_hosts:  # A list of host/domain names that this application can serve.
  - example.com

config.toml

debug = false # Enable debug mode
log_level = "INFO" # Logging level | choices: DEBUG, INFO, WARNING, ERROR
allowed_hosts = ["example.com"] # A list of host/domain names that this application can serve.

[database]
host = "localhost" # The hostname or IP address of the database server
port = 5432 # The port number on which the database server is listening.
username = "admin"
password = "secret"

License

MIT License

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

confdantic-0.0.3.tar.gz (6.5 kB view details)

Uploaded Source

Built Distribution

confdantic-0.0.3-py3-none-any.whl (5.7 kB view details)

Uploaded Python 3

File details

Details for the file confdantic-0.0.3.tar.gz.

File metadata

  • Download URL: confdantic-0.0.3.tar.gz
  • Upload date:
  • Size: 6.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.4

File hashes

Hashes for confdantic-0.0.3.tar.gz
Algorithm Hash digest
SHA256 90a8236a3856f245a0075095e3557803ff0837ed5c5ade0baf3fc2a5e55c53f8
MD5 cfdeaced2faf7892e618adb7ff13d136
BLAKE2b-256 96539179f795637f2cb166bbb7e5c0fd3811ec3ce2343ea1f8bbae6715d23e6d

See more details on using hashes here.

File details

Details for the file confdantic-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: confdantic-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 5.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.4

File hashes

Hashes for confdantic-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 0c26cbbc37ba9db320ee9fa4f3111c0c0e8728fb214cd734a9ba36318ddc476b
MD5 de76cdac515a52981ccb1c7bb847dc61
BLAKE2b-256 c1b1f428950723f1dd83d2bc537c306448f6fd30401407a45f88db9eb0f257c2

See more details on using hashes here.

Supported by

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