Skip to main content

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 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

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)

Uploaded Source

Built Distribution

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.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page