and may fail in mysterious ways.
.. note::
- The error indicator is **not** the result of :func:`sys.exc_info()`.
+ The error indicator is **not** the result of :func:`sys.exc_info`.
The former corresponds to an exception that is not yet caught (and is
therefore still propagating), while the latter returns an exception after
it is caught (and has therefore stopped propagating).
.. versionadded:: 3.2
.. versionchanged:: 3.3
- Uses :func:`!imp.source_from_cache()` in calculating the source path if
+ Uses :func:`!imp.source_from_cache` in calculating the source path if
only the bytecode path is provided.
.. versionchanged:: 3.12
No longer uses the removed :mod:`!imp` module.
* ``read_binary()``
* ``read_text()``
- Use :func:`importlib.resources.files()` instead. Refer to `importlib-resources: Migrating from Legacy
+ Use :func:`importlib.resources.files` instead. Refer to `importlib-resources: Migrating from Legacy
<https://importlib-resources.readthedocs.io/en/latest/using.html#migrating-from-legacy>`_ (:gh:`106531`)
* :class:`locale`: :func:`locale.getdefaultlocale` was deprecated in Python 3.11
and originally planned for removal in Python 3.13 (:gh:`90817`),
but removal has been postponed to Python 3.15.
- Use :func:`locale.setlocale()`, :func:`locale.getencoding()` and
- :func:`locale.getlocale()` instead.
+ Use :func:`locale.setlocale`, :func:`locale.getencoding` and
+ :func:`locale.getlocale` instead.
(Contributed by Hugo van Kemenade in :gh:`111187`.)
* :mod:`pathlib`:
Descriptors are a powerful, general purpose protocol. They are the mechanism
behind properties, methods, static methods, class methods, and
-:func:`super()`. They are used throughout Python itself. Descriptors
+:func:`super`. They are used throughout Python itself. Descriptors
simplify the underlying C code and offer a flexible set of new tools for
everyday Python programs.
.. currentmodule:: enum
An :class:`Enum` is a set of symbolic names bound to unique values. They are
-similar to global variables, but they offer a more useful :func:`repr()`,
+similar to global variables, but they offer a more useful :func:`repr`,
grouping, type-safety, and a few other features.
They are most useful when you have a variable that can take one of a limited
answer SO questions
In cases where the actual values of the members do not matter, you can save
-yourself some work and use :func:`auto()` for the values::
+yourself some work and use :func:`auto` for the values::
>>> from enum import auto
>>> class Weekday(Flag):
.. object:: gc__start(int generation)
Fires when the Python interpreter starts a garbage collection cycle.
- ``arg0`` is the generation to scan, like :func:`gc.collect()`.
+ ``arg0`` is the generation to scan, like :func:`gc.collect`.
.. object:: gc__done(long collected)
If ``type_comments=True`` is given, the parser is modified to check
and return type comments as specified by :pep:`484` and :pep:`526`.
This is equivalent to adding :data:`ast.PyCF_TYPE_COMMENTS` to the
- flags passed to :func:`compile()`. This will report syntax errors
+ flags passed to :func:`compile`. This will report syntax errors
for misplaced type comments. Without this flag, type comments will
be ignored, and the ``type_comment`` field on selected AST nodes
will always be ``None``. In addition, the locations of ``# type:
current one. By default :func:`asyncio.new_event_loop` is used and set as
current event loop with :func:`asyncio.set_event_loop` if *loop_factory* is ``None``.
- Basically, :func:`asyncio.run()` example can be rewritten with the runner usage::
+ Basically, :func:`asyncio.run` example can be rewritten with the runner usage::
async def main():
await asyncio.sleep(1)
.. option:: -j N
Use *N* workers to compile the files within the given directory.
- If ``0`` is used, then the result of :func:`os.process_cpu_count()`
+ If ``0`` is used, then the result of :func:`os.process_cpu_count`
will be used.
.. option:: --invalidation-mode [timestamp|checked-hash|unchecked-hash]
manage the current context in asynchronous frameworks.
Context managers that have state should use Context Variables
-instead of :func:`threading.local()` to prevent their state from
+instead of :func:`threading.local` to prevent their state from
bleeding to other code unexpectedly, when used in concurrent code.
See also :pep:`567` for additional details.
Every thread will have a different top-level :class:`~contextvars.Context`
object. This means that a :class:`ContextVar` object behaves in a similar
- fashion to :func:`threading.local()` when values are assigned in different
+ fashion to :func:`threading.local` when values are assigned in different
threads.
Context implements the :class:`collections.abc.Mapping` interface.
* the result is a valid *IntFlag*: an *IntFlag* is returned
* the result is not a valid *IntFlag*: the result depends on the :class:`FlagBoundary` setting
- The :func:`repr()` of unnamed zero-valued flags has changed. It is now:
+ The :func:`repr` of unnamed zero-valued flags has changed. It is now:
>>> Color(0)
<Color: 0>
This function drops you into the debugger at the call site. Specifically,
it calls :func:`sys.breakpointhook`, passing ``args`` and ``kws`` straight
through. By default, ``sys.breakpointhook()`` calls
- :func:`pdb.set_trace()` expecting no arguments. In this case, it is
+ :func:`pdb.set_trace` expecting no arguments. In this case, it is
purely a convenience function so you don't have to explicitly import
:mod:`pdb` or type as much code to enter the debugger. However,
:func:`sys.breakpointhook` can be set to some other function and
(which on *some* Unix systems, means that *all* writes append to the end of
the file regardless of the current seek position). In text mode, if
*encoding* is not specified the encoding used is platform-dependent:
- :func:`locale.getencoding()` is called to get the current locale encoding.
+ :func:`locale.getencoding` is called to get the current locale encoding.
(For reading and writing raw bytes use binary mode and leave
*encoding* unspecified.) The available modes are:
Returns the same as ``lru_cache(maxsize=None)``, creating a thin
wrapper around a dictionary lookup for the function arguments. Because it
never needs to evict old values, this is smaller and faster than
- :func:`lru_cache()` with a size limit.
+ :func:`lru_cache` with a size limit.
For example::
systems which support the :mod:`pwd` module, otherwise, an :exc:`OSError`
is raised.
- In general, this function should be preferred over :func:`os.getlogin()`.
+ In general, this function should be preferred over :func:`os.getlogin`.
.. versionchanged:: 3.13
Previously, various exceptions beyond just :exc:`OSError` were raised.
This function handles several details for you:
* If ``eval_str`` is true, values of type ``str`` will
- be un-stringized using :func:`eval()`. This is intended
+ be un-stringized using :func:`eval`. This is intended
for use with stringized annotations
(``from __future__ import annotations``).
* If ``obj`` doesn't have an annotations dict, returns an
* Always, always, always returns a freshly created dict.
``eval_str`` controls whether or not values of type ``str`` are replaced
- with the result of calling :func:`eval()` on those values:
+ with the result of calling :func:`eval` on those values:
- * If eval_str is true, :func:`eval()` is called on values of type ``str``.
- (Note that ``get_annotations`` doesn't catch exceptions; if :func:`eval()`
+ * If eval_str is true, :func:`eval` is called on values of type ``str``.
+ (Note that ``get_annotations`` doesn't catch exceptions; if :func:`eval`
raises an exception, it will unwind the stack past the ``get_annotations``
call.)
* If eval_str is false (the default), values of type ``str`` are unchanged.
- ``globals`` and ``locals`` are passed in to :func:`eval()`; see the documentation
- for :func:`eval()` for more information. If ``globals`` or ``locals``
+ ``globals`` and ``locals`` are passed in to :func:`eval`; see the documentation
+ for :func:`eval` for more information. If ``globals`` or ``locals``
is ``None``, this function may replace that value with a context-specific
default, contingent on ``type(obj)``:
:class:`TextIOBase`.
*encoding* gives the name of the encoding that the stream will be decoded or
- encoded with. It defaults to :func:`locale.getencoding()`.
+ encoded with. It defaults to :func:`locale.getencoding`.
``encoding="locale"`` can be used to specify the current locale's encoding
explicitly. See :ref:`io-text-encoding` for more information.
is raised. Note this doesn't prohibit a different thread from entering the
buffered object.
-The above implicitly extends to text files, since the :func:`open()` function
+The above implicitly extends to text files, since the :func:`open` function
will wrap a buffered object inside a :class:`TextIOWrapper`. This includes
-standard streams and therefore affects the built-in :func:`print()` function as
+standard streams and therefore affects the built-in :func:`print` function as
well.
doesn't make sense. There are some times however, where you may wish to
have :mod:`ipaddress` sort these anyway. If you need to do this, you can use
- this function as the *key* argument to :func:`sorted()`.
+ this function as the *key* argument to :func:`sorted`.
*obj* is either a network or address object.
* Use UTF-8 as the :term:`filesystem encoding <filesystem encoding and error
handler>`.
-* :func:`sys.getfilesystemencoding()` returns ``'utf-8'``.
-* :func:`locale.getpreferredencoding()` returns ``'utf-8'`` (the *do_setlocale*
+* :func:`sys.getfilesystemencoding` returns ``'utf-8'``.
+* :func:`locale.getpreferredencoding` returns ``'utf-8'`` (the *do_setlocale*
argument has no effect).
* :data:`sys.stdin`, :data:`sys.stdout`, and :data:`sys.stderr` all use
UTF-8 as their text encoding, with the ``surrogateescape``
* Command line arguments, environment variables and filenames are decoded
to text using the UTF-8 encoding.
-* :func:`os.fsdecode()` and :func:`os.fsencode()` use the UTF-8 encoding.
-* :func:`open()`, :func:`io.open()`, and :func:`codecs.open()` use the UTF-8
+* :func:`os.fsdecode` and :func:`os.fsencode` use the UTF-8 encoding.
+* :func:`open`, :func:`io.open`, and :func:`codecs.open` use the UTF-8
encoding by default. However, they still use the strict error handler by
default so that attempting to open a binary file in text mode is likely
to raise an exception rather than producing nonsense data.
``socket.gethostbyaddr(socket.gethostname())``.
On macOS, iOS and Android, this returns the *kernel* name and version (i.e.,
- ``'Darwin'`` on macOS and iOS; ``'Linux'`` on Android). :func:`platform.uname()`
+ ``'Darwin'`` on macOS and iOS; ``'Linux'`` on Android). :func:`platform.uname`
can be used to get the user-facing operating system name and version on iOS and
Android.
.. versionchanged:: 3.6
Added support for the :term:`context manager` protocol and the
- :func:`~scandir.close()` method. If a :func:`scandir` iterator is neither
+ :func:`~scandir.close` method. If a :func:`scandir` iterator is neither
exhausted nor explicitly closed a :exc:`ResourceWarning` will be emitted
in its destructor.
running without the debugger using the :pdbcmd:`continue` command.
.. versionchanged:: 3.7
- The built-in :func:`breakpoint()`, when called with defaults, can be used
+ The built-in :func:`breakpoint`, when called with defaults, can be used
instead of ``import pdb; pdb.set_trace()``.
::
On iOS and Android, this returns the user-facing OS name (i.e, ``'iOS``,
``'iPadOS'`` or ``'Android'``). To obtain the kernel name (``'Darwin'`` or
- ``'Linux'``), use :func:`os.uname()`.
+ ``'Linux'``), use :func:`os.uname`.
.. function:: system_alias(system, release, version)
returned if the value cannot be determined.
On iOS and Android, this is the user-facing OS version. To obtain the
- Darwin or Linux kernel version, use :func:`os.uname()`.
+ Darwin or Linux kernel version, use :func:`os.uname`.
.. function:: uname()
signal to a particular Python thread would be to force a running system call
to fail with :exc:`InterruptedError`.
- Use :func:`threading.get_ident()` or the :attr:`~threading.Thread.ident`
+ Use :func:`threading.get_ident` or the :attr:`~threading.Thread.ident`
attribute of :class:`threading.Thread` objects to get a suitable value
for *thread_id*.
``b'abcdefghijklmnopqrstuvwxyz'``. Uppercase ASCII characters
are those byte values in the sequence ``b'ABCDEFGHIJKLMNOPQRSTUVWXYZ'``.
- Unlike :func:`str.swapcase()`, it is always the case that
+ Unlike :func:`str.swapcase`, it is always the case that
``bin.swapcase().swapcase() == bin`` for the binary versions. Case
conversions are symmetrical in ASCII, even though that is not generally
true for arbitrary Unicode code points.
If *group* is not ``None``, the setregid() system call will be made in the
child process prior to the execution of the subprocess. If the provided
- value is a string, it will be looked up via :func:`grp.getgrnam()` and
+ value is a string, it will be looked up via :func:`grp.getgrnam` and
the value in ``gr_gid`` will be used. If the value is an integer, it
will be passed verbatim. (POSIX only)
If *extra_groups* is not ``None``, the setgroups() system call will be
made in the child process prior to the execution of the subprocess.
Strings provided in *extra_groups* will be looked up via
- :func:`grp.getgrnam()` and the values in ``gr_gid`` will be used.
+ :func:`grp.getgrnam` and the values in ``gr_gid`` will be used.
Integer values will be passed verbatim. (POSIX only)
.. availability:: POSIX
If *user* is not ``None``, the setreuid() system call will be made in the
child process prior to the execution of the subprocess. If the provided
- value is a string, it will be looked up via :func:`pwd.getpwnam()` and
+ value is a string, it will be looked up via :func:`pwd.getpwnam` and
the value in ``pw_uid`` will be used. If the value is an integer, it will
be passed verbatim. (POSIX only)
regardless of their size. This function is mainly useful for tracking
and debugging memory leaks. Because of the interpreter's internal
caches, the result can vary from call to call; you may have to call
- :func:`_clear_internal_caches()` and :func:`gc.collect()` to get more
+ :func:`_clear_internal_caches` and :func:`gc.collect` to get more
predictable results.
If a Python build or implementation cannot reasonably compute this
- information, :func:`getallocatedblocks()` is allowed to return 0 instead.
+ information, :func:`getallocatedblocks` is allowed to return 0 instead.
.. versionadded:: 3.4
mix with those by the other.
End users should not use this function, but :func:`get_default_scheme` and
- :func:`get_preferred_scheme()` instead.
+ :func:`get_preferred_scheme` instead.
.. versionadded:: 3.10
it is best practice to only do so in top-level applications or
:mod:`site configuration <site>`.
To set a global default this way, a filter function needs to be wrapped in
- :func:`staticmethod()` to prevent injection of a ``self`` argument.
+ :func:`staticmethod` to prevent injection of a ``self`` argument.
.. versionchanged:: 3.14
.. function:: check_warnings(*filters, quiet=True)
- A convenience wrapper for :func:`warnings.catch_warnings()` that makes it
+ A convenience wrapper for :func:`warnings.catch_warnings` that makes it
easier to test that a warning was correctly raised. It is approximately
equivalent to calling ``warnings.catch_warnings(record=True)`` with
:meth:`warnings.simplefilter` set to ``always`` and with the option to
.. impl-detail::
- On CPython, use the same clock than :func:`time.monotonic()` and is a
+ On CPython, use the same clock than :func:`time.monotonic` and is a
monotonic clock, i.e. a clock that cannot go backwards.
Use :func:`perf_counter_ns` to avoid the precision loss caused by the
On Windows, the function is now system-wide.
.. versionchanged:: 3.13
- Use the same clock than :func:`time.monotonic()`.
+ Use the same clock than :func:`time.monotonic`.
.. function:: perf_counter_ns() -> int
:noindex:
Token value indicating that a type comment was recognized. Such
- tokens are only produced when :func:`ast.parse()` is invoked with
+ tokens are only produced when :func:`ast.parse` is invoked with
``type_comments=True``.
.. versionadded:: 3.2
The :option:`-c/--catch <unittest -c>` command-line option to unittest,
-along with the ``catchbreak`` parameter to :func:`unittest.main()`, provide
+along with the ``catchbreak`` parameter to :func:`unittest.main`, provide
more friendly handling of control-C during a test run. With catch break
behavior enabled control-C will allow the currently running test to complete,
and the test run will then end and report all the results so far. A second
interpreter name, and then a newline (``b'\n'``) character. The interpreter
name can be anything acceptable to the OS "shebang" processing, or the Python
launcher on Windows. The interpreter should be encoded in UTF-8 on Windows,
- and in :func:`sys.getfilesystemencoding()` on POSIX.
+ and in :func:`sys.getfilesystemencoding` on POSIX.
2. Standard zipfile data, as generated by the :mod:`zipfile` module. The
zipfile content *must* include a file called ``__main__.py`` (which must be
in the "root" of the zipfile - i.e., it cannot be in a subdirectory). The
A bytes object is an immutable array. The items are 8-bit bytes,
represented by integers in the range 0 <= x < 256. Bytes literals
- (like ``b'abc'``) and the built-in :func:`bytes()` constructor
+ (like ``b'abc'``) and the built-in :func:`bytes` constructor
can be used to create bytes objects. Also, bytes objects can be
decoded to strings via the :meth:`~bytes.decode` method.
>>> sum([0.1] * 10) == 1.0
True
-The :func:`math.fsum()` goes further and tracks all of the "lost digits"
+The :func:`math.fsum` goes further and tracks all of the "lost digits"
as values are added onto a running total so that the result has only a
single rounding. This is slower than :func:`sum` but will be more
accurate in uncommon cases where large magnitude inputs mostly cancel
'surrogatepass' are used.
This may also be enabled at runtime with
- :func:`sys._enablelegacywindowsfsencoding()`.
+ :func:`sys._enablelegacywindowsfsencoding`.
.. availability:: Windows.
Information about the specific runtime environment, including the iOS version,
device model, and whether the device is a simulator, can be obtained using
-:func:`platform.ios_ver()`. :func:`platform.system()` will report ``iOS`` or
+:func:`platform.ios_ver`. :func:`platform.system` will report ``iOS`` or
``iPadOS``, depending on the device.
-:func:`os.uname()` reports kernel-level details; it will report a name of
+:func:`os.uname` reports kernel-level details; it will report a name of
``Darwin``.
Standard library availability
itertools
---------
-Add :func:`itertools.pairwise()`.
+Add :func:`itertools.pairwise`.
(Contributed by Raymond Hettinger in :issue:`38200`.)
linecache
os
--
-Add :func:`os.cpu_count()` support for VxWorks RTOS.
+Add :func:`os.cpu_count` support for VxWorks RTOS.
(Contributed by Peixing Xin in :issue:`41440`.)
Add a new function :func:`os.eventfd` and related helpers to wrap the
``eventfd2`` syscall on Linux.
(Contributed by Christian Heimes in :issue:`41001`.)
-Add :func:`os.splice()` that allows to move data between two file
+Add :func:`os.splice` that allows to move data between two file
descriptors without copying between kernel address space and user
address space, where one of the file descriptors must refer to a
pipe. (Contributed by Pablo Galindo in :issue:`41625`.)
platform
--------
-Add :func:`platform.freedesktop_os_release()` to retrieve operation system
+Add :func:`platform.freedesktop_os_release` to retrieve operation system
identification from `freedesktop.org os-release
<https://www.freedesktop.org/software/systemd/man/os-release.html>`_ standard file.
(Contributed by Christian Heimes in :issue:`28468`.)
-------
* Remove the pure Python implementation of :mod:`hashlib`'s
- :func:`hashlib.pbkdf2_hmac()`, deprecated in Python 3.10. Python 3.10 and
+ :func:`hashlib.pbkdf2_hmac`, deprecated in Python 3.10. Python 3.10 and
newer requires OpenSSL 1.1.1 (:pep:`644`): this OpenSSL version provides
- a C implementation of :func:`~hashlib.pbkdf2_hmac()` which is faster.
+ a C implementation of :func:`~hashlib.pbkdf2_hmac` which is faster.
(Contributed by Victor Stinner in :gh:`94199`.)
importlib
pdb
---
-* Hard-coded breakpoints (:func:`breakpoint` and :func:`pdb.set_trace()`) now
+* Hard-coded breakpoints (:func:`breakpoint` and :func:`pdb.set_trace`) now
reuse the most recent :class:`~pdb.Pdb` instance that calls
:meth:`~pdb.Pdb.set_trace()`, instead of creating a new one each time.
As a result, all the instance specific data like :pdbcmd:`display` and
intervals and reduced overhead due to lock contention and the number of
ensuing system calls. The notion of a "check interval" to allow thread
switches has been abandoned and replaced by an absolute duration expressed in
- seconds. This parameter is tunable through :func:`sys.setswitchinterval()`.
+ seconds. This parameter is tunable through :func:`sys.setswitchinterval`.
It currently defaults to 5 milliseconds.
Additional details about the implementation can be read from a `python-dev
Some smaller changes made to the core Python language are:
* Added support for Unicode name aliases and named sequences.
- Both :func:`unicodedata.lookup()` and ``'\N{...}'`` now resolve name aliases,
- and :func:`unicodedata.lookup()` resolves named sequences too.
+ Both :func:`unicodedata.lookup` and ``'\N{...}'`` now resolve name aliases,
+ and :func:`unicodedata.lookup` resolves named sequences too.
(Contributed by Ezio Melotti in :issue:`12753`.)
* The ``-R`` option to the :ref:`python regression test suite <regrtest>` now
also checks for memory allocation leaks, using
- :func:`sys.getallocatedblocks()`. (Contributed by Antoine Pitrou in
+ :func:`sys.getallocatedblocks`. (Contributed by Antoine Pitrou in
:issue:`13390`.)
* ``python -m`` now works with namespace packages.
Prior to Python 3.6, data loss could result when using bytes paths on Windows.
With this change, using bytes to represent paths is now supported on Windows,
provided those bytes are encoded with the encoding returned by
-:func:`sys.getfilesystemencoding()`, which now defaults to ``'utf-8'``.
+:func:`sys.getfilesystemencoding`, which now defaults to ``'utf-8'``.
Applications that do not use str to represent paths should use
-:func:`os.fsencode()` and :func:`os.fsdecode()` to ensure their bytes are
+:func:`os.fsencode` and :func:`os.fsdecode` to ensure their bytes are
correctly encoded. To revert to the previous behaviour, set
:envvar:`PYTHONLEGACYWINDOWSFSENCODING` or call
:func:`sys._enablelegacywindowsfsencoding`.
Note that the pseudo-random generators in the :mod:`random` module
should *NOT* be used for security purposes. Use :mod:`secrets`
- on Python 3.6+ and :func:`os.urandom()` on Python 3.5 and earlier.
+ on Python 3.6+ and :func:`os.urandom` on Python 3.5 and earlier.
.. seealso::
pickletools
-----------
-:func:`pickletools.dis()` now outputs the implicit memo index for the
+:func:`pickletools.dis` now outputs the implicit memo index for the
``MEMOIZE`` opcode.
(Contributed by Serhiy Storchaka in :issue:`25382`.)
positions 2--3. To match only blank lines, the pattern should be rewritten
as ``r'(?m)^[^\S\n]*$'``.
- :func:`re.sub()` now replaces empty matches adjacent to a previous
+ :func:`re.sub` now replaces empty matches adjacent to a previous
non-empty match. For example ``re.sub('x*', '-', 'abxd')`` returns now
``'-a-b--d-'`` instead of ``'-a-b-d-'`` (the first minus between 'b' and
'd' replaces 'x', and the second minus replaces an empty string between
logging
-------
-Added a *force* keyword argument to :func:`logging.basicConfig()`
+Added a *force* keyword argument to :func:`logging.basicConfig`
When set to true, any existing handlers attached
to the root logger are removed and closed before carrying out the
configuration specified by the other arguments.
creating a server socket, including accepting both IPv4 and IPv6 connections
on the same socket. (Contributed by Giampaolo RodolĂ in :issue:`17561`.)
-The :func:`socket.if_nameindex()`, :func:`socket.if_nametoindex()`, and
-:func:`socket.if_indextoname()` functions have been implemented on Windows.
+The :func:`socket.if_nameindex`, :func:`socket.if_nametoindex`, and
+:func:`socket.if_indextoname` functions have been implemented on Windows.
(Contributed by Zackery Spytz in :issue:`37007`.)
----------
Added :func:`statistics.fmean` as a faster, floating-point variant of
-:func:`statistics.mean()`. (Contributed by Raymond Hettinger and
+:func:`statistics.mean`. (Contributed by Raymond Hettinger and
Steven D'Aprano in :issue:`35904`.)
-Added :func:`statistics.geometric_mean()`
+Added :func:`statistics.geometric_mean`
(Contributed by Raymond Hettinger in :issue:`27181`.)
Added :func:`statistics.multimode` that returns a list of the most
have been added as well.
(Contributed by Lisa Roach in :issue:`26467`).
-Added :func:`~unittest.addModuleCleanup()` and
+Added :func:`~unittest.addModuleCleanup` and
:meth:`~unittest.TestCase.addClassCleanup()` to unittest to support
-cleanups for :func:`~unittest.setUpModule()` and
+cleanups for :func:`~unittest.setUpModule` and
:meth:`~unittest.TestCase.setUpClass()`.
(Contributed by Lisa Roach in :issue:`24412`.)
(Contributed by Stefan Behnel in :issue:`28238`.)
The :mod:`xml.etree.ElementTree` module provides a new function
-:func:`–xml.etree.ElementTree.canonicalize()` that implements C14N 2.0.
+:func:`–xml.etree.ElementTree.canonicalize` that implements C14N 2.0.
(Contributed by Stefan Behnel in :issue:`13611`.)
The target object of :class:`xml.etree.ElementTree.XMLParser` can
(Contributed by Victor Stinner in :issue:`37312`.)
* ``aifc.openfp()`` alias to ``aifc.open()``, ``sunau.openfp()`` alias to
- ``sunau.open()``, and ``wave.openfp()`` alias to :func:`wave.open()` have been
+ ``sunau.open()``, and ``wave.openfp()`` alias to :func:`wave.open` have been
removed. They were deprecated since Python 3.7.
(Contributed by Victor Stinner in :issue:`37320`.)
- Issue #16248: Disable code execution from the user's home directory by
tkinter when the -E flag is passed to Python. Patch by Zachary Ware.
-- Issue #13390: New function :func:`sys.getallocatedblocks()` returns the
+- Issue #13390: New function :func:`sys.getallocatedblocks` returns the
number of memory blocks currently allocated.
- Issue #16628: Fix a memory leak in ctypes.resize().
starting with a ".". Patch by Sebastian Kreft.
- Issue #13390: The ``-R`` option to regrtest now also checks for memory
- allocation leaks, using :func:`sys.getallocatedblocks()`.
+ allocation leaks, using :func:`sys.getallocatedblocks`.
- Issue #16559: Add more tests for the json module, including some from the
official test suite at json.org. Patch by Serhiy Storchaka.
.. nonce: rju34k
.. section: Library
-Add :func:`os.cpu_count()` support for VxWorks RTOS.
+Add :func:`os.cpu_count` support for VxWorks RTOS.
..
Simplify the :mod:`importlib` external bootstrap code:
``importlib._bootstrap_external`` now uses regular imports to import builtin
-modules. When it is imported, the builtin :func:`__import__()` function is
+modules. When it is imported, the builtin :func:`__import__` function is
already fully working and so can be used to import builtin modules like
:mod:`sys`. Patch by Victor Stinner.
.. nonce: Wh5svI
.. section: Library
-:func:`time.time()`, :func:`time.perf_counter()` and
-:func:`time.monotonic()` functions can no longer fail with a Python fatal
+:func:`time.time`, :func:`time.perf_counter` and
+:func:`time.monotonic` functions can no longer fail with a Python fatal
error, instead raise a regular Python exception on failure.
..
.. nonce: iDbHrw
.. section: Library
-:func:`time.perf_counter()` on Windows and :func:`time.monotonic()` on macOS
+:func:`time.perf_counter` on Windows and :func:`time.monotonic` on macOS
are now system-wide. Previously, they used an offset computed at startup to
reduce the precision loss caused by the float type. Use
-:func:`time.perf_counter_ns()` and :func:`time.monotonic_ns()` added in
+:func:`time.perf_counter_ns` and :func:`time.monotonic_ns` added in
Python 3.7 to avoid this precision loss.
..
.. nonce: ek38d_
.. section: Library
-Add :func:`os.set_blocking()` support for VxWorks RTOS.
+Add :func:`os.set_blocking` support for VxWorks RTOS.
..
.. nonce: 3r0HFY
.. section: Library
-Fail fast in :func:`shutil.move()` to avoid creating destination directories
+Fail fast in :func:`shutil.move` to avoid creating destination directories
on failure.
..
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
+this situation. Also ensures that the :func:`tempfile.gettempdir` and
+:func:`tempfile.gettempdirb` functions *always* return ``str`` and
``bytes`` respectively.
..
.. nonce: nnVd3h
.. section: Library
-Add an ``encoding`` parameter :func:`logging.fileConfig()`.
+Add an ``encoding`` parameter :func:`logging.fileConfig`.
..
.. nonce: oi6Kdb
.. section: Library
-Fix dataclasses with ``InitVar``\s and :func:`~dataclasses.replace()`. Patch
+Fix dataclasses with ``InitVar``\s and :func:`~dataclasses.replace`. Patch
by Claudiu Popa.
..
.. nonce: 9adF3E
.. section: Library
-:func:`os.path.expanduser()` now refuses to guess Windows home directories
+:func:`os.path.expanduser` now refuses to guess Windows home directories
if the basename of current user's home directory does not match their
username.
.. nonce: roUl0G
.. section: Library
-:mod:`subprocess` on Solaris now also uses :func:`os.posix_spawn()` for
+:mod:`subprocess` on Solaris now also uses :func:`os.posix_spawn` for
better performance.
..
.. nonce: -igcjS
.. section: Core and Builtins
-Add a closure keyword-only parameter to :func:`exec()`. It can only be specified
+Add a closure keyword-only parameter to :func:`exec`. It can only be specified
when exec-ing a code object that uses free variables. When specified, it
must be a tuple, with exactly the number of cell variables referenced by the
code object. closure has a default value of ``None``, and it must be ``None`` if the
.. section: Library
:mod:`hashlib`: Remove the pure Python implementation of
-:func:`hashlib.pbkdf2_hmac()`, deprecated in Python 3.10. Python 3.10 and
+:func:`hashlib.pbkdf2_hmac`, deprecated in Python 3.10. Python 3.10 and
newer requires OpenSSL 1.1.1 (:pep:`644`): this OpenSSL version provides a C
-implementation of :func:`~hashlib.pbkdf2_hmac()` which is faster. Patch by
+implementation of :func:`~hashlib.pbkdf2_hmac` which is faster. Patch by
Victor Stinner.
..
.. section: Library
Fix handling of ``bytes`` :term:`path-like objects <path-like object>` in
-:func:`os.ismount()`.
+:func:`os.ismount`.
..
.. nonce: bgtzMV
.. section: Library
-A :exc:`DeprecationWarning` may be raised when :func:`os.fork()` or
-:func:`os.forkpty()` is called from multi-threaded processes. Forking with
+A :exc:`DeprecationWarning` may be raised when :func:`os.fork` or
+:func:`os.forkpty` is called from multi-threaded processes. Forking with
threads is unsafe and can cause deadlocks, crashes and subtle problems. Lack
of a warning does not indicate that the fork call was actually safe, as
Python may not be aware of all threads.
.. nonce: wz4Xgc
.. section: Library
-Add :func:`os.path.splitroot()`, which splits a path into a 3-item tuple
+Add :func:`os.path.splitroot`, which splits a path into a 3-item tuple
``(drive, root, tail)``. This new function is used by :mod:`pathlib` to
improve the performance of path construction by up to a third.
.. nonce: DqNehf
.. section: Library
-Pure python :func:`locale.getencoding()` will not warn deprecation.
+Pure python :func:`locale.getencoding` will not warn deprecation.
..
.. nonce: qxI4OG
.. section: Tests
-libregrtest now calls :func:`random.seed()` before running each test file
+libregrtest now calls :func:`random.seed` before running each test file
when ``-r/--randomize`` command line option is used. Moreover, it's also
called in worker processes. It should help to make tests more
deterministic. Previously, it was only called once in the main process
.. nonce: FWqZIU
.. section: Library
-:mod:`time`: Make :func:`time.clock_gettime()` and
-:func:`time.clock_gettime_ns()` functions up to 2x faster by faster calling
+:mod:`time`: Make :func:`time.clock_gettime` and
+:func:`time.clock_gettime_ns` functions up to 2x faster by faster calling
convention. Patch by Victor Stinner.
..
.. nonce: Bc8LvA
.. section: Library
-Added :func:`io.text_encoding()`, :data:`io.DEFAULT_BUFFER_SIZE`, and
+Added :func:`io.text_encoding`, :data:`io.DEFAULT_BUFFER_SIZE`, and
:class:`io.IncrementalNewlineDecoder` to ``io.__all__``.
..
.. nonce: 5ePgFl
.. section: Library
-Another attempt at fixing :func:`asyncio.Server.wait_closed()`. It now
+Another attempt at fixing :func:`asyncio.Server.wait_closed`. It now
blocks until both conditions are true: the server is closed, *and* there are
no more active connections. (This means that in some cases where in 3.12.0
this function would *incorrectly* have returned immediately, it will now
.. nonce: _M-cQC
.. section: Library
-Set ``f_trace_lines = True`` on all frames upon :func:`pdb.set_trace()`
+Set ``f_trace_lines = True`` on all frames upon :func:`pdb.set_trace`
..
.. nonce: kXoCy0
.. section: Library
-:func:`asyncio.TaskGroup()` and :func:`asyncio.timeout()` context managers
+:func:`asyncio.TaskGroup` and :func:`asyncio.timeout` context managers
now handle :exc:`~asyncio.CancelledError` subclasses as well as exact
:exc:`!CancelledError`.
.. nonce: xN2LuL
.. section: Library
-:func:`asyncio.Condition.wait()` now re-raises the same
+:func:`asyncio.Condition.wait` now re-raises the same
:exc:`CancelledError` instance that may have caused it to be interrupted.
Fixed race condition in :func:`asyncio.Semaphore.acquire` when interrupted
with a :exc:`CancelledError`.
.. nonce: xPOBBY
.. section: Library
-:func:`warnings.filterwarnings()` and :func:`warnings.simplefilter()` now
+:func:`warnings.filterwarnings` and :func:`warnings.simplefilter` now
raise appropriate exceptions instead of ``AssertionError``. Patch
contributed by Rémi Lapeyre.
.. nonce: RzxNYT
.. section: Library
-Fix several :func:`format()` bugs when using the C implementation of
+Fix several :func:`format` bugs when using the C implementation of
:class:`~decimal.Decimal`: * memory leak in some rare cases when using the
``z`` format option (coerce negative 0) * incorrect output when applying the
``z`` format option to type ``F`` (fixed-point with capital ``NAN`` /
.. nonce: FrQOQ0
.. section: macOS
-Add Mach-O linkage support for :func:`platform.architecture()`.
+Add Mach-O linkage support for :func:`platform.architecture`.
..
.. section: Library
Restore support of space delimiter with ``skipinitialspace=True`` in
-:mod:`csv`. :func:`csv.writer()` now quotes empty fields if delimiter is a
+:mod:`csv`. :func:`csv.writer` now quotes empty fields if delimiter is a
space and skipinitialspace is true and raises exception if quoting is not
possible.
.. nonce: SQ998l
.. section: Library
-:func:`posixpath.commonpath()` now raises a :exc:`ValueError` exception when
+:func:`posixpath.commonpath` now raises a :exc:`ValueError` exception when
passed an empty iterable. Previously, :exc:`IndexError` was raised.
-:func:`posixpath.commonpath()` now raises a :exc:`TypeError` exception when
+:func:`posixpath.commonpath` now raises a :exc:`TypeError` exception when
passed ``None``. Previously, :exc:`ValueError` was raised.
..
.. nonce: hqk9Hn
.. section: Library
-Raise :exc:`TypeError` for non-paths in :func:`posixpath.relpath()`.
+Raise :exc:`TypeError` for non-paths in :func:`posixpath.relpath`.
..
.. nonce: LV16SL
.. section: Library
-On Windows, :func:`time.time()` now uses the
+On Windows, :func:`time.time` now uses the
``GetSystemTimePreciseAsFileTime()`` clock to have a resolution better than
1 us, instead of the ``GetSystemTimeAsFileTime()`` clock which has a
resolution of 15.6 ms. Patch by Victor Stinner.
.. section: Library
The :mod:`importlib.resources` functions
-:func:`~importlib.resources.is_resource()`,
-:func:`~importlib.resources.open_binary()`,
-:func:`~importlib.resources.open_text()`,
-:func:`~importlib.resources.path()`,
-:func:`~importlib.resources.read_binary()`, and
-:func:`~importlib.resources.read_text()` are un-deprecated, and support
+:func:`~importlib.resources.is_resource`,
+:func:`~importlib.resources.open_binary`,
+:func:`~importlib.resources.open_text`,
+:func:`~importlib.resources.path`,
+:func:`~importlib.resources.read_binary`, and
+:func:`~importlib.resources.read_text` are un-deprecated, and support
subdirectories via multiple positional arguments. The
-:func:`~importlib.resources.contents()` function also allows subdirectories,
+:func:`~importlib.resources.contents` function also allows subdirectories,
but remains deprecated.
..
.. nonce: Bwfmp7
.. section: Windows
-On Windows, :func:`time.monotonic()` now uses the
+On Windows, :func:`time.monotonic` now uses the
``QueryPerformanceCounter()`` clock to have a resolution better than 1 us,
instead of the ``GetTickCount64()`` clock which has a resolution of 15.6 ms.
Patch by Victor Stinner.
.. nonce: eeS6w7
.. section: Library
-Fix :func:`inspect.signature()` to correctly handle parameter defaults on
+Fix :func:`inspect.signature` to correctly handle parameter defaults on
methods in extension modules that use names defined in the module namespace.
..
.. nonce: ideco
.. section: Library
-:func:`urllib.parse.urlsplit()` does not convert zone-id (scope) to lower
+:func:`urllib.parse.urlsplit` does not convert zone-id (scope) to lower
case for scoped IPv6 addresses in hostnames now.
..
.. nonce: ideco
.. section: Library
-:func:`urllib.parse.urlsplit()` does not convert zone-id (scope) to lower
+:func:`urllib.parse.urlsplit` does not convert zone-id (scope) to lower
case for scoped IPv6 addresses in hostnames now.
..
.. nonce: CUbsb2
.. section: Library
-:func:`re.sub()` now replaces empty matches adjacent to a previous non-empty
+:func:`re.sub` now replaces empty matches adjacent to a previous non-empty
match.
..
.. nonce: -T77_c
.. section: Library
-:func:`fnmatch.translate()` no longer produces patterns which contain set
+:func:`fnmatch.translate` no longer produces patterns which contain set
operations. Sets starting with '[' or containing '--', '&&', '~~' or '||'
will be interpreted differently in regular expressions in future versions.
Currently they emit warnings. fnmatch.translate() now avoids producing
.. section: Library
Improved error handling and fixed a reference leak in
-:func:`os.posix_spawn()`.
+:func:`os.posix_spawn`.
..
The C function ``property_descr_get()`` uses a "cached" tuple to optimize
function calls. But this tuple can be discovered in debug mode with
-:func:`sys.getobjects()`. Remove the optimization, it's not really worth it
+:func:`sys.getobjects`. Remove the optimization, it's not really worth it
and it causes 3 different crashes last years.
..
.. nonce: i-F_E5
.. section: Library
-Add :func:`~unittest.addModuleCleanup()` and
+Add :func:`~unittest.addModuleCleanup` and
:meth:`~unittest.TestCase.addClassCleanup()` to unittest to support cleanups
-for :func:`~unittest.setUpModule()` and
+for :func:`~unittest.setUpModule` and
:meth:`~unittest.TestCase.setUpClass()`. Patch by Lisa Roach.
..
.. section: Library
Fix crash when an ``ABC``-derived class with invalid ``__subclasses__`` is
-passed as the second argument to :func:`issubclass()`. Patch by Alexey
+passed as the second argument to :func:`issubclass`. Patch by Alexey
Izbyshev.
..
.. section: Library
Improved error handling and fixed a reference leak in
-:func:`os.posix_spawn()`.
+:func:`os.posix_spawn`.
..
.. nonce: -T77_c
.. section: Library
-:func:`fnmatch.translate()` no longer produces patterns which contain set
+:func:`fnmatch.translate` no longer produces patterns which contain set
operations. Sets starting with '[' or containing '--', '&&', '~~' or '||'
will be interpreted differently in regular expressions in future versions.
Currently they emit warnings. fnmatch.translate() now avoids producing
.. nonce: d1SOtF
.. section: Core and Builtins
-Implement :func:`socket.if_nameindex()`, :func:`socket.if_nametoindex()`,
-and :func:`socket.if_indextoname()` on Windows.
+Implement :func:`socket.if_nameindex`, :func:`socket.if_nametoindex`,
+and :func:`socket.if_indextoname` on Windows.
..
.. nonce: 9-vKtO
.. section: Core and Builtins
-Optimized :func:`math.floor()`, :func:`math.ceil()` and :func:`math.trunc()`
+Optimized :func:`math.floor`, :func:`math.ceil` and :func:`math.trunc`
for floats.
..
.. nonce: FRGH4I
.. section: Library
-:func:`ctypes.create_unicode_buffer()` now also supports non-BMP characters
+:func:`ctypes.create_unicode_buffer` now also supports non-BMP characters
on platforms with 16-bit :c:type:`wchar_t` (for example, Windows and AIX).
..
.. nonce: 5_mJkQ
.. section: Library
-Eliminate :exc:`RuntimeError` raised by :func:`asyncio.all_tasks()` if
+Eliminate :exc:`RuntimeError` raised by :func:`asyncio.all_tasks` if
internal tasks weak set is changed by another thread during iteration.
..
.. nonce: La3TZz
.. section: Library
-Made :func:`urllib.parse.unquote()` accept bytes in addition to strings.
+Made :func:`urllib.parse.unquote` accept bytes in addition to strings.
Patch by Stein Karlsen.
..
.. nonce: mxr5m8
.. section: Library
-:func:`ast.dump()` no longer outputs optional fields and attributes with
+:func:`ast.dump` no longer outputs optional fields and attributes with
default values. The default values for optional fields and attributes of AST
nodes are now set as class attributes (e.g. ``Constant.kind`` is set to
``None``).
.. nonce: vHC7YQ
.. section: Library
-Deprecate passing None as an argument for :func:`shlex.split()`'s ``s``
+Deprecate passing None as an argument for :func:`shlex.split`'s ``s``
parameter. Patch by Zackery Spytz.
..
-Specializations for sums with float and complex inputs in :func:`sum()` now
+Specializations for sums with float and complex inputs in :func:`sum` now
always use compensated summation. Also, for integer items in above
specializations: :c:func:`PyLong_AsDouble` is used, instead of
:c:func:`PyLong_AsLongAndOverflow`. Patch by Sergey B Kirpichev.
-Fix memory leak in :func:`re.sub()` when the replacement string contains backreferences.
+Fix memory leak in :func:`re.sub` when the replacement string contains backreferences.
-Hard-coded breakpoints (:func:`breakpoint` and :func:`pdb.set_trace()`) now
+Hard-coded breakpoints (:func:`breakpoint` and :func:`pdb.set_trace`) now
reuse the most recent ``Pdb`` instance that calls ``Pdb.set_trace()``,
instead of creating a new one each time. As a result, all the instance specific
data like ``display`` and ``commands`` are preserved across Hard-coded breakpoints.