@@ -813,37 +813,80 @@ PEP 594: dead batteries
813813 * :mod: `!xdrlib `.
814814 (Contributed by Victor Stinner in :gh: `104773 `.)
815815
816- * Remove support for the keyword-argument method of creating
817- :class: `typing.TypedDict ` types, deprecated in Python 3.11.
818- (Contributed by Tomas Roun in :gh: `104786 `.)
819-
816+ 2to3
817+ ----
820818
821819* Remove the ``2to3 `` program and the :mod: `!lib2to3 ` module,
822820 deprecated in Python 3.11.
823821 (Contributed by Victor Stinner in :gh: `104780 `.)
824822
825- * Namespaces ``typing.io `` and ``typing.re ``, deprecated in Python 3.8,
826- are now removed. The items in those namespaces can be imported directly
827- from :mod: `typing `. (Contributed by Sebastian Rittau in :gh: `92871 `.)
828-
829- * Remove the untested and undocumented :mod: `webbrowser ` :class: `!MacOSX ` class,
830- deprecated in Python 3.11.
831- Use the :class: `!MacOSXOSAScript ` class (introduced in Python 3.2) instead.
832- (Contributed by Hugo van Kemenade in :gh: `104804 `.)
833-
834- * Remove support for using :class: `pathlib.Path ` objects as context managers.
835- This functionality was deprecated and made a no-op in Python 3.9.
823+ configparser
824+ ------------
836825
837826* Remove the undocumented :class: `!configparser.LegacyInterpolation ` class,
838827 deprecated in the docstring since Python 3.2,
839828 and with a deprecation warning since Python 3.11.
840829 (Contributed by Hugo van Kemenade in :gh: `104886 `.)
841830
831+ locale
832+ ------
833+
834+ * Remove ``locale.resetlocale() `` function deprecated in Python 3.11:
835+ use ``locale.setlocale(locale.LC_ALL, "") `` instead.
836+ (Contributed by Victor Stinner in :gh: `104783 `.)
837+
838+ logging
839+ -------
840+
841+ * :mod: `logging `: Remove undocumented and untested ``Logger.warn() `` and
842+ ``LoggerAdapter.warn() `` methods and ``logging.warn() `` function. Deprecated
843+ since Python 3.3, they were aliases to the :meth: `logging.Logger.warning `
844+ method, :meth: `!logging.LoggerAdapter.warning ` method and
845+ :func: `logging.warning ` function.
846+ (Contributed by Victor Stinner in :gh: `105376 `.)
847+
848+ pathlib
849+ -------
850+
851+ * Remove support for using :class: `pathlib.Path ` objects as context managers.
852+ This functionality was deprecated and made a no-op in Python 3.9.
853+
854+ re
855+ --
856+
857+ * Remove undocumented, never working, and deprecated ``re.template `` function
858+ and ``re.TEMPLATE `` flag (and ``re.T `` alias).
859+ (Contributed by Serhiy Storchaka and Nikita Sobolev in :gh: `105687 `.)
860+
861+ tkinter
862+ -------
863+
864+ * Remove the :mod: `!tkinter.tix ` module, deprecated in Python 3.6. The
865+ third-party Tix library which the module wrapped is unmaintained.
866+ (Contributed by Zachary Ware in :gh: `75552 `.)
867+
868+ turtle
869+ ------
870+
842871* Remove the :meth: `!turtle.RawTurtle.settiltangle ` method,
843872 deprecated in docs since Python 3.1
844873 and with a deprecation warning since Python 3.11.
845874 (Contributed by Hugo van Kemenade in :gh: `104876 `.)
846875
876+ typing
877+ ------
878+
879+ * Namespaces ``typing.io `` and ``typing.re ``, deprecated in Python 3.8,
880+ are now removed. The items in those namespaces can be imported directly
881+ from :mod: `typing `. (Contributed by Sebastian Rittau in :gh: `92871 `.)
882+
883+ * Remove support for the keyword-argument method of creating
884+ :class: `typing.TypedDict ` types, deprecated in Python 3.11.
885+ (Contributed by Tomas Roun in :gh: `104786 `.)
886+
887+ unittest
888+ --------
889+
847890* Removed the following :mod: `unittest ` functions, deprecated in Python 3.11:
848891
849892 * :func: `!unittest.findTestCases `
@@ -862,26 +905,8 @@ PEP 594: dead batteries
862905 method, deprecated in Python 3.11.
863906 (Contributed by Hugo van Kemenade in :gh: `104992 `.)
864907
865- * Remove the :mod: `!tkinter.tix ` module, deprecated in Python 3.6. The
866- third-party Tix library which the module wrapped is unmaintained.
867- (Contributed by Zachary Ware in :gh: `75552 `.)
868-
869- * Remove the old trashcan macros ``Py_TRASHCAN_SAFE_BEGIN `` and
870- ``Py_TRASHCAN_SAFE_END ``. They should be replaced by the new macros
871- ``Py_TRASHCAN_BEGIN `` and ``Py_TRASHCAN_END ``. The new macros were
872- added in Python 3.8 and the old macros were deprecated in Python 3.11.
873- (Contributed by Irit Katriel in :gh: `105111 `.)
874-
875- * Remove ``locale.resetlocale() `` function deprecated in Python 3.11:
876- use ``locale.setlocale(locale.LC_ALL, "") `` instead.
877- (Contributed by Victor Stinner in :gh: `104783 `.)
878-
879- * :mod: `logging `: Remove undocumented and untested ``Logger.warn() `` and
880- ``LoggerAdapter.warn() `` methods and ``logging.warn() `` function. Deprecated
881- since Python 3.3, they were aliases to the :meth: `logging.Logger.warning `
882- method, :meth: `!logging.LoggerAdapter.warning ` method and
883- :func: `logging.warning ` function.
884- (Contributed by Victor Stinner in :gh: `105376 `.)
908+ urllib
909+ ------
885910
886911* Remove *cafile *, *capath * and *cadefault * parameters of the
887912 :func: `urllib.request.urlopen ` function, deprecated in Python 3.6: use the
@@ -891,50 +916,31 @@ PEP 594: dead batteries
891916 certificates for you.
892917 (Contributed by Victor Stinner in :gh: `105382 `.)
893918
919+ webbrowser
920+ ----------
921+
922+ * Remove the untested and undocumented :mod: `webbrowser ` :class: `!MacOSX ` class,
923+ deprecated in Python 3.11.
924+ Use the :class: `!MacOSXOSAScript ` class (introduced in Python 3.2) instead.
925+ (Contributed by Hugo van Kemenade in :gh: `104804 `.)
926+
894927* Remove deprecated ``webbrowser.MacOSXOSAScript._name `` attribute.
895928 Use :attr: `webbrowser.MacOSXOSAScript.name <webbrowser.controller.name> `
896929 attribute instead.
897930 (Contributed by Nikita Sobolev in :gh: `105546 `.)
898931
899- * Remove undocumented, never working, and deprecated ``re.template `` function
900- and ``re.TEMPLATE `` flag (and ``re.T `` alias).
901- (Contributed by Serhiy Storchaka and Nikita Sobolev in :gh: `105687 `.)
932+ Others
933+ ------
902934
935+ * None yet
903936
904937Porting to Python 3.13
905938======================
906939
907940This section lists previously described changes and other bugfixes
908941that may require changes to your code.
909942
910- * The old trashcan macros ``Py_TRASHCAN_SAFE_BEGIN `` and ``Py_TRASHCAN_SAFE_END ``
911- were removed. They should be replaced by the new macros ``Py_TRASHCAN_BEGIN ``
912- and ``Py_TRASHCAN_END ``.
913-
914- A tp_dealloc function that has the old macros, such as::
915-
916- static void
917- mytype_dealloc(mytype *p)
918- {
919- PyObject_GC_UnTrack(p);
920- Py_TRASHCAN_SAFE_BEGIN(p);
921- ...
922- Py_TRASHCAN_SAFE_END
923- }
924-
925- should migrate to the new macros as follows::
926-
927- static void
928- mytype_dealloc(mytype *p)
929- {
930- PyObject_GC_UnTrack(p);
931- Py_TRASHCAN_BEGIN(p, mytype_dealloc)
932- ...
933- Py_TRASHCAN_END
934- }
935-
936- Note that ``Py_TRASHCAN_BEGIN `` has a second argument which
937- should be the deallocation function it is in.
943+ * None yet
938944
939945
940946Build Changes
@@ -1130,6 +1136,35 @@ Porting to Python 3.13
11301136 are now undefined by ``<Python.h> ``.
11311137 (Contributed by Victor Stinner in :gh: `85283 `.)
11321138
1139+ * The old trashcan macros ``Py_TRASHCAN_SAFE_BEGIN `` and ``Py_TRASHCAN_SAFE_END ``
1140+ were removed. They should be replaced by the new macros ``Py_TRASHCAN_BEGIN ``
1141+ and ``Py_TRASHCAN_END ``.
1142+
1143+ A tp_dealloc function that has the old macros, such as::
1144+
1145+ static void
1146+ mytype_dealloc(mytype *p)
1147+ {
1148+ PyObject_GC_UnTrack(p);
1149+ Py_TRASHCAN_SAFE_BEGIN(p);
1150+ ...
1151+ Py_TRASHCAN_SAFE_END
1152+ }
1153+
1154+ should migrate to the new macros as follows::
1155+
1156+ static void
1157+ mytype_dealloc(mytype *p)
1158+ {
1159+ PyObject_GC_UnTrack(p);
1160+ Py_TRASHCAN_BEGIN(p, mytype_dealloc)
1161+ ...
1162+ Py_TRASHCAN_END
1163+ }
1164+
1165+ Note that ``Py_TRASHCAN_BEGIN `` has a second argument which
1166+ should be the deallocation function it is in.
1167+
11331168* The :c:func: `PyUnicode_AsUTF8 ` function now raises an exception if the string
11341169 contains embedded null characters. To accept embedded null characters and
11351170 truncate on purpose at the first null byte,
@@ -1264,6 +1299,12 @@ Removed
12641299 Configuration <init-config>` instead (:pep: `587 `), added to Python 3.8.
12651300 (Contributed by Victor Stinner in :gh: `105145 `.)
12661301
1302+ * Remove the old trashcan macros ``Py_TRASHCAN_SAFE_BEGIN `` and
1303+ ``Py_TRASHCAN_SAFE_END ``. They should be replaced by the new macros
1304+ ``Py_TRASHCAN_BEGIN `` and ``Py_TRASHCAN_END ``. The new macros were
1305+ added in Python 3.8 and the old macros were deprecated in Python 3.11.
1306+ (Contributed by Irit Katriel in :gh: `105111 `.)
1307+
12671308* Remove ``PyEval_InitThreads() `` and ``PyEval_ThreadsInitialized() ``
12681309 functions, deprecated in Python 3.9. Since Python 3.7, ``Py_Initialize() ``
12691310 always creates the GIL: calling ``PyEval_InitThreads() `` did nothing and
0 commit comments