Bug report
Bug description:
If a ForwardRef object needs internal names to store values of known objects these internal names currently replace the type_repr of the objects they represent when the ForwardRef is evaluated as Format.STRING or when looking at the repr.
If it was just the repr I'd probably put this as a feature request but as it makes the STRING format arguably 'wrong' I think it should be considered a bug.
from annotationlib import get_annotations, Format class Example: a: ref | str ann = get_annotations(Example, format=Format.FORWARDREF)['a'] print(ann) print(ann.evaluate(format=Format.STRING))
On 3.14 or Main:
ForwardRef('ref | __annotationlib_name_1__', is_class=True, owner=<class '__main__.Example'>) ref | __annotationlib_name_1__
Expected:
ForwardRef('ref | str', is_class=True, owner=<class '__main__.Example'>) ref | str
CPython versions tested on:
3.14, CPython main branch
Operating systems tested on:
No response