Skip to content

get_type_hints fails for dataclass in 3.14 #144190

Description

@bfrandeen

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 annotations

Works 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

Activity

  1. JelleZijlstra commented on Jan 23, 2026

    @JelleZijlstra
    Member

    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.

  2. added
    docsDocumentation in the Doc dir
    3.14bugs and security fixes
    3.15bugs and security fixes
    on Jan 23, 2026
  3. removed
    type-bugAn unexpected behavior, bug, or error
    on Jan 23, 2026
  4. added a commit that references this issue on Feb 15, 2026
  5. added a commit that references this issue on Feb 26, 2026
  6. added a commit that references this issue on Feb 26, 2026
  7. added a commit that references this issue on Feb 26, 2026
  8. added a commit that references this issue on Feb 28, 2026
  9. added a commit that references this issue on Apr 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    3.14bugs and security fixes3.15bugs and security fixesdocsDocumentation in the Doc dirtopic-typing

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions