.. bpo: 42988
.. date: 2021-03-24-14-16-56
.. nonce: P2aNco
.. release date: 2021-04-05
.. section: Security

:cve:`2021-3426`: Remove the ``getfile`` feature of the :mod:`pydoc` module
which could be abused to read arbitrary files on the disk (directory
traversal vulnerability). Moreover, even source code of Python modules can
contain sensitive data like passwords. Vulnerability reported by David
Schwörer.

..

.. bpo: 43285
.. date: 2021-03-13-03-48-14
.. nonce: g-Hah3
.. section: Security

:mod:`ftplib` no longer trusts the IP address value returned from the server
in response to the PASV command by default.  This prevents a malicious FTP
server from using the response to probe IPv4 address and port combinations
on the client network.

Code that requires the former vulnerable behavior may set a
``trust_server_pasv_ipv4_address`` attribute on their :class:`ftplib.FTP`
instances to ``True`` to re-enable it.

..

.. bpo: 43439
.. date: 2021-03-08-23-06-07
.. nonce: 5U3lXm
.. section: Security

Add audit hooks for :func:`gc.get_objects`, :func:`gc.get_referrers` and
:func:`gc.get_referents`. Patch by Pablo Galindo.

..

.. bpo: 27129
.. date: 2021-04-03-22-04-46
.. nonce: u_ehHb
.. section: Core and Builtins

Update CPython bytecode magic number.

..

.. bpo: 43672
.. date: 2021-03-31-09-12-54
.. nonce: jTT5uG
.. section: Core and Builtins

Raise ImportWarning when calling find_loader().

..

.. bpo: 43660
.. date: 2021-03-29-19-50-34
.. nonce: scTgag
.. section: Core and Builtins

Fix crash that happens when replacing ``sys.stderr`` with a callable that
can remove the object while an exception is being printed. Patch by Pablo
Galindo.

..

.. bpo: 27129
.. date: 2021-03-29-16-20-29
.. nonce: BF03A5
.. section: Core and Builtins

The bytecode interpreter uses instruction, rather byte, offsets internally.
This reduces the number of EXTENDED_ARG instructions needed and streamlines
instruction dispatch a bit.

..

.. bpo: 40645
.. date: 2021-03-29-11-55-06
.. nonce: PhaT-B
.. section: Library

Fix reference leak in the :mod:`!_hashopenssl` extension. Patch by Pablo
Galindo.

..

.. bpo: 42134
.. date: 2021-03-26-17-30-19
.. nonce: G4Sjxg
.. section: Core and Builtins

Calls to find_module() by the import system now raise ImportWarning.

..

.. bpo: 41064
.. date: 2021-03-24-00-32-20
.. nonce: _H0K_g
.. section: Core and Builtins

Improve the syntax error for invalid usage of double starred elements ('**')
in f-strings. Patch by Pablo Galindo.

..

.. bpo: 43575
.. date: 2021-03-21-12-26-32
.. nonce: pl-nSg
.. section: Core and Builtins

Speed up calls to ``map()`` by using the :pep:`590` ``vectorcall`` calling
convention. Patch by Donghee Na.

..

.. bpo: 42137
.. date: 2021-03-20-19-54-47
.. nonce: A8aQvj
.. section: Core and Builtins

The import system now prefers using ``__spec__`` for ``ModuleType.__repr__``
over ``module_repr()``.

..

.. bpo: 43452
.. date: 2021-03-20-01-21-37
.. nonce: tDVJkc
.. section: Core and Builtins

Added micro-optimizations to ``_PyType_Lookup()`` to improve cache lookup
performance in the common case of cache hits.

..

.. bpo: 43555
.. date: 2021-03-19-22-49-40
.. nonce: ZmhYSA
.. section: Core and Builtins

Report the column offset for :exc:`SyntaxError` for invalid line
continuation characters. Patch by Pablo Galindo.

..

.. bpo: 43517
.. date: 2021-03-16-17-12-54
.. nonce: zAo6Ws
.. section: Core and Builtins

Fix misdetection of circular imports when using ``from pkg.mod import
attr``, which caused false positives in non-trivial multi-threaded code.

..

.. bpo: 43497
.. date: 2021-03-15-07-50-30
.. nonce: Uc5ZCJ
.. section: Core and Builtins

Emit SyntaxWarnings for assertions with tuple constants, this is a
regression introduced in python3.7

..

.. bpo: 39316
.. date: 2021-03-14-16-44-50
.. nonce: Ns3a_F
.. section: Core and Builtins

