Skip to main content

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 and DatetimeField, 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

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)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bonfig-0.2.2-py3-none-any.whl (10.2 kB view details)

Uploaded Python 3

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

Hashes for bonfig-0.2.2.tar.gz
Algorithm Hash digest
SHA256 79628cfe8257d2507c25886e7a02ac7da4e4be257107a58501311fc5d117cf96
MD5 6c1a23e3cf1907c32b971540cd97c3e4
BLAKE2b-256 c1b430aeda94d61d247f6e40f287e8212f86493742fe1398090c9c3d06a33a5d

See more details on using hashes here.

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

Hashes for bonfig-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 4748805242057a4277c193cded96937d49d2e4704f37bdedb942acc7db537650
MD5 43e132f2d228968d1317bc1cf3116224
BLAKE2b-256 4e6b9fb80debcf78b69200d8206d5d147ca116c0cf7afcfe88f86de446e00a35

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.2.2 This release

2 files

0.2.1

2 files

0.2.0

2 files

0.1

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page