Skip to main content
# yaconf

yet another Python configuration library

## Features

No frills, no fuss:

* Python 3.6+ and no external dependencies.
* Single file implementation: Import the package or just copy `yaconf.py` into your project.
* Use any configuration source: any function that returns a `dict` will do.
* Reads JSON files by default, but `configparser` or any other parser can be dropped in with a keyword argument.
* Hierarchical configuration: Look for configuration keys in one config source after another, e.g.,
- first check `.myappconf` file,
- then `~/.config/myapp/.myappconf`,
- finally fall back on defaults.
* Sane defaults for config file paths:
- `~/.config/myapp/.myappconf` on Linux and MacOS
- `%LOCALAPPDATA%\myapp\.myappconf` on Windows
* Optionally register a modifier function to arbitrarily change values after loading (e.g., change datatypes, check consistency, etc).

## Examples

### Basic setup

```python
import yaconf

conf = yaconf.get_file_reader('myapp')
conf.load()

# reading from .myappconf if available, then ~/.config/myapp/.myappconf
conf['ready to go']
conf.get('ready to go', default='fallback')
```

### Add more configuration sources

```python
def get_default_config():
return {'i': 123, 'b': 'default string'}

# Add this configuration with lowest priority
conf.loaders.append(get_default_config)

def get_top_priority_config():
return {'b': 'other string'}

# And this one with highest priority
conf.loaders.push(get_top_priority_config)

# To include the new configuration source
conf.load()
assert conf['i'] == 123
assert conf['b'] == 'other string'

```

### The ConfigReader is a Mapping

```python
assert dict(conf) == {'i': 123, 'b': 'other string'}
```


### Add a modify function

```python
def modify(d):
d['i'] += 3
del d['b']
d['x'] = 'new'

conf.modify = modify
conf.load()

assert dict(conf) == {'i': 126, 'x': 'new'}
```

## License

Free software: MIT license

## Credits

This package was created with [Cookiecutter][1] and the [`audreyr/cookiecutter-pypackage`][2] project template.

[1]: https://github.com/audreyr/cookiecutter
[2]: https://github.com/audreyr/cookiecutter-pypackage


=======
History
=======


0.2.0 (2019-04-10)
------------------

* Allow for a modify function to be added to ConfigReader.
* Remove the levels property on ConfigReader.
* Make ConfigReader follow the Mapping protocol.
* Rename Decoder -> Parser.

0.1.0 (2019-04-09)
------------------

* First release on PyPI.


Metadata

Release files for yaconf 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for yaconf 0.2.0
File Size Uploaded Provenance Actions
yaconf-0.2.0.tar.gz 9.9 kB Without provenance Details for yaconf-0.2.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for yaconf 0.2.0
File Interpreter ABI Platform Actions
yaconf-0.2.0-py2.py3-none-any.whl Python 3, Python 2 none any Details for yaconf-0.2.0-py2.py3-none-any.whl

Total release size: 14.8 kB

Release files / yaconf-0.2.0.tar.gz

Download URL yaconf-0.2.0.tar.gz
Size 9.9 kB
Tags Source
SHA-256 checksum
How to use checksums
120852eb5f67cee683c059646c52ff21eb769a3183e609b0d1155347f3154369
BLAKE2b-256 checksum
How to use checksums
fb8a6368d1b522bad3190f12141c0702d5145395e1ca72cb561533b2a0e05e62
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.12.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.0.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.7

Release files / yaconf-0.2.0-py2.py3-none-any.whl

Download URL yaconf-0.2.0-py2.py3-none-any.whl
Size 4.9 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
5f15f65d89b0ae19766fa85386f3d3eec304cf0036bc1d8d0edb36a53c637df3
BLAKE2b-256 checksum
How to use checksums
96b2304b97ab527978517aa5ac4bfd63258db264032e8b263dbb56f0218df2a9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.12.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.0.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.7

Security for yaconf 0.2.0

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.

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page