bpo-43901: Lazy-create an empty annotations dict in all unannotated user classes and modules (#25623)

Change class and module objects to lazy-create empty annotations dicts on demand.  The annotations dicts are stored in the object's `__dict__` for backwards compatibility.
This commit is contained in:
larryhastings 2021-04-29 20:09:08 -07:00 committed by GitHub
parent dbe60ee09d
commit 2f2b69855d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 308 additions and 8 deletions

View file

@ -31,10 +31,9 @@ class OpcodeTest(unittest.TestCase):
except OSError:
pass
def test_no_annotations_if_not_needed(self):
def test_default_annotations_exist(self):
class C: pass
with self.assertRaises(AttributeError):
C.__annotations__
self.assertEqual(C.__annotations__, {})
def test_use_existing_annotations(self):
ns = {'__annotations__': {1: 2}}