del C.__annotations__
self.assertFalse("__annotations__" in C.__dict__)
+ def test_del_annotations_and_annotate(self):
+ # gh-132285
+ called = False
+ class A:
+ def __annotate__(format):
+ nonlocal called
+ called = True
+ return {'a': int}
+
+ self.assertEqual(A.__annotations__, {'a': int})
+ self.assertTrue(called)
+ self.assertTrue(A.__annotate__)
+
+ del A.__annotations__
+ called = False
+
+ self.assertEqual(A.__annotations__, {})
+ self.assertFalse(called)
+ self.assertIs(A.__annotate__, None)
+
def test_descriptor_still_works(self):
class C:
def __init__(self, name=None, bases=None, d=None):
if (result < 0) {
Py_DECREF(dict);
return -1;
- }
- else if (result == 0) {
+ } else { // result can be 0 or 1
if (PyDict_Pop(dict, &_Py_ID(__annotate__), NULL) < 0) {
PyType_Modified(type);
Py_DECREF(dict);