From 4085039997123663eccb28c12ee30c5b3036ab10 Mon Sep 17 00:00:00 2001 From: "Dustin C. Hatch" Date: Wed, 19 Dec 2012 15:26:19 -0600 Subject: [PATCH] Added simple inifile-to-dictionary parser --- src/milla/config.py | 50 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 src/milla/config.py diff --git a/src/milla/config.py b/src/milla/config.py new file mode 100644 index 0000000..f656411 --- /dev/null +++ b/src/milla/config.py @@ -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