Python 3.14+annotationlibфункция
annotationlib.annotations_to_string()
строковое представление
Превращает словарь уже вычисленных аннотаций в словарь строк, как в формате STRING; строки остаются как есть.
Синтаксис
annotationlib.annotations_to_string(annotations)
Это помощник для собственной функции __annotate__, которой надо поддержать формат STRING, а исходного текста нет. Значения переводятся через type_repr, поэтому int становится 'int', а не "<class 'int'>", как дал бы str() или repr(). Значение, уже бывшее строкой, остаётся без кавычек. Ссылки вперёд она не спасает: на вход идут готовые объекты, так что для «аннотации как в исходнике» нужен get_annotations(..., format=Format.STRING).
Примеры
# Python 3.14+
from annotationlib import annotations_to_string
ann = {'a': int, 'b': list[str], 'c': 'Later'}
print(annotations_to_string(ann)) # → {'a': 'int', 'b': 'list[str]', 'c': 'Later'}
print({k: repr(v) for k, v in ann.items()}['a']) # → <class 'int'> — repr так не умеет
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности