def _yield_module_names_and_filenames_from_callstack(): for frame in _yield_frames(): try: module_name = frame.f_globals.get('__name__', '') filename = frame.f_globals.get('__file__', '') except: log.debug('unable to get module name or filename from frame: {0.f_code.co_filename}', frame) else: yield module_name, filename
def handle_exception(exception, plugin_name, module_name, log=log): error_msg = '{exception_name} caught while importing {module_name}'.format( exception_name=type(exception).__name__, module_name=module_name, ) if module_name.startswith(plugin_name): log.warning('error importing plugin {}', plugin_name, exc_info=True) raise SideboardImportError(error_msg) else: if isinstance(exception, ImportError): import_error_msg = str(exception) imported_module = import_error_msg.rsplit(' ', 1)[-1] if imported_module == module_name: log.warning(error_msg) # this shouldn't ever happen else: log.debug(error_msg) else: log.debug(error_msg)