golden hour
/opt/cloudlinux/venv/lib/python3.11/site-packages/astroid/brain
⬆️ Go Up
Upload
File/Folder
Size
Actions
__init__.py
0 B
Del
OK
__pycache__
-
Del
OK
brain_argparse.py
1.52 KB
Del
OK
brain_attrs.py
2.97 KB
Del
OK
brain_boto3.py
1012 B
Del
OK
brain_builtin_inference.py
33.45 KB
Del
OK
brain_collections.py
4.31 KB
Del
OK
brain_crypt.py
863 B
Del
OK
brain_ctypes.py
2.6 KB
Del
OK
brain_curses.py
3.4 KB
Del
OK
brain_dataclasses.py
21.57 KB
Del
OK
brain_dateutil.py
767 B
Del
OK
brain_fstrings.py
2.41 KB
Del
OK
brain_functools.py
5.85 KB
Del
OK
brain_gi.py
7.37 KB
Del
OK
brain_hashlib.py
2.75 KB
Del
OK
brain_http.py
10.39 KB
Del
OK
brain_hypothesis.py
1.69 KB
Del
OK
brain_io.py
1.49 KB
Del
OK
brain_mechanize.py
2.58 KB
Del
OK
brain_multiprocessing.py
3.14 KB
Del
OK
brain_namedtuple_enum.py
22.19 KB
Del
OK
brain_nose.py
2.27 KB
Del
OK
brain_numpy_core_einsumfunc.py
825 B
Del
OK
brain_numpy_core_fromnumeric.py
732 B
Del
OK
brain_numpy_core_function_base.py
1.27 KB
Del
OK
brain_numpy_core_multiarray.py
4.14 KB
Del
OK
brain_numpy_core_numeric.py
1.59 KB
Del
OK
brain_numpy_core_numerictypes.py
8.35 KB
Del
OK
brain_numpy_core_umath.py
4.78 KB
Del
OK
brain_numpy_ma.py
896 B
Del
OK
brain_numpy_ndarray.py
8.79 KB
Del
OK
brain_numpy_random_mtrand.py
3.36 KB
Del
OK
brain_numpy_utils.py
2.58 KB
Del
OK
brain_pathlib.py
1.51 KB
Del
OK
brain_pkg_resources.py
2.15 KB
Del
OK
brain_pytest.py
2.17 KB
Del
OK
brain_qt.py
2.74 KB
Del
OK
brain_random.py
2.82 KB
Del
OK
brain_re.py
2.8 KB
Del
OK
brain_regex.py
3.28 KB
Del
OK
brain_responses.py
1.82 KB
Del
OK
brain_scipy_signal.py
2.22 KB
Del
OK
brain_signal.py
3.79 KB
Del
OK
brain_six.py
7.42 KB
Del
OK
brain_sqlalchemy.py
1009 B
Del
OK
brain_ssl.py
6.4 KB
Del
OK
brain_subprocess.py
2.93 KB
Del
OK
brain_threading.py
870 B
Del
OK
brain_type.py
2.42 KB
Del
OK
brain_typing.py
13.98 KB
Del
OK
brain_unittest.py
1.12 KB
Del
OK
brain_uuid.py
667 B
Del
OK
helpers.py
908 B
Del
OK
Edit: brain_type.py
# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html # For details: https://github.com/PyCQA/astroid/blob/main/LICENSE # Copyright (c) https://github.com/PyCQA/astroid/blob/main/CONTRIBUTORS.txt """ Astroid hooks for type support. Starting from python3.9, type object behaves as it had __class_getitem__ method. However it was not possible to simply add this method inside type's body, otherwise all types would also have this method. In this case it would have been possible to write str[int]. Guido Van Rossum proposed a hack to handle this in the interpreter: https://github.com/python/cpython/blob/67e394562d67cbcd0ac8114e5439494e7645b8f5/Objects/abstract.c#L181-L184 This brain follows the same logic. It is no wise to add permanently the __class_getitem__ method to the type object. Instead we choose to add it only in the case of a subscript node which inside name node is type. Doing this type[int] is allowed whereas str[int] is not. Thanks to Lukasz Langa for fruitful discussion. """ from __future__ import annotations from astroid import extract_node, inference_tip, nodes from astroid.const import PY39_PLUS from astroid.context import InferenceContext from astroid.exceptions import UseInferenceDefault from astroid.manager import AstroidManager def _looks_like_type_subscript(node) -> bool: """ Try to figure out if a Name node is used inside a type related subscript. :param node: node to check :type node: astroid.nodes.node_classes.NodeNG :return: whether the node is a Name node inside a type related subscript """ if isinstance(node, nodes.Name) and isinstance(node.parent, nodes.Subscript): return node.name == "type" return False def infer_type_sub(node, context: InferenceContext | None = None): """ Infer a type[...] subscript. :param node: node to infer :type node: astroid.nodes.node_classes.NodeNG :return: the inferred node :rtype: nodes.NodeNG """ node_scope, _ = node.scope().lookup("type") if not isinstance(node_scope, nodes.Module) or node_scope.qname() != "builtins": raise UseInferenceDefault() class_src = """ class type: def __class_getitem__(cls, key): return cls """ node = extract_node(class_src) return node.infer(context=context) if PY39_PLUS: AstroidManager().register_transform( nodes.Name, inference_tip(infer_type_sub), _looks_like_type_subscript )
Save