Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 07:00:37 -0500] rev 36653
py3: do not pass a list of iterators to computephasesmapsets()
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 06:57:02 -0500] rev 36652
cext: fix computephasesmapsets() not to return without setting an exception
Spotted by map() of Python 3.
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 06:44:47 -0500] rev 36651
py3: do not pass a float to dict_new_presized()
I really don't like the division operator of Python 3 since I'm not doing
a math.
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 06:41:52 -0500] rev 36650
cext: mark tuple_format as a constant
Just for clarity.
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 06:18:47 -0500] rev 36649
py3: bulk-replace 'const char*' format specifier passed to PyArg_ParseTuple*()
Perhaps we need this because 's' accepts a unicode string.
https://docs.python.org/3/c-api/arg.html#strings-and-buffers
Substituted using the following pattern with some manual fixes:
'\b(PyArg_ParseTuple)\((\s*\w+,\s*)"([^"]+)"'
'\b(PyArg_ParseTupleAndKeywords)\((\s*\w+,\s*\w+,\s*)"([^"]+)"'
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 06:08:22 -0500] rev 36648
py3: bulk-replace bytes format specifier passed to Py_BuildValue()
On Python 3, "s" means a utf-8 string. We have to use "y" for bytes, sigh.
https://docs.python.org/3/c-api/arg.html#c.Py_BuildValue
Substituted using the following pattern with some manual fixes:
'\b(Py_BuildValue)\((\s*)"([^"]+)"'
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 05:58:41 -0500] rev 36647
py3: add PY23() macro to switch string literal depending on python version
I have no better idea to work around the bytes-unicode divergence of
Py_BuildValue(). Maybe we can write a code transformer for C extensions? :)