[Python-checkins] gh-106320: Remove _PyBytes_Join() C API (#107144)

vstinner webhook-mailer at python.org
Sun Jul 23 16:10:15 EDT 2023


https://github.com/python/cpython/commit/7d41ead9191a18bc473534f6f8bd1095f2232cc2
commit: 7d41ead9191a18bc473534f6f8bd1095f2232cc2
branch: main
author: Victor Stinner <vstinner at python.org>
committer: vstinner <vstinner at python.org>
date: 2023年07月23日T20:10:12Z
summary:
gh-106320: Remove _PyBytes_Join() C API (#107144)
Move private _PyBytes functions to the internal C API
(pycore_bytesobject.h):
* _PyBytes_DecodeEscape()
* _PyBytes_FormatEx()
* _PyBytes_FromHex()
* _PyBytes_Join()
No longer export these functions.
files:
M Include/cpython/bytesobject.h
M Include/internal/pycore_bytesobject.h
M Modules/_io/bufferedio.c
M Parser/string_parser.c
diff --git a/Include/cpython/bytesobject.h b/Include/cpython/bytesobject.h
index 0af4c83b1e5bc..816823716e9a6 100644
--- a/Include/cpython/bytesobject.h
+++ b/Include/cpython/bytesobject.h
@@ -15,18 +15,6 @@ typedef struct {
 } PyBytesObject;
 
 PyAPI_FUNC(int) _PyBytes_Resize(PyObject **, Py_ssize_t);
-PyAPI_FUNC(PyObject*) _PyBytes_FormatEx(
- const char *format,
- Py_ssize_t format_len,
- PyObject *args,
- int use_bytearray);
-PyAPI_FUNC(PyObject*) _PyBytes_FromHex(
- PyObject *string,
- int use_bytearray);
-
-/* Helper for PyBytes_DecodeEscape that detects invalid escape chars. */
-PyAPI_FUNC(PyObject *) _PyBytes_DecodeEscape(const char *, Py_ssize_t,
- const char *, const char **);
 
 /* Macros and static inline functions, trading safety for speed */
 #define _PyBytes_CAST(op) \
@@ -43,7 +31,3 @@ static inline Py_ssize_t PyBytes_GET_SIZE(PyObject *op) {
 return Py_SIZE(self);
 }
 #define PyBytes_GET_SIZE(self) PyBytes_GET_SIZE(_PyObject_CAST(self))
-
-/* _PyBytes_Join(sep, x) is like sep.join(x). sep must be PyBytesObject*,
- x must be an iterable object. */
-PyAPI_FUNC(PyObject *) _PyBytes_Join(PyObject *sep, PyObject *x);
diff --git a/Include/internal/pycore_bytesobject.h b/Include/internal/pycore_bytesobject.h
index 115c0c52c8f9a..980065a65f399 100644
--- a/Include/internal/pycore_bytesobject.h
+++ b/Include/internal/pycore_bytesobject.h
@@ -8,6 +8,25 @@ extern "C" {
 # error "this header requires Py_BUILD_CORE define"
 #endif
 
+extern PyObject* _PyBytes_FormatEx(
+ const char *format,
+ Py_ssize_t format_len,
+ PyObject *args,
+ int use_bytearray);
+
+extern PyObject* _PyBytes_FromHex(
+ PyObject *string,
+ int use_bytearray);
+
+// Helper for PyBytes_DecodeEscape that detects invalid escape chars.
+// Export for test_peg_generator.
+PyAPI_FUNC(PyObject*) _PyBytes_DecodeEscape(const char *, Py_ssize_t,
+ const char *, const char **);
+
+/* _PyBytes_Join(sep, x) is like sep.join(x). sep must be PyBytesObject*,
+ x must be an iterable object. */
+extern PyObject* _PyBytes_Join(PyObject *sep, PyObject *x);
+
 
 /* Substring Search.
 
diff --git a/Modules/_io/bufferedio.c b/Modules/_io/bufferedio.c
index bfc3d2558c9e3..efc8cb93d8851 100644
--- a/Modules/_io/bufferedio.c
+++ b/Modules/_io/bufferedio.c
@@ -8,8 +8,9 @@
 */
 
 #include "Python.h"
+#include "pycore_bytesobject.h" // _PyBytes_Join()
 #include "pycore_call.h" // _PyObject_CallNoArgs()
-#include "pycore_object.h"
+#include "pycore_object.h" // _PyObject_GC_UNTRACK()
 #include "pycore_pyerrors.h" // _Py_FatalErrorFormat()
 #include "pycore_pylifecycle.h" // _Py_IsInterpreterFinalizing()
 #include "structmember.h" // PyMemberDef
diff --git a/Parser/string_parser.c b/Parser/string_parser.c
index bc1f99d607ae4..72898c38b79bd 100644
--- a/Parser/string_parser.c
+++ b/Parser/string_parser.c
@@ -1,6 +1,7 @@
 #include <stdbool.h>
 
 #include <Python.h>
+#include "pycore_bytesobject.h" // _PyBytes_DecodeEscape()
 #include "pycore_unicodeobject.h" // _PyUnicode_DecodeUnicodeEscapeInternal()
 
 #include "tokenizer.h"


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /