bpo-46417: Clear more static types (GH-30796)

* Move PyContext static types into object.c static_types list.
* Rename PyContextTokenMissing_Type to _PyContextTokenMissing_Type
  and declare it in pycore_context.h.
* _PyHamtItems types are no long exported: replace PyAPI_DATA() with
  extern.
This commit is contained in:
Victor Stinner 2022-01-22 18:55:48 +01:00 committed by GitHub
parent 1f8014c5b4
commit 500c146387
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 30 additions and 54 deletions

View file

@ -1260,7 +1260,7 @@ context_token_missing_tp_repr(PyObject *self)
}
PyTypeObject PyContextTokenMissing_Type = {
PyTypeObject _PyContextTokenMissing_Type = {
PyVarObject_HEAD_INIT(&PyType_Type, 0)
"Token.MISSING",
sizeof(PyContextTokenMissing),
@ -1279,7 +1279,7 @@ get_token_missing(void)
}
_token_missing = (PyObject *)PyObject_New(
PyContextTokenMissing, &PyContextTokenMissing_Type);
PyContextTokenMissing, &_PyContextTokenMissing_Type);
if (_token_missing == NULL) {
return NULL;
}
@ -1323,25 +1323,12 @@ _PyContext_Fini(PyInterpreterState *interp)
PyStatus
_PyContext_InitTypes(PyInterpreterState *interp)
_PyContext_Init(PyInterpreterState *interp)
{
if (!_Py_IsMainInterpreter(interp)) {
return _PyStatus_OK();
}
PyStatus status = _PyHamt_InitTypes(interp);
if (_PyStatus_EXCEPTION(status)) {
return status;
}
if ((PyType_Ready(&PyContext_Type) < 0) ||
(PyType_Ready(&PyContextVar_Type) < 0) ||
(PyType_Ready(&PyContextToken_Type) < 0) ||
(PyType_Ready(&PyContextTokenMissing_Type) < 0))
{
return _PyStatus_ERR("can't init context types");
}
PyObject *missing = get_token_missing();
if (PyDict_SetItemString(
PyContextToken_Type.tp_dict, "MISSING", missing))