diff options
author | Daniël van Noord <13665637+DanielNoord@users.noreply.github.com> | 2022-06-21 19:27:42 +0200 |
---|---|---|
committer | Daniël van Noord <13665637+DanielNoord@users.noreply.github.com> | 2022-06-21 20:09:33 +0200 |
commit | 0da2321c2ae4f86eb9e8001c17a40a5021e5808d (patch) | |
tree | a1edd3c9e8511ae840999d33d524cbfdbb2d4fd9 /astroid/inference.py | |
parent | 6e36cd88ebc181a35e148b6418dd6b898e7b361a (diff) | |
download | astroid-git-0da2321c2ae4f86eb9e8001c17a40a5021e5808d.tar.gz |
Fix typing of ``Dict`` with ``SuccessfulInferenceResult``
Diffstat (limited to 'astroid/inference.py')
-rw-r--r-- | astroid/inference.py | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/astroid/inference.py b/astroid/inference.py index 46b1109e..6ae5c923 100644 --- a/astroid/inference.py +++ b/astroid/inference.py @@ -33,7 +33,7 @@ from astroid.exceptions import ( ) from astroid.interpreter import dunder_lookup from astroid.manager import AstroidManager -from astroid.typing import InferenceErrorInfo, InferenceResult +from astroid.typing import InferenceErrorInfo, SuccessfulInferenceResult if TYPE_CHECKING: from astroid.objects import Property @@ -133,9 +133,9 @@ def infer_map( def _update_with_replacement( - lhs_dict: dict[InferenceResult, InferenceResult], - rhs_dict: dict[InferenceResult, InferenceResult], -) -> dict[InferenceResult, InferenceResult]: + lhs_dict: dict[SuccessfulInferenceResult, SuccessfulInferenceResult], + rhs_dict: dict[SuccessfulInferenceResult, SuccessfulInferenceResult], +) -> dict[SuccessfulInferenceResult, SuccessfulInferenceResult]: """Delete nodes that equate to duplicate keys Since an astroid node doesn't 'equal' another node with the same value, @@ -160,9 +160,9 @@ def _update_with_replacement( def _infer_map( node: nodes.Dict, context: InferenceContext | None -) -> dict[InferenceResult, InferenceResult]: +) -> dict[SuccessfulInferenceResult, SuccessfulInferenceResult]: """Infer all values based on Dict.items""" - values: dict[InferenceResult, InferenceResult] = {} + values: dict[SuccessfulInferenceResult, SuccessfulInferenceResult] = {} for name, value in node.items: if isinstance(name, nodes.DictUnpack): double_starred = helpers.safe_infer(value, context) @@ -174,10 +174,11 @@ def _infer_map( values = _update_with_replacement(values, unpack_items) else: key = helpers.safe_infer(name, context=context) - value = helpers.safe_infer(value, context=context) - if any(not elem for elem in (key, value)): + safe_value = helpers.safe_infer(value, context=context) + if any(not elem for elem in (key, safe_value)): raise InferenceError(node=node, context=context) - values = _update_with_replacement(values, {key: value}) + # safe_value is SuccessfulInferenceResult as bool(Uninferable) == False + values = _update_with_replacement(values, {key: safe_value}) # type: ignore[dict-item] return values |