https://github.com/python/cpython/commit/345fdce1d024f238c53bc355e90ec1c17e12ec20
commit: 345fdce1d024f238c53bc355e90ec1c17e12ec20
branch: main
author: Jelle Zijlstra <jelle.zijls...@gmail.com>
committer: JelleZijlstra <jelle.zijls...@gmail.com>
date: 2025-05-02T19:42:49-07:00
summary:

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

files:
M Lib/test/test_type_annotations.py

diff --git a/Lib/test/test_type_annotations.py 
b/Lib/test/test_type_annotations.py
index b72d3dbe516974..2c886bb6d362fa 100644
--- a/Lib/test/test_type_annotations.py
+++ b/Lib/test/test_type_annotations.py
@@ -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):

_______________________________________________
Python-checkins mailing list -- python-checkins@python.org
To unsubscribe send an email to python-checkins-le...@python.org
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: arch...@mail-archive.com

Reply via email to