betterconfig provides a more convenient and extensible configuration language, and a simpler interface built on python’s builtin ConfigParser format, along with a drastically simplified interface for loading configs.
Type Coercion Boilerplate Sucks
ConfigParser, like many config languages, treats all values as strings, meaning that when you have configs like this:
[config] foo = 1 bar = a,list,of,strings baz = just a plain old string
you end up with boilerplate that looks like this:
from ConfigParser import ConfigParser
MAP = {
'foo': int,
'bar': lambda x: x.split(','),
'baz': str,
}
c = ConfigParser()
c.read('./foo.cfg')
config = {k:MAP[k](v) for k,v in c.items('config')}
Don’t you really wish you could just do this:
[config] foo = 1 bar = ['a', 'list', 'of', 'strings'] baz = "just a plain old string"
and drop the map?
import betterconfig
config = betterconfig.load('./foo.cfg')['config']
betterconfig supports all literal types supported by ast.literal_eval: strings, numbers, tuples, lists, dicts, booleans, and None.
More Flexibility in Config, Less Config by Module
We wanted a config language that was as easy to use as a settings module in django or flask (and nearly as extensible), but less magical to initialize, and slightly safer than something like this:
import importlib
settings = importlib.import_module('settings')
So we want a config that can do stuff like this:
top_level = 'variables defined outside of sections' include = ['./include.cfg', 'include.d/*.cfg'] [section] namespaced = True
And we don’t want to have to iterate sections or items, we really just want to load it into a dict:
import betterconfig
settings = betterconfig.load('./fancy.cfg')
And if you’re really in love with . notation, you can always do something silly like make a module settings.py that does something magical like:
import betterconfig
globals().update(betterconfig.load('./fancy.cfg'))
Installing
The betterconfig project lives on github, and is available via pip.
Installing v0.3 From Pip
sudo pip install betterconfig==0.3
Installing v0.3 From Source
curl https://github.com/axialmarket/betterconfig/archive/version_0.3.tar.gz | tar vzxf - cd betterconfig sudo python setup.py install
Running Tests
The betterconfig tests require py.test, which can be installed via pip.
sudo pip install pytest==2.5.2 py.test test_betterconfig.py
Metadata
Release files for betterconfig 0.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 | |
|---|---|---|---|
| betterconfig-0.3.tar.gz | 5.9 kB | Details |
Release files / betterconfig-0.3.tar.gz
| Download URL | betterconfig-0.3.tar.gz |
|---|---|
| Size | 5.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c48abd88b154aeb9f4344693a2dee81d307df2b00a526c164b15801c20e27f75
|
|
BLAKE2b-256 checksum How to use checksums |
e256cc1425e7b7b2fd9a4a01bcd0b76f0fd9cdafdb9c4a9369d40f2f91e2156f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |