-
-
Notifications
You must be signed in to change notification settings - Fork 32.2k
bpo-36346: Add Py_DEPRECATED to deprecated unicode APIs #20878
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
18 commits
Select commit
Hold shift + click to select a range
b7bb169
bpo-36346: Uncomment Py_DEPRECATED for deprecated unicode APIs
methane 4e88718
Deprecate _PyUnicode_AsUnicode
methane 8f58264
Merge remote-tracking branch 'origin/master' into pep393-deprecation
methane 6b9d12c
Supress deprecation warnings
methane 10e1b13
Use inline functions. Undeprecate some APIs.
methane a703182
Revive commented deprecation
methane 468a43b
supress one more warning
methane 52802fe
Remove Py_UNICODE_MATCH and deprecate PyUnicode_WSTR_LENGTH
methane 6e86236
Undeprecate APIs that doesn't use wstr
methane b9fa49a
Update _testcapimodule
methane 30bed2d
Add news
methane 4490cc7
Add what's new entry
methane 8c2daae
fixup
methane cae4804
Update Misc/NEWS.d/next/C API/2020-06-17-11-24-00.bpo-36346.fTMr3S.rst
methane 26cb789
Update Objects/unicodeobject.c
methane 4390489
Update Misc/NEWS.d/next/C API/2020-06-17-11-24-00.bpo-36346.fTMr3S.rst
methane 35d68db
fixup
methane b3ee751
avoid _impl suffix
methane File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
|
@@ -46,13 +46,17 @@ | |||||
Py_UNICODE_ISDIGIT(ch) || \ | ||||||
Py_UNICODE_ISNUMERIC(ch)) | ||||||
|
||||||
#define Py_UNICODE_COPY(target, source, length) \ | ||||||
memcpy((target), (source), (length)*sizeof(Py_UNICODE)) | ||||||
|
||||||
#define Py_UNICODE_FILL(target, value, length) \ | ||||||
do {Py_ssize_t i_; Py_UNICODE *t_ = (target); Py_UNICODE v_ = (value);\ | ||||||
for (i_ = 0; i_ < (length); i_++) t_[i_] = v_;\ | ||||||
} while (0) | ||||||
Py_DEPRECATED(3.3) static inline void | ||||||
Py_UNICODE_COPY(Py_UNICODE *target, const Py_UNICODE *source, Py_ssize_t length) { | ||||||
memcpy(target, source, length * sizeof(Py_UNICODE)); | ||||||
} | ||||||
|
||||||
Py_DEPRECATED(3.3) static inline void | ||||||
Py_UNICODE_FILL(Py_UNICODE *target, Py_UNICODE value, Py_ssize_t length) { | ||||||
for (Py_ssize_t i = 0; i < length; i++) { | ||||||
target[i] = value; | ||||||
} | ||||||
} | ||||||
|
||||||
/* macros to work with surrogates */ | ||||||
#define Py_UNICODE_IS_SURROGATE(ch) (0xD800 <= (ch) && (ch) <= 0xDFFF) | ||||||
|
@@ -67,14 +71,6 @@ | |||||
/* low surrogate = bottom 10 bits added to DC00 */ | ||||||
#define Py_UNICODE_LOW_SURROGATE(ch) (0xDC00 + ((ch) & 0x3FF)) | ||||||
|
||||||
/* Check if substring matches at given offset. The offset must be | ||||||
valid, and the substring must not be empty. */ | ||||||
|
||||||
#define Py_UNICODE_MATCH(string, offset, substring) \ | ||||||
((*((string)->wstr + (offset)) == *((substring)->wstr)) && \ | ||||||
((*((string)->wstr + (offset) + (substring)->wstr_length-1) == *((substring)->wstr + (substring)->wstr_length-1))) && \ | ||||||
!memcmp((string)->wstr + (offset), (substring)->wstr, (substring)->wstr_length*sizeof(Py_UNICODE))) | ||||||
|
||||||
/* --- Unicode Type ------------------------------------------------------- */ | ||||||
|
||||||
/* ASCII-only strings created through PyUnicode_New use the PyASCIIObject | ||||||
|
@@ -247,10 +243,6 @@ PyAPI_FUNC(int) _PyUnicode_CheckConsistency( | |||||
int check_content); | ||||||
|
||||||
/* Fast access macros */ | ||||||
#define PyUnicode_WSTR_LENGTH(op) \ | ||||||
methane marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||
(PyUnicode_IS_COMPACT_ASCII(op) ? \ | ||||||
((PyASCIIObject*)op)->length : \ | ||||||
((PyCompactUnicodeObject*)op)->wstr_length) | ||||||
|
||||||
/* Returns the deprecated Py_UNICODE representation's size in code units | ||||||
(this includes surrogate pairs as 2 units). | ||||||
|
@@ -445,6 +437,14 @@ enum PyUnicode_Kind { | |||||
(0xffffU) : \ | ||||||
(0x10ffffU))))) | ||||||
|
||||||
Py_DEPRECATED(3.3) | ||||||
static inline Py_ssize_t _PyUnicode_get_wstr_length(PyObject *op) { | ||||||
return PyUnicode_IS_COMPACT_ASCII(op) ? | ||||||
((PyASCIIObject*)op)->length : | ||||||
((PyCompactUnicodeObject*)op)->wstr_length; | ||||||
} | ||||||
#define PyUnicode_WSTR_LENGTH(op) _PyUnicode_get_wstr_length((PyObject*)op) | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. You might use _PyObject_CAST() macro:
Suggested change
|
||||||
|
||||||
/* === Public API ========================================================= */ | ||||||
|
||||||
/* --- Plain Py_UNICODE --------------------------------------------------- */ | ||||||
|
@@ -543,7 +543,7 @@ PyAPI_FUNC(void) _PyUnicode_FastFill( | |||||
only allowed if u was set to NULL. | ||||||
|
||||||
The buffer is copied into the new object. */ | ||||||
/* Py_DEPRECATED(3.3) */ PyAPI_FUNC(PyObject*) PyUnicode_FromUnicode( | ||||||
Py_DEPRECATED(3.3) PyAPI_FUNC(PyObject*) PyUnicode_FromUnicode( | ||||||
const Py_UNICODE *u, /* Unicode buffer */ | ||||||
Py_ssize_t size /* size of buffer */ | ||||||
); | ||||||
|
@@ -572,13 +572,13 @@ PyAPI_FUNC(Py_UCS4) _PyUnicode_FindMaxChar ( | |||||
Py_UNICODE buffer. | ||||||
If the wchar_t/Py_UNICODE representation is not yet available, this | ||||||
function will calculate it. */ | ||||||
/* Py_DEPRECATED(3.3) */ PyAPI_FUNC(Py_UNICODE *) PyUnicode_AsUnicode( | ||||||
Py_DEPRECATED(3.3) PyAPI_FUNC(Py_UNICODE *) PyUnicode_AsUnicode( | ||||||
PyObject *unicode /* Unicode object */ | ||||||
); | ||||||
|
||||||
/* Similar to PyUnicode_AsUnicode(), but raises a ValueError if the string | ||||||
contains null characters. */ | ||||||
PyAPI_FUNC(const Py_UNICODE *) _PyUnicode_AsUnicode( | ||||||
Py_DEPRECATED(3.3) PyAPI_FUNC(const Py_UNICODE *) _PyUnicode_AsUnicode( | ||||||
PyObject *unicode /* Unicode object */ | ||||||
); | ||||||
|
||||||
|
@@ -587,7 +587,7 @@ PyAPI_FUNC(const Py_UNICODE *) _PyUnicode_AsUnicode( | |||||
If the wchar_t/Py_UNICODE representation is not yet available, this | ||||||
function will calculate it. */ | ||||||
|
||||||
/* Py_DEPRECATED(3.3) */ PyAPI_FUNC(Py_UNICODE *) PyUnicode_AsUnicodeAndSize( | ||||||
Py_DEPRECATED(3.3) PyAPI_FUNC(Py_UNICODE *) PyUnicode_AsUnicodeAndSize( | ||||||
PyObject *unicode, /* Unicode object */ | ||||||
Py_ssize_t *size /* location where to save the length */ | ||||||
); | ||||||
|
4 changes: 4 additions & 0 deletions
4
Misc/NEWS.d/next/C API/2020-06-17-11-24-00.bpo-36346.fTMr3S.rst
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
Mark ``Py_UNICODE_COPY``, ``Py_UNICODE_FILL``, ``PyUnicode_WSTR_LENGTH``, | ||
``PyUnicode_FromUnicode``, ``PyUnicode_AsUnicode``, ``_PyUnicode_AsUnicode``, | ||
and ``PyUnicode_AsUnicodeAndSize`` as deprecated in C. Remove ``Py_UNICODE_MATCH`` | ||
which was deprecated and broken since Python 3.3. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.