wrapper.__doc__ = getattr(user_function, '__doc__')
wrapper.__name__ = getattr(user_function, '__name__')
wrapper.__qualname__ = getattr(user_function, '__qualname__')
- wrapper.__annotations__ = getattr(user_function, '__annotations__', {})
+ wrapper.__annotate__ = getattr(user_function, '__annotate__', None)
wrapper.__type_params__ = getattr(user_function, '__type_params__', ())
wrapper.__wrapped__ = user_function
return wrapper
Nick Mathewson
"""
+import annotationlib
import sys
import os
import shutil
import unittest
import textwrap
-from test.support import verbose
+from test.support import verbose, EqualToForwardRef
from test.support.os_helper import create_empty_file
from reprlib import repr as r # Don't shadow builtin repr
from reprlib import Repr
self.assertEqual(type_params[0].__name__, 'T')
self.assertEqual(type_params[0].__bound__, str)
+ def test_annotations(self):
+ class My:
+ @recursive_repr()
+ def __repr__(self, default: undefined = ...):
+ return default
+
+ annotations = annotationlib.get_annotations(
+ My.__repr__, format=annotationlib.Format.FORWARDREF
+ )
+ self.assertEqual(
+ annotations,
+ {'default': EqualToForwardRef("undefined", owner=My.__repr__)}
+ )
+
if __name__ == "__main__":
unittest.main()