From 1a4cf5569d3bb808d635865fc51fb65cb7633114 Mon Sep 17 00:00:00 2001 From: Artem Yurchenko Date: Tue, 10 Sep 2024 08:56:52 -0700 Subject: [PATCH] fixup! fix construction of in-place properties --- astroid/brain/brain_builtin_inference.py | 6 ++++-- tests/brain/test_builtin.py | 5 +++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/astroid/brain/brain_builtin_inference.py b/astroid/brain/brain_builtin_inference.py index 0126e3b16c..c60510d0b9 100644 --- a/astroid/brain/brain_builtin_inference.py +++ b/astroid/brain/brain_builtin_inference.py @@ -648,8 +648,10 @@ def infer_property( name="", lineno=node.lineno, col_offset=node.col_offset, - # ↓ semantically, the definition of this property isn't within - # node.frame (or anywhere else, really) + # ↓ semantically, the definition of the class of property isn't within + # node.frame. It's somewhere in the builtins module, but we are special + # casing it for each "property()" call, so we are making up the + # definition on the spot, ad-hoc. parent=AstroidManager().adhoc_module, ) prop_func.postinit( diff --git a/tests/brain/test_builtin.py b/tests/brain/test_builtin.py index 2c726f31e9..268943d67a 100644 --- a/tests/brain/test_builtin.py +++ b/tests/brain/test_builtin.py @@ -28,8 +28,9 @@ def getter(): self.assertIsInstance(class_parent, nodes.ClassDef) self.assertFalse( any( - isinstance(getter, objects.Property) - for getter in class_parent.locals["getter"] + isinstance(def_, objects.Property) + for def_ in def_list + for def_list in class_parent.locals.values() ) ) self.assertTrue(hasattr(inferred_property, "args"))