ry to (re)load modules and return loaded modules.

        :param modules: list of module (name) to load.
        :param bool rel: flag for forcing reload of module. Default is this
            rel flag (false by default).
        :rtype: list
        :return: loaded modules.

def loadmodules(self, modules=None, rel=None):
        """ry to (re)load modules and return loaded modules.

        :param modules: list of module (name) to load.
        :param bool rel: flag for forcing reload of module. Default is this
            rel flag (false by default).
        :rtype: list
        :return: loaded modules."""

        result = []

        if rel is None:
            rel = self.rel

        if modules is None:
            modules = self._modules

        for module in modules:

            if isinstance(module, string_types):
                name = module
                module = lookup(name)

            elif isinstance(module, ModuleType):
                name = module.__name__

            else:
                raise TypeError(
                    'wrong value {0} in {1}. List of str/module expected.'
                    .format(
                        module, modules
                    )
                )

            if not rel and module in self._loadedmodules:
                continue

            reload_module(module)
            result.append(module)
            self._loadedmodules.add(module)

        return result