Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nestconfig-0.1.0.tar.gz (2.9 kB view hashes)

Uploaded Source

Built Distribution

nestconfig-0.1.0-py3-none-any.whl (2.8 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page