========
yet another config management library, or a yak on a fig
Yakonfig parses a YAML configuration file at application startup, and makes parts of that configuration available to modules within the application. It is intended for multi-module applications where each module needs a separate configuration. The Yakonfig library merges application-provided default configuration, a user-provided configuration file, and command-line options to produce a unified global configuration.
yakonfig API
------------
Applications using Yakonfig generally create an ``argparse.ArgumentParser`` object and call ``yakonfig.parse_args()``, giving it a list of configurable modules or other items. A typical application setup looks like:
```python
import argparse
import dblogger
import kvlayer
import yakonfig
def main():
parser = argparse.ArgumentParser()
yakonfig.parse_args(parser, [yakonfig, dblogger, kvlayer])
...
if __name__ == '__main__':
main()
```
The application will include ``--help``, ``--config FILE``, and ``--dump-config MODE`` flags by default; modules can provide additional command-line arguments.
The module list passed to ``parse_args()`` is a list of objects that look similar to ``yakonfig.Configurable`` objects. They can be actual objects, typically factories, or they can be classes or even Python modules that happen to include the same names. A top-level Python module might look like:
```python
import a_package.submodule
#: Name of this module in the config file
config_name = 'a_package'
#: Inner blocks within this configuration
sub_modules = [a_package.submodule]
#: Default configuration
default_config = {'random_number': 17}
```
The objects contained in the ``sub_modules`` list have the same format. Running ``./my_program.py --dump-config=default`` would print out a YAML file:
```yaml
a_package:
random_number: 17
submodule: ...
```
A typical pattern is to create a factory object that has many configurable objects within it, such as stages in a data-processing pipeline. The ``yakonfig.factory.AutoFactory`` class supports this pattern. Objects built by the factory do not declare any of the configuration metadata; instead, Yakonfig determines the configuration name and default configuration by inspecting the object's constructor, or the function's argument list. The factory class itself needs to include the standard configuration metadata.
```python
class a_stage(object):
def __init__(self, random_number=17):
self.random_number = random_number
def __call__(self):
print self.random_number
class StageFactory(yakonfig.factory.AutoFactory):
config_name='stage_factory'
auto_config=[a_stage]
def __call__(self):
stage = self.create(a_stage)
stage()
```
The corresponding default YAML configuration:
```yaml
stage_factory:
a_stage:
random_number: 17
```
See [tests](src/tests/yakonfig/test_yakonfig.py) for further illustrations.
Metadata
Release files for yakonfig 0.7.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| yakonfig-0.7.7.tar.gz | 28.0 kB | Without provenance | Details for yakonfig-0.7.7.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| yakonfig-0.7.7-py2.7.egg | Legacy Egg format | - | - | Details for yakonfig-0.7.7-py2.7.egg |
Total release size: 101.4 kB
Release files / yakonfig-0.7.7.tar.gz
| Download URL | yakonfig-0.7.7.tar.gz |
|---|---|
| Size | 28.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
62d3b730e90c8a388de77b5b71961c519f5d70ee18c7a49b07571b9af85d72ae
|
|
BLAKE2b-256 checksum How to use checksums |
fd523ed7f9ac9c596abb8589eb30e908afc27f2c4f3548dc4f930b29278f1d2f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Release files / yakonfig-0.7.7-py2.7.egg
| Download URL | yakonfig-0.7.7-py2.7.egg |
|---|---|
| Size | 73.4 kB |
| Tags | Egg |
|
SHA-256 checksum How to use checksums |
c0ffeebe8e707484ec7eefa8a1259517d73ef3dd4724957bb7e04eb653decf36
|
|
BLAKE2b-256 checksum How to use checksums |
493b816183e19f3ff08039a1c6ddbf30077d702ad1d71438a4ce447f0789fea3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Security for yakonfig 0.7.7
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.