mirror of
https://github.com/python/cpython.git
synced 2025-11-01 18:51:43 +00:00
gh-101524: Only Use Public C-API in the _xxsubinterpreters Module (gh-107359)
The _xxsubinterpreters module should not rely on internal API. Some of the functions it uses were recently moved there however. Here we move them back (and expose them properly).
This commit is contained in:
parent
75c974f535
commit
8bdae1424b
18 changed files with 80 additions and 82 deletions
|
|
@ -3,7 +3,7 @@
|
|||
#include "Python.h"
|
||||
#include "pycore_abstract.h" // _PyIndex_Check()
|
||||
#include "pycore_interp.h" // _PyInterpreterState_LookUpID()
|
||||
#include "pycore_interp_id.h" // _PyInterpreterID_Type
|
||||
#include "interpreteridobject.h"
|
||||
|
||||
|
||||
typedef struct interpid {
|
||||
|
|
@ -46,7 +46,7 @@ static int
|
|||
interp_id_converter(PyObject *arg, void *ptr)
|
||||
{
|
||||
int64_t id;
|
||||
if (PyObject_TypeCheck(arg, &_PyInterpreterID_Type)) {
|
||||
if (PyObject_TypeCheck(arg, &PyInterpreterID_Type)) {
|
||||
id = ((interpid *)arg)->id;
|
||||
}
|
||||
else if (_PyIndex_Check(arg)) {
|
||||
|
|
@ -183,13 +183,13 @@ interpid_richcompare(PyObject *self, PyObject *other, int op)
|
|||
Py_RETURN_NOTIMPLEMENTED;
|
||||
}
|
||||
|
||||
if (!PyObject_TypeCheck(self, &_PyInterpreterID_Type)) {
|
||||
if (!PyObject_TypeCheck(self, &PyInterpreterID_Type)) {
|
||||
Py_RETURN_NOTIMPLEMENTED;
|
||||
}
|
||||
|
||||
interpid *id = (interpid *)self;
|
||||
int equal;
|
||||
if (PyObject_TypeCheck(other, &_PyInterpreterID_Type)) {
|
||||
if (PyObject_TypeCheck(other, &PyInterpreterID_Type)) {
|
||||
interpid *otherid = (interpid *)other;
|
||||
equal = (id->id == otherid->id);
|
||||
}
|
||||
|
|
@ -224,7 +224,7 @@ interpid_richcompare(PyObject *self, PyObject *other, int op)
|
|||
PyDoc_STRVAR(interpid_doc,
|
||||
"A interpreter ID identifies a interpreter and may be used as an int.");
|
||||
|
||||
PyTypeObject _PyInterpreterID_Type = {
|
||||
PyTypeObject PyInterpreterID_Type = {
|
||||
PyVarObject_HEAD_INIT(&PyType_Type, 0)
|
||||
"InterpreterID", /* tp_name */
|
||||
sizeof(interpid), /* tp_basicsize */
|
||||
|
|
@ -265,13 +265,13 @@ PyTypeObject _PyInterpreterID_Type = {
|
|||
interpid_new, /* tp_new */
|
||||
};
|
||||
|
||||
PyObject *_PyInterpreterID_New(int64_t id)
|
||||
PyObject *PyInterpreterID_New(int64_t id)
|
||||
{
|
||||
return (PyObject *)newinterpid(&_PyInterpreterID_Type, id, 0);
|
||||
return (PyObject *)newinterpid(&PyInterpreterID_Type, id, 0);
|
||||
}
|
||||
|
||||
PyObject *
|
||||
_PyInterpreterState_GetIDObject(PyInterpreterState *interp)
|
||||
PyInterpreterState_GetIDObject(PyInterpreterState *interp)
|
||||
{
|
||||
if (_PyInterpreterState_IDInitref(interp) != 0) {
|
||||
return NULL;
|
||||
|
|
@ -280,11 +280,11 @@ _PyInterpreterState_GetIDObject(PyInterpreterState *interp)
|
|||
if (id < 0) {
|
||||
return NULL;
|
||||
}
|
||||
return (PyObject *)newinterpid(&_PyInterpreterID_Type, id, 0);
|
||||
return (PyObject *)newinterpid(&PyInterpreterID_Type, id, 0);
|
||||
}
|
||||
|
||||
PyInterpreterState *
|
||||
_PyInterpreterID_LookUp(PyObject *requested_id)
|
||||
PyInterpreterID_LookUp(PyObject *requested_id)
|
||||
{
|
||||
int64_t id;
|
||||
if (!interp_id_converter(requested_id, &id)) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue