def load_adapter(adapter_name): """ Load adapter which set in bot config. :param adapter_name: name of adapter. May be local package in adapters folder or package from PyPi. :return: """ # Try to import adapter from project directory adapter_module = import_adapter('adapters.{}'.format(adapter_name)) # If it failed, try to import it as PyPi module if adapter_module is None: adapter_module = import_adapter(adapter_name) # If it still fail, just return error if adapter_module is None: logger.critical_message('Problems with importing adapter') return None adapter_config = parse_config(adapter_module) adapter_object = Adapter(adapter_name, adapter_module, adapter_config) return adapter_object
def import_adapter(package_name): """ Import adapter using importlib :param package_name: full name of adapter, ex. 'adapters.console' :return: """ try: return importlib.import_module(package_name) except ImportError as error: logger.critical_message(error) return None