Don't write configurations, write class declarations.
Project description
Bonfig
>>> import os, json, configparser
>>> from bonfig import Bonfig, Store
>>>
>>> class Config(Bonfig):
... with Store() as basic:
... VERSION = basic.Field('0.2')
...
... with Store() as secrets:
... CREDENTIALS = secrets.Field(default="XXXXXX-XX")
... PIN = secrets.IntField(default=1234)
...
... with Store() as data:
... SAMPLE = data.Field()
... AVERAGE = data.FloatField()
...
... with Store() as prefs:
... with prefs.Section('LINES') as lines:
... X_MARKER = lines.Field()
... SHOW = lines.BoolField()
...
... with prefs.Section('META') as meta:
... DATE = meta.DatetimeField(name='start', fmt='%d/%m/%y')
...
... def load(self, fn):
... self.basic = {}
... self.secrets = dict(os.environ)
...
... with open(f"examples/{fn}.json") as f:
... self.data = json.load(f)
...
... with open(f"examples/{fn}.ini") as f:
... self.prefs = configparser.ConfigParser()
... self.prefs.read_file(f)
...
>>> c = Config("bonfig")
>>> c.VERSION
'0.2'
>>> c.CREDENTIALS
"XXXXXX-XX"
>>> c.AVERAGE
3.14159
>>> c.SHOW
True
>>> c.DATE
datetime.datetime(1982, 11, 18, 0, 0)
>>> c = Config(frozen=False) # create a mutable version
>>> c.AVERAGE = 365.2
>>> c.AVERAGE
365.2
Stop writing your configurations as dictionaries and strange floating dataclasses, make them Bonfigs
and make use of
a whole bunch of great features:
- Declare your configurations as easy to read classes.
- Pull in values from various sources into one neatly packaged class.
- Get all the power that comes with classes built into your configurations - polymorphism, custom methods and custom initialisation.
- Sleep safe in the knowledge your config won't change unexpectedly with configuration with
Bonfig.freeze
. - Ready made serialisation and deserialisation with custom
Fields
-IntField
,FloatField
,BoolField
andDatetimeField
, with tools to help you easily define your own.
Installation
pip install bonfig
Please checkout the project docs for more information: https://0hughman0.github.io/bonfig/index.html
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
bonfig-0.2.2.tar.gz
(9.8 kB
view details)
Built Distribution
bonfig-0.2.2-py3-none-any.whl
(10.2 kB
view details)
File details
Details for the file bonfig-0.2.2.tar.gz
.
File metadata
- Download URL: bonfig-0.2.2.tar.gz
- Upload date:
- Size: 9.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/0.12.17 CPython/3.7.3 Windows/10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 79628cfe8257d2507c25886e7a02ac7da4e4be257107a58501311fc5d117cf96 |
|
MD5 | 6c1a23e3cf1907c32b971540cd97c3e4 |
|
BLAKE2b-256 | c1b430aeda94d61d247f6e40f287e8212f86493742fe1398090c9c3d06a33a5d |
File details
Details for the file bonfig-0.2.2-py3-none-any.whl
.
File metadata
- Download URL: bonfig-0.2.2-py3-none-any.whl
- Upload date:
- Size: 10.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/0.12.17 CPython/3.7.3 Windows/10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4748805242057a4277c193cded96937d49d2e4704f37bdedb942acc7db537650 |
|
MD5 | 43e132f2d228968d1317bc1cf3116224 |
|
BLAKE2b-256 | 4e6b9fb80debcf78b69200d8206d5d147ca116c0cf7afcfe88f86de446e00a35 |