Skip to content

gh-95913: Edit, sort & expand 3.11 WhatsNew Porting section #98585

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 4 commits into from
Oct 24, 2022
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 31 additions & 30 deletions Doc/whatsnew/3.11.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1765,52 +1765,53 @@ in the Python API that may require changes to your Python code.
Porting notes for the C API are
:ref:`listed separately <whatsnew311-c-api-porting>`.

* Prohibited passing non-:class:`concurrent.futures.ThreadPoolExecutor`
executors to :meth:`loop.set_default_executor` following a deprecation in
Python 3.8.
(Contributed by Illia Volochii in :issue:`43234`.)

* :func:`open`, :func:`io.open`, :func:`codecs.open` and
:class:`fileinput.FileInput` no longer accept ``'U'`` ("universal newline")
in the file mode. This flag was deprecated since Python 3.3. In Python 3, the
"universal newline" is used by default when a file is open in text mode. The
:ref:`newline parameter <open-newline-parameter>` of :func:`open` controls
how universal newlines works.
in the file mode. In Python 3, "universal newline" mode is used by default
whenever a file is opened in text mode,
and the ``'U'`` flag has been deprecated since Python 3.3.
The :ref:`newline parameter <open-newline-parameter>`
to these functions controls how universal newlines work.
(Contributed by Victor Stinner in :issue:`37330`.)

* The :mod:`pdb` module now reads the :file:`.pdbrc` configuration file with
the ``'utf-8'`` encoding.
(Contributed by Srinivas Reddy Thatiparthy (శ్రీనివాస్ రెడ్డి తాటిపర్తి) in :issue:`41137`.)
* :class:`ast.AST` node positions are now validated when provided to
:func:`compile` and other related functions. If invalid positions are detected,
a :exc:`ValueError` will be raised. (Contributed by Pablo Galindo in :gh:`93351`)

* Prohibited passing non-:class:`concurrent.futures.ThreadPoolExecutor`
executors to :meth:`asyncio.loop.set_default_executor`
following a deprecation in Python 3.8.
(Contributed by Illia Volochii in :issue:`43234`.)

* :mod:`calendar`: The :class:`calendar.LocaleTextCalendar` and
:class:`calendar.LocaleHTMLCalendar` classes now use
:func:`locale.getlocale`, instead of using :func:`locale.getdefaultlocale`,
if no locale is specified.
(Contributed by Victor Stinner in :issue:`46659`.)

* Global inline flags (e.g. ``(?i)``) can now only be used at the start of
the regular expressions. Using them not at the start of expression was
deprecated since Python 3.6.
(Contributed by Serhiy Storchaka in :issue:`47066`.)

* :mod:`re` module: Fix a few long-standing bugs where, in rare cases,
capturing group could get wrong result. So the result may be different than
before.
(Contributed by Ma Lin in :issue:`35859`.)
* The :mod:`pdb` module now reads the :file:`.pdbrc` configuration file with
the ``'UTF-8'`` encoding.
(Contributed by Srinivas Reddy Thatiparthy (శ్రీనివాస్ రెడ్డి తాటిపర్తి) in :issue:`41137`.)

* The *population* parameter of :func:`random.sample` must be a sequence.
Automatic conversion of sets to lists is no longer supported. If the sample size
* The *population* parameter of :func:`random.sample` must be a sequence,
and automatic conversion of :class:`set`\s to :class:`list`\s
is no longer supported. Also, if the sample size
is larger than the population size, a :exc:`ValueError` is raised.
(Contributed by Raymond Hettinger in :issue:`40465`.)

* :class:`ast.AST` node positions are now validated when provided to
:func:`compile` and other related functions. If invalid positions are detected,
a :exc:`ValueError` will be raised. (Contributed by Pablo Galindo in :gh:`93351`)
* The *random* optional parameter of :func:`random.shuffle` was removed.
It was previously an arbitrary random function to use for the shuffle;
now, :func:`random.random` (its previous default) will always be used.

* :c:member:`~PyTypeObject.tp_dictoffset` should be treated as write-only.
It can be set to describe C extension clases to the VM, but should be regarded
as meaningless when read. To get the pointer to the object's dictionary call
:c:func:`PyObject_GenericGetDict` instead.
* In :mod:`re` :ref:`re-syntax`, global inline flags (e.g. ``(?i)``)
can now only be used at the start of regular expressions.
Using them elsewhere has been deprecated since Python 3.6.
(Contributed by Serhiy Storchaka in :issue:`47066`.)

* In the :mod:`re` module, several long-standing bugs where fixed that,
in rare cases, could cause capture groups to get the wrong result.
Therefore, this could change the captured output in these cases.
(Contributed by Ma Lin in :issue:`35859`.)


.. _whatsnew311-build-changes:
Expand Down