gh-62534: Document that three-argument type() does not call __prepare__ (GH-154028)

encukou <[email protected]>
Newsgroups gmane.comp.python.cvs
Message-ID <[email protected]>
https://github.com/python/cpython/commit/5625b187ab528e10dcaa21726a7c95b110d97190
commit: 5625b187ab528e10dcaa21726a7c95b110d97190
branch: main
author: soreavis <[email protected]>
committer: encukou <[email protected]>
date: 2026-07-19T17:31:59+02:00
summary:

gh-62534: Document that three-argument type() does not call __prepare__ (GH-154028)

The three-argument form of type() skips the metaclass __prepare__
method, which is called by the class statement machinery rather than
by the metaclass call itself. Say so in the type() entry and point to
types.new_class() for dynamic class creation with the appropriate
metaclass, as directed in the issue thread.

files:
M Doc/library/functions.rst

diff --git a/Doc/library/functions.rst b/Doc/library/functions.rst
index 8dbebf7048b583..f45ab397e93693 100644
--- a/Doc/library/functions.rst
+++ b/Doc/library/functions.rst
@@ -2179,6 +2179,11 @@ are always available.  They are listed here in alphabetical order.
    in the same way that keywords in a class
    definition (besides *metaclass*) would.
 
+   Unlike a :keyword:`class` statement, the three argument form does not
+   call the metaclass ``__prepare__`` method (see :ref:`prepare`).  Use
+   :func:`types.new_class` to dynamically create a class using the
+   appropriate metaclass.
+
    See also :ref:`class-customization`.
 
    .. versionchanged:: 3.6

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.