# 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 <EMAIL@ADDRESS>\n"
"Language-Team: FRENCH <traductions@lists.afpy.org>\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 <changelog>`."
msgstr "Pour plus de détails, voir le :ref:`changelog <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 <sys.flags>` 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 <staticmethod>`) and class methods (:"
"func:`@classmethod <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 <types-genericalias>` "
"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 <soft-keywords>` :keyword:`match`, :"
"keyword:`case <match>`, and :keyword:`_ <wildcard-patterns>` 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 <https://importlib-"
"metadata.readthedocs.io/en/latest/history.html>`_)."
msgstr ""

#: whatsnew/3.10.rst:1175
msgid ""
":ref:`importlib.metadata entry points <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 <pathlib.PurePath.parents>`. "
"(Contributed by Joshua Cannon in :issue:`35498`)"
msgstr ""

#: whatsnew/3.10.rst:1245
msgid ""
"Add negative indexing support to :attr:`PurePath.parents <pathlib.PurePath."
"parents>`. (Contributed by Yaroslav Pankovych in :issue:`21041`)"
msgstr ""

#: whatsnew/3.10.rst:1249
msgid ""
"Add :meth:`Path.hardlink_to <pathlib.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 <https://www.freedesktop.org/"
"software/systemd/man/os-release.html>`_ 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 "
"<whatsnew310-deprecated>` 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 <https://developers."
"redhat.com/blog/2020/06/25/red-hat-enterprise-linux-8-2-brings-faster-"
"python-3-8-run-speeds/>`_ 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 <distutils-deprecated>` 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 <https://"
"sqlite.org/c3ref/enable_shared_cache.html>`_ 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 <debug-build>`. (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 <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 "
"<debug-build>` (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) <Py_Is>` 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 <arg-parsing>` 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 <init-config>` to get the :ref:`Python Path "
"Configuration.  <init-path-config>`. (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 <api-includes>`. 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 "
"``<winbase.h>`` 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 ""
