diff options
author | Daniël van Noord <13665637+DanielNoord@users.noreply.github.com> | 2023-04-30 23:24:02 +0200 |
---|---|---|
committer | Daniël van Noord <13665637+DanielNoord@users.noreply.github.com> | 2023-05-01 12:41:04 +0200 |
commit | faea71172f0a13482d23861de0c53cf101b0d108 (patch) | |
tree | 0eeb2bfe36c58dab26de53e1dd35dada5ef34f7e | |
parent | 4fe752e65a33ad062a3e08586b28fc1ad6188700 (diff) | |
download | astroid-git-faea71172f0a13482d23861de0c53cf101b0d108.tar.gz |
Allow passing ``UninferableBase`` to ``safe_infer``
-rw-r--r-- | astroid/helpers.py | 5 | ||||
-rw-r--r-- | tests/test_helpers.py | 5 |
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 |