def _parse_ini(data_string): """ INI data input format. data.ini: ``` [nginx] hostname=localhost webroot=/var/www/project logs=/var/log/nginx/ ``` Usage: $ j2 config.j2 data.ini $ cat data.ini | j2 --format=ini config.j2 """ from io import StringIO # Override class MyConfigParser(ConfigParser.ConfigParser): def as_dict(self): """ Export as dict :rtype: dict """ d = dict(self._sections) for k in d: d[k] = dict(self._defaults, **d[k]) d[k].pop('__name__', None) return d # Parse ini = MyConfigParser() ini.readfp(ini_file_io(data_string)) # Export return ini.as_dict()