summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniël van Noord <13665637+DanielNoord@users.noreply.github.com>2023-04-30 23:24:02 +0200
committerDaniël van Noord <13665637+DanielNoord@users.noreply.github.com>2023-05-01 12:41:04 +0200
commitfaea71172f0a13482d23861de0c53cf101b0d108 (patch)
tree0eeb2bfe36c58dab26de53e1dd35dada5ef34f7e
parent4fe752e65a33ad062a3e08586b28fc1ad6188700 (diff)
downloadastroid-git-faea71172f0a13482d23861de0c53cf101b0d108.tar.gz
Allow passing ``UninferableBase`` to ``safe_infer``
-rw-r--r--astroid/helpers.py5
-rw-r--r--tests/test_helpers.py5
2 files changed, 9 insertions, 1 deletions
diff --git a/astroid/helpers.py b/astroid/helpers.py
index 63275813..d1ee215c 100644
--- a/astroid/helpers.py
+++ b/astroid/helpers.py
@@ -156,13 +156,16 @@ def object_issubclass(node, class_or_seq, context: InferenceContext | None = Non
def safe_infer(
- node: nodes.NodeNG | bases.Proxy, context: InferenceContext | None = None
+ node: nodes.NodeNG | bases.Proxy | util.UninferableBase,
+ context: InferenceContext | None = None,
) -> InferenceResult | None:
"""Return the inferred value for the given node.
Return None if inference failed or if there is some ambiguity (more than
one node has been inferred).
"""
+ if isinstance(node, util.UninferableBase):
+ return node
try:
inferit = node.infer(context=context)
value = next(inferit)
diff --git a/tests/test_helpers.py b/tests/test_helpers.py
index 398ea1d3..5fdadc23 100644
--- a/tests/test_helpers.py
+++ b/tests/test_helpers.py
@@ -258,3 +258,8 @@ class TestHelpers(unittest.TestCase):
builtin_type = self._extract("type")
self.assertTrue(helpers.is_supertype(builtin_type, cls_a))
self.assertTrue(helpers.is_subtype(cls_a, builtin_type))
+
+
+def test_uninferable_for_safe_infer() -> None:
+ uninfer = util.Uninferable
+ assert helpers.safe_infer(util.Uninferable) == uninfer