mirror of https://github.com/python/cpython
GH-90699: Remove `_Py_IDENTIFIER` usage from `_json` module (GH-98956)
This commit is contained in:
parent
df84b7b0bc
commit
780757ac58
|
@ -44,6 +44,7 @@ struct _Py_global_strings {
|
|||
STRUCT_FOR_STR(dot, ".")
|
||||
STRUCT_FOR_STR(dot_locals, ".<locals>")
|
||||
STRUCT_FOR_STR(empty, "")
|
||||
STRUCT_FOR_STR(json_decoder, "json.decoder")
|
||||
STRUCT_FOR_STR(list_err, "list index out of range")
|
||||
STRUCT_FOR_STR(newline, "\n")
|
||||
STRUCT_FOR_STR(open_br, "{")
|
||||
|
@ -53,6 +54,7 @@ struct _Py_global_strings {
|
|||
|
||||
struct {
|
||||
STRUCT_FOR_ID(False)
|
||||
STRUCT_FOR_ID(JSONDecodeError)
|
||||
STRUCT_FOR_ID(Py_Repr)
|
||||
STRUCT_FOR_ID(TextIOWrapper)
|
||||
STRUCT_FOR_ID(True)
|
||||
|
@ -352,6 +354,7 @@ struct _Py_global_strings {
|
|||
STRUCT_FOR_ID(extend)
|
||||
STRUCT_FOR_ID(facility)
|
||||
STRUCT_FOR_ID(factory)
|
||||
STRUCT_FOR_ID(false)
|
||||
STRUCT_FOR_ID(family)
|
||||
STRUCT_FOR_ID(fanout)
|
||||
STRUCT_FOR_ID(fd)
|
||||
|
@ -491,6 +494,7 @@ struct _Py_global_strings {
|
|||
STRUCT_FOR_ID(node_offset)
|
||||
STRUCT_FOR_ID(ns)
|
||||
STRUCT_FOR_ID(nstype)
|
||||
STRUCT_FOR_ID(null)
|
||||
STRUCT_FOR_ID(number)
|
||||
STRUCT_FOR_ID(obj)
|
||||
STRUCT_FOR_ID(object)
|
||||
|
@ -627,6 +631,7 @@ struct _Py_global_strings {
|
|||
STRUCT_FOR_ID(traceback)
|
||||
STRUCT_FOR_ID(trailers)
|
||||
STRUCT_FOR_ID(translate)
|
||||
STRUCT_FOR_ID(true)
|
||||
STRUCT_FOR_ID(truncate)
|
||||
STRUCT_FOR_ID(twice)
|
||||
STRUCT_FOR_ID(txt)
|
||||
|
|
|
@ -554,6 +554,7 @@ extern "C" {
|
|||
INIT_STR(dot, "."), \
|
||||
INIT_STR(dot_locals, ".<locals>"), \
|
||||
INIT_STR(empty, ""), \
|
||||
INIT_STR(json_decoder, "json.decoder"), \
|
||||
INIT_STR(list_err, "list index out of range"), \
|
||||
INIT_STR(newline, "\n"), \
|
||||
INIT_STR(open_br, "{"), \
|
||||
|
@ -562,6 +563,7 @@ extern "C" {
|
|||
}, \
|
||||
.identifiers = { \
|
||||
INIT_ID(False), \
|
||||
INIT_ID(JSONDecodeError), \
|
||||
INIT_ID(Py_Repr), \
|
||||
INIT_ID(TextIOWrapper), \
|
||||
INIT_ID(True), \
|
||||
|
@ -861,6 +863,7 @@ extern "C" {
|
|||
INIT_ID(extend), \
|
||||
INIT_ID(facility), \
|
||||
INIT_ID(factory), \
|
||||
INIT_ID(false), \
|
||||
INIT_ID(family), \
|
||||
INIT_ID(fanout), \
|
||||
INIT_ID(fd), \
|
||||
|
@ -1000,6 +1003,7 @@ extern "C" {
|
|||
INIT_ID(node_offset), \
|
||||
INIT_ID(ns), \
|
||||
INIT_ID(nstype), \
|
||||
INIT_ID(null), \
|
||||
INIT_ID(number), \
|
||||
INIT_ID(obj), \
|
||||
INIT_ID(object), \
|
||||
|
@ -1136,6 +1140,7 @@ extern "C" {
|
|||
INIT_ID(traceback), \
|
||||
INIT_ID(trailers), \
|
||||
INIT_ID(translate), \
|
||||
INIT_ID(true), \
|
||||
INIT_ID(truncate), \
|
||||
INIT_ID(twice), \
|
||||
INIT_ID(txt), \
|
||||
|
@ -1437,6 +1442,8 @@ _PyUnicode_InitStaticStrings(void) {
|
|||
PyObject *string;
|
||||
string = &_Py_ID(False);
|
||||
PyUnicode_InternInPlace(&string);
|
||||
string = &_Py_ID(JSONDecodeError);
|
||||
PyUnicode_InternInPlace(&string);
|
||||
string = &_Py_ID(Py_Repr);
|
||||
PyUnicode_InternInPlace(&string);
|
||||
string = &_Py_ID(TextIOWrapper);
|
||||
|
@ -2035,6 +2042,8 @@ _PyUnicode_InitStaticStrings(void) {
|
|||
PyUnicode_InternInPlace(&string);
|
||||
string = &_Py_ID(factory);
|
||||
PyUnicode_InternInPlace(&string);
|
||||
string = &_Py_ID(false);
|
||||
PyUnicode_InternInPlace(&string);
|
||||
string = &_Py_ID(family);
|
||||
PyUnicode_InternInPlace(&string);
|
||||
string = &_Py_ID(fanout);
|
||||
|
@ -2313,6 +2322,8 @@ _PyUnicode_InitStaticStrings(void) {
|
|||
PyUnicode_InternInPlace(&string);
|
||||
string = &_Py_ID(nstype);
|
||||
PyUnicode_InternInPlace(&string);
|
||||
string = &_Py_ID(null);
|
||||
PyUnicode_InternInPlace(&string);
|
||||
string = &_Py_ID(number);
|
||||
PyUnicode_InternInPlace(&string);
|
||||
string = &_Py_ID(obj);
|
||||
|
@ -2585,6 +2596,8 @@ _PyUnicode_InitStaticStrings(void) {
|
|||
PyUnicode_InternInPlace(&string);
|
||||
string = &_Py_ID(translate);
|
||||
PyUnicode_InternInPlace(&string);
|
||||
string = &_Py_ID(true);
|
||||
PyUnicode_InternInPlace(&string);
|
||||
string = &_Py_ID(truncate);
|
||||
PyUnicode_InternInPlace(&string);
|
||||
string = &_Py_ID(twice);
|
||||
|
@ -4784,6 +4797,10 @@ _PyStaticObjects_CheckRefcnt(void) {
|
|||
_PyObject_Dump((PyObject *)&_Py_STR(empty));
|
||||
Py_FatalError("immortal object has less refcnt than expected _PyObject_IMMORTAL_REFCNT");
|
||||
};
|
||||
if (Py_REFCNT((PyObject *)&_Py_STR(json_decoder)) < _PyObject_IMMORTAL_REFCNT) {
|
||||
_PyObject_Dump((PyObject *)&_Py_STR(json_decoder));
|
||||
Py_FatalError("immortal object has less refcnt than expected _PyObject_IMMORTAL_REFCNT");
|
||||
};
|
||||
if (Py_REFCNT((PyObject *)&_Py_STR(list_err)) < _PyObject_IMMORTAL_REFCNT) {
|
||||
_PyObject_Dump((PyObject *)&_Py_STR(list_err));
|
||||
Py_FatalError("immortal object has less refcnt than expected _PyObject_IMMORTAL_REFCNT");
|
||||
|
@ -4808,6 +4825,10 @@ _PyStaticObjects_CheckRefcnt(void) {
|
|||
_PyObject_Dump((PyObject *)&_Py_ID(False));
|
||||
Py_FatalError("immortal object has less refcnt than expected _PyObject_IMMORTAL_REFCNT");
|
||||
};
|
||||
if (Py_REFCNT((PyObject *)&_Py_ID(JSONDecodeError)) < _PyObject_IMMORTAL_REFCNT) {
|
||||
_PyObject_Dump((PyObject *)&_Py_ID(JSONDecodeError));
|
||||
Py_FatalError("immortal object has less refcnt than expected _PyObject_IMMORTAL_REFCNT");
|
||||
};
|
||||
if (Py_REFCNT((PyObject *)&_Py_ID(Py_Repr)) < _PyObject_IMMORTAL_REFCNT) {
|
||||
_PyObject_Dump((PyObject *)&_Py_ID(Py_Repr));
|
||||
Py_FatalError("immortal object has less refcnt than expected _PyObject_IMMORTAL_REFCNT");
|
||||
|
@ -6004,6 +6025,10 @@ _PyStaticObjects_CheckRefcnt(void) {
|
|||
_PyObject_Dump((PyObject *)&_Py_ID(factory));
|
||||
Py_FatalError("immortal object has less refcnt than expected _PyObject_IMMORTAL_REFCNT");
|
||||
};
|
||||
if (Py_REFCNT((PyObject *)&_Py_ID(false)) < _PyObject_IMMORTAL_REFCNT) {
|
||||
_PyObject_Dump((PyObject *)&_Py_ID(false));
|
||||
Py_FatalError("immortal object has less refcnt than expected _PyObject_IMMORTAL_REFCNT");
|
||||
};
|
||||
if (Py_REFCNT((PyObject *)&_Py_ID(family)) < _PyObject_IMMORTAL_REFCNT) {
|
||||
_PyObject_Dump((PyObject *)&_Py_ID(family));
|
||||
Py_FatalError("immortal object has less refcnt than expected _PyObject_IMMORTAL_REFCNT");
|
||||
|
@ -6560,6 +6585,10 @@ _PyStaticObjects_CheckRefcnt(void) {
|
|||
_PyObject_Dump((PyObject *)&_Py_ID(nstype));
|
||||
Py_FatalError("immortal object has less refcnt than expected _PyObject_IMMORTAL_REFCNT");
|
||||
};
|
||||
if (Py_REFCNT((PyObject *)&_Py_ID(null)) < _PyObject_IMMORTAL_REFCNT) {
|
||||
_PyObject_Dump((PyObject *)&_Py_ID(null));
|
||||
Py_FatalError("immortal object has less refcnt than expected _PyObject_IMMORTAL_REFCNT");
|
||||
};
|
||||
if (Py_REFCNT((PyObject *)&_Py_ID(number)) < _PyObject_IMMORTAL_REFCNT) {
|
||||
_PyObject_Dump((PyObject *)&_Py_ID(number));
|
||||
Py_FatalError("immortal object has less refcnt than expected _PyObject_IMMORTAL_REFCNT");
|
||||
|
@ -7104,6 +7133,10 @@ _PyStaticObjects_CheckRefcnt(void) {
|
|||
_PyObject_Dump((PyObject *)&_Py_ID(translate));
|
||||
Py_FatalError("immortal object has less refcnt than expected _PyObject_IMMORTAL_REFCNT");
|
||||
};
|
||||
if (Py_REFCNT((PyObject *)&_Py_ID(true)) < _PyObject_IMMORTAL_REFCNT) {
|
||||
_PyObject_Dump((PyObject *)&_Py_ID(true));
|
||||
Py_FatalError("immortal object has less refcnt than expected _PyObject_IMMORTAL_REFCNT");
|
||||
};
|
||||
if (Py_REFCNT((PyObject *)&_Py_ID(truncate)) < _PyObject_IMMORTAL_REFCNT) {
|
||||
_PyObject_Dump((PyObject *)&_Py_ID(truncate));
|
||||
Py_FatalError("immortal object has less refcnt than expected _PyObject_IMMORTAL_REFCNT");
|
||||
|
|
|
@ -7,11 +7,11 @@
|
|||
#ifndef Py_BUILD_CORE_BUILTIN
|
||||
# define Py_BUILD_CORE_MODULE 1
|
||||
#endif
|
||||
#define NEEDS_PY_IDENTIFIER
|
||||
|
||||
#include "Python.h"
|
||||
#include "pycore_ceval.h" // _Py_EnterRecursiveCall()
|
||||
#include "structmember.h" // PyMemberDef
|
||||
#include "pycore_runtime_init.h" // _Py_ID()
|
||||
#include <stdbool.h> // bool
|
||||
|
||||
|
||||
|
@ -305,15 +305,9 @@ static void
|
|||
raise_errmsg(const char *msg, PyObject *s, Py_ssize_t end)
|
||||
{
|
||||
/* Use JSONDecodeError exception to raise a nice looking ValueError subclass */
|
||||
_Py_static_string(PyId_decoder, "json.decoder");
|
||||
PyObject *decoder = _PyImport_GetModuleId(&PyId_decoder);
|
||||
if (decoder == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
_Py_IDENTIFIER(JSONDecodeError);
|
||||
PyObject *JSONDecodeError = _PyObject_GetAttrId(decoder, &PyId_JSONDecodeError);
|
||||
Py_DECREF(decoder);
|
||||
_Py_DECLARE_STR(json_decoder, "json.decoder");
|
||||
PyObject *JSONDecodeError =
|
||||
_PyImport_GetModuleAttr(&_Py_STR(json_decoder), &_Py_ID(JSONDecodeError));
|
||||
if (JSONDecodeError == NULL) {
|
||||
return;
|
||||
}
|
||||
|
@ -1310,28 +1304,13 @@ _encoded_const(PyObject *obj)
|
|||
{
|
||||
/* Return the JSON string representation of None, True, False */
|
||||
if (obj == Py_None) {
|
||||
_Py_static_string(PyId_null, "null");
|
||||
PyObject *s_null = _PyUnicode_FromId(&PyId_null);
|
||||
if (s_null == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
return Py_NewRef(s_null);
|
||||
return Py_NewRef(&_Py_ID(null));
|
||||
}
|
||||
else if (obj == Py_True) {
|
||||
_Py_static_string(PyId_true, "true");
|
||||
PyObject *s_true = _PyUnicode_FromId(&PyId_true);
|
||||
if (s_true == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
return Py_NewRef(s_true);
|
||||
return Py_NewRef(&_Py_ID(true));
|
||||
}
|
||||
else if (obj == Py_False) {
|
||||
_Py_static_string(PyId_false, "false");
|
||||
PyObject *s_false = _PyUnicode_FromId(&PyId_false);
|
||||
if (s_false == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
return Py_NewRef(s_false);
|
||||
return Py_NewRef(&_Py_ID(false));
|
||||
}
|
||||
else {
|
||||
PyErr_SetString(PyExc_ValueError, "not a const");
|
||||
|
@ -1530,7 +1509,7 @@ encoder_encode_key_value(PyEncoderObject *s, _PyUnicodeWriter *writer, bool *fir
|
|||
|
||||
if (*first) {
|
||||
*first = false;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (_PyUnicodeWriter_WriteStr(writer, s->item_separator) < 0) {
|
||||
Py_DECREF(keystr);
|
||||
|
|
Loading…
Reference in New Issue