Repository navigation
Closed
Labels
3.14bugs and security fixesbugs and security fixes3.15bugs and security fixesbugs and security fixesdocsDocumentation in the Doc dirDocumentation in the Doc dirtopic-typing
Description
Bug report
Bug description:
This code works in 3.13, but fails in 3.14:
from dataclasses import dataclass
from typing import get_type_hints
@dataclass
class MyHintedClass:
my_attr: int = 1
def __init__(self):
self.hints = get_type_hints(self)
my_class = MyHintedClass()
print(my_class.hints)Failure in 3.14:
~\py\pybug: uv run --python=3.14 python main.py
Traceback (most recent call last):
File "C:\Users\bfrandeen\py\pybug\main.py", line 13, in <module>
my_class = MyHintedClass()
File "C:\Users\bfrandeen\py\pybug\main.py", line 10, in __init__
self.hints = get_type_hints(self)
~~~~~~~~~~~~~~^^^^^^
File "C:\Users\bfrandeen\AppData\Roaming\uv\python\cpython-3.14.2-windows-x86_64-none\Lib\typing.py", line 2401, in get_type_hints
hints = _lazy_annotationlib.get_annotations(obj, format=format)
File "C:\Users\bfrandeen\AppData\Roaming\uv\python\cpython-3.14.2-windows-x86_64-none\Lib\annotationlib.py", line 996, in get_annotations
raise TypeError(f"{obj!r} does not have annotations")
TypeError: MyHintedClass(my_attr=1) does not have annotationsWorks in older versions:
~\py\pybug: uv run --python=3.13 python main.py
Using CPython 3.13.2
Removed virtual environment at: .venv
Creating virtual environment at: .venv
Installed 6 packages in 190ms
{'my_attr': <class 'int'>}CPython versions tested on:
3.14, 3.13
Operating systems tested on:
Windows, Linux
Linked PRs
Metadata
Metadata
Assignees
Labels
3.14bugs and security fixesbugs and security fixes3.15bugs and security fixesbugs and security fixesdocsDocumentation in the Doc dirDocumentation in the Doc dirtopic-typing
Projects
- StatusShow more project fieldsTodo
Activity
JelleZijlstra commentedon Jan 23, 2026
Previously
get_type_hints()worked on instances by accident; we removed that support because it was not reliable and it was never documented. You should instead use e.g.get_type_hints(type(self)), which will work on all versions.I'd be open to adding a note in the docs about this at https://docs.python.org/3.14/library/typing.html#typing.get_type_hints though.
pythongh-144190: Clarify get_type_hints() instance behavior in docs
gh-144190: Clarify get_type_hints() instance behavior in docs (#144831)
pythongh-144190: Clarify get_type_hints() instance behavior in docs (p…
[3.14] gh-144190: Clarify get_type_hints() instance behavior in docs (G…
pythongh-144190: Clarify get_type_hints() instance behavior in docs (p…
pythongh-144190: Clarify get_type_hints() instance behavior in docs (p…