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_path> [config_ext]

Manual:

Usage: python -m runch <config_path> [config_ext]
    Generate a model definition from a config file.

    config_path: path to your config file.
    config_ext: content type of your config file. Default is `yaml`.

    Example:
        python -m runch path/to/my_config.foo
        python -m runch path/to/my_config.foo 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 Distribution

runch-1.2.0.tar.gz (17.7 kB view details)

Uploaded Source

Built Distribution

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

runch-1.2.0-py3-none-any.whl (19.7 kB view details)

Uploaded Python 3

File details

Details for the file runch-1.2.0.tar.gz.

File metadata

  • Download URL: runch-1.2.0.tar.gz
  • Upload date:
  • Size: 17.7 kB
  • Tags: Source
  • 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.2.0.tar.gz
Algorithm Hash digest
SHA256 90bd2056512d522be9f61e6866d7f2dc3adb9b58c652603c1a92546a262c2d2d
MD5 e98af88e12d62fe6b943477c0746d18f
BLAKE2b-256 35b89bf84fcf4beb9b20189c580aa440ee1aaea8f71373ac1ccd74a2dac18731

See more details on using hashes here.

File details

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

File metadata

  • Download URL: runch-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 19.7 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.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f35e10ba8132f916a80220d900239460694978e9866ec20d7c1f780f0e7d6db1
MD5 e1f152133db6d2b3551c7e78cd1152e7
BLAKE2b-256 02c7fdd5ecb7fd5f6acd1c5dbc3d76c362ad9d058974c4b7da6b95e7aa8aabc9

See more details on using hashes here.

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