__init__.py 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  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. """Python Abstract Syntax Tree New Generation.
  5. The aim of this module is to provide a common base representation of
  6. python source code for projects such as pychecker, pyreverse,
  7. pylint... Well, actually the development of this library is essentially
  8. governed by pylint's needs.
  9. It mimics the class defined in the python's _ast module with some
  10. additional methods and attributes. New nodes instances are not fully
  11. compatible with python's _ast.
  12. Instance attributes are added by a
  13. builder object, which can either generate extended ast (let's call
  14. them astroid ;) by visiting an existent ast tree or by inspecting living
  15. object.
  16. Main modules are:
  17. * nodes and scoped_nodes for more information about methods and
  18. attributes added to different node classes
  19. * the manager contains a high level object to get astroid trees from
  20. source files and living objects. It maintains a cache of previously
  21. constructed tree for quick access
  22. * builder contains the class responsible to build astroid trees
  23. """
  24. # isort: off
  25. # We have an isort: off on 'astroid.nodes' because of a circular import.
  26. from astroid.nodes import node_classes, scoped_nodes
  27. # isort: on
  28. from astroid import raw_building
  29. from astroid.__pkginfo__ import __version__, version
  30. from astroid.bases import BaseInstance, BoundMethod, Instance, UnboundMethod
  31. from astroid.brain.helpers import register_module_extender
  32. from astroid.builder import extract_node, parse
  33. from astroid.const import Context
  34. from astroid.exceptions import (
  35. AstroidBuildingError,
  36. AstroidError,
  37. AstroidImportError,
  38. AstroidIndexError,
  39. AstroidSyntaxError,
  40. AstroidTypeError,
  41. AstroidValueError,
  42. AttributeInferenceError,
  43. DuplicateBasesError,
  44. InconsistentMroError,
  45. InferenceError,
  46. InferenceOverwriteError,
  47. MroError,
  48. NameInferenceError,
  49. NoDefault,
  50. NotFoundError,
  51. ParentMissingError,
  52. ResolveError,
  53. StatementMissing,
  54. SuperArgumentTypeError,
  55. SuperError,
  56. TooManyLevelsError,
  57. UnresolvableName,
  58. UseInferenceDefault,
  59. )
  60. from astroid.inference_tip import _inference_tip_cached, inference_tip
  61. from astroid.objects import ExceptionInstance
  62. # isort: off
  63. # It's impossible to import from astroid.nodes with a wildcard, because
  64. # there is a cyclic import that prevent creating an __all__ in astroid/nodes
  65. # and we need astroid/scoped_nodes and astroid/node_classes to work. So
  66. # importing with a wildcard would clash with astroid/nodes/scoped_nodes
  67. # and astroid/nodes/node_classes.
  68. from astroid.astroid_manager import MANAGER
  69. from astroid.nodes import (
  70. CONST_CLS,
  71. AnnAssign as _DEPRECATED_AnnAssign,
  72. Arguments as _DEPRECATED_Arguments,
  73. Assert as _DEPRECATED_Assert,
  74. Assign as _DEPRECATED_Assign,
  75. AssignAttr as _DEPRECATED_AssignAttr,
  76. AssignName as _DEPRECATED_AssignName,
  77. AsyncFor as _DEPRECATED_AsyncFor,
  78. AsyncFunctionDef as _DEPRECATED_AsyncFunctionDef,
  79. AsyncWith as _DEPRECATED_AsyncWith,
  80. Attribute as _DEPRECATED_Attribute,
  81. AugAssign as _DEPRECATED_AugAssign,
  82. Await as _DEPRECATED_Await,
  83. BinOp as _DEPRECATED_BinOp,
  84. BoolOp as _DEPRECATED_BoolOp,
  85. Break as _DEPRECATED_Break,
  86. Call as _DEPRECATED_Call,
  87. ClassDef as _DEPRECATED_ClassDef,
  88. Compare as _DEPRECATED_Compare,
  89. Comprehension as _DEPRECATED_Comprehension,
  90. ComprehensionScope as _DEPRECATED_ComprehensionScope,
  91. Const as _DEPRECATED_Const,
  92. Continue as _DEPRECATED_Continue,
  93. Decorators as _DEPRECATED_Decorators,
  94. DelAttr as _DEPRECATED_DelAttr,
  95. Delete as _DEPRECATED_Delete,
  96. DelName as _DEPRECATED_DelName,
  97. Dict as _DEPRECATED_Dict,
  98. DictComp as _DEPRECATED_DictComp,
  99. DictUnpack as _DEPRECATED_DictUnpack,
  100. EmptyNode as _DEPRECATED_EmptyNode,
  101. EvaluatedObject as _DEPRECATED_EvaluatedObject,
  102. ExceptHandler as _DEPRECATED_ExceptHandler,
  103. Expr as _DEPRECATED_Expr,
  104. For as _DEPRECATED_For,
  105. FormattedValue as _DEPRECATED_FormattedValue,
  106. FunctionDef as _DEPRECATED_FunctionDef,
  107. GeneratorExp as _DEPRECATED_GeneratorExp,
  108. Global as _DEPRECATED_Global,
  109. If as _DEPRECATED_If,
  110. IfExp as _DEPRECATED_IfExp,
  111. Import as _DEPRECATED_Import,
  112. ImportFrom as _DEPRECATED_ImportFrom,
  113. Interpolation as _DEPRECATED_Interpolation,
  114. JoinedStr as _DEPRECATED_JoinedStr,
  115. Keyword as _DEPRECATED_Keyword,
  116. Lambda as _DEPRECATED_Lambda,
  117. List as _DEPRECATED_List,
  118. ListComp as _DEPRECATED_ListComp,
  119. Match as _DEPRECATED_Match,
  120. MatchAs as _DEPRECATED_MatchAs,
  121. MatchCase as _DEPRECATED_MatchCase,
  122. MatchClass as _DEPRECATED_MatchClass,
  123. MatchMapping as _DEPRECATED_MatchMapping,
  124. MatchOr as _DEPRECATED_MatchOr,
  125. MatchSequence as _DEPRECATED_MatchSequence,
  126. MatchSingleton as _DEPRECATED_MatchSingleton,
  127. MatchStar as _DEPRECATED_MatchStar,
  128. MatchValue as _DEPRECATED_MatchValue,
  129. Module as _DEPRECATED_Module,
  130. Name as _DEPRECATED_Name,
  131. NamedExpr as _DEPRECATED_NamedExpr,
  132. NodeNG as _DEPRECATED_NodeNG,
  133. Nonlocal as _DEPRECATED_Nonlocal,
  134. ParamSpec as _DEPRECATED_ParamSpec,
  135. Pass as _DEPRECATED_Pass,
  136. Raise as _DEPRECATED_Raise,
  137. Return as _DEPRECATED_Return,
  138. Set as _DEPRECATED_Set,
  139. SetComp as _DEPRECATED_SetComp,
  140. Slice as _DEPRECATED_Slice,
  141. Starred as _DEPRECATED_Starred,
  142. Subscript as _DEPRECATED_Subscript,
  143. TemplateStr as _DEPRECATED_TemplateStr,
  144. Try as _DEPRECATED_Try,
  145. TryStar as _DEPRECATED_TryStar,
  146. Tuple as _DEPRECATED_Tuple,
  147. TypeAlias as _DEPRECATED_TypeAlias,
  148. TypeVar as _DEPRECATED_TypeVar,
  149. TypeVarTuple as _DEPRECATED_TypeVarTuple,
  150. UnaryOp as _DEPRECATED_UnaryOp,
  151. Unknown as _DEPRECATED_Unknown,
  152. While as _DEPRECATED_While,
  153. With as _DEPRECATED_With,
  154. Yield as _DEPRECATED_Yield,
  155. YieldFrom as _DEPRECATED_YieldFrom,
  156. are_exclusive,
  157. builtin_lookup,
  158. unpack_infer,
  159. function_to_method,
  160. )
  161. # isort: on
  162. from astroid.util import Uninferable
  163. __all__ = [
  164. "CONST_CLS",
  165. "MANAGER",
  166. "AstroidBuildingError",
  167. "AstroidError",
  168. "AstroidImportError",
  169. "AstroidIndexError",
  170. "AstroidSyntaxError",
  171. "AstroidTypeError",
  172. "AstroidValueError",
  173. "AttributeInferenceError",
  174. "BaseInstance",
  175. "BoundMethod",
  176. "Context",
  177. "DuplicateBasesError",
  178. "ExceptionInstance",
  179. "InconsistentMroError",
  180. "InferenceError",
  181. "InferenceOverwriteError",
  182. "Instance",
  183. "MroError",
  184. "NameInferenceError",
  185. "NoDefault",
  186. "NotFoundError",
  187. "ParentMissingError",
  188. "ResolveError",
  189. "StatementMissing",
  190. "SuperArgumentTypeError",
  191. "SuperError",
  192. "TooManyLevelsError",
  193. "UnboundMethod",
  194. "Uninferable",
  195. "UnresolvableName",
  196. "UseInferenceDefault",
  197. "__version__",
  198. "_inference_tip_cached",
  199. "are_exclusive",
  200. "builtin_lookup",
  201. "extract_node",
  202. "function_to_method",
  203. "inference_tip",
  204. "node_classes",
  205. "parse",
  206. "raw_building",
  207. "register_module_extender",
  208. "scoped_nodes",
  209. "unpack_infer",
  210. "version",
  211. ]
  212. def __getattr__(name: str):
  213. if (val := globals().get(f"_DEPRECATED_{name}")) is None:
  214. msg = f"module '{__name__}' has no attribute '{name}"
  215. raise AttributeError(msg)
  216. # pylint: disable-next=import-outside-toplevel
  217. import warnings
  218. msg = (
  219. f"importing '{name}' from 'astroid' is deprecated and will be removed in v5, "
  220. "import it from 'astroid.nodes' instead"
  221. )
  222. warnings.warn(msg, DeprecationWarning, stacklevel=2)
  223. return val