Issue #19543: Emit deprecation warning for known non-text encodings.
Backported issues #19619: encode() and decode() methods and constructors
of str, unicode and bytearray classes now emit deprecation warning for known
non-text encodings when Python is ran with the -3 option.
Backported issues #20404: io.TextIOWrapper (and hence io.open()) now uses the
internal codec marking system added to emit deprecation warning for known non-text
encodings at stream construction time when Python is ran with the -3 option.
diff --git a/Objects/bytearrayobject.c b/Objects/bytearrayobject.c
index fd201ca..5f57580 100644
--- a/Objects/bytearrayobject.c
+++ b/Objects/bytearrayobject.c
@@ -783,7 +783,7 @@
if (PyBytes_Check(arg)) {
PyObject *new, *encoded;
if (encoding != NULL) {
- encoded = PyCodec_Encode(arg, encoding, errors);
+ encoded = _PyCodec_EncodeText(arg, encoding, errors);
if (encoded == NULL)
return -1;
assert(PyBytes_Check(encoded));
@@ -809,7 +809,7 @@
"unicode argument without an encoding");
return -1;
}
- encoded = PyCodec_Encode(arg, encoding, errors);
+ encoded = _PyCodec_EncodeText(arg, encoding, errors);
if (encoded == NULL)
return -1;
assert(PyBytes_Check(encoded));
@@ -2567,7 +2567,7 @@
return NULL;
#endif
}
- return PyCodec_Decode(self, encoding, errors);
+ return _PyCodec_DecodeText(self, encoding, errors);
}
PyDoc_STRVAR(alloc_doc,
diff --git a/Objects/stringobject.c b/Objects/stringobject.c
index 46f46db..c1e12a7 100644
--- a/Objects/stringobject.c
+++ b/Objects/stringobject.c
@@ -449,7 +449,7 @@
}
/* Decode via the codec registry */
- v = PyCodec_Decode(str, encoding, errors);
+ v = _PyCodec_DecodeText(str, encoding, errors);
if (v == NULL)
goto onError;
@@ -529,7 +529,7 @@
}
/* Encode via the codec registry */
- v = PyCodec_Encode(str, encoding, errors);
+ v = _PyCodec_EncodeText(str, encoding, errors);
if (v == NULL)
goto onError;
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index 91e7524..08723ac 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -1259,7 +1259,7 @@
buffer = PyBuffer_FromMemory((void *)s, size);
if (buffer == NULL)
goto onError;
- unicode = PyCodec_Decode(buffer, encoding, errors);
+ unicode = _PyCodec_DecodeText(buffer, encoding, errors);
if (unicode == NULL)
goto onError;
if (!PyUnicode_Check(unicode)) {
@@ -1292,7 +1292,7 @@
encoding = PyUnicode_GetDefaultEncoding();
/* Decode via the codec registry */
- v = PyCodec_Decode(unicode, encoding, errors);
+ v = _PyCodec_DecodeText(unicode, encoding, errors);
if (v == NULL)
goto onError;
return v;
@@ -1331,7 +1331,7 @@
encoding = PyUnicode_GetDefaultEncoding();
/* Encode via the codec registry */
- v = PyCodec_Encode(unicode, encoding, errors);
+ v = _PyCodec_EncodeText(unicode, encoding, errors);
if (v == NULL)
goto onError;
return v;
@@ -1369,7 +1369,7 @@
}
/* Encode via the codec registry */
- v = PyCodec_Encode(unicode, encoding, errors);
+ v = _PyCodec_EncodeText(unicode, encoding, errors);
if (v == NULL)
goto onError;
if (!PyString_Check(v)) {