# Issue with accessing annotations as documented in 3.14+

**URL:** <https://discuss.python.org/t/issue-with-accessing-annotations-as-documented-in-3-14/104844>\
**Category:** Python Help\
**Created:** [November 12, 2025, 9:52pm UTC](https://discuss.python.org/t/issue-with-accessing-annotations-as-documented-in-3-14/104844 "2025-11-12T21:52:41Z")\
**Posts on this page:** 1\
**Showing post:** 13

<div class="post-metadata">

**Author:** ![DavidCEllis](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/davidcellis/32/9789_2.png) [@DavidCEllis](https://discuss.python.org/u/DavidCEllis)\
**Post date:** [November 13, 2025, 9:36am UTC](https://discuss.python.org/t/issue-with-accessing-annotations-as-documented-in-3-14/104844/13 "2025-11-13T09:36:36Z")

</div>

Removing ` __annotate__ ` was a change in one of the pre-releases (looking at the date I think the first beta?). It was done to resolve this issue: [[3.14] annotationlib - calling `get_annotations` on instances gets an unexpected error · Issue #132261 · python/cpython · GitHub](https://github.com/python/cpython/issues/132261)

It has always been the case for 3.14 that the generated annotate functions don’t support `Format.STRING` or `Format.FORWARDREF`. I think `Format.VALUE_WITH_FAKE_GLOBALS` was added in a pre-release and changed the enum values (so you can’t rely on the actual integer values for the enum either).

* * *

None of this is to say I’m particularly happy with the state of the current implementation.

In cases where you have to _create_ an ` __annotate__ ` function you either have to recreate any logic used to collect the annotations you plan to use _within_ the new annotate function ([see this implementation for dataclasses](https://github.com/python/cpython/blob/781cc68c3c814e46e6a74c3a6a32e0f9f8f7eb11/Lib/dataclasses.py#L536-L571)), or you give up and put `VALUE` or `STRING` annotations in ` __annotations__ ` and assume people already have tooling to deal with string annotations (what I did for my own dataclass-like).

I posted [one idea](https://discuss.python.org/t/add-a-format-deferred-option-for-pep-649-749-annotations/104001) as an attempt to try to improve this situation but there was no interest so I can only assume that needing to generate these is rare, and tools that _should_ be doing so may not have got around to it yet. I know `attrs` currently just sticks `FORWARDREF` annotations in ` __annotations__ ` which is slightly better than what `dataclasses` was doing.

---

_[View the full topic](https://discuss.python.org/t/issue-with-accessing-annotations-as-documented-in-3-14/104844)._
