Path 1: 265 calls (0.93)

Import (142) ImportFrom (123)

'nonexistent' (21) 'missing' (19) 'six' (18) 'unknown' (16) 'foo2' (7) 'foo' (6) 'classes' (5) 'foo.bar' (5) 'numpy' (5) 'UNINFERABLE' (4)

() (240) ['external_module', 'fake_module.submodule', 'foo', 'bar'] (13) ['argparse'] (12)

False (245) True (20)

1def _ignore_import_failure(
2    node: ImportNode,
3    modname: str | None,
4    ignored_modules: Sequence[str],
5) -> bool:
6    for submodule in _qualified_names(modname):
7        if submodule in ignored_modules:
8            return True
9
10    if is_node_in_guarded_import_block(node):
11        # Ignore import failure if part of guarded import block
12        # I.e. `sys.version_info` or `typing.TYPE_CHECKING`
13        return True
14
15    return node_ignores_exception(node, ImportError)
            

Path 2: 12 calls (0.04)

Import (8) ImportFrom (4)

'stub_import' (4) 'some_module' (3) '_types' (2) 'some_module_alt' (2) '_TreeType' (1)

['external_module', 'fake_module.submodule', 'foo', 'bar'] (9) () (3)

True (12)

1def _ignore_import_failure(
2    node: ImportNode,
3    modname: str | None,
4    ignored_modules: Sequence[str],
5) -> bool:
6    for submodule in _qualified_names(modname):
7        if submodule in ignored_modules:
8            return True
9
10    if is_node_in_guarded_import_block(node):
11        # Ignore import failure if part of guarded import block
12        # I.e. `sys.version_info` or `typing.TYPE_CHECKING`
13        return True
14
15    return node_ignores_exception(node, ImportError)
            

Path 3: 9 calls (0.03)

Import (5) ImportFrom (4)

'external_module' (2) 'foo' (2) 'bar' (2) 'external_module.another_module' (1) 'fake_module.submodule' (1) 'fake_module.submodule.deeper' (1)

['external_module', 'fake_module.submodule', 'foo', 'bar'] (9)

True (9)

1def _ignore_import_failure(
2    node: ImportNode,
3    modname: str | None,
4    ignored_modules: Sequence[str],
5) -> bool:
6    for submodule in _qualified_names(modname):
7        if submodule in ignored_modules:
8            return True
9
10    if is_node_in_guarded_import_block(node):
11        # Ignore import failure if part of guarded import block
12        # I.e. `sys.version_info` or `typing.TYPE_CHECKING`
13        return True
14
15    return node_ignores_exception(node, ImportError)