Connect with us


Python 3.11



  • bpo-35845: Add ‘order’ parameter to memoryview.tobytes().

  • bpo-35864: The _asdict() method for collections.namedtuple now returns a
    regular dict instead of an OrderedDict.

  • bpo-35537: An ExitStack is now used internally within subprocess.Popen to
    clean up pipe file handles. No behavior change in normal operation. But if
    closing one handle were ever to cause an exception, the others will now be
    closed instead of leaked. (patch by Giampaolo Rodola)

  • bpo-35847: RISC-V needed the CTYPES_PASS_BY_REF_HACK. Fixes ctypes
    Structure test_pass_by_value.

  • bpo-35813: Shared memory submodule added to multiprocessing to avoid need
    for serialization between processes

  • bpo-35780: Fix lru_cache() errors arising in recursive, reentrant, or
    multi-threaded code. These errors could result in orphan links and in the
    cache being trapped in a state with fewer than the specified maximum
    number of links. Fix handling of negative maxsize which should have been
    treated as zero. Fix errors in toggling the “full” status flag. Fix
    misordering of links when errors are encountered. Sync-up the C code and
    pure Python code for the space saving path in functions with a single
    positional argument. In this common case, the space overhead of an lru
    cache entry is reduced by almost half. Fix counting of cache misses. In
    error cases, the miss count was out of sync with the actual number of
    times the underlying user function was called.

  • bpo-35537: os.posix_spawn() and os.posix_spawnp() now have a
    setsid parameter.

  • bpo-23846: asyncio.ProactorEventLoop now catches and logs send
    errors when the self-pipe is full.

  • bpo-34323: asyncio: Enhance IocpProactor.close() log: wait 1
    second before the first log, then log every second. Log also the number of
    seconds since close() was called.

  • bpo-35674: Add a new os.posix_spawnp() function. Patch by Joannah

  • bpo-35733: ast.Constant(boolean) no longer an instance of
    ast.Num. Patch by Anthony Sottile.

  • bpo-35726: QueueHandler.prepare() now makes a copy of the record before
    modifying and enqueueing it, to avoid affecting other handlers in the

  • bpo-35719: Sped up multi-argument math functions atan2(),
    copysign(), remainder() and hypot() by 1.3–2.5 times.

  • bpo-35717: Fix KeyError exception raised when using enums and compile.
    Patch contributed by Rémi Lapeyre.

  • bpo-35699: Fixed detection of Visual Studio Build Tools 2017 in distutils

  • bpo-32710: Fix memory leaks in asyncio ProactorEventLoop on overlapped
    operation failure.

  • bpo-35702: The time.CLOCK_UPTIME_RAW constant is now available for
    macOS 10.12.

  • bpo-32710: Fix a memory leak in asyncio in the ProactorEventLoop when
    ReadFile() or WSASend() overlapped operation fail immediately:
    release the internal buffer.

  • bpo-35682: Fix asyncio.ProactorEventLoop.sendfile(): don’t attempt to
    set the result of an internal future if it’s already done.

  • bpo-35283: Add a deprecated warning for the
    threading.Thread.isAlive() method. Patch by Dong-hee Na.

  • bpo-35664: Improve operator.itemgetter() performance by 33% with optimized
    argument handling and with adding a fast path for the common case of a
    single non-negative integer index into a tuple (which is the typical use
    case in the standard library).

  • bpo-35643: Fixed a SyntaxWarning: invalid escape sequence in
    Modules/_sha3/cleanup.py. Patch by Mickaël Schoentgen.

  • bpo-35619: Improved support of custom data descriptors in help() and

  • bpo-28503: The crypt module now internally uses the crypt_r() library
    function instead of crypt() when available.

  • bpo-35614: Fixed help() on metaclasses. Patch by Sanyam Khurana.

  • bpo-35568: Expose raise(signum) as raise_signal

  • bpo-35588: The floor division and modulo operations and the divmod()
    function on fractions.Fraction types are 2–4x faster. Patch by
    Stefan Behnel.

  • bpo-35585: Speed-up building enums by value, e.g. http.HTTPStatus(200).

  • bpo-30561: random.gammavariate(1.0, beta) now computes the same result as
    random.expovariate(1.0 / beta). This synchronizes the two algorithms and
    eliminates some idiosyncrasies in the old implementation. It does however
    produce a difference stream of random variables than it used to.

  • bpo-35537: The subprocess module can now use the
    os.posix_spawn() function in some cases for better performance.

  • bpo-35526: Delaying the ‘joke’ of barry_as_FLUFL.mandatory to Python
    version 4.0

  • bpo-35523: Remove ctypes callback workaround: no longer create a
    callback at startup. Avoid SELinux alert on import ctypes and import

  • bpo-31784: uuid.uuid1() now calls time.time_ns() rather than
    int(time.time() * 1e9).

  • bpo-35513: TextTestRunner of
    unittest.runner now uses time.perf_counter() rather than
    time.time() to measure the execution time of a test:
    time.time() can go backwards, whereas time.perf_counter() is

  • bpo-35502: Fixed reference leaks in
    xml.etree.ElementTree.TreeBuilder in case of unfinished building
    of the tree (in particular when an error was raised during parsing XML).

  • bpo-35348: Make platform.architecture() parsing of file command
    output more reliable: add the -b option to the file command to
    omit the filename, force the usage of the C locale, and search also the
    “shared object” pattern.

  • bpo-35491: multiprocessing: Add Pool.__repr__() and enhance
    BaseProcess.__repr__() (add pid and parent pid) to ease debugging.
    Pool state constant values are now strings instead of integers, for
    example RUN value becomes 'RUN' instead of 0.

  • bpo-35477: multiprocessing.Pool.__enter__() now fails if the pool is
    not running: with pool: fails if used more than once.

  • bpo-31446: Copy command line that was passed to CreateProcessW since this
    function can change the content of the input buffer.

  • bpo-35471: Python 2.4 dropped MacOS 9 support. The macpath module was
    deprecated in Python 3.7. The module is now removed.

  • bpo-23057: Unblock Proactor event loop when keyboard interrupt is received
    on Windows

  • bpo-35052: Fix xml.dom.minidom cloneNode() on a document with an entity:
    pass the correct arguments to the user data handler of an entity.

  • bpo-20239: Allow repeated assignment deletion of
    unittest.mock.Mock attributes. Patch by Pablo Galindo.

  • bpo-17185: Set __signature__ on mock for inspect to get
    signature. Patch by Karthikeyan Singaravelan.

  • bpo-35445: Memory errors during creating posix.environ no longer ignored.

  • bpo-35415: Validate fileno= argument to socket.socket().

  • bpo-35424: multiprocessing.Pool destructor now emits
    ResourceWarning if the pool is still running.

  • bpo-35330: When a Mock instance was used to wrap an object, if
    side_effect is used in one of the mocks of it methods, don’t call the
    original implementation and return the result of using the side effect the
    same way that it is done with return_value.

  • bpo-35346: Drop Mac OS 9 and Rhapsody support from the platform
    module. Rhapsody last release was in 2000. Mac OS 9 last release was in

  • bpo-10496: check_environ() of
    distutils.utils now catches KeyError on calling
    pwd.getpwuid(): don’t create the HOME environment variable in
    this case.

  • bpo-10496: posixpath.expanduser() now returns the input path
    unchanged if the HOME environment variable is not set and the current
    user has no home directory (if the current user identifier doesn’t exist
    in the password database). This change fix the site module if the
    current user doesn’t exist in the password database (if the user has no
    home directory).

  • bpo-35389: platform.libc_ver() now uses
    os.confstr('CS_GNU_LIBC_VERSION') if available and the executable
    parameter is not set.

  • bpo-35394: Add empty slots to asyncio abstract protocols.

  • bpo-35310: Fix a bug in select.select() where, in some cases, the
    file descriptor sequences were returned unmodified after a signal
    interruption, even though the file descriptors might not be ready yet.
    select.select() will now always return empty lists if a timeout has
    occurred. Patch by Oran Avraham.

  • bpo-35380: Enable TCP_NODELAY on Windows for proactor asyncio event loop.

  • bpo-35341: Add generic version of collections.OrderedDict to the
    typing module. Patch by Ismo Toijala.

  • bpo-35371: Fixed possible crash in os.utime() on Windows when pass
    incorrect arguments.

  • bpo-35346: platform.uname() now redirects stderr to
    os.devnull when running external programs like cmd /c ver.

  • bpo-35066: Previously, calling the strftime() method on a datetime object
    with a trailing ‘%’ in the format string would result in an exception.
    However, this only occurred when the datetime C module was being used; the
    python implementation did not match this behavior. Datetime is now PEP-399
    compliant, and will not throw an exception on a trailing ‘%’.

  • bpo-35345: The function platform.popen has been removed, it was
    deprecated since Python 3.3: use os.popen() instead.

  • bpo-35344: On macOS, platform.platform() now uses
    platform.mac_ver(), if it returns a non-empty release string, to get
    the macOS version rather than the darwin version.

  • bpo-35312: Make lib2to3.pgen2.parse.ParseError round-trip pickle-able.
    Patch by Anthony Sottile.

  • bpo-35308: Fix regression in webbrowser where default browsers may be
    preferred over browsers in the BROWSER environment variable.

  • bpo-24746: Avoid stripping trailing whitespace in doctest fancy diff.
    Original patch by R. David Murray & Jairo Trad. Enhanced by Sanyam

  • bpo-28604: locale.localeconv() now sets temporarily the LC_CTYPE
    locale to the LC_MONETARY locale if the two locales are different and
    monetary strings are non-ASCII. This temporary change affects other

  • bpo-35277: Update ensurepip to install pip 18.1 and setuptools 40.6.2.

  • bpo-24209: Adds IPv6 support when invoking http.server directly.

  • bpo-35226: Recursively check arguments when testing for equality of
    unittest.mock.call objects and add note that tracking of
    parameters used to create ancestors of mocks in mock_calls is not

  • bpo-29564: The warnings module now suggests to enable tracemalloc if the
    source is specified, the tracemalloc module is available, but tracemalloc
    is not tracing memory allocations.

  • bpo-35189: Modify the following fnctl function to retry if interrupted by
    a signal (EINTR): flock, lockf, fnctl

  • bpo-30064: Use add_done_callback() in sock_* asyncio API to unsubscribe
    reader/writer early on calcellation.

  • bpo-35186: Removed the “built with” comment added when setup.py upload
    is used with either bdist_rpm or bdist_dumb.

  • bpo-35152: Allow sending more than 2 GB at once on a multiprocessing
    connection on non-Windows systems.

  • bpo-35062: Fix incorrect parsing of
    _io.IncrementalNewlineDecoder’s translate argument.

  • bpo-35065: Remove StreamReaderProtocol._untrack_reader. The call to
    _untrack_reader is currently performed too soon, causing the protocol to
    forget about the reader before connection_lost can run and feed the EOF
    to the reader.

  • bpo-34160: ElementTree and minidom now preserve the attribute order
    specified by the user.

  • bpo-35079: Improve difflib.SequenceManager.get_matching_blocks doc by
    adding ‘non-overlapping’ and changing ‘!=’ to ‘<’.

  • bpo-33710: Deprecated l*gettext() functions and methods in the
    gettext module. They return encoded bytes instead of Unicode
    strings and are artifacts from Python 2 times. Also deprecated functions
    and methods related to setting the charset for l*gettext() functions
    and methods.

  • bpo-35017: socketserver.BaseServer.serve_forever() now exits
    immediately if it’s shutdown() method is
    called while it is polling for new events.

  • bpo-35024: importlib no longer logs wrote redundantly
    after (created|could not create) is already logged.
    Patch by Quentin Agren.

  • bpo-35047: unittest.mock now includes mock calls in exception messages
    if assert_not_called, assert_called_once, or
    assert_called_once_with fails. Patch by Petter Strandmark.

  • bpo-31047: Fix ntpath.abspath regression where it didn’t remove a
    trailing separator on Windows. Patch by Tim Graham.

  • bpo-35053: tracemalloc now tries to update the traceback when an object is
    reused from a “free list” (optimization for faster object creation, used
    by the builtin list type for example).

  • bpo-31553: Add the –json-lines option to json.tool. Patch by hongweipeng.

  • bpo-34794: Fixed a leak in Tkinter when pass the Python wrapper around
    Tcl_Obj back to Tcl/Tk.

  • bpo-34909: Enum: fix grandchildren subclassing when parent mixed with
    concrete data types.

  • bpo-35022: unittest.mock.MagicMock now supports the
    __fspath__ method (from os.PathLike).

  • bpo-35008: Fixed references leaks when call the __setstate__() method
    of xml.etree.ElementTree.Element in the C implementation for
    already initialized element.

  • bpo-23420: Verify the value for the parameter ‘-s’ of the cProfile CLI.
    Patch by Robert Kuska

  • bpo-33947: dataclasses now handle recursive reprs without raising

  • bpo-34890: Make inspect.iscoroutinefunction(),
    inspect.isgeneratorfunction() and inspect.isasyncgenfunction()
    work with functools.partial(). Patch by Pablo Galindo.

  • bpo-34521: Use socket.CMSG_SPACE() to calculate ancillary data size
    instead of socket.CMSG_LEN() in
    multiprocessing.reduction.recvfds() as RFC 3542 requires the use
    of the former for portable applications.

  • bpo-31522: The mailbox.mbox.get_string function from_ parameter can
    now successfully be set to a non-default value.

  • bpo-34970: Protect tasks weak set manipulation in asyncio.all_tasks()

  • bpo-34969: gzip: Add –fast, –best on the gzip CLI, these parameters will
    be used for the fast compression method (quick) or the best method
    compress (slower, but smaller file). Also, change the default compression
    level to 6 (tradeoff).

  • bpo-16965: The 2to3 execfile fixer now opens the file
    with mode 'rb'. Patch by Zackery Spytz.

  • bpo-34966: pydoc now supports aliases not only to methods defined
    in the end class, but also to inherited methods. The docstring is not
    duplicated for aliases.

  • bpo-34926: mimetypes.MimeTypes.guess_type() now accepts
    path-like object in addition to url strings. Patch by Mayank

  • bpo-23831: Add moveto() method to the tkinter.Canvas widget. Patch
    by Juliette Monsel.

  • bpo-34941: Methods find(), findtext() and findall() of the
    Element class in the xml.etree.ElementTree module are now able
    to find children which are instances of Element subclasses.

  • bpo-32680: smtplib.SMTP objects now always have a sock
    attribute present

  • bpo-34769: Fix for async generators not finalizing when event loop is in
    debug mode and garbage collector runs in another thread.

  • bpo-34936: Fix TclError in tkinter.Spinbox.selection_element().
    Patch by Juliette Monsel.

  • bpo-34829: Add methods selection_from, selection_range,
    selection_present and selection_to to the tkinter.Spinbox for
    consistency with the tkinter.Entry widget. Patch by Juliette Monsel.

  • bpo-34911: Added secure_protocols argument to
    http.cookiejar.DefaultCookiePolicy to allow for tweaking of protocols
    and also to add support by default for wss, the secure websocket

  • bpo-34922: Fixed integer overflow in the digest()
    and hexdigest() methods for the SHAKE algorithm in
    the hashlib module.

  • bpo-34925: 25% speedup in argument parsing for the functions in the bisect

  • bpo-34900: Fixed unittest.TestCase.debug() when used to call test
    methods with subtests. Patch by Bruno Oliveira.

  • bpo-34844: logging.Formatter enhancement – Ensure styles and fmt matches
    in logging.Formatter – Added validate method in each format style class:
    StrFormatStyle, PercentStyle, StringTemplateStyle. – This method is called
    in the constructor of logging.Formatter class – Also re-raise the KeyError
    in the format method of each style class, so it would a bit clear that
    it’s an error with the invalid format fields.

  • bpo-34897: Adjust test.support.missing_compiler_executable check so that a
    nominal command name of “” is ignored. Patch by Michael Felt.

  • bpo-34871: Fix inspect module polluted sys.modules when parsing
    __text_signature__ of callable.

  • bpo-34898: Add mtime argument to gzip.compress for reproducible
    output. Patch by Guo Ci Teo.

  • bpo-28441: On Cygwin and MinGW, ensure that sys.executable always
    includes the full filename in the path, including the .exe suffix
    (unless it is a symbolic link).

  • bpo-34866: Adding max_num_fields to cgi.FieldStorage to make DOS
    attacks harder by limiting the number of MiniFieldStorage objects
    created by FieldStorage.

  • bpo-34711: http.server ensures it reports HTTPStatus.NOT_FOUND when the
    local path ends with “/” and is not a directory, even if the underlying OS
    (e.g. AIX) accepts such paths as a valid file reference. Patch by Michael

  • bpo-34872: Fix self-cancellation in C implementation of asyncio.Task

  • bpo-34849: Don’t log waiting for selector.select in asyncio loop
    iteration. The waiting is pretty normal for any asyncio program, logging
    its time just adds a noise to logs without any useful information

  • bpo-34022: The SOURCE_DATE_EPOCH environment variable no longer
    overrides the value of the invalidation_mode argument to
    py_compile.compile(), and determines its default value instead.

  • bpo-34819: Use a monotonic clock to compute timeouts in
    Executor.map() and as_completed(), in order to prevent
    timeouts from deviating when the system clock is adjusted.

  • bpo-34758: Add .wasm -> application/wasm to list of recognized file types
    and content type headers

  • bpo-34789: xml.sax.make_parser() now accepts any iterable as its
    parser_list argument. Patch by Andrés Delfino.

  • bpo-34334: In QueueHandler, clear exc_text from
    LogRecord to prevent traceback from being written twice.

  • bpo-34687: On Windows, asyncio now uses ProactorEventLoop, instead of
    SelectorEventLoop, by default.

  • bpo-5950: Support reading zip files with archive comments in

  • bpo-32892: The parser now represents all constants as
    ast.Constant instead of using specific constant AST types
    (Num, Str, Bytes, NameConstant and Ellipsis). These
    classes are considered deprecated and will be removed in future Python

  • bpo-34728: Add deprecation warning when loop is used in methods:
    asyncio.sleep, asyncio.wait and asyncio.wait_for.

  • bpo-34738: ZIP files created by distutils will now include entries
    for directories.

  • bpo-34659: Add an optional initial argument to itertools.accumulate().

  • bpo-29577: Support multiple mixin classes when creating Enums.

  • bpo-34670: Add SSLContext.post_handshake_auth and
    SSLSocket.verify_client_post_handshake for TLS 1.3’s post handshake
    authentication feature.

  • bpo-32718: The Activate.ps1 script from venv works with PowerShell Core
    6.1 and is now available under all operating systems.

  • bpo-31177: Fix bug that prevented using reset_mock on mock instances with deleted attributes

  • bpo-34672: Add a workaround, so the 'Z' time.strftime()
    specifier on the musl C library can work in some cases.

  • bpo-34666: Implement asyncio.StreamWriter.awrite and
    asyncio.StreamWriter.aclose() coroutines. Methods are needed for
    providing a consistent stream API with control flow switched on by

  • bpo-6721: Acquire the logging module’s commonly used internal locks while
    fork()ing to avoid deadlocks in the child process.

  • bpo-34658: Fix a rare interpreter unhandled exception state SystemError
    only seen when using subprocess with a preexec_fn while an after_parent
    handler has been registered with os.register_at_fork and the fork system
    call fails.

  • bpo-34652: Ensure os.lchmod() is never defined on Linux.

  • bpo-34638: Store a weak reference to stream reader to break strong
    references loop between reader and protocol. It allows to detect and
    close the socket if the stream is deleted (garbage collected) without
    close() call.

  • bpo-34536: Enum._missing_: raise ValueError if None returned and
    TypeError if non-member is returned.

  • bpo-34636: Speed up re scanning of many non-matching characters for s w
    and d within bytes objects. (microoptimization)

  • bpo-24412: Add addModuleCleanup() and
    addClassCleanup() to unittest to support
    cleanups for setUpModule() and
    setUpClass(). Patch by Lisa Roach.

  • bpo-34630: Don’t log SSL certificate errors in asyncio code (connection
    error logging is skipped already).

  • bpo-32490: Prevent filename duplication in subprocess exception
    messages. Patch by Zackery Spytz.

  • bpo-34363: dataclasses.asdict() and .astuple() now handle namedtuples

  • bpo-34625: Update vendorized expat library version to 2.2.6.

  • bpo-32270: The subprocess module no longer mistakenly closes redirected
    fds even when they were in pass_fds when outside of the default {0, 1, 2}

  • bpo-34622: Create a dedicated asyncio.CancelledError,
    asyncio.InvalidStateError and asyncio.TimeoutError exception
    classes. Inherit them from corresponding exceptions from
    concurrent.futures package. Extract asyncio exceptions into a
    separate file.

  • bpo-34610: Fixed iterator of multiprocessing.managers.DictProxy.

  • bpo-34421: Fix distutils logging for non-ASCII strings. This caused
    installation issues on Windows.

  • bpo-34604: Fix possible mojibake in the error message of pwd.getpwnam
    and grp.getgrnam using string representation because of invisible
    characters or trailing whitespaces. Patch by William Grzybowski.

  • bpo-30977: Make uuid.UUID use __slots__ to reduce its memory
    footprint. Based on original patch by Wouter Bolsterlee.

  • bpo-34574: OrderedDict iterators are not exhausted during pickling
    anymore. Patch by Sergey Fedoseev.

  • bpo-8110: Refactored subprocess to check for Windows-specific
    modules rather than sys.platform == 'win32'.

  • bpo-34530: distutils.spawn.find_executable() now falls back on
    os.defpath if the PATH environment variable is not set.

  • bpo-34563: On Windows, fix multiprocessing.Connection for very large read:
    fix _winapi.PeekNamedPipe() and _winapi.ReadFile() for read larger than
    INT_MAX (usually 2**31-1).

  • bpo-34558: Correct typo in Lib/ctypes/_aix.py

  • bpo-34282: Move Enum._convert to EnumMeta._convert_ and fix enum
    members getting shadowed by parent attributes.

  • bpo-22872: When the queue is closed, ValueError is now raised by
    multiprocessing.Queue.put() and multiprocessing.Queue.get()
    instead of AssertionError and OSError, respectively. Patch
    by Zackery Spytz.

  • bpo-34515: Fix parsing non-ASCII identifiers in
    lib2to3.pgen2.tokenize (PEP 3131).

  • bpo-13312: Avoids a possible integer underflow (undefined behavior) in the
    time module’s year handling code when passed a very low negative year

  • bpo-34472: Improved compatibility for streamed files in zipfile.
    Previously an optional signature was not being written and certain ZIP
    applications were not supported. Patch by Silas Sewell.

  • bpo-34454: Fix the .fromisoformat() methods of datetime types crashing
    when given unicode with non-UTF-8-encodable code points. Specifically,
    datetime.fromisoformat() now accepts surrogate unicode code points used as
    the separator. Report and tests by Alexey Izbyshev, patch by Paul Ganssle.

  • bpo-6700: Fix inspect.getsourcelines for module level frames/tracebacks.
    Patch by Vladimir Matveev.

  • bpo-34171: Running the trace module no longer creates the
    trace.cover file.

  • bpo-34441: Fix crash when an ABC-derived class with invalid
    __subclasses__ is passed as the second argument to
    issubclass(). Patch by Alexey Izbyshev.

  • bpo-34427: Fix infinite loop in a.extend(a) for MutableSequence

  • bpo-34412: Make signal.strsignal() work on HP-UX. Patch by Michael

  • bpo-20849: shutil.copytree now accepts a new dirs_exist_ok keyword
    argument. Patch by Josh Bronson.

  • bpo-31715: Associate .mjs file extension with
    application/javascript MIME Type.

  • bpo-34384: os.readlink() now accepts path-like and bytes objects on Windows.

  • bpo-22602: The UTF-7 decoder now raises UnicodeDecodeError for
    ill-formed sequences starting with “+” (as specified in RFC 2152). Patch
    by Zackery Spytz.

  • bpo-2122: The mmap.flush() method now returns
    None on success, raises an exception on error under all platforms.

  • bpo-34341: Appending to the ZIP archive with the ZIP64 extension no longer
    grows the size of extra fields of existing entries.

  • bpo-34333: Fix %-formatting in pathlib.PurePath.with_suffix() when
    formatting an error message.

  • bpo-18540: The imaplib.IMAP4 and imaplib.IMAP4_SSL
    classes now resolve to the local host IP correctly when the default value
    of host parameter ('') is used.

  • bpo-26502: Implement traceback.FrameSummary.__len__() method to
    preserve compatibility with the old tuple API.

  • bpo-34318: assertRaises(),
    assertWarns() and
    assertWarnsRegex() no longer success if the
    passed callable is None. They no longer ignore unknown keyword arguments
    in the context manager mode. A DeprecationWarning was raised in these
    cases since Python 3.5.

  • bpo-9372: Deprecate __getitem__() methods of
    xml.dom.pulldom.DOMEventStream, wsgiref.util.FileWrapper
    and fileinput.FileInput.

  • bpo-33613: Fix a race condition in multiprocessing.semaphore_tracker
    when the tracker receives SIGINT before it can register signal handlers
    for ignoring it.

  • bpo-34248: Report filename in the exception raised when the database file
    cannot be opened by dbm.gnu.open() and dbm.ndbm.open() due to
    OS-related error. Patch by Zsolt Cserna.

  • bpo-33089: Add math.dist() to compute the Euclidean distance between two

  • bpo-34246: smtplib.SMTP.send_message() no longer modifies the
    content of the mail_options argument. Patch by Pablo S. Blum de Aguiar.

  • bpo-31047: Fix ntpath.abspath for invalid paths on windows. Patch by
    Franz Woellert.

  • bpo-32321: Add pure Python fallback for functools.reduce. Patch by Robert

  • bpo-34270: The default asyncio task class now always has a name which can
    be get or set using two new methods (get_name() and
    set_name()) and is visible in the repr() output.
    An initial name can also be set using the new name keyword argument to
    asyncio.create_task() or the
    create_task() method of the event loop.
    If no initial name is set, the default Task implementation generates a
    name like Task-1 using a monotonic counter.

  • bpo-34263: asyncio’s event loop will not pass timeouts longer than one day
    to epoll/select etc.

  • bpo-34035: Fix several AttributeError in zipfile seek() methods. Patch by
    Mickaël Schoentgen.

  • bpo-32215: Fix performance regression in sqlite3 when a DML
    statement appeared in a different line than the rest of the SQL query.

  • bpo-34075: Deprecate passing non-ThreadPoolExecutor instances to

  • bpo-34251: Restore msilib.Win64 to preserve backwards compatibility
    since it’s already used by distutilsbdist_msi command.

  • bpo-19891: Ignore errors caused by missing / non-writable homedir while
    writing history during exit of an interactive session. Patch by Anthony

  • bpo-33089: Enhanced math.hypot() to support more than two dimensions.

  • bpo-34228: tracemalloc: PYTHONTRACEMALLOC=0 environment variable and -X
    tracemalloc=0 command line option are now allowed to disable explicitly
    tracemalloc at startup.

  • bpo-13041: Use shutil.get_terminal_size() to calculate the terminal
    width correctly in the argparse.HelpFormatter class. Initial patch by
    Zbyszek Jędrzejewski-Szmek.

  • bpo-34213: Allow frozen dataclasses to have a field named “object”.
    Previously this conflicted with an internal use of “object”.

  • bpo-34052: sqlite3.Connection.create_aggregate(),
    sqlite3.Connection.set_progress_handler() methods raises TypeError
    when unhashable objects are passed as callable. These methods now don’t
    pass such objects to SQLite API. Previous behavior could lead to
    segfaults. Patch by Sergey Fedoseev.

  • bpo-34197: Attributes skipinitialspace, doublequote and strict of
    the dialect attribute of the csv reader are now bool
    instances instead of integers 0 or 1.

  • bpo-32788: Errors other than TypeError raised in methods
    __adapt__() and __conform__() in the sqlite3 module are now
    propagated to the user.

  • bpo-21446: The reload fixer now uses importlib.reload()
    instead of deprecated imp.reload().

  • bpo-940286: pydoc’s Helper.showtopic() method now prints the cross
    references of a topic correctly.

  • bpo-34164: base64.b32decode() could raise UnboundLocalError or
    OverflowError for incorrect padding. Now it always raises
    base64.Error in these cases.

  • bpo-33729: Fixed issues with arguments parsing in hashlib.

  • bpo-34097: ZipFile can zip files older than 1980-01-01 and newer than
    2107-12-31 using a new strict_timestamps parameter at the cost of
    setting the timestamp to the limit.

  • bpo-34108: Remove extraneous CR in 2to3 refactor.

  • bpo-34070: Make sure to only check if the handle is a tty, when opening a
    file with buffering=-1.

  • bpo-27494: Reverted bpo-27494. 2to3 rejects now a trailing comma in
    generator expressions.

  • bpo-33967: functools.singledispatch now raises TypeError instead of
    IndexError when no positional arguments are passed.

  • bpo-34041: Add the parameter deterministic to the
    sqlite3.Connection.create_function() method. Patch by Sergey

  • bpo-34056: Ensure the loader shim created by imp.load_module always
    returns bytes from its get_data() function. This fixes using
    imp.load_module with PEP 552 hash-based pycs.

  • bpo-34054: The multiprocessing module now uses the monotonic clock
    time.monotonic() instead of the system clock time.time() to
    implement timeout.

  • bpo-34043: Optimize tarfile uncompress performance about 15% when gzip is

  • bpo-34044: subprocess.Popen now copies the startupinfo argument to
    leave it unchanged: it will modify the copy, so that the same
    STARTUPINFO object can be used multiple times.

  • bpo-34010: Fixed a performance regression for reading streams with
    tarfile. The buffered read should use a list, instead of appending to a
    bytes object.

  • bpo-34019: webbrowser: Correct the arguments passed to Opera Browser when
    opening a new URL using the webbrowser module. Patch by Bumsik Kim.

  • bpo-34003: csv.DictReader now creates dicts instead of OrderedDicts. Patch
    by Michael Selik.

  • bpo-33978: Closed existing logging handlers before reconfiguration via
    fileConfig and dictConfig. Patch by Karthikeyan Singaravelan.

  • bpo-14117: Make minor tweaks to turtledemo. The ‘wikipedia’ example is now
    ‘rosette’, describing what it draws. The ‘penrose’ print output is
    reduced. The’1024’ output of ‘tree’ is eliminated.

  • bpo-33974: Fixed passing lists and tuples of strings containing special
    characters ", , {, } and n as options to
    ttk widgets.

  • bpo-27500: Fix getaddrinfo to resolve IPv6 addresses correctly.

  • bpo-24567: Improve random.choices() to handle subnormal input weights that
    could occasionally trigger an IndexError.

  • bpo-33871: Fixed integer overflow in os.readv(), os.writev(),
    os.preadv() and os.pwritev() and in os.sendfile() with
    headers or trailers arguments (on BSD-based OSes and macOS).

  • bpo-25007: Add copy.copy() and copy.deepcopy() support to zlib
    compressors and decompressors. Patch by Zackery Spytz.

  • bpo-33929: multiprocessing: Fix a race condition in Popen of
    multiprocessing.popen_spawn_win32. The child process now duplicates the
    read end of pipe instead of “stealing” it. Previously, the read end of
    pipe was “stolen” by the child process, but it leaked a handle if the
    child process had been terminated before it could steal the handle from
    the parent process.

  • bpo-33899: Tokenize module now implicitly emits a NEWLINE when provided
    with input that does not have a trailing new line. This behavior now
    matches what the C tokenizer does internally. Contributed by Ammar Askar.

  • bpo-33897: Added a ‘force’ keyword argument to logging.basicConfig().

  • bpo-33695: shutil.copytree() uses os.scandir() function and
    all copy functions depending from it use cached os.stat() values.
    The speedup for copying a directory with 8000 files is around +9% on
    Linux, +20% on Windows and + 30% on a Windows SMB share. Also the number
    of os.stat() syscalls is reduced by 38% making
    shutil.copytree() especially faster on network filesystems.
    (Contributed by Giampaolo Rodola’ in bpo-33695.)

  • bpo-33916: bz2 and lzma: When Decompressor.__init__() is called twice,
    free the old lock to not leak memory.

  • bpo-32568: Make select.epoll() and its documentation consistent regarding
    sizehint and flags.

  • bpo-33833: Fixed bug in asyncio where ProactorSocketTransport logs
    AssertionError if force closed during write.

  • bpo-33663: Convert content length to string before putting to header.

  • bpo-33721: os.path functions that return a boolean result like
    exists(), lexists(), isdir(),
    isfile(), islink(), and
    ismount(), and pathlib.Path methods that return a
    boolean result like exists(),
    is_dir(), is_file(),
    is_mount(), is_symlink(),
    is_char_device(), is_fifo(),
    is_socket() now return False instead of raising
    ValueError or its subclasses UnicodeEncodeError and
    UnicodeDecodeError for paths that contain characters or bytes
    unrepresentable at the OS level.

  • bpo-26544: Fixed implementation of platform.libc_ver(). It almost
    always returned version ‘2.9’ for glibc.

  • bpo-33843: Remove deprecated cgi.escape, cgi.parse_qs and

  • bpo-33842: Remove tarfile.filemode which is deprecated since Python

  • bpo-30167: Prevent site.main() exception if PYTHONSTARTUP is set. Patch by
    Steve Weber.

  • bpo-33805: Improve error message of dataclasses.replace() when an InitVar
    is not specified

  • bpo-33687: Fix the call to os.chmod() for uu.decode() if a mode is
    given or decoded. Patch by Timo Furrer.

  • bpo-33812: Datetime instance d with non-None tzinfo, but with
    d.tzinfo.utcoffset(d) returning None is now treated as naive by the
    astimezone() method.

  • bpo-32108: In configparser, don’t clear section when it is assigned to

  • bpo-27397: Make email module properly handle invalid-length base64

  • bpo-33578: Implement multibyte encoder/decoder state methods

  • bpo-30805: Avoid race condition with debug logging

  • bpo-33476: Fix _header_value_parser.py when address group is missing final
    ‘;’. Contributed by Enrique Perez-Terron

  • bpo-33694: asyncio: Fix a race condition causing data loss on
    pause_reading()/resume_reading() when using the ProactorEventLoop.

  • bpo-32493: Correct test for uuid_enc_be availability in
    configure.ac. Patch by Michael Felt.

  • bpo-33792: Add asyncio.WindowsSelectorEventLoopPolicy and

  • bpo-33274: W3C DOM Level 1 specifies return value of
    Element.removeAttributeNode() as “The Attr node that was removed.”
    xml.dom.minidom now complies with this requirement.

  • bpo-33778: Update unicodedata’s database to Unicode version 11.0.0.

  • bpo-33165: Added a stacklevel parameter to logging calls to allow use of
    wrapper/helper functions for logging APIs.

  • bpo-33770: improve base64 exception message for encoded inputs of invalid

  • bpo-33769: asyncio/start_tls: Fix error message; cancel callbacks in case
    of an unhandled error; mark SSLTransport as closed if it is aborted.

  • bpo-33767: The concatenation (+) and repetition (*) sequence
    operations now raise TypeError instead of SystemError when
    performed on mmap.mmap objects. Patch by Zackery Spytz.

  • bpo-33734: asyncio/ssl: Fix AttributeError, increase default handshake

  • bpo-31014: Fixed creating a controller for webbrowser when a user
    specifies a path to an entry in the BROWSER environment variable. Based
    on patch by John Still.

  • bpo-2504: Add gettext.pgettext() and variants.

  • bpo-33197: Add description property for _ParameterKind

  • bpo-32751: When cancelling the task due to a timeout,
    asyncio.wait_for() will now wait until the cancellation is complete.

  • bpo-32684: Fix gather to propagate cancellation of itself even with

  • bpo-33654: Support protocol type switching in SSLTransport.set_protocol().

  • bpo-33674: Pause the transport as early as possible to further reduce the
    risk of data_received() being called before connection_made().

  • bpo-33671: shutil.copyfile(), shutil.copy(),
    shutil.copy2(), shutil.copytree() and shutil.move() use
    platform-specific fast-copy syscalls on Linux and macOS in order to copy
    the file more efficiently. On Windows shutil.copyfile() uses a
    bigger default buffer size (1 MiB instead of 16 KiB) and a
    memoryview()-based variant of shutil.copyfileobj() is used.
    The speedup for copying a 512MiB file is about +26% on Linux, +50% on
    macOS and +40% on Windows. Also, much less CPU cycles are consumed.
    (Contributed by Giampaolo Rodola’ in bpo-25427.)

  • bpo-33674: Fix a race condition in SSLProtocol.connection_made() of
    asyncio.sslproto: start immediately the handshake instead of using
    call_soon(). Previously, data_received() could be called before the
    handshake started, causing the handshake to hang or fail.

  • bpo-31647: Fixed bug where calling write_eof() on a
    _SelectorSocketTransport after it’s already closed raises AttributeError.

  • bpo-32610: Make asyncio.all_tasks() return only pending tasks.

  • bpo-32410: Avoid blocking on file IO in sendfile fallback code

  • bpo-33469: Fix RuntimeError after closing loop that used run_in_executor

  • bpo-33672: Fix Task.__repr__ crash with Cython’s bogus coroutines

  • bpo-33654: Fix transport.set_protocol() to support switching between
    asyncio.Protocol and asyncio.BufferedProtocol. Fix loop.start_tls() to
    work with asyncio.BufferedProtocols.

  • bpo-33652: Pickles of type variables and subscripted generics are now
    future-proof and compatible with older Python versions.

  • bpo-32493: Fixed uuid.uuid1() on FreeBSD.

  • bpo-33238: Add InvalidStateError to concurrent.futures.
    Future.set_result and Future.set_exception now raise
    InvalidStateError if the futures are not pending or running. Patch by
    Jason Haydaman.

  • bpo-33618: Finalize and document preliminary and experimental TLS 1.3
    support with OpenSSL 1.1.1

  • bpo-33625: Release GIL on grp.getgrnam, grp.getgrgid, pwd.getpwnam
    and pwd.getpwuid if reentrant variants of these functions are available.
    Patch by William Grzybowski.

  • bpo-33623: Fix possible SIGSGV when asyncio.Future is created in __del__

  • bpo-11874: Use a better regex when breaking usage into wrappable parts.
    Avoids bogus assertion errors from custom metavar strings.

  • bpo-30877: Fixed a bug in the Python implementation of the JSON decoder
    that prevented the cache of parsed strings from clearing after finishing
    the decoding. Based on patch by c-fos.

  • bpo-33604: Remove HMAC default to md5 marked for removal in 3.8 (removal
    originally planned in 3.6, bump to 3.8 in gh-7062).

  • bpo-33582: Emit a deprecation warning for inspect.formatargspec

  • bpo-21145: Add functools.cached_property decorator, for computed
    properties cached for the life of the instance.

  • bpo-33570: Change TLS 1.3 cipher suite settings for compatibility with
    OpenSSL 1.1.1-pre6 and newer. OpenSSL 1.1.1 will have TLS 1.3 ciphers
    enabled by default.

  • bpo-28556: Do not simplify arguments to typing.Union. Now
    Union[Manager, Employee] is not simplified to Employee at runtime.
    Such simplification previously caused several bugs and limited
    possibilities for introspection.

  • bpo-12486: tokenize.generate_tokens() is now documented as a public
    API to tokenize unicode strings. It was previously present but

  • bpo-33540: Add a new block_on_close class attribute to
    ForkingMixIn and ThreadingMixIn classes of socketserver.

  • bpo-33548: tempfile._candidate_tempdir_list should consider common TEMP

  • bpo-33109: argparse subparsers are once again not required by default,
    reverting the change in behavior introduced by bpo-26510 in 3.7.0a2.

  • bpo-33541: Remove unused private method _strptime.LocaleTime.__pad
    (a.k.a. _LocaleTime__pad).

  • bpo-33536: dataclasses.make_dataclass now checks for invalid field names
    and duplicate fields. Also, added a check for invalid field

  • bpo-33542: Prevent uuid.get_node from using a DUID instead of a MAC on
    Windows. Patch by Zvi Effron

  • bpo-26819: Fix race condition with ReadTransport.resume_reading in
    Windows proactor event loop.

  • Fix failure in typing.get_type_hints() when ClassVar was provided as a
    string forward reference.

  • bpo-33516: unittest.mock.MagicMock now supports the __round__
    magic method.

  • bpo-28612: Added support for Site Maps to urllib’s RobotFileParser as
    RobotFileParser.site_maps(). Patch by Lady Red, based
    on patch by Peter Wirtz.

  • bpo-28167: Remove platform.linux_distribution, which was deprecated since

  • bpo-33504: Switch the default dictionary implementation for
    configparser from collections.OrderedDict to the standard
    dict type.

  • bpo-33505: Optimize asyncio.ensure_future() by reordering if checks: 1.17x

  • bpo-33497: Add errors param to cgi.parse_multipart and make an encoding in
    FieldStorage use the given errors (needed for Twisted). Patch by Amber

  • bpo-29235: The cProfile.Profile class can now be used as a
    context manager. Patch by Scott Sanderson.

  • bpo-33495: Change dataclasses.Fields repr to use the repr of each of its
    members, instead of str. This makes it more clear what each field
    actually represents. This is especially true for the ‘type’ member.

  • bpo-26103: Correct inspect.isdatadescriptor to look for __set__ or
    __delete__. Patch by Aaron Hall.

  • bpo-29209: Removed the doctype() method and the html parameter of
    the constructor of XMLParser. The
    doctype() method defined in a subclass will no longer be called.
    Deprecated methods getchildren() and getiterator() in the
    ElementTree module emit now a DeprecationWarning
    instead of PendingDeprecationWarning.

  • bpo-33453: Fix dataclasses to work if using literal string type
    annotations or if using PEP 563 “Postponed Evaluation of Annotations”.
    Only specific string prefixes are detected for both ClassVar (“ClassVar”
    and “typing.ClassVar”) and InitVar (“InitVar” and “dataclasses.InitVar”).

  • bpo-28556: Minor fixes in typing module: add annotations to
    NamedTuple.__new__, pass *args and **kwds in
    Generic.__new__. Original PRs by Paulius Šarka and Chad Dombrova.

  • bpo-33365: Print the header values besides the header keys instead just
    the header keys if debuglevel is set to >0 in http.client. Patch
    by Marco Strigl.

  • bpo-20087: Updated alias mapping with glibc 2.27 supported locales.

  • bpo-33422: Fix trailing quotation marks getting deleted when looking up
    byte/string literals on pydoc. Patch by Andrés Delfino.

  • bpo-28167: The function platform.linux_distribution and
    platform.dist now trigger a DeprecationWarning and have been
    marked for removal in Python 3.8

  • bpo-33281: Fix ctypes.util.find_library regression on macOS.

  • bpo-33311: Text and html output generated by cgitb does not display
    parentheses if the current call is done directly in the module. Patch by
    Stéphane Blondon.

  • bpo-27300: The file classes in tempfile now accept an errors parameter
    that complements the already existing encoding. Patch by Stephan Hohe.

  • bpo-32933: unittest.mock.mock_open() now supports iteration over the
    file contents. Patch by Tony Flury.

  • bpo-33217: Raise TypeError when looking up non-Enum objects in Enum
    classes and Enum members.

  • bpo-33197: Update error message when constructing invalid
    inspect.Parameters Patch by Dong-hee Na.

  • bpo-33383: Fixed crash in the get() method of the dbm.ndbm database
    object when it is called with a single argument.

  • bpo-33375: The warnings module now finds the Python file associated with a
    warning from the code object, rather than the frame’s global namespace.
    This is consistent with how tracebacks and pdb find filenames, and should
    work better for dynamically executed code.

  • bpo-33336: imaplib now allows MOVE command in IMAP4.uid() (RFC
    6851: IMAP MOVE Extension) and potentially as a name of supported method
    of IMAP4 object.

  • bpo-32455: Added jump parameter to dis.stack_effect().

  • bpo-27485: Rename and deprecate undocumented functions in

  • bpo-33332: Add signal.valid_signals() to expose the POSIX sigfillset()

  • bpo-33251: ConfigParser.items() was fixed so that key-value pairs passed
    in via vars are not included in the resulting output.

  • bpo-33329: Fix multiprocessing regression on newer glibcs

  • bpo-33334: dis.stack_effect() now supports all defined opcodes
    including NOP and EXTENDED_ARG.

  • bpo-991266: Fix quoting of the Comment attribute of

  • bpo-33131: Upgrade bundled version of pip to 10.0.1.

  • bpo-33308: Fixed a crash in the parser module when converting an ST
    object to a tree of tuples or lists with line_info=False and

  • bpo-23403: lib2to3 now uses pickle protocol 4 for pre-computed grammars.

  • bpo-33266: lib2to3 now recognizes rf'...' strings.

  • bpo-11594: Ensure line-endings are respected when using lib2to3.

  • bpo-33254: Have importlib.resources.contents() and
    importlib.abc.ResourceReader.contents() return an iterable
    instead of an iterator.

  • bpo-33265: contextlib.ExitStack and contextlib.AsyncExitStack now
    use a method instead of a wrapper function for exit callbacks.

  • bpo-33263: Fix FD leak in _SelectorSocketTransport Patch by Vlad

  • bpo-33256: Fix display of call in the html produced by
    cgitb.html(). Patch by Stéphane Blondon.

  • bpo-33144: random.Random() and its subclassing mechanism got optimized
    to check only once at class/subclass instantiation time whether its
    getrandbits() method can be relied on by other methods, including
    randrange(), for the generation of arbitrarily large random integers.
    Patch by Wolfgang Maier.

  • bpo-33185: Fixed regression when running pydoc with the -m
    switch. (The regression was introduced in 3.7.0b3 by the resolution of

    This fix also changed pydoc to add os.getcwd() to sys.path
    when necessary, rather than adding ".".

  • bpo-29613: Added support for the SameSite cookie flag to the
    http.cookies module.

  • bpo-33169: Delete entries of None in sys.path_importer_cache
    when importlib.machinery.invalidate_caches() is called.

  • bpo-33203: random.Random.choice() now raises IndexError for empty
    sequences consistently even when called from subclasses without a
    getrandbits() implementation.

  • bpo-33224: Update difflib.mdiff() for PEP 479. Convert an uncaught
    StopIteration in a generator into a return-statement.

  • bpo-33209: End framing at the end of C implementation of

  • bpo-32861: The urllib.robotparser’s __str__ representation now
    includes wildcard entries and the “Crawl-delay” and “Request-rate” fields.
    Also removes extra newlines that were being appended to the end of the
    string. Patch by Michael Lazar.

  • bpo-23403: DEFAULT_PROTOCOL in pickle was bumped to 4. Protocol
    4 is described in PEP 3154 and available since Python 3.4. It offers
    better performance and smaller size compared to protocol 3 introduced in
    Python 3.0.

  • bpo-20104: Improved error handling and fixed a reference leak in

  • bpo-33106: Deleting a key from a read-only dbm database raises module
    specific error instead of KeyError.

  • bpo-33175: In dataclasses, Field.__set_name__ now looks up the
    __set_name__ special method on the class, not the instance, of the default

  • bpo-32380: Create functools.singledispatchmethod to support generic single
    dispatch on descriptors and methods.

  • bpo-33141: Have Field objects pass through __set_name__ to their default
    values, if they have their own __set_name__.

  • bpo-33096: Allow ttk.Treeview.insert to insert iid that has a false
    boolean value. Note iid=0 and iid=False would be same. Patch by Garvit

  • bpo-32873: Treat type variables and special typing forms as immutable by
    copy and pickle. This fixes several minor issues and inconsistencies, and
    improves backwards compatibility with Python 3.6.

  • bpo-33134: When computing dataclass’s __hash__, use the lookup table to
    contain the function which returns the __hash__ value. This is an
    improvement over looking up a string, and then testing that string to see
    what to do.

  • bpo-33127: The ssl module now compiles with LibreSSL 2.7.1.

  • bpo-32505: Raise TypeError if a member variable of a dataclass is of type
    Field, but doesn’t have a type annotation.

  • bpo-33078: Fix the failure on OSX caused by the tests relying on

  • bpo-33116: Add ‘Field’ to dataclasses.__all__.

  • bpo-32896: Fix an error where subclassing a dataclass with a field that
    uses a default_factory would generate an incorrect class.

  • bpo-33100: Dataclasses: If a field has a default value that’s a
    MemberDescriptorType, then it’s from that field being in __slots__, not an
    actual default value.

  • bpo-32953: If a non-dataclass inherits from a frozen dataclass, allow
    attributes to be added to the derived class. Only attributes from the
    frozen dataclass cannot be assigned to. Require all dataclasses in a
    hierarchy to be either all frozen or all non-frozen.

  • bpo-33097: Raise RuntimeError when executor.submit is called during
    interpreter shutdown.

  • bpo-32968: Modulo and floor division involving Fraction and float should
    return float.

  • bpo-33061: Add missing NoReturn to __all__ in typing.py

  • bpo-33078: Fix the size handling in multiprocessing.Queue when a pickling
    error occurs.

  • bpo-33064: lib2to3 now properly supports trailing commas after *args
    and **kwargs in function signatures.

  • bpo-33056: FIX properly close leaking fds in

  • bpo-33021: Release the GIL during fstat() calls, avoiding hang of all
    threads when calling mmap.mmap(), os.urandom(), and random.seed(). Patch
    by Nir Soffer.

  • bpo-31804: Avoid failing in multiprocessing.Process if the standard
    streams are closed or None at exit.

  • bpo-33034: Providing an explicit error message when casting the port
    property to anything that is not an integer value using urlparse() and
    urlsplit(). Patch by Matt Eaton.

  • bpo-30249: Improve struct.unpack_from() exception messages for problems
    with the buffer size and offset.

  • bpo-33037: Skip sending/receiving data after SSL transport closing.

  • bpo-27683: Fix a regression in ipaddress that result of
    hosts() is empty when the network is constructed by a tuple
    containing an integer mask and only 1 bit left for addresses.

  • bpo-22674: Add the strsignal() function in the signal module that returns
    the system description of the given signal, as returned by strsignal(3).

  • bpo-32999: Fix C implementation of ABC.__subclasscheck__(cls,
    crashed when subclass is not a type object.

  • bpo-33009: Fix inspect.signature() for single-parameter partialmethods.

  • bpo-32969: Expose several missing constants in zlib and fix corresponding

  • bpo-32056: Improved exceptions raised for invalid number of channels and
    sample width when read an audio file in modules aifc, wave
    and sunau.

  • bpo-32970: Improved disassembly of the MAKE_FUNCTION instruction.

  • bpo-32844: Fix wrong redirection of a low descriptor (0 or 1) to stderr in
    subprocess if another low descriptor is closed.

  • bpo-32960: For dataclasses, disallow inheriting frozen from non-frozen
    classes, and also disallow inheriting non-frozen from frozen classes. This
    restriction will be relaxed at a future date.

  • bpo-32713: Fixed tarfile.itn handling of out-of-bounds float values. Patch
    by Joffrey Fuhrer.

  • bpo-32257: The ssl module now contains OP_NO_RENEGOTIATION constant,
    available with OpenSSL 1.1.0h or 1.1.1.

  • bpo-32951: Direct instantiation of SSLSocket and SSLObject objects is now
    prohibited. The constructors were never documented, tested, or designed as
    public constructors. Users were suppose to use ssl.wrap_socket() or

  • bpo-32929: Remove the tri-state parameter “hash”, and add the boolean
    “unsafe_hash”. If unsafe_hash is True, add a __hash__ function, but if a
    __hash__ exists, raise TypeError. If unsafe_hash is False, add a __hash__
    based on the values of eq= and frozen=. The unsafe_hash=False behavior is
    the same as the old hash=None behavior. unsafe_hash=False is the default,
    just as hash=None used to be.

  • bpo-32947: Add OP_ENABLE_MIDDLEBOX_COMPAT and test workaround for TLSv1.3
    for future compatibility with OpenSSL 1.1.1.

  • bpo-32146: Document the interaction between frozen executables and the
    spawn and forkserver start methods in multiprocessing.

  • bpo-30622: The ssl module now detects missing NPN support in LibreSSL.

  • bpo-32922: dbm.open() now encodes filename with the filesystem encoding
    rather than default encoding.

  • bpo-32759: Free unused arenas in multiprocessing.heap.

  • bpo-32859: In os.dup2, don’t check every call whether the dup3
    syscall exists or not.

  • bpo-32556: nt._getfinalpathname, nt._getvolumepathname and
    nt._getdiskusage now correctly convert from bytes.

  • bpo-21060: Rewrite confusing message from setup.py upload from “No dist
    file created in earlier command” to the more helpful “Must create and
    upload files in one command”.

  • bpo-32857: In tkinter, after_cancel(None) now raises a
    ValueError instead of canceling the first scheduled function.
    Patch by Cheryl Sabella.

  • bpo-32852: Make sure sys.argv remains as a list when running trace.

  • bpo-31333: _abc module is added. It is a speedup module with C
    implementations for various functions and methods in abc. Creating an
    ABC subclass and calling isinstance or issubclass with an ABC
    subclass are up to 1.5x faster. In addition, this makes Python start-up up
    to 10% faster.

    Note that the new implementation hides internal registry and caches,
    previously accessible via private attributes _abc_registry,
    _abc_cache, and _abc_negative_cache. There are three debugging
    helper methods that can be used instead _dump_registry,
    _abc_registry_clear, and _abc_caches_clear.

  • bpo-32841: Fixed asyncio.Condition issue which silently ignored
    cancellation after notifying and cancelling a conditional lock. Patch by
    Bar Harel.

  • bpo-32819: ssl.match_hostname() has been simplified and no longer depends
    on re and ipaddress module for wildcard and IP addresses. Error reporting
    for invalid wildcards has been improved.

  • bpo-19675: multiprocessing.Pool no longer leaks processes if its
    initialization fails.

  • bpo-32394: socket: Remove
    Windows during run-time.

  • bpo-31787: Fixed refleaks of __init__() methods in various modules.
    (Contributed by Oren Milman)

  • bpo-30157: Fixed guessing quote and delimiter in csv.Sniffer.sniff() when
    only the last field is quoted. Patch by Jake Davis.

  • bpo-30688: Added support of N{name} escapes in regular expressions.
    Based on patch by Jonathan Eunice.

  • bpo-32792: collections.ChainMap() preserves the order of the underlying

  • bpo-32775: 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 patterns containing such sets by accident.

  • bpo-32622: Implement native fast sendfile for Windows proactor event loop.

  • bpo-32777: Fix a rare but potential pre-exec child process deadlock in
    subprocess on POSIX systems when marking file descriptors inheritable on
    exec in the child process. This bug appears to have been introduced in

  • bpo-32647: The ctypes module used to depend on indirect linking for
    dlopen. The shared extension is now explicitly linked against libdl on
    platforms with dl.

  • bpo-32749: A dbm.dumb database opened with flags ‘r’ is now
    read-only. dbm.dumb.open() with flags ‘r’ and ‘w’ no longer creates
    a database if it does not exist.

  • bpo-32741: Implement asyncio.TimerHandle.when() method.

  • bpo-32691: Use mod_spec.parent when running modules with pdb

  • bpo-32734: Fixed asyncio.Lock() safety issue which allowed acquiring
    and locking the same lock multiple times, without it being free. Patch by
    Bar Harel.

  • bpo-32727: Do not include name field in SMTP envelope from address. Patch
    by Stéphane Wirtel

  • bpo-31453: Add TLSVersion constants and SSLContext.maximum_version /
    minimum_version attributes. The new API wraps OpenSSL 1.1

  • bpo-24334: Internal implementation details of ssl module were cleaned up.
    The SSLSocket has one less layer of indirection. Owner and session
    information are now handled by the SSLSocket and SSLObject constructor.
    Channel binding implementation has been simplified.

  • bpo-31848: Fix the error handling in Aifc_read.initfp() when the SSND
    chunk is not found. Patch by Zackery Spytz.

  • bpo-32585: Add Ttk spinbox widget to tkinter.ttk. Patch by Alan D

  • bpo-32512: profile CLI accepts -m module_name as an alternative
    to script path.

  • bpo-8525: help() on a type now displays builtin subclasses. This is
    intended primarily to help with notification of more specific exception

    Patch by Sanyam Khurana.

  • bpo-31639: http.server now exposes a ThreadingHTTPServer class and uses it
    when the module is run with -m to cope with web browsers pre-opening

  • bpo-29877: compileall: import ProcessPoolExecutor only when needed,
    preventing hangs on low resource platforms

  • bpo-32221: Various functions returning tuple containing IPv6 addresses now
    omit %scope part since the same information is already encoded in
    scopeid tuple item. Especially this speeds up socket.recvfrom()
    when it receives multicast packet since useless resolving of network
    interface name is omitted.

  • bpo-32147: binascii.unhexlify() is now up to 2 times faster. Patch
    by Sergey Fedoseev.

  • bpo-30693: The TarFile class now recurses directories in a reproducible

  • bpo-30693: The ZipFile class now recurses directories in a reproducible

  • bpo-31680: Added curses.ncurses_version.

  • bpo-31908: Fix output of cover files for trace module command-line
    tool. Previously emitted cover files only when --missing option was
    used. Patch by Michael Selik.

  • bpo-31608: Raise a TypeError instead of crashing if a
    collections.deque subclass returns a non-deque from __new__. Patch
    by Oren Milman.

  • bpo-31425: Add support for sockets of the AF_QIPCRTR address family,
    supported by the Linux kernel. This is used to communicate with services,
    such as GPS or radio, running on Qualcomm devices. Patch by Bjorn

  • bpo-22005: Implemented unpickling instances of
    datetime, date and
    time pickled by Python 2. encoding='latin1' should
    be used for successful decoding.

  • bpo-27645: sqlite3.Connection now exposes a
    backup method, if the underlying SQLite
    library is at version 3.6.11 or higher. Patch by Lele Gaifax.

  • bpo-16865: Support arrays >=2GiB in ctypes. Patch by Segev Finer.

  • bpo-31508: Removed support of arguments in
    tkinter.ttk.Treeview.selection. It was deprecated in 3.6. Use
    specialized methods like selection_set for changing the selection.

  • bpo-29456: Fix bugs in hangul normalization: u1176, u11a7 and u11c3

  • Go to Source

    Click to comment

    Leave a Reply


    Qualcomm’s next Snapdragon promises always-on smartphone cameras



    Qualcomm’s next Snapdragon promises always-on smartphone cameras

    Qualcomm Snapdragon 8 Gen 1 logo


    Note: When you purchase something after clicking links in our articles, we may earn a small commission. Read our affiliate link policy for more details.

    As PCWorld’s senior editor, Mark focuses on Microsoft news and chip technology, among other beats. He has formerly written for PCMag, BYTE, Slashdot, eWEEK, and ReadWrite.

    Go to Source

    Continue Reading


    Xbox Game Streaming now looks even better on Edge



    Xbox Game Streaming now looks even better on Edge

    Xbox Game Pass streaming


    Note: When you purchase something after clicking links in our articles, we may earn a small commission. Read our affiliate link policy for more details.

    Michael is a former graphic designer who’s been building and tweaking desktop computers for longer than he cares to admit. His interests include folk music, football, science fiction, and salsa verde, in no particular order.

    Go to Source

    Continue Reading


    US lawmakers hope to outlaw online ‘bots’ snatching up hard-to-find hardware



    US lawmakers hope to outlaw online ‘bots’ snatching up hard-to-find hardware

    GeForce RTX logo photo

    Brad Chacos/IDG

    Note: When you purchase something after clicking links in our articles, we may earn a small commission. Read our affiliate link policy for more details.

    Michael is a former graphic designer who’s been building and tweaking desktop computers for longer than he cares to admit. His interests include folk music, football, science fiction, and salsa verde, in no particular order.

    Go to Source

    Continue Reading
    Home | Latest News | Tech | Python 3.11