summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniël van Noord <13665637+DanielNoord@users.noreply.github.com>2023-05-07 23:48:02 +0200
committerDaniël van Noord <13665637+DanielNoord@users.noreply.github.com>2023-05-08 07:15:46 +0200
commitfb238f11210238dca01f321d65307639b1248594 (patch)
tree88c92246213873303455958874718b3000356b74
parentc792bc2b65f3206aea048631275b9906c005c03f (diff)
downloadastroid-git-fb238f11210238dca01f321d65307639b1248594.tar.gz
Fix some typing in ``helpers.py``
-rw-r--r--astroid/brain/brain_builtin_inference.py14
-rw-r--r--astroid/helpers.py42
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 = (