Path 1: 2706 calls (0.99)

Module (2704) Const (2)

() (2698) [] (8)

False (2706)

1def is_module_ignored(
2    module: nodes.Module,
3    ignored_modules: Iterable[str],
4) -> bool:
5    ignored_modules = set(ignored_modules)
6    module_name = module.name
7    module_qname = module.qname()
8
9    for ignore in ignored_modules:
10        # Try to match the module name / fully qualified name directly
11        if module_qname in ignored_modules or module_name in ignored_modules:
12            return True
13
14        # Try to see if the ignores pattern match against the module name.
15        if fnmatch.fnmatch(module_qname, ignore):
16            return True
17
18        # Otherwise, we might have a root module name being ignored,
19        # and the qualified owner has more levels of depth.
20        parts = deque(module_name.split("."))
21        current_module = ""
22
23        while parts:
24            part = parts.popleft()
25            if not current_module:
26                current_module = part
27            else:
28                current_module += f".{part}"
29            if current_module in ignored_modules:
30                return True
31
32    return False
            

Path 2: 24 calls (0.01)

Module (24)

['external_module', 'fake_module.submodule', 'foo', 'bar'] (12) ['argparse', 'xml.etree.', 'collections.abc*'] (8) ['argparse'] (4)

False (24)

1def is_module_ignored(
2    module: nodes.Module,
3    ignored_modules: Iterable[str],
4) -> bool:
5    ignored_modules = set(ignored_modules)
6    module_name = module.name
7    module_qname = module.qname()
8
9    for ignore in ignored_modules:
10        # Try to match the module name / fully qualified name directly
11        if module_qname in ignored_modules or module_name in ignored_modules:
12            return True
13
14        # Try to see if the ignores pattern match against the module name.
15        if fnmatch.fnmatch(module_qname, ignore):
16            return True
17
18        # Otherwise, we might have a root module name being ignored,
19        # and the qualified owner has more levels of depth.
20        parts = deque(module_name.split("."))
21        current_module = ""
22
23        while parts:
24            part = parts.popleft()
25            if not current_module:
26                current_module = part
27            else:
28                current_module += f".{part}"
29            if current_module in ignored_modules:
30                return True
31
32    return False
            

Path 3: 3 calls (0.0)

Module (3)

['argparse'] (2) ['argparse', 'xml.etree.', 'collections.abc*'] (1)

False (3)

1def is_module_ignored(
2    module: nodes.Module,
3    ignored_modules: Iterable[str],
4) -> bool:
5    ignored_modules = set(ignored_modules)
6    module_name = module.name
7    module_qname = module.qname()
8
9    for ignore in ignored_modules:
10        # Try to match the module name / fully qualified name directly
11        if module_qname in ignored_modules or module_name in ignored_modules:
12            return True
13
14        # Try to see if the ignores pattern match against the module name.
15        if fnmatch.fnmatch(module_qname, ignore):
16            return True
17
18        # Otherwise, we might have a root module name being ignored,
19        # and the qualified owner has more levels of depth.
20        parts = deque(module_name.split("."))
21        current_module = ""
22
23        while parts:
24            part = parts.popleft()
25            if not current_module:
26                current_module = part
27            else:
28                current_module += f".{part}"
29            if current_module in ignored_modules:
30                return True
31
32    return False
            

Path 4: 2 calls (0.0)

Module (2)

['argparse', 'xml.etree.', 'collections.abc*'] (2)

True (2)

1def is_module_ignored(
2    module: nodes.Module,
3    ignored_modules: Iterable[str],
4) -> bool:
5    ignored_modules = set(ignored_modules)
6    module_name = module.name
7    module_qname = module.qname()
8
9    for ignore in ignored_modules:
10        # Try to match the module name / fully qualified name directly
11        if module_qname in ignored_modules or module_name in ignored_modules:
12            return True
13
14        # Try to see if the ignores pattern match against the module name.
15        if fnmatch.fnmatch(module_qname, ignore):
16            return True
17
18        # Otherwise, we might have a root module name being ignored,
19        # and the qualified owner has more levels of depth.
20        parts = deque(module_name.split("."))
21        current_module = ""
22
23        while parts:
24            part = parts.popleft()
25            if not current_module:
26                current_module = part
27            else:
28                current_module += f".{part}"
29            if current_module in ignored_modules:
30                return True
31
32    return False
            

Path 5: 1 calls (0.0)

Module (1)

['argparse', 'xml.etree.', 'collections.abc*'] (1)

True (1)

1def is_module_ignored(
2    module: nodes.Module,
3    ignored_modules: Iterable[str],
4) -> bool:
5    ignored_modules = set(ignored_modules)
6    module_name = module.name
7    module_qname = module.qname()
8
9    for ignore in ignored_modules:
10        # Try to match the module name / fully qualified name directly
11        if module_qname in ignored_modules or module_name in ignored_modules:
12            return True
13
14        # Try to see if the ignores pattern match against the module name.
15        if fnmatch.fnmatch(module_qname, ignore):
16            return True
17
18        # Otherwise, we might have a root module name being ignored,
19        # and the qualified owner has more levels of depth.
20        parts = deque(module_name.split("."))
21        current_module = ""
22
23        while parts:
24            part = parts.popleft()
25            if not current_module:
26                current_module = part
27            else:
28                current_module += f".{part}"
29            if current_module in ignored_modules:
30                return True
31
32    return False