Python config management, but cute.
Project description
konfi
konfi lets you create config templates similar to dataclasses. These templates are then used to load the config from different sources. konfi guarantees that the loaded config corresponds to the template even going as far as making sure items of a list are of the right type.
This means you no longer have to worry about the validity of the config, if the config is correct it will load and if it isn't it will raise an error telling you why not.
Installation
You can install konfi from PyPI:
pip install konfi
Example
from typing import Optional
import konfi
@konfi.template()
class UserInfo:
name: str
country: Optional[str]
@konfi.template()
class AppConfig:
name: str = "konfi"
user: UserInfo
konfi.set_sources(
konfi.YAML("config.yml", ignore_not_found=True),
konfi.Env(prefix="app_"),
)
config = konfi.load(AppConfig)
greeting = f"Hello {config.user.name}"
if config.user.country:
greeting += f" from {config.user.country}"
print(greeting)
print(f"Welcome to {config.name}!")
For more examples see the examples/ directory.
Documentation
If you're ready to jump in, you can find the documentation on Read the Docs.
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
Built Distribution
File details
Details for the file konfi-0.2.1.tar.gz
.
File metadata
- Download URL: konfi-0.2.1.tar.gz
- Upload date:
- Size: 17.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1cf67f153bbc8e9fd4112b573f43bec9410438a61e67dbce9bbe9bde7892137e |
|
MD5 | e5b061657216e6c1967eb9873f95bb06 |
|
BLAKE2b-256 | a3a7bcce30842ee817e0682472583dab77d0824ed6926e169fc1443a1385d6d4 |
File details
Details for the file konfi-0.2.1-py3-none-any.whl
.
File metadata
- Download URL: konfi-0.2.1-py3-none-any.whl
- Upload date:
- Size: 23.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e65f1a4b759cffc4fee219a1027ea61067c1c2bb62fac40fe420e6303610478f |
|
MD5 | 50efb31a6d7ad46ddd8b679a9cfc63e1 |
|
BLAKE2b-256 | a80aa9cc5db11002c4b6144bfeadd6cc5355cee5c255af36ce5ada827a8aa7eb |