Biconfigs
📄⇄🛠 Two way configurations mapping helper for Python.
Get Started
from biconfigs import Biconfigs
configs = Biconfigs('configs.json')
# Simply change the dict, and it will automatically save the changes to file.
configs['options'] = {'debug': True,
'username': 'Anthony',
'list': [] }
# Access with simple 'x.y.z' style
configs.options.list.append('example')
Content of file configs.json after execution:
{
"options": {
"debug": true,
"list": [
"example"
],
"username": "Anthony"
}
}
* Biconfigs also supports `CSON <#cson>`__ and `YAML <#yaml>`__ file formats.
Install
pip install biconfigs
Dependencies
No dependencies required 🎉
Tested on Python 2.6, 2.7, 3.3, 3.4, 3.5, pypy, pypy3
Documentation
When to save
Saving when: Item create, item delete, list reorder, value change, ``setdefault``, etc.
# All the following single statement will cause saving configs['item'] = 'value' configs['options'] = {} configs.options['list'] = [] configs.options.list.append('example') configs.options['list'] = [] configs.options.clear() value2 = configs.setdefault('item2', 45)Not saving when: Item access, assignment but not changed, etc.
# All the following single statement will NOT cause saving value = configs.item configs['item'] = 'value' # The value of 'item' is not changed value3 = configs.get('item_not_exists', 'default_value')
Non-blocking saving
By default, Biconfigs use asynchronous saving. You can disable the feature by setting async_write to False
# set "async_write=False" if your want to use synchronous saving
# to ensure your data saved to file in time,
# WARNING: In sync mode, your changes will block the incoming statement
# until the file correctly saved.
configs = Biconfigs('configs.json', async_write=False)
configs['item'] = 'value' # Blocking
# Configure file saved already
# Your code...
High frequency update
Normally, Biconfigs will write the changes to file immediately. But sometime you may want to update values frequently, which will result in a IO bottleneck. So you can use ``with`` statement to prevent auto saving for a while.
with configs:
for i in range(1000):
configs['some_key'] = i
# This statement will execute saving process only one time when exiting "with" scope
Reload from file
Simply use reload function to reload from file. Note: reload will discard all present data in Biconfigs-object and loads new ones from file)
configs.reload()
Parsers
Biconfigs use Prettified Json as default parser. You may want to set parser='json' to save as compacted json file.
configs = Biconfigs('configs.json', parser='json')
configs['item'] = 'value'
configs['debug'] = False
configs.json:
{"debug": false, "item": "value"}
Available Parsers
CSON
Biconfigs supports CSON by avakar/pycson
from biconfigs import Biconfigs
from biconfigs import parser_cson
configs = Biconfigs('configs.cson', parser='cson')
# Then use biconfigs as you normally would...
Extra requirements
To use CSON, you need to install extra requirement
pip install biconfigs[cson]
Or install cson manually:
pip install cson
CSON problems
Please check avakar/pycson: The Language
YAML
Biconfigs supports YAML by PyYAML
from biconfigs import Biconfigs
from biconfigs import parser_yaml
configs = Biconfigs('configs.yml', parser='yaml')
# Then use biconfigs as you normally would...
Extra requirements
To use YAML, you need to install extra requirement
pip install biconfigs[yaml]
Or install PyYAML manually:
pip install PyYAML
License
MIT
Metadata
Release files for biconfigs 0.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| biconfigs-0.1.3.zip | 15.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| biconfigs-0.1.3-py2.py3-none-any.whl | Python 2, Python 3 | none | any | Details |
Total release size: 22.8 kB
Release files / biconfigs-0.1.3.zip
| Download URL | biconfigs-0.1.3.zip |
|---|---|
| Size | 15.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
01877437a890deb974dbd4e91f8d7bb640f0445cc5553e065ce0197585778761
|
|
BLAKE2b-256 checksum How to use checksums |
52ea40d2443eea412eda236a9c15f52c7952acd9f4a60335672429d755244396
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Release files / biconfigs-0.1.3-py2.py3-none-any.whl
| Download URL | biconfigs-0.1.3-py2.py3-none-any.whl |
|---|---|
| Size | 7.4 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
269e3cccce5ae00827ba5be4bc470f3cedb0102be804bf456254c9fb61eda961
|
|
BLAKE2b-256 checksum How to use checksums |
949c338a94cb0dc899692139e790ad9e3847ad8f1ca63059717b463043d71861
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |