Skip to main content

Pydantic-ish YAML configuration management.

Project description

DriConfig

driconfig

A Pydantic-ish way to manage your project's YAML configurations.

CI/CD Lint Tests Coverage Status Ruff ty
Package PyPI PyPI - Downloads PyPI - Python Version GitHub

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!

Installation

This project resides in the Python Package Index (PyPI), so it can easily be installed with uv or pip.

Using uv (recommended)

uv is a fast Python package installer and resolver.

uv pip install driconfig

Or add it to your project:

uv add driconfig

Using pip

pip install driconfig

Usage

You can import the DriConfig class from the driconfig package and create your own configuration classes.

from driconfig import DriConfig

Examples

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"
    }
}
"""

Contributing

Check the CONTRIBUTING site for guidelines on how to contribute to this project.

License

DriConfig is distributed under the terms of the MIT license. Check the LICENSE file for further details.

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

driconfig-1.2.0.tar.gz (127.2 kB view details)

Uploaded Source

Built Distribution

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

driconfig-1.2.0-py3-none-any.whl (6.6 kB view details)

Uploaded Python 3

File details

Details for the file driconfig-1.2.0.tar.gz.

File metadata

  • Download URL: driconfig-1.2.0.tar.gz
  • Upload date:
  • Size: 127.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for driconfig-1.2.0.tar.gz
Algorithm Hash digest
SHA256 78391b46ce5ea1cebfb452a58cf1d0b92182311b0bc18566e6ac50b5c191d757
MD5 0f8b38984ff1dfdf6eb24caafd1f06cf
BLAKE2b-256 7a4f1740c9f715ff3ce1bd94b46f9b5fa7f6b4ba1745672a88104bbadc4aeec8

See more details on using hashes here.

File details

Details for the file driconfig-1.2.0-py3-none-any.whl.

File metadata

  • Download URL: driconfig-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 6.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for driconfig-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 57f92af9bf5695d7733827a7f79b2f624a5dfa00c33a9ad94e30add28f0848f6
MD5 e06c3aaaa22a8192c0ace8114b2e6b6d
BLAKE2b-256 dabbd3a28d8eaabd65a33e3f00c2e9c280585a5d03b67c591590a884209bf1ef

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