# Copyright (C) 2001-2018, Python Software Foundation # For licence information, see README file. # msgid "" msgstr "" "Project-Id-Version: Python 3\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-09-23 16:16+0200\n" "PO-Revision-Date: 2021-09-23 16:29+0200\n" "Last-Translator: FULL NAME \n" "Language-Team: FRENCH \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: whatsnew/3.10.rst:3 msgid "What's New In Python 3.10" msgstr "" #: whatsnew/3.10.rst:0 msgid "Release" msgstr "Version" #: whatsnew/3.10.rst:5 msgid "|release|" msgstr "" #: whatsnew/3.10.rst:0 msgid "Date" msgstr "" #: whatsnew/3.10.rst:6 msgid "|today|" msgstr "|today|" #: whatsnew/3.10.rst:0 msgid "Editor" msgstr "" #: whatsnew/3.10.rst:7 msgid "Pablo Galindo Salgado" msgstr "" #: whatsnew/3.10.rst:49 msgid "This article explains the new features in Python 3.10, compared to 3.9." msgstr "" #: whatsnew/3.10.rst:51 msgid "For full details, see the :ref:`changelog `." msgstr "Pour plus de détails, voir le :ref:`changelog `." #: whatsnew/3.10.rst:55 msgid "" "Prerelease users should be aware that this document is currently in draft " "form. It will be updated substantially as Python 3.10 moves towards release, " "so it's worth checking back even after reading earlier versions." msgstr "" #: whatsnew/3.10.rst:61 msgid "Summary -- Release highlights" msgstr "Résumé – Points forts de la publication" #: whatsnew/3.10.rst:69 #, fuzzy msgid "New syntax features:" msgstr "Nouvelles fonctionnalités" #: whatsnew/3.10.rst:71 msgid ":pep:`634`, Structural Pattern Matching: Specification" msgstr "" #: whatsnew/3.10.rst:72 msgid ":pep:`635`, Structural Pattern Matching: Motivation and Rationale" msgstr "" #: whatsnew/3.10.rst:73 msgid ":pep:`636`, Structural Pattern Matching: Tutorial" msgstr "" #: whatsnew/3.10.rst:74 msgid "" ":issue:`12782`, Parenthesized context managers are now officially allowed." msgstr "" #: whatsnew/3.10.rst:76 msgid "New features in the standard library:" msgstr "" #: whatsnew/3.10.rst:78 msgid ":pep:`618`, Add Optional Length-Checking To zip." msgstr "" #: whatsnew/3.10.rst:80 msgid "Interpreter improvements:" msgstr "" #: whatsnew/3.10.rst:82 msgid ":pep:`626`, Precise line numbers for debugging and other tools." msgstr "" #: whatsnew/3.10.rst:84 #, fuzzy msgid "New typing features:" msgstr "Nouvelles fonctionnalités" #: whatsnew/3.10.rst:86 msgid ":pep:`604`, Allow writing union types as X | Y" msgstr "" #: whatsnew/3.10.rst:87 msgid ":pep:`613`, Explicit Type Aliases" msgstr "" #: whatsnew/3.10.rst:88 msgid ":pep:`612`, Parameter Specification Variables" msgstr "" #: whatsnew/3.10.rst:90 msgid "Important deprecations, removals or restrictions:" msgstr "" #: whatsnew/3.10.rst:92 msgid ":pep:`644`, Require OpenSSL 1.1.1 or newer" msgstr "" #: whatsnew/3.10.rst:93 msgid ":pep:`632`, Deprecate distutils module." msgstr "" #: whatsnew/3.10.rst:94 msgid "" ":pep:`623`, Deprecate and prepare for the removal of the wstr member in " "PyUnicodeObject." msgstr "" #: whatsnew/3.10.rst:95 msgid ":pep:`624`, Remove Py_UNICODE encoder APIs" msgstr "" #: whatsnew/3.10.rst:96 msgid ":pep:`597`, Add optional EncodingWarning" msgstr "" #: whatsnew/3.10.rst:2033 msgid "New Features" msgstr "Nouvelles fonctionnalités" #: whatsnew/3.10.rst:105 msgid "Parenthesized context managers" msgstr "" #: whatsnew/3.10.rst:107 msgid "" "Using enclosing parentheses for continuation across multiple lines in " "context managers is now supported. This allows formatting a long collection " "of context managers in multiple lines in a similar way as it was previously " "possible with import statements. For instance, all these examples are now " "valid:" msgstr "" #: whatsnew/3.10.rst:138 msgid "" "it is also possible to use a trailing comma at the end of the enclosed group:" msgstr "" #: whatsnew/3.10.rst:150 msgid "" "This new syntax uses the non LL(1) capacities of the new parser. Check :pep:" "`617` for more details." msgstr "" #: whatsnew/3.10.rst:153 msgid "" "(Contributed by Guido van Rossum, Pablo Galindo and Lysandros Nikolaou in :" "issue:`12782` and :issue:`40334`.)" msgstr "" #: whatsnew/3.10.rst:158 msgid "Better error messages" msgstr "" #: whatsnew/3.10.rst:161 msgid "SyntaxErrors" msgstr "" #: whatsnew/3.10.rst:163 msgid "" "When parsing code that contains unclosed parentheses or brackets the " "interpreter now includes the location of the unclosed bracket of parentheses " "instead of displaying *SyntaxError: unexpected EOF while parsing* or " "pointing to some incorrect location. For instance, consider the following " "code (notice the unclosed '{'):" msgstr "" #: whatsnew/3.10.rst:174 msgid "" "Previous versions of the interpreter reported confusing places as the " "location of the syntax error:" msgstr "" #: whatsnew/3.10.rst:184 msgid "but in Python 3.10 a more informative error is emitted:" msgstr "" #: whatsnew/3.10.rst:194 msgid "" "In a similar way, errors involving unclosed string literals (single and " "triple quoted) now point to the start of the string instead of reporting EOF/" "EOL." msgstr "" #: whatsnew/3.10.rst:197 msgid "" "These improvements are inspired by previous work in the PyPy interpreter." msgstr "" #: whatsnew/3.10.rst:199 msgid "" "(Contributed by Pablo Galindo in :issue:`42864` and Batuhan Taskaya in :" "issue:`40176`.)" msgstr "" #: whatsnew/3.10.rst:202 msgid "" ":exc:`SyntaxError` exceptions raised by the interpreter will now highlight " "the full error range of the expression that constitutes the syntax error " "itself, instead of just where the problem is detected. In this way, instead " "of displaying (before Python 3.10):" msgstr "" #: whatsnew/3.10.rst:215 msgid "now Python 3.10 will display the exception as:" msgstr "" #: whatsnew/3.10.rst:225 msgid "This improvement was contributed by Pablo Galindo in :issue:`43914`." msgstr "" #: whatsnew/3.10.rst:227 msgid "" "A considerable amount of new specialized messages for :exc:`SyntaxError` " "exceptions have been incorporated. Some of the most notable ones are as " "follows:" msgstr "" #: whatsnew/3.10.rst:230 msgid "Missing ``:`` before blocks:" msgstr "" #: whatsnew/3.10.rst:240 msgid "(Contributed by Pablo Galindo in :issue:`42997`)" msgstr "" #: whatsnew/3.10.rst:242 msgid "Unparenthesised tuples in comprehensions targets:" msgstr "" #: whatsnew/3.10.rst:252 msgid "(Contributed by Pablo Galindo in :issue:`43017`)" msgstr "" #: whatsnew/3.10.rst:254 msgid "Missing commas in collection literals and between expressions:" msgstr "" #: whatsnew/3.10.rst:267 msgid "(Contributed by Pablo Galindo in :issue:`43822`)" msgstr "" #: whatsnew/3.10.rst:269 msgid "Multiple Exception types without parentheses:" msgstr "" #: whatsnew/3.10.rst:281 msgid "(Contributed by Pablo Galindo in :issue:`43149`)" msgstr "" #: whatsnew/3.10.rst:283 msgid "Missing ``:`` and values in dictionary literals:" msgstr "" #: whatsnew/3.10.rst:303 msgid "(Contributed by Pablo Galindo in :issue:`43823`)" msgstr "" #: whatsnew/3.10.rst:305 msgid "``try`` blocks without ``except`` or ``finally`` blocks:" msgstr "" #: whatsnew/3.10.rst:317 msgid "(Contributed by Pablo Galindo in :issue:`44305`)" msgstr "" #: whatsnew/3.10.rst:319 msgid "Usage of ``=`` instead of ``==`` in comparisons:" msgstr "" #: whatsnew/3.10.rst:329 msgid "(Contributed by Pablo Galindo in :issue:`43797`)" msgstr "" #: whatsnew/3.10.rst:331 msgid "Usage of ``*`` in f-strings:" msgstr "" #: whatsnew/3.10.rst:341 msgid "(Contributed by Pablo Galindo in :issue:`41064`)" msgstr "" #: whatsnew/3.10.rst:344 msgid "IndentationErrors" msgstr "" #: whatsnew/3.10.rst:346 msgid "" "Many :exc:`IndentationError` exceptions now have more context regarding what " "kind of block was expecting an indentation, including the location of the " "statement:" msgstr "" #: whatsnew/3.10.rst:361 msgid "AttributeErrors" msgstr "" #: whatsnew/3.10.rst:363 msgid "" "When printing :exc:`AttributeError`, :c:func:`PyErr_Display` will offer " "suggestions of similar attribute names in the object that the exception was " "raised from:" msgstr "" #: whatsnew/3.10.rst:396 msgid "(Contributed by Pablo Galindo in :issue:`38530`.)" msgstr "" #: whatsnew/3.10.rst:377 msgid "" "Notice this won't work if :c:func:`PyErr_Display` is not called to display " "the error which can happen if some other custom error display function is " "used. This is a common scenario in some REPLs like IPython." msgstr "" #: whatsnew/3.10.rst:382 msgid "NameErrors" msgstr "" #: whatsnew/3.10.rst:384 msgid "" "When printing :exc:`NameError` raised by the interpreter, :c:func:" "`PyErr_Display` will offer suggestions of similar variable names in the " "function that the exception was raised from:" msgstr "" #: whatsnew/3.10.rst:399 msgid "" "Notice this won't work if :c:func:`PyErr_Display` is not called to display " "the error, which can happen if some other custom error display function is " "used. This is a common scenario in some REPLs like IPython." msgstr "" #: whatsnew/3.10.rst:405 msgid "PEP 626: Precise line numbers for debugging and other tools" msgstr "" #: whatsnew/3.10.rst:407 msgid "" "PEP 626 brings more precise and reliable line numbers for debugging, " "profiling and coverage tools. Tracing events, with the correct line number, " "are generated for all lines of code executed and only for lines of code that " "are executed." msgstr "" #: whatsnew/3.10.rst:410 msgid "" "The ``f_lineno`` attribute of frame objects will always contain the expected " "line number." msgstr "" #: whatsnew/3.10.rst:412 msgid "" "The ``co_lnotab`` attribute of code objects is deprecated and will be " "removed in 3.12. Code that needs to convert from offset to line number " "should use the new ``co_lines()`` method instead." msgstr "" #: whatsnew/3.10.rst:416 msgid "PEP 634: Structural Pattern Matching" msgstr "" #: whatsnew/3.10.rst:418 msgid "" "Structural pattern matching has been added in the form of a *match " "statement* and *case statements* of patterns with associated actions. " "Patterns consist of sequences, mappings, primitive data types as well as " "class instances. Pattern matching enables programs to extract information " "from complex data types, branch on the structure of data, and apply specific " "actions based on different forms of data." msgstr "" #: whatsnew/3.10.rst:426 msgid "Syntax and operations" msgstr "" #: whatsnew/3.10.rst:428 msgid "The generic syntax of pattern matching is::" msgstr "" #: whatsnew/3.10.rst:440 msgid "" "A match statement takes an expression and compares its value to successive " "patterns given as one or more case blocks. Specifically, pattern matching " "operates by:" msgstr "" #: whatsnew/3.10.rst:444 msgid "using data with type and shape (the ``subject``)" msgstr "" #: whatsnew/3.10.rst:445 msgid "evaluating the ``subject`` in the ``match`` statement" msgstr "" #: whatsnew/3.10.rst:446 msgid "" "comparing the subject with each pattern in a ``case`` statement from top to " "bottom until a match is confirmed." msgstr "" #: whatsnew/3.10.rst:448 msgid "executing the action associated with the pattern of the confirmed match" msgstr "" #: whatsnew/3.10.rst:450 msgid "" "If an exact match is not confirmed, the last case, a wildcard ``_``, if " "provided, will be used as the matching case. If an exact match is not " "confirmed and a wildcard case does not exist, the entire match block is a no-" "op." msgstr "" #: whatsnew/3.10.rst:456 msgid "Declarative approach" msgstr "" #: whatsnew/3.10.rst:458 msgid "" "Readers may be aware of pattern matching through the simple example of " "matching a subject (data object) to a literal (pattern) with the switch " "statement found in C, Java or JavaScript (and many other languages). Often " "the switch statement is used for comparison of an object/expression with " "case statements containing literals." msgstr "" #: whatsnew/3.10.rst:464 msgid "" "More powerful examples of pattern matching can be found in languages such as " "Scala and Elixir. With structural pattern matching, the approach is " "\"declarative\" and explicitly states the conditions (the patterns) for data " "to match." msgstr "" #: whatsnew/3.10.rst:468 msgid "" "While an \"imperative\" series of instructions using nested \"if\" " "statements could be used to accomplish something similar to structural " "pattern matching, it is less clear than the \"declarative\" approach. " "Instead the \"declarative\" approach states the conditions to meet for a " "match and is more readable through its explicit patterns. While structural " "pattern matching can be used in its simplest form comparing a variable to a " "literal in a case statement, its true value for Python lies in its handling " "of the subject's type and shape." msgstr "" #: whatsnew/3.10.rst:477 msgid "Simple pattern: match to a literal" msgstr "" #: whatsnew/3.10.rst:479 msgid "" "Let's look at this example as pattern matching in its simplest form: a " "value, the subject, being matched to several literals, the patterns. In the " "example below, ``status`` is the subject of the match statement. The " "patterns are each of the case statements, where literals represent request " "status codes. The associated action to the case is executed after a match::" msgstr "" #: whatsnew/3.10.rst:496 msgid "" "If the above function is passed a ``status`` of 418, \"I'm a teapot\" is " "returned. If the above function is passed a ``status`` of 500, the case " "statement with ``_`` will match as a wildcard, and \"Something's wrong with " "the internet\" is returned. Note the last block: the variable name, ``_``, " "acts as a *wildcard* and insures the subject will always match. The use of " "``_`` is optional." msgstr "" #: whatsnew/3.10.rst:503 msgid "" "You can combine several literals in a single pattern using ``|`` (\"or\")::" msgstr "" #: whatsnew/3.10.rst:509 msgid "Behavior without the wildcard" msgstr "" #: whatsnew/3.10.rst:511 msgid "" "If we modify the above example by removing the last case block, the example " "becomes::" msgstr "" #: whatsnew/3.10.rst:523 msgid "" "Without the use of ``_`` in a case statement, a match may not exist. If no " "match exists, the behavior is a no-op. For example, if ``status`` of 500 is " "passed, a no-op occurs." msgstr "" #: whatsnew/3.10.rst:528 msgid "Patterns with a literal and variable" msgstr "" #: whatsnew/3.10.rst:530 msgid "" "Patterns can look like unpacking assignments, and a pattern may be used to " "bind variables. In this example, a data point can be unpacked to its x-" "coordinate and y-coordinate::" msgstr "" #: whatsnew/3.10.rst:547 msgid "" "The first pattern has two literals, ``(0, 0)``, and may be thought of as an " "extension of the literal pattern shown above. The next two patterns combine " "a literal and a variable, and the variable *binds* a value from the subject " "(``point``). The fourth pattern captures two values, which makes it " "conceptually similar to the unpacking assignment ``(x, y) = point``." msgstr "" #: whatsnew/3.10.rst:554 msgid "Patterns and classes" msgstr "" #: whatsnew/3.10.rst:556 msgid "" "If you are using classes to structure your data, you can use as a pattern " "the class name followed by an argument list resembling a constructor. This " "pattern has the ability to capture class attributes into variables::" msgstr "" #: whatsnew/3.10.rst:578 msgid "Patterns with positional parameters" msgstr "" #: whatsnew/3.10.rst:580 msgid "" "You can use positional parameters with some builtin classes that provide an " "ordering for their attributes (e.g. dataclasses). You can also define a " "specific position for attributes in patterns by setting the " "``__match_args__`` special attribute in your classes. If it's set to (\"x\", " "\"y\"), the following patterns are all equivalent (and all bind the ``y`` " "attribute to the ``var`` variable)::" msgstr "" #: whatsnew/3.10.rst:592 msgid "Nested patterns" msgstr "" #: whatsnew/3.10.rst:594 msgid "" "Patterns can be arbitrarily nested. For example, if our data is a short " "list of points, it could be matched like this::" msgstr "" #: whatsnew/3.10.rst:610 msgid "Complex patterns and the wildcard" msgstr "" #: whatsnew/3.10.rst:612 msgid "" "To this point, the examples have used ``_`` alone in the last case " "statement. A wildcard can be used in more complex patterns, such as " "``('error', code, _)``. For example::" msgstr "" #: whatsnew/3.10.rst:622 msgid "" "In the above case, ``test_variable`` will match for ('error', code, 100) and " "('error', code, 800)." msgstr "" #: whatsnew/3.10.rst:626 msgid "Guard" msgstr "" #: whatsnew/3.10.rst:628 msgid "" "We can add an ``if`` clause to a pattern, known as a \"guard\". If the " "guard is false, ``match`` goes on to try the next case block. Note that " "value capture happens before the guard is evaluated::" msgstr "" #: whatsnew/3.10.rst:639 msgid "Other Key Features" msgstr "" #: whatsnew/3.10.rst:641 msgid "Several other key features:" msgstr "" #: whatsnew/3.10.rst:643 msgid "" "Like unpacking assignments, tuple and list patterns have exactly the same " "meaning and actually match arbitrary sequences. Technically, the subject " "must be a sequence. Therefore, an important exception is that patterns don't " "match iterators. Also, to prevent a common mistake, sequence patterns don't " "match strings." msgstr "" #: whatsnew/3.10.rst:649 msgid "" "Sequence patterns support wildcards: ``[x, y, *rest]`` and ``(x, y, *rest)`` " "work similar to wildcards in unpacking assignments. The name after ``*`` " "may also be ``_``, so ``(x, y, *_)`` matches a sequence of at least two " "items without binding the remaining items." msgstr "" #: whatsnew/3.10.rst:654 msgid "" "Mapping patterns: ``{\"bandwidth\": b, \"latency\": l}`` captures the ``" "\"bandwidth\"`` and ``\"latency\"`` values from a dict. Unlike sequence " "patterns, extra keys are ignored. A wildcard ``**rest`` is also supported. " "(But ``**_`` would be redundant, so is not allowed.)" msgstr "" #: whatsnew/3.10.rst:659 msgid "Subpatterns may be captured using the ``as`` keyword::" msgstr "" #: whatsnew/3.10.rst:663 msgid "" "This binds x1, y1, x2, y2 like you would expect without the ``as`` clause, " "and p2 to the entire second item of the subject." msgstr "" #: whatsnew/3.10.rst:666 msgid "" "Most literals are compared by equality. However, the singletons ``True``, " "``False`` and ``None`` are compared by identity." msgstr "" #: whatsnew/3.10.rst:669 msgid "" "Named constants may be used in patterns. These named constants must be " "dotted names to prevent the constant from being interpreted as a capture " "variable::" msgstr "" #: whatsnew/3.10.rst:687 msgid "" "For the full specification see :pep:`634`. Motivation and rationale are in :" "pep:`635`, and a longer tutorial is in :pep:`636`." msgstr "" #: whatsnew/3.10.rst:694 msgid "Optional ``EncodingWarning`` and ``encoding=\"locale\"`` option" msgstr "" #: whatsnew/3.10.rst:696 msgid "" "The default encoding of :class:`TextIOWrapper` and :func:`open` is platform " "and locale dependent. Since UTF-8 is used on most Unix platforms, omitting " "``encoding`` option when opening UTF-8 files (e.g. JSON, YAML, TOML, " "Markdown) is a very common bug. For example::" msgstr "" #: whatsnew/3.10.rst:705 msgid "" "To find this type of bug, an optional ``EncodingWarning`` is added. It is " "emitted when :data:`sys.flags.warn_default_encoding ` is true and " "locale-specific default encoding is used." msgstr "" #: whatsnew/3.10.rst:709 msgid "" "``-X warn_default_encoding`` option and :envvar:`PYTHONWARNDEFAULTENCODING` " "are added to enable the warning." msgstr "" #: whatsnew/3.10.rst:712 msgid "See :ref:`io-text-encoding` for more information." msgstr "" #: whatsnew/3.10.rst:716 msgid "New Features Related to Type Hints" msgstr "" #: whatsnew/3.10.rst:718 msgid "" "This section covers major changes affecting :pep:`484` type hints and the :" "mod:`typing` module." msgstr "" #: whatsnew/3.10.rst:723 msgid "PEP 604: New Type Union Operator" msgstr "" #: whatsnew/3.10.rst:725 msgid "" "A new type union operator was introduced which enables the syntax ``X | Y``. " "This provides a cleaner way of expressing 'either type X or type Y' instead " "of using :data:`typing.Union`, especially in type hints." msgstr "" #: whatsnew/3.10.rst:729 msgid "" "In previous versions of Python, to apply a type hint for functions accepting " "arguments of multiple types, :data:`typing.Union` was used::" msgstr "" #: whatsnew/3.10.rst:736 msgid "Type hints can now be written in a more succinct manner::" msgstr "" #: whatsnew/3.10.rst:742 msgid "" "This new syntax is also accepted as the second argument to :func:" "`isinstance` and :func:`issubclass`::" msgstr "" #: whatsnew/3.10.rst:748 msgid "See :ref:`types-union` and :pep:`604` for more details." msgstr "" #: whatsnew/3.10.rst:750 msgid "" "(Contributed by Maggie Moss and Philippe Prados in :issue:`41428`, with " "additions by Yurii Karabas and Serhiy Storchaka in :issue:`44490`.)" msgstr "" #: whatsnew/3.10.rst:755 msgid "PEP 612: Parameter Specification Variables" msgstr "" #: whatsnew/3.10.rst:757 msgid "" "Two new options to improve the information provided to static type checkers " "for :pep:`484`\\ 's ``Callable`` have been added to the :mod:`typing` module." msgstr "" #: whatsnew/3.10.rst:760 msgid "" "The first is the parameter specification variable. They are used to forward " "the parameter types of one callable to another callable -- a pattern " "commonly found in higher order functions and decorators. Examples of usage " "can be found in :class:`typing.ParamSpec`. Previously, there was no easy way " "to type annotate dependency of parameter types in such a precise manner." msgstr "" #: whatsnew/3.10.rst:766 msgid "" "The second option is the new ``Concatenate`` operator. It's used in " "conjunction with parameter specification variables to type annotate a higher " "order callable which adds or removes parameters of another callable. " "Examples of usage can be found in :class:`typing.Concatenate`." msgstr "" #: whatsnew/3.10.rst:771 msgid "" "See :class:`typing.Callable`, :class:`typing.ParamSpec`, :class:`typing." "Concatenate`, :class:`typing.ParamSpecArgs`, :class:`typing." "ParamSpecKwargs`, and :pep:`612` for more details." msgstr "" #: whatsnew/3.10.rst:775 msgid "" "(Contributed by Ken Jin in :issue:`41559`, with minor enhancements by Jelle " "Zijlstra in :issue:`43783`. PEP written by Mark Mendoza.)" msgstr "" #: whatsnew/3.10.rst:780 msgid "PEP 613: TypeAlias" msgstr "" #: whatsnew/3.10.rst:782 msgid "" ":pep:`484` introduced the concept of type aliases, only requiring them to be " "top-level unannotated assignments. This simplicity sometimes made it " "difficult for type checkers to distinguish between type aliases and ordinary " "assignments, especially when forward references or invalid types were " "involved. Compare::" msgstr "" #: whatsnew/3.10.rst:790 msgid "" "Now the :mod:`typing` module has a special value :data:`TypeAlias` which " "lets you declare type aliases more explicitly::" msgstr "" #: whatsnew/3.10.rst:796 msgid "See :pep:`613` for more details." msgstr "" #: whatsnew/3.10.rst:798 msgid "(Contributed by Mikhail Golubev in :issue:`41923`.)" msgstr "" #: whatsnew/3.10.rst:801 msgid "PEP 647: User-Defined Type Guards" msgstr "" #: whatsnew/3.10.rst:803 msgid "" ":data:`TypeGuard` has been added to the :mod:`typing` module to annotate " "type guard functions and improve information provided to static type " "checkers during type narrowing. For more information, please see :data:" "`TypeGuard`\\ 's documentation, and :pep:`647`." msgstr "" #: whatsnew/3.10.rst:808 msgid "" "(Contributed by Ken Jin and Guido van Rossum in :issue:`43766`. PEP written " "by Eric Traut.)" msgstr "" #: whatsnew/3.10.rst:812 msgid "Other Language Changes" msgstr "" #: whatsnew/3.10.rst:814 msgid "" "The :class:`int` type has a new method :meth:`int.bit_count`, returning the " "number of ones in the binary expansion of a given integer, also known as the " "population count. (Contributed by Niklas Fiekas in :issue:`29882`.)" msgstr "" #: whatsnew/3.10.rst:818 msgid "" "The views returned by :meth:`dict.keys`, :meth:`dict.values` and :meth:`dict." "items` now all have a ``mapping`` attribute that gives a :class:`types." "MappingProxyType` object wrapping the original dictionary. (Contributed by " "Dennis Sweeney in :issue:`40890`.)" msgstr "" #: whatsnew/3.10.rst:823 msgid "" ":pep:`618`: The :func:`zip` function now has an optional ``strict`` flag, " "used to require that all the iterables have an equal length." msgstr "" #: whatsnew/3.10.rst:826 msgid "" "Builtin and extension functions that take integer arguments no longer " "accept :class:`~decimal.Decimal`\\ s, :class:`~fractions.Fraction`\\ s and " "other objects that can be converted to integers only with a loss (e.g. that " "have the :meth:`~object.__int__` method but do not have the :meth:`~object." "__index__` method). (Contributed by Serhiy Storchaka in :issue:`37999`.)" msgstr "" #: whatsnew/3.10.rst:833 msgid "" "If :func:`object.__ipow__` returns :const:`NotImplemented`, the operator " "will correctly fall back to :func:`object.__pow__` and :func:`object." "__rpow__` as expected. (Contributed by Alex Shkop in :issue:`38302`.)" msgstr "" #: whatsnew/3.10.rst:837 msgid "" "Assignment expressions can now be used unparenthesized within set literals " "and set comprehensions, as well as in sequence indexes (but not slices)." msgstr "" #: whatsnew/3.10.rst:840 msgid "" "Functions have a new ``__builtins__`` attribute which is used to look for " "builtin symbols when a function is executed, instead of looking into " "``__globals__['__builtins__']``. The attribute is initialized from " "``__globals__[\"__builtins__\"]`` if it exists, else from the current " "builtins. (Contributed by Mark Shannon in :issue:`42990`.)" msgstr "" #: whatsnew/3.10.rst:846 msgid "" "Two new builtin functions -- :func:`aiter` and :func:`anext` have been added " "to provide asynchronous counterparts to :func:`iter` and :func:`next`, " "respectively. (Contributed by Joshua Bronson, Daniel Pope, and Justin Wang " "in :issue:`31861`.)" msgstr "" #: whatsnew/3.10.rst:851 msgid "" "Static methods (:func:`@staticmethod `) and class methods (:" "func:`@classmethod `) now inherit the method attributes " "(``__module__``, ``__name__``, ``__qualname__``, ``__doc__``, " "``__annotations__``) and have a new ``__wrapped__`` attribute. Moreover, " "static methods are now callable as regular functions. (Contributed by Victor " "Stinner in :issue:`43682`.)" msgstr "" #: whatsnew/3.10.rst:858 msgid "" "Annotations for complex targets (everything beside ``simple name`` targets " "defined by :pep:`526`) no longer cause any runtime effects with ``from " "__future__ import annotations``. (Contributed by Batuhan Taskaya in :issue:" "`42737`.)" msgstr "" #: whatsnew/3.10.rst:862 msgid "" "Class and module objects now lazy-create empty annotations dicts on demand. " "The annotations dicts are stored in the object’s ``__dict__`` for backwards " "compatibility. This improves the best practices for working with " "``__annotations__``; for more information, please see :ref:`annotations-" "howto`. (Contributed by Larry Hastings in :issue:`43901`.)" msgstr "" #: whatsnew/3.10.rst:869 msgid "" "Annotations consist of ``yield``, ``yield from``, ``await`` or named " "expressions are now forbidden under ``from __future__ import annotations`` " "due to their side effects. (Contributed by Batuhan Taskaya in :issue:" "`42725`.)" msgstr "" #: whatsnew/3.10.rst:874 msgid "" "Usage of unbound variables, ``super()`` and other expressions that might " "alter the processing of symbol table as annotations are now rendered " "effectless under ``from __future__ import annotations``. (Contributed by " "Batuhan Taskaya in :issue:`42725`.)" msgstr "" #: whatsnew/3.10.rst:879 msgid "" "Hashes of NaN values of both :class:`float` type and :class:`decimal." "Decimal` type now depend on object identity. Formerly, they always hashed to " "``0`` even though NaN values are not equal to one another. This caused " "potentially quadratic runtime behavior due to excessive hash collisions when " "creating dictionaries and sets containing multiple NaNs. (Contributed by " "Raymond Hettinger in :issue:`43475`.)" msgstr "" #: whatsnew/3.10.rst:886 msgid "" "A :exc:`SyntaxError` (instead of a :exc:`NameError`) will be raised when " "deleting the :const:`__debug__` constant. (Contributed by Dong-hee Na in :" "issue:`45000`.)" msgstr "" #: whatsnew/3.10.rst:889 msgid "New Modules" msgstr "" #: whatsnew/3.10.rst:891 msgid "None yet." msgstr "" #: whatsnew/3.10.rst:895 msgid "Improved Modules" msgstr "" #: whatsnew/3.10.rst:898 msgid "asyncio" msgstr "" #: whatsnew/3.10.rst:900 msgid "" "Add missing :meth:`~asyncio.events.AbstractEventLoop." "connect_accepted_socket` method. (Contributed by Alex Grönholm in :issue:" "`41332`.)" msgstr "" #: whatsnew/3.10.rst:905 msgid "argparse" msgstr "argparse" #: whatsnew/3.10.rst:907 msgid "" "Misleading phrase \"optional arguments\" was replaced with \"options\" in " "argparse help. Some tests might require adaptation if they rely on exact " "output match. (Contributed by Raymond Hettinger in :issue:`9694`.)" msgstr "" #: whatsnew/3.10.rst:911 msgid "array" msgstr "" #: whatsnew/3.10.rst:913 msgid "" "The :meth:`~array.array.index` method of :class:`array.array` now has " "optional *start* and *stop* parameters. (Contributed by Anders Lorentsen and " "Zackery Spytz in :issue:`31956`.)" msgstr "" #: whatsnew/3.10.rst:918 msgid "asynchat, asyncore, smtpd" msgstr "" #: whatsnew/3.10.rst:919 msgid "" "These modules have been marked as deprecated in their module documentation " "since Python 3.6. An import-time :class:`DeprecationWarning` has now been " "added to all three of these modules." msgstr "" #: whatsnew/3.10.rst:924 msgid "base64" msgstr "base64" #: whatsnew/3.10.rst:926 msgid "" "Add :func:`base64.b32hexencode` and :func:`base64.b32hexdecode` to support " "the Base32 Encoding with Extended Hex Alphabet." msgstr "" #: whatsnew/3.10.rst:930 msgid "bdb" msgstr "" #: whatsnew/3.10.rst:932 msgid "" "Add :meth:`~bdb.Breakpoint.clearBreakpoints` to reset all set breakpoints. " "(Contributed by Irit Katriel in :issue:`24160`.)" msgstr "" #: whatsnew/3.10.rst:936 msgid "bisect" msgstr "" #: whatsnew/3.10.rst:938 msgid "" "Added the possibility of providing a *key* function to the APIs in the :mod:" "`bisect` module. (Contributed by Raymond Hettinger in :issue:`4356`.)" msgstr "" #: whatsnew/3.10.rst:942 msgid "codecs" msgstr "" #: whatsnew/3.10.rst:944 msgid "" "Add a :func:`codecs.unregister` function to unregister a codec search " "function. (Contributed by Hai Shi in :issue:`41842`.)" msgstr "" #: whatsnew/3.10.rst:948 msgid "collections.abc" msgstr "collections.abc" #: whatsnew/3.10.rst:950 msgid "" "The ``__args__`` of the :ref:`parameterized generic ` " "for :class:`collections.abc.Callable` are now consistent with :data:`typing." "Callable`. :class:`collections.abc.Callable` generic now flattens type " "parameters, similar to what :data:`typing.Callable` currently does. This " "means that ``collections.abc.Callable[[int, str], str]`` will have " "``__args__`` of ``(int, str, str)``; previously this was ``([int, str], " "str)``. To allow this change, :class:`types.GenericAlias` can now be " "subclassed, and a subclass will be returned when subscripting the :class:" "`collections.abc.Callable` type. Note that a :exc:`TypeError` may be raised " "for invalid forms of parameterizing :class:`collections.abc.Callable` which " "may have passed silently in Python 3.9. (Contributed by Ken Jin in :issue:" "`42195`.)" msgstr "" #: whatsnew/3.10.rst:963 msgid "contextlib" msgstr "contextlib" #: whatsnew/3.10.rst:965 msgid "" "Add a :func:`contextlib.aclosing` context manager to safely close async " "generators and objects representing asynchronously released resources. " "(Contributed by Joongi Kim and John Belmonte in :issue:`41229`.)" msgstr "" #: whatsnew/3.10.rst:969 msgid "" "Add asynchronous context manager support to :func:`contextlib.nullcontext`. " "(Contributed by Tom Gringauz in :issue:`41543`.)" msgstr "" #: whatsnew/3.10.rst:972 msgid "" "Add :class:`AsyncContextDecorator`, for supporting usage of async context " "managers as decorators." msgstr "" #: whatsnew/3.10.rst:976 msgid "curses" msgstr "curses" #: whatsnew/3.10.rst:978 msgid "" "The extended color functions added in ncurses 6.1 will be used transparently " "by :func:`curses.color_content`, :func:`curses.init_color`, :func:`curses." "init_pair`, and :func:`curses.pair_content`. A new function, :func:`curses." "has_extended_color_support`, indicates whether extended color support is " "provided by the underlying ncurses library. (Contributed by Jeffrey " "Kintscher and Hans Petter Jansson in :issue:`36982`.)" msgstr "" #: whatsnew/3.10.rst:985 msgid "" "The ``BUTTON5_*`` constants are now exposed in the :mod:`curses` module if " "they are provided by the underlying curses library. (Contributed by Zackery " "Spytz in :issue:`39273`.)" msgstr "" #: whatsnew/3.10.rst:990 msgid "dataclasses" msgstr "" #: whatsnew/3.10.rst:993 msgid "__slots__" msgstr "" #: whatsnew/3.10.rst:995 msgid "" "Added ``slots`` parameter in :func:`dataclasses.dataclass` decorator. " "(Contributed by Yurii Karabas in :issue:`42269`)" msgstr "" #: whatsnew/3.10.rst:999 msgid "Keyword-only fields" msgstr "" #: whatsnew/3.10.rst:1001 msgid "" "dataclassses now supports fields that are keyword-only in the generated " "__init__ method. There are a number of ways of specifying keyword-only " "fields." msgstr "" #: whatsnew/3.10.rst:1005 msgid "You can say that every field is keyword-only:" msgstr "" #: whatsnew/3.10.rst:1016 msgid "" "Both ``name`` and ``birthday`` are keyword-only parameters to the generated " "__init__ method." msgstr "" #: whatsnew/3.10.rst:1019 msgid "You can specify keyword-only on a per-field basis:" msgstr "" #: whatsnew/3.10.rst:1030 msgid "" "Here only ``birthday`` is keyword-only. If you set ``kw_only`` on " "individual fields, be aware that there are rules about re-ordering fields " "due to keyword-only fields needing to follow non-keyword-only fields. See " "the full dataclasses documentation for details." msgstr "" #: whatsnew/3.10.rst:1035 msgid "" "You can also specify that all fields following a KW_ONLY marker are keyword-" "only. This will probably be the most common usage:" msgstr "" #: whatsnew/3.10.rst:1050 msgid "" "Here, ``z`` and ``t`` are keyword-only parameters, while ``x`` and ``y`` are " "not. (Contributed by Eric V. Smith in :issue:`43532`)" msgstr "" #: whatsnew/3.10.rst:1057 msgid "distutils" msgstr "distutils" #: whatsnew/3.10.rst:1059 msgid "" "The entire ``distutils`` package is deprecated, to be removed in Python " "3.12. Its functionality for specifying package builds has already been " "completely replaced by third-party packages ``setuptools`` and " "``packaging``, and most other commonly used APIs are available elsewhere in " "the standard library (such as :mod:`platform`, :mod:`shutil`, :mod:" "`subprocess` or :mod:`sysconfig`). There are no plans to migrate any other " "functionality from ``distutils``, and applications that are using other " "functions should plan to make private copies of the code. Refer to :pep:" "`632` for discussion." msgstr "" #: whatsnew/3.10.rst:1069 msgid "" "The ``bdist_wininst`` command deprecated in Python 3.8 has been removed. The " "``bdist_wheel`` command is now recommended to distribute binary packages on " "Windows. (Contributed by Victor Stinner in :issue:`42802`.)" msgstr "" #: whatsnew/3.10.rst:1075 msgid "doctest" msgstr "doctest" #: whatsnew/3.10.rst:1188 whatsnew/3.10.rst:1308 msgid "" "When a module does not define ``__loader__``, fall back to ``__spec__." "loader``. (Contributed by Brett Cannon in :issue:`42133`.)" msgstr "" #: whatsnew/3.10.rst:1081 msgid "encodings" msgstr "" #: whatsnew/3.10.rst:1083 msgid "" ":func:`encodings.normalize_encoding` now ignores non-ASCII characters. " "(Contributed by Hai Shi in :issue:`39337`.)" msgstr "" #: whatsnew/3.10.rst:1087 msgid "fileinput" msgstr "" #: whatsnew/3.10.rst:1089 msgid "" "Add *encoding* and *errors* parameters in :func:`fileinput.input` and :class:" "`fileinput.FileInput`. (Contributed by Inada Naoki in :issue:`43712`.)" msgstr "" #: whatsnew/3.10.rst:1093 msgid "" ":func:`fileinput.hook_compressed` now returns :class:`TextIOWrapper` object " "when *mode* is \"r\" and file is compressed, like uncompressed files. " "(Contributed by Inada Naoki in :issue:`5758`.)" msgstr "" #: whatsnew/3.10.rst:1098 msgid "faulthandler" msgstr "" #: whatsnew/3.10.rst:1100 msgid "" "The :mod:`faulthandler` module now detects if a fatal error occurs during a " "garbage collector collection. (Contributed by Victor Stinner in :issue:" "`44466`.)" msgstr "" #: whatsnew/3.10.rst:1105 msgid "gc" msgstr "" #: whatsnew/3.10.rst:1107 msgid "" "Add audit hooks for :func:`gc.get_objects`, :func:`gc.get_referrers` and :" "func:`gc.get_referents`. (Contributed by Pablo Galindo in :issue:`43439`.)" msgstr "" #: whatsnew/3.10.rst:1111 msgid "glob" msgstr "glob" #: whatsnew/3.10.rst:1113 msgid "" "Add the *root_dir* and *dir_fd* parameters in :func:`~glob.glob` and :func:" "`~glob.iglob` which allow to specify the root directory for searching. " "(Contributed by Serhiy Storchaka in :issue:`38144`.)" msgstr "" #: whatsnew/3.10.rst:1118 msgid "hashlib" msgstr "``hashlib``" #: whatsnew/3.10.rst:1120 msgid "" "The hashlib module requires OpenSSL 1.1.1 or newer. (Contributed by " "Christian Heimes in :pep:`644` and :issue:`43669`.)" msgstr "" #: whatsnew/3.10.rst:1123 msgid "" "The hashlib module has preliminary support for OpenSSL 3.0.0. (Contributed " "by Christian Heimes in :issue:`38820` and other issues.)" msgstr "" #: whatsnew/3.10.rst:1126 msgid "" "The pure-Python fallback of :func:`~hashlib.pbkdf2_hmac` is deprecated. In " "the future PBKDF2-HMAC will only be available when Python has been built " "with OpenSSL support. (Contributed by Christian Heimes in :issue:`43880`.)" msgstr "" #: whatsnew/3.10.rst:1132 msgid "hmac" msgstr "" #: whatsnew/3.10.rst:1134 msgid "" "The hmac module now uses OpenSSL's HMAC implementation internally. " "(Contributed by Christian Heimes in :issue:`40645`.)" msgstr "" #: whatsnew/3.10.rst:1138 msgid "IDLE and idlelib" msgstr "" #: whatsnew/3.10.rst:1140 msgid "" "Make IDLE invoke :func:`sys.excepthook` (when started without '-n'). User " "hooks were previously ignored. (Patch by Ken Hilton in :issue:`43008`.)" msgstr "" #: whatsnew/3.10.rst:1144 msgid "This change was backported to a 3.9 maintenance release." msgstr "" #: whatsnew/3.10.rst:1146 msgid "" "Add a Shell sidebar. Move the primary prompt ('>>>') to the sidebar. Add " "secondary prompts ('...') to the sidebar. Left click and optional drag " "selects one or more lines of text, as with the editor line number sidebar. " "Right click after selecting text lines displays a context menu with 'copy " "with prompts'. This zips together prompts from the sidebar with lines from " "the selected text. This option also appears on the context menu for the " "text. (Contributed by Tal Einat in :issue:`37903`.)" msgstr "" #: whatsnew/3.10.rst:1155 msgid "" "Use spaces instead of tabs to indent interactive code. This makes " "interactive code entries 'look right'. Making this feasible was a major " "motivation for adding the shell sidebar. Contributed by Terry Jan Reedy in :" "issue:`37892`.)" msgstr "" #: whatsnew/3.10.rst:1160 msgid "" "We expect to backport these shell changes to a future 3.9 maintenance " "release." msgstr "" #: whatsnew/3.10.rst:1163 msgid "" "Highlight the new :ref:`soft keywords ` :keyword:`match`, :" "keyword:`case `, and :keyword:`_ ` in pattern-" "matching statements. However, this highlighting is not perfect and will be " "incorrect in some rare cases, including some ``_``-s in ``case`` patterns. " "(Contributed by Tal Einat in bpo-44010.)" msgstr "" #: whatsnew/3.10.rst:1170 msgid "importlib.metadata" msgstr "" #: whatsnew/3.10.rst:1172 msgid "" "Feature parity with ``importlib_metadata`` 4.6 (`history `_)." msgstr "" #: whatsnew/3.10.rst:1175 msgid "" ":ref:`importlib.metadata entry points ` now provides a nicer " "experience for selecting entry points by group and name through a new :class:" "`importlib.metadata.EntryPoints` class. See the Compatibility Note in the " "docs for more info on the deprecation and usage." msgstr "" #: whatsnew/3.10.rst:1181 msgid "" "Added :func:`importlib.metadata.packages_distributions` for resolving top-" "level Python modules and packages to their :class:`importlib.metadata." "Distribution`." msgstr "" #: whatsnew/3.10.rst:1186 msgid "inspect" msgstr "" #: whatsnew/3.10.rst:1191 msgid "" "Add :func:`inspect.get_annotations`, which safely computes the annotations " "defined on an object. It works around the quirks of accessing the " "annotations on various types of objects, and makes very few assumptions " "about the object it examines. :func:`inspect.get_annotations` can also " "correctly un-stringize stringized annotations. :func:`inspect." "get_annotations` is now considered best practice for accessing the " "annotations dict defined on any Python object; for more information on best " "practices for working with annotations, please see :ref:`annotations-howto`. " "Relatedly, :func:`inspect.signature`, :func:`inspect.Signature." "from_callable`, and :func:`inspect.Signature.from_function` now call :func:" "`inspect.get_annotations` to retrieve annotations. This means :func:`inspect." "signature` and :func:`inspect.Signature.from_callable` can also now un-" "stringize stringized annotations. (Contributed by Larry Hastings in :issue:" "`43817`.)" msgstr "" #: whatsnew/3.10.rst:1207 msgid "linecache" msgstr "" #: whatsnew/3.10.rst:1213 msgid "os" msgstr "" #: whatsnew/3.10.rst:1215 msgid "" "Add :func:`os.cpu_count()` support for VxWorks RTOS. (Contributed by Peixing " "Xin in :issue:`41440`.)" msgstr "" #: whatsnew/3.10.rst:1218 msgid "" "Add a new function :func:`os.eventfd` and related helpers to wrap the " "``eventfd2`` syscall on Linux. (Contributed by Christian Heimes in :issue:" "`41001`.)" msgstr "" #: whatsnew/3.10.rst:1222 msgid "" "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`.)" msgstr "" #: whatsnew/3.10.rst:1227 msgid "" "Add :data:`~os.O_EVTONLY`, :data:`~os.O_FSYNC`, :data:`~os.O_SYMLINK` and :" "data:`~os.O_NOFOLLOW_ANY` for macOS. (Contributed by Dong-hee Na in :issue:" "`43106`.)" msgstr "" #: whatsnew/3.10.rst:1232 msgid "os.path" msgstr "" #: whatsnew/3.10.rst:1234 msgid "" ":func:`os.path.realpath` now accepts a *strict* keyword-only argument. When " "set to ``True``, :exc:`OSError` is raised if a path doesn't exist or a " "symlink loop is encountered. (Contributed by Barney Gale in :issue:`43757`.)" msgstr "" #: whatsnew/3.10.rst:1240 msgid "pathlib" msgstr "pathlib" #: whatsnew/3.10.rst:1242 msgid "" "Add slice support to :attr:`PurePath.parents `. " "(Contributed by Joshua Cannon in :issue:`35498`)" msgstr "" #: whatsnew/3.10.rst:1245 msgid "" "Add negative indexing support to :attr:`PurePath.parents `. (Contributed by Yaroslav Pankovych in :issue:`21041`)" msgstr "" #: whatsnew/3.10.rst:1249 msgid "" "Add :meth:`Path.hardlink_to ` method that " "supersedes :meth:`~pathlib.Path.link_to`. The new method has the same " "argument order as :meth:`~pathlib.Path.symlink_to`. (Contributed by Barney " "Gale in :issue:`39950`.)" msgstr "" #: whatsnew/3.10.rst:1254 msgid "" ":meth:`pathlib.Path.stat` and :meth:`~pathlib.Path.chmod` now accept a " "*follow_symlinks* keyword-only argument for consistency with corresponding " "functions in the :mod:`os` module. (Contributed by Barney Gale in :issue:" "`39906`.)" msgstr "" #: whatsnew/3.10.rst:1260 msgid "platform" msgstr "" #: whatsnew/3.10.rst:1262 msgid "" "Add :func:`platform.freedesktop_os_release()` to retrieve operation system " "identification from `freedesktop.org os-release `_ standard file. (Contributed by " "Christian Heimes in :issue:`28468`)" msgstr "" #: whatsnew/3.10.rst:1268 msgid "pprint" msgstr "" #: whatsnew/3.10.rst:1270 msgid "" ":func:`pprint.pprint` now accepts a new ``underscore_numbers`` keyword " "argument. (Contributed by sblondon in :issue:`42914`.)" msgstr "" #: whatsnew/3.10.rst:1273 msgid "" ":mod:`pprint` can now pretty-print :class:`dataclasses.dataclass` instances. " "(Contributed by Lewis Gaul in :issue:`43080`.)" msgstr "" #: whatsnew/3.10.rst:1277 msgid "py_compile" msgstr "" #: whatsnew/3.10.rst:1279 msgid "" "Add ``--quiet`` option to command-line interface of :mod:`py_compile`. " "(Contributed by Gregory Schevchenko in :issue:`38731`.)" msgstr "" #: whatsnew/3.10.rst:1283 msgid "pyclbr" msgstr "" #: whatsnew/3.10.rst:1285 msgid "" "Add an ``end_lineno`` attribute to the ``Function`` and ``Class`` objects in " "the tree returned by :func:`pyclbr.readline` and :func:`pyclbr." "readline_ex`. It matches the existing (start) ``lineno``. (Contributed by " "Aviral Srivastava in :issue:`38307`.)" msgstr "" #: whatsnew/3.10.rst:1291 msgid "shelve" msgstr "" #: whatsnew/3.10.rst:1293 msgid "" "The :mod:`shelve` module now uses :data:`pickle.DEFAULT_PROTOCOL` by default " "instead of :mod:`pickle` protocol ``3`` when creating shelves. (Contributed " "by Zackery Spytz in :issue:`34204`.)" msgstr "" #: whatsnew/3.10.rst:1298 msgid "statistics" msgstr "" #: whatsnew/3.10.rst:1300 msgid "" "Add :func:`~statistics.covariance`, Pearson's :func:`~statistics." "correlation`, and simple :func:`~statistics.linear_regression` functions. " "(Contributed by Tymoteusz Wołodźko in :issue:`38490`.)" msgstr "" #: whatsnew/3.10.rst:1306 msgid "site" msgstr "" #: whatsnew/3.10.rst:1312 msgid "socket" msgstr "" #: whatsnew/3.10.rst:1314 msgid "" "The exception :exc:`socket.timeout` is now an alias of :exc:`TimeoutError`. " "(Contributed by Christian Heimes in :issue:`42413`.)" msgstr "" #: whatsnew/3.10.rst:1317 msgid "" "Add option to create MPTCP sockets with ``IPPROTO_MPTCP`` (Contributed by " "Rui Cunha in :issue:`43571`.)" msgstr "" #: whatsnew/3.10.rst:1320 msgid "" "Add ``IP_RECVTOS`` option to receive the type of service (ToS) or DSCP/ECN " "fields (Contributed by Georg Sauthoff in :issue:`44077`.)" msgstr "" #: whatsnew/3.10.rst:1324 msgid "ssl" msgstr "ssl" #: whatsnew/3.10.rst:1326 msgid "" "The ssl module requires OpenSSL 1.1.1 or newer. (Contributed by Christian " "Heimes in :pep:`644` and :issue:`43669`.)" msgstr "" #: whatsnew/3.10.rst:1329 msgid "" "The ssl module has preliminary support for OpenSSL 3.0.0 and new option :" "data:`~ssl.OP_IGNORE_UNEXPECTED_EOF`. (Contributed by Christian Heimes in :" "issue:`38820`, :issue:`43794`, :issue:`43788`, :issue:`43791`, :issue:" "`43799`, :issue:`43920`, :issue:`43789`, and :issue:`43811`.)" msgstr "" #: whatsnew/3.10.rst:1335 msgid "" "Deprecated function and use of deprecated constants now result in a :exc:" "`DeprecationWarning`. :attr:`ssl.SSLContext.options` has :data:`~ssl." "OP_NO_SSLv2` and :data:`~ssl.OP_NO_SSLv3` set by default and therefore " "cannot warn about setting the flag again. The :ref:`deprecation section " "` has a list of deprecated features. (Contributed by " "Christian Heimes in :issue:`43880`.)" msgstr "" #: whatsnew/3.10.rst:1343 msgid "" "The ssl module now has more secure default settings. Ciphers without forward " "secrecy or SHA-1 MAC are disabled by default. Security level 2 prohibits " "weak RSA, DH, and ECC keys with less than 112 bits of security. :class:`~ssl." "SSLContext` defaults to minimum protocol version TLS 1.2. Settings are based " "on Hynek Schlawack's research. (Contributed by Christian Heimes in :issue:" "`43998`.)" msgstr "" #: whatsnew/3.10.rst:1350 msgid "" "The deprecated protocols SSL 3.0, TLS 1.0, and TLS 1.1 are no longer " "officially supported. Python does not block them actively. However OpenSSL " "build options, distro configurations, vendor patches, and cipher suites may " "prevent a successful handshake." msgstr "" #: whatsnew/3.10.rst:1355 msgid "" "Add a *timeout* parameter to the :func:`ssl.get_server_certificate` " "function. (Contributed by Zackery Spytz in :issue:`31870`.)" msgstr "" #: whatsnew/3.10.rst:1358 msgid "" "The ssl module uses heap-types and multi-phase initialization. (Contributed " "by Christian Heimes in :issue:`42333`.)" msgstr "" #: whatsnew/3.10.rst:1361 msgid "" "A new verify flag :data:`~ssl.VERIFY_X509_PARTIAL_CHAIN` has been added. " "(Contributed by l0x in :issue:`40849`.)" msgstr "" #: whatsnew/3.10.rst:1365 msgid "sqlite3" msgstr "" #: whatsnew/3.10.rst:1367 msgid "" "Add audit events for :func:`~sqlite3.connect/handle`, :meth:`~sqlite3." "Connection.enable_load_extension`, and :meth:`~sqlite3.Connection." "load_extension`. (Contributed by Erlend E. Aasland in :issue:`43762`.)" msgstr "" #: whatsnew/3.10.rst:1373 msgid "sys" msgstr "sys" #: whatsnew/3.10.rst:1375 msgid "" "Add :data:`sys.orig_argv` attribute: the list of the original command line " "arguments passed to the Python executable. (Contributed by Victor Stinner " "in :issue:`23427`.)" msgstr "" #: whatsnew/3.10.rst:1379 msgid "" "Add :data:`sys.stdlib_module_names`, containing the list of the standard " "library module names. (Contributed by Victor Stinner in :issue:`42955`.)" msgstr "" #: whatsnew/3.10.rst:1384 msgid "_thread" msgstr "" #: whatsnew/3.10.rst:1386 msgid "" ":func:`_thread.interrupt_main` now takes an optional signal number to " "simulate (the default is still :data:`signal.SIGINT`). (Contributed by " "Antoine Pitrou in :issue:`43356`.)" msgstr "" #: whatsnew/3.10.rst:1391 msgid "threading" msgstr "threading" #: whatsnew/3.10.rst:1393 msgid "" "Add :func:`threading.gettrace` and :func:`threading.getprofile` to retrieve " "the functions set by :func:`threading.settrace` and :func:`threading." "setprofile` respectively. (Contributed by Mario Corchero in :issue:`42251`.)" msgstr "" #: whatsnew/3.10.rst:1398 msgid "" "Add :data:`threading.__excepthook__` to allow retrieving the original value " "of :func:`threading.excepthook` in case it is set to a broken or a different " "value. (Contributed by Mario Corchero in :issue:`42308`.)" msgstr "" #: whatsnew/3.10.rst:1404 msgid "traceback" msgstr "traceback" #: whatsnew/3.10.rst:1406 msgid "" "The :func:`~traceback.format_exception`, :func:`~traceback." "format_exception_only`, and :func:`~traceback.print_exception` functions can " "now take an exception object as a positional-only argument. (Contributed by " "Zackery Spytz and Matthias Bussonnier in :issue:`26389`.)" msgstr "" #: whatsnew/3.10.rst:1413 msgid "types" msgstr "" #: whatsnew/3.10.rst:1415 msgid "" "Reintroduce the :data:`types.EllipsisType`, :data:`types.NoneType` and :data:" "`types.NotImplementedType` classes, providing a new set of types readily " "interpretable by type checkers. (Contributed by Bas van Beek in :issue:" "`41810`.)" msgstr "" #: whatsnew/3.10.rst:1421 msgid "typing" msgstr "" #: whatsnew/3.10.rst:1423 msgid "For major changes, see `New Features Related to Type Hints`_." msgstr "" #: whatsnew/3.10.rst:1425 msgid "" "The behavior of :class:`typing.Literal` was changed to conform with :pep:" "`586` and to match the behavior of static type checkers specified in the PEP." msgstr "" #: whatsnew/3.10.rst:1428 msgid "``Literal`` now de-duplicates parameters." msgstr "" #: whatsnew/3.10.rst:1429 msgid "" "Equality comparisons between ``Literal`` objects are now order independent." msgstr "" #: whatsnew/3.10.rst:1430 msgid "" "``Literal`` comparisons now respects types. For example, ``Literal[0] == " "Literal[False]`` previously evaluated to ``True``. It is now ``False``. To " "support this change, the internally used type cache now supports " "differentiating types." msgstr "" #: whatsnew/3.10.rst:1434 msgid "" "``Literal`` objects will now raise a :exc:`TypeError` exception during " "equality comparisons if any of their parameters are not :term:`hashable`. " "Note that declaring ``Literal`` with unhashable parameters will not throw an " "error::" msgstr "" #: whatsnew/3.10.rst:1446 msgid "(Contributed by Yurii Karabas in :issue:`42345`.)" msgstr "" #: whatsnew/3.10.rst:1448 msgid "" "Add new function :func:`typing.is_typeddict` to introspect if an annotation " "is a :class:`typing.TypedDict`. (Contributed by Patrick Reader in :issue:" "`41792`)" msgstr "" #: whatsnew/3.10.rst:1452 msgid "" "Subclasses of ``typing.Protocol`` which only have data variables declared " "will now raise a ``TypeError`` when checked with ``isinstance`` unless they " "are decorated with :func:`runtime_checkable`. Previously, these checks " "passed silently. Users should decorate their subclasses with the :func:" "`runtime_checkable` decorator if they want runtime protocols. (Contributed " "by Yurii Karabas in :issue:`38908`)" msgstr "" #: whatsnew/3.10.rst:1460 msgid "" "Importing from the ``typing.io`` and ``typing.re`` submodules will now emit :" "exc:`DeprecationWarning`. These submodules have been deprecated since " "Python 3.8 and will be removed in a future version of Python. Anything " "belonging to those submodules should be imported directly from :mod:`typing` " "instead. (Contributed by Sebastian Rittau in :issue:`38291`)" msgstr "" #: whatsnew/3.10.rst:1468 msgid "unittest" msgstr "unittest" #: whatsnew/3.10.rst:1470 msgid "" "Add new method :meth:`~unittest.TestCase.assertNoLogs` to complement the " "existing :meth:`~unittest.TestCase.assertLogs`. (Contributed by Kit Yan Choi " "in :issue:`39385`.)" msgstr "" #: whatsnew/3.10.rst:1475 msgid "urllib.parse" msgstr "urllib.parse" #: whatsnew/3.10.rst:1477 msgid "" "Python versions earlier than Python 3.10 allowed using both ``;`` and ``&`` " "as query parameter separators in :func:`urllib.parse.parse_qs` and :func:" "`urllib.parse.parse_qsl`. Due to security concerns, and to conform with " "newer W3C recommendations, this has been changed to allow only a single " "separator key, with ``&`` as the default. This change also affects :func:" "`cgi.parse` and :func:`cgi.parse_multipart` as they use the affected " "functions internally. For more details, please see their respective " "documentation. (Contributed by Adam Goldschmidt, Senthil Kumaran and Ken Jin " "in :issue:`42967`.)" msgstr "" #: whatsnew/3.10.rst:1487 msgid "" "The presence of newline or tab characters in parts of a URL allows for some " "forms of attacks. Following the WHATWG specification that updates :rfc:" "`3986`, ASCII newline ``\\n``, ``\\r`` and tab ``\\t`` characters are " "stripped from the URL by the parser in :mod:`urllib.parse` preventing such " "attacks. The removal characters are controlled by a new module level " "variable ``urllib.parse._UNSAFE_URL_BYTES_TO_REMOVE``. (See :issue:`43882`)" msgstr "" #: whatsnew/3.10.rst:1495 msgid "xml" msgstr "" #: whatsnew/3.10.rst:1497 msgid "" "Add a :class:`~xml.sax.handler.LexicalHandler` class to the :mod:`xml.sax." "handler` module. (Contributed by Jonathan Gossage and Zackery Spytz in :" "issue:`35018`.)" msgstr "" #: whatsnew/3.10.rst:1502 msgid "zipimport" msgstr "" #: whatsnew/3.10.rst:1503 msgid "" "Add methods related to :pep:`451`: :meth:`~zipimport.zipimporter." "find_spec`, :meth:`zipimport.zipimporter.create_module`, and :meth:" "`zipimport.zipimporter.exec_module`. (Contributed by Brett Cannon in :issue:" "`42131`.)" msgstr "" #: whatsnew/3.10.rst:1508 msgid "" "Add :meth:`~zipimport.zipimporter.invalidate_caches` method. (Contributed by " "Desmond Cheong in :issue:`14678`.)" msgstr "" #: whatsnew/3.10.rst:1513 msgid "Optimizations" msgstr "" #: whatsnew/3.10.rst:1515 msgid "" "Constructors :func:`str`, :func:`bytes` and :func:`bytearray` are now faster " "(around 30--40% for small objects). (Contributed by Serhiy Storchaka in :" "issue:`41334`.)" msgstr "" #: whatsnew/3.10.rst:1519 msgid "" "The :mod:`runpy` module now imports fewer modules. The ``python3 -m module-" "name`` command startup time is 1.4x faster in average. On Linux, ``python3 -" "I -m module-name`` imports 69 modules on Python 3.9, whereas it only imports " "51 modules (-18) on Python 3.10. (Contributed by Victor Stinner in :issue:" "`41006` and :issue:`41718`.)" msgstr "" #: whatsnew/3.10.rst:1525 msgid "" "The ``LOAD_ATTR`` instruction now uses new \"per opcode cache\" mechanism. " "It is about 36% faster now for regular attributes and 44% faster for slots. " "(Contributed by Pablo Galindo and Yury Selivanov in :issue:`42093` and Guido " "van Rossum in :issue:`42927`, based on ideas implemented originally in PyPy " "and MicroPython.)" msgstr "" #: whatsnew/3.10.rst:1531 msgid "" "When building Python with :option:`--enable-optimizations` now ``-fno-" "semantic-interposition`` is added to both the compile and link line. This " "speeds builds of the Python interpreter created with :option:`--enable-" "shared` with ``gcc`` by up to 30%. See `this article `_ for more details. (Contributed by Victor Stinner " "and Pablo Galindo in :issue:`38980`.)" msgstr "" #: whatsnew/3.10.rst:1539 msgid "" "Use a new output buffer management code for :mod:`bz2` / :mod:`lzma` / :mod:" "`zlib` modules, and add ``.readall()`` function to ``_compression." "DecompressReader`` class. bz2 decompression is now 1.09x ~ 1.17x faster, " "lzma decompression 1.20x ~ 1.32x faster, ``GzipFile.read(-1)`` 1.11x ~ 1.18x " "faster. (Contributed by Ma Lin, reviewed by Gregory P. Smith, in :issue:" "`41486`)" msgstr "" #: whatsnew/3.10.rst:1545 msgid "" "When using stringized annotations, annotations dicts for functions are no " "longer created when the function is created. Instead, they are stored as a " "tuple of strings, and the function object lazily converts this into the " "annotations dict on demand. This optimization cuts the CPU time needed to " "define an annotated function by half. (Contributed by Yurii Karabas and " "Inada Naoki in :issue:`42202`)" msgstr "" #: whatsnew/3.10.rst:1552 msgid "" "Substring search functions such as ``str1 in str2`` and ``str2.find(str1)`` " "now sometimes use Crochemore & Perrin's \"Two-Way\" string searching " "algorithm to avoid quadratic behavior on long strings. (Contributed by " "Dennis Sweeney in :issue:`41972`)" msgstr "" #: whatsnew/3.10.rst:1557 msgid "" "Add micro-optimizations to ``_PyType_Lookup()`` to improve type attribute " "cache lookup performance in the common case of cache hits. This makes the " "interpreter 1.04 times faster on average. (Contributed by Dino Viehland in :" "issue:`43452`)" msgstr "" #: whatsnew/3.10.rst:1561 msgid "" "The following built-in functions now support the faster :pep:`590` " "vectorcall calling convention: :func:`map`, :func:`filter`, :func:" "`reversed`, :func:`bool` and :func:`float`. (Contributed by Dong-hee Na and " "Jeroen Demeyer in :issue:`43575`, :issue:`43287`, :issue:`41922`, :issue:" "`41873` and :issue:`41870`)" msgstr "" #: whatsnew/3.10.rst:1565 msgid "" ":class:`BZ2File` performance is improved by removing internal ``RLock``. " "This makes :class:`BZ2File` thread unsafe in the face of multiple " "simultaneous readers or writers, just like its equivalent classes in :mod:" "`gzip` and :mod:`lzma` have always been. (Contributed by Inada Naoki in :" "issue:`43785`)." msgstr "" #: whatsnew/3.10.rst:2194 msgid "Deprecated" msgstr "" #: whatsnew/3.10.rst:1575 msgid "" "Currently Python accepts numeric literals immediately followed by keywords, " "for example ``0in x``, ``1or x``, ``0if 1else 2``. It allows confusing and " "ambigious expressions like ``[0x1for x in y]`` (which can be interpreted as " "``[0x1 for x in y]`` or ``[0x1f or x in y]``). Starting in this release, a " "deprecation warning is raised if the numeric literal is immediately followed " "by one of keywords :keyword:`and`, :keyword:`else`, :keyword:`for`, :keyword:" "`if`, :keyword:`in`, :keyword:`is` and :keyword:`or`. If future releases it " "will be changed to syntax warning, and finally to syntax error. (Contributed " "by Serhiy Storchaka in :issue:`43833`)." msgstr "" #: whatsnew/3.10.rst:1586 msgid "" "Starting in this release, there will be a concerted effort to begin cleaning " "up old import semantics that were kept for Python 2.7 compatibility. " "Specifically, :meth:`~importlib.abc.PathEntryFinder.find_loader`/:meth:" "`~importlib.abc.Finder.find_module` (superseded by :meth:`~importlib.abc." "Finder.find_spec`), :meth:`~importlib.abc.Loader.load_module` (superseded " "by :meth:`~importlib.abc.Loader.exec_module`), :meth:`~importlib.abc.Loader." "module_repr` (which the import system takes care of for you), the " "``__package__`` attribute (superseded by ``__spec__.parent``), the " "``__loader__`` attribute (superseded by ``__spec__.loader``), and the " "``__cached__`` attribute (superseded by ``__spec__.cached``) will slowly be " "removed (as well as other classes and methods in :mod:`importlib`). :exc:" "`ImportWarning` and/or :exc:`DeprecationWarning` will be raised as " "appropriate to help identify code which needs updating during this " "transition." msgstr "" #: whatsnew/3.10.rst:1603 msgid "" "The entire ``distutils`` namespace is deprecated, to be removed in Python " "3.12. Refer to the :ref:`module changes ` section for " "more information." msgstr "" #: whatsnew/3.10.rst:1607 msgid "" "Non-integer arguments to :func:`random.randrange` are deprecated. The :exc:" "`ValueError` is deprecated in favor of a :exc:`TypeError`. (Contributed by " "Serhiy Storchaka and Raymond Hettinger in :issue:`37319`.)" msgstr "" #: whatsnew/3.10.rst:1611 msgid "" "The various ``load_module()`` methods of :mod:`importlib` have been " "documented as deprecated since Python 3.6, but will now also trigger a :exc:" "`DeprecationWarning`. Use :meth:`~importlib.abc.Loader.exec_module` instead. " "(Contributed by Brett Cannon in :issue:`26131`.)" msgstr "" #: whatsnew/3.10.rst:1617 msgid "" ":meth:`zimport.zipimporter.load_module` has been deprecated in preference " "for :meth:`~zipimport.zipimporter.exec_module`. (Contributed by Brett Cannon " "in :issue:`26131`.)" msgstr "" #: whatsnew/3.10.rst:1621 msgid "" "The use of :meth:`~importlib.abc.Loader.load_module` by the import system " "now triggers an :exc:`ImportWarning` as :meth:`~importlib.abc.Loader." "exec_module` is preferred. (Contributed by Brett Cannon in :issue:`26131`.)" msgstr "" #: whatsnew/3.10.rst:1626 msgid "" "The use of :meth:`importlib.abc.MetaPathFinder.find_module` and :meth:" "`importlib.abc.PathEntryFinder.find_module` by the import system now trigger " "an :exc:`ImportWarning` as :meth:`importlib.abc.MetaPathFinder.find_spec` " "and :meth:`importlib.abc.PathEntryFinder.find_spec` are preferred, " "respectively. You can use :func:`importlib.util.spec_from_loader` to help in " "porting. (Contributed by Brett Cannon in :issue:`42134`.)" msgstr "" #: whatsnew/3.10.rst:1635 msgid "" "The use of :meth:`importlib.abc.PathEntryFinder.find_loader` by the import " "system now triggers an :exc:`ImportWarning` as :meth:`importlib.abc." "PathEntryFinder.find_spec` is preferred. You can use :func:`importlib.util." "spec_from_loader` to help in porting. (Contributed by Brett Cannon in :issue:" "`43672`.)" msgstr "" #: whatsnew/3.10.rst:1641 msgid "" "The various implementations of :meth:`importlib.abc.MetaPathFinder." "find_module` ( :meth:`importlib.machinery.BuiltinImporter.find_module`, :" "meth:`importlib.machinery.FrozenImporter.find_module`, :meth:`importlib." "machinery.WindowsRegistryFinder.find_module`, :meth:`importlib.machinery." "PathFinder.find_module`, :meth:`importlib.abc.MetaPathFinder.find_module`), :" "meth:`importlib.abc.PathEntryFinder.find_module` ( :meth:`importlib." "machinery.FileFinder.find_module`, ), and :meth:`importlib.abc." "PathEntryFinder.find_loader` ( :meth:`importlib.machinery.FileFinder." "find_loader` ) now raise :exc:`DeprecationWarning` and are slated for " "removal in Python 3.12 (previously they were documented as deprecated in " "Python 3.4). (Contributed by Brett Cannon in :issue:`42135`.)" msgstr "" #: whatsnew/3.10.rst:1657 msgid "" ":class:`importlib.abc.Finder` is deprecated (including its sole method, :" "meth:`~importlib.abc.Finder.find_module`). Both :class:`importlib.abc." "MetaPathFinder` and :class:`importlib.abc.PathEntryFinder` no longer inherit " "from the class. Users should inherit from one of these two classes as " "appropriate instead. (Contributed by Brett Cannon in :issue:`42135`.)" msgstr "" #: whatsnew/3.10.rst:1664 msgid "" "The deprecations of :mod:`imp`, :func:`importlib.find_loader`, :func:" "`importlib.util.set_package_wrapper`, :func:`importlib.util." "set_loader_wrapper`, :func:`importlib.util.module_for_loader`, :class:" "`pkgutil.ImpImporter`, and :class:`pkgutil.ImpLoader` have all been updated " "to list Python 3.12 as the slated version of removal (they began raising :" "exc:`DeprecationWarning` in previous versions of Python). (Contributed by " "Brett Cannon in :issue:`43720`.)" msgstr "" #: whatsnew/3.10.rst:1674 msgid "" "The import system now uses the ``__spec__`` attribute on modules before " "falling back on :meth:`~importlib.abc.Loader.module_repr` for a module's " "``__repr__()`` method. Removal of the use of ``module_repr()`` is scheduled " "for Python 3.12. (Contributed by Brett Cannon in :issue:`42137`.)" msgstr "" #: whatsnew/3.10.rst:1680 msgid "" ":meth:`importlib.abc.Loader.module_repr`, :meth:`importlib.machinery." "FrozenLoader.module_repr`, and :meth:`importlib.machinery.BuiltinLoader." "module_repr` are deprecated and slated for removal in Python 3.12. " "(Contributed by Brett Cannon in :issue:`42136`.)" msgstr "" #: whatsnew/3.10.rst:1686 msgid "" "``sqlite3.OptimizedUnicode`` has been undocumented and obsolete since Python " "3.3, when it was made an alias to :class:`str`. It is now deprecated, " "scheduled for removal in Python 3.12. (Contributed by Erlend E. Aasland in :" "issue:`42264`.)" msgstr "" #: whatsnew/3.10.rst:1691 msgid "" ":func:`asyncio.get_event_loop` now emits a deprecation warning if there is " "no running event loop. In the future it will be an alias of :func:`~asyncio." "get_running_loop`. :mod:`asyncio` functions which implicitly create a :class:" "`~asyncio.Future` or :class:`~asyncio.Task` objects now emit a deprecation " "warning if there is no running event loop and no explicit *loop* argument is " "passed: :func:`~asyncio.ensure_future`, :func:`~asyncio.wrap_future`, :func:" "`~asyncio.gather`, :func:`~asyncio.shield`, :func:`~asyncio.as_completed` " "and constructors of :class:`~asyncio.Future`, :class:`~asyncio.Task`, :class:" "`~asyncio.StreamReader`, :class:`~asyncio.StreamReaderProtocol`. " "(Contributed by Serhiy Storchaka in :issue:`39529`.)" msgstr "" #: whatsnew/3.10.rst:1704 msgid "" "The undocumented built-in function ``sqlite3.enable_shared_cache`` is now " "deprecated, scheduled for removal in Python 3.12. Its use is strongly " "discouraged by the SQLite3 documentation. See `the SQLite3 docs `_ for more details. If a shared " "cache must be used, open the database in URI mode using the ``cache=shared`` " "query parameter. (Contributed by Erlend E. Aasland in :issue:`24464`.)" msgstr "" #: whatsnew/3.10.rst:1712 msgid "The following ``threading`` methods are now deprecated:" msgstr "" #: whatsnew/3.10.rst:1714 msgid "``threading.currentThread`` => :func:`threading.current_thread`" msgstr "" #: whatsnew/3.10.rst:1716 msgid "``threading.activeCount`` => :func:`threading.active_count`" msgstr "" #: whatsnew/3.10.rst:1718 msgid "" "``threading.Condition.notifyAll`` => :meth:`threading.Condition.notify_all`" msgstr "" #: whatsnew/3.10.rst:1721 msgid "``threading.Event.isSet`` => :meth:`threading.Event.is_set`" msgstr "" #: whatsnew/3.10.rst:1723 msgid "``threading.Thread.setName`` => :attr:`threading.Thread.name`" msgstr "" #: whatsnew/3.10.rst:1725 msgid "``threading.thread.getName`` => :attr:`threading.Thread.name`" msgstr "" #: whatsnew/3.10.rst:1727 msgid "``threading.Thread.isDaemon`` => :attr:`threading.Thread.daemon`" msgstr "" #: whatsnew/3.10.rst:1729 msgid "``threading.Thread.setDaemon`` => :attr:`threading.Thread.daemon`" msgstr "" #: whatsnew/3.10.rst:1731 msgid "(Contributed by Jelle Zijlstra in :issue:`21574`.)" msgstr "" #: whatsnew/3.10.rst:1733 msgid "" ":meth:`pathlib.Path.link_to` is deprecated and slated for removal in Python " "3.12. Use :meth:`pathlib.Path.hardlink_to` instead. (Contributed by Barney " "Gale in :issue:`39950`.)" msgstr "" #: whatsnew/3.10.rst:1737 msgid "" "``cgi.log()`` is deprecated and slated for removal in Python 3.12. " "(Contributed by Inada Naoki in :issue:`41139`.)" msgstr "" #: whatsnew/3.10.rst:1740 msgid "" "The following :mod:`ssl` features have been deprecated since Python 3.6, " "Python 3.7, or OpenSSL 1.1.0 and will be removed in 3.11:" msgstr "" #: whatsnew/3.10.rst:1743 msgid "" ":data:`~ssl.OP_NO_SSLv2`, :data:`~ssl.OP_NO_SSLv3`, :data:`~ssl." "OP_NO_TLSv1`, :data:`~ssl.OP_NO_TLSv1_1`, :data:`~ssl.OP_NO_TLSv1_2`, and :" "data:`~ssl.OP_NO_TLSv1_3` are replaced by :attr:`sslSSLContext." "minimum_version` and :attr:`sslSSLContext.maximum_version`." msgstr "" #: whatsnew/3.10.rst:1749 msgid "" ":data:`~ssl.PROTOCOL_SSLv2`, :data:`~ssl.PROTOCOL_SSLv3`, :data:`~ssl." "PROTOCOL_SSLv23`, :data:`~ssl.PROTOCOL_TLSv1`, :data:`~ssl." "PROTOCOL_TLSv1_1`, :data:`~ssl.PROTOCOL_TLSv1_2`, and :data:`~ssl." "PROTOCOL_TLS` are deprecated in favor of :data:`~ssl.PROTOCOL_TLS_CLIENT` " "and :data:`~ssl.PROTOCOL_TLS_SERVER`" msgstr "" #: whatsnew/3.10.rst:1755 msgid "" ":func:`~ssl.wrap_socket` is replaced by :meth:`ssl.SSLContext.wrap_socket`" msgstr "" #: whatsnew/3.10.rst:1757 msgid ":func:`~ssl.match_hostname`" msgstr "" #: whatsnew/3.10.rst:1759 msgid ":func:`~ssl.RAND_pseudo_bytes`, :func:`~ssl.RAND_egd`" msgstr "" #: whatsnew/3.10.rst:1761 msgid "" "NPN features like :meth:`ssl.SSLSocket.selected_npn_protocol` and :meth:`ssl." "SSLContext.set_npn_protocols` are replaced by ALPN." msgstr "" #: whatsnew/3.10.rst:1764 msgid "" "The threading debug (:envvar:`PYTHONTHREADDEBUG` environment variable) is " "deprecated in Python 3.10 and will be removed in Python 3.12. This feature " "requires a :ref:`debug build of Python `. (Contributed by " "Victor Stinner in :issue:`44584`.)" msgstr "" #: whatsnew/3.10.rst:1769 msgid "" "Importing from the ``typing.io`` and ``typing.re`` submodules will now emit :" "exc:`DeprecationWarning`. These submodules will be removed in a future " "version of Python. Anything belonging to these submodules should be " "imported directly from :mod:`typing` instead. (Contributed by Sebastian " "Rittau in :issue:`38291`)" msgstr "" #: whatsnew/3.10.rst:2202 msgid "Removed" msgstr "" #: whatsnew/3.10.rst:1780 msgid "" "Removed special methods ``__int__``, ``__float__``, ``__floordiv__``, " "``__mod__``, ``__divmod__``, ``__rfloordiv__``, ``__rmod__`` and " "``__rdivmod__`` of the :class:`complex` class. They always raised a :exc:" "`TypeError`. (Contributed by Serhiy Storchaka in :issue:`41974`.)" msgstr "" #: whatsnew/3.10.rst:1786 msgid "" "The ``ParserBase.error()`` method from the private and undocumented " "``_markupbase`` module has been removed. :class:`html.parser.HTMLParser` is " "the only subclass of ``ParserBase`` and its ``error()`` implementation was " "already removed in Python 3.5. (Contributed by Berker Peksag in :issue:" "`31844`.)" msgstr "" #: whatsnew/3.10.rst:1792 msgid "" "Removed the ``unicodedata.ucnhash_CAPI`` attribute which was an internal " "PyCapsule object. The related private ``_PyUnicode_Name_CAPI`` structure was " "moved to the internal C API. (Contributed by Victor Stinner in :issue:" "`42157`.)" msgstr "" #: whatsnew/3.10.rst:1797 msgid "" "Removed the ``parser`` module, which was deprecated in 3.9 due to the switch " "to the new PEG parser, as well as all the C source and header files that " "were only being used by the old parser, including ``node.h``, ``parser.h``, " "``graminit.h`` and ``grammar.h``." msgstr "" #: whatsnew/3.10.rst:1802 msgid "" "Removed the Public C API functions ``PyParser_SimpleParseStringFlags``, " "``PyParser_SimpleParseStringFlagsFilename``, " "``PyParser_SimpleParseFileFlags`` and ``PyNode_Compile`` that were " "deprecated in 3.9 due to the switch to the new PEG parser." msgstr "" #: whatsnew/3.10.rst:1807 msgid "" "Removed the ``formatter`` module, which was deprecated in Python 3.4. It is " "somewhat obsolete, little used, and not tested. It was originally scheduled " "to be removed in Python 3.6, but such removals were delayed until after " "Python 2.7 EOL. Existing users should copy whatever classes they use into " "their code. (Contributed by Dong-hee Na and Terry J. Reedy in :issue:" "`42299`.)" msgstr "" #: whatsnew/3.10.rst:1814 msgid "" "Removed the :c:func:`PyModule_GetWarningsModule` function that was useless " "now due to the _warnings module was converted to a builtin module in 2.6. " "(Contributed by Hai Shi in :issue:`42599`.)" msgstr "" #: whatsnew/3.10.rst:1818 msgid "" "Remove deprecated aliases to :ref:`collections-abstract-base-classes` from " "the :mod:`collections` module. (Contributed by Victor Stinner in :issue:" "`37324`.)" msgstr "" #: whatsnew/3.10.rst:1822 msgid "" "The ``loop`` parameter has been removed from most of :mod:`asyncio`\\ 's :" "doc:`high-level API <../library/asyncio-api-index>` following deprecation in " "Python 3.8. The motivation behind this change is multifold:" msgstr "" #: whatsnew/3.10.rst:1826 msgid "This simplifies the high-level API." msgstr "" #: whatsnew/3.10.rst:1827 msgid "" "The functions in the high-level API have been implicitly getting the current " "thread's running event loop since Python 3.7. There isn't a need to pass " "the event loop to the API in most normal use cases." msgstr "" #: whatsnew/3.10.rst:1830 msgid "" "Event loop passing is error-prone especially when dealing with loops running " "in different threads." msgstr "" #: whatsnew/3.10.rst:1833 msgid "" "Note that the low-level API will still accept ``loop``. See `Changes in the " "Python API`_ for examples of how to replace existing code." msgstr "" #: whatsnew/3.10.rst:1907 msgid "" "(Contributed by Yurii Karabas, Andrew Svetlov, Yury Selivanov and Kyle " "Stanley in :issue:`42392`.)" msgstr "" #: whatsnew/3.10.rst:2127 msgid "Porting to Python 3.10" msgstr "" #: whatsnew/3.10.rst:1843 msgid "" "This section lists previously described changes and other bugfixes that may " "require changes to your code." msgstr "" #: whatsnew/3.10.rst:1848 msgid "Changes in the Python syntax" msgstr "" #: whatsnew/3.10.rst:1850 msgid "" "Deprecation warning is now emitted when compiling previously valid syntax if " "the numeric literal is immediately followed by a keyword (like in ``0in " "x``). In future releases it will be changed to syntax warning, and finally " "to a syntax error. To get rid of the warning and make the code compatible " "with future releases just add a space between the numeric literal and the " "following keyword. (Contributed by Serhiy Storchaka in :issue:`43833`)." msgstr "" #: whatsnew/3.10.rst:1860 msgid "Changes in the Python API" msgstr "" #: whatsnew/3.10.rst:1862 msgid "" "The *etype* parameters of the :func:`~traceback.format_exception`, :func:" "`~traceback.format_exception_only`, and :func:`~traceback.print_exception` " "functions in the :mod:`traceback` module have been renamed to *exc*. " "(Contributed by Zackery Spytz and Matthias Bussonnier in :issue:`26389`.)" msgstr "" #: whatsnew/3.10.rst:1868 msgid "" ":mod:`atexit`: At Python exit, if a callback registered with :func:`atexit." "register` fails, its exception is now logged. Previously, only some " "exceptions were logged, and the last exception was always silently ignored. " "(Contributed by Victor Stinner in :issue:`42639`.)" msgstr "" #: whatsnew/3.10.rst:1874 msgid "" ":class:`collections.abc.Callable` generic now flattens type parameters, " "similar to what :data:`typing.Callable` currently does. This means that " "``collections.abc.Callable[[int, str], str]`` will have ``__args__`` of " "``(int, str, str)``; previously this was ``([int, str], str)``. Code which " "accesses the arguments via :func:`typing.get_args` or ``__args__`` need to " "account for this change. Furthermore, :exc:`TypeError` may be raised for " "invalid forms of parameterizing :class:`collections.abc.Callable` which may " "have passed silently in Python 3.9. (Contributed by Ken Jin in :issue:" "`42195`.)" msgstr "" #: whatsnew/3.10.rst:1884 msgid "" ":meth:`socket.htons` and :meth:`socket.ntohs` now raise :exc:`OverflowError` " "instead of :exc:`DeprecationWarning` if the given parameter will not fit in " "a 16-bit unsigned integer. (Contributed by Erlend E. Aasland in :issue:" "`42393`.)" msgstr "" #: whatsnew/3.10.rst:1889 msgid "" "The ``loop`` parameter has been removed from most of :mod:`asyncio`\\ 's :" "doc:`high-level API <../library/asyncio-api-index>` following deprecation in " "Python 3.8." msgstr "" #: whatsnew/3.10.rst:1893 msgid "A coroutine that currently looks like this::" msgstr "" #: whatsnew/3.10.rst:1898 msgid "Should be replaced with this::" msgstr "" #: whatsnew/3.10.rst:1903 msgid "" "If ``foo()`` was specifically designed *not* to run in the current thread's " "running event loop (e.g. running in another thread's event loop), consider " "using :func:`asyncio.run_coroutine_threadsafe` instead." msgstr "" #: whatsnew/3.10.rst:1910 msgid "" "The :data:`types.FunctionType` constructor now inherits the current builtins " "if the *globals* dictionary has no ``\"__builtins__\"`` key, rather than " "using ``{\"None\": None}`` as builtins: same behavior as :func:`eval` and :" "func:`exec` functions. Defining a function with ``def function(...): ...`` " "in Python is not affected, globals cannot be overriden with this syntax: it " "also inherits the current builtins. (Contributed by Victor Stinner in :issue:" "`42990`.)" msgstr "" #: whatsnew/3.10.rst:1919 msgid "Changes in the C API" msgstr "" #: whatsnew/3.10.rst:1921 msgid "" "The C API functions ``PyParser_SimpleParseStringFlags``, " "``PyParser_SimpleParseStringFlagsFilename``, " "``PyParser_SimpleParseFileFlags``, ``PyNode_Compile`` and the type used by " "these functions, ``struct _node``, were removed due to the switch to the new " "PEG parser." msgstr "" #: whatsnew/3.10.rst:1927 msgid "" "Source should be now be compiled directly to a code object using, for " "example, :c:func:`Py_CompileString`. The resulting code object can then be " "evaluated using, for example, :c:func:`PyEval_EvalCode`." msgstr "" #: whatsnew/3.10.rst:1931 msgid "Specifically:" msgstr "" #: whatsnew/3.10.rst:1933 msgid "" "A call to ``PyParser_SimpleParseStringFlags`` followed by ``PyNode_Compile`` " "can be replaced by calling :c:func:`Py_CompileString`." msgstr "" #: whatsnew/3.10.rst:1936 msgid "" "There is no direct replacement for ``PyParser_SimpleParseFileFlags``. To " "compile code from a ``FILE *`` argument, you will need to read the file in C " "and pass the resulting buffer to :c:func:`Py_CompileString`." msgstr "" #: whatsnew/3.10.rst:1940 msgid "" "To compile a file given a ``char *`` filename, explicitly open the file, " "read it and compile the result. One way to do this is using the :py:mod:`io` " "module with :c:func:`PyImport_ImportModule`, :c:func:`PyObject_CallMethod`, :" "c:func:`PyBytes_AsString` and :c:func:`Py_CompileString`, as sketched below. " "(Declarations and error handling are omitted.) ::" msgstr "" #: whatsnew/3.10.rst:1953 msgid "" "For ``FrameObject`` objects, the ``f_lasti`` member now represents a " "wordcode offset instead of a simple offset into the bytecode string. This " "means that this number needs to be multiplied by 2 to be used with APIs that " "expect a byte offset instead (like :c:func:`PyCode_Addr2Line` for example). " "Notice as well that the ``f_lasti`` member of ``FrameObject`` objects is not " "considered stable: please use :c:func:`PyFrame_GetLineNumber` instead." msgstr "" #: whatsnew/3.10.rst:1961 msgid "CPython bytecode changes" msgstr "" #: whatsnew/3.10.rst:1963 msgid "" "The ``MAKE_FUNCTION`` instruction now accepts either a dict or a tuple of " "strings as the function's annotations. (Contributed by Yurii Karabas and " "Inada Naoki in :issue:`42202`)" msgstr "" #: whatsnew/3.10.rst:1968 msgid "Build Changes" msgstr "" #: whatsnew/3.10.rst:1970 msgid "" ":pep:`644`: Python now requires OpenSSL 1.1.1 or newer. OpenSSL 1.0.2 is no " "longer supported. (Contributed by Christian Heimes in :issue:`43669`.)" msgstr "" #: whatsnew/3.10.rst:1974 msgid "" "The C99 functions :c:func:`snprintf` and :c:func:`vsnprintf` are now " "required to build Python. (Contributed by Victor Stinner in :issue:`36020`.)" msgstr "" #: whatsnew/3.10.rst:1978 msgid "" ":mod:`sqlite3` requires SQLite 3.7.15 or higher. (Contributed by Sergey " "Fedoseev and Erlend E. Aasland :issue:`40744` and :issue:`40810`.)" msgstr "" #: whatsnew/3.10.rst:1981 msgid "" "The :mod:`atexit` module must now always be built as a built-in module. " "(Contributed by Victor Stinner in :issue:`42639`.)" msgstr "" #: whatsnew/3.10.rst:1984 msgid "" "Add :option:`--disable-test-modules` option to the ``configure`` script: " "don't build nor install test modules. (Contributed by Xavier de Gaye, Thomas " "Petazzoni and Peixing Xin in :issue:`27640`.)" msgstr "" #: whatsnew/3.10.rst:1988 msgid "" "Add :option:`--with-wheel-pkg-dir=PATH option <--with-wheel-pkg-dir>` to the " "``./configure`` script. If specified, the :mod:`ensurepip` module looks for " "``setuptools`` and ``pip`` wheel packages in this directory: if both are " "present, these wheel packages are used instead of ensurepip bundled wheel " "packages." msgstr "" #: whatsnew/3.10.rst:1994 msgid "" "Some Linux distribution packaging policies recommend against bundling " "dependencies. For example, Fedora installs wheel packages in the ``/usr/" "share/python-wheels/`` directory and don't install the ``ensurepip." "_bundled`` package." msgstr "" #: whatsnew/3.10.rst:1999 msgid "(Contributed by Victor Stinner in :issue:`42856`.)" msgstr "" #: whatsnew/3.10.rst:2001 msgid "" "Add a new :option:`configure --without-static-libpython option <--without-" "static-libpython>` to not build the ``libpythonMAJOR.MINOR.a`` static " "library and not install the ``python.o`` object file." msgstr "" #: whatsnew/3.10.rst:2005 msgid "(Contributed by Victor Stinner in :issue:`43103`.)" msgstr "" #: whatsnew/3.10.rst:2007 msgid "" "The ``configure`` script now uses the ``pkg-config`` utility, if available, " "to detect the location of Tcl/Tk headers and libraries. As before, those " "locations can be explicitly specified with the :option:`--with-tcltk-" "includes` and :option:`--with-tcltk-libs` configuration options. " "(Contributed by Manolis Stamatogiannakis in :issue:`42603`.)" msgstr "" #: whatsnew/3.10.rst:2013 msgid "" "Add :option:`--with-openssl-rpath` option to ``configure`` script. The " "option simplifies building Python with a custom OpenSSL installation, e.g. " "``./configure --with-openssl=/path/to/openssl --with-openssl-rpath=auto``. " "(Contributed by Christian Heimes in :issue:`43466`.)" msgstr "" #: whatsnew/3.10.rst:2020 msgid "C API Changes" msgstr "" #: whatsnew/3.10.rst:2023 msgid "PEP 652: Maintaining the Stable ABI" msgstr "" #: whatsnew/3.10.rst:2025 msgid "" "The Stable ABI (Application Binary Interface) for extension modules or " "embedding Python is now explicitly defined. :ref:`stable` describes C API " "and ABI stability guarantees along with best practices for using the Stable " "ABI." msgstr "" #: whatsnew/3.10.rst:2030 msgid "(Contributed by Petr Viktorin in :pep:`652` and :issue:`43795`.)" msgstr "" #: whatsnew/3.10.rst:2035 msgid "" "The result of :c:func:`PyNumber_Index` now always has exact type :class:" "`int`. Previously, the result could have been an instance of a subclass of " "``int``. (Contributed by Serhiy Storchaka in :issue:`40792`.)" msgstr "" #: whatsnew/3.10.rst:2039 msgid "" "Add a new :c:member:`~PyConfig.orig_argv` member to the :c:type:`PyConfig` " "structure: the list of the original command line arguments passed to the " "Python executable. (Contributed by Victor Stinner in :issue:`23427`.)" msgstr "" #: whatsnew/3.10.rst:2044 msgid "" "The :c:func:`PyDateTime_DATE_GET_TZINFO` and :c:func:" "`PyDateTime_TIME_GET_TZINFO` macros have been added for accessing the " "``tzinfo`` attributes of :class:`datetime.datetime` and :class:`datetime." "time` objects. (Contributed by Zackery Spytz in :issue:`30155`.)" msgstr "" #: whatsnew/3.10.rst:2050 msgid "" "Add a :c:func:`PyCodec_Unregister` function to unregister a codec search " "function. (Contributed by Hai Shi in :issue:`41842`.)" msgstr "" #: whatsnew/3.10.rst:2054 msgid "" "The :c:func:`PyIter_Send` function was added to allow sending value into " "iterator without raising ``StopIteration`` exception. (Contributed by " "Vladimir Matveev in :issue:`41756`.)" msgstr "" #: whatsnew/3.10.rst:2058 msgid "" "Add :c:func:`PyUnicode_AsUTF8AndSize` to the limited C API. (Contributed by " "Alex Gaynor in :issue:`41784`.)" msgstr "" #: whatsnew/3.10.rst:2061 msgid "" "Add :c:func:`PyModule_AddObjectRef` function: similar to :c:func:" "`PyModule_AddObject` but don't steal a reference to the value on success. " "(Contributed by Victor Stinner in :issue:`1635741`.)" msgstr "" #: whatsnew/3.10.rst:2066 msgid "" "Add :c:func:`Py_NewRef` and :c:func:`Py_XNewRef` functions to increment the " "reference count of an object and return the object. (Contributed by Victor " "Stinner in :issue:`42262`.)" msgstr "" #: whatsnew/3.10.rst:2070 msgid "" "The :c:func:`PyType_FromSpecWithBases` and :c:func:" "`PyType_FromModuleAndSpec` functions now accept a single class as the " "*bases* argument. (Contributed by Serhiy Storchaka in :issue:`42423`.)" msgstr "" #: whatsnew/3.10.rst:2074 msgid "" "The :c:func:`PyType_FromModuleAndSpec` function now accepts NULL ``tp_doc`` " "slot. (Contributed by Hai Shi in :issue:`41832`.)" msgstr "" #: whatsnew/3.10.rst:2078 msgid "" "The :c:func:`PyType_GetSlot` function can accept :ref:`static types `. (Contributed by Hai Shi and Petr Viktorin in :issue:`41073`.)" msgstr "" #: whatsnew/3.10.rst:2082 msgid "" "Add a new :c:func:`PySet_CheckExact` function to the C-API to check if an " "object is an instance of :class:`set` but not an instance of a subtype. " "(Contributed by Pablo Galindo in :issue:`43277`.)" msgstr "" #: whatsnew/3.10.rst:2086 msgid "" "Add :c:func:`PyErr_SetInterruptEx` which allows passing a signal number to " "simulate. (Contributed by Antoine Pitrou in :issue:`43356`.)" msgstr "" #: whatsnew/3.10.rst:2090 msgid "" "The limited C API is now supported if :ref:`Python is built in debug mode " "` (if the ``Py_DEBUG`` macro is defined). In the limited C API, " "the :c:func:`Py_INCREF` and :c:func:`Py_DECREF` functions are now " "implemented as opaque function calls, rather than accessing directly the :c:" "member:`PyObject.ob_refcnt` member, if Python is built in debug mode and the " "``Py_LIMITED_API`` macro targets Python 3.10 or newer. It became possible to " "support the limited C API in debug mode because the :c:type:`PyObject` " "structure is the same in release and debug mode since Python 3.8 (see :issue:" "`36465`)." msgstr "" #: whatsnew/3.10.rst:2100 msgid "" "The limited C API is still not supported in the :option:`--with-trace-refs` " "special build (``Py_TRACE_REFS`` macro). (Contributed by Victor Stinner in :" "issue:`43688`.)" msgstr "" #: whatsnew/3.10.rst:2104 msgid "" "Add the :c:func:`Py_Is(x, y) ` function to test if the *x* object is " "the *y* object, the same as ``x is y`` in Python. Add also the :c:func:" "`Py_IsNone`, :c:func:`Py_IsTrue`, :c:func:`Py_IsFalse` functions to test if " "an object is, respectively, the ``None`` singleton, the ``True`` singleton " "or the ``False`` singleton. (Contributed by Victor Stinner in :issue:" "`43753`.)" msgstr "" #: whatsnew/3.10.rst:2111 msgid "" "Add new functions to control the garbage collector from C code: :c:func:" "`PyGC_Enable()`, :c:func:`PyGC_Disable()`, :c:func:`PyGC_IsEnabled()`. These " "functions allow to activate, deactivate and query the state of the garbage " "collector from C code without having to import the :mod:`gc` module." msgstr "" #: whatsnew/3.10.rst:2118 msgid "" "Add a new :c:data:`Py_TPFLAGS_DISALLOW_INSTANTIATION` type flag to disallow " "creating type instances. (Contributed by Victor Stinner in :issue:`43916`.)" msgstr "" #: whatsnew/3.10.rst:2122 msgid "" "Add a new :c:data:`Py_TPFLAGS_IMMUTABLETYPE` type flag for creating " "immutable type objects: type attributes cannot be set nor deleted. " "(Contributed by Victor Stinner and Erlend E. Aasland in :issue:`43908`.)" msgstr "" #: whatsnew/3.10.rst:2129 msgid "" "The ``PY_SSIZE_T_CLEAN`` macro must now be defined to use :c:func:" "`PyArg_ParseTuple` and :c:func:`Py_BuildValue` formats which use ``#``: " "``es#``, ``et#``, ``s#``, ``u#``, ``y#``, ``z#``, ``U#`` and ``Z#``. See :" "ref:`Parsing arguments and building values ` and the :pep:" "`353`. (Contributed by Victor Stinner in :issue:`40943`.)" msgstr "" #: whatsnew/3.10.rst:2136 msgid "" "Since :c:func:`Py_REFCNT()` is changed to the inline static function, " "``Py_REFCNT(obj) = new_refcnt`` must be replaced with ``Py_SET_REFCNT(obj, " "new_refcnt)``: see :c:func:`Py_SET_REFCNT()` (available since Python 3.9). " "For backward compatibility, this macro can be used::" msgstr "" #: whatsnew/3.10.rst:2145 msgid "(Contributed by Victor Stinner in :issue:`39573`.)" msgstr "" #: whatsnew/3.10.rst:2147 msgid "" "Calling :c:func:`PyDict_GetItem` without :term:`GIL` held had been allowed " "for historical reason. It is no longer allowed. (Contributed by Victor " "Stinner in :issue:`40839`.)" msgstr "" #: whatsnew/3.10.rst:2151 msgid "" "``PyUnicode_FromUnicode(NULL, size)`` and " "``PyUnicode_FromStringAndSize(NULL, size)`` raise ``DeprecationWarning`` " "now. Use :c:func:`PyUnicode_New` to allocate Unicode object without initial " "data. (Contributed by Inada Naoki in :issue:`36346`.)" msgstr "" #: whatsnew/3.10.rst:2156 msgid "" "The private ``_PyUnicode_Name_CAPI`` structure of the PyCapsule API " "``unicodedata.ucnhash_CAPI`` has been moved to the internal C API. " "(Contributed by Victor Stinner in :issue:`42157`.)" msgstr "" #: whatsnew/3.10.rst:2160 msgid "" ":c:func:`Py_GetPath`, :c:func:`Py_GetPrefix`, :c:func:`Py_GetExecPrefix`, :c:" "func:`Py_GetProgramFullPath`, :c:func:`Py_GetPythonHome` and :c:func:" "`Py_GetProgramName` functions now return ``NULL`` if called before :c:func:" "`Py_Initialize` (before Python is initialized). Use the new :ref:`Python " "Initialization Configuration API ` to get the :ref:`Python Path " "Configuration. `. (Contributed by Victor Stinner in :" "issue:`42260`.)" msgstr "" #: whatsnew/3.10.rst:2168 msgid "" ":c:func:`PyList_SET_ITEM`, :c:func:`PyTuple_SET_ITEM` and :c:func:" "`PyCell_SET` macros can no longer be used as l-value or r-value. For " "example, ``x = PyList_SET_ITEM(a, b, c)`` and ``PyList_SET_ITEM(a, b, c) = " "x`` now fail with a compiler error. It prevents bugs like ``if " "(PyList_SET_ITEM (a, b, c) < 0) ...`` test. (Contributed by Zackery Spytz " "and Victor Stinner in :issue:`30459`.)" msgstr "" #: whatsnew/3.10.rst:2175 msgid "" "The non-limited API files ``odictobject.h``, ``parser_interface.h``, " "``picklebufobject.h``, ``pyarena.h``, ``pyctype.h``, ``pydebug.h``, ``pyfpe." "h``, and ``pytime.h`` have been moved to the ``Include/cpython`` directory. " "These files must not be included directly, as they are already included in " "``Python.h``: :ref:`Include Files `. If they have been " "included directly, consider including ``Python.h`` instead. (Contributed by " "Nicholas Sim in :issue:`35134`)" msgstr "" #: whatsnew/3.10.rst:2183 msgid "" "Use the :c:data:`Py_TPFLAGS_IMMUTABLETYPE` type flag to create immutable " "type objects. Do not rely on :c:data:`Py_TPFLAGS_HEAPTYPE` to decide if a " "type object is mutable or not; check if :c:data:`Py_TPFLAGS_IMMUTABLETYPE` " "is set instead. (Contributed by Victor Stinner and Erlend E. Aasland in :" "issue:`43908`.)" msgstr "" #: whatsnew/3.10.rst:2189 msgid "" "The undocumented function ``Py_FrozenMain`` has been removed from the " "limited API. The function is mainly useful for custom builds of Python. " "(Contributed by Petr Viktorin in :issue:`26241`)" msgstr "" #: whatsnew/3.10.rst:2196 msgid "" "The ``PyUnicode_InternImmortal()`` function is now deprecated and will be " "removed in Python 3.12: use :c:func:`PyUnicode_InternInPlace` instead. " "(Contributed by Victor Stinner in :issue:`41692`.)" msgstr "" #: whatsnew/3.10.rst:2204 msgid "" "Removed ``Py_UNICODE_str*`` functions manipulating ``Py_UNICODE*`` strings. " "(Contributed by Inada Naoki in :issue:`41123`.)" msgstr "" #: whatsnew/3.10.rst:2207 msgid "" "``Py_UNICODE_strlen``: use :c:func:`PyUnicode_GetLength` or :c:macro:" "`PyUnicode_GET_LENGTH`" msgstr "" #: whatsnew/3.10.rst:2209 msgid "" "``Py_UNICODE_strcat``: use :c:func:`PyUnicode_CopyCharacters` or :c:func:" "`PyUnicode_FromFormat`" msgstr "" #: whatsnew/3.10.rst:2211 msgid "" "``Py_UNICODE_strcpy``, ``Py_UNICODE_strncpy``: use :c:func:" "`PyUnicode_CopyCharacters` or :c:func:`PyUnicode_Substring`" msgstr "" #: whatsnew/3.10.rst:2213 msgid "``Py_UNICODE_strcmp``: use :c:func:`PyUnicode_Compare`" msgstr "" #: whatsnew/3.10.rst:2214 msgid "``Py_UNICODE_strncmp``: use :c:func:`PyUnicode_Tailmatch`" msgstr "" #: whatsnew/3.10.rst:2215 msgid "" "``Py_UNICODE_strchr``, ``Py_UNICODE_strrchr``: use :c:func:" "`PyUnicode_FindChar`" msgstr "" #: whatsnew/3.10.rst:2218 msgid "" "Removed ``PyUnicode_GetMax()``. Please migrate to new (:pep:`393`) APIs. " "(Contributed by Inada Naoki in :issue:`41103`.)" msgstr "" #: whatsnew/3.10.rst:2221 msgid "" "Removed ``PyLong_FromUnicode()``. Please migrate to :c:func:" "`PyLong_FromUnicodeObject`. (Contributed by Inada Naoki in :issue:`41103`.)" msgstr "" #: whatsnew/3.10.rst:2224 msgid "" "Removed ``PyUnicode_AsUnicodeCopy()``. Please use :c:func:" "`PyUnicode_AsUCS4Copy` or :c:func:`PyUnicode_AsWideCharString` (Contributed " "by Inada Naoki in :issue:`41103`.)" msgstr "" #: whatsnew/3.10.rst:2228 msgid "" "Removed ``_Py_CheckRecursionLimit`` variable: it has been replaced by " "``ceval.recursion_limit`` of the :c:type:`PyInterpreterState` structure. " "(Contributed by Victor Stinner in :issue:`41834`.)" msgstr "" #: whatsnew/3.10.rst:2232 msgid "" "Removed undocumented macros ``Py_ALLOW_RECURSION`` and " "``Py_END_ALLOW_RECURSION`` and the ``recursion_critical`` field of the :c:" "type:`PyInterpreterState` structure. (Contributed by Serhiy Storchaka in :" "issue:`41936`.)" msgstr "" #: whatsnew/3.10.rst:2237 msgid "" "Removed the undocumented ``PyOS_InitInterrupts()`` function. Initializing " "Python already implicitly installs signal handlers: see :c:member:`PyConfig." "install_signal_handlers`. (Contributed by Victor Stinner in :issue:`41713`.)" msgstr "" #: whatsnew/3.10.rst:2242 msgid "" "Remove the ``PyAST_Validate()`` function. It is no longer possible to build " "a AST object (``mod_ty`` type) with the public C API. The function was " "already excluded from the limited C API (:pep:`384`). (Contributed by Victor " "Stinner in :issue:`43244`.)" msgstr "" #: whatsnew/3.10.rst:2247 msgid "Remove the ``symtable.h`` header file and the undocumented functions:" msgstr "" #: whatsnew/3.10.rst:2249 msgid "``PyST_GetScope()``" msgstr "" #: whatsnew/3.10.rst:2250 msgid "``PySymtable_Build()``" msgstr "" #: whatsnew/3.10.rst:2251 msgid "``PySymtable_BuildObject()``" msgstr "" #: whatsnew/3.10.rst:2252 msgid "``PySymtable_Free()``" msgstr "" #: whatsnew/3.10.rst:2253 msgid "``Py_SymtableString()``" msgstr "" #: whatsnew/3.10.rst:2254 msgid "``Py_SymtableStringObject()``" msgstr "" #: whatsnew/3.10.rst:2256 msgid "" "The ``Py_SymtableString()`` function was part the stable ABI by mistake but " "it could not be used, because the ``symtable.h`` header file was excluded " "from the limited C API." msgstr "" #: whatsnew/3.10.rst:2260 msgid "" "Use Python :mod:`symtable` module instead. (Contributed by Victor Stinner " "in :issue:`43244`.)" msgstr "" #: whatsnew/3.10.rst:2263 msgid "" "Remove :c:func:`PyOS_ReadlineFunctionPointer` from the limited C API headers " "and from ``python3.dll``, the library that provides the stable ABI on " "Windows. Since the function takes a ``FILE*`` argument, its ABI stability " "cannot be guaranteed. (Contributed by Petr Viktorin in :issue:`43868`.)" msgstr "" #: whatsnew/3.10.rst:2269 msgid "" "Remove ``ast.h``, ``asdl.h``, and ``Python-ast.h`` header files. These " "functions were undocumented and excluded from the limited C API. Most names " "defined by these header files were not prefixed by ``Py`` and so could " "create names conflicts. For example, ``Python-ast.h`` defined a ``Yield`` " "macro which was conflict with the ``Yield`` name used by the Windows " "```` header. Use the Python :mod:`ast` module instead. " "(Contributed by Victor Stinner in :issue:`43244`.)" msgstr "" #: whatsnew/3.10.rst:2277 msgid "" "Remove the compiler and parser functions using ``struct _mod`` type, because " "the public AST C API was removed:" msgstr "" #: whatsnew/3.10.rst:2280 msgid "``PyAST_Compile()``" msgstr "" #: whatsnew/3.10.rst:2281 msgid "``PyAST_CompileEx()``" msgstr "" #: whatsnew/3.10.rst:2282 msgid "``PyAST_CompileObject()``" msgstr "" #: whatsnew/3.10.rst:2283 msgid "``PyFuture_FromAST()``" msgstr "" #: whatsnew/3.10.rst:2284 msgid "``PyFuture_FromASTObject()``" msgstr "" #: whatsnew/3.10.rst:2285 msgid "``PyParser_ASTFromFile()``" msgstr "" #: whatsnew/3.10.rst:2286 msgid "``PyParser_ASTFromFileObject()``" msgstr "" #: whatsnew/3.10.rst:2287 msgid "``PyParser_ASTFromFilename()``" msgstr "" #: whatsnew/3.10.rst:2288 msgid "``PyParser_ASTFromString()``" msgstr "" #: whatsnew/3.10.rst:2289 msgid "``PyParser_ASTFromStringObject()``" msgstr "" #: whatsnew/3.10.rst:2291 msgid "" "These functions were undocumented and excluded from the limited C API. " "(Contributed by Victor Stinner in :issue:`43244`.)" msgstr "" #: whatsnew/3.10.rst:2294 msgid "Remove the ``pyarena.h`` header file with functions:" msgstr "" #: whatsnew/3.10.rst:2296 msgid "``PyArena_New()``" msgstr "" #: whatsnew/3.10.rst:2297 msgid "``PyArena_Free()``" msgstr "" #: whatsnew/3.10.rst:2298 msgid "``PyArena_Malloc()``" msgstr "" #: whatsnew/3.10.rst:2299 msgid "``PyArena_AddPyObject()``" msgstr "" #: whatsnew/3.10.rst:2301 msgid "" "These functions were undocumented, excluded from the limited C API, and were " "only used internally by the compiler. (Contributed by Victor Stinner in :" "issue:`43244`.)" msgstr ""