Type-safe configuration management with support for nested dataclasses
Project description
NestConfig
NestConfig is a flexible configuration management system designed to simplify the handling of configurations in Python applications. It leverages Python's type hints and dataclasses to offer type-safe configuration updates, including support for nested configurations and direct application of command-line options.
This class is similar to fvcore.common.config.CfgNode, but it offers the added benefit of AutoCompletion.
Features
- Type-safe configuration management using dataclasses.
- Support for nested configurations.
- Easy integration of command-line options into the configuration.
- Simple and intuitive usage.
Installation
To install NestConfig, simply use pip:
pip install nestconfig
It can also be built from source with pip install .
from this repository.
Minimal Example
from dataclasses import dataclass
from nestconfig import NestConfig
@dataclass
class ModelConfig:
ENC_NUM_HEADS: int = 8
@dataclass
class Config(NestConfig):
MODEL: ModelConfig = ModelConfig()
SOME_OTHER_CONFIG: int = 10
# Instantiate your configuration
config = Config()
# Update the configuration with new values.
# You can also use a yaml file: updates = yaml.safe_load(yaml_file)
updates = {'MODEL': {'ENC_NUM_HEADS': 12}, 'SOME_OTHER_CONFIG': 15}
config.merge_updates(updates)
print(config.MODEL.ENC_NUM_HEADS) # Outputs: 12
print(config.SOME_OTHER_CONFIG) # Outputs: 15
# Apply command-line options directly.
# You can use argparse here and set opts to args.opts
opts = ['MODEL.ENC_NUM_HEADS', '16', 'SOME_OTHER_CONFIG', '20']
config.merge_opts(opts)
print(config.MODEL.ENC_NUM_HEADS) # Outputs: 16
print(config.SOME_OTHER_CONFIG) # Outputs: 20
If you find this code useful, please consider giving it a star (☆) :).
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
Built Distribution
Hashes for nestconfig-0.1.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1ae4f7984116751d2015dfa78b4922691e1c1dd0ea9ef754aaeb7f8d93d50c83 |
|
MD5 | 0c2ad7f3d7a1b9194e00afcc7f606382 |
|
BLAKE2b-256 | 3ad2e2b2a1cc254a256dc9e1d4fed41eebe9a44ea985839485ebdf8a0acf1918 |