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

def getconf(
            self, conf=None, paths=None, drivers=None, logger=None, modules=None
    ):
        """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
        """

        result = None

        self.loadmodules(modules=modules)
        modules = []

        conf = self._toconf(conf)

        # start to initialize input params
        if conf is None:
            conf = self.conf.copy()

        else:
            selfconf = self.conf.copy()
            selfconf.update(conf)
            conf = selfconf

        if paths is None:
            paths = self.paths

        if isinstance(paths, string_types):
            paths = [paths]

        if drivers is None:
            drivers = self.drivers

        if logger is None:
            logger = self.logger

        # iterate on all paths
        for path in paths:

            rscconf = None

            for driver in drivers:  # find the best driver

                rscconf = driver.getconf(path=path, conf=conf, logger=logger)

                if rscconf is None:
                    continue

                conf.update(rscconf)

            if rscconf is None:
                # if no conf found, display a warning log message
                if logger is not None:
                    logger.warning(
                        'No driver found among {0} for processing {1}'.format(
                            drivers, path
                        )
                    )

        result = conf

        return result