Skip to main content

Runch: refined munch. Attribute-style access for python dicts, with generic typing support. Help handle your configs, data, and more.

Project description

Runch

Refined munch. Provides basic munch functionality (attribute-style access for python dicts) with additional generic typing support and runtime validation.

Also provides a config reader that reads config files into predefined runch models. Say goodbye to config["key"], config.get("key") and runtime errors caused by missing keys!

Installation

pip install runch

If you find any bugs, please submit an issue or a pull request at GitHub.

Usage

# This model definition can be auto-generated by runch, based on existing config files.

from runch import RunchModel, RunchConfigReader

class ExampleConfig(RunchModel):
    db_host: str
    db_port: int
    db_user: str
    db_password: str
    db_name: str

# Read config from file.                 ↓ square brackets
example_config_reader = RunchConfigReader[ExampleConfig](
#                                         ^^^^^^^^^^^^^ Config model class name
    config_name="example_config_file",  # without extension
    config_dir="example_config_dir",    # default is os.environ.get("RUNCH_CONFIG_DIR", "./etc")
    config_ext="yaml"                   # default is "yaml"
    config_encoding="utf-8"             # default is "utf-8"
)
example_config = example_config_reader.read()  # Or .read_lazy() for lazy loading

print(example_config.config.db_host)  # with awesome intellicode support & runtime validation!
$ touch example_config_dir/example_config_file.yaml
db_host: localhost
db_port: 5432
db_user: user
db_password: password
db_name: database

Supported File Formats

  • YAML
  • JSON
  • TOML
  • arbitrary file formats with custom reader, specified via the custom_config_loader param of RunchConfigReader.__init__(). The custom reader should be a callable that takes a str-type file content and returns a dictionary.

Model Definition Generator

$ python -m runch <config_name> [config_ext]

Manual:

Generate a model definition from a config file.

config_name: the name of the config file without the extension.
config_ext: the extension of the config file. Default is `yaml`.

Use RUNCH_CONFIG_DIR environment variable to specify the directory of the config files. Default is `./etc`.

Example:
    python -m runch my_config
    python -m runch my_config yaml

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

runch-1.0.4-py3-none-any.whl (19.1 kB view details)

Uploaded Python 3

File details

Details for the file runch-1.0.4-py3-none-any.whl.

File metadata

  • Download URL: runch-1.0.4-py3-none-any.whl
  • Upload date:
  • Size: 19.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.12.6 Darwin/22.6.0

File hashes

Hashes for runch-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 146a0689384d9e299400fc61c666091f745a415bd4f2e26b6e248f36da8cef67
MD5 c3e314b3f3b478717975c0f4d04c2df9
BLAKE2b-256 c68fb0553acf2368afac2f720817e6af8e6e500010a8c3e203f7581713bbcf0c

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