read configuration files, conf.d style
- Python 2.6+ or Python 3.4+
Using PIP:
From Github:
pip install git+git://github.com/josegonzalez/conf_d.git#egg=conf_d
From PyPI:
pip install conf_d==0.1.0
usage:
# in your /etc/derp/conf file
[derp]
no: sleep
til: brooklyn
[herp]
sleep: 1
wait: 5.0
timeout: seventy
# From your fictional derp module
from conf_d import Configuration
def digitize(config):
for key in config:
if not config[key].isdigit():
try:
config[key] = float(config[key])
except ValueError:
pass
else:
try:
config[key] = int(config[key])
except ValueError:
pass
return config
# All defaults must be strings
conf = Configuration(
name="derp",
path="/etc/derp/conf",
main_defaults={
"no": "one",
"expected": "the spanish inquisition",
"cats": "1",
},
section_parser=digitize
)
what_not_to_do = conf.get(section='derp', key='no', default="jumping")
# "sleep"
until_when = conf.get(section='derp', key='til')
# "brooklyn"
cats = conf.get(section='derp', key='cats')
# "1"
dogs = conf.get(section='derp', key='dogs')
# None
sleep = conf.get(section='herp', key='sleep')
# 1
wait = conf.get(section='herp', key='wait')
# 5.0
timeout = conf.get(section='herp', key='timeout')
# "seventy"
section_exists = conf.has(section='derp')
# True
section_exists = conf.has(section='derp', key='no')
# True
raw_data = conf.raw()
# {
# 'sections': {
# 'herp': {
# 'sleep': 1,
# 'wait': 5.0,
# 'timeout': 'seventy'
# }
# },
# 'derp': {
# 'expected': 'the spanish inquisition',
# 'til': 'brooklyn',
# 'cats': '1',
# 'no': 'sleep'
# }
# }