Path 1: 820 calls (0.52)

ImportFrom (414) Import (406)

Module (820)

[] (820)

Module (820)

1def _check_module_attrs(
2        self,
3        node: _base_nodes.ImportNode,
4        module: nodes.Module,
5        module_names: list[str],
6    ) -> nodes.Module | None:
7        """Check that module_names (list of string) are accessible through the
8        given module, if the latest access name corresponds to a module, return it.
9        """
10        while module_names:
11            name = module_names.pop(0)
12            if name == "__dict__":
13                module = None
14                break
15            try:
16                module = next(module.getattr(name)[0].infer())
17                if module is astroid.Uninferable:
18                    return None
19            except astroid.NotFoundError:
20                if module.name in self._ignored_modules:
21                    return None
22                self.add_message(
23                    "no-name-in-module", args=(name, module.name), node=node
24                )
25                return None
26            except astroid.InferenceError:
27                return None
28        if module_names:
29            modname = module.name if module else "__dict__"
30            self.add_message(
31                "no-name-in-module", node=node, args=(".".join(module_names), modname)
32            )
33            return None
34        if isinstance(module, nodes.Module):
35            return module
36        return None
            

Path 2: 505 calls (0.32)

ImportFrom (504) Import (1)

Module (505)

['annotations'] (22) ['Union'] (21) ['List'] (19) ['print_function'] (18) ['TYPE_CHECKING'] (18) ['dataclass'] (18) ['Any'] (18) ['Enum'] (17) ['Dict'...

None (505)

1def _check_module_attrs(
2        self,
3        node: _base_nodes.ImportNode,
4        module: nodes.Module,
5        module_names: list[str],
6    ) -> nodes.Module | None:
7        """Check that module_names (list of string) are accessible through the
8        given module, if the latest access name corresponds to a module, return it.
9        """
10        while module_names:
11            name = module_names.pop(0)
12            if name == "__dict__":
13                module = None
14                break
15            try:
16                module = next(module.getattr(name)[0].infer())
17                if module is astroid.Uninferable:
18                    return None
19            except astroid.NotFoundError:
20                if module.name in self._ignored_modules:
21                    return None
22                self.add_message(
23                    "no-name-in-module", args=(name, module.name), node=node
24                )
25                return None
26            except astroid.InferenceError:
27                return None
28        if module_names:
29            modname = module.name if module else "__dict__"
30            self.add_message(
31                "no-name-in-module", node=node, args=(".".join(module_names), modname)
32            )
33            return None
34        if isinstance(module, nodes.Module):
35            return module
36        return None
            

Path 3: 106 calls (0.07)

ImportFrom (95) Import (11)

Module (106)

['path'] (19) ['ABCMeta'] (15) ['are_exclusive'] (6) ['Callable'] (5) ['Sequence'] (4) ['Run'] (4) ['Awaitable'] (3) ['BufferedReader'] (3) ['GenericT...

None (106)

InferenceError (106)

1def _check_module_attrs(
2        self,
3        node: _base_nodes.ImportNode,
4        module: nodes.Module,
5        module_names: list[str],
6    ) -> nodes.Module | None:
7        """Check that module_names (list of string) are accessible through the
8        given module, if the latest access name corresponds to a module, return it.
9        """
10        while module_names:
11            name = module_names.pop(0)
12            if name == "__dict__":
13                module = None
14                break
15            try:
16                module = next(module.getattr(name)[0].infer())
17                if module is astroid.Uninferable:
18                    return None
19            except astroid.NotFoundError:
20                if module.name in self._ignored_modules:
21                    return None
22                self.add_message(
23                    "no-name-in-module", args=(name, module.name), node=node
24                )
25                return None
26            except astroid.InferenceError:
27                return None
28        if module_names:
29            modname = module.name if module else "__dict__"
30            self.add_message(
31                "no-name-in-module", node=node, args=(".".join(module_names), modname)
32            )
33            return None
34        if isinstance(module, nodes.Module):
35            return module
36        return None
            

Path 4: 104 calls (0.07)

ImportFrom (78) Import (26)

Module (104)

['abc'] (23) ['mock'] (7) ['w0401_cycle'] (6) ['func_w0401'] (5) ['lint'] (5) ['testutils'] (4) ['config'] (3) ['handlers'] (3) ['checkers'] (3) ['etr...

Module (104)

1def _check_module_attrs(
2        self,
3        node: _base_nodes.ImportNode,
4        module: nodes.Module,
5        module_names: list[str],
6    ) -> nodes.Module | None:
7        """Check that module_names (list of string) are accessible through the
8        given module, if the latest access name corresponds to a module, return it.
9        """
10        while module_names:
11            name = module_names.pop(0)
12            if name == "__dict__":
13                module = None
14                break
15            try:
16                module = next(module.getattr(name)[0].infer())
17                if module is astroid.Uninferable:
18                    return None
19            except astroid.NotFoundError:
20                if module.name in self._ignored_modules:
21                    return None
22                self.add_message(
23                    "no-name-in-module", args=(name, module.name), node=node
24                )
25                return None
26            except astroid.InferenceError:
27                return None
28        if module_names:
29            modname = module.name if module else "__dict__"
30            self.add_message(
31                "no-name-in-module", node=node, args=(".".join(module_names), modname)
32            )
33            return None
34        if isinstance(module, nodes.Module):
35            return module
36        return None
            

Path 5: 36 calls (0.02)

ImportFrom (31) Import (5)

Module (36)

['_private'] (3) ['bar'] (3) ['foo'] (3) ['foo2'] (3) ['missing'] (2) ['doesnottexists'] (2) ['__print_function__'] (1) ['other_file'] (1) ['tutu'] (1...

None (36)

AttributeInferenceError (36)

1def _check_module_attrs(
2        self,
3        node: _base_nodes.ImportNode,
4        module: nodes.Module,
5        module_names: list[str],
6    ) -> nodes.Module | None:
7        """Check that module_names (list of string) are accessible through the
8        given module, if the latest access name corresponds to a module, return it.
9        """
10        while module_names:
11            name = module_names.pop(0)
12            if name == "__dict__":
13                module = None
14                break
15            try:
16                module = next(module.getattr(name)[0].infer())
17                if module is astroid.Uninferable:
18                    return None
19            except astroid.NotFoundError:
20                if module.name in self._ignored_modules:
21                    return None
22                self.add_message(
23                    "no-name-in-module", args=(name, module.name), node=node
24                )
25                return None
26            except astroid.InferenceError:
27                return None
28        if module_names:
29            modname = module.name if module else "__dict__"
30            self.add_message(
31                "no-name-in-module", node=node, args=(".".join(module_names), modname)
32            )
33            return None
34        if isinstance(module, nodes.Module):
35            return module
36        return None
            

Path 6: 4 calls (0.0)

ImportFrom (3) Import (1)

Module (4)

['THING1_PLUS_THING2'] (2) ['flags'] (1) ['dom', 'minidom'] (1)

None (4)

1def _check_module_attrs(
2        self,
3        node: _base_nodes.ImportNode,
4        module: nodes.Module,
5        module_names: list[str],
6    ) -> nodes.Module | None:
7        """Check that module_names (list of string) are accessible through the
8        given module, if the latest access name corresponds to a module, return it.
9        """
10        while module_names:
11            name = module_names.pop(0)
12            if name == "__dict__":
13                module = None
14                break
15            try:
16                module = next(module.getattr(name)[0].infer())
17                if module is astroid.Uninferable:
18                    return None
19            except astroid.NotFoundError:
20                if module.name in self._ignored_modules:
21                    return None
22                self.add_message(
23                    "no-name-in-module", args=(name, module.name), node=node
24                )
25                return None
26            except astroid.InferenceError:
27                return None
28        if module_names:
29            modname = module.name if module else "__dict__"
30            self.add_message(
31                "no-name-in-module", node=node, args=(".".join(module_names), modname)
32            )
33            return None
34        if isinstance(module, nodes.Module):
35            return module
36        return None
            

Path 7: 1 calls (0.0)

ImportFrom (1)

Module (1)

['s', 'syntax', 'syntax_error'] (1)

None (1)

AttributeInferenceError (1)

1def _check_module_attrs(
2        self,
3        node: _base_nodes.ImportNode,
4        module: nodes.Module,
5        module_names: list[str],
6    ) -> nodes.Module | None:
7        """Check that module_names (list of string) are accessible through the
8        given module, if the latest access name corresponds to a module, return it.
9        """
10        while module_names:
11            name = module_names.pop(0)
12            if name == "__dict__":
13                module = None
14                break
15            try:
16                module = next(module.getattr(name)[0].infer())
17                if module is astroid.Uninferable:
18                    return None
19            except astroid.NotFoundError:
20                if module.name in self._ignored_modules:
21                    return None
22                self.add_message(
23                    "no-name-in-module", args=(name, module.name), node=node
24                )
25                return None
26            except astroid.InferenceError:
27                return None
28        if module_names:
29            modname = module.name if module else "__dict__"
30            self.add_message(
31                "no-name-in-module", node=node, args=(".".join(module_names), modname)
32            )
33            return None
34        if isinstance(module, nodes.Module):
35            return module
36        return None
            

Path 8: 1 calls (0.0)

ImportFrom (1)

Module (1)

['THIS_does_not_EXIST'] (1)

None (1)

AttributeInferenceError (1)

1def _check_module_attrs(
2        self,
3        node: _base_nodes.ImportNode,
4        module: nodes.Module,
5        module_names: list[str],
6    ) -> nodes.Module | None:
7        """Check that module_names (list of string) are accessible through the
8        given module, if the latest access name corresponds to a module, return it.
9        """
10        while module_names:
11            name = module_names.pop(0)
12            if name == "__dict__":
13                module = None
14                break
15            try:
16                module = next(module.getattr(name)[0].infer())
17                if module is astroid.Uninferable:
18                    return None
19            except astroid.NotFoundError:
20                if module.name in self._ignored_modules:
21                    return None
22                self.add_message(
23                    "no-name-in-module", args=(name, module.name), node=node
24                )
25                return None
26            except astroid.InferenceError:
27                return None
28        if module_names:
29            modname = module.name if module else "__dict__"
30            self.add_message(
31                "no-name-in-module", node=node, args=(".".join(module_names), modname)
32            )
33            return None
34        if isinstance(module, nodes.Module):
35            return module
36        return None