]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.12] gh-123242: Note that type.__annotations__ may not exist (GH-124557) (#124562)
authorJelle Zijlstra <jelle.zijlstra@gmail.com>
Wed, 25 Sep 2024 23:27:10 +0000 (16:27 -0700)
committerGitHub <noreply@github.com>
Wed, 25 Sep 2024 23:27:10 +0000 (16:27 -0700)
Closes GH-123242. The real criterion is that the attribute does not
exist on heap types, but I don't think we should discuss heap vs.
static types in the language reference.
(cherry picked from commit 99b23c64de301c9e77add6b0d8e60118ef807840)

Doc/reference/datamodel.rst

index ae2b8fcaf87939a586a084ddfb020b82b29cd347..5dcdb7bd8dd414968aad08d3d9fa7e3d5efb3948 100644 (file)
@@ -1009,6 +1009,14 @@ Special attributes
        collected during class body execution. For best practices on working
        with :attr:`!__annotations__`, please see :ref:`annotations-howto`.
 
+       .. caution::
+
+          Accessing the :attr:`!__annotations__` attribute of a class
+          object directly may yield incorrect results in the presence of
+          metaclasses. In addition, the attribute may not exist for
+          some classes. Use :func:`inspect.get_annotations` to
+          retrieve class annotations safely.
+
    * - .. attribute:: type.__type_params__
      - A :class:`tuple` containing the :ref:`type parameters <type-params>` of
        a :ref:`generic class <generic-classes>`.