summaryrefslogtreecommitdiffstats
path: root/Include/structseq.h
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2021-04-30 10:46:15 (GMT)
committerGitHub <noreply@github.com>2021-04-30 10:46:15 (GMT)
commit3bb09947ec4837de75532e21dd4bd25db0a1f1b7 (patch)
tree46469716b18eda1c8af7c311b6187fda39a146c1 /Include/structseq.h
parentb73b5fb9ea08156991a065c1696e8d8cf7622482 (diff)
downloadcpython-3bb09947ec4837de75532e21dd4bd25db0a1f1b7.zip
cpython-3bb09947ec4837de75532e21dd4bd25db0a1f1b7.tar.gz
cpython-3bb09947ec4837de75532e21dd4bd25db0a1f1b7.tar.bz2
bpo-43916: Add Py_TPFLAGS_DISALLOW_INSTANTIATION type flag (GH-25721)
Add a new Py_TPFLAGS_DISALLOW_INSTANTIATION type flag to disallow creating type instances: set tp_new to NULL and don't create the "__new__" key in the type dictionary. The flag is set automatically on static types if tp_base is NULL or &PyBaseObject_Type and tp_new is NULL. Use the flag on the following types: * _curses.ncurses_version type * _curses_panel.panel * _tkinter.Tcl_Obj * _tkinter.tkapp * _tkinter.tktimertoken * _xxsubinterpretersmodule.ChannelID * sys.flags type * sys.getwindowsversion() type * sys.version_info type Update MyStr example in the C API documentation to use Py_TPFLAGS_DISALLOW_INSTANTIATION. Add _PyStructSequence_InitType() function to create a structseq type with the Py_TPFLAGS_DISALLOW_INSTANTIATION flag set. type_new() calls _PyType_CheckConsistency() at exit.
Diffstat (limited to 'Include/structseq.h')
-rw-r--r--Include/structseq.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/Include/structseq.h b/Include/structseq.h
index 8f51c89..af3af41 100644
--- a/Include/structseq.h
+++ b/Include/structseq.h
@@ -27,6 +27,12 @@ PyAPI_FUNC(void) PyStructSequence_InitType(PyTypeObject *type,
PyAPI_FUNC(int) PyStructSequence_InitType2(PyTypeObject *type,
PyStructSequence_Desc *desc);
#endif
+#ifdef Py_BUILD_CORE
+extern int _PyStructSequence_InitType(
+ PyTypeObject *type,
+ PyStructSequence_Desc *desc,
+ unsigned long tp_flags);
+#endif
PyAPI_FUNC(PyTypeObject*) PyStructSequence_NewType(PyStructSequence_Desc *desc);
PyAPI_FUNC(PyObject *) PyStructSequence_New(PyTypeObject* type);