def _read(self, fp, filename): # pylint: disable=arguments-differ # first pass ConfigParser._read(self, fp, filename) # let's expand it now if needed defaults = self.defaults() def _list(name): if name not in defaults: return [] value = defaults[name] if not isinstance(value, list): value = [value] return value if 'extends' in defaults or 'overrides' in defaults: interpolate = self._interpolation.before_get for file_ in _list('extends'): file_ = interpolate(self, 'defaults', 'extends', file_, {}) self._extend(file_) for file_ in _list('overrides'): file_ = interpolate(self, 'defaults', 'overrides', file_, {}) self._extend(file_, override=True)
def read_from_config_stream(config_fp, source="<stream>"): """ Read config from config file (.ini, .cfg) """ parser = ConfigParser() parser._read(config_fp, source) source = "config[{file_name}]".format( file_name=os.path.basename(str(source))) new_config = _ConfigStore() for section in parser.sections(): for option in parser.options(section): value = parser.get(section, option) new_config.set_config_value( section, option, ConfigValue(value, source, require_parse=True)) return new_config
def _read(self, fp, fpname): self._sections.fp.fp = fp self._sections.fp.name = fpname self._sections.fp.lineno = 0 ConfigParser._read(self, self._sections.fp, fpname) self._sections.fp.__init__()