Pydantic-ish YAML configuration management.
Project description
DriConfig
A Pydantic-ish way to manage your project's YAML configurations.
Documentation: https://dribia.github.io/driconfig
Source Code: https://github.com/dribia/driconfig
The usage of YAML files to store configurations and parameters is widely accepted in the Python community, especially in Data Science environments.
DriConfig provides a clean interface between your Python code and these YAML configuration files.
It is heavily based on Pydantic's Settings Management, preserving its core functionalities and advantages.
Key features
- Subclassing the
DriConfig
class we create an interface to any YAML configuration file. - Our project's configurations are then attributes of this class.
- They are automatically filled with the values in the YAML configuration file.
- We can define complex configuration structures using Pydantic models.
- We preserve Pydantic's type casting and validation!
Example
Let's say we have a YAML configuration file config.yaml
with the following data:
# config.yaml
model_parameters:
eta: 0.2
gamma: 2
lambda: 1
date_interval:
start: 2021-01-01
end: 2021-12-31
Then we can configparse with driconfig
as follows:
from datetime import date
from typing import Dict
from driconfig import DriConfig, DriConfigConfigDict
from pydantic import BaseModel
class DateInterval(BaseModel):
"""Model for the `date_interval` configuration."""
start: date
end: date
class AppConfig(DriConfig):
"""Interface for the config/config.yaml file."""
"""Configure the YAML file location."""
model_config = DriConfigConfigDict(
config_folder=".",
config_file_name="config.yaml",
)
model_parameters: Dict[str, float]
date_interval: DateInterval
config = AppConfig()
print(config.model_dump_json(indent=4))
"""
{
"model_parameters": {
"eta": 0.2,
"gamma": 2.0,
"lambda": 1.0
},
"date_interval": {
"start": "2021-01-01",
"end": "2021-12-31"
}
}
"""
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
Built Distribution
Hashes for driconfig-1.0.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 143bae1480f9bf175cb93f6843bcc5bc02f1122508263878307f84accf3ca89f |
|
MD5 | 7a41c7439b75f56d73dab7486707be8c |
|
BLAKE2b-256 | ba35add3b37039ca5d7fb5d1b944377cd45d3cb44c292697fb01d2fc9062774c |