summaryrefslogtreecommitdiff
path: root/astroid/nodes
diff options
context:
space:
mode:
authorJacob Walls <jacobtylerwalls@gmail.com>2023-05-07 20:54:18 -0400
committerGitHub <noreply@github.com>2023-05-07 20:54:18 -0400
commit900c5467b80d2b5d531990d3da1d1666e9edb0f0 (patch)
treebe98c1a80bd8d7102ff7ddc60a94d10c2e7e6c52 /astroid/nodes
parent0740a0dd5e9cb48bb1a400aded498e4db1fcfca9 (diff)
downloadastroid-git-900c5467b80d2b5d531990d3da1d1666e9edb0f0.tar.gz
Improve typing of inference functions (#2166)
Co-authored-by: Daniƫl van Noord <13665637+DanielNoord@users.noreply.github.com>
Diffstat (limited to 'astroid/nodes')
-rw-r--r--astroid/nodes/node_ng.py21
1 files changed, 18 insertions, 3 deletions
diff --git a/astroid/nodes/node_ng.py b/astroid/nodes/node_ng.py
index de5dec77..31c842ee 100644
--- a/astroid/nodes/node_ng.py
+++ b/astroid/nodes/node_ng.py
@@ -5,6 +5,7 @@
from __future__ import annotations
import pprint
+import sys
import warnings
from collections.abc import Generator, Iterator
from functools import cached_property
@@ -37,6 +38,12 @@ from astroid.nodes.const import OP_PRECEDENCE
from astroid.nodes.utils import Position
from astroid.typing import InferenceErrorInfo, InferenceResult, InferFn
+if sys.version_info >= (3, 11):
+ from typing import Self
+else:
+ from typing_extensions import Self
+
+
if TYPE_CHECKING:
from astroid import nodes
@@ -80,7 +87,7 @@ class NodeNG:
_other_other_fields: ClassVar[tuple[str, ...]] = ()
"""Attributes that contain AST-dependent fields."""
# instance specific inference function infer(node, context)
- _explicit_inference: InferFn | None = None
+ _explicit_inference: InferFn[Self] | None = None
def __init__(
self,
@@ -137,9 +144,17 @@ class NodeNG:
# explicit_inference is not bound, give it self explicitly
try:
if context is None:
- yield from self._explicit_inference(self, context, **kwargs)
+ yield from self._explicit_inference(
+ self, # type: ignore[arg-type]
+ context,
+ **kwargs,
+ )
return
- for result in self._explicit_inference(self, context, **kwargs):
+ for result in self._explicit_inference(
+ self, # type: ignore[arg-type]
+ context,
+ **kwargs,
+ ):
context.nodes_inferred += 1
yield result
return