#10542 proposes the following macros to factor out common code:
#define _Py_UNICODE_ISSURROGATE
#define _Py_UNICODE_ISHIGHSURROGATE
#define _Py_UNICODE_ISLOWSURROGATE
#define _Py_UNICODE_JOIN_SURROGATES
and to avoid checking for narrow/wide builds and recombine surrogates manually (so still refactoring):
#define _Py_UNICODE_NEXT
#define _Py_UNICODE_PUT_NEXT
Your patch proposes the same 4 macros:
#define IS_SURROGATE
#define IS_HIGH_SURROGATE
#define IS_LOW_SURROGATE
#define COMBINE_SURROGATES
+ 3 additional macros:
#define IS_NONBMP
#define HIGH_SURROGATE
#define LOW_SURROGATE
So the two issue looks quite similar to me.