https://github.com/python/cpython/commit/3a7f17c7e2f72a836a019c316818c446a0c71d75
commit: 3a7f17c7e2f72a836a019c316818c446a0c71d75
branch: main
author: Sergey Miryanov <[email protected]>
committer: vstinner <[email protected]>
date: 2025-03-03T19:18:09Z
summary:
gh-130790: Remove references about unicode's readiness from comments (#130801)
files:
M Include/cpython/unicodeobject.h
M Include/internal/pycore_traceback.h
M Modules/_io/textio.c
M Modules/unicodedata.c
M Objects/typeobject.c
M Objects/unicodeobject.c
M Parser/lexer/lexer.c
M Parser/pegen.c
M Python/codecs.c
M Python/formatter_unicode.c
M Python/tracemalloc.c
diff --git a/Include/cpython/unicodeobject.h b/Include/cpython/unicodeobject.h
index 463cbf24ce1692..e8b04d158b0805 100644
--- a/Include/cpython/unicodeobject.h
+++ b/Include/cpython/unicodeobject.h
@@ -212,22 +212,21 @@ static inline unsigned int PyUnicode_IS_READY(PyObject*
Py_UNUSED(op)) {
#define PyUnicode_IS_READY(op) PyUnicode_IS_READY(_PyObject_CAST(op))
/* Return true if the string contains only ASCII characters, or 0 if not. The
- string may be compact (PyUnicode_IS_COMPACT_ASCII) or not, but must be
- ready. */
+ string may be compact (PyUnicode_IS_COMPACT_ASCII) or not. */
static inline unsigned int PyUnicode_IS_ASCII(PyObject *op) {
return _PyASCIIObject_CAST(op)->state.ascii;
}
#define PyUnicode_IS_ASCII(op) PyUnicode_IS_ASCII(_PyObject_CAST(op))
/* Return true if the string is compact or 0 if not.
- No type checks or Ready calls are performed. */
+ No type checks are performed. */
static inline unsigned int PyUnicode_IS_COMPACT(PyObject *op) {
return _PyASCIIObject_CAST(op)->state.compact;
}
#define PyUnicode_IS_COMPACT(op) PyUnicode_IS_COMPACT(_PyObject_CAST(op))
/* Return true if the string is a compact ASCII string (use PyASCIIObject
- structure), or 0 if not. No type checks or Ready calls are performed. */
+ structure), or 0 if not. No type checks are performed. */
static inline int PyUnicode_IS_COMPACT_ASCII(PyObject *op) {
return (_PyASCIIObject_CAST(op)->state.ascii && PyUnicode_IS_COMPACT(op));
}
@@ -319,7 +318,7 @@ static inline void PyUnicode_WRITE(int kind, void *data,
(index), _Py_STATIC_CAST(Py_UCS4, value))
/* Read a code point from the string's canonical representation. No checks
- or ready calls are performed. */
+ are performed. */
static inline Py_UCS4 PyUnicode_READ(int kind,
const void *data, Py_ssize_t index)
{
diff --git a/Include/internal/pycore_traceback.h
b/Include/internal/pycore_traceback.h
index 10922bff98bd4b..741108a957a35c 100644
--- a/Include/internal/pycore_traceback.h
+++ b/Include/internal/pycore_traceback.h
@@ -66,8 +66,7 @@ extern const char* _Py_DumpTracebackThreads(
/* Write a Unicode object into the file descriptor fd. Encode the string to
ASCII using the backslashreplace error handler.
- Do nothing if text is not a Unicode object. The function accepts Unicode
- string which is not ready (PyUnicode_WCHAR_KIND).
+ Do nothing if text is not a Unicode object.
This function is signal safe. */
extern void _Py_DumpASCII(int fd, PyObject *text);
diff --git a/Modules/_io/textio.c b/Modules/_io/textio.c
index 935aaab20a031f..071a06ffbf7334 100644
--- a/Modules/_io/textio.c
+++ b/Modules/_io/textio.c
@@ -358,7 +358,7 @@ _PyIncrementalNewlineDecoder_decode(PyObject *myself,
out = PyUnicode_DATA(modified);
PyUnicode_WRITE(kind, out, 0, '\r');
memcpy(out + kind, PyUnicode_DATA(output), kind * output_len);
- Py_SETREF(output, modified); /* output remains ready */
+ Py_SETREF(output, modified);
self->pendingcr = 0;
output_len++;
}
@@ -1818,7 +1818,6 @@ textiowrapper_get_decoded_chars(textio *self, Py_ssize_t
n)
if (self->decoded_chars == NULL)
return Py_GetConstant(Py_CONSTANT_EMPTY_STR);
- /* decoded_chars is guaranteed to be "ready". */
avail = (PyUnicode_GET_LENGTH(self->decoded_chars)
- self->decoded_chars_used);
diff --git a/Modules/unicodedata.c b/Modules/unicodedata.c
index f1ff7bd3eba232..ef8cf3d0d27459 100644
--- a/Modules/unicodedata.c
+++ b/Modules/unicodedata.c
@@ -591,7 +591,7 @@ nfd_nfkd(PyObject *self, PyObject *input, int k)
PyMem_Free(output);
if (!result)
return NULL;
- /* result is guaranteed to be ready, as it is compact. */
+
kind = PyUnicode_KIND(result);
data = PyUnicode_DATA(result);
@@ -655,7 +655,7 @@ nfc_nfkc(PyObject *self, PyObject *input, int k)
result = nfd_nfkd(self, input, k);
if (!result)
return NULL;
- /* result will be "ready". */
+
kind = PyUnicode_KIND(result);
data = PyUnicode_DATA(result);
len = PyUnicode_GET_LENGTH(result);
diff --git a/Objects/typeobject.c b/Objects/typeobject.c
index f667e56afbbf8b..bc840ed51ffe4c 100644
--- a/Objects/typeobject.c
+++ b/Objects/typeobject.c
@@ -49,7 +49,6 @@ class object "PyObject *" "&PyBaseObject_Type"
((Py_ssize_t)(name)) >> 3)
#define MCACHE_CACHEABLE_NAME(name) \
PyUnicode_CheckExact(name) && \
- PyUnicode_IS_READY(name) && \
(PyUnicode_GET_LENGTH(name) <= MCACHE_MAX_ATTR_SIZE)
#define NEXT_GLOBAL_VERSION_TAG _PyRuntime.types.next_version_tag
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index 0686276c502aaf..20052e2d17062d 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -15952,7 +15952,6 @@ _PyUnicode_ClearInterned(PyInterpreterState *interp)
Py_ssize_t pos = 0;
PyObject *s, *ignored_value;
while (PyDict_Next(interned, &pos, &s, &ignored_value)) {
- assert(PyUnicode_IS_READY(s));
int shared = 0;
switch (PyUnicode_CHECK_INTERNED(s)) {
case SSTATE_INTERNED_IMMORTAL:
diff --git a/Parser/lexer/lexer.c b/Parser/lexer/lexer.c
index 207fb6b363766c..45604b197f43f2 100644
--- a/Parser/lexer/lexer.c
+++ b/Parser/lexer/lexer.c
@@ -308,9 +308,7 @@ verify_end_of_number(struct tok_state *tok, int c, const
char *kind) {
return 1;
}
-/* Verify that the identifier follows PEP 3131.
- All identifier strings are guaranteed to be "ready" unicode objects.
- */
+/* Verify that the identifier follows PEP 3131. */
static int
verify_identifier(struct tok_state *tok)
{
diff --git a/Parser/pegen.c b/Parser/pegen.c
index 83b0022e47d619..be1768d0f2cff7 100644
--- a/Parser/pegen.c
+++ b/Parser/pegen.c
@@ -509,8 +509,6 @@ _PyPegen_new_identifier(Parser *p, const char *n)
if (!id) {
goto error;
}
- /* PyUnicode_DecodeUTF8 should always return a ready string. */
- assert(PyUnicode_IS_READY(id));
/* Check whether there are non-ASCII characters in the
identifier; if so, normalize to NFKC. */
if (!PyUnicode_IS_ASCII(id))
diff --git a/Python/codecs.c b/Python/codecs.c
index 8cdebfa1b611ea..2453929c8c789a 100644
--- a/Python/codecs.c
+++ b/Python/codecs.c
@@ -1256,7 +1256,6 @@ _PyCodec_SurrogatePassUnicodeEncodeError(PyObject *exc)
unsigned char *outp = (unsigned char *)PyBytes_AsString(res);
for (Py_ssize_t i = start; i < end; i++) {
- /* object is guaranteed to be "ready" */
Py_UCS4 ch = PyUnicode_READ_CHAR(obj, i);
if (!Py_UNICODE_IS_SURROGATE(ch)) {
/* Not a surrogate, fail with original exception */
diff --git a/Python/formatter_unicode.c b/Python/formatter_unicode.c
index 4f8662b0a4c8fb..6e3dcb3dd66373 100644
--- a/Python/formatter_unicode.c
+++ b/Python/formatter_unicode.c
@@ -867,7 +867,6 @@ format_string_internal(PyObject *value, const
InternalFormatSpec *format,
int result = -1;
Py_UCS4 maxchar;
- assert(PyUnicode_IS_READY(value));
len = PyUnicode_GET_LENGTH(value);
/* sign is not allowed on strings */
diff --git a/Python/tracemalloc.c b/Python/tracemalloc.c
index d69b0ebd585a7f..1ee040dde2262d 100644
--- a/Python/tracemalloc.c
+++ b/Python/tracemalloc.c
@@ -249,14 +249,6 @@ tracemalloc_get_frame(_PyInterpreterFrame *pyframe,
frame_t *frame)
#endif
return;
}
- if (!PyUnicode_IS_READY(filename)) {
- /* Don't make a Unicode string ready to avoid reentrant calls
- to tracemalloc_alloc() or tracemalloc_realloc() */
-#ifdef TRACE_DEBUG
- tracemalloc_error("filename is not a ready unicode string");
-#endif
- return;
- }
/* intern the filename */
_Py_hashtable_entry_t *entry;
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]