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 ofRunchConfigReader.__init__()
. The custom reader should be a callable that takes astr
-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.5-py3-none-any.whl
(19.2 kB
view details)
File details
Details for the file runch-1.0.5-py3-none-any.whl
.
File metadata
- Download URL: runch-1.0.5-py3-none-any.whl
- Upload date:
- Size: 19.2 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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2c6cd8cbd613994c7f8a9f6e427524e63668357ef0b0241772f29166f3f05729 |
|
MD5 | 570811ffc7f3caa7011084a5c40aab06 |
|
BLAKE2b-256 | 76362c8b2d38bb3b0f706171e43f56c41c027708247ec80349ab1235d84bcd96 |