Skip to main content

A simple wrapper around dataclasses, for general configuration

Project description

Confclasses

Create dataclass-style classes that can be used for configuring a Python tool. The idea is to handle loading and saving the config from files while allowing simpler IDE usage with the config. We don't need 90% of the features in dataclasses, so we make the API easier.

The module is designed to have a global config object that is instantiated at the start and then loaded dynamically later. Please see the common usage section for an example.

confclasses_comments is also shipped with this tool. It uses ruamel.yaml to add comments and ast to get the "docstring" of the annotations (fields) in the config classes.

Common usage

Create a config.py to store the config.

# config.py
@confclass
class RepeatingConfig:
    test: str
    default1: int = 123
    
@confclass
class NestedConfig:
    field1: str = "foo"
    field2: str = "bar"
    """ test document for field 2 """
    hashed_field3: RepeatingConfig = RepeatingConfig(test="nested")

@confclass
class ExampleConfig:
    nested: NestedConfig
    field3: int = 42
    """ test document for field 3 """
    hashed_field1: list = ["test", "items"]
    hashed_field2: dict = {"key1": "value1"}
    hashed_field4: RepeatingConfig = RepeatingConfig(test="base")

config = ExampleConfig()

Loading it at the start

# main.py
from confclasses import load_config
from config import config
from .example_module import example_function

def main():
    with open('conf.yaml', 'r') as f:
        load_config(config, f.read())
    
    example_function()

In the example_module

# example_module.py
from config import config

def example_function():
    print(config.field3)

Planned changes

  • XDG support
  • Move comments code into base file
  • Type checking
  • Tests in pipelines
  • Contribution guide
  • Scalars mapped to confclass
  • remove PyYAML

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

confclasses-1.0.0.tar.gz (8.8 kB view details)

Uploaded Source

Built Distribution

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

confclasses-1.0.0-py3-none-any.whl (7.7 kB view details)

Uploaded Python 3

File details

Details for the file confclasses-1.0.0.tar.gz.

File metadata

  • Download URL: confclasses-1.0.0.tar.gz
  • Upload date:
  • Size: 8.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for confclasses-1.0.0.tar.gz
Algorithm Hash digest
SHA256 b88c02e1be301e2e5140193d91a4cdb985d48c391e4bdbdd548f4eed25e32de6
MD5 8d3e61ea4ce451ef4cde4d2c795e5363
BLAKE2b-256 16390c894ffe9289586371e437cebeec7a0388b165e253f48066d0ec1bcabc5f

See more details on using hashes here.

Provenance

The following attestation bundles were made for confclasses-1.0.0.tar.gz:

Publisher: pypi.yaml on LexisNexis-RBA/ins-datahub-module-py-confclasses

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file confclasses-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: confclasses-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 7.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for confclasses-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 43a75f87ec3e42525eb141facf077bb7e1b916283b4ddd3073fee84e0fcdd91c
MD5 94535814b1d0322a400e307126b2b059
BLAKE2b-256 2977f6f2bde6b45bd7da5f9ebb0fdf02452c63df35c35d99432fff42bd807f74

See more details on using hashes here.

Provenance

The following attestation bundles were made for confclasses-1.0.0-py3-none-any.whl:

Publisher: pypi.yaml on LexisNexis-RBA/ins-datahub-module-py-confclasses

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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