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 details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

Details for the file nestconfig-0.1.0.tar.gz.

File metadata

  • Download URL: nestconfig-0.1.0.tar.gz
  • Upload date:
  • Size: 2.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.9.0

File hashes

Hashes for nestconfig-0.1.0.tar.gz
Algorithm Hash digest
SHA256 4730e293fc4e51e54924c924d026e617db75631ad74478d784c6e7ea5e755163
MD5 43b5c21a7dc08110e55f46d6460ad45b
BLAKE2b-256 6410862f4cafea5ffaed2b6e2d85d85d2dcd815bd039708ca677136fbaf576c9

See more details on using hashes here.

File details

Details for the file nestconfig-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: nestconfig-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 2.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.9.0

File hashes

Hashes for nestconfig-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1f532c33d2860aa9fc5eb0549226e63df87bc15b77a427f9c7fdf0df5b49a637
MD5 8443bf53b9115f775cc8ced677ae0bcd
BLAKE2b-256 869dcb0be7392e409aaee2de89cf5a6fdf59c4881cabd16f30491c75beb35179

See more details on using hashes here.

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