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.
How to use
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
More examples
More examples can be found in test folder.
Blog post
A blog post can be found here.
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.2.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fef9dacee65c612fc3647728608803c61eada96e16e436d4e34f03949fb8776d |
|
MD5 | 8279c61bd7c377143252ec69d91b409d |
|
BLAKE2b-256 | da6e2649b266e2189c4e357aee3efe200381db70d197e4eddd479a01754ca407 |