@@ -2829,3 +2829,40 @@ Traceback (most recent call last):
28292829 File "native.py", line 5, in __del__
28302830 raise Exception("e2")
28312831Exception: e2
2832+
2833+ [case testNonExtensionClassAttr]
2834+ from mypy_extensions import mypyc_attr
2835+
2836+ @mypyc_attr(non_extension_class=True)
2837+ class AnnontatedNonExtensionClass:
2838+ pass
2839+
2840+ class DerivedClass(AnnontatedNonExtensionClass):
2841+ pass
2842+
2843+ def test_function():
2844+ setattr(AnnontatedNonExtensionClass, 'attr_class', 5)
2845+ assert(hasattr(AnnontatedNonExtensionClass, 'attr_class') == True)
2846+ assert(getattr(AnnontatedNonExtensionClass, 'attr_class') == 5)
2847+ delattr(AnnontatedNonExtensionClass, 'attr_class')
2848+ assert(hasattr(AnnontatedNonExtensionClass, 'attr_class') == False)
2849+
2850+ inst = AnnontatedNonExtensionClass()
2851+ setattr(inst, 'attr_instance', 6)
2852+ assert(hasattr(inst, 'attr_instance') == True)
2853+ assert(getattr(inst, 'attr_instance') == 6)
2854+ delattr(inst, 'attr_instance')
2855+ assert(hasattr(inst, 'attr_instance') == False)
2856+
2857+ setattr(DerivedClass, 'attr_class', 5)
2858+ assert(hasattr(DerivedClass, 'attr_class') == True)
2859+ assert(getattr(DerivedClass, 'attr_class') == 5)
2860+ delattr(DerivedClass, 'attr_class')
2861+ assert(hasattr(DerivedClass, 'attr_class') == False)
2862+
2863+ derived_inst = DerivedClass()
2864+ setattr(derived_inst, 'attr_instance', 6)
2865+ assert(hasattr(derived_inst, 'attr_instance') == True)
2866+ assert(getattr(derived_inst, 'attr_instance') == 6)
2867+ delattr(derived_inst, 'attr_instance')
2868+ assert(hasattr(derived_inst, 'attr_instance') == False)
0 commit comments