Tracing now has correct line numbers for attribute accesses when the
attribute is on a different line from the object. Improves debugging and
profiling for multi-line method chains.

..

.. bpo: 35883
.. date: 2021-03-13-13-57-21
.. nonce: UyGpdG
.. section: Core and Builtins

Python no longer fails at startup with a fatal error if a command line
argument contains an invalid Unicode character. The
:c:func:`Py_DecodeLocale` function now escapes byte sequences which would be
decoded as Unicode characters outside the [U+0000; U+10ffff] range.

..

.. bpo: 43410
.. date: 2021-03-05-17-23-36
.. nonce: lCzIg0
.. section: Core and Builtins

Fix a bug that was causing the parser to crash when emitting syntax errors
when reading input from stdin. Patch by Pablo Galindo

..

.. bpo: 43406
.. date: 2021-03-04-22-53-10
.. nonce: Na_VpA
.. section: Core and Builtins

Fix a possible race condition where ``PyErr_CheckSignals`` tries to execute
a non-Python signal handler.

..

.. bpo: 42128
.. date: 2021-03-03-19-04-23
.. nonce: VouZjn
.. section: Core and Builtins

Add ``__match_args__`` to :ref:`struct sequence objects <struct-sequence-objects>`.
Patch by Pablo Galindo.

..

.. bpo: 43390
.. date: 2021-03-03-17-58-49
.. nonce: epPpwV
.. section: Core and Builtins

