Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.11/site-packages/astroid/brain/helpers.py: 83%

Shortcuts on this page

r m x   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

76 statements  

1# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html 

2# For details: https://github.com/pylint-dev/astroid/blob/main/LICENSE 

3# Copyright (c) https://github.com/pylint-dev/astroid/blob/main/CONTRIBUTORS.txt 

4 

5from __future__ import annotations 

6 

7from collections.abc import Callable 

8from typing import TYPE_CHECKING 

9 

10from astroid.exceptions import InferenceError 

11from astroid.manager import AstroidManager 

12from astroid.nodes.scoped_nodes import Module 

13 

14if TYPE_CHECKING: 

15 from astroid.nodes.node_ng import NodeNG 

16 

17 

18def register_module_extender( 

19 manager: AstroidManager, module_name: str, get_extension_mod: Callable[[], Module] 

20) -> None: 

21 def transform(node: Module) -> None: 

22 extension_module = get_extension_mod() 

23 for name, objs in extension_module.locals.items(): 

24 node.locals[name] = objs 

25 for obj in objs: 

26 if obj.parent is extension_module: 

27 obj.parent = node 

28 

29 manager.register_transform(Module, transform, lambda n: n.name == module_name) 

30 

31 

32# pylint: disable-next=too-many-locals 

33def register_all_brains(manager: AstroidManager) -> None: 

34 from astroid.brain import ( # pylint: disable=import-outside-toplevel 

35 brain_argparse, 

36 brain_attrs, 

37 brain_boto3, 

38 brain_builtin_inference, 

39 brain_collections, 

40 brain_crypt, 

41 brain_ctypes, 

42 brain_curses, 

43 brain_dataclasses, 

44 brain_datetime, 

45 brain_dateutil, 

46 brain_functools, 

47 brain_gi, 

48 brain_hashlib, 

49 brain_http, 

50 brain_hypothesis, 

51 brain_io, 

52 brain_mechanize, 

53 brain_multiprocessing, 

54 brain_namedtuple_enum, 

55 brain_numpy_core_einsumfunc, 

56 brain_numpy_core_fromnumeric, 

57 brain_numpy_core_function_base, 

58 brain_numpy_core_multiarray, 

59 brain_numpy_core_numeric, 

60 brain_numpy_core_numerictypes, 

61 brain_numpy_core_umath, 

62 brain_numpy_ma, 

63 brain_numpy_ndarray, 

64 brain_numpy_random_mtrand, 

65 brain_pathlib, 

66 brain_pkg_resources, 

67 brain_pytest, 

68 brain_qt, 

69 brain_random, 

70 brain_re, 

71 brain_regex, 

72 brain_responses, 

73 brain_scipy_signal, 

74 brain_signal, 

75 brain_six, 

76 brain_sqlalchemy, 

77 brain_ssl, 

78 brain_statistics, 

79 brain_subprocess, 

80 brain_threading, 

81 brain_type, 

82 brain_typing, 

83 brain_unittest, 

84 brain_uuid, 

85 ) 

86 

87 brain_argparse.register(manager) 

88 brain_attrs.register(manager) 

89 brain_boto3.register(manager) 

90 brain_builtin_inference.register(manager) 

91 brain_collections.register(manager) 

92 brain_crypt.register(manager) 

93 brain_ctypes.register(manager) 

94 brain_curses.register(manager) 

95 brain_dataclasses.register(manager) 

96 brain_datetime.register(manager) 

97 brain_dateutil.register(manager) 

98 brain_functools.register(manager) 

99 brain_gi.register(manager) 

100 brain_hashlib.register(manager) 

101 brain_http.register(manager) 

102 brain_hypothesis.register(manager) 

103 brain_io.register(manager) 

104 brain_mechanize.register(manager) 

105 brain_multiprocessing.register(manager) 

106 brain_namedtuple_enum.register(manager) 

107 brain_numpy_core_einsumfunc.register(manager) 

108 brain_numpy_core_fromnumeric.register(manager) 

109 brain_numpy_core_function_base.register(manager) 

110 brain_numpy_core_multiarray.register(manager) 

111 brain_numpy_core_numerictypes.register(manager) 

112 brain_numpy_core_umath.register(manager) 

113 brain_numpy_random_mtrand.register(manager) 

114 brain_numpy_ma.register(manager) 

115 brain_numpy_ndarray.register(manager) 

116 brain_numpy_core_numeric.register(manager) 

117 brain_pathlib.register(manager) 

118 brain_pkg_resources.register(manager) 

119 brain_pytest.register(manager) 

120 brain_qt.register(manager) 

121 brain_random.register(manager) 

122 brain_re.register(manager) 

123 brain_regex.register(manager) 

124 brain_responses.register(manager) 

125 brain_scipy_signal.register(manager) 

126 brain_signal.register(manager) 

127 brain_six.register(manager) 

128 brain_sqlalchemy.register(manager) 

129 brain_ssl.register(manager) 

130 brain_statistics.register(manager) 

131 brain_subprocess.register(manager) 

132 brain_threading.register(manager) 

133 brain_type.register(manager) 

134 brain_typing.register(manager) 

135 brain_unittest.register(manager) 

136 brain_uuid.register(manager) 

137 

138 

139def is_class_var(node: NodeNG) -> bool: 

140 """Return True if node is a ClassVar, with or without subscripting.""" 

141 try: 

142 inferred = next(node.infer()) 

143 except (InferenceError, StopIteration): 

144 return False 

145 

146 return getattr(inferred, "name", "") == "ClassVar"