From faea71172f0a13482d23861de0c53cf101b0d108 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dani=C3=ABl=20van=20Noord?= <13665637+DanielNoord@users.noreply.github.com> Date: Sun, 30 Apr 2023 23:24:02 +0200 Subject: Allow passing ``UninferableBase`` to ``safe_infer`` --- astroid/helpers.py | 5 ++++- tests/test_helpers.py | 5 +++++ 2 files changed, 9 insertions(+), 1 deletion(-) 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 -- cgit v1.2.1