Generate user-friendly configuration files from Pydantic models
Project description
confdantic
Confdantic is a Python library that enhances Pydantic's capabilities for working with JSON, YAML, and TOML formats by preserving field descriptions as comments when serializing to YAML or TOML.
Installation
Using pip
pip install confdantic
Using uv
uv add confdantic
From source
pip install git+https://github.com/zigai/confdantic.git
# or
uv add 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
Project details
Release history Release notifications | RSS feed
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.1.1.tar.gz
(50.8 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file confdantic-0.1.1.tar.gz.
File metadata
- Download URL: confdantic-0.1.1.tar.gz
- Upload date:
- Size: 50.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3252c0dea755a84a7575f25a394ec9cc045a742e5978f63075069dab82c0e577
|
|
| MD5 |
df4ecb447be558b1f10d445941768e06
|
|
| BLAKE2b-256 |
361e21084db0fced1ecbe3350b4304bfe499462896745c5a0ad552e3839ff84f
|
File details
Details for the file confdantic-0.1.1-py3-none-any.whl.
File metadata
- Download URL: confdantic-0.1.1-py3-none-any.whl
- Upload date:
- Size: 6.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fdc9323f03ff54205f0249bb51ccd83bda37c3bc8ac2cdace02e681d14b91cd8
|
|
| MD5 |
b5da5b0f5c6a7107233e6de42fdd0f0c
|
|
| BLAKE2b-256 |
486039006e5040c4f36d2c2e654cd5bb3dbbfd7044860c9fb68c8dc33d0fe2aa
|