def getconf(<EOL>self, conf=None, paths=None, drivers=None, logger=None, modules=None<EOL>):
result = None<EOL>self.loadmodules(modules=modules)<EOL>modules = []<EOL>conf = self._toconf(conf)<EOL>if conf is None:<EOL><INDENT>conf = self.conf.copy()<EOL><DEDENT>else:<EOL><INDENT>selfconf = self.conf.copy()<EOL>selfconf.update(conf)<EOL>conf = selfconf<EOL><DEDENT>if paths is None:<EOL><INDENT>paths = self.paths<EOL><DEDENT>if isinstance(paths, string_types):<EOL><INDENT>paths = [paths]<EOL><DEDENT>if drivers is None:<EOL><INDENT>drivers = self.drivers<EOL><DEDENT>if logger is None:<EOL><INDENT>logger = self.logger<EOL><DEDENT>for path in paths:<EOL><INDENT>rscconf = None<EOL>for driver in drivers:  <EOL><INDENT>rscconf = driver.getconf(path=path, conf=conf, logger=logger)<EOL>if rscconf is None:<EOL><INDENT>continue<EOL><DEDENT>conf.update(rscconf)<EOL><DEDENT>if rscconf is None:<EOL><INDENT>if logger is not None:<EOL><INDENT>logger.warning(<EOL>'<STR_LIT>'.format(<EOL>drivers, path<EOL>)<EOL>)<EOL><DEDENT><DEDENT><DEDENT>result = conf<EOL>return result<EOL>
Get a configuration from paths.

        :param conf: conf to update. Default this conf.
        :type conf: Configuration, Category or Parameter
        :param str(s) paths: list of conf files. Default this paths.
        :param Logger logger: logger to use for logging info/error messages.
        :param list drivers: ConfDriver to use. Default this drivers.
        :param list modules: modules to reload before.
        :return: not resolved configuration.
        :rtype: Configuration