mirror of https://github.com/swig/swig.git
Follow-up work on top of the initial Python 2.x removal: it finishes the removal and fixes several issues found while reviewing the change. Correctness fixes: - pyrun.swg: SwigPyPacked_str passed the type name straight to PyUnicode_FromFormat as its format string, so a type name containing a '%' would be misinterpreted. Use PyUnicode_FromString instead. - Doc/Manual/Varargs.html: the (...) varargs freearg typemap example lost its free() loop when the surrounding Python 2 guard was removed, leaking the memory the in typemap allocates. Restore the loop, now unconditional. - Doc/Manual/Typemaps.html: the PyInt_Check to PyLong_Check substitution left two typecheck excerpts reading PyLong_Check || PyLong_Check; collapse each back to a single check. Code generator (Source/Modules/python.cxx): - Emit the native class X(..., metaclass=_SwigNonDynamicMeta) form for nondynamic classes in all three base-list branches (object, Exception and explicit bases), and drop the Python 2 _swig_add_metaclass helper. - Emit a plain import builtins as __builtin__ instead of the Python 2 try/except import fallback. - Update a stale Python 2.x comment. Remove the deprecated embed.i library (it only ever worked with Python 2): - Delete Lib/python/embed.i and the Lib/python/Makefile.in reference to it. - Remove the python_static and python_static_cpp targets from Examples/Makefile.in and the now-orphaned static: targets that used them from the Examples/python example Makefiles. - Remove the embed.i section from the manual. Python test suite (Examples/test-suite/python): - profiletest_runme.py: convert the Python 2 print statements to print(). - doxygen_constructors_runme.py: drop the dead sys.version_info < (3, 0) branch, keeping the Python 3 super().__init__() form. - li_cdata_bytes_runme.py and li_cdata_bytes_cpp_runme.py: drop the dead exit-on-Python-2 version guard. - file_test_runme.py and python_abstractbase_runme.py: drop the now-unused import sys left behind by guard removal. Documentation (Doc/Manual/Python.html): - Drop the embed.i and SWIG_PYTHON_STRICT_UNICODE_WCHAR sections; the latter macro was Python 2 only and no longer exists, wide strings are unicode-only by default. - De-duplicate the %pythonabc example and drop a stale collections.abc compatibility note. - Update the version support statement and other stale Python 2 mentions. Other cleanups: - Tools/mkdist.py: raise the minimum Python version check to Python 3. - Reword stale Python 2 comments in pyrun.swg, pyiterators.swg and pycontainer.swg, and fix a PyString_FromFormat left in a pyclasses.swg doc comment. - CHANGES.current: record that Python 2 support has been dropped. Assisted-by: Claude Code (Opus 4.8) |
||
|---|---|---|
| .. | ||
| Makefile | ||
| example.h | ||
| example.i | ||
| runme.py | ||