Example #1
0
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
Example #2
0
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)