diff options
author | Nick Drozd <nicholasdrozd@gmail.com> | 2022-11-22 09:14:21 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-11-22 16:14:21 +0100 |
commit | 7a0b5626ae7011c682a1fdee2362823cb36adc69 (patch) | |
tree | 36afd4cf0882a6eb65730e9182d676c8321d998c /astroid/brain | |
parent | 595c8bb416153ef3470b6d2ec41de0316fd5a769 (diff) | |
download | astroid-git-7a0b5626ae7011c682a1fdee2362823cb36adc69.tar.gz |
Add some InferenceContext annotations (#1883)
Diffstat (limited to 'astroid/brain')
-rw-r--r-- | astroid/brain/brain_argparse.py | 5 | ||||
-rw-r--r-- | astroid/brain/brain_builtin_inference.py | 36 | ||||
-rw-r--r-- | astroid/brain/brain_collections.py | 5 | ||||
-rw-r--r-- | astroid/brain/brain_functools.py | 6 | ||||
-rw-r--r-- | astroid/brain/brain_namedtuple_enum.py | 4 | ||||
-rw-r--r-- | astroid/brain/brain_numpy_ndarray.py | 5 | ||||
-rw-r--r-- | astroid/brain/brain_numpy_utils.py | 3 | ||||
-rw-r--r-- | astroid/brain/brain_random.py | 5 | ||||
-rw-r--r-- | astroid/brain/brain_type.py | 7 | ||||
-rw-r--r-- | astroid/brain/brain_typing.py | 4 |
10 files changed, 47 insertions, 33 deletions
diff --git a/astroid/brain/brain_argparse.py b/astroid/brain/brain_argparse.py index 0457db66..28a5e859 100644 --- a/astroid/brain/brain_argparse.py +++ b/astroid/brain/brain_argparse.py @@ -2,12 +2,15 @@ # For details: https://github.com/PyCQA/astroid/blob/main/LICENSE # Copyright (c) https://github.com/PyCQA/astroid/blob/main/CONTRIBUTORS.txt +from __future__ import annotations + from astroid import arguments, inference_tip, nodes +from astroid.context import InferenceContext from astroid.exceptions import UseInferenceDefault from astroid.manager import AstroidManager -def infer_namespace(node, context=None): +def infer_namespace(node, context: InferenceContext | None = None): callsite = arguments.CallSite.from_call(node, context=context) if not callsite.keyword_arguments: # Cannot make sense of it. diff --git a/astroid/brain/brain_builtin_inference.py b/astroid/brain/brain_builtin_inference.py index 86785e0f..e2455e54 100644 --- a/astroid/brain/brain_builtin_inference.py +++ b/astroid/brain/brain_builtin_inference.py @@ -171,7 +171,7 @@ def register_builtin_transform(transform, builtin_name): an optional context. """ - def _transform_wrapper(node, context=None): + def _transform_wrapper(node, context: InferenceContext | None = None): result = transform(node, context=context) if result: if not result.parent: @@ -336,7 +336,7 @@ def _get_elts(arg, context): return items -def infer_dict(node, context=None): +def infer_dict(node, context: InferenceContext | None = None): """Try to infer a dict call to a Dict node. The function treats the following cases: @@ -379,7 +379,7 @@ def infer_dict(node, context=None): return value -def infer_super(node, context=None): +def infer_super(node, context: InferenceContext | None = None): """Understand super calls. There are some restrictions for what can be understood: @@ -458,7 +458,7 @@ def _infer_getattr_args(node, context): return obj, attr.value -def infer_getattr(node, context=None): +def infer_getattr(node, context: InferenceContext | None = None): """Understand getattr calls If one of the arguments is an Uninferable object, then the @@ -486,7 +486,7 @@ def infer_getattr(node, context=None): raise UseInferenceDefault -def infer_hasattr(node, context=None): +def infer_hasattr(node, context: InferenceContext | None = None): """Understand hasattr calls This always guarantees three possible outcomes for calling @@ -513,7 +513,7 @@ def infer_hasattr(node, context=None): return nodes.Const(True) -def infer_callable(node, context=None): +def infer_callable(node, context: InferenceContext | None = None): """Understand callable calls This follows Python's semantics, where an object @@ -571,7 +571,7 @@ def infer_property( return prop_func -def infer_bool(node, context=None): +def infer_bool(node, context: InferenceContext | None = None): """Understand bool calls.""" if len(node.args) > 1: # Invalid bool call. @@ -594,7 +594,7 @@ def infer_bool(node, context=None): return nodes.Const(bool_value) -def infer_type(node, context=None): +def infer_type(node, context: InferenceContext | None = None): """Understand the one-argument form of *type*.""" if len(node.args) != 1: raise UseInferenceDefault @@ -602,7 +602,7 @@ def infer_type(node, context=None): return helpers.object_type(node.args[0], context) -def infer_slice(node, context=None): +def infer_slice(node, context: InferenceContext | None = None): """Understand `slice` calls.""" args = node.args if not 0 < len(args) <= 3: @@ -629,7 +629,7 @@ def infer_slice(node, context=None): return slice_node -def _infer_object__new__decorator(node, context=None): +def _infer_object__new__decorator(node, context: InferenceContext | None = None): # Instantiate class immediately # since that's what @object.__new__ does return iter((node.instantiate_class(),)) @@ -650,7 +650,7 @@ def _infer_object__new__decorator_check(node) -> bool: return False -def infer_issubclass(callnode, context=None): +def infer_issubclass(callnode, context: InferenceContext | None = None): """Infer issubclass() calls :param nodes.Call callnode: an `issubclass` call @@ -693,12 +693,10 @@ def infer_issubclass(callnode, context=None): return nodes.Const(issubclass_bool) -def infer_isinstance(callnode, context=None): +def infer_isinstance(callnode, context: InferenceContext | None = None): """Infer isinstance calls :param nodes.Call callnode: an isinstance call - :param InferenceContext context: context for call - (currently unused but is a common interface for inference) :rtype nodes.Const: Boolean Const value of isinstance call :raises UseInferenceDefault: If the node cannot be inferred @@ -732,7 +730,7 @@ def infer_isinstance(callnode, context=None): return nodes.Const(isinstance_bool) -def _class_or_tuple_to_container(node, context=None): +def _class_or_tuple_to_container(node, context: InferenceContext | None = None): # Move inferences results into container # to simplify later logic # raises InferenceError if any of the inferences fall through @@ -757,7 +755,7 @@ def _class_or_tuple_to_container(node, context=None): return class_container -def infer_len(node, context=None): +def infer_len(node, context: InferenceContext | None = None): """Infer length calls :param nodes.Call node: len call to infer @@ -780,7 +778,7 @@ def infer_len(node, context=None): raise UseInferenceDefault(str(exc)) from exc -def infer_str(node, context=None): +def infer_str(node, context: InferenceContext | None = None): """Infer str() calls :param nodes.Call node: str() call to infer @@ -796,7 +794,7 @@ def infer_str(node, context=None): raise UseInferenceDefault(str(exc)) from exc -def infer_int(node, context=None): +def infer_int(node, context: InferenceContext | None = None): """Infer int() calls :param nodes.Call node: int() call to infer @@ -828,7 +826,7 @@ def infer_int(node, context=None): return nodes.Const(0) -def infer_dict_fromkeys(node, context=None): +def infer_dict_fromkeys(node, context: InferenceContext | None = None): """Infer dict.fromkeys :param nodes.Call node: dict.fromkeys() call to infer diff --git a/astroid/brain/brain_collections.py b/astroid/brain/brain_collections.py index 43304ecd..123096a2 100644 --- a/astroid/brain/brain_collections.py +++ b/astroid/brain/brain_collections.py @@ -2,9 +2,12 @@ # For details: https://github.com/PyCQA/astroid/blob/main/LICENSE # Copyright (c) https://github.com/PyCQA/astroid/blob/main/CONTRIBUTORS.txt +from __future__ import annotations + from astroid.brain.helpers import register_module_extender from astroid.builder import extract_node, parse from astroid.const import PY39_PLUS +from astroid.context import InferenceContext from astroid.exceptions import AttributeInferenceError from astroid.manager import AstroidManager from astroid.nodes.scoped_nodes import ClassDef @@ -106,7 +109,7 @@ def __class_getitem__(cls, item): """ -def easy_class_getitem_inference(node, context=None): +def easy_class_getitem_inference(node, context: InferenceContext | None = None): # Here __class_getitem__ exists but is quite a mess to infer thus # put an easy inference tip func_to_add = extract_node(CLASS_GET_ITEM_TEMPLATE) diff --git a/astroid/brain/brain_functools.py b/astroid/brain/brain_functools.py index 6c99c515..bff04e98 100644 --- a/astroid/brain/brain_functools.py +++ b/astroid/brain/brain_functools.py @@ -44,7 +44,9 @@ class LruWrappedModel(objectmodel.FunctionModel): ) class CacheInfoBoundMethod(BoundMethod): - def infer_call_result(self, caller, context=None): + def infer_call_result( + self, caller, context: InferenceContext | None = None + ): yield helpers.safe_infer(cache_info) return CacheInfoBoundMethod(proxy=self._instance, bound=self._instance) @@ -55,7 +57,7 @@ class LruWrappedModel(objectmodel.FunctionModel): return BoundMethod(proxy=node, bound=self._instance.parent.scope()) -def _transform_lru_cache(node, context=None) -> None: +def _transform_lru_cache(node, context: InferenceContext | None = None) -> None: # TODO: this is not ideal, since the node should be immutable, # but due to https://github.com/PyCQA/astroid/issues/354, # there's not much we can do now. diff --git a/astroid/brain/brain_namedtuple_enum.py b/astroid/brain/brain_namedtuple_enum.py index d96a6d86..53d89bcf 100644 --- a/astroid/brain/brain_namedtuple_enum.py +++ b/astroid/brain/brain_namedtuple_enum.py @@ -464,7 +464,7 @@ def infer_enum_class(node: nodes.ClassDef) -> nodes.ClassDef: return node -def infer_typing_namedtuple_class(class_node, context=None): +def infer_typing_namedtuple_class(class_node, context: InferenceContext | None = None): """Infer a subclass of typing.NamedTuple""" # Check if it has the corresponding bases annassigns_fields = [ @@ -497,7 +497,7 @@ def infer_typing_namedtuple_class(class_node, context=None): return iter((generated_class_node,)) -def infer_typing_namedtuple_function(node, context=None): +def infer_typing_namedtuple_function(node, context: InferenceContext | None = None): """ Starting with python3.9, NamedTuple is a function of the typing module. The class NamedTuple is build dynamically through a call to `type` during diff --git a/astroid/brain/brain_numpy_ndarray.py b/astroid/brain/brain_numpy_ndarray.py index e2429985..48db84eb 100644 --- a/astroid/brain/brain_numpy_ndarray.py +++ b/astroid/brain/brain_numpy_ndarray.py @@ -3,14 +3,17 @@ # Copyright (c) https://github.com/PyCQA/astroid/blob/main/CONTRIBUTORS.txt """Astroid hooks for numpy ndarray class.""" +from __future__ import annotations + from astroid.brain.brain_numpy_utils import numpy_supports_type_hints from astroid.builder import extract_node +from astroid.context import InferenceContext from astroid.inference_tip import inference_tip from astroid.manager import AstroidManager from astroid.nodes.node_classes import Attribute -def infer_numpy_ndarray(node, context=None): +def infer_numpy_ndarray(node, context: InferenceContext | None = None): ndarray = """ class ndarray(object): def __init__(self, shape, dtype=float, buffer=None, offset=0, diff --git a/astroid/brain/brain_numpy_utils.py b/astroid/brain/brain_numpy_utils.py index 91881955..fee62e18 100644 --- a/astroid/brain/brain_numpy_utils.py +++ b/astroid/brain/brain_numpy_utils.py @@ -7,6 +7,7 @@ from __future__ import annotations from astroid.builder import extract_node +from astroid.context import InferenceContext from astroid.nodes.node_classes import Attribute, Import, Name, NodeNG # Class subscript is available in numpy starting with version 1.20.0 @@ -34,7 +35,7 @@ def _get_numpy_version() -> tuple[str, str, str]: return ("0", "0", "0") -def infer_numpy_member(src, node, context=None): +def infer_numpy_member(src, node, context: InferenceContext | None = None): node = extract_node(src) return node.infer(context=context) diff --git a/astroid/brain/brain_random.py b/astroid/brain/brain_random.py index d2cd271c..ef3beb7e 100644 --- a/astroid/brain/brain_random.py +++ b/astroid/brain/brain_random.py @@ -2,9 +2,12 @@ # For details: https://github.com/PyCQA/astroid/blob/main/LICENSE # Copyright (c) https://github.com/PyCQA/astroid/blob/main/CONTRIBUTORS.txt +from __future__ import annotations + import random from astroid import helpers +from astroid.context import InferenceContext from astroid.exceptions import UseInferenceDefault from astroid.inference_tip import inference_tip from astroid.manager import AstroidManager @@ -38,7 +41,7 @@ def _clone_node_with_lineno(node, parent, lineno): return new_node -def infer_random_sample(node, context=None): +def infer_random_sample(node, context: InferenceContext | None = None): if len(node.args) != 2: raise UseInferenceDefault diff --git a/astroid/brain/brain_type.py b/astroid/brain/brain_type.py index eb8747ad..e261d081 100644 --- a/astroid/brain/brain_type.py +++ b/astroid/brain/brain_type.py @@ -20,8 +20,11 @@ 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 @@ -39,14 +42,12 @@ def _looks_like_type_subscript(node) -> bool: return False -def infer_type_sub(node, context=None): +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 - :param context: inference context - :type context: astroid.context.InferenceContext :return: the inferred node :rtype: nodes.NodeNG """ diff --git a/astroid/brain/brain_typing.py b/astroid/brain/brain_typing.py index e1aa13a1..ea22100c 100644 --- a/astroid/brain/brain_typing.py +++ b/astroid/brain/brain_typing.py @@ -278,7 +278,7 @@ def infer_typing_alias( try: res = next(node.args[0].infer(context=ctx)) except StopIteration as e: - raise InferenceError(node=node.args[0], context=context) from e + raise InferenceError(node=node.args[0], context=ctx) from e assign_name = node.parent.targets[0] @@ -359,7 +359,7 @@ def infer_special_alias( try: res = next(node.args[0].infer(context=ctx)) except StopIteration as e: - raise InferenceError(node=node.args[0], context=context) from e + raise InferenceError(node=node.args[0], context=ctx) from e assign_name = node.parent.targets[0] class_def = ClassDef( |