diff options
author | Daniël van Noord <13665637+DanielNoord@users.noreply.github.com> | 2023-05-07 23:48:02 +0200 |
---|---|---|
committer | Daniël van Noord <13665637+DanielNoord@users.noreply.github.com> | 2023-05-08 07:15:46 +0200 |
commit | fb238f11210238dca01f321d65307639b1248594 (patch) | |
tree | 88c92246213873303455958874718b3000356b74 | |
parent | c792bc2b65f3206aea048631275b9906c005c03f (diff) | |
download | astroid-git-fb238f11210238dca01f321d65307639b1248594.tar.gz |
Fix some typing in ``helpers.py``
-rw-r--r-- | astroid/brain/brain_builtin_inference.py | 14 | ||||
-rw-r--r-- | astroid/helpers.py | 42 |
2 files changed, 28 insertions, 28 deletions
diff --git a/astroid/brain/brain_builtin_inference.py b/astroid/brain/brain_builtin_inference.py index 2586ae01..6da11eda 100644 --- a/astroid/brain/brain_builtin_inference.py +++ b/astroid/brain/brain_builtin_inference.py @@ -22,6 +22,7 @@ from astroid.exceptions import ( ) from astroid.manager import AstroidManager from astroid.nodes import scoped_nodes +from astroid.typing import InferenceResult OBJECT_DUNDER_NEW = "object.__new__" @@ -707,12 +708,12 @@ def infer_issubclass(callnode, context: InferenceContext | None = None): return nodes.Const(issubclass_bool) -def infer_isinstance(callnode, context: InferenceContext | None = None): +def infer_isinstance( + callnode: nodes.Call, context: InferenceContext | None = None +) -> nodes.Const: """Infer isinstance calls. :param nodes.Call callnode: an isinstance call - :rtype nodes.Const: Boolean Const value of isinstance call - :raises UseInferenceDefault: If the node cannot be inferred """ call = arguments.CallSite.from_call(callnode, context=context) @@ -744,7 +745,9 @@ def infer_isinstance(callnode, context: InferenceContext | None = None): return nodes.Const(isinstance_bool) -def _class_or_tuple_to_container(node, context: InferenceContext | None = None): +def _class_or_tuple_to_container( + node: InferenceResult, context: InferenceContext | None = None +) -> list[InferenceResult]: # Move inferences results into container # to simplify later logic # raises InferenceError if any of the inferences fall through @@ -761,9 +764,6 @@ def _class_or_tuple_to_container(node, context: InferenceContext | None = None): ] except StopIteration as e: raise InferenceError(node=node, context=context) from e - class_container = [ - klass_node for klass_node in class_container if klass_node is not None - ] else: class_container = [node_infer] return class_container diff --git a/astroid/helpers.py b/astroid/helpers.py index d1ee215c..3c5d8e5f 100644 --- a/astroid/helpers.py +++ b/astroid/helpers.py @@ -28,7 +28,8 @@ def _build_proxy_class(cls_name: str, builtins: nodes.Module) -> nodes.ClassDef: def _function_type( - function: nodes.Lambda | bases.UnboundMethod, builtins: nodes.Module + function: nodes.Lambda | nodes.FunctionDef | bases.UnboundMethod, + builtins: nodes.Module, ) -> nodes.ClassDef: if isinstance(function, (scoped_nodes.Lambda, scoped_nodes.FunctionDef)): if function.root().name == "builtins": @@ -96,20 +97,19 @@ def object_type( def _object_type_is_subclass( - obj_type, class_or_seq, context: InferenceContext | None = None -): - if not isinstance(class_or_seq, (tuple, list)): - class_seq = (class_or_seq,) - else: - class_seq = class_or_seq - - if isinstance(obj_type, util.UninferableBase): + obj_type: InferenceResult | None, + class_or_seq: list[InferenceResult], + context: InferenceContext | None = None, +) -> util.UninferableBase | bool: + if isinstance(obj_type, util.UninferableBase) or not isinstance( + obj_type, nodes.ClassDef + ): return util.Uninferable # Instances are not types class_seq = [ item if not isinstance(item, bases.Instance) else util.Uninferable - for item in class_seq + for item in class_or_seq ] # strict compatibility with issubclass # issubclass(type, (object, 1)) evaluates to true @@ -124,13 +124,13 @@ def _object_type_is_subclass( return False -def object_isinstance(node, class_or_seq, context: InferenceContext | None = None): +def object_isinstance( + node: InferenceResult, + class_or_seq: list[InferenceResult], + context: InferenceContext | None = None, +) -> util.UninferableBase | bool: """Check if a node 'isinstance' any node in class_or_seq. - :param node: A given node - :param class_or_seq: Union[nodes.NodeNG, Sequence[nodes.NodeNG]] - :rtype: bool - :raises AstroidTypeError: if the given ``classes_or_seq`` are not types """ obj_type = object_type(node, context) @@ -139,13 +139,13 @@ def object_isinstance(node, class_or_seq, context: InferenceContext | None = Non return _object_type_is_subclass(obj_type, class_or_seq, context=context) -def object_issubclass(node, class_or_seq, context: InferenceContext | None = None): +def object_issubclass( + node: nodes.NodeNG, + class_or_seq: list[InferenceResult], + context: InferenceContext | None = None, +) -> util.UninferableBase | bool: """Check if a type is a subclass of any node in class_or_seq. - :param node: A given node - :param class_or_seq: Union[Nodes.NodeNG, Sequence[nodes.NodeNG]] - :rtype: bool - :raises AstroidTypeError: if the given ``classes_or_seq`` are not types :raises AstroidError: if the type of the given node cannot be inferred or its type's mro doesn't work @@ -270,7 +270,7 @@ def object_len(node, context: InferenceContext | None = None): if ( isinstance(node_frame, scoped_nodes.FunctionDef) and node_frame.name == "__len__" - and hasattr(inferred_node, "_proxied") + and isinstance(inferred_node, bases.Proxy) and inferred_node._proxied == node_frame.parent ): message = ( |