CPython now sets the ``SA_ONSTACK`` flag in ``PyOS_setsig`` for the VM's
default signal handlers.  This is friendlier to other in-process code that
an extension module or embedding use could pull in (such as Golang's cgo)
where tiny thread stacks are the norm and ``sigaltstack()`` has been used to
provide for signal handlers.  This is a no-op change for the vast majority
of processes that don't use sigaltstack.

..

.. bpo: 43287
.. date: 2021-02-22-03-01-02
.. nonce: aTs6fO
.. section: Core and Builtins

Speed up calls to ``filter()`` by using the :pep:`590` ``vectorcall``
calling convention. Patch by Donghee Na.

..

.. bpo: 37448
.. date: 2021-02-21-14-19-35
.. nonce: btl7vO
.. section: Core and Builtins

Add a radix tree based memory map to track in-use obmalloc arenas. Use to
replace the old implementation of address_in_range(). The radix tree
approach makes it easy to increase pool sizes beyond the OS page size.
Boosting the pool and arena size allows obmalloc to handle a significantly
higher percentage of requests from its ultra-fast paths.

It also has the advantage of eliminating the memory unsanitary behavior of
the previous address_in_range(). The old address_in_range() was marked with
the annotations _Py_NO_SANITIZE_ADDRESS, _Py_NO_SANITIZE_THREAD, and
_Py_NO_SANITIZE_MEMORY. Those annotations are no longer needed.

To disable the radix tree map, set a preprocessor flag as follows:
``-DWITH_PYMALLOC_RADIX_TREE=0``.

Co-authored-by: Tim Peters <tim.peters@gmail.com>

..

.. bpo: 29988
.. date: 2020-02-03-13-23-10
.. nonce: 8_UB5w
.. section: Core and Builtins

Only handle asynchronous exceptions and requests to drop the GIL when
returning from a call or on the back edges of loops. Makes sure that
:meth:`~object.__exit__` is always called in with statements, even for interrupts.

..

.. bpo: 43720
.. date: 2021-04-03-13-45-51
.. nonce: FDZ5cZ
.. section: Library

Document various stdlib deprecations in imp, pkgutil, and importlib.util for
removal in Python 3.12.

..

.. bpo: 43433
.. date: 2021-03-28-23-50-20
.. nonce: so9j5G
.. section: Library

:class:`xmlrpc.client.ServerProxy` no longer ignores query and fragment in
the URL of the server.

..

.. bpo: 31956
.. date: 2021-03-28-16-53-25
.. nonce: Lt_67U
.. section: Library

The :meth:`~array.array.index` method of :class:`array.array` now has
optional *start* and *stop* parameters.

..

.. bpo: 40066
.. date: 2021-03-25-21-26-30
.. nonce: 7EBQ3_
.. section: Library

Enum: adjust ``repr()`` to show only enum and member name (not value, nor
angle brackets) and ``str()`` to show only member name.  Update and improve
documentation to match.

..

.. bpo: 42136
.. date: 2021-03-25-08-44-26
.. nonce: rRY9e1
.. section: Library

Deprecate all module_repr() methods found in importlib as their use is being
phased out by Python 3.12.

..

.. bpo: 35930
.. date: 2021-03-23-17-18-56
.. nonce: RZ51pM
.. section: Library

Raising an exception raised in a "future" instance will create reference
cycles.

..

.. bpo: 41369
.. date: 2021-03-21-17-50-42
.. nonce: -fpmYZ
.. section: Library

Finish updating the vendored libmpdec to version 2.5.1.  Patch by Stefan
Krah.

..

.. bpo: 43422
.. date: 2021-03-21-17-02-52
.. nonce: POk6cU
.. section: Library

Revert the _decimal C API which was added in bpo-41324.

..

.. bpo: 43577
.. date: 2021-03-21-10-13-17
.. nonce: m7JnAV
.. section: Library

Fix deadlock when using :class:`ssl.SSLContext` debug callback with
:meth:`ssl.SSLContext.sni_callback`.

..

.. bpo: 43571
.. date: 2021-03-20-17-40-35
.. nonce: acAL0W
.. section: Library

It's now possible to create MPTCP sockets with IPPROTO_MPTCP

..

.. bpo: 43542
.. date: 2021-03-20-15-43-25
.. nonce: 6bt2F6
.. section: Library

``image/heic`` and ``image/heif`` were added to :mod:`mimetypes`.

..

.. bpo: 40645
.. date: 2021-03-19-10-22-17
.. nonce: 5pXhb-
.. section: Library

The :mod:`hmac` module now uses OpenSSL's HMAC implementation when digestmod
argument is a hash name or builtin hash function.

..

.. bpo: 43510
.. date: 2021-03-16-17-20-33
.. nonce: -BeQH_
.. section: Library

Implement :pep:`597`: Add ``EncodingWarning`` warning, ``-X
warn_default_encoding`` option, :envvar:`PYTHONWARNDEFAULTENCODING`
environment variable and ``encoding="locale"`` argument value.

..

.. bpo: 43521
.. date: 2021-03-16-16-05-02
.. nonce: mRT6fh
.. section: Library

``ast.unparse`` can now render NaNs and empty sets.

..

.. bpo: 42914
.. date: 2021-03-14-21-47-28
.. nonce: 9U1o33
.. section: Library

:func:`pprint.pprint` gains a new boolean ``underscore_numbers`` optional
argument to emit integers with thousands separated by an underscore
character for improved readability (for example ``1_000_000`` instead of
``1000000``).

..

.. bpo: 41361
.. date: 2021-03-13-08-18-01
.. nonce: lXDIlr
.. section: Library

:meth:`~collections.deque.rotate` calls are now slightly faster due to
faster argument parsing.

..

.. bpo: 43423
.. date: 2021-03-11-15-44-18
.. nonce: rRomRD
.. section: Library

:func:`subprocess.communicate` no longer raises an IndexError when there is
an empty stdout or stderr IO buffer during a timeout on Windows.

..

.. bpo: 27820
.. date: 2021-03-10-14-07-44
.. nonce: Wwdy-r
.. section: Library

Fixed long-standing bug of smtplib.SMTP where doing AUTH LOGIN with
initial_response_ok=False will fail.

The cause is that SMTP.auth_login _always_ returns a password if provided
with a challenge string, thus non-compliant with the standard for AUTH
LOGIN.

Also fixes bug with the test for smtpd.

..

.. bpo: 43445
.. date: 2021-03-09-11-36-19
.. nonce: jnj-UB
.. section: Library

Add frozen modules to :data:`sys.stdlib_module_names`. For example, add
``"_frozen_importlib"`` and ``"_frozen_importlib_external"`` names.

..

.. bpo: 43245
.. date: 2021-03-08-22-14-37
.. nonce: nXL-MC
.. section: Library

Add keyword arguments support to ``ChainMap.new_child()``.

..

.. bpo: 29982
.. date: 2021-03-07-23-23-03
.. nonce: Q9iszT
.. section: Library

Add optional parameter *ignore_cleanup_errors* to
:func:`tempfile.TemporaryDirectory` and allow multiple :func:`cleanup`
attempts. Contributed by C.A.M. Gerlach.

..

.. bpo: 43428
.. date: 2021-03-07-18-54-39
.. nonce: br0XmX
.. section: Library

Include changes from `importlib_metadata 3.7
<https://importlib-metadata.readthedocs.io/en/latest/history.html#v3-7-0>`_:

Performance enhancements to distribution discovery.

``entry_points`` only returns unique distributions.

Introduces new ``EntryPoints`` object for containing a set of entry points
with convenience methods for selecting entry points by group or name.
``entry_points`` now returns this object if selection parameters are
supplied but continues to return a dict object for compatibility. Users are
encouraged to rely on the selection interface. The dict object result is
likely to be deprecated in the future.

Added packages_distributions function to return a mapping of packages to the
distributions that provide them.

..

.. bpo: 43332
.. date: 2021-03-07-11-23-20
.. nonce: weatsh
.. section: Library

Improves the networking efficiency of :mod:`http.client` when using a proxy
via :meth:`~HTTPConnection.set_tunnel`.  Fewer small send calls are made
during connection setup.

..

.. bpo: 43420
.. date: 2021-03-07-08-03-31
.. nonce: cee_X5
.. section: Library

Improve performance of :class:`fractions.Fraction` arithmetics for large
components.  Contributed by Sergey B. Kirpichev.

..

.. bpo: 43356
.. date: 2021-03-04-21-51-20
.. nonce: X7IGBM
.. section: Library

Allow passing a signal number to ``_thread.interrupt_main()``.

..

.. bpo: 43399
.. date: 2021-03-04-17-53-46
.. nonce: Wn95u-
.. section: Library

Fix ``ElementTree.extend`` not working on iterators when using the Python
implementation

..

.. bpo: 43369
.. date: 2021-03-02-15-25-28
.. nonce: F4knlQ
.. section: Library

Improve :mod:`sqlite3` error handling: If ``sqlite3_column_text()`` and
``sqlite3_column_blob()`` set ``SQLITE_NOMEM``, :exc:`MemoryError` is now
raised. Patch by Erlend E. Aasland.

..

.. bpo: 43368
.. date: 2021-03-02-13-45-05
.. nonce: t9XEkQ
.. section: Library

Fix a regression introduced in PR 24562, where an empty bytestring was
fetched as ``None`` instead of ``b''`` in :mod:`sqlite3`. Patch by Mariusz
Felisiak.

..

.. bpo: 41282
.. date: 2021-03-02-09-54-22
.. nonce: xL4h94
.. section: Library

Fixed stacklevel of ``DeprecationWarning`` emitted from ``import
distutils``.

..

.. bpo: 42129
.. date: 2021-02-28-04-21-35
.. nonce: V0KifQ
.. section: Library

``importlib.resources`` now honors namespace packages, merging resources
from each location in the namespace as introduced in ``importlib_resources``
3.2 and including incidental changes through 5.0.3.

..

.. bpo: 43295
.. date: 2021-02-22-22-54-40
.. nonce: h_ffu7
.. section: Library

:meth:`datetime.datetime.strptime` now raises ``ValueError`` instead of
``IndexError`` when matching ``'z'`` with the ``%z`` format specifier.

..

.. bpo: 43125
.. date: 2021-02-07-19-13-30
.. nonce: AqNoMa
.. section: Library

Return empty string if base64mime.body_encode receive empty bytes

..

.. bpo: 43084
.. date: 2021-01-31-17-31-13
.. nonce: i8nLpK
.. section: Library

:func:`curses.window.enclose` returns now ``True`` or ``False`` (as was
documented) instead of ``1`` or ``0``.

..

.. bpo: 42994
.. date: 2021-01-21-16-58-34
.. nonce: El0Ksp
.. section: Library

Add MIME types for opus, AAC, 3gpp and 3gpp2

..

.. bpo: 14678
.. date: 2021-01-07-21-25-49
.. nonce: 1zniCH
.. section: Library

Add an invalidate_caches() method to the zipimport.zipimporter class to
support importlib.invalidate_caches(). Patch by Desmond Cheong.

..

.. bpo: 42782
.. date: 2020-12-29-13-46-57
.. nonce: 3r0HFY
.. section: Library

Fail fast in :func:`shutil.move` to avoid creating destination directories
on failure.

..

.. bpo: 40066
.. date: 2020-09-23-21-58-34
.. nonce: f1dr_5
.. section: Library

Enum's ``repr()`` and ``str()`` have changed: ``repr()`` is now
*EnumClass.MemberName* and ``str()`` is *MemberName*.  Additionally, stdlib
Enum's whose contents are available as module attributes, such as
``RegexFlag.IGNORECASE``, have their ``repr()`` as *module.name*, e.g.
``re.IGNORECASE``.

..

.. bpo: 26053
.. date: 2020-09-01-10-12-13
.. nonce: hXikw_
.. section: Library

Fixed bug where the :mod:`pdb` interactive run command echoed the args from
the shell command line, even if those have been overridden at the pdb
prompt.

..

.. bpo: 24160
.. date: 2020-08-28-23-07-53
.. nonce: MSGnKr
.. section: Library

Fixed bug where breakpoints did not persist across multiple debugger
sessions in :mod:`pdb`'s interactive mode.

..

.. bpo: 40701
.. date: 2020-05-27-05-42-39
.. nonce: PBIgW1
.. section: Library

When the :data:`tempfile.tempdir` global variable is set to a value of type
bytes, it is now handled consistently.  Previously exceptions could be
raised from some tempfile APIs when the directory did not already exist in
this situation.  Also ensures that the :func:`tempfile.gettempdir` and
:func:`tempfile.gettempdirb` functions *always* return ``str`` and
``bytes`` respectively.

..

.. bpo: 39342
.. date: 2020-01-15-11-15-35
.. nonce: S8PuJO
.. section: Library

Expose ``X509_V_FLAG_ALLOW_PROXY_CERTS`` as
:const:`~ssl.VERIFY_ALLOW_PROXY_CERTS` to allow proxy certificate validation
as explained in
https://docs.openssl.org/1.1.1/man7/proxy-certificates/.

..

.. bpo: 31861
.. date: 2018-08-24-01-08-09
.. nonce: -q9RKJ
.. section: Library

Add builtins.aiter and builtins.anext. Patch by Joshua Bronson (@jab),
Daniel Pope (@lordmauve), and Justin Wang (@justin39).

..

.. bpo: 43199
.. date: 2021-03-13-18-43-54
.. nonce: ZWA6KX
.. section: Documentation

Answer "Why is there no goto?" in the Design and History FAQ.

..

.. bpo: 43407
.. date: 2021-03-04-22-53-03
.. nonce: x570l5
.. section: Documentation

Clarified that a result from :func:`time.monotonic`,
:func:`time.perf_counter`, :func:`time.process_time`, or
:func:`time.thread_time` can be compared with the result from any following
call to the same function - not just the next immediate call.

..

.. bpo: 43354
.. date: 2021-03-02-12-55-34
.. nonce: ezZYkx
.. section: Documentation

Fix type documentation for ``Fault.faultCode``; the type has to be ``int``
instead of ``str``.

..

.. bpo: 41933
.. date: 2020-10-05-20-04-43
.. nonce: Pff94-
.. section: Documentation

Clarified wording of s * n in the Common Sequence Operations

..

.. bpo: 37945
.. date: 2021-03-31-11-38-42
.. nonce: HTUYhv
.. section: Tests

Fix test_getsetlocale_issue1813() of test_locale: skip the test if
``setlocale()`` fails. Patch by Victor Stinner.

..

.. bpo: 41561
.. date: 2021-03-18-10-34-42
.. nonce: pDg4w-
.. section: Tests

Add workaround for Ubuntu's custom OpenSSL security level policy.

..

.. bpo: 43179
.. date: 2021-03-31-12-20-23
.. nonce: Qbe1OD
.. section: Build

Introduce and correctly use ALIGNOF_X in place of SIZEOF_X for
alignment-related code in optimized string routines. Patch by Jessica
Clarke.

..

.. bpo: 43631
.. date: 2021-03-26-09-16-34
.. nonce: msJyPi
.. section: Build

Update macOS, Windows, and CI to OpenSSL 1.1.1k.

..

.. bpo: 43617
.. date: 2021-03-24-16-55-55
.. nonce: d69KAv
.. section: Build

Improve configure.ac: Check for presence of autoconf-archive package and
remove our copies of M4 macros.

..

.. bpo: 43466
.. date: 2021-03-11-00-14-47
.. nonce: N861Z5
.. section: Build

The ``configure`` script now supports ``--with-openssl-rpath`` option.

..

.. bpo: 43372
.. date: 2021-03-04-17-13-57
.. nonce: FfqDVL
.. section: Build

Use ``_freeze_importlib`` to generate code for the ``__hello__`` module.
This approach ensures the code matches the interpreter version.  Previously,
PYTHON_FOR_REGEN was used to generate the code, which might be wrong.  The
marshal format for code objects has changed with bpo-42246, commit 877df851.
Update the code and the expected code sizes in ctypes test_frozentable.

..

.. bpo: 43440
.. date: 2021-03-09-11-15-41
.. nonce: igy2Mn
.. section: Windows

Build :mod:`sqlite3` with the ``R*Tree`` module enabled. Patch by Erlend E.
Aasland.

..

.. bpo: 42225
.. date: 2021-03-29-16-22-27
.. nonce: iIeiLg
.. section: IDLE

Document that IDLE can fail on Unix either from misconfigured IP masquerade
rules or failure displaying complex colored (non-ascii) characters.

..

.. bpo: 43688
.. date: 2021-04-01-09-10-42
.. nonce: G4gs6k
.. section: C API

The limited C API is now supported if Python is built in debug mode (if the
``Py_DEBUG`` macro is defined). In the limited C API, the
:c:func:`Py_INCREF` and :c:func:`Py_DECREF` functions are now implemented as
opaque function calls, rather than accessing directly the
:c:member:`PyObject.ob_refcnt` member, if Python is built in debug mode and
the ``Py_LIMITED_API`` macro targets Python 3.10 or newer. It became
possible to support the limited C API in debug mode because the
:c:type:`PyObject` structure is the same in release and debug mode since
Python 3.8 (see :issue:`36465`).

The limited C API is still not supported in the ``--with-trace-refs``
special build (``Py_TRACE_REFS`` macro).

Patch by Victor Stinner.

..

.. bpo: 43244
.. date: 2021-03-24-01-22-14
.. nonce: 31-97x
.. section: C API

Remove the ``pyarena.h`` header file with functions:

* ``PyArena_New()``
* ``PyArena_Free()``
* ``PyArena_Malloc()``
* ``PyArena_AddPyObject()``

These functions were undocumented, excluded from the limited C API, and were
only used internally by the compiler. Patch by Victor Stinner.

..

.. bpo: 43244
.. date: 2021-03-23-20-53-41
.. nonce: VK3sLH
.. section: C API

Remove the compiler and parser functions using ``struct _mod`` type, because
the public AST C API was removed:

* ``PyAST_Compile()``
* ``PyAST_CompileEx()``
* ``PyAST_CompileObject()``
* ``PyFuture_FromAST()``
* ``PyFuture_FromASTObject()``
* ``PyParser_ASTFromFile()``
* ``PyParser_ASTFromFileObject()``
* ``PyParser_ASTFromFilename()``
* ``PyParser_ASTFromString()``
* ``PyParser_ASTFromStringObject()``

These functions were undocumented and excluded from the limited C API. Patch
by Victor Stinner.

..

.. bpo: 43244
.. date: 2021-03-19-12-56-11
.. nonce: VuIyOD
.. section: C API

Remove ``ast.h``, ``asdl.h``, and ``Python-ast.h`` header files. These
functions were undocumented and excluded from the limited C API. Most names
defined by these header files were not prefixed by ``Py`` and so could
create names conflicts. For example, ``Python-ast.h`` defined a ``Yield``
macro which was conflict with the ``Yield`` name used by the Windows
``<winbase.h>`` header. Use the Python :mod:`ast` module instead. Patch by
Victor Stinner.

..

.. bpo: 43541
.. date: 2021-03-18-12-44-33
.. nonce: ICigzd
.. section: C API

Fix a ``PyEval_EvalCodeEx()`` regression: fix reference counting on
builtins. Patch by Victor Stinner.

..

.. bpo: 43244
.. date: 2021-03-17-23-53-14
.. nonce: kfPqA_
.. section: C API

Remove the ``symtable.h`` header file and the undocumented functions:

* ``PyST_GetScope()``
* ``PySymtable_Build()``
* ``PySymtable_BuildObject()``
* ``PySymtable_Free()``
* ``Py_SymtableString()``
* ``Py_SymtableStringObject()``

The ``Py_SymtableString()`` function was part the stable ABI by mistake but
it could not be used, because the ``symtable.h`` header file was excluded
from the limited C API.

The Python :mod:`symtable` module remains available and is unchanged.

Patch by Victor Stinner.

..

.. bpo: 43244
.. date: 2021-03-17-23-20-07
.. nonce: diyn2C
.. section: C API

Remove the ``PyAST_Validate()`` function. It is no longer possible to build
a AST object (``mod_ty`` type) with the public C API. The function was
already excluded from the limited C API (:pep:`384`). Patch by Victor
Stinner.
