diff options
author | Jacob Walls <jacobtylerwalls@gmail.com> | 2023-05-07 20:54:18 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-07 20:54:18 -0400 |
commit | 900c5467b80d2b5d531990d3da1d1666e9edb0f0 (patch) | |
tree | be98c1a80bd8d7102ff7ddc60a94d10c2e7e6c52 /astroid/nodes | |
parent | 0740a0dd5e9cb48bb1a400aded498e4db1fcfca9 (diff) | |
download | astroid-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.py | 21 |
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 |