Added simple inifile-to-dictionary parser

master
Dustin C. Hatch 2012-12-19 15:26:19 -06:00
parent d635e83431
commit 4085039997
1 changed files with 50 additions and 0 deletions

50
src/milla/config.py Normal file
View File

@ -0,0 +1,50 @@
try:
import configparser
except ImportError:
import ConfigParser as configparser
def read_config(filename):
'''Parse an ini file into a nested dictionary
:param string filename: Path to the ini file to read
:returns: A dictionary whose keys correspond to the section and
option, joined with a dot character (.)
For example, consider the following ini file::
[xmen]
storm = Ororo Monroe
cyclops = Scott Summers
[avengers]
hulk = Bruce Banner
iron_man = Tony Stark
The resulting dictionary would look like this::
{
'xmen.storm': 'Ororo Monroe',
'xmen.cyclops': 'Scott Summers',
'avengers.hulk': 'Bruce Banner',
'avengers.iron_man': 'Tony Stark',
}
Thus, the option values for any section can be obtained as follows::
config['xmen.storm']
This dictionary can be used to configure an :py:class:`~milla.Application`
instance by using the ``update`` method::
app = milla.Application(router)
app.config.update(config)
'''
cparser = configparser.SafeConfigParser()
cparser.readfp(open(filename))
config = {}
for section in cparser.sections():
for option in cparser.options(section):
config['.'.join((section, option))] = cparser.get(section, option)
return config