gh-133037: Add test for shadowing __annotate__ (#133084)

This commit is contained in:
Jelle Zijlstra 2025-05-02 19:42:49 -07:00 committed by GitHub
parent 245cd6c532
commit 345fdce1d0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 19 additions and 0 deletions

View File

@ -327,6 +327,25 @@ def check_annotations(self, f):
f.__annotations__ = {"z": 43}
self.assertIs(f.__annotate__, None)
def test_user_defined_annotate(self):
class X:
a: int
def __annotate__(format):
return {"a": str}
self.assertEqual(X.__annotate__(annotationlib.Format.VALUE), {"a": str})
self.assertEqual(annotationlib.get_annotations(X), {"a": str})
mod = build_module(
"""
a: int
def __annotate__(format):
return {"a": str}
"""
)
self.assertEqual(mod.__annotate__(annotationlib.Format.VALUE), {"a": str})
self.assertEqual(annotationlib.get_annotations(mod), {"a": str})
class DeferredEvaluationTests(unittest.TestCase):
def test_function(self):