diff --git a/Makefile b/Makefile index 17be0eee..15704319 100644 --- a/Makefile +++ b/Makefile @@ -21,7 +21,7 @@ # from which we generated our po files. We use it here so when we # test build, we're building with the .rst files that generated our # .po files. -CPYTHON_CURRENT_COMMIT := d13d5fdf610a294a6c3dc125e0856fb7fdd41e49 +CPYTHON_CURRENT_COMMIT := 250bb7fffd0b7270064505a3acaa025a268985ce CPYTHON_PATH := ./cpython diff --git a/about.po b/about.po index da6824ee..ffef9082 100644 --- a/about.po +++ b/about.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2024-03-31 19:50+0000\n" "Last-Translator: Theofanis Petkos \n" "Language-Team: PyGreece \n" diff --git a/bugs.po b/bugs.po index f9814c2b..6d07837f 100644 --- a/bugs.po +++ b/bugs.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2024-05-06 12:51+0000\n" "Last-Translator: Theofanis Petkos \n" "Language-Team: PyGreece \n" @@ -47,7 +47,6 @@ msgid "Documentation bugs" msgstr "Σφάλματα Τεκμηρίωσης" #: bugs.rst:18 -#, fuzzy msgid "" "If you find a bug in this documentation or would like to propose an " "improvement, please submit a bug report on the :ref:`issue tracker `. Εάν έχετε μια πρόταση για το πώς να το διορθώσετε, συμπεριλάβετε " "και αυτήν." @@ -68,7 +67,6 @@ msgstr "" "την τεκμηρίωση `_." #: bugs.rst:25 -#, fuzzy msgid "" "If you find a bug in the theme (HTML / CSS / JavaScript) of the " "documentation, please submit a bug report on the `python-doc-theme issue " diff --git a/c-api/abstract.po b/c-api/abstract.po index 495b7ca9..41807f2d 100644 --- a/c-api/abstract.po +++ b/c-api/abstract.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/allocation.po b/c-api/allocation.po index f61efa31..b3f303f8 100644 --- a/c-api/allocation.po +++ b/c-api/allocation.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-06-04 11:27+0300\n" "Last-Translator: Marios Giannopoulos \n" "Language-Team: PyGreece \n" @@ -25,28 +25,48 @@ msgstr "Δέσμευση Αντικειμένων στο Σωρό" msgid "" "Initialize a newly allocated object *op* with its type and initial " "reference. Returns the initialized object. Other fields of the object are " -"not affected." +"not initialized. Despite its name, this function is unrelated to the " +"object's :meth:`~object.__init__` method (:c:member:`~PyTypeObject.tp_init` " +"slot). Specifically, this function does **not** call the object's :meth:`!" +"__init__` method." msgstr "" -"Αρχικοποιεί ένα νεοδεσμευμένο αντικείμενο *op* με τον τύπο και την αρχική " -"αναφορά του. Επιστρέφει το αρχικοποιημένο αντικείμενο. Άλλα πεδία του " -"αντικειμένου δεν επηρεάζονται." #: c-api/allocation.rst:24 msgid "" +"In general, consider this function to be a low-level routine. Use :c:member:" +"`~PyTypeObject.tp_alloc` where possible. For implementing :c:member:`!" +"tp_alloc` for your type, prefer :c:func:`PyType_GenericAlloc` or :c:func:" +"`PyObject_New`." +msgstr "" + +#: c-api/allocation.rst:31 +msgid "" +"This function only initializes the object's memory corresponding to the " +"initial :c:type:`PyObject` structure. It does not zero the rest." +msgstr "" + +#: c-api/allocation.rst:37 +msgid "" "This does everything :c:func:`PyObject_Init` does, and also initializes the " "length information for a variable-size object." msgstr "" "Αυτό κάνει τα πάντα που κάνει η :c:func:`PyObject_Init`, και επίσης " "αρχικοποιεί τις πληροφορίες μήκους για ένα αντικείμενο μεταβλητού μεγέθους." -#: c-api/allocation.rst:30 +#: c-api/allocation.rst:42 +msgid "" +"This function only initializes some of the object's memory. It does not " +"zero the rest." +msgstr "" + +#: c-api/allocation.rst:48 +#, fuzzy msgid "" -"Allocate a new Python object using the C structure type *TYPE* and the " -"Python type object *typeobj* (``PyTypeObject*``). Fields not defined by the " -"Python object header are not initialized. The caller will own the only " -"reference to the object (i.e. its reference count will be one). The size of " -"the memory allocation is determined from the :c:member:`~PyTypeObject." -"tp_basicsize` field of the type object." +"Allocates a new Python object using the C structure type *TYPE* and the " +"Python type object *typeobj* (``PyTypeObject*``) by calling :c:func:" +"`PyObject_Malloc` to allocate memory and initializing it like :c:func:" +"`PyObject_Init`. The caller will own the only reference to the object (i.e. " +"its reference count will be one)." msgstr "" "Δεσμεύει ένα νέο αντικείμενο Python χρησιμοποιώντας τον τύπο δομής C *TYPE* " "και το αντικείμενο τύπου Python *typeobj* (``PyTypeObject*``). Τα πεδία που " @@ -55,54 +75,130 @@ msgstr "" "αναφορών του θα είναι ένα). Το μέγεθος της δέσμευσης μνήμης καθορίζεται από " "το πεδίο :c:member:`~PyTypeObject.tp_basicsize` του αντικειμένου τύπου." -#: c-api/allocation.rst:38 +#: c-api/allocation.rst:107 +msgid "" +"Avoid calling this directly to allocate memory for an object; call the " +"type's :c:member:`~PyTypeObject.tp_alloc` slot instead." +msgstr "" + +#: c-api/allocation.rst:110 +msgid "" +"When populating a type's :c:member:`~PyTypeObject.tp_alloc` slot, :c:func:" +"`PyType_GenericAlloc` is preferred over a custom function that simply calls " +"this macro." +msgstr "" + +#: c-api/allocation.rst:61 msgid "" -"Note that this function is unsuitable if *typeobj* has :c:macro:" -"`Py_TPFLAGS_HAVE_GC` set. For such objects, use :c:func:`PyObject_GC_New` " -"instead." +"This macro does not call :c:member:`~PyTypeObject.tp_alloc`, :c:member:" +"`~PyTypeObject.tp_new` (:meth:`~object.__new__`), or :c:member:" +"`~PyTypeObject.tp_init` (:meth:`~object.__init__`)." +msgstr "" + +#: c-api/allocation.rst:65 +#, fuzzy +msgid "" +"This cannot be used for objects with :c:macro:`Py_TPFLAGS_HAVE_GC` set in :c:" +"member:`~PyTypeObject.tp_flags`; use :c:macro:`PyObject_GC_New` instead." msgstr "" "Σημειώστε ότι αυτή η συνάρτηση δεν είναι κατάλληλη αν το *typeobj* έχει :c:" "macro:`Py_TPFLAGS_HAVE_GC` ορισμένο. Για τέτοια αντικείμενα, χρησιμοποιήστε :" "c:func:`PyObject_GC_New` αντ' αυτού." -#: c-api/allocation.rst:45 +#: c-api/allocation.rst:68 msgid "" -"Allocate a new Python object using the C structure type *TYPE* and the " -"Python type object *typeobj* (``PyTypeObject*``). Fields not defined by the " -"Python object header are not initialized. The allocated memory allows for " -"the *TYPE* structure plus *size* (``Py_ssize_t``) fields of the size given " -"by the :c:member:`~PyTypeObject.tp_itemsize` field of *typeobj*. This is " -"useful for implementing objects like tuples, which are able to determine " -"their size at construction time. Embedding the array of fields into the " -"same allocation decreases the number of allocations, improving the memory " -"management efficiency." +"Memory allocated by this macro must be freed with :c:func:`PyObject_Free` " +"(usually called via the object's :c:member:`~PyTypeObject.tp_free` slot)." +msgstr "" + +#: c-api/allocation.rst:123 +msgid "" +"The returned memory is not guaranteed to have been completely zeroed before " +"it was initialized." +msgstr "" + +#: c-api/allocation.rst:128 +msgid "" +"This macro does not construct a fully initialized object of the given type; " +"it merely allocates memory and prepares it for further initialization by :c:" +"member:`~PyTypeObject.tp_init`. To construct a fully initialized object, " +"call *typeobj* instead. For example::" +msgstr "" + +#: c-api/allocation.rst:83 +msgid "PyObject *foo = PyObject_CallNoArgs((PyObject *)&PyFoo_Type);" +msgstr "" + +#: c-api/allocation.rst:137 +#, fuzzy +msgid ":c:func:`PyObject_Free`" +msgstr "Ίδιο με την :c:func:`PyObject_Free`." + +#: c-api/allocation.rst:88 +msgid ":c:macro:`PyObject_GC_New`" +msgstr "" + +#: c-api/allocation.rst:139 +msgid ":c:func:`PyType_GenericAlloc`" +msgstr "" + +#: c-api/allocation.rst:140 +msgid ":c:member:`~PyTypeObject.tp_alloc`" msgstr "" -"Δεσμεύει ένα νέο αντικείμενο Python χρησιμοποιώντας τον τύπο δομής C *TYPE* " -"και το αντικείμενο τύπου Python *typeobj* (``PyTypeObject*``). Τα πεδία που " -"δεν ορίζονται από την κεφαλίδα αντικειμένου Python δεν αρχικοποιούνται. Η " -"δεσμευμένη μνήμη επιτρέπει τη δομή *TYPE* συν *size* (``Py_ssize_t``) πεδία " -"του μεγέθους που δίνεται από το πεδίο :c:member:`~PyTypeObject.tp_itemsize` " -"του *typeobj*. Αυτό είναι χρήσιμο για την υλοποίηση αντικειμένων όπως τις " -"πλειάδες (tuples), τα οποία είναι σε θέση να προσδιορίσουν το μέγεθός τους " -"κατά τη διάρκεια της κατασκευής. Η ενσωμάτωση του πίνακα πεδίων στην ίδια " -"δέσμευση μειώνει τον αριθμό των δεσμεύσεων, βελτιώνοντας την αποδοτικότητα " -"της διαχείρισης μνήμης." -#: c-api/allocation.rst:56 +#: c-api/allocation.rst:95 +msgid "Like :c:macro:`PyObject_New` except:" +msgstr "" + +#: c-api/allocation.rst:97 +msgid "" +"It allocates enough memory for the *TYPE* structure plus *size* " +"(``Py_ssize_t``) fields of the size given by the :c:member:`~PyTypeObject." +"tp_itemsize` field of *typeobj*." +msgstr "" + +#: c-api/allocation.rst:100 +msgid "The memory is initialized like :c:func:`PyObject_InitVar`." +msgstr "" + +#: c-api/allocation.rst:102 msgid "" -"Note that this function is unsuitable if *typeobj* has :c:macro:" -"`Py_TPFLAGS_HAVE_GC` set. For such objects, use :c:func:`PyObject_GC_NewVar` " -"instead." +"This is useful for implementing objects like tuples, which are able to " +"determine their size at construction time. Embedding the array of fields " +"into the same allocation decreases the number of allocations, improving the " +"memory management efficiency." +msgstr "" + +#: c-api/allocation.rst:114 +#, fuzzy +msgid "" +"This cannot be used for objects with :c:macro:`Py_TPFLAGS_HAVE_GC` set in :c:" +"member:`~PyTypeObject.tp_flags`; use :c:macro:`PyObject_GC_NewVar` instead." msgstr "" "Σημειώστε ότι αυτή η συνάρτηση δεν είναι κατάλληλη αν το *typeobj* έχει :c:" "macro:`Py_TPFLAGS_HAVE_GC` ορισμένο. Για τέτοια αντικείμενα, χρησιμοποιήστε :" "c:func:`PyObject_GC_NewVar` αντ' αυτού." -#: c-api/allocation.rst:63 +#: c-api/allocation.rst:118 +msgid "" +"Memory allocated by this function must be freed with :c:func:`PyObject_Free` " +"(usually called via the object's :c:member:`~PyTypeObject.tp_free` slot)." +msgstr "" + +#: c-api/allocation.rst:133 +msgid "" +"PyObject *list_instance = PyObject_CallNoArgs((PyObject *)&PyList_Type);" +msgstr "" + +#: c-api/allocation.rst:138 +msgid ":c:macro:`PyObject_GC_NewVar`" +msgstr "" + +#: c-api/allocation.rst:145 msgid "Same as :c:func:`PyObject_Free`." msgstr "Ίδιο με την :c:func:`PyObject_Free`." -#: c-api/allocation.rst:67 +#: c-api/allocation.rst:149 msgid "" "Object which is visible in Python as ``None``. This should only be accessed " "using the :c:macro:`Py_None` macro, which evaluates to a pointer to this " @@ -112,10 +208,44 @@ msgstr "" "προσπελαύνεται μόνο χρησιμοποιώντας τη μακροεντολή :c:macro:`Py_None`, η " "οποία αξιολογείται σε έναν δείκτη σε αυτό το αντικείμενο." -#: c-api/allocation.rst:74 -msgid ":c:func:`PyModule_Create`" -msgstr ":c:func:`PyModule_Create`" +#: c-api/allocation.rst:156 +msgid ":ref:`moduleobjects`" +msgstr "" -#: c-api/allocation.rst:75 +#: c-api/allocation.rst:157 msgid "To allocate and create extension modules." msgstr "Για να δεσμεύσετε και να δημιουργήσετε επεκτάσεις modules." + +#~ msgid "" +#~ "Initialize a newly allocated object *op* with its type and initial " +#~ "reference. Returns the initialized object. Other fields of the object " +#~ "are not affected." +#~ msgstr "" +#~ "Αρχικοποιεί ένα νεοδεσμευμένο αντικείμενο *op* με τον τύπο και την αρχική " +#~ "αναφορά του. Επιστρέφει το αρχικοποιημένο αντικείμενο. Άλλα πεδία του " +#~ "αντικειμένου δεν επηρεάζονται." + +#~ msgid "" +#~ "Allocate a new Python object using the C structure type *TYPE* and the " +#~ "Python type object *typeobj* (``PyTypeObject*``). Fields not defined by " +#~ "the Python object header are not initialized. The allocated memory " +#~ "allows for the *TYPE* structure plus *size* (``Py_ssize_t``) fields of " +#~ "the size given by the :c:member:`~PyTypeObject.tp_itemsize` field of " +#~ "*typeobj*. This is useful for implementing objects like tuples, which " +#~ "are able to determine their size at construction time. Embedding the " +#~ "array of fields into the same allocation decreases the number of " +#~ "allocations, improving the memory management efficiency." +#~ msgstr "" +#~ "Δεσμεύει ένα νέο αντικείμενο Python χρησιμοποιώντας τον τύπο δομής C " +#~ "*TYPE* και το αντικείμενο τύπου Python *typeobj* (``PyTypeObject*``). Τα " +#~ "πεδία που δεν ορίζονται από την κεφαλίδα αντικειμένου Python δεν " +#~ "αρχικοποιούνται. Η δεσμευμένη μνήμη επιτρέπει τη δομή *TYPE* συν *size* " +#~ "(``Py_ssize_t``) πεδία του μεγέθους που δίνεται από το πεδίο :c:member:" +#~ "`~PyTypeObject.tp_itemsize` του *typeobj*. Αυτό είναι χρήσιμο για την " +#~ "υλοποίηση αντικειμένων όπως τις πλειάδες (tuples), τα οποία είναι σε θέση " +#~ "να προσδιορίσουν το μέγεθός τους κατά τη διάρκεια της κατασκευής. Η " +#~ "ενσωμάτωση του πίνακα πεδίων στην ίδια δέσμευση μειώνει τον αριθμό των " +#~ "δεσμεύσεων, βελτιώνοντας την αποδοτικότητα της διαχείρισης μνήμης." + +#~ msgid ":c:func:`PyModule_Create`" +#~ msgstr ":c:func:`PyModule_Create`" diff --git a/c-api/apiabiversion.po b/c-api/apiabiversion.po index 993e402d..cd0b791a 100644 --- a/c-api/apiabiversion.po +++ b/c-api/apiabiversion.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/arg.po b/c-api/arg.po index bc9d1f6e..c0a74cc0 100644 --- a/c-api/arg.po +++ b/c-api/arg.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -552,7 +552,7 @@ msgstr "" msgid "Allow :class:`bytearray` objects." msgstr "" -#: c-api/arg.rst:694 +#: c-api/arg.rst:695 msgid "``C`` (:class:`str` of length 1) [int]" msgstr "" @@ -562,7 +562,7 @@ msgid "" "1, to a C :c:expr:`int`." msgstr "" -#: c-api/arg.rst:701 +#: c-api/arg.rst:702 msgid "``f`` (:class:`float`) [float]" msgstr "" @@ -570,7 +570,7 @@ msgstr "" msgid "Convert a Python floating-point number to a C :c:expr:`float`." msgstr "" -#: c-api/arg.rst:698 +#: c-api/arg.rst:699 msgid "``d`` (:class:`float`) [double]" msgstr "" @@ -590,7 +590,7 @@ msgstr "" msgid "Other objects" msgstr "" -#: c-api/arg.rst:707 +#: c-api/arg.rst:708 msgid "``O`` (object) [PyObject \\*]" msgstr "" @@ -1124,44 +1124,42 @@ msgid "Convert a C :c:type:`Py_ssize_t` to a Python integer." msgstr "" #: c-api/arg.rst:687 -msgid "" -"Convert a C :c:expr:`int` to a Python :class:`bool` object. .. " -"versionadded:: 3.14" +msgid "Convert a C :c:expr:`int` to a Python :class:`bool` object." msgstr "" -#: c-api/arg.rst:690 +#: c-api/arg.rst:691 msgid "``c`` (:class:`bytes` of length 1) [char]" msgstr "" -#: c-api/arg.rst:691 +#: c-api/arg.rst:692 msgid "" "Convert a C :c:expr:`int` representing a byte to a Python :class:`bytes` " "object of length 1." msgstr "" -#: c-api/arg.rst:695 +#: c-api/arg.rst:696 msgid "" "Convert a C :c:expr:`int` representing a character to Python :class:`str` " "object of length 1." msgstr "" -#: c-api/arg.rst:699 +#: c-api/arg.rst:700 msgid "Convert a C :c:expr:`double` to a Python floating-point number." msgstr "" -#: c-api/arg.rst:702 +#: c-api/arg.rst:703 msgid "Convert a C :c:expr:`float` to a Python floating-point number." msgstr "" -#: c-api/arg.rst:704 +#: c-api/arg.rst:705 msgid "``D`` (:class:`complex`) [Py_complex \\*]" msgstr "" -#: c-api/arg.rst:705 +#: c-api/arg.rst:706 msgid "Convert a C :c:type:`Py_complex` structure to a Python complex number." msgstr "" -#: c-api/arg.rst:708 +#: c-api/arg.rst:709 msgid "" "Pass a Python object untouched but create a new :term:`strong reference` to " "it (i.e. its reference count is incremented by one). If the object passed in " @@ -1171,30 +1169,30 @@ msgid "" "no exception has been raised yet, :exc:`SystemError` is set." msgstr "" -#: c-api/arg.rst:717 +#: c-api/arg.rst:718 msgid "``S`` (object) [PyObject \\*]" msgstr "" -#: c-api/arg.rst:718 +#: c-api/arg.rst:719 msgid "Same as ``O``." msgstr "" -#: c-api/arg.rst:720 +#: c-api/arg.rst:721 msgid "``N`` (object) [PyObject \\*]" msgstr "" -#: c-api/arg.rst:721 +#: c-api/arg.rst:722 msgid "" "Same as ``O``, except it doesn't create a new :term:`strong reference`. " "Useful when the object is created by a call to an object constructor in the " "argument list." msgstr "" -#: c-api/arg.rst:725 +#: c-api/arg.rst:726 msgid "``O&`` (object) [*converter*, *anything*]" msgstr "" -#: c-api/arg.rst:726 +#: c-api/arg.rst:727 msgid "" "Convert *anything* to a Python object through a *converter* function. The " "function is called with *anything* (which should be compatible with :c:expr:" @@ -1202,44 +1200,44 @@ msgid "" "``NULL`` if an error occurred." msgstr "" -#: c-api/arg.rst:731 +#: c-api/arg.rst:732 msgid "``(items)`` (:class:`tuple`) [*matching-items*]" msgstr "" -#: c-api/arg.rst:732 +#: c-api/arg.rst:733 msgid "" "Convert a sequence of C values to a Python tuple with the same number of " "items." msgstr "" -#: c-api/arg.rst:734 +#: c-api/arg.rst:735 msgid "``[items]`` (:class:`list`) [*matching-items*]" msgstr "" -#: c-api/arg.rst:735 +#: c-api/arg.rst:736 msgid "" "Convert a sequence of C values to a Python list with the same number of " "items." msgstr "" -#: c-api/arg.rst:737 +#: c-api/arg.rst:738 msgid "``{items}`` (:class:`dict`) [*matching-items*]" msgstr "" -#: c-api/arg.rst:738 +#: c-api/arg.rst:739 msgid "" "Convert a sequence of C values to a Python dictionary. Each pair of " "consecutive C values adds one item to the dictionary, serving as key and " "value, respectively." msgstr "" -#: c-api/arg.rst:742 +#: c-api/arg.rst:743 msgid "" "If there is an error in the format string, the :exc:`SystemError` exception " "is set and ``NULL`` returned." msgstr "" -#: c-api/arg.rst:747 +#: c-api/arg.rst:748 msgid "" "Identical to :c:func:`Py_BuildValue`, except that it accepts a va_list " "rather than a variable number of arguments." diff --git a/c-api/bool.po b/c-api/bool.po index f1a4f914..2d4b2293 100644 --- a/c-api/bool.po +++ b/c-api/bool.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/buffer.po b/c-api/buffer.po index afff2202..3c640686 100644 --- a/c-api/buffer.po +++ b/c-api/buffer.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/bytearray.po b/c-api/bytearray.po index a7da13ab..cb13d06a 100644 --- a/c-api/bytearray.po +++ b/c-api/bytearray.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/bytes.po b/c-api/bytes.po index de123467..d5cc4e77 100644 --- a/c-api/bytes.po +++ b/c-api/bytes.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/call.po b/c-api/call.po index 5395183f..f254d939 100644 --- a/c-api/call.po +++ b/c-api/call.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/capsule.po b/c-api/capsule.po index fc34abcc..77ad2c98 100644 --- a/c-api/capsule.po +++ b/c-api/capsule.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/cell.po b/c-api/cell.po index 6e78c28a..ae7f396c 100644 --- a/c-api/cell.po +++ b/c-api/cell.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/code.po b/c-api/code.po index 371ad6b6..e0c1345e 100644 --- a/c-api/code.po +++ b/c-api/code.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -212,7 +212,7 @@ msgstr "" #: c-api/code.rst:184 msgid "" "If *event* is ``PY_CODE_EVENT_CREATE``, then the callback is invoked after " -"`co` has been fully initialized. Otherwise, the callback is invoked before " +"*co* has been fully initialized. Otherwise, the callback is invoked before " "the destruction of *co* takes place, so the prior state of *co* can be " "inspected." msgstr "" diff --git a/c-api/codec.po b/c-api/codec.po index 92a77e69..19ebd7ac 100644 --- a/c-api/codec.po +++ b/c-api/codec.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/complex.po b/c-api/complex.po index 1429500c..219d710f 100644 --- a/c-api/complex.po +++ b/c-api/complex.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/concrete.po b/c-api/concrete.po index 53b98d5b..ecd69d68 100644 --- a/c-api/concrete.po +++ b/c-api/concrete.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/contextvars.po b/c-api/contextvars.po index 09b565eb..9de5127c 100644 --- a/c-api/contextvars.po +++ b/c-api/contextvars.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/conversion.po b/c-api/conversion.po index 8cd8b665..f23adbb6 100644 --- a/c-api/conversion.po +++ b/c-api/conversion.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/coro.po b/c-api/coro.po index f4259fd3..3117f8c6 100644 --- a/c-api/coro.po +++ b/c-api/coro.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/datetime.po b/c-api/datetime.po index 8f4cbef6..f03f03af 100644 --- a/c-api/datetime.po +++ b/c-api/datetime.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/descriptor.po b/c-api/descriptor.po index 4abc91f6..662169b0 100644 --- a/c-api/descriptor.po +++ b/c-api/descriptor.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/dict.po b/c-api/dict.po index 39915eb3..2635fbd3 100644 --- a/c-api/dict.po +++ b/c-api/dict.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/exceptions.po b/c-api/exceptions.po index 5e8aa57f..ecd12141 100644 --- a/c-api/exceptions.po +++ b/c-api/exceptions.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -1050,456 +1050,464 @@ msgid "" "all the variables:" msgstr "" -#: c-api/exceptions.rst:1175 c-api/exceptions.rst:1220 +#: c-api/exceptions.rst:1181 c-api/exceptions.rst:1227 msgid "C Name" msgstr "" -#: c-api/exceptions.rst:1220 +#: c-api/exceptions.rst:1227 msgid "Python Name" msgstr "" -#: c-api/exceptions.rst:1175 c-api/exceptions.rst:1220 +#: c-api/exceptions.rst:1181 c-api/exceptions.rst:1227 msgid "Notes" msgstr "" -#: c-api/exceptions.rst:1042 +#: c-api/exceptions.rst:1043 msgid ":c:data:`PyExc_BaseException`" msgstr "" -#: c-api/exceptions.rst:1042 +#: c-api/exceptions.rst:1043 msgid ":exc:`BaseException`" msgstr "" -#: c-api/exceptions.rst:1044 c-api/exceptions.rst:1092 -#: c-api/exceptions.rst:1104 +#: c-api/exceptions.rst:1045 c-api/exceptions.rst:1049 +#: c-api/exceptions.rst:1107 msgid "[1]_" msgstr "" -#: c-api/exceptions.rst:1044 +#: c-api/exceptions.rst:1045 +msgid ":c:data:`PyExc_BaseExceptionGroup`" +msgstr "" + +#: c-api/exceptions.rst:1045 +msgid ":exc:`BaseExceptionGroup`" +msgstr "" + +#: c-api/exceptions.rst:1047 msgid ":c:data:`PyExc_Exception`" msgstr "" -#: c-api/exceptions.rst:1044 +#: c-api/exceptions.rst:1047 msgid ":exc:`Exception`" msgstr "" -#: c-api/exceptions.rst:1046 +#: c-api/exceptions.rst:1049 msgid ":c:data:`PyExc_ArithmeticError`" msgstr "" -#: c-api/exceptions.rst:1046 +#: c-api/exceptions.rst:1049 msgid ":exc:`ArithmeticError`" msgstr "" -#: c-api/exceptions.rst:1048 +#: c-api/exceptions.rst:1051 msgid ":c:data:`PyExc_AssertionError`" msgstr "" -#: c-api/exceptions.rst:1048 +#: c-api/exceptions.rst:1051 msgid ":exc:`AssertionError`" msgstr "" -#: c-api/exceptions.rst:1050 +#: c-api/exceptions.rst:1053 msgid ":c:data:`PyExc_AttributeError`" msgstr "" -#: c-api/exceptions.rst:1050 +#: c-api/exceptions.rst:1053 msgid ":exc:`AttributeError`" msgstr "" -#: c-api/exceptions.rst:1052 +#: c-api/exceptions.rst:1055 msgid ":c:data:`PyExc_BlockingIOError`" msgstr "" -#: c-api/exceptions.rst:1052 +#: c-api/exceptions.rst:1055 msgid ":exc:`BlockingIOError`" msgstr "" -#: c-api/exceptions.rst:1054 +#: c-api/exceptions.rst:1057 msgid ":c:data:`PyExc_BrokenPipeError`" msgstr "" -#: c-api/exceptions.rst:1054 +#: c-api/exceptions.rst:1057 msgid ":exc:`BrokenPipeError`" msgstr "" -#: c-api/exceptions.rst:1056 +#: c-api/exceptions.rst:1059 msgid ":c:data:`PyExc_BufferError`" msgstr "" -#: c-api/exceptions.rst:1056 +#: c-api/exceptions.rst:1059 msgid ":exc:`BufferError`" msgstr "" -#: c-api/exceptions.rst:1058 +#: c-api/exceptions.rst:1061 msgid ":c:data:`PyExc_ChildProcessError`" msgstr "" -#: c-api/exceptions.rst:1058 +#: c-api/exceptions.rst:1061 msgid ":exc:`ChildProcessError`" msgstr "" -#: c-api/exceptions.rst:1060 +#: c-api/exceptions.rst:1063 msgid ":c:data:`PyExc_ConnectionAbortedError`" msgstr "" -#: c-api/exceptions.rst:1060 +#: c-api/exceptions.rst:1063 msgid ":exc:`ConnectionAbortedError`" msgstr "" -#: c-api/exceptions.rst:1062 +#: c-api/exceptions.rst:1065 msgid ":c:data:`PyExc_ConnectionError`" msgstr "" -#: c-api/exceptions.rst:1062 +#: c-api/exceptions.rst:1065 msgid ":exc:`ConnectionError`" msgstr "" -#: c-api/exceptions.rst:1064 +#: c-api/exceptions.rst:1067 msgid ":c:data:`PyExc_ConnectionRefusedError`" msgstr "" -#: c-api/exceptions.rst:1064 +#: c-api/exceptions.rst:1067 msgid ":exc:`ConnectionRefusedError`" msgstr "" -#: c-api/exceptions.rst:1066 +#: c-api/exceptions.rst:1069 msgid ":c:data:`PyExc_ConnectionResetError`" msgstr "" -#: c-api/exceptions.rst:1066 +#: c-api/exceptions.rst:1069 msgid ":exc:`ConnectionResetError`" msgstr "" -#: c-api/exceptions.rst:1068 +#: c-api/exceptions.rst:1071 msgid ":c:data:`PyExc_EOFError`" msgstr "" -#: c-api/exceptions.rst:1068 +#: c-api/exceptions.rst:1071 msgid ":exc:`EOFError`" msgstr "" -#: c-api/exceptions.rst:1070 +#: c-api/exceptions.rst:1073 msgid ":c:data:`PyExc_FileExistsError`" msgstr "" -#: c-api/exceptions.rst:1070 +#: c-api/exceptions.rst:1073 msgid ":exc:`FileExistsError`" msgstr "" -#: c-api/exceptions.rst:1072 +#: c-api/exceptions.rst:1075 msgid ":c:data:`PyExc_FileNotFoundError`" msgstr "" -#: c-api/exceptions.rst:1072 +#: c-api/exceptions.rst:1075 msgid ":exc:`FileNotFoundError`" msgstr "" -#: c-api/exceptions.rst:1074 +#: c-api/exceptions.rst:1077 msgid ":c:data:`PyExc_FloatingPointError`" msgstr "" -#: c-api/exceptions.rst:1074 +#: c-api/exceptions.rst:1077 msgid ":exc:`FloatingPointError`" msgstr "" -#: c-api/exceptions.rst:1076 +#: c-api/exceptions.rst:1079 msgid ":c:data:`PyExc_GeneratorExit`" msgstr "" -#: c-api/exceptions.rst:1076 +#: c-api/exceptions.rst:1079 msgid ":exc:`GeneratorExit`" msgstr "" -#: c-api/exceptions.rst:1078 +#: c-api/exceptions.rst:1081 msgid ":c:data:`PyExc_ImportError`" msgstr "" -#: c-api/exceptions.rst:1078 +#: c-api/exceptions.rst:1081 msgid ":exc:`ImportError`" msgstr "" -#: c-api/exceptions.rst:1080 +#: c-api/exceptions.rst:1083 msgid ":c:data:`PyExc_IndentationError`" msgstr "" -#: c-api/exceptions.rst:1080 +#: c-api/exceptions.rst:1083 msgid ":exc:`IndentationError`" msgstr "" -#: c-api/exceptions.rst:1082 +#: c-api/exceptions.rst:1085 msgid ":c:data:`PyExc_IndexError`" msgstr "" -#: c-api/exceptions.rst:1082 +#: c-api/exceptions.rst:1085 msgid ":exc:`IndexError`" msgstr "" -#: c-api/exceptions.rst:1084 +#: c-api/exceptions.rst:1087 msgid ":c:data:`PyExc_InterruptedError`" msgstr "" -#: c-api/exceptions.rst:1084 +#: c-api/exceptions.rst:1087 msgid ":exc:`InterruptedError`" msgstr "" -#: c-api/exceptions.rst:1086 +#: c-api/exceptions.rst:1089 msgid ":c:data:`PyExc_IsADirectoryError`" msgstr "" -#: c-api/exceptions.rst:1086 +#: c-api/exceptions.rst:1089 msgid ":exc:`IsADirectoryError`" msgstr "" -#: c-api/exceptions.rst:1088 +#: c-api/exceptions.rst:1091 msgid ":c:data:`PyExc_KeyError`" msgstr "" -#: c-api/exceptions.rst:1088 +#: c-api/exceptions.rst:1091 msgid ":exc:`KeyError`" msgstr "" -#: c-api/exceptions.rst:1090 +#: c-api/exceptions.rst:1093 msgid ":c:data:`PyExc_KeyboardInterrupt`" msgstr "" -#: c-api/exceptions.rst:1090 +#: c-api/exceptions.rst:1093 msgid ":exc:`KeyboardInterrupt`" msgstr "" -#: c-api/exceptions.rst:1092 +#: c-api/exceptions.rst:1095 msgid ":c:data:`PyExc_LookupError`" msgstr "" -#: c-api/exceptions.rst:1092 +#: c-api/exceptions.rst:1095 msgid ":exc:`LookupError`" msgstr "" -#: c-api/exceptions.rst:1094 +#: c-api/exceptions.rst:1097 msgid ":c:data:`PyExc_MemoryError`" msgstr "" -#: c-api/exceptions.rst:1094 +#: c-api/exceptions.rst:1097 msgid ":exc:`MemoryError`" msgstr "" -#: c-api/exceptions.rst:1096 +#: c-api/exceptions.rst:1099 msgid ":c:data:`PyExc_ModuleNotFoundError`" msgstr "" -#: c-api/exceptions.rst:1096 +#: c-api/exceptions.rst:1099 msgid ":exc:`ModuleNotFoundError`" msgstr "" -#: c-api/exceptions.rst:1098 +#: c-api/exceptions.rst:1101 msgid ":c:data:`PyExc_NameError`" msgstr "" -#: c-api/exceptions.rst:1098 +#: c-api/exceptions.rst:1101 msgid ":exc:`NameError`" msgstr "" -#: c-api/exceptions.rst:1100 +#: c-api/exceptions.rst:1103 msgid ":c:data:`PyExc_NotADirectoryError`" msgstr "" -#: c-api/exceptions.rst:1100 +#: c-api/exceptions.rst:1103 msgid ":exc:`NotADirectoryError`" msgstr "" -#: c-api/exceptions.rst:1102 +#: c-api/exceptions.rst:1105 msgid ":c:data:`PyExc_NotImplementedError`" msgstr "" -#: c-api/exceptions.rst:1102 +#: c-api/exceptions.rst:1105 msgid ":exc:`NotImplementedError`" msgstr "" -#: c-api/exceptions.rst:1104 +#: c-api/exceptions.rst:1107 msgid ":c:data:`PyExc_OSError`" msgstr "" -#: c-api/exceptions.rst:1104 +#: c-api/exceptions.rst:1107 msgid ":exc:`OSError`" msgstr "" -#: c-api/exceptions.rst:1106 +#: c-api/exceptions.rst:1109 msgid ":c:data:`PyExc_OverflowError`" msgstr "" -#: c-api/exceptions.rst:1106 +#: c-api/exceptions.rst:1109 msgid ":exc:`OverflowError`" msgstr "" -#: c-api/exceptions.rst:1108 +#: c-api/exceptions.rst:1111 msgid ":c:data:`PyExc_PermissionError`" msgstr "" -#: c-api/exceptions.rst:1108 +#: c-api/exceptions.rst:1111 msgid ":exc:`PermissionError`" msgstr "" -#: c-api/exceptions.rst:1110 +#: c-api/exceptions.rst:1113 msgid ":c:data:`PyExc_ProcessLookupError`" msgstr "" -#: c-api/exceptions.rst:1110 +#: c-api/exceptions.rst:1113 msgid ":exc:`ProcessLookupError`" msgstr "" -#: c-api/exceptions.rst:1112 +#: c-api/exceptions.rst:1115 msgid ":c:data:`PyExc_PythonFinalizationError`" msgstr "" -#: c-api/exceptions.rst:1112 +#: c-api/exceptions.rst:1115 msgid ":exc:`PythonFinalizationError`" msgstr "" -#: c-api/exceptions.rst:1114 +#: c-api/exceptions.rst:1117 msgid ":c:data:`PyExc_RecursionError`" msgstr "" -#: c-api/exceptions.rst:1114 +#: c-api/exceptions.rst:1117 msgid ":exc:`RecursionError`" msgstr "" -#: c-api/exceptions.rst:1116 +#: c-api/exceptions.rst:1119 msgid ":c:data:`PyExc_ReferenceError`" msgstr "" -#: c-api/exceptions.rst:1116 +#: c-api/exceptions.rst:1119 msgid ":exc:`ReferenceError`" msgstr "" -#: c-api/exceptions.rst:1118 +#: c-api/exceptions.rst:1121 msgid ":c:data:`PyExc_RuntimeError`" msgstr "" -#: c-api/exceptions.rst:1118 +#: c-api/exceptions.rst:1121 msgid ":exc:`RuntimeError`" msgstr "" -#: c-api/exceptions.rst:1120 +#: c-api/exceptions.rst:1123 msgid ":c:data:`PyExc_StopAsyncIteration`" msgstr "" -#: c-api/exceptions.rst:1120 +#: c-api/exceptions.rst:1123 msgid ":exc:`StopAsyncIteration`" msgstr "" -#: c-api/exceptions.rst:1122 +#: c-api/exceptions.rst:1125 msgid ":c:data:`PyExc_StopIteration`" msgstr "" -#: c-api/exceptions.rst:1122 +#: c-api/exceptions.rst:1125 msgid ":exc:`StopIteration`" msgstr "" -#: c-api/exceptions.rst:1124 +#: c-api/exceptions.rst:1127 msgid ":c:data:`PyExc_SyntaxError`" msgstr "" -#: c-api/exceptions.rst:1124 +#: c-api/exceptions.rst:1127 msgid ":exc:`SyntaxError`" msgstr "" -#: c-api/exceptions.rst:1126 +#: c-api/exceptions.rst:1129 msgid ":c:data:`PyExc_SystemError`" msgstr "" -#: c-api/exceptions.rst:1126 +#: c-api/exceptions.rst:1129 msgid ":exc:`SystemError`" msgstr "" -#: c-api/exceptions.rst:1128 +#: c-api/exceptions.rst:1131 msgid ":c:data:`PyExc_SystemExit`" msgstr "" -#: c-api/exceptions.rst:1128 +#: c-api/exceptions.rst:1131 msgid ":exc:`SystemExit`" msgstr "" -#: c-api/exceptions.rst:1130 +#: c-api/exceptions.rst:1133 msgid ":c:data:`PyExc_TabError`" msgstr "" -#: c-api/exceptions.rst:1130 +#: c-api/exceptions.rst:1133 msgid ":exc:`TabError`" msgstr "" -#: c-api/exceptions.rst:1132 +#: c-api/exceptions.rst:1135 msgid ":c:data:`PyExc_TimeoutError`" msgstr "" -#: c-api/exceptions.rst:1132 +#: c-api/exceptions.rst:1135 msgid ":exc:`TimeoutError`" msgstr "" -#: c-api/exceptions.rst:1134 +#: c-api/exceptions.rst:1137 msgid ":c:data:`PyExc_TypeError`" msgstr "" -#: c-api/exceptions.rst:1134 +#: c-api/exceptions.rst:1137 msgid ":exc:`TypeError`" msgstr "" -#: c-api/exceptions.rst:1136 +#: c-api/exceptions.rst:1139 msgid ":c:data:`PyExc_UnboundLocalError`" msgstr "" -#: c-api/exceptions.rst:1136 +#: c-api/exceptions.rst:1139 msgid ":exc:`UnboundLocalError`" msgstr "" -#: c-api/exceptions.rst:1138 +#: c-api/exceptions.rst:1141 msgid ":c:data:`PyExc_UnicodeDecodeError`" msgstr "" -#: c-api/exceptions.rst:1138 +#: c-api/exceptions.rst:1141 msgid ":exc:`UnicodeDecodeError`" msgstr "" -#: c-api/exceptions.rst:1140 +#: c-api/exceptions.rst:1143 msgid ":c:data:`PyExc_UnicodeEncodeError`" msgstr "" -#: c-api/exceptions.rst:1140 +#: c-api/exceptions.rst:1143 msgid ":exc:`UnicodeEncodeError`" msgstr "" -#: c-api/exceptions.rst:1142 +#: c-api/exceptions.rst:1145 msgid ":c:data:`PyExc_UnicodeError`" msgstr "" -#: c-api/exceptions.rst:1142 +#: c-api/exceptions.rst:1145 msgid ":exc:`UnicodeError`" msgstr "" -#: c-api/exceptions.rst:1144 +#: c-api/exceptions.rst:1147 msgid ":c:data:`PyExc_UnicodeTranslateError`" msgstr "" -#: c-api/exceptions.rst:1144 +#: c-api/exceptions.rst:1147 msgid ":exc:`UnicodeTranslateError`" msgstr "" -#: c-api/exceptions.rst:1146 +#: c-api/exceptions.rst:1149 msgid ":c:data:`PyExc_ValueError`" msgstr "" -#: c-api/exceptions.rst:1146 +#: c-api/exceptions.rst:1149 msgid ":exc:`ValueError`" msgstr "" -#: c-api/exceptions.rst:1148 +#: c-api/exceptions.rst:1151 msgid ":c:data:`PyExc_ZeroDivisionError`" msgstr "" -#: c-api/exceptions.rst:1148 +#: c-api/exceptions.rst:1151 msgid ":exc:`ZeroDivisionError`" msgstr "" -#: c-api/exceptions.rst:1151 +#: c-api/exceptions.rst:1154 msgid "" ":c:data:`PyExc_BlockingIOError`, :c:data:`PyExc_BrokenPipeError`, :c:data:" "`PyExc_ChildProcessError`, :c:data:`PyExc_ConnectionError`, :c:data:" @@ -1511,57 +1519,61 @@ msgid "" "`PyExc_TimeoutError` were introduced following :pep:`3151`." msgstr "" -#: c-api/exceptions.rst:1161 +#: c-api/exceptions.rst:1164 msgid ":c:data:`PyExc_StopAsyncIteration` and :c:data:`PyExc_RecursionError`." msgstr "" -#: c-api/exceptions.rst:1164 +#: c-api/exceptions.rst:1167 msgid ":c:data:`PyExc_ModuleNotFoundError`." msgstr "" -#: c-api/exceptions.rst:1167 +#: c-api/exceptions.rst:1170 +msgid ":c:data:`PyExc_BaseExceptionGroup`." +msgstr "" + +#: c-api/exceptions.rst:1173 msgid "These are compatibility aliases to :c:data:`PyExc_OSError`:" msgstr "" -#: c-api/exceptions.rst:1177 +#: c-api/exceptions.rst:1183 msgid ":c:data:`!PyExc_EnvironmentError`" msgstr "" -#: c-api/exceptions.rst:1179 +#: c-api/exceptions.rst:1185 msgid ":c:data:`!PyExc_IOError`" msgstr "" -#: c-api/exceptions.rst:1181 +#: c-api/exceptions.rst:1187 msgid ":c:data:`!PyExc_WindowsError`" msgstr "" -#: c-api/exceptions.rst:1181 +#: c-api/exceptions.rst:1187 msgid "[2]_" msgstr "" -#: c-api/exceptions.rst:1184 +#: c-api/exceptions.rst:1190 msgid "These aliases used to be separate exception types." msgstr "" -#: c-api/exceptions.rst:1248 +#: c-api/exceptions.rst:1260 msgid "Notes:" msgstr "" -#: c-api/exceptions.rst:1190 +#: c-api/exceptions.rst:1196 msgid "This is a base class for other standard exceptions." msgstr "" -#: c-api/exceptions.rst:1193 +#: c-api/exceptions.rst:1199 msgid "" "Only defined on Windows; protect code that uses this by testing that the " "preprocessor macro ``MS_WINDOWS`` is defined." msgstr "" -#: c-api/exceptions.rst:1199 +#: c-api/exceptions.rst:1205 msgid "Standard Warning Categories" msgstr "" -#: c-api/exceptions.rst:1201 +#: c-api/exceptions.rst:1207 msgid "" "All standard Python warning categories are available as global variables " "whose names are ``PyExc_`` followed by the Python exception name. These have " @@ -1569,103 +1581,115 @@ msgid "" "here are all the variables:" msgstr "" -#: c-api/exceptions.rst:1222 +#: c-api/exceptions.rst:1229 msgid ":c:data:`PyExc_Warning`" msgstr "" -#: c-api/exceptions.rst:1222 +#: c-api/exceptions.rst:1229 msgid ":exc:`Warning`" msgstr "" -#: c-api/exceptions.rst:1222 +#: c-api/exceptions.rst:1229 msgid "[3]_" msgstr "" -#: c-api/exceptions.rst:1224 +#: c-api/exceptions.rst:1231 msgid ":c:data:`PyExc_BytesWarning`" msgstr "" -#: c-api/exceptions.rst:1224 +#: c-api/exceptions.rst:1231 msgid ":exc:`BytesWarning`" msgstr "" -#: c-api/exceptions.rst:1226 +#: c-api/exceptions.rst:1233 msgid ":c:data:`PyExc_DeprecationWarning`" msgstr "" -#: c-api/exceptions.rst:1226 +#: c-api/exceptions.rst:1233 msgid ":exc:`DeprecationWarning`" msgstr "" -#: c-api/exceptions.rst:1228 +#: c-api/exceptions.rst:1235 +msgid ":c:data:`PyExc_EncodingWarning`" +msgstr "" + +#: c-api/exceptions.rst:1235 +msgid ":exc:`EncodingWarning`" +msgstr "" + +#: c-api/exceptions.rst:1237 msgid ":c:data:`PyExc_FutureWarning`" msgstr "" -#: c-api/exceptions.rst:1228 +#: c-api/exceptions.rst:1237 msgid ":exc:`FutureWarning`" msgstr "" -#: c-api/exceptions.rst:1230 +#: c-api/exceptions.rst:1239 msgid ":c:data:`PyExc_ImportWarning`" msgstr "" -#: c-api/exceptions.rst:1230 +#: c-api/exceptions.rst:1239 msgid ":exc:`ImportWarning`" msgstr "" -#: c-api/exceptions.rst:1232 +#: c-api/exceptions.rst:1241 msgid ":c:data:`PyExc_PendingDeprecationWarning`" msgstr "" -#: c-api/exceptions.rst:1232 +#: c-api/exceptions.rst:1241 msgid ":exc:`PendingDeprecationWarning`" msgstr "" -#: c-api/exceptions.rst:1234 +#: c-api/exceptions.rst:1243 msgid ":c:data:`PyExc_ResourceWarning`" msgstr "" -#: c-api/exceptions.rst:1234 +#: c-api/exceptions.rst:1243 msgid ":exc:`ResourceWarning`" msgstr "" -#: c-api/exceptions.rst:1236 +#: c-api/exceptions.rst:1245 msgid ":c:data:`PyExc_RuntimeWarning`" msgstr "" -#: c-api/exceptions.rst:1236 +#: c-api/exceptions.rst:1245 msgid ":exc:`RuntimeWarning`" msgstr "" -#: c-api/exceptions.rst:1238 +#: c-api/exceptions.rst:1247 msgid ":c:data:`PyExc_SyntaxWarning`" msgstr "" -#: c-api/exceptions.rst:1238 +#: c-api/exceptions.rst:1247 msgid ":exc:`SyntaxWarning`" msgstr "" -#: c-api/exceptions.rst:1240 +#: c-api/exceptions.rst:1249 msgid ":c:data:`PyExc_UnicodeWarning`" msgstr "" -#: c-api/exceptions.rst:1240 +#: c-api/exceptions.rst:1249 msgid ":exc:`UnicodeWarning`" msgstr "" -#: c-api/exceptions.rst:1242 +#: c-api/exceptions.rst:1251 msgid ":c:data:`PyExc_UserWarning`" msgstr "" -#: c-api/exceptions.rst:1242 +#: c-api/exceptions.rst:1251 msgid ":exc:`UserWarning`" msgstr "" -#: c-api/exceptions.rst:1245 +#: c-api/exceptions.rst:1254 msgid ":c:data:`PyExc_ResourceWarning`." msgstr "" -#: c-api/exceptions.rst:1251 +#: c-api/exceptions.rst:1257 +msgid ":c:data:`PyExc_EncodingWarning`." +msgstr "" + +#: c-api/exceptions.rst:1263 msgid "This is a base class for other standard warning categories." msgstr "" @@ -1693,6 +1717,10 @@ msgstr "" msgid "PyExc_BaseException (C var)" msgstr "" +#: c-api/exceptions.rst:983 +msgid "PyExc_BaseExceptionGroup (C var)" +msgstr "" + #: c-api/exceptions.rst:983 msgid "PyExc_Exception (C var)" msgstr "" @@ -1905,58 +1933,62 @@ msgstr "" msgid "PyExc_ZeroDivisionError (C var)" msgstr "" -#: c-api/exceptions.rst:1169 +#: c-api/exceptions.rst:1175 msgid "PyExc_EnvironmentError (C var)" msgstr "" -#: c-api/exceptions.rst:1169 +#: c-api/exceptions.rst:1175 msgid "PyExc_IOError (C var)" msgstr "" -#: c-api/exceptions.rst:1169 +#: c-api/exceptions.rst:1175 msgid "PyExc_WindowsError (C var)" msgstr "" -#: c-api/exceptions.rst:1206 +#: c-api/exceptions.rst:1212 msgid "PyExc_Warning (C var)" msgstr "" -#: c-api/exceptions.rst:1206 +#: c-api/exceptions.rst:1212 msgid "PyExc_BytesWarning (C var)" msgstr "" -#: c-api/exceptions.rst:1206 +#: c-api/exceptions.rst:1212 msgid "PyExc_DeprecationWarning (C var)" msgstr "" -#: c-api/exceptions.rst:1206 +#: c-api/exceptions.rst:1212 +msgid "PyExc_EncodingWarning (C var)" +msgstr "" + +#: c-api/exceptions.rst:1212 msgid "PyExc_FutureWarning (C var)" msgstr "" -#: c-api/exceptions.rst:1206 +#: c-api/exceptions.rst:1212 msgid "PyExc_ImportWarning (C var)" msgstr "" -#: c-api/exceptions.rst:1206 +#: c-api/exceptions.rst:1212 msgid "PyExc_PendingDeprecationWarning (C var)" msgstr "" -#: c-api/exceptions.rst:1206 +#: c-api/exceptions.rst:1212 msgid "PyExc_ResourceWarning (C var)" msgstr "" -#: c-api/exceptions.rst:1206 +#: c-api/exceptions.rst:1212 msgid "PyExc_RuntimeWarning (C var)" msgstr "" -#: c-api/exceptions.rst:1206 +#: c-api/exceptions.rst:1212 msgid "PyExc_SyntaxWarning (C var)" msgstr "" -#: c-api/exceptions.rst:1206 +#: c-api/exceptions.rst:1212 msgid "PyExc_UnicodeWarning (C var)" msgstr "" -#: c-api/exceptions.rst:1206 +#: c-api/exceptions.rst:1212 msgid "PyExc_UserWarning (C var)" msgstr "" diff --git a/c-api/extension-modules.po b/c-api/extension-modules.po new file mode 100644 index 00000000..5e36e113 --- /dev/null +++ b/c-api/extension-modules.po @@ -0,0 +1,354 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2001 Python Software Foundation +# This file is distributed under the same license as the Python package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Python 3.14\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: c-api/extension-modules.rst:6 +msgid "Defining extension modules" +msgstr "" + +#: c-api/extension-modules.rst:8 +msgid "" +"A C extension for CPython is a shared library (for example, a ``.so`` file " +"on Linux, ``.pyd`` DLL on Windows), which is loadable into the Python " +"process (for example, it is compiled with compatible compiler settings), and " +"which exports an :ref:`initialization function `." +msgstr "" + +#: c-api/extension-modules.rst:13 +msgid "" +"To be importable by default (that is, by :py:class:`importlib.machinery." +"ExtensionFileLoader`), the shared library must be available on :py:attr:`sys." +"path`, and must be named after the module name plus an extension listed in :" +"py:attr:`importlib.machinery.EXTENSION_SUFFIXES`." +msgstr "" + +#: c-api/extension-modules.rst:21 +msgid "" +"Building, packaging and distributing extension modules is best done with " +"third-party tools, and is out of scope of this document. One suitable tool " +"is Setuptools, whose documentation can be found at https://setuptools.pypa." +"io/en/latest/setuptools.html." +msgstr "" + +#: c-api/extension-modules.rst:26 +msgid "" +"Normally, the initialization function returns a module definition " +"initialized using :c:func:`PyModuleDef_Init`. This allows splitting the " +"creation process into several phases:" +msgstr "" + +#: c-api/extension-modules.rst:30 +msgid "" +"Before any substantial code is executed, Python can determine which " +"capabilities the module supports, and it can adjust the environment or " +"refuse loading an incompatible extension." +msgstr "" + +#: c-api/extension-modules.rst:33 +msgid "" +"By default, Python itself creates the module object -- that is, it does the " +"equivalent of :py:meth:`object.__new__` for classes. It also sets initial " +"attributes like :attr:`~module.__package__` and :attr:`~module.__loader__`." +msgstr "" + +#: c-api/extension-modules.rst:37 +msgid "" +"Afterwards, the module object is initialized using extension-specific code " +"-- the equivalent of :py:meth:`~object.__init__` on classes." +msgstr "" + +#: c-api/extension-modules.rst:40 +msgid "" +"This is called *multi-phase initialization* to distinguish it from the " +"legacy (but still supported) *single-phase initialization* scheme, where the " +"initialization function returns a fully constructed module. See the :ref:" +"`single-phase-initialization section below ` " +"for details." +msgstr "" + +#: c-api/extension-modules.rst:48 +msgid "Added support for multi-phase initialization (:pep:`489`)." +msgstr "" + +#: c-api/extension-modules.rst:52 +msgid "Multiple module instances" +msgstr "" + +#: c-api/extension-modules.rst:54 +msgid "" +"By default, extension modules are not singletons. For example, if the :py:" +"attr:`sys.modules` entry is removed and the module is re-imported, a new " +"module object is created, and typically populated with fresh method and type " +"objects. The old module is subject to normal garbage collection. This " +"mirrors the behavior of pure-Python modules." +msgstr "" + +#: c-api/extension-modules.rst:61 +msgid "" +"Additional module instances may be created in :ref:`sub-interpreters ` or after Python runtime reinitialization (:c:func:" +"`Py_Finalize` and :c:func:`Py_Initialize`). In these cases, sharing Python " +"objects between module instances would likely cause crashes or undefined " +"behavior." +msgstr "" + +#: c-api/extension-modules.rst:68 +msgid "" +"To avoid such issues, each instance of an extension module should be " +"*isolated*: changes to one instance should not implicitly affect the others, " +"and all state owned by the module, including references to Python objects, " +"should be specific to a particular module instance. See :ref:`isolating-" +"extensions-howto` for more details and a practical guide." +msgstr "" + +#: c-api/extension-modules.rst:74 +msgid "" +"A simpler way to avoid these issues is :ref:`raising an error on repeated " +"initialization `." +msgstr "" + +#: c-api/extension-modules.rst:77 +msgid "" +"All modules are expected to support :ref:`sub-interpreters `, or otherwise explicitly signal a lack of support. This is usually " +"achieved by isolation or blocking repeated initialization, as above. A " +"module may also be limited to the main interpreter using the :c:data:" +"`Py_mod_multiple_interpreters` slot." +msgstr "" + +#: c-api/extension-modules.rst:89 +msgid "Initialization function" +msgstr "" + +#: c-api/extension-modules.rst:91 +msgid "" +"The initialization function defined by an extension module has the following " +"signature:" +msgstr "" + +#: c-api/extension-modules.rst:96 +msgid "" +"Its name should be :samp:`PyInit_{}`, with ```` replaced by the " +"name of the module." +msgstr "" + +#: c-api/extension-modules.rst:99 +msgid "" +"For modules with ASCII-only names, the function must instead be named :samp:" +"`PyInit_{}`, with ```` replaced by the name of the module. When " +"using :ref:`multi-phase-initialization`, non-ASCII module names are allowed. " +"In this case, the initialization function name is :samp:`PyInitU_{}`, " +"with ```` encoded using Python's *punycode* encoding with hyphens " +"replaced by underscores. In Python:" +msgstr "" + +#: c-api/extension-modules.rst:106 +msgid "" +"def initfunc_name(name):\n" +" try:\n" +" suffix = b'_' + name.encode('ascii')\n" +" except UnicodeEncodeError:\n" +" suffix = b'U_' + name.encode('punycode').replace(b'-', b'_')\n" +" return b'PyInit' + suffix" +msgstr "" + +#: c-api/extension-modules.rst:115 +msgid "" +"It is recommended to define the initialization function using a helper macro:" +msgstr "" + +#: c-api/extension-modules.rst:119 +msgid "Declare an extension module initialization function. This macro:" +msgstr "" + +#: c-api/extension-modules.rst:122 +msgid "specifies the :c:expr:`PyObject*` return type," +msgstr "" + +#: c-api/extension-modules.rst:123 +msgid "adds any special linkage declarations required by the platform, and" +msgstr "" + +#: c-api/extension-modules.rst:124 +msgid "for C++, declares the function as ``extern \"C\"``." +msgstr "" + +#: c-api/extension-modules.rst:126 +msgid "For example, a module called ``spam`` would be defined like this::" +msgstr "" + +#: c-api/extension-modules.rst:128 +msgid "" +"static struct PyModuleDef spam_module = {\n" +" .m_base = PyModuleDef_HEAD_INIT,\n" +" .m_name = \"spam\",\n" +" ...\n" +"};\n" +"\n" +"PyMODINIT_FUNC\n" +"PyInit_spam(void)\n" +"{\n" +" return PyModuleDef_Init(&spam_module);\n" +"}" +msgstr "" + +#: c-api/extension-modules.rst:140 +msgid "" +"It is possible to export multiple modules from a single shared library by " +"defining multiple initialization functions. However, importing them requires " +"using symbolic links or a custom importer, because by default only the " +"function corresponding to the filename is found. See the `Multiple modules " +"in one library `__ section in :pep:`489` for details." +msgstr "" + +#: c-api/extension-modules.rst:147 +msgid "" +"The initialization function is typically the only non-\\ ``static`` item " +"defined in the module's C source." +msgstr "" + +#: c-api/extension-modules.rst:154 +msgid "Multi-phase initialization" +msgstr "" + +#: c-api/extension-modules.rst:156 +msgid "" +"Normally, the :ref:`initialization function ` " +"(``PyInit_modulename``) returns a :c:type:`PyModuleDef` instance with non-" +"``NULL`` :c:member:`~PyModuleDef.m_slots`. Before it is returned, the " +"``PyModuleDef`` instance must be initialized using the following function:" +msgstr "" + +#: c-api/extension-modules.rst:165 +msgid "" +"Ensure a module definition is a properly initialized Python object that " +"correctly reports its type and a reference count." +msgstr "" + +#: c-api/extension-modules.rst:168 +msgid "Return *def* cast to ``PyObject*``, or ``NULL`` if an error occurred." +msgstr "" + +#: c-api/extension-modules.rst:170 +msgid "" +"Calling this function is required for :ref:`multi-phase-initialization`. It " +"should not be used in other contexts." +msgstr "" + +#: c-api/extension-modules.rst:173 +msgid "" +"Note that Python assumes that ``PyModuleDef`` structures are statically " +"allocated. This function may return either a new reference or a borrowed " +"one; this reference must not be released." +msgstr "" + +#: c-api/extension-modules.rst:184 +msgid "Legacy single-phase initialization" +msgstr "" + +#: c-api/extension-modules.rst:187 +msgid "" +"Single-phase initialization is a legacy mechanism to initialize extension " +"modules, with known drawbacks and design flaws. Extension module authors are " +"encouraged to use multi-phase initialization instead." +msgstr "" + +#: c-api/extension-modules.rst:191 +msgid "" +"In single-phase initialization, the :ref:`initialization function ` (``PyInit_modulename``) should create, populate and return a " +"module object. This is typically done using :c:func:`PyModule_Create` and " +"functions like :c:func:`PyModule_AddObjectRef`." +msgstr "" + +#: c-api/extension-modules.rst:197 +msgid "" +"Single-phase initialization differs from the :ref:`default ` in the following ways:" +msgstr "" + +#: c-api/extension-modules.rst:200 +msgid "Single-phase modules are, or rather *contain*, “singletons”." +msgstr "" + +#: c-api/extension-modules.rst:202 +msgid "" +"When the module is first initialized, Python saves the contents of the " +"module's ``__dict__`` (that is, typically, the module's functions and types)." +msgstr "" + +#: c-api/extension-modules.rst:206 +msgid "" +"For subsequent imports, Python does not call the initialization function " +"again. Instead, it creates a new module object with a new ``__dict__``, and " +"copies the saved contents to it. For example, given a single-phase module " +"``_testsinglephase`` [#testsinglephase]_ that defines a function ``sum`` and " +"an exception class ``error``:" +msgstr "" + +#: c-api/extension-modules.rst:214 +msgid "" +">>> import sys\n" +">>> import _testsinglephase as one\n" +">>> del sys.modules['_testsinglephase']\n" +">>> import _testsinglephase as two\n" +">>> one is two\n" +"False\n" +">>> one.__dict__ is two.__dict__\n" +"False\n" +">>> one.sum is two.sum\n" +"True\n" +">>> one.error is two.error\n" +"True" +msgstr "" + +#: c-api/extension-modules.rst:229 +msgid "" +"The exact behavior should be considered a CPython implementation detail." +msgstr "" + +#: c-api/extension-modules.rst:231 +msgid "" +"To work around the fact that ``PyInit_modulename`` does not take a *spec* " +"argument, some state of the import machinery is saved and applied to the " +"first suitable module created during the ``PyInit_modulename`` call. " +"Specifically, when a sub-module is imported, this mechanism prepends the " +"parent package name to the name of the module." +msgstr "" + +#: c-api/extension-modules.rst:237 +msgid "" +"A single-phase ``PyInit_modulename`` function should create “its” module " +"object as soon as possible, before any other module objects can be created." +msgstr "" + +#: c-api/extension-modules.rst:240 +msgid "Non-ASCII module names (``PyInitU_modulename``) are not supported." +msgstr "" + +#: c-api/extension-modules.rst:242 +msgid "" +"Single-phase modules support module lookup functions like :c:func:" +"`PyState_FindModule`." +msgstr "" + +#: c-api/extension-modules.rst:245 +msgid "" +"``_testsinglephase`` is an internal module used \\ in CPython's self-test " +"suite; your installation may or may not \\ include it." +msgstr "" diff --git a/c-api/file.po b/c-api/file.po index dc0aec2b..92c99e61 100644 --- a/c-api/file.po +++ b/c-api/file.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/float.po b/c-api/float.po index 133d6b75..4b63ec4c 100644 --- a/c-api/float.po +++ b/c-api/float.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/frame.po b/c-api/frame.po index 35718c3f..0f68bb6f 100644 --- a/c-api/frame.po +++ b/c-api/frame.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/function.po b/c-api/function.po index 8b3780cc..5478479f 100644 --- a/c-api/function.po +++ b/c-api/function.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -199,7 +199,7 @@ msgstr "" #: c-api/function.rst:171 msgid "" "If *event* is ``PyFunction_EVENT_CREATE``, then the callback is invoked " -"after `func` has been fully initialized. Otherwise, the callback is invoked " +"after *func* has been fully initialized. Otherwise, the callback is invoked " "before the modification to *func* takes place, so the prior state of *func* " "can be inspected. The runtime is permitted to optimize away the creation of " "function objects when possible. In such cases no event will be emitted. " diff --git a/c-api/gcsupport.po b/c-api/gcsupport.po index f1aceada..dd6b56f8 100644 --- a/c-api/gcsupport.po +++ b/c-api/gcsupport.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -108,13 +108,52 @@ msgid "" "macro:`Py_TPFLAGS_HAVE_GC` flag set." msgstr "" -#: c-api/gcsupport.rst:62 +#: c-api/gcsupport.rst:84 +msgid "" +"Do not call this directly to allocate memory for an object; call the type's :" +"c:member:`~PyTypeObject.tp_alloc` slot instead." +msgstr "" + +#: c-api/gcsupport.rst:87 +msgid "" +"When populating a type's :c:member:`~PyTypeObject.tp_alloc` slot, :c:func:" +"`PyType_GenericAlloc` is preferred over a custom function that simply calls " +"this macro." +msgstr "" + +#: c-api/gcsupport.rst:91 +msgid "" +"Memory allocated by this macro must be freed with :c:func:`PyObject_GC_Del` " +"(usually called via the object's :c:member:`~PyTypeObject.tp_free` slot)." +msgstr "" + +#: c-api/gcsupport.rst:97 +msgid ":c:func:`PyObject_GC_Del`" +msgstr "" + +#: c-api/gcsupport.rst:74 +msgid ":c:macro:`PyObject_New`" +msgstr "" + +#: c-api/gcsupport.rst:99 c-api/gcsupport.rst:193 +msgid ":c:func:`PyType_GenericAlloc`" +msgstr "" + +#: c-api/gcsupport.rst:100 +msgid ":c:member:`~PyTypeObject.tp_alloc`" +msgstr "" + +#: c-api/gcsupport.rst:81 msgid "" "Analogous to :c:macro:`PyObject_NewVar` but for container objects with the :" "c:macro:`Py_TPFLAGS_HAVE_GC` flag set." msgstr "" -#: c-api/gcsupport.rst:67 +#: c-api/gcsupport.rst:98 +msgid ":c:macro:`PyObject_NewVar`" +msgstr "" + +#: c-api/gcsupport.rst:105 msgid "" "Analogous to :c:macro:`PyObject_GC_New` but allocates *extra_size* bytes at " "the end of the object (at offset :c:member:`~PyTypeObject.tp_basicsize`). " @@ -122,13 +161,20 @@ msgid "" "object header `." msgstr "" -#: c-api/gcsupport.rst:73 +#: c-api/gcsupport.rst:111 msgid "" "The extra data will be deallocated with the object, but otherwise it is not " "managed by Python." msgstr "" -#: c-api/gcsupport.rst:77 +#: c-api/gcsupport.rst:114 +msgid "" +"Memory allocated by this function must be freed with :c:func:" +"`PyObject_GC_Del` (usually called via the object's :c:member:`~PyTypeObject." +"tp_free` slot)." +msgstr "" + +#: c-api/gcsupport.rst:119 msgid "" "The function is marked as unstable because the final mechanism for reserving " "extra data after an instance is not yet decided. For allocating a variable " @@ -136,20 +182,20 @@ msgid "" "`~PyTypeObject.tp_itemsize` instead." msgstr "" -#: c-api/gcsupport.rst:88 +#: c-api/gcsupport.rst:130 msgid "" "Resize an object allocated by :c:macro:`PyObject_NewVar`. Returns the " "resized object of type ``TYPE*`` (refers to any C type) or ``NULL`` on " "failure." msgstr "" -#: c-api/gcsupport.rst:92 +#: c-api/gcsupport.rst:134 msgid "" "*op* must be of type :c:expr:`PyVarObject *` and must not be tracked by the " "collector yet. *newsize* must be of type :c:type:`Py_ssize_t`." msgstr "" -#: c-api/gcsupport.rst:99 +#: c-api/gcsupport.rst:141 msgid "" "Adds the object *op* to the set of container objects tracked by the " "collector. The collector can run at unexpected times so objects must be " @@ -158,45 +204,74 @@ msgid "" "usually near the end of the constructor." msgstr "" -#: c-api/gcsupport.rst:108 +#: c-api/gcsupport.rst:150 msgid "" "Returns non-zero if the object implements the garbage collector protocol, " "otherwise returns 0." msgstr "" -#: c-api/gcsupport.rst:111 +#: c-api/gcsupport.rst:153 msgid "" "The object cannot be tracked by the garbage collector if this function " "returns 0." msgstr "" -#: c-api/gcsupport.rst:116 +#: c-api/gcsupport.rst:158 msgid "" "Returns 1 if the object type of *op* implements the GC protocol and *op* is " "being currently tracked by the garbage collector and 0 otherwise." msgstr "" -#: c-api/gcsupport.rst:119 +#: c-api/gcsupport.rst:161 msgid "This is analogous to the Python function :func:`gc.is_tracked`." msgstr "" -#: c-api/gcsupport.rst:126 +#: c-api/gcsupport.rst:168 msgid "" "Returns 1 if the object type of *op* implements the GC protocol and *op* has " "been already finalized by the garbage collector and 0 otherwise." msgstr "" -#: c-api/gcsupport.rst:129 +#: c-api/gcsupport.rst:171 msgid "This is analogous to the Python function :func:`gc.is_finalized`." msgstr "" -#: c-api/gcsupport.rst:136 +#: c-api/gcsupport.rst:178 msgid "" "Releases memory allocated to an object using :c:macro:`PyObject_GC_New` or :" "c:macro:`PyObject_GC_NewVar`." msgstr "" -#: c-api/gcsupport.rst:142 +#: c-api/gcsupport.rst:181 +msgid "" +"Do not call this directly to free an object's memory; call the type's :c:" +"member:`~PyTypeObject.tp_free` slot instead." +msgstr "" + +#: c-api/gcsupport.rst:184 +msgid "" +"Do not use this for memory allocated by :c:macro:`PyObject_New`, :c:macro:" +"`PyObject_NewVar`, or related allocation functions; use :c:func:" +"`PyObject_Free` instead." +msgstr "" + +#: c-api/gcsupport.rst:190 +msgid ":c:func:`PyObject_Free` is the non-GC equivalent of this function." +msgstr "" + +#: c-api/gcsupport.rst:191 +msgid ":c:macro:`PyObject_GC_New`" +msgstr "" + +#: c-api/gcsupport.rst:192 +msgid ":c:macro:`PyObject_GC_NewVar`" +msgstr "" + +#: c-api/gcsupport.rst:194 +msgid ":c:member:`~PyTypeObject.tp_free`" +msgstr "" + +#: c-api/gcsupport.rst:199 msgid "" "Remove the object *op* from the set of container objects tracked by the " "collector. Note that :c:func:`PyObject_GC_Track` can be called again on " @@ -206,19 +281,19 @@ msgid "" "handler become invalid." msgstr "" -#: c-api/gcsupport.rst:151 +#: c-api/gcsupport.rst:208 msgid "" "The :c:func:`!_PyObject_GC_TRACK` and :c:func:`!_PyObject_GC_UNTRACK` macros " "have been removed from the public C API." msgstr "" -#: c-api/gcsupport.rst:154 +#: c-api/gcsupport.rst:211 msgid "" "The :c:member:`~PyTypeObject.tp_traverse` handler accepts a function " "parameter of this type:" msgstr "" -#: c-api/gcsupport.rst:159 +#: c-api/gcsupport.rst:216 msgid "" "Type of the visitor function passed to the :c:member:`~PyTypeObject." "tp_traverse` handler. The function should be called with an object to " @@ -228,13 +303,13 @@ msgid "" "users will need to write their own visitor functions." msgstr "" -#: c-api/gcsupport.rst:166 +#: c-api/gcsupport.rst:223 msgid "" "The :c:member:`~PyTypeObject.tp_traverse` handler must have the following " "type:" msgstr "" -#: c-api/gcsupport.rst:171 +#: c-api/gcsupport.rst:228 msgid "" "Traversal function for a container object. Implementations must call the " "*visit* function for each object directly contained by *self*, with the " @@ -244,7 +319,7 @@ msgid "" "returned immediately." msgstr "" -#: c-api/gcsupport.rst:178 +#: c-api/gcsupport.rst:235 msgid "" "To simplify writing :c:member:`~PyTypeObject.tp_traverse` handlers, a :c:" "func:`Py_VISIT` macro is provided. In order to use this macro, the :c:" @@ -252,14 +327,15 @@ msgid "" "exactly *visit* and *arg*:" msgstr "" -#: c-api/gcsupport.rst:185 +#: c-api/gcsupport.rst:242 msgid "" -"If *o* is not ``NULL``, call the *visit* callback, with arguments *o* and " -"*arg*. If *visit* returns a non-zero value, then return it. Using this " -"macro, :c:member:`~PyTypeObject.tp_traverse` handlers look like::" +"If the :c:expr:`PyObject *` *o* is not ``NULL``, call the *visit* callback, " +"with arguments *o* and *arg*. If *visit* returns a non-zero value, then " +"return it. Using this macro, :c:member:`~PyTypeObject.tp_traverse` handlers " +"look like::" msgstr "" -#: c-api/gcsupport.rst:190 +#: c-api/gcsupport.rst:247 msgid "" "static int\n" "my_traverse(Noddy *self, visitproc visit, void *arg)\n" @@ -270,13 +346,13 @@ msgid "" "}" msgstr "" -#: c-api/gcsupport.rst:198 +#: c-api/gcsupport.rst:255 msgid "" "The :c:member:`~PyTypeObject.tp_clear` handler must be of the :c:type:" "`inquiry` type, or ``NULL`` if the object is immutable." msgstr "" -#: c-api/gcsupport.rst:204 +#: c-api/gcsupport.rst:261 msgid "" "Drop references that may have created reference cycles. Immutable objects " "do not have to define this method since they can never directly create " @@ -286,23 +362,23 @@ msgid "" "in a reference cycle." msgstr "" -#: c-api/gcsupport.rst:213 +#: c-api/gcsupport.rst:270 msgid "Controlling the Garbage Collector State" msgstr "" -#: c-api/gcsupport.rst:215 +#: c-api/gcsupport.rst:272 msgid "" "The C-API provides the following functions for controlling garbage " "collection runs." msgstr "" -#: c-api/gcsupport.rst:220 +#: c-api/gcsupport.rst:277 msgid "" "Perform a full garbage collection, if the garbage collector is enabled. " "(Note that :func:`gc.collect` runs it unconditionally.)" msgstr "" -#: c-api/gcsupport.rst:223 +#: c-api/gcsupport.rst:280 msgid "" "Returns the number of collected + unreachable objects which cannot be " "collected. If the garbage collector is disabled or already collecting, " @@ -310,54 +386,54 @@ msgid "" "data:`sys.unraisablehook`. This function does not raise exceptions." msgstr "" -#: c-api/gcsupport.rst:233 +#: c-api/gcsupport.rst:290 msgid "" "Enable the garbage collector: similar to :func:`gc.enable`. Returns the " "previous state, 0 for disabled and 1 for enabled." msgstr "" -#: c-api/gcsupport.rst:241 +#: c-api/gcsupport.rst:298 msgid "" "Disable the garbage collector: similar to :func:`gc.disable`. Returns the " "previous state, 0 for disabled and 1 for enabled." msgstr "" -#: c-api/gcsupport.rst:249 +#: c-api/gcsupport.rst:306 msgid "" "Query the state of the garbage collector: similar to :func:`gc.isenabled`. " "Returns the current state, 0 for disabled and 1 for enabled." msgstr "" -#: c-api/gcsupport.rst:256 +#: c-api/gcsupport.rst:313 msgid "Querying Garbage Collector State" msgstr "" -#: c-api/gcsupport.rst:258 +#: c-api/gcsupport.rst:315 msgid "" "The C-API provides the following interface for querying information about " "the garbage collector." msgstr "" -#: c-api/gcsupport.rst:263 +#: c-api/gcsupport.rst:320 msgid "" "Run supplied *callback* on all live GC-capable objects. *arg* is passed " "through to all invocations of *callback*." msgstr "" -#: c-api/gcsupport.rst:267 +#: c-api/gcsupport.rst:324 msgid "" "If new objects are (de)allocated by the callback it is undefined if they " "will be visited." msgstr "" -#: c-api/gcsupport.rst:270 +#: c-api/gcsupport.rst:327 msgid "" "Garbage collection is disabled during operation. Explicitly running a " "collection in the callback may lead to undefined behaviour e.g. visiting the " "same objects multiple times or not at all." msgstr "" -#: c-api/gcsupport.rst:278 +#: c-api/gcsupport.rst:335 msgid "" "Type of the visitor function to be passed to :c:func:" "`PyUnstable_GC_VisitObjects`. *arg* is the same as the *arg* passed to " diff --git a/c-api/gen.po b/c-api/gen.po index ffc0d050..2c27a415 100644 --- a/c-api/gen.po +++ b/c-api/gen.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/hash.po b/c-api/hash.po index e35a6e4a..5b3cc691 100644 --- a/c-api/hash.po +++ b/c-api/hash.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/import.po b/c-api/import.po index 9c2172fe..3cb25b4e 100644 --- a/c-api/import.po +++ b/c-api/import.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/index.po b/c-api/index.po index 16882823..1cfed0a0 100644 --- a/c-api/index.po +++ b/c-api/index.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/init.po b/c-api/init.po index f15843c2..2b5ba9b9 100644 --- a/c-api/init.po +++ b/c-api/init.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -717,29 +717,18 @@ msgstr "" #: c-api/init.rst:501 msgid "" -"The return value will be ``0`` if the interpreter exits normally (i.e., " -"without an exception), ``1`` if the interpreter exits due to an exception, " -"or ``2`` if the argument list does not represent a valid Python command line." +"The return value is ``2`` if the argument list does not represent a valid " +"Python command line, and otherwise the same as :c:func:`Py_RunMain`." msgstr "" -#: c-api/init.rst:506 -msgid "" -"Note that if an otherwise unhandled :exc:`SystemExit` is raised, this " -"function will not return ``1``, but exit the process, as long as " -"``Py_InspectFlag`` is not set. If ``Py_InspectFlag`` is set, execution will " -"drop into the interactive Python prompt, at which point a second otherwise " -"unhandled :exc:`SystemExit` will still exit the process, while any other " -"means of exiting will set the return value as described above." -msgstr "" - -#: c-api/init.rst:513 +#: c-api/init.rst:504 msgid "" "In terms of the CPython runtime configuration APIs documented in the :ref:" "`runtime configuration ` section (and without accounting for " "error handling), ``Py_Main`` is approximately equivalent to::" msgstr "" -#: c-api/init.rst:517 +#: c-api/init.rst:508 msgid "" "PyConfig config;\n" "PyConfig_InitPythonConfig(&config);\n" @@ -750,7 +739,7 @@ msgid "" "Py_RunMain();" msgstr "" -#: c-api/init.rst:525 +#: c-api/init.rst:516 msgid "" "In normal usage, an embedding application will call this function *instead* " "of calling :c:func:`Py_Initialize`, :c:func:`Py_InitializeEx` or :c:func:" @@ -763,11 +752,11 @@ msgid "" "first initialized)." msgstr "" -#: c-api/init.rst:538 +#: c-api/init.rst:529 msgid "Executes the main module in a fully configured CPython runtime." msgstr "" -#: c-api/init.rst:540 +#: c-api/init.rst:531 msgid "" "Executes the command (:c:member:`PyConfig.run_command`), the script (:c:" "member:`PyConfig.run_filename`) or the module (:c:member:`PyConfig." @@ -776,65 +765,60 @@ msgid "" "``__main__`` module's global namespace." msgstr "" -#: c-api/init.rst:546 +#: c-api/init.rst:537 msgid "" "If :c:member:`PyConfig.inspect` is not set (the default), the return value " "will be ``0`` if the interpreter exits normally (that is, without raising an " -"exception), or ``1`` if the interpreter exits due to an exception. If an " -"otherwise unhandled :exc:`SystemExit` is raised, the function will " -"immediately exit the process instead of returning ``1``." +"exception), the exit status of an unhandled :exc:`SystemExit`, or ``1`` for " +"any other unhandled exception." msgstr "" -#: c-api/init.rst:552 +#: c-api/init.rst:542 msgid "" "If :c:member:`PyConfig.inspect` is set (such as when the :option:`-i` option " "is used), rather than returning when the interpreter exits, execution will " "instead resume in an interactive Python prompt (REPL) using the ``__main__`` " "module's global namespace. If the interpreter exited with an exception, it " "is immediately raised in the REPL session. The function return value is then " -"determined by the way the *REPL session* terminates: returning ``0`` if the " -"session terminates without raising an unhandled exception, exiting " -"immediately for an unhandled :exc:`SystemExit`, and returning ``1`` for any " -"other unhandled exception." +"determined by the way the *REPL session* terminates: ``0``, ``1``, or the " +"status of a :exc:`SystemExit`, as specified above." msgstr "" -#: c-api/init.rst:562 +#: c-api/init.rst:550 msgid "" -"This function always finalizes the Python interpreter regardless of whether " -"it returns a value or immediately exits the process due to an unhandled :exc:" -"`SystemExit` exception." +"This function always finalizes the Python interpreter before it returns." msgstr "" -#: c-api/init.rst:566 +#: c-api/init.rst:552 msgid "" "See :ref:`Python Configuration ` for an example of a " "customized Python that always runs in isolated mode using :c:func:" "`Py_RunMain`." msgstr "" -#: c-api/init.rst:572 +#: c-api/init.rst:558 msgid "" "Register an :mod:`atexit` callback for the target interpreter *interp*. This " "is similar to :c:func:`Py_AtExit`, but takes an explicit interpreter and " "data pointer for the callback." msgstr "" -#: c-api/init.rst:576 +#: c-api/init.rst:562 msgid "There must be an :term:`attached thread state` for *interp*." msgstr "" -#: c-api/init.rst:581 +#: c-api/init.rst:567 msgid "Process-wide parameters" msgstr "" -#: c-api/init.rst:591 +#: c-api/init.rst:577 msgid "" "This API is kept for backward compatibility: setting :c:member:`PyConfig." "program_name` should be used instead, see :ref:`Python Initialization " "Configuration `." msgstr "" -#: c-api/init.rst:595 +#: c-api/init.rst:581 msgid "" "This function should be called before :c:func:`Py_Initialize` is called for " "the first time, if it is called at all. It tells the interpreter the value " @@ -848,36 +832,36 @@ msgid "" "this storage." msgstr "" -#: c-api/init.rst:854 c-api/init.rst:916 +#: c-api/init.rst:840 c-api/init.rst:902 msgid "" "Use :c:func:`Py_DecodeLocale` to decode a bytes string to get a :c:expr:" "`wchar_t*` string." msgstr "" -#: c-api/init.rst:614 +#: c-api/init.rst:600 msgid "" "Return the program name set with :c:member:`PyConfig.program_name`, or the " "default. The returned string points into static storage; the caller should " "not modify its value." msgstr "" -#: c-api/init.rst:641 c-api/init.rst:713 c-api/init.rst:928 +#: c-api/init.rst:627 c-api/init.rst:699 c-api/init.rst:914 msgid "" "This function should not be called before :c:func:`Py_Initialize`, otherwise " "it returns ``NULL``." msgstr "" -#: c-api/init.rst:644 c-api/init.rst:716 c-api/init.rst:931 +#: c-api/init.rst:630 c-api/init.rst:702 c-api/init.rst:917 msgid "It now returns ``NULL`` if called before :c:func:`Py_Initialize`." msgstr "" -#: c-api/init.rst:719 +#: c-api/init.rst:705 msgid "" "Use :c:func:`PyConfig_Get(\"executable\") ` (:data:`sys." "executable`) instead." msgstr "" -#: c-api/init.rst:631 +#: c-api/init.rst:617 msgid "" "Return the *prefix* for installed platform-independent files. This is " "derived through a number of complicated rules from the program name set " @@ -891,7 +875,7 @@ msgid "" "See also the next function." msgstr "" -#: c-api/init.rst:647 +#: c-api/init.rst:633 msgid "" "Use :c:func:`PyConfig_Get(\"base_prefix\") ` (:data:`sys." "base_prefix`) instead. Use :c:func:`PyConfig_Get(\"prefix\") ` " @@ -899,7 +883,7 @@ msgid "" "handled." msgstr "" -#: c-api/init.rst:656 +#: c-api/init.rst:642 msgid "" "Return the *exec-prefix* for installed platform-*dependent* files. This is " "derived through a number of complicated rules from the program name set " @@ -913,7 +897,7 @@ msgid "" "useful on Unix." msgstr "" -#: c-api/init.rst:667 +#: c-api/init.rst:653 msgid "" "Background: The exec-prefix differs from the prefix when platform dependent " "files (such as executables and shared libraries) are installed in a " @@ -922,7 +906,7 @@ msgid "" "independent may be installed in :file:`/usr/local`." msgstr "" -#: c-api/init.rst:673 +#: c-api/init.rst:659 msgid "" "Generally speaking, a platform is a combination of hardware and software " "families, e.g. Sparc machines running the Solaris 2.x operating system are " @@ -936,7 +920,7 @@ msgid "" "independent from the Python version by which they were compiled!)." msgstr "" -#: c-api/init.rst:684 +#: c-api/init.rst:670 msgid "" "System administrators will know how to configure the :program:`mount` or :" "program:`automount` programs to share :file:`/usr/local` between platforms " @@ -944,7 +928,7 @@ msgid "" "platform." msgstr "" -#: c-api/init.rst:695 +#: c-api/init.rst:681 msgid "" "Use :c:func:`PyConfig_Get(\"base_exec_prefix\") ` (:data:`sys." "base_exec_prefix`) instead. Use :c:func:`PyConfig_Get(\"exec_prefix\") " @@ -952,7 +936,7 @@ msgid "" "` need to be handled." msgstr "" -#: c-api/init.rst:707 +#: c-api/init.rst:693 msgid "" "Return the full program name of the Python executable; this is computed as " "a side-effect of deriving the default module search path from the program " @@ -961,7 +945,7 @@ msgid "" "available to Python code as ``sys.executable``." msgstr "" -#: c-api/init.rst:730 +#: c-api/init.rst:716 msgid "" "Return the default module search path; this is computed from the program " "name (set by :c:member:`PyConfig.program_name`) and some environment " @@ -974,23 +958,23 @@ msgid "" "for loading modules." msgstr "" -#: c-api/init.rst:748 +#: c-api/init.rst:734 msgid "" "Use :c:func:`PyConfig_Get(\"module_search_paths\") ` (:data:" "`sys.path`) instead." msgstr "" -#: c-api/init.rst:754 +#: c-api/init.rst:740 msgid "" "Return the version of this Python interpreter. This is a string that looks " "something like ::" msgstr "" -#: c-api/init.rst:757 +#: c-api/init.rst:743 msgid "\"3.0a5+ (py3k:63103M, May 12 2008, 00:53:55) \\n[GCC 4.2.3]\"" msgstr "" -#: c-api/init.rst:761 +#: c-api/init.rst:747 msgid "" "The first word (up to the first space character) is the current Python " "version; the first characters are the major and minor version separated by a " @@ -999,11 +983,11 @@ msgid "" "version`." msgstr "" -#: c-api/init.rst:766 +#: c-api/init.rst:752 msgid "See also the :c:var:`Py_Version` constant." msgstr "" -#: c-api/init.rst:773 +#: c-api/init.rst:759 msgid "" "Return the platform identifier for the current platform. On Unix, this is " "formed from the \"official\" name of the operating system, converted to " @@ -1014,50 +998,50 @@ msgid "" "available to Python code as ``sys.platform``." msgstr "" -#: c-api/init.rst:784 +#: c-api/init.rst:770 msgid "" "Return the official copyright string for the current Python version, for " "example" msgstr "" -#: c-api/init.rst:786 +#: c-api/init.rst:772 msgid "``'Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam'``" msgstr "" -#: c-api/init.rst:790 +#: c-api/init.rst:776 msgid "" "The returned string points into static storage; the caller should not modify " "its value. The value is available to Python code as ``sys.copyright``." msgstr "" -#: c-api/init.rst:796 +#: c-api/init.rst:782 msgid "" "Return an indication of the compiler used to build the current Python " "version, in square brackets, for example::" msgstr "" -#: c-api/init.rst:799 +#: c-api/init.rst:785 msgid "\"[GCC 2.7.2.2]\"" msgstr "" -#: c-api/init.rst:817 +#: c-api/init.rst:803 msgid "" "The returned string points into static storage; the caller should not modify " "its value. The value is available to Python code as part of the variable " "``sys.version``." msgstr "" -#: c-api/init.rst:810 +#: c-api/init.rst:796 msgid "" "Return information about the sequence number and build date and time of the " "current Python interpreter instance, for example ::" msgstr "" -#: c-api/init.rst:813 +#: c-api/init.rst:799 msgid "\"#67, Aug 1 1997, 22:34:28\"" msgstr "" -#: c-api/init.rst:829 +#: c-api/init.rst:815 msgid "" "This API is kept for backward compatibility: setting :c:member:`PyConfig." "argv`, :c:member:`PyConfig.parse_argv` and :c:member:`PyConfig.safe_path` " @@ -1065,7 +1049,7 @@ msgid "" "config>`." msgstr "" -#: c-api/init.rst:834 +#: c-api/init.rst:820 msgid "" "Set :data:`sys.argv` based on *argc* and *argv*. These parameters are " "similar to those passed to the program's :c:func:`main` function with the " @@ -1076,84 +1060,84 @@ msgid "" "fatal condition is signalled using :c:func:`Py_FatalError`." msgstr "" -#: c-api/init.rst:842 +#: c-api/init.rst:828 msgid "" "If *updatepath* is zero, this is all the function does. If *updatepath* is " "non-zero, the function also modifies :data:`sys.path` according to the " "following algorithm:" msgstr "" -#: c-api/init.rst:846 +#: c-api/init.rst:832 msgid "" "If the name of an existing script is passed in ``argv[0]``, the absolute " "path of the directory where the script is located is prepended to :data:`sys." "path`." msgstr "" -#: c-api/init.rst:849 +#: c-api/init.rst:835 msgid "" "Otherwise (that is, if *argc* is ``0`` or ``argv[0]`` doesn't point to an " "existing file name), an empty string is prepended to :data:`sys.path`, which " "is the same as prepending the current working directory (``\".\"``)." msgstr "" -#: c-api/init.rst:893 +#: c-api/init.rst:879 msgid "" "See also :c:member:`PyConfig.orig_argv` and :c:member:`PyConfig.argv` " "members of the :ref:`Python Initialization Configuration `." msgstr "" -#: c-api/init.rst:861 +#: c-api/init.rst:847 msgid "" "It is recommended that applications embedding the Python interpreter for " "purposes other than executing a single script pass ``0`` as *updatepath*, " "and update :data:`sys.path` themselves if desired. See :cve:`2008-5983`." msgstr "" -#: c-api/init.rst:866 +#: c-api/init.rst:852 msgid "" "On versions before 3.1.3, you can achieve the same effect by manually " "popping the first :data:`sys.path` element after having called :c:func:" "`PySys_SetArgv`, for example using::" msgstr "" -#: c-api/init.rst:870 +#: c-api/init.rst:856 msgid "PyRun_SimpleString(\"import sys; sys.path.pop(0)\\n\");" msgstr "" -#: c-api/init.rst:882 +#: c-api/init.rst:868 msgid "" "This API is kept for backward compatibility: setting :c:member:`PyConfig." "argv` and :c:member:`PyConfig.parse_argv` should be used instead, see :ref:" "`Python Initialization Configuration `." msgstr "" -#: c-api/init.rst:886 +#: c-api/init.rst:872 msgid "" "This function works like :c:func:`PySys_SetArgvEx` with *updatepath* set to " "``1`` unless the :program:`python` interpreter was started with the :option:" "`-I`." msgstr "" -#: c-api/init.rst:896 +#: c-api/init.rst:882 msgid "The *updatepath* value depends on :option:`-I`." msgstr "" -#: c-api/init.rst:903 +#: c-api/init.rst:889 msgid "" "This API is kept for backward compatibility: setting :c:member:`PyConfig." "home` should be used instead, see :ref:`Python Initialization Configuration " "`." msgstr "" -#: c-api/init.rst:907 +#: c-api/init.rst:893 msgid "" "Set the default \"home\" directory, that is, the location of the standard " "Python libraries. See :envvar:`PYTHONHOME` for the meaning of the argument " "string." msgstr "" -#: c-api/init.rst:911 +#: c-api/init.rst:897 msgid "" "The argument should point to a zero-terminated character string in static " "storage whose contents will not change for the duration of the program's " @@ -1161,24 +1145,24 @@ msgid "" "this storage." msgstr "" -#: c-api/init.rst:924 +#: c-api/init.rst:910 msgid "" "Return the default \"home\", that is, the value set by :c:member:`PyConfig." "home`, or the value of the :envvar:`PYTHONHOME` environment variable if it " "is set." msgstr "" -#: c-api/init.rst:934 +#: c-api/init.rst:920 msgid "" "Use :c:func:`PyConfig_Get(\"home\") ` or the :envvar:" "`PYTHONHOME` environment variable instead." msgstr "" -#: c-api/init.rst:942 +#: c-api/init.rst:928 msgid "Thread State and the Global Interpreter Lock" msgstr "" -#: c-api/init.rst:949 +#: c-api/init.rst:935 msgid "" "Unless on a :term:`free-threaded ` build of :term:`CPython`, " "the Python interpreter is not fully thread-safe. In order to support multi-" @@ -1191,7 +1175,7 @@ msgid "" "once instead of twice." msgstr "" -#: c-api/init.rst:960 +#: c-api/init.rst:946 msgid "" "Therefore, the rule exists that only the thread that has acquired the :term:" "`GIL` may operate on Python objects or call Python/C API functions. In order " @@ -1201,7 +1185,7 @@ msgid "" "a file, so that other Python threads can run in the meantime." msgstr "" -#: c-api/init.rst:970 +#: c-api/init.rst:956 msgid "" "The Python interpreter keeps some thread-specific bookkeeping information " "inside a data structure called :c:type:`PyThreadState`, known as a :term:" @@ -1210,7 +1194,7 @@ msgid "" "be :term:`attached `." msgstr "" -#: c-api/init.rst:975 +#: c-api/init.rst:961 msgid "" "A thread can only have one :term:`attached thread state` at a time. An " "attached thread state is typically analogous with holding the :term:`GIL`, " @@ -1221,7 +1205,7 @@ msgid "" "attached thread state to call most of the C API." msgstr "" -#: c-api/init.rst:982 +#: c-api/init.rst:968 msgid "" "In general, there will always be an :term:`attached thread state` when using " "Python's C API. Only in some specific cases (such as in a :c:macro:" @@ -1230,46 +1214,46 @@ msgid "" "``NULL``." msgstr "" -#: c-api/init.rst:988 +#: c-api/init.rst:974 msgid "Detaching the thread state from extension code" msgstr "" -#: c-api/init.rst:990 +#: c-api/init.rst:976 msgid "" "Most extension code manipulating the :term:`thread state` has the following " "simple structure::" msgstr "" -#: c-api/init.rst:993 +#: c-api/init.rst:979 msgid "" "Save the thread state in a local variable.\n" "... Do some blocking I/O operation ...\n" "Restore the thread state from the local variable." msgstr "" -#: c-api/init.rst:997 +#: c-api/init.rst:983 msgid "This is so common that a pair of macros exists to simplify it::" msgstr "" -#: c-api/init.rst:999 +#: c-api/init.rst:985 msgid "" "Py_BEGIN_ALLOW_THREADS\n" "... Do some blocking I/O operation ...\n" "Py_END_ALLOW_THREADS" msgstr "" -#: c-api/init.rst:1007 +#: c-api/init.rst:993 msgid "" "The :c:macro:`Py_BEGIN_ALLOW_THREADS` macro opens a new block and declares a " "hidden local variable; the :c:macro:`Py_END_ALLOW_THREADS` macro closes the " "block." msgstr "" -#: c-api/init.rst:1011 +#: c-api/init.rst:997 msgid "The block above expands to the following code::" msgstr "" -#: c-api/init.rst:1013 +#: c-api/init.rst:999 msgid "" "PyThreadState *_save;\n" "\n" @@ -1278,11 +1262,11 @@ msgid "" "PyEval_RestoreThread(_save);" msgstr "" -#: c-api/init.rst:1023 +#: c-api/init.rst:1009 msgid "Here is how these functions work:" msgstr "" -#: c-api/init.rst:1025 +#: c-api/init.rst:1011 msgid "" "The :term:`attached thread state` holds the :term:`GIL` for the entire " "interpreter. When detaching the :term:`attached thread state`, the :term:" @@ -1297,7 +1281,7 @@ msgid "" "can be called again." msgstr "" -#: c-api/init.rst:1035 +#: c-api/init.rst:1021 msgid "" "For :term:`free-threaded ` builds, the :term:`GIL` is " "normally out of the question, but detaching the :term:`thread state " @@ -1307,7 +1291,7 @@ msgid "" "parallelism." msgstr "" -#: c-api/init.rst:1041 +#: c-api/init.rst:1027 msgid "" "Calling system I/O functions is the most common use case for detaching the :" "term:`thread state `, but it can also be useful " @@ -1318,11 +1302,11 @@ msgid "" "compressing or hashing data." msgstr "" -#: c-api/init.rst:1052 +#: c-api/init.rst:1038 msgid "Non-Python created threads" msgstr "" -#: c-api/init.rst:1054 +#: c-api/init.rst:1040 msgid "" "When threads are created using the dedicated Python APIs (such as the :mod:" "`threading` module), a thread state is automatically associated to them and " @@ -1332,7 +1316,7 @@ msgid "" "term:`attached thread state`." msgstr "" -#: c-api/init.rst:1061 +#: c-api/init.rst:1047 msgid "" "If you need to call Python code from these threads (often this will be part " "of a callback API provided by the aforementioned third-party library), you " @@ -1342,14 +1326,14 @@ msgid "" "state>`, and finally free it." msgstr "" -#: c-api/init.rst:1068 +#: c-api/init.rst:1054 msgid "" "The :c:func:`PyGILState_Ensure` and :c:func:`PyGILState_Release` functions " "do all of the above automatically. The typical idiom for calling into " "Python from a C thread is::" msgstr "" -#: c-api/init.rst:1072 +#: c-api/init.rst:1058 msgid "" "PyGILState_STATE gstate;\n" "gstate = PyGILState_Ensure();\n" @@ -1362,20 +1346,60 @@ msgid "" "PyGILState_Release(gstate);" msgstr "" -#: c-api/init.rst:1082 +#: c-api/init.rst:1068 msgid "" "Note that the ``PyGILState_*`` functions assume there is only one global " "interpreter (created automatically by :c:func:`Py_Initialize`). Python " "supports the creation of additional interpreters (using :c:func:" "`Py_NewInterpreter`), but mixing multiple interpreters and the " -"``PyGILState_*`` API is unsupported." +"``PyGILState_*`` API is unsupported. This is because :c:func:" +"`PyGILState_Ensure` and similar functions default to :term:`attaching " +"` a :term:`thread state` for the main interpreter, " +"meaning that the thread can't safely interact with the calling " +"subinterpreter." msgstr "" -#: c-api/init.rst:1092 +#: c-api/init.rst:1078 +msgid "Supporting subinterpreters in non-Python threads" +msgstr "" + +#: c-api/init.rst:1080 +msgid "" +"If you would like to support subinterpreters with non-Python created " +"threads, you must use the ``PyThreadState_*`` API instead of the traditional " +"``PyGILState_*`` API." +msgstr "" + +#: c-api/init.rst:1084 +msgid "" +"In particular, you must store the interpreter state from the calling " +"function and pass it to :c:func:`PyThreadState_New`, which will ensure that " +"the :term:`thread state` is targeting the correct interpreter::" +msgstr "" + +#: c-api/init.rst:1088 +msgid "" +"/* The return value of PyInterpreterState_Get() from the\n" +" function that created this thread. */\n" +"PyInterpreterState *interp = ThreadData->interp;\n" +"PyThreadState *tstate = PyThreadState_New(interp);\n" +"PyThreadState_Swap(tstate);\n" +"\n" +"/* GIL of the subinterpreter is now held.\n" +" Perform Python actions here. */\n" +"result = CallSomeFunction();\n" +"/* evaluate result or handle exception */\n" +"\n" +"/* Destroy the thread state. No Python API allowed beyond this point. */\n" +"PyThreadState_Clear(tstate);\n" +"PyThreadState_DeleteCurrent();" +msgstr "" + +#: c-api/init.rst:1106 msgid "Cautions about fork()" msgstr "" -#: c-api/init.rst:1094 +#: c-api/init.rst:1108 msgid "" "Another important thing to note about threads is their behaviour in the face " "of the C :c:func:`fork` call. On most systems with :c:func:`fork`, after a " @@ -1384,7 +1408,7 @@ msgid "" "CPython's runtime." msgstr "" -#: c-api/init.rst:1100 +#: c-api/init.rst:1114 msgid "" "The fact that only the \"current\" thread remains means any locks held by " "other threads will never be released. Python solves this for :func:`os.fork` " @@ -1401,7 +1425,7 @@ msgid "" "locks, but is not always able to." msgstr "" -#: c-api/init.rst:1115 +#: c-api/init.rst:1129 msgid "" "The fact that all other threads go away also means that CPython's runtime " "state there must be cleaned up properly, which :func:`os.fork` does. This " @@ -1414,11 +1438,11 @@ msgid "" "called immediately after." msgstr "" -#: c-api/init.rst:1129 +#: c-api/init.rst:1143 msgid "Cautions regarding runtime finalization" msgstr "" -#: c-api/init.rst:1131 +#: c-api/init.rst:1145 msgid "" "In the late stage of :term:`interpreter shutdown`, after attempting to wait " "for non-daemon threads to exit (though this can be interrupted by :class:" @@ -1429,7 +1453,7 @@ msgid "" "acquire the :term:`GIL`." msgstr "" -#: c-api/init.rst:1139 +#: c-api/init.rst:1153 msgid "" "If any thread, other than the finalization thread, attempts to attach a :" "term:`thread state` during finalization, either explicitly or implicitly, " @@ -1439,7 +1463,7 @@ msgid "" "by the blocked thread, or otherwise waits on the blocked thread." msgstr "" -#: c-api/init.rst:1146 +#: c-api/init.rst:1160 msgid "" "Gross? Yes. This prevents random crashes and/or unexpectedly skipped C++ " "finalizations further up the call stack when such threads were forcibly " @@ -1451,17 +1475,17 @@ msgid "" "error handling." msgstr "" -#: c-api/init.rst:1156 +#: c-api/init.rst:1170 msgid "High-level API" msgstr "" -#: c-api/init.rst:1158 +#: c-api/init.rst:1172 msgid "" "These are the most commonly used types and functions when writing C " "extension code, or when embedding the Python interpreter:" msgstr "" -#: c-api/init.rst:1163 +#: c-api/init.rst:1177 msgid "" "This data structure represents the state shared by a number of cooperating " "threads. Threads belonging to the same interpreter share their module " @@ -1469,7 +1493,7 @@ msgid "" "in this structure." msgstr "" -#: c-api/init.rst:1168 +#: c-api/init.rst:1182 msgid "" "Threads belonging to different interpreters initially share nothing, except " "process state like available memory, open file descriptors and such. The " @@ -1477,54 +1501,54 @@ msgid "" "which interpreter they belong." msgstr "" -#: c-api/init.rst:1176 +#: c-api/init.rst:1190 msgid "" "This data structure represents the state of a single thread. The only " "public data member is:" msgstr "" -#: c-api/init.rst:1181 +#: c-api/init.rst:1195 msgid "This thread's interpreter state." msgstr "" -#: c-api/init.rst:1192 +#: c-api/init.rst:1206 msgid "Deprecated function which does nothing." msgstr "" -#: c-api/init.rst:1194 +#: c-api/init.rst:1208 msgid "" "In Python 3.6 and older, this function created the GIL if it didn't exist." msgstr "" -#: c-api/init.rst:1196 +#: c-api/init.rst:1210 msgid "The function now does nothing." msgstr "" -#: c-api/init.rst:1199 +#: c-api/init.rst:1213 msgid "" "This function is now called by :c:func:`Py_Initialize()`, so you don't have " "to call it yourself anymore." msgstr "" -#: c-api/init.rst:1203 +#: c-api/init.rst:1217 msgid "" "This function cannot be called before :c:func:`Py_Initialize()` anymore." msgstr "" -#: c-api/init.rst:1213 +#: c-api/init.rst:1227 msgid "" "Detach the :term:`attached thread state` and return it. The thread will have " "no :term:`thread state` upon returning." msgstr "" -#: c-api/init.rst:1219 +#: c-api/init.rst:1233 msgid "" "Set the :term:`attached thread state` to *tstate*. The passed :term:`thread " "state` **should not** be :term:`attached `, otherwise " "deadlock ensues. *tstate* will be attached upon returning." msgstr "" -#: c-api/init.rst:1291 c-api/init.rst:1582 +#: c-api/init.rst:1609 msgid "" "Calling this function from a thread when the runtime is finalizing will hang " "the thread until the program exits, even if the thread was not created by " @@ -1532,13 +1556,13 @@ msgid "" "details." msgstr "" -#: c-api/init.rst:1296 c-api/init.rst:1592 +#: c-api/init.rst:1314 c-api/init.rst:1619 msgid "" "Hangs the current thread, rather than terminating it, if called while the " "interpreter is finalizing." msgstr "" -#: c-api/init.rst:1235 +#: c-api/init.rst:1249 msgid "" "Return the :term:`attached thread state`. If the thread has no attached " "thread state, (such as when inside of :c:macro:`Py_BEGIN_ALLOW_THREADS` " @@ -1546,42 +1570,48 @@ msgid "" "``NULL``)." msgstr "" -#: c-api/init.rst:1240 +#: c-api/init.rst:1254 msgid "See also :c:func:`PyThreadState_GetUnchecked`." msgstr "" -#: c-api/init.rst:1244 +#: c-api/init.rst:1258 msgid "" "Similar to :c:func:`PyThreadState_Get`, but don't kill the process with a " "fatal error if it is NULL. The caller is responsible to check if the result " "is NULL." msgstr "" -#: c-api/init.rst:1248 +#: c-api/init.rst:1262 msgid "" "In Python 3.5 to 3.12, the function was private and known as " "``_PyThreadState_UncheckedGet()``." msgstr "" -#: c-api/init.rst:1255 +#: c-api/init.rst:1269 msgid "" "Set the :term:`attached thread state` to *tstate*, and return the :term:" "`thread state` that was attached prior to calling." msgstr "" -#: c-api/init.rst:1258 +#: c-api/init.rst:1272 msgid "" "This function is safe to call without an :term:`attached thread state`; it " "will simply return ``NULL`` indicating that there was no prior thread state." msgstr "" -#: c-api/init.rst:1265 +#: c-api/init.rst:1279 +msgid "" +"Similar to :c:func:`PyGILState_Ensure`, this function will hang the thread " +"if the runtime is finalizing." +msgstr "" + +#: c-api/init.rst:1283 msgid "" "The following functions use thread-local storage, and are not compatible " "with sub-interpreters:" msgstr "" -#: c-api/init.rst:1270 +#: c-api/init.rst:1288 msgid "" "Ensure that the current thread is ready to call the Python C API regardless " "of the current state of Python, or of the :term:`attached thread state`. " @@ -1594,7 +1624,7 @@ msgid "" "is acceptable." msgstr "" -#: c-api/init.rst:1280 +#: c-api/init.rst:1298 msgid "" "The return value is an opaque \"handle\" to the :term:`attached thread " "state` when :c:func:`PyGILState_Ensure` was called, and must be passed to :c:" @@ -1604,14 +1634,22 @@ msgid "" "to :c:func:`PyGILState_Release`." msgstr "" -#: c-api/init.rst:1287 +#: c-api/init.rst:1305 msgid "" "When the function returns, there will be an :term:`attached thread state` " "and the thread will be able to call arbitrary Python code. Failure is a " "fatal error." msgstr "" -#: c-api/init.rst:1302 +#: c-api/init.rst:1309 +msgid "" +"Calling this function when the runtime is finalizing is unsafe. Doing so " +"will either hang the thread until the program ends, or fully crash the " +"interpreter in rare cases. Refer to :ref:`cautions-regarding-runtime-" +"finalization` for more details." +msgstr "" + +#: c-api/init.rst:1320 msgid "" "Release any resources previously acquired. After this call, Python's state " "will be the same as it was prior to the corresponding :c:func:" @@ -1619,13 +1657,13 @@ msgid "" "caller, hence the use of the GILState API)." msgstr "" -#: c-api/init.rst:1307 +#: c-api/init.rst:1325 msgid "" "Every call to :c:func:`PyGILState_Ensure` must be matched by a call to :c:" "func:`PyGILState_Release` on the same thread." msgstr "" -#: c-api/init.rst:1313 +#: c-api/init.rst:1330 msgid "" "Get the :term:`attached thread state` for this thread. May return ``NULL`` " "if no GILState API has been used on the current thread. Note that the main " @@ -1633,24 +1671,40 @@ msgid "" "been made on the main thread. This is mainly a helper/diagnostic function." msgstr "" -#: c-api/init.rst:1323 +#: c-api/init.rst:1336 +msgid "" +"This function does not account for :term:`thread states ` " +"created by something other than :c:func:`PyGILState_Ensure` (such as :c:func:" +"`PyThreadState_New`). Prefer :c:func:`PyThreadState_Get` or :c:func:" +"`PyThreadState_GetUnchecked` for most cases." +msgstr "" + +#: c-api/init.rst:1345 msgid "" "Return ``1`` if the current thread is holding the :term:`GIL` and ``0`` " "otherwise. This function can be called from any thread at any time. Only if " -"it has had its Python thread state initialized and currently is holding the :" -"term:`GIL` will it return ``1``. This is mainly a helper/diagnostic " -"function. It can be useful for example in callback contexts or memory " -"allocation functions when knowing that the :term:`GIL` is locked can allow " -"the caller to perform sensitive actions or otherwise behave differently." +"it has had its :term:`thread state ` initialized via :" +"c:func:`PyGILState_Ensure` will it return ``1``. This is mainly a helper/" +"diagnostic function. It can be useful for example in callback contexts or " +"memory allocation functions when knowing that the :term:`GIL` is locked can " +"allow the caller to perform sensitive actions or otherwise behave " +"differently." +msgstr "" + +#: c-api/init.rst:1355 +msgid "" +"If the current Python process has ever created a subinterpreter, this " +"function will *always* return ``1``. Prefer :c:func:" +"`PyThreadState_GetUnchecked` for most cases." msgstr "" -#: c-api/init.rst:1335 +#: c-api/init.rst:1362 msgid "" "The following macros are normally used without a trailing semicolon; look " "for example usage in the Python source distribution." msgstr "" -#: c-api/init.rst:1341 +#: c-api/init.rst:1368 msgid "" "This macro expands to ``{ PyThreadState *_save; _save = PyEval_SaveThread();" "``. Note that it contains an opening brace; it must be matched with a " @@ -1658,7 +1712,7 @@ msgid "" "discussion of this macro." msgstr "" -#: c-api/init.rst:1349 +#: c-api/init.rst:1376 msgid "" "This macro expands to ``PyEval_RestoreThread(_save); }``. Note that it " "contains a closing brace; it must be matched with an earlier :c:macro:" @@ -1666,60 +1720,60 @@ msgid "" "macro." msgstr "" -#: c-api/init.rst:1357 +#: c-api/init.rst:1384 msgid "" "This macro expands to ``PyEval_RestoreThread(_save);``: it is equivalent to :" "c:macro:`Py_END_ALLOW_THREADS` without the closing brace." msgstr "" -#: c-api/init.rst:1363 +#: c-api/init.rst:1390 msgid "" "This macro expands to ``_save = PyEval_SaveThread();``: it is equivalent to :" "c:macro:`Py_BEGIN_ALLOW_THREADS` without the opening brace and variable " "declaration." msgstr "" -#: c-api/init.rst:1369 +#: c-api/init.rst:1396 msgid "Low-level API" msgstr "" -#: c-api/init.rst:1371 +#: c-api/init.rst:1398 msgid "" "All of the following functions must be called after :c:func:`Py_Initialize`." msgstr "" -#: c-api/init.rst:1373 +#: c-api/init.rst:1400 msgid "" ":c:func:`Py_Initialize()` now initializes the :term:`GIL` and sets an :term:" "`attached thread state`." msgstr "" -#: c-api/init.rst:1380 +#: c-api/init.rst:1407 msgid "" "Create a new interpreter state object. An :term:`attached thread state` is " "not needed, but may optionally exist if it is necessary to serialize calls " "to this function." msgstr "" -#: c-api/init.rst:1384 +#: c-api/init.rst:1411 msgid "" "Raises an :ref:`auditing event ` ``cpython." "PyInterpreterState_New`` with no arguments." msgstr "" -#: c-api/init.rst:1389 +#: c-api/init.rst:1416 msgid "" "Reset all information in an interpreter state object. There must be an :" "term:`attached thread state` for the the interpreter." msgstr "" -#: c-api/init.rst:1392 +#: c-api/init.rst:1419 msgid "" "Raises an :ref:`auditing event ` ``cpython." "PyInterpreterState_Clear`` with no arguments." msgstr "" -#: c-api/init.rst:1397 +#: c-api/init.rst:1424 msgid "" "Destroy an interpreter state object. There **should not** be an :term:" "`attached thread state` for the target interpreter. The interpreter state " @@ -1727,162 +1781,162 @@ msgid "" "`PyInterpreterState_Clear`." msgstr "" -#: c-api/init.rst:1404 +#: c-api/init.rst:1431 msgid "" "Create a new thread state object belonging to the given interpreter object. " "An :term:`attached thread state` is not needed." msgstr "" -#: c-api/init.rst:1409 +#: c-api/init.rst:1436 msgid "" "Reset all information in a :term:`thread state` object. *tstate* must be :" "term:`attached `" msgstr "" -#: c-api/init.rst:1412 +#: c-api/init.rst:1439 msgid "" "This function now calls the :c:member:`PyThreadState.on_delete` callback. " "Previously, that happened in :c:func:`PyThreadState_Delete`." msgstr "" -#: c-api/init.rst:1416 +#: c-api/init.rst:1443 msgid "The :c:member:`PyThreadState.on_delete` callback was removed." msgstr "" -#: c-api/init.rst:1422 +#: c-api/init.rst:1449 msgid "" "Destroy a :term:`thread state` object. *tstate* should not be :term:" "`attached ` to any thread. *tstate* must have been " "reset with a previous call to :c:func:`PyThreadState_Clear`." msgstr "" -#: c-api/init.rst:1430 +#: c-api/init.rst:1457 msgid "" "Detach the :term:`attached thread state` (which must have been reset with a " "previous call to :c:func:`PyThreadState_Clear`) and then destroy it." msgstr "" -#: c-api/init.rst:1433 +#: c-api/init.rst:1460 msgid "" "No :term:`thread state` will be :term:`attached ` " "upon returning." msgstr "" -#: c-api/init.rst:1438 +#: c-api/init.rst:1465 msgid "Get the current frame of the Python thread state *tstate*." msgstr "" -#: c-api/init.rst:1440 +#: c-api/init.rst:1467 msgid "" "Return a :term:`strong reference`. Return ``NULL`` if no frame is currently " "executing." msgstr "" -#: c-api/init.rst:1443 +#: c-api/init.rst:1470 msgid "See also :c:func:`PyEval_GetFrame`." msgstr "" -#: c-api/init.rst:1454 c-api/init.rst:1463 +#: c-api/init.rst:1481 c-api/init.rst:1490 msgid "" "*tstate* must not be ``NULL``, and must be :term:`attached `." msgstr "" -#: c-api/init.rst:1452 +#: c-api/init.rst:1479 msgid "" "Get the unique :term:`thread state` identifier of the Python thread state " "*tstate*." msgstr "" -#: c-api/init.rst:1461 +#: c-api/init.rst:1488 msgid "Get the interpreter of the Python thread state *tstate*." msgstr "" -#: c-api/init.rst:1470 +#: c-api/init.rst:1497 msgid "Suspend tracing and profiling in the Python thread state *tstate*." msgstr "" -#: c-api/init.rst:1472 +#: c-api/init.rst:1499 msgid "Resume them using the :c:func:`PyThreadState_LeaveTracing` function." msgstr "" -#: c-api/init.rst:1479 +#: c-api/init.rst:1506 msgid "" "Resume tracing and profiling in the Python thread state *tstate* suspended " "by the :c:func:`PyThreadState_EnterTracing` function." msgstr "" -#: c-api/init.rst:1482 +#: c-api/init.rst:1509 msgid "" "See also :c:func:`PyEval_SetTrace` and :c:func:`PyEval_SetProfile` functions." msgstr "" -#: c-api/init.rst:1490 +#: c-api/init.rst:1517 msgid "Get the current interpreter." msgstr "" -#: c-api/init.rst:1492 +#: c-api/init.rst:1519 msgid "" "Issue a fatal error if there no :term:`attached thread state`. It cannot " "return NULL." msgstr "" -#: c-api/init.rst:1500 +#: c-api/init.rst:1527 msgid "" "Return the interpreter's unique ID. If there was any error in doing so then " "``-1`` is returned and an error is set." msgstr "" -#: c-api/init.rst:2090 c-api/init.rst:2116 c-api/init.rst:2123 +#: c-api/init.rst:2117 c-api/init.rst:2143 c-api/init.rst:2150 msgid "The caller must have an :term:`attached thread state`." msgstr "" -#: c-api/init.rst:1510 +#: c-api/init.rst:1537 msgid "" "Return a dictionary in which interpreter-specific data may be stored. If " "this function returns ``NULL`` then no exception has been raised and the " "caller should assume no interpreter-specific dict is available." msgstr "" -#: c-api/init.rst:1514 +#: c-api/init.rst:1541 msgid "" "This is not a replacement for :c:func:`PyModule_GetState()`, which " "extensions should use to store interpreter-specific state information." msgstr "" -#: c-api/init.rst:1522 +#: c-api/init.rst:1549 msgid "Type of a frame evaluation function." msgstr "" -#: c-api/init.rst:1524 +#: c-api/init.rst:1551 msgid "" "The *throwflag* parameter is used by the ``throw()`` method of generators: " "if non-zero, handle the current exception." msgstr "" -#: c-api/init.rst:1527 +#: c-api/init.rst:1554 msgid "The function now takes a *tstate* parameter." msgstr "" -#: c-api/init.rst:1530 +#: c-api/init.rst:1557 msgid "" "The *frame* parameter changed from ``PyFrameObject*`` to " "``_PyInterpreterFrame*``." msgstr "" -#: c-api/init.rst:1535 +#: c-api/init.rst:1562 msgid "Get the frame evaluation function." msgstr "" -#: c-api/init.rst:1545 +#: c-api/init.rst:1572 msgid "See the :pep:`523` \"Adding a frame evaluation API to CPython\"." msgstr "" -#: c-api/init.rst:1543 +#: c-api/init.rst:1570 msgid "Set the frame evaluation function." msgstr "" -#: c-api/init.rst:1552 +#: c-api/init.rst:1579 msgid "" "Return a dictionary in which extensions can store thread-specific state " "information. Each extension should use a unique key to use to store state " @@ -1892,7 +1946,7 @@ msgid "" "thread state is attached." msgstr "" -#: c-api/init.rst:1562 +#: c-api/init.rst:1589 msgid "" "Asynchronously raise an exception in a thread. The *id* argument is the " "thread id of the target thread; *exc* is the exception object to be raised. " @@ -1904,54 +1958,54 @@ msgid "" "is cleared. This raises no exceptions." msgstr "" -#: c-api/init.rst:1570 +#: c-api/init.rst:1597 msgid "" "The type of the *id* parameter changed from :c:expr:`long` to :c:expr:" "`unsigned long`." msgstr "" -#: c-api/init.rst:1576 +#: c-api/init.rst:1603 msgid "" ":term:`Attach ` *tstate* to the current thread, which " "must not be ``NULL`` or already :term:`attached `." msgstr "" -#: c-api/init.rst:1579 +#: c-api/init.rst:1606 msgid "" "The calling thread must not already have an :term:`attached thread state`." msgstr "" -#: c-api/init.rst:1587 +#: c-api/init.rst:1614 msgid "" "Updated to be consistent with :c:func:`PyEval_RestoreThread`, :c:func:" "`Py_END_ALLOW_THREADS`, and :c:func:`PyGILState_Ensure`, and terminate the " "current thread if called while the interpreter is finalizing." msgstr "" -#: c-api/init.rst:1596 +#: c-api/init.rst:1623 msgid "" ":c:func:`PyEval_RestoreThread` is a higher-level function which is always " "available (even when threads have not been initialized)." msgstr "" -#: c-api/init.rst:1602 +#: c-api/init.rst:1629 msgid "" "Detach the :term:`attached thread state`. The *tstate* argument, which must " "not be ``NULL``, is only used to check that it represents the :term:" "`attached thread state` --- if it isn't, a fatal error is reported." msgstr "" -#: c-api/init.rst:1607 +#: c-api/init.rst:1634 msgid "" ":c:func:`PyEval_SaveThread` is a higher-level function which is always " "available (even when threads have not been initialized)." msgstr "" -#: c-api/init.rst:1614 +#: c-api/init.rst:1641 msgid "Sub-interpreter support" msgstr "" -#: c-api/init.rst:1616 +#: c-api/init.rst:1643 msgid "" "While in most uses, you will only embed a single Python interpreter, there " "are cases where you need to create several independent interpreters in the " @@ -1959,7 +2013,7 @@ msgid "" "to do that." msgstr "" -#: c-api/init.rst:1621 +#: c-api/init.rst:1648 msgid "" "The \"main\" interpreter is the first one created when the runtime " "initializes. It is usually the only Python interpreter in a process. Unlike " @@ -1970,31 +2024,31 @@ msgid "" "returns a pointer to its state." msgstr "" -#: c-api/init.rst:1628 +#: c-api/init.rst:1655 msgid "" "You can switch between sub-interpreters using the :c:func:" "`PyThreadState_Swap` function. You can create and destroy them using the " "following functions:" msgstr "" -#: c-api/init.rst:1634 +#: c-api/init.rst:1661 msgid "" "Structure containing most parameters to configure a sub-interpreter. Its " "values are used only in :c:func:`Py_NewInterpreterFromConfig` and never " "modified by the runtime." msgstr "" -#: c-api/init.rst:1640 +#: c-api/init.rst:1667 msgid "Structure fields:" msgstr "" -#: c-api/init.rst:1644 +#: c-api/init.rst:1671 msgid "" "If this is ``0`` then the sub-interpreter will use its own \"object\" " "allocator state. Otherwise it will use (share) the main interpreter's." msgstr "" -#: c-api/init.rst:1648 +#: c-api/init.rst:1675 msgid "" "If this is ``0`` then :c:member:`~PyInterpreterConfig." "check_multi_interp_extensions` must be ``1`` (non-zero). If this is ``1`` " @@ -2002,44 +2056,44 @@ msgid "" "`PyInterpreterConfig_OWN_GIL`." msgstr "" -#: c-api/init.rst:1656 +#: c-api/init.rst:1683 msgid "" "If this is ``0`` then the runtime will not support forking the process in " "any thread where the sub-interpreter is currently active. Otherwise fork is " "unrestricted." msgstr "" -#: c-api/init.rst:1660 +#: c-api/init.rst:1687 msgid "" "Note that the :mod:`subprocess` module still works when fork is disallowed." msgstr "" -#: c-api/init.rst:1665 +#: c-api/init.rst:1692 msgid "" "If this is ``0`` then the runtime will not support replacing the current " "process via exec (e.g. :func:`os.execv`) in any thread where the sub-" "interpreter is currently active. Otherwise exec is unrestricted." msgstr "" -#: c-api/init.rst:1670 +#: c-api/init.rst:1697 msgid "" "Note that the :mod:`subprocess` module still works when exec is disallowed." msgstr "" -#: c-api/init.rst:1675 +#: c-api/init.rst:1702 msgid "" "If this is ``0`` then the sub-interpreter's :mod:`threading` module won't " "create threads. Otherwise threads are allowed." msgstr "" -#: c-api/init.rst:1681 +#: c-api/init.rst:1708 msgid "" "If this is ``0`` then the sub-interpreter's :mod:`threading` module won't " "create daemon threads. Otherwise daemon threads are allowed (as long as :c:" "member:`~PyInterpreterConfig.allow_threads` is non-zero)." msgstr "" -#: c-api/init.rst:1688 +#: c-api/init.rst:1715 msgid "" "If this is ``0`` then all extension modules may be imported, including " "legacy (single-phase init) modules, in any thread where the sub-interpreter " @@ -2048,37 +2102,37 @@ msgid "" "`Py_mod_multiple_interpreters`.)" msgstr "" -#: c-api/init.rst:1695 +#: c-api/init.rst:1722 msgid "" "This must be ``1`` (non-zero) if :c:member:`~PyInterpreterConfig." "use_main_obmalloc` is ``0``." msgstr "" -#: c-api/init.rst:1700 +#: c-api/init.rst:1727 msgid "" "This determines the operation of the GIL for the sub-interpreter. It may be " "one of the following:" msgstr "" -#: c-api/init.rst:1707 +#: c-api/init.rst:1734 msgid "Use the default selection (:c:macro:`PyInterpreterConfig_SHARED_GIL`)." msgstr "" -#: c-api/init.rst:1711 +#: c-api/init.rst:1738 msgid "Use (share) the main interpreter's GIL." msgstr "" -#: c-api/init.rst:1715 +#: c-api/init.rst:1742 msgid "Use the sub-interpreter's own GIL." msgstr "" -#: c-api/init.rst:1717 +#: c-api/init.rst:1744 msgid "" "If this is :c:macro:`PyInterpreterConfig_OWN_GIL` then :c:member:" "`PyInterpreterConfig.use_main_obmalloc` must be ``0``." msgstr "" -#: c-api/init.rst:1731 +#: c-api/init.rst:1758 msgid "" "Create a new sub-interpreter. This is an (almost) totally separate " "environment for the execution of Python code. In particular, the new " @@ -2091,13 +2145,13 @@ msgid "" "underlying file descriptors)." msgstr "" -#: c-api/init.rst:1741 +#: c-api/init.rst:1768 msgid "" "The given *config* controls the options with which the interpreter is " "initialized." msgstr "" -#: c-api/init.rst:1744 +#: c-api/init.rst:1771 msgid "" "Upon success, *tstate_p* will be set to the first :term:`thread state` " "created in the new sub-interpreter. This thread state is :term:`attached " @@ -2108,7 +2162,7 @@ msgid "" "not exist." msgstr "" -#: c-api/init.rst:1753 +#: c-api/init.rst:1780 msgid "" "Like all other Python/C API functions, an :term:`attached thread state` must " "be present before calling this function, but it might be detached upon " @@ -2121,13 +2175,13 @@ msgid "" "will remain detached." msgstr "" -#: c-api/init.rst:1764 +#: c-api/init.rst:1791 msgid "" "Sub-interpreters are most effective when isolated from each other, with " "certain functionality restricted::" msgstr "" -#: c-api/init.rst:1767 +#: c-api/init.rst:1794 msgid "" "PyInterpreterConfig config = {\n" " .use_main_obmalloc = 0,\n" @@ -2145,7 +2199,7 @@ msgid "" "}" msgstr "" -#: c-api/init.rst:1782 +#: c-api/init.rst:1809 msgid "" "Note that the config is used only briefly and does not get modified. During " "initialization the config's values are converted into various :c:type:" @@ -2153,11 +2207,11 @@ msgid "" "internally on the :c:type:`PyInterpreterState`." msgstr "" -#: c-api/init.rst:1791 +#: c-api/init.rst:1818 msgid "Extension modules are shared between (sub-)interpreters as follows:" msgstr "" -#: c-api/init.rst:1793 +#: c-api/init.rst:1820 msgid "" "For modules using multi-phase initialization, e.g. :c:func:" "`PyModule_FromDefAndSpec`, a separate module object is created and " @@ -2165,7 +2219,7 @@ msgid "" "are shared between these module objects." msgstr "" -#: c-api/init.rst:1799 +#: c-api/init.rst:1826 msgid "" "For modules using single-phase initialization, e.g. :c:func:" "`PyModule_Create`, the first time a particular extension is imported, it is " @@ -2177,7 +2231,7 @@ msgid "" "might cause unwanted behavior (see `Bugs and caveats`_ below)." msgstr "" -#: c-api/init.rst:1810 +#: c-api/init.rst:1837 msgid "" "Note that this is different from what happens when an extension is imported " "after the interpreter has been completely re-initialized by calling :c:func:" @@ -2187,7 +2241,7 @@ msgid "" "shared between these modules." msgstr "" -#: c-api/init.rst:1830 +#: c-api/init.rst:1857 msgid "" "Create a new sub-interpreter. This is essentially just a wrapper around :c:" "func:`Py_NewInterpreterFromConfig` with a config that preserves the existing " @@ -2196,7 +2250,7 @@ msgid "" "single-phase init modules." msgstr "" -#: c-api/init.rst:1842 +#: c-api/init.rst:1869 msgid "" "Destroy the (sub-)interpreter represented by the given :term:`thread state`. " "The given thread state must be :term:`attached `. " @@ -2204,17 +2258,17 @@ msgid "" "thread states associated with this interpreter are destroyed." msgstr "" -#: c-api/init.rst:1847 +#: c-api/init.rst:1874 msgid "" ":c:func:`Py_FinalizeEx` will destroy all sub-interpreters that haven't been " "explicitly destroyed at that point." msgstr "" -#: c-api/init.rst:1852 +#: c-api/init.rst:1879 msgid "A Per-Interpreter GIL" msgstr "" -#: c-api/init.rst:1854 +#: c-api/init.rst:1881 msgid "" "Using :c:func:`Py_NewInterpreterFromConfig` you can create a sub-interpreter " "that is completely isolated from other interpreters, including having its " @@ -2226,7 +2280,7 @@ msgid "" "just using threads. (See :pep:`554`.)" msgstr "" -#: c-api/init.rst:1864 +#: c-api/init.rst:1891 msgid "" "Using an isolated interpreter requires vigilance in preserving that " "isolation. That especially means not sharing any objects or mutable state " @@ -2240,7 +2294,7 @@ msgid "" "builtin objects." msgstr "" -#: c-api/init.rst:1875 +#: c-api/init.rst:1902 msgid "" "If you preserve isolation then you will have access to proper multi-core " "computing without the complications that come with free-threading. Failure " @@ -2248,7 +2302,7 @@ msgid "" "threading, including races and hard-to-debug crashes." msgstr "" -#: c-api/init.rst:1880 +#: c-api/init.rst:1907 msgid "" "Aside from that, one of the main challenges of using multiple isolated " "interpreters is how to communicate between them safely (not break isolation) " @@ -2258,11 +2312,11 @@ msgid "" "sharing) data between interpreters." msgstr "" -#: c-api/init.rst:1891 +#: c-api/init.rst:1918 msgid "Bugs and caveats" msgstr "" -#: c-api/init.rst:1893 +#: c-api/init.rst:1920 msgid "" "Because sub-interpreters (and the main interpreter) are part of the same " "process, the insulation between them isn't perfect --- for example, using " @@ -2275,7 +2329,7 @@ msgid "" "should be avoided if possible." msgstr "" -#: c-api/init.rst:1903 +#: c-api/init.rst:1930 msgid "" "Special care should be taken to avoid sharing user-defined functions, " "methods, instances or classes between sub-interpreters, since import " @@ -2284,7 +2338,7 @@ msgid "" "objects from which the above are reachable." msgstr "" -#: c-api/init.rst:1909 +#: c-api/init.rst:1936 msgid "" "Also note that combining this functionality with ``PyGILState_*`` APIs is " "delicate, because these APIs assume a bijection between Python thread states " @@ -2296,25 +2350,25 @@ msgid "" "created threads will probably be broken when using sub-interpreters." msgstr "" -#: c-api/init.rst:1920 +#: c-api/init.rst:1947 msgid "Asynchronous Notifications" msgstr "" -#: c-api/init.rst:1922 +#: c-api/init.rst:1949 msgid "" "A mechanism is provided to make asynchronous notifications to the main " "interpreter thread. These notifications take the form of a function pointer " "and a void pointer argument." msgstr "" -#: c-api/init.rst:1929 +#: c-api/init.rst:1956 msgid "" "Schedule a function to be called from the main interpreter thread. On " "success, ``0`` is returned and *func* is queued for being called in the main " "thread. On failure, ``-1`` is returned without setting any exception." msgstr "" -#: c-api/init.rst:1933 +#: c-api/init.rst:1960 msgid "" "When successfully queued, *func* will be *eventually* called from the main " "interpreter thread with the argument *arg*. It will be called " @@ -2322,17 +2376,17 @@ msgid "" "these conditions met:" msgstr "" -#: c-api/init.rst:1938 +#: c-api/init.rst:1965 msgid "on a :term:`bytecode` boundary;" msgstr "" -#: c-api/init.rst:1939 +#: c-api/init.rst:1966 msgid "" "with the main thread holding an :term:`attached thread state` (*func* can " "therefore use the full C API)." msgstr "" -#: c-api/init.rst:1942 +#: c-api/init.rst:1969 msgid "" "*func* must return ``0`` on success, or ``-1`` on failure with an exception " "set. *func* won't be interrupted to perform another asynchronous " @@ -2340,7 +2394,7 @@ msgid "" "if the :term:`thread state ` is detached." msgstr "" -#: c-api/init.rst:1947 +#: c-api/init.rst:1974 msgid "" "This function doesn't need an :term:`attached thread state`. However, to " "call this function in a subinterpreter, the caller must have an :term:" @@ -2348,7 +2402,7 @@ msgid "" "be called from the wrong interpreter." msgstr "" -#: c-api/init.rst:1952 +#: c-api/init.rst:1979 msgid "" "This is a low-level function, only useful for very special cases. There is " "no guarantee that *func* will be called as quick as possible. If the main " @@ -2358,7 +2412,7 @@ msgid "" "`PyGILState API`." msgstr "" -#: c-api/init.rst:1961 +#: c-api/init.rst:1988 msgid "" "If this function is called in a subinterpreter, the function *func* is now " "scheduled to be called from the subinterpreter, rather than being called " @@ -2366,18 +2420,18 @@ msgid "" "scheduled calls." msgstr "" -#: c-api/init.rst:1970 +#: c-api/init.rst:1997 msgid "Profiling and Tracing" msgstr "" -#: c-api/init.rst:1975 +#: c-api/init.rst:2002 msgid "" "The Python interpreter provides some low-level support for attaching " "profiling and execution tracing facilities. These are used for profiling, " "debugging, and coverage analysis tools." msgstr "" -#: c-api/init.rst:1979 +#: c-api/init.rst:2006 msgid "" "This C interface allows the profiling or tracing code to avoid the overhead " "of calling through Python-level callable objects, making a direct C function " @@ -2387,7 +2441,7 @@ msgid "" "reported to the Python-level trace functions in previous versions." msgstr "" -#: c-api/init.rst:1989 +#: c-api/init.rst:2016 msgid "" "The type of the trace function registered using :c:func:`PyEval_SetProfile` " "and :c:func:`PyEval_SetTrace`. The first parameter is the object passed to " @@ -2399,64 +2453,64 @@ msgid "" "value of *what*:" msgstr "" -#: c-api/init.rst:1998 +#: c-api/init.rst:2025 msgid "Value of *what*" msgstr "" -#: c-api/init.rst:1998 +#: c-api/init.rst:2025 msgid "Meaning of *arg*" msgstr "" -#: c-api/init.rst:2000 +#: c-api/init.rst:2027 msgid ":c:data:`PyTrace_CALL`" msgstr "" -#: c-api/init.rst:2005 c-api/init.rst:2016 +#: c-api/init.rst:2032 c-api/init.rst:2043 msgid "Always :c:data:`Py_None`." msgstr "" -#: c-api/init.rst:2002 +#: c-api/init.rst:2029 msgid ":c:data:`PyTrace_EXCEPTION`" msgstr "" -#: c-api/init.rst:2002 +#: c-api/init.rst:2029 msgid "Exception information as returned by :func:`sys.exc_info`." msgstr "" -#: c-api/init.rst:2005 +#: c-api/init.rst:2032 msgid ":c:data:`PyTrace_LINE`" msgstr "" -#: c-api/init.rst:2007 +#: c-api/init.rst:2034 msgid ":c:data:`PyTrace_RETURN`" msgstr "" -#: c-api/init.rst:2007 +#: c-api/init.rst:2034 msgid "" "Value being returned to the caller, or ``NULL`` if caused by an exception." msgstr "" -#: c-api/init.rst:2010 +#: c-api/init.rst:2037 msgid ":c:data:`PyTrace_C_CALL`" msgstr "" -#: c-api/init.rst:2012 c-api/init.rst:2014 +#: c-api/init.rst:2039 c-api/init.rst:2041 msgid "Function object being called." msgstr "" -#: c-api/init.rst:2012 +#: c-api/init.rst:2039 msgid ":c:data:`PyTrace_C_EXCEPTION`" msgstr "" -#: c-api/init.rst:2014 +#: c-api/init.rst:2041 msgid ":c:data:`PyTrace_C_RETURN`" msgstr "" -#: c-api/init.rst:2016 +#: c-api/init.rst:2043 msgid ":c:data:`PyTrace_OPCODE`" msgstr "" -#: c-api/init.rst:2021 +#: c-api/init.rst:2048 msgid "" "The value of the *what* parameter to a :c:type:`Py_tracefunc` function when " "a new call to a function or method is being reported, or a new entry into a " @@ -2465,7 +2519,7 @@ msgid "" "the corresponding frame." msgstr "" -#: c-api/init.rst:2030 +#: c-api/init.rst:2057 msgid "" "The value of the *what* parameter to a :c:type:`Py_tracefunc` function when " "an exception has been raised. The callback function is called with this " @@ -2477,7 +2531,7 @@ msgid "" "profiler." msgstr "" -#: c-api/init.rst:2041 +#: c-api/init.rst:2068 msgid "" "The value passed as the *what* parameter to a :c:type:`Py_tracefunc` " "function (but not a profiling function) when a line-number event is being " @@ -2485,31 +2539,31 @@ msgid "" "f_trace_lines` to *0* on that frame." msgstr "" -#: c-api/init.rst:2049 +#: c-api/init.rst:2076 msgid "" "The value for the *what* parameter to :c:type:`Py_tracefunc` functions when " "a call is about to return." msgstr "" -#: c-api/init.rst:2055 +#: c-api/init.rst:2082 msgid "" "The value for the *what* parameter to :c:type:`Py_tracefunc` functions when " "a C function is about to be called." msgstr "" -#: c-api/init.rst:2061 +#: c-api/init.rst:2088 msgid "" "The value for the *what* parameter to :c:type:`Py_tracefunc` functions when " "a C function has raised an exception." msgstr "" -#: c-api/init.rst:2067 +#: c-api/init.rst:2094 msgid "" "The value for the *what* parameter to :c:type:`Py_tracefunc` functions when " "a C function has returned." msgstr "" -#: c-api/init.rst:2073 +#: c-api/init.rst:2100 msgid "" "The value for the *what* parameter to :c:type:`Py_tracefunc` functions (but " "not profiling functions) when a new opcode is about to be executed. This " @@ -2517,7 +2571,7 @@ msgid "" "attr:`~frame.f_trace_opcodes` to *1* on the frame." msgstr "" -#: c-api/init.rst:2081 +#: c-api/init.rst:2108 msgid "" "Set the profiler function to *func*. The *obj* parameter is passed to the " "function as its first parameter, and may be any Python object, or ``NULL``. " @@ -2527,24 +2581,24 @@ msgid "" "`PyTrace_LINE` :c:data:`PyTrace_OPCODE` and :c:data:`PyTrace_EXCEPTION`." msgstr "" -#: c-api/init.rst:2088 +#: c-api/init.rst:2115 msgid "See also the :func:`sys.setprofile` function." msgstr "" -#: c-api/init.rst:2094 +#: c-api/init.rst:2121 msgid "" "Like :c:func:`PyEval_SetProfile` but sets the profile function in all " "running threads belonging to the current interpreter instead of the setting " "it only on the current thread." msgstr "" -#: c-api/init.rst:2099 +#: c-api/init.rst:2126 msgid "" "As :c:func:`PyEval_SetProfile`, this function ignores any exceptions raised " "while setting the profile functions in all threads." msgstr "" -#: c-api/init.rst:2107 +#: c-api/init.rst:2134 msgid "" "Set the tracing function to *func*. This is similar to :c:func:" "`PyEval_SetProfile`, except the tracing function does receive line-number " @@ -2555,28 +2609,28 @@ msgid "" "*what* parameter." msgstr "" -#: c-api/init.rst:2114 +#: c-api/init.rst:2141 msgid "See also the :func:`sys.settrace` function." msgstr "" -#: c-api/init.rst:2120 +#: c-api/init.rst:2147 msgid "" "Like :c:func:`PyEval_SetTrace` but sets the tracing function in all running " "threads belonging to the current interpreter instead of the setting it only " "on the current thread." msgstr "" -#: c-api/init.rst:2125 +#: c-api/init.rst:2152 msgid "" "As :c:func:`PyEval_SetTrace`, this function ignores any exceptions raised " "while setting the trace functions in all threads." msgstr "" -#: c-api/init.rst:2131 +#: c-api/init.rst:2158 msgid "Reference tracing" msgstr "" -#: c-api/init.rst:2137 +#: c-api/init.rst:2164 msgid "" "The type of the trace function registered using :c:func:" "`PyRefTracer_SetTracer`. The first parameter is a Python object that has " @@ -2586,19 +2640,19 @@ msgid "" "provided when :c:func:`PyRefTracer_SetTracer` was called." msgstr "" -#: c-api/init.rst:2147 +#: c-api/init.rst:2174 msgid "" "The value for the *event* parameter to :c:type:`PyRefTracer` functions when " "a Python object has been created." msgstr "" -#: c-api/init.rst:2152 +#: c-api/init.rst:2179 msgid "" "The value for the *event* parameter to :c:type:`PyRefTracer` functions when " "a Python object has been destroyed." msgstr "" -#: c-api/init.rst:2157 +#: c-api/init.rst:2184 msgid "" "Register a reference tracer function. The function will be called when a new " "Python has been created or when an object is going to be destroyed. If " @@ -2607,7 +2661,7 @@ msgid "" "return ``-1`` on error." msgstr "" -#: c-api/init.rst:2163 +#: c-api/init.rst:2190 msgid "" "Not that tracer functions **must not** create Python objects inside or " "otherwise the call will be re-entrant. The tracer also **must not** clear " @@ -2615,12 +2669,12 @@ msgid "" "active every time the tracer function is called." msgstr "" -#: c-api/init.rst:2179 +#: c-api/init.rst:2206 msgid "" "There must be an :term:`attached thread state` when calling this function." msgstr "" -#: c-api/init.rst:2174 +#: c-api/init.rst:2201 msgid "" "Get the registered reference tracer function and the value of the opaque " "data pointer that was registered when :c:func:`PyRefTracer_SetTracer` was " @@ -2628,48 +2682,48 @@ msgid "" "set the **data** pointer to NULL." msgstr "" -#: c-api/init.rst:2186 +#: c-api/init.rst:2213 msgid "Advanced Debugger Support" msgstr "" -#: c-api/init.rst:2191 +#: c-api/init.rst:2218 msgid "" "These functions are only intended to be used by advanced debugging tools." msgstr "" -#: c-api/init.rst:2196 +#: c-api/init.rst:2223 msgid "" "Return the interpreter state object at the head of the list of all such " "objects." msgstr "" -#: c-api/init.rst:2201 +#: c-api/init.rst:2228 msgid "Return the main interpreter state object." msgstr "" -#: c-api/init.rst:2206 +#: c-api/init.rst:2233 msgid "" "Return the next interpreter state object after *interp* from the list of all " "such objects." msgstr "" -#: c-api/init.rst:2212 +#: c-api/init.rst:2239 msgid "" "Return the pointer to the first :c:type:`PyThreadState` object in the list " "of threads associated with the interpreter *interp*." msgstr "" -#: c-api/init.rst:2218 +#: c-api/init.rst:2245 msgid "" "Return the next thread state object after *tstate* from the list of all such " "objects belonging to the same :c:type:`PyInterpreterState` object." msgstr "" -#: c-api/init.rst:2225 +#: c-api/init.rst:2252 msgid "Thread Local Storage Support" msgstr "" -#: c-api/init.rst:2229 +#: c-api/init.rst:2256 msgid "" "The Python interpreter provides low-level support for thread-local storage " "(TLS) which wraps the underlying native TLS implementation to support the " @@ -2679,19 +2733,19 @@ msgid "" "thread." msgstr "" -#: c-api/init.rst:2236 +#: c-api/init.rst:2263 msgid "" "A :term:`thread state` does *not* need to be :term:`attached ` when calling these functions; they suppl their own locking." msgstr "" -#: c-api/init.rst:2239 +#: c-api/init.rst:2266 msgid "" "Note that :file:`Python.h` does not include the declaration of the TLS APIs, " "you need to include :file:`pythread.h` to use thread-local storage." msgstr "" -#: c-api/init.rst:2243 +#: c-api/init.rst:2270 msgid "" "None of these API functions handle memory management on behalf of the :c:" "expr:`void*` values. You need to allocate and deallocate them yourself. If " @@ -2699,22 +2753,22 @@ msgid "" "don't do refcount operations on them either." msgstr "" -#: c-api/init.rst:2251 +#: c-api/init.rst:2278 msgid "Thread Specific Storage (TSS) API" msgstr "" -#: c-api/init.rst:2253 +#: c-api/init.rst:2280 msgid "" "TSS API is introduced to supersede the use of the existing TLS API within " "the CPython interpreter. This API uses a new type :c:type:`Py_tss_t` " "instead of :c:expr:`int` to represent thread keys." msgstr "" -#: c-api/init.rst:2259 +#: c-api/init.rst:2286 msgid "\"A New C-API for Thread-Local Storage in CPython\" (:pep:`539`)" msgstr "" -#: c-api/init.rst:2264 +#: c-api/init.rst:2291 msgid "" "This data structure represents the state of a thread key, the definition of " "which may depend on the underlying TLS implementation, and it has an " @@ -2722,52 +2776,52 @@ msgid "" "public members in this structure." msgstr "" -#: c-api/init.rst:2269 +#: c-api/init.rst:2296 msgid "" "When :ref:`Py_LIMITED_API ` is not defined, static allocation of " "this type by :c:macro:`Py_tss_NEEDS_INIT` is allowed." msgstr "" -#: c-api/init.rst:2275 +#: c-api/init.rst:2302 msgid "" "This macro expands to the initializer for :c:type:`Py_tss_t` variables. Note " "that this macro won't be defined with :ref:`Py_LIMITED_API `." msgstr "" -#: c-api/init.rst:2280 +#: c-api/init.rst:2307 msgid "Dynamic Allocation" msgstr "" -#: c-api/init.rst:2282 +#: c-api/init.rst:2309 msgid "" "Dynamic allocation of the :c:type:`Py_tss_t`, required in extension modules " "built with :ref:`Py_LIMITED_API `, where static allocation of this " "type is not possible due to its implementation being opaque at build time." msgstr "" -#: c-api/init.rst:2289 +#: c-api/init.rst:2316 msgid "" "Return a value which is the same state as a value initialized with :c:macro:" "`Py_tss_NEEDS_INIT`, or ``NULL`` in the case of dynamic allocation failure." msgstr "" -#: c-api/init.rst:2296 +#: c-api/init.rst:2323 msgid "" "Free the given *key* allocated by :c:func:`PyThread_tss_alloc`, after first " "calling :c:func:`PyThread_tss_delete` to ensure any associated thread locals " "have been unassigned. This is a no-op if the *key* argument is ``NULL``." msgstr "" -#: c-api/init.rst:2302 +#: c-api/init.rst:2329 msgid "" "A freed key becomes a dangling pointer. You should reset the key to ``NULL``." msgstr "" -#: c-api/init.rst:2307 +#: c-api/init.rst:2334 msgid "Methods" msgstr "" -#: c-api/init.rst:2309 +#: c-api/init.rst:2336 msgid "" "The parameter *key* of these functions must not be ``NULL``. Moreover, the " "behaviors of :c:func:`PyThread_tss_set` and :c:func:`PyThread_tss_get` are " @@ -2775,13 +2829,13 @@ msgid "" "func:`PyThread_tss_create`." msgstr "" -#: c-api/init.rst:2317 +#: c-api/init.rst:2344 msgid "" "Return a non-zero value if the given :c:type:`Py_tss_t` has been initialized " "by :c:func:`PyThread_tss_create`." msgstr "" -#: c-api/init.rst:2323 +#: c-api/init.rst:2350 msgid "" "Return a zero value on successful initialization of a TSS key. The behavior " "is undefined if the value pointed to by the *key* argument is not " @@ -2790,7 +2844,7 @@ msgid "" "no-op and immediately returns success." msgstr "" -#: c-api/init.rst:2332 +#: c-api/init.rst:2359 msgid "" "Destroy a TSS key to forget the values associated with the key across all " "threads, and change the key's initialization state to uninitialized. A " @@ -2799,31 +2853,31 @@ msgid "" "key -- calling it on an already destroyed key is a no-op." msgstr "" -#: c-api/init.rst:2341 +#: c-api/init.rst:2368 msgid "" "Return a zero value to indicate successfully associating a :c:expr:`void*` " "value with a TSS key in the current thread. Each thread has a distinct " "mapping of the key to a :c:expr:`void*` value." msgstr "" -#: c-api/init.rst:2348 +#: c-api/init.rst:2375 msgid "" "Return the :c:expr:`void*` value associated with a TSS key in the current " "thread. This returns ``NULL`` if no value is associated with the key in the " "current thread." msgstr "" -#: c-api/init.rst:2356 +#: c-api/init.rst:2383 msgid "Thread Local Storage (TLS) API" msgstr "" -#: c-api/init.rst:2358 +#: c-api/init.rst:2385 msgid "" "This API is superseded by :ref:`Thread Specific Storage (TSS) API `." msgstr "" -#: c-api/init.rst:2363 +#: c-api/init.rst:2390 msgid "" "This version of the API does not support platforms where the native TLS key " "is defined in a way that cannot be safely cast to ``int``. On such " @@ -2832,45 +2886,45 @@ msgid "" "platforms." msgstr "" -#: c-api/init.rst:2368 +#: c-api/init.rst:2395 msgid "" "Due to the compatibility problem noted above, this version of the API should " "not be used in new code." msgstr "" -#: c-api/init.rst:2379 +#: c-api/init.rst:2406 msgid "Synchronization Primitives" msgstr "" -#: c-api/init.rst:2381 +#: c-api/init.rst:2408 msgid "The C-API provides a basic mutual exclusion lock." msgstr "" -#: c-api/init.rst:2385 +#: c-api/init.rst:2412 msgid "" "A mutual exclusion lock. The :c:type:`!PyMutex` should be initialized to " "zero to represent the unlocked state. For example::" msgstr "" -#: c-api/init.rst:2388 +#: c-api/init.rst:2415 msgid "PyMutex mutex = {0};" msgstr "" -#: c-api/init.rst:2390 +#: c-api/init.rst:2417 msgid "" "Instances of :c:type:`!PyMutex` should not be copied or moved. Both the " "contents and address of a :c:type:`!PyMutex` are meaningful, and it must " "remain at a fixed, writable location in memory." msgstr "" -#: c-api/init.rst:2396 +#: c-api/init.rst:2423 msgid "" "A :c:type:`!PyMutex` currently occupies one byte, but the size should be " "considered unstable. The size may change in future Python releases without " "a deprecation period." msgstr "" -#: c-api/init.rst:2404 +#: c-api/init.rst:2431 msgid "" "Lock mutex *m*. If another thread has already locked it, the calling thread " "will block until the mutex is unlocked. While blocked, the thread will " @@ -2878,17 +2932,17 @@ msgid "" "exists." msgstr "" -#: c-api/init.rst:2412 +#: c-api/init.rst:2439 msgid "" "Unlock mutex *m*. The mutex must be locked --- otherwise, the function will " "issue a fatal error." msgstr "" -#: c-api/init.rst:2420 +#: c-api/init.rst:2447 msgid "Python Critical Section API" msgstr "" -#: c-api/init.rst:2422 +#: c-api/init.rst:2449 msgid "" "The critical section API provides a deadlock avoidance layer on top of per-" "object locks for :term:`free-threaded ` CPython. They are " @@ -2896,7 +2950,7 @@ msgid "" "no-ops in versions of Python with the global interpreter lock." msgstr "" -#: c-api/init.rst:2427 +#: c-api/init.rst:2454 msgid "" "Critical sections avoid deadlocks by implicitly suspending active critical " "sections and releasing the locks during calls to :c:func:" @@ -2906,7 +2960,7 @@ msgid "" "-- they are useful because their behavior is similar to the :term:`GIL`." msgstr "" -#: c-api/init.rst:2434 +#: c-api/init.rst:2461 msgid "" "The functions and structs used by the macros are exposed for cases where C " "macros are not available. They should only be used as in the given macro " @@ -2914,7 +2968,7 @@ msgid "" "future Python versions." msgstr "" -#: c-api/init.rst:2441 +#: c-api/init.rst:2468 msgid "" "Operations that need to lock two objects at once must use :c:macro:" "`Py_BEGIN_CRITICAL_SECTION2`. You *cannot* use nested critical sections to " @@ -2923,11 +2977,11 @@ msgid "" "lock more than two objects at once." msgstr "" -#: c-api/init.rst:2447 +#: c-api/init.rst:2474 msgid "Example usage::" msgstr "" -#: c-api/init.rst:2449 +#: c-api/init.rst:2476 msgid "" "static PyObject *\n" "set_field(MyObject *self, PyObject *value)\n" @@ -2939,7 +2993,7 @@ msgid "" "}" msgstr "" -#: c-api/init.rst:2458 +#: c-api/init.rst:2485 msgid "" "In the above example, :c:macro:`Py_SETREF` calls :c:macro:`Py_DECREF`, which " "can call arbitrary code through an object's deallocation function. The " @@ -2949,60 +3003,60 @@ msgid "" "`PyEval_SaveThread`." msgstr "" -#: c-api/init.rst:2466 +#: c-api/init.rst:2493 msgid "" "Acquires the per-object lock for the object *op* and begins a critical " "section." msgstr "" -#: c-api/init.rst:2483 c-api/init.rst:2512 +#: c-api/init.rst:2510 c-api/init.rst:2539 msgid "In the free-threaded build, this macro expands to::" msgstr "" -#: c-api/init.rst:2471 +#: c-api/init.rst:2498 msgid "" "{\n" " PyCriticalSection _py_cs;\n" " PyCriticalSection_Begin(&_py_cs, (PyObject*)(op))" msgstr "" -#: c-api/init.rst:2504 +#: c-api/init.rst:2531 msgid "In the default build, this macro expands to ``{``." msgstr "" -#: c-api/init.rst:2481 +#: c-api/init.rst:2508 msgid "Ends the critical section and releases the per-object lock." msgstr "" -#: c-api/init.rst:2485 +#: c-api/init.rst:2512 msgid "" " PyCriticalSection_End(&_py_cs);\n" "}" msgstr "" -#: c-api/init.rst:2517 +#: c-api/init.rst:2544 msgid "In the default build, this macro expands to ``}``." msgstr "" -#: c-api/init.rst:2494 +#: c-api/init.rst:2521 msgid "" "Acquires the per-objects locks for the objects *a* and *b* and begins a " "critical section. The locks are acquired in a consistent order (lowest " "address first) to avoid lock ordering deadlocks." msgstr "" -#: c-api/init.rst:2500 +#: c-api/init.rst:2527 msgid "" "{\n" " PyCriticalSection2 _py_cs2;\n" " PyCriticalSection2_Begin(&_py_cs2, (PyObject*)(a), (PyObject*)(b))" msgstr "" -#: c-api/init.rst:2510 +#: c-api/init.rst:2537 msgid "Ends the critical section and releases the per-object locks." msgstr "" -#: c-api/init.rst:2514 +#: c-api/init.rst:2541 msgid "" " PyCriticalSection2_End(&_py_cs2);\n" "}" @@ -3016,146 +3070,146 @@ msgstr "" msgid "modules (in module sys)" msgstr "" -#: c-api/init.rst:726 +#: c-api/init.rst:712 msgid "path (in module sys)" msgstr "" -#: c-api/init.rst:726 c-api/init.rst:1723 c-api/init.rst:1822 +#: c-api/init.rst:712 c-api/init.rst:1750 c-api/init.rst:1849 msgid "module" msgstr "" -#: c-api/init.rst:1723 c-api/init.rst:1822 +#: c-api/init.rst:1750 c-api/init.rst:1849 msgid "builtins" msgstr "" -#: c-api/init.rst:1723 c-api/init.rst:1822 +#: c-api/init.rst:1750 c-api/init.rst:1849 msgid "__main__" msgstr "" -#: c-api/init.rst:1723 c-api/init.rst:1822 +#: c-api/init.rst:1750 c-api/init.rst:1849 msgid "sys" msgstr "" -#: c-api/init.rst:726 +#: c-api/init.rst:712 msgid "search" msgstr "" -#: c-api/init.rst:726 +#: c-api/init.rst:712 msgid "path" msgstr "" -#: c-api/init.rst:1787 c-api/init.rst:1840 +#: c-api/init.rst:1814 c-api/init.rst:1867 msgid "Py_FinalizeEx (C function)" msgstr "" -#: c-api/init.rst:586 +#: c-api/init.rst:572 msgid "Py_Initialize()" msgstr "" -#: c-api/init.rst:824 +#: c-api/init.rst:810 msgid "main()" msgstr "" -#: c-api/init.rst:586 +#: c-api/init.rst:572 msgid "Py_GetPath()" msgstr "" -#: c-api/init.rst:704 +#: c-api/init.rst:690 msgid "executable (in module sys)" msgstr "" -#: c-api/init.rst:801 c-api/init.rst:815 +#: c-api/init.rst:787 c-api/init.rst:801 msgid "version (in module sys)" msgstr "" -#: c-api/init.rst:771 +#: c-api/init.rst:757 msgid "platform (in module sys)" msgstr "" -#: c-api/init.rst:788 +#: c-api/init.rst:774 msgid "copyright (in module sys)" msgstr "" -#: c-api/init.rst:824 +#: c-api/init.rst:810 msgid "Py_FatalError()" msgstr "" -#: c-api/init.rst:824 +#: c-api/init.rst:810 msgid "argv (in module sys)" msgstr "" -#: c-api/init.rst:944 +#: c-api/init.rst:930 msgid "global interpreter lock" msgstr "" -#: c-api/init.rst:944 +#: c-api/init.rst:930 msgid "interpreter lock" msgstr "" -#: c-api/init.rst:944 +#: c-api/init.rst:930 msgid "lock, interpreter" msgstr "" -#: c-api/init.rst:958 +#: c-api/init.rst:944 msgid "setswitchinterval (in module sys)" msgstr "" -#: c-api/init.rst:967 +#: c-api/init.rst:953 msgid "PyThreadState (C type)" msgstr "" -#: c-api/init.rst:1003 +#: c-api/init.rst:989 msgid "Py_BEGIN_ALLOW_THREADS (C macro)" msgstr "" -#: c-api/init.rst:1003 +#: c-api/init.rst:989 msgid "Py_END_ALLOW_THREADS (C macro)" msgstr "" -#: c-api/init.rst:1019 +#: c-api/init.rst:1005 msgid "PyEval_RestoreThread (C function)" msgstr "" -#: c-api/init.rst:1019 +#: c-api/init.rst:1005 msgid "PyEval_SaveThread (C function)" msgstr "" -#: c-api/init.rst:1186 +#: c-api/init.rst:1200 msgid "PyEval_AcquireThread()" msgstr "" -#: c-api/init.rst:1186 +#: c-api/init.rst:1200 msgid "PyEval_ReleaseThread()" msgstr "" -#: c-api/init.rst:1186 +#: c-api/init.rst:1200 msgid "PyEval_SaveThread()" msgstr "" -#: c-api/init.rst:1186 +#: c-api/init.rst:1200 msgid "PyEval_RestoreThread()" msgstr "" -#: c-api/init.rst:1208 +#: c-api/init.rst:1222 msgid "_thread" msgstr "" -#: c-api/init.rst:1822 +#: c-api/init.rst:1849 msgid "stdout (in module sys)" msgstr "" -#: c-api/init.rst:1822 +#: c-api/init.rst:1849 msgid "stderr (in module sys)" msgstr "" -#: c-api/init.rst:1822 +#: c-api/init.rst:1849 msgid "stdin (in module sys)" msgstr "" -#: c-api/init.rst:1787 +#: c-api/init.rst:1814 msgid "Py_Initialize (C function)" msgstr "" -#: c-api/init.rst:1817 +#: c-api/init.rst:1844 msgid "close (in module os)" msgstr "" diff --git a/c-api/init_config.po b/c-api/init_config.po index abb72e1a..0f5ad363 100644 --- a/c-api/init_config.po +++ b/c-api/init_config.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/intro.po b/c-api/intro.po index 820ff008..019d7a7c 100644 --- a/c-api/intro.po +++ b/c-api/intro.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -168,143 +168,113 @@ msgstr "" #: c-api/intro.rst:113 msgid "" "Several useful macros are defined in the Python header files. Many are " -"defined closer to where they are useful (e.g. :c:macro:`Py_RETURN_NONE`). " -"Others of a more general utility are defined here. This is not necessarily " -"a complete listing." +"defined closer to where they are useful (for example, :c:macro:" +"`Py_RETURN_NONE`, :c:macro:`PyMODINIT_FUNC`). Others of a more general " +"utility are defined here. This is not necessarily a complete listing." msgstr "" -#: c-api/intro.rst:120 -msgid "" -"Declare an extension module ``PyInit`` initialization function. The function " -"return type is :c:expr:`PyObject*`. The macro declares any special linkage " -"declarations required by the platform, and for C++ declares the function as " -"``extern \"C\"``." -msgstr "" - -#: c-api/intro.rst:125 -msgid "" -"The initialization function must be named :samp:`PyInit_{name}`, where " -"*name* is the name of the module, and should be the only non-\\ ``static`` " -"item defined in the module file. Example::" -msgstr "" - -#: c-api/intro.rst:129 -msgid "" -"static struct PyModuleDef spam_module = {\n" -" PyModuleDef_HEAD_INIT,\n" -" .m_name = \"spam\",\n" -" ...\n" -"};\n" -"\n" -"PyMODINIT_FUNC\n" -"PyInit_spam(void)\n" -"{\n" -" return PyModule_Create(&spam_module);\n" -"}" -msgstr "" - -#: c-api/intro.rst:144 +#: c-api/intro.rst:122 msgid "Return the absolute value of ``x``." msgstr "" -#: c-api/intro.rst:150 +#: c-api/intro.rst:128 msgid "" "Ask the compiler to always inline a static inline function. The compiler can " "ignore it and decide to not inline the function." msgstr "" -#: c-api/intro.rst:153 +#: c-api/intro.rst:131 msgid "" "It can be used to inline performance critical static inline functions when " "building Python in debug mode with function inlining disabled. For example, " "MSC disables function inlining when building in debug mode." msgstr "" -#: c-api/intro.rst:157 +#: c-api/intro.rst:135 msgid "" "Marking blindly a static inline function with Py_ALWAYS_INLINE can result in " "worse performances (due to increased code size for example). The compiler is " "usually smarter than the developer for the cost/benefit analysis." msgstr "" -#: c-api/intro.rst:161 +#: c-api/intro.rst:139 msgid "" "If Python is :ref:`built in debug mode ` (if the :c:macro:" "`Py_DEBUG` macro is defined), the :c:macro:`Py_ALWAYS_INLINE` macro does " "nothing." msgstr "" -#: c-api/intro.rst:164 +#: c-api/intro.rst:142 msgid "It must be specified before the function return type. Usage::" msgstr "" -#: c-api/intro.rst:166 +#: c-api/intro.rst:144 msgid "static inline Py_ALWAYS_INLINE int random(void) { return 4; }" msgstr "" -#: c-api/intro.rst:172 +#: c-api/intro.rst:150 msgid "" "Argument must be a character or an integer in the range [-128, 127] or [0, " "255]. This macro returns ``c`` cast to an ``unsigned char``." msgstr "" -#: c-api/intro.rst:177 +#: c-api/intro.rst:155 msgid "" "Use this for deprecated declarations. The macro must be placed before the " "symbol name." msgstr "" -#: c-api/intro.rst:266 c-api/intro.rst:284 +#: c-api/intro.rst:244 c-api/intro.rst:262 msgid "Example::" msgstr "" -#: c-api/intro.rst:182 +#: c-api/intro.rst:160 msgid "Py_DEPRECATED(3.8) PyAPI_FUNC(int) Py_OldFunction(void);" msgstr "" -#: c-api/intro.rst:184 +#: c-api/intro.rst:162 msgid "MSVC support was added." msgstr "" -#: c-api/intro.rst:189 +#: c-api/intro.rst:167 msgid "" "Like ``getenv(s)``, but returns ``NULL`` if :option:`-E` was passed on the " "command line (see :c:member:`PyConfig.use_environment`)." msgstr "" -#: c-api/intro.rst:194 +#: c-api/intro.rst:172 msgid "Return the maximum value between ``x`` and ``y``." msgstr "" -#: c-api/intro.rst:200 +#: c-api/intro.rst:178 msgid "Return the size of a structure (``type``) ``member`` in bytes." msgstr "" -#: c-api/intro.rst:206 +#: c-api/intro.rst:184 msgid "Return the minimum value between ``x`` and ``y``." msgstr "" -#: c-api/intro.rst:212 +#: c-api/intro.rst:190 msgid "" "Disable inlining on a function. For example, it reduces the C stack " "consumption: useful on LTO+PGO builds which heavily inline code (see :issue:" "`33720`)." msgstr "" -#: c-api/intro.rst:216 +#: c-api/intro.rst:194 msgid "Usage::" msgstr "" -#: c-api/intro.rst:218 +#: c-api/intro.rst:196 msgid "Py_NO_INLINE static int random(void) { return 4; }" msgstr "" -#: c-api/intro.rst:224 +#: c-api/intro.rst:202 msgid "" "Convert ``x`` to a C string. E.g. ``Py_STRINGIFY(123)`` returns ``\"123\"``." msgstr "" -#: c-api/intro.rst:231 +#: c-api/intro.rst:209 msgid "" "Use this when you have a code path that cannot be reached by design. For " "example, in the ``default:`` clause in a ``switch`` statement for which all " @@ -312,20 +282,20 @@ msgid "" "where you might be tempted to put an ``assert(0)`` or ``abort()`` call." msgstr "" -#: c-api/intro.rst:236 +#: c-api/intro.rst:214 msgid "" "In release mode, the macro helps the compiler to optimize the code, and " "avoids a warning about unreachable code. For example, the macro is " "implemented with ``__builtin_unreachable()`` on GCC in release mode." msgstr "" -#: c-api/intro.rst:240 +#: c-api/intro.rst:218 msgid "" "A use for ``Py_UNREACHABLE()`` is following a call a function that never " "returns but that is not declared :c:macro:`_Py_NO_RETURN`." msgstr "" -#: c-api/intro.rst:243 +#: c-api/intro.rst:221 msgid "" "If a code path is very unlikely code but can be reached under exceptional " "case, this macro must not be used. For example, under low memory condition " @@ -334,25 +304,25 @@ msgid "" "reported to caller, :c:func:`Py_FatalError` can be used." msgstr "" -#: c-api/intro.rst:253 +#: c-api/intro.rst:231 msgid "" "Use this for unused arguments in a function definition to silence compiler " "warnings. Example: ``int func(int a, int Py_UNUSED(b)) { return a; }``." msgstr "" -#: c-api/intro.rst:260 +#: c-api/intro.rst:238 msgid "" "Creates a variable with name ``name`` that can be used in docstrings. If " "Python is built without docstrings, the value will be empty." msgstr "" -#: c-api/intro.rst:263 +#: c-api/intro.rst:241 msgid "" "Use :c:macro:`PyDoc_STRVAR` for docstrings to support building Python " "without docstrings, as specified in :pep:`7`." msgstr "" -#: c-api/intro.rst:268 +#: c-api/intro.rst:246 msgid "" "PyDoc_STRVAR(pop_doc, \"Remove and return the rightmost element.\");\n" "\n" @@ -363,19 +333,19 @@ msgid "" "}" msgstr "" -#: c-api/intro.rst:278 +#: c-api/intro.rst:256 msgid "" "Creates a docstring for the given input string or an empty string if " "docstrings are disabled." msgstr "" -#: c-api/intro.rst:281 +#: c-api/intro.rst:259 msgid "" "Use :c:macro:`PyDoc_STR` in specifying docstrings to support building Python " "without docstrings, as specified in :pep:`7`." msgstr "" -#: c-api/intro.rst:286 +#: c-api/intro.rst:264 msgid "" "static PyMethodDef pysqlite_row_methods[] = {\n" " {\"keys\", (PyCFunction)pysqlite_row_keys, METH_NOARGS,\n" @@ -384,11 +354,11 @@ msgid "" "};" msgstr "" -#: c-api/intro.rst:296 +#: c-api/intro.rst:274 msgid "Objects, Types and Reference Counts" msgstr "" -#: c-api/intro.rst:300 +#: c-api/intro.rst:278 msgid "" "Most Python/C API functions have one or more arguments as well as a return " "value of type :c:expr:`PyObject*`. This type is a pointer to an opaque data " @@ -403,7 +373,7 @@ msgid "" "objects." msgstr "" -#: c-api/intro.rst:311 +#: c-api/intro.rst:289 msgid "" "All Python objects (even Python integers) have a :dfn:`type` and a :dfn:" "`reference count`. An object's type determines what kind of object it is (e." @@ -414,11 +384,11 @@ msgid "" "a Python list." msgstr "" -#: c-api/intro.rst:322 +#: c-api/intro.rst:300 msgid "Reference Counts" msgstr "" -#: c-api/intro.rst:324 +#: c-api/intro.rst:302 msgid "" "The reference count is important because today's computers have a finite " "(and often severely limited) memory size; it counts how many different " @@ -433,7 +403,7 @@ msgid "" "that.\")" msgstr "" -#: c-api/intro.rst:341 +#: c-api/intro.rst:319 msgid "" "Reference counts are always manipulated explicitly. The normal way is to " "use the macro :c:func:`Py_INCREF` to take a new reference to an object (i.e. " @@ -452,7 +422,7 @@ msgid "" "increment is a simple operation." msgstr "" -#: c-api/intro.rst:357 +#: c-api/intro.rst:335 msgid "" "It is not necessary to hold a :term:`strong reference` (i.e. increment the " "reference count) for every local variable that contains a pointer to an " @@ -470,7 +440,7 @@ msgid "" "reference to every argument for the duration of the call." msgstr "" -#: c-api/intro.rst:373 +#: c-api/intro.rst:351 msgid "" "However, a common pitfall is to extract an object from a list and hold on to " "it for a while without taking a new reference. Some other operation might " @@ -481,7 +451,7 @@ msgid "" "`Py_DECREF`, so almost any operation is potentially dangerous." msgstr "" -#: c-api/intro.rst:381 +#: c-api/intro.rst:359 msgid "" "A safe approach is to always use the generic operations (functions whose " "name begins with ``PyObject_``, ``PyNumber_``, ``PySequence_`` or " @@ -491,11 +461,11 @@ msgid "" "when they are done with the result; this soon becomes second nature." msgstr "" -#: c-api/intro.rst:392 +#: c-api/intro.rst:370 msgid "Reference Count Details" msgstr "" -#: c-api/intro.rst:394 +#: c-api/intro.rst:372 msgid "" "The reference count behavior of functions in the Python/C API is best " "explained in terms of *ownership of references*. Ownership pertains to " @@ -512,7 +482,7 @@ msgid "" "`borrowed reference`." msgstr "" -#: c-api/intro.rst:407 +#: c-api/intro.rst:385 msgid "" "Conversely, when a calling function passes in a reference to an object, " "there are two possibilities: the function *steals* a reference to the " @@ -521,7 +491,7 @@ msgid "" "reference, and you are not responsible for it any longer." msgstr "" -#: c-api/intro.rst:417 +#: c-api/intro.rst:395 msgid "" "Few functions steal references; the two notable exceptions are :c:func:" "`PyList_SetItem` and :c:func:`PyTuple_SetItem`, which steal a reference to " @@ -533,7 +503,7 @@ msgid "" "below)::" msgstr "" -#: c-api/intro.rst:425 +#: c-api/intro.rst:403 msgid "" "PyObject *t;\n" "\n" @@ -543,7 +513,7 @@ msgid "" "PyTuple_SetItem(t, 2, PyUnicode_FromString(\"three\"));" msgstr "" -#: c-api/intro.rst:432 +#: c-api/intro.rst:410 msgid "" "Here, :c:func:`PyLong_FromLong` returns a new reference which is immediately " "stolen by :c:func:`PyTuple_SetItem`. When you want to keep using an object " @@ -551,7 +521,7 @@ msgid "" "another reference before calling the reference-stealing function." msgstr "" -#: c-api/intro.rst:437 +#: c-api/intro.rst:415 msgid "" "Incidentally, :c:func:`PyTuple_SetItem` is the *only* way to set tuple " "items; :c:func:`PySequence_SetItem` and :c:func:`PyObject_SetItem` refuse to " @@ -559,13 +529,13 @@ msgid "" "func:`PyTuple_SetItem` for tuples that you are creating yourself." msgstr "" -#: c-api/intro.rst:442 +#: c-api/intro.rst:420 msgid "" "Equivalent code for populating a list can be written using :c:func:" "`PyList_New` and :c:func:`PyList_SetItem`." msgstr "" -#: c-api/intro.rst:445 +#: c-api/intro.rst:423 msgid "" "However, in practice, you will rarely use these ways of creating and " "populating a tuple or list. There's a generic function, :c:func:" @@ -574,7 +544,7 @@ msgid "" "be replaced by the following (which also takes care of the error checking)::" msgstr "" -#: c-api/intro.rst:451 +#: c-api/intro.rst:429 msgid "" "PyObject *tuple, *list;\n" "\n" @@ -582,7 +552,7 @@ msgid "" "list = Py_BuildValue(\"[iis]\", 1, 2, \"three\");" msgstr "" -#: c-api/intro.rst:456 +#: c-api/intro.rst:434 msgid "" "It is much more common to use :c:func:`PyObject_SetItem` and friends with " "items whose references you are only borrowing, like arguments that were " @@ -593,7 +563,7 @@ msgid "" "sequence) to a given item::" msgstr "" -#: c-api/intro.rst:463 +#: c-api/intro.rst:441 msgid "" "int\n" "set_all(PyObject *target, PyObject *item)\n" @@ -617,7 +587,7 @@ msgid "" "}" msgstr "" -#: c-api/intro.rst:486 +#: c-api/intro.rst:464 msgid "" "The situation is slightly different for function return values. While " "passing a reference to most functions does not change your ownership " @@ -630,7 +600,7 @@ msgid "" "becomes the owner of the reference)." msgstr "" -#: c-api/intro.rst:495 +#: c-api/intro.rst:473 msgid "" "It is important to realize that whether you own a reference returned by a " "function depends on which function you call only --- *the plumage* (the type " @@ -641,14 +611,14 @@ msgid "" "the same arguments), you do own a reference to the returned object." msgstr "" -#: c-api/intro.rst:507 +#: c-api/intro.rst:485 msgid "" "Here is an example of how you could write a function that computes the sum " "of the items in a list of integers; once using :c:func:`PyList_GetItem`, " "and once using :c:func:`PySequence_GetItem`. ::" msgstr "" -#: c-api/intro.rst:511 +#: c-api/intro.rst:489 msgid "" "long\n" "sum_list(PyObject *list)\n" @@ -673,7 +643,7 @@ msgid "" "}" msgstr "" -#: c-api/intro.rst:537 +#: c-api/intro.rst:515 msgid "" "long\n" "sum_sequence(PyObject *sequence)\n" @@ -704,11 +674,11 @@ msgid "" "}" msgstr "" -#: c-api/intro.rst:571 +#: c-api/intro.rst:549 msgid "Types" msgstr "" -#: c-api/intro.rst:573 +#: c-api/intro.rst:551 msgid "" "There are few other data types that play a significant role in the Python/C " "API; most are simple C types such as :c:expr:`int`, :c:expr:`long`, :c:expr:" @@ -719,7 +689,7 @@ msgid "" "that use them." msgstr "" -#: c-api/intro.rst:583 +#: c-api/intro.rst:561 msgid "" "A signed integral type such that ``sizeof(Py_ssize_t) == sizeof(size_t)``. " "C99 doesn't define such a thing directly (size_t is an unsigned integral " @@ -727,11 +697,11 @@ msgid "" "positive value of type :c:type:`Py_ssize_t`." msgstr "" -#: c-api/intro.rst:592 +#: c-api/intro.rst:570 msgid "Exceptions" msgstr "" -#: c-api/intro.rst:594 +#: c-api/intro.rst:572 msgid "" "The Python programmer only needs to deal with exceptions if specific error " "handling is required; unhandled exceptions are automatically propagated to " @@ -740,7 +710,7 @@ msgid "" "stack traceback." msgstr "" -#: c-api/intro.rst:602 +#: c-api/intro.rst:580 msgid "" "For C programmers, however, error checking always has to be explicit. All " "functions in the Python/C API can raise exceptions, unless an explicit claim " @@ -755,7 +725,7 @@ msgid "" "explicitly documented." msgstr "" -#: c-api/intro.rst:617 +#: c-api/intro.rst:595 msgid "" "Exception state is maintained in per-thread storage (this is equivalent to " "using global storage in an unthreaded application). A thread can be in one " @@ -768,7 +738,7 @@ msgid "" "clears the exception state." msgstr "" -#: c-api/intro.rst:627 +#: c-api/intro.rst:605 msgid "" "The full exception state consists of three objects (all of which can be " "``NULL``): the exception type, the corresponding exception value, and the " @@ -781,7 +751,7 @@ msgid "" "``sys.exc_info()`` and friends." msgstr "" -#: c-api/intro.rst:639 +#: c-api/intro.rst:617 msgid "" "Note that starting with Python 1.5, the preferred, thread-safe way to access " "the exception state from Python code is to call the function :func:`sys." @@ -795,7 +765,7 @@ msgid "" "referenced by the stack frames in the traceback." msgstr "" -#: c-api/intro.rst:650 +#: c-api/intro.rst:628 msgid "" "As a general principle, a function that calls another function to perform " "some task should check whether the called function raised an exception, and " @@ -806,7 +776,7 @@ msgid "" "of the error." msgstr "" -#: c-api/intro.rst:659 +#: c-api/intro.rst:637 msgid "" "A simple example of detecting exceptions and passing them on is shown in " "the :c:func:`!sum_sequence` example above. It so happens that this example " @@ -815,7 +785,7 @@ msgid "" "why you like Python, we show the equivalent Python code::" msgstr "" -#: c-api/intro.rst:665 +#: c-api/intro.rst:643 msgid "" "def incr_item(dict, key):\n" " try:\n" @@ -825,11 +795,11 @@ msgid "" " dict[key] = item + 1" msgstr "" -#: c-api/intro.rst:674 +#: c-api/intro.rst:652 msgid "Here is the corresponding C code, in all its glory::" msgstr "" -#: c-api/intro.rst:676 +#: c-api/intro.rst:654 msgid "" "int\n" "incr_item(PyObject *dict, PyObject *key)\n" @@ -875,7 +845,7 @@ msgid "" "}" msgstr "" -#: c-api/intro.rst:726 +#: c-api/intro.rst:704 msgid "" "This example represents an endorsed use of the ``goto`` statement in C! It " "illustrates the use of :c:func:`PyErr_ExceptionMatches` and :c:func:" @@ -888,11 +858,11 @@ msgid "" "success after the final call made is successful." msgstr "" -#: c-api/intro.rst:740 +#: c-api/intro.rst:718 msgid "Embedding Python" msgstr "" -#: c-api/intro.rst:742 +#: c-api/intro.rst:720 msgid "" "The one important task that only embedders (as opposed to extension writers) " "of the Python interpreter have to worry about is the initialization, and " @@ -900,7 +870,7 @@ msgid "" "the interpreter can only be used after the interpreter has been initialized." msgstr "" -#: c-api/intro.rst:755 +#: c-api/intro.rst:733 msgid "" "The basic initialization function is :c:func:`Py_Initialize`. This " "initializes the table of loaded modules, and creates the fundamental " @@ -908,7 +878,7 @@ msgid "" "initializes the module search path (``sys.path``)." msgstr "" -#: c-api/intro.rst:760 +#: c-api/intro.rst:738 msgid "" ":c:func:`Py_Initialize` does not set the \"script argument list\" (``sys." "argv``). If this variable is needed by Python code that will be executed " @@ -916,7 +886,7 @@ msgid "" "must be set: see :ref:`Python Initialization Configuration `." msgstr "" -#: c-api/intro.rst:765 +#: c-api/intro.rst:743 msgid "" "On most systems (in particular, on Unix and Windows, although the details " "are slightly different), :c:func:`Py_Initialize` calculates the module " @@ -928,7 +898,7 @@ msgid "" "on the shell command search path (the environment variable :envvar:`PATH`)." msgstr "" -#: c-api/intro.rst:774 +#: c-api/intro.rst:752 msgid "" "For instance, if the Python executable is found in :file:`/usr/local/bin/" "python`, it will assume that the libraries are in :file:`/usr/local/lib/" @@ -939,7 +909,7 @@ msgid "" "in front of the standard path by setting :envvar:`PYTHONPATH`." msgstr "" -#: c-api/intro.rst:788 +#: c-api/intro.rst:766 msgid "" "The embedding application can steer the search by setting :c:member:" "`PyConfig.program_name` *before* calling :c:func:`Py_InitializeFromConfig`. " @@ -950,7 +920,7 @@ msgid "" "func:`Py_GetProgramFullPath` (all defined in :file:`Modules/getpath.c`)." msgstr "" -#: c-api/intro.rst:799 +#: c-api/intro.rst:777 msgid "" "Sometimes, it is desirable to \"uninitialize\" Python. For instance, the " "application may want to start over (make another call to :c:func:" @@ -964,18 +934,18 @@ msgid "" "released." msgstr "" -#: c-api/intro.rst:813 +#: c-api/intro.rst:791 msgid "Debugging Builds" msgstr "" -#: c-api/intro.rst:815 +#: c-api/intro.rst:793 msgid "" "Python can be built with several macros to enable extra checks of the " "interpreter and extension modules. These checks tend to add a large amount " "of overhead to the runtime so they are not enabled by default." msgstr "" -#: c-api/intro.rst:819 +#: c-api/intro.rst:797 msgid "" "A full list of the various types of debugging builds is in the file :file:" "`Misc/SpecialBuilds.txt` in the Python source distribution. Builds are " @@ -985,7 +955,7 @@ msgid "" "section." msgstr "" -#: c-api/intro.rst:827 +#: c-api/intro.rst:805 msgid "" "Compiling the interpreter with the :c:macro:`!Py_DEBUG` macro defined " "produces what is generally meant by :ref:`a debug build of Python `." msgstr "" -#: c-api/intro.rst:838 +#: c-api/intro.rst:816 msgid "" "Defining :c:macro:`Py_TRACE_REFS` enables reference tracing (see the :option:" "`configure --with-trace-refs option <--with-trace-refs>`). When defined, a " @@ -1012,132 +982,206 @@ msgid "" "this happens after every statement run by the interpreter.)" msgstr "" -#: c-api/intro.rst:845 +#: c-api/intro.rst:823 msgid "" "Please refer to :file:`Misc/SpecialBuilds.txt` in the Python source " "distribution for more detailed information." msgstr "" -#: c-api/intro.rst:298 +#: c-api/intro.rst:830 +msgid "Recommended third party tools" +msgstr "" + +#: c-api/intro.rst:832 +msgid "" +"The following third party tools offer both simpler and more sophisticated " +"approaches to creating C, C++ and Rust extensions for Python:" +msgstr "" + +#: c-api/intro.rst:835 +msgid "`Cython `_" +msgstr "" + +#: c-api/intro.rst:836 +msgid "`cffi `_" +msgstr "" + +#: c-api/intro.rst:837 +msgid "`HPy `_" +msgstr "" + +#: c-api/intro.rst:838 +msgid "`nanobind `_ (C++)" +msgstr "" + +#: c-api/intro.rst:839 +msgid "`Numba `_" +msgstr "" + +#: c-api/intro.rst:840 +msgid "`pybind11 `_ (C++)" +msgstr "" + +#: c-api/intro.rst:841 +msgid "`PyO3 `_ (Rust)" +msgstr "" + +#: c-api/intro.rst:842 +msgid "`SWIG `_" +msgstr "" + +#: c-api/intro.rst:844 +msgid "" +"Using tools such as these can help avoid writing code that is tightly bound " +"to a particular version of CPython, avoid reference counting errors, and " +"focus more on your own code than on using the CPython API. In general, new " +"versions of Python can be supported by updating the tool, and your code will " +"often use newer and more efficient APIs automatically. Some tools also " +"support compiling for other implementations of Python from a single set of " +"sources." +msgstr "" + +#: c-api/intro.rst:851 +msgid "" +"These projects are not supported by the same people who maintain Python, and " +"issues need to be raised with the projects directly. Remember to check that " +"the project is still maintained and supported, as the list above may become " +"outdated." +msgstr "" + +#: c-api/intro.rst:858 +msgid "" +"`Python Packaging User Guide: Binary Extensions `_" +msgstr "" + +#: c-api/intro.rst:859 +msgid "" +"The Python Packaging User Guide not only covers several available tools that " +"simplify the creation of binary extensions, but also discusses the various " +"reasons why creating an extension module may be desirable in the first place." +msgstr "" + +#: c-api/intro.rst:276 msgid "object" msgstr "" -#: c-api/intro.rst:298 +#: c-api/intro.rst:276 msgid "type" msgstr "" -#: c-api/intro.rst:337 +#: c-api/intro.rst:315 msgid "Py_INCREF (C function)" msgstr "" -#: c-api/intro.rst:337 +#: c-api/intro.rst:315 msgid "Py_DECREF (C function)" msgstr "" -#: c-api/intro.rst:413 +#: c-api/intro.rst:391 msgid "PyList_SetItem (C function)" msgstr "" -#: c-api/intro.rst:413 +#: c-api/intro.rst:391 msgid "PyTuple_SetItem (C function)" msgstr "" -#: c-api/intro.rst:484 +#: c-api/intro.rst:462 msgid "set_all()" msgstr "" -#: c-api/intro.rst:503 +#: c-api/intro.rst:481 msgid "PyList_GetItem (C function)" msgstr "" -#: c-api/intro.rst:503 +#: c-api/intro.rst:481 msgid "PySequence_GetItem (C function)" msgstr "" -#: c-api/intro.rst:533 +#: c-api/intro.rst:511 msgid "sum_list()" msgstr "" -#: c-api/intro.rst:657 +#: c-api/intro.rst:635 msgid "sum_sequence()" msgstr "" -#: c-api/intro.rst:600 +#: c-api/intro.rst:578 msgid "PyErr_Occurred (C function)" msgstr "" -#: c-api/intro.rst:613 +#: c-api/intro.rst:591 msgid "PyErr_SetString (C function)" msgstr "" -#: c-api/intro.rst:721 +#: c-api/intro.rst:699 msgid "PyErr_Clear (C function)" msgstr "" -#: c-api/intro.rst:637 +#: c-api/intro.rst:615 msgid "exc_info (in module sys)" msgstr "" -#: c-api/intro.rst:719 +#: c-api/intro.rst:697 msgid "incr_item()" msgstr "" -#: c-api/intro.rst:721 +#: c-api/intro.rst:699 msgid "PyErr_ExceptionMatches (C function)" msgstr "" -#: c-api/intro.rst:721 +#: c-api/intro.rst:699 msgid "Py_XDECREF (C function)" msgstr "" -#: c-api/intro.rst:747 +#: c-api/intro.rst:725 msgid "Py_Initialize (C function)" msgstr "" -#: c-api/intro.rst:747 +#: c-api/intro.rst:725 msgid "module" msgstr "" -#: c-api/intro.rst:747 +#: c-api/intro.rst:725 msgid "builtins" msgstr "" -#: c-api/intro.rst:747 +#: c-api/intro.rst:725 msgid "__main__" msgstr "" -#: c-api/intro.rst:747 +#: c-api/intro.rst:725 msgid "sys" msgstr "" -#: c-api/intro.rst:747 +#: c-api/intro.rst:725 msgid "search" msgstr "" -#: c-api/intro.rst:747 +#: c-api/intro.rst:725 msgid "path" msgstr "" -#: c-api/intro.rst:747 +#: c-api/intro.rst:725 msgid "path (in module sys)" msgstr "" -#: c-api/intro.rst:782 +#: c-api/intro.rst:760 msgid "Py_GetPath (C function)" msgstr "" -#: c-api/intro.rst:782 +#: c-api/intro.rst:760 msgid "Py_GetPrefix (C function)" msgstr "" -#: c-api/intro.rst:782 +#: c-api/intro.rst:760 msgid "Py_GetExecPrefix (C function)" msgstr "" -#: c-api/intro.rst:782 +#: c-api/intro.rst:760 msgid "Py_GetProgramFullPath (C function)" msgstr "" -#: c-api/intro.rst:797 +#: c-api/intro.rst:775 msgid "Py_IsInitialized (C function)" msgstr "" diff --git a/c-api/iter.po b/c-api/iter.po index 8bb7b5aa..72d8bd95 100644 --- a/c-api/iter.po +++ b/c-api/iter.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/iterator.po b/c-api/iterator.po index 3b837f85..4d300363 100644 --- a/c-api/iterator.po +++ b/c-api/iterator.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/lifecycle.po b/c-api/lifecycle.po new file mode 100644 index 00000000..dd7d7eba --- /dev/null +++ b/c-api/lifecycle.po @@ -0,0 +1,358 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2001 Python Software Foundation +# This file is distributed under the same license as the Python package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Python 3.14\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: c-api/lifecycle.rst:6 +msgid "Object Life Cycle" +msgstr "" + +#: c-api/lifecycle.rst:8 +msgid "" +"This section explains how a type's slots relate to each other throughout the " +"life of an object. It is not intended to be a complete canonical reference " +"for the slots; instead, refer to the slot-specific documentation in :ref:" +"`type-structs` for details about a particular slot." +msgstr "" + +#: c-api/lifecycle.rst:15 +msgid "Life Events" +msgstr "" + +#: c-api/lifecycle.rst:17 +msgid "" +"The figure below illustrates the order of events that can occur throughout " +"an object's life. An arrow from *A* to *B* indicates that event *B* can " +"occur after event *A* has occurred, with the arrow's label indicating the " +"condition that must be true for *B* to occur after *A*." +msgstr "" + +#: c-api/lifecycle.rst:62 +msgid "Diagram showing events in an object's life. Explained in detail below." +msgstr "" + +#: c-api/lifecycle.rst:70 +msgid "Explanation:" +msgstr "" + +#: c-api/lifecycle.rst:72 +msgid "When a new object is constructed by calling its type:" +msgstr "" + +#: c-api/lifecycle.rst:74 +msgid ":c:member:`~PyTypeObject.tp_new` is called to create a new object." +msgstr "" + +#: c-api/lifecycle.rst:75 +msgid "" +":c:member:`~PyTypeObject.tp_alloc` is directly called by :c:member:" +"`~PyTypeObject.tp_new` to allocate the memory for the new object." +msgstr "" + +#: c-api/lifecycle.rst:78 +msgid "" +":c:member:`~PyTypeObject.tp_init` initializes the newly created object. :c:" +"member:`!tp_init` can be called again to re-initialize an object, if " +"desired. The :c:member:`!tp_init` call can also be skipped entirely, for " +"example by Python code calling :py:meth:`~object.__new__`." +msgstr "" + +#: c-api/lifecycle.rst:83 +msgid "After :c:member:`!tp_init` completes, the object is ready to use." +msgstr "" + +#: c-api/lifecycle.rst:84 +msgid "Some time after the last reference to an object is removed:" +msgstr "" + +#: c-api/lifecycle.rst:86 +msgid "" +"If an object is not marked as *finalized*, it might be finalized by marking " +"it as *finalized* and calling its :c:member:`~PyTypeObject.tp_finalize` " +"function. Python does *not* finalize an object when the last reference to " +"it is deleted; use :c:func:`PyObject_CallFinalizerFromDealloc` to ensure " +"that :c:member:`~PyTypeObject.tp_finalize` is always called." +msgstr "" + +#: c-api/lifecycle.rst:92 +msgid "" +"If the object is marked as finalized, :c:member:`~PyTypeObject.tp_clear` " +"might be called by the garbage collector to clear references held by the " +"object. It is *not* called when the object's reference count reaches zero." +msgstr "" + +#: c-api/lifecycle.rst:96 +msgid "" +":c:member:`~PyTypeObject.tp_dealloc` is called to destroy the object. To " +"avoid code duplication, :c:member:`~PyTypeObject.tp_dealloc` typically calls " +"into :c:member:`~PyTypeObject.tp_clear` to free up the object's references." +msgstr "" + +#: c-api/lifecycle.rst:100 +msgid "" +"When :c:member:`~PyTypeObject.tp_dealloc` finishes object destruction, it " +"directly calls :c:member:`~PyTypeObject.tp_free` (usually set to :c:func:" +"`PyObject_Free` or :c:func:`PyObject_GC_Del` automatically as appropriate " +"for the type) to deallocate the memory." +msgstr "" + +#: c-api/lifecycle.rst:105 +msgid "" +"The :c:member:`~PyTypeObject.tp_finalize` function is permitted to add a " +"reference to the object if desired. If it does, the object is " +"*resurrected*, preventing its pending destruction. (Only :c:member:`!" +"tp_finalize` is allowed to resurrect an object; :c:member:`~PyTypeObject." +"tp_clear` and :c:member:`~PyTypeObject.tp_dealloc` cannot without calling " +"into :c:member:`!tp_finalize`.) Resurrecting an object may or may not cause " +"the object's *finalized* mark to be removed. Currently, Python does not " +"remove the *finalized* mark from a resurrected object if it supports garbage " +"collection (i.e., the :c:macro:`Py_TPFLAGS_HAVE_GC` flag is set) but does " +"remove the mark if the object does not support garbage collection; either or " +"both of these behaviors may change in the future." +msgstr "" + +#: c-api/lifecycle.rst:118 +msgid "" +":c:member:`~PyTypeObject.tp_dealloc` can optionally call :c:member:" +"`~PyTypeObject.tp_finalize` via :c:func:`PyObject_CallFinalizerFromDealloc` " +"if it wishes to reuse that code to help with object destruction. This is " +"recommended because it guarantees that :c:member:`!tp_finalize` is always " +"called before destruction. See the :c:member:`~PyTypeObject.tp_dealloc` " +"documentation for example code." +msgstr "" + +#: c-api/lifecycle.rst:125 +msgid "" +"If the object is a member of a :term:`cyclic isolate` and either :c:member:" +"`~PyTypeObject.tp_clear` fails to break the reference cycle or the cyclic " +"isolate is not detected (perhaps :func:`gc.disable` was called, or the :c:" +"macro:`Py_TPFLAGS_HAVE_GC` flag was erroneously omitted in one of the " +"involved types), the objects remain indefinitely uncollectable (they " +"\"leak\"). See :data:`gc.garbage`." +msgstr "" + +#: c-api/lifecycle.rst:132 +msgid "" +"If the object is marked as supporting garbage collection (the :c:macro:" +"`Py_TPFLAGS_HAVE_GC` flag is set in :c:member:`~PyTypeObject.tp_flags`), the " +"following events are also possible:" +msgstr "" + +#: c-api/lifecycle.rst:136 +msgid "" +"The garbage collector occasionally calls :c:member:`~PyTypeObject." +"tp_traverse` to identify :term:`cyclic isolates `." +msgstr "" + +#: c-api/lifecycle.rst:139 +msgid "" +"When the garbage collector discovers a :term:`cyclic isolate`, it finalizes " +"one of the objects in the group by marking it as *finalized* and calling " +"its :c:member:`~PyTypeObject.tp_finalize` function, if it has one. This " +"repeats until the cyclic isolate doesn't exist or all of the objects have " +"been finalized." +msgstr "" + +#: c-api/lifecycle.rst:144 +msgid "" +":c:member:`~PyTypeObject.tp_finalize` is permitted to resurrect the object " +"by adding a reference from outside the :term:`cyclic isolate`. The new " +"reference causes the group of objects to no longer form a cyclic isolate " +"(the reference cycle may still exist, but if it does the objects are no " +"longer isolated)." +msgstr "" + +#: c-api/lifecycle.rst:149 +msgid "" +"When the garbage collector discovers a :term:`cyclic isolate` and all of the " +"objects in the group have already been marked as *finalized*, the garbage " +"collector clears one or more of the uncleared objects in the group (possibly " +"concurrently) by calling each's :c:member:`~PyTypeObject.tp_clear` " +"function. This repeats as long as the cyclic isolate still exists and not " +"all of the objects have been cleared." +msgstr "" + +#: c-api/lifecycle.rst:158 +msgid "Cyclic Isolate Destruction" +msgstr "" + +#: c-api/lifecycle.rst:160 +msgid "" +"Listed below are the stages of life of a hypothetical :term:`cyclic isolate` " +"that continues to exist after each member object is finalized or cleared. " +"It is a memory leak if a cyclic isolate progresses through all of these " +"stages; it should vanish once all objects are cleared, if not sooner. A " +"cyclic isolate can vanish either because the reference cycle is broken or " +"because the objects are no longer isolated due to finalizer resurrection " +"(see :c:member:`~PyTypeObject.tp_finalize`)." +msgstr "" + +#: c-api/lifecycle.rst:168 +msgid "" +"**Reachable** (not yet a cyclic isolate): All objects are in their normal, " +"reachable state. A reference cycle could exist, but an external reference " +"means the objects are not yet isolated." +msgstr "" + +#: c-api/lifecycle.rst:171 +msgid "" +"**Unreachable but consistent:** The final reference from outside the cyclic " +"group of objects has been removed, causing the objects to become isolated " +"(thus a cyclic isolate is born). None of the group's objects have been " +"finalized or cleared yet. The cyclic isolate remains at this stage until " +"some future run of the garbage collector (not necessarily the next run " +"because the next run might not scan every object)." +msgstr "" + +#: c-api/lifecycle.rst:177 +msgid "" +"**Mix of finalized and not finalized:** Objects in a cyclic isolate are " +"finalized one at a time, which means that there is a period of time when the " +"cyclic isolate is composed of a mix of finalized and non-finalized objects. " +"Finalization order is unspecified, so it can appear random. A finalized " +"object must behave in a sane manner when non-finalized objects interact with " +"it, and a non-finalized object must be able to tolerate the finalization of " +"an arbitrary subset of its referents." +msgstr "" + +#: c-api/lifecycle.rst:184 +msgid "" +"**All finalized:** All objects in a cyclic isolate are finalized before any " +"of them are cleared." +msgstr "" + +#: c-api/lifecycle.rst:186 +msgid "" +"**Mix of finalized and cleared:** The objects can be cleared serially or " +"concurrently (but with the :term:`GIL` held); either way, some will finish " +"before others. A finalized object must be able to tolerate the clearing of " +"a subset of its referents. :pep:`442` calls this stage \"cyclic trash\"." +msgstr "" + +#: c-api/lifecycle.rst:190 +msgid "" +"**Leaked:** If a cyclic isolate still exists after all objects in the group " +"have been finalized and cleared, then the objects remain indefinitely " +"uncollectable (see :data:`gc.garbage`). It is a bug if a cyclic isolate " +"reaches this stage---it means the :c:member:`~PyTypeObject.tp_clear` methods " +"of the participating objects have failed to break the reference cycle as " +"required." +msgstr "" + +#: c-api/lifecycle.rst:197 +msgid "" +"If :c:member:`~PyTypeObject.tp_clear` did not exist, then Python would have " +"no way to safely break a reference cycle. Simply destroying an object in a " +"cyclic isolate would result in a dangling pointer, triggering undefined " +"behavior when an object referencing the destroyed object is itself " +"destroyed. The clearing step makes object destruction a two-phase process: " +"first :c:member:`~PyTypeObject.tp_clear` is called to partially destroy the " +"objects enough to detangle them from each other, then :c:member:" +"`~PyTypeObject.tp_dealloc` is called to complete the destruction." +msgstr "" + +#: c-api/lifecycle.rst:206 +msgid "" +"Unlike clearing, finalization is not a phase of destruction. A finalized " +"object must still behave properly by continuing to fulfill its design " +"contracts. An object's finalizer is allowed to execute arbitrary Python " +"code, and is even allowed to prevent the impending destruction by adding a " +"reference. The finalizer is only related to destruction by call order---if " +"it runs, it runs before destruction, which starts with :c:member:" +"`~PyTypeObject.tp_clear` (if called) and concludes with :c:member:" +"`~PyTypeObject.tp_dealloc`." +msgstr "" + +#: c-api/lifecycle.rst:214 +msgid "" +"The finalization step is not necessary to safely reclaim the objects in a " +"cyclic isolate, but its existence makes it easier to design types that " +"behave in a sane manner when objects are cleared. Clearing an object might " +"necessarily leave it in a broken, partially destroyed state---it might be " +"unsafe to call any of the cleared object's methods or access any of its " +"attributes. With finalization, only finalized objects can possibly interact " +"with cleared objects; non-finalized objects are guaranteed to interact with " +"only non-cleared (but potentially finalized) objects." +msgstr "" + +#: c-api/lifecycle.rst:223 +msgid "To summarize the possible interactions:" +msgstr "" + +#: c-api/lifecycle.rst:225 +msgid "" +"A non-finalized object might have references to or from non-finalized and " +"finalized objects, but not to or from cleared objects." +msgstr "" + +#: c-api/lifecycle.rst:227 +msgid "" +"A finalized object might have references to or from non-finalized, " +"finalized, and cleared objects." +msgstr "" + +#: c-api/lifecycle.rst:229 +msgid "" +"A cleared object might have references to or from finalized and cleared " +"objects, but not to or from non-finalized objects." +msgstr "" + +#: c-api/lifecycle.rst:232 +msgid "" +"Without any reference cycles, an object can be simply destroyed once its " +"last reference is deleted; the finalization and clearing steps are not " +"necessary to safely reclaim unused objects. However, it can be useful to " +"automatically call :c:member:`~PyTypeObject.tp_finalize` and :c:member:" +"`~PyTypeObject.tp_clear` before destruction anyway because type design is " +"simplified when all objects always experience the same series of events " +"regardless of whether they participated in a cyclic isolate. Python " +"currently only calls :c:member:`~PyTypeObject.tp_finalize` and :c:member:" +"`~PyTypeObject.tp_clear` as needed to destroy a cyclic isolate; this may " +"change in a future version." +msgstr "" + +#: c-api/lifecycle.rst:244 +msgid "Functions" +msgstr "" + +#: c-api/lifecycle.rst:246 +msgid "To allocate and free memory, see :ref:`allocating-objects`." +msgstr "" + +#: c-api/lifecycle.rst:251 +msgid "" +"Finalizes the object as described in :c:member:`~PyTypeObject.tp_finalize`. " +"Call this function (or :c:func:`PyObject_CallFinalizerFromDealloc`) instead " +"of calling :c:member:`~PyTypeObject.tp_finalize` directly because this " +"function may deduplicate multiple calls to :c:member:`!tp_finalize`. " +"Currently, calls are only deduplicated if the type supports garbage " +"collection (i.e., the :c:macro:`Py_TPFLAGS_HAVE_GC` flag is set); this may " +"change in the future." +msgstr "" + +#: c-api/lifecycle.rst:262 +msgid "" +"Same as :c:func:`PyObject_CallFinalizer` but meant to be called at the " +"beginning of the object's destructor (:c:member:`~PyTypeObject.tp_dealloc`). " +"There must not be any references to the object. If the object's finalizer " +"resurrects the object, this function returns -1; no further destruction " +"should happen. Otherwise, this function returns 0 and destruction can " +"continue normally." +msgstr "" + +#: c-api/lifecycle.rst:271 +msgid ":c:member:`~PyTypeObject.tp_dealloc` for example code." +msgstr "" diff --git a/c-api/list.po b/c-api/list.po index 9cf81633..ac6372b4 100644 --- a/c-api/list.po +++ b/c-api/list.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/long.po b/c-api/long.po index 689ad85c..f35ab52e 100644 --- a/c-api/long.po +++ b/c-api/long.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/mapping.po b/c-api/mapping.po index 71a67bc7..dcca8519 100644 --- a/c-api/mapping.po +++ b/c-api/mapping.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/marshal.po b/c-api/marshal.po index 007b63d2..4132989f 100644 --- a/c-api/marshal.po +++ b/c-api/marshal.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/memory.po b/c-api/memory.po index e94a73d9..6d5f60fe 100644 --- a/c-api/memory.po +++ b/c-api/memory.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -460,282 +460,316 @@ msgid "" "called before, undefined behavior occurs." msgstr "" -#: c-api/memory.rst:383 +#: c-api/memory.rst:379 +msgid "" +"Do not call this directly to free an object's memory; call the type's :c:" +"member:`~PyTypeObject.tp_free` slot instead." +msgstr "" + +#: c-api/memory.rst:382 +msgid "" +"Do not use this for memory allocated by :c:macro:`PyObject_GC_New` or :c:" +"macro:`PyObject_GC_NewVar`; use :c:func:`PyObject_GC_Del` instead." +msgstr "" + +#: c-api/memory.rst:387 +msgid "" +":c:func:`PyObject_GC_Del` is the equivalent of this function for memory " +"allocated by types that support garbage collection." +msgstr "" + +#: c-api/memory.rst:486 +msgid ":c:func:`PyObject_Malloc`" +msgstr "" + +#: c-api/memory.rst:487 +msgid ":c:func:`PyObject_Realloc`" +msgstr "" + +#: c-api/memory.rst:488 +msgid ":c:func:`PyObject_Calloc`" +msgstr "" + +#: c-api/memory.rst:392 +msgid ":c:macro:`PyObject_New`" +msgstr "" + +#: c-api/memory.rst:393 +msgid ":c:macro:`PyObject_NewVar`" +msgstr "" + +#: c-api/memory.rst:394 +msgid ":c:func:`PyType_GenericAlloc`" +msgstr "" + +#: c-api/memory.rst:395 +msgid ":c:member:`~PyTypeObject.tp_free`" +msgstr "" + +#: c-api/memory.rst:401 msgid "Default Memory Allocators" msgstr "" -#: c-api/memory.rst:385 +#: c-api/memory.rst:403 msgid "Default memory allocators:" msgstr "" -#: c-api/memory.rst:388 +#: c-api/memory.rst:406 msgid "Configuration" msgstr "" -#: c-api/memory.rst:388 +#: c-api/memory.rst:406 msgid "Name" msgstr "" -#: c-api/memory.rst:388 +#: c-api/memory.rst:406 msgid "PyMem_RawMalloc" msgstr "" -#: c-api/memory.rst:388 +#: c-api/memory.rst:406 msgid "PyMem_Malloc" msgstr "" -#: c-api/memory.rst:388 +#: c-api/memory.rst:406 msgid "PyObject_Malloc" msgstr "" -#: c-api/memory.rst:390 +#: c-api/memory.rst:408 msgid "Release build" msgstr "" -#: c-api/memory.rst:390 +#: c-api/memory.rst:408 msgid "``\"pymalloc\"``" msgstr "" -#: c-api/memory.rst:392 +#: c-api/memory.rst:410 msgid "``malloc``" msgstr "" -#: c-api/memory.rst:390 +#: c-api/memory.rst:408 msgid "``pymalloc``" msgstr "" -#: c-api/memory.rst:391 +#: c-api/memory.rst:409 msgid "Debug build" msgstr "" -#: c-api/memory.rst:391 +#: c-api/memory.rst:409 msgid "``\"pymalloc_debug\"``" msgstr "" -#: c-api/memory.rst:393 +#: c-api/memory.rst:411 msgid "``malloc`` + debug" msgstr "" -#: c-api/memory.rst:391 +#: c-api/memory.rst:409 msgid "``pymalloc`` + debug" msgstr "" -#: c-api/memory.rst:392 +#: c-api/memory.rst:410 msgid "Release build, without pymalloc" msgstr "" -#: c-api/memory.rst:392 +#: c-api/memory.rst:410 msgid "``\"malloc\"``" msgstr "" -#: c-api/memory.rst:393 +#: c-api/memory.rst:411 msgid "Debug build, without pymalloc" msgstr "" -#: c-api/memory.rst:393 +#: c-api/memory.rst:411 msgid "``\"malloc_debug\"``" msgstr "" -#: c-api/memory.rst:396 +#: c-api/memory.rst:414 msgid "Legend:" msgstr "" -#: c-api/memory.rst:398 +#: c-api/memory.rst:416 msgid "Name: value for :envvar:`PYTHONMALLOC` environment variable." msgstr "" -#: c-api/memory.rst:399 +#: c-api/memory.rst:417 msgid "" "``malloc``: system allocators from the standard C library, C functions: :c:" "func:`malloc`, :c:func:`calloc`, :c:func:`realloc` and :c:func:`free`." msgstr "" -#: c-api/memory.rst:401 +#: c-api/memory.rst:419 msgid "``pymalloc``: :ref:`pymalloc memory allocator `." msgstr "" -#: c-api/memory.rst:402 +#: c-api/memory.rst:420 msgid "" "``mimalloc``: :ref:`mimalloc memory allocator `. The pymalloc " "allocator will be used if mimalloc support isn't available." msgstr "" -#: c-api/memory.rst:404 +#: c-api/memory.rst:422 msgid "" "\"+ debug\": with :ref:`debug hooks on the Python memory allocators `." msgstr "" -#: c-api/memory.rst:406 +#: c-api/memory.rst:424 msgid "\"Debug build\": :ref:`Python build in debug mode `." msgstr "" -#: c-api/memory.rst:411 +#: c-api/memory.rst:429 msgid "Customize Memory Allocators" msgstr "" -#: c-api/memory.rst:417 +#: c-api/memory.rst:435 msgid "" "Structure used to describe a memory block allocator. The structure has the " "following fields:" msgstr "" -#: c-api/memory.rst:668 +#: c-api/memory.rst:686 msgid "Field" msgstr "" -#: c-api/memory.rst:668 +#: c-api/memory.rst:686 msgid "Meaning" msgstr "" -#: c-api/memory.rst:670 +#: c-api/memory.rst:688 msgid "``void *ctx``" msgstr "" -#: c-api/memory.rst:670 +#: c-api/memory.rst:688 msgid "user context passed as first argument" msgstr "" -#: c-api/memory.rst:425 +#: c-api/memory.rst:443 msgid "``void* malloc(void *ctx, size_t size)``" msgstr "" -#: c-api/memory.rst:425 +#: c-api/memory.rst:443 msgid "allocate a memory block" msgstr "" -#: c-api/memory.rst:427 +#: c-api/memory.rst:445 msgid "``void* calloc(void *ctx, size_t nelem, size_t elsize)``" msgstr "" -#: c-api/memory.rst:427 +#: c-api/memory.rst:445 msgid "allocate a memory block initialized with zeros" msgstr "" -#: c-api/memory.rst:430 +#: c-api/memory.rst:448 msgid "``void* realloc(void *ctx, void *ptr, size_t new_size)``" msgstr "" -#: c-api/memory.rst:430 +#: c-api/memory.rst:448 msgid "allocate or resize a memory block" msgstr "" -#: c-api/memory.rst:432 +#: c-api/memory.rst:450 msgid "``void free(void *ctx, void *ptr)``" msgstr "" -#: c-api/memory.rst:432 +#: c-api/memory.rst:450 msgid "free a memory block" msgstr "" -#: c-api/memory.rst:435 +#: c-api/memory.rst:453 msgid "" "The :c:type:`!PyMemAllocator` structure was renamed to :c:type:" "`PyMemAllocatorEx` and a new ``calloc`` field was added." msgstr "" -#: c-api/memory.rst:442 +#: c-api/memory.rst:460 msgid "Enum used to identify an allocator domain. Domains:" msgstr "" -#: c-api/memory.rst:457 c-api/memory.rst:466 +#: c-api/memory.rst:475 c-api/memory.rst:484 msgid "Functions:" msgstr "" -#: c-api/memory.rst:450 +#: c-api/memory.rst:468 msgid ":c:func:`PyMem_RawMalloc`" msgstr "" -#: c-api/memory.rst:451 +#: c-api/memory.rst:469 msgid ":c:func:`PyMem_RawRealloc`" msgstr "" -#: c-api/memory.rst:452 +#: c-api/memory.rst:470 msgid ":c:func:`PyMem_RawCalloc`" msgstr "" -#: c-api/memory.rst:453 +#: c-api/memory.rst:471 msgid ":c:func:`PyMem_RawFree`" msgstr "" -#: c-api/memory.rst:459 +#: c-api/memory.rst:477 msgid ":c:func:`PyMem_Malloc`," msgstr "" -#: c-api/memory.rst:460 +#: c-api/memory.rst:478 msgid ":c:func:`PyMem_Realloc`" msgstr "" -#: c-api/memory.rst:461 +#: c-api/memory.rst:479 msgid ":c:func:`PyMem_Calloc`" msgstr "" -#: c-api/memory.rst:462 +#: c-api/memory.rst:480 msgid ":c:func:`PyMem_Free`" msgstr "" -#: c-api/memory.rst:468 -msgid ":c:func:`PyObject_Malloc`" -msgstr "" - -#: c-api/memory.rst:469 -msgid ":c:func:`PyObject_Realloc`" -msgstr "" - -#: c-api/memory.rst:470 -msgid ":c:func:`PyObject_Calloc`" -msgstr "" - -#: c-api/memory.rst:471 +#: c-api/memory.rst:489 msgid ":c:func:`PyObject_Free`" msgstr "" -#: c-api/memory.rst:475 +#: c-api/memory.rst:493 msgid "Get the memory block allocator of the specified domain." msgstr "" -#: c-api/memory.rst:480 +#: c-api/memory.rst:498 msgid "Set the memory block allocator of the specified domain." msgstr "" -#: c-api/memory.rst:482 +#: c-api/memory.rst:500 msgid "" "The new allocator must return a distinct non-``NULL`` pointer when " "requesting zero bytes." msgstr "" -#: c-api/memory.rst:485 +#: c-api/memory.rst:503 msgid "" "For the :c:macro:`PYMEM_DOMAIN_RAW` domain, the allocator must be thread-" "safe: a :term:`thread state` is not :term:`attached ` " "when the allocator is called." msgstr "" -#: c-api/memory.rst:489 +#: c-api/memory.rst:507 msgid "" "For the remaining domains, the allocator must also be thread-safe: the " "allocator may be called in different interpreters that do not share a :term:" "`GIL`." msgstr "" -#: c-api/memory.rst:493 +#: c-api/memory.rst:511 msgid "" "If the new allocator is not a hook (does not call the previous allocator), " "the :c:func:`PyMem_SetupDebugHooks` function must be called to reinstall the " "debug hooks on top on the new allocator." msgstr "" -#: c-api/memory.rst:497 +#: c-api/memory.rst:515 msgid "" "See also :c:member:`PyPreConfig.allocator` and :ref:`Preinitialize Python " "with PyPreConfig `." msgstr "" -#: c-api/memory.rst:502 +#: c-api/memory.rst:520 msgid ":c:func:`PyMem_SetAllocator` does have the following contract:" msgstr "" -#: c-api/memory.rst:504 +#: c-api/memory.rst:522 msgid "" "It can be called after :c:func:`Py_PreInitialize` and before :c:func:" "`Py_InitializeFromConfig` to install a custom memory allocator. There are no " @@ -745,7 +779,7 @@ msgid "" "allocator domains ` for more information." msgstr "" -#: c-api/memory.rst:512 +#: c-api/memory.rst:530 msgid "" "If called after Python has finish initializing (after :c:func:" "`Py_InitializeFromConfig` has been called) the allocator **must** wrap the " @@ -753,21 +787,21 @@ msgid "" "arbitrary one is **not supported**." msgstr "" -#: c-api/memory.rst:517 +#: c-api/memory.rst:535 msgid "All allocators must be thread-safe." msgstr "" -#: c-api/memory.rst:523 +#: c-api/memory.rst:541 msgid "" "Setup :ref:`debug hooks in the Python memory allocators ` " "to detect memory errors." msgstr "" -#: c-api/memory.rst:530 +#: c-api/memory.rst:548 msgid "Debug hooks on the Python memory allocators" msgstr "" -#: c-api/memory.rst:532 +#: c-api/memory.rst:550 msgid "" "When :ref:`Python is built in debug mode `, the :c:func:" "`PyMem_SetupDebugHooks` function is called at the :ref:`Python " @@ -775,19 +809,19 @@ msgid "" "allocators to detect memory errors." msgstr "" -#: c-api/memory.rst:537 +#: c-api/memory.rst:555 msgid "" "The :envvar:`PYTHONMALLOC` environment variable can be used to install debug " "hooks on a Python compiled in release mode (ex: ``PYTHONMALLOC=debug``)." msgstr "" -#: c-api/memory.rst:540 +#: c-api/memory.rst:558 msgid "" "The :c:func:`PyMem_SetupDebugHooks` function can be used to set debug hooks " "after calling :c:func:`PyMem_SetAllocator`." msgstr "" -#: c-api/memory.rst:543 +#: c-api/memory.rst:561 msgid "" "These debug hooks fill dynamically allocated memory blocks with special, " "recognizable bit patterns. Newly allocated memory is filled with the byte " @@ -797,25 +831,25 @@ msgid "" "these bytes are unlikely to be valid addresses, floats, or ASCII strings." msgstr "" -#: c-api/memory.rst:550 +#: c-api/memory.rst:568 msgid "Runtime checks:" msgstr "" -#: c-api/memory.rst:552 +#: c-api/memory.rst:570 msgid "" "Detect API violations. For example, detect if :c:func:`PyObject_Free` is " "called on a memory block allocated by :c:func:`PyMem_Malloc`." msgstr "" -#: c-api/memory.rst:554 +#: c-api/memory.rst:572 msgid "Detect write before the start of the buffer (buffer underflow)." msgstr "" -#: c-api/memory.rst:555 +#: c-api/memory.rst:573 msgid "Detect write after the end of the buffer (buffer overflow)." msgstr "" -#: c-api/memory.rst:556 +#: c-api/memory.rst:574 msgid "" "Check that there is an :term:`attached thread state` when allocator " "functions of :c:macro:`PYMEM_DOMAIN_OBJ` (ex: :c:func:`PyObject_Malloc`) " @@ -823,7 +857,7 @@ msgid "" "called." msgstr "" -#: c-api/memory.rst:561 +#: c-api/memory.rst:579 msgid "" "On error, the debug hooks use the :mod:`tracemalloc` module to get the " "traceback where a memory block was allocated. The traceback is only " @@ -831,7 +865,7 @@ msgid "" "memory block was traced." msgstr "" -#: c-api/memory.rst:566 +#: c-api/memory.rst:584 msgid "" "Let *S* = ``sizeof(size_t)``. ``2*S`` bytes are added at each end of each " "block of *N* bytes requested. The memory layout is like so, where p " @@ -841,49 +875,49 @@ msgid "" "from a Python slice):" msgstr "" -#: c-api/memory.rst:572 +#: c-api/memory.rst:590 msgid "``p[-2*S:-S]``" msgstr "" -#: c-api/memory.rst:573 +#: c-api/memory.rst:591 msgid "" "Number of bytes originally asked for. This is a size_t, big-endian (easier " "to read in a memory dump)." msgstr "" -#: c-api/memory.rst:575 +#: c-api/memory.rst:593 msgid "``p[-S]``" msgstr "" -#: c-api/memory.rst:576 +#: c-api/memory.rst:594 msgid "API identifier (ASCII character):" msgstr "" -#: c-api/memory.rst:578 +#: c-api/memory.rst:596 msgid "``'r'`` for :c:macro:`PYMEM_DOMAIN_RAW`." msgstr "" -#: c-api/memory.rst:579 +#: c-api/memory.rst:597 msgid "``'m'`` for :c:macro:`PYMEM_DOMAIN_MEM`." msgstr "" -#: c-api/memory.rst:580 +#: c-api/memory.rst:598 msgid "``'o'`` for :c:macro:`PYMEM_DOMAIN_OBJ`." msgstr "" -#: c-api/memory.rst:582 +#: c-api/memory.rst:600 msgid "``p[-S+1:0]``" msgstr "" -#: c-api/memory.rst:583 +#: c-api/memory.rst:601 msgid "Copies of PYMEM_FORBIDDENBYTE. Used to catch under- writes and reads." msgstr "" -#: c-api/memory.rst:585 +#: c-api/memory.rst:603 msgid "``p[0:N]``" msgstr "" -#: c-api/memory.rst:586 +#: c-api/memory.rst:604 msgid "" "The requested memory, filled with copies of PYMEM_CLEANBYTE, used to catch " "reference to uninitialized memory. When a realloc-like function is called " @@ -894,25 +928,25 @@ msgid "" "bytes are also filled with PYMEM_DEADBYTE." msgstr "" -#: c-api/memory.rst:594 +#: c-api/memory.rst:612 msgid "``p[N:N+S]``" msgstr "" -#: c-api/memory.rst:595 +#: c-api/memory.rst:613 msgid "Copies of PYMEM_FORBIDDENBYTE. Used to catch over- writes and reads." msgstr "" -#: c-api/memory.rst:597 +#: c-api/memory.rst:615 msgid "``p[N+S:N+2*S]``" msgstr "" -#: c-api/memory.rst:598 +#: c-api/memory.rst:616 msgid "" "Only used if the ``PYMEM_DEBUG_SERIALNO`` macro is defined (not defined by " "default)." msgstr "" -#: c-api/memory.rst:601 +#: c-api/memory.rst:619 msgid "" "A serial number, incremented by 1 on each call to a malloc-like or realloc-" "like function. Big-endian :c:type:`size_t`. If \"bad memory\" is detected " @@ -922,7 +956,7 @@ msgid "" "number is incremented, and exists so you can set such a breakpoint easily." msgstr "" -#: c-api/memory.rst:608 +#: c-api/memory.rst:626 msgid "" "A realloc-like or free-like function first checks that the " "PYMEM_FORBIDDENBYTE bytes at each end are intact. If they've been altered, " @@ -935,7 +969,7 @@ msgid "" "getting used)." msgstr "" -#: c-api/memory.rst:617 +#: c-api/memory.rst:635 msgid "" "The :c:func:`PyMem_SetupDebugHooks` function now also works on Python " "compiled in release mode. On error, the debug hooks now use :mod:" @@ -945,7 +979,7 @@ msgid "" "domains are called." msgstr "" -#: c-api/memory.rst:625 +#: c-api/memory.rst:643 msgid "" "Byte patterns ``0xCB`` (``PYMEM_CLEANBYTE``), ``0xDB`` (``PYMEM_DEADBYTE``) " "and ``0xFB`` (``PYMEM_FORBIDDENBYTE``) have been replaced with ``0xCD``, " @@ -953,11 +987,11 @@ msgid "" "``malloc()`` and ``free()``." msgstr "" -#: c-api/memory.rst:635 +#: c-api/memory.rst:653 msgid "The pymalloc allocator" msgstr "" -#: c-api/memory.rst:637 +#: c-api/memory.rst:655 msgid "" "Python has a *pymalloc* allocator optimized for small objects (smaller or " "equal to 512 bytes) with a short lifetime. It uses memory mappings called " @@ -966,75 +1000,75 @@ msgid "" "`PyMem_RawRealloc` for allocations larger than 512 bytes." msgstr "" -#: c-api/memory.rst:643 +#: c-api/memory.rst:661 msgid "" "*pymalloc* is the :ref:`default allocator ` of " "the :c:macro:`PYMEM_DOMAIN_MEM` (ex: :c:func:`PyMem_Malloc`) and :c:macro:" "`PYMEM_DOMAIN_OBJ` (ex: :c:func:`PyObject_Malloc`) domains." msgstr "" -#: c-api/memory.rst:647 +#: c-api/memory.rst:665 msgid "The arena allocator uses the following functions:" msgstr "" -#: c-api/memory.rst:649 +#: c-api/memory.rst:667 msgid ":c:func:`!VirtualAlloc` and :c:func:`!VirtualFree` on Windows," msgstr "" -#: c-api/memory.rst:650 +#: c-api/memory.rst:668 msgid ":c:func:`!mmap` and :c:func:`!munmap` if available," msgstr "" -#: c-api/memory.rst:651 +#: c-api/memory.rst:669 msgid ":c:func:`malloc` and :c:func:`free` otherwise." msgstr "" -#: c-api/memory.rst:653 +#: c-api/memory.rst:671 msgid "" "This allocator is disabled if Python is configured with the :option:`--" "without-pymalloc` option. It can also be disabled at runtime using the :" "envvar:`PYTHONMALLOC` environment variable (ex: ``PYTHONMALLOC=malloc``)." msgstr "" -#: c-api/memory.rst:658 +#: c-api/memory.rst:676 msgid "Customize pymalloc Arena Allocator" msgstr "" -#: c-api/memory.rst:664 +#: c-api/memory.rst:682 msgid "" "Structure used to describe an arena allocator. The structure has three " "fields:" msgstr "" -#: c-api/memory.rst:672 +#: c-api/memory.rst:690 msgid "``void* alloc(void *ctx, size_t size)``" msgstr "" -#: c-api/memory.rst:672 +#: c-api/memory.rst:690 msgid "allocate an arena of size bytes" msgstr "" -#: c-api/memory.rst:674 +#: c-api/memory.rst:692 msgid "``void free(void *ctx, void *ptr, size_t size)``" msgstr "" -#: c-api/memory.rst:674 +#: c-api/memory.rst:692 msgid "free an arena" msgstr "" -#: c-api/memory.rst:679 +#: c-api/memory.rst:697 msgid "Get the arena allocator." msgstr "" -#: c-api/memory.rst:683 +#: c-api/memory.rst:701 msgid "Set the arena allocator." msgstr "" -#: c-api/memory.rst:688 +#: c-api/memory.rst:706 msgid "The mimalloc allocator" msgstr "" -#: c-api/memory.rst:692 +#: c-api/memory.rst:710 msgid "" "Python supports the mimalloc allocator when the underlying platform support " "is available. mimalloc \"is a general purpose allocator with excellent " @@ -1042,46 +1076,46 @@ msgid "" "runtime systems of the Koka and Lean languages.\"" msgstr "" -#: c-api/memory.rst:697 +#: c-api/memory.rst:715 msgid "tracemalloc C API" msgstr "" -#: c-api/memory.rst:703 +#: c-api/memory.rst:721 msgid "Track an allocated memory block in the :mod:`tracemalloc` module." msgstr "" -#: c-api/memory.rst:705 +#: c-api/memory.rst:723 msgid "" "Return ``0`` on success, return ``-1`` on error (failed to allocate memory " "to store the trace). Return ``-2`` if tracemalloc is disabled." msgstr "" -#: c-api/memory.rst:708 +#: c-api/memory.rst:726 msgid "If memory block is already tracked, update the existing trace." msgstr "" -#: c-api/memory.rst:712 +#: c-api/memory.rst:730 msgid "" "Untrack an allocated memory block in the :mod:`tracemalloc` module. Do " "nothing if the block was not tracked." msgstr "" -#: c-api/memory.rst:715 +#: c-api/memory.rst:733 msgid "Return ``-2`` if tracemalloc is disabled, otherwise return ``0``." msgstr "" -#: c-api/memory.rst:721 +#: c-api/memory.rst:739 msgid "Examples" msgstr "" -#: c-api/memory.rst:723 +#: c-api/memory.rst:741 msgid "" "Here is the example from section :ref:`memoryoverview`, rewritten so that " "the I/O buffer is allocated from the Python heap by using the first function " "set::" msgstr "" -#: c-api/memory.rst:726 +#: c-api/memory.rst:744 msgid "" "PyObject *res;\n" "char *buf = (char *) PyMem_Malloc(BUFSIZ); /* for I/O */\n" @@ -1094,11 +1128,11 @@ msgid "" "return res;" msgstr "" -#: c-api/memory.rst:736 +#: c-api/memory.rst:754 msgid "The same code using the type-oriented function set::" msgstr "" -#: c-api/memory.rst:738 +#: c-api/memory.rst:756 msgid "" "PyObject *res;\n" "char *buf = PyMem_New(char, BUFSIZ); /* for I/O */\n" @@ -1111,7 +1145,7 @@ msgid "" "return res;" msgstr "" -#: c-api/memory.rst:748 +#: c-api/memory.rst:766 msgid "" "Note that in the two examples above, the buffer is always manipulated via " "functions belonging to the same set. Indeed, it is required to use the same " @@ -1121,7 +1155,7 @@ msgid "" "different allocators operating on different heaps. ::" msgstr "" -#: c-api/memory.rst:755 +#: c-api/memory.rst:773 msgid "" "char *buf1 = PyMem_New(char, BUFSIZ);\n" "char *buf2 = (char *) malloc(BUFSIZ);\n" @@ -1132,14 +1166,14 @@ msgid "" "free(buf1); /* Fatal -- should be PyMem_Free() */" msgstr "" -#: c-api/memory.rst:763 +#: c-api/memory.rst:781 msgid "" "In addition to the functions aimed at handling raw memory blocks from the " "Python heap, objects in Python are allocated and released with :c:macro:" "`PyObject_New`, :c:macro:`PyObject_NewVar` and :c:func:`PyObject_Free`." msgstr "" -#: c-api/memory.rst:767 +#: c-api/memory.rst:785 msgid "" "These will be explained in the next chapter on defining and implementing new " "object types in C." diff --git a/c-api/memoryview.po b/c-api/memoryview.po index 5318d7e5..eaab4e2a 100644 --- a/c-api/memoryview.po +++ b/c-api/memoryview.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/method.po b/c-api/method.po index bf9ab3d4..5bea97ac 100644 --- a/c-api/method.po +++ b/c-api/method.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/module.po b/c-api/module.po index 3bc09358..c926c7b4 100644 --- a/c-api/module.po +++ b/c-api/module.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -48,7 +48,7 @@ msgid "" "setting a :attr:`~module.__file__` attribute." msgstr "" -#: c-api/module.rst:272 c-api/module.rst:474 +#: c-api/module.rst:416 c-api/module.rst:443 msgid "Return ``NULL`` with an exception set on error." msgstr "" @@ -126,103 +126,119 @@ msgid "" msgstr "" #: c-api/module.rst:133 -msgid "Initializing C modules" +msgid "Module definitions" msgstr "" #: c-api/module.rst:135 msgid "" -"Modules objects are usually created from extension modules (shared libraries " -"which export an initialization function), or compiled-in modules (where the " -"initialization function is added using :c:func:`PyImport_AppendInittab`). " -"See :ref:`building` or :ref:`extending-with-embedding` for details." +"The functions in the previous section work on any module object, including " +"modules imported from Python code." msgstr "" -#: c-api/module.rst:140 +#: c-api/module.rst:138 msgid "" -"The initialization function can either pass a module definition instance to :" -"c:func:`PyModule_Create`, and return the resulting module object, or request " -"\"multi-phase initialization\" by returning the definition struct itself." +"Modules defined using the C API typically use a *module definition*, :c:type:" +"`PyModuleDef` -- a statically allocated, constant “description\" of how a " +"module should be created." msgstr "" -#: c-api/module.rst:146 +#: c-api/module.rst:142 +msgid "" +"The definition is usually used to define an extension's “main” module object " +"(see :ref:`extension-modules` for details). It is also used to :ref:`create " +"extension modules dynamically `." +msgstr "" + +#: c-api/module.rst:147 +msgid "" +"Unlike :c:func:`PyModule_New`, the definition allows management of *module " +"state* -- a piece of memory that is allocated and cleared together with the " +"module object. Unlike the module's Python attributes, Python code cannot " +"replace or delete data stored in module state." +msgstr "" + +#: c-api/module.rst:155 msgid "" "The module definition struct, which holds all information needed to create a " -"module object. There is usually only one statically initialized variable of " -"this type for each module." +"module object. This structure must be statically allocated (or be otherwise " +"guaranteed to be valid while any modules created from it exist). Usually, " +"there is only one variable of this type for each extension module." msgstr "" -#: c-api/module.rst:152 +#: c-api/module.rst:163 msgid "Always initialize this member to :c:macro:`PyModuleDef_HEAD_INIT`." msgstr "" -#: c-api/module.rst:156 +#: c-api/module.rst:167 msgid "Name for the new module." msgstr "" -#: c-api/module.rst:160 +#: c-api/module.rst:171 msgid "" "Docstring for the module; usually a docstring variable created with :c:macro:" "`PyDoc_STRVAR` is used." msgstr "" -#: c-api/module.rst:165 +#: c-api/module.rst:176 msgid "" "Module state may be kept in a per-module memory area that can be retrieved " "with :c:func:`PyModule_GetState`, rather than in static globals. This makes " "modules safe for use in multiple sub-interpreters." msgstr "" -#: c-api/module.rst:169 +#: c-api/module.rst:180 msgid "" "This memory area is allocated based on *m_size* on module creation, and " "freed when the module object is deallocated, after the :c:member:" "`~PyModuleDef.m_free` function has been called, if present." msgstr "" -#: c-api/module.rst:173 +#: c-api/module.rst:184 msgid "" -"Setting ``m_size`` to ``-1`` means that the module does not support sub-" -"interpreters, because it has global state." +"Setting it to a non-negative value means that the module can be re-" +"initialized and specifies the additional amount of memory it requires for " +"its state." msgstr "" -#: c-api/module.rst:176 +#: c-api/module.rst:188 msgid "" -"Setting it to a non-negative value means that the module can be re-" -"initialized and specifies the additional amount of memory it requires for " -"its state. Non-negative ``m_size`` is required for multi-phase " -"initialization." +"Setting ``m_size`` to ``-1`` means that the module does not support sub-" +"interpreters, because it has global state. Negative ``m_size`` is only " +"allowed when using :ref:`legacy single-phase initialization ` or when :ref:`creating modules dynamically `." msgstr "" -#: c-api/module.rst:181 +#: c-api/module.rst:194 msgid "See :PEP:`3121` for more details." msgstr "" -#: c-api/module.rst:185 +#: c-api/module.rst:198 msgid "" "A pointer to a table of module-level functions, described by :c:type:" "`PyMethodDef` values. Can be ``NULL`` if no functions are present." msgstr "" -#: c-api/module.rst:190 +#: c-api/module.rst:203 msgid "" "An array of slot definitions for multi-phase initialization, terminated by a " -"``{0, NULL}`` entry. When using single-phase initialization, *m_slots* must " -"be ``NULL``." +"``{0, NULL}`` entry. When using legacy single-phase initialization, " +"*m_slots* must be ``NULL``." msgstr "" -#: c-api/module.rst:196 +#: c-api/module.rst:209 msgid "" "Prior to version 3.5, this member was always set to ``NULL``, and was " "defined as:" msgstr "" -#: c-api/module.rst:203 +#: c-api/module.rst:216 msgid "" "A traversal function to call during GC traversal of the module object, or " "``NULL`` if not needed." msgstr "" -#: c-api/module.rst:221 c-api/module.rst:242 +#: c-api/module.rst:234 c-api/module.rst:255 msgid "" "This function is not called if the module state was requested but is not " "allocated yet. This is the case immediately after the module is created and " @@ -232,17 +248,17 @@ msgid "" "`PyModule_GetState`) is ``NULL``." msgstr "" -#: c-api/module.rst:234 c-api/module.rst:249 +#: c-api/module.rst:247 c-api/module.rst:262 msgid "No longer called before the module state is allocated." msgstr "" -#: c-api/module.rst:218 +#: c-api/module.rst:231 msgid "" "A clear function to call during GC clearing of the module object, or " "``NULL`` if not needed." msgstr "" -#: c-api/module.rst:228 +#: c-api/module.rst:241 msgid "" "Like :c:member:`PyTypeObject.tp_clear`, this function is not *always* called " "before a module is deallocated. For example, when reference counting is " @@ -251,151 +267,55 @@ msgid "" "directly." msgstr "" -#: c-api/module.rst:239 +#: c-api/module.rst:252 msgid "" "A function to call during deallocation of the module object, or ``NULL`` if " "not needed." msgstr "" -#: c-api/module.rst:253 -msgid "Single-phase initialization" -msgstr "" - -#: c-api/module.rst:255 -msgid "" -"The module initialization function may create and return the module object " -"directly. This is referred to as \"single-phase initialization\", and uses " -"one of the following two module creation functions:" -msgstr "" - -#: c-api/module.rst:261 -msgid "" -"Create a new module object, given the definition in *def*. This behaves " -"like :c:func:`PyModule_Create2` with *module_api_version* set to :c:macro:" -"`PYTHON_API_VERSION`." -msgstr "" - -#: c-api/module.rst:268 -msgid "" -"Create a new module object, given the definition in *def*, assuming the API " -"version *module_api_version*. If that version does not match the version of " -"the running interpreter, a :exc:`RuntimeWarning` is emitted." -msgstr "" - -#: c-api/module.rst:276 -msgid "" -"Most uses of this function should be using :c:func:`PyModule_Create` " -"instead; only use this if you are sure you need it." -msgstr "" - -#: c-api/module.rst:279 -msgid "" -"Before it is returned from in the initialization function, the resulting " -"module object is typically populated using functions like :c:func:" -"`PyModule_AddObjectRef`." +#: c-api/module.rst:267 +msgid "Module slots" msgstr "" -#: c-api/module.rst:285 -msgid "Multi-phase initialization" -msgstr "" - -#: c-api/module.rst:287 -msgid "" -"An alternate way to specify extensions is to request \"multi-phase " -"initialization\". Extension modules created this way behave more like Python " -"modules: the initialization is split between the *creation phase*, when the " -"module object is created, and the *execution phase*, when it is populated. " -"The distinction is similar to the :py:meth:`!__new__` and :py:meth:`!" -"__init__` methods of classes." -msgstr "" - -#: c-api/module.rst:294 -msgid "" -"Unlike modules created using single-phase initialization, these modules are " -"not singletons: if the *sys.modules* entry is removed and the module is re-" -"imported, a new module object is created, and the old module is subject to " -"normal garbage collection -- as with Python modules. By default, multiple " -"modules created from the same definition should be independent: changes to " -"one should not affect the others. This means that all state should be " -"specific to the module object (using e.g. using :c:func:" -"`PyModule_GetState`), or its contents (such as the module's :attr:`~object." -"__dict__` or individual classes created with :c:func:`PyType_FromSpec`)." -msgstr "" - -#: c-api/module.rst:304 -msgid "" -"All modules created using multi-phase initialization are expected to " -"support :ref:`sub-interpreters `. Making sure " -"multiple modules are independent is typically enough to achieve this." -msgstr "" - -#: c-api/module.rst:308 -msgid "" -"To request multi-phase initialization, the initialization function " -"(PyInit_modulename) returns a :c:type:`PyModuleDef` instance with non-empty :" -"c:member:`~PyModuleDef.m_slots`. Before it is returned, the ``PyModuleDef`` " -"instance must be initialized with the following function:" -msgstr "" - -#: c-api/module.rst:315 -msgid "" -"Ensures a module definition is a properly initialized Python object that " -"correctly reports its type and reference count." -msgstr "" - -#: c-api/module.rst:318 -msgid "Returns *def* cast to ``PyObject*``, or ``NULL`` if an error occurred." -msgstr "" - -#: c-api/module.rst:322 -msgid "" -"The *m_slots* member of the module definition must point to an array of " -"``PyModuleDef_Slot`` structures:" -msgstr "" - -#: c-api/module.rst:329 +#: c-api/module.rst:273 msgid "A slot ID, chosen from the available values explained below." msgstr "" -#: c-api/module.rst:333 +#: c-api/module.rst:277 msgid "Value of the slot, whose meaning depends on the slot ID." msgstr "" -#: c-api/module.rst:337 -msgid "The *m_slots* array must be terminated by a slot with id 0." -msgstr "" - -#: c-api/module.rst:339 +#: c-api/module.rst:281 msgid "The available slot types are:" msgstr "" -#: c-api/module.rst:343 +#: c-api/module.rst:285 msgid "" "Specifies a function that is called to create the module object itself. The " "*value* pointer of this slot must point to a function of the signature:" msgstr "" -#: c-api/module.rst:350 +#: c-api/module.rst:292 msgid "" "The function receives a :py:class:`~importlib.machinery.ModuleSpec` " "instance, as defined in :PEP:`451`, and the module definition. It should " "return a new module object, or set an error and return ``NULL``." msgstr "" -#: c-api/module.rst:355 +#: c-api/module.rst:297 msgid "" "This function should be kept minimal. In particular, it should not call " "arbitrary Python code, as trying to import the same module again may result " "in an infinite loop." msgstr "" -#: c-api/module.rst:359 +#: c-api/module.rst:301 msgid "" "Multiple ``Py_mod_create`` slots may not be specified in one module " "definition." msgstr "" -#: c-api/module.rst:362 +#: c-api/module.rst:304 msgid "" "If ``Py_mod_create`` is not specified, the import machinery will create a " "normal module object using :c:func:`PyModule_New`. The name is taken from " @@ -404,7 +324,7 @@ msgid "" "through symlinks, all while sharing a single module definition." msgstr "" -#: c-api/module.rst:368 +#: c-api/module.rst:310 msgid "" "There is no requirement for the returned object to be an instance of :c:type:" "`PyModule_Type`. Any type can be used, as long as it supports setting and " @@ -414,7 +334,7 @@ msgid "" "``Py_mod_create``." msgstr "" -#: c-api/module.rst:377 +#: c-api/module.rst:319 msgid "" "Specifies a function that is called to *execute* the module. This is " "equivalent to executing the code of a Python module: typically, this " @@ -422,61 +342,61 @@ msgid "" "function is:" msgstr "" -#: c-api/module.rst:386 +#: c-api/module.rst:328 msgid "" "If multiple ``Py_mod_exec`` slots are specified, they are processed in the " "order they appear in the *m_slots* array." msgstr "" -#: c-api/module.rst:424 +#: c-api/module.rst:366 msgid "Specifies one of the following values:" msgstr "" -#: c-api/module.rst:397 +#: c-api/module.rst:339 msgid "The module does not support being imported in subinterpreters." msgstr "" -#: c-api/module.rst:401 +#: c-api/module.rst:343 msgid "" "The module supports being imported in subinterpreters, but only when they " "share the main interpreter's GIL. (See :ref:`isolating-extensions-howto`.)" msgstr "" -#: c-api/module.rst:407 +#: c-api/module.rst:349 msgid "" "The module supports being imported in subinterpreters, even when they have " "their own GIL. (See :ref:`isolating-extensions-howto`.)" msgstr "" -#: c-api/module.rst:411 +#: c-api/module.rst:353 msgid "" "This slot determines whether or not importing this module in a " "subinterpreter will fail." msgstr "" -#: c-api/module.rst:414 +#: c-api/module.rst:356 msgid "" "Multiple ``Py_mod_multiple_interpreters`` slots may not be specified in one " "module definition." msgstr "" -#: c-api/module.rst:417 +#: c-api/module.rst:359 msgid "" "If ``Py_mod_multiple_interpreters`` is not specified, the import machinery " "defaults to ``Py_MOD_MULTIPLE_INTERPRETERS_SUPPORTED``." msgstr "" -#: c-api/module.rst:430 +#: c-api/module.rst:372 msgid "" "The module depends on the presence of the global interpreter lock (GIL), and " "may access global state without synchronization." msgstr "" -#: c-api/module.rst:435 +#: c-api/module.rst:377 msgid "The module is safe to run without an active GIL." msgstr "" -#: c-api/module.rst:437 +#: c-api/module.rst:379 msgid "" "This slot is ignored by Python builds not configured with :option:`--disable-" "gil`. Otherwise, it determines whether or not importing this module will " @@ -484,41 +404,64 @@ msgid "" "threaded-cpython` for more detail." msgstr "" -#: c-api/module.rst:442 +#: c-api/module.rst:384 msgid "" "Multiple ``Py_mod_gil`` slots may not be specified in one module definition." msgstr "" -#: c-api/module.rst:444 +#: c-api/module.rst:386 msgid "" "If ``Py_mod_gil`` is not specified, the import machinery defaults to " "``Py_MOD_GIL_USED``." msgstr "" -#: c-api/module.rst:449 -msgid "See :PEP:`489` for more details on multi-phase initialization." +#: c-api/module.rst:395 +msgid "Creating extension modules dynamically" msgstr "" -#: c-api/module.rst:452 -msgid "Low-level module creation functions" +#: c-api/module.rst:397 +msgid "" +"The following functions may be used to create a module outside of an " +"extension's :ref:`initialization function `. They are " +"also used in :ref:`single-phase initialization `." msgstr "" -#: c-api/module.rst:454 +#: c-api/module.rst:404 msgid "" -"The following functions are called under the hood when using multi-phase " -"initialization. They can be used directly, for example when creating module " -"objects dynamically. Note that both ``PyModule_FromDefAndSpec`` and " -"``PyModule_ExecDef`` must be called to fully initialize a module." +"Create a new module object, given the definition in *def*. This is a macro " +"that calls :c:func:`PyModule_Create2` with *module_api_version* set to :c:" +"macro:`PYTHON_API_VERSION`, or to :c:macro:`PYTHON_ABI_VERSION` if using " +"the :ref:`limited API `." msgstr "" -#: c-api/module.rst:461 +#: c-api/module.rst:412 msgid "" -"Create a new module object, given the definition in *def* and the ModuleSpec " -"*spec*. This behaves like :c:func:`PyModule_FromDefAndSpec2` with " -"*module_api_version* set to :c:macro:`PYTHON_API_VERSION`." +"Create a new module object, given the definition in *def*, assuming the API " +"version *module_api_version*. If that version does not match the version of " +"the running interpreter, a :exc:`RuntimeWarning` is emitted." msgstr "" -#: c-api/module.rst:469 +#: c-api/module.rst:418 +msgid "" +"This function does not support slots. The :c:member:`~PyModuleDef.m_slots` " +"member of *def* must be ``NULL``." +msgstr "" + +#: c-api/module.rst:424 +msgid "" +"Most uses of this function should be using :c:func:`PyModule_Create` " +"instead; only use this if you are sure you need it." +msgstr "" + +#: c-api/module.rst:429 +msgid "" +"This macro calls :c:func:`PyModule_FromDefAndSpec2` with " +"*module_api_version* set to :c:macro:`PYTHON_API_VERSION`, or to :c:macro:" +"`PYTHON_ABI_VERSION` if using the :ref:`limited API `." +msgstr "" + +#: c-api/module.rst:438 msgid "" "Create a new module object, given the definition in *def* and the ModuleSpec " "*spec*, assuming the API version *module_api_version*. If that version does " @@ -526,63 +469,65 @@ msgid "" "emitted." msgstr "" -#: c-api/module.rst:478 +#: c-api/module.rst:445 +msgid "" +"Note that this does not process execution slots (:c:data:`Py_mod_exec`). " +"Both ``PyModule_FromDefAndSpec`` and ``PyModule_ExecDef`` must be called to " +"fully initialize a module." +msgstr "" + +#: c-api/module.rst:451 msgid "" "Most uses of this function should be using :c:func:`PyModule_FromDefAndSpec` " "instead; only use this if you are sure you need it." msgstr "" -#: c-api/module.rst:485 +#: c-api/module.rst:458 msgid "Process any execution slots (:c:data:`Py_mod_exec`) given in *def*." msgstr "" -#: c-api/module.rst:491 -msgid "" -"Set the docstring for *module* to *docstring*. This function is called " -"automatically when creating a module from ``PyModuleDef``, using either " -"``PyModule_Create`` or ``PyModule_FromDefAndSpec``." +#: c-api/module.rst:464 +msgid "The C API version. Defined for backwards compatibility." msgstr "" -#: c-api/module.rst:500 +#: c-api/module.rst:473 msgid "" -"Add the functions from the ``NULL`` terminated *functions* array to " -"*module*. Refer to the :c:type:`PyMethodDef` documentation for details on " -"individual entries (due to the lack of a shared module namespace, module " -"level \"functions\" implemented in C typically receive the module as their " -"first parameter, making them similar to instance methods on Python classes). " -"This function is called automatically when creating a module from " -"``PyModuleDef``, using either ``PyModule_Create`` or " -"``PyModule_FromDefAndSpec``." +"Currently, this constant is not updated in new Python versions, and is not " +"useful for versioning. This may change in the future." msgstr "" -#: c-api/module.rst:512 +#: c-api/module.rst:471 +msgid "Defined as ``3`` for backwards compatibility." +msgstr "" + +#: c-api/module.rst:478 msgid "Support functions" msgstr "" -#: c-api/module.rst:514 +#: c-api/module.rst:480 msgid "" -"The module initialization function (if using single phase initialization) or " -"a function called from a module execution slot (if using multi-phase " -"initialization), can use the following functions to help initialize the " -"module state:" +"The following functions are provided to help initialize a module state. They " +"are intended for a module's execution slots (:c:data:`Py_mod_exec`), the " +"initialization function for legacy :ref:`single-phase initialization `, or code that creates modules dynamically." msgstr "" -#: c-api/module.rst:521 +#: c-api/module.rst:488 msgid "" "Add an object to *module* as *name*. This is a convenience function which " "can be used from the module's initialization function." msgstr "" -#: c-api/module.rst:524 +#: c-api/module.rst:491 msgid "" "On success, return ``0``. On error, raise an exception and return ``-1``." msgstr "" -#: c-api/module.rst:577 c-api/module.rst:604 +#: c-api/module.rst:544 c-api/module.rst:571 msgid "Example usage::" msgstr "" -#: c-api/module.rst:528 +#: c-api/module.rst:495 msgid "" "static int\n" "add_spam(PyObject *module, int value)\n" @@ -597,20 +542,20 @@ msgid "" " }" msgstr "" -#: c-api/module.rst:540 +#: c-api/module.rst:507 msgid "" "To be convenient, the function accepts ``NULL`` *value* with an exception " "set. In this case, return ``-1`` and just leave the raised exception " "unchanged." msgstr "" -#: c-api/module.rst:544 +#: c-api/module.rst:511 msgid "" "The example can also be written without checking explicitly if *obj* is " "``NULL``::" msgstr "" -#: c-api/module.rst:547 +#: c-api/module.rst:514 msgid "" "static int\n" "add_spam(PyObject *module, int value)\n" @@ -622,13 +567,13 @@ msgid "" " }" msgstr "" -#: c-api/module.rst:556 +#: c-api/module.rst:523 msgid "" "Note that ``Py_XDECREF()`` should be used instead of ``Py_DECREF()`` in this " "case, since *obj* can be ``NULL``." msgstr "" -#: c-api/module.rst:559 +#: c-api/module.rst:526 msgid "" "The number of different *name* strings passed to this function should be " "kept small, usually by only using statically allocated strings as *name*. " @@ -638,7 +583,7 @@ msgid "" "internally to create a key object." msgstr "" -#: c-api/module.rst:572 +#: c-api/module.rst:539 msgid "" "Similar to :c:func:`PyModule_AddObjectRef`, but \"steals\" a reference to " "*value*. It can be called with a result of function that returns a new " @@ -646,39 +591,39 @@ msgid "" "variable." msgstr "" -#: c-api/module.rst:579 +#: c-api/module.rst:546 msgid "" "if (PyModule_Add(module, \"spam\", PyBytes_FromString(value)) < 0) {\n" " goto error;\n" "}" msgstr "" -#: c-api/module.rst:588 +#: c-api/module.rst:555 msgid "" "Similar to :c:func:`PyModule_AddObjectRef`, but steals a reference to " "*value* on success (if it returns ``0``)." msgstr "" -#: c-api/module.rst:591 +#: c-api/module.rst:558 msgid "" "The new :c:func:`PyModule_Add` or :c:func:`PyModule_AddObjectRef` functions " "are recommended, since it is easy to introduce reference leaks by misusing " "the :c:func:`PyModule_AddObject` function." msgstr "" -#: c-api/module.rst:598 +#: c-api/module.rst:565 msgid "" "Unlike other functions that steal references, ``PyModule_AddObject()`` only " "releases the reference to *value* **on success**." msgstr "" -#: c-api/module.rst:601 +#: c-api/module.rst:568 msgid "" "This means that its return value must be checked, and calling code must :c:" "func:`Py_XDECREF` *value* manually on error." msgstr "" -#: c-api/module.rst:606 +#: c-api/module.rst:573 msgid "" "PyObject *obj = PyBytes_FromString(value);\n" "if (PyModule_AddObject(module, \"spam\", obj) < 0) {\n" @@ -692,24 +637,24 @@ msgid "" "// Py_XDECREF(obj) is not needed here." msgstr "" -#: c-api/module.rst:619 +#: c-api/module.rst:586 msgid ":c:func:`PyModule_AddObject` is :term:`soft deprecated`." msgstr "" -#: c-api/module.rst:624 +#: c-api/module.rst:591 msgid "" "Add an integer constant to *module* as *name*. This convenience function " "can be used from the module's initialization function. Return ``-1`` with an " "exception set on error, ``0`` on success." msgstr "" -#: c-api/module.rst:628 +#: c-api/module.rst:595 msgid "" "This is a convenience function that calls :c:func:`PyLong_FromLong` and :c:" "func:`PyModule_AddObjectRef`; see their documentation for details." msgstr "" -#: c-api/module.rst:634 +#: c-api/module.rst:601 msgid "" "Add a string constant to *module* as *name*. This convenience function can " "be used from the module's initialization function. The string *value* must " @@ -717,14 +662,14 @@ msgid "" "on success." msgstr "" -#: c-api/module.rst:639 +#: c-api/module.rst:606 msgid "" "This is a convenience function that calls :c:func:" "`PyUnicode_InternFromString` and :c:func:`PyModule_AddObjectRef`; see their " "documentation for details." msgstr "" -#: c-api/module.rst:646 +#: c-api/module.rst:613 msgid "" "Add an int constant to *module*. The name and the value are taken from " "*macro*. For example ``PyModule_AddIntMacro(module, AF_INET)`` adds the int " @@ -732,11 +677,11 @@ msgid "" "with an exception set on error, ``0`` on success." msgstr "" -#: c-api/module.rst:654 +#: c-api/module.rst:621 msgid "Add a string constant to *module*." msgstr "" -#: c-api/module.rst:658 +#: c-api/module.rst:625 msgid "" "Add a type object to *module*. The type object is finalized by calling " "internally :c:func:`PyType_Ready`. The name of the type object is taken from " @@ -744,36 +689,64 @@ msgid "" "``-1`` with an exception set on error, ``0`` on success." msgstr "" -#: c-api/module.rst:668 +#: c-api/module.rst:635 +msgid "" +"Add the functions from the ``NULL`` terminated *functions* array to " +"*module*. Refer to the :c:type:`PyMethodDef` documentation for details on " +"individual entries (due to the lack of a shared module namespace, module " +"level \"functions\" implemented in C typically receive the module as their " +"first parameter, making them similar to instance methods on Python classes)." +msgstr "" + +#: c-api/module.rst:641 +msgid "" +"This function is called automatically when creating a module from " +"``PyModuleDef`` (such as when using :ref:`multi-phase-initialization`, " +"``PyModule_Create``, or ``PyModule_FromDefAndSpec``). Some module authors " +"may prefer defining functions in multiple :c:type:`PyMethodDef` arrays; in " +"that case they should call this function directly." +msgstr "" + +#: c-api/module.rst:652 +msgid "" +"Set the docstring for *module* to *docstring*. This function is called " +"automatically when creating a module from ``PyModuleDef`` (such as when " +"using :ref:`multi-phase-initialization`, ``PyModule_Create``, or " +"``PyModule_FromDefAndSpec``)." +msgstr "" + +#: c-api/module.rst:661 msgid "" "Indicate that *module* does or does not support running without the global " "interpreter lock (GIL), using one of the values from :c:macro:`Py_mod_gil`. " -"It must be called during *module*'s initialization function. If this " -"function is not called during module initialization, the import machinery " -"assumes the module does not support running without the GIL. This function " -"is only available in Python builds configured with :option:`--disable-gil`. " -"Return ``-1`` with an exception set on error, ``0`` on success." +"It must be called during *module*'s initialization function when using :ref:" +"`single-phase-initialization`. If this function is not called during module " +"initialization, the import machinery assumes the module does not support " +"running without the GIL. This function is only available in Python builds " +"configured with :option:`--disable-gil`. Return ``-1`` with an exception set " +"on error, ``0`` on success." msgstr "" -#: c-api/module.rst:681 -msgid "Module lookup" +#: c-api/module.rst:675 +msgid "Module lookup (single-phase initialization)" msgstr "" -#: c-api/module.rst:683 +#: c-api/module.rst:677 msgid "" -"Single-phase initialization creates singleton modules that can be looked up " -"in the context of the current interpreter. This allows the module object to " -"be retrieved later with only a reference to the module definition." +"The legacy :ref:`single-phase initialization ` " +"initialization scheme creates singleton modules that can be looked up in the " +"context of the current interpreter. This allows the module object to be " +"retrieved later with only a reference to the module definition." msgstr "" -#: c-api/module.rst:687 +#: c-api/module.rst:682 msgid "" "These functions will not work on modules created using multi-phase " "initialization, since multiple such modules can be created from a single " "definition." msgstr "" -#: c-api/module.rst:692 +#: c-api/module.rst:687 msgid "" "Returns the module object that was created from *def* for the current " "interpreter. This method requires that the module object has been attached " @@ -782,20 +755,21 @@ msgid "" "to the interpreter state yet, it returns ``NULL``." msgstr "" -#: c-api/module.rst:699 +#: c-api/module.rst:694 msgid "" "Attaches the module object passed to the function to the interpreter state. " "This allows the module object to be accessible via :c:func:" "`PyState_FindModule`." msgstr "" -#: c-api/module.rst:702 +#: c-api/module.rst:697 msgid "Only effective on modules created using single-phase initialization." msgstr "" -#: c-api/module.rst:704 +#: c-api/module.rst:699 msgid "" -"Python calls ``PyState_AddModule`` automatically after importing a module, " +"Python calls ``PyState_AddModule`` automatically after importing a module " +"that uses :ref:`single-phase initialization `, " "so it is unnecessary (but harmless) to call it from module initialization " "code. An explicit call is needed only if the module's own init code " "subsequently calls ``PyState_FindModule``. The function is mainly intended " @@ -804,15 +778,21 @@ msgid "" "state updates)." msgstr "" -#: c-api/module.rst:723 +#: c-api/module.rst:708 +msgid "" +"If a module was attached previously using the same *def*, it is replaced by " +"the new *module*." +msgstr "" + +#: c-api/module.rst:722 msgid "The caller must have an :term:`attached thread state`." msgstr "" -#: c-api/module.rst:714 +#: c-api/module.rst:713 msgid "Return ``-1`` with an exception set on error, ``0`` on success." msgstr "" -#: c-api/module.rst:720 +#: c-api/module.rst:719 msgid "" "Removes the module object created from *def* from the interpreter state. " "Return ``-1`` with an exception set on error, ``0`` on success." diff --git a/c-api/monitoring.po b/c-api/monitoring.po index 4a57bd2d..72ea2ef1 100644 --- a/c-api/monitoring.po +++ b/c-api/monitoring.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.13\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/none.po b/c-api/none.po index 1d5679c3..c719f3a2 100644 --- a/c-api/none.po +++ b/c-api/none.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/number.po b/c-api/number.po index a60e4841..f5640bd0 100644 --- a/c-api/number.po +++ b/c-api/number.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/object.po b/c-api/object.po index 55a10a62..50105219 100644 --- a/c-api/object.po +++ b/c-api/object.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/objimpl.po b/c-api/objimpl.po index b3fa8cfb..8f80a93c 100644 --- a/c-api/objimpl.po +++ b/c-api/objimpl.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/perfmaps.po b/c-api/perfmaps.po index ddd2ee0e..0ada290f 100644 --- a/c-api/perfmaps.po +++ b/c-api/perfmaps.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/refcounting.po b/c-api/refcounting.po index ba21ba0c..f7f8f227 100644 --- a/c-api/refcounting.po +++ b/c-api/refcounting.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -284,7 +284,7 @@ msgstr "" #: c-api/refcounting.rst:213 msgid "" -"That arranges to set *dst* to *src* _before_ releasing the reference to the " +"That arranges to set *dst* to *src* *before* releasing the reference to the " "old value of *dst*, so that any code triggered as a side-effect of *dst* " "getting torn down no longer believes *dst* points to a valid object." msgstr "" diff --git a/c-api/reflection.po b/c-api/reflection.po index 4a348a66..fd7c6c8b 100644 --- a/c-api/reflection.po +++ b/c-api/reflection.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/sequence.po b/c-api/sequence.po index 60ddd602..c309dc92 100644 --- a/c-api/sequence.po +++ b/c-api/sequence.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/set.po b/c-api/set.po index e8866195..bbe10037 100644 --- a/c-api/set.po +++ b/c-api/set.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/slice.po b/c-api/slice.po index 2fcf4504..e1718c6c 100644 --- a/c-api/slice.po +++ b/c-api/slice.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/stable.po b/c-api/stable.po index 6c1bbdec..d751f01e 100644 --- a/c-api/stable.po +++ b/c-api/stable.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -91,22 +91,22 @@ msgid "" "spend extra effort adjusting to changes." msgstr "" -#: c-api/stable.rst:56 +#: c-api/stable.rst:57 msgid "Stable Application Binary Interface" msgstr "" -#: c-api/stable.rst:58 +#: c-api/stable.rst:59 msgid "" "For simplicity, this document talks about *extensions*, but the Limited API " "and Stable ABI work the same way for all uses of the API – for example, " "embedding Python." msgstr "" -#: c-api/stable.rst:65 +#: c-api/stable.rst:66 msgid "Limited C API" msgstr "" -#: c-api/stable.rst:67 +#: c-api/stable.rst:68 msgid "" "Python 3.2 introduced the *Limited API*, a subset of Python's C API. " "Extensions that only use the Limited API can be compiled once and be loaded " @@ -114,13 +114,13 @@ msgid "" "below `." msgstr "" -#: c-api/stable.rst:74 +#: c-api/stable.rst:75 msgid "" "Define this macro before including ``Python.h`` to opt in to only use the " "Limited API, and to select the Limited API version." msgstr "" -#: c-api/stable.rst:77 +#: c-api/stable.rst:78 msgid "" "Define ``Py_LIMITED_API`` to the value of :c:macro:`PY_VERSION_HEX` " "corresponding to the lowest Python version your extension supports. The " @@ -128,30 +128,30 @@ msgid "" "specified one onward, and can use Limited API introduced up to that version." msgstr "" -#: c-api/stable.rst:83 +#: c-api/stable.rst:84 msgid "" "Rather than using the ``PY_VERSION_HEX`` macro directly, hardcode a minimum " "minor version (e.g. ``0x030A0000`` for Python 3.10) for stability when " "compiling with future Python versions." msgstr "" -#: c-api/stable.rst:87 +#: c-api/stable.rst:88 msgid "" "You can also define ``Py_LIMITED_API`` to ``3``. This works the same as " "``0x03020000`` (Python 3.2, the version that introduced Limited API)." msgstr "" -#: c-api/stable.rst:94 +#: c-api/stable.rst:95 msgid "Stable ABI" msgstr "" -#: c-api/stable.rst:96 +#: c-api/stable.rst:97 msgid "" "To enable this, Python provides a *Stable ABI*: a set of symbols that will " "remain ABI-compatible across Python 3.x versions." msgstr "" -#: c-api/stable.rst:101 +#: c-api/stable.rst:102 msgid "" "The Stable ABI prevents ABI issues, like linker errors due to missing " "symbols or data corruption due to changes in structure layouts or function " @@ -160,21 +160,21 @@ msgid "" "details." msgstr "" -#: c-api/stable.rst:107 +#: c-api/stable.rst:108 msgid "" "The Stable ABI contains symbols exposed in the :ref:`Limited API `, but also other ones – for example, functions necessary to support " "older versions of the Limited API." msgstr "" -#: c-api/stable.rst:111 +#: c-api/stable.rst:112 msgid "" "On Windows, extensions that use the Stable ABI should be linked against " "``python3.dll`` rather than a version-specific library such as ``python39." "dll``." msgstr "" -#: c-api/stable.rst:115 +#: c-api/stable.rst:116 msgid "" "On some platforms, Python will look for and load shared library files named " "with the ``abi3`` tag (e.g. ``mymodule.abi3.so``). It does not check if such " @@ -183,31 +183,31 @@ msgid "" "not installed for lower versions of Python." msgstr "" -#: c-api/stable.rst:122 +#: c-api/stable.rst:123 msgid "" "All functions in the Stable ABI are present as functions in Python's shared " "library, not solely as macros. This makes them usable from languages that " "don't use the C preprocessor." msgstr "" -#: c-api/stable.rst:128 +#: c-api/stable.rst:129 msgid "Limited API Scope and Performance" msgstr "" -#: c-api/stable.rst:130 +#: c-api/stable.rst:131 msgid "" "The goal for the Limited API is to allow everything that is possible with " "the full C API, but possibly with a performance penalty." msgstr "" -#: c-api/stable.rst:133 +#: c-api/stable.rst:134 msgid "" "For example, while :c:func:`PyList_GetItem` is available, its “unsafe” macro " "variant :c:func:`PyList_GET_ITEM` is not. The macro can be faster because it " "can rely on version-specific implementation details of the list object." msgstr "" -#: c-api/stable.rst:138 +#: c-api/stable.rst:139 msgid "" "Without ``Py_LIMITED_API`` defined, some C API functions are inlined or " "replaced by macros. Defining ``Py_LIMITED_API`` disables this inlining, " @@ -215,7 +215,7 @@ msgid "" "reducing performance." msgstr "" -#: c-api/stable.rst:143 +#: c-api/stable.rst:144 msgid "" "By leaving out the ``Py_LIMITED_API`` definition, it is possible to compile " "a Limited API extension with a version-specific ABI. This can improve " @@ -225,11 +225,11 @@ msgid "" "of an upcoming Python version." msgstr "" -#: c-api/stable.rst:152 +#: c-api/stable.rst:153 msgid "Limited API Caveats" msgstr "" -#: c-api/stable.rst:154 +#: c-api/stable.rst:155 msgid "" "Note that compiling with ``Py_LIMITED_API`` is *not* a complete guarantee " "that code conforms to the :ref:`Limited API ` or the :ref:" @@ -237,7 +237,7 @@ msgid "" "an API also includes other issues, such as expected semantics." msgstr "" -#: c-api/stable.rst:159 +#: c-api/stable.rst:160 msgid "" "One issue that ``Py_LIMITED_API`` does not guard against is calling a " "function with arguments that are invalid in a lower Python version. For " @@ -247,19 +247,19 @@ msgid "" "crash. A similar argument works for fields of structs." msgstr "" -#: c-api/stable.rst:166 +#: c-api/stable.rst:167 msgid "" "Another issue is that some struct fields are currently not hidden when " "``Py_LIMITED_API`` is defined, even though they're part of the Limited API." msgstr "" -#: c-api/stable.rst:169 +#: c-api/stable.rst:170 msgid "" "For these reasons, we recommend testing an extension with *all* minor Python " "versions it supports, and preferably to build with the *lowest* such version." msgstr "" -#: c-api/stable.rst:172 +#: c-api/stable.rst:173 msgid "" "We also recommend reviewing documentation of all used API to check if it is " "explicitly part of the Limited API. Even with ``Py_LIMITED_API`` defined, a " @@ -267,7 +267,7 @@ msgid "" "unintentionally, as bugs)." msgstr "" -#: c-api/stable.rst:177 +#: c-api/stable.rst:178 msgid "" "Also note that the Limited API is not necessarily stable: compiling with " "``Py_LIMITED_API`` with Python 3.8 means that the extension will run with " @@ -276,11 +276,11 @@ msgid "" "that the Stable ABI stays stable." msgstr "" -#: c-api/stable.rst:187 +#: c-api/stable.rst:188 msgid "Platform Considerations" msgstr "" -#: c-api/stable.rst:189 +#: c-api/stable.rst:190 msgid "" "ABI stability depends not only on Python, but also on the compiler used, " "lower-level libraries and compiler options. For the purposes of the :ref:" @@ -288,7 +288,7 @@ msgid "" "depend on the OS type and processor architecture" msgstr "" -#: c-api/stable.rst:194 +#: c-api/stable.rst:195 msgid "" "It is the responsibility of each particular distributor of Python to ensure " "that all Python versions on a particular platform are built in a way that " @@ -296,11 +296,11 @@ msgid "" "releases from ``python.org`` and many third-party distributors." msgstr "" -#: c-api/stable.rst:204 +#: c-api/stable.rst:205 msgid "Contents of Limited API" msgstr "" -#: c-api/stable.rst:207 +#: c-api/stable.rst:208 msgid "" "Currently, the :ref:`Limited API ` includes the following " "items:" diff --git a/c-api/structures.po b/c-api/structures.po index 970141c7..247d920f 100644 --- a/c-api/structures.po +++ b/c-api/structures.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/sys.po b/c-api/sys.po index bdd72865..84d1373f 100644 --- a/c-api/sys.po +++ b/c-api/sys.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/time.po b/c-api/time.po index e5aec016..37e6684c 100644 --- a/c-api/time.po +++ b/c-api/time.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.13\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/tuple.po b/c-api/tuple.po index b35789ff..22299644 100644 --- a/c-api/tuple.po +++ b/c-api/tuple.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/type.po b/c-api/type.po index ab2fd58a..4c825543 100644 --- a/c-api/type.po +++ b/c-api/type.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -171,18 +171,37 @@ msgstr "" #: c-api/type.rst:154 msgid "" "Generic handler for the :c:member:`~PyTypeObject.tp_alloc` slot of a type " -"object. Use Python's default memory allocation mechanism to allocate a new " -"instance and initialize all its contents to ``NULL``." +"object. Uses Python's default memory allocation mechanism to allocate " +"memory for a new instance, zeros the memory, then initializes the memory as " +"if by calling :c:func:`PyObject_Init` or :c:func:`PyObject_InitVar`." msgstr "" -#: c-api/type.rst:160 +#: c-api/type.rst:159 +msgid "" +"Do not call this directly to allocate memory for an object; call the type's :" +"c:member:`~PyTypeObject.tp_alloc` slot instead." +msgstr "" + +#: c-api/type.rst:162 +msgid "" +"For types that support garbage collection (i.e., the :c:macro:" +"`Py_TPFLAGS_HAVE_GC` flag is set), this function behaves like :c:macro:" +"`PyObject_GC_New` or :c:macro:`PyObject_GC_NewVar` (except the memory is " +"guaranteed to be zeroed before initialization), and should be paired with :c:" +"func:`PyObject_GC_Del` in :c:member:`~PyTypeObject.tp_free`. Otherwise, it " +"behaves like :c:macro:`PyObject_New` or :c:macro:`PyObject_NewVar` (except " +"the memory is guaranteed to be zeroed before initialization) and should be " +"paired with :c:func:`PyObject_Free` in :c:member:`~PyTypeObject.tp_free`." +msgstr "" + +#: c-api/type.rst:174 msgid "" "Generic handler for the :c:member:`~PyTypeObject.tp_new` slot of a type " -"object. Create a new instance using the type's :c:member:`~PyTypeObject." -"tp_alloc` slot." +"object. Creates a new instance using the type's :c:member:`~PyTypeObject." +"tp_alloc` slot and returns the resulting object." msgstr "" -#: c-api/type.rst:165 +#: c-api/type.rst:180 msgid "" "Finalize a type object. This should be called on all type objects to finish " "their initialization. This function is responsible for adding inherited " @@ -190,7 +209,7 @@ msgid "" "and sets an exception on error." msgstr "" -#: c-api/type.rst:171 +#: c-api/type.rst:186 msgid "" "If some of the base classes implements the GC protocol and the provided type " "does not include the :c:macro:`Py_TPFLAGS_HAVE_GC` in its flags, then the GC " @@ -201,32 +220,32 @@ msgid "" "handle." msgstr "" -#: c-api/type.rst:181 +#: c-api/type.rst:196 msgid "" "Return the type's name. Equivalent to getting the type's :attr:`~type." "__name__` attribute." msgstr "" -#: c-api/type.rst:188 +#: c-api/type.rst:203 msgid "" "Return the type's qualified name. Equivalent to getting the type's :attr:" "`~type.__qualname__` attribute." msgstr "" -#: c-api/type.rst:195 +#: c-api/type.rst:210 msgid "" "Return the type's fully qualified name. Equivalent to ``f\"{type.__module__}." "{type.__qualname__}\"``, or :attr:`type.__qualname__` if :attr:`type." "__module__` is not a string or is equal to ``\"builtins\"``." msgstr "" -#: c-api/type.rst:203 +#: c-api/type.rst:218 msgid "" "Return the type's module name. Equivalent to getting the :attr:`type." "__module__` attribute." msgstr "" -#: c-api/type.rst:210 +#: c-api/type.rst:225 msgid "" "Return the function pointer stored in the given slot. If the result is " "``NULL``, this indicates that either the slot is ``NULL``, or that the " @@ -234,30 +253,30 @@ msgid "" "result pointer into the appropriate function type." msgstr "" -#: c-api/type.rst:216 +#: c-api/type.rst:231 msgid "" "See :c:member:`PyType_Slot.slot` for possible values of the *slot* argument." msgstr "" -#: c-api/type.rst:220 +#: c-api/type.rst:235 msgid "" ":c:func:`PyType_GetSlot` can now accept all types. Previously, it was " "limited to :ref:`heap types `." msgstr "" -#: c-api/type.rst:226 +#: c-api/type.rst:241 msgid "" "Return the module object associated with the given type when the type was " "created using :c:func:`PyType_FromModuleAndSpec`." msgstr "" -#: c-api/type.rst:249 +#: c-api/type.rst:264 msgid "" "If no module is associated with the given type, sets :py:class:`TypeError` " "and returns ``NULL``." msgstr "" -#: c-api/type.rst:232 +#: c-api/type.rst:247 msgid "" "This function is usually used to get the module in which a method is " "defined. Note that in such a method, ``PyType_GetModule(Py_TYPE(self))`` may " @@ -268,31 +287,31 @@ msgid "" "type:`!PyCMethod` cannot be used." msgstr "" -#: c-api/type.rst:245 +#: c-api/type.rst:260 msgid "" "Return the state of the module object associated with the given type. This " "is a shortcut for calling :c:func:`PyModule_GetState()` on the result of :c:" "func:`PyType_GetModule`." msgstr "" -#: c-api/type.rst:252 +#: c-api/type.rst:267 msgid "" "If the *type* has an associated module but its state is ``NULL``, returns " "``NULL`` without setting an exception." msgstr "" -#: c-api/type.rst:259 +#: c-api/type.rst:274 msgid "" "Find the first superclass whose module was created from the given :c:type:" "`PyModuleDef` *def*, and return that module." msgstr "" -#: c-api/type.rst:262 +#: c-api/type.rst:277 msgid "" "If no module is found, raises a :py:class:`TypeError` and returns ``NULL``." msgstr "" -#: c-api/type.rst:264 +#: c-api/type.rst:279 msgid "" "This function is intended to be used together with :c:func:" "`PyModule_GetState()` to get module state from slot methods (such as :c:" @@ -301,78 +320,85 @@ msgid "" "type:`PyCMethod` calling convention." msgstr "" -#: c-api/type.rst:274 +#: c-api/type.rst:285 +msgid "" +"The returned reference is :term:`borrowed ` from *type*, " +"and will be valid as long as you hold a reference to *type*. Do not release " +"it with :c:func:`Py_DECREF` or similar." +msgstr "" + +#: c-api/type.rst:293 msgid "" "Find the first superclass in *type*'s :term:`method resolution order` whose :" "c:macro:`Py_tp_token` token is equal to the given one." msgstr "" -#: c-api/type.rst:277 +#: c-api/type.rst:296 msgid "" "If found, set *\\*result* to a new :term:`strong reference` to it and return " "``1``." msgstr "" -#: c-api/type.rst:279 +#: c-api/type.rst:298 msgid "If not found, set *\\*result* to ``NULL`` and return ``0``." msgstr "" -#: c-api/type.rst:280 +#: c-api/type.rst:299 msgid "" "On error, set *\\*result* to ``NULL`` and return ``-1`` with an exception " "set." msgstr "" -#: c-api/type.rst:283 +#: c-api/type.rst:302 msgid "" "The *result* argument may be ``NULL``, in which case *\\*result* is not set. " "Use this if you need only the return value." msgstr "" -#: c-api/type.rst:286 +#: c-api/type.rst:305 msgid "The *token* argument may not be ``NULL``." msgstr "" -#: c-api/type.rst:292 +#: c-api/type.rst:311 msgid "Attempt to assign a version tag to the given type." msgstr "" -#: c-api/type.rst:294 +#: c-api/type.rst:313 msgid "" "Returns 1 if the type already had a valid version tag or a new one was " "assigned, or 0 if a new tag could not be assigned." msgstr "" -#: c-api/type.rst:301 +#: c-api/type.rst:320 msgid "Creating Heap-Allocated Types" msgstr "" -#: c-api/type.rst:303 +#: c-api/type.rst:322 msgid "" "The following functions and structs are used to create :ref:`heap types " "`." msgstr "" -#: c-api/type.rst:308 +#: c-api/type.rst:327 msgid "" "Create and return a :ref:`heap type ` from the *spec* (see :c:" "macro:`Py_TPFLAGS_HEAPTYPE`)." msgstr "" -#: c-api/type.rst:311 +#: c-api/type.rst:330 msgid "" "The metaclass *metaclass* is used to construct the resulting type object. " "When *metaclass* is ``NULL``, the metaclass is derived from *bases* (or " "*Py_tp_base[s]* slots if *bases* is ``NULL``, see below)." msgstr "" -#: c-api/type.rst:315 +#: c-api/type.rst:334 msgid "" "Metaclasses that override :c:member:`~PyTypeObject.tp_new` are not " "supported, except if ``tp_new`` is ``NULL``." msgstr "" -#: c-api/type.rst:318 +#: c-api/type.rst:337 msgid "" "The *bases* argument can be used to specify base classes; it can either be " "only one class or a tuple of classes. If *bases* is ``NULL``, the " @@ -381,7 +407,7 @@ msgid "" "derives from :class:`object`." msgstr "" -#: c-api/type.rst:324 +#: c-api/type.rst:343 msgid "" "The *module* argument can be used to record the module in which the new " "class is defined. It must be a module object or ``NULL``. If not ``NULL``, " @@ -390,11 +416,11 @@ msgid "" "subclasses; it must be specified for each class individually." msgstr "" -#: c-api/type.rst:331 +#: c-api/type.rst:350 msgid "This function calls :c:func:`PyType_Ready` on the new type." msgstr "" -#: c-api/type.rst:333 +#: c-api/type.rst:352 msgid "" "Note that this function does *not* fully match the behavior of calling :py:" "class:`type() ` or using the :keyword:`class` statement. With user-" @@ -403,108 +429,108 @@ msgid "" "Specifically:" msgstr "" -#: c-api/type.rst:340 +#: c-api/type.rst:359 msgid "" ":py:meth:`~object.__new__` is not called on the new class (and it must be " "set to ``type.__new__``)." msgstr "" -#: c-api/type.rst:342 +#: c-api/type.rst:361 msgid ":py:meth:`~object.__init__` is not called on the new class." msgstr "" -#: c-api/type.rst:343 +#: c-api/type.rst:362 msgid ":py:meth:`~object.__init_subclass__` is not called on any bases." msgstr "" -#: c-api/type.rst:344 +#: c-api/type.rst:363 msgid ":py:meth:`~object.__set_name__` is not called on new descriptors." msgstr "" -#: c-api/type.rst:350 +#: c-api/type.rst:369 msgid "Equivalent to ``PyType_FromMetaclass(NULL, module, spec, bases)``." msgstr "" -#: c-api/type.rst:356 +#: c-api/type.rst:375 msgid "" "The function now accepts a single class as the *bases* argument and ``NULL`` " "as the ``tp_doc`` slot." msgstr "" -#: c-api/type.rst:382 +#: c-api/type.rst:401 msgid "" "The function now finds and uses a metaclass corresponding to the provided " "base classes. Previously, only :class:`type` instances were returned." msgstr "" -#: c-api/type.rst:385 c-api/type.rst:405 +#: c-api/type.rst:404 c-api/type.rst:424 msgid "" "The :c:member:`~PyTypeObject.tp_new` of the metaclass is *ignored*. which " "may result in incomplete initialization. Creating classes whose metaclass " "overrides :c:member:`~PyTypeObject.tp_new` is deprecated." msgstr "" -#: c-api/type.rst:392 c-api/type.rst:412 +#: c-api/type.rst:411 c-api/type.rst:431 msgid "" "Creating classes whose metaclass overrides :c:member:`~PyTypeObject.tp_new` " "is no longer allowed." msgstr "" -#: c-api/type.rst:376 +#: c-api/type.rst:395 msgid "Equivalent to ``PyType_FromMetaclass(NULL, NULL, spec, bases)``." msgstr "" -#: c-api/type.rst:397 +#: c-api/type.rst:416 msgid "Equivalent to ``PyType_FromMetaclass(NULL, NULL, spec, NULL)``." msgstr "" -#: c-api/type.rst:401 +#: c-api/type.rst:420 msgid "" "The function now finds and uses a metaclass corresponding to the base " "classes provided in *Py_tp_base[s]* slots. Previously, only :class:`type` " "instances were returned." msgstr "" -#: c-api/type.rst:417 +#: c-api/type.rst:436 msgid "" "Make a type immutable: set the :c:macro:`Py_TPFLAGS_IMMUTABLETYPE` flag." msgstr "" -#: c-api/type.rst:419 +#: c-api/type.rst:438 msgid "All base classes of *type* must be immutable." msgstr "" -#: c-api/type.rst:421 +#: c-api/type.rst:440 msgid "On success, return ``0``. On error, set an exception and return ``-1``." msgstr "" -#: c-api/type.rst:424 +#: c-api/type.rst:443 msgid "" "The type must not be used before it's made immutable. For example, type " "instances must not be created before the type is made immutable." msgstr "" -#: c-api/type.rst:440 +#: c-api/type.rst:459 msgid "Structure defining a type's behavior." msgstr "" -#: c-api/type.rst:444 +#: c-api/type.rst:463 msgid "Name of the type, used to set :c:member:`PyTypeObject.tp_name`." msgstr "" -#: c-api/type.rst:448 +#: c-api/type.rst:467 msgid "" "If positive, specifies the size of the instance in bytes. It is used to set :" "c:member:`PyTypeObject.tp_basicsize`." msgstr "" -#: c-api/type.rst:451 +#: c-api/type.rst:470 msgid "" "If zero, specifies that :c:member:`~PyTypeObject.tp_basicsize` should be " "inherited." msgstr "" -#: c-api/type.rst:454 +#: c-api/type.rst:473 msgid "" "If negative, the absolute value specifies how much space instances of the " "class need *in addition* to the superclass. Use :c:func:" @@ -514,17 +540,17 @@ msgid "" "requirements." msgstr "" -#: c-api/type.rst:464 +#: c-api/type.rst:483 msgid "Previously, this field could not be negative." msgstr "" -#: c-api/type.rst:468 +#: c-api/type.rst:487 msgid "" "Size of one element of a variable-size type, in bytes. Used to set :c:member:" "`PyTypeObject.tp_itemsize`. See ``tp_itemsize`` documentation for caveats." msgstr "" -#: c-api/type.rst:472 +#: c-api/type.rst:491 msgid "" "If zero, :c:member:`~PyTypeObject.tp_itemsize` is inherited. Extending " "arbitrary variable-sized classes is dangerous, since some types use a fixed " @@ -533,58 +559,58 @@ msgid "" "only possible in the following situations:" msgstr "" -#: c-api/type.rst:479 +#: c-api/type.rst:498 msgid "" "The base is not variable-sized (its :c:member:`~PyTypeObject.tp_itemsize`)." msgstr "" -#: c-api/type.rst:481 +#: c-api/type.rst:500 msgid "" "The requested :c:member:`PyType_Spec.basicsize` is positive, suggesting that " "the memory layout of the base class is known." msgstr "" -#: c-api/type.rst:483 +#: c-api/type.rst:502 msgid "" "The requested :c:member:`PyType_Spec.basicsize` is zero, suggesting that the " "subclass does not access the instance's memory directly." msgstr "" -#: c-api/type.rst:486 +#: c-api/type.rst:505 msgid "With the :c:macro:`Py_TPFLAGS_ITEMS_AT_END` flag." msgstr "" -#: c-api/type.rst:490 +#: c-api/type.rst:509 msgid "Type flags, used to set :c:member:`PyTypeObject.tp_flags`." msgstr "" -#: c-api/type.rst:492 +#: c-api/type.rst:511 msgid "" "If the ``Py_TPFLAGS_HEAPTYPE`` flag is not set, :c:func:" "`PyType_FromSpecWithBases` sets it automatically." msgstr "" -#: c-api/type.rst:497 +#: c-api/type.rst:516 msgid "" "Array of :c:type:`PyType_Slot` structures. Terminated by the special slot " "value ``{0, NULL}``." msgstr "" -#: c-api/type.rst:500 +#: c-api/type.rst:519 msgid "Each slot ID should be specified at most once." msgstr "" -#: c-api/type.rst:510 +#: c-api/type.rst:529 msgid "" "Structure defining optional functionality of a type, containing a slot ID " "and a value pointer." msgstr "" -#: c-api/type.rst:515 +#: c-api/type.rst:534 msgid "A slot ID." msgstr "" -#: c-api/type.rst:517 +#: c-api/type.rst:536 msgid "" "Slot IDs are named like the field names of the structures :c:type:" "`PyTypeObject`, :c:type:`PyNumberMethods`, :c:type:`PySequenceMethods`, :c:" @@ -592,52 +618,52 @@ msgid "" "prefix. For example, use:" msgstr "" -#: c-api/type.rst:523 +#: c-api/type.rst:542 msgid "``Py_tp_dealloc`` to set :c:member:`PyTypeObject.tp_dealloc`" msgstr "" -#: c-api/type.rst:524 +#: c-api/type.rst:543 msgid "``Py_nb_add`` to set :c:member:`PyNumberMethods.nb_add`" msgstr "" -#: c-api/type.rst:525 +#: c-api/type.rst:544 msgid "``Py_sq_length`` to set :c:member:`PySequenceMethods.sq_length`" msgstr "" -#: c-api/type.rst:527 +#: c-api/type.rst:546 msgid "" "An additional slot is supported that does not correspond to a :c:type:`!" "PyTypeObject` struct field:" msgstr "" -#: c-api/type.rst:530 +#: c-api/type.rst:549 msgid ":c:data:`Py_tp_token`" msgstr "" -#: c-api/type.rst:532 +#: c-api/type.rst:551 msgid "" "The following “offset” fields cannot be set using :c:type:`PyType_Slot`:" msgstr "" -#: c-api/type.rst:534 +#: c-api/type.rst:553 msgid "" ":c:member:`~PyTypeObject.tp_weaklistoffset` (use :c:macro:" "`Py_TPFLAGS_MANAGED_WEAKREF` instead if possible)" msgstr "" -#: c-api/type.rst:536 +#: c-api/type.rst:555 msgid "" ":c:member:`~PyTypeObject.tp_dictoffset` (use :c:macro:" "`Py_TPFLAGS_MANAGED_DICT` instead if possible)" msgstr "" -#: c-api/type.rst:538 +#: c-api/type.rst:557 msgid "" ":c:member:`~PyTypeObject.tp_vectorcall_offset` (use " "``\"__vectorcalloffset__\"`` in :ref:`PyMemberDef `)" msgstr "" -#: c-api/type.rst:542 +#: c-api/type.rst:561 msgid "" "If it is not possible to switch to a ``MANAGED`` flag (for example, for " "vectorcall or to support Python older than 3.12), specify the offset in :c:" @@ -645,109 +671,109 @@ msgid "" "documentation ` for details." msgstr "" -#: c-api/type.rst:548 +#: c-api/type.rst:567 msgid "" "The following internal fields cannot be set at all when creating a heap type:" msgstr "" -#: c-api/type.rst:551 +#: c-api/type.rst:570 msgid "" ":c:member:`~PyTypeObject.tp_dict`, :c:member:`~PyTypeObject.tp_mro`, :c:" "member:`~PyTypeObject.tp_cache`, :c:member:`~PyTypeObject.tp_subclasses`, " "and :c:member:`~PyTypeObject.tp_weaklist`." msgstr "" -#: c-api/type.rst:557 +#: c-api/type.rst:576 msgid "" "Setting :c:data:`Py_tp_bases` or :c:data:`Py_tp_base` may be problematic on " "some platforms. To avoid issues, use the *bases* argument of :c:func:" "`PyType_FromSpecWithBases` instead." msgstr "" -#: c-api/type.rst:562 +#: c-api/type.rst:581 msgid "Slots in :c:type:`PyBufferProcs` may be set in the unlimited API." msgstr "" -#: c-api/type.rst:565 +#: c-api/type.rst:584 msgid "" ":c:member:`~PyBufferProcs.bf_getbuffer` and :c:member:`~PyBufferProcs." "bf_releasebuffer` are now available under the :ref:`limited API `." msgstr "" -#: c-api/type.rst:570 +#: c-api/type.rst:589 msgid "" "The field :c:member:`~PyTypeObject.tp_vectorcall` can now set using " "``Py_tp_vectorcall``. See the field's documentation for details." msgstr "" -#: c-api/type.rst:577 +#: c-api/type.rst:596 msgid "" "The desired value of the slot. In most cases, this is a pointer to a " "function." msgstr "" -#: c-api/type.rst:580 +#: c-api/type.rst:599 msgid "*pfunc* values may not be ``NULL``, except for the following slots:" msgstr "" -#: c-api/type.rst:582 +#: c-api/type.rst:601 msgid "``Py_tp_doc``" msgstr "" -#: c-api/type.rst:583 +#: c-api/type.rst:602 msgid "" ":c:data:`Py_tp_token` (for clarity, prefer :c:data:`Py_TP_USE_SPEC` rather " "than ``NULL``)" msgstr "" -#: c-api/type.rst:588 +#: c-api/type.rst:607 msgid "" "A :c:member:`~PyType_Slot.slot` that records a static memory layout ID for a " "class." msgstr "" -#: c-api/type.rst:591 +#: c-api/type.rst:610 msgid "" "If the :c:type:`PyType_Spec` of the class is statically allocated, the token " "can be set to the spec using the special value :c:data:`Py_TP_USE_SPEC`:" msgstr "" -#: c-api/type.rst:595 +#: c-api/type.rst:614 msgid "" "static PyType_Slot foo_slots[] = {\n" " {Py_tp_token, Py_TP_USE_SPEC}," msgstr "" -#: c-api/type.rst:600 +#: c-api/type.rst:619 msgid "It can also be set to an arbitrary pointer, but you must ensure that:" msgstr "" -#: c-api/type.rst:602 +#: c-api/type.rst:621 msgid "" "The pointer outlives the class, so it's not reused for something else while " "the class exists." msgstr "" -#: c-api/type.rst:604 +#: c-api/type.rst:623 msgid "" "It \"belongs\" to the extension module where the class lives, so it will not " "clash with other extensions." msgstr "" -#: c-api/type.rst:607 +#: c-api/type.rst:626 msgid "" "Use :c:func:`PyType_GetBaseByToken` to check if a class's superclass has a " "given token -- that is, check whether the memory layout is compatible." msgstr "" -#: c-api/type.rst:610 +#: c-api/type.rst:629 msgid "" "To get the token for a given class (without considering superclasses), use :" "c:func:`PyType_GetSlot` with ``Py_tp_token``." msgstr "" -#: c-api/type.rst:619 +#: c-api/type.rst:638 msgid "" "Used as a value with :c:data:`Py_tp_token` to set the token to the class's :" "c:type:`PyType_Spec`. Expands to ``NULL``." diff --git a/c-api/typehints.po b/c-api/typehints.po index 0bd934e3..4a178450 100644 --- a/c-api/typehints.po +++ b/c-api/typehints.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/typeobj.po b/c-api/typeobj.po index 2dcef47e..4931341e 100644 --- a/c-api/typeobj.po +++ b/c-api/typeobj.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -115,7 +115,7 @@ msgid ":c:member:`~PyTypeObject.tp_basicsize`" msgstr "" #: c-api/typeobj.rst:46 c-api/typeobj.rst:52 c-api/typeobj.rst:120 -#: c-api/typeobj.rst:416 +#: c-api/typeobj.rst:417 msgid ":c:type:`Py_ssize_t`" msgstr "" @@ -127,7 +127,7 @@ msgstr "" msgid ":c:member:`~PyTypeObject.tp_dealloc`" msgstr "" -#: c-api/typeobj.rst:142 c-api/typeobj.rst:346 +#: c-api/typeobj.rst:142 c-api/typeobj.rst:347 msgid ":c:type:`destructor`" msgstr "" @@ -139,7 +139,7 @@ msgstr "" msgid "(:c:member:`~PyTypeObject.tp_getattr`)" msgstr "" -#: c-api/typeobj.rst:370 +#: c-api/typeobj.rst:371 msgid ":c:type:`getattrfunc`" msgstr "" @@ -156,7 +156,7 @@ msgstr "" msgid "(:c:member:`~PyTypeObject.tp_setattr`)" msgstr "" -#: c-api/typeobj.rst:375 +#: c-api/typeobj.rst:376 msgid ":c:type:`setattrfunc`" msgstr "" @@ -172,7 +172,7 @@ msgstr "" msgid ":c:type:`PyAsyncMethods` *" msgstr "" -#: c-api/typeobj.rst:64 c-api/typeobj.rst:68 +#: c-api/typeobj.rst:64 c-api/typeobj.rst:68 c-api/typeobj.rst:82 msgid ":ref:`sub-slots`" msgstr "" @@ -184,7 +184,7 @@ msgstr "" msgid ":c:member:`~PyTypeObject.tp_repr`" msgstr "" -#: c-api/typeobj.rst:74 c-api/typeobj.rst:368 +#: c-api/typeobj.rst:74 c-api/typeobj.rst:369 msgid ":c:type:`reprfunc`" msgstr "" @@ -220,7 +220,7 @@ msgstr "" msgid ":c:member:`~PyTypeObject.tp_hash`" msgstr "" -#: c-api/typeobj.rst:404 +#: c-api/typeobj.rst:405 msgid ":c:type:`hashfunc`" msgstr "" @@ -232,7 +232,7 @@ msgstr "" msgid ":c:member:`~PyTypeObject.tp_call`" msgstr "" -#: c-api/typeobj.rst:237 c-api/typeobj.rst:440 +#: c-api/typeobj.rst:237 c-api/typeobj.rst:441 msgid ":c:type:`ternaryfunc`" msgstr "" @@ -252,7 +252,7 @@ msgstr "" msgid ":c:member:`~PyTypeObject.tp_getattro`" msgstr "" -#: c-api/typeobj.rst:381 +#: c-api/typeobj.rst:382 msgid ":c:type:`getattrofunc`" msgstr "" @@ -260,7 +260,7 @@ msgstr "" msgid ":c:member:`~PyTypeObject.tp_setattro`" msgstr "" -#: c-api/typeobj.rst:386 +#: c-api/typeobj.rst:387 msgid ":c:type:`setattrofunc`" msgstr "" @@ -297,7 +297,7 @@ msgstr "" msgid ":c:member:`~PyTypeObject.tp_traverse`" msgstr "" -#: c-api/typeobj.rst:350 +#: c-api/typeobj.rst:351 msgid ":c:type:`traverseproc`" msgstr "" @@ -305,7 +305,7 @@ msgstr "" msgid ":c:member:`~PyTypeObject.tp_clear`" msgstr "" -#: c-api/typeobj.rst:130 c-api/typeobj.rst:429 +#: c-api/typeobj.rst:130 c-api/typeobj.rst:430 msgid ":c:type:`inquiry`" msgstr "" @@ -313,7 +313,7 @@ msgstr "" msgid ":c:member:`~PyTypeObject.tp_richcompare`" msgstr "" -#: c-api/typeobj.rst:406 +#: c-api/typeobj.rst:407 msgid ":c:type:`richcmpfunc`" msgstr "" @@ -329,7 +329,7 @@ msgstr "" msgid ":c:member:`~PyTypeObject.tp_iter`" msgstr "" -#: c-api/typeobj.rst:412 +#: c-api/typeobj.rst:413 msgid ":c:type:`getiterfunc`" msgstr "" @@ -341,7 +341,7 @@ msgstr "" msgid ":c:member:`~PyTypeObject.tp_iternext`" msgstr "" -#: c-api/typeobj.rst:414 +#: c-api/typeobj.rst:415 msgid ":c:type:`iternextfunc`" msgstr "" @@ -390,9 +390,9 @@ msgid ":c:member:`~PyTypeObject.tp_dict`" msgstr "" #: c-api/typeobj.rst:113 c-api/typeobj.rst:134 c-api/typeobj.rst:140 -#: c-api/typeobj.rst:346 c-api/typeobj.rst:368 c-api/typeobj.rst:381 -#: c-api/typeobj.rst:404 c-api/typeobj.rst:412 c-api/typeobj.rst:416 -#: c-api/typeobj.rst:431 c-api/typeobj.rst:440 c-api/typeobj.rst:446 +#: c-api/typeobj.rst:347 c-api/typeobj.rst:369 c-api/typeobj.rst:382 +#: c-api/typeobj.rst:405 c-api/typeobj.rst:413 c-api/typeobj.rst:417 +#: c-api/typeobj.rst:432 c-api/typeobj.rst:441 c-api/typeobj.rst:447 msgid ":c:type:`PyObject` *" msgstr "" @@ -404,7 +404,7 @@ msgstr "" msgid ":c:member:`~PyTypeObject.tp_descr_get`" msgstr "" -#: c-api/typeobj.rst:392 +#: c-api/typeobj.rst:393 msgid ":c:type:`descrgetfunc`" msgstr "" @@ -416,7 +416,7 @@ msgstr "" msgid ":c:member:`~PyTypeObject.tp_descr_set`" msgstr "" -#: c-api/typeobj.rst:398 +#: c-api/typeobj.rst:399 msgid ":c:type:`descrsetfunc`" msgstr "" @@ -432,7 +432,7 @@ msgstr "" msgid ":c:member:`~PyTypeObject.tp_init`" msgstr "" -#: c-api/typeobj.rst:362 +#: c-api/typeobj.rst:363 msgid ":c:type:`initproc`" msgstr "" @@ -444,7 +444,7 @@ msgstr "" msgid ":c:member:`~PyTypeObject.tp_alloc`" msgstr "" -#: c-api/typeobj.rst:341 +#: c-api/typeobj.rst:342 msgid ":c:type:`allocfunc`" msgstr "" @@ -452,7 +452,7 @@ msgstr "" msgid ":c:member:`~PyTypeObject.tp_new`" msgstr "" -#: c-api/typeobj.rst:356 +#: c-api/typeobj.rst:357 msgid ":c:type:`newfunc`" msgstr "" @@ -464,7 +464,7 @@ msgstr "" msgid ":c:member:`~PyTypeObject.tp_free`" msgstr "" -#: c-api/typeobj.rst:348 +#: c-api/typeobj.rst:349 msgid ":c:type:`freefunc`" msgstr "" @@ -500,7 +500,7 @@ msgstr "" msgid "[:c:member:`~PyTypeObject.tp_subclasses`]" msgstr "" -#: c-api/typeobj.rst:138 c-api/typeobj.rst:348 +#: c-api/typeobj.rst:138 c-api/typeobj.rst:349 msgid "void *" msgstr "" @@ -630,7 +630,7 @@ msgid ":c:member:`~PyAsyncMethods.am_await`" msgstr "" #: c-api/typeobj.rst:206 c-api/typeobj.rst:242 c-api/typeobj.rst:246 -#: c-api/typeobj.rst:277 c-api/typeobj.rst:291 c-api/typeobj.rst:431 +#: c-api/typeobj.rst:277 c-api/typeobj.rst:291 c-api/typeobj.rst:432 msgid ":c:type:`unaryfunc`" msgstr "" @@ -670,7 +670,7 @@ msgstr "" #: c-api/typeobj.rst:232 c-api/typeobj.rst:252 c-api/typeobj.rst:257 #: c-api/typeobj.rst:262 c-api/typeobj.rst:267 c-api/typeobj.rst:272 #: c-api/typeobj.rst:283 c-api/typeobj.rst:287 c-api/typeobj.rst:293 -#: c-api/typeobj.rst:302 c-api/typeobj.rst:322 c-api/typeobj.rst:435 +#: c-api/typeobj.rst:302 c-api/typeobj.rst:322 c-api/typeobj.rst:436 msgid ":c:type:`binaryfunc`" msgstr "" @@ -958,7 +958,7 @@ msgstr "" msgid ":c:member:`~PyMappingMethods.mp_length`" msgstr "" -#: c-api/typeobj.rst:309 c-api/typeobj.rst:416 +#: c-api/typeobj.rst:309 c-api/typeobj.rst:417 msgid ":c:type:`lenfunc`" msgstr "" @@ -978,7 +978,7 @@ msgstr "" msgid ":c:member:`~PyMappingMethods.mp_ass_subscript`" msgstr "" -#: c-api/typeobj.rst:462 +#: c-api/typeobj.rst:463 msgid ":c:type:`objobjargproc`" msgstr "" @@ -1002,7 +1002,7 @@ msgstr "" msgid ":c:member:`~PySequenceMethods.sq_repeat`" msgstr "" -#: c-api/typeobj.rst:315 c-api/typeobj.rst:446 +#: c-api/typeobj.rst:315 c-api/typeobj.rst:447 msgid ":c:type:`ssizeargfunc`" msgstr "" @@ -1018,7 +1018,7 @@ msgstr "" msgid ":c:member:`~PySequenceMethods.sq_ass_item`" msgstr "" -#: c-api/typeobj.rst:451 +#: c-api/typeobj.rst:452 msgid ":c:type:`ssizeobjargproc`" msgstr "" @@ -1030,7 +1030,7 @@ msgstr "" msgid ":c:member:`~PySequenceMethods.sq_contains`" msgstr "" -#: c-api/typeobj.rst:457 +#: c-api/typeobj.rst:458 msgid ":c:type:`objobjproc`" msgstr "" @@ -1054,6 +1054,10 @@ msgstr "" msgid ":c:func:`getbufferproc`" msgstr "" +#: c-api/typeobj.rst:328 +msgid "__buffer__" +msgstr "" + #: c-api/typeobj.rst:330 msgid ":c:member:`~PyBufferProcs.bf_releasebuffer`" msgstr "" @@ -1062,23 +1066,27 @@ msgstr "" msgid ":c:func:`releasebufferproc`" msgstr "" -#: c-api/typeobj.rst:336 +#: c-api/typeobj.rst:330 +msgid "__release_\\ buffer\\__" +msgstr "" + +#: c-api/typeobj.rst:337 msgid "slot typedefs" msgstr "" -#: c-api/typeobj.rst:339 +#: c-api/typeobj.rst:340 msgid "typedef" msgstr "" -#: c-api/typeobj.rst:339 +#: c-api/typeobj.rst:340 msgid "Parameter Types" msgstr "" -#: c-api/typeobj.rst:339 +#: c-api/typeobj.rst:340 msgid "Return Type" msgstr "" -#: c-api/typeobj.rst:348 c-api/typeobj.rst:424 +#: c-api/typeobj.rst:349 c-api/typeobj.rst:425 msgid "void" msgstr "" @@ -1086,16 +1094,16 @@ msgstr "" msgid ":c:type:`visitproc`" msgstr "" -#: c-api/typeobj.rst:350 c-api/typeobj.rst:375 c-api/typeobj.rst:398 -#: c-api/typeobj.rst:429 c-api/typeobj.rst:457 c-api/typeobj.rst:462 +#: c-api/typeobj.rst:351 c-api/typeobj.rst:376 c-api/typeobj.rst:399 +#: c-api/typeobj.rst:430 c-api/typeobj.rst:458 c-api/typeobj.rst:463 msgid "int" msgstr "" -#: c-api/typeobj.rst:404 +#: c-api/typeobj.rst:405 msgid "Py_hash_t" msgstr "" -#: c-api/typeobj.rst:418 +#: c-api/typeobj.rst:419 msgid ":c:type:`getbufferproc`" msgstr "" @@ -1103,26 +1111,26 @@ msgstr "" msgid ":c:type:`Py_buffer` *" msgstr "" -#: c-api/typeobj.rst:424 +#: c-api/typeobj.rst:425 msgid ":c:type:`releasebufferproc`" msgstr "" -#: c-api/typeobj.rst:469 +#: c-api/typeobj.rst:470 msgid "See :ref:`slot-typedefs` below for more detail." msgstr "" -#: c-api/typeobj.rst:473 +#: c-api/typeobj.rst:474 msgid "PyTypeObject Definition" msgstr "" -#: c-api/typeobj.rst:475 +#: c-api/typeobj.rst:476 msgid "" "The structure definition for :c:type:`PyTypeObject` can be found in :file:" "`Include/cpython/object.h`. For convenience of reference, this repeats the " "definition found there:" msgstr "" -#: c-api/typeobj.rst:481 +#: c-api/typeobj.rst:482 msgid "" "typedef struct _typeobject {\n" " PyObject_VAR_HEAD\n" @@ -1221,11 +1229,11 @@ msgid "" "} PyTypeObject;\n" msgstr "" -#: c-api/typeobj.rst:485 +#: c-api/typeobj.rst:486 msgid "PyObject Slots" msgstr "" -#: c-api/typeobj.rst:487 +#: c-api/typeobj.rst:488 msgid "" "The type object structure extends the :c:type:`PyVarObject` structure. The :" "c:member:`~PyVarObject.ob_size` field is used for dynamic types (created by :" @@ -1235,7 +1243,7 @@ msgid "" "the :c:member:`~PyVarObject.ob_size` field." msgstr "" -#: c-api/typeobj.rst:496 +#: c-api/typeobj.rst:497 msgid "" "This is the type object's reference count, initialized to ``1`` by the " "``PyObject_HEAD_INIT`` macro. Note that for :ref:`statically allocated type " @@ -1245,25 +1253,25 @@ msgid "" "instances *do* count as references." msgstr "" -#: c-api/typeobj.rst:526 c-api/typeobj.rst:587 c-api/typeobj.rst:746 -#: c-api/typeobj.rst:804 c-api/typeobj.rst:839 c-api/typeobj.rst:880 -#: c-api/typeobj.rst:904 c-api/typeobj.rst:959 c-api/typeobj.rst:1000 -#: c-api/typeobj.rst:1045 c-api/typeobj.rst:1101 c-api/typeobj.rst:1122 -#: c-api/typeobj.rst:1146 c-api/typeobj.rst:1187 c-api/typeobj.rst:1218 -#: c-api/typeobj.rst:1284 c-api/typeobj.rst:1324 c-api/typeobj.rst:1376 -#: c-api/typeobj.rst:1488 c-api/typeobj.rst:1624 c-api/typeobj.rst:1685 -#: c-api/typeobj.rst:1721 c-api/typeobj.rst:1750 c-api/typeobj.rst:1812 -#: c-api/typeobj.rst:1856 c-api/typeobj.rst:1929 c-api/typeobj.rst:1987 -#: c-api/typeobj.rst:2041 c-api/typeobj.rst:2082 c-api/typeobj.rst:2109 -#: c-api/typeobj.rst:2140 c-api/typeobj.rst:2225 +#: c-api/typeobj.rst:527 c-api/typeobj.rst:588 c-api/typeobj.rst:808 +#: c-api/typeobj.rst:870 c-api/typeobj.rst:905 c-api/typeobj.rst:946 +#: c-api/typeobj.rst:970 c-api/typeobj.rst:1025 c-api/typeobj.rst:1066 +#: c-api/typeobj.rst:1111 c-api/typeobj.rst:1167 c-api/typeobj.rst:1188 +#: c-api/typeobj.rst:1212 c-api/typeobj.rst:1253 c-api/typeobj.rst:1284 +#: c-api/typeobj.rst:1350 c-api/typeobj.rst:1390 c-api/typeobj.rst:1442 +#: c-api/typeobj.rst:1559 c-api/typeobj.rst:1768 c-api/typeobj.rst:1829 +#: c-api/typeobj.rst:1865 c-api/typeobj.rst:1894 c-api/typeobj.rst:1956 +#: c-api/typeobj.rst:2000 c-api/typeobj.rst:2073 c-api/typeobj.rst:2130 +#: c-api/typeobj.rst:2191 c-api/typeobj.rst:2232 c-api/typeobj.rst:2259 +#: c-api/typeobj.rst:2290 c-api/typeobj.rst:2490 msgid "**Inheritance:**" msgstr "" -#: c-api/typeobj.rst:545 c-api/typeobj.rst:589 +#: c-api/typeobj.rst:546 c-api/typeobj.rst:590 msgid "This field is not inherited by subtypes." msgstr "" -#: c-api/typeobj.rst:510 +#: c-api/typeobj.rst:511 msgid "" "This is the type's type, in other words its metatype. It is initialized by " "the argument to the ``PyObject_HEAD_INIT`` macro, and its value should " @@ -1275,11 +1283,11 @@ msgid "" "doing anything else. This is typically done like this::" msgstr "" -#: c-api/typeobj.rst:519 +#: c-api/typeobj.rst:520 msgid "Foo_Type.ob_type = &PyType_Type;" msgstr "" -#: c-api/typeobj.rst:521 +#: c-api/typeobj.rst:522 msgid "" "This should be done before any instances of the type are created. :c:func:" "`PyType_Ready` checks if :c:member:`~PyObject.ob_type` is ``NULL``, and if " @@ -1287,33 +1295,33 @@ msgid "" "class. :c:func:`PyType_Ready` will not change this field if it is non-zero." msgstr "" -#: c-api/typeobj.rst:748 c-api/typeobj.rst:961 c-api/typeobj.rst:1687 -#: c-api/typeobj.rst:1840 c-api/typeobj.rst:1931 c-api/typeobj.rst:2175 +#: c-api/typeobj.rst:810 c-api/typeobj.rst:1027 c-api/typeobj.rst:1831 +#: c-api/typeobj.rst:1984 c-api/typeobj.rst:2075 c-api/typeobj.rst:2434 msgid "This field is inherited by subtypes." msgstr "" -#: c-api/typeobj.rst:532 +#: c-api/typeobj.rst:533 msgid "PyVarObject Slots" msgstr "" -#: c-api/typeobj.rst:536 +#: c-api/typeobj.rst:537 msgid "" "For :ref:`statically allocated type objects `, this should be " "initialized to zero. For :ref:`dynamically allocated type objects `, this field has a special internal meaning." msgstr "" -#: c-api/typeobj.rst:540 +#: c-api/typeobj.rst:541 msgid "" "This field should be accessed using the :c:func:`Py_SIZE()` and :c:func:" "`Py_SET_SIZE()` macros." msgstr "" -#: c-api/typeobj.rst:549 +#: c-api/typeobj.rst:550 msgid "PyTypeObject Slots" msgstr "" -#: c-api/typeobj.rst:551 +#: c-api/typeobj.rst:552 msgid "" "Each slot has a section describing inheritance. If :c:func:`PyType_Ready` " "may set a value when the field is set to ``NULL`` then there will also be a " @@ -1321,7 +1329,7 @@ msgid "" "`PyBaseObject_Type` and :c:data:`PyType_Type` effectively act as defaults.)" msgstr "" -#: c-api/typeobj.rst:558 +#: c-api/typeobj.rst:559 msgid "" "Pointer to a NUL-terminated string containing the name of the type. For " "types that are accessible as module globals, the string should be the full " @@ -1333,14 +1341,14 @@ msgid "" "tp_name` initializer ``\"P.Q.M.T\"``." msgstr "" -#: c-api/typeobj.rst:566 +#: c-api/typeobj.rst:567 msgid "" "For :ref:`dynamically allocated type objects `, this should just " "be the type name, and the module name explicitly stored in the type dict as " "the value for key ``'__module__'``." msgstr "" -#: c-api/typeobj.rst:571 +#: c-api/typeobj.rst:572 msgid "" "For :ref:`statically allocated type objects `, the *tp_name* " "field should contain a dot. Everything before the last dot is made " @@ -1348,7 +1356,7 @@ msgid "" "the last dot is made accessible as the :attr:`~type.__name__` attribute." msgstr "" -#: c-api/typeobj.rst:577 +#: c-api/typeobj.rst:578 msgid "" "If no dot is present, the entire :c:member:`~PyTypeObject.tp_name` field is " "made accessible as the :attr:`~type.__name__` attribute, and the :attr:" @@ -1358,19 +1366,19 @@ msgid "" "created with pydoc." msgstr "" -#: c-api/typeobj.rst:583 +#: c-api/typeobj.rst:584 msgid "" "This field must not be ``NULL``. It is the only required field in :c:func:" "`PyTypeObject` (other than potentially :c:member:`~PyTypeObject." "tp_itemsize`)." msgstr "" -#: c-api/typeobj.rst:595 +#: c-api/typeobj.rst:596 msgid "" "These fields allow calculating the size in bytes of instances of the type." msgstr "" -#: c-api/typeobj.rst:597 +#: c-api/typeobj.rst:598 msgid "" "There are two kinds of types: types with fixed-length instances have a zero :" "c:member:`!tp_itemsize` field, types with variable-length instances have a " @@ -1380,7 +1388,7 @@ msgid "" "`PyUnstable_Object_GC_NewWithExtraData`.)" msgstr "" -#: c-api/typeobj.rst:604 +#: c-api/typeobj.rst:605 msgid "" "For a type with variable-length instances, the instances must have an :c:" "member:`~PyVarObject.ob_size` field, and the instance size is :c:member:`!" @@ -1388,7 +1396,7 @@ msgid "" "\"length\" of the object." msgstr "" -#: c-api/typeobj.rst:609 +#: c-api/typeobj.rst:610 msgid "" "Functions like :c:func:`PyObject_NewVar` will take the value of N as an " "argument, and store in the instance's :c:member:`~PyVarObject.ob_size` " @@ -1399,13 +1407,13 @@ msgid "" "`PyLong_Export`." msgstr "" -#: c-api/typeobj.rst:619 +#: c-api/typeobj.rst:620 msgid "" "The :c:member:`~PyVarObject.ob_size` field should be accessed using the :c:" "func:`Py_SIZE()` and :c:func:`Py_SET_SIZE()` macros." msgstr "" -#: c-api/typeobj.rst:622 +#: c-api/typeobj.rst:623 msgid "" "Also, the presence of an :c:member:`~PyVarObject.ob_size` field in the " "instance layout doesn't mean that the instance structure is variable-length. " @@ -1415,13 +1423,13 @@ msgid "" "`PyList_Size` instead.)" msgstr "" -#: c-api/typeobj.rst:629 +#: c-api/typeobj.rst:630 msgid "" "The :c:member:`!tp_basicsize` includes size needed for data of the type's :c:" "member:`~PyTypeObject.tp_base`, plus any extra data needed by each instance." msgstr "" -#: c-api/typeobj.rst:633 +#: c-api/typeobj.rst:634 msgid "" "The correct way to set :c:member:`!tp_basicsize` is to use the ``sizeof`` " "operator on the struct used to declare the instance layout. This struct must " @@ -1430,7 +1438,7 @@ msgid "" "tp_basicsize`." msgstr "" -#: c-api/typeobj.rst:639 +#: c-api/typeobj.rst:640 msgid "" "Since every type is a subtype of :py:type:`object`, this struct must " "include :c:type:`PyObject` or :c:type:`PyVarObject` (depending on whether :c:" @@ -1439,23 +1447,23 @@ msgid "" "respectively." msgstr "" -#: c-api/typeobj.rst:645 +#: c-api/typeobj.rst:646 msgid "" "The basic size does not include the GC header size, as that header is not " "part of :c:macro:`PyObject_HEAD`." msgstr "" -#: c-api/typeobj.rst:648 +#: c-api/typeobj.rst:649 msgid "" "For cases where struct used to declare the base type is unknown, see :c:" "member:`PyType_Spec.basicsize` and :c:func:`PyType_FromMetaclass`." msgstr "" -#: c-api/typeobj.rst:651 +#: c-api/typeobj.rst:652 msgid "Notes about alignment:" msgstr "" -#: c-api/typeobj.rst:653 +#: c-api/typeobj.rst:654 msgid "" ":c:member:`!tp_basicsize` must be a multiple of ``_Alignof(PyObject)``. When " "using ``sizeof`` on a ``struct`` that includes :c:macro:`PyObject_HEAD`, as " @@ -1464,7 +1472,7 @@ msgid "" "you." msgstr "" -#: c-api/typeobj.rst:658 +#: c-api/typeobj.rst:659 msgid "" "If the variable items require a particular alignment, :c:member:`!" "tp_basicsize` and :c:member:`!tp_itemsize` must each be a multiple of that " @@ -1472,14 +1480,14 @@ msgid "" "your responsibility that both fields are a multiple of ``_Alignof(double)``." msgstr "" -#: c-api/typeobj.rst:667 +#: c-api/typeobj.rst:668 msgid "" "These fields are inherited separately by subtypes. (That is, if the field is " "set to zero, :c:func:`PyType_Ready` will copy the value from the base type, " "indicating that the instances do not need additional storage.)" msgstr "" -#: c-api/typeobj.rst:672 +#: c-api/typeobj.rst:673 msgid "" "If the base type has a non-zero :c:member:`~PyTypeObject.tp_itemsize`, it is " "generally not safe to set :c:member:`~PyTypeObject.tp_itemsize` to a " @@ -1487,110 +1495,211 @@ msgid "" "implementation of the base type)." msgstr "" -#: c-api/typeobj.rst:679 +#: c-api/typeobj.rst:680 msgid "" -"A pointer to the instance destructor function. This function must be " -"defined unless the type guarantees that its instances will never be " -"deallocated (as is the case for the singletons ``None`` and ``Ellipsis``). " -"The function signature is::" +"A pointer to the instance destructor function. The function signature is::" msgstr "" -#: c-api/typeobj.rst:683 +#: c-api/typeobj.rst:682 msgid "void tp_dealloc(PyObject *self);" msgstr "" -#: c-api/typeobj.rst:685 +#: c-api/typeobj.rst:684 msgid "" -"The destructor function is called by the :c:func:`Py_DECREF` and :c:func:" -"`Py_XDECREF` macros when the new reference count is zero. At this point, " -"the instance is still in existence, but there are no references to it. The " -"destructor function should free all references which the instance owns, free " -"all memory buffers owned by the instance (using the freeing function " -"corresponding to the allocation function used to allocate the buffer), and " -"call the type's :c:member:`~PyTypeObject.tp_free` function. If the type is " -"not subtypable (doesn't have the :c:macro:`Py_TPFLAGS_BASETYPE` flag bit " -"set), it is permissible to call the object deallocator directly instead of " -"via :c:member:`~PyTypeObject.tp_free`. The object deallocator should be the " -"one used to allocate the instance; this is normally :c:func:`PyObject_Free` " -"if the instance was allocated using :c:macro:`PyObject_New` or :c:macro:" -"`PyObject_NewVar`, or :c:func:`PyObject_GC_Del` if the instance was " -"allocated using :c:macro:`PyObject_GC_New` or :c:macro:`PyObject_GC_NewVar`." +"The destructor function should remove all references which the instance owns " +"(e.g., call :c:func:`Py_CLEAR`), free all memory buffers owned by the " +"instance, and call the type's :c:member:`~PyTypeObject.tp_free` function to " +"free the object itself." msgstr "" -#: c-api/typeobj.rst:700 +#: c-api/typeobj.rst:689 msgid "" -"If the type supports garbage collection (has the :c:macro:" -"`Py_TPFLAGS_HAVE_GC` flag bit set), the destructor should call :c:func:" -"`PyObject_GC_UnTrack` before clearing any member fields." +"If you may call functions that may set the error indicator, you must use :c:" +"func:`PyErr_GetRaisedException` and :c:func:`PyErr_SetRaisedException` to " +"ensure you don't clobber a preexisting error indicator (the deallocation " +"could have occurred while processing a different error):" msgstr "" -#: c-api/typeobj.rst:704 +#: c-api/typeobj.rst:694 msgid "" "static void\n" -"foo_dealloc(PyObject *op)\n" +"foo_dealloc(foo_object *self)\n" "{\n" -" foo_object *self = (foo_object *) op;\n" -" PyObject_GC_UnTrack(self);\n" -" Py_CLEAR(self->ref);\n" -" Py_TYPE(self)->tp_free(self);\n" +" PyObject *et, *ev, *etb;\n" +" PyObject *exc = PyErr_GetRaisedException();\n" +" ...\n" +" PyErr_SetRaisedException(exc);\n" "}" msgstr "" +#: c-api/typeobj.rst:705 +msgid "" +"The dealloc handler itself must not raise an exception; if it hits an error " +"case it should call :c:func:`PyErr_FormatUnraisable` to log (and clear) an " +"unraisable exception." +msgstr "" + +#: c-api/typeobj.rst:709 +msgid "No guarantees are made about when an object is destroyed, except:" +msgstr "" + +#: c-api/typeobj.rst:711 +msgid "" +"Python will destroy an object immediately or some time after the final " +"reference to the object is deleted, unless its finalizer (:c:member:" +"`~PyTypeObject.tp_finalize`) subsequently resurrects the object." +msgstr "" + #: c-api/typeobj.rst:715 msgid "" -"Finally, if the type is heap allocated (:c:macro:`Py_TPFLAGS_HEAPTYPE`), the " +"An object will not be destroyed while it is being automatically finalized (:" +"c:member:`~PyTypeObject.tp_finalize`) or automatically cleared (:c:member:" +"`~PyTypeObject.tp_clear`)." +msgstr "" + +#: c-api/typeobj.rst:719 +msgid "" +"CPython currently destroys an object immediately from :c:func:`Py_DECREF` " +"when the new reference count is zero, but this may change in a future " +"version." +msgstr "" + +#: c-api/typeobj.rst:723 +msgid "" +"It is recommended to call :c:func:`PyObject_CallFinalizerFromDealloc` at the " +"beginning of :c:member:`!tp_dealloc` to guarantee that the object is always " +"finalized before destruction." +msgstr "" + +#: c-api/typeobj.rst:727 +msgid "" +"If the type supports garbage collection (the :c:macro:`Py_TPFLAGS_HAVE_GC` " +"flag is set), the destructor should call :c:func:`PyObject_GC_UnTrack` " +"before clearing any member fields." +msgstr "" + +#: c-api/typeobj.rst:731 +msgid "" +"It is permissible to call :c:member:`~PyTypeObject.tp_clear` from :c:member:" +"`!tp_dealloc` to reduce code duplication and to guarantee that the object is " +"always cleared before destruction. Beware that :c:member:`!tp_clear` might " +"have already been called." +msgstr "" + +#: c-api/typeobj.rst:736 +msgid "" +"If the type is heap allocated (:c:macro:`Py_TPFLAGS_HEAPTYPE`), the " "deallocator should release the owned reference to its type object (via :c:" -"func:`Py_DECREF`) after calling the type deallocator. In order to avoid " -"dangling pointers, the recommended way to achieve this is:" +"func:`Py_DECREF`) after calling the type deallocator. See the example code " +"below.::" msgstr "" -#: c-api/typeobj.rst:721 +#: c-api/typeobj.rst:741 msgid "" "static void\n" "foo_dealloc(PyObject *op)\n" "{\n" -" PyTypeObject *tp = Py_TYPE(op);\n" -" // free references and buffers here\n" -" tp->tp_free(op);\n" -" Py_DECREF(tp);\n" +" foo_object *self = (foo_object *) op;\n" +" PyObject_GC_UnTrack(self);\n" +" Py_CLEAR(self->ref);\n" +" Py_TYPE(self)->tp_free(self);\n" "}" msgstr "" -#: c-api/typeobj.rst:734 +#: c-api/typeobj.rst:750 msgid "" -"In a garbage collected Python, :c:member:`!tp_dealloc` may be called from " -"any Python thread, not just the thread which created the object (if the " -"object becomes part of a refcount cycle, that cycle might be collected by a " -"garbage collection on any thread). This is not a problem for Python API " -"calls, since the thread on which :c:member:`!tp_dealloc` is called with an :" -"term:`attached thread state`. However, if the object being destroyed in " -"turn destroys objects from some other C or C++ library, care should be taken " -"to ensure that destroying those objects on the thread which called :c:member:" -"`!tp_dealloc` will not violate any assumptions of the library." +":c:member:`!tp_dealloc` must leave the exception status unchanged. If it " +"needs to call something that might raise an exception, the exception state " +"must be backed up first and restored later (after logging any exceptions " +"with :c:func:`PyErr_WriteUnraisable`)." msgstr "" -#: c-api/typeobj.rst:753 +#: c-api/typeobj.rst:755 +msgid "Example::" +msgstr "" + +#: c-api/typeobj.rst:757 +msgid "" +"static void\n" +"foo_dealloc(PyObject *self)\n" +"{\n" +" PyObject *exc = PyErr_GetRaisedException();\n" +"\n" +" if (PyObject_CallFinalizerFromDealloc(self) < 0) {\n" +" // self was resurrected.\n" +" goto done;\n" +" }\n" +"\n" +" PyTypeObject *tp = Py_TYPE(self);\n" +"\n" +" if (tp->tp_flags & Py_TPFLAGS_HAVE_GC) {\n" +" PyObject_GC_UnTrack(self);\n" +" }\n" +"\n" +" // Optional, but convenient to avoid code duplication.\n" +" if (tp->tp_clear && tp->tp_clear(self) < 0) {\n" +" PyErr_WriteUnraisable(self);\n" +" }\n" +"\n" +" // Any additional destruction goes here.\n" +"\n" +" tp->tp_free(self);\n" +" self = NULL; // In case PyErr_WriteUnraisable() is called below.\n" +"\n" +" if (tp->tp_flags & Py_TPFLAGS_HEAPTYPE) {\n" +" Py_CLEAR(tp);\n" +" }\n" +"\n" +"done:\n" +" // Optional, if something was called that might have raised an\n" +" // exception.\n" +" if (PyErr_Occurred()) {\n" +" PyErr_WriteUnraisable(self);\n" +" }\n" +" PyErr_SetRaisedException(exc);\n" +"}" +msgstr "" + +#: c-api/typeobj.rst:796 +msgid "" +":c:member:`!tp_dealloc` may be called from any Python thread, not just the " +"thread which created the object (if the object becomes part of a refcount " +"cycle, that cycle might be collected by a garbage collection on any " +"thread). This is not a problem for Python API calls, since the thread on " +"which :c:member:`!tp_dealloc` is called with an :term:`attached thread " +"state`. However, if the object being destroyed in turn destroys objects " +"from some other C library, care should be taken to ensure that destroying " +"those objects on the thread which called :c:member:`!tp_dealloc` will not " +"violate any assumptions of the library." +msgstr "" + +#: c-api/typeobj.rst:1714 c-api/typeobj.rst:2447 +msgid "" +":ref:`life-cycle` for details about how this slot relates to other slots." +msgstr "" + +#: c-api/typeobj.rst:819 msgid "" "An optional offset to a per-instance function that implements calling the " "object using the :ref:`vectorcall protocol `, a more efficient " "alternative of the simpler :c:member:`~PyTypeObject.tp_call`." msgstr "" -#: c-api/typeobj.rst:758 +#: c-api/typeobj.rst:824 msgid "" "This field is only used if the flag :c:macro:`Py_TPFLAGS_HAVE_VECTORCALL` is " "set. If so, this must be a positive integer containing the offset in the " "instance of a :c:type:`vectorcallfunc` pointer." msgstr "" -#: c-api/typeobj.rst:762 +#: c-api/typeobj.rst:828 msgid "" "The *vectorcallfunc* pointer may be ``NULL``, in which case the instance " "behaves as if :c:macro:`Py_TPFLAGS_HAVE_VECTORCALL` was not set: calling the " "instance falls back to :c:member:`~PyTypeObject.tp_call`." msgstr "" -#: c-api/typeobj.rst:766 +#: c-api/typeobj.rst:832 msgid "" "Any class that sets ``Py_TPFLAGS_HAVE_VECTORCALL`` must also set :c:member:" "`~PyTypeObject.tp_call` and make sure its behaviour is consistent with the " @@ -1598,13 +1707,13 @@ msgid "" "`PyVectorcall_Call`." msgstr "" -#: c-api/typeobj.rst:773 +#: c-api/typeobj.rst:839 msgid "" "Before version 3.8, this slot was named ``tp_print``. In Python 2.x, it was " "used for printing to a file. In Python 3.0 to 3.7, it was unused." msgstr "" -#: c-api/typeobj.rst:779 +#: c-api/typeobj.rst:845 msgid "" "Before version 3.12, it was not recommended for :ref:`mutable heap types " "` to implement the vectorcall protocol. When a user sets :attr:" @@ -1614,7 +1723,7 @@ msgid "" "`Py_TPFLAGS_HAVE_VECTORCALL` flag." msgstr "" -#: c-api/typeobj.rst:789 +#: c-api/typeobj.rst:855 msgid "" "This field is always inherited. However, the :c:macro:" "`Py_TPFLAGS_HAVE_VECTORCALL` flag is not always inherited. If it's not set, " @@ -1622,11 +1731,11 @@ msgid "" "func:`PyVectorcall_Call` is explicitly called." msgstr "" -#: c-api/typeobj.rst:798 +#: c-api/typeobj.rst:864 msgid "An optional pointer to the get-attribute-string function." msgstr "" -#: c-api/typeobj.rst:800 +#: c-api/typeobj.rst:866 msgid "" "This field is deprecated. When it is defined, it should point to a function " "that acts the same as the :c:member:`~PyTypeObject.tp_getattro` function, " @@ -1634,13 +1743,13 @@ msgid "" "attribute name." msgstr "" -#: c-api/typeobj.rst:1002 +#: c-api/typeobj.rst:1068 msgid "" "Group: :c:member:`~PyTypeObject.tp_getattr`, :c:member:`~PyTypeObject." "tp_getattro`" msgstr "" -#: c-api/typeobj.rst:808 +#: c-api/typeobj.rst:874 msgid "" "This field is inherited by subtypes together with :c:member:`~PyTypeObject." "tp_getattro`: a subtype inherits both :c:member:`~PyTypeObject.tp_getattr` " @@ -1649,12 +1758,12 @@ msgid "" "tp_getattro` are both ``NULL``." msgstr "" -#: c-api/typeobj.rst:1015 +#: c-api/typeobj.rst:1081 msgid "" "An optional pointer to the function for setting and deleting attributes." msgstr "" -#: c-api/typeobj.rst:817 +#: c-api/typeobj.rst:883 msgid "" "This field is deprecated. When it is defined, it should point to a function " "that acts the same as the :c:member:`~PyTypeObject.tp_setattro` function, " @@ -1662,13 +1771,13 @@ msgid "" "attribute name." msgstr "" -#: c-api/typeobj.rst:1028 +#: c-api/typeobj.rst:1094 msgid "" "Group: :c:member:`~PyTypeObject.tp_setattr`, :c:member:`~PyTypeObject." "tp_setattro`" msgstr "" -#: c-api/typeobj.rst:825 +#: c-api/typeobj.rst:891 msgid "" "This field is inherited by subtypes together with :c:member:`~PyTypeObject." "tp_setattro`: a subtype inherits both :c:member:`~PyTypeObject.tp_setattr` " @@ -1677,38 +1786,38 @@ msgid "" "tp_setattro` are both ``NULL``." msgstr "" -#: c-api/typeobj.rst:832 +#: c-api/typeobj.rst:898 msgid "" "Pointer to an additional structure that contains fields relevant only to " "objects which implement :term:`awaitable` and :term:`asynchronous iterator` " "protocols at the C-level. See :ref:`async-structs` for details." msgstr "" -#: c-api/typeobj.rst:836 +#: c-api/typeobj.rst:902 msgid "Formerly known as ``tp_compare`` and ``tp_reserved``." msgstr "" -#: c-api/typeobj.rst:841 +#: c-api/typeobj.rst:907 msgid "" "The :c:member:`~PyTypeObject.tp_as_async` field is not inherited, but the " "contained fields are inherited individually." msgstr "" -#: c-api/typeobj.rst:849 +#: c-api/typeobj.rst:915 msgid "" "An optional pointer to a function that implements the built-in function :" "func:`repr`." msgstr "" -#: c-api/typeobj.rst:852 +#: c-api/typeobj.rst:918 msgid "The signature is the same as for :c:func:`PyObject_Repr`::" msgstr "" -#: c-api/typeobj.rst:854 +#: c-api/typeobj.rst:920 msgid "PyObject *tp_repr(PyObject *self);" msgstr "" -#: c-api/typeobj.rst:856 +#: c-api/typeobj.rst:922 msgid "" "The function must return a string or a Unicode object. Ideally, this " "function should return a string that, when passed to :func:`eval`, given a " @@ -1717,80 +1826,80 @@ msgid "" "``'>'`` from which both the type and the value of the object can be deduced." msgstr "" -#: c-api/typeobj.rst:946 c-api/typeobj.rst:1008 c-api/typeobj.rst:1076 -#: c-api/typeobj.rst:1667 c-api/typeobj.rst:1817 c-api/typeobj.rst:1933 -#: c-api/typeobj.rst:1993 c-api/typeobj.rst:2045 +#: c-api/typeobj.rst:1012 c-api/typeobj.rst:1074 c-api/typeobj.rst:1142 +#: c-api/typeobj.rst:1811 c-api/typeobj.rst:1961 c-api/typeobj.rst:2077 +#: c-api/typeobj.rst:2136 c-api/typeobj.rst:2195 msgid "**Default:**" msgstr "" -#: c-api/typeobj.rst:869 +#: c-api/typeobj.rst:935 msgid "" "When this field is not set, a string of the form ``<%s object at %p>`` is " "returned, where ``%s`` is replaced by the type name, and ``%p`` by the " "object's memory address." msgstr "" -#: c-api/typeobj.rst:876 +#: c-api/typeobj.rst:942 msgid "" "Pointer to an additional structure that contains fields relevant only to " "objects which implement the number protocol. These fields are documented " "in :ref:`number-structs`." msgstr "" -#: c-api/typeobj.rst:882 +#: c-api/typeobj.rst:948 msgid "" "The :c:member:`~PyTypeObject.tp_as_number` field is not inherited, but the " "contained fields are inherited individually." msgstr "" -#: c-api/typeobj.rst:888 +#: c-api/typeobj.rst:954 msgid "" "Pointer to an additional structure that contains fields relevant only to " "objects which implement the sequence protocol. These fields are documented " "in :ref:`sequence-structs`." msgstr "" -#: c-api/typeobj.rst:894 +#: c-api/typeobj.rst:960 msgid "" "The :c:member:`~PyTypeObject.tp_as_sequence` field is not inherited, but the " "contained fields are inherited individually." msgstr "" -#: c-api/typeobj.rst:900 +#: c-api/typeobj.rst:966 msgid "" "Pointer to an additional structure that contains fields relevant only to " "objects which implement the mapping protocol. These fields are documented " "in :ref:`mapping-structs`." msgstr "" -#: c-api/typeobj.rst:906 +#: c-api/typeobj.rst:972 msgid "" "The :c:member:`~PyTypeObject.tp_as_mapping` field is not inherited, but the " "contained fields are inherited individually." msgstr "" -#: c-api/typeobj.rst:914 +#: c-api/typeobj.rst:980 msgid "" "An optional pointer to a function that implements the built-in function :" "func:`hash`." msgstr "" -#: c-api/typeobj.rst:917 +#: c-api/typeobj.rst:983 msgid "The signature is the same as for :c:func:`PyObject_Hash`::" msgstr "" -#: c-api/typeobj.rst:919 +#: c-api/typeobj.rst:985 msgid "Py_hash_t tp_hash(PyObject *);" msgstr "" -#: c-api/typeobj.rst:921 +#: c-api/typeobj.rst:987 msgid "" "The value ``-1`` should not be returned as a normal return value; when an " "error occurs during the computation of the hash value, the function should " "set an exception and return ``-1``." msgstr "" -#: c-api/typeobj.rst:925 +#: c-api/typeobj.rst:991 msgid "" "When this field is not set (*and* :c:member:`~PyTypeObject.tp_richcompare` " "is not set), an attempt to take the hash of the object raises :exc:" @@ -1798,7 +1907,7 @@ msgid "" "`PyObject_HashNotImplemented`." msgstr "" -#: c-api/typeobj.rst:929 +#: c-api/typeobj.rst:995 msgid "" "This field can be set explicitly to :c:func:`PyObject_HashNotImplemented` to " "block inheritance of the hash method from a parent type. This is interpreted " @@ -1809,13 +1918,13 @@ msgid "" "`PyObject_HashNotImplemented`." msgstr "" -#: c-api/typeobj.rst:1626 +#: c-api/typeobj.rst:1770 msgid "" "Group: :c:member:`~PyTypeObject.tp_hash`, :c:member:`~PyTypeObject." "tp_richcompare`" msgstr "" -#: c-api/typeobj.rst:941 +#: c-api/typeobj.rst:1007 msgid "" "This field is inherited by subtypes together with :c:member:`~PyTypeObject." "tp_richcompare`: a subtype inherits both of :c:member:`~PyTypeObject." @@ -1824,22 +1933,22 @@ msgid "" "are both ``NULL``." msgstr "" -#: c-api/typeobj.rst:948 +#: c-api/typeobj.rst:1014 msgid ":c:data:`PyBaseObject_Type` uses :c:func:`PyObject_GenericHash`." msgstr "" -#: c-api/typeobj.rst:953 +#: c-api/typeobj.rst:1019 msgid "" "An optional pointer to a function that implements calling the object. This " "should be ``NULL`` if the object is not callable. The signature is the same " "as for :c:func:`PyObject_Call`::" msgstr "" -#: c-api/typeobj.rst:957 +#: c-api/typeobj.rst:1023 msgid "PyObject *tp_call(PyObject *self, PyObject *args, PyObject *kwargs);" msgstr "" -#: c-api/typeobj.rst:966 +#: c-api/typeobj.rst:1032 msgid "" "An optional pointer to a function that implements the built-in operation :" "func:`str`. (Note that :class:`str` is a type now, and :func:`str` calls " @@ -1848,15 +1957,15 @@ msgid "" "this handler.)" msgstr "" -#: c-api/typeobj.rst:971 +#: c-api/typeobj.rst:1037 msgid "The signature is the same as for :c:func:`PyObject_Str`::" msgstr "" -#: c-api/typeobj.rst:973 +#: c-api/typeobj.rst:1039 msgid "PyObject *tp_str(PyObject *self);" msgstr "" -#: c-api/typeobj.rst:975 +#: c-api/typeobj.rst:1041 msgid "" "The function must return a string or a Unicode object. It should be a " "\"friendly\" string representation of the object, as this is the " @@ -1864,32 +1973,32 @@ msgid "" "function." msgstr "" -#: c-api/typeobj.rst:985 +#: c-api/typeobj.rst:1051 msgid "" "When this field is not set, :c:func:`PyObject_Repr` is called to return a " "string representation." msgstr "" -#: c-api/typeobj.rst:991 +#: c-api/typeobj.rst:1057 msgid "An optional pointer to the get-attribute function." msgstr "" -#: c-api/typeobj.rst:993 +#: c-api/typeobj.rst:1059 msgid "The signature is the same as for :c:func:`PyObject_GetAttr`::" msgstr "" -#: c-api/typeobj.rst:995 +#: c-api/typeobj.rst:1061 msgid "PyObject *tp_getattro(PyObject *self, PyObject *attr);" msgstr "" -#: c-api/typeobj.rst:997 +#: c-api/typeobj.rst:1063 msgid "" "It is usually convenient to set this field to :c:func:" "`PyObject_GenericGetAttr`, which implements the normal way of looking for " "object attributes." msgstr "" -#: c-api/typeobj.rst:1004 +#: c-api/typeobj.rst:1070 msgid "" "This field is inherited by subtypes together with :c:member:`~PyTypeObject." "tp_getattr`: a subtype inherits both :c:member:`~PyTypeObject.tp_getattr` " @@ -1898,19 +2007,19 @@ msgid "" "tp_getattro` are both ``NULL``." msgstr "" -#: c-api/typeobj.rst:1010 +#: c-api/typeobj.rst:1076 msgid ":c:data:`PyBaseObject_Type` uses :c:func:`PyObject_GenericGetAttr`." msgstr "" -#: c-api/typeobj.rst:1017 +#: c-api/typeobj.rst:1083 msgid "The signature is the same as for :c:func:`PyObject_SetAttr`::" msgstr "" -#: c-api/typeobj.rst:1019 +#: c-api/typeobj.rst:1085 msgid "int tp_setattro(PyObject *self, PyObject *attr, PyObject *value);" msgstr "" -#: c-api/typeobj.rst:1021 +#: c-api/typeobj.rst:1087 msgid "" "In addition, setting *value* to ``NULL`` to delete an attribute must be " "supported. It is usually convenient to set this field to :c:func:" @@ -1918,7 +2027,7 @@ msgid "" "attributes." msgstr "" -#: c-api/typeobj.rst:1030 +#: c-api/typeobj.rst:1096 msgid "" "This field is inherited by subtypes together with :c:member:`~PyTypeObject." "tp_setattr`: a subtype inherits both :c:member:`~PyTypeObject.tp_setattr` " @@ -1927,24 +2036,24 @@ msgid "" "tp_setattro` are both ``NULL``." msgstr "" -#: c-api/typeobj.rst:1036 +#: c-api/typeobj.rst:1102 msgid ":c:data:`PyBaseObject_Type` uses :c:func:`PyObject_GenericSetAttr`." msgstr "" -#: c-api/typeobj.rst:1041 +#: c-api/typeobj.rst:1107 msgid "" "Pointer to an additional structure that contains fields relevant only to " "objects which implement the buffer interface. These fields are documented " "in :ref:`buffer-structs`." msgstr "" -#: c-api/typeobj.rst:1047 +#: c-api/typeobj.rst:1113 msgid "" "The :c:member:`~PyTypeObject.tp_as_buffer` field is not inherited, but the " "contained fields are inherited individually." msgstr "" -#: c-api/typeobj.rst:1053 +#: c-api/typeobj.rst:1119 msgid "" "This field is a bit mask of various flags. Some flags indicate variant " "semantics for certain situations; others are used to indicate that certain " @@ -1956,7 +2065,7 @@ msgid "" "accessed and must be considered to have a zero or ``NULL`` value instead." msgstr "" -#: c-api/typeobj.rst:1063 +#: c-api/typeobj.rst:1129 msgid "" "Inheritance of this field is complicated. Most flag bits are inherited " "individually, i.e. if the base type has a flag bit set, the subtype inherits " @@ -1971,17 +2080,17 @@ msgid "" "the subtype exist and have ``NULL`` values." msgstr "" -#: c-api/typeobj.rst:1078 +#: c-api/typeobj.rst:1144 msgid "" ":c:data:`PyBaseObject_Type` uses ``Py_TPFLAGS_DEFAULT | " "Py_TPFLAGS_BASETYPE``." msgstr "" -#: c-api/typeobj.rst:1081 +#: c-api/typeobj.rst:1147 msgid "**Bit Masks:**" msgstr "" -#: c-api/typeobj.rst:1085 +#: c-api/typeobj.rst:1151 msgid "" "The following bit masks are currently defined; these can be ORed together " "using the ``|`` operator to form the value of the :c:member:`~PyTypeObject." @@ -1990,7 +2099,7 @@ msgid "" "zero." msgstr "" -#: c-api/typeobj.rst:1092 +#: c-api/typeobj.rst:1158 msgid "" "This bit is set when the type object itself is allocated on the heap, for " "example, types created dynamically using :c:func:`PyType_FromSpec`. In this " @@ -2003,46 +2112,46 @@ msgid "" "reference cycle with their own module object." msgstr "" -#: c-api/typeobj.rst:1114 c-api/typeobj.rst:1134 c-api/typeobj.rst:1166 +#: c-api/typeobj.rst:1180 c-api/typeobj.rst:1200 c-api/typeobj.rst:1232 msgid "???" msgstr "" -#: c-api/typeobj.rst:1108 +#: c-api/typeobj.rst:1174 msgid "" "This bit is set when the type can be used as the base type of another type. " "If this bit is clear, the type cannot be subtyped (similar to a \"final\" " "class in Java)." msgstr "" -#: c-api/typeobj.rst:1119 +#: c-api/typeobj.rst:1185 msgid "" "This bit is set when the type object has been fully initialized by :c:func:" "`PyType_Ready`." msgstr "" -#: c-api/typeobj.rst:1129 +#: c-api/typeobj.rst:1195 msgid "" "This bit is set while :c:func:`PyType_Ready` is in the process of " "initializing the type object." msgstr "" -#: c-api/typeobj.rst:1139 +#: c-api/typeobj.rst:1205 msgid "" "This bit is set when the object supports garbage collection. If this bit is " -"set, instances must be created using :c:macro:`PyObject_GC_New` and " -"destroyed using :c:func:`PyObject_GC_Del`. More information in section :ref:" -"`supporting-cycle-detection`. This bit also implies that the GC-related " -"fields :c:member:`~PyTypeObject.tp_traverse` and :c:member:`~PyTypeObject." -"tp_clear` are present in the type object." +"set, memory for new instances (see :c:member:`~PyTypeObject.tp_alloc`) must " +"be allocated using :c:macro:`PyObject_GC_New` or :c:func:" +"`PyType_GenericAlloc` and deallocated (see :c:member:`~PyTypeObject." +"tp_free`) using :c:func:`PyObject_GC_Del`. More information in section :ref:" +"`supporting-cycle-detection`." msgstr "" -#: c-api/typeobj.rst:1490 c-api/typeobj.rst:1565 +#: c-api/typeobj.rst:1561 c-api/typeobj.rst:1705 msgid "" "Group: :c:macro:`Py_TPFLAGS_HAVE_GC`, :c:member:`~PyTypeObject." "tp_traverse`, :c:member:`~PyTypeObject.tp_clear`" msgstr "" -#: c-api/typeobj.rst:1150 +#: c-api/typeobj.rst:1216 msgid "" "The :c:macro:`Py_TPFLAGS_HAVE_GC` flag bit is inherited together with the :c:" "member:`~PyTypeObject.tp_traverse` and :c:member:`~PyTypeObject.tp_clear` " @@ -2052,105 +2161,106 @@ msgid "" "values." msgstr "" -#: c-api/typeobj.rst:1160 +#: c-api/typeobj.rst:1226 msgid "" "This is a bitmask of all the bits that pertain to the existence of certain " "fields in the type object and its extension structures. Currently, it " "includes the following bits: :c:macro:`Py_TPFLAGS_HAVE_STACKLESS_EXTENSION`." msgstr "" -#: c-api/typeobj.rst:1171 +#: c-api/typeobj.rst:1237 msgid "This bit indicates that objects behave like unbound methods." msgstr "" -#: c-api/typeobj.rst:1173 +#: c-api/typeobj.rst:1239 msgid "If this flag is set for ``type(meth)``, then:" msgstr "" -#: c-api/typeobj.rst:1175 +#: c-api/typeobj.rst:1241 msgid "" "``meth.__get__(obj, cls)(*args, **kwds)`` (with ``obj`` not None) must be " "equivalent to ``meth(obj, *args, **kwds)``." msgstr "" -#: c-api/typeobj.rst:1178 +#: c-api/typeobj.rst:1244 msgid "" "``meth.__get__(None, cls)(*args, **kwds)`` must be equivalent to " "``meth(*args, **kwds)``." msgstr "" -#: c-api/typeobj.rst:1181 +#: c-api/typeobj.rst:1247 msgid "" "This flag enables an optimization for typical method calls like ``obj." "meth()``: it avoids creating a temporary \"bound method\" object for ``obj." "meth``." msgstr "" -#: c-api/typeobj.rst:1189 +#: c-api/typeobj.rst:1255 msgid "" "This flag is never inherited by types without the :c:macro:" "`Py_TPFLAGS_IMMUTABLETYPE` flag set. For extension types, it is inherited " "whenever :c:member:`~PyTypeObject.tp_descr_get` is inherited." msgstr "" -#: c-api/typeobj.rst:1195 +#: c-api/typeobj.rst:1261 msgid "" -"This bit indicates that instances of the class have a `~object.__dict__` " -"attribute, and that the space for the dictionary is managed by the VM." +"This bit indicates that instances of the class have a :attr:`~object." +"__dict__` attribute, and that the space for the dictionary is managed by the " +"VM." msgstr "" -#: c-api/typeobj.rst:1198 +#: c-api/typeobj.rst:1264 msgid "If this flag is set, :c:macro:`Py_TPFLAGS_HAVE_GC` should also be set." msgstr "" -#: c-api/typeobj.rst:1200 +#: c-api/typeobj.rst:1266 msgid "" "The type traverse function must call :c:func:`PyObject_VisitManagedDict` and " "its clear function must call :c:func:`PyObject_ClearManagedDict`." msgstr "" -#: c-api/typeobj.rst:1207 +#: c-api/typeobj.rst:1273 msgid "" "This flag is inherited unless the :c:member:`~PyTypeObject.tp_dictoffset` " "field is set in a superclass." msgstr "" -#: c-api/typeobj.rst:1213 +#: c-api/typeobj.rst:1279 msgid "" "This bit indicates that instances of the class should be weakly " "referenceable." msgstr "" -#: c-api/typeobj.rst:1220 +#: c-api/typeobj.rst:1286 msgid "" "This flag is inherited unless the :c:member:`~PyTypeObject." "tp_weaklistoffset` field is set in a superclass." msgstr "" -#: c-api/typeobj.rst:1226 +#: c-api/typeobj.rst:1292 msgid "" "Only usable with variable-size types, i.e. ones with non-zero :c:member:" "`~PyTypeObject.tp_itemsize`." msgstr "" -#: c-api/typeobj.rst:1229 +#: c-api/typeobj.rst:1295 msgid "" "Indicates that the variable-sized portion of an instance of this type is at " "the end of the instance's memory area, at an offset of ``Py_TYPE(obj)-" ">tp_basicsize`` (which may be different in each subclass)." msgstr "" -#: c-api/typeobj.rst:1234 +#: c-api/typeobj.rst:1300 msgid "" "When setting this flag, be sure that all superclasses either use this memory " "layout, or are not variable-sized. Python does not check this." msgstr "" -#: c-api/typeobj.rst:1242 +#: c-api/typeobj.rst:1308 msgid "This flag is inherited." msgstr "" -#: c-api/typeobj.rst:1256 +#: c-api/typeobj.rst:1322 msgid "" "These flags are used by functions such as :c:func:`PyLong_Check` to quickly " "determine if a type is a subclass of a built-in type; such specific checks " @@ -2160,90 +2270,90 @@ msgid "" "behave differently depending on what kind of check is used." msgstr "" -#: c-api/typeobj.rst:1267 +#: c-api/typeobj.rst:1333 msgid "" "This bit is set when the :c:member:`~PyTypeObject.tp_finalize` slot is " "present in the type structure." msgstr "" -#: c-api/typeobj.rst:1272 +#: c-api/typeobj.rst:1338 msgid "" "This flag isn't necessary anymore, as the interpreter assumes the :c:member:" "`~PyTypeObject.tp_finalize` slot is always present in the type structure." msgstr "" -#: c-api/typeobj.rst:1280 +#: c-api/typeobj.rst:1346 msgid "" "This bit is set when the class implements the :ref:`vectorcall protocol " "`. See :c:member:`~PyTypeObject.tp_vectorcall_offset` for " "details." msgstr "" -#: c-api/typeobj.rst:1286 +#: c-api/typeobj.rst:1352 msgid "" "This bit is inherited if :c:member:`~PyTypeObject.tp_call` is also inherited." msgstr "" -#: c-api/typeobj.rst:1293 +#: c-api/typeobj.rst:1359 msgid "" "This flag is now removed from a class when the class's :py:meth:`~object." "__call__` method is reassigned." msgstr "" -#: c-api/typeobj.rst:1296 +#: c-api/typeobj.rst:1362 msgid "This flag can now be inherited by mutable classes." msgstr "" -#: c-api/typeobj.rst:1300 +#: c-api/typeobj.rst:1366 msgid "" "This bit is set for type objects that are immutable: type attributes cannot " "be set nor deleted." msgstr "" -#: c-api/typeobj.rst:1302 +#: c-api/typeobj.rst:1368 msgid "" ":c:func:`PyType_Ready` automatically applies this flag to :ref:`static types " "`." msgstr "" -#: c-api/typeobj.rst:1307 +#: c-api/typeobj.rst:1373 msgid "This flag is not inherited." msgstr "" -#: c-api/typeobj.rst:1313 +#: c-api/typeobj.rst:1379 msgid "" "Disallow creating instances of the type: set :c:member:`~PyTypeObject." "tp_new` to NULL and don't create the ``__new__`` key in the type dictionary." msgstr "" -#: c-api/typeobj.rst:1317 +#: c-api/typeobj.rst:1383 msgid "" "The flag must be set before creating the type, not after. For example, it " "must be set before :c:func:`PyType_Ready` is called on the type." msgstr "" -#: c-api/typeobj.rst:1320 +#: c-api/typeobj.rst:1386 msgid "" "The flag is set automatically on :ref:`static types ` if :c:" "member:`~PyTypeObject.tp_base` is NULL or ``&PyBaseObject_Type`` and :c:" "member:`~PyTypeObject.tp_new` is NULL." msgstr "" -#: c-api/typeobj.rst:1326 +#: c-api/typeobj.rst:1392 msgid "" "This flag is not inherited. However, subclasses will not be instantiable " "unless they provide a non-NULL :c:member:`~PyTypeObject.tp_new` (which is " "only possible via the C API)." msgstr "" -#: c-api/typeobj.rst:1333 +#: c-api/typeobj.rst:1399 msgid "" "To disallow instantiating a class directly but allow instantiating its " "subclasses (e.g. for an :term:`abstract base class`), do not use this flag. " "Instead, make :c:member:`~PyTypeObject.tp_new` only succeed for subclasses." msgstr "" -#: c-api/typeobj.rst:1344 +#: c-api/typeobj.rst:1410 msgid "" "This bit indicates that instances of the class may match mapping patterns " "when used as the subject of a :keyword:`match` block. It is automatically " @@ -2251,23 +2361,23 @@ msgid "" "unset when registering :class:`collections.abc.Sequence`." msgstr "" -#: c-api/typeobj.rst:1373 +#: c-api/typeobj.rst:1439 msgid "" ":c:macro:`Py_TPFLAGS_MAPPING` and :c:macro:`Py_TPFLAGS_SEQUENCE` are " "mutually exclusive; it is an error to enable both flags simultaneously." msgstr "" -#: c-api/typeobj.rst:1356 +#: c-api/typeobj.rst:1422 msgid "" "This flag is inherited by types that do not already set :c:macro:" "`Py_TPFLAGS_SEQUENCE`." msgstr "" -#: c-api/typeobj.rst:1381 +#: c-api/typeobj.rst:1447 msgid ":pep:`634` -- Structural Pattern Matching: Specification" msgstr "" -#: c-api/typeobj.rst:1366 +#: c-api/typeobj.rst:1432 msgid "" "This bit indicates that instances of the class may match sequence patterns " "when used as the subject of a :keyword:`match` block. It is automatically " @@ -2275,53 +2385,53 @@ msgid "" "unset when registering :class:`collections.abc.Mapping`." msgstr "" -#: c-api/typeobj.rst:1378 +#: c-api/typeobj.rst:1444 msgid "" "This flag is inherited by types that do not already set :c:macro:" "`Py_TPFLAGS_MAPPING`." msgstr "" -#: c-api/typeobj.rst:1388 +#: c-api/typeobj.rst:1454 msgid "" "Internal. Do not set or unset this flag. To indicate that a class has " "changed call :c:func:`PyType_Modified`" msgstr "" -#: c-api/typeobj.rst:1392 +#: c-api/typeobj.rst:1458 msgid "" "This flag is present in header files, but is not be used. It will be removed " "in a future version of CPython" msgstr "" -#: c-api/typeobj.rst:1398 +#: c-api/typeobj.rst:1464 msgid "" "An optional pointer to a NUL-terminated C string giving the docstring for " "this type object. This is exposed as the :attr:`~type.__doc__` attribute on " "the type and instances of the type." msgstr "" -#: c-api/typeobj.rst:1404 +#: c-api/typeobj.rst:1470 msgid "This field is *not* inherited by subtypes." msgstr "" -#: c-api/typeobj.rst:1409 +#: c-api/typeobj.rst:1475 msgid "" "An optional pointer to a traversal function for the garbage collector. This " "is only used if the :c:macro:`Py_TPFLAGS_HAVE_GC` flag bit is set. The " "signature is::" msgstr "" -#: c-api/typeobj.rst:1412 +#: c-api/typeobj.rst:1478 msgid "int tp_traverse(PyObject *self, visitproc visit, void *arg);" msgstr "" -#: c-api/typeobj.rst:1560 +#: c-api/typeobj.rst:1700 msgid "" "More information about Python's garbage collection scheme can be found in " "section :ref:`supporting-cycle-detection`." msgstr "" -#: c-api/typeobj.rst:1417 +#: c-api/typeobj.rst:1483 msgid "" "The :c:member:`~PyTypeObject.tp_traverse` pointer is used by the garbage " "collector to detect reference cycles. A typical implementation of a :c:" @@ -2331,7 +2441,7 @@ msgid "" "`!_thread` extension module::" msgstr "" -#: c-api/typeobj.rst:1423 +#: c-api/typeobj.rst:1489 msgid "" "static int\n" "local_traverse(PyObject *op, visitproc visit, void *arg)\n" @@ -2344,7 +2454,7 @@ msgid "" "}" msgstr "" -#: c-api/typeobj.rst:1433 +#: c-api/typeobj.rst:1499 msgid "" "Note that :c:func:`Py_VISIT` is called only on those members that can " "participate in reference cycles. Although there is also a ``self->key`` " @@ -2352,47 +2462,47 @@ msgid "" "part of a reference cycle." msgstr "" -#: c-api/typeobj.rst:1437 +#: c-api/typeobj.rst:1503 msgid "" "On the other hand, even if you know a member can never be part of a cycle, " "as a debugging aid you may want to visit it anyway just so the :mod:`gc` " "module's :func:`~gc.get_referents` function will include it." msgstr "" -#: c-api/typeobj.rst:1441 +#: c-api/typeobj.rst:1507 msgid "" "Heap types (:c:macro:`Py_TPFLAGS_HEAPTYPE`) must visit their type with::" msgstr "" -#: c-api/typeobj.rst:1443 +#: c-api/typeobj.rst:1509 msgid "Py_VISIT(Py_TYPE(self));" msgstr "" -#: c-api/typeobj.rst:1445 +#: c-api/typeobj.rst:1511 msgid "" "It is only needed since Python 3.9. To support Python 3.8 and older, this " "line must be conditional::" msgstr "" -#: c-api/typeobj.rst:1448 +#: c-api/typeobj.rst:1514 msgid "" "#if PY_VERSION_HEX >= 0x03090000\n" " Py_VISIT(Py_TYPE(self));\n" "#endif" msgstr "" -#: c-api/typeobj.rst:1452 +#: c-api/typeobj.rst:1518 msgid "" "If the :c:macro:`Py_TPFLAGS_MANAGED_DICT` bit is set in the :c:member:" "`~PyTypeObject.tp_flags` field, the traverse function must call :c:func:" "`PyObject_VisitManagedDict` like this::" msgstr "" -#: c-api/typeobj.rst:1456 +#: c-api/typeobj.rst:1522 msgid "PyObject_VisitManagedDict((PyObject*)self, visit, arg);" msgstr "" -#: c-api/typeobj.rst:1459 +#: c-api/typeobj.rst:1525 msgid "" "When implementing :c:member:`~PyTypeObject.tp_traverse`, only the members " "that the instance *owns* (by having :term:`strong references ` hold a reference to " "their type. Their traversal function must therefore either visit :c:func:" @@ -2421,14 +2531,20 @@ msgid "" "superclass). If they do not, the type object may not be garbage-collected." msgstr "" -#: c-api/typeobj.rst:1483 +#: c-api/typeobj.rst:1549 +msgid "" +"The :c:member:`~PyTypeObject.tp_traverse` function can be called from any " +"thread." +msgstr "" + +#: c-api/typeobj.rst:1554 msgid "" "Heap-allocated types are expected to visit ``Py_TYPE(self)`` in " "``tp_traverse``. In earlier versions of Python, due to `bug 40217 `_, doing this may lead to crashes in subclasses." msgstr "" -#: c-api/typeobj.rst:1492 +#: c-api/typeobj.rst:1563 msgid "" "This field is inherited by subtypes together with :c:member:`~PyTypeObject." "tp_clear` and the :c:macro:`Py_TPFLAGS_HAVE_GC` flag bit: the flag bit, :c:" @@ -2436,33 +2552,161 @@ msgid "" "are all inherited from the base type if they are all zero in the subtype." msgstr "" -#: c-api/typeobj.rst:1500 -msgid "" -"An optional pointer to a clear function for the garbage collector. This is " -"only used if the :c:macro:`Py_TPFLAGS_HAVE_GC` flag bit is set. The " -"signature is::" +#: c-api/typeobj.rst:1571 +msgid "An optional pointer to a clear function. The signature is::" msgstr "" -#: c-api/typeobj.rst:1503 +#: c-api/typeobj.rst:1573 msgid "int tp_clear(PyObject *);" msgstr "" -#: c-api/typeobj.rst:1505 +#: c-api/typeobj.rst:1575 +msgid "" +"The purpose of this function is to break reference cycles that are causing " +"a :term:`cyclic isolate` so that the objects can be safely destroyed. A " +"cleared object is a partially destroyed object; the object is not obligated " +"to satisfy design invariants held during normal use." +msgstr "" + +#: c-api/typeobj.rst:1580 +msgid "" +":c:member:`!tp_clear` does not need to delete references to objects that " +"can't participate in reference cycles, such as Python strings or Python " +"integers. However, it may be convenient to clear all references, and write " +"the type's :c:member:`~PyTypeObject.tp_dealloc` function to invoke :c:member:" +"`!tp_clear` to avoid code duplication. (Beware that :c:member:`!tp_clear` " +"might have already been called. Prefer calling idempotent functions like :c:" +"func:`Py_CLEAR`.)" +msgstr "" + +#: c-api/typeobj.rst:1588 +msgid "" +"Any non-trivial cleanup should be performed in :c:member:`~PyTypeObject." +"tp_finalize` instead of :c:member:`!tp_clear`." +msgstr "" + +#: c-api/typeobj.rst:1593 msgid "" -"The :c:member:`~PyTypeObject.tp_clear` member function is used to break " -"reference cycles in cyclic garbage detected by the garbage collector. Taken " -"together, all :c:member:`~PyTypeObject.tp_clear` functions in the system " -"must combine to break all reference cycles. This is subtle, and if in any " -"doubt supply a :c:member:`~PyTypeObject.tp_clear` function. For example, " -"the tuple type does not implement a :c:member:`~PyTypeObject.tp_clear` " -"function, because it's possible to prove that no reference cycle can be " -"composed entirely of tuples. Therefore the :c:member:`~PyTypeObject." -"tp_clear` functions of other types must be sufficient to break any cycle " +"If :c:member:`!tp_clear` fails to break a reference cycle then the objects " +"in the :term:`cyclic isolate` may remain indefinitely uncollectable " +"(\"leak\"). See :data:`gc.garbage`." +msgstr "" + +#: c-api/typeobj.rst:1599 +msgid "" +"Referents (direct and indirect) might have already been cleared; they are " +"not guaranteed to be in a consistent state." +msgstr "" + +#: c-api/typeobj.rst:1604 +msgid "" +"The :c:member:`~PyTypeObject.tp_clear` function can be called from any " +"thread." +msgstr "" + +#: c-api/typeobj.rst:1609 +msgid "" +"An object is not guaranteed to be automatically cleared before its " +"destructor (:c:member:`~PyTypeObject.tp_dealloc`) is called." +msgstr "" + +#: c-api/typeobj.rst:1612 +msgid "" +"This function differs from the destructor (:c:member:`~PyTypeObject." +"tp_dealloc`) in the following ways:" +msgstr "" + +#: c-api/typeobj.rst:1615 +msgid "" +"The purpose of clearing an object is to remove references to other objects " +"that might participate in a reference cycle. The purpose of the destructor, " +"on the other hand, is a superset: it must release *all* resources it owns, " +"including references to objects that cannot participate in a reference cycle " +"(e.g., integers) as well as the object's own memory (by calling :c:member:" +"`~PyTypeObject.tp_free`)." +msgstr "" + +#: c-api/typeobj.rst:1621 +msgid "" +"When :c:member:`!tp_clear` is called, other objects might still hold " +"references to the object being cleared. Because of this, :c:member:`!" +"tp_clear` must not deallocate the object's own memory (:c:member:" +"`~PyTypeObject.tp_free`). The destructor, on the other hand, is only called " +"when no (strong) references exist, and as such, must safely destroy the " +"object itself by deallocating it." +msgstr "" + +#: c-api/typeobj.rst:1627 +msgid "" +":c:member:`!tp_clear` might never be automatically called. An object's " +"destructor, on the other hand, will be automatically called some time after " +"the object becomes unreachable (i.e., either there are no references to the " +"object or the object is a member of a :term:`cyclic isolate`)." +msgstr "" + +#: c-api/typeobj.rst:1632 +msgid "" +"No guarantees are made about when, if, or how often Python automatically " +"clears an object, except:" +msgstr "" + +#: c-api/typeobj.rst:1635 +msgid "" +"Python will not automatically clear an object if it is reachable, i.e., " +"there is a reference to it and it is not a member of a :term:`cyclic " +"isolate`." +msgstr "" + +#: c-api/typeobj.rst:1638 +msgid "" +"Python will not automatically clear an object if it has not been " +"automatically finalized (see :c:member:`~PyTypeObject.tp_finalize`). (If " +"the finalizer resurrected the object, the object may or may not be " +"automatically finalized again before it is cleared.)" +msgstr "" + +#: c-api/typeobj.rst:1642 +msgid "" +"If an object is a member of a :term:`cyclic isolate`, Python will not " +"automatically clear it if any member of the cyclic isolate has not yet been " +"automatically finalized (:c:member:`~PyTypeObject.tp_finalize`)." +msgstr "" + +#: c-api/typeobj.rst:1645 +msgid "" +"Python will not destroy an object until after any automatic calls to its :c:" +"member:`!tp_clear` function have returned. This ensures that the act of " +"breaking a reference cycle does not invalidate the ``self`` pointer while :c:" +"member:`!tp_clear` is still executing." +msgstr "" + +#: c-api/typeobj.rst:1649 +msgid "" +"Python will not automatically call :c:member:`!tp_clear` multiple times " +"concurrently." +msgstr "" + +#: c-api/typeobj.rst:1652 +msgid "" +"CPython currently only automatically clears objects as needed to break " +"reference cycles in a :term:`cyclic isolate`, but future versions might " +"clear objects regularly before their destruction." +msgstr "" + +#: c-api/typeobj.rst:1656 +msgid "" +"Taken together, all :c:member:`~PyTypeObject.tp_clear` functions in the " +"system must combine to break all reference cycles. This is subtle, and if " +"in any doubt supply a :c:member:`~PyTypeObject.tp_clear` function. For " +"example, the tuple type does not implement a :c:member:`~PyTypeObject." +"tp_clear` function, because it's possible to prove that no reference cycle " +"can be composed entirely of tuples. Therefore the :c:member:`~PyTypeObject." +"tp_clear` functions of other types are responsible for breaking any cycle " "containing a tuple. This isn't immediately obvious, and there's rarely a " "good reason to avoid implementing :c:member:`~PyTypeObject.tp_clear`." msgstr "" -#: c-api/typeobj.rst:1515 +#: c-api/typeobj.rst:1667 msgid "" "Implementations of :c:member:`~PyTypeObject.tp_clear` should drop the " "instance's references to those of its members that may be Python objects, " @@ -2470,7 +2714,7 @@ msgid "" "example::" msgstr "" -#: c-api/typeobj.rst:1519 +#: c-api/typeobj.rst:1671 msgid "" "static int\n" "local_clear(PyObject *op)\n" @@ -2484,7 +2728,7 @@ msgid "" "}" msgstr "" -#: c-api/typeobj.rst:1530 +#: c-api/typeobj.rst:1682 msgid "" "The :c:func:`Py_CLEAR` macro should be used, because clearing references is " "delicate: the reference to the contained object must not be released (via :" @@ -2499,36 +2743,18 @@ msgid "" "performs the operations in a safe order." msgstr "" -#: c-api/typeobj.rst:1542 +#: c-api/typeobj.rst:1694 msgid "" "If the :c:macro:`Py_TPFLAGS_MANAGED_DICT` bit is set in the :c:member:" "`~PyTypeObject.tp_flags` field, the traverse function must call :c:func:" "`PyObject_ClearManagedDict` like this::" msgstr "" -#: c-api/typeobj.rst:1546 +#: c-api/typeobj.rst:1698 msgid "PyObject_ClearManagedDict((PyObject*)self);" msgstr "" -#: c-api/typeobj.rst:1548 -msgid "" -"Note that :c:member:`~PyTypeObject.tp_clear` is not *always* called before " -"an instance is deallocated. For example, when reference counting is enough " -"to determine that an object is no longer used, the cyclic garbage collector " -"is not involved and :c:member:`~PyTypeObject.tp_dealloc` is called directly." -msgstr "" - -#: c-api/typeobj.rst:1554 -msgid "" -"Because the goal of :c:member:`~PyTypeObject.tp_clear` functions is to break " -"reference cycles, it's not necessary to clear contained objects like Python " -"strings or Python integers, which can't participate in reference cycles. On " -"the other hand, it may be convenient to clear all contained Python objects, " -"and write the type's :c:member:`~PyTypeObject.tp_dealloc` function to " -"invoke :c:member:`~PyTypeObject.tp_clear`." -msgstr "" - -#: c-api/typeobj.rst:1567 +#: c-api/typeobj.rst:1707 msgid "" "This field is inherited by subtypes together with :c:member:`~PyTypeObject." "tp_traverse` and the :c:macro:`Py_TPFLAGS_HAVE_GC` flag bit: the flag bit, :" @@ -2536,22 +2762,22 @@ msgid "" "are all inherited from the base type if they are all zero in the subtype." msgstr "" -#: c-api/typeobj.rst:1575 +#: c-api/typeobj.rst:1719 msgid "" "An optional pointer to the rich comparison function, whose signature is::" msgstr "" -#: c-api/typeobj.rst:1577 +#: c-api/typeobj.rst:1721 msgid "PyObject *tp_richcompare(PyObject *self, PyObject *other, int op);" msgstr "" -#: c-api/typeobj.rst:1579 +#: c-api/typeobj.rst:1723 msgid "" "The first parameter is guaranteed to be an instance of the type that is " "defined by :c:type:`PyTypeObject`." msgstr "" -#: c-api/typeobj.rst:1582 +#: c-api/typeobj.rst:1726 msgid "" "The function should return the result of the comparison (usually ``Py_True`` " "or ``Py_False``). If the comparison is undefined, it must return " @@ -2559,50 +2785,50 @@ msgid "" "set an exception condition." msgstr "" -#: c-api/typeobj.rst:1587 +#: c-api/typeobj.rst:1731 msgid "" "The following constants are defined to be used as the third argument for :c:" "member:`~PyTypeObject.tp_richcompare` and for :c:func:`PyObject_RichCompare`:" msgstr "" -#: c-api/typeobj.rst:1593 +#: c-api/typeobj.rst:1737 msgid "Constant" msgstr "" -#: c-api/typeobj.rst:1593 +#: c-api/typeobj.rst:1737 msgid "Comparison" msgstr "" -#: c-api/typeobj.rst:1595 +#: c-api/typeobj.rst:1739 msgid "``<``" msgstr "" -#: c-api/typeobj.rst:1597 +#: c-api/typeobj.rst:1741 msgid "``<=``" msgstr "" -#: c-api/typeobj.rst:1599 +#: c-api/typeobj.rst:1743 msgid "``==``" msgstr "" -#: c-api/typeobj.rst:1601 +#: c-api/typeobj.rst:1745 msgid "``!=``" msgstr "" -#: c-api/typeobj.rst:1603 +#: c-api/typeobj.rst:1747 msgid "``>``" msgstr "" -#: c-api/typeobj.rst:1605 +#: c-api/typeobj.rst:1749 msgid "``>=``" msgstr "" -#: c-api/typeobj.rst:1608 +#: c-api/typeobj.rst:1752 msgid "" "The following macro is defined to ease writing rich comparison functions:" msgstr "" -#: c-api/typeobj.rst:1612 +#: c-api/typeobj.rst:1756 msgid "" "Return ``Py_True`` or ``Py_False`` from the function, depending on the " "result of a comparison. VAL_A and VAL_B must be orderable by C comparison " @@ -2610,15 +2836,15 @@ msgid "" "specifies the requested operation, as for :c:func:`PyObject_RichCompare`." msgstr "" -#: c-api/typeobj.rst:1618 +#: c-api/typeobj.rst:1762 msgid "The returned value is a new :term:`strong reference`." msgstr "" -#: c-api/typeobj.rst:1620 +#: c-api/typeobj.rst:1764 msgid "On error, sets an exception and returns ``NULL`` from the function." msgstr "" -#: c-api/typeobj.rst:1628 +#: c-api/typeobj.rst:1772 msgid "" "This field is inherited by subtypes together with :c:member:`~PyTypeObject." "tp_hash`: a subtype inherits :c:member:`~PyTypeObject.tp_richcompare` and :c:" @@ -2626,7 +2852,7 @@ msgid "" "tp_richcompare` and :c:member:`~PyTypeObject.tp_hash` are both ``NULL``." msgstr "" -#: c-api/typeobj.rst:1635 +#: c-api/typeobj.rst:1779 msgid "" ":c:data:`PyBaseObject_Type` provides a :c:member:`~PyTypeObject." "tp_richcompare` implementation, which may be inherited. However, if only :c:" @@ -2635,13 +2861,13 @@ msgid "" "comparisons." msgstr "" -#: c-api/typeobj.rst:1644 +#: c-api/typeobj.rst:1788 msgid "" "While this field is still supported, :c:macro:`Py_TPFLAGS_MANAGED_WEAKREF` " "should be used instead, if at all possible." msgstr "" -#: c-api/typeobj.rst:1647 +#: c-api/typeobj.rst:1791 msgid "" "If the instances of this type are weakly referenceable, this field is " "greater than zero and contains the offset in the instance structure of the " @@ -2651,19 +2877,19 @@ msgid "" "`PyObject*` which is initialized to ``NULL``." msgstr "" -#: c-api/typeobj.rst:1654 +#: c-api/typeobj.rst:1798 msgid "" "Do not confuse this field with :c:member:`~PyTypeObject.tp_weaklist`; that " "is the list head for weak references to the type object itself." msgstr "" -#: c-api/typeobj.rst:1657 +#: c-api/typeobj.rst:1801 msgid "" "It is an error to set both the :c:macro:`Py_TPFLAGS_MANAGED_WEAKREF` bit " "and :c:member:`~PyTypeObject.tp_weaklistoffset`." msgstr "" -#: c-api/typeobj.rst:1662 +#: c-api/typeobj.rst:1806 msgid "" "This field is inherited by subtypes, but see the rules listed below. A " "subtype may override this offset; this means that the subtype uses a " @@ -2672,7 +2898,7 @@ msgid "" "not be a problem." msgstr "" -#: c-api/typeobj.rst:1669 +#: c-api/typeobj.rst:1813 msgid "" "If the :c:macro:`Py_TPFLAGS_MANAGED_WEAKREF` bit is set in the :c:member:" "`~PyTypeObject.tp_flags` field, then :c:member:`~PyTypeObject." @@ -2680,32 +2906,32 @@ msgid "" "unsafe to use this field." msgstr "" -#: c-api/typeobj.rst:1677 +#: c-api/typeobj.rst:1821 msgid "" "An optional pointer to a function that returns an :term:`iterator` for the " "object. Its presence normally signals that the instances of this type are :" "term:`iterable` (although sequences may be iterable without this function)." msgstr "" -#: c-api/typeobj.rst:1681 +#: c-api/typeobj.rst:1825 msgid "This function has the same signature as :c:func:`PyObject_GetIter`::" msgstr "" -#: c-api/typeobj.rst:1683 +#: c-api/typeobj.rst:1827 msgid "PyObject *tp_iter(PyObject *self);" msgstr "" -#: c-api/typeobj.rst:1692 +#: c-api/typeobj.rst:1836 msgid "" "An optional pointer to a function that returns the next item in an :term:" "`iterator`. The signature is::" msgstr "" -#: c-api/typeobj.rst:1695 +#: c-api/typeobj.rst:1839 msgid "PyObject *tp_iternext(PyObject *self);" msgstr "" -#: c-api/typeobj.rst:1697 +#: c-api/typeobj.rst:1841 msgid "" "When the iterator is exhausted, it must return ``NULL``; a :exc:" "`StopIteration` exception may or may not be set. When another error occurs, " @@ -2713,74 +2939,74 @@ msgid "" "this type are iterators." msgstr "" -#: c-api/typeobj.rst:1702 +#: c-api/typeobj.rst:1846 msgid "" "Iterator types should also define the :c:member:`~PyTypeObject.tp_iter` " "function, and that function should return the iterator instance itself (not " "a new iterator instance)." msgstr "" -#: c-api/typeobj.rst:1706 +#: c-api/typeobj.rst:1850 msgid "This function has the same signature as :c:func:`PyIter_Next`." msgstr "" -#: c-api/typeobj.rst:1715 +#: c-api/typeobj.rst:1859 msgid "" "An optional pointer to a static ``NULL``-terminated array of :c:type:" "`PyMethodDef` structures, declaring regular methods of this type." msgstr "" -#: c-api/typeobj.rst:1718 +#: c-api/typeobj.rst:1862 msgid "" "For each entry in the array, an entry is added to the type's dictionary " "(see :c:member:`~PyTypeObject.tp_dict` below) containing a method descriptor." msgstr "" -#: c-api/typeobj.rst:1723 +#: c-api/typeobj.rst:1867 msgid "" "This field is not inherited by subtypes (methods are inherited through a " "different mechanism)." msgstr "" -#: c-api/typeobj.rst:1729 +#: c-api/typeobj.rst:1873 msgid "" "An optional pointer to a static ``NULL``-terminated array of :c:type:" "`PyMemberDef` structures, declaring regular data members (fields or slots) " "of instances of this type." msgstr "" -#: c-api/typeobj.rst:1733 +#: c-api/typeobj.rst:1877 msgid "" "For each entry in the array, an entry is added to the type's dictionary " "(see :c:member:`~PyTypeObject.tp_dict` below) containing a member descriptor." msgstr "" -#: c-api/typeobj.rst:1738 +#: c-api/typeobj.rst:1882 msgid "" "This field is not inherited by subtypes (members are inherited through a " "different mechanism)." msgstr "" -#: c-api/typeobj.rst:1744 +#: c-api/typeobj.rst:1888 msgid "" "An optional pointer to a static ``NULL``-terminated array of :c:type:" "`PyGetSetDef` structures, declaring computed attributes of instances of this " "type." msgstr "" -#: c-api/typeobj.rst:1747 +#: c-api/typeobj.rst:1891 msgid "" "For each entry in the array, an entry is added to the type's dictionary " "(see :c:member:`~PyTypeObject.tp_dict` below) containing a getset descriptor." msgstr "" -#: c-api/typeobj.rst:1752 +#: c-api/typeobj.rst:1896 msgid "" "This field is not inherited by subtypes (computed attributes are inherited " "through a different mechanism)." msgstr "" -#: c-api/typeobj.rst:1758 +#: c-api/typeobj.rst:1902 msgid "" "An optional pointer to a base type from which type properties are " "inherited. At this level, only single inheritance is supported; multiple " @@ -2788,7 +3014,7 @@ msgid "" "metatype." msgstr "" -#: c-api/typeobj.rst:1766 +#: c-api/typeobj.rst:1910 msgid "" "Slot initialization is subject to the rules of initializing globals. C99 " "requires the initializers to be \"address constants\". Function designators " @@ -2796,7 +3022,7 @@ msgid "" "valid C99 address constants." msgstr "" -#: c-api/typeobj.rst:1771 +#: c-api/typeobj.rst:1915 msgid "" "However, the unary '&' operator applied to a non-static variable like :c:" "data:`PyBaseObject_Type` is not required to produce an address constant. " @@ -2804,27 +3030,27 @@ msgid "" "strictly standard conforming in this particular behavior." msgstr "" -#: c-api/typeobj.rst:1777 +#: c-api/typeobj.rst:1921 msgid "" "Consequently, :c:member:`~PyTypeObject.tp_base` should be set in the " "extension module's init function." msgstr "" -#: c-api/typeobj.rst:1782 +#: c-api/typeobj.rst:1926 msgid "This field is not inherited by subtypes (obviously)." msgstr "" -#: c-api/typeobj.rst:1786 +#: c-api/typeobj.rst:1930 msgid "" "This field defaults to ``&PyBaseObject_Type`` (which to Python programmers " "is known as the type :class:`object`)." msgstr "" -#: c-api/typeobj.rst:1792 +#: c-api/typeobj.rst:1936 msgid "The type's dictionary is stored here by :c:func:`PyType_Ready`." msgstr "" -#: c-api/typeobj.rst:1794 +#: c-api/typeobj.rst:1938 msgid "" "This field should normally be initialized to ``NULL`` before PyType_Ready is " "called; it may also be initialized to a dictionary containing initial " @@ -2835,70 +3061,70 @@ msgid "" "be treated as read-only." msgstr "" -#: c-api/typeobj.rst:1802 +#: c-api/typeobj.rst:1946 msgid "" "Some types may not store their dictionary in this slot. Use :c:func:" "`PyType_GetDict` to retrieve the dictionary for an arbitrary type." msgstr "" -#: c-api/typeobj.rst:1808 +#: c-api/typeobj.rst:1952 msgid "" "Internals detail: For static builtin types, this is always ``NULL``. " "Instead, the dict for such types is stored on ``PyInterpreterState``. Use :c:" "func:`PyType_GetDict` to get the dict for an arbitrary type." msgstr "" -#: c-api/typeobj.rst:1814 +#: c-api/typeobj.rst:1958 msgid "" "This field is not inherited by subtypes (though the attributes defined in " "here are inherited through a different mechanism)." msgstr "" -#: c-api/typeobj.rst:1819 +#: c-api/typeobj.rst:1963 msgid "" "If this field is ``NULL``, :c:func:`PyType_Ready` will assign a new " "dictionary to it." msgstr "" -#: c-api/typeobj.rst:1824 +#: c-api/typeobj.rst:1968 msgid "" "It is not safe to use :c:func:`PyDict_SetItem` on or otherwise modify :c:" "member:`~PyTypeObject.tp_dict` with the dictionary C-API." msgstr "" -#: c-api/typeobj.rst:1830 +#: c-api/typeobj.rst:1974 msgid "An optional pointer to a \"descriptor get\" function." msgstr "" -#: c-api/typeobj.rst:1848 c-api/typeobj.rst:1942 c-api/typeobj.rst:1966 +#: c-api/typeobj.rst:1992 c-api/typeobj.rst:2086 c-api/typeobj.rst:2109 msgid "The function signature is::" msgstr "" -#: c-api/typeobj.rst:1834 +#: c-api/typeobj.rst:1978 msgid "PyObject * tp_descr_get(PyObject *self, PyObject *obj, PyObject *type);" msgstr "" -#: c-api/typeobj.rst:1845 +#: c-api/typeobj.rst:1989 msgid "" "An optional pointer to a function for setting and deleting a descriptor's " "value." msgstr "" -#: c-api/typeobj.rst:1850 +#: c-api/typeobj.rst:1994 msgid "int tp_descr_set(PyObject *self, PyObject *obj, PyObject *value);" msgstr "" -#: c-api/typeobj.rst:1852 +#: c-api/typeobj.rst:1996 msgid "The *value* argument is set to ``NULL`` to delete the value." msgstr "" -#: c-api/typeobj.rst:1863 +#: c-api/typeobj.rst:2007 msgid "" "While this field is still supported, :c:macro:`Py_TPFLAGS_MANAGED_DICT` " "should be used instead, if at all possible." msgstr "" -#: c-api/typeobj.rst:1866 +#: c-api/typeobj.rst:2010 msgid "" "If the instances of this type have a dictionary containing instance " "variables, this field is non-zero and contains the offset in the instances " @@ -2906,19 +3132,19 @@ msgid "" "func:`PyObject_GenericGetAttr`." msgstr "" -#: c-api/typeobj.rst:1871 +#: c-api/typeobj.rst:2015 msgid "" "Do not confuse this field with :c:member:`~PyTypeObject.tp_dict`; that is " "the dictionary for attributes of the type object itself." msgstr "" -#: c-api/typeobj.rst:1874 +#: c-api/typeobj.rst:2018 msgid "" "The value specifies the offset of the dictionary from the start of the " "instance structure." msgstr "" -#: c-api/typeobj.rst:1876 +#: c-api/typeobj.rst:2020 msgid "" "The :c:member:`~PyTypeObject.tp_dictoffset` should be regarded as write-" "only. To get the pointer to the dictionary call :c:func:" @@ -2927,13 +3153,13 @@ msgid "" "to call :c:func:`PyObject_GetAttr` when accessing an attribute on the object." msgstr "" -#: c-api/typeobj.rst:1882 +#: c-api/typeobj.rst:2026 msgid "" "It is an error to set both the :c:macro:`Py_TPFLAGS_MANAGED_DICT` bit and :c:" "member:`~PyTypeObject.tp_dictoffset`." msgstr "" -#: c-api/typeobj.rst:1887 +#: c-api/typeobj.rst:2031 msgid "" "This field is inherited by subtypes. A subtype should not override this " "offset; doing so could be unsafe, if C code tries to access the dictionary " @@ -2941,25 +3167,25 @@ msgid "" "`Py_TPFLAGS_MANAGED_DICT`." msgstr "" -#: c-api/typeobj.rst:1894 +#: c-api/typeobj.rst:2038 msgid "" "This slot has no default. For :ref:`static types `, if the " "field is ``NULL`` then no :attr:`~object.__dict__` gets created for " "instances." msgstr "" -#: c-api/typeobj.rst:1897 +#: c-api/typeobj.rst:2041 msgid "" "If the :c:macro:`Py_TPFLAGS_MANAGED_DICT` bit is set in the :c:member:" "`~PyTypeObject.tp_flags` field, then :c:member:`~PyTypeObject.tp_dictoffset` " "will be set to ``-1``, to indicate that it is unsafe to use this field." msgstr "" -#: c-api/typeobj.rst:1905 +#: c-api/typeobj.rst:2049 msgid "An optional pointer to an instance initialization function." msgstr "" -#: c-api/typeobj.rst:1907 +#: c-api/typeobj.rst:2051 msgid "" "This function corresponds to the :meth:`~object.__init__` method of " "classes. Like :meth:`!__init__`, it is possible to create an instance " @@ -2967,18 +3193,18 @@ msgid "" "instance by calling its :meth:`!__init__` method again." msgstr "" -#: c-api/typeobj.rst:1914 +#: c-api/typeobj.rst:2058 msgid "int tp_init(PyObject *self, PyObject *args, PyObject *kwds);" msgstr "" -#: c-api/typeobj.rst:1916 +#: c-api/typeobj.rst:2060 msgid "" "The self argument is the instance to be initialized; the *args* and *kwds* " "arguments represent positional and keyword arguments of the call to :meth:" "`~object.__init__`." msgstr "" -#: c-api/typeobj.rst:1920 +#: c-api/typeobj.rst:2064 msgid "" "The :c:member:`~PyTypeObject.tp_init` function, if not ``NULL``, is called " "when an instance is created normally by calling its type, after the type's :" @@ -2990,52 +3216,52 @@ msgid "" "subtype's :c:member:`~PyTypeObject.tp_init` is called." msgstr "" -#: c-api/typeobj.rst:1927 +#: c-api/typeobj.rst:2071 msgid "Returns ``0`` on success, ``-1`` and sets an exception on error." msgstr "" -#: c-api/typeobj.rst:1935 +#: c-api/typeobj.rst:2079 msgid "" "For :ref:`static types ` this field does not have a default." msgstr "" -#: c-api/typeobj.rst:1940 +#: c-api/typeobj.rst:2084 msgid "An optional pointer to an instance allocation function." msgstr "" -#: c-api/typeobj.rst:1944 +#: c-api/typeobj.rst:2088 msgid "PyObject *tp_alloc(PyTypeObject *self, Py_ssize_t nitems);" msgstr "" -#: c-api/typeobj.rst:1948 +#: c-api/typeobj.rst:2092 msgid "" -"This field is inherited by static subtypes, but not by dynamic subtypes " -"(subtypes created by a class statement)." +"Static subtypes inherit this slot, which will be :c:func:" +"`PyType_GenericAlloc` if inherited from :class:`object`." msgstr "" -#: c-api/typeobj.rst:1953 -msgid "" -"For dynamic subtypes, this field is always set to :c:func:" -"`PyType_GenericAlloc`, to force a standard heap allocation strategy." +#: c-api/typeobj.rst:2162 +msgid ":ref:`Heap subtypes ` do not inherit this slot." msgstr "" -#: c-api/typeobj.rst:1957 +#: c-api/typeobj.rst:2099 msgid "" -"For static subtypes, :c:data:`PyBaseObject_Type` uses :c:func:" -"`PyType_GenericAlloc`. That is the recommended value for all statically " -"defined types." +"For heap subtypes, this field is always set to :c:func:`PyType_GenericAlloc`." msgstr "" -#: c-api/typeobj.rst:1964 +#: c-api/typeobj.rst:2170 +msgid "For static subtypes, this slot is inherited (see above)." +msgstr "" + +#: c-api/typeobj.rst:2107 msgid "An optional pointer to an instance creation function." msgstr "" -#: c-api/typeobj.rst:1968 +#: c-api/typeobj.rst:2111 msgid "" "PyObject *tp_new(PyTypeObject *subtype, PyObject *args, PyObject *kwds);" msgstr "" -#: c-api/typeobj.rst:1970 +#: c-api/typeobj.rst:2113 msgid "" "The *subtype* argument is the type of the object being created; the *args* " "and *kwds* arguments represent positional and keyword arguments of the call " @@ -3044,7 +3270,7 @@ msgid "" "that type (but not an unrelated type)." msgstr "" -#: c-api/typeobj.rst:1976 +#: c-api/typeobj.rst:2119 msgid "" "The :c:member:`~PyTypeObject.tp_new` function should call ``subtype-" ">tp_alloc(subtype, nitems)`` to allocate space for the object, and then do " @@ -3056,20 +3282,20 @@ msgid "" "be deferred to :c:member:`~PyTypeObject.tp_init`." msgstr "" -#: c-api/typeobj.rst:1984 +#: c-api/typeobj.rst:2127 msgid "" "Set the :c:macro:`Py_TPFLAGS_DISALLOW_INSTANTIATION` flag to disallow " "creating instances of the type in Python." msgstr "" -#: c-api/typeobj.rst:1989 +#: c-api/typeobj.rst:2132 msgid "" "This field is inherited by subtypes, except it is not inherited by :ref:" "`static types ` whose :c:member:`~PyTypeObject.tp_base` is " "``NULL`` or ``&PyBaseObject_Type``." msgstr "" -#: c-api/typeobj.rst:1995 +#: c-api/typeobj.rst:2138 msgid "" "For :ref:`static types ` this field has no default. This means " "if the slot is defined as ``NULL``, the type cannot be called to create new " @@ -3077,45 +3303,42 @@ msgid "" "factory function." msgstr "" -#: c-api/typeobj.rst:2003 +#: c-api/typeobj.rst:2146 msgid "" "An optional pointer to an instance deallocation function. Its signature is::" msgstr "" -#: c-api/typeobj.rst:2005 +#: c-api/typeobj.rst:2148 msgid "void tp_free(void *self);" msgstr "" -#: c-api/typeobj.rst:2007 -msgid "" -"An initializer that is compatible with this signature is :c:func:" -"`PyObject_Free`." -msgstr "" - -#: c-api/typeobj.rst:2011 +#: c-api/typeobj.rst:2150 msgid "" -"This field is inherited by static subtypes, but not by dynamic subtypes " -"(subtypes created by a class statement)" +"This function must free the memory allocated by :c:member:`~PyTypeObject." +"tp_alloc`." msgstr "" -#: c-api/typeobj.rst:2016 +#: c-api/typeobj.rst:2155 msgid "" -"In dynamic subtypes, this field is set to a deallocator suitable to match :c:" -"func:`PyType_GenericAlloc` and the value of the :c:macro:" -"`Py_TPFLAGS_HAVE_GC` flag bit." +"Static subtypes inherit this slot, which will be :c:func:`PyObject_Free` if " +"inherited from :class:`object`. Exception: If the type supports garbage " +"collection (i.e., the :c:macro:`Py_TPFLAGS_HAVE_GC` flag is set in :c:member:" +"`~PyTypeObject.tp_flags`) and it would inherit :c:func:`PyObject_Free`, then " +"this slot is not inherited but instead defaults to :c:func:`PyObject_GC_Del`." msgstr "" -#: c-api/typeobj.rst:2020 +#: c-api/typeobj.rst:2166 msgid "" -"For static subtypes, :c:data:`PyBaseObject_Type` uses :c:func:" -"`PyObject_Free`." +"For :ref:`heap subtypes `, this slot defaults to a deallocator " +"suitable to match :c:func:`PyType_GenericAlloc` and the value of the :c:" +"macro:`Py_TPFLAGS_HAVE_GC` flag." msgstr "" -#: c-api/typeobj.rst:2025 +#: c-api/typeobj.rst:2175 msgid "An optional pointer to a function called by the garbage collector." msgstr "" -#: c-api/typeobj.rst:2027 +#: c-api/typeobj.rst:2177 msgid "" "The garbage collector needs to know whether a particular object is " "collectible or not. Normally, it is sufficient to look at the object's " @@ -3127,91 +3350,91 @@ msgid "" "instance. The signature is::" msgstr "" -#: c-api/typeobj.rst:2035 +#: c-api/typeobj.rst:2185 msgid "int tp_is_gc(PyObject *self);" msgstr "" -#: c-api/typeobj.rst:2037 +#: c-api/typeobj.rst:2187 msgid "" "(The only example of this are types themselves. The metatype, :c:data:" "`PyType_Type`, defines this function to distinguish between statically and :" "ref:`dynamically allocated types `.)" msgstr "" -#: c-api/typeobj.rst:2047 +#: c-api/typeobj.rst:2197 msgid "" "This slot has no default. If this field is ``NULL``, :c:macro:" "`Py_TPFLAGS_HAVE_GC` is used as the functional equivalent." msgstr "" -#: c-api/typeobj.rst:2053 +#: c-api/typeobj.rst:2203 msgid "Tuple of base types." msgstr "" -#: c-api/typeobj.rst:2079 +#: c-api/typeobj.rst:2229 msgid "" "This field should be set to ``NULL`` and treated as read-only. Python will " "fill it in when the type is :c:func:`initialized `." msgstr "" -#: c-api/typeobj.rst:2058 +#: c-api/typeobj.rst:2208 msgid "" "For dynamically created classes, the ``Py_tp_bases`` :c:type:`slot " "` can be used instead of the *bases* argument of :c:func:" "`PyType_FromSpecWithBases`. The argument form is preferred." msgstr "" -#: c-api/typeobj.rst:2065 +#: c-api/typeobj.rst:2215 msgid "" "Multiple inheritance does not work well for statically defined types. If you " "set ``tp_bases`` to a tuple, Python will not raise an error, but some slots " "will only be inherited from the first base." msgstr "" -#: c-api/typeobj.rst:2094 c-api/typeobj.rst:2128 c-api/typeobj.rst:2142 +#: c-api/typeobj.rst:2244 c-api/typeobj.rst:2278 c-api/typeobj.rst:2292 msgid "This field is not inherited." msgstr "" -#: c-api/typeobj.rst:2076 +#: c-api/typeobj.rst:2226 msgid "" "Tuple containing the expanded set of base types, starting with the type " "itself and ending with :class:`object`, in Method Resolution Order." msgstr "" -#: c-api/typeobj.rst:2084 +#: c-api/typeobj.rst:2234 msgid "" "This field is not inherited; it is calculated fresh by :c:func:" "`PyType_Ready`." msgstr "" -#: c-api/typeobj.rst:2090 +#: c-api/typeobj.rst:2240 msgid "Unused. Internal use only." msgstr "" -#: c-api/typeobj.rst:2099 +#: c-api/typeobj.rst:2249 msgid "" "A collection of subclasses. Internal use only. May be an invalid pointer." msgstr "" -#: c-api/typeobj.rst:2101 +#: c-api/typeobj.rst:2251 msgid "" "To get a list of subclasses, call the Python method :py:meth:`~type." "__subclasses__`." msgstr "" -#: c-api/typeobj.rst:2106 +#: c-api/typeobj.rst:2256 msgid "" "For some types, this field does not hold a valid :c:expr:`PyObject*`. The " "type was changed to :c:expr:`void*` to indicate this." msgstr "" -#: c-api/typeobj.rst:2116 +#: c-api/typeobj.rst:2266 msgid "" "Weak reference list head, for weak references to this type object. Not " "inherited. Internal use only." msgstr "" -#: c-api/typeobj.rst:2121 +#: c-api/typeobj.rst:2271 msgid "" "Internals detail: For the static builtin types this is always ``NULL``, even " "if weakrefs are added. Instead, the weakrefs for each are stored on " @@ -3219,68 +3442,242 @@ msgid "" "``_PyObject_GET_WEAKREFS_LISTPTR()`` macro to avoid the distinction." msgstr "" -#: c-api/typeobj.rst:2133 +#: c-api/typeobj.rst:2283 msgid "" "This field is deprecated. Use :c:member:`~PyTypeObject.tp_finalize` instead." msgstr "" -#: c-api/typeobj.rst:2138 +#: c-api/typeobj.rst:2288 msgid "Used to index into the method cache. Internal use only." msgstr "" -#: c-api/typeobj.rst:2147 +#: c-api/typeobj.rst:2297 msgid "" -"An optional pointer to an instance finalization function. Its signature is::" +"An optional pointer to an instance finalization function. This is the C " +"implementation of the :meth:`~object.__del__` special method. Its signature " +"is::" msgstr "" -#: c-api/typeobj.rst:2149 +#: c-api/typeobj.rst:2301 msgid "void tp_finalize(PyObject *self);" msgstr "" -#: c-api/typeobj.rst:2151 +#: c-api/typeobj.rst:2303 +msgid "" +"The primary purpose of finalization is to perform any non-trivial cleanup " +"that must be performed before the object is destroyed, while the object and " +"any other objects it directly or indirectly references are still in a " +"consistent state. The finalizer is allowed to execute arbitrary Python code." +msgstr "" + +#: c-api/typeobj.rst:2309 +msgid "" +"Before Python automatically finalizes an object, some of the object's direct " +"or indirect referents might have themselves been automatically finalized. " +"However, none of the referents will have been automatically cleared (:c:" +"member:`~PyTypeObject.tp_clear`) yet." +msgstr "" + +#: c-api/typeobj.rst:2314 +msgid "" +"Other non-finalized objects might still be using a finalized object, so the " +"finalizer must leave the object in a sane state (e.g., invariants are still " +"met)." +msgstr "" + +#: c-api/typeobj.rst:2320 +msgid "" +"After Python automatically finalizes an object, Python might start " +"automatically clearing (:c:member:`~PyTypeObject.tp_clear`) the object and " +"its referents (direct and indirect). Cleared objects are not guaranteed to " +"be in a consistent state; a finalized object must be able to tolerate " +"cleared referents." +msgstr "" + +#: c-api/typeobj.rst:2328 +msgid "" +"An object is not guaranteed to be automatically finalized before its " +"destructor (:c:member:`~PyTypeObject.tp_dealloc`) is called. It is " +"recommended to call :c:func:`PyObject_CallFinalizerFromDealloc` at the " +"beginning of :c:member:`!tp_dealloc` to guarantee that the object is always " +"finalized before destruction." +msgstr "" + +#: c-api/typeobj.rst:2336 +msgid "" +"The :c:member:`~PyTypeObject.tp_finalize` function can be called from any " +"thread, although the :term:`GIL` will be held." +msgstr "" + +#: c-api/typeobj.rst:2341 msgid "" -"If :c:member:`~PyTypeObject.tp_finalize` is set, the interpreter calls it " -"once when finalizing an instance. It is called either from the garbage " -"collector (if the instance is part of an isolated reference cycle) or just " -"before the object is deallocated. Either way, it is guaranteed to be called " -"before attempting to break reference cycles, ensuring that it finds the " -"object in a sane state." +"The :c:member:`!tp_finalize` function can be called during shutdown, after " +"some global variables have been deleted. See the documentation of the :meth:" +"`~object.__del__` method for details." msgstr "" -#: c-api/typeobj.rst:2158 +#: c-api/typeobj.rst:2345 msgid "" -":c:member:`~PyTypeObject.tp_finalize` should not mutate the current " -"exception status; therefore, a recommended way to write a non-trivial " -"finalizer is::" +"When Python finalizes an object, it behaves like the following algorithm:" msgstr "" -#: c-api/typeobj.rst:2161 +#: c-api/typeobj.rst:2347 +msgid "" +"Python might mark the object as *finalized*. Currently, Python always marks " +"objects whose type supports garbage collection (i.e., the :c:macro:" +"`Py_TPFLAGS_HAVE_GC` flag is set in :c:member:`~PyTypeObject.tp_flags`) and " +"never marks other types of objects; this might change in a future version." +msgstr "" + +#: c-api/typeobj.rst:2352 +msgid "" +"If the object is not marked as *finalized* and its :c:member:`!tp_finalize` " +"finalizer function is non-``NULL``, the finalizer function is called." +msgstr "" + +#: c-api/typeobj.rst:2355 +msgid "" +"If the finalizer function was called and the finalizer made the object " +"reachable (i.e., there is a reference to the object and it is not a member " +"of a :term:`cyclic isolate`), then the finalizer is said to have " +"*resurrected* the object. It is unspecified whether the finalizer can also " +"resurrect the object by adding a new reference to the object that does not " +"make it reachable, i.e., the object is (still) a member of a cyclic isolate." +msgstr "" + +#: c-api/typeobj.rst:2362 +msgid "" +"If the finalizer resurrected the object, the object's pending destruction is " +"canceled and the object's *finalized* mark might be removed if present. " +"Currently, Python never removes the *finalized* mark; this might change in a " +"future version." +msgstr "" + +#: c-api/typeobj.rst:2367 +msgid "" +"*Automatic finalization* refers to any finalization performed by Python " +"except via calls to :c:func:`PyObject_CallFinalizer` or :c:func:" +"`PyObject_CallFinalizerFromDealloc`. No guarantees are made about when, if, " +"or how often an object is automatically finalized, except:" +msgstr "" + +#: c-api/typeobj.rst:2372 +msgid "" +"Python will not automatically finalize an object if it is reachable, i.e., " +"there is a reference to it and it is not a member of a :term:`cyclic " +"isolate`." +msgstr "" + +#: c-api/typeobj.rst:2375 +msgid "" +"Python will not automatically finalize an object if finalizing it would not " +"mark the object as *finalized*. Currently, this applies to objects whose " +"type does not support garbage collection, i.e., the :c:macro:" +"`Py_TPFLAGS_HAVE_GC` flag is not set. Such objects can still be manually " +"finalized by calling :c:func:`PyObject_CallFinalizer` or :c:func:" +"`PyObject_CallFinalizerFromDealloc`." +msgstr "" + +#: c-api/typeobj.rst:2381 +msgid "" +"Python will not automatically finalize any two members of a :term:`cyclic " +"isolate` concurrently." +msgstr "" + +#: c-api/typeobj.rst:2383 +msgid "" +"Python will not automatically finalize an object after it has automatically " +"cleared (:c:member:`~PyTypeObject.tp_clear`) the object." +msgstr "" + +#: c-api/typeobj.rst:2385 +msgid "" +"If an object is a member of a :term:`cyclic isolate`, Python will not " +"automatically finalize it after automatically clearing (see :c:member:" +"`~PyTypeObject.tp_clear`) any other member." +msgstr "" + +#: c-api/typeobj.rst:2388 +msgid "" +"Python will automatically finalize every member of a :term:`cyclic isolate` " +"before it automatically clears (see :c:member:`~PyTypeObject.tp_clear`) any " +"of them." +msgstr "" + +#: c-api/typeobj.rst:2391 +msgid "" +"If Python is going to automatically clear an object (:c:member:" +"`~PyTypeObject.tp_clear`), it will automatically finalize the object first." +msgstr "" + +#: c-api/typeobj.rst:2395 +msgid "" +"Python currently only automatically finalizes objects that are members of a :" +"term:`cyclic isolate`, but future versions might finalize objects regularly " +"before their destruction." +msgstr "" + +#: c-api/typeobj.rst:2399 +msgid "" +"To manually finalize an object, do not call this function directly; call :c:" +"func:`PyObject_CallFinalizer` or :c:func:`PyObject_CallFinalizerFromDealloc` " +"instead." +msgstr "" + +#: c-api/typeobj.rst:2403 +msgid "" +":c:member:`~PyTypeObject.tp_finalize` should leave the current exception " +"status unchanged. The recommended way to write a non-trivial finalizer is " +"to back up the exception at the beginning by calling :c:func:" +"`PyErr_GetRaisedException` and restore the exception at the end by calling :" +"c:func:`PyErr_SetRaisedException`. If an exception is encountered in the " +"middle of the finalizer, log and clear it with :c:func:" +"`PyErr_WriteUnraisable` or :c:func:`PyErr_FormatUnraisable`. For example::" +msgstr "" + +#: c-api/typeobj.rst:2412 msgid "" "static void\n" -"local_finalize(PyObject *self)\n" +"foo_finalize(PyObject *self)\n" "{\n" -" /* Save the current exception, if any. */\n" +" // Save the current exception, if any.\n" " PyObject *exc = PyErr_GetRaisedException();\n" "\n" -" /* ... */\n" +" // ...\n" +"\n" +" if (do_something_that_might_raise() != success_indicator) {\n" +" PyErr_WriteUnraisable(self);\n" +" goto done;\n" +" }\n" "\n" -" /* Restore the saved exception. */\n" +"done:\n" +" // Restore the saved exception. This silently discards any exception\n" +" // raised above, so be sure to call PyErr_WriteUnraisable first if\n" +" // necessary.\n" " PyErr_SetRaisedException(exc);\n" "}" msgstr "" -#: c-api/typeobj.rst:2181 +#: c-api/typeobj.rst:2440 msgid "" "Before version 3.8 it was necessary to set the :c:macro:" "`Py_TPFLAGS_HAVE_FINALIZE` flags bit in order for this field to be used. " "This is no longer required." msgstr "" -#: c-api/typeobj.rst:2185 -msgid "\"Safe object finalization\" (:pep:`442`)" +#: c-api/typeobj.rst:2446 +msgid ":pep:`442`: \"Safe object finalization\"" +msgstr "" + +#: c-api/typeobj.rst:2449 +msgid ":c:func:`PyObject_CallFinalizer`" +msgstr "" + +#: c-api/typeobj.rst:2450 +msgid ":c:func:`PyObject_CallFinalizerFromDealloc`" msgstr "" -#: c-api/typeobj.rst:2190 +#: c-api/typeobj.rst:2455 msgid "" "A :ref:`vectorcall function ` to use for calls of this type " "object (rather than instances). In other words, ``tp_vectorcall`` can be " @@ -3288,13 +3685,13 @@ msgid "" "of *type*." msgstr "" -#: c-api/typeobj.rst:2195 +#: c-api/typeobj.rst:2460 msgid "" "As with any vectorcall function, if ``tp_vectorcall`` is ``NULL``, the " "*tp_call* protocol (``Py_TYPE(type)->tp_call``) is used instead." msgstr "" -#: c-api/typeobj.rst:2200 +#: c-api/typeobj.rst:2465 msgid "" "The :ref:`vectorcall protocol ` requires that the vectorcall " "function has the same behavior as the corresponding ``tp_call``. This means " @@ -3302,27 +3699,27 @@ msgid "" ">tp_call``." msgstr "" -#: c-api/typeobj.rst:2205 +#: c-api/typeobj.rst:2470 msgid "" "Specifically, if *type* uses the default metaclass, ``type->tp_vectorcall`` " "must behave the same as :c:expr:`PyType_Type->tp_call`, which:" msgstr "" -#: c-api/typeobj.rst:2209 +#: c-api/typeobj.rst:2474 msgid "calls ``type->tp_new``," msgstr "" -#: c-api/typeobj.rst:2211 +#: c-api/typeobj.rst:2476 msgid "" "if the result is a subclass of *type*, calls ``type->tp_init`` on the result " "of ``tp_new``, and" msgstr "" -#: c-api/typeobj.rst:2214 +#: c-api/typeobj.rst:2479 msgid "returns the result of ``tp_new``." msgstr "" -#: c-api/typeobj.rst:2216 +#: c-api/typeobj.rst:2481 msgid "" "Typically, ``tp_vectorcall`` is overridden to optimize this process for " "specific :c:member:`~PyTypeObject.tp_new` and :c:member:`~PyTypeObject." @@ -3331,65 +3728,65 @@ msgid "" "__init__`, respectively)." msgstr "" -#: c-api/typeobj.rst:2227 +#: c-api/typeobj.rst:2492 msgid "This field is never inherited." msgstr "" -#: c-api/typeobj.rst:2229 +#: c-api/typeobj.rst:2494 msgid "(the field exists since 3.8 but it's only used since 3.9)" msgstr "" -#: c-api/typeobj.rst:2234 +#: c-api/typeobj.rst:2499 msgid "Internal. Do not use." msgstr "" -#: c-api/typeobj.rst:2242 +#: c-api/typeobj.rst:2507 msgid "Static Types" msgstr "" -#: c-api/typeobj.rst:2244 +#: c-api/typeobj.rst:2509 msgid "" "Traditionally, types defined in C code are *static*, that is, a static :c:" "type:`PyTypeObject` structure is defined directly in code and initialized " "using :c:func:`PyType_Ready`." msgstr "" -#: c-api/typeobj.rst:2248 +#: c-api/typeobj.rst:2513 msgid "" "This results in types that are limited relative to types defined in Python:" msgstr "" -#: c-api/typeobj.rst:2250 +#: c-api/typeobj.rst:2515 msgid "" "Static types are limited to one base, i.e. they cannot use multiple " "inheritance." msgstr "" -#: c-api/typeobj.rst:2252 +#: c-api/typeobj.rst:2517 msgid "" "Static type objects (but not necessarily their instances) are immutable. It " "is not possible to add or modify the type object's attributes from Python." msgstr "" -#: c-api/typeobj.rst:2254 +#: c-api/typeobj.rst:2519 msgid "" "Static type objects are shared across :ref:`sub-interpreters `, so they should not include any subinterpreter-" "specific state." msgstr "" -#: c-api/typeobj.rst:2258 +#: c-api/typeobj.rst:2523 msgid "" "Also, since :c:type:`PyTypeObject` is only part of the :ref:`Limited API " "` as an opaque struct, any extension modules using static " "types must be compiled for a specific Python minor version." msgstr "" -#: c-api/typeobj.rst:2266 +#: c-api/typeobj.rst:2531 msgid "Heap Types" msgstr "" -#: c-api/typeobj.rst:2268 +#: c-api/typeobj.rst:2533 msgid "" "An alternative to :ref:`static types ` is *heap-allocated " "types*, or *heap types* for short, which correspond closely to classes " @@ -3397,29 +3794,29 @@ msgid "" "`Py_TPFLAGS_HEAPTYPE` flag set." msgstr "" -#: c-api/typeobj.rst:2273 +#: c-api/typeobj.rst:2538 msgid "" "This is done by filling a :c:type:`PyType_Spec` structure and calling :c:" "func:`PyType_FromSpec`, :c:func:`PyType_FromSpecWithBases`, :c:func:" "`PyType_FromModuleAndSpec`, or :c:func:`PyType_FromMetaclass`." msgstr "" -#: c-api/typeobj.rst:2281 +#: c-api/typeobj.rst:2546 msgid "Number Object Structures" msgstr "" -#: c-api/typeobj.rst:2288 +#: c-api/typeobj.rst:2553 msgid "" "This structure holds pointers to the functions which an object uses to " "implement the number protocol. Each function is used by the function of " "similar name documented in the :ref:`number` section." msgstr "" -#: c-api/typeobj.rst:2618 +#: c-api/typeobj.rst:2883 msgid "Here is the structure definition::" msgstr "" -#: c-api/typeobj.rst:2296 +#: c-api/typeobj.rst:2561 msgid "" "typedef struct {\n" " binaryfunc nb_add;\n" @@ -3465,7 +3862,7 @@ msgid "" "} PyNumberMethods;" msgstr "" -#: c-api/typeobj.rst:2341 +#: c-api/typeobj.rst:2606 msgid "" "Binary and ternary functions must check the type of all their operands, and " "implement the necessary conversions (at least one of the operands is an " @@ -3475,31 +3872,31 @@ msgid "" "and set an exception." msgstr "" -#: c-api/typeobj.rst:2350 +#: c-api/typeobj.rst:2615 msgid "" "The :c:member:`~PyNumberMethods.nb_reserved` field should always be " "``NULL``. It was previously called :c:member:`!nb_long`, and was renamed in " "Python 3.0.1." msgstr "" -#: c-api/typeobj.rst:2395 +#: c-api/typeobj.rst:2660 msgid "Mapping Object Structures" msgstr "" -#: c-api/typeobj.rst:2402 +#: c-api/typeobj.rst:2667 msgid "" "This structure holds pointers to the functions which an object uses to " "implement the mapping protocol. It has three members:" msgstr "" -#: c-api/typeobj.rst:2407 +#: c-api/typeobj.rst:2672 msgid "" "This function is used by :c:func:`PyMapping_Size` and :c:func:" "`PyObject_Size`, and has the same signature. This slot may be set to " "``NULL`` if the object has no defined length." msgstr "" -#: c-api/typeobj.rst:2413 +#: c-api/typeobj.rst:2678 msgid "" "This function is used by :c:func:`PyObject_GetItem` and :c:func:" "`PySequence_GetSlice`, and has the same signature as :c:func:`!" @@ -3507,7 +3904,7 @@ msgid "" "`PyMapping_Check` function to return ``1``, it can be ``NULL`` otherwise." msgstr "" -#: c-api/typeobj.rst:2421 +#: c-api/typeobj.rst:2686 msgid "" "This function is used by :c:func:`PyObject_SetItem`, :c:func:" "`PyObject_DelItem`, :c:func:`PySequence_SetSlice` and :c:func:" @@ -3517,17 +3914,17 @@ msgid "" "deletion." msgstr "" -#: c-api/typeobj.rst:2432 +#: c-api/typeobj.rst:2697 msgid "Sequence Object Structures" msgstr "" -#: c-api/typeobj.rst:2439 +#: c-api/typeobj.rst:2704 msgid "" "This structure holds pointers to the functions which an object uses to " "implement the sequence protocol." msgstr "" -#: c-api/typeobj.rst:2444 +#: c-api/typeobj.rst:2709 msgid "" "This function is used by :c:func:`PySequence_Size` and :c:func:" "`PyObject_Size`, and has the same signature. It is also used for handling " @@ -3535,21 +3932,21 @@ msgid "" "member:`~PySequenceMethods.sq_ass_item` slots." msgstr "" -#: c-api/typeobj.rst:2451 +#: c-api/typeobj.rst:2716 msgid "" "This function is used by :c:func:`PySequence_Concat` and has the same " "signature. It is also used by the ``+`` operator, after trying the numeric " "addition via the :c:member:`~PyNumberMethods.nb_add` slot." msgstr "" -#: c-api/typeobj.rst:2457 +#: c-api/typeobj.rst:2722 msgid "" "This function is used by :c:func:`PySequence_Repeat` and has the same " "signature. It is also used by the ``*`` operator, after trying numeric " "multiplication via the :c:member:`~PyNumberMethods.nb_multiply` slot." msgstr "" -#: c-api/typeobj.rst:2463 +#: c-api/typeobj.rst:2728 msgid "" "This function is used by :c:func:`PySequence_GetItem` and has the same " "signature. It is also used by :c:func:`PyObject_GetItem`, after trying the " @@ -3558,7 +3955,7 @@ msgid "" "``1``, it can be ``NULL`` otherwise." msgstr "" -#: c-api/typeobj.rst:2469 +#: c-api/typeobj.rst:2734 msgid "" "Negative indexes are handled as follows: if the :c:member:" "`~PySequenceMethods.sq_length` slot is filled, it is called and the sequence " @@ -3567,7 +3964,7 @@ msgid "" "index is passed as is to the function." msgstr "" -#: c-api/typeobj.rst:2476 +#: c-api/typeobj.rst:2741 msgid "" "This function is used by :c:func:`PySequence_SetItem` and has the same " "signature. It is also used by :c:func:`PyObject_SetItem` and :c:func:" @@ -3576,14 +3973,14 @@ msgid "" "``NULL`` if the object does not support item assignment and deletion." msgstr "" -#: c-api/typeobj.rst:2485 +#: c-api/typeobj.rst:2750 msgid "" "This function may be used by :c:func:`PySequence_Contains` and has the same " "signature. This slot may be left to ``NULL``, in this case :c:func:`!" "PySequence_Contains` simply traverses the sequence until it finds a match." msgstr "" -#: c-api/typeobj.rst:2492 +#: c-api/typeobj.rst:2757 msgid "" "This function is used by :c:func:`PySequence_InPlaceConcat` and has the same " "signature. It should modify its first operand, and return it. This slot " @@ -3593,7 +3990,7 @@ msgid "" "c:member:`~PyNumberMethods.nb_inplace_add` slot." msgstr "" -#: c-api/typeobj.rst:2501 +#: c-api/typeobj.rst:2766 msgid "" "This function is used by :c:func:`PySequence_InPlaceRepeat` and has the same " "signature. It should modify its first operand, and return it. This slot " @@ -3603,74 +4000,74 @@ msgid "" "via the :c:member:`~PyNumberMethods.nb_inplace_multiply` slot." msgstr "" -#: c-api/typeobj.rst:2512 +#: c-api/typeobj.rst:2777 msgid "Buffer Object Structures" msgstr "" -#: c-api/typeobj.rst:2520 +#: c-api/typeobj.rst:2785 msgid "" "This structure holds pointers to the functions required by the :ref:`Buffer " "protocol `. The protocol defines how an exporter object can " "expose its internal data to consumer objects." msgstr "" -#: c-api/typeobj.rst:2575 c-api/typeobj.rst:2640 c-api/typeobj.rst:2662 +#: c-api/typeobj.rst:2840 c-api/typeobj.rst:2905 c-api/typeobj.rst:2927 msgid "The signature of this function is::" msgstr "" -#: c-api/typeobj.rst:2528 +#: c-api/typeobj.rst:2793 msgid "int (PyObject *exporter, Py_buffer *view, int flags);" msgstr "" -#: c-api/typeobj.rst:2530 +#: c-api/typeobj.rst:2795 msgid "" "Handle a request to *exporter* to fill in *view* as specified by *flags*. " "Except for point (3), an implementation of this function MUST take these " "steps:" msgstr "" -#: c-api/typeobj.rst:2534 +#: c-api/typeobj.rst:2799 msgid "" "Check if the request can be met. If not, raise :exc:`BufferError`, set :c:" "expr:`view->obj` to ``NULL`` and return ``-1``." msgstr "" -#: c-api/typeobj.rst:2537 +#: c-api/typeobj.rst:2802 msgid "Fill in the requested fields." msgstr "" -#: c-api/typeobj.rst:2539 +#: c-api/typeobj.rst:2804 msgid "Increment an internal counter for the number of exports." msgstr "" -#: c-api/typeobj.rst:2541 +#: c-api/typeobj.rst:2806 msgid "" "Set :c:expr:`view->obj` to *exporter* and increment :c:expr:`view->obj`." msgstr "" -#: c-api/typeobj.rst:2543 +#: c-api/typeobj.rst:2808 msgid "Return ``0``." msgstr "" -#: c-api/typeobj.rst:2545 +#: c-api/typeobj.rst:2810 msgid "" "If *exporter* is part of a chain or tree of buffer providers, two main " "schemes can be used:" msgstr "" -#: c-api/typeobj.rst:2548 +#: c-api/typeobj.rst:2813 msgid "" "Re-export: Each member of the tree acts as the exporting object and sets :c:" "expr:`view->obj` to a new reference to itself." msgstr "" -#: c-api/typeobj.rst:2551 +#: c-api/typeobj.rst:2816 msgid "" "Redirect: The buffer request is redirected to the root object of the tree. " "Here, :c:expr:`view->obj` will be a new reference to the root object." msgstr "" -#: c-api/typeobj.rst:2555 +#: c-api/typeobj.rst:2820 msgid "" "The individual fields of *view* are described in section :ref:`Buffer " "structure `, the rules how an exporter must react to " @@ -3678,7 +4075,7 @@ msgid "" "types>`." msgstr "" -#: c-api/typeobj.rst:2560 +#: c-api/typeobj.rst:2825 msgid "" "All memory pointed to in the :c:type:`Py_buffer` structure belongs to the " "exporter and must remain valid until there are no consumers left. :c:member:" @@ -3687,23 +4084,23 @@ msgid "" "internal` are read-only for the consumer." msgstr "" -#: c-api/typeobj.rst:2567 +#: c-api/typeobj.rst:2832 msgid "" ":c:func:`PyBuffer_FillInfo` provides an easy way of exposing a simple bytes " "buffer while dealing correctly with all request types." msgstr "" -#: c-api/typeobj.rst:2570 +#: c-api/typeobj.rst:2835 msgid "" ":c:func:`PyObject_GetBuffer` is the interface for the consumer that wraps " "this function." msgstr "" -#: c-api/typeobj.rst:2577 +#: c-api/typeobj.rst:2842 msgid "void (PyObject *exporter, Py_buffer *view);" msgstr "" -#: c-api/typeobj.rst:2579 +#: c-api/typeobj.rst:2844 msgid "" "Handle a request to release the resources of the buffer. If no resources " "need to be released, :c:member:`PyBufferProcs.bf_releasebuffer` may be " @@ -3711,15 +4108,15 @@ msgid "" "these optional steps:" msgstr "" -#: c-api/typeobj.rst:2584 +#: c-api/typeobj.rst:2849 msgid "Decrement an internal counter for the number of exports." msgstr "" -#: c-api/typeobj.rst:2586 +#: c-api/typeobj.rst:2851 msgid "If the counter is ``0``, free all memory associated with *view*." msgstr "" -#: c-api/typeobj.rst:2588 +#: c-api/typeobj.rst:2853 msgid "" "The exporter MUST use the :c:member:`~Py_buffer.internal` field to keep " "track of buffer-specific resources. This field is guaranteed to remain " @@ -3727,30 +4124,30 @@ msgid "" "*view* argument." msgstr "" -#: c-api/typeobj.rst:2594 +#: c-api/typeobj.rst:2859 msgid "" "This function MUST NOT decrement :c:expr:`view->obj`, since that is done " "automatically in :c:func:`PyBuffer_Release` (this scheme is useful for " "breaking reference cycles)." msgstr "" -#: c-api/typeobj.rst:2599 +#: c-api/typeobj.rst:2864 msgid "" ":c:func:`PyBuffer_Release` is the interface for the consumer that wraps this " "function." msgstr "" -#: c-api/typeobj.rst:2607 +#: c-api/typeobj.rst:2872 msgid "Async Object Structures" msgstr "" -#: c-api/typeobj.rst:2615 +#: c-api/typeobj.rst:2880 msgid "" "This structure holds pointers to the functions required to implement :term:" "`awaitable` and :term:`asynchronous iterator` objects." msgstr "" -#: c-api/typeobj.rst:2620 +#: c-api/typeobj.rst:2885 msgid "" "typedef struct {\n" " unaryfunc am_await;\n" @@ -3760,61 +4157,61 @@ msgid "" "} PyAsyncMethods;" msgstr "" -#: c-api/typeobj.rst:2631 +#: c-api/typeobj.rst:2896 msgid "PyObject *am_await(PyObject *self);" msgstr "" -#: c-api/typeobj.rst:2633 +#: c-api/typeobj.rst:2898 msgid "" "The returned object must be an :term:`iterator`, i.e. :c:func:`PyIter_Check` " "must return ``1`` for it." msgstr "" -#: c-api/typeobj.rst:2636 +#: c-api/typeobj.rst:2901 msgid "" "This slot may be set to ``NULL`` if an object is not an :term:`awaitable`." msgstr "" -#: c-api/typeobj.rst:2642 +#: c-api/typeobj.rst:2907 msgid "PyObject *am_aiter(PyObject *self);" msgstr "" -#: c-api/typeobj.rst:2644 +#: c-api/typeobj.rst:2909 msgid "" "Must return an :term:`asynchronous iterator` object. See :meth:`~object." "__anext__` for details." msgstr "" -#: c-api/typeobj.rst:2647 +#: c-api/typeobj.rst:2912 msgid "" "This slot may be set to ``NULL`` if an object does not implement " "asynchronous iteration protocol." msgstr "" -#: c-api/typeobj.rst:2654 +#: c-api/typeobj.rst:2919 msgid "PyObject *am_anext(PyObject *self);" msgstr "" -#: c-api/typeobj.rst:2656 +#: c-api/typeobj.rst:2921 msgid "" "Must return an :term:`awaitable` object. See :meth:`~object.__anext__` for " "details. This slot may be set to ``NULL``." msgstr "" -#: c-api/typeobj.rst:2664 +#: c-api/typeobj.rst:2929 msgid "PySendResult am_send(PyObject *self, PyObject *arg, PyObject **result);" msgstr "" -#: c-api/typeobj.rst:2666 +#: c-api/typeobj.rst:2931 msgid "" "See :c:func:`PyIter_Send` for details. This slot may be set to ``NULL``." msgstr "" -#: c-api/typeobj.rst:2675 +#: c-api/typeobj.rst:2940 msgid "Slot Type typedefs" msgstr "" -#: c-api/typeobj.rst:2679 +#: c-api/typeobj.rst:2944 msgid "" "The purpose of this function is to separate memory allocation from memory " "initialization. It should return a pointer to a block of memory of adequate " @@ -3828,80 +4225,80 @@ msgid "" "length of the block should be :c:member:`~PyTypeObject.tp_basicsize`." msgstr "" -#: c-api/typeobj.rst:2689 +#: c-api/typeobj.rst:2954 msgid "" "This function should not do any other instance initialization, not even to " "allocate additional memory; that should be done by :c:member:`~PyTypeObject." "tp_new`." msgstr "" -#: c-api/typeobj.rst:2696 +#: c-api/typeobj.rst:2961 msgid "See :c:member:`~PyTypeObject.tp_free`." msgstr "" -#: c-api/typeobj.rst:2700 +#: c-api/typeobj.rst:2965 msgid "See :c:member:`~PyTypeObject.tp_new`." msgstr "" -#: c-api/typeobj.rst:2704 +#: c-api/typeobj.rst:2969 msgid "See :c:member:`~PyTypeObject.tp_init`." msgstr "" -#: c-api/typeobj.rst:2708 +#: c-api/typeobj.rst:2973 msgid "See :c:member:`~PyTypeObject.tp_repr`." msgstr "" -#: c-api/typeobj.rst:2721 +#: c-api/typeobj.rst:2986 msgid "Return the value of the named attribute for the object." msgstr "" -#: c-api/typeobj.rst:2727 +#: c-api/typeobj.rst:2992 msgid "" "Set the value of the named attribute for the object. The value argument is " "set to ``NULL`` to delete the attribute." msgstr "" -#: c-api/typeobj.rst:2723 +#: c-api/typeobj.rst:2988 msgid "See :c:member:`~PyTypeObject.tp_getattro`." msgstr "" -#: c-api/typeobj.rst:2730 +#: c-api/typeobj.rst:2995 msgid "See :c:member:`~PyTypeObject.tp_setattro`." msgstr "" -#: c-api/typeobj.rst:2734 +#: c-api/typeobj.rst:2999 msgid "See :c:member:`~PyTypeObject.tp_descr_get`." msgstr "" -#: c-api/typeobj.rst:2738 +#: c-api/typeobj.rst:3003 msgid "See :c:member:`~PyTypeObject.tp_descr_set`." msgstr "" -#: c-api/typeobj.rst:2742 +#: c-api/typeobj.rst:3007 msgid "See :c:member:`~PyTypeObject.tp_hash`." msgstr "" -#: c-api/typeobj.rst:2746 +#: c-api/typeobj.rst:3011 msgid "See :c:member:`~PyTypeObject.tp_richcompare`." msgstr "" -#: c-api/typeobj.rst:2750 +#: c-api/typeobj.rst:3015 msgid "See :c:member:`~PyTypeObject.tp_iter`." msgstr "" -#: c-api/typeobj.rst:2754 +#: c-api/typeobj.rst:3019 msgid "See :c:member:`~PyTypeObject.tp_iternext`." msgstr "" -#: c-api/typeobj.rst:2768 +#: c-api/typeobj.rst:3033 msgid "See :c:member:`~PyAsyncMethods.am_send`." msgstr "" -#: c-api/typeobj.rst:2784 +#: c-api/typeobj.rst:3049 msgid "Examples" msgstr "" -#: c-api/typeobj.rst:2786 +#: c-api/typeobj.rst:3051 msgid "" "The following are simple examples of Python type definitions. They include " "common usage you may encounter. Some demonstrate tricky corner cases. For " @@ -3909,11 +4306,11 @@ msgid "" "and :ref:`new-types-topics`." msgstr "" -#: c-api/typeobj.rst:2791 +#: c-api/typeobj.rst:3056 msgid "A basic :ref:`static type `::" msgstr "" -#: c-api/typeobj.rst:2793 +#: c-api/typeobj.rst:3058 msgid "" "typedef struct {\n" " PyObject_HEAD\n" @@ -3931,13 +4328,13 @@ msgid "" "};" msgstr "" -#: c-api/typeobj.rst:2808 +#: c-api/typeobj.rst:3073 msgid "" "You may also find older code (especially in the CPython code base) with a " "more verbose initializer::" msgstr "" -#: c-api/typeobj.rst:2811 +#: c-api/typeobj.rst:3076 msgid "" "static PyTypeObject MyObject_Type = {\n" " PyVarObject_HEAD_INIT(NULL, 0)\n" @@ -3981,11 +4378,11 @@ msgid "" "};" msgstr "" -#: c-api/typeobj.rst:2852 +#: c-api/typeobj.rst:3117 msgid "A type that supports weakrefs, instance dicts, and hashing::" msgstr "" -#: c-api/typeobj.rst:2854 +#: c-api/typeobj.rst:3119 msgid "" "typedef struct {\n" " PyObject_HEAD\n" @@ -4011,14 +4408,14 @@ msgid "" "};" msgstr "" -#: c-api/typeobj.rst:2877 +#: c-api/typeobj.rst:3142 msgid "" "A str subclass that cannot be subclassed and cannot be called to create " "instances (e.g. uses a separate factory func) using :c:macro:" "`Py_TPFLAGS_DISALLOW_INSTANTIATION` flag::" msgstr "" -#: c-api/typeobj.rst:2881 +#: c-api/typeobj.rst:3146 msgid "" "typedef struct {\n" " PyUnicodeObject raw;\n" @@ -4036,12 +4433,12 @@ msgid "" "};" msgstr "" -#: c-api/typeobj.rst:2896 +#: c-api/typeobj.rst:3161 msgid "" "The simplest :ref:`static type ` with fixed-length instances::" msgstr "" -#: c-api/typeobj.rst:2898 +#: c-api/typeobj.rst:3163 msgid "" "typedef struct {\n" " PyObject_HEAD\n" @@ -4053,13 +4450,13 @@ msgid "" "};" msgstr "" -#: c-api/typeobj.rst:2907 +#: c-api/typeobj.rst:3172 msgid "" "The simplest :ref:`static type ` with variable-length " "instances::" msgstr "" -#: c-api/typeobj.rst:2909 +#: c-api/typeobj.rst:3174 msgid "" "typedef struct {\n" " PyObject_VAR_HEAD\n" @@ -4074,14 +4471,14 @@ msgid "" "};" msgstr "" -#: c-api/typeobj.rst:912 +#: c-api/typeobj.rst:978 msgid "built-in function" msgstr "" -#: c-api/typeobj.rst:847 +#: c-api/typeobj.rst:913 msgid "repr" msgstr "" -#: c-api/typeobj.rst:912 +#: c-api/typeobj.rst:978 msgid "hash" msgstr "" diff --git a/c-api/unicode.po b/c-api/unicode.po index c0b64efc..afd2dde3 100644 --- a/c-api/unicode.po +++ b/c-api/unicode.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -1782,30 +1782,26 @@ msgid "" "c:macro:`!CP_ACP` code page to get the MBCS encoder." msgstr "" -#: c-api/unicode.rst:1465 -msgid "Methods & Slots" -msgstr "" - -#: c-api/unicode.rst:1471 +#: c-api/unicode.rst:1467 msgid "Methods and Slot Functions" msgstr "" -#: c-api/unicode.rst:1473 +#: c-api/unicode.rst:1469 msgid "" "The following APIs are capable of handling Unicode objects and strings on " "input (we refer to them as strings in the descriptions) and return Unicode " "objects or integers as appropriate." msgstr "" -#: c-api/unicode.rst:1477 +#: c-api/unicode.rst:1473 msgid "They all return ``NULL`` or ``-1`` if an exception occurs." msgstr "" -#: c-api/unicode.rst:1482 +#: c-api/unicode.rst:1478 msgid "Concat two strings giving a new Unicode string." msgstr "" -#: c-api/unicode.rst:1487 +#: c-api/unicode.rst:1483 msgid "" "Split a string giving a list of Unicode strings. If *sep* is ``NULL``, " "splitting will be done at all whitespace substrings. Otherwise, splits " @@ -1814,32 +1810,32 @@ msgid "" "list." msgstr "" -#: c-api/unicode.rst:1502 c-api/unicode.rst:1536 +#: c-api/unicode.rst:1498 c-api/unicode.rst:1532 msgid "On error, return ``NULL`` with an exception set." msgstr "" -#: c-api/unicode.rst:1494 +#: c-api/unicode.rst:1490 msgid "Equivalent to :py:meth:`str.split`." msgstr "" -#: c-api/unicode.rst:1499 +#: c-api/unicode.rst:1495 msgid "" "Similar to :c:func:`PyUnicode_Split`, but splitting will be done beginning " "at the end of the string." msgstr "" -#: c-api/unicode.rst:1504 +#: c-api/unicode.rst:1500 msgid "Equivalent to :py:meth:`str.rsplit`." msgstr "" -#: c-api/unicode.rst:1509 +#: c-api/unicode.rst:1505 msgid "" "Split a Unicode string at line breaks, returning a list of Unicode strings. " "CRLF is considered to be one line break. If *keepends* is ``0``, the Line " "break characters are not included in the resulting strings." msgstr "" -#: c-api/unicode.rst:1516 +#: c-api/unicode.rst:1512 msgid "" "Split a Unicode string at the first occurrence of *sep*, and return a 3-" "tuple containing the part before the separator, the separator itself, and " @@ -1847,39 +1843,39 @@ msgid "" "tuple containing the string itself, followed by two empty strings." msgstr "" -#: c-api/unicode.rst:1534 +#: c-api/unicode.rst:1530 msgid "*sep* must not be empty." msgstr "" -#: c-api/unicode.rst:1525 +#: c-api/unicode.rst:1521 msgid "Equivalent to :py:meth:`str.partition`." msgstr "" -#: c-api/unicode.rst:1530 +#: c-api/unicode.rst:1526 msgid "" "Similar to :c:func:`PyUnicode_Partition`, but split a Unicode string at the " "last occurrence of *sep*. If the separator is not found, return a 3-tuple " "containing two empty strings, followed by the string itself." msgstr "" -#: c-api/unicode.rst:1538 +#: c-api/unicode.rst:1534 msgid "Equivalent to :py:meth:`str.rpartition`." msgstr "" -#: c-api/unicode.rst:1543 +#: c-api/unicode.rst:1539 msgid "" "Join a sequence of strings using the given *separator* and return the " "resulting Unicode string." msgstr "" -#: c-api/unicode.rst:1550 +#: c-api/unicode.rst:1546 msgid "" "Return ``1`` if *substr* matches ``unicode[start:end]`` at the given tail " "end (*direction* == ``-1`` means to do a prefix match, *direction* == ``1`` " "a suffix match), ``0`` otherwise. Return ``-1`` if an error occurred." msgstr "" -#: c-api/unicode.rst:1558 +#: c-api/unicode.rst:1554 msgid "" "Return the first position of *substr* in ``unicode[start:end]`` using the " "given *direction* (*direction* == ``1`` means to do a forward search, " @@ -1888,7 +1884,7 @@ msgid "" "``-2`` indicates that an error occurred and an exception has been set." msgstr "" -#: c-api/unicode.rst:1568 +#: c-api/unicode.rst:1564 msgid "" "Return the first position of the character *ch* in ``unicode[start:end]`` " "using the given *direction* (*direction* == ``1`` means to do a forward " @@ -1898,73 +1894,73 @@ msgid "" "set." msgstr "" -#: c-api/unicode.rst:1576 +#: c-api/unicode.rst:1572 msgid "" "*start* and *end* are now adjusted to behave like ``unicode[start:end]``." msgstr "" -#: c-api/unicode.rst:1583 +#: c-api/unicode.rst:1579 msgid "" "Return the number of non-overlapping occurrences of *substr* in " "``unicode[start:end]``. Return ``-1`` if an error occurred." msgstr "" -#: c-api/unicode.rst:1590 +#: c-api/unicode.rst:1586 msgid "" "Replace at most *maxcount* occurrences of *substr* in *unicode* with " "*replstr* and return the resulting Unicode object. *maxcount* == ``-1`` " "means replace all occurrences." msgstr "" -#: c-api/unicode.rst:1597 +#: c-api/unicode.rst:1593 msgid "" "Compare two strings and return ``-1``, ``0``, ``1`` for less than, equal, " "and greater than, respectively." msgstr "" -#: c-api/unicode.rst:1600 +#: c-api/unicode.rst:1596 msgid "" "This function returns ``-1`` upon failure, so one should call :c:func:" "`PyErr_Occurred` to check for errors." msgstr "" -#: c-api/unicode.rst:1605 +#: c-api/unicode.rst:1601 msgid "The :c:func:`PyUnicode_Equal` function." msgstr "" -#: c-api/unicode.rst:1610 +#: c-api/unicode.rst:1606 msgid "Test if two strings are equal:" msgstr "" -#: c-api/unicode.rst:1612 +#: c-api/unicode.rst:1608 msgid "Return ``1`` if *a* is equal to *b*." msgstr "" -#: c-api/unicode.rst:1613 +#: c-api/unicode.rst:1609 msgid "Return ``0`` if *a* is not equal to *b*." msgstr "" -#: c-api/unicode.rst:1614 +#: c-api/unicode.rst:1610 msgid "" "Set a :exc:`TypeError` exception and return ``-1`` if *a* or *b* is not a :" "class:`str` object." msgstr "" -#: c-api/unicode.rst:1617 +#: c-api/unicode.rst:1613 msgid "The function always succeeds if *a* and *b* are :class:`str` objects." msgstr "" -#: c-api/unicode.rst:1619 +#: c-api/unicode.rst:1615 msgid "" "The function works for :class:`str` subclasses, but does not honor custom " "``__eq__()`` method." msgstr "" -#: c-api/unicode.rst:1624 +#: c-api/unicode.rst:1620 msgid "The :c:func:`PyUnicode_Compare` function." msgstr "" -#: c-api/unicode.rst:1631 +#: c-api/unicode.rst:1627 msgid "" "Compare a Unicode object with a char buffer which is interpreted as being " "UTF-8 or ASCII encoded and return true (``1``) if they are equal, or false " @@ -1973,18 +1969,18 @@ msgid "" "is returned." msgstr "" -#: c-api/unicode.rst:1659 +#: c-api/unicode.rst:1655 msgid "This function does not raise exceptions." msgstr "" -#: c-api/unicode.rst:1645 +#: c-api/unicode.rst:1641 msgid "" "Similar to :c:func:`PyUnicode_EqualToUTF8AndSize`, but compute *string* " "length using :c:func:`!strlen`. If the Unicode object contains null " "characters, false (``0``) is returned." msgstr "" -#: c-api/unicode.rst:1654 +#: c-api/unicode.rst:1650 msgid "" "Compare a Unicode object, *unicode*, with *string* and return ``-1``, ``0``, " "``1`` for less than, equal, and greater than, respectively. It is best to " @@ -1992,47 +1988,47 @@ msgid "" "string as ISO-8859-1 if it contains non-ASCII characters." msgstr "" -#: c-api/unicode.rst:1664 +#: c-api/unicode.rst:1660 msgid "Rich compare two Unicode strings and return one of the following:" msgstr "" -#: c-api/unicode.rst:1666 +#: c-api/unicode.rst:1662 msgid "``NULL`` in case an exception was raised" msgstr "" -#: c-api/unicode.rst:1667 +#: c-api/unicode.rst:1663 msgid ":c:data:`Py_True` or :c:data:`Py_False` for successful comparisons" msgstr "" -#: c-api/unicode.rst:1668 +#: c-api/unicode.rst:1664 msgid ":c:data:`Py_NotImplemented` in case the type combination is unknown" msgstr "" -#: c-api/unicode.rst:1670 +#: c-api/unicode.rst:1666 msgid "" "Possible values for *op* are :c:macro:`Py_GT`, :c:macro:`Py_GE`, :c:macro:" "`Py_EQ`, :c:macro:`Py_NE`, :c:macro:`Py_LT`, and :c:macro:`Py_LE`." msgstr "" -#: c-api/unicode.rst:1676 +#: c-api/unicode.rst:1672 msgid "" "Return a new string object from *format* and *args*; this is analogous to " "``format % args``." msgstr "" -#: c-api/unicode.rst:1682 +#: c-api/unicode.rst:1678 msgid "" "Check whether *substr* is contained in *unicode* and return true or false " "accordingly." msgstr "" -#: c-api/unicode.rst:1685 +#: c-api/unicode.rst:1681 msgid "" "*substr* has to coerce to a one element Unicode string. ``-1`` is returned " "if there was an error." msgstr "" -#: c-api/unicode.rst:1691 +#: c-api/unicode.rst:1687 msgid "" "Intern the argument :c:expr:`*p_unicode` in place. The argument must be the " "address of a pointer variable pointing to a Python Unicode string object. " @@ -2043,7 +2039,7 @@ msgid "" "interns it." msgstr "" -#: c-api/unicode.rst:1698 +#: c-api/unicode.rst:1694 msgid "" "(Clarification: even though there is a lot of talk about references, think " "of this function as reference-neutral. You must own the object you pass in; " @@ -2051,39 +2047,39 @@ msgid "" "the result.)" msgstr "" -#: c-api/unicode.rst:1703 +#: c-api/unicode.rst:1699 msgid "" "This function never raises an exception. On error, it leaves its argument " "unchanged without interning it." msgstr "" -#: c-api/unicode.rst:1706 +#: c-api/unicode.rst:1702 msgid "" "Instances of subclasses of :py:class:`str` may not be interned, that is, :c:" "expr:`PyUnicode_CheckExact(*p_unicode)` must be true. If it is not, then -- " "as with any other error -- the argument is left unchanged." msgstr "" -#: c-api/unicode.rst:1710 +#: c-api/unicode.rst:1706 msgid "" "Note that interned strings are not “immortal”. You must keep a reference to " "the result to benefit from interning." msgstr "" -#: c-api/unicode.rst:1716 +#: c-api/unicode.rst:1712 msgid "" "A combination of :c:func:`PyUnicode_FromString` and :c:func:" "`PyUnicode_InternInPlace`, meant for statically allocated strings." msgstr "" -#: c-api/unicode.rst:1719 +#: c-api/unicode.rst:1715 msgid "" "Return a new (\"owned\") reference to either a new Unicode string object " "that has been interned, or an earlier interned string object with the same " "value." msgstr "" -#: c-api/unicode.rst:1723 +#: c-api/unicode.rst:1719 msgid "" "Python may keep a reference to the result, or make it :term:`immortal`, " "preventing it from being garbage-collected promptly. For interning an " @@ -2092,18 +2088,14 @@ msgid "" "`PyUnicode_InternInPlace` directly." msgstr "" -#: c-api/unicode.rst:1731 -msgid "Strings interned this way are made :term:`immortal`." -msgstr "" - -#: c-api/unicode.rst:1736 +#: c-api/unicode.rst:1728 msgid "" "Return a non-zero value if *str* is interned, zero if not. The *str* " "argument must be a string; this is not checked. This function always " "succeeds." msgstr "" -#: c-api/unicode.rst:1742 +#: c-api/unicode.rst:1734 msgid "" "A non-zero return value may carry additional information about *how* the " "string is interned. The meaning of such non-zero values, as well as each " @@ -2111,198 +2103,208 @@ msgid "" "versions." msgstr "" -#: c-api/unicode.rst:1749 +#: c-api/unicode.rst:1741 msgid "PyUnicodeWriter" msgstr "" -#: c-api/unicode.rst:1751 +#: c-api/unicode.rst:1743 msgid "" "The :c:type:`PyUnicodeWriter` API can be used to create a Python :class:" "`str` object." msgstr "" -#: c-api/unicode.rst:1758 +#: c-api/unicode.rst:1750 msgid "A Unicode writer instance." msgstr "" -#: c-api/unicode.rst:1760 +#: c-api/unicode.rst:1752 msgid "" "The instance must be destroyed by :c:func:`PyUnicodeWriter_Finish` on " "success, or :c:func:`PyUnicodeWriter_Discard` on error." msgstr "" -#: c-api/unicode.rst:1765 +#: c-api/unicode.rst:1757 msgid "Create a Unicode writer instance." msgstr "" -#: c-api/unicode.rst:1767 +#: c-api/unicode.rst:1759 msgid "*length* must be greater than or equal to ``0``." msgstr "" -#: c-api/unicode.rst:1769 +#: c-api/unicode.rst:1761 msgid "" "If *length* is greater than ``0``, preallocate an internal buffer of " "*length* characters." msgstr "" -#: c-api/unicode.rst:1778 +#: c-api/unicode.rst:1770 msgid "Set an exception and return ``NULL`` on error." msgstr "" -#: c-api/unicode.rst:1776 +#: c-api/unicode.rst:1768 msgid "" "Return the final Python :class:`str` object and destroy the writer instance." msgstr "" -#: c-api/unicode.rst:1788 +#: c-api/unicode.rst:1780 msgid "The writer instance is invalid after this call." msgstr "" -#: c-api/unicode.rst:1784 +#: c-api/unicode.rst:1776 msgid "Discard the internal Unicode buffer and destroy the writer instance." msgstr "" -#: c-api/unicode.rst:1786 +#: c-api/unicode.rst:1778 msgid "If *writer* is ``NULL``, no operation is performed." msgstr "" -#: c-api/unicode.rst:1792 +#: c-api/unicode.rst:1784 msgid "Write the single Unicode character *ch* into *writer*." msgstr "" -#: c-api/unicode.rst:1804 c-api/unicode.rst:1825 c-api/unicode.rst:1839 -#: c-api/unicode.rst:1857 c-api/unicode.rst:1876 +#: c-api/unicode.rst:1796 c-api/unicode.rst:1823 c-api/unicode.rst:1839 +#: c-api/unicode.rst:1857 c-api/unicode.rst:1883 msgid "" "On success, return ``0``. On error, set an exception, leave the writer " "unchanged, and return ``-1``." msgstr "" -#: c-api/unicode.rst:1799 +#: c-api/unicode.rst:1791 msgid "" "Decode the string *str* from UTF-8 in strict mode and write the output into " "*writer*." msgstr "" -#: c-api/unicode.rst:1865 +#: c-api/unicode.rst:1805 c-api/unicode.rst:1872 msgid "" "*size* is the string length in bytes. If *size* is equal to ``-1``, call " "``strlen(str)`` to get the string length." msgstr "" -#: c-api/unicode.rst:1807 +#: c-api/unicode.rst:1799 msgid "See also :c:func:`PyUnicodeWriter_DecodeUTF8Stateful`." msgstr "" -#: c-api/unicode.rst:1811 -msgid "Writer the wide string *str* into *writer*." +#: c-api/unicode.rst:1803 +msgid "Write the ASCII string *str* into *writer*." msgstr "" -#: c-api/unicode.rst:1813 +#: c-api/unicode.rst:1808 +msgid "" +"*str* must only contain ASCII characters. The behavior is undefined if *str* " +"contains non-ASCII characters." +msgstr "" + +#: c-api/unicode.rst:1818 +msgid "Write the wide string *str* into *writer*." +msgstr "" + +#: c-api/unicode.rst:1820 msgid "" "*size* is a number of wide characters. If *size* is equal to ``-1``, call " "``wcslen(str)`` to get the string length." msgstr "" -#: c-api/unicode.rst:1821 +#: c-api/unicode.rst:1828 msgid "Writer the UCS4 string *str* into *writer*." msgstr "" -#: c-api/unicode.rst:1823 +#: c-api/unicode.rst:1830 msgid "*size* is a number of UCS4 characters." msgstr "" -#: c-api/unicode.rst:1830 +#: c-api/unicode.rst:1837 msgid "" "Call :c:func:`PyObject_Str` on *obj* and write the output into *writer*." msgstr "" -#: c-api/unicode.rst:1837 +#: c-api/unicode.rst:1844 msgid "" "Call :c:func:`PyObject_Repr` on *obj* and write the output into *writer*." msgstr "" -#: c-api/unicode.rst:1844 +#: c-api/unicode.rst:1851 msgid "Write the substring ``str[start:end]`` into *writer*." msgstr "" -#: c-api/unicode.rst:1846 +#: c-api/unicode.rst:1853 msgid "" "*str* must be Python :class:`str` object. *start* must be greater than or " "equal to 0, and less than or equal to *end*. *end* must be less than or " "equal to *str* length." msgstr "" -#: c-api/unicode.rst:1855 +#: c-api/unicode.rst:1862 msgid "" "Similar to :c:func:`PyUnicode_FromFormat`, but write the output directly " "into *writer*." msgstr "" -#: c-api/unicode.rst:1862 +#: c-api/unicode.rst:1869 msgid "" "Decode the string *str* from UTF-8 with *errors* error handler and write the " "output into *writer*." msgstr "" -#: c-api/unicode.rst:1868 +#: c-api/unicode.rst:1875 msgid "" "*errors* is an :ref:`error handler ` name, such as " "``\"replace\"``. If *errors* is ``NULL``, use the strict error handler." msgstr "" -#: c-api/unicode.rst:1871 +#: c-api/unicode.rst:1878 msgid "" "If *consumed* is not ``NULL``, set *\\*consumed* to the number of decoded " "bytes on success. If *consumed* is ``NULL``, treat trailing incomplete UTF-8 " "byte sequences as an error." msgstr "" -#: c-api/unicode.rst:1879 +#: c-api/unicode.rst:1886 msgid "See also :c:func:`PyUnicodeWriter_WriteUTF8`." msgstr "" -#: c-api/unicode.rst:1882 +#: c-api/unicode.rst:1889 msgid "Deprecated API" msgstr "" -#: c-api/unicode.rst:1884 +#: c-api/unicode.rst:1891 msgid "The following API is deprecated." msgstr "" -#: c-api/unicode.rst:1888 +#: c-api/unicode.rst:1895 msgid "" "This is a typedef of :c:type:`wchar_t`, which is a 16-bit type or 32-bit " "type depending on the platform. Please use :c:type:`wchar_t` directly " "instead." msgstr "" -#: c-api/unicode.rst:1892 +#: c-api/unicode.rst:1899 msgid "" "In previous versions, this was a 16-bit type or a 32-bit type depending on " "whether you selected a \"narrow\" or \"wide\" Unicode version of Python at " "build time." msgstr "" -#: c-api/unicode.rst:1902 +#: c-api/unicode.rst:1909 msgid "" "Do nothing and return ``0``. This API is kept only for backward " "compatibility, but there are no plans to remove it." msgstr "" -#: c-api/unicode.rst:1908 +#: c-api/unicode.rst:1915 msgid "" "This API does nothing since Python 3.12. Previously, this needed to be " "called for each string created using the old API (:c:func:`!" "PyUnicode_FromUnicode` or similar)." msgstr "" -#: c-api/unicode.rst:1916 +#: c-api/unicode.rst:1923 msgid "" "Do nothing and return ``1``. This API is kept only for backward " "compatibility, but there are no plans to remove it." msgstr "" -#: c-api/unicode.rst:1922 +#: c-api/unicode.rst:1929 msgid "" "This API does nothing since Python 3.12. Previously, this could be called to " "check if :c:func:`PyUnicode_READY` is necessary." diff --git a/c-api/utilities.po b/c-api/utilities.po index c48c6d4a..429a654a 100644 --- a/c-api/utilities.po +++ b/c-api/utilities.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/veryhigh.po b/c-api/veryhigh.po index 9fba02f3..7d48d522 100644 --- a/c-api/veryhigh.po +++ b/c-api/veryhigh.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/weakref.po b/c-api/weakref.po index c1544ed8..a886ebd3 100644 --- a/c-api/weakref.po +++ b/c-api/weakref.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/contents.po b/contents.po index d0788779..1fce9052 100644 --- a/contents.po +++ b/contents.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2024-04-24 22:37+0300\n" "Last-Translator: Panagiotis Skias \n" "Language-Team: PyGreece \n" diff --git a/copyright.po b/copyright.po index de38563d..70f78b59 100644 --- a/copyright.po +++ b/copyright.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2024-04-24 22:33+0300\n" "Last-Translator: Panagiotis Skias \n" "Language-Team: PyGreece \n" @@ -27,11 +27,8 @@ msgid "Python and this documentation is:" msgstr "Η Python και αυτή η τεκμηρίωση είναι:" #: copyright.rst:7 -#, fuzzy msgid "Copyright © 2001 Python Software Foundation. All rights reserved." -msgstr "" -"Copyright © 2001-2023 Python Software Foundation. Όλα τα δικαιώματα " -"διατηρούνται." +msgstr "Copyright © 2001 Python Software Foundation. All rights reserved." #: copyright.rst:9 msgid "Copyright © 2000 BeOpen.com. All rights reserved." diff --git a/cpython b/cpython index 99ca086f..250bb7ff 160000 --- a/cpython +++ b/cpython @@ -1 +1 @@ -Subproject commit 99ca086f9120f402e1147b473cee987a40437b96 +Subproject commit 250bb7fffd0b7270064505a3acaa025a268985ce diff --git a/deprecations/c-api-pending-removal-in-3.14.po b/deprecations/c-api-pending-removal-in-3.14.po index 6e667f81..3699b994 100644 --- a/deprecations/c-api-pending-removal-in-3.14.po +++ b/deprecations/c-api-pending-removal-in-3.14.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/deprecations/c-api-pending-removal-in-3.15.po b/deprecations/c-api-pending-removal-in-3.15.po index 8168b2be..f8368ac4 100644 --- a/deprecations/c-api-pending-removal-in-3.15.po +++ b/deprecations/c-api-pending-removal-in-3.15.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/deprecations/c-api-pending-removal-in-3.18.po b/deprecations/c-api-pending-removal-in-3.18.po index 80eba5bb..41a81dc6 100644 --- a/deprecations/c-api-pending-removal-in-3.18.po +++ b/deprecations/c-api-pending-removal-in-3.18.po @@ -8,10 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.14\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/deprecations/c-api-pending-removal-in-future.po b/deprecations/c-api-pending-removal-in-future.po index f2f65d89..76f3e83b 100644 --- a/deprecations/c-api-pending-removal-in-future.po +++ b/deprecations/c-api-pending-removal-in-future.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/deprecations/index.po b/deprecations/index.po index 9d97d6e0..f07bf655 100644 --- a/deprecations/index.po +++ b/deprecations/index.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -168,27 +168,36 @@ msgstr "" #: deprecations/pending-removal-in-3.15.rst:88 msgid "" +"When using the functional syntax of :class:`~typing.TypedDict`\\s, failing " +"to pass a value to the *fields* parameter (``TD = TypedDict(\"TD\")``) or " +"passing ``None`` (``TD = TypedDict(\"TD\", None)``) has been deprecated " +"since Python 3.13. Use ``class TD(TypedDict): pass`` or ``TD = " +"TypedDict(\"TD\", {})`` to create a TypedDict with zero field." +msgstr "" + +#: deprecations/pending-removal-in-3.15.rst:95 +msgid "" "The :func:`typing.no_type_check_decorator` decorator function has been " "deprecated since Python 3.13. After eight years in the :mod:`typing` module, " "it has yet to be supported by any major type checker." msgstr "" -#: deprecations/pending-removal-in-3.15.rst:93 +#: deprecations/pending-removal-in-3.15.rst:100 msgid ":mod:`wave`:" msgstr "" -#: deprecations/pending-removal-in-3.15.rst:95 +#: deprecations/pending-removal-in-3.15.rst:102 msgid "" "The :meth:`~wave.Wave_read.getmark`, :meth:`!setmark`, and :meth:`~wave." "Wave_read.getmarkers` methods of the :class:`~wave.Wave_read` and :class:" "`~wave.Wave_write` classes have been deprecated since Python 3.13." msgstr "" -#: deprecations/pending-removal-in-3.15.rst:100 +#: deprecations/pending-removal-in-3.15.rst:107 msgid ":mod:`zipimport`:" msgstr "" -#: deprecations/pending-removal-in-3.15.rst:102 +#: deprecations/pending-removal-in-3.15.rst:109 msgid "" ":meth:`~zipimport.zipimporter.load_module` has been deprecated since Python " "3.10. Use :meth:`~zipimport.zipimporter.exec_module` instead. (Contributed " diff --git a/deprecations/pending-removal-in-3.13.po b/deprecations/pending-removal-in-3.13.po index 19a43896..9a750879 100644 --- a/deprecations/pending-removal-in-3.13.po +++ b/deprecations/pending-removal-in-3.13.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/deprecations/pending-removal-in-3.14.po b/deprecations/pending-removal-in-3.14.po index d6dc512f..4a33d8db 100644 --- a/deprecations/pending-removal-in-3.14.po +++ b/deprecations/pending-removal-in-3.14.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/deprecations/pending-removal-in-3.15.po b/deprecations/pending-removal-in-3.15.po index 7b004e25..8c08319f 100644 --- a/deprecations/pending-removal-in-3.15.po +++ b/deprecations/pending-removal-in-3.15.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -158,27 +158,36 @@ msgstr "" #: deprecations/pending-removal-in-3.15.rst:88 msgid "" +"When using the functional syntax of :class:`~typing.TypedDict`\\s, failing " +"to pass a value to the *fields* parameter (``TD = TypedDict(\"TD\")``) or " +"passing ``None`` (``TD = TypedDict(\"TD\", None)``) has been deprecated " +"since Python 3.13. Use ``class TD(TypedDict): pass`` or ``TD = " +"TypedDict(\"TD\", {})`` to create a TypedDict with zero field." +msgstr "" + +#: deprecations/pending-removal-in-3.15.rst:95 +msgid "" "The :func:`typing.no_type_check_decorator` decorator function has been " "deprecated since Python 3.13. After eight years in the :mod:`typing` module, " "it has yet to be supported by any major type checker." msgstr "" -#: deprecations/pending-removal-in-3.15.rst:93 +#: deprecations/pending-removal-in-3.15.rst:100 msgid ":mod:`wave`:" msgstr "" -#: deprecations/pending-removal-in-3.15.rst:95 +#: deprecations/pending-removal-in-3.15.rst:102 msgid "" "The :meth:`~wave.Wave_read.getmark`, :meth:`!setmark`, and :meth:`~wave." "Wave_read.getmarkers` methods of the :class:`~wave.Wave_read` and :class:" "`~wave.Wave_write` classes have been deprecated since Python 3.13." msgstr "" -#: deprecations/pending-removal-in-3.15.rst:100 +#: deprecations/pending-removal-in-3.15.rst:107 msgid ":mod:`zipimport`:" msgstr "" -#: deprecations/pending-removal-in-3.15.rst:102 +#: deprecations/pending-removal-in-3.15.rst:109 msgid "" ":meth:`~zipimport.zipimporter.load_module` has been deprecated since Python " "3.10. Use :meth:`~zipimport.zipimporter.exec_module` instead. (Contributed " diff --git a/deprecations/pending-removal-in-3.16.po b/deprecations/pending-removal-in-3.16.po index 213844be..43085b77 100644 --- a/deprecations/pending-removal-in-3.16.po +++ b/deprecations/pending-removal-in-3.16.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/deprecations/pending-removal-in-3.17.po b/deprecations/pending-removal-in-3.17.po index 5d77ad65..14be65a9 100644 --- a/deprecations/pending-removal-in-3.17.po +++ b/deprecations/pending-removal-in-3.17.po @@ -8,10 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.14\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/deprecations/pending-removal-in-3.19.po b/deprecations/pending-removal-in-3.19.po index 85f6ac6a..5f920483 100644 --- a/deprecations/pending-removal-in-3.19.po +++ b/deprecations/pending-removal-in-3.19.po @@ -8,10 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.14\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/deprecations/pending-removal-in-future.po b/deprecations/pending-removal-in-future.po index 9b2f45fe..867770e4 100644 --- a/deprecations/pending-removal-in-future.po +++ b/deprecations/pending-removal-in-future.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/dictionaries/main.txt b/dictionaries/main.txt index 3e136e7d..409094c3 100644 --- a/dictionaries/main.txt +++ b/dictionaries/main.txt @@ -37,6 +37,7 @@ Centrum Changelog Cheese Classes +Clause Cleese Cocoa Command @@ -133,6 +134,7 @@ Laboratories Letter License Licensee +Lin Linux Lisp Literals @@ -149,6 +151,7 @@ Ltd Lu Lundh M +Ma Mac Macintosh Mailbox @@ -269,6 +272,7 @@ Tutorial Twisted U Ulf +Unbounded Unices Union United @@ -281,6 +285,7 @@ Windows Yes Zen Zope +Zstandard a abc abcdef @@ -489,6 +494,7 @@ crt cubes currency current +cut d data date @@ -546,6 +552,7 @@ documentation does doesn done +dot dots dotted doubles @@ -1430,6 +1437,7 @@ zlib αρχείο αρχειοθετημένη αρχικοποιήθηκε +αρχικοποιηθούν αρχικοποιημένες αρχικοποιημένο αρχικοποιητή @@ -1493,6 +1501,7 @@ zlib επικαλεί επικαλυπτόμενες επικαλυπτόμενων +επιστρεφόμενης επιστρεφόμενος εσωκλειόμενη εσωκλειόμενων @@ -1548,6 +1557,7 @@ zlib μπορούν να νεοδεσμευμένο +νηματοποποίησης ο οδηγίες οδηγό @@ -1574,6 +1584,7 @@ zlib παραμετροποιημένη παραμετροποιημένο παραμετροποιούν +παύλων πεζογράμμιση περιέκτης περιέχει diff --git a/distributing/index.po b/distributing/index.po index d6247fb7..8bde0585 100644 --- a/distributing/index.po +++ b/distributing/index.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2024-11-25 20:18+0000\n" "Last-Translator: Artemis Leonardou \n" "Language-Team: PyGreece \n" diff --git a/extending/building.po b/extending/building.po index 1f5845d1..9b64153d 100644 --- a/extending/building.po +++ b/extending/building.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" -"PO-Revision-Date: 2025-05-21 21:57+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" +"PO-Revision-Date: 2025-06-19 17:57+0300\n" "Last-Translator: ALEXANDROS TZIORAS alextzioras23@gmail.com\n" "Language-Team: Language-Team: PyGreece \n" "Language: \n" @@ -23,100 +23,117 @@ msgstr "Κατασκευή Επεκτάσεων C και C++" #: extending/building.rst:9 msgid "" -"A C extension for CPython is a shared library (e.g. a ``.so`` file on Linux, " -"``.pyd`` on Windows), which exports an *initialization function*." +"A C extension for CPython is a shared library (for example, a ``.so`` file " +"on Linux, ``.pyd`` on Windows), which exports an *initialization function*." msgstr "" "Μια επέκταση C για τη CPython είναι μια κοινόχρηστη βιβλιοθήκη (π.χ. ένα " -"αρχείο ``.so`` στο Linux, ή ``.pyd`` στα Windows), η οποία εξάγει μια " +"αρχείο ``.so`` στο Linux, ``.pyd`` στα Windows), η οποία εξάγει μια " "*συνάρτηση αρχικοποίησης*." #: extending/building.rst:12 -msgid "" -"To be importable, the shared library must be available on :envvar:" -"`PYTHONPATH`, and must be named after the module name, with an appropriate " -"extension. When using setuptools, the correct filename is generated " -"automatically." -msgstr "" -"Για να μπορεί να γίνει η εισαγωγή της, η κοινόχρηστη βιβλιοθήκη πρέπει να " -"είναι διαθέσιμη στο :envvar:`PYTHONPATH` και να έχει όνομα ίδιο με αυτό του " -"module, με τη σωστή επέκταση αρχείου. Όταν χρησιμοποιείται το setuptools, το " -"σωστό όνομα αρχείου δημιουργείται αυτόματα." +msgid "See :ref:`extension-modules` for details." +msgstr "Δείτε το :ref:`extension-modules` για περισσότερες λεπτομέρειες." -#: extending/building.rst:16 -msgid "The initialization function has the signature:" -msgstr "Η συνάρτηση αρχικοποίησης έχει την εξής υπογραφή:" +#: extending/building.rst:21 +msgid "Building C and C++ Extensions with setuptools" +msgstr "Κατασκευή Επεκτάσεων C και C++ με το setuptools" -#: extending/building.rst:20 +#: extending/building.rst:24 msgid "" -"It returns either a fully initialized module, or a :c:type:`PyModuleDef` " -"instance. See :ref:`initializing-modules` for details." +"Building, packaging and distributing extension modules is best done with " +"third-party tools, and is out of scope of this document. One suitable tool " +"is Setuptools, whose documentation can be found at https://setuptools.pypa." +"io/en/latest/setuptools.html." msgstr "" -"Επιστρέφει είτε ένα πλήρως αρχικοποιημένο module, είτε ένα στιγμιότυπο :c:" -"type:`PyModuleDef`. Δείτε το :ref:`initializing-modules` για περισσότερες " -"λεπτομέρειες." +"Η κατασκευή, η συσκευασία και η διανομή modules επέκτασης γίνεται καλύτερα " +"με εργαλεία τρίτων και είναι εκτός πεδίου εφαρμογής αυτού του εγγράφου. Ένα " +"κατάλληλο εργαλείο είναι το Setuptools, η τεκμηρίωση του οποίου βρίσκεται " +"στη διεύθυνση https://setuptools.pypa.io/en/latest/setuptools.html." -#: extending/building.rst:25 +#: extending/building.rst:29 msgid "" -"For modules with ASCII-only names, the function must be named " -"``PyInit_``, with ```` replaced by the name of the " -"module. When using :ref:`multi-phase-initialization`, non-ASCII module names " -"are allowed. In this case, the initialization function name is " -"``PyInitU_``, with ```` encoded using Python's " -"*punycode* encoding with hyphens replaced by underscores. In Python::" +"The :mod:`distutils` module, which was included in the standard library " +"until Python 3.12, is now maintained as part of Setuptools." msgstr "" -"Για modules με ονόματα μόνο σε ASCII χαρακτήρες, η συνάρτηση πρέπει να " -"ονομάζεται ``PyInit_``, όπου το ```` αντικαθίσταται " -"με το όνομα του module. Όταν χρησιμοποιείται :ref:`multi-phase-" -"initialization`, επιτρέπονται ονόματα module με μη ASCII χαρακτήρες. Σε αυτή " -"την περίπτωση, η συνάρτηση αρχικοποίησης ονομάζεται " -"``PyInitU_``, με το ```` να κωδικοποιείται με το " -"*punycode* του Python, αντικαθιστώντας τις παύλες με κάτω παύλες. Στην " -"Python::" +"Το module :mod:`distutils`, η οποία περιλαμβανόταν στην τυπική βιβλιοθήκη " +"μέχρι την Python 3.12, διατηρείται πλέον ως μέρος του Setuptools." -#: extending/building.rst:32 -msgid "" -"def initfunc_name(name):\n" -" try:\n" -" suffix = b'_' + name.encode('ascii')\n" -" except UnicodeEncodeError:\n" -" suffix = b'U_' + name.encode('punycode').replace(b'-', b'_')\n" -" return b'PyInit' + suffix" -msgstr "" -"def initfunc_name(name):\n" -" try:\n" -" suffix = b'_' + name.encode('ascii')\n" -" except UnicodeEncodeError:\n" -" suffix = b'U_' + name.encode('punycode').replace(b'-', b'_')\n" -" return b'PyInit' + suffix" +#~ msgid "" +#~ "To be importable, the shared library must be available on :envvar:" +#~ "`PYTHONPATH`, and must be named after the module name, with an " +#~ "appropriate extension. When using setuptools, the correct filename is " +#~ "generated automatically." +#~ msgstr "" +#~ "Για να μπορεί να γίνει η εισαγωγή της, η κοινόχρηστη βιβλιοθήκη πρέπει να " +#~ "είναι διαθέσιμη στο :envvar:`PYTHONPATH` και να έχει όνομα ίδιο με αυτό " +#~ "του module, με τη σωστή επέκταση αρχείου. Όταν χρησιμοποιείται το " +#~ "setuptools, το σωστό όνομα αρχείου δημιουργείται αυτόματα." -#: extending/building.rst:39 -msgid "" -"It is possible to export multiple modules from a single shared library by " -"defining multiple initialization functions. However, importing them requires " -"using symbolic links or a custom importer, because by default only the " -"function corresponding to the filename is found. See the *\"Multiple modules " -"in one library\"* section in :pep:`489` for details." -msgstr "" -"Είναι δυνατόν να εξαχθούν πολλά modules από μία κοινόχρηστη βιβλιοθήκη, " -"ορίζοντας πολλαπλές συναρτήσεις αρχικοποίησης. Ωστόσο, για την εισαγωγή τους " -"απαιτείται η χρήση συμβολικών συνδέσμων ή προσαρμοσμένου import μηχανισμού, " -"καθώς από προεπιλογή βρίσκονται μόνο οι συναρτήσεις που αντιστοιχούν στο " -"όνομα του αρχείου. Δείτε το *\"Multiple modules in one library\"* στο :pep:" -"`489` για λεπτομέρειες." +#~ msgid "The initialization function has the signature:" +#~ msgstr "Η συνάρτηση αρχικοποίησης έχει την εξής υπογραφή:" -#: extending/building.rst:52 -msgid "Building C and C++ Extensions with setuptools" -msgstr "Κατασκευή Επεκτάσεων C και C++ με το setuptools" +#~ msgid "" +#~ "It returns either a fully initialized module, or a :c:type:`PyModuleDef` " +#~ "instance. See :ref:`initializing-modules` for details." +#~ msgstr "" +#~ "Επιστρέφει είτε ένα πλήρως αρχικοποιημένο module, είτε ένα στιγμιότυπο :c:" +#~ "type:`PyModuleDef`. Δείτε το :ref:`initializing-modules` για περισσότερες " +#~ "λεπτομέρειες." -#: extending/building.rst:54 -msgid "" -"Python 3.12 and newer no longer come with distutils. Please refer to the " -"``setuptools`` documentation at https://setuptools.readthedocs.io/en/latest/" -"setuptools.html to learn more about how build and distribute C/C++ " -"extensions with setuptools." -msgstr "" -"Από την έκδοση Python 3.12 και μετά, το distutils δεν περιλαμβάνεται πλέον. " -"Παρακαλούμε ανατρέξτε στην τεκμηρίωση του ``setuptools`` στη διεύθυνση " -"https://setuptools.readthedocs.io/en/latest/setuptools.html για να μάθετε " -"περισσότερα σχετικά με την κατασκευή και διανομή επεκτάσεων C/C++ με το " -"setuptools." +#~ msgid "" +#~ "For modules with ASCII-only names, the function must be named " +#~ "``PyInit_``, with ```` replaced by the name of " +#~ "the module. When using :ref:`multi-phase-initialization`, non-ASCII " +#~ "module names are allowed. In this case, the initialization function name " +#~ "is ``PyInitU_``, with ```` encoded using Python's " +#~ "*punycode* encoding with hyphens replaced by underscores. In Python::" +#~ msgstr "" +#~ "Για modules με ονόματα μόνο σε ASCII χαρακτήρες, η συνάρτηση πρέπει να " +#~ "ονομάζεται ``PyInit_``, όπου το ```` " +#~ "αντικαθίσταται με το όνομα του module. Όταν χρησιμοποιείται :ref:`multi-" +#~ "phase-initialization`, επιτρέπονται ονόματα module με μη ASCII " +#~ "χαρακτήρες. Σε αυτή την περίπτωση, η συνάρτηση αρχικοποίησης ονομάζεται " +#~ "``PyInitU_``, με το ```` να κωδικοποιείται με το " +#~ "*punycode* του Python, αντικαθιστώντας τις παύλες με κάτω παύλες. Στην " +#~ "Python::" + +#~ msgid "" +#~ "def initfunc_name(name):\n" +#~ " try:\n" +#~ " suffix = b'_' + name.encode('ascii')\n" +#~ " except UnicodeEncodeError:\n" +#~ " suffix = b'U_' + name.encode('punycode').replace(b'-', b'_')\n" +#~ " return b'PyInit' + suffix" +#~ msgstr "" +#~ "def initfunc_name(name):\n" +#~ " try:\n" +#~ " suffix = b'_' + name.encode('ascii')\n" +#~ " except UnicodeEncodeError:\n" +#~ " suffix = b'U_' + name.encode('punycode').replace(b'-', b'_')\n" +#~ " return b'PyInit' + suffix" + +#~ msgid "" +#~ "It is possible to export multiple modules from a single shared library by " +#~ "defining multiple initialization functions. However, importing them " +#~ "requires using symbolic links or a custom importer, because by default " +#~ "only the function corresponding to the filename is found. See the " +#~ "*\"Multiple modules in one library\"* section in :pep:`489` for details." +#~ msgstr "" +#~ "Είναι δυνατόν να εξαχθούν πολλά modules από μία κοινόχρηστη βιβλιοθήκη, " +#~ "ορίζοντας πολλαπλές συναρτήσεις αρχικοποίησης. Ωστόσο, για την εισαγωγή " +#~ "τους απαιτείται η χρήση συμβολικών συνδέσμων ή προσαρμοσμένου import " +#~ "μηχανισμού, καθώς από προεπιλογή βρίσκονται μόνο οι συναρτήσεις που " +#~ "αντιστοιχούν στο όνομα του αρχείου. Δείτε το *\"Multiple modules in one " +#~ "library\"* στο :pep:`489` για λεπτομέρειες." + +#~ msgid "" +#~ "Python 3.12 and newer no longer come with distutils. Please refer to the " +#~ "``setuptools`` documentation at https://setuptools.readthedocs.io/en/" +#~ "latest/setuptools.html to learn more about how build and distribute C/C++ " +#~ "extensions with setuptools." +#~ msgstr "" +#~ "Από την έκδοση Python 3.12 και μετά, το distutils δεν περιλαμβάνεται " +#~ "πλέον. Παρακαλούμε ανατρέξτε στην τεκμηρίωση του ``setuptools`` στη " +#~ "διεύθυνση https://setuptools.readthedocs.io/en/latest/setuptools.html για " +#~ "να μάθετε περισσότερα σχετικά με την κατασκευή και διανομή επεκτάσεων C/C+" +#~ "+ με το setuptools." diff --git a/extending/embedding.po b/extending/embedding.po index c50870ab..144e94f0 100644 --- a/extending/embedding.po +++ b/extending/embedding.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -418,60 +418,62 @@ msgid "" " return PyLong_FromLong(numargs);\n" "}\n" "\n" -"static PyMethodDef EmbMethods[] = {\n" +"static PyMethodDef emb_module_methods[] = {\n" " {\"numargs\", emb_numargs, METH_VARARGS,\n" " \"Return the number of arguments received by the process.\"},\n" " {NULL, NULL, 0, NULL}\n" "};\n" "\n" -"static PyModuleDef EmbModule = {\n" -" PyModuleDef_HEAD_INIT, \"emb\", NULL, -1, EmbMethods,\n" -" NULL, NULL, NULL, NULL\n" +"static struct PyModuleDef emb_module = {\n" +" .m_base = PyModuleDef_HEAD_INIT,\n" +" .m_name = \"emb\",\n" +" .m_size = 0,\n" +" .m_methods = emb_module_methods,\n" "};\n" "\n" "static PyObject*\n" "PyInit_emb(void)\n" "{\n" -" return PyModule_Create(&EmbModule);\n" +" return PyModuleDef_Init(&emb_module);\n" "}" msgstr "" -#: extending/embedding.rst:265 +#: extending/embedding.rst:267 msgid "" "Insert the above code just above the :c:func:`main` function. Also, insert " "the following two statements before the call to :c:func:`Py_Initialize`::" msgstr "" -#: extending/embedding.rst:268 +#: extending/embedding.rst:270 msgid "" "numargs = argc;\n" "PyImport_AppendInittab(\"emb\", &PyInit_emb);" msgstr "" -#: extending/embedding.rst:271 +#: extending/embedding.rst:273 msgid "" "These two lines initialize the ``numargs`` variable, and make the :func:`!" "emb.numargs` function accessible to the embedded Python interpreter. With " "these extensions, the Python script can do things like" msgstr "" -#: extending/embedding.rst:275 +#: extending/embedding.rst:277 msgid "" "import emb\n" "print(\"Number of arguments\", emb.numargs())" msgstr "" -#: extending/embedding.rst:280 +#: extending/embedding.rst:282 msgid "" "In a real application, the methods will expose an API of the application to " "Python." msgstr "" -#: extending/embedding.rst:290 +#: extending/embedding.rst:292 msgid "Embedding Python in C++" msgstr "" -#: extending/embedding.rst:292 +#: extending/embedding.rst:294 msgid "" "It is also possible to embed Python in a C++ program; precisely how this is " "done will depend on the details of the C++ system used; in general you will " @@ -480,11 +482,11 @@ msgid "" "+." msgstr "" -#: extending/embedding.rst:301 +#: extending/embedding.rst:303 msgid "Compiling and Linking under Unix-like systems" msgstr "" -#: extending/embedding.rst:303 +#: extending/embedding.rst:305 msgid "" "It is not necessarily trivial to find the right flags to pass to your " "compiler (and linker) in order to embed the Python interpreter into your " @@ -492,7 +494,7 @@ msgid "" "implemented as C dynamic extensions (:file:`.so` files) linked against it." msgstr "" -#: extending/embedding.rst:309 +#: extending/embedding.rst:311 msgid "" "To find out the required compiler and linker flags, you can execute the :" "file:`python{X.Y}-config` script which is generated as part of the " @@ -501,33 +503,33 @@ msgid "" "directly useful to you:" msgstr "" -#: extending/embedding.rst:315 +#: extending/embedding.rst:317 msgid "" "``pythonX.Y-config --cflags`` will give you the recommended flags when " "compiling:" msgstr "" -#: extending/embedding.rst:318 +#: extending/embedding.rst:320 msgid "" "$ /opt/bin/python3.11-config --cflags\n" "-I/opt/include/python3.11 -I/opt/include/python3.11 -Wsign-compare -DNDEBUG " "-g -fwrapv -O3 -Wall" msgstr "" -#: extending/embedding.rst:323 +#: extending/embedding.rst:325 msgid "" "``pythonX.Y-config --ldflags --embed`` will give you the recommended flags " "when linking:" msgstr "" -#: extending/embedding.rst:326 +#: extending/embedding.rst:328 msgid "" "$ /opt/bin/python3.11-config --ldflags --embed\n" "-L/opt/lib/python3.11/config-3.11-x86_64-linux-gnu -L/opt/lib -lpython3.11 -" "lpthread -ldl -lutil -lm" msgstr "" -#: extending/embedding.rst:332 +#: extending/embedding.rst:334 msgid "" "To avoid confusion between several Python installations (and especially " "between the system Python and your own compiled Python), it is recommended " @@ -535,7 +537,7 @@ msgid "" "above example." msgstr "" -#: extending/embedding.rst:337 +#: extending/embedding.rst:339 msgid "" "If this procedure doesn't work for you (it is not guaranteed to work for all " "Unix-like platforms; however, we welcome :ref:`bug reports >> import sysconfig\n" ">>> sysconfig.get_config_var('LIBS')\n" diff --git a/extending/extending.po b/extending/extending.po index 45f99e97..d9267b22 100644 --- a/extending/extending.po +++ b/extending/extending.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -87,7 +87,7 @@ msgstr "" msgid "The first two lines of our file can be::" msgstr "" -#: extending/extending.rst:663 +#: extending/extending.rst:681 msgid "" "#define PY_SSIZE_T_CLEAN\n" "#include " @@ -303,43 +303,78 @@ msgstr "" #: extending/extending.rst:206 msgid "" -"You can also define a new exception that is unique to your module. For this, " -"you usually declare a static object variable at the beginning of your file::" +"You can also define a new exception that is unique to your module. The " +"simplest way to do this is to declare a static global object variable at the " +"beginning of the file::" msgstr "" -#: extending/extending.rst:209 -msgid "static PyObject *SpamError;" +#: extending/extending.rst:210 +msgid "static PyObject *SpamError = NULL;" msgstr "" -#: extending/extending.rst:211 +#: extending/extending.rst:212 msgid "" -"and initialize it in your module's initialization function (:c:func:`!" -"PyInit_spam`) with an exception object::" +"and initialize it by calling :c:func:`PyErr_NewException` in the module's :c:" +"data:`Py_mod_exec` function (:c:func:`!spam_module_exec`)::" +msgstr "" + +#: extending/extending.rst:215 +msgid "SpamError = PyErr_NewException(\"spam.error\", NULL, NULL);" msgstr "" -#: extending/extending.rst:214 +#: extending/extending.rst:217 msgid "" -"PyMODINIT_FUNC\n" -"PyInit_spam(void)\n" -"{\n" -" PyObject *m;\n" -"\n" -" m = PyModule_Create(&spammodule);\n" -" if (m == NULL)\n" -" return NULL;\n" +"Since :c:data:`!SpamError` is a global variable, it will be overwitten every " +"time the module is reinitialized, when the :c:data:`Py_mod_exec` function is " +"called." +msgstr "" + +#: extending/extending.rst:220 +msgid "" +"For now, let's avoid the issue: we will block repeated initialization by " +"raising an :py:exc:`ImportError`::" +msgstr "" + +#: extending/extending.rst:223 +msgid "" +"static PyObject *SpamError = NULL;\n" "\n" +"static int\n" +"spam_module_exec(PyObject *m)\n" +"{\n" +" if (SpamError != NULL) {\n" +" PyErr_SetString(PyExc_ImportError,\n" +" \"cannot initialize spam module more than once\");\n" +" return -1;\n" +" }\n" " SpamError = PyErr_NewException(\"spam.error\", NULL, NULL);\n" -" if (PyModule_AddObjectRef(m, \"error\", SpamError) < 0) {\n" -" Py_CLEAR(SpamError);\n" -" Py_DECREF(m);\n" -" return NULL;\n" +" if (PyModule_AddObjectRef(m, \"SpamError\", SpamError) < 0) {\n" +" return -1;\n" " }\n" "\n" -" return m;\n" +" return 0;\n" +"}\n" +"\n" +"static PyModuleDef_Slot spam_module_slots[] = {\n" +" {Py_mod_exec, spam_module_exec},\n" +" {0, NULL}\n" +"};\n" +"\n" +"static struct PyModuleDef spam_module = {\n" +" .m_base = PyModuleDef_HEAD_INIT,\n" +" .m_name = \"spam\",\n" +" .m_size = 0, // non-negative\n" +" .m_slots = spam_module_slots,\n" +"};\n" +"\n" +"PyMODINIT_FUNC\n" +"PyInit_spam(void)\n" +"{\n" +" return PyModuleDef_Init(&spam_module);\n" "}" msgstr "" -#: extending/extending.rst:233 +#: extending/extending.rst:259 msgid "" "Note that the Python name for the exception object is :exc:`!spam.error`. " "The :c:func:`PyErr_NewException` function may create a class with the base " @@ -347,7 +382,7 @@ msgid "" "``NULL``), described in :ref:`bltin-exceptions`." msgstr "" -#: extending/extending.rst:238 +#: extending/extending.rst:264 msgid "" "Note also that the :c:data:`!SpamError` variable retains a reference to the " "newly created exception class; this is intentional! Since the exception " @@ -358,19 +393,27 @@ msgid "" "unintended side effects." msgstr "" -#: extending/extending.rst:245 +#: extending/extending.rst:271 +msgid "" +"For now, the :c:func:`Py_DECREF` call to remove this reference is missing. " +"Even when the Python interpreter shuts down, the global :c:data:`!SpamError` " +"variable will not be garbage-collected. It will \"leak\". We did, however, " +"ensure that this will happen at most once per process." +msgstr "" + +#: extending/extending.rst:276 msgid "" "We discuss the use of :c:macro:`PyMODINIT_FUNC` as a function return type " "later in this sample." msgstr "" -#: extending/extending.rst:248 +#: extending/extending.rst:279 msgid "" "The :exc:`!spam.error` exception can be raised in your extension module " "using a call to :c:func:`PyErr_SetString` as shown below::" msgstr "" -#: extending/extending.rst:251 +#: extending/extending.rst:282 msgid "" "static PyObject *\n" "spam_system(PyObject *self, PyObject *args)\n" @@ -389,23 +432,23 @@ msgid "" "}" msgstr "" -#: extending/extending.rst:271 +#: extending/extending.rst:302 msgid "Back to the Example" msgstr "" -#: extending/extending.rst:273 +#: extending/extending.rst:304 msgid "" "Going back to our example function, you should now be able to understand " "this statement::" msgstr "" -#: extending/extending.rst:276 +#: extending/extending.rst:307 msgid "" "if (!PyArg_ParseTuple(args, \"s\", &command))\n" " return NULL;" msgstr "" -#: extending/extending.rst:279 +#: extending/extending.rst:310 msgid "" "It returns ``NULL`` (the error indicator for functions returning object " "pointers) if an error is detected in the argument list, relying on the " @@ -416,34 +459,34 @@ msgid "" "properly be declared as ``const char *command``)." msgstr "" -#: extending/extending.rst:287 +#: extending/extending.rst:318 msgid "" "The next statement is a call to the Unix function :c:func:`system`, passing " "it the string we just got from :c:func:`PyArg_ParseTuple`::" msgstr "" -#: extending/extending.rst:290 +#: extending/extending.rst:321 msgid "sts = system(command);" msgstr "" -#: extending/extending.rst:292 +#: extending/extending.rst:323 msgid "" "Our :func:`!spam.system` function must return the value of :c:data:`!sts` as " "a Python object. This is done using the function :c:func:" "`PyLong_FromLong`. ::" msgstr "" -#: extending/extending.rst:295 +#: extending/extending.rst:326 msgid "return PyLong_FromLong(sts);" msgstr "" -#: extending/extending.rst:297 +#: extending/extending.rst:328 msgid "" "In this case, it will return an integer object. (Yes, even integers are " "objects on the heap in Python!)" msgstr "" -#: extending/extending.rst:300 +#: extending/extending.rst:331 msgid "" "If you have a C function that returns no useful argument (a function " "returning :c:expr:`void`), the corresponding Python function must return " @@ -451,32 +494,32 @@ msgid "" "macro:`Py_RETURN_NONE` macro)::" msgstr "" -#: extending/extending.rst:305 +#: extending/extending.rst:336 msgid "" "Py_INCREF(Py_None);\n" "return Py_None;" msgstr "" -#: extending/extending.rst:308 +#: extending/extending.rst:339 msgid "" ":c:data:`Py_None` is the C name for the special Python object ``None``. It " "is a genuine Python object rather than a ``NULL`` pointer, which means " "\"error\" in most contexts, as we have seen." msgstr "" -#: extending/extending.rst:316 +#: extending/extending.rst:347 msgid "The Module's Method Table and Initialization Function" msgstr "" -#: extending/extending.rst:318 +#: extending/extending.rst:349 msgid "" "I promised to show how :c:func:`!spam_system` is called from Python " "programs. First, we need to list its name and address in a \"method table\"::" msgstr "" -#: extending/extending.rst:321 +#: extending/extending.rst:352 msgid "" -"static PyMethodDef SpamMethods[] = {\n" +"static PyMethodDef spam_methods[] = {\n" " ...\n" " {\"system\", spam_system, METH_VARARGS,\n" " \"Execute a shell command.\"},\n" @@ -485,7 +528,7 @@ msgid "" "};" msgstr "" -#: extending/extending.rst:329 +#: extending/extending.rst:360 msgid "" "Note the third entry (``METH_VARARGS``). This is a flag telling the " "interpreter the calling convention to be used for the C function. It should " @@ -494,14 +537,14 @@ msgid "" "is used." msgstr "" -#: extending/extending.rst:334 +#: extending/extending.rst:365 msgid "" "When using only ``METH_VARARGS``, the function should expect the Python-" "level parameters to be passed in as a tuple acceptable for parsing via :c:" "func:`PyArg_ParseTuple`; more information on this function is provided below." msgstr "" -#: extending/extending.rst:338 +#: extending/extending.rst:369 msgid "" "The :c:macro:`METH_KEYWORDS` bit may be set in the third field if keyword " "arguments should be passed to the function. In this case, the C function " @@ -510,24 +553,21 @@ msgid "" "to such a function." msgstr "" -#: extending/extending.rst:344 +#: extending/extending.rst:375 msgid "" "The method table must be referenced in the module definition structure::" msgstr "" -#: extending/extending.rst:346 +#: extending/extending.rst:377 msgid "" -"static struct PyModuleDef spammodule = {\n" -" PyModuleDef_HEAD_INIT,\n" -" \"spam\", /* name of module */\n" -" spam_doc, /* module documentation, may be NULL */\n" -" -1, /* size of per-interpreter state of the module,\n" -" or -1 if the module keeps state in global variables. */\n" -" SpamMethods\n" +"static struct PyModuleDef spam_module = {\n" +" ...\n" +" .m_methods = spam_methods,\n" +" ...\n" "};" msgstr "" -#: extending/extending.rst:355 +#: extending/extending.rst:383 msgid "" "This structure, in turn, must be passed to the interpreter in the module's " "initialization function. The initialization function must be named :c:func:" @@ -535,37 +575,32 @@ msgid "" "only non-\\ ``static`` item defined in the module file::" msgstr "" -#: extending/extending.rst:360 +#: extending/extending.rst:388 msgid "" "PyMODINIT_FUNC\n" "PyInit_spam(void)\n" "{\n" -" return PyModule_Create(&spammodule);\n" +" return PyModuleDef_Init(&spam_module);\n" "}" msgstr "" -#: extending/extending.rst:366 +#: extending/extending.rst:394 msgid "" "Note that :c:macro:`PyMODINIT_FUNC` declares the function as ``PyObject *`` " "return type, declares any special linkage declarations required by the " "platform, and for C++ declares the function as ``extern \"C\"``." msgstr "" -#: extending/extending.rst:370 +#: extending/extending.rst:398 msgid "" -"When the Python program imports module :mod:`!spam` for the first time, :c:" -"func:`!PyInit_spam` is called. (See below for comments about embedding " -"Python.) It calls :c:func:`PyModule_Create`, which returns a module object, " -"and inserts built-in function objects into the newly created module based " -"upon the table (an array of :c:type:`PyMethodDef` structures) found in the " -"module definition. :c:func:`PyModule_Create` returns a pointer to the module " -"object that it creates. It may abort with a fatal error for certain errors, " -"or return ``NULL`` if the module could not be initialized satisfactorily. " -"The init function must return the module object to its caller, so that it " -"then gets inserted into ``sys.modules``." +":c:func:`!PyInit_spam` is called when each interpreter imports its module :" +"mod:`!spam` for the first time. (See below for comments about embedding " +"Python.) A pointer to the module definition must be returned via :c:func:" +"`PyModuleDef_Init`, so that the import machinery can create the module and " +"store it in ``sys.modules``." msgstr "" -#: extending/extending.rst:381 +#: extending/extending.rst:403 msgid "" "When embedding Python, the :c:func:`!PyInit_spam` function is not called " "automatically unless there's an entry in the :c:data:`PyImport_Inittab` " @@ -573,7 +608,7 @@ msgid "" "`PyImport_AppendInittab`, optionally followed by an import of the module::" msgstr "" -#: extending/extending.rst:386 +#: extending/extending.rst:408 msgid "" "#define PY_SSIZE_T_CLEAN\n" "#include \n" @@ -626,35 +661,30 @@ msgid "" "}" msgstr "" -#: extending/extending.rst:436 +#: extending/extending.rst:458 msgid "" -"Removing entries from ``sys.modules`` or importing compiled modules into " +"If you declare a global variable or a local static one, the module may " +"experience unintended side-effects on re-initialisation, for example when " +"removing entries from ``sys.modules`` or importing compiled modules into " "multiple interpreters within a process (or following a :c:func:`fork` " -"without an intervening :c:func:`exec`) can create problems for some " -"extension modules. Extension module authors should exercise caution when " -"initializing internal data structures." +"without an intervening :c:func:`exec`). If module state is not yet fully :" +"ref:`isolated `, authors should consider marking " +"the module as having no support for subinterpreters (via :c:macro:" +"`Py_MOD_MULTIPLE_INTERPRETERS_NOT_SUPPORTED`)." msgstr "" -#: extending/extending.rst:442 +#: extending/extending.rst:467 msgid "" "A more substantial example module is included in the Python source " -"distribution as :file:`Modules/xxmodule.c`. This file may be used as a " +"distribution as :file:`Modules/xxlimited.c`. This file may be used as a " "template or simply read as an example." msgstr "" -#: extending/extending.rst:448 -msgid "" -"Unlike our ``spam`` example, ``xxmodule`` uses *multi-phase initialization* " -"(new in Python 3.5), where a PyModuleDef structure is returned from " -"``PyInit_spam``, and creation of the module is left to the import machinery. " -"For details on multi-phase initialization, see :PEP:`489`." -msgstr "" - -#: extending/extending.rst:457 +#: extending/extending.rst:475 msgid "Compilation and Linkage" msgstr "" -#: extending/extending.rst:459 +#: extending/extending.rst:477 msgid "" "There are two more things to do before you can use your new extension: " "compiling and linking it with the Python system. If you use dynamic " @@ -664,7 +694,7 @@ msgid "" "Windows (chapter :ref:`building-on-windows`) for more information about this." msgstr "" -#: extending/extending.rst:466 +#: extending/extending.rst:484 msgid "" "If you can't use dynamic loading, or if you want to make your module a " "permanent part of the Python interpreter, you will have to change the " @@ -674,11 +704,11 @@ msgid "" "line to the file :file:`Modules/Setup.local` describing your file:" msgstr "" -#: extending/extending.rst:473 +#: extending/extending.rst:491 msgid "spam spammodule.o" msgstr "" -#: extending/extending.rst:477 +#: extending/extending.rst:495 msgid "" "and rebuild the interpreter by running :program:`make` in the toplevel " "directory. You can also run :program:`make` in the :file:`Modules/` " @@ -687,21 +717,21 @@ msgid "" "the :file:`Setup` file.)" msgstr "" -#: extending/extending.rst:483 +#: extending/extending.rst:501 msgid "" "If your module requires additional libraries to link with, these can be " "listed on the line in the configuration file as well, for instance:" msgstr "" -#: extending/extending.rst:486 +#: extending/extending.rst:504 msgid "spam spammodule.o -lX11" msgstr "" -#: extending/extending.rst:494 +#: extending/extending.rst:512 msgid "Calling Python Functions from C" msgstr "" -#: extending/extending.rst:496 +#: extending/extending.rst:514 msgid "" "So far we have concentrated on making C functions callable from Python. The " "reverse is also useful: calling Python functions from C. This is especially " @@ -712,7 +742,7 @@ msgid "" "uses are also imaginable." msgstr "" -#: extending/extending.rst:504 +#: extending/extending.rst:522 msgid "" "Fortunately, the Python interpreter is easily called recursively, and there " "is a standard interface to call a Python function. (I won't dwell on how to " @@ -721,7 +751,7 @@ msgid "" "line option in :file:`Modules/main.c` from the Python source code.)" msgstr "" -#: extending/extending.rst:510 +#: extending/extending.rst:528 msgid "" "Calling a Python function is easy. First, the Python program must somehow " "pass you the Python function object. You should provide a function (or some " @@ -731,7 +761,7 @@ msgid "" "function might be part of a module definition::" msgstr "" -#: extending/extending.rst:517 +#: extending/extending.rst:535 msgid "" "static PyObject *my_callback = NULL;\n" "\n" @@ -758,7 +788,7 @@ msgid "" "}" msgstr "" -#: extending/extending.rst:540 +#: extending/extending.rst:558 msgid "" "This function must be registered with the interpreter using the :c:macro:" "`METH_VARARGS` flag; this is described in section :ref:`methodtable`. The :" @@ -766,7 +796,7 @@ msgid "" "section :ref:`parsetuple`." msgstr "" -#: extending/extending.rst:545 +#: extending/extending.rst:563 msgid "" "The macros :c:func:`Py_XINCREF` and :c:func:`Py_XDECREF` increment/decrement " "the reference count of an object and are safe in the presence of ``NULL`` " @@ -774,7 +804,7 @@ msgid "" "info on them in section :ref:`refcounts`." msgstr "" -#: extending/extending.rst:552 +#: extending/extending.rst:570 msgid "" "Later, when it is time to call the function, you call the C function :c:func:" "`PyObject_CallObject`. This function has two arguments, both pointers to " @@ -786,7 +816,7 @@ msgid "" "or more format codes between parentheses. For example::" msgstr "" -#: extending/extending.rst:561 +#: extending/extending.rst:579 msgid "" "int arg;\n" "PyObject *arglist;\n" @@ -800,7 +830,7 @@ msgid "" "Py_DECREF(arglist);" msgstr "" -#: extending/extending.rst:572 +#: extending/extending.rst:590 msgid "" ":c:func:`PyObject_CallObject` returns a Python object pointer: this is the " "return value of the Python function. :c:func:`PyObject_CallObject` is " @@ -809,7 +839,7 @@ msgid "" "`Py_DECREF`\\ -ed immediately after the :c:func:`PyObject_CallObject` call." msgstr "" -#: extending/extending.rst:579 +#: extending/extending.rst:597 msgid "" "The return value of :c:func:`PyObject_CallObject` is \"new\": either it is a " "brand new object, or it is an existing object whose reference count has been " @@ -818,7 +848,7 @@ msgid "" "not interested in its value." msgstr "" -#: extending/extending.rst:585 +#: extending/extending.rst:603 msgid "" "Before you do this, however, it is important to check that the return value " "isn't ``NULL``. If it is, the Python function terminated by raising an " @@ -829,7 +859,7 @@ msgid "" "should be cleared by calling :c:func:`PyErr_Clear`. For example::" msgstr "" -#: extending/extending.rst:593 +#: extending/extending.rst:611 msgid "" "if (result == NULL)\n" " return NULL; /* Pass error back */\n" @@ -837,7 +867,7 @@ msgid "" "Py_DECREF(result);" msgstr "" -#: extending/extending.rst:598 +#: extending/extending.rst:616 msgid "" "Depending on the desired interface to the Python callback function, you may " "also have to provide an argument list to :c:func:`PyObject_CallObject`. In " @@ -849,7 +879,7 @@ msgid "" "you want to pass an integral event code, you might use the following code::" msgstr "" -#: extending/extending.rst:607 +#: extending/extending.rst:625 msgid "" "PyObject *arglist;\n" "...\n" @@ -862,7 +892,7 @@ msgid "" "Py_DECREF(result);" msgstr "" -#: extending/extending.rst:617 +#: extending/extending.rst:635 msgid "" "Note the placement of ``Py_DECREF(arglist)`` immediately after the call, " "before the error check! Also note that strictly speaking this code is not " @@ -870,14 +900,14 @@ msgid "" "checked." msgstr "" -#: extending/extending.rst:621 +#: extending/extending.rst:639 msgid "" "You may also call a function with keyword arguments by using :c:func:" "`PyObject_Call`, which supports arguments and keyword arguments. As in the " "above example, we use :c:func:`Py_BuildValue` to construct the dictionary. ::" msgstr "" -#: extending/extending.rst:625 +#: extending/extending.rst:643 msgid "" "PyObject *dict;\n" "...\n" @@ -890,19 +920,19 @@ msgid "" "Py_DECREF(result);" msgstr "" -#: extending/extending.rst:639 +#: extending/extending.rst:657 msgid "Extracting Parameters in Extension Functions" msgstr "" -#: extending/extending.rst:643 +#: extending/extending.rst:661 msgid "The :c:func:`PyArg_ParseTuple` function is declared as follows::" msgstr "" -#: extending/extending.rst:645 +#: extending/extending.rst:663 msgid "int PyArg_ParseTuple(PyObject *arg, const char *format, ...);" msgstr "" -#: extending/extending.rst:647 +#: extending/extending.rst:665 msgid "" "The *arg* argument must be a tuple object containing an argument list passed " "from Python to a C function. The *format* argument must be a format string, " @@ -911,7 +941,7 @@ msgid "" "whose type is determined by the format string." msgstr "" -#: extending/extending.rst:653 +#: extending/extending.rst:671 msgid "" "Note that while :c:func:`PyArg_ParseTuple` checks that the Python arguments " "have the required types, it cannot check the validity of the addresses of C " @@ -919,17 +949,17 @@ msgid "" "probably crash or at least overwrite random bits in memory. So be careful!" msgstr "" -#: extending/extending.rst:658 +#: extending/extending.rst:676 msgid "" "Note that any Python object references which are provided to the caller are " "*borrowed* references; do not decrement their reference count!" msgstr "" -#: extending/extending.rst:661 +#: extending/extending.rst:679 msgid "Some example calls::" msgstr "" -#: extending/extending.rst:668 +#: extending/extending.rst:686 msgid "" "int ok;\n" "int i, j;\n" @@ -941,27 +971,27 @@ msgid "" " /* Python call: f() */" msgstr "" -#: extending/extending.rst:679 +#: extending/extending.rst:697 msgid "" "ok = PyArg_ParseTuple(args, \"s\", &s); /* A string */\n" " /* Possible Python call: f('whoops!') */" msgstr "" -#: extending/extending.rst:684 +#: extending/extending.rst:702 msgid "" "ok = PyArg_ParseTuple(args, \"lls\", &k, &l, &s); /* Two longs and a string " "*/\n" " /* Possible Python call: f(1, 2, 'three') */" msgstr "" -#: extending/extending.rst:689 +#: extending/extending.rst:707 msgid "" "ok = PyArg_ParseTuple(args, \"(ii)s#\", &i, &j, &s, &size);\n" " /* A pair of ints and a string, whose size is also returned */\n" " /* Possible Python call: f((1, 2), 'three') */" msgstr "" -#: extending/extending.rst:695 +#: extending/extending.rst:713 msgid "" "{\n" " const char *file;\n" @@ -976,7 +1006,7 @@ msgid "" "}" msgstr "" -#: extending/extending.rst:709 +#: extending/extending.rst:727 msgid "" "{\n" " int left, top, right, bottom, h, v;\n" @@ -988,7 +1018,7 @@ msgid "" "}" msgstr "" -#: extending/extending.rst:720 +#: extending/extending.rst:738 msgid "" "{\n" " Py_complex c;\n" @@ -998,23 +1028,23 @@ msgid "" "}" msgstr "" -#: extending/extending.rst:731 +#: extending/extending.rst:749 msgid "Keyword Parameters for Extension Functions" msgstr "" -#: extending/extending.rst:735 +#: extending/extending.rst:753 msgid "" "The :c:func:`PyArg_ParseTupleAndKeywords` function is declared as follows::" msgstr "" -#: extending/extending.rst:737 +#: extending/extending.rst:755 msgid "" "int PyArg_ParseTupleAndKeywords(PyObject *arg, PyObject *kwdict,\n" " const char *format, char * const " "*kwlist, ...);" msgstr "" -#: extending/extending.rst:740 +#: extending/extending.rst:758 msgid "" "The *arg* and *format* parameters are identical to those of the :c:func:" "`PyArg_ParseTuple` function. The *kwdict* parameter is the dictionary of " @@ -1026,20 +1056,20 @@ msgid "" "raises an appropriate exception." msgstr "" -#: extending/extending.rst:750 +#: extending/extending.rst:768 msgid "" "Nested tuples cannot be parsed when using keyword arguments! Keyword " "parameters passed in which are not present in the *kwlist* will cause :exc:" "`TypeError` to be raised." msgstr "" -#: extending/extending.rst:756 +#: extending/extending.rst:774 msgid "" "Here is an example module which uses keywords, based on an example by Geoff " "Philbrick (philbrick@hks.com)::" msgstr "" -#: extending/extending.rst:759 +#: extending/extending.rst:777 msgid "" "#define PY_SSIZE_T_CLEAN\n" "#include \n" @@ -1078,36 +1108,35 @@ msgid "" " {NULL, NULL, 0, NULL} /* sentinel */\n" "};\n" "\n" -"static struct PyModuleDef keywdargmodule = {\n" -" PyModuleDef_HEAD_INIT,\n" -" \"keywdarg\",\n" -" NULL,\n" -" -1,\n" -" keywdarg_methods\n" +"static struct PyModuleDef keywdarg_module = {\n" +" .m_base = PyModuleDef_HEAD_INIT,\n" +" .m_name = \"keywdarg\",\n" +" .m_size = 0,\n" +" .m_methods = keywdarg_methods,\n" "};\n" "\n" "PyMODINIT_FUNC\n" "PyInit_keywdarg(void)\n" "{\n" -" return PyModule_Create(&keywdargmodule);\n" +" return PyModuleDef_Init(&keywdarg_module);\n" "}" msgstr "" -#: extending/extending.rst:811 +#: extending/extending.rst:828 msgid "Building Arbitrary Values" msgstr "" -#: extending/extending.rst:813 +#: extending/extending.rst:830 msgid "" "This function is the counterpart to :c:func:`PyArg_ParseTuple`. It is " "declared as follows::" msgstr "" -#: extending/extending.rst:816 +#: extending/extending.rst:833 msgid "PyObject *Py_BuildValue(const char *format, ...);" msgstr "" -#: extending/extending.rst:818 +#: extending/extending.rst:835 msgid "" "It recognizes a set of format units similar to the ones recognized by :c:" "func:`PyArg_ParseTuple`, but the arguments (which are input to the function, " @@ -1115,7 +1144,7 @@ msgid "" "object, suitable for returning from a C function called from Python." msgstr "" -#: extending/extending.rst:823 +#: extending/extending.rst:840 msgid "" "One difference with :c:func:`PyArg_ParseTuple`: while the latter requires " "its first argument to be a tuple (since Python argument lists are always " @@ -1127,12 +1156,12 @@ msgid "" "parenthesize the format string." msgstr "" -#: extending/extending.rst:831 +#: extending/extending.rst:848 msgid "" "Examples (to the left the call, to the right the resulting Python value):" msgstr "" -#: extending/extending.rst:833 +#: extending/extending.rst:850 msgid "" "Py_BuildValue(\"\") None\n" "Py_BuildValue(\"i\", 123) 123\n" @@ -1153,11 +1182,11 @@ msgid "" " 1, 2, 3, 4, 5, 6) (((1, 2), (3, 4)), (5, 6))" msgstr "" -#: extending/extending.rst:857 +#: extending/extending.rst:874 msgid "Reference Counts" msgstr "" -#: extending/extending.rst:859 +#: extending/extending.rst:876 msgid "" "In languages like C or C++, the programmer is responsible for dynamic " "allocation and deallocation of memory on the heap. In C, this is done using " @@ -1166,7 +1195,7 @@ msgid "" "restrict the following discussion to the C case." msgstr "" -#: extending/extending.rst:865 +#: extending/extending.rst:882 msgid "" "Every block of memory allocated with :c:func:`malloc` should eventually be " "returned to the pool of available memory by exactly one call to :c:func:" @@ -1181,7 +1210,7 @@ msgid "" "crashes." msgstr "" -#: extending/extending.rst:876 +#: extending/extending.rst:893 msgid "" "Common causes of memory leaks are unusual paths through the code. For " "instance, a function may allocate a block of memory, do some calculation, " @@ -1198,7 +1227,7 @@ msgid "" "of errors." msgstr "" -#: extending/extending.rst:889 +#: extending/extending.rst:906 msgid "" "Since Python makes heavy use of :c:func:`malloc` and :c:func:`free`, it " "needs a strategy to avoid memory leaks as well as the use of freed memory. " @@ -1209,7 +1238,7 @@ msgid "" "reference to the object has been deleted and the object is freed." msgstr "" -#: extending/extending.rst:897 +#: extending/extending.rst:914 msgid "" "An alternative strategy is called :dfn:`automatic garbage collection`. " "(Sometimes, reference counting is also referred to as a garbage collection " @@ -1225,7 +1254,7 @@ msgid "" "with reference counts." msgstr "" -#: extending/extending.rst:909 +#: extending/extending.rst:926 msgid "" "While Python uses the traditional reference counting implementation, it also " "offers a cycle detector that works to detect reference cycles. This allows " @@ -1239,7 +1268,7 @@ msgid "" "though there are no further references to the cycle itself." msgstr "" -#: extending/extending.rst:920 +#: extending/extending.rst:937 msgid "" "The cycle detector is able to detect garbage cycles and can reclaim them. " "The :mod:`gc` module exposes a way to run the detector (the :func:`~gc." @@ -1247,11 +1276,11 @@ msgid "" "disable the detector at runtime." msgstr "" -#: extending/extending.rst:929 +#: extending/extending.rst:946 msgid "Reference Counting in Python" msgstr "" -#: extending/extending.rst:931 +#: extending/extending.rst:948 msgid "" "There are two macros, ``Py_INCREF(x)`` and ``Py_DECREF(x)``, which handle " "the incrementing and decrementing of the reference count. :c:func:" @@ -1262,7 +1291,7 @@ msgid "" "object." msgstr "" -#: extending/extending.rst:938 +#: extending/extending.rst:955 msgid "" "The big question now remains: when to use ``Py_INCREF(x)`` and " "``Py_DECREF(x)``? Let's first introduce some terms. Nobody \"owns\" an " @@ -1275,7 +1304,7 @@ msgid "" "reference creates a memory leak." msgstr "" -#: extending/extending.rst:947 +#: extending/extending.rst:964 msgid "" "It is also possible to :dfn:`borrow` [#]_ a reference to an object. The " "borrower of a reference should not call :c:func:`Py_DECREF`. The borrower " @@ -1284,7 +1313,7 @@ msgid "" "risks using freed memory and should be avoided completely [#]_." msgstr "" -#: extending/extending.rst:953 +#: extending/extending.rst:970 msgid "" "The advantage of borrowing over owning a reference is that you don't need to " "take care of disposing of the reference on all possible paths through the " @@ -1295,7 +1324,7 @@ msgid "" "borrowed has in fact disposed of it." msgstr "" -#: extending/extending.rst:961 +#: extending/extending.rst:978 msgid "" "A borrowed reference can be changed into an owned reference by calling :c:" "func:`Py_INCREF`. This does not affect the status of the owner from which " @@ -1304,18 +1333,18 @@ msgid "" "properly, as well as the previous owner)." msgstr "" -#: extending/extending.rst:971 +#: extending/extending.rst:988 msgid "Ownership Rules" msgstr "" -#: extending/extending.rst:973 +#: extending/extending.rst:990 msgid "" "Whenever an object reference is passed into or out of a function, it is part " "of the function's interface specification whether ownership is transferred " "with the reference or not." msgstr "" -#: extending/extending.rst:977 +#: extending/extending.rst:994 msgid "" "Most functions that return a reference to an object pass on ownership with " "the reference. In particular, all functions whose function it is to create " @@ -1326,7 +1355,7 @@ msgid "" "reference to a cached item." msgstr "" -#: extending/extending.rst:985 +#: extending/extending.rst:1002 msgid "" "Many functions that extract objects from other objects also transfer " "ownership with the reference, for instance :c:func:" @@ -1337,14 +1366,14 @@ msgid "" "list or dictionary." msgstr "" -#: extending/extending.rst:992 +#: extending/extending.rst:1009 msgid "" "The function :c:func:`PyImport_AddModule` also returns a borrowed reference, " "even though it may actually create the object it returns: this is possible " "because an owned reference to the object is stored in ``sys.modules``." msgstr "" -#: extending/extending.rst:996 +#: extending/extending.rst:1013 msgid "" "When you pass an object reference into another function, in general, the " "function borrows the reference from you --- if it needs to store it, it will " @@ -1355,7 +1384,7 @@ msgid "" "don't take over ownership --- they are \"normal.\")" msgstr "" -#: extending/extending.rst:1004 +#: extending/extending.rst:1021 msgid "" "When a C function is called from Python, it borrows references to its " "arguments from the caller. The caller owns a reference to the object, so " @@ -1364,18 +1393,18 @@ msgid "" "turned into an owned reference by calling :c:func:`Py_INCREF`." msgstr "" -#: extending/extending.rst:1010 +#: extending/extending.rst:1027 msgid "" "The object reference returned from a C function that is called from Python " "must be an owned reference --- ownership is transferred from the function to " "its caller." msgstr "" -#: extending/extending.rst:1018 +#: extending/extending.rst:1035 msgid "Thin Ice" msgstr "" -#: extending/extending.rst:1020 +#: extending/extending.rst:1037 msgid "" "There are a few situations where seemingly harmless use of a borrowed " "reference can lead to problems. These all have to do with implicit " @@ -1383,14 +1412,14 @@ msgid "" "dispose of it." msgstr "" -#: extending/extending.rst:1024 +#: extending/extending.rst:1041 msgid "" "The first and most important case to know about is using :c:func:`Py_DECREF` " "on an unrelated object while borrowing a reference to a list item. For " "instance::" msgstr "" -#: extending/extending.rst:1027 +#: extending/extending.rst:1044 msgid "" "void\n" "bug(PyObject *list)\n" @@ -1402,14 +1431,14 @@ msgid "" "}" msgstr "" -#: extending/extending.rst:1036 +#: extending/extending.rst:1053 msgid "" "This function first borrows a reference to ``list[0]``, then replaces " "``list[1]`` with the value ``0``, and finally prints the borrowed reference. " "Looks harmless, right? But it's not!" msgstr "" -#: extending/extending.rst:1040 +#: extending/extending.rst:1057 msgid "" "Let's follow the control flow into :c:func:`PyList_SetItem`. The list owns " "references to all its items, so when item 1 is replaced, it has to dispose " @@ -1419,7 +1448,7 @@ msgid "" "count of 1, disposing of it will call its :meth:`!__del__` method." msgstr "" -#: extending/extending.rst:1047 +#: extending/extending.rst:1064 msgid "" "Since it is written in Python, the :meth:`!__del__` method can execute " "arbitrary Python code. Could it perhaps do something to invalidate the " @@ -1430,13 +1459,13 @@ msgid "" "associated with it, thereby invalidating ``item``." msgstr "" -#: extending/extending.rst:1055 +#: extending/extending.rst:1072 msgid "" "The solution, once you know the source of the problem, is easy: temporarily " "increment the reference count. The correct version of the function reads::" msgstr "" -#: extending/extending.rst:1058 +#: extending/extending.rst:1075 msgid "" "void\n" "no_bug(PyObject *list)\n" @@ -1450,27 +1479,27 @@ msgid "" "}" msgstr "" -#: extending/extending.rst:1069 +#: extending/extending.rst:1086 msgid "" "This is a true story. An older version of Python contained variants of this " "bug and someone spent a considerable amount of time in a C debugger to " "figure out why his :meth:`!__del__` methods would fail..." msgstr "" -#: extending/extending.rst:1073 +#: extending/extending.rst:1090 msgid "" "The second case of problems with a borrowed reference is a variant involving " "threads. Normally, multiple threads in the Python interpreter can't get in " -"each other's way, because there is a global lock protecting Python's entire " -"object space. However, it is possible to temporarily release this lock " -"using the macro :c:macro:`Py_BEGIN_ALLOW_THREADS`, and to re-acquire it " -"using :c:macro:`Py_END_ALLOW_THREADS`. This is common around blocking I/O " -"calls, to let other threads use the processor while waiting for the I/O to " -"complete. Obviously, the following function has the same problem as the " -"previous one::" +"each other's way, because there is a :term:`global lock ` protecting Python's entire object space. However, it is possible to " +"temporarily release this lock using the macro :c:macro:" +"`Py_BEGIN_ALLOW_THREADS`, and to re-acquire it using :c:macro:" +"`Py_END_ALLOW_THREADS`. This is common around blocking I/O calls, to let " +"other threads use the processor while waiting for the I/O to complete. " +"Obviously, the following function has the same problem as the previous one::" msgstr "" -#: extending/extending.rst:1082 +#: extending/extending.rst:1100 msgid "" "void\n" "bug(PyObject *list)\n" @@ -1483,11 +1512,11 @@ msgid "" "}" msgstr "" -#: extending/extending.rst:1096 +#: extending/extending.rst:1114 msgid "NULL Pointers" msgstr "" -#: extending/extending.rst:1098 +#: extending/extending.rst:1116 msgid "" "In general, functions that take object references as arguments do not expect " "you to pass them ``NULL`` pointers, and will dump core (or cause later core " @@ -1499,21 +1528,21 @@ msgid "" "more slowly." msgstr "" -#: extending/extending.rst:1106 +#: extending/extending.rst:1124 msgid "" "It is better to test for ``NULL`` only at the \"source:\" when a pointer " "that may be ``NULL`` is received, for example, from :c:func:`malloc` or from " "a function that may raise an exception." msgstr "" -#: extending/extending.rst:1110 +#: extending/extending.rst:1128 msgid "" "The macros :c:func:`Py_INCREF` and :c:func:`Py_DECREF` do not check for " "``NULL`` pointers --- however, their variants :c:func:`Py_XINCREF` and :c:" "func:`Py_XDECREF` do." msgstr "" -#: extending/extending.rst:1114 +#: extending/extending.rst:1132 msgid "" "The macros for checking for a particular object type (``Pytype_Check()``) " "don't check for ``NULL`` pointers --- again, there is much code that calls " @@ -1522,24 +1551,24 @@ msgid "" "variants with ``NULL`` checking." msgstr "" -#: extending/extending.rst:1120 +#: extending/extending.rst:1138 msgid "" "The C function calling mechanism guarantees that the argument list passed to " "C functions (``args`` in the examples) is never ``NULL`` --- in fact it " "guarantees that it is always a tuple [#]_." msgstr "" -#: extending/extending.rst:1124 +#: extending/extending.rst:1142 msgid "" "It is a severe error to ever let a ``NULL`` pointer \"escape\" to the Python " "user." msgstr "" -#: extending/extending.rst:1135 +#: extending/extending.rst:1153 msgid "Writing Extensions in C++" msgstr "" -#: extending/extending.rst:1137 +#: extending/extending.rst:1155 msgid "" "It is possible to write extension modules in C++. Some restrictions apply. " "If the main program (the Python interpreter) is compiled and linked by the C " @@ -1552,11 +1581,11 @@ msgid "" "(all recent C++ compilers define this symbol)." msgstr "" -#: extending/extending.rst:1151 +#: extending/extending.rst:1169 msgid "Providing a C API for an Extension Module" msgstr "" -#: extending/extending.rst:1156 +#: extending/extending.rst:1174 msgid "" "Many extension modules just provide new functions and types to be used from " "Python, but sometimes the code in an extension module can be useful for " @@ -1567,7 +1596,7 @@ msgid "" "functions for direct manipulation from other extension modules." msgstr "" -#: extending/extending.rst:1164 +#: extending/extending.rst:1182 msgid "" "At first sight this seems easy: just write the functions (without declaring " "them ``static``, of course), provide an appropriate header file, and " @@ -1583,7 +1612,7 @@ msgid "" "call might not have been loaded yet!" msgstr "" -#: extending/extending.rst:1176 +#: extending/extending.rst:1194 msgid "" "Portability therefore requires not to make any assumptions about symbol " "visibility. This means that all symbols in extension modules should be " @@ -1593,7 +1622,7 @@ msgid "" "accessible from other extension modules must be exported in a different way." msgstr "" -#: extending/extending.rst:1183 +#: extending/extending.rst:1201 msgid "" "Python provides a special mechanism to pass C-level information (pointers) " "from one extension module to another one: Capsules. A Capsule is a Python " @@ -1605,7 +1634,7 @@ msgid "" "the Capsule." msgstr "" -#: extending/extending.rst:1191 +#: extending/extending.rst:1209 msgid "" "There are many ways in which Capsules can be used to export the C API of an " "extension module. Each function could get its own Capsule, or all C API " @@ -1615,7 +1644,7 @@ msgid "" "client modules." msgstr "" -#: extending/extending.rst:1197 +#: extending/extending.rst:1215 msgid "" "Whichever method you choose, it's important to name your Capsules properly. " "The function :c:func:`PyCapsule_New` takes a name parameter (:c:expr:`const " @@ -1625,17 +1654,17 @@ msgid "" "from another." msgstr "" -#: extending/extending.rst:1204 +#: extending/extending.rst:1222 msgid "" "In particular, Capsules used to expose C APIs should be given a name " "following this convention::" msgstr "" -#: extending/extending.rst:1207 +#: extending/extending.rst:1225 msgid "modulename.attributename" msgstr "" -#: extending/extending.rst:1209 +#: extending/extending.rst:1227 msgid "" "The convenience function :c:func:`PyCapsule_Import` makes it easy to load a " "C API provided via a Capsule, but only if the Capsule's name matches this " @@ -1643,7 +1672,7 @@ msgid "" "the Capsule they load contains the correct C API." msgstr "" -#: extending/extending.rst:1214 +#: extending/extending.rst:1232 msgid "" "The following example demonstrates an approach that puts most of the burden " "on the writer of the exporting module, which is appropriate for commonly " @@ -1654,7 +1683,7 @@ msgid "" "modules only have to call this macro before accessing the C API." msgstr "" -#: extending/extending.rst:1222 +#: extending/extending.rst:1240 msgid "" "The exporting module is a modification of the :mod:`!spam` module from " "section :ref:`extending-simpleexample`. The function :func:`!spam.system` " @@ -1665,13 +1694,13 @@ msgid "" "modules." msgstr "" -#: extending/extending.rst:1229 +#: extending/extending.rst:1247 msgid "" "The function :c:func:`!PySpam_System` is a plain C function, declared " "``static`` like everything else::" msgstr "" -#: extending/extending.rst:1232 +#: extending/extending.rst:1250 msgid "" "static int\n" "PySpam_System(const char *command)\n" @@ -1680,11 +1709,11 @@ msgid "" "}" msgstr "" -#: extending/extending.rst:1238 +#: extending/extending.rst:1256 msgid "The function :c:func:`!spam_system` is modified in a trivial way::" msgstr "" -#: extending/extending.rst:1240 +#: extending/extending.rst:1258 msgid "" "static PyObject *\n" "spam_system(PyObject *self, PyObject *args)\n" @@ -1699,45 +1728,40 @@ msgid "" "}" msgstr "" -#: extending/extending.rst:1252 +#: extending/extending.rst:1270 msgid "In the beginning of the module, right after the line ::" msgstr "" -#: extending/extending.rst:1254 +#: extending/extending.rst:1272 msgid "#include " msgstr "" -#: extending/extending.rst:1256 +#: extending/extending.rst:1274 msgid "two more lines must be added::" msgstr "" -#: extending/extending.rst:1258 +#: extending/extending.rst:1276 msgid "" "#define SPAM_MODULE\n" "#include \"spammodule.h\"" msgstr "" -#: extending/extending.rst:1261 +#: extending/extending.rst:1279 msgid "" "The ``#define`` is used to tell the header file that it is being included in " -"the exporting module, not a client module. Finally, the module's " -"initialization function must take care of initializing the C API pointer " -"array::" +"the exporting module, not a client module. Finally, the module's :c:data:" +"`mod_exec ` function must take care of initializing the C API " +"pointer array::" msgstr "" -#: extending/extending.rst:1265 +#: extending/extending.rst:1283 msgid "" -"PyMODINIT_FUNC\n" -"PyInit_spam(void)\n" +"static int\n" +"spam_module_exec(PyObject *m)\n" "{\n" -" PyObject *m;\n" " static void *PySpam_API[PySpam_API_pointers];\n" " PyObject *c_api_object;\n" "\n" -" m = PyModule_Create(&spammodule);\n" -" if (m == NULL)\n" -" return NULL;\n" -"\n" " /* Initialize the C API pointer array */\n" " PySpam_API[PySpam_System_NUM] = (void *)PySpam_System;\n" "\n" @@ -1746,27 +1770,26 @@ msgid "" "NULL);\n" "\n" " if (PyModule_Add(m, \"_C_API\", c_api_object) < 0) {\n" -" Py_DECREF(m);\n" -" return NULL;\n" +" return -1;\n" " }\n" "\n" -" return m;\n" +" return 0;\n" "}" msgstr "" -#: extending/extending.rst:1290 +#: extending/extending.rst:1302 msgid "" "Note that ``PySpam_API`` is declared ``static``; otherwise the pointer array " "would disappear when :c:func:`!PyInit_spam` terminates!" msgstr "" -#: extending/extending.rst:1293 +#: extending/extending.rst:1305 msgid "" "The bulk of the work is in the header file :file:`spammodule.h`, which looks " "like this::" msgstr "" -#: extending/extending.rst:1296 +#: extending/extending.rst:1308 msgid "" "#ifndef Py_SPAMMODULE_H\n" "#define Py_SPAMMODULE_H\n" @@ -1818,38 +1841,34 @@ msgid "" "#endif /* !defined(Py_SPAMMODULE_H) */" msgstr "" -#: extending/extending.rst:1344 +#: extending/extending.rst:1356 msgid "" "All that a client module must do in order to have access to the function :c:" "func:`!PySpam_System` is to call the function (or rather macro) :c:func:`!" -"import_spam` in its initialization function::" +"import_spam` in its :c:data:`mod_exec ` function::" msgstr "" -#: extending/extending.rst:1348 +#: extending/extending.rst:1360 msgid "" -"PyMODINIT_FUNC\n" -"PyInit_client(void)\n" +"static int\n" +"client_module_exec(PyObject *m)\n" "{\n" -" PyObject *m;\n" -"\n" -" m = PyModule_Create(&clientmodule);\n" -" if (m == NULL)\n" -" return NULL;\n" -" if (import_spam() < 0)\n" -" return NULL;\n" +" if (import_spam() < 0) {\n" +" return -1;\n" +" }\n" " /* additional initialization can happen here */\n" -" return m;\n" +" return 0;\n" "}" msgstr "" -#: extending/extending.rst:1362 +#: extending/extending.rst:1370 msgid "" "The main disadvantage of this approach is that the file :file:`spammodule.h` " "is rather complicated. However, the basic structure is the same for each " "function that is exported, so it has to be learned only once." msgstr "" -#: extending/extending.rst:1366 +#: extending/extending.rst:1374 msgid "" "Finally it should be mentioned that Capsules offer additional functionality, " "which is especially useful for memory allocation and deallocation of the " @@ -1859,47 +1878,47 @@ msgid "" "in the Python source code distribution)." msgstr "" -#: extending/extending.rst:1374 +#: extending/extending.rst:1382 msgid "Footnotes" msgstr "" -#: extending/extending.rst:1375 +#: extending/extending.rst:1383 msgid "" "An interface for this function already exists in the standard module :mod:" "`os` --- it was chosen as a simple and straightforward example." msgstr "" -#: extending/extending.rst:1378 +#: extending/extending.rst:1386 msgid "" "The metaphor of \"borrowing\" a reference is not completely correct: the " "owner still has a copy of the reference." msgstr "" -#: extending/extending.rst:1381 +#: extending/extending.rst:1389 msgid "" "Checking that the reference count is at least 1 **does not work** --- the " "reference count itself could be in freed memory and may thus be reused for " "another object!" msgstr "" -#: extending/extending.rst:1385 +#: extending/extending.rst:1393 msgid "" "These guarantees don't hold when you use the \"old\" style calling " "convention --- this is still found in much existing code." msgstr "" -#: extending/extending.rst:550 +#: extending/extending.rst:568 msgid "PyObject_CallObject (C function)" msgstr "" -#: extending/extending.rst:641 +#: extending/extending.rst:659 msgid "PyArg_ParseTuple (C function)" msgstr "" -#: extending/extending.rst:733 +#: extending/extending.rst:751 msgid "PyArg_ParseTupleAndKeywords (C function)" msgstr "" -#: extending/extending.rst:754 +#: extending/extending.rst:772 msgid "Philbrick, Geoff" msgstr "" diff --git a/extending/index.po b/extending/index.po index 77d9ca66..aadbba01 100644 --- a/extending/index.po +++ b/extending/index.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-21 21:30+0300\n" "Last-Translator: ALEXANDROS TZIORAS alextzioras23@gmail.com\n" "Language-Team: PyGreece \n" @@ -71,42 +71,20 @@ msgstr "Προτεινόμενα εργαλεία τρίτων" #: extending/index.rst:28 msgid "" "This guide only covers the basic tools for creating extensions provided as " -"part of this version of CPython. Third party tools like `Cython `_, `cffi `_, `SWIG `_ and `Numba `_ offer both simpler and " -"more sophisticated approaches to creating C and C++ extensions for Python." +"part of this version of CPython. Some :ref:`third party tools ` " +"offer both simpler and more sophisticated approaches to creating C and C++ " +"extensions for Python." msgstr "" "Αυτός ο οδηγός καλύπτει μόνο τα βασικά εργαλεία για τη δημιουργία επεκτάσεων " -"που παρέχονται ως μέρος αυτής της έκδοσης της CPython. Εργαλεία τρίτων όπως " -"τα `Cython `_, `cffi `_, " -"`SWIG `_ και `Numba `_ " -"προσφέρουν τόσο απλούστερες όσο και πιο εξελιγμένες προσεγγίσεις για τη " -"δημιουργία επεκτάσεων σε C και C++ για την Python." +"που παρέχονται ως μέρος αυτής της έκδοσης της CPython. Ορισμένα :ref:`third " +"party tools ` προσφέρουν απλούστερες και πιο εξελιγμένες " +"προσεγγίσεις για τη δημιουργία επεκτάσεων C και C++ για Python." -#: extending/index.rst:37 -msgid "" -"`Python Packaging User Guide: Binary Extensions `_" -msgstr "" -"`Οδηγός Χρήστη για Δημιουργία πακέτων Python: Δυαδικές Επεκτάσεις `_" - -#: extending/index.rst:38 -msgid "" -"The Python Packaging User Guide not only covers several available tools that " -"simplify the creation of binary extensions, but also discusses the various " -"reasons why creating an extension module may be desirable in the first place." -msgstr "" -"Ο Οδηγός Χρήστη για Δημιουργία πακέτων της Python δεν καλύπτει μόνο διάφορα " -"διαθέσιμα εργαλεία που απλοποιούν τη δημιουργία δυαδικών επεκτάσεων, αλλά " -"επίσης συζητά και τους διάφορους λόγους για τους οποίους μπορεί να είναι " -"επιθυμητή η δημιουργία ενός module επέκτασης σε πρώτη φάση." - -#: extending/index.rst:45 +#: extending/index.rst:35 msgid "Creating extensions without third party tools" msgstr "Δημιουργία επεκτάσεων χωρίς εργαλεία τρίτων" -#: extending/index.rst:47 +#: extending/index.rst:37 msgid "" "This section of the guide covers creating C and C++ extensions without " "assistance from third party tools. It is intended primarily for creators of " @@ -118,11 +96,15 @@ msgstr "" "των εργαλείων, παρά ως προτεινόμενη μέθοδος για τη δημιουργία δικών σας " "επεκτάσεων σε C." -#: extending/index.rst:63 +#: extending/index.rst:44 +msgid ":pep:`489` -- Multi-phase extension module initialization" +msgstr ":pep:`489` -- Αρχικοποίηση πολυφασικής μονάδας επέκταση" + +#: extending/index.rst:57 msgid "Embedding the CPython runtime in a larger application" msgstr "Ενσωμάτωση του χρόνου εκτέλεσης της CPython σε μεγαλύτερη εφαρμογή" -#: extending/index.rst:65 +#: extending/index.rst:59 msgid "" "Sometimes, rather than creating an extension that runs inside the Python " "interpreter as the main application, it is desirable to instead embed the " @@ -133,3 +115,22 @@ msgstr "" "διερμηνέα της Python ως κύρια εφαρμογή, είναι προτιμότερο να ενσωματώσουμε " "τον χρόνο εκτέλεσης της CPython σε μια μεγαλύτερη εφαρμογή. Αυτή η ενότητα " "καλύπτει μερικές λεπτομέρειες για το πώς να το κάνετε αυτό με επιτυχία." + +#~ msgid "" +#~ "`Python Packaging User Guide: Binary Extensions `_" +#~ msgstr "" +#~ "`Οδηγός Χρήστη για Δημιουργία πακέτων Python: Δυαδικές Επεκτάσεις " +#~ "`_" + +#~ msgid "" +#~ "The Python Packaging User Guide not only covers several available tools " +#~ "that simplify the creation of binary extensions, but also discusses the " +#~ "various reasons why creating an extension module may be desirable in the " +#~ "first place." +#~ msgstr "" +#~ "Ο Οδηγός Χρήστη για Δημιουργία πακέτων της Python δεν καλύπτει μόνο " +#~ "διάφορα διαθέσιμα εργαλεία που απλοποιούν τη δημιουργία δυαδικών " +#~ "επεκτάσεων, αλλά επίσης συζητά και τους διάφορους λόγους για τους οποίους " +#~ "μπορεί να είναι επιθυμητή η δημιουργία ενός module επέκτασης σε πρώτη " +#~ "φάση." diff --git a/extending/newtypes.po b/extending/newtypes.po index 07d2d84d..251298f6 100644 --- a/extending/newtypes.po +++ b/extending/newtypes.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/extending/newtypes_tutorial.po b/extending/newtypes_tutorial.po index 89c02330..3ffff431 100644 --- a/extending/newtypes_tutorial.po +++ b/extending/newtypes_tutorial.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -87,31 +87,41 @@ msgid "" " .tp_new = PyType_GenericNew,\n" "};\n" "\n" -"static PyModuleDef custommodule = {\n" +"static int\n" +"custom_module_exec(PyObject *m)\n" +"{\n" +" if (PyType_Ready(&CustomType) < 0) {\n" +" return -1;\n" +" }\n" +"\n" +" if (PyModule_AddObjectRef(m, \"Custom\", (PyObject *) &CustomType) < 0) " +"{\n" +" return -1;\n" +" }\n" +"\n" +" return 0;\n" +"}\n" +"\n" +"static PyModuleDef_Slot custom_module_slots[] = {\n" +" {Py_mod_exec, custom_module_exec},\n" +" // Just use this while using static types\n" +" {Py_mod_multiple_interpreters, " +"Py_MOD_MULTIPLE_INTERPRETERS_NOT_SUPPORTED},\n" +" {0, NULL}\n" +"};\n" +"\n" +"static PyModuleDef custom_module = {\n" " .m_base = PyModuleDef_HEAD_INIT,\n" " .m_name = \"custom\",\n" " .m_doc = \"Example module that creates an extension type.\",\n" -" .m_size = -1,\n" +" .m_size = 0,\n" +" .m_slots = custom_module_slots,\n" "};\n" "\n" "PyMODINIT_FUNC\n" "PyInit_custom(void)\n" "{\n" -" PyObject *m;\n" -" if (PyType_Ready(&CustomType) < 0)\n" -" return NULL;\n" -"\n" -" m = PyModule_Create(&custommodule);\n" -" if (m == NULL)\n" -" return NULL;\n" -"\n" -" if (PyModule_AddObjectRef(m, \"Custom\", (PyObject *) &CustomType) < 0) " -"{\n" -" Py_DECREF(m);\n" -" return NULL;\n" -" }\n" -"\n" -" return m;\n" +" return PyModuleDef_Init(&custom_module);\n" "}\n" msgstr "" @@ -136,22 +146,24 @@ msgstr "" #: extending/newtypes_tutorial.rst:58 msgid "" -"How to initialize the :mod:`!custom` module: this is the ``PyInit_custom`` " -"function and the associated ``custommodule`` struct." +"How to define and execute the :mod:`!custom` module: this is the " +"``PyInit_custom`` function and the associated ``custom_module`` struct for " +"defining the module, and the ``custom_module_exec`` function to set up a " +"fresh module object." msgstr "" -#: extending/newtypes_tutorial.rst:61 +#: extending/newtypes_tutorial.rst:63 msgid "The first bit is::" msgstr "" -#: extending/newtypes_tutorial.rst:63 +#: extending/newtypes_tutorial.rst:65 msgid "" "typedef struct {\n" " PyObject_HEAD\n" "} CustomObject;" msgstr "" -#: extending/newtypes_tutorial.rst:67 +#: extending/newtypes_tutorial.rst:69 msgid "" "This is what a Custom object will contain. ``PyObject_HEAD`` is mandatory " "at the start of each object struct and defines a field called ``ob_base`` of " @@ -162,20 +174,20 @@ msgid "" "builds `." msgstr "" -#: extending/newtypes_tutorial.rst:76 +#: extending/newtypes_tutorial.rst:78 msgid "" "There is no semicolon above after the :c:macro:`PyObject_HEAD` macro. Be " "wary of adding one by accident: some compilers will complain." msgstr "" -#: extending/newtypes_tutorial.rst:79 +#: extending/newtypes_tutorial.rst:81 msgid "" "Of course, objects generally store additional data besides the standard " "``PyObject_HEAD`` boilerplate; for example, here is the definition for " "standard Python floats::" msgstr "" -#: extending/newtypes_tutorial.rst:83 +#: extending/newtypes_tutorial.rst:85 msgid "" "typedef struct {\n" " PyObject_HEAD\n" @@ -183,11 +195,11 @@ msgid "" "} PyFloatObject;" msgstr "" -#: extending/newtypes_tutorial.rst:88 +#: extending/newtypes_tutorial.rst:90 msgid "The second bit is the definition of the type object. ::" msgstr "" -#: extending/newtypes_tutorial.rst:90 +#: extending/newtypes_tutorial.rst:92 msgid "" "static PyTypeObject CustomType = {\n" " .ob_base = PyVarObject_HEAD_INIT(NULL, 0)\n" @@ -200,14 +212,14 @@ msgid "" "};" msgstr "" -#: extending/newtypes_tutorial.rst:101 +#: extending/newtypes_tutorial.rst:103 msgid "" "We recommend using C99-style designated initializers as above, to avoid " "listing all the :c:type:`PyTypeObject` fields that you don't care about and " "also to avoid caring about the fields' declaration order." msgstr "" -#: extending/newtypes_tutorial.rst:105 +#: extending/newtypes_tutorial.rst:107 msgid "" "The actual definition of :c:type:`PyTypeObject` in :file:`object.h` has many " "more :ref:`fields ` than the definition above. The remaining " @@ -215,31 +227,31 @@ msgid "" "to not specify them explicitly unless you need them." msgstr "" -#: extending/newtypes_tutorial.rst:110 +#: extending/newtypes_tutorial.rst:112 msgid "We're going to pick it apart, one field at a time::" msgstr "" -#: extending/newtypes_tutorial.rst:112 +#: extending/newtypes_tutorial.rst:114 msgid ".ob_base = PyVarObject_HEAD_INIT(NULL, 0)" msgstr "" -#: extending/newtypes_tutorial.rst:114 +#: extending/newtypes_tutorial.rst:116 msgid "" "This line is mandatory boilerplate to initialize the ``ob_base`` field " "mentioned above. ::" msgstr "" -#: extending/newtypes_tutorial.rst:117 +#: extending/newtypes_tutorial.rst:119 msgid ".tp_name = \"custom.Custom\"," msgstr "" -#: extending/newtypes_tutorial.rst:119 +#: extending/newtypes_tutorial.rst:121 msgid "" "The name of our type. This will appear in the default textual " "representation of our objects and in some error messages, for example:" msgstr "" -#: extending/newtypes_tutorial.rst:122 +#: extending/newtypes_tutorial.rst:124 msgid "" ">>> \"\" + custom.Custom()\n" "Traceback (most recent call last):\n" @@ -247,7 +259,7 @@ msgid "" "TypeError: can only concatenate str (not \"custom.Custom\") to str" msgstr "" -#: extending/newtypes_tutorial.rst:129 +#: extending/newtypes_tutorial.rst:131 msgid "" "Note that the name is a dotted name that includes both the module name and " "the name of the type within the module. The module in this case is :mod:`!" @@ -256,20 +268,20 @@ msgid "" "your type compatible with the :mod:`pydoc` and :mod:`pickle` modules. ::" msgstr "" -#: extending/newtypes_tutorial.rst:135 +#: extending/newtypes_tutorial.rst:137 msgid "" ".tp_basicsize = sizeof(CustomObject),\n" ".tp_itemsize = 0," msgstr "" -#: extending/newtypes_tutorial.rst:138 +#: extending/newtypes_tutorial.rst:140 msgid "" "This is so that Python knows how much memory to allocate when creating new :" "class:`!Custom` instances. :c:member:`~PyTypeObject.tp_itemsize` is only " "used for variable-sized objects and should otherwise be zero." msgstr "" -#: extending/newtypes_tutorial.rst:144 +#: extending/newtypes_tutorial.rst:146 msgid "" "If you want your type to be subclassable from Python, and your type has the " "same :c:member:`~PyTypeObject.tp_basicsize` as its base type, you may have " @@ -283,31 +295,31 @@ msgid "" "your base type, and therefore increasing its size." msgstr "" -#: extending/newtypes_tutorial.rst:154 +#: extending/newtypes_tutorial.rst:156 msgid "We set the class flags to :c:macro:`Py_TPFLAGS_DEFAULT`. ::" msgstr "" -#: extending/newtypes_tutorial.rst:156 +#: extending/newtypes_tutorial.rst:158 msgid ".tp_flags = Py_TPFLAGS_DEFAULT," msgstr "" -#: extending/newtypes_tutorial.rst:158 +#: extending/newtypes_tutorial.rst:160 msgid "" "All types should include this constant in their flags. It enables all of " "the members defined until at least Python 3.3. If you need further members, " "you will need to OR the corresponding flags." msgstr "" -#: extending/newtypes_tutorial.rst:162 +#: extending/newtypes_tutorial.rst:164 msgid "" "We provide a doc string for the type in :c:member:`~PyTypeObject.tp_doc`. ::" msgstr "" -#: extending/newtypes_tutorial.rst:164 +#: extending/newtypes_tutorial.rst:166 msgid ".tp_doc = PyDoc_STR(\"Custom objects\")," msgstr "" -#: extending/newtypes_tutorial.rst:166 +#: extending/newtypes_tutorial.rst:168 msgid "" "To enable object creation, we have to provide a :c:member:`~PyTypeObject." "tp_new` handler. This is the equivalent of the Python method :meth:`~object." @@ -316,56 +328,56 @@ msgid "" "`PyType_GenericNew`. ::" msgstr "" -#: extending/newtypes_tutorial.rst:171 +#: extending/newtypes_tutorial.rst:173 msgid ".tp_new = PyType_GenericNew," msgstr "" -#: extending/newtypes_tutorial.rst:173 +#: extending/newtypes_tutorial.rst:175 msgid "" "Everything else in the file should be familiar, except for some code in :c:" -"func:`!PyInit_custom`::" +"func:`!custom_module_exec`::" msgstr "" -#: extending/newtypes_tutorial.rst:176 +#: extending/newtypes_tutorial.rst:178 msgid "" -"if (PyType_Ready(&CustomType) < 0)\n" -" return;" +"if (PyType_Ready(&CustomType) < 0) {\n" +" return -1;\n" +"}" msgstr "" -#: extending/newtypes_tutorial.rst:179 +#: extending/newtypes_tutorial.rst:182 msgid "" "This initializes the :class:`!Custom` type, filling in a number of members " "to the appropriate default values, including :c:member:`~PyObject.ob_type` " "that we initially set to ``NULL``. ::" msgstr "" -#: extending/newtypes_tutorial.rst:183 +#: extending/newtypes_tutorial.rst:186 msgid "" "if (PyModule_AddObjectRef(m, \"Custom\", (PyObject *) &CustomType) < 0) {\n" -" Py_DECREF(m);\n" -" return NULL;\n" +" return -1;\n" "}" msgstr "" -#: extending/newtypes_tutorial.rst:188 +#: extending/newtypes_tutorial.rst:190 msgid "" "This adds the type to the module dictionary. This allows us to create :" "class:`!Custom` instances by calling the :class:`!Custom` class:" msgstr "" -#: extending/newtypes_tutorial.rst:191 +#: extending/newtypes_tutorial.rst:193 msgid "" ">>> import custom\n" ">>> mycustom = custom.Custom()" msgstr "" -#: extending/newtypes_tutorial.rst:196 +#: extending/newtypes_tutorial.rst:198 msgid "" "That's it! All that remains is to build it; put the above code in a file " "called :file:`custom.c`," msgstr "" -#: extending/newtypes_tutorial.rst:199 +#: extending/newtypes_tutorial.rst:201 msgid "" "[build-system]\n" "requires = [\"setuptools\"]\n" @@ -376,53 +388,53 @@ msgid "" "version = \"1\"\n" msgstr "" -#: extending/newtypes_tutorial.rst:201 +#: extending/newtypes_tutorial.rst:203 msgid "in a file called :file:`pyproject.toml`, and" msgstr "" -#: extending/newtypes_tutorial.rst:203 +#: extending/newtypes_tutorial.rst:205 msgid "" "from setuptools import Extension, setup\n" "setup(ext_modules=[Extension(\"custom\", [\"custom.c\"])])" msgstr "" -#: extending/newtypes_tutorial.rst:208 +#: extending/newtypes_tutorial.rst:210 msgid "in a file called :file:`setup.py`; then typing" msgstr "" -#: extending/newtypes_tutorial.rst:210 extending/newtypes_tutorial.rst:548 +#: extending/newtypes_tutorial.rst:212 extending/newtypes_tutorial.rst:550 msgid "$ python -m pip install ." msgstr "" -#: extending/newtypes_tutorial.rst:214 +#: extending/newtypes_tutorial.rst:216 msgid "" "in a shell should produce a file :file:`custom.so` in a subdirectory and " "install it; now fire up Python --- you should be able to ``import custom`` " "and play around with ``Custom`` objects." msgstr "" -#: extending/newtypes_tutorial.rst:218 +#: extending/newtypes_tutorial.rst:220 msgid "That wasn't so hard, was it?" msgstr "" -#: extending/newtypes_tutorial.rst:220 +#: extending/newtypes_tutorial.rst:222 msgid "" "Of course, the current Custom type is pretty uninteresting. It has no data " "and doesn't do anything. It can't even be subclassed." msgstr "" -#: extending/newtypes_tutorial.rst:225 +#: extending/newtypes_tutorial.rst:227 msgid "Adding data and methods to the Basic example" msgstr "" -#: extending/newtypes_tutorial.rst:227 +#: extending/newtypes_tutorial.rst:229 msgid "" "Let's extend the basic example to add some data and methods. Let's also " "make the type usable as a base class. We'll create a new module, :mod:`!" "custom2` that adds these capabilities:" msgstr "" -#: extending/newtypes_tutorial.rst:231 +#: extending/newtypes_tutorial.rst:233 msgid "" "#define PY_SSIZE_T_CLEAN\n" "#include \n" @@ -532,39 +544,48 @@ msgid "" " .tp_methods = Custom_methods,\n" "};\n" "\n" -"static PyModuleDef custommodule = {\n" -" .m_base =PyModuleDef_HEAD_INIT,\n" +"static int\n" +"custom_module_exec(PyObject *m)\n" +"{\n" +" if (PyType_Ready(&CustomType) < 0) {\n" +" return -1;\n" +" }\n" +"\n" +" if (PyModule_AddObjectRef(m, \"Custom\", (PyObject *) &CustomType) < 0) " +"{\n" +" return -1;\n" +" }\n" +"\n" +" return 0;\n" +"}\n" +"\n" +"static PyModuleDef_Slot custom_module_slots[] = {\n" +" {Py_mod_exec, custom_module_exec},\n" +" {Py_mod_multiple_interpreters, " +"Py_MOD_MULTIPLE_INTERPRETERS_NOT_SUPPORTED},\n" +" {0, NULL}\n" +"};\n" +"\n" +"static PyModuleDef custom_module = {\n" +" .m_base = PyModuleDef_HEAD_INIT,\n" " .m_name = \"custom2\",\n" " .m_doc = \"Example module that creates an extension type.\",\n" -" .m_size = -1,\n" +" .m_size = 0,\n" +" .m_slots = custom_module_slots,\n" "};\n" "\n" "PyMODINIT_FUNC\n" "PyInit_custom2(void)\n" "{\n" -" PyObject *m;\n" -" if (PyType_Ready(&CustomType) < 0)\n" -" return NULL;\n" -"\n" -" m = PyModule_Create(&custommodule);\n" -" if (m == NULL)\n" -" return NULL;\n" -"\n" -" if (PyModule_AddObjectRef(m, \"Custom\", (PyObject *) &CustomType) < 0) " -"{\n" -" Py_DECREF(m);\n" -" return NULL;\n" -" }\n" -"\n" -" return m;\n" +" return PyModuleDef_Init(&custom_module);\n" "}\n" msgstr "" -#: extending/newtypes_tutorial.rst:234 +#: extending/newtypes_tutorial.rst:236 msgid "This version of the module has a number of changes." msgstr "" -#: extending/newtypes_tutorial.rst:236 +#: extending/newtypes_tutorial.rst:238 msgid "" "The :class:`!Custom` type now has three data attributes in its C struct, " "*first*, *last*, and *number*. The *first* and *last* variables are Python " @@ -572,11 +593,11 @@ msgid "" "integer." msgstr "" -#: extending/newtypes_tutorial.rst:240 +#: extending/newtypes_tutorial.rst:242 msgid "The object structure is updated accordingly::" msgstr "" -#: extending/newtypes_tutorial.rst:242 +#: extending/newtypes_tutorial.rst:244 msgid "" "typedef struct {\n" " PyObject_HEAD\n" @@ -586,13 +607,13 @@ msgid "" "} CustomObject;" msgstr "" -#: extending/newtypes_tutorial.rst:249 +#: extending/newtypes_tutorial.rst:251 msgid "" "Because we now have data to manage, we have to be more careful about object " "allocation and deallocation. At a minimum, we need a deallocation method::" msgstr "" -#: extending/newtypes_tutorial.rst:252 +#: extending/newtypes_tutorial.rst:254 msgid "" "static void\n" "Custom_dealloc(PyObject *op)\n" @@ -604,15 +625,15 @@ msgid "" "}" msgstr "" -#: extending/newtypes_tutorial.rst:261 +#: extending/newtypes_tutorial.rst:263 msgid "which is assigned to the :c:member:`~PyTypeObject.tp_dealloc` member::" msgstr "" -#: extending/newtypes_tutorial.rst:263 +#: extending/newtypes_tutorial.rst:265 msgid ".tp_dealloc = Custom_dealloc," msgstr "" -#: extending/newtypes_tutorial.rst:265 +#: extending/newtypes_tutorial.rst:267 msgid "" "This method first clears the reference counts of the two Python attributes. :" "c:func:`Py_XDECREF` correctly handles the case where its argument is " @@ -623,7 +644,7 @@ msgid "" "an instance of a subclass." msgstr "" -#: extending/newtypes_tutorial.rst:275 +#: extending/newtypes_tutorial.rst:277 msgid "" "The explicit cast to ``CustomObject *`` above is needed because we defined " "``Custom_dealloc`` to take a ``PyObject *`` argument, as the ``tp_dealloc`` " @@ -633,14 +654,14 @@ msgid "" "``(CustomObject *)`` is safe. This is object-oriented polymorphism, in C!" msgstr "" -#: extending/newtypes_tutorial.rst:283 +#: extending/newtypes_tutorial.rst:285 msgid "" "In existing code, or in previous versions of this tutorial, you might see " "similar functions take a pointer to the subtype object structure " "(``CustomObject*``) directly, like this::" msgstr "" -#: extending/newtypes_tutorial.rst:287 +#: extending/newtypes_tutorial.rst:289 msgid "" "Custom_dealloc(CustomObject *self)\n" "{\n" @@ -652,19 +673,19 @@ msgid "" ".tp_dealloc = (destructor) Custom_dealloc," msgstr "" -#: extending/newtypes_tutorial.rst:296 +#: extending/newtypes_tutorial.rst:298 msgid "" "This does the same thing on all architectures that CPython supports, but " "according to the C standard, it invokes undefined behavior." msgstr "" -#: extending/newtypes_tutorial.rst:300 +#: extending/newtypes_tutorial.rst:302 msgid "" "We want to make sure that the first and last names are initialized to empty " "strings, so we provide a ``tp_new`` implementation::" msgstr "" -#: extending/newtypes_tutorial.rst:303 +#: extending/newtypes_tutorial.rst:305 msgid "" "static PyObject *\n" "Custom_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n" @@ -688,15 +709,15 @@ msgid "" "}" msgstr "" -#: extending/newtypes_tutorial.rst:324 +#: extending/newtypes_tutorial.rst:326 msgid "and install it in the :c:member:`~PyTypeObject.tp_new` member::" msgstr "" -#: extending/newtypes_tutorial.rst:326 +#: extending/newtypes_tutorial.rst:328 msgid ".tp_new = Custom_new," msgstr "" -#: extending/newtypes_tutorial.rst:328 +#: extending/newtypes_tutorial.rst:330 msgid "" "The ``tp_new`` handler is responsible for creating (as opposed to " "initializing) objects of the type. It is exposed in Python as the :meth:" @@ -707,7 +728,7 @@ msgid "" "``first`` and ``last`` attributes to non-``NULL`` default values." msgstr "" -#: extending/newtypes_tutorial.rst:336 +#: extending/newtypes_tutorial.rst:338 msgid "" "``tp_new`` is passed the type being instantiated (not necessarily " "``CustomType``, if a subclass is instantiated) and any arguments passed when " @@ -717,29 +738,29 @@ msgid "" "k.a. ``tp_init`` in C or ``__init__`` in Python) methods." msgstr "" -#: extending/newtypes_tutorial.rst:344 +#: extending/newtypes_tutorial.rst:346 msgid "" "``tp_new`` shouldn't call ``tp_init`` explicitly, as the interpreter will do " "it itself." msgstr "" -#: extending/newtypes_tutorial.rst:347 +#: extending/newtypes_tutorial.rst:349 msgid "" "The ``tp_new`` implementation calls the :c:member:`~PyTypeObject.tp_alloc` " "slot to allocate memory::" msgstr "" -#: extending/newtypes_tutorial.rst:350 +#: extending/newtypes_tutorial.rst:352 msgid "self = (CustomObject *) type->tp_alloc(type, 0);" msgstr "" -#: extending/newtypes_tutorial.rst:352 +#: extending/newtypes_tutorial.rst:354 msgid "" "Since memory allocation may fail, we must check the :c:member:`~PyTypeObject." "tp_alloc` result against ``NULL`` before proceeding." msgstr "" -#: extending/newtypes_tutorial.rst:356 +#: extending/newtypes_tutorial.rst:358 msgid "" "We didn't fill the :c:member:`~PyTypeObject.tp_alloc` slot ourselves. " "Rather :c:func:`PyType_Ready` fills it for us by inheriting it from our base " @@ -747,7 +768,7 @@ msgid "" "allocation strategy." msgstr "" -#: extending/newtypes_tutorial.rst:362 +#: extending/newtypes_tutorial.rst:364 msgid "" "If you are creating a co-operative :c:member:`~PyTypeObject.tp_new` (one " "that calls a base type's :c:member:`~PyTypeObject.tp_new` or :meth:`~object." @@ -760,13 +781,13 @@ msgid "" "subclasses without getting a :exc:`TypeError`.)" msgstr "" -#: extending/newtypes_tutorial.rst:372 +#: extending/newtypes_tutorial.rst:374 msgid "" "We also define an initialization function which accepts arguments to provide " "initial values for our instance::" msgstr "" -#: extending/newtypes_tutorial.rst:375 +#: extending/newtypes_tutorial.rst:377 msgid "" "static int\n" "Custom_init(PyObject *op, PyObject *args, PyObject *kwds)\n" @@ -796,15 +817,15 @@ msgid "" "}" msgstr "" -#: extending/newtypes_tutorial.rst:402 +#: extending/newtypes_tutorial.rst:404 msgid "by filling the :c:member:`~PyTypeObject.tp_init` slot. ::" msgstr "" -#: extending/newtypes_tutorial.rst:404 +#: extending/newtypes_tutorial.rst:406 msgid ".tp_init = Custom_init," msgstr "" -#: extending/newtypes_tutorial.rst:406 +#: extending/newtypes_tutorial.rst:408 msgid "" "The :c:member:`~PyTypeObject.tp_init` slot is exposed in Python as the :meth:" "`~object.__init__` method. It is used to initialize an object after it's " @@ -812,7 +833,7 @@ msgid "" "they should return either ``0`` on success or ``-1`` on error." msgstr "" -#: extending/newtypes_tutorial.rst:411 +#: extending/newtypes_tutorial.rst:413 msgid "" "Unlike the ``tp_new`` handler, there is no guarantee that ``tp_init`` is " "called at all (for example, the :mod:`pickle` module by default doesn't " @@ -823,7 +844,7 @@ msgid "" "``first`` member like this::" msgstr "" -#: extending/newtypes_tutorial.rst:419 +#: extending/newtypes_tutorial.rst:421 msgid "" "if (first) {\n" " Py_XDECREF(self->first);\n" @@ -832,7 +853,7 @@ msgid "" "}" msgstr "" -#: extending/newtypes_tutorial.rst:425 +#: extending/newtypes_tutorial.rst:427 msgid "" "But this would be risky. Our type doesn't restrict the type of the " "``first`` member, so it could be any kind of object. It could have a " @@ -842,38 +863,38 @@ msgid "" "accesses and modifies our object." msgstr "" -#: extending/newtypes_tutorial.rst:432 +#: extending/newtypes_tutorial.rst:434 msgid "" "To be paranoid and protect ourselves against this possibility, we almost " "always reassign members before decrementing their reference counts. When " "don't we have to do this?" msgstr "" -#: extending/newtypes_tutorial.rst:436 +#: extending/newtypes_tutorial.rst:438 msgid "when we absolutely know that the reference count is greater than 1;" msgstr "" -#: extending/newtypes_tutorial.rst:438 +#: extending/newtypes_tutorial.rst:440 msgid "" "when we know that deallocation of the object [#]_ will neither detach the :" "term:`thread state ` nor cause any calls back into " "our type's code;" msgstr "" -#: extending/newtypes_tutorial.rst:441 +#: extending/newtypes_tutorial.rst:443 msgid "" "when decrementing a reference count in a :c:member:`~PyTypeObject." "tp_dealloc` handler on a type which doesn't support cyclic garbage " "collection [#]_." msgstr "" -#: extending/newtypes_tutorial.rst:444 +#: extending/newtypes_tutorial.rst:446 msgid "" "We want to expose our instance variables as attributes. There are a number " "of ways to do that. The simplest way is to define member definitions::" msgstr "" -#: extending/newtypes_tutorial.rst:447 +#: extending/newtypes_tutorial.rst:449 msgid "" "static PyMemberDef Custom_members[] = {\n" " {\"first\", Py_T_OBJECT_EX, offsetof(CustomObject, first), 0,\n" @@ -886,23 +907,23 @@ msgid "" "};" msgstr "" -#: extending/newtypes_tutorial.rst:457 +#: extending/newtypes_tutorial.rst:459 msgid "" "and put the definitions in the :c:member:`~PyTypeObject.tp_members` slot::" msgstr "" -#: extending/newtypes_tutorial.rst:459 +#: extending/newtypes_tutorial.rst:461 msgid ".tp_members = Custom_members," msgstr "" -#: extending/newtypes_tutorial.rst:461 +#: extending/newtypes_tutorial.rst:463 msgid "" "Each member definition has a member name, type, offset, access flags and " "documentation string. See the :ref:`Generic-Attribute-Management` section " "below for details." msgstr "" -#: extending/newtypes_tutorial.rst:465 +#: extending/newtypes_tutorial.rst:467 msgid "" "A disadvantage of this approach is that it doesn't provide a way to restrict " "the types of objects that can be assigned to the Python attributes. We " @@ -913,13 +934,13 @@ msgid "" "deleted." msgstr "" -#: extending/newtypes_tutorial.rst:472 +#: extending/newtypes_tutorial.rst:474 msgid "" "We define a single method, :meth:`!Custom.name`, that outputs the objects " "name as the concatenation of the first and last names. ::" msgstr "" -#: extending/newtypes_tutorial.rst:475 +#: extending/newtypes_tutorial.rst:477 msgid "" "static PyObject *\n" "Custom_name(PyObject *op, PyObject *Py_UNUSED(dummy))\n" @@ -937,7 +958,7 @@ msgid "" "}" msgstr "" -#: extending/newtypes_tutorial.rst:490 +#: extending/newtypes_tutorial.rst:492 msgid "" "The method is implemented as a C function that takes a :class:`!Custom` (or :" "class:`!Custom` subclass) instance as the first argument. Methods always " @@ -947,13 +968,13 @@ msgid "" "method is equivalent to the Python method:" msgstr "" -#: extending/newtypes_tutorial.rst:497 +#: extending/newtypes_tutorial.rst:499 msgid "" "def name(self):\n" " return \"%s %s\" % (self.first, self.last)" msgstr "" -#: extending/newtypes_tutorial.rst:502 +#: extending/newtypes_tutorial.rst:504 msgid "" "Note that we have to check for the possibility that our :attr:`!first` and :" "attr:`!last` members are ``NULL``. This is because they can be deleted, in " @@ -962,13 +983,13 @@ msgid "" "We'll see how to do that in the next section." msgstr "" -#: extending/newtypes_tutorial.rst:508 +#: extending/newtypes_tutorial.rst:510 msgid "" "Now that we've defined the method, we need to create an array of method " "definitions::" msgstr "" -#: extending/newtypes_tutorial.rst:511 +#: extending/newtypes_tutorial.rst:513 msgid "" "static PyMethodDef Custom_methods[] = {\n" " {\"name\", Custom_name, METH_NOARGS,\n" @@ -978,21 +999,21 @@ msgid "" "};" msgstr "" -#: extending/newtypes_tutorial.rst:518 +#: extending/newtypes_tutorial.rst:520 msgid "" "(note that we used the :c:macro:`METH_NOARGS` flag to indicate that the " "method is expecting no arguments other than *self*)" msgstr "" -#: extending/newtypes_tutorial.rst:521 +#: extending/newtypes_tutorial.rst:523 msgid "and assign it to the :c:member:`~PyTypeObject.tp_methods` slot::" msgstr "" -#: extending/newtypes_tutorial.rst:523 +#: extending/newtypes_tutorial.rst:525 msgid ".tp_methods = Custom_methods," msgstr "" -#: extending/newtypes_tutorial.rst:525 +#: extending/newtypes_tutorial.rst:527 msgid "" "Finally, we'll make our type usable as a base class for subclassing. We've " "written our methods carefully so far so that they don't make any assumptions " @@ -1000,22 +1021,22 @@ msgid "" "to add the :c:macro:`Py_TPFLAGS_BASETYPE` to our class flag definition::" msgstr "" -#: extending/newtypes_tutorial.rst:530 +#: extending/newtypes_tutorial.rst:532 msgid ".tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE," msgstr "" -#: extending/newtypes_tutorial.rst:532 +#: extending/newtypes_tutorial.rst:534 msgid "" "We rename :c:func:`!PyInit_custom` to :c:func:`!PyInit_custom2`, update the " "module name in the :c:type:`PyModuleDef` struct, and update the full class " "name in the :c:type:`PyTypeObject` struct." msgstr "" -#: extending/newtypes_tutorial.rst:536 +#: extending/newtypes_tutorial.rst:538 msgid "Finally, we update our :file:`setup.py` file to include the new module," msgstr "" -#: extending/newtypes_tutorial.rst:538 +#: extending/newtypes_tutorial.rst:540 msgid "" "from setuptools import Extension, setup\n" "setup(ext_modules=[\n" @@ -1024,15 +1045,15 @@ msgid "" "])" msgstr "" -#: extending/newtypes_tutorial.rst:546 +#: extending/newtypes_tutorial.rst:548 msgid "and then we re-install so that we can ``import custom2``:" msgstr "" -#: extending/newtypes_tutorial.rst:553 +#: extending/newtypes_tutorial.rst:555 msgid "Providing finer control over data attributes" msgstr "" -#: extending/newtypes_tutorial.rst:555 +#: extending/newtypes_tutorial.rst:557 msgid "" "In this section, we'll provide finer control over how the :attr:`!first` " "and :attr:`!last` attributes are set in the :class:`!Custom` example. In the " @@ -1041,7 +1062,7 @@ msgid "" "make sure that these attributes always contain strings." msgstr "" -#: extending/newtypes_tutorial.rst:561 +#: extending/newtypes_tutorial.rst:563 msgid "" "#define PY_SSIZE_T_CLEAN\n" "#include \n" @@ -1198,42 +1219,51 @@ msgid "" " .tp_getset = Custom_getsetters,\n" "};\n" "\n" -"static PyModuleDef custommodule = {\n" +"static int\n" +"custom_module_exec(PyObject *m)\n" +"{\n" +" if (PyType_Ready(&CustomType) < 0) {\n" +" return -1;\n" +" }\n" +"\n" +" if (PyModule_AddObjectRef(m, \"Custom\", (PyObject *) &CustomType) < 0) " +"{\n" +" return -1;\n" +" }\n" +"\n" +" return 0;\n" +"}\n" +"\n" +"static PyModuleDef_Slot custom_module_slots[] = {\n" +" {Py_mod_exec, custom_module_exec},\n" +" {Py_mod_multiple_interpreters, " +"Py_MOD_MULTIPLE_INTERPRETERS_NOT_SUPPORTED},\n" +" {0, NULL}\n" +"};\n" +"\n" +"static PyModuleDef custom_module = {\n" " .m_base = PyModuleDef_HEAD_INIT,\n" " .m_name = \"custom3\",\n" " .m_doc = \"Example module that creates an extension type.\",\n" -" .m_size = -1,\n" +" .m_size = 0,\n" +" .m_slots = custom_module_slots,\n" "};\n" "\n" "PyMODINIT_FUNC\n" "PyInit_custom3(void)\n" "{\n" -" PyObject *m;\n" -" if (PyType_Ready(&CustomType) < 0)\n" -" return NULL;\n" -"\n" -" m = PyModule_Create(&custommodule);\n" -" if (m == NULL)\n" -" return NULL;\n" -"\n" -" if (PyModule_AddObjectRef(m, \"Custom\", (PyObject *) &CustomType) < 0) " -"{\n" -" Py_DECREF(m);\n" -" return NULL;\n" -" }\n" -"\n" -" return m;\n" +" return PyModuleDef_Init(&custom_module);\n" "}\n" msgstr "" -#: extending/newtypes_tutorial.rst:564 +#: extending/newtypes_tutorial.rst:566 msgid "" "To provide greater control, over the :attr:`!first` and :attr:`!last` " "attributes, we'll use custom getter and setter functions. Here are the " "functions for getting and setting the :attr:`!first` attribute::" msgstr "" -#: extending/newtypes_tutorial.rst:568 +#: extending/newtypes_tutorial.rst:570 msgid "" "static PyObject *\n" "Custom_getfirst(PyObject *op, void *closure)\n" @@ -1266,7 +1296,7 @@ msgid "" "}" msgstr "" -#: extending/newtypes_tutorial.rst:597 +#: extending/newtypes_tutorial.rst:599 msgid "" "The getter function is passed a :class:`!Custom` object and a \"closure\", " "which is a void pointer. In this case, the closure is ignored. (The " @@ -1276,7 +1306,7 @@ msgid "" "data in the closure.)" msgstr "" -#: extending/newtypes_tutorial.rst:603 +#: extending/newtypes_tutorial.rst:605 msgid "" "The setter function is passed the :class:`!Custom` object, the new value, " "and the closure. The new value may be ``NULL``, in which case the attribute " @@ -1284,11 +1314,11 @@ msgid "" "deleted or if its new value is not a string." msgstr "" -#: extending/newtypes_tutorial.rst:608 +#: extending/newtypes_tutorial.rst:610 msgid "We create an array of :c:type:`PyGetSetDef` structures::" msgstr "" -#: extending/newtypes_tutorial.rst:610 +#: extending/newtypes_tutorial.rst:612 msgid "" "static PyGetSetDef Custom_getsetters[] = {\n" " {\"first\", Custom_getfirst, Custom_setfirst,\n" @@ -1299,26 +1329,26 @@ msgid "" "};" msgstr "" -#: extending/newtypes_tutorial.rst:618 +#: extending/newtypes_tutorial.rst:620 msgid "and register it in the :c:member:`~PyTypeObject.tp_getset` slot::" msgstr "" -#: extending/newtypes_tutorial.rst:620 +#: extending/newtypes_tutorial.rst:622 msgid ".tp_getset = Custom_getsetters," msgstr "" -#: extending/newtypes_tutorial.rst:622 +#: extending/newtypes_tutorial.rst:624 msgid "" "The last item in a :c:type:`PyGetSetDef` structure is the \"closure\" " "mentioned above. In this case, we aren't using a closure, so we just pass " "``NULL``." msgstr "" -#: extending/newtypes_tutorial.rst:625 +#: extending/newtypes_tutorial.rst:627 msgid "We also remove the member definitions for these attributes::" msgstr "" -#: extending/newtypes_tutorial.rst:627 +#: extending/newtypes_tutorial.rst:629 msgid "" "static PyMemberDef Custom_members[] = {\n" " {\"number\", Py_T_INT, offsetof(CustomObject, number), 0,\n" @@ -1327,13 +1357,13 @@ msgid "" "};" msgstr "" -#: extending/newtypes_tutorial.rst:633 +#: extending/newtypes_tutorial.rst:635 msgid "" "We also need to update the :c:member:`~PyTypeObject.tp_init` handler to only " "allow strings [#]_ to be passed::" msgstr "" -#: extending/newtypes_tutorial.rst:636 +#: extending/newtypes_tutorial.rst:638 msgid "" "static int\n" "Custom_init(PyObject *op, PyObject *args, PyObject *kwds)\n" @@ -1363,7 +1393,7 @@ msgid "" "}" msgstr "" -#: extending/newtypes_tutorial.rst:663 +#: extending/newtypes_tutorial.rst:665 msgid "" "With these changes, we can assure that the ``first`` and ``last`` members " "are never ``NULL`` so we can remove checks for ``NULL`` values in almost all " @@ -1373,32 +1403,32 @@ msgid "" "possibility that the initialization of these members failed in ``tp_new``." msgstr "" -#: extending/newtypes_tutorial.rst:670 +#: extending/newtypes_tutorial.rst:672 msgid "" "We also rename the module initialization function and module name in the " "initialization function, as we did before, and we add an extra definition to " "the :file:`setup.py` file." msgstr "" -#: extending/newtypes_tutorial.rst:676 +#: extending/newtypes_tutorial.rst:678 msgid "Supporting cyclic garbage collection" msgstr "" -#: extending/newtypes_tutorial.rst:678 +#: extending/newtypes_tutorial.rst:680 msgid "" "Python has a :term:`cyclic garbage collector (GC) ` that " "can identify unneeded objects even when their reference counts are not zero. " "This can happen when objects are involved in cycles. For example, consider:" msgstr "" -#: extending/newtypes_tutorial.rst:682 +#: extending/newtypes_tutorial.rst:684 msgid "" ">>> l = []\n" ">>> l.append(l)\n" ">>> del l" msgstr "" -#: extending/newtypes_tutorial.rst:688 +#: extending/newtypes_tutorial.rst:690 msgid "" "In this example, we create a list that contains itself. When we delete it, " "it still has a reference from itself. Its reference count doesn't drop to " @@ -1406,7 +1436,7 @@ msgid "" "out that the list is garbage and free it." msgstr "" -#: extending/newtypes_tutorial.rst:693 +#: extending/newtypes_tutorial.rst:695 msgid "" "In the second version of the :class:`!Custom` example, we allowed any kind " "of object to be stored in the :attr:`!first` or :attr:`!last` attributes " @@ -1415,7 +1445,7 @@ msgid "" "those two reasons, :class:`!Custom` objects can participate in cycles:" msgstr "" -#: extending/newtypes_tutorial.rst:699 +#: extending/newtypes_tutorial.rst:701 msgid "" ">>> import custom3\n" ">>> class Derived(custom3.Custom): pass\n" @@ -1424,7 +1454,7 @@ msgid "" ">>> n.some_attribute = n" msgstr "" -#: extending/newtypes_tutorial.rst:707 +#: extending/newtypes_tutorial.rst:709 msgid "" "To allow a :class:`!Custom` instance participating in a reference cycle to " "be properly detected and collected by the cyclic GC, our :class:`!Custom` " @@ -1432,7 +1462,7 @@ msgid "" "these slots:" msgstr "" -#: extending/newtypes_tutorial.rst:711 +#: extending/newtypes_tutorial.rst:713 msgid "" "#define PY_SSIZE_T_CLEAN\n" "#include \n" @@ -1609,41 +1639,50 @@ msgid "" " .tp_getset = Custom_getsetters,\n" "};\n" "\n" -"static PyModuleDef custommodule = {\n" +"static int\n" +"custom_module_exec(PyObject *m)\n" +"{\n" +" if (PyType_Ready(&CustomType) < 0) {\n" +" return -1;\n" +" }\n" +"\n" +" if (PyModule_AddObjectRef(m, \"Custom\", (PyObject *) &CustomType) < 0) " +"{\n" +" return -1;\n" +" }\n" +"\n" +" return 0;\n" +"}\n" +"\n" +"static PyModuleDef_Slot custom_module_slots[] = {\n" +" {Py_mod_exec, custom_module_exec},\n" +" {Py_mod_multiple_interpreters, " +"Py_MOD_MULTIPLE_INTERPRETERS_NOT_SUPPORTED},\n" +" {0, NULL}\n" +"};\n" +"\n" +"static PyModuleDef custom_module = {\n" " .m_base = PyModuleDef_HEAD_INIT,\n" " .m_name = \"custom4\",\n" " .m_doc = \"Example module that creates an extension type.\",\n" -" .m_size = -1,\n" +" .m_size = 0,\n" +" .m_slots = custom_module_slots,\n" "};\n" "\n" "PyMODINIT_FUNC\n" "PyInit_custom4(void)\n" "{\n" -" PyObject *m;\n" -" if (PyType_Ready(&CustomType) < 0)\n" -" return NULL;\n" -"\n" -" m = PyModule_Create(&custommodule);\n" -" if (m == NULL)\n" -" return NULL;\n" -"\n" -" if (PyModule_AddObjectRef(m, \"Custom\", (PyObject *) &CustomType) < 0) " -"{\n" -" Py_DECREF(m);\n" -" return NULL;\n" -" }\n" -"\n" -" return m;\n" +" return PyModuleDef_Init(&custom_module);\n" "}\n" msgstr "" -#: extending/newtypes_tutorial.rst:714 +#: extending/newtypes_tutorial.rst:716 msgid "" "First, the traversal method lets the cyclic GC know about subobjects that " "could participate in cycles::" msgstr "" -#: extending/newtypes_tutorial.rst:717 +#: extending/newtypes_tutorial.rst:719 msgid "" "static int\n" "Custom_traverse(PyObject *op, visitproc visit, void *arg)\n" @@ -1664,7 +1703,7 @@ msgid "" "}" msgstr "" -#: extending/newtypes_tutorial.rst:735 +#: extending/newtypes_tutorial.rst:737 msgid "" "For each subobject that can participate in cycles, we need to call the :c:" "func:`!visit` function, which is passed to the traversal method. The :c:func:" @@ -1673,14 +1712,14 @@ msgid "" "be returned if it is non-zero." msgstr "" -#: extending/newtypes_tutorial.rst:741 +#: extending/newtypes_tutorial.rst:743 msgid "" "Python provides a :c:func:`Py_VISIT` macro that automates calling visit " "functions. With :c:func:`Py_VISIT`, we can minimize the amount of " "boilerplate in ``Custom_traverse``::" msgstr "" -#: extending/newtypes_tutorial.rst:745 +#: extending/newtypes_tutorial.rst:747 msgid "" "static int\n" "Custom_traverse(PyObject *op, visitproc visit, void *arg)\n" @@ -1692,19 +1731,19 @@ msgid "" "}" msgstr "" -#: extending/newtypes_tutorial.rst:755 +#: extending/newtypes_tutorial.rst:757 msgid "" "The :c:member:`~PyTypeObject.tp_traverse` implementation must name its " "arguments exactly *visit* and *arg* in order to use :c:func:`Py_VISIT`." msgstr "" -#: extending/newtypes_tutorial.rst:758 +#: extending/newtypes_tutorial.rst:760 msgid "" "Second, we need to provide a method for clearing any subobjects that can " "participate in cycles::" msgstr "" -#: extending/newtypes_tutorial.rst:761 +#: extending/newtypes_tutorial.rst:763 msgid "" "static int\n" "Custom_clear(PyObject *op)\n" @@ -1716,7 +1755,7 @@ msgid "" "}" msgstr "" -#: extending/newtypes_tutorial.rst:770 +#: extending/newtypes_tutorial.rst:772 msgid "" "Notice the use of the :c:func:`Py_CLEAR` macro. It is the recommended and " "safe way to clear data attributes of arbitrary types while decrementing " @@ -1726,11 +1765,11 @@ msgid "" "again (*especially* if there is a reference cycle)." msgstr "" -#: extending/newtypes_tutorial.rst:778 +#: extending/newtypes_tutorial.rst:780 msgid "You could emulate :c:func:`Py_CLEAR` by writing::" msgstr "" -#: extending/newtypes_tutorial.rst:780 +#: extending/newtypes_tutorial.rst:782 msgid "" "PyObject *tmp;\n" "tmp = self->first;\n" @@ -1738,14 +1777,14 @@ msgid "" "Py_XDECREF(tmp);" msgstr "" -#: extending/newtypes_tutorial.rst:785 +#: extending/newtypes_tutorial.rst:787 msgid "" "Nevertheless, it is much easier and less error-prone to always use :c:func:" "`Py_CLEAR` when deleting an attribute. Don't try to micro-optimize at the " "expense of robustness!" msgstr "" -#: extending/newtypes_tutorial.rst:789 +#: extending/newtypes_tutorial.rst:791 msgid "" "The deallocator ``Custom_dealloc`` may call arbitrary code when clearing " "attributes. It means the circular GC can be triggered inside the function. " @@ -1755,7 +1794,7 @@ msgid "" "`PyObject_GC_UnTrack` and ``Custom_clear``::" msgstr "" -#: extending/newtypes_tutorial.rst:796 +#: extending/newtypes_tutorial.rst:798 msgid "" "static void\n" "Custom_dealloc(PyObject *op)\n" @@ -1766,17 +1805,17 @@ msgid "" "}" msgstr "" -#: extending/newtypes_tutorial.rst:804 +#: extending/newtypes_tutorial.rst:806 msgid "" "Finally, we add the :c:macro:`Py_TPFLAGS_HAVE_GC` flag to the class flags::" msgstr "" -#: extending/newtypes_tutorial.rst:806 +#: extending/newtypes_tutorial.rst:808 msgid "" ".tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC," msgstr "" -#: extending/newtypes_tutorial.rst:808 +#: extending/newtypes_tutorial.rst:810 msgid "" "That's pretty much it. If we had written custom :c:member:`~PyTypeObject." "tp_alloc` or :c:member:`~PyTypeObject.tp_free` handlers, we'd need to modify " @@ -1784,11 +1823,11 @@ msgid "" "automatically provided." msgstr "" -#: extending/newtypes_tutorial.rst:814 +#: extending/newtypes_tutorial.rst:816 msgid "Subclassing other types" msgstr "" -#: extending/newtypes_tutorial.rst:816 +#: extending/newtypes_tutorial.rst:818 msgid "" "It is possible to create new extension types that are derived from existing " "types. It is easiest to inherit from the built in types, since an extension " @@ -1796,7 +1835,7 @@ msgid "" "share these :c:type:`PyTypeObject` structures between extension modules." msgstr "" -#: extending/newtypes_tutorial.rst:821 +#: extending/newtypes_tutorial.rst:823 msgid "" "In this example we will create a :class:`!SubList` type that inherits from " "the built-in :class:`list` type. The new type will be completely compatible " @@ -1804,7 +1843,7 @@ msgid "" "that increases an internal counter:" msgstr "" -#: extending/newtypes_tutorial.rst:826 +#: extending/newtypes_tutorial.rst:828 msgid "" ">>> import sublist\n" ">>> s = sublist.SubList(range(3))\n" @@ -1817,7 +1856,7 @@ msgid "" "2" msgstr "" -#: extending/newtypes_tutorial.rst:838 +#: extending/newtypes_tutorial.rst:840 msgid "" "#define PY_SSIZE_T_CLEAN\n" "#include \n" @@ -1852,7 +1891,7 @@ msgid "" "}\n" "\n" "static PyTypeObject SubListType = {\n" -" PyVarObject_HEAD_INIT(NULL, 0)\n" +" .ob_base = PyVarObject_HEAD_INIT(NULL, 0)\n" " .tp_name = \"sublist.SubList\",\n" " .tp_doc = PyDoc_STR(\"SubList objects\"),\n" " .tp_basicsize = sizeof(SubListObject),\n" @@ -1862,43 +1901,52 @@ msgid "" " .tp_methods = SubList_methods,\n" "};\n" "\n" -"static PyModuleDef sublistmodule = {\n" -" PyModuleDef_HEAD_INIT,\n" -" .m_name = \"sublist\",\n" -" .m_doc = \"Example module that creates an extension type.\",\n" -" .m_size = -1,\n" -"};\n" -"\n" -"PyMODINIT_FUNC\n" -"PyInit_sublist(void)\n" +"static int\n" +"sublist_module_exec(PyObject *m)\n" "{\n" -" PyObject *m;\n" " SubListType.tp_base = &PyList_Type;\n" -" if (PyType_Ready(&SubListType) < 0)\n" -" return NULL;\n" -"\n" -" m = PyModule_Create(&sublistmodule);\n" -" if (m == NULL)\n" -" return NULL;\n" +" if (PyType_Ready(&SubListType) < 0) {\n" +" return -1;\n" +" }\n" "\n" " if (PyModule_AddObjectRef(m, \"SubList\", (PyObject *) &SubListType) < " "0) {\n" -" Py_DECREF(m);\n" -" return NULL;\n" +" return -1;\n" " }\n" "\n" -" return m;\n" +" return 0;\n" +"}\n" +"\n" +"static PyModuleDef_Slot sublist_module_slots[] = {\n" +" {Py_mod_exec, sublist_module_exec},\n" +" {Py_mod_multiple_interpreters, " +"Py_MOD_MULTIPLE_INTERPRETERS_NOT_SUPPORTED},\n" +" {0, NULL}\n" +"};\n" +"\n" +"static PyModuleDef sublist_module = {\n" +" .m_base = PyModuleDef_HEAD_INIT,\n" +" .m_name = \"sublist\",\n" +" .m_doc = \"Example module that creates an extension type.\",\n" +" .m_size = 0,\n" +" .m_slots = sublist_module_slots,\n" +"};\n" +"\n" +"PyMODINIT_FUNC\n" +"PyInit_sublist(void)\n" +"{\n" +" return PyModuleDef_Init(&sublist_module);\n" "}\n" msgstr "" -#: extending/newtypes_tutorial.rst:841 +#: extending/newtypes_tutorial.rst:843 msgid "" "As you can see, the source code closely resembles the :class:`!Custom` " "examples in previous sections. We will break down the main differences " "between them. ::" msgstr "" -#: extending/newtypes_tutorial.rst:844 +#: extending/newtypes_tutorial.rst:846 msgid "" "typedef struct {\n" " PyListObject list;\n" @@ -1906,21 +1954,21 @@ msgid "" "} SubListObject;" msgstr "" -#: extending/newtypes_tutorial.rst:849 +#: extending/newtypes_tutorial.rst:851 msgid "" "The primary difference for derived type objects is that the base type's " "object structure must be the first value. The base type will already " "include the :c:func:`PyObject_HEAD` at the beginning of its structure." msgstr "" -#: extending/newtypes_tutorial.rst:853 +#: extending/newtypes_tutorial.rst:855 msgid "" "When a Python object is a :class:`!SubList` instance, its ``PyObject *`` " "pointer can be safely cast to both ``PyListObject *`` and ``SubListObject " "*``::" msgstr "" -#: extending/newtypes_tutorial.rst:856 +#: extending/newtypes_tutorial.rst:858 msgid "" "static int\n" "SubList_init(PyObject *op, PyObject *args, PyObject *kwds)\n" @@ -1933,13 +1981,13 @@ msgid "" "}" msgstr "" -#: extending/newtypes_tutorial.rst:866 +#: extending/newtypes_tutorial.rst:868 msgid "" "We see above how to call through to the :meth:`~object.__init__` method of " "the base type." msgstr "" -#: extending/newtypes_tutorial.rst:869 +#: extending/newtypes_tutorial.rst:871 msgid "" "This pattern is important when writing a type with custom :c:member:" "`~PyTypeObject.tp_new` and :c:member:`~PyTypeObject.tp_dealloc` members. " @@ -1948,40 +1996,34 @@ msgid "" "the base class handle it by calling its own :c:member:`~PyTypeObject.tp_new`." msgstr "" -#: extending/newtypes_tutorial.rst:875 +#: extending/newtypes_tutorial.rst:877 msgid "" "The :c:type:`PyTypeObject` struct supports a :c:member:`~PyTypeObject." "tp_base` specifying the type's concrete base class. Due to cross-platform " "compiler issues, you can't fill that field directly with a reference to :c:" -"type:`PyList_Type`; it should be done later in the module initialization " -"function::" +"type:`PyList_Type`; it should be done in the :c:data:`Py_mod_exec` function::" msgstr "" -#: extending/newtypes_tutorial.rst:881 +#: extending/newtypes_tutorial.rst:883 msgid "" -"PyMODINIT_FUNC\n" -"PyInit_sublist(void)\n" +"static int\n" +"sublist_module_exec(PyObject *m)\n" "{\n" -" PyObject* m;\n" " SubListType.tp_base = &PyList_Type;\n" -" if (PyType_Ready(&SubListType) < 0)\n" -" return NULL;\n" -"\n" -" m = PyModule_Create(&sublistmodule);\n" -" if (m == NULL)\n" -" return NULL;\n" +" if (PyType_Ready(&SubListType) < 0) {\n" +" return -1;\n" +" }\n" "\n" " if (PyModule_AddObjectRef(m, \"SubList\", (PyObject *) &SubListType) < " "0) {\n" -" Py_DECREF(m);\n" -" return NULL;\n" +" return -1;\n" " }\n" "\n" -" return m;\n" +" return 0;\n" "}" msgstr "" -#: extending/newtypes_tutorial.rst:901 +#: extending/newtypes_tutorial.rst:898 msgid "" "Before calling :c:func:`PyType_Ready`, the type structure must have the :c:" "member:`~PyTypeObject.tp_base` slot filled in. When we are deriving an " @@ -1990,29 +2032,29 @@ msgid "" "from the base type will be inherited." msgstr "" -#: extending/newtypes_tutorial.rst:907 +#: extending/newtypes_tutorial.rst:904 msgid "" "After that, calling :c:func:`PyType_Ready` and adding the type object to the " "module is the same as with the basic :class:`!Custom` examples." msgstr "" -#: extending/newtypes_tutorial.rst:912 +#: extending/newtypes_tutorial.rst:909 msgid "Footnotes" msgstr "" -#: extending/newtypes_tutorial.rst:913 +#: extending/newtypes_tutorial.rst:910 msgid "" "This is true when we know that the object is a basic type, like a string or " "a float." msgstr "" -#: extending/newtypes_tutorial.rst:916 +#: extending/newtypes_tutorial.rst:913 msgid "" "We relied on this in the :c:member:`~PyTypeObject.tp_dealloc` handler in " "this example, because our type doesn't support garbage collection." msgstr "" -#: extending/newtypes_tutorial.rst:919 +#: extending/newtypes_tutorial.rst:916 msgid "" "We now know that the first and last members are strings, so perhaps we could " "be less careful about decrementing their reference counts, however, we " @@ -2022,7 +2064,7 @@ msgid "" "objects." msgstr "" -#: extending/newtypes_tutorial.rst:925 +#: extending/newtypes_tutorial.rst:922 msgid "" "Also, even with our attributes restricted to strings instances, the user " "could pass arbitrary :class:`str` subclasses and therefore still create " diff --git a/extending/windows.po b/extending/windows.po index e89ac85c..57c7578c 100644 --- a/extending/windows.po +++ b/extending/windows.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -165,8 +165,8 @@ msgid "" "By default, inclusion of :file:`PC/pyconfig.h` directly or via :file:`Python." "h` triggers an implicit, configure-aware link with the library. The header " "file chooses :file:`pythonXY_d.lib` for Debug, :file:`pythonXY.lib` for " -"Release, and :file:`pythonX.lib` for Release with the `Limited API `_ enabled." +"Release, and :file:`pythonX.lib` for Release with the :ref:`Limited API " +"` enabled." msgstr "" #: extending/windows.rst:144 diff --git a/faq/design.po b/faq/design.po index 9dde9975..c89bacaf 100644 --- a/faq/design.po +++ b/faq/design.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/faq/extending.po b/faq/extending.po index 54c42886..16d83a9f 100644 --- a/faq/extending.po +++ b/faq/extending.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2024-10-31 12:22+0200\n" "Last-Translator: Panagiotis Skias \n" "Language-Team: PyGreece \n" @@ -70,49 +70,20 @@ msgstr "Το να γράψει C κάποιος είναι δύσκολο· υπ #: faq/extending.rst:39 msgid "" "There are a number of alternatives to writing your own C extensions, " -"depending on what you're trying to do." -msgstr "" -"Υπάρχουν διάφορες εναλλακτικές λύσεις για να γράψετε τις δικές σας " -"επεκτάσεις C, ανάλογα με το τι προσπαθείτε να κάνετε." - -#: faq/extending.rst:44 -msgid "" -"`Cython `_ and its relative `Pyrex `_ are compilers that accept a " -"slightly modified form of Python and generate the corresponding C code. " -"Cython and Pyrex make it possible to write an extension without having to " -"learn Python's C API." -msgstr "" -"Το `Cython `_ και το σχετικό του `Pyrex `_ είναι μεταγλωττιστές που " -"δέχονται ελαφρώς τροποποιημένη μορφή της Python και δημιουργούν τον " -"αντίστοιχο C κώδικα. Το Cython και το Pyrex καθιστούν δυνατή τη σύνταξη " -"μιας επέκτασης χωρίς να χρειάζεται να μάθετε το C API της Python." - -#: faq/extending.rst:50 -msgid "" -"If you need to interface to some C or C++ library for which no Python " -"extension currently exists, you can try wrapping the library's data types " -"and functions with a tool such as `SWIG `_. `SIP " -"`__, `CXX `_ `Boost `_, or `Weave " -"`_ are also alternatives for wrapping C++ " -"libraries." -msgstr "" -"Εάν χρειάζεται να συνδεθείτε με κάποια βιβλιοθήκη C ή C++ για την οποία δεν " -"υπάρχει αυτήν τη στιγμή επέκταση Python, μπορείτε να δοκιμάσετε να " -"αναδιπλώσετε τους τύπους δεδομένων και τις συναρτήσεις της βιβλιοθήκης με " -"ένα εργαλείο όπως `SWIG `_. `SIP `__, `CXX `_ `Boost `_, ή `Weave `_ είναι επίσης εναλλακτικές λύσεις για την αναδίπλωση " -"βιβλιοθηκών C++." - -#: faq/extending.rst:61 +"depending on what you're trying to do. :ref:`Recommended third party tools " +"` offer both simpler and more sophisticated approaches to " +"creating C and C++ extensions for Python." +msgstr "" +"Υπάρχουν αρκετές εναλλακτικές λύσεις για τη σύνταξη των δικών σας επεκτάσεων " +"C, ανάλογα με το τι προσπαθείτε να κάνετε. Το :ref:`Recommended third party " +"tools ` προσφέρουν απλούστερες και πιο εξελιγμένες προσεγγίσεις " +"για τη δημιουργία επεκτάσεων C και C++ για Python." + +#: faq/extending.rst:46 msgid "How can I execute arbitrary Python statements from C?" msgstr "Πως μπορώ να εκτελέσω αυθαίρετες δηλώσεις Python από το C;" -#: faq/extending.rst:63 +#: faq/extending.rst:48 msgid "" "The highest-level function to do this is :c:func:`PyRun_SimpleString` which " "takes a single string argument to be executed in the context of the module " @@ -128,11 +99,11 @@ msgstr "" "θέλετε περισσότερο έλεγχο, χρησιμοποιήστε :c:func:`PyRun_String`· δείτε τον " "πηγαίο κώδικα :c:func:`PyRun_SimpleString` στο``Python/pythonrun.c``." -#: faq/extending.rst:72 +#: faq/extending.rst:57 msgid "How can I evaluate an arbitrary Python expression from C?" msgstr "Πώς μπορώ να αξιολογήσω μια αυθαίρετη έκφραση Python από τη C;" -#: faq/extending.rst:74 +#: faq/extending.rst:59 msgid "" "Call the function :c:func:`PyRun_String` from the previous question with the " "start symbol :c:data:`Py_eval_input`; it parses an expression, evaluates it " @@ -142,11 +113,11 @@ msgstr "" "το σύμβολο έναρξης :c:data:`Py_eval_input`· αναλύει μια παράσταση, την " "αξιολογεί και επιστρέφει την τιμή της." -#: faq/extending.rst:80 +#: faq/extending.rst:65 msgid "How do I extract C values from a Python object?" msgstr "Πως μπορώ να εξάγω τιμές C από ένα αντικείμενο Python;" -#: faq/extending.rst:82 +#: faq/extending.rst:67 msgid "" "That depends on the object's type. If it's a tuple, :c:func:`PyTuple_Size` " "returns its length and :c:func:`PyTuple_GetItem` returns the item at a " @@ -159,7 +130,7 @@ msgstr "" "λίστες έχουν παρόμοιες συναρτήσεις, :c:func:`PyList_Size` και :c:func:" "`PyList_GetItem`." -#: faq/extending.rst:87 +#: faq/extending.rst:72 msgid "" "For bytes, :c:func:`PyBytes_Size` returns its length and :c:func:" "`PyBytes_AsStringAndSize` provides a pointer to its value and its length. " @@ -171,7 +142,7 @@ msgstr "" "Λάβετε υπόψη ότι τα αντικείμενα byte της Python μπορεί να περιέχουν null " "byte, επομένως η :c:func:`!strlen` της C δεν πρέπει να χρησιμοποιείται." -#: faq/extending.rst:92 +#: faq/extending.rst:77 msgid "" "To test the type of an object, first make sure it isn't ``NULL``, and then " "use :c:func:`PyBytes_Check`, :c:func:`PyTuple_Check`, :c:func:" @@ -181,7 +152,7 @@ msgstr "" "``NULL``, και μετά χρησιμοποιήστε τα :c:func:`PyBytes_Check`, :c:func:" "`PyTuple_Check`, :c:func:`PyList_Check`, κλπ." -#: faq/extending.rst:95 +#: faq/extending.rst:80 msgid "" "There is also a high-level API to Python objects which is provided by the so-" "called 'abstract' interface -- read ``Include/abstract.h`` for further " @@ -198,21 +169,21 @@ msgstr "" "χρήσιμα πρωτόκολλα όπως αριθμοί (:c:func:`PyNumber_Index` et al.) και " "αντιστοιχίσεις στον PyMapping APIs." -#: faq/extending.rst:104 +#: faq/extending.rst:89 msgid "How do I use Py_BuildValue() to create a tuple of arbitrary length?" msgstr "" "Πώς μπορώ να χρησιμοποιήσω την Py_BuildValue() για να δημιουργήσω μια " "πλειάδα (tuple) αυθαίρετου μήκους;" -#: faq/extending.rst:106 +#: faq/extending.rst:91 msgid "You can't. Use :c:func:`PyTuple_Pack` instead." msgstr "Δεν μπορείς. Χρησιμοποιήστε το :c:func:`PyTuple_Pack`." -#: faq/extending.rst:110 +#: faq/extending.rst:95 msgid "How do I call an object's method from C?" msgstr "Πώς καλώ τη μέθοδο ενός αντικειμένου από τη C;" -#: faq/extending.rst:112 +#: faq/extending.rst:97 msgid "" "The :c:func:`PyObject_CallMethod` function can be used to call an arbitrary " "method of an object. The parameters are the object, the name of the method " @@ -225,7 +196,7 @@ msgstr "" "αυτή που χρησιμοποιείται με τη :c:func:`Py_BuildValue`, και τις τιμές " "ορίσματος::" -#: faq/extending.rst:117 +#: faq/extending.rst:102 msgid "" "PyObject *\n" "PyObject_CallMethod(PyObject *object, const char *method_name,\n" @@ -235,7 +206,7 @@ msgstr "" "PyObject_CallMethod(PyObject *object, const char *method_name,\n" " const char *arg_format, ...);" -#: faq/extending.rst:121 +#: faq/extending.rst:106 msgid "" "This works for any object that has methods -- whether built-in or user-" "defined. You are responsible for eventually :c:func:`Py_DECREF`\\ 'ing the " @@ -245,7 +216,7 @@ msgstr "" "ενσωματωμένες είτε καθορίζονται από το χρήστη. Είστε υπεύθυνοι εάν τελικά " "χρησιμοποιήσετε :c:func:`Py_DECREF` στην τιμή επιστροφής." -#: faq/extending.rst:124 +#: faq/extending.rst:109 msgid "" "To call, e.g., a file object's \"seek\" method with arguments 10, 0 " "(assuming the file object pointer is \"f\")::" @@ -254,7 +225,7 @@ msgstr "" "ορίσματα 10, 0 (υποθέτοντας ότι ο δείκτης του αντικειμένου αρχείου είναι " "\"f\")::" -#: faq/extending.rst:127 +#: faq/extending.rst:112 msgid "" "res = PyObject_CallMethod(f, \"seek\", \"(ii)\", 10, 0);\n" "if (res == NULL) {\n" @@ -272,7 +243,7 @@ msgstr "" " Py_DECREF(res);\n" "}" -#: faq/extending.rst:135 +#: faq/extending.rst:120 msgid "" "Note that since :c:func:`PyObject_CallObject` *always* wants a tuple for the " "argument list, to call a function without arguments, pass \"()\" for the " @@ -284,7 +255,7 @@ msgstr "" "ορίσματα, να περάσει \"()\" για τη μορφή και να καλέσει μια συνάρτηση με ένα " "όρισμα, περιβάλλουν το όρισμα σε παρένθεση, π.χ. \"(i)\"." -#: faq/extending.rst:142 +#: faq/extending.rst:127 msgid "" "How do I catch the output from PyErr_Print() (or anything that prints to " "stdout/stderr)?" @@ -292,7 +263,7 @@ msgstr "" "Πώς μπορώ να κάνω catch την έξοδο από την PyErr_Print() (ή οτιδήποτε " "εκτυπώνεται σε stdout/stderr);" -#: faq/extending.rst:144 +#: faq/extending.rst:129 msgid "" "In Python code, define an object that supports the ``write()`` method. " "Assign this object to :data:`sys.stdout` and :data:`sys.stderr`. Call " @@ -305,13 +276,13 @@ msgstr "" "μηχανισμό ανίχνευσης να λειτουργήσει. Στη συνέχεια, η έξοδος θα πάει " "οπουδήποτε την στείλει η μέθοδος ``write()``." -#: faq/extending.rst:149 +#: faq/extending.rst:134 msgid "The easiest way to do this is to use the :class:`io.StringIO` class:" msgstr "" "Ο ευκολότερος τρόπος για να το κάνετε αυτό είναι να χρησιμοποιήσετε την " "κλάση :class:`io.StringIO`:" -#: faq/extending.rst:151 +#: faq/extending.rst:136 msgid "" ">>> import io, sys\n" ">>> sys.stdout = io.StringIO()\n" @@ -329,11 +300,11 @@ msgstr "" "foo\n" "hello world!" -#: faq/extending.rst:161 +#: faq/extending.rst:146 msgid "A custom object to do the same would look like this:" msgstr "Ένα προσαρμοσμένο αντικείμενο για να κάνει το ίδιο θα μοιάζει με αυτό:" -#: faq/extending.rst:163 +#: faq/extending.rst:148 msgid "" ">>> import io, sys\n" ">>> class StdoutCatcher(io.TextIOBase):\n" @@ -365,20 +336,20 @@ msgstr "" "foo\n" "hello world!" -#: faq/extending.rst:182 +#: faq/extending.rst:167 msgid "How do I access a module written in Python from C?" msgstr "" "Πως μπορώ να αποκτήσω πρόσβαση σε ένα module γραμμένο σε Python από τη C;" -#: faq/extending.rst:184 +#: faq/extending.rst:169 msgid "You can get a pointer to the module object as follows::" msgstr "Μπορείτε να λάβετε έναν δείκτη στο αντικείμενο του module ως εξής::" -#: faq/extending.rst:186 +#: faq/extending.rst:171 msgid "module = PyImport_ImportModule(\"\");" msgstr "module = PyImport_ImportModule(\"\");" -#: faq/extending.rst:188 +#: faq/extending.rst:173 msgid "" "If the module hasn't been imported yet (i.e. it is not yet present in :data:" "`sys.modules`), this initializes the module; otherwise it simply returns the " @@ -392,7 +363,7 @@ msgstr "" "module σε κανένα namespace -- διασφαλίζει μόνο ότι έχει αρχικοποιηθεί και " "ότι είναι αποθηκευμένη στο :data:`sys.modules`." -#: faq/extending.rst:194 +#: faq/extending.rst:179 msgid "" "You can then access the module's attributes (i.e. any name defined in the " "module) as follows::" @@ -400,11 +371,11 @@ msgstr "" "Μπορείτε στη συνέχεια να αποκτήσετε πρόσβαση στα χαρακτηριστικά του module " "(δηλαδή οποιοδήποτε όνομα ορίζεται στο module) ως εξής::" -#: faq/extending.rst:197 +#: faq/extending.rst:182 msgid "attr = PyObject_GetAttrString(module, \"\");" msgstr "attr = PyObject_GetAttrString(module, \"\");" -#: faq/extending.rst:199 +#: faq/extending.rst:184 msgid "" "Calling :c:func:`PyObject_SetAttrString` to assign to variables in the " "module also works." @@ -412,11 +383,11 @@ msgstr "" "Η κλήση :c:func:`PyObject_SetAttrString` για αντιστοίχιση σε μεταβλητές στο " "module λειτουργεί επίσης." -#: faq/extending.rst:204 +#: faq/extending.rst:189 msgid "How do I interface to C++ objects from Python?" msgstr "Πως διασυνδέομαι με αντικείμενα C++ από την Python;" -#: faq/extending.rst:206 +#: faq/extending.rst:191 msgid "" "Depending on your requirements, there are many approaches. To do this " "manually, begin by reading :ref:`the \"Extending and Embedding\" document " @@ -432,17 +403,17 @@ msgstr "" "-- επομένως η στρατηγική της δημιουργίας ενός νέου τύπου Python γύρω από " "έναν τύπο δομής C (δείκτη) θα λειτουργήσει επίσης για αντικείμενα C++." -#: faq/extending.rst:212 +#: faq/extending.rst:197 msgid "For C++ libraries, see :ref:`c-wrapper-software`." msgstr "Για βιβλιοθήκες C++, δείτε :ref:`c-wrapper-software`." -#: faq/extending.rst:216 +#: faq/extending.rst:201 msgid "I added a module using the Setup file and the make fails; why?" msgstr "" "Πρόσθεσα ένα module χρησιμοποιώντας το αρχείο Setup και το make αποτυγχάνει· " "γιατί;" -#: faq/extending.rst:218 +#: faq/extending.rst:203 msgid "" "Setup must end in a newline, if there is no newline there, the build process " "fails. (Fixing this requires some ugly shell script hackery, and this bug " @@ -453,11 +424,11 @@ msgstr "" "κακόβουλο script shell, και αυτό το σφάλμα είναι τόσο μικρό που δεν φαίνεται " "να αξίζει τον κόπο.)" -#: faq/extending.rst:224 +#: faq/extending.rst:209 msgid "How do I debug an extension?" msgstr "Πως κάνω debug μια επέκταση;" -#: faq/extending.rst:226 +#: faq/extending.rst:211 msgid "" "When using GDB with dynamically loaded extensions, you can't set a " "breakpoint in your extension until your extension is loaded." @@ -466,19 +437,19 @@ msgstr "" "να ορίσετε σημείο διακοπής στην επέκταση σας μέχρι να φορτωθεί η επέκτασής " "σας." -#: faq/extending.rst:229 +#: faq/extending.rst:214 msgid "In your ``.gdbinit`` file (or interactively), add the command:" msgstr "Στο αρχείο σας ``.gdbinit`` (ή διαδραστικά), προσθέστε την εντολή:" -#: faq/extending.rst:231 +#: faq/extending.rst:216 msgid "br _PyImport_LoadDynamicModule" msgstr "br _PyImport_LoadDynamicModule" -#: faq/extending.rst:235 +#: faq/extending.rst:220 msgid "Then, when you run GDB:" msgstr "Στη συνέχεια, όταν εκτελείτε το GDB:" -#: faq/extending.rst:237 +#: faq/extending.rst:222 msgid "" "$ gdb /local/bin/python\n" "gdb) run myscript.py\n" @@ -494,7 +465,7 @@ msgstr "" "gdb) br myfunction.c:50\n" "gdb) continue" -#: faq/extending.rst:247 +#: faq/extending.rst:232 msgid "" "I want to compile a Python module on my Linux system, but some files are " "missing. Why?" @@ -502,7 +473,7 @@ msgstr "" "Θέλω να κάνω compile ένα Python module στο σύστημα Linux μου, αλλά λείπουν " "ορισμένα αρχεία. Γιατί;" -#: faq/extending.rst:249 +#: faq/extending.rst:234 msgid "" "Most packaged versions of Python omit some files required for compiling " "Python extensions." @@ -510,22 +481,22 @@ msgstr "" "Οι περισσότερες συσκευασμένες εκδόσεις της Python παραλείπουν ορισμένα " "αρχεία που απαιτούνται για τη μεταγλώττιση των επεκτάσεων Python." -#: faq/extending.rst:252 +#: faq/extending.rst:237 msgid "For Red Hat, install the python3-devel RPM to get the necessary files." msgstr "" "Για το Red Hat, εγκαταστήστε το RPM της python3-devel για να λάβετε τα " "απαραίτητα αρχεία." -#: faq/extending.rst:254 +#: faq/extending.rst:239 msgid "For Debian, run ``apt-get install python3-dev``." msgstr "Για το Debian, εκτελέστε το ``apt-get install python3-dev``." -#: faq/extending.rst:257 +#: faq/extending.rst:242 msgid "How do I tell \"incomplete input\" from \"invalid input\"?" msgstr "" "Πώς μπορώ να ξεχωρίσω την \"ελλιπή εισαγωγή\" από την \"έγκυρη εισαγωγή\";" -#: faq/extending.rst:259 +#: faq/extending.rst:244 msgid "" "Sometimes you want to emulate the Python interactive interpreter's behavior, " "where it gives you a continuation prompt when the input is incomplete (e.g. " @@ -539,7 +510,7 @@ msgstr "" "παρενθέσεις ή τα τριπλά εισαγωγικά συμβολοσειρών), αλλά σας δίνει ένα μήνυμα " "συντακτικού σφάλματος αμέσως όταν η εισαγωγή δεν είναι έγκυρη." -#: faq/extending.rst:265 +#: faq/extending.rst:250 msgid "" "In Python you can use the :mod:`codeop` module, which approximates the " "parser's behavior sufficiently. IDLE uses this, for example." @@ -548,7 +519,7 @@ msgstr "" "προσεγγίζει επαρκώς τη συμπεριφορά του parser. Το IDLE χρησιμοποιεί αυτό, " "για παράδειγμα." -#: faq/extending.rst:268 +#: faq/extending.rst:253 msgid "" "The easiest way to do it in C is to call :c:func:`PyRun_InteractiveLoop` " "(perhaps in a separate thread) and let the Python interpreter handle the " @@ -563,12 +534,12 @@ msgstr "" "προσαρμοσμένη συνάρτηση εισαγωγής. Δείτε τα ``Modules/readline.c`` και " "``Parser/myreadline.c`` για περισσότερες συμβουλές." -#: faq/extending.rst:275 +#: faq/extending.rst:260 msgid "How do I find undefined g++ symbols __builtin_new or __pure_virtual?" msgstr "" "Πώς μπορώ να βρω απροσδιόριστα σύμβολα g++ __builtin_new ή __pure_virtual;" -#: faq/extending.rst:277 +#: faq/extending.rst:262 msgid "" "To dynamically load g++ extension modules, you must recompile Python, relink " "it using g++ (change LINKCC in the Python Modules Makefile), and link your " @@ -579,7 +550,7 @@ msgstr "" "Python Modules Makefile), και να συνδέσετε το module επέκτασης σας " "χρησιμοποιώντας g++ (π.χ. ``g++ -shared -o mymodule.so mymodule.o``)." -#: faq/extending.rst:283 +#: faq/extending.rst:268 msgid "" "Can I create an object class with some methods implemented in C and others " "in Python (e.g. through inheritance)?" @@ -587,7 +558,7 @@ msgstr "" "Μπορώ να δημιουργήσω μια κλάση αντικειμένου με ορισμένες μεθόδους που " "υλοποιούνται στη C και άλλες στη Python (π.χ. μέσω κληρονομικότητας);" -#: faq/extending.rst:285 +#: faq/extending.rst:270 msgid "" "Yes, you can inherit from built-in classes such as :class:`int`, :class:" "`list`, :class:`dict`, etc." @@ -595,7 +566,7 @@ msgstr "" "Ναι, μπορείτε να κληρονομήσετε από ενσωματωμένες (built-in) κλάσεις όπως :" "class:`int`, :class:`list`, :class:`dict`, κ.λπ." -#: faq/extending.rst:288 +#: faq/extending.rst:273 msgid "" "The Boost Python Library (BPL, https://www.boost.org/libs/python/doc/index." "html) provides a way of doing this from C++ (i.e. you can inherit from an " @@ -605,3 +576,41 @@ msgstr "" "doc/index.html) παρέχει ένα τρόπο για να γίνει αυτό από την C++ (δηλαδή " "μπορείτε να κληρονομήσετε από μια κλάση επέκτασης γραμμένη σε C++ " "χρησιμοποιώντας το BPL)." + +#~ msgid "" +#~ "There are a number of alternatives to writing your own C extensions, " +#~ "depending on what you're trying to do." +#~ msgstr "" +#~ "Υπάρχουν διάφορες εναλλακτικές λύσεις για να γράψετε τις δικές σας " +#~ "επεκτάσεις C, ανάλογα με το τι προσπαθείτε να κάνετε." + +#~ msgid "" +#~ "`Cython `_ and its relative `Pyrex `_ are compilers that accept a " +#~ "slightly modified form of Python and generate the corresponding C code. " +#~ "Cython and Pyrex make it possible to write an extension without having to " +#~ "learn Python's C API." +#~ msgstr "" +#~ "Το `Cython `_ και το σχετικό του `Pyrex `_ είναι μεταγλωττιστές " +#~ "που δέχονται ελαφρώς τροποποιημένη μορφή της Python και δημιουργούν τον " +#~ "αντίστοιχο C κώδικα. Το Cython και το Pyrex καθιστούν δυνατή τη σύνταξη " +#~ "μιας επέκτασης χωρίς να χρειάζεται να μάθετε το C API της Python." + +#~ msgid "" +#~ "If you need to interface to some C or C++ library for which no Python " +#~ "extension currently exists, you can try wrapping the library's data types " +#~ "and functions with a tool such as `SWIG `_. `SIP " +#~ "`__, `CXX `_ `Boost `_, or " +#~ "`Weave `_ are also alternatives for " +#~ "wrapping C++ libraries." +#~ msgstr "" +#~ "Εάν χρειάζεται να συνδεθείτε με κάποια βιβλιοθήκη C ή C++ για την οποία " +#~ "δεν υπάρχει αυτήν τη στιγμή επέκταση Python, μπορείτε να δοκιμάσετε να " +#~ "αναδιπλώσετε τους τύπους δεδομένων και τις συναρτήσεις της βιβλιοθήκης με " +#~ "ένα εργαλείο όπως `SWIG `_. `SIP `__, `CXX `_ `Boost " +#~ "`_, ή `Weave `_ είναι επίσης εναλλακτικές λύσεις για την " +#~ "αναδίπλωση βιβλιοθηκών C++." diff --git a/faq/general.po b/faq/general.po index 81029c5d..45a66ac1 100644 --- a/faq/general.po +++ b/faq/general.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/faq/gui.po b/faq/gui.po index 4255d418..bb03c81a 100644 --- a/faq/gui.po +++ b/faq/gui.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/faq/index.po b/faq/index.po index 2f9744f6..dd5e3f07 100644 --- a/faq/index.po +++ b/faq/index.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2024-05-02 12:51+0000\n" "Last-Translator: Dimitrios Papadopoulos\n" "Language-Team: PyGreece \n" diff --git a/faq/installed.po b/faq/installed.po index c7601a84..223c7dc0 100644 --- a/faq/installed.po +++ b/faq/installed.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2024-05-06 12:51+0000\n" "Last-Translator: Dimitrios Papadopoulos\n" "Language-Team: PyGreece \n" diff --git a/faq/library.po b/faq/library.po index ac16f643..a8399444 100644 --- a/faq/library.po +++ b/faq/library.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/faq/programming.po b/faq/programming.po index a2380b7e..dc1748d7 100644 --- a/faq/programming.po +++ b/faq/programming.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-05 22:13+0300\n" "Last-Translator: Panagiotis Skias \n" "Language-Team: PyGreece \n" diff --git a/faq/windows.po b/faq/windows.po index 8f979858..e3d889dd 100644 --- a/faq/windows.po +++ b/faq/windows.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2024-05-31 22:08+0300\n" "Last-Translator: Panagiotis Skias \n" "Language-Team: PyGreece \n" diff --git a/glossary.po b/glossary.po index f8431e06..70fa3926 100644 --- a/glossary.po +++ b/glossary.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-10 22:47+0300\n" "Last-Translator: Panagiotis Skias \n" "Language-Team: PyGreece \n" @@ -906,10 +906,28 @@ msgstr "" "τρέχον συμφραζόμενο όποτε η εργασία ξεκινά ή συνεχίζει την εκτέλεση." #: glossary.rst:357 +msgid "cyclic isolate" +msgstr "κυκλική απομόνωση" + +#: glossary.rst:359 +msgid "" +"A subgroup of one or more objects that reference each other in a reference " +"cycle, but are not referenced by objects outside the group. The goal of " +"the :term:`cyclic garbage collector ` is to identify " +"these groups and break the reference cycles so that the memory can be " +"reclaimed." +msgstr "" +"Μια υποομάδα ενός ή περισσότερων αντικειμένων που αναφέρονται μεταξύ τους " +"σχηματίζοντας έναν κύκλο αναφορών, αλλά δεν αναφέρονται από άλλα " +"αντικείμενα εκτός της ομάδας. Ο σκοπός του :term:`cyclic garbage collector " +"` είναι να εντοπίζει αυτές τις ομάδες και να σπάει του " +"κύκλος αναφορών ώστε να μπορεί να αποδεσμευτεί η μνήμη." + +#: glossary.rst:363 msgid "decorator" msgstr "decorator" -#: glossary.rst:359 +#: glossary.rst:365 msgid "" "A function returning another function, usually applied as a function " "transformation using the ``@wrapper`` syntax. Common examples for " @@ -920,7 +938,7 @@ msgstr "" "Συνηθισμένα παραδείγματα για τους decorators είναι :func:`classmethod` και :" "func:`staticmethod`." -#: glossary.rst:363 +#: glossary.rst:369 msgid "" "The decorator syntax is merely syntactic sugar, the following two function " "definitions are semantically equivalent::" @@ -928,7 +946,7 @@ msgstr "" "Η σύνταξη του decorator είναι απλώς καλλωπιστική, οι ακόλουθοι δύο ορισμοί " "συναρτήσεων είναι σημασιολογικά ισοδύναμοι::" -#: glossary.rst:366 +#: glossary.rst:372 msgid "" "def f(arg):\n" " ...\n" @@ -946,7 +964,7 @@ msgstr "" "def f(arg):\n" " ..." -#: glossary.rst:374 +#: glossary.rst:380 msgid "" "The same concept exists for classes, but is less commonly used there. See " "the documentation for :ref:`function definitions ` and :ref:`class " @@ -956,11 +974,11 @@ msgstr "" "εκεί. Βλ. την τεκμηρίωση για :ref:`function definitions ` και :ref:" "`class definitions ` για περισσότερα σχετικά με τους decorators." -#: glossary.rst:377 +#: glossary.rst:383 msgid "descriptor" msgstr "descriptor" -#: glossary.rst:379 +#: glossary.rst:385 msgid "" "Any object which defines the methods :meth:`~object.__get__`, :meth:`~object." "__set__`, or :meth:`~object.__delete__`. When a class attribute is a " @@ -983,7 +1001,7 @@ msgstr "" "αποτελεί την βάση για πολλά χαρακτηριστικά όπως συναρτήσεις, μεθόδους, " "ιδιότητες, μέθοδοι κλάσης στατικές μέθοδοι, και αναφορά σε σούπερ κλάσεις." -#: glossary.rst:390 +#: glossary.rst:396 msgid "" "For more information about descriptors' methods, see :ref:`descriptors` or " "the :ref:`Descriptor How To Guide `." @@ -992,11 +1010,11 @@ msgstr "" "see :ref:`descriptors` ή το :ref:`Πρακτικός οδηγός για τη χρήση του " "Descriptor `." -#: glossary.rst:392 +#: glossary.rst:398 msgid "dictionary" msgstr "λεξικό" -#: glossary.rst:394 +#: glossary.rst:400 msgid "" "An associative array, where arbitrary keys are mapped to values. The keys " "can be any object with :meth:`~object.__hash__` and :meth:`~object.__eq__` " @@ -1006,11 +1024,11 @@ msgstr "" "τιμές. Τα κλειδιά μπορεί να είναι οποιοδήποτε αντικείμενο με μεθόδους :meth:" "`~object.__hash__` και :meth:`~object.__eq__`. Ονομάζεται ως hash στο Perl." -#: glossary.rst:398 +#: glossary.rst:404 msgid "dictionary comprehension" msgstr "κατανόηση λεξικού" -#: glossary.rst:400 +#: glossary.rst:406 msgid "" "A compact way to process all or part of the elements in an iterable and " "return a dictionary with the results. ``results = {n: n ** 2 for n in " @@ -1023,11 +1041,11 @@ msgstr "" "κλειδί ``n`` που αντιστοιχίζεται με την τιμή ``n ** 2``. Βλ. :ref:" "`comprehensions`." -#: glossary.rst:404 +#: glossary.rst:410 msgid "dictionary view" msgstr "όψη λεξικού" -#: glossary.rst:406 +#: glossary.rst:412 msgid "" "The objects returned from :meth:`dict.keys`, :meth:`dict.values`, and :meth:" "`dict.items` are called dictionary views. They provide a dynamic view on the " @@ -1042,11 +1060,11 @@ msgstr "" "όψη λεξικού να γίνει μια πλήρης λίστα χρησιμοποιήστε το ``list(dictview)``. " "Βλ. :ref:`dict-views`." -#: glossary.rst:412 +#: glossary.rst:418 msgid "docstring" msgstr "docstring" -#: glossary.rst:414 +#: glossary.rst:420 msgid "" "A string literal which appears as the first expression in a class, function " "or module. While ignored when the suite is executed, it is recognized by " @@ -1061,11 +1079,11 @@ msgstr "" "περικλείει. Δεδομένου ότι είναι διαθέσιμο μέσω ενδοσκόπησης, το κανονικό " "μέρος για την τεκμηρίωση του αντικειμένου." -#: glossary.rst:420 +#: glossary.rst:426 msgid "duck-typing" msgstr "duck-typing" -#: glossary.rst:422 +#: glossary.rst:428 msgid "" "A programming style which does not look at an object's type to determine if " "it has the right interface; instead, the method or attribute is simply " @@ -1088,11 +1106,11 @@ msgstr "" "με :term:`abstract base classes `.) Αντί αυτού, συνήθως " "χρησιμοποιεί δοκιμές :func:`hasattr` ή προγραμματισμό :term:`EAFP`." -#: glossary.rst:431 +#: glossary.rst:437 msgid "EAFP" msgstr "EAFP" -#: glossary.rst:433 +#: glossary.rst:439 msgid "" "Easier to ask for forgiveness than permission. This common Python coding " "style assumes the existence of valid keys or attributes and catches " @@ -1109,11 +1127,11 @@ msgstr "" "αντίθεση με το στυλ που είναι :term:`LBYL` κοινό σε πολλές άλλες γλώσσες, " "όπως η C." -#: glossary.rst:439 +#: glossary.rst:445 msgid "evaluate function" msgstr "αξιολόγηση συνάρτησης" -#: glossary.rst:441 +#: glossary.rst:447 msgid "" "A function that can be called to evaluate a lazily evaluated attribute of an " "object, such as the value of type aliases created with the :keyword:`type` " @@ -1123,11 +1141,11 @@ msgstr "" "χαρακτηριστικό ενός αντικειμένου, όπως η τιμή των ψευδωνύμων τύπου που " "δημιουργούνται με την πρόταση :keyword:`type`." -#: glossary.rst:444 +#: glossary.rst:450 msgid "expression" msgstr "έκφραση" -#: glossary.rst:446 +#: glossary.rst:452 msgid "" "A piece of syntax which can be evaluated to some value. In other words, an " "expression is an accumulation of expression elements like literals, names, " @@ -1145,11 +1163,11 @@ msgstr "" "μπορούν να χρησιμοποιηθούν ως εκφράσεις, όπως το :keyword:`while`. Οι " "αναθέσεις τιμών είναι επίσης δηλώσεις όχι εκφράσεις." -#: glossary.rst:453 +#: glossary.rst:459 msgid "extension module" msgstr "module επέκτασης" -#: glossary.rst:455 +#: glossary.rst:461 msgid "" "A module written in C or C++, using Python's C API to interact with the core " "and with user code." @@ -1157,11 +1175,11 @@ msgstr "" "Ένα module γραμμένο σε C ή C++, που χρησιμοποιείται από το C API της Python " "για να αλληλεπιδράσουν με τον πυρήνα και με τον κώδικα του χρήστη." -#: glossary.rst:457 +#: glossary.rst:463 msgid "f-string" msgstr "f-string" -#: glossary.rst:459 +#: glossary.rst:465 msgid "" "String literals prefixed with ``'f'`` or ``'F'`` are commonly called \"f-" "strings\" which is short for :ref:`formatted string literals `. " @@ -1171,11 +1189,11 @@ msgstr "" "ονομάζονται συνήθως \"f-strings\" που είναι συντομογραφία του :ref:" "`formatted string literals `. Βλ. επίσης :pep:`498`." -#: glossary.rst:462 +#: glossary.rst:468 msgid "file object" msgstr "αντικείμενο αρχείου" -#: glossary.rst:464 +#: glossary.rst:470 msgid "" "An object exposing a file-oriented API (with methods such as :meth:`!read` " "or :meth:`!write`) to an underlying resource. Depending on the way it was " @@ -1192,7 +1210,7 @@ msgstr "" "buffers, sockets, pipes, κλπ.). Αντικείμενο αρχείου ονομάζονται επίσης :dfn:" "`file-like objects` ή :dfn:`streams`." -#: glossary.rst:472 +#: glossary.rst:478 msgid "" "There are actually three categories of file objects: raw :term:`binary files " "`, buffered :term:`binary files ` and :term:`text " @@ -1206,19 +1224,19 @@ msgstr "" "στην ενότητα :mod:`io`. Ο κανονικός τρόπος για να δημιουργήσετε ένα " "αντικείμενο αρχείου είναι χρησιμοποιώντας την συνάρτηση :func:`open`." -#: glossary.rst:477 +#: glossary.rst:483 msgid "file-like object" msgstr "αντικείμενο που μοιάζει με αρχείο" -#: glossary.rst:479 +#: glossary.rst:485 msgid "A synonym for :term:`file object`." msgstr "Ένα συνώνυμο με το :term:`file object`." -#: glossary.rst:480 +#: glossary.rst:486 msgid "filesystem encoding and error handler" msgstr "κωδικοποίηση συστήματος αρχείων και χειριστής σφαλμάτων" -#: glossary.rst:482 +#: glossary.rst:488 msgid "" "Encoding and error handler used by Python to decode bytes from the operating " "system and encode Unicode to the operating system." @@ -1227,7 +1245,7 @@ msgstr "" "την αποκωδικοποίηση των bytes από το λειτουργικό σύστημα και την " "κωδικοποίηση σε Unicode για το λειτουργικό σύστημα." -#: glossary.rst:485 +#: glossary.rst:491 msgid "" "The filesystem encoding must guarantee to successfully decode all bytes " "below 128. If the file system encoding fails to provide this guarantee, API " @@ -1238,7 +1256,7 @@ msgstr "" "αρχείων δεν παρέχει αυτήν την εγγύηση, οι συναρτήσεις API μπορούν να " "εγείρουν ένα :exc:`UnicodeError`." -#: glossary.rst:489 +#: glossary.rst:495 msgid "" "The :func:`sys.getfilesystemencoding` and :func:`sys." "getfilesystemencodeerrors` functions can be used to get the filesystem " @@ -1248,7 +1266,7 @@ msgstr "" "getfilesystemencodeerrors` μπορούν να χρησιμοποιηθούν για να λάβετε την " "κωδικοποίηση του συστήματος αρχείων και του χειριστή σφαλμάτων." -#: glossary.rst:493 +#: glossary.rst:499 msgid "" "The :term:`filesystem encoding and error handler` are configured at Python " "startup by the :c:func:`PyConfig_Read` function: see :c:member:`~PyConfig." @@ -1260,15 +1278,15 @@ msgstr "" "`~PyConfig.filesystem_encoding` και :c:member:`~PyConfig.filesystem_errors` " "μέλη του :c:type:`PyConfig`." -#: glossary.rst:498 +#: glossary.rst:504 msgid "See also the :term:`locale encoding`." msgstr "Βλ. επίσης το :term:`locale encoding`." -#: glossary.rst:499 +#: glossary.rst:505 msgid "finder" msgstr "finder" -#: glossary.rst:501 +#: glossary.rst:507 msgid "" "An object that tries to find the :term:`loader` for a module that is being " "imported." @@ -1276,7 +1294,7 @@ msgstr "" "Ένα αντικείμενο που προσπαθεί να βρει το :term:`loader` για ένα module που " "εισήχθη." -#: glossary.rst:504 +#: glossary.rst:510 msgid "" "There are two types of finder: :term:`meta path finders ` " "for use with :data:`sys.meta_path`, and :term:`path entry finders ` για χρήση με :data:`sys.path_hooks`." -#: glossary.rst:508 +#: glossary.rst:514 msgid "" "See :ref:`finders-and-loaders` and :mod:`importlib` for much more detail." msgstr "" "Βλ. :ref:`finders-and-loaders` και :mod:`importlib` για περισσότερες " "λεπτομέρειες." -#: glossary.rst:509 +#: glossary.rst:515 msgid "floor division" msgstr "ακέραια διαίρεση" -#: glossary.rst:511 +#: glossary.rst:517 msgid "" "Mathematical division that rounds down to nearest integer. The floor " "division operator is ``//``. For example, the expression ``11 // 4`` " @@ -1312,11 +1330,11 @@ msgstr "" "4`` κάνει ``-3`` επειδή αυτή είναι η στρογγυλοποίηση *προς τα κάτω* του " "``-2.75``. Βλ. :pep:`238`." -#: glossary.rst:516 +#: glossary.rst:522 msgid "free threading" msgstr "δωρεάν νήμα" -#: glossary.rst:518 +#: glossary.rst:524 msgid "" "A threading model where multiple threads can run Python bytecode " "simultaneously within the same interpreter. This is in contrast to the :" @@ -1328,11 +1346,11 @@ msgstr "" "`global interpreter lock`, το οποίο επιτρέπει σε ένα μόνο νήμα να εκτελεί " "Python bytecode κάθε φορά. Δείτε το :pep:`703`." -#: glossary.rst:522 +#: glossary.rst:528 msgid "free variable" msgstr "δωρεάν μεταβλητή" -#: glossary.rst:524 +#: glossary.rst:530 msgid "" "Formally, as defined in the :ref:`language execution model `, a " "free variable is any variable used in a namespace which is not a local " @@ -1348,11 +1366,11 @@ msgstr "" "χαρακτηριστικού :attr:`codeobject.co_freevars`, ο όρος χρησιμοποιείται " "επίσης μερικές φορές ως συνώνυμο της :term:`closure variable`." -#: glossary.rst:529 +#: glossary.rst:535 msgid "function" msgstr "συνάρτηση" -#: glossary.rst:531 +#: glossary.rst:537 msgid "" "A series of statements which returns some value to a caller. It can also be " "passed zero or more :term:`arguments ` which may be used in the " @@ -1364,16 +1382,16 @@ msgstr "" "` που μπορεί να χρησιμοποιηθεί για την εκτέλεση. Βλ. επίσης τις " "ενότητες :term:`parameter`, :term:`method`, και the :ref:`function`." -#: glossary.rst:535 +#: glossary.rst:541 msgid "function annotation" msgstr "συνάρτηση annotation" -#: glossary.rst:537 +#: glossary.rst:543 msgid "An :term:`annotation` of a function parameter or return value." msgstr "" "Ένας :term:`annotation` μιας παραμέτρου συνάρτησης ή μιας τιμής επιστροφής." -#: glossary.rst:539 +#: glossary.rst:545 msgid "" "Function annotations are usually used for :term:`type hints `: " "for example, this function is expected to take two :class:`int` arguments " @@ -1384,7 +1402,7 @@ msgstr "" "ορίσματα :class:`int` και επίσης αναμένεται να έχει μία επιστρεφόμενη τιμή :" "class:`int`::" -#: glossary.rst:544 +#: glossary.rst:550 msgid "" "def sum_two_numbers(a: int, b: int) -> int:\n" " return a + b" @@ -1392,12 +1410,12 @@ msgstr "" "def sum_two_numbers(a: int, b: int) -> int:\n" " return a + b" -#: glossary.rst:547 +#: glossary.rst:553 msgid "Function annotation syntax is explained in section :ref:`function`." msgstr "" "Η σύνταξη συνάρτησης annotation αναλύεται στην ενότητα :ref:`function`." -#: glossary.rst:549 +#: glossary.rst:555 msgid "" "See :term:`variable annotation` and :pep:`484`, which describe this " "functionality. Also see :ref:`annotations-howto` for best practices on " @@ -1407,11 +1425,11 @@ msgstr "" "λειτουργικότητα. Επίσης βλ. :ref:`annotations-howto` για τις καλύτερες " "πρακτικές δουλεύοντας με annotations." -#: glossary.rst:553 +#: glossary.rst:559 msgid "__future__" msgstr "__future__" -#: glossary.rst:555 +#: glossary.rst:561 msgid "" "A :ref:`future statement `, ``from __future__ import ``, " "directs the compiler to compile the current module using syntax or semantics " @@ -1430,7 +1448,7 @@ msgstr "" "προστέθηκε για πρώτη φορά στην γλώσσα και πότε θα γίνει (ή έγινε) η " "προεπιλογή::" -#: glossary.rst:563 +#: glossary.rst:569 msgid "" ">>> import __future__\n" ">>> __future__.division\n" @@ -1440,11 +1458,11 @@ msgstr "" ">>> __future__.division\n" "_Feature((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 8192)" -#: glossary.rst:566 +#: glossary.rst:572 msgid "garbage collection" msgstr "συλλογή απορριμάτων" -#: glossary.rst:568 +#: glossary.rst:574 msgid "" "The process of freeing memory when it is not used anymore. Python performs " "garbage collection via reference counting and a cyclic garbage collector " @@ -1457,11 +1475,11 @@ msgstr "" "τους κύκλους αναφοράς. Ο συλλέκτης απορριμάτων μπορεί να ελεγχθεί " "χρησιμοποιώντας το module :mod:`gc`." -#: glossary.rst:574 +#: glossary.rst:580 msgid "generator" msgstr "generator" -#: glossary.rst:576 +#: glossary.rst:582 msgid "" "A function which returns a :term:`generator iterator`. It looks like a " "normal function except that it contains :keyword:`yield` expressions for " @@ -1474,7 +1492,7 @@ msgstr "" "*for* ή που μπορούν να ανακτηθούν μία τη φορά με την συνάρτηση :func:`next` " "function." -#: glossary.rst:581 +#: glossary.rst:587 msgid "" "Usually refers to a generator function, but may refer to a *generator " "iterator* in some contexts. In cases where the intended meaning isn't " @@ -1485,15 +1503,15 @@ msgstr "" "επιδιωκόμενο νόημα δεν είναι σαφές, η χρήση των πλήρων όρων αποφεύγει την " "ασάφεια." -#: glossary.rst:584 +#: glossary.rst:590 msgid "generator iterator" msgstr "generator iterator" -#: glossary.rst:586 +#: glossary.rst:592 msgid "An object created by a :term:`generator` function." msgstr "Ένα αντικείμενο που δημιουργείται από μια συνάρτηση :term:`generator`." -#: glossary.rst:588 +#: glossary.rst:594 msgid "" "Each :keyword:`yield` temporarily suspends processing, remembering the " "execution state (including local variables and pending try-statements). " @@ -1506,11 +1524,11 @@ msgstr "" "συνεχίζει από εκεί που σταμάτησε (σε αντίθεση με τις συναρτήσεις που " "ξεκινούν από την αρχή σε κάθε επίκληση)." -#: glossary.rst:595 +#: glossary.rst:601 msgid "generator expression" msgstr "generator έκφραση" -#: glossary.rst:597 +#: glossary.rst:603 msgid "" "An :term:`expression` that returns an :term:`iterator`. It looks like a " "normal expression followed by a :keyword:`!for` clause defining a loop " @@ -1522,7 +1540,7 @@ msgstr "" "μια μεταβλητή βρόχου, ένα εύρος και μια προαιρετική πρόταση :keyword:`!if`. " "Η συνδυασμένη έκφραση δημιουργεί τιμές για μια συνάρτηση εγκλεισμού::" -#: glossary.rst:602 +#: glossary.rst:608 msgid "" ">>> sum(i*i for i in range(10)) # sum of squares 0, 1, 4, ... 81\n" "285" @@ -1530,11 +1548,11 @@ msgstr "" ">>> sum(i*i for i in range(10)) # sum of squares 0, 1, 4, ... 81\n" "285" -#: glossary.rst:604 +#: glossary.rst:610 msgid "generic function" msgstr "γενική συνάρτηση" -#: glossary.rst:606 +#: glossary.rst:612 msgid "" "A function composed of multiple functions implementing the same operation " "for different types. Which implementation should be used during a call is " @@ -1545,7 +1563,7 @@ msgstr "" "χρησιμοποιηθεί κατά τη διάρκεια μια κλήσης καθορίζεται από τον αλγόριθμο " "αποστολής." -#: glossary.rst:610 +#: glossary.rst:616 msgid "" "See also the :term:`single dispatch` glossary entry, the :func:`functools." "singledispatch` decorator, and :pep:`443`." @@ -1553,11 +1571,11 @@ msgstr "" "Βλ. επίσης την καταχώρηση του :term:`single dispatch`, τον decorator :func:" "`functools.singledispatch` και :pep:`443`." -#: glossary.rst:612 +#: glossary.rst:618 msgid "generic type" msgstr "γενικός τύπος" -#: glossary.rst:614 +#: glossary.rst:620 msgid "" "A :term:`type` that can be parameterized; typically a :ref:`container " "class` such as :class:`list` or :class:`dict`. Used for :" @@ -1568,7 +1586,7 @@ msgstr "" "Χρησιμοποιείται για :term:`type hints ` και :term:`annotations " "`." -#: glossary.rst:619 +#: glossary.rst:625 msgid "" "For more details, see :ref:`generic alias types`, :pep:" "`483`, :pep:`484`, :pep:`585`, and the :mod:`typing` module." @@ -1577,19 +1595,19 @@ msgstr "" "genericalias>` :pep:`483`, :pep:`484`, :pep:`585`, και το module :mod:" "`typing`." -#: glossary.rst:621 +#: glossary.rst:627 msgid "GIL" msgstr "GIL" -#: glossary.rst:623 +#: glossary.rst:629 msgid "See :term:`global interpreter lock`." msgstr "Βλ. :term:`global interpreter lock`." -#: glossary.rst:624 +#: glossary.rst:630 msgid "global interpreter lock" msgstr "global interpreter lock" -#: glossary.rst:626 +#: glossary.rst:632 msgid "" "The mechanism used by the :term:`CPython` interpreter to assure that only " "one thread executes Python :term:`bytecode` at a time. This simplifies the " @@ -1608,7 +1626,7 @@ msgstr "" "του μεγάλου μέρους του παραλληλισμού που παρέχουν οι μηχανές πολλαπλών " "επεξεργαστών." -#: glossary.rst:635 +#: glossary.rst:641 msgid "" "However, some extension modules, either standard or third-party, are " "designed so as to release the GIL when doing computationally intensive tasks " @@ -1620,7 +1638,7 @@ msgstr "" "εντατικών υπολογισμών όπως συμπίεση ή κατακερματισμός. Επίσης, το GIL " "απελευθερώνεται πάντα όταν εκτελείτε I/O." -#: glossary.rst:640 +#: glossary.rst:646 msgid "" "As of Python 3.13, the GIL can be disabled using the :option:`--disable-gil` " "build configuration. After building Python with this option, code must be " @@ -1638,7 +1656,7 @@ msgstr "" "διευκολύνει τη χρήση των επεξεργαστών πολλαπλών πυρήνων με αποδοτικό τρόπο. " "Για περισσότερες λεπτομέρειες, δείτε το :pep:`703`." -#: glossary.rst:647 +#: glossary.rst:653 msgid "" "In prior versions of Python's C API, a function might declare that it " "requires the GIL to be held in order to use it. This refers to having an :" @@ -1648,11 +1666,11 @@ msgstr "" "δηλώνει ότι απαιτεί την τήρηση του GIL για να χρησιμοποιηθεί. Αυτό " "αναφέρεται στην ύπαρξη μιας κατάστασης :term:`attached thread state`." -#: glossary.rst:650 +#: glossary.rst:656 msgid "hash-based pyc" msgstr "hash-based pyc" -#: glossary.rst:652 +#: glossary.rst:658 msgid "" "A bytecode cache file that uses the hash rather than the last-modified time " "of the corresponding source file to determine its validity. See :ref:`pyc-" @@ -1662,11 +1680,11 @@ msgstr "" "όχι τον χρόνο τροποποίησης του αντίστοιχου αρχείου προέλευσης για να " "προσδιορίσει την εγκυρότητα του. Βλ. :ref:`pyc-invalidation`." -#: glossary.rst:655 +#: glossary.rst:661 msgid "hashable" msgstr "hashable" -#: glossary.rst:657 +#: glossary.rst:663 msgid "" "An object is *hashable* if it has a hash value which never changes during " "its lifetime (it needs a :meth:`~object.__hash__` method), and can be " @@ -1680,7 +1698,7 @@ msgstr "" "που συγκρίνονται ως προς την ισότητα τους πρέπει να έχουν την ίδια τιμή " "κατακερματισμού." -#: glossary.rst:663 +#: glossary.rst:669 msgid "" "Hashability makes an object usable as a dictionary key and a set member, " "because these data structures use the hash value internally." @@ -1689,7 +1707,7 @@ msgstr "" "κλειδί λεξικού και ως μέλος ενός συνόλου, επειδή αυτές οι δομές δεδομένων " "χρησιμοποιούν τιμές κατακερματισμού." -#: glossary.rst:666 +#: glossary.rst:672 msgid "" "Most of Python's immutable built-in objects are hashable; mutable containers " "(such as lists or dictionaries) are not; immutable containers (such as " @@ -1706,11 +1724,11 @@ msgstr "" "μπορούν να κατακερματιστούν από προεπιλογή. Όλα συγκρίνονται άνισα εκτός από " "τον εαυτό τους) και η τιμή κατακερματισμού τους προέρχεται από το :func:`id`." -#: glossary.rst:673 +#: glossary.rst:679 msgid "IDLE" msgstr "IDLE" -#: glossary.rst:675 +#: glossary.rst:681 msgid "" "An Integrated Development and Learning Environment for Python. :ref:`idle` " "is a basic editor and interpreter environment which ships with the standard " @@ -1720,11 +1738,11 @@ msgstr "" "`idle` είναι ένα βασικό περιβάλλον επεξεργασίας και διερμηνέα που " "συνοδεύεται από την τυπική διανομή της Python." -#: glossary.rst:678 +#: glossary.rst:684 msgid "immortal" msgstr "Αθάνατο" -#: glossary.rst:680 +#: glossary.rst:686 msgid "" "*Immortal objects* are a CPython implementation detail introduced in :pep:" "`683`." @@ -1732,7 +1750,7 @@ msgstr "" "*Αθάνατα αντικείμενα* είναι μια λεπτομέρεια υλοποίησης της CPython που " "εισήχθη στην :pep:`683`." -#: glossary.rst:683 +#: glossary.rst:689 msgid "" "If an object is immortal, its :term:`reference count` is never modified, and " "therefore it is never deallocated while the interpreter is running. For " @@ -1742,7 +1760,7 @@ msgstr "" "τροποποιείται, και επομένως δεν εκχωρείται ποτέ ενώ εκτελείται ο διερμηνέας. " "Για παράδειγμα, :const:`True` και :const:`None` είναι αθάνατα στην CPython." -#: glossary.rst:687 +#: glossary.rst:693 msgid "" "Immortal objects can be identified via :func:`sys._is_immortal`, or via :c:" "func:`PyUnstable_IsImmortal` in the C API." @@ -1750,11 +1768,11 @@ msgstr "" "Τα αθάνατα αντικείμενα μπορούν να αναγνωριστούν μέσω της :func:`sys." "_is_immortal`, ή μέσω της :c:func:`PyUnstable_IsImmortal` στο C API." -#: glossary.rst:689 +#: glossary.rst:695 msgid "immutable" msgstr "immutable" -#: glossary.rst:691 +#: glossary.rst:697 msgid "" "An object with a fixed value. Immutable objects include numbers, strings " "and tuples. Such an object cannot be altered. A new object has to be " @@ -1768,11 +1786,11 @@ msgstr "" "αποθηκευτεί μια διαφορετική τιμή. Παίζουν σημαντικό ρόλο σε μέρη όπου μια " "σταθερά απαιτείται, για παράδειγμα ως κλειδί σε ένα λεξικό." -#: glossary.rst:696 +#: glossary.rst:702 msgid "import path" msgstr "εισαγόμενο path" -#: glossary.rst:698 +#: glossary.rst:704 msgid "" "A list of locations (or :term:`path entries `) that are searched " "by the :term:`path based finder` for modules to import. During import, this " @@ -1785,11 +1803,11 @@ msgstr "" "από :data:`sys.path`, αλλά για τα υποπακέτα μπορεί επίσης να έρθει από το " "χαρακτηριστικό του πακέτου γονέα ``__path__``." -#: glossary.rst:703 +#: glossary.rst:709 msgid "importing" msgstr "εισαγωγή" -#: glossary.rst:705 +#: glossary.rst:711 msgid "" "The process by which Python code in one module is made available to Python " "code in another module." @@ -1797,11 +1815,11 @@ msgstr "" "Η διαδικασία κατά την οποία ο κώδικας της Python σε ένα module είναι " "διαθέσιμη στον κώδικα Python ενός άλλου module." -#: glossary.rst:707 +#: glossary.rst:713 msgid "importer" msgstr "εισαγωγέας" -#: glossary.rst:709 +#: glossary.rst:715 msgid "" "An object that both finds and loads a module; both a :term:`finder` and :" "term:`loader` object." @@ -1809,11 +1827,11 @@ msgstr "" "Ένα αντικείμενο μπορεί και να αναζητεί και να φορτώνει ένα module' και ένα :" "term:`finder` και :term:`loader` αντικείμενο." -#: glossary.rst:711 +#: glossary.rst:717 msgid "interactive" msgstr "διαδραστικός" -#: glossary.rst:713 +#: glossary.rst:719 msgid "" "Python has an interactive interpreter which means you can enter statements " "and expressions at the interpreter prompt, immediately execute them and see " @@ -1830,11 +1848,11 @@ msgstr "" "να εξετάστε modules και πακέτα (θυμηθείτε ``help(x)``). Για περισσότερα " "σχετικά με τη διαδραστική λειτουργία, δείτε :ref:`tut-interac`." -#: glossary.rst:720 +#: glossary.rst:726 msgid "interpreted" msgstr "interpreted" -#: glossary.rst:722 +#: glossary.rst:728 msgid "" "Python is an interpreted language, as opposed to a compiled one, though the " "distinction can be blurry because of the presence of the bytecode compiler. " @@ -1851,11 +1869,11 @@ msgstr "" "εντοπισμού σφαλμάτων από τις μεταγλωττισμένες, αν και τα προγράμματά τους " "γενικά εκτελούνται πιο αργά. Βλ. επίσης :term:`interactive`." -#: glossary.rst:729 +#: glossary.rst:735 msgid "interpreter shutdown" msgstr "τερματισμός λειτουργίας διερμηνέα" -#: glossary.rst:731 +#: glossary.rst:737 msgid "" "When asked to shut down, the Python interpreter enters a special phase where " "it gradually releases all allocated resources, such as modules and various " @@ -1877,7 +1895,7 @@ msgstr "" "βασίζεται ενδέχεται να μην λειτουργούν πλέον (συνήθη παραδείγματα είναι οι " "λειτουργικές μονάδες βιβλιοθήκης ή ο μηχανισμός ειδοποιήσεων)." -#: glossary.rst:740 +#: glossary.rst:746 msgid "" "The main reason for interpreter shutdown is that the ``__main__`` module or " "the script being run has finished executing." @@ -1885,11 +1903,11 @@ msgstr "" "Ο βασικός λόγος τερματισμού λειτουργίας του διερμηνέα είναι ότι το " "``__main__`` module ή ολοκληρώθηκε η εκτέλεση του κώδικα που έτρεχε." -#: glossary.rst:742 +#: glossary.rst:748 msgid "iterable" msgstr "iterable" -#: glossary.rst:744 +#: glossary.rst:750 msgid "" "An object capable of returning its members one at a time. Examples of " "iterables include all sequence types (such as :class:`list`, :class:`str`, " @@ -1906,7 +1924,7 @@ msgstr "" "__iter__` ή με μία μέθοδο :meth:`~object.__getitem__` που υλοποιεί τη " "σημασιολογία :term:`sequence`." -#: glossary.rst:752 +#: glossary.rst:758 msgid "" "Iterables can be used in a :keyword:`for` loop and in many other places " "where a sequence is needed (:func:`zip`, :func:`map`, ...). When an " @@ -1930,11 +1948,11 @@ msgstr "" "του βρόχου. Βλ. επίσης :term:`iterator`, :term:`sequence`, και :term:" "`generator`." -#: glossary.rst:762 +#: glossary.rst:768 msgid "iterator" msgstr "iterator" -#: glossary.rst:764 +#: glossary.rst:770 msgid "" "An object representing a stream of data. Repeated calls to the iterator's :" "meth:`~iterator.__next__` method (or passing it to the built-in function :" @@ -1969,11 +1987,11 @@ msgstr "" "εξαντλημένο αντικείμενο iterator που χρησιμοποιήθηκε στο προηγούμενο πέρασμα " "iteration , κάνοντας το να φαίνεται σαν ένα άδειο κοντέινερ." -#: glossary.rst:779 +#: glossary.rst:785 msgid "More information can be found in :ref:`typeiter`." msgstr "Περισσότερες πληροφορίες μπορούν να βρεθούν στο :ref:`typeiter`." -#: glossary.rst:783 +#: glossary.rst:789 msgid "" "CPython does not consistently apply the requirement that an iterator define :" "meth:`~iterator.__iter__`. And also please note that the free-threading " @@ -1984,11 +2002,11 @@ msgstr "" "υποστήριξη νημάτων δεν εγγυάται την ασφάλεια νημάτων για διαδικασίες με " "iterators." -#: glossary.rst:788 +#: glossary.rst:794 msgid "key function" msgstr "συνάρτηση key" -#: glossary.rst:790 +#: glossary.rst:796 msgid "" "A key function or collation function is a callable that returns a value used " "for sorting or ordering. For example, :func:`locale.strxfrm` is used to " @@ -2000,7 +2018,7 @@ msgstr "" "κλειδιού ταξινόμησης που γνωρίζει τις συμβάσεις ταξινόμησης για " "συγκεκριμένες τοπικές ρυθμίσεις." -#: glossary.rst:795 +#: glossary.rst:801 msgid "" "A number of tools in Python accept key functions to control how elements are " "ordered or grouped. They include :func:`min`, :func:`max`, :func:`sorted`, :" @@ -2013,7 +2031,7 @@ msgstr "" "`heapq.merge`, :func:`heapq.nsmallest`, :func:`heapq. nlargest`, και :func:" "`itertools.groupby`." -#: glossary.rst:801 +#: glossary.rst:807 msgid "" "There are several ways to create a key function. For example. the :meth:" "`str.lower` method can serve as a key function for case insensitive sorts. " @@ -2033,19 +2051,19 @@ msgstr "" "TO` για παραδείγματα δημιουργίας και χρήσης βασικών " "συναρτήσεων." -#: glossary.rst:808 +#: glossary.rst:814 msgid "keyword argument" msgstr "όρισμα keyword" -#: glossary.rst:1125 +#: glossary.rst:1131 msgid "See :term:`argument`." msgstr "Βλ. :term:`argument`." -#: glossary.rst:811 +#: glossary.rst:817 msgid "lambda" msgstr "lambda" -#: glossary.rst:813 +#: glossary.rst:819 msgid "" "An anonymous inline function consisting of a single :term:`expression` which " "is evaluated when the function is called. The syntax to create a lambda " @@ -2056,11 +2074,11 @@ msgstr "" "τη δημιουργία μιας συνάρτησης lambda είναι ``lambda [parameters]: " "expression``" -#: glossary.rst:816 +#: glossary.rst:822 msgid "LBYL" msgstr "LBYL" -#: glossary.rst:818 +#: glossary.rst:824 msgid "" "Look before you leap. This coding style explicitly tests for pre-conditions " "before making calls or lookups. This style contrasts with the :term:`EAFP` " @@ -2072,7 +2090,7 @@ msgstr "" "έρχεται σε αντίθεση με την προσέγγιση :term:`EAFP` και χαρακτηρίζεται από " "την παρουσία πολλών δηλώσεων :keyword:`if`." -#: glossary.rst:823 +#: glossary.rst:829 msgid "" "In a multi-threaded environment, the LBYL approach can risk introducing a " "race condition between \"the looking\" and \"the leaping\". For example, " @@ -2087,19 +2105,19 @@ msgstr "" "το *mapping* μετά τη δοκιμή, αλλά πριν από την αναζήτηση. Αυτό το πρόβλημα " "μπορεί να λυθεί με κλειδώματα ή χρησιμοποιώντας την προσέγγιση EAFP." -#: glossary.rst:828 +#: glossary.rst:834 msgid "lexical analyzer" msgstr "λεξικός αναλυτής" -#: glossary.rst:831 +#: glossary.rst:837 msgid "Formal name for the *tokenizer*; see :term:`token`." msgstr "Επίσημη ονομασία για τον *tokenizer* · βλ. :term:`token`." -#: glossary.rst:832 +#: glossary.rst:838 msgid "list" msgstr "λίστα" -#: glossary.rst:834 +#: glossary.rst:840 msgid "" "A built-in Python :term:`sequence`. Despite its name it is more akin to an " "array in other languages than to a linked list since access to elements is " @@ -2109,11 +2127,11 @@ msgstr "" "περισσότερο με έναν πίνακα σε άλλες γλώσσες παρά με μια συνδεδεμένη λίστα, " "καθώς η πρόσβαση στα στοιχεί είναι *O*\\ (1)." -#: glossary.rst:837 +#: glossary.rst:843 msgid "list comprehension" msgstr "list comprehension" -#: glossary.rst:839 +#: glossary.rst:845 msgid "" "A compact way to process all or part of the elements in a sequence and " "return a list with the results. ``result = ['{:#04x}'.format(x) for x in " @@ -2128,11 +2146,11 @@ msgstr "" "από 0 έως 255. Η πρόταση :keyword:`if` είναι προαιρετική. Εάν παραλειφθεί, " "όλα τα στοιχεία στο ``range(256)`` υποβάλλονται σε επεξεργασία." -#: glossary.rst:845 +#: glossary.rst:851 msgid "loader" msgstr "loader" -#: glossary.rst:847 +#: glossary.rst:853 msgid "" "An object that loads a module. It must define the :meth:`!exec_module` and :" "meth:`!create_module` methods to implement the :class:`~importlib.abc." @@ -2144,23 +2162,23 @@ msgstr "" "class:`~importlib.abc.Loader`. Ένας loader συνήθως επιστρέφεται με ένα :term:" "`finder`. Δείτε επίσης:" -#: glossary.rst:853 +#: glossary.rst:859 msgid ":ref:`finders-and-loaders`" msgstr ":ref:`finders-and-loaders`" -#: glossary.rst:854 +#: glossary.rst:860 msgid ":class:`importlib.abc.Loader`" msgstr ":class:`importlib.abc.Loader`" -#: glossary.rst:855 +#: glossary.rst:861 msgid ":pep:`302`" msgstr ":pep:`302`" -#: glossary.rst:856 +#: glossary.rst:862 msgid "locale encoding" msgstr "τοπική κωδικοποίηση" -#: glossary.rst:858 +#: glossary.rst:864 msgid "" "On Unix, it is the encoding of the LC_CTYPE locale. It can be set with :func:" "`locale.setlocale(locale.LC_CTYPE, new_locale) `." @@ -2169,40 +2187,40 @@ msgstr "" "ρυθμιστεί με :func:`locale.setlocale(locale.LC_CTYPE, new_locale) `." -#: glossary.rst:861 +#: glossary.rst:867 msgid "On Windows, it is the ANSI code page (ex: ``\"cp1252\"``)." msgstr "Στα Windows, είναι η code page ANSI (π.χ. ``\"cp1252\"``)." -#: glossary.rst:863 +#: glossary.rst:869 msgid "" "On Android and VxWorks, Python uses ``\"utf-8\"`` as the locale encoding." msgstr "" "Στο Android και το VxWorks, η Python χρησιμοποιεί το ``\"utf-8\"`` ως τοπική " "κωδικοποίηση." -#: glossary.rst:865 +#: glossary.rst:871 msgid ":func:`locale.getencoding` can be used to get the locale encoding." msgstr "" ":func:`locale.getencoding` μπορεί να χρησιμοποιηθεί για την ανάκτηση της " "τοπικής κωδικοποίησης." -#: glossary.rst:867 +#: glossary.rst:873 msgid "See also the :term:`filesystem encoding and error handler`." msgstr "Βλ. επίσης το :term:`filesystem encoding and error handler`." -#: glossary.rst:868 +#: glossary.rst:874 msgid "magic method" msgstr "μαγική μέθοδος" -#: glossary.rst:872 +#: glossary.rst:878 msgid "An informal synonym for :term:`special method`." msgstr "Ένα άτυπο συνώνυμο για :term:`special method`." -#: glossary.rst:873 +#: glossary.rst:879 msgid "mapping" msgstr "mapping" -#: glossary.rst:875 +#: glossary.rst:881 msgid "" "A container object that supports arbitrary key lookups and implements the " "methods specified in the :class:`collections.abc.Mapping` or :class:" @@ -2218,11 +2236,11 @@ msgstr "" "class:`dict`, :class:`collections.defaultdict`, :class:`collections." "OrderedDict` και :class:`collections.Counter`." -#: glossary.rst:881 +#: glossary.rst:887 msgid "meta path finder" msgstr "meta path finder" -#: glossary.rst:883 +#: glossary.rst:889 msgid "" "A :term:`finder` returned by a search of :data:`sys.meta_path`. Meta path " "finders are related to, but different from :term:`path entry finders `." -#: glossary.rst:887 +#: glossary.rst:893 msgid "" "See :class:`importlib.abc.MetaPathFinder` for the methods that meta path " "finders implement." @@ -2240,11 +2258,11 @@ msgstr "" "Βλ. :class:`importlib.abc.MetaPathFinder` για τις μεθόδους που υλοποιούν οι " "meta path finders." -#: glossary.rst:889 +#: glossary.rst:895 msgid "metaclass" msgstr "μετα-κλάση" -#: glossary.rst:891 +#: glossary.rst:897 msgid "" "The class of a class. Class definitions create a class name, a class " "dictionary, and a list of base classes. The metaclass is responsible for " @@ -2268,15 +2286,15 @@ msgstr "" "ασφάλειας νημάτων, την παρακολούθηση δημιουργίας αντικειμένων, την υλοποίηση " "*singletons*, και πολλές άλλες εργασίες." -#: glossary.rst:901 +#: glossary.rst:907 msgid "More information can be found in :ref:`metaclasses`." msgstr "Περισσότερες πληροφορίες μπορούν να βρεθούν στο :ref:`metaclasses`." -#: glossary.rst:1270 +#: glossary.rst:1276 msgid "method" msgstr "μέθοδος" -#: glossary.rst:904 +#: glossary.rst:910 msgid "" "A function which is defined inside a class body. If called as an attribute " "of an instance of that class, the method will get the instance object as its " @@ -2288,11 +2306,11 @@ msgstr "" "αντικείμενο περίπτωσης ως πρώτο της :term:`argument` (το οποίο συνήθως " "ονομάζεται ``self``). Βλ. :term:`function` και :term:`nested scope`." -#: glossary.rst:908 +#: glossary.rst:914 msgid "method resolution order" msgstr "σειρά ανάλυσης μεθόδων" -#: glossary.rst:910 +#: glossary.rst:916 msgid "" "Method Resolution Order is the order in which base classes are searched for " "a member during lookup. See :ref:`python_2.3_mro` for details of the " @@ -2303,11 +2321,11 @@ msgstr "" "για λεπτομέρειες του αλγορίθμου που χρησιμοποιείται από τον διερμηνέα της " "Python από την έκδοση 2.3." -#: glossary.rst:913 +#: glossary.rst:919 msgid "module" msgstr "module" -#: glossary.rst:915 +#: glossary.rst:921 msgid "" "An object that serves as an organizational unit of Python code. Modules " "have a namespace containing arbitrary Python objects. Modules are loaded " @@ -2318,15 +2336,15 @@ msgstr "" "Python. Τα modules φορτώνονται στην Python με την διαδικασία :term:" "`importing`." -#: glossary.rst:919 +#: glossary.rst:925 msgid "See also :term:`package`." msgstr "Βλ. επίσης :term:`package`." -#: glossary.rst:920 +#: glossary.rst:926 msgid "module spec" msgstr "τεχνικές προδιαγραφές module" -#: glossary.rst:922 +#: glossary.rst:928 msgid "" "A namespace containing the import-related information used to load a module. " "An instance of :class:`importlib.machinery.ModuleSpec`." @@ -2335,23 +2353,23 @@ msgstr "" "που χρησιμοποιούνται για την φόρτωση ενός module. Μια περίπτωση του :class:" "`importlib.machinery.ModuleSpec`." -#: glossary.rst:925 +#: glossary.rst:931 msgid "See also :ref:`module-specs`." msgstr "Βλ. επίσης :ref:`module-specs`." -#: glossary.rst:926 +#: glossary.rst:932 msgid "MRO" msgstr "MRO" -#: glossary.rst:928 +#: glossary.rst:934 msgid "See :term:`method resolution order`." msgstr "Βλ. :term:`method resolution order`." -#: glossary.rst:929 +#: glossary.rst:935 msgid "mutable" msgstr "mutable" -#: glossary.rst:931 +#: glossary.rst:937 msgid "" "Mutable objects can change their value but keep their :func:`id`. See also :" "term:`immutable`." @@ -2359,11 +2377,11 @@ msgstr "" "Τα ευμετάβλητα αντικείμενα μπορούν να αλλάξουν τις τιμές αλλά να κρατήσουν " "τα :func:`id`. Βλ. επίσης :term:`immutable`." -#: glossary.rst:933 +#: glossary.rst:939 msgid "named tuple" msgstr "named tuple" -#: glossary.rst:935 +#: glossary.rst:941 msgid "" "The term \"named tuple\" applies to any type or class that inherits from " "tuple and whose indexable elements are also accessible using named " @@ -2374,7 +2392,7 @@ msgstr "" "ευρετηριοποιηθούν είναι προσβάσιμα χρησιμοποιώντας επώνυμα χαρακτηριστικά. " "Ο τύπος ή η κλάση μπορεί να έχει και άλλα χαρακτηριστικά." -#: glossary.rst:939 +#: glossary.rst:945 msgid "" "Several built-in types are named tuples, including the values returned by :" "func:`time.localtime` and :func:`os.stat`. Another example is :data:`sys." @@ -2384,7 +2402,7 @@ msgstr "" "που επιστρέφονται από :func:`time.localtime` και :func:`os.stat`. Ένα άλλο " "παράδειγμα είναι το :data:`sys.float_info`::" -#: glossary.rst:943 +#: glossary.rst:949 msgid "" ">>> sys.float_info[1] # indexed access\n" "1024\n" @@ -2400,7 +2418,7 @@ msgstr "" ">>> isinstance(sys.float_info, tuple) # kind of tuple\n" "True" -#: glossary.rst:950 +#: glossary.rst:956 msgid "" "Some named tuples are built-in types (such as the above examples). " "Alternatively, a named tuple can be created from a regular class definition " @@ -2419,11 +2437,11 @@ msgstr "" "τελευταίες τεχνικές προσθέτουν επίσης μερικές επιπλέον μεθόδους που μπορεί " "να μην βρεθούν σε χειρόγραφες ή ενσωματωμένες πλειάδες με όνομα." -#: glossary.rst:958 +#: glossary.rst:964 msgid "namespace" msgstr "namespace" -#: glossary.rst:960 +#: glossary.rst:966 msgid "" "The place where a variable is stored. Namespaces are implemented as " "dictionaries. There are the local, global and built-in namespaces as well " @@ -2445,11 +2463,11 @@ msgstr "" "seed` ή :func:`itertools.islice` καθιστά σαφές ότι αυτές οι συναρτήσεις " "υλοποιούνται από τα module :mod:`random` και :mod:`itertools`, αντίστοιχα." -#: glossary.rst:970 +#: glossary.rst:976 msgid "namespace package" msgstr "πακέτο namespace" -#: glossary.rst:972 +#: glossary.rst:978 msgid "" "A :term:`package` which serves only as a container for subpackages. " "Namespace packages may have no physical representation, and specifically are " @@ -2460,7 +2478,7 @@ msgstr "" "συγκεκριμένα να μην είναι σαν ένα :term:`regular package` επειδή δεν έχουν " "το ``__init__.py`` αρχείο." -#: glossary.rst:977 +#: glossary.rst:983 msgid "" "Namespace packages allow several individually installable packages to have a " "common parent package. Otherwise, it is recommended to use a :term:`regular " @@ -2470,22 +2488,22 @@ msgstr "" "εγκατάστασης μεμονωμένα να έχουν ένα κοινό γονικό πακέτο. Διαφορετικά, " "συνίσταται η χρήση ενός :term:`regular package`." -#: glossary.rst:980 +#: glossary.rst:986 msgid "" "For more information, see :pep:`420` and :ref:`reference-namespace-package`." msgstr "" "Για περισσότερες πληροφορίες, δείτε το :pep:`420` και το :ref:`reference-" "namespace-package`." -#: glossary.rst:982 +#: glossary.rst:988 msgid "See also :term:`module`." msgstr "Βλ. επίσης :term:`module`." -#: glossary.rst:983 +#: glossary.rst:989 msgid "nested scope" msgstr "nested scope" -#: glossary.rst:985 +#: glossary.rst:991 msgid "" "The ability to refer to a variable in an enclosing definition. For " "instance, a function defined inside another function can refer to variables " @@ -2502,11 +2520,11 @@ msgstr "" "Ομοίως, οι καθολικές μεταβλητές διαβάζουν και γράφουν στον καθολικό χώρο " "ονομάτων. Το :keyword:`nonlocal` επιτρέπει την εγγραφή σε εξωτερικά πεδία." -#: glossary.rst:992 +#: glossary.rst:998 msgid "new-style class" msgstr "κλάση νέου στυλ" -#: glossary.rst:994 +#: glossary.rst:1000 msgid "" "Old name for the flavor of classes now used for all class objects. In " "earlier Python versions, only new-style classes could use Python's newer, " @@ -2519,11 +2537,11 @@ msgstr "" "όπως :attr:`~object.__slots__`, descriptors, ιδιότητες :meth:`~object." "__getattribute__`, μέθοδοι κλάσης, και στατικές μέθοδοι." -#: glossary.rst:999 +#: glossary.rst:1005 msgid "object" msgstr "αντικείμενο" -#: glossary.rst:1001 +#: glossary.rst:1007 msgid "" "Any data with state (attributes or value) and defined behavior (methods). " "Also the ultimate base class of any :term:`new-style class`." @@ -2532,11 +2550,11 @@ msgstr "" "συμπεριφορά (μέθοδοι). Επίσης, η τελική βασική κλάση οποιασδήποτε :term:`new-" "style class`." -#: glossary.rst:1004 +#: glossary.rst:1010 msgid "optimized scope" msgstr "βελτιστοποιημένο πεδίο ορατότητας (scope)" -#: glossary.rst:1006 +#: glossary.rst:1012 msgid "" "A scope where target local variable names are reliably known to the compiler " "when the code is compiled, allowing optimization of read and write access to " @@ -2556,11 +2574,11 @@ msgstr "" "εκείνες που βασίζονται σε γνωστό σύνολο τοπικών και μη τοπικών μεταβλητών " "περιορίζονται σε βελτιστοποιημένα πεδία ορατότητας." -#: glossary.rst:1013 +#: glossary.rst:1019 msgid "package" msgstr "πακέτο" -#: glossary.rst:1015 +#: glossary.rst:1021 msgid "" "A Python :term:`module` which can contain submodules or recursively, " "subpackages. Technically, a package is a Python module with a ``__path__`` " @@ -2570,15 +2588,15 @@ msgstr "" "υποπακέτα. Τεχνικά, ένα πακέτο είναι μια λειτουργική μονάδα Python με ένα " "``__path__`` χαρακτηριστικό." -#: glossary.rst:1019 +#: glossary.rst:1025 msgid "See also :term:`regular package` and :term:`namespace package`." msgstr "Βλ. επίσης :term:`regular package` και :term:`namespace package`." -#: glossary.rst:1020 +#: glossary.rst:1026 msgid "parameter" msgstr "παράμετρος" -#: glossary.rst:1022 +#: glossary.rst:1028 msgid "" "A named entity in a :term:`function` (or method) definition that specifies " "an :term:`argument` (or in some cases, arguments) that the function can " @@ -2588,7 +2606,7 @@ msgstr "" "καθορίζει ένα :term:`argument` (ή σε ορισμένες περιπτώσεις, ορίσματα) που " "μπορεί να δεχθεί η συνάρτηση. Υπάρχουν πέντε είδη παραμέτρων:" -#: glossary.rst:1026 +#: glossary.rst:1032 msgid "" ":dfn:`positional-or-keyword`: specifies an argument that can be passed " "either :term:`positionally ` or as a :term:`keyword argument " @@ -2600,11 +2618,11 @@ msgstr "" "`. Αυτό είναι το προεπιλεγμένο είδος παραμέτρου, για παράδειγμα " "*foo* και *bar* στα ακόλουθα::" -#: glossary.rst:1031 +#: glossary.rst:1037 msgid "def func(foo, bar=None): ..." msgstr "def func(foo, bar=None): ..." -#: glossary.rst:1035 +#: glossary.rst:1041 msgid "" ":dfn:`positional-only`: specifies an argument that can be supplied only by " "position. Positional-only parameters can be defined by including a ``/`` " @@ -2616,11 +2634,11 @@ msgstr "" "χαρακτήρα ``/`` στη λίστα παραμέτρων του ορισμού συνάρτησης μετά από αυτές, " "για παράδειγμα *posonly1* και *posonly2* στα εξής::" -#: glossary.rst:1040 +#: glossary.rst:1046 msgid "def func(posonly1, posonly2, /, positional_or_keyword): ..." msgstr "def func(posonly1, posonly2, /, positional_or_keyword): ..." -#: glossary.rst:1044 +#: glossary.rst:1050 msgid "" ":dfn:`keyword-only`: specifies an argument that can be supplied only by " "keyword. Keyword-only parameters can be defined by including a single var-" @@ -2634,11 +2652,11 @@ msgstr "" "του ορισμού συνάρτησης πριν από αυτές, για παράδειγμα *kw_only1* και " "*kw_only2* στα ακόλουθα::" -#: glossary.rst:1050 +#: glossary.rst:1056 msgid "def func(arg, *, kw_only1, kw_only2): ..." msgstr "def func(arg, *, kw_only1, kw_only2): ..." -#: glossary.rst:1052 +#: glossary.rst:1058 msgid "" ":dfn:`var-positional`: specifies that an arbitrary sequence of positional " "arguments can be provided (in addition to any positional arguments already " @@ -2652,11 +2670,11 @@ msgstr "" "προσαρτώντας το όνομα της παραμέτρου με ``*``, για παράδειγμα *args* στα " "ακόλουθα::" -#: glossary.rst:1058 +#: glossary.rst:1064 msgid "def func(*args, **kwargs): ..." msgstr "def func(*args, **kwargs): ..." -#: glossary.rst:1060 +#: glossary.rst:1066 msgid "" ":dfn:`var-keyword`: specifies that arbitrarily many keyword arguments can be " "provided (in addition to any keyword arguments already accepted by other " @@ -2669,7 +2687,7 @@ msgstr "" "οριστεί προσαρτώντας το όνομα της παραμέτρου με ``**``, για παράδειγμα " "*kwargs* όπως παραπάνω." -#: glossary.rst:1066 +#: glossary.rst:1072 msgid "" "Parameters can specify both optional and required arguments, as well as " "default values for some optional arguments." @@ -2678,7 +2696,7 @@ msgstr "" "απαιτούμενα ορίσματα , καθώς και προεπιλεγμένες τιμές για ορισμένα " "προαιρετικά ορίσματα." -#: glossary.rst:1069 +#: glossary.rst:1075 msgid "" "See also the :term:`argument` glossary entry, the FAQ question on :ref:`the " "difference between arguments and parameters `, " @@ -2690,11 +2708,11 @@ msgstr "" "parameter>`, την κλάση :class:`inspect.Parameter`, την ενότητα :ref:" "`function` και :pep:`362`." -#: glossary.rst:1073 +#: glossary.rst:1079 msgid "path entry" msgstr "path entry" -#: glossary.rst:1075 +#: glossary.rst:1081 msgid "" "A single location on the :term:`import path` which the :term:`path based " "finder` consults to find modules for importing." @@ -2702,11 +2720,11 @@ msgstr "" "Μια μεμονωμένη τοποθεσία στο :term:`import path` την οποία συμβουλεύεται ο :" "term:`path based finder` για να βρει modules για εισαγωγή." -#: glossary.rst:1077 +#: glossary.rst:1083 msgid "path entry finder" msgstr "path entry finder" -#: glossary.rst:1079 +#: glossary.rst:1085 msgid "" "A :term:`finder` returned by a callable on :data:`sys.path_hooks` (i.e. a :" "term:`path entry hook`) which knows how to locate modules given a :term:" @@ -2716,7 +2734,7 @@ msgstr "" "path_hooks` (δηλαδή ένα :term:`path entry hook`) που ξέρει πως να εντοπίζει " "modules με :term:`path entry`." -#: glossary.rst:1083 +#: glossary.rst:1089 msgid "" "See :class:`importlib.abc.PathEntryFinder` for the methods that path entry " "finders implement." @@ -2724,11 +2742,11 @@ msgstr "" "Βλ. :class:`importlib.abc.PathEntryFinder` για τις μεθόδους που ο entry " "finder διαδρομής υλοποιεί." -#: glossary.rst:1085 +#: glossary.rst:1091 msgid "path entry hook" msgstr "path entry hook" -#: glossary.rst:1087 +#: glossary.rst:1093 msgid "" "A callable on the :data:`sys.path_hooks` list which returns a :term:`path " "entry finder` if it knows how to find modules on a specific :term:`path " @@ -2738,11 +2756,11 @@ msgstr "" "term:`path entry finder` εάν ξέρει πως να βρίσκει module σε μια " "συγκεκριμένη :term:`path entry`." -#: glossary.rst:1090 +#: glossary.rst:1096 msgid "path based finder" msgstr "path based finder" -#: glossary.rst:1092 +#: glossary.rst:1098 msgid "" "One of the default :term:`meta path finders ` which " "searches an :term:`import path` for modules." @@ -2750,11 +2768,11 @@ msgstr "" "Ένα από τα προεπιλεγμένα :term:`meta path finders ` που " "αναζητά ένα :term:`import path` για modules." -#: glossary.rst:1094 +#: glossary.rst:1100 msgid "path-like object" msgstr "path-like αντικείμενο" -#: glossary.rst:1096 +#: glossary.rst:1102 msgid "" "An object representing a file system path. A path-like object is either a :" "class:`str` or :class:`bytes` object representing a path, or an object " @@ -2775,11 +2793,11 @@ msgstr "" "ενός αποτελέσματος :class:`str` ή :class:`bytes`, αντίστοιχα. Εισήχθη από " "τον :pep:`519`." -#: glossary.rst:1104 +#: glossary.rst:1110 msgid "PEP" msgstr "PEP" -#: glossary.rst:1106 +#: glossary.rst:1112 msgid "" "Python Enhancement Proposal. A PEP is a design document providing " "information to the Python community, or describing a new feature for Python " @@ -2792,7 +2810,7 @@ msgstr "" "μια συνοπτική τεχνική προδιαγραφή και μια λογική για τα προτεινόμενα " "χαρακτηριστικά." -#: glossary.rst:1112 +#: glossary.rst:1118 msgid "" "PEPs are intended to be the primary mechanisms for proposing major new " "features, for collecting community input on an issue, and for documenting " @@ -2806,15 +2824,15 @@ msgstr "" "στην Python. Ο συγγραφέας του PEP είναι υπεύθυνος για την οικοδόμηση " "συναίνεσης εντός της κοινότητας και την τεκμηρίωση αντίθετων απόψεων." -#: glossary.rst:1118 +#: glossary.rst:1124 msgid "See :pep:`1`." msgstr "Βλ. :pep:`1`." -#: glossary.rst:1119 +#: glossary.rst:1125 msgid "portion" msgstr "τμήμα" -#: glossary.rst:1121 +#: glossary.rst:1127 msgid "" "A set of files in a single directory (possibly stored in a zip file) that " "contribute to a namespace package, as defined in :pep:`420`." @@ -2823,15 +2841,15 @@ msgstr "" "αρχείο *zip*) που συμβάλλουν σε ένα namespace πακέτο, όπως ορίζεται στο :pep:" "`420`." -#: glossary.rst:1123 +#: glossary.rst:1129 msgid "positional argument" msgstr "όρισμα θέσης" -#: glossary.rst:1126 +#: glossary.rst:1132 msgid "provisional API" msgstr "provisional API" -#: glossary.rst:1128 +#: glossary.rst:1134 msgid "" "A provisional API is one which has been deliberately excluded from the " "standard library's backwards compatibility guarantees. While major changes " @@ -2850,7 +2868,7 @@ msgstr "" "αποκαλυφθούν σοβαρά θεμελιώδη ελαττώματα που παραλείφθηκαν πριν από τη " "συμπερίληψη του API." -#: glossary.rst:1137 +#: glossary.rst:1143 msgid "" "Even for provisional APIs, backwards incompatible changes are seen as a " "\"solution of last resort\" - every attempt will still be made to find a " @@ -2860,7 +2878,7 @@ msgstr "" "\"λύση έσχατης ανάγκης\"- θα εξακολουθεί να γίνεται κάθε προσπάθεια για να " "βρεθεί μια λύση backwards συμβατή σε τυχόν εντοπισμένα προβλήματα." -#: glossary.rst:1141 +#: glossary.rst:1147 msgid "" "This process allows the standard library to continue to evolve over time, " "without locking in problematic design errors for extended periods of time. " @@ -2871,19 +2889,19 @@ msgstr "" "σφάλματα σχεδιασμού για εκτεταμένες χρονικές περιόδους. Βλ. :pep:`411` για " "περισσότερες λεπτομέρειες." -#: glossary.rst:1144 +#: glossary.rst:1150 msgid "provisional package" msgstr "provisional πακέτο" -#: glossary.rst:1146 +#: glossary.rst:1152 msgid "See :term:`provisional API`." msgstr "Βλ. :term:`provisional API`." -#: glossary.rst:1147 +#: glossary.rst:1153 msgid "Python 3000" msgstr "Python 3000" -#: glossary.rst:1149 +#: glossary.rst:1155 msgid "" "Nickname for the Python 3.x release line (coined long ago when the release " "of version 3 was something in the distant future.) This is also abbreviated " @@ -2893,11 +2911,11 @@ msgstr "" "όταν η κυκλοφορία της έκδοσης 3 ήταν κάτι στο μακρινό μέλλον.) Αυτό " "ονομάζεται επίσης ως συντομογραφία \"Py3k\"." -#: glossary.rst:1152 +#: glossary.rst:1158 msgid "Pythonic" msgstr "Pythonic" -#: glossary.rst:1154 +#: glossary.rst:1160 msgid "" "An idea or piece of code which closely follows the most common idioms of the " "Python language, rather than implementing code using concepts common to " @@ -2914,7 +2932,7 @@ msgstr "" "κατασκευής, έτσι οι άνθρωποι που δεν είναι εξοικειωμένοι με την Python " "χρησιμοποιούν μερικές φορές έναν αριθμητικό μετρητή::" -#: glossary.rst:1161 +#: glossary.rst:1167 msgid "" "for i in range(len(food)):\n" " print(food[i])" @@ -2922,11 +2940,11 @@ msgstr "" "for i in range(len(food)):\n" " print(food[i])" -#: glossary.rst:1164 +#: glossary.rst:1170 msgid "As opposed to the cleaner, Pythonic method::" msgstr "Αντίθετα, μια πιο καθαρή μέθοδος Pythonic::" -#: glossary.rst:1166 +#: glossary.rst:1172 msgid "" "for piece in food:\n" " print(piece)" @@ -2934,11 +2952,11 @@ msgstr "" "for piece in food:\n" " print(piece)" -#: glossary.rst:1168 +#: glossary.rst:1174 msgid "qualified name" msgstr "αναγνωρισμένο όνομα" -#: glossary.rst:1170 +#: glossary.rst:1176 msgid "" "A dotted name showing the \"path\" from a module's global scope to a class, " "function or method defined in that module, as defined in :pep:`3155`. For " @@ -2950,7 +2968,7 @@ msgstr "" "ενότητα, όπως ορίζεται στο :pep:`3155`. Για συναρτήσεις και κλάσεις ανώτατου " "επιπέδου, το αναγνωρισμένο όνομα είναι ίδιο με το όνομα του αντικειμένου::" -#: glossary.rst:1175 +#: glossary.rst:1181 msgid "" ">>> class C:\n" "... class D:\n" @@ -2976,7 +2994,7 @@ msgstr "" ">>> C.D.meth.__qualname__\n" "'C.D.meth'" -#: glossary.rst:1187 +#: glossary.rst:1193 msgid "" "When used to refer to modules, the *fully qualified name* means the entire " "dotted path to the module, including any parent packages, e.g. ``email.mime." @@ -2986,7 +3004,7 @@ msgstr "" "όνομα* σημαίνει ολόκληρο το διακεκομμένο path προς το module, " "συμπεριλαμβανομένων τυχόν γονικών πακέτων π.χ. ``email.mime.text``::" -#: glossary.rst:1191 +#: glossary.rst:1197 msgid "" ">>> import email.mime.text\n" ">>> email.mime.text.__name__\n" @@ -2996,11 +3014,11 @@ msgstr "" ">>> email.mime.text.__name__\n" "'email.mime.text'" -#: glossary.rst:1194 +#: glossary.rst:1200 msgid "reference count" msgstr "πλήθος αναφοράς" -#: glossary.rst:1196 +#: glossary.rst:1202 msgid "" "The number of references to an object. When the reference count of an " "object drops to zero, it is deallocated. Some objects are :term:`immortal` " @@ -3019,11 +3037,11 @@ msgstr "" "συνάρτηση :func:`sys.getrefcount` για να επιστρέψουν το πλήθος αναφοράς για " "ένα συγκεκριμένο αντικείμενο." -#: glossary.rst:1204 +#: glossary.rst:1210 msgid "regular package" msgstr "κανονικό πακέτο" -#: glossary.rst:1206 +#: glossary.rst:1212 msgid "" "A traditional :term:`package`, such as a directory containing an ``__init__." "py`` file." @@ -3031,15 +3049,15 @@ msgstr "" "Ένα παραδοσιακό :term:`package`, όπως ένας κατάλογος που περιέχει ένα " "``__init__.py`` αρχείο." -#: glossary.rst:1209 +#: glossary.rst:1215 msgid "See also :term:`namespace package`." msgstr "Βλ. επίσης :term:`namespace package`." -#: glossary.rst:1210 +#: glossary.rst:1216 msgid "REPL" msgstr "REPL" -#: glossary.rst:1212 +#: glossary.rst:1218 msgid "" "An acronym for the \"read–eval–print loop\", another name for the :term:" "`interactive` interpreter shell." @@ -3047,11 +3065,11 @@ msgstr "" "Ακρωνύμιο του \"read–eval–print loop\", άλλη ονομασία για το :term:" "`interactive` περιβάλλον του διερμηνέα." -#: glossary.rst:1214 +#: glossary.rst:1220 msgid "__slots__" msgstr "__slots__" -#: glossary.rst:1216 +#: glossary.rst:1222 msgid "" "A declaration inside a class that saves memory by pre-declaring space for " "instance attributes and eliminating instance dictionaries. Though popular, " @@ -3065,11 +3083,11 @@ msgstr "" "σωστή και προορίζεται καλύτερα για σπάνιες περιπτώσεις όπου υπάρχει μεγάλος " "αριθμός στιγμιοτύπων σε μια εφαρμογή κρίσιμης-μνήμης." -#: glossary.rst:1221 +#: glossary.rst:1227 msgid "sequence" msgstr "ακολουθία" -#: glossary.rst:1223 +#: glossary.rst:1229 msgid "" "An :term:`iterable` which supports efficient element access using integer " "indices via the :meth:`~object.__getitem__` special method and defines a :" @@ -3090,7 +3108,7 @@ msgstr "" "ακολουθία επειδή οι αναζητήσεις χρησιμοποιούν αυθαίρετα :term:`hashable` " "κλειδιά παρά ακέραιοι." -#: glossary.rst:1232 +#: glossary.rst:1238 msgid "" "The :class:`collections.abc.Sequence` abstract base class defines a much " "richer interface that goes beyond just :meth:`~object.__getitem__` and :meth:" @@ -3109,11 +3127,11 @@ msgstr "" "σχετικά με τις μεθόδους ακολουθίας γενικά, ανατρέξτε στο :ref:`Common " "Sequence Operations `." -#: glossary.rst:1241 +#: glossary.rst:1247 msgid "set comprehension" msgstr "set comprehension" -#: glossary.rst:1243 +#: glossary.rst:1249 msgid "" "A compact way to process all or part of the elements in an iterable and " "return a set with the results. ``results = {c for c in 'abracadabra' if c " @@ -3125,11 +3143,11 @@ msgstr "" "c in 'abracadabra' if c not in 'abc'}`` δημιουργεί το σύνολο συμβολοσειρών " "``{'r', 'd'}``. Βλ. :ref:`comprehensions`." -#: glossary.rst:1247 +#: glossary.rst:1253 msgid "single dispatch" msgstr "μοναδικό dispatch" -#: glossary.rst:1249 +#: glossary.rst:1255 msgid "" "A form of :term:`generic function` dispatch where the implementation is " "chosen based on the type of a single argument." @@ -3137,11 +3155,11 @@ msgstr "" "Μια μορφή dispatch :term:`generic function` όπου η υλοποίηση επιλέγεται με " "βάση τον τύπο ενός μεμονωμένου ορίσματος." -#: glossary.rst:1251 +#: glossary.rst:1257 msgid "slice" msgstr "slice" -#: glossary.rst:1253 +#: glossary.rst:1259 msgid "" "An object usually containing a portion of a :term:`sequence`. A slice is " "created using the subscript notation, ``[]`` with colons between numbers " @@ -3154,11 +3172,11 @@ msgstr "" "``variable_name[1:3:5]``. Η σημείωση αγκύλης (subscript) χρησιμοποιεί " "εσωτερικά αντικείμενα :class:`slice`." -#: glossary.rst:1257 +#: glossary.rst:1263 msgid "soft deprecated" msgstr "απαρχαιωμένη με ήπιο τρόπο" -#: glossary.rst:1259 +#: glossary.rst:1265 msgid "" "A soft deprecated API should not be used in new code, but it is safe for " "already existing code to use it. The API remains documented and tested, but " @@ -3168,7 +3186,7 @@ msgstr "" "κώδικα, αλλά είναι ασφαλές σε ήδη υπάρχοντα κώδικα να το χρησιμοποιεί. Το " "API παραμένει τεκμηριωμένο και δοκιμασμένο, αλλά δεν θα ενισχυθεί περαιτέρω." -#: glossary.rst:1263 +#: glossary.rst:1269 msgid "" "Soft deprecation, unlike normal deprecation, does not plan on removing the " "API and will not emit warnings." @@ -3176,7 +3194,7 @@ msgstr "" "Η κατάργηση με ήπιο τρόπο, σε αντίθεση με την κανονική κατάργηση, δεν " "σχεδιάζει την κατάργηση του API και δεν θα εκπέμπει ειδοποιήσεις" -#: glossary.rst:1266 +#: glossary.rst:1272 msgid "" "See `PEP 387: Soft Deprecation `_." @@ -3184,11 +3202,11 @@ msgstr "" "Δείτε `PEP 387: Soft Deprecation `_." -#: glossary.rst:1268 +#: glossary.rst:1274 msgid "special method" msgstr "ειδική μέθοδος" -#: glossary.rst:1272 +#: glossary.rst:1278 msgid "" "A method that is called implicitly by Python to execute a certain operation " "on a type, such as addition. Such methods have names starting and ending " @@ -3200,11 +3218,11 @@ msgstr "" "έχουνε ονόματα που ξεκινούν και τελειώνουν με διπλές κάτω παύλες. Οι ειδικές " "μέθοδοι τεκμηριώνονται στο :ref:`specialnames`." -#: glossary.rst:1276 +#: glossary.rst:1282 msgid "statement" msgstr "δήλωση" -#: glossary.rst:1278 +#: glossary.rst:1284 msgid "" "A statement is part of a suite (a \"block\" of code). A statement is either " "an :term:`expression` or one of several constructs with a keyword, such as :" @@ -3214,11 +3232,11 @@ msgstr "" "είναι είτε ένας :term:`expression` είτε μια από πολλές δομές με μια λέξη-" "κλειδί όπως :keyword:`if`, :keyword:`while` ή :keyword:`for`." -#: glossary.rst:1281 +#: glossary.rst:1287 msgid "static type checker" msgstr "ελεγκτής στατικού τύπου" -#: glossary.rst:1283 +#: glossary.rst:1289 msgid "" "An external tool that reads Python code and analyzes it, looking for issues " "such as incorrect types. See also :term:`type hints ` and the :" @@ -3228,11 +3246,11 @@ msgstr "" "αναζητώντας προβλήματα όπως λανθασμένοι τύποι. Βλ. επίσης :term:`type hints " "` και το module :mod:`typing`." -#: glossary.rst:1286 +#: glossary.rst:1292 msgid "strong reference" msgstr "strong reference" -#: glossary.rst:1288 +#: glossary.rst:1294 msgid "" "In Python's C API, a strong reference is a reference to an object which is " "owned by the code holding the reference. The strong reference is taken by " @@ -3245,7 +3263,7 @@ msgstr "" "δημιουργείται και απελευθερώνεται με :c:func:`Py_DECREF` όταν διαγραφεί η " "αναφορά." -#: glossary.rst:1294 +#: glossary.rst:1300 msgid "" "The :c:func:`Py_NewRef` function can be used to create a strong reference to " "an object. Usually, the :c:func:`Py_DECREF` function must be called on the " @@ -3257,15 +3275,15 @@ msgstr "" "`Py_DECREF` πρέπει να καλείται στην ισχυρή αναφορά πριν βγει από το εύρος " "της ισχυρής αναφοράς, για να αποφευχθεί η διαρροή μιας αναφοράς." -#: glossary.rst:1299 +#: glossary.rst:1305 msgid "See also :term:`borrowed reference`." msgstr "Βλ. επίσης :term:`borrowed reference`." -#: glossary.rst:1300 +#: glossary.rst:1306 msgid "text encoding" msgstr "κωδικοποίηση κειμένου" -#: glossary.rst:1302 +#: glossary.rst:1308 msgid "" "A string in Python is a sequence of Unicode code points (in range " "``U+0000``--``U+10FFFF``). To store or transfer a string, it needs to be " @@ -3275,7 +3293,7 @@ msgstr "" "εύρος ``U+0000``--``U+10FFFF``). Για να αποθηκεύσετε ή να μεταφέρετε μια " "συμβολοσειρά, πρέπει να σειριοποιηθεί ως δυαδική ακολουθία." -#: glossary.rst:1306 +#: glossary.rst:1312 msgid "" "Serializing a string into a sequence of bytes is known as \"encoding\", and " "recreating the string from the sequence of bytes is known as \"decoding\"." @@ -3284,7 +3302,7 @@ msgstr "" "\"κωδικοποίηση\" , και η αναδημιουργία της συμβολοσειράς από την δυαδική " "ακολουθία είναι γνωστή ως \"αποκωδικοποίηση\"." -#: glossary.rst:1309 +#: glossary.rst:1315 msgid "" "There are a variety of different text serialization :ref:`codecs `, which are collectively referred to as \"text encodings\"." @@ -3293,11 +3311,11 @@ msgstr "" "`, οι οποίοι συλλογικά αναφέρονται ως \"κωδικοποιήσεις " "κειμένου\"." -#: glossary.rst:1312 +#: glossary.rst:1318 msgid "text file" msgstr "αρχείο κειμένου" -#: glossary.rst:1314 +#: glossary.rst:1320 msgid "" "A :term:`file object` able to read and write :class:`str` objects. Often, a " "text file actually accesses a byte-oriented datastream and handles the :term:" @@ -3312,7 +3330,7 @@ msgstr "" "κειμένου (``'r'`` ή ``'w'``), :data:`sys.stdin`, :data:`sys.stdout`, και " "στιγμιότυπα του :class:`io.StringIO`." -#: glossary.rst:1321 +#: glossary.rst:1327 msgid "" "See also :term:`binary file` for a file object able to read and write :term:" "`bytes-like objects `." @@ -3320,11 +3338,11 @@ msgstr "" "Βλ. επίσης :term:`binary file` για ένα αντικείμενο αρχείου με δυνατότητα " "ανάγνωσης και εγγραφής :term:`δυαδικά αντικείμενα `." -#: glossary.rst:1323 +#: glossary.rst:1329 msgid "thread state" msgstr "κατάσταση νήματος" -#: glossary.rst:1326 +#: glossary.rst:1332 msgid "" "The information used by the :term:`CPython` runtime to run in an OS thread. " "For example, this includes the current exception, if any, and the state of " @@ -3335,7 +3353,7 @@ msgstr "" "περιλαμβάνει την τρέχουσα εξαίρεση, εάν υπάρχει, και την κατάσταση του " "διερμηνέα bytecode." -#: glossary.rst:1330 +#: glossary.rst:1336 msgid "" "Each thread state is bound to a single OS thread, but threads may have many " "thread states available. At most, one of them may be :term:`attached " @@ -3346,7 +3364,7 @@ msgstr "" "νήματος. Το πολύ, μία από αυτές μπορεί να είναι :term:`attached ` ταυτόχρονα." -#: glossary.rst:1334 +#: glossary.rst:1340 msgid "" "An :term:`attached thread state` is required to call most of Python's C API, " "unless a function explicitly documents otherwise. The bytecode interpreter " @@ -3357,7 +3375,7 @@ msgstr "" "το αντίθετο. Ο διερμηνέας bytecode εκτελείται μόνο υπό κατάσταση συνημμένου " "νήματος." -#: glossary.rst:1338 +#: glossary.rst:1344 msgid "" "Each thread state belongs to a single interpreter, but each interpreter may " "have many thread states, including multiple for the same OS thread. Thread " @@ -3372,7 +3390,7 @@ msgstr "" "μπορεί να είναι :term:`attached ` σε αυτό το νήμα σε " "οποιαδήποτε δεδομένη στιγμή." -#: glossary.rst:1344 +#: glossary.rst:1350 msgid "" "See :ref:`Thread State and the Global Interpreter Lock ` for more " "information." @@ -3380,11 +3398,11 @@ msgstr "" "Δείτε το :ref:`Thread State and the Global Interpreter Lock ` για " "περισσότερες πληροφορίες." -#: glossary.rst:1346 +#: glossary.rst:1352 msgid "token" msgstr "λεκτικό σύμβολο (token)" -#: glossary.rst:1349 +#: glossary.rst:1355 msgid "" "A small unit of source code, generated by the :ref:`lexical analyzer " "` (also called the *tokenizer*). Names, numbers, strings, " @@ -3395,7 +3413,7 @@ msgstr "" "συμβολοσειρές, τελεστές αλλαγές γραμμής και παρόμοια στοιχεία αναπαρίστανται " "ως λεκτικά σύμβολα (tokens)." -#: glossary.rst:1354 +#: glossary.rst:1360 msgid "" "The :mod:`tokenize` module exposes Python's lexical analyzer. The :mod:" "`token` module contains information on the various types of tokens." @@ -3404,11 +3422,11 @@ msgstr "" "mod:`token` περιέχει πληροφορίες για τους διάφορους τύπους λεκτικών συμβόλων " "(tokens)." -#: glossary.rst:1357 +#: glossary.rst:1363 msgid "triple-quoted string" msgstr "συμβολοσειρά τριπλών εισαγωγικών" -#: glossary.rst:1359 +#: glossary.rst:1365 msgid "" "A string which is bound by three instances of either a quotation mark (\") " "or an apostrophe ('). While they don't provide any functionality not " @@ -3426,11 +3444,11 @@ msgstr "" "γραμμές χωρίς τη χρήση του χαρακτήρα συνέχεια, καθιστώντας τα ιδιαίτερα " "χρήσιμα κατά τη σύνταξη εγγράφων με συμβολοσειρές." -#: glossary.rst:1366 +#: glossary.rst:1372 msgid "type" msgstr "τύπος" -#: glossary.rst:1368 +#: glossary.rst:1374 msgid "" "The type of a Python object determines what kind of object it is; every " "object has a type. An object's type is accessible as its :attr:`~object." @@ -3441,17 +3459,17 @@ msgstr "" "το χαρακτηριστικό :attr:`~object.__class__` ή μπορεί να ανακτηθεί με " "``type(obj)``." -#: glossary.rst:1372 +#: glossary.rst:1378 msgid "type alias" msgstr "type alias" -#: glossary.rst:1374 +#: glossary.rst:1380 msgid "A synonym for a type, created by assigning the type to an identifier." msgstr "" "Ένα συνώνυμο για έναν τύπο, που δημιουργείται με την ανάθεση τύπου σε ένα " "αναγνωριστικό." -#: glossary.rst:1376 +#: glossary.rst:1382 msgid "" "Type aliases are useful for simplifying :term:`type hints `. For " "example::" @@ -3459,7 +3477,7 @@ msgstr "" "Τα type aliases είναι χρήσιμα για την απλοποίηση :term:`type alias `. Για παράδειγμα::" -#: glossary.rst:1379 +#: glossary.rst:1385 msgid "" "def remove_gray_shades(\n" " colors: list[tuple[int, int, int]]) -> list[tuple[int, int, int]]:\n" @@ -3469,11 +3487,11 @@ msgstr "" " colors: list[tuple[int, int, int]]) -> list[tuple[int, int, int]]:\n" " pass" -#: glossary.rst:1383 +#: glossary.rst:1389 msgid "could be made more readable like this::" msgstr "μπορεί να γίνει πιο ευανάγνωστο όπως::" -#: glossary.rst:1385 +#: glossary.rst:1391 msgid "" "Color = tuple[int, int, int]\n" "\n" @@ -3485,16 +3503,16 @@ msgstr "" "def remove_gray_shades(colors: list[Color]) -> list[Color]:\n" " pass" -#: glossary.rst:1404 +#: glossary.rst:1410 msgid "See :mod:`typing` and :pep:`484`, which describe this functionality." msgstr "" "Βλ. :mod:`typing` και :pep:`484`, που περιγράφει αυτήν την λειτουργικότητα." -#: glossary.rst:1391 +#: glossary.rst:1397 msgid "type hint" msgstr "type hint" -#: glossary.rst:1393 +#: glossary.rst:1399 msgid "" "An :term:`annotation` that specifies the expected type for a variable, a " "class attribute, or a function parameter or return value." @@ -3503,7 +3521,7 @@ msgstr "" "μεταβλητή, ένα χαρακτηριστικό κλάσης ή μια παράμετρο συνάρτησης ή τιμή " "επιστροφής." -#: glossary.rst:1396 +#: glossary.rst:1402 msgid "" "Type hints are optional and are not enforced by Python but they are useful " "to :term:`static type checkers `. They can also aid " @@ -3514,7 +3532,7 @@ msgstr "" "checker>`. Μπορούν επίσης να βοηθήσουν τους IDEs με τη συμπλήρωση και την " "αναδιαμόρφωση κώδικα." -#: glossary.rst:1400 +#: glossary.rst:1406 msgid "" "Type hints of global variables, class attributes, and functions, but not " "local variables, can be accessed using :func:`typing.get_type_hints`." @@ -3523,11 +3541,11 @@ msgstr "" "κλάσης και συναρτήσεις , αλλά όχι τοπικές μεταβλητές, μπορούν να " "προσπελαστούν χρησιμοποιώντας το :func:`typing.get_type_hints`." -#: glossary.rst:1405 +#: glossary.rst:1411 msgid "universal newlines" msgstr "καθολικές νέες γραμμές" -#: glossary.rst:1407 +#: glossary.rst:1413 msgid "" "A manner of interpreting text streams in which all of the following are " "recognized as ending a line: the Unix end-of-line convention ``'\\n'``, the " @@ -3541,22 +3559,22 @@ msgstr "" "Βλ. :pep:`278` και :pep:`3116`, καθώς και :func:`bytes.splitlines` για " "πρόσθετη χρήση." -#: glossary.rst:1412 +#: glossary.rst:1418 msgid "variable annotation" msgstr "annotation μεταβλητής" -#: glossary.rst:1414 +#: glossary.rst:1420 msgid "An :term:`annotation` of a variable or a class attribute." msgstr "Ένας :term:`annotation` μια μεταβλητής ή ενός χαρακτηριστικού κλάσης." -#: glossary.rst:1416 +#: glossary.rst:1422 msgid "" "When annotating a variable or a class attribute, assignment is optional::" msgstr "" "Όταν annotating μια μεταβλητή ή ένα χαρακτηριστικό κλάσης, η ανάθεση είναι " "προαιρετική::" -#: glossary.rst:1418 +#: glossary.rst:1424 msgid "" "class C:\n" " field: 'annotation'" @@ -3564,7 +3582,7 @@ msgstr "" "class C:\n" " field: 'annotation'" -#: glossary.rst:1421 +#: glossary.rst:1427 msgid "" "Variable annotations are usually used for :term:`type hints `: " "for example this variable is expected to take :class:`int` values::" @@ -3573,16 +3591,16 @@ msgstr "" "`: για παράδειγμα αυτή η μεταβλητή αναμένεται να λάβει τιμές :" "class:`int`::" -#: glossary.rst:1425 +#: glossary.rst:1431 msgid "count: int = 0" msgstr "count: int = 0" -#: glossary.rst:1427 +#: glossary.rst:1433 msgid "Variable annotation syntax is explained in section :ref:`annassign`." msgstr "" "Η σύνταξη annotation μεταβλητής περιγράφεται στην ενότητα :ref:`annassign`." -#: glossary.rst:1429 +#: glossary.rst:1435 msgid "" "See :term:`function annotation`, :pep:`484` and :pep:`526`, which describe " "this functionality. Also see :ref:`annotations-howto` for best practices on " @@ -3592,11 +3610,11 @@ msgstr "" "αυτή τη λειτουργία. Δείτε επίσης :ref:`annotations-howto` για βέλτιστες " "πρακτικές σχετικά με την εργασία με σχολιασμούς." -#: glossary.rst:1433 +#: glossary.rst:1439 msgid "virtual environment" msgstr "virtual environment" -#: glossary.rst:1435 +#: glossary.rst:1441 msgid "" "A cooperatively isolated runtime environment that allows Python users and " "applications to install and upgrade Python distribution packages without " @@ -3608,15 +3626,15 @@ msgstr "" "πακέτα διανομής Python χωρίς να παρεμβαίνουν στη συμπεριφορά άλλων εφαρμογών " "Python που εκτελούνται στο ίδιο σύστημα." -#: glossary.rst:1440 +#: glossary.rst:1446 msgid "See also :mod:`venv`." msgstr "Βλ. επίσης :mod:`venv`." -#: glossary.rst:1441 +#: glossary.rst:1447 msgid "virtual machine" msgstr "virtual machine" -#: glossary.rst:1443 +#: glossary.rst:1449 msgid "" "A computer defined entirely in software. Python's virtual machine executes " "the :term:`bytecode` emitted by the bytecode compiler." @@ -3625,11 +3643,11 @@ msgstr "" "της Python εκτελεί το :term:`bytecode` που εκπέμπεται από τον μεταγλωττιστή " "bytecode." -#: glossary.rst:1445 +#: glossary.rst:1451 msgid "Zen of Python" msgstr "Zen της Python" -#: glossary.rst:1447 +#: glossary.rst:1453 msgid "" "Listing of Python design principles and philosophies that are helpful in " "understanding and using the language. The listing can be found by typing " @@ -3647,11 +3665,11 @@ msgstr "C-contiguous" msgid "Fortran contiguous" msgstr "Fortran contiguous" -#: glossary.rst:870 +#: glossary.rst:876 msgid "magic" msgstr "magic" -#: glossary.rst:1270 +#: glossary.rst:1276 msgid "special" msgstr "special" diff --git a/howto/annotations.po b/howto/annotations.po index 6a11aa77..ffa44f85 100644 --- a/howto/annotations.po +++ b/howto/annotations.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -375,5 +375,14 @@ msgid "" "`annotationlib.get_annotations` on Python 3.14+ or :func:`inspect." "get_annotations` on Python 3.10+. On earlier versions of Python, you can " "avoid these bugs by accessing the annotations from the class's :attr:`~type." -"__dict__` (e.g., ``cls.__dict__.get('__annotations__', None)``)." +"__dict__` (for example, ``cls.__dict__.get('__annotations__', None)``)." +msgstr "" + +#: howto/annotations.rst:253 +msgid "" +"In some versions of Python, instances of classes may have an " +"``__annotations__`` attribute. However, this is not supported functionality. " +"If you need the annotations of an instance, you can use :func:`type` to " +"access its class (for example, ``annotationlib." +"get_annotations(type(myinstance))`` on Python 3.14+)." msgstr "" diff --git a/howto/argparse-optparse.po b/howto/argparse-optparse.po index c68f6513..b2a619c1 100644 --- a/howto/argparse-optparse.po +++ b/howto/argparse-optparse.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/howto/argparse.po b/howto/argparse.po index d38e8378..dffe068a 100644 --- a/howto/argparse.po +++ b/howto/argparse.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/howto/clinic.po b/howto/clinic.po index 7685980e..f0c5c5d7 100644 --- a/howto/clinic.po +++ b/howto/clinic.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/howto/cporting.po b/howto/cporting.po index 44dc796e..6b178f39 100644 --- a/howto/cporting.po +++ b/howto/cporting.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -42,8 +42,8 @@ msgstr "" #: howto/cporting.rst:17 msgid "" -"The `Cython`_ and `CFFI`_ libraries offer abstractions over Python's C API. " -"Extensions generally need to be re-written to use one of them, but the " -"library then handles differences between various Python versions and " -"implementations." +":ref:`Recommended third party tools ` offer abstractions over " +"the Python's C API. Extensions generally need to be re-written to use one of " +"them, but the library then handles differences between various Python " +"versions and implementations." msgstr "" diff --git a/howto/curses.po b/howto/curses.po index 6960e2d7..70698e6a 100644 --- a/howto/curses.po +++ b/howto/curses.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/howto/descriptor.po b/howto/descriptor.po index 8450ccce..e6faae49 100644 --- a/howto/descriptor.po +++ b/howto/descriptor.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/howto/enum.po b/howto/enum.po index 2df8254b..029e26ec 100644 --- a/howto/enum.po +++ b/howto/enum.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/howto/free-threading-extensions.po b/howto/free-threading-extensions.po index 67d5d776..be4ee690 100644 --- a/howto/free-threading-extensions.po +++ b/howto/free-threading-extensions.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.13\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -23,9 +23,9 @@ msgstr "" #: howto/free-threading-extensions.rst:9 msgid "" -"Starting with the 3.13 release, CPython has experimental support for running " -"with the :term:`global interpreter lock` (GIL) disabled in a configuration " -"called :term:`free threading`. This document describes how to adapt C API " +"Starting with the 3.13 release, CPython has support for running with the :" +"term:`global interpreter lock` (GIL) disabled in a configuration called :" +"term:`free threading`. This document describes how to adapt C API " "extensions to support free threading." msgstr "" @@ -48,29 +48,37 @@ msgid "" "#endif" msgstr "" -#: howto/free-threading-extensions.rst:27 +#: howto/free-threading-extensions.rst:28 +msgid "" +"On Windows, this macro is not defined automatically, but must be specified " +"to the compiler when building. The :func:`sysconfig.get_config_var` function " +"can be used to determine whether the current running interpreter had the " +"macro defined." +msgstr "" + +#: howto/free-threading-extensions.rst:35 msgid "Module Initialization" msgstr "" -#: howto/free-threading-extensions.rst:29 +#: howto/free-threading-extensions.rst:37 msgid "" "Extension modules need to explicitly indicate that they support running with " "the GIL disabled; otherwise importing the extension will raise a warning and " "enable the GIL at runtime." msgstr "" -#: howto/free-threading-extensions.rst:33 +#: howto/free-threading-extensions.rst:41 msgid "" "There are two ways to indicate that an extension module supports running " "with the GIL disabled depending on whether the extension uses multi-phase or " "single-phase initialization." msgstr "" -#: howto/free-threading-extensions.rst:38 +#: howto/free-threading-extensions.rst:46 msgid "Multi-Phase Initialization" msgstr "" -#: howto/free-threading-extensions.rst:40 +#: howto/free-threading-extensions.rst:48 msgid "" "Extensions that use multi-phase initialization (i.e., :c:func:" "`PyModuleDef_Init`) should add a :c:data:`Py_mod_gil` slot in the module " @@ -78,7 +86,7 @@ msgid "" "should guard the slot with a :c:data:`PY_VERSION_HEX` check." msgstr "" -#: howto/free-threading-extensions.rst:47 +#: howto/free-threading-extensions.rst:55 msgid "" "static struct PyModuleDef_Slot module_slots[] = {\n" " ...\n" @@ -95,11 +103,11 @@ msgid "" "};" msgstr "" -#: howto/free-threading-extensions.rst:63 +#: howto/free-threading-extensions.rst:71 msgid "Single-Phase Initialization" msgstr "" -#: howto/free-threading-extensions.rst:65 +#: howto/free-threading-extensions.rst:73 msgid "" "Extensions that use single-phase initialization (i.e., :c:func:" "`PyModule_Create`) should call :c:func:`PyUnstable_Module_SetGIL` to " @@ -108,7 +116,7 @@ msgid "" "``#ifdef Py_GIL_DISABLED`` to avoid compilation errors in the regular build." msgstr "" -#: howto/free-threading-extensions.rst:73 +#: howto/free-threading-extensions.rst:81 msgid "" "static struct PyModuleDef moduledef = {\n" " PyModuleDef_HEAD_INIT,\n" @@ -129,21 +137,21 @@ msgid "" "}" msgstr "" -#: howto/free-threading-extensions.rst:93 +#: howto/free-threading-extensions.rst:101 msgid "General API Guidelines" msgstr "" -#: howto/free-threading-extensions.rst:95 +#: howto/free-threading-extensions.rst:103 msgid "Most of the C API is thread-safe, but there are some exceptions." msgstr "" -#: howto/free-threading-extensions.rst:97 +#: howto/free-threading-extensions.rst:105 msgid "" "**Struct Fields**: Accessing fields in Python C API objects or structs " "directly is not thread-safe if the field may be concurrently modified." msgstr "" -#: howto/free-threading-extensions.rst:99 +#: howto/free-threading-extensions.rst:107 msgid "" "**Macros**: Accessor macros like :c:macro:`PyList_GET_ITEM`, :c:macro:" "`PyList_SET_ITEM`, and macros like :c:macro:`PySequence_Fast_GET_SIZE` that " @@ -152,7 +160,7 @@ msgid "" "object may be modified concurrently." msgstr "" -#: howto/free-threading-extensions.rst:105 +#: howto/free-threading-extensions.rst:113 msgid "" "**Borrowed References**: C API functions that return :term:`borrowed " "references ` may not be thread-safe if the containing " @@ -160,11 +168,11 @@ msgid "" "references ` for more information." msgstr "" -#: howto/free-threading-extensions.rst:112 +#: howto/free-threading-extensions.rst:120 msgid "Container Thread Safety" msgstr "" -#: howto/free-threading-extensions.rst:114 +#: howto/free-threading-extensions.rst:122 msgid "" "Containers like :c:struct:`PyListObject`, :c:struct:`PyDictObject`, and :c:" "struct:`PySetObject` perform internal locking in the free-threaded build. " @@ -172,11 +180,11 @@ msgid "" "an item." msgstr "" -#: howto/free-threading-extensions.rst:122 +#: howto/free-threading-extensions.rst:130 msgid "``PyDict_Next``" msgstr "" -#: howto/free-threading-extensions.rst:124 +#: howto/free-threading-extensions.rst:132 msgid "" "A notable exception is :c:func:`PyDict_Next`, which does not lock the " "dictionary. You should use :c:macro:`Py_BEGIN_CRITICAL_SECTION` to protect " @@ -184,7 +192,7 @@ msgid "" "modified::" msgstr "" -#: howto/free-threading-extensions.rst:129 +#: howto/free-threading-extensions.rst:137 msgid "" "Py_BEGIN_CRITICAL_SECTION(dict);\n" "PyObject *key, *value;\n" @@ -195,11 +203,11 @@ msgid "" "Py_END_CRITICAL_SECTION();" msgstr "" -#: howto/free-threading-extensions.rst:139 +#: howto/free-threading-extensions.rst:147 msgid "Borrowed References" msgstr "" -#: howto/free-threading-extensions.rst:143 +#: howto/free-threading-extensions.rst:151 msgid "" "Some C API functions return :term:`borrowed references `. These APIs are not thread-safe if the containing object is " @@ -207,95 +215,95 @@ msgid "" "`PyList_GetItem` if the list may be modified concurrently." msgstr "" -#: howto/free-threading-extensions.rst:148 +#: howto/free-threading-extensions.rst:156 msgid "" "The following table lists some borrowed reference APIs and their " "replacements that return :term:`strong references `." msgstr "" -#: howto/free-threading-extensions.rst:152 +#: howto/free-threading-extensions.rst:160 msgid "Borrowed reference API" msgstr "" -#: howto/free-threading-extensions.rst:152 +#: howto/free-threading-extensions.rst:160 msgid "Strong reference API" msgstr "" -#: howto/free-threading-extensions.rst:154 +#: howto/free-threading-extensions.rst:162 msgid ":c:func:`PyList_GetItem`" msgstr "" -#: howto/free-threading-extensions.rst:154 +#: howto/free-threading-extensions.rst:162 msgid ":c:func:`PyList_GetItemRef`" msgstr "" -#: howto/free-threading-extensions.rst:156 +#: howto/free-threading-extensions.rst:164 msgid ":c:func:`PyDict_GetItem`" msgstr "" -#: howto/free-threading-extensions.rst:156 -#: howto/free-threading-extensions.rst:158 +#: howto/free-threading-extensions.rst:164 +#: howto/free-threading-extensions.rst:166 msgid ":c:func:`PyDict_GetItemRef`" msgstr "" -#: howto/free-threading-extensions.rst:158 +#: howto/free-threading-extensions.rst:166 msgid ":c:func:`PyDict_GetItemWithError`" msgstr "" -#: howto/free-threading-extensions.rst:160 +#: howto/free-threading-extensions.rst:168 msgid ":c:func:`PyDict_GetItemString`" msgstr "" -#: howto/free-threading-extensions.rst:160 +#: howto/free-threading-extensions.rst:168 msgid ":c:func:`PyDict_GetItemStringRef`" msgstr "" -#: howto/free-threading-extensions.rst:162 +#: howto/free-threading-extensions.rst:170 msgid ":c:func:`PyDict_SetDefault`" msgstr "" -#: howto/free-threading-extensions.rst:162 +#: howto/free-threading-extensions.rst:170 msgid ":c:func:`PyDict_SetDefaultRef`" msgstr "" -#: howto/free-threading-extensions.rst:164 +#: howto/free-threading-extensions.rst:172 msgid ":c:func:`PyDict_Next`" msgstr "" -#: howto/free-threading-extensions.rst:164 +#: howto/free-threading-extensions.rst:172 msgid "none (see :ref:`PyDict_Next`)" msgstr "" -#: howto/free-threading-extensions.rst:166 +#: howto/free-threading-extensions.rst:174 msgid ":c:func:`PyWeakref_GetObject`" msgstr "" -#: howto/free-threading-extensions.rst:166 -#: howto/free-threading-extensions.rst:168 +#: howto/free-threading-extensions.rst:174 +#: howto/free-threading-extensions.rst:176 msgid ":c:func:`PyWeakref_GetRef`" msgstr "" -#: howto/free-threading-extensions.rst:168 +#: howto/free-threading-extensions.rst:176 msgid ":c:func:`PyWeakref_GET_OBJECT`" msgstr "" -#: howto/free-threading-extensions.rst:170 +#: howto/free-threading-extensions.rst:178 msgid ":c:func:`PyImport_AddModule`" msgstr "" -#: howto/free-threading-extensions.rst:170 +#: howto/free-threading-extensions.rst:178 msgid ":c:func:`PyImport_AddModuleRef`" msgstr "" -#: howto/free-threading-extensions.rst:172 +#: howto/free-threading-extensions.rst:180 msgid ":c:func:`PyCell_GET`" msgstr "" -#: howto/free-threading-extensions.rst:172 +#: howto/free-threading-extensions.rst:180 msgid ":c:func:`PyCell_Get`" msgstr "" -#: howto/free-threading-extensions.rst:175 +#: howto/free-threading-extensions.rst:183 msgid "" "Not all APIs that return borrowed references are problematic. For example, :" "c:func:`PyTuple_GetItem` is safe because tuples are immutable. Similarly, " @@ -306,18 +314,18 @@ msgid "" "context is safe." msgstr "" -#: howto/free-threading-extensions.rst:183 +#: howto/free-threading-extensions.rst:191 msgid "" "Some of these functions were added in Python 3.13. You can use the " "`pythoncapi-compat `_ package " "to provide implementations of these functions for older Python versions." msgstr "" -#: howto/free-threading-extensions.rst:191 +#: howto/free-threading-extensions.rst:199 msgid "Memory Allocation APIs" msgstr "" -#: howto/free-threading-extensions.rst:193 +#: howto/free-threading-extensions.rst:201 msgid "" "Python's memory management C API provides functions in three different :ref:" "`allocation domains `: \"raw\", \"mem\", and \"object\". " @@ -327,36 +335,36 @@ msgid "" "where this was only a best practice and not a hard requirement." msgstr "" -#: howto/free-threading-extensions.rst:202 +#: howto/free-threading-extensions.rst:210 msgid "" "Search for uses of :c:func:`PyObject_Malloc` in your extension and check " "that the allocated memory is used for Python objects. Use :c:func:" "`PyMem_Malloc` to allocate buffers instead of :c:func:`PyObject_Malloc`." msgstr "" -#: howto/free-threading-extensions.rst:209 +#: howto/free-threading-extensions.rst:217 msgid "Thread State and GIL APIs" msgstr "" -#: howto/free-threading-extensions.rst:211 +#: howto/free-threading-extensions.rst:219 msgid "" "Python provides a set of functions and macros to manage thread state and the " "GIL, such as:" msgstr "" -#: howto/free-threading-extensions.rst:214 +#: howto/free-threading-extensions.rst:222 msgid ":c:func:`PyGILState_Ensure` and :c:func:`PyGILState_Release`" msgstr "" -#: howto/free-threading-extensions.rst:215 +#: howto/free-threading-extensions.rst:223 msgid ":c:func:`PyEval_SaveThread` and :c:func:`PyEval_RestoreThread`" msgstr "" -#: howto/free-threading-extensions.rst:216 +#: howto/free-threading-extensions.rst:224 msgid ":c:macro:`Py_BEGIN_ALLOW_THREADS` and :c:macro:`Py_END_ALLOW_THREADS`" msgstr "" -#: howto/free-threading-extensions.rst:218 +#: howto/free-threading-extensions.rst:226 msgid "" "These functions should still be used in the free-threaded build to manage " "thread state even when the :term:`GIL` is disabled. For example, if you " @@ -365,7 +373,7 @@ msgid "" "Python thread state." msgstr "" -#: howto/free-threading-extensions.rst:224 +#: howto/free-threading-extensions.rst:232 msgid "" "You should continue to call :c:func:`PyEval_SaveThread` or :c:macro:" "`Py_BEGIN_ALLOW_THREADS` around blocking operations, such as I/O or lock " @@ -373,25 +381,25 @@ msgid "" "collector `." msgstr "" -#: howto/free-threading-extensions.rst:231 +#: howto/free-threading-extensions.rst:239 msgid "Protecting Internal Extension State" msgstr "" -#: howto/free-threading-extensions.rst:233 +#: howto/free-threading-extensions.rst:241 msgid "" "Your extension may have internal state that was previously protected by the " "GIL. You may need to add locking to protect this state. The approach will " "depend on your extension, but some common patterns include:" msgstr "" -#: howto/free-threading-extensions.rst:237 +#: howto/free-threading-extensions.rst:245 msgid "" "**Caches**: global caches are a common source of shared state. Consider " "using a lock to protect the cache or disabling it in the free-threaded build " "if the cache is not critical for performance." msgstr "" -#: howto/free-threading-extensions.rst:240 +#: howto/free-threading-extensions.rst:248 msgid "" "**Global State**: global state may need to be protected by a lock or moved " "to thread local storage. C11 and C++11 provide the ``thread_local`` or " @@ -399,11 +407,11 @@ msgid "" "language/storage_duration>`_." msgstr "" -#: howto/free-threading-extensions.rst:247 +#: howto/free-threading-extensions.rst:255 msgid "Critical Sections" msgstr "" -#: howto/free-threading-extensions.rst:251 +#: howto/free-threading-extensions.rst:259 msgid "" "In the free-threaded build, CPython provides a mechanism called \"critical " "sections\" to protect data that would otherwise be protected by the GIL. " @@ -412,11 +420,11 @@ msgid "" "certain C API functions or managing shared state in the free-threaded build." msgstr "" -#: howto/free-threading-extensions.rst:258 +#: howto/free-threading-extensions.rst:266 msgid "What Are Critical Sections?" msgstr "" -#: howto/free-threading-extensions.rst:260 +#: howto/free-threading-extensions.rst:268 msgid "" "Conceptually, critical sections act as a deadlock avoidance layer built on " "top of simple mutexes. Each thread maintains a stack of active critical " @@ -426,27 +434,27 @@ msgid "" "the underlying mutex." msgstr "" -#: howto/free-threading-extensions.rst:268 +#: howto/free-threading-extensions.rst:276 msgid "Using Critical Sections" msgstr "" -#: howto/free-threading-extensions.rst:270 +#: howto/free-threading-extensions.rst:278 msgid "The primary APIs for using critical sections are:" msgstr "" -#: howto/free-threading-extensions.rst:272 +#: howto/free-threading-extensions.rst:280 msgid "" ":c:macro:`Py_BEGIN_CRITICAL_SECTION` and :c:macro:`Py_END_CRITICAL_SECTION` " "- For locking a single object" msgstr "" -#: howto/free-threading-extensions.rst:275 +#: howto/free-threading-extensions.rst:283 msgid "" ":c:macro:`Py_BEGIN_CRITICAL_SECTION2` and :c:macro:" "`Py_END_CRITICAL_SECTION2` - For locking two objects simultaneously" msgstr "" -#: howto/free-threading-extensions.rst:278 +#: howto/free-threading-extensions.rst:286 msgid "" "These macros must be used in matching pairs and must appear in the same C " "scope, since they establish a new local scope. These macros are no-ops in " @@ -454,7 +462,7 @@ msgid "" "support both build types." msgstr "" -#: howto/free-threading-extensions.rst:283 +#: howto/free-threading-extensions.rst:291 msgid "" "A common use of a critical section would be to lock an object while " "accessing an internal attribute of it. For example, if an extension type " @@ -462,7 +470,7 @@ msgid "" "or writing that field::" msgstr "" -#: howto/free-threading-extensions.rst:288 +#: howto/free-threading-extensions.rst:296 msgid "" "// read the count, returns new reference to internal count value\n" "PyObject *result;\n" @@ -477,11 +485,11 @@ msgid "" "Py_END_CRITICAL_SECTION();" msgstr "" -#: howto/free-threading-extensions.rst:302 +#: howto/free-threading-extensions.rst:310 msgid "How Critical Sections Work" msgstr "" -#: howto/free-threading-extensions.rst:304 +#: howto/free-threading-extensions.rst:312 msgid "" "Unlike traditional locks, critical sections do not guarantee exclusive " "access throughout their entire duration. If a thread would block while " @@ -490,51 +498,51 @@ msgid "" "then resumed when the blocking operation completes." msgstr "" -#: howto/free-threading-extensions.rst:310 +#: howto/free-threading-extensions.rst:318 msgid "" "This behavior is similar to what happens with the GIL when a thread makes a " "blocking call. The key differences are:" msgstr "" -#: howto/free-threading-extensions.rst:313 +#: howto/free-threading-extensions.rst:321 msgid "Critical sections operate on a per-object basis rather than globally" msgstr "" -#: howto/free-threading-extensions.rst:315 +#: howto/free-threading-extensions.rst:323 msgid "" "Critical sections follow a stack discipline within each thread (the " "\"begin\" and \"end\" macros enforce this since they must be paired and " "within the same scope)" msgstr "" -#: howto/free-threading-extensions.rst:318 +#: howto/free-threading-extensions.rst:326 msgid "" "Critical sections automatically release and reacquire locks around potential " "blocking operations" msgstr "" -#: howto/free-threading-extensions.rst:322 +#: howto/free-threading-extensions.rst:330 msgid "Deadlock Avoidance" msgstr "" -#: howto/free-threading-extensions.rst:324 +#: howto/free-threading-extensions.rst:332 msgid "Critical sections help avoid deadlocks in two ways:" msgstr "" -#: howto/free-threading-extensions.rst:326 +#: howto/free-threading-extensions.rst:334 msgid "" "If a thread tries to acquire a lock that's already held by another thread, " "it first suspends all of its active critical sections, temporarily releasing " "their locks" msgstr "" -#: howto/free-threading-extensions.rst:330 +#: howto/free-threading-extensions.rst:338 msgid "" "When the blocking operation completes, only the top-most critical section is " "reacquired first" msgstr "" -#: howto/free-threading-extensions.rst:333 +#: howto/free-threading-extensions.rst:341 msgid "" "This means you cannot rely on nested critical sections to lock multiple " "objects at once, as the inner critical section may suspend the outer ones. " @@ -542,7 +550,7 @@ msgid "" "simultaneously." msgstr "" -#: howto/free-threading-extensions.rst:337 +#: howto/free-threading-extensions.rst:345 msgid "" "Note that the locks described above are only :c:type:`!PyMutex` based locks. " "The critical section implementation does not know about or affect other " @@ -553,18 +561,18 @@ msgid "" "not be released and therefore does not get the same deadlock avoidance." msgstr "" -#: howto/free-threading-extensions.rst:346 +#: howto/free-threading-extensions.rst:354 msgid "Important Considerations" msgstr "" -#: howto/free-threading-extensions.rst:348 +#: howto/free-threading-extensions.rst:356 msgid "" "Critical sections may temporarily release their locks, allowing other " "threads to modify the protected data. Be careful about making assumptions " "about the state of the data after operations that might block." msgstr "" -#: howto/free-threading-extensions.rst:352 +#: howto/free-threading-extensions.rst:360 msgid "" "Because locks can be temporarily released (suspended), entering a critical " "section does not guarantee exclusive access to the protected resource " @@ -574,34 +582,34 @@ msgid "" "This is similar to how the GIL can be released during blocking calls." msgstr "" -#: howto/free-threading-extensions.rst:359 +#: howto/free-threading-extensions.rst:367 msgid "" "Only the lock(s) associated with the most recently entered (top-most) " "critical section are guaranteed to be held at any given time. Locks for " "outer, nested critical sections might have been suspended." msgstr "" -#: howto/free-threading-extensions.rst:363 +#: howto/free-threading-extensions.rst:371 msgid "" "You can lock at most two objects simultaneously with these APIs. If you need " "to lock more objects, you'll need to restructure your code." msgstr "" -#: howto/free-threading-extensions.rst:366 +#: howto/free-threading-extensions.rst:374 msgid "" "While critical sections will not deadlock if you attempt to lock the same " "object twice, they are less efficient than purpose-built reentrant locks for " "this use case." msgstr "" -#: howto/free-threading-extensions.rst:370 +#: howto/free-threading-extensions.rst:378 msgid "" "When using :c:macro:`Py_BEGIN_CRITICAL_SECTION2`, the order of the objects " "doesn't affect correctness (the implementation handles deadlock avoidance), " "but it's good practice to always lock objects in a consistent order." msgstr "" -#: howto/free-threading-extensions.rst:374 +#: howto/free-threading-extensions.rst:382 msgid "" "Remember that the critical section macros are primarily for protecting " "access to *Python objects* that might be involved in internal CPython " @@ -610,34 +618,34 @@ msgid "" "synchronization primitives might be more appropriate." msgstr "" -#: howto/free-threading-extensions.rst:382 +#: howto/free-threading-extensions.rst:390 msgid "Building Extensions for the Free-Threaded Build" msgstr "" -#: howto/free-threading-extensions.rst:384 +#: howto/free-threading-extensions.rst:392 msgid "" "C API extensions need to be built specifically for the free-threaded build. " "The wheels, shared libraries, and binaries are indicated by a ``t`` suffix." msgstr "" -#: howto/free-threading-extensions.rst:387 +#: howto/free-threading-extensions.rst:395 msgid "" "`pypa/manylinux `_ supports the free-" "threaded build, with the ``t`` suffix, such as ``python3.13t``." msgstr "" -#: howto/free-threading-extensions.rst:389 +#: howto/free-threading-extensions.rst:397 msgid "" "`pypa/cibuildwheel `_ supports the " -"free-threaded build if you set `CIBW_FREE_THREADED_SUPPORT `_." +"free-threaded build if you set `CIBW_ENABLE to cpython-freethreading " +"`_." msgstr "" -#: howto/free-threading-extensions.rst:394 +#: howto/free-threading-extensions.rst:402 msgid "Limited C API and Stable ABI" msgstr "" -#: howto/free-threading-extensions.rst:396 +#: howto/free-threading-extensions.rst:404 msgid "" "The free-threaded build does not currently support the :ref:`Limited C API " "` or the stable ABI. If you use `setuptools `_: A community-maintained porting guide for " diff --git a/howto/free-threading-python.po b/howto/free-threading-python.po index 592184ce..3cabd05c 100644 --- a/howto/free-threading-python.po +++ b/howto/free-threading-python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.13\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,76 +18,79 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" #: howto/free-threading-python.rst:5 -msgid "Python experimental support for free threading" +msgid "Python support for free threading" msgstr "" #: howto/free-threading-python.rst:7 msgid "" -"Starting with the 3.13 release, CPython has experimental support for a build " -"of Python called :term:`free threading` where the :term:`global interpreter " -"lock` (GIL) is disabled. Free-threaded execution allows for full " -"utilization of the available processing power by running threads in parallel " -"on available CPU cores. While not all software will benefit from this " -"automatically, programs designed with threading in mind will run faster on " -"multi-core hardware." +"Starting with the 3.13 release, CPython has support for a build of Python " +"called :term:`free threading` where the :term:`global interpreter lock` " +"(GIL) is disabled. Free-threaded execution allows for full utilization of " +"the available processing power by running threads in parallel on available " +"CPU cores. While not all software will benefit from this automatically, " +"programs designed with threading in mind will run faster on multi-core " +"hardware." msgstr "" #: howto/free-threading-python.rst:14 msgid "" -"**The free-threaded mode is experimental** and work is ongoing to improve " -"it: expect some bugs and a substantial single-threaded performance hit." +"The free-threaded mode is working and continues to be improved, but there is " +"some additional overhead in single-threaded workloads compared to the " +"regular build. Additionally, third-party packages, in particular ones with " +"an :term:`extension module`, may not be ready for use in a free-threaded " +"build, and will re-enable the :term:`GIL`." msgstr "" -#: howto/free-threading-python.rst:17 +#: howto/free-threading-python.rst:20 msgid "" "This document describes the implications of free threading for Python code. " "See :ref:`freethreading-extensions-howto` for information on how to write C " "extensions that support the free-threaded build." msgstr "" -#: howto/free-threading-python.rst:23 +#: howto/free-threading-python.rst:26 msgid "" ":pep:`703` – Making the Global Interpreter Lock Optional in CPython for an " "overall description of free-threaded Python." msgstr "" -#: howto/free-threading-python.rst:28 +#: howto/free-threading-python.rst:31 msgid "Installation" msgstr "" -#: howto/free-threading-python.rst:30 +#: howto/free-threading-python.rst:33 msgid "" "Starting with Python 3.13, the official macOS and Windows installers " "optionally support installing free-threaded Python binaries. The installers " "are available at https://www.python.org/downloads/." msgstr "" -#: howto/free-threading-python.rst:34 +#: howto/free-threading-python.rst:37 msgid "" "For information on other platforms, see the `Installing a Free-Threaded " -"Python `_, a " +"Python `_, a " "community-maintained installation guide for installing free-threaded Python." msgstr "" -#: howto/free-threading-python.rst:38 +#: howto/free-threading-python.rst:41 msgid "" "When building CPython from source, the :option:`--disable-gil` configure " "option should be used to build a free-threaded Python interpreter." msgstr "" -#: howto/free-threading-python.rst:43 +#: howto/free-threading-python.rst:46 msgid "Identifying free-threaded Python" msgstr "" -#: howto/free-threading-python.rst:45 +#: howto/free-threading-python.rst:48 msgid "" "To check if the current interpreter supports free-threading, :option:`python " -"-VV <-V>` and :data:`sys.version` contain \"experimental free-threading " -"build\". The new :func:`sys._is_gil_enabled` function can be used to check " -"whether the GIL is actually disabled in the running process." +"-VV <-V>` and :data:`sys.version` contain \"free-threading build\". The new :" +"func:`sys._is_gil_enabled` function can be used to check whether the GIL is " +"actually disabled in the running process." msgstr "" -#: howto/free-threading-python.rst:50 +#: howto/free-threading-python.rst:53 msgid "" "The ``sysconfig.get_config_var(\"Py_GIL_DISABLED\")`` configuration variable " "can be used to determine whether the build supports free threading. If the " @@ -95,43 +98,43 @@ msgid "" "the recommended mechanism for decisions related to the build configuration." msgstr "" -#: howto/free-threading-python.rst:57 +#: howto/free-threading-python.rst:60 msgid "The global interpreter lock in free-threaded Python" msgstr "" -#: howto/free-threading-python.rst:59 +#: howto/free-threading-python.rst:62 msgid "" "Free-threaded builds of CPython support optionally running with the GIL " "enabled at runtime using the environment variable :envvar:`PYTHON_GIL` or " "the command-line option :option:`-X gil`." msgstr "" -#: howto/free-threading-python.rst:63 +#: howto/free-threading-python.rst:66 msgid "" "The GIL may also automatically be enabled when importing a C-API extension " "module that is not explicitly marked as supporting free threading. A " "warning will be printed in this case." msgstr "" -#: howto/free-threading-python.rst:67 +#: howto/free-threading-python.rst:70 msgid "" "In addition to individual package documentation, the following websites " "track the status of popular packages support for free threading:" msgstr "" -#: howto/free-threading-python.rst:70 +#: howto/free-threading-python.rst:73 msgid "https://py-free-threading.github.io/tracking/" msgstr "" -#: howto/free-threading-python.rst:71 +#: howto/free-threading-python.rst:74 msgid "https://hugovk.github.io/free-threaded-wheels/" msgstr "" -#: howto/free-threading-python.rst:75 +#: howto/free-threading-python.rst:78 msgid "Thread safety" msgstr "" -#: howto/free-threading-python.rst:77 +#: howto/free-threading-python.rst:80 msgid "" "The free-threaded build of CPython aims to provide similar thread-safety " "behavior at the Python level to the default GIL-enabled build. Built-in " @@ -143,27 +146,27 @@ msgid "" "current or future behavior." msgstr "" -#: howto/free-threading-python.rst:88 +#: howto/free-threading-python.rst:91 msgid "" "It's recommended to use the :class:`threading.Lock` or other synchronization " "primitives instead of relying on the internal locks of built-in types, when " "possible." msgstr "" -#: howto/free-threading-python.rst:94 +#: howto/free-threading-python.rst:97 msgid "Known limitations" msgstr "" -#: howto/free-threading-python.rst:96 +#: howto/free-threading-python.rst:99 msgid "" "This section describes known limitations of the free-threaded CPython build." msgstr "" -#: howto/free-threading-python.rst:99 +#: howto/free-threading-python.rst:102 msgid "Immortalization" msgstr "" -#: howto/free-threading-python.rst:101 +#: howto/free-threading-python.rst:104 msgid "" "The free-threaded build of the 3.13 release makes some objects :term:" "`immortal`. Immortal objects are not deallocated and have reference counts " @@ -171,53 +174,53 @@ msgid "" "that would prevent efficient multi-threaded scaling." msgstr "" -#: howto/free-threading-python.rst:106 +#: howto/free-threading-python.rst:109 msgid "" "An object will be made immortal when a new thread is started for the first " "time after the main thread is running. The following objects are " "immortalized:" msgstr "" -#: howto/free-threading-python.rst:109 +#: howto/free-threading-python.rst:112 msgid "" ":ref:`function ` objects declared at the module level" msgstr "" -#: howto/free-threading-python.rst:110 +#: howto/free-threading-python.rst:113 msgid ":ref:`method ` descriptors" msgstr "" -#: howto/free-threading-python.rst:111 +#: howto/free-threading-python.rst:114 msgid ":ref:`code ` objects" msgstr "" -#: howto/free-threading-python.rst:112 +#: howto/free-threading-python.rst:115 msgid ":term:`module` objects and their dictionaries" msgstr "" -#: howto/free-threading-python.rst:113 +#: howto/free-threading-python.rst:116 msgid ":ref:`classes ` (type objects)" msgstr "" -#: howto/free-threading-python.rst:115 +#: howto/free-threading-python.rst:118 msgid "" "Because immortal objects are never deallocated, applications that create " "many objects of these types may see increased memory usage. This is " "expected to be addressed in the 3.14 release." msgstr "" -#: howto/free-threading-python.rst:119 +#: howto/free-threading-python.rst:122 msgid "" "Additionally, numeric and string literals in the code as well as strings " "returned by :func:`sys.intern` are also immortalized. This behavior is " "expected to remain in the 3.14 free-threaded build." msgstr "" -#: howto/free-threading-python.rst:125 +#: howto/free-threading-python.rst:128 msgid "Frame objects" msgstr "" -#: howto/free-threading-python.rst:127 +#: howto/free-threading-python.rst:130 msgid "" "It is not safe to access :ref:`frame ` objects from other " "threads and doing so may cause your program to crash . This means that :" @@ -227,22 +230,22 @@ msgid "" "passed to another thread." msgstr "" -#: howto/free-threading-python.rst:135 +#: howto/free-threading-python.rst:138 msgid "Iterators" msgstr "" -#: howto/free-threading-python.rst:137 +#: howto/free-threading-python.rst:140 msgid "" "Sharing the same iterator object between multiple threads is generally not " "safe and threads may see duplicate or missing elements when iterating or " "crash the interpreter." msgstr "" -#: howto/free-threading-python.rst:143 +#: howto/free-threading-python.rst:146 msgid "Single-threaded performance" msgstr "" -#: howto/free-threading-python.rst:145 +#: howto/free-threading-python.rst:148 msgid "" "The free-threaded build has additional overhead when executing Python code " "compared to the default GIL-enabled build. In 3.13, this overhead is about " @@ -256,21 +259,21 @@ msgid "" "GIL-enabled build." msgstr "" -#: howto/free-threading-python.rst:158 +#: howto/free-threading-python.rst:161 msgid "Behavioral changes" msgstr "" -#: howto/free-threading-python.rst:160 +#: howto/free-threading-python.rst:163 msgid "" "This section describes CPython behavioural changes with the free-threaded " "build." msgstr "" -#: howto/free-threading-python.rst:165 +#: howto/free-threading-python.rst:168 msgid "Context variables" msgstr "" -#: howto/free-threading-python.rst:167 +#: howto/free-threading-python.rst:170 msgid "" "In the free-threaded build, the flag :data:`~sys.flags." "thread_inherit_context` is set to true by default which causes threads " @@ -280,11 +283,11 @@ msgid "" "start with an empty :class:`~contextvars.Context()`." msgstr "" -#: howto/free-threading-python.rst:177 +#: howto/free-threading-python.rst:180 msgid "Warning filters" msgstr "" -#: howto/free-threading-python.rst:179 +#: howto/free-threading-python.rst:182 msgid "" "In the free-threaded build, the flag :data:`~sys.flags." "context_aware_warnings` is set to true by default. In the default GIL-" diff --git a/howto/functional.po b/howto/functional.po index ad7eda35..3dfee915 100644 --- a/howto/functional.po +++ b/howto/functional.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/howto/gdb_helpers.po b/howto/gdb_helpers.po index 37dd8545..26f30b9a 100644 --- a/howto/gdb_helpers.po +++ b/howto/gdb_helpers.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/howto/index.po b/howto/index.po index 88ae6a7c..73f17ed1 100644 --- a/howto/index.po +++ b/howto/index.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-10 22:23+0300\n" "Last-Translator: ALEXANDROS TZIORAS alextzioras23@gmail.com\n" "Language-Team: Language-Team: PyGreece \n" diff --git a/howto/instrumentation.po b/howto/instrumentation.po index ccca84ed..794b45b2 100644 --- a/howto/instrumentation.po +++ b/howto/instrumentation.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/howto/ipaddress.po b/howto/ipaddress.po index 448d50a6..4c66a3da 100644 --- a/howto/ipaddress.po +++ b/howto/ipaddress.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/howto/isolating-extensions.po b/howto/isolating-extensions.po index 1020b409..9dc768bd 100644 --- a/howto/isolating-extensions.po +++ b/howto/isolating-extensions.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -254,8 +254,8 @@ msgstr "" msgid "" "If it is necessary to use process-global state, the simplest way to avoid " "issues with multiple interpreters is to explicitly prevent a module from " -"being loaded more than once per process—see `Opt-Out: Limiting to One Module " -"Object per Process`_." +"being loaded more than once per process—see :ref:`isolating-extensions-" +"optout`." msgstr "" #: howto/isolating-extensions.rst:175 @@ -311,11 +311,11 @@ msgid "" "c>`__; example module initialization shown at the bottom of the file." msgstr "" -#: howto/isolating-extensions.rst:211 +#: howto/isolating-extensions.rst:213 msgid "Opt-Out: Limiting to One Module Object per Process" msgstr "" -#: howto/isolating-extensions.rst:213 +#: howto/isolating-extensions.rst:215 msgid "" "A non-negative ``PyModuleDef.m_size`` signals that a module supports " "multiple interpreters correctly. If this is not yet the case for your " @@ -323,35 +323,51 @@ msgid "" "For example::" msgstr "" -#: howto/isolating-extensions.rst:218 +#: howto/isolating-extensions.rst:220 msgid "" +"// A process-wide flag\n" "static int loaded = 0;\n" "\n" +"// Mutex to provide thread safety (only needed for free-threaded Python)\n" +"static PyMutex modinit_mutex = {0};\n" +"\n" "static int\n" "exec_module(PyObject* module)\n" "{\n" +" PyMutex_Lock(&modinit_mutex);\n" " if (loaded) {\n" +" PyMutex_Unlock(&modinit_mutex);\n" " PyErr_SetString(PyExc_ImportError,\n" " \"cannot load module more than once per process\");\n" " return -1;\n" " }\n" " loaded = 1;\n" +" PyMutex_Unlock(&modinit_mutex);\n" " // ... rest of initialization\n" "}" msgstr "" -#: howto/isolating-extensions.rst:234 +#: howto/isolating-extensions.rst:242 +msgid "" +"If your module's :c:member:`PyModuleDef.m_clear` function is able to prepare " +"for future re-initialization, it should clear the ``loaded`` flag. In this " +"case, your module won't support multiple instances existing *concurrently*, " +"but it will, for example, support being loaded after Python runtime shutdown " +"(:c:func:`Py_FinalizeEx`) and re-initialization (:c:func:`Py_Initialize`)." +msgstr "" + +#: howto/isolating-extensions.rst:251 msgid "Module State Access from Functions" msgstr "" -#: howto/isolating-extensions.rst:236 +#: howto/isolating-extensions.rst:253 msgid "" "Accessing the state from module-level functions is straightforward. " "Functions get the module object as their first argument; for extracting the " "state, you can use ``PyModule_GetState``::" msgstr "" -#: howto/isolating-extensions.rst:240 +#: howto/isolating-extensions.rst:257 msgid "" "static PyObject *\n" "func(PyObject *module, PyObject *args)\n" @@ -364,25 +380,25 @@ msgid "" "}" msgstr "" -#: howto/isolating-extensions.rst:251 +#: howto/isolating-extensions.rst:268 msgid "" "``PyModule_GetState`` may return ``NULL`` without setting an exception if " "there is no module state, i.e. ``PyModuleDef.m_size`` was zero. In your own " "module, you're in control of ``m_size``, so this is easy to prevent." msgstr "" -#: howto/isolating-extensions.rst:258 +#: howto/isolating-extensions.rst:275 msgid "Heap Types" msgstr "" -#: howto/isolating-extensions.rst:260 +#: howto/isolating-extensions.rst:277 msgid "" "Traditionally, types defined in C code are *static*; that is, ``static " "PyTypeObject`` structures defined directly in code and initialized using " "``PyType_Ready()``." msgstr "" -#: howto/isolating-extensions.rst:264 +#: howto/isolating-extensions.rst:281 msgid "" "Such types are necessarily shared across the process. Sharing them between " "module objects requires paying attention to any state they own or access. To " @@ -390,7 +406,7 @@ msgid "" "for example, you can't set ``str.myattribute = 123``." msgstr "" -#: howto/isolating-extensions.rst:270 +#: howto/isolating-extensions.rst:287 msgid "" "Sharing truly immutable objects between interpreters is fine, as long as " "they don't provide access to mutable objects. However, in CPython, every " @@ -400,7 +416,7 @@ msgid "" "process-wide GIL." msgstr "" -#: howto/isolating-extensions.rst:277 +#: howto/isolating-extensions.rst:294 msgid "" "Because they are immutable and process-global, static types cannot access " "\"their\" module state. If any method of such a type requires access to " @@ -409,15 +425,15 @@ msgid "" "Python's ``class`` statement." msgstr "" -#: howto/isolating-extensions.rst:284 +#: howto/isolating-extensions.rst:301 msgid "For new modules, using heap types by default is a good rule of thumb." msgstr "" -#: howto/isolating-extensions.rst:288 +#: howto/isolating-extensions.rst:305 msgid "Changing Static Types to Heap Types" msgstr "" -#: howto/isolating-extensions.rst:290 +#: howto/isolating-extensions.rst:307 msgid "" "Static types can be converted to heap types, but note that the heap type API " "was not designed for \"lossless\" conversion from static types—that is, " @@ -427,101 +443,101 @@ msgid "" "slots). Always test the details that are important to you." msgstr "" -#: howto/isolating-extensions.rst:299 +#: howto/isolating-extensions.rst:316 msgid "" "Watch out for the following two points in particular (but note that this is " "not a comprehensive list):" msgstr "" -#: howto/isolating-extensions.rst:302 +#: howto/isolating-extensions.rst:319 msgid "" "Unlike static types, heap type objects are mutable by default. Use the :c:" "macro:`Py_TPFLAGS_IMMUTABLETYPE` flag to prevent mutability." msgstr "" -#: howto/isolating-extensions.rst:304 +#: howto/isolating-extensions.rst:321 msgid "" "Heap types inherit :c:member:`~PyTypeObject.tp_new` by default, so it may " "become possible to instantiate them from Python code. You can prevent this " "with the :c:macro:`Py_TPFLAGS_DISALLOW_INSTANTIATION` flag." msgstr "" -#: howto/isolating-extensions.rst:310 +#: howto/isolating-extensions.rst:327 msgid "Defining Heap Types" msgstr "" -#: howto/isolating-extensions.rst:312 +#: howto/isolating-extensions.rst:329 msgid "" "Heap types can be created by filling a :c:struct:`PyType_Spec` structure, a " "description or \"blueprint\" of a class, and calling :c:func:" "`PyType_FromModuleAndSpec` to construct a new class object." msgstr "" -#: howto/isolating-extensions.rst:317 +#: howto/isolating-extensions.rst:334 msgid "" "Other functions, like :c:func:`PyType_FromSpec`, can also create heap types, " "but :c:func:`PyType_FromModuleAndSpec` associates the module with the class, " "allowing access to the module state from methods." msgstr "" -#: howto/isolating-extensions.rst:321 +#: howto/isolating-extensions.rst:338 msgid "" "The class should generally be stored in *both* the module state (for safe " "access from C) and the module's ``__dict__`` (for access from Python code)." msgstr "" -#: howto/isolating-extensions.rst:327 +#: howto/isolating-extensions.rst:344 msgid "Garbage-Collection Protocol" msgstr "" -#: howto/isolating-extensions.rst:329 +#: howto/isolating-extensions.rst:346 msgid "" "Instances of heap types hold a reference to their type. This ensures that " "the type isn't destroyed before all its instances are, but may result in " "reference cycles that need to be broken by the garbage collector." msgstr "" -#: howto/isolating-extensions.rst:334 +#: howto/isolating-extensions.rst:351 msgid "" "To avoid memory leaks, instances of heap types must implement the garbage " "collection protocol. That is, heap types should:" msgstr "" -#: howto/isolating-extensions.rst:338 +#: howto/isolating-extensions.rst:355 msgid "Have the :c:macro:`Py_TPFLAGS_HAVE_GC` flag." msgstr "" -#: howto/isolating-extensions.rst:339 +#: howto/isolating-extensions.rst:356 msgid "" "Define a traverse function using ``Py_tp_traverse``, which visits the type " "(e.g. using ``Py_VISIT(Py_TYPE(self))``)." msgstr "" -#: howto/isolating-extensions.rst:342 +#: howto/isolating-extensions.rst:359 msgid "" "Please refer to the documentation of :c:macro:`Py_TPFLAGS_HAVE_GC` and :c:" "member:`~PyTypeObject.tp_traverse` for additional considerations." msgstr "" -#: howto/isolating-extensions.rst:346 +#: howto/isolating-extensions.rst:363 msgid "" "The API for defining heap types grew organically, leaving it somewhat " "awkward to use in its current state. The following sections will guide you " "through common issues." msgstr "" -#: howto/isolating-extensions.rst:352 +#: howto/isolating-extensions.rst:369 msgid "``tp_traverse`` in Python 3.8 and lower" msgstr "" -#: howto/isolating-extensions.rst:354 +#: howto/isolating-extensions.rst:371 msgid "" "The requirement to visit the type from ``tp_traverse`` was added in Python " "3.9. If you support Python 3.8 and lower, the traverse function must *not* " "visit the type, so it must be more complicated::" msgstr "" -#: howto/isolating-extensions.rst:358 +#: howto/isolating-extensions.rst:375 msgid "" "static int my_traverse(PyObject *self, visitproc visit, void *arg)\n" "{\n" @@ -532,27 +548,27 @@ msgid "" "}" msgstr "" -#: howto/isolating-extensions.rst:366 +#: howto/isolating-extensions.rst:383 msgid "" "Unfortunately, :c:data:`Py_Version` was only added in Python 3.11. As a " "replacement, use:" msgstr "" -#: howto/isolating-extensions.rst:369 +#: howto/isolating-extensions.rst:386 msgid ":c:macro:`PY_VERSION_HEX`, if not using the stable ABI, or" msgstr "" -#: howto/isolating-extensions.rst:370 +#: howto/isolating-extensions.rst:387 msgid "" ":py:data:`sys.version_info` (via :c:func:`PySys_GetObject` and :c:func:" "`PyArg_ParseTuple`)." msgstr "" -#: howto/isolating-extensions.rst:375 +#: howto/isolating-extensions.rst:392 msgid "Delegating ``tp_traverse``" msgstr "" -#: howto/isolating-extensions.rst:377 +#: howto/isolating-extensions.rst:394 msgid "" "If your traverse function delegates to the :c:member:`~PyTypeObject." "tp_traverse` of its base class (or another type), ensure that " @@ -560,19 +576,19 @@ msgid "" "expected to visit the type in ``tp_traverse``." msgstr "" -#: howto/isolating-extensions.rst:382 +#: howto/isolating-extensions.rst:399 msgid "For example, if your traverse function includes::" msgstr "" -#: howto/isolating-extensions.rst:384 +#: howto/isolating-extensions.rst:401 msgid "base->tp_traverse(self, visit, arg)" msgstr "" -#: howto/isolating-extensions.rst:386 +#: howto/isolating-extensions.rst:403 msgid "...and ``base`` may be a static type, then it should also include::" msgstr "" -#: howto/isolating-extensions.rst:388 +#: howto/isolating-extensions.rst:405 msgid "" "if (base->tp_flags & Py_TPFLAGS_HEAPTYPE) {\n" " // a heap type's tp_traverse already visited Py_TYPE(self)\n" @@ -583,38 +599,38 @@ msgid "" "}" msgstr "" -#: howto/isolating-extensions.rst:396 +#: howto/isolating-extensions.rst:413 msgid "" "It is not necessary to handle the type's reference count in :c:member:" "`~PyTypeObject.tp_new` and :c:member:`~PyTypeObject.tp_clear`." msgstr "" -#: howto/isolating-extensions.rst:401 +#: howto/isolating-extensions.rst:418 msgid "Defining ``tp_dealloc``" msgstr "" -#: howto/isolating-extensions.rst:403 +#: howto/isolating-extensions.rst:420 msgid "" "If your type has a custom :c:member:`~PyTypeObject.tp_dealloc` function, it " "needs to:" msgstr "" -#: howto/isolating-extensions.rst:406 +#: howto/isolating-extensions.rst:423 msgid "" "call :c:func:`PyObject_GC_UnTrack` before any fields are invalidated, and" msgstr "" -#: howto/isolating-extensions.rst:407 +#: howto/isolating-extensions.rst:424 msgid "decrement the reference count of the type." msgstr "" -#: howto/isolating-extensions.rst:409 +#: howto/isolating-extensions.rst:426 msgid "" "To keep the type valid while ``tp_free`` is called, the type's refcount " "needs to be decremented *after* the instance is deallocated. For example::" msgstr "" -#: howto/isolating-extensions.rst:412 +#: howto/isolating-extensions.rst:429 msgid "" "static void my_dealloc(PyObject *self)\n" "{\n" @@ -626,81 +642,81 @@ msgid "" "}" msgstr "" -#: howto/isolating-extensions.rst:421 +#: howto/isolating-extensions.rst:438 msgid "" "The default ``tp_dealloc`` function does this, so if your type does *not* " "override ``tp_dealloc`` you don't need to add it." msgstr "" -#: howto/isolating-extensions.rst:427 +#: howto/isolating-extensions.rst:444 msgid "Not overriding ``tp_free``" msgstr "" -#: howto/isolating-extensions.rst:429 +#: howto/isolating-extensions.rst:446 msgid "" "The :c:member:`~PyTypeObject.tp_free` slot of a heap type must be set to :c:" "func:`PyObject_GC_Del`. This is the default; do not override it." msgstr "" -#: howto/isolating-extensions.rst:435 +#: howto/isolating-extensions.rst:452 msgid "Avoiding ``PyObject_New``" msgstr "" -#: howto/isolating-extensions.rst:437 +#: howto/isolating-extensions.rst:454 msgid "GC-tracked objects need to be allocated using GC-aware functions." msgstr "" -#: howto/isolating-extensions.rst:439 +#: howto/isolating-extensions.rst:456 msgid "If you use use :c:func:`PyObject_New` or :c:func:`PyObject_NewVar`:" msgstr "" -#: howto/isolating-extensions.rst:441 +#: howto/isolating-extensions.rst:458 msgid "" "Get and call type's :c:member:`~PyTypeObject.tp_alloc` slot, if possible. " "That is, replace ``TYPE *o = PyObject_New(TYPE, typeobj)`` with::" msgstr "" -#: howto/isolating-extensions.rst:444 +#: howto/isolating-extensions.rst:461 msgid "TYPE *o = typeobj->tp_alloc(typeobj, 0);" msgstr "" -#: howto/isolating-extensions.rst:446 +#: howto/isolating-extensions.rst:463 msgid "" "Replace ``o = PyObject_NewVar(TYPE, typeobj, size)`` with the same, but use " "size instead of the 0." msgstr "" -#: howto/isolating-extensions.rst:449 +#: howto/isolating-extensions.rst:466 msgid "" "If the above is not possible (e.g. inside a custom ``tp_alloc``), call :c:" "func:`PyObject_GC_New` or :c:func:`PyObject_GC_NewVar`::" msgstr "" -#: howto/isolating-extensions.rst:452 +#: howto/isolating-extensions.rst:469 msgid "" "TYPE *o = PyObject_GC_New(TYPE, typeobj);\n" "\n" "TYPE *o = PyObject_GC_NewVar(TYPE, typeobj, size);" msgstr "" -#: howto/isolating-extensions.rst:458 +#: howto/isolating-extensions.rst:475 msgid "Module State Access from Classes" msgstr "" -#: howto/isolating-extensions.rst:460 +#: howto/isolating-extensions.rst:477 msgid "" "If you have a type object defined with :c:func:`PyType_FromModuleAndSpec`, " "you can call :c:func:`PyType_GetModule` to get the associated module, and " "then :c:func:`PyModule_GetState` to get the module's state." msgstr "" -#: howto/isolating-extensions.rst:464 +#: howto/isolating-extensions.rst:481 msgid "" "To save a some tedious error-handling boilerplate code, you can combine " "these two steps with :c:func:`PyType_GetModuleState`, resulting in::" msgstr "" -#: howto/isolating-extensions.rst:467 +#: howto/isolating-extensions.rst:484 msgid "" "my_struct *state = (my_struct*)PyType_GetModuleState(type);\n" "if (state == NULL) {\n" @@ -708,11 +724,11 @@ msgid "" "}" msgstr "" -#: howto/isolating-extensions.rst:474 +#: howto/isolating-extensions.rst:491 msgid "Module State Access from Regular Methods" msgstr "" -#: howto/isolating-extensions.rst:476 +#: howto/isolating-extensions.rst:493 msgid "" "Accessing the module-level state from methods of a class is somewhat more " "complicated, but is possible thanks to API introduced in Python 3.9. To get " @@ -720,27 +736,27 @@ msgid "" "module state from it." msgstr "" -#: howto/isolating-extensions.rst:481 +#: howto/isolating-extensions.rst:498 msgid "" "The largest roadblock is getting *the class a method was defined in*, or " "that method's \"defining class\" for short. The defining class can have a " "reference to the module it is part of." msgstr "" -#: howto/isolating-extensions.rst:485 +#: howto/isolating-extensions.rst:502 msgid "" "Do not confuse the defining class with ``Py_TYPE(self)``. If the method is " "called on a *subclass* of your type, ``Py_TYPE(self)`` will refer to that " "subclass, which may be defined in different module than yours." msgstr "" -#: howto/isolating-extensions.rst:490 +#: howto/isolating-extensions.rst:507 msgid "" "The following Python code can illustrate the concept. ``Base." "get_defining_class`` returns ``Base`` even if ``type(self) == Sub``:" msgstr "" -#: howto/isolating-extensions.rst:494 +#: howto/isolating-extensions.rst:511 msgid "" "class Base:\n" " def get_type_of_self(self):\n" @@ -753,7 +769,7 @@ msgid "" " pass" msgstr "" -#: howto/isolating-extensions.rst:506 +#: howto/isolating-extensions.rst:523 msgid "" "For a method to get its \"defining class\", it must use the :ref:" "`METH_METHOD | METH_FASTCALL | METH_KEYWORDS `__." msgstr "" -#: howto/isolating-extensions.rst:617 +#: howto/isolating-extensions.rst:634 msgid "Per-Class Scope" msgstr "" -#: howto/isolating-extensions.rst:619 +#: howto/isolating-extensions.rst:636 msgid "" "It is currently (as of Python 3.11) not possible to attach state to " "individual *types* without relying on CPython implementation details (which " @@ -904,11 +920,11 @@ msgid "" "per-class scope)." msgstr "" -#: howto/isolating-extensions.rst:626 +#: howto/isolating-extensions.rst:643 msgid "Lossless Conversion to Heap Types" msgstr "" -#: howto/isolating-extensions.rst:628 +#: howto/isolating-extensions.rst:645 msgid "" "The heap type API was not designed for \"lossless\" conversion from static " "types; that is, creating a type that works exactly like a given static type." diff --git a/howto/logging-cookbook.po b/howto/logging-cookbook.po index 578730fe..14302f29 100644 --- a/howto/logging-cookbook.po +++ b/howto/logging-cookbook.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/howto/logging.po b/howto/logging.po index d11b8218..460464c2 100644 --- a/howto/logging.po +++ b/howto/logging.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/howto/mro.po b/howto/mro.po index eda93225..209affb8 100644 --- a/howto/mro.po +++ b/howto/mro.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/howto/perf_profiling.po b/howto/perf_profiling.po index fc2a37b6..d12a979b 100644 --- a/howto/perf_profiling.po +++ b/howto/perf_profiling.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/howto/pyporting.po b/howto/pyporting.po index a76f97da..797234ed 100644 --- a/howto/pyporting.po +++ b/howto/pyporting.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2024-12-06 13:40+0200\n" "Last-Translator: Marios Giannopoulos \n" "Language-Team: PyGreece \n" diff --git a/howto/regex.po b/howto/regex.po index 33067d75..85a98a0e 100644 --- a/howto/regex.po +++ b/howto/regex.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/howto/remote_debugging.po b/howto/remote_debugging.po index 0aa0fffa..8ff49507 100644 --- a/howto/remote_debugging.po +++ b/howto/remote_debugging.po @@ -8,10 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.14\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/howto/sockets.po b/howto/sockets.po index 2de0d562..7a66411c 100644 --- a/howto/sockets.po +++ b/howto/sockets.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/howto/sorting.po b/howto/sorting.po index df699518..d331a623 100644 --- a/howto/sorting.po +++ b/howto/sorting.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/howto/timerfd.po b/howto/timerfd.po index ff5c4a5d..a737a982 100644 --- a/howto/timerfd.po +++ b/howto/timerfd.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.13\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/howto/unicode.po b/howto/unicode.po index 14ca21ac..6ccddee3 100644 --- a/howto/unicode.po +++ b/howto/unicode.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/howto/urllib2.po b/howto/urllib2.po index 9bd68219..66258a01 100644 --- a/howto/urllib2.po +++ b/howto/urllib2.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -380,82 +380,37 @@ msgstr "" #: howto/urllib2.rst:247 msgid "" ":attr:`http.server.BaseHTTPRequestHandler.responses` is a useful dictionary " -"of response codes in that shows all the response codes used by :rfc:`2616`. " -"The dictionary is reproduced here for convenience ::" +"of response codes that shows all the response codes used by :rfc:`2616`. An " +"excerpt from the dictionary is shown below ::" msgstr "" #: howto/urllib2.rst:251 msgid "" -"# Table mapping response codes to messages; entries have the\n" -"# form {code: (shortmessage, longmessage)}.\n" "responses = {\n" -" 100: ('Continue', 'Request received, please continue'),\n" -" 101: ('Switching Protocols',\n" -" 'Switching to new protocol; obey Upgrade header'),\n" -"\n" -" 200: ('OK', 'Request fulfilled, document follows'),\n" -" 201: ('Created', 'Document created, URL follows'),\n" -" 202: ('Accepted',\n" -" 'Request accepted, processing continues off-line'),\n" -" 203: ('Non-Authoritative Information', 'Request fulfilled from cache'),\n" -" 204: ('No Content', 'Request fulfilled, nothing follows'),\n" -" 205: ('Reset Content', 'Clear input form for further input.'),\n" -" 206: ('Partial Content', 'Partial content follows.'),\n" -"\n" -" 300: ('Multiple Choices',\n" -" 'Object has several resources -- see URI list'),\n" -" 301: ('Moved Permanently', 'Object moved permanently -- see URI list'),\n" -" 302: ('Found', 'Object moved temporarily -- see URI list'),\n" -" 303: ('See Other', 'Object moved -- see Method and URL list'),\n" -" 304: ('Not Modified',\n" -" 'Document has not changed since given time'),\n" -" 305: ('Use Proxy',\n" -" 'You must use proxy specified in Location to access this '\n" -" 'resource.'),\n" -" 307: ('Temporary Redirect',\n" -" 'Object moved temporarily -- see URI list'),\n" -"\n" -" 400: ('Bad Request',\n" -" 'Bad request syntax or unsupported method'),\n" -" 401: ('Unauthorized',\n" -" 'No permission -- see authorization schemes'),\n" -" 402: ('Payment Required',\n" -" 'No payment -- see charging schemes'),\n" -" 403: ('Forbidden',\n" -" 'Request forbidden -- authorization will not help'),\n" -" 404: ('Not Found', 'Nothing matches the given URI'),\n" -" 405: ('Method Not Allowed',\n" -" 'Specified method is invalid for this server.'),\n" -" 406: ('Not Acceptable', 'URI not available in preferred format.'),\n" -" 407: ('Proxy Authentication Required', 'You must authenticate with '\n" -" 'this proxy before proceeding.'),\n" -" 408: ('Request Timeout', 'Request timed out; try again later.'),\n" -" 409: ('Conflict', 'Request conflict.'),\n" -" 410: ('Gone',\n" -" 'URI no longer exists and has been permanently removed.'),\n" -" 411: ('Length Required', 'Client must specify Content-Length.'),\n" -" 412: ('Precondition Failed', 'Precondition in headers is false.'),\n" -" 413: ('Request Entity Too Large', 'Entity is too large.'),\n" -" 414: ('Request-URI Too Long', 'URI is too long.'),\n" -" 415: ('Unsupported Media Type', 'Entity body in unsupported format.'),\n" -" 416: ('Requested Range Not Satisfiable',\n" -" 'Cannot satisfy request range.'),\n" -" 417: ('Expectation Failed',\n" -" 'Expect condition could not be satisfied.'),\n" -"\n" -" 500: ('Internal Server Error', 'Server got itself in trouble'),\n" -" 501: ('Not Implemented',\n" -" 'Server does not support this operation'),\n" -" 502: ('Bad Gateway', 'Invalid responses from another server/proxy.'),\n" -" 503: ('Service Unavailable',\n" -" 'The server cannot process the request due to a high load'),\n" -" 504: ('Gateway Timeout',\n" -" 'The gateway server did not receive a timely response'),\n" -" 505: ('HTTP Version Not Supported', 'Cannot fulfill request.'),\n" +" ...\n" +" : ('OK', 'Request fulfilled, document follows'),\n" +" ...\n" +" : ('Forbidden',\n" +" 'Request forbidden -- authorization will " +"'\n" +" 'not help'),\n" +" : ('Not Found',\n" +" 'Nothing matches the given URI'),\n" +" ...\n" +" : (\"I'm a Teapot\",\n" +" 'Server refuses to brew coffee because " +"'\n" +" 'it is a teapot'),\n" +" ...\n" +" : ('Service Unavailable',\n" +" 'The server cannot process the " +"'\n" +" 'request due to a high load'),\n" +" ...\n" " }" msgstr "" -#: howto/urllib2.rst:319 +#: howto/urllib2.rst:271 msgid "" "When an error is raised the server responds by returning an HTTP error code " "*and* an error page. You can use the :exc:`~urllib.error.HTTPError` instance " @@ -464,7 +419,7 @@ msgid "" "``urllib.response`` module::" msgstr "" -#: howto/urllib2.rst:324 +#: howto/urllib2.rst:276 msgid "" ">>> req = urllib.request.Request('http://www.python.org/fish.html')\n" ">>> try:\n" @@ -482,22 +437,22 @@ msgid "" " ..." msgstr "" -#: howto/urllib2.rst:339 +#: howto/urllib2.rst:291 msgid "Wrapping it Up" msgstr "" -#: howto/urllib2.rst:341 +#: howto/urllib2.rst:293 msgid "" "So if you want to be prepared for :exc:`~urllib.error.HTTPError` *or* :exc:" "`~urllib.error.URLError` there are two basic approaches. I prefer the second " "approach." msgstr "" -#: howto/urllib2.rst:345 +#: howto/urllib2.rst:297 msgid "Number 1" msgstr "" -#: howto/urllib2.rst:350 +#: howto/urllib2.rst:302 msgid "" "from urllib.request import Request, urlopen\n" "from urllib.error import URLError, HTTPError\n" @@ -514,17 +469,17 @@ msgid "" " # everything is fine" msgstr "" -#: howto/urllib2.rst:367 +#: howto/urllib2.rst:319 msgid "" "The ``except HTTPError`` *must* come first, otherwise ``except URLError`` " "will *also* catch an :exc:`~urllib.error.HTTPError`." msgstr "" -#: howto/urllib2.rst:371 +#: howto/urllib2.rst:323 msgid "Number 2" msgstr "" -#: howto/urllib2.rst:375 +#: howto/urllib2.rst:327 msgid "" "from urllib.request import Request, urlopen\n" "from urllib.error import URLError\n" @@ -542,18 +497,18 @@ msgid "" " # everything is fine" msgstr "" -#: howto/urllib2.rst:392 +#: howto/urllib2.rst:344 msgid "info and geturl" msgstr "" -#: howto/urllib2.rst:394 +#: howto/urllib2.rst:346 msgid "" "The response returned by urlopen (or the :exc:`~urllib.error.HTTPError` " "instance) has two useful methods :meth:`!info` and :meth:`!geturl` and is " "defined in the module :mod:`urllib.response`." msgstr "" -#: howto/urllib2.rst:398 +#: howto/urllib2.rst:350 msgid "" "**geturl** - this returns the real URL of the page fetched. This is useful " "because ``urlopen`` (or the opener object used) may have followed a " @@ -561,14 +516,14 @@ msgid "" "requested." msgstr "" -#: howto/urllib2.rst:402 +#: howto/urllib2.rst:354 msgid "" "**info** - this returns a dictionary-like object that describes the page " "fetched, particularly the headers sent by the server. It is currently an :" "class:`http.client.HTTPMessage` instance." msgstr "" -#: howto/urllib2.rst:406 +#: howto/urllib2.rst:358 msgid "" "Typical headers include 'Content-length', 'Content-type', and so on. See the " "`Quick Reference to HTTP Headers `_ for a " @@ -576,11 +531,11 @@ msgid "" "use." msgstr "" -#: howto/urllib2.rst:413 +#: howto/urllib2.rst:365 msgid "Openers and Handlers" msgstr "" -#: howto/urllib2.rst:415 +#: howto/urllib2.rst:367 msgid "" "When you fetch a URL you use an opener (an instance of the perhaps " "confusingly named :class:`urllib.request.OpenerDirector`). Normally we have " @@ -591,20 +546,20 @@ msgid "" "HTTP redirections or HTTP cookies." msgstr "" -#: howto/urllib2.rst:423 +#: howto/urllib2.rst:375 msgid "" "You will want to create openers if you want to fetch URLs with specific " "handlers installed, for example to get an opener that handles cookies, or to " "get an opener that does not handle redirections." msgstr "" -#: howto/urllib2.rst:427 +#: howto/urllib2.rst:379 msgid "" "To create an opener, instantiate an ``OpenerDirector``, and then call ``." "add_handler(some_handler_instance)`` repeatedly." msgstr "" -#: howto/urllib2.rst:430 +#: howto/urllib2.rst:382 msgid "" "Alternatively, you can use ``build_opener``, which is a convenience function " "for creating opener objects with a single function call. ``build_opener`` " @@ -612,31 +567,31 @@ msgid "" "or override the default handlers." msgstr "" -#: howto/urllib2.rst:435 +#: howto/urllib2.rst:387 msgid "" "Other sorts of handlers you might want to can handle proxies, " "authentication, and other common but slightly specialised situations." msgstr "" -#: howto/urllib2.rst:438 +#: howto/urllib2.rst:390 msgid "" "``install_opener`` can be used to make an ``opener`` object the (global) " "default opener. This means that calls to ``urlopen`` will use the opener you " "have installed." msgstr "" -#: howto/urllib2.rst:442 +#: howto/urllib2.rst:394 msgid "" "Opener objects have an ``open`` method, which can be called directly to " "fetch urls in the same way as the ``urlopen`` function: there's no need to " "call ``install_opener``, except as a convenience." msgstr "" -#: howto/urllib2.rst:448 +#: howto/urllib2.rst:400 msgid "Basic Authentication" msgstr "" -#: howto/urllib2.rst:450 +#: howto/urllib2.rst:402 msgid "" "To illustrate creating and installing a handler we will use the " "``HTTPBasicAuthHandler``. For a more detailed discussion of this subject -- " @@ -645,7 +600,7 @@ msgid "" "www.voidspace.org.uk/python/articles/authentication.shtml>`__." msgstr "" -#: howto/urllib2.rst:456 +#: howto/urllib2.rst:408 msgid "" "When authentication is required, the server sends a header (as well as the " "401 error code) requesting authentication. This specifies the " @@ -653,15 +608,15 @@ msgid "" "Authenticate: SCHEME realm=\"REALM\"``." msgstr "" -#: howto/urllib2.rst:461 +#: howto/urllib2.rst:413 msgid "e.g." msgstr "" -#: howto/urllib2.rst:463 +#: howto/urllib2.rst:415 msgid "WWW-Authenticate: Basic realm=\"cPanel Users\"" msgstr "" -#: howto/urllib2.rst:468 +#: howto/urllib2.rst:420 msgid "" "The client should then retry the request with the appropriate name and " "password for the realm included as a header in the request. This is 'basic " @@ -669,7 +624,7 @@ msgid "" "of ``HTTPBasicAuthHandler`` and an opener to use this handler." msgstr "" -#: howto/urllib2.rst:473 +#: howto/urllib2.rst:425 msgid "" "The ``HTTPBasicAuthHandler`` uses an object called a password manager to " "handle the mapping of URLs and realms to passwords and usernames. If you " @@ -682,13 +637,13 @@ msgid "" "by providing ``None`` as the realm argument to the ``add_password`` method." msgstr "" -#: howto/urllib2.rst:483 +#: howto/urllib2.rst:435 msgid "" "The top-level URL is the first URL that requires authentication. URLs " "\"deeper\" than the URL you pass to .add_password() will also match. ::" msgstr "" -#: howto/urllib2.rst:486 +#: howto/urllib2.rst:438 msgid "" "# create a password manager\n" "password_mgr = urllib.request.HTTPPasswordMgrWithDefaultRealm()\n" @@ -711,7 +666,7 @@ msgid "" "urllib.request.install_opener(opener)" msgstr "" -#: howto/urllib2.rst:508 +#: howto/urllib2.rst:460 msgid "" "In the above example we only supplied our ``HTTPBasicAuthHandler`` to " "``build_opener``. By default openers have the handlers for normal situations " @@ -721,7 +676,7 @@ msgid "" "``FileHandler``, ``DataHandler``, ``HTTPErrorProcessor``." msgstr "" -#: howto/urllib2.rst:515 +#: howto/urllib2.rst:467 msgid "" "``top_level_url`` is in fact *either* a full URL (including the 'http:' " "scheme component and the hostname and optionally the port number) e.g. " @@ -732,11 +687,11 @@ msgid "" "example ``\"joe:password@example.com\"`` is not correct." msgstr "" -#: howto/urllib2.rst:525 +#: howto/urllib2.rst:477 msgid "Proxies" msgstr "" -#: howto/urllib2.rst:527 +#: howto/urllib2.rst:479 msgid "" "**urllib** will auto-detect your proxy settings and use those. This is " "through the ``ProxyHandler``, which is part of the normal handler chain when " @@ -746,37 +701,37 @@ msgid "" "similar steps to setting up a `Basic Authentication`_ handler: ::" msgstr "" -#: howto/urllib2.rst:534 +#: howto/urllib2.rst:486 msgid "" ">>> proxy_support = urllib.request.ProxyHandler({})\n" ">>> opener = urllib.request.build_opener(proxy_support)\n" ">>> urllib.request.install_opener(opener)" msgstr "" -#: howto/urllib2.rst:540 +#: howto/urllib2.rst:492 msgid "" "Currently ``urllib.request`` *does not* support fetching of ``https`` " "locations through a proxy. However, this can be enabled by extending urllib." "request as shown in the recipe [#]_." msgstr "" -#: howto/urllib2.rst:546 +#: howto/urllib2.rst:498 msgid "" "``HTTP_PROXY`` will be ignored if a variable ``REQUEST_METHOD`` is set; see " "the documentation on :func:`~urllib.request.getproxies`." msgstr "" -#: howto/urllib2.rst:551 +#: howto/urllib2.rst:503 msgid "Sockets and Layers" msgstr "" -#: howto/urllib2.rst:553 +#: howto/urllib2.rst:505 msgid "" "The Python support for fetching resources from the web is layered. urllib " "uses the :mod:`http.client` library, which in turn uses the socket library." msgstr "" -#: howto/urllib2.rst:556 +#: howto/urllib2.rst:508 msgid "" "As of Python 2.3 you can specify how long a socket should wait for a " "response before timing out. This can be useful in applications which have to " @@ -786,7 +741,7 @@ msgid "" "sockets using ::" msgstr "" -#: howto/urllib2.rst:562 +#: howto/urllib2.rst:514 msgid "" "import socket\n" "import urllib.request\n" @@ -801,38 +756,38 @@ msgid "" "response = urllib.request.urlopen(req)" msgstr "" -#: howto/urllib2.rst:579 +#: howto/urllib2.rst:531 msgid "Footnotes" msgstr "" -#: howto/urllib2.rst:581 +#: howto/urllib2.rst:533 msgid "This document was reviewed and revised by John Lee." msgstr "" -#: howto/urllib2.rst:583 +#: howto/urllib2.rst:535 msgid "Google for example." msgstr "" -#: howto/urllib2.rst:584 +#: howto/urllib2.rst:536 msgid "" "Browser sniffing is a very bad practice for website design - building sites " "using web standards is much more sensible. Unfortunately a lot of sites " "still send different versions to different browsers." msgstr "" -#: howto/urllib2.rst:587 +#: howto/urllib2.rst:539 msgid "" "The user agent for MSIE 6 is *'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT " "5.1; SV1; .NET CLR 1.1.4322)'*" msgstr "" -#: howto/urllib2.rst:589 +#: howto/urllib2.rst:541 msgid "" "For details of more HTTP request headers, see `Quick Reference to HTTP " "Headers`_." msgstr "" -#: howto/urllib2.rst:591 +#: howto/urllib2.rst:543 msgid "" "In my case I have to use a proxy to access the internet at work. If you " "attempt to fetch *localhost* URLs through this proxy it blocks them. IE is " @@ -840,7 +795,7 @@ msgid "" "with a localhost server, I have to prevent urllib from using the proxy." msgstr "" -#: howto/urllib2.rst:596 +#: howto/urllib2.rst:548 msgid "" "urllib opener for SSL proxy (CONNECT method): `ASPN Cookbook Recipe \n" "Language-Team: LANGUAGE \n" diff --git a/library/__future__.po b/library/__future__.po index 28d50b54..f2578f79 100644 --- a/library/__future__.po +++ b/library/__future__.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/__main__.po b/library/__main__.po index 5cb05415..9c80e737 100644 --- a/library/__main__.po +++ b/library/__main__.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/_thread.po b/library/_thread.po index f0b4684a..14fe4e3b 100644 --- a/library/_thread.po +++ b/library/_thread.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/abc.po b/library/abc.po index b2fb08c6..69bfa187 100644 --- a/library/abc.po +++ b/library/abc.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/aifc.po b/library/aifc.po index 18d52ceb..f95c0a48 100644 --- a/library/aifc.po +++ b/library/aifc.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2024-12-23 14:33+0200\n" "Last-Translator: Marios Giannopoulos \n" "Language-Team: PyGreece \n" diff --git a/library/allos.po b/library/allos.po index f1bbf595..34c5a133 100644 --- a/library/allos.po +++ b/library/allos.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/annotationlib.po b/library/annotationlib.po index c745fe6c..1f1f286b 100644 --- a/library/annotationlib.po +++ b/library/annotationlib.po @@ -8,10 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.14\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -208,33 +209,33 @@ msgstr "" #: library/annotationlib.rst:133 msgid "" +"Special value used to signal that an annotate function is being evaluated in " +"a special environment with fake globals. When passed this value, annotate " +"functions should either return the same value as for the :attr:`Format." +"VALUE` format, or raise :exc:`NotImplementedError` to signal that they do " +"not support execution in this environment. This format is only used " +"internally and should not be passed to the functions in this module." +msgstr "" + +#: library/annotationlib.rst:144 +msgid "" "Values are real annotation values (as per :attr:`Format.VALUE` format) for " "defined values, and :class:`ForwardRef` proxies for undefined values. Real " "objects may contain references to :class:`ForwardRef` proxy objects." msgstr "" -#: library/annotationlib.rst:141 +#: library/annotationlib.rst:152 msgid "" "Values are the text string of the annotation as it appears in the source " "code, up to modifications including, but not restricted to, whitespace " "normalizations and constant values optimizations." msgstr "" -#: library/annotationlib.rst:145 +#: library/annotationlib.rst:156 msgid "" "The exact values of these strings may change in future versions of Python." msgstr "" -#: library/annotationlib.rst:150 -msgid "" -"Special value used to signal that an annotate function is being evaluated in " -"a special environment with fake globals. When passed this value, annotate " -"functions should either return the same value as for the :attr:`Format." -"VALUE` format, or raise :exc:`NotImplementedError` to signal that they do " -"not support execution in this environment. This format is only used " -"internally and should not be passed to the functions in this module." -msgstr "" - #: library/annotationlib.rst:162 msgid "A proxy object for forward references in annotations." msgstr "" @@ -306,11 +307,18 @@ msgid "" "be necessary to evaluate them successfully." msgstr "" -#: library/annotationlib.rst:218 -msgid "Functions" +#: library/annotationlib.rst:214 +msgid "" +"If no *owner*, *globals*, *locals*, or *type_params* are provided and the :" +"class:`~ForwardRef` does not contain information about its origin, empty " +"globals and locals dictionaries are used." msgstr "" #: library/annotationlib.rst:222 +msgid "Functions" +msgstr "" + +#: library/annotationlib.rst:226 msgid "" "Convert an annotations dict containing runtime values to a dict containing " "only strings. If the values are not already strings, they are converted " @@ -319,13 +327,13 @@ msgid "" "have access to the code creating the annotations." msgstr "" -#: library/annotationlib.rst:229 +#: library/annotationlib.rst:233 msgid "" "For example, this is used to implement the :attr:`~Format.STRING` for :class:" "`typing.TypedDict` classes created through the functional syntax:" msgstr "" -#: library/annotationlib.rst:232 +#: library/annotationlib.rst:236 msgid "" ">>> from typing import TypedDict\n" ">>> Movie = TypedDict(\"movie\", {\"name\": str, \"year\": int})\n" @@ -333,14 +341,14 @@ msgid "" "{'name': 'str', 'year': 'int'}" msgstr "" -#: library/annotationlib.rst:243 +#: library/annotationlib.rst:247 msgid "" "Call the :term:`annotate function` *annotate* with the given *format*, a " "member of the :class:`Format` enum, and return the annotations dictionary " "produced by the function." msgstr "" -#: library/annotationlib.rst:247 +#: library/annotationlib.rst:251 msgid "" "This helper function is required because annotate functions generated by the " "compiler for functions, classes, and modules only support the :attr:`~Format." @@ -351,21 +359,21 @@ msgid "" "while a class is being constructed." msgstr "" -#: library/annotationlib.rst:256 +#: library/annotationlib.rst:260 msgid "" "*owner* is the object that owns the annotation function, usually a function, " "class, or module. If provided, it is used in the :attr:`~Format.FORWARDREF` " "format to produce a :class:`ForwardRef` object that carries more information." msgstr "" -#: library/annotationlib.rst:263 +#: library/annotationlib.rst:267 msgid "" ":PEP:`PEP 649 <649#the-stringizer-and-the-fake-globals-environment>` " "contains an explanation of the implementation technique used by this " "function." msgstr "" -#: library/annotationlib.rst:271 +#: library/annotationlib.rst:275 msgid "" "Call the :term:`evaluate function` *evaluate* with the given *format*, a " "member of the :class:`Format` enum, and return the value produced by the " @@ -374,55 +382,55 @@ msgid "" "function returns a single value." msgstr "" -#: library/annotationlib.rst:277 +#: library/annotationlib.rst:281 msgid "" "This is intended for use with the evaluate functions generated for lazily " "evaluated elements related to type aliases and type parameters:" msgstr "" -#: library/annotationlib.rst:280 +#: library/annotationlib.rst:284 msgid ":meth:`typing.TypeAliasType.evaluate_value`, the value of type aliases" msgstr "" -#: library/annotationlib.rst:281 +#: library/annotationlib.rst:285 msgid ":meth:`typing.TypeVar.evaluate_bound`, the bound of type variables" msgstr "" -#: library/annotationlib.rst:282 +#: library/annotationlib.rst:286 msgid "" ":meth:`typing.TypeVar.evaluate_constraints`, the constraints of type " "variables" msgstr "" -#: library/annotationlib.rst:284 +#: library/annotationlib.rst:288 msgid "" ":meth:`typing.TypeVar.evaluate_default`, the default value of type variables" msgstr "" -#: library/annotationlib.rst:286 +#: library/annotationlib.rst:290 msgid "" ":meth:`typing.ParamSpec.evaluate_default`, the default value of parameter " "specifications" msgstr "" -#: library/annotationlib.rst:288 +#: library/annotationlib.rst:292 msgid "" ":meth:`typing.TypeVarTuple.evaluate_default`, the default value of type " "variable tuples" msgstr "" -#: library/annotationlib.rst:291 +#: library/annotationlib.rst:295 msgid "" "*owner* is the object that owns the evaluate function, such as the type " "alias or type variable object." msgstr "" -#: library/annotationlib.rst:294 +#: library/annotationlib.rst:298 msgid "" "*format* can be used to control the format in which the value is returned:" msgstr "" -#: library/annotationlib.rst:296 +#: library/annotationlib.rst:300 msgid "" ">>> type Alias = undefined\n" ">>> call_evaluate_function(Alias.evaluate_value, Format.VALUE)\n" @@ -435,7 +443,7 @@ msgid "" "'undefined'" msgstr "" -#: library/annotationlib.rst:312 +#: library/annotationlib.rst:316 msgid "" "Retrieve the :term:`annotate function` from a class namespace dictionary " "*namespace*. Return :const:`!None` if the namespace does not contain an " @@ -445,31 +453,31 @@ msgid "" "` for an example using this function in a metaclass." msgstr "" -#: library/annotationlib.rst:322 +#: library/annotationlib.rst:326 msgid "Compute the annotations dict for an object." msgstr "" -#: library/annotationlib.rst:324 +#: library/annotationlib.rst:328 msgid "" "*obj* may be a callable, class, module, or other object with :attr:`~object." "__annotate__` or :attr:`~object.__annotations__` attributes. Passing any " "other object raises :exc:`TypeError`." msgstr "" -#: library/annotationlib.rst:328 +#: library/annotationlib.rst:332 msgid "" "The *format* parameter controls the format in which annotations are " "returned, and must be a member of the :class:`Format` enum or its integer " "equivalent. The different formats work as follows:" msgstr "" -#: library/annotationlib.rst:332 +#: library/annotationlib.rst:336 msgid "" "VALUE: :attr:`!object.__annotations__` is tried first; if that does not " "exist, the :attr:`!object.__annotate__` function is called if it exists." msgstr "" -#: library/annotationlib.rst:334 +#: library/annotationlib.rst:338 msgid "" "FORWARDREF: If :attr:`!object.__annotations__` exists and can be evaluated " "successfully, it is used; otherwise, the :attr:`!object.__annotate__` " @@ -477,25 +485,25 @@ msgid "" "__annotations__` is tried again and any error from accessing it is re-raised." msgstr "" -#: library/annotationlib.rst:338 +#: library/annotationlib.rst:342 msgid "" "STRING: If :attr:`!object.__annotate__` exists, it is called first; " "otherwise, :attr:`!object.__annotations__` is used and stringified using :" "func:`annotations_to_string`." msgstr "" -#: library/annotationlib.rst:342 +#: library/annotationlib.rst:346 msgid "" "Returns a dict. :func:`!get_annotations` returns a new dict every time it's " "called; calling it twice on the same object will return two different but " "equivalent dicts." msgstr "" -#: library/annotationlib.rst:346 +#: library/annotationlib.rst:350 msgid "This function handles several details for you:" msgstr "" -#: library/annotationlib.rst:348 +#: library/annotationlib.rst:352 msgid "" "If *eval_str* is true, values of type :class:`!str` will be un-stringized " "using :func:`eval`. This is intended for use with stringized annotations " @@ -503,33 +511,33 @@ msgid "" "to true with formats other than :attr:`Format.VALUE`." msgstr "" -#: library/annotationlib.rst:353 +#: library/annotationlib.rst:357 msgid "" "If *obj* doesn't have an annotations dict, returns an empty dict. (Functions " "and methods always have an annotations dict; classes, modules, and other " "types of callables may not.)" msgstr "" -#: library/annotationlib.rst:357 +#: library/annotationlib.rst:361 msgid "" "Ignores inherited annotations on classes, as well as annotations on " "metaclasses. If a class doesn't have its own annotations dict, returns an " "empty dict." msgstr "" -#: library/annotationlib.rst:360 +#: library/annotationlib.rst:364 msgid "" "All accesses to object members and dict values are done using ``getattr()`` " "and ``dict.get()`` for safety." msgstr "" -#: library/annotationlib.rst:363 +#: library/annotationlib.rst:367 msgid "" "*eval_str* controls whether or not values of type :class:`!str` are replaced " "with the result of calling :func:`eval` on those values:" msgstr "" -#: library/annotationlib.rst:366 +#: library/annotationlib.rst:370 msgid "" "If eval_str is true, :func:`eval` is called on values of type :class:`!str`. " "(Note that :func:`!get_annotations` doesn't catch exceptions; if :func:" @@ -537,13 +545,13 @@ msgid "" "get_annotations` call.)" msgstr "" -#: library/annotationlib.rst:370 +#: library/annotationlib.rst:374 msgid "" "If *eval_str* is false (the default), values of type :class:`!str` are " "unchanged." msgstr "" -#: library/annotationlib.rst:373 +#: library/annotationlib.rst:377 msgid "" "*globals* and *locals* are passed in to :func:`eval`; see the documentation " "for :func:`eval` for more information. If *globals* or *locals* is :const:`!" @@ -551,17 +559,17 @@ msgid "" "contingent on ``type(obj)``:" msgstr "" -#: library/annotationlib.rst:378 +#: library/annotationlib.rst:382 msgid "If *obj* is a module, *globals* defaults to ``obj.__dict__``." msgstr "" -#: library/annotationlib.rst:379 +#: library/annotationlib.rst:383 msgid "" "If *obj* is a class, *globals* defaults to ``sys.modules[obj.__module__]." "__dict__`` and *locals* defaults to the *obj* class namespace." msgstr "" -#: library/annotationlib.rst:382 +#: library/annotationlib.rst:386 msgid "" "If *obj* is a callable, *globals* defaults to :attr:`obj.__globals__ " "`, although if *obj* is a wrapped function (using :" @@ -569,14 +577,14 @@ msgid "" "is unwrapped until a non-wrapped function is found." msgstr "" -#: library/annotationlib.rst:388 +#: library/annotationlib.rst:392 msgid "" "Calling :func:`!get_annotations` is best practice for accessing the " "annotations dict of any object. See :ref:`annotations-howto` for more " "information on annotations best practices." msgstr "" -#: library/annotationlib.rst:392 +#: library/annotationlib.rst:396 msgid "" ">>> def f(a: int, b: str) -> float:\n" "... pass\n" @@ -584,14 +592,14 @@ msgid "" "{'a': , 'b': , 'return': }" msgstr "" -#: library/annotationlib.rst:403 +#: library/annotationlib.rst:407 msgid "" "Convert an arbitrary Python value to a format suitable for use by the :attr:" "`~Format.STRING` format. This calls :func:`repr` for most objects, but has " "special handling for some objects, such as type objects." msgstr "" -#: library/annotationlib.rst:407 +#: library/annotationlib.rst:411 msgid "" "This is meant as a helper for user-provided annotate functions that support " "the :attr:`~Format.STRING` format but do not have access to the code " @@ -600,15 +608,15 @@ msgid "" "commonly encountered in annotations." msgstr "" -#: library/annotationlib.rst:417 +#: library/annotationlib.rst:421 msgid "Recipes" msgstr "" -#: library/annotationlib.rst:422 +#: library/annotationlib.rst:426 msgid "Using annotations in a metaclass" msgstr "" -#: library/annotationlib.rst:424 +#: library/annotationlib.rst:428 msgid "" "A :ref:`metaclass ` may want to inspect or even modify the " "annotations in a class body during class creation. Doing so requires " @@ -622,20 +630,20 @@ msgid "" "names that cannot yet be resolved when the class is created." msgstr "" -#: library/annotationlib.rst:435 +#: library/annotationlib.rst:439 msgid "" "To modify the annotations, it is best to create a wrapper annotate function " "that calls the original annotate function, makes any necessary adjustments, " "and returns the result." msgstr "" -#: library/annotationlib.rst:439 +#: library/annotationlib.rst:443 msgid "" "Below is an example of a metaclass that filters out all :class:`typing." "ClassVar` annotations from the class and puts them in a separate attribute:" msgstr "" -#: library/annotationlib.rst:442 +#: library/annotationlib.rst:446 msgid "" "import annotationlib\n" "import typing\n" @@ -685,3 +693,249 @@ msgid "" "attribute\n" " return typ" msgstr "" + +#: library/annotationlib.rst:494 +msgid "Limitations of the ``STRING`` format" +msgstr "" + +#: library/annotationlib.rst:496 +msgid "" +"The :attr:`~Format.STRING` format is meant to approximate the source code of " +"the annotation, but the implementation strategy used means that it is not " +"always possible to recover the exact source code." +msgstr "" + +#: library/annotationlib.rst:500 +msgid "" +"First, the stringifier of course cannot recover any information that is not " +"present in the compiled code, including comments, whitespace, " +"parenthesization, and operations that get simplified by the compiler." +msgstr "" + +#: library/annotationlib.rst:504 +msgid "" +"Second, the stringifier can intercept almost all operations that involve " +"names looked up in some scope, but it cannot intercept operations that " +"operate fully on constants. As a corollary, this also means it is not safe " +"to request the ``STRING`` format on untrusted code: Python is powerful " +"enough that it is possible to achieve arbitrary code execution even with no " +"access to any globals or builtins. For example:" +msgstr "" + +#: library/annotationlib.rst:510 +msgid "" +">>> def f(x: (1).__class__.__base__.__subclasses__()[-1].__init__." +"__builtins__[\"print\"](\"Hello world\")): pass\n" +"...\n" +">>> annotationlib.get_annotations(f, format=annotationlib.Format.SOURCE)\n" +"Hello world\n" +"{'x': 'None'}" +msgstr "" + +#: library/annotationlib.rst:519 +msgid "" +"This particular example works as of the time of writing, but it relies on " +"implementation details and is not guaranteed to work in the future." +msgstr "" + +#: library/annotationlib.rst:522 +msgid "" +"Among the different kinds of expressions that exist in Python, as " +"represented by the :mod:`ast` module, some expressions are supported, " +"meaning that the ``STRING`` format can generally recover the original source " +"code; others are unsupported, meaning that they may result in incorrect " +"output or an error." +msgstr "" + +#: library/annotationlib.rst:527 +msgid "The following are supported (sometimes with caveats):" +msgstr "" + +#: library/annotationlib.rst:529 +msgid ":class:`ast.BinOp`" +msgstr "" + +#: library/annotationlib.rst:530 +msgid ":class:`ast.UnaryOp`" +msgstr "" + +#: library/annotationlib.rst:532 +msgid "" +":class:`ast.Invert` (``~``), :class:`ast.UAdd` (``+``), and :class:`ast." +"USub` (``-``) are supported" +msgstr "" + +#: library/annotationlib.rst:533 +msgid ":class:`ast.Not` (``not``) is not supported" +msgstr "" + +#: library/annotationlib.rst:535 +msgid ":class:`ast.Dict` (except when using ``**`` unpacking)" +msgstr "" + +#: library/annotationlib.rst:536 +msgid ":class:`ast.Set`" +msgstr "" + +#: library/annotationlib.rst:537 +msgid ":class:`ast.Compare`" +msgstr "" + +#: library/annotationlib.rst:539 +msgid ":class:`ast.Eq` and :class:`ast.NotEq` are supported" +msgstr "" + +#: library/annotationlib.rst:540 +msgid "" +":class:`ast.Lt`, :class:`ast.LtE`, :class:`ast.Gt`, and :class:`ast.GtE` are " +"supported, but the operand may be flipped" +msgstr "" + +#: library/annotationlib.rst:541 +msgid "" +":class:`ast.Is`, :class:`ast.IsNot`, :class:`ast.In`, and :class:`ast.NotIn` " +"are not supported" +msgstr "" + +#: library/annotationlib.rst:543 +msgid ":class:`ast.Call` (except when using ``**`` unpacking)" +msgstr "" + +#: library/annotationlib.rst:544 +msgid "" +":class:`ast.Constant` (though not the exact representation of the constant; " +"for example, escape sequences in strings are lost; hexadecimal numbers are " +"converted to decimal)" +msgstr "" + +#: library/annotationlib.rst:546 +msgid ":class:`ast.Attribute` (assuming the value is not a constant)" +msgstr "" + +#: library/annotationlib.rst:547 +msgid ":class:`ast.Subscript` (assuming the value is not a constant)" +msgstr "" + +#: library/annotationlib.rst:548 +msgid ":class:`ast.Starred` (``*`` unpacking)" +msgstr "" + +#: library/annotationlib.rst:549 +msgid ":class:`ast.Name`" +msgstr "" + +#: library/annotationlib.rst:550 +msgid ":class:`ast.List`" +msgstr "" + +#: library/annotationlib.rst:551 +msgid ":class:`ast.Tuple`" +msgstr "" + +#: library/annotationlib.rst:552 +msgid ":class:`ast.Slice`" +msgstr "" + +#: library/annotationlib.rst:554 +msgid "" +"The following are unsupported, but throw an informative error when " +"encountered by the stringifier:" +msgstr "" + +#: library/annotationlib.rst:557 +msgid "" +":class:`ast.FormattedValue` (f-strings; error is not detected if conversion " +"specifiers like ``!r`` are used)" +msgstr "" + +#: library/annotationlib.rst:559 +msgid ":class:`ast.JoinedStr` (f-strings)" +msgstr "" + +#: library/annotationlib.rst:561 +msgid "The following are unsupported and result in incorrect output:" +msgstr "" + +#: library/annotationlib.rst:563 +msgid ":class:`ast.BoolOp` (``and`` and ``or``)" +msgstr "" + +#: library/annotationlib.rst:564 +msgid ":class:`ast.IfExp`" +msgstr "" + +#: library/annotationlib.rst:565 +msgid ":class:`ast.Lambda`" +msgstr "" + +#: library/annotationlib.rst:566 +msgid ":class:`ast.ListComp`" +msgstr "" + +#: library/annotationlib.rst:567 +msgid ":class:`ast.SetComp`" +msgstr "" + +#: library/annotationlib.rst:568 +msgid ":class:`ast.DictComp`" +msgstr "" + +#: library/annotationlib.rst:569 +msgid ":class:`ast.GeneratorExp`" +msgstr "" + +#: library/annotationlib.rst:571 +msgid "" +"The following are disallowed in annotation scopes and therefore not relevant:" +msgstr "" + +#: library/annotationlib.rst:573 +msgid ":class:`ast.NamedExpr` (``:=``)" +msgstr "" + +#: library/annotationlib.rst:574 +msgid ":class:`ast.Await`" +msgstr "" + +#: library/annotationlib.rst:575 +msgid ":class:`ast.Yield`" +msgstr "" + +#: library/annotationlib.rst:576 +msgid ":class:`ast.YieldFrom`" +msgstr "" + +#: library/annotationlib.rst:580 +msgid "Limitations of the ``FORWARDREF`` format" +msgstr "" + +#: library/annotationlib.rst:582 +msgid "" +"The :attr:`~Format.FORWARDREF` format aims to produce real values as much as " +"possible, with anything that cannot be resolved replaced with :class:" +"`ForwardRef` objects. It is affected by broadly the same Limitations as the :" +"attr:`~Format.STRING` format: annotations that perform operations on " +"literals or that use unsupported expression types may raise exceptions when " +"evaluated using the :attr:`~Format.FORWARDREF` format." +msgstr "" + +#: library/annotationlib.rst:589 +msgid "Below are a few examples of the behavior with unsupported expressions:" +msgstr "" + +#: library/annotationlib.rst:591 +msgid "" +">>> from annotationlib import get_annotations, Format\n" +">>> def zerodiv(x: 1 / 0): ...\n" +">>> get_annotations(zerodiv, format=Format.STRING)\n" +"Traceback (most recent call last):\n" +" ...\n" +"ZeroDivisionError: division by zero\n" +">>> get_annotations(zerodiv, format=Format.FORWARDREF)\n" +"Traceback (most recent call last):\n" +" ...\n" +"ZeroDivisionError: division by zero\n" +">>> def ifexp(x: 1 if y else 0): ...\n" +">>> get_annotations(ifexp, format=Format.STRING)\n" +"{'x': '1'}" +msgstr "" diff --git a/library/archiving.po b/library/archiving.po index b986dd69..a1d8276d 100644 --- a/library/archiving.po +++ b/library/archiving.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -24,7 +24,7 @@ msgstr "" #: library/archiving.rst:7 msgid "" "The modules described in this chapter support data compression with the " -"zlib, gzip, bzip2 and lzma algorithms, and the creation of ZIP- and tar-" -"format archives. See also :ref:`archiving-operations` provided by the :mod:" -"`shutil` module." +"zlib, gzip, bzip2, lzma, and zstd algorithms, and the creation of ZIP- and " +"tar-format archives. See also :ref:`archiving-operations` provided by the :" +"mod:`shutil` module." msgstr "" diff --git a/library/argparse.po b/library/argparse.po index e86f2908..97b905c2 100644 --- a/library/argparse.po +++ b/library/argparse.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -2932,16 +2932,21 @@ msgstr "" #: library/argparse.rst:2125 msgid "" -"Sometimes a script may only parse a few of the command-line arguments, " -"passing the remaining arguments on to another script or program. In these " -"cases, the :meth:`~ArgumentParser.parse_known_args` method can be useful. " -"It works much like :meth:`~ArgumentParser.parse_args` except that it does " -"not produce an error when extra arguments are present. Instead, it returns " -"a two item tuple containing the populated namespace and the list of " -"remaining argument strings." +"Sometimes a script only needs to handle a specific set of command-line " +"arguments, leaving any unrecognized arguments for another script or program. " +"In these cases, the :meth:`~ArgumentParser.parse_known_args` method can be " +"useful." msgstr "" -#: library/argparse.rst:2134 +#: library/argparse.rst:2130 +msgid "" +"This method works similarly to :meth:`~ArgumentParser.parse_args`, but it " +"does not raise an error for extra, unrecognized arguments. Instead, it " +"parses the known arguments and returns a two item tuple that contains the " +"populated namespace and the list of any unrecognized arguments." +msgstr "" + +#: library/argparse.rst:2137 msgid "" ">>> parser = argparse.ArgumentParser()\n" ">>> parser.add_argument('--foo', action='store_true')\n" @@ -2950,7 +2955,7 @@ msgid "" "(Namespace(bar='BAR', foo=True), ['--badger', 'spam'])" msgstr "" -#: library/argparse.rst:2141 +#: library/argparse.rst:2144 msgid "" ":ref:`Prefix matching ` rules apply to :meth:" "`~ArgumentParser.parse_known_args`. The parser may consume an option even if " @@ -2958,11 +2963,11 @@ msgid "" "remaining arguments list." msgstr "" -#: library/argparse.rst:2148 +#: library/argparse.rst:2151 msgid "Customizing file parsing" msgstr "" -#: library/argparse.rst:2152 +#: library/argparse.rst:2155 msgid "" "Arguments that are read from a file (see the *fromfile_prefix_chars* keyword " "argument to the :class:`ArgumentParser` constructor) are read one argument " @@ -2970,38 +2975,38 @@ msgid "" "reading." msgstr "" -#: library/argparse.rst:2157 +#: library/argparse.rst:2160 msgid "" "This method takes a single argument *arg_line* which is a string read from " "the argument file. It returns a list of arguments parsed from this string. " "The method is called once per line read from the argument file, in order." msgstr "" -#: library/argparse.rst:2161 +#: library/argparse.rst:2164 msgid "" "A useful override of this method is one that treats each space-separated " "word as an argument. The following example demonstrates how to do this::" msgstr "" -#: library/argparse.rst:2164 +#: library/argparse.rst:2167 msgid "" "class MyArgumentParser(argparse.ArgumentParser):\n" " def convert_arg_line_to_args(self, arg_line):\n" " return arg_line.split()" msgstr "" -#: library/argparse.rst:2170 +#: library/argparse.rst:2173 msgid "Exiting methods" msgstr "" -#: library/argparse.rst:2174 +#: library/argparse.rst:2177 msgid "" "This method terminates the program, exiting with the specified *status* and, " "if given, it prints a *message* to :data:`sys.stderr` before that. The user " "can override this method to handle these steps differently::" msgstr "" -#: library/argparse.rst:2178 +#: library/argparse.rst:2181 msgid "" "class ErrorCatchingArgumentParser(argparse.ArgumentParser):\n" " def exit(self, status=0, message=None):\n" @@ -3010,17 +3015,17 @@ msgid "" " exit(status)" msgstr "" -#: library/argparse.rst:2186 +#: library/argparse.rst:2189 msgid "" "This method prints a usage message, including the *message*, to :data:`sys." "stderr` and terminates the program with a status code of 2." msgstr "" -#: library/argparse.rst:2191 +#: library/argparse.rst:2194 msgid "Intermixed parsing" msgstr "" -#: library/argparse.rst:2196 +#: library/argparse.rst:2199 msgid "" "A number of Unix commands allow the user to intermix optional arguments with " "positional arguments. The :meth:`~ArgumentParser.parse_intermixed_args` " @@ -3028,7 +3033,7 @@ msgid "" "parsing style." msgstr "" -#: library/argparse.rst:2201 +#: library/argparse.rst:2204 msgid "" "These parsers do not support all the :mod:`!argparse` features, and will " "raise exceptions if unsupported features are used. In particular, " @@ -3036,7 +3041,7 @@ msgid "" "positionals are not supported." msgstr "" -#: library/argparse.rst:2206 +#: library/argparse.rst:2209 msgid "" "The following example shows the difference between :meth:`~ArgumentParser." "parse_known_args` and :meth:`~ArgumentParser.parse_intermixed_args`: the " @@ -3044,7 +3049,7 @@ msgid "" "collects all the positionals into ``rest``. ::" msgstr "" -#: library/argparse.rst:2212 +#: library/argparse.rst:2215 msgid "" ">>> parser = argparse.ArgumentParser()\n" ">>> parser.add_argument('--foo')\n" @@ -3056,7 +3061,7 @@ msgid "" "Namespace(cmd='doit', foo='bar', rest=[1, 2, 3])" msgstr "" -#: library/argparse.rst:2221 +#: library/argparse.rst:2224 msgid "" ":meth:`~ArgumentParser.parse_known_intermixed_args` returns a two item tuple " "containing the populated namespace and the list of remaining argument " @@ -3064,11 +3069,11 @@ msgid "" "there are any remaining unparsed argument strings." msgstr "" -#: library/argparse.rst:2230 +#: library/argparse.rst:2233 msgid "Registering custom types or actions" msgstr "" -#: library/argparse.rst:2234 +#: library/argparse.rst:2237 msgid "" "Sometimes it's desirable to use a custom string in error messages to provide " "more user-friendly output. In these cases, :meth:`!register` can be used to " @@ -3076,7 +3081,7 @@ msgid "" "the type by their registered name instead of their callable name." msgstr "" -#: library/argparse.rst:2239 +#: library/argparse.rst:2242 msgid "" "The :meth:`!register` method accepts three arguments - a *registry_name*, " "specifying the internal registry where the object will be stored (e.g., " @@ -3084,12 +3089,12 @@ msgid "" "be registered, and object, the callable to be registered." msgstr "" -#: library/argparse.rst:2244 +#: library/argparse.rst:2247 msgid "" "The following example shows how to register a custom type with a parser::" msgstr "" -#: library/argparse.rst:2246 +#: library/argparse.rst:2249 msgid "" ">>> import argparse\n" ">>> parser = argparse.ArgumentParser()\n" @@ -3105,26 +3110,26 @@ msgid "" "PROG: error: argument --foo: invalid 'hexadecimal integer' value: '1.2'" msgstr "" -#: library/argparse.rst:2258 +#: library/argparse.rst:2261 msgid "Exceptions" msgstr "" -#: library/argparse.rst:2262 +#: library/argparse.rst:2265 msgid "An error from creating or using an argument (optional or positional)." msgstr "" -#: library/argparse.rst:2264 +#: library/argparse.rst:2267 msgid "" "The string value of this exception is the message, augmented with " "information about the argument that caused it." msgstr "" -#: library/argparse.rst:2269 +#: library/argparse.rst:2272 msgid "" "Raised when something goes wrong converting a command line string to a type." msgstr "" -#: library/argparse.rst:2273 +#: library/argparse.rst:2276 msgid "Guides and Tutorials" msgstr "" diff --git a/library/array.po b/library/array.po index 42a14bad..8adb599f 100644 --- a/library/array.po +++ b/library/array.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/ast.po b/library/ast.po index 77f6463a..4726251a 100644 --- a/library/ast.po +++ b/library/ast.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -516,9 +516,9 @@ msgstr "" msgid "" "A constant value. The ``value`` attribute of the ``Constant`` literal " "contains the Python object it represents. The values represented can be " -"simple types such as a number, string or ``None``, but also immutable " -"container types (tuples and frozensets) if all of their elements are " -"constant." +"instances of :class:`str`, :class:`bytes`, :class:`int`, :class:`float`, :" +"class:`complex`, and :class:`bool`, and the constants :data:`None` and :data:" +"`Ellipsis`." msgstr "" #: library/ast.rst:284 @@ -2900,19 +2900,19 @@ msgstr "" #: library/ast.rst:2448 msgid "" -"If *show_empty* is ``False`` (the default), empty lists and fields that are " -"``None`` will be omitted from the output." +"If *show_empty* is false (the default), optional empty lists will be omitted " +"from the output. Optional ``None`` values are always omitted." msgstr "" -#: library/ast.rst:2451 +#: library/ast.rst:2452 msgid "Added the *indent* option." msgstr "" -#: library/ast.rst:2454 +#: library/ast.rst:2455 msgid "Added the *show_empty* option." msgstr "" -#: library/ast.rst:2457 +#: library/ast.rst:2458 msgid "" ">>> print(ast.dump(ast.parse(\"\"\"\\\n" "... async def f():\n" @@ -2940,45 +2940,45 @@ msgid "" " type_ignores=[])" msgstr "" -#: library/ast.rst:2488 +#: library/ast.rst:2489 msgid "Compiler flags" msgstr "" -#: library/ast.rst:2490 +#: library/ast.rst:2491 msgid "" "The following flags may be passed to :func:`compile` in order to change " "effects on the compilation of a program:" msgstr "" -#: library/ast.rst:2495 +#: library/ast.rst:2496 msgid "" "Enables support for top-level ``await``, ``async for``, ``async with`` and " "async comprehensions." msgstr "" -#: library/ast.rst:2502 +#: library/ast.rst:2503 msgid "" "Generates and returns an abstract syntax tree instead of returning a " "compiled code object." msgstr "" -#: library/ast.rst:2507 +#: library/ast.rst:2508 msgid "" "The returned AST is optimized according to the *optimize* argument in :func:" "`compile` or :func:`ast.parse`." msgstr "" -#: library/ast.rst:2514 +#: library/ast.rst:2515 msgid "" "Enables support for :pep:`484` and :pep:`526` style type comments (``# type: " "``, ``# type: ignore ``)." msgstr "" -#: library/ast.rst:2522 +#: library/ast.rst:2523 msgid "Recursively compares two ASTs." msgstr "" -#: library/ast.rst:2524 +#: library/ast.rst:2525 msgid "" "*compare_attributes* affects whether AST attributes are considered in the " "comparison. If *compare_attributes* is ``False`` (default), then attributes " @@ -2987,75 +2987,75 @@ msgid "" "similar details. Attributes include line numbers and column offsets." msgstr "" -#: library/ast.rst:2537 +#: library/ast.rst:2538 msgid "Command-line usage" msgstr "" -#: library/ast.rst:2541 +#: library/ast.rst:2542 msgid "" "The :mod:`ast` module can be executed as a script from the command line. It " "is as simple as:" msgstr "" -#: library/ast.rst:2544 +#: library/ast.rst:2545 msgid "python -m ast [-m ] [-a] [infile]" msgstr "" -#: library/ast.rst:2548 +#: library/ast.rst:2549 msgid "The following options are accepted:" msgstr "" -#: library/ast.rst:2554 +#: library/ast.rst:2555 msgid "Show the help message and exit." msgstr "" -#: library/ast.rst:2559 +#: library/ast.rst:2560 msgid "" "Specify what kind of code must be compiled, like the *mode* argument in :" "func:`parse`." msgstr "" -#: library/ast.rst:2564 +#: library/ast.rst:2565 msgid "Don't parse type comments." msgstr "" -#: library/ast.rst:2568 +#: library/ast.rst:2569 msgid "Include attributes such as line numbers and column offsets." msgstr "" -#: library/ast.rst:2573 +#: library/ast.rst:2574 msgid "Indentation of nodes in AST (number of spaces)." msgstr "" -#: library/ast.rst:2577 +#: library/ast.rst:2578 msgid "" "Python version in the format 3.x (for example, 3.10). Defaults to the " "current version of the interpreter." msgstr "" -#: library/ast.rst:2585 +#: library/ast.rst:2586 msgid "Optimization level for parser. Defaults to no optimization." msgstr "" -#: library/ast.rst:2591 +#: library/ast.rst:2592 msgid "" "Show empty lists and fields that are ``None``. Defaults to not showing empty " "objects." msgstr "" -#: library/ast.rst:2597 +#: library/ast.rst:2598 msgid "" "If :file:`infile` is specified its contents are parsed to AST and dumped to " "stdout. Otherwise, the content is read from stdin." msgstr "" -#: library/ast.rst:2603 +#: library/ast.rst:2604 msgid "" "`Green Tree Snakes `_, an external " "documentation resource, has good details on working with Python ASTs." msgstr "" -#: library/ast.rst:2606 +#: library/ast.rst:2607 msgid "" "`ASTTokens `_ " "annotates Python ASTs with the positions of tokens and text in the source " @@ -3063,21 +3063,21 @@ msgid "" "transformations." msgstr "" -#: library/ast.rst:2611 +#: library/ast.rst:2612 msgid "" "`leoAst.py `_ unifies the token-based and parse-tree-based views of python programs " "by inserting two-way links between tokens and ast nodes." msgstr "" -#: library/ast.rst:2616 +#: library/ast.rst:2617 msgid "" "`LibCST `_ parses code as a Concrete Syntax " "Tree that looks like an ast tree and keeps all formatting details. It's " "useful for building automated refactoring (codemod) applications and linters." msgstr "" -#: library/ast.rst:2621 +#: library/ast.rst:2622 msgid "" "`Parso `_ is a Python parser that supports " "error recovery and round-trip parsing for different Python versions (in " diff --git a/library/asynchat.po b/library/asynchat.po index 9a42a9f8..69d426c3 100644 --- a/library/asynchat.po +++ b/library/asynchat.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-20 17:00+0300\n" "Last-Translator: ALEXANDROS TZIORAS alextzioras23@gmail.com\n" "Language-Team: Language-Team: PyGreece \n" diff --git a/library/asyncio-api-index.po b/library/asyncio-api-index.po index 61c9595b..4b9cb833 100644 --- a/library/asyncio-api-index.po +++ b/library/asyncio-api-index.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/asyncio-dev.po b/library/asyncio-dev.po index da69ef59..52af63a3 100644 --- a/library/asyncio-dev.po +++ b/library/asyncio-dev.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -90,36 +90,29 @@ msgstr "" #: library/asyncio-dev.rst:49 msgid "" -"asyncio checks for :ref:`coroutines that were not awaited ` and logs them; this mitigates the \"forgotten await\" " -"pitfall." -msgstr "" - -#: library/asyncio-dev.rst:53 -msgid "" "Many non-threadsafe asyncio APIs (such as :meth:`loop.call_soon` and :meth:" "`loop.call_at` methods) raise an exception if they are called from a wrong " "thread." msgstr "" -#: library/asyncio-dev.rst:57 +#: library/asyncio-dev.rst:53 msgid "" "The execution time of the I/O selector is logged if it takes too long to " "perform an I/O operation." msgstr "" -#: library/asyncio-dev.rst:60 +#: library/asyncio-dev.rst:56 msgid "" "Callbacks taking longer than 100 milliseconds are logged. The :attr:`loop." "slow_callback_duration` attribute can be used to set the minimum execution " "duration in seconds that is considered \"slow\"." msgstr "" -#: library/asyncio-dev.rst:68 +#: library/asyncio-dev.rst:64 msgid "Concurrency and Multithreading" msgstr "" -#: library/asyncio-dev.rst:70 +#: library/asyncio-dev.rst:66 msgid "" "An event loop runs in a thread (typically the main thread) and executes all " "callbacks and Tasks in its thread. While a Task is running in the event " @@ -128,17 +121,17 @@ msgid "" "executes the next Task." msgstr "" -#: library/asyncio-dev.rst:76 +#: library/asyncio-dev.rst:72 msgid "" "To schedule a :term:`callback` from another OS thread, the :meth:`loop." "call_soon_threadsafe` method should be used. Example::" msgstr "" -#: library/asyncio-dev.rst:79 +#: library/asyncio-dev.rst:75 msgid "loop.call_soon_threadsafe(callback, *args)" msgstr "" -#: library/asyncio-dev.rst:81 +#: library/asyncio-dev.rst:77 msgid "" "Almost all asyncio objects are not thread safe, which is typically not a " "problem unless there is code that works with them from outside of a Task or " @@ -146,18 +139,18 @@ msgid "" "API, the :meth:`loop.call_soon_threadsafe` method should be used, e.g.::" msgstr "" -#: library/asyncio-dev.rst:87 +#: library/asyncio-dev.rst:83 msgid "loop.call_soon_threadsafe(fut.cancel)" msgstr "" -#: library/asyncio-dev.rst:89 +#: library/asyncio-dev.rst:85 msgid "" "To schedule a coroutine object from a different OS thread, the :func:" "`run_coroutine_threadsafe` function should be used. It returns a :class:" "`concurrent.futures.Future` to access the result::" msgstr "" -#: library/asyncio-dev.rst:93 +#: library/asyncio-dev.rst:89 msgid "" "async def coro_func():\n" " return await asyncio.sleep(1, 42)\n" @@ -169,11 +162,11 @@ msgid "" "result = future.result()" msgstr "" -#: library/asyncio-dev.rst:102 +#: library/asyncio-dev.rst:98 msgid "To handle signals the event loop must be run in the main thread." msgstr "" -#: library/asyncio-dev.rst:105 +#: library/asyncio-dev.rst:101 msgid "" "The :meth:`loop.run_in_executor` method can be used with a :class:" "`concurrent.futures.ThreadPoolExecutor` or :class:`~concurrent.futures." @@ -181,7 +174,7 @@ msgid "" "without blocking the OS thread that the event loop runs in." msgstr "" -#: library/asyncio-dev.rst:111 +#: library/asyncio-dev.rst:107 msgid "" "There is currently no way to schedule coroutines or callbacks directly from " "a different process (such as one started with :mod:`multiprocessing`). The :" @@ -194,18 +187,18 @@ msgid "" "different process." msgstr "" -#: library/asyncio-dev.rst:125 +#: library/asyncio-dev.rst:121 msgid "Running Blocking Code" msgstr "" -#: library/asyncio-dev.rst:127 +#: library/asyncio-dev.rst:123 msgid "" "Blocking (CPU-bound) code should not be called directly. For example, if a " "function performs a CPU-intensive calculation for 1 second, all concurrent " "asyncio Tasks and IO operations would be delayed by 1 second." msgstr "" -#: library/asyncio-dev.rst:132 +#: library/asyncio-dev.rst:128 msgid "" "An executor can be used to run a task in a different thread, including in a " "different interpreter, or even in a different process to avoid blocking the " @@ -213,45 +206,45 @@ msgid "" "for more details." msgstr "" -#: library/asyncio-dev.rst:142 +#: library/asyncio-dev.rst:138 msgid "Logging" msgstr "" -#: library/asyncio-dev.rst:144 +#: library/asyncio-dev.rst:140 msgid "" "asyncio uses the :mod:`logging` module and all logging is performed via the " "``\"asyncio\"`` logger." msgstr "" -#: library/asyncio-dev.rst:147 +#: library/asyncio-dev.rst:143 msgid "" "The default log level is :py:const:`logging.INFO`, which can be easily " "adjusted::" msgstr "" -#: library/asyncio-dev.rst:150 +#: library/asyncio-dev.rst:146 msgid "logging.getLogger(\"asyncio\").setLevel(logging.WARNING)" msgstr "" -#: library/asyncio-dev.rst:153 +#: library/asyncio-dev.rst:149 msgid "" "Network logging can block the event loop. It is recommended to use a " "separate thread for handling logs or use non-blocking IO. For example, see :" "ref:`blocking-handlers`." msgstr "" -#: library/asyncio-dev.rst:161 +#: library/asyncio-dev.rst:157 msgid "Detect never-awaited coroutines" msgstr "" -#: library/asyncio-dev.rst:163 +#: library/asyncio-dev.rst:159 msgid "" "When a coroutine function is called, but not awaited (e.g. ``coro()`` " "instead of ``await coro()``) or the coroutine is not scheduled with :meth:" "`asyncio.create_task`, asyncio will emit a :exc:`RuntimeWarning`::" msgstr "" -#: library/asyncio-dev.rst:168 +#: library/asyncio-dev.rst:164 msgid "" "import asyncio\n" "\n" @@ -264,21 +257,21 @@ msgid "" "asyncio.run(main())" msgstr "" -#: library/asyncio-dev.rst:223 +#: library/asyncio-dev.rst:219 msgid "Output::" msgstr "" -#: library/asyncio-dev.rst:180 +#: library/asyncio-dev.rst:176 msgid "" "test.py:7: RuntimeWarning: coroutine 'test' was never awaited\n" " test()" msgstr "" -#: library/asyncio-dev.rst:239 +#: library/asyncio-dev.rst:235 msgid "Output in debug mode::" msgstr "" -#: library/asyncio-dev.rst:185 +#: library/asyncio-dev.rst:181 msgid "" "test.py:7: RuntimeWarning: coroutine 'test' was never awaited\n" "Coroutine created at (most recent call last)\n" @@ -292,23 +285,23 @@ msgid "" " test()" msgstr "" -#: library/asyncio-dev.rst:196 +#: library/asyncio-dev.rst:192 msgid "" "The usual fix is to either await the coroutine or call the :meth:`asyncio." "create_task` function::" msgstr "" -#: library/asyncio-dev.rst:199 +#: library/asyncio-dev.rst:195 msgid "" "async def main():\n" " await test()" msgstr "" -#: library/asyncio-dev.rst:204 +#: library/asyncio-dev.rst:200 msgid "Detect never-retrieved exceptions" msgstr "" -#: library/asyncio-dev.rst:206 +#: library/asyncio-dev.rst:202 msgid "" "If a :meth:`Future.set_exception` is called but the Future object is never " "awaited on, the exception would never be propagated to the user code. In " @@ -316,11 +309,11 @@ msgid "" "garbage collected." msgstr "" -#: library/asyncio-dev.rst:211 +#: library/asyncio-dev.rst:207 msgid "Example of an unhandled exception::" msgstr "" -#: library/asyncio-dev.rst:213 +#: library/asyncio-dev.rst:209 msgid "" "import asyncio\n" "\n" @@ -333,7 +326,7 @@ msgid "" "asyncio.run(main())" msgstr "" -#: library/asyncio-dev.rst:225 +#: library/asyncio-dev.rst:221 msgid "" "Task exception was never retrieved\n" "future: \n" @@ -345,17 +338,17 @@ msgid "" "Exception: not consumed" msgstr "" -#: library/asyncio-dev.rst:234 +#: library/asyncio-dev.rst:230 msgid "" ":ref:`Enable the debug mode ` to get the traceback where " "the task was created::" msgstr "" -#: library/asyncio-dev.rst:237 +#: library/asyncio-dev.rst:233 msgid "asyncio.run(main(), debug=True)" msgstr "" -#: library/asyncio-dev.rst:241 +#: library/asyncio-dev.rst:237 msgid "" "Task exception was never retrieved\n" "future: \n" diff --git a/library/asyncio-eventloop.po b/library/asyncio-eventloop.po index b3698af4..8a352087 100644 --- a/library/asyncio-eventloop.po +++ b/library/asyncio-eventloop.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -259,8 +259,8 @@ msgid "" "used." msgstr "" -#: library/asyncio-eventloop.rst:183 library/asyncio-eventloop.rst:1315 -#: library/asyncio-eventloop.rst:1771 +#: library/asyncio-eventloop.rst:183 library/asyncio-eventloop.rst:1336 +#: library/asyncio-eventloop.rst:1792 msgid "Example::" msgstr "" @@ -501,18 +501,25 @@ msgstr "" #: library/asyncio-eventloop.rst:373 msgid "" +"The full function signature is largely the same as that of the :class:`Task` " +"constructor (or factory) - all of the keyword arguments to this function are " +"passed through to that interface." +msgstr "" + +#: library/asyncio-eventloop.rst:377 +msgid "" "If the *name* argument is provided and not ``None``, it is set as the name " "of the task using :meth:`Task.set_name`." msgstr "" -#: library/asyncio-eventloop.rst:376 +#: library/asyncio-eventloop.rst:380 msgid "" "An optional keyword-only *context* argument allows specifying a custom :" "class:`contextvars.Context` for the *coro* to run in. The current context " "copy is created when no *context* is provided." msgstr "" -#: library/asyncio-eventloop.rst:380 +#: library/asyncio-eventloop.rst:384 msgid "" "An optional keyword-only *eager_start* argument allows specifying if the " "task should execute eagerly during the call to create_task, or be scheduled " @@ -520,23 +527,38 @@ msgid "" "set_task_factory` will be used." msgstr "" -#: library/asyncio-eventloop.rst:385 +#: library/asyncio-eventloop.rst:389 msgid "Added the *name* parameter." msgstr "" -#: library/asyncio-eventloop.rst:388 +#: library/asyncio-eventloop.rst:392 msgid "Added the *context* parameter." msgstr "" -#: library/asyncio-eventloop.rst:391 -msgid "Added the *eager_start* parameter." +#: library/asyncio-eventloop.rst:395 +msgid "" +"Added ``kwargs`` which passes on arbitrary extra parameters, including " +"``name`` and ``context``." +msgstr "" + +#: library/asyncio-eventloop.rst:398 +msgid "" +"Rolled back the change that passes on *name* and *context* (if it is None), " +"while still passing on other arbitrary keyword arguments (to avoid breaking " +"backwards compatibility with 3.13.3)." msgstr "" -#: library/asyncio-eventloop.rst:396 +#: library/asyncio-eventloop.rst:402 +msgid "" +"All *kwargs* are now passed on. The *eager_start* parameter works with eager " +"task factories." +msgstr "" + +#: library/asyncio-eventloop.rst:407 msgid "Set a task factory that will be used by :meth:`loop.create_task`." msgstr "" -#: library/asyncio-eventloop.rst:399 +#: library/asyncio-eventloop.rst:410 msgid "" "If *factory* is ``None`` the default task factory will be set. Otherwise, " "*factory* must be a *callable* with the signature matching ``(loop, coro, " @@ -545,80 +567,96 @@ msgid "" "return a :class:`asyncio.Task`-compatible object." msgstr "" -#: library/asyncio-eventloop.rst:407 +#: library/asyncio-eventloop.rst:416 +msgid "Required that all *kwargs* are passed on to :class:`asyncio.Task`." +msgstr "" + +#: library/asyncio-eventloop.rst:419 +msgid "" +"*name* is no longer passed to task factories. *context* is no longer passed " +"to task factories if it is ``None``." +msgstr "" + +#: library/asyncio-eventloop.rst:423 +msgid "" +"*name* and *context* are now unconditionally passed on to task factories " +"again." +msgstr "" + +#: library/asyncio-eventloop.rst:428 msgid "Return a task factory or ``None`` if the default one is in use." msgstr "" -#: library/asyncio-eventloop.rst:411 +#: library/asyncio-eventloop.rst:432 msgid "Opening network connections" msgstr "" -#: library/asyncio-eventloop.rst:423 +#: library/asyncio-eventloop.rst:444 msgid "" "Open a streaming transport connection to a given address specified by *host* " "and *port*." msgstr "" -#: library/asyncio-eventloop.rst:426 +#: library/asyncio-eventloop.rst:447 msgid "" "The socket family can be either :py:const:`~socket.AF_INET` or :py:const:" "`~socket.AF_INET6` depending on *host* (or the *family* argument, if " "provided)." msgstr "" -#: library/asyncio-eventloop.rst:430 +#: library/asyncio-eventloop.rst:451 msgid "The socket type will be :py:const:`~socket.SOCK_STREAM`." msgstr "" -#: library/asyncio-eventloop.rst:432 library/asyncio-eventloop.rst:1225 -#: library/asyncio-eventloop.rst:1242 +#: library/asyncio-eventloop.rst:453 library/asyncio-eventloop.rst:1246 +#: library/asyncio-eventloop.rst:1263 msgid "" "*protocol_factory* must be a callable returning an :ref:`asyncio protocol " "` implementation." msgstr "" -#: library/asyncio-eventloop.rst:435 +#: library/asyncio-eventloop.rst:456 msgid "" "This method will try to establish the connection in the background. When " "successful, it returns a ``(transport, protocol)`` pair." msgstr "" -#: library/asyncio-eventloop.rst:438 +#: library/asyncio-eventloop.rst:459 msgid "The chronological synopsis of the underlying operation is as follows:" msgstr "" -#: library/asyncio-eventloop.rst:440 +#: library/asyncio-eventloop.rst:461 msgid "" "The connection is established and a :ref:`transport ` is " "created for it." msgstr "" -#: library/asyncio-eventloop.rst:443 +#: library/asyncio-eventloop.rst:464 msgid "" "*protocol_factory* is called without arguments and is expected to return a :" "ref:`protocol ` instance." msgstr "" -#: library/asyncio-eventloop.rst:446 +#: library/asyncio-eventloop.rst:467 msgid "" "The protocol instance is coupled with the transport by calling its :meth:" "`~BaseProtocol.connection_made` method." msgstr "" -#: library/asyncio-eventloop.rst:449 +#: library/asyncio-eventloop.rst:470 msgid "A ``(transport, protocol)`` tuple is returned on success." msgstr "" -#: library/asyncio-eventloop.rst:451 +#: library/asyncio-eventloop.rst:472 msgid "" "The created transport is an implementation-dependent bidirectional stream." msgstr "" -#: library/asyncio-eventloop.rst:454 library/asyncio-eventloop.rst:587 +#: library/asyncio-eventloop.rst:475 library/asyncio-eventloop.rst:608 msgid "Other arguments:" msgstr "" -#: library/asyncio-eventloop.rst:456 +#: library/asyncio-eventloop.rst:477 msgid "" "*ssl*: if given and not false, a SSL/TLS transport is created (by default a " "plain TCP transport is created). If *ssl* is a :class:`ssl.SSLContext` " @@ -627,11 +665,11 @@ msgid "" "is used." msgstr "" -#: library/asyncio-eventloop.rst:462 +#: library/asyncio-eventloop.rst:483 msgid ":ref:`SSL/TLS security considerations `" msgstr "" -#: library/asyncio-eventloop.rst:464 +#: library/asyncio-eventloop.rst:485 msgid "" "*server_hostname* sets or overrides the hostname that the target server's " "certificate will be matched against. Should only be passed if *ssl* is not " @@ -642,7 +680,7 @@ msgid "" "potential man-in-the-middle attacks)." msgstr "" -#: library/asyncio-eventloop.rst:472 +#: library/asyncio-eventloop.rst:493 msgid "" "*family*, *proto*, *flags* are the optional address family, protocol and " "flags to be passed through to getaddrinfo() for *host* resolution. If given, " @@ -650,7 +688,7 @@ msgid "" "constants." msgstr "" -#: library/asyncio-eventloop.rst:477 +#: library/asyncio-eventloop.rst:498 msgid "" "*happy_eyeballs_delay*, if given, enables Happy Eyeballs for this " "connection. It should be a floating-point number representing the amount of " @@ -660,7 +698,7 @@ msgid "" "the RFC is ``0.25`` (250 milliseconds)." msgstr "" -#: library/asyncio-eventloop.rst:485 +#: library/asyncio-eventloop.rst:506 msgid "" "*interleave* controls address reordering when a host name resolves to " "multiple IP addresses. If ``0`` or unspecified, no reordering is done, and " @@ -671,7 +709,7 @@ msgid "" "*happy_eyeballs_delay* is not specified, and ``1`` if it is." msgstr "" -#: library/asyncio-eventloop.rst:494 +#: library/asyncio-eventloop.rst:515 msgid "" "*sock*, if given, should be an existing, already connected :class:`socket." "socket` object to be used by the transport. If *sock* is given, none of " @@ -679,37 +717,37 @@ msgid "" "*interleave* and *local_addr* should be specified." msgstr "" -#: library/asyncio-eventloop.rst:502 library/asyncio-eventloop.rst:618 -#: library/asyncio-eventloop.rst:866 +#: library/asyncio-eventloop.rst:523 library/asyncio-eventloop.rst:639 +#: library/asyncio-eventloop.rst:887 msgid "" "The *sock* argument transfers ownership of the socket to the transport " "created. To close the socket, call the transport's :meth:`~asyncio." "BaseTransport.close` method." msgstr "" -#: library/asyncio-eventloop.rst:506 +#: library/asyncio-eventloop.rst:527 msgid "" "*local_addr*, if given, is a ``(local_host, local_port)`` tuple used to bind " "the socket locally. The *local_host* and *local_port* are looked up using " "``getaddrinfo()``, similarly to *host* and *port*." msgstr "" -#: library/asyncio-eventloop.rst:510 library/asyncio-eventloop.rst:962 +#: library/asyncio-eventloop.rst:531 library/asyncio-eventloop.rst:983 msgid "" "*ssl_handshake_timeout* is (for a TLS connection) the time in seconds to " "wait for the TLS handshake to complete before aborting the connection. " "``60.0`` seconds if ``None`` (default)." msgstr "" -#: library/asyncio-eventloop.rst:514 library/asyncio-eventloop.rst:773 -#: library/asyncio-eventloop.rst:877 library/asyncio-eventloop.rst:966 +#: library/asyncio-eventloop.rst:535 library/asyncio-eventloop.rst:794 +#: library/asyncio-eventloop.rst:898 library/asyncio-eventloop.rst:987 msgid "" "*ssl_shutdown_timeout* is the time in seconds to wait for the SSL shutdown " "to complete before aborting the connection. ``30.0`` seconds if ``None`` " "(default)." msgstr "" -#: library/asyncio-eventloop.rst:518 +#: library/asyncio-eventloop.rst:539 msgid "" "*all_errors* determines what exceptions are raised when a connection cannot " "be created. By default, only a single ``Exception`` is raised: the first " @@ -719,25 +757,25 @@ msgid "" "(even if there is only one)." msgstr "" -#: library/asyncio-eventloop.rst:528 library/asyncio-eventloop.rst:785 +#: library/asyncio-eventloop.rst:549 library/asyncio-eventloop.rst:806 msgid "Added support for SSL/TLS in :class:`ProactorEventLoop`." msgstr "" -#: library/asyncio-eventloop.rst:532 +#: library/asyncio-eventloop.rst:553 msgid "" "The socket option :ref:`socket.TCP_NODELAY ` is set " "by default for all TCP connections." msgstr "" -#: library/asyncio-eventloop.rst:537 library/asyncio-eventloop.rst:887 +#: library/asyncio-eventloop.rst:558 library/asyncio-eventloop.rst:908 msgid "Added the *ssl_handshake_timeout* parameter." msgstr "" -#: library/asyncio-eventloop.rst:541 +#: library/asyncio-eventloop.rst:562 msgid "Added the *happy_eyeballs_delay* and *interleave* parameters." msgstr "" -#: library/asyncio-eventloop.rst:543 +#: library/asyncio-eventloop.rst:564 msgid "" "Happy Eyeballs Algorithm: Success with Dual-Stack Hosts. When a server's " "IPv4 path and protocol are working, but the server's IPv6 path and protocol " @@ -748,68 +786,68 @@ msgid "" "visible delay and provides an algorithm." msgstr "" -#: library/asyncio-eventloop.rst:552 +#: library/asyncio-eventloop.rst:573 msgid "For more information: https://datatracker.ietf.org/doc/html/rfc6555" msgstr "" -#: library/asyncio-eventloop.rst:556 library/asyncio-eventloop.rst:682 -#: library/asyncio-eventloop.rst:799 library/asyncio-eventloop.rst:839 -#: library/asyncio-eventloop.rst:891 library/asyncio-eventloop.rst:974 +#: library/asyncio-eventloop.rst:577 library/asyncio-eventloop.rst:703 +#: library/asyncio-eventloop.rst:820 library/asyncio-eventloop.rst:860 +#: library/asyncio-eventloop.rst:912 library/asyncio-eventloop.rst:995 msgid "Added the *ssl_shutdown_timeout* parameter." msgstr "" -#: library/asyncio-eventloop.rst:558 +#: library/asyncio-eventloop.rst:579 msgid "*all_errors* was added." msgstr "" -#: library/asyncio-eventloop.rst:563 +#: library/asyncio-eventloop.rst:584 msgid "" "The :func:`open_connection` function is a high-level alternative API. It " "returns a pair of (:class:`StreamReader`, :class:`StreamWriter`) that can be " "used directly in async/await code." msgstr "" -#: library/asyncio-eventloop.rst:574 +#: library/asyncio-eventloop.rst:595 msgid "Create a datagram connection." msgstr "" -#: library/asyncio-eventloop.rst:576 +#: library/asyncio-eventloop.rst:597 msgid "" "The socket family can be either :py:const:`~socket.AF_INET`, :py:const:" "`~socket.AF_INET6`, or :py:const:`~socket.AF_UNIX`, depending on *host* (or " "the *family* argument, if provided)." msgstr "" -#: library/asyncio-eventloop.rst:580 +#: library/asyncio-eventloop.rst:601 msgid "The socket type will be :py:const:`~socket.SOCK_DGRAM`." msgstr "" -#: library/asyncio-eventloop.rst:582 library/asyncio-eventloop.rst:709 -#: library/asyncio-eventloop.rst:858 +#: library/asyncio-eventloop.rst:603 library/asyncio-eventloop.rst:730 +#: library/asyncio-eventloop.rst:879 msgid "" "*protocol_factory* must be a callable returning a :ref:`protocol ` implementation." msgstr "" -#: library/asyncio-eventloop.rst:585 library/asyncio-eventloop.rst:664 +#: library/asyncio-eventloop.rst:606 library/asyncio-eventloop.rst:685 msgid "A tuple of ``(transport, protocol)`` is returned on success." msgstr "" -#: library/asyncio-eventloop.rst:589 +#: library/asyncio-eventloop.rst:610 msgid "" "*local_addr*, if given, is a ``(local_host, local_port)`` tuple used to bind " "the socket locally. The *local_host* and *local_port* are looked up using :" "meth:`getaddrinfo`." msgstr "" -#: library/asyncio-eventloop.rst:593 +#: library/asyncio-eventloop.rst:614 msgid "" "*remote_addr*, if given, is a ``(remote_host, remote_port)`` tuple used to " "connect the socket to a remote address. The *remote_host* and *remote_port* " "are looked up using :meth:`getaddrinfo`." msgstr "" -#: library/asyncio-eventloop.rst:597 +#: library/asyncio-eventloop.rst:618 msgid "" "*family*, *proto*, *flags* are the optional address family, protocol and " "flags to be passed through to :meth:`getaddrinfo` for *host* resolution. If " @@ -817,7 +855,7 @@ msgid "" "module constants." msgstr "" -#: library/asyncio-eventloop.rst:602 +#: library/asyncio-eventloop.rst:623 msgid "" "*reuse_port* tells the kernel to allow this endpoint to be bound to the same " "port as other existing endpoints are bound to, so long as they all set this " @@ -826,13 +864,13 @@ msgid "" "is not defined then this capability is unsupported." msgstr "" -#: library/asyncio-eventloop.rst:608 +#: library/asyncio-eventloop.rst:629 msgid "" "*allow_broadcast* tells the kernel to allow this endpoint to send messages " "to the broadcast address." msgstr "" -#: library/asyncio-eventloop.rst:611 +#: library/asyncio-eventloop.rst:632 msgid "" "*sock* can optionally be specified in order to use a preexisting, already " "connected, :class:`socket.socket` object to be used by the transport. If " @@ -840,37 +878,37 @@ msgid "" "`None`)." msgstr "" -#: library/asyncio-eventloop.rst:622 +#: library/asyncio-eventloop.rst:643 msgid "" "See :ref:`UDP echo client protocol ` and :" "ref:`UDP echo server protocol ` examples." msgstr "" -#: library/asyncio-eventloop.rst:625 +#: library/asyncio-eventloop.rst:646 msgid "" "The *family*, *proto*, *flags*, *reuse_address*, *reuse_port*, " "*allow_broadcast*, and *sock* parameters were added." msgstr "" -#: library/asyncio-eventloop.rst:629 +#: library/asyncio-eventloop.rst:650 msgid "Added support for Windows." msgstr "" -#: library/asyncio-eventloop.rst:632 +#: library/asyncio-eventloop.rst:653 msgid "" "The *reuse_address* parameter is no longer supported, as using :ref:`socket." "SO_REUSEADDR ` poses a significant security concern " "for UDP. Explicitly passing ``reuse_address=True`` will raise an exception." msgstr "" -#: library/asyncio-eventloop.rst:638 +#: library/asyncio-eventloop.rst:659 msgid "" "When multiple processes with differing UIDs assign sockets to an identical " "UDP socket address with ``SO_REUSEADDR``, incoming packets can become " "randomly distributed among the sockets." msgstr "" -#: library/asyncio-eventloop.rst:642 +#: library/asyncio-eventloop.rst:663 msgid "" "For supported platforms, *reuse_port* can be used as a replacement for " "similar functionality. With *reuse_port*, :ref:`socket.SO_REUSEPORT ` is set by default " "for all TCP connections." msgstr "" -#: library/asyncio-eventloop.rst:803 +#: library/asyncio-eventloop.rst:824 msgid "" "The :func:`start_server` function is a higher-level alternative API that " "returns a pair of :class:`StreamReader` and :class:`StreamWriter` that can " "be used in an async/await code." msgstr "" -#: library/asyncio-eventloop.rst:815 +#: library/asyncio-eventloop.rst:836 msgid "" "Similar to :meth:`loop.create_server` but works with the :py:const:`~socket." "AF_UNIX` socket family." msgstr "" -#: library/asyncio-eventloop.rst:818 +#: library/asyncio-eventloop.rst:839 msgid "" "*path* is the name of a Unix domain socket, and is required, unless a *sock* " "argument is provided. Abstract Unix sockets, :class:`str`, :class:`bytes`, " "and :class:`~pathlib.Path` paths are supported." msgstr "" -#: library/asyncio-eventloop.rst:823 +#: library/asyncio-eventloop.rst:844 msgid "" "If *cleanup_socket* is true then the Unix socket will automatically be " "removed from the filesystem when the server is closed, unless the socket has " "been replaced after the server has been created." msgstr "" -#: library/asyncio-eventloop.rst:827 +#: library/asyncio-eventloop.rst:848 msgid "" "See the documentation of the :meth:`loop.create_server` method for " "information about arguments to this method." msgstr "" -#: library/asyncio-eventloop.rst:834 +#: library/asyncio-eventloop.rst:855 msgid "" "Added the *ssl_handshake_timeout* and *start_serving* parameters. The *path* " "parameter can now be a :class:`~pathlib.Path` object." msgstr "" -#: library/asyncio-eventloop.rst:843 +#: library/asyncio-eventloop.rst:864 msgid "Added the *cleanup_socket* parameter." msgstr "" -#: library/asyncio-eventloop.rst:851 +#: library/asyncio-eventloop.rst:872 msgid "Wrap an already accepted connection into a transport/protocol pair." msgstr "" -#: library/asyncio-eventloop.rst:853 +#: library/asyncio-eventloop.rst:874 msgid "" "This method can be used by servers that accept connections outside of " "asyncio but that use asyncio to handle them." msgstr "" -#: library/asyncio-eventloop.rst:856 library/asyncio-eventloop.rst:948 +#: library/asyncio-eventloop.rst:877 library/asyncio-eventloop.rst:969 msgid "Parameters:" msgstr "" -#: library/asyncio-eventloop.rst:861 +#: library/asyncio-eventloop.rst:882 msgid "" "*sock* is a preexisting socket object returned from :meth:`socket.accept " "`." msgstr "" -#: library/asyncio-eventloop.rst:870 +#: library/asyncio-eventloop.rst:891 msgid "" "*ssl* can be set to an :class:`~ssl.SSLContext` to enable SSL over the " "accepted connections." msgstr "" -#: library/asyncio-eventloop.rst:873 +#: library/asyncio-eventloop.rst:894 msgid "" "*ssl_handshake_timeout* is (for an SSL connection) the time in seconds to " "wait for the SSL handshake to complete before aborting the connection. " "``60.0`` seconds if ``None`` (default)." msgstr "" -#: library/asyncio-eventloop.rst:881 +#: library/asyncio-eventloop.rst:902 msgid "Returns a ``(transport, protocol)`` pair." msgstr "" -#: library/asyncio-eventloop.rst:895 +#: library/asyncio-eventloop.rst:916 msgid "Transferring files" msgstr "" -#: library/asyncio-eventloop.rst:901 +#: library/asyncio-eventloop.rst:922 msgid "" "Send a *file* over a *transport*. Return the total number of bytes sent." msgstr "" -#: library/asyncio-eventloop.rst:904 +#: library/asyncio-eventloop.rst:925 msgid "The method uses high-performance :meth:`os.sendfile` if available." msgstr "" -#: library/asyncio-eventloop.rst:906 +#: library/asyncio-eventloop.rst:927 msgid "*file* must be a regular file object opened in binary mode." msgstr "" -#: library/asyncio-eventloop.rst:908 library/asyncio-eventloop.rst:1169 +#: library/asyncio-eventloop.rst:929 library/asyncio-eventloop.rst:1190 msgid "" "*offset* tells from where to start reading the file. If specified, *count* " "is the total number of bytes to transmit as opposed to sending the file " @@ -1161,35 +1199,35 @@ msgid "" "obtain the actual number of bytes sent." msgstr "" -#: library/asyncio-eventloop.rst:915 +#: library/asyncio-eventloop.rst:936 msgid "" "*fallback* set to ``True`` makes asyncio to manually read and send the file " "when the platform does not support the sendfile system call (e.g. Windows or " "SSL socket on Unix)." msgstr "" -#: library/asyncio-eventloop.rst:919 +#: library/asyncio-eventloop.rst:940 msgid "" "Raise :exc:`SendfileNotAvailableError` if the system does not support the " "*sendfile* syscall and *fallback* is ``False``." msgstr "" -#: library/asyncio-eventloop.rst:926 +#: library/asyncio-eventloop.rst:947 msgid "TLS Upgrade" msgstr "" -#: library/asyncio-eventloop.rst:934 +#: library/asyncio-eventloop.rst:955 msgid "Upgrade an existing transport-based connection to TLS." msgstr "" -#: library/asyncio-eventloop.rst:936 +#: library/asyncio-eventloop.rst:957 msgid "" "Create a TLS coder/decoder instance and insert it between the *transport* " "and the *protocol*. The coder/decoder implements both *transport*-facing " "protocol and *protocol*-facing transport." msgstr "" -#: library/asyncio-eventloop.rst:940 +#: library/asyncio-eventloop.rst:961 msgid "" "Return the created two-interface instance. After *await*, the *protocol* " "must stop using the original *transport* and communicate with the returned " @@ -1197,85 +1235,85 @@ msgid "" "exchanges extra TLS session packets with *transport*." msgstr "" -#: library/asyncio-eventloop.rst:945 +#: library/asyncio-eventloop.rst:966 msgid "" "In some situations (e.g. when the passed transport is already closing) this " "may return ``None``." msgstr "" -#: library/asyncio-eventloop.rst:950 +#: library/asyncio-eventloop.rst:971 msgid "" "*transport* and *protocol* instances that methods like :meth:`~loop." "create_server` and :meth:`~loop.create_connection` return." msgstr "" -#: library/asyncio-eventloop.rst:954 +#: library/asyncio-eventloop.rst:975 msgid "*sslcontext*: a configured instance of :class:`~ssl.SSLContext`." msgstr "" -#: library/asyncio-eventloop.rst:956 +#: library/asyncio-eventloop.rst:977 msgid "" "*server_side* pass ``True`` when a server-side connection is being upgraded " "(like the one created by :meth:`~loop.create_server`)." msgstr "" -#: library/asyncio-eventloop.rst:959 +#: library/asyncio-eventloop.rst:980 msgid "" "*server_hostname*: sets or overrides the host name that the target server's " "certificate will be matched against." msgstr "" -#: library/asyncio-eventloop.rst:979 +#: library/asyncio-eventloop.rst:1000 msgid "Watching file descriptors" msgstr "" -#: library/asyncio-eventloop.rst:983 +#: library/asyncio-eventloop.rst:1004 msgid "" "Start monitoring the *fd* file descriptor for read availability and invoke " "*callback* with the specified arguments once *fd* is available for reading." msgstr "" -#: library/asyncio-eventloop.rst:987 library/asyncio-eventloop.rst:1001 +#: library/asyncio-eventloop.rst:1008 library/asyncio-eventloop.rst:1022 msgid "" "Any preexisting callback registered for *fd* is cancelled and replaced by " "*callback*." msgstr "" -#: library/asyncio-eventloop.rst:992 +#: library/asyncio-eventloop.rst:1013 msgid "" "Stop monitoring the *fd* file descriptor for read availability. Returns " "``True`` if *fd* was previously being monitored for reads." msgstr "" -#: library/asyncio-eventloop.rst:997 +#: library/asyncio-eventloop.rst:1018 msgid "" "Start monitoring the *fd* file descriptor for write availability and invoke " "*callback* with the specified arguments once *fd* is available for writing." msgstr "" -#: library/asyncio-eventloop.rst:1004 library/asyncio-eventloop.rst:1282 +#: library/asyncio-eventloop.rst:1025 library/asyncio-eventloop.rst:1303 msgid "" "Use :func:`functools.partial` :ref:`to pass keyword arguments ` to *callback*." msgstr "" -#: library/asyncio-eventloop.rst:1009 +#: library/asyncio-eventloop.rst:1030 msgid "" "Stop monitoring the *fd* file descriptor for write availability. Returns " "``True`` if *fd* was previously being monitored for writes." msgstr "" -#: library/asyncio-eventloop.rst:1012 +#: library/asyncio-eventloop.rst:1033 msgid "" "See also :ref:`Platform Support ` section for some " "limitations of these methods." msgstr "" -#: library/asyncio-eventloop.rst:1017 +#: library/asyncio-eventloop.rst:1038 msgid "Working with socket objects directly" msgstr "" -#: library/asyncio-eventloop.rst:1019 +#: library/asyncio-eventloop.rst:1040 msgid "" "In general, protocol implementations that use transport-based APIs such as :" "meth:`loop.create_connection` and :meth:`loop.create_server` are faster than " @@ -1284,68 +1322,68 @@ msgid "" "socket` objects directly is more convenient." msgstr "" -#: library/asyncio-eventloop.rst:1029 +#: library/asyncio-eventloop.rst:1050 msgid "" "Receive up to *nbytes* from *sock*. Asynchronous version of :meth:`socket." "recv() `." msgstr "" -#: library/asyncio-eventloop.rst:1032 +#: library/asyncio-eventloop.rst:1053 msgid "Return the received data as a bytes object." msgstr "" -#: library/asyncio-eventloop.rst:1034 library/asyncio-eventloop.rst:1049 -#: library/asyncio-eventloop.rst:1061 library/asyncio-eventloop.rst:1074 -#: library/asyncio-eventloop.rst:1090 library/asyncio-eventloop.rst:1106 -#: library/asyncio-eventloop.rst:1117 library/asyncio-eventloop.rst:1144 -#: library/asyncio-eventloop.rst:1183 +#: library/asyncio-eventloop.rst:1055 library/asyncio-eventloop.rst:1070 +#: library/asyncio-eventloop.rst:1082 library/asyncio-eventloop.rst:1095 +#: library/asyncio-eventloop.rst:1111 library/asyncio-eventloop.rst:1127 +#: library/asyncio-eventloop.rst:1138 library/asyncio-eventloop.rst:1165 +#: library/asyncio-eventloop.rst:1204 msgid "*sock* must be a non-blocking socket." msgstr "" -#: library/asyncio-eventloop.rst:1036 +#: library/asyncio-eventloop.rst:1057 msgid "" "Even though this method was always documented as a coroutine method, " "releases before Python 3.7 returned a :class:`Future`. Since Python 3.7 this " "is an ``async def`` method." msgstr "" -#: library/asyncio-eventloop.rst:1044 +#: library/asyncio-eventloop.rst:1065 msgid "" "Receive data from *sock* into the *buf* buffer. Modeled after the blocking :" "meth:`socket.recv_into() ` method." msgstr "" -#: library/asyncio-eventloop.rst:1047 +#: library/asyncio-eventloop.rst:1068 msgid "Return the number of bytes written to the buffer." msgstr "" -#: library/asyncio-eventloop.rst:1056 +#: library/asyncio-eventloop.rst:1077 msgid "" "Receive a datagram of up to *bufsize* from *sock*. Asynchronous version of :" "meth:`socket.recvfrom() `." msgstr "" -#: library/asyncio-eventloop.rst:1059 +#: library/asyncio-eventloop.rst:1080 msgid "Return a tuple of (received data, remote address)." msgstr "" -#: library/asyncio-eventloop.rst:1068 +#: library/asyncio-eventloop.rst:1089 msgid "" "Receive a datagram of up to *nbytes* from *sock* into *buf*. Asynchronous " "version of :meth:`socket.recvfrom_into() `." msgstr "" -#: library/asyncio-eventloop.rst:1072 +#: library/asyncio-eventloop.rst:1093 msgid "Return a tuple of (number of bytes received, remote address)." msgstr "" -#: library/asyncio-eventloop.rst:1081 +#: library/asyncio-eventloop.rst:1102 msgid "" "Send *data* to the *sock* socket. Asynchronous version of :meth:`socket." "sendall() `." msgstr "" -#: library/asyncio-eventloop.rst:1084 +#: library/asyncio-eventloop.rst:1105 msgid "" "This method continues to send to the socket until either all data in *data* " "has been sent or an error occurs. ``None`` is returned on success. On " @@ -1354,33 +1392,33 @@ msgid "" "the connection." msgstr "" -#: library/asyncio-eventloop.rst:1092 library/asyncio-eventloop.rst:1146 +#: library/asyncio-eventloop.rst:1113 library/asyncio-eventloop.rst:1167 msgid "" "Even though the method was always documented as a coroutine method, before " "Python 3.7 it returned a :class:`Future`. Since Python 3.7, this is an " "``async def`` method." msgstr "" -#: library/asyncio-eventloop.rst:1100 +#: library/asyncio-eventloop.rst:1121 msgid "" "Send a datagram from *sock* to *address*. Asynchronous version of :meth:" "`socket.sendto() `." msgstr "" -#: library/asyncio-eventloop.rst:1104 +#: library/asyncio-eventloop.rst:1125 msgid "Return the number of bytes sent." msgstr "" -#: library/asyncio-eventloop.rst:1113 +#: library/asyncio-eventloop.rst:1134 msgid "Connect *sock* to a remote socket at *address*." msgstr "" -#: library/asyncio-eventloop.rst:1115 +#: library/asyncio-eventloop.rst:1136 msgid "" "Asynchronous version of :meth:`socket.connect() `." msgstr "" -#: library/asyncio-eventloop.rst:1119 +#: library/asyncio-eventloop.rst:1140 msgid "" "``address`` no longer needs to be resolved. ``sock_connect`` will try to " "check if the *address* is already resolved by calling :func:`socket." @@ -1388,19 +1426,19 @@ msgid "" "*address*." msgstr "" -#: library/asyncio-eventloop.rst:1128 +#: library/asyncio-eventloop.rst:1149 msgid "" ":meth:`loop.create_connection` and :func:`asyncio.open_connection() " "`." msgstr "" -#: library/asyncio-eventloop.rst:1135 +#: library/asyncio-eventloop.rst:1156 msgid "" "Accept a connection. Modeled after the blocking :meth:`socket.accept() " "` method." msgstr "" -#: library/asyncio-eventloop.rst:1138 +#: library/asyncio-eventloop.rst:1159 msgid "" "The socket must be bound to an address and listening for connections. The " "return value is a pair ``(conn, address)`` where *conn* is a *new* socket " @@ -1408,57 +1446,57 @@ msgid "" "the address bound to the socket on the other end of the connection." msgstr "" -#: library/asyncio-eventloop.rst:1153 +#: library/asyncio-eventloop.rst:1174 msgid ":meth:`loop.create_server` and :func:`start_server`." msgstr "" -#: library/asyncio-eventloop.rst:1159 +#: library/asyncio-eventloop.rst:1180 msgid "" "Send a file using high-performance :mod:`os.sendfile` if possible. Return " "the total number of bytes sent." msgstr "" -#: library/asyncio-eventloop.rst:1162 +#: library/asyncio-eventloop.rst:1183 msgid "" "Asynchronous version of :meth:`socket.sendfile() `." msgstr "" -#: library/asyncio-eventloop.rst:1164 +#: library/asyncio-eventloop.rst:1185 msgid "" "*sock* must be a non-blocking :const:`socket.SOCK_STREAM` :class:`~socket." "socket`." msgstr "" -#: library/asyncio-eventloop.rst:1167 +#: library/asyncio-eventloop.rst:1188 msgid "*file* must be a regular file object open in binary mode." msgstr "" -#: library/asyncio-eventloop.rst:1176 +#: library/asyncio-eventloop.rst:1197 msgid "" "*fallback*, when set to ``True``, makes asyncio manually read and send the " "file when the platform does not support the sendfile syscall (e.g. Windows " "or SSL socket on Unix)." msgstr "" -#: library/asyncio-eventloop.rst:1180 +#: library/asyncio-eventloop.rst:1201 msgid "" "Raise :exc:`SendfileNotAvailableError` if the system does not support " "*sendfile* syscall and *fallback* is ``False``." msgstr "" -#: library/asyncio-eventloop.rst:1189 +#: library/asyncio-eventloop.rst:1210 msgid "DNS" msgstr "" -#: library/asyncio-eventloop.rst:1195 +#: library/asyncio-eventloop.rst:1216 msgid "Asynchronous version of :meth:`socket.getaddrinfo`." msgstr "" -#: library/asyncio-eventloop.rst:1200 +#: library/asyncio-eventloop.rst:1221 msgid "Asynchronous version of :meth:`socket.getnameinfo`." msgstr "" -#: library/asyncio-eventloop.rst:1203 +#: library/asyncio-eventloop.rst:1224 msgid "" "Both *getaddrinfo* and *getnameinfo* internally utilize their synchronous " "versions through the loop's default thread pool executor. When this executor " @@ -1468,7 +1506,7 @@ msgid "" "executor with a larger number of workers." msgstr "" -#: library/asyncio-eventloop.rst:1210 +#: library/asyncio-eventloop.rst:1231 msgid "" "Both *getaddrinfo* and *getnameinfo* methods were always documented to " "return a coroutine, but prior to Python 3.7 they were, in fact, returning :" @@ -1476,66 +1514,66 @@ msgid "" "coroutines." msgstr "" -#: library/asyncio-eventloop.rst:1218 +#: library/asyncio-eventloop.rst:1239 msgid "Working with pipes" msgstr "" -#: library/asyncio-eventloop.rst:1223 +#: library/asyncio-eventloop.rst:1244 msgid "Register the read end of *pipe* in the event loop." msgstr "" -#: library/asyncio-eventloop.rst:1228 +#: library/asyncio-eventloop.rst:1249 msgid "*pipe* is a :term:`file-like object `." msgstr "" -#: library/asyncio-eventloop.rst:1230 +#: library/asyncio-eventloop.rst:1251 msgid "" "Return pair ``(transport, protocol)``, where *transport* supports the :class:" "`ReadTransport` interface and *protocol* is an object instantiated by the " "*protocol_factory*." msgstr "" -#: library/asyncio-eventloop.rst:1234 library/asyncio-eventloop.rst:1251 +#: library/asyncio-eventloop.rst:1255 library/asyncio-eventloop.rst:1272 msgid "" "With :class:`SelectorEventLoop` event loop, the *pipe* is set to non-" "blocking mode." msgstr "" -#: library/asyncio-eventloop.rst:1240 +#: library/asyncio-eventloop.rst:1261 msgid "Register the write end of *pipe* in the event loop." msgstr "" -#: library/asyncio-eventloop.rst:1245 +#: library/asyncio-eventloop.rst:1266 msgid "*pipe* is :term:`file-like object `." msgstr "" -#: library/asyncio-eventloop.rst:1247 +#: library/asyncio-eventloop.rst:1268 msgid "" "Return pair ``(transport, protocol)``, where *transport* supports :class:" "`WriteTransport` interface and *protocol* is an object instantiated by the " "*protocol_factory*." msgstr "" -#: library/asyncio-eventloop.rst:1256 +#: library/asyncio-eventloop.rst:1277 msgid "" ":class:`SelectorEventLoop` does not support the above methods on Windows. " "Use :class:`ProactorEventLoop` instead for Windows." msgstr "" -#: library/asyncio-eventloop.rst:1261 +#: library/asyncio-eventloop.rst:1282 msgid "" "The :meth:`loop.subprocess_exec` and :meth:`loop.subprocess_shell` methods." msgstr "" -#: library/asyncio-eventloop.rst:1266 +#: library/asyncio-eventloop.rst:1287 msgid "Unix signals" msgstr "" -#: library/asyncio-eventloop.rst:1272 +#: library/asyncio-eventloop.rst:1293 msgid "Set *callback* as the handler for the *signum* signal." msgstr "" -#: library/asyncio-eventloop.rst:1274 +#: library/asyncio-eventloop.rst:1295 msgid "" "The callback will be invoked by *loop*, along with other queued callbacks " "and runnable coroutines of that event loop. Unlike signal handlers " @@ -1543,40 +1581,40 @@ msgid "" "function is allowed to interact with the event loop." msgstr "" -#: library/asyncio-eventloop.rst:1279 +#: library/asyncio-eventloop.rst:1300 msgid "" "Raise :exc:`ValueError` if the signal number is invalid or uncatchable. " "Raise :exc:`RuntimeError` if there is a problem setting up the handler." msgstr "" -#: library/asyncio-eventloop.rst:1285 +#: library/asyncio-eventloop.rst:1306 msgid "" "Like :func:`signal.signal`, this function must be invoked in the main thread." msgstr "" -#: library/asyncio-eventloop.rst:1290 +#: library/asyncio-eventloop.rst:1311 msgid "Remove the handler for the *sig* signal." msgstr "" -#: library/asyncio-eventloop.rst:1292 +#: library/asyncio-eventloop.rst:1313 msgid "" "Return ``True`` if the signal handler was removed, or ``False`` if no " "handler was set for the given signal." msgstr "" -#: library/asyncio-eventloop.rst:1299 +#: library/asyncio-eventloop.rst:1320 msgid "The :mod:`signal` module." msgstr "" -#: library/asyncio-eventloop.rst:1303 +#: library/asyncio-eventloop.rst:1324 msgid "Executing code in thread or process pools" msgstr "" -#: library/asyncio-eventloop.rst:1307 +#: library/asyncio-eventloop.rst:1328 msgid "Arrange for *func* to be called in the specified executor." msgstr "" -#: library/asyncio-eventloop.rst:1309 +#: library/asyncio-eventloop.rst:1330 msgid "" "The *executor* argument should be an :class:`concurrent.futures.Executor` " "instance. The default executor is used if *executor* is ``None``. The " @@ -1585,7 +1623,7 @@ msgid "" "and used by :func:`run_in_executor` if needed." msgstr "" -#: library/asyncio-eventloop.rst:1317 +#: library/asyncio-eventloop.rst:1338 msgid "" "import asyncio\n" "import concurrent.futures\n" @@ -1634,7 +1672,7 @@ msgid "" " asyncio.run(main())" msgstr "" -#: library/asyncio-eventloop.rst:1363 +#: library/asyncio-eventloop.rst:1384 msgid "" "Note that the entry point guard (``if __name__ == '__main__'``) is required " "for option 3 due to the peculiarities of :mod:`multiprocessing`, which is " @@ -1642,17 +1680,17 @@ msgid "" "importing of main module `." msgstr "" -#: library/asyncio-eventloop.rst:1368 +#: library/asyncio-eventloop.rst:1389 msgid "This method returns a :class:`asyncio.Future` object." msgstr "" -#: library/asyncio-eventloop.rst:1370 +#: library/asyncio-eventloop.rst:1391 msgid "" "Use :func:`functools.partial` :ref:`to pass keyword arguments ` to *func*." msgstr "" -#: library/asyncio-eventloop.rst:1373 +#: library/asyncio-eventloop.rst:1394 msgid "" ":meth:`loop.run_in_executor` no longer configures the ``max_workers`` of the " "thread pool executor it creates, instead leaving it up to the thread pool " @@ -1660,7 +1698,7 @@ msgid "" "default." msgstr "" -#: library/asyncio-eventloop.rst:1382 +#: library/asyncio-eventloop.rst:1403 msgid "" "Set *executor* as the default executor used by :meth:`run_in_executor`. " "*executor* must be an instance of :class:`~concurrent.futures." @@ -1668,25 +1706,25 @@ msgid "" "InterpreterPoolExecutor`." msgstr "" -#: library/asyncio-eventloop.rst:1387 +#: library/asyncio-eventloop.rst:1408 msgid "" "*executor* must be an instance of :class:`~concurrent.futures." "ThreadPoolExecutor`." msgstr "" -#: library/asyncio-eventloop.rst:1393 +#: library/asyncio-eventloop.rst:1414 msgid "Error Handling API" msgstr "" -#: library/asyncio-eventloop.rst:1395 +#: library/asyncio-eventloop.rst:1416 msgid "Allows customizing how exceptions are handled in the event loop." msgstr "" -#: library/asyncio-eventloop.rst:1399 +#: library/asyncio-eventloop.rst:1420 msgid "Set *handler* as the new event loop exception handler." msgstr "" -#: library/asyncio-eventloop.rst:1401 +#: library/asyncio-eventloop.rst:1422 msgid "" "If *handler* is ``None``, the default exception handler will be set. " "Otherwise, *handler* must be a callable with the signature matching ``(loop, " @@ -1695,190 +1733,190 @@ msgid "" "(see :meth:`call_exception_handler` documentation for details about context)." msgstr "" -#: library/asyncio-eventloop.rst:1409 +#: library/asyncio-eventloop.rst:1430 msgid "" "If the handler is called on behalf of a :class:`~asyncio.Task` or :class:" "`~asyncio.Handle`, it is run in the :class:`contextvars.Context` of that " "task or callback handle." msgstr "" -#: library/asyncio-eventloop.rst:1415 +#: library/asyncio-eventloop.rst:1436 msgid "" "The handler may be called in the :class:`~contextvars.Context` of the task " "or handle where the exception originated." msgstr "" -#: library/asyncio-eventloop.rst:1420 +#: library/asyncio-eventloop.rst:1441 msgid "" "Return the current exception handler, or ``None`` if no custom exception " "handler was set." msgstr "" -#: library/asyncio-eventloop.rst:1427 +#: library/asyncio-eventloop.rst:1448 msgid "Default exception handler." msgstr "" -#: library/asyncio-eventloop.rst:1429 +#: library/asyncio-eventloop.rst:1450 msgid "" "This is called when an exception occurs and no exception handler is set. " "This can be called by a custom exception handler that wants to defer to the " "default handler behavior." msgstr "" -#: library/asyncio-eventloop.rst:1433 +#: library/asyncio-eventloop.rst:1454 msgid "" "*context* parameter has the same meaning as in :meth:" "`call_exception_handler`." msgstr "" -#: library/asyncio-eventloop.rst:1438 +#: library/asyncio-eventloop.rst:1459 msgid "Call the current event loop exception handler." msgstr "" -#: library/asyncio-eventloop.rst:1440 +#: library/asyncio-eventloop.rst:1461 msgid "" "*context* is a ``dict`` object containing the following keys (new keys may " "be introduced in future Python versions):" msgstr "" -#: library/asyncio-eventloop.rst:1443 +#: library/asyncio-eventloop.rst:1464 msgid "'message': Error message;" msgstr "" -#: library/asyncio-eventloop.rst:1444 +#: library/asyncio-eventloop.rst:1465 msgid "'exception' (optional): Exception object;" msgstr "" -#: library/asyncio-eventloop.rst:1445 +#: library/asyncio-eventloop.rst:1466 msgid "'future' (optional): :class:`asyncio.Future` instance;" msgstr "" -#: library/asyncio-eventloop.rst:1446 +#: library/asyncio-eventloop.rst:1467 msgid "'task' (optional): :class:`asyncio.Task` instance;" msgstr "" -#: library/asyncio-eventloop.rst:1447 +#: library/asyncio-eventloop.rst:1468 msgid "'handle' (optional): :class:`asyncio.Handle` instance;" msgstr "" -#: library/asyncio-eventloop.rst:1448 +#: library/asyncio-eventloop.rst:1469 msgid "'protocol' (optional): :ref:`Protocol ` instance;" msgstr "" -#: library/asyncio-eventloop.rst:1449 +#: library/asyncio-eventloop.rst:1470 msgid "'transport' (optional): :ref:`Transport ` instance;" msgstr "" -#: library/asyncio-eventloop.rst:1450 +#: library/asyncio-eventloop.rst:1471 msgid "'socket' (optional): :class:`socket.socket` instance;" msgstr "" -#: library/asyncio-eventloop.rst:1451 +#: library/asyncio-eventloop.rst:1472 msgid "'source_traceback' (optional): Traceback of the source;" msgstr "" -#: library/asyncio-eventloop.rst:1452 +#: library/asyncio-eventloop.rst:1473 msgid "'handle_traceback' (optional): Traceback of the handle;" msgstr "" -#: library/asyncio-eventloop.rst:1453 +#: library/asyncio-eventloop.rst:1474 msgid "'asyncgen' (optional): Asynchronous generator that caused" msgstr "" -#: library/asyncio-eventloop.rst:1454 +#: library/asyncio-eventloop.rst:1475 msgid "the exception." msgstr "" -#: library/asyncio-eventloop.rst:1458 +#: library/asyncio-eventloop.rst:1479 msgid "" "This method should not be overloaded in subclassed event loops. For custom " "exception handling, use the :meth:`set_exception_handler` method." msgstr "" -#: library/asyncio-eventloop.rst:1463 +#: library/asyncio-eventloop.rst:1484 msgid "Enabling debug mode" msgstr "" -#: library/asyncio-eventloop.rst:1467 +#: library/asyncio-eventloop.rst:1488 msgid "Get the debug mode (:class:`bool`) of the event loop." msgstr "" -#: library/asyncio-eventloop.rst:1469 +#: library/asyncio-eventloop.rst:1490 msgid "" "The default value is ``True`` if the environment variable :envvar:" "`PYTHONASYNCIODEBUG` is set to a non-empty string, ``False`` otherwise." msgstr "" -#: library/asyncio-eventloop.rst:1475 +#: library/asyncio-eventloop.rst:1496 msgid "Set the debug mode of the event loop." msgstr "" -#: library/asyncio-eventloop.rst:1479 +#: library/asyncio-eventloop.rst:1500 msgid "" "The new :ref:`Python Development Mode ` can now also be used to " "enable the debug mode." msgstr "" -#: library/asyncio-eventloop.rst:1484 +#: library/asyncio-eventloop.rst:1505 msgid "" "This attribute can be used to set the minimum execution duration in seconds " "that is considered \"slow\". When debug mode is enabled, \"slow\" callbacks " "are logged." msgstr "" -#: library/asyncio-eventloop.rst:1488 +#: library/asyncio-eventloop.rst:1509 msgid "Default value is 100 milliseconds." msgstr "" -#: library/asyncio-eventloop.rst:1492 +#: library/asyncio-eventloop.rst:1513 msgid "The :ref:`debug mode of asyncio `." msgstr "" -#: library/asyncio-eventloop.rst:1496 +#: library/asyncio-eventloop.rst:1517 msgid "Running Subprocesses" msgstr "" -#: library/asyncio-eventloop.rst:1498 +#: library/asyncio-eventloop.rst:1519 msgid "" "Methods described in this subsections are low-level. In regular async/await " "code consider using the high-level :func:`asyncio.create_subprocess_shell` " "and :func:`asyncio.create_subprocess_exec` convenience functions instead." msgstr "" -#: library/asyncio-eventloop.rst:1505 +#: library/asyncio-eventloop.rst:1526 msgid "" "On Windows, the default event loop :class:`ProactorEventLoop` supports " "subprocesses, whereas :class:`SelectorEventLoop` does not. See :ref:" "`Subprocess Support on Windows ` for details." msgstr "" -#: library/asyncio-eventloop.rst:1517 +#: library/asyncio-eventloop.rst:1538 msgid "" "Create a subprocess from one or more string arguments specified by *args*." msgstr "" -#: library/asyncio-eventloop.rst:1520 +#: library/asyncio-eventloop.rst:1541 msgid "*args* must be a list of strings represented by:" msgstr "" -#: library/asyncio-eventloop.rst:1522 +#: library/asyncio-eventloop.rst:1543 msgid ":class:`str`;" msgstr "" -#: library/asyncio-eventloop.rst:1523 +#: library/asyncio-eventloop.rst:1544 msgid "" "or :class:`bytes`, encoded to the :ref:`filesystem encoding `." msgstr "" -#: library/asyncio-eventloop.rst:1526 +#: library/asyncio-eventloop.rst:1547 msgid "" "The first string specifies the program executable, and the remaining strings " "specify the arguments. Together, string arguments form the ``argv`` of the " "program." msgstr "" -#: library/asyncio-eventloop.rst:1530 +#: library/asyncio-eventloop.rst:1551 msgid "" "This is similar to the standard library :class:`subprocess.Popen` class " "called with ``shell=False`` and the list of strings passed as the first " @@ -1886,81 +1924,81 @@ msgid "" "which is list of strings, *subprocess_exec* takes multiple string arguments." msgstr "" -#: library/asyncio-eventloop.rst:1536 +#: library/asyncio-eventloop.rst:1557 msgid "" "The *protocol_factory* must be a callable returning a subclass of the :class:" "`asyncio.SubprocessProtocol` class." msgstr "" -#: library/asyncio-eventloop.rst:1539 +#: library/asyncio-eventloop.rst:1560 msgid "Other parameters:" msgstr "" -#: library/asyncio-eventloop.rst:1541 +#: library/asyncio-eventloop.rst:1562 msgid "*stdin* can be any of these:" msgstr "" -#: library/asyncio-eventloop.rst:1543 library/asyncio-eventloop.rst:1554 -#: library/asyncio-eventloop.rst:1564 +#: library/asyncio-eventloop.rst:1564 library/asyncio-eventloop.rst:1575 +#: library/asyncio-eventloop.rst:1585 msgid "a file-like object" msgstr "" -#: library/asyncio-eventloop.rst:1544 +#: library/asyncio-eventloop.rst:1565 msgid "" "an existing file descriptor (a positive integer), for example those created " "with :meth:`os.pipe`" msgstr "" -#: library/asyncio-eventloop.rst:1545 library/asyncio-eventloop.rst:1555 -#: library/asyncio-eventloop.rst:1565 +#: library/asyncio-eventloop.rst:1566 library/asyncio-eventloop.rst:1576 +#: library/asyncio-eventloop.rst:1586 msgid "" "the :const:`subprocess.PIPE` constant (default) which will create a new pipe " "and connect it," msgstr "" -#: library/asyncio-eventloop.rst:1547 library/asyncio-eventloop.rst:1557 -#: library/asyncio-eventloop.rst:1567 +#: library/asyncio-eventloop.rst:1568 library/asyncio-eventloop.rst:1578 +#: library/asyncio-eventloop.rst:1588 msgid "" "the value ``None`` which will make the subprocess inherit the file " "descriptor from this process" msgstr "" -#: library/asyncio-eventloop.rst:1549 library/asyncio-eventloop.rst:1559 -#: library/asyncio-eventloop.rst:1569 +#: library/asyncio-eventloop.rst:1570 library/asyncio-eventloop.rst:1580 +#: library/asyncio-eventloop.rst:1590 msgid "" "the :const:`subprocess.DEVNULL` constant which indicates that the special :" "data:`os.devnull` file will be used" msgstr "" -#: library/asyncio-eventloop.rst:1552 +#: library/asyncio-eventloop.rst:1573 msgid "*stdout* can be any of these:" msgstr "" -#: library/asyncio-eventloop.rst:1562 +#: library/asyncio-eventloop.rst:1583 msgid "*stderr* can be any of these:" msgstr "" -#: library/asyncio-eventloop.rst:1571 +#: library/asyncio-eventloop.rst:1592 msgid "" "the :const:`subprocess.STDOUT` constant which will connect the standard " "error stream to the process' standard output stream" msgstr "" -#: library/asyncio-eventloop.rst:1574 +#: library/asyncio-eventloop.rst:1595 msgid "" "All other keyword arguments are passed to :class:`subprocess.Popen` without " "interpretation, except for *bufsize*, *universal_newlines*, *shell*, *text*, " "*encoding* and *errors*, which should not be specified at all." msgstr "" -#: library/asyncio-eventloop.rst:1579 +#: library/asyncio-eventloop.rst:1600 msgid "" "The ``asyncio`` subprocess API does not support decoding the streams as " "text. :func:`bytes.decode` can be used to convert the bytes returned from " "the stream to text." msgstr "" -#: library/asyncio-eventloop.rst:1583 +#: library/asyncio-eventloop.rst:1604 msgid "" "If a file-like object passed as *stdin*, *stdout* or *stderr* represents a " "pipe, then the other side of this pipe should be registered with :meth:" @@ -1968,52 +2006,52 @@ msgid "" "the event loop." msgstr "" -#: library/asyncio-eventloop.rst:1588 +#: library/asyncio-eventloop.rst:1609 msgid "" "See the constructor of the :class:`subprocess.Popen` class for documentation " "on other arguments." msgstr "" -#: library/asyncio-eventloop.rst:1591 +#: library/asyncio-eventloop.rst:1612 msgid "" "Returns a pair of ``(transport, protocol)``, where *transport* conforms to " "the :class:`asyncio.SubprocessTransport` base class and *protocol* is an " "object instantiated by the *protocol_factory*." msgstr "" -#: library/asyncio-eventloop.rst:1600 +#: library/asyncio-eventloop.rst:1621 msgid "" "Create a subprocess from *cmd*, which can be a :class:`str` or a :class:" "`bytes` string encoded to the :ref:`filesystem encoding `, using the platform's \"shell\" syntax." msgstr "" -#: library/asyncio-eventloop.rst:1605 +#: library/asyncio-eventloop.rst:1626 msgid "" "This is similar to the standard library :class:`subprocess.Popen` class " "called with ``shell=True``." msgstr "" -#: library/asyncio-eventloop.rst:1608 +#: library/asyncio-eventloop.rst:1629 msgid "" "The *protocol_factory* must be a callable returning a subclass of the :class:" "`SubprocessProtocol` class." msgstr "" -#: library/asyncio-eventloop.rst:1611 +#: library/asyncio-eventloop.rst:1632 msgid "" "See :meth:`~loop.subprocess_exec` for more details about the remaining " "arguments." msgstr "" -#: library/asyncio-eventloop.rst:1614 +#: library/asyncio-eventloop.rst:1635 msgid "" "Returns a pair of ``(transport, protocol)``, where *transport* conforms to " "the :class:`SubprocessTransport` base class and *protocol* is an object " "instantiated by the *protocol_factory*." msgstr "" -#: library/asyncio-eventloop.rst:1619 +#: library/asyncio-eventloop.rst:1640 msgid "" "It is the application's responsibility to ensure that all whitespace and " "special characters are quoted appropriately to avoid `shell injection " @@ -2023,74 +2061,74 @@ msgid "" "used to construct shell commands." msgstr "" -#: library/asyncio-eventloop.rst:1628 +#: library/asyncio-eventloop.rst:1649 msgid "Callback Handles" msgstr "" -#: library/asyncio-eventloop.rst:1632 +#: library/asyncio-eventloop.rst:1653 msgid "" "A callback wrapper object returned by :meth:`loop.call_soon`, :meth:`loop." "call_soon_threadsafe`." msgstr "" -#: library/asyncio-eventloop.rst:1637 +#: library/asyncio-eventloop.rst:1658 msgid "" "Return the :class:`contextvars.Context` object associated with the handle." msgstr "" -#: library/asyncio-eventloop.rst:1644 +#: library/asyncio-eventloop.rst:1665 msgid "" "Cancel the callback. If the callback has already been canceled or executed, " "this method has no effect." msgstr "" -#: library/asyncio-eventloop.rst:1649 +#: library/asyncio-eventloop.rst:1670 msgid "Return ``True`` if the callback was cancelled." msgstr "" -#: library/asyncio-eventloop.rst:1655 +#: library/asyncio-eventloop.rst:1676 msgid "" "A callback wrapper object returned by :meth:`loop.call_later`, and :meth:" "`loop.call_at`." msgstr "" -#: library/asyncio-eventloop.rst:1658 +#: library/asyncio-eventloop.rst:1679 msgid "This class is a subclass of :class:`Handle`." msgstr "" -#: library/asyncio-eventloop.rst:1662 +#: library/asyncio-eventloop.rst:1683 msgid "Return a scheduled callback time as :class:`float` seconds." msgstr "" -#: library/asyncio-eventloop.rst:1664 +#: library/asyncio-eventloop.rst:1685 msgid "" "The time is an absolute timestamp, using the same time reference as :meth:" "`loop.time`." msgstr "" -#: library/asyncio-eventloop.rst:1671 +#: library/asyncio-eventloop.rst:1692 msgid "Server Objects" msgstr "" -#: library/asyncio-eventloop.rst:1673 +#: library/asyncio-eventloop.rst:1694 msgid "" "Server objects are created by :meth:`loop.create_server`, :meth:`loop." "create_unix_server`, :func:`start_server`, and :func:`start_unix_server` " "functions." msgstr "" -#: library/asyncio-eventloop.rst:1677 +#: library/asyncio-eventloop.rst:1698 msgid "Do not instantiate the :class:`Server` class directly." msgstr "" -#: library/asyncio-eventloop.rst:1681 +#: library/asyncio-eventloop.rst:1702 msgid "" "*Server* objects are asynchronous context managers. When used in an ``async " "with`` statement, it's guaranteed that the Server object is closed and not " "accepting new connections when the ``async with`` statement is completed::" msgstr "" -#: library/asyncio-eventloop.rst:1686 +#: library/asyncio-eventloop.rst:1707 msgid "" "srv = await loop.create_server(...)\n" "\n" @@ -2100,81 +2138,81 @@ msgid "" "# At this point, srv is closed and no longer accepts new connections." msgstr "" -#: library/asyncio-eventloop.rst:1694 +#: library/asyncio-eventloop.rst:1715 msgid "Server object is an asynchronous context manager since Python 3.7." msgstr "" -#: library/asyncio-eventloop.rst:1697 +#: library/asyncio-eventloop.rst:1718 msgid "" "This class was exposed publicly as ``asyncio.Server`` in Python 3.9.11, " "3.10.3 and 3.11." msgstr "" -#: library/asyncio-eventloop.rst:1702 +#: library/asyncio-eventloop.rst:1723 msgid "" "Stop serving: close listening sockets and set the :attr:`sockets` attribute " "to ``None``." msgstr "" -#: library/asyncio-eventloop.rst:1705 +#: library/asyncio-eventloop.rst:1726 msgid "" "The sockets that represent existing incoming client connections are left " "open." msgstr "" -#: library/asyncio-eventloop.rst:1708 +#: library/asyncio-eventloop.rst:1729 msgid "" "The server is closed asynchronously; use the :meth:`wait_closed` coroutine " "to wait until the server is closed (and no more connections are active)." msgstr "" -#: library/asyncio-eventloop.rst:1714 +#: library/asyncio-eventloop.rst:1735 msgid "Close all existing incoming client connections." msgstr "" -#: library/asyncio-eventloop.rst:1716 +#: library/asyncio-eventloop.rst:1737 msgid "" "Calls :meth:`~asyncio.BaseTransport.close` on all associated transports." msgstr "" -#: library/asyncio-eventloop.rst:1719 +#: library/asyncio-eventloop.rst:1740 msgid "" ":meth:`close` should be called before :meth:`close_clients` when closing the " "server to avoid races with new clients connecting." msgstr "" -#: library/asyncio-eventloop.rst:1726 +#: library/asyncio-eventloop.rst:1747 msgid "" "Close all existing incoming client connections immediately, without waiting " "for pending operations to complete." msgstr "" -#: library/asyncio-eventloop.rst:1729 +#: library/asyncio-eventloop.rst:1750 msgid "" "Calls :meth:`~asyncio.WriteTransport.abort` on all associated transports." msgstr "" -#: library/asyncio-eventloop.rst:1732 +#: library/asyncio-eventloop.rst:1753 msgid "" ":meth:`close` should be called before :meth:`abort_clients` when closing the " "server to avoid races with new clients connecting." msgstr "" -#: library/asyncio-eventloop.rst:1739 +#: library/asyncio-eventloop.rst:1760 msgid "Return the event loop associated with the server object." msgstr "" -#: library/asyncio-eventloop.rst:1746 +#: library/asyncio-eventloop.rst:1767 msgid "Start accepting connections." msgstr "" -#: library/asyncio-eventloop.rst:1748 +#: library/asyncio-eventloop.rst:1769 msgid "" "This method is idempotent, so it can be called when the server is already " "serving." msgstr "" -#: library/asyncio-eventloop.rst:1751 +#: library/asyncio-eventloop.rst:1772 msgid "" "The *start_serving* keyword-only parameter to :meth:`loop.create_server` " "and :meth:`asyncio.start_server` allows creating a Server object that is not " @@ -2183,19 +2221,19 @@ msgid "" "accepting connections." msgstr "" -#: library/asyncio-eventloop.rst:1763 +#: library/asyncio-eventloop.rst:1784 msgid "" "Start accepting connections until the coroutine is cancelled. Cancellation " "of ``serve_forever`` task causes the server to be closed." msgstr "" -#: library/asyncio-eventloop.rst:1767 +#: library/asyncio-eventloop.rst:1788 msgid "" "This method can be called if the server is already accepting connections. " "Only one ``serve_forever`` task can exist per one *Server* object." msgstr "" -#: library/asyncio-eventloop.rst:1773 +#: library/asyncio-eventloop.rst:1794 msgid "" "async def client_connected(reader, writer):\n" " # Communicate with the client with\n" @@ -2210,56 +2248,56 @@ msgid "" "asyncio.run(main('127.0.0.1', 0))" msgstr "" -#: library/asyncio-eventloop.rst:1789 +#: library/asyncio-eventloop.rst:1810 msgid "Return ``True`` if the server is accepting new connections." msgstr "" -#: library/asyncio-eventloop.rst:1796 +#: library/asyncio-eventloop.rst:1817 msgid "" "Wait until the :meth:`close` method completes and all active connections " "have finished." msgstr "" -#: library/asyncio-eventloop.rst:1801 +#: library/asyncio-eventloop.rst:1822 msgid "" "List of socket-like objects, ``asyncio.trsock.TransportSocket``, which the " "server is listening on." msgstr "" -#: library/asyncio-eventloop.rst:1804 +#: library/asyncio-eventloop.rst:1825 msgid "" "Prior to Python 3.7 ``Server.sockets`` used to return an internal list of " "server sockets directly. In 3.7 a copy of that list is returned." msgstr "" -#: library/asyncio-eventloop.rst:1814 +#: library/asyncio-eventloop.rst:1835 msgid "Event Loop Implementations" msgstr "" -#: library/asyncio-eventloop.rst:1816 +#: library/asyncio-eventloop.rst:1837 msgid "" "asyncio ships with two different event loop implementations: :class:" "`SelectorEventLoop` and :class:`ProactorEventLoop`." msgstr "" -#: library/asyncio-eventloop.rst:1819 +#: library/asyncio-eventloop.rst:1840 msgid "By default asyncio is configured to use :class:`EventLoop`." msgstr "" -#: library/asyncio-eventloop.rst:1824 +#: library/asyncio-eventloop.rst:1845 msgid "" "A subclass of :class:`AbstractEventLoop` based on the :mod:`selectors` " "module." msgstr "" -#: library/asyncio-eventloop.rst:1827 +#: library/asyncio-eventloop.rst:1848 msgid "" "Uses the most efficient *selector* available for the given platform. It is " "also possible to manually configure the exact selector implementation to be " "used::" msgstr "" -#: library/asyncio-eventloop.rst:1831 +#: library/asyncio-eventloop.rst:1852 msgid "" "import asyncio\n" "import selectors\n" @@ -2272,45 +2310,45 @@ msgid "" "asyncio.run(main(), loop_factory=loop_factory)" msgstr "" -#: library/asyncio-eventloop.rst:1846 +#: library/asyncio-eventloop.rst:1867 msgid "" "A subclass of :class:`AbstractEventLoop` for Windows that uses \"I/O " "Completion Ports\" (IOCP)." msgstr "" -#: library/asyncio-eventloop.rst:1852 +#: library/asyncio-eventloop.rst:1873 msgid "" "`MSDN documentation on I/O Completion Ports `_." msgstr "" -#: library/asyncio-eventloop.rst:1857 +#: library/asyncio-eventloop.rst:1878 msgid "" "An alias to the most efficient available subclass of :class:" "`AbstractEventLoop` for the given platform." msgstr "" -#: library/asyncio-eventloop.rst:1860 +#: library/asyncio-eventloop.rst:1881 msgid "" "It is an alias to :class:`SelectorEventLoop` on Unix and :class:" "`ProactorEventLoop` on Windows." msgstr "" -#: library/asyncio-eventloop.rst:1866 +#: library/asyncio-eventloop.rst:1887 msgid "Abstract base class for asyncio-compliant event loops." msgstr "" -#: library/asyncio-eventloop.rst:1868 +#: library/asyncio-eventloop.rst:1889 msgid "" "The :ref:`asyncio-event-loop-methods` section lists all methods that an " "alternative implementation of ``AbstractEventLoop`` should have defined." msgstr "" -#: library/asyncio-eventloop.rst:1874 +#: library/asyncio-eventloop.rst:1895 msgid "Examples" msgstr "" -#: library/asyncio-eventloop.rst:1876 +#: library/asyncio-eventloop.rst:1897 msgid "" "Note that all examples in this section **purposefully** show how to use the " "low-level event loop APIs, such as :meth:`loop.run_forever` and :meth:`loop." @@ -2318,17 +2356,17 @@ msgid "" "consider using the high-level functions like :func:`asyncio.run`." msgstr "" -#: library/asyncio-eventloop.rst:1886 +#: library/asyncio-eventloop.rst:1907 msgid "Hello World with call_soon()" msgstr "" -#: library/asyncio-eventloop.rst:1888 +#: library/asyncio-eventloop.rst:1909 msgid "" "An example using the :meth:`loop.call_soon` method to schedule a callback. " "The callback displays ``\"Hello World\"`` and then stops the event loop::" msgstr "" -#: library/asyncio-eventloop.rst:1892 +#: library/asyncio-eventloop.rst:1913 msgid "" "import asyncio\n" "\n" @@ -2349,24 +2387,24 @@ msgid "" " loop.close()" msgstr "" -#: library/asyncio-eventloop.rst:1912 +#: library/asyncio-eventloop.rst:1933 msgid "" "A similar :ref:`Hello World ` example created with a coroutine " "and the :func:`run` function." msgstr "" -#: library/asyncio-eventloop.rst:1919 +#: library/asyncio-eventloop.rst:1940 msgid "Display the current date with call_later()" msgstr "" -#: library/asyncio-eventloop.rst:1921 +#: library/asyncio-eventloop.rst:1942 msgid "" "An example of a callback displaying the current date every second. The " "callback uses the :meth:`loop.call_later` method to reschedule itself after " "5 seconds, and then stops the event loop::" msgstr "" -#: library/asyncio-eventloop.rst:1925 +#: library/asyncio-eventloop.rst:1946 msgid "" "import asyncio\n" "import datetime\n" @@ -2391,23 +2429,23 @@ msgid "" " loop.close()" msgstr "" -#: library/asyncio-eventloop.rst:1949 +#: library/asyncio-eventloop.rst:1970 msgid "" "A similar :ref:`current date ` example created with a " "coroutine and the :func:`run` function." msgstr "" -#: library/asyncio-eventloop.rst:1956 +#: library/asyncio-eventloop.rst:1977 msgid "Watch a file descriptor for read events" msgstr "" -#: library/asyncio-eventloop.rst:1958 +#: library/asyncio-eventloop.rst:1979 msgid "" "Wait until a file descriptor received some data using the :meth:`loop." "add_reader` method and then close the event loop::" msgstr "" -#: library/asyncio-eventloop.rst:1961 +#: library/asyncio-eventloop.rst:1982 msgid "" "import asyncio\n" "from socket import socketpair\n" @@ -2443,33 +2481,33 @@ msgid "" " loop.close()" msgstr "" -#: library/asyncio-eventloop.rst:1996 +#: library/asyncio-eventloop.rst:2017 msgid "" "A similar :ref:`example ` using " "transports, protocols, and the :meth:`loop.create_connection` method." msgstr "" -#: library/asyncio-eventloop.rst:2000 +#: library/asyncio-eventloop.rst:2021 msgid "" "Another similar :ref:`example ` " "using the high-level :func:`asyncio.open_connection` function and streams." msgstr "" -#: library/asyncio-eventloop.rst:2008 +#: library/asyncio-eventloop.rst:2029 msgid "Set signal handlers for SIGINT and SIGTERM" msgstr "" -#: library/asyncio-eventloop.rst:2010 +#: library/asyncio-eventloop.rst:2031 msgid "(This ``signals`` example only works on Unix.)" msgstr "" -#: library/asyncio-eventloop.rst:2012 +#: library/asyncio-eventloop.rst:2033 msgid "" "Register handlers for signals :const:`~signal.SIGINT` and :const:`~signal." "SIGTERM` using the :meth:`loop.add_signal_handler` method::" msgstr "" -#: library/asyncio-eventloop.rst:2015 +#: library/asyncio-eventloop.rst:2036 msgid "" "import asyncio\n" "import functools\n" diff --git a/library/asyncio-exceptions.po b/library/asyncio-exceptions.po index 039d836e..46db5c36 100644 --- a/library/asyncio-exceptions.po +++ b/library/asyncio-exceptions.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/asyncio-extending.po b/library/asyncio-extending.po index ed35d9ff..9b1bc8f3 100644 --- a/library/asyncio-extending.po +++ b/library/asyncio-extending.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/asyncio-future.po b/library/asyncio-future.po index e3882c6f..3d6a24a5 100644 --- a/library/asyncio-future.po +++ b/library/asyncio-future.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/asyncio-graph.po b/library/asyncio-graph.po index 2e963b7f..abb487f6 100644 --- a/library/asyncio-graph.po +++ b/library/asyncio-graph.po @@ -8,10 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.14\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/library/asyncio-llapi-index.po b/library/asyncio-llapi-index.po index fdd5b53f..6013c83e 100644 --- a/library/asyncio-llapi-index.po +++ b/library/asyncio-llapi-index.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/asyncio-platforms.po b/library/asyncio-platforms.po index 6c7a5e9e..6e8ba321 100644 --- a/library/asyncio-platforms.po +++ b/library/asyncio-platforms.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/asyncio-policy.po b/library/asyncio-policy.po index a69203a4..0fd3d961 100644 --- a/library/asyncio-policy.po +++ b/library/asyncio-policy.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/asyncio-protocol.po b/library/asyncio-protocol.po index 3e255067..000bd756 100644 --- a/library/asyncio-protocol.po +++ b/library/asyncio-protocol.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/asyncio-queue.po b/library/asyncio-queue.po index e1c77500..71da97f9 100644 --- a/library/asyncio-queue.po +++ b/library/asyncio-queue.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-05 22:16+0300\n" "Last-Translator: Marios Giannopoulos \n" "Language-Team: PyGreece \n" diff --git a/library/asyncio-runner.po b/library/asyncio-runner.po index 6be781f5..493b3b3b 100644 --- a/library/asyncio-runner.po +++ b/library/asyncio-runner.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/asyncio-stream.po b/library/asyncio-stream.po index b5807d23..c1f613b5 100644 --- a/library/asyncio-stream.po +++ b/library/asyncio-stream.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -36,7 +36,7 @@ msgstr "" msgid "Here is an example of a TCP echo client written using asyncio streams::" msgstr "" -#: library/asyncio-stream.rst:430 +#: library/asyncio-stream.rst:437 msgid "" "import asyncio\n" "\n" @@ -111,12 +111,12 @@ msgstr "" msgid "Added the *happy_eyeballs_delay* and *interleave* parameters." msgstr "" -#: library/asyncio-stream.rst:128 library/asyncio-stream.rst:195 +#: library/asyncio-stream.rst:128 library/asyncio-stream.rst:199 msgid "Removed the *loop* parameter." msgstr "" -#: library/asyncio-stream.rst:131 library/asyncio-stream.rst:198 -#: library/asyncio-stream.rst:397 +#: library/asyncio-stream.rst:131 library/asyncio-stream.rst:202 +#: library/asyncio-stream.rst:404 msgid "Added the *ssl_shutdown_timeout* parameter." msgstr "" @@ -144,7 +144,7 @@ msgid "" "The rest of the arguments are passed directly to :meth:`loop.create_server`." msgstr "" -#: library/asyncio-stream.rst:185 +#: library/asyncio-stream.rst:189 msgid "" "The *sock* argument transfers ownership of the socket to the server created. " "To close the socket, call the server's :meth:`~asyncio.Server.close` method." @@ -175,7 +175,7 @@ msgstr "" msgid "See also the documentation of :meth:`loop.create_unix_connection`." msgstr "" -#: library/asyncio-stream.rst:189 +#: library/asyncio-stream.rst:193 msgid "Availability" msgstr "" @@ -194,104 +194,115 @@ msgid "Similar to :func:`start_server` but works with Unix sockets." msgstr "" #: library/asyncio-stream.rst:181 +msgid "" +"If *cleanup_socket* is true then the Unix socket will automatically be " +"removed from the filesystem when the server is closed, unless the socket has " +"been replaced after the server has been created." +msgstr "" + +#: library/asyncio-stream.rst:185 msgid "See also the documentation of :meth:`loop.create_unix_server`." msgstr "" -#: library/asyncio-stream.rst:191 +#: library/asyncio-stream.rst:195 msgid "" "Added the *ssl_handshake_timeout* and *start_serving* parameters. The *path* " "parameter can now be a :term:`path-like object`." msgstr "" -#: library/asyncio-stream.rst:203 +#: library/asyncio-stream.rst:205 +msgid "Added the *cleanup_socket* parameter." +msgstr "" + +#: library/asyncio-stream.rst:210 msgid "StreamReader" msgstr "" -#: library/asyncio-stream.rst:207 +#: library/asyncio-stream.rst:214 msgid "" "Represents a reader object that provides APIs to read data from the IO " "stream. As an :term:`asynchronous iterable`, the object supports the :" "keyword:`async for` statement." msgstr "" -#: library/asyncio-stream.rst:211 +#: library/asyncio-stream.rst:218 msgid "" "It is not recommended to instantiate *StreamReader* objects directly; use :" "func:`open_connection` and :func:`start_server` instead." msgstr "" -#: library/asyncio-stream.rst:217 +#: library/asyncio-stream.rst:224 msgid "Acknowledge the EOF." msgstr "" -#: library/asyncio-stream.rst:222 +#: library/asyncio-stream.rst:229 msgid "Read up to *n* bytes from the stream." msgstr "" -#: library/asyncio-stream.rst:224 +#: library/asyncio-stream.rst:231 msgid "" "If *n* is not provided or set to ``-1``, read until EOF, then return all " "read :class:`bytes`. If EOF was received and the internal buffer is empty, " "return an empty ``bytes`` object." msgstr "" -#: library/asyncio-stream.rst:229 +#: library/asyncio-stream.rst:236 msgid "If *n* is ``0``, return an empty ``bytes`` object immediately." msgstr "" -#: library/asyncio-stream.rst:231 +#: library/asyncio-stream.rst:238 msgid "" "If *n* is positive, return at most *n* available ``bytes`` as soon as at " "least 1 byte is available in the internal buffer. If EOF is received before " "any byte is read, return an empty ``bytes`` object." msgstr "" -#: library/asyncio-stream.rst:239 +#: library/asyncio-stream.rst:246 msgid "" "Read one line, where \"line\" is a sequence of bytes ending with ``\\n``." msgstr "" -#: library/asyncio-stream.rst:242 +#: library/asyncio-stream.rst:249 msgid "" "If EOF is received and ``\\n`` was not found, the method returns partially " "read data." msgstr "" -#: library/asyncio-stream.rst:245 +#: library/asyncio-stream.rst:252 msgid "" "If EOF is received and the internal buffer is empty, return an empty " "``bytes`` object." msgstr "" -#: library/asyncio-stream.rst:251 +#: library/asyncio-stream.rst:258 msgid "Read exactly *n* bytes." msgstr "" -#: library/asyncio-stream.rst:253 +#: library/asyncio-stream.rst:260 msgid "" "Raise an :exc:`IncompleteReadError` if EOF is reached before *n* can be " "read. Use the :attr:`IncompleteReadError.partial` attribute to get the " "partially read data." msgstr "" -#: library/asyncio-stream.rst:260 +#: library/asyncio-stream.rst:267 msgid "Read data from the stream until *separator* is found." msgstr "" -#: library/asyncio-stream.rst:262 +#: library/asyncio-stream.rst:269 msgid "" "On success, the data and separator will be removed from the internal buffer " "(consumed). Returned data will include the separator at the end." msgstr "" -#: library/asyncio-stream.rst:266 +#: library/asyncio-stream.rst:273 msgid "" "If the amount of data read exceeds the configured stream limit, a :exc:" "`LimitOverrunError` exception is raised, and the data is left in the " "internal buffer and can be read again." msgstr "" -#: library/asyncio-stream.rst:270 +#: library/asyncio-stream.rst:277 msgid "" "If EOF is reached before the complete separator is found, an :exc:" "`IncompleteReadError` exception is raised, and the internal buffer is " @@ -299,7 +310,7 @@ msgid "" "portion of the separator." msgstr "" -#: library/asyncio-stream.rst:275 +#: library/asyncio-stream.rst:282 msgid "" "The *separator* may also be a tuple of separators. In this case the return " "value will be the shortest possible that has any separator as the suffix. " @@ -307,107 +318,107 @@ msgid "" "separator is considered to be the one that matched." msgstr "" -#: library/asyncio-stream.rst:285 +#: library/asyncio-stream.rst:292 msgid "The *separator* parameter may now be a :class:`tuple` of separators." msgstr "" -#: library/asyncio-stream.rst:290 +#: library/asyncio-stream.rst:297 msgid "Return ``True`` if the buffer is empty and :meth:`feed_eof` was called." msgstr "" -#: library/asyncio-stream.rst:295 +#: library/asyncio-stream.rst:302 msgid "StreamWriter" msgstr "" -#: library/asyncio-stream.rst:299 +#: library/asyncio-stream.rst:306 msgid "" "Represents a writer object that provides APIs to write data to the IO stream." msgstr "" -#: library/asyncio-stream.rst:302 +#: library/asyncio-stream.rst:309 msgid "" "It is not recommended to instantiate *StreamWriter* objects directly; use :" "func:`open_connection` and :func:`start_server` instead." msgstr "" -#: library/asyncio-stream.rst:308 +#: library/asyncio-stream.rst:315 msgid "" "The method attempts to write the *data* to the underlying socket " "immediately. If that fails, the data is queued in an internal write buffer " "until it can be sent." msgstr "" -#: library/asyncio-stream.rst:324 +#: library/asyncio-stream.rst:331 msgid "The method should be used along with the ``drain()`` method::" msgstr "" -#: library/asyncio-stream.rst:314 +#: library/asyncio-stream.rst:321 msgid "" "stream.write(data)\n" "await stream.drain()" msgstr "" -#: library/asyncio-stream.rst:319 +#: library/asyncio-stream.rst:326 msgid "" "The method writes a list (or any iterable) of bytes to the underlying socket " "immediately. If that fails, the data is queued in an internal write buffer " "until it can be sent." msgstr "" -#: library/asyncio-stream.rst:326 +#: library/asyncio-stream.rst:333 msgid "" "stream.writelines(lines)\n" "await stream.drain()" msgstr "" -#: library/asyncio-stream.rst:331 +#: library/asyncio-stream.rst:338 msgid "The method closes the stream and the underlying socket." msgstr "" -#: library/asyncio-stream.rst:333 +#: library/asyncio-stream.rst:340 msgid "" "The method should be used, though not mandatory, along with the " "``wait_closed()`` method::" msgstr "" -#: library/asyncio-stream.rst:336 +#: library/asyncio-stream.rst:343 msgid "" "stream.close()\n" "await stream.wait_closed()" msgstr "" -#: library/asyncio-stream.rst:341 +#: library/asyncio-stream.rst:348 msgid "" "Return ``True`` if the underlying transport supports the :meth:`write_eof` " "method, ``False`` otherwise." msgstr "" -#: library/asyncio-stream.rst:346 +#: library/asyncio-stream.rst:353 msgid "" "Close the write end of the stream after the buffered write data is flushed." msgstr "" -#: library/asyncio-stream.rst:351 +#: library/asyncio-stream.rst:358 msgid "Return the underlying asyncio transport." msgstr "" -#: library/asyncio-stream.rst:355 +#: library/asyncio-stream.rst:362 msgid "" "Access optional transport information; see :meth:`BaseTransport." "get_extra_info` for details." msgstr "" -#: library/asyncio-stream.rst:361 +#: library/asyncio-stream.rst:368 msgid "Wait until it is appropriate to resume writing to the stream. Example::" msgstr "" -#: library/asyncio-stream.rst:364 +#: library/asyncio-stream.rst:371 msgid "" "writer.write(data)\n" "await writer.drain()" msgstr "" -#: library/asyncio-stream.rst:367 +#: library/asyncio-stream.rst:374 msgid "" "This is a flow control method that interacts with the underlying IO write " "buffer. When the size of the buffer reaches the high watermark, *drain()* " @@ -416,82 +427,82 @@ msgid "" "`drain` returns immediately." msgstr "" -#: library/asyncio-stream.rst:378 +#: library/asyncio-stream.rst:385 msgid "Upgrade an existing stream-based connection to TLS." msgstr "" -#: library/asyncio-stream.rst:380 +#: library/asyncio-stream.rst:387 msgid "Parameters:" msgstr "" -#: library/asyncio-stream.rst:382 +#: library/asyncio-stream.rst:389 msgid "*sslcontext*: a configured instance of :class:`~ssl.SSLContext`." msgstr "" -#: library/asyncio-stream.rst:384 +#: library/asyncio-stream.rst:391 msgid "" "*server_hostname*: sets or overrides the host name that the target server's " "certificate will be matched against." msgstr "" -#: library/asyncio-stream.rst:387 +#: library/asyncio-stream.rst:394 msgid "" "*ssl_handshake_timeout* is the time in seconds to wait for the TLS handshake " "to complete before aborting the connection. ``60.0`` seconds if ``None`` " "(default)." msgstr "" -#: library/asyncio-stream.rst:391 +#: library/asyncio-stream.rst:398 msgid "" "*ssl_shutdown_timeout* is the time in seconds to wait for the SSL shutdown " "to complete before aborting the connection. ``30.0`` seconds if ``None`` " "(default)." msgstr "" -#: library/asyncio-stream.rst:403 +#: library/asyncio-stream.rst:410 msgid "" "Return ``True`` if the stream is closed or in the process of being closed." msgstr "" -#: library/asyncio-stream.rst:411 +#: library/asyncio-stream.rst:418 msgid "Wait until the stream is closed." msgstr "" -#: library/asyncio-stream.rst:413 +#: library/asyncio-stream.rst:420 msgid "" "Should be called after :meth:`close` to wait until the underlying connection " "is closed, ensuring that all data has been flushed before e.g. exiting the " "program." msgstr "" -#: library/asyncio-stream.rst:421 +#: library/asyncio-stream.rst:428 msgid "Examples" msgstr "" -#: library/asyncio-stream.rst:426 +#: library/asyncio-stream.rst:433 msgid "TCP echo client using streams" msgstr "" -#: library/asyncio-stream.rst:428 +#: library/asyncio-stream.rst:435 msgid "TCP echo client using the :func:`asyncio.open_connection` function::" msgstr "" -#: library/asyncio-stream.rst:452 +#: library/asyncio-stream.rst:459 msgid "" "The :ref:`TCP echo client protocol " "` example uses the low-level :meth:" "`loop.create_connection` method." msgstr "" -#: library/asyncio-stream.rst:459 +#: library/asyncio-stream.rst:466 msgid "TCP echo server using streams" msgstr "" -#: library/asyncio-stream.rst:461 +#: library/asyncio-stream.rst:468 msgid "TCP echo server using the :func:`asyncio.start_server` function::" msgstr "" -#: library/asyncio-stream.rst:463 +#: library/asyncio-stream.rst:470 msgid "" "import asyncio\n" "\n" @@ -523,23 +534,23 @@ msgid "" "asyncio.run(main())" msgstr "" -#: library/asyncio-stream.rst:495 +#: library/asyncio-stream.rst:502 msgid "" "The :ref:`TCP echo server protocol " "` example uses the :meth:`loop." "create_server` method." msgstr "" -#: library/asyncio-stream.rst:500 +#: library/asyncio-stream.rst:507 msgid "Get HTTP headers" msgstr "" -#: library/asyncio-stream.rst:502 +#: library/asyncio-stream.rst:509 msgid "" "Simple example querying HTTP headers of the URL passed on the command line::" msgstr "" -#: library/asyncio-stream.rst:504 +#: library/asyncio-stream.rst:511 msgid "" "import asyncio\n" "import urllib.parse\n" @@ -578,33 +589,33 @@ msgid "" "asyncio.run(print_http_headers(url))" msgstr "" -#: library/asyncio-stream.rst:541 +#: library/asyncio-stream.rst:548 msgid "Usage::" msgstr "" -#: library/asyncio-stream.rst:543 +#: library/asyncio-stream.rst:550 msgid "python example.py http://example.com/path/page.html" msgstr "" -#: library/asyncio-stream.rst:545 +#: library/asyncio-stream.rst:552 msgid "or with HTTPS::" msgstr "" -#: library/asyncio-stream.rst:547 +#: library/asyncio-stream.rst:554 msgid "python example.py https://example.com/path/page.html" msgstr "" -#: library/asyncio-stream.rst:553 +#: library/asyncio-stream.rst:560 msgid "Register an open socket to wait for data using streams" msgstr "" -#: library/asyncio-stream.rst:555 +#: library/asyncio-stream.rst:562 msgid "" "Coroutine waiting until a socket receives data using the :func:" "`open_connection` function::" msgstr "" -#: library/asyncio-stream.rst:558 +#: library/asyncio-stream.rst:565 msgid "" "import asyncio\n" "import socket\n" @@ -637,14 +648,14 @@ msgid "" "asyncio.run(wait_for_data())" msgstr "" -#: library/asyncio-stream.rst:590 +#: library/asyncio-stream.rst:597 msgid "" "The :ref:`register an open socket to wait for data using a protocol " "` example uses a low-level protocol and " "the :meth:`loop.create_connection` method." msgstr "" -#: library/asyncio-stream.rst:594 +#: library/asyncio-stream.rst:601 msgid "" "The :ref:`watch a file descriptor for read events " "` example uses the low-level :meth:`loop." diff --git a/library/asyncio-subprocess.po b/library/asyncio-subprocess.po index 97fd7674..b21eaf82 100644 --- a/library/asyncio-subprocess.po +++ b/library/asyncio-subprocess.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/asyncio-sync.po b/library/asyncio-sync.po index e5484bfe..e424e14a 100644 --- a/library/asyncio-sync.po +++ b/library/asyncio-sync.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/asyncio-task.po b/library/asyncio-task.po index e70e5632..dc280a69 100644 --- a/library/asyncio-task.po +++ b/library/asyncio-task.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -350,31 +350,40 @@ msgstr "" #: library/asyncio-task.rst:246 msgid "" -"If *name* is not ``None``, it is set as the name of the task using :meth:" -"`Task.set_name`." +"The full function signature is largely the same as that of the :class:`Task` " +"constructor (or factory) - all of the keyword arguments to this function are " +"passed through to that interface." msgstr "" -#: library/asyncio-task.rst:249 +#: library/asyncio-task.rst:250 msgid "" "An optional keyword-only *context* argument allows specifying a custom :" "class:`contextvars.Context` for the *coro* to run in. The current context " "copy is created when no *context* is provided." msgstr "" -#: library/asyncio-task.rst:253 +#: library/asyncio-task.rst:254 +msgid "" +"An optional keyword-only *eager_start* argument allows specifying if the " +"task should execute eagerly during the call to create_task, or be scheduled " +"later. If *eager_start* is not passed the mode set by :meth:`loop." +"set_task_factory` will be used." +msgstr "" + +#: library/asyncio-task.rst:259 msgid "" "The task is executed in the loop returned by :func:`get_running_loop`, :exc:" "`RuntimeError` is raised if there is no running loop in current thread." msgstr "" -#: library/asyncio-task.rst:259 +#: library/asyncio-task.rst:265 msgid "" ":meth:`asyncio.TaskGroup.create_task` is a new alternative leveraging " "structural concurrency; it allows for waiting for a group of related tasks " "with strong safety guarantees." msgstr "" -#: library/asyncio-task.rst:265 +#: library/asyncio-task.rst:271 msgid "" "Save a reference to the result of this function, to avoid a task " "disappearing mid-execution. The event loop only keeps weak references to " @@ -383,7 +392,7 @@ msgid "" "tasks, gather them in a collection::" msgstr "" -#: library/asyncio-task.rst:272 +#: library/asyncio-task.rst:278 msgid "" "background_tasks = set()\n" "\n" @@ -399,25 +408,29 @@ msgid "" " task.add_done_callback(background_tasks.discard)" msgstr "" -#: library/asyncio-task.rst:1237 +#: library/asyncio-task.rst:1250 msgid "Added the *name* parameter." msgstr "" -#: library/asyncio-task.rst:1244 +#: library/asyncio-task.rst:1257 msgid "Added the *context* parameter." msgstr "" -#: library/asyncio-task.rst:295 +#: library/asyncio-task.rst:299 +msgid "Added the *eager_start* parameter by passing on all *kwargs*." +msgstr "" + +#: library/asyncio-task.rst:304 msgid "Task Cancellation" msgstr "" -#: library/asyncio-task.rst:297 +#: library/asyncio-task.rst:306 msgid "" "Tasks can easily and safely be cancelled. When a task is cancelled, :exc:" "`asyncio.CancelledError` will be raised in the task at the next opportunity." msgstr "" -#: library/asyncio-task.rst:301 +#: library/asyncio-task.rst:310 msgid "" "It is recommended that coroutines use ``try/finally`` blocks to robustly " "perform clean-up logic. In case :exc:`asyncio.CancelledError` is explicitly " @@ -426,7 +439,7 @@ msgid "" "code will not need to be aware of it." msgstr "" -#: library/asyncio-task.rst:307 +#: library/asyncio-task.rst:316 msgid "" "The asyncio components that enable structured concurrency, like :class:" "`asyncio.TaskGroup` and :func:`asyncio.timeout`, are implemented using " @@ -437,24 +450,24 @@ msgid "" "``uncancel()`` to completely remove the cancellation state." msgstr "" -#: library/asyncio-task.rst:319 +#: library/asyncio-task.rst:328 msgid "Task Groups" msgstr "" -#: library/asyncio-task.rst:321 +#: library/asyncio-task.rst:330 msgid "" "Task groups combine a task creation API with a convenient and reliable way " "to wait for all tasks in the group to finish." msgstr "" -#: library/asyncio-task.rst:326 +#: library/asyncio-task.rst:335 msgid "" "An :ref:`asynchronous context manager ` holding a " "group of tasks. Tasks can be added to the group using :meth:`create_task`. " "All tasks are awaited when the context manager exits." msgstr "" -#: library/asyncio-task.rst:335 +#: library/asyncio-task.rst:344 msgid "" "Create a task in this task group. The signature matches that of :func:" "`asyncio.create_task`. If the task group is inactive (e.g. not yet entered, " @@ -462,16 +475,20 @@ msgid "" "given ``coro``." msgstr "" -#: library/asyncio-task.rst:343 +#: library/asyncio-task.rst:352 msgid "Close the given coroutine if the task group is not active." msgstr "" -#: library/asyncio-task.rst:551 library/asyncio-task.rst:782 -#: library/asyncio-task.rst:849 +#: library/asyncio-task.rst:356 +msgid "Passes on all *kwargs* to :meth:`loop.create_task`" +msgstr "" + +#: library/asyncio-task.rst:564 library/asyncio-task.rst:795 +#: library/asyncio-task.rst:862 msgid "Example::" msgstr "" -#: library/asyncio-task.rst:347 +#: library/asyncio-task.rst:360 msgid "" "async def main():\n" " async with asyncio.TaskGroup() as tg:\n" @@ -481,7 +498,7 @@ msgid "" "result()}\")" msgstr "" -#: library/asyncio-task.rst:353 +#: library/asyncio-task.rst:366 msgid "" "The ``async with`` statement will wait for all tasks in the group to finish. " "While waiting, new tasks may still be added to the group (for example, by " @@ -490,7 +507,7 @@ msgid "" "block is exited, no new tasks may be added to the group." msgstr "" -#: library/asyncio-task.rst:360 +#: library/asyncio-task.rst:373 msgid "" "The first time any of the tasks belonging to the group fails with an " "exception other than :exc:`asyncio.CancelledError`, the remaining tasks in " @@ -502,7 +519,7 @@ msgid "" "bubble out of the containing ``async with`` statement." msgstr "" -#: library/asyncio-task.rst:370 +#: library/asyncio-task.rst:383 msgid "" "Once all tasks have finished, if any tasks have failed with an exception " "other than :exc:`asyncio.CancelledError`, those exceptions are combined in " @@ -510,7 +527,7 @@ msgid "" "their documentation) which is then raised." msgstr "" -#: library/asyncio-task.rst:377 +#: library/asyncio-task.rst:390 msgid "" "Two base exceptions are treated specially: If any task fails with :exc:" "`KeyboardInterrupt` or :exc:`SystemExit`, the task group still cancels the " @@ -519,7 +536,7 @@ msgid "" "`ExceptionGroup` or :exc:`BaseExceptionGroup`." msgstr "" -#: library/asyncio-task.rst:383 +#: library/asyncio-task.rst:396 msgid "" "If the body of the ``async with`` statement exits with an exception (so :" "meth:`~object.__aexit__` is called with an exception set), this is treated " @@ -531,7 +548,7 @@ msgid "" "`KeyboardInterrupt` and :exc:`SystemExit` as in the previous paragraph." msgstr "" -#: library/asyncio-task.rst:395 +#: library/asyncio-task.rst:408 msgid "" "Task groups are careful not to mix up the internal cancellation used to " "\"wake up\" their :meth:`~object.__aexit__` with cancellation requests for " @@ -542,7 +559,7 @@ msgid "" "receive another cancellation and process its own exceptions." msgstr "" -#: library/asyncio-task.rst:403 +#: library/asyncio-task.rst:416 msgid "" "In the case where a task group is cancelled externally and also must raise " "an :exc:`ExceptionGroup`, it will call the parent task's :meth:`~asyncio." @@ -550,30 +567,30 @@ msgid "" "be raised at the next :keyword:`await`, so the cancellation is not lost." msgstr "" -#: library/asyncio-task.rst:409 +#: library/asyncio-task.rst:422 msgid "" "Task groups preserve the cancellation count reported by :meth:`asyncio.Task." "cancelling`." msgstr "" -#: library/asyncio-task.rst:414 +#: library/asyncio-task.rst:427 msgid "" "Improved handling of simultaneous internal and external cancellations and " "correct preservation of cancellation counts." msgstr "" -#: library/asyncio-task.rst:418 +#: library/asyncio-task.rst:431 msgid "Terminating a Task Group" msgstr "" -#: library/asyncio-task.rst:420 +#: library/asyncio-task.rst:433 msgid "" "While terminating a task group is not natively supported by the standard " "library, termination can be achieved by adding an exception-raising task to " "the task group and ignoring the raised exception:" msgstr "" -#: library/asyncio-task.rst:424 +#: library/asyncio-task.rst:437 msgid "" "import asyncio\n" "from asyncio import TaskGroup\n" @@ -606,49 +623,49 @@ msgid "" "asyncio.run(main())" msgstr "" -#: library/asyncio-task.rst:456 +#: library/asyncio-task.rst:469 msgid "Expected output:" msgstr "" -#: library/asyncio-task.rst:458 +#: library/asyncio-task.rst:471 msgid "" "Task 1: start\n" "Task 2: start\n" "Task 1: done" msgstr "" -#: library/asyncio-task.rst:465 +#: library/asyncio-task.rst:478 msgid "Sleeping" msgstr "" -#: library/asyncio-task.rst:470 +#: library/asyncio-task.rst:483 msgid "Block for *delay* seconds." msgstr "" -#: library/asyncio-task.rst:472 +#: library/asyncio-task.rst:485 msgid "" "If *result* is provided, it is returned to the caller when the coroutine " "completes." msgstr "" -#: library/asyncio-task.rst:475 +#: library/asyncio-task.rst:488 msgid "" "``sleep()`` always suspends the current task, allowing other tasks to run." msgstr "" -#: library/asyncio-task.rst:478 +#: library/asyncio-task.rst:491 msgid "" "Setting the delay to 0 provides an optimized path to allow other tasks to " "run. This can be used by long-running functions to avoid blocking the event " "loop for the full duration of the function call." msgstr "" -#: library/asyncio-task.rst:484 +#: library/asyncio-task.rst:497 msgid "" "Example of coroutine displaying the current date every second for 5 seconds::" msgstr "" -#: library/asyncio-task.rst:487 +#: library/asyncio-task.rst:500 msgid "" "import asyncio\n" "import datetime\n" @@ -665,39 +682,39 @@ msgid "" "asyncio.run(display_date())" msgstr "" -#: library/asyncio-task.rst:600 library/asyncio-task.rst:874 -#: library/asyncio-task.rst:986 +#: library/asyncio-task.rst:613 library/asyncio-task.rst:887 +#: library/asyncio-task.rst:999 msgid "Removed the *loop* parameter." msgstr "" -#: library/asyncio-task.rst:505 +#: library/asyncio-task.rst:518 msgid "Raises :exc:`ValueError` if *delay* is :data:`~math.nan`." msgstr "" -#: library/asyncio-task.rst:510 +#: library/asyncio-task.rst:523 msgid "Running Tasks Concurrently" msgstr "" -#: library/asyncio-task.rst:514 +#: library/asyncio-task.rst:527 msgid "" "Run :ref:`awaitable objects ` in the *aws* sequence " "*concurrently*." msgstr "" -#: library/asyncio-task.rst:517 +#: library/asyncio-task.rst:530 msgid "" "If any awaitable in *aws* is a coroutine, it is automatically scheduled as a " "Task." msgstr "" -#: library/asyncio-task.rst:520 +#: library/asyncio-task.rst:533 msgid "" "If all awaitables are completed successfully, the result is an aggregate " "list of returned values. The order of result values corresponds to the " "order of awaitables in *aws*." msgstr "" -#: library/asyncio-task.rst:524 +#: library/asyncio-task.rst:537 msgid "" "If *return_exceptions* is ``False`` (default), the first raised exception is " "immediately propagated to the task that awaits on ``gather()``. Other " @@ -705,19 +722,19 @@ msgid "" "run." msgstr "" -#: library/asyncio-task.rst:529 +#: library/asyncio-task.rst:542 msgid "" "If *return_exceptions* is ``True``, exceptions are treated the same as " "successful results, and aggregated in the result list." msgstr "" -#: library/asyncio-task.rst:532 +#: library/asyncio-task.rst:545 msgid "" "If ``gather()`` is *cancelled*, all submitted awaitables (that have not " "completed yet) are also *cancelled*." msgstr "" -#: library/asyncio-task.rst:535 +#: library/asyncio-task.rst:548 msgid "" "If any Task or Future from the *aws* sequence is *cancelled*, it is treated " "as if it raised :exc:`CancelledError` -- the ``gather()`` call is **not** " @@ -725,7 +742,7 @@ msgid "" "submitted Task/Future to cause other Tasks/Futures to be cancelled." msgstr "" -#: library/asyncio-task.rst:542 +#: library/asyncio-task.rst:555 msgid "" "A new alternative to create and run tasks concurrently and wait for their " "completion is :class:`asyncio.TaskGroup`. *TaskGroup* provides stronger " @@ -735,7 +752,7 @@ msgid "" "tasks)." msgstr "" -#: library/asyncio-task.rst:553 +#: library/asyncio-task.rst:566 msgid "" "import asyncio\n" "\n" @@ -774,7 +791,7 @@ msgid "" "# [2, 6, 24]" msgstr "" -#: library/asyncio-task.rst:589 +#: library/asyncio-task.rst:602 msgid "" "If *return_exceptions* is false, cancelling gather() after it has been " "marked done won't cancel any submitted awaitables. For instance, gather can " @@ -783,28 +800,28 @@ msgid "" "the awaitables) from gather won't cancel any other awaitables." msgstr "" -#: library/asyncio-task.rst:596 +#: library/asyncio-task.rst:609 msgid "" "If the *gather* itself is cancelled, the cancellation is propagated " "regardless of *return_exceptions*." msgstr "" -#: library/asyncio-task.rst:603 +#: library/asyncio-task.rst:616 msgid "" "Deprecation warning is emitted if no positional arguments are provided or " "not all positional arguments are Future-like objects and there is no running " "event loop." msgstr "" -#: library/asyncio-task.rst:612 +#: library/asyncio-task.rst:625 msgid "Eager Task Factory" msgstr "" -#: library/asyncio-task.rst:616 +#: library/asyncio-task.rst:629 msgid "A task factory for eager task execution." msgstr "" -#: library/asyncio-task.rst:618 +#: library/asyncio-task.rst:631 msgid "" "When using this factory (via :meth:`loop.set_task_factory(asyncio." "eager_task_factory) `), coroutines begin execution " @@ -814,13 +831,13 @@ msgid "" "synchronously." msgstr "" -#: library/asyncio-task.rst:624 +#: library/asyncio-task.rst:637 msgid "" "A common example where this is beneficial is coroutines which employ caching " "or memoization to avoid actual I/O when possible." msgstr "" -#: library/asyncio-task.rst:629 +#: library/asyncio-task.rst:642 msgid "" "Immediate execution of the coroutine is a semantic change. If the coroutine " "returns or raises, the task is never scheduled to the event loop. If the " @@ -829,60 +846,60 @@ msgid "" "the application's task execution order is likely to change." msgstr "" -#: library/asyncio-task.rst:640 +#: library/asyncio-task.rst:653 msgid "" "Create an eager task factory, similar to :func:`eager_task_factory`, using " "the provided *custom_task_constructor* when creating a new task instead of " "the default :class:`Task`." msgstr "" -#: library/asyncio-task.rst:644 +#: library/asyncio-task.rst:657 msgid "" "*custom_task_constructor* must be a *callable* with the signature matching " "the signature of :class:`Task.__init__ `. The callable must return a :" "class:`asyncio.Task`-compatible object." msgstr "" -#: library/asyncio-task.rst:648 +#: library/asyncio-task.rst:661 msgid "" "This function returns a *callable* intended to be used as a task factory of " "an event loop via :meth:`loop.set_task_factory(factory) `)." msgstr "" -#: library/asyncio-task.rst:655 +#: library/asyncio-task.rst:668 msgid "Shielding From Cancellation" msgstr "" -#: library/asyncio-task.rst:659 +#: library/asyncio-task.rst:672 msgid "" "Protect an :ref:`awaitable object ` from being :meth:" "`cancelled `." msgstr "" -#: library/asyncio-task.rst:829 +#: library/asyncio-task.rst:842 msgid "If *aw* is a coroutine it is automatically scheduled as a Task." msgstr "" -#: library/asyncio-task.rst:664 +#: library/asyncio-task.rst:677 msgid "The statement::" msgstr "" -#: library/asyncio-task.rst:666 +#: library/asyncio-task.rst:679 msgid "" "task = asyncio.create_task(something())\n" "res = await shield(task)" msgstr "" -#: library/asyncio-task.rst:669 +#: library/asyncio-task.rst:682 msgid "is equivalent to::" msgstr "" -#: library/asyncio-task.rst:671 +#: library/asyncio-task.rst:684 msgid "res = await something()" msgstr "" -#: library/asyncio-task.rst:673 +#: library/asyncio-task.rst:686 msgid "" "*except* that if the coroutine containing it is cancelled, the Task running " "in ``something()`` is not cancelled. From the point of view of " @@ -891,20 +908,20 @@ msgid "" "`CancelledError`." msgstr "" -#: library/asyncio-task.rst:679 +#: library/asyncio-task.rst:692 msgid "" "If ``something()`` is cancelled by other means (i.e. from within itself) " "that would also cancel ``shield()``." msgstr "" -#: library/asyncio-task.rst:682 +#: library/asyncio-task.rst:695 msgid "" "If it is desired to completely ignore cancellation (not recommended) the " "``shield()`` function should be combined with a try/except clause, as " "follows::" msgstr "" -#: library/asyncio-task.rst:686 +#: library/asyncio-task.rst:699 msgid "" "task = asyncio.create_task(something())\n" "try:\n" @@ -913,7 +930,7 @@ msgid "" " res = None" msgstr "" -#: library/asyncio-task.rst:694 +#: library/asyncio-task.rst:707 msgid "" "Save a reference to tasks passed to this function, to avoid a task " "disappearing mid-execution. The event loop only keeps weak references to " @@ -921,43 +938,43 @@ msgid "" "any time, even before it's done." msgstr "" -#: library/asyncio-task.rst:702 +#: library/asyncio-task.rst:715 msgid "" "Deprecation warning is emitted if *aw* is not Future-like object and there " "is no running event loop." msgstr "" -#: library/asyncio-task.rst:708 +#: library/asyncio-task.rst:721 msgid "Timeouts" msgstr "" -#: library/asyncio-task.rst:712 +#: library/asyncio-task.rst:725 msgid "" "Return an :ref:`asynchronous context manager ` that " "can be used to limit the amount of time spent waiting on something." msgstr "" -#: library/asyncio-task.rst:716 +#: library/asyncio-task.rst:729 msgid "" "*delay* can either be ``None``, or a float/int number of seconds to wait. If " "*delay* is ``None``, no time limit will be applied; this can be useful if " "the delay is unknown when the context manager is created." msgstr "" -#: library/asyncio-task.rst:721 +#: library/asyncio-task.rst:734 msgid "" "In either case, the context manager can be rescheduled after creation using :" "meth:`Timeout.reschedule`." msgstr "" -#: library/asyncio-task.rst:726 +#: library/asyncio-task.rst:739 msgid "" "async def main():\n" " async with asyncio.timeout(10):\n" " await long_running_task()" msgstr "" -#: library/asyncio-task.rst:730 +#: library/asyncio-task.rst:743 msgid "" "If ``long_running_task`` takes more than 10 seconds to complete, the context " "manager will cancel the current task and handle the resulting :exc:`asyncio." @@ -965,18 +982,18 @@ msgid "" "can be caught and handled." msgstr "" -#: library/asyncio-task.rst:737 +#: library/asyncio-task.rst:750 msgid "" "The :func:`asyncio.timeout` context manager is what transforms the :exc:" "`asyncio.CancelledError` into a :exc:`TimeoutError`, which means the :exc:" "`TimeoutError` can only be caught *outside* of the context manager." msgstr "" -#: library/asyncio-task.rst:742 +#: library/asyncio-task.rst:755 msgid "Example of catching :exc:`TimeoutError`::" msgstr "" -#: library/asyncio-task.rst:744 +#: library/asyncio-task.rst:757 msgid "" "async def main():\n" " try:\n" @@ -988,48 +1005,48 @@ msgid "" " print(\"This statement will run regardless.\")" msgstr "" -#: library/asyncio-task.rst:753 +#: library/asyncio-task.rst:766 msgid "" "The context manager produced by :func:`asyncio.timeout` can be rescheduled " "to a different deadline and inspected." msgstr "" -#: library/asyncio-task.rst:758 +#: library/asyncio-task.rst:771 msgid "" "An :ref:`asynchronous context manager ` for " "cancelling overdue coroutines." msgstr "" -#: library/asyncio-task.rst:761 +#: library/asyncio-task.rst:774 msgid "" "``when`` should be an absolute time at which the context should time out, as " "measured by the event loop's clock:" msgstr "" -#: library/asyncio-task.rst:764 +#: library/asyncio-task.rst:777 msgid "If ``when`` is ``None``, the timeout will never trigger." msgstr "" -#: library/asyncio-task.rst:765 +#: library/asyncio-task.rst:778 msgid "" "If ``when < loop.time()``, the timeout will trigger on the next iteration of " "the event loop." msgstr "" -#: library/asyncio-task.rst:770 +#: library/asyncio-task.rst:783 msgid "" "Return the current deadline, or ``None`` if the current deadline is not set." msgstr "" -#: library/asyncio-task.rst:775 +#: library/asyncio-task.rst:788 msgid "Reschedule the timeout." msgstr "" -#: library/asyncio-task.rst:779 +#: library/asyncio-task.rst:792 msgid "Return whether the context manager has exceeded its deadline (expired)." msgstr "" -#: library/asyncio-task.rst:784 +#: library/asyncio-task.rst:797 msgid "" "async def main():\n" " try:\n" @@ -1047,17 +1064,17 @@ msgid "" " print(\"Looks like we haven't finished on time.\")" msgstr "" -#: library/asyncio-task.rst:799 +#: library/asyncio-task.rst:812 msgid "Timeout context managers can be safely nested." msgstr "" -#: library/asyncio-task.rst:805 +#: library/asyncio-task.rst:818 msgid "" "Similar to :func:`asyncio.timeout`, except *when* is the absolute time to " "stop waiting, or ``None``." msgstr "" -#: library/asyncio-task.rst:810 +#: library/asyncio-task.rst:823 msgid "" "async def main():\n" " loop = get_running_loop()\n" @@ -1071,41 +1088,41 @@ msgid "" " print(\"This statement will run regardless.\")" msgstr "" -#: library/asyncio-task.rst:826 +#: library/asyncio-task.rst:839 msgid "" "Wait for the *aw* :ref:`awaitable ` to complete with a " "timeout." msgstr "" -#: library/asyncio-task.rst:831 +#: library/asyncio-task.rst:844 msgid "" "*timeout* can either be ``None`` or a float or int number of seconds to wait " "for. If *timeout* is ``None``, block until the future completes." msgstr "" -#: library/asyncio-task.rst:835 +#: library/asyncio-task.rst:848 msgid "" "If a timeout occurs, it cancels the task and raises :exc:`TimeoutError`." msgstr "" -#: library/asyncio-task.rst:838 +#: library/asyncio-task.rst:851 msgid "" "To avoid the task :meth:`cancellation `, wrap it in :func:" "`shield`." msgstr "" -#: library/asyncio-task.rst:841 +#: library/asyncio-task.rst:854 msgid "" "The function will wait until the future is actually cancelled, so the total " "wait time may exceed the *timeout*. If an exception happens during " "cancellation, it is propagated." msgstr "" -#: library/asyncio-task.rst:845 +#: library/asyncio-task.rst:858 msgid "If the wait is cancelled, the future *aw* is also cancelled." msgstr "" -#: library/asyncio-task.rst:851 +#: library/asyncio-task.rst:864 msgid "" "async def eternity():\n" " # Sleep for one hour\n" @@ -1126,107 +1143,107 @@ msgid "" "# timeout!" msgstr "" -#: library/asyncio-task.rst:869 +#: library/asyncio-task.rst:882 msgid "" "When *aw* is cancelled due to a timeout, ``wait_for`` waits for *aw* to be " "cancelled. Previously, it raised :exc:`TimeoutError` immediately." msgstr "" -#: library/asyncio-task.rst:877 +#: library/asyncio-task.rst:890 msgid "Raises :exc:`TimeoutError` instead of :exc:`asyncio.TimeoutError`." msgstr "" -#: library/asyncio-task.rst:882 +#: library/asyncio-task.rst:895 msgid "Waiting Primitives" msgstr "" -#: library/asyncio-task.rst:887 +#: library/asyncio-task.rst:900 msgid "" "Run :class:`~asyncio.Future` and :class:`~asyncio.Task` instances in the " "*aws* iterable concurrently and block until the condition specified by " "*return_when*." msgstr "" -#: library/asyncio-task.rst:891 +#: library/asyncio-task.rst:904 msgid "The *aws* iterable must not be empty." msgstr "" -#: library/asyncio-task.rst:893 +#: library/asyncio-task.rst:906 msgid "Returns two sets of Tasks/Futures: ``(done, pending)``." msgstr "" -#: library/asyncio-task.rst:895 +#: library/asyncio-task.rst:908 msgid "Usage::" msgstr "" -#: library/asyncio-task.rst:897 +#: library/asyncio-task.rst:910 msgid "done, pending = await asyncio.wait(aws)" msgstr "" -#: library/asyncio-task.rst:899 +#: library/asyncio-task.rst:912 msgid "" "*timeout* (a float or int), if specified, can be used to control the maximum " "number of seconds to wait before returning." msgstr "" -#: library/asyncio-task.rst:902 +#: library/asyncio-task.rst:915 msgid "" "Note that this function does not raise :exc:`TimeoutError`. Futures or Tasks " "that aren't done when the timeout occurs are simply returned in the second " "set." msgstr "" -#: library/asyncio-task.rst:906 +#: library/asyncio-task.rst:919 msgid "" "*return_when* indicates when this function should return. It must be one of " "the following constants:" msgstr "" -#: library/asyncio-task.rst:912 +#: library/asyncio-task.rst:925 msgid "Constant" msgstr "" -#: library/asyncio-task.rst:913 +#: library/asyncio-task.rst:926 msgid "Description" msgstr "" -#: library/asyncio-task.rst:916 +#: library/asyncio-task.rst:929 msgid "The function will return when any future finishes or is cancelled." msgstr "" -#: library/asyncio-task.rst:919 +#: library/asyncio-task.rst:932 msgid "" "The function will return when any future finishes by raising an exception. " "If no future raises an exception then it is equivalent to :const:" "`ALL_COMPLETED`." msgstr "" -#: library/asyncio-task.rst:924 +#: library/asyncio-task.rst:937 msgid "The function will return when all futures finish or are cancelled." msgstr "" -#: library/asyncio-task.rst:926 +#: library/asyncio-task.rst:939 msgid "" "Unlike :func:`~asyncio.wait_for`, ``wait()`` does not cancel the futures " "when a timeout occurs." msgstr "" -#: library/asyncio-task.rst:932 +#: library/asyncio-task.rst:945 msgid "Passing coroutine objects to ``wait()`` directly is forbidden." msgstr "" -#: library/asyncio-task.rst:993 +#: library/asyncio-task.rst:1006 msgid "Added support for generators yielding tasks." msgstr "" -#: library/asyncio-task.rst:941 +#: library/asyncio-task.rst:954 msgid "" "Run :ref:`awaitable objects ` in the *aws* iterable " "concurrently. The returned object can be iterated to obtain the results of " "the awaitables as they finish." msgstr "" -#: library/asyncio-task.rst:945 +#: library/asyncio-task.rst:958 msgid "" "The object returned by ``as_completed()`` can be iterated as an :term:" "`asynchronous iterator` or a plain :term:`iterator`. When asynchronous " @@ -1235,7 +1252,7 @@ msgid "" "tasks with their results. Example::" msgstr "" -#: library/asyncio-task.rst:951 +#: library/asyncio-task.rst:964 msgid "" "ipv4_connect = create_task(open_connection(\"127.0.0.1\", 80))\n" "ipv6_connect = create_task(open_connection(\"::1\", 80))\n" @@ -1252,20 +1269,20 @@ msgid "" " print(\"IPv4 connection established.\")" msgstr "" -#: library/asyncio-task.rst:965 +#: library/asyncio-task.rst:978 msgid "" "During asynchronous iteration, implicitly-created tasks will be yielded for " "supplied awaitables that aren't tasks or futures." msgstr "" -#: library/asyncio-task.rst:968 +#: library/asyncio-task.rst:981 msgid "" "When used as a plain iterator, each iteration yields a new coroutine that " "returns the result or raises the exception of the next completed awaitable. " "This pattern is compatible with Python versions older than 3.13::" msgstr "" -#: library/asyncio-task.rst:972 +#: library/asyncio-task.rst:985 msgid "" "ipv4_connect = create_task(open_connection(\"127.0.0.1\", 80))\n" "ipv6_connect = create_task(open_connection(\"::1\", 80))\n" @@ -1278,34 +1295,34 @@ msgid "" " reader, writer = await next_connect" msgstr "" -#: library/asyncio-task.rst:982 +#: library/asyncio-task.rst:995 msgid "" "A :exc:`TimeoutError` is raised if the timeout occurs before all awaitables " "are done. This is raised by the ``async for`` loop during asynchronous " "iteration or by the coroutines yielded during plain iteration." msgstr "" -#: library/asyncio-task.rst:989 +#: library/asyncio-task.rst:1002 msgid "" "Deprecation warning is emitted if not all awaitable objects in the *aws* " "iterable are Future-like objects and there is no running event loop." msgstr "" -#: library/asyncio-task.rst:996 +#: library/asyncio-task.rst:1009 msgid "" "The result can now be used as either an :term:`asynchronous iterator` or as " "a plain :term:`iterator` (previously it was only a plain iterator)." msgstr "" -#: library/asyncio-task.rst:1002 +#: library/asyncio-task.rst:1015 msgid "Running in Threads" msgstr "" -#: library/asyncio-task.rst:1007 +#: library/asyncio-task.rst:1020 msgid "Asynchronously run function *func* in a separate thread." msgstr "" -#: library/asyncio-task.rst:1009 +#: library/asyncio-task.rst:1022 msgid "" "Any \\*args and \\*\\*kwargs supplied for this function are directly passed " "to *func*. Also, the current :class:`contextvars.Context` is propagated, " @@ -1313,19 +1330,19 @@ msgid "" "separate thread." msgstr "" -#: library/asyncio-task.rst:1014 +#: library/asyncio-task.rst:1027 msgid "" "Return a coroutine that can be awaited to get the eventual result of *func*." msgstr "" -#: library/asyncio-task.rst:1016 +#: library/asyncio-task.rst:1029 msgid "" "This coroutine function is primarily intended to be used for executing IO-" "bound functions/methods that would otherwise block the event loop if they " "were run in the main thread. For example::" msgstr "" -#: library/asyncio-task.rst:1020 +#: library/asyncio-task.rst:1033 msgid "" "def blocking_io():\n" " print(f\"start blocking_io at {time.strftime('%X')}\")\n" @@ -1354,7 +1371,7 @@ msgid "" "# finished main at 19:50:54" msgstr "" -#: library/asyncio-task.rst:1046 +#: library/asyncio-task.rst:1059 msgid "" "Directly calling ``blocking_io()`` in any coroutine would block the event " "loop for its duration, resulting in an additional 1 second of run time. " @@ -1362,7 +1379,7 @@ msgid "" "thread without blocking the event loop." msgstr "" -#: library/asyncio-task.rst:1053 +#: library/asyncio-task.rst:1066 msgid "" "Due to the :term:`GIL`, ``asyncio.to_thread()`` can typically only be used " "to make IO-bound functions non-blocking. However, for extension modules that " @@ -1370,27 +1387,27 @@ msgid "" "``asyncio.to_thread()`` can also be used for CPU-bound functions." msgstr "" -#: library/asyncio-task.rst:1062 +#: library/asyncio-task.rst:1075 msgid "Scheduling From Other Threads" msgstr "" -#: library/asyncio-task.rst:1066 +#: library/asyncio-task.rst:1079 msgid "Submit a coroutine to the given event loop. Thread-safe." msgstr "" -#: library/asyncio-task.rst:1068 +#: library/asyncio-task.rst:1081 msgid "" "Return a :class:`concurrent.futures.Future` to wait for the result from " "another OS thread." msgstr "" -#: library/asyncio-task.rst:1071 +#: library/asyncio-task.rst:1084 msgid "" "This function is meant to be called from a different OS thread than the one " "where the event loop is running. Example::" msgstr "" -#: library/asyncio-task.rst:1074 +#: library/asyncio-task.rst:1087 msgid "" "def in_thread(loop: asyncio.AbstractEventLoop) -> None:\n" " # Run some blocking IO\n" @@ -1414,11 +1431,11 @@ msgid "" " await asyncio.to_thread(in_thread, loop)" msgstr "" -#: library/asyncio-task.rst:1094 +#: library/asyncio-task.rst:1107 msgid "It's also possible to run the other way around. Example::" msgstr "" -#: library/asyncio-task.rst:1096 +#: library/asyncio-task.rst:1109 msgid "" "@contextlib.contextmanager\n" "def loop_in_thread() -> Generator[asyncio.AbstractEventLoop]:\n" @@ -1454,13 +1471,13 @@ msgid "" " assert future.result(timeout=2) == 3" msgstr "" -#: library/asyncio-task.rst:1128 +#: library/asyncio-task.rst:1141 msgid "" "If an exception is raised in the coroutine, the returned Future will be " "notified. It can also be used to cancel the task in the event loop::" msgstr "" -#: library/asyncio-task.rst:1132 +#: library/asyncio-task.rst:1145 msgid "" "try:\n" " result = future.result(timeout)\n" @@ -1473,59 +1490,59 @@ msgid "" " print(f'The coroutine returned: {result!r}')" msgstr "" -#: library/asyncio-task.rst:1142 +#: library/asyncio-task.rst:1155 msgid "" "See the :ref:`concurrency and multithreading ` " "section of the documentation." msgstr "" -#: library/asyncio-task.rst:1145 +#: library/asyncio-task.rst:1158 msgid "" "Unlike other asyncio functions this function requires the *loop* argument to " "be passed explicitly." msgstr "" -#: library/asyncio-task.rst:1152 +#: library/asyncio-task.rst:1165 msgid "Introspection" msgstr "" -#: library/asyncio-task.rst:1157 +#: library/asyncio-task.rst:1170 msgid "" "Return the currently running :class:`Task` instance, or ``None`` if no task " "is running." msgstr "" -#: library/asyncio-task.rst:1160 +#: library/asyncio-task.rst:1173 msgid "" "If *loop* is ``None`` :func:`get_running_loop` is used to get the current " "loop." msgstr "" -#: library/asyncio-task.rst:1168 +#: library/asyncio-task.rst:1181 msgid "Return a set of not yet finished :class:`Task` objects run by the loop." msgstr "" -#: library/asyncio-task.rst:1171 +#: library/asyncio-task.rst:1184 msgid "" "If *loop* is ``None``, :func:`get_running_loop` is used for getting current " "loop." msgstr "" -#: library/asyncio-task.rst:1179 +#: library/asyncio-task.rst:1192 msgid "Return ``True`` if *obj* is a coroutine object." msgstr "" -#: library/asyncio-task.rst:1185 +#: library/asyncio-task.rst:1198 msgid "Task Object" msgstr "" -#: library/asyncio-task.rst:1189 +#: library/asyncio-task.rst:1202 msgid "" "A :class:`Future-like ` object that runs a Python :ref:`coroutine " "`. Not thread-safe." msgstr "" -#: library/asyncio-task.rst:1192 +#: library/asyncio-task.rst:1205 msgid "" "Tasks are used to run coroutines in event loops. If a coroutine awaits on a " "Future, the Task suspends the execution of the coroutine and waits for the " @@ -1533,21 +1550,21 @@ msgid "" "wrapped coroutine resumes." msgstr "" -#: library/asyncio-task.rst:1198 +#: library/asyncio-task.rst:1211 msgid "" "Event loops use cooperative scheduling: an event loop runs one Task at a " "time. While a Task awaits for the completion of a Future, the event loop " "runs other Tasks, callbacks, or performs IO operations." msgstr "" -#: library/asyncio-task.rst:1203 +#: library/asyncio-task.rst:1216 msgid "" "Use the high-level :func:`asyncio.create_task` function to create Tasks, or " "the low-level :meth:`loop.create_task` or :func:`ensure_future` functions. " "Manual instantiation of Tasks is discouraged." msgstr "" -#: library/asyncio-task.rst:1208 +#: library/asyncio-task.rst:1221 msgid "" "To cancel a running Task use the :meth:`cancel` method. Calling it will " "cause the Task to throw a :exc:`CancelledError` exception into the wrapped " @@ -1555,20 +1572,20 @@ msgid "" "cancellation, the Future object will be cancelled." msgstr "" -#: library/asyncio-task.rst:1213 +#: library/asyncio-task.rst:1226 msgid "" ":meth:`cancelled` can be used to check if the Task was cancelled. The method " "returns ``True`` if the wrapped coroutine did not suppress the :exc:" "`CancelledError` exception and was actually cancelled." msgstr "" -#: library/asyncio-task.rst:1218 +#: library/asyncio-task.rst:1231 msgid "" ":class:`asyncio.Task` inherits from :class:`Future` all of its APIs except :" "meth:`Future.set_result` and :meth:`Future.set_exception`." msgstr "" -#: library/asyncio-task.rst:1222 +#: library/asyncio-task.rst:1235 msgid "" "An optional keyword-only *context* argument allows specifying a custom :" "class:`contextvars.Context` for the *coro* to run in. If no *context* is " @@ -1576,7 +1593,7 @@ msgid "" "in the copied context." msgstr "" -#: library/asyncio-task.rst:1227 +#: library/asyncio-task.rst:1240 msgid "" "An optional keyword-only *eager_start* argument allows eagerly starting the " "execution of the :class:`asyncio.Task` at task creation time. If set to " @@ -1586,96 +1603,96 @@ msgid "" "eagerly and will skip scheduling to the event loop." msgstr "" -#: library/asyncio-task.rst:1234 +#: library/asyncio-task.rst:1247 msgid "Added support for the :mod:`contextvars` module." msgstr "" -#: library/asyncio-task.rst:1240 +#: library/asyncio-task.rst:1253 msgid "" "Deprecation warning is emitted if *loop* is not specified and there is no " "running event loop." msgstr "" -#: library/asyncio-task.rst:1247 +#: library/asyncio-task.rst:1260 msgid "Added the *eager_start* parameter." msgstr "" -#: library/asyncio-task.rst:1252 +#: library/asyncio-task.rst:1265 msgid "Return ``True`` if the Task is *done*." msgstr "" -#: library/asyncio-task.rst:1254 +#: library/asyncio-task.rst:1267 msgid "" "A Task is *done* when the wrapped coroutine either returned a value, raised " "an exception, or the Task was cancelled." msgstr "" -#: library/asyncio-task.rst:1259 +#: library/asyncio-task.rst:1272 msgid "Return the result of the Task." msgstr "" -#: library/asyncio-task.rst:1261 +#: library/asyncio-task.rst:1274 msgid "" "If the Task is *done*, the result of the wrapped coroutine is returned (or " "if the coroutine raised an exception, that exception is re-raised.)" msgstr "" -#: library/asyncio-task.rst:1279 +#: library/asyncio-task.rst:1292 msgid "" "If the Task has been *cancelled*, this method raises a :exc:`CancelledError` " "exception." msgstr "" -#: library/asyncio-task.rst:1268 +#: library/asyncio-task.rst:1281 msgid "" "If the Task's result isn't yet available, this method raises an :exc:" "`InvalidStateError` exception." msgstr "" -#: library/asyncio-task.rst:1273 +#: library/asyncio-task.rst:1286 msgid "Return the exception of the Task." msgstr "" -#: library/asyncio-task.rst:1275 +#: library/asyncio-task.rst:1288 msgid "" "If the wrapped coroutine raised an exception that exception is returned. If " "the wrapped coroutine returned normally this method returns ``None``." msgstr "" -#: library/asyncio-task.rst:1282 +#: library/asyncio-task.rst:1295 msgid "" "If the Task isn't *done* yet, this method raises an :exc:`InvalidStateError` " "exception." msgstr "" -#: library/asyncio-task.rst:1287 +#: library/asyncio-task.rst:1300 msgid "Add a callback to be run when the Task is *done*." msgstr "" -#: library/asyncio-task.rst:1298 +#: library/asyncio-task.rst:1311 msgid "This method should only be used in low-level callback-based code." msgstr "" -#: library/asyncio-task.rst:1291 +#: library/asyncio-task.rst:1304 msgid "" "See the documentation of :meth:`Future.add_done_callback` for more details." msgstr "" -#: library/asyncio-task.rst:1296 +#: library/asyncio-task.rst:1309 msgid "Remove *callback* from the callbacks list." msgstr "" -#: library/asyncio-task.rst:1300 +#: library/asyncio-task.rst:1313 msgid "" "See the documentation of :meth:`Future.remove_done_callback` for more " "details." msgstr "" -#: library/asyncio-task.rst:1305 +#: library/asyncio-task.rst:1318 msgid "Return the list of stack frames for this Task." msgstr "" -#: library/asyncio-task.rst:1307 +#: library/asyncio-task.rst:1320 msgid "" "If the wrapped coroutine is not done, this returns the stack where it is " "suspended. If the coroutine has completed successfully or was cancelled, " @@ -1683,15 +1700,15 @@ msgid "" "this returns the list of traceback frames." msgstr "" -#: library/asyncio-task.rst:1313 +#: library/asyncio-task.rst:1326 msgid "The frames are always ordered from oldest to newest." msgstr "" -#: library/asyncio-task.rst:1315 +#: library/asyncio-task.rst:1328 msgid "Only one stack frame is returned for a suspended coroutine." msgstr "" -#: library/asyncio-task.rst:1317 +#: library/asyncio-task.rst:1330 msgid "" "The optional *limit* argument sets the maximum number of frames to return; " "by default all available frames are returned. The ordering of the returned " @@ -1700,87 +1717,87 @@ msgid "" "are returned. (This matches the behavior of the traceback module.)" msgstr "" -#: library/asyncio-task.rst:1326 +#: library/asyncio-task.rst:1339 msgid "Print the stack or traceback for this Task." msgstr "" -#: library/asyncio-task.rst:1328 +#: library/asyncio-task.rst:1341 msgid "" "This produces output similar to that of the traceback module for the frames " "retrieved by :meth:`get_stack`." msgstr "" -#: library/asyncio-task.rst:1331 +#: library/asyncio-task.rst:1344 msgid "The *limit* argument is passed to :meth:`get_stack` directly." msgstr "" -#: library/asyncio-task.rst:1333 +#: library/asyncio-task.rst:1346 msgid "" "The *file* argument is an I/O stream to which the output is written; by " "default output is written to :data:`sys.stdout`." msgstr "" -#: library/asyncio-task.rst:1338 +#: library/asyncio-task.rst:1351 msgid "Return the coroutine object wrapped by the :class:`Task`." msgstr "" -#: library/asyncio-task.rst:1342 +#: library/asyncio-task.rst:1355 msgid "" "This will return ``None`` for Tasks which have already completed eagerly. " "See the :ref:`Eager Task Factory `." msgstr "" -#: library/asyncio-task.rst:1349 +#: library/asyncio-task.rst:1362 msgid "Newly added eager task execution means result may be ``None``." msgstr "" -#: library/asyncio-task.rst:1353 +#: library/asyncio-task.rst:1366 msgid "" "Return the :class:`contextvars.Context` object associated with the task." msgstr "" -#: library/asyncio-task.rst:1360 +#: library/asyncio-task.rst:1373 msgid "Return the name of the Task." msgstr "" -#: library/asyncio-task.rst:1362 +#: library/asyncio-task.rst:1375 msgid "" "If no name has been explicitly assigned to the Task, the default asyncio " "Task implementation generates a default name during instantiation." msgstr "" -#: library/asyncio-task.rst:1370 +#: library/asyncio-task.rst:1383 msgid "Set the name of the Task." msgstr "" -#: library/asyncio-task.rst:1372 +#: library/asyncio-task.rst:1385 msgid "" "The *value* argument can be any object, which is then converted to a string." msgstr "" -#: library/asyncio-task.rst:1375 +#: library/asyncio-task.rst:1388 msgid "" "In the default Task implementation, the name will be visible in the :func:" "`repr` output of a task object." msgstr "" -#: library/asyncio-task.rst:1382 +#: library/asyncio-task.rst:1395 msgid "Request the Task to be cancelled." msgstr "" -#: library/asyncio-task.rst:1384 +#: library/asyncio-task.rst:1397 msgid "" "If the Task is already *done* or *cancelled*, return ``False``, otherwise, " "return ``True``." msgstr "" -#: library/asyncio-task.rst:1387 +#: library/asyncio-task.rst:1400 msgid "" "The method arranges for a :exc:`CancelledError` exception to be thrown into " "the wrapped coroutine on the next cycle of the event loop." msgstr "" -#: library/asyncio-task.rst:1390 +#: library/asyncio-task.rst:1403 msgid "" "The coroutine then has a chance to clean up or even deny the request by " "suppressing the exception with a :keyword:`try` ... ... ``except " @@ -1792,21 +1809,21 @@ msgid "" "addition to catching the exception." msgstr "" -#: library/asyncio-task.rst:1400 +#: library/asyncio-task.rst:1413 msgid "Added the *msg* parameter." msgstr "" -#: library/asyncio-task.rst:1403 +#: library/asyncio-task.rst:1416 msgid "The ``msg`` parameter is propagated from cancelled task to its awaiter." msgstr "" -#: library/asyncio-task.rst:1408 +#: library/asyncio-task.rst:1421 msgid "" "The following example illustrates how coroutines can intercept the " "cancellation request::" msgstr "" -#: library/asyncio-task.rst:1411 +#: library/asyncio-task.rst:1424 msgid "" "async def cancel_me():\n" " print('cancel_me(): before sleep')\n" @@ -1843,32 +1860,32 @@ msgid "" "# main(): cancel_me is cancelled now" msgstr "" -#: library/asyncio-task.rst:1447 +#: library/asyncio-task.rst:1460 msgid "Return ``True`` if the Task is *cancelled*." msgstr "" -#: library/asyncio-task.rst:1449 +#: library/asyncio-task.rst:1462 msgid "" "The Task is *cancelled* when the cancellation was requested with :meth:" "`cancel` and the wrapped coroutine propagated the :exc:`CancelledError` " "exception thrown into it." msgstr "" -#: library/asyncio-task.rst:1455 +#: library/asyncio-task.rst:1468 msgid "Decrement the count of cancellation requests to this Task." msgstr "" -#: library/asyncio-task.rst:1457 +#: library/asyncio-task.rst:1470 msgid "Returns the remaining number of cancellation requests." msgstr "" -#: library/asyncio-task.rst:1459 +#: library/asyncio-task.rst:1472 msgid "" "Note that once execution of a cancelled task completed, further calls to :" "meth:`uncancel` are ineffective." msgstr "" -#: library/asyncio-task.rst:1464 +#: library/asyncio-task.rst:1477 msgid "" "This method is used by asyncio's internals and isn't expected to be used by " "end-user code. In particular, if a Task gets successfully uncancelled, this " @@ -1877,7 +1894,7 @@ msgid "" "respective structured block. For example::" msgstr "" -#: library/asyncio-task.rst:1471 +#: library/asyncio-task.rst:1484 msgid "" "async def make_request_with_timeout():\n" " try:\n" @@ -1891,7 +1908,7 @@ msgid "" " await unrelated_code()" msgstr "" -#: library/asyncio-task.rst:1482 +#: library/asyncio-task.rst:1495 msgid "" "While the block with ``make_request()`` and ``make_another_request()`` might " "get cancelled due to the timeout, ``unrelated_code()`` should continue " @@ -1900,14 +1917,14 @@ msgid "" "similar fashion." msgstr "" -#: library/asyncio-task.rst:1488 +#: library/asyncio-task.rst:1501 msgid "" "If end-user code is, for some reason, suppressing cancellation by catching :" "exc:`CancelledError`, it needs to call this method to remove the " "cancellation state." msgstr "" -#: library/asyncio-task.rst:1492 +#: library/asyncio-task.rst:1505 msgid "" "When this method decrements the cancellation count to zero, the method " "checks if a previous :meth:`cancel` call had arranged for :exc:" @@ -1916,17 +1933,17 @@ msgid "" "``_must_cancel`` flag)." msgstr "" -#: library/asyncio-task.rst:1498 +#: library/asyncio-task.rst:1511 msgid "Changed to rescind pending cancellation requests upon reaching zero." msgstr "" -#: library/asyncio-task.rst:1503 +#: library/asyncio-task.rst:1516 msgid "" "Return the number of pending cancellation requests to this Task, i.e., the " "number of calls to :meth:`cancel` less the number of :meth:`uncancel` calls." msgstr "" -#: library/asyncio-task.rst:1507 +#: library/asyncio-task.rst:1520 msgid "" "Note that if this number is greater than zero but the Task is still " "executing, :meth:`cancelled` will still return ``False``. This is because " @@ -1935,7 +1952,7 @@ msgid "" "to zero." msgstr "" -#: library/asyncio-task.rst:1513 +#: library/asyncio-task.rst:1526 msgid "" "This method is used by asyncio's internals and isn't expected to be used by " "end-user code. See :meth:`uncancel` for more details." diff --git a/library/asyncio.po b/library/asyncio.po index 867f287c..7277700c 100644 --- a/library/asyncio.po +++ b/library/asyncio.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/asyncore.po b/library/asyncore.po index 1ecc6063..232c56c4 100644 --- a/library/asyncore.po +++ b/library/asyncore.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/atexit.po b/library/atexit.po index f1cc3c74..7bbf17fb 100644 --- a/library/atexit.po +++ b/library/atexit.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/audioop.po b/library/audioop.po index 9cf9830e..b06c971c 100644 --- a/library/audioop.po +++ b/library/audioop.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/audit_events.po b/library/audit_events.po index dd7ba257..63d69f8f 100644 --- a/library/audit_events.po +++ b/library/audit_events.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/base64.po b/library/base64.po index 73cf4cb3..2a539f35 100644 --- a/library/base64.po +++ b/library/base64.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -28,22 +28,14 @@ msgstr "" #: library/base64.rst:16 msgid "" "This module provides functions for encoding binary data to printable ASCII " -"characters and decoding such encodings back to binary data. It provides " -"encoding and decoding functions for the encodings specified in :rfc:`4648`, " -"which defines the Base16, Base32, and Base64 algorithms, and for the de-" -"facto standard Ascii85 and Base85 encodings." +"characters and decoding such encodings back to binary data. This includes " +"the :ref:`encodings specified in ` :rfc:`4648` (Base64, " +"Base32 and Base16) and the non-standard :ref:`Base85 encodings `." msgstr "" #: library/base64.rst:22 msgid "" -"The :rfc:`4648` encodings are suitable for encoding binary data so that it " -"can be safely sent by email, used as parts of URLs, or included as part of " -"an HTTP POST request. The encoding algorithm is not the same as the :" -"program:`uuencode` program." -msgstr "" - -#: library/base64.rst:27 -msgid "" "There are two interfaces provided by this module. The modern interface " "supports encoding :term:`bytes-like objects ` to ASCII :" "class:`bytes`, and decoding :term:`bytes-like objects ` " @@ -51,40 +43,47 @@ msgid "" "defined in :rfc:`4648` (normal, and URL- and filesystem-safe) are supported." msgstr "" -#: library/base64.rst:33 +#: library/base64.rst:28 msgid "" -"The legacy interface does not support decoding from strings, but it does " -"provide functions for encoding and decoding to and from :term:`file objects " -"`. It only supports the Base64 standard alphabet, and it adds " -"newlines every 76 characters as per :rfc:`2045`. Note that if you are " -"looking for :rfc:`2045` support you probably want to be looking at the :mod:" -"`email` package instead." +"The :ref:`legacy interface ` does not support decoding from " +"strings, but it does provide functions for encoding and decoding to and " +"from :term:`file objects `. It only supports the Base64 " +"standard alphabet, and it adds newlines every 76 characters as per :rfc:" +"`2045`. Note that if you are looking for :rfc:`2045` support you probably " +"want to be looking at the :mod:`email` package instead." msgstr "" -#: library/base64.rst:41 +#: library/base64.rst:36 msgid "" "ASCII-only Unicode strings are now accepted by the decoding functions of the " "modern interface." msgstr "" -#: library/base64.rst:45 +#: library/base64.rst:40 msgid "" "Any :term:`bytes-like objects ` are now accepted by all " "encoding and decoding functions in this module. Ascii85/Base85 support " "added." msgstr "" -#: library/base64.rst:49 -msgid "The modern interface provides:" +#: library/base64.rst:48 +msgid "RFC 4648 Encodings" msgstr "" -#: library/base64.rst:53 +#: library/base64.rst:50 +msgid "" +"The :rfc:`4648` encodings are suitable for encoding binary data so that it " +"can be safely sent by email, used as parts of URLs, or included as part of " +"an HTTP POST request." +msgstr "" + +#: library/base64.rst:56 msgid "" "Encode the :term:`bytes-like object` *s* using Base64 and return the " "encoded :class:`bytes`." msgstr "" -#: library/base64.rst:56 +#: library/base64.rst:59 msgid "" "Optional *altchars* must be a :term:`bytes-like object` of length 2 which " "specifies an alternative alphabet for the ``+`` and ``/`` characters. This " @@ -93,32 +92,32 @@ msgid "" "used." msgstr "" -#: library/base64.rst:61 +#: library/base64.rst:64 msgid "" "May assert or raise a :exc:`ValueError` if the length of *altchars* is not " "2. Raises a :exc:`TypeError` if *altchars* is not a :term:`bytes-like " "object`." msgstr "" -#: library/base64.rst:67 +#: library/base64.rst:70 msgid "" "Decode the Base64 encoded :term:`bytes-like object` or ASCII string *s* and " "return the decoded :class:`bytes`." msgstr "" -#: library/base64.rst:70 +#: library/base64.rst:73 msgid "" "Optional *altchars* must be a :term:`bytes-like object` or ASCII string of " "length 2 which specifies the alternative alphabet used instead of the ``+`` " "and ``/`` characters." msgstr "" -#: library/base64.rst:74 +#: library/base64.rst:77 msgid "" "A :exc:`binascii.Error` exception is raised if *s* is incorrectly padded." msgstr "" -#: library/base64.rst:77 +#: library/base64.rst:80 msgid "" "If *validate* is ``False`` (the default), characters that are neither in the " "normal base-64 alphabet nor the alternative alphabet are discarded prior to " @@ -126,30 +125,30 @@ msgid "" "in the input result in a :exc:`binascii.Error`." msgstr "" -#: library/base64.rst:83 +#: library/base64.rst:86 msgid "" "For more information about the strict base64 check, see :func:`binascii." "a2b_base64`" msgstr "" -#: library/base64.rst:85 +#: library/base64.rst:88 msgid "" "May assert or raise a :exc:`ValueError` if the length of *altchars* is not 2." msgstr "" -#: library/base64.rst:89 +#: library/base64.rst:92 msgid "" "Encode :term:`bytes-like object` *s* using the standard Base64 alphabet and " "return the encoded :class:`bytes`." msgstr "" -#: library/base64.rst:95 +#: library/base64.rst:98 msgid "" "Decode :term:`bytes-like object` or ASCII string *s* using the standard " "Base64 alphabet and return the decoded :class:`bytes`." msgstr "" -#: library/base64.rst:101 +#: library/base64.rst:104 msgid "" "Encode :term:`bytes-like object` *s* using the URL- and filesystem-safe " "alphabet, which substitutes ``-`` instead of ``+`` and ``_`` instead of ``/" @@ -157,7 +156,7 @@ msgid "" "The result can still contain ``=``." msgstr "" -#: library/base64.rst:110 +#: library/base64.rst:113 msgid "" "Decode :term:`bytes-like object` or ASCII string *s* using the URL- and " "filesystem-safe alphabet, which substitutes ``-`` instead of ``+`` and ``_`` " @@ -165,25 +164,25 @@ msgid "" "class:`bytes`." msgstr "" -#: library/base64.rst:119 +#: library/base64.rst:122 msgid "" "Encode the :term:`bytes-like object` *s* using Base32 and return the " "encoded :class:`bytes`." msgstr "" -#: library/base64.rst:125 +#: library/base64.rst:128 msgid "" "Decode the Base32 encoded :term:`bytes-like object` or ASCII string *s* and " "return the decoded :class:`bytes`." msgstr "" -#: library/base64.rst:176 +#: library/base64.rst:179 msgid "" "Optional *casefold* is a flag specifying whether a lowercase alphabet is " "acceptable as input. For security purposes, the default is ``False``." msgstr "" -#: library/base64.rst:132 +#: library/base64.rst:135 msgid "" ":rfc:`4648` allows for optional mapping of the digit 0 (zero) to the letter " "O (oh), and for optional mapping of the digit 1 (one) to either the letter I " @@ -194,25 +193,25 @@ msgid "" "input." msgstr "" -#: library/base64.rst:180 +#: library/base64.rst:183 msgid "" "A :exc:`binascii.Error` is raised if *s* is incorrectly padded or if there " "are non-alphabet characters present in the input." msgstr "" -#: library/base64.rst:146 +#: library/base64.rst:149 msgid "" "Similar to :func:`b32encode` but uses the Extended Hex Alphabet, as defined " "in :rfc:`4648`." msgstr "" -#: library/base64.rst:154 +#: library/base64.rst:157 msgid "" "Similar to :func:`b32decode` but uses the Extended Hex Alphabet, as defined " "in :rfc:`4648`." msgstr "" -#: library/base64.rst:157 +#: library/base64.rst:160 msgid "" "This version does not allow the digit 0 (zero) to the letter O (oh) and " "digit 1 (one) to either the letter I (eye) or letter L (el) mappings, all " @@ -220,70 +219,114 @@ msgid "" "interchangeable." msgstr "" -#: library/base64.rst:167 +#: library/base64.rst:170 msgid "" "Encode the :term:`bytes-like object` *s* using Base16 and return the " "encoded :class:`bytes`." msgstr "" -#: library/base64.rst:173 +#: library/base64.rst:176 msgid "" "Decode the Base16 encoded :term:`bytes-like object` or ASCII string *s* and " "return the decoded :class:`bytes`." msgstr "" -#: library/base64.rst:187 +#: library/base64.rst:190 +msgid "Base85 Encodings" +msgstr "" + +#: library/base64.rst:192 +msgid "" +"Base85 encoding is not formally specified but rather a de facto standard, " +"thus different systems perform the encoding differently." +msgstr "" + +#: library/base64.rst:195 +msgid "" +"The :func:`a85encode` and :func:`b85encode` functions in this module are two " +"implementations of the de facto standard. You should call the function with " +"the Base85 implementation used by the software you intend to work with." +msgstr "" + +#: library/base64.rst:199 +msgid "" +"The two functions present in this module differ in how they handle the " +"following:" +msgstr "" + +#: library/base64.rst:201 +msgid "Whether to include enclosing ``<~`` and ``~>`` markers" +msgstr "" + +#: library/base64.rst:202 +msgid "Whether to include newline characters" +msgstr "" + +#: library/base64.rst:203 +msgid "The set of ASCII characters used for encoding" +msgstr "" + +#: library/base64.rst:204 +msgid "Handling of null bytes" +msgstr "" + +#: library/base64.rst:206 +msgid "" +"Refer to the documentation of the individual functions for more information." +msgstr "" + +#: library/base64.rst:210 msgid "" "Encode the :term:`bytes-like object` *b* using Ascii85 and return the " "encoded :class:`bytes`." msgstr "" -#: library/base64.rst:190 +#: library/base64.rst:213 msgid "" "*foldspaces* is an optional flag that uses the special short sequence 'y' " "instead of 4 consecutive spaces (ASCII 0x20) as supported by 'btoa'. This " "feature is not supported by the \"standard\" Ascii85 encoding." msgstr "" -#: library/base64.rst:194 +#: library/base64.rst:217 msgid "" "*wrapcol* controls whether the output should have newline (``b'\\n'``) " "characters added to it. If this is non-zero, each output line will be at " "most this many characters long, excluding the trailing newline." msgstr "" -#: library/base64.rst:198 +#: library/base64.rst:221 msgid "" "*pad* controls whether the input is padded to a multiple of 4 before " "encoding. Note that the ``btoa`` implementation always pads." msgstr "" -#: library/base64.rst:201 +#: library/base64.rst:224 msgid "" "*adobe* controls whether the encoded byte sequence is framed with ``<~`` and " "``~>``, which is used by the Adobe implementation." msgstr "" -#: library/base64.rst:209 +#: library/base64.rst:232 msgid "" "Decode the Ascii85 encoded :term:`bytes-like object` or ASCII string *b* and " "return the decoded :class:`bytes`." msgstr "" -#: library/base64.rst:212 +#: library/base64.rst:235 msgid "" "*foldspaces* is a flag that specifies whether the 'y' short sequence should " "be accepted as shorthand for 4 consecutive spaces (ASCII 0x20). This feature " "is not supported by the \"standard\" Ascii85 encoding." msgstr "" -#: library/base64.rst:216 +#: library/base64.rst:239 msgid "" "*adobe* controls whether the input sequence is in Adobe Ascii85 format (i.e. " "is framed with <~ and ~>)." msgstr "" -#: library/base64.rst:219 +#: library/base64.rst:242 msgid "" "*ignorechars* should be a :term:`bytes-like object` or ASCII string " "containing characters to ignore from the input. This should only contain " @@ -291,44 +334,44 @@ msgid "" "ASCII." msgstr "" -#: library/base64.rst:229 +#: library/base64.rst:252 msgid "" "Encode the :term:`bytes-like object` *b* using base85 (as used in e.g. git-" "style binary diffs) and return the encoded :class:`bytes`." msgstr "" -#: library/base64.rst:232 +#: library/base64.rst:255 msgid "" "If *pad* is true, the input is padded with ``b'\\0'`` so its length is a " "multiple of 4 bytes before encoding." msgstr "" -#: library/base64.rst:240 +#: library/base64.rst:263 msgid "" "Decode the base85-encoded :term:`bytes-like object` or ASCII string *b* and " "return the decoded :class:`bytes`. Padding is implicitly removed, if " "necessary." msgstr "" -#: library/base64.rst:249 +#: library/base64.rst:272 msgid "" "Encode the :term:`bytes-like object` *s* using Z85 (as used in ZeroMQ) and " "return the encoded :class:`bytes`. See `Z85 specification `_ for more information." msgstr "" -#: library/base64.rst:258 +#: library/base64.rst:281 msgid "" "Decode the Z85-encoded :term:`bytes-like object` or ASCII string *s* and " "return the decoded :class:`bytes`. See `Z85 specification `_ for more information." msgstr "" -#: library/base64.rst:265 -msgid "The legacy interface:" +#: library/base64.rst:291 +msgid "Legacy Interface" msgstr "" -#: library/base64.rst:269 +#: library/base64.rst:295 msgid "" "Decode the contents of the binary *input* file and write the resulting " "binary data to the *output* file. *input* and *output* must be :term:`file " @@ -336,13 +379,13 @@ msgid "" "returns an empty bytes object." msgstr "" -#: library/base64.rst:277 +#: library/base64.rst:303 msgid "" "Decode the :term:`bytes-like object` *s*, which must contain one or more " "lines of base64 encoded data, and return the decoded :class:`bytes`." msgstr "" -#: library/base64.rst:285 +#: library/base64.rst:311 msgid "" "Encode the contents of the binary *input* file and write the resulting " "base64 encoded data to the *output* file. *input* and *output* must be :term:" @@ -352,7 +395,7 @@ msgid "" "the output always ends with a newline, as per :rfc:`2045` (MIME)." msgstr "" -#: library/base64.rst:295 +#: library/base64.rst:321 msgid "" "Encode the :term:`bytes-like object` *s*, which can contain arbitrary binary " "data, and return :class:`bytes` containing the base64-encoded data, with " @@ -360,38 +403,38 @@ msgid "" "that there is a trailing newline, as per :rfc:`2045` (MIME)." msgstr "" -#: library/base64.rst:303 +#: library/base64.rst:329 msgid "An example usage of the module:" msgstr "" -#: library/base64.rst:316 +#: library/base64.rst:342 msgid "Security Considerations" msgstr "" -#: library/base64.rst:318 +#: library/base64.rst:344 msgid "" "A new security considerations section was added to :rfc:`4648` (section 12); " "it's recommended to review the security section for any code deployed to " "production." msgstr "" -#: library/base64.rst:323 +#: library/base64.rst:349 msgid "Module :mod:`binascii`" msgstr "" -#: library/base64.rst:324 +#: library/base64.rst:350 msgid "" "Support module containing ASCII-to-binary and binary-to-ASCII conversions." msgstr "" -#: library/base64.rst:326 +#: library/base64.rst:352 msgid "" ":rfc:`1521` - MIME (Multipurpose Internet Mail Extensions) Part One: " "Mechanisms for Specifying and Describing the Format of Internet Message " "Bodies" msgstr "" -#: library/base64.rst:327 +#: library/base64.rst:353 msgid "" "Section 5.2, \"Base64 Content-Transfer-Encoding,\" provides the definition " "of the base64 encoding." diff --git a/library/bdb.po b/library/bdb.po index 2640c9b5..5651a040 100644 --- a/library/bdb.po +++ b/library/bdb.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/binary.po b/library/binary.po index b3e35bcd..22e43b29 100644 --- a/library/binary.po +++ b/library/binary.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-20 17:46+0300\n" "Last-Translator: ALEXANDROS TZIORAS alextzioras23@gmail.com\n" "Language-Team: Language-Team: PyGreece \n" diff --git a/library/binascii.po b/library/binascii.po index 5f88de65..d5d17cb4 100644 --- a/library/binascii.po +++ b/library/binascii.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/bisect.po b/library/bisect.po index 9ca0dbee..75ef15ab 100644 --- a/library/bisect.po +++ b/library/bisect.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/builtins.po b/library/builtins.po index fd656648..3dff8dbf 100644 --- a/library/builtins.po +++ b/library/builtins.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/bz2.po b/library/bz2.po index 45d09f97..6f0073db 100644 --- a/library/bz2.po +++ b/library/bz2.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/calendar.po b/library/calendar.po index 83a7a6ec..32ff76de 100644 --- a/library/calendar.po +++ b/library/calendar.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/cgi.po b/library/cgi.po index 15137da9..71fe2249 100644 --- a/library/cgi.po +++ b/library/cgi.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/cgitb.po b/library/cgitb.po index 87effd81..259146d0 100644 --- a/library/cgitb.po +++ b/library/cgitb.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/chunk.po b/library/chunk.po index 2eb96418..51924259 100644 --- a/library/chunk.po +++ b/library/chunk.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/cmath.po b/library/cmath.po index d4ead8a9..cf43eba7 100644 --- a/library/cmath.po +++ b/library/cmath.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/cmd.po b/library/cmd.po index 8ab2b852..033c646f 100644 --- a/library/cmd.po +++ b/library/cmd.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/cmdline.po b/library/cmdline.po index 613893e0..9e9836df 100644 --- a/library/cmdline.po +++ b/library/cmdline.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-21 12:24+0300\n" "Last-Translator: ALEXANDROS TZIORAS alextzioras23@gmail.com\n" "Language-Team: Language-Team: PyGreece \n" diff --git a/library/cmdlinelibs.po b/library/cmdlinelibs.po index 8f3c49f0..c9d9cd1f 100644 --- a/library/cmdlinelibs.po +++ b/library/cmdlinelibs.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.13\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/code.po b/library/code.po index 1576f301..e828fc74 100644 --- a/library/code.po +++ b/library/code.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -42,7 +42,15 @@ msgid "" "``'__console__'`` and key ``'__doc__'`` set to ``None``." msgstr "" -#: library/code.rst:28 +#: library/code.rst:25 +msgid "" +"Note that functions and classes objects created under an :class:`!" +"InteractiveInterpreter` instance will belong to the namespace specified by " +"*locals*. They are only pickleable if *locals* is the namespace of an " +"existing module." +msgstr "" + +#: library/code.rst:34 msgid "" "Closely emulate the behavior of the interactive Python interpreter. This " "class builds on :class:`InteractiveInterpreter` and adds prompting using the " @@ -51,11 +59,11 @@ msgid "" "`SystemExit`, but instead return to the calling code." msgstr "" -#: library/code.rst:52 +#: library/code.rst:58 msgid "Added *local_exit* parameter." msgstr "" -#: library/code.rst:39 +#: library/code.rst:45 msgid "" "Convenience function to run a read-eval-print loop. This creates a new " "instance of :class:`InteractiveConsole` and sets *readfunc* to be used as " @@ -68,11 +76,11 @@ msgid "" "provided. The console object is discarded after use." msgstr "" -#: library/code.rst:49 +#: library/code.rst:55 msgid "Added *exitmsg* parameter." msgstr "" -#: library/code.rst:57 +#: library/code.rst:63 msgid "" "This function is useful for programs that want to emulate Python's " "interpreter main loop (a.k.a. the read-eval-print loop). The tricky part is " @@ -82,7 +90,7 @@ msgid "" "real interpreter main loop." msgstr "" -#: library/code.rst:64 +#: library/code.rst:70 msgid "" "*source* is the source string; *filename* is the optional filename from " "which source was read, defaulting to ``''``; and *symbol* is the " @@ -90,7 +98,7 @@ msgid "" "``'eval'`` or ``'exec'``." msgstr "" -#: library/code.rst:69 +#: library/code.rst:75 msgid "" "Returns a code object (the same as ``compile(source, filename, symbol)``) if " "the command is complete and valid; ``None`` if the command is incomplete; " @@ -99,18 +107,18 @@ msgid "" "contains an invalid literal." msgstr "" -#: library/code.rst:79 +#: library/code.rst:85 msgid "Interactive Interpreter Objects" msgstr "" -#: library/code.rst:84 +#: library/code.rst:90 msgid "" "Compile and run some source in the interpreter. Arguments are the same as " "for :func:`compile_command`; the default for *filename* is ``''``, " "and for *symbol* is ``'single'``. One of several things can happen:" msgstr "" -#: library/code.rst:88 +#: library/code.rst:94 msgid "" "The input is incorrect; :func:`compile_command` raised an exception (:exc:" "`SyntaxError` or :exc:`OverflowError`). A syntax traceback will be printed " @@ -118,13 +126,13 @@ msgid "" "``False``." msgstr "" -#: library/code.rst:93 +#: library/code.rst:99 msgid "" "The input is incomplete, and more input is required; :func:`compile_command` " "returned ``None``. :meth:`runsource` returns ``True``." msgstr "" -#: library/code.rst:96 +#: library/code.rst:102 msgid "" "The input is complete; :func:`compile_command` returned a code object. The " "code is executed by calling the :meth:`runcode` (which also handles run-time " @@ -132,27 +140,27 @@ msgid "" "``False``." msgstr "" -#: library/code.rst:100 +#: library/code.rst:106 msgid "" "The return value can be used to decide whether to use ``sys.ps1`` or ``sys." "ps2`` to prompt the next line." msgstr "" -#: library/code.rst:106 +#: library/code.rst:112 msgid "" "Execute a code object. When an exception occurs, :meth:`showtraceback` is " "called to display a traceback. All exceptions are caught except :exc:" "`SystemExit`, which is allowed to propagate." msgstr "" -#: library/code.rst:110 +#: library/code.rst:116 msgid "" "A note about :exc:`KeyboardInterrupt`: this exception may occur elsewhere in " "this code, and may not always be caught. The caller should be prepared to " "deal with it." msgstr "" -#: library/code.rst:117 +#: library/code.rst:123 msgid "" "Display the syntax error that just occurred. This does not display a stack " "trace because there isn't one for syntax errors. If *filename* is given, it " @@ -161,38 +169,38 @@ msgid "" "string. The output is written by the :meth:`write` method." msgstr "" -#: library/code.rst:126 +#: library/code.rst:132 msgid "" "Display the exception that just occurred. We remove the first stack item " "because it is within the interpreter object implementation. The output is " "written by the :meth:`write` method." msgstr "" -#: library/code.rst:130 +#: library/code.rst:136 msgid "" "The full chained traceback is displayed instead of just the primary " "traceback." msgstr "" -#: library/code.rst:136 +#: library/code.rst:142 msgid "" "Write a string to the standard error stream (``sys.stderr``). Derived " "classes should override this to provide the appropriate output handling as " "needed." msgstr "" -#: library/code.rst:143 +#: library/code.rst:149 msgid "Interactive Console Objects" msgstr "" -#: library/code.rst:145 +#: library/code.rst:151 msgid "" "The :class:`InteractiveConsole` class is a subclass of :class:" "`InteractiveInterpreter`, and so offers all the methods of the interpreter " "objects as well as the following additions." msgstr "" -#: library/code.rst:152 +#: library/code.rst:158 msgid "" "Closely emulate the interactive Python console. The optional *banner* " "argument specify the banner to print before the first interaction; by " @@ -202,22 +210,22 @@ msgid "" "close!)." msgstr "" -#: library/code.rst:158 +#: library/code.rst:164 msgid "" "The optional *exitmsg* argument specifies an exit message printed when " "exiting. Pass the empty string to suppress the exit message. If *exitmsg* is " "not given or ``None``, a default message is printed." msgstr "" -#: library/code.rst:162 +#: library/code.rst:168 msgid "To suppress printing any banner, pass an empty string." msgstr "" -#: library/code.rst:165 +#: library/code.rst:171 msgid "Print an exit message when exiting." msgstr "" -#: library/code.rst:171 +#: library/code.rst:177 msgid "" "Push a line of source text to the interpreter. The line should not have a " "trailing newline; it may have internal newlines. The line is appended to a " @@ -230,11 +238,11 @@ msgid "" "same as :meth:`!runsource`)." msgstr "" -#: library/code.rst:183 +#: library/code.rst:189 msgid "Remove any unhandled source text from the input buffer." msgstr "" -#: library/code.rst:188 +#: library/code.rst:194 msgid "" "Write a prompt and read a line. The returned line does not include the " "trailing newline. When the user enters the EOF key sequence, :exc:" diff --git a/library/codecs.po b/library/codecs.po index 6a713c56..6ac2a7e4 100644 --- a/library/codecs.po +++ b/library/codecs.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/codeop.po b/library/codeop.po index 1814ae49..686da5e8 100644 --- a/library/codeop.po +++ b/library/codeop.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/collections.abc.po b/library/collections.abc.po index b3a4cf1c..ecaa8fff 100644 --- a/library/collections.abc.po +++ b/library/collections.abc.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-02 23:52+0200\n" "Last-Translator: Marios Giannopoulos \n" "Language-Team: PyGreece \n" diff --git a/library/collections.po b/library/collections.po index 46d2df73..c8ee4623 100644 --- a/library/collections.po +++ b/library/collections.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/colorsys.po b/library/colorsys.po index ddf5f862..fe74af11 100644 --- a/library/colorsys.po +++ b/library/colorsys.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-20 12:46+0300\n" "Last-Translator: ALEXANDROS TZIORAS alextzioras23@gmail.com\n" "Language-Team: Language-Team: PyGreece \n" diff --git a/library/compileall.po b/library/compileall.po index 7203d66b..1e8afbdf 100644 --- a/library/compileall.po +++ b/library/compileall.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -86,26 +86,40 @@ msgid "" "executed." msgstr "" -#: library/compileall.rst:61 +#: library/compileall.rst:60 msgid "" -"Remove (``-s``) or append (``-p``) the given prefix of paths recorded in the " -"``.pyc`` files. Cannot be combined with ``-d``." +"Remove the given prefix from paths recorded in the ``.pyc`` files. Paths are " +"made relative to the prefix." +msgstr "" + +#: library/compileall.rst:63 +msgid "This option can be used with ``-p`` but not with ``-d``." msgstr "" #: library/compileall.rst:67 msgid "" +"Prepend the given prefix to paths recorded in the ``.pyc`` files. Use ``-p /" +"`` to make the paths absolute." +msgstr "" + +#: library/compileall.rst:70 +msgid "This option can be used with ``-s`` but not with ``-d``." +msgstr "" + +#: library/compileall.rst:74 +msgid "" "regex is used to search the full path to each file considered for " "compilation, and if the regex produces a match, the file is skipped." msgstr "" -#: library/compileall.rst:72 +#: library/compileall.rst:79 msgid "" "Read the file ``list`` and add each line that it contains to the list of " "files and directories to compile. If ``list`` is ``-``, read lines from " "``stdin``." msgstr "" -#: library/compileall.rst:78 +#: library/compileall.rst:85 msgid "" "Write the byte-code files to their legacy locations and names, which may " "overwrite byte-code files created by another version of Python. The default " @@ -113,7 +127,7 @@ msgid "" "byte-code files from multiple versions of Python to coexist." msgstr "" -#: library/compileall.rst:85 +#: library/compileall.rst:92 msgid "" "Control the maximum recursion level for subdirectories. If this is given, " "then ``-l`` option will not be taken into account. :program:`python -m " @@ -121,13 +135,13 @@ msgid "" " -l`." msgstr "" -#: library/compileall.rst:92 +#: library/compileall.rst:99 msgid "" "Use *N* workers to compile the files within the given directory. If ``0`` is " "used, then the result of :func:`os.process_cpu_count` will be used." msgstr "" -#: library/compileall.rst:98 +#: library/compileall.rst:105 msgid "" "Control how the generated byte-code files are invalidated at runtime. The " "``timestamp`` value, means that ``.pyc`` files with the source timestamp and " @@ -140,53 +154,53 @@ msgid "" "the ``SOURCE_DATE_EPOCH`` environment variable is set." msgstr "" -#: library/compileall.rst:111 +#: library/compileall.rst:118 msgid "" "Compile with the given optimization level. May be used multiple times to " "compile for multiple levels at a time (for example, ``compileall -o 1 -o " "2``)." msgstr "" -#: library/compileall.rst:117 +#: library/compileall.rst:124 msgid "Ignore symlinks pointing outside the given directory." msgstr "" -#: library/compileall.rst:121 +#: library/compileall.rst:128 msgid "" "If two ``.pyc`` files with different optimization level have the same " "content, use hard links to consolidate duplicate files." msgstr "" -#: library/compileall.rst:124 +#: library/compileall.rst:131 msgid "Added the ``-i``, ``-b`` and ``-h`` options." msgstr "" -#: library/compileall.rst:127 +#: library/compileall.rst:134 msgid "" "Added the ``-j``, ``-r``, and ``-qq`` options. ``-q`` option was changed " "to a multilevel value. ``-b`` will always produce a byte-code file ending " "in ``.pyc``, never ``.pyo``." msgstr "" -#: library/compileall.rst:132 +#: library/compileall.rst:139 msgid "Added the ``--invalidation-mode`` option." msgstr "" -#: library/compileall.rst:135 +#: library/compileall.rst:142 msgid "" "Added the ``-s``, ``-p``, ``-e`` and ``--hardlink-dupes`` options. Raised " "the default recursion limit from 10 to :py:func:`sys.getrecursionlimit()`. " "Added the possibility to specify the ``-o`` option multiple times." msgstr "" -#: library/compileall.rst:142 +#: library/compileall.rst:149 msgid "" "There is no command-line option to control the optimization level used by " "the :func:`compile` function, because the Python interpreter itself already " "provides the option: :program:`python -O -m compileall`." msgstr "" -#: library/compileall.rst:146 +#: library/compileall.rst:153 msgid "" "Similarly, the :func:`compile` function respects the :data:`sys." "pycache_prefix` setting. The generated bytecode cache will only be useful " @@ -194,24 +208,24 @@ msgid "" "that will be used at runtime." msgstr "" -#: library/compileall.rst:152 +#: library/compileall.rst:159 msgid "Public functions" msgstr "" -#: library/compileall.rst:156 +#: library/compileall.rst:163 msgid "" "Recursively descend the directory tree named by *dir*, compiling all :file:`." "py` files along the way. Return a true value if all the files compiled " "successfully, and a false value otherwise." msgstr "" -#: library/compileall.rst:160 +#: library/compileall.rst:167 msgid "" "The *maxlevels* parameter is used to limit the depth of the recursion; it " "defaults to ``sys.getrecursionlimit()``." msgstr "" -#: library/compileall.rst:163 +#: library/compileall.rst:170 msgid "" "If *ddir* is given, it is prepended to the path to each file being compiled " "for use in compilation time tracebacks, and is also compiled in to the byte-" @@ -220,13 +234,13 @@ msgid "" "executed." msgstr "" -#: library/compileall.rst:169 +#: library/compileall.rst:176 msgid "" "If *force* is true, modules are re-compiled even if the timestamps are up to " "date." msgstr "" -#: library/compileall.rst:172 +#: library/compileall.rst:179 msgid "" "If *rx* is given, its ``search`` method is called on the complete path to " "each file considered for compilation, and if it returns a true value, the " @@ -234,14 +248,14 @@ msgid "" "expression, given as a :ref:`re.Pattern ` object." msgstr "" -#: library/compileall.rst:254 +#: library/compileall.rst:261 msgid "" "If *quiet* is ``False`` or ``0`` (the default), the filenames and other " "information are printed to standard out. Set to ``1``, only errors are " "printed. Set to ``2``, all output is suppressed." msgstr "" -#: library/compileall.rst:258 +#: library/compileall.rst:265 msgid "" "If *legacy* is true, byte-code files are written to their legacy locations " "and names, which may overwrite byte-code files created by another version of " @@ -250,7 +264,7 @@ msgid "" "coexist." msgstr "" -#: library/compileall.rst:264 +#: library/compileall.rst:271 msgid "" "*optimize* specifies the optimization level for the compiler. It is passed " "to the built-in :func:`compile` function. Accepts also a sequence of " @@ -258,7 +272,7 @@ msgid "" "file in one call." msgstr "" -#: library/compileall.rst:191 +#: library/compileall.rst:198 msgid "" "The argument *workers* specifies how many workers are used to compile files " "in parallel. The default is to not use multiple workers. If the platform " @@ -268,76 +282,76 @@ msgid "" "`ValueError` will be raised." msgstr "" -#: library/compileall.rst:268 +#: library/compileall.rst:275 msgid "" "*invalidation_mode* should be a member of the :class:`py_compile." "PycInvalidationMode` enum and controls how the generated pycs are " "invalidated at runtime." msgstr "" -#: library/compileall.rst:272 +#: library/compileall.rst:279 msgid "" "The *stripdir*, *prependdir* and *limit_sl_dest* arguments correspond to the " "``-s``, ``-p`` and ``-e`` options described above. They may be specified as " "``str`` or :py:class:`os.PathLike`." msgstr "" -#: library/compileall.rst:276 +#: library/compileall.rst:283 msgid "" "If *hardlink_dupes* is true and two ``.pyc`` files with different " "optimization level have the same content, use hard links to consolidate " "duplicate files." msgstr "" -#: library/compileall.rst:307 +#: library/compileall.rst:314 msgid "Added the *legacy* and *optimize* parameter." msgstr "" -#: library/compileall.rst:212 +#: library/compileall.rst:219 msgid "Added the *workers* parameter." msgstr "" -#: library/compileall.rst:281 library/compileall.rst:310 +#: library/compileall.rst:288 library/compileall.rst:317 msgid "*quiet* parameter was changed to a multilevel value." msgstr "" -#: library/compileall.rst:284 library/compileall.rst:313 +#: library/compileall.rst:291 library/compileall.rst:320 msgid "" "The *legacy* parameter only writes out ``.pyc`` files, not ``.pyo`` files no " "matter what the value of *optimize* is." msgstr "" -#: library/compileall.rst:222 +#: library/compileall.rst:229 msgid "Accepts a :term:`path-like object`." msgstr "" -#: library/compileall.rst:288 library/compileall.rst:317 +#: library/compileall.rst:295 library/compileall.rst:324 msgid "The *invalidation_mode* parameter was added." msgstr "" -#: library/compileall.rst:291 library/compileall.rst:320 +#: library/compileall.rst:298 library/compileall.rst:327 msgid "" "The *invalidation_mode* parameter's default value is updated to ``None``." msgstr "" -#: library/compileall.rst:231 +#: library/compileall.rst:238 msgid "Setting *workers* to 0 now chooses the optimal number of cores." msgstr "" -#: library/compileall.rst:234 +#: library/compileall.rst:241 msgid "" "Added *stripdir*, *prependdir*, *limit_sl_dest* and *hardlink_dupes* " "arguments. Default value of *maxlevels* was changed from ``10`` to ``sys." "getrecursionlimit()``" msgstr "" -#: library/compileall.rst:240 +#: library/compileall.rst:247 msgid "" "Compile the file with path *fullname*. Return a true value if the file " "compiled successfully, and a false value otherwise." msgstr "" -#: library/compileall.rst:243 +#: library/compileall.rst:250 msgid "" "If *ddir* is given, it is prepended to the path to the file being compiled " "for use in compilation time tracebacks, and is also compiled in to the byte-" @@ -346,7 +360,7 @@ msgid "" "executed." msgstr "" -#: library/compileall.rst:249 +#: library/compileall.rst:256 msgid "" "If *rx* is given, its ``search`` method is passed the full path name to the " "file being compiled, and if it returns a true value, the file is not " @@ -355,20 +369,20 @@ msgid "" "object." msgstr "" -#: library/compileall.rst:294 +#: library/compileall.rst:301 msgid "" "Added *stripdir*, *prependdir*, *limit_sl_dest* and *hardlink_dupes* " "arguments." msgstr "" -#: library/compileall.rst:299 +#: library/compileall.rst:306 msgid "" "Byte-compile all the :file:`.py` files found along ``sys.path``. Return a " "true value if all the files compiled successfully, and a false value " "otherwise." msgstr "" -#: library/compileall.rst:302 +#: library/compileall.rst:309 msgid "" "If *skip_curdir* is true (the default), the current directory is not " "included in the search. All other parameters are passed to the :func:" @@ -376,13 +390,13 @@ msgid "" "``maxlevels`` defaults to ``0``." msgstr "" -#: library/compileall.rst:323 +#: library/compileall.rst:330 msgid "" "To force a recompile of all the :file:`.py` files in the :file:`Lib/` " "subdirectory and all its subdirectories::" msgstr "" -#: library/compileall.rst:326 +#: library/compileall.rst:333 msgid "" "import compileall\n" "\n" @@ -397,10 +411,10 @@ msgid "" "compileall.compile_dir(pathlib.Path('Lib/'), force=True)" msgstr "" -#: library/compileall.rst:340 +#: library/compileall.rst:347 msgid "Module :mod:`py_compile`" msgstr "" -#: library/compileall.rst:341 +#: library/compileall.rst:348 msgid "Byte-compile a single source file." msgstr "" diff --git a/library/compression.po b/library/compression.po new file mode 100644 index 00000000..8211f561 --- /dev/null +++ b/library/compression.po @@ -0,0 +1,52 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2001 Python Software Foundation +# This file is distributed under the same license as the Python package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Python 3.14\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: library/compression.rst:2 +msgid "The :mod:`!compression` package" +msgstr "" + +#: library/compression.rst:6 +msgid "" +"The :mod:`!compression` package contains the canonical compression modules " +"containing interfaces to several different compression algorithms. Some of " +"these modules have historically been available as separate modules; those " +"will continue to be available under their original names for compatibility " +"reasons, and will not be removed without a deprecation cycle. The use of " +"modules in :mod:`!compression` is encouraged where practical." +msgstr "" + +#: library/compression.rst:13 +msgid ":mod:`!compression.bz2` -- Re-exports :mod:`bz2`" +msgstr "" + +#: library/compression.rst:14 +msgid ":mod:`!compression.gzip` -- Re-exports :mod:`gzip`" +msgstr "" + +#: library/compression.rst:15 +msgid ":mod:`!compression.lzma` -- Re-exports :mod:`lzma`" +msgstr "" + +#: library/compression.rst:16 +msgid ":mod:`!compression.zlib` -- Re-exports :mod:`zlib`" +msgstr "" + +#: library/compression.rst:17 +msgid "" +":mod:`compression.zstd` -- Wrapper for the Zstandard compression library" +msgstr "" diff --git a/library/compression.zstd.po b/library/compression.zstd.po new file mode 100644 index 00000000..aebde2e3 --- /dev/null +++ b/library/compression.zstd.po @@ -0,0 +1,1126 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2001 Python Software Foundation +# This file is distributed under the same license as the Python package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Python 3.14\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: library/compression.zstd.rst:2 +msgid "" +":mod:`!compression.zstd` --- Compression compatible with the Zstandard format" +msgstr "" + +#: library/compression.zstd.rst:10 +msgid "**Source code:** :source:`Lib/compression/zstd/__init__.py`" +msgstr "" + +#: library/compression.zstd.rst:14 +msgid "" +"This module provides classes and functions for compressing and decompressing " +"data using the Zstandard (or *zstd*) compression algorithm. The `zstd manual " +"`__ describes " +"Zstandard as \"a fast lossless compression algorithm, targeting real-time " +"compression scenarios at zlib-level and better compression ratios.\" Also " +"included is a file interface that supports reading and writing the contents " +"of ``.zst`` files created by the :program:`zstd` utility, as well as raw " +"zstd compressed streams." +msgstr "" + +#: library/compression.zstd.rst:23 +msgid "The :mod:`!compression.zstd` module contains:" +msgstr "" + +#: library/compression.zstd.rst:25 +msgid "" +"The :func:`.open` function and :class:`ZstdFile` class for reading and " +"writing compressed files." +msgstr "" + +#: library/compression.zstd.rst:27 +msgid "" +"The :class:`ZstdCompressor` and :class:`ZstdDecompressor` classes for " +"incremental (de)compression." +msgstr "" + +#: library/compression.zstd.rst:29 +msgid "" +"The :func:`compress` and :func:`decompress` functions for one-shot " +"(de)compression." +msgstr "" + +#: library/compression.zstd.rst:31 +msgid "" +"The :func:`train_dict` and :func:`finalize_dict` functions and the :class:" +"`ZstdDict` class to train and manage Zstandard dictionaries." +msgstr "" + +#: library/compression.zstd.rst:33 +msgid "" +"The :class:`CompressionParameter`, :class:`DecompressionParameter`, and :" +"class:`Strategy` classes for setting advanced (de)compression parameters." +msgstr "" + +#: library/compression.zstd.rst:38 +msgid "Exceptions" +msgstr "" + +#: library/compression.zstd.rst:42 +msgid "" +"This exception is raised when an error occurs during compression or " +"decompression, or while initializing the (de)compressor state." +msgstr "" + +#: library/compression.zstd.rst:47 +msgid "Reading and writing compressed files" +msgstr "" + +#: library/compression.zstd.rst:52 +msgid "" +"Open a Zstandard-compressed file in binary or text mode, returning a :term:" +"`file object`." +msgstr "" + +#: library/compression.zstd.rst:55 +msgid "" +"The *file* argument can be either a file name (given as a :class:`str`, :" +"class:`bytes` or :term:`path-like ` object), in which case " +"the named file is opened, or it can be an existing file object to read from " +"or write to." +msgstr "" + +#: library/compression.zstd.rst:60 +msgid "" +"The mode argument can be either ``'rb'`` for reading (default), ``'wb'`` for " +"overwriting, ``'ab'`` for appending, or ``'xb'`` for exclusive creation. " +"These can equivalently be given as ``'r'``, ``'w'``, ``'a'``, and ``'x'`` " +"respectively. You may also open in text mode with ``'rt'``, ``'wt'``, " +"``'at'``, and ``'xt'`` respectively." +msgstr "" + +#: library/compression.zstd.rst:66 library/compression.zstd.rst:110 +msgid "" +"When reading, the *options* argument can be a dictionary providing advanced " +"decompression parameters; see :class:`DecompressionParameter` for detailed " +"information about supported parameters. The *zstd_dict* argument is a :class:" +"`ZstdDict` instance to be used during decompression. When reading, if the " +"*level* argument is not None, a :exc:`!TypeError` will be raised." +msgstr "" + +#: library/compression.zstd.rst:73 +msgid "" +"When writing, the *options* argument can be a dictionary providing advanced " +"decompression parameters; see :class:`CompressionParameter` for detailed " +"information about supported parameters. The *level* argument is the " +"compression level to use when writing compressed data. Only one of *level* " +"or *options* may be non-None. The *zstd_dict* argument is a :class:" +"`ZstdDict` instance to be used during compression." +msgstr "" + +#: library/compression.zstd.rst:81 +msgid "" +"In binary mode, this function is equivalent to the :class:`ZstdFile` " +"constructor: ``ZstdFile(file, mode, ...)``. In this case, the *encoding*, " +"*errors*, and *newline* parameters must not be provided." +msgstr "" + +#: library/compression.zstd.rst:85 +msgid "" +"In text mode, a :class:`ZstdFile` object is created, and wrapped in an :" +"class:`io.TextIOWrapper` instance with the specified encoding, error " +"handling behavior, and line endings." +msgstr "" + +#: library/compression.zstd.rst:93 +msgid "Open a Zstandard-compressed file in binary mode." +msgstr "" + +#: library/compression.zstd.rst:95 +msgid "" +"A :class:`ZstdFile` can wrap an already-open :term:`file object`, or operate " +"directly on a named file. The *file* argument specifies either the file " +"object to wrap, or the name of the file to open (as a :class:`str`, :class:" +"`bytes` or :term:`path-like ` object). If wrapping an " +"existing file object, the wrapped file will not be closed when the :class:" +"`ZstdFile` is closed." +msgstr "" + +#: library/compression.zstd.rst:102 +msgid "" +"The *mode* argument can be either ``'rb'`` for reading (default), ``'wb'`` " +"for overwriting, ``'xb'`` for exclusive creation, or ``'ab'`` for appending. " +"These can equivalently be given as ``'r'``, ``'w'``, ``'x'`` and ``'a'`` " +"respectively." +msgstr "" + +#: library/compression.zstd.rst:107 +msgid "" +"If *file* is a file object (rather than an actual file name), a mode of " +"``'w'`` does not truncate the file, and is instead equivalent to ``'a'``." +msgstr "" + +#: library/compression.zstd.rst:117 +msgid "" +"When writing, the *options* argument can be a dictionary providing advanced " +"decompression parameters; see :class:`CompressionParameter` for detailed " +"information about supported parameters. The *level* argument is the " +"compression level to use when writing compressed data. Only one of *level* " +"or *options* may be passed. The *zstd_dict* argument is a :class:`ZstdDict` " +"instance to be used during compression." +msgstr "" + +#: library/compression.zstd.rst:125 +msgid "" +":class:`!ZstdFile` supports all the members specified by :class:`io." +"BufferedIOBase`, except for :meth:`~io.BufferedIOBase.detach` and :meth:`~io." +"IOBase.truncate`. Iteration and the :keyword:`with` statement are supported." +msgstr "" + +#: library/compression.zstd.rst:130 +msgid "The following method and attributes are also provided:" +msgstr "" + +#: library/compression.zstd.rst:134 +msgid "" +"Return buffered data without advancing the file position. At least one byte " +"of data will be returned, unless EOF has been reached. The exact number of " +"bytes returned is unspecified (the *size* argument is ignored)." +msgstr "" + +#: library/compression.zstd.rst:138 +msgid "" +"While calling :meth:`peek` does not change the file position of the :class:" +"`ZstdFile`, it may change the position of the underlying file object (for " +"example, if the :class:`ZstdFile` was constructed by passing a file object " +"for *file*)." +msgstr "" + +#: library/compression.zstd.rst:145 +msgid "``'rb'`` for reading and ``'wb'`` for writing." +msgstr "" + +#: library/compression.zstd.rst:149 +msgid "" +"The name of the Zstandard file. Equivalent to the :attr:`~io.FileIO.name` " +"attribute of the underlying :term:`file object`." +msgstr "" + +#: library/compression.zstd.rst:154 +msgid "Compressing and decompressing data in memory" +msgstr "" + +#: library/compression.zstd.rst:158 +msgid "" +"Compress *data* (a :term:`bytes-like object`), returning the compressed data " +"as a :class:`bytes` object." +msgstr "" + +#: library/compression.zstd.rst:161 library/compression.zstd.rst:205 +msgid "" +"The *level* argument is an integer controlling the level of compression. " +"*level* is an alternative to setting :attr:`CompressionParameter." +"compression_level` in *options*. Use :meth:`~CompressionParameter.bounds` " +"on :attr:`~CompressionParameter.compression_level` to get the values that " +"can be passed for *level*. If advanced compression options are needed, the " +"*level* argument must be omitted and in the *options* dictionary the :attr:`!" +"CompressionParameter.compression_level` parameter should be set." +msgstr "" + +#: library/compression.zstd.rst:170 library/compression.zstd.rst:214 +msgid "" +"The *options* argument is a Python dictionary containing advanced " +"compression parameters. The valid keys and values for compression parameters " +"are documented as part of the :class:`CompressionParameter` documentation." +msgstr "" + +#: library/compression.zstd.rst:174 +msgid "" +"The *zstd_dict* argument is an instance of :class:`ZstdDict` containing " +"trained data to improve compression efficiency. The function :func:" +"`train_dict` can be used to generate a Zstandard dictionary." +msgstr "" + +#: library/compression.zstd.rst:181 +msgid "" +"Decompress *data* (a :term:`bytes-like object`), returning the uncompressed " +"data as a :class:`bytes` object." +msgstr "" + +#: library/compression.zstd.rst:184 library/compression.zstd.rst:306 +msgid "" +"The *options* argument is a Python dictionary containing advanced " +"decompression parameters. The valid keys and values for compression " +"parameters are documented as part of the :class:`DecompressionParameter` " +"documentation." +msgstr "" + +#: library/compression.zstd.rst:189 library/compression.zstd.rst:311 +msgid "" +"The *zstd_dict* argument is an instance of :class:`ZstdDict` containing " +"trained data used during compression. This must be the same Zstandard " +"dictionary used during compression." +msgstr "" + +#: library/compression.zstd.rst:193 +msgid "" +"If *data* is the concatenation of multiple distinct compressed frames, " +"decompress all of these frames, and return the concatenation of the results." +msgstr "" + +#: library/compression.zstd.rst:199 +msgid "" +"Create a compressor object, which can be used to compress data incrementally." +msgstr "" + +#: library/compression.zstd.rst:202 +msgid "" +"For a more convenient way of compressing a single chunk of data, see the " +"module-level function :func:`compress`." +msgstr "" + +#: library/compression.zstd.rst:218 +msgid "" +"The *zstd_dict* argument is an optional instance of :class:`ZstdDict` " +"containing trained data to improve compression efficiency. The function :" +"func:`train_dict` can be used to generate a Zstandard dictionary." +msgstr "" + +#: library/compression.zstd.rst:225 +msgid "" +"Compress *data* (a :term:`bytes-like object`), returning a :class:`bytes` " +"object with compressed data if possible, or otherwise an empty :class:`!" +"bytes` object. Some of *data* may be buffered internally, for use in later " +"calls to :meth:`!compress` and :meth:`~.flush`. The returned data should be " +"concatenated with the output of any previous calls to :meth:`~.compress`." +msgstr "" + +#: library/compression.zstd.rst:232 +msgid "" +"The *mode* argument is a :class:`ZstdCompressor` attribute, either :attr:`~." +"CONTINUE`, :attr:`~.FLUSH_BLOCK`, or :attr:`~.FLUSH_FRAME`." +msgstr "" + +#: library/compression.zstd.rst:236 +msgid "" +"When all data has been provided to the compressor, call the :meth:`~.flush` " +"method to finish the compression process. If :meth:`~.compress` is called " +"with *mode* set to :attr:`~.FLUSH_FRAME`, :meth:`~.flush` should not be " +"called, as it would write out a new empty frame." +msgstr "" + +#: library/compression.zstd.rst:244 +msgid "" +"Finish the compression process, returning a :class:`bytes` object containing " +"any data stored in the compressor's internal buffers." +msgstr "" + +#: library/compression.zstd.rst:247 +msgid "" +"The *mode* argument is a :class:`ZstdCompressor` attribute, either :attr:`~." +"FLUSH_BLOCK`, or :attr:`~.FLUSH_FRAME`." +msgstr "" + +#: library/compression.zstd.rst:252 +msgid "" +"Specify the amount of uncompressed data *size* that will be provided for the " +"next frame. *size* will be written into the frame header of the next frame " +"unless :attr:`CompressionParameter.content_size_flag` is ``False`` or ``0``. " +"A size of ``0`` means that the frame is empty. If *size* is ``None``, the " +"frame header will omit the frame size. Frames that include the uncompressed " +"data size require less memory to decompress, especially at higher " +"compression levels." +msgstr "" + +#: library/compression.zstd.rst:260 +msgid "" +"If :attr:`last_mode` is not :attr:`FLUSH_FRAME`, a :exc:`ValueError` is " +"raised as the compressor is not at the start of a frame. If the pledged size " +"does not match the actual size of data provided to :meth:`.compress`, future " +"calls to :meth:`!compress` or :meth:`flush` may raise :exc:`ZstdError` and " +"the last chunk of data may be lost." +msgstr "" + +#: library/compression.zstd.rst:267 +msgid "" +"After :meth:`flush` or :meth:`.compress` are called with mode :attr:" +"`FLUSH_FRAME`, the next frame will not include the frame size into the " +"header unless :meth:`!set_pledged_input_size` is called again." +msgstr "" + +#: library/compression.zstd.rst:273 +msgid "" +"Collect more data for compression, which may or may not generate output " +"immediately. This mode optimizes the compression ratio by maximizing the " +"amount of data per block and frame." +msgstr "" + +#: library/compression.zstd.rst:279 +msgid "" +"Complete and write a block to the data stream. The data returned so far can " +"be immediately decompressed. Past data can still be referenced in future " +"blocks generated by calls to :meth:`~.compress`, improving compression." +msgstr "" + +#: library/compression.zstd.rst:286 +msgid "" +"Complete and write out a frame. Future data provided to :meth:`~.compress` " +"will be written into a new frame and *cannot* reference past data." +msgstr "" + +#: library/compression.zstd.rst:292 +msgid "" +"The last mode passed to either :meth:`~.compress` or :meth:`~.flush`. The " +"value can be one of :attr:`~.CONTINUE`, :attr:`~.FLUSH_BLOCK`, or :attr:`~." +"FLUSH_FRAME`. The initial value is :attr:`~.FLUSH_FRAME`, signifying that " +"the compressor is at the start of a new frame." +msgstr "" + +#: library/compression.zstd.rst:300 +msgid "" +"Create a decompressor object, which can be used to decompress data " +"incrementally." +msgstr "" + +#: library/compression.zstd.rst:303 +msgid "" +"For a more convenient way of decompressing an entire compressed stream at " +"once, see the module-level function :func:`decompress`." +msgstr "" + +#: library/compression.zstd.rst:316 +msgid "" +"This class does not transparently handle inputs containing multiple " +"compressed frames, unlike the :func:`decompress` function and :class:" +"`ZstdFile` class. To decompress a multi-frame input, you should use :func:" +"`decompress`, :class:`ZstdFile` if working with a :term:`file object`, or " +"multiple :class:`!ZstdDecompressor` instances." +msgstr "" + +#: library/compression.zstd.rst:324 +msgid "" +"Decompress *data* (a :term:`bytes-like object`), returning uncompressed data " +"as bytes. Some of *data* may be buffered internally, for use in later calls " +"to :meth:`!decompress`. The returned data should be concatenated with the " +"output of any previous calls to :meth:`!decompress`." +msgstr "" + +#: library/compression.zstd.rst:330 +msgid "" +"If *max_length* is non-negative, the method returns at most *max_length* " +"bytes of decompressed data. If this limit is reached and further output can " +"be produced, the :attr:`~.needs_input` attribute will be set to ``False``. " +"In this case, the next call to :meth:`~.decompress` may provide *data* as " +"``b''`` to obtain more of the output." +msgstr "" + +#: library/compression.zstd.rst:337 +msgid "" +"If all of the input data was decompressed and returned (either because this " +"was less than *max_length* bytes, or because *max_length* was negative), " +"the :attr:`~.needs_input` attribute will be set to ``True``." +msgstr "" + +#: library/compression.zstd.rst:342 +msgid "" +"Attempting to decompress data after the end of a frame will raise a :exc:" +"`ZstdError`. Any data found after the end of the frame is ignored and saved " +"in the :attr:`~.unused_data` attribute." +msgstr "" + +#: library/compression.zstd.rst:348 +msgid "``True`` if the end-of-stream marker has been reached." +msgstr "" + +#: library/compression.zstd.rst:352 +msgid "Data found after the end of the compressed stream." +msgstr "" + +#: library/compression.zstd.rst:354 +msgid "Before the end of the stream is reached, this will be ``b''``." +msgstr "" + +#: library/compression.zstd.rst:358 +msgid "" +"``False`` if the :meth:`.decompress` method can provide more decompressed " +"data before requiring new compressed input." +msgstr "" + +#: library/compression.zstd.rst:363 +msgid "Zstandard dictionaries" +msgstr "" + +#: library/compression.zstd.rst:368 +msgid "" +"Train a Zstandard dictionary, returning a :class:`ZstdDict` instance. " +"Zstandard dictionaries enable more efficient compression of smaller sizes of " +"data, which is traditionally difficult to compress due to less repetition. " +"If you are compressing multiple similar groups of data (such as similar " +"files), Zstandard dictionaries can improve compression ratios and speed " +"significantly." +msgstr "" + +#: library/compression.zstd.rst:375 +msgid "" +"The *samples* argument (an iterable of :class:`bytes` objects), is the " +"population of samples used to train the Zstandard dictionary." +msgstr "" + +#: library/compression.zstd.rst:378 +msgid "" +"The *dict_size* argument, an integer, is the maximum size (in bytes) the " +"Zstandard dictionary should be. The Zstandard documentation suggests an " +"absolute maximum of no more than 100 KB, but the maximum can often be " +"smaller depending on the data. Larger dictionaries generally slow down " +"compression, but improve compression ratios. Smaller dictionaries lead to " +"faster compression, but reduce the compression ratio." +msgstr "" + +#: library/compression.zstd.rst:388 +msgid "" +"An advanced function for converting a \"raw content\" Zstandard dictionary " +"into a regular Zstandard dictionary. \"Raw content\" dictionaries are a " +"sequence of bytes that do not need to follow the structure of a normal " +"Zstandard dictionary." +msgstr "" + +#: library/compression.zstd.rst:393 +msgid "" +"The *zstd_dict* argument is a :class:`ZstdDict` instance with the :attr:" +"`~ZstdDict.dict_content` containing the raw dictionary contents." +msgstr "" + +#: library/compression.zstd.rst:396 +msgid "" +"The *samples* argument (an iterable of :class:`bytes` objects), contains " +"sample data for generating the Zstandard dictionary." +msgstr "" + +#: library/compression.zstd.rst:399 +msgid "" +"The *dict_size* argument, an integer, is the maximum size (in bytes) the " +"Zstandard dictionary should be. See :func:`train_dict` for suggestions on " +"the maximum dictionary size." +msgstr "" + +#: library/compression.zstd.rst:403 +msgid "" +"The *level* argument (an integer) is the compression level expected to be " +"passed to the compressors using this dictionary. The dictionary information " +"varies for each compression level, so tuning for the proper compression " +"level can make compression more efficient." +msgstr "" + +#: library/compression.zstd.rst:411 +msgid "" +"A wrapper around Zstandard dictionaries. Dictionaries can be used to improve " +"the compression of many small chunks of data. Use :func:`train_dict` if you " +"need to train a new dictionary from sample data." +msgstr "" + +#: library/compression.zstd.rst:415 +msgid "" +"The *dict_content* argument (a :term:`bytes-like object`), is the already " +"trained dictionary information." +msgstr "" + +#: library/compression.zstd.rst:418 +msgid "" +"The *is_raw* argument, a boolean, is an advanced parameter controlling the " +"meaning of *dict_content*. ``True`` means *dict_content* is a \"raw " +"content\" dictionary, without any format restrictions. ``False`` means " +"*dict_content* is an ordinary Zstandard dictionary, created from Zstandard " +"functions, for example, :func:`train_dict` or the external :program:`zstd` " +"CLI." +msgstr "" + +#: library/compression.zstd.rst:424 +msgid "" +"When passing a :class:`!ZstdDict` to a function, the :attr:`!" +"as_digested_dict` and :attr:`!as_undigested_dict` attributes can control how " +"the dictionary is loaded by passing them as the ``zstd_dict`` argument, for " +"example, ``compress(data, zstd_dict=zd.as_digested_dict)``. Digesting a " +"dictionary is a costly operation that occurs when loading a Zstandard " +"dictionary. When making multiple calls to compression or decompression, " +"passing a digested dictionary will reduce the overhead of loading the " +"dictionary." +msgstr "" + +#: library/compression.zstd.rst:433 +msgid "Difference for compression" +msgstr "" + +#: library/compression.zstd.rst:438 +msgid "Digested dictionary" +msgstr "" + +#: library/compression.zstd.rst:439 +msgid "Undigested dictionary" +msgstr "" + +#: library/compression.zstd.rst:440 +msgid "" +"Advanced parameters of the compressor which may be overridden by the " +"dictionary's parameters" +msgstr "" + +#: library/compression.zstd.rst:442 +msgid "" +"``window_log``, ``hash_log``, ``chain_log``, ``search_log``, ``min_match``, " +"``target_length``, ``strategy``, ``enable_long_distance_matching``, " +"``ldm_hash_log``, ``ldm_min_match``, ``ldm_bucket_size_log``, " +"``ldm_hash_rate_log``, and some non-public parameters." +msgstr "" + +#: library/compression.zstd.rst:447 +msgid "None" +msgstr "" + +#: library/compression.zstd.rst:448 +msgid ":class:`!ZstdDict` internally caches the dictionary" +msgstr "" + +#: library/compression.zstd.rst:449 +msgid "" +"Yes. It's faster when loading a digested dictionary again with the same " +"compression level." +msgstr "" + +#: library/compression.zstd.rst:451 +msgid "" +"No. If you wish to load an undigested dictionary multiple times, consider " +"reusing a compressor object." +msgstr "" + +#: library/compression.zstd.rst:454 +msgid "" +"If passing a :class:`!ZstdDict` without any attribute, an undigested " +"dictionary is passed by default when compressing and a digested dictionary " +"is generated if necessary and passed by default when decompressing." +msgstr "" + +#: library/compression.zstd.rst:460 +msgid "" +"The content of the Zstandard dictionary, a ``bytes`` object. It's the same " +"as the *dict_content* argument in the ``__init__`` method. It can be used " +"with other programs, such as the ``zstd`` CLI program." +msgstr "" + +#: library/compression.zstd.rst:466 +msgid "Identifier of the Zstandard dictionary, a non-negative int value." +msgstr "" + +#: library/compression.zstd.rst:468 +msgid "" +"Non-zero means the dictionary is ordinary, created by Zstandard functions " +"and following the Zstandard format." +msgstr "" + +#: library/compression.zstd.rst:471 +msgid "" +"``0`` means a \"raw content\" dictionary, free of any format restriction, " +"used for advanced users." +msgstr "" + +#: library/compression.zstd.rst:476 +msgid "" +"The meaning of ``0`` for :attr:`!ZstdDict.dict_id` is different from the " +"``dictionary_id`` attribute to the :func:`get_frame_info` function." +msgstr "" + +#: library/compression.zstd.rst:482 +msgid "Load as a digested dictionary." +msgstr "" + +#: library/compression.zstd.rst:486 +msgid "Load as an undigested dictionary." +msgstr "" + +#: library/compression.zstd.rst:490 +msgid "Advanced parameter control" +msgstr "" + +#: library/compression.zstd.rst:494 +msgid "" +"An :class:`~enum.IntEnum` containing the advanced compression parameter keys " +"that can be used when compressing data." +msgstr "" + +#: library/compression.zstd.rst:497 library/compression.zstd.rst:725 +msgid "" +"The :meth:`~.bounds` method can be used on any attribute to get the valid " +"values for that parameter." +msgstr "" + +#: library/compression.zstd.rst:500 +msgid "" +"Parameters are optional; any omitted parameter will have it's value selected " +"automatically." +msgstr "" + +#: library/compression.zstd.rst:503 +msgid "" +"Example getting the lower and upper bound of :attr:`~.compression_level`::" +msgstr "" + +#: library/compression.zstd.rst:505 +msgid "lower, upper = CompressionParameter.compression_level.bounds()" +msgstr "" + +#: library/compression.zstd.rst:507 +msgid "Example setting the :attr:`~.window_log` to the maximum size::" +msgstr "" + +#: library/compression.zstd.rst:509 +msgid "" +"_lower, upper = CompressionParameter.window_log.bounds()\n" +"options = {CompressionParameter.window_log: upper}\n" +"compress(b'venezuelan beaver cheese', options=options)" +msgstr "" + +#: library/compression.zstd.rst:515 +msgid "" +"Return the tuple of int bounds, ``(lower, upper)``, of a compression " +"parameter. This method should be called on the attribute you wish to " +"retrieve the bounds of. For example, to get the valid values for :attr:`~." +"compression_level`, one may check the result of ``CompressionParameter." +"compression_level.bounds()``." +msgstr "" + +#: library/compression.zstd.rst:521 library/compression.zstd.rst:743 +msgid "Both the lower and upper bounds are inclusive." +msgstr "" + +#: library/compression.zstd.rst:525 +msgid "" +"A high-level means of setting other compression parameters that affect the " +"speed and ratio of compressing data. Setting the level to zero uses :attr:" +"`COMPRESSION_LEVEL_DEFAULT`." +msgstr "" + +#: library/compression.zstd.rst:531 +msgid "" +"Maximum allowed back-reference distance the compressor can use when " +"compressing data, expressed as power of two, ``1 << window_log`` bytes. This " +"parameter greatly influences the memory usage of compression. Higher values " +"require more memory but gain better compression values." +msgstr "" + +#: library/compression.zstd.rst:536 library/compression.zstd.rst:545 +#: library/compression.zstd.rst:556 library/compression.zstd.rst:564 +#: library/compression.zstd.rst:575 library/compression.zstd.rst:590 +#: library/compression.zstd.rst:621 library/compression.zstd.rst:628 +#: library/compression.zstd.rst:636 library/compression.zstd.rst:644 +#: library/compression.zstd.rst:703 library/compression.zstd.rst:752 +msgid "A value of zero causes the value to be selected automatically." +msgstr "" + +#: library/compression.zstd.rst:540 +msgid "" +"Size of the initial probe table, as a power of two. The resulting memory " +"usage is ``1 << (hash_log+2)`` bytes. Larger tables improve compression " +"ratio of strategies <= :attr:`~Strategy.dfast`, and improve compression " +"speed of strategies > :attr:`~Strategy.dfast`." +msgstr "" + +#: library/compression.zstd.rst:549 +msgid "" +"Size of the multi-probe search table, as a power of two. The resulting " +"memory usage is ``1 << (chain_log+2)`` bytes. Larger tables result in better " +"and slower compression. This parameter has no effect for the :attr:" +"`~Strategy.fast` strategy. It's still useful when using :attr:`~Strategy." +"dfast` strategy, in which case it defines a secondary probe table." +msgstr "" + +#: library/compression.zstd.rst:560 +msgid "" +"Number of search attempts, as a power of two. More attempts result in better " +"and slower compression. This parameter is useless for :attr:`~Strategy.fast` " +"and :attr:`~Strategy.dfast` strategies." +msgstr "" + +#: library/compression.zstd.rst:568 +msgid "" +"Minimum size of searched matches. Larger values increase compression and " +"decompression speed, but decrease ratio. Note that Zstandard can still find " +"matches of smaller size, it just tweaks its search algorithm to look for " +"this size and larger. For all strategies < :attr:`~Strategy.btopt`, the " +"effective minimum is ``4``; for all strategies > :attr:`~Strategy.fast`, the " +"effective maximum is ``6``." +msgstr "" + +#: library/compression.zstd.rst:579 +msgid "The impact of this field depends on the selected :class:`Strategy`." +msgstr "" + +#: library/compression.zstd.rst:581 +msgid "" +"For strategies :attr:`~Strategy.btopt`, :attr:`~Strategy.btultra` and :attr:" +"`~Strategy.btultra2`, the value is the length of a match considered \"good " +"enough\" to stop searching. Larger values make compression ratios better, " +"but compresses slower." +msgstr "" + +#: library/compression.zstd.rst:586 +msgid "" +"For strategy :attr:`~Strategy.fast`, it is the distance between match " +"sampling. Larger values make compression faster, but with a worse " +"compression ratio." +msgstr "" + +#: library/compression.zstd.rst:594 +msgid "" +"The higher the value of selected strategy, the more complex the compression " +"technique used by zstd, resulting in higher compression ratios but slower " +"compression." +msgstr "" + +#: library/compression.zstd.rst:598 +msgid ":class:`Strategy`" +msgstr "" + +#: library/compression.zstd.rst:602 +msgid "" +"Long distance matching can be used to improve compression for large inputs " +"by finding large matches at greater distances. It increases memory usage and " +"window size." +msgstr "" + +#: library/compression.zstd.rst:606 +msgid "" +"``True`` or ``1`` enable long distance matching while ``False`` or ``0`` " +"disable it." +msgstr "" + +#: library/compression.zstd.rst:609 +msgid "" +"Enabling this parameter increases default :attr:`~CompressionParameter." +"window_log` to 128 MiB except when expressly set to a different value. This " +"setting is enabled by default if :attr:`!window_log` >= 128 MiB and the " +"compression strategy >= :attr:`~Strategy.btopt` (compression level 16+)." +msgstr "" + +#: library/compression.zstd.rst:617 +msgid "" +"Size of the table for long distance matching, as a power of two. Larger " +"values increase memory usage and compression ratio, but decrease compression " +"speed." +msgstr "" + +#: library/compression.zstd.rst:625 +msgid "" +"Minimum match size for long distance matcher. Larger or too small values can " +"often decrease the compression ratio." +msgstr "" + +#: library/compression.zstd.rst:632 +msgid "" +"Log size of each bucket in the long distance matcher hash table for " +"collision resolution. Larger values improve collision resolution but " +"decrease compression speed." +msgstr "" + +#: library/compression.zstd.rst:640 +msgid "" +"Frequency of inserting/looking up entries into the long distance matcher " +"hash table. Larger values improve compression speed. Deviating far from the " +"default value will likely result in a compression ratio decrease." +msgstr "" + +#: library/compression.zstd.rst:648 +msgid "" +"Write the size of the data to be compressed into the Zstandard frame header " +"when known prior to compressing." +msgstr "" + +#: library/compression.zstd.rst:651 +msgid "This flag only takes effect under the following scenarios:" +msgstr "" + +#: library/compression.zstd.rst:653 +msgid "Calling :func:`compress` for one-shot compression" +msgstr "" + +#: library/compression.zstd.rst:654 +msgid "" +"Providing all of the data to be compressed in the frame in a single :meth:" +"`ZstdCompressor.compress` call, with the :attr:`ZstdCompressor.FLUSH_FRAME` " +"mode." +msgstr "" + +#: library/compression.zstd.rst:657 +msgid "" +"Calling :meth:`ZstdCompressor.set_pledged_input_size` with the exact amount " +"of data that will be provided to the compressor prior to any calls to :meth:" +"`ZstdCompressor.compress` for the current frame. :meth:`!ZstdCompressor." +"set_pledged_input_size` must be called for each new frame." +msgstr "" + +#: library/compression.zstd.rst:663 +msgid "" +"All other compression calls may not write the size information into the " +"frame header." +msgstr "" + +#: library/compression.zstd.rst:666 +msgid "" +"``True`` or ``1`` enable the content size flag while ``False`` or ``0`` " +"disable it." +msgstr "" + +#: library/compression.zstd.rst:671 +msgid "" +"A four-byte checksum using XXHash64 of the uncompressed content is written " +"at the end of each frame. Zstandard's decompression code verifies the " +"checksum. If there is a mismatch a :class:`ZstdError` exception is raised." +msgstr "" + +#: library/compression.zstd.rst:676 +msgid "" +"``True`` or ``1`` enable checksum generation while ``False`` or ``0`` " +"disable it." +msgstr "" + +#: library/compression.zstd.rst:681 +msgid "" +"When compressing with a :class:`ZstdDict`, the dictionary's ID is written " +"into the frame header." +msgstr "" + +#: library/compression.zstd.rst:684 +msgid "" +"``True`` or ``1`` enable storing the dictionary ID while ``False`` or ``0`` " +"disable it." +msgstr "" + +#: library/compression.zstd.rst:689 +msgid "" +"Select how many threads will be spawned to compress in parallel. When :attr:" +"`!nb_workers` > 0, enables multi-threaded compression, a value of ``1`` " +"means \"one-thread multi-threaded mode\". More workers improve speed, but " +"also increase memory usage and slightly reduce compression ratio." +msgstr "" + +#: library/compression.zstd.rst:694 +msgid "A value of zero disables multi-threading." +msgstr "" + +#: library/compression.zstd.rst:698 +msgid "" +"Size of a compression job, in bytes. This value is enforced only when :attr:" +"`~CompressionParameter.nb_workers` >= 1. Each compression job is completed " +"in parallel, so this value can indirectly impact the number of active " +"threads." +msgstr "" + +#: library/compression.zstd.rst:707 +msgid "" +"Sets how much data is reloaded from previous jobs (threads) for new jobs to " +"be used by the look behind window during compression. This value is only " +"used when :attr:`~CompressionParameter.nb_workers` >= 1. Acceptable values " +"vary from 0 to 9." +msgstr "" + +#: library/compression.zstd.rst:712 +msgid "0 means dynamically set the overlap amount" +msgstr "" + +#: library/compression.zstd.rst:713 +msgid "1 means no overlap" +msgstr "" + +#: library/compression.zstd.rst:714 +msgid "9 means use a full window size from the previous job" +msgstr "" + +#: library/compression.zstd.rst:716 +msgid "" +"Each increment halves/doubles the overlap size. \"8\" means an overlap of " +"``window_size/2``, \"7\" means an overlap of ``window_size/4``, etc." +msgstr "" + +#: library/compression.zstd.rst:721 +msgid "" +"An :class:`~enum.IntEnum` containing the advanced decompression parameter " +"keys that can be used when decompressing data. Parameters are optional; any " +"omitted parameter will have it's value selected automatically." +msgstr "" + +#: library/compression.zstd.rst:728 +msgid "Example setting the :attr:`~.window_log_max` to the maximum size::" +msgstr "" + +#: library/compression.zstd.rst:730 +msgid "" +"data = compress(b'Some very long buffer of bytes...')\n" +"\n" +"_lower, upper = DecompressionParameter.window_log_max.bounds()\n" +"\n" +"options = {DecompressionParameter.window_log_max: upper}\n" +"decompress(data, options=options)" +msgstr "" + +#: library/compression.zstd.rst:739 +msgid "" +"Return the tuple of int bounds, ``(lower, upper)``, of a decompression " +"parameter. This method should be called on the attribute you wish to " +"retrieve the bounds of." +msgstr "" + +#: library/compression.zstd.rst:747 +msgid "" +"The base-two logarithm of the maximum size of the window used during " +"decompression. This can be useful to limit the amount of memory used when " +"decompressing data. A larger maximum window size leads to faster " +"decompression." +msgstr "" + +#: library/compression.zstd.rst:757 +msgid "" +"An :class:`~enum.IntEnum` containing strategies for compression. Higher-" +"numbered strategies correspond to more complex and slower compression." +msgstr "" + +#: library/compression.zstd.rst:763 +msgid "" +"The values of attributes of :class:`!Strategy` are not necessarily stable " +"across zstd versions. Only the ordering of the attributes may be relied " +"upon. The attributes are listed below in order." +msgstr "" + +#: library/compression.zstd.rst:767 +msgid "The following strategies are available:" +msgstr "" + +#: library/compression.zstd.rst:789 +msgid "Miscellaneous" +msgstr "" + +#: library/compression.zstd.rst:793 +msgid "" +"Retrieve a :class:`FrameInfo` object containing metadata about a Zstandard " +"frame. Frames contain metadata related to the compressed data they hold." +msgstr "" + +#: library/compression.zstd.rst:799 +msgid "Metadata related to a Zstandard frame." +msgstr "" + +#: library/compression.zstd.rst:803 +msgid "The size of the decompressed contents of the frame." +msgstr "" + +#: library/compression.zstd.rst:807 +msgid "" +"An integer representing the Zstandard dictionary ID needed for decompressing " +"the frame. ``0`` means the dictionary ID was not recorded in the frame " +"header. This may mean that a Zstandard dictionary is not needed, or that the " +"ID of a required dictionary was not recorded." +msgstr "" + +#: library/compression.zstd.rst:815 +msgid "The default compression level for Zstandard: ``3``." +msgstr "" + +#: library/compression.zstd.rst:820 +msgid "" +"Version number of the runtime zstd library as a tuple of integers (major, " +"minor, release)." +msgstr "" + +#: library/compression.zstd.rst:825 +msgid "Examples" +msgstr "" + +#: library/compression.zstd.rst:827 +msgid "Reading in a compressed file:" +msgstr "" + +#: library/compression.zstd.rst:829 +msgid "" +"from compression import zstd\n" +"\n" +"with zstd.open(\"file.zst\") as f:\n" +" file_content = f.read()" +msgstr "" + +#: library/compression.zstd.rst:836 +msgid "Creating a compressed file:" +msgstr "" + +#: library/compression.zstd.rst:838 +msgid "" +"from compression import zstd\n" +"\n" +"data = b\"Insert Data Here\"\n" +"with zstd.open(\"file.zst\", \"w\") as f:\n" +" f.write(data)" +msgstr "" + +#: library/compression.zstd.rst:846 +msgid "Compressing data in memory:" +msgstr "" + +#: library/compression.zstd.rst:848 +msgid "" +"from compression import zstd\n" +"\n" +"data_in = b\"Insert Data Here\"\n" +"data_out = zstd.compress(data_in)" +msgstr "" + +#: library/compression.zstd.rst:855 +msgid "Incremental compression:" +msgstr "" + +#: library/compression.zstd.rst:857 +msgid "" +"from compression import zstd\n" +"\n" +"comp = zstd.ZstdCompressor()\n" +"out1 = comp.compress(b\"Some data\\n\")\n" +"out2 = comp.compress(b\"Another piece of data\\n\")\n" +"out3 = comp.compress(b\"Even more data\\n\")\n" +"out4 = comp.flush()\n" +"# Concatenate all the partial results:\n" +"result = b\"\".join([out1, out2, out3, out4])" +msgstr "" + +#: library/compression.zstd.rst:869 +msgid "Writing compressed data to an already-open file:" +msgstr "" + +#: library/compression.zstd.rst:871 +msgid "" +"from compression import zstd\n" +"\n" +"with open(\"myfile\", \"wb\") as f:\n" +" f.write(b\"This data will not be compressed\\n\")\n" +" with zstd.open(f, \"w\") as zstf:\n" +" zstf.write(b\"This *will* be compressed\\n\")\n" +" f.write(b\"Not compressed\\n\")" +msgstr "" + +#: library/compression.zstd.rst:881 +msgid "Creating a compressed file using compression parameters:" +msgstr "" + +#: library/compression.zstd.rst:883 +msgid "" +"from compression import zstd\n" +"\n" +"options = {\n" +" zstd.CompressionParameter.checksum_flag: 1\n" +"}\n" +"with zstd.open(\"file.zst\", \"w\", options=options) as f:\n" +" f.write(b\"Mind if I squeeze in?\")" +msgstr "" diff --git a/library/concurrency.po b/library/concurrency.po index d690c379..11512d68 100644 --- a/library/concurrency.po +++ b/library/concurrency.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -30,6 +30,6 @@ msgid "" "an overview:" msgstr "" -#: library/concurrency.rst:27 +#: library/concurrency.rst:28 msgid "The following are support modules for some of the above services:" msgstr "" diff --git a/library/concurrent.futures.po b/library/concurrent.futures.po index ac633494..3650408a 100644 --- a/library/concurrent.futures.po +++ b/library/concurrent.futures.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -274,7 +274,7 @@ msgid "" "easier debugging." msgstr "" -#: library/concurrent.futures.rst:188 library/concurrent.futures.rst:401 +#: library/concurrent.futures.rst:188 library/concurrent.futures.rst:386 msgid "Added the *initializer* and *initargs* arguments." msgstr "" @@ -373,7 +373,7 @@ msgid "" "Each worker's interpreter is isolated from all the other interpreters. " "\"Isolated\" means each interpreter has its own runtime state and operates " "completely independently. For example, if you redirect :data:`sys.stdout` " -"in one interpreter, it will not be automatically redirected any other " +"in one interpreter, it will not be automatically redirected to any other " "interpreter. If you import a module in one interpreter, it is not " "automatically imported in any other. You would need to import the module " "separately in interpreter where you need it. In fact, each module imported " @@ -420,32 +420,17 @@ msgid "" "when sending them to the worker's interpreter." msgstr "" -#: library/concurrent.futures.rst:308 library/concurrent.futures.rst:330 -msgid "" -"Functions defined in the ``__main__`` module cannot be pickled and thus " -"cannot be used." -msgstr "" - -#: library/concurrent.futures.rst:312 +#: library/concurrent.futures.rst:308 msgid "" "The executor may replace uncaught exceptions from *initializer* with :class:" "`~concurrent.futures.interpreter.ExecutionFailed`." msgstr "" -#: library/concurrent.futures.rst:315 -msgid "" -"The optional *shared* argument is a :class:`dict` of objects that all " -"interpreters in the pool share. The *shared* items are added to each " -"interpreter's ``__main__`` module. Not all objects are shareable. Shareable " -"objects include the builtin singletons, :class:`str` and :class:`bytes`, " -"and :class:`memoryview`. See :pep:`734` for more info." -msgstr "" - -#: library/concurrent.futures.rst:322 +#: library/concurrent.futures.rst:311 msgid "Other caveats from parent :class:`ThreadPoolExecutor` apply here." msgstr "" -#: library/concurrent.futures.rst:324 +#: library/concurrent.futures.rst:313 msgid "" ":meth:`~Executor.submit` and :meth:`~Executor.map` work like normal, except " "the worker serializes the callable and arguments using :mod:`pickle` when " @@ -453,7 +438,7 @@ msgid "" "value when sending it back." msgstr "" -#: library/concurrent.futures.rst:333 +#: library/concurrent.futures.rst:318 msgid "" "When a worker's current task raises an uncaught exception, the worker always " "tries to preserve the exception as-is. If that is successful then it also " @@ -464,11 +449,11 @@ msgid "" "class:`~concurrent.futures.interpreter.ExecutionFailed` instance instead." msgstr "" -#: library/concurrent.futures.rst:345 +#: library/concurrent.futures.rst:330 msgid "ProcessPoolExecutor" msgstr "" -#: library/concurrent.futures.rst:347 +#: library/concurrent.futures.rst:332 msgid "" "The :class:`ProcessPoolExecutor` class is an :class:`Executor` subclass that " "uses a pool of processes to execute calls asynchronously. :class:" @@ -478,20 +463,20 @@ msgid "" "returned." msgstr "" -#: library/concurrent.futures.rst:354 +#: library/concurrent.futures.rst:339 msgid "" "The ``__main__`` module must be importable by worker subprocesses. This " "means that :class:`ProcessPoolExecutor` will not work in the interactive " "interpreter." msgstr "" -#: library/concurrent.futures.rst:357 +#: library/concurrent.futures.rst:342 msgid "" "Calling :class:`Executor` or :class:`Future` methods from a callable " "submitted to a :class:`ProcessPoolExecutor` will result in deadlock." msgstr "" -#: library/concurrent.futures.rst:362 +#: library/concurrent.futures.rst:347 msgid "" "An :class:`Executor` subclass that executes calls asynchronously using a " "pool of at most *max_workers* processes. If *max_workers* is ``None`` or " @@ -506,7 +491,7 @@ msgid "" "`multiprocessing-start-methods`." msgstr "" -#: library/concurrent.futures.rst:376 +#: library/concurrent.futures.rst:361 msgid "" "*initializer* is an optional callable that is called at the start of each " "worker process; *initargs* is a tuple of arguments passed to the " @@ -515,7 +500,7 @@ msgid "" "well as any attempt to submit more jobs to the pool." msgstr "" -#: library/concurrent.futures.rst:382 +#: library/concurrent.futures.rst:367 msgid "" "*max_tasks_per_child* is an optional argument that specifies the maximum " "number of tasks a single process can execute before it will exit and be " @@ -526,7 +511,7 @@ msgid "" "with the \"fork\" start method." msgstr "" -#: library/concurrent.futures.rst:390 +#: library/concurrent.futures.rst:375 msgid "" "When one of the worker processes terminates abruptly, a :exc:`~concurrent." "futures.process.BrokenProcessPool` error is now raised. Previously, " @@ -534,19 +519,19 @@ msgid "" "often freeze or deadlock." msgstr "" -#: library/concurrent.futures.rst:397 +#: library/concurrent.futures.rst:382 msgid "" "The *mp_context* argument was added to allow users to control the " "start_method for worker processes created by the pool." msgstr "" -#: library/concurrent.futures.rst:403 +#: library/concurrent.futures.rst:388 msgid "" "The *max_tasks_per_child* argument was added to allow users to control the " "lifetime of workers in the pool." msgstr "" -#: library/concurrent.futures.rst:407 +#: library/concurrent.futures.rst:392 msgid "" "On POSIX systems, if your application has multiple threads and the :mod:" "`multiprocessing` context uses the ``\"fork\"`` start method: The :func:`os." @@ -555,13 +540,13 @@ msgid "" "start method. See the :func:`os.fork` documentation for further explanation." msgstr "" -#: library/concurrent.futures.rst:415 +#: library/concurrent.futures.rst:400 msgid "" "*max_workers* uses :func:`os.process_cpu_count` by default, instead of :func:" "`os.cpu_count`." msgstr "" -#: library/concurrent.futures.rst:419 +#: library/concurrent.futures.rst:404 msgid "" "The default process start method (see :ref:`multiprocessing-start-methods`) " "changed away from *fork*. If you require the *fork* start method for :class:" @@ -569,7 +554,7 @@ msgid "" "get_context(\"fork\")``." msgstr "" -#: library/concurrent.futures.rst:427 +#: library/concurrent.futures.rst:412 msgid "" "Attempt to terminate all living worker processes immediately by calling :" "meth:`Process.terminate ` on each of " @@ -577,13 +562,13 @@ msgid "" "all other resources associated with the executor are freed." msgstr "" -#: library/concurrent.futures.rst:432 library/concurrent.futures.rst:444 +#: library/concurrent.futures.rst:417 library/concurrent.futures.rst:429 msgid "" "After calling this method the caller should no longer submit tasks to the " "executor." msgstr "" -#: library/concurrent.futures.rst:439 +#: library/concurrent.futures.rst:424 msgid "" "Attempt to kill all living worker processes immediately by calling :meth:" "`Process.kill ` on each of them. Internally, " @@ -591,11 +576,11 @@ msgid "" "resources associated with the executor are freed." msgstr "" -#: library/concurrent.futures.rst:452 +#: library/concurrent.futures.rst:437 msgid "ProcessPoolExecutor Example" msgstr "" -#: library/concurrent.futures.rst:455 +#: library/concurrent.futures.rst:440 msgid "" "import concurrent.futures\n" "import math\n" @@ -631,24 +616,24 @@ msgid "" " main()" msgstr "" -#: library/concurrent.futures.rst:490 +#: library/concurrent.futures.rst:475 msgid "Future Objects" msgstr "" -#: library/concurrent.futures.rst:492 +#: library/concurrent.futures.rst:477 msgid "" "The :class:`Future` class encapsulates the asynchronous execution of a " "callable. :class:`Future` instances are created by :meth:`Executor.submit`." msgstr "" -#: library/concurrent.futures.rst:497 +#: library/concurrent.futures.rst:482 msgid "" "Encapsulates the asynchronous execution of a callable. :class:`Future` " "instances are created by :meth:`Executor.submit` and should not be created " "directly except for testing." msgstr "" -#: library/concurrent.futures.rst:503 +#: library/concurrent.futures.rst:488 msgid "" "Attempt to cancel the call. If the call is currently being executed or " "finished running and cannot be cancelled then the method will return " @@ -656,22 +641,22 @@ msgid "" "``True``." msgstr "" -#: library/concurrent.futures.rst:510 +#: library/concurrent.futures.rst:495 msgid "Return ``True`` if the call was successfully cancelled." msgstr "" -#: library/concurrent.futures.rst:514 +#: library/concurrent.futures.rst:499 msgid "" "Return ``True`` if the call is currently being executed and cannot be " "cancelled." msgstr "" -#: library/concurrent.futures.rst:519 +#: library/concurrent.futures.rst:504 msgid "" "Return ``True`` if the call was successfully cancelled or finished running." msgstr "" -#: library/concurrent.futures.rst:524 +#: library/concurrent.futures.rst:509 msgid "" "Return the value returned by the call. If the call hasn't yet completed then " "this method will wait up to *timeout* seconds. If the call hasn't completed " @@ -680,18 +665,18 @@ msgid "" "no limit to the wait time." msgstr "" -#: library/concurrent.futures.rst:531 library/concurrent.futures.rst:545 +#: library/concurrent.futures.rst:516 library/concurrent.futures.rst:530 msgid "" "If the future is cancelled before completing then :exc:`.CancelledError` " "will be raised." msgstr "" -#: library/concurrent.futures.rst:534 +#: library/concurrent.futures.rst:519 msgid "" "If the call raised an exception, this method will raise the same exception." msgstr "" -#: library/concurrent.futures.rst:538 +#: library/concurrent.futures.rst:523 msgid "" "Return the exception raised by the call. If the call hasn't yet completed " "then this method will wait up to *timeout* seconds. If the call hasn't " @@ -700,18 +685,18 @@ msgid "" "``None``, there is no limit to the wait time." msgstr "" -#: library/concurrent.futures.rst:548 +#: library/concurrent.futures.rst:533 msgid "If the call completed without raising, ``None`` is returned." msgstr "" -#: library/concurrent.futures.rst:552 +#: library/concurrent.futures.rst:537 msgid "" "Attaches the callable *fn* to the future. *fn* will be called, with the " "future as its only argument, when the future is cancelled or finishes " "running." msgstr "" -#: library/concurrent.futures.rst:556 +#: library/concurrent.futures.rst:541 msgid "" "Added callables are called in the order that they were added and are always " "called in a thread belonging to the process that added them. If the " @@ -720,26 +705,26 @@ msgid "" "behavior is undefined." msgstr "" -#: library/concurrent.futures.rst:562 +#: library/concurrent.futures.rst:547 msgid "" "If the future has already completed or been cancelled, *fn* will be called " "immediately." msgstr "" -#: library/concurrent.futures.rst:565 +#: library/concurrent.futures.rst:550 msgid "" "The following :class:`Future` methods are meant for use in unit tests and :" "class:`Executor` implementations." msgstr "" -#: library/concurrent.futures.rst:570 +#: library/concurrent.futures.rst:555 msgid "" "This method should only be called by :class:`Executor` implementations " "before executing the work associated with the :class:`Future` and by unit " "tests." msgstr "" -#: library/concurrent.futures.rst:574 +#: library/concurrent.futures.rst:559 msgid "" "If the method returns ``False`` then the :class:`Future` was cancelled, i." "e. :meth:`Future.cancel` was called and returned ``True``. Any threads " @@ -747,47 +732,47 @@ msgid "" "or :func:`wait`) will be woken up." msgstr "" -#: library/concurrent.futures.rst:579 +#: library/concurrent.futures.rst:564 msgid "" "If the method returns ``True`` then the :class:`Future` was not cancelled " "and has been put in the running state, i.e. calls to :meth:`Future.running` " "will return ``True``." msgstr "" -#: library/concurrent.futures.rst:583 +#: library/concurrent.futures.rst:568 msgid "" "This method can only be called once and cannot be called after :meth:`Future." "set_result` or :meth:`Future.set_exception` have been called." msgstr "" -#: library/concurrent.futures.rst:589 +#: library/concurrent.futures.rst:574 msgid "" "Sets the result of the work associated with the :class:`Future` to *result*." msgstr "" -#: library/concurrent.futures.rst:592 library/concurrent.futures.rst:605 +#: library/concurrent.futures.rst:577 library/concurrent.futures.rst:590 msgid "" "This method should only be used by :class:`Executor` implementations and " "unit tests." msgstr "" -#: library/concurrent.futures.rst:595 library/concurrent.futures.rst:608 +#: library/concurrent.futures.rst:580 library/concurrent.futures.rst:593 msgid "" "This method raises :exc:`concurrent.futures.InvalidStateError` if the :class:" "`Future` is already done." msgstr "" -#: library/concurrent.futures.rst:602 +#: library/concurrent.futures.rst:587 msgid "" "Sets the result of the work associated with the :class:`Future` to the :" "class:`Exception` *exception*." msgstr "" -#: library/concurrent.futures.rst:614 +#: library/concurrent.futures.rst:599 msgid "Module Functions" msgstr "" -#: library/concurrent.futures.rst:618 +#: library/concurrent.futures.rst:603 msgid "" "Wait for the :class:`Future` instances (possibly created by different :class:" "`Executor` instances) given by *fs* to complete. Duplicate futures given to " @@ -798,43 +783,43 @@ msgid "" "running futures)." msgstr "" -#: library/concurrent.futures.rst:626 +#: library/concurrent.futures.rst:611 msgid "" "*timeout* can be used to control the maximum number of seconds to wait " "before returning. *timeout* can be an int or float. If *timeout* is not " "specified or ``None``, there is no limit to the wait time." msgstr "" -#: library/concurrent.futures.rst:630 +#: library/concurrent.futures.rst:615 msgid "" "*return_when* indicates when this function should return. It must be one of " "the following constants:" msgstr "" -#: library/concurrent.futures.rst:636 +#: library/concurrent.futures.rst:621 msgid "Constant" msgstr "" -#: library/concurrent.futures.rst:637 +#: library/concurrent.futures.rst:622 msgid "Description" msgstr "" -#: library/concurrent.futures.rst:640 +#: library/concurrent.futures.rst:625 msgid "The function will return when any future finishes or is cancelled." msgstr "" -#: library/concurrent.futures.rst:643 +#: library/concurrent.futures.rst:628 msgid "" "The function will return when any future finishes by raising an exception. " "If no future raises an exception then it is equivalent to :const:" "`ALL_COMPLETED`." msgstr "" -#: library/concurrent.futures.rst:648 +#: library/concurrent.futures.rst:633 msgid "The function will return when all futures finish or are cancelled." msgstr "" -#: library/concurrent.futures.rst:652 +#: library/concurrent.futures.rst:637 msgid "" "Returns an iterator over the :class:`Future` instances (possibly created by " "different :class:`Executor` instances) given by *fs* that yields futures as " @@ -847,69 +832,69 @@ msgid "" "*timeout* is not specified or ``None``, there is no limit to the wait time." msgstr "" -#: library/concurrent.futures.rst:665 +#: library/concurrent.futures.rst:650 msgid ":pep:`3148` -- futures - execute computations asynchronously" msgstr "" -#: library/concurrent.futures.rst:666 +#: library/concurrent.futures.rst:651 msgid "" "The proposal which described this feature for inclusion in the Python " "standard library." msgstr "" -#: library/concurrent.futures.rst:671 +#: library/concurrent.futures.rst:656 msgid "Exception classes" msgstr "" -#: library/concurrent.futures.rst:677 +#: library/concurrent.futures.rst:662 msgid "Raised when a future is cancelled." msgstr "" -#: library/concurrent.futures.rst:681 +#: library/concurrent.futures.rst:666 msgid "" "A deprecated alias of :exc:`TimeoutError`, raised when a future operation " "exceeds the given timeout." msgstr "" -#: library/concurrent.futures.rst:686 +#: library/concurrent.futures.rst:671 msgid "This class was made an alias of :exc:`TimeoutError`." msgstr "" -#: library/concurrent.futures.rst:691 +#: library/concurrent.futures.rst:676 msgid "" "Derived from :exc:`RuntimeError`, this exception class is raised when an " "executor is broken for some reason, and cannot be used to submit or execute " "new tasks." msgstr "" -#: library/concurrent.futures.rst:699 +#: library/concurrent.futures.rst:684 msgid "" "Raised when an operation is performed on a future that is not allowed in the " "current state." msgstr "" -#: library/concurrent.futures.rst:708 +#: library/concurrent.futures.rst:693 msgid "" "Derived from :exc:`~concurrent.futures.BrokenExecutor`, this exception class " "is raised when one of the workers of a :class:`~concurrent.futures." "ThreadPoolExecutor` has failed initializing." msgstr "" -#: library/concurrent.futures.rst:719 +#: library/concurrent.futures.rst:704 msgid "" "Derived from :exc:`~concurrent.futures.thread.BrokenThreadPool`, this " "exception class is raised when one of the workers of a :class:`~concurrent." "futures.InterpreterPoolExecutor` has failed initializing." msgstr "" -#: library/concurrent.futures.rst:728 +#: library/concurrent.futures.rst:713 msgid "" "Raised from :class:`~concurrent.futures.InterpreterPoolExecutor` when the " "given initializer fails or from :meth:`~concurrent.futures.Executor.submit` " "when there's an uncaught exception from the submitted task." msgstr "" -#: library/concurrent.futures.rst:739 +#: library/concurrent.futures.rst:724 msgid "" "Derived from :exc:`~concurrent.futures.BrokenExecutor` (formerly :exc:" "`RuntimeError`), this exception class is raised when one of the workers of " diff --git a/library/concurrent.interpreters.po b/library/concurrent.interpreters.po new file mode 100644 index 00000000..1c818c11 --- /dev/null +++ b/library/concurrent.interpreters.po @@ -0,0 +1,250 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2001 Python Software Foundation +# This file is distributed under the same license as the Python package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Python 3.14\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: library/concurrent.interpreters.rst:2 +msgid "" +":mod:`!concurrent.interpreters` --- Multiple interpreters in the same process" +msgstr "" + +#: library/concurrent.interpreters.rst:12 +msgid "**Source code:** :source:`Lib/concurrent/interpreters.py`" +msgstr "" + +#: library/concurrent.interpreters.rst:18 +msgid "Introduction" +msgstr "" + +#: library/concurrent.interpreters.rst:20 +msgid "" +"The :mod:`!concurrent.interpreters` module constructs higher-level " +"interfaces on top of the lower level :mod:`!_interpreters` module." +msgstr "" + +#: library/concurrent.interpreters.rst:27 +msgid ":ref:`isolating-extensions-howto`" +msgstr "" + +#: library/concurrent.interpreters.rst:28 +msgid "how to update an extension module to support multiple interpreters" +msgstr "" + +#: library/concurrent.interpreters.rst:30 +msgid ":pep:`554`" +msgstr "" + +#: library/concurrent.interpreters.rst:32 +msgid ":pep:`734`" +msgstr "" + +#: library/concurrent.interpreters.rst:34 +msgid ":pep:`684`" +msgstr "" + +#: includes/wasm-notavail.rst:3 +msgid "Availability" +msgstr "" + +#: includes/wasm-notavail.rst:5 +msgid "" +"This module does not work or is not available on WebAssembly. See :ref:`wasm-" +"availability` for more information." +msgstr "" + +#: library/concurrent.interpreters.rst:42 +msgid "Key details" +msgstr "" + +#: library/concurrent.interpreters.rst:44 +msgid "" +"Before we dive into examples, there are a small number of details to keep in " +"mind about using multiple interpreters:" +msgstr "" + +#: library/concurrent.interpreters.rst:47 +msgid "isolated, by default" +msgstr "" + +#: library/concurrent.interpreters.rst:48 +msgid "no implicit threads" +msgstr "" + +#: library/concurrent.interpreters.rst:49 +msgid "not all PyPI packages support use in multiple interpreters yet" +msgstr "" + +#: library/concurrent.interpreters.rst:53 +msgid "" +"In the context of multiple interpreters, \"isolated\" means that different " +"interpreters do not share any state. In practice, there is some process-" +"global data they all share, but that is managed by the runtime." +msgstr "" + +#: library/concurrent.interpreters.rst:59 +msgid "Reference" +msgstr "" + +#: library/concurrent.interpreters.rst:61 +msgid "This module defines the following functions:" +msgstr "" + +#: library/concurrent.interpreters.rst:65 +msgid "" +"Return a :class:`list` of :class:`Interpreter` objects, one for each " +"existing interpreter." +msgstr "" + +#: library/concurrent.interpreters.rst:70 +msgid "" +"Return an :class:`Interpreter` object for the currently running interpreter." +msgstr "" + +#: library/concurrent.interpreters.rst:75 +msgid "Return an :class:`Interpreter` object for the main interpreter." +msgstr "" + +#: library/concurrent.interpreters.rst:79 +msgid "" +"Initialize a new (idle) Python interpreter and return a :class:`Interpreter` " +"object for it." +msgstr "" + +#: library/concurrent.interpreters.rst:84 +msgid "Interpreter objects" +msgstr "" + +#: library/concurrent.interpreters.rst:88 +msgid "A single interpreter in the current process." +msgstr "" + +#: library/concurrent.interpreters.rst:90 +msgid "" +"Generally, :class:`Interpreter` shouldn't be called directly. Instead, use :" +"func:`create` or one of the other module functions." +msgstr "" + +#: library/concurrent.interpreters.rst:95 +#: library/concurrent.interpreters.rst:101 +msgid "(read-only)" +msgstr "" + +#: library/concurrent.interpreters.rst:97 +msgid "The interpreter's ID." +msgstr "" + +#: library/concurrent.interpreters.rst:103 +msgid "A string describing where the interpreter came from." +msgstr "" + +#: library/concurrent.interpreters.rst:107 +msgid "" +"Return ``True`` if the interpreter is currently executing code in its :mod:`!" +"__main__` module and ``False`` otherwise." +msgstr "" + +#: library/concurrent.interpreters.rst:112 +msgid "Finalize and destroy the interpreter." +msgstr "" + +#: library/concurrent.interpreters.rst:116 +msgid "" +"Bind \"shareable\" objects in the interpreter's :mod:`!__main__` module." +msgstr "" + +#: library/concurrent.interpreters.rst:121 +msgid "Run the given source code in the interpreter (in the current thread)." +msgstr "" + +#: library/concurrent.interpreters.rst:125 +msgid "" +"Return the result of calling running the given function in the interpreter " +"(in the current thread)." +msgstr "" + +#: library/concurrent.interpreters.rst:130 +msgid "Run the given function in the interpreter (in a new thread)." +msgstr "" + +#: library/concurrent.interpreters.rst:133 +msgid "Exceptions" +msgstr "" + +#: library/concurrent.interpreters.rst:137 +msgid "" +"This exception, a subclass of :exc:`Exception`, is raised when an " +"interpreter-related error happens." +msgstr "" + +#: library/concurrent.interpreters.rst:142 +msgid "" +"This exception, a subclass of :exc:`InterpreterError`, is raised when the " +"targeted interpreter no longer exists." +msgstr "" + +#: library/concurrent.interpreters.rst:147 +msgid "" +"This exception, a subclass of :exc:`InterpreterError`, is raised when the " +"running code raised an uncaught exception." +msgstr "" + +#: library/concurrent.interpreters.rst:152 +msgid "A basic snapshot of the exception raised in the other interpreter." +msgstr "" + +#: library/concurrent.interpreters.rst:158 +msgid "" +"This exception, a subclass of :exc:`TypeError`, is raised when an object " +"cannot be sent to another interpreter." +msgstr "" + +#: library/concurrent.interpreters.rst:166 +msgid "Basic usage" +msgstr "" + +#: library/concurrent.interpreters.rst:168 +msgid "Creating an interpreter and running code in it::" +msgstr "" + +#: library/concurrent.interpreters.rst:170 +msgid "" +"from concurrent import interpreters\n" +"\n" +"interp = interpreters.create()\n" +"\n" +"# Run in the current OS thread.\n" +"\n" +"interp.exec('print(\"spam!\")')\n" +"\n" +"interp.exec(\"\"\"if True:\n" +" print('spam!')\n" +" \"\"\")\n" +"\n" +"from textwrap import dedent\n" +"interp.exec(dedent(\"\"\"\n" +" print('spam!')\n" +" \"\"\"))\n" +"\n" +"def run():\n" +" print('spam!')\n" +"\n" +"interp.call(run)\n" +"\n" +"# Run in new OS thread.\n" +"\n" +"t = interp.call_in_thread(run)\n" +"t.join()" +msgstr "" diff --git a/library/concurrent.po b/library/concurrent.po index 1af28724..9e658722 100644 --- a/library/concurrent.po +++ b/library/concurrent.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -22,9 +22,14 @@ msgid "The :mod:`!concurrent` package" msgstr "" #: library/concurrent.rst:4 -msgid "Currently, there is only one module in this package:" +msgid "This package contains the following modules:" msgstr "" #: library/concurrent.rst:6 msgid ":mod:`concurrent.futures` -- Launching parallel tasks" msgstr "" + +#: library/concurrent.rst:7 +msgid "" +":mod:`concurrent.interpreters` -- Multiple interpreters in the same process" +msgstr "" diff --git a/library/configparser.po b/library/configparser.po index 37b4c4ba..e58f9f78 100644 --- a/library/configparser.po +++ b/library/configparser.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/constants.po b/library/constants.po index f36f7f3b..a20c0b2c 100644 --- a/library/constants.po +++ b/library/constants.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/contextlib.po b/library/contextlib.po index 5856f26b..fde46915 100644 --- a/library/contextlib.po +++ b/library/contextlib.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/contextvars.po b/library/contextvars.po index 621c2bd0..a3b7ac80 100644 --- a/library/contextvars.po +++ b/library/contextvars.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/copy.po b/library/copy.po index 53090e2d..2517abac 100644 --- a/library/copy.po +++ b/library/copy.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -168,11 +168,11 @@ msgid "" "with values from *changes*." msgstr "" -#: library/copy.rst:128 +#: library/copy.rst:130 msgid "Module :mod:`pickle`" msgstr "" -#: library/copy.rst:129 +#: library/copy.rst:131 msgid "" "Discussion of the special methods used to support object state retrieval and " "restoration." diff --git a/library/copyreg.po b/library/copyreg.po index 1cb5b932..cdaf4336 100644 --- a/library/copyreg.po +++ b/library/copyreg.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/crypt.po b/library/crypt.po index 3cf13250..7a15e12d 100644 --- a/library/crypt.po +++ b/library/crypt.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/crypto.po b/library/crypto.po index 3714c977..f54ff146 100644 --- a/library/crypto.po +++ b/library/crypto.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/csv.po b/library/csv.po index c09283a5..5cc71297 100644 --- a/library/csv.po +++ b/library/csv.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -90,9 +90,9 @@ msgstr "" #: library/csv.rst:72 msgid "" "Each row read from the csv file is returned as a list of strings. No " -"automatic data type conversion is performed unless the ``QUOTE_NONNUMERIC`` " -"format option is specified (in which case unquoted fields are transformed " -"into floats)." +"automatic data type conversion is performed unless the :data:" +"`QUOTE_NONNUMERIC` format option is specified (in which case unquoted fields " +"are transformed into floats)." msgstr "" #: library/csv.rst:106 library/csv.rst:219 @@ -396,11 +396,19 @@ msgstr "" #: library/csv.rst:334 msgid "" -"Instructs :class:`reader` objects to convert all non-quoted fields to type " -"*float*." +"Instructs :class:`reader` objects to convert all non-quoted fields to type :" +"class:`float`." msgstr "" -#: library/csv.rst:339 +#: library/csv.rst:337 +msgid "" +"Some numeric types, such as :class:`bool`, :class:`~fractions.Fraction`, or :" +"class:`~enum.IntEnum`, have a string representation that cannot be converted " +"to :class:`float`. They cannot be read in the :data:`QUOTE_NONNUMERIC` and :" +"data:`QUOTE_STRINGS` modes." +msgstr "" + +#: library/csv.rst:345 msgid "" "Instructs :class:`writer` objects to never quote fields. When the current " "*delimiter* occurs in output data it is preceded by the current *escapechar* " @@ -408,51 +416,51 @@ msgid "" "if any characters that require escaping are encountered." msgstr "" -#: library/csv.rst:344 +#: library/csv.rst:350 msgid "" "Instructs :class:`reader` objects to perform no special processing of quote " "characters." msgstr "" -#: library/csv.rst:348 +#: library/csv.rst:354 msgid "" "Instructs :class:`writer` objects to quote all fields which are not " "``None``. This is similar to :data:`QUOTE_ALL`, except that if a field " "value is ``None`` an empty (unquoted) string is written." msgstr "" -#: library/csv.rst:352 +#: library/csv.rst:358 msgid "" "Instructs :class:`reader` objects to interpret an empty (unquoted) field as " "``None`` and to otherwise behave as :data:`QUOTE_ALL`." msgstr "" -#: library/csv.rst:359 +#: library/csv.rst:365 msgid "" "Instructs :class:`writer` objects to always place quotes around fields which " "are strings. This is similar to :data:`QUOTE_NONNUMERIC`, except that if a " "field value is ``None`` an empty (unquoted) string is written." msgstr "" -#: library/csv.rst:363 +#: library/csv.rst:369 msgid "" "Instructs :class:`reader` objects to interpret an empty (unquoted) string as " "``None`` and to otherwise behave as :data:`QUOTE_NONNUMERIC`." msgstr "" -#: library/csv.rst:368 +#: library/csv.rst:374 msgid "The :mod:`csv` module defines the following exception:" msgstr "" -#: library/csv.rst:373 +#: library/csv.rst:379 msgid "Raised by any of the functions when an error is detected." msgstr "" -#: library/csv.rst:378 +#: library/csv.rst:384 msgid "Dialects and Formatting Parameters" msgstr "" -#: library/csv.rst:380 +#: library/csv.rst:386 msgid "" "To make it easier to specify the format of input and output records, " "specific formatting parameters are grouped together into dialects. A " @@ -465,16 +473,16 @@ msgid "" "attributes defined below for the :class:`Dialect` class." msgstr "" -#: library/csv.rst:390 +#: library/csv.rst:396 msgid "Dialects support the following attributes:" msgstr "" -#: library/csv.rst:395 +#: library/csv.rst:401 msgid "" "A one-character string used to separate fields. It defaults to ``','``." msgstr "" -#: library/csv.rst:400 +#: library/csv.rst:406 msgid "" "Controls how instances of *quotechar* appearing inside a field should " "themselves be quoted. When :const:`True`, the character is doubled. When :" @@ -482,13 +490,13 @@ msgid "" "defaults to :const:`True`." msgstr "" -#: library/csv.rst:405 +#: library/csv.rst:411 msgid "" "On output, if *doublequote* is :const:`False` and no *escapechar* is set, :" "exc:`Error` is raised if a *quotechar* is found in a field." msgstr "" -#: library/csv.rst:411 +#: library/csv.rst:417 msgid "" "A one-character string used by the writer to escape the *delimiter* if " "*quoting* is set to :const:`QUOTE_NONE` and the *quotechar* if *doublequote* " @@ -497,64 +505,64 @@ msgid "" "escaping." msgstr "" -#: library/csv.rst:416 +#: library/csv.rst:422 msgid "An empty *escapechar* is not allowed." msgstr "" -#: library/csv.rst:421 +#: library/csv.rst:427 msgid "" "The string used to terminate lines produced by the :class:`writer`. It " "defaults to ``'\\r\\n'``." msgstr "" -#: library/csv.rst:426 +#: library/csv.rst:432 msgid "" "The :class:`reader` is hard-coded to recognise either ``'\\r'`` or ``'\\n'`` " "as end-of-line, and ignores *lineterminator*. This behavior may change in " "the future." msgstr "" -#: library/csv.rst:433 +#: library/csv.rst:439 msgid "" "A one-character string used to quote fields containing special characters, " "such as the *delimiter* or *quotechar*, or which contain new-line " "characters. It defaults to ``'\"'``." msgstr "" -#: library/csv.rst:437 +#: library/csv.rst:443 msgid "An empty *quotechar* is not allowed." msgstr "" -#: library/csv.rst:442 +#: library/csv.rst:448 msgid "" "Controls when quotes should be generated by the writer and recognised by the " "reader. It can take on any of the :ref:`QUOTE_\\* constants ` and defaults to :const:`QUOTE_MINIMAL`." msgstr "" -#: library/csv.rst:449 +#: library/csv.rst:455 msgid "" "When :const:`True`, spaces immediately following the *delimiter* are " "ignored. The default is :const:`False`." msgstr "" -#: library/csv.rst:455 +#: library/csv.rst:461 msgid "" "When ``True``, raise exception :exc:`Error` on bad CSV input. The default is " "``False``." msgstr "" -#: library/csv.rst:461 +#: library/csv.rst:467 msgid "Reader Objects" msgstr "" -#: library/csv.rst:463 +#: library/csv.rst:469 msgid "" "Reader objects (:class:`DictReader` instances and objects returned by the :" "func:`reader` function) have the following public methods:" msgstr "" -#: library/csv.rst:468 +#: library/csv.rst:474 msgid "" "Return the next row of the reader's iterable object as a list (if the object " "was returned from :func:`reader`) or a dict (if it is a :class:`DictReader` " @@ -562,35 +570,35 @@ msgid "" "should call this as ``next(reader)``." msgstr "" -#: library/csv.rst:474 +#: library/csv.rst:480 msgid "Reader objects have the following public attributes:" msgstr "" -#: library/csv.rst:478 +#: library/csv.rst:484 msgid "A read-only description of the dialect in use by the parser." msgstr "" -#: library/csv.rst:483 +#: library/csv.rst:489 msgid "" "The number of lines read from the source iterator. This is not the same as " "the number of records returned, as records can span multiple lines." msgstr "" -#: library/csv.rst:487 +#: library/csv.rst:493 msgid "DictReader objects have the following public attribute:" msgstr "" -#: library/csv.rst:491 +#: library/csv.rst:497 msgid "" "If not passed as a parameter when creating the object, this attribute is " "initialized upon first access or when the first record is read from the file." msgstr "" -#: library/csv.rst:498 +#: library/csv.rst:504 msgid "Writer Objects" msgstr "" -#: library/csv.rst:500 +#: library/csv.rst:506 msgid "" ":class:`writer` objects (:class:`DictWriter` instances and objects returned " "by the :func:`writer` function) have the following public methods. A *row* " @@ -602,58 +610,58 @@ msgid "" "complex numbers at all)." msgstr "" -#: library/csv.rst:511 +#: library/csv.rst:517 msgid "" "Write the *row* parameter to the writer's file object, formatted according " "to the current :class:`Dialect`. Return the return value of the call to the " "*write* method of the underlying file object." msgstr "" -#: library/csv.rst:515 +#: library/csv.rst:521 msgid "Added support of arbitrary iterables." msgstr "" -#: library/csv.rst:520 +#: library/csv.rst:526 msgid "" "Write all elements in *rows* (an iterable of *row* objects as described " "above) to the writer's file object, formatted according to the current " "dialect." msgstr "" -#: library/csv.rst:524 +#: library/csv.rst:530 msgid "Writer objects have the following public attribute:" msgstr "" -#: library/csv.rst:529 +#: library/csv.rst:535 msgid "A read-only description of the dialect in use by the writer." msgstr "" -#: library/csv.rst:532 +#: library/csv.rst:538 msgid "DictWriter objects have the following public method:" msgstr "" -#: library/csv.rst:537 +#: library/csv.rst:543 msgid "" "Write a row with the field names (as specified in the constructor) to the " "writer's file object, formatted according to the current dialect. Return the " "return value of the :meth:`csvwriter.writerow` call used internally." msgstr "" -#: library/csv.rst:542 +#: library/csv.rst:548 msgid "" ":meth:`writeheader` now also returns the value returned by the :meth:" "`csvwriter.writerow` method it uses internally." msgstr "" -#: library/csv.rst:550 +#: library/csv.rst:556 msgid "Examples" msgstr "" -#: library/csv.rst:552 +#: library/csv.rst:558 msgid "The simplest example of reading a CSV file::" msgstr "" -#: library/csv.rst:554 +#: library/csv.rst:560 msgid "" "import csv\n" "with open('some.csv', newline='') as f:\n" @@ -662,11 +670,11 @@ msgid "" " print(row)" msgstr "" -#: library/csv.rst:560 +#: library/csv.rst:566 msgid "Reading a file with an alternate format::" msgstr "" -#: library/csv.rst:562 +#: library/csv.rst:568 msgid "" "import csv\n" "with open('passwd', newline='') as f:\n" @@ -675,11 +683,11 @@ msgid "" " print(row)" msgstr "" -#: library/csv.rst:568 +#: library/csv.rst:574 msgid "The corresponding simplest possible writing example is::" msgstr "" -#: library/csv.rst:570 +#: library/csv.rst:576 msgid "" "import csv\n" "with open('some.csv', 'w', newline='') as f:\n" @@ -687,7 +695,7 @@ msgid "" " writer.writerows(someiterable)" msgstr "" -#: library/csv.rst:575 +#: library/csv.rst:581 msgid "" "Since :func:`open` is used to open a CSV file for reading, the file will by " "default be decoded into unicode using the system default encoding (see :func:" @@ -695,7 +703,7 @@ msgid "" "``encoding`` argument of open::" msgstr "" -#: library/csv.rst:580 +#: library/csv.rst:586 msgid "" "import csv\n" "with open('some.csv', newline='', encoding='utf-8') as f:\n" @@ -704,17 +712,17 @@ msgid "" " print(row)" msgstr "" -#: library/csv.rst:586 +#: library/csv.rst:592 msgid "" "The same applies to writing in something other than the system default " "encoding: specify the encoding argument when opening the output file." msgstr "" -#: library/csv.rst:589 +#: library/csv.rst:595 msgid "Registering a new dialect::" msgstr "" -#: library/csv.rst:591 +#: library/csv.rst:597 msgid "" "import csv\n" "csv.register_dialect('unixpwd', delimiter=':', quoting=csv.QUOTE_NONE)\n" @@ -722,13 +730,13 @@ msgid "" " reader = csv.reader(f, 'unixpwd')" msgstr "" -#: library/csv.rst:596 +#: library/csv.rst:602 msgid "" "A slightly more advanced use of the reader --- catching and reporting " "errors::" msgstr "" -#: library/csv.rst:598 +#: library/csv.rst:604 msgid "" "import csv, sys\n" "filename = 'some.csv'\n" @@ -738,27 +746,27 @@ msgid "" " for row in reader:\n" " print(row)\n" " except csv.Error as e:\n" -" sys.exit('file {}, line {}: {}'.format(filename, reader.line_num, e))" +" sys.exit(f'file {filename}, line {reader.line_num}: {e}')" msgstr "" -#: library/csv.rst:608 +#: library/csv.rst:614 msgid "" "And while the module doesn't directly support parsing strings, it can easily " "be done::" msgstr "" -#: library/csv.rst:611 +#: library/csv.rst:617 msgid "" "import csv\n" "for row in csv.reader(['one,two,three']):\n" " print(row)" msgstr "" -#: library/csv.rst:617 +#: library/csv.rst:623 msgid "Footnotes" msgstr "" -#: library/csv.rst:618 +#: library/csv.rst:624 msgid "" "If ``newline=''`` is not specified, newlines embedded inside quoted fields " "will not be interpreted correctly, and on platforms that use ``\\r\\n`` " diff --git a/library/ctypes.po b/library/ctypes.po index f8089569..38879773 100644 --- a/library/ctypes.po +++ b/library/ctypes.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -311,7 +311,7 @@ msgid "" "learn more about :mod:`ctypes` data types." msgstr "" -#: library/ctypes.rst:2388 +#: library/ctypes.rst:2414 msgid "Fundamental data types" msgstr "" @@ -1175,39 +1175,47 @@ msgid "" "... (\"second_16\", c_int, 16)]\n" "...\n" ">>> print(Int.first_16)\n" -"\n" +"\n" ">>> print(Int.second_16)\n" -"\n" -">>>" +"" +msgstr "" + +#: library/ctypes.rst:721 +msgid "" +"It is important to note that bit field allocation and layout in memory are " +"not defined as a C standard; their implementation is compiler-specific. By " +"default, Python will attempt to match the behavior of a \"native\" compiler " +"for the current platform. See the :attr:`~Structure._layout_` attribute for " +"details on the default behavior and how to change it." msgstr "" -#: library/ctypes.rst:726 +#: library/ctypes.rst:732 msgid "Arrays" msgstr "" -#: library/ctypes.rst:728 +#: library/ctypes.rst:734 msgid "" "Arrays are sequences, containing a fixed number of instances of the same " "type." msgstr "" -#: library/ctypes.rst:730 +#: library/ctypes.rst:736 msgid "" "The recommended way to create array types is by multiplying a data type with " "a positive integer::" msgstr "" -#: library/ctypes.rst:733 +#: library/ctypes.rst:739 msgid "TenPointsArrayType = POINT * 10" msgstr "" -#: library/ctypes.rst:735 +#: library/ctypes.rst:741 msgid "" "Here is an example of a somewhat artificial data type, a structure " "containing 4 POINTs among other stuff::" msgstr "" -#: library/ctypes.rst:738 +#: library/ctypes.rst:744 msgid "" ">>> from ctypes import *\n" ">>> class POINT(Structure):\n" @@ -1223,28 +1231,28 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:751 +#: library/ctypes.rst:757 msgid "Instances are created in the usual way, by calling the class::" msgstr "" -#: library/ctypes.rst:753 +#: library/ctypes.rst:759 msgid "" "arr = TenPointsArrayType()\n" "for pt in arr:\n" " print(pt.x, pt.y)" msgstr "" -#: library/ctypes.rst:757 +#: library/ctypes.rst:763 msgid "" "The above code print a series of ``0 0`` lines, because the array contents " "is initialized to zeros." msgstr "" -#: library/ctypes.rst:760 +#: library/ctypes.rst:766 msgid "Initializers of the correct type can also be specified::" msgstr "" -#: library/ctypes.rst:762 +#: library/ctypes.rst:768 msgid "" ">>> from ctypes import *\n" ">>> TenIntegers = c_int * 10\n" @@ -1257,17 +1265,17 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:776 +#: library/ctypes.rst:782 msgid "Pointers" msgstr "" -#: library/ctypes.rst:778 +#: library/ctypes.rst:784 msgid "" "Pointer instances are created by calling the :func:`pointer` function on a :" "mod:`ctypes` type::" msgstr "" -#: library/ctypes.rst:781 +#: library/ctypes.rst:787 msgid "" ">>> from ctypes import *\n" ">>> i = c_int(42)\n" @@ -1275,26 +1283,26 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:786 +#: library/ctypes.rst:792 msgid "" "Pointer instances have a :attr:`~_Pointer.contents` attribute which returns " "the object to which the pointer points, the ``i`` object above::" msgstr "" -#: library/ctypes.rst:789 +#: library/ctypes.rst:795 msgid "" ">>> pi.contents\n" "c_long(42)\n" ">>>" msgstr "" -#: library/ctypes.rst:793 +#: library/ctypes.rst:799 msgid "" "Note that :mod:`ctypes` does not have OOR (original object return), it " "constructs a new, equivalent object each time you retrieve an attribute::" msgstr "" -#: library/ctypes.rst:796 +#: library/ctypes.rst:802 msgid "" ">>> pi.contents is i\n" "False\n" @@ -1303,14 +1311,14 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:802 +#: library/ctypes.rst:808 msgid "" "Assigning another :class:`c_int` instance to the pointer's contents " "attribute would cause the pointer to point to the memory location where this " "is stored::" msgstr "" -#: library/ctypes.rst:805 +#: library/ctypes.rst:811 msgid "" ">>> i = c_int(99)\n" ">>> pi.contents = i\n" @@ -1319,22 +1327,22 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:814 +#: library/ctypes.rst:820 msgid "Pointer instances can also be indexed with integers::" msgstr "" -#: library/ctypes.rst:816 +#: library/ctypes.rst:822 msgid "" ">>> pi[0]\n" "99\n" ">>>" msgstr "" -#: library/ctypes.rst:820 +#: library/ctypes.rst:826 msgid "Assigning to an integer index changes the pointed to value::" msgstr "" -#: library/ctypes.rst:822 +#: library/ctypes.rst:828 msgid "" ">>> print(i)\n" "c_long(99)\n" @@ -1344,7 +1352,7 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:829 +#: library/ctypes.rst:835 msgid "" "It is also possible to use indexes different from 0, but you must know what " "you're doing, just as in C: You can access or change arbitrary memory " @@ -1353,7 +1361,7 @@ msgid "" "instead of a single item." msgstr "" -#: library/ctypes.rst:835 +#: library/ctypes.rst:841 msgid "" "Behind the scenes, the :func:`pointer` function does more than simply create " "pointer instances, it has to create pointer *types* first. This is done with " @@ -1361,7 +1369,7 @@ msgid "" "returns a new type::" msgstr "" -#: library/ctypes.rst:840 +#: library/ctypes.rst:846 msgid "" ">>> PI = POINTER(c_int)\n" ">>> PI\n" @@ -1375,13 +1383,13 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:851 +#: library/ctypes.rst:857 msgid "" "Calling the pointer type without an argument creates a ``NULL`` pointer. " "``NULL`` pointers have a ``False`` boolean value::" msgstr "" -#: library/ctypes.rst:854 +#: library/ctypes.rst:860 msgid "" ">>> null_ptr = POINTER(c_int)()\n" ">>> print(bool(null_ptr))\n" @@ -1389,13 +1397,13 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:859 +#: library/ctypes.rst:865 msgid "" ":mod:`ctypes` checks for ``NULL`` when dereferencing pointers (but " "dereferencing invalid non-\\ ``NULL`` pointers would crash Python)::" msgstr "" -#: library/ctypes.rst:862 +#: library/ctypes.rst:868 msgid "" ">>> null_ptr[0]\n" "Traceback (most recent call last):\n" @@ -1410,25 +1418,25 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:877 +#: library/ctypes.rst:883 msgid "Thread safety without the GIL" msgstr "" -#: library/ctypes.rst:879 +#: library/ctypes.rst:885 msgid "" -"In Python 3.13, the :term:`GIL` may be disabled on :term:`experimental free " +"From Python 3.13 onward, the :term:`GIL` can be disabled on :term:`free " "threaded ` builds. In ctypes, reads and writes to a single " "object concurrently is safe, but not across multiple objects:" msgstr "" -#: library/ctypes.rst:882 +#: library/ctypes.rst:888 msgid "" ">>> number = c_int(42)\n" ">>> pointer_a = pointer(number)\n" ">>> pointer_b = pointer(number)" msgstr "" -#: library/ctypes.rst:888 +#: library/ctypes.rst:894 msgid "" "In the above, it's only safe for one object to read and write to the address " "at once if the GIL is disabled. So, ``pointer_a`` can be shared and written " @@ -1437,7 +1445,7 @@ msgid "" "Lock` to synchronize access to memory:" msgstr "" -#: library/ctypes.rst:893 +#: library/ctypes.rst:899 msgid "" ">>> import threading\n" ">>> lock = threading.Lock()\n" @@ -1449,11 +1457,11 @@ msgid "" "... pointer_b.contents = 42" msgstr "" -#: library/ctypes.rst:908 +#: library/ctypes.rst:914 msgid "Type conversions" msgstr "" -#: library/ctypes.rst:910 +#: library/ctypes.rst:916 msgid "" "Usually, ctypes does strict type checking. This means, if you have " "``POINTER(c_int)`` in the :attr:`~_CFuncPtr.argtypes` list of a function or " @@ -1464,7 +1472,7 @@ msgid "" "ctypes accepts an array of c_int::" msgstr "" -#: library/ctypes.rst:917 +#: library/ctypes.rst:923 msgid "" ">>> class Bar(Structure):\n" "... _fields_ = [(\"count\", c_int), (\"values\", POINTER(c_int))]\n" @@ -1481,7 +1489,7 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:931 +#: library/ctypes.rst:937 msgid "" "In addition, if a function argument is explicitly declared to be a pointer " "type (such as ``POINTER(c_int)``) in :attr:`~_CFuncPtr.argtypes`, an object " @@ -1490,17 +1498,17 @@ msgid "" "automatically." msgstr "" -#: library/ctypes.rst:936 +#: library/ctypes.rst:942 msgid "To set a POINTER type field to ``NULL``, you can assign ``None``::" msgstr "" -#: library/ctypes.rst:938 +#: library/ctypes.rst:944 msgid "" ">>> bar.values = None\n" ">>>" msgstr "" -#: library/ctypes.rst:943 +#: library/ctypes.rst:949 msgid "" "Sometimes you have instances of incompatible types. In C, you can cast one " "type into another type. :mod:`ctypes` provides a :func:`cast` function " @@ -1509,7 +1517,7 @@ msgid "" "``values`` field, but not instances of other types::" msgstr "" -#: library/ctypes.rst:949 +#: library/ctypes.rst:955 msgid "" ">>> bar.values = (c_byte * 4)()\n" "Traceback (most recent call last):\n" @@ -1519,11 +1527,11 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:955 +#: library/ctypes.rst:961 msgid "For these cases, the :func:`cast` function is handy." msgstr "" -#: library/ctypes.rst:957 +#: library/ctypes.rst:963 msgid "" "The :func:`cast` function can be used to cast a ctypes instance into a " "pointer to a different ctypes data type. :func:`cast` takes two parameters, " @@ -1532,7 +1540,7 @@ msgid "" "references the same memory block as the first argument::" msgstr "" -#: library/ctypes.rst:963 +#: library/ctypes.rst:969 msgid "" ">>> a = (c_byte * 4)()\n" ">>> cast(a, POINTER(c_int))\n" @@ -1540,13 +1548,13 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:968 +#: library/ctypes.rst:974 msgid "" "So, :func:`cast` can be used to assign to the ``values`` field of ``Bar`` " "the structure::" msgstr "" -#: library/ctypes.rst:971 +#: library/ctypes.rst:977 msgid "" ">>> bar = Bar()\n" ">>> bar.values = cast((c_byte * 4)(), POINTER(c_int))\n" @@ -1555,18 +1563,18 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:981 +#: library/ctypes.rst:987 msgid "Incomplete Types" msgstr "" -#: library/ctypes.rst:983 +#: library/ctypes.rst:989 msgid "" "*Incomplete Types* are structures, unions or arrays whose members are not " "yet specified. In C, they are specified by forward declarations, which are " "defined later::" msgstr "" -#: library/ctypes.rst:987 +#: library/ctypes.rst:993 msgid "" "struct cell; /* forward declaration */\n" "\n" @@ -1576,13 +1584,13 @@ msgid "" "};" msgstr "" -#: library/ctypes.rst:994 +#: library/ctypes.rst:1000 msgid "" "The straightforward translation into ctypes code would be this, but it does " "not work::" msgstr "" -#: library/ctypes.rst:997 +#: library/ctypes.rst:1003 msgid "" ">>> class cell(Structure):\n" "... _fields_ = [(\"name\", c_char_p),\n" @@ -1595,14 +1603,14 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:1007 +#: library/ctypes.rst:1013 msgid "" "because the new ``class cell`` is not available in the class statement " "itself. In :mod:`ctypes`, we can define the ``cell`` class and set the :attr:" "`~Structure._fields_` attribute later, after the class statement::" msgstr "" -#: library/ctypes.rst:1011 +#: library/ctypes.rst:1017 msgid "" ">>> from ctypes import *\n" ">>> class cell(Structure):\n" @@ -1613,13 +1621,13 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:1019 +#: library/ctypes.rst:1025 msgid "" "Let's try it. We create two instances of ``cell``, and let them point to " "each other, and finally follow the pointer chain a few times::" msgstr "" -#: library/ctypes.rst:1022 +#: library/ctypes.rst:1028 msgid "" ">>> c1 = cell()\n" ">>> c1.name = b\"foo\"\n" @@ -1636,24 +1644,24 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:1040 +#: library/ctypes.rst:1046 msgid "Callback functions" msgstr "" -#: library/ctypes.rst:1042 +#: library/ctypes.rst:1048 msgid "" ":mod:`ctypes` allows creating C callable function pointers from Python " "callables. These are sometimes called *callback functions*." msgstr "" -#: library/ctypes.rst:1045 +#: library/ctypes.rst:1051 msgid "" "First, you must create a class for the callback function. The class knows " "the calling convention, the return type, and the number and types of " "arguments this function will receive." msgstr "" -#: library/ctypes.rst:1049 +#: library/ctypes.rst:1055 msgid "" "The :func:`CFUNCTYPE` factory function creates types for callback functions " "using the ``cdecl`` calling convention. On Windows, the :func:`WINFUNCTYPE` " @@ -1661,21 +1669,21 @@ msgid "" "calling convention." msgstr "" -#: library/ctypes.rst:1054 +#: library/ctypes.rst:1060 msgid "" "Both of these factory functions are called with the result type as first " "argument, and the callback functions expected argument types as the " "remaining arguments." msgstr "" -#: library/ctypes.rst:1058 +#: library/ctypes.rst:1064 msgid "" "I will present an example here which uses the standard C library's :c:func:`!" "qsort` function, that is used to sort items with the help of a callback " "function. :c:func:`!qsort` will be used to sort an array of integers::" msgstr "" -#: library/ctypes.rst:1062 +#: library/ctypes.rst:1068 msgid "" ">>> IntArray5 = c_int * 5\n" ">>> ia = IntArray5(5, 1, 7, 33, 99)\n" @@ -1684,7 +1692,7 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:1068 +#: library/ctypes.rst:1074 msgid "" ":func:`!qsort` must be called with a pointer to the data to sort, the number " "of items in the data array, the size of one item, and a pointer to the " @@ -1694,25 +1702,25 @@ msgid "" "otherwise." msgstr "" -#: library/ctypes.rst:1074 +#: library/ctypes.rst:1080 msgid "" "So our callback function receives pointers to integers, and must return an " "integer. First we create the ``type`` for the callback function::" msgstr "" -#: library/ctypes.rst:1077 +#: library/ctypes.rst:1083 msgid "" ">>> CMPFUNC = CFUNCTYPE(c_int, POINTER(c_int), POINTER(c_int))\n" ">>>" msgstr "" -#: library/ctypes.rst:1080 +#: library/ctypes.rst:1086 msgid "" "To get started, here is a simple callback that shows the values it gets " "passed::" msgstr "" -#: library/ctypes.rst:1083 +#: library/ctypes.rst:1089 msgid "" ">>> def py_cmp_func(a, b):\n" "... print(\"py_cmp_func\", a[0], b[0])\n" @@ -1722,11 +1730,11 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:1090 +#: library/ctypes.rst:1096 msgid "The result::" msgstr "" -#: library/ctypes.rst:1092 +#: library/ctypes.rst:1098 msgid "" ">>> qsort(ia, len(ia), sizeof(c_int), cmp_func)\n" "py_cmp_func 5 1\n" @@ -1737,11 +1745,11 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:1100 +#: library/ctypes.rst:1106 msgid "Now we can actually compare the two items and return a useful result::" msgstr "" -#: library/ctypes.rst:1102 +#: library/ctypes.rst:1108 msgid "" ">>> def py_cmp_func(a, b):\n" "... print(\"py_cmp_func\", a[0], b[0])\n" @@ -1757,11 +1765,11 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:1115 +#: library/ctypes.rst:1121 msgid "As we can easily check, our array is sorted now::" msgstr "" -#: library/ctypes.rst:1117 +#: library/ctypes.rst:1123 msgid "" ">>> for i in ia: print(i, end=\" \")\n" "...\n" @@ -1769,13 +1777,13 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:1122 +#: library/ctypes.rst:1128 msgid "" "The function factories can be used as decorator factories, so we may as well " "write::" msgstr "" -#: library/ctypes.rst:1125 +#: library/ctypes.rst:1131 msgid "" ">>> @CFUNCTYPE(c_int, POINTER(c_int), POINTER(c_int))\n" "... def py_cmp_func(a, b):\n" @@ -1791,14 +1799,14 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:1140 +#: library/ctypes.rst:1146 msgid "" "Make sure you keep references to :func:`CFUNCTYPE` objects as long as they " "are used from C code. :mod:`ctypes` doesn't, and if you don't, they may be " "garbage collected, crashing your program when a callback is made." msgstr "" -#: library/ctypes.rst:1144 +#: library/ctypes.rst:1150 msgid "" "Also, note that if the callback function is called in a thread created " "outside of Python's control (e.g. by the foreign code that calls the " @@ -1808,42 +1816,42 @@ msgid "" "even when those calls are made from the same C thread." msgstr "" -#: library/ctypes.rst:1154 +#: library/ctypes.rst:1160 msgid "Accessing values exported from dlls" msgstr "" -#: library/ctypes.rst:1156 +#: library/ctypes.rst:1162 msgid "" "Some shared libraries not only export functions, they also export variables. " "An example in the Python library itself is the :c:data:`Py_Version`, Python " "runtime version number encoded in a single constant integer." msgstr "" -#: library/ctypes.rst:1160 +#: library/ctypes.rst:1166 msgid "" ":mod:`ctypes` can access values like this with the :meth:`~_CData.in_dll` " "class methods of the type. *pythonapi* is a predefined symbol giving access " "to the Python C api::" msgstr "" -#: library/ctypes.rst:1164 +#: library/ctypes.rst:1170 msgid "" ">>> version = ctypes.c_int.in_dll(ctypes.pythonapi, \"Py_Version\")\n" ">>> print(hex(version.value))\n" "0x30c00a0" msgstr "" -#: library/ctypes.rst:1168 +#: library/ctypes.rst:1174 msgid "" "An extended example which also demonstrates the use of pointers accesses " "the :c:data:`PyImport_FrozenModules` pointer exported by Python." msgstr "" -#: library/ctypes.rst:1171 +#: library/ctypes.rst:1177 msgid "Quoting the docs for that value:" msgstr "" -#: library/ctypes.rst:1173 +#: library/ctypes.rst:1179 msgid "" "This pointer is initialized to point to an array of :c:struct:`_frozen` " "records, terminated by one whose members are all ``NULL`` or zero. When a " @@ -1852,13 +1860,13 @@ msgid "" "frozen modules." msgstr "" -#: library/ctypes.rst:1178 +#: library/ctypes.rst:1184 msgid "" "So manipulating this pointer could even prove useful. To restrict the " "example size, we show only how this table can be read with :mod:`ctypes`::" msgstr "" -#: library/ctypes.rst:1181 +#: library/ctypes.rst:1187 msgid "" ">>> from ctypes import *\n" ">>>\n" @@ -1872,20 +1880,20 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:1192 +#: library/ctypes.rst:1198 msgid "" "We have defined the :c:struct:`_frozen` data type, so we can get the pointer " "to the table::" msgstr "" -#: library/ctypes.rst:1195 +#: library/ctypes.rst:1201 msgid "" ">>> FrozenTable = POINTER(struct_frozen)\n" ">>> table = FrozenTable.in_dll(pythonapi, \"_PyImport_FrozenBootstrap\")\n" ">>>" msgstr "" -#: library/ctypes.rst:1199 +#: library/ctypes.rst:1205 msgid "" "Since ``table`` is a ``pointer`` to the array of ``struct_frozen`` records, " "we can iterate over it, but we just have to make sure that our loop " @@ -1894,7 +1902,7 @@ msgid "" "the loop when we hit the ``NULL`` entry::" msgstr "" -#: library/ctypes.rst:1205 +#: library/ctypes.rst:1211 msgid "" ">>> for item in table:\n" "... if item.name is None:\n" @@ -1907,28 +1915,28 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:1215 +#: library/ctypes.rst:1221 msgid "" "The fact that standard Python has a frozen module and a frozen package " "(indicated by the negative ``size`` member) is not well known, it is only " "used for testing. Try it out with ``import __hello__`` for example." msgstr "" -#: library/ctypes.rst:1223 +#: library/ctypes.rst:1229 msgid "Surprises" msgstr "" -#: library/ctypes.rst:1225 +#: library/ctypes.rst:1231 msgid "" "There are some edges in :mod:`ctypes` where you might expect something other " "than what actually happens." msgstr "" -#: library/ctypes.rst:1228 +#: library/ctypes.rst:1234 msgid "Consider the following example::" msgstr "" -#: library/ctypes.rst:1230 +#: library/ctypes.rst:1236 msgid "" ">>> from ctypes import *\n" ">>> class POINT(Structure):\n" @@ -1949,13 +1957,13 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:1248 +#: library/ctypes.rst:1254 msgid "" "Hm. We certainly expected the last statement to print ``3 4 1 2``. What " "happened? Here are the steps of the ``rc.a, rc.b = rc.b, rc.a`` line above::" msgstr "" -#: library/ctypes.rst:1251 +#: library/ctypes.rst:1257 msgid "" ">>> temp0, temp1 = rc.b, rc.a\n" ">>> rc.a = temp0\n" @@ -1963,7 +1971,7 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:1256 +#: library/ctypes.rst:1262 msgid "" "Note that ``temp0`` and ``temp1`` are objects still using the internal " "buffer of the ``rc`` object above. So executing ``rc.a = temp0`` copies the " @@ -1972,20 +1980,20 @@ msgid "" "have the expected effect." msgstr "" -#: library/ctypes.rst:1262 +#: library/ctypes.rst:1268 msgid "" "Keep in mind that retrieving sub-objects from Structure, Unions, and Arrays " "doesn't *copy* the sub-object, instead it retrieves a wrapper object " "accessing the root-object's underlying buffer." msgstr "" -#: library/ctypes.rst:1266 +#: library/ctypes.rst:1272 msgid "" "Another example that may behave differently from what one would expect is " "this::" msgstr "" -#: library/ctypes.rst:1268 +#: library/ctypes.rst:1274 msgid "" ">>> s = c_char_p()\n" ">>> s.value = b\"abc def ghi\"\n" @@ -1996,13 +2004,13 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:1278 +#: library/ctypes.rst:1284 msgid "" "Objects instantiated from :class:`c_char_p` can only have their value set to " "bytes or integers." msgstr "" -#: library/ctypes.rst:1281 +#: library/ctypes.rst:1287 msgid "" "Why is it printing ``False``? ctypes instances are objects containing a " "memory block plus some :term:`descriptor`\\s accessing the contents of the " @@ -2011,16 +2019,16 @@ msgid "" "the contents again constructs a new Python object each time!" msgstr "" -#: library/ctypes.rst:1291 +#: library/ctypes.rst:1297 msgid "Variable-sized data types" msgstr "" -#: library/ctypes.rst:1293 +#: library/ctypes.rst:1299 msgid "" ":mod:`ctypes` provides some support for variable-sized arrays and structures." msgstr "" -#: library/ctypes.rst:1295 +#: library/ctypes.rst:1301 msgid "" "The :func:`resize` function can be used to resize the memory buffer of an " "existing ctypes object. The function takes the object as first argument, " @@ -2029,7 +2037,7 @@ msgid "" "objects type, a :exc:`ValueError` is raised if this is tried::" msgstr "" -#: library/ctypes.rst:1301 +#: library/ctypes.rst:1307 msgid "" ">>> short_array = (c_short * 4)()\n" ">>> print(sizeof(short_array))\n" @@ -2046,14 +2054,14 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:1315 +#: library/ctypes.rst:1321 msgid "" "This is nice and fine, but how would one access the additional elements " "contained in this array? Since the type still only knows about 4 elements, " "we get errors accessing other elements::" msgstr "" -#: library/ctypes.rst:1319 +#: library/ctypes.rst:1325 msgid "" ">>> short_array[:]\n" "[0, 0, 0, 0]\n" @@ -2064,28 +2072,28 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:1327 +#: library/ctypes.rst:1333 msgid "" "Another way to use variable-sized data types with :mod:`ctypes` is to use " "the dynamic nature of Python, and (re-)define the data type after the " "required size is already known, on a case by case basis." msgstr "" -#: library/ctypes.rst:1335 +#: library/ctypes.rst:1341 msgid "ctypes reference" msgstr "" -#: library/ctypes.rst:1341 +#: library/ctypes.rst:1347 msgid "Finding shared libraries" msgstr "" -#: library/ctypes.rst:1343 +#: library/ctypes.rst:1349 msgid "" "When programming in a compiled language, shared libraries are accessed when " "compiling/linking a program, and when the program is run." msgstr "" -#: library/ctypes.rst:1346 +#: library/ctypes.rst:1352 msgid "" "The purpose of the :func:`~ctypes.util.find_library` function is to locate a " "library in a way similar to what the compiler or runtime loader does (on " @@ -2094,13 +2102,13 @@ msgid "" "and call the runtime loader directly." msgstr "" -#: library/ctypes.rst:1352 +#: library/ctypes.rst:1358 msgid "" "The :mod:`!ctypes.util` module provides a function which can help to " "determine the library to load." msgstr "" -#: library/ctypes.rst:1360 +#: library/ctypes.rst:1366 msgid "" "Try to find a library and return a pathname. *name* is the library name " "without any prefix like *lib*, suffix like ``.so``, ``.dylib`` or version " @@ -2108,29 +2116,29 @@ msgid "" "If no library can be found, returns ``None``." msgstr "" -#: library/ctypes.rst:2093 +#: library/ctypes.rst:2119 msgid "The exact functionality is system dependent." msgstr "" -#: library/ctypes.rst:1367 +#: library/ctypes.rst:1373 msgid "" "On Linux, :func:`~ctypes.util.find_library` tries to run external programs " "(``/sbin/ldconfig``, ``gcc``, ``objdump`` and ``ld``) to find the library " "file. It returns the filename of the library file." msgstr "" -#: library/ctypes.rst:1371 +#: library/ctypes.rst:1377 msgid "" "On Linux, the value of the environment variable ``LD_LIBRARY_PATH`` is used " "when searching for libraries, if a library cannot be found by any other " "means." msgstr "" -#: library/ctypes.rst:1375 +#: library/ctypes.rst:1381 msgid "Here are some examples::" msgstr "" -#: library/ctypes.rst:1377 +#: library/ctypes.rst:1383 msgid "" ">>> from ctypes.util import find_library\n" ">>> find_library(\"m\")\n" @@ -2142,14 +2150,14 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:1386 +#: library/ctypes.rst:1392 msgid "" "On macOS and Android, :func:`~ctypes.util.find_library` uses the system's " "standard naming schemes and paths to locate the library, and returns a full " "pathname if successful::" msgstr "" -#: library/ctypes.rst:1390 +#: library/ctypes.rst:1396 msgid "" ">>> from ctypes.util import find_library\n" ">>> find_library(\"c\")\n" @@ -2163,7 +2171,7 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:1401 +#: library/ctypes.rst:1407 msgid "" "On Windows, :func:`~ctypes.util.find_library` searches along the system " "search path, and returns the full pathname, but since there is no predefined " @@ -2171,7 +2179,7 @@ msgid "" "``None``." msgstr "" -#: library/ctypes.rst:1405 +#: library/ctypes.rst:1411 msgid "" "If wrapping a shared library with :mod:`ctypes`, it *may* be better to " "determine the shared library name at development time, and hardcode that " @@ -2179,18 +2187,18 @@ msgid "" "to locate the library at runtime." msgstr "" -#: library/ctypes.rst:1413 +#: library/ctypes.rst:1419 msgid "Listing loaded shared libraries" msgstr "" -#: library/ctypes.rst:1415 +#: library/ctypes.rst:1421 msgid "" "When writing code that relies on code loaded from shared libraries, it can " "be useful to know which shared libraries have already been loaded into the " "current process." msgstr "" -#: library/ctypes.rst:1419 +#: library/ctypes.rst:1425 msgid "" "The :mod:`!ctypes.util` module provides the :func:`~ctypes.util.dllist` " "function, which calls the different APIs provided by the various platforms " @@ -2198,7 +2206,7 @@ msgid "" "current process." msgstr "" -#: library/ctypes.rst:1423 +#: library/ctypes.rst:1429 msgid "" "The exact output of this function will be system dependent. On most " "platforms, the first entry of this list represents the current process " @@ -2206,7 +2214,7 @@ msgid "" "return may look like::" msgstr "" -#: library/ctypes.rst:1428 +#: library/ctypes.rst:1434 msgid "" ">>> from ctypes.util import dllist\n" ">>> dllist()\n" @@ -2214,24 +2222,24 @@ msgid "" "linux-gnu/libc.so.6', ... ]" msgstr "" -#: library/ctypes.rst:1435 +#: library/ctypes.rst:1441 msgid "Loading shared libraries" msgstr "" -#: library/ctypes.rst:1437 +#: library/ctypes.rst:1443 msgid "" "There are several ways to load shared libraries into the Python process. " "One way is to instantiate one of the following classes:" msgstr "" -#: library/ctypes.rst:1443 +#: library/ctypes.rst:1449 msgid "" "Instances of this class represent loaded shared libraries. Functions in " "these libraries use the standard C calling convention, and are assumed to " "return :c:expr:`int`." msgstr "" -#: library/ctypes.rst:1447 +#: library/ctypes.rst:1453 msgid "" "On Windows creating a :class:`CDLL` instance may fail even if the DLL name " "exists. When a dependent DLL of the loaded DLL is not found, a :exc:" @@ -2243,17 +2251,17 @@ msgid "" "determine which one is not found using Windows debugging and tracing tools." msgstr "" -#: library/ctypes.rst:1484 library/ctypes.rst:1515 +#: library/ctypes.rst:1490 library/ctypes.rst:1521 msgid "The *name* parameter can now be a :term:`path-like object`." msgstr "" -#: library/ctypes.rst:1463 +#: library/ctypes.rst:1469 msgid "" "`Microsoft DUMPBIN tool `_ -- A tool to find DLL dependents." msgstr "" -#: library/ctypes.rst:1469 +#: library/ctypes.rst:1475 msgid "" "Instances of this class represent loaded shared libraries, functions in " "these libraries use the ``stdcall`` calling convention, and are assumed to " @@ -2263,32 +2271,32 @@ msgid "" "a failure, an :class:`OSError` is automatically raised." msgstr "" -#: library/ctypes.rst:1493 library/ctypes.rst:1645 library/ctypes.rst:1869 -#: library/ctypes.rst:2073 library/ctypes.rst:2107 library/ctypes.rst:2130 -#: library/ctypes.rst:2154 library/ctypes.rst:2248 library/ctypes.rst:3046 +#: library/ctypes.rst:1499 library/ctypes.rst:1651 library/ctypes.rst:1875 +#: library/ctypes.rst:2099 library/ctypes.rst:2133 library/ctypes.rst:2156 +#: library/ctypes.rst:2180 library/ctypes.rst:2274 library/ctypes.rst:3072 msgid "Availability" msgstr "" -#: library/ctypes.rst:1478 +#: library/ctypes.rst:1484 msgid "" ":exc:`WindowsError` used to be raised, which is now an alias of :exc:" "`OSError`." msgstr "" -#: library/ctypes.rst:1489 +#: library/ctypes.rst:1495 msgid "" "Instances of this class represent loaded shared libraries, functions in " "these libraries use the ``stdcall`` calling convention, and are assumed to " "return :c:expr:`int` by default." msgstr "" -#: library/ctypes.rst:1500 +#: library/ctypes.rst:1506 msgid "" "The Python :term:`global interpreter lock` is released before calling any " "function exported by these libraries, and reacquired afterwards." msgstr "" -#: library/ctypes.rst:1506 +#: library/ctypes.rst:1512 msgid "" "Instances of this class behave like :class:`CDLL` instances, except that the " "Python GIL is *not* released during the function call, and after the " @@ -2296,11 +2304,11 @@ msgid "" "set, a Python exception is raised." msgstr "" -#: library/ctypes.rst:1511 +#: library/ctypes.rst:1517 msgid "Thus, this is only useful to call Python C api functions directly." msgstr "" -#: library/ctypes.rst:1517 +#: library/ctypes.rst:1523 msgid "" "All these classes can be instantiated by calling them with at least one " "argument, the pathname of the shared library. If you have an existing " @@ -2310,7 +2318,7 @@ msgid "" "the process, and to get a handle to it." msgstr "" -#: library/ctypes.rst:1524 +#: library/ctypes.rst:1530 msgid "" "The *mode* parameter can be used to specify how the library is loaded. For " "details, consult the :manpage:`dlopen(3)` manpage. On Windows, *mode* is " @@ -2318,7 +2326,7 @@ msgid "" "configurable." msgstr "" -#: library/ctypes.rst:1529 +#: library/ctypes.rst:1535 msgid "" "The *use_errno* parameter, when set to true, enables a ctypes mechanism that " "allows accessing the system :data:`errno` error number in a safe way. :mod:" @@ -2328,14 +2336,14 @@ msgid "" "private copy, the same happens immediately after the function call." msgstr "" -#: library/ctypes.rst:1536 +#: library/ctypes.rst:1542 msgid "" "The function :func:`ctypes.get_errno` returns the value of the ctypes " "private copy, and the function :func:`ctypes.set_errno` changes the ctypes " "private copy to a new value and returns the former value." msgstr "" -#: library/ctypes.rst:1540 +#: library/ctypes.rst:1546 msgid "" "The *use_last_error* parameter, when set to true, enables the same mechanism " "for the Windows error code which is managed by the :func:`GetLastError` and :" @@ -2344,7 +2352,7 @@ msgid "" "private copy of the windows error code." msgstr "" -#: library/ctypes.rst:1546 +#: library/ctypes.rst:1552 msgid "" "The *winmode* parameter is used on Windows to specify how the library is " "loaded (since *mode* is ignored). It takes any value that is valid for the " @@ -2354,29 +2362,29 @@ msgid "" "ensure the correct library and dependencies are loaded." msgstr "" -#: library/ctypes.rst:1553 +#: library/ctypes.rst:1559 msgid "Added *winmode* parameter." msgstr "" -#: library/ctypes.rst:1560 +#: library/ctypes.rst:1566 msgid "" "Flag to use as *mode* parameter. On platforms where this flag is not " "available, it is defined as the integer zero." msgstr "" -#: library/ctypes.rst:1567 +#: library/ctypes.rst:1573 msgid "" "Flag to use as *mode* parameter. On platforms where this is not available, " "it is the same as *RTLD_GLOBAL*." msgstr "" -#: library/ctypes.rst:1574 +#: library/ctypes.rst:1580 msgid "" "The default mode which is used to load shared libraries. On OSX 10.3, this " "is *RTLD_GLOBAL*, otherwise it is the same as *RTLD_LOCAL*." msgstr "" -#: library/ctypes.rst:1577 +#: library/ctypes.rst:1583 msgid "" "Instances of these classes have no public methods. Functions exported by " "the shared library can be accessed as attributes or by index. Please note " @@ -2385,7 +2393,7 @@ msgid "" "other hand, accessing it through an index returns a new object each time::" msgstr "" -#: library/ctypes.rst:1583 +#: library/ctypes.rst:1589 msgid "" ">>> from ctypes import CDLL\n" ">>> libc = CDLL(\"libc.so.6\") # On Linux\n" @@ -2395,21 +2403,21 @@ msgid "" "False" msgstr "" -#: library/ctypes.rst:1590 +#: library/ctypes.rst:1596 msgid "" "The following public attributes are available, their name starts with an " "underscore to not clash with exported function names:" msgstr "" -#: library/ctypes.rst:1596 +#: library/ctypes.rst:1602 msgid "The system handle used to access the library." msgstr "" -#: library/ctypes.rst:1601 +#: library/ctypes.rst:1607 msgid "The name of the library passed in the constructor." msgstr "" -#: library/ctypes.rst:1603 +#: library/ctypes.rst:1609 msgid "" "Shared libraries can also be loaded by using one of the prefabricated " "objects, which are instances of the :class:`LibraryLoader` class, either by " @@ -2417,13 +2425,13 @@ msgid "" "library as attribute of the loader instance." msgstr "" -#: library/ctypes.rst:1611 +#: library/ctypes.rst:1617 msgid "" "Class which loads shared libraries. *dlltype* should be one of the :class:" "`CDLL`, :class:`PyDLL`, :class:`WinDLL`, or :class:`OleDLL` types." msgstr "" -#: library/ctypes.rst:1614 +#: library/ctypes.rst:1620 msgid "" ":meth:`!__getattr__` has special behavior: It allows loading a shared " "library by accessing it as attribute of a library loader instance. The " @@ -2431,39 +2439,39 @@ msgid "" "each time." msgstr "" -#: library/ctypes.rst:1620 +#: library/ctypes.rst:1626 msgid "" "Load a shared library into the process and return it. This method always " "returns a new instance of the library." msgstr "" -#: library/ctypes.rst:1624 +#: library/ctypes.rst:1630 msgid "These prefabricated library loaders are available:" msgstr "" -#: library/ctypes.rst:1629 +#: library/ctypes.rst:1635 msgid "Creates :class:`CDLL` instances." msgstr "" -#: library/ctypes.rst:1635 +#: library/ctypes.rst:1641 msgid "Creates :class:`WinDLL` instances." msgstr "" -#: library/ctypes.rst:1643 +#: library/ctypes.rst:1649 msgid "Creates :class:`OleDLL` instances." msgstr "" -#: library/ctypes.rst:1651 +#: library/ctypes.rst:1657 msgid "Creates :class:`PyDLL` instances." msgstr "" -#: library/ctypes.rst:1654 +#: library/ctypes.rst:1660 msgid "" "For accessing the C Python api directly, a ready-to-use Python shared " "library object is available:" msgstr "" -#: library/ctypes.rst:1660 +#: library/ctypes.rst:1666 msgid "" "An instance of :class:`PyDLL` that exposes Python C API functions as " "attributes. Note that all these functions are assumed to return C :c:expr:" @@ -2471,32 +2479,32 @@ msgid "" "correct :attr:`!restype` attribute to use these functions." msgstr "" -#: library/ctypes.rst:1667 +#: library/ctypes.rst:1673 msgid "" "Loading a library through any of these objects raises an :ref:`auditing " "event ` ``ctypes.dlopen`` with string argument ``name``, the name " "used to load the library." msgstr "" -#: library/ctypes.rst:1673 +#: library/ctypes.rst:1679 msgid "" "Accessing a function on a loaded library raises an auditing event ``ctypes." "dlsym`` with arguments ``library`` (the library object) and ``name`` (the " "symbol's name as a string or integer)." msgstr "" -#: library/ctypes.rst:1679 +#: library/ctypes.rst:1685 msgid "" "In cases when only the library handle is available rather than the object, " "accessing a function raises an auditing event ``ctypes.dlsym/handle`` with " "arguments ``handle`` (the raw library handle) and ``name``." msgstr "" -#: library/ctypes.rst:1686 +#: library/ctypes.rst:1692 msgid "Foreign functions" msgstr "" -#: library/ctypes.rst:1688 +#: library/ctypes.rst:1694 msgid "" "As explained in the previous section, foreign functions can be accessed as " "attributes of loaded shared libraries. The function objects created in this " @@ -2505,13 +2513,13 @@ msgid "" "library loader." msgstr "" -#: library/ctypes.rst:1693 +#: library/ctypes.rst:1699 msgid "" "They are instances of a private local class :class:`!_FuncPtr` (not exposed " "in :mod:`!ctypes`) which inherits from the private :class:`_CFuncPtr` class:" msgstr "" -#: library/ctypes.rst:1696 +#: library/ctypes.rst:1702 msgid "" ">>> import ctypes\n" ">>> lib = ctypes.CDLL(None)\n" @@ -2521,29 +2529,29 @@ msgid "" "False" msgstr "" -#: library/ctypes.rst:1707 +#: library/ctypes.rst:1713 msgid "Base class for C callable foreign functions." msgstr "" -#: library/ctypes.rst:1709 +#: library/ctypes.rst:1715 msgid "" "Instances of foreign functions are also C compatible data types; they " "represent C function pointers." msgstr "" -#: library/ctypes.rst:1712 +#: library/ctypes.rst:1718 msgid "" "This behavior can be customized by assigning to special attributes of the " "foreign function object." msgstr "" -#: library/ctypes.rst:1717 +#: library/ctypes.rst:1723 msgid "" "Assign a ctypes type to specify the result type of the foreign function. Use " "``None`` for :c:expr:`void`, a function not returning anything." msgstr "" -#: library/ctypes.rst:1720 +#: library/ctypes.rst:1726 msgid "" "It is possible to assign a callable Python object that is not a ctypes type, " "in this case the function is assumed to return a C :c:expr:`int`, and the " @@ -2553,7 +2561,7 @@ msgid "" "callable to the :attr:`errcheck` attribute." msgstr "" -#: library/ctypes.rst:1729 +#: library/ctypes.rst:1735 msgid "" "Assign a tuple of ctypes types to specify the argument types that the " "function accepts. Functions using the ``stdcall`` calling convention can " @@ -2562,7 +2570,7 @@ msgid "" "unspecified arguments as well." msgstr "" -#: library/ctypes.rst:1735 +#: library/ctypes.rst:1741 msgid "" "When a foreign function is called, each actual argument is passed to the :" "meth:`~_CData.from_param` class method of the items in the :attr:`argtypes` " @@ -2572,7 +2580,7 @@ msgid "" "object using ctypes conversion rules." msgstr "" -#: library/ctypes.rst:1742 +#: library/ctypes.rst:1748 msgid "" "New: It is now possible to put items in argtypes which are not ctypes types, " "but each item must have a :meth:`~_CData.from_param` method which returns a " @@ -2580,38 +2588,38 @@ msgid "" "defining adapters that can adapt custom objects as function parameters." msgstr "" -#: library/ctypes.rst:1749 +#: library/ctypes.rst:1755 msgid "" "Assign a Python function or another callable to this attribute. The callable " "will be called with three or more arguments:" msgstr "" -#: library/ctypes.rst:1756 +#: library/ctypes.rst:1762 msgid "" "*result* is what the foreign function returns, as specified by the :attr:`!" "restype` attribute." msgstr "" -#: library/ctypes.rst:1759 +#: library/ctypes.rst:1765 msgid "" "*func* is the foreign function object itself, this allows reusing the same " "callable object to check or post process the results of several functions." msgstr "" -#: library/ctypes.rst:1763 +#: library/ctypes.rst:1769 msgid "" "*arguments* is a tuple containing the parameters originally passed to the " "function call, this allows specializing the behavior on the arguments used." msgstr "" -#: library/ctypes.rst:1767 +#: library/ctypes.rst:1773 msgid "" "The object that this function returns will be returned from the foreign " "function call, but it can also check the result value and raise an exception " "if the foreign function call failed." msgstr "" -#: library/ctypes.rst:1774 +#: library/ctypes.rst:1780 msgid "" "On Windows, when a foreign function call raises a system exception (for " "example, due to an access violation), it will be captured and replaced with " @@ -2620,18 +2628,18 @@ msgid "" "hook to replace the exception with its own." msgstr "" -#: library/ctypes.rst:1782 +#: library/ctypes.rst:1788 msgid "" "Some ways to invoke foreign function calls as well as some of the functions " "in this module may raise an auditing event ``ctypes.call_function`` with " "arguments ``function pointer`` and ``arguments``." msgstr "" -#: library/ctypes.rst:1789 +#: library/ctypes.rst:1795 msgid "Function prototypes" msgstr "" -#: library/ctypes.rst:1791 +#: library/ctypes.rst:1797 msgid "" "Foreign functions can also be created by instantiating function prototypes. " "Function prototypes are similar to function prototypes in C; they describe a " @@ -2642,7 +2650,7 @@ msgid "" "``@wrapper`` syntax. See :ref:`ctypes-callback-functions` for examples." msgstr "" -#: library/ctypes.rst:1802 +#: library/ctypes.rst:1808 msgid "" "The returned function prototype creates functions that use the standard C " "calling convention. The function will release the GIL during the call. If " @@ -2651,37 +2659,37 @@ msgid "" "after the call; *use_last_error* does the same for the Windows error code." msgstr "" -#: library/ctypes.rst:1812 +#: library/ctypes.rst:1818 msgid "" "The returned function prototype creates functions that use the ``stdcall`` " "calling convention. The function will release the GIL during the call. " "*use_errno* and *use_last_error* have the same meaning as above." msgstr "" -#: library/ctypes.rst:1822 +#: library/ctypes.rst:1828 msgid "" "The returned function prototype creates functions that use the Python " "calling convention. The function will *not* release the GIL during the call." msgstr "" -#: library/ctypes.rst:1825 +#: library/ctypes.rst:1831 msgid "" "Function prototypes created by these factory functions can be instantiated " "in different ways, depending on the type and number of the parameters in the " "call:" msgstr "" -#: library/ctypes.rst:1832 +#: library/ctypes.rst:1838 msgid "" "Returns a foreign function at the specified address which must be an integer." msgstr "" -#: library/ctypes.rst:1839 +#: library/ctypes.rst:1845 msgid "" "Create a C callable function (a callback function) from a Python *callable*." msgstr "" -#: library/ctypes.rst:1846 +#: library/ctypes.rst:1852 msgid "" "Returns a foreign function exported by a shared library. *func_spec* must be " "a 2-tuple ``(name_or_ordinal, library)``. The first item is the name of the " @@ -2689,7 +2697,7 @@ msgid "" "small integer. The second item is the shared library instance." msgstr "" -#: library/ctypes.rst:1856 +#: library/ctypes.rst:1862 msgid "" "Returns a foreign function that will call a COM method. *vtbl_index* is the " "index into the virtual function table, a small non-negative integer. *name* " @@ -2697,86 +2705,86 @@ msgid "" "identifier which is used in extended error reporting." msgstr "" -#: library/ctypes.rst:1861 +#: library/ctypes.rst:1867 msgid "" "If *iid* is not specified, an :exc:`OSError` is raised if the COM method " "call fails. If *iid* is specified, a :exc:`~ctypes.COMError` is raised " "instead." msgstr "" -#: library/ctypes.rst:1865 +#: library/ctypes.rst:1871 msgid "" "COM methods use a special calling convention: They require a pointer to the " "COM interface as first argument, in addition to those parameters that are " "specified in the :attr:`!argtypes` tuple." msgstr "" -#: library/ctypes.rst:1872 +#: library/ctypes.rst:1878 msgid "" "The optional *paramflags* parameter creates foreign function wrappers with " "much more functionality than the features described above." msgstr "" -#: library/ctypes.rst:1875 +#: library/ctypes.rst:1881 msgid "" "*paramflags* must be a tuple of the same length as :attr:`~_CFuncPtr." "argtypes`." msgstr "" -#: library/ctypes.rst:1877 +#: library/ctypes.rst:1883 msgid "" "Each item in this tuple contains further information about a parameter, it " "must be a tuple containing one, two, or three items." msgstr "" -#: library/ctypes.rst:1880 +#: library/ctypes.rst:1886 msgid "" "The first item is an integer containing a combination of direction flags for " "the parameter:" msgstr "" -#: library/ctypes.rst:1883 +#: library/ctypes.rst:1889 msgid "1" msgstr "" -#: library/ctypes.rst:1884 +#: library/ctypes.rst:1890 msgid "Specifies an input parameter to the function." msgstr "" -#: library/ctypes.rst:1886 +#: library/ctypes.rst:1892 msgid "2" msgstr "" -#: library/ctypes.rst:1887 +#: library/ctypes.rst:1893 msgid "Output parameter. The foreign function fills in a value." msgstr "" -#: library/ctypes.rst:1889 +#: library/ctypes.rst:1895 msgid "4" msgstr "" -#: library/ctypes.rst:1890 +#: library/ctypes.rst:1896 msgid "Input parameter which defaults to the integer zero." msgstr "" -#: library/ctypes.rst:1892 +#: library/ctypes.rst:1898 msgid "" "The optional second item is the parameter name as string. If this is " "specified, the foreign function can be called with named parameters." msgstr "" -#: library/ctypes.rst:1895 +#: library/ctypes.rst:1901 msgid "The optional third item is the default value for this parameter." msgstr "" -#: library/ctypes.rst:1898 +#: library/ctypes.rst:1904 msgid "" "The following example demonstrates how to wrap the Windows ``MessageBoxW`` " "function so that it supports default parameters and named arguments. The C " "declaration from the windows header file is this::" msgstr "" -#: library/ctypes.rst:1902 +#: library/ctypes.rst:1908 msgid "" "WINUSERAPI int WINAPI\n" "MessageBoxW(\n" @@ -2786,11 +2794,11 @@ msgid "" " UINT uType);" msgstr "" -#: library/ctypes.rst:1932 +#: library/ctypes.rst:1938 msgid "Here is the wrapping with :mod:`ctypes`::" msgstr "" -#: library/ctypes.rst:1911 +#: library/ctypes.rst:1917 msgid "" ">>> from ctypes import c_int, WINFUNCTYPE, windll\n" ">>> from ctypes.wintypes import HWND, LPCWSTR, UINT\n" @@ -2800,18 +2808,18 @@ msgid "" ">>> MessageBox = prototype((\"MessageBoxW\", windll.user32), paramflags)" msgstr "" -#: library/ctypes.rst:1917 +#: library/ctypes.rst:1923 msgid "The ``MessageBox`` foreign function can now be called in these ways::" msgstr "" -#: library/ctypes.rst:1919 +#: library/ctypes.rst:1925 msgid "" ">>> MessageBox()\n" ">>> MessageBox(text=\"Spam, spam, spam\")\n" ">>> MessageBox(flags=2, text=\"foo bar\")" msgstr "" -#: library/ctypes.rst:1923 +#: library/ctypes.rst:1929 msgid "" "A second example demonstrates output parameters. The win32 " "``GetWindowRect`` function retrieves the dimensions of a specified window by " @@ -2819,7 +2827,7 @@ msgid "" "the C declaration::" msgstr "" -#: library/ctypes.rst:1927 +#: library/ctypes.rst:1933 msgid "" "WINUSERAPI BOOL WINAPI\n" "GetWindowRect(\n" @@ -2827,7 +2835,7 @@ msgid "" " LPRECT lpRect);" msgstr "" -#: library/ctypes.rst:1934 +#: library/ctypes.rst:1940 msgid "" ">>> from ctypes import POINTER, WINFUNCTYPE, windll, WinError\n" ">>> from ctypes.wintypes import BOOL, HWND, RECT\n" @@ -2838,7 +2846,7 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:1941 +#: library/ctypes.rst:1947 msgid "" "Functions with output parameters will automatically return the output " "parameter value if there is a single one, or a tuple containing the output " @@ -2846,7 +2854,7 @@ msgid "" "now returns a RECT instance, when called." msgstr "" -#: library/ctypes.rst:1946 +#: library/ctypes.rst:1952 msgid "" "Output parameters can be combined with the :attr:`~_CFuncPtr.errcheck` " "protocol to do further output processing and error checking. The win32 " @@ -2855,7 +2863,7 @@ msgid "" "exception when the api call failed::" msgstr "" -#: library/ctypes.rst:1951 +#: library/ctypes.rst:1957 msgid "" ">>> def errcheck(result, func, args):\n" "... if not result:\n" @@ -2866,7 +2874,7 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:1959 +#: library/ctypes.rst:1965 msgid "" "If the :attr:`~_CFuncPtr.errcheck` function returns the argument tuple it " "receives unchanged, :mod:`ctypes` continues the normal processing it does on " @@ -2875,7 +2883,7 @@ msgid "" "and return them instead, the normal processing will no longer take place::" msgstr "" -#: library/ctypes.rst:1965 +#: library/ctypes.rst:1971 msgid "" ">>> def errcheck(result, func, args):\n" "... if not result:\n" @@ -2887,62 +2895,62 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:1978 +#: library/ctypes.rst:1984 msgid "Utility functions" msgstr "" -#: library/ctypes.rst:1982 +#: library/ctypes.rst:1988 msgid "" "Returns the address of the memory buffer as integer. *obj* must be an " "instance of a ctypes type." msgstr "" -#: library/ctypes.rst:1985 +#: library/ctypes.rst:1991 msgid "" "Raises an :ref:`auditing event ` ``ctypes.addressof`` with " "argument ``obj``." msgstr "" -#: library/ctypes.rst:1990 +#: library/ctypes.rst:1996 msgid "" "Returns the alignment requirements of a ctypes type. *obj_or_type* must be a " "ctypes type or instance." msgstr "" -#: library/ctypes.rst:1996 +#: library/ctypes.rst:2002 msgid "" "Returns a light-weight pointer to *obj*, which must be an instance of a " "ctypes type. *offset* defaults to zero, and must be an integer that will be " "added to the internal pointer value." msgstr "" -#: library/ctypes.rst:2000 +#: library/ctypes.rst:2006 msgid "``byref(obj, offset)`` corresponds to this C code::" msgstr "" -#: library/ctypes.rst:2002 +#: library/ctypes.rst:2008 msgid "(((char *)&obj) + offset)" msgstr "" -#: library/ctypes.rst:2004 +#: library/ctypes.rst:2010 msgid "" "The returned object can only be used as a foreign function call parameter. " "It behaves similar to ``pointer(obj)``, but the construction is a lot faster." msgstr "" -#: library/ctypes.rst:2010 +#: library/ctypes.rst:2016 msgid "" "Copies a COM pointer from *src* to *dst* and returns the Windows specific :c:" "type:`!HRESULT` value." msgstr "" -#: library/ctypes.rst:2013 +#: library/ctypes.rst:2019 msgid "" "If *src* is not ``NULL``, its ``AddRef`` method is called, incrementing the " "reference count." msgstr "" -#: library/ctypes.rst:2016 +#: library/ctypes.rst:2022 msgid "" "In contrast, the reference count of *dst* will not be decremented before " "assigning the new value. Unless *dst* is ``NULL``, the caller is responsible " @@ -2950,7 +2958,7 @@ msgid "" "necessary." msgstr "" -#: library/ctypes.rst:2028 +#: library/ctypes.rst:2034 msgid "" "This function is similar to the cast operator in C. It returns a new " "instance of *type* which points to the same memory block as *obj*. *type* " @@ -2958,75 +2966,101 @@ msgid "" "as a pointer." msgstr "" -#: library/ctypes.rst:2036 +#: library/ctypes.rst:2043 msgid "" "This function creates a mutable character buffer. The returned object is a " "ctypes array of :class:`c_char`." msgstr "" -#: library/ctypes.rst:2039 +#: library/ctypes.rst:2046 +msgid "" +"If *size* is given (and not ``None``), it must be an :class:`int`. It " +"specifies the size of the returned array." +msgstr "" + +#: library/ctypes.rst:2049 msgid "" -"*init_or_size* must be an integer which specifies the size of the array, or " -"a bytes object which will be used to initialize the array items." +"If the *init* argument is given, it must be :class:`bytes`. It is used to " +"initialize the array items. Bytes not initialized this way are set to zero " +"(NUL)." msgstr "" -#: library/ctypes.rst:2042 +#: library/ctypes.rst:2053 msgid "" -"If a bytes object is specified as first argument, the buffer is made one " -"item larger than its length so that the last element in the array is a NUL " -"termination character. An integer can be passed as second argument which " -"allows specifying the size of the array if the length of the bytes should " -"not be used." +"If *size* is not given (or if it is ``None``), the buffer is made one " +"element larger than *init*, effectively adding a NUL terminator." msgstr "" -#: library/ctypes.rst:2047 +#: library/ctypes.rst:2056 +msgid "" +"If both arguments are given, *size* must not be less than ``len(init)``." +msgstr "" + +#: library/ctypes.rst:2060 +msgid "" +"If *size* is equal to ``len(init)``, a NUL terminator is not added. Do not " +"treat such a buffer as a C string." +msgstr "" + +#: library/ctypes.rst:2063 +msgid "For example::" +msgstr "" + +#: library/ctypes.rst:2065 +msgid "" +">>> bytes(create_string_buffer(2))\n" +"b'\\x00\\x00'\n" +">>> bytes(create_string_buffer(b'ab'))\n" +"b'ab\\x00'\n" +">>> bytes(create_string_buffer(b'ab', 2))\n" +"b'ab'\n" +">>> bytes(create_string_buffer(b'ab', 4))\n" +"b'ab\\x00\\x00'\n" +">>> bytes(create_string_buffer(b'abcdef', 2))\n" +"Traceback (most recent call last):\n" +" ...\n" +"ValueError: byte string too long" +msgstr "" + +#: library/ctypes.rst:2078 msgid "" "Raises an :ref:`auditing event ` ``ctypes.create_string_buffer`` " "with arguments ``init``, ``size``." msgstr "" -#: library/ctypes.rst:2052 +#: library/ctypes.rst:2084 msgid "" "This function creates a mutable unicode character buffer. The returned " "object is a ctypes array of :class:`c_wchar`." msgstr "" -#: library/ctypes.rst:2055 -msgid "" -"*init_or_size* must be an integer which specifies the size of the array, or " -"a string which will be used to initialize the array items." -msgstr "" - -#: library/ctypes.rst:2058 +#: library/ctypes.rst:2087 msgid "" -"If a string is specified as first argument, the buffer is made one item " -"larger than the length of the string so that the last element in the array " -"is a NUL termination character. An integer can be passed as second argument " -"which allows specifying the size of the array if the length of the string " -"should not be used." +"The function takes the same arguments as :func:`~create_string_buffer` " +"except *init* must be a string and *size* counts :class:`c_wchar`." msgstr "" -#: library/ctypes.rst:2064 +#: library/ctypes.rst:2090 msgid "" "Raises an :ref:`auditing event ` ``ctypes.create_unicode_buffer`` " "with arguments ``init``, ``size``." msgstr "" -#: library/ctypes.rst:2069 +#: library/ctypes.rst:2095 msgid "" "This function is a hook which allows implementing in-process COM servers " "with ctypes. It is called from the DllCanUnloadNow function that the " "_ctypes extension dll exports." msgstr "" -#: library/ctypes.rst:2078 +#: library/ctypes.rst:2104 msgid "" "This function is a hook which allows implementing in-process COM servers " "with ctypes. It is called from the DllGetClassObject function that the " "``_ctypes`` extension dll exports." msgstr "" -#: library/ctypes.rst:2088 +#: library/ctypes.rst:2114 msgid "" "Try to find a library and return a pathname. *name* is the library name " "without any prefix like ``lib``, suffix like ``.so``, ``.dylib`` or version " @@ -3034,21 +3068,21 @@ msgid "" "If no library can be found, returns ``None``." msgstr "" -#: library/ctypes.rst:2099 +#: library/ctypes.rst:2125 msgid "" "Returns the filename of the VC runtime library used by Python, and by the " "extension modules. If the name of the library cannot be determined, " "``None`` is returned." msgstr "" -#: library/ctypes.rst:2103 +#: library/ctypes.rst:2129 msgid "" "If you need to free memory, for example, allocated by an extension module " "with a call to the ``free(void *)``, it is important that you use the " "function in the same library that allocated the memory." msgstr "" -#: library/ctypes.rst:2113 +#: library/ctypes.rst:2139 msgid "" "Try to provide a list of paths of the shared libraries loaded into the " "current process. These paths are not normalized or processed in any way. " @@ -3056,72 +3090,72 @@ msgid "" "The exact functionality is system dependent." msgstr "" -#: library/ctypes.rst:2118 +#: library/ctypes.rst:2144 msgid "" "On most platforms, the first element of the list represents the current " "executable file. It may be an empty string." msgstr "" -#: library/ctypes.rst:2126 +#: library/ctypes.rst:2152 msgid "" "Returns a textual description of the error code *code*. If no error code is " "specified, the last error code is used by calling the Windows API function :" "func:`GetLastError`." msgstr "" -#: library/ctypes.rst:2135 +#: library/ctypes.rst:2161 msgid "" "Returns the last error code set by Windows in the calling thread. This " "function calls the Windows ``GetLastError()`` function directly, it does not " "return the ctypes-private copy of the error code." msgstr "" -#: library/ctypes.rst:2144 +#: library/ctypes.rst:2170 msgid "" "Returns the current value of the ctypes-private copy of the system :data:" "`errno` variable in the calling thread." msgstr "" -#: library/ctypes.rst:2147 +#: library/ctypes.rst:2173 msgid "" "Raises an :ref:`auditing event ` ``ctypes.get_errno`` with no " "arguments." msgstr "" -#: library/ctypes.rst:2151 +#: library/ctypes.rst:2177 msgid "" "Returns the current value of the ctypes-private copy of the system :data:`!" "LastError` variable in the calling thread." msgstr "" -#: library/ctypes.rst:2156 +#: library/ctypes.rst:2182 msgid "" "Raises an :ref:`auditing event ` ``ctypes.get_last_error`` with no " "arguments." msgstr "" -#: library/ctypes.rst:2161 +#: library/ctypes.rst:2187 msgid "" "Same as the standard C memmove library function: copies *count* bytes from " "*src* to *dst*. *dst* and *src* must be integers or ctypes instances that " "can be converted to pointers." msgstr "" -#: library/ctypes.rst:2168 +#: library/ctypes.rst:2194 msgid "" "Same as the standard C memset library function: fills the memory block at " "address *dst* with *count* bytes of value *c*. *dst* must be an integer " "specifying an address, or a ctypes instance." msgstr "" -#: library/ctypes.rst:2175 +#: library/ctypes.rst:2201 msgid "" "Create or return a ctypes pointer type. Pointer types are cached and reused " "internally, so calling this function repeatedly is cheap. *type* must be a " "ctypes type." msgstr "" -#: library/ctypes.rst:2181 +#: library/ctypes.rst:2207 msgid "" "The resulting pointer type is cached in the ``__pointer_type__`` attribute " "of *type*. It is possible to set this attribute before the first call to " @@ -3130,19 +3164,19 @@ msgid "" "relying on implementation details that may change in future Python versions." msgstr "" -#: library/ctypes.rst:2192 +#: library/ctypes.rst:2218 msgid "" "Create a new pointer instance, pointing to *obj*. The returned object is of " "the type ``POINTER(type(obj))``." msgstr "" -#: library/ctypes.rst:2195 +#: library/ctypes.rst:2221 msgid "" "Note: If you just want to pass a pointer to an object to a foreign function " "call, you should use ``byref(obj)`` which is much faster." msgstr "" -#: library/ctypes.rst:2201 +#: library/ctypes.rst:2227 msgid "" "This function resizes the internal memory buffer of *obj*, which must be an " "instance of a ctypes type. It is not possible to make the buffer smaller " @@ -3150,50 +3184,50 @@ msgid "" "but it is possible to enlarge the buffer." msgstr "" -#: library/ctypes.rst:2209 +#: library/ctypes.rst:2235 msgid "" "Set the current value of the ctypes-private copy of the system :data:`errno` " "variable in the calling thread to *value* and return the previous value." msgstr "" -#: library/ctypes.rst:2212 +#: library/ctypes.rst:2238 msgid "" "Raises an :ref:`auditing event ` ``ctypes.set_errno`` with " "argument ``errno``." msgstr "" -#: library/ctypes.rst:2217 +#: library/ctypes.rst:2243 msgid "" "Sets the current value of the ctypes-private copy of the system :data:`!" "LastError` variable in the calling thread to *value* and return the previous " "value." msgstr "" -#: library/ctypes.rst:2223 +#: library/ctypes.rst:2249 msgid "" "Raises an :ref:`auditing event ` ``ctypes.set_last_error`` with " "argument ``error``." msgstr "" -#: library/ctypes.rst:2228 +#: library/ctypes.rst:2254 msgid "" "Returns the size in bytes of a ctypes type or instance memory buffer. Does " "the same as the C ``sizeof`` operator." msgstr "" -#: library/ctypes.rst:2234 +#: library/ctypes.rst:2260 msgid "" "Return the byte string at *void \\*ptr*. If *size* is specified, it is used " "as size, otherwise the string is assumed to be zero-terminated." msgstr "" -#: library/ctypes.rst:2238 +#: library/ctypes.rst:2264 msgid "" "Raises an :ref:`auditing event ` ``ctypes.string_at`` with " "arguments ``ptr``, ``size``." msgstr "" -#: library/ctypes.rst:2243 +#: library/ctypes.rst:2269 msgid "" "Creates an instance of :exc:`OSError`. If *code* is not specified, :func:" "`GetLastError` is called to determine the error code. If *descr* is not " @@ -3201,39 +3235,39 @@ msgid "" "error." msgstr "" -#: library/ctypes.rst:2250 +#: library/ctypes.rst:2276 msgid "" "An instance of :exc:`WindowsError` used to be created, which is now an alias " "of :exc:`OSError`." msgstr "" -#: library/ctypes.rst:2257 +#: library/ctypes.rst:2283 msgid "" "Return the wide-character string at *void \\*ptr*. If *size* is specified, " "it is used as the number of characters of the string, otherwise the string " "is assumed to be zero-terminated." msgstr "" -#: library/ctypes.rst:2262 +#: library/ctypes.rst:2288 msgid "" "Raises an :ref:`auditing event ` ``ctypes.wstring_at`` with " "arguments ``ptr``, ``size``." msgstr "" -#: library/ctypes.rst:2267 +#: library/ctypes.rst:2293 msgid "" "Return a :class:`memoryview` object of length *size* that references memory " "starting at *void \\*ptr*." msgstr "" -#: library/ctypes.rst:2270 +#: library/ctypes.rst:2296 msgid "" "If *readonly* is true, the returned :class:`!memoryview` object can not be " "used to modify the underlying memory. (Changes made by other means will " "still be reflected in the returned object.)" msgstr "" -#: library/ctypes.rst:2275 +#: library/ctypes.rst:2301 msgid "" "This function is similar to :func:`string_at` with the key difference of not " "making a copy of the specified memory. It is a semantically equivalent (but " @@ -3243,17 +3277,17 @@ msgid "" "`~ctypes.byref` object.)" msgstr "" -#: library/ctypes.rst:2282 +#: library/ctypes.rst:2308 msgid "" "Raises an :ref:`auditing event ` ``ctypes.memoryview_at`` with " "arguments ``address``, ``size``, ``readonly``." msgstr "" -#: library/ctypes.rst:2290 +#: library/ctypes.rst:2316 msgid "Data types" msgstr "" -#: library/ctypes.rst:2295 +#: library/ctypes.rst:2321 msgid "" "This non-public class is the common base class of all ctypes data types. " "Among other things, all ctypes type instances contain a memory block that " @@ -3263,13 +3297,13 @@ msgid "" "alive in case the memory block contains pointers." msgstr "" -#: library/ctypes.rst:2302 +#: library/ctypes.rst:2328 msgid "" "Common methods of ctypes data types, these are all class methods (to be " "exact, they are methods of the :term:`metaclass`):" msgstr "" -#: library/ctypes.rst:2307 +#: library/ctypes.rst:2333 msgid "" "This method returns a ctypes instance that shares the buffer of the *source* " "object. The *source* object must support the writeable buffer interface. " @@ -3278,13 +3312,13 @@ msgid "" "exc:`ValueError` is raised." msgstr "" -#: library/ctypes.rst:2323 +#: library/ctypes.rst:2349 msgid "" "Raises an :ref:`auditing event ` ``ctypes.cdata/buffer`` with " "arguments ``pointer``, ``size``, ``offset``." msgstr "" -#: library/ctypes.rst:2317 +#: library/ctypes.rst:2343 msgid "" "This method creates a ctypes instance, copying the buffer from the *source* " "object buffer which must be readable. The optional *offset* parameter " @@ -3292,19 +3326,19 @@ msgid "" "If the source buffer is not large enough a :exc:`ValueError` is raised." msgstr "" -#: library/ctypes.rst:2327 +#: library/ctypes.rst:2353 msgid "" "This method returns a ctypes type instance using the memory specified by " "*address* which must be an integer." msgstr "" -#: library/ctypes.rst:2332 +#: library/ctypes.rst:2358 msgid "" "This method, and others that indirectly call this method, raises an :ref:" "`auditing event ` ``ctypes.cdata`` with argument ``address``." msgstr "" -#: library/ctypes.rst:2338 +#: library/ctypes.rst:2364 msgid "" "This method adapts *obj* to a ctypes type. It is called with the actual " "object used in a foreign function call when the type is present in the " @@ -3312,36 +3346,36 @@ msgid "" "object that can be used as a function call parameter." msgstr "" -#: library/ctypes.rst:2343 +#: library/ctypes.rst:2369 msgid "" "All ctypes data types have a default implementation of this classmethod that " "normally returns *obj* if that is an instance of the type. Some types " "accept other objects as well." msgstr "" -#: library/ctypes.rst:2349 +#: library/ctypes.rst:2375 msgid "" "This method returns a ctypes type instance exported by a shared library. " "*name* is the name of the symbol that exports the data, *library* is the " "loaded shared library." msgstr "" -#: library/ctypes.rst:2353 +#: library/ctypes.rst:2379 msgid "Common class variables of ctypes data types:" msgstr "" -#: library/ctypes.rst:2357 +#: library/ctypes.rst:2383 msgid "" "The pointer type that was created by calling :func:`POINTER` for " "corresponding ctypes data type. If a pointer type was not yet created, the " "attribute is missing." msgstr "" -#: library/ctypes.rst:2363 +#: library/ctypes.rst:2389 msgid "Common instance variables of ctypes data types:" msgstr "" -#: library/ctypes.rst:2367 +#: library/ctypes.rst:2393 msgid "" "Sometimes ctypes data instances do not own the memory block they contain, " "instead they share part of the memory block of a base object. The :attr:" @@ -3349,13 +3383,13 @@ msgid "" "block." msgstr "" -#: library/ctypes.rst:2374 +#: library/ctypes.rst:2400 msgid "" "This read-only variable is true when the ctypes data instance has allocated " "the memory block itself, false otherwise." msgstr "" -#: library/ctypes.rst:2379 +#: library/ctypes.rst:2405 msgid "" "This member is either ``None`` or a dictionary containing Python objects " "that need to be kept alive so that the memory block contents is kept valid. " @@ -3363,7 +3397,7 @@ msgid "" "dictionary." msgstr "" -#: library/ctypes.rst:2392 +#: library/ctypes.rst:2418 msgid "" "This non-public class is the base class of all fundamental ctypes data " "types. It is mentioned here because it contains the common attributes of the " @@ -3372,11 +3406,11 @@ msgid "" "types that are not and do not contain pointers can now be pickled." msgstr "" -#: library/ctypes.rst:2398 +#: library/ctypes.rst:2424 msgid "Instances have a single attribute:" msgstr "" -#: library/ctypes.rst:2402 +#: library/ctypes.rst:2428 msgid "" "This attribute contains the actual value of the instance. For integer and " "pointer types, it is an integer, for character types, it is a single " @@ -3384,7 +3418,7 @@ msgid "" "bytes object or string." msgstr "" -#: library/ctypes.rst:2407 +#: library/ctypes.rst:2433 msgid "" "When the ``value`` attribute is retrieved from a ctypes instance, usually a " "new object is returned each time. :mod:`ctypes` does *not* implement " @@ -3392,7 +3426,7 @@ msgid "" "true for all other ctypes object instances." msgstr "" -#: library/ctypes.rst:2413 +#: library/ctypes.rst:2439 msgid "" "Fundamental data types, when returned as foreign function call results, or, " "for example, by retrieving structure field members or array items, are " @@ -3402,7 +3436,7 @@ msgid "" "instance." msgstr "" -#: library/ctypes.rst:2421 +#: library/ctypes.rst:2447 msgid "" "Subclasses of fundamental data types do *not* inherit this behavior. So, if " "a foreign functions :attr:`!restype` is a subclass of :class:`c_void_p`, you " @@ -3410,25 +3444,25 @@ msgid "" "you can get the value of the pointer by accessing the ``value`` attribute." msgstr "" -#: library/ctypes.rst:2426 +#: library/ctypes.rst:2452 msgid "These are the fundamental ctypes data types:" msgstr "" -#: library/ctypes.rst:2430 +#: library/ctypes.rst:2456 msgid "" "Represents the C :c:expr:`signed char` datatype, and interprets the value as " "small integer. The constructor accepts an optional integer initializer; no " "overflow checking is done." msgstr "" -#: library/ctypes.rst:2437 +#: library/ctypes.rst:2463 msgid "" "Represents the C :c:expr:`char` datatype, and interprets the value as a " "single character. The constructor accepts an optional string initializer, " "the length of the string must be exactly one character." msgstr "" -#: library/ctypes.rst:2444 +#: library/ctypes.rst:2470 msgid "" "Represents the C :c:expr:`char *` datatype when it points to a zero-" "terminated string. For a general character pointer that may also point to " @@ -3436,204 +3470,204 @@ msgid "" "integer address, or a bytes object." msgstr "" -#: library/ctypes.rst:2452 +#: library/ctypes.rst:2478 msgid "" "Represents the C :c:expr:`double` datatype. The constructor accepts an " "optional float initializer." msgstr "" -#: library/ctypes.rst:2458 +#: library/ctypes.rst:2484 msgid "" "Represents the C :c:expr:`long double` datatype. The constructor accepts an " "optional float initializer. On platforms where ``sizeof(long double) == " "sizeof(double)`` it is an alias to :class:`c_double`." msgstr "" -#: library/ctypes.rst:2464 +#: library/ctypes.rst:2490 msgid "" "Represents the C :c:expr:`float` datatype. The constructor accepts an " "optional float initializer." msgstr "" -#: library/ctypes.rst:2470 +#: library/ctypes.rst:2496 msgid "" "Represents the C :c:expr:`double complex` datatype, if available. The " "constructor accepts an optional :class:`complex` initializer." msgstr "" -#: library/ctypes.rst:2478 +#: library/ctypes.rst:2504 msgid "" "Represents the C :c:expr:`float complex` datatype, if available. The " "constructor accepts an optional :class:`complex` initializer." msgstr "" -#: library/ctypes.rst:2486 +#: library/ctypes.rst:2512 msgid "" "Represents the C :c:expr:`long double complex` datatype, if available. The " "constructor accepts an optional :class:`complex` initializer." msgstr "" -#: library/ctypes.rst:2494 +#: library/ctypes.rst:2520 msgid "" "Represents the C :c:expr:`signed int` datatype. The constructor accepts an " "optional integer initializer; no overflow checking is done. On platforms " "where ``sizeof(int) == sizeof(long)`` it is an alias to :class:`c_long`." msgstr "" -#: library/ctypes.rst:2501 +#: library/ctypes.rst:2527 msgid "" "Represents the C 8-bit :c:expr:`signed int` datatype. Usually an alias for :" "class:`c_byte`." msgstr "" -#: library/ctypes.rst:2507 +#: library/ctypes.rst:2533 msgid "" "Represents the C 16-bit :c:expr:`signed int` datatype. Usually an alias " "for :class:`c_short`." msgstr "" -#: library/ctypes.rst:2513 +#: library/ctypes.rst:2539 msgid "" "Represents the C 32-bit :c:expr:`signed int` datatype. Usually an alias " "for :class:`c_int`." msgstr "" -#: library/ctypes.rst:2519 +#: library/ctypes.rst:2545 msgid "" "Represents the C 64-bit :c:expr:`signed int` datatype. Usually an alias " "for :class:`c_longlong`." msgstr "" -#: library/ctypes.rst:2525 +#: library/ctypes.rst:2551 msgid "" "Represents the C :c:expr:`signed long` datatype. The constructor accepts an " "optional integer initializer; no overflow checking is done." msgstr "" -#: library/ctypes.rst:2531 +#: library/ctypes.rst:2557 msgid "" "Represents the C :c:expr:`signed long long` datatype. The constructor " "accepts an optional integer initializer; no overflow checking is done." msgstr "" -#: library/ctypes.rst:2537 +#: library/ctypes.rst:2563 msgid "" "Represents the C :c:expr:`signed short` datatype. The constructor accepts " "an optional integer initializer; no overflow checking is done." msgstr "" -#: library/ctypes.rst:2543 +#: library/ctypes.rst:2569 msgid "Represents the C :c:type:`size_t` datatype." msgstr "" -#: library/ctypes.rst:2548 +#: library/ctypes.rst:2574 msgid "Represents the C :c:type:`ssize_t` datatype." msgstr "" -#: library/ctypes.rst:2555 +#: library/ctypes.rst:2581 msgid "Represents the C :c:type:`time_t` datatype." msgstr "" -#: library/ctypes.rst:2562 +#: library/ctypes.rst:2588 msgid "" "Represents the C :c:expr:`unsigned char` datatype, it interprets the value " "as small integer. The constructor accepts an optional integer initializer; " "no overflow checking is done." msgstr "" -#: library/ctypes.rst:2569 +#: library/ctypes.rst:2595 msgid "" "Represents the C :c:expr:`unsigned int` datatype. The constructor accepts " "an optional integer initializer; no overflow checking is done. On platforms " "where ``sizeof(int) == sizeof(long)`` it is an alias for :class:`c_ulong`." msgstr "" -#: library/ctypes.rst:2576 +#: library/ctypes.rst:2602 msgid "" "Represents the C 8-bit :c:expr:`unsigned int` datatype. Usually an alias " "for :class:`c_ubyte`." msgstr "" -#: library/ctypes.rst:2582 +#: library/ctypes.rst:2608 msgid "" "Represents the C 16-bit :c:expr:`unsigned int` datatype. Usually an alias " "for :class:`c_ushort`." msgstr "" -#: library/ctypes.rst:2588 +#: library/ctypes.rst:2614 msgid "" "Represents the C 32-bit :c:expr:`unsigned int` datatype. Usually an alias " "for :class:`c_uint`." msgstr "" -#: library/ctypes.rst:2594 +#: library/ctypes.rst:2620 msgid "" "Represents the C 64-bit :c:expr:`unsigned int` datatype. Usually an alias " "for :class:`c_ulonglong`." msgstr "" -#: library/ctypes.rst:2600 +#: library/ctypes.rst:2626 msgid "" "Represents the C :c:expr:`unsigned long` datatype. The constructor accepts " "an optional integer initializer; no overflow checking is done." msgstr "" -#: library/ctypes.rst:2606 +#: library/ctypes.rst:2632 msgid "" "Represents the C :c:expr:`unsigned long long` datatype. The constructor " "accepts an optional integer initializer; no overflow checking is done." msgstr "" -#: library/ctypes.rst:2612 +#: library/ctypes.rst:2638 msgid "" "Represents the C :c:expr:`unsigned short` datatype. The constructor accepts " "an optional integer initializer; no overflow checking is done." msgstr "" -#: library/ctypes.rst:2618 +#: library/ctypes.rst:2644 msgid "" "Represents the C :c:expr:`void *` type. The value is represented as " "integer. The constructor accepts an optional integer initializer." msgstr "" -#: library/ctypes.rst:2624 +#: library/ctypes.rst:2650 msgid "" "Represents the C :c:type:`wchar_t` datatype, and interprets the value as a " "single character unicode string. The constructor accepts an optional string " "initializer, the length of the string must be exactly one character." msgstr "" -#: library/ctypes.rst:2631 +#: library/ctypes.rst:2657 msgid "" "Represents the C :c:expr:`wchar_t *` datatype, which must be a pointer to a " "zero-terminated wide character string. The constructor accepts an integer " "address, or a string." msgstr "" -#: library/ctypes.rst:2638 +#: library/ctypes.rst:2664 msgid "" "Represent the C :c:expr:`bool` datatype (more accurately, :c:expr:`_Bool` " "from C99). Its value can be ``True`` or ``False``, and the constructor " "accepts any object that has a truth value." msgstr "" -#: library/ctypes.rst:2645 +#: library/ctypes.rst:2671 msgid "" "Represents a :c:type:`!HRESULT` value, which contains success or error " "information for a function or method call." msgstr "" -#: library/ctypes.rst:2653 +#: library/ctypes.rst:2679 msgid "" "Represents the C :c:expr:`PyObject *` datatype. Calling this without an " "argument creates a ``NULL`` :c:expr:`PyObject *` pointer." msgstr "" -#: library/ctypes.rst:2656 +#: library/ctypes.rst:2682 msgid ":class:`!py_object` is now a :term:`generic type`." msgstr "" -#: library/ctypes.rst:2659 +#: library/ctypes.rst:2685 msgid "" "The :mod:`!ctypes.wintypes` module provides quite some other Windows " "specific data types, for example :c:type:`!HWND`, :c:type:`!WPARAM`, or :c:" @@ -3641,47 +3675,47 @@ msgid "" "are also defined." msgstr "" -#: library/ctypes.rst:2667 +#: library/ctypes.rst:2693 msgid "Structured data types" msgstr "" -#: library/ctypes.rst:2672 +#: library/ctypes.rst:2698 msgid "Abstract base class for unions in native byte order." msgstr "" -#: library/ctypes.rst:2674 +#: library/ctypes.rst:2700 msgid "" "Unions share common attributes and behavior with structures; see :class:" "`Structure` documentation for details." msgstr "" -#: library/ctypes.rst:2679 +#: library/ctypes.rst:2705 msgid "Abstract base class for unions in *big endian* byte order." msgstr "" -#: library/ctypes.rst:2685 +#: library/ctypes.rst:2711 msgid "Abstract base class for unions in *little endian* byte order." msgstr "" -#: library/ctypes.rst:2691 +#: library/ctypes.rst:2717 msgid "Abstract base class for structures in *big endian* byte order." msgstr "" -#: library/ctypes.rst:2696 +#: library/ctypes.rst:2722 msgid "Abstract base class for structures in *little endian* byte order." msgstr "" -#: library/ctypes.rst:2698 +#: library/ctypes.rst:2724 msgid "" "Structures and unions with non-native byte order cannot contain pointer type " "fields, or any other data types containing pointer type fields." msgstr "" -#: library/ctypes.rst:2704 +#: library/ctypes.rst:2730 msgid "Abstract base class for structures in *native* byte order." msgstr "" -#: library/ctypes.rst:2706 +#: library/ctypes.rst:2732 msgid "" "Concrete structure and union types must be created by subclassing one of " "these types, and at least define a :attr:`_fields_` class variable. :mod:" @@ -3689,34 +3723,34 @@ msgid "" "the fields by direct attribute accesses. These are the" msgstr "" -#: library/ctypes.rst:2714 +#: library/ctypes.rst:2740 msgid "" "A sequence defining the structure fields. The items must be 2-tuples or 3-" "tuples. The first item is the name of the field, the second item specifies " "the type of the field; it can be any ctypes data type." msgstr "" -#: library/ctypes.rst:2718 +#: library/ctypes.rst:2744 msgid "" "For integer type fields like :class:`c_int`, a third optional item can be " "given. It must be a small positive integer defining the bit width of the " "field." msgstr "" -#: library/ctypes.rst:2722 +#: library/ctypes.rst:2748 msgid "" "Field names must be unique within one structure or union. This is not " "checked, only one field can be accessed when names are repeated." msgstr "" -#: library/ctypes.rst:2725 +#: library/ctypes.rst:2751 msgid "" "It is possible to define the :attr:`_fields_` class variable *after* the " "class statement that defines the Structure subclass, this allows creating " "data types that directly or indirectly reference themselves::" msgstr "" -#: library/ctypes.rst:2729 +#: library/ctypes.rst:2755 msgid "" "class List(Structure):\n" " pass\n" @@ -3725,13 +3759,13 @@ msgid "" " ]" msgstr "" -#: library/ctypes.rst:2735 +#: library/ctypes.rst:2761 msgid "" "The :attr:`!_fields_` class variable can only be set once. Later assignments " "will raise an :exc:`AttributeError`." msgstr "" -#: library/ctypes.rst:2738 +#: library/ctypes.rst:2764 msgid "" "Additionally, the :attr:`!_fields_` class variable must be defined before " "the structure or union type is first used: an instance or subclass is " @@ -3741,13 +3775,13 @@ msgid "" "fields, as if :attr:`!_fields_` was empty." msgstr "" -#: library/ctypes.rst:2746 +#: library/ctypes.rst:2772 msgid "" "Sub-subclasses of structure types inherit the fields of the base class plus " "the :attr:`_fields_` defined in the sub-subclass, if any." msgstr "" -#: library/ctypes.rst:2752 +#: library/ctypes.rst:2778 msgid "" "An optional small integer that allows overriding the alignment of structure " "fields in the instance. :attr:`_pack_` must already be defined when :attr:" @@ -3755,11 +3789,11 @@ msgid "" "attribute to 0 is the same as not setting it at all." msgstr "" -#: library/ctypes.rst:2757 +#: library/ctypes.rst:2783 msgid "This is only implemented for the MSVC-compatible memory layout." msgstr "" -#: library/ctypes.rst:2761 +#: library/ctypes.rst:2787 msgid "" "For historical reasons, if :attr:`!_pack_` is non-zero, the MSVC-compatible " "layout will be used by default. On non-Windows platforms, this default is " @@ -3767,33 +3801,33 @@ msgid "" "intended, set :attr:`~Structure._layout_` to ``'ms'`` explicitly." msgstr "" -#: library/ctypes.rst:2770 +#: library/ctypes.rst:2796 msgid "" "An optional small integer that allows overriding the alignment of the " "structure when being packed or unpacked to/from memory. Setting this " "attribute to 0 is the same as not setting it at all." msgstr "" -#: library/ctypes.rst:2778 +#: library/ctypes.rst:2804 msgid "" "An optional string naming the struct/union layout. It can currently be set " "to:" msgstr "" -#: library/ctypes.rst:2781 +#: library/ctypes.rst:2807 msgid "" "``\"ms\"``: the layout used by the Microsoft compiler (MSVC). On GCC and " "Clang, this layout can be selected with ``__attribute__((ms_struct))``." msgstr "" -#: library/ctypes.rst:2784 +#: library/ctypes.rst:2810 msgid "" "``\"gcc-sysv\"``: the layout used by GCC with the System V or “SysV-like” " "data model, as used on Linux and macOS. With this layout, :attr:`~Structure." "_pack_` must be unset or zero." msgstr "" -#: library/ctypes.rst:2788 +#: library/ctypes.rst:2814 msgid "" "If not set explicitly, ``ctypes`` will use a default that matches the " "platform conventions. This default may change in future Python releases (for " @@ -3801,34 +3835,34 @@ msgid "" "between similar platforms is found). Currently the default will be:" msgstr "" -#: library/ctypes.rst:2794 +#: library/ctypes.rst:2820 msgid "On Windows: ``\"ms\"``" msgstr "" -#: library/ctypes.rst:2795 +#: library/ctypes.rst:2821 msgid "" "When :attr:`~Structure._pack_` is specified: ``\"ms\"``. (This is " "deprecated; see :attr:`~Structure._pack_` documentation.)" msgstr "" -#: library/ctypes.rst:2797 +#: library/ctypes.rst:2823 msgid "Otherwise: ``\"gcc-sysv\"``" msgstr "" -#: library/ctypes.rst:2799 +#: library/ctypes.rst:2825 msgid "" ":attr:`!_layout_` must already be defined when :attr:`~Structure._fields_` " "is assigned, otherwise it will have no effect." msgstr "" -#: library/ctypes.rst:2806 +#: library/ctypes.rst:2832 msgid "" "An optional sequence that lists the names of unnamed (anonymous) fields. :" "attr:`_anonymous_` must be already defined when :attr:`_fields_` is " "assigned, otherwise it will have no effect." msgstr "" -#: library/ctypes.rst:2810 +#: library/ctypes.rst:2836 msgid "" "The fields listed in this variable must be structure or union type fields. :" "mod:`ctypes` will create descriptors in the structure type that allows " @@ -3836,11 +3870,11 @@ msgid "" "structure or union field." msgstr "" -#: library/ctypes.rst:2815 +#: library/ctypes.rst:2841 msgid "Here is an example type (Windows)::" msgstr "" -#: library/ctypes.rst:2817 +#: library/ctypes.rst:2843 msgid "" "class _U(Union):\n" " _fields_ = [(\"lptdesc\", POINTER(TYPEDESC)),\n" @@ -3853,7 +3887,7 @@ msgid "" " (\"vt\", VARTYPE)]" msgstr "" -#: library/ctypes.rst:2828 +#: library/ctypes.rst:2854 msgid "" "The ``TYPEDESC`` structure describes a COM data type, the ``vt`` field " "specifies which one of the union fields is valid. Since the ``u`` field is " @@ -3863,7 +3897,7 @@ msgid "" "temporary union instance::" msgstr "" -#: library/ctypes.rst:2835 +#: library/ctypes.rst:2861 msgid "" "td = TYPEDESC()\n" "td.vt = VT_PTR\n" @@ -3871,7 +3905,7 @@ msgid "" "td.u.lptdesc = POINTER(some_type)" msgstr "" -#: library/ctypes.rst:2840 +#: library/ctypes.rst:2866 msgid "" "It is possible to define sub-subclasses of structures, they inherit the " "fields of the base class. If the subclass definition has a separate :attr:" @@ -3879,7 +3913,7 @@ msgid "" "of the base class." msgstr "" -#: library/ctypes.rst:2845 +#: library/ctypes.rst:2871 msgid "" "Structure and union constructors accept both positional and keyword " "arguments. Positional arguments are used to initialize member fields in the " @@ -3889,13 +3923,13 @@ msgid "" "names not present in :attr:`_fields_`." msgstr "" -#: library/ctypes.rst:2855 +#: library/ctypes.rst:2881 msgid "" "Descriptor for fields of a :class:`Structure` and :class:`Union`. For " "example::" msgstr "" -#: library/ctypes.rst:2858 +#: library/ctypes.rst:2884 msgid "" ">>> class Color(Structure):\n" "... _fields_ = (\n" @@ -3918,100 +3952,100 @@ msgid "" "1" msgstr "" -#: library/ctypes.rst:2878 +#: library/ctypes.rst:2904 msgid "All attributes are read-only." msgstr "" -#: library/ctypes.rst:2880 +#: library/ctypes.rst:2906 msgid "" ":class:`!CField` objects are created via :attr:`~Structure._fields_`; do not " "instantiate the class directly." msgstr "" -#: library/ctypes.rst:2885 +#: library/ctypes.rst:2911 msgid "" "Previously, descriptors only had ``offset`` and ``size`` attributes and a " "readable string representation; the :class:`!CField` class was not available " "directly." msgstr "" -#: library/ctypes.rst:2891 +#: library/ctypes.rst:2917 msgid "Name of the field, as a string." msgstr "" -#: library/ctypes.rst:2895 +#: library/ctypes.rst:2921 msgid "Type of the field, as a :ref:`ctypes class `." msgstr "" -#: library/ctypes.rst:2900 +#: library/ctypes.rst:2926 msgid "Offset of the field, in bytes." msgstr "" -#: library/ctypes.rst:2902 +#: library/ctypes.rst:2928 msgid "" "For bitfields, this is the offset of the underlying byte-aligned *storage " "unit*; see :attr:`~CField.bit_offset`." msgstr "" -#: library/ctypes.rst:2907 +#: library/ctypes.rst:2933 msgid "Size of the field, in bytes." msgstr "" -#: library/ctypes.rst:2909 +#: library/ctypes.rst:2935 msgid "" "For bitfields, this is the size of the underlying *storage unit*. Typically, " "it has the same size as the bitfield's type." msgstr "" -#: library/ctypes.rst:2914 +#: library/ctypes.rst:2940 msgid "For non-bitfields, equivalent to :attr:`~CField.byte_size`." msgstr "" -#: library/ctypes.rst:2916 +#: library/ctypes.rst:2942 msgid "" "For bitfields, this contains a backwards-compatible bit-packed value that " "combines :attr:`~CField.bit_size` and :attr:`~CField.bit_offset`. Prefer " "using the explicit attributes instead." msgstr "" -#: library/ctypes.rst:2923 +#: library/ctypes.rst:2949 msgid "True if this is a bitfield." msgstr "" -#: library/ctypes.rst:2928 +#: library/ctypes.rst:2954 msgid "" "The location of a bitfield within its *storage unit*, that is, within :attr:" "`~CField.byte_size` bytes of memory starting at :attr:`~CField.byte_offset`." msgstr "" -#: library/ctypes.rst:2932 +#: library/ctypes.rst:2958 msgid "" "To get the field's value, read the storage unit as an integer, :ref:`shift " "left ` by :attr:`!bit_offset` and take the :attr:`!bit_size` least " "significant bits." msgstr "" -#: library/ctypes.rst:2936 +#: library/ctypes.rst:2962 msgid "" "For non-bitfields, :attr:`!bit_offset` is zero and :attr:`!bit_size` is " "equal to ``byte_size * 8``." msgstr "" -#: library/ctypes.rst:2941 +#: library/ctypes.rst:2967 msgid "" "True if this field is anonymous, that is, it contains nested sub-fields that " "should be be merged into a containing structure or union." msgstr "" -#: library/ctypes.rst:2948 +#: library/ctypes.rst:2974 msgid "Arrays and pointers" msgstr "" -#: library/ctypes.rst:2952 +#: library/ctypes.rst:2978 msgid "Abstract base class for arrays." msgstr "" -#: library/ctypes.rst:2954 +#: library/ctypes.rst:2980 msgid "" "The recommended way to create concrete array types is by multiplying any :" "mod:`ctypes` data type with a non-negative integer. Alternatively, you can " @@ -4021,46 +4055,46 @@ msgid "" "an :class:`Array`." msgstr "" -#: library/ctypes.rst:2964 +#: library/ctypes.rst:2990 msgid "" "A positive integer specifying the number of elements in the array. Out-of-" "range subscripts result in an :exc:`IndexError`. Will be returned by :func:" "`len`." msgstr "" -#: library/ctypes.rst:2971 +#: library/ctypes.rst:2997 msgid "Specifies the type of each element in the array." msgstr "" -#: library/ctypes.rst:2974 +#: library/ctypes.rst:3000 msgid "" "Array subclass constructors accept positional arguments, used to initialize " "the elements in order." msgstr "" -#: library/ctypes.rst:2979 +#: library/ctypes.rst:3005 msgid "" "Create an array. Equivalent to ``type * length``, where *type* is a :mod:" "`ctypes` data type and *length* an integer." msgstr "" -#: library/ctypes.rst:2983 +#: library/ctypes.rst:3009 msgid "" "This function is :term:`soft deprecated` in favor of multiplication. There " "are no plans to remove it." msgstr "" -#: library/ctypes.rst:2989 +#: library/ctypes.rst:3015 msgid "Private, abstract base class for pointers." msgstr "" -#: library/ctypes.rst:2991 +#: library/ctypes.rst:3017 msgid "" "Concrete pointer types are created by calling :func:`POINTER` with the type " "that will be pointed to; this is done automatically by :func:`pointer`." msgstr "" -#: library/ctypes.rst:2995 +#: library/ctypes.rst:3021 msgid "" "If a pointer points to an array, its elements can be read and written using " "standard subscript and slice accesses. Pointer objects have no size, so :" @@ -4069,43 +4103,43 @@ msgid "" "probably crash with an access violation (if you're lucky)." msgstr "" -#: library/ctypes.rst:3005 +#: library/ctypes.rst:3031 msgid "Specifies the type pointed to." msgstr "" -#: library/ctypes.rst:3009 +#: library/ctypes.rst:3035 msgid "" "Returns the object to which to pointer points. Assigning to this attribute " "changes the pointer to point to the assigned object." msgstr "" -#: library/ctypes.rst:3016 +#: library/ctypes.rst:3042 msgid "Exceptions" msgstr "" -#: library/ctypes.rst:3020 +#: library/ctypes.rst:3046 msgid "" "This exception is raised when a foreign function call cannot convert one of " "the passed arguments." msgstr "" -#: library/ctypes.rst:3026 +#: library/ctypes.rst:3052 msgid "This exception is raised when a COM method call failed." msgstr "" -#: library/ctypes.rst:3030 +#: library/ctypes.rst:3056 msgid "The integer value representing the error code." msgstr "" -#: library/ctypes.rst:3034 +#: library/ctypes.rst:3060 msgid "The error message." msgstr "" -#: library/ctypes.rst:3038 +#: library/ctypes.rst:3064 msgid "The 5-tuple ``(descr, source, helpfile, helpcontext, progid)``." msgstr "" -#: library/ctypes.rst:3040 +#: library/ctypes.rst:3066 msgid "" "*descr* is the textual description. *source* is the language-dependent " "``ProgID`` for the class or application that raised the error. *helpfile* " diff --git a/library/curses.ascii.po b/library/curses.ascii.po index c97dfa3a..22d3124f 100644 --- a/library/curses.ascii.po +++ b/library/curses.ascii.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/curses.panel.po b/library/curses.panel.po index 14317cee..d83b0d0d 100644 --- a/library/curses.panel.po +++ b/library/curses.panel.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/curses.po b/library/curses.po index a3592b95..f8164a09 100644 --- a/library/curses.po +++ b/library/curses.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -290,7 +290,7 @@ msgid "" "const:`BUTTON_ALT`." msgstr "" -#: library/curses.rst:1789 +#: library/curses.rst:1797 msgid "" "The ``BUTTON5_*`` constants are now exposed if they are provided by the " "underlying curses library." @@ -1137,22 +1137,27 @@ msgstr "" #: library/curses.rst:990 msgid "" -"Read a bytes object from the user, with primitive line editing capacity." +"Read a bytes object from the user, with primitive line editing capacity. The " +"maximum value for *n* is 2047." msgstr "" -#: library/curses.rst:995 +#: library/curses.rst:1088 +msgid "The maximum value for *n* was increased from 1023 to 2047." +msgstr "" + +#: library/curses.rst:999 msgid "" "Return a tuple ``(y, x)`` of current cursor position relative to the " "window's upper-left corner." msgstr "" -#: library/curses.rst:1002 +#: library/curses.rst:1006 msgid "" "Display a horizontal line starting at ``(y, x)`` with length *n* consisting " "of the character *ch*." msgstr "" -#: library/curses.rst:1008 +#: library/curses.rst:1012 msgid "" "If *flag* is ``False``, curses no longer considers using the hardware insert/" "delete character feature of the terminal; if *flag* is ``True``, use of " @@ -1160,13 +1165,13 @@ msgid "" "initialized, use of character insert/delete is enabled by default." msgstr "" -#: library/curses.rst:1016 +#: library/curses.rst:1020 msgid "" "If *flag* is ``True``, :mod:`curses` will try and use hardware line editing " "facilities. Otherwise, line insertion/deletion are disabled." msgstr "" -#: library/curses.rst:1022 +#: library/curses.rst:1026 msgid "" "If *flag* is ``True``, any change in the window image automatically causes " "the window to be refreshed; you no longer have to call :meth:`refresh` " @@ -1174,19 +1179,19 @@ msgid "" "calls to wrefresh. This option is disabled by default." msgstr "" -#: library/curses.rst:1030 +#: library/curses.rst:1034 msgid "" "Return the character at the given position in the window. The bottom 8 bits " "are the character proper, and upper bits are the attributes." msgstr "" -#: library/curses.rst:1037 +#: library/curses.rst:1041 msgid "" "Paint character *ch* at ``(y, x)`` with attributes *attr*, moving the line " "from position *x* right by one character." msgstr "" -#: library/curses.rst:1043 +#: library/curses.rst:1047 msgid "" "Insert *nlines* lines into the specified window above the current line. The " "*nlines* bottom lines are lost. For negative *nlines*, delete *nlines* " @@ -1195,13 +1200,13 @@ msgid "" "remains the same." msgstr "" -#: library/curses.rst:1052 +#: library/curses.rst:1056 msgid "" "Insert a blank line under the cursor. All following lines are moved down by " "one line." msgstr "" -#: library/curses.rst:1059 +#: library/curses.rst:1063 msgid "" "Insert a character string (as many characters as will fit on the line) " "before the character under the cursor, up to *n* characters. If *n* is " @@ -1211,7 +1216,7 @@ msgid "" "if specified)." msgstr "" -#: library/curses.rst:1069 +#: library/curses.rst:1073 msgid "" "Insert a character string (as many characters as will fit on the line) " "before the character under the cursor. All characters to the right of the " @@ -1220,84 +1225,85 @@ msgid "" "specified)." msgstr "" -#: library/curses.rst:1078 +#: library/curses.rst:1082 msgid "" "Return a bytes object of characters, extracted from the window starting at " "the current cursor position, or at *y*, *x* if specified. Attributes are " "stripped from the characters. If *n* is specified, :meth:`instr` returns a " -"string at most *n* characters long (exclusive of the trailing NUL)." +"string at most *n* characters long (exclusive of the trailing NUL). The " +"maximum value for *n* is 2047." msgstr "" -#: library/curses.rst:1086 +#: library/curses.rst:1094 msgid "" "Return ``True`` if the specified line was modified since the last call to :" "meth:`refresh`; otherwise return ``False``. Raise a :exc:`curses.error` " "exception if *line* is not valid for the given window." msgstr "" -#: library/curses.rst:1093 +#: library/curses.rst:1101 msgid "" "Return ``True`` if the specified window was modified since the last call to :" "meth:`refresh`; otherwise return ``False``." msgstr "" -#: library/curses.rst:1099 +#: library/curses.rst:1107 msgid "" "If *flag* is ``True``, escape sequences generated by some keys (keypad, " "function keys) will be interpreted by :mod:`curses`. If *flag* is ``False``, " "escape sequences will be left as is in the input stream." msgstr "" -#: library/curses.rst:1106 +#: library/curses.rst:1114 msgid "" "If *flag* is ``True``, cursor is left where it is on update, instead of " "being at \"cursor position.\" This reduces cursor movement where possible. " "If possible the cursor will be made invisible." msgstr "" -#: library/curses.rst:1110 +#: library/curses.rst:1118 msgid "" "If *flag* is ``False``, cursor will always be at \"cursor position\" after " "an update." msgstr "" -#: library/curses.rst:1115 +#: library/curses.rst:1123 msgid "Move cursor to ``(new_y, new_x)``." msgstr "" -#: library/curses.rst:1120 +#: library/curses.rst:1128 msgid "" "Move the window inside its parent window. The screen-relative parameters of " "the window are not changed. This routine is used to display different parts " "of the parent window at the same physical position on the screen." msgstr "" -#: library/curses.rst:1127 +#: library/curses.rst:1135 msgid "Move the window so its upper-left corner is at ``(new_y, new_x)``." msgstr "" -#: library/curses.rst:1132 +#: library/curses.rst:1140 msgid "If *flag* is ``True``, :meth:`getch` will be non-blocking." msgstr "" -#: library/curses.rst:1137 +#: library/curses.rst:1145 msgid "If *flag* is ``True``, escape sequences will not be timed out." msgstr "" -#: library/curses.rst:1139 +#: library/curses.rst:1147 msgid "" "If *flag* is ``False``, after a few milliseconds, an escape sequence will " "not be interpreted, and will be left in the input stream as is." msgstr "" -#: library/curses.rst:1145 +#: library/curses.rst:1153 msgid "" "Mark for refresh but wait. This function updates the data structure " "representing the desired state of the window, but does not force an update " "of the physical screen. To accomplish that, call :func:`doupdate`." msgstr "" -#: library/curses.rst:1152 +#: library/curses.rst:1160 msgid "" "Overlay the window on top of *destwin*. The windows need not be the same " "size, only the overlapping region is copied. This copy is non-destructive, " @@ -1305,7 +1311,7 @@ msgid "" "contents of *destwin*." msgstr "" -#: library/curses.rst:1157 +#: library/curses.rst:1165 msgid "" "To get fine-grained control over the copied region, the second form of :meth:" "`overlay` can be used. *sminrow* and *smincol* are the upper-left " @@ -1313,7 +1319,7 @@ msgid "" "in the destination window." msgstr "" -#: library/curses.rst:1165 +#: library/curses.rst:1173 msgid "" "Overwrite the window on top of *destwin*. The windows need not be the same " "size, in which case only the overlapping region is copied. This copy is " @@ -1321,7 +1327,7 @@ msgid "" "the old contents of *destwin*." msgstr "" -#: library/curses.rst:1170 +#: library/curses.rst:1178 msgid "" "To get fine-grained control over the copied region, the second form of :meth:" "`overwrite` can be used. *sminrow* and *smincol* are the upper-left " @@ -1329,31 +1335,31 @@ msgid "" "the destination window." msgstr "" -#: library/curses.rst:1178 +#: library/curses.rst:1186 msgid "" "Write all data associated with the window into the provided file object. " "This information can be later retrieved using the :func:`getwin` function." msgstr "" -#: library/curses.rst:1184 +#: library/curses.rst:1192 msgid "" "Indicate that the *num* screen lines, starting at line *beg*, are corrupted " "and should be completely redrawn on the next :meth:`refresh` call." msgstr "" -#: library/curses.rst:1190 +#: library/curses.rst:1198 msgid "" "Touch the entire window, causing it to be completely redrawn on the next :" "meth:`refresh` call." msgstr "" -#: library/curses.rst:1196 +#: library/curses.rst:1204 msgid "" "Update the display immediately (sync actual screen with previous drawing/" "deleting methods)." msgstr "" -#: library/curses.rst:1199 +#: library/curses.rst:1207 msgid "" "The 6 optional arguments can only be specified when the window is a pad " "created with :func:`newpad`. The additional parameters are needed to " @@ -1368,7 +1374,7 @@ msgid "" "*smincol* are treated as if they were zero." msgstr "" -#: library/curses.rst:1213 +#: library/curses.rst:1221 msgid "" "Reallocate storage for a curses window to adjust its dimensions to the " "specified values. If either dimension is larger than the current values, " @@ -1376,11 +1382,11 @@ msgid "" "rendition (as set by :meth:`bkgdset`) merged into them." msgstr "" -#: library/curses.rst:1221 +#: library/curses.rst:1229 msgid "Scroll the screen or scrolling region upward by *lines* lines." msgstr "" -#: library/curses.rst:1226 +#: library/curses.rst:1234 msgid "" "Control what happens when the cursor of a window is moved off the edge of " "the window or scrolling region, either as a result of a newline action on " @@ -1390,54 +1396,54 @@ msgid "" "scrolling effect on the terminal, it is also necessary to call :meth:`idlok`." msgstr "" -#: library/curses.rst:1236 +#: library/curses.rst:1244 msgid "" "Set the scrolling region from line *top* to line *bottom*. All scrolling " "actions will take place in this region." msgstr "" -#: library/curses.rst:1242 +#: library/curses.rst:1250 msgid "" "Turn off the standout attribute. On some terminals this has the side effect " "of turning off all attributes." msgstr "" -#: library/curses.rst:1248 +#: library/curses.rst:1256 msgid "Turn on attribute *A_STANDOUT*." msgstr "" -#: library/curses.rst:1261 +#: library/curses.rst:1269 msgid "" "Return a sub-window, whose upper-left corner is at ``(begin_y, begin_x)``, " "and whose width/height is *ncols*/*nlines*." msgstr "" -#: library/curses.rst:1264 +#: library/curses.rst:1272 msgid "" "By default, the sub-window will extend from the specified position to the " "lower right corner of the window." msgstr "" -#: library/curses.rst:1270 +#: library/curses.rst:1278 msgid "" "Touch each location in the window that has been touched in any of its " "ancestor windows. This routine is called by :meth:`refresh`, so it should " "almost never be necessary to call it manually." msgstr "" -#: library/curses.rst:1277 +#: library/curses.rst:1285 msgid "" "If *flag* is ``True``, then :meth:`syncup` is called automatically whenever " "there is a change in the window." msgstr "" -#: library/curses.rst:1283 +#: library/curses.rst:1291 msgid "" "Touch all locations in ancestors of the window that have been changed in " "the window." msgstr "" -#: library/curses.rst:1289 +#: library/curses.rst:1297 msgid "" "Set blocking or non-blocking read behavior for the window. If *delay* is " "negative, blocking read is used (which will wait indefinitely for input). " @@ -1447,7 +1453,7 @@ msgid "" "still no input at the end of that time." msgstr "" -#: library/curses.rst:1299 +#: library/curses.rst:1307 msgid "" "Pretend *count* lines have been changed, starting with line *start*. If " "*changed* is supplied, it specifies whether the affected lines are marked as " @@ -1455,49 +1461,49 @@ msgid "" "``=False``)." msgstr "" -#: library/curses.rst:1306 +#: library/curses.rst:1314 msgid "" "Pretend the whole window has been changed, for purposes of drawing " "optimizations." msgstr "" -#: library/curses.rst:1312 +#: library/curses.rst:1320 msgid "" "Mark all lines in the window as unchanged since the last call to :meth:" "`refresh`." msgstr "" -#: library/curses.rst:1319 +#: library/curses.rst:1327 msgid "" "Display a vertical line starting at ``(y, x)`` with length *n* consisting of " "the character *ch* with attributes *attr*." msgstr "" -#: library/curses.rst:1324 +#: library/curses.rst:1332 msgid "Constants" msgstr "" -#: library/curses.rst:1326 +#: library/curses.rst:1334 msgid "The :mod:`curses` module defines the following data members:" msgstr "" -#: library/curses.rst:1331 +#: library/curses.rst:1339 msgid "" "Some curses routines that return an integer, such as :meth:`~window." "getch`, return :const:`ERR` upon failure." msgstr "" -#: library/curses.rst:1337 +#: library/curses.rst:1345 msgid "" "Some curses routines that return an integer, such as :func:`napms`, " "return :const:`OK` upon success." msgstr "" -#: library/curses.rst:1344 +#: library/curses.rst:1352 msgid "A bytes object representing the current version of the module." msgstr "" -#: library/curses.rst:1349 +#: library/curses.rst:1357 msgid "" "A named tuple containing the three components of the ncurses library " "version: *major*, *minor*, and *patch*. All values are integers. The " @@ -1505,535 +1511,535 @@ msgid "" "is equivalent to ``curses.ncurses_version.major`` and so on." msgstr "" -#: library/curses.rst:1354 +#: library/curses.rst:1362 msgid "Availability: if the ncurses library is used." msgstr "" -#: library/curses.rst:1360 +#: library/curses.rst:1368 msgid "" "The maximum number of colors the terminal can support. It is defined only " "after the call to :func:`start_color`." msgstr "" -#: library/curses.rst:1365 +#: library/curses.rst:1373 msgid "" "The maximum number of color pairs the terminal can support. It is defined " "only after the call to :func:`start_color`." msgstr "" -#: library/curses.rst:1370 +#: library/curses.rst:1378 msgid "" "The width of the screen, i.e., the number of columns. It is defined only " "after the call to :func:`initscr`. Updated by :func:`update_lines_cols`, :" "func:`resizeterm` and :func:`resize_term`." msgstr "" -#: library/curses.rst:1377 +#: library/curses.rst:1385 msgid "" "The height of the screen, i.e., the number of lines. It is defined only " "after the call to :func:`initscr`. Updated by :func:`update_lines_cols`, :" "func:`resizeterm` and :func:`resize_term`." msgstr "" -#: library/curses.rst:1383 +#: library/curses.rst:1391 msgid "" "Some constants are available to specify character cell attributes. The exact " "constants available are system dependent." msgstr "" -#: library/curses.rst:1387 +#: library/curses.rst:1395 msgid "Attribute" msgstr "" -#: library/curses.rst:1432 library/curses.rst:1770 +#: library/curses.rst:1440 library/curses.rst:1778 msgid "Meaning" msgstr "" -#: library/curses.rst:1389 +#: library/curses.rst:1397 msgid "Alternate character set mode" msgstr "" -#: library/curses.rst:1391 +#: library/curses.rst:1399 msgid "Blink mode" msgstr "" -#: library/curses.rst:1393 +#: library/curses.rst:1401 msgid "Bold mode" msgstr "" -#: library/curses.rst:1395 +#: library/curses.rst:1403 msgid "Dim mode" msgstr "" -#: library/curses.rst:1397 +#: library/curses.rst:1405 msgid "Invisible or blank mode" msgstr "" -#: library/curses.rst:1399 +#: library/curses.rst:1407 msgid "Italic mode" msgstr "" -#: library/curses.rst:1401 +#: library/curses.rst:1409 msgid "Normal attribute" msgstr "" -#: library/curses.rst:1403 +#: library/curses.rst:1411 msgid "Protected mode" msgstr "" -#: library/curses.rst:1405 +#: library/curses.rst:1413 msgid "Reverse background and foreground colors" msgstr "" -#: library/curses.rst:1408 +#: library/curses.rst:1416 msgid "Standout mode" msgstr "" -#: library/curses.rst:1410 +#: library/curses.rst:1418 msgid "Underline mode" msgstr "" -#: library/curses.rst:1412 +#: library/curses.rst:1420 msgid "Horizontal highlight" msgstr "" -#: library/curses.rst:1414 +#: library/curses.rst:1422 msgid "Left highlight" msgstr "" -#: library/curses.rst:1416 +#: library/curses.rst:1424 msgid "Low highlight" msgstr "" -#: library/curses.rst:1418 +#: library/curses.rst:1426 msgid "Right highlight" msgstr "" -#: library/curses.rst:1420 +#: library/curses.rst:1428 msgid "Top highlight" msgstr "" -#: library/curses.rst:1422 +#: library/curses.rst:1430 msgid "Vertical highlight" msgstr "" -#: library/curses.rst:1425 +#: library/curses.rst:1433 msgid "``A_ITALIC`` was added." msgstr "" -#: library/curses.rst:1428 +#: library/curses.rst:1436 msgid "" "Several constants are available to extract corresponding attributes returned " "by some methods." msgstr "" -#: library/curses.rst:1432 +#: library/curses.rst:1440 msgid "Bit-mask" msgstr "" -#: library/curses.rst:1434 +#: library/curses.rst:1442 msgid "Bit-mask to extract attributes" msgstr "" -#: library/curses.rst:1437 +#: library/curses.rst:1445 msgid "Bit-mask to extract a character" msgstr "" -#: library/curses.rst:1440 +#: library/curses.rst:1448 msgid "Bit-mask to extract color-pair field information" msgstr "" -#: library/curses.rst:1444 +#: library/curses.rst:1452 msgid "" "Keys are referred to by integer constants with names starting with " "``KEY_``. The exact keycaps available are system dependent." msgstr "" -#: library/curses.rst:1450 +#: library/curses.rst:1458 msgid "Key constant" msgstr "" -#: library/curses.rst:1450 +#: library/curses.rst:1458 msgid "Key" msgstr "" -#: library/curses.rst:1452 +#: library/curses.rst:1460 msgid "Minimum key value" msgstr "" -#: library/curses.rst:1454 +#: library/curses.rst:1462 msgid "Break key (unreliable)" msgstr "" -#: library/curses.rst:1456 +#: library/curses.rst:1464 msgid "Down-arrow" msgstr "" -#: library/curses.rst:1458 +#: library/curses.rst:1466 msgid "Up-arrow" msgstr "" -#: library/curses.rst:1460 +#: library/curses.rst:1468 msgid "Left-arrow" msgstr "" -#: library/curses.rst:1462 +#: library/curses.rst:1470 msgid "Right-arrow" msgstr "" -#: library/curses.rst:1464 +#: library/curses.rst:1472 msgid "Home key (upward+left arrow)" msgstr "" -#: library/curses.rst:1466 +#: library/curses.rst:1474 msgid "Backspace (unreliable)" msgstr "" -#: library/curses.rst:1468 +#: library/curses.rst:1476 msgid "Function keys. Up to 64 function keys are supported." msgstr "" -#: library/curses.rst:1471 +#: library/curses.rst:1479 msgid "Value of function key *n*" msgstr "" -#: library/curses.rst:1473 +#: library/curses.rst:1481 msgid "Delete line" msgstr "" -#: library/curses.rst:1475 +#: library/curses.rst:1483 msgid "Insert line" msgstr "" -#: library/curses.rst:1477 +#: library/curses.rst:1485 msgid "Delete character" msgstr "" -#: library/curses.rst:1479 +#: library/curses.rst:1487 msgid "Insert char or enter insert mode" msgstr "" -#: library/curses.rst:1481 +#: library/curses.rst:1489 msgid "Exit insert char mode" msgstr "" -#: library/curses.rst:1483 +#: library/curses.rst:1491 msgid "Clear screen" msgstr "" -#: library/curses.rst:1485 +#: library/curses.rst:1493 msgid "Clear to end of screen" msgstr "" -#: library/curses.rst:1487 +#: library/curses.rst:1495 msgid "Clear to end of line" msgstr "" -#: library/curses.rst:1489 +#: library/curses.rst:1497 msgid "Scroll 1 line forward" msgstr "" -#: library/curses.rst:1491 +#: library/curses.rst:1499 msgid "Scroll 1 line backward (reverse)" msgstr "" -#: library/curses.rst:1493 +#: library/curses.rst:1501 msgid "Next page" msgstr "" -#: library/curses.rst:1495 +#: library/curses.rst:1503 msgid "Previous page" msgstr "" -#: library/curses.rst:1497 +#: library/curses.rst:1505 msgid "Set tab" msgstr "" -#: library/curses.rst:1499 +#: library/curses.rst:1507 msgid "Clear tab" msgstr "" -#: library/curses.rst:1501 +#: library/curses.rst:1509 msgid "Clear all tabs" msgstr "" -#: library/curses.rst:1503 +#: library/curses.rst:1511 msgid "Enter or send (unreliable)" msgstr "" -#: library/curses.rst:1505 +#: library/curses.rst:1513 msgid "Soft (partial) reset (unreliable)" msgstr "" -#: library/curses.rst:1507 +#: library/curses.rst:1515 msgid "Reset or hard reset (unreliable)" msgstr "" -#: library/curses.rst:1509 +#: library/curses.rst:1517 msgid "Print" msgstr "" -#: library/curses.rst:1511 +#: library/curses.rst:1519 msgid "Home down or bottom (lower left)" msgstr "" -#: library/curses.rst:1513 +#: library/curses.rst:1521 msgid "Upper left of keypad" msgstr "" -#: library/curses.rst:1515 +#: library/curses.rst:1523 msgid "Upper right of keypad" msgstr "" -#: library/curses.rst:1517 +#: library/curses.rst:1525 msgid "Center of keypad" msgstr "" -#: library/curses.rst:1519 +#: library/curses.rst:1527 msgid "Lower left of keypad" msgstr "" -#: library/curses.rst:1521 +#: library/curses.rst:1529 msgid "Lower right of keypad" msgstr "" -#: library/curses.rst:1523 +#: library/curses.rst:1531 msgid "Back tab" msgstr "" -#: library/curses.rst:1525 +#: library/curses.rst:1533 msgid "Beg (beginning)" msgstr "" -#: library/curses.rst:1527 +#: library/curses.rst:1535 msgid "Cancel" msgstr "" -#: library/curses.rst:1529 +#: library/curses.rst:1537 msgid "Close" msgstr "" -#: library/curses.rst:1531 +#: library/curses.rst:1539 msgid "Cmd (command)" msgstr "" -#: library/curses.rst:1533 +#: library/curses.rst:1541 msgid "Copy" msgstr "" -#: library/curses.rst:1535 +#: library/curses.rst:1543 msgid "Create" msgstr "" -#: library/curses.rst:1537 +#: library/curses.rst:1545 msgid "End" msgstr "" -#: library/curses.rst:1539 +#: library/curses.rst:1547 msgid "Exit" msgstr "" -#: library/curses.rst:1541 +#: library/curses.rst:1549 msgid "Find" msgstr "" -#: library/curses.rst:1543 +#: library/curses.rst:1551 msgid "Help" msgstr "" -#: library/curses.rst:1545 +#: library/curses.rst:1553 msgid "Mark" msgstr "" -#: library/curses.rst:1547 +#: library/curses.rst:1555 msgid "Message" msgstr "" -#: library/curses.rst:1549 +#: library/curses.rst:1557 msgid "Move" msgstr "" -#: library/curses.rst:1551 +#: library/curses.rst:1559 msgid "Next" msgstr "" -#: library/curses.rst:1553 +#: library/curses.rst:1561 msgid "Open" msgstr "" -#: library/curses.rst:1555 +#: library/curses.rst:1563 msgid "Options" msgstr "" -#: library/curses.rst:1557 +#: library/curses.rst:1565 msgid "Prev (previous)" msgstr "" -#: library/curses.rst:1559 +#: library/curses.rst:1567 msgid "Redo" msgstr "" -#: library/curses.rst:1561 +#: library/curses.rst:1569 msgid "Ref (reference)" msgstr "" -#: library/curses.rst:1563 +#: library/curses.rst:1571 msgid "Refresh" msgstr "" -#: library/curses.rst:1565 +#: library/curses.rst:1573 msgid "Replace" msgstr "" -#: library/curses.rst:1567 +#: library/curses.rst:1575 msgid "Restart" msgstr "" -#: library/curses.rst:1569 +#: library/curses.rst:1577 msgid "Resume" msgstr "" -#: library/curses.rst:1571 +#: library/curses.rst:1579 msgid "Save" msgstr "" -#: library/curses.rst:1573 +#: library/curses.rst:1581 msgid "Shifted Beg (beginning)" msgstr "" -#: library/curses.rst:1575 +#: library/curses.rst:1583 msgid "Shifted Cancel" msgstr "" -#: library/curses.rst:1577 +#: library/curses.rst:1585 msgid "Shifted Command" msgstr "" -#: library/curses.rst:1579 +#: library/curses.rst:1587 msgid "Shifted Copy" msgstr "" -#: library/curses.rst:1581 +#: library/curses.rst:1589 msgid "Shifted Create" msgstr "" -#: library/curses.rst:1583 +#: library/curses.rst:1591 msgid "Shifted Delete char" msgstr "" -#: library/curses.rst:1585 +#: library/curses.rst:1593 msgid "Shifted Delete line" msgstr "" -#: library/curses.rst:1587 +#: library/curses.rst:1595 msgid "Select" msgstr "" -#: library/curses.rst:1589 +#: library/curses.rst:1597 msgid "Shifted End" msgstr "" -#: library/curses.rst:1591 +#: library/curses.rst:1599 msgid "Shifted Clear line" msgstr "" -#: library/curses.rst:1593 +#: library/curses.rst:1601 msgid "Shifted Exit" msgstr "" -#: library/curses.rst:1595 +#: library/curses.rst:1603 msgid "Shifted Find" msgstr "" -#: library/curses.rst:1597 +#: library/curses.rst:1605 msgid "Shifted Help" msgstr "" -#: library/curses.rst:1599 +#: library/curses.rst:1607 msgid "Shifted Home" msgstr "" -#: library/curses.rst:1601 +#: library/curses.rst:1609 msgid "Shifted Input" msgstr "" -#: library/curses.rst:1603 +#: library/curses.rst:1611 msgid "Shifted Left arrow" msgstr "" -#: library/curses.rst:1605 +#: library/curses.rst:1613 msgid "Shifted Message" msgstr "" -#: library/curses.rst:1607 +#: library/curses.rst:1615 msgid "Shifted Move" msgstr "" -#: library/curses.rst:1609 +#: library/curses.rst:1617 msgid "Shifted Next" msgstr "" -#: library/curses.rst:1611 +#: library/curses.rst:1619 msgid "Shifted Options" msgstr "" -#: library/curses.rst:1613 +#: library/curses.rst:1621 msgid "Shifted Prev" msgstr "" -#: library/curses.rst:1615 +#: library/curses.rst:1623 msgid "Shifted Print" msgstr "" -#: library/curses.rst:1617 +#: library/curses.rst:1625 msgid "Shifted Redo" msgstr "" -#: library/curses.rst:1619 +#: library/curses.rst:1627 msgid "Shifted Replace" msgstr "" -#: library/curses.rst:1621 +#: library/curses.rst:1629 msgid "Shifted Right arrow" msgstr "" -#: library/curses.rst:1623 +#: library/curses.rst:1631 msgid "Shifted Resume" msgstr "" -#: library/curses.rst:1625 +#: library/curses.rst:1633 msgid "Shifted Save" msgstr "" -#: library/curses.rst:1627 +#: library/curses.rst:1635 msgid "Shifted Suspend" msgstr "" -#: library/curses.rst:1629 +#: library/curses.rst:1637 msgid "Shifted Undo" msgstr "" -#: library/curses.rst:1631 +#: library/curses.rst:1639 msgid "Suspend" msgstr "" -#: library/curses.rst:1633 +#: library/curses.rst:1641 msgid "Undo" msgstr "" -#: library/curses.rst:1635 +#: library/curses.rst:1643 msgid "Mouse event has occurred" msgstr "" -#: library/curses.rst:1637 +#: library/curses.rst:1645 msgid "Terminal resize event" msgstr "" -#: library/curses.rst:1639 +#: library/curses.rst:1647 msgid "Maximum key value" msgstr "" -#: library/curses.rst:1642 +#: library/curses.rst:1650 msgid "" "On VT100s and their software emulations, such as X terminal emulators, there " "are normally at least four function keys (:const:`KEY_F1 `, :const:" @@ -2045,63 +2051,63 @@ msgid "" "keypad mappings are standard:" msgstr "" -#: library/curses.rst:1651 +#: library/curses.rst:1659 msgid "Keycap" msgstr "" -#: library/curses.rst:1796 library/curses.rst:1920 +#: library/curses.rst:1804 library/curses.rst:1928 msgid "Constant" msgstr "" -#: library/curses.rst:1653 +#: library/curses.rst:1661 msgid ":kbd:`Insert`" msgstr "" -#: library/curses.rst:1653 +#: library/curses.rst:1661 msgid "KEY_IC" msgstr "" -#: library/curses.rst:1655 +#: library/curses.rst:1663 msgid ":kbd:`Delete`" msgstr "" -#: library/curses.rst:1655 +#: library/curses.rst:1663 msgid "KEY_DC" msgstr "" -#: library/curses.rst:1657 +#: library/curses.rst:1665 msgid ":kbd:`Home`" msgstr "" -#: library/curses.rst:1657 +#: library/curses.rst:1665 msgid "KEY_HOME" msgstr "" -#: library/curses.rst:1659 +#: library/curses.rst:1667 msgid ":kbd:`End`" msgstr "" -#: library/curses.rst:1659 +#: library/curses.rst:1667 msgid "KEY_END" msgstr "" -#: library/curses.rst:1661 +#: library/curses.rst:1669 msgid ":kbd:`Page Up`" msgstr "" -#: library/curses.rst:1661 +#: library/curses.rst:1669 msgid "KEY_PPAGE" msgstr "" -#: library/curses.rst:1663 +#: library/curses.rst:1671 msgid ":kbd:`Page Down`" msgstr "" -#: library/curses.rst:1663 +#: library/curses.rst:1671 msgid "KEY_NPAGE" msgstr "" -#: library/curses.rst:1668 +#: library/curses.rst:1676 msgid "" "The following table lists characters from the alternate character set. These " "are inherited from the VT100 terminal, and will generally be available on " @@ -2109,268 +2115,268 @@ msgid "" "available, curses falls back on a crude printable ASCII approximation." msgstr "" -#: library/curses.rst:1675 +#: library/curses.rst:1683 msgid "These are available only after :func:`initscr` has been called." msgstr "" -#: library/curses.rst:1678 +#: library/curses.rst:1686 msgid "ACS code" msgstr "" -#: library/curses.rst:1680 +#: library/curses.rst:1688 msgid "alternate name for upper right corner" msgstr "" -#: library/curses.rst:1682 +#: library/curses.rst:1690 msgid "solid square block" msgstr "" -#: library/curses.rst:1684 +#: library/curses.rst:1692 msgid "board of squares" msgstr "" -#: library/curses.rst:1686 +#: library/curses.rst:1694 msgid "alternate name for horizontal line" msgstr "" -#: library/curses.rst:1688 +#: library/curses.rst:1696 msgid "alternate name for upper left corner" msgstr "" -#: library/curses.rst:1690 +#: library/curses.rst:1698 msgid "alternate name for top tee" msgstr "" -#: library/curses.rst:1692 +#: library/curses.rst:1700 msgid "bottom tee" msgstr "" -#: library/curses.rst:1694 +#: library/curses.rst:1702 msgid "bullet" msgstr "" -#: library/curses.rst:1696 +#: library/curses.rst:1704 msgid "checker board (stipple)" msgstr "" -#: library/curses.rst:1698 +#: library/curses.rst:1706 msgid "arrow pointing down" msgstr "" -#: library/curses.rst:1700 +#: library/curses.rst:1708 msgid "degree symbol" msgstr "" -#: library/curses.rst:1702 +#: library/curses.rst:1710 msgid "diamond" msgstr "" -#: library/curses.rst:1704 +#: library/curses.rst:1712 msgid "greater-than-or-equal-to" msgstr "" -#: library/curses.rst:1706 +#: library/curses.rst:1714 msgid "horizontal line" msgstr "" -#: library/curses.rst:1708 +#: library/curses.rst:1716 msgid "lantern symbol" msgstr "" -#: library/curses.rst:1710 +#: library/curses.rst:1718 msgid "left arrow" msgstr "" -#: library/curses.rst:1712 +#: library/curses.rst:1720 msgid "less-than-or-equal-to" msgstr "" -#: library/curses.rst:1714 +#: library/curses.rst:1722 msgid "lower left-hand corner" msgstr "" -#: library/curses.rst:1716 +#: library/curses.rst:1724 msgid "lower right-hand corner" msgstr "" -#: library/curses.rst:1718 +#: library/curses.rst:1726 msgid "left tee" msgstr "" -#: library/curses.rst:1720 +#: library/curses.rst:1728 msgid "not-equal sign" msgstr "" -#: library/curses.rst:1722 +#: library/curses.rst:1730 msgid "letter pi" msgstr "" -#: library/curses.rst:1724 +#: library/curses.rst:1732 msgid "plus-or-minus sign" msgstr "" -#: library/curses.rst:1726 +#: library/curses.rst:1734 msgid "big plus sign" msgstr "" -#: library/curses.rst:1728 +#: library/curses.rst:1736 msgid "right arrow" msgstr "" -#: library/curses.rst:1730 +#: library/curses.rst:1738 msgid "right tee" msgstr "" -#: library/curses.rst:1732 +#: library/curses.rst:1740 msgid "scan line 1" msgstr "" -#: library/curses.rst:1734 +#: library/curses.rst:1742 msgid "scan line 3" msgstr "" -#: library/curses.rst:1736 +#: library/curses.rst:1744 msgid "scan line 7" msgstr "" -#: library/curses.rst:1738 +#: library/curses.rst:1746 msgid "scan line 9" msgstr "" -#: library/curses.rst:1740 +#: library/curses.rst:1748 msgid "alternate name for lower right corner" msgstr "" -#: library/curses.rst:1742 +#: library/curses.rst:1750 msgid "alternate name for vertical line" msgstr "" -#: library/curses.rst:1744 +#: library/curses.rst:1752 msgid "alternate name for right tee" msgstr "" -#: library/curses.rst:1746 +#: library/curses.rst:1754 msgid "alternate name for lower left corner" msgstr "" -#: library/curses.rst:1748 +#: library/curses.rst:1756 msgid "alternate name for bottom tee" msgstr "" -#: library/curses.rst:1750 +#: library/curses.rst:1758 msgid "alternate name for left tee" msgstr "" -#: library/curses.rst:1752 +#: library/curses.rst:1760 msgid "alternate name for crossover or big plus" msgstr "" -#: library/curses.rst:1754 +#: library/curses.rst:1762 msgid "pound sterling" msgstr "" -#: library/curses.rst:1756 +#: library/curses.rst:1764 msgid "top tee" msgstr "" -#: library/curses.rst:1758 +#: library/curses.rst:1766 msgid "up arrow" msgstr "" -#: library/curses.rst:1760 +#: library/curses.rst:1768 msgid "upper left corner" msgstr "" -#: library/curses.rst:1762 +#: library/curses.rst:1770 msgid "upper right corner" msgstr "" -#: library/curses.rst:1764 +#: library/curses.rst:1772 msgid "vertical line" msgstr "" -#: library/curses.rst:1767 +#: library/curses.rst:1775 msgid "" "The following table lists mouse button constants used by :meth:`getmouse`:" msgstr "" -#: library/curses.rst:1770 +#: library/curses.rst:1778 msgid "Mouse button constant" msgstr "" -#: library/curses.rst:1772 +#: library/curses.rst:1780 msgid "Mouse button *n* pressed" msgstr "" -#: library/curses.rst:1774 +#: library/curses.rst:1782 msgid "Mouse button *n* released" msgstr "" -#: library/curses.rst:1776 +#: library/curses.rst:1784 msgid "Mouse button *n* clicked" msgstr "" -#: library/curses.rst:1778 +#: library/curses.rst:1786 msgid "Mouse button *n* double clicked" msgstr "" -#: library/curses.rst:1780 +#: library/curses.rst:1788 msgid "Mouse button *n* triple clicked" msgstr "" -#: library/curses.rst:1782 +#: library/curses.rst:1790 msgid "Shift was down during button state change" msgstr "" -#: library/curses.rst:1786 +#: library/curses.rst:1794 msgid "Control was down during button state change" msgstr "" -#: library/curses.rst:1793 +#: library/curses.rst:1801 msgid "The following table lists the predefined colors:" msgstr "" -#: library/curses.rst:1796 +#: library/curses.rst:1804 msgid "Color" msgstr "" -#: library/curses.rst:1798 +#: library/curses.rst:1806 msgid "Black" msgstr "" -#: library/curses.rst:1800 +#: library/curses.rst:1808 msgid "Blue" msgstr "" -#: library/curses.rst:1802 +#: library/curses.rst:1810 msgid "Cyan (light greenish blue)" msgstr "" -#: library/curses.rst:1804 +#: library/curses.rst:1812 msgid "Green" msgstr "" -#: library/curses.rst:1806 +#: library/curses.rst:1814 msgid "Magenta (purplish red)" msgstr "" -#: library/curses.rst:1808 +#: library/curses.rst:1816 msgid "Red" msgstr "" -#: library/curses.rst:1810 +#: library/curses.rst:1818 msgid "White" msgstr "" -#: library/curses.rst:1812 +#: library/curses.rst:1820 msgid "Yellow" msgstr "" -#: library/curses.rst:1817 +#: library/curses.rst:1825 msgid ":mod:`curses.textpad` --- Text input widget for curses programs" msgstr "" -#: library/curses.rst:1825 +#: library/curses.rst:1833 msgid "" "The :mod:`curses.textpad` module provides a :class:`Textbox` class that " "handles elementary text editing in a curses window, supporting a set of " @@ -2380,11 +2386,11 @@ msgid "" "purposes." msgstr "" -#: library/curses.rst:1831 +#: library/curses.rst:1839 msgid "The module :mod:`curses.textpad` defines the following function:" msgstr "" -#: library/curses.rst:1836 +#: library/curses.rst:1844 msgid "" "Draw a rectangle. The first argument must be a window object; the remaining " "arguments are coordinates relative to that window. The second and third " @@ -2396,15 +2402,15 @@ msgid "" "will be drawn with ASCII dashes, vertical bars, and plus signs." msgstr "" -#: library/curses.rst:1849 +#: library/curses.rst:1857 msgid "Textbox objects" msgstr "" -#: library/curses.rst:1851 +#: library/curses.rst:1859 msgid "You can instantiate a :class:`Textbox` object as follows:" msgstr "" -#: library/curses.rst:1856 +#: library/curses.rst:1864 msgid "" "Return a textbox widget object. The *win* argument should be a curses :ref:" "`window ` object in which the textbox is to be " @@ -2413,11 +2419,11 @@ msgid "" "instance's :attr:`stripspaces` flag is initially on." msgstr "" -#: library/curses.rst:1862 +#: library/curses.rst:1870 msgid ":class:`Textbox` objects have the following methods:" msgstr "" -#: library/curses.rst:1867 +#: library/curses.rst:1875 msgid "" "This is the entry point you will normally use. It accepts editing " "keystrokes until one of the termination keystrokes is entered. If " @@ -2428,167 +2434,167 @@ msgid "" "`stripspaces` attribute." msgstr "" -#: library/curses.rst:1878 +#: library/curses.rst:1886 msgid "" "Process a single command keystroke. Here are the supported special " "keystrokes:" msgstr "" -#: library/curses.rst:1920 +#: library/curses.rst:1928 msgid "Keystroke" msgstr "" -#: library/curses.rst:1882 +#: library/curses.rst:1890 msgid "Action" msgstr "" -#: library/curses.rst:1884 +#: library/curses.rst:1892 msgid ":kbd:`Control-A`" msgstr "" -#: library/curses.rst:1884 +#: library/curses.rst:1892 msgid "Go to left edge of window." msgstr "" -#: library/curses.rst:1922 +#: library/curses.rst:1930 msgid ":kbd:`Control-B`" msgstr "" -#: library/curses.rst:1886 +#: library/curses.rst:1894 msgid "Cursor left, wrapping to previous line if appropriate." msgstr "" -#: library/curses.rst:1889 +#: library/curses.rst:1897 msgid ":kbd:`Control-D`" msgstr "" -#: library/curses.rst:1889 +#: library/curses.rst:1897 msgid "Delete character under cursor." msgstr "" -#: library/curses.rst:1891 +#: library/curses.rst:1899 msgid ":kbd:`Control-E`" msgstr "" -#: library/curses.rst:1891 +#: library/curses.rst:1899 msgid "Go to right edge (stripspaces off) or end of line (stripspaces on)." msgstr "" -#: library/curses.rst:1924 +#: library/curses.rst:1932 msgid ":kbd:`Control-F`" msgstr "" -#: library/curses.rst:1894 +#: library/curses.rst:1902 msgid "Cursor right, wrapping to next line when appropriate." msgstr "" -#: library/curses.rst:1897 +#: library/curses.rst:1905 msgid ":kbd:`Control-G`" msgstr "" -#: library/curses.rst:1897 +#: library/curses.rst:1905 msgid "Terminate, returning the window contents." msgstr "" -#: library/curses.rst:1899 +#: library/curses.rst:1907 msgid ":kbd:`Control-H`" msgstr "" -#: library/curses.rst:1899 +#: library/curses.rst:1907 msgid "Delete character backward." msgstr "" -#: library/curses.rst:1901 +#: library/curses.rst:1909 msgid ":kbd:`Control-J`" msgstr "" -#: library/curses.rst:1901 +#: library/curses.rst:1909 msgid "Terminate if the window is 1 line, otherwise insert newline." msgstr "" -#: library/curses.rst:1904 +#: library/curses.rst:1912 msgid ":kbd:`Control-K`" msgstr "" -#: library/curses.rst:1904 +#: library/curses.rst:1912 msgid "If line is blank, delete it, otherwise clear to end of line." msgstr "" -#: library/curses.rst:1907 +#: library/curses.rst:1915 msgid ":kbd:`Control-L`" msgstr "" -#: library/curses.rst:1907 +#: library/curses.rst:1915 msgid "Refresh screen." msgstr "" -#: library/curses.rst:1928 +#: library/curses.rst:1936 msgid ":kbd:`Control-N`" msgstr "" -#: library/curses.rst:1909 +#: library/curses.rst:1917 msgid "Cursor down; move down one line." msgstr "" -#: library/curses.rst:1911 +#: library/curses.rst:1919 msgid ":kbd:`Control-O`" msgstr "" -#: library/curses.rst:1911 +#: library/curses.rst:1919 msgid "Insert a blank line at cursor location." msgstr "" -#: library/curses.rst:1926 +#: library/curses.rst:1934 msgid ":kbd:`Control-P`" msgstr "" -#: library/curses.rst:1913 +#: library/curses.rst:1921 msgid "Cursor up; move up one line." msgstr "" -#: library/curses.rst:1916 +#: library/curses.rst:1924 msgid "" "Move operations do nothing if the cursor is at an edge where the movement is " "not possible. The following synonyms are supported where possible:" msgstr "" -#: library/curses.rst:1922 +#: library/curses.rst:1930 msgid ":const:`~curses.KEY_LEFT`" msgstr "" -#: library/curses.rst:1924 +#: library/curses.rst:1932 msgid ":const:`~curses.KEY_RIGHT`" msgstr "" -#: library/curses.rst:1926 +#: library/curses.rst:1934 msgid ":const:`~curses.KEY_UP`" msgstr "" -#: library/curses.rst:1928 +#: library/curses.rst:1936 msgid ":const:`~curses.KEY_DOWN`" msgstr "" -#: library/curses.rst:1930 +#: library/curses.rst:1938 msgid ":const:`~curses.KEY_BACKSPACE`" msgstr "" -#: library/curses.rst:1930 +#: library/curses.rst:1938 msgid ":kbd:`Control-h`" msgstr "" -#: library/curses.rst:1933 +#: library/curses.rst:1941 msgid "" "All other keystrokes are treated as a command to insert the given character " "and move right (with line wrapping)." msgstr "" -#: library/curses.rst:1939 +#: library/curses.rst:1947 msgid "" "Return the window contents as a string; whether blanks in the window are " "included is affected by the :attr:`stripspaces` member." msgstr "" -#: library/curses.rst:1945 +#: library/curses.rst:1953 msgid "" "This attribute is a flag which controls the interpretation of blanks in the " "window. When it is on, trailing blanks on each line are ignored; any cursor " diff --git a/library/custominterp.po b/library/custominterp.po index 88a288ab..4766f321 100644 --- a/library/custominterp.po +++ b/library/custominterp.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/dataclasses.po b/library/dataclasses.po index 3ecb22de..7caf98a8 100644 --- a/library/dataclasses.po +++ b/library/dataclasses.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -190,11 +190,13 @@ msgstr "" #: library/dataclasses.rst:124 msgid "" -"*unsafe_hash*: If ``False`` (the default), a :meth:`~object.__hash__` method " -"is generated according to how *eq* and *frozen* are set." +"*unsafe_hash*: If true, force ``dataclasses`` to create a :meth:`~object." +"__hash__` method, even though it may not be safe to do so. Otherwise, " +"generate a :meth:`~object.__hash__` method according to how *eq* and " +"*frozen* are set. The default value is ``False``." msgstr "" -#: library/dataclasses.rst:127 +#: library/dataclasses.rst:130 msgid "" ":meth:`!__hash__` is used by built-in :meth:`hash`, and when objects are " "added to hashed collections such as dictionaries and sets. Having a :meth:`!" @@ -204,7 +206,7 @@ msgid "" "flags in the ``@dataclass`` decorator." msgstr "" -#: library/dataclasses.rst:134 +#: library/dataclasses.rst:137 msgid "" "By default, ``@dataclass`` will not implicitly add a :meth:`~object." "__hash__` method unless it is safe to do so. Neither will it add or change " @@ -213,7 +215,7 @@ msgid "" "in the :meth:`!__hash__` documentation." msgstr "" -#: library/dataclasses.rst:140 +#: library/dataclasses.rst:143 msgid "" "If :meth:`!__hash__` is not explicitly defined, or if it is set to ``None``, " "then ``@dataclass`` *may* add an implicit :meth:`!__hash__` method. Although " @@ -223,7 +225,7 @@ msgid "" "and should be considered carefully." msgstr "" -#: library/dataclasses.rst:147 +#: library/dataclasses.rst:150 msgid "" "Here are the rules governing implicit creation of a :meth:`!__hash__` " "method. Note that you cannot both have an explicit :meth:`!__hash__` method " @@ -231,7 +233,7 @@ msgid "" "`TypeError`." msgstr "" -#: library/dataclasses.rst:152 +#: library/dataclasses.rst:155 msgid "" "If *eq* and *frozen* are both true, by default ``@dataclass`` will generate " "a :meth:`!__hash__` method for you. If *eq* is true and *frozen* is false, :" @@ -242,7 +244,7 @@ msgid "" "id-based hashing)." msgstr "" -#: library/dataclasses.rst:160 +#: library/dataclasses.rst:163 msgid "" "*frozen*: If true (the default is ``False``), assigning to fields will " "generate an exception. This emulates read-only frozen instances. If :meth:" @@ -250,7 +252,7 @@ msgid "" "class, then :exc:`TypeError` is raised. See the discussion below." msgstr "" -#: library/dataclasses.rst:165 +#: library/dataclasses.rst:168 msgid "" "*match_args*: If true (the default is ``True``), the :attr:`~object." "__match_args__` tuple will be created from the list of non keyword-only " @@ -260,7 +262,7 @@ msgid "" "__match_args__` will not be generated." msgstr "" -#: library/dataclasses.rst:174 +#: library/dataclasses.rst:177 msgid "" "*kw_only*: If true (the default value is ``False``), then all fields will be " "marked as keyword-only. If a field is marked as keyword-only, then the only " @@ -270,11 +272,11 @@ msgid "" "the :const:`KW_ONLY` section." msgstr "" -#: library/dataclasses.rst:182 +#: library/dataclasses.rst:185 msgid "Keyword-only fields are not included in :attr:`!__match_args__`." msgstr "" -#: library/dataclasses.rst:186 +#: library/dataclasses.rst:189 msgid "" "*slots*: If true (the default is ``False``), :attr:`~object.__slots__` " "attribute will be generated and new class will be returned instead of the " @@ -282,7 +284,7 @@ msgid "" "exc:`TypeError` is raised." msgstr "" -#: library/dataclasses.rst:192 +#: library/dataclasses.rst:195 msgid "" "Passing parameters to a base class :meth:`~object.__init_subclass__` when " "using ``slots=True`` will result in a :exc:`TypeError`. Either use " @@ -290,7 +292,7 @@ msgid "" "workaround. See :gh:`91126` for full details." msgstr "" -#: library/dataclasses.rst:200 +#: library/dataclasses.rst:203 msgid "" "If a field name is already included in the :attr:`!__slots__` of a base " "class, it will not be included in the generated :attr:`!__slots__` to " @@ -300,7 +302,7 @@ msgid "" "`!__slots__` may be any iterable, but *not* an iterator." msgstr "" -#: library/dataclasses.rst:210 +#: library/dataclasses.rst:213 msgid "" "*weakref_slot*: If true (the default is ``False``), add a slot named " "\"__weakref__\", which is required to make an instance :func:`weakref-able " @@ -308,13 +310,13 @@ msgid "" "specifying ``slots=True``." msgstr "" -#: library/dataclasses.rst:218 +#: library/dataclasses.rst:221 msgid "" "``field``\\s may optionally specify a default value, using normal Python " "syntax::" msgstr "" -#: library/dataclasses.rst:221 +#: library/dataclasses.rst:224 msgid "" "@dataclass\n" "class C:\n" @@ -322,24 +324,24 @@ msgid "" " b: int = 0 # assign a default value for 'b'" msgstr "" -#: library/dataclasses.rst:226 +#: library/dataclasses.rst:229 msgid "" "In this example, both :attr:`!a` and :attr:`!b` will be included in the " "added :meth:`~object.__init__` method, which will be defined as::" msgstr "" -#: library/dataclasses.rst:229 +#: library/dataclasses.rst:232 msgid "def __init__(self, a: int, b: int = 0):" msgstr "" -#: library/dataclasses.rst:231 +#: library/dataclasses.rst:234 msgid "" ":exc:`TypeError` will be raised if a field without a default value follows a " "field with a default value. This is true whether this occurs in a single " "class, or as a result of class inheritance." msgstr "" -#: library/dataclasses.rst:237 +#: library/dataclasses.rst:240 msgid "" "For common and simple use cases, no other functionality is required. There " "are, however, some dataclass features that require additional per-field " @@ -348,7 +350,7 @@ msgid "" "function. For example::" msgstr "" -#: library/dataclasses.rst:243 +#: library/dataclasses.rst:246 msgid "" "@dataclass\n" "class C:\n" @@ -358,7 +360,7 @@ msgid "" "c.mylist += [1, 2, 3]" msgstr "" -#: library/dataclasses.rst:250 +#: library/dataclasses.rst:253 msgid "" "As shown above, the :const:`MISSING` value is a sentinel object used to " "detect if some parameters are provided by the user. This sentinel is used " @@ -366,18 +368,18 @@ msgid "" "meaning. No code should directly use the :const:`MISSING` value." msgstr "" -#: library/dataclasses.rst:255 +#: library/dataclasses.rst:258 msgid "The parameters to :func:`!field` are:" msgstr "" -#: library/dataclasses.rst:257 +#: library/dataclasses.rst:260 msgid "" "*default*: If provided, this will be the default value for this field. This " "is needed because the :func:`!field` call itself replaces the normal " "position of the default value." msgstr "" -#: library/dataclasses.rst:261 +#: library/dataclasses.rst:264 msgid "" "*default_factory*: If provided, it must be a zero-argument callable that " "will be called when a default value is needed for this field. Among other " @@ -386,19 +388,19 @@ msgid "" "*default_factory*." msgstr "" -#: library/dataclasses.rst:267 +#: library/dataclasses.rst:270 msgid "" "*init*: If true (the default), this field is included as a parameter to the " "generated :meth:`~object.__init__` method." msgstr "" -#: library/dataclasses.rst:270 +#: library/dataclasses.rst:273 msgid "" "*repr*: If true (the default), this field is included in the string returned " "by the generated :meth:`~object.__repr__` method." msgstr "" -#: library/dataclasses.rst:273 +#: library/dataclasses.rst:276 msgid "" "*hash*: This can be a bool or ``None``. If true, this field is included in " "the generated :meth:`~object.__hash__` method. If false, this field is " @@ -409,7 +411,7 @@ msgid "" "discouraged." msgstr "" -#: library/dataclasses.rst:281 +#: library/dataclasses.rst:284 msgid "" "One possible reason to set ``hash=False`` but ``compare=True`` would be if a " "field is expensive to compute a hash value for, that field is needed for " @@ -418,14 +420,14 @@ msgid "" "used for comparisons." msgstr "" -#: library/dataclasses.rst:287 +#: library/dataclasses.rst:290 msgid "" "*compare*: If true (the default), this field is included in the generated " "equality and comparison methods (:meth:`~object.__eq__`, :meth:`~object." "__gt__`, et al.)." msgstr "" -#: library/dataclasses.rst:291 +#: library/dataclasses.rst:294 msgid "" "*metadata*: This can be a mapping or ``None``. ``None`` is treated as an " "empty dict. This value is wrapped in :func:`~types.MappingProxyType` to " @@ -435,21 +437,21 @@ msgid "" "namespace in the metadata." msgstr "" -#: library/dataclasses.rst:299 +#: library/dataclasses.rst:302 msgid "" "*kw_only*: If true, this field will be marked as keyword-only. This is used " "when the generated :meth:`~object.__init__` method's parameters are computed." msgstr "" -#: library/dataclasses.rst:303 +#: library/dataclasses.rst:306 msgid "Keyword-only fields are also not included in :attr:`!__match_args__`." msgstr "" -#: library/dataclasses.rst:307 -msgid "``doc``: optional docstring for this field." +#: library/dataclasses.rst:310 +msgid "*doc*: optional docstring for this field." msgstr "" -#: library/dataclasses.rst:311 +#: library/dataclasses.rst:314 msgid "" "If the default value of a field is specified by a call to :func:`!field`, " "then the class attribute for this field will be replaced by the specified " @@ -460,7 +462,7 @@ msgid "" "specified. For example, after::" msgstr "" -#: library/dataclasses.rst:320 +#: library/dataclasses.rst:323 msgid "" "@dataclass\n" "class C:\n" @@ -470,14 +472,14 @@ msgid "" " t: int = 20" msgstr "" -#: library/dataclasses.rst:327 +#: library/dataclasses.rst:330 msgid "" "The class attribute :attr:`!C.z` will be ``10``, the class attribute :attr:`!" "C.t` will be ``20``, and the class attributes :attr:`!C.x` and :attr:`!C.y` " "will not be set." msgstr "" -#: library/dataclasses.rst:333 +#: library/dataclasses.rst:336 msgid "" ":class:`!Field` objects describe each defined field. These objects are " "created internally, and are returned by the :func:`fields` module-level " @@ -485,28 +487,28 @@ msgid "" "directly. Its documented attributes are:" msgstr "" -#: library/dataclasses.rst:338 +#: library/dataclasses.rst:341 msgid ":attr:`!name`: The name of the field." msgstr "" -#: library/dataclasses.rst:339 +#: library/dataclasses.rst:342 msgid ":attr:`!type`: The type of the field." msgstr "" -#: library/dataclasses.rst:340 +#: library/dataclasses.rst:343 msgid "" ":attr:`!default`, :attr:`!default_factory`, :attr:`!init`, :attr:`!repr`, :" "attr:`!hash`, :attr:`!compare`, :attr:`!metadata`, and :attr:`!kw_only` have " "the identical meaning and values as they do in the :func:`field` function." msgstr "" -#: library/dataclasses.rst:344 +#: library/dataclasses.rst:347 msgid "" "Other attributes may exist, but they are private and must not be inspected " "or relied on." msgstr "" -#: library/dataclasses.rst:349 +#: library/dataclasses.rst:352 msgid "" "``InitVar[T]`` type annotations describe variables that are :ref:`init-only " "`. Fields annotated with :class:`!InitVar` " @@ -515,7 +517,7 @@ msgid "" "meth:`~object.__init__` and an optional :meth:`__post_init__`." msgstr "" -#: library/dataclasses.rst:358 +#: library/dataclasses.rst:361 msgid "" "Returns a tuple of :class:`Field` objects that define the fields for this " "dataclass. Accepts either a dataclass, or an instance of a dataclass. " @@ -523,7 +525,7 @@ msgid "" "not return pseudo-fields which are ``ClassVar`` or ``InitVar``." msgstr "" -#: library/dataclasses.rst:365 +#: library/dataclasses.rst:368 msgid "" "Converts the dataclass *obj* to a dict (by using the factory function " "*dict_factory*). Each dataclass is converted to a dict of its fields, as " @@ -531,11 +533,11 @@ msgid "" "into. Other objects are copied with :func:`copy.deepcopy`." msgstr "" -#: library/dataclasses.rst:371 +#: library/dataclasses.rst:374 msgid "Example of using :func:`!asdict` on nested dataclasses::" msgstr "" -#: library/dataclasses.rst:373 +#: library/dataclasses.rst:376 msgid "" "@dataclass\n" "class Point:\n" @@ -553,20 +555,20 @@ msgid "" "assert asdict(c) == {'mylist': [{'x': 0, 'y': 0}, {'x': 10, 'y': 4}]}" msgstr "" -#: library/dataclasses.rst:408 +#: library/dataclasses.rst:411 msgid "To create a shallow copy, the following workaround may be used::" msgstr "" -#: library/dataclasses.rst:390 +#: library/dataclasses.rst:393 msgid "{field.name: getattr(obj, field.name) for field in fields(obj)}" msgstr "" -#: library/dataclasses.rst:392 +#: library/dataclasses.rst:395 msgid "" ":func:`!asdict` raises :exc:`TypeError` if *obj* is not a dataclass instance." msgstr "" -#: library/dataclasses.rst:397 +#: library/dataclasses.rst:400 msgid "" "Converts the dataclass *obj* to a tuple (by using the factory function " "*tuple_factory*). Each dataclass is converted to a tuple of its field " @@ -574,27 +576,27 @@ msgid "" "objects are copied with :func:`copy.deepcopy`." msgstr "" -#: library/dataclasses.rst:403 +#: library/dataclasses.rst:406 msgid "Continuing from the previous example::" msgstr "" -#: library/dataclasses.rst:405 +#: library/dataclasses.rst:408 msgid "" "assert astuple(p) == (10, 20)\n" "assert astuple(c) == ([(0, 0), (10, 4)],)" msgstr "" -#: library/dataclasses.rst:410 +#: library/dataclasses.rst:413 msgid "tuple(getattr(obj, field.name) for field in dataclasses.fields(obj))" msgstr "" -#: library/dataclasses.rst:412 +#: library/dataclasses.rst:415 msgid "" ":func:`!astuple` raises :exc:`TypeError` if *obj* is not a dataclass " "instance." msgstr "" -#: library/dataclasses.rst:417 +#: library/dataclasses.rst:420 msgid "" "Creates a new dataclass with name *cls_name*, fields as defined in *fields*, " "base classes as given in *bases*, and initialized with a namespace as given " @@ -606,13 +608,13 @@ msgid "" "`@dataclass `." msgstr "" -#: library/dataclasses.rst:427 +#: library/dataclasses.rst:430 msgid "" "If *module* is defined, the :attr:`!__module__` attribute of the dataclass " "is set to that value. By default, it is set to the module name of the caller." msgstr "" -#: library/dataclasses.rst:431 +#: library/dataclasses.rst:434 msgid "" "The *decorator* parameter is a callable that will be used to create the " "dataclass. It should take the class object as a first argument and the same " @@ -620,7 +622,7 @@ msgid "" "`@dataclass ` function is used." msgstr "" -#: library/dataclasses.rst:436 +#: library/dataclasses.rst:439 msgid "" "This function is not strictly required, because any Python mechanism for " "creating a new class with :attr:`!__annotations__` can then apply the :func:" @@ -628,7 +630,7 @@ msgid "" "This function is provided as a convenience. For example::" msgstr "" -#: library/dataclasses.rst:442 +#: library/dataclasses.rst:445 msgid "" "C = make_dataclass('C',\n" " [('x', int),\n" @@ -637,11 +639,11 @@ msgid "" " namespace={'add_one': lambda self: self.x + 1})" msgstr "" -#: library/dataclasses.rst:448 +#: library/dataclasses.rst:451 msgid "Is equivalent to::" msgstr "" -#: library/dataclasses.rst:450 +#: library/dataclasses.rst:453 msgid "" "@dataclass\n" "class C:\n" @@ -653,11 +655,11 @@ msgid "" " return self.x + 1" msgstr "" -#: library/dataclasses.rst:459 +#: library/dataclasses.rst:462 msgid "Added the *decorator* parameter." msgstr "" -#: library/dataclasses.rst:464 +#: library/dataclasses.rst:467 msgid "" "Creates a new object of the same type as *obj*, replacing fields with values " "from *changes*. If *obj* is not a Data Class, raises :exc:`TypeError`. If " @@ -665,27 +667,27 @@ msgid "" "`TypeError`." msgstr "" -#: library/dataclasses.rst:469 +#: library/dataclasses.rst:472 msgid "" "The newly returned object is created by calling the :meth:`~object.__init__` " "method of the dataclass. This ensures that :meth:`__post_init__`, if " "present, is also called." msgstr "" -#: library/dataclasses.rst:473 +#: library/dataclasses.rst:476 msgid "" "Init-only variables without default values, if any exist, must be specified " "on the call to :func:`!replace` so that they can be passed to :meth:`!" "__init__` and :meth:`__post_init__`." msgstr "" -#: library/dataclasses.rst:477 +#: library/dataclasses.rst:480 msgid "" "It is an error for *changes* to contain any fields that are defined as " "having ``init=False``. A :exc:`ValueError` will be raised in this case." msgstr "" -#: library/dataclasses.rst:481 +#: library/dataclasses.rst:484 msgid "" "Be forewarned about how ``init=False`` fields work during a call to :func:`!" "replace`. They are not copied from the source object, but rather are " @@ -696,36 +698,36 @@ msgid "" "instance copying." msgstr "" -#: library/dataclasses.rst:490 +#: library/dataclasses.rst:493 msgid "" "Dataclass instances are also supported by generic function :func:`copy." "replace`." msgstr "" -#: library/dataclasses.rst:494 +#: library/dataclasses.rst:497 msgid "" "Return ``True`` if its parameter is a dataclass (including subclasses of a " "dataclass) or an instance of one, otherwise return ``False``." msgstr "" -#: library/dataclasses.rst:497 +#: library/dataclasses.rst:500 msgid "" "If you need to know if a class is an instance of a dataclass (and not a " "dataclass itself), then add a further check for ``not isinstance(obj, " "type)``::" msgstr "" -#: library/dataclasses.rst:501 +#: library/dataclasses.rst:504 msgid "" "def is_dataclass_instance(obj):\n" " return is_dataclass(obj) and not isinstance(obj, type)" msgstr "" -#: library/dataclasses.rst:506 +#: library/dataclasses.rst:509 msgid "A sentinel value signifying a missing default or default_factory." msgstr "" -#: library/dataclasses.rst:510 +#: library/dataclasses.rst:513 msgid "" "A sentinel value used as a type annotation. Any fields after a pseudo-field " "with the type of :const:`!KW_ONLY` are marked as keyword-only fields. Note " @@ -736,13 +738,13 @@ msgid "" "the class is instantiated." msgstr "" -#: library/dataclasses.rst:519 +#: library/dataclasses.rst:522 msgid "" "In this example, the fields ``y`` and ``z`` will be marked as keyword-only " "fields::" msgstr "" -#: library/dataclasses.rst:521 +#: library/dataclasses.rst:524 msgid "" "@dataclass\n" "class Point:\n" @@ -754,24 +756,24 @@ msgid "" "p = Point(0, y=1.5, z=2.0)" msgstr "" -#: library/dataclasses.rst:530 +#: library/dataclasses.rst:533 msgid "" "In a single dataclass, it is an error to specify more than one field whose " "type is :const:`!KW_ONLY`." msgstr "" -#: library/dataclasses.rst:537 +#: library/dataclasses.rst:540 msgid "" "Raised when an implicitly defined :meth:`~object.__setattr__` or :meth:" "`~object.__delattr__` is called on a dataclass which was defined with " "``frozen=True``. It is a subclass of :exc:`AttributeError`." msgstr "" -#: library/dataclasses.rst:544 +#: library/dataclasses.rst:547 msgid "Post-init processing" msgstr "" -#: library/dataclasses.rst:548 +#: library/dataclasses.rst:551 msgid "" "When defined on the class, it will be called by the generated :meth:`~object." "__init__`, normally as :meth:`!self.__post_init__`. However, if any " @@ -781,13 +783,13 @@ msgid "" "automatically be called." msgstr "" -#: library/dataclasses.rst:555 +#: library/dataclasses.rst:558 msgid "" "Among other uses, this allows for initializing field values that depend on " "one or more other fields. For example::" msgstr "" -#: library/dataclasses.rst:558 +#: library/dataclasses.rst:561 msgid "" "@dataclass\n" "class C:\n" @@ -799,7 +801,7 @@ msgid "" " self.c = self.a + self.b" msgstr "" -#: library/dataclasses.rst:567 +#: library/dataclasses.rst:570 msgid "" "The :meth:`~object.__init__` method generated by :func:`@dataclass " "` does not call base class :meth:`!__init__` methods. If the base " @@ -807,7 +809,7 @@ msgid "" "call this method in a :meth:`__post_init__` method::" msgstr "" -#: library/dataclasses.rst:572 +#: library/dataclasses.rst:575 msgid "" "class Rectangle:\n" " def __init__(self, height, width):\n" @@ -822,25 +824,25 @@ msgid "" " super().__init__(self.side, self.side)" msgstr "" -#: library/dataclasses.rst:584 +#: library/dataclasses.rst:587 msgid "" "Note, however, that in general the dataclass-generated :meth:`!__init__` " "methods don't need to be called, since the derived dataclass will take care " "of initializing all fields of any base class that is a dataclass itself." msgstr "" -#: library/dataclasses.rst:588 +#: library/dataclasses.rst:591 msgid "" "See the section below on init-only variables for ways to pass parameters to :" "meth:`!__post_init__`. Also see the warning about how :func:`replace` " "handles ``init=False`` fields." msgstr "" -#: library/dataclasses.rst:595 +#: library/dataclasses.rst:598 msgid "Class variables" msgstr "" -#: library/dataclasses.rst:597 +#: library/dataclasses.rst:600 msgid "" "One of the few places where :func:`@dataclass ` actually inspects " "the type of a field is to determine if a field is a class variable as " @@ -851,11 +853,11 @@ msgid "" "`fields` function." msgstr "" -#: library/dataclasses.rst:608 +#: library/dataclasses.rst:611 msgid "Init-only variables" msgstr "" -#: library/dataclasses.rst:610 +#: library/dataclasses.rst:613 msgid "" "Another place where :func:`@dataclass ` inspects a type " "annotation is to determine if a field is an init-only variable. It does " @@ -868,13 +870,13 @@ msgid "" "dataclasses." msgstr "" -#: library/dataclasses.rst:620 +#: library/dataclasses.rst:623 msgid "" "For example, suppose a field will be initialized from a database, if a value " "is not provided when creating the class::" msgstr "" -#: library/dataclasses.rst:623 +#: library/dataclasses.rst:626 msgid "" "@dataclass\n" "class C:\n" @@ -889,17 +891,17 @@ msgid "" "c = C(10, database=my_database)" msgstr "" -#: library/dataclasses.rst:635 +#: library/dataclasses.rst:638 msgid "" "In this case, :func:`fields` will return :class:`Field` objects for :attr:`!" "i` and :attr:`!j`, but not for :attr:`!database`." msgstr "" -#: library/dataclasses.rst:641 +#: library/dataclasses.rst:644 msgid "Frozen instances" msgstr "" -#: library/dataclasses.rst:643 +#: library/dataclasses.rst:646 msgid "" "It is not possible to create truly immutable Python objects. However, by " "passing ``frozen=True`` to the :func:`@dataclass ` decorator you " @@ -908,18 +910,18 @@ msgid "" "methods will raise a :exc:`FrozenInstanceError` when invoked." msgstr "" -#: library/dataclasses.rst:649 +#: library/dataclasses.rst:652 msgid "" "There is a tiny performance penalty when using ``frozen=True``: :meth:" "`~object.__init__` cannot use simple assignment to initialize fields, and " "must use :meth:`!object.__setattr__`." msgstr "" -#: library/dataclasses.rst:658 +#: library/dataclasses.rst:661 msgid "Inheritance" msgstr "" -#: library/dataclasses.rst:660 +#: library/dataclasses.rst:663 msgid "" "When the dataclass is being created by the :func:`@dataclass ` " "decorator, it looks through all of the class's base classes in reverse MRO " @@ -931,7 +933,7 @@ msgid "" "order, derived classes override base classes. An example::" msgstr "" -#: library/dataclasses.rst:670 +#: library/dataclasses.rst:673 msgid "" "@dataclass\n" "class Base:\n" @@ -944,28 +946,28 @@ msgid "" " x: int = 15" msgstr "" -#: library/dataclasses.rst:680 +#: library/dataclasses.rst:683 msgid "" "The final list of fields is, in order, :attr:`!x`, :attr:`!y`, :attr:`!z`. " "The final type of :attr:`!x` is :class:`int`, as specified in class :class:`!" "C`." msgstr "" -#: library/dataclasses.rst:683 +#: library/dataclasses.rst:686 msgid "" "The generated :meth:`~object.__init__` method for :class:`!C` will look " "like::" msgstr "" -#: library/dataclasses.rst:685 +#: library/dataclasses.rst:688 msgid "def __init__(self, x: int = 15, y: int = 0, z: int = 10):" msgstr "" -#: library/dataclasses.rst:688 +#: library/dataclasses.rst:691 msgid "Re-ordering of keyword-only parameters in :meth:`!__init__`" msgstr "" -#: library/dataclasses.rst:690 +#: library/dataclasses.rst:693 msgid "" "After the parameters needed for :meth:`~object.__init__` are computed, any " "keyword-only parameters are moved to come after all regular (non-keyword-" @@ -973,14 +975,14 @@ msgid "" "implemented in Python: they must come after non-keyword-only parameters." msgstr "" -#: library/dataclasses.rst:696 +#: library/dataclasses.rst:699 msgid "" "In this example, :attr:`!Base.y`, :attr:`!Base.w`, and :attr:`!D.t` are " "keyword-only fields, and :attr:`!Base.x` and :attr:`!D.z` are regular " "fields::" msgstr "" -#: library/dataclasses.rst:699 +#: library/dataclasses.rst:702 msgid "" "@dataclass\n" "class Base:\n" @@ -995,45 +997,45 @@ msgid "" " t: int = field(kw_only=True, default=0)" msgstr "" -#: library/dataclasses.rst:711 +#: library/dataclasses.rst:714 msgid "The generated :meth:`!__init__` method for :class:`!D` will look like::" msgstr "" -#: library/dataclasses.rst:713 +#: library/dataclasses.rst:716 msgid "" "def __init__(self, x: Any = 15.0, z: int = 10, *, y: int = 0, w: int = 1, t: " "int = 0):" msgstr "" -#: library/dataclasses.rst:715 +#: library/dataclasses.rst:718 msgid "" "Note that the parameters have been re-ordered from how they appear in the " "list of fields: parameters derived from regular fields are followed by " "parameters derived from keyword-only fields." msgstr "" -#: library/dataclasses.rst:719 +#: library/dataclasses.rst:722 msgid "" "The relative ordering of keyword-only parameters is maintained in the re-" "ordered :meth:`!__init__` parameter list." msgstr "" -#: library/dataclasses.rst:724 +#: library/dataclasses.rst:727 msgid "Default factory functions" msgstr "" -#: library/dataclasses.rst:726 +#: library/dataclasses.rst:729 msgid "" "If a :func:`field` specifies a *default_factory*, it is called with zero " "arguments when a default value for the field is needed. For example, to " "create a new instance of a list, use::" msgstr "" -#: library/dataclasses.rst:730 +#: library/dataclasses.rst:733 msgid "mylist: list = field(default_factory=list)" msgstr "" -#: library/dataclasses.rst:732 +#: library/dataclasses.rst:735 msgid "" "If a field is excluded from :meth:`~object.__init__` (using ``init=False``) " "and the field also specifies *default_factory*, then the default factory " @@ -1042,17 +1044,17 @@ msgid "" "initial value." msgstr "" -#: library/dataclasses.rst:739 +#: library/dataclasses.rst:742 msgid "Mutable default values" msgstr "" -#: library/dataclasses.rst:741 +#: library/dataclasses.rst:744 msgid "" "Python stores default member variable values in class attributes. Consider " "this example, not using dataclasses::" msgstr "" -#: library/dataclasses.rst:744 +#: library/dataclasses.rst:747 msgid "" "class C:\n" " x = []\n" @@ -1067,17 +1069,17 @@ msgid "" "assert o1.x is o2.x" msgstr "" -#: library/dataclasses.rst:756 +#: library/dataclasses.rst:759 msgid "" "Note that the two instances of class :class:`!C` share the same class " "variable :attr:`!x`, as expected." msgstr "" -#: library/dataclasses.rst:759 +#: library/dataclasses.rst:762 msgid "Using dataclasses, *if* this code was valid::" msgstr "" -#: library/dataclasses.rst:761 +#: library/dataclasses.rst:764 msgid "" "@dataclass\n" "class D:\n" @@ -1086,11 +1088,11 @@ msgid "" " self.x.append(element)" msgstr "" -#: library/dataclasses.rst:767 +#: library/dataclasses.rst:770 msgid "it would generate code similar to::" msgstr "" -#: library/dataclasses.rst:769 +#: library/dataclasses.rst:772 msgid "" "class D:\n" " x = []\n" @@ -1102,7 +1104,7 @@ msgid "" "assert D().x is D().x" msgstr "" -#: library/dataclasses.rst:778 +#: library/dataclasses.rst:781 msgid "" "This has the same issue as the original example using class :class:`!C`. " "That is, two instances of class :class:`!D` that do not specify a value for :" @@ -1115,13 +1117,13 @@ msgid "" "partial solution, but it does protect against many common errors." msgstr "" -#: library/dataclasses.rst:789 +#: library/dataclasses.rst:792 msgid "" "Using default factory functions is a way to create new instances of mutable " "types as default values for fields::" msgstr "" -#: library/dataclasses.rst:792 +#: library/dataclasses.rst:795 msgid "" "@dataclass\n" "class D:\n" @@ -1130,38 +1132,38 @@ msgid "" "assert D().x is not D().x" msgstr "" -#: library/dataclasses.rst:798 +#: library/dataclasses.rst:801 msgid "" "Instead of looking for and disallowing objects of type :class:`list`, :class:" "`dict`, or :class:`set`, unhashable objects are now not allowed as default " "values. Unhashability is used to approximate mutability." msgstr "" -#: library/dataclasses.rst:805 +#: library/dataclasses.rst:808 msgid "Descriptor-typed fields" msgstr "" -#: library/dataclasses.rst:807 +#: library/dataclasses.rst:810 msgid "" "Fields that are assigned :ref:`descriptor objects ` as their " "default value have the following special behaviors:" msgstr "" -#: library/dataclasses.rst:810 +#: library/dataclasses.rst:813 msgid "" "The value for the field passed to the dataclass's :meth:`~object.__init__` " "method is passed to the descriptor's :meth:`~object.__set__` method rather " "than overwriting the descriptor object." msgstr "" -#: library/dataclasses.rst:814 +#: library/dataclasses.rst:817 msgid "" "Similarly, when getting or setting the field, the descriptor's :meth:" "`~object.__get__` or :meth:`!__set__` method is called rather than returning " "or overwriting the descriptor object." msgstr "" -#: library/dataclasses.rst:818 +#: library/dataclasses.rst:821 msgid "" "To determine whether a field contains a default value, :func:`@dataclass " "` will call the descriptor's :meth:`!__get__` method using its " @@ -1171,7 +1173,7 @@ msgid "" "in this situation, no default value will be provided for the field." msgstr "" -#: library/dataclasses.rst:828 +#: library/dataclasses.rst:831 msgid "" "class IntConversionDescriptor:\n" " def __init__(self, *, default):\n" @@ -1200,7 +1202,7 @@ msgid "" "print(i.quantity_on_hand) # 2" msgstr "" -#: library/dataclasses.rst:853 +#: library/dataclasses.rst:856 msgid "" "Note that if a field is annotated with a descriptor type, but is not " "assigned a descriptor object as its default value, the field will act like a " diff --git a/library/datatypes.po b/library/datatypes.po index c0a57f54..6cdfccb5 100644 --- a/library/datatypes.po +++ b/library/datatypes.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/datetime.po b/library/datetime.po index 45f985b2..543e0c7a 100644 --- a/library/datetime.po +++ b/library/datetime.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -407,53 +407,73 @@ msgid "" "(-1, 86399, 999999)" msgstr "" -#: library/datetime.rst:599 library/datetime.rst:1797 library/datetime.rst:2418 +#: library/datetime.rst:264 +msgid "" +"Since the string representation of :class:`!timedelta` objects can be " +"confusing, use the following recipe to produce a more readable format:" +msgstr "" + +#: library/datetime.rst:267 +msgid "" +">>> def pretty_timedelta(td):\n" +"... if td.days >= 0:\n" +"... return str(td)\n" +"... return f'-({-td!s})'\n" +"...\n" +">>> d = timedelta(hours=-1)\n" +">>> str(d) # not human-friendly\n" +"'-1 day, 23:00:00'\n" +">>> pretty_timedelta(d)\n" +"'-(1:00:00)'" +msgstr "" + +#: library/datetime.rst:615 library/datetime.rst:1813 library/datetime.rst:2434 msgid "Class attributes:" msgstr "" -#: library/datetime.rst:269 +#: library/datetime.rst:285 msgid "The most negative :class:`timedelta` object, ``timedelta(-999999999)``." msgstr "" -#: library/datetime.rst:274 +#: library/datetime.rst:290 msgid "" "The most positive :class:`timedelta` object, ``timedelta(days=999999999, " "hours=23, minutes=59, seconds=59, microseconds=999999)``." msgstr "" -#: library/datetime.rst:280 +#: library/datetime.rst:296 msgid "" "The smallest possible difference between non-equal :class:`timedelta` " "objects, ``timedelta(microseconds=1)``." msgstr "" -#: library/datetime.rst:283 +#: library/datetime.rst:299 msgid "" "Note that, because of normalization, ``timedelta.max`` is greater than ``-" "timedelta.min``. ``-timedelta.max`` is not representable as a :class:" "`timedelta` object." msgstr "" -#: library/datetime.rst:617 library/datetime.rst:1817 +#: library/datetime.rst:633 library/datetime.rst:1833 msgid "Instance attributes (read-only):" msgstr "" -#: library/datetime.rst:291 +#: library/datetime.rst:307 msgid "Between -999,999,999 and 999,999,999 inclusive." msgstr "" -#: library/datetime.rst:296 +#: library/datetime.rst:312 msgid "Between 0 and 86,399 inclusive." msgstr "" -#: library/datetime.rst:300 +#: library/datetime.rst:316 msgid "" "It is a somewhat common bug for code to unintentionally use this attribute " "when it is actually intended to get a :meth:`~timedelta.total_seconds` value " "instead:" msgstr "" -#: library/datetime.rst:304 +#: library/datetime.rst:320 msgid "" ">>> from datetime import timedelta\n" ">>> duration = timedelta(seconds=11235813)\n" @@ -463,190 +483,190 @@ msgid "" "11235813.0" msgstr "" -#: library/datetime.rst:315 +#: library/datetime.rst:331 msgid "Between 0 and 999,999 inclusive." msgstr "" -#: library/datetime.rst:634 library/datetime.rst:1232 +#: library/datetime.rst:650 library/datetime.rst:1248 msgid "Supported operations:" msgstr "" -#: library/datetime.rst:637 library/datetime.rst:1235 +#: library/datetime.rst:653 library/datetime.rst:1251 msgid "Operation" msgstr "" -#: library/datetime.rst:637 library/datetime.rst:1235 +#: library/datetime.rst:653 library/datetime.rst:1251 msgid "Result" msgstr "" -#: library/datetime.rst:325 +#: library/datetime.rst:341 msgid "``t1 = t2 + t3``" msgstr "" -#: library/datetime.rst:325 +#: library/datetime.rst:341 msgid "" "Sum of ``t2`` and ``t3``. Afterwards ``t1 - t2 == t3`` and ``t1 - t3 == t2`` " "are true. (1)" msgstr "" -#: library/datetime.rst:329 +#: library/datetime.rst:345 msgid "``t1 = t2 - t3``" msgstr "" -#: library/datetime.rst:329 +#: library/datetime.rst:345 msgid "" "Difference of ``t2`` and ``t3``. Afterwards ``t1 == t2 - t3`` and ``t2 == " "t1 + t3`` are true. (1)(6)" msgstr "" -#: library/datetime.rst:333 +#: library/datetime.rst:349 msgid "``t1 = t2 * i or t1 = i * t2``" msgstr "" -#: library/datetime.rst:333 +#: library/datetime.rst:349 msgid "" "Delta multiplied by an integer. Afterwards ``t1 // i == t2`` is true, " "provided ``i != 0``." msgstr "" -#: library/datetime.rst:337 +#: library/datetime.rst:353 msgid "In general, ``t1 * i == t1 * (i-1) + t1`` is true. (1)" msgstr "" -#: library/datetime.rst:340 +#: library/datetime.rst:356 msgid "``t1 = t2 * f or t1 = f * t2``" msgstr "" -#: library/datetime.rst:340 +#: library/datetime.rst:356 msgid "" "Delta multiplied by a float. The result is rounded to the nearest multiple " "of timedelta.resolution using round-half-to-even." msgstr "" -#: library/datetime.rst:344 +#: library/datetime.rst:360 msgid "``f = t2 / t3``" msgstr "" -#: library/datetime.rst:344 +#: library/datetime.rst:360 msgid "" "Division (3) of overall duration ``t2`` by interval unit ``t3``. Returns a :" "class:`float` object." msgstr "" -#: library/datetime.rst:348 +#: library/datetime.rst:364 msgid "``t1 = t2 / f or t1 = t2 / i``" msgstr "" -#: library/datetime.rst:348 +#: library/datetime.rst:364 msgid "" "Delta divided by a float or an int. The result is rounded to the nearest " "multiple of timedelta.resolution using round-half-to-even." msgstr "" -#: library/datetime.rst:352 +#: library/datetime.rst:368 msgid "``t1 = t2 // i`` or ``t1 = t2 // t3``" msgstr "" -#: library/datetime.rst:352 +#: library/datetime.rst:368 msgid "" "The floor is computed and the remainder (if any) is thrown away. In the " "second case, an integer is returned. (3)" msgstr "" -#: library/datetime.rst:356 +#: library/datetime.rst:372 msgid "``t1 = t2 % t3``" msgstr "" -#: library/datetime.rst:356 +#: library/datetime.rst:372 msgid "The remainder is computed as a :class:`timedelta` object. (3)" msgstr "" -#: library/datetime.rst:359 +#: library/datetime.rst:375 msgid "``q, r = divmod(t1, t2)``" msgstr "" -#: library/datetime.rst:359 +#: library/datetime.rst:375 msgid "" "Computes the quotient and the remainder: ``q = t1 // t2`` (3) and ``r = t1 % " "t2``. ``q`` is an integer and ``r`` is a :class:`timedelta` object." msgstr "" -#: library/datetime.rst:364 +#: library/datetime.rst:380 msgid "``+t1``" msgstr "" -#: library/datetime.rst:364 +#: library/datetime.rst:380 msgid "Returns a :class:`timedelta` object with the same value. (2)" msgstr "" -#: library/datetime.rst:367 +#: library/datetime.rst:383 msgid "``-t1``" msgstr "" -#: library/datetime.rst:367 +#: library/datetime.rst:383 msgid "" "Equivalent to ``timedelta(-t1.days, -t1.seconds, -t1.microseconds)``, and to " "``t1 * -1``. (1)(4)" msgstr "" -#: library/datetime.rst:371 +#: library/datetime.rst:387 msgid "``abs(t)``" msgstr "" -#: library/datetime.rst:371 +#: library/datetime.rst:387 msgid "" "Equivalent to ``+t`` when ``t.days >= 0``, and to ``-t`` when ``t.days < " "0``. (2)" msgstr "" -#: library/datetime.rst:374 +#: library/datetime.rst:390 msgid "``str(t)``" msgstr "" -#: library/datetime.rst:374 +#: library/datetime.rst:390 msgid "" "Returns a string in the form ``[D day[s], ][H]H:MM:SS[.UUUUUU]``, where D is " "negative for negative ``t``. (5)" msgstr "" -#: library/datetime.rst:378 +#: library/datetime.rst:394 msgid "``repr(t)``" msgstr "" -#: library/datetime.rst:378 +#: library/datetime.rst:394 msgid "" "Returns a string representation of the :class:`timedelta` object as a " "constructor call with canonical attribute values." msgstr "" -#: library/datetime.rst:656 library/datetime.rst:2647 +#: library/datetime.rst:672 library/datetime.rst:2663 msgid "Notes:" msgstr "" -#: library/datetime.rst:387 +#: library/datetime.rst:403 msgid "This is exact but may overflow." msgstr "" -#: library/datetime.rst:390 +#: library/datetime.rst:406 msgid "This is exact and cannot overflow." msgstr "" -#: library/datetime.rst:393 +#: library/datetime.rst:409 msgid "Division by zero raises :exc:`ZeroDivisionError`." msgstr "" -#: library/datetime.rst:396 +#: library/datetime.rst:412 msgid "``-timedelta.max`` is not representable as a :class:`timedelta` object." msgstr "" -#: library/datetime.rst:399 +#: library/datetime.rst:415 msgid "" "String representations of :class:`timedelta` objects are normalized " "similarly to their internal representation. This leads to somewhat unusual " "results for negative timedeltas. For example::" msgstr "" -#: library/datetime.rst:403 +#: library/datetime.rst:419 msgid "" ">>> timedelta(hours=-5)\n" "datetime.timedelta(days=-1, seconds=68400)\n" @@ -654,21 +674,21 @@ msgid "" "-1 day, 19:00:00" msgstr "" -#: library/datetime.rst:409 +#: library/datetime.rst:425 msgid "" "The expression ``t2 - t3`` will always be equal to the expression ``t2 + (-" "t3)`` except when t3 is equal to ``timedelta.max``; in that case the former " "will produce a result while the latter will overflow." msgstr "" -#: library/datetime.rst:413 +#: library/datetime.rst:429 msgid "" "In addition to the operations listed above, :class:`timedelta` objects " "support certain additions and subtractions with :class:`date` and :class:`." "datetime` objects (see below)." msgstr "" -#: library/datetime.rst:417 +#: library/datetime.rst:433 msgid "" "Floor division and true division of a :class:`timedelta` object by another :" "class:`timedelta` object are now supported, as are remainder operations and " @@ -676,42 +696,42 @@ msgid "" "`timedelta` object by a :class:`float` object are now supported." msgstr "" -#: library/datetime.rst:423 +#: library/datetime.rst:439 msgid ":class:`timedelta` objects support equality and order comparisons." msgstr "" -#: library/datetime.rst:425 +#: library/datetime.rst:441 msgid "" "In Boolean contexts, a :class:`timedelta` object is considered to be true if " "and only if it isn't equal to ``timedelta(0)``." msgstr "" -#: library/datetime.rst:698 library/datetime.rst:1940 +#: library/datetime.rst:714 library/datetime.rst:1956 msgid "Instance methods:" msgstr "" -#: library/datetime.rst:432 +#: library/datetime.rst:448 msgid "" "Return the total number of seconds contained in the duration. Equivalent to " "``td / timedelta(seconds=1)``. For interval units other than seconds, use " "the division form directly (e.g. ``td / timedelta(microseconds=1)``)." msgstr "" -#: library/datetime.rst:436 +#: library/datetime.rst:452 msgid "" "Note that for very large time intervals (greater than 270 years on most " "platforms) this method will lose microsecond accuracy." msgstr "" -#: library/datetime.rst:442 +#: library/datetime.rst:458 msgid "Examples of usage: :class:`timedelta`" msgstr "" -#: library/datetime.rst:444 +#: library/datetime.rst:460 msgid "An additional example of normalization::" msgstr "" -#: library/datetime.rst:446 +#: library/datetime.rst:462 msgid "" ">>> # Components of another_year add up to exactly 365 days\n" ">>> from datetime import timedelta\n" @@ -724,11 +744,11 @@ msgid "" "31536000.0" msgstr "" -#: library/datetime.rst:456 +#: library/datetime.rst:472 msgid "Examples of :class:`timedelta` arithmetic::" msgstr "" -#: library/datetime.rst:458 +#: library/datetime.rst:474 msgid "" ">>> from datetime import timedelta\n" ">>> year = timedelta(days=365)\n" @@ -745,65 +765,65 @@ msgid "" "(datetime.timedelta(days=1095), 3)" msgstr "" -#: library/datetime.rst:475 +#: library/datetime.rst:491 msgid ":class:`date` Objects" msgstr "" -#: library/datetime.rst:477 +#: library/datetime.rst:493 msgid "" "A :class:`date` object represents a date (year, month and day) in an " "idealized calendar, the current Gregorian calendar indefinitely extended in " "both directions." msgstr "" -#: library/datetime.rst:481 +#: library/datetime.rst:497 msgid "" "January 1 of year 1 is called day number 1, January 2 of year 1 is called " "day number 2, and so on. [#]_" msgstr "" -#: library/datetime.rst:486 +#: library/datetime.rst:502 msgid "" "All arguments are required. Arguments must be integers, in the following " "ranges:" msgstr "" -#: library/datetime.rst:489 +#: library/datetime.rst:505 msgid "``MINYEAR <= year <= MAXYEAR``" msgstr "" -#: library/datetime.rst:490 +#: library/datetime.rst:506 msgid "``1 <= month <= 12``" msgstr "" -#: library/datetime.rst:491 +#: library/datetime.rst:507 msgid "``1 <= day <= number of days in the given month and year``" msgstr "" -#: library/datetime.rst:916 +#: library/datetime.rst:932 msgid "" "If an argument outside those ranges is given, :exc:`ValueError` is raised." msgstr "" -#: library/datetime.rst:921 +#: library/datetime.rst:937 msgid "Other constructors, all class methods:" msgstr "" -#: library/datetime.rst:500 +#: library/datetime.rst:516 msgid "Return the current local date." msgstr "" -#: library/datetime.rst:502 +#: library/datetime.rst:518 msgid "This is equivalent to ``date.fromtimestamp(time.time())``." msgstr "" -#: library/datetime.rst:506 +#: library/datetime.rst:522 msgid "" "Return the local date corresponding to the POSIX timestamp, such as is " "returned by :func:`time.time`." msgstr "" -#: library/datetime.rst:509 +#: library/datetime.rst:525 msgid "" "This may raise :exc:`OverflowError`, if the timestamp is out of the range of " "values supported by the platform C :c:func:`localtime` function, and :exc:" @@ -813,7 +833,7 @@ msgid "" "ignored by :meth:`fromtimestamp`." msgstr "" -#: library/datetime.rst:516 +#: library/datetime.rst:532 msgid "" "Raise :exc:`OverflowError` instead of :exc:`ValueError` if the timestamp is " "out of the range of values supported by the platform C :c:func:`localtime` " @@ -821,44 +841,44 @@ msgid "" "`localtime` failure." msgstr "" -#: library/datetime.rst:525 +#: library/datetime.rst:541 msgid "" "Return the date corresponding to the proleptic Gregorian ordinal, where " "January 1 of year 1 has ordinal 1." msgstr "" -#: library/datetime.rst:528 +#: library/datetime.rst:544 msgid "" ":exc:`ValueError` is raised unless ``1 <= ordinal <= date.max.toordinal()``. " "For any date ``d``, ``date.fromordinal(d.toordinal()) == d``." msgstr "" -#: library/datetime.rst:535 +#: library/datetime.rst:551 msgid "" "Return a :class:`date` corresponding to a *date_string* given in any valid " "ISO 8601 format, with the following exceptions:" msgstr "" -#: library/datetime.rst:1081 +#: library/datetime.rst:1097 msgid "" "Reduced precision dates are not currently supported (``YYYY-MM``, ``YYYY``)." msgstr "" -#: library/datetime.rst:1083 +#: library/datetime.rst:1099 msgid "" "Extended date representations are not currently supported (``±YYYYYY-MM-" "DD``)." msgstr "" -#: library/datetime.rst:1085 +#: library/datetime.rst:1101 msgid "Ordinal dates are not currently supported (``YYYY-OOO``)." msgstr "" -#: library/datetime.rst:1087 library/datetime.rst:1553 +#: library/datetime.rst:1103 library/datetime.rst:1569 msgid "Examples::" msgstr "" -#: library/datetime.rst:546 +#: library/datetime.rst:562 msgid "" ">>> from datetime import date\n" ">>> date.fromisoformat('2019-12-04')\n" @@ -869,35 +889,35 @@ msgid "" "datetime.date(2021, 1, 4)" msgstr "" -#: library/datetime.rst:555 +#: library/datetime.rst:571 msgid "Previously, this method only supported the format ``YYYY-MM-DD``." msgstr "" -#: library/datetime.rst:560 +#: library/datetime.rst:576 msgid "" "Return a :class:`date` corresponding to the ISO calendar date specified by " "year, week and day. This is the inverse of the function :meth:`date." "isocalendar`." msgstr "" -#: library/datetime.rst:567 +#: library/datetime.rst:583 msgid "" "Return a :class:`.date` corresponding to *date_string*, parsed according to " "*format*. This is equivalent to::" msgstr "" -#: library/datetime.rst:570 +#: library/datetime.rst:586 msgid "date(*(time.strptime(date_string, format)[0:3]))" msgstr "" -#: library/datetime.rst:572 +#: library/datetime.rst:588 msgid "" ":exc:`ValueError` is raised if the date_string and format can't be parsed " "by :func:`time.strptime` or if it returns a value which isn't a time tuple. " "See also :ref:`strftime-strptime-behavior` and :meth:`date.fromisoformat`." msgstr "" -#: library/datetime.rst:579 +#: library/datetime.rst:595 msgid "" "If *format* specifies a day of month without a year a :exc:" "`DeprecationWarning` is emitted. This is to avoid a quadrennial leap year " @@ -908,7 +928,7 @@ msgid "" "year, explicitly add a year that is a leap year before parsing:" msgstr "" -#: library/datetime.rst:588 +#: library/datetime.rst:604 msgid "" ">>> from datetime import date\n" ">>> date_string = \"02/29\"\n" @@ -918,53 +938,53 @@ msgid "" "'February 29'" msgstr "" -#: library/datetime.rst:603 +#: library/datetime.rst:619 msgid "The earliest representable date, ``date(MINYEAR, 1, 1)``." msgstr "" -#: library/datetime.rst:608 +#: library/datetime.rst:624 msgid "The latest representable date, ``date(MAXYEAR, 12, 31)``." msgstr "" -#: library/datetime.rst:613 +#: library/datetime.rst:629 msgid "" "The smallest possible difference between non-equal date objects, " "``timedelta(days=1)``." msgstr "" -#: library/datetime.rst:1183 +#: library/datetime.rst:1199 msgid "Between :const:`MINYEAR` and :const:`MAXYEAR` inclusive." msgstr "" -#: library/datetime.rst:1188 +#: library/datetime.rst:1204 msgid "Between 1 and 12 inclusive." msgstr "" -#: library/datetime.rst:1193 +#: library/datetime.rst:1209 msgid "Between 1 and the number of days in the given month of the given year." msgstr "" -#: library/datetime.rst:639 +#: library/datetime.rst:655 msgid "``date2 = date1 + timedelta``" msgstr "" -#: library/datetime.rst:639 +#: library/datetime.rst:655 msgid "``date2`` will be ``timedelta.days`` days after ``date1``. (1)" msgstr "" -#: library/datetime.rst:642 +#: library/datetime.rst:658 msgid "``date2 = date1 - timedelta``" msgstr "" -#: library/datetime.rst:642 +#: library/datetime.rst:658 msgid "Computes ``date2`` such that ``date2 + timedelta == date1``. (2)" msgstr "" -#: library/datetime.rst:645 +#: library/datetime.rst:661 msgid "``timedelta = date1 - date2``" msgstr "" -#: library/datetime.rst:1241 +#: library/datetime.rst:1257 msgid "\\(3)" msgstr "" @@ -976,7 +996,7 @@ msgstr "" msgid "``date1 != date2``" msgstr "" -#: library/datetime.rst:1243 +#: library/datetime.rst:1259 msgid "Equality comparison. (4)" msgstr "" @@ -996,11 +1016,11 @@ msgstr "" msgid "``date1 >= date2``" msgstr "" -#: library/datetime.rst:1246 +#: library/datetime.rst:1262 msgid "Order comparison. (5)" msgstr "" -#: library/datetime.rst:659 +#: library/datetime.rst:675 msgid "" "*date2* is moved forward in time if ``timedelta.days > 0``, or backward if " "``timedelta.days < 0``. Afterward ``date2 - date1 == timedelta.days``. " @@ -1009,41 +1029,41 @@ msgid "" "`MINYEAR` or larger than :const:`MAXYEAR`." msgstr "" -#: library/datetime.rst:666 +#: library/datetime.rst:682 msgid "``timedelta.seconds`` and ``timedelta.microseconds`` are ignored." msgstr "" -#: library/datetime.rst:669 +#: library/datetime.rst:685 msgid "" "This is exact, and cannot overflow. ``timedelta.seconds`` and ``timedelta." "microseconds`` are 0, and ``date2 + timedelta == date1`` after." msgstr "" -#: library/datetime.rst:673 +#: library/datetime.rst:689 msgid ":class:`date` objects are equal if they represent the same date." msgstr "" -#: library/datetime.rst:675 +#: library/datetime.rst:691 msgid "" ":class:`!date` objects that are not also :class:`.datetime` instances are " "never equal to :class:`!datetime` objects, even if they represent the same " "date." msgstr "" -#: library/datetime.rst:680 +#: library/datetime.rst:696 msgid "" "*date1* is considered less than *date2* when *date1* precedes *date2* in " "time. In other words, ``date1 < date2`` if and only if ``date1.toordinal() < " "date2.toordinal()``." msgstr "" -#: library/datetime.rst:684 +#: library/datetime.rst:700 msgid "" "Order comparison between a :class:`!date` object that is not also a :class:`." "datetime` instance and a :class:`!datetime` object raises :exc:`TypeError`." msgstr "" -#: library/datetime.rst:1314 +#: library/datetime.rst:1330 msgid "" "Comparison between :class:`.datetime` object and an instance of the :class:" "`date` subclass that is not a :class:`!datetime` subclass no longer converts " @@ -1052,22 +1072,22 @@ msgid "" "in subclasses." msgstr "" -#: library/datetime.rst:696 +#: library/datetime.rst:712 msgid "" "In Boolean contexts, all :class:`date` objects are considered to be true." msgstr "" -#: library/datetime.rst:702 +#: library/datetime.rst:718 msgid "" "Return a new :class:`date` object with the same values, but with specified " "parameters updated." msgstr "" -#: library/datetime.rst:1986 +#: library/datetime.rst:2002 msgid "Example::" msgstr "" -#: library/datetime.rst:707 +#: library/datetime.rst:723 msgid "" ">>> from datetime import date\n" ">>> d = date(2002, 12, 31)\n" @@ -1075,70 +1095,70 @@ msgid "" "datetime.date(2002, 12, 26)" msgstr "" -#: library/datetime.rst:712 +#: library/datetime.rst:728 msgid "" "The generic function :func:`copy.replace` also supports :class:`date` " "objects." msgstr "" -#: library/datetime.rst:1438 +#: library/datetime.rst:1454 msgid "" "Return a :class:`time.struct_time` such as returned by :func:`time." "localtime`." msgstr "" -#: library/datetime.rst:720 +#: library/datetime.rst:736 msgid "The hours, minutes and seconds are 0, and the DST flag is -1." msgstr "" -#: library/datetime.rst:1440 +#: library/datetime.rst:1456 msgid "``d.timetuple()`` is equivalent to::" msgstr "" -#: library/datetime.rst:724 +#: library/datetime.rst:740 msgid "" "time.struct_time((d.year, d.month, d.day, 0, 0, 0, d.weekday(), yday, -1))" msgstr "" -#: library/datetime.rst:726 +#: library/datetime.rst:742 msgid "" "where ``yday = d.toordinal() - date(d.year, 1, 1).toordinal() + 1`` is the " "day number within the current year starting with 1 for January 1st." msgstr "" -#: library/datetime.rst:732 +#: library/datetime.rst:748 msgid "" "Return the proleptic Gregorian ordinal of the date, where January 1 of year " "1 has ordinal 1. For any :class:`date` object ``d``, ``date.fromordinal(d." "toordinal()) == d``." msgstr "" -#: library/datetime.rst:739 +#: library/datetime.rst:755 msgid "" "Return the day of the week as an integer, where Monday is 0 and Sunday is 6. " "For example, ``date(2002, 12, 4).weekday() == 2``, a Wednesday. See also :" "meth:`isoweekday`." msgstr "" -#: library/datetime.rst:746 +#: library/datetime.rst:762 msgid "" "Return the day of the week as an integer, where Monday is 1 and Sunday is 7. " "For example, ``date(2002, 12, 4).isoweekday() == 3``, a Wednesday. See also :" "meth:`weekday`, :meth:`isocalendar`." msgstr "" -#: library/datetime.rst:753 +#: library/datetime.rst:769 msgid "" "Return a :term:`named tuple` object with three components: ``year``, " "``week`` and ``weekday``." msgstr "" -#: library/datetime.rst:756 +#: library/datetime.rst:772 msgid "" "The ISO calendar is a widely used variant of the Gregorian calendar. [#]_" msgstr "" -#: library/datetime.rst:758 +#: library/datetime.rst:774 msgid "" "The ISO year consists of 52 or 53 full weeks, and where a week starts on a " "Monday and ends on a Sunday. The first week of an ISO year is the first " @@ -1147,13 +1167,13 @@ msgid "" "Gregorian year." msgstr "" -#: library/datetime.rst:763 +#: library/datetime.rst:779 msgid "" "For example, 2004 begins on a Thursday, so the first week of ISO year 2004 " "begins on Monday, 29 Dec 2003 and ends on Sunday, 4 Jan 2004::" msgstr "" -#: library/datetime.rst:766 +#: library/datetime.rst:782 msgid "" ">>> from datetime import date\n" ">>> date(2003, 12, 29).isocalendar()\n" @@ -1162,53 +1182,53 @@ msgid "" "datetime.IsoCalendarDate(year=2004, week=1, weekday=7)" msgstr "" -#: library/datetime.rst:772 +#: library/datetime.rst:788 msgid "Result changed from a tuple to a :term:`named tuple`." msgstr "" -#: library/datetime.rst:777 +#: library/datetime.rst:793 msgid "" "Return a string representing the date in ISO 8601 format, ``YYYY-MM-DD``::" msgstr "" -#: library/datetime.rst:779 +#: library/datetime.rst:795 msgid "" ">>> from datetime import date\n" ">>> date(2002, 12, 4).isoformat()\n" "'2002-12-04'" msgstr "" -#: library/datetime.rst:785 +#: library/datetime.rst:801 msgid "For a date ``d``, ``str(d)`` is equivalent to ``d.isoformat()``." msgstr "" -#: library/datetime.rst:790 +#: library/datetime.rst:806 msgid "Return a string representing the date::" msgstr "" -#: library/datetime.rst:792 +#: library/datetime.rst:808 msgid "" ">>> from datetime import date\n" ">>> date(2002, 12, 4).ctime()\n" "'Wed Dec 4 00:00:00 2002'" msgstr "" -#: library/datetime.rst:1624 +#: library/datetime.rst:1640 msgid "``d.ctime()`` is equivalent to::" msgstr "" -#: library/datetime.rst:1626 +#: library/datetime.rst:1642 msgid "time.ctime(time.mktime(d.timetuple()))" msgstr "" -#: library/datetime.rst:800 +#: library/datetime.rst:816 msgid "" "on platforms where the native C :c:func:`ctime` function (which :func:`time." "ctime` invokes, but which :meth:`date.ctime` does not invoke) conforms to " "the C standard." msgstr "" -#: library/datetime.rst:807 +#: library/datetime.rst:823 msgid "" "Return a string representing the date, controlled by an explicit format " "string. Format codes referring to hours, minutes or seconds will see 0 " @@ -1216,7 +1236,7 @@ msgid "" "isoformat`." msgstr "" -#: library/datetime.rst:814 +#: library/datetime.rst:830 msgid "" "Same as :meth:`.date.strftime`. This makes it possible to specify a format " "string for a :class:`.date` object in :ref:`formatted string literals >> import time\n" ">>> from datetime import date\n" @@ -1252,11 +1272,11 @@ msgid "" "202" msgstr "" -#: library/datetime.rst:841 +#: library/datetime.rst:857 msgid "More examples of working with :class:`date`:" msgstr "" -#: library/datetime.rst:843 +#: library/datetime.rst:859 msgid "" ">>> from datetime import date\n" ">>> d = date.fromordinal(730920) # 730920th day after 1. 1. 0001\n" @@ -1300,17 +1320,17 @@ msgid "" "datetime.date(2005, 3, 11)" msgstr "" -#: library/datetime.rst:890 +#: library/datetime.rst:906 msgid ":class:`.datetime` Objects" msgstr "" -#: library/datetime.rst:892 +#: library/datetime.rst:908 msgid "" "A :class:`.datetime` object is a single object containing all the " "information from a :class:`date` object and a :class:`.time` object." msgstr "" -#: library/datetime.rst:895 +#: library/datetime.rst:911 msgid "" "Like a :class:`date` object, :class:`.datetime` assumes the current " "Gregorian calendar extended in both directions; like a :class:`.time` " @@ -1318,80 +1338,80 @@ msgid "" "every day." msgstr "" -#: library/datetime.rst:899 +#: library/datetime.rst:915 msgid "Constructor:" msgstr "" -#: library/datetime.rst:903 +#: library/datetime.rst:919 msgid "" "The *year*, *month* and *day* arguments are required. *tzinfo* may be " "``None``, or an instance of a :class:`tzinfo` subclass. The remaining " "arguments must be integers in the following ranges:" msgstr "" -#: library/datetime.rst:907 +#: library/datetime.rst:923 msgid "``MINYEAR <= year <= MAXYEAR``," msgstr "" -#: library/datetime.rst:908 +#: library/datetime.rst:924 msgid "``1 <= month <= 12``," msgstr "" -#: library/datetime.rst:909 +#: library/datetime.rst:925 msgid "``1 <= day <= number of days in the given month and year``," msgstr "" -#: library/datetime.rst:1788 +#: library/datetime.rst:1804 msgid "``0 <= hour < 24``," msgstr "" -#: library/datetime.rst:1789 +#: library/datetime.rst:1805 msgid "``0 <= minute < 60``," msgstr "" -#: library/datetime.rst:1790 +#: library/datetime.rst:1806 msgid "``0 <= second < 60``," msgstr "" -#: library/datetime.rst:1791 +#: library/datetime.rst:1807 msgid "``0 <= microsecond < 1000000``," msgstr "" -#: library/datetime.rst:1792 +#: library/datetime.rst:1808 msgid "``fold in [0, 1]``." msgstr "" -#: library/datetime.rst:1359 library/datetime.rst:1953 +#: library/datetime.rst:1375 library/datetime.rst:1969 msgid "Added the *fold* parameter." msgstr "" -#: library/datetime.rst:925 +#: library/datetime.rst:941 msgid "Return the current local date and time, with :attr:`.tzinfo` ``None``." msgstr "" -#: library/datetime.rst:927 +#: library/datetime.rst:943 msgid "Equivalent to::" msgstr "" -#: library/datetime.rst:929 +#: library/datetime.rst:945 msgid "datetime.fromtimestamp(time.time())" msgstr "" -#: library/datetime.rst:931 +#: library/datetime.rst:947 msgid "See also :meth:`now`, :meth:`fromtimestamp`." msgstr "" -#: library/datetime.rst:933 +#: library/datetime.rst:949 msgid "" "This method is functionally equivalent to :meth:`now`, but without a ``tz`` " "parameter." msgstr "" -#: library/datetime.rst:938 +#: library/datetime.rst:954 msgid "Return the current local date and time." msgstr "" -#: library/datetime.rst:940 +#: library/datetime.rst:956 msgid "" "If optional argument *tz* is ``None`` or not specified, this is like :meth:" "`today`, but, if possible, supplies more precision than can be gotten from " @@ -1399,34 +1419,34 @@ msgid "" "possible on platforms supplying the C :c:func:`gettimeofday` function)." msgstr "" -#: library/datetime.rst:946 +#: library/datetime.rst:962 msgid "" "If *tz* is not ``None``, it must be an instance of a :class:`tzinfo` " "subclass, and the current date and time are converted to *tz*’s time zone." msgstr "" -#: library/datetime.rst:949 +#: library/datetime.rst:965 msgid "This function is preferred over :meth:`today` and :meth:`utcnow`." msgstr "" -#: library/datetime.rst:953 +#: library/datetime.rst:969 msgid "" "Subsequent calls to :meth:`!datetime.now` may return the same instant " "depending on the precision of the underlying clock." msgstr "" -#: library/datetime.rst:958 +#: library/datetime.rst:974 msgid "Return the current UTC date and time, with :attr:`.tzinfo` ``None``." msgstr "" -#: library/datetime.rst:960 +#: library/datetime.rst:976 msgid "" "This is like :meth:`now`, but returns the current UTC date and time, as a " "naive :class:`.datetime` object. An aware current UTC datetime can be " "obtained by calling ``datetime.now(timezone.utc)``. See also :meth:`now`." msgstr "" -#: library/datetime.rst:966 +#: library/datetime.rst:982 msgid "" "Because naive ``datetime`` objects are treated by many ``datetime`` methods " "as local times, it is preferred to use aware datetimes to represent times in " @@ -1434,11 +1454,11 @@ msgid "" "current time in UTC is by calling ``datetime.now(timezone.utc)``." msgstr "" -#: library/datetime.rst:973 +#: library/datetime.rst:989 msgid "Use :meth:`datetime.now` with :const:`UTC` instead." msgstr "" -#: library/datetime.rst:978 +#: library/datetime.rst:994 msgid "" "Return the local date and time corresponding to the POSIX timestamp, such as " "is returned by :func:`time.time`. If optional argument *tz* is ``None`` or " @@ -1446,13 +1466,13 @@ msgid "" "time, and the returned :class:`.datetime` object is naive." msgstr "" -#: library/datetime.rst:983 +#: library/datetime.rst:999 msgid "" "If *tz* is not ``None``, it must be an instance of a :class:`tzinfo` " "subclass, and the timestamp is converted to *tz*’s time zone." msgstr "" -#: library/datetime.rst:986 +#: library/datetime.rst:1002 msgid "" ":meth:`fromtimestamp` may raise :exc:`OverflowError`, if the timestamp is " "out of the range of values supported by the platform C :c:func:`localtime` " @@ -1465,7 +1485,7 @@ msgid "" "preferred over :meth:`utcfromtimestamp`." msgstr "" -#: library/datetime.rst:997 +#: library/datetime.rst:1013 msgid "" "Raise :exc:`OverflowError` instead of :exc:`ValueError` if the timestamp is " "out of the range of values supported by the platform C :c:func:`localtime` " @@ -1473,17 +1493,17 @@ msgid "" "`ValueError` on :c:func:`localtime` or :c:func:`gmtime` failure." msgstr "" -#: library/datetime.rst:1004 +#: library/datetime.rst:1020 msgid ":meth:`fromtimestamp` may return instances with :attr:`.fold` set to 1." msgstr "" -#: library/datetime.rst:1009 +#: library/datetime.rst:1025 msgid "" "Return the UTC :class:`.datetime` corresponding to the POSIX timestamp, " "with :attr:`.tzinfo` ``None``. (The resulting object is naive.)" msgstr "" -#: library/datetime.rst:1012 +#: library/datetime.rst:1028 msgid "" "This may raise :exc:`OverflowError`, if the timestamp is out of the range of " "values supported by the platform C :c:func:`gmtime` function, and :exc:" @@ -1491,32 +1511,32 @@ msgid "" "to years in 1970 through 2038." msgstr "" -#: library/datetime.rst:1017 +#: library/datetime.rst:1033 msgid "To get an aware :class:`.datetime` object, call :meth:`fromtimestamp`::" msgstr "" -#: library/datetime.rst:1019 +#: library/datetime.rst:1035 msgid "datetime.fromtimestamp(timestamp, timezone.utc)" msgstr "" -#: library/datetime.rst:1021 +#: library/datetime.rst:1037 msgid "" "On the POSIX compliant platforms, it is equivalent to the following " "expression::" msgstr "" -#: library/datetime.rst:1024 +#: library/datetime.rst:1040 msgid "" "datetime(1970, 1, 1, tzinfo=timezone.utc) + timedelta(seconds=timestamp)" msgstr "" -#: library/datetime.rst:1026 +#: library/datetime.rst:1042 msgid "" "except the latter formula always supports the full years range: between :" "const:`MINYEAR` and :const:`MAXYEAR` inclusive." msgstr "" -#: library/datetime.rst:1031 +#: library/datetime.rst:1047 msgid "" "Because naive ``datetime`` objects are treated by many ``datetime`` methods " "as local times, it is preferred to use aware datetimes to represent times in " @@ -1525,7 +1545,7 @@ msgid "" "tz=timezone.utc)``." msgstr "" -#: library/datetime.rst:1037 +#: library/datetime.rst:1053 msgid "" "Raise :exc:`OverflowError` instead of :exc:`ValueError` if the timestamp is " "out of the range of values supported by the platform C :c:func:`gmtime` " @@ -1533,11 +1553,11 @@ msgid "" "`gmtime` failure." msgstr "" -#: library/datetime.rst:1045 +#: library/datetime.rst:1061 msgid "Use :meth:`datetime.fromtimestamp` with :const:`UTC` instead." msgstr "" -#: library/datetime.rst:1050 +#: library/datetime.rst:1066 msgid "" "Return the :class:`.datetime` corresponding to the proleptic Gregorian " "ordinal, where January 1 of year 1 has ordinal 1. :exc:`ValueError` is " @@ -1546,7 +1566,7 @@ msgid "" "is ``None``." msgstr "" -#: library/datetime.rst:1058 +#: library/datetime.rst:1074 msgid "" "Return a new :class:`.datetime` object whose date components are equal to " "the given :class:`date` object's, and whose time components are equal to the " @@ -1557,35 +1577,35 @@ msgid "" "attr:`.tzinfo` attributes are ignored." msgstr "" -#: library/datetime.rst:1066 +#: library/datetime.rst:1082 msgid "" "For any :class:`.datetime` object ``d``, ``d == datetime.combine(d.date(), d." "time(), d.tzinfo)``." msgstr "" -#: library/datetime.rst:1069 +#: library/datetime.rst:1085 msgid "Added the *tzinfo* argument." msgstr "" -#: library/datetime.rst:1075 +#: library/datetime.rst:1091 msgid "" "Return a :class:`.datetime` corresponding to a *date_string* in any valid " "ISO 8601 format, with the following exceptions:" msgstr "" -#: library/datetime.rst:1888 +#: library/datetime.rst:1904 msgid "Time zone offsets may have fractional seconds." msgstr "" -#: library/datetime.rst:1079 +#: library/datetime.rst:1095 msgid "The ``T`` separator may be replaced by any single unicode character." msgstr "" -#: library/datetime.rst:1893 +#: library/datetime.rst:1909 msgid "Fractional hours and minutes are not supported." msgstr "" -#: library/datetime.rst:1089 +#: library/datetime.rst:1105 msgid "" ">>> from datetime import datetime\n" ">>> datetime.fromisoformat('2011-11-04')\n" @@ -1610,13 +1630,13 @@ msgid "" " tzinfo=datetime.timezone(datetime.timedelta(seconds=14400)))" msgstr "" -#: library/datetime.rst:1111 +#: library/datetime.rst:1127 msgid "" "Previously, this method only supported formats that could be emitted by :" "meth:`date.isoformat` or :meth:`datetime.isoformat`." msgstr "" -#: library/datetime.rst:1118 +#: library/datetime.rst:1134 msgid "" "Return a :class:`.datetime` corresponding to the ISO calendar date specified " "by year, week and day. The non-date components of the datetime are populated " @@ -1624,23 +1644,23 @@ msgid "" "`datetime.isocalendar`." msgstr "" -#: library/datetime.rst:1127 +#: library/datetime.rst:1143 msgid "" "Return a :class:`.datetime` corresponding to *date_string*, parsed according " "to *format*." msgstr "" -#: library/datetime.rst:1130 +#: library/datetime.rst:1146 msgid "" "If *format* does not contain microseconds or time zone information, this is " "equivalent to::" msgstr "" -#: library/datetime.rst:2627 +#: library/datetime.rst:2643 msgid "datetime(*(time.strptime(date_string, format)[0:6]))" msgstr "" -#: library/datetime.rst:1134 +#: library/datetime.rst:1150 msgid "" ":exc:`ValueError` is raised if the date_string and format can't be parsed " "by :func:`time.strptime` or if it returns a value which isn't a time tuple. " @@ -1648,7 +1668,7 @@ msgid "" "fromisoformat`." msgstr "" -#: library/datetime.rst:1141 +#: library/datetime.rst:1157 msgid "" "If *format* specifies a day of month without a year a :exc:" "`DeprecationWarning` is now emitted. This is to avoid a quadrennial leap " @@ -1659,7 +1679,7 @@ msgid "" "not have a year, explicitly add a year that is a leap year before parsing:" msgstr "" -#: library/datetime.rst:1150 +#: library/datetime.rst:1166 msgid "" ">>> from datetime import datetime\n" ">>> date_string = \"02/29\"\n" @@ -1669,43 +1689,43 @@ msgid "" "'February 29'" msgstr "" -#: library/datetime.rst:1163 +#: library/datetime.rst:1179 msgid "" "The earliest representable :class:`.datetime`, ``datetime(MINYEAR, 1, 1, " "tzinfo=None)``." msgstr "" -#: library/datetime.rst:1169 +#: library/datetime.rst:1185 msgid "" "The latest representable :class:`.datetime`, ``datetime(MAXYEAR, 12, 31, 23, " "59, 59, 999999, tzinfo=None)``." msgstr "" -#: library/datetime.rst:1175 +#: library/datetime.rst:1191 msgid "" "The smallest possible difference between non-equal :class:`.datetime` " "objects, ``timedelta(microseconds=1)``." msgstr "" -#: library/datetime.rst:1821 +#: library/datetime.rst:1837 msgid "In ``range(24)``." msgstr "" -#: library/datetime.rst:1208 library/datetime.rst:1831 +#: library/datetime.rst:1224 library/datetime.rst:1847 msgid "In ``range(60)``." msgstr "" -#: library/datetime.rst:1836 +#: library/datetime.rst:1852 msgid "In ``range(1000000)``." msgstr "" -#: library/datetime.rst:1218 +#: library/datetime.rst:1234 msgid "" "The object passed as the *tzinfo* argument to the :class:`.datetime` " "constructor, or ``None`` if none was passed." msgstr "" -#: library/datetime.rst:1847 +#: library/datetime.rst:1863 msgid "" "In ``[0, 1]``. Used to disambiguate wall times during a repeated interval. " "(A repeated interval occurs when clocks are rolled back at the end of " @@ -1715,24 +1735,24 @@ msgid "" "time representation." msgstr "" -#: library/datetime.rst:1237 +#: library/datetime.rst:1253 msgid "``datetime2 = datetime1 + timedelta``" msgstr "" -#: library/datetime.rst:2474 library/datetime.rst:2491 -#: library/datetime.rst:2556 library/datetime.rst:2565 +#: library/datetime.rst:2490 library/datetime.rst:2507 +#: library/datetime.rst:2572 library/datetime.rst:2581 msgid "\\(1)" msgstr "" -#: library/datetime.rst:1239 +#: library/datetime.rst:1255 msgid "``datetime2 = datetime1 - timedelta``" msgstr "" -#: library/datetime.rst:2507 +#: library/datetime.rst:2523 msgid "\\(2)" msgstr "" -#: library/datetime.rst:1241 +#: library/datetime.rst:1257 msgid "``timedelta = datetime1 - datetime2``" msgstr "" @@ -1760,7 +1780,7 @@ msgstr "" msgid "``datetime1 >= datetime2``" msgstr "" -#: library/datetime.rst:1253 +#: library/datetime.rst:1269 msgid "" "``datetime2`` is a duration of ``timedelta`` removed from ``datetime1``, " "moving forward in time if ``timedelta.days > 0``, or backward if ``timedelta." @@ -1771,7 +1791,7 @@ msgid "" "adjustments are done even if the input is an aware object." msgstr "" -#: library/datetime.rst:1262 +#: library/datetime.rst:1278 msgid "" "Computes the ``datetime2`` such that ``datetime2 + timedelta == datetime1``. " "As for addition, the result has the same :attr:`~.datetime.tzinfo` attribute " @@ -1779,14 +1799,14 @@ msgid "" "input is aware." msgstr "" -#: library/datetime.rst:1267 +#: library/datetime.rst:1283 msgid "" "Subtraction of a :class:`.datetime` from a :class:`.datetime` is defined " "only if both operands are naive, or if both are aware. If one is aware and " "the other is naive, :exc:`TypeError` is raised." msgstr "" -#: library/datetime.rst:1271 +#: library/datetime.rst:1287 msgid "" "If both are naive, or both are aware and have the same :attr:`~.datetime." "tzinfo` attribute, the :attr:`~.datetime.tzinfo` attributes are ignored, and " @@ -1794,7 +1814,7 @@ msgid "" "datetime1``. No time zone adjustments are done in this case." msgstr "" -#: library/datetime.rst:1276 +#: library/datetime.rst:1292 msgid "" "If both are aware and have different :attr:`~.datetime.tzinfo` attributes, " "``a-b`` acts as if ``a`` and ``b`` were first converted to naive UTC " @@ -1803,17 +1823,17 @@ msgid "" "overflows." msgstr "" -#: library/datetime.rst:1282 +#: library/datetime.rst:1298 msgid "" ":class:`.datetime` objects are equal if they represent the same date and " "time, taking into account the time zone." msgstr "" -#: library/datetime.rst:1285 +#: library/datetime.rst:1301 msgid "Naive and aware :class:`!datetime` objects are never equal." msgstr "" -#: library/datetime.rst:1287 +#: library/datetime.rst:1303 msgid "" "If both comparands are aware, and have the same :attr:`!tzinfo` attribute, " "the :attr:`!tzinfo` and :attr:`~.datetime.fold` attributes are ignored and " @@ -1824,19 +1844,19 @@ msgid "" "interval are never equal to :class:`!datetime` instances in other time zone." msgstr "" -#: library/datetime.rst:1297 +#: library/datetime.rst:1313 msgid "" "*datetime1* is considered less than *datetime2* when *datetime1* precedes " "*datetime2* in time, taking into account the time zone." msgstr "" -#: library/datetime.rst:1300 +#: library/datetime.rst:1316 msgid "" "Order comparison between naive and aware :class:`.datetime` objects raises :" "exc:`TypeError`." msgstr "" -#: library/datetime.rst:1303 +#: library/datetime.rst:1319 msgid "" "If both comparands are aware, and have the same :attr:`!tzinfo` attribute, " "the :attr:`!tzinfo` and :attr:`~.datetime.fold` attributes are ignored and " @@ -1846,33 +1866,33 @@ msgid "" "implementation never overflows." msgstr "" -#: library/datetime.rst:1310 +#: library/datetime.rst:1326 msgid "" "Equality comparisons between aware and naive :class:`.datetime` instances " "don't raise :exc:`TypeError`." msgstr "" -#: library/datetime.rst:1326 +#: library/datetime.rst:1342 msgid "Return :class:`date` object with same year, month and day." msgstr "" -#: library/datetime.rst:1331 +#: library/datetime.rst:1347 msgid "" "Return :class:`.time` object with same hour, minute, second, microsecond and " "fold. :attr:`.tzinfo` is ``None``. See also method :meth:`timetz`." msgstr "" -#: library/datetime.rst:1343 +#: library/datetime.rst:1359 msgid "The fold value is copied to the returned :class:`.time` object." msgstr "" -#: library/datetime.rst:1340 +#: library/datetime.rst:1356 msgid "" "Return :class:`.time` object with same hour, minute, second, microsecond, " "fold, and tzinfo attributes. See also method :meth:`time`." msgstr "" -#: library/datetime.rst:1351 +#: library/datetime.rst:1367 msgid "" "Return a new :class:`datetime` object with the same attributes, but with " "specified parameters updated. Note that ``tzinfo=None`` can be specified to " @@ -1880,27 +1900,27 @@ msgid "" "and time data." msgstr "" -#: library/datetime.rst:1356 +#: library/datetime.rst:1372 msgid "" ":class:`.datetime` objects are also supported by generic function :func:" "`copy.replace`." msgstr "" -#: library/datetime.rst:1365 +#: library/datetime.rst:1381 msgid "" "Return a :class:`.datetime` object with new :attr:`.tzinfo` attribute *tz*, " "adjusting the date and time data so the result is the same UTC time as " "*self*, but in *tz*'s local time." msgstr "" -#: library/datetime.rst:1369 +#: library/datetime.rst:1385 msgid "" "If provided, *tz* must be an instance of a :class:`tzinfo` subclass, and " "its :meth:`utcoffset` and :meth:`dst` methods must not return ``None``. If " "*self* is naive, it is presumed to represent time in the system time zone." msgstr "" -#: library/datetime.rst:1373 +#: library/datetime.rst:1389 msgid "" "If called without arguments (or with ``tz=None``) the system local time zone " "is assumed for the target time zone. The ``.tzinfo`` attribute of the " @@ -1908,7 +1928,7 @@ msgid "" "with the zone name and offset obtained from the OS." msgstr "" -#: library/datetime.rst:1378 +#: library/datetime.rst:1394 msgid "" "If ``self.tzinfo`` is *tz*, ``self.astimezone(tz)`` is equal to *self*: no " "adjustment of date or time data is performed. Else the result is local time " @@ -1917,7 +1937,7 @@ msgid "" "date and time data as ``dt - dt.utcoffset()``." msgstr "" -#: library/datetime.rst:1384 +#: library/datetime.rst:1400 msgid "" "If you merely want to attach a :class:`timezone` object *tz* to a datetime " "*dt* without adjustment of date and time data, use ``dt." @@ -1926,14 +1946,14 @@ msgid "" "use ``dt.replace(tzinfo=None)``." msgstr "" -#: library/datetime.rst:1389 +#: library/datetime.rst:1405 msgid "" "Note that the default :meth:`tzinfo.fromutc` method can be overridden in a :" "class:`tzinfo` subclass to affect the result returned by :meth:`astimezone`. " "Ignoring error cases, :meth:`astimezone` acts like::" msgstr "" -#: library/datetime.rst:1393 +#: library/datetime.rst:1409 msgid "" "def astimezone(self, tz):\n" " if self.tzinfo is tz:\n" @@ -1944,54 +1964,54 @@ msgid "" " return tz.fromutc(utc)" msgstr "" -#: library/datetime.rst:1401 +#: library/datetime.rst:1417 msgid "*tz* now can be omitted." msgstr "" -#: library/datetime.rst:1404 +#: library/datetime.rst:1420 msgid "" "The :meth:`astimezone` method can now be called on naive instances that are " "presumed to represent system local time." msgstr "" -#: library/datetime.rst:1411 +#: library/datetime.rst:1427 msgid "" "If :attr:`.tzinfo` is ``None``, returns ``None``, else returns ``self.tzinfo." "utcoffset(self)``, and raises an exception if the latter doesn't return " "``None`` or a :class:`timedelta` object with magnitude less than one day." msgstr "" -#: library/datetime.rst:2026 library/datetime.rst:2378 -#: library/datetime.rst:2700 +#: library/datetime.rst:2042 library/datetime.rst:2394 +#: library/datetime.rst:2716 msgid "The UTC offset is not restricted to a whole number of minutes." msgstr "" -#: library/datetime.rst:1421 +#: library/datetime.rst:1437 msgid "" "If :attr:`.tzinfo` is ``None``, returns ``None``, else returns ``self.tzinfo." "dst(self)``, and raises an exception if the latter doesn't return ``None`` " "or a :class:`timedelta` object with magnitude less than one day." msgstr "" -#: library/datetime.rst:2036 library/datetime.rst:2187 +#: library/datetime.rst:2052 library/datetime.rst:2203 msgid "The DST offset is not restricted to a whole number of minutes." msgstr "" -#: library/datetime.rst:1431 +#: library/datetime.rst:1447 msgid "" "If :attr:`.tzinfo` is ``None``, returns ``None``, else returns ``self.tzinfo." "tzname(self)``, raises an exception if the latter doesn't return ``None`` or " "a string object," msgstr "" -#: library/datetime.rst:1442 +#: library/datetime.rst:1458 msgid "" "time.struct_time((d.year, d.month, d.day,\n" " d.hour, d.minute, d.second,\n" " d.weekday(), yday, dst))" msgstr "" -#: library/datetime.rst:1446 +#: library/datetime.rst:1462 msgid "" "where ``yday = d.toordinal() - date(d.year, 1, 1).toordinal() + 1`` is the " "day number within the current year starting with 1 for January 1st. The :" @@ -2002,7 +2022,7 @@ msgid "" "to 0." msgstr "" -#: library/datetime.rst:1457 +#: library/datetime.rst:1473 msgid "" "If :class:`.datetime` instance ``d`` is naive, this is the same as ``d." "timetuple()`` except that :attr:`~.time.struct_time.tm_isdst` is forced to 0 " @@ -2010,7 +2030,7 @@ msgid "" "time." msgstr "" -#: library/datetime.rst:1461 +#: library/datetime.rst:1477 msgid "" "If ``d`` is aware, ``d`` is normalized to UTC time, by subtracting ``d." "utcoffset()``, and a :class:`time.struct_time` for the normalized time is " @@ -2019,7 +2039,7 @@ msgid "" "and UTC adjustment spills over a year boundary." msgstr "" -#: library/datetime.rst:1470 +#: library/datetime.rst:1486 msgid "" "Because naive ``datetime`` objects are treated by many ``datetime`` methods " "as local times, it is preferred to use aware datetimes to represent times in " @@ -2029,20 +2049,20 @@ msgid "" "meth:`.datetime.timetuple`." msgstr "" -#: library/datetime.rst:1479 +#: library/datetime.rst:1495 msgid "" "Return the proleptic Gregorian ordinal of the date. The same as ``self." "date().toordinal()``." msgstr "" -#: library/datetime.rst:1484 +#: library/datetime.rst:1500 msgid "" "Return POSIX timestamp corresponding to the :class:`.datetime` instance. The " "return value is a :class:`float` similar to that returned by :func:`time." "time`." msgstr "" -#: library/datetime.rst:1488 +#: library/datetime.rst:1504 msgid "" "Naive :class:`.datetime` instances are assumed to represent local time and " "this method relies on the platform C :c:func:`mktime` function to perform " @@ -2052,22 +2072,22 @@ msgid "" "future." msgstr "" -#: library/datetime.rst:1495 +#: library/datetime.rst:1511 msgid "" "For aware :class:`.datetime` instances, the return value is computed as::" msgstr "" -#: library/datetime.rst:1498 +#: library/datetime.rst:1514 msgid "(dt - datetime(1970, 1, 1, tzinfo=timezone.utc)).total_seconds()" msgstr "" -#: library/datetime.rst:1502 +#: library/datetime.rst:1518 msgid "" "The :meth:`timestamp` method uses the :attr:`.fold` attribute to " "disambiguate the times during a repeated interval." msgstr "" -#: library/datetime.rst:1508 +#: library/datetime.rst:1524 msgid "" "There is no method to obtain the POSIX timestamp directly from a naive :" "class:`.datetime` instance representing UTC time. If your application uses " @@ -2075,67 +2095,67 @@ msgid "" "the POSIX timestamp by supplying ``tzinfo=timezone.utc``::" msgstr "" -#: library/datetime.rst:1514 +#: library/datetime.rst:1530 msgid "timestamp = dt.replace(tzinfo=timezone.utc).timestamp()" msgstr "" -#: library/datetime.rst:1516 +#: library/datetime.rst:1532 msgid "or by calculating the timestamp directly::" msgstr "" -#: library/datetime.rst:1518 +#: library/datetime.rst:1534 msgid "timestamp = (dt - datetime(1970, 1, 1)) / timedelta(seconds=1)" msgstr "" -#: library/datetime.rst:1522 +#: library/datetime.rst:1538 msgid "" "Return the day of the week as an integer, where Monday is 0 and Sunday is 6. " "The same as ``self.date().weekday()``. See also :meth:`isoweekday`." msgstr "" -#: library/datetime.rst:1528 +#: library/datetime.rst:1544 msgid "" "Return the day of the week as an integer, where Monday is 1 and Sunday is 7. " "The same as ``self.date().isoweekday()``. See also :meth:`weekday`, :meth:" "`isocalendar`." msgstr "" -#: library/datetime.rst:1535 +#: library/datetime.rst:1551 msgid "" "Return a :term:`named tuple` with three components: ``year``, ``week`` and " "``weekday``. The same as ``self.date().isocalendar()``." msgstr "" -#: library/datetime.rst:1541 +#: library/datetime.rst:1557 msgid "Return a string representing the date and time in ISO 8601 format:" msgstr "" -#: library/datetime.rst:1543 +#: library/datetime.rst:1559 msgid "``YYYY-MM-DDTHH:MM:SS.ffffff``, if :attr:`microsecond` is not 0" msgstr "" -#: library/datetime.rst:1544 +#: library/datetime.rst:1560 msgid "``YYYY-MM-DDTHH:MM:SS``, if :attr:`microsecond` is 0" msgstr "" -#: library/datetime.rst:1546 +#: library/datetime.rst:1562 msgid "" "If :meth:`utcoffset` does not return ``None``, a string is appended, giving " "the UTC offset:" msgstr "" -#: library/datetime.rst:1549 +#: library/datetime.rst:1565 msgid "" "``YYYY-MM-DDTHH:MM:SS.ffffff+HH:MM[:SS[.ffffff]]``, if :attr:`microsecond` " "is not 0" msgstr "" -#: library/datetime.rst:1551 +#: library/datetime.rst:1567 msgid "" "``YYYY-MM-DDTHH:MM:SS+HH:MM[:SS[.ffffff]]``, if :attr:`microsecond` is 0" msgstr "" -#: library/datetime.rst:1555 +#: library/datetime.rst:1571 msgid "" ">>> from datetime import datetime, timezone\n" ">>> datetime(2019, 5, 18, 15, 17, 8, 132263).isoformat()\n" @@ -2144,13 +2164,13 @@ msgid "" "'2019-05-18T15:17:00+00:00'" msgstr "" -#: library/datetime.rst:1561 +#: library/datetime.rst:1577 msgid "" "The optional argument *sep* (default ``'T'``) is a one-character separator, " "placed between the date and time portions of the result. For example::" msgstr "" -#: library/datetime.rst:1564 +#: library/datetime.rst:1580 msgid "" ">>> from datetime import tzinfo, timedelta, datetime\n" ">>> class TZ(tzinfo):\n" @@ -2164,53 +2184,53 @@ msgid "" "'2009-11-27T00:00:00.000100-06:39'" msgstr "" -#: library/datetime.rst:1966 +#: library/datetime.rst:1982 msgid "" "The optional argument *timespec* specifies the number of additional " "components of the time to include (the default is ``'auto'``). It can be one " "of the following:" msgstr "" -#: library/datetime.rst:1970 +#: library/datetime.rst:1986 msgid "" "``'auto'``: Same as ``'seconds'`` if :attr:`microsecond` is 0, same as " "``'microseconds'`` otherwise." msgstr "" -#: library/datetime.rst:1972 +#: library/datetime.rst:1988 msgid "``'hours'``: Include the :attr:`hour` in the two-digit ``HH`` format." msgstr "" -#: library/datetime.rst:1973 +#: library/datetime.rst:1989 msgid "" "``'minutes'``: Include :attr:`hour` and :attr:`minute` in ``HH:MM`` format." msgstr "" -#: library/datetime.rst:1974 +#: library/datetime.rst:1990 msgid "" "``'seconds'``: Include :attr:`hour`, :attr:`minute`, and :attr:`second` in " "``HH:MM:SS`` format." msgstr "" -#: library/datetime.rst:1976 +#: library/datetime.rst:1992 msgid "" "``'milliseconds'``: Include full time, but truncate fractional second part " "to milliseconds. ``HH:MM:SS.sss`` format." msgstr "" -#: library/datetime.rst:1978 +#: library/datetime.rst:1994 msgid "``'microseconds'``: Include full time in ``HH:MM:SS.ffffff`` format." msgstr "" -#: library/datetime.rst:1982 +#: library/datetime.rst:1998 msgid "Excluded time components are truncated, not rounded." msgstr "" -#: library/datetime.rst:1593 +#: library/datetime.rst:1609 msgid ":exc:`ValueError` will be raised on an invalid *timespec* argument::" msgstr "" -#: library/datetime.rst:1596 +#: library/datetime.rst:1612 msgid "" ">>> from datetime import datetime\n" ">>> datetime.now().isoformat(timespec='minutes')\n" @@ -2220,48 +2240,48 @@ msgid "" "'2015-01-01T12:30:59.000000'" msgstr "" -#: library/datetime.rst:1997 +#: library/datetime.rst:2013 msgid "Added the *timespec* parameter." msgstr "" -#: library/datetime.rst:1609 +#: library/datetime.rst:1625 msgid "" "For a :class:`.datetime` instance ``d``, ``str(d)`` is equivalent to ``d." "isoformat(' ')``." msgstr "" -#: library/datetime.rst:1615 +#: library/datetime.rst:1631 msgid "Return a string representing the date and time::" msgstr "" -#: library/datetime.rst:1617 +#: library/datetime.rst:1633 msgid "" ">>> from datetime import datetime\n" ">>> datetime(2002, 12, 4, 20, 30, 40).ctime()\n" "'Wed Dec 4 20:30:40 2002'" msgstr "" -#: library/datetime.rst:1621 +#: library/datetime.rst:1637 msgid "" "The output string will *not* include time zone information, regardless of " "whether the input is aware or naive." msgstr "" -#: library/datetime.rst:1628 +#: library/datetime.rst:1644 msgid "" "on platforms where the native C :c:func:`ctime` function (which :func:`time." "ctime` invokes, but which :meth:`datetime.ctime` does not invoke) conforms " "to the C standard." msgstr "" -#: library/datetime.rst:1635 +#: library/datetime.rst:1651 msgid "" "Return a string representing the date and time, controlled by an explicit " "format string. See also :ref:`strftime-strptime-behavior` and :meth:" "`datetime.isoformat`." msgstr "" -#: library/datetime.rst:1642 +#: library/datetime.rst:1658 msgid "" "Same as :meth:`.datetime.strftime`. This makes it possible to specify a " "format string for a :class:`.datetime` object in :ref:`formatted string " @@ -2269,15 +2289,15 @@ msgid "" "`strftime-strptime-behavior` and :meth:`datetime.isoformat`." msgstr "" -#: library/datetime.rst:1649 +#: library/datetime.rst:1665 msgid "Examples of Usage: :class:`.datetime`" msgstr "" -#: library/datetime.rst:1651 +#: library/datetime.rst:1667 msgid "Examples of working with :class:`.datetime` objects:" msgstr "" -#: library/datetime.rst:1653 +#: library/datetime.rst:1669 msgid "" ">>> from datetime import datetime, date, time, timezone\n" "\n" @@ -2331,14 +2351,14 @@ msgid "" "'The day is 21, the month is November, the time is 04:30PM.'" msgstr "" -#: library/datetime.rst:1704 +#: library/datetime.rst:1720 msgid "" "The example below defines a :class:`tzinfo` subclass capturing time zone " "information for Kabul, Afghanistan, which used +4 UTC until 1945 and then " "+4:30 UTC thereafter::" msgstr "" -#: library/datetime.rst:1708 +#: library/datetime.rst:1724 msgid "" "from datetime import timedelta, datetime, tzinfo, timezone\n" "\n" @@ -2385,11 +2405,11 @@ msgid "" " return \"+04\"" msgstr "" -#: library/datetime.rst:1751 +#: library/datetime.rst:1767 msgid "Usage of ``KabulTz`` from above::" msgstr "" -#: library/datetime.rst:1753 +#: library/datetime.rst:1769 msgid "" ">>> tz1 = KabulTz()\n" "\n" @@ -2413,63 +2433,63 @@ msgid "" "True" msgstr "" -#: library/datetime.rst:1777 +#: library/datetime.rst:1793 msgid ":class:`.time` Objects" msgstr "" -#: library/datetime.rst:1779 +#: library/datetime.rst:1795 msgid "" "A :class:`.time` object represents a (local) time of day, independent of any " "particular day, and subject to adjustment via a :class:`tzinfo` object." msgstr "" -#: library/datetime.rst:1784 +#: library/datetime.rst:1800 msgid "" "All arguments are optional. *tzinfo* may be ``None``, or an instance of a :" "class:`tzinfo` subclass. The remaining arguments must be integers in the " "following ranges:" msgstr "" -#: library/datetime.rst:1794 +#: library/datetime.rst:1810 msgid "" "If an argument outside those ranges is given, :exc:`ValueError` is raised. " "All default to 0 except *tzinfo*, which defaults to ``None``." msgstr "" -#: library/datetime.rst:1802 +#: library/datetime.rst:1818 msgid "The earliest representable :class:`.time`, ``time(0, 0, 0, 0)``." msgstr "" -#: library/datetime.rst:1807 +#: library/datetime.rst:1823 msgid "The latest representable :class:`.time`, ``time(23, 59, 59, 999999)``." msgstr "" -#: library/datetime.rst:1812 +#: library/datetime.rst:1828 msgid "" "The smallest possible difference between non-equal :class:`.time` objects, " "``timedelta(microseconds=1)``, although note that arithmetic on :class:`." "time` objects is not supported." msgstr "" -#: library/datetime.rst:1841 +#: library/datetime.rst:1857 msgid "" "The object passed as the tzinfo argument to the :class:`.time` constructor, " "or ``None`` if none was passed." msgstr "" -#: library/datetime.rst:1855 +#: library/datetime.rst:1871 msgid "" ":class:`.time` objects support equality and order comparisons, where ``a`` " "is considered less than ``b`` when ``a`` precedes ``b`` in time." msgstr "" -#: library/datetime.rst:1858 +#: library/datetime.rst:1874 msgid "" "Naive and aware :class:`!time` objects are never equal. Order comparison " "between naive and aware :class:`!time` objects raises :exc:`TypeError`." msgstr "" -#: library/datetime.rst:1862 +#: library/datetime.rst:1878 msgid "" "If both comparands are aware, and have the same :attr:`~.time.tzinfo` " "attribute, the :attr:`!tzinfo` and :attr:`!fold` attributes are ignored and " @@ -2478,18 +2498,18 @@ msgid "" "subtracting their UTC offsets (obtained from ``self.utcoffset()``)." msgstr "" -#: library/datetime.rst:1868 +#: library/datetime.rst:1884 msgid "" "Equality comparisons between aware and naive :class:`.time` instances don't " "raise :exc:`TypeError`." msgstr "" -#: library/datetime.rst:1872 +#: library/datetime.rst:1888 msgid "" "In Boolean contexts, a :class:`.time` object is always considered to be true." msgstr "" -#: library/datetime.rst:1874 +#: library/datetime.rst:1890 msgid "" "Before Python 3.5, a :class:`.time` object was considered to be false if it " "represented midnight in UTC. This behavior was considered obscure and error-" @@ -2497,33 +2517,33 @@ msgid "" "details." msgstr "" -#: library/datetime.rst:1881 +#: library/datetime.rst:1897 msgid "Other constructors:" msgstr "" -#: library/datetime.rst:1885 +#: library/datetime.rst:1901 msgid "" "Return a :class:`.time` corresponding to a *time_string* in any valid ISO " "8601 format, with the following exceptions:" msgstr "" -#: library/datetime.rst:1889 +#: library/datetime.rst:1905 msgid "" "The leading ``T``, normally required in cases where there may be ambiguity " "between a date and a time, is not required." msgstr "" -#: library/datetime.rst:1891 +#: library/datetime.rst:1907 msgid "" "Fractional seconds may have any number of digits (anything beyond 6 will be " "truncated)." msgstr "" -#: library/datetime.rst:1895 +#: library/datetime.rst:1911 msgid "Examples:" msgstr "" -#: library/datetime.rst:1897 +#: library/datetime.rst:1913 msgid "" ">>> from datetime import time\n" ">>> time.fromisoformat('04:23:01')\n" @@ -2545,29 +2565,29 @@ msgid "" "datetime.time(4, 23, 1, tzinfo=datetime.timezone.utc)" msgstr "" -#: library/datetime.rst:1919 +#: library/datetime.rst:1935 msgid "" "Previously, this method only supported formats that could be emitted by :" "meth:`time.isoformat`." msgstr "" -#: library/datetime.rst:1925 +#: library/datetime.rst:1941 msgid "" "Return a :class:`.time` corresponding to *date_string*, parsed according to " "*format*." msgstr "" -#: library/datetime.rst:1928 +#: library/datetime.rst:1944 msgid "" "If *format* does not contain microseconds or timezone information, this is " "equivalent to::" msgstr "" -#: library/datetime.rst:1930 +#: library/datetime.rst:1946 msgid "time(*(time.strptime(date_string, format)[3:6]))" msgstr "" -#: library/datetime.rst:1932 +#: library/datetime.rst:1948 msgid "" ":exc:`ValueError` is raised if the *date_string* and *format* cannot be " "parsed by :func:`time.strptime` or if it returns a value which is not a time " @@ -2575,7 +2595,7 @@ msgid "" "fromisoformat`." msgstr "" -#: library/datetime.rst:1945 +#: library/datetime.rst:1961 msgid "" "Return a new :class:`.time` with the same values, but with specified " "parameters updated. Note that ``tzinfo=None`` can be specified to create a " @@ -2583,41 +2603,41 @@ msgid "" "time data." msgstr "" -#: library/datetime.rst:1950 +#: library/datetime.rst:1966 msgid "" ":class:`.time` objects are also supported by generic function :func:`copy." "replace`." msgstr "" -#: library/datetime.rst:1959 +#: library/datetime.rst:1975 msgid "Return a string representing the time in ISO 8601 format, one of:" msgstr "" -#: library/datetime.rst:1961 +#: library/datetime.rst:1977 msgid "``HH:MM:SS.ffffff``, if :attr:`microsecond` is not 0" msgstr "" -#: library/datetime.rst:1962 +#: library/datetime.rst:1978 msgid "``HH:MM:SS``, if :attr:`microsecond` is 0" msgstr "" -#: library/datetime.rst:1963 +#: library/datetime.rst:1979 msgid "" "``HH:MM:SS.ffffff+HH:MM[:SS[.ffffff]]``, if :meth:`utcoffset` does not " "return ``None``" msgstr "" -#: library/datetime.rst:1964 +#: library/datetime.rst:1980 msgid "" "``HH:MM:SS+HH:MM[:SS[.ffffff]]``, if :attr:`microsecond` is 0 and :meth:" "`utcoffset` does not return ``None``" msgstr "" -#: library/datetime.rst:1984 +#: library/datetime.rst:2000 msgid ":exc:`ValueError` will be raised on an invalid *timespec* argument." msgstr "" -#: library/datetime.rst:1988 +#: library/datetime.rst:2004 msgid "" ">>> from datetime import time\n" ">>> time(hour=12, minute=34, second=56, microsecond=123456)." @@ -2630,18 +2650,18 @@ msgid "" "'12:34:56'" msgstr "" -#: library/datetime.rst:2003 +#: library/datetime.rst:2019 msgid "For a time ``t``, ``str(t)`` is equivalent to ``t.isoformat()``." msgstr "" -#: library/datetime.rst:2008 +#: library/datetime.rst:2024 msgid "" "Return a string representing the time, controlled by an explicit format " "string. See also :ref:`strftime-strptime-behavior` and :meth:`time." "isoformat`." msgstr "" -#: library/datetime.rst:2014 +#: library/datetime.rst:2030 msgid "" "Same as :meth:`.time.strftime`. This makes it possible to specify a format " "string for a :class:`.time` object in :ref:`formatted string literals >> from datetime import time, tzinfo, timedelta\n" ">>> class TZ1(tzinfo):\n" @@ -2706,18 +2726,18 @@ msgid "" "'The time is 12:10.'" msgstr "" -#: library/datetime.rst:2079 +#: library/datetime.rst:2095 msgid ":class:`tzinfo` Objects" msgstr "" -#: library/datetime.rst:2083 +#: library/datetime.rst:2099 msgid "" "This is an abstract base class, meaning that this class should not be " "instantiated directly. Define a subclass of :class:`tzinfo` to capture " "information about a particular time zone." msgstr "" -#: library/datetime.rst:2087 +#: library/datetime.rst:2103 msgid "" "An instance of (a concrete subclass of) :class:`tzinfo` can be passed to the " "constructors for :class:`.datetime` and :class:`.time` objects. The latter " @@ -2727,7 +2747,7 @@ msgid "" "object passed to them." msgstr "" -#: library/datetime.rst:2093 +#: library/datetime.rst:2109 msgid "" "You need to derive a concrete subclass, and (at least) supply " "implementations of the standard :class:`tzinfo` methods needed by the :class:" @@ -2737,7 +2757,7 @@ msgid "" "American EST and EDT." msgstr "" -#: library/datetime.rst:2100 +#: library/datetime.rst:2116 msgid "" "Special requirement for pickling: A :class:`tzinfo` subclass must have an :" "meth:`~object.__init__` method that can be called with no arguments, " @@ -2745,20 +2765,20 @@ msgid "" "technical requirement that may be relaxed in the future." msgstr "" -#: library/datetime.rst:2106 +#: library/datetime.rst:2122 msgid "" "A concrete subclass of :class:`tzinfo` may need to implement the following " "methods. Exactly which methods are needed depends on the uses made of aware :" "mod:`!datetime` objects. If in doubt, simply implement all of them." msgstr "" -#: library/datetime.rst:2113 +#: library/datetime.rst:2129 msgid "" "Return offset of local time from UTC, as a :class:`timedelta` object that is " "positive east of UTC. If local time is west of UTC, this should be negative." msgstr "" -#: library/datetime.rst:2116 +#: library/datetime.rst:2132 msgid "" "This represents the *total* offset from UTC; for example, if a :class:" "`tzinfo` object represents both time zone and DST adjustments, :meth:" @@ -2769,31 +2789,31 @@ msgid "" "meth:`utcoffset` will probably look like one of these two::" msgstr "" -#: library/datetime.rst:2124 +#: library/datetime.rst:2140 msgid "" "return CONSTANT # fixed-offset class\n" "return CONSTANT + self.dst(dt) # daylight-aware class" msgstr "" -#: library/datetime.rst:2127 +#: library/datetime.rst:2143 msgid "" "If :meth:`utcoffset` does not return ``None``, :meth:`dst` should not return " "``None`` either." msgstr "" -#: library/datetime.rst:2130 +#: library/datetime.rst:2146 msgid "" "The default implementation of :meth:`utcoffset` raises :exc:" "`NotImplementedError`." msgstr "" -#: library/datetime.rst:2139 +#: library/datetime.rst:2155 msgid "" "Return the daylight saving time (DST) adjustment, as a :class:`timedelta` " "object or ``None`` if DST information isn't known." msgstr "" -#: library/datetime.rst:2143 +#: library/datetime.rst:2159 msgid "" "Return ``timedelta(0)`` if DST is not in effect. If DST is in effect, return " "the offset as a :class:`timedelta` object (see :meth:`utcoffset` for " @@ -2806,17 +2826,17 @@ msgid "" "to account for DST changes when crossing time zones." msgstr "" -#: library/datetime.rst:2153 +#: library/datetime.rst:2169 msgid "" "An instance *tz* of a :class:`tzinfo` subclass that models both standard and " "daylight times must be consistent in this sense:" msgstr "" -#: library/datetime.rst:2156 +#: library/datetime.rst:2172 msgid "``tz.utcoffset(dt) - tz.dst(dt)``" msgstr "" -#: library/datetime.rst:2158 +#: library/datetime.rst:2174 msgid "" "must return the same result for every :class:`.datetime` *dt* with ``dt." "tzinfo == tz``. For sane :class:`tzinfo` subclasses, this expression yields " @@ -2829,24 +2849,24 @@ msgid "" "astimezone` regardless." msgstr "" -#: library/datetime.rst:2167 +#: library/datetime.rst:2183 msgid "" "Most implementations of :meth:`dst` will probably look like one of these " "two::" msgstr "" -#: library/datetime.rst:2169 +#: library/datetime.rst:2185 msgid "" "def dst(self, dt):\n" " # a fixed-offset class: doesn't account for DST\n" " return timedelta(0)" msgstr "" -#: library/datetime.rst:2173 +#: library/datetime.rst:2189 msgid "or::" msgstr "" -#: library/datetime.rst:2175 +#: library/datetime.rst:2191 msgid "" "def dst(self, dt):\n" " # Code to set dston and dstoff to the time zone's DST\n" @@ -2859,12 +2879,12 @@ msgid "" " return timedelta(0)" msgstr "" -#: library/datetime.rst:2185 +#: library/datetime.rst:2201 msgid "" "The default implementation of :meth:`dst` raises :exc:`NotImplementedError`." msgstr "" -#: library/datetime.rst:2193 +#: library/datetime.rst:2209 msgid "" "Return the time zone name corresponding to the :class:`.datetime` object " "*dt*, as a string. Nothing about string names is defined by the :mod:`!" @@ -2878,13 +2898,13 @@ msgid "" "accounting for daylight time." msgstr "" -#: library/datetime.rst:2203 +#: library/datetime.rst:2219 msgid "" "The default implementation of :meth:`tzname` raises :exc:" "`NotImplementedError`." msgstr "" -#: library/datetime.rst:2206 +#: library/datetime.rst:2222 msgid "" "These methods are called by a :class:`.datetime` or :class:`.time` object, " "in response to their methods of the same names. A :class:`.datetime` object " @@ -2894,7 +2914,7 @@ msgid "" "datetime`." msgstr "" -#: library/datetime.rst:2212 +#: library/datetime.rst:2228 msgid "" "When ``None`` is passed, it's up to the class designer to decide the best " "response. For example, returning ``None`` is appropriate if the class wishes " @@ -2903,7 +2923,7 @@ msgid "" "offset, as there is no other convention for discovering the standard offset." msgstr "" -#: library/datetime.rst:2218 +#: library/datetime.rst:2234 msgid "" "When a :class:`.datetime` object is passed in response to a :class:`." "datetime` method, ``dt.tzinfo`` is the same object as *self*. :class:" @@ -2913,13 +2933,13 @@ msgid "" "zones." msgstr "" -#: library/datetime.rst:2224 +#: library/datetime.rst:2240 msgid "" "There is one more :class:`tzinfo` method that a subclass may wish to " "override:" msgstr "" -#: library/datetime.rst:2229 +#: library/datetime.rst:2245 msgid "" "This is called from the default :meth:`datetime.astimezone` implementation. " "When called from that, ``dt.tzinfo`` is *self*, and *dt*'s date and time " @@ -2928,7 +2948,7 @@ msgid "" "datetime in *self*'s local time." msgstr "" -#: library/datetime.rst:2235 +#: library/datetime.rst:2251 msgid "" "Most :class:`tzinfo` subclasses should be able to inherit the default :meth:" "`fromutc` implementation without problems. It's strong enough to handle " @@ -2943,13 +2963,13 @@ msgid "" "offset changes." msgstr "" -#: library/datetime.rst:2246 +#: library/datetime.rst:2262 msgid "" "Skipping code for error cases, the default :meth:`fromutc` implementation " "acts like::" msgstr "" -#: library/datetime.rst:2249 +#: library/datetime.rst:2265 msgid "" "def fromutc(self, dt):\n" " # raise ValueError error if dt.tzinfo is not self\n" @@ -2967,13 +2987,13 @@ msgid "" " return dt" msgstr "" -#: library/datetime.rst:2264 +#: library/datetime.rst:2280 msgid "" "In the following :download:`tzinfo_examples.py <../includes/tzinfo_examples." "py>` file there are some examples of :class:`tzinfo` classes:" msgstr "" -#: library/datetime.rst:2268 +#: library/datetime.rst:2284 msgid "" "from datetime import tzinfo, timedelta, datetime\n" "\n" @@ -3153,7 +3173,7 @@ msgid "" "Pacific = USTimeZone(-8, \"Pacific\", \"PST\", \"PDT\")\n" msgstr "" -#: library/datetime.rst:2270 +#: library/datetime.rst:2286 msgid "" "Note that there are unavoidable subtleties twice per year in a :class:" "`tzinfo` subclass accounting for both standard and daylight time, at the DST " @@ -3162,7 +3182,7 @@ msgid "" "ends the minute after 1:59 (EDT) on the first Sunday in November::" msgstr "" -#: library/datetime.rst:2276 +#: library/datetime.rst:2292 msgid "" " UTC 3:MM 4:MM 5:MM 6:MM 7:MM 8:MM\n" " EST 22:MM 23:MM 0:MM 1:MM 2:MM 3:MM\n" @@ -3173,7 +3193,7 @@ msgid "" " end 23:MM 0:MM 1:MM 1:MM 2:MM 3:MM" msgstr "" -#: library/datetime.rst:2284 +#: library/datetime.rst:2300 msgid "" "When DST starts (the \"start\" line), the local wall clock leaps from 1:59 " "to 3:00. A wall time of the form 2:MM doesn't really make sense on that day, " @@ -3182,7 +3202,7 @@ msgid "" "get::" msgstr "" -#: library/datetime.rst:2289 +#: library/datetime.rst:2305 msgid "" ">>> from datetime import datetime, timezone\n" ">>> from tzinfo_examples import HOUR, Eastern\n" @@ -3198,7 +3218,7 @@ msgid "" "08:00:00 UTC = 04:00:00 EDT" msgstr "" -#: library/datetime.rst:2303 +#: library/datetime.rst:2319 msgid "" "When DST ends (the \"end\" line), there's a potentially worse problem: " "there's an hour that can't be spelled unambiguously in local wall time: the " @@ -3213,7 +3233,7 @@ msgid "" "Fall back transition of 2016, we get::" msgstr "" -#: library/datetime.rst:2314 +#: library/datetime.rst:2330 msgid "" ">>> u0 = datetime(2016, 11, 6, 4, tzinfo=timezone.utc)\n" ">>> for i in range(4):\n" @@ -3227,13 +3247,13 @@ msgid "" "07:00:00 UTC = 02:00:00 EST 0" msgstr "" -#: library/datetime.rst:2325 +#: library/datetime.rst:2341 msgid "" "Note that the :class:`.datetime` instances that differ only by the value of " "the :attr:`~.datetime.fold` attribute are considered equal in comparisons." msgstr "" -#: library/datetime.rst:2328 +#: library/datetime.rst:2344 msgid "" "Applications that can't bear wall-time ambiguities should explicitly check " "the value of the :attr:`~.datetime.fold` attribute or avoid using hybrid :" @@ -3243,28 +3263,28 @@ msgid "" "offset -4 hours))." msgstr "" -#: library/datetime.rst:2336 +#: library/datetime.rst:2352 msgid ":mod:`zoneinfo`" msgstr "" -#: library/datetime.rst:2337 +#: library/datetime.rst:2353 msgid "" "The :mod:`!datetime` module has a basic :class:`timezone` class (for " "handling arbitrary fixed offsets from UTC) and its :attr:`timezone.utc` " "attribute (a UTC :class:`!timezone` instance)." msgstr "" -#: library/datetime.rst:2341 +#: library/datetime.rst:2357 msgid "" "``zoneinfo`` brings the *IANA time zone database* (also known as the Olson " "database) to Python, and its usage is recommended." msgstr "" -#: library/datetime.rst:2344 +#: library/datetime.rst:2360 msgid "`IANA time zone database `_" msgstr "" -#: library/datetime.rst:2345 +#: library/datetime.rst:2361 msgid "" "The Time Zone Database (often called tz, tzdata or zoneinfo) contains code " "and data that represent the history of local time for many representative " @@ -3273,24 +3293,24 @@ msgid "" "saving rules." msgstr "" -#: library/datetime.rst:2355 +#: library/datetime.rst:2371 msgid ":class:`timezone` Objects" msgstr "" -#: library/datetime.rst:2357 +#: library/datetime.rst:2373 msgid "" "The :class:`timezone` class is a subclass of :class:`tzinfo`, each instance " "of which represents a time zone defined by a fixed offset from UTC." msgstr "" -#: library/datetime.rst:2361 +#: library/datetime.rst:2377 msgid "" "Objects of this class cannot be used to represent time zone information in " "the locations where different offsets are used in different days of the year " "or where historical changes have been made to civil time." msgstr "" -#: library/datetime.rst:2368 +#: library/datetime.rst:2384 msgid "" "The *offset* argument must be specified as a :class:`timedelta` object " "representing the difference between the local time and UTC. It must be " @@ -3298,25 +3318,25 @@ msgid "" "otherwise :exc:`ValueError` is raised." msgstr "" -#: library/datetime.rst:2373 +#: library/datetime.rst:2389 msgid "" "The *name* argument is optional. If specified it must be a string that will " "be used as the value returned by the :meth:`datetime.tzname` method." msgstr "" -#: library/datetime.rst:2395 +#: library/datetime.rst:2411 msgid "" "Return the fixed value specified when the :class:`timezone` instance is " "constructed." msgstr "" -#: library/datetime.rst:2387 +#: library/datetime.rst:2403 msgid "" "The *dt* argument is ignored. The return value is a :class:`timedelta` " "instance equal to the difference between the local time and UTC." msgstr "" -#: library/datetime.rst:2398 +#: library/datetime.rst:2414 msgid "" "If *name* is not provided in the constructor, the name returned by " "``tzname(dt)`` is generated from the value of the ``offset`` as follows. If " @@ -3325,106 +3345,106 @@ msgid "" "are two digits of ``offset.hours`` and ``offset.minutes`` respectively." msgstr "" -#: library/datetime.rst:2404 +#: library/datetime.rst:2420 msgid "" "Name generated from ``offset=timedelta(0)`` is now plain ``'UTC'``, not " "``'UTC+00:00'``." msgstr "" -#: library/datetime.rst:2411 +#: library/datetime.rst:2427 msgid "Always returns ``None``." msgstr "" -#: library/datetime.rst:2415 +#: library/datetime.rst:2431 msgid "" "Return ``dt + offset``. The *dt* argument must be an aware :class:`." "datetime` instance, with ``tzinfo`` set to ``self``." msgstr "" -#: library/datetime.rst:2422 +#: library/datetime.rst:2438 msgid "The UTC time zone, ``timezone(timedelta(0))``." msgstr "" -#: library/datetime.rst:2431 +#: library/datetime.rst:2447 msgid ":meth:`~.datetime.strftime` and :meth:`~.datetime.strptime` Behavior" msgstr "" -#: library/datetime.rst:2433 +#: library/datetime.rst:2449 msgid "" ":class:`date`, :class:`.datetime`, and :class:`.time` objects all support a " "``strftime(format)`` method, to create a string representing the time under " "the control of an explicit format string." msgstr "" -#: library/datetime.rst:2437 +#: library/datetime.rst:2453 msgid "" "Conversely, the :meth:`date.strptime`, :meth:`datetime.strptime` and :meth:" "`time.strptime` class methods create an object from a string representing " "the time and a corresponding format string." msgstr "" -#: library/datetime.rst:2441 +#: library/datetime.rst:2457 msgid "" "The table below provides a high-level comparison of :meth:`~.datetime." "strftime` versus :meth:`~.datetime.strptime`:" msgstr "" -#: library/datetime.rst:2445 +#: library/datetime.rst:2461 msgid "``strftime``" msgstr "" -#: library/datetime.rst:2445 +#: library/datetime.rst:2461 msgid "``strptime``" msgstr "" -#: library/datetime.rst:2447 +#: library/datetime.rst:2463 msgid "Usage" msgstr "" -#: library/datetime.rst:2447 +#: library/datetime.rst:2463 msgid "Convert object to a string according to a given format" msgstr "" -#: library/datetime.rst:2447 +#: library/datetime.rst:2463 msgid "Parse a string into an object given a corresponding format" msgstr "" -#: library/datetime.rst:2449 +#: library/datetime.rst:2465 msgid "Type of method" msgstr "" -#: library/datetime.rst:2449 +#: library/datetime.rst:2465 msgid "Instance method" msgstr "" -#: library/datetime.rst:2449 +#: library/datetime.rst:2465 msgid "Class method" msgstr "" -#: library/datetime.rst:2451 +#: library/datetime.rst:2467 msgid "Signature" msgstr "" -#: library/datetime.rst:2451 +#: library/datetime.rst:2467 msgid "``strftime(format)``" msgstr "" -#: library/datetime.rst:2451 +#: library/datetime.rst:2467 msgid "``strptime(date_string, format)``" msgstr "" -#: library/datetime.rst:2458 +#: library/datetime.rst:2474 msgid "" ":meth:`~.datetime.strftime` and :meth:`~.datetime.strptime` Format Codes" msgstr "" -#: library/datetime.rst:2460 +#: library/datetime.rst:2476 msgid "" "These methods accept format codes that can be used to parse and format " "dates::" msgstr "" -#: library/datetime.rst:2462 +#: library/datetime.rst:2478 msgid "" ">>> datetime.strptime('31/01/22 23:59:59.999999',\n" "... '%d/%m/%y %H:%M:%S.%f')\n" @@ -3433,33 +3453,33 @@ msgid "" "'Mon 31 Jan 2022, 11:59PM'" msgstr "" -#: library/datetime.rst:2468 +#: library/datetime.rst:2484 msgid "" "The following is a list of all the format codes that the 1989 C standard " "requires, and these work on all platforms with a standard C implementation." msgstr "" -#: library/datetime.rst:2575 +#: library/datetime.rst:2591 msgid "Directive" msgstr "" -#: library/datetime.rst:2575 +#: library/datetime.rst:2591 msgid "Meaning" msgstr "" -#: library/datetime.rst:2575 +#: library/datetime.rst:2591 msgid "Example" msgstr "" -#: library/datetime.rst:2575 +#: library/datetime.rst:2591 msgid "Notes" msgstr "" -#: library/datetime.rst:2474 +#: library/datetime.rst:2490 msgid "``%a``" msgstr "" -#: library/datetime.rst:2474 +#: library/datetime.rst:2490 msgid "Weekday as locale's abbreviated name." msgstr "" @@ -3471,11 +3491,11 @@ msgstr "" msgid "So, Mo, ..., Sa (de_DE)" msgstr "" -#: library/datetime.rst:2479 +#: library/datetime.rst:2495 msgid "``%A``" msgstr "" -#: library/datetime.rst:2479 +#: library/datetime.rst:2495 msgid "Weekday as locale's full name." msgstr "" @@ -3487,40 +3507,40 @@ msgstr "" msgid "Sonntag, Montag, ..., Samstag (de_DE)" msgstr "" -#: library/datetime.rst:2484 +#: library/datetime.rst:2500 msgid "``%w``" msgstr "" -#: library/datetime.rst:2484 +#: library/datetime.rst:2500 msgid "Weekday as a decimal number, where 0 is Sunday and 6 is Saturday." msgstr "" -#: library/datetime.rst:2484 +#: library/datetime.rst:2500 msgid "0, 1, ..., 6" msgstr "" -#: library/datetime.rst:2488 +#: library/datetime.rst:2504 msgid "``%d``" msgstr "" -#: library/datetime.rst:2488 +#: library/datetime.rst:2504 msgid "Day of the month as a zero-padded decimal number." msgstr "" -#: library/datetime.rst:2488 +#: library/datetime.rst:2504 msgid "01, 02, ..., 31" msgstr "" -#: library/datetime.rst:2501 library/datetime.rst:2510 -#: library/datetime.rst:2519 library/datetime.rst:2537 +#: library/datetime.rst:2517 library/datetime.rst:2526 +#: library/datetime.rst:2535 library/datetime.rst:2553 msgid "\\(9)" msgstr "" -#: library/datetime.rst:2491 +#: library/datetime.rst:2507 msgid "``%b``" msgstr "" -#: library/datetime.rst:2491 +#: library/datetime.rst:2507 msgid "Month as locale's abbreviated name." msgstr "" @@ -3532,11 +3552,11 @@ msgstr "" msgid "Jan, Feb, ..., Dez (de_DE)" msgstr "" -#: library/datetime.rst:2496 +#: library/datetime.rst:2512 msgid "``%B``" msgstr "" -#: library/datetime.rst:2496 +#: library/datetime.rst:2512 msgid "Month as locale's full name." msgstr "" @@ -3548,67 +3568,67 @@ msgstr "" msgid "Januar, Februar, ..., Dezember (de_DE)" msgstr "" -#: library/datetime.rst:2501 +#: library/datetime.rst:2517 msgid "``%m``" msgstr "" -#: library/datetime.rst:2501 +#: library/datetime.rst:2517 msgid "Month as a zero-padded decimal number." msgstr "" -#: library/datetime.rst:2513 +#: library/datetime.rst:2529 msgid "01, 02, ..., 12" msgstr "" -#: library/datetime.rst:2504 +#: library/datetime.rst:2520 msgid "``%y``" msgstr "" -#: library/datetime.rst:2504 +#: library/datetime.rst:2520 msgid "Year without century as a zero-padded decimal number." msgstr "" -#: library/datetime.rst:2504 +#: library/datetime.rst:2520 msgid "00, 01, ..., 99" msgstr "" -#: library/datetime.rst:2507 +#: library/datetime.rst:2523 msgid "``%Y``" msgstr "" -#: library/datetime.rst:2507 +#: library/datetime.rst:2523 msgid "Year with century as a decimal number." msgstr "" -#: library/datetime.rst:2577 +#: library/datetime.rst:2593 msgid "0001, 0002, ..., 2013, 2014, ..., 9998, 9999" msgstr "" -#: library/datetime.rst:2510 +#: library/datetime.rst:2526 msgid "``%H``" msgstr "" -#: library/datetime.rst:2510 +#: library/datetime.rst:2526 msgid "Hour (24-hour clock) as a zero-padded decimal number." msgstr "" -#: library/datetime.rst:2510 +#: library/datetime.rst:2526 msgid "00, 01, ..., 23" msgstr "" -#: library/datetime.rst:2513 +#: library/datetime.rst:2529 msgid "``%I``" msgstr "" -#: library/datetime.rst:2513 +#: library/datetime.rst:2529 msgid "Hour (12-hour clock) as a zero-padded decimal number." msgstr "" -#: library/datetime.rst:2516 +#: library/datetime.rst:2532 msgid "``%p``" msgstr "" -#: library/datetime.rst:2516 +#: library/datetime.rst:2532 msgid "Locale's equivalent of either AM or PM." msgstr "" @@ -3620,127 +3640,127 @@ msgstr "" msgid "am, pm (de_DE)" msgstr "" -#: library/datetime.rst:2516 +#: library/datetime.rst:2532 msgid "\\(1), \\(3)" msgstr "" -#: library/datetime.rst:2519 +#: library/datetime.rst:2535 msgid "``%M``" msgstr "" -#: library/datetime.rst:2519 +#: library/datetime.rst:2535 msgid "Minute as a zero-padded decimal number." msgstr "" -#: library/datetime.rst:2522 +#: library/datetime.rst:2538 msgid "00, 01, ..., 59" msgstr "" -#: library/datetime.rst:2522 +#: library/datetime.rst:2538 msgid "``%S``" msgstr "" -#: library/datetime.rst:2522 +#: library/datetime.rst:2538 msgid "Second as a zero-padded decimal number." msgstr "" -#: library/datetime.rst:2522 +#: library/datetime.rst:2538 msgid "\\(4), \\(9)" msgstr "" -#: library/datetime.rst:2525 +#: library/datetime.rst:2541 msgid "``%f``" msgstr "" -#: library/datetime.rst:2525 +#: library/datetime.rst:2541 msgid "Microsecond as a decimal number, zero-padded to 6 digits." msgstr "" -#: library/datetime.rst:2525 +#: library/datetime.rst:2541 msgid "000000, 000001, ..., 999999" msgstr "" -#: library/datetime.rst:2525 +#: library/datetime.rst:2541 msgid "\\(5)" msgstr "" -#: library/datetime.rst:2688 +#: library/datetime.rst:2704 msgid "``%z``" msgstr "" -#: library/datetime.rst:2529 +#: library/datetime.rst:2545 msgid "" "UTC offset in the form ``±HHMM[SS[.ffffff]]`` (empty string if the object is " "naive)." msgstr "" -#: library/datetime.rst:2529 +#: library/datetime.rst:2545 msgid "(empty), +0000, -0400, +1030, +063415, -030712.345216" msgstr "" -#: library/datetime.rst:2534 library/datetime.rst:2591 +#: library/datetime.rst:2550 library/datetime.rst:2607 msgid "\\(6)" msgstr "" -#: library/datetime.rst:2714 +#: library/datetime.rst:2730 msgid "``%Z``" msgstr "" -#: library/datetime.rst:2534 +#: library/datetime.rst:2550 msgid "Time zone name (empty string if the object is naive)." msgstr "" -#: library/datetime.rst:2534 +#: library/datetime.rst:2550 msgid "(empty), UTC, GMT" msgstr "" -#: library/datetime.rst:2537 +#: library/datetime.rst:2553 msgid "``%j``" msgstr "" -#: library/datetime.rst:2537 +#: library/datetime.rst:2553 msgid "Day of the year as a zero-padded decimal number." msgstr "" -#: library/datetime.rst:2537 +#: library/datetime.rst:2553 msgid "001, 002, ..., 366" msgstr "" -#: library/datetime.rst:2540 +#: library/datetime.rst:2556 msgid "``%U``" msgstr "" -#: library/datetime.rst:2540 +#: library/datetime.rst:2556 msgid "" "Week number of the year (Sunday as the first day of the week) as a zero-" "padded decimal number. All days in a new year preceding the first Sunday are " "considered to be in week 0." msgstr "" -#: library/datetime.rst:2548 +#: library/datetime.rst:2564 msgid "00, 01, ..., 53" msgstr "" -#: library/datetime.rst:2548 +#: library/datetime.rst:2564 msgid "\\(7), \\(9)" msgstr "" -#: library/datetime.rst:2548 +#: library/datetime.rst:2564 msgid "``%W``" msgstr "" -#: library/datetime.rst:2548 +#: library/datetime.rst:2564 msgid "" "Week number of the year (Monday as the first day of the week) as a zero-" "padded decimal number. All days in a new year preceding the first Monday are " "considered to be in week 0." msgstr "" -#: library/datetime.rst:2556 +#: library/datetime.rst:2572 msgid "``%c``" msgstr "" -#: library/datetime.rst:2556 +#: library/datetime.rst:2572 msgid "Locale's appropriate date and time representation." msgstr "" @@ -3752,11 +3772,11 @@ msgstr "" msgid "Di 16 Aug 21:30:00 1988 (de_DE)" msgstr "" -#: library/datetime.rst:2561 +#: library/datetime.rst:2577 msgid "``%x``" msgstr "" -#: library/datetime.rst:2561 +#: library/datetime.rst:2577 msgid "Locale's appropriate date representation." msgstr "" @@ -3772,11 +3792,11 @@ msgstr "" msgid "16.08.1988 (de_DE)" msgstr "" -#: library/datetime.rst:2565 +#: library/datetime.rst:2581 msgid "``%X``" msgstr "" -#: library/datetime.rst:2565 +#: library/datetime.rst:2581 msgid "Locale's appropriate time representation." msgstr "" @@ -3788,83 +3808,83 @@ msgstr "" msgid "21:30:00 (de_DE)" msgstr "" -#: library/datetime.rst:2568 +#: library/datetime.rst:2584 msgid "``%%``" msgstr "" -#: library/datetime.rst:2568 +#: library/datetime.rst:2584 msgid "A literal ``'%'`` character." msgstr "" -#: library/datetime.rst:2568 +#: library/datetime.rst:2584 msgid "%" msgstr "" -#: library/datetime.rst:2571 +#: library/datetime.rst:2587 msgid "" "Several additional directives not required by the C89 standard are included " "for convenience. These parameters all correspond to ISO 8601 date values." msgstr "" -#: library/datetime.rst:2577 +#: library/datetime.rst:2593 msgid "``%G``" msgstr "" -#: library/datetime.rst:2577 +#: library/datetime.rst:2593 msgid "" "ISO 8601 year with century representing the year that contains the greater " "part of the ISO week (``%V``)." msgstr "" -#: library/datetime.rst:2577 +#: library/datetime.rst:2593 msgid "\\(8)" msgstr "" -#: library/datetime.rst:2582 +#: library/datetime.rst:2598 msgid "``%u``" msgstr "" -#: library/datetime.rst:2582 +#: library/datetime.rst:2598 msgid "ISO 8601 weekday as a decimal number where 1 is Monday." msgstr "" -#: library/datetime.rst:2582 +#: library/datetime.rst:2598 msgid "1, 2, ..., 7" msgstr "" -#: library/datetime.rst:2585 +#: library/datetime.rst:2601 msgid "``%V``" msgstr "" -#: library/datetime.rst:2585 +#: library/datetime.rst:2601 msgid "" "ISO 8601 week as a decimal number with Monday as the first day of the week. " "Week 01 is the week containing Jan 4." msgstr "" -#: library/datetime.rst:2585 +#: library/datetime.rst:2601 msgid "01, 02, ..., 53" msgstr "" -#: library/datetime.rst:2585 +#: library/datetime.rst:2601 msgid "\\(8), \\(9)" msgstr "" -#: library/datetime.rst:2710 +#: library/datetime.rst:2726 msgid "``%:z``" msgstr "" -#: library/datetime.rst:2591 +#: library/datetime.rst:2607 msgid "" "UTC offset in the form ``±HH:MM[:SS[.ffffff]]`` (empty string if the object " "is naive)." msgstr "" -#: library/datetime.rst:2591 +#: library/datetime.rst:2607 msgid "(empty), +00:00, -04:00, +10:30, +06:34:15, -03:07:12.345216" msgstr "" -#: library/datetime.rst:2597 +#: library/datetime.rst:2613 msgid "" "These may not be available on all platforms when used with the :meth:`~." "datetime.strftime` method. The ISO 8601 year and ISO 8601 week directives " @@ -3873,7 +3893,7 @@ msgid "" "directives will raise a :exc:`ValueError`." msgstr "" -#: library/datetime.rst:2602 +#: library/datetime.rst:2618 msgid "" "The full set of format codes supported varies across platforms, because " "Python calls the platform C library's :c:func:`strftime` function, and " @@ -3883,58 +3903,58 @@ msgid "" "unsupported format specifiers." msgstr "" -#: library/datetime.rst:2608 +#: library/datetime.rst:2624 msgid "``%G``, ``%u`` and ``%V`` were added." msgstr "" -#: library/datetime.rst:2611 +#: library/datetime.rst:2627 msgid "``%:z`` was added." msgstr "" -#: library/datetime.rst:2615 +#: library/datetime.rst:2631 msgid "Technical Detail" msgstr "" -#: library/datetime.rst:2617 +#: library/datetime.rst:2633 msgid "" "Broadly speaking, ``d.strftime(fmt)`` acts like the :mod:`time` module's " "``time.strftime(fmt, d.timetuple())`` although not all objects support a :" "meth:`~date.timetuple` method." msgstr "" -#: library/datetime.rst:2621 +#: library/datetime.rst:2637 msgid "" "For the :meth:`.datetime.strptime` class method, the default value is " "``1900-01-01T00:00:00.000``: any components not specified in the format " "string will be pulled from the default value. [#]_" msgstr "" -#: library/datetime.rst:2625 +#: library/datetime.rst:2641 msgid "Using ``datetime.strptime(date_string, format)`` is equivalent to::" msgstr "" -#: library/datetime.rst:2629 +#: library/datetime.rst:2645 msgid "" "except when the format includes sub-second components or time zone offset " "information, which are supported in ``datetime.strptime`` but are discarded " "by ``time.strptime``." msgstr "" -#: library/datetime.rst:2633 +#: library/datetime.rst:2649 msgid "" "For :class:`.time` objects, the format codes for year, month, and day should " "not be used, as :class:`!time` objects have no such values. If they're used " "anyway, 1900 is substituted for the year, and 1 for the month and day." msgstr "" -#: library/datetime.rst:2637 +#: library/datetime.rst:2653 msgid "" "For :class:`date` objects, the format codes for hours, minutes, seconds, and " "microseconds should not be used, as :class:`date` objects have no such " "values. If they're used anyway, 0 is substituted for them." msgstr "" -#: library/datetime.rst:2641 +#: library/datetime.rst:2657 msgid "" "For the same reason, handling of format strings containing Unicode code " "points that can't be represented in the charset of the current locale is " @@ -3943,7 +3963,7 @@ msgid "" "`UnicodeError` or return an empty string instead." msgstr "" -#: library/datetime.rst:2650 +#: library/datetime.rst:2666 msgid "" "Because the format depends on the current locale, care should be taken when " "making assumptions about the output value. Field orderings will vary (for " @@ -3951,38 +3971,38 @@ msgid "" "contain non-ASCII characters." msgstr "" -#: library/datetime.rst:2656 +#: library/datetime.rst:2672 msgid "" "The :meth:`~.datetime.strptime` method can parse years in the full [1, 9999] " "range, but years < 1000 must be zero-filled to 4-digit width." msgstr "" -#: library/datetime.rst:2659 +#: library/datetime.rst:2675 msgid "" "In previous versions, :meth:`~.datetime.strftime` method was restricted to " "years >= 1900." msgstr "" -#: library/datetime.rst:2663 +#: library/datetime.rst:2679 msgid "" "In version 3.2, :meth:`~.datetime.strftime` method was restricted to years " ">= 1000." msgstr "" -#: library/datetime.rst:2668 +#: library/datetime.rst:2684 msgid "" "When used with the :meth:`~.datetime.strptime` method, the ``%p`` directive " "only affects the output hour field if the ``%I`` directive is used to parse " "the hour." msgstr "" -#: library/datetime.rst:2672 +#: library/datetime.rst:2688 msgid "" "Unlike the :mod:`time` module, the :mod:`!datetime` module does not support " "leap seconds." msgstr "" -#: library/datetime.rst:2676 +#: library/datetime.rst:2692 msgid "" "When used with the :meth:`~.datetime.strptime` method, the ``%f`` directive " "accepts from one to six digits and zero pads on the right. ``%f`` is an " @@ -3990,17 +4010,17 @@ msgid "" "separately in datetime objects, and therefore always available)." msgstr "" -#: library/datetime.rst:2683 +#: library/datetime.rst:2699 msgid "" "For a naive object, the ``%z``, ``%:z`` and ``%Z`` format codes are replaced " "by empty strings." msgstr "" -#: library/datetime.rst:2686 +#: library/datetime.rst:2702 msgid "For an aware object:" msgstr "" -#: library/datetime.rst:2689 +#: library/datetime.rst:2705 msgid "" ":meth:`~.datetime.utcoffset` is transformed into a string of the form " "``±HHMM[SS[.ffffff]]``, where ``HH`` is a 2-digit string giving the number " @@ -4014,7 +4034,7 @@ msgid "" "replaced with the string ``'-0330'``." msgstr "" -#: library/datetime.rst:2703 +#: library/datetime.rst:2719 msgid "" "When the ``%z`` directive is provided to the :meth:`~.datetime.strptime` " "method, the UTC offsets can have a colon as a separator between hours, " @@ -4023,53 +4043,53 @@ msgid "" "``'+00:00'``." msgstr "" -#: library/datetime.rst:2711 +#: library/datetime.rst:2727 msgid "" "Behaves exactly as ``%z``, but has a colon separator added between hours, " "minutes and seconds." msgstr "" -#: library/datetime.rst:2715 +#: library/datetime.rst:2731 msgid "" "In :meth:`~.datetime.strftime`, ``%Z`` is replaced by an empty string if :" "meth:`~.datetime.tzname` returns ``None``; otherwise ``%Z`` is replaced by " "the returned value, which must be a string." msgstr "" -#: library/datetime.rst:2719 +#: library/datetime.rst:2735 msgid ":meth:`~.datetime.strptime` only accepts certain values for ``%Z``:" msgstr "" -#: library/datetime.rst:2721 +#: library/datetime.rst:2737 msgid "any value in ``time.tzname`` for your machine's locale" msgstr "" -#: library/datetime.rst:2722 +#: library/datetime.rst:2738 msgid "the hard-coded values ``UTC`` and ``GMT``" msgstr "" -#: library/datetime.rst:2724 +#: library/datetime.rst:2740 msgid "" "So someone living in Japan may have ``JST``, ``UTC``, and ``GMT`` as valid " "values, but probably not ``EST``. It will raise ``ValueError`` for invalid " "values." msgstr "" -#: library/datetime.rst:2728 +#: library/datetime.rst:2744 msgid "" "When the ``%z`` directive is provided to the :meth:`~.datetime.strptime` " "method, an aware :class:`.datetime` object will be produced. The ``tzinfo`` " "of the result will be set to a :class:`timezone` instance." msgstr "" -#: library/datetime.rst:2734 +#: library/datetime.rst:2750 msgid "" "When used with the :meth:`~.datetime.strptime` method, ``%U`` and ``%W`` are " "only used in calculations when the day of the week and the calendar year " "(``%Y``) are specified." msgstr "" -#: library/datetime.rst:2739 +#: library/datetime.rst:2755 msgid "" "Similar to ``%U`` and ``%W``, ``%V`` is only used in calculations when the " "day of the week and the ISO year (``%G``) are specified in a :meth:`~." @@ -4077,7 +4097,7 @@ msgid "" "interchangeable." msgstr "" -#: library/datetime.rst:2745 +#: library/datetime.rst:2761 msgid "" "When used with the :meth:`~.datetime.strptime` method, the leading zero is " "optional for formats ``%d``, ``%m``, ``%H``, ``%I``, ``%M``, ``%S``, " @@ -4085,7 +4105,7 @@ msgid "" "zero." msgstr "" -#: library/datetime.rst:2750 +#: library/datetime.rst:2766 msgid "" "When parsing a month and day using :meth:`~.datetime.strptime`, always " "include a year in the format. If the value you need to parse lacks a year, " @@ -4094,7 +4114,7 @@ msgid "" "parser is not a leap year. Users run into this bug every four years..." msgstr "" -#: library/datetime.rst:2756 +#: library/datetime.rst:2772 msgid "" ">>> month_day = \"02/29\"\n" ">>> datetime.strptime(f\"{month_day};1984\", \"%m/%d;%Y\") # No leap year " @@ -4102,7 +4122,7 @@ msgid "" "datetime.datetime(1984, 2, 29, 0, 0)" msgstr "" -#: library/datetime.rst:2762 +#: library/datetime.rst:2778 msgid "" ":meth:`~.datetime.strptime` calls using a format string containing a day of " "month without a year now emit a :exc:`DeprecationWarning`. In 3.15 or later " @@ -4110,15 +4130,15 @@ msgid "" "See :gh:`70647`." msgstr "" -#: library/datetime.rst:2769 +#: library/datetime.rst:2785 msgid "Footnotes" msgstr "" -#: library/datetime.rst:2770 +#: library/datetime.rst:2786 msgid "If, that is, we ignore the effects of Relativity" msgstr "" -#: library/datetime.rst:2772 +#: library/datetime.rst:2788 msgid "" "This matches the definition of the \"proleptic Gregorian\" calendar in " "Dershowitz and Reingold's book *Calendrical Calculations*, where it's the " @@ -4127,23 +4147,23 @@ msgid "" "systems." msgstr "" -#: library/datetime.rst:2778 +#: library/datetime.rst:2794 msgid "" "See R. H. van Gent's `guide to the mathematics of the ISO 8601 calendar " "`_ for a good explanation." msgstr "" -#: library/datetime.rst:2782 +#: library/datetime.rst:2798 msgid "" "Passing ``datetime.strptime('Feb 29', '%b %d')`` will fail since 1900 is not " "a leap year." msgstr "" -#: library/datetime.rst:2425 +#: library/datetime.rst:2441 msgid "% (percent)" msgstr "" -#: library/datetime.rst:2425 +#: library/datetime.rst:2441 msgid "datetime format" msgstr "" diff --git a/library/dbm.po b/library/dbm.po index d9196500..cf43d730 100644 --- a/library/dbm.po +++ b/library/dbm.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/debug.po b/library/debug.po index 24ed77df..a2675794 100644 --- a/library/debug.po +++ b/library/debug.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-26 14:11+0300\n" "Last-Translator: ALEXANDROS TZIORAS alextzioras23@gmail.com\n" "Language-Team: Language-Team: PyGreece \n" diff --git a/library/decimal.po b/library/decimal.po index 846af46f..88aa6021 100644 --- a/library/decimal.po +++ b/library/decimal.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -145,7 +145,7 @@ msgid "" msgstr "" #: library/decimal.rst:125 -msgid "Quick-start Tutorial" +msgid "Quick-start tutorial" msgstr "" #: library/decimal.rst:127 @@ -1080,12 +1080,12 @@ msgstr "" msgid "Return the square root of the argument to full precision." msgstr "" -#: library/decimal.rst:1537 +#: library/decimal.rst:1549 msgid "" "Convert to a string, using engineering notation if an exponent is needed." msgstr "" -#: library/decimal.rst:1539 +#: library/decimal.rst:1551 msgid "" "Engineering notation has an exponent which is a multiple of 3. This can " "leave up to 3 digits to the left of the decimal place and may require the " @@ -1359,65 +1359,62 @@ msgid "" "field is not specified or is :const:`None`, all flags are cleared." msgstr "" -#: library/decimal.rst:1099 +#: library/decimal.rst:1101 msgid "" -"*prec* is an integer in the range [``1``, :const:`MAX_PREC`] that sets the " -"precision for arithmetic operations in the context." +"An integer in the range [``1``, :const:`MAX_PREC`] that sets the precision " +"for arithmetic operations in the context." msgstr "" -#: library/decimal.rst:1102 -msgid "" -"The *rounding* option is one of the constants listed in the section " -"`Rounding Modes`_." +#: library/decimal.rst:1106 +msgid "One of the constants listed in the section `Rounding Modes`_." msgstr "" -#: library/decimal.rst:1105 +#: library/decimal.rst:1111 msgid "" -"The *traps* and *flags* fields list any signals to be set. Generally, new " -"contexts should only set traps and leave the flags clear." +"Lists of any signals to be set. Generally, new contexts should only set " +"traps and leave the flags clear." msgstr "" -#: library/decimal.rst:1108 +#: library/decimal.rst:1117 msgid "" -"The *Emin* and *Emax* fields are integers specifying the outer limits " -"allowable for exponents. *Emin* must be in the range [:const:`MIN_EMIN`, " -"``0``], *Emax* in the range [``0``, :const:`MAX_EMAX`]." +"Integers specifying the outer limits allowable for exponents. *Emin* must be " +"in the range [:const:`MIN_EMIN`, ``0``], *Emax* in the range [``0``, :const:" +"`MAX_EMAX`]." msgstr "" -#: library/decimal.rst:1112 +#: library/decimal.rst:1123 msgid "" -"The *capitals* field is either ``0`` or ``1`` (the default). If set to " -"``1``, exponents are printed with a capital ``E``; otherwise, a lowercase " -"``e`` is used: ``Decimal('6.02e+23')``." +"Either ``0`` or ``1`` (the default). If set to ``1``, exponents are printed " +"with a capital ``E``; otherwise, a lowercase ``e`` is used: " +"``Decimal('6.02e+23')``." msgstr "" -#: library/decimal.rst:1116 +#: library/decimal.rst:1129 msgid "" -"The *clamp* field is either ``0`` (the default) or ``1``. If set to ``1``, " -"the exponent ``e`` of a :class:`Decimal` instance representable in this " -"context is strictly limited to the range ``Emin - prec + 1 <= e <= Emax - " -"prec + 1``. If *clamp* is ``0`` then a weaker condition holds: the adjusted " -"exponent of the :class:`Decimal` instance is at most :attr:`~Context.Emax`. " -"When *clamp* is ``1``, a large normal number will, where possible, have its " -"exponent reduced and a corresponding number of zeros added to its " -"coefficient, in order to fit the exponent constraints; this preserves the " -"value of the number but loses information about significant trailing zeros. " -"For example::" +"Either ``0`` (the default) or ``1``. If set to ``1``, the exponent ``e`` of " +"a :class:`Decimal` instance representable in this context is strictly " +"limited to the range ``Emin - prec + 1 <= e <= Emax - prec + 1``. If *clamp* " +"is ``0`` then a weaker condition holds: the adjusted exponent of the :class:" +"`Decimal` instance is at most :attr:`~Context.Emax`. When *clamp* is ``1``, " +"a large normal number will, where possible, have its exponent reduced and a " +"corresponding number of zeros added to its coefficient, in order to fit the " +"exponent constraints; this preserves the value of the number but loses " +"information about significant trailing zeros. For example::" msgstr "" -#: library/decimal.rst:1128 +#: library/decimal.rst:1140 msgid "" ">>> Context(prec=6, Emax=999, clamp=1).create_decimal('1.23e999')\n" "Decimal('1.23000E+999')" msgstr "" -#: library/decimal.rst:1131 +#: library/decimal.rst:1143 msgid "" "A *clamp* value of ``1`` allows compatibility with the fixed-width decimal " "interchange formats specified in IEEE 754." msgstr "" -#: library/decimal.rst:1134 +#: library/decimal.rst:1146 msgid "" "The :class:`Context` class defines several general purpose methods as well " "as a large number of methods for doing arithmetic directly in a given " @@ -1430,30 +1427,30 @@ msgid "" "instance of :class:`int`) anywhere that a Decimal instance is accepted." msgstr "" -#: library/decimal.rst:1147 +#: library/decimal.rst:1159 msgid "Resets all of the flags to ``0``." msgstr "" -#: library/decimal.rst:1151 +#: library/decimal.rst:1163 msgid "Resets all of the traps to ``0``." msgstr "" -#: library/decimal.rst:1157 +#: library/decimal.rst:1169 msgid "Return a duplicate of the context." msgstr "" -#: library/decimal.rst:1161 +#: library/decimal.rst:1173 msgid "Return a copy of the Decimal instance num." msgstr "" -#: library/decimal.rst:1165 +#: library/decimal.rst:1177 msgid "" "Creates a new Decimal instance from *num* but using *self* as context. " "Unlike the :class:`Decimal` constructor, the context precision, rounding " "method, flags, and traps are applied to the conversion." msgstr "" -#: library/decimal.rst:1169 +#: library/decimal.rst:1181 msgid "" "This is useful because constants are often given to a greater precision than " "is needed by the application. Another benefit is that rounding immediately " @@ -1462,7 +1459,7 @@ msgid "" "sum can change the result:" msgstr "" -#: library/decimal.rst:1175 +#: library/decimal.rst:1187 msgid "" ">>> getcontext().prec = 3\n" ">>> Decimal('3.4445') + Decimal('1.0023')\n" @@ -1471,14 +1468,14 @@ msgid "" "Decimal('4.44')" msgstr "" -#: library/decimal.rst:1183 +#: library/decimal.rst:1195 msgid "" "This method implements the to-number operation of the IBM specification. If " "the argument is a string, no leading or trailing whitespace or underscores " "are permitted." msgstr "" -#: library/decimal.rst:1189 +#: library/decimal.rst:1201 msgid "" "Creates a new Decimal instance from a float *f* but rounding using *self* as " "the context. Unlike the :meth:`Decimal.from_float` class method, the " @@ -1486,7 +1483,7 @@ msgid "" "conversion." msgstr "" -#: library/decimal.rst:1194 +#: library/decimal.rst:1206 msgid "" ">>> context = Context(prec=5, rounding=ROUND_DOWN)\n" ">>> context.create_decimal_from_float(math.pi)\n" @@ -1498,18 +1495,18 @@ msgid "" "decimal.Inexact: None" msgstr "" -#: library/decimal.rst:1209 +#: library/decimal.rst:1221 msgid "" "Returns a value equal to ``Emin - prec + 1`` which is the minimum exponent " "value for subnormal results. When underflow occurs, the exponent is set to :" "const:`Etiny`." msgstr "" -#: library/decimal.rst:1215 +#: library/decimal.rst:1227 msgid "Returns a value equal to ``Emax - prec + 1``." msgstr "" -#: library/decimal.rst:1217 +#: library/decimal.rst:1229 msgid "" "The usual approach to working with decimals is to create :class:`Decimal` " "instances and then apply arithmetic operations which take place within the " @@ -1519,189 +1516,189 @@ msgid "" "recounted here." msgstr "" -#: library/decimal.rst:1227 +#: library/decimal.rst:1239 msgid "Returns the absolute value of *x*." msgstr "" -#: library/decimal.rst:1232 +#: library/decimal.rst:1244 msgid "Return the sum of *x* and *y*." msgstr "" -#: library/decimal.rst:1237 +#: library/decimal.rst:1249 msgid "Returns the same Decimal object *x*." msgstr "" -#: library/decimal.rst:1242 +#: library/decimal.rst:1254 msgid "Compares *x* and *y* numerically." msgstr "" -#: library/decimal.rst:1247 +#: library/decimal.rst:1259 msgid "Compares the values of the two operands numerically." msgstr "" -#: library/decimal.rst:1252 +#: library/decimal.rst:1264 msgid "Compares two operands using their abstract representation." msgstr "" -#: library/decimal.rst:1257 +#: library/decimal.rst:1269 msgid "" "Compares two operands using their abstract representation, ignoring sign." msgstr "" -#: library/decimal.rst:1262 +#: library/decimal.rst:1274 msgid "Returns a copy of *x* with the sign set to 0." msgstr "" -#: library/decimal.rst:1267 +#: library/decimal.rst:1279 msgid "Returns a copy of *x* with the sign inverted." msgstr "" -#: library/decimal.rst:1272 +#: library/decimal.rst:1284 msgid "Copies the sign from *y* to *x*." msgstr "" -#: library/decimal.rst:1277 +#: library/decimal.rst:1289 msgid "Return *x* divided by *y*." msgstr "" -#: library/decimal.rst:1282 +#: library/decimal.rst:1294 msgid "Return *x* divided by *y*, truncated to an integer." msgstr "" -#: library/decimal.rst:1287 +#: library/decimal.rst:1299 msgid "Divides two numbers and returns the integer part of the result." msgstr "" -#: library/decimal.rst:1292 +#: library/decimal.rst:1304 msgid "Returns ``e ** x``." msgstr "" -#: library/decimal.rst:1297 +#: library/decimal.rst:1309 msgid "Returns *x* multiplied by *y*, plus *z*." msgstr "" -#: library/decimal.rst:1302 +#: library/decimal.rst:1314 msgid "Returns ``True`` if *x* is canonical; otherwise returns ``False``." msgstr "" -#: library/decimal.rst:1307 +#: library/decimal.rst:1319 msgid "Returns ``True`` if *x* is finite; otherwise returns ``False``." msgstr "" -#: library/decimal.rst:1312 +#: library/decimal.rst:1324 msgid "Returns ``True`` if *x* is infinite; otherwise returns ``False``." msgstr "" -#: library/decimal.rst:1317 +#: library/decimal.rst:1329 msgid "Returns ``True`` if *x* is a qNaN or sNaN; otherwise returns ``False``." msgstr "" -#: library/decimal.rst:1322 +#: library/decimal.rst:1334 msgid "" "Returns ``True`` if *x* is a normal number; otherwise returns ``False``." msgstr "" -#: library/decimal.rst:1327 +#: library/decimal.rst:1339 msgid "Returns ``True`` if *x* is a quiet NaN; otherwise returns ``False``." msgstr "" -#: library/decimal.rst:1332 +#: library/decimal.rst:1344 msgid "Returns ``True`` if *x* is negative; otherwise returns ``False``." msgstr "" -#: library/decimal.rst:1337 +#: library/decimal.rst:1349 msgid "" "Returns ``True`` if *x* is a signaling NaN; otherwise returns ``False``." msgstr "" -#: library/decimal.rst:1342 +#: library/decimal.rst:1354 msgid "Returns ``True`` if *x* is subnormal; otherwise returns ``False``." msgstr "" -#: library/decimal.rst:1347 +#: library/decimal.rst:1359 msgid "Returns ``True`` if *x* is a zero; otherwise returns ``False``." msgstr "" -#: library/decimal.rst:1352 +#: library/decimal.rst:1364 msgid "Returns the natural (base e) logarithm of *x*." msgstr "" -#: library/decimal.rst:1357 +#: library/decimal.rst:1369 msgid "Returns the base 10 logarithm of *x*." msgstr "" -#: library/decimal.rst:1362 +#: library/decimal.rst:1374 msgid "Returns the exponent of the magnitude of the operand's MSD." msgstr "" -#: library/decimal.rst:1367 +#: library/decimal.rst:1379 msgid "Applies the logical operation *and* between each operand's digits." msgstr "" -#: library/decimal.rst:1372 +#: library/decimal.rst:1384 msgid "Invert all the digits in *x*." msgstr "" -#: library/decimal.rst:1377 +#: library/decimal.rst:1389 msgid "Applies the logical operation *or* between each operand's digits." msgstr "" -#: library/decimal.rst:1382 +#: library/decimal.rst:1394 msgid "Applies the logical operation *xor* between each operand's digits." msgstr "" -#: library/decimal.rst:1387 +#: library/decimal.rst:1399 msgid "Compares two values numerically and returns the maximum." msgstr "" -#: library/decimal.rst:1402 +#: library/decimal.rst:1414 msgid "Compares the values numerically with their sign ignored." msgstr "" -#: library/decimal.rst:1397 +#: library/decimal.rst:1409 msgid "Compares two values numerically and returns the minimum." msgstr "" -#: library/decimal.rst:1407 +#: library/decimal.rst:1419 msgid "Minus corresponds to the unary prefix minus operator in Python." msgstr "" -#: library/decimal.rst:1412 +#: library/decimal.rst:1424 msgid "Return the product of *x* and *y*." msgstr "" -#: library/decimal.rst:1417 +#: library/decimal.rst:1429 msgid "Returns the largest representable number smaller than *x*." msgstr "" -#: library/decimal.rst:1422 +#: library/decimal.rst:1434 msgid "Returns the smallest representable number larger than *x*." msgstr "" -#: library/decimal.rst:1427 +#: library/decimal.rst:1439 msgid "Returns the number closest to *x*, in direction towards *y*." msgstr "" -#: library/decimal.rst:1432 +#: library/decimal.rst:1444 msgid "Reduces *x* to its simplest form." msgstr "" -#: library/decimal.rst:1437 +#: library/decimal.rst:1449 msgid "Returns an indication of the class of *x*." msgstr "" -#: library/decimal.rst:1442 +#: library/decimal.rst:1454 msgid "" "Plus corresponds to the unary prefix plus operator in Python. This " "operation applies the context precision and rounding, so it is *not* an " "identity operation." msgstr "" -#: library/decimal.rst:1449 +#: library/decimal.rst:1461 msgid "Return ``x`` to the power of ``y``, reduced modulo ``modulo`` if given." msgstr "" -#: library/decimal.rst:1451 +#: library/decimal.rst:1463 msgid "" "With two arguments, compute ``x**y``. If ``x`` is negative then ``y`` must " "be integral. The result will be inexact unless ``y`` is integral and the " @@ -1710,42 +1707,42 @@ msgid "" "in the Python version." msgstr "" -#: library/decimal.rst:1457 +#: library/decimal.rst:1469 msgid "" "``Decimal(0) ** Decimal(0)`` results in ``InvalidOperation``, and if " "``InvalidOperation`` is not trapped, then results in ``Decimal('NaN')``." msgstr "" -#: library/decimal.rst:1460 +#: library/decimal.rst:1472 msgid "" "The C module computes :meth:`power` in terms of the correctly rounded :meth:" "`exp` and :meth:`ln` functions. The result is well-defined but only \"almost " "always correctly rounded\"." msgstr "" -#: library/decimal.rst:1465 +#: library/decimal.rst:1477 msgid "" "With three arguments, compute ``(x**y) % modulo``. For the three argument " "form, the following restrictions on the arguments hold:" msgstr "" -#: library/decimal.rst:1468 +#: library/decimal.rst:1480 msgid "all three arguments must be integral" msgstr "" -#: library/decimal.rst:1469 +#: library/decimal.rst:1481 msgid "``y`` must be nonnegative" msgstr "" -#: library/decimal.rst:1470 +#: library/decimal.rst:1482 msgid "at least one of ``x`` or ``y`` must be nonzero" msgstr "" -#: library/decimal.rst:1471 +#: library/decimal.rst:1483 msgid "``modulo`` must be nonzero and have at most 'precision' digits" msgstr "" -#: library/decimal.rst:1473 +#: library/decimal.rst:1485 msgid "" "The value resulting from ``Context.power(x, y, modulo)`` is equal to the " "value that would be obtained by computing ``(x**y) % modulo`` with unbounded " @@ -1754,118 +1751,118 @@ msgid "" "result is always exact." msgstr "" -#: library/decimal.rst:1483 +#: library/decimal.rst:1495 msgid "Returns a value equal to *x* (rounded), having the exponent of *y*." msgstr "" -#: library/decimal.rst:1488 +#: library/decimal.rst:1500 msgid "Just returns 10, as this is Decimal, :)" msgstr "" -#: library/decimal.rst:1493 +#: library/decimal.rst:1505 msgid "Returns the remainder from integer division." msgstr "" -#: library/decimal.rst:1495 +#: library/decimal.rst:1507 msgid "" "The sign of the result, if non-zero, is the same as that of the original " "dividend." msgstr "" -#: library/decimal.rst:1501 +#: library/decimal.rst:1513 msgid "" "Returns ``x - y * n``, where *n* is the integer nearest the exact value of " "``x / y`` (if the result is 0 then its sign will be the sign of *x*)." msgstr "" -#: library/decimal.rst:1507 +#: library/decimal.rst:1519 msgid "Returns a rotated copy of *x*, *y* times." msgstr "" -#: library/decimal.rst:1512 +#: library/decimal.rst:1524 msgid "Returns ``True`` if the two operands have the same exponent." msgstr "" -#: library/decimal.rst:1517 +#: library/decimal.rst:1529 msgid "Returns the first operand after adding the second value its exp." msgstr "" -#: library/decimal.rst:1522 +#: library/decimal.rst:1534 msgid "Returns a shifted copy of *x*, *y* times." msgstr "" -#: library/decimal.rst:1527 +#: library/decimal.rst:1539 msgid "Square root of a non-negative number to context precision." msgstr "" -#: library/decimal.rst:1532 +#: library/decimal.rst:1544 msgid "Return the difference between *x* and *y*." msgstr "" -#: library/decimal.rst:1546 +#: library/decimal.rst:1558 msgid "Rounds to an integer." msgstr "" -#: library/decimal.rst:1551 +#: library/decimal.rst:1563 msgid "Converts a number to a string using scientific notation." msgstr "" -#: library/decimal.rst:1558 +#: library/decimal.rst:1570 msgid "Constants" msgstr "" -#: library/decimal.rst:1560 +#: library/decimal.rst:1572 msgid "" "The constants in this section are only relevant for the C module. They are " "also included in the pure Python version for compatibility." msgstr "" -#: library/decimal.rst:1564 +#: library/decimal.rst:1576 msgid "32-bit" msgstr "" -#: library/decimal.rst:1564 +#: library/decimal.rst:1576 msgid "64-bit" msgstr "" -#: library/decimal.rst:1568 +#: library/decimal.rst:1580 msgid "``425000000``" msgstr "" -#: library/decimal.rst:1568 +#: library/decimal.rst:1580 msgid "``999999999999999999``" msgstr "" -#: library/decimal.rst:1570 +#: library/decimal.rst:1582 msgid "``-425000000``" msgstr "" -#: library/decimal.rst:1570 +#: library/decimal.rst:1582 msgid "``-999999999999999999``" msgstr "" -#: library/decimal.rst:1572 +#: library/decimal.rst:1584 msgid "``-849999999``" msgstr "" -#: library/decimal.rst:1572 +#: library/decimal.rst:1584 msgid "``-1999999999999999997``" msgstr "" -#: library/decimal.rst:1574 +#: library/decimal.rst:1586 msgid "``256``" msgstr "" -#: library/decimal.rst:1574 +#: library/decimal.rst:1586 msgid "``512``" msgstr "" -#: library/decimal.rst:1579 +#: library/decimal.rst:1591 msgid "" "The value is ``True``. Deprecated, because Python now always has threads." msgstr "" -#: library/decimal.rst:1585 +#: library/decimal.rst:1597 msgid "" "The default value is ``True``. If Python is :option:`configured using the --" "without-decimal-contextvar option <--without-decimal-contextvar>`, the C " @@ -1874,55 +1871,55 @@ msgid "" "scenarios." msgstr "" -#: library/decimal.rst:1594 +#: library/decimal.rst:1606 msgid "Rounding modes" msgstr "" -#: library/decimal.rst:1598 +#: library/decimal.rst:1610 msgid "Round towards ``Infinity``." msgstr "" -#: library/decimal.rst:1602 +#: library/decimal.rst:1614 msgid "Round towards zero." msgstr "" -#: library/decimal.rst:1606 +#: library/decimal.rst:1618 msgid "Round towards ``-Infinity``." msgstr "" -#: library/decimal.rst:1610 +#: library/decimal.rst:1622 msgid "Round to nearest with ties going towards zero." msgstr "" -#: library/decimal.rst:1614 +#: library/decimal.rst:1626 msgid "Round to nearest with ties going to nearest even integer." msgstr "" -#: library/decimal.rst:1618 +#: library/decimal.rst:1630 msgid "Round to nearest with ties going away from zero." msgstr "" -#: library/decimal.rst:1622 +#: library/decimal.rst:1634 msgid "Round away from zero." msgstr "" -#: library/decimal.rst:1626 +#: library/decimal.rst:1638 msgid "" "Round away from zero if last digit after rounding towards zero would have " "been 0 or 5; otherwise round towards zero." msgstr "" -#: library/decimal.rst:1633 +#: library/decimal.rst:1645 msgid "Signals" msgstr "" -#: library/decimal.rst:1635 +#: library/decimal.rst:1647 msgid "" "Signals represent conditions that arise during computation. Each corresponds " "to one context flag and one context trap enabler." msgstr "" -#: library/decimal.rst:1638 +#: library/decimal.rst:1650 msgid "" "The context flag is set whenever the condition is encountered. After the " "computation, flags may be checked for informational purposes (for instance, " @@ -1930,7 +1927,7 @@ msgid "" "sure to clear all flags before starting the next computation." msgstr "" -#: library/decimal.rst:1643 +#: library/decimal.rst:1655 msgid "" "If the context's trap enabler is set for the signal, then the condition " "causes a Python exception to be raised. For example, if the :class:" @@ -1938,54 +1935,54 @@ msgid "" "raised upon encountering the condition." msgstr "" -#: library/decimal.rst:1651 +#: library/decimal.rst:1663 msgid "Altered an exponent to fit representation constraints." msgstr "" -#: library/decimal.rst:1653 +#: library/decimal.rst:1665 msgid "" "Typically, clamping occurs when an exponent falls outside the context's :" "attr:`~Context.Emin` and :attr:`~Context.Emax` limits. If possible, the " "exponent is reduced to fit by adding zeros to the coefficient." msgstr "" -#: library/decimal.rst:1660 +#: library/decimal.rst:1672 msgid "Base class for other signals and a subclass of :exc:`ArithmeticError`." msgstr "" -#: library/decimal.rst:1665 +#: library/decimal.rst:1677 msgid "Signals the division of a non-infinite number by zero." msgstr "" -#: library/decimal.rst:1667 +#: library/decimal.rst:1679 msgid "" "Can occur with division, modulo division, or when raising a number to a " "negative power. If this signal is not trapped, returns ``Infinity`` or ``-" "Infinity`` with the sign determined by the inputs to the calculation." msgstr "" -#: library/decimal.rst:1674 +#: library/decimal.rst:1686 msgid "Indicates that rounding occurred and the result is not exact." msgstr "" -#: library/decimal.rst:1676 +#: library/decimal.rst:1688 msgid "" "Signals when non-zero digits were discarded during rounding. The rounded " "result is returned. The signal flag or trap is used to detect when results " "are inexact." msgstr "" -#: library/decimal.rst:1683 +#: library/decimal.rst:1695 msgid "An invalid operation was performed." msgstr "" -#: library/decimal.rst:1685 +#: library/decimal.rst:1697 msgid "" "Indicates that an operation was requested that does not make sense. If not " "trapped, returns ``NaN``. Possible causes include::" msgstr "" -#: library/decimal.rst:1688 +#: library/decimal.rst:1700 msgid "" "Infinity - Infinity\n" "0 * Infinity\n" @@ -1998,11 +1995,11 @@ msgid "" "x ** Infinity" msgstr "" -#: library/decimal.rst:1701 +#: library/decimal.rst:1713 msgid "Numerical overflow." msgstr "" -#: library/decimal.rst:1703 +#: library/decimal.rst:1715 msgid "" "Indicates the exponent is larger than :attr:`Context.Emax` after rounding " "has occurred. If not trapped, the result depends on the rounding mode, " @@ -2011,42 +2008,42 @@ msgid "" "`Rounded` are also signaled." msgstr "" -#: library/decimal.rst:1712 +#: library/decimal.rst:1724 msgid "Rounding occurred though possibly no information was lost." msgstr "" -#: library/decimal.rst:1714 +#: library/decimal.rst:1726 msgid "" "Signaled whenever rounding discards digits; even if those digits are zero " "(such as rounding ``5.00`` to ``5.0``). If not trapped, returns the result " "unchanged. This signal is used to detect loss of significant digits." msgstr "" -#: library/decimal.rst:1722 +#: library/decimal.rst:1734 msgid "Exponent was lower than :attr:`~Context.Emin` prior to rounding." msgstr "" -#: library/decimal.rst:1724 +#: library/decimal.rst:1736 msgid "" "Occurs when an operation result is subnormal (the exponent is too small). If " "not trapped, returns the result unchanged." msgstr "" -#: library/decimal.rst:1730 +#: library/decimal.rst:1742 msgid "Numerical underflow with result rounded to zero." msgstr "" -#: library/decimal.rst:1732 +#: library/decimal.rst:1744 msgid "" "Occurs when a subnormal result is pushed to zero by rounding. :class:" "`Inexact` and :class:`Subnormal` are also signaled." msgstr "" -#: library/decimal.rst:1738 +#: library/decimal.rst:1750 msgid "Enable stricter semantics for mixing floats and Decimals." msgstr "" -#: library/decimal.rst:1740 +#: library/decimal.rst:1752 msgid "" "If the signal is not trapped (default), mixing floats and Decimals is " "permitted in the :class:`~decimal.Decimal` constructor, :meth:`~decimal." @@ -2057,18 +2054,18 @@ msgid "" "Context.create_decimal_from_float` do not set the flag." msgstr "" -#: library/decimal.rst:1748 +#: library/decimal.rst:1760 msgid "" "Otherwise (the signal is trapped), only equality comparisons and explicit " "conversions are silent. All other mixed operations raise :exc:" "`FloatOperation`." msgstr "" -#: library/decimal.rst:1752 +#: library/decimal.rst:1764 msgid "The following table summarizes the hierarchy of signals::" msgstr "" -#: library/decimal.rst:1754 +#: library/decimal.rst:1766 msgid "" "exceptions.ArithmeticError(exceptions.Exception)\n" " DecimalException\n" @@ -2083,15 +2080,15 @@ msgid "" " FloatOperation(DecimalException, exceptions.TypeError)" msgstr "" -#: library/decimal.rst:1773 -msgid "Floating-Point Notes" +#: library/decimal.rst:1785 +msgid "Floating-point notes" msgstr "" -#: library/decimal.rst:1777 +#: library/decimal.rst:1789 msgid "Mitigating round-off error with increased precision" msgstr "" -#: library/decimal.rst:1779 +#: library/decimal.rst:1791 msgid "" "The use of decimal floating point eliminates decimal representation error " "(making it possible to represent ``0.1`` exactly); however, some operations " @@ -2099,7 +2096,7 @@ msgid "" "precision." msgstr "" -#: library/decimal.rst:1783 +#: library/decimal.rst:1795 msgid "" "The effects of round-off error can be amplified by the addition or " "subtraction of nearly offsetting quantities resulting in loss of " @@ -2108,7 +2105,7 @@ msgid "" "of the associative and distributive properties of addition:" msgstr "" -#: library/decimal.rst:1789 +#: library/decimal.rst:1801 msgid "" "# Examples from Seminumerical Algorithms, Section 4.2.2.\n" ">>> from decimal import Decimal, getcontext\n" @@ -2127,13 +2124,13 @@ msgid "" "Decimal('0.0060000')" msgstr "" -#: library/decimal.rst:1807 +#: library/decimal.rst:1819 msgid "" "The :mod:`decimal` module makes it possible to restore the identities by " "expanding the precision sufficiently to avoid loss of significance:" msgstr "" -#: library/decimal.rst:1810 +#: library/decimal.rst:1822 msgid "" ">>> getcontext().prec = 20\n" ">>> u, v, w = Decimal(11111113), Decimal(-11111111), Decimal('7.51111111')\n" @@ -2149,18 +2146,18 @@ msgid "" "Decimal('0.0060000')" msgstr "" -#: library/decimal.rst:1827 +#: library/decimal.rst:1839 msgid "Special values" msgstr "" -#: library/decimal.rst:1829 +#: library/decimal.rst:1841 msgid "" "The number system for the :mod:`decimal` module provides special values " "including ``NaN``, ``sNaN``, ``-Infinity``, ``Infinity``, and two zeros, " "``+0`` and ``-0``." msgstr "" -#: library/decimal.rst:1833 +#: library/decimal.rst:1845 msgid "" "Infinities can be constructed directly with: ``Decimal('Infinity')``. Also, " "they can arise from dividing by zero when the :exc:`DivisionByZero` signal " @@ -2169,14 +2166,14 @@ msgid "" "representable number." msgstr "" -#: library/decimal.rst:1838 +#: library/decimal.rst:1850 msgid "" "The infinities are signed (affine) and can be used in arithmetic operations " "where they get treated as very large, indeterminate numbers. For instance, " "adding a constant to infinity gives another infinite result." msgstr "" -#: library/decimal.rst:1842 +#: library/decimal.rst:1854 msgid "" "Some operations are indeterminate and return ``NaN``, or if the :exc:" "`InvalidOperation` signal is trapped, raise an exception. For example, " @@ -2187,14 +2184,14 @@ msgid "" "the calculation to proceed while flagging specific results as invalid." msgstr "" -#: library/decimal.rst:1850 +#: library/decimal.rst:1862 msgid "" "A variant is ``sNaN`` which signals rather than remaining quiet after every " "operation. This is a useful return value when an invalid result needs to " "interrupt a calculation for special handling." msgstr "" -#: library/decimal.rst:1854 +#: library/decimal.rst:1866 msgid "" "The behavior of Python's comparison operators can be a little surprising " "where a ``NaN`` is involved. A test for equality where one of the operands " @@ -2211,7 +2208,7 @@ msgid "" "compare_signal` methods instead." msgstr "" -#: library/decimal.rst:1867 +#: library/decimal.rst:1879 msgid "" "The signed zeros can result from calculations that underflow. They keep the " "sign that would have resulted if the calculation had been carried out to " @@ -2219,7 +2216,7 @@ msgid "" "negative zeros are treated as equal and their sign is informational." msgstr "" -#: library/decimal.rst:1872 +#: library/decimal.rst:1884 msgid "" "In addition to the two signed zeros which are distinct yet equal, there are " "various representations of zero with differing precisions yet equivalent in " @@ -2228,11 +2225,11 @@ msgid "" "that the following calculation returns a value equal to zero:" msgstr "" -#: library/decimal.rst:1887 +#: library/decimal.rst:1899 msgid "Working with threads" msgstr "" -#: library/decimal.rst:1889 +#: library/decimal.rst:1901 msgid "" "The :func:`getcontext` function accesses a different :class:`Context` object " "for each thread. Having separate thread contexts means that threads may " @@ -2240,13 +2237,13 @@ msgid "" "other threads." msgstr "" -#: library/decimal.rst:1893 +#: library/decimal.rst:1905 msgid "" "Likewise, the :func:`setcontext` function automatically assigns its target " "to the current thread." msgstr "" -#: library/decimal.rst:1896 +#: library/decimal.rst:1908 msgid "" "If :func:`setcontext` has not been called before :func:`getcontext`, then :" "func:`getcontext` will automatically create a new context for use in the " @@ -2254,7 +2251,7 @@ msgid "" "`decimal.DefaultContext` object." msgstr "" -#: library/decimal.rst:1901 +#: library/decimal.rst:1913 msgid "" "The :data:`sys.flags.thread_inherit_context` flag affects the context for " "new threads. If the flag is false, new threads will start with an empty " @@ -2264,7 +2261,7 @@ msgid "" "meth:`threading.Thread.start`." msgstr "" -#: library/decimal.rst:1908 +#: library/decimal.rst:1920 msgid "" "To control the defaults so that each thread will use the same values " "throughout the application, directly modify the *DefaultContext* object. " @@ -2272,7 +2269,7 @@ msgid "" "a race condition between threads calling :func:`getcontext`. For example::" msgstr "" -#: library/decimal.rst:1913 +#: library/decimal.rst:1925 msgid "" "# Set applicationwide defaults for all threads about to be launched\n" "DefaultContext.prec = 12\n" @@ -2288,17 +2285,17 @@ msgid "" " . . ." msgstr "" -#: library/decimal.rst:1932 +#: library/decimal.rst:1944 msgid "Recipes" msgstr "" -#: library/decimal.rst:1934 +#: library/decimal.rst:1946 msgid "" "Here are a few recipes that serve as utility functions and that demonstrate " "ways to work with the :class:`Decimal` class::" msgstr "" -#: library/decimal.rst:1937 +#: library/decimal.rst:1949 msgid "" "def moneyfmt(value, places=2, curr='', sep=',', dp='.',\n" " pos='', neg='-', trailneg=''):\n" @@ -2447,41 +2444,41 @@ msgid "" " return +s" msgstr "" -#: library/decimal.rst:2089 +#: library/decimal.rst:2101 msgid "Decimal FAQ" msgstr "" -#: library/decimal.rst:2091 +#: library/decimal.rst:2103 msgid "" "Q. It is cumbersome to type ``decimal.Decimal('1234.5')``. Is there a way " "to minimize typing when using the interactive interpreter?" msgstr "" -#: library/decimal.rst:2094 +#: library/decimal.rst:2106 msgid "A. Some users abbreviate the constructor to just a single letter:" msgstr "" -#: library/decimal.rst:2100 +#: library/decimal.rst:2112 msgid "" "Q. In a fixed-point application with two decimal places, some inputs have " "many places and need to be rounded. Others are not supposed to have excess " "digits and need to be validated. What methods should be used?" msgstr "" -#: library/decimal.rst:2104 +#: library/decimal.rst:2116 msgid "" "A. The :meth:`~Decimal.quantize` method rounds to a fixed number of decimal " "places. If the :const:`Inexact` trap is set, it is also useful for " "validation:" msgstr "" -#: library/decimal.rst:2122 +#: library/decimal.rst:2134 msgid "" "Q. Once I have valid two place inputs, how do I maintain that invariant " "throughout an application?" msgstr "" -#: library/decimal.rst:2125 +#: library/decimal.rst:2137 msgid "" "A. Some operations like addition, subtraction, and multiplication by an " "integer will automatically preserve fixed point. Others operations, like " @@ -2489,13 +2486,13 @@ msgid "" "places and need to be followed-up with a :meth:`~Decimal.quantize` step:" msgstr "" -#: library/decimal.rst:2143 +#: library/decimal.rst:2155 msgid "" "In developing fixed-point applications, it is convenient to define functions " "to handle the :meth:`~Decimal.quantize` step:" msgstr "" -#: library/decimal.rst:2157 +#: library/decimal.rst:2169 msgid "" "Q. There are many ways to express the same value. The numbers ``200``, " "``200.000``, ``2E2``, and ``.02E+4`` all have the same value at various " @@ -2503,17 +2500,17 @@ msgid "" "canonical value?" msgstr "" -#: library/decimal.rst:2162 +#: library/decimal.rst:2174 msgid "" "A. The :meth:`~Decimal.normalize` method maps all equivalent values to a " "single representative:" msgstr "" -#: library/decimal.rst:2169 +#: library/decimal.rst:2181 msgid "Q. When does rounding occur in a computation?" msgstr "" -#: library/decimal.rst:2171 +#: library/decimal.rst:2183 msgid "" "A. It occurs *after* the computation. The philosophy of the decimal " "specification is that numbers are considered exact and are created " @@ -2523,7 +2520,7 @@ msgid "" "computation::" msgstr "" -#: library/decimal.rst:2178 +#: library/decimal.rst:2190 msgid "" ">>> getcontext().prec = 5\n" ">>> pi = Decimal('3.1415926535') # More than 5 digits\n" @@ -2537,13 +2534,13 @@ msgid "" "Decimal('3.1416')" msgstr "" -#: library/decimal.rst:2189 +#: library/decimal.rst:2201 msgid "" "Q. Some decimal values always print with exponential notation. Is there a " "way to get a non-exponential representation?" msgstr "" -#: library/decimal.rst:2192 +#: library/decimal.rst:2204 msgid "" "A. For some values, exponential notation is the only way to express the " "number of significant places in the coefficient. For example, expressing " @@ -2551,37 +2548,37 @@ msgid "" "original's two-place significance." msgstr "" -#: library/decimal.rst:2197 +#: library/decimal.rst:2209 msgid "" "If an application does not care about tracking significance, it is easy to " "remove the exponent and trailing zeroes, losing significance, but keeping " "the value unchanged:" msgstr "" -#: library/decimal.rst:2207 +#: library/decimal.rst:2219 msgid "Q. Is there a way to convert a regular float to a :class:`Decimal`?" msgstr "" -#: library/decimal.rst:2209 +#: library/decimal.rst:2221 msgid "" "A. Yes, any binary floating-point number can be exactly expressed as a " "Decimal though an exact conversion may take more precision than intuition " "would suggest:" msgstr "" -#: library/decimal.rst:2213 +#: library/decimal.rst:2225 msgid "" ">>> Decimal(math.pi)\n" "Decimal('3.141592653589793115997963468544185161590576171875')" msgstr "" -#: library/decimal.rst:2218 +#: library/decimal.rst:2230 msgid "" "Q. Within a complex calculation, how can I make sure that I haven't gotten a " "spurious result because of insufficient precision or rounding anomalies." msgstr "" -#: library/decimal.rst:2221 +#: library/decimal.rst:2233 msgid "" "A. The decimal module makes it easy to test results. A best practice is to " "re-run calculations using greater precision and with various rounding modes. " @@ -2589,14 +2586,14 @@ msgid "" "issues, ill-conditioned inputs, or a numerically unstable algorithm." msgstr "" -#: library/decimal.rst:2226 +#: library/decimal.rst:2238 msgid "" "Q. I noticed that context precision is applied to the results of operations " "but not to the inputs. Is there anything to watch out for when mixing " "values of different precisions?" msgstr "" -#: library/decimal.rst:2230 +#: library/decimal.rst:2242 msgid "" "A. Yes. The principle is that all values are considered to be exact and so " "is the arithmetic on those values. Only the results are rounded. The " @@ -2605,7 +2602,7 @@ msgid "" "haven't been rounded:" msgstr "" -#: library/decimal.rst:2235 +#: library/decimal.rst:2247 msgid "" ">>> getcontext().prec = 3\n" ">>> Decimal('3.104') + Decimal('2.104')\n" @@ -2614,30 +2611,30 @@ msgid "" "Decimal('5.20')" msgstr "" -#: library/decimal.rst:2243 +#: library/decimal.rst:2255 msgid "" "The solution is either to increase precision or to force rounding of inputs " "using the unary plus operation:" msgstr "" -#: library/decimal.rst:2246 +#: library/decimal.rst:2258 msgid "" ">>> getcontext().prec = 3\n" ">>> +Decimal('1.23456789') # unary plus triggers rounding\n" "Decimal('1.23')" msgstr "" -#: library/decimal.rst:2252 +#: library/decimal.rst:2264 msgid "" "Alternatively, inputs can be rounded upon creation using the :meth:`Context." "create_decimal` method:" msgstr "" -#: library/decimal.rst:2258 +#: library/decimal.rst:2270 msgid "Q. Is the CPython implementation fast for large numbers?" msgstr "" -#: library/decimal.rst:2260 +#: library/decimal.rst:2272 msgid "" "A. Yes. In the CPython and PyPy3 implementations, the C/CFFI versions of " "the decimal module integrate the high speed `libmpdec >> setcontext(Context(prec=MAX_PREC, Emax=MAX_EMAX, Emin=MIN_EMIN))\n" ">>> x = Decimal(2) ** 256\n" @@ -2672,13 +2669,13 @@ msgid "" "Decimal('904625697166532776746648320380374280103671755200316906558262375061821325312')" msgstr "" -#: library/decimal.rst:2283 +#: library/decimal.rst:2295 msgid "" "For inexact results, :const:`MAX_PREC` is far too large on 64-bit platforms " "and the available memory will be insufficient::" msgstr "" -#: library/decimal.rst:2286 +#: library/decimal.rst:2298 msgid "" ">>> Decimal(1) / 3\n" "Traceback (most recent call last):\n" @@ -2686,7 +2683,7 @@ msgid "" "MemoryError" msgstr "" -#: library/decimal.rst:2291 +#: library/decimal.rst:2303 msgid "" "On systems with overallocation (e.g. Linux), a more sophisticated approach " "is to adjust :attr:`~Context.prec` to the amount of available RAM. Suppose " @@ -2694,7 +2691,7 @@ msgid "" "of 500MB each::" msgstr "" -#: library/decimal.rst:2295 +#: library/decimal.rst:2307 msgid "" ">>> import sys\n" ">>>\n" @@ -2718,14 +2715,14 @@ msgid "" " decimal.Inexact: []" msgstr "" -#: library/decimal.rst:2315 +#: library/decimal.rst:2327 msgid "" "In general (and especially on systems without overallocation), it is " "recommended to estimate even tighter bounds and set the :attr:`Inexact` trap " "if all calculations are expected to be exact." msgstr "" -#: library/decimal.rst:2324 +#: library/decimal.rst:2336 msgid "" "This approach now works for all exact results except for non-integer powers." msgstr "" diff --git a/library/development.po b/library/development.po index d3b85d0e..1c6c6c45 100644 --- a/library/development.po +++ b/library/development.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-22 13:10+0300\n" "Last-Translator: ALEXANDROS TZIORAS alextzioras23@gmail.com\n" "Language-Team: Language-Team: PyGreece \n" diff --git a/library/devmode.po b/library/devmode.po index 8296bd56..01146a27 100644 --- a/library/devmode.po +++ b/library/devmode.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/dialog.po b/library/dialog.po index 758f6174..cc187780 100644 --- a/library/dialog.po +++ b/library/dialog.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/difflib.po b/library/difflib.po index b5d98f10..6e049389 100644 --- a/library/difflib.po +++ b/library/difflib.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/dis.po b/library/dis.po index 52c001da..05a4a706 100644 --- a/library/dis.po +++ b/library/dis.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -735,7 +735,7 @@ msgstr "" msgid "Implements ``STACK[-1] = not STACK[-1]``." msgstr "" -#: library/dis.rst:1333 library/dis.rst:1349 +#: library/dis.rst:1325 library/dis.rst:1341 msgid "This instruction now requires an exact :class:`bool` operand." msgstr "" @@ -795,7 +795,7 @@ msgid "" msgstr "" #: library/dis.rst:730 library/dis.rst:750 library/dis.rst:838 -#: library/dis.rst:1054 library/dis.rst:1176 library/dis.rst:1200 +#: library/dis.rst:1054 library/dis.rst:1168 library/dis.rst:1192 msgid "Implements::" msgstr "" @@ -1074,7 +1074,7 @@ msgid "" "class:`tuple` containing the corresponding values. Otherwise, push ``None``." msgstr "" -#: library/dis.rst:1714 +#: library/dis.rst:1706 msgid "" "Previously, this instruction also pushed a boolean value indicating success " "(``True``) or failure (``False``)." @@ -1177,24 +1177,18 @@ msgstr "" #: library/dis.rst:1099 msgid "" -"Pushes ``co_consts[consti]`` onto the stack. Can be used when the constant " -"value is known to be immortal." -msgstr "" - -#: library/dis.rst:1107 -msgid "" "Pushes the value associated with ``co_names[namei]`` onto the stack. The " "name is looked up within the locals, then the globals, then the builtins." msgstr "" -#: library/dis.rst:1113 +#: library/dis.rst:1105 msgid "" "Pushes a reference to the locals dictionary onto the stack. This is used to " "prepare namespace dictionaries for :opcode:`LOAD_FROM_DICT_OR_DEREF` and :" "opcode:`LOAD_FROM_DICT_OR_GLOBALS`." msgstr "" -#: library/dis.rst:1122 +#: library/dis.rst:1114 msgid "" "Pops a mapping off the stack and looks up the value for ``co_names[namei]``. " "If the name is not found there, looks it up in the globals and then the " @@ -1203,13 +1197,13 @@ msgid "" "bodies." msgstr "" -#: library/dis.rst:1133 +#: library/dis.rst:1125 msgid "" "Creates a tuple consuming *count* items from the stack, and pushes the " "resulting tuple onto the stack::" msgstr "" -#: library/dis.rst:1136 +#: library/dis.rst:1128 msgid "" "if count == 0:\n" " value = ()\n" @@ -1220,74 +1214,74 @@ msgid "" "STACK.append(value)" msgstr "" -#: library/dis.rst:1147 +#: library/dis.rst:1139 msgid "Works as :opcode:`BUILD_TUPLE`, but creates a list." msgstr "" -#: library/dis.rst:1152 +#: library/dis.rst:1144 msgid "Works as :opcode:`BUILD_TUPLE`, but creates a set." msgstr "" -#: library/dis.rst:1157 +#: library/dis.rst:1149 msgid "" "Pushes a new dictionary object onto the stack. Pops ``2 * count`` items so " "that the dictionary holds *count* entries: ``{..., STACK[-4]: STACK[-3], " "STACK[-2]: STACK[-1]}``." msgstr "" -#: library/dis.rst:1161 +#: library/dis.rst:1153 msgid "" "The dictionary is created from stack items instead of creating an empty " "dictionary pre-sized to hold *count* items." msgstr "" -#: library/dis.rst:1168 +#: library/dis.rst:1160 msgid "" "Concatenates *count* strings from the stack and pushes the resulting string " "onto the stack." msgstr "" -#: library/dis.rst:1178 +#: library/dis.rst:1170 msgid "" "seq = STACK.pop()\n" "list.extend(STACK[-i], seq)" msgstr "" -#: library/dis.rst:1181 +#: library/dis.rst:1173 msgid "Used to build lists." msgstr "" -#: library/dis.rst:1190 +#: library/dis.rst:1182 msgid "" "seq = STACK.pop()\n" "set.update(STACK[-i], seq)" msgstr "" -#: library/dis.rst:1193 +#: library/dis.rst:1185 msgid "Used to build sets." msgstr "" -#: library/dis.rst:1202 +#: library/dis.rst:1194 msgid "" "map = STACK.pop()\n" "dict.update(STACK[-i], map)" msgstr "" -#: library/dis.rst:1205 +#: library/dis.rst:1197 msgid "Used to build dicts." msgstr "" -#: library/dis.rst:1212 +#: library/dis.rst:1204 msgid "Like :opcode:`DICT_UPDATE` but raises an exception for duplicate keys." msgstr "" -#: library/dis.rst:1219 +#: library/dis.rst:1211 msgid "" "If the low bit of ``namei`` is not set, this replaces ``STACK[-1]`` with " "``getattr(STACK[-1], co_names[namei>>1])``." msgstr "" -#: library/dis.rst:1222 +#: library/dis.rst:1214 msgid "" "If the low bit of ``namei`` is set, this will attempt to load a method named " "``co_names[namei>>1]`` from the ``STACK[-1]`` object. ``STACK[-1]`` is " @@ -1299,76 +1293,76 @@ msgid "" "pushed." msgstr "" -#: library/dis.rst:1231 +#: library/dis.rst:1223 msgid "" "If the low bit of ``namei`` is set, then a ``NULL`` or ``self`` is pushed to " "the stack before the attribute or unbound method respectively." msgstr "" -#: library/dis.rst:1238 +#: library/dis.rst:1230 msgid "" "This opcode implements :func:`super`, both in its zero-argument and two-" "argument forms (e.g. ``super().method()``, ``super().attr`` and ``super(cls, " "self).method()``, ``super(cls, self).attr``)." msgstr "" -#: library/dis.rst:1242 +#: library/dis.rst:1234 msgid "It pops three values from the stack (from top of stack down):" msgstr "" -#: library/dis.rst:1244 +#: library/dis.rst:1236 msgid "``self``: the first argument to the current method" msgstr "" -#: library/dis.rst:1245 +#: library/dis.rst:1237 msgid "``cls``: the class within which the current method was defined" msgstr "" -#: library/dis.rst:1246 +#: library/dis.rst:1238 msgid "the global ``super``" msgstr "" -#: library/dis.rst:1248 +#: library/dis.rst:1240 msgid "" "With respect to its argument, it works similarly to :opcode:`LOAD_ATTR`, " "except that ``namei`` is shifted left by 2 bits instead of 1." msgstr "" -#: library/dis.rst:1251 +#: library/dis.rst:1243 msgid "" "The low bit of ``namei`` signals to attempt a method load, as with :opcode:" "`LOAD_ATTR`, which results in pushing ``NULL`` and the loaded method. When " "it is unset a single value is pushed to the stack." msgstr "" -#: library/dis.rst:1255 +#: library/dis.rst:1247 msgid "" "The second-low bit of ``namei``, if set, means that this was a two-argument " "call to :func:`super` (unset means zero-argument)." msgstr "" -#: library/dis.rst:1263 +#: library/dis.rst:1255 msgid "" "Performs a Boolean operation. The operation name can be found in " "``cmp_op[opname >> 5]``. If the fifth-lowest bit of ``opname`` is set " "(``opname & 16``), the result should be coerced to ``bool``." msgstr "" -#: library/dis.rst:1267 +#: library/dis.rst:1259 msgid "" "The fifth-lowest bit of the oparg now indicates a forced conversion to :" "class:`bool`." msgstr "" -#: library/dis.rst:1274 +#: library/dis.rst:1266 msgid "Performs ``is`` comparison, or ``is not`` if ``invert`` is 1." msgstr "" -#: library/dis.rst:1281 +#: library/dis.rst:1273 msgid "Performs ``in`` comparison, or ``not in`` if ``invert`` is 1." msgstr "" -#: library/dis.rst:1288 +#: library/dis.rst:1280 msgid "" "Imports the module ``co_names[namei]``. ``STACK[-1]`` and ``STACK[-2]`` are " "popped and provide the *fromlist* and *level* arguments of :func:" @@ -1377,61 +1371,61 @@ msgid "" "opcode:`STORE_FAST` instruction modifies the namespace." msgstr "" -#: library/dis.rst:1296 +#: library/dis.rst:1288 msgid "" "Loads the attribute ``co_names[namei]`` from the module found in " "``STACK[-1]``. The resulting object is pushed onto the stack, to be " "subsequently stored by a :opcode:`STORE_FAST` instruction." msgstr "" -#: library/dis.rst:1303 +#: library/dis.rst:1295 msgid "Increments bytecode counter by *delta*." msgstr "" -#: library/dis.rst:1308 +#: library/dis.rst:1300 msgid "Decrements bytecode counter by *delta*. Checks for interrupts." msgstr "" -#: library/dis.rst:1315 +#: library/dis.rst:1307 msgid "Decrements bytecode counter by *delta*. Does not check for interrupts." msgstr "" -#: library/dis.rst:1322 +#: library/dis.rst:1314 msgid "" "If ``STACK[-1]`` is true, increments the bytecode counter by *delta*. " "``STACK[-1]`` is popped." msgstr "" -#: library/dis.rst:1341 +#: library/dis.rst:1333 msgid "" "The oparg is now a relative delta rather than an absolute target. This " "opcode is a pseudo-instruction, replaced in final bytecode by the directed " "versions (forward/backward)." msgstr "" -#: library/dis.rst:1346 library/dis.rst:1370 +#: library/dis.rst:1338 library/dis.rst:1362 msgid "This is no longer a pseudo-instruction." msgstr "" -#: library/dis.rst:1338 +#: library/dis.rst:1330 msgid "" "If ``STACK[-1]`` is false, increments the bytecode counter by *delta*. " "``STACK[-1]`` is popped." msgstr "" -#: library/dis.rst:1354 +#: library/dis.rst:1346 msgid "" "If ``STACK[-1]`` is not ``None``, increments the bytecode counter by " "*delta*. ``STACK[-1]`` is popped." msgstr "" -#: library/dis.rst:1365 +#: library/dis.rst:1357 msgid "" "If ``STACK[-1]`` is ``None``, increments the bytecode counter by *delta*. " "``STACK[-1]`` is popped." msgstr "" -#: library/dis.rst:1375 +#: library/dis.rst:1367 msgid "" "``STACK[-1]`` is an :term:`iterator`. Call its :meth:`~iterator.__next__` " "method. If this yields a new value, push it on the stack (leaving the " @@ -1439,102 +1433,102 @@ msgid "" "code counter is incremented by *delta*." msgstr "" -#: library/dis.rst:1380 +#: library/dis.rst:1372 msgid "Up until 3.11 the iterator was popped when it was exhausted." msgstr "" -#: library/dis.rst:1385 +#: library/dis.rst:1377 msgid "Loads the global named ``co_names[namei>>1]`` onto the stack." msgstr "" -#: library/dis.rst:1387 +#: library/dis.rst:1379 msgid "" "If the low bit of ``namei`` is set, then a ``NULL`` is pushed to the stack " "before the global variable." msgstr "" -#: library/dis.rst:1393 +#: library/dis.rst:1385 msgid "" "Pushes a reference to the local ``co_varnames[var_num]`` onto the stack." msgstr "" -#: library/dis.rst:1395 +#: library/dis.rst:1387 msgid "" "This opcode is now only used in situations where the local variable is " "guaranteed to be initialized. It cannot raise :exc:`UnboundLocalError`." msgstr "" -#: library/dis.rst:1401 +#: library/dis.rst:1393 msgid "" "Pushes a borrowed reference to the local ``co_varnames[var_num]`` onto the " "stack." msgstr "" -#: library/dis.rst:1408 +#: library/dis.rst:1400 msgid "" "Pushes references to ``co_varnames[var_nums >> 4]`` and " "``co_varnames[var_nums & 15]`` onto the stack." msgstr "" -#: library/dis.rst:1416 +#: library/dis.rst:1408 msgid "" "Pushes borrowed references to ``co_varnames[var_nums >> 4]`` and " "``co_varnames[var_nums & 15]`` onto the stack." msgstr "" -#: library/dis.rst:1423 +#: library/dis.rst:1415 msgid "" "Pushes a reference to the local ``co_varnames[var_num]`` onto the stack, " "raising an :exc:`UnboundLocalError` if the local variable has not been " "initialized." msgstr "" -#: library/dis.rst:1431 +#: library/dis.rst:1423 msgid "" "Pushes a reference to the local ``co_varnames[var_num]`` onto the stack (or " "pushes ``NULL`` onto the stack if the local variable has not been " "initialized) and sets ``co_varnames[var_num]`` to ``NULL``." msgstr "" -#: library/dis.rst:1439 +#: library/dis.rst:1431 msgid "Stores ``STACK.pop()`` into the local ``co_varnames[var_num]``." msgstr "" -#: library/dis.rst:1443 +#: library/dis.rst:1435 msgid "" "Stores ``STACK[-1]`` into ``co_varnames[var_nums >> 4]`` and ``STACK[-2]`` " "into ``co_varnames[var_nums & 15]``." msgstr "" -#: library/dis.rst:1450 +#: library/dis.rst:1442 msgid "" "Stores ``STACK.pop()`` into the local ``co_varnames[var_nums >> 4]`` and " "pushes a reference to the local ``co_varnames[var_nums & 15]`` onto the " "stack." msgstr "" -#: library/dis.rst:1458 +#: library/dis.rst:1450 msgid "Deletes local ``co_varnames[var_num]``." msgstr "" -#: library/dis.rst:1463 +#: library/dis.rst:1455 msgid "" "Creates a new cell in slot ``i``. If that slot is nonempty then that value " "is stored into the new cell." msgstr "" -#: library/dis.rst:1471 +#: library/dis.rst:1463 msgid "" "Loads the cell contained in slot ``i`` of the \"fast locals\" storage. " "Pushes a reference to the object the cell contains on the stack." msgstr "" -#: library/dis.rst:1496 library/dis.rst:1507 +#: library/dis.rst:1488 library/dis.rst:1499 msgid "" "``i`` is no longer offset by the length of :attr:`~codeobject.co_varnames`." msgstr "" -#: library/dis.rst:1480 +#: library/dis.rst:1472 msgid "" "Pops a mapping off the stack and looks up the name associated with slot " "``i`` of the \"fast locals\" storage in this mapping. If the name is not " @@ -1545,112 +1539,112 @@ msgid "" "class bodies." msgstr "" -#: library/dis.rst:1493 +#: library/dis.rst:1485 msgid "" "Stores ``STACK.pop()`` into the cell contained in slot ``i`` of the \"fast " "locals\" storage." msgstr "" -#: library/dis.rst:1502 +#: library/dis.rst:1494 msgid "" "Empties the cell contained in slot ``i`` of the \"fast locals\" storage. " "Used by the :keyword:`del` statement." msgstr "" -#: library/dis.rst:1513 +#: library/dis.rst:1505 msgid "" "Copies the ``n`` :term:`free (closure) variables ` from " "the closure into the frame. Removes the need for special code on the " "caller's side when calling closures." msgstr "" -#: library/dis.rst:1522 +#: library/dis.rst:1514 msgid "" "Raises an exception using one of the 3 forms of the ``raise`` statement, " "depending on the value of *argc*:" msgstr "" -#: library/dis.rst:1525 +#: library/dis.rst:1517 msgid "0: ``raise`` (re-raise previous exception)" msgstr "" -#: library/dis.rst:1526 +#: library/dis.rst:1518 msgid "" "1: ``raise STACK[-1]`` (raise exception instance or type at ``STACK[-1]``)" msgstr "" -#: library/dis.rst:1527 +#: library/dis.rst:1519 msgid "" "2: ``raise STACK[-2] from STACK[-1]`` (raise exception instance or type at " "``STACK[-2]`` with ``__cause__`` set to ``STACK[-1]``)" msgstr "" -#: library/dis.rst:1533 +#: library/dis.rst:1525 msgid "" "Calls a callable object with the number of arguments specified by ``argc``. " "On the stack are (in ascending order):" msgstr "" -#: library/dis.rst:1560 +#: library/dis.rst:1552 msgid "The callable" msgstr "" -#: library/dis.rst:1561 +#: library/dis.rst:1553 msgid "``self`` or ``NULL``" msgstr "" -#: library/dis.rst:1562 +#: library/dis.rst:1554 msgid "The remaining positional arguments" msgstr "" -#: library/dis.rst:1540 +#: library/dis.rst:1532 msgid "``argc`` is the total of the positional arguments, excluding ``self``." msgstr "" -#: library/dis.rst:1542 +#: library/dis.rst:1534 msgid "" "``CALL`` pops all arguments and the callable object off the stack, calls the " "callable object with those arguments, and pushes the return value returned " "by the callable object." msgstr "" -#: library/dis.rst:1548 +#: library/dis.rst:1540 msgid "The callable now always appears at the same position on the stack." msgstr "" -#: library/dis.rst:1551 +#: library/dis.rst:1543 msgid "Calls with keyword arguments are now handled by :opcode:`CALL_KW`." msgstr "" -#: library/dis.rst:1557 +#: library/dis.rst:1549 msgid "" "Calls a callable object with the number of arguments specified by ``argc``, " "including one or more named arguments. On the stack are (in ascending order):" msgstr "" -#: library/dis.rst:1563 +#: library/dis.rst:1555 msgid "The named arguments" msgstr "" -#: library/dis.rst:1564 +#: library/dis.rst:1556 msgid "A :class:`tuple` of keyword argument names" msgstr "" -#: library/dis.rst:1566 +#: library/dis.rst:1558 msgid "" "``argc`` is the total of the positional and named arguments, excluding " "``self``. The length of the tuple of keyword argument names is the number of " "named arguments." msgstr "" -#: library/dis.rst:1569 +#: library/dis.rst:1561 msgid "" "``CALL_KW`` pops all arguments, the keyword names, and the callable object " "off the stack, calls the callable object with those arguments, and pushes " "the return value returned by the callable object." msgstr "" -#: library/dis.rst:1578 +#: library/dis.rst:1570 msgid "" "Calls a callable object with variable set of positional and keyword " "arguments. If the lowest bit of *flags* is set, the top of the stack " @@ -1662,33 +1656,33 @@ msgid "" "arguments, and pushes the return value returned by the callable object." msgstr "" -#: library/dis.rst:1593 +#: library/dis.rst:1585 msgid "" "Pushes a ``NULL`` to the stack. Used in the call sequence to match the " "``NULL`` pushed by :opcode:`LOAD_METHOD` for non-method calls." msgstr "" -#: library/dis.rst:1602 +#: library/dis.rst:1594 msgid "" "Pushes a new function object on the stack built from the code object at " "``STACK[-1]``." msgstr "" -#: library/dis.rst:1604 +#: library/dis.rst:1596 msgid "Flag value ``0x04`` is a tuple of strings instead of dictionary" msgstr "" -#: library/dis.rst:1607 +#: library/dis.rst:1599 msgid "Qualified name at ``STACK[-1]`` was removed." msgstr "" -#: library/dis.rst:1610 +#: library/dis.rst:1602 msgid "" "Extra function attributes on the stack, signaled by oparg flags, were " "removed. They now use :opcode:`SET_FUNCTION_ATTRIBUTE`." msgstr "" -#: library/dis.rst:1617 +#: library/dis.rst:1609 msgid "" "Sets an attribute on a function object. Expects the function at " "``STACK[-1]`` and the attribute value to set at ``STACK[-2]``; consumes both " @@ -1696,42 +1690,42 @@ msgid "" "attribute to set:" msgstr "" -#: library/dis.rst:1621 +#: library/dis.rst:1613 msgid "" "``0x01`` a tuple of default values for positional-only and positional-or-" "keyword parameters in positional order" msgstr "" -#: library/dis.rst:1623 +#: library/dis.rst:1615 msgid "``0x02`` a dictionary of keyword-only parameters' default values" msgstr "" -#: library/dis.rst:1624 +#: library/dis.rst:1616 msgid "``0x04`` a tuple of strings containing parameters' annotations" msgstr "" -#: library/dis.rst:1625 +#: library/dis.rst:1617 msgid "``0x08`` a tuple containing cells for free variables, making a closure" msgstr "" -#: library/dis.rst:1634 +#: library/dis.rst:1626 msgid "" "Pushes a slice object on the stack. *argc* must be 2 or 3. If it is 2, " "implements::" msgstr "" -#: library/dis.rst:1636 +#: library/dis.rst:1628 msgid "" "end = STACK.pop()\n" "start = STACK.pop()\n" "STACK.append(slice(start, end))" msgstr "" -#: library/dis.rst:1640 +#: library/dis.rst:1632 msgid "if it is 3, implements::" msgstr "" -#: library/dis.rst:1642 +#: library/dis.rst:1634 msgid "" "step = STACK.pop()\n" "end = STACK.pop()\n" @@ -1739,11 +1733,11 @@ msgid "" "STACK.append(slice(start, end, step))" msgstr "" -#: library/dis.rst:1647 +#: library/dis.rst:1639 msgid "See the :func:`slice` built-in function for more information." msgstr "" -#: library/dis.rst:1652 +#: library/dis.rst:1644 msgid "" "Prefixes any opcode which has an argument too big to fit into the default " "one byte. *ext* holds an additional byte which act as higher bits in the " @@ -1751,49 +1745,49 @@ msgid "" "allowed, forming an argument from two-byte to four-byte." msgstr "" -#: library/dis.rst:1660 +#: library/dis.rst:1652 msgid "Convert value to a string, depending on ``oparg``::" msgstr "" -#: library/dis.rst:1662 +#: library/dis.rst:1654 msgid "" "value = STACK.pop()\n" "result = func(value)\n" "STACK.append(result)" msgstr "" -#: library/dis.rst:1666 +#: library/dis.rst:1658 msgid "``oparg == 1``: call :func:`str` on *value*" msgstr "" -#: library/dis.rst:1667 +#: library/dis.rst:1659 msgid "``oparg == 2``: call :func:`repr` on *value*" msgstr "" -#: library/dis.rst:1668 +#: library/dis.rst:1660 msgid "``oparg == 3``: call :func:`ascii` on *value*" msgstr "" -#: library/dis.rst:1683 library/dis.rst:1696 +#: library/dis.rst:1675 library/dis.rst:1688 msgid "Used for implementing formatted string literals (f-strings)." msgstr "" -#: library/dis.rst:1677 +#: library/dis.rst:1669 msgid "Formats the value on top of stack::" msgstr "" -#: library/dis.rst:1679 +#: library/dis.rst:1671 msgid "" "value = STACK.pop()\n" "result = value.__format__(\"\")\n" "STACK.append(result)" msgstr "" -#: library/dis.rst:1689 +#: library/dis.rst:1681 msgid "Formats the given value with the given format spec::" msgstr "" -#: library/dis.rst:1691 +#: library/dis.rst:1683 msgid "" "spec = STACK.pop()\n" "value = STACK.pop()\n" @@ -1801,14 +1795,14 @@ msgid "" "STACK.append(result)" msgstr "" -#: library/dis.rst:1703 +#: library/dis.rst:1695 msgid "" "``STACK[-1]`` is a tuple of keyword attribute names, ``STACK[-2]`` is the " "class being matched against, and ``STACK[-3]`` is the match subject. " "*count* is the number of positional sub-patterns." msgstr "" -#: library/dis.rst:1707 +#: library/dis.rst:1699 msgid "" "Pop ``STACK[-1]``, ``STACK[-2]``, and ``STACK[-3]``. If ``STACK[-3]`` is an " "instance of ``STACK[-2]`` and has the positional and keyword attributes " @@ -1816,219 +1810,219 @@ msgid "" "Otherwise, push ``None``." msgstr "" -#: library/dis.rst:1721 +#: library/dis.rst:1713 msgid "A no-op. Performs internal tracing, debugging and optimization checks." msgstr "" -#: library/dis.rst:1723 +#: library/dis.rst:1715 msgid "" "The ``context`` operand consists of two parts. The lowest two bits indicate " "where the ``RESUME`` occurs:" msgstr "" -#: library/dis.rst:1726 +#: library/dis.rst:1718 msgid "" "``0`` The start of a function, which is neither a generator, coroutine nor " "an async generator" msgstr "" -#: library/dis.rst:1728 +#: library/dis.rst:1720 msgid "``1`` After a ``yield`` expression" msgstr "" -#: library/dis.rst:1729 +#: library/dis.rst:1721 msgid "``2`` After a ``yield from`` expression" msgstr "" -#: library/dis.rst:1730 +#: library/dis.rst:1722 msgid "``3`` After an ``await`` expression" msgstr "" -#: library/dis.rst:1732 +#: library/dis.rst:1724 msgid "" "The next bit is ``1`` if the RESUME is at except-depth ``1``, and ``0`` " "otherwise." msgstr "" -#: library/dis.rst:1737 +#: library/dis.rst:1729 msgid "The oparg value changed to include information about except-depth" msgstr "" -#: library/dis.rst:1743 +#: library/dis.rst:1735 msgid "" "Create a generator, coroutine, or async generator from the current frame. " "Used as first opcode of in code object for the above mentioned callables. " "Clear the current frame and return the newly created generator." msgstr "" -#: library/dis.rst:1752 +#: library/dis.rst:1744 msgid "" "Equivalent to ``STACK[-1] = STACK[-2].send(STACK[-1])``. Used in ``yield " "from`` and ``await`` statements." msgstr "" -#: library/dis.rst:1755 +#: library/dis.rst:1747 msgid "" "If the call raises :exc:`StopIteration`, pop the top value from the stack, " "push the exception's ``value`` attribute, and increment the bytecode counter " "by *delta*." msgstr "" -#: library/dis.rst:1764 +#: library/dis.rst:1756 msgid "" "This is not really an opcode. It identifies the dividing line between " "opcodes in the range [0,255] which don't use their argument and those that " "do (``< HAVE_ARGUMENT`` and ``>= HAVE_ARGUMENT``, respectively)." msgstr "" -#: library/dis.rst:1768 +#: library/dis.rst:1760 msgid "" "If your application uses pseudo instructions or specialized instructions, " "use the :data:`hasarg` collection instead." msgstr "" -#: library/dis.rst:1771 +#: library/dis.rst:1763 msgid "" "Now every instruction has an argument, but opcodes ``< HAVE_ARGUMENT`` " "ignore it. Before, only opcodes ``>= HAVE_ARGUMENT`` had an argument." msgstr "" -#: library/dis.rst:1775 +#: library/dis.rst:1767 msgid "" "Pseudo instructions were added to the :mod:`dis` module, and for them it is " "not true that comparison with ``HAVE_ARGUMENT`` indicates whether they use " "their arg." msgstr "" -#: library/dis.rst:1780 +#: library/dis.rst:1772 msgid "Use :data:`hasarg` instead." msgstr "" -#: library/dis.rst:1785 +#: library/dis.rst:1777 msgid "" "Calls an intrinsic function with one argument. Passes ``STACK[-1]`` as the " "argument and sets ``STACK[-1]`` to the result. Used to implement " "functionality that is not performance critical." msgstr "" -#: library/dis.rst:1843 +#: library/dis.rst:1835 msgid "The operand determines which intrinsic function is called:" msgstr "" -#: library/dis.rst:1846 +#: library/dis.rst:1838 msgid "Operand" msgstr "" -#: library/dis.rst:1846 +#: library/dis.rst:1838 msgid "Description" msgstr "" -#: library/dis.rst:1794 +#: library/dis.rst:1786 msgid "``INTRINSIC_1_INVALID``" msgstr "" -#: library/dis.rst:1848 +#: library/dis.rst:1840 msgid "Not valid" msgstr "" -#: library/dis.rst:1796 +#: library/dis.rst:1788 msgid "``INTRINSIC_PRINT``" msgstr "" -#: library/dis.rst:1796 +#: library/dis.rst:1788 msgid "Prints the argument to standard out. Used in the REPL." msgstr "" -#: library/dis.rst:1799 +#: library/dis.rst:1791 msgid "``INTRINSIC_IMPORT_STAR``" msgstr "" -#: library/dis.rst:1799 +#: library/dis.rst:1791 msgid "Performs ``import *`` for the named module." msgstr "" -#: library/dis.rst:1802 +#: library/dis.rst:1794 msgid "``INTRINSIC_STOPITERATION_ERROR``" msgstr "" -#: library/dis.rst:1802 +#: library/dis.rst:1794 msgid "Extracts the return value from a ``StopIteration`` exception." msgstr "" -#: library/dis.rst:1805 +#: library/dis.rst:1797 msgid "``INTRINSIC_ASYNC_GEN_WRAP``" msgstr "" -#: library/dis.rst:1805 +#: library/dis.rst:1797 msgid "Wraps an async generator value" msgstr "" -#: library/dis.rst:1807 +#: library/dis.rst:1799 msgid "``INTRINSIC_UNARY_POSITIVE``" msgstr "" -#: library/dis.rst:1807 +#: library/dis.rst:1799 msgid "Performs the unary ``+`` operation" msgstr "" -#: library/dis.rst:1810 +#: library/dis.rst:1802 msgid "``INTRINSIC_LIST_TO_TUPLE``" msgstr "" -#: library/dis.rst:1810 +#: library/dis.rst:1802 msgid "Converts a list to a tuple" msgstr "" -#: library/dis.rst:1812 +#: library/dis.rst:1804 msgid "``INTRINSIC_TYPEVAR``" msgstr "" -#: library/dis.rst:1812 +#: library/dis.rst:1804 msgid "Creates a :class:`typing.TypeVar`" msgstr "" -#: library/dis.rst:1814 +#: library/dis.rst:1806 msgid "``INTRINSIC_PARAMSPEC``" msgstr "" -#: library/dis.rst:1814 +#: library/dis.rst:1806 msgid "Creates a :class:`typing.ParamSpec`" msgstr "" -#: library/dis.rst:1817 +#: library/dis.rst:1809 msgid "``INTRINSIC_TYPEVARTUPLE``" msgstr "" -#: library/dis.rst:1817 +#: library/dis.rst:1809 msgid "Creates a :class:`typing.TypeVarTuple`" msgstr "" -#: library/dis.rst:1820 +#: library/dis.rst:1812 msgid "``INTRINSIC_SUBSCRIPT_GENERIC``" msgstr "" -#: library/dis.rst:1820 +#: library/dis.rst:1812 msgid "Returns :class:`typing.Generic` subscripted with the argument" msgstr "" -#: library/dis.rst:1823 +#: library/dis.rst:1815 msgid "``INTRINSIC_TYPEALIAS``" msgstr "" -#: library/dis.rst:1823 +#: library/dis.rst:1815 msgid "" "Creates a :class:`typing.TypeAliasType`; used in the :keyword:`type` " "statement. The argument is a tuple of the type alias's name, type " "parameters, and value." msgstr "" -#: library/dis.rst:1835 +#: library/dis.rst:1827 msgid "" "Calls an intrinsic function with two arguments. Used to implement " "functionality that is not performance critical::" msgstr "" -#: library/dis.rst:1838 +#: library/dis.rst:1830 msgid "" "arg2 = STACK.pop()\n" "arg1 = STACK.pop()\n" @@ -2036,43 +2030,43 @@ msgid "" "STACK.append(result)" msgstr "" -#: library/dis.rst:1848 +#: library/dis.rst:1840 msgid "``INTRINSIC_2_INVALID``" msgstr "" -#: library/dis.rst:1850 +#: library/dis.rst:1842 msgid "``INTRINSIC_PREP_RERAISE_STAR``" msgstr "" -#: library/dis.rst:1850 +#: library/dis.rst:1842 msgid "Calculates the :exc:`ExceptionGroup` to raise from a ``try-except*``." msgstr "" -#: library/dis.rst:1854 +#: library/dis.rst:1846 msgid "``INTRINSIC_TYPEVAR_WITH_BOUND``" msgstr "" -#: library/dis.rst:1854 +#: library/dis.rst:1846 msgid "Creates a :class:`typing.TypeVar` with a bound." msgstr "" -#: library/dis.rst:1857 +#: library/dis.rst:1849 msgid "``INTRINSIC_TYPEVAR_WITH_CONSTRAINTS``" msgstr "" -#: library/dis.rst:1857 +#: library/dis.rst:1849 msgid "Creates a :class:`typing.TypeVar` with constraints." msgstr "" -#: library/dis.rst:1861 +#: library/dis.rst:1853 msgid "``INTRINSIC_SET_FUNCTION_TYPE_PARAMS``" msgstr "" -#: library/dis.rst:1861 +#: library/dis.rst:1853 msgid "Sets the ``__type_params__`` attribute of a function." msgstr "" -#: library/dis.rst:1870 +#: library/dis.rst:1862 msgid "" "Performs special method lookup on ``STACK[-1]``. If ``type(STACK[-1])." "__xxx__`` is a method, leave ``type(STACK[-1]).__xxx__; STACK[-1]`` on the " @@ -2080,25 +2074,25 @@ msgid "" "__xxx__; NULL`` on the stack." msgstr "" -#: library/dis.rst:1879 +#: library/dis.rst:1871 msgid "**Pseudo-instructions**" msgstr "" -#: library/dis.rst:1881 +#: library/dis.rst:1873 msgid "" "These opcodes do not appear in Python bytecode. They are used by the " "compiler but are replaced by real opcodes or removed before bytecode is " "generated." msgstr "" -#: library/dis.rst:1886 +#: library/dis.rst:1878 msgid "" "Set up an exception handler for the following code block. If an exception " "occurs, the value stack level is restored to its current state and control " "is transferred to the exception handler at ``target``." msgstr "" -#: library/dis.rst:1893 +#: library/dis.rst:1885 msgid "" "Like ``SETUP_FINALLY``, but in case of an exception also pushes the last " "instruction (``lasti``) to the stack so that ``RERAISE`` can restore it. If " @@ -2107,97 +2101,97 @@ msgid "" "exception handler at ``target``." msgstr "" -#: library/dis.rst:1902 +#: library/dis.rst:1894 msgid "" "Like ``SETUP_CLEANUP``, but in case of an exception one more item is popped " "from the stack before control is transferred to the exception handler at " "``target``." msgstr "" -#: library/dis.rst:1906 +#: library/dis.rst:1898 msgid "" "This variant is used in :keyword:`with` and :keyword:`async with` " "constructs, which push the return value of the context manager's :meth:" "`~object.__enter__` or :meth:`~object.__aenter__` to the stack." msgstr "" -#: library/dis.rst:1913 +#: library/dis.rst:1905 msgid "" "Marks the end of the code block associated with the last ``SETUP_FINALLY``, " "``SETUP_CLEANUP`` or ``SETUP_WITH``." msgstr "" -#: library/dis.rst:1919 +#: library/dis.rst:1911 msgid "" "Undirected relative jump instructions which are replaced by their directed " "(forward/backward) counterparts by the assembler." msgstr "" -#: library/dis.rst:1925 +#: library/dis.rst:1917 msgid "" "Conditional jumps which do not impact the stack. Replaced by the sequence " "``COPY 1``, ``TO_BOOL``, ``POP_JUMP_IF_TRUE/FALSE``." msgstr "" -#: library/dis.rst:1930 +#: library/dis.rst:1922 msgid "" "Pushes a reference to the cell contained in slot ``i`` of the \"fast " "locals\" storage." msgstr "" -#: library/dis.rst:1933 +#: library/dis.rst:1925 msgid "" "Note that ``LOAD_CLOSURE`` is replaced with ``LOAD_FAST`` in the assembler." msgstr "" -#: library/dis.rst:1935 +#: library/dis.rst:1927 msgid "This opcode is now a pseudo-instruction." msgstr "" -#: library/dis.rst:1941 +#: library/dis.rst:1933 msgid "" "Optimized unbound method lookup. Emitted as a ``LOAD_ATTR`` opcode with a " "flag set in the arg." msgstr "" -#: library/dis.rst:1948 +#: library/dis.rst:1940 msgid "Opcode collections" msgstr "" -#: library/dis.rst:1950 +#: library/dis.rst:1942 msgid "" "These collections are provided for automatic introspection of bytecode " "instructions:" msgstr "" -#: library/dis.rst:1953 +#: library/dis.rst:1945 msgid "" "The collections now contain pseudo instructions and instrumented " "instructions as well. These are opcodes with values ``>= MIN_PSEUDO_OPCODE`` " "and ``>= MIN_INSTRUMENTED_OPCODE``." msgstr "" -#: library/dis.rst:1960 +#: library/dis.rst:1952 msgid "Sequence of operation names, indexable using the bytecode." msgstr "" -#: library/dis.rst:1965 +#: library/dis.rst:1957 msgid "Dictionary mapping operation names to bytecodes." msgstr "" -#: library/dis.rst:1970 +#: library/dis.rst:1962 msgid "Sequence of all compare operation names." msgstr "" -#: library/dis.rst:1975 +#: library/dis.rst:1967 msgid "Sequence of bytecodes that use their argument." msgstr "" -#: library/dis.rst:1982 +#: library/dis.rst:1974 msgid "Sequence of bytecodes that access a constant." msgstr "" -#: library/dis.rst:1987 +#: library/dis.rst:1979 msgid "" "Sequence of bytecodes that access a :term:`free (closure) variable `. 'free' in this context refers to names in the current scope that " @@ -2206,46 +2200,46 @@ msgid "" "scopes." msgstr "" -#: library/dis.rst:1995 +#: library/dis.rst:1987 msgid "Sequence of bytecodes that access an attribute by name." msgstr "" -#: library/dis.rst:2000 +#: library/dis.rst:1992 msgid "Sequence of bytecodes that have a jump target. All jumps are relative." msgstr "" -#: library/dis.rst:2007 +#: library/dis.rst:1999 msgid "Sequence of bytecodes that access a local variable." msgstr "" -#: library/dis.rst:2012 +#: library/dis.rst:2004 msgid "Sequence of bytecodes of Boolean operations." msgstr "" -#: library/dis.rst:2016 +#: library/dis.rst:2008 msgid "Sequence of bytecodes that set an exception handler." msgstr "" -#: library/dis.rst:2023 +#: library/dis.rst:2015 msgid "Sequence of bytecodes that have a relative jump target." msgstr "" -#: library/dis.rst:2025 +#: library/dis.rst:2017 msgid "All jumps are now relative. Use :data:`hasjump`." msgstr "" -#: library/dis.rst:2031 +#: library/dis.rst:2023 msgid "Sequence of bytecodes that have an absolute jump target." msgstr "" -#: library/dis.rst:2033 +#: library/dis.rst:2025 msgid "All jumps are now relative. This list is empty." msgstr "" -#: library/dis.rst:1632 +#: library/dis.rst:1624 msgid "built-in function" msgstr "" -#: library/dis.rst:1632 +#: library/dis.rst:1624 msgid "slice" msgstr "" diff --git a/library/distribution.po b/library/distribution.po index 112c3a6a..dd3f5b16 100644 --- a/library/distribution.po +++ b/library/distribution.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/distutils.po b/library/distutils.po index a9e503b2..60179d93 100644 --- a/library/distutils.po +++ b/library/distutils.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/doctest.po b/library/doctest.po index acef7aec..0a15ec00 100644 --- a/library/doctest.po +++ b/library/doctest.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -241,8 +241,8 @@ msgstr "" #: library/doctest.rst:175 msgid "" "You can force verbose mode by passing ``verbose=True`` to :func:`testmod`, " -"or prohibit it by passing ``verbose=False``. In either of those cases, " -"``sys.argv`` is not examined by :func:`testmod` (so passing ``-v`` or not " +"or prohibit it by passing ``verbose=False``. In either of those cases, :" +"data:`sys.argv` is not examined by :func:`testmod` (so passing ``-v`` or not " "has no effect)." msgstr "" @@ -323,7 +323,7 @@ msgid "" "As with :func:`testmod`, :func:`testfile` won't display anything unless an " "example fails. If an example does fail, then the failing example(s) and the " "cause(s) of the failure(s) are printed to stdout, using the same format as :" -"func:`testmod`." +"func:`!testmod`." msgstr "" #: library/doctest.rst:236 @@ -426,7 +426,7 @@ msgid "" "searched. Objects imported into the module are not searched." msgstr "" -#: library/doctest.rst:314 +#: library/doctest.rst:317 msgid "" "In addition, there are cases when you want tests to be part of a module but " "not part of the help text, which requires that the tests not be included in " @@ -439,11 +439,11 @@ msgid "" "__test__.K``." msgstr "" -#: library/doctest.rst:323 +#: library/doctest.rst:326 msgid "For example, place this block of code at the top of :file:`example.py`:" msgstr "" -#: library/doctest.rst:325 +#: library/doctest.rst:328 msgid "" "__test__ = {\n" " 'numbers': \"\"\"\n" @@ -456,7 +456,7 @@ msgid "" "}" msgstr "" -#: library/doctest.rst:337 +#: library/doctest.rst:340 msgid "" "The value of ``example.__test__[\"numbers\"]`` will be treated as a " "docstring and all the tests inside it will be run. It is important to note " @@ -465,24 +465,24 @@ msgid "" "scanned for tests." msgstr "" -#: library/doctest.rst:343 +#: library/doctest.rst:346 msgid "" "Any classes found are recursively searched similarly, to test docstrings in " "their contained methods and nested classes." msgstr "" -#: library/doctest.rst:350 +#: library/doctest.rst:353 msgid "How are Docstring Examples Recognized?" msgstr "" -#: library/doctest.rst:352 +#: library/doctest.rst:355 msgid "" "In most cases a copy-and-paste of an interactive console session works fine, " "but doctest isn't trying to do an exact emulation of any specific Python " "shell." msgstr "" -#: library/doctest.rst:357 +#: library/doctest.rst:360 msgid "" ">>> # comments are ignored\n" ">>> x = 12\n" @@ -501,18 +501,18 @@ msgid "" ">>>" msgstr "" -#: library/doctest.rst:377 +#: library/doctest.rst:380 msgid "" "Any expected output must immediately follow the final ``'>>> '`` or ``'... " "'`` line containing the code, and the expected output (if any) extends to " "the next ``'>>> '`` or all-whitespace line." msgstr "" -#: library/doctest.rst:381 +#: library/doctest.rst:384 msgid "The fine print:" msgstr "" -#: library/doctest.rst:383 +#: library/doctest.rst:386 msgid "" "Expected output cannot contain an all-whitespace line, since such a line is " "taken to signal the end of expected output. If expected output does contain " @@ -520,7 +520,7 @@ msgid "" "line is expected." msgstr "" -#: library/doctest.rst:388 +#: library/doctest.rst:391 msgid "" "All hard tab characters are expanded to spaces, using 8-column tab stops. " "Tabs in output generated by the tested code are not modified. Because any " @@ -535,20 +535,20 @@ msgid "" "`DocTestParser` class." msgstr "" -#: library/doctest.rst:400 +#: library/doctest.rst:403 msgid "" "Output to stdout is captured, but not output to stderr (exception tracebacks " "are captured via a different means)." msgstr "" -#: library/doctest.rst:403 +#: library/doctest.rst:406 msgid "" "If you continue a line via backslashing in an interactive session, or for " "any other reason use a backslash, you should use a raw docstring, which will " "preserve your backslashes exactly as you type them::" msgstr "" -#: library/doctest.rst:407 +#: library/doctest.rst:410 msgid "" ">>> def f(x):\n" "... r'''Backslashes in a raw docstring: m\\n'''\n" @@ -557,7 +557,7 @@ msgid "" "Backslashes in a raw docstring: m\\n" msgstr "" -#: library/doctest.rst:413 +#: library/doctest.rst:416 msgid "" "Otherwise, the backslash will be interpreted as part of the string. For " "example, the ``\\n`` above would be interpreted as a newline character. " @@ -565,7 +565,7 @@ msgid "" "use a raw string)::" msgstr "" -#: library/doctest.rst:417 +#: library/doctest.rst:420 msgid "" ">>> def f(x):\n" "... '''Backslashes in a raw docstring: m\\\\n'''\n" @@ -574,11 +574,11 @@ msgid "" "Backslashes in a raw docstring: m\\n" msgstr "" -#: library/doctest.rst:423 +#: library/doctest.rst:426 msgid "The starting column doesn't matter::" msgstr "" -#: library/doctest.rst:425 +#: library/doctest.rst:428 msgid "" ">>> assert \"Easy!\"\n" " >>> import math\n" @@ -586,17 +586,17 @@ msgid "" " 1" msgstr "" -#: library/doctest.rst:430 +#: library/doctest.rst:433 msgid "" "and as many leading whitespace characters are stripped from the expected " "output as appeared in the initial ``'>>> '`` line that started the example." msgstr "" -#: library/doctest.rst:437 +#: library/doctest.rst:440 msgid "What's the Execution Context?" msgstr "" -#: library/doctest.rst:439 +#: library/doctest.rst:442 msgid "" "By default, each time :mod:`doctest` finds a docstring to test, it uses a " "*shallow copy* of :mod:`!M`'s globals, so that running tests doesn't change " @@ -607,17 +607,17 @@ msgid "" "defined in other docstrings." msgstr "" -#: library/doctest.rst:447 +#: library/doctest.rst:450 msgid "" "You can force use of your own dict as the execution context by passing " "``globs=your_dict`` to :func:`testmod` or :func:`testfile` instead." msgstr "" -#: library/doctest.rst:454 +#: library/doctest.rst:457 msgid "What About Exceptions?" msgstr "" -#: library/doctest.rst:456 +#: library/doctest.rst:459 msgid "" "No problem, provided that the traceback is the only output produced by the " "example: just paste in the traceback. [#]_ Since tracebacks contain details " @@ -626,11 +626,11 @@ msgid "" "it accepts." msgstr "" -#: library/doctest.rst:462 +#: library/doctest.rst:465 msgid "Simple example::" msgstr "" -#: library/doctest.rst:464 +#: library/doctest.rst:467 msgid "" ">>> [1, 2, 3].remove(42)\n" "Traceback (most recent call last):\n" @@ -638,33 +638,33 @@ msgid "" "ValueError: list.remove(x): x not in list" msgstr "" -#: library/doctest.rst:469 +#: library/doctest.rst:472 msgid "" "That doctest succeeds if :exc:`ValueError` is raised, with the ``list." "remove(x): x not in list`` detail as shown." msgstr "" -#: library/doctest.rst:472 +#: library/doctest.rst:475 msgid "" "The expected output for an exception must start with a traceback header, " "which may be either of the following two lines, indented the same as the " "first line of the example::" msgstr "" -#: library/doctest.rst:476 +#: library/doctest.rst:479 msgid "" "Traceback (most recent call last):\n" "Traceback (innermost last):" msgstr "" -#: library/doctest.rst:479 +#: library/doctest.rst:482 msgid "" "The traceback header is followed by an optional traceback stack, whose " "contents are ignored by doctest. The traceback stack is typically omitted, " "or copied verbatim from an interactive session." msgstr "" -#: library/doctest.rst:483 +#: library/doctest.rst:486 msgid "" "The traceback stack is followed by the most interesting part: the line(s) " "containing the exception type and detail. This is usually the last line of " @@ -672,7 +672,7 @@ msgid "" "multi-line detail::" msgstr "" -#: library/doctest.rst:488 +#: library/doctest.rst:491 msgid "" ">>> raise ValueError('multi\\n line\\ndetail')\n" "Traceback (most recent call last):\n" @@ -682,20 +682,20 @@ msgid "" "detail" msgstr "" -#: library/doctest.rst:495 +#: library/doctest.rst:498 msgid "" "The last three lines (starting with :exc:`ValueError`) are compared against " "the exception's type and detail, and the rest are ignored." msgstr "" -#: library/doctest.rst:498 +#: library/doctest.rst:501 msgid "" "Best practice is to omit the traceback stack, unless it adds significant " "documentation value to the example. So the last example is probably better " "as::" msgstr "" -#: library/doctest.rst:501 +#: library/doctest.rst:504 msgid "" ">>> raise ValueError('multi\\n line\\ndetail')\n" "Traceback (most recent call last):\n" @@ -705,7 +705,7 @@ msgid "" "detail" msgstr "" -#: library/doctest.rst:508 +#: library/doctest.rst:511 msgid "" "Note that tracebacks are treated very specially. In particular, in the " "rewritten example, the use of ``...`` is independent of doctest's :const:" @@ -714,11 +714,11 @@ msgid "" "transcript of a Monty Python skit." msgstr "" -#: library/doctest.rst:514 +#: library/doctest.rst:517 msgid "Some details you should read once, but won't need to remember:" msgstr "" -#: library/doctest.rst:516 +#: library/doctest.rst:519 msgid "" "Doctest can't guess whether your expected output came from an exception " "traceback or from ordinary printing. So, e.g., an example that expects " @@ -728,7 +728,7 @@ msgid "" "create real problems." msgstr "" -#: library/doctest.rst:523 +#: library/doctest.rst:526 msgid "" "Each line of the traceback stack (if present) must be indented further than " "the first line of the example, *or* start with a non-alphanumeric character. " @@ -737,29 +737,29 @@ msgid "" "course this does the right thing for genuine tracebacks." msgstr "" -#: library/doctest.rst:529 +#: library/doctest.rst:532 msgid "" "When the :const:`IGNORE_EXCEPTION_DETAIL` doctest option is specified, " "everything following the leftmost colon and any module information in the " "exception name is ignored." msgstr "" -#: library/doctest.rst:533 +#: library/doctest.rst:536 msgid "" "The interactive shell omits the traceback header line for some :exc:" "`SyntaxError`\\ s. But doctest uses the traceback header line to " "distinguish exceptions from non-exceptions. So in the rare case where you " -"need to test a :exc:`SyntaxError` that omits the traceback header, you will " +"need to test a :exc:`!SyntaxError` that omits the traceback header, you will " "need to manually add the traceback header line to your test example." msgstr "" -#: library/doctest.rst:541 +#: library/doctest.rst:544 msgid "" "For some exceptions, Python displays the position of the error using ``^`` " "markers and tildes::" msgstr "" -#: library/doctest.rst:544 +#: library/doctest.rst:547 msgid "" ">>> 1 + None\n" " File \"\", line 1\n" @@ -768,7 +768,7 @@ msgid "" "TypeError: unsupported operand type(s) for +: 'int' and 'NoneType'" msgstr "" -#: library/doctest.rst:550 +#: library/doctest.rst:553 msgid "" "Since the lines showing the position of the error come before the exception " "type and detail, they are not checked by doctest. For example, the " @@ -776,7 +776,7 @@ msgid "" "location::" msgstr "" -#: library/doctest.rst:554 +#: library/doctest.rst:557 msgid "" ">>> 1 + None\n" " File \"\", line 1\n" @@ -785,11 +785,11 @@ msgid "" "TypeError: unsupported operand type(s) for +: 'int' and 'NoneType'" msgstr "" -#: library/doctest.rst:565 +#: library/doctest.rst:568 msgid "Option Flags" msgstr "" -#: library/doctest.rst:567 +#: library/doctest.rst:570 msgid "" "A number of option flags control various aspects of doctest's behavior. " "Symbolic names for the flags are supplied as module constants, which can be :" @@ -799,13 +799,13 @@ msgid "" "option." msgstr "" -#: library/doctest.rst:573 +#: library/doctest.rst:576 msgid "" "The first group of options define test semantics, controlling aspects of how " "doctest decides whether actual output matches an example's expected output:" msgstr "" -#: library/doctest.rst:579 +#: library/doctest.rst:582 msgid "" "By default, if an expected output block contains just ``1``, an actual " "output block containing just ``1`` or just ``True`` is considered to be a " @@ -817,7 +817,7 @@ msgid "" "not for several years." msgstr "" -#: library/doctest.rst:591 +#: library/doctest.rst:594 msgid "" "By default, if an expected output block contains a line containing only the " "string ````, then that line will match a blank line in the actual " @@ -826,7 +826,7 @@ msgid "" "`DONT_ACCEPT_BLANKLINE` is specified, this substitution is not allowed." msgstr "" -#: library/doctest.rst:600 +#: library/doctest.rst:603 msgid "" "When specified, all sequences of whitespace (blanks and newlines) are " "treated as equal. Any sequence of whitespace within the expected output " @@ -836,7 +836,7 @@ msgid "" "across multiple lines in your source." msgstr "" -#: library/doctest.rst:611 +#: library/doctest.rst:614 msgid "" "When specified, an ellipsis marker (``...``) in the expected output can " "match any substring in the actual output. This includes substrings that " @@ -845,14 +845,14 @@ msgid "" "matched too much!\" surprises that ``.*`` is prone to in regular expressions." msgstr "" -#: library/doctest.rst:620 +#: library/doctest.rst:623 msgid "" "When specified, doctests expecting exceptions pass so long as an exception " "of the expected type is raised, even if the details (message and fully " "qualified exception name) don't match." msgstr "" -#: library/doctest.rst:624 +#: library/doctest.rst:627 msgid "" "For example, an example expecting ``ValueError: 42`` will pass if the actual " "exception raised is ``ValueError: 3*14``, but will fail if, say, a :exc:" @@ -862,7 +862,7 @@ msgid "" "these variations will work with the flag specified:" msgstr "" -#: library/doctest.rst:632 +#: library/doctest.rst:635 msgid "" ">>> raise Exception('message')\n" "Traceback (most recent call last):\n" @@ -877,20 +877,20 @@ msgid "" "__main__.Exception: message" msgstr "" -#: library/doctest.rst:646 +#: library/doctest.rst:649 msgid "" "Note that :const:`ELLIPSIS` can also be used to ignore the details of the " "exception message, but such a test may still fail based on whether the " "module name is present or matches exactly." msgstr "" -#: library/doctest.rst:650 +#: library/doctest.rst:653 msgid "" ":const:`IGNORE_EXCEPTION_DETAIL` now also ignores any information relating " "to the module containing the exception under test." msgstr "" -#: library/doctest.rst:657 +#: library/doctest.rst:660 msgid "" "When specified, do not run the example at all. This can be useful in " "contexts where doctest examples serve as both documentation and test cases, " @@ -899,32 +899,32 @@ msgid "" "might depend on resources which would be unavailable to the test driver." msgstr "" -#: library/doctest.rst:663 +#: library/doctest.rst:666 msgid "" "The SKIP flag can also be used for temporarily \"commenting out\" examples." msgstr "" -#: library/doctest.rst:668 +#: library/doctest.rst:671 msgid "A bitmask or'ing together all the comparison flags above." msgstr "" -#: library/doctest.rst:670 +#: library/doctest.rst:673 msgid "The second group of options controls how test failures are reported:" msgstr "" -#: library/doctest.rst:675 +#: library/doctest.rst:678 msgid "" "When specified, failures that involve multi-line expected and actual outputs " "are displayed using a unified diff." msgstr "" -#: library/doctest.rst:681 +#: library/doctest.rst:684 msgid "" "When specified, failures that involve multi-line expected and actual outputs " "will be displayed using a context diff." msgstr "" -#: library/doctest.rst:687 +#: library/doctest.rst:690 msgid "" "When specified, differences are computed by ``difflib.Differ``, using the " "same algorithm as the popular :file:`ndiff.py` utility. This is the only " @@ -934,7 +934,7 @@ msgid "" "mismatching column positions." msgstr "" -#: library/doctest.rst:696 +#: library/doctest.rst:699 msgid "" "When specified, display the first failing example in each doctest, but " "suppress output for all remaining examples. This will prevent doctest from " @@ -945,7 +945,7 @@ msgid "" "of failures reported; only the output is suppressed." msgstr "" -#: library/doctest.rst:707 +#: library/doctest.rst:710 msgid "" "When specified, exit after the first failing example and don't attempt to " "run the remaining examples. Thus, the number of failures reported will be at " @@ -953,17 +953,17 @@ msgid "" "first failure won't even produce debugging output." msgstr "" -#: library/doctest.rst:715 +#: library/doctest.rst:718 msgid "A bitmask or'ing together all the reporting flags above." msgstr "" -#: library/doctest.rst:718 +#: library/doctest.rst:721 msgid "" "There is also a way to register new option flag names, though this isn't " "useful unless you intend to extend :mod:`doctest` internals via subclassing:" msgstr "" -#: library/doctest.rst:724 +#: library/doctest.rst:727 msgid "" "Create a new option flag with a given name, and return the new flag's " "integer value. :func:`register_optionflag` can be used when subclassing :" @@ -972,46 +972,46 @@ msgid "" "be called using the following idiom::" msgstr "" -#: library/doctest.rst:730 +#: library/doctest.rst:733 msgid "MY_FLAG = register_optionflag('MY_FLAG')" msgstr "" -#: library/doctest.rst:740 +#: library/doctest.rst:743 msgid "Directives" msgstr "" -#: library/doctest.rst:742 +#: library/doctest.rst:745 msgid "" "Doctest directives may be used to modify the :ref:`option flags ` for an individual example. Doctest directives are special Python " "comments following an example's source code:" msgstr "" -#: library/doctest.rst:753 +#: library/doctest.rst:756 msgid "" "Whitespace is not allowed between the ``+`` or ``-`` and the directive " "option name. The directive option name can be any of the option flag names " "explained above." msgstr "" -#: library/doctest.rst:757 +#: library/doctest.rst:760 msgid "" "An example's doctest directives modify doctest's behavior for that single " "example. Use ``+`` to enable the named behavior, or ``-`` to disable it." msgstr "" -#: library/doctest.rst:760 +#: library/doctest.rst:763 msgid "For example, this test passes:" msgstr "" -#: library/doctest.rst:762 +#: library/doctest.rst:765 msgid "" ">>> print(list(range(20))) # doctest: +NORMALIZE_WHITESPACE\n" "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9,\n" "10, 11, 12, 13, 14, 15, 16, 17, 18, 19]" msgstr "" -#: library/doctest.rst:769 +#: library/doctest.rst:772 msgid "" "Without the directive it would fail, both because the actual output doesn't " "have two blanks before the single-digit list elements, and because the " @@ -1019,52 +1019,52 @@ msgid "" "a directive to do so:" msgstr "" -#: library/doctest.rst:774 +#: library/doctest.rst:777 msgid "" ">>> print(list(range(20))) # doctest: +ELLIPSIS\n" "[0, 1, ..., 18, 19]" msgstr "" -#: library/doctest.rst:780 +#: library/doctest.rst:783 msgid "" "Multiple directives can be used on a single physical line, separated by " "commas:" msgstr "" -#: library/doctest.rst:783 +#: library/doctest.rst:786 msgid "" ">>> print(list(range(20))) # doctest: +ELLIPSIS, +NORMALIZE_WHITESPACE\n" "[0, 1, ..., 18, 19]" msgstr "" -#: library/doctest.rst:789 +#: library/doctest.rst:792 msgid "" "If multiple directive comments are used for a single example, then they are " "combined:" msgstr "" -#: library/doctest.rst:792 +#: library/doctest.rst:795 msgid "" ">>> print(list(range(20))) # doctest: +ELLIPSIS\n" "... # doctest: +NORMALIZE_WHITESPACE\n" "[0, 1, ..., 18, 19]" msgstr "" -#: library/doctest.rst:799 +#: library/doctest.rst:802 msgid "" "As the previous example shows, you can add ``...`` lines to your example " "containing only directives. This can be useful when an example is too long " "for a directive to comfortably fit on the same line:" msgstr "" -#: library/doctest.rst:803 +#: library/doctest.rst:806 msgid "" ">>> print(list(range(5)) + list(range(10, 20)) + list(range(30, 40)))\n" "... # doctest: +ELLIPSIS\n" "[0, ..., 4, 10, ..., 19, 30, ..., 39]" msgstr "" -#: library/doctest.rst:810 +#: library/doctest.rst:813 msgid "" "Note that since all options are disabled by default, and directives apply " "only to the example they appear in, enabling options (via ``+`` in a " @@ -1074,11 +1074,11 @@ msgid "" "be useful." msgstr "" -#: library/doctest.rst:820 +#: library/doctest.rst:823 msgid "Warnings" msgstr "" -#: library/doctest.rst:822 +#: library/doctest.rst:825 msgid "" ":mod:`doctest` is serious about requiring exact matches in expected output. " "If even a single character doesn't match, the test fails. This will " @@ -1088,42 +1088,42 @@ msgid "" "test like ::" msgstr "" -#: library/doctest.rst:828 +#: library/doctest.rst:831 msgid "" ">>> foo()\n" "{\"spam\", \"eggs\"}" msgstr "" -#: library/doctest.rst:831 +#: library/doctest.rst:834 msgid "is vulnerable! One workaround is to do ::" msgstr "" -#: library/doctest.rst:833 +#: library/doctest.rst:836 msgid "" ">>> foo() == {\"spam\", \"eggs\"}\n" "True" msgstr "" -#: library/doctest.rst:836 +#: library/doctest.rst:839 msgid "instead. Another is to do ::" msgstr "" -#: library/doctest.rst:838 +#: library/doctest.rst:841 msgid "" ">>> d = sorted(foo())\n" ">>> d\n" "['eggs', 'spam']" msgstr "" -#: library/doctest.rst:842 +#: library/doctest.rst:845 msgid "There are others, but you get the idea." msgstr "" -#: library/doctest.rst:844 +#: library/doctest.rst:847 msgid "Another bad idea is to print things that embed an object address, like" msgstr "" -#: library/doctest.rst:846 +#: library/doctest.rst:849 msgid "" ">>> id(1.0) # certain to fail some of the time\n" "7948648\n" @@ -1132,57 +1132,57 @@ msgid "" "" msgstr "" -#: library/doctest.rst:854 +#: library/doctest.rst:857 msgid "" "The :const:`ELLIPSIS` directive gives a nice approach for the last example:" msgstr "" -#: library/doctest.rst:856 +#: library/doctest.rst:859 msgid "" ">>> C() # doctest: +ELLIPSIS\n" "" msgstr "" -#: library/doctest.rst:862 +#: library/doctest.rst:865 msgid "" "Floating-point numbers are also subject to small output variations across " -"platforms, because Python defers to the platform C library for float " -"formatting, and C libraries vary widely in quality here. ::" +"platforms, because Python defers to the platform C library for some floating-" +"point calculations, and C libraries vary widely in quality here. ::" msgstr "" -#: library/doctest.rst:866 +#: library/doctest.rst:869 msgid "" -">>> 1./7 # risky\n" -"0.14285714285714285\n" -">>> print(1./7) # safer\n" -"0.142857142857\n" -">>> print(round(1./7, 6)) # much safer\n" -"0.142857" +">>> 1000**0.1 # risky\n" +"1.9952623149688797\n" +">>> round(1000**0.1, 9) # safer\n" +"1.995262315\n" +">>> print(f'{1000**0.1:.4f}') # much safer\n" +"1.9953" msgstr "" -#: library/doctest.rst:873 +#: library/doctest.rst:876 msgid "" "Numbers of the form ``I/2.**J`` are safe across all platforms, and I often " "contrive doctest examples to produce numbers of that form::" msgstr "" -#: library/doctest.rst:876 +#: library/doctest.rst:879 msgid "" ">>> 3./4 # utterly safe\n" "0.75" msgstr "" -#: library/doctest.rst:879 +#: library/doctest.rst:882 msgid "" "Simple fractions are also easier for people to understand, and that makes " "for better documentation." msgstr "" -#: library/doctest.rst:886 +#: library/doctest.rst:889 msgid "Basic API" msgstr "" -#: library/doctest.rst:888 +#: library/doctest.rst:891 msgid "" "The functions :func:`testmod` and :func:`testfile` provide a simple " "interface to doctest that should be sufficient for most basic uses. For a " @@ -1190,25 +1190,25 @@ msgid "" "simple-testmod` and :ref:`doctest-simple-testfile`." msgstr "" -#: library/doctest.rst:896 +#: library/doctest.rst:899 msgid "" "All arguments except *filename* are optional, and should be specified in " "keyword form." msgstr "" -#: library/doctest.rst:899 +#: library/doctest.rst:902 msgid "" "Test examples in the file named *filename*. Return ``(failure_count, " "test_count)``." msgstr "" -#: library/doctest.rst:902 +#: library/doctest.rst:905 msgid "" "Optional argument *module_relative* specifies how the filename should be " "interpreted:" msgstr "" -#: library/doctest.rst:905 +#: library/doctest.rst:908 msgid "" "If *module_relative* is ``True`` (the default), then *filename* specifies an " "OS-independent module-relative path. By default, this path is relative to " @@ -1218,20 +1218,20 @@ msgid "" "absolute path (i.e., it may not begin with ``/``)." msgstr "" -#: library/doctest.rst:912 +#: library/doctest.rst:915 msgid "" "If *module_relative* is ``False``, then *filename* specifies an OS-specific " "path. The path may be absolute or relative; relative paths are resolved " "with respect to the current working directory." msgstr "" -#: library/doctest.rst:916 +#: library/doctest.rst:919 msgid "" "Optional argument *name* gives the name of the test; by default, or if " "``None``, ``os.path.basename(filename)`` is used." msgstr "" -#: library/doctest.rst:919 +#: library/doctest.rst:922 msgid "" "Optional argument *package* is a Python package or the name of a Python " "package whose directory should be used as the base directory for a module-" @@ -1240,7 +1240,7 @@ msgid "" "is an error to specify *package* if *module_relative* is ``False``." msgstr "" -#: library/doctest.rst:925 +#: library/doctest.rst:928 msgid "" "Optional argument *globs* gives a dict to be used as the globals when " "executing examples. A new shallow copy of this dict is created for the " @@ -1248,7 +1248,7 @@ msgid "" "``None``, a new empty dict is used." msgstr "" -#: library/doctest.rst:930 +#: library/doctest.rst:933 msgid "" "Optional argument *extraglobs* gives a dict merged into the globals used to " "execute examples. This works like :meth:`dict.update`: if *globs* and " @@ -1261,27 +1261,27 @@ msgid "" "tested." msgstr "" -#: library/doctest.rst:939 +#: library/doctest.rst:942 msgid "" "Optional argument *verbose* prints lots of stuff if true, and prints only " "failures if false; by default, or if ``None``, it's true if and only if ``'-" -"v'`` is in ``sys.argv``." +"v'`` is in :data:`sys.argv`." msgstr "" -#: library/doctest.rst:943 +#: library/doctest.rst:946 msgid "" "Optional argument *report* prints a summary at the end when true, else " "prints nothing at the end. In verbose mode, the summary is detailed, else " "the summary is very brief (in fact, empty if all tests passed)." msgstr "" -#: library/doctest.rst:947 +#: library/doctest.rst:950 msgid "" -"Optional argument *optionflags* (default value 0) takes the :ref:`bitwise OR " -"` of option flags. See section :ref:`doctest-options`." +"Optional argument *optionflags* (default value ``0``) takes the :ref:" +"`bitwise OR ` of option flags. See section :ref:`doctest-options`." msgstr "" -#: library/doctest.rst:951 +#: library/doctest.rst:954 msgid "" "Optional argument *raise_on_error* defaults to false. If true, an exception " "is raised upon the first failure or unexpected exception in an example. " @@ -1289,33 +1289,33 @@ msgid "" "continue running examples." msgstr "" -#: library/doctest.rst:1098 +#: library/doctest.rst:1102 msgid "" "Optional argument *parser* specifies a :class:`DocTestParser` (or subclass) " "that should be used to extract tests from the files. It defaults to a " "normal parser (i.e., ``DocTestParser()``)." msgstr "" -#: library/doctest.rst:1102 +#: library/doctest.rst:1106 msgid "" "Optional argument *encoding* specifies an encoding that should be used to " "convert the file to unicode." msgstr "" -#: library/doctest.rst:966 +#: library/doctest.rst:969 msgid "" "All arguments are optional, and all except for *m* should be specified in " "keyword form." msgstr "" -#: library/doctest.rst:969 +#: library/doctest.rst:972 msgid "" "Test examples in docstrings in functions and classes reachable from module " "*m* (or module :mod:`__main__` if *m* is not supplied or is ``None``), " "starting with ``m.__doc__``." msgstr "" -#: library/doctest.rst:973 +#: library/doctest.rst:976 msgid "" "Also test examples reachable from dict ``m.__test__``, if it exists. ``m." "__test__`` maps names (strings) to functions, classes and strings; function " @@ -1323,22 +1323,22 @@ msgid "" "directly, as if they were docstrings." msgstr "" -#: library/doctest.rst:978 +#: library/doctest.rst:981 msgid "" "Only docstrings attached to objects belonging to module *m* are searched." msgstr "" -#: library/doctest.rst:980 +#: library/doctest.rst:983 msgid "Return ``(failure_count, test_count)``." msgstr "" -#: library/doctest.rst:982 +#: library/doctest.rst:985 msgid "" "Optional argument *name* gives the name of the module; by default, or if " "``None``, ``m.__name__`` is used." msgstr "" -#: library/doctest.rst:985 +#: library/doctest.rst:988 msgid "" "Optional argument *exclude_empty* defaults to false. If true, objects for " "which no doctests are found are excluded from consideration. The default is " @@ -1349,39 +1349,39 @@ msgid "" "defaults to true." msgstr "" -#: library/doctest.rst:993 +#: library/doctest.rst:996 msgid "" "Optional arguments *extraglobs*, *verbose*, *report*, *optionflags*, " "*raise_on_error*, and *globs* are the same as for function :func:`testfile` " "above, except that *globs* defaults to ``m.__dict__``." msgstr "" -#: library/doctest.rst:1000 +#: library/doctest.rst:1003 msgid "" "Test examples associated with object *f*; for example, *f* may be a string, " "a module, a function, or a class object." msgstr "" -#: library/doctest.rst:1003 +#: library/doctest.rst:1006 msgid "" "A shallow copy of dictionary argument *globs* is used for the execution " "context." msgstr "" -#: library/doctest.rst:1005 +#: library/doctest.rst:1008 msgid "" "Optional argument *name* is used in failure messages, and defaults to " "``\"NoName\"``." msgstr "" -#: library/doctest.rst:1008 +#: library/doctest.rst:1011 msgid "" "If optional argument *verbose* is true, output is generated even if there " "are no failures. By default, output is generated only in case of an example " "failure." msgstr "" -#: library/doctest.rst:1011 +#: library/doctest.rst:1014 msgid "" "Optional argument *compileflags* gives the set of flags that should be used " "by the Python compiler when running the examples. By default, or if " @@ -1389,16 +1389,16 @@ msgid "" "found in *globs*." msgstr "" -#: library/doctest.rst:1015 +#: library/doctest.rst:1018 msgid "" "Optional argument *optionflags* works as for function :func:`testfile` above." msgstr "" -#: library/doctest.rst:1021 +#: library/doctest.rst:1024 msgid "Unittest API" msgstr "" -#: library/doctest.rst:1023 +#: library/doctest.rst:1026 msgid "" "As your collection of doctest'ed modules grows, you'll want a way to run all " "their doctests systematically. :mod:`doctest` provides two functions that " @@ -1408,7 +1408,7 @@ msgid "" "your test module::" msgstr "" -#: library/doctest.rst:1029 +#: library/doctest.rst:1032 msgid "" "import unittest\n" "import doctest\n" @@ -1419,44 +1419,44 @@ msgid "" " return tests" msgstr "" -#: library/doctest.rst:1037 +#: library/doctest.rst:1040 msgid "" "There are two main functions for creating :class:`unittest.TestSuite` " "instances from text files and modules with doctests:" msgstr "" -#: library/doctest.rst:1043 +#: library/doctest.rst:1046 msgid "" "Convert doctest tests from one or more text files to a :class:`unittest." "TestSuite`." msgstr "" -#: library/doctest.rst:1046 +#: library/doctest.rst:1049 msgid "" "The returned :class:`unittest.TestSuite` is to be run by the unittest " "framework and runs the interactive examples in each file. If an example in " -"any file fails, then the synthesized unit test fails, and a :exc:" -"`failureException` exception is raised showing the name of the file " +"any file fails, then the synthesized unit test fails, and a :exc:`~unittest." +"TestCase.failureException` exception is raised showing the name of the file " "containing the test and a (sometimes approximate) line number. If all the " "examples in a file are skipped, then the synthesized unit test is also " "marked as skipped." msgstr "" -#: library/doctest.rst:1053 +#: library/doctest.rst:1056 msgid "Pass one or more paths (as strings) to text files to be examined." msgstr "" -#: library/doctest.rst:1055 +#: library/doctest.rst:1058 msgid "Options may be provided as keyword arguments:" msgstr "" -#: library/doctest.rst:1057 +#: library/doctest.rst:1060 msgid "" "Optional argument *module_relative* specifies how the filenames in *paths* " "should be interpreted:" msgstr "" -#: library/doctest.rst:1060 +#: library/doctest.rst:1063 msgid "" "If *module_relative* is ``True`` (the default), then each filename in " "*paths* specifies an OS-independent module-relative path. By default, this " @@ -1467,14 +1467,14 @@ msgid "" "``)." msgstr "" -#: library/doctest.rst:1068 +#: library/doctest.rst:1071 msgid "" "If *module_relative* is ``False``, then each filename in *paths* specifies " "an OS-specific path. The path may be absolute or relative; relative paths " "are resolved with respect to the current working directory." msgstr "" -#: library/doctest.rst:1072 +#: library/doctest.rst:1075 msgid "" "Optional argument *package* is a Python package or the name of a Python " "package whose directory should be used as the base directory for module-" @@ -1484,30 +1484,31 @@ msgid "" "``False``." msgstr "" -#: library/doctest.rst:1079 +#: library/doctest.rst:1082 msgid "" "Optional argument *setUp* specifies a set-up function for the test suite. " "This is called before running the tests in each file. The *setUp* function " -"will be passed a :class:`DocTest` object. The setUp function can access the " -"test globals as the *globs* attribute of the test passed." +"will be passed a :class:`DocTest` object. The *setUp* function can access " +"the test globals as the :attr:`~DocTest.globs` attribute of the test passed." msgstr "" -#: library/doctest.rst:1084 +#: library/doctest.rst:1087 msgid "" "Optional argument *tearDown* specifies a tear-down function for the test " "suite. This is called after running the tests in each file. The *tearDown* " -"function will be passed a :class:`DocTest` object. The setUp function can " -"access the test globals as the *globs* attribute of the test passed." +"function will be passed a :class:`DocTest` object. The *tearDown* function " +"can access the test globals as the :attr:`~DocTest.globs` attribute of the " +"test passed." msgstr "" -#: library/doctest.rst:1124 +#: library/doctest.rst:1093 msgid "" "Optional argument *globs* is a dictionary containing the initial global " "variables for the tests. A new copy of this dictionary is created for each " "test. By default, *globs* is a new empty dictionary." msgstr "" -#: library/doctest.rst:1093 +#: library/doctest.rst:1097 msgid "" "Optional argument *optionflags* specifies the default doctest options for " "the tests, created by or-ing together individual option flags. See section :" @@ -1515,70 +1516,71 @@ msgid "" "for a better way to set reporting options." msgstr "" -#: library/doctest.rst:1105 +#: library/doctest.rst:1109 msgid "" "The global ``__file__`` is added to the globals provided to doctests loaded " "from a text file using :func:`DocFileSuite`." msgstr "" -#: library/doctest.rst:1111 +#: library/doctest.rst:1115 msgid "Convert doctest tests for a module to a :class:`unittest.TestSuite`." msgstr "" -#: library/doctest.rst:1113 +#: library/doctest.rst:1117 msgid "" "The returned :class:`unittest.TestSuite` is to be run by the unittest " -"framework and runs each doctest in the module. If any of the doctests fail, " -"then the synthesized unit test fails, and a :exc:`failureException` " -"exception is raised showing the name of the file containing the test and a " -"(sometimes approximate) line number. If all the examples in a docstring are " -"skipped, then the synthesized unit test is also marked as skipped." +"framework and runs each doctest in the module. Each docstring is run as a " +"separate unit test. If any of the doctests fail, then the synthesized unit " +"test fails, and a :exc:`unittest.TestCase.failureException` exception is " +"raised showing the name of the file containing the test and a (sometimes " +"approximate) line number. If all the examples in a docstring are skipped, " +"then the" msgstr "" -#: library/doctest.rst:1120 +#: library/doctest.rst:1125 msgid "" "Optional argument *module* provides the module to be tested. It can be a " "module object or a (possibly dotted) module name. If not specified, the " "module calling this function is used." msgstr "" -#: library/doctest.rst:1128 +#: library/doctest.rst:1129 +msgid "" +"Optional argument *globs* is a dictionary containing the initial global " +"variables for the tests. A new copy of this dictionary is created for each " +"test. By default, *globs* is the module's :attr:`~module.__dict__`." +msgstr "" + +#: library/doctest.rst:1133 msgid "" "Optional argument *extraglobs* specifies an extra set of global variables, " "which is merged into *globs*. By default, no extra globals are used." msgstr "" -#: library/doctest.rst:1131 +#: library/doctest.rst:1136 msgid "" "Optional argument *test_finder* is the :class:`DocTestFinder` object (or a " "drop-in replacement) that is used to extract doctests from the module." msgstr "" -#: library/doctest.rst:1134 +#: library/doctest.rst:1139 msgid "" "Optional arguments *setUp*, *tearDown*, and *optionflags* are the same as " -"for function :func:`DocFileSuite` above." +"for function :func:`DocFileSuite` above, but they are called for each " +"docstring." msgstr "" -#: library/doctest.rst:1137 +#: library/doctest.rst:1142 msgid "This function uses the same search technique as :func:`testmod`." msgstr "" -#: library/doctest.rst:1139 +#: library/doctest.rst:1144 msgid "" ":func:`DocTestSuite` returns an empty :class:`unittest.TestSuite` if " "*module* contains no docstrings instead of raising :exc:`ValueError`." msgstr "" -#: library/doctest.rst:1145 -msgid "" -"When doctests which have been converted to unit tests by :func:" -"`DocFileSuite` or :func:`DocTestSuite` fail, this exception is raised " -"showing the name of the file containing the test and a (sometimes " -"approximate) line number." -msgstr "" - -#: library/doctest.rst:1149 +#: library/doctest.rst:1148 msgid "" "Under the covers, :func:`DocTestSuite` creates a :class:`unittest.TestSuite` " "out of :class:`!doctest.DocTestCase` instances, and :class:`!DocTestCase` is " @@ -1587,67 +1589,67 @@ msgid "" "questions about the exact details of :mod:`unittest` integration." msgstr "" -#: library/doctest.rst:1155 +#: library/doctest.rst:1154 msgid "" "Similarly, :func:`DocFileSuite` creates a :class:`unittest.TestSuite` out " "of :class:`!doctest.DocFileCase` instances, and :class:`!DocFileCase` is a " "subclass of :class:`!DocTestCase`." msgstr "" -#: library/doctest.rst:1159 +#: library/doctest.rst:1158 msgid "" "So both ways of creating a :class:`unittest.TestSuite` run instances of :" "class:`!DocTestCase`. This is important for a subtle reason: when you run :" -"mod:`doctest` functions yourself, you can control the :mod:`doctest` options " -"in use directly, by passing option flags to :mod:`doctest` functions. " -"However, if you're writing a :mod:`unittest` framework, :mod:`unittest` " -"ultimately controls when and how tests get run. The framework author " -"typically wants to control :mod:`doctest` reporting options (perhaps, e.g., " -"specified by command line options), but there's no way to pass options " -"through :mod:`unittest` to :mod:`doctest` test runners." +"mod:`doctest` functions yourself, you can control the :mod:`!doctest` " +"options in use directly, by passing option flags to :mod:`!doctest` " +"functions. However, if you're writing a :mod:`unittest` framework, :mod:`!" +"unittest` ultimately controls when and how tests get run. The framework " +"author typically wants to control :mod:`!doctest` reporting options " +"(perhaps, e.g., specified by command line options), but there's no way to " +"pass options through :mod:`!unittest` to :mod:`!doctest` test runners." msgstr "" -#: library/doctest.rst:1169 +#: library/doctest.rst:1168 msgid "" -"For this reason, :mod:`doctest` also supports a notion of :mod:`doctest` " +"For this reason, :mod:`doctest` also supports a notion of :mod:`!doctest` " "reporting flags specific to :mod:`unittest` support, via this function:" msgstr "" -#: library/doctest.rst:1175 +#: library/doctest.rst:1174 msgid "Set the :mod:`doctest` reporting flags to use." msgstr "" -#: library/doctest.rst:1177 +#: library/doctest.rst:1176 msgid "" "Argument *flags* takes the :ref:`bitwise OR ` of option flags. See " "section :ref:`doctest-options`. Only \"reporting flags\" can be used." msgstr "" -#: library/doctest.rst:1180 +#: library/doctest.rst:1179 msgid "" "This is a module-global setting, and affects all future doctests run by " "module :mod:`unittest`: the :meth:`!runTest` method of :class:`!" "DocTestCase` looks at the option flags specified for the test case when the :" "class:`!DocTestCase` instance was constructed. If no reporting flags were " -"specified (which is the typical and expected case), :mod:`!doctest`'s :mod:" -"`unittest` reporting flags are :ref:`bitwise ORed ` into the option " +"specified (which is the typical and expected case), :mod:`!doctest`'s :mod:`!" +"unittest` reporting flags are :ref:`bitwise ORed ` into the option " "flags, and the option flags so augmented are passed to the :class:" "`DocTestRunner` instance created to run the doctest. If any reporting flags " "were specified when the :class:`!DocTestCase` instance was constructed, :mod:" -"`!doctest`'s :mod:`unittest` reporting flags are ignored." +"`!doctest`'s :mod:`!unittest` reporting flags are ignored." msgstr "" -#: library/doctest.rst:1191 +#: library/doctest.rst:1190 msgid "" "The value of the :mod:`unittest` reporting flags in effect before the " "function was called is returned by the function." msgstr "" -#: library/doctest.rst:1198 +#: library/doctest.rst:1197 msgid "Advanced API" msgstr "" -#: library/doctest.rst:1200 +#: library/doctest.rst:1199 msgid "" "The basic API is a simple wrapper that's intended to make doctest easy to " "use. It is fairly flexible, and should meet most users' needs; however, if " @@ -1655,62 +1657,62 @@ msgid "" "doctest's capabilities, then you should use the advanced API." msgstr "" -#: library/doctest.rst:1205 +#: library/doctest.rst:1204 msgid "" "The advanced API revolves around two container classes, which are used to " "store the interactive examples extracted from doctest cases:" msgstr "" -#: library/doctest.rst:1208 +#: library/doctest.rst:1207 msgid "" ":class:`Example`: A single Python :term:`statement`, paired with its " "expected output." msgstr "" -#: library/doctest.rst:1211 +#: library/doctest.rst:1210 msgid "" ":class:`DocTest`: A collection of :class:`Example`\\ s, typically extracted " "from a single docstring or text file." msgstr "" -#: library/doctest.rst:1214 +#: library/doctest.rst:1213 msgid "" "Additional processing classes are defined to find, parse, and run, and check " "doctest examples:" msgstr "" -#: library/doctest.rst:1217 +#: library/doctest.rst:1216 msgid "" ":class:`DocTestFinder`: Finds all docstrings in a given module, and uses a :" "class:`DocTestParser` to create a :class:`DocTest` from every docstring that " "contains interactive examples." msgstr "" -#: library/doctest.rst:1221 +#: library/doctest.rst:1220 msgid "" ":class:`DocTestParser`: Creates a :class:`DocTest` object from a string " "(such as an object's docstring)." msgstr "" -#: library/doctest.rst:1224 +#: library/doctest.rst:1223 msgid "" ":class:`DocTestRunner`: Executes the examples in a :class:`DocTest`, and " "uses an :class:`OutputChecker` to verify their output." msgstr "" -#: library/doctest.rst:1227 +#: library/doctest.rst:1226 msgid "" ":class:`OutputChecker`: Compares the actual output from a doctest example " "with the expected output, and decides whether they match." msgstr "" -#: library/doctest.rst:1230 +#: library/doctest.rst:1229 msgid "" "The relationships among these processing classes are summarized in the " "following diagram::" msgstr "" -#: library/doctest.rst:1233 +#: library/doctest.rst:1232 msgid "" " list of:\n" "+------+ +---------+\n" @@ -1722,30 +1724,30 @@ msgid "" " +---------+" msgstr "" -#: library/doctest.rst:1246 +#: library/doctest.rst:1245 msgid "DocTest Objects" msgstr "" -#: library/doctest.rst:1251 +#: library/doctest.rst:1250 msgid "" "A collection of doctest examples that should be run in a single namespace. " "The constructor arguments are used to initialize the attributes of the same " "names." msgstr "" -#: library/doctest.rst:1255 +#: library/doctest.rst:1254 msgid "" ":class:`DocTest` defines the following attributes. They are initialized by " "the constructor, and should not be modified directly." msgstr "" -#: library/doctest.rst:1261 +#: library/doctest.rst:1260 msgid "" "A list of :class:`Example` objects encoding the individual interactive " "Python examples that should be run by this test." msgstr "" -#: library/doctest.rst:1267 +#: library/doctest.rst:1266 msgid "" "The namespace (aka globals) that the examples should be run in. This is a " "dictionary mapping names to values. Any changes to the namespace made by " @@ -1753,57 +1755,57 @@ msgid "" "`globs` after the test is run." msgstr "" -#: library/doctest.rst:1275 +#: library/doctest.rst:1274 msgid "" "A string name identifying the :class:`DocTest`. Typically, this is the name " "of the object or file that the test was extracted from." msgstr "" -#: library/doctest.rst:1281 +#: library/doctest.rst:1280 msgid "" "The name of the file that this :class:`DocTest` was extracted from; or " -"``None`` if the filename is unknown, or if the :class:`DocTest` was not " +"``None`` if the filename is unknown, or if the :class:`!DocTest` was not " "extracted from a file." msgstr "" -#: library/doctest.rst:1288 +#: library/doctest.rst:1287 msgid "" "The line number within :attr:`filename` where this :class:`DocTest` begins, " "or ``None`` if the line number is unavailable. This line number is zero-" "based with respect to the beginning of the file." msgstr "" -#: library/doctest.rst:1295 +#: library/doctest.rst:1294 msgid "" "The string that the test was extracted from, or ``None`` if the string is " "unavailable, or if the test was not extracted from a string." msgstr "" -#: library/doctest.rst:1302 +#: library/doctest.rst:1301 msgid "Example Objects" msgstr "" -#: library/doctest.rst:1307 +#: library/doctest.rst:1306 msgid "" "A single interactive example, consisting of a Python statement and its " "expected output. The constructor arguments are used to initialize the " "attributes of the same names." msgstr "" -#: library/doctest.rst:1312 +#: library/doctest.rst:1311 msgid "" ":class:`Example` defines the following attributes. They are initialized by " "the constructor, and should not be modified directly." msgstr "" -#: library/doctest.rst:1318 +#: library/doctest.rst:1317 msgid "" "A string containing the example's source code. This source code consists of " "a single Python statement, and always ends with a newline; the constructor " "adds a newline when necessary." msgstr "" -#: library/doctest.rst:1325 +#: library/doctest.rst:1324 msgid "" "The expected output from running the example's source code (either from " "stdout, or a traceback in case of exception). :attr:`want` ends with a " @@ -1811,7 +1813,7 @@ msgid "" "The constructor adds a newline when necessary." msgstr "" -#: library/doctest.rst:1333 +#: library/doctest.rst:1332 msgid "" "The exception message generated by the example, if the example is expected " "to generate an exception; or ``None`` if it is not expected to generate an " @@ -1820,20 +1822,20 @@ msgid "" "unless it's ``None``. The constructor adds a newline if needed." msgstr "" -#: library/doctest.rst:1342 +#: library/doctest.rst:1341 msgid "" "The line number within the string containing this example where the example " "begins. This line number is zero-based with respect to the beginning of the " "containing string." msgstr "" -#: library/doctest.rst:1349 +#: library/doctest.rst:1348 msgid "" "The example's indentation in the containing string, i.e., the number of " "space characters that precede the example's first prompt." msgstr "" -#: library/doctest.rst:1355 +#: library/doctest.rst:1354 msgid "" "A dictionary mapping from option flags to ``True`` or ``False``, which is " "used to override default options for this example. Any option flags not " @@ -1842,11 +1844,11 @@ msgid "" "default, no options are set." msgstr "" -#: library/doctest.rst:1365 +#: library/doctest.rst:1364 msgid "DocTestFinder objects" msgstr "" -#: library/doctest.rst:1370 +#: library/doctest.rst:1369 msgid "" "A processing class used to extract the :class:`DocTest`\\ s that are " "relevant to a given object, from its docstring and the docstrings of its " @@ -1854,48 +1856,48 @@ msgid "" "classes, functions, methods, staticmethods, classmethods, and properties." msgstr "" -#: library/doctest.rst:1375 +#: library/doctest.rst:1374 msgid "" "The optional argument *verbose* can be used to display the objects searched " "by the finder. It defaults to ``False`` (no output)." msgstr "" -#: library/doctest.rst:1378 +#: library/doctest.rst:1377 msgid "" "The optional argument *parser* specifies the :class:`DocTestParser` object " "(or a drop-in replacement) that is used to extract doctests from docstrings." msgstr "" -#: library/doctest.rst:1381 +#: library/doctest.rst:1380 msgid "" "If the optional argument *recurse* is false, then :meth:`DocTestFinder.find` " "will only examine the given object, and not any contained objects." msgstr "" -#: library/doctest.rst:1384 +#: library/doctest.rst:1383 msgid "" "If the optional argument *exclude_empty* is false, then :meth:`DocTestFinder." "find` will include tests for objects with empty docstrings." msgstr "" -#: library/doctest.rst:1388 +#: library/doctest.rst:1387 msgid ":class:`DocTestFinder` defines the following method:" msgstr "" -#: library/doctest.rst:1393 +#: library/doctest.rst:1392 msgid "" "Return a list of the :class:`DocTest`\\ s that are defined by *obj*'s " "docstring, or by any of its contained objects' docstrings." msgstr "" -#: library/doctest.rst:1396 +#: library/doctest.rst:1395 msgid "" "The optional argument *name* specifies the object's name; this name will be " "used to construct names for the returned :class:`DocTest`\\ s. If *name* is " "not specified, then ``obj.__name__`` is used." msgstr "" -#: library/doctest.rst:1400 +#: library/doctest.rst:1399 msgid "" "The optional parameter *module* is the module that contains the given " "object. If the module is not specified or is ``None``, then the test finder " @@ -1903,26 +1905,26 @@ msgid "" "module is used:" msgstr "" -#: library/doctest.rst:1404 +#: library/doctest.rst:1403 msgid "As a default namespace, if *globs* is not specified." msgstr "" -#: library/doctest.rst:1406 +#: library/doctest.rst:1405 msgid "" "To prevent the DocTestFinder from extracting DocTests from objects that are " "imported from other modules. (Contained objects with modules other than " "*module* are ignored.)" msgstr "" -#: library/doctest.rst:1410 +#: library/doctest.rst:1409 msgid "To find the name of the file containing the object." msgstr "" -#: library/doctest.rst:1412 +#: library/doctest.rst:1411 msgid "To help find the line number of the object within its file." msgstr "" -#: library/doctest.rst:1414 +#: library/doctest.rst:1413 msgid "" "If *module* is ``False``, no attempt to find the module will be made. This " "is obscure, of use mostly in testing doctest itself: if *module* is " @@ -1931,44 +1933,44 @@ msgid "" "contained objects will (recursively) be searched for doctests." msgstr "" -#: library/doctest.rst:1420 +#: library/doctest.rst:1419 msgid "" "The globals for each :class:`DocTest` is formed by combining *globs* and " "*extraglobs* (bindings in *extraglobs* override bindings in *globs*). A new " -"shallow copy of the globals dictionary is created for each :class:`DocTest`. " -"If *globs* is not specified, then it defaults to the module's *__dict__*, if " -"specified, or ``{}`` otherwise. If *extraglobs* is not specified, then it " -"defaults to ``{}``." +"shallow copy of the globals dictionary is created for each :class:`!" +"DocTest`. If *globs* is not specified, then it defaults to the module's :" +"attr:`~module.__dict__`, if specified, or ``{}`` otherwise. If *extraglobs* " +"is not specified, then it defaults to ``{}``." msgstr "" -#: library/doctest.rst:1431 +#: library/doctest.rst:1430 msgid "DocTestParser objects" msgstr "" -#: library/doctest.rst:1436 +#: library/doctest.rst:1435 msgid "" "A processing class used to extract interactive examples from a string, and " "use them to create a :class:`DocTest` object." msgstr "" -#: library/doctest.rst:1440 +#: library/doctest.rst:1439 msgid ":class:`DocTestParser` defines the following methods:" msgstr "" -#: library/doctest.rst:1445 +#: library/doctest.rst:1444 msgid "" "Extract all doctest examples from the given string, and collect them into a :" "class:`DocTest` object." msgstr "" -#: library/doctest.rst:1448 +#: library/doctest.rst:1447 msgid "" "*globs*, *name*, *filename*, and *lineno* are attributes for the new :class:" -"`DocTest` object. See the documentation for :class:`DocTest` for more " +"`!DocTest` object. See the documentation for :class:`DocTest` for more " "information." msgstr "" -#: library/doctest.rst:1455 +#: library/doctest.rst:1454 msgid "" "Extract all doctest examples from the given string, and return them as a " "list of :class:`Example` objects. Line numbers are 0-based. The optional " @@ -1976,51 +1978,51 @@ msgid "" "error messages." msgstr "" -#: library/doctest.rst:1462 +#: library/doctest.rst:1461 msgid "" "Divide the given string into examples and intervening text, and return them " "as a list of alternating :class:`Example`\\ s and strings. Line numbers for " -"the :class:`Example`\\ s are 0-based. The optional argument *name* is a " +"the :class:`!Example`\\ s are 0-based. The optional argument *name* is a " "name identifying this string, and is only used for error messages." msgstr "" -#: library/doctest.rst:1469 +#: library/doctest.rst:1468 msgid "TestResults objects" msgstr "" -#: library/doctest.rst:1476 +#: library/doctest.rst:1475 msgid "Number of failed tests." msgstr "" -#: library/doctest.rst:1480 +#: library/doctest.rst:1479 msgid "Number of attempted tests." msgstr "" -#: library/doctest.rst:1484 +#: library/doctest.rst:1483 msgid "Number of skipped tests." msgstr "" -#: library/doctest.rst:1492 +#: library/doctest.rst:1491 msgid "DocTestRunner objects" msgstr "" -#: library/doctest.rst:1497 +#: library/doctest.rst:1496 msgid "" "A processing class used to execute and verify the interactive examples in a :" "class:`DocTest`." msgstr "" -#: library/doctest.rst:1500 +#: library/doctest.rst:1499 msgid "" "The comparison between expected outputs and actual outputs is done by an :" "class:`OutputChecker`. This comparison may be customized with a number of " "option flags; see section :ref:`doctest-options` for more information. If " "the option flags are insufficient, then the comparison may also be " -"customized by passing a subclass of :class:`OutputChecker` to the " +"customized by passing a subclass of :class:`!OutputChecker` to the " "constructor." msgstr "" -#: library/doctest.rst:1506 +#: library/doctest.rst:1505 msgid "" "The test runner's display output can be controlled in two ways. First, an " "output function can be passed to :meth:`run`; this function will be called " @@ -2031,14 +2033,14 @@ msgid "" "`report_unexpected_exception`, and :meth:`report_failure`." msgstr "" -#: library/doctest.rst:1514 +#: library/doctest.rst:1513 msgid "" "The optional keyword argument *checker* specifies the :class:`OutputChecker` " "object (or drop-in replacement) that should be used to compare the expected " "outputs to the actual outputs of doctest examples." msgstr "" -#: library/doctest.rst:1518 +#: library/doctest.rst:1517 msgid "" "The optional keyword argument *verbose* controls the :class:" "`DocTestRunner`'s verbosity. If *verbose* is ``True``, then information is " @@ -2047,14 +2049,14 @@ msgid "" "verbose output is used iff the command-line switch ``-v`` is used." msgstr "" -#: library/doctest.rst:1524 +#: library/doctest.rst:1523 msgid "" "The optional keyword argument *optionflags* can be used to control how the " "test runner compares expected output to actual output, and how it displays " "failures. For more information, see section :ref:`doctest-options`." msgstr "" -#: library/doctest.rst:1528 +#: library/doctest.rst:1527 msgid "" "The test runner accumulates statistics. The aggregated number of attempted, " "failed and skipped examples is also available via the :attr:`tries`, :attr:" @@ -2062,53 +2064,53 @@ msgid "" "`summarize` methods return a :class:`TestResults` instance." msgstr "" -#: library/doctest.rst:1533 +#: library/doctest.rst:1532 msgid ":class:`DocTestRunner` defines the following methods:" msgstr "" -#: library/doctest.rst:1538 +#: library/doctest.rst:1537 msgid "" "Report that the test runner is about to process the given example. This " "method is provided to allow subclasses of :class:`DocTestRunner` to " "customize their output; it should not be called directly." msgstr "" -#: library/doctest.rst:1542 +#: library/doctest.rst:1541 msgid "" "*example* is the example about to be processed. *test* is the test " -"*containing example*. *out* is the output function that was passed to :meth:" +"containing *example*. *out* is the output function that was passed to :meth:" "`DocTestRunner.run`." msgstr "" -#: library/doctest.rst:1549 +#: library/doctest.rst:1548 msgid "" "Report that the given example ran successfully. This method is provided to " "allow subclasses of :class:`DocTestRunner` to customize their output; it " "should not be called directly." msgstr "" -#: library/doctest.rst:1564 +#: library/doctest.rst:1563 msgid "" "*example* is the example about to be processed. *got* is the actual output " "from the example. *test* is the test containing *example*. *out* is the " "output function that was passed to :meth:`DocTestRunner.run`." msgstr "" -#: library/doctest.rst:1560 +#: library/doctest.rst:1559 msgid "" "Report that the given example failed. This method is provided to allow " "subclasses of :class:`DocTestRunner` to customize their output; it should " "not be called directly." msgstr "" -#: library/doctest.rst:1571 +#: library/doctest.rst:1570 msgid "" "Report that the given example raised an unexpected exception. This method is " "provided to allow subclasses of :class:`DocTestRunner` to customize their " "output; it should not be called directly." msgstr "" -#: library/doctest.rst:1575 +#: library/doctest.rst:1574 msgid "" "*example* is the example about to be processed. *exc_info* is a tuple " "containing information about the unexpected exception (as returned by :func:" @@ -2116,14 +2118,14 @@ msgid "" "output function that was passed to :meth:`DocTestRunner.run`." msgstr "" -#: library/doctest.rst:1583 +#: library/doctest.rst:1582 msgid "" "Run the examples in *test* (a :class:`DocTest` object), and display the " "results using the writer function *out*. Return a :class:`TestResults` " "instance." msgstr "" -#: library/doctest.rst:1587 +#: library/doctest.rst:1586 msgid "" "The examples are run in the namespace ``test.globs``. If *clear_globs* is " "true (the default), then this namespace will be cleared after the test runs, " @@ -2131,54 +2133,54 @@ msgid "" "after the test completes, then use *clear_globs=False*." msgstr "" -#: library/doctest.rst:1592 +#: library/doctest.rst:1591 msgid "" "*compileflags* gives the set of flags that should be used by the Python " "compiler when running the examples. If not specified, then it will default " "to the set of future-import flags that apply to *globs*." msgstr "" -#: library/doctest.rst:1596 +#: library/doctest.rst:1595 msgid "" "The output of each example is checked using the :class:`DocTestRunner`'s " "output checker, and the results are formatted by the :meth:`!DocTestRunner." "report_\\*` methods." msgstr "" -#: library/doctest.rst:1603 +#: library/doctest.rst:1602 msgid "" "Print a summary of all the test cases that have been run by this " "DocTestRunner, and return a :class:`TestResults` instance." msgstr "" -#: library/doctest.rst:1606 +#: library/doctest.rst:1605 msgid "" "The optional *verbose* argument controls how detailed the summary is. If " "the verbosity is not specified, then the :class:`DocTestRunner`'s verbosity " "is used." msgstr "" -#: library/doctest.rst:1610 +#: library/doctest.rst:1609 msgid ":class:`DocTestParser` has the following attributes:" msgstr "" -#: library/doctest.rst:1614 +#: library/doctest.rst:1613 msgid "Number of attempted examples." msgstr "" -#: library/doctest.rst:1618 +#: library/doctest.rst:1617 msgid "Number of failed examples." msgstr "" -#: library/doctest.rst:1622 +#: library/doctest.rst:1621 msgid "Number of skipped examples." msgstr "" -#: library/doctest.rst:1630 +#: library/doctest.rst:1629 msgid "OutputChecker objects" msgstr "" -#: library/doctest.rst:1635 +#: library/doctest.rst:1634 msgid "" "A class used to check the whether the actual output from a doctest example " "matches the expected output. :class:`OutputChecker` defines two methods: :" @@ -2187,11 +2189,11 @@ msgid "" "string describing the differences between two outputs." msgstr "" -#: library/doctest.rst:1642 +#: library/doctest.rst:1641 msgid ":class:`OutputChecker` defines the following methods:" msgstr "" -#: library/doctest.rst:1646 +#: library/doctest.rst:1645 msgid "" "Return ``True`` iff the actual output from an example (*got*) matches the " "expected output (*want*). These strings are always considered to match if " @@ -2200,28 +2202,28 @@ msgid "" "`doctest-options` for more information about option flags." msgstr "" -#: library/doctest.rst:1655 +#: library/doctest.rst:1654 msgid "" "Return a string describing the differences between the expected output for a " "given example (*example*) and the actual output (*got*). *optionflags* is " "the set of option flags used to compare *want* and *got*." msgstr "" -#: library/doctest.rst:1663 +#: library/doctest.rst:1662 msgid "Debugging" msgstr "" -#: library/doctest.rst:1665 +#: library/doctest.rst:1664 msgid "Doctest provides several mechanisms for debugging doctest examples:" msgstr "" -#: library/doctest.rst:1667 +#: library/doctest.rst:1666 msgid "" "Several functions convert doctests to executable Python programs, which can " "be run under the Python debugger, :mod:`pdb`." msgstr "" -#: library/doctest.rst:1670 +#: library/doctest.rst:1669 msgid "" "The :class:`DebugRunner` class is a subclass of :class:`DocTestRunner` that " "raises an exception for the first failing example, containing information " @@ -2229,13 +2231,13 @@ msgid "" "debugging on the example." msgstr "" -#: library/doctest.rst:1675 +#: library/doctest.rst:1674 msgid "" "The :mod:`unittest` cases generated by :func:`DocTestSuite` support the :" "meth:`debug` method defined by :class:`unittest.TestCase`." msgstr "" -#: library/doctest.rst:1678 +#: library/doctest.rst:1677 msgid "" "You can add a call to :func:`pdb.set_trace` in a doctest example, and you'll " "drop into the Python debugger when that line is executed. Then you can " @@ -2243,7 +2245,7 @@ msgid "" "`a.py` contains just this module docstring::" msgstr "" -#: library/doctest.rst:1683 +#: library/doctest.rst:1682 msgid "" "\"\"\"\n" ">>> def f(x):\n" @@ -2256,11 +2258,11 @@ msgid "" "\"\"\"" msgstr "" -#: library/doctest.rst:1693 +#: library/doctest.rst:1692 msgid "Then an interactive Python session may look like this::" msgstr "" -#: library/doctest.rst:1695 +#: library/doctest.rst:1694 msgid "" ">>> import a, doctest\n" ">>> doctest.testmod(a)\n" @@ -2293,17 +2295,17 @@ msgid "" ">>>" msgstr "" -#: library/doctest.rst:1726 +#: library/doctest.rst:1725 msgid "" "Functions that convert doctests to Python code, and possibly run the " "synthesized code under the debugger:" msgstr "" -#: library/doctest.rst:1732 +#: library/doctest.rst:1731 msgid "Convert text with examples to a script." msgstr "" -#: library/doctest.rst:1734 +#: library/doctest.rst:1733 msgid "" "Argument *s* is a string containing doctest examples. The string is " "converted to a Python script, where doctest examples in *s* are converted to " @@ -2311,7 +2313,7 @@ msgid "" "generated script is returned as a string. For example, ::" msgstr "" -#: library/doctest.rst:1739 +#: library/doctest.rst:1738 msgid "" "import doctest\n" "print(doctest.script_from_examples(r\"\"\"\n" @@ -2324,11 +2326,11 @@ msgid "" "\"\"\"))" msgstr "" -#: library/doctest.rst:1749 +#: library/doctest.rst:1748 msgid "displays::" msgstr "" -#: library/doctest.rst:1751 +#: library/doctest.rst:1750 msgid "" "# Set x and y to 1 and 2.\n" "x, y = 1, 2\n" @@ -2339,18 +2341,18 @@ msgid "" "## 3" msgstr "" -#: library/doctest.rst:1759 +#: library/doctest.rst:1758 msgid "" "This function is used internally by other functions (see below), but can " "also be useful when you want to transform an interactive Python session into " "a Python script." msgstr "" -#: library/doctest.rst:1766 +#: library/doctest.rst:1765 msgid "Convert the doctest for an object to a script." msgstr "" -#: library/doctest.rst:1768 +#: library/doctest.rst:1767 msgid "" "Argument *module* is a module object, or dotted name of a module, containing " "the object whose doctests are of interest. Argument *name* is the name " @@ -2360,23 +2362,23 @@ msgid "" "module :file:`a.py` contains a top-level function :func:`!f`, then ::" msgstr "" -#: library/doctest.rst:1775 +#: library/doctest.rst:1774 msgid "" "import a, doctest\n" "print(doctest.testsource(a, \"a.f\"))" msgstr "" -#: library/doctest.rst:1778 +#: library/doctest.rst:1777 msgid "" "prints a script version of function :func:`!f`'s docstring, with doctests " "converted to code, and the rest placed in comments." msgstr "" -#: library/doctest.rst:1784 +#: library/doctest.rst:1783 msgid "Debug the doctests for an object." msgstr "" -#: library/doctest.rst:1786 +#: library/doctest.rst:1785 msgid "" "The *module* and *name* arguments are the same as for function :func:" "`testsource` above. The synthesized Python script for the named object's " @@ -2384,13 +2386,13 @@ msgid "" "the control of the Python debugger, :mod:`pdb`." msgstr "" -#: library/doctest.rst:1791 +#: library/doctest.rst:1790 msgid "" "A shallow copy of ``module.__dict__`` is used for both local and global " "execution context." msgstr "" -#: library/doctest.rst:1794 +#: library/doctest.rst:1793 msgid "" "Optional argument *pm* controls whether post-mortem debugging is used. If " "*pm* has a true value, the script file is run directly, and the debugger " @@ -2402,30 +2404,30 @@ msgid "" "to :func:`pdb.run`." msgstr "" -#: library/doctest.rst:1805 +#: library/doctest.rst:1804 msgid "Debug the doctests in a string." msgstr "" -#: library/doctest.rst:1807 +#: library/doctest.rst:1806 msgid "" "This is like function :func:`debug` above, except that a string containing " "doctest examples is specified directly, via the *src* argument." msgstr "" -#: library/doctest.rst:1810 +#: library/doctest.rst:1809 msgid "" "Optional argument *pm* has the same meaning as in function :func:`debug` " "above." msgstr "" -#: library/doctest.rst:1812 +#: library/doctest.rst:1811 msgid "" "Optional argument *globs* gives a dictionary to use as both local and global " "execution context. If not specified, or ``None``, an empty dictionary is " "used. If specified, a shallow copy of the dictionary is used." msgstr "" -#: library/doctest.rst:1817 +#: library/doctest.rst:1816 msgid "" "The :class:`DebugRunner` class, and the special exceptions it may raise, are " "of most interest to testing framework authors, and will only be sketched " @@ -2433,7 +2435,7 @@ msgid "" "(which is a doctest!) for more details:" msgstr "" -#: library/doctest.rst:1825 +#: library/doctest.rst:1824 msgid "" "A subclass of :class:`DocTestRunner` that raises an exception as soon as a " "failure is encountered. If an unexpected exception occurs, an :exc:" @@ -2443,89 +2445,89 @@ msgid "" "the actual output." msgstr "" -#: library/doctest.rst:1832 +#: library/doctest.rst:1831 msgid "" "For information about the constructor parameters and methods, see the " "documentation for :class:`DocTestRunner` in section :ref:`doctest-advanced-" "api`." msgstr "" -#: library/doctest.rst:1835 +#: library/doctest.rst:1834 msgid "" "There are two exceptions that may be raised by :class:`DebugRunner` " "instances:" msgstr "" -#: library/doctest.rst:1840 +#: library/doctest.rst:1839 msgid "" "An exception raised by :class:`DocTestRunner` to signal that a doctest " "example's actual output did not match its expected output. The constructor " "arguments are used to initialize the attributes of the same names." msgstr "" -#: library/doctest.rst:1844 +#: library/doctest.rst:1843 msgid ":exc:`DocTestFailure` defines the following attributes:" msgstr "" -#: library/doctest.rst:1873 +#: library/doctest.rst:1872 msgid "The :class:`DocTest` object that was being run when the example failed." msgstr "" -#: library/doctest.rst:1878 +#: library/doctest.rst:1877 msgid "The :class:`Example` that failed." msgstr "" -#: library/doctest.rst:1859 +#: library/doctest.rst:1858 msgid "The example's actual output." msgstr "" -#: library/doctest.rst:1864 +#: library/doctest.rst:1863 msgid "" "An exception raised by :class:`DocTestRunner` to signal that a doctest " "example raised an unexpected exception. The constructor arguments are used " "to initialize the attributes of the same names." msgstr "" -#: library/doctest.rst:1868 +#: library/doctest.rst:1867 msgid ":exc:`UnexpectedException` defines the following attributes:" msgstr "" -#: library/doctest.rst:1883 +#: library/doctest.rst:1882 msgid "" "A tuple containing information about the unexpected exception, as returned " "by :func:`sys.exc_info`." msgstr "" -#: library/doctest.rst:1890 +#: library/doctest.rst:1889 msgid "Soapbox" msgstr "" -#: library/doctest.rst:1892 +#: library/doctest.rst:1891 msgid "" "As mentioned in the introduction, :mod:`doctest` has grown to have three " "primary uses:" msgstr "" -#: library/doctest.rst:1895 +#: library/doctest.rst:1894 msgid "Checking examples in docstrings." msgstr "" -#: library/doctest.rst:1897 +#: library/doctest.rst:1896 msgid "Regression testing." msgstr "" -#: library/doctest.rst:1899 +#: library/doctest.rst:1898 msgid "Executable documentation / literate testing." msgstr "" -#: library/doctest.rst:1901 +#: library/doctest.rst:1900 msgid "" "These uses have different requirements, and it is important to distinguish " "them. In particular, filling your docstrings with obscure test cases makes " "for bad documentation." msgstr "" -#: library/doctest.rst:1905 +#: library/doctest.rst:1904 msgid "" "When writing a docstring, choose docstring examples with care. There's an " "art to this that needs to be learned---it may not be natural at first. " @@ -2537,7 +2539,7 @@ msgid "" "\"harmless\" change." msgstr "" -#: library/doctest.rst:1913 +#: library/doctest.rst:1912 msgid "" "Doctest also makes an excellent tool for regression testing, especially if " "you don't skimp on explanatory text. By interleaving prose and examples, it " @@ -2558,13 +2560,13 @@ msgid "" "different results, blurring the distinction between testing and explaining." msgstr "" -#: library/doctest.rst:1931 +#: library/doctest.rst:1930 msgid "" "Regression testing is best confined to dedicated objects or files. There " "are several options for organizing tests:" msgstr "" -#: library/doctest.rst:1934 +#: library/doctest.rst:1933 msgid "" "Write text files containing test cases as interactive examples, and test the " "files using :func:`testfile` or :func:`DocFileSuite`. This is recommended, " @@ -2572,7 +2574,7 @@ msgid "" "doctest." msgstr "" -#: library/doctest.rst:1939 +#: library/doctest.rst:1938 msgid "" "Define functions named ``_regrtest_topic`` that consist of single " "docstrings, containing test cases for the named topics. These functions can " @@ -2580,13 +2582,13 @@ msgid "" "test file." msgstr "" -#: library/doctest.rst:1943 +#: library/doctest.rst:1942 msgid "" -"Define a ``__test__`` dictionary mapping from regression test topics to " -"docstrings containing test cases." +"Define a :attr:`~module.__test__` dictionary mapping from regression test " +"topics to docstrings containing test cases." msgstr "" -#: library/doctest.rst:1946 +#: library/doctest.rst:1945 msgid "" "When you have placed your tests in a module, the module can itself be the " "test runner. When a test fails, you can arrange for your test runner to re-" @@ -2594,7 +2596,7 @@ msgid "" "example of such a test runner::" msgstr "" -#: library/doctest.rst:1951 +#: library/doctest.rst:1950 msgid "" "if __name__ == '__main__':\n" " import doctest\n" @@ -2612,53 +2614,53 @@ msgid "" " print(f\"{fail} failures out of {total} tests\")" msgstr "" -#: library/doctest.rst:1968 +#: library/doctest.rst:1967 msgid "Footnotes" msgstr "" -#: library/doctest.rst:1969 +#: library/doctest.rst:1968 msgid "" "Examples containing both expected output and an exception are not supported. " "Trying to guess where one ends and the other begins is too error-prone, and " "that also makes for a confusing test." msgstr "" -#: library/doctest.rst:373 +#: library/doctest.rst:376 msgid ">>>" msgstr "" -#: library/doctest.rst:373 +#: library/doctest.rst:376 msgid "interpreter prompt" msgstr "" -#: library/doctest.rst:608 +#: library/doctest.rst:611 msgid "..." msgstr "" -#: library/doctest.rst:539 +#: library/doctest.rst:542 msgid "^ (caret)" msgstr "" -#: library/doctest.rst:539 +#: library/doctest.rst:542 msgid "marker" msgstr "" -#: library/doctest.rst:588 +#: library/doctest.rst:591 msgid "" msgstr "" -#: library/doctest.rst:733 +#: library/doctest.rst:736 msgid "in doctests" msgstr "" -#: library/doctest.rst:733 +#: library/doctest.rst:736 msgid "# (hash)" msgstr "" -#: library/doctest.rst:733 +#: library/doctest.rst:736 msgid "+ (plus)" msgstr "" -#: library/doctest.rst:733 +#: library/doctest.rst:736 msgid "- (minus)" msgstr "" diff --git a/library/email.charset.po b/library/email.charset.po index 1e9fd54e..7f0b2688 100644 --- a/library/email.charset.po +++ b/library/email.charset.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-01-27 01:00+0200\n" "Last-Translator: Marios Giannopoulos \n" "Language-Team: PyGreece \n" diff --git a/library/email.compat32-message.po b/library/email.compat32-message.po index 882c4d61..0e602630 100644 --- a/library/email.compat32-message.po +++ b/library/email.compat32-message.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/email.contentmanager.po b/library/email.contentmanager.po index e44dcd80..304ff22b 100644 --- a/library/email.contentmanager.po +++ b/library/email.contentmanager.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/email.encoders.po b/library/email.encoders.po index 9f454d6f..dabf7bd0 100644 --- a/library/email.encoders.po +++ b/library/email.encoders.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/email.errors.po b/library/email.errors.po index 0b263bd1..87e8cfa5 100644 --- a/library/email.errors.po +++ b/library/email.errors.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2024-12-14 01:00+0200\n" "Last-Translator: Marios Giannopoulos \n" "Language-Team: PyGreece \n" diff --git a/library/email.examples.po b/library/email.examples.po index 57cc731d..d914bbbb 100644 --- a/library/email.examples.po +++ b/library/email.examples.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/email.generator.po b/library/email.generator.po index 4e24f563..d27a724d 100644 --- a/library/email.generator.po +++ b/library/email.generator.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/email.header.po b/library/email.header.po index cd0dcf55..e5f033f2 100644 --- a/library/email.header.po +++ b/library/email.header.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -266,40 +266,68 @@ msgid "" msgstr "" #: library/email.header.rst:181 +msgid "For historical reasons, this function may return either:" +msgstr "" + +#: library/email.header.rst:183 msgid "" -"This function returns a list of ``(decoded_string, charset)`` pairs " -"containing each of the decoded parts of the header. *charset* is ``None`` " -"for non-encoded parts of the header, otherwise a lower case string " -"containing the name of the character set specified in the encoded string." +"A list of pairs containing each of the decoded parts of the header, " +"``(decoded_bytes, charset)``, where *decoded_bytes* is always an instance " +"of :class:`bytes`, and *charset* is either:" +msgstr "" + +#: library/email.header.rst:187 +msgid "A lower case string containing the name of the character set specified." msgstr "" -#: library/email.header.rst:186 -msgid "Here's an example::" +#: library/email.header.rst:189 +msgid "``None`` for non-encoded parts of the header." msgstr "" -#: library/email.header.rst:188 +#: library/email.header.rst:191 msgid "" -">>> from email.header import decode_header\n" -">>> decode_header('=?iso-8859-1?q?p=F6stal?=')\n" -"[(b'p\\xf6stal', 'iso-8859-1')]" +"A list of length 1 containing a pair ``(string, None)``, where *string* is " +"always an instance of :class:`str`." msgstr "" -#: library/email.header.rst:195 +#: library/email.header.rst:194 +msgid "" +"An :exc:`email.errors.HeaderParseError` may be raised when certain decoding " +"errors occur (e.g. a base64 decoding exception)." +msgstr "" + +#: library/email.header.rst:197 +msgid "Here are examples:" +msgstr "" + +#: library/email.header.rst:209 +msgid "" +"This function exists for for backwards compatibility only. For new code, we " +"recommend using :class:`email.headerregistry.HeaderRegistry`." +msgstr "" + +#: library/email.header.rst:215 msgid "" "Create a :class:`Header` instance from a sequence of pairs as returned by :" "func:`decode_header`." msgstr "" -#: library/email.header.rst:198 +#: library/email.header.rst:218 msgid "" ":func:`decode_header` takes a header value string and returns a sequence of " "pairs of the format ``(decoded_string, charset)`` where *charset* is the " "name of the character set." msgstr "" -#: library/email.header.rst:202 +#: library/email.header.rst:222 msgid "" "This function takes one of those sequence of pairs and returns a :class:" "`Header` instance. Optional *maxlinelen*, *header_name*, and " "*continuation_ws* are as in the :class:`Header` constructor." msgstr "" + +#: library/email.header.rst:228 +msgid "" +"This function exists for for backwards compatibility only, and is not " +"recommended for use in new code." +msgstr "" diff --git a/library/email.headerregistry.po b/library/email.headerregistry.po index 81dd1800..1817482b 100644 --- a/library/email.headerregistry.po +++ b/library/email.headerregistry.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/email.iterators.po b/library/email.iterators.po index 7dd6b6f1..081e3997 100644 --- a/library/email.iterators.po +++ b/library/email.iterators.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/email.message.po b/library/email.message.po index 5db54dad..d9b138ac 100644 --- a/library/email.message.po +++ b/library/email.message.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/email.mime.po b/library/email.mime.po index d983b2e3..c84e890b 100644 --- a/library/email.mime.po +++ b/library/email.mime.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/email.parser.po b/library/email.parser.po index 88b4452a..2827bec2 100644 --- a/library/email.parser.po +++ b/library/email.parser.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/email.po b/library/email.po index 044728ee..0be6b80f 100644 --- a/library/email.po +++ b/library/email.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/email.policy.po b/library/email.policy.po index a69b13b3..50fa68c2 100644 --- a/library/email.policy.po +++ b/library/email.policy.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/email.utils.po b/library/email.utils.po index 38520a75..8e620051 100644 --- a/library/email.utils.po +++ b/library/email.utils.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/ensurepip.po b/library/ensurepip.po index 0c3d543d..22c34c78 100644 --- a/library/ensurepip.po +++ b/library/ensurepip.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/enum.po b/library/enum.po index 7d344c3d..69c1c06b 100644 --- a/library/enum.po +++ b/library/enum.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/errno.po b/library/errno.po index f244b3c2..f69aa0d0 100644 --- a/library/errno.po +++ b/library/errno.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/exceptions.po b/library/exceptions.po index f07d7cb2..5ae334bf 100644 --- a/library/exceptions.po +++ b/library/exceptions.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/faulthandler.po b/library/faulthandler.po index 2b46c88d..366d69ff 100644 --- a/library/faulthandler.po +++ b/library/faulthandler.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/fcntl.po b/library/fcntl.po index 8dcb2cc7..284cf374 100644 --- a/library/fcntl.po +++ b/library/fcntl.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/filecmp.po b/library/filecmp.po index 47ddaf10..cbc86ca1 100644 --- a/library/filecmp.po +++ b/library/filecmp.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/fileformats.po b/library/fileformats.po index a4ed86cd..11bb7945 100644 --- a/library/fileformats.po +++ b/library/fileformats.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/fileinput.po b/library/fileinput.po index a0962ab8..2c868e6f 100644 --- a/library/fileinput.po +++ b/library/fileinput.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/filesys.po b/library/filesys.po index aad63050..c49d9bd7 100644 --- a/library/filesys.po +++ b/library/filesys.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/fnmatch.po b/library/fnmatch.po index 69e455d5..609c3b77 100644 --- a/library/fnmatch.po +++ b/library/fnmatch.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/fractions.po b/library/fractions.po index cc4dfadf..9f1aa1b0 100644 --- a/library/fractions.po +++ b/library/fractions.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/frameworks.po b/library/frameworks.po index 77e42db3..b3ee476c 100644 --- a/library/frameworks.po +++ b/library/frameworks.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/ftplib.po b/library/ftplib.po index 80d4f57f..9bd86b3c 100644 --- a/library/ftplib.po +++ b/library/ftplib.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/functional.po b/library/functional.po index 3afead6f..e86afd43 100644 --- a/library/functional.po +++ b/library/functional.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/functions.po b/library/functions.po index c5ee33bc..bc501ee4 100644 --- a/library/functions.po +++ b/library/functions.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2024-05-10 22:23+0300\n" "Last-Translator: Panagiotis Skias \n" "Language-Team: PyGreece \n" diff --git a/library/functools.po b/library/functools.po index 33c00413..86adc65a 100644 --- a/library/functools.po +++ b/library/functools.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/gc.po b/library/gc.po index e3b68529..7f5b5d46 100644 --- a/library/gc.po +++ b/library/gc.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/getopt.po b/library/getopt.po index c7ddf8c9..4a92fb94 100644 --- a/library/getopt.po +++ b/library/getopt.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/getpass.po b/library/getpass.po index 75743af7..6ce29e63 100644 --- a/library/getpass.po +++ b/library/getpass.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/gettext.po b/library/gettext.po index 478e9665..9b512b1d 100644 --- a/library/gettext.po +++ b/library/gettext.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/glob.po b/library/glob.po index 462b92e3..9374aa18 100644 --- a/library/glob.po +++ b/library/glob.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/graphlib.po b/library/graphlib.po index 967bfbcd..3531fde3 100644 --- a/library/graphlib.po +++ b/library/graphlib.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/grp.po b/library/grp.po index 1ce144eb..94b3f873 100644 --- a/library/grp.po +++ b/library/grp.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/gzip.po b/library/gzip.po index 0c8ec782..248f3578 100644 --- a/library/gzip.po +++ b/library/gzip.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-10 22:33+0200\n" "Last-Translator: Marios Giannopoulos \n" "Language-Team: PyGreece \n" diff --git a/library/hashlib.po b/library/hashlib.po index 11ddae41..354c3a7c 100644 --- a/library/hashlib.po +++ b/library/hashlib.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/heapq.po b/library/heapq.po index 76be72e5..ac6a3b7a 100644 --- a/library/heapq.po +++ b/library/heapq.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/hmac.po b/library/hmac.po index 93fe76fb..0a23fa50 100644 --- a/library/hmac.po +++ b/library/hmac.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/html.entities.po b/library/html.entities.po index 232922f5..af72f89d 100644 --- a/library/html.entities.po +++ b/library/html.entities.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/html.parser.po b/library/html.parser.po index 2c3d9e52..edc9bc58 100644 --- a/library/html.parser.po +++ b/library/html.parser.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/html.po b/library/html.po index f5a01703..12e1079b 100644 --- a/library/html.po +++ b/library/html.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/http.client.po b/library/http.client.po index feb18a3c..7a8be4fe 100644 --- a/library/http.client.po +++ b/library/http.client.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/http.cookiejar.po b/library/http.cookiejar.po index ebbdb7ad..8bef0bc9 100644 --- a/library/http.cookiejar.po +++ b/library/http.cookiejar.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/http.cookies.po b/library/http.cookies.po index 054c62d5..db332f1c 100644 --- a/library/http.cookies.po +++ b/library/http.cookies.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/http.po b/library/http.po index ab78b08f..73480f20 100644 --- a/library/http.po +++ b/library/http.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/http.server.po b/library/http.server.po index 6440a9f6..a0c21202 100644 --- a/library/http.server.po +++ b/library/http.server.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -529,28 +529,27 @@ msgstr "" #: library/http.server.rst:431 msgid "" "Then follows a blank line signifying the end of the headers, and then the " -"contents of the file are output. If the file's MIME type starts with ``text/" -"`` the file is opened in text mode; otherwise binary mode is used." +"contents of the file are output." msgstr "" -#: library/http.server.rst:435 +#: library/http.server.rst:434 msgid "" "For example usage, see the implementation of the ``test`` function in :" "source:`Lib/http/server.py`." msgstr "" -#: library/http.server.rst:438 +#: library/http.server.rst:437 msgid "Support of the ``'If-Modified-Since'`` header." msgstr "" -#: library/http.server.rst:441 +#: library/http.server.rst:440 msgid "" "The :class:`SimpleHTTPRequestHandler` class can be used in the following " "manner in order to create a very basic webserver serving files relative to " "the current directory::" msgstr "" -#: library/http.server.rst:445 +#: library/http.server.rst:444 msgid "" "import http.server\n" "import socketserver\n" @@ -564,28 +563,28 @@ msgid "" " httpd.serve_forever()" msgstr "" -#: library/http.server.rst:457 +#: library/http.server.rst:456 msgid "" ":class:`SimpleHTTPRequestHandler` can also be subclassed to enhance " "behavior, such as using different index file names by overriding the class " "attribute :attr:`index_pages`." msgstr "" -#: library/http.server.rst:464 +#: library/http.server.rst:463 msgid "" "This class is used to serve either files or output of CGI scripts from the " "current directory and below. Note that mapping HTTP hierarchic structure to " "local directory structure is exactly as in :class:`SimpleHTTPRequestHandler`." msgstr "" -#: library/http.server.rst:470 +#: library/http.server.rst:469 msgid "" "CGI scripts run by the :class:`CGIHTTPRequestHandler` class cannot execute " "redirects (HTTP code 302), because code 200 (script output follows) is sent " "prior to execution of the CGI script. This pre-empts the status code." msgstr "" -#: library/http.server.rst:475 +#: library/http.server.rst:474 msgid "" "The class will however, run the CGI script, instead of serving it as a file, " "if it guesses it to be a CGI script. Only directory-based CGI are used --- " @@ -593,41 +592,41 @@ msgid "" "denoting CGI scripts." msgstr "" -#: library/http.server.rst:480 +#: library/http.server.rst:479 msgid "" "The :func:`do_GET` and :func:`do_HEAD` functions are modified to run CGI " "scripts and serve the output, instead of serving files, if the request leads " "to somewhere below the ``cgi_directories`` path." msgstr "" -#: library/http.server.rst:484 +#: library/http.server.rst:483 msgid "The :class:`CGIHTTPRequestHandler` defines the following data member:" msgstr "" -#: library/http.server.rst:488 +#: library/http.server.rst:487 msgid "" "This defaults to ``['/cgi-bin', '/htbin']`` and describes directories to " "treat as containing CGI scripts." msgstr "" -#: library/http.server.rst:491 +#: library/http.server.rst:490 msgid "The :class:`CGIHTTPRequestHandler` defines the following method:" msgstr "" -#: library/http.server.rst:495 +#: library/http.server.rst:494 msgid "" "This method serves the ``'POST'`` request type, only allowed for CGI " "scripts. Error 501, \"Can only POST to CGI scripts\", is output when trying " "to POST to a non-CGI url." msgstr "" -#: library/http.server.rst:499 +#: library/http.server.rst:498 msgid "" "Note that CGI scripts will be run with UID of user nobody, for security " "reasons. Problems with the CGI script will be translated to error 403." msgstr "" -#: library/http.server.rst:504 +#: library/http.server.rst:503 msgid "" ":class:`CGIHTTPRequestHandler` is being removed in 3.15. CGI has not been " "considered a good way to do things for well over a decade. This code has " @@ -636,36 +635,36 @@ msgid "" "server-security>`." msgstr "" -#: library/http.server.rst:514 +#: library/http.server.rst:513 msgid "Command-line interface" msgstr "" -#: library/http.server.rst:516 +#: library/http.server.rst:515 msgid "" ":mod:`http.server` can also be invoked directly using the :option:`-m` " "switch of the interpreter. The following example illustrates how to serve " "files relative to the current directory::" msgstr "" -#: library/http.server.rst:520 +#: library/http.server.rst:519 msgid "python -m http.server [OPTIONS] [port]" msgstr "" -#: library/http.server.rst:522 +#: library/http.server.rst:521 msgid "The following options are accepted:" msgstr "" -#: library/http.server.rst:528 +#: library/http.server.rst:527 msgid "" "The server listens to port 8000 by default. The default can be overridden by " "passing the desired port number as an argument::" msgstr "" -#: library/http.server.rst:531 +#: library/http.server.rst:530 msgid "python -m http.server 9000" msgstr "" -#: library/http.server.rst:535 +#: library/http.server.rst:534 msgid "" "Specifies a specific address to which it should bind. Both IPv4 and IPv6 " "addresses are supported. By default, the server binds itself to all " @@ -673,80 +672,80 @@ msgid "" "localhost only::" msgstr "" -#: library/http.server.rst:540 +#: library/http.server.rst:539 msgid "python -m http.server --bind 127.0.0.1" msgstr "" -#: library/http.server.rst:544 +#: library/http.server.rst:543 msgid "Support IPv6 in the ``--bind`` option." msgstr "" -#: library/http.server.rst:549 +#: library/http.server.rst:548 msgid "" "Specifies a directory to which it should serve the files. By default, the " "server uses the current directory. For example, the following command uses a " "specific directory::" msgstr "" -#: library/http.server.rst:553 +#: library/http.server.rst:552 msgid "python -m http.server --directory /tmp/" msgstr "" -#: library/http.server.rst:559 +#: library/http.server.rst:558 msgid "" "Specifies the HTTP version to which the server is conformant. By default, " "the server is conformant to HTTP/1.0. For example, the following command " "runs an HTTP/1.1 conformant server::" msgstr "" -#: library/http.server.rst:563 +#: library/http.server.rst:562 msgid "python -m http.server --protocol HTTP/1.1" msgstr "" -#: library/http.server.rst:569 +#: library/http.server.rst:568 msgid "" ":class:`CGIHTTPRequestHandler` can be enabled in the command line by passing " "the ``--cgi`` option::" msgstr "" -#: library/http.server.rst:572 +#: library/http.server.rst:571 msgid "python -m http.server --cgi" msgstr "" -#: library/http.server.rst:576 +#: library/http.server.rst:575 msgid "" ":mod:`http.server` command line ``--cgi`` support is being removed because :" "class:`CGIHTTPRequestHandler` is being removed." msgstr "" -#: library/http.server.rst:581 +#: library/http.server.rst:580 msgid "" ":class:`CGIHTTPRequestHandler` and the ``--cgi`` command-line option are not " "intended for use by untrusted clients and may be vulnerable to exploitation. " "Always use within a secure environment." msgstr "" -#: library/http.server.rst:587 +#: library/http.server.rst:586 msgid "Specifies a TLS certificate chain for HTTPS connections::" msgstr "" -#: library/http.server.rst:589 +#: library/http.server.rst:588 msgid "python -m http.server --tls-cert fullchain.pem" msgstr "" -#: library/http.server.rst:595 +#: library/http.server.rst:594 msgid "Specifies a private key file for HTTPS connections." msgstr "" -#: library/http.server.rst:597 +#: library/http.server.rst:596 msgid "This option requires ``--tls-cert`` to be specified." msgstr "" -#: library/http.server.rst:603 +#: library/http.server.rst:602 msgid "Specifies the password file for password-protected private keys::" msgstr "" -#: library/http.server.rst:605 +#: library/http.server.rst:604 msgid "" "python -m http.server \\\n" " --tls-cert cert.pem \\\n" @@ -754,22 +753,22 @@ msgid "" " --tls-password-file password.txt" msgstr "" -#: library/http.server.rst:610 +#: library/http.server.rst:609 msgid "This option requires `--tls-cert`` to be specified." msgstr "" -#: library/http.server.rst:618 +#: library/http.server.rst:617 msgid "Security considerations" msgstr "" -#: library/http.server.rst:622 +#: library/http.server.rst:621 msgid "" ":class:`SimpleHTTPRequestHandler` will follow symbolic links when handling " "requests, this makes it possible for files outside of the specified " "directory to be served." msgstr "" -#: library/http.server.rst:626 +#: library/http.server.rst:625 msgid "" "Earlier versions of Python did not scrub control characters from the log " "messages emitted to stderr from ``python -m http.server`` or the default :" @@ -778,7 +777,7 @@ msgid "" "codes to your terminal." msgstr "" -#: library/http.server.rst:632 +#: library/http.server.rst:631 msgid "Control characters are scrubbed in stderr logs." msgstr "" @@ -806,10 +805,10 @@ msgstr "" msgid "httpd" msgstr "" -#: library/http.server.rst:620 +#: library/http.server.rst:619 msgid "http.server" msgstr "" -#: library/http.server.rst:620 +#: library/http.server.rst:619 msgid "security" msgstr "" diff --git a/library/i18n.po b/library/i18n.po index c742bd0c..5ba32ad2 100644 --- a/library/i18n.po +++ b/library/i18n.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/idle.po b/library/idle.po index 265689c8..23047acb 100644 --- a/library/idle.po +++ b/library/idle.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/imaplib.po b/library/imaplib.po index 47ac55b8..ca87f2d6 100644 --- a/library/imaplib.po +++ b/library/imaplib.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/imghdr.po b/library/imghdr.po index 0504fe3c..7067afb0 100644 --- a/library/imghdr.po +++ b/library/imghdr.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/imp.po b/library/imp.po index b147fa89..180011a1 100644 --- a/library/imp.po +++ b/library/imp.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/importlib.metadata.po b/library/importlib.metadata.po index 939a0adc..b028a1dd 100644 --- a/library/importlib.metadata.po +++ b/library/importlib.metadata.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/importlib.po b/library/importlib.po index 1141315c..b3841761 100644 --- a/library/importlib.po +++ b/library/importlib.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/importlib.resources.abc.po b/library/importlib.resources.abc.po index 940c452a..0d9f598a 100644 --- a/library/importlib.resources.abc.po +++ b/library/importlib.resources.abc.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/importlib.resources.po b/library/importlib.resources.po index bb7723c7..f1984299 100644 --- a/library/importlib.resources.po +++ b/library/importlib.resources.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-06 12:58+0300\n" "Last-Translator: Marios Giannopoulos \n" "Language-Team: PyGreece \n" diff --git a/library/index.po b/library/index.po index 71d4ced3..36f55fc2 100644 --- a/library/index.po +++ b/library/index.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/inspect.po b/library/inspect.po index 1481cef3..0f4eebf7 100644 --- a/library/inspect.po +++ b/library/inspect.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/internet.po b/library/internet.po index 13eae2d3..6ce81280 100644 --- a/library/internet.po +++ b/library/internet.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2024-12-15 13:44+0000\n" "Last-Translator: Artemis Leonardou \n" "Language-Team: PyGreece \n" diff --git a/library/intro.po b/library/intro.po index 74af9272..bbf29ad4 100644 --- a/library/intro.po +++ b/library/intro.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/io.po b/library/io.po index 3e8b4750..1f062431 100644 --- a/library/io.po +++ b/library/io.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -62,7 +62,7 @@ msgid "" "since :exc:`IOError` is now an alias of :exc:`OSError`." msgstr "" -#: library/io.rst:870 library/io.rst:1219 +#: library/io.rst:867 library/io.rst:1217 msgid "Text I/O" msgstr "" @@ -106,7 +106,7 @@ msgid "" "`TextIOBase`." msgstr "" -#: library/io.rst:1207 +#: library/io.rst:1205 msgid "Binary I/O" msgstr "" @@ -650,7 +650,7 @@ msgid "" "negative" msgstr "" -#: library/io.rst:945 +#: library/io.rst:943 msgid "The :data:`!SEEK_*` constants." msgstr "" @@ -776,109 +776,117 @@ msgstr "" msgid "" "The main difference with :class:`RawIOBase` is that methods :meth:`read`, :" "meth:`readinto` and :meth:`write` will try (respectively) to read as much " -"input as requested or to consume all given output, at the expense of making " -"perhaps more than one system call." +"input as requested or to emit all provided data." msgstr "" -#: library/io.rst:535 +#: library/io.rst:534 msgid "" -"In addition, those methods can raise :exc:`BlockingIOError` if the " -"underlying raw stream is in non-blocking mode and cannot take or give enough " -"data; unlike their :class:`RawIOBase` counterparts, they will never return " -"``None``." +"In addition, if the underlying raw stream is in non-blocking mode, when the " +"system returns would block :meth:`write` will raise :exc:`BlockingIOError` " +"with :attr:`BlockingIOError.characters_written` and :meth:`read` will return " +"data read so far or ``None`` if no data is available." msgstr "" -#: library/io.rst:540 +#: library/io.rst:539 msgid "" "Besides, the :meth:`read` method does not have a default implementation that " "defers to :meth:`readinto`." msgstr "" -#: library/io.rst:543 +#: library/io.rst:542 msgid "" "A typical :class:`BufferedIOBase` implementation should not inherit from a :" "class:`RawIOBase` implementation, but wrap one, like :class:`BufferedWriter` " "and :class:`BufferedReader` do." msgstr "" -#: library/io.rst:547 +#: library/io.rst:546 msgid "" ":class:`BufferedIOBase` provides or overrides these data attributes and " "methods in addition to those from :class:`IOBase`:" msgstr "" -#: library/io.rst:552 +#: library/io.rst:551 msgid "" "The underlying raw stream (a :class:`RawIOBase` instance) that :class:" "`BufferedIOBase` deals with. This is not part of the :class:" "`BufferedIOBase` API and may not exist on some implementations." msgstr "" -#: library/io.rst:558 +#: library/io.rst:557 msgid "Separate the underlying raw stream from the buffer and return it." msgstr "" -#: library/io.rst:560 +#: library/io.rst:559 msgid "" "After the raw stream has been detached, the buffer is in an unusable state." msgstr "" -#: library/io.rst:563 +#: library/io.rst:562 msgid "" "Some buffers, like :class:`BytesIO`, do not have the concept of a single raw " "stream to return from this method. They raise :exc:`UnsupportedOperation`." msgstr "" -#: library/io.rst:571 +#: library/io.rst:570 msgid "" -"Read and return up to *size* bytes. If the argument is omitted, ``None``, " -"or negative, data is read and returned until EOF is reached. An empty :" -"class:`bytes` object is returned if the stream is already at EOF." +"Read and return up to *size* bytes. If the argument is omitted, ``None``, or " +"negative read as much as possible." msgstr "" -#: library/io.rst:575 +#: library/io.rst:573 msgid "" -"If the argument is positive, and the underlying raw stream is not " -"interactive, multiple raw reads may be issued to satisfy the byte count " -"(unless EOF is reached first). But for interactive raw streams, at most one " -"raw read will be issued, and a short result does not imply that EOF is " -"imminent." +"Fewer bytes may be returned than requested. An empty :class:`bytes` object " +"is returned if the stream is already at EOF. More than one read may be made " +"and calls may be retried if specific errors are encountered, see :meth:`os." +"read` and :pep:`475` for more details. Less than size bytes being returned " +"does not imply that EOF is imminent." msgstr "" -#: library/io.rst:604 library/io.rst:614 +#: library/io.rst:579 msgid "" -"A :exc:`BlockingIOError` is raised if the underlying raw stream is in non " -"blocking-mode, and has no data available at the moment." +"When reading as much as possible the default implementation will use ``raw." +"readall`` if available (which should implement :meth:`RawIOBase.readall`), " +"otherwise will read in a loop until read returns ``None``, an empty :class:" +"`bytes`, or a non-retryable error. For most streams this is to EOF, but for " +"non-blocking streams more data may become available." msgstr "" -#: library/io.rst:586 +#: library/io.rst:601 msgid "" -"Read and return up to *size* bytes, with at most one call to the underlying " -"raw stream's :meth:`~RawIOBase.read` (or :meth:`~RawIOBase.readinto`) " -"method. This can be useful if you are implementing your own buffering on " -"top of a :class:`BufferedIOBase` object." +"When the underlying raw stream is non-blocking, implementations may either " +"raise :exc:`BlockingIOError` or return ``None`` if no data is available. :" +"mod:`io` implementations return ``None``." msgstr "" -#: library/io.rst:592 +#: library/io.rst:594 msgid "" -"If *size* is ``-1`` (the default), an arbitrary number of bytes are returned " -"(more than zero unless EOF is reached)." +"Read and return up to *size* bytes, calling :meth:`~RawIOBase.readinto` " +"which may retry if :py:const:`~errno.EINTR` is encountered per :pep:`475`. " +"If *size* is ``-1`` or not provided, the implementation will choose an " +"arbitrary value for *size*." msgstr "" -#: library/io.rst:597 +#: library/io.rst:607 msgid "" "Read bytes into a pre-allocated, writable :term:`bytes-like object` *b* and " "return the number of bytes read. For example, *b* might be a :class:" "`bytearray`." msgstr "" -#: library/io.rst:601 +#: library/io.rst:611 msgid "" "Like :meth:`read`, multiple reads may be issued to the underlying raw " "stream, unless the latter is interactive." msgstr "" -#: library/io.rst:609 +#: library/io.rst:624 +msgid "" +"A :exc:`BlockingIOError` is raised if the underlying raw stream is in non " +"blocking-mode, and has no data available at the moment." +msgstr "" + +#: library/io.rst:619 msgid "" "Read bytes into a pre-allocated, writable :term:`bytes-like object` *b*, " "using at most one call to the underlying raw stream's :meth:`~RawIOBase." @@ -886,7 +894,7 @@ msgid "" "read." msgstr "" -#: library/io.rst:621 +#: library/io.rst:631 msgid "" "Write the given :term:`bytes-like object`, *b*, and return the number of " "bytes written (always equal to the length of *b* in bytes, since if the " @@ -895,41 +903,41 @@ msgid "" "or held in a buffer for performance and latency reasons." msgstr "" -#: library/io.rst:628 +#: library/io.rst:638 msgid "" "When in non-blocking mode, a :exc:`BlockingIOError` is raised if the data " "needed to be written to the raw stream but it couldn't accept all the data " "without blocking." msgstr "" -#: library/io.rst:632 +#: library/io.rst:642 msgid "" "The caller may release or mutate *b* after this method returns, so the " "implementation should only access *b* during the method call." msgstr "" -#: library/io.rst:637 +#: library/io.rst:647 msgid "Raw File I/O" msgstr "" -#: library/io.rst:641 +#: library/io.rst:651 msgid "" "A raw binary stream representing an OS-level file containing bytes data. It " "inherits from :class:`RawIOBase`." msgstr "" -#: library/io.rst:644 +#: library/io.rst:654 msgid "The *name* can be one of two things:" msgstr "" -#: library/io.rst:646 +#: library/io.rst:656 msgid "" "a character string or :class:`bytes` object representing the path to the " "file which will be opened. In this case closefd must be ``True`` (the " "default) otherwise an error will be raised." msgstr "" -#: library/io.rst:649 +#: library/io.rst:659 msgid "" "an integer representing the number of an existing OS-level file descriptor " "to which the resulting :class:`FileIO` object will give access. When the " @@ -937,7 +945,7 @@ msgid "" "set to ``False``." msgstr "" -#: library/io.rst:654 +#: library/io.rst:664 msgid "" "The *mode* can be ``'r'``, ``'w'``, ``'x'`` or ``'a'`` for reading " "(default), writing, exclusive creation or appending. The file will be " @@ -948,14 +956,14 @@ msgid "" "``'+'`` to the mode to allow simultaneous reading and writing." msgstr "" -#: library/io.rst:662 +#: library/io.rst:672 msgid "" "The :meth:`~RawIOBase.read` (when called with a positive argument), :meth:" "`~RawIOBase.readinto` and :meth:`~RawIOBase.write` methods on this class " "will only make one system call." msgstr "" -#: library/io.rst:666 +#: library/io.rst:676 msgid "" "A custom opener can be used by passing a callable as *opener*. The " "underlying file descriptor for the file object is then obtained by calling " @@ -964,77 +972,77 @@ msgid "" "similar to passing ``None``)." msgstr "" -#: library/io.rst:672 +#: library/io.rst:682 msgid "The newly created file is :ref:`non-inheritable `." msgstr "" -#: library/io.rst:674 +#: library/io.rst:684 msgid "" "See the :func:`open` built-in function for examples on using the *opener* " "parameter." msgstr "" -#: library/io.rst:677 +#: library/io.rst:687 msgid "The *opener* parameter was added. The ``'x'`` mode was added." msgstr "" -#: library/io.rst:681 +#: library/io.rst:691 msgid "The file is now non-inheritable." msgstr "" -#: library/io.rst:684 +#: library/io.rst:694 msgid "" ":class:`FileIO` provides these data attributes in addition to those from :" "class:`RawIOBase` and :class:`IOBase`:" msgstr "" -#: library/io.rst:689 +#: library/io.rst:699 msgid "The mode as given in the constructor." msgstr "" -#: library/io.rst:693 +#: library/io.rst:703 msgid "" "The file name. This is the file descriptor of the file when no name is " "given in the constructor." msgstr "" -#: library/io.rst:698 +#: library/io.rst:708 msgid "Buffered Streams" msgstr "" -#: library/io.rst:700 +#: library/io.rst:710 msgid "" "Buffered I/O streams provide a higher-level interface to an I/O device than " "raw I/O does." msgstr "" -#: library/io.rst:705 +#: library/io.rst:715 msgid "" "A binary stream using an in-memory bytes buffer. It inherits from :class:" "`BufferedIOBase`. The buffer is discarded when the :meth:`~IOBase.close` " "method is called." msgstr "" -#: library/io.rst:709 +#: library/io.rst:719 msgid "" "The optional argument *initial_bytes* is a :term:`bytes-like object` that " "contains initial data." msgstr "" -#: library/io.rst:712 +#: library/io.rst:722 msgid "" ":class:`BytesIO` provides or overrides these methods in addition to those " "from :class:`BufferedIOBase` and :class:`IOBase`:" msgstr "" -#: library/io.rst:717 +#: library/io.rst:727 msgid "" "Return a readable and writable view over the contents of the buffer without " "copying them. Also, mutating the view will transparently update the " "contents of the buffer::" msgstr "" -#: library/io.rst:721 +#: library/io.rst:731 msgid "" ">>> b = io.BytesIO(b\"abcdef\")\n" ">>> view = b.getbuffer()\n" @@ -1043,309 +1051,302 @@ msgid "" "b'ab56ef'" msgstr "" -#: library/io.rst:728 +#: library/io.rst:738 msgid "" "As long as the view exists, the :class:`BytesIO` object cannot be resized or " "closed." msgstr "" -#: library/io.rst:735 +#: library/io.rst:745 msgid "Return :class:`bytes` containing the entire contents of the buffer." msgstr "" -#: library/io.rst:740 +#: library/io.rst:750 msgid "In :class:`BytesIO`, this is the same as :meth:`~BufferedIOBase.read`." msgstr "" -#: library/io.rst:790 +#: library/io.rst:792 msgid "The *size* argument is now optional." msgstr "" -#: library/io.rst:747 +#: library/io.rst:757 msgid "" "In :class:`BytesIO`, this is the same as :meth:`~BufferedIOBase.readinto`." msgstr "" -#: library/io.rst:753 +#: library/io.rst:763 msgid "" "A buffered binary stream providing higher-level access to a readable, non " "seekable :class:`RawIOBase` raw binary stream. It inherits from :class:" "`BufferedIOBase`." msgstr "" -#: library/io.rst:757 +#: library/io.rst:767 msgid "" "When reading data from this object, a larger amount of data may be requested " "from the underlying raw stream, and kept in an internal buffer. The buffered " "data can then be returned directly on subsequent reads." msgstr "" -#: library/io.rst:761 +#: library/io.rst:771 msgid "" "The constructor creates a :class:`BufferedReader` for the given readable " "*raw* stream and *buffer_size*. If *buffer_size* is omitted, :data:" "`DEFAULT_BUFFER_SIZE` is used." msgstr "" -#: library/io.rst:765 +#: library/io.rst:775 msgid "" ":class:`BufferedReader` provides or overrides these methods in addition to " "those from :class:`BufferedIOBase` and :class:`IOBase`:" msgstr "" -#: library/io.rst:770 -msgid "" -"Return bytes from the stream without advancing the position. At most one " -"single read on the raw stream is done to satisfy the call. The number of " -"bytes returned may be less or more than requested." -msgstr "" - -#: library/io.rst:776 +#: library/io.rst:780 msgid "" -"Read and return *size* bytes, or if *size* is not given or negative, until " -"EOF or if the read call would block in non-blocking mode." +"Return bytes from the stream without advancing the position. The number of " +"bytes returned may be less or more than requested. If the underlying raw " +"stream is non-blocking and the operation would block, returns empty bytes." msgstr "" -#: library/io.rst:795 library/io.rst:1028 +#: library/io.rst:786 msgid "" -"When the underlying raw stream is non-blocking, a :exc:`BlockingIOError` may " -"be raised if a read operation cannot be completed immediately." +"In :class:`BufferedReader` this is the same as :meth:`io.BufferedIOBase.read`" msgstr "" -#: library/io.rst:786 +#: library/io.rst:790 msgid "" -"Read and return up to *size* bytes with only one call on the raw stream. If " -"at least one byte is buffered, only buffered bytes are returned. Otherwise, " -"one raw stream read call is made." +"In :class:`BufferedReader` this is the same as :meth:`io.BufferedIOBase." +"read1`" msgstr "" -#: library/io.rst:800 +#: library/io.rst:797 msgid "" "A buffered binary stream providing higher-level access to a writeable, non " "seekable :class:`RawIOBase` raw binary stream. It inherits from :class:" "`BufferedIOBase`." msgstr "" -#: library/io.rst:804 +#: library/io.rst:801 msgid "" "When writing to this object, data is normally placed into an internal " "buffer. The buffer will be written out to the underlying :class:`RawIOBase` " "object under various conditions, including:" msgstr "" -#: library/io.rst:808 +#: library/io.rst:805 msgid "when the buffer gets too small for all pending data;" msgstr "" -#: library/io.rst:809 +#: library/io.rst:806 msgid "when :meth:`flush` is called;" msgstr "" -#: library/io.rst:810 +#: library/io.rst:807 msgid "" "when a :meth:`~IOBase.seek` is requested (for :class:`BufferedRandom` " "objects);" msgstr "" -#: library/io.rst:811 +#: library/io.rst:808 msgid "when the :class:`BufferedWriter` object is closed or destroyed." msgstr "" -#: library/io.rst:813 +#: library/io.rst:810 msgid "" "The constructor creates a :class:`BufferedWriter` for the given writeable " "*raw* stream. If the *buffer_size* is not given, it defaults to :data:" "`DEFAULT_BUFFER_SIZE`." msgstr "" -#: library/io.rst:817 +#: library/io.rst:814 msgid "" ":class:`BufferedWriter` provides or overrides these methods in addition to " "those from :class:`BufferedIOBase` and :class:`IOBase`:" msgstr "" -#: library/io.rst:822 +#: library/io.rst:819 msgid "" "Force bytes held in the buffer into the raw stream. A :exc:" "`BlockingIOError` should be raised if the raw stream blocks." msgstr "" -#: library/io.rst:827 +#: library/io.rst:824 msgid "" "Write the :term:`bytes-like object`, *b*, and return the number of bytes " -"written. When in non-blocking mode, a :exc:`BlockingIOError` is raised if " -"the buffer needs to be written out but the raw stream blocks." +"written. When in non-blocking mode, a :exc:`BlockingIOError` with :attr:" +"`BlockingIOError.characters_written` set is raised if the buffer needs to be " +"written out but the raw stream blocks." msgstr "" -#: library/io.rst:835 +#: library/io.rst:832 msgid "" "A buffered binary stream providing higher-level access to a seekable :class:" "`RawIOBase` raw binary stream. It inherits from :class:`BufferedReader` " "and :class:`BufferedWriter`." msgstr "" -#: library/io.rst:839 +#: library/io.rst:836 msgid "" "The constructor creates a reader and writer for a seekable raw stream, given " "in the first argument. If the *buffer_size* is omitted it defaults to :data:" "`DEFAULT_BUFFER_SIZE`." msgstr "" -#: library/io.rst:843 +#: library/io.rst:840 msgid "" ":class:`BufferedRandom` is capable of anything :class:`BufferedReader` or :" "class:`BufferedWriter` can do. In addition, :meth:`~IOBase.seek` and :meth:" "`~IOBase.tell` are guaranteed to be implemented." msgstr "" -#: library/io.rst:850 +#: library/io.rst:847 msgid "" "A buffered binary stream providing higher-level access to two non seekable :" "class:`RawIOBase` raw binary streams---one readable, the other writeable. It " "inherits from :class:`BufferedIOBase`." msgstr "" -#: library/io.rst:854 +#: library/io.rst:851 msgid "" "*reader* and *writer* are :class:`RawIOBase` objects that are readable and " "writeable respectively. If the *buffer_size* is omitted it defaults to :" "data:`DEFAULT_BUFFER_SIZE`." msgstr "" -#: library/io.rst:858 +#: library/io.rst:855 msgid "" ":class:`BufferedRWPair` implements all of :class:`BufferedIOBase`\\'s " "methods except for :meth:`~BufferedIOBase.detach`, which raises :exc:" "`UnsupportedOperation`." msgstr "" -#: library/io.rst:864 +#: library/io.rst:861 msgid "" ":class:`BufferedRWPair` does not attempt to synchronize accesses to its " "underlying raw streams. You should not pass it the same object as reader " "and writer; use :class:`BufferedRandom` instead." msgstr "" -#: library/io.rst:874 +#: library/io.rst:871 msgid "" "Base class for text streams. This class provides a character and line based " "interface to stream I/O. It inherits from :class:`IOBase`." msgstr "" -#: library/io.rst:877 +#: library/io.rst:874 msgid "" ":class:`TextIOBase` provides or overrides these data attributes and methods " "in addition to those from :class:`IOBase`:" msgstr "" -#: library/io.rst:882 +#: library/io.rst:879 msgid "" "The name of the encoding used to decode the stream's bytes into strings, and " "to encode strings into bytes." msgstr "" -#: library/io.rst:887 +#: library/io.rst:884 msgid "The error setting of the decoder or encoder." msgstr "" -#: library/io.rst:891 +#: library/io.rst:888 msgid "" "A string, a tuple of strings, or ``None``, indicating the newlines " "translated so far. Depending on the implementation and the initial " "constructor flags, this may not be available." msgstr "" -#: library/io.rst:897 +#: library/io.rst:894 msgid "" -"The underlying binary buffer (a :class:`BufferedIOBase` instance) that :" -"class:`TextIOBase` deals with. This is not part of the :class:`TextIOBase` " -"API and may not exist in some implementations." +"The underlying binary buffer (a :class:`BufferedIOBase` or :class:" +"`RawIOBase` instance) that :class:`TextIOBase` deals with. This is not part " +"of the :class:`TextIOBase` API and may not exist in some implementations." msgstr "" -#: library/io.rst:903 +#: library/io.rst:901 msgid "" "Separate the underlying binary buffer from the :class:`TextIOBase` and " "return it." msgstr "" -#: library/io.rst:906 +#: library/io.rst:904 msgid "" "After the underlying buffer has been detached, the :class:`TextIOBase` is in " "an unusable state." msgstr "" -#: library/io.rst:909 +#: library/io.rst:907 msgid "" "Some :class:`TextIOBase` implementations, like :class:`StringIO`, may not " "have the concept of an underlying buffer and calling this method will raise :" "exc:`UnsupportedOperation`." msgstr "" -#: library/io.rst:917 +#: library/io.rst:915 msgid "" "Read and return at most *size* characters from the stream as a single :class:" "`str`. If *size* is negative or ``None``, reads until EOF." msgstr "" -#: library/io.rst:922 +#: library/io.rst:920 msgid "" "Read until newline or EOF and return a single :class:`str`. If the stream " "is already at EOF, an empty string is returned." msgstr "" -#: library/io.rst:925 +#: library/io.rst:923 msgid "If *size* is specified, at most *size* characters will be read." msgstr "" -#: library/io.rst:929 +#: library/io.rst:927 msgid "" "Change the stream position to the given *offset*. Behaviour depends on the " "*whence* parameter. The default value for *whence* is :data:`!SEEK_SET`." msgstr "" -#: library/io.rst:933 +#: library/io.rst:931 msgid "" ":data:`!SEEK_SET` or ``0``: seek from the start of the stream (the default); " "*offset* must either be a number returned by :meth:`TextIOBase.tell`, or " "zero. Any other *offset* value produces undefined behaviour." msgstr "" -#: library/io.rst:937 +#: library/io.rst:935 msgid "" ":data:`!SEEK_CUR` or ``1``: \"seek\" to the current position; *offset* must " "be zero, which is a no-operation (all other values are unsupported)." msgstr "" -#: library/io.rst:940 +#: library/io.rst:938 msgid "" ":data:`!SEEK_END` or ``2``: seek to the end of the stream; *offset* must be " "zero (all other values are unsupported)." msgstr "" -#: library/io.rst:943 +#: library/io.rst:941 msgid "Return the new absolute position as an opaque number." msgstr "" -#: library/io.rst:950 +#: library/io.rst:948 msgid "" "Return the current stream position as an opaque number. The number does not " "usually represent a number of bytes in the underlying binary storage." msgstr "" -#: library/io.rst:956 +#: library/io.rst:954 msgid "" "Write the string *s* to the stream and return the number of characters " "written." msgstr "" -#: library/io.rst:963 +#: library/io.rst:961 msgid "" "A buffered text stream providing higher-level access to a :class:" "`BufferedIOBase` buffered binary stream. It inherits from :class:" "`TextIOBase`." msgstr "" -#: library/io.rst:967 +#: library/io.rst:965 msgid "" "*encoding* gives the name of the encoding that the stream will be decoded or " "encoded with. In :ref:`UTF-8 Mode `, this defaults to UTF-8. " @@ -1354,7 +1355,7 @@ msgid "" "explicitly. See :ref:`io-text-encoding` for more information." msgstr "" -#: library/io.rst:973 +#: library/io.rst:971 msgid "" "*errors* is an optional string that specifies how encoding and decoding " "errors are to be handled. Pass ``'strict'`` to raise a :exc:`ValueError` " @@ -1369,13 +1370,13 @@ msgid "" "that has been registered with :func:`codecs.register_error` is also valid." msgstr "" -#: library/io.rst:989 +#: library/io.rst:987 msgid "" "*newline* controls how line endings are handled. It can be ``None``, " "``''``, ``'\\n'``, ``'\\r'``, and ``'\\r\\n'``. It works as follows:" msgstr "" -#: library/io.rst:992 +#: library/io.rst:990 msgid "" "When reading input from the stream, if *newline* is ``None``, :term:" "`universal newlines` mode is enabled. Lines in the input can end in " @@ -1387,7 +1388,7 @@ msgid "" "returned to the caller untranslated." msgstr "" -#: library/io.rst:1001 +#: library/io.rst:999 msgid "" "When writing output to the stream, if *newline* is ``None``, any ``'\\n'`` " "characters written are translated to the system default line separator, :" @@ -1396,13 +1397,13 @@ msgid "" "characters written are translated to the given string." msgstr "" -#: library/io.rst:1007 +#: library/io.rst:1005 msgid "" "If *line_buffering* is ``True``, :meth:`~IOBase.flush` is implied when a " "call to write contains a newline character or a carriage return." msgstr "" -#: library/io.rst:1010 +#: library/io.rst:1008 msgid "" "If *write_through* is ``True``, calls to :meth:`~BufferedIOBase.write` are " "guaranteed not to be buffered: any data written on the :class:" @@ -1410,11 +1411,11 @@ msgid "" "*buffer*." msgstr "" -#: library/io.rst:1014 +#: library/io.rst:1012 msgid "The *write_through* argument has been added." msgstr "" -#: library/io.rst:1017 +#: library/io.rst:1015 msgid "" "The default *encoding* is now ``locale.getpreferredencoding(False)`` instead " "of ``locale.getpreferredencoding()``. Don't change temporary the locale " @@ -1422,108 +1423,114 @@ msgid "" "instead of the user preferred encoding." msgstr "" -#: library/io.rst:1023 +#: library/io.rst:1021 msgid "" "The *encoding* argument now supports the ``\"locale\"`` dummy encoding name." msgstr "" -#: library/io.rst:1031 +#: library/io.rst:1026 +msgid "" +"When the underlying raw stream is non-blocking, a :exc:`BlockingIOError` may " +"be raised if a read operation cannot be completed immediately." +msgstr "" + +#: library/io.rst:1029 msgid "" ":class:`TextIOWrapper` provides these data attributes and methods in " "addition to those from :class:`TextIOBase` and :class:`IOBase`:" msgstr "" -#: library/io.rst:1036 +#: library/io.rst:1034 msgid "Whether line buffering is enabled." msgstr "" -#: library/io.rst:1040 +#: library/io.rst:1038 msgid "Whether writes are passed immediately to the underlying binary buffer." msgstr "" -#: library/io.rst:1048 +#: library/io.rst:1046 msgid "" "Reconfigure this text stream using new settings for *encoding*, *errors*, " "*newline*, *line_buffering* and *write_through*." msgstr "" -#: library/io.rst:1051 +#: library/io.rst:1049 msgid "" "Parameters not specified keep current settings, except ``errors='strict'`` " "is used when *encoding* is specified but *errors* is not specified." msgstr "" -#: library/io.rst:1055 +#: library/io.rst:1053 msgid "" "It is not possible to change the encoding or newline if some data has " "already been read from the stream. On the other hand, changing encoding " "after write is possible." msgstr "" -#: library/io.rst:1059 +#: library/io.rst:1057 msgid "" "This method does an implicit stream flush before setting the new parameters." msgstr "" -#: library/io.rst:1064 +#: library/io.rst:1062 msgid "The method supports ``encoding=\"locale\"`` option." msgstr "" -#: library/io.rst:1069 +#: library/io.rst:1067 msgid "" "Set the stream position. Return the new stream position as an :class:`int`." msgstr "" -#: library/io.rst:1072 +#: library/io.rst:1070 msgid "" "Four operations are supported, given by the following argument combinations:" msgstr "" -#: library/io.rst:1075 +#: library/io.rst:1073 msgid "``seek(0, SEEK_SET)``: Rewind to the start of the stream." msgstr "" -#: library/io.rst:1076 +#: library/io.rst:1074 msgid "" "``seek(cookie, SEEK_SET)``: Restore a previous position; *cookie* **must " "be** a number returned by :meth:`tell`." msgstr "" -#: library/io.rst:1078 +#: library/io.rst:1076 msgid "``seek(0, SEEK_END)``: Fast-forward to the end of the stream." msgstr "" -#: library/io.rst:1079 +#: library/io.rst:1077 msgid "``seek(0, SEEK_CUR)``: Leave the current stream position unchanged." msgstr "" -#: library/io.rst:1081 +#: library/io.rst:1079 msgid "Any other argument combinations are invalid, and may raise exceptions." msgstr "" -#: library/io.rst:1086 +#: library/io.rst:1084 msgid ":data:`os.SEEK_SET`, :data:`os.SEEK_CUR`, and :data:`os.SEEK_END`." msgstr "" -#: library/io.rst:1090 +#: library/io.rst:1088 msgid "" "Return the stream position as an opaque number. The return value of :meth:`!" "tell` can be given as input to :meth:`seek`, to restore a previous stream " "position." msgstr "" -#: library/io.rst:1097 +#: library/io.rst:1095 msgid "" "A text stream using an in-memory text buffer. It inherits from :class:" "`TextIOBase`." msgstr "" -#: library/io.rst:1100 +#: library/io.rst:1098 msgid "" "The text buffer is discarded when the :meth:`~IOBase.close` method is called." msgstr "" -#: library/io.rst:1103 +#: library/io.rst:1101 msgid "" "The initial value of the buffer can be set by providing *initial_value*. If " "newline translation is enabled, newlines will be encoded as if by :meth:" @@ -1535,31 +1542,31 @@ msgid "" "at the end of the buffer." msgstr "" -#: library/io.rst:1112 +#: library/io.rst:1110 msgid "" "The *newline* argument works like that of :class:`TextIOWrapper`, except " "that when writing output to the stream, if *newline* is ``None``, newlines " "are written as ``\\n`` on all platforms." msgstr "" -#: library/io.rst:1116 +#: library/io.rst:1114 msgid "" ":class:`StringIO` provides this method in addition to those from :class:" "`TextIOBase` and :class:`IOBase`:" msgstr "" -#: library/io.rst:1121 +#: library/io.rst:1119 msgid "" "Return a :class:`str` containing the entire contents of the buffer. Newlines " "are decoded as if by :meth:`~TextIOBase.read`, although the stream position " "is not changed." msgstr "" -#: library/io.rst:1125 +#: library/io.rst:1123 msgid "Example usage::" msgstr "" -#: library/io.rst:1127 +#: library/io.rst:1125 msgid "" "import io\n" "\n" @@ -1576,84 +1583,84 @@ msgid "" "output.close()" msgstr "" -#: library/io.rst:1147 +#: library/io.rst:1145 msgid "" "A helper codec that decodes newlines for :term:`universal newlines` mode. It " "inherits from :class:`codecs.IncrementalDecoder`." msgstr "" -#: library/io.rst:1152 +#: library/io.rst:1150 msgid "Static Typing" msgstr "" -#: library/io.rst:1154 +#: library/io.rst:1152 msgid "" "The following protocols can be used for annotating function and method " "arguments for simple stream reading or writing operations. They are " "decorated with :deco:`typing.runtime_checkable`." msgstr "" -#: library/io.rst:1160 +#: library/io.rst:1158 msgid "" "Generic protocol for reading from a file or other input stream. ``T`` will " "usually be :class:`str` or :class:`bytes`, but can be any type that is read " "from the stream." msgstr "" -#: library/io.rst:1169 +#: library/io.rst:1167 msgid "" "Read data from the input stream and return it. If *size* is specified, it " "should be an integer, and at most *size* items (bytes/characters) will be " "read." msgstr "" -#: library/io.rst:1192 +#: library/io.rst:1190 msgid "For example::" msgstr "" -#: library/io.rst:1175 +#: library/io.rst:1173 msgid "" "def read_it(reader: Reader[str]):\n" " data = reader.read(11)\n" " assert isinstance(data, str)" msgstr "" -#: library/io.rst:1181 +#: library/io.rst:1179 msgid "" "Generic protocol for writing to a file or other output stream. ``T`` will " "usually be :class:`str` or :class:`bytes`, but can be any type that can be " "written to the stream." msgstr "" -#: library/io.rst:1189 +#: library/io.rst:1187 msgid "" "Write *data* to the output stream and return the number of items (bytes/" "characters) written." msgstr "" -#: library/io.rst:1194 +#: library/io.rst:1192 msgid "" "def write_binary(writer: Writer[bytes]):\n" " writer.write(b\"Hello world!\\n\")" msgstr "" -#: library/io.rst:1197 +#: library/io.rst:1195 msgid "" "See :ref:`typing-io` for other I/O related protocols and classes that can be " "used for static type checking." msgstr "" -#: library/io.rst:1201 +#: library/io.rst:1199 msgid "Performance" msgstr "" -#: library/io.rst:1203 +#: library/io.rst:1201 msgid "" "This section discusses the performance of the provided concrete I/O " "implementations." msgstr "" -#: library/io.rst:1209 +#: library/io.rst:1207 msgid "" "By reading and writing only large chunks of data even when the user asks for " "a single byte, buffered I/O hides any inefficiency in calling and executing " @@ -1666,7 +1673,7 @@ msgid "" "data." msgstr "" -#: library/io.rst:1221 +#: library/io.rst:1219 msgid "" "Text I/O over a binary storage (such as a file) is significantly slower than " "binary I/O over the same storage, because it requires conversions between " @@ -1676,24 +1683,24 @@ msgid "" "the reconstruction algorithm used." msgstr "" -#: library/io.rst:1228 +#: library/io.rst:1226 msgid "" ":class:`StringIO`, however, is a native in-memory unicode container and will " "exhibit similar speed to :class:`BytesIO`." msgstr "" -#: library/io.rst:1232 +#: library/io.rst:1230 msgid "Multi-threading" msgstr "" -#: library/io.rst:1234 +#: library/io.rst:1232 msgid "" ":class:`FileIO` objects are thread-safe to the extent that the operating " "system calls (such as :manpage:`read(2)` under Unix) they wrap are thread-" "safe too." msgstr "" -#: library/io.rst:1237 +#: library/io.rst:1235 msgid "" "Binary buffered objects (instances of :class:`BufferedReader`, :class:" "`BufferedWriter`, :class:`BufferedRandom` and :class:`BufferedRWPair`) " @@ -1701,15 +1708,15 @@ msgid "" "them from multiple threads at once." msgstr "" -#: library/io.rst:1242 +#: library/io.rst:1240 msgid ":class:`TextIOWrapper` objects are not thread-safe." msgstr "" -#: library/io.rst:1245 +#: library/io.rst:1243 msgid "Reentrancy" msgstr "" -#: library/io.rst:1247 +#: library/io.rst:1245 msgid "" "Binary buffered objects (instances of :class:`BufferedReader`, :class:" "`BufferedWriter`, :class:`BufferedRandom` and :class:`BufferedRWPair`) are " @@ -1720,7 +1727,7 @@ msgid "" "from entering the buffered object." msgstr "" -#: library/io.rst:1255 +#: library/io.rst:1253 msgid "" "The above implicitly extends to text files, since the :func:`open` function " "will wrap a buffered object inside a :class:`TextIOWrapper`. This includes " @@ -1736,14 +1743,14 @@ msgstr "" msgid "io module" msgstr "" -#: library/io.rst:1142 +#: library/io.rst:1140 msgid "universal newlines" msgstr "" -#: library/io.rst:986 +#: library/io.rst:984 msgid "io.TextIOWrapper class" msgstr "" -#: library/io.rst:1142 +#: library/io.rst:1140 msgid "io.IncrementalNewlineDecoder class" msgstr "" diff --git a/library/ipaddress.po b/library/ipaddress.po index 3d2d777a..75566b92 100644 --- a/library/ipaddress.po +++ b/library/ipaddress.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/ipc.po b/library/ipc.po index 18b684df..6ef8626a 100644 --- a/library/ipc.po +++ b/library/ipc.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/itertools.po b/library/itertools.po index f3f5c58d..2ecfe350 100644 --- a/library/itertools.po +++ b/library/itertools.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/json.po b/library/json.po index cc108173..4330cd8c 100644 --- a/library/json.po +++ b/library/json.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -37,22 +37,29 @@ msgstr "" #: library/json.rst:22 msgid "" +"The term \"object\" in the context of JSON processing in Python can be " +"ambiguous. All values in Python are objects. In JSON, an object refers to " +"any data wrapped in curly braces, similar to a Python dictionary." +msgstr "" + +#: library/json.rst:27 +msgid "" "Be cautious when parsing JSON data from untrusted sources. A malicious JSON " "string may cause the decoder to consume considerable CPU and memory " "resources. Limiting the size of data to be parsed is recommended." msgstr "" -#: library/json.rst:26 +#: library/json.rst:31 msgid "" -":mod:`json` exposes an API familiar to users of the standard library :mod:" +"This module exposes an API familiar to users of the standard library :mod:" "`marshal` and :mod:`pickle` modules." msgstr "" -#: library/json.rst:29 +#: library/json.rst:34 msgid "Encoding basic Python object hierarchies::" msgstr "" -#: library/json.rst:31 +#: library/json.rst:36 msgid "" ">>> import json\n" ">>> json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])\n" @@ -72,22 +79,22 @@ msgid "" "'[\"streaming API\"]'" msgstr "" -#: library/json.rst:48 +#: library/json.rst:53 msgid "Compact encoding::" msgstr "" -#: library/json.rst:50 +#: library/json.rst:55 msgid "" ">>> import json\n" ">>> json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))\n" "'[1,2,3,{\"4\":5,\"6\":7}]'" msgstr "" -#: library/json.rst:54 +#: library/json.rst:59 msgid "Pretty printing::" msgstr "" -#: library/json.rst:56 +#: library/json.rst:61 msgid "" ">>> import json\n" ">>> print(json.dumps({'6': 7, '4': 5}, sort_keys=True, indent=4))\n" @@ -97,11 +104,11 @@ msgid "" "}" msgstr "" -#: library/json.rst:63 -msgid "Specializing JSON object encoding::" +#: library/json.rst:68 +msgid "Customizing JSON object encoding::" msgstr "" -#: library/json.rst:65 +#: library/json.rst:70 msgid "" ">>> import json\n" ">>> def custom_json(obj):\n" @@ -114,11 +121,11 @@ msgid "" "'{\"__complex__\": true, \"real\": 1.0, \"imag\": 2.0}'" msgstr "" -#: library/json.rst:74 +#: library/json.rst:79 msgid "Decoding JSON::" msgstr "" -#: library/json.rst:76 +#: library/json.rst:81 msgid "" ">>> import json\n" ">>> json.loads('[\"foo\", {\"bar\":[\"baz\", null, 1.0, 2]}]')\n" @@ -131,11 +138,11 @@ msgid "" "['streaming API']" msgstr "" -#: library/json.rst:86 -msgid "Specializing JSON object decoding::" +#: library/json.rst:91 +msgid "Customizing JSON object decoding::" msgstr "" -#: library/json.rst:88 +#: library/json.rst:93 msgid "" ">>> import json\n" ">>> def as_complex(dct):\n" @@ -151,11 +158,11 @@ msgid "" "Decimal('1.1')" msgstr "" -#: library/json.rst:101 +#: library/json.rst:106 msgid "Extending :class:`JSONEncoder`::" msgstr "" -#: library/json.rst:103 +#: library/json.rst:108 msgid "" ">>> import json\n" ">>> class ComplexEncoder(json.JSONEncoder):\n" @@ -173,11 +180,11 @@ msgid "" "['[2.0', ', 1.0', ']']" msgstr "" -#: library/json.rst:119 +#: library/json.rst:124 msgid "Using :mod:`json` from the shell to validate and pretty-print:" msgstr "" -#: library/json.rst:121 +#: library/json.rst:126 msgid "" "$ echo '{\"json\":\"obj\"}' | python -m json\n" "{\n" @@ -187,11 +194,11 @@ msgid "" "Expecting property name enclosed in double quotes: line 1 column 2 (char 1)" msgstr "" -#: library/json.rst:130 +#: library/json.rst:135 msgid "See :ref:`json-commandline` for detailed documentation." msgstr "" -#: library/json.rst:134 +#: library/json.rst:139 msgid "" "JSON is a subset of `YAML `_ 1.2. The JSON produced by " "this module's default settings (in particular, the default *separators* " @@ -199,24 +206,24 @@ msgid "" "used as a YAML serializer." msgstr "" -#: library/json.rst:141 +#: library/json.rst:146 msgid "" "This module's encoders and decoders preserve input and output order by " "default. Order is only lost if the underlying containers are unordered." msgstr "" -#: library/json.rst:146 +#: library/json.rst:151 msgid "Basic Usage" msgstr "" -#: library/json.rst:153 +#: library/json.rst:158 msgid "" "Serialize *obj* as a JSON formatted stream to *fp* (a ``.write()``-" "supporting :term:`file-like object`) using this :ref:`Python-to-JSON " "conversion table `." msgstr "" -#: library/json.rst:159 +#: library/json.rst:164 msgid "" "Unlike :mod:`pickle` and :mod:`marshal`, JSON is not a framed protocol, so " "trying to serialize multiple objects with repeated calls to :func:`dump` " @@ -227,39 +234,39 @@ msgstr "" msgid "Parameters" msgstr "" -#: library/json.rst:163 +#: library/json.rst:168 msgid "The Python object to be serialized." msgstr "" -#: library/json.rst:166 +#: library/json.rst:171 msgid "" "The file-like object *obj* will be serialized to. The :mod:`!json` module " "always produces :class:`str` objects, not :class:`bytes` objects, therefore " "``fp.write()`` must support :class:`str` input." msgstr "" -#: library/json.rst:173 +#: library/json.rst:178 msgid "" "If ``True``, keys that are not of a basic type (:class:`str`, :class:`int`, :" "class:`float`, :class:`bool`, ``None``) will be skipped instead of raising " "a :exc:`TypeError`. Default ``False``." msgstr "" -#: library/json.rst:179 +#: library/json.rst:184 msgid "" "If ``True`` (the default), the output is guaranteed to have all incoming non-" "ASCII characters escaped. If ``False``, these characters will be outputted " "as-is." msgstr "" -#: library/json.rst:184 +#: library/json.rst:189 msgid "" "If ``False``, the circular reference check for container types is skipped " "and a circular reference will result in a :exc:`RecursionError` (or worse). " "Default ``True``." msgstr "" -#: library/json.rst:189 +#: library/json.rst:194 msgid "" "If ``False``, serialization of out-of-range :class:`float` values (``nan``, " "``inf``, ``-inf``) will result in a :exc:`ValueError`, in strict compliance " @@ -267,14 +274,14 @@ msgid "" "equivalents (``NaN``, ``Infinity``, ``-Infinity``) are used." msgstr "" -#: library/json.rst:196 +#: library/json.rst:201 msgid "" "If set, a custom JSON encoder with the :meth:`~JSONEncoder.default` method " "overridden, for serializing into custom datatypes. If ``None`` (the " "default), :class:`!JSONEncoder` is used." msgstr "" -#: library/json.rst:203 +#: library/json.rst:208 msgid "" "If a positive integer or string, JSON array elements and object members will " "be pretty-printed with that indent level. A positive integer indents that " @@ -283,7 +290,7 @@ msgid "" "inserted. If ``None`` (the default), the most compact representation is used." msgstr "" -#: library/json.rst:213 +#: library/json.rst:218 msgid "" "A two-tuple: ``(item_separator, key_separator)``. If ``None`` (the default), " "*separators* defaults to ``(', ', ': ')`` if *indent* is ``None``, and " @@ -291,39 +298,39 @@ msgid "" "to eliminate whitespace." msgstr "" -#: library/json.rst:222 +#: library/json.rst:227 msgid "" "A function that is called for objects that can't otherwise be serialized. It " "should return a JSON encodable version of the object or raise a :exc:" "`TypeError`. If ``None`` (the default), :exc:`!TypeError` is raised." msgstr "" -#: library/json.rst:229 +#: library/json.rst:234 msgid "" "If ``True``, dictionaries will be outputted sorted by key. Default ``False``." msgstr "" -#: library/json.rst:518 +#: library/json.rst:523 msgid "Allow strings for *indent* in addition to integers." msgstr "" -#: library/json.rst:526 +#: library/json.rst:531 msgid "Use ``(',', ': ')`` as default if *indent* is not ``None``." msgstr "" -#: library/json.rst:338 +#: library/json.rst:343 msgid "" "All optional parameters are now :ref:`keyword-only `." msgstr "" -#: library/json.rst:248 +#: library/json.rst:253 msgid "" "Serialize *obj* to a JSON formatted :class:`str` using this :ref:`conversion " "table `. The arguments have the same meaning as in :func:" "`dump`." msgstr "" -#: library/json.rst:254 +#: library/json.rst:259 msgid "" "Keys in key/value pairs of JSON are always of the type :class:`str`. When a " "dictionary is converted into JSON, all the keys of the dictionary are " @@ -332,44 +339,44 @@ msgid "" "original one. That is, ``loads(dumps(x)) != x`` if x has non-string keys." msgstr "" -#: library/json.rst:265 +#: library/json.rst:270 msgid "" "Deserialize *fp* to a Python object using the :ref:`JSON-to-Python " "conversion table `." msgstr "" -#: library/json.rst:268 +#: library/json.rst:273 msgid "" "A ``.read()``-supporting :term:`text file` or :term:`binary file` containing " "the JSON document to be deserialized." msgstr "" -#: library/json.rst:273 +#: library/json.rst:278 msgid "" "If set, a custom JSON decoder. Additional keyword arguments to :func:`!load` " "will be passed to the constructor of *cls*. If ``None`` (the default), :" "class:`!JSONDecoder` is used." msgstr "" -#: library/json.rst:280 +#: library/json.rst:285 msgid "" -"If set, a function that is called with the result of any object literal " +"If set, a function that is called with the result of any JSON object literal " "decoded (a :class:`dict`). The return value of this function will be used " "instead of the :class:`dict`. This feature can be used to implement custom " "decoders, for example `JSON-RPC `_ class hinting. " "Default ``None``." msgstr "" -#: library/json.rst:290 +#: library/json.rst:295 msgid "" -"If set, a function that is called with the result of any object literal " +"If set, a function that is called with the result of any JSON object literal " "decoded with an ordered list of pairs. The return value of this function " "will be used instead of the :class:`dict`. This feature can be used to " "implement custom decoders. If *object_hook* is also set, *object_pairs_hook* " "takes priority. Default ``None``." msgstr "" -#: library/json.rst:300 +#: library/json.rst:305 msgid "" "If set, a function that is called with the string of every JSON float to be " "decoded. If ``None`` (the default), it is equivalent to ``float(num_str)``. " @@ -377,7 +384,7 @@ msgid "" "class:`decimal.Decimal`." msgstr "" -#: library/json.rst:308 +#: library/json.rst:313 msgid "" "If set, a function that is called with the string of every JSON int to be " "decoded. If ``None`` (the default), it is equivalent to ``int(num_str)``. " @@ -385,7 +392,7 @@ msgid "" "class:`float`." msgstr "" -#: library/json.rst:316 +#: library/json.rst:321 msgid "" "If set, a function that is called with one of the following strings: ``'-" "Infinity'``, ``'Infinity'``, or ``'NaN'``. This can be used to raise an " @@ -396,38 +403,38 @@ msgstr "" msgid "Raises" msgstr "" -#: library/json.rst:324 +#: library/json.rst:329 msgid "When the data being deserialized is not a valid JSON document." msgstr "" -#: library/json.rst:327 +#: library/json.rst:332 msgid "" "When the data being deserialized does not contain UTF-8, UTF-16 or UTF-32 " "encoded data." msgstr "" -#: library/json.rst:333 +#: library/json.rst:338 msgid "Added the optional *object_pairs_hook* parameter." msgstr "" -#: library/json.rst:334 +#: library/json.rst:339 msgid "*parse_constant* doesn't get called on 'null', 'true', 'false' anymore." msgstr "" -#: library/json.rst:339 +#: library/json.rst:344 msgid "" "*fp* can now be a :term:`binary file`. The input encoding should be UTF-8, " "UTF-16 or UTF-32." msgstr "" -#: library/json.rst:342 +#: library/json.rst:347 msgid "" "The default *parse_int* of :func:`int` now limits the maximum length of the " "integer string via the interpreter's :ref:`integer string conversion length " "limitation ` to help avoid denial of service attacks." msgstr "" -#: library/json.rst:350 +#: library/json.rst:355 msgid "" "Identical to :func:`load`, but instead of a file-like object, deserialize " "*s* (a :class:`str`, :class:`bytes` or :class:`bytearray` instance " @@ -435,107 +442,107 @@ msgid "" "table `." msgstr "" -#: library/json.rst:355 +#: library/json.rst:360 msgid "" "*s* can now be of type :class:`bytes` or :class:`bytearray`. The input " "encoding should be UTF-8, UTF-16 or UTF-32." msgstr "" -#: library/json.rst:359 +#: library/json.rst:364 msgid "The keyword argument *encoding* has been removed." msgstr "" -#: library/json.rst:364 +#: library/json.rst:369 msgid "Encoders and Decoders" msgstr "" -#: library/json.rst:368 +#: library/json.rst:373 msgid "Simple JSON decoder." msgstr "" -#: library/json.rst:370 +#: library/json.rst:375 msgid "Performs the following translations in decoding by default:" msgstr "" -#: library/json.rst:463 +#: library/json.rst:468 msgid "JSON" msgstr "" -#: library/json.rst:463 +#: library/json.rst:468 msgid "Python" msgstr "" -#: library/json.rst:465 +#: library/json.rst:470 msgid "object" msgstr "" -#: library/json.rst:465 +#: library/json.rst:470 msgid "dict" msgstr "" -#: library/json.rst:467 +#: library/json.rst:472 msgid "array" msgstr "" -#: library/json.rst:379 +#: library/json.rst:384 msgid "list" msgstr "" -#: library/json.rst:469 +#: library/json.rst:474 msgid "string" msgstr "" -#: library/json.rst:469 +#: library/json.rst:474 msgid "str" msgstr "" -#: library/json.rst:383 +#: library/json.rst:388 msgid "number (int)" msgstr "" -#: library/json.rst:383 +#: library/json.rst:388 msgid "int" msgstr "" -#: library/json.rst:385 +#: library/json.rst:390 msgid "number (real)" msgstr "" -#: library/json.rst:385 +#: library/json.rst:390 msgid "float" msgstr "" -#: library/json.rst:473 +#: library/json.rst:478 msgid "true" msgstr "" -#: library/json.rst:473 +#: library/json.rst:478 msgid "True" msgstr "" -#: library/json.rst:475 +#: library/json.rst:480 msgid "false" msgstr "" -#: library/json.rst:475 +#: library/json.rst:480 msgid "False" msgstr "" -#: library/json.rst:477 +#: library/json.rst:482 msgid "null" msgstr "" -#: library/json.rst:477 +#: library/json.rst:482 msgid "None" msgstr "" -#: library/json.rst:394 +#: library/json.rst:399 msgid "" "It also understands ``NaN``, ``Infinity``, and ``-Infinity`` as their " "corresponding ``float`` values, which is outside the JSON spec." msgstr "" -#: library/json.rst:397 +#: library/json.rst:402 msgid "" "*object_hook* is an optional function that will be called with the result of " "every JSON object decoded and its return value will be used in place of the " @@ -543,7 +550,7 @@ msgid "" "g. to support `JSON-RPC `_ class hinting)." msgstr "" -#: library/json.rst:402 +#: library/json.rst:407 msgid "" "*object_pairs_hook* is an optional function that will be called with the " "result of every JSON object decoded with an ordered list of pairs. The " @@ -552,11 +559,11 @@ msgid "" "*object_hook* is also defined, the *object_pairs_hook* takes priority." msgstr "" -#: library/json.rst:408 +#: library/json.rst:413 msgid "Added support for *object_pairs_hook*." msgstr "" -#: library/json.rst:411 +#: library/json.rst:416 msgid "" "*parse_float* is an optional function that will be called with the string of " "every JSON float to be decoded. By default, this is equivalent to " @@ -564,7 +571,7 @@ msgid "" "JSON floats (e.g. :class:`decimal.Decimal`)." msgstr "" -#: library/json.rst:416 +#: library/json.rst:421 msgid "" "*parse_int* is an optional function that will be called with the string of " "every JSON int to be decoded. By default, this is equivalent to " @@ -572,14 +579,14 @@ msgid "" "JSON integers (e.g. :class:`float`)." msgstr "" -#: library/json.rst:421 +#: library/json.rst:426 msgid "" "*parse_constant* is an optional function that will be called with one of the " "following strings: ``'-Infinity'``, ``'Infinity'``, ``'NaN'``. This can be " "used to raise an exception if invalid JSON numbers are encountered." msgstr "" -#: library/json.rst:425 +#: library/json.rst:430 msgid "" "If *strict* is false (``True`` is the default), then control characters will " "be allowed inside strings. Control characters in this context are those " @@ -587,66 +594,66 @@ msgid "" "``'\\n'``, ``'\\r'`` and ``'\\0'``." msgstr "" -#: library/json.rst:430 +#: library/json.rst:435 msgid "" "If the data being deserialized is not a valid JSON document, a :exc:" "`JSONDecodeError` will be raised." msgstr "" -#: library/json.rst:534 +#: library/json.rst:539 msgid "All parameters are now :ref:`keyword-only `." msgstr "" -#: library/json.rst:438 +#: library/json.rst:443 msgid "" "Return the Python representation of *s* (a :class:`str` instance containing " "a JSON document)." msgstr "" -#: library/json.rst:441 +#: library/json.rst:446 msgid "" ":exc:`JSONDecodeError` will be raised if the given JSON document is not " "valid." msgstr "" -#: library/json.rst:446 +#: library/json.rst:451 msgid "" "Decode a JSON document from *s* (a :class:`str` beginning with a JSON " "document) and return a 2-tuple of the Python representation and the index in " "*s* where the document ended." msgstr "" -#: library/json.rst:450 +#: library/json.rst:455 msgid "" "This can be used to decode a JSON document from a string that may have " "extraneous data at the end." msgstr "" -#: library/json.rst:456 +#: library/json.rst:461 msgid "Extensible JSON encoder for Python data structures." msgstr "" -#: library/json.rst:458 +#: library/json.rst:463 msgid "Supports the following objects and types by default:" msgstr "" -#: library/json.rst:467 +#: library/json.rst:472 msgid "list, tuple" msgstr "" -#: library/json.rst:471 +#: library/json.rst:476 msgid "int, float, int- & float-derived Enums" msgstr "" -#: library/json.rst:471 +#: library/json.rst:476 msgid "number" msgstr "" -#: library/json.rst:480 +#: library/json.rst:485 msgid "Added support for int- and float-derived Enum classes." msgstr "" -#: library/json.rst:483 +#: library/json.rst:488 msgid "" "To extend this to recognize other objects, subclass and implement a :meth:" "`~JSONEncoder.default` method with another method that returns a " @@ -654,7 +661,7 @@ msgid "" "superclass implementation (to raise :exc:`TypeError`)." msgstr "" -#: library/json.rst:488 +#: library/json.rst:493 msgid "" "If *skipkeys* is false (the default), a :exc:`TypeError` will be raised when " "trying to encode keys that are not :class:`str`, :class:`int`, :class:" @@ -662,14 +669,14 @@ msgid "" "simply skipped." msgstr "" -#: library/json.rst:492 +#: library/json.rst:497 msgid "" "If *ensure_ascii* is true (the default), the output is guaranteed to have " "all incoming non-ASCII characters escaped. If *ensure_ascii* is false, " "these characters will be output as-is." msgstr "" -#: library/json.rst:496 +#: library/json.rst:501 msgid "" "If *check_circular* is true (the default), then lists, dicts, and custom " "encoded objects will be checked for circular references during encoding to " @@ -677,7 +684,7 @@ msgid "" "Otherwise, no such check takes place." msgstr "" -#: library/json.rst:501 +#: library/json.rst:506 msgid "" "If *allow_nan* is true (the default), then ``NaN``, ``Infinity``, and ``-" "Infinity`` will be encoded as such. This behavior is not JSON specification " @@ -685,14 +692,14 @@ msgid "" "decoders. Otherwise, it will be a :exc:`ValueError` to encode such floats." msgstr "" -#: library/json.rst:507 +#: library/json.rst:512 msgid "" "If *sort_keys* is true (default: ``False``), then the output of dictionaries " "will be sorted by key; this is useful for regression tests to ensure that " "JSON serializations can be compared on a day-to-day basis." msgstr "" -#: library/json.rst:511 +#: library/json.rst:516 msgid "" "If *indent* is a non-negative integer or string, then JSON array elements " "and object members will be pretty-printed with that indent level. An indent " @@ -702,7 +709,7 @@ msgid "" "``\"\\t\"``), that string is used to indent each level." msgstr "" -#: library/json.rst:521 +#: library/json.rst:526 msgid "" "If specified, *separators* should be an ``(item_separator, key_separator)`` " "tuple. The default is ``(', ', ': ')`` if *indent* is ``None`` and ``(',', " @@ -710,7 +717,7 @@ msgid "" "specify ``(',', ':')`` to eliminate whitespace." msgstr "" -#: library/json.rst:529 +#: library/json.rst:534 msgid "" "If specified, *default* should be a function that gets called for objects " "that can't otherwise be serialized. It should return a JSON encodable " @@ -718,20 +725,20 @@ msgid "" "`TypeError` is raised." msgstr "" -#: library/json.rst:540 +#: library/json.rst:545 msgid "" "Implement this method in a subclass such that it returns a serializable " "object for *o*, or calls the base implementation (to raise a :exc:" "`TypeError`)." msgstr "" -#: library/json.rst:544 +#: library/json.rst:549 msgid "" "For example, to support arbitrary iterators, you could implement :meth:" "`~JSONEncoder.default` like this::" msgstr "" -#: library/json.rst:547 +#: library/json.rst:552 msgid "" "def default(self, o):\n" " try:\n" @@ -744,63 +751,63 @@ msgid "" " return super().default(o)" msgstr "" -#: library/json.rst:560 +#: library/json.rst:565 msgid "" "Return a JSON string representation of a Python data structure, *o*. For " "example::" msgstr "" -#: library/json.rst:563 +#: library/json.rst:568 msgid "" ">>> json.JSONEncoder().encode({\"foo\": [\"bar\", \"baz\"]})\n" "'{\"foo\": [\"bar\", \"baz\"]}'" msgstr "" -#: library/json.rst:569 +#: library/json.rst:574 msgid "" "Encode the given object, *o*, and yield each string representation as " "available. For example::" msgstr "" -#: library/json.rst:572 +#: library/json.rst:577 msgid "" "for chunk in json.JSONEncoder().iterencode(bigobject):\n" " mysocket.write(chunk)" msgstr "" -#: library/json.rst:577 +#: library/json.rst:582 msgid "Exceptions" msgstr "" -#: library/json.rst:581 +#: library/json.rst:586 msgid "Subclass of :exc:`ValueError` with the following additional attributes:" msgstr "" -#: library/json.rst:585 +#: library/json.rst:590 msgid "The unformatted error message." msgstr "" -#: library/json.rst:589 +#: library/json.rst:594 msgid "The JSON document being parsed." msgstr "" -#: library/json.rst:593 +#: library/json.rst:598 msgid "The start index of *doc* where parsing failed." msgstr "" -#: library/json.rst:597 +#: library/json.rst:602 msgid "The line corresponding to *pos*." msgstr "" -#: library/json.rst:601 +#: library/json.rst:606 msgid "The column corresponding to *pos*." msgstr "" -#: library/json.rst:607 +#: library/json.rst:612 msgid "Standard Compliance and Interoperability" msgstr "" -#: library/json.rst:609 +#: library/json.rst:614 msgid "" "The JSON format is specified by :rfc:`7159` and by `ECMA-404 `_. This " @@ -809,48 +816,48 @@ msgid "" "parameters other than those explicitly mentioned, are not considered." msgstr "" -#: library/json.rst:615 +#: library/json.rst:620 msgid "" "This module does not comply with the RFC in a strict fashion, implementing " "some extensions that are valid JavaScript but not valid JSON. In particular:" msgstr "" -#: library/json.rst:618 +#: library/json.rst:623 msgid "Infinite and NaN number values are accepted and output;" msgstr "" -#: library/json.rst:619 +#: library/json.rst:624 msgid "" "Repeated names within an object are accepted, and only the value of the last " "name-value pair is used." msgstr "" -#: library/json.rst:622 +#: library/json.rst:627 msgid "" "Since the RFC permits RFC-compliant parsers to accept input texts that are " "not RFC-compliant, this module's deserializer is technically RFC-compliant " "under default settings." msgstr "" -#: library/json.rst:627 +#: library/json.rst:632 msgid "Character Encodings" msgstr "" -#: library/json.rst:629 +#: library/json.rst:634 msgid "" "The RFC requires that JSON be represented using either UTF-8, UTF-16, or " "UTF-32, with UTF-8 being the recommended default for maximum " "interoperability." msgstr "" -#: library/json.rst:632 +#: library/json.rst:637 msgid "" "As permitted, though not required, by the RFC, this module's serializer sets " "*ensure_ascii=True* by default, thus escaping the output so that the " "resulting strings only contain ASCII characters." msgstr "" -#: library/json.rst:636 +#: library/json.rst:641 msgid "" "Other than the *ensure_ascii* parameter, this module is defined strictly in " "terms of conversion between Python objects and :class:`Unicode strings " @@ -858,7 +865,7 @@ msgid "" "encodings." msgstr "" -#: library/json.rst:641 +#: library/json.rst:646 msgid "" "The RFC prohibits adding a byte order mark (BOM) to the start of a JSON " "text, and this module's serializer does not add a BOM to its output. The RFC " @@ -867,7 +874,7 @@ msgid "" "an initial BOM is present." msgstr "" -#: library/json.rst:647 +#: library/json.rst:652 msgid "" "The RFC does not explicitly forbid JSON strings which contain byte sequences " "that don't correspond to valid Unicode characters (e.g. unpaired UTF-16 " @@ -876,18 +883,18 @@ msgid "" "class:`str`) code points for such sequences." msgstr "" -#: library/json.rst:655 +#: library/json.rst:660 msgid "Infinite and NaN Number Values" msgstr "" -#: library/json.rst:657 +#: library/json.rst:662 msgid "" "The RFC does not permit the representation of infinite or NaN number values. " "Despite that, by default, this module accepts and outputs ``Infinity``, ``-" "Infinity``, and ``NaN`` as if they were valid JSON number literal values::" msgstr "" -#: library/json.rst:661 +#: library/json.rst:666 msgid "" ">>> # Neither of these calls raises an exception, but the results are not " "valid JSON\n" @@ -902,18 +909,18 @@ msgid "" "nan" msgstr "" -#: library/json.rst:672 +#: library/json.rst:677 msgid "" "In the serializer, the *allow_nan* parameter can be used to alter this " "behavior. In the deserializer, the *parse_constant* parameter can be used " "to alter this behavior." msgstr "" -#: library/json.rst:678 +#: library/json.rst:683 msgid "Repeated Names Within an Object" msgstr "" -#: library/json.rst:680 +#: library/json.rst:685 msgid "" "The RFC specifies that the names within a JSON object should be unique, but " "does not mandate how repeated names in JSON objects should be handled. By " @@ -921,22 +928,22 @@ msgid "" "but the last name-value pair for a given name::" msgstr "" -#: library/json.rst:685 +#: library/json.rst:690 msgid "" ">>> weird_json = '{\"x\": 1, \"x\": 2, \"x\": 3}'\n" ">>> json.loads(weird_json)\n" "{'x': 3}" msgstr "" -#: library/json.rst:689 +#: library/json.rst:694 msgid "The *object_pairs_hook* parameter can be used to alter this behavior." msgstr "" -#: library/json.rst:693 +#: library/json.rst:698 msgid "Top-level Non-Object, Non-Array Values" msgstr "" -#: library/json.rst:695 +#: library/json.rst:700 msgid "" "The old version of JSON specified by the obsolete :rfc:`4627` required that " "the top-level value of a JSON text must be either a JSON object or array " @@ -946,43 +953,43 @@ msgid "" "its serializer or its deserializer." msgstr "" -#: library/json.rst:702 +#: library/json.rst:707 msgid "" "Regardless, for maximum interoperability, you may wish to voluntarily adhere " "to the restriction yourself." msgstr "" -#: library/json.rst:707 +#: library/json.rst:712 msgid "Implementation Limitations" msgstr "" -#: library/json.rst:709 +#: library/json.rst:714 msgid "Some JSON deserializer implementations may set limits on:" msgstr "" -#: library/json.rst:711 +#: library/json.rst:716 msgid "the size of accepted JSON texts" msgstr "" -#: library/json.rst:712 +#: library/json.rst:717 msgid "the maximum level of nesting of JSON objects and arrays" msgstr "" -#: library/json.rst:713 +#: library/json.rst:718 msgid "the range and precision of JSON numbers" msgstr "" -#: library/json.rst:714 +#: library/json.rst:719 msgid "the content and maximum length of JSON strings" msgstr "" -#: library/json.rst:716 +#: library/json.rst:721 msgid "" "This module does not impose any such limits beyond those of the relevant " "Python datatypes themselves or the Python interpreter itself." msgstr "" -#: library/json.rst:719 +#: library/json.rst:724 msgid "" "When serializing to JSON, beware any such limitations in applications that " "may consume your JSON. In particular, it is common for JSON numbers to be " @@ -993,28 +1000,28 @@ msgid "" "as :class:`decimal.Decimal`." msgstr "" -#: library/json.rst:732 +#: library/json.rst:737 msgid "Command-line interface" msgstr "" -#: library/json.rst:737 +#: library/json.rst:742 msgid "**Source code:** :source:`Lib/json/tool.py`" msgstr "" -#: library/json.rst:741 +#: library/json.rst:746 msgid "" "The :mod:`json` module can be invoked as a script via ``python -m json`` to " "validate and pretty-print JSON objects. The :mod:`json.tool` submodule " "implements this interface." msgstr "" -#: library/json.rst:745 +#: library/json.rst:750 msgid "" "If the optional ``infile`` and ``outfile`` arguments are not specified, :" "data:`sys.stdin` and :data:`sys.stdout` will be used respectively:" msgstr "" -#: library/json.rst:748 +#: library/json.rst:753 msgid "" "$ echo '{\"json\": \"obj\"}' | python -m json\n" "{\n" @@ -1024,28 +1031,28 @@ msgid "" "Expecting property name enclosed in double quotes: line 1 column 2 (char 1)" msgstr "" -#: library/json.rst:757 +#: library/json.rst:762 msgid "" "The output is now in the same order as the input. Use the :option:`--sort-" "keys` option to sort the output of dictionaries alphabetically by key." msgstr "" -#: library/json.rst:762 +#: library/json.rst:767 msgid "" "The :mod:`json` module may now be directly executed as ``python -m json``. " "For backwards compatibility, invoking the CLI as ``python -m json.tool`` " "remains supported." msgstr "" -#: library/json.rst:769 +#: library/json.rst:774 msgid "Command-line options" msgstr "" -#: library/json.rst:773 +#: library/json.rst:778 msgid "The JSON file to be validated or pretty-printed:" msgstr "" -#: library/json.rst:775 +#: library/json.rst:780 msgid "" "$ python -m json mp_films.json\n" "[\n" @@ -1060,43 +1067,43 @@ msgid "" "]" msgstr "" -#: library/json.rst:789 +#: library/json.rst:794 msgid "If *infile* is not specified, read from :data:`sys.stdin`." msgstr "" -#: library/json.rst:793 +#: library/json.rst:798 msgid "" "Write the output of the *infile* to the given *outfile*. Otherwise, write it " "to :data:`sys.stdout`." msgstr "" -#: library/json.rst:798 +#: library/json.rst:803 msgid "Sort the output of dictionaries alphabetically by key." msgstr "" -#: library/json.rst:804 +#: library/json.rst:809 msgid "" "Disable escaping of non-ascii characters, see :func:`json.dumps` for more " "information." msgstr "" -#: library/json.rst:810 +#: library/json.rst:815 msgid "Parse every input line as separate JSON object." msgstr "" -#: library/json.rst:816 +#: library/json.rst:821 msgid "Mutually exclusive options for whitespace control." msgstr "" -#: library/json.rst:822 +#: library/json.rst:827 msgid "Show the help message." msgstr "" -#: library/json.rst:826 +#: library/json.rst:831 msgid "Footnotes" msgstr "" -#: library/json.rst:827 +#: library/json.rst:832 msgid "" "As noted in `the errata for RFC 7159 `_, JSON permits literal U+2028 (LINE SEPARATOR) " diff --git a/library/keyword.po b/library/keyword.po index 74756f05..65ebc628 100644 --- a/library/keyword.po +++ b/library/keyword.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/language.po b/library/language.po index 0a249664..d03310bf 100644 --- a/library/language.po +++ b/library/language.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/linecache.po b/library/linecache.po index d333c185..07604f0b 100644 --- a/library/linecache.po +++ b/library/linecache.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/locale.po b/library/locale.po index dfef1aa0..2b8430ba 100644 --- a/library/locale.po +++ b/library/locale.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/logging.config.po b/library/logging.config.po index b96b48ad..629b7cb6 100644 --- a/library/logging.config.po +++ b/library/logging.config.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -765,10 +765,10 @@ msgstr "" #: library/logging.config.rst:551 msgid "" -"You can also specify a special key ``'.'`` whose value is a dictionary is a " -"mapping of attribute names to values. If found, the specified attributes " -"will be set on the user-defined object before it is returned. Thus, with the " -"following configuration::" +"You can also specify a special key ``'.'`` whose value is a mapping of " +"attribute names to values. If found, the specified attributes will be set on " +"the user-defined object before it is returned. Thus, with the following " +"configuration::" msgstr "" #: library/logging.config.rst:556 @@ -813,7 +813,7 @@ msgid "" "handler has been configured) it points to the configured handler instance. " "Thus, ``cfg://handlers.foo`` could resolve to either a dictionary or a " "handler instance. In general, it is wise to name handlers in a way such that " -"dependent handlers are configured _after_ any handlers they depend on; that " +"dependent handlers are configured *after* any handlers they depend on; that " "allows something like ``cfg://handlers.foo`` to be used in configuring a " "handler that depends on handler ``foo``. If that dependent handler were " "named ``bar``, problems would result, because the configuration of ``bar`` " diff --git a/library/logging.handlers.po b/library/logging.handlers.po index 270da3ca..f963db53 100644 --- a/library/logging.handlers.po +++ b/library/logging.handlers.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -145,14 +145,14 @@ msgid "" msgstr "" #: library/logging.handlers.rst:105 library/logging.handlers.rst:190 -#: library/logging.handlers.rst:338 library/logging.handlers.rst:444 +#: library/logging.handlers.rst:338 library/logging.handlers.rst:448 msgid "" "As well as string values, :class:`~pathlib.Path` objects are also accepted " "for the *filename* argument." msgstr "" #: library/logging.handlers.rst:109 library/logging.handlers.rst:194 -#: library/logging.handlers.rst:342 library/logging.handlers.rst:448 +#: library/logging.handlers.rst:342 library/logging.handlers.rst:452 msgid "The *errors* parameter was added." msgstr "" @@ -413,7 +413,7 @@ msgid "" "they are renamed to :file:`app.log.2`, :file:`app.log.3` etc. respectively." msgstr "" -#: library/logging.handlers.rst:347 library/logging.handlers.rst:453 +#: library/logging.handlers.rst:347 library/logging.handlers.rst:457 msgid "Does a rollover, as described above." msgstr "" @@ -423,18 +423,24 @@ msgid "" "previously." msgstr "" -#: library/logging.handlers.rst:358 +#: library/logging.handlers.rst:357 +msgid "" +"See if the supplied record would cause the file to exceed the configured " +"size limit." +msgstr "" + +#: library/logging.handlers.rst:362 msgid "TimedRotatingFileHandler" msgstr "" -#: library/logging.handlers.rst:360 +#: library/logging.handlers.rst:364 msgid "" "The :class:`TimedRotatingFileHandler` class, located in the :mod:`logging." "handlers` module, supports rotation of disk log files at certain timed " "intervals." msgstr "" -#: library/logging.handlers.rst:367 +#: library/logging.handlers.rst:371 msgid "" "Returns a new instance of the :class:`TimedRotatingFileHandler` class. The " "specified file is opened and used as the stream for logging. On rotating it " @@ -442,89 +448,89 @@ msgid "" "*when* and *interval*." msgstr "" -#: library/logging.handlers.rst:372 +#: library/logging.handlers.rst:376 msgid "" "You can use the *when* to specify the type of *interval*. The list of " "possible values is below. Note that they are not case sensitive." msgstr "" -#: library/logging.handlers.rst:376 +#: library/logging.handlers.rst:380 msgid "Value" msgstr "" -#: library/logging.handlers.rst:376 +#: library/logging.handlers.rst:380 msgid "Type of interval" msgstr "" -#: library/logging.handlers.rst:376 +#: library/logging.handlers.rst:380 msgid "If/how *atTime* is used" msgstr "" -#: library/logging.handlers.rst:378 +#: library/logging.handlers.rst:382 msgid "``'S'``" msgstr "" -#: library/logging.handlers.rst:378 +#: library/logging.handlers.rst:382 msgid "Seconds" msgstr "" -#: library/logging.handlers.rst:378 library/logging.handlers.rst:380 #: library/logging.handlers.rst:382 library/logging.handlers.rst:384 +#: library/logging.handlers.rst:386 library/logging.handlers.rst:388 msgid "Ignored" msgstr "" -#: library/logging.handlers.rst:380 +#: library/logging.handlers.rst:384 msgid "``'M'``" msgstr "" -#: library/logging.handlers.rst:380 +#: library/logging.handlers.rst:384 msgid "Minutes" msgstr "" -#: library/logging.handlers.rst:382 +#: library/logging.handlers.rst:386 msgid "``'H'``" msgstr "" -#: library/logging.handlers.rst:382 +#: library/logging.handlers.rst:386 msgid "Hours" msgstr "" -#: library/logging.handlers.rst:384 +#: library/logging.handlers.rst:388 msgid "``'D'``" msgstr "" -#: library/logging.handlers.rst:384 +#: library/logging.handlers.rst:388 msgid "Days" msgstr "" -#: library/logging.handlers.rst:386 +#: library/logging.handlers.rst:390 msgid "``'W0'-'W6'``" msgstr "" -#: library/logging.handlers.rst:386 +#: library/logging.handlers.rst:390 msgid "Weekday (0=Monday)" msgstr "" -#: library/logging.handlers.rst:386 library/logging.handlers.rst:389 +#: library/logging.handlers.rst:390 library/logging.handlers.rst:393 msgid "Used to compute initial rollover time" msgstr "" -#: library/logging.handlers.rst:389 +#: library/logging.handlers.rst:393 msgid "``'midnight'``" msgstr "" -#: library/logging.handlers.rst:389 +#: library/logging.handlers.rst:393 msgid "Roll over at midnight, if *atTime* not specified, else at time *atTime*" msgstr "" -#: library/logging.handlers.rst:394 +#: library/logging.handlers.rst:398 msgid "" "When using weekday-based rotation, specify 'W0' for Monday, 'W1' for " "Tuesday, and so on up to 'W6' for Sunday. In this case, the value passed for " "*interval* isn't used." msgstr "" -#: library/logging.handlers.rst:398 +#: library/logging.handlers.rst:402 msgid "" "The system will save old log files by appending extensions to the filename. " "The extensions are date-and-time based, using the strftime format ``%Y-%m-" @@ -532,20 +538,20 @@ msgid "" "interval." msgstr "" -#: library/logging.handlers.rst:403 +#: library/logging.handlers.rst:407 msgid "" "When computing the next rollover time for the first time (when the handler " "is created), the last modification time of an existing log file, or else the " "current time, is used to compute when the next rotation will occur." msgstr "" -#: library/logging.handlers.rst:407 +#: library/logging.handlers.rst:411 msgid "" "If the *utc* argument is true, times in UTC will be used; otherwise local " "time is used." msgstr "" -#: library/logging.handlers.rst:410 +#: library/logging.handlers.rst:414 msgid "" "If *backupCount* is nonzero, at most *backupCount* files will be kept, and " "if more would be created when rollover occurs, the oldest one is deleted. " @@ -553,13 +559,13 @@ msgid "" "changing the interval may leave old files lying around." msgstr "" -#: library/logging.handlers.rst:415 +#: library/logging.handlers.rst:419 msgid "" "If *delay* is true, then file opening is deferred until the first call to :" "meth:`emit`." msgstr "" -#: library/logging.handlers.rst:418 +#: library/logging.handlers.rst:422 msgid "" "If *atTime* is not ``None``, it must be a ``datetime.time`` instance which " "specifies the time of day when rollover occurs, for the cases where rollover " @@ -569,13 +575,13 @@ msgid "" "normal interval calculation." msgstr "" -#: library/logging.handlers.rst:425 +#: library/logging.handlers.rst:429 msgid "" "If *errors* is specified, it's used to determine how encoding errors are " "handled." msgstr "" -#: library/logging.handlers.rst:428 +#: library/logging.handlers.rst:432 msgid "" "Calculation of the initial rollover time is done when the handler is " "initialised. Calculation of subsequent rollover times is done only when " @@ -590,51 +596,56 @@ msgid "" "to the minutes where no output (and hence no rollover) occurred." msgstr "" -#: library/logging.handlers.rst:441 +#: library/logging.handlers.rst:445 msgid "*atTime* parameter was added." msgstr "" -#: library/logging.handlers.rst:457 +#: library/logging.handlers.rst:461 msgid "" "Outputs the record to the file, catering for rollover as described above." msgstr "" -#: library/logging.handlers.rst:461 +#: library/logging.handlers.rst:465 msgid "" "Returns a list of filenames which should be deleted as part of rollover. " -"These are the absolute paths of the oldest backup log files written by the " -"handler." +"These" msgstr "" -#: library/logging.handlers.rst:467 +#: library/logging.handlers.rst:469 +msgid "" +"See if enough time has passed for a rollover to occur and if it has, compute " +"the next rollover time." +msgstr "" + +#: library/logging.handlers.rst:475 msgid "SocketHandler" msgstr "" -#: library/logging.handlers.rst:469 +#: library/logging.handlers.rst:477 msgid "" "The :class:`SocketHandler` class, located in the :mod:`logging.handlers` " "module, sends logging output to a network socket. The base class uses a TCP " "socket." msgstr "" -#: library/logging.handlers.rst:475 +#: library/logging.handlers.rst:483 msgid "" "Returns a new instance of the :class:`SocketHandler` class intended to " "communicate with a remote machine whose address is given by *host* and " "*port*." msgstr "" -#: library/logging.handlers.rst:478 +#: library/logging.handlers.rst:486 msgid "" "If ``port`` is specified as ``None``, a Unix domain socket is created using " "the value in ``host`` - otherwise, a TCP socket is created." msgstr "" -#: library/logging.handlers.rst:484 +#: library/logging.handlers.rst:492 msgid "Closes the socket." msgstr "" -#: library/logging.handlers.rst:489 +#: library/logging.handlers.rst:497 msgid "" "Pickles the record's attribute dictionary and writes it to the socket in " "binary format. If there is an error with the socket, silently drops the " @@ -643,35 +654,35 @@ msgid "" "`~logging.LogRecord`, use the :func:`~logging.makeLogRecord` function." msgstr "" -#: library/logging.handlers.rst:499 +#: library/logging.handlers.rst:507 msgid "" "Handles an error which has occurred during :meth:`emit`. The most likely " "cause is a lost connection. Closes the socket so that we can retry on the " "next event." msgstr "" -#: library/logging.handlers.rst:506 +#: library/logging.handlers.rst:514 msgid "" "This is a factory method which allows subclasses to define the precise type " "of socket they want. The default implementation creates a TCP socket (:const:" "`socket.SOCK_STREAM`)." msgstr "" -#: library/logging.handlers.rst:513 +#: library/logging.handlers.rst:521 msgid "" "Pickles the record's attribute dictionary in binary format with a length " "prefix, and returns it ready for transmission across the socket. The details " "of this operation are equivalent to::" msgstr "" -#: library/logging.handlers.rst:517 +#: library/logging.handlers.rst:525 msgid "" "data = pickle.dumps(record_attr_dict, 1)\n" "datalen = struct.pack('>L', len(data))\n" "return datalen + data" msgstr "" -#: library/logging.handlers.rst:521 +#: library/logging.handlers.rst:529 msgid "" "Note that pickles aren't completely secure. If you are concerned about " "security, you may want to override this method to implement a more secure " @@ -680,20 +691,20 @@ msgid "" "objects on the receiving end." msgstr "" -#: library/logging.handlers.rst:530 +#: library/logging.handlers.rst:538 msgid "" "Send a pickled byte-string *packet* to the socket. The format of the sent " "byte-string is as described in the documentation for :meth:`~SocketHandler." "makePickle`." msgstr "" -#: library/logging.handlers.rst:534 +#: library/logging.handlers.rst:542 msgid "" "This function allows for partial sends, which can happen when the network is " "busy." msgstr "" -#: library/logging.handlers.rst:540 +#: library/logging.handlers.rst:548 msgid "" "Tries to create a socket; on failure, uses an exponential back-off " "algorithm. On initial failure, the handler will drop the message it was " @@ -704,23 +715,23 @@ msgid "" "each time up to a maximum of 30 seconds." msgstr "" -#: library/logging.handlers.rst:548 +#: library/logging.handlers.rst:556 msgid "This behaviour is controlled by the following handler attributes:" msgstr "" -#: library/logging.handlers.rst:550 +#: library/logging.handlers.rst:558 msgid "``retryStart`` (initial delay, defaulting to 1.0 seconds)." msgstr "" -#: library/logging.handlers.rst:551 +#: library/logging.handlers.rst:559 msgid "``retryFactor`` (multiplier, defaulting to 2.0)." msgstr "" -#: library/logging.handlers.rst:552 +#: library/logging.handlers.rst:560 msgid "``retryMax`` (maximum delay, defaulting to 30.0 seconds)." msgstr "" -#: library/logging.handlers.rst:554 +#: library/logging.handlers.rst:562 msgid "" "This means that if the remote listener starts up *after* the handler has " "been used, you could lose messages (since the handler won't even attempt a " @@ -728,25 +739,25 @@ msgid "" "during the delay period)." msgstr "" -#: library/logging.handlers.rst:563 +#: library/logging.handlers.rst:571 msgid "DatagramHandler" msgstr "" -#: library/logging.handlers.rst:565 +#: library/logging.handlers.rst:573 msgid "" "The :class:`DatagramHandler` class, located in the :mod:`logging.handlers` " "module, inherits from :class:`SocketHandler` to support sending logging " "messages over UDP sockets." msgstr "" -#: library/logging.handlers.rst:572 +#: library/logging.handlers.rst:580 msgid "" "Returns a new instance of the :class:`DatagramHandler` class intended to " "communicate with a remote machine whose address is given by *host* and " "*port*." msgstr "" -#: library/logging.handlers.rst:575 +#: library/logging.handlers.rst:583 msgid "" "As UDP is not a streaming protocol, there is no persistent connection " "between an instance of this handler and *host*. For this reason, when using " @@ -756,13 +767,13 @@ msgid "" "looked-up IP address rather than the hostname." msgstr "" -#: library/logging.handlers.rst:582 +#: library/logging.handlers.rst:590 msgid "" "If ``port`` is specified as ``None``, a Unix domain socket is created using " "the value in ``host`` - otherwise, a UDP socket is created." msgstr "" -#: library/logging.handlers.rst:588 +#: library/logging.handlers.rst:596 msgid "" "Pickles the record's attribute dictionary and writes it to the socket in " "binary format. If there is an error with the socket, silently drops the " @@ -770,29 +781,29 @@ msgid "" "LogRecord`, use the :func:`~logging.makeLogRecord` function." msgstr "" -#: library/logging.handlers.rst:597 +#: library/logging.handlers.rst:605 msgid "" "The factory method of :class:`SocketHandler` is here overridden to create a " "UDP socket (:const:`socket.SOCK_DGRAM`)." msgstr "" -#: library/logging.handlers.rst:603 +#: library/logging.handlers.rst:611 msgid "" "Send a pickled byte-string to a socket. The format of the sent byte-string " "is as described in the documentation for :meth:`SocketHandler.makePickle`." msgstr "" -#: library/logging.handlers.rst:610 +#: library/logging.handlers.rst:618 msgid "SysLogHandler" msgstr "" -#: library/logging.handlers.rst:612 +#: library/logging.handlers.rst:620 msgid "" "The :class:`SysLogHandler` class, located in the :mod:`logging.handlers` " "module, supports sending logging messages to a remote or local Unix syslog." msgstr "" -#: library/logging.handlers.rst:618 +#: library/logging.handlers.rst:626 msgid "" "Returns a new instance of the :class:`SysLogHandler` class intended to " "communicate with a remote Unix machine whose address is given by *address* " @@ -811,7 +822,7 @@ msgid "" "applied." msgstr "" -#: library/logging.handlers.rst:635 +#: library/logging.handlers.rst:643 msgid "" "Note that if your server is not listening on UDP port 514, :class:" "`SysLogHandler` may appear not to work. In that case, check what address you " @@ -822,30 +833,30 @@ msgid "" "platforms). On Windows, you pretty much have to use the UDP option." msgstr "" -#: library/logging.handlers.rst:644 +#: library/logging.handlers.rst:652 msgid "" "On macOS 12.x (Monterey), Apple has changed the behaviour of their syslog " "daemon - it no longer listens on a domain socket. Therefore, you cannot " "expect :class:`SysLogHandler` to work on this system." msgstr "" -#: library/logging.handlers.rst:648 +#: library/logging.handlers.rst:656 msgid "See :gh:`91070` for more information." msgstr "" -#: library/logging.handlers.rst:650 +#: library/logging.handlers.rst:658 msgid "*socktype* was added." msgstr "" -#: library/logging.handlers.rst:653 +#: library/logging.handlers.rst:661 msgid "*timeout* was added." msgstr "" -#: library/logging.handlers.rst:658 +#: library/logging.handlers.rst:666 msgid "Closes the socket to the remote host." msgstr "" -#: library/logging.handlers.rst:662 +#: library/logging.handlers.rst:670 msgid "" "Tries to create a socket and, if it's not a datagram socket, connect it to " "the other end. This method is called during handler initialization, but it's " @@ -854,13 +865,13 @@ msgid "" "socket at that point." msgstr "" -#: library/logging.handlers.rst:672 +#: library/logging.handlers.rst:680 msgid "" "The record is formatted, and then sent to the syslog server. If exception " "information is present, it is *not* sent to the server." msgstr "" -#: library/logging.handlers.rst:675 +#: library/logging.handlers.rst:683 msgid "" "(See: :issue:`12168`.) In earlier versions, the message sent to the syslog " "daemons was always terminated with a NUL byte, because early versions of " @@ -871,7 +882,7 @@ msgid "" "byte on as part of the message." msgstr "" -#: library/logging.handlers.rst:684 +#: library/logging.handlers.rst:692 msgid "" "To enable easier handling of syslog messages in the face of all these " "differing daemon behaviours, the appending of the NUL byte has been made " @@ -881,7 +892,7 @@ msgid "" "*not* append the NUL terminator." msgstr "" -#: library/logging.handlers.rst:691 +#: library/logging.handlers.rst:699 msgid "" "(See: :issue:`12419`.) In earlier versions, there was no facility for an " "\"ident\" or \"tag\" prefix to identify the source of the message. This can " @@ -892,260 +903,260 @@ msgid "" "bytes, and is prepended to the message exactly as is." msgstr "" -#: library/logging.handlers.rst:702 +#: library/logging.handlers.rst:710 msgid "" "Encodes the facility and priority into an integer. You can pass in strings " "or integers - if strings are passed, internal mapping dictionaries are used " "to convert them to integers." msgstr "" -#: library/logging.handlers.rst:706 +#: library/logging.handlers.rst:714 msgid "" "The symbolic ``LOG_`` values are defined in :class:`SysLogHandler` and " "mirror the values defined in the ``sys/syslog.h`` header file." msgstr "" -#: library/logging.handlers.rst:709 +#: library/logging.handlers.rst:717 msgid "**Priorities**" msgstr "" -#: library/logging.handlers.rst:712 library/logging.handlers.rst:734 +#: library/logging.handlers.rst:720 library/logging.handlers.rst:742 msgid "Name (string)" msgstr "" -#: library/logging.handlers.rst:712 library/logging.handlers.rst:734 +#: library/logging.handlers.rst:720 library/logging.handlers.rst:742 msgid "Symbolic value" msgstr "" -#: library/logging.handlers.rst:714 +#: library/logging.handlers.rst:722 msgid "``alert``" msgstr "" -#: library/logging.handlers.rst:714 +#: library/logging.handlers.rst:722 msgid "LOG_ALERT" msgstr "" -#: library/logging.handlers.rst:716 +#: library/logging.handlers.rst:724 msgid "``crit`` or ``critical``" msgstr "" -#: library/logging.handlers.rst:716 +#: library/logging.handlers.rst:724 msgid "LOG_CRIT" msgstr "" -#: library/logging.handlers.rst:718 +#: library/logging.handlers.rst:726 msgid "``debug``" msgstr "" -#: library/logging.handlers.rst:718 +#: library/logging.handlers.rst:726 msgid "LOG_DEBUG" msgstr "" -#: library/logging.handlers.rst:720 +#: library/logging.handlers.rst:728 msgid "``emerg`` or ``panic``" msgstr "" -#: library/logging.handlers.rst:720 +#: library/logging.handlers.rst:728 msgid "LOG_EMERG" msgstr "" -#: library/logging.handlers.rst:722 +#: library/logging.handlers.rst:730 msgid "``err`` or ``error``" msgstr "" -#: library/logging.handlers.rst:722 +#: library/logging.handlers.rst:730 msgid "LOG_ERR" msgstr "" -#: library/logging.handlers.rst:724 +#: library/logging.handlers.rst:732 msgid "``info``" msgstr "" -#: library/logging.handlers.rst:724 +#: library/logging.handlers.rst:732 msgid "LOG_INFO" msgstr "" -#: library/logging.handlers.rst:726 +#: library/logging.handlers.rst:734 msgid "``notice``" msgstr "" -#: library/logging.handlers.rst:726 +#: library/logging.handlers.rst:734 msgid "LOG_NOTICE" msgstr "" -#: library/logging.handlers.rst:728 +#: library/logging.handlers.rst:736 msgid "``warn`` or ``warning``" msgstr "" -#: library/logging.handlers.rst:728 +#: library/logging.handlers.rst:736 msgid "LOG_WARNING" msgstr "" -#: library/logging.handlers.rst:731 +#: library/logging.handlers.rst:739 msgid "**Facilities**" msgstr "" -#: library/logging.handlers.rst:736 +#: library/logging.handlers.rst:744 msgid "``auth``" msgstr "" -#: library/logging.handlers.rst:736 +#: library/logging.handlers.rst:744 msgid "LOG_AUTH" msgstr "" -#: library/logging.handlers.rst:738 +#: library/logging.handlers.rst:746 msgid "``authpriv``" msgstr "" -#: library/logging.handlers.rst:738 +#: library/logging.handlers.rst:746 msgid "LOG_AUTHPRIV" msgstr "" -#: library/logging.handlers.rst:740 +#: library/logging.handlers.rst:748 msgid "``cron``" msgstr "" -#: library/logging.handlers.rst:740 +#: library/logging.handlers.rst:748 msgid "LOG_CRON" msgstr "" -#: library/logging.handlers.rst:742 +#: library/logging.handlers.rst:750 msgid "``daemon``" msgstr "" -#: library/logging.handlers.rst:742 +#: library/logging.handlers.rst:750 msgid "LOG_DAEMON" msgstr "" -#: library/logging.handlers.rst:744 +#: library/logging.handlers.rst:752 msgid "``ftp``" msgstr "" -#: library/logging.handlers.rst:744 +#: library/logging.handlers.rst:752 msgid "LOG_FTP" msgstr "" -#: library/logging.handlers.rst:746 +#: library/logging.handlers.rst:754 msgid "``kern``" msgstr "" -#: library/logging.handlers.rst:746 +#: library/logging.handlers.rst:754 msgid "LOG_KERN" msgstr "" -#: library/logging.handlers.rst:748 +#: library/logging.handlers.rst:756 msgid "``lpr``" msgstr "" -#: library/logging.handlers.rst:748 +#: library/logging.handlers.rst:756 msgid "LOG_LPR" msgstr "" -#: library/logging.handlers.rst:750 +#: library/logging.handlers.rst:758 msgid "``mail``" msgstr "" -#: library/logging.handlers.rst:750 +#: library/logging.handlers.rst:758 msgid "LOG_MAIL" msgstr "" -#: library/logging.handlers.rst:752 +#: library/logging.handlers.rst:760 msgid "``news``" msgstr "" -#: library/logging.handlers.rst:752 +#: library/logging.handlers.rst:760 msgid "LOG_NEWS" msgstr "" -#: library/logging.handlers.rst:754 +#: library/logging.handlers.rst:762 msgid "``syslog``" msgstr "" -#: library/logging.handlers.rst:754 +#: library/logging.handlers.rst:762 msgid "LOG_SYSLOG" msgstr "" -#: library/logging.handlers.rst:756 +#: library/logging.handlers.rst:764 msgid "``user``" msgstr "" -#: library/logging.handlers.rst:756 +#: library/logging.handlers.rst:764 msgid "LOG_USER" msgstr "" -#: library/logging.handlers.rst:758 +#: library/logging.handlers.rst:766 msgid "``uucp``" msgstr "" -#: library/logging.handlers.rst:758 +#: library/logging.handlers.rst:766 msgid "LOG_UUCP" msgstr "" -#: library/logging.handlers.rst:760 +#: library/logging.handlers.rst:768 msgid "``local0``" msgstr "" -#: library/logging.handlers.rst:760 +#: library/logging.handlers.rst:768 msgid "LOG_LOCAL0" msgstr "" -#: library/logging.handlers.rst:762 +#: library/logging.handlers.rst:770 msgid "``local1``" msgstr "" -#: library/logging.handlers.rst:762 +#: library/logging.handlers.rst:770 msgid "LOG_LOCAL1" msgstr "" -#: library/logging.handlers.rst:764 +#: library/logging.handlers.rst:772 msgid "``local2``" msgstr "" -#: library/logging.handlers.rst:764 +#: library/logging.handlers.rst:772 msgid "LOG_LOCAL2" msgstr "" -#: library/logging.handlers.rst:766 +#: library/logging.handlers.rst:774 msgid "``local3``" msgstr "" -#: library/logging.handlers.rst:766 +#: library/logging.handlers.rst:774 msgid "LOG_LOCAL3" msgstr "" -#: library/logging.handlers.rst:768 +#: library/logging.handlers.rst:776 msgid "``local4``" msgstr "" -#: library/logging.handlers.rst:768 +#: library/logging.handlers.rst:776 msgid "LOG_LOCAL4" msgstr "" -#: library/logging.handlers.rst:770 +#: library/logging.handlers.rst:778 msgid "``local5``" msgstr "" -#: library/logging.handlers.rst:770 +#: library/logging.handlers.rst:778 msgid "LOG_LOCAL5" msgstr "" -#: library/logging.handlers.rst:772 +#: library/logging.handlers.rst:780 msgid "``local6``" msgstr "" -#: library/logging.handlers.rst:772 +#: library/logging.handlers.rst:780 msgid "LOG_LOCAL6" msgstr "" -#: library/logging.handlers.rst:774 +#: library/logging.handlers.rst:782 msgid "``local7``" msgstr "" -#: library/logging.handlers.rst:774 +#: library/logging.handlers.rst:782 msgid "LOG_LOCAL7" msgstr "" -#: library/logging.handlers.rst:779 +#: library/logging.handlers.rst:787 msgid "" "Maps a logging level name to a syslog priority name. You may need to " "override this if you are using custom levels, or if the default algorithm is " @@ -1154,11 +1165,11 @@ msgid "" "all other level names to 'warning'." msgstr "" -#: library/logging.handlers.rst:789 +#: library/logging.handlers.rst:797 msgid "NTEventLogHandler" msgstr "" -#: library/logging.handlers.rst:791 +#: library/logging.handlers.rst:799 msgid "" "The :class:`NTEventLogHandler` class, located in the :mod:`logging.handlers` " "module, supports sending logging messages to a local Windows NT, Windows " @@ -1166,7 +1177,7 @@ msgid "" "Win32 extensions for Python installed." msgstr "" -#: library/logging.handlers.rst:799 +#: library/logging.handlers.rst:807 msgid "" "Returns a new instance of the :class:`NTEventLogHandler` class. The " "*appname* is used to define the application name as it appears in the event " @@ -1182,7 +1193,7 @@ msgid "" "or ``'Security'``, and defaults to ``'Application'``." msgstr "" -#: library/logging.handlers.rst:815 +#: library/logging.handlers.rst:823 msgid "" "At this point, you can remove the application name from the registry as a " "source of event log entries. However, if you do this, you will not be able " @@ -1191,19 +1202,19 @@ msgid "" "not do this." msgstr "" -#: library/logging.handlers.rst:824 +#: library/logging.handlers.rst:832 msgid "" "Determines the message ID, event category and event type, and then logs the " "message in the NT event log." msgstr "" -#: library/logging.handlers.rst:830 +#: library/logging.handlers.rst:838 msgid "" "Returns the event category for the record. Override this if you want to " "specify your own categories. This version returns 0." msgstr "" -#: library/logging.handlers.rst:836 +#: library/logging.handlers.rst:844 msgid "" "Returns the event type for the record. Override this if you want to specify " "your own types. This version does a mapping using the handler's typemap " @@ -1214,7 +1225,7 @@ msgid "" "the handler's *typemap* attribute." msgstr "" -#: library/logging.handlers.rst:847 +#: library/logging.handlers.rst:855 msgid "" "Returns the message ID for the record. If you are using your own messages, " "you could do this by having the *msg* passed to the logger being an ID " @@ -1223,17 +1234,17 @@ msgid "" "message ID in :file:`win32service.pyd`." msgstr "" -#: library/logging.handlers.rst:856 +#: library/logging.handlers.rst:864 msgid "SMTPHandler" msgstr "" -#: library/logging.handlers.rst:858 +#: library/logging.handlers.rst:866 msgid "" "The :class:`SMTPHandler` class, located in the :mod:`logging.handlers` " "module, supports sending logging messages to an email address via SMTP." msgstr "" -#: library/logging.handlers.rst:864 +#: library/logging.handlers.rst:872 msgid "" "Returns a new instance of the :class:`SMTPHandler` class. The instance is " "initialized with the from and to addresses and subject line of the email. " @@ -1244,7 +1255,7 @@ msgid "" "*credentials* argument." msgstr "" -#: library/logging.handlers.rst:871 +#: library/logging.handlers.rst:879 msgid "" "To specify the use of a secure protocol (TLS), pass in a tuple to the " "*secure* argument. This will only be used when authentication credentials " @@ -1254,31 +1265,31 @@ msgid "" "SMTP.starttls` method.)" msgstr "" -#: library/logging.handlers.rst:878 +#: library/logging.handlers.rst:886 msgid "" "A timeout can be specified for communication with the SMTP server using the " "*timeout* argument." msgstr "" -#: library/logging.handlers.rst:881 +#: library/logging.handlers.rst:889 msgid "Added the *timeout* parameter." msgstr "" -#: library/logging.handlers.rst:886 +#: library/logging.handlers.rst:894 msgid "Formats the record and sends it to the specified addressees." msgstr "" -#: library/logging.handlers.rst:891 +#: library/logging.handlers.rst:899 msgid "" "If you want to specify a subject line which is record-dependent, override " "this method." msgstr "" -#: library/logging.handlers.rst:897 +#: library/logging.handlers.rst:905 msgid "MemoryHandler" msgstr "" -#: library/logging.handlers.rst:899 +#: library/logging.handlers.rst:907 msgid "" "The :class:`MemoryHandler` class, located in the :mod:`logging.handlers` " "module, supports buffering of logging records in memory, periodically " @@ -1286,7 +1297,7 @@ msgid "" "buffer is full, or when an event of a certain severity or greater is seen." msgstr "" -#: library/logging.handlers.rst:904 +#: library/logging.handlers.rst:912 msgid "" ":class:`MemoryHandler` is a subclass of the more general :class:" "`BufferingHandler`, which is an abstract class. This buffers logging records " @@ -1295,32 +1306,32 @@ msgid "" "should, then :meth:`flush` is expected to do the flushing." msgstr "" -#: library/logging.handlers.rst:913 +#: library/logging.handlers.rst:921 msgid "" "Initializes the handler with a buffer of the specified capacity. Here, " "*capacity* means the number of logging records buffered." msgstr "" -#: library/logging.handlers.rst:919 +#: library/logging.handlers.rst:927 msgid "" "Append the record to the buffer. If :meth:`shouldFlush` returns true, call :" "meth:`flush` to process the buffer." msgstr "" -#: library/logging.handlers.rst:925 +#: library/logging.handlers.rst:933 msgid "" "For a :class:`BufferingHandler` instance, flushing means that it sets the " "buffer to an empty list. This method can be overwritten to implement more " "useful flushing behavior." msgstr "" -#: library/logging.handlers.rst:932 +#: library/logging.handlers.rst:940 msgid "" "Return ``True`` if the buffer is up to capacity. This method can be " "overridden to implement custom flushing strategies." msgstr "" -#: library/logging.handlers.rst:938 +#: library/logging.handlers.rst:946 msgid "" "Returns a new instance of the :class:`MemoryHandler` class. The instance is " "initialized with a buffer size of *capacity* (number of records buffered). " @@ -1332,15 +1343,15 @@ msgid "" "the buffer will occur when the handler is closed." msgstr "" -#: library/logging.handlers.rst:947 +#: library/logging.handlers.rst:955 msgid "The *flushOnClose* parameter was added." msgstr "" -#: library/logging.handlers.rst:953 +#: library/logging.handlers.rst:961 msgid "Calls :meth:`flush`, sets the target to ``None`` and clears the buffer." msgstr "" -#: library/logging.handlers.rst:959 +#: library/logging.handlers.rst:967 msgid "" "For a :class:`MemoryHandler` instance, flushing means just sending the " "buffered records to the target, if there is one. The buffer is also cleared " @@ -1348,26 +1359,26 @@ msgid "" "behavior." msgstr "" -#: library/logging.handlers.rst:966 +#: library/logging.handlers.rst:974 msgid "Sets the target handler for this handler." msgstr "" -#: library/logging.handlers.rst:971 +#: library/logging.handlers.rst:979 msgid "Checks for buffer full or a record at the *flushLevel* or higher." msgstr "" -#: library/logging.handlers.rst:977 +#: library/logging.handlers.rst:985 msgid "HTTPHandler" msgstr "" -#: library/logging.handlers.rst:979 +#: library/logging.handlers.rst:987 msgid "" "The :class:`HTTPHandler` class, located in the :mod:`logging.handlers` " "module, supports sending logging messages to a web server, using either " "``GET`` or ``POST`` semantics." msgstr "" -#: library/logging.handlers.rst:986 +#: library/logging.handlers.rst:994 msgid "" "Returns a new instance of the :class:`HTTPHandler` class. The *host* can be " "of the form ``host:port``, should you need to use a specific port number. " @@ -1381,11 +1392,11 @@ msgid "" "cleartext across the wire." msgstr "" -#: library/logging.handlers.rst:997 +#: library/logging.handlers.rst:1005 msgid "The *context* parameter was added." msgstr "" -#: library/logging.handlers.rst:1002 +#: library/logging.handlers.rst:1010 msgid "" "Provides a dictionary, based on ``record``, which is to be URL-encoded and " "sent to the web server. The default implementation just returns ``record." @@ -1394,14 +1405,14 @@ msgid "" "customization of what's sent to the server is required." msgstr "" -#: library/logging.handlers.rst:1010 +#: library/logging.handlers.rst:1018 msgid "" "Sends the record to the web server as a URL-encoded dictionary. The :meth:" "`mapLogRecord` method is used to convert the record to the dictionary to be " "sent." msgstr "" -#: library/logging.handlers.rst:1014 +#: library/logging.handlers.rst:1022 msgid "" "Since preparing a record for sending it to a web server is not the same as a " "generic formatting operation, using :meth:`~logging.Handler.setFormatter` to " @@ -1411,18 +1422,18 @@ msgid "" "the dictionary in a form suitable for sending to a web server." msgstr "" -#: library/logging.handlers.rst:1027 +#: library/logging.handlers.rst:1035 msgid "QueueHandler" msgstr "" -#: library/logging.handlers.rst:1031 +#: library/logging.handlers.rst:1039 msgid "" "The :class:`QueueHandler` class, located in the :mod:`logging.handlers` " "module, supports sending logging messages to a queue, such as those " "implemented in the :mod:`queue` or :mod:`multiprocessing` modules." msgstr "" -#: library/logging.handlers.rst:1035 +#: library/logging.handlers.rst:1043 msgid "" "Along with the :class:`QueueListener` class, :class:`QueueHandler` can be " "used to let handlers do their work on a separate thread from the one which " @@ -1432,7 +1443,7 @@ msgid "" "an email via :class:`SMTPHandler`) are done on a separate thread." msgstr "" -#: library/logging.handlers.rst:1044 +#: library/logging.handlers.rst:1052 msgid "" "Returns a new instance of the :class:`QueueHandler` class. The instance is " "initialized with the queue to send messages to. The *queue* can be any queue-" @@ -1442,13 +1453,13 @@ msgid "" "instances for *queue*." msgstr "" -#: library/logging.handlers.rst:1051 library/logging.handlers.rst:1140 +#: library/logging.handlers.rst:1059 library/logging.handlers.rst:1148 msgid "" "If you are using :mod:`multiprocessing`, you should avoid using :class:" "`~queue.SimpleQueue` and instead use :class:`multiprocessing.Queue`." msgstr "" -#: library/logging.handlers.rst:1056 +#: library/logging.handlers.rst:1064 msgid "" "Enqueues the result of preparing the LogRecord. Should an exception occur (e." "g. because a bounded queue has filled up), the :meth:`~logging.Handler." @@ -1458,13 +1469,13 @@ msgid "" "raiseExceptions` is ``True``)." msgstr "" -#: library/logging.handlers.rst:1065 +#: library/logging.handlers.rst:1073 msgid "" "Prepares a record for queuing. The object returned by this method is " "enqueued." msgstr "" -#: library/logging.handlers.rst:1068 +#: library/logging.handlers.rst:1076 msgid "" "The base implementation formats the record to merge the message, arguments, " "exception and stack information, if present. It also removes unpickleable " @@ -1474,14 +1485,14 @@ msgid "" "attr:`exc_info` and :attr:`exc_text` attributes to ``None``." msgstr "" -#: library/logging.handlers.rst:1076 +#: library/logging.handlers.rst:1084 msgid "" "You might want to override this method if you want to convert the record to " "a dict or JSON string, or send a modified copy of the record while leaving " "the original intact." msgstr "" -#: library/logging.handlers.rst:1080 +#: library/logging.handlers.rst:1088 msgid "" "The base implementation formats the message with arguments, sets the " "``message`` and ``msg`` attributes to the formatted message and sets the " @@ -1497,25 +1508,25 @@ msgid "" "libraries that you use.)" msgstr "" -#: library/logging.handlers.rst:1096 +#: library/logging.handlers.rst:1104 msgid "" "Enqueues the record on the queue using ``put_nowait()``; you may want to " "override this if you want to use blocking behaviour, or a timeout, or a " "customized queue implementation." msgstr "" -#: library/logging.handlers.rst:1102 +#: library/logging.handlers.rst:1110 msgid "" "When created via configuration using :func:`~logging.config.dictConfig`, " "this attribute will contain a :class:`QueueListener` instance for use with " "this handler. Otherwise, it will be ``None``." msgstr "" -#: library/logging.handlers.rst:1111 +#: library/logging.handlers.rst:1119 msgid "QueueListener" msgstr "" -#: library/logging.handlers.rst:1115 +#: library/logging.handlers.rst:1123 msgid "" "The :class:`QueueListener` class, located in the :mod:`logging.handlers` " "module, supports receiving logging messages from a queue, such as those " @@ -1526,7 +1537,7 @@ msgid "" "works hand-in-hand with :class:`QueueHandler`." msgstr "" -#: library/logging.handlers.rst:1123 +#: library/logging.handlers.rst:1131 msgid "" "Along with the :class:`QueueHandler` class, :class:`QueueListener` can be " "used to let handlers do their work on a separate thread from the one which " @@ -1536,7 +1547,7 @@ msgid "" "an email via :class:`SMTPHandler`) are done on a separate thread." msgstr "" -#: library/logging.handlers.rst:1132 +#: library/logging.handlers.rst:1140 msgid "" "Returns a new instance of the :class:`QueueListener` class. The instance is " "initialized with the queue to send messages to and a list of handlers which " @@ -1547,7 +1558,7 @@ msgid "" "class:`~queue.SimpleQueue` instances for *queue*." msgstr "" -#: library/logging.handlers.rst:1143 +#: library/logging.handlers.rst:1151 msgid "" "If ``respect_handler_level`` is ``True``, a handler's level is respected " "(compared with the level for the message) when deciding whether to pass " @@ -1555,11 +1566,11 @@ msgid "" "versions - to always pass each message to each handler." msgstr "" -#: library/logging.handlers.rst:1148 +#: library/logging.handlers.rst:1156 msgid "The ``respect_handler_level`` argument was added." msgstr "" -#: library/logging.handlers.rst:1151 +#: library/logging.handlers.rst:1159 msgid "" ":class:`QueueListener` can now be used as a context manager via :keyword:" "`with`. When entering the context, the listener is started. When exiting the " @@ -1567,83 +1578,83 @@ msgid "" "the :class:`QueueListener` object." msgstr "" -#: library/logging.handlers.rst:1160 +#: library/logging.handlers.rst:1168 msgid "Dequeues a record and return it, optionally blocking." msgstr "" -#: library/logging.handlers.rst:1162 +#: library/logging.handlers.rst:1170 msgid "" "The base implementation uses ``get()``. You may want to override this method " "if you want to use timeouts or work with custom queue implementations." msgstr "" -#: library/logging.handlers.rst:1168 +#: library/logging.handlers.rst:1176 msgid "Prepare a record for handling." msgstr "" -#: library/logging.handlers.rst:1170 +#: library/logging.handlers.rst:1178 msgid "" "This implementation just returns the passed-in record. You may want to " "override this method if you need to do any custom marshalling or " "manipulation of the record before passing it to the handlers." msgstr "" -#: library/logging.handlers.rst:1176 +#: library/logging.handlers.rst:1184 msgid "Handle a record." msgstr "" -#: library/logging.handlers.rst:1178 +#: library/logging.handlers.rst:1186 msgid "" "This just loops through the handlers offering them the record to handle. The " "actual object passed to the handlers is that which is returned from :meth:" "`prepare`." msgstr "" -#: library/logging.handlers.rst:1184 +#: library/logging.handlers.rst:1192 msgid "Starts the listener." msgstr "" -#: library/logging.handlers.rst:1186 +#: library/logging.handlers.rst:1194 msgid "" "This starts up a background thread to monitor the queue for LogRecords to " "process." msgstr "" -#: library/logging.handlers.rst:1189 +#: library/logging.handlers.rst:1197 msgid "" "Raises :exc:`RuntimeError` if called and the listener is already running." msgstr "" -#: library/logging.handlers.rst:1195 +#: library/logging.handlers.rst:1203 msgid "Stops the listener." msgstr "" -#: library/logging.handlers.rst:1197 +#: library/logging.handlers.rst:1205 msgid "" "This asks the thread to terminate, and then waits for it to do so. Note that " "if you don't call this before your application exits, there may be some " "records still left on the queue, which won't be processed." msgstr "" -#: library/logging.handlers.rst:1203 +#: library/logging.handlers.rst:1211 msgid "" "Writes a sentinel to the queue to tell the listener to quit. This " "implementation uses ``put_nowait()``. You may want to override this method " "if you want to use timeouts or work with custom queue implementations." msgstr "" -#: library/logging.handlers.rst:1213 +#: library/logging.handlers.rst:1221 msgid "Module :mod:`logging`" msgstr "" -#: library/logging.handlers.rst:1214 +#: library/logging.handlers.rst:1222 msgid "API reference for the logging module." msgstr "" -#: library/logging.handlers.rst:1216 +#: library/logging.handlers.rst:1224 msgid "Module :mod:`logging.config`" msgstr "" -#: library/logging.handlers.rst:1217 +#: library/logging.handlers.rst:1225 msgid "Configuration API for the logging module." msgstr "" diff --git a/library/logging.po b/library/logging.po index 1e035e2c..cafd3d72 100644 --- a/library/logging.po +++ b/library/logging.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/lzma.po b/library/lzma.po index 91b3dd30..0426d947 100644 --- a/library/lzma.po +++ b/library/lzma.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/mailbox.po b/library/mailbox.po index f7017417..06e6e197 100644 --- a/library/mailbox.po +++ b/library/mailbox.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/mailcap.po b/library/mailcap.po index 697ae32f..fc0f15ee 100644 --- a/library/mailcap.po +++ b/library/mailcap.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/markup.po b/library/markup.po index 52567f8e..d93ae1bd 100644 --- a/library/markup.po +++ b/library/markup.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/marshal.po b/library/marshal.po index 0a4db9ce..0836d283 100644 --- a/library/marshal.po +++ b/library/marshal.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/math.po b/library/math.po index e1949671..5835ff7d 100644 --- a/library/math.po +++ b/library/math.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -23,8 +23,8 @@ msgstr "" #: library/math.rst:13 msgid "" -"This module provides access to the mathematical functions defined by the C " -"standard." +"This module provides access to common mathematical functions and constants, " +"including those defined by the C standard." msgstr "" #: library/math.rst:16 @@ -613,23 +613,21 @@ msgid "" "coefficient of k-th term in polynomial expansion of ``(1 + x)ⁿ``." msgstr "" -#: library/math.rst:205 +#: library/math.rst:204 msgid "" "Raises :exc:`TypeError` if either of the arguments are not integers. Raises :" "exc:`ValueError` if either of the arguments are negative." msgstr "" #: library/math.rst:147 -msgid "" -"Return *n* factorial as an integer. Raises :exc:`ValueError` if *n* is not " -"integral or is negative." +msgid "Return factorial of the nonnegative integer *n*." msgstr "" -#: library/math.rst:150 +#: library/math.rst:149 msgid "Floats with integral values (like ``5.0``) are no longer accepted." msgstr "" -#: library/math.rst:156 +#: library/math.rst:155 msgid "" "Return the greatest common divisor of the specified integer arguments. If " "any of the arguments is nonzero, then the returned value is the largest " @@ -638,20 +636,20 @@ msgid "" "``0``." msgstr "" -#: library/math.rst:164 +#: library/math.rst:163 msgid "" "Added support for an arbitrary number of arguments. Formerly, only two " "arguments were supported." msgstr "" -#: library/math.rst:171 +#: library/math.rst:170 msgid "" "Return the integer square root of the nonnegative integer *n*. This is the " "floor of the exact square root of *n*, or equivalently the greatest integer " "*a* such that *a*\\ ² |nbsp| ≤ |nbsp| *n*." msgstr "" -#: library/math.rst:175 +#: library/math.rst:174 msgid "" "For some applications, it may be more convenient to have the least integer " "*a* such that *n* |nbsp| ≤ |nbsp| *a*\\ ², or in other words the ceiling of " @@ -659,7 +657,7 @@ msgid "" "``a = 1 + isqrt(n - 1)``." msgstr "" -#: library/math.rst:185 +#: library/math.rst:184 msgid "" "Return the least common multiple of the specified integer arguments. If all " "arguments are nonzero, then the returned value is the smallest positive " @@ -668,47 +666,47 @@ msgid "" "``1``." msgstr "" -#: library/math.rst:196 +#: library/math.rst:195 msgid "" "Return the number of ways to choose *k* items from *n* items without " "repetition and with order." msgstr "" -#: library/math.rst:199 +#: library/math.rst:198 msgid "" "Evaluates to ``n! / (n - k)!`` when ``k <= n`` and evaluates to zero when " "``k > n``." msgstr "" -#: library/math.rst:202 +#: library/math.rst:201 msgid "" "If *k* is not specified or is ``None``, then *k* defaults to *n* and the " "function returns ``n!``." msgstr "" -#: library/math.rst:212 +#: library/math.rst:211 msgid "Floating point arithmetic" msgstr "" -#: library/math.rst:216 +#: library/math.rst:215 msgid "" "Return the ceiling of *x*, the smallest integer greater than or equal to " "*x*. If *x* is not a float, delegates to :meth:`x.__ceil__ `, which should return an :class:`~numbers.Integral` value." msgstr "" -#: library/math.rst:223 +#: library/math.rst:222 msgid "Return the absolute value of *x*." msgstr "" -#: library/math.rst:228 +#: library/math.rst:227 msgid "" "Return the floor of *x*, the largest integer less than or equal to *x*. If " "*x* is not a float, delegates to :meth:`x.__floor__ `, " "which should return an :class:`~numbers.Integral` value." msgstr "" -#: library/math.rst:235 +#: library/math.rst:234 msgid "" "Fused multiply-add operation. Return ``(x * y) + z``, computed as though " "with infinite precision and range followed by a single round to the " @@ -716,7 +714,7 @@ msgid "" "direct expression ``(x * y) + z``." msgstr "" -#: library/math.rst:240 +#: library/math.rst:239 msgid "" "This function follows the specification of the fusedMultiplyAdd operation " "described in the IEEE 754 standard. The standard leaves one case " @@ -725,7 +723,7 @@ msgid "" "not raise any exception." msgstr "" -#: library/math.rst:251 +#: library/math.rst:250 msgid "" "Return the floating-point remainder of ``x / y``, as defined by the platform " "C library function ``fmod(x, y)``. Note that the Python expression ``x % y`` " @@ -741,13 +739,13 @@ msgid "" "floats, while Python's ``x % y`` is preferred when working with integers." msgstr "" -#: library/math.rst:267 +#: library/math.rst:266 msgid "" "Return the fractional and integer parts of *x*. Both results carry the sign " "of *x* and are floats." msgstr "" -#: library/math.rst:270 +#: library/math.rst:269 msgid "" "Note that :func:`modf` has a different call/return pattern than its C " "equivalents: it takes a single argument and return a pair of values, rather " @@ -755,7 +753,7 @@ msgid "" "is no such thing in Python)." msgstr "" -#: library/math.rst:278 +#: library/math.rst:277 msgid "" "Return the IEEE 754-style remainder of *x* with respect to *y*. For finite " "*x* and finite nonzero *y*, this is the difference ``x - n*y``, where ``n`` " @@ -765,7 +763,7 @@ msgid "" "thus always satisfies ``abs(r) <= 0.5 * abs(y)``." msgstr "" -#: library/math.rst:285 +#: library/math.rst:284 msgid "" "Special cases follow IEEE 754: in particular, ``remainder(x, math.inf)`` is " "*x* for any finite *x*, and ``remainder(x, 0)`` and ``remainder(math.inf, " @@ -773,13 +771,13 @@ msgid "" "remainder operation is zero, that zero will have the same sign as *x*." msgstr "" -#: library/math.rst:291 +#: library/math.rst:290 msgid "" "On platforms using IEEE 754 binary floating point, the result of this " "operation is always exactly representable: no rounding error is introduced." msgstr "" -#: library/math.rst:299 +#: library/math.rst:298 msgid "" "Return *x* with the fractional part removed, leaving the integer part. This " "rounds toward 0: ``trunc()`` is equivalent to :func:`floor` for positive " @@ -788,7 +786,7 @@ msgid "" "class:`~numbers.Integral` value." msgstr "" -#: library/math.rst:306 +#: library/math.rst:305 msgid "" "For the :func:`ceil`, :func:`floor`, and :func:`modf` functions, note that " "*all* floating-point numbers of sufficiently large magnitude are exact " @@ -797,18 +795,18 @@ msgid "" "``abs(x) >= 2**52`` necessarily has no fractional bits." msgstr "" -#: library/math.rst:314 +#: library/math.rst:313 msgid "Floating point manipulation functions" msgstr "" -#: library/math.rst:318 +#: library/math.rst:317 msgid "" "Return a float with the magnitude (absolute value) of *x* but the sign of " "*y*. On platforms that support signed zeros, ``copysign(1.0, -0.0)`` " "returns *-1.0*." msgstr "" -#: library/math.rst:325 +#: library/math.rst:324 msgid "" "Return the mantissa and exponent of *x* as the pair ``(m, e)``. *m* is a " "float and *e* is an integer such that ``x == m * 2**e`` exactly. If *x* is " @@ -816,7 +814,7 @@ msgid "" "to \"pick apart\" the internal representation of a float in a portable way." msgstr "" -#: library/math.rst:330 +#: library/math.rst:329 msgid "" "Note that :func:`frexp` has a different call/return pattern than its C " "equivalents: it takes a single argument and return a pair of values, rather " @@ -824,20 +822,20 @@ msgid "" "is no such thing in Python)." msgstr "" -#: library/math.rst:337 +#: library/math.rst:336 msgid "" "Return ``True`` if the values *a* and *b* are close to each other and " "``False`` otherwise." msgstr "" -#: library/math.rst:340 +#: library/math.rst:339 msgid "" "Whether or not two values are considered close is determined according to " "given absolute and relative tolerances. If no errors occur, the result will " "be: ``abs(a-b) <= max(rel_tol * max(abs(a), abs(b)), abs_tol)``." msgstr "" -#: library/math.rst:344 +#: library/math.rst:343 msgid "" "*rel_tol* is the relative tolerance -- it is the maximum allowed difference " "between *a* and *b*, relative to the larger absolute value of *a* or *b*. " @@ -847,7 +845,7 @@ msgid "" "``1.0``." msgstr "" -#: library/math.rst:351 +#: library/math.rst:350 msgid "" "*abs_tol* is the absolute tolerance; it defaults to ``0.0`` and it must be " "nonnegative. When comparing ``x`` to ``0.0``, ``isclose(x, 0)`` is computed " @@ -856,7 +854,7 @@ msgid "" "argument to the call." msgstr "" -#: library/math.rst:357 +#: library/math.rst:356 msgid "" "The IEEE 754 special values of ``NaN``, ``inf``, and ``-inf`` will be " "handled according to IEEE rules. Specifically, ``NaN`` is not considered " @@ -864,136 +862,136 @@ msgid "" "considered close to themselves." msgstr "" -#: library/math.rst:366 +#: library/math.rst:365 msgid ":pep:`485` -- A function for testing approximate equality" msgstr "" -#: library/math.rst:371 +#: library/math.rst:370 msgid "" "Return ``True`` if *x* is neither an infinity nor a NaN, and ``False`` " "otherwise. (Note that ``0.0`` *is* considered finite.)" msgstr "" -#: library/math.rst:379 +#: library/math.rst:378 msgid "" "Return ``True`` if *x* is a positive or negative infinity, and ``False`` " "otherwise." msgstr "" -#: library/math.rst:385 +#: library/math.rst:384 msgid "" "Return ``True`` if *x* is a NaN (not a number), and ``False`` otherwise." msgstr "" -#: library/math.rst:390 +#: library/math.rst:389 msgid "" "Return ``x * (2**i)``. This is essentially the inverse of function :func:" "`frexp`." msgstr "" -#: library/math.rst:396 +#: library/math.rst:395 msgid "Return the floating-point value *steps* steps after *x* towards *y*." msgstr "" -#: library/math.rst:398 +#: library/math.rst:397 msgid "If *x* is equal to *y*, return *y*, unless *steps* is zero." msgstr "" -#: library/math.rst:400 +#: library/math.rst:399 msgid "Examples:" msgstr "" -#: library/math.rst:402 +#: library/math.rst:401 msgid "``math.nextafter(x, math.inf)`` goes up: towards positive infinity." msgstr "" -#: library/math.rst:403 +#: library/math.rst:402 msgid "``math.nextafter(x, -math.inf)`` goes down: towards minus infinity." msgstr "" -#: library/math.rst:404 +#: library/math.rst:403 msgid "``math.nextafter(x, 0.0)`` goes towards zero." msgstr "" -#: library/math.rst:405 +#: library/math.rst:404 msgid "``math.nextafter(x, math.copysign(math.inf, x))`` goes away from zero." msgstr "" -#: library/math.rst:407 +#: library/math.rst:406 msgid "See also :func:`math.ulp`." msgstr "" -#: library/math.rst:411 +#: library/math.rst:410 msgid "Added the *steps* argument." msgstr "" -#: library/math.rst:417 +#: library/math.rst:416 msgid "Return the value of the least significant bit of the float *x*:" msgstr "" -#: library/math.rst:419 +#: library/math.rst:418 msgid "If *x* is a NaN (not a number), return *x*." msgstr "" -#: library/math.rst:420 +#: library/math.rst:419 msgid "If *x* is negative, return ``ulp(-x)``." msgstr "" -#: library/math.rst:421 +#: library/math.rst:420 msgid "If *x* is a positive infinity, return *x*." msgstr "" -#: library/math.rst:422 +#: library/math.rst:421 msgid "" "If *x* is equal to zero, return the smallest positive *denormalized* " "representable float (smaller than the minimum positive *normalized* float, :" "data:`sys.float_info.min `)." msgstr "" -#: library/math.rst:425 +#: library/math.rst:424 msgid "" "If *x* is equal to the largest positive representable float, return the " "value of the least significant bit of *x*, such that the first float smaller " "than *x* is ``x - ulp(x)``." msgstr "" -#: library/math.rst:428 +#: library/math.rst:427 msgid "" "Otherwise (*x* is a positive finite number), return the value of the least " "significant bit of *x*, such that the first float bigger than *x* is ``x + " "ulp(x)``." msgstr "" -#: library/math.rst:432 +#: library/math.rst:431 msgid "ULP stands for \"Unit in the Last Place\"." msgstr "" -#: library/math.rst:434 +#: library/math.rst:433 msgid "" "See also :func:`math.nextafter` and :data:`sys.float_info.epsilon `." msgstr "" -#: library/math.rst:441 +#: library/math.rst:440 msgid "Power, exponential and logarithmic functions" msgstr "" -#: library/math.rst:445 +#: library/math.rst:444 msgid "Return the cube root of *x*." msgstr "" -#: library/math.rst:452 +#: library/math.rst:451 msgid "" "Return *e* raised to the power *x*, where *e* = 2.718281... is the base of " "natural logarithms. This is usually more accurate than ``math.e ** x`` or " "``pow(math.e, x)``." msgstr "" -#: library/math.rst:459 +#: library/math.rst:458 msgid "Return *2* raised to the power *x*." msgstr "" -#: library/math.rst:466 +#: library/math.rst:465 msgid "" "Return *e* raised to the power *x*, minus 1. Here *e* is the base of " "natural logarithms. For small floats *x*, the subtraction in ``exp(x) - 1`` " @@ -1002,41 +1000,41 @@ msgid "" "compute this quantity to full precision:" msgstr "" -#: library/math.rst:483 +#: library/math.rst:482 msgid "With one argument, return the natural logarithm of *x* (to base *e*)." msgstr "" -#: library/math.rst:485 +#: library/math.rst:484 msgid "" "With two arguments, return the logarithm of *x* to the given *base*, " "calculated as ``log(x)/log(base)``." msgstr "" -#: library/math.rst:491 +#: library/math.rst:490 msgid "" "Return the natural logarithm of *1+x* (base *e*). The result is calculated " "in a way which is accurate for *x* near zero." msgstr "" -#: library/math.rst:497 +#: library/math.rst:496 msgid "" "Return the base-2 logarithm of *x*. This is usually more accurate than " "``log(x, 2)``." msgstr "" -#: library/math.rst:504 +#: library/math.rst:503 msgid "" ":meth:`int.bit_length` returns the number of bits necessary to represent an " "integer in binary, excluding the sign and leading zeros." msgstr "" -#: library/math.rst:510 +#: library/math.rst:509 msgid "" "Return the base-10 logarithm of *x*. This is usually more accurate than " "``log(x, 10)``." msgstr "" -#: library/math.rst:516 +#: library/math.rst:515 msgid "" "Return *x* raised to the power *y*. Exceptional cases follow the IEEE 754 " "standard as far as possible. In particular, ``pow(1.0, x)`` and ``pow(x, " @@ -1045,50 +1043,50 @@ msgid "" "y)`` is undefined, and raises :exc:`ValueError`." msgstr "" -#: library/math.rst:523 +#: library/math.rst:522 msgid "" "Unlike the built-in ``**`` operator, :func:`math.pow` converts both its " "arguments to type :class:`float`. Use ``**`` or the built-in :func:`pow` " "function for computing exact integer powers." msgstr "" -#: library/math.rst:527 +#: library/math.rst:526 msgid "" "The special cases ``pow(0.0, -inf)`` and ``pow(-0.0, -inf)`` were changed to " "return ``inf`` instead of raising :exc:`ValueError`, for consistency with " "IEEE 754." msgstr "" -#: library/math.rst:535 +#: library/math.rst:534 msgid "Return the square root of *x*." msgstr "" -#: library/math.rst:539 +#: library/math.rst:538 msgid "Summation and product functions" msgstr "" -#: library/math.rst:543 +#: library/math.rst:542 msgid "" "Return the Euclidean distance between two points *p* and *q*, each given as " "a sequence (or iterable) of coordinates. The two points must have the same " "dimension." msgstr "" -#: library/math.rst:608 +#: library/math.rst:607 msgid "Roughly equivalent to::" msgstr "" -#: library/math.rst:549 +#: library/math.rst:548 msgid "sqrt(sum((px - qx) ** 2.0 for px, qx in zip(p, q)))" msgstr "" -#: library/math.rst:556 +#: library/math.rst:555 msgid "" "Return an accurate floating-point sum of values in the iterable. Avoids " "loss of precision by tracking multiple intermediate partial sums." msgstr "" -#: library/math.rst:559 +#: library/math.rst:558 msgid "" "The algorithm's accuracy depends on IEEE-754 arithmetic guarantees and the " "typical case where the rounding mode is half-even. On some non-Windows " @@ -1097,7 +1095,7 @@ msgid "" "least significant bit." msgstr "" -#: library/math.rst:565 +#: library/math.rst:564 msgid "" "For further discussion and two alternative approaches, see the `ASPN " "cookbook recipes for accurate floating-point summation `_\\." msgstr "" -#: library/math.rst:572 +#: library/math.rst:571 msgid "" "Return the Euclidean norm, ``sqrt(sum(x**2 for x in coordinates))``. This is " "the length of the vector from the origin to the point given by the " "coordinates." msgstr "" -#: library/math.rst:576 +#: library/math.rst:575 msgid "" "For a two dimensional point ``(x, y)``, this is equivalent to computing the " "hypotenuse of a right triangle using the Pythagorean theorem, ``sqrt(x*x + " "y*y)``." msgstr "" -#: library/math.rst:580 +#: library/math.rst:579 msgid "" "Added support for n-dimensional points. Formerly, only the two dimensional " "case was supported." msgstr "" -#: library/math.rst:584 +#: library/math.rst:583 msgid "" "Improved the algorithm's accuracy so that the maximum error is under 1 ulp " "(unit in the last place). More typically, the result is almost always " "correctly rounded to within 1/2 ulp." msgstr "" -#: library/math.rst:592 +#: library/math.rst:591 msgid "" "Calculate the product of all the elements in the input *iterable*. The " "default *start* value for the product is ``1``." msgstr "" -#: library/math.rst:595 +#: library/math.rst:594 msgid "" "When the iterable is empty, return the start value. This function is " "intended specifically for use with numeric values and may reject non-numeric " "types." msgstr "" -#: library/math.rst:604 +#: library/math.rst:603 msgid "Return the sum of products of values from two iterables *p* and *q*." msgstr "" -#: library/math.rst:606 +#: library/math.rst:605 msgid "Raises :exc:`ValueError` if the inputs do not have the same length." msgstr "" -#: library/math.rst:610 +#: library/math.rst:609 msgid "sum(map(operator.mul, p, q, strict=True))" msgstr "" -#: library/math.rst:612 +#: library/math.rst:611 msgid "" "For float and mixed int/float inputs, the intermediate products and sums are " "computed with extended precision." msgstr "" -#: library/math.rst:619 +#: library/math.rst:618 msgid "Angular conversion" msgstr "" -#: library/math.rst:623 +#: library/math.rst:622 msgid "Convert angle *x* from radians to degrees." msgstr "" -#: library/math.rst:628 +#: library/math.rst:627 msgid "Convert angle *x* from degrees to radians." msgstr "" -#: library/math.rst:632 +#: library/math.rst:631 msgid "Trigonometric functions" msgstr "" -#: library/math.rst:636 +#: library/math.rst:635 msgid "" "Return the arc cosine of *x*, in radians. The result is between ``0`` and " "``pi``." msgstr "" -#: library/math.rst:642 +#: library/math.rst:641 msgid "" "Return the arc sine of *x*, in radians. The result is between ``-pi/2`` and " "``pi/2``." msgstr "" -#: library/math.rst:648 +#: library/math.rst:647 msgid "" "Return the arc tangent of *x*, in radians. The result is between ``-pi/2`` " "and ``pi/2``." msgstr "" -#: library/math.rst:654 +#: library/math.rst:653 msgid "" "Return ``atan(y / x)``, in radians. The result is between ``-pi`` and " "``pi``. The vector in the plane from the origin to point ``(x, y)`` makes " @@ -1207,78 +1205,78 @@ msgid "" "``pi/4``, but ``atan2(-1, -1)`` is ``-3*pi/4``." msgstr "" -#: library/math.rst:664 +#: library/math.rst:663 msgid "Return the cosine of *x* radians." msgstr "" -#: library/math.rst:669 +#: library/math.rst:668 msgid "Return the sine of *x* radians." msgstr "" -#: library/math.rst:674 +#: library/math.rst:673 msgid "Return the tangent of *x* radians." msgstr "" -#: library/math.rst:678 +#: library/math.rst:677 msgid "Hyperbolic functions" msgstr "" -#: library/math.rst:680 +#: library/math.rst:679 msgid "" "`Hyperbolic functions `_ " "are analogs of trigonometric functions that are based on hyperbolas instead " "of circles." msgstr "" -#: library/math.rst:686 +#: library/math.rst:685 msgid "Return the inverse hyperbolic cosine of *x*." msgstr "" -#: library/math.rst:691 +#: library/math.rst:690 msgid "Return the inverse hyperbolic sine of *x*." msgstr "" -#: library/math.rst:696 +#: library/math.rst:695 msgid "Return the inverse hyperbolic tangent of *x*." msgstr "" -#: library/math.rst:701 +#: library/math.rst:700 msgid "Return the hyperbolic cosine of *x*." msgstr "" -#: library/math.rst:706 +#: library/math.rst:705 msgid "Return the hyperbolic sine of *x*." msgstr "" -#: library/math.rst:711 +#: library/math.rst:710 msgid "Return the hyperbolic tangent of *x*." msgstr "" -#: library/math.rst:715 +#: library/math.rst:714 msgid "Special functions" msgstr "" -#: library/math.rst:719 +#: library/math.rst:718 msgid "" "Return the `error function `_ " "at *x*." msgstr "" -#: library/math.rst:722 +#: library/math.rst:721 msgid "" "The :func:`erf` function can be used to compute traditional statistical " "functions such as the `cumulative standard normal distribution `_::" msgstr "" -#: library/math.rst:726 +#: library/math.rst:725 msgid "" "def phi(x):\n" " 'Cumulative distribution function for the standard normal distribution'\n" " return (1.0 + erf(x / sqrt(2.0))) / 2.0" msgstr "" -#: library/math.rst:735 +#: library/math.rst:734 msgid "" "Return the complementary error function at *x*. The `complementary error " "function `_ is defined as " @@ -1287,31 +1285,31 @@ msgid "" "Loss_of_significance>`_\\." msgstr "" -#: library/math.rst:746 +#: library/math.rst:745 msgid "" "Return the `Gamma function `_ " "at *x*." msgstr "" -#: library/math.rst:754 +#: library/math.rst:753 msgid "" "Return the natural logarithm of the absolute value of the Gamma function at " "*x*." msgstr "" -#: library/math.rst:761 +#: library/math.rst:760 msgid "Constants" msgstr "" -#: library/math.rst:765 +#: library/math.rst:764 msgid "The mathematical constant *π* = 3.141592..., to available precision." msgstr "" -#: library/math.rst:770 +#: library/math.rst:769 msgid "The mathematical constant *e* = 2.718281..., to available precision." msgstr "" -#: library/math.rst:775 +#: library/math.rst:774 msgid "" "The mathematical constant *τ* = 6.283185..., to available precision. Tau is " "a circle constant equal to 2\\ *π*, the ratio of a circle's circumference to " @@ -1320,13 +1318,13 @@ msgid "" "celebrating `Tau day `_ by eating twice as much pie!" msgstr "" -#: library/math.rst:786 +#: library/math.rst:785 msgid "" "A floating-point positive infinity. (For negative infinity, use ``-math." "inf``.) Equivalent to the output of ``float('inf')``." msgstr "" -#: library/math.rst:794 +#: library/math.rst:793 msgid "" "A floating-point \"not a number\" (NaN) value. Equivalent to the output of " "``float('nan')``. Due to the requirements of the `IEEE-754 standard \n" "Language-Team: LANGUAGE \n" diff --git a/library/mm.po b/library/mm.po index 8bc8ed6c..614677d0 100644 --- a/library/mm.po +++ b/library/mm.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/mmap.po b/library/mmap.po index 22fc75ab..d2d43292 100644 --- a/library/mmap.po +++ b/library/mmap.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/modulefinder.po b/library/modulefinder.po index b3d27936..e6047cc0 100644 --- a/library/modulefinder.po +++ b/library/modulefinder.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/modules.po b/library/modules.po index 789843ec..41c606f0 100644 --- a/library/modules.po +++ b/library/modules.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/msilib.po b/library/msilib.po index 29da0b64..6fbf9584 100644 --- a/library/msilib.po +++ b/library/msilib.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/msvcrt.po b/library/msvcrt.po index 8e1809d6..c9c8a300 100644 --- a/library/msvcrt.po +++ b/library/msvcrt.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/multiprocessing.po b/library/multiprocessing.po index abf72f89..560fc3f8 100644 --- a/library/multiprocessing.po +++ b/library/multiprocessing.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -1470,7 +1470,7 @@ msgstr "" #: library/multiprocessing.rst:1083 msgid "" "Add support for when a program which uses :mod:`multiprocessing` has been " -"frozen to produce a Windows executable. (Has been tested with **py2exe**, " +"frozen to produce an executable. (Has been tested with **py2exe**, " "**PyInstaller** and **cx_Freeze**.)" msgstr "" @@ -1500,10 +1500,10 @@ msgstr "" #: library/multiprocessing.rst:1102 msgid "" -"Calling ``freeze_support()`` has no effect when invoked on any operating " -"system other than Windows. In addition, if the module is being run normally " -"by the Python interpreter on Windows (the program has not been frozen), then " -"``freeze_support()`` has no effect." +"Calling ``freeze_support()`` has no effect when the start method is not " +"*spawn*. In addition, if the module is being run normally by the Python " +"interpreter (the program has not been frozen), then ``freeze_support()`` has " +"no effect." msgstr "" #: library/multiprocessing.rst:1109 diff --git a/library/multiprocessing.shared_memory.po b/library/multiprocessing.shared_memory.po index 9098d8f5..eb348c3d 100644 --- a/library/multiprocessing.shared_memory.po +++ b/library/multiprocessing.shared_memory.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/netdata.po b/library/netdata.po index 940631bc..fae570bb 100644 --- a/library/netdata.po +++ b/library/netdata.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/netrc.po b/library/netrc.po index fe25dd99..2b3343af 100644 --- a/library/netrc.po +++ b/library/netrc.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/nis.po b/library/nis.po index d0444650..bceb80f9 100644 --- a/library/nis.po +++ b/library/nis.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/nntplib.po b/library/nntplib.po index 1f94966f..9a7ec032 100644 --- a/library/nntplib.po +++ b/library/nntplib.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/numbers.po b/library/numbers.po index bcba1c53..0d4689f4 100644 --- a/library/numbers.po +++ b/library/numbers.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/numeric.po b/library/numeric.po index 76702ebc..7a9a9929 100644 --- a/library/numeric.po +++ b/library/numeric.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Loukas Sakellaridis \n" "Language-Team: PyGreece \n" diff --git a/library/operator.po b/library/operator.po index 91a102c5..a989145a 100644 --- a/library/operator.po +++ b/library/operator.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/optparse.po b/library/optparse.po index 716f93c5..7879232e 100644 --- a/library/optparse.po +++ b/library/optparse.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/os.path.po b/library/os.path.po index 251bfa59..a4acaba2 100644 --- a/library/os.path.po +++ b/library/os.path.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -91,8 +91,8 @@ msgstr "" #: library/os.path.rst:76 library/os.path.rst:126 library/os.path.rst:152 #: library/os.path.rst:198 library/os.path.rst:227 library/os.path.rst:246 #: library/os.path.rst:270 library/os.path.rst:308 library/os.path.rst:400 -#: library/os.path.rst:443 library/os.path.rst:470 library/os.path.rst:500 -#: library/os.path.rst:589 +#: library/os.path.rst:469 library/os.path.rst:496 library/os.path.rst:526 +#: library/os.path.rst:615 msgid "Accepts a :term:`path-like object`." msgstr "" @@ -417,33 +417,71 @@ msgstr "" #: library/os.path.rst:411 msgid "" -"If a path doesn't exist or a symlink loop is encountered, and *strict* is " -"``True``, :exc:`OSError` is raised. If *strict* is ``False`` these errors " -"are ignored, and so the result might be missing or otherwise inaccessible." +"By default, the path is evaluated up to the first component that does not " +"exist, is a symlink loop, or whose evaluation raises :exc:`OSError`. All " +"such components are appended unchanged to the existing part of the path." msgstr "" -#: library/os.path.rst:416 +#: library/os.path.rst:415 +msgid "" +"Some errors that are handled this way include \"access denied\", \"not a " +"directory\", or \"bad argument to internal function\". Thus, the resulting " +"path may be missing or inaccessible, may still contain links or loops, and " +"may traverse non-directories." +msgstr "" + +#: library/os.path.rst:420 +msgid "This behavior can be modified by keyword arguments:" +msgstr "" + +#: library/os.path.rst:422 +msgid "" +"If *strict* is ``True``, the first error encountered when evaluating the " +"path is re-raised. In particular, :exc:`FileNotFoundError` is raised if " +"*path* does not exist, or another :exc:`OSError` if it is otherwise " +"inaccessible." +msgstr "" + +#: library/os.path.rst:427 +msgid "" +"If *strict* is :py:data:`os.path.ALLOW_MISSING`, errors other than :exc:" +"`FileNotFoundError` are re-raised (as with ``strict=True``). Thus, the " +"returned path will not contain any symbolic links, but the named file and " +"some of its parent directories may be missing." +msgstr "" + +#: library/os.path.rst:433 msgid "" "This function emulates the operating system's procedure for making a path " "canonical, which differs slightly between Windows and UNIX with respect to " "how links and subsequent path components interact." msgstr "" -#: library/os.path.rst:420 +#: library/os.path.rst:437 msgid "" "Operating system APIs make paths canonical as needed, so it's not normally " "necessary to call this function." msgstr "" -#: library/os.path.rst:426 +#: library/os.path.rst:443 msgid "Symbolic links and junctions are now resolved on Windows." msgstr "" -#: library/os.path.rst:429 +#: library/os.path.rst:446 msgid "The *strict* parameter was added." msgstr "" -#: library/os.path.rst:435 +#: library/os.path.rst:449 +msgid "" +"The :py:data:`~os.path.ALLOW_MISSING` value for the *strict* parameter was " +"added." +msgstr "" + +#: library/os.path.rst:455 +msgid "Special value used for the *strict* argument in :func:`realpath`." +msgstr "" + +#: library/os.path.rst:461 msgid "" "Return a relative filepath to *path* either from the current directory or " "from an optional *start* directory. This is a path computation: the " @@ -452,32 +490,32 @@ msgid "" "are on different drives." msgstr "" -#: library/os.path.rst:441 +#: library/os.path.rst:467 msgid "*start* defaults to :data:`os.curdir`." msgstr "" -#: library/os.path.rst:449 +#: library/os.path.rst:475 msgid "" "Return ``True`` if both pathname arguments refer to the same file or " "directory. This is determined by the device number and i-node number and " "raises an exception if an :func:`os.stat` call on either pathname fails." msgstr "" -#: library/os.path.rst:467 library/os.path.rst:481 +#: library/os.path.rst:493 library/os.path.rst:507 msgid "Added Windows support." msgstr "" -#: library/os.path.rst:456 +#: library/os.path.rst:482 msgid "Windows now uses the same implementation as all other platforms." msgstr "" -#: library/os.path.rst:465 +#: library/os.path.rst:491 msgid "" "Return ``True`` if the file descriptors *fp1* and *fp2* refer to the same " "file." msgstr "" -#: library/os.path.rst:476 +#: library/os.path.rst:502 msgid "" "Return ``True`` if the stat tuples *stat1* and *stat2* refer to the same " "file. These structures may have been returned by :func:`os.fstat`, :func:`os." @@ -485,7 +523,7 @@ msgid "" "comparison used by :func:`samefile` and :func:`sameopenfile`." msgstr "" -#: library/os.path.rst:490 +#: library/os.path.rst:516 msgid "" "Split the pathname *path* into a pair, ``(head, tail)`` where *tail* is the " "last pathname component and *head* is everything leading up to that. The " @@ -498,7 +536,7 @@ msgid "" "and :func:`basename`." msgstr "" -#: library/os.path.rst:506 +#: library/os.path.rst:532 msgid "" "Split the pathname *path* into a pair ``(drive, tail)`` where *drive* is " "either a mount point or the empty string. On systems which do not use drive " @@ -506,35 +544,35 @@ msgid "" "``drive + tail`` will be the same as *path*." msgstr "" -#: library/os.path.rst:511 +#: library/os.path.rst:537 msgid "" "On Windows, splits a pathname into drive/UNC sharepoint and relative path." msgstr "" -#: library/os.path.rst:513 +#: library/os.path.rst:539 msgid "" "If the path contains a drive letter, drive will contain everything up to and " "including the colon::" msgstr "" -#: library/os.path.rst:516 +#: library/os.path.rst:542 msgid "" ">>> splitdrive(\"c:/dir\")\n" "(\"c:\", \"/dir\")" msgstr "" -#: library/os.path.rst:519 +#: library/os.path.rst:545 msgid "" "If the path contains a UNC path, drive will contain the host name and share::" msgstr "" -#: library/os.path.rst:522 +#: library/os.path.rst:548 msgid "" ">>> splitdrive(\"//host/computer/dir\")\n" "(\"//host/computer\", \"/dir\")" msgstr "" -#: library/os.path.rst:531 +#: library/os.path.rst:557 msgid "" "Split the pathname *path* into a 3-item tuple ``(drive, root, tail)`` where " "*drive* is a device name or mount point, *root* is a string of separators " @@ -543,7 +581,7 @@ msgid "" "same as *path*." msgstr "" -#: library/os.path.rst:537 +#: library/os.path.rst:563 msgid "" "On POSIX systems, *drive* is always empty. The *root* may be empty (if " "*path* is relative), a single forward slash (if *path* is absolute), or two " @@ -552,7 +590,7 @@ msgid "" "basedefs/V1_chap04.html#tag_04_13>`_.) For example::" msgstr "" -#: library/os.path.rst:543 +#: library/os.path.rst:569 msgid "" ">>> splitroot('/home/sam')\n" "('', '/', 'home/sam')\n" @@ -562,14 +600,14 @@ msgid "" "('', '/', '//home/sam')" msgstr "" -#: library/os.path.rst:550 +#: library/os.path.rst:576 msgid "" "On Windows, *drive* may be empty, a drive-letter name, a UNC share, or a " "device name. The *root* may be empty, a forward slash, or a backward slash. " "For example::" msgstr "" -#: library/os.path.rst:554 +#: library/os.path.rst:580 msgid "" ">>> splitroot('C:/Users/Sam')\n" "('C:', '/', 'Users/Sam')\n" @@ -577,30 +615,30 @@ msgid "" "('//Server/Share', '/', 'Users/Sam')" msgstr "" -#: library/os.path.rst:564 +#: library/os.path.rst:590 msgid "" "Split the pathname *path* into a pair ``(root, ext)`` such that ``root + " "ext == path``, and the extension, *ext*, is empty or begins with a period " "and contains at most one period." msgstr "" -#: library/os.path.rst:568 +#: library/os.path.rst:594 msgid "If the path contains no extension, *ext* will be ``''``::" msgstr "" -#: library/os.path.rst:570 +#: library/os.path.rst:596 msgid "" ">>> splitext('bar')\n" "('bar', '')" msgstr "" -#: library/os.path.rst:573 +#: library/os.path.rst:599 msgid "" "If the path contains an extension, then *ext* will be set to this extension, " "including the leading period. Note that previous periods will be ignored::" msgstr "" -#: library/os.path.rst:576 +#: library/os.path.rst:602 msgid "" ">>> splitext('foo.bar.exe')\n" "('foo.bar', '.exe')\n" @@ -608,13 +646,13 @@ msgid "" "('/foo/bar', '.exe')" msgstr "" -#: library/os.path.rst:581 +#: library/os.path.rst:607 msgid "" "Leading periods of the last component of the path are considered to be part " "of the root::" msgstr "" -#: library/os.path.rst:584 +#: library/os.path.rst:610 msgid "" ">>> splitext('.cshrc')\n" "('.cshrc', '')\n" @@ -622,7 +660,7 @@ msgid "" "('/foo/....jpg', '')" msgstr "" -#: library/os.path.rst:595 +#: library/os.path.rst:621 msgid "" "``True`` if arbitrary Unicode strings can be used as file names (within " "limitations imposed by the file system)." diff --git a/library/os.po b/library/os.po index f0f1a7ab..e1fc73c3 100644 --- a/library/os.po +++ b/library/os.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/ossaudiodev.po b/library/ossaudiodev.po index e3733249..7a0f3d37 100644 --- a/library/ossaudiodev.po +++ b/library/ossaudiodev.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/pathlib.po b/library/pathlib.po index 4f6bf4df..88a212c9 100644 --- a/library/pathlib.po +++ b/library/pathlib.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -2236,135 +2236,141 @@ msgid "``[seq]``" msgstr "" #: library/pathlib.rst:1784 -msgid "Matches one character in *seq*." +msgid "" +"Matches one character in *seq*, where *seq* is a sequence of characters. " +"Range expressions are supported; for example, ``[a-z]`` matches any " +"lowercase ASCII letter. Multiple ranges can be combined: ``[a-zA-Z0-9_]`` " +"matches any ASCII letter, digit, or underscore." msgstr "" -#: library/pathlib.rst:1785 +#: library/pathlib.rst:1788 msgid "``[!seq]``" msgstr "" -#: library/pathlib.rst:1786 -msgid "Matches one character not in *seq*." +#: library/pathlib.rst:1789 +msgid "" +"Matches one character not in *seq*, where *seq* follows the same rules as " +"above." msgstr "" -#: library/pathlib.rst:1788 +#: library/pathlib.rst:1791 msgid "" "For a literal match, wrap the meta-characters in brackets. For example, " "``\"[?]\"`` matches the character ``\"?\"``." msgstr "" -#: library/pathlib.rst:1791 +#: library/pathlib.rst:1794 msgid "The \"``**``\" wildcard enables recursive globbing. A few examples:" msgstr "" -#: library/pathlib.rst:1794 +#: library/pathlib.rst:1797 msgid "Pattern" msgstr "" -#: library/pathlib.rst:1794 +#: library/pathlib.rst:1797 msgid "Meaning" msgstr "" -#: library/pathlib.rst:1796 +#: library/pathlib.rst:1799 msgid "\"``**/*``\"" msgstr "" -#: library/pathlib.rst:1796 +#: library/pathlib.rst:1799 msgid "Any path with at least one segment." msgstr "" -#: library/pathlib.rst:1797 +#: library/pathlib.rst:1800 msgid "\"``**/*.py``\"" msgstr "" -#: library/pathlib.rst:1797 +#: library/pathlib.rst:1800 msgid "Any path with a final segment ending \"``.py``\"." msgstr "" -#: library/pathlib.rst:1798 +#: library/pathlib.rst:1801 msgid "\"``assets/**``\"" msgstr "" -#: library/pathlib.rst:1798 +#: library/pathlib.rst:1801 msgid "Any path starting with \"``assets/``\"." msgstr "" -#: library/pathlib.rst:1799 +#: library/pathlib.rst:1802 msgid "\"``assets/**/*``\"" msgstr "" -#: library/pathlib.rst:1799 +#: library/pathlib.rst:1802 msgid "" "Any path starting with \"``assets/``\", excluding \"``assets/``\" itself." msgstr "" -#: library/pathlib.rst:1803 +#: library/pathlib.rst:1806 msgid "" "Globbing with the \"``**``\" wildcard visits every directory in the tree. " "Large directory trees may take a long time to search." msgstr "" -#: library/pathlib.rst:1806 +#: library/pathlib.rst:1809 msgid "" "Globbing with a pattern that ends with \"``**``\" returns both files and " "directories. In previous versions, only directories were returned." msgstr "" -#: library/pathlib.rst:1810 +#: library/pathlib.rst:1813 msgid "" "In :meth:`Path.glob` and :meth:`~Path.rglob`, a trailing slash may be added " "to the pattern to match only directories." msgstr "" -#: library/pathlib.rst:1813 +#: library/pathlib.rst:1816 msgid "" "Globbing with a pattern that ends with a pathname components separator (:" "data:`~os.sep` or :data:`~os.altsep`) returns only directories." msgstr "" -#: library/pathlib.rst:1819 +#: library/pathlib.rst:1822 msgid "Comparison to the :mod:`glob` module" msgstr "" -#: library/pathlib.rst:1821 +#: library/pathlib.rst:1824 msgid "" "The patterns accepted and results generated by :meth:`Path.glob` and :meth:" "`Path.rglob` differ slightly from those by the :mod:`glob` module:" msgstr "" -#: library/pathlib.rst:1824 +#: library/pathlib.rst:1827 msgid "" "Files beginning with a dot are not special in pathlib. This is like passing " "``include_hidden=True`` to :func:`glob.glob`." msgstr "" -#: library/pathlib.rst:1826 +#: library/pathlib.rst:1829 msgid "" "\"``**``\" pattern components are always recursive in pathlib. This is like " "passing ``recursive=True`` to :func:`glob.glob`." msgstr "" -#: library/pathlib.rst:1828 +#: library/pathlib.rst:1831 msgid "" "\"``**``\" pattern components do not follow symlinks by default in pathlib. " "This behaviour has no equivalent in :func:`glob.glob`, but you can pass " "``recurse_symlinks=True`` to :meth:`Path.glob` for compatible behaviour." msgstr "" -#: library/pathlib.rst:1831 +#: library/pathlib.rst:1834 msgid "" "Like all :class:`PurePath` and :class:`Path` objects, the values returned " "from :meth:`Path.glob` and :meth:`Path.rglob` don't include trailing slashes." msgstr "" -#: library/pathlib.rst:1834 +#: library/pathlib.rst:1837 msgid "" "The values returned from pathlib's ``path.glob()`` and ``path.rglob()`` " "include the *path* as a prefix, unlike the results of ``glob." "glob(root_dir=path)``." msgstr "" -#: library/pathlib.rst:1837 +#: library/pathlib.rst:1840 msgid "" "The values returned from pathlib's ``path.glob()`` and ``path.rglob()`` may " "include *path* itself, for example when globbing \"``**``\", whereas the " @@ -2372,11 +2378,11 @@ msgid "" "would correspond to *path*." msgstr "" -#: library/pathlib.rst:1844 +#: library/pathlib.rst:1847 msgid "Comparison to the :mod:`os` and :mod:`os.path` modules" msgstr "" -#: library/pathlib.rst:1846 +#: library/pathlib.rst:1849 msgid "" "pathlib implements path operations using :class:`PurePath` and :class:`Path` " "objects, and so it's said to be *object-oriented*. On the other hand, the :" @@ -2385,21 +2391,21 @@ msgid "" "Some users consider the object-oriented style to be more readable." msgstr "" -#: library/pathlib.rst:1852 +#: library/pathlib.rst:1855 msgid "" "Many functions in :mod:`os` and :mod:`os.path` support ``bytes`` paths and :" "ref:`paths relative to directory descriptors `. These features " "aren't available in pathlib." msgstr "" -#: library/pathlib.rst:1856 +#: library/pathlib.rst:1859 msgid "" "Python's ``str`` and ``bytes`` types, and portions of the :mod:`os` and :mod:" "`os.path` modules, are written in C and are very speedy. pathlib is written " "in pure Python and is often slower, but rarely slow enough to matter." msgstr "" -#: library/pathlib.rst:1860 +#: library/pathlib.rst:1863 msgid "" "pathlib's path normalization is slightly more opinionated and consistent " "than :mod:`os.path`. For example, whereas :func:`os.path.abspath` eliminates " @@ -2408,12 +2414,12 @@ msgid "" "safety." msgstr "" -#: library/pathlib.rst:1865 +#: library/pathlib.rst:1868 msgid "" "pathlib's path normalization may render it unsuitable for some applications:" msgstr "" -#: library/pathlib.rst:1867 +#: library/pathlib.rst:1870 msgid "" "pathlib normalizes ``Path(\"my_folder/\")`` to ``Path(\"my_folder\")``, " "which changes a path's meaning when supplied to various operating system " @@ -2422,7 +2428,7 @@ msgid "" "rather than a directory only." msgstr "" -#: library/pathlib.rst:1872 +#: library/pathlib.rst:1875 msgid "" "pathlib normalizes ``Path(\"./my_program\")`` to ``Path(\"my_program\")``, " "which changes a path's meaning when used as an executable search path, such " @@ -2431,283 +2437,283 @@ msgid "" "rather than the current directory." msgstr "" -#: library/pathlib.rst:1878 +#: library/pathlib.rst:1881 msgid "" "As a consequence of these differences, pathlib is not a drop-in replacement " "for :mod:`os.path`." msgstr "" -#: library/pathlib.rst:1883 +#: library/pathlib.rst:1886 msgid "Corresponding tools" msgstr "" -#: library/pathlib.rst:1885 +#: library/pathlib.rst:1888 msgid "" "Below is a table mapping various :mod:`os` functions to their corresponding :" "class:`PurePath`/:class:`Path` equivalent." msgstr "" -#: library/pathlib.rst:1889 +#: library/pathlib.rst:1892 msgid ":mod:`os` and :mod:`os.path`" msgstr "" -#: library/pathlib.rst:1889 +#: library/pathlib.rst:1892 msgid ":mod:`pathlib`" msgstr "" -#: library/pathlib.rst:1891 +#: library/pathlib.rst:1894 msgid ":func:`os.path.dirname`" msgstr "" -#: library/pathlib.rst:1891 +#: library/pathlib.rst:1894 msgid ":attr:`PurePath.parent`" msgstr "" -#: library/pathlib.rst:1892 +#: library/pathlib.rst:1895 msgid ":func:`os.path.basename`" msgstr "" -#: library/pathlib.rst:1892 +#: library/pathlib.rst:1895 msgid ":attr:`PurePath.name`" msgstr "" -#: library/pathlib.rst:1893 +#: library/pathlib.rst:1896 msgid ":func:`os.path.splitext`" msgstr "" -#: library/pathlib.rst:1893 +#: library/pathlib.rst:1896 msgid ":attr:`PurePath.stem`, :attr:`PurePath.suffix`" msgstr "" -#: library/pathlib.rst:1894 +#: library/pathlib.rst:1897 msgid ":func:`os.path.join`" msgstr "" -#: library/pathlib.rst:1894 +#: library/pathlib.rst:1897 msgid ":meth:`PurePath.joinpath`" msgstr "" -#: library/pathlib.rst:1895 +#: library/pathlib.rst:1898 msgid ":func:`os.path.isabs`" msgstr "" -#: library/pathlib.rst:1895 +#: library/pathlib.rst:1898 msgid ":meth:`PurePath.is_absolute`" msgstr "" -#: library/pathlib.rst:1896 +#: library/pathlib.rst:1899 msgid ":func:`os.path.relpath`" msgstr "" -#: library/pathlib.rst:1896 +#: library/pathlib.rst:1899 msgid ":meth:`PurePath.relative_to` [1]_" msgstr "" -#: library/pathlib.rst:1897 +#: library/pathlib.rst:1900 msgid ":func:`os.path.expanduser`" msgstr "" -#: library/pathlib.rst:1897 +#: library/pathlib.rst:1900 msgid ":meth:`Path.expanduser` [2]_" msgstr "" -#: library/pathlib.rst:1898 +#: library/pathlib.rst:1901 msgid ":func:`os.path.realpath`" msgstr "" -#: library/pathlib.rst:1898 +#: library/pathlib.rst:1901 msgid ":meth:`Path.resolve`" msgstr "" -#: library/pathlib.rst:1899 +#: library/pathlib.rst:1902 msgid ":func:`os.path.abspath`" msgstr "" -#: library/pathlib.rst:1899 +#: library/pathlib.rst:1902 msgid ":meth:`Path.absolute` [3]_" msgstr "" -#: library/pathlib.rst:1900 +#: library/pathlib.rst:1903 msgid ":func:`os.path.exists`" msgstr "" -#: library/pathlib.rst:1900 +#: library/pathlib.rst:1903 msgid ":meth:`Path.exists`" msgstr "" -#: library/pathlib.rst:1901 +#: library/pathlib.rst:1904 msgid ":func:`os.path.isfile`" msgstr "" -#: library/pathlib.rst:1901 +#: library/pathlib.rst:1904 msgid ":meth:`Path.is_file`" msgstr "" -#: library/pathlib.rst:1902 +#: library/pathlib.rst:1905 msgid ":func:`os.path.isdir`" msgstr "" -#: library/pathlib.rst:1902 +#: library/pathlib.rst:1905 msgid ":meth:`Path.is_dir`" msgstr "" -#: library/pathlib.rst:1903 +#: library/pathlib.rst:1906 msgid ":func:`os.path.islink`" msgstr "" -#: library/pathlib.rst:1903 +#: library/pathlib.rst:1906 msgid ":meth:`Path.is_symlink`" msgstr "" -#: library/pathlib.rst:1904 +#: library/pathlib.rst:1907 msgid ":func:`os.path.isjunction`" msgstr "" -#: library/pathlib.rst:1904 +#: library/pathlib.rst:1907 msgid ":meth:`Path.is_junction`" msgstr "" -#: library/pathlib.rst:1905 +#: library/pathlib.rst:1908 msgid ":func:`os.path.ismount`" msgstr "" -#: library/pathlib.rst:1905 +#: library/pathlib.rst:1908 msgid ":meth:`Path.is_mount`" msgstr "" -#: library/pathlib.rst:1906 +#: library/pathlib.rst:1909 msgid ":func:`os.path.samefile`" msgstr "" -#: library/pathlib.rst:1906 +#: library/pathlib.rst:1909 msgid ":meth:`Path.samefile`" msgstr "" -#: library/pathlib.rst:1907 +#: library/pathlib.rst:1910 msgid ":func:`os.getcwd`" msgstr "" -#: library/pathlib.rst:1907 +#: library/pathlib.rst:1910 msgid ":meth:`Path.cwd`" msgstr "" -#: library/pathlib.rst:1908 +#: library/pathlib.rst:1911 msgid ":func:`os.stat`" msgstr "" -#: library/pathlib.rst:1908 +#: library/pathlib.rst:1911 msgid ":meth:`Path.stat`" msgstr "" -#: library/pathlib.rst:1909 +#: library/pathlib.rst:1912 msgid ":func:`os.lstat`" msgstr "" -#: library/pathlib.rst:1909 +#: library/pathlib.rst:1912 msgid ":meth:`Path.lstat`" msgstr "" -#: library/pathlib.rst:1910 +#: library/pathlib.rst:1913 msgid ":func:`os.listdir`" msgstr "" -#: library/pathlib.rst:1910 +#: library/pathlib.rst:1913 msgid ":meth:`Path.iterdir`" msgstr "" -#: library/pathlib.rst:1911 +#: library/pathlib.rst:1914 msgid ":func:`os.walk`" msgstr "" -#: library/pathlib.rst:1911 +#: library/pathlib.rst:1914 msgid ":meth:`Path.walk` [4]_" msgstr "" -#: library/pathlib.rst:1912 +#: library/pathlib.rst:1915 msgid ":func:`os.mkdir`, :func:`os.makedirs`" msgstr "" -#: library/pathlib.rst:1912 +#: library/pathlib.rst:1915 msgid ":meth:`Path.mkdir`" msgstr "" -#: library/pathlib.rst:1913 +#: library/pathlib.rst:1916 msgid ":func:`os.link`" msgstr "" -#: library/pathlib.rst:1913 +#: library/pathlib.rst:1916 msgid ":meth:`Path.hardlink_to`" msgstr "" -#: library/pathlib.rst:1914 +#: library/pathlib.rst:1917 msgid ":func:`os.symlink`" msgstr "" -#: library/pathlib.rst:1914 +#: library/pathlib.rst:1917 msgid ":meth:`Path.symlink_to`" msgstr "" -#: library/pathlib.rst:1915 +#: library/pathlib.rst:1918 msgid ":func:`os.readlink`" msgstr "" -#: library/pathlib.rst:1915 +#: library/pathlib.rst:1918 msgid ":meth:`Path.readlink`" msgstr "" -#: library/pathlib.rst:1916 +#: library/pathlib.rst:1919 msgid ":func:`os.rename`" msgstr "" -#: library/pathlib.rst:1916 +#: library/pathlib.rst:1919 msgid ":meth:`Path.rename`" msgstr "" -#: library/pathlib.rst:1917 +#: library/pathlib.rst:1920 msgid ":func:`os.replace`" msgstr "" -#: library/pathlib.rst:1917 +#: library/pathlib.rst:1920 msgid ":meth:`Path.replace`" msgstr "" -#: library/pathlib.rst:1918 +#: library/pathlib.rst:1921 msgid ":func:`os.remove`, :func:`os.unlink`" msgstr "" -#: library/pathlib.rst:1918 +#: library/pathlib.rst:1921 msgid ":meth:`Path.unlink`" msgstr "" -#: library/pathlib.rst:1919 +#: library/pathlib.rst:1922 msgid ":func:`os.rmdir`" msgstr "" -#: library/pathlib.rst:1919 +#: library/pathlib.rst:1922 msgid ":meth:`Path.rmdir`" msgstr "" -#: library/pathlib.rst:1920 +#: library/pathlib.rst:1923 msgid ":func:`os.chmod`" msgstr "" -#: library/pathlib.rst:1920 +#: library/pathlib.rst:1923 msgid ":meth:`Path.chmod`" msgstr "" -#: library/pathlib.rst:1921 +#: library/pathlib.rst:1924 msgid ":func:`os.lchmod`" msgstr "" -#: library/pathlib.rst:1921 +#: library/pathlib.rst:1924 msgid ":meth:`Path.lchmod`" msgstr "" -#: library/pathlib.rst:1925 +#: library/pathlib.rst:1928 msgid "Footnotes" msgstr "" -#: library/pathlib.rst:1926 +#: library/pathlib.rst:1929 msgid "" ":func:`os.path.relpath` calls :func:`~os.path.abspath` to make paths " "absolute and remove \"``..``\" parts, whereas :meth:`PurePath.relative_to` " @@ -2715,84 +2721,84 @@ msgid "" "anchors differ (e.g. if one path is absolute and the other relative.)" msgstr "" -#: library/pathlib.rst:1930 +#: library/pathlib.rst:1933 msgid "" ":func:`os.path.expanduser` returns the path unchanged if the home directory " "can't be resolved, whereas :meth:`Path.expanduser` raises :exc:" "`RuntimeError`." msgstr "" -#: library/pathlib.rst:1933 +#: library/pathlib.rst:1936 msgid "" ":func:`os.path.abspath` removes \"``..``\" components without resolving " "symlinks, which may change the meaning of the path, whereas :meth:`Path." "absolute` leaves any \"``..``\" components in the path." msgstr "" -#: library/pathlib.rst:1936 +#: library/pathlib.rst:1939 msgid "" ":func:`os.walk` always follows symlinks when categorizing paths into " "*dirnames* and *filenames*, whereas :meth:`Path.walk` categorizes all " "symlinks into *filenames* when *follow_symlinks* is false (the default.)" msgstr "" -#: library/pathlib.rst:1942 +#: library/pathlib.rst:1945 msgid "Protocols" msgstr "" -#: library/pathlib.rst:1948 +#: library/pathlib.rst:1951 msgid "" "The :mod:`pathlib.types` module provides types for static type checking." msgstr "" -#: library/pathlib.rst:1955 +#: library/pathlib.rst:1958 msgid "" "A :class:`typing.Protocol` describing the :attr:`Path.info ` attribute. Implementations may return cached results from their " "methods." msgstr "" -#: library/pathlib.rst:1961 +#: library/pathlib.rst:1964 msgid "" "Return ``True`` if the path is an existing file or directory, or any other " "kind of file; return ``False`` if the path doesn't exist." msgstr "" -#: library/pathlib.rst:1964 +#: library/pathlib.rst:1967 msgid "" "If *follow_symlinks* is ``False``, return ``True`` for symlinks without " "checking if their targets exist." msgstr "" -#: library/pathlib.rst:1969 +#: library/pathlib.rst:1972 msgid "" "Return ``True`` if the path is a directory, or a symbolic link pointing to a " "directory; return ``False`` if the path is (or points to) any other kind of " "file, or if it doesn't exist." msgstr "" -#: library/pathlib.rst:1973 +#: library/pathlib.rst:1976 msgid "" "If *follow_symlinks* is ``False``, return ``True`` only if the path is a " "directory (without following symlinks); return ``False`` if the path is any " "other kind of file, or if it doesn't exist." msgstr "" -#: library/pathlib.rst:1979 +#: library/pathlib.rst:1982 msgid "" "Return ``True`` if the path is a file, or a symbolic link pointing to a " "file; return ``False`` if the path is (or points to) a directory or other " "non-file, or if it doesn't exist." msgstr "" -#: library/pathlib.rst:1983 +#: library/pathlib.rst:1986 msgid "" "If *follow_symlinks* is ``False``, return ``True`` only if the path is a " "file (without following symlinks); return ``False`` if the path is a " "directory or other other non-file, or if it doesn't exist." msgstr "" -#: library/pathlib.rst:1989 +#: library/pathlib.rst:1992 msgid "" "Return ``True`` if the path is a symbolic link (even if broken); return " "``False`` if the path is a directory or any kind of file, or if it doesn't " diff --git a/library/pdb.po b/library/pdb.po index 7e0cbab6..1eb9a4c1 100644 --- a/library/pdb.po +++ b/library/pdb.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -130,7 +130,7 @@ msgid "" msgstr "" #: library/pdb.rst:83 -msgid "python -m pdb [-c command] (-m module | pyfile) [args ...]" +msgid "python -m pdb [-c command] (-m module | -p pid | pyfile) [args ...]" msgstr "" #: library/pdb.rst:85 @@ -162,11 +162,32 @@ msgstr "" msgid "Added the ``-m`` option." msgstr "" -#: library/pdb.rst:107 +#: library/pdb.rst:109 +msgid "Attach to the process with the specified PID." +msgstr "" + +#: library/pdb.rst:114 +msgid "" +"To attach to a running Python process for remote debugging, use the ``-p`` " +"or ``--pid`` option with the target process's PID::" +msgstr "" + +#: library/pdb.rst:117 +msgid "python -m pdb -p 1234" +msgstr "" + +#: library/pdb.rst:121 +msgid "" +"Attaching to a process that is blocked in a system call or waiting for I/O " +"will only work once the next bytecode instruction is executed or when the " +"process receives a signal." +msgstr "" + +#: library/pdb.rst:125 msgid "Typical usage to execute a statement under control of the debugger is::" msgstr "" -#: library/pdb.rst:109 +#: library/pdb.rst:127 msgid "" ">>> import pdb\n" ">>> def f(x):\n" @@ -178,11 +199,11 @@ msgid "" ">>>" msgstr "" -#: library/pdb.rst:118 +#: library/pdb.rst:136 msgid "The typical usage to inspect a crashed program is::" msgstr "" -#: library/pdb.rst:120 +#: library/pdb.rst:138 msgid "" ">>> import pdb\n" ">>> def f(x):\n" @@ -200,20 +221,20 @@ msgid "" "(Pdb)" msgstr "" -#: library/pdb.rst:135 +#: library/pdb.rst:153 msgid "" "The implementation of :pep:`667` means that name assignments made via " "``pdb`` will immediately affect the active scope, even when running inside " "an :term:`optimized scope`." msgstr "" -#: library/pdb.rst:141 +#: library/pdb.rst:159 msgid "" "The module defines the following functions; each enters the debugger in a " "slightly different way:" msgstr "" -#: library/pdb.rst:146 +#: library/pdb.rst:164 msgid "" "Execute the *statement* (given as a string or a code object) under debugger " "control. The debugger prompt appears before any code is executed; you can " @@ -225,14 +246,14 @@ msgid "" "`exec` or :func:`eval` functions.)" msgstr "" -#: library/pdb.rst:158 +#: library/pdb.rst:176 msgid "" "Evaluate the *expression* (given as a string or a code object) under " "debugger control. When :func:`runeval` returns, it returns the value of the " "*expression*. Otherwise this function is similar to :func:`run`." msgstr "" -#: library/pdb.rst:165 +#: library/pdb.rst:183 msgid "" "Call the *function* (a function or method object, not a string) with the " "given arguments. When :func:`runcall` returns, it returns whatever the " @@ -240,7 +261,7 @@ msgid "" "is entered." msgstr "" -#: library/pdb.rst:173 +#: library/pdb.rst:191 msgid "" "Enter the debugger at the calling stack frame. This is useful to hard-code " "a breakpoint at a given point in a program, even if the code is not " @@ -250,55 +271,55 @@ msgid "" "starts." msgstr "" -#: library/pdb.rst:181 +#: library/pdb.rst:199 msgid "The keyword-only argument *header*." msgstr "" -#: library/pdb.rst:184 +#: library/pdb.rst:202 msgid "" ":func:`set_trace` will enter the debugger immediately, rather than on the " "next line of code to be executed." msgstr "" -#: library/pdb.rst:188 +#: library/pdb.rst:206 msgid "The *commands* argument." msgstr "" -#: library/pdb.rst:194 +#: library/pdb.rst:212 msgid "" "async version of :func:`set_trace`. This function should be used inside an " "async function with :keyword:`await`." msgstr "" -#: library/pdb.rst:197 +#: library/pdb.rst:215 msgid "" "async def f():\n" " await pdb.set_trace_async()" msgstr "" -#: library/pdb.rst:202 +#: library/pdb.rst:220 msgid "" ":keyword:`await` statements are supported if the debugger is invoked by this " "function." msgstr "" -#: library/pdb.rst:208 +#: library/pdb.rst:226 msgid "" "Enter post-mortem debugging of the given exception or :ref:`traceback object " "`. If no value is given, it uses the exception that is " "currently being handled, or raises ``ValueError`` if there isn’t one." msgstr "" -#: library/pdb.rst:213 +#: library/pdb.rst:231 msgid "Support for exception objects was added." msgstr "" -#: library/pdb.rst:218 +#: library/pdb.rst:236 msgid "" "Enter post-mortem debugging of the exception found in :data:`sys.last_exc`." msgstr "" -#: library/pdb.rst:223 +#: library/pdb.rst:241 msgid "" "There are two supported backends for pdb: ``'settrace'`` and " "``'monitoring'``. See :class:`bdb.Bdb` for details. The user can set the " @@ -306,41 +327,41 @@ msgid "" "If no backend is specified, the default is ``'settrace'``." msgstr "" -#: library/pdb.rst:230 +#: library/pdb.rst:248 msgid "" ":func:`breakpoint` and :func:`set_trace` will not be affected by this " "function. They always use ``'monitoring'`` backend." msgstr "" -#: library/pdb.rst:237 +#: library/pdb.rst:255 msgid "Returns the default backend for pdb." msgstr "" -#: library/pdb.rst:241 +#: library/pdb.rst:259 msgid "" "The ``run*`` functions and :func:`set_trace` are aliases for instantiating " "the :class:`Pdb` class and calling the method of the same name. If you want " "to access further features, you have to do this yourself:" msgstr "" -#: library/pdb.rst:248 +#: library/pdb.rst:266 msgid ":class:`Pdb` is the debugger class." msgstr "" -#: library/pdb.rst:250 +#: library/pdb.rst:268 msgid "" "The *completekey*, *stdin* and *stdout* arguments are passed to the " "underlying :class:`cmd.Cmd` class; see the description there." msgstr "" -#: library/pdb.rst:253 +#: library/pdb.rst:271 msgid "" "The *skip* argument, if given, must be an iterable of glob-style module name " "patterns. The debugger will not step into frames that originate in a module " "that matches one of these patterns. [1]_" msgstr "" -#: library/pdb.rst:257 +#: library/pdb.rst:275 msgid "" "By default, Pdb sets a handler for the SIGINT signal (which is sent when the " "user presses :kbd:`Ctrl-C` on the console) when you give a :pdbcmd:" @@ -349,13 +370,13 @@ msgid "" "set *nosigint* to true." msgstr "" -#: library/pdb.rst:262 +#: library/pdb.rst:280 msgid "" "The *readrc* argument defaults to true and controls whether Pdb will load ." "pdbrc files from the filesystem." msgstr "" -#: library/pdb.rst:265 +#: library/pdb.rst:283 msgid "" "The *mode* argument specifies how the debugger was invoked. It impacts the " "workings of some debugger commands. Valid values are ``'inline'`` (used by " @@ -364,7 +385,7 @@ msgid "" "argument was added)." msgstr "" -#: library/pdb.rst:272 +#: library/pdb.rst:290 msgid "" "The *backend* argument specifies the backend to use for the debugger. If " "``None`` is passed, the default backend will be used. See :func:" @@ -372,68 +393,68 @@ msgid "" "and ``'monitoring'``." msgstr "" -#: library/pdb.rst:276 +#: library/pdb.rst:294 msgid "" "The *colorize* argument, if set to ``True``, will enable colorized output in " "the debugger, if color is supported. This will highlight source code " "displayed in pdb." msgstr "" -#: library/pdb.rst:279 +#: library/pdb.rst:297 msgid "Example call to enable tracing with *skip*::" msgstr "" -#: library/pdb.rst:281 +#: library/pdb.rst:299 msgid "import pdb; pdb.Pdb(skip=['django.*']).set_trace()" msgstr "" -#: library/pdb.rst:283 +#: library/pdb.rst:301 msgid "" "Raises an :ref:`auditing event ` ``pdb.Pdb`` with no arguments." msgstr "" -#: library/pdb.rst:285 +#: library/pdb.rst:303 msgid "Added the *skip* parameter." msgstr "" -#: library/pdb.rst:288 +#: library/pdb.rst:306 msgid "" "Added the *nosigint* parameter. Previously, a SIGINT handler was never set " "by Pdb." msgstr "" -#: library/pdb.rst:292 +#: library/pdb.rst:310 msgid "The *readrc* argument." msgstr "" -#: library/pdb.rst:295 +#: library/pdb.rst:313 msgid "Added the *mode* argument." msgstr "" -#: library/pdb.rst:298 +#: library/pdb.rst:316 msgid "Added the *backend* argument." msgstr "" -#: library/pdb.rst:301 +#: library/pdb.rst:319 msgid "Added the *colorize* argument." msgstr "" -#: library/pdb.rst:304 +#: library/pdb.rst:322 msgid "" "Inline breakpoints like :func:`breakpoint` or :func:`pdb.set_trace` will " "always stop the program at calling frame, ignoring the *skip* pattern (if " "any)." msgstr "" -#: library/pdb.rst:313 +#: library/pdb.rst:331 msgid "See the documentation for the functions explained above." msgstr "" -#: library/pdb.rst:319 +#: library/pdb.rst:337 msgid "Debugger Commands" msgstr "" -#: library/pdb.rst:321 +#: library/pdb.rst:339 msgid "" "The commands recognized by the debugger are listed below. Most commands can " "be abbreviated to one or two letters as indicated; e.g. ``h(elp)`` means " @@ -445,13 +466,13 @@ msgid "" "are separated by a vertical bar (``|``)." msgstr "" -#: library/pdb.rst:330 +#: library/pdb.rst:348 msgid "" "Entering a blank line repeats the last command entered. Exception: if the " "last command was a :pdbcmd:`list` command, the next 11 lines are listed." msgstr "" -#: library/pdb.rst:333 +#: library/pdb.rst:351 msgid "" "Commands that the debugger doesn't recognize are assumed to be Python " "statements and are executed in the context of the program being debugged. " @@ -462,20 +483,20 @@ msgid "" "is not changed." msgstr "" -#: library/pdb.rst:341 +#: library/pdb.rst:359 msgid "" "Expressions/Statements whose prefix is a pdb command are now correctly " "identified and executed." msgstr "" -#: library/pdb.rst:345 +#: library/pdb.rst:363 msgid "" "The debugger supports :ref:`aliases `. Aliases can have " "parameters which allows one a certain level of adaptability to the context " "under examination." msgstr "" -#: library/pdb.rst:349 +#: library/pdb.rst:367 msgid "" "Multiple commands may be entered on a single line, separated by ``;;``. (A " "single ``;`` is not used as it is the separator for multiple commands in a " @@ -486,7 +507,7 @@ msgid "" "\"\";\"``." msgstr "" -#: library/pdb.rst:356 +#: library/pdb.rst:374 msgid "" "To set a temporary global variable, use a *convenience variable*. A " "*convenience variable* is a variable whose name starts with ``$``. For " @@ -496,35 +517,35 @@ msgid "" "compared to using normal variables like ``foo = 1``." msgstr "" -#: library/pdb.rst:363 +#: library/pdb.rst:381 msgid "There are four preset *convenience variables*:" msgstr "" -#: library/pdb.rst:365 +#: library/pdb.rst:383 msgid "``$_frame``: the current frame you are debugging" msgstr "" -#: library/pdb.rst:366 +#: library/pdb.rst:384 msgid "``$_retval``: the return value if the frame is returning" msgstr "" -#: library/pdb.rst:367 +#: library/pdb.rst:385 msgid "``$_exception``: the exception if the frame is raising an exception" msgstr "" -#: library/pdb.rst:368 +#: library/pdb.rst:386 msgid "``$_asynctask``: the asyncio task if pdb stops in an async function" msgstr "" -#: library/pdb.rst:372 +#: library/pdb.rst:390 msgid "Added the *convenience variable* feature." msgstr "" -#: library/pdb.rst:374 +#: library/pdb.rst:392 msgid "Added the ``$_asynctask`` convenience variable." msgstr "" -#: library/pdb.rst:381 +#: library/pdb.rst:399 msgid "" "If a file :file:`.pdbrc` exists in the user's home directory or in the " "current directory, it is read with ``'utf-8'`` encoding and executed as if " @@ -534,20 +555,20 @@ msgid "" "read first and aliases defined there can be overridden by the local file." msgstr "" -#: library/pdb.rst:388 +#: library/pdb.rst:406 msgid "" ":file:`.pdbrc` can now contain commands that continue debugging, such as :" "pdbcmd:`continue` or :pdbcmd:`next`. Previously, these commands had no " "effect." msgstr "" -#: library/pdb.rst:393 +#: library/pdb.rst:411 msgid "" ":file:`.pdbrc` is now read with ``'utf-8'`` encoding. Previously, it was " "read with the system locale encoding." msgstr "" -#: library/pdb.rst:400 +#: library/pdb.rst:418 msgid "" "Without argument, print the list of available commands. With a *command* as " "argument, print help about that command. ``help pdb`` displays the full " @@ -556,7 +577,7 @@ msgid "" "the ``!`` command." msgstr "" -#: library/pdb.rst:408 +#: library/pdb.rst:426 msgid "" "Print a stack trace, with the most recent frame at the bottom. if *count* " "is 0, print the current frame entry. If *count* is negative, print the least " @@ -565,23 +586,23 @@ msgid "" "determines the context of most commands." msgstr "" -#: library/pdb.rst:414 +#: library/pdb.rst:432 msgid "*count* argument is added." msgstr "" -#: library/pdb.rst:419 +#: library/pdb.rst:437 msgid "" "Move the current frame *count* (default one) levels down in the stack trace " "(to a newer frame)." msgstr "" -#: library/pdb.rst:424 +#: library/pdb.rst:442 msgid "" "Move the current frame *count* (default one) levels up in the stack trace " "(to an older frame)." msgstr "" -#: library/pdb.rst:429 +#: library/pdb.rst:447 msgid "" "With a *lineno* argument, set a break at line *lineno* in the current file. " "The line number may be prefixed with a *filename* and a colon, to specify a " @@ -590,46 +611,46 @@ msgid "" "abspath/to/file.py``, ``relpath/file.py``, ``module`` and ``package.module``." msgstr "" -#: library/pdb.rst:436 +#: library/pdb.rst:454 msgid "" "With a *function* argument, set a break at the first executable statement " "within that function. *function* can be any expression that evaluates to a " "function in the current namespace." msgstr "" -#: library/pdb.rst:440 +#: library/pdb.rst:458 msgid "" "If a second argument is present, it is an expression which must evaluate to " "true before the breakpoint is honored." msgstr "" -#: library/pdb.rst:443 +#: library/pdb.rst:461 msgid "" "Without argument, list all breaks, including for each breakpoint, the number " "of times that breakpoint has been hit, the current ignore count, and the " "associated condition if any." msgstr "" -#: library/pdb.rst:447 +#: library/pdb.rst:465 msgid "" "Each breakpoint is assigned a number to which all the other breakpoint " "commands refer." msgstr "" -#: library/pdb.rst:452 +#: library/pdb.rst:470 msgid "" "Temporary breakpoint, which is removed automatically when it is first hit. " "The arguments are the same as for :pdbcmd:`break`." msgstr "" -#: library/pdb.rst:457 +#: library/pdb.rst:475 msgid "" "With a *filename:lineno* argument, clear all the breakpoints at this line. " "With a space separated list of breakpoint numbers, clear those breakpoints. " "Without argument, clear all breaks (but first ask confirmation)." msgstr "" -#: library/pdb.rst:463 +#: library/pdb.rst:481 msgid "" "Disable the breakpoints given as a space separated list of breakpoint " "numbers. Disabling a breakpoint means it cannot cause the program to stop " @@ -637,11 +658,11 @@ msgid "" "breakpoints and can be (re-)enabled." msgstr "" -#: library/pdb.rst:470 +#: library/pdb.rst:488 msgid "Enable the breakpoints specified." msgstr "" -#: library/pdb.rst:474 +#: library/pdb.rst:492 msgid "" "Set the ignore count for the given breakpoint number. If *count* is " "omitted, the ignore count is set to 0. A breakpoint becomes active when the " @@ -650,21 +671,21 @@ msgid "" "associated condition evaluates to true." msgstr "" -#: library/pdb.rst:482 +#: library/pdb.rst:500 msgid "" "Set a new *condition* for the breakpoint, an expression which must evaluate " "to true before the breakpoint is honored. If *condition* is absent, any " "existing condition is removed; i.e., the breakpoint is made unconditional." msgstr "" -#: library/pdb.rst:488 +#: library/pdb.rst:506 msgid "" "Specify a list of commands for breakpoint number *bpnumber*. The commands " "themselves appear on the following lines. Type a line containing just " "``end`` to terminate the commands. An example::" msgstr "" -#: library/pdb.rst:492 +#: library/pdb.rst:510 msgid "" "(Pdb) commands 1\n" "(com) p some_variable\n" @@ -672,25 +693,25 @@ msgid "" "(Pdb)" msgstr "" -#: library/pdb.rst:497 +#: library/pdb.rst:515 msgid "" "To remove all commands from a breakpoint, type ``commands`` and follow it " "immediately with ``end``; that is, give no commands." msgstr "" -#: library/pdb.rst:500 +#: library/pdb.rst:518 msgid "" "With no *bpnumber* argument, ``commands`` refers to the last breakpoint set." msgstr "" -#: library/pdb.rst:502 +#: library/pdb.rst:520 msgid "" "You can use breakpoint commands to start your program up again. Simply use " "the :pdbcmd:`continue` command, or :pdbcmd:`step`, or any other command that " "resumes execution." msgstr "" -#: library/pdb.rst:506 +#: library/pdb.rst:524 msgid "" "Specifying any command resuming execution (currently :pdbcmd:`continue`, :" "pdbcmd:`step`, :pdbcmd:`next`, :pdbcmd:`return`, :pdbcmd:`until`, :pdbcmd:" @@ -701,26 +722,26 @@ msgid "" "to ambiguities about which list to execute." msgstr "" -#: library/pdb.rst:515 +#: library/pdb.rst:533 msgid "" "If the list of commands contains the ``silent`` command, or a command that " "resumes execution, then the breakpoint message containing information about " "the frame is not displayed." msgstr "" -#: library/pdb.rst:519 +#: library/pdb.rst:537 msgid "" "Frame information will not be displayed if a command that resumes execution " "is present in the command list." msgstr "" -#: library/pdb.rst:525 +#: library/pdb.rst:543 msgid "" "Execute the current line, stop at the first possible occasion (either in a " "function that is called or on the next line in the current function)." msgstr "" -#: library/pdb.rst:530 +#: library/pdb.rst:548 msgid "" "Continue execution until the next line in the current function is reached or " "it returns. (The difference between :pdbcmd:`next` and :pdbcmd:`step` is " @@ -729,46 +750,46 @@ msgid "" "line in the current function.)" msgstr "" -#: library/pdb.rst:538 +#: library/pdb.rst:556 msgid "" "Without argument, continue execution until the line with a number greater " "than the current one is reached." msgstr "" -#: library/pdb.rst:541 +#: library/pdb.rst:559 msgid "" "With *lineno*, continue execution until a line with a number greater or " "equal to *lineno* is reached. In both cases, also stop when the current " "frame returns." msgstr "" -#: library/pdb.rst:545 +#: library/pdb.rst:563 msgid "Allow giving an explicit line number." msgstr "" -#: library/pdb.rst:550 +#: library/pdb.rst:568 msgid "Continue execution until the current function returns." msgstr "" -#: library/pdb.rst:554 +#: library/pdb.rst:572 msgid "Continue execution, only stop when a breakpoint is encountered." msgstr "" -#: library/pdb.rst:558 +#: library/pdb.rst:576 msgid "" "Set the next line that will be executed. Only available in the bottom-most " "frame. This lets you jump back and execute code again, or jump forward to " "skip code that you don't want to run." msgstr "" -#: library/pdb.rst:562 +#: library/pdb.rst:580 msgid "" "It should be noted that not all jumps are allowed -- for instance it is not " "possible to jump into the middle of a :keyword:`for` loop or out of a :" "keyword:`finally` clause." msgstr "" -#: library/pdb.rst:568 +#: library/pdb.rst:586 msgid "" "List source code for the current file. Without arguments, list 11 lines " "around the current line or continue the previous listing. With ``.`` as " @@ -777,7 +798,7 @@ msgid "" "second argument is less than the first, it is interpreted as a count." msgstr "" -#: library/pdb.rst:574 +#: library/pdb.rst:592 msgid "" "The current line in the current frame is indicated by ``->``. If an " "exception is being debugged, the line where the exception was originally " @@ -785,67 +806,67 @@ msgid "" "line." msgstr "" -#: library/pdb.rst:579 +#: library/pdb.rst:597 msgid "Added the ``>>`` marker." msgstr "" -#: library/pdb.rst:584 +#: library/pdb.rst:602 msgid "" "List all source code for the current function or frame. Interesting lines " "are marked as for :pdbcmd:`list`." msgstr "" -#: library/pdb.rst:591 +#: library/pdb.rst:609 msgid "Print the arguments of the current function and their current values." msgstr "" -#: library/pdb.rst:595 +#: library/pdb.rst:613 msgid "Evaluate *expression* in the current context and print its value." msgstr "" -#: library/pdb.rst:599 +#: library/pdb.rst:617 msgid "" "``print()`` can also be used, but is not a debugger command --- this " "executes the Python :func:`print` function." msgstr "" -#: library/pdb.rst:605 +#: library/pdb.rst:623 msgid "" "Like the :pdbcmd:`p` command, except the value of *expression* is pretty-" "printed using the :mod:`pprint` module." msgstr "" -#: library/pdb.rst:610 +#: library/pdb.rst:628 msgid "Print the type of *expression*." msgstr "" -#: library/pdb.rst:614 +#: library/pdb.rst:632 msgid "Try to get source code of *expression* and display it." msgstr "" -#: library/pdb.rst:620 +#: library/pdb.rst:638 msgid "" "Display the value of *expression* if it changed, each time execution stops " "in the current frame." msgstr "" -#: library/pdb.rst:623 +#: library/pdb.rst:641 msgid "" "Without *expression*, list all display expressions for the current frame." msgstr "" -#: library/pdb.rst:627 +#: library/pdb.rst:645 msgid "" "Display evaluates *expression* and compares to the result of the previous " "evaluation of *expression*, so when the result is mutable, display may not " "be able to pick up the changes." msgstr "" -#: library/pdb.rst:796 +#: library/pdb.rst:814 msgid "Example::" msgstr "" -#: library/pdb.rst:633 +#: library/pdb.rst:651 msgid "" "lst = []\n" "breakpoint()\n" @@ -854,13 +875,13 @@ msgid "" "print(lst)" msgstr "" -#: library/pdb.rst:639 +#: library/pdb.rst:657 msgid "" "Display won't realize ``lst`` has been changed because the result of " "evaluation is modified in place by ``lst.append(1)`` before being compared::" msgstr "" -#: library/pdb.rst:642 +#: library/pdb.rst:660 msgid "" "> example.py(3)()\n" "-> pass\n" @@ -875,11 +896,11 @@ msgid "" "(Pdb)" msgstr "" -#: library/pdb.rst:654 +#: library/pdb.rst:672 msgid "You can do some tricks with copy mechanism to make it work::" msgstr "" -#: library/pdb.rst:656 +#: library/pdb.rst:674 msgid "" "> example.py(3)()\n" "-> pass\n" @@ -895,13 +916,13 @@ msgid "" "(Pdb)" msgstr "" -#: library/pdb.rst:673 +#: library/pdb.rst:691 msgid "" "Do not display *expression* anymore in the current frame. Without " "*expression*, clear all display expressions for the current frame." msgstr "" -#: library/pdb.rst:680 +#: library/pdb.rst:698 msgid "" "Start an interactive interpreter (using the :mod:`code` module) in a new " "global namespace initialised from the local and global namespaces for the " @@ -909,7 +930,7 @@ msgid "" "return to the debugger." msgstr "" -#: library/pdb.rst:687 +#: library/pdb.rst:705 msgid "" "As ``interact`` creates a new dedicated namespace for code execution, " "assignments to variables will not affect the original namespaces. However, " @@ -917,18 +938,18 @@ msgid "" "original namespaces as usual." msgstr "" -#: library/pdb.rst:694 +#: library/pdb.rst:712 msgid "" "``exit()`` and ``quit()`` can be used to exit the :pdbcmd:`interact` command." msgstr "" -#: library/pdb.rst:698 +#: library/pdb.rst:716 msgid "" ":pdbcmd:`interact` directs its output to the debugger's output channel " "rather than :data:`sys.stderr`." msgstr "" -#: library/pdb.rst:706 +#: library/pdb.rst:724 msgid "" "Create an alias called *name* that executes *command*. The *command* must " "*not* be enclosed in quotes. Replaceable parameters can be indicated by " @@ -937,7 +958,7 @@ msgid "" "If no arguments are given, all aliases are listed." msgstr "" -#: library/pdb.rst:712 +#: library/pdb.rst:730 msgid "" "Aliases may be nested and can contain anything that can be legally typed at " "the pdb prompt. Note that internal pdb commands *can* be overridden by " @@ -946,13 +967,13 @@ msgid "" "other words in the line are left alone." msgstr "" -#: library/pdb.rst:718 +#: library/pdb.rst:736 msgid "" "As an example, here are two useful aliases (especially when placed in the :" "file:`.pdbrc` file)::" msgstr "" -#: library/pdb.rst:721 +#: library/pdb.rst:739 msgid "" "# Print instance variables (usage \"pi classInst\")\n" "alias pi for k in %1.__dict__.keys(): print(f\"%1.{k} = {%1.__dict__[k]}\")\n" @@ -960,36 +981,36 @@ msgid "" "alias ps pi self" msgstr "" -#: library/pdb.rst:728 +#: library/pdb.rst:746 msgid "Delete the specified alias *name*." msgstr "" -#: library/pdb.rst:732 +#: library/pdb.rst:750 msgid "" "Execute the (one-line) *statement* in the context of the current stack " "frame. The exclamation point can be omitted unless the first word of the " "statement resembles a debugger command, e.g.:" msgstr "" -#: library/pdb.rst:736 +#: library/pdb.rst:754 msgid "" "(Pdb) ! n=42\n" "(Pdb)" msgstr "" -#: library/pdb.rst:741 +#: library/pdb.rst:759 msgid "" "To set a global variable, you can prefix the assignment command with a :" "keyword:`global` statement on the same line, e.g.:" msgstr "" -#: library/pdb.rst:744 +#: library/pdb.rst:762 msgid "" "(Pdb) global list_options; list_options = ['-l']\n" "(Pdb)" msgstr "" -#: library/pdb.rst:752 +#: library/pdb.rst:770 msgid "" "Restart the debugged Python program. If *args* is supplied, it is split " "with :mod:`shlex` and the result is used as the new :data:`sys.argv`. " @@ -997,26 +1018,26 @@ msgid "" "`restart` is an alias for :pdbcmd:`run`." msgstr "" -#: library/pdb.rst:757 +#: library/pdb.rst:775 msgid "" ":pdbcmd:`run` and :pdbcmd:`restart` commands are disabled when the debugger " "is invoked in ``'inline'`` mode." msgstr "" -#: library/pdb.rst:763 +#: library/pdb.rst:781 msgid "" "Quit from the debugger. The program being executed is aborted. An end-of-" "file input is equivalent to :pdbcmd:`quit`." msgstr "" -#: library/pdb.rst:766 +#: library/pdb.rst:784 msgid "" "A confirmation prompt will be shown if the debugger is invoked in " "``'inline'`` mode. Either ``y``, ``Y``, ```` or ``EOF`` will confirm " "the quit." msgstr "" -#: library/pdb.rst:770 +#: library/pdb.rst:788 msgid "" "A confirmation prompt will be shown if the debugger is invoked in " "``'inline'`` mode. After the confirmation, the debugger will call :func:`sys." @@ -1024,21 +1045,21 @@ msgid "" "event." msgstr "" -#: library/pdb.rst:778 +#: library/pdb.rst:796 msgid "" "Enter a recursive debugger that steps through *code* (which is an arbitrary " "expression or statement to be executed in the current environment)." msgstr "" -#: library/pdb.rst:784 +#: library/pdb.rst:802 msgid "Print the return value for the last return of the current function." msgstr "" -#: library/pdb.rst:788 +#: library/pdb.rst:806 msgid "List or jump between chained exceptions." msgstr "" -#: library/pdb.rst:790 +#: library/pdb.rst:808 msgid "" "When using ``pdb.pm()`` or ``Pdb.post_mortem(...)`` with a chained " "exception instead of a traceback, it allows the user to move between the " @@ -1046,7 +1067,7 @@ msgid "" "``exceptions `` to switch to that exception." msgstr "" -#: library/pdb.rst:798 +#: library/pdb.rst:816 msgid "" "def out():\n" " try:\n" @@ -1066,11 +1087,11 @@ msgid "" " out()" msgstr "" -#: library/pdb.rst:815 +#: library/pdb.rst:833 msgid "calling ``pdb.pm()`` will allow to move between exceptions::" msgstr "" -#: library/pdb.rst:817 +#: library/pdb.rst:835 msgid "" "> example.py(5)out()\n" "-> raise ValueError(\"reraise middle() error\") from e\n" @@ -1089,11 +1110,11 @@ msgid "" "-> return inner(0)" msgstr "" -#: library/pdb.rst:836 +#: library/pdb.rst:854 msgid "Footnotes" msgstr "" -#: library/pdb.rst:837 +#: library/pdb.rst:855 msgid "" "Whether a frame is considered to originate in a certain module is determined " "by the ``__name__`` in the frame globals." @@ -1119,18 +1140,18 @@ msgstr "" msgid "cmd" msgstr "" -#: library/pdb.rst:377 +#: library/pdb.rst:395 msgid ".pdbrc" msgstr "" -#: library/pdb.rst:377 +#: library/pdb.rst:395 msgid "file" msgstr "" -#: library/pdb.rst:377 +#: library/pdb.rst:395 msgid "debugger" msgstr "" -#: library/pdb.rst:377 +#: library/pdb.rst:395 msgid "configuration" msgstr "" diff --git a/library/persistence.po b/library/persistence.po index bb132b3e..620fcb99 100644 --- a/library/persistence.po +++ b/library/persistence.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/pickle.po b/library/pickle.po index fe76b24a..5ea22a99 100644 --- a/library/pickle.po +++ b/library/pickle.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/pickletools.po b/library/pickletools.po index d02d5e91..b9197d2c 100644 --- a/library/pickletools.po +++ b/library/pickletools.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/pipes.po b/library/pipes.po index 1530a20e..cf1765de 100644 --- a/library/pipes.po +++ b/library/pipes.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/pkgutil.po b/library/pkgutil.po index 47034b6d..06faa366 100644 --- a/library/pkgutil.po +++ b/library/pkgutil.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -110,9 +110,10 @@ msgstr "" #: library/pkgutil.rst:72 msgid "" -"If fullname contains a ``'.'``, the finders will be for the package " -"containing fullname, otherwise they will be all registered top level finders " -"(i.e. those on both :data:`sys.meta_path` and :data:`sys.path_hooks`)." +"If *fullname* contains a ``'.'``, the finders will be for the package " +"containing *fullname*, otherwise they will be all registered top level " +"finders (i.e. those on both :data:`sys.meta_path` and :data:`sys." +"path_hooks`)." msgstr "" #: library/pkgutil.rst:76 diff --git a/library/platform.po b/library/platform.po index 0e2e6afc..d99d73f1 100644 --- a/library/platform.po +++ b/library/platform.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-10 22:38+0300\n" "Last-Translator: Marios Giannopoulos \n" "Language-Team: PyGreece \n" diff --git a/library/plistlib.po b/library/plistlib.po index 66ff8464..1f02e998 100644 --- a/library/plistlib.po +++ b/library/plistlib.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/poplib.po b/library/poplib.po index 34ba8507..5e83420d 100644 --- a/library/poplib.po +++ b/library/poplib.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/posix.po b/library/posix.po index 3617ed11..43aadc37 100644 --- a/library/posix.po +++ b/library/posix.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/pprint.po b/library/pprint.po index 3bf0a268..3d5341f8 100644 --- a/library/pprint.po +++ b/library/pprint.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/profile.po b/library/profile.po index 9ac08636..986aef3a 100644 --- a/library/profile.po +++ b/library/profile.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/pty.po b/library/pty.po index 982e1399..78c1a001 100644 --- a/library/pty.po +++ b/library/pty.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/pwd.po b/library/pwd.po index b101f33c..32feb564 100644 --- a/library/pwd.po +++ b/library/pwd.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/py_compile.po b/library/py_compile.po index be83a5c2..21eb5c99 100644 --- a/library/py_compile.po +++ b/library/py_compile.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/pyclbr.po b/library/pyclbr.po index cc2b6001..bf718dc6 100644 --- a/library/pyclbr.po +++ b/library/pyclbr.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/pydoc.po b/library/pydoc.po index 4b3a1853..81b3a124 100644 --- a/library/pydoc.po +++ b/library/pydoc.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/pyexpat.po b/library/pyexpat.po index e32377dc..801cef79 100644 --- a/library/pyexpat.po +++ b/library/pyexpat.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/python.po b/library/python.po index a7391400..83336996 100644 --- a/library/python.po +++ b/library/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -27,3 +27,9 @@ msgid "" "related to the Python interpreter and its interaction with its environment. " "Here's an overview:" msgstr "" + +#: library/python.rst:33 +msgid "" +"See the :mod:`concurrent.interpreters` module, which similarly exposes core " +"runtime functionality." +msgstr "" diff --git a/library/queue.po b/library/queue.po index c7ce8418..86ea4e30 100644 --- a/library/queue.po +++ b/library/queue.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/quopri.po b/library/quopri.po index c24e23cb..16edb30d 100644 --- a/library/quopri.po +++ b/library/quopri.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/random.po b/library/random.po index 07035005..c2d7be54 100644 --- a/library/random.po +++ b/library/random.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/re.po b/library/re.po index 3707bc6a..88485145 100644 --- a/library/re.po +++ b/library/re.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -145,7 +145,7 @@ msgstr "" msgid "The special characters are:" msgstr "" -#: library/re.rst:1661 +#: library/re.rst:1663 msgid "``.``" msgstr "" @@ -1214,7 +1214,7 @@ msgid "" msgstr "" #: library/re.rst:931 library/re.rst:960 library/re.rst:1040 -#: library/re.rst:1114 library/re.rst:1150 +#: library/re.rst:1117 library/re.rst:1152 msgid "" "The expression's behaviour can be modified by specifying a *flags* value. " "Values can be any of the `flags`_ variables, combined using bitwise OR (the " @@ -1332,8 +1332,8 @@ msgstr "" #: library/re.rst:994 msgid "" -"Empty matches for the pattern split the string only when not adjacent to a " -"previous empty match." +"Adjacent empty matches are not possible, but an empty match can occur " +"immediately after a non-empty match." msgstr "" #: library/re.rst:997 @@ -1347,7 +1347,7 @@ msgid "" "'']" msgstr "" -#: library/re.rst:1118 +#: library/re.rst:1121 msgid "Added the optional flags argument." msgstr "" @@ -1442,12 +1442,17 @@ msgstr "" msgid "" "The optional argument *count* is the maximum number of pattern occurrences " "to be replaced; *count* must be a non-negative integer. If omitted or zero, " -"all occurrences will be replaced. Empty matches for the pattern are replaced " -"only when not adjacent to a previous empty match, so ``sub('x*', '-', " -"'abxd')`` returns ``'-a-b--d-'``." +"all occurrences will be replaced." msgstr "" -#: library/re.rst:1104 +#: library/re.rst:1100 +msgid "" +"Adjacent empty matches are not possible, but an empty match can occur " +"immediately after a non-empty match. As a result, ``sub('x*', '-', 'abxd')`` " +"returns ``'-a-b--d-'`` instead of ``'-a-b-d-'``." +msgstr "" + +#: library/re.rst:1107 msgid "" "In string-type *repl* arguments, in addition to the character escapes and " "backreferences described above, ``\\g`` will use the substring matched " @@ -1460,51 +1465,50 @@ msgid "" "RE." msgstr "" -#: library/re.rst:1399 +#: library/re.rst:1401 msgid "Unmatched groups are replaced with an empty string." msgstr "" -#: library/re.rst:1124 +#: library/re.rst:1127 msgid "" "Unknown escapes in *pattern* consisting of ``'\\'`` and an ASCII letter now " "are errors." msgstr "" -#: library/re.rst:1128 +#: library/re.rst:1131 msgid "" "Unknown escapes in *repl* consisting of ``'\\'`` and an ASCII letter now are " -"errors. Empty matches for the pattern are replaced when adjacent to a " -"previous non-empty match." +"errors. An empty match can occur immediately after a non-empty match." msgstr "" -#: library/re.rst:1134 +#: library/re.rst:1136 msgid "" "Group *id* can only contain ASCII digits. In :class:`bytes` replacement " "strings, group *name* can only contain bytes in the ASCII range " "(``b'\\x00'``-``b'\\x7f'``)." msgstr "" -#: library/re.rst:1139 +#: library/re.rst:1141 msgid "" "Passing *count* and *flags* as positional arguments is deprecated. In future " "Python versions they will be :ref:`keyword-only parameters `." msgstr "" -#: library/re.rst:1147 +#: library/re.rst:1149 msgid "" "Perform the same operation as :func:`sub`, but return a tuple ``(new_string, " "number_of_subs_made)``." msgstr "" -#: library/re.rst:1157 +#: library/re.rst:1159 msgid "" "Escape special characters in *pattern*. This is useful if you want to match " "an arbitrary literal string that may have regular expression metacharacters " "in it. For example::" msgstr "" -#: library/re.rst:1161 +#: library/re.rst:1163 msgid "" ">>> print(re.escape('https://www.python.org'))\n" "https://www\\.python\\.org\n" @@ -1519,13 +1523,13 @@ msgid "" "/|\\-|\\+|\\*\\*|\\*" msgstr "" -#: library/re.rst:1172 +#: library/re.rst:1174 msgid "" "This function must not be used for the replacement string in :func:`sub` " "and :func:`subn`, only backslashes should be escaped. For example::" msgstr "" -#: library/re.rst:1175 +#: library/re.rst:1177 msgid "" ">>> digits_re = r'\\d+'\n" ">>> sample = '/usr/sbin/sendmail - 0 errors, 12 warnings'\n" @@ -1533,11 +1537,11 @@ msgid "" "/usr/sbin/sendmail - \\d+ errors, \\d+ warnings" msgstr "" -#: library/re.rst:1180 +#: library/re.rst:1182 msgid "The ``'_'`` character is no longer escaped." msgstr "" -#: library/re.rst:1183 +#: library/re.rst:1185 msgid "" "Only characters that can have special meaning in a regular expression are " "escaped. As a result, ``'!'``, ``'\"'``, ``'%'``, ``\"'\"``, ``','``, " @@ -1545,15 +1549,15 @@ msgid "" "are no longer escaped." msgstr "" -#: library/re.rst:1192 +#: library/re.rst:1194 msgid "Clear the regular expression cache." msgstr "" -#: library/re.rst:1196 +#: library/re.rst:1198 msgid "Exceptions" msgstr "" -#: library/re.rst:1200 +#: library/re.rst:1202 msgid "" "Exception raised when a string passed to one of the functions here is not a " "valid regular expression (for example, it might contain unmatched " @@ -1563,51 +1567,51 @@ msgid "" "attributes:" msgstr "" -#: library/re.rst:1208 +#: library/re.rst:1210 msgid "The unformatted error message." msgstr "" -#: library/re.rst:1212 +#: library/re.rst:1214 msgid "The regular expression pattern." msgstr "" -#: library/re.rst:1216 +#: library/re.rst:1218 msgid "The index in *pattern* where compilation failed (may be ``None``)." msgstr "" -#: library/re.rst:1220 +#: library/re.rst:1222 msgid "The line corresponding to *pos* (may be ``None``)." msgstr "" -#: library/re.rst:1224 +#: library/re.rst:1226 msgid "The column corresponding to *pos* (may be ``None``)." msgstr "" -#: library/re.rst:1226 +#: library/re.rst:1228 msgid "Added additional attributes." msgstr "" -#: library/re.rst:1229 +#: library/re.rst:1231 msgid "" "``PatternError`` was originally named ``error``; the latter is kept as an " "alias for backward compatibility." msgstr "" -#: library/re.rst:1236 +#: library/re.rst:1238 msgid "Regular Expression Objects" msgstr "" -#: library/re.rst:1240 +#: library/re.rst:1242 msgid "Compiled regular expression object returned by :func:`re.compile`." msgstr "" -#: library/re.rst:1242 +#: library/re.rst:1244 msgid "" ":py:class:`re.Pattern` supports ``[]`` to indicate a Unicode (str) or bytes " "pattern. See :ref:`types-genericalias`." msgstr "" -#: library/re.rst:1248 +#: library/re.rst:1250 msgid "" "Scan through *string* looking for the first location where this regular " "expression produces a match, and return a corresponding :class:`~re.Match`. " @@ -1616,7 +1620,7 @@ msgid "" "string." msgstr "" -#: library/re.rst:1253 +#: library/re.rst:1255 msgid "" "The optional second parameter *pos* gives an index in the string where the " "search is to start; it defaults to ``0``. This is not completely equivalent " @@ -1625,7 +1629,7 @@ msgid "" "necessarily at the index where the search is to start." msgstr "" -#: library/re.rst:1259 +#: library/re.rst:1261 msgid "" "The optional parameter *endpos* limits how far the string will be searched; " "it will be as if the string is *endpos* characters long, so only the " @@ -1635,7 +1639,7 @@ msgid "" "equivalent to ``rx.search(string[:50], 0)``. ::" msgstr "" -#: library/re.rst:1266 +#: library/re.rst:1268 msgid "" ">>> pattern = re.compile(\"d\")\n" ">>> pattern.search(\"dog\") # Match at index 0\n" @@ -1643,7 +1647,7 @@ msgid "" ">>> pattern.search(\"dog\", 1) # No match; search doesn't include the \"d\"" msgstr "" -#: library/re.rst:1274 +#: library/re.rst:1276 msgid "" "If zero or more characters at the *beginning* of *string* match this regular " "expression, return a corresponding :class:`~re.Match`. Return ``None`` if " @@ -1651,13 +1655,13 @@ msgid "" "zero-length match." msgstr "" -#: library/re.rst:1297 +#: library/re.rst:1299 msgid "" "The optional *pos* and *endpos* parameters have the same meaning as for the :" "meth:`~Pattern.search` method. ::" msgstr "" -#: library/re.rst:1282 +#: library/re.rst:1284 msgid "" ">>> pattern = re.compile(\"o\")\n" ">>> pattern.match(\"dog\") # No match as \"o\" is not at the start of " @@ -1667,20 +1671,20 @@ msgid "" "" msgstr "" -#: library/re.rst:1287 +#: library/re.rst:1289 msgid "" "If you want to locate a match anywhere in *string*, use :meth:`~Pattern." "search` instead (see also :ref:`search-vs-match`)." msgstr "" -#: library/re.rst:1293 +#: library/re.rst:1295 msgid "" "If the whole *string* matches this regular expression, return a " "corresponding :class:`~re.Match`. Return ``None`` if the string does not " "match the pattern; note that this is different from a zero-length match." msgstr "" -#: library/re.rst:1300 +#: library/re.rst:1302 msgid "" ">>> pattern = re.compile(\"o[gh]\")\n" ">>> pattern.fullmatch(\"dog\") # No match as \"o\" is not at the start " @@ -1691,89 +1695,89 @@ msgid "" "" msgstr "" -#: library/re.rst:1311 +#: library/re.rst:1313 msgid "Identical to the :func:`split` function, using the compiled pattern." msgstr "" -#: library/re.rst:1316 +#: library/re.rst:1318 msgid "" "Similar to the :func:`findall` function, using the compiled pattern, but " "also accepts optional *pos* and *endpos* parameters that limit the search " "region like for :meth:`search`." msgstr "" -#: library/re.rst:1323 +#: library/re.rst:1325 msgid "" "Similar to the :func:`finditer` function, using the compiled pattern, but " "also accepts optional *pos* and *endpos* parameters that limit the search " "region like for :meth:`search`." msgstr "" -#: library/re.rst:1330 +#: library/re.rst:1332 msgid "Identical to the :func:`sub` function, using the compiled pattern." msgstr "" -#: library/re.rst:1335 +#: library/re.rst:1337 msgid "Identical to the :func:`subn` function, using the compiled pattern." msgstr "" -#: library/re.rst:1340 +#: library/re.rst:1342 msgid "" "The regex matching flags. This is a combination of the flags given to :func:" "`.compile`, any ``(?...)`` inline flags in the pattern, and implicit flags " "such as :py:const:`~re.UNICODE` if the pattern is a Unicode string." msgstr "" -#: library/re.rst:1347 +#: library/re.rst:1349 msgid "The number of capturing groups in the pattern." msgstr "" -#: library/re.rst:1352 +#: library/re.rst:1354 msgid "" "A dictionary mapping any symbolic group names defined by ``(?P)`` to " "group numbers. The dictionary is empty if no symbolic groups were used in " "the pattern." msgstr "" -#: library/re.rst:1359 +#: library/re.rst:1361 msgid "The pattern string from which the pattern object was compiled." msgstr "" -#: library/re.rst:1362 +#: library/re.rst:1364 msgid "" "Added support of :func:`copy.copy` and :func:`copy.deepcopy`. Compiled " "regular expression objects are considered atomic." msgstr "" -#: library/re.rst:1370 +#: library/re.rst:1372 msgid "Match Objects" msgstr "" -#: library/re.rst:1372 +#: library/re.rst:1374 msgid "" "Match objects always have a boolean value of ``True``. Since :meth:`~Pattern." "match` and :meth:`~Pattern.search` return ``None`` when there is no match, " "you can test whether there was a match with a simple ``if`` statement::" msgstr "" -#: library/re.rst:1377 +#: library/re.rst:1379 msgid "" "match = re.search(pattern, string)\n" "if match:\n" " process(match)" msgstr "" -#: library/re.rst:1383 +#: library/re.rst:1385 msgid "Match object returned by successful ``match``\\ es and ``search``\\ es." msgstr "" -#: library/re.rst:1385 +#: library/re.rst:1387 msgid "" ":py:class:`re.Match` supports ``[]`` to indicate a Unicode (str) or bytes " "match. See :ref:`types-genericalias`." msgstr "" -#: library/re.rst:1391 +#: library/re.rst:1393 msgid "" "Return the string obtained by doing backslash substitution on the template " "string *template*, as done by the :meth:`~Pattern.sub` method. Escapes such " @@ -1783,7 +1787,7 @@ msgid "" "backreference ``\\g<0>`` will be replaced by the entire match." msgstr "" -#: library/re.rst:1404 +#: library/re.rst:1406 msgid "" "Returns one or more subgroups of the match. If there is a single argument, " "the result is a single string; if there are multiple arguments, the result " @@ -1798,7 +1802,7 @@ msgid "" "the pattern that matched multiple times, the last match is returned. ::" msgstr "" -#: library/re.rst:1416 +#: library/re.rst:1418 msgid "" ">>> m = re.match(r\"(\\w+) (\\w+)\", \"Isaac Newton, physicist\")\n" ">>> m.group(0) # The entire match\n" @@ -1811,7 +1815,7 @@ msgid "" "('Isaac', 'Newton')" msgstr "" -#: library/re.rst:1426 +#: library/re.rst:1428 msgid "" "If the regular expression uses the ``(?P...)`` syntax, the *groupN* " "arguments may also be strings identifying groups by their group name. If a " @@ -1819,11 +1823,11 @@ msgid "" "`IndexError` exception is raised." msgstr "" -#: library/re.rst:1431 +#: library/re.rst:1433 msgid "A moderately complicated example::" msgstr "" -#: library/re.rst:1433 +#: library/re.rst:1435 msgid "" ">>> m = re.match(r\"(?P\\w+) (?P\\w+)\", \"Malcolm " "Reynolds\")\n" @@ -1833,11 +1837,11 @@ msgid "" "'Reynolds'" msgstr "" -#: library/re.rst:1439 +#: library/re.rst:1441 msgid "Named groups can also be referred to by their index::" msgstr "" -#: library/re.rst:1441 +#: library/re.rst:1443 msgid "" ">>> m.group(1)\n" "'Malcolm'\n" @@ -1845,24 +1849,24 @@ msgid "" "'Reynolds'" msgstr "" -#: library/re.rst:1446 +#: library/re.rst:1448 msgid "If a group matches multiple times, only the last match is accessible::" msgstr "" -#: library/re.rst:1448 +#: library/re.rst:1450 msgid "" ">>> m = re.match(r\"(..)+\", \"a1b2c3\") # Matches 3 times.\n" ">>> m.group(1) # Returns only the last match.\n" "'c3'" msgstr "" -#: library/re.rst:1455 +#: library/re.rst:1457 msgid "" "This is identical to ``m.group(g)``. This allows easier access to an " "individual group from a match::" msgstr "" -#: library/re.rst:1458 +#: library/re.rst:1460 msgid "" ">>> m = re.match(r\"(\\w+) (\\w+)\", \"Isaac Newton, physicist\")\n" ">>> m[0] # The entire match\n" @@ -1873,11 +1877,11 @@ msgid "" "'Newton'" msgstr "" -#: library/re.rst:1466 +#: library/re.rst:1468 msgid "Named groups are supported as well::" msgstr "" -#: library/re.rst:1468 +#: library/re.rst:1470 msgid "" ">>> m = re.match(r\"(?P\\w+) (?P\\w+)\", \"Isaac " "Newton\")\n" @@ -1887,32 +1891,32 @@ msgid "" "'Newton'" msgstr "" -#: library/re.rst:1479 +#: library/re.rst:1481 msgid "" "Return a tuple containing all the subgroups of the match, from 1 up to " "however many groups are in the pattern. The *default* argument is used for " "groups that did not participate in the match; it defaults to ``None``." msgstr "" -#: library/re.rst:1708 +#: library/re.rst:1710 msgid "For example::" msgstr "" -#: library/re.rst:1485 +#: library/re.rst:1487 msgid "" ">>> m = re.match(r\"(\\d+)\\.(\\d+)\", \"24.1632\")\n" ">>> m.groups()\n" "('24', '1632')" msgstr "" -#: library/re.rst:1489 +#: library/re.rst:1491 msgid "" "If we make the decimal place and everything after it optional, not all " "groups might participate in the match. These groups will default to " "``None`` unless the *default* argument is given::" msgstr "" -#: library/re.rst:1493 +#: library/re.rst:1495 msgid "" ">>> m = re.match(r\"(\\d+)\\.?(\\d+)?\", \"24\")\n" ">>> m.groups() # Second group defaults to None.\n" @@ -1921,14 +1925,14 @@ msgid "" "('24', '0')" msgstr "" -#: library/re.rst:1502 +#: library/re.rst:1504 msgid "" "Return a dictionary containing all the *named* subgroups of the match, keyed " "by the subgroup name. The *default* argument is used for groups that did " "not participate in the match; it defaults to ``None``. For example::" msgstr "" -#: library/re.rst:1506 +#: library/re.rst:1508 msgid "" ">>> m = re.match(r\"(?P\\w+) (?P\\w+)\", \"Malcolm " "Reynolds\")\n" @@ -1936,7 +1940,7 @@ msgid "" "{'first_name': 'Malcolm', 'last_name': 'Reynolds'}" msgstr "" -#: library/re.rst:1514 +#: library/re.rst:1516 msgid "" "Return the indices of the start and end of the substring matched by *group*; " "*group* defaults to zero (meaning the whole matched substring). Return " @@ -1945,11 +1949,11 @@ msgid "" "matched by group *g* (equivalent to ``m.group(g)``) is ::" msgstr "" -#: library/re.rst:1520 +#: library/re.rst:1522 msgid "m.string[m.start(g):m.end(g)]" msgstr "" -#: library/re.rst:1522 +#: library/re.rst:1524 msgid "" "Note that ``m.start(group)`` will equal ``m.end(group)`` if *group* matched " "a null string. For example, after ``m = re.search('b(c?)', 'cba')``, ``m." @@ -1957,11 +1961,11 @@ msgid "" "2, and ``m.start(2)`` raises an :exc:`IndexError` exception." msgstr "" -#: library/re.rst:1527 +#: library/re.rst:1529 msgid "An example that will remove *remove_this* from email addresses::" msgstr "" -#: library/re.rst:1529 +#: library/re.rst:1531 msgid "" ">>> email = \"tony@tiremove_thisger.net\"\n" ">>> m = re.search(\"remove_this\", email)\n" @@ -1969,28 +1973,28 @@ msgid "" "'tony@tiger.net'" msgstr "" -#: library/re.rst:1537 +#: library/re.rst:1539 msgid "" "For a match *m*, return the 2-tuple ``(m.start(group), m.end(group))``. Note " "that if *group* did not contribute to the match, this is ``(-1, -1)``. " "*group* defaults to zero, the entire match." msgstr "" -#: library/re.rst:1544 +#: library/re.rst:1546 msgid "" "The value of *pos* which was passed to the :meth:`~Pattern.search` or :meth:" "`~Pattern.match` method of a :ref:`regex object `. This is the " "index into the string at which the RE engine started looking for a match." msgstr "" -#: library/re.rst:1551 +#: library/re.rst:1553 msgid "" "The value of *endpos* which was passed to the :meth:`~Pattern.search` or :" "meth:`~Pattern.match` method of a :ref:`regex object `. This is " "the index into the string beyond which the RE engine will not go." msgstr "" -#: library/re.rst:1558 +#: library/re.rst:1560 msgid "" "The integer index of the last matched capturing group, or ``None`` if no " "group was matched at all. For example, the expressions ``(a)b``, ``((a)" @@ -1999,43 +2003,43 @@ msgid "" "applied to the same string." msgstr "" -#: library/re.rst:1567 +#: library/re.rst:1569 msgid "" "The name of the last matched capturing group, or ``None`` if the group " "didn't have a name, or if no group was matched at all." msgstr "" -#: library/re.rst:1573 +#: library/re.rst:1575 msgid "" "The :ref:`regular expression object ` whose :meth:`~Pattern." "match` or :meth:`~Pattern.search` method produced this match instance." msgstr "" -#: library/re.rst:1579 +#: library/re.rst:1581 msgid "The string passed to :meth:`~Pattern.match` or :meth:`~Pattern.search`." msgstr "" -#: library/re.rst:1582 +#: library/re.rst:1584 msgid "" "Added support of :func:`copy.copy` and :func:`copy.deepcopy`. Match objects " "are considered atomic." msgstr "" -#: library/re.rst:1590 +#: library/re.rst:1592 msgid "Regular Expression Examples" msgstr "" -#: library/re.rst:1594 +#: library/re.rst:1596 msgid "Checking for a Pair" msgstr "" -#: library/re.rst:1596 +#: library/re.rst:1598 msgid "" "In this example, we'll use the following helper function to display match " "objects a little more gracefully::" msgstr "" -#: library/re.rst:1599 +#: library/re.rst:1601 msgid "" "def displaymatch(match):\n" " if match is None:\n" @@ -2043,7 +2047,7 @@ msgid "" " return '' % (match.group(), match.groups())" msgstr "" -#: library/re.rst:1604 +#: library/re.rst:1606 msgid "" "Suppose you are writing a poker program where a player's hand is represented " "as a 5-character string with each character representing a card, \"a\" for " @@ -2051,11 +2055,11 @@ msgid "" "\"2\" through \"9\" representing the card with that value." msgstr "" -#: library/re.rst:1609 +#: library/re.rst:1611 msgid "To see if a given string is a valid hand, one could do the following::" msgstr "" -#: library/re.rst:1611 +#: library/re.rst:1613 msgid "" ">>> valid = re.compile(r\"^[a2-9tjqk]{5}$\")\n" ">>> displaymatch(valid.match(\"akt5q\")) # Valid.\n" @@ -2066,14 +2070,14 @@ msgid "" "\"\"" msgstr "" -#: library/re.rst:1619 +#: library/re.rst:1621 msgid "" "That last hand, ``\"727ak\"``, contained a pair, or two of the same valued " "cards. To match this with a regular expression, one could use backreferences " "as such::" msgstr "" -#: library/re.rst:1622 +#: library/re.rst:1624 msgid "" ">>> pair = re.compile(r\".*(.).*\\1\")\n" ">>> displaymatch(pair.match(\"717ak\")) # Pair of 7s.\n" @@ -2083,13 +2087,13 @@ msgid "" "\"\"" msgstr "" -#: library/re.rst:1629 +#: library/re.rst:1631 msgid "" "To find out what card the pair consists of, one could use the :meth:`~Match." "group` method of the match object in the following manner::" msgstr "" -#: library/re.rst:1632 +#: library/re.rst:1634 msgid "" ">>> pair = re.compile(r\".*(.).*\\1\")\n" ">>> pair.match(\"717ak\").group(1)\n" @@ -2107,11 +2111,11 @@ msgid "" "'a'" msgstr "" -#: library/re.rst:1648 +#: library/re.rst:1650 msgid "Simulating scanf()" msgstr "" -#: library/re.rst:1652 +#: library/re.rst:1654 msgid "" "Python does not currently have an equivalent to :c:func:`!scanf`. Regular " "expressions are generally more powerful, though also more verbose, than :c:" @@ -2120,130 +2124,130 @@ msgid "" "expressions." msgstr "" -#: library/re.rst:1659 +#: library/re.rst:1661 msgid ":c:func:`!scanf` Token" msgstr "" -#: library/re.rst:1659 +#: library/re.rst:1661 msgid "Regular Expression" msgstr "" -#: library/re.rst:1661 +#: library/re.rst:1663 msgid "``%c``" msgstr "" -#: library/re.rst:1663 +#: library/re.rst:1665 msgid "``%5c``" msgstr "" -#: library/re.rst:1663 +#: library/re.rst:1665 msgid "``.{5}``" msgstr "" -#: library/re.rst:1665 +#: library/re.rst:1667 msgid "``%d``" msgstr "" -#: library/re.rst:1665 +#: library/re.rst:1667 msgid "``[-+]?\\d+``" msgstr "" -#: library/re.rst:1667 +#: library/re.rst:1669 msgid "``%e``, ``%E``, ``%f``, ``%g``" msgstr "" -#: library/re.rst:1667 +#: library/re.rst:1669 msgid "``[-+]?(\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?``" msgstr "" -#: library/re.rst:1669 +#: library/re.rst:1671 msgid "``%i``" msgstr "" -#: library/re.rst:1669 +#: library/re.rst:1671 msgid "``[-+]?(0[xX][\\dA-Fa-f]+|0[0-7]*|\\d+)``" msgstr "" -#: library/re.rst:1671 +#: library/re.rst:1673 msgid "``%o``" msgstr "" -#: library/re.rst:1671 +#: library/re.rst:1673 msgid "``[-+]?[0-7]+``" msgstr "" -#: library/re.rst:1673 +#: library/re.rst:1675 msgid "``%s``" msgstr "" -#: library/re.rst:1673 +#: library/re.rst:1675 msgid "``\\S+``" msgstr "" -#: library/re.rst:1675 +#: library/re.rst:1677 msgid "``%u``" msgstr "" -#: library/re.rst:1675 +#: library/re.rst:1677 msgid "``\\d+``" msgstr "" -#: library/re.rst:1677 +#: library/re.rst:1679 msgid "``%x``, ``%X``" msgstr "" -#: library/re.rst:1677 +#: library/re.rst:1679 msgid "``[-+]?(0[xX])?[\\dA-Fa-f]+``" msgstr "" -#: library/re.rst:1680 +#: library/re.rst:1682 msgid "To extract the filename and numbers from a string like ::" msgstr "" -#: library/re.rst:1682 +#: library/re.rst:1684 msgid "/usr/sbin/sendmail - 0 errors, 4 warnings" msgstr "" -#: library/re.rst:1684 +#: library/re.rst:1686 msgid "you would use a :c:func:`!scanf` format like ::" msgstr "" -#: library/re.rst:1686 +#: library/re.rst:1688 msgid "%s - %d errors, %d warnings" msgstr "" -#: library/re.rst:1688 +#: library/re.rst:1690 msgid "The equivalent regular expression would be ::" msgstr "" -#: library/re.rst:1690 +#: library/re.rst:1692 msgid "(\\S+) - (\\d+) errors, (\\d+) warnings" msgstr "" -#: library/re.rst:1696 +#: library/re.rst:1698 msgid "search() vs. match()" msgstr "" -#: library/re.rst:1700 +#: library/re.rst:1702 msgid "" "Python offers different primitive operations based on regular expressions:" msgstr "" -#: library/re.rst:1702 +#: library/re.rst:1704 msgid ":func:`re.match` checks for a match only at the beginning of the string" msgstr "" -#: library/re.rst:1703 +#: library/re.rst:1705 msgid "" ":func:`re.search` checks for a match anywhere in the string (this is what " "Perl does by default)" msgstr "" -#: library/re.rst:1705 +#: library/re.rst:1707 msgid ":func:`re.fullmatch` checks for entire string to be a match" msgstr "" -#: library/re.rst:1710 +#: library/re.rst:1712 msgid "" ">>> re.match(\"c\", \"abcdef\") # No match\n" ">>> re.search(\"c\", \"abcdef\") # Match\n" @@ -2253,13 +2257,13 @@ msgid "" ">>> re.fullmatch(\"r.*n\", \"python\") # No match" msgstr "" -#: library/re.rst:1717 +#: library/re.rst:1719 msgid "" "Regular expressions beginning with ``'^'`` can be used with :func:`search` " "to restrict the match at the beginning of the string::" msgstr "" -#: library/re.rst:1720 +#: library/re.rst:1722 msgid "" ">>> re.match(\"c\", \"abcdef\") # No match\n" ">>> re.search(\"^c\", \"abcdef\") # No match\n" @@ -2267,7 +2271,7 @@ msgid "" "" msgstr "" -#: library/re.rst:1725 +#: library/re.rst:1727 msgid "" "Note however that in :const:`MULTILINE` mode :func:`match` only matches at " "the beginning of the string, whereas using :func:`search` with a regular " @@ -2275,18 +2279,18 @@ msgid "" "line. ::" msgstr "" -#: library/re.rst:1729 +#: library/re.rst:1731 msgid "" ">>> re.match(\"X\", \"A\\nB\\nX\", re.MULTILINE) # No match\n" ">>> re.search(\"^X\", \"A\\nB\\nX\", re.MULTILINE) # Match\n" "" msgstr "" -#: library/re.rst:1735 +#: library/re.rst:1737 msgid "Making a Phonebook" msgstr "" -#: library/re.rst:1737 +#: library/re.rst:1739 msgid "" ":func:`split` splits a string into a list delimited by the passed pattern. " "The method is invaluable for converting textual data into data structures " @@ -2294,13 +2298,13 @@ msgid "" "following example that creates a phonebook." msgstr "" -#: library/re.rst:1742 +#: library/re.rst:1744 msgid "" "First, here is the input. Normally it may come from a file, here we are " "using triple-quoted string syntax" msgstr "" -#: library/re.rst:1745 +#: library/re.rst:1747 msgid "" ">>> text = \"\"\"Ross McFluff: 834.345.1254 155 Elm Street\n" "...\n" @@ -2311,13 +2315,13 @@ msgid "" "... Heather Albrecht: 548.326.4584 919 Park Place\"\"\"" msgstr "" -#: library/re.rst:1755 +#: library/re.rst:1757 msgid "" "The entries are separated by one or more newlines. Now we convert the string " "into a list with each nonempty line having its own entry:" msgstr "" -#: library/re.rst:1758 +#: library/re.rst:1760 msgid "" ">>> entries = re.split(\"\\n+\", text)\n" ">>> entries\n" @@ -2327,14 +2331,14 @@ msgid "" "'Heather Albrecht: 548.326.4584 919 Park Place']" msgstr "" -#: library/re.rst:1768 +#: library/re.rst:1770 msgid "" "Finally, split each entry into a list with first name, last name, telephone " "number, and address. We use the ``maxsplit`` parameter of :func:`split` " "because the address has spaces, our splitting pattern, in it:" msgstr "" -#: library/re.rst:1772 +#: library/re.rst:1774 msgid "" ">>> [re.split(\":? \", entry, maxsplit=3) for entry in entries]\n" "[['Ross', 'McFluff', '834.345.1254', '155 Elm Street'],\n" @@ -2343,14 +2347,14 @@ msgid "" "['Heather', 'Albrecht', '548.326.4584', '919 Park Place']]" msgstr "" -#: library/re.rst:1781 +#: library/re.rst:1783 msgid "" "The ``:?`` pattern matches the colon after the last name, so that it does " "not occur in the result list. With a ``maxsplit`` of ``4``, we could " "separate the house number from the street name:" msgstr "" -#: library/re.rst:1785 +#: library/re.rst:1787 msgid "" ">>> [re.split(\":? \", entry, maxsplit=4) for entry in entries]\n" "[['Ross', 'McFluff', '834.345.1254', '155', 'Elm Street'],\n" @@ -2359,11 +2363,11 @@ msgid "" "['Heather', 'Albrecht', '548.326.4584', '919', 'Park Place']]" msgstr "" -#: library/re.rst:1796 +#: library/re.rst:1798 msgid "Text Munging" msgstr "" -#: library/re.rst:1798 +#: library/re.rst:1800 msgid "" ":func:`sub` replaces every occurrence of a pattern with a string or the " "result of a function. This example demonstrates using :func:`sub` with a " @@ -2371,7 +2375,7 @@ msgid "" "each word of a sentence except for the first and last characters::" msgstr "" -#: library/re.rst:1803 +#: library/re.rst:1805 msgid "" ">>> def repl(m):\n" "... inner_word = list(m.group(2))\n" @@ -2385,11 +2389,11 @@ msgid "" "'Pofsroser Aodlambelk, plasee reoprt yuor asnebces potlmrpy.'" msgstr "" -#: library/re.rst:1816 +#: library/re.rst:1818 msgid "Finding all Adverbs" msgstr "" -#: library/re.rst:1818 +#: library/re.rst:1820 msgid "" ":func:`findall` matches *all* occurrences of a pattern, not just the first " "one as :func:`search` does. For example, if a writer wanted to find all of " @@ -2397,18 +2401,18 @@ msgid "" "manner::" msgstr "" -#: library/re.rst:1823 +#: library/re.rst:1825 msgid "" ">>> text = \"He was carefully disguised but captured quickly by police.\"\n" ">>> re.findall(r\"\\w+ly\\b\", text)\n" "['carefully', 'quickly']" msgstr "" -#: library/re.rst:1829 +#: library/re.rst:1831 msgid "Finding all Adverbs and their Positions" msgstr "" -#: library/re.rst:1831 +#: library/re.rst:1833 msgid "" "If one wants more information about all matches of a pattern than the " "matched text, :func:`finditer` is useful as it provides :class:`~re.Match` " @@ -2417,7 +2421,7 @@ msgid "" "they would use :func:`finditer` in the following manner::" msgstr "" -#: library/re.rst:1837 +#: library/re.rst:1839 msgid "" ">>> text = \"He was carefully disguised but captured quickly by police.\"\n" ">>> for m in re.finditer(r\"\\w+ly\\b\", text):\n" @@ -2426,11 +2430,11 @@ msgid "" "40-47: quickly" msgstr "" -#: library/re.rst:1845 +#: library/re.rst:1847 msgid "Raw String Notation" msgstr "" -#: library/re.rst:1847 +#: library/re.rst:1849 msgid "" "Raw string notation (``r\"text\"``) keeps regular expressions sane. Without " "it, every backslash (``'\\'``) in a regular expression would have to be " @@ -2438,7 +2442,7 @@ msgid "" "lines of code are functionally identical::" msgstr "" -#: library/re.rst:1852 +#: library/re.rst:1854 msgid "" ">>> re.match(r\"\\W(.)\\1\\W\", \" ff \")\n" "\n" @@ -2446,7 +2450,7 @@ msgid "" "" msgstr "" -#: library/re.rst:1857 +#: library/re.rst:1859 msgid "" "When one wants to match a literal backslash, it must be escaped in the " "regular expression. With raw string notation, this means ``r\"\\\\\"``. " @@ -2454,7 +2458,7 @@ msgid "" "following lines of code functionally identical::" msgstr "" -#: library/re.rst:1862 +#: library/re.rst:1864 msgid "" ">>> re.match(r\"\\\\\", r\"\\\\\")\n" "\n" @@ -2462,25 +2466,25 @@ msgid "" "" msgstr "" -#: library/re.rst:1869 +#: library/re.rst:1871 msgid "Writing a Tokenizer" msgstr "" -#: library/re.rst:1871 +#: library/re.rst:1873 msgid "" "A `tokenizer or scanner `_ " "analyzes a string to categorize groups of characters. This is a useful " "first step in writing a compiler or interpreter." msgstr "" -#: library/re.rst:1875 +#: library/re.rst:1877 msgid "" "The text categories are specified with regular expressions. The technique " "is to combine those into a single master regular expression and to loop over " "successive matches::" msgstr "" -#: library/re.rst:1879 +#: library/re.rst:1881 msgid "" "from typing import NamedTuple\n" "import re\n" @@ -2536,11 +2540,11 @@ msgid "" " print(token)" msgstr "" -#: library/re.rst:1931 +#: library/re.rst:1933 msgid "The tokenizer produces the following output::" msgstr "" -#: library/re.rst:1933 +#: library/re.rst:1935 msgid "" "Token(type='IF', value='IF', line=2, column=4)\n" "Token(type='ID', value='quantity', line=2, column=7)\n" @@ -2563,7 +2567,7 @@ msgid "" "Token(type='END', value=';', line=5, column=9)" msgstr "" -#: library/re.rst:1954 +#: library/re.rst:1956 msgid "" "Friedl, Jeffrey. Mastering Regular Expressions. 3rd ed., O'Reilly Media, " "2009. The third edition of the book no longer covers Python at all, but the " @@ -2579,7 +2583,7 @@ msgstr "" #: library/re.rst:235 library/re.rst:258 library/re.rst:304 library/re.rst:327 #: library/re.rst:414 library/re.rst:452 library/re.rst:464 library/re.rst:498 #: library/re.rst:531 library/re.rst:548 library/re.rst:587 library/re.rst:611 -#: library/re.rst:633 library/re.rst:664 library/re.rst:866 library/re.rst:1102 +#: library/re.rst:633 library/re.rst:664 library/re.rst:866 library/re.rst:1105 msgid "in regular expressions" msgstr "" @@ -2783,10 +2787,10 @@ msgstr "" msgid "# (hash)" msgstr "" -#: library/re.rst:1102 +#: library/re.rst:1105 msgid "\\g" msgstr "" -#: library/re.rst:1650 +#: library/re.rst:1652 msgid "scanf (C function)" msgstr "" diff --git a/library/readline.po b/library/readline.po index e26685d9..9e8a4507 100644 --- a/library/readline.po +++ b/library/readline.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/removed.po b/library/removed.po index 5ff0f853..550c68ba 100644 --- a/library/removed.po +++ b/library/removed.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/reprlib.po b/library/reprlib.po index be5c2016..61300d7d 100644 --- a/library/reprlib.po +++ b/library/reprlib.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/resource.po b/library/resource.po index d14c7f1b..45df9e53 100644 --- a/library/resource.po +++ b/library/resource.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/rlcompleter.po b/library/rlcompleter.po index 4ba4e814..ed591273 100644 --- a/library/rlcompleter.po +++ b/library/rlcompleter.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/runpy.po b/library/runpy.po index 33ba6d67..c3a9842e 100644 --- a/library/runpy.po +++ b/library/runpy.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/sched.po b/library/sched.po index 2a44fe36..68dd047f 100644 --- a/library/sched.po +++ b/library/sched.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/secrets.po b/library/secrets.po index 2bccf147..474ad7bf 100644 --- a/library/secrets.po +++ b/library/secrets.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/security_warnings.po b/library/security_warnings.po index b7b3fe5c..80c118da 100644 --- a/library/security_warnings.po +++ b/library/security_warnings.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/select.po b/library/select.po index f66ab2b1..c772d97d 100644 --- a/library/select.po +++ b/library/select.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/selectors.po b/library/selectors.po index cc1f5ce0..a0e1397a 100644 --- a/library/selectors.po +++ b/library/selectors.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/shelve.po b/library/shelve.po index 20baa812..926b1fe4 100644 --- a/library/shelve.po +++ b/library/shelve.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/shlex.po b/library/shlex.po index 4cbc5ddc..4647f406 100644 --- a/library/shlex.po +++ b/library/shlex.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/shutil.po b/library/shutil.po index 6ab4937e..5466e071 100644 --- a/library/shutil.po +++ b/library/shutil.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -110,7 +110,7 @@ msgid "" "subclass of the latter, this change is backward compatible." msgstr "" -#: library/shutil.rst:185 library/shutil.rst:287 library/shutil.rst:396 +#: library/shutil.rst:185 library/shutil.rst:287 library/shutil.rst:400 msgid "" "Platform-specific fast-copy syscalls may be used internally in order to copy " "the file more efficiently. See :ref:`shutil-platform-dependent-efficient-" @@ -410,66 +410,72 @@ msgid "" "parameter it receives is the tuple returned from :func:`sys.exc_info`." msgstr "" -#: library/shutil.rst:330 +#: library/shutil.rst:331 +msgid "" +":ref:`shutil-rmtree-example` for an example of handling the removal of a " +"directory tree that contains read-only files." +msgstr "" + +#: library/shutil.rst:334 msgid "" "Raises an :ref:`auditing event ` ``shutil.rmtree`` with arguments " "``path``, ``dir_fd``." msgstr "" -#: library/shutil.rst:332 +#: library/shutil.rst:336 msgid "" "Added a symlink attack resistant version that is used automatically if " "platform supports fd-based functions." msgstr "" -#: library/shutil.rst:336 +#: library/shutil.rst:340 msgid "" "On Windows, will no longer delete the contents of a directory junction " "before removing the junction." msgstr "" -#: library/shutil.rst:340 +#: library/shutil.rst:344 msgid "Added the *dir_fd* parameter." msgstr "" -#: library/shutil.rst:343 +#: library/shutil.rst:347 msgid "Added the *onexc* parameter, deprecated *onerror*." msgstr "" -#: library/shutil.rst:346 +#: library/shutil.rst:350 msgid "" ":func:`!rmtree` now ignores :exc:`FileNotFoundError` exceptions for all but " "the top-level path. Exceptions other than :exc:`OSError` and subclasses of :" "exc:`!OSError` are now always propagated to the caller." msgstr "" -#: library/shutil.rst:354 +#: library/shutil.rst:358 msgid "" "Indicates whether the current platform and implementation provides a symlink " "attack resistant version of :func:`rmtree`. Currently this is only true for " "platforms supporting fd-based directory access functions." msgstr "" -#: library/shutil.rst:363 +#: library/shutil.rst:367 msgid "" "Recursively move a file or directory (*src*) to another location and return " "the destination." msgstr "" -#: library/shutil.rst:366 +#: library/shutil.rst:370 msgid "" "If *dst* is an existing directory or a symlink to a directory, then *src* is " "moved inside that directory. The destination path in that directory must not " "already exist." msgstr "" -#: library/shutil.rst:370 +#: library/shutil.rst:374 msgid "" "If *dst* already exists but is not a directory, it may be overwritten " "depending on :func:`os.rename` semantics." msgstr "" -#: library/shutil.rst:373 +#: library/shutil.rst:377 msgid "" "If the destination is on the current filesystem, then :func:`os.rename` is " "used. Otherwise, *src* is copied to the destination using *copy_function* " @@ -477,7 +483,7 @@ msgid "" "of *src* will be created as the destination and *src* will be removed." msgstr "" -#: library/shutil.rst:378 +#: library/shutil.rst:382 msgid "" "If *copy_function* is given, it must be a callable that takes two arguments, " "*src* and the destination, and will be used to copy *src* to the destination " @@ -488,85 +494,85 @@ msgid "" "copy the metadata, at the expense of not copying any of the metadata." msgstr "" -#: library/shutil.rst:386 +#: library/shutil.rst:390 msgid "" "Raises an :ref:`auditing event ` ``shutil.move`` with arguments " "``src``, ``dst``." msgstr "" -#: library/shutil.rst:388 +#: library/shutil.rst:392 msgid "" "Added explicit symlink handling for foreign filesystems, thus adapting it to " "the behavior of GNU's :program:`mv`. Now returns *dst*." msgstr "" -#: library/shutil.rst:393 +#: library/shutil.rst:397 msgid "Added the *copy_function* keyword argument." msgstr "" -#: library/shutil.rst:401 +#: library/shutil.rst:405 msgid "Accepts a :term:`path-like object` for both *src* and *dst*." msgstr "" -#: library/shutil.rst:406 +#: library/shutil.rst:410 msgid "" "Return disk usage statistics about the given path as a :term:`named tuple` " "with the attributes *total*, *used* and *free*, which are the amount of " "total, used and free space, in bytes. *path* may be a file or a directory." msgstr "" -#: library/shutil.rst:413 +#: library/shutil.rst:417 msgid "" "On Unix filesystems, *path* must point to a path within a **mounted** " "filesystem partition. On those platforms, CPython doesn't attempt to " "retrieve disk usage information from non-mounted filesystems." msgstr "" -#: library/shutil.rst:419 +#: library/shutil.rst:423 msgid "On Windows, *path* can now be a file or directory." msgstr "" -#: library/shutil.rst:436 +#: library/shutil.rst:440 msgid "Availability" msgstr "" -#: library/shutil.rst:427 +#: library/shutil.rst:431 msgid "Change owner *user* and/or *group* of the given *path*." msgstr "" -#: library/shutil.rst:429 +#: library/shutil.rst:433 msgid "" "*user* can be a system user name or a uid; the same applies to *group*. At " "least one argument is required." msgstr "" -#: library/shutil.rst:432 +#: library/shutil.rst:436 msgid "See also :func:`os.chown`, the underlying function." msgstr "" -#: library/shutil.rst:434 +#: library/shutil.rst:438 msgid "" "Raises an :ref:`auditing event ` ``shutil.chown`` with arguments " "``path``, ``user``, ``group``." msgstr "" -#: library/shutil.rst:440 +#: library/shutil.rst:444 msgid "Added *dir_fd* and *follow_symlinks* parameters." msgstr "" -#: library/shutil.rst:446 +#: library/shutil.rst:450 msgid "" "Return the path to an executable which would be run if the given *cmd* was " "called. If no *cmd* would be called, return ``None``." msgstr "" -#: library/shutil.rst:449 +#: library/shutil.rst:453 msgid "" "*mode* is a permission mask passed to :func:`os.access`, by default " "determining if the file exists and is executable." msgstr "" -#: library/shutil.rst:452 +#: library/shutil.rst:456 msgid "" "*path* is a \"``PATH`` string\" specifying the directories to look in, " "delimited by :data:`os.pathsep`. When no *path* is specified, the :envvar:" @@ -574,7 +580,14 @@ msgid "" "to :data:`os.defpath` if it is not set." msgstr "" -#: library/shutil.rst:457 +#: library/shutil.rst:461 +msgid "" +"If *cmd* contains a directory component, :func:`!which` only checks the " +"specified path directly and does not search the directories listed in *path* " +"or in the system's :envvar:`PATH` environment variable." +msgstr "" + +#: library/shutil.rst:465 msgid "" "On Windows, the current directory is prepended to the *path* if *mode* does " "not include ``os.X_OK``. When the *mode* does include ``os.X_OK``, the " @@ -584,7 +597,7 @@ msgid "" "environment variable ``NoDefaultCurrentDirectoryInExePath``." msgstr "" -#: library/shutil.rst:464 +#: library/shutil.rst:472 msgid "" "Also on Windows, the :envvar:`PATHEXT` environment variable is used to " "resolve commands that may not already include an extension. For example, if " @@ -593,31 +606,31 @@ msgid "" "directories. For example, on Windows::" msgstr "" -#: library/shutil.rst:470 +#: library/shutil.rst:478 msgid "" ">>> shutil.which(\"python\")\n" "'C:\\\\Python33\\\\python.EXE'" msgstr "" -#: library/shutil.rst:473 +#: library/shutil.rst:481 msgid "" "This is also applied when *cmd* is a path that contains a directory " "component::" msgstr "" -#: library/shutil.rst:476 +#: library/shutil.rst:484 msgid "" ">>> shutil.which(\"C:\\\\Python33\\\\python\")\n" "'C:\\\\Python33\\\\python.EXE'" msgstr "" -#: library/shutil.rst:481 +#: library/shutil.rst:489 msgid "" "The :class:`bytes` type is now accepted. If *cmd* type is :class:`bytes`, " "the result type is also :class:`bytes`." msgstr "" -#: library/shutil.rst:485 +#: library/shutil.rst:493 msgid "" "On Windows, the current directory is no longer prepended to the search path " "if *mode* includes ``os.X_OK`` and WinAPI " @@ -628,18 +641,18 @@ msgid "" "now be found." msgstr "" -#: library/shutil.rst:496 +#: library/shutil.rst:504 msgid "" "This exception collects exceptions that are raised during a multi-file " "operation. For :func:`copytree`, the exception argument is a list of 3-" "tuples (*srcname*, *dstname*, *exception*)." msgstr "" -#: library/shutil.rst:503 +#: library/shutil.rst:511 msgid "Platform-dependent efficient copy operations" msgstr "" -#: library/shutil.rst:505 +#: library/shutil.rst:513 msgid "" "Starting from Python 3.8, all functions involving a file copy (:func:" "`copyfile`, :func:`~shutil.copy`, :func:`copy2`, :func:`copytree`, and :func:" @@ -649,68 +662,68 @@ msgid "" "buffers in Python as in \"``outfd.write(infd.read())``\"." msgstr "" -#: library/shutil.rst:513 +#: library/shutil.rst:521 msgid "On macOS `fcopyfile`_ is used to copy the file content (not metadata)." msgstr "" -#: library/shutil.rst:515 +#: library/shutil.rst:523 msgid "On Linux :func:`os.copy_file_range` or :func:`os.sendfile` is used." msgstr "" -#: library/shutil.rst:517 +#: library/shutil.rst:525 msgid "On Solaris :func:`os.sendfile` is used." msgstr "" -#: library/shutil.rst:519 +#: library/shutil.rst:527 msgid "" "On Windows :func:`shutil.copyfile` uses a bigger default buffer size (1 MiB " "instead of 64 KiB) and a :func:`memoryview`-based variant of :func:`shutil." "copyfileobj` is used." msgstr "" -#: library/shutil.rst:523 +#: library/shutil.rst:531 msgid "" "If the fast-copy operation fails and no data was written in the destination " "file then shutil will silently fallback on using less efficient :func:" "`copyfileobj` function internally." msgstr "" -#: library/shutil.rst:529 +#: library/shutil.rst:537 msgid "Solaris now uses :func:`os.sendfile`." msgstr "" -#: library/shutil.rst:532 +#: library/shutil.rst:540 msgid "" "Copy-on-write or server-side copy may be used internally via :func:`os." "copy_file_range` on supported Linux filesystems." msgstr "" -#: library/shutil.rst:539 +#: library/shutil.rst:547 msgid "copytree example" msgstr "" -#: library/shutil.rst:541 +#: library/shutil.rst:549 msgid "An example that uses the :func:`ignore_patterns` helper::" msgstr "" -#: library/shutil.rst:543 +#: library/shutil.rst:551 msgid "" "from shutil import copytree, ignore_patterns\n" "\n" "copytree(source, destination, ignore=ignore_patterns('*.pyc', 'tmp*'))" msgstr "" -#: library/shutil.rst:547 +#: library/shutil.rst:555 msgid "" "This will copy everything except ``.pyc`` files and files or directories " "whose name starts with ``tmp``." msgstr "" -#: library/shutil.rst:550 +#: library/shutil.rst:558 msgid "Another example that uses the *ignore* argument to add a logging call::" msgstr "" -#: library/shutil.rst:552 +#: library/shutil.rst:560 msgid "" "from shutil import copytree\n" "import logging\n" @@ -722,11 +735,11 @@ msgid "" "copytree(source, destination, ignore=_logpath)" msgstr "" -#: library/shutil.rst:565 +#: library/shutil.rst:573 msgid "rmtree example" msgstr "" -#: library/shutil.rst:567 +#: library/shutil.rst:575 msgid "" "This example shows how to remove a directory tree on Windows where some of " "the files have their read-only bit set. It uses the onexc callback to clear " @@ -734,7 +747,7 @@ msgid "" "propagate. ::" msgstr "" -#: library/shutil.rst:572 +#: library/shutil.rst:580 msgid "" "import os, stat\n" "import shutil\n" @@ -747,31 +760,31 @@ msgid "" "shutil.rmtree(directory, onexc=remove_readonly)" msgstr "" -#: library/shutil.rst:585 +#: library/shutil.rst:593 msgid "Archiving operations" msgstr "" -#: library/shutil.rst:589 +#: library/shutil.rst:597 msgid "Added support for the *xztar* format." msgstr "" -#: library/shutil.rst:593 +#: library/shutil.rst:601 msgid "" "High-level utilities to create and read compressed and archived files are " "also provided. They rely on the :mod:`zipfile` and :mod:`tarfile` modules." msgstr "" -#: library/shutil.rst:598 +#: library/shutil.rst:606 msgid "Create an archive file (such as zip or tar) and return its name." msgstr "" -#: library/shutil.rst:600 +#: library/shutil.rst:608 msgid "" "*base_name* is the name of the file to create, including the path, minus any " "format-specific extension." msgstr "" -#: library/shutil.rst:603 +#: library/shutil.rst:611 msgid "" "*format* is the archive format: one of \"zip\" (if the :mod:`zlib` module is " "available), \"tar\", \"gztar\" (if the :mod:`zlib` module is available), " @@ -779,14 +792,14 @@ msgid "" "`lzma` module is available)." msgstr "" -#: library/shutil.rst:608 +#: library/shutil.rst:616 msgid "" "*root_dir* is a directory that will be the root directory of the archive, " "all paths in the archive will be relative to it; for example, we typically " "chdir into *root_dir* before creating the archive." msgstr "" -#: library/shutil.rst:612 +#: library/shutil.rst:620 msgid "" "*base_dir* is the directory where we start archiving from; i.e. *base_dir* " "will be the common prefix of all files and directories in the archive. " @@ -794,39 +807,39 @@ msgid "" "example-with-basedir` for how to use *base_dir* and *root_dir* together." msgstr "" -#: library/shutil.rst:618 +#: library/shutil.rst:626 msgid "*root_dir* and *base_dir* both default to the current directory." msgstr "" -#: library/shutil.rst:620 +#: library/shutil.rst:628 msgid "" "If *dry_run* is true, no archive is created, but the operations that would " "be executed are logged to *logger*." msgstr "" -#: library/shutil.rst:623 +#: library/shutil.rst:631 msgid "" "*owner* and *group* are used when creating a tar archive. By default, uses " "the current owner and group." msgstr "" -#: library/shutil.rst:626 +#: library/shutil.rst:634 msgid "" "*logger* must be an object compatible with :pep:`282`, usually an instance " "of :class:`logging.Logger`." msgstr "" -#: library/shutil.rst:629 +#: library/shutil.rst:637 msgid "The *verbose* argument is unused and deprecated." msgstr "" -#: library/shutil.rst:631 +#: library/shutil.rst:639 msgid "" "Raises an :ref:`auditing event ` ``shutil.make_archive`` with " "arguments ``base_name``, ``format``, ``root_dir``, ``base_dir``." msgstr "" -#: library/shutil.rst:635 +#: library/shutil.rst:643 msgid "" "This function is not thread-safe when custom archivers registered with :func:" "`register_archive_format` do not support the *root_dir* argument. In this " @@ -834,60 +847,60 @@ msgid "" "*root_dir* to perform archiving." msgstr "" -#: library/shutil.rst:641 +#: library/shutil.rst:649 msgid "" "The modern pax (POSIX.1-2001) format is now used instead of the legacy GNU " "format for archives created with ``format=\"tar\"``." msgstr "" -#: library/shutil.rst:645 +#: library/shutil.rst:653 msgid "" "This function is now made thread-safe during creation of standard ``.zip`` " "and tar archives." msgstr "" -#: library/shutil.rst:651 +#: library/shutil.rst:659 msgid "" "Return a list of supported formats for archiving. Each element of the " "returned sequence is a tuple ``(name, description)``." msgstr "" -#: library/shutil.rst:769 +#: library/shutil.rst:777 msgid "By default :mod:`shutil` provides these formats:" msgstr "" -#: library/shutil.rst:656 +#: library/shutil.rst:664 msgid "*zip*: ZIP file (if the :mod:`zlib` module is available)." msgstr "" -#: library/shutil.rst:657 +#: library/shutil.rst:665 msgid "" "*tar*: Uncompressed tar file. Uses POSIX.1-2001 pax format for new archives." msgstr "" -#: library/shutil.rst:774 +#: library/shutil.rst:782 msgid "*gztar*: gzip'ed tar-file (if the :mod:`zlib` module is available)." msgstr "" -#: library/shutil.rst:775 +#: library/shutil.rst:783 msgid "*bztar*: bzip2'ed tar-file (if the :mod:`bz2` module is available)." msgstr "" -#: library/shutil.rst:776 +#: library/shutil.rst:784 msgid "*xztar*: xz'ed tar-file (if the :mod:`lzma` module is available)." msgstr "" -#: library/shutil.rst:662 +#: library/shutil.rst:670 msgid "" "You can register new formats or provide your own archiver for any existing " "formats, by using :func:`register_archive_format`." msgstr "" -#: library/shutil.rst:668 +#: library/shutil.rst:676 msgid "Register an archiver for the format *name*." msgstr "" -#: library/shutil.rst:670 +#: library/shutil.rst:678 msgid "" "*function* is the callable that will be used to unpack archives. The " "callable will receive the *base_name* of the file to create, followed by the " @@ -896,7 +909,7 @@ msgid "" "*dry_run* and *logger* (as passed in :func:`make_archive`)." msgstr "" -#: library/shutil.rst:676 +#: library/shutil.rst:684 msgid "" "If *function* has the custom attribute ``function.supports_root_dir`` set to " "``True``, the *root_dir* argument is passed as a keyword argument. Otherwise " @@ -905,37 +918,37 @@ msgid "" "not thread-safe." msgstr "" -#: library/shutil.rst:682 +#: library/shutil.rst:690 msgid "" "If given, *extra_args* is a sequence of ``(name, value)`` pairs that will be " "used as extra keywords arguments when the archiver callable is used." msgstr "" -#: library/shutil.rst:685 +#: library/shutil.rst:693 msgid "" "*description* is used by :func:`get_archive_formats` which returns the list " "of archivers. Defaults to an empty string." msgstr "" -#: library/shutil.rst:688 +#: library/shutil.rst:696 msgid "Added support for functions supporting the *root_dir* argument." msgstr "" -#: library/shutil.rst:694 +#: library/shutil.rst:702 msgid "Remove the archive format *name* from the list of supported formats." msgstr "" -#: library/shutil.rst:699 +#: library/shutil.rst:707 msgid "Unpack an archive. *filename* is the full path of the archive." msgstr "" -#: library/shutil.rst:701 +#: library/shutil.rst:709 msgid "" "*extract_dir* is the name of the target directory where the archive is " "unpacked. If not provided, the current working directory is used." msgstr "" -#: library/shutil.rst:704 +#: library/shutil.rst:712 msgid "" "*format* is the archive format: one of \"zip\", \"tar\", \"gztar\", " "\"bztar\", or \"xztar\". Or any other format registered with :func:" @@ -944,7 +957,7 @@ msgid "" "that extension. In case none is found, a :exc:`ValueError` is raised." msgstr "" -#: library/shutil.rst:711 +#: library/shutil.rst:719 msgid "" "The keyword-only *filter* argument is passed to the underlying unpacking " "function. For zip files, *filter* is not accepted. For tar files, it is " @@ -953,13 +966,13 @@ msgid "" "extraction-filter` for details.)" msgstr "" -#: library/shutil.rst:717 +#: library/shutil.rst:725 msgid "" "Raises an :ref:`auditing event ` ``shutil.unpack_archive`` with " "arguments ``filename``, ``extract_dir``, ``format``." msgstr "" -#: library/shutil.rst:721 +#: library/shutil.rst:729 msgid "" "Never extract archives from untrusted sources without prior inspection. It " "is possible that files are created outside of the path specified in the " @@ -967,7 +980,7 @@ msgid "" "with \"/\" or filenames with two dots \"..\"." msgstr "" -#: library/shutil.rst:726 +#: library/shutil.rst:734 msgid "" "Since Python 3.14, the defaults for both built-in formats (zip and tar " "files) will prevent the most dangerous of such security issues, but will not " @@ -975,91 +988,91 @@ msgid "" "verification` section for tar-specific details." msgstr "" -#: library/shutil.rst:732 +#: library/shutil.rst:740 msgid "Accepts a :term:`path-like object` for *filename* and *extract_dir*." msgstr "" -#: library/shutil.rst:735 +#: library/shutil.rst:743 msgid "Added the *filter* argument." msgstr "" -#: library/shutil.rst:740 +#: library/shutil.rst:748 msgid "" "Registers an unpack format. *name* is the name of the format and " "*extensions* is a list of extensions corresponding to the format, like ``." "zip`` for Zip files." msgstr "" -#: library/shutil.rst:744 +#: library/shutil.rst:752 msgid "" "*function* is the callable that will be used to unpack archives. The " "callable will receive:" msgstr "" -#: library/shutil.rst:747 +#: library/shutil.rst:755 msgid "the path of the archive, as a positional argument;" msgstr "" -#: library/shutil.rst:748 +#: library/shutil.rst:756 msgid "" "the directory the archive must be extracted to, as a positional argument;" msgstr "" -#: library/shutil.rst:749 +#: library/shutil.rst:757 msgid "" "possibly a *filter* keyword argument, if it was given to :func:" "`unpack_archive`;" msgstr "" -#: library/shutil.rst:751 +#: library/shutil.rst:759 msgid "" "additional keyword arguments, specified by *extra_args* as a sequence of " "``(name, value)`` tuples." msgstr "" -#: library/shutil.rst:754 +#: library/shutil.rst:762 msgid "" "*description* can be provided to describe the format, and will be returned " "by the :func:`get_unpack_formats` function." msgstr "" -#: library/shutil.rst:760 +#: library/shutil.rst:768 msgid "Unregister an unpack format. *name* is the name of the format." msgstr "" -#: library/shutil.rst:765 +#: library/shutil.rst:773 msgid "" "Return a list of all registered formats for unpacking. Each element of the " "returned sequence is a tuple ``(name, extensions, description)``." msgstr "" -#: library/shutil.rst:771 +#: library/shutil.rst:779 msgid "" "*zip*: ZIP file (unpacking compressed files works only if the corresponding " "module is available)." msgstr "" -#: library/shutil.rst:773 +#: library/shutil.rst:781 msgid "*tar*: uncompressed tar file." msgstr "" -#: library/shutil.rst:778 +#: library/shutil.rst:786 msgid "" "You can register new formats or provide your own unpacker for any existing " "formats, by using :func:`register_unpack_format`." msgstr "" -#: library/shutil.rst:785 +#: library/shutil.rst:793 msgid "Archiving example" msgstr "" -#: library/shutil.rst:787 +#: library/shutil.rst:795 msgid "" "In this example, we create a gzip'ed tar-file archive containing all files " "found in the :file:`.ssh` directory of the user::" msgstr "" -#: library/shutil.rst:790 +#: library/shutil.rst:798 msgid "" ">>> from shutil import make_archive\n" ">>> import os\n" @@ -1069,11 +1082,11 @@ msgid "" "'/Users/tarek/myarchive.tar.gz'" msgstr "" -#: library/shutil.rst:797 +#: library/shutil.rst:805 msgid "The resulting archive contains:" msgstr "" -#: library/shutil.rst:799 +#: library/shutil.rst:807 msgid "" "$ tar -tzvf /Users/tarek/myarchive.tar.gz\n" "drwx------ tarek/staff 0 2010-02-01 16:23:40 ./\n" @@ -1086,18 +1099,18 @@ msgid "" "-rw-r--r-- tarek/staff 37192 2010-02-06 18:23:10 ./known_hosts" msgstr "" -#: library/shutil.rst:815 +#: library/shutil.rst:823 msgid "Archiving example with *base_dir*" msgstr "" -#: library/shutil.rst:817 +#: library/shutil.rst:825 msgid "" "In this example, similar to the `one above `_, we " "show how to use :func:`make_archive`, but this time with the usage of " "*base_dir*. We now have the following directory structure:" msgstr "" -#: library/shutil.rst:821 +#: library/shutil.rst:829 msgid "" "$ tree tmp\n" "tmp\n" @@ -1108,13 +1121,13 @@ msgid "" " └── do_not_add.txt" msgstr "" -#: library/shutil.rst:831 +#: library/shutil.rst:839 msgid "" "In the final archive, :file:`please_add.txt` should be included, but :file:" "`do_not_add.txt` should not. Therefore we use the following::" msgstr "" -#: library/shutil.rst:834 +#: library/shutil.rst:842 msgid "" ">>> from shutil import make_archive\n" ">>> import os\n" @@ -1128,40 +1141,40 @@ msgid "" "'/Users/tarek/my_archive.tar'" msgstr "" -#: library/shutil.rst:845 +#: library/shutil.rst:853 msgid "Listing the files in the resulting archive gives us:" msgstr "" -#: library/shutil.rst:847 +#: library/shutil.rst:855 msgid "" "$ python -m tarfile -l /Users/tarek/myarchive.tar\n" "structure/content/\n" "structure/content/please_add.txt" msgstr "" -#: library/shutil.rst:855 +#: library/shutil.rst:863 msgid "Querying the size of the output terminal" msgstr "" -#: library/shutil.rst:859 +#: library/shutil.rst:867 msgid "Get the size of the terminal window." msgstr "" -#: library/shutil.rst:861 +#: library/shutil.rst:869 msgid "" "For each of the two dimensions, the environment variable, ``COLUMNS`` and " "``LINES`` respectively, is checked. If the variable is defined and the value " "is a positive integer, it is used." msgstr "" -#: library/shutil.rst:865 +#: library/shutil.rst:873 msgid "" "When ``COLUMNS`` or ``LINES`` is not defined, which is the common case, the " "terminal connected to :data:`sys.__stdout__` is queried by invoking :func:" "`os.get_terminal_size`." msgstr "" -#: library/shutil.rst:869 +#: library/shutil.rst:877 msgid "" "If the terminal size cannot be successfully queried, either because the " "system doesn't support querying, or because we are not connected to a " @@ -1170,17 +1183,17 @@ msgid "" "emulators." msgstr "" -#: library/shutil.rst:875 +#: library/shutil.rst:883 msgid "The value returned is a named tuple of type :class:`os.terminal_size`." msgstr "" -#: library/shutil.rst:877 +#: library/shutil.rst:885 msgid "" "See also: The Single UNIX Specification, Version 2, `Other Environment " "Variables`_." msgstr "" -#: library/shutil.rst:882 +#: library/shutil.rst:890 msgid "" "The ``fallback`` values are also used if :func:`os.get_terminal_size` " "returns zeroes." diff --git a/library/signal.po b/library/signal.po index 548298f1..54094de7 100644 --- a/library/signal.po +++ b/library/signal.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/site.po b/library/site.po index 84964488..2fad0457 100644 --- a/library/site.po +++ b/library/site.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/smtpd.po b/library/smtpd.po index 5325ad02..b96ecbf8 100644 --- a/library/smtpd.po +++ b/library/smtpd.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/smtplib.po b/library/smtplib.po index baa01091..c9834ca4 100644 --- a/library/smtplib.po +++ b/library/smtplib.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/sndhdr.po b/library/sndhdr.po index 59ba65c7..4098a13e 100644 --- a/library/sndhdr.po +++ b/library/sndhdr.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/socket.po b/library/socket.po index 8e1bb9b5..d2a3601c 100644 --- a/library/socket.po +++ b/library/socket.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -1644,7 +1644,7 @@ msgid "" "`~socket.sendmsg` for the documentation of these parameters." msgstr "" -#: library/socket.rst:1511 +#: library/socket.rst:1497 msgid "" "Unix platforms supporting :meth:`~socket.sendmsg` and :const:`SCM_RIGHTS` " "mechanism." @@ -1657,6 +1657,12 @@ msgid "" "recvmsg` for the documentation of these parameters." msgstr "" +#: library/socket.rst:1511 +msgid "" +"Unix platforms supporting :meth:`~socket.recvmsg` and :const:`SCM_RIGHTS` " +"mechanism." +msgstr "" + #: library/socket.rst:1518 msgid "Any truncated integers at the end of the list of file descriptors." msgstr "" diff --git a/library/socketserver.po b/library/socketserver.po index 37ad93dc..37888b35 100644 --- a/library/socketserver.po +++ b/library/socketserver.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/spwd.po b/library/spwd.po index e4ad1ed7..248a71c7 100644 --- a/library/spwd.po +++ b/library/spwd.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/sqlite3.po b/library/sqlite3.po index 1c463497..7626c886 100644 --- a/library/sqlite3.po +++ b/library/sqlite3.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -1762,10 +1762,13 @@ msgid "" msgstr "" #: library/sqlite3.rst:1494 -msgid "If *sql* contains more than one SQL statement." +msgid "" +"When *sql* contains more than one SQL statement. When :ref:`named " +"placeholders ` are used and *parameters* is a sequence " +"instead of a :class:`dict`." msgstr "" -#: library/sqlite3.rst:1497 +#: library/sqlite3.rst:1499 msgid "" "If :attr:`~Connection.autocommit` is :data:`LEGACY_TRANSACTION_CONTROL`, :" "attr:`~Connection.isolation_level` is not ``None``, *sql* is an ``INSERT``, " @@ -1773,12 +1776,11 @@ msgid "" "transaction, a transaction is implicitly opened before executing *sql*." msgstr "" -#: library/sqlite3.rst:1506 +#: library/sqlite3.rst:1508 msgid "" -":exc:`DeprecationWarning` is emitted if :ref:`named placeholders ` are used and *parameters* is a sequence instead of a :class:" -"`dict`. Starting with Python 3.14, :exc:`ProgrammingError` will be raised " -"instead." +"`dict`." msgstr "" #: library/sqlite3.rst:1512 @@ -1808,10 +1810,12 @@ msgstr "" #: library/sqlite3.rst:1531 msgid "" -"If *sql* contains more than one SQL statement, or is not a DML statement." +"When *sql* contains more than one SQL statement or is not a DML statement, " +"When :ref:`named placeholders ` are used and the items " +"in *parameters* are sequences instead of :class:`dict`\\s." msgstr "" -#: library/sqlite3.rst:1537 +#: library/sqlite3.rst:1539 msgid "" "rows = [\n" " (\"row1\",),\n" @@ -1821,18 +1825,17 @@ msgid "" "cur.executemany(\"INSERT INTO data VALUES(?)\", rows)" msgstr "" -#: library/sqlite3.rst:1552 +#: library/sqlite3.rst:1554 msgid "" "Any resulting rows are discarded, including DML statements with `RETURNING " "clauses`_." msgstr "" -#: library/sqlite3.rst:1559 +#: library/sqlite3.rst:1561 msgid "" -":exc:`DeprecationWarning` is emitted if :ref:`named placeholders ` are used and the items in *parameters* are sequences instead " -"of :class:`dict`\\s. Starting with Python 3.14, :exc:`ProgrammingError` will " -"be raised instead." +"of :class:`dict`\\s." msgstr "" #: library/sqlite3.rst:1568 diff --git a/library/ssl.po b/library/ssl.po index 64247aaf..6104b7ea 100644 --- a/library/ssl.po +++ b/library/ssl.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/stat.po b/library/stat.po index 02605d58..5a90417c 100644 --- a/library/stat.po +++ b/library/stat.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/statistics.po b/library/statistics.po index aa358ba7..b3f5d34e 100644 --- a/library/statistics.po +++ b/library/statistics.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/stdtypes.po b/library/stdtypes.po index b3c334de..6ad2ac8b 100644 --- a/library/stdtypes.po +++ b/library/stdtypes.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-03 00:13+0300\n" "Last-Translator: Theofanis Petkos \n" "Language-Team: PyGreece \n" @@ -135,16 +135,16 @@ msgstr "" "Αυτές είναι οι λογικές (Boolean) πράξεις, ταξινομημένες βάσει προτεραιότητας:" #: library/stdtypes.rst:144 library/stdtypes.rst:372 library/stdtypes.rst:1007 -#: library/stdtypes.rst:1212 +#: library/stdtypes.rst:1215 msgid "Operation" msgstr "Πράξη" -#: library/stdtypes.rst:282 library/stdtypes.rst:422 library/stdtypes.rst:1212 +#: library/stdtypes.rst:282 library/stdtypes.rst:422 library/stdtypes.rst:1215 msgid "Result" msgstr "Αποτέλεσμα" -#: library/stdtypes.rst:282 library/stdtypes.rst:1007 library/stdtypes.rst:2714 -#: library/stdtypes.rst:3973 +#: library/stdtypes.rst:282 library/stdtypes.rst:1007 library/stdtypes.rst:2770 +#: library/stdtypes.rst:4029 msgid "Notes" msgstr "Σημειώσεις" @@ -156,8 +156,8 @@ msgstr "``x or y``" msgid "if *x* is true, then *x*, else *y*" msgstr "αν το *x* είναι true, τότε *x*, αλλιώς *y*" -#: library/stdtypes.rst:1009 library/stdtypes.rst:1223 -#: library/stdtypes.rst:3979 +#: library/stdtypes.rst:1009 library/stdtypes.rst:1228 +#: library/stdtypes.rst:4035 msgid "\\(1)" msgstr "\\(1)" @@ -169,8 +169,8 @@ msgstr "``x and y``" msgid "if *x* is false, then *x*, else *y*" msgstr "αν το *x* είναι false, τότε *x*, αλλιώς *y*" -#: library/stdtypes.rst:295 library/stdtypes.rst:1251 library/stdtypes.rst:2726 -#: library/stdtypes.rst:3985 +#: library/stdtypes.rst:295 library/stdtypes.rst:1256 library/stdtypes.rst:2782 +#: library/stdtypes.rst:4041 msgid "\\(2)" msgstr "\\(2)" @@ -182,14 +182,14 @@ msgstr "``not x``" msgid "if *x* is false, then ``True``, else ``False``" msgstr "if *x* είναι false, τότε ``True``, αλλιώς ``False``" -#: library/stdtypes.rst:1021 library/stdtypes.rst:2728 -#: library/stdtypes.rst:2732 library/stdtypes.rst:3987 -#: library/stdtypes.rst:3991 library/stdtypes.rst:3993 +#: library/stdtypes.rst:1259 library/stdtypes.rst:2786 +#: library/stdtypes.rst:2790 library/stdtypes.rst:4045 +#: library/stdtypes.rst:4049 msgid "\\(3)" msgstr "\\(3)" -#: library/stdtypes.rst:326 library/stdtypes.rst:1058 library/stdtypes.rst:2760 -#: library/stdtypes.rst:4023 +#: library/stdtypes.rst:326 library/stdtypes.rst:1058 library/stdtypes.rst:2816 +#: library/stdtypes.rst:4079 msgid "Notes:" msgstr "Σημειώσεις:" @@ -241,8 +241,8 @@ msgstr "" msgid "This table summarizes the comparison operations:" msgstr "Αυτός ο πίνακας συνοψίζει τις πράξεις σύγκρισης:" -#: library/stdtypes.rst:2546 library/stdtypes.rst:2714 -#: library/stdtypes.rst:3973 +#: library/stdtypes.rst:2602 library/stdtypes.rst:2770 +#: library/stdtypes.rst:4029 msgid "Meaning" msgstr "Έννοια" @@ -598,7 +598,7 @@ msgstr "" "ένας μιγαδικός αριθμός με πραγματικό μέρος *re*, φανταστικό μέρος *im*. Το " "*im* μετατρέπεται αυτόματα σε μηδέν." -#: library/stdtypes.rst:1244 library/stdtypes.rst:4010 +#: library/stdtypes.rst:1249 library/stdtypes.rst:4066 msgid "\\(6)" msgstr "\\(6)" @@ -634,8 +634,8 @@ msgstr "``pow(x, y)``" msgid "*x* to the power *y*" msgstr "*x* σε δύναμη του *y*" -#: library/stdtypes.rst:319 library/stdtypes.rst:1236 library/stdtypes.rst:2750 -#: library/stdtypes.rst:4006 library/stdtypes.rst:4013 +#: library/stdtypes.rst:319 library/stdtypes.rst:1241 library/stdtypes.rst:2806 +#: library/stdtypes.rst:4062 library/stdtypes.rst:4069 msgid "\\(5)" msgstr "\\(5)" @@ -810,8 +810,8 @@ msgstr "``x | y``" msgid "bitwise :dfn:`or` of *x* and *y*" msgstr "bitwise :dfn:`or` των *x* και *y*" -#: library/stdtypes.rst:427 library/stdtypes.rst:1258 library/stdtypes.rst:2740 -#: library/stdtypes.rst:3999 +#: library/stdtypes.rst:427 library/stdtypes.rst:1263 library/stdtypes.rst:2796 +#: library/stdtypes.rst:4055 msgid "\\(4)" msgstr "\\(4)" @@ -1898,6 +1898,10 @@ msgstr "``s[i]``" msgid "*i*\\ th item of *s*, origin 0" msgstr "*i*\\ ο στοιχείο του *s*, αρχή το 0" +#: library/stdtypes.rst:1021 +msgid "(3)(9)" +msgstr "(3)(9)" + #: library/stdtypes.rst:1023 msgid "``s[i:j]``" msgstr "``s[i:j]``" @@ -1958,7 +1962,7 @@ msgstr "" "δείκτης της πρώτης εμφάνισης του *x* στο *s* (μετά από τον ή στον δείκτη *i* " "και πριν από το δείκτη *j*)" -#: library/stdtypes.rst:3981 +#: library/stdtypes.rst:4037 msgid "\\(8)" msgstr "\\(8)" @@ -2209,11 +2213,17 @@ msgstr "" "δεδομένα και με τον επιστρεφόμενο δείκτη να είναι σχετικός με την αρχή της " "ακολουθίας και όχι στην αρχή του υποσυνόλου (slice)." -#: library/stdtypes.rst:1157 +#: library/stdtypes.rst:1154 +msgid "An :exc:`IndexError` is raised if *i* is outside the sequence range." +msgstr "" +"Μια :exc:`IndexError` γίνεται raise εάν το *i* βρίσκεται εκτός του εύρους " +"ακολουθίας." + +#: library/stdtypes.rst:1160 msgid "Immutable Sequence Types" msgstr "Τύποι Αμετάβλητων Ακολουθιών (Sequences)" -#: library/stdtypes.rst:1164 +#: library/stdtypes.rst:1167 msgid "" "The only operation that immutable sequence types generally implement that is " "not also implemented by mutable sequence types is support for the :func:" @@ -2223,7 +2233,7 @@ msgstr "" "δεν είναι υλοποιημένοι από μεταβλητούς τύπους ακολουθίας, είναι η υποστήριξη " "της :func:`hash` built-in." -#: library/stdtypes.rst:1168 +#: library/stdtypes.rst:1171 msgid "" "This support allows immutable sequences, such as :class:`tuple` instances, " "to be used as :class:`dict` keys and stored in :class:`set` and :class:" @@ -2233,7 +2243,7 @@ msgstr "" "class:`tuple`, να χρησιμοποιούνται ως κλειδιά :class:`dict` και να " "αποθηκεύονται σε :class:`set` και :class:`frozenset` instances." -#: library/stdtypes.rst:1172 +#: library/stdtypes.rst:1175 msgid "" "Attempting to hash an immutable sequence that contains unhashable values " "will result in :exc:`TypeError`." @@ -2241,11 +2251,11 @@ msgstr "" "Η προσπάθεια κατακερματισμού μιας αμετάβλητης ακολουθίας που περιέχει μη " "κατακερματιστέες (unhashable) τιμές θα οδηγήσει σε :exc:`TypeError`." -#: library/stdtypes.rst:1179 +#: library/stdtypes.rst:1182 msgid "Mutable Sequence Types" msgstr "Τύποι Μεταβλητών Ακολουθιών (Sequences)" -#: library/stdtypes.rst:1186 +#: library/stdtypes.rst:1189 msgid "" "The operations in the following table are defined on mutable sequence types. " "The :class:`collections.abc.MutableSequence` ABC is provided to make it " @@ -2256,7 +2266,7 @@ msgstr "" "κάνει ευκολότερη την σωστή υλοποίηση αυτών των λειτουργιών σε " "προσαρμοσμένους τύπους ακολουθιών." -#: library/stdtypes.rst:1190 +#: library/stdtypes.rst:1193 msgid "" "In the table *s* is an instance of a mutable sequence type, *t* is any " "iterable object and *x* is an arbitrary object that meets any type and value " @@ -2269,80 +2279,88 @@ msgstr "" "επιβάλλονται από το *s* (για παράδειγμα, το :class:`bytearray` δέχεται μόνο " "ακέραιους που πληρούν τον περιορισμό ``0 <= x <= 255``)." -#: library/stdtypes.rst:1214 +#: library/stdtypes.rst:1217 msgid "``s[i] = x``" msgstr "``s[i] = x``" -#: library/stdtypes.rst:1214 +#: library/stdtypes.rst:1217 msgid "item *i* of *s* is replaced by *x*" msgstr "το στοιχείο *i* του *s* αντικαθίσταται από το *x*" -#: library/stdtypes.rst:1217 +#: library/stdtypes.rst:1220 +msgid "``del s[i]``" +msgstr "``del s[i]``" + +#: library/stdtypes.rst:1220 +msgid "removes item *i* of *s*" +msgstr "αφαιρεί το στοιχείο *i* από το *s*" + +#: library/stdtypes.rst:1222 msgid "``s[i:j] = t``" msgstr "``s[i:j] = t``" -#: library/stdtypes.rst:1217 +#: library/stdtypes.rst:1222 msgid "" "slice of *s* from *i* to *j* is replaced by the contents of the iterable *t*" msgstr "" "το υποσύνολο (slice) του *s* από το *i* έως το *j* αντικαθίσταται από τα " "περιεχόμενα του iterable *t*" -#: library/stdtypes.rst:1221 +#: library/stdtypes.rst:1226 msgid "``del s[i:j]``" msgstr "``del s[i:j]``" -#: library/stdtypes.rst:1221 +#: library/stdtypes.rst:1226 msgid "same as ``s[i:j] = []``" msgstr "ίδιο με το ``s[i:j] = []``" -#: library/stdtypes.rst:1223 +#: library/stdtypes.rst:1228 msgid "``s[i:j:k] = t``" msgstr "``s[i:j:k] = t``" -#: library/stdtypes.rst:1223 +#: library/stdtypes.rst:1228 msgid "the elements of ``s[i:j:k]`` are replaced by those of *t*" msgstr "τα στοιχεία του ``s[i:j:k]`` αντικαθίστανται από εκείνα του *t*" -#: library/stdtypes.rst:1226 +#: library/stdtypes.rst:1231 msgid "``del s[i:j:k]``" msgstr "``del s[i:j:k]``" -#: library/stdtypes.rst:1226 +#: library/stdtypes.rst:1231 msgid "removes the elements of ``s[i:j:k]`` from the list" msgstr "αφαιρεί τα στοιχεία του ``s[i:j:k]`` από τη λίστα" -#: library/stdtypes.rst:1229 +#: library/stdtypes.rst:1234 msgid "``s.append(x)``" msgstr "``s.append(x)``" -#: library/stdtypes.rst:1229 +#: library/stdtypes.rst:1234 msgid "" "appends *x* to the end of the sequence (same as ``s[len(s):len(s)] = [x]``)" msgstr "" "εισάγει το *x* στο τέλος της ακολουθίας (ίδιο με ``s[len(s):len(s)] = [x]``)" -#: library/stdtypes.rst:1233 +#: library/stdtypes.rst:1238 msgid "``s.clear()``" msgstr "``s.clear()``" -#: library/stdtypes.rst:1233 +#: library/stdtypes.rst:1238 msgid "removes all items from *s* (same as ``del s[:]``)" msgstr "αφαιρεί όλα τα στοιχεία από το *s* (ίδιο με το ``del s[:]``)" -#: library/stdtypes.rst:1236 +#: library/stdtypes.rst:1241 msgid "``s.copy()``" msgstr "``s.copy()``" -#: library/stdtypes.rst:1236 +#: library/stdtypes.rst:1241 msgid "creates a shallow copy of *s* (same as ``s[:]``)" msgstr "δημιουργεί ένα shallow αντίγραφο του *s* (ίδιο με το ``s[:]``)" -#: library/stdtypes.rst:1239 +#: library/stdtypes.rst:1244 msgid "``s.extend(t)`` or ``s += t``" msgstr "``s.extend(t)`` ή ``s += t``" -#: library/stdtypes.rst:1239 +#: library/stdtypes.rst:1244 msgid "" "extends *s* with the contents of *t* (for the most part the same as " "``s[len(s):len(s)] = t``)" @@ -2350,50 +2368,50 @@ msgstr "" "επεκτείνει το *s* με τα περιεχόμενα του *t* (ως επί το πλείστον το ίδιο με " "το ``s[len(s):len(s)] = t``)" -#: library/stdtypes.rst:1244 +#: library/stdtypes.rst:1249 msgid "``s *= n``" msgstr "``s *= n``" -#: library/stdtypes.rst:1244 +#: library/stdtypes.rst:1249 msgid "updates *s* with its contents repeated *n* times" msgstr "ενημερώνει το *s* με το περιεχόμενό του επαναλαμβανόμενο *n* φορές" -#: library/stdtypes.rst:1247 +#: library/stdtypes.rst:1252 msgid "``s.insert(i, x)``" msgstr "``s.insert(i, x)``" -#: library/stdtypes.rst:1247 +#: library/stdtypes.rst:1252 msgid "" "inserts *x* into *s* at the index given by *i* (same as ``s[i:i] = [x]``)" msgstr "" "εισάγει το *x* στο *s* στο δείκτη που δίνεται από το *i* (το ίδιο με το " "``s[i:i] = [x]``)" -#: library/stdtypes.rst:1251 +#: library/stdtypes.rst:1256 msgid "``s.pop()`` or ``s.pop(i)``" msgstr "``s.pop()`` ή ``s.pop(i)``" -#: library/stdtypes.rst:1251 +#: library/stdtypes.rst:1256 msgid "retrieves the item at *i* and also removes it from *s*" msgstr "ανακτά το στοιχείο στο *i* και το αφαιρεί επίσης από το *s*" -#: library/stdtypes.rst:1254 +#: library/stdtypes.rst:1259 msgid "``s.remove(x)``" msgstr "``s.remove(x)``" -#: library/stdtypes.rst:1254 +#: library/stdtypes.rst:1259 msgid "removes the first item from *s* where ``s[i]`` is equal to *x*" msgstr "αφαιρεί το πρώτο στοιχείο από το *s* όπου ``s[i]`` είναι ίσο με *x*" -#: library/stdtypes.rst:1258 +#: library/stdtypes.rst:1263 msgid "``s.reverse()``" msgstr "``s.reverse()``" -#: library/stdtypes.rst:1258 +#: library/stdtypes.rst:1263 msgid "reverses the items of *s* in place" msgstr "αντιστρέφει τα στοιχεία του *s*" -#: library/stdtypes.rst:1266 +#: library/stdtypes.rst:1271 msgid "" "If *k* is not equal to ``1``, *t* must have the same length as the slice it " "is replacing." @@ -2401,7 +2419,7 @@ msgstr "" "Αν το *k* δεν είναι ίσο με ``1``, το *t* πρέπει να έχει το ίδιο μήκος με το " "τμήμα που αντικαθιστά." -#: library/stdtypes.rst:1269 +#: library/stdtypes.rst:1274 msgid "" "The optional argument *i* defaults to ``-1``, so that by default the last " "item is removed and returned." @@ -2409,13 +2427,13 @@ msgstr "" "Το προαιρετικό όρισμα *i* έχει προεπιλεγμένη τιμή ``-1``, έτσι ώστε από " "default το τελευταίο στοιχείο αφαιρείται και επιστρέφεται." -#: library/stdtypes.rst:1273 +#: library/stdtypes.rst:1278 msgid ":meth:`remove` raises :exc:`ValueError` when *x* is not found in *s*." msgstr "" "η :meth:`remove` κάνει raise :exc:`ValueError` όταν το *x* δεν βρίσκεται στο " "*s*." -#: library/stdtypes.rst:1276 +#: library/stdtypes.rst:1281 msgid "" "The :meth:`reverse` method modifies the sequence in place for economy of " "space when reversing a large sequence. To remind users that it operates by " @@ -2426,7 +2444,7 @@ msgstr "" "στους χρήστες ότι λειτουργεί με παρενέργεια, δεν επιστρέφει την " "αντιστραμμένη ακολουθία." -#: library/stdtypes.rst:1281 +#: library/stdtypes.rst:1286 msgid "" ":meth:`clear` and :meth:`!copy` are included for consistency with the " "interfaces of mutable containers that don't support slicing operations (such " @@ -2440,11 +2458,11 @@ msgstr "" "αποτελεί μέρος της :class:`collections.abc.MutableSequence` ABC, αλλά οι " "περισσότερες κλάσεις μεταβλητών ακολουθιών την παρέχουν." -#: library/stdtypes.rst:1287 +#: library/stdtypes.rst:1292 msgid ":meth:`clear` and :meth:`!copy` methods." msgstr "μέθοδοι :meth:`clear` και :meth:`!copy`." -#: library/stdtypes.rst:1291 +#: library/stdtypes.rst:1296 msgid "" "The value *n* is an integer, or an object implementing :meth:`~object." "__index__`. Zero and negative values of *n* clear the sequence. Items in " @@ -2457,11 +2475,11 @@ msgstr "" "αναφέρονται πολλές φορές, όπως εξηγείται για το ``s * n``` στο :ref:" "`typesseq-common`." -#: library/stdtypes.rst:1300 +#: library/stdtypes.rst:1305 msgid "Lists" msgstr "Λίστες" -#: library/stdtypes.rst:1304 +#: library/stdtypes.rst:1309 msgid "" "Lists are mutable sequences, typically used to store collections of " "homogeneous items (where the precise degree of similarity will vary by " @@ -2471,33 +2489,33 @@ msgstr "" "αποθήκευση συλλογών ομοιογενών στοιχείων (όπου ο ακριβής βαθμός ομοιότητας " "ποικίλλει ανάλογα με εφαρμογή)." -#: library/stdtypes.rst:1310 +#: library/stdtypes.rst:1315 msgid "Lists may be constructed in several ways:" msgstr "Οι λίστες μπορούν να κατασκευαστούν με διάφορους τρόπους:" -#: library/stdtypes.rst:1312 +#: library/stdtypes.rst:1317 msgid "Using a pair of square brackets to denote the empty list: ``[]``" msgstr "" "Χρησιμοποιείστε ένα ζεύγος αγκυλών για να δηλώσετε την κενή λίστα: ``[]``" -#: library/stdtypes.rst:1313 +#: library/stdtypes.rst:1318 msgid "" "Using square brackets, separating items with commas: ``[a]``, ``[a, b, c]``" msgstr "" "Χρησιμοποιώντας αγκύλες, διαχωρίζοντας τα στοιχεία με κόμματα: ``[a]``, " "``[a, b, c]``" -#: library/stdtypes.rst:1314 +#: library/stdtypes.rst:1319 msgid "Using a list comprehension: ``[x for x in iterable]``" msgstr "Χρήση ενός list comprehension: ``[x for x in iterable]``" -#: library/stdtypes.rst:1315 +#: library/stdtypes.rst:1320 msgid "Using the type constructor: ``list()`` or ``list(iterable)``" msgstr "" "Χρήση του κατασκευαστή τύπου (type constructor): ``list()`` ή " "``list(iterable)``" -#: library/stdtypes.rst:1317 +#: library/stdtypes.rst:1322 msgid "" "The constructor builds a list whose items are the same and in the same order " "as *iterable*'s items. *iterable* may be either a sequence, a container " @@ -2516,7 +2534,7 @@ msgstr "" "'b', 'c']`` και η ``list( (1, 2, 3) )`` επιστρέφει ``[1, 2, 3]``. Αν δεν " "δοθεί κανένα όρισμα, ο κατασκευαστής δημιουργεί μία νέα κενή λίστα, ``[]``." -#: library/stdtypes.rst:1326 +#: library/stdtypes.rst:1331 msgid "" "Many other operations also produce lists, including the :func:`sorted` built-" "in." @@ -2524,7 +2542,7 @@ msgstr "" "Πολλές άλλες λειτουργίες παράγουν επίσης λίστες, συμπεριλαμβανομένης της " "built-in :func:`sorted`." -#: library/stdtypes.rst:1329 +#: library/stdtypes.rst:1334 msgid "" "Lists implement all of the :ref:`common ` and :ref:`mutable " "` sequence operations. Lists also provide the following " @@ -2534,7 +2552,7 @@ msgstr "" "`mutable ` λειτουργίες ακολουθίας. Οι λίστες παρέχουν " "επίσης την ακόλουθη πρόσθετη μέθοδο:" -#: library/stdtypes.rst:1335 +#: library/stdtypes.rst:1340 msgid "" "This method sorts the list in place, using only ``<`` comparisons between " "items. Exceptions are not suppressed - if any comparison operations fail, " @@ -2546,7 +2564,7 @@ msgstr "" "πράξη σύγκρισης, ολόκληρη η λειτουργία ταξινόμησης θα αποτύχει (και η λίστα " "θα παραμείνει πιθανότατα σε μια μερικώς τροποποιημένη κατάσταση)." -#: library/stdtypes.rst:1340 +#: library/stdtypes.rst:1345 msgid "" ":meth:`sort` accepts two arguments that can only be passed by keyword (:ref:" "`keyword-only arguments `):" @@ -2554,7 +2572,7 @@ msgstr "" "η :meth:`sort` δέχεται δύο ορίσματα που μπορούν να περάσουν μόνο με τη λέξη-" "κλειδί (:ref:`keyword-only arguments `):" -#: library/stdtypes.rst:1343 +#: library/stdtypes.rst:1348 msgid "" "*key* specifies a function of one argument that is used to extract a " "comparison key from each list element (for example, ``key=str.lower``). The " @@ -2570,7 +2588,7 @@ msgstr "" "(default) ``None`` σημαίνει ότι τα στοιχεία της λίστας ταξινομούνται " "απευθείας χωρίς να υπολογίζεται ξεχωριστή τιμή κλειδιού." -#: library/stdtypes.rst:1350 +#: library/stdtypes.rst:1355 msgid "" "The :func:`functools.cmp_to_key` utility is available to convert a 2.x style " "*cmp* function to a *key* function." @@ -2578,7 +2596,7 @@ msgstr "" "Το utility :func:`functools.cmp_to_key` είναι διαθέσιμο για τη μετατροπή μια " "συνάρτηση *cmp* στυλ 2.x σε συνάρτηση *key*." -#: library/stdtypes.rst:1353 +#: library/stdtypes.rst:1358 msgid "" "*reverse* is a boolean value. If set to ``True``, then the list elements " "are sorted as if each comparison were reversed." @@ -2586,7 +2604,7 @@ msgstr "" "η *reverse* είναι μια λογική (boolean) τιμή. Αν τεθεί σε ``True``, τότε τα " "στοιχεία της λίστας ταξινομούνται σαν να ήταν αντίστροφη κάθε σύγκριση." -#: library/stdtypes.rst:1356 +#: library/stdtypes.rst:1361 msgid "" "This method modifies the sequence in place for economy of space when sorting " "a large sequence. To remind users that it operates by side effect, it does " @@ -2599,7 +2617,7 @@ msgstr "" "(χρησιμοποιήστε την :func:`sorted` για να ζητήσετε μια νέα περίπτωση " "ταξινομημένης λίστας)." -#: library/stdtypes.rst:1361 +#: library/stdtypes.rst:1366 msgid "" "The :meth:`sort` method is guaranteed to be stable. A sort is stable if it " "guarantees not to change the relative order of elements that compare equal " @@ -2612,14 +2630,14 @@ msgstr "" "περάσματα (για παράδειγμα, ταξινόμηση κατά τμήμα, στη συνέχεια με βάση το " "μισθολογικό κλιμάκιο κτλ)." -#: library/stdtypes.rst:1366 +#: library/stdtypes.rst:1371 msgid "" "For sorting examples and a brief sorting tutorial, see :ref:`sortinghowto`." msgstr "" "Για παραδείγματα ταξινόμησης και ένα σύντομο tutorial, δείτε :ref:" "`sortinghowto`." -#: library/stdtypes.rst:1370 +#: library/stdtypes.rst:1375 msgid "" "While a list is being sorted, the effect of attempting to mutate, or even " "inspect, the list is undefined. The C implementation of Python makes the " @@ -2632,11 +2650,11 @@ msgstr "" "κάνει raise :exc:`ValueError` αν ανιχνεύσει ότι η λίστα έχει μεταλλαχθεί " "κατά τη διάρκεια μιας ταξινόμησης." -#: library/stdtypes.rst:1379 +#: library/stdtypes.rst:1384 msgid "Tuples" msgstr "Πλειάδες (Tuples)" -#: library/stdtypes.rst:1383 +#: library/stdtypes.rst:1388 msgid "" "Tuples are immutable sequences, typically used to store collections of " "heterogeneous data (such as the 2-tuples produced by the :func:`enumerate` " @@ -2651,31 +2669,31 @@ msgstr "" "ομοιογενών δεδομένων (όπως για παράδειγμα για να επιτρέπεται η αποθήκευση σε " "ένα :class:`set` ή σε ένα :class:`dict` instance)." -#: library/stdtypes.rst:1391 +#: library/stdtypes.rst:1396 msgid "Tuples may be constructed in a number of ways:" msgstr "Οι πλειάδες (tuples) μπορούν να κατασκευαστούν με διάφορους τρόπους:" -#: library/stdtypes.rst:1393 +#: library/stdtypes.rst:1398 msgid "Using a pair of parentheses to denote the empty tuple: ``()``" msgstr "" "Χρήση ενός ζεύγους παρενθέσεων για να δηλωθεί το κενό tuple (πλειάδα): ``()``" -#: library/stdtypes.rst:1394 +#: library/stdtypes.rst:1399 msgid "Using a trailing comma for a singleton tuple: ``a,`` or ``(a,)``" msgstr "" "Χρήση ενός κόμματος στο τέλος για ένα μοναδικό tuple (πλειάδα): ``a,`` ή " "``(a,)``" -#: library/stdtypes.rst:1395 +#: library/stdtypes.rst:1400 msgid "Separating items with commas: ``a, b, c`` or ``(a, b, c)``" msgstr "Διαχωρισμός στοιχείων με κόμμα: ``a, b, c`` ή ``(a, b, c)``" -#: library/stdtypes.rst:1396 +#: library/stdtypes.rst:1401 msgid "Using the :func:`tuple` built-in: ``tuple()`` or ``tuple(iterable)``" msgstr "" "Χρήση του ενσωματωμένου :func:`tuple`: ``tuple()`` ή ``tuple(iterable)``" -#: library/stdtypes.rst:1398 +#: library/stdtypes.rst:1403 msgid "" "The constructor builds a tuple whose items are the same and in the same " "order as *iterable*'s items. *iterable* may be either a sequence, a " @@ -2694,7 +2712,7 @@ msgstr "" "3] )`` επιστρέφει ``(1, 2, 3)``. Αν δεν δοθεί κανένα όρισμα, ο κατασκευαστής " "δημιουργεί μια ένα κενό tuple, ``()``." -#: library/stdtypes.rst:1406 +#: library/stdtypes.rst:1411 msgid "" "Note that it is actually the comma which makes a tuple, not the parentheses. " "The parentheses are optional, except in the empty tuple case, or when they " @@ -2709,7 +2727,7 @@ msgstr "" "τρία ορίσματα, ενώ η ``f((a, b, c))`` είναι μια συνάρτηση κλήση συνάρτησης " "με ένα 3-tuple ως μοναδικό όρισμα." -#: library/stdtypes.rst:1412 +#: library/stdtypes.rst:1417 msgid "" "Tuples implement all of the :ref:`common ` sequence " "operations." @@ -2717,7 +2735,7 @@ msgstr "" "Τα Tuples υλοποιούν όλες τις πράξεις ακολουθιών :ref:`common `." -#: library/stdtypes.rst:1415 +#: library/stdtypes.rst:1420 msgid "" "For heterogeneous collections of data where access by name is clearer than " "access by index, :func:`collections.namedtuple` may be a more appropriate " @@ -2728,11 +2746,11 @@ msgstr "" "namedtuple` μπορεί να είναι μια πιο κατάλληλη επιλογή από ένα απλό " "αντικείμενο tuple (πλειάδα)." -#: library/stdtypes.rst:1423 +#: library/stdtypes.rst:1428 msgid "Ranges" msgstr "Εύρη (Ranges)" -#: library/stdtypes.rst:1427 +#: library/stdtypes.rst:1432 msgid "" "The :class:`range` type represents an immutable sequence of numbers and is " "commonly used for looping a specific number of times in :keyword:`for` loops." @@ -2741,7 +2759,7 @@ msgstr "" "συνήθως χρησιμοποιείται για την επανάληψη ενός συγκεκριμένου αριθμού " "επαναλήψεων σε βρόχους :keyword:`for`." -#: library/stdtypes.rst:1434 +#: library/stdtypes.rst:1439 msgid "" "The arguments to the range constructor must be integers (either built-in :" "class:`int` or any object that implements the :meth:`~object.__index__` " @@ -2756,7 +2774,7 @@ msgstr "" "*start* παραλείπεται, το προεπιλογή (default) είναι ``0``. Εάν το *step* " "είναι μηδέν, γίνεται raise ένα :exc:`ValueError`." -#: library/stdtypes.rst:1440 +#: library/stdtypes.rst:1445 msgid "" "For a positive *step*, the contents of a range ``r`` are determined by the " "formula ``r[i] = start + step*i`` where ``i >= 0`` and ``r[i] < stop``." @@ -2764,7 +2782,7 @@ msgstr "" "Για ένα θετικό *βήμα*, τα περιεχόμενα του range (εύρους) ``r`` καθορίζονται " "από τον τύπο ``r[i] = start + step*i`` όπου ``i >= 0`` και ``r[i] < stop``." -#: library/stdtypes.rst:1444 +#: library/stdtypes.rst:1449 msgid "" "For a negative *step*, the contents of the range are still determined by the " "formula ``r[i] = start + step*i``, but the constraints are ``i >= 0`` and " @@ -2774,7 +2792,7 @@ msgstr "" "καθορίζονται από τον τύπο ``r[i] = start + step*i``, αλλά οι περιορισμοί " "είναι ``i >= 0`` και ``r[i] > stop``." -#: library/stdtypes.rst:1448 +#: library/stdtypes.rst:1453 msgid "" "A range object will be empty if ``r[0]`` does not meet the value constraint. " "Ranges do support negative indices, but these are interpreted as indexing " @@ -2785,7 +2803,7 @@ msgstr "" "ερμηνεύονται ως δείκτες από το τέλος της ακολουθίας που καθορίζεται από τους " "θετικούς δείκτες." -#: library/stdtypes.rst:1453 +#: library/stdtypes.rst:1458 msgid "" "Ranges containing absolute values larger than :data:`sys.maxsize` are " "permitted but some features (such as :func:`len`) may raise :exc:" @@ -2795,11 +2813,11 @@ msgstr "" "είναι επιτρεπτά, αλλά ορισμένα χαρακτηριστικά (όπως :func:`len`) μπορεί να " "κάνουν raise :exc:`OverflowError`." -#: library/stdtypes.rst:1457 +#: library/stdtypes.rst:1462 msgid "Range examples::" msgstr "Παραδείγματα Range::" -#: library/stdtypes.rst:1459 +#: library/stdtypes.rst:1464 msgid "" ">>> list(range(10))\n" "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n" @@ -2831,7 +2849,7 @@ msgstr "" ">>> list(range(1, 0))\n" "[]" -#: library/stdtypes.rst:1474 +#: library/stdtypes.rst:1479 msgid "" "Ranges implement all of the :ref:`common ` sequence " "operations except concatenation and repetition (due to the fact that range " @@ -2844,23 +2862,23 @@ msgstr "" "αυστηρό μοτίβο και η επανάληψη και η συνένωση συνήθως παραβιάζουν αυτό το " "πρότυπο)." -#: library/stdtypes.rst:1481 +#: library/stdtypes.rst:1486 msgid "" "The value of the *start* parameter (or ``0`` if the parameter was not " "supplied)" msgstr "Η τιμή της παραμέτρου *start* (ή ``0`` αν η παράμετρος δεν παρέχεται)" -#: library/stdtypes.rst:1486 +#: library/stdtypes.rst:1491 msgid "The value of the *stop* parameter" msgstr "Η τιμή της παραμέτρου *stop*" -#: library/stdtypes.rst:1490 +#: library/stdtypes.rst:1495 msgid "" "The value of the *step* parameter (or ``1`` if the parameter was not " "supplied)" msgstr "Η τιμή της παραμέτρου *step* (ή ``1`` αν η παράμετρος δεν παρέχεται)" -#: library/stdtypes.rst:1493 +#: library/stdtypes.rst:1498 msgid "" "The advantage of the :class:`range` type over a regular :class:`list` or :" "class:`tuple` is that a :class:`range` object will always take the same " @@ -2875,7 +2893,7 @@ msgstr "" "``step``, υπολογίζοντας τα μεμονωμένα στοιχεία και τις υποπεριοχές όπως " "απαιτείται)." -#: library/stdtypes.rst:1499 +#: library/stdtypes.rst:1504 msgid "" "Range objects implement the :class:`collections.abc.Sequence` ABC, and " "provide features such as containment tests, element index lookup, slicing " @@ -2885,7 +2903,7 @@ msgstr "" "και παρέχουν χαρακτηριστικά όπως δοκιμές περιορισμού, αναζήτηση δείκτη " "στοιχείου, τεμαχισμό και υποστήριξη αρνητικών δεικτών (βλ. :ref:`typesseq`):" -#: library/stdtypes.rst:1519 +#: library/stdtypes.rst:1524 msgid "" "Testing range objects for equality with ``==`` and ``!=`` compares them as " "sequences. That is, two range objects are considered equal if they " @@ -2902,7 +2920,7 @@ msgstr "" "παράδειγμα ``range(0) == range(2, 1, 3)`` ή ``range(0, 3, 2) == range(0, 4, " "2)``.)" -#: library/stdtypes.rst:1526 +#: library/stdtypes.rst:1531 msgid "" "Implement the Sequence ABC. Support slicing and negative indices. Test :" "class:`int` objects for membership in constant time instead of iterating " @@ -2912,7 +2930,7 @@ msgstr "" "αρνητικούς δείκτες. Δοκιμάστε τα :class:`int` αντικείμενα για συμμετοχή σε " "σταθερό χρόνο αντί της επανάληψης σε όλα τα αντικείμενα." -#: library/stdtypes.rst:1532 +#: library/stdtypes.rst:1537 msgid "" "Define '==' and '!=' to compare range objects based on the sequence of " "values they define (instead of comparing based on object identity)." @@ -2921,7 +2939,7 @@ msgstr "" "ακολουθία των τιμών που ορίζουν (αντί να συγκρίνουν με βάση την ταυτότητα " "του αντικειμένου)." -#: library/stdtypes.rst:1537 +#: library/stdtypes.rst:1542 msgid "" "Added the :attr:`~range.start`, :attr:`~range.stop` and :attr:`~range.step` " "attributes." @@ -2929,7 +2947,7 @@ msgstr "" "Προστέθηκαν τα :attr:`~range.start`, :attr:`~range.stop` και :attr:`~range." "step` attributes." -#: library/stdtypes.rst:1542 +#: library/stdtypes.rst:1547 msgid "" "The `linspace recipe `_ shows how to implement a lazy version of range " @@ -2939,11 +2957,11 @@ msgstr "" "spaced-numbers-linspace/>`_ δείχνει πώς να υλοποιήσετε μια lazy έκδοση του " "range κατάλληλη για εφαρμογές κινητής υποδιαστολής." -#: library/stdtypes.rst:1554 +#: library/stdtypes.rst:1559 msgid "Text and Binary Sequence Type Methods Summary" msgstr "Σύνοψη μεθόδων τύπου κειμένου και δυαδική ακολουθίας" -#: library/stdtypes.rst:1555 +#: library/stdtypes.rst:1560 msgid "" "The following table summarizes the text and binary sequence types methods by " "category." @@ -2951,379 +2969,379 @@ msgstr "" "Ο παρακάτω πίνακας συνοψίζει τις μεθόδους τύπων κειμένου και δυαδική " "ακολουθίας ανά κατηγορία." -#: library/stdtypes.rst:1560 +#: library/stdtypes.rst:1565 msgid "Category" msgstr "Κατηγορία" -#: library/stdtypes.rst:1560 +#: library/stdtypes.rst:1565 msgid ":class:`str` methods" msgstr ":class:`str` methods" -#: library/stdtypes.rst:1560 +#: library/stdtypes.rst:1565 msgid ":class:`bytes` and :class:`bytearray` methods" msgstr "οι μέθοδοι :class:`bytes` και :class:`bytearray`" -#: library/stdtypes.rst:1562 +#: library/stdtypes.rst:1567 msgid "Formatting" msgstr "Μορφοποίηση" -#: library/stdtypes.rst:1562 +#: library/stdtypes.rst:1567 msgid ":meth:`str.format`" msgstr ":meth:`str.format`" -#: library/stdtypes.rst:1564 +#: library/stdtypes.rst:1569 msgid ":meth:`str.format_map`" msgstr ":meth:`str.format_map`" -#: library/stdtypes.rst:1566 +#: library/stdtypes.rst:1571 msgid ":ref:`f-strings`" msgstr ":ref:`f-strings`" -#: library/stdtypes.rst:1568 +#: library/stdtypes.rst:1573 msgid ":ref:`old-string-formatting`" msgstr ":ref:`old-string-formatting`" -#: library/stdtypes.rst:1568 +#: library/stdtypes.rst:1573 msgid ":ref:`bytes-formatting`" msgstr ":ref:`bytes-formatting`" -#: library/stdtypes.rst:1570 +#: library/stdtypes.rst:1575 msgid "Searching and Replacing" msgstr "Αναζήτηση και Αντικατάσταση" -#: library/stdtypes.rst:1570 +#: library/stdtypes.rst:1575 msgid ":meth:`str.find`" msgstr ":meth:`str.find`" -#: library/stdtypes.rst:1570 +#: library/stdtypes.rst:1575 msgid ":meth:`str.rfind`" msgstr ":meth:`str.rfind`" -#: library/stdtypes.rst:1570 +#: library/stdtypes.rst:1575 msgid ":meth:`bytes.find`" msgstr ":meth:`bytes.find`" -#: library/stdtypes.rst:1570 +#: library/stdtypes.rst:1575 msgid ":meth:`bytes.rfind`" msgstr ":meth:`bytes.rfind`" -#: library/stdtypes.rst:1572 +#: library/stdtypes.rst:1577 msgid ":meth:`str.index`" msgstr ":meth:`str.index`" -#: library/stdtypes.rst:1572 +#: library/stdtypes.rst:1577 msgid ":meth:`str.rindex`" msgstr ":meth:`str.rindex`" -#: library/stdtypes.rst:1572 +#: library/stdtypes.rst:1577 msgid ":meth:`bytes.index`" msgstr ":meth:`bytes.index`" -#: library/stdtypes.rst:1572 +#: library/stdtypes.rst:1577 msgid ":meth:`bytes.rindex`" msgstr ":meth:`bytes.rindex`" -#: library/stdtypes.rst:1574 +#: library/stdtypes.rst:1579 msgid ":meth:`str.startswith`" msgstr ":meth:`str.startswith`" -#: library/stdtypes.rst:1574 +#: library/stdtypes.rst:1579 msgid ":meth:`bytes.startswith`" msgstr ":meth:`bytes.startswith`" -#: library/stdtypes.rst:1576 +#: library/stdtypes.rst:1581 msgid ":meth:`str.endswith`" msgstr ":meth:`str.endswith`" -#: library/stdtypes.rst:1576 +#: library/stdtypes.rst:1581 msgid ":meth:`bytes.endswith`" msgstr ":meth:`bytes.endswith`" -#: library/stdtypes.rst:1578 +#: library/stdtypes.rst:1583 msgid ":meth:`str.count`" msgstr ":meth:`str.count`" -#: library/stdtypes.rst:1578 +#: library/stdtypes.rst:1583 msgid ":meth:`bytes.count`" msgstr ":meth:`bytes.count`" -#: library/stdtypes.rst:1580 +#: library/stdtypes.rst:1585 msgid ":meth:`str.replace`" msgstr ":meth:`str.replace`" -#: library/stdtypes.rst:1580 +#: library/stdtypes.rst:1585 msgid ":meth:`bytes.replace`" msgstr ":meth:`bytes.replace`" -#: library/stdtypes.rst:1582 +#: library/stdtypes.rst:1587 msgid "Splitting and Joining" msgstr "Διαχωρισμός και Ένωση" -#: library/stdtypes.rst:1582 +#: library/stdtypes.rst:1587 msgid ":meth:`str.split`" msgstr ":meth:`str.split`" -#: library/stdtypes.rst:1582 +#: library/stdtypes.rst:1587 msgid ":meth:`str.rsplit`" msgstr ":meth:`str.rsplit`" -#: library/stdtypes.rst:1582 +#: library/stdtypes.rst:1587 msgid ":meth:`bytes.split`" msgstr ":meth:`bytes.split`" -#: library/stdtypes.rst:1582 +#: library/stdtypes.rst:1587 msgid ":meth:`bytes.rsplit`" msgstr ":meth:`bytes.rsplit`" -#: library/stdtypes.rst:1584 +#: library/stdtypes.rst:1589 msgid ":meth:`str.splitlines`" msgstr ":meth:`str.splitlines`" -#: library/stdtypes.rst:1584 +#: library/stdtypes.rst:1589 msgid ":meth:`bytes.splitlines`" msgstr ":meth:`bytes.splitlines`" -#: library/stdtypes.rst:1586 +#: library/stdtypes.rst:1591 msgid ":meth:`str.partition`" msgstr ":meth:`str.partition`" -#: library/stdtypes.rst:1586 +#: library/stdtypes.rst:1591 msgid ":meth:`bytes.partition`" msgstr ":meth:`bytes.partition`" -#: library/stdtypes.rst:1588 +#: library/stdtypes.rst:1593 msgid ":meth:`str.rpartition`" msgstr ":meth:`str.rpartition`" -#: library/stdtypes.rst:1588 +#: library/stdtypes.rst:1593 msgid ":meth:`bytes.rpartition`" msgstr ":meth:`bytes.rpartition`" -#: library/stdtypes.rst:1590 +#: library/stdtypes.rst:1595 msgid ":meth:`str.join`" msgstr ":meth:`str.join`" -#: library/stdtypes.rst:1590 +#: library/stdtypes.rst:1595 msgid ":meth:`bytes.join`" msgstr ":meth:`bytes.join`" -#: library/stdtypes.rst:1592 +#: library/stdtypes.rst:1597 msgid "String Classification" msgstr "Ταξινόμηση Συμβολοσειρών" -#: library/stdtypes.rst:1592 +#: library/stdtypes.rst:1597 msgid ":meth:`str.isalpha`" msgstr ":meth:`str.isalpha`" -#: library/stdtypes.rst:1592 +#: library/stdtypes.rst:1597 msgid ":meth:`bytes.isalpha`" msgstr ":meth:`bytes.isalpha`" -#: library/stdtypes.rst:1594 +#: library/stdtypes.rst:1599 msgid ":meth:`str.isdecimal`" msgstr ":meth:`str.isdecimal`" -#: library/stdtypes.rst:1596 +#: library/stdtypes.rst:1601 msgid ":meth:`str.isdigit`" msgstr ":meth:`str.isdigit`" -#: library/stdtypes.rst:1596 +#: library/stdtypes.rst:1601 msgid ":meth:`bytes.isdigit`" msgstr ":meth:`bytes.isdigit`" -#: library/stdtypes.rst:1598 +#: library/stdtypes.rst:1603 msgid ":meth:`str.isnumeric`" msgstr ":meth:`str.isnumeric`" -#: library/stdtypes.rst:1600 +#: library/stdtypes.rst:1605 msgid ":meth:`str.isalnum`" msgstr ":meth:`str.isalnum`" -#: library/stdtypes.rst:1600 +#: library/stdtypes.rst:1605 msgid ":meth:`bytes.isalnum`" msgstr ":meth:`bytes.isalnum`" -#: library/stdtypes.rst:1602 +#: library/stdtypes.rst:1607 msgid ":meth:`str.isidentifier`" msgstr ":meth:`str.isidentifier`" -#: library/stdtypes.rst:1604 +#: library/stdtypes.rst:1609 msgid ":meth:`str.islower`" msgstr ":meth:`str.islower`" -#: library/stdtypes.rst:1604 +#: library/stdtypes.rst:1609 msgid ":meth:`bytes.islower`" msgstr ":meth:`bytes.islower`" -#: library/stdtypes.rst:1606 +#: library/stdtypes.rst:1611 msgid ":meth:`str.isupper`" msgstr ":meth:`str.isupper`" -#: library/stdtypes.rst:1606 +#: library/stdtypes.rst:1611 msgid ":meth:`bytes.isupper`" msgstr ":meth:`bytes.isupper`" -#: library/stdtypes.rst:1608 +#: library/stdtypes.rst:1613 msgid ":meth:`str.istitle`" msgstr ":meth:`str.istitle`" -#: library/stdtypes.rst:1608 +#: library/stdtypes.rst:1613 msgid ":meth:`bytes.istitle`" msgstr ":meth:`bytes.istitle`" -#: library/stdtypes.rst:1610 +#: library/stdtypes.rst:1615 msgid ":meth:`str.isspace`" msgstr ":meth:`str.isspace`" -#: library/stdtypes.rst:1610 +#: library/stdtypes.rst:1615 msgid ":meth:`bytes.isspace`" msgstr ":meth:`bytes.isspace`" -#: library/stdtypes.rst:1612 +#: library/stdtypes.rst:1617 msgid ":meth:`str.isprintable`" msgstr ":meth:`str.isprintable`" -#: library/stdtypes.rst:1614 +#: library/stdtypes.rst:1619 msgid "Case Manipulation" msgstr "Χειρισμός υποθέσεων" -#: library/stdtypes.rst:1614 +#: library/stdtypes.rst:1619 msgid ":meth:`str.lower`" msgstr ":meth:`str.lower`" -#: library/stdtypes.rst:1614 +#: library/stdtypes.rst:1619 msgid ":meth:`bytes.lower`" msgstr ":meth:`bytes.lower`" -#: library/stdtypes.rst:1616 +#: library/stdtypes.rst:1621 msgid ":meth:`str.upper`" msgstr ":meth:`str.upper`" -#: library/stdtypes.rst:1616 +#: library/stdtypes.rst:1621 msgid ":meth:`bytes.upper`" msgstr ":meth:`bytes.upper`" -#: library/stdtypes.rst:1618 +#: library/stdtypes.rst:1623 msgid ":meth:`str.casefold`" msgstr ":meth:`str.casefold`" -#: library/stdtypes.rst:1620 +#: library/stdtypes.rst:1625 msgid ":meth:`str.capitalize`" msgstr ":meth:`str.capitalize`" -#: library/stdtypes.rst:1620 +#: library/stdtypes.rst:1625 msgid ":meth:`bytes.capitalize`" msgstr ":meth:`bytes.capitalize`" -#: library/stdtypes.rst:1622 +#: library/stdtypes.rst:1627 msgid ":meth:`str.title`" msgstr ":meth:`str.title`" -#: library/stdtypes.rst:1622 +#: library/stdtypes.rst:1627 msgid ":meth:`bytes.title`" msgstr ":meth:`bytes.title`" -#: library/stdtypes.rst:1624 +#: library/stdtypes.rst:1629 msgid ":meth:`str.swapcase`" msgstr ":meth:`str.swapcase`" -#: library/stdtypes.rst:1624 +#: library/stdtypes.rst:1629 msgid ":meth:`bytes.swapcase`" msgstr ":meth:`bytes.swapcase`" -#: library/stdtypes.rst:1626 +#: library/stdtypes.rst:1631 msgid "Padding and Stripping" msgstr "Συμπλήρωση και Αφαίρεση" -#: library/stdtypes.rst:1626 +#: library/stdtypes.rst:1631 msgid ":meth:`str.ljust`" msgstr ":meth:`str.ljust`" -#: library/stdtypes.rst:1626 +#: library/stdtypes.rst:1631 msgid ":meth:`str.rjust`" msgstr ":meth:`str.rjust`" -#: library/stdtypes.rst:1626 +#: library/stdtypes.rst:1631 msgid ":meth:`bytes.ljust`" msgstr ":meth:`bytes.ljust`" -#: library/stdtypes.rst:1626 +#: library/stdtypes.rst:1631 msgid ":meth:`bytes.rjust`" msgstr ":meth:`bytes.rjust`" -#: library/stdtypes.rst:1628 +#: library/stdtypes.rst:1633 msgid ":meth:`str.center`" msgstr ":meth:`str.center`" -#: library/stdtypes.rst:1628 +#: library/stdtypes.rst:1633 msgid ":meth:`bytes.center`" msgstr ":meth:`bytes.center`" -#: library/stdtypes.rst:1630 +#: library/stdtypes.rst:1635 msgid ":meth:`str.expandtabs`" msgstr ":meth:`str.expandtabs`" -#: library/stdtypes.rst:1630 +#: library/stdtypes.rst:1635 msgid ":meth:`bytes.expandtabs`" msgstr ":meth:`bytes.expandtabs`" -#: library/stdtypes.rst:1632 +#: library/stdtypes.rst:1637 msgid ":meth:`str.strip`" msgstr ":meth:`str.strip`" -#: library/stdtypes.rst:1632 +#: library/stdtypes.rst:1637 msgid ":meth:`bytes.strip`" msgstr ":meth:`bytes.strip`" -#: library/stdtypes.rst:1634 +#: library/stdtypes.rst:1639 msgid ":meth:`str.lstrip`" msgstr ":meth:`str.lstrip`" -#: library/stdtypes.rst:1634 +#: library/stdtypes.rst:1639 msgid ":meth:`str.rstrip`" msgstr ":meth:`str.rstrip`" -#: library/stdtypes.rst:1634 +#: library/stdtypes.rst:1639 msgid ":meth:`bytes.lstrip`" msgstr ":meth:`bytes.lstrip`" -#: library/stdtypes.rst:1634 +#: library/stdtypes.rst:1639 msgid ":meth:`bytes.rstrip`" msgstr ":meth:`bytes.rstrip`" -#: library/stdtypes.rst:1636 +#: library/stdtypes.rst:1641 msgid "Translation and Encoding" msgstr "Μετάφραση και Κωδικοποίηση" -#: library/stdtypes.rst:1636 +#: library/stdtypes.rst:1641 msgid ":meth:`str.translate`" msgstr ":meth:`str.translate`" -#: library/stdtypes.rst:1636 +#: library/stdtypes.rst:1641 msgid ":meth:`bytes.translate`" msgstr ":meth:`bytes.translate`" -#: library/stdtypes.rst:1638 +#: library/stdtypes.rst:1643 msgid ":meth:`str.maketrans`" msgstr ":meth:`str.maketrans`" -#: library/stdtypes.rst:1638 +#: library/stdtypes.rst:1643 msgid ":meth:`bytes.maketrans`" msgstr ":meth:`bytes.maketrans`" -#: library/stdtypes.rst:1640 +#: library/stdtypes.rst:1645 msgid ":meth:`str.encode`" msgstr ":meth:`str.encode`" -#: library/stdtypes.rst:1642 +#: library/stdtypes.rst:1647 msgid ":meth:`bytes.decode`" msgstr ":meth:`bytes.decode`" -#: library/stdtypes.rst:1648 +#: library/stdtypes.rst:1653 msgid "Text Sequence Type --- :class:`str`" msgstr "Τύπος Ακολουθίας (Sequence) Κειμένου --- :class:`str`" -#: library/stdtypes.rst:1650 +#: library/stdtypes.rst:1655 msgid "" "Textual data in Python is handled with :class:`str` objects, or :dfn:" "`strings`. Strings are immutable :ref:`sequences ` of Unicode code " @@ -3334,15 +3352,15 @@ msgstr "" "`sequences ` των Unicode points. Τα αλφαριθμητικά γράφονται με " "διάφορους τρόπους:" -#: library/stdtypes.rst:1655 +#: library/stdtypes.rst:1660 msgid "Single quotes: ``'allows embedded \"double\" quotes'``" msgstr "Απλά εισαγωγικά: ``'allows embedded \"double\" quotes'``" -#: library/stdtypes.rst:1656 +#: library/stdtypes.rst:1661 msgid "Double quotes: ``\"allows embedded 'single' quotes\"``" msgstr "Διπλά εισαγωγικά: ``'allows embedded \"double\" quotes'``" -#: library/stdtypes.rst:1657 +#: library/stdtypes.rst:1662 msgid "" "Triple quoted: ``'''Three single quotes'''``, ``\"\"\"Three double " "quotes\"\"\"``" @@ -3350,7 +3368,7 @@ msgstr "" "Τριπλά εισαγωγικά: ``'''Three single quotes'''``, ``\"\"\"Three double " "quotes\"\"\"``" -#: library/stdtypes.rst:1659 +#: library/stdtypes.rst:1664 msgid "" "Triple quoted strings may span multiple lines - all associated whitespace " "will be included in the string literal." @@ -3358,7 +3376,7 @@ msgstr "" "Τα αλφαριθμητικά σε τριπλά εισαγωγικά μπορούν να καλύπτουν πολλές γραμμές - " "όλα τα σχετικά κενά θα συμπεριληφθούν στο αλφαριθμητικό." -#: library/stdtypes.rst:1662 +#: library/stdtypes.rst:1667 msgid "" "String literals that are part of a single expression and have only " "whitespace between them will be implicitly converted to a single string " @@ -3368,7 +3386,7 @@ msgstr "" "έχουν μόνο κενά μεταξύ τους, θα μετατραπούν σιωπηρά σε ένα ενιαίο " "αλφαριθμητικό literal. Δηλαδή, ``(\"spam \" \"eggs\") == \"spam eggs\"``." -#: library/stdtypes.rst:1666 +#: library/stdtypes.rst:1671 msgid "" "See :ref:`strings` for more about the various forms of string literal, " "including supported :ref:`escape sequences `, and the " @@ -3380,7 +3398,7 @@ msgstr "" "(\"raw\") πρόθεμα που απενεργοποιεί την επεξεργασία των περισσότερων " "ακολουθιών διαφυγής." -#: library/stdtypes.rst:1670 +#: library/stdtypes.rst:1675 msgid "" "Strings may also be created from other objects using the :class:`str` " "constructor." @@ -3388,7 +3406,7 @@ msgstr "" "Τα αλφαριθμητικά (strings) μπορούν επίσης να δημιουργηθούν από άλλα " "αντικείμενα χρησιμοποιώντας τον constructor :class:`str`." -#: library/stdtypes.rst:1673 +#: library/stdtypes.rst:1678 msgid "" "Since there is no separate \"character\" type, indexing a string produces " "strings of length 1. That is, for a non-empty string *s*, ``s[0] == s[0:1]``." @@ -3397,7 +3415,7 @@ msgstr "" "συμβολοσειράς (string) παράγει συμβολοσειρές μήκους 1. Δηλαδή, για μια μη " "κενή συμβολοσειρά *s*, ``s[0] == s[0:1]``." -#: library/stdtypes.rst:1679 +#: library/stdtypes.rst:1684 msgid "" "There is also no mutable string type, but :meth:`str.join` or :class:`io." "StringIO` can be used to efficiently construct strings from multiple " @@ -3407,7 +3425,7 @@ msgstr "" "`str.join` ή το :class:`io.StringIO` μπορεί να χρησιμοποιηθεί για την " "αποτελεσματική κατασκευή συμβολοσειρών από πολλαπλά μέρη." -#: library/stdtypes.rst:1683 +#: library/stdtypes.rst:1688 msgid "" "For backwards compatibility with the Python 2 series, the ``u`` prefix is " "once again permitted on string literals. It has no effect on the meaning of " @@ -3418,7 +3436,7 @@ msgstr "" "επίδραση στη σημασία των αλφαριθμητικών και δεν μπορεί να συνδυαστεί με το " "πρόθεμα ``r``." -#: library/stdtypes.rst:1695 +#: library/stdtypes.rst:1700 msgid "" "Return a :ref:`string ` version of *object*. If *object* is not " "provided, returns the empty string. Otherwise, the behavior of ``str()`` " @@ -3428,7 +3446,7 @@ msgstr "" "δεν παρέχεται, επιστρέφει κενό αλφαριθμητικό. Διαφορετικά, η συμπεριφορά " "της ``str()`` εξαρτάται από το αν δίνεται *encoding* ή *errors*, ως εξής." -#: library/stdtypes.rst:1699 +#: library/stdtypes.rst:1704 msgid "" "If neither *encoding* nor *errors* is given, ``str(object)`` returns :meth:" "`type(object).__str__(object) `, which is the \"informal\" " @@ -3444,7 +3462,7 @@ msgstr "" "Εάν το *object* δεν έχει την :meth:`~object.__str__`, τότε η :func:`str` " "επιστρέφει τη μέθοδο :func:`repr(object) `." -#: library/stdtypes.rst:1711 +#: library/stdtypes.rst:1716 msgid "" "If at least one of *encoding* or *errors* is given, *object* should be a :" "term:`bytes-like object` (e.g. :class:`bytes` or :class:`bytearray`). In " @@ -3465,7 +3483,7 @@ msgstr "" "`binaryseq` και :ref:`bufferobjects` για πληροφορίες σχετικά με τα " "αντικείμενα buffer." -#: library/stdtypes.rst:1720 +#: library/stdtypes.rst:1725 msgid "" "Passing a :class:`bytes` object to :func:`str` without the *encoding* or " "*errors* arguments falls under the first case of returning the informal " @@ -3477,7 +3495,7 @@ msgstr "" "αναπαράστασης συμβολοσειράς (string) (δείτε επίσης την επιλογή :option:`-b` " "της γραμμής εντολών για Python). Για παράδειγμα::" -#: library/stdtypes.rst:1725 +#: library/stdtypes.rst:1730 msgid "" ">>> str(b'Zoot!')\n" "\"b'Zoot!'\"" @@ -3485,7 +3503,7 @@ msgstr "" ">>> str(b'Zoot!')\n" "\"b'Zoot!'\"" -#: library/stdtypes.rst:1728 +#: library/stdtypes.rst:1733 msgid "" "For more information on the ``str`` class and its methods, see :ref:" "`textseq` and the :ref:`string-methods` section below. To output formatted " @@ -3498,11 +3516,11 @@ msgstr "" "ενότητες :ref:`f-strings` και :ref:`formatstrings`. Επιπλέον, δείτε την " "ενότητα :ref:`stringservices`." -#: library/stdtypes.rst:1740 +#: library/stdtypes.rst:1745 msgid "String Methods" msgstr "Μέθοδοι Συμβολοσειράς (String)" -#: library/stdtypes.rst:1745 +#: library/stdtypes.rst:1750 msgid "" "Strings implement all of the :ref:`common ` sequence " "operations, along with the additional methods described below." @@ -3511,7 +3529,7 @@ msgstr "" "` ακολουθιών, μαζί με τις πρόσθετες μεθόδους που " "περιγράφονται παρακάτω." -#: library/stdtypes.rst:1748 +#: library/stdtypes.rst:1753 msgid "" "Strings also support two styles of string formatting, one providing a large " "degree of flexibility and customization (see :meth:`str.format`, :ref:" @@ -3528,7 +3546,7 @@ msgstr "" "χρησιμοποιηθεί σωστά, αλλά είναι συχνά ταχύτερο για τις περιπτώσεις που " "μπορεί να χειριστεί (:ref:`old-string-formatting`)." -#: library/stdtypes.rst:1755 +#: library/stdtypes.rst:1760 msgid "" "The :ref:`textservices` section of the standard library covers a number of " "other modules that provide various text related utilities (including regular " @@ -3539,7 +3557,7 @@ msgstr "" "σχετίζονται με το κείμενο (συμπεριλαμβανομένης της υποστήριξης των κανονικών " "εκφράσεων στην ενότητα :mod:`re`)." -#: library/stdtypes.rst:1761 +#: library/stdtypes.rst:1766 msgid "" "Return a copy of the string with its first character capitalized and the " "rest lowercased." @@ -3547,7 +3565,7 @@ msgstr "" "Επιστρέφει ένα αντίγραφο της συμβολοσειράς (string) με τον πρώτο χαρακτήρα " "κεφαλαίο και τα υπόλοιπα με πεζά γράμματα." -#: library/stdtypes.rst:1764 +#: library/stdtypes.rst:1769 msgid "" "The first character is now put into titlecase rather than uppercase. This " "means that characters like digraphs will only have their first letter " @@ -3557,7 +3575,7 @@ msgstr "" "σημαίνει ότι χαρακτήρες όπως οι διγράφοι (digraphs) θα έχουν μόνο το πρώτο " "γράμμα τους με κεφαλαίο, αντί για όλους τους χαρακτήρες." -#: library/stdtypes.rst:1771 +#: library/stdtypes.rst:1776 msgid "" "Return a casefolded copy of the string. Casefolded strings may be used for " "caseless matching." @@ -3565,7 +3583,7 @@ msgstr "" "Επιστρέφει ένα αντίγραφο της συμβολοσειράς (string) σε casefolded μορφή. Οι " "casefolded συμβολοσειρές μπορούν να χρησιμοποιηθούν για caseless matching." -#: library/stdtypes.rst:1774 +#: library/stdtypes.rst:1779 msgid "" "Casefolding is similar to lowercasing but more aggressive because it is " "intended to remove all case distinctions in a string. For example, the " @@ -3579,7 +3597,7 @@ msgstr "" "ισοδυναμεί με ``\"ss\"``. Αφού είναι ήδη πεζό, η :meth:`lower` δεν θα έκανε " "τίποτα στο ``'ß'``· η :meth:`casefold` το μετατρέπει σε ``\"ss\"``." -#: library/stdtypes.rst:1780 +#: library/stdtypes.rst:1785 msgid "" "The casefolding algorithm is `described in section 3.13 'Default Case " "Folding' of the Unicode Standard `__." -#: library/stdtypes.rst:1789 +#: library/stdtypes.rst:1794 msgid "" "Return centered in a string of length *width*. Padding is done using the " "specified *fillchar* (default is an ASCII space). The original string is " -"returned if *width* is less than or equal to ``len(s)``." +"returned if *width* is less than or equal to ``len(s)``. For example::" msgstr "" -"Επιστρέφει ένα κεντραρισμένο σε μια συμβολοσειρά (string) μήκους *πλάτος*. " -"Το padding γίνεται με τη χρήση του καθορισμένου *fillchar* (το default είναι " +"Επιστρέφει ένα κεντραρισμένο σε μια συμβολοσειρά (string) μήκους *width*. Το " +"padding γίνεται με τη χρήση του καθορισμένου *fillchar* (το default είναι " "ένα κενό ASCII). Η αρχική συμβολοσειρά επιστρέφεται εάν το *width* είναι " -"μικρότερο ή ίσο με το ``len(s)``." +"μικρότερο ή ίσο με το ``len(s)``. Για παράδειγμα::" -#: library/stdtypes.rst:1797 +#: library/stdtypes.rst:1798 +msgid "" +">>> 'Python'.center(10)\n" +"' Python '\n" +">>> 'Python'.center(10, '-')\n" +"'--Python--'\n" +">>> 'Python'.center(4)\n" +"'Python'" +msgstr "" +">>> 'Python'.center(10)\n" +"' Python '\n" +">>> 'Python'.center(10, '-')\n" +"'--Python--'\n" +">>> 'Python'.center(4)\n" +"'Python'" + +#: library/stdtypes.rst:1808 msgid "" "Return the number of non-overlapping occurrences of substring *sub* in the " "range [*start*, *end*]. Optional arguments *start* and *end* are " @@ -3610,19 +3644,44 @@ msgstr "" "της υποομάδας *sub* στο εύρος [*start*, *end*]. Τα προαιρετικά ορίσματα " "*start* και *end* ερμηνεύονται όπως στο slice notation." -#: library/stdtypes.rst:1801 +#: library/stdtypes.rst:1812 msgid "" "If *sub* is empty, returns the number of empty strings between characters " -"which is the length of the string plus one." +"which is the length of the string plus one. For example::" msgstr "" "Αν το *sub* είναι κενό, επιστρέφει τον αριθμό των κενών συμβολοσειρών " -"(strings) μεταξύ των χαρακτήρων που είναι το μήκος της συμβολοσειράς συν ένα." +"(strings) μεταξύ των χαρακτήρων που είναι το μήκος της συμβολοσειράς συν " +"ένα. Για παράδειγμα::" + +#: library/stdtypes.rst:1815 +msgid "" +">>> 'spam, spam, spam'.count('spam')\n" +"3\n" +">>> 'spam, spam, spam'.count('spam', 5)\n" +"2\n" +">>> 'spam, spam, spam'.count('spam', 5, 10)\n" +"1\n" +">>> 'spam, spam, spam'.count('eggs')\n" +"0\n" +">>> 'spam, spam, spam'.count('')\n" +"17" +msgstr "" +">>> 'spam, spam, spam'.count('spam')\n" +"3\n" +">>> 'spam, spam, spam'.count('spam', 5)\n" +"2\n" +">>> 'spam, spam, spam'.count('spam', 5, 10)\n" +"1\n" +">>> 'spam, spam, spam'.count('eggs')\n" +"0\n" +">>> 'spam, spam, spam'.count('')\n" +"17" -#: library/stdtypes.rst:1807 +#: library/stdtypes.rst:1828 msgid "Return the string encoded to :class:`bytes`." msgstr "Επιστρέφει την συμβολοσειρά (string) κωδικοποιημένη σε :class:`bytes`." -#: library/stdtypes.rst:3146 +#: library/stdtypes.rst:3202 msgid "" "*encoding* defaults to ``'utf-8'``; see :ref:`standard-encodings` for " "possible values." @@ -3630,7 +3689,7 @@ msgstr "" "το *encoding* έχει default σε ``'utf-8'``- δείτε :ref:`standard-encodings` " "για πιθανές τιμές." -#: library/stdtypes.rst:1812 +#: library/stdtypes.rst:1833 msgid "" "*errors* controls how encoding errors are handled. If ``'strict'`` (the " "default), a :exc:`UnicodeError` exception is raised. Other possible values " @@ -3645,22 +3704,36 @@ msgstr "" "που έχει καταχωρηθεί μέσω του :func:`codecs.register_error`. Δείτε το :ref:" "`error-handlers` για λεπτομέρειες." -#: library/stdtypes.rst:1819 +#: library/stdtypes.rst:1840 msgid "" "For performance reasons, the value of *errors* is not checked for validity " "unless an encoding error actually occurs, :ref:`devmode` is enabled or a :" -"ref:`debug build ` is used." +"ref:`debug build ` is used. For example::" msgstr "" "Για λόγους απόδοσης, η τιμή των *errors* δεν ελέγχεται ως προς την " "εγκυρότητα εκτός αν όντως προκύψει σφάλμα κωδικοποίησης, αν το :ref:" "`devmode` είναι ενεργοποιημένο ή αν ένα :ref:`debug build ` " -"χρησιμοποιείται." +"χρησιμοποιείται. Για παράδειγμα::" -#: library/stdtypes.rst:3165 +#: library/stdtypes.rst:1846 +msgid "" +">>> encoded_str_to_bytes = 'Python'.encode()\n" +">>> type(encoded_str_to_bytes)\n" +"\n" +">>> encoded_str_to_bytes\n" +"b'Python'" +msgstr "" +">>> encoded_str_to_bytes = 'Python'.encode()\n" +">>> type(encoded_str_to_bytes)\n" +"\n" +">>> encoded_str_to_bytes\n" +"b'Python'" + +#: library/stdtypes.rst:3221 msgid "Added support for keyword arguments." msgstr "Επιπρόσθετη υποστήριξη για keyword ορίσματα." -#: library/stdtypes.rst:3168 +#: library/stdtypes.rst:3224 msgid "" "The value of the *errors* argument is now checked in :ref:`devmode` and in :" "ref:`debug mode `." @@ -3668,20 +3741,46 @@ msgstr "" "Η τιμή του όρου *errors* ελέγχεται τώρα στο :ref:`devmode` και στο :ref:" "`debug mode `." -#: library/stdtypes.rst:1834 +#: library/stdtypes.rst:1863 msgid "" "Return ``True`` if the string ends with the specified *suffix*, otherwise " "return ``False``. *suffix* can also be a tuple of suffixes to look for. " "With optional *start*, test beginning at that position. With optional " -"*end*, stop comparing at that position." +"*end*, stop comparing at that position. Using *start* and *end* is " +"equivalent to ``str[start:end].endswith(suffix)``. For example::" msgstr "" "Επιστρέφει ``True`` αν η συμβολοσειρά (string) τελειώνει με το καθορισμένο " "*suffix*, αλλιώς επιστρέφει ``False``. Το *suffix* μπορεί επίσης να είναι " "ένα tuple (πλειάδα) από επιθέματα που πρέπει να αναζητηθούν. Με το " "προαιρετικό *start*, το τεστ αρχίζει από αυτή τη θέση. Με το προαιρετικό " -"*end*, η σύγκριση σταματά σε αυτή τη θέση." +"*end*, η σύγκριση σταματά σε αυτή τη θέση. Χρησιμοποιώντας *start* και *end* " +"είναι ισοδύναμο με την ``str[start:end].endswith(suffix)``. Για παράδειγμα::" + +#: library/stdtypes.rst:1869 +msgid "" +">>> 'Python'.endswith('on')\n" +"True\n" +">>> 'a tuple of suffixes'.endswith(('at', 'in'))\n" +"False\n" +">>> 'a tuple of suffixes'.endswith(('at', 'es'))\n" +"True\n" +">>> 'Python is amazing'.endswith('is', 0, 9)\n" +"True" +msgstr "" +">>> 'Python'.endswith('on')\n" +"True\n" +">>> 'a tuple of suffixes'.endswith(('at', 'in'))\n" +"False\n" +">>> 'a tuple of suffixes'.endswith(('at', 'es'))\n" +"True\n" +">>> 'Python is amazing'.endswith('is', 0, 9)\n" +"True" -#: library/stdtypes.rst:1842 +#: library/stdtypes.rst:1878 +msgid "See also :meth:`startswith` and :meth:`removesuffix`." +msgstr "Δείτε επίσης :meth:`startswith` και :meth:`removesuffix`." + +#: library/stdtypes.rst:1883 msgid "" "Return a copy of the string where all tab characters are replaced by one or " "more spaces, depending on the current column and the given tab size. Tab " @@ -3694,7 +3793,7 @@ msgid "" "(``\\n``) or return (``\\r``), it is copied and the current column is reset " "to zero. Any other character is copied unchanged and the current column is " "incremented by one regardless of how the character is represented when " -"printed." +"printed. For example::" msgstr "" "Επιστρέφει ένα αντίγραφο της συμβολοσειράς (string) όπου όλοι οι χαρακτήρες " "tab αντικαθίστανται από έναν ή περισσότερα κενά, ανάλογα με την τρέχουσα " @@ -3708,9 +3807,27 @@ msgstr "" "γραμμή (``\\n``) ή return (``\\r``), αντιγράφεται και η τρέχουσα στήλη " "επαναφέρεται στο μηδέν. Οποιοσδήποτε άλλος χαρακτήρας αντιγράφεται " "αμετάβλητος και η τρέχουσα στήλη αυξάνεται κατά ένα, ανεξάρτητα από τον " -"τρόπο αναπαράστασης του χαρακτήρα όταν τυπώνεται." +"τρόπο αναπαράστασης του χαρακτήρα όταν τυπώνεται. Για παράδειγμα::" -#: library/stdtypes.rst:1863 +#: library/stdtypes.rst:1896 +msgid "" +">>> '01\\t012\\t0123\\t01234'.expandtabs()\n" +"'01 012 0123 01234'\n" +">>> '01\\t012\\t0123\\t01234'.expandtabs(4)\n" +"'01 012 0123 01234'\n" +">>> print('01\\t012\\n0123\\t01234'.expandtabs(4))\n" +"01 012\n" +"0123 01234" +msgstr "" +">>> '01\\t012\\t0123\\t01234'.expandtabs()\n" +"'01 012 0123 01234'\n" +">>> '01\\t012\\t0123\\t01234'.expandtabs(4)\n" +"'01 012 0123 01234'\n" +">>> print('01\\t012\\n0123\\t01234'.expandtabs(4))\n" +"01 012\n" +"0123 01234" + +#: library/stdtypes.rst:1907 msgid "" "Return the lowest index in the string where substring *sub* is found within " "the slice ``s[start:end]``. Optional arguments *start* and *end* are " @@ -3721,7 +3838,7 @@ msgstr "" "Τα προαιρετικά ορίσματα *start* και *end* ερμηνεύονται όπως στο notation του " "υποσυνόλου. Επιστρέφει ``-1`` αν δεν βρεθεί το *sub*." -#: library/stdtypes.rst:1869 +#: library/stdtypes.rst:1913 msgid "" "The :meth:`~str.find` method should be used only if you need to know the " "position of *sub*. To check if *sub* is a substring or not, use the :" @@ -3731,7 +3848,7 @@ msgstr "" "γνωρίζετε τη θέση του *sub*. Για να ελέγξετε αν το *sub* είναι υποσύνολο ή " "όχι, χρησιμοποιήστε τον τελεστή :keyword:`in`::" -#: library/stdtypes.rst:1873 +#: library/stdtypes.rst:1917 msgid "" ">>> 'Py' in 'Python'\n" "True" @@ -3739,7 +3856,7 @@ msgstr "" ">>> 'Py' in 'Python'\n" "True" -#: library/stdtypes.rst:1879 +#: library/stdtypes.rst:1923 msgid "" "Perform a string formatting operation. The string on which this method is " "called can contain literal text or replacement fields delimited by braces " @@ -3756,7 +3873,7 @@ msgstr "" "αντίγραφο της συμβολοσειράς όπου κάθε πεδίο αντικατάστασης αντικαθίσταται με " "την τιμή της συμβολοσειράς του αντίστοιχου ορίσματος." -#: library/stdtypes.rst:1889 +#: library/stdtypes.rst:1933 msgid "" "See :ref:`formatstrings` for a description of the various formatting options " "that can be specified in format strings." @@ -3765,7 +3882,7 @@ msgstr "" "μορφοποίησης που μπορούν να καθοριστούν στην μορφοποίηση συμβολοσειρών " "(format strings)." -#: library/stdtypes.rst:1893 +#: library/stdtypes.rst:1937 msgid "" "When formatting a number (:class:`int`, :class:`float`, :class:`complex`, :" "class:`decimal.Decimal` and subclasses) with the ``n`` type (ex: ``'{:n}'." @@ -3784,7 +3901,7 @@ msgstr "" "διαφορετικό από το locale ``LC_CTYPE``. Αυτή η προσωρινή αλλαγή επηρεάζει " "και άλλα νήματα (threads)." -#: library/stdtypes.rst:1902 +#: library/stdtypes.rst:1946 msgid "" "When formatting a number with the ``n`` type, the function sets temporarily " "the ``LC_CTYPE`` locale to the ``LC_NUMERIC`` locale in some cases." @@ -3793,7 +3910,7 @@ msgstr "" "προσωρινά το locale ``LC_CTYPE`` στο locale ``LC_NUMERIC`` σε κάποιες " "περιπτώσεις." -#: library/stdtypes.rst:1910 +#: library/stdtypes.rst:1954 msgid "" "Similar to ``str.format(**mapping)``, except that ``mapping`` is used " "directly and not copied to a :class:`dict`. This is useful if for example " @@ -3803,7 +3920,7 @@ msgstr "" "το ``mapping`` απευθείας και δεν αντιγράφεται σε μια :class:`dict`. Αυτό " "είναι χρήσιμο αν για παράδειγμα το ``mapping`` είναι μια υποκλάση του dict:" -#: library/stdtypes.rst:1926 +#: library/stdtypes.rst:1970 msgid "" "Like :meth:`~str.find`, but raise :exc:`ValueError` when the substring is " "not found." @@ -3811,7 +3928,7 @@ msgstr "" "Όπως η :meth:`~str.find`, αλλά κάνει raise :exc:`ValueError` όταν η υπό-" "συμβολοσειρά (substring) δεν έχει βρεθεί." -#: library/stdtypes.rst:1932 +#: library/stdtypes.rst:1976 msgid "" "Return ``True`` if all characters in the string are alphanumeric and there " "is at least one character, ``False`` otherwise. A character ``c`` is " @@ -3824,7 +3941,7 @@ msgstr "" "ακόλουθα επιστρέφει ``True``: ``c.isalpha()``, ``c.isdecimal()``, ``c." "isdigit()``, ή ``c.isnumeric()``." -#: library/stdtypes.rst:1940 +#: library/stdtypes.rst:1984 msgid "" "Return ``True`` if all characters in the string are alphabetic and there is " "at least one character, ``False`` otherwise. Alphabetic characters are " @@ -3844,7 +3961,7 @@ msgstr "" "'Letters, Alphabetic, and Ideographic' του προτύπου Unicode `_." -#: library/stdtypes.rst:1951 +#: library/stdtypes.rst:1995 msgid "" "Return ``True`` if the string is empty or all characters in the string are " "ASCII, ``False`` otherwise. ASCII characters have code points in the range " @@ -3854,7 +3971,7 @@ msgstr "" "χαρακτήρες της συμβολοσειράς είναι ASCII, αλλιώς ``False``. Οι χαρακτήρες " "ASCII έχουν σημεία κωδικοποίησης στην περιοχή U+0000-U+007F." -#: library/stdtypes.rst:1960 +#: library/stdtypes.rst:2004 msgid "" "Return ``True`` if all characters in the string are decimal characters and " "there is at least one character, ``False`` otherwise. Decimal characters are " @@ -3869,7 +3986,7 @@ msgstr "" "INDIC DIGIT ZERO. Επίσημα ένας δεκαδικός χαρακτήρας είναι ένας χαρακτήρας " "του Unicode General Category \"Nd\"." -#: library/stdtypes.rst:1970 +#: library/stdtypes.rst:2014 msgid "" "Return ``True`` if all characters in the string are digits and there is at " "least one character, ``False`` otherwise. Digits include decimal characters " @@ -3886,7 +4003,7 @@ msgstr "" "όπως οι αριθμοί Kharosthi. Τυπικά, ένα ψηφίο είναι ένας χαρακτήρας που έχει " "την τιμή της ιδιότητας Numeric_Type=Digit ή Numeric_Type=Decimal." -#: library/stdtypes.rst:1980 +#: library/stdtypes.rst:2024 msgid "" "Return ``True`` if the string is a valid identifier according to the " "language definition, section :ref:`identifiers`." @@ -3894,7 +4011,7 @@ msgstr "" "Επιστρέφει ``True`` αν η συμβολοσειρά είναι έγκυρο αναγνωριστικό σύμφωνα με " "το ορισμό της γλώσσας, ενότητα :ref:`identifiers`." -#: library/stdtypes.rst:1983 +#: library/stdtypes.rst:2027 msgid "" ":func:`keyword.iskeyword` can be used to test whether string ``s`` is a " "reserved identifier, such as :keyword:`def` and :keyword:`class`." @@ -3903,11 +4020,11 @@ msgstr "" "συμβολοσειρά ``s`` είναι ένα δεσμευμένο αναγνωριστικό, όπως τα :keyword:" "`def` και :keyword:`class`." -#: library/stdtypes.rst:1986 +#: library/stdtypes.rst:2030 msgid "Example: ::" msgstr "Παράδειγμα ::" -#: library/stdtypes.rst:1989 +#: library/stdtypes.rst:2033 msgid "" ">>> from keyword import iskeyword\n" "\n" @@ -3923,7 +4040,7 @@ msgstr "" ">>> 'def'.isidentifier(), iskeyword('def')\n" "(True, True)" -#: library/stdtypes.rst:1999 +#: library/stdtypes.rst:2043 msgid "" "Return ``True`` if all cased characters [4]_ in the string are lowercase and " "there is at least one cased character, ``False`` otherwise." @@ -3931,7 +4048,7 @@ msgstr "" "Επιστρέφει ``True`` αν όλοι οι χαρακτήρες [4]_ στο αλφαριθμητικό (string) " "είναι πεζοί και υπάρχει τουλάχιστον ένας cased χαρακτήρας, αλλιώς ``False``." -#: library/stdtypes.rst:2005 +#: library/stdtypes.rst:2049 msgid "" "Return ``True`` if all characters in the string are numeric characters, and " "there is at least one character, ``False`` otherwise. Numeric characters " @@ -3948,7 +4065,7 @@ msgstr "" "τιμή της ιδιότητας Numeric_Type=Digit, Numeric_Type=Decimal ή " "Numeric_Type=Numeric." -#: library/stdtypes.rst:2015 +#: library/stdtypes.rst:2059 msgid "" "Return ``True`` if all characters in the string are printable, ``False`` if " "it contains at least one non-printable character." @@ -3956,7 +4073,7 @@ msgstr "" "Επιστρέφει ``True`` αν όλοι οι χαρακτήρες στη συμβολοσειρά μπορούν να " "εκτυπωθούν, ``False`` εάν περιέχει τουλάχιστον έναν μη εκτυπώσιμο χαρακτήρα." -#: library/stdtypes.rst:2018 +#: library/stdtypes.rst:2062 msgid "" "Here \"printable\" means the character is suitable for :func:`repr` to use " "in its output; \"non-printable\" means that :func:`repr` on built-in types " @@ -3969,7 +4086,7 @@ msgstr "" "εξαγωνικά από τον χαρακτήρα. Δεν έχει καμία σχέση με τον χειρισμό " "συμβολοσειρών που γράφονται σε :data:`sys.stdout` ή :data:`sys.stderr`." -#: library/stdtypes.rst:2023 +#: library/stdtypes.rst:2067 msgid "" "The printable characters are those which in the Unicode character database " "(see :mod:`unicodedata`) have a general category in group Letter, Mark, " @@ -3983,7 +4100,7 @@ msgstr "" "διάστημα ASCII 0x20. Οι μη εκτυπώσιμοι χαρακτήρες είναι αυτοί που βρίσκονται " "στο χώρο Διαχωρισμού ομάδας ή Άλλο (Z ή CII)." -#: library/stdtypes.rst:2032 +#: library/stdtypes.rst:2076 msgid "" "Return ``True`` if there are only whitespace characters in the string and " "there is at least one character, ``False`` otherwise." @@ -3992,7 +4109,7 @@ msgstr "" "αλφαριθμητικό (string) και υπάρχει τουλάχιστον ένας χαρακτήρας, διαφορετικά " "``False``." -#: library/stdtypes.rst:2035 +#: library/stdtypes.rst:2079 msgid "" "A character is *whitespace* if in the Unicode character database (see :mod:" "`unicodedata`), either its general category is ``Zs`` (\"Separator, " @@ -4003,7 +4120,7 @@ msgstr "" "(\"Separator, space\"), είτε η αμφίδρομη κατηγορία του είναι μία από τις " "κατηγορίες ``WS``, ``B``, ή ``S``." -#: library/stdtypes.rst:2043 +#: library/stdtypes.rst:2087 msgid "" "Return ``True`` if the string is a titlecased string and there is at least " "one character, for example uppercase characters may only follow uncased " @@ -4016,7 +4133,7 @@ msgstr "" "οι πεζοί χαρακτήρες μόνο cased χαρακτήρες. Διαφορετικά, επιστρέφει " "``False``." -#: library/stdtypes.rst:2050 +#: library/stdtypes.rst:2094 msgid "" "Return ``True`` if all cased characters [4]_ in the string are uppercase and " "there is at least one cased character, ``False`` otherwise." @@ -4025,7 +4142,7 @@ msgstr "" "κεφαλαίοι και υπάρχει τουλάχιστον ένας cased χαρακτήρας, διαφορετικά " "``False``." -#: library/stdtypes.rst:2068 +#: library/stdtypes.rst:2112 msgid "" "Return a string which is the concatenation of the strings in *iterable*. A :" "exc:`TypeError` will be raised if there are any non-string values in " @@ -4038,7 +4155,7 @@ msgstr "" "αντικειμένων :class:`bytes`. Το διαχωριστικό μεταξύ των στοιχείων είναι η " "συμβολοσειρά που παρέχει αυτή η μέθοδος." -#: library/stdtypes.rst:2076 +#: library/stdtypes.rst:2120 msgid "" "Return the string left justified in a string of length *width*. Padding is " "done using the specified *fillchar* (default is an ASCII space). The " @@ -4049,7 +4166,7 @@ msgstr "" "*fillchar* (το default είναι ένα κενό ASCII). Η αρχική συμβολοσειρά " "επιστρέφεται εάν το *width* είναι μικρότερο ή ίσο με το ``len(s)``." -#: library/stdtypes.rst:2083 +#: library/stdtypes.rst:2127 msgid "" "Return a copy of the string with all the cased characters [4]_ converted to " "lowercase." @@ -4057,7 +4174,7 @@ msgstr "" "Επιστρέφει ένα αντίγραφο της συμβολοσειράς (string) με όλους τους cased " "χαρακτήρες [4]_ να έχουν μετατραπεί σε πεζούς." -#: library/stdtypes.rst:2086 +#: library/stdtypes.rst:2130 msgid "" "The lowercasing algorithm used is `described in section 3.13 'Default Case " "Folding' of the Unicode Standard `__." -#: library/stdtypes.rst:2093 +#: library/stdtypes.rst:2137 msgid "" "Return a copy of the string with leading characters removed. The *chars* " "argument is a string specifying the set of characters to be removed. If " @@ -4082,7 +4199,7 @@ msgstr "" "χαρακτήρων. Το όρισμα *chars* δεν είναι ένα πρόθεμα· οπότε, όλοι οι " "συνδυασμοί των τιμών του αφαιρούνται::" -#: library/stdtypes.rst:2098 +#: library/stdtypes.rst:2142 msgid "" ">>> ' spacious '.lstrip()\n" "'spacious '\n" @@ -4094,7 +4211,7 @@ msgstr "" ">>> 'www.example.com'.lstrip('cmowz.')\n" "'example.com'" -#: library/stdtypes.rst:2103 +#: library/stdtypes.rst:2147 msgid "" "See :meth:`str.removeprefix` for a method that will remove a single prefix " "string rather than all of a set of characters. For example::" @@ -4103,7 +4220,7 @@ msgstr "" "πρόθεμα συμβολοσειράς (string) αντί για όλο το σύνολο των χαρακτήρων. Για " "παράδειγμα::" -#: library/stdtypes.rst:2106 +#: library/stdtypes.rst:2150 msgid "" ">>> 'Arthur: three!'.lstrip('Arthur: ')\n" "'ee!'\n" @@ -4115,7 +4232,7 @@ msgstr "" ">>> 'Arthur: three!'.removeprefix('Arthur: ')\n" "'three!'" -#: library/stdtypes.rst:2114 +#: library/stdtypes.rst:2158 msgid "" "This static method returns a translation table usable for :meth:`str." "translate`." @@ -4123,7 +4240,7 @@ msgstr "" "Αυτή η στατική μέθοδος επιστρέφει έναν πίνακα μεταφράσεων που μπορεί να " "χρησιμοποιηθεί για το :meth:`str.translate`." -#: library/stdtypes.rst:2116 +#: library/stdtypes.rst:2160 msgid "" "If there is only one argument, it must be a dictionary mapping Unicode " "ordinals (integers) or characters (strings of length 1) to Unicode ordinals, " @@ -4135,7 +4252,7 @@ msgstr "" "μήκους 1) σε ordinals Unicode, συμβολοσειρές (αυθαίρετου μήκους) ή " "``None``. Τα κλειδιά χαρακτήρων τότε θα μετατραπούν σε κανονικούς αριθμούς." -#: library/stdtypes.rst:2121 +#: library/stdtypes.rst:2165 msgid "" "If there are two arguments, they must be strings of equal length, and in the " "resulting dictionary, each character in x will be mapped to the character at " @@ -4148,7 +4265,7 @@ msgstr "" "πρέπει να είναι συμβολοσειρά, του οποίου οι χαρακτήρες θα αντιστοιχιστούν " "στο αποτέλεσμα σε ``None``." -#: library/stdtypes.rst:2129 +#: library/stdtypes.rst:2173 msgid "" "Split the string at the first occurrence of *sep*, and return a 3-tuple " "containing the part before the separator, the separator itself, and the part " @@ -4161,7 +4278,7 @@ msgstr "" "δεν βρεθεί, επιστρέφει ένα 3-σύνολο που περιέχει την ίδια τη συμβολοσειρά, " "ακολουθούμενη από δύο κενές συμβολοσειρές." -#: library/stdtypes.rst:2137 +#: library/stdtypes.rst:2181 msgid "" "If the string starts with the *prefix* string, return " "``string[len(prefix):]``. Otherwise, return a copy of the original string::" @@ -4170,7 +4287,7 @@ msgstr "" "``string[len(prefix):]``. Διαφορετικά, επιστρέφει ένα αντίγραφο της αρχικής " "συμβολοσειράς::" -#: library/stdtypes.rst:2141 +#: library/stdtypes.rst:2185 msgid "" ">>> 'TestHook'.removeprefix('Test')\n" "'Hook'\n" @@ -4182,7 +4299,7 @@ msgstr "" ">>> 'BaseTestCase'.removeprefix('Test')\n" "'BaseTestCase'" -#: library/stdtypes.rst:2151 +#: library/stdtypes.rst:2195 msgid "" "If the string ends with the *suffix* string and that *suffix* is not empty, " "return ``string[:-len(suffix)]``. Otherwise, return a copy of the original " @@ -4192,7 +4309,7 @@ msgstr "" "επιστρέφει ``string[:-len(suffix)]``. Διαφορετικά, επιστρέφει ένα αντίγραφο " "της αρχικής συμβολοσειράς::" -#: library/stdtypes.rst:2155 +#: library/stdtypes.rst:2199 msgid "" ">>> 'MiscTests'.removesuffix('Tests')\n" "'Misc'\n" @@ -4204,7 +4321,7 @@ msgstr "" ">>> 'TmpDirMixin'.removesuffix('Tests')\n" "'TmpDirMixin'" -#: library/stdtypes.rst:2165 +#: library/stdtypes.rst:2209 msgid "" "Return a copy of the string with all occurrences of substring *old* replaced " "by *new*. If *count* is given, only the first *count* occurrences are " @@ -4216,11 +4333,11 @@ msgstr "" "παράμετρος *count*, μόνο οι πρώτες *count* εμφανίσεις. Αν δεν έχει οριστεί ή " "είναι -1, τότε αντικαθίστανται όλες οι εμφανίσεις." -#: library/stdtypes.rst:2169 +#: library/stdtypes.rst:2213 msgid "*count* is now supported as a keyword argument." msgstr "Το *count* υποστηρίζεται πλέον ως όρισμα λέξης-κλειδιού." -#: library/stdtypes.rst:2175 +#: library/stdtypes.rst:2219 msgid "" "Return the highest index in the string where substring *sub* is found, such " "that *sub* is contained within ``s[start:end]``. Optional arguments *start* " @@ -4231,7 +4348,7 @@ msgstr "" "προαιρετικά ορίσματα *start* και *end* ερμηνεύονται ως slice notation. " "Επιστρέφει ``-1`` σε περίπτωση αποτυχίας." -#: library/stdtypes.rst:2182 +#: library/stdtypes.rst:2226 msgid "" "Like :meth:`rfind` but raises :exc:`ValueError` when the substring *sub* is " "not found." @@ -4239,7 +4356,7 @@ msgstr "" "Όπως η :meth:`rfind`, αλλά κάνει raise :exc:`ValueError` όταν η υπό-" "συμβολοσειρά (sub-string) *sub* δεν βρέθηκε." -#: library/stdtypes.rst:2188 +#: library/stdtypes.rst:2232 msgid "" "Return the string right justified in a string of length *width*. Padding is " "done using the specified *fillchar* (default is an ASCII space). The " @@ -4250,7 +4367,7 @@ msgstr "" "καθορισμένο *fillchar* (η προεπιλογή είναι ένα διάστημα ASCII). Η αρχική " "συμβολοσειρά επιστρέφεται εάν το *width* είναι μικρότερο ή ίσο με ``len(s)``." -#: library/stdtypes.rst:2195 +#: library/stdtypes.rst:2239 msgid "" "Split the string at the last occurrence of *sep*, and return a 3-tuple " "containing the part before the separator, the separator itself, and the part " @@ -4263,7 +4380,7 @@ msgstr "" "δεν βρεθεί, επιστρέφει ένα 3-tuple που περιέχει δύο κενές συμβολοσειρές, " "ακολουθούμενες από την ίδια τη συμβολοσειρά." -#: library/stdtypes.rst:2203 +#: library/stdtypes.rst:2247 msgid "" "Return a list of the words in the string, using *sep* as the delimiter " "string. If *maxsplit* is given, at most *maxsplit* splits are done, the " @@ -4278,7 +4395,7 @@ msgstr "" "Εκτός από το διαχωρισμό από τα δεξιά, η :meth:`rsplit` συμπεριφέρεται όπως " "η :meth:`split` που περιγράφεται λεπτομερώς παρακάτω." -#: library/stdtypes.rst:2212 +#: library/stdtypes.rst:2256 msgid "" "Return a copy of the string with trailing characters removed. The *chars* " "argument is a string specifying the set of characters to be removed. If " @@ -4293,7 +4410,7 @@ msgstr "" "διαστημάτων. Το όρισμα *chars* δεν είναι suffix, αλλά όλοι οι συνδυασμοί " "των τιμών του αφαιρούνται::" -#: library/stdtypes.rst:2217 +#: library/stdtypes.rst:2261 msgid "" ">>> ' spacious '.rstrip()\n" "' spacious'\n" @@ -4305,7 +4422,7 @@ msgstr "" ">>> 'mississippi'.rstrip('ipz')\n" "'mississ'" -#: library/stdtypes.rst:2222 +#: library/stdtypes.rst:2266 msgid "" "See :meth:`str.removesuffix` for a method that will remove a single suffix " "string rather than all of a set of characters. For example::" @@ -4313,7 +4430,7 @@ msgstr "" "Δείτε τη :meth:`str.removesuffix` για μια μέθοδο που θα αφαιρέσει ένα απλό " "suffix αντί για όλο το σύνολο των χαρακτήρων. Για παράδειγμα::" -#: library/stdtypes.rst:2225 +#: library/stdtypes.rst:2269 msgid "" ">>> 'Monty Python'.rstrip(' Python')\n" "'M'\n" @@ -4325,7 +4442,7 @@ msgstr "" ">>> 'Monty Python'.removesuffix(' Python')\n" "'Monty'" -#: library/stdtypes.rst:2232 +#: library/stdtypes.rst:2276 msgid "" "Return a list of the words in the string, using *sep* as the delimiter " "string. If *maxsplit* is given, at most *maxsplit* splits are done (thus, " @@ -4340,7 +4457,7 @@ msgstr "" "υπάρχει όριο στον αριθμό των διαχωρισμών (γίνονται όλες οι πιθανές " "διασπάσεις)." -#: library/stdtypes.rst:2238 +#: library/stdtypes.rst:2282 msgid "" "If *sep* is given, consecutive delimiters are not grouped together and are " "deemed to delimit empty strings (for example, ``'1,,2'.split(',')`` returns " @@ -4357,15 +4474,15 @@ msgstr "" "διαχωρισμός μιας κενής συμβολοσειράς με ένα καθορισμένο διαχωριστικό " "επιστρέφει το ``['']``." -#: library/stdtypes.rst:2263 library/stdtypes.rst:2383 -#: library/stdtypes.rst:3483 library/stdtypes.rst:3592 -#: library/stdtypes.rst:3633 library/stdtypes.rst:3675 -#: library/stdtypes.rst:3707 library/stdtypes.rst:3757 -#: library/stdtypes.rst:3826 library/stdtypes.rst:3850 +#: library/stdtypes.rst:2307 library/stdtypes.rst:2371 +#: library/stdtypes.rst:2507 library/stdtypes.rst:3557 +#: library/stdtypes.rst:3664 library/stdtypes.rst:3703 +#: library/stdtypes.rst:3745 library/stdtypes.rst:3790 +#: library/stdtypes.rst:3840 library/stdtypes.rst:3906 msgid "For example::" msgstr "Για παράδειγμα::" -#: library/stdtypes.rst:2247 +#: library/stdtypes.rst:2291 msgid "" ">>> '1,2,3'.split(',')\n" "['1', '2', '3']\n" @@ -4385,7 +4502,7 @@ msgstr "" ">>> '1<>2<>3<4'.split('<>')\n" "['1', '2', '3<4']" -#: library/stdtypes.rst:2256 +#: library/stdtypes.rst:2300 msgid "" "If *sep* is not specified or is ``None``, a different splitting algorithm is " "applied: runs of consecutive whitespace are regarded as a single separator, " @@ -4402,7 +4519,7 @@ msgstr "" "συμβολοσειράς που αποτελείται μόνο από κενά διαστήματα με ένα ``None`` ως " "διαχωριστικό επιστρέφει ``[]``." -#: library/stdtypes.rst:2265 +#: library/stdtypes.rst:2309 msgid "" ">>> '1 2 3'.split()\n" "['1', '2', '3']\n" @@ -4418,7 +4535,31 @@ msgstr "" ">>> ' 1 2 3 '.split()\n" "['1', '2', '3']" -#: library/stdtypes.rst:2278 +#: library/stdtypes.rst:2316 +msgid "" +"If *sep* is not specified or is ``None`` and *maxsplit* is ``0``, only " +"leading runs of consecutive whitespace are considered." +msgstr "" +"Εάν δεν καθοριστεί *sep* ή είναι ``None`` και το *maxsplit* είναι ``0``, " +"λαμβάνοντας υπόψη μόνο οι πρώτες εκτελέσεις διαδοχικού κενού διαστήματος." + +#: library/stdtypes.rst:2321 +msgid "" +">>> \"\".split(None, 0)\n" +"[]\n" +">>> \" \".split(None, 0)\n" +"[]\n" +">>> \" foo \".split(maxsplit=0)\n" +"['foo ']" +msgstr "" +">>> \"\".split(None, 0)\n" +"[]\n" +">>> \" \".split(None, 0)\n" +"[]\n" +">>> \" foo \".split(maxsplit=0)\n" +"['foo ']" + +#: library/stdtypes.rst:2334 msgid "" "Return a list of the lines in the string, breaking at line boundaries. Line " "breaks are not included in the resulting list unless *keepends* is given and " @@ -4428,7 +4569,7 @@ msgstr "" "διαχωρίζοντας στα όρια των γραμμών. Τα διαχωριστικά των γραμμών δεν " "περιλαμβάνονται στην νέα λίστα, εκτός αν δοθεί το *keepends* και είναι true." -#: library/stdtypes.rst:2282 +#: library/stdtypes.rst:2338 msgid "" "This method splits on the following line boundaries. In particular, the " "boundaries are a superset of :term:`universal newlines`." @@ -4436,107 +4577,107 @@ msgstr "" "Αυτή η μέθοδος διαχωρίζει στα ακόλουθα όρια γραμμών. Πιο συγκεκριμένα, τα " "όρια είναι ένα υπερσύνολο του :term:`universal newlines`." -#: library/stdtypes.rst:2286 +#: library/stdtypes.rst:2342 msgid "Representation" msgstr "Αναπαράσταση" -#: library/stdtypes.rst:2286 +#: library/stdtypes.rst:2342 msgid "Description" msgstr "Περιγραφή" -#: library/stdtypes.rst:2288 +#: library/stdtypes.rst:2344 msgid "``\\n``" msgstr "``\\n``" -#: library/stdtypes.rst:2288 +#: library/stdtypes.rst:2344 msgid "Line Feed" msgstr "Line Feed" -#: library/stdtypes.rst:2290 +#: library/stdtypes.rst:2346 msgid "``\\r``" msgstr "``\\r``" -#: library/stdtypes.rst:2290 +#: library/stdtypes.rst:2346 msgid "Carriage Return" msgstr "Carriage Return" -#: library/stdtypes.rst:2292 +#: library/stdtypes.rst:2348 msgid "``\\r\\n``" msgstr "``\\r\\n``" -#: library/stdtypes.rst:2292 +#: library/stdtypes.rst:2348 msgid "Carriage Return + Line Feed" msgstr "Carriage Return + Line Feed" -#: library/stdtypes.rst:2294 +#: library/stdtypes.rst:2350 msgid "``\\v`` or ``\\x0b``" msgstr "``\\v`` or ``\\x0b``" -#: library/stdtypes.rst:2294 +#: library/stdtypes.rst:2350 msgid "Line Tabulation" msgstr "Line Tabulation" -#: library/stdtypes.rst:2296 +#: library/stdtypes.rst:2352 msgid "``\\f`` or ``\\x0c``" msgstr "``\\f`` or ``\\x0c``" -#: library/stdtypes.rst:2296 +#: library/stdtypes.rst:2352 msgid "Form Feed" msgstr "Form Feed" -#: library/stdtypes.rst:2298 +#: library/stdtypes.rst:2354 msgid "``\\x1c``" msgstr "``\\x1c``" -#: library/stdtypes.rst:2298 +#: library/stdtypes.rst:2354 msgid "File Separator" msgstr "Διαχωριστής Αρχείου" -#: library/stdtypes.rst:2300 +#: library/stdtypes.rst:2356 msgid "``\\x1d``" msgstr "``\\x1d``" -#: library/stdtypes.rst:2300 +#: library/stdtypes.rst:2356 msgid "Group Separator" msgstr "Διαχωριστής Group" -#: library/stdtypes.rst:2302 +#: library/stdtypes.rst:2358 msgid "``\\x1e``" msgstr "``\\x1e``" -#: library/stdtypes.rst:2302 +#: library/stdtypes.rst:2358 msgid "Record Separator" msgstr "Διαχωριστής Εγγραφών" -#: library/stdtypes.rst:2304 +#: library/stdtypes.rst:2360 msgid "``\\x85``" msgstr "``\\x85``" -#: library/stdtypes.rst:2304 +#: library/stdtypes.rst:2360 msgid "Next Line (C1 Control Code)" msgstr "Επόμενη Γραμμή (C1 Control Code)" -#: library/stdtypes.rst:2306 +#: library/stdtypes.rst:2362 msgid "``\\u2028``" msgstr "``\\u2028``" -#: library/stdtypes.rst:2306 +#: library/stdtypes.rst:2362 msgid "Line Separator" msgstr "Διαχωριστής Γραμμής" -#: library/stdtypes.rst:2308 +#: library/stdtypes.rst:2364 msgid "``\\u2029``" msgstr "``\\u2029``" -#: library/stdtypes.rst:2308 +#: library/stdtypes.rst:2364 msgid "Paragraph Separator" msgstr "Διαχωριστής Παραγράφου" -#: library/stdtypes.rst:2313 +#: library/stdtypes.rst:2369 msgid "``\\v`` and ``\\f`` added to list of line boundaries." msgstr "Τα ``\\v`` και ``\\f`` προστίθενται στην λίστα ορίων των γραμμών." -#: library/stdtypes.rst:2317 +#: library/stdtypes.rst:2373 msgid "" ">>> 'ab c\\n\\nde fg\\rkl\\r\\n'.splitlines()\n" "['ab c', '', 'de fg', 'kl']\n" @@ -4548,7 +4689,7 @@ msgstr "" ">>> 'ab c\\n\\nde fg\\rkl\\r\\n'.splitlines(keepends=True)\n" "['ab c\\n', '\\n', 'de fg\\r', 'kl\\r\\n']" -#: library/stdtypes.rst:2322 +#: library/stdtypes.rst:2378 msgid "" "Unlike :meth:`~str.split` when a delimiter string *sep* is given, this " "method returns an empty list for the empty string, and a terminal line break " @@ -4559,7 +4700,7 @@ msgstr "" "αλφαριθμητικό, και μια τερματικό break γραμμής δεν οδηγεί σε μια επιπλέον " "γραμμή::" -#: library/stdtypes.rst:2326 +#: library/stdtypes.rst:2382 msgid "" ">>> \"\".splitlines()\n" "[]\n" @@ -4571,11 +4712,11 @@ msgstr "" ">>> \"One line\\n\".splitlines()\n" "['One line']" -#: library/stdtypes.rst:2331 +#: library/stdtypes.rst:2387 msgid "For comparison, ``split('\\n')`` gives::" msgstr "Συγκριτικά, η ``split('\\n')`` δίνει::" -#: library/stdtypes.rst:2333 +#: library/stdtypes.rst:2389 msgid "" ">>> ''.split('\\n')\n" "['']\n" @@ -4587,7 +4728,7 @@ msgstr "" ">>> 'Two lines\\n'.split('\\n')\n" "['Two lines', '']" -#: library/stdtypes.rst:2341 +#: library/stdtypes.rst:2397 msgid "" "Return ``True`` if string starts with the *prefix*, otherwise return " "``False``. *prefix* can also be a tuple of prefixes to look for. With " @@ -4600,7 +4741,7 @@ msgstr "" "αλφαριθμητικό που αρχίζει από τη συγκεκριμένη θέση. Με το προαιρετικό " "*end*, σταματά η σύγκριση της συμβολοσειράς σε αυτή τη θέση." -#: library/stdtypes.rst:2349 +#: library/stdtypes.rst:2405 msgid "" "Return a copy of the string with the leading and trailing characters " "removed. The *chars* argument is a string specifying the set of characters " @@ -4615,7 +4756,7 @@ msgstr "" "default την αφαίρεση των κενών διαστημάτων. Το όρισμα *chars* δεν είναι " "prefix ή suffix· μάλλον, όλοι οι συνδυασμοί των τιμών του αφαιρούνται::" -#: library/stdtypes.rst:2355 +#: library/stdtypes.rst:2411 msgid "" ">>> ' spacious '.strip()\n" "'spacious'\n" @@ -4627,7 +4768,7 @@ msgstr "" ">>> 'www.example.com'.strip('cmowz.')\n" "'example'" -#: library/stdtypes.rst:2360 +#: library/stdtypes.rst:2416 msgid "" "The outermost leading and trailing *chars* argument values are stripped from " "the string. Characters are removed from the leading end until reaching a " @@ -4640,7 +4781,7 @@ msgstr "" "στο σύνολο χαρακτήρων του *chars*. Μια παρόμοια ενέργεια λαμβάνει χώρα στο " "τέλος της ουράς. Για παράδειγμα:" -#: library/stdtypes.rst:2366 +#: library/stdtypes.rst:2422 msgid "" ">>> comment_string = '#....... Section 3.2.1 Issue #32 .......'\n" ">>> comment_string.strip('.#! ')\n" @@ -4650,7 +4791,7 @@ msgstr "" ">>> comment_string.strip('.#! ')\n" "'Section 3.2.1 Issue #32'" -#: library/stdtypes.rst:2373 +#: library/stdtypes.rst:2429 msgid "" "Return a copy of the string with uppercase characters converted to lowercase " "and vice versa. Note that it is not necessarily true that ``s.swapcase()." @@ -4660,7 +4801,7 @@ msgstr "" "που έχουν μετατραπεί σε πεζούς και αντίστροφα. Σημειώστε ότι δεν είναι " "απαραίτητα αληθές ότι ``s.swapcase().swapcase() == s``." -#: library/stdtypes.rst:2380 +#: library/stdtypes.rst:2436 msgid "" "Return a titlecased version of the string where words start with an " "uppercase character and the remaining characters are lowercase." @@ -4668,7 +4809,7 @@ msgstr "" "Επιστρέφει μια titlecased έκδοση της συμβολοσειράς, όπου οι λέξεις ξεκινούν " "με ένα κεφαλαίο χαρακτήρα και οι υπόλοιποι χαρακτήρες είναι πεζοί." -#: library/stdtypes.rst:2385 +#: library/stdtypes.rst:2441 msgid "" ">>> 'Hello world'.title()\n" "'Hello World'" @@ -4676,7 +4817,7 @@ msgstr "" ">>> 'Hello world'.title()\n" "'Hello World'" -#: library/stdtypes.rst:3794 +#: library/stdtypes.rst:3850 msgid "" "The algorithm uses a simple language-independent definition of a word as " "groups of consecutive letters. The definition works in many contexts but it " @@ -4688,7 +4829,7 @@ msgstr "" "contexts, αλλά σημαίνει ότι οι απόστροφοι σε συναιρέσεις και κτητικές λέξεις " "αποτελούν όρια λέξεων, που μπορεί να μην είναι το επιθυμητό αποτέλεσμα::" -#: library/stdtypes.rst:2393 +#: library/stdtypes.rst:2449 msgid "" ">>> \"they're bill's friends from the UK\".title()\n" "\"They'Re Bill'S Friends From The Uk\"" @@ -4696,7 +4837,7 @@ msgstr "" ">>> \"they're bill's friends from the UK\".title()\n" "\"They'Re Bill'S Friends From The Uk\"" -#: library/stdtypes.rst:2396 +#: library/stdtypes.rst:2452 msgid "" "The :func:`string.capwords` function does not have this problem, as it " "splits words on spaces only." @@ -4704,7 +4845,7 @@ msgstr "" "Η συνάρτηση :func:`string.capwords` δεν έχει αυτό το πρόβλημα, καθώς χωρίζει " "τις λέξεις μόνο σε κενά." -#: library/stdtypes.rst:2399 +#: library/stdtypes.rst:2455 msgid "" "Alternatively, a workaround for apostrophes can be constructed using regular " "expressions::" @@ -4712,7 +4853,7 @@ msgstr "" "Εναλλακτικά, μπορεί να κατασκευαστεί μια λύση για τις αποστρόφους " "χρησιμοποιώντας κανονικές εκφράσεις::" -#: library/stdtypes.rst:2402 +#: library/stdtypes.rst:2458 msgid "" ">>> import re\n" ">>> def titlecase(s):\n" @@ -4732,7 +4873,7 @@ msgstr "" ">>> titlecase(\"they're bill's friends.\")\n" "\"They're Bill's Friends.\"" -#: library/stdtypes.rst:2414 +#: library/stdtypes.rst:2470 msgid "" "Return a copy of the string in which each character has been mapped through " "the given translation table. The table must be an object that implements " @@ -4755,7 +4896,7 @@ msgstr "" "επιστρέφεται· ή να κάνει raise ένα :exc:`LookupError`, για να αντιστοιχίσει " "τον χαρακτήρα στον εαυτό του." -#: library/stdtypes.rst:2423 +#: library/stdtypes.rst:2479 msgid "" "You can use :meth:`str.maketrans` to create a translation map from character-" "to-character mappings in different formats." @@ -4764,7 +4905,7 @@ msgstr "" "ένα χάρτη μετάφρασης αντιστοίχισης από χαρακτήρα-σε-χαρακτήρα σε " "διαφορετικές μορφές." -#: library/stdtypes.rst:2426 +#: library/stdtypes.rst:2482 msgid "" "See also the :mod:`codecs` module for a more flexible approach to custom " "character mappings." @@ -4772,7 +4913,7 @@ msgstr "" "Δείτε επίσης την ενότητα :mod:`codecs` για μια πιο ευέλικτη προσέγγιση σε " "προσαρμοσμένα mappings χαρακτήρων." -#: library/stdtypes.rst:2432 +#: library/stdtypes.rst:2488 msgid "" "Return a copy of the string with all the cased characters [4]_ converted to " "uppercase. Note that ``s.upper().isupper()`` might be ``False`` if ``s`` " @@ -4786,7 +4927,7 @@ msgstr "" "πεζά γράμματα ή αν η κατηγορία Unicode του προκύπτοντος χαρακτήρα(ων) δεν " "είναι \"Lu\" (Γράμμα, κεφαλαίο), αλλά π.χ. \"Lt\" (Γράμμα, titlecase)." -#: library/stdtypes.rst:2438 +#: library/stdtypes.rst:2494 msgid "" "The uppercasing algorithm used is `described in section 3.13 'Default Case " "Folding' of the Unicode Standard `__." -#: library/stdtypes.rst:2445 +#: library/stdtypes.rst:2501 msgid "" "Return a copy of the string left filled with ASCII ``'0'`` digits to make a " "string of length *width*. A leading sign prefix (``'+'``/``'-'``) is handled " @@ -4810,7 +4951,7 @@ msgstr "" "συμπλήρωση *μετά* τον χαρακτήρα sign αντί για πριν. Η αρχική συμβολοσειρά " "επιστρέφεται εάν το *width* είναι μικρότερο ή ίσο με ``len(s)``." -#: library/stdtypes.rst:2453 +#: library/stdtypes.rst:2509 msgid "" ">>> \"42\".zfill(5)\n" "'00042'\n" @@ -4822,11 +4963,11 @@ msgstr "" ">>> \"-42\".zfill(5)\n" "'-0042'" -#: library/stdtypes.rst:2474 +#: library/stdtypes.rst:2530 msgid "Formatted String Literals (f-strings)" msgstr "Διαμορφωμένες Κυριολεκτικές Συμβολοσειρές (f-strings)" -#: library/stdtypes.rst:2477 +#: library/stdtypes.rst:2533 msgid "" "The :keyword:`await` and :keyword:`async for` can be used in expressions " "within f-strings." @@ -4834,11 +4975,11 @@ msgstr "" "Τα :keyword:`await` και :keyword:`async for` μπορούν να χρησιμοποιηθούν σε " "εκφράσεις μέσα σε f-strings." -#: library/stdtypes.rst:2480 +#: library/stdtypes.rst:2536 msgid "Added the debugging operator (``=``)" msgstr "Προστέθηκε ο τελεστής αποσφαλμάτωσης (``=``)" -#: library/stdtypes.rst:2482 +#: library/stdtypes.rst:2538 msgid "" "Many restrictions on expressions within f-strings have been removed. " "Notably, nested strings, comments, and backslashes are now permitted." @@ -4847,7 +4988,7 @@ msgstr "" "Ιδιαίτερα, πλέον επιτρέπονται οι εμφωλευμένες συμβολοσειρές, τα σχόλια και " "οι κάθετοι." -#: library/stdtypes.rst:2486 +#: library/stdtypes.rst:2542 msgid "" "An :dfn:`f-string` (formally a :dfn:`formatted string literal`) is a string " "literal that is prefixed with ``f`` or ``F``. This type of string literal " @@ -4864,7 +5005,7 @@ msgstr "" "τρόπο όπως η μέθοδος :meth:`str.format`, και μετατρέπονται σε κανονικά " "αντικείμενα τύπου :class:`str`. Για παράδειγμα:" -#: library/stdtypes.rst:2494 +#: library/stdtypes.rst:2550 msgid "" ">>> who = 'nobody'\n" ">>> nationality = 'Spanish'\n" @@ -4876,11 +5017,11 @@ msgstr "" ">>> f'{who.title()} expects the {nationality} Inquisition!'\n" "'Nobody expects the Spanish Inquisition!'" -#: library/stdtypes.rst:2501 +#: library/stdtypes.rst:2557 msgid "It is also possible to use a multi line f-string:" msgstr "Είναι επίσης δυνατό να χρησιμοποιηθεί μια f-string πολλών γραμμών:" -#: library/stdtypes.rst:2503 +#: library/stdtypes.rst:2559 msgid "" ">>> f'''This is a string\n" "... on two lines'''\n" @@ -4890,7 +5031,7 @@ msgstr "" "... on two lines'''\n" "'This is a string\\non two lines'" -#: library/stdtypes.rst:2509 +#: library/stdtypes.rst:2565 msgid "" "A single opening curly bracket, ``'{'``, marks a *replacement field* that " "can contain any Python expression:" @@ -4898,7 +5039,7 @@ msgstr "" "Ένα μόνο άνοιγμα αγκύλης, ``'{'``, δηλώνει ένα *πεδίο αντικατάστασης* που " "μπορεί να περιέχει οποιαδήποτε έκφραση Python:" -#: library/stdtypes.rst:2512 +#: library/stdtypes.rst:2568 msgid "" ">>> nationality = 'Spanish'\n" ">>> f'The {nationality} Inquisition!'\n" @@ -4908,13 +5049,13 @@ msgstr "" ">>> f'The {nationality} Inquisition!'\n" "'The Spanish Inquisition!'" -#: library/stdtypes.rst:2518 +#: library/stdtypes.rst:2574 msgid "To include a literal ``{`` or ``}``, use a double bracket:" msgstr "" "Για να συμπεριλάβετε μια κυριολεξία ``{`` ή ``}``, χρησιμοποιήστε διπλή " "αγκύλη:" -#: library/stdtypes.rst:2520 +#: library/stdtypes.rst:2576 msgid "" ">>> x = 42\n" ">>> f'{{x}} is {x}'\n" @@ -4924,14 +5065,14 @@ msgstr "" ">>> f'{{x}} is {x}'\n" "'{x} is 42'" -#: library/stdtypes.rst:2526 +#: library/stdtypes.rst:2582 msgid "" "Functions can also be used, and :ref:`format specifiers `:" msgstr "" "Μπορούν επίσης να χρησιμοποιηθούν συναρτήσεις καθώς και :ref:`format " "specifiers `:" -#: library/stdtypes.rst:2528 +#: library/stdtypes.rst:2584 msgid "" ">>> from math import sqrt\n" ">>> f'√2 \\N{ALMOST EQUAL TO} {sqrt(2):.5f}'\n" @@ -4941,13 +5082,13 @@ msgstr "" ">>> f'√2 \\N{ALMOST EQUAL TO} {sqrt(2):.5f}'\n" "'√2 ≈ 1.41421'" -#: library/stdtypes.rst:2534 +#: library/stdtypes.rst:2590 msgid "Any non-string expression is converted using :func:`str`, by default:" msgstr "" "Κάθε έκφραση μη-συμβολοσειράς μετατρέπεται χρησιμοποιώντας τη :func:`str`, " "από προεπιλογή:" -#: library/stdtypes.rst:2536 +#: library/stdtypes.rst:2592 msgid "" ">>> from fractions import Fraction\n" ">>> f'{Fraction(1, 3)}'\n" @@ -4957,7 +5098,7 @@ msgstr "" ">>> f'{Fraction(1, 3)}'\n" "'1/3'" -#: library/stdtypes.rst:2542 +#: library/stdtypes.rst:2598 msgid "" "To use an explicit conversion, use the ``!`` (exclamation mark) operator, " "followed by any of the valid formats, which are:" @@ -4966,39 +5107,39 @@ msgstr "" "(θαυμαστικό), ακολουθούμενο από οποιεσδήποτε από τις έγκυρες μορφές, τα " "οποία είναι:" -#: library/stdtypes.rst:2714 library/stdtypes.rst:3973 +#: library/stdtypes.rst:2770 library/stdtypes.rst:4029 msgid "Conversion" msgstr "Μετατροπή" -#: library/stdtypes.rst:2548 +#: library/stdtypes.rst:2604 msgid "``!a``" msgstr "``!a``" -#: library/stdtypes.rst:2548 +#: library/stdtypes.rst:2604 msgid ":func:`ascii`" msgstr ":func:`ascii`" -#: library/stdtypes.rst:2549 +#: library/stdtypes.rst:2605 msgid "``!r``" msgstr "``!r``" -#: library/stdtypes.rst:2549 +#: library/stdtypes.rst:2605 msgid ":func:`repr`" msgstr ":func:`repr`" -#: library/stdtypes.rst:2550 +#: library/stdtypes.rst:2606 msgid "``!s``" msgstr "``!s``" -#: library/stdtypes.rst:2550 +#: library/stdtypes.rst:2606 msgid ":func:`str`" msgstr ":func:`str`" -#: library/stdtypes.rst:2553 +#: library/stdtypes.rst:2609 msgid "For example:" msgstr "Για παράδειγμα:" -#: library/stdtypes.rst:2555 +#: library/stdtypes.rst:2611 msgid "" ">>> from fractions import Fraction\n" ">>> f'{Fraction(1, 3)!s}'\n" @@ -5018,7 +5159,7 @@ msgstr "" ">>> print(f'{question!a}')\n" "'\\xbfD\\xf3nde est\\xe1 el Presidente?'" -#: library/stdtypes.rst:2566 +#: library/stdtypes.rst:2622 msgid "" "While debugging it may be helpful to see both the expression and its value, " "by using the equals sign (``=``) after the expression. This preserves spaces " @@ -5032,7 +5173,7 @@ msgstr "" "αποσφαλμάτωσης χρησιμοποιεί τη μετατροπή :func:`repr` (``!r``). Για " "παράδειγμα:" -#: library/stdtypes.rst:2572 +#: library/stdtypes.rst:2628 msgid "" ">>> from fractions import Fraction\n" ">>> calculation = Fraction(1, 3)\n" @@ -5052,7 +5193,7 @@ msgstr "" ">>> f'{calculation = !s}'\n" "'calculation = 1/3'" -#: library/stdtypes.rst:2583 +#: library/stdtypes.rst:2639 msgid "" "Once the output has been evaluated, it can be formatted using a :ref:`format " "specifier ` following a colon (``':'``). After the expression " @@ -5069,7 +5210,7 @@ msgstr "" "καθοριστής μορφοποίησης. Το μορφοποιημένο αποτέλεσμα χρησιμοποιείται στη " "συνέχεια ως η τελική τιμή για το πεδίο αντικατάστασης. Για παράδειγμα:" -#: library/stdtypes.rst:2591 +#: library/stdtypes.rst:2647 msgid "" ">>> from fractions import Fraction\n" ">>> f'{Fraction(1, 7):.6f}'\n" @@ -5083,11 +5224,11 @@ msgstr "" ">>> f'{Fraction(1, 7):_^+10}'\n" "'___+1/7___'" -#: library/stdtypes.rst:2603 +#: library/stdtypes.rst:2659 msgid "``printf``-style String Formatting" msgstr "``printf``-style String Formatting" -#: library/stdtypes.rst:2616 +#: library/stdtypes.rst:2672 msgid "" "The formatting operations described here exhibit a variety of quirks that " "lead to a number of common errors (such as failing to display tuples and " @@ -5106,7 +5247,7 @@ msgstr "" "τους δικούς τις συμβιβασμούς και τα οφέλη της απλότητας, ευελιξίας και/ή " "επεκτασιμότητας." -#: library/stdtypes.rst:2624 +#: library/stdtypes.rst:2680 msgid "" "String objects have one unique built-in operation: the ``%`` operator " "(modulo). This is also known as the string *formatting* or *interpolation* " @@ -5123,7 +5264,7 @@ msgstr "" "είναι παρόμοιο με τη χρήση του :c:func:`sprintf` στη γλώσσα C. Για " "παράδειγμα:" -#: library/stdtypes.rst:2631 +#: library/stdtypes.rst:2687 msgid "" ">>> print('%s has %d quote types.' % ('Python', 2))\n" "Python has 2 quote types." @@ -5131,7 +5272,7 @@ msgstr "" ">>> print('%s has %d quote types.' % ('Python', 2))\n" "Python has 2 quote types." -#: library/stdtypes.rst:2636 +#: library/stdtypes.rst:2692 msgid "" "If *format* requires a single argument, *values* may be a single non-tuple " "object. [5]_ Otherwise, *values* must be a tuple with exactly the number of " @@ -5144,7 +5285,7 @@ msgstr "" "από το format string ή ένα μεμονωμένο αντικείμενο αντιστοίχισης (για " "παράδειγμα, ένα λεξικό)." -#: library/stdtypes.rst:3905 +#: library/stdtypes.rst:3961 msgid "" "A conversion specifier contains two or more characters and has the following " "components, which must occur in this order:" @@ -5152,11 +5293,11 @@ msgstr "" "Ένας προσδιοριστής μετατροπής περιέχει δύο ή περισσότερους χαρακτήρες και " "έχει τους εξής components, οι οποίοι πρέπει να εμφανίζονται με αυτή τη σειρά:" -#: library/stdtypes.rst:3908 +#: library/stdtypes.rst:3964 msgid "The ``'%'`` character, which marks the start of the specifier." msgstr "Ο χαρακτήρας ```%''``, που σηματοδοτεί την αρχή του προσδιοριστή." -#: library/stdtypes.rst:3910 +#: library/stdtypes.rst:3966 msgid "" "Mapping key (optional), consisting of a parenthesised sequence of characters " "(for example, ``(somename)``)." @@ -5164,7 +5305,7 @@ msgstr "" "Κλειδί mapping (προαιρετικό), που αποτελείται από μια ακολουθία χαρακτήρων " "σε παρένθεση (για παράδειγμα, ``(somename)``)." -#: library/stdtypes.rst:3913 +#: library/stdtypes.rst:3969 msgid "" "Conversion flags (optional), which affect the result of some conversion " "types." @@ -5172,7 +5313,7 @@ msgstr "" "Δείκτες μετατροπής (προαιρετικό), που επηρεάζουν το αποτέλεσμα κάποιων τύπων " "μετατροπής." -#: library/stdtypes.rst:3916 +#: library/stdtypes.rst:3972 msgid "" "Minimum field width (optional). If specified as an ``'*'`` (asterisk), the " "actual width is read from the next element of the tuple in *values*, and the " @@ -5183,7 +5324,7 @@ msgstr "" "*values*, και το αντικείμενο προς μετατροπή έρχεται μετά από το ελάχιστο " "πλάτος πεδίου και το προαιρετικό precision." -#: library/stdtypes.rst:3920 +#: library/stdtypes.rst:3976 msgid "" "Precision (optional), given as a ``'.'`` (dot) followed by the precision. " "If specified as ``'*'`` (an asterisk), the actual precision is read from the " @@ -5195,15 +5336,15 @@ msgstr "" "διαβάζεται από το επόμενο στοιχείο του tuple στα *values*, και η τιμή προς " "μετατροπή έρχεται μετά το precision." -#: library/stdtypes.rst:3925 +#: library/stdtypes.rst:3981 msgid "Length modifier (optional)." msgstr "Μετατροπέας του length (προαιρετικό)." -#: library/stdtypes.rst:3927 +#: library/stdtypes.rst:3983 msgid "Conversion type." msgstr "Τύπος conversion." -#: library/stdtypes.rst:2670 +#: library/stdtypes.rst:2726 msgid "" "When the right argument is a dictionary (or other mapping type), then the " "formats in the string *must* include a parenthesised mapping key into that " @@ -5216,7 +5357,7 @@ msgstr "" "``'%'``. Το κλειδί αντιστοίχισης επιλέγει την τιμή που θα μορφοποιηθεί από " "την αντιστοίχιση. Για παράδειγμα:" -#: library/stdtypes.rst:3938 +#: library/stdtypes.rst:3994 msgid "" "In this case no ``*`` specifiers may occur in a format (since they require a " "sequential parameter list)." @@ -5224,38 +5365,38 @@ msgstr "" "Σε αυτήν την περίπτωση δεν μπορεί να υπάρχουν προσδιοριστές ``*`` σε μια " "μορφή (καθώς απαιτούν μια διαδοχική λίστα παραμέτρων)." -#: library/stdtypes.rst:3941 +#: library/stdtypes.rst:3997 msgid "The conversion flag characters are:" msgstr "Οι δείκτες μετατροπής είναι:" -#: library/stdtypes.rst:3950 +#: library/stdtypes.rst:4006 msgid "Flag" msgstr "Flag" -#: library/stdtypes.rst:3952 +#: library/stdtypes.rst:4008 msgid "``'#'``" msgstr "``'#'``" -#: library/stdtypes.rst:3952 +#: library/stdtypes.rst:4008 msgid "" "The value conversion will use the \"alternate form\" (where defined below)." msgstr "" "Οι μετατροπή τιμής θα χρησιμοποιήσει την \"εναλλακτική φόρμα\" (όπου " "ορίζεται παρακάτω)." -#: library/stdtypes.rst:3955 +#: library/stdtypes.rst:4011 msgid "``'0'``" msgstr "``'0'``" -#: library/stdtypes.rst:3955 +#: library/stdtypes.rst:4011 msgid "The conversion will be zero padded for numeric values." msgstr "Η μετατροπή θα έχει μηδενική συμπλήρωση για αριθμητικές τιμές." -#: library/stdtypes.rst:3957 +#: library/stdtypes.rst:4013 msgid "``'-'``" msgstr "``'-'``" -#: library/stdtypes.rst:3957 +#: library/stdtypes.rst:4013 msgid "" "The converted value is left adjusted (overrides the ``'0'`` conversion if " "both are given)." @@ -5263,11 +5404,11 @@ msgstr "" "Η τιμή μετατροπής αφήνεται προσαρμοσμένη (παρακάμπτει τη μετατροπή ``'0'`` " "εάν δίνονται και τα δύο)." -#: library/stdtypes.rst:3960 +#: library/stdtypes.rst:4016 msgid "``' '``" msgstr "``' '``" -#: library/stdtypes.rst:3960 +#: library/stdtypes.rst:4016 msgid "" "(a space) A blank should be left before a positive number (or empty string) " "produced by a signed conversion." @@ -5275,11 +5416,11 @@ msgstr "" "(ένα κενό) Πρέπει να προστεθεί ένα κενό πριν από έναν θετικό αριθμό (ή κενή " "συμβολοσειρά) που παράγεται από μια υπογεγραμμένη μετατροπή." -#: library/stdtypes.rst:3963 +#: library/stdtypes.rst:4019 msgid "``'+'``" msgstr "``'+'``" -#: library/stdtypes.rst:3963 +#: library/stdtypes.rst:4019 msgid "" "A sign character (``'+'`` or ``'-'``) will precede the conversion (overrides " "a \"space\" flag)." @@ -5287,7 +5428,7 @@ msgstr "" "Ένα χαρακτήρας προσήμου (``'+'`` ή ``'-'``) θα προηγείται της μετατροπής " "(παρακάμπτει ένα \"κενό\" δείκτη)." -#: library/stdtypes.rst:3967 +#: library/stdtypes.rst:4023 msgid "" "A length modifier (``h``, ``l``, or ``L``) may be present, but is ignored as " "it is not necessary for Python -- so e.g. ``%ld`` is identical to ``%d``." @@ -5296,87 +5437,87 @@ msgstr "" "αγνοείται καθώς δεν είναι απαραίτητος για την Python -- οπότε π.χ. ``%ld`` " "είναι πανομοιότυπο σε ``%d``." -#: library/stdtypes.rst:3970 +#: library/stdtypes.rst:4026 msgid "The conversion types are:" msgstr "Οι τύποι μετατροπής είναι:" -#: library/stdtypes.rst:3975 +#: library/stdtypes.rst:4031 msgid "``'d'``" msgstr "``'d'``" -#: library/stdtypes.rst:2718 library/stdtypes.rst:3977 +#: library/stdtypes.rst:2774 library/stdtypes.rst:4033 msgid "Signed integer decimal." msgstr "Υπογεγραμμένος δεκαδικός ακέραιος." -#: library/stdtypes.rst:3977 +#: library/stdtypes.rst:4033 msgid "``'i'``" msgstr "``'i'``" -#: library/stdtypes.rst:3979 +#: library/stdtypes.rst:4035 msgid "``'o'``" msgstr "``'o'``" -#: library/stdtypes.rst:3979 +#: library/stdtypes.rst:4035 msgid "Signed octal value." msgstr "Υπογεγραμμένη οκταδική τιμή." -#: library/stdtypes.rst:3981 +#: library/stdtypes.rst:4037 msgid "``'u'``" msgstr "``'u'``" -#: library/stdtypes.rst:3981 +#: library/stdtypes.rst:4037 msgid "Obsolete type -- it is identical to ``'d'``." msgstr "Απαρχαιωμένος τύπος -- είναι πανομοιότυπος με το ``'d'``." -#: library/stdtypes.rst:3983 +#: library/stdtypes.rst:4039 msgid "``'x'``" msgstr "``'x'``" -#: library/stdtypes.rst:3983 +#: library/stdtypes.rst:4039 msgid "Signed hexadecimal (lowercase)." msgstr "Υπογεγραμμένο δεκαεξαδικό (πεζά)." -#: library/stdtypes.rst:3985 +#: library/stdtypes.rst:4041 msgid "``'X'``" msgstr "``'X'``" -#: library/stdtypes.rst:3985 +#: library/stdtypes.rst:4041 msgid "Signed hexadecimal (uppercase)." msgstr "Υπογεγραμμένο δεκαεξαδικό (κεφαλαίο)." -#: library/stdtypes.rst:3987 +#: library/stdtypes.rst:4043 msgid "``'e'``" msgstr "``'e'``" -#: library/stdtypes.rst:3987 +#: library/stdtypes.rst:4043 msgid "Floating-point exponential format (lowercase)." msgstr "Εκθετική μορφή κινητής υποδιαστολής (πεζά)" -#: library/stdtypes.rst:3989 +#: library/stdtypes.rst:4045 msgid "``'E'``" msgstr "``'E'``" -#: library/stdtypes.rst:3989 +#: library/stdtypes.rst:4045 msgid "Floating-point exponential format (uppercase)." msgstr "Εκθετική μορφή κινητής υποδιαστολής (κεφαλαία)" -#: library/stdtypes.rst:3991 +#: library/stdtypes.rst:4047 msgid "``'f'``" msgstr "``'f'``" -#: library/stdtypes.rst:2734 library/stdtypes.rst:3993 +#: library/stdtypes.rst:2790 library/stdtypes.rst:4049 msgid "Floating-point decimal format." msgstr "Δεκαδική μορφή κινητής υποδιαστολής." -#: library/stdtypes.rst:3993 +#: library/stdtypes.rst:4049 msgid "``'F'``" msgstr "``'F'``" -#: library/stdtypes.rst:3995 +#: library/stdtypes.rst:4051 msgid "``'g'``" msgstr "``'g'``" -#: library/stdtypes.rst:3995 +#: library/stdtypes.rst:4051 msgid "" "Floating-point format. Uses lowercase exponential format if exponent is less " "than -4 or not less than precision, decimal format otherwise." @@ -5385,11 +5526,11 @@ msgstr "" "είναι μικρότερος από -4 ή όχι μικρότερος από την ακρίβεια, διαφορετικά " "χρησιμοποιεί δεκαδική μορφή." -#: library/stdtypes.rst:3999 +#: library/stdtypes.rst:4055 msgid "``'G'``" msgstr "``'G'``" -#: library/stdtypes.rst:3999 +#: library/stdtypes.rst:4055 msgid "" "Floating-point format. Uses uppercase exponential format if exponent is less " "than -4 or not less than precision, decimal format otherwise." @@ -5398,56 +5539,56 @@ msgstr "" "εκθέτης είναι μικρότερος από -4 ή όχι μικρότερος από την ακρίβεια, " "διαφορετικά χρησιμοποιεί δεκαδική μορφή." -#: library/stdtypes.rst:4003 +#: library/stdtypes.rst:4059 msgid "``'c'``" msgstr "``'c'``" -#: library/stdtypes.rst:2744 +#: library/stdtypes.rst:2800 msgid "Single character (accepts integer or single character string)." msgstr "" "Μεμονωμένος χαρακτήρας (δέχεται ακέραιο ή μονό χαρακτήρα συμβολοσειράς)." -#: library/stdtypes.rst:4016 +#: library/stdtypes.rst:4072 msgid "``'r'``" msgstr "``'r'``" -#: library/stdtypes.rst:2747 +#: library/stdtypes.rst:2803 msgid "String (converts any Python object using :func:`repr`)." msgstr "" "Συμβολοσειρά (μετατρέπει οποιοδήποτε αντικείμενο Python χρησιμοποιώντας :" "func:`repr`)." -#: library/stdtypes.rst:4010 +#: library/stdtypes.rst:4066 msgid "``'s'``" msgstr "``'s'``" -#: library/stdtypes.rst:2750 +#: library/stdtypes.rst:2806 msgid "String (converts any Python object using :func:`str`)." msgstr "" "Συμβολοσειρά (μετατρέπει οποιοδήποτε αντικείμενο Python χρησιμοποιώντας :" "func:`str`)." -#: library/stdtypes.rst:4013 +#: library/stdtypes.rst:4069 msgid "``'a'``" msgstr "``'a'``" -#: library/stdtypes.rst:2753 +#: library/stdtypes.rst:2809 msgid "String (converts any Python object using :func:`ascii`)." msgstr "" "Συμβολοσειρά (μετατρέπει οποιοδήποτε αντικείμενο Python χρησιμοποιώντας :" "func:`ascii`)." -#: library/stdtypes.rst:4019 +#: library/stdtypes.rst:4075 msgid "``'%'``" msgstr "``'%'``" -#: library/stdtypes.rst:4019 +#: library/stdtypes.rst:4075 msgid "No argument is converted, results in a ``'%'`` character in the result." msgstr "" "Κανένα όρισμα δεν μετατρέπεται, έχει ως αποτέλεσμα έναν χαρακτήρα ``'%'`` το " "αποτέλεσμα." -#: library/stdtypes.rst:4026 +#: library/stdtypes.rst:4082 msgid "" "The alternate form causes a leading octal specifier (``'0o'``) to be " "inserted before the first digit." @@ -5455,7 +5596,7 @@ msgstr "" "Η εναλλακτική μορφή προκαλεί την εισαγωγή ενός πρώτου οκταδικού προσδιοριστή " "(``'0o'``) πριν από το πρώτο ψηφίο." -#: library/stdtypes.rst:4030 +#: library/stdtypes.rst:4086 msgid "" "The alternate form causes a leading ``'0x'`` or ``'0X'`` (depending on " "whether the ``'x'`` or ``'X'`` format was used) to be inserted before the " @@ -5465,7 +5606,7 @@ msgstr "" "(ανάλογα με το εάν χρησιμοποιήθηκε η μορφή ``'x'`` ή ``'X'``) πριν το πρώτο " "ψηφίο." -#: library/stdtypes.rst:4034 +#: library/stdtypes.rst:4090 msgid "" "The alternate form causes the result to always contain a decimal point, even " "if no digits follow it." @@ -5473,7 +5614,7 @@ msgstr "" "Η εναλλακτική μορφή κάνει το αποτέλεσμα να περιέχει πάντα μια υποδιαστολή, " "ακόμα κι αν δεν ακολουθούν ψηφία." -#: library/stdtypes.rst:4037 +#: library/stdtypes.rst:4093 msgid "" "The precision determines the number of digits after the decimal point and " "defaults to 6." @@ -5481,7 +5622,7 @@ msgstr "" "Η ακρίβεια καθορίζει τον αριθμό των ψηφίων μετά την υποδιαστολή και ορίζεται " "από προεπιλογή ως 6." -#: library/stdtypes.rst:4041 +#: library/stdtypes.rst:4097 msgid "" "The alternate form causes the result to always contain a decimal point, and " "trailing zeroes are not removed as they would otherwise be." @@ -5489,7 +5630,7 @@ msgstr "" "Η εναλλακτική μορφή κάνει το αποτέλεσμα να περιέχει πάντα μια υποδιαστολή " "και τα μηδενικά στο τέλος δεν αφαιρούνται όπως θα ήταν διαφορετικά." -#: library/stdtypes.rst:4044 +#: library/stdtypes.rst:4100 msgid "" "The precision determines the number of significant digits before and after " "the decimal point and defaults to 6." @@ -5497,15 +5638,15 @@ msgstr "" "Η ακρίβεια καθορίζει τον αριθμό των σημαντικών ψηφίων πριν και μετά την " "υποδιαστολή και ορίζει το 6." -#: library/stdtypes.rst:4048 +#: library/stdtypes.rst:4104 msgid "If precision is ``N``, the output is truncated to ``N`` characters." msgstr "Εάν η ακρίβεια είναι``N``, η έξοδος περικόπτεται σε ``N`` χαρακτήρες." -#: library/stdtypes.rst:4057 +#: library/stdtypes.rst:4113 msgid "See :pep:`237`." msgstr "Βλέπε :pep:`237`." -#: library/stdtypes.rst:2790 +#: library/stdtypes.rst:2846 msgid "" "Since Python strings have an explicit length, ``%s`` conversions do not " "assume that ``'\\0'`` is the end of the string." @@ -5513,7 +5654,7 @@ msgstr "" "Δεδομένου ότι οι συμβολοσειρές Python έχουν ρητό μήκος, οι ``%s`` μετατροπές " "δεν υποθέτουν ότι το ``'\\0'`` είναι το τέλος της συμβολοσειράς." -#: library/stdtypes.rst:2795 +#: library/stdtypes.rst:2851 msgid "" "``%f`` conversions for numbers whose absolute value is over 1e50 are no " "longer replaced by ``%g`` conversions." @@ -5521,7 +5662,7 @@ msgstr "" "Οι μετατροπείς ``%f`` για αριθμούς των οποίων η απόλυτη τιμή είναι " "μεγαλύτερη από 1e50 δεν αντικαθίστανται πλέον από μετατροπές ``%g``." -#: library/stdtypes.rst:2806 +#: library/stdtypes.rst:2862 msgid "" "Binary Sequence Types --- :class:`bytes`, :class:`bytearray`, :class:" "`memoryview`" @@ -5529,7 +5670,7 @@ msgstr "" "Τύποι δυαδικής ακολουθίας --- :class:`bytes`, :class:`bytearray`, :class:" "`memoryview`" -#: library/stdtypes.rst:2814 +#: library/stdtypes.rst:2870 msgid "" "The core built-in types for manipulating binary data are :class:`bytes` and :" "class:`bytearray`. They are supported by :class:`memoryview` which uses the :" @@ -5542,7 +5683,7 @@ msgstr "" "` για την πρόσβαση στη μνήμη άλλων δυαδικών αντικειμένων " "χωρίς να χρειάζεται η δημιουργία αντιγράφου." -#: library/stdtypes.rst:2819 +#: library/stdtypes.rst:2875 msgid "" "The :mod:`array` module supports efficient storage of basic data types like " "32-bit integers and IEEE754 double-precision floating values." @@ -5551,11 +5692,11 @@ msgstr "" "δεδομένων όπως 32-bit ακέραιους και IEEE754 διπλής ακρίβειας κινητής " "υποδιαστολής τιμές." -#: library/stdtypes.rst:2825 +#: library/stdtypes.rst:2881 msgid "Bytes Objects" msgstr "Αντικείμενα Bytes" -#: library/stdtypes.rst:2829 +#: library/stdtypes.rst:2885 msgid "" "Bytes objects are immutable sequences of single bytes. Since many major " "binary protocols are based on the ASCII text encoding, bytes objects offer " @@ -5568,7 +5709,7 @@ msgstr "" "ισχύουν μόνο όταν εργάζονται με δεδομένα συμβατά με ASCII και σχετίζονται " "στενά με αντικείμενα συμβολοσειρών σε μια ποικιλία διαφόρων τρόπων." -#: library/stdtypes.rst:2836 +#: library/stdtypes.rst:2892 msgid "" "Firstly, the syntax for bytes literals is largely the same as that for " "string literals, except that a ``b`` prefix is added:" @@ -5577,25 +5718,25 @@ msgstr "" "για τα literals συμβολοσειρών, με τη διαφορά ότι προστίθεται ένα πρόθεμα " "``b``::" -#: library/stdtypes.rst:2839 +#: library/stdtypes.rst:2895 msgid "Single quotes: ``b'still allows embedded \"double\" quotes'``" msgstr "" "Μονά εισαγωγικά: ``b'ακόμα επιτρέπει ενσωματωμένα \"διπλά\" εισαγωγικά'``" -#: library/stdtypes.rst:2840 +#: library/stdtypes.rst:2896 msgid "Double quotes: ``b\"still allows embedded 'single' quotes\"``" msgstr "" "Διπλά εισαγωγικά: ``b\"εξακολουθεί να επιτρέπει ενσωματωμένα 'μονά' " "εισαγωγικά\"``" -#: library/stdtypes.rst:2841 +#: library/stdtypes.rst:2897 msgid "" "Triple quoted: ``b'''3 single quotes'''``, ``b\"\"\"3 double quotes\"\"\"``" msgstr "" "Τριπλά εισαγωγικά: ``b'''3 μονά εισαγωγικά'''``, ``b\"\"\"3 διπλά " "εισαγωγικά\"\"\"``" -#: library/stdtypes.rst:2843 +#: library/stdtypes.rst:2899 msgid "" "Only ASCII characters are permitted in bytes literals (regardless of the " "declared source code encoding). Any binary values over 127 must be entered " @@ -5606,7 +5747,7 @@ msgstr "" "127, πρέπει να εισαχθούν σε bytes literals χρησιμοποιώντας την κατάλληλη " "ακολουθία διαφυγής χαρακτήρων." -#: library/stdtypes.rst:2847 +#: library/stdtypes.rst:2903 msgid "" "As with string literals, bytes literals may also use a ``r`` prefix to " "disable processing of escape sequences. See :ref:`strings` for more about " @@ -5618,7 +5759,7 @@ msgstr "" "πληροφορίες σχετικά με τις διάφορες μορφές bytes literal, " "συμπεριλαμβανομένων των υποστηριζόμενων ακολουθιών διαφυγής χαρακτήρων." -#: library/stdtypes.rst:2851 +#: library/stdtypes.rst:2907 msgid "" "While bytes literals and representations are based on ASCII text, bytes " "objects actually behave like immutable sequences of integers, with each " @@ -5641,7 +5782,7 @@ msgstr "" "εφαρμογή αλγορίθμων επεξεργασίας κειμένου σε δυαδικές μορφές δεδομένων που " "δεν είναι συμβατές με ASCII συνήθως οδηγεί σε καταστροφή δεδομένων)." -#: library/stdtypes.rst:2861 +#: library/stdtypes.rst:2917 msgid "" "In addition to the literal forms, bytes objects can be created in a number " "of other ways:" @@ -5649,25 +5790,25 @@ msgstr "" "Εκτός από τις literal μορφές, τα αντικείμενα bytes μπορούν να δημιουργηθούν " "με πολλούς άλλους τρόπους:" -#: library/stdtypes.rst:2864 +#: library/stdtypes.rst:2920 msgid "A zero-filled bytes object of a specified length: ``bytes(10)``" msgstr "Ένα μηδενικό αντικείμενο bytes με καθορισμένο μήκος: ``bytes(10)``" -#: library/stdtypes.rst:2865 +#: library/stdtypes.rst:2921 msgid "From an iterable of integers: ``bytes(range(20))``" msgstr "Από ένα iterable ακεραίων αριθμών: ``bytes(range(20))``" -#: library/stdtypes.rst:2866 +#: library/stdtypes.rst:2922 msgid "Copying existing binary data via the buffer protocol: ``bytes(obj)``" msgstr "" "Αντιγραφή υπαρχόντων δυαδικών δεδομένων μέσω του πρωτοκόλλου buffer: " "``bytes(obj)``" -#: library/stdtypes.rst:2868 +#: library/stdtypes.rst:2924 msgid "Also see the :ref:`bytes ` built-in." msgstr "Δείτε επίσης το ενσωματωμένο :ref:`bytes `." -#: library/stdtypes.rst:2870 +#: library/stdtypes.rst:2926 msgid "" "Since 2 hexadecimal digits correspond precisely to a single byte, " "hexadecimal numbers are a commonly used format for describing binary data. " @@ -5679,7 +5820,7 @@ msgstr "" "περιγραφή δυαδικών δεδομένων. Συνεπώς, ο τύπος bytes έχει μια πρόσθετη " "μέθοδο κλάσης για την ανάγνωση δεδομένων σε αυτήν την μορφή:" -#: library/stdtypes.rst:2876 +#: library/stdtypes.rst:2932 msgid "" "This :class:`bytes` class method returns a bytes object, decoding the given " "string object. The string must contain two hexadecimal digits per byte, " @@ -5690,7 +5831,7 @@ msgstr "" "πρέπει να περιέχει δύο δεκαεξαδικά ψηφία ανά byte, με το κενό διάστημα ASCII " "να αγνοείται." -#: library/stdtypes.rst:2883 +#: library/stdtypes.rst:2939 msgid "" ":meth:`bytes.fromhex` now skips all ASCII whitespace in the string, not just " "spaces." @@ -5698,7 +5839,7 @@ msgstr "" "Το :meth:`bytes.fromhex` παρακάμπτει πλέον όλα τα κενά ASCII στη " "συμβολοσειρά, όχι μόνο τα κενά." -#: library/stdtypes.rst:2887 +#: library/stdtypes.rst:2943 msgid "" ":meth:`bytes.fromhex` now accepts ASCII :class:`bytes` and :term:`bytes-like " "objects ` as input." @@ -5706,7 +5847,7 @@ msgstr "" "Η :meth:`bytes.fromhex` δέχεται πλέον ASCII :class:`bytes` και :term:`bytes-" "like objects ` ως είσοδο." -#: library/stdtypes.rst:2891 +#: library/stdtypes.rst:2947 msgid "" "A reverse conversion function exists to transform a bytes object into its " "hexadecimal representation." @@ -5714,7 +5855,7 @@ msgstr "" "Υπάρχει μια συνάρτηση αντίστροφης μετατροπής για τη μετατροπή ενός " "αντικειμένου bytes στην δεκαεξαδική του αναπαράσταση." -#: library/stdtypes.rst:2985 +#: library/stdtypes.rst:3041 msgid "" "Return a string object containing two hexadecimal digits for each byte in " "the instance." @@ -5722,7 +5863,7 @@ msgstr "" "Επιστρέφετε ένα αντικείμενο συμβολοσειράς που περιέχει δύο δεκαεξαδικά ψηφία " "για κάθε byte στο στιγμιότυπο." -#: library/stdtypes.rst:2902 +#: library/stdtypes.rst:2958 msgid "" "If you want to make the hex string easier to read, you can specify a single " "character separator *sep* parameter to include in the output. By default, " @@ -5737,7 +5878,7 @@ msgstr "" "*bytes_per_sep* ελέγχει τα διαστήματα. Οι θετικές τιμές υπολογίζουν τη θέση " "του διαχωριστή από τα δεξιά, οι αρνητικές τιμές από τα αριστερά." -#: library/stdtypes.rst:2919 +#: library/stdtypes.rst:2975 msgid "" ":meth:`bytes.hex` now supports optional *sep* and *bytes_per_sep* parameters " "to insert separators between bytes in the hex output." @@ -5746,7 +5887,7 @@ msgstr "" "*bytes_per_sep* για την εισαγωγή διαχωριστικών μεταξύ των byte στην έξοδο " "δεκαεξαδικού." -#: library/stdtypes.rst:2923 +#: library/stdtypes.rst:2979 msgid "" "Since bytes objects are sequences of integers (akin to a tuple), for a bytes " "object *b*, ``b[0]`` will be an integer, while ``b[0:1]`` will be a bytes " @@ -5760,7 +5901,7 @@ msgstr "" "η λειτουργία πρόσβασης ως ευρετήριο όσο και η λειτουργία τμηματοποίησης θα " "παράγουν μια συμβολοσειρά μήκους 1)" -#: library/stdtypes.rst:2928 +#: library/stdtypes.rst:2984 msgid "" "The representation of bytes objects uses the literal format (``b'...'``) " "since it is often more useful than e.g. ``bytes([46, 46, 46])``. You can " @@ -5771,11 +5912,11 @@ msgstr "" "46])``. Μπορείτε πάντα να μετατρέψετε ένα αντικείμενο bytes σε μια λίστα " "ακέραιων αριθμών που χρησιμοποιούν ``list(b)``." -#: library/stdtypes.rst:2936 +#: library/stdtypes.rst:2992 msgid "Bytearray Objects" msgstr "Αντικείμενα Bytearray" -#: library/stdtypes.rst:2940 +#: library/stdtypes.rst:2996 msgid "" ":class:`bytearray` objects are a mutable counterpart to :class:`bytes` " "objects." @@ -5783,7 +5924,7 @@ msgstr "" "Τα αντικείμενα :class:`bytearray` είναι ένα μεταβλητό, αντίστοιχο, των " "αντικειμένων :class:`bytes`." -#: library/stdtypes.rst:2945 +#: library/stdtypes.rst:3001 msgid "" "There is no dedicated literal syntax for bytearray objects, instead they are " "always created by calling the constructor:" @@ -5791,26 +5932,26 @@ msgstr "" "Δεν υπάρχει αποκλειστική literal σύνταξη για αντικείμενα bytearray, αντίθετα " "δημιουργούνται πάντα καλώντας τον constructor:" -#: library/stdtypes.rst:2948 +#: library/stdtypes.rst:3004 msgid "Creating an empty instance: ``bytearray()``" msgstr "Δημιουργία ενός κενού στιγμιοτύπου: ``bytearray()``" -#: library/stdtypes.rst:2949 +#: library/stdtypes.rst:3005 msgid "Creating a zero-filled instance with a given length: ``bytearray(10)``" msgstr "Δημιουργία μηδενικού στιγμιοτύπου με δεδομένο μήκος: ``bytearray(10)``" -#: library/stdtypes.rst:2950 +#: library/stdtypes.rst:3006 msgid "From an iterable of integers: ``bytearray(range(20))``" msgstr "Από έναν iterable αριθμό ακεραίων: ``bytearray(range(20))``" -#: library/stdtypes.rst:2951 +#: library/stdtypes.rst:3007 msgid "" "Copying existing binary data via the buffer protocol: ``bytearray(b'Hi!')``" msgstr "" "Αντιγραφή υπαρχόντων δυαδικών δεδομένων μέσω του πρωτοκόλλου buffer: " "``bytearray(b'Hi!')``" -#: library/stdtypes.rst:2953 +#: library/stdtypes.rst:3009 msgid "" "As bytearray objects are mutable, they support the :ref:`mutable ` sequence operations in addition to the common bytes and bytearray " @@ -5821,11 +5962,11 @@ msgstr "" "κοινών λειτουργιών bytes και bytearray που περιγράφονται στο :ref:`bytes-" "methods`." -#: library/stdtypes.rst:2957 +#: library/stdtypes.rst:3013 msgid "Also see the :ref:`bytearray ` built-in." msgstr "Δείτε επίσης το ενσωματωμένο :ref:`bytearray `." -#: library/stdtypes.rst:2959 +#: library/stdtypes.rst:3015 msgid "" "Since 2 hexadecimal digits correspond precisely to a single byte, " "hexadecimal numbers are a commonly used format for describing binary data. " @@ -5837,7 +5978,7 @@ msgstr "" "δυαδικών δεδομένων. Συνεπώς, ο τύπος bytearray έχει μια πρόσθετη μέθοδο " "κλάσης για την ανάγνωση δεδομένων σε αυτήν την μορφή:" -#: library/stdtypes.rst:2965 +#: library/stdtypes.rst:3021 msgid "" "This :class:`bytearray` class method returns bytearray object, decoding the " "given string object. The string must contain two hexadecimal digits per " @@ -5848,7 +5989,7 @@ msgstr "" "πρέπει να περιέχει δύο δεκαεξαδικά ψηφία ανά byte, με το κενό διάστημα ASCII " "να αγνοείται." -#: library/stdtypes.rst:2972 +#: library/stdtypes.rst:3028 msgid "" ":meth:`bytearray.fromhex` now skips all ASCII whitespace in the string, not " "just spaces." @@ -5856,7 +5997,7 @@ msgstr "" "Το :meth:`bytearray.fromhex` παρακάμπτει τώρα όλα τα κενά ASCII στη " "συμβολοσειρά, όχι μόνο τα κενά." -#: library/stdtypes.rst:2976 +#: library/stdtypes.rst:3032 msgid "" ":meth:`bytearray.fromhex` now accepts ASCII :class:`bytes` and :term:`bytes-" "like objects ` as input." @@ -5864,7 +6005,7 @@ msgstr "" "Η :meth:`bytearray.fromhex` δέχεται πλέον το ASCII :class:`bytes` και :term:" "`bytes-like objects ` ως είσοδο." -#: library/stdtypes.rst:2980 +#: library/stdtypes.rst:3036 msgid "" "A reverse conversion function exists to transform a bytearray object into " "its hexadecimal representation." @@ -5872,7 +6013,7 @@ msgstr "" "Υπάρχει μια συνάρτηση αντίστροφης μετατροπής για να μετατρέψει ένα " "αντικείμενο bytearray στη δεκαεξαδική αναπαράσταση του." -#: library/stdtypes.rst:2993 +#: library/stdtypes.rst:3049 msgid "" "Similar to :meth:`bytes.hex`, :meth:`bytearray.hex` now supports optional " "*sep* and *bytes_per_sep* parameters to insert separators between bytes in " @@ -5882,7 +6023,7 @@ msgstr "" "προαιρετικές παραμέτρους *sep* και *bytes_per_sep* για την εισαγωγή " "διαχωριστικών μεταξύ των byte στην δεκαεξαδική έξοδο." -#: library/stdtypes.rst:3000 +#: library/stdtypes.rst:3056 msgid "" "Resize the :class:`bytearray` to contain *size* bytes. *size* must be " "greater than or equal to 0." @@ -5890,14 +6031,14 @@ msgstr "" "Αλλάζει το μέγεθος του :class:`bytearray` ώστε αν περιέχει *size* bytes. Το " "*size* πρέπει να είναι μεγαλύτερο ή ίσο με το 0." -#: library/stdtypes.rst:3003 +#: library/stdtypes.rst:3059 msgid "" "If the :class:`bytearray` needs to shrink, bytes beyond *size* are truncated." msgstr "" "Εάν η :class:`bytearray` χρειάζεται να συρρικνωθεί, τα bytes πέραν του " "*size* περικόπτονται." -#: library/stdtypes.rst:3005 +#: library/stdtypes.rst:3061 msgid "" "If the :class:`bytearray` needs to grow, all new bytes, those beyond *size*, " "will be set to null bytes." @@ -5905,15 +6046,15 @@ msgstr "" "Εάν η :class:`bytearray` χρειάζεται να αυξηθεί, όλα τα νέα bytes, αυτά που " "είναι πέρα από το *size*, θα οριστούν σε null bytes." -#: library/stdtypes.rst:3009 +#: library/stdtypes.rst:3065 msgid "This is equivalent to:" msgstr "Ισοδύναμο με:" -#: library/stdtypes.rst:3017 +#: library/stdtypes.rst:3073 msgid "Examples:" msgstr "Παραδείγματα:" -#: library/stdtypes.rst:3030 +#: library/stdtypes.rst:3086 msgid "" "Since bytearray objects are sequences of integers (akin to a list), for a " "bytearray object *b*, ``b[0]`` will be an integer, while ``b[0:1]`` will be " @@ -5927,7 +6068,7 @@ msgstr "" "κειμένου, όπου τόσο το indexing και το slicing θα παράγουν μια συμβολοσειρά " "μήκους 1)" -#: library/stdtypes.rst:3035 +#: library/stdtypes.rst:3091 msgid "" "The representation of bytearray objects uses the bytes literal format " "(``bytearray(b'...')``) since it is often more useful than e.g. " @@ -5939,11 +6080,11 @@ msgstr "" "``bytearray([46, 46, 46])``. Μπορείτε πάντα να μετατρέψετε ένα αντικείμενο " "bytearray σε λίστα ακεραίων χρησιμοποιώντας το ``list(b)``." -#: library/stdtypes.rst:3044 +#: library/stdtypes.rst:3100 msgid "Bytes and Bytearray Operations" msgstr "Λειτουργίες Bytes και Bytearray" -#: library/stdtypes.rst:3049 +#: library/stdtypes.rst:3105 msgid "" "Both bytes and bytearray objects support the :ref:`common ` " "sequence operations. They interoperate not just with operands of the same " @@ -5958,7 +6099,7 @@ msgstr "" "ελεύθερα σε λειτουργίες χωρίς να προκαλούνται σφάλματα. Ωστόσο, ο τύπος " "επιστροφής του αποτελέσματος μπορεί να εξαρτάται από τη σειρά των τελεστών." -#: library/stdtypes.rst:3057 +#: library/stdtypes.rst:3113 msgid "" "The methods on bytes and bytearray objects don't accept strings as their " "arguments, just as the methods on strings don't accept bytes as their " @@ -5968,7 +6109,7 @@ msgstr "" "ως ορίσματά τους, όπως και οι μέθοδοι σε συμβολοσειρές δεν δέχονται bytes ως " "ορίσματα. Για παράδειγμα, πρέπει να γράψετε::" -#: library/stdtypes.rst:3061 +#: library/stdtypes.rst:3117 msgid "" "a = \"abc\"\n" "b = a.replace(\"a\", \"f\")" @@ -5976,11 +6117,11 @@ msgstr "" "a = \"abc\"\n" "b = a.replace(\"a\", \"f\")" -#: library/stdtypes.rst:3064 +#: library/stdtypes.rst:3120 msgid "and::" msgstr "και::" -#: library/stdtypes.rst:3066 +#: library/stdtypes.rst:3122 msgid "" "a = b\"abc\"\n" "b = a.replace(b\"a\", b\"f\")" @@ -5988,7 +6129,7 @@ msgstr "" "a = b\"abc\"\n" "b = a.replace(b\"a\", b\"f\")" -#: library/stdtypes.rst:3069 +#: library/stdtypes.rst:3125 msgid "" "Some bytes and bytearray operations assume the use of ASCII compatible " "binary formats, and hence should be avoided when working with arbitrary " @@ -5999,7 +6140,7 @@ msgstr "" "εργάζεστε με αυθαίρετα δυαδικά δεδομένα. Αυτοί οι περιορισμοί καλύπτονται " "παρακάτω." -#: library/stdtypes.rst:3074 +#: library/stdtypes.rst:3130 msgid "" "Using these ASCII based operations to manipulate binary data that is not " "stored in an ASCII based format may lead to data corruption." @@ -6008,7 +6149,7 @@ msgstr "" "δεδομένων που δεν είναι αποθηκευμένα σε μορφή που βασίζεται σε ASCII μπορεί " "να οδηγήσει σε καταστροφή δεδομένων." -#: library/stdtypes.rst:3077 +#: library/stdtypes.rst:3133 msgid "" "The following methods on bytes and bytearray objects can be used with " "arbitrary binary data." @@ -6016,7 +6157,7 @@ msgstr "" "Οι ακόλουθες μέθοδοι σε byte και αντικείμενα bytearray μπορούν να " "χρησιμοποιηθούν με αυθαίρετα δυαδικά δεδομένα." -#: library/stdtypes.rst:3083 +#: library/stdtypes.rst:3139 msgid "" "Return the number of non-overlapping occurrences of subsequence *sub* in the " "range [*start*, *end*]. Optional arguments *start* and *end* are " @@ -6026,8 +6167,8 @@ msgstr "" "ακολουθίας *sub* στο εύρος [*start*, *end*]. Τα προαιρετικά ορίσματα *start* " "και *end* ερμηνεύονται όπως στη σημειογραφία τμηματοποίησης." -#: library/stdtypes.rst:3192 library/stdtypes.rst:3280 -#: library/stdtypes.rst:3293 +#: library/stdtypes.rst:3248 library/stdtypes.rst:3336 +#: library/stdtypes.rst:3349 msgid "" "The subsequence to search for may be any :term:`bytes-like object` or an " "integer in the range 0 to 255." @@ -6035,7 +6176,7 @@ msgstr "" "Η υποακολουθία για αναζήτηση μπορεί να είναι οποιοδήποτε :term:`bytes-like " "object` ή ένας ακέραιος αριθμός στην περιοχή από 0 έως 255." -#: library/stdtypes.rst:3090 +#: library/stdtypes.rst:3146 msgid "" "If *sub* is empty, returns the number of empty slices between characters " "which is the length of the bytes object plus one." @@ -6043,13 +6184,13 @@ msgstr "" "Εάν το *sub* είναι κενό, επιστρέφει τον αριθμό των κενών τμημάτων μεταξύ των " "χαρακτήρων που είναι το μήκος του αντικειμένου bytes συν ένα." -#: library/stdtypes.rst:3204 library/stdtypes.rst:3283 -#: library/stdtypes.rst:3296 +#: library/stdtypes.rst:3260 library/stdtypes.rst:3339 +#: library/stdtypes.rst:3352 msgid "Also accept an integer in the range 0 to 255 as the subsequence." msgstr "" "Επίσης αποδέχεται έναν ακέραιο αριθμό στο εύρος 0 έως 255 ως υποακολουθία." -#: library/stdtypes.rst:3100 +#: library/stdtypes.rst:3156 msgid "" "If the binary data starts with the *prefix* string, return " "``bytes[len(prefix):]``. Otherwise, return a copy of the original binary " @@ -6059,7 +6200,7 @@ msgstr "" "``bytes[len(prefix):]``. Διαφορετικά επιστρέψτε ένα αντίγραφο των αρχικών " "δυαδικών δεδομένων::" -#: library/stdtypes.rst:3104 +#: library/stdtypes.rst:3160 msgid "" ">>> b'TestHook'.removeprefix(b'Test')\n" "b'Hook'\n" @@ -6071,15 +6212,15 @@ msgstr "" ">>> b'BaseTestCase'.removeprefix(b'Test')\n" "b'BaseTestCase'" -#: library/stdtypes.rst:3109 +#: library/stdtypes.rst:3165 msgid "The *prefix* may be any :term:`bytes-like object`." msgstr "Το *prefix* μπορεί να είναι οποιοδήποτε :term:`bytes-like object`." -#: library/stdtypes.rst:3135 library/stdtypes.rst:3361 -#: library/stdtypes.rst:3406 library/stdtypes.rst:3462 -#: library/stdtypes.rst:3551 library/stdtypes.rst:3718 -#: library/stdtypes.rst:3816 library/stdtypes.rst:3859 -#: library/stdtypes.rst:4061 +#: library/stdtypes.rst:3191 library/stdtypes.rst:3417 +#: library/stdtypes.rst:3462 library/stdtypes.rst:3518 +#: library/stdtypes.rst:3607 library/stdtypes.rst:3774 +#: library/stdtypes.rst:3872 library/stdtypes.rst:3915 +#: library/stdtypes.rst:4117 msgid "" "The bytearray version of this method does *not* operate in place - it always " "produces a new object, even if no changes were made." @@ -6087,7 +6228,7 @@ msgstr "" "Η έκδοση bytearray αυτής της μεθόδου *δεν* λειτουργεί στη θέση της - παράγει " "πάντα ένα νέο αντικείμενο, ακόμα και αν δεν έγιναν αλλαγές." -#: library/stdtypes.rst:3122 +#: library/stdtypes.rst:3178 msgid "" "If the binary data ends with the *suffix* string and that *suffix* is not " "empty, return ``bytes[:-len(suffix)]``. Otherwise, return a copy of the " @@ -6097,7 +6238,7 @@ msgstr "" "*suffix* δεν είναι κενό, επιστρέφει ``bytes[:-len(suffix)]``. Διαφορετικά, " "επιστρέφει ένα αντίγραφο των αρχικών δυαδικών δεδομένων::" -#: library/stdtypes.rst:3126 +#: library/stdtypes.rst:3182 msgid "" ">>> b'MiscTests'.removesuffix(b'Tests')\n" "b'Misc'\n" @@ -6109,15 +6250,15 @@ msgstr "" ">>> b'TmpDirMixin'.removesuffix(b'Tests')\n" "b'TmpDirMixin'" -#: library/stdtypes.rst:3131 +#: library/stdtypes.rst:3187 msgid "The *suffix* may be any :term:`bytes-like object`." msgstr "Το *suffix* μπορεί να είναι οποιοδήποτε :term:`bytes-like object`." -#: library/stdtypes.rst:3144 +#: library/stdtypes.rst:3200 msgid "Return the bytes decoded to a :class:`str`." msgstr "Επιστρέφει τα bytes που έχουν αποκωδικοποιηθεί σε μια :class:`str`." -#: library/stdtypes.rst:3149 +#: library/stdtypes.rst:3205 msgid "" "*errors* controls how decoding errors are handled. If ``'strict'`` (the " "default), a :exc:`UnicodeError` exception is raised. Other possible values " @@ -6130,7 +6271,7 @@ msgstr "" "άλλο όνομα που έχει καταχωρηθεί από την :func:`codecs.register_error`. " "Βλέπε :ref:`error-handlers` για λεπτομέρειες." -#: library/stdtypes.rst:3155 +#: library/stdtypes.rst:3211 msgid "" "For performance reasons, the value of *errors* is not checked for validity " "unless a decoding error actually occurs, :ref:`devmode` is enabled or a :ref:" @@ -6141,7 +6282,7 @@ msgstr "" "ενεργοποιημένο το :ref:`devmode` ή χρησιμοποιείται ένα :ref:`debug build " "`." -#: library/stdtypes.rst:3161 +#: library/stdtypes.rst:3217 msgid "" "Passing the *encoding* argument to :class:`str` allows decoding any :term:" "`bytes-like object` directly, without needing to make a temporary :class:`!" @@ -6152,7 +6293,7 @@ msgstr "" "χρειάζεται να δημιουργήσετε ένα προσωρινό αντικείμενο :class:`!bytes` ή :" "class:`!bytearray`." -#: library/stdtypes.rst:3176 +#: library/stdtypes.rst:3232 msgid "" "Return ``True`` if the binary data ends with the specified *suffix*, " "otherwise return ``False``. *suffix* can also be a tuple of suffixes to " @@ -6165,13 +6306,13 @@ msgstr "" "προαιρετικό *start*, η δοκιμή ξεκινά από αυτή τη θέση. Με το προαιρετικό " "*end*, σταματήστε να συγκρίνετε σε αυτή τη θέση." -#: library/stdtypes.rst:3181 +#: library/stdtypes.rst:3237 msgid "The suffix(es) to search for may be any :term:`bytes-like object`." msgstr "" "Το(α) επίθεμα(τα) για αναζήτηση μπορεί να είναι οποιοδήποτε :term:`bytes-" "like object`." -#: library/stdtypes.rst:3187 +#: library/stdtypes.rst:3243 msgid "" "Return the lowest index in the data where the subsequence *sub* is found, " "such that *sub* is contained in the slice ``s[start:end]``. Optional " @@ -6183,7 +6324,7 @@ msgstr "" "προαιρετικά ορίσματα *start* και *end* ερμηνεύονται ως συμβολισμό " "τμηματοποίησης. Επιστρέφει ``-1`` εάν το *sub* δεν βρεθεί." -#: library/stdtypes.rst:3197 +#: library/stdtypes.rst:3253 msgid "" "The :meth:`~bytes.find` method should be used only if you need to know the " "position of *sub*. To check if *sub* is a substring or not, use the :" @@ -6193,7 +6334,7 @@ msgstr "" "χρειάζεται να γνωρίζετε τη θέση του *sub*. Για να ελέγξετε εάν το *sub* " "είναι υποσυμβολοσειρά ή όχι, χρησιμοποιήστε τον τελεστή :keyword:`in`::" -#: library/stdtypes.rst:3201 +#: library/stdtypes.rst:3257 msgid "" ">>> b'Py' in b'Python'\n" "True" @@ -6201,7 +6342,7 @@ msgstr "" ">>> b'Py' in b'Python'\n" "True" -#: library/stdtypes.rst:3211 +#: library/stdtypes.rst:3267 msgid "" "Like :meth:`~bytes.find`, but raise :exc:`ValueError` when the subsequence " "is not found." @@ -6209,7 +6350,7 @@ msgstr "" "Όπως η :meth:`~bytes.find`, αλλά κάνει raise μια :exc:`ValueError` όταν δεν " "βρεθεί η δευτερεύουσα ακολουθία." -#: library/stdtypes.rst:3224 +#: library/stdtypes.rst:3280 msgid "" "Return a bytes or bytearray object which is the concatenation of the binary " "data sequences in *iterable*. A :exc:`TypeError` will be raised if there " @@ -6225,7 +6366,7 @@ msgstr "" "`str`. Το διαχωριστικό μεταξύ των στοιχειών είναι τα περιεχόμενα των byte ή " "του αντικειμένου bytearray που παρέχει αυτή τη μέθοδο." -#: library/stdtypes.rst:3235 +#: library/stdtypes.rst:3291 msgid "" "This static method returns a translation table usable for :meth:`bytes." "translate` that will map each character in *from* into the character at the " @@ -6238,7 +6379,7 @@ msgstr "" "*to* πρέπει να είναι και τα δύο :term:`bytes-like objects ` και να έχουν το ίδιο μήκος." -#: library/stdtypes.rst:3246 +#: library/stdtypes.rst:3302 msgid "" "Split the sequence at the first occurrence of *sep*, and return a 3-tuple " "containing the part before the separator, the separator itself or its " @@ -6252,13 +6393,13 @@ msgstr "" "διαχωριστικό, επιστρέφει μια 3-πλειάδα που περιέχει ένα αντίγραφο της " "αρχικής ακολουθίας, ακολουθούμενη από δύο κενά byte ή αντικείμενα bytearray." -#: library/stdtypes.rst:3310 +#: library/stdtypes.rst:3366 msgid "The separator to search for may be any :term:`bytes-like object`." msgstr "" "Το διαχωριστικό για αναζήτηση μπορεί να είναι οποιοδήποτε :term:`bytes-like " "object`." -#: library/stdtypes.rst:3259 +#: library/stdtypes.rst:3315 msgid "" "Return a copy of the sequence with all occurrences of subsequence *old* " "replaced by *new*. If the optional argument *count* is given, only the " @@ -6269,7 +6410,7 @@ msgstr "" "προαιρετικό όρισμα *count*, αντικαθίστανται μόνο οι πρώτες εμφανίσεις " "*count*." -#: library/stdtypes.rst:3263 +#: library/stdtypes.rst:3319 msgid "" "The subsequence to search for and its replacement may be any :term:`bytes-" "like object`." @@ -6277,7 +6418,7 @@ msgstr "" "Η ακολουθία για αναζήτηση και αντικατάσταση της μπορεί να είναι οποιοδήποτε :" "term:`bytes-like object`." -#: library/stdtypes.rst:3275 +#: library/stdtypes.rst:3331 msgid "" "Return the highest index in the sequence where the subsequence *sub* is " "found, such that *sub* is contained within ``s[start:end]``. Optional " @@ -6289,7 +6430,7 @@ msgstr "" "προαιρετικά ορίσματα *start* και *end* ερμηνεύονται με συμβολισμό " "τμηματοποίησης. Επιστρέφει ``-1`` σε περίπτωση αποτυχίας." -#: library/stdtypes.rst:3290 +#: library/stdtypes.rst:3346 msgid "" "Like :meth:`~bytes.rfind` but raises :exc:`ValueError` when the subsequence " "*sub* is not found." @@ -6297,7 +6438,7 @@ msgstr "" "Όπως η :meth:`~bytes.rfind` αλλά κάνει raise μια :exc:`ValueError` όταν δεν " "βρεθεί η υποακολουθία *sub*." -#: library/stdtypes.rst:3303 +#: library/stdtypes.rst:3359 msgid "" "Split the sequence at the last occurrence of *sep*, and return a 3-tuple " "containing the part before the separator, the separator itself or its " @@ -6312,7 +6453,7 @@ msgstr "" "κενά byte ή αντικείμενα bytearray, ακολουθούμενα από ένα αντίγραφο της " "αρχικής ακολουθίας." -#: library/stdtypes.rst:3316 +#: library/stdtypes.rst:3372 msgid "" "Return ``True`` if the binary data starts with the specified *prefix*, " "otherwise return ``False``. *prefix* can also be a tuple of prefixes to " @@ -6325,13 +6466,13 @@ msgstr "" "η δοκιμή ξεκινά από αυτή τη θέση. Με το προαιρετικό *end*, σταματάει να " "συγκρίνει σε αυτή τη θέση." -#: library/stdtypes.rst:3321 +#: library/stdtypes.rst:3377 msgid "The prefix(es) to search for may be any :term:`bytes-like object`." msgstr "" "Το(α) πρόθεμα(τα) για αναζήτηση μπορεί να είναι οποιοδήποτε :term:`bytes-" "like object`." -#: library/stdtypes.rst:3327 +#: library/stdtypes.rst:3383 msgid "" "Return a copy of the bytes or bytearray object where all bytes occurring in " "the optional argument *delete* are removed, and the remaining bytes have " @@ -6343,14 +6484,14 @@ msgstr "" "τα υπόλοιπα byte έχουν αντιστοιχιστεί μέσω του δεδομένου πίνακα μετάφρασης, " "ο οποίος πρέπει να είναι ένα αντικείμενο bytes μήκους 256." -#: library/stdtypes.rst:3332 +#: library/stdtypes.rst:3388 msgid "" "You can use the :func:`bytes.maketrans` method to create a translation table." msgstr "" "Μπορείτε να χρησιμοποιήσετε τη μέθοδο :func:`bytes.maketrans` για να " "δημιουργήσετε έναν πίνακα μετάφρασης." -#: library/stdtypes.rst:3335 +#: library/stdtypes.rst:3391 msgid "" "Set the *table* argument to ``None`` for translations that only delete " "characters::" @@ -6358,7 +6499,7 @@ msgstr "" "Ορίζει το όρισμα *table* σε ``None`` για μεταφράσεις που διαγράφουν μόνο " "χαρακτήρες::" -#: library/stdtypes.rst:3338 +#: library/stdtypes.rst:3394 msgid "" ">>> b'read this short text'.translate(None, b'aeiou')\n" "b'rd ths shrt txt'" @@ -6366,11 +6507,11 @@ msgstr "" ">>> b'read this short text'.translate(None, b'aeiou')\n" "b'rd ths shrt txt'" -#: library/stdtypes.rst:3341 +#: library/stdtypes.rst:3397 msgid "*delete* is now supported as a keyword argument." msgstr "Το *delete* υποστηρίζεται πλέον ως όρισμα λέξης-κλειδιού." -#: library/stdtypes.rst:3345 +#: library/stdtypes.rst:3401 msgid "" "The following methods on bytes and bytearray objects have default behaviours " "that assume the use of ASCII compatible binary formats, but can still be " @@ -6384,7 +6525,7 @@ msgstr "" "κατάλληλα ορίσματα. Σημειώστε ότι όλες οι μέθοδοι bytearray σε αυτήν την " "ενότητα *δεν* λειτουργούν στη θέση τους και όμως παράγουν νέα αντικείμενα." -#: library/stdtypes.rst:3354 +#: library/stdtypes.rst:3410 msgid "" "Return a copy of the object centered in a sequence of length *width*. " "Padding is done using the specified *fillbyte* (default is an ASCII space). " @@ -6397,7 +6538,7 @@ msgstr "" "`bytes, η αρχική ακολουθία επιστρέφεται εάν το *width* είναι μικρότερο ή ίσο " "με ``len(s)``." -#: library/stdtypes.rst:3368 +#: library/stdtypes.rst:3424 msgid "" "Return a copy of the object left justified in a sequence of length *width*. " "Padding is done using the specified *fillbyte* (default is an ASCII space). " @@ -6410,7 +6551,7 @@ msgstr "" "αντικείμενα :class:`bytes, η αρχική ακολουθία επιστρέφεται εάν το *width* " "είναι μικρότερο ή ίσο με ``len(s)``." -#: library/stdtypes.rst:3382 +#: library/stdtypes.rst:3438 msgid "" "Return a copy of the sequence with specified leading bytes removed. The " "*chars* argument is a binary sequence specifying the set of byte values to " @@ -6427,7 +6568,7 @@ msgstr "" "αφαίρεση του κενού διαστήματος ASCII. Το όρισμα *chars* δεν είναι " "πρόθεμα, αλλά οι συνδυασμοί των τιμών του αφαιρούνται:" -#: library/stdtypes.rst:3389 +#: library/stdtypes.rst:3445 msgid "" ">>> b' spacious '.lstrip()\n" "b'spacious '\n" @@ -6439,7 +6580,7 @@ msgstr "" ">>> b'www.example.com'.lstrip(b'cmowz.')\n" "b'example.com'" -#: library/stdtypes.rst:3394 +#: library/stdtypes.rst:3450 msgid "" "The binary sequence of byte values to remove may be any :term:`bytes-like " "object`. See :meth:`~bytes.removeprefix` for a method that will remove a " @@ -6450,7 +6591,7 @@ msgstr "" "που θα αφαιρέσει μια μεμονωμένη συμβολοσειρά προθέματος αντί όλο το σύνολο " "χαρακτήρων. Για παράδειγμα::" -#: library/stdtypes.rst:3399 +#: library/stdtypes.rst:3455 msgid "" ">>> b'Arthur: three!'.lstrip(b'Arthur: ')\n" "b'ee!'\n" @@ -6462,7 +6603,7 @@ msgstr "" ">>> b'Arthur: three!'.removeprefix(b'Arthur: ')\n" "b'three!'" -#: library/stdtypes.rst:3413 +#: library/stdtypes.rst:3469 msgid "" "Return a copy of the object right justified in a sequence of length *width*. " "Padding is done using the specified *fillbyte* (default is an ASCII space). " @@ -6475,7 +6616,7 @@ msgstr "" "είναι ένα διάστημα ASCII). Για αντικείμενα :class:`bytes`, η αρχική " "ακολουθία επιστρέφεται εάν το *width* είναι μικρότερο ή ίσο με ``len(s)``." -#: library/stdtypes.rst:3427 +#: library/stdtypes.rst:3483 msgid "" "Split the binary sequence into subsequences of the same type, using *sep* as " "the delimiter string. If *maxsplit* is given, at most *maxsplit* splits are " @@ -6492,7 +6633,7 @@ msgstr "" "διαχωρισμό από τα δεξιά, η :meth:`rsplit` συμπεριφέρεται όπως :meth:`split` " "που περιγράφεται λεπτομερώς παρακάτω." -#: library/stdtypes.rst:3438 +#: library/stdtypes.rst:3494 msgid "" "Return a copy of the sequence with specified trailing bytes removed. The " "*chars* argument is a binary sequence specifying the set of byte values to " @@ -6509,7 +6650,7 @@ msgstr "" "ως προεπιλογή την αφαίρεση του κενού διαστήματος ASCII. Το όρισμα *chars* " "δεν είναι επίθημα, αλλά αφαιρούνται όλοι οι συνδυασμοί των τιμών του::" -#: library/stdtypes.rst:3445 +#: library/stdtypes.rst:3501 msgid "" ">>> b' spacious '.rstrip()\n" "b' spacious'\n" @@ -6521,7 +6662,7 @@ msgstr "" ">>> b'mississippi'.rstrip(b'ipz')\n" "b'mississ'" -#: library/stdtypes.rst:3450 +#: library/stdtypes.rst:3506 msgid "" "The binary sequence of byte values to remove may be any :term:`bytes-like " "object`. See :meth:`~bytes.removesuffix` for a method that will remove a " @@ -6532,7 +6673,7 @@ msgstr "" "μέθοδο που θα αφαιρέσει μια συμβολοσειρά επιθέματος και όχι όλο το σύνολο " "χαρακτήρων. Για παράδειγμα:" -#: library/stdtypes.rst:3455 +#: library/stdtypes.rst:3511 msgid "" ">>> b'Monty Python'.rstrip(b' Python')\n" "b'M'\n" @@ -6544,7 +6685,7 @@ msgstr "" ">>> b'Monty Python'.removesuffix(b' Python')\n" "b'Monty'" -#: library/stdtypes.rst:3469 +#: library/stdtypes.rst:3525 msgid "" "Split the binary sequence into subsequences of the same type, using *sep* as " "the delimiter string. If *maxsplit* is given and non-negative, at most " @@ -6559,7 +6700,7 @@ msgstr "" "ή είναι ``-1``, τότε δεν υπάρχει όριο στον αριθμό των διαχωρισμών (όλες οι " "πιθανές διασπάσεις γίνονται)." -#: library/stdtypes.rst:3475 +#: library/stdtypes.rst:3531 msgid "" "If *sep* is given, consecutive delimiters are not grouped together and are " "deemed to delimit empty subsequences (for example, ``b'1,,2'.split(b',')`` " @@ -6577,7 +6718,7 @@ msgstr "" "το ``[bytearray(b'')]`` ανάλογα με τον τύπο του αντικειμένου που χωρίζεται. " "Το όρισμα *sep* μπορεί να είναι οποιοδήποτε :term:`bytes-like object`." -#: library/stdtypes.rst:3485 +#: library/stdtypes.rst:3541 msgid "" ">>> b'1,2,3'.split(b',')\n" "[b'1', b'2', b'3']\n" @@ -6597,7 +6738,7 @@ msgstr "" ">>> b'1<>2<>3<4'.split(b'<>')\n" "[b'1', b'2', b'3<4']" -#: library/stdtypes.rst:3494 +#: library/stdtypes.rst:3550 msgid "" "If *sep* is not specified or is ``None``, a different splitting algorithm is " "applied: runs of consecutive ASCII whitespace are regarded as a single " @@ -6614,7 +6755,7 @@ msgstr "" "ακολουθίας ή μιας ακολουθίας που αποτελείται αποκλειστικά από κενό διάστημα " "ASCII χωρίς καθορισμένο διαχωριστικό επιστρέφει το ``[]``." -#: library/stdtypes.rst:3504 +#: library/stdtypes.rst:3560 msgid "" ">>> b'1 2 3'.split()\n" "[b'1', b'2', b'3']\n" @@ -6630,7 +6771,7 @@ msgstr "" ">>> b' 1 2 3 '.split()\n" "[b'1', b'2', b'3']" -#: library/stdtypes.rst:3515 +#: library/stdtypes.rst:3571 msgid "" "Return a copy of the sequence with specified leading and trailing bytes " "removed. The *chars* argument is a binary sequence specifying the set of " @@ -6647,7 +6788,7 @@ msgstr "" "από προεπιλογή αφαιρεί το ASCII λευκό διάστημα. To όρισμα *chars* δεν είναι " "πρόθεμα ή επίθημα, αλλά αφαιρούνται όλοι οι συνδυασμοί των τιμών του:" -#: library/stdtypes.rst:3523 +#: library/stdtypes.rst:3579 msgid "" ">>> b' spacious '.strip()\n" "b'spacious'\n" @@ -6659,7 +6800,7 @@ msgstr "" ">>> b'www.example.com'.strip(b'cmowz.')\n" "b'example'" -#: library/stdtypes.rst:3528 +#: library/stdtypes.rst:3584 msgid "" "The binary sequence of byte values to remove may be any :term:`bytes-like " "object`." @@ -6667,7 +6808,7 @@ msgstr "" "Η δυαδική ακολουθία τιμών byte προς αφαίρεση μπορεί να είναι οποιοδήποτε :" "term:`bytes-like object`." -#: library/stdtypes.rst:3537 +#: library/stdtypes.rst:3593 msgid "" "The following methods on bytes and bytearray objects assume the use of ASCII " "compatible binary formats and should not be applied to arbitrary binary " @@ -6680,7 +6821,7 @@ msgstr "" "την ενότητα *δεν* λειτουργούν στη θέση τους και αντ' αυτού παράγουν νέα " "αντικείμενα." -#: library/stdtypes.rst:3545 +#: library/stdtypes.rst:3601 msgid "" "Return a copy of the sequence with each byte interpreted as an ASCII " "character, and the first byte capitalized and the rest lowercased. Non-ASCII " @@ -6690,7 +6831,7 @@ msgstr "" "χαρακτήρας ASCII, και το πρώτο byte γραμμένο με κεφαλαία και το υπόλοιπο με " "πεζά. Οι τιμές των byte που δεν είναι ASCII μεταβιβάζονται αμετάβλητες." -#: library/stdtypes.rst:3558 +#: library/stdtypes.rst:3614 msgid "" "Return a copy of the sequence where all ASCII tab characters are replaced by " "one or more ASCII spaces, depending on the current column and the given tab " @@ -6719,7 +6860,7 @@ msgstr "" "αντιγράφεται αμετάβλητη και η τρέχουσα στήλη προσαυξάνεται κατά ένα, " "ανεξάρτητα από το πώς αναπαρίσταται η τιμή byte όταν εκτυπώνεται::" -#: library/stdtypes.rst:3572 +#: library/stdtypes.rst:3628 msgid "" ">>> b'01\\t012\\t0123\\t01234'.expandtabs()\n" "b'01 012 0123 01234'\n" @@ -6731,7 +6872,7 @@ msgstr "" ">>> b'01\\t012\\t0123\\t01234'.expandtabs(4)\n" "b'01 012 0123 01234'" -#: library/stdtypes.rst:3586 +#: library/stdtypes.rst:3642 msgid "" "Return ``True`` if all bytes in the sequence are alphabetical ASCII " "characters or ASCII decimal digits and the sequence is not empty, ``False`` " @@ -6746,7 +6887,7 @@ msgstr "" "``b'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'``. Τα δεκαδικά " "ψηφία ASCII είναι αυτές οι τιμές byte στην ακολουθία ``b'0123456789'``." -#: library/stdtypes.rst:3594 +#: library/stdtypes.rst:3650 msgid "" ">>> b'ABCabc1'.isalnum()\n" "True\n" @@ -6758,7 +6899,7 @@ msgstr "" ">>> b'ABC abc1'.isalnum()\n" "False" -#: library/stdtypes.rst:3603 +#: library/stdtypes.rst:3659 msgid "" "Return ``True`` if all bytes in the sequence are alphabetic ASCII characters " "and the sequence is not empty, ``False`` otherwise. Alphabetic ASCII " @@ -6770,7 +6911,7 @@ msgstr "" "αλφαβητικοί χαρακτήρες ASCII είναι εκείνες οι τιμές bytes στην ακολουθία " "``b'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'``." -#: library/stdtypes.rst:3610 +#: library/stdtypes.rst:3666 msgid "" ">>> b'ABCabc'.isalpha()\n" "True\n" @@ -6782,7 +6923,7 @@ msgstr "" ">>> b'ABCabc1'.isalpha()\n" "False" -#: library/stdtypes.rst:3619 +#: library/stdtypes.rst:3675 msgid "" "Return ``True`` if the sequence is empty or all bytes in the sequence are " "ASCII, ``False`` otherwise. ASCII bytes are in the range 0-0x7F." @@ -6791,7 +6932,7 @@ msgstr "" "είναι ASCII, ``False`` διαφορετικά. Τα bytes ASCII βρίσκονται στο εύρος " "0-0x7F." -#: library/stdtypes.rst:3629 +#: library/stdtypes.rst:3685 msgid "" "Return ``True`` if all bytes in the sequence are ASCII decimal digits and " "the sequence is not empty, ``False`` otherwise. ASCII decimal digits are " @@ -6801,7 +6942,7 @@ msgstr "" "ASCII και η ακολουθία δεν είναι κενή, ``False`` διαφορετικά. Τα δεκαδικά " "ψηφία ASCII είναι αυτές οι τιμές byte στην ακολουθία ``b'0123456789'``." -#: library/stdtypes.rst:3635 +#: library/stdtypes.rst:3691 msgid "" ">>> b'1234'.isdigit()\n" "True\n" @@ -6813,7 +6954,7 @@ msgstr "" ">>> b'1.23'.isdigit()\n" "False" -#: library/stdtypes.rst:3644 +#: library/stdtypes.rst:3700 msgid "" "Return ``True`` if there is at least one lowercase ASCII character in the " "sequence and no uppercase ASCII characters, ``False`` otherwise." @@ -6821,7 +6962,7 @@ msgstr "" "Επιστρέφει ``True`` εάν υπάρχει τουλάχιστον ένας πεζός χαρακτήρας ASCII στην " "ακολουθία και κανένας κεφαλαίος χαρακτήρας ASCII, ``False`` διαφορετικά." -#: library/stdtypes.rst:3649 +#: library/stdtypes.rst:3705 msgid "" ">>> b'hello world'.islower()\n" "True\n" @@ -6833,8 +6974,8 @@ msgstr "" ">>> b'Hello world'.islower()\n" "False" -#: library/stdtypes.rst:3696 library/stdtypes.rst:3762 -#: library/stdtypes.rst:3831 +#: library/stdtypes.rst:3752 library/stdtypes.rst:3818 +#: library/stdtypes.rst:3887 msgid "" "Lowercase ASCII characters are those byte values in the sequence " "``b'abcdefghijklmnopqrstuvwxyz'``. Uppercase ASCII characters are those byte " @@ -6844,7 +6985,7 @@ msgstr "" "``b'abcdefghijklmnopqrstuvwxyz'``. Οι κεφαλαίοι χαρακτήρες ASCII είναι αυτές " "οι τιμές byte στην ακολουθία ``b'ABCDEFGHIJKLMNOPQRSTUVWXYZ'``." -#: library/stdtypes.rst:3662 +#: library/stdtypes.rst:3718 msgid "" "Return ``True`` if all bytes in the sequence are ASCII whitespace and the " "sequence is not empty, ``False`` otherwise. ASCII whitespace characters are " @@ -6857,7 +6998,7 @@ msgstr "" "\\t\\n\\r\\x0b\\f'`` (κενό, tab, νέα γραμμή, επιστροφή μεταφοράς, κάθετο " "tab, μορφή ροής)." -#: library/stdtypes.rst:3671 +#: library/stdtypes.rst:3727 msgid "" "Return ``True`` if the sequence is ASCII titlecase and the sequence is not " "empty, ``False`` otherwise. See :meth:`bytes.title` for more details on the " @@ -6868,7 +7009,7 @@ msgstr "" "``False`` διαφορετικά. Δείτε :meth:`bytes.title` για περισσότερες " "λεπτομέρειες σχετικά με τον ορισμό του \"titlecase\"." -#: library/stdtypes.rst:3677 +#: library/stdtypes.rst:3733 msgid "" ">>> b'Hello World'.istitle()\n" "True\n" @@ -6880,7 +7021,7 @@ msgstr "" ">>> b'Hello world'.istitle()\n" "False" -#: library/stdtypes.rst:3686 +#: library/stdtypes.rst:3742 msgid "" "Return ``True`` if there is at least one uppercase alphabetic ASCII " "character in the sequence and no lowercase ASCII characters, ``False`` " @@ -6890,7 +7031,7 @@ msgstr "" "χαρακτήρας ASCII στην ακολουθία και κανένας πεζός χαρακτήρας ASCII, " "διαφορετικά ``False``." -#: library/stdtypes.rst:3691 +#: library/stdtypes.rst:3747 msgid "" ">>> b'HELLO WORLD'.isupper()\n" "True\n" @@ -6902,7 +7043,7 @@ msgstr "" ">>> b'Hello world'.isupper()\n" "False" -#: library/stdtypes.rst:3704 +#: library/stdtypes.rst:3760 msgid "" "Return a copy of the sequence with all the uppercase ASCII characters " "converted to their corresponding lowercase counterpart." @@ -6910,7 +7051,7 @@ msgstr "" "Επιστρέφει ένα αντίγραφο της ακολουθίας με όλους τους κεφαλαίους χαρακτήρες " "ASCII να έχουν μετατραπεί στα ισοδύναμα πεζά." -#: library/stdtypes.rst:3709 +#: library/stdtypes.rst:3765 msgid "" ">>> b'Hello World'.lower()\n" "b'hello world'" @@ -6918,7 +7059,7 @@ msgstr "" ">>> b'Hello World'.lower()\n" "b'hello world'" -#: library/stdtypes.rst:3729 +#: library/stdtypes.rst:3785 msgid "" "Return a list of the lines in the binary sequence, breaking at ASCII line " "boundaries. This method uses the :term:`universal newlines` approach to " @@ -6931,7 +7072,7 @@ msgstr "" "περιλαμβάνονται στη λίστα που προκύπτει εκτός εάν δοθεί *keepends* και είναι " "αληθής." -#: library/stdtypes.rst:3736 +#: library/stdtypes.rst:3792 msgid "" ">>> b'ab c\\n\\nde fg\\rkl\\r\\n'.splitlines()\n" "[b'ab c', b'', b'de fg', b'kl']\n" @@ -6943,7 +7084,7 @@ msgstr "" ">>> b'ab c\\n\\nde fg\\rkl\\r\\n'.splitlines(keepends=True)\n" "[b'ab c\\n', b'\\n', b'de fg\\r', b'kl\\r\\n']" -#: library/stdtypes.rst:3741 +#: library/stdtypes.rst:3797 msgid "" "Unlike :meth:`~bytes.split` when a delimiter string *sep* is given, this " "method returns an empty list for the empty string, and a terminal line break " @@ -6954,7 +7095,7 @@ msgstr "" "συμβολοσειρά και μια αλλαγή γραμμής τερματικού δεν οδηγεί σε μια επιπλέον " "γραμμή::" -#: library/stdtypes.rst:3745 +#: library/stdtypes.rst:3801 msgid "" ">>> b\"\".split(b'\\n'), b\"Two lines\\n\".split(b'\\n')\n" "([b''], [b'Two lines', b''])\n" @@ -6966,7 +7107,7 @@ msgstr "" ">>> b\"\".splitlines(), b\"One line\\n\".splitlines()\n" "([], [b'One line'])" -#: library/stdtypes.rst:3754 +#: library/stdtypes.rst:3810 msgid "" "Return a copy of the sequence with all the lowercase ASCII characters " "converted to their corresponding uppercase counterpart and vice-versa." @@ -6974,7 +7115,7 @@ msgstr "" "Επιστρέφει ένα αντίγραφο της ακολουθίας με όλους τους πεζούς χαρακτήρες " "ASCII να έχουν μετατραπεί στο αντίστοιχο ισοδύναμο κεφαλαίο και αντίστροφα." -#: library/stdtypes.rst:3759 +#: library/stdtypes.rst:3815 msgid "" ">>> b'Hello World'.swapcase()\n" "b'hELLO wORLD'" @@ -6982,7 +7123,7 @@ msgstr "" ">>> b'Hello World'.swapcase()\n" "b'hELLO wORLD'" -#: library/stdtypes.rst:3766 +#: library/stdtypes.rst:3822 msgid "" "Unlike :func:`str.swapcase`, it is always the case that ``bin.swapcase()." "swapcase() == bin`` for the binary versions. Case conversions are " @@ -6994,7 +7135,7 @@ msgstr "" "συμμετρικές στο ASCII, παρόλο που αυτό δεν ισχύει γενικά για αυθαίρετα " "σημεία Unicode κώδικα." -#: library/stdtypes.rst:3780 +#: library/stdtypes.rst:3836 msgid "" "Return a titlecased version of the binary sequence where words start with an " "uppercase ASCII character and the remaining characters are lowercase. " @@ -7005,7 +7146,7 @@ msgstr "" "χαρακτήρα ASCII και οι υπόλοιποι χαρακτήρες είναι πεζοί. Οι τιμές byte χωρίς " "κεφαλαία γράμματα παραμένουν χωρίς τροποποίηση." -#: library/stdtypes.rst:3786 +#: library/stdtypes.rst:3842 msgid "" ">>> b'Hello world'.title()\n" "b'Hello World'" @@ -7013,7 +7154,7 @@ msgstr "" ">>> b'Hello world'.title()\n" "b'Hello World'" -#: library/stdtypes.rst:3789 +#: library/stdtypes.rst:3845 msgid "" "Lowercase ASCII characters are those byte values in the sequence " "``b'abcdefghijklmnopqrstuvwxyz'``. Uppercase ASCII characters are those byte " @@ -7025,7 +7166,7 @@ msgstr "" "εκείνες οι τιμές byte στην ακολουθία ``b'ABCDEFGHIJKLMNOPQRSTUVWXYZ'``. Όλες " "οι άλλες τιμές byte είναι χωρίς κεφαλαία." -#: library/stdtypes.rst:3799 +#: library/stdtypes.rst:3855 msgid "" ">>> b\"they're bill's friends from the UK\".title()\n" "b\"They'Re Bill'S Friends From The Uk\"" @@ -7033,14 +7174,14 @@ msgstr "" ">>> b\"they're bill's friends from the UK\".title()\n" "b\"They'Re Bill'S Friends From The Uk\"" -#: library/stdtypes.rst:3802 +#: library/stdtypes.rst:3858 msgid "" "A workaround for apostrophes can be constructed using regular expressions::" msgstr "" "Μια λύση για αποστρόφους μπορεί να δημιουργηθεί χρησιμοποιώντας κανονικές " "εκφράσεις::" -#: library/stdtypes.rst:3804 +#: library/stdtypes.rst:3860 msgid "" ">>> import re\n" ">>> def titlecase(s):\n" @@ -7062,7 +7203,7 @@ msgstr "" ">>> titlecase(b\"they're bill's friends.\")\n" "b\"They're Bill's Friends.\"" -#: library/stdtypes.rst:3823 +#: library/stdtypes.rst:3879 msgid "" "Return a copy of the sequence with all the lowercase ASCII characters " "converted to their corresponding uppercase counterpart." @@ -7070,7 +7211,7 @@ msgstr "" "Επιστρέφει ένα αντίγραφο της ακολουθίας με όλους τους πεζούς χαρακτήρες " "ASCII να έχουν μετατραπεί στο αντίστοιχο ισοδύναμο κεφαλαίο." -#: library/stdtypes.rst:3828 +#: library/stdtypes.rst:3884 msgid "" ">>> b'Hello World'.upper()\n" "b'HELLO WORLD'" @@ -7078,7 +7219,7 @@ msgstr "" ">>> b'Hello World'.upper()\n" "b'HELLO WORLD'" -#: library/stdtypes.rst:3844 +#: library/stdtypes.rst:3900 msgid "" "Return a copy of the sequence left filled with ASCII ``b'0'`` digits to make " "a sequence of length *width*. A leading sign prefix (``b'+'``/ ``b'-'``) is " @@ -7093,7 +7234,7 @@ msgstr "" "αντικείμενα :class:`bytes`, η αρχική ακολουθία επιστρέφεται εάν το *width* " "είναι μικρότερο ή ίσο με ``len(seq)``." -#: library/stdtypes.rst:3852 +#: library/stdtypes.rst:3908 msgid "" ">>> b\"42\".zfill(5)\n" "b'00042'\n" @@ -7105,11 +7246,11 @@ msgstr "" ">>> b\"-42\".zfill(5)\n" "b'-0042'" -#: library/stdtypes.rst:3866 +#: library/stdtypes.rst:3922 msgid "``printf``-style Bytes Formatting" msgstr "Μορφοποίηση Bytes τύπου ``printf``" -#: library/stdtypes.rst:3883 +#: library/stdtypes.rst:3939 msgid "" "The formatting operations described here exhibit a variety of quirks that " "lead to a number of common errors (such as failing to display tuples and " @@ -7121,7 +7262,7 @@ msgstr "" "εμφάνισης των πλειάδων και των λεξικών σωστά). Εάν η τιμή που εκτυπώνεται " "μπορεί να είναι πλειάδα ή λεξικό, κάντε το wrap σε μια πλειάδα." -#: library/stdtypes.rst:3888 +#: library/stdtypes.rst:3944 msgid "" "Bytes objects (``bytes``/``bytearray``) have one unique built-in operation: " "the ``%`` operator (modulo). This is also known as the bytes *formatting* or " @@ -7138,7 +7279,7 @@ msgstr "" "στοιχεία *values*. Το αποτέλεσμα είναι παρόμοιο με τη χρήση του :c:func:" "`sprintf` στη γλώσσας C." -#: library/stdtypes.rst:3895 +#: library/stdtypes.rst:3951 msgid "" "If *format* requires a single argument, *values* may be a single non-tuple " "object. [5]_ Otherwise, *values* must be a tuple with exactly the number of " @@ -7151,7 +7292,7 @@ msgstr "" "αντικείμενο μορφής bytes ή μεμονωμένο mapping αντικείμενο (για παράδειγμα, " "ένα λεξικό)." -#: library/stdtypes.rst:3929 +#: library/stdtypes.rst:3985 msgid "" "When the right argument is a dictionary (or other mapping type), then the " "formats in the bytes object *must* include a parenthesised mapping key into " @@ -7164,15 +7305,15 @@ msgstr "" "τον χαρακτήρα ``'%'``. Το κλειδί αντιστοίχισης επιλέγει την τιμή που θα " "μορφοποιηθεί από την αντιστοίχιση. Για παράδειγμα:" -#: library/stdtypes.rst:4003 +#: library/stdtypes.rst:4059 msgid "Single byte (accepts integer or single byte objects)." msgstr "Μονό byte (δέχεται ακέραια ή μεμονωμένα byte αντικείμενα)." -#: library/stdtypes.rst:4006 +#: library/stdtypes.rst:4062 msgid "``'b'``" msgstr "``'b'``" -#: library/stdtypes.rst:4006 +#: library/stdtypes.rst:4062 msgid "" "Bytes (any object that follows the :ref:`buffer protocol ` or " "has :meth:`~object.__bytes__`)." @@ -7180,7 +7321,7 @@ msgstr "" "Bytes (κάθε αντικείμενο που ακολουθεί το :ref:`buffer protocol " "` ή έχει :meth:`~object.__bytes__`)." -#: library/stdtypes.rst:4010 +#: library/stdtypes.rst:4066 msgid "" "``'s'`` is an alias for ``'b'`` and should only be used for Python2/3 code " "bases." @@ -7188,7 +7329,7 @@ msgstr "" "Το ``'s'`` είναι ένα ψευδώνυμο για το ``'b'`` και θα πρέπει να " "χρησιμοποιείται μόνο για κώδικα βάσει Python2/3." -#: library/stdtypes.rst:4013 +#: library/stdtypes.rst:4069 msgid "" "Bytes (converts any Python object using ``repr(obj).encode('ascii', " "'backslashreplace')``)." @@ -7196,7 +7337,7 @@ msgstr "" "Bytes (μετατρέπει οποιοδήποτε αντικείμενο Python χρησιμοποιώντας ``repr(obj)." "encode('ascii', 'backslashreplace')``)." -#: library/stdtypes.rst:4016 +#: library/stdtypes.rst:4072 msgid "" "``'r'`` is an alias for ``'a'`` and should only be used for Python2/3 code " "bases." @@ -7204,31 +7345,31 @@ msgstr "" "Το ``'r'`` είναι ένα ψευδώνυμο για ``'a'`` και θα πρέπει να χρησιμοποιείται " "μόνο για βάσεις κώδικα Python2/3." -#: library/stdtypes.rst:4016 +#: library/stdtypes.rst:4072 msgid "\\(7)" msgstr "\\(7)" -#: library/stdtypes.rst:4051 +#: library/stdtypes.rst:4107 msgid "``b'%s'`` is deprecated, but will not be removed during the 3.x series." msgstr "" "Το ``b'%s'`` έχει καταργηθεί, αλλά δεν θα αφαιρεθεί κατά τη διάρκεια της " "σειράς 3.x." -#: library/stdtypes.rst:4054 +#: library/stdtypes.rst:4110 msgid "``b'%r'`` is deprecated, but will not be removed during the 3.x series." msgstr "" "Το ``b'%r'`` έχει καταργηθεί, αλλά δεν θα αφαιρεθεί κατά τη διάρκεια της " "σειράς 3.x." -#: library/stdtypes.rst:4066 +#: library/stdtypes.rst:4122 msgid ":pep:`461` - Adding % formatting to bytes and bytearray" msgstr ":pep:`461` - Προσθήκη % για μορφοποίηση σε bytes και bytearray" -#: library/stdtypes.rst:4073 +#: library/stdtypes.rst:4129 msgid "Memory Views" msgstr "Όψεις Μνήμης" -#: library/stdtypes.rst:4075 +#: library/stdtypes.rst:4131 msgid "" ":class:`memoryview` objects allow Python code to access the internal data of " "an object that supports the :ref:`buffer protocol ` without " @@ -7238,7 +7379,7 @@ msgstr "" "πρόσβαση στα εσωτερικά δεδομένα ενός αντικειμένου που υποστηρίζει το " "πρωτόκολλο :ref:`buffer protocol ` χωρίς αντιγραφή." -#: library/stdtypes.rst:4081 +#: library/stdtypes.rst:4137 msgid "" "Create a :class:`memoryview` that references *object*. *object* must " "support the buffer protocol. Built-in objects that support the buffer " @@ -7249,7 +7390,7 @@ msgstr "" "υποστηρίζουν το πρωτόκολλο buffer περιλαμβάνουν :class:`bytes` και :class:" "`bytearray`." -#: library/stdtypes.rst:4085 +#: library/stdtypes.rst:4141 msgid "" "A :class:`memoryview` has the notion of an *element*, which is the atomic " "memory unit handled by the originating *object*. For many simple types such " @@ -7262,7 +7403,7 @@ msgstr "" "ένα μεμονωμένο byte, αλλά άλλοι τύποι όπως :class:`array.array` μπορεί να " "έχουν μεγαλύτερα στοιχεία." -#: library/stdtypes.rst:4090 +#: library/stdtypes.rst:4146 msgid "" "``len(view)`` is equal to the length of :class:`~memoryview.tolist`, which " "is the nested list representation of the view. If ``view.ndim = 1``, this is " @@ -7272,7 +7413,7 @@ msgstr "" "οποίο είναι η ένθετη αναπαράσταση κατά την προβολή της λίστας. Εάν ``view." "ndim = 1``, αυτό ισούται με τον αριθμό των στοιχείων για την προβολή." -#: library/stdtypes.rst:4094 +#: library/stdtypes.rst:4150 msgid "" "If ``view.ndim == 0``, ``len(view)`` now raises :exc:`TypeError` instead of " "returning 1." @@ -7280,7 +7421,7 @@ msgstr "" "Εάν ``view.ndim == 0``, το ``len(view)`` τώρα κάνει raise μια :exc:" "`TypeError` αντί να επιστρέψει 1." -#: library/stdtypes.rst:4097 +#: library/stdtypes.rst:4153 msgid "" "The :class:`~memoryview.itemsize` attribute will give you the number of " "bytes in a single element." @@ -7288,7 +7429,7 @@ msgstr "" "Το χαρακτηριστικό :class:`~memoryview.itemsize` θα σας δώσει τον αριθμό των " "byte σε ένα μόνο στοιχείο." -#: library/stdtypes.rst:4100 +#: library/stdtypes.rst:4156 msgid "" "A :class:`memoryview` supports slicing and indexing to expose its data. One-" "dimensional slicing will result in a subview::" @@ -7297,7 +7438,7 @@ msgstr "" "μέσω ευρετηρίου στα δεδομένα του. Μια μονοδιάστατη τμηματοποίηση θα έχει ως " "αποτέλεσμα μια δευτερεύουσα προβολή::" -#: library/stdtypes.rst:4103 +#: library/stdtypes.rst:4159 msgid "" ">>> v = memoryview(b'abcefg')\n" ">>> v[1]\n" @@ -7319,7 +7460,7 @@ msgstr "" ">>> bytes(v[1:4])\n" "b'bce'" -#: library/stdtypes.rst:4113 +#: library/stdtypes.rst:4169 msgid "" "If :class:`~memoryview.format` is one of the native format specifiers from " "the :mod:`struct` module, indexing with an integer or a tuple of integers is " @@ -7339,11 +7480,11 @@ msgstr "" "διαστάσεων. Τα μηδενικών διαστάσεων memoryviews μπορούν να γίνουν indexed " "με την κενή πλειάδα (tuple)." -#: library/stdtypes.rst:4122 +#: library/stdtypes.rst:4178 msgid "Here is an example with a non-byte format::" msgstr "Ακολουθεί ένα παράδειγμα με μη-byte μορφή::" -#: library/stdtypes.rst:4124 +#: library/stdtypes.rst:4180 msgid "" ">>> import array\n" ">>> a = array.array('l', [-11111111, 22222222, -33333333, 44444444])\n" @@ -7365,7 +7506,7 @@ msgstr "" ">>> m[::2].tolist()\n" "[-11111111, -33333333]" -#: library/stdtypes.rst:4134 +#: library/stdtypes.rst:4190 msgid "" "If the underlying object is writable, the memoryview supports one-" "dimensional slice assignment. Resizing is not allowed::" @@ -7373,7 +7514,7 @@ msgstr "" "Εάν το βασικό αντικείμενο είναι εγγράψιμο, το memoryview υποστηρίζει " "μονοδιάστατη εκχώρηση τμηματοποίησης. Δεν επιτρέπεται η αλλαγή μεγέθους::" -#: library/stdtypes.rst:4137 +#: library/stdtypes.rst:4193 msgid "" ">>> data = bytearray(b'abcefg')\n" ">>> v = memoryview(data)\n" @@ -7413,7 +7554,7 @@ msgstr "" ">>> data\n" "bytearray(b'z1spam')" -#: library/stdtypes.rst:4155 +#: library/stdtypes.rst:4211 msgid "" "One-dimensional memoryviews of :term:`hashable` (read-only) types with " "formats 'B', 'b' or 'c' are also hashable. The hash is defined as ``hash(m) " @@ -7423,7 +7564,7 @@ msgstr "" "με μορφές 'B', 'b' ή 'c' μπορούν επίσης να κατακερματιστούν. Ο " "κατακερματισμός ορίζεται ως ``hash(m) == hash(m.tobytes())``::" -#: library/stdtypes.rst:4159 +#: library/stdtypes.rst:4215 msgid "" ">>> v = memoryview(b'abcefg')\n" ">>> hash(v) == hash(b'abcefg')\n" @@ -7441,7 +7582,7 @@ msgstr "" ">>> hash(v[::-2]) == hash(b'abcefg'[::-2])\n" "True" -#: library/stdtypes.rst:4167 +#: library/stdtypes.rst:4223 msgid "" "One-dimensional memoryviews can now be sliced. One-dimensional memoryviews " "with formats 'B', 'b' or 'c' are now :term:`hashable`." @@ -7450,28 +7591,28 @@ msgstr "" "μονοδιάστατα memoryviews με μορφές 'B', 'b' ή 'c' είναι πλέον :term:" "`hashable`." -#: library/stdtypes.rst:4171 +#: library/stdtypes.rst:4227 msgid "" "memoryview is now registered automatically with :class:`collections.abc." "Sequence`" msgstr "" "το memoryview εγγράφεται πλέον αυτόματα με :class:`collections.abc.Sequence`" -#: library/stdtypes.rst:4175 +#: library/stdtypes.rst:4231 msgid "memoryviews can now be indexed with tuple of integers." msgstr "" "τα memoryviews μπορούν τώρα να γίνουν ευρετηριοποίηση με πλειάδα (tuple) " "ακεραίων." -#: library/stdtypes.rst:4178 +#: library/stdtypes.rst:4234 msgid "memoryview is now a :term:`generic type`." msgstr "Το memoryview είναι πλέον ένα :term:`generic type`." -#: library/stdtypes.rst:4181 +#: library/stdtypes.rst:4237 msgid ":class:`memoryview` has several methods:" msgstr "το :class:`memoryview` έχει διάφορες μεθόδους:" -#: library/stdtypes.rst:4185 +#: library/stdtypes.rst:4241 msgid "" "A memoryview and a :pep:`3118` exporter are equal if their shapes are " "equivalent and if all corresponding values are equal when the operands' " @@ -7482,7 +7623,7 @@ msgstr "" "αντίστοιχοι κωδικοί μορφής των τελεστών ερμηνεύονται χρησιμοποιώντας τη " "σύνταξη :mod:`struct`." -#: library/stdtypes.rst:4189 +#: library/stdtypes.rst:4245 msgid "" "For the subset of :mod:`struct` format strings currently supported by :meth:" "`tolist`, ``v`` and ``w`` are equal if ``v.tolist() == w.tolist()``::" @@ -7491,7 +7632,7 @@ msgstr "" "υποστηρίζονται αυτή τη στιγμή από το :meth:`tolist`, ``v`` και ``w`` είναι " "ίσες εάν ``v.tolist() == w.tolist()``::" -#: library/stdtypes.rst:4192 +#: library/stdtypes.rst:4248 msgid "" ">>> import array\n" ">>> a = array.array('I', [1, 2, 3, 4, 5])\n" @@ -7525,7 +7666,7 @@ msgstr "" ">>> z.tolist() == c.tolist()\n" "True" -#: library/stdtypes.rst:4208 +#: library/stdtypes.rst:4264 msgid "" "If either format string is not supported by the :mod:`struct` module, then " "the objects will always compare as unequal (even if the format strings and " @@ -7536,7 +7677,7 @@ msgstr "" "συμβολοσειρές μορφοποίησης και τα περιεχόμενα της προσωρινής μνήμης είναι " "πανομοιότυπα)::" -#: library/stdtypes.rst:4212 +#: library/stdtypes.rst:4268 msgid "" ">>> from ctypes import BigEndianStructure, c_long\n" ">>> class BEPoint(BigEndianStructure):\n" @@ -7562,7 +7703,7 @@ msgstr "" ">>> a == b\n" "False" -#: library/stdtypes.rst:4224 +#: library/stdtypes.rst:4280 msgid "" "Note that, as with floating-point numbers, ``v is w`` does *not* imply ``v " "== w`` for memoryview objects." @@ -7570,7 +7711,7 @@ msgstr "" "Λάβετε υπόψη ότι, όπως και με τους αριθμούς κινητής υποδιαστολής, ``v is w`` " "*δεν* σημαίνει ``v == w`` για αντικείμενα memoryview." -#: library/stdtypes.rst:4227 +#: library/stdtypes.rst:4283 msgid "" "Previous versions compared the raw memory disregarding the item format and " "the logical array structure." @@ -7578,7 +7719,7 @@ msgstr "" "Οι προηγούμενες εκδόσεις συνέκριναν την ακατέργαστη μνήμη αγνοώντας τη μορφή " "του στοιχείου και τη δομή του λογικού πίνακα." -#: library/stdtypes.rst:4233 +#: library/stdtypes.rst:4289 msgid "" "Return the data in the buffer as a bytestring. This is equivalent to " "calling the :class:`bytes` constructor on the memoryview. ::" @@ -7586,7 +7727,7 @@ msgstr "" "Επιστρέφει τα δεδομένα στο buffer ως ένα bytestring. Αυτό ισοδυναμεί με την " "κλήση του κατασκευαστή :class:`bytes` στο memoryview. ::" -#: library/stdtypes.rst:4236 +#: library/stdtypes.rst:4292 msgid "" ">>> m = memoryview(b\"abc\")\n" ">>> m.tobytes()\n" @@ -7600,7 +7741,7 @@ msgstr "" ">>> bytes(m)\n" "b'abc'" -#: library/stdtypes.rst:4242 +#: library/stdtypes.rst:4298 msgid "" "For non-contiguous arrays the result is equal to the flattened list " "representation with all elements converted to bytes. :meth:`tobytes` " @@ -7612,7 +7753,7 @@ msgstr "" "`tobytes` υποστηρίζει όλες τις συμβολοσειρές μορφής, συμπεριλαμβανομένων " "εκείνων που δεν είναι στη σύνταξη του module :mod:`struct`." -#: library/stdtypes.rst:4247 +#: library/stdtypes.rst:4303 msgid "" "*order* can be {'C', 'F', 'A'}. When *order* is 'C' or 'F', the data of the " "original array is converted to C or Fortran order. For contiguous views, 'A' " @@ -7627,7 +7768,7 @@ msgstr "" "συνεχόμενες προβολές, τα δεδομένα μετατρέπονται πρώτα σε C. Το *order=None* " "είναι το ίδιο με το *order='C'*." -#: library/stdtypes.rst:4256 +#: library/stdtypes.rst:4312 msgid "" "Return a string object containing two hexadecimal digits for each byte in " "the buffer. ::" @@ -7635,7 +7776,7 @@ msgstr "" "Επιστρέφει ένα αντικείμενο συμβολοσειράς που περιέχει δύο δεκαεξαδικά ψηφία " "για κάθε byte στο buffer. ::" -#: library/stdtypes.rst:4259 +#: library/stdtypes.rst:4315 msgid "" ">>> m = memoryview(b\"abc\")\n" ">>> m.hex()\n" @@ -7645,7 +7786,7 @@ msgstr "" ">>> m.hex()\n" "'616263'" -#: library/stdtypes.rst:4265 +#: library/stdtypes.rst:4321 msgid "" "Similar to :meth:`bytes.hex`, :meth:`memoryview.hex` now supports optional " "*sep* and *bytes_per_sep* parameters to insert separators between bytes in " @@ -7655,11 +7796,11 @@ msgstr "" "προαιρετικές παραμέτρους *sep* και *bytes_per_sep* για να εισάγετε " "διαχωριστικά μεταξύ των byte στην εξαγωγή δεκαεξαδικού." -#: library/stdtypes.rst:4272 +#: library/stdtypes.rst:4328 msgid "Return the data in the buffer as a list of elements. ::" msgstr "Επιστρέψτε τα δεδομένα στο buffer ως λίστα στοιχείων. ::" -#: library/stdtypes.rst:4274 +#: library/stdtypes.rst:4330 msgid "" ">>> memoryview(b'abc').tolist()\n" "[97, 98, 99]\n" @@ -7677,7 +7818,7 @@ msgstr "" ">>> m.tolist()\n" "[1.1, 2.2, 3.3]" -#: library/stdtypes.rst:4282 +#: library/stdtypes.rst:4338 msgid "" ":meth:`tolist` now supports all single character native formats in :mod:" "`struct` module syntax as well as multi-dimensional representations." @@ -7686,7 +7827,7 @@ msgstr "" "χαρακτήρων στη σύνταξη του :mod:`struct`, καθώς και πολυδιάστατες " "αναπαραστάσεις." -#: library/stdtypes.rst:4289 +#: library/stdtypes.rst:4345 msgid "" "Return a readonly version of the memoryview object. The original memoryview " "object is unchanged. ::" @@ -7694,7 +7835,7 @@ msgstr "" "Επιστρέφει μια έκδοση μόνο για ανάγνωση του αντικειμένου memoryview. Το " "αρχικό αντικείμενο memoryview είναι αμετάβλητο. ::" -#: library/stdtypes.rst:4292 +#: library/stdtypes.rst:4348 msgid "" ">>> m = memoryview(bytearray(b'abc'))\n" ">>> mm = m.toreadonly()\n" @@ -7720,7 +7861,7 @@ msgstr "" ">>> mm.tolist()\n" "[43, 98, 99]" -#: library/stdtypes.rst:4308 +#: library/stdtypes.rst:4364 msgid "" "Release the underlying buffer exposed by the memoryview object. Many " "objects take special actions when a view is held on them (for example, a :" @@ -7735,7 +7876,7 @@ msgstr "" "είναι βολική για την κατάργηση αυτών των περιορισμών (και απελευθερώνει " "οποιουσδήποτε αιωρούμενους πόρους) το συντομότερο δυνατό." -#: library/stdtypes.rst:4314 +#: library/stdtypes.rst:4370 msgid "" "After this method has been called, any further operation on the view raises " "a :class:`ValueError` (except :meth:`release` itself which can be called " @@ -7745,7 +7886,7 @@ msgstr "" "προβολή δημιουργεί μια :class:`ValueError` (εκτός από την ίδια την :meth:" "`release` που μπορεί να κληθεί πολλές φορές)::" -#: library/stdtypes.rst:4318 +#: library/stdtypes.rst:4374 msgid "" ">>> m = memoryview(b'abc')\n" ">>> m.release()\n" @@ -7761,7 +7902,7 @@ msgstr "" " File \"\", line 1, in \n" "ValueError: operation forbidden on released memoryview object" -#: library/stdtypes.rst:4325 +#: library/stdtypes.rst:4381 msgid "" "The context management protocol can be used for a similar effect, using the " "``with`` statement::" @@ -7769,7 +7910,7 @@ msgstr "" "Το πρωτόκολλο διαχείρισης περιεχομένου μπορεί να χρησιμοποιηθεί για παρόμοιο " "αποτέλεσμα, χρησιμοποιώντας τη δήλωση ``with``::" -#: library/stdtypes.rst:4328 +#: library/stdtypes.rst:4384 msgid "" ">>> with memoryview(b'abc') as m:\n" "... m[0]\n" @@ -7789,7 +7930,7 @@ msgstr "" " File \"\", line 1, in \n" "ValueError: operation forbidden on released memoryview object" -#: library/stdtypes.rst:4341 +#: library/stdtypes.rst:4397 msgid "" "Cast a memoryview to a new format or shape. *shape* defaults to " "``[byte_length//new_itemsize]``, which means that the result view will be " @@ -7803,7 +7944,7 @@ msgstr "" "memoryview, αλλά το ίδιο το buffer δεν αντιγράφεται. Οι υποστηριζόμενες " "μετατροπές είναι 1D -> C-:term:`contiguous` και C-contiguous -> 1D." -#: library/stdtypes.rst:4347 +#: library/stdtypes.rst:4403 msgid "" "The destination format is restricted to a single element native format in :" "mod:`struct` syntax. One of the formats must be a byte format ('B', 'b' or " @@ -7816,11 +7957,11 @@ msgstr "" "το αρχικό μήκος. Σημειώστε ότι όλα τα μήκη byte μπορεί να εξαρτώνται από το " "λειτουργικό σύστημα." -#: library/stdtypes.rst:4353 +#: library/stdtypes.rst:4409 msgid "Cast 1D/long to 1D/unsigned bytes::" msgstr "Μορφοποίηση από 1D/long σε 1D/unsigned bytes::" -#: library/stdtypes.rst:4355 +#: library/stdtypes.rst:4411 msgid "" ">>> import array\n" ">>> a = array.array('l', [1,2,3])\n" @@ -7864,11 +8005,11 @@ msgstr "" ">>> y.nbytes\n" "24" -#: library/stdtypes.rst:4376 +#: library/stdtypes.rst:4432 msgid "Cast 1D/unsigned bytes to 1D/char::" msgstr "Μορφοποίηση από 1D/unsigned bytes σε 1D/char::" -#: library/stdtypes.rst:4378 +#: library/stdtypes.rst:4434 msgid "" ">>> b = bytearray(b'zyz')\n" ">>> x = memoryview(b)\n" @@ -7892,11 +8033,11 @@ msgstr "" ">>> b\n" "bytearray(b'ayz')" -#: library/stdtypes.rst:4389 +#: library/stdtypes.rst:4445 msgid "Cast 1D/bytes to 3D/ints to 1D/signed char::" msgstr "Μορφοποίηση από 1D/bytes σε 3D/ints σε 1D/signed char::" -#: library/stdtypes.rst:4391 +#: library/stdtypes.rst:4447 msgid "" ">>> import struct\n" ">>> buf = struct.pack(\"i\"*12, *list(range(12)))\n" @@ -7946,11 +8087,11 @@ msgstr "" ">>> z.nbytes\n" "48" -#: library/stdtypes.rst:4415 +#: library/stdtypes.rst:4471 msgid "Cast 1D/unsigned long to 2D/unsigned long::" msgstr "Μορφοποίηση από 1D/unsigned long σε 2D/unsigned long::" -#: library/stdtypes.rst:4417 +#: library/stdtypes.rst:4473 msgid "" ">>> buf = struct.pack(\"L\"*6, *list(range(6)))\n" ">>> x = memoryview(buf)\n" @@ -7972,17 +8113,17 @@ msgstr "" ">>> y.tolist()\n" "[[0, 1, 2], [3, 4, 5]]" -#: library/stdtypes.rst:4429 +#: library/stdtypes.rst:4485 msgid "The source format is no longer restricted when casting to a byte view." msgstr "" "Η πηγαία μορφή δεν είναι πλέον περιορισμένη κατά τη μορφοποίηση σε μια όψη " "byte." -#: library/stdtypes.rst:4434 +#: library/stdtypes.rst:4490 msgid "Count the number of occurrences of *value*." msgstr "Μετράει τον αριθμό των εμφανίσεων του *value*." -#: library/stdtypes.rst:4440 +#: library/stdtypes.rst:4496 msgid "" "Return the index of the first occurrence of *value* (at or after index " "*start* and before index *stop*)." @@ -7990,20 +8131,20 @@ msgstr "" "Επιστρέφει τον δείκτη της πρώτης εμφάνισης του *value* (στην ή μετά τον " "δείκτη *start* και πριν από τον δείκτη *stop*)." -#: library/stdtypes.rst:4443 +#: library/stdtypes.rst:4499 msgid "Raises a :exc:`ValueError` if *value* cannot be found." msgstr "" "Κάνει raise μια :exc:`ValueError` αν δεν μπορεί να βρεθεί η τιμή *value*." -#: library/stdtypes.rst:4447 +#: library/stdtypes.rst:4503 msgid "There are also several readonly attributes available:" msgstr "Υπάρχουν επίσης αρκετά διαθέσιμα χαρακτηριστικά μόνο για ανάγνωση:" -#: library/stdtypes.rst:4451 +#: library/stdtypes.rst:4507 msgid "The underlying object of the memoryview::" msgstr "Το βασικό αντικείμενο του memoryview::" -#: library/stdtypes.rst:4453 +#: library/stdtypes.rst:4509 msgid "" ">>> b = bytearray(b'xyz')\n" ">>> m = memoryview(b)\n" @@ -8015,7 +8156,7 @@ msgstr "" ">>> m.obj is b\n" "True" -#: library/stdtypes.rst:4462 +#: library/stdtypes.rst:4518 msgid "" "``nbytes == product(shape) * itemsize == len(m.tobytes())``. This is the " "amount of space in bytes that the array would use in a contiguous " @@ -8025,7 +8166,7 @@ msgstr "" "ποσότητα χώρου σε byte που θα χρησιμοποιούσε ο πίνακας σε μια συνεχόμενη " "αναπαράσταση. Δεν ισούται απαραίτητα με ``len(m)``::" -#: library/stdtypes.rst:4466 +#: library/stdtypes.rst:4522 msgid "" ">>> import array\n" ">>> a = array.array('i', [1,2,3,4,5])\n" @@ -8057,11 +8198,11 @@ msgstr "" ">>> len(y.tobytes())\n" "12" -#: library/stdtypes.rst:4481 +#: library/stdtypes.rst:4537 msgid "Multi-dimensional arrays::" msgstr "Πολυδιάστατοι πίνακες::" -#: library/stdtypes.rst:4483 +#: library/stdtypes.rst:4539 msgid "" ">>> import struct\n" ">>> buf = struct.pack(\"d\"*12, *[1.5*x for x in range(12)])\n" @@ -8085,11 +8226,11 @@ msgstr "" ">>> y.nbytes\n" "96" -#: library/stdtypes.rst:4498 +#: library/stdtypes.rst:4554 msgid "A bool indicating whether the memory is read only." msgstr "Ένα bool που υποδεικνύει εάν η μνήμη είναι μόνο για ανάγνωση." -#: library/stdtypes.rst:4502 +#: library/stdtypes.rst:4558 msgid "" "A string containing the format (in :mod:`struct` module style) for each " "element in the view. A memoryview can be created from exporters with " @@ -8101,7 +8242,7 @@ msgstr "" "εξαγωγείς με συμβολοσειρές αυθαίρετης μορφής, αλλά ορισμένες μέθοδοι (π.χ. :" "meth:`tolist`) είναι περιορισμένες σε εγγενείς μορφές ενός στοιχείου." -#: library/stdtypes.rst:4507 +#: library/stdtypes.rst:4563 msgid "" "format ``'B'`` is now handled according to the struct module syntax. This " "means that ``memoryview(b'abc')[0] == b'abc'[0] == 97``." @@ -8109,11 +8250,11 @@ msgstr "" "η μορφή ``'B'`` αντιμετωπίζεται πλέον σύμφωνα με τη σύνταξη ενός struct " "module. Αυτό σημαίνει ότι ``memoryview(b'abc')[0] == b'abc'[0] == 97``." -#: library/stdtypes.rst:4513 +#: library/stdtypes.rst:4569 msgid "The size in bytes of each element of the memoryview::" msgstr "Το μέγεθος σε bytes κάθε στοιχείου στο memoryview::" -#: library/stdtypes.rst:4515 +#: library/stdtypes.rst:4571 msgid "" ">>> import array, struct\n" ">>> m = memoryview(array.array('H', [32000, 32001, 32002]))\n" @@ -8133,7 +8274,7 @@ msgstr "" ">>> struct.calcsize('H') == m.itemsize\n" "True" -#: library/stdtypes.rst:4526 +#: library/stdtypes.rst:4582 msgid "" "An integer indicating how many dimensions of a multi-dimensional array the " "memory represents." @@ -8141,7 +8282,7 @@ msgstr "" "Ένα ακέραιος αριθμός που δείχνει πόσες διαστάσεις ενός πολυδιάστατου πίνακα " "αντιπροσωπεύει η μνήμη." -#: library/stdtypes.rst:4531 +#: library/stdtypes.rst:4587 msgid "" "A tuple of integers the length of :attr:`ndim` giving the shape of the " "memory as an N-dimensional array." @@ -8149,11 +8290,11 @@ msgstr "" "Μια πλειάδα (tuple) ακεραίων με μήκος :attr:`ndim` δίνοντας το σχήμα της " "μνήμης ως πίνακα N-διαστάσεων." -#: library/stdtypes.rst:4542 +#: library/stdtypes.rst:4598 msgid "An empty tuple instead of ``None`` when ndim = 0." msgstr "Μια κενή πλειάδα (tuple) αντί για ``None`` όταν ndim = 0." -#: library/stdtypes.rst:4539 +#: library/stdtypes.rst:4595 msgid "" "A tuple of integers the length of :attr:`ndim` giving the size in bytes to " "access each element for each dimension of the array." @@ -8161,29 +8302,29 @@ msgstr "" "Μια πλειάδα ακεραίων με μήκος :attr:`ndim` που δίνει το μέγεθος σε bytes για " "την πρόσβαση σε κάθε στοιχείο για κάθε διάσταση του πίνακα." -#: library/stdtypes.rst:4547 +#: library/stdtypes.rst:4603 msgid "Used internally for PIL-style arrays. The value is informational only." msgstr "" "Χρησιμοποιείται εσωτερικά για συστοιχίες τύπου PIL. Η τιμή είναι μόνο " "ενημερωτική." -#: library/stdtypes.rst:4551 +#: library/stdtypes.rst:4607 msgid "A bool indicating whether the memory is C-:term:`contiguous`." msgstr "Ένα bool που υποδεικνύει εάν η μνήμη είναι C-:term:`contiguous`." -#: library/stdtypes.rst:4557 +#: library/stdtypes.rst:4613 msgid "A bool indicating whether the memory is Fortran :term:`contiguous`." msgstr "Ένα bool που υποδεικνύει εάν η μνήμη είναι Fortran :term:`contiguous`." -#: library/stdtypes.rst:4563 +#: library/stdtypes.rst:4619 msgid "A bool indicating whether the memory is :term:`contiguous`." msgstr "Ένα bool που υποδεικνύει εάν η μνήμη είναι :term:`contiguous`." -#: library/stdtypes.rst:4571 +#: library/stdtypes.rst:4627 msgid "Set Types --- :class:`set`, :class:`frozenset`" msgstr "Τύποι Συνόλου (Set) --- :class:`set`, :class:`frozenset`" -#: library/stdtypes.rst:4575 +#: library/stdtypes.rst:4631 msgid "" "A :dfn:`set` object is an unordered collection of distinct :term:`hashable` " "objects. Common uses include membership testing, removing duplicates from a " @@ -8199,7 +8340,7 @@ msgstr "" "διαφορά. (Για άλλα containers, δείτε τις ενσωματωμένες κλάσεις :class:" "`dict`, :class:`list`, και :class:`tuple` και το module :mod:`collections`)." -#: library/stdtypes.rst:4582 +#: library/stdtypes.rst:4638 msgid "" "Like other collections, sets support ``x in set``, ``len(set)``, and ``for x " "in set``. Being an unordered collection, sets do not record element " @@ -8212,7 +8353,7 @@ msgstr "" "τα σύνολα (sets) δεν υποστηρίζουν λειτουργίες ευρετηριοποίησης, " "τμηματοποίησης ή άλλη συμπεριφορά ακολουθίας." -#: library/stdtypes.rst:4587 +#: library/stdtypes.rst:4643 msgid "" "There are currently two built-in set types, :class:`set` and :class:" "`frozenset`. The :class:`set` type is mutable --- the contents can be " @@ -8233,7 +8374,7 @@ msgstr "" "δεν μπορεί να αλλάξει μετά τη δημιουργία του· μπορεί επομένως να " "χρησιμοποιηθεί ως κλειδί λεξικού ή ως στοιχείο άλλου συνόλου (set)." -#: library/stdtypes.rst:4595 +#: library/stdtypes.rst:4651 msgid "" "Non-empty sets (not frozensets) can be created by placing a comma-separated " "list of elements within braces, for example: ``{'jack', 'sjoerd'}``, in " @@ -8244,11 +8385,11 @@ msgstr "" "παράδειγμα: ``{'jack', 'sjoerd'}``, επιπλέον με τη χρήση του constructor " "του :class:`set`." -#: library/stdtypes.rst:4599 +#: library/stdtypes.rst:4655 msgid "The constructors for both classes work the same:" msgstr "Οι constructors και για τις δύο κλάσεις λειτουργούν το ίδιο:" -#: library/stdtypes.rst:4604 +#: library/stdtypes.rst:4660 msgid "" "Return a new set or frozenset object whose elements are taken from " "*iterable*. The elements of a set must be :term:`hashable`. To represent " @@ -8261,25 +8402,25 @@ msgstr "" "εσωτερικά σύνολα πρέπει να είναι :class:`frozenset` αντικείμενα. Εάν δεν " "έχει καθοριστεί το *iterable*, επιστρέφεται ένα νέο κενό σύνολο." -#: library/stdtypes.rst:4610 +#: library/stdtypes.rst:4666 msgid "Sets can be created by several means:" msgstr "Τα σύνολα μπορούν να δημιουργηθούν με διάφορους τρόπους:" -#: library/stdtypes.rst:4612 +#: library/stdtypes.rst:4668 msgid "" "Use a comma-separated list of elements within braces: ``{'jack', 'sjoerd'}``" msgstr "" "Χρησιμοποιώντας μια λίστα στοιχείων διαχωρισμένη με κόμματα: ``{'jack', " "'sjoerd'}``" -#: library/stdtypes.rst:4613 +#: library/stdtypes.rst:4669 msgid "" "Use a set comprehension: ``{c for c in 'abracadabra' if c not in 'abc'}``" msgstr "" "Χρησιμοποιώντας ένα set comprehension: ``{c for c in 'abracadabra' if c not " "in 'abc'}``" -#: library/stdtypes.rst:4614 +#: library/stdtypes.rst:4670 msgid "" "Use the type constructor: ``set()``, ``set('foobar')``, ``set(['a', 'b', " "'foo'])``" @@ -8287,7 +8428,7 @@ msgstr "" "Χρησιμοποιώντας τον τύπο constructor: ``set()``, ``set('foobar')``, " "``set(['a', 'b', 'foo'])``" -#: library/stdtypes.rst:4616 +#: library/stdtypes.rst:4672 msgid "" "Instances of :class:`set` and :class:`frozenset` provide the following " "operations:" @@ -8295,20 +8436,20 @@ msgstr "" "Τα στιγμιότυπα των :class:`set` και :class:`frozenset` παρέχουν τις " "ακόλουθες λειτουργίες:" -#: library/stdtypes.rst:4621 +#: library/stdtypes.rst:4677 msgid "Return the number of elements in set *s* (cardinality of *s*)." msgstr "" "Επιστρέφει τον αριθμό των στοιχείων στο σύνολο *s* (πληθικότητα του *s*)." -#: library/stdtypes.rst:4625 +#: library/stdtypes.rst:4681 msgid "Test *x* for membership in *s*." msgstr "Ελέγχει αν το *x* είναι μέρος στο *s*." -#: library/stdtypes.rst:4629 +#: library/stdtypes.rst:4685 msgid "Test *x* for non-membership in *s*." msgstr "Ελέγχει αν το *x* δεν είναι μέρος στο *s*." -#: library/stdtypes.rst:4633 +#: library/stdtypes.rst:4689 msgid "" "Return ``True`` if the set has no elements in common with *other*. Sets are " "disjoint if and only if their intersection is the empty set." @@ -8316,11 +8457,11 @@ msgstr "" "Επιστρέφει ``True`` εάν το σύνολο δεν έχει κοινά στοιχεία με το *other*. Τα " "σύνολα είναι ασύνδετα εάν και μόνο εάν η τομή τους είναι το κενό σύνολο." -#: library/stdtypes.rst:4639 +#: library/stdtypes.rst:4695 msgid "Test whether every element in the set is in *other*." msgstr "Ελέγχει εάν κάθε στοιχείο στο σύνολο βρίσκεται στο *other*." -#: library/stdtypes.rst:4643 +#: library/stdtypes.rst:4699 msgid "" "Test whether the set is a proper subset of *other*, that is, ``set <= other " "and set != other``." @@ -8328,11 +8469,11 @@ msgstr "" "Ελέγχει εάν το σύνολο είναι σωστό υποσύνολο του *other*, δηλαδή, ``set <= " "other and set != other``." -#: library/stdtypes.rst:4649 +#: library/stdtypes.rst:4705 msgid "Test whether every element in *other* is in the set." msgstr "Ελέγχει αν κάθε στοιχείο του *other* είναι στο σύνολο." -#: library/stdtypes.rst:4653 +#: library/stdtypes.rst:4709 msgid "" "Test whether the set is a proper superset of *other*, that is, ``set >= " "other and set != other``." @@ -8340,32 +8481,32 @@ msgstr "" "Ελέγχει αν το σύνολο είναι σωστό υπερσύνολο του *other*, δηλαδή, ``set >= " "other and set != other``." -#: library/stdtypes.rst:4659 +#: library/stdtypes.rst:4715 msgid "Return a new set with elements from the set and all others." msgstr "Επιστρέφει ένα νέο σύνολο με στοιχεία από το σύνολο και όλα τα άλλα." -#: library/stdtypes.rst:4664 +#: library/stdtypes.rst:4720 msgid "Return a new set with elements common to the set and all others." msgstr "" "Επιστρέφει ένα νέο σύνολο με στοιχεία κοινά στο σύνολο και σε όλα τα άλλα." -#: library/stdtypes.rst:4669 +#: library/stdtypes.rst:4725 msgid "Return a new set with elements in the set that are not in the others." msgstr "" "Επιστρέφει ένα νέο σύνολο με στοιχεία στο σύνολο που δεν υπάρχουν στα άλλα." -#: library/stdtypes.rst:4674 +#: library/stdtypes.rst:4730 msgid "" "Return a new set with elements in either the set or *other* but not both." msgstr "" "Επιστρέφει ένα νέο σύνολο με στοιχεία είτε στο σύνολο είτε στο *other* αλλά " "όχι και στα δύο." -#: library/stdtypes.rst:4678 +#: library/stdtypes.rst:4734 msgid "Return a shallow copy of the set." msgstr "Επιστρέφει ένα ρηχό αντίγραφο του συνόλου." -#: library/stdtypes.rst:4681 +#: library/stdtypes.rst:4737 msgid "" "Note, the non-operator versions of :meth:`union`, :meth:`intersection`, :" "meth:`difference`, :meth:`symmetric_difference`, :meth:`issubset`, and :meth:" @@ -8382,7 +8523,7 @@ msgstr "" "σφάλματα όπως ``set('abc') & 'cbs'`` υπέρ του πιο ευανάγνωστου ``set('abc')." "intersection('cbs')``." -#: library/stdtypes.rst:4688 +#: library/stdtypes.rst:4744 msgid "" "Both :class:`set` and :class:`frozenset` support set to set comparisons. Two " "sets are equal if and only if every element of each set is contained in the " @@ -8400,7 +8541,7 @@ msgstr "" "είναι σωστό υπερσύνολο του δεύτερου συνόλου (είναι υπερσύνολο αλλά δεν είναι " "ίσο)." -#: library/stdtypes.rst:4695 +#: library/stdtypes.rst:4751 msgid "" "Instances of :class:`set` are compared to instances of :class:`frozenset` " "based on their members. For example, ``set('abc') == frozenset('abc')`` " @@ -8411,7 +8552,7 @@ msgstr "" "frozenset('abc')`` επιστρέφει ``True`` και το ίδιο συμβαίνει και με το " "``set('abc') in set([frozenset('abc')])``." -#: library/stdtypes.rst:4699 +#: library/stdtypes.rst:4755 msgid "" "The subset and equality comparisons do not generalize to a total ordering " "function. For example, any two nonempty disjoint sets are not equal and are " @@ -8423,7 +8564,7 @@ msgstr "" "δεν είναι ίσα και δεν είναι υποσύνολα το ένα του άλλου, επομένως *όλα* τα " "ακόλουθα επιστρέφουν ``False``: ``ab``." -#: library/stdtypes.rst:4704 +#: library/stdtypes.rst:4760 msgid "" "Since sets only define partial ordering (subset relationships), the output " "of the :meth:`list.sort` method is undefined for lists of sets." @@ -8431,13 +8572,13 @@ msgstr "" "Δεδομένου ότι τα σύνολα ορίζουν μόνο μερική σειρά (σχέσεις υποσυνόλων), η " "έξοδος της μεθόδου :meth:`list.sort` δεν έχει οριστεί για λίστες συνόλων." -#: library/stdtypes.rst:4707 +#: library/stdtypes.rst:4763 msgid "Set elements, like dictionary keys, must be :term:`hashable`." msgstr "" "Τα στοιχεία συνόλου, όπως τα κλειδιά λεξικού, πρέπει να είναι :term:" "`hashable`." -#: library/stdtypes.rst:4709 +#: library/stdtypes.rst:4765 msgid "" "Binary operations that mix :class:`set` instances with :class:`frozenset` " "return the type of the first operand. For example: ``frozenset('ab') | " @@ -8448,7 +8589,7 @@ msgstr "" "``frozenset('ab') | set('bc')`` επιστρέφει ένα στιγμιότυπο του :class:" "`frozenset`." -#: library/stdtypes.rst:4713 +#: library/stdtypes.rst:4769 msgid "" "The following table lists operations available for :class:`set` that do not " "apply to immutable instances of :class:`frozenset`:" @@ -8456,32 +8597,32 @@ msgstr "" "Ο παρακάτω πίνακας παραθέτει λειτουργίες που είναι διαθέσιμες για :class:" "`set` που δεν ισχύουν για αμετάβλητα στιγμιότυπα της :class:`frozenset`:" -#: library/stdtypes.rst:4719 +#: library/stdtypes.rst:4775 msgid "Update the set, adding elements from all others." msgstr "Ενημερώνει το σύνολο (set), προσθέτοντας στοιχεία από όλα τα άλλα." -#: library/stdtypes.rst:4724 +#: library/stdtypes.rst:4780 msgid "Update the set, keeping only elements found in it and all others." msgstr "" "Ενημερώνει το σύνολο, διατηρώντας μόνο τα στοιχεία που βρίσκονται σε αυτό " "και όλα τα άλλα." -#: library/stdtypes.rst:4729 +#: library/stdtypes.rst:4785 msgid "Update the set, removing elements found in others." msgstr "Ενημερώνει το σύνολο, αφαιρώντας στοιχεία που βρίσκονται σε άλλα." -#: library/stdtypes.rst:4734 +#: library/stdtypes.rst:4790 msgid "" "Update the set, keeping only elements found in either set, but not in both." msgstr "" "Ενημερώνει το σύνολο, διατηρώντας μόνο τα στοιχεία που βρίσκονται σε κάθε " "σύνολο, αλλά όχι και στα δύο." -#: library/stdtypes.rst:4738 +#: library/stdtypes.rst:4794 msgid "Add element *elem* to the set." msgstr "Προσθέτει το στοιχείο *elem* στο σύνολο." -#: library/stdtypes.rst:4742 +#: library/stdtypes.rst:4798 msgid "" "Remove element *elem* from the set. Raises :exc:`KeyError` if *elem* is not " "contained in the set." @@ -8489,11 +8630,11 @@ msgstr "" "Αφαιρεί το στοιχείο *elem* από το σύνολο. Κάνει raise τη :exc:`KeyError` " "εάν το *elem* δεν περιέχεται στο σύνολο." -#: library/stdtypes.rst:4747 +#: library/stdtypes.rst:4803 msgid "Remove element *elem* from the set if it is present." msgstr "Αφαιρεί το στοιχείο *elem* από το σύνολο εάν υπάρχει." -#: library/stdtypes.rst:4751 +#: library/stdtypes.rst:4807 msgid "" "Remove and return an arbitrary element from the set. Raises :exc:`KeyError` " "if the set is empty." @@ -8501,11 +8642,11 @@ msgstr "" "Αφαιρεί και επιστρέφει ένα αυθαίρετο στοιχείο από το σύνολο. Κάνει raise " "μια :exc:`KeyError` εάν το σύνολο είναι κενό." -#: library/stdtypes.rst:4756 +#: library/stdtypes.rst:4812 msgid "Remove all elements from the set." msgstr "Αφαιρεί όλα τα στοιχεία από το σύνολο (set)." -#: library/stdtypes.rst:4759 +#: library/stdtypes.rst:4815 msgid "" "Note, the non-operator versions of the :meth:`update`, :meth:" "`intersection_update`, :meth:`difference_update`, and :meth:" @@ -8517,7 +8658,7 @@ msgstr "" "`symmetric_difference_update` θα δέχονται οποιοδήποτε επαναλαμβανόμενο " "στοιχείο ως όρισμα." -#: library/stdtypes.rst:4764 +#: library/stdtypes.rst:4820 msgid "" "Note, the *elem* argument to the :meth:`~object.__contains__`, :meth:" "`remove`, and :meth:`discard` methods may be a set. To support searching " @@ -8528,11 +8669,11 @@ msgstr "" "υποστήριξη της αναζήτησης για ένα ισοδύναμο παγωμένο σύνολο (frozenset), ένα " "προσωρινό δημιουργείται από το *elem*." -#: library/stdtypes.rst:4773 +#: library/stdtypes.rst:4829 msgid "Mapping Types --- :class:`dict`" msgstr "Τύποι αντιστοίχισης --- :class:`dict`" -#: library/stdtypes.rst:4783 +#: library/stdtypes.rst:4839 msgid "" "A :term:`mapping` object maps :term:`hashable` values to arbitrary objects. " "Mappings are mutable objects. There is currently only one standard mapping " @@ -8547,7 +8688,7 @@ msgstr "" "class:`list`, :class:`set`, και :class:`tuple` κλάσεις, και το module :mod:" "`collections`.)" -#: library/stdtypes.rst:4789 +#: library/stdtypes.rst:4845 msgid "" "A dictionary's keys are *almost* arbitrary values. Values that are not :" "term:`hashable`, that is, values containing lists, dictionaries or other " @@ -8562,7 +8703,7 @@ msgstr "" "συγκρίνονται ίσες (όπως ``1``, ``1.0``, και ``True``) μπορούν να " "χρησιμοποιηθούν εναλλακτικά για το index της ίδιας καταχώρισης λεξικού." -#: library/stdtypes.rst:4800 +#: library/stdtypes.rst:4856 msgid "" "Return a new dictionary initialized from an optional positional argument and " "a possibly empty set of keyword arguments." @@ -8570,11 +8711,11 @@ msgstr "" "Επιστρέφει ένα νέο λεξικό που έχει αρχικοποιηθεί από ένα προαιρετικό όρισμα " "θέσης και ένα πιθανό κενό σύνολο ορισμάτων λέξεων-κλειδιών." -#: library/stdtypes.rst:4803 +#: library/stdtypes.rst:4859 msgid "Dictionaries can be created by several means:" msgstr "Τα λεξικά μπορούν να δημιουργηθούν με διάφορους τρόπους:" -#: library/stdtypes.rst:4805 +#: library/stdtypes.rst:4861 msgid "" "Use a comma-separated list of ``key: value`` pairs within braces: ``{'jack': " "4098, 'sjoerd': 4127}`` or ``{4098: 'jack', 4127: 'sjoerd'}``" @@ -8583,13 +8724,13 @@ msgstr "" "σε αγκύλες: ``{'jack': 4098, 'sjoerd': 4127}`` or ``{4098: 'jack', 4127: " "'sjoerd'}``" -#: library/stdtypes.rst:4807 +#: library/stdtypes.rst:4863 msgid "Use a dict comprehension: ``{}``, ``{x: x ** 2 for x in range(10)}``" msgstr "" "Χρησιμοποιήστε ένα comprehension λεξικού: ``{}``, ``{x: x ** 2 for x in " "range(10)}``" -#: library/stdtypes.rst:4808 +#: library/stdtypes.rst:4864 msgid "" "Use the type constructor: ``dict()``, ``dict([('foo', 100), ('bar', " "200)])``, ``dict(foo=100, bar=200)``" @@ -8597,7 +8738,7 @@ msgstr "" "Χρησιμοποιήστε τον κατασκευαστή τύπου: ``dict()``, ``dict([('foo', 100), " "('bar', 200)])``, ``dict(foo=100, bar=200)``" -#: library/stdtypes.rst:4811 +#: library/stdtypes.rst:4867 msgid "" "If no positional argument is given, an empty dictionary is created. If a " "positional argument is given and it defines a ``keys()`` method, a " @@ -8619,7 +8760,7 @@ msgstr "" "τιμή. Εάν ένα κλειδί εμφανίζεται περισσότερες από μία φορές, η τελευταία " "τιμή για αυτό το κλειδί γίνεται η αντίστοιχη τιμή στο νέο λεξικό." -#: library/stdtypes.rst:4821 +#: library/stdtypes.rst:4877 msgid "" "If keyword arguments are given, the keyword arguments and their values are " "added to the dictionary created from the positional argument. If a key " @@ -8631,7 +8772,7 @@ msgstr "" "Εάν υπάρχει ήδη ένα κλειδί που προστίθεται, η τιμή από το όρισμα λέξης-" "κλειδιού αντικαθιστά την τιμή από το όρισμα θέσης." -#: library/stdtypes.rst:4844 +#: library/stdtypes.rst:4900 msgid "" "Providing keyword arguments as in the first example only works for keys that " "are valid Python identifiers. Otherwise, any valid keys can be used." @@ -8640,7 +8781,7 @@ msgstr "" "για κλειδιά που είναι έγκυρα αναγνωριστικά Python. Διαφορετικά, μπορούν να " "χρησιμοποιηθούν οποιαδήποτε έγκυρα κλειδιά." -#: library/stdtypes.rst:4829 +#: library/stdtypes.rst:4885 msgid "" "Dictionaries compare equal if and only if they have the same ``(key, " "value)`` pairs (regardless of ordering). Order comparisons ('<', '<=', '>=', " @@ -8654,7 +8795,7 @@ msgstr "" "λεξικού και η ισότητα, τα ακόλουθα παραδείγματα επιστρέφουν όλα ένα λεξικό " "ίσο με ``{\"one\": 1, \"two\": 2, \"three\": 3}``::" -#: library/stdtypes.rst:4835 +#: library/stdtypes.rst:4891 msgid "" ">>> a = dict(one=1, two=2, three=3)\n" ">>> b = {'one': 1, 'two': 2, 'three': 3}\n" @@ -8674,7 +8815,7 @@ msgstr "" ">>> a == b == c == d == e == f\n" "True" -#: library/stdtypes.rst:4847 +#: library/stdtypes.rst:4903 msgid "" "Dictionaries preserve insertion order. Note that updating a key does not " "affect the order. Keys added after deletion are inserted at the end. ::" @@ -8683,7 +8824,7 @@ msgstr "" "κλειδιού δεν επηρεάζει τη σειρά. Τα κλειδιά που προστέθηκαν μετά τη " "διαγραφή εισάγονται στο τέλος. ::" -#: library/stdtypes.rst:4850 +#: library/stdtypes.rst:4906 msgid "" ">>> d = {\"one\": 1, \"two\": 2, \"three\": 3, \"four\": 4}\n" ">>> d\n" @@ -8715,7 +8856,7 @@ msgstr "" ">>> d\n" "{'one': 42, 'three': 3, 'four': 4, 'two': None}" -#: library/stdtypes.rst:4865 +#: library/stdtypes.rst:4921 msgid "" "Dictionary order is guaranteed to be insertion order. This behavior was an " "implementation detail of CPython from 3.6." @@ -8723,7 +8864,7 @@ msgstr "" "Η σειρά λεξικού είναι εγγυημένη ότι είναι η σειρά εισαγωγής. Αυτή η " "συμπεριφορά ήταν μια λεπτομέρεια υλοποίηση της CPython από την έκδοση 3.6." -#: library/stdtypes.rst:4869 +#: library/stdtypes.rst:4925 msgid "" "These are the operations that dictionaries support (and therefore, custom " "mapping types should support too):" @@ -8731,16 +8872,16 @@ msgstr "" "Αυτές είναι οι λειτουργίες που υποστηρίζουν τα λεξικά (και επομένως, θα " "πρέπει να υποστηρίζουν και προσαρμοσμένους τύπους αντιστοίχισης επίσης):" -#: library/stdtypes.rst:4874 +#: library/stdtypes.rst:4930 msgid "Return a list of all the keys used in the dictionary *d*." msgstr "" "Επιστρέφει μια λίστα με όλα τα κλειδιά που χρησιμοποιούνται στο λεξικό *d*." -#: library/stdtypes.rst:4878 +#: library/stdtypes.rst:4934 msgid "Return the number of items in the dictionary *d*." msgstr "Επιστρέφει τον αριθμό των στοιχείων στο λεξικό *d*." -#: library/stdtypes.rst:4882 +#: library/stdtypes.rst:4938 msgid "" "Return the item of *d* with key *key*. Raises a :exc:`KeyError` if *key* is " "not in the map." @@ -8748,7 +8889,7 @@ msgstr "" "Επιστρέφει το στοιχείο του *d* με το κλειδί *key*. Κάνει raise μια :exc:" "`KeyError` εάν το *key* δεν υπάρχει για να αντιστοιχηθεί." -#: library/stdtypes.rst:4887 +#: library/stdtypes.rst:4943 msgid "" "If a subclass of dict defines a method :meth:`__missing__` and *key* is not " "present, the ``d[key]`` operation calls that method with the key *key* as " @@ -8767,7 +8908,7 @@ msgstr "" "exc:`KeyError`. To :meth:`__missing__` πρέπει να είναι μέθοδος∙ δεν μπορεί " "να είναι ένα στιγμιότυπο μεταβλητής::" -#: library/stdtypes.rst:4895 +#: library/stdtypes.rst:4951 msgid "" ">>> class Counter(dict):\n" "... def __missing__(self, key):\n" @@ -8791,7 +8932,7 @@ msgstr "" ">>> c['red']\n" "1" -#: library/stdtypes.rst:4906 +#: library/stdtypes.rst:4962 msgid "" "The example above shows part of the implementation of :class:`collections." "Counter`. A different ``__missing__`` method is used by :class:`collections." @@ -8801,11 +8942,11 @@ msgstr "" "Counter`. Μια διαφορετική μέθοδος ``__missing__`` χρησιμοποιείται από την :" "class:`collections.defaultdict`." -#: library/stdtypes.rst:4912 +#: library/stdtypes.rst:4968 msgid "Set ``d[key]`` to *value*." msgstr "Ορίζει το ``d[key]`` στο *value*." -#: library/stdtypes.rst:4916 +#: library/stdtypes.rst:4972 msgid "" "Remove ``d[key]`` from *d*. Raises a :exc:`KeyError` if *key* is not in the " "map." @@ -8813,16 +8954,16 @@ msgstr "" "Αφαιρεί το ``d[key]`` από το *d*. Κάνει raise ένα :exc:`KeyError` εάν το " "*key* δεν υπάρχει για αντιστοίχιση." -#: library/stdtypes.rst:4921 +#: library/stdtypes.rst:4977 msgid "Return ``True`` if *d* has a key *key*, else ``False``." msgstr "" "Επιστρέφει ``True`` εάν το *d* έχει ένα κλειδί *key*, διαφορετικά ``False``." -#: library/stdtypes.rst:4925 +#: library/stdtypes.rst:4981 msgid "Equivalent to ``not key in d``." msgstr "Ισοδυναμεί με ``not key in d``." -#: library/stdtypes.rst:4929 +#: library/stdtypes.rst:4985 msgid "" "Return an iterator over the keys of the dictionary. This is a shortcut for " "``iter(d.keys())``." @@ -8830,21 +8971,21 @@ msgstr "" "Επιστρέφει έναν iterator πάνω από τα κλειδιά του λεξικού. Αυτή είναι μια " "συντόμευση για ``iter(d.keys())``." -#: library/stdtypes.rst:4934 +#: library/stdtypes.rst:4990 msgid "Remove all items from the dictionary." msgstr "Αφαιρεί όλα τα στοιχεία από το λεξικό." -#: library/stdtypes.rst:4938 +#: library/stdtypes.rst:4994 msgid "Return a shallow copy of the dictionary." msgstr "Επιστρέφει ένα ρηχό αντίγραφο του λεξικού." -#: library/stdtypes.rst:4942 +#: library/stdtypes.rst:4998 msgid "" "Create a new dictionary with keys from *iterable* and values set to *value*." msgstr "" "Δημιουργεί ένα νέο λεξικό με κλειδιά από το *iterable* και τιμές ως *value*." -#: library/stdtypes.rst:4944 +#: library/stdtypes.rst:5000 msgid "" ":meth:`fromkeys` is a class method that returns a new dictionary. *value* " "defaults to ``None``. All of the values refer to just a single instance, so " @@ -8859,7 +9000,7 @@ msgstr "" "διαφορετικές τιμές, χρησιμοποιήστε αντ' αυτού ένα :ref:`dict comprehension " "`." -#: library/stdtypes.rst:4952 +#: library/stdtypes.rst:5008 msgid "" "Return the value for *key* if *key* is in the dictionary, else *default*. If " "*default* is not given, it defaults to ``None``, so that this method never " @@ -8869,7 +9010,7 @@ msgstr "" "*default*. Εάν το *default* δεν δίνεται, ορίζεται από προεπιλογή σε " "``None``, έτσι ώστε αυτή η μέθοδος να μην κάνει raise μια :exc:`KeyError`." -#: library/stdtypes.rst:4958 +#: library/stdtypes.rst:5014 msgid "" "Return a new view of the dictionary's items (``(key, value)`` pairs). See " "the :ref:`documentation of view objects `." @@ -8877,7 +9018,7 @@ msgstr "" "Επιστρέφει μια νέα όψη των στοιχείων του λεξικού (``(key, value)`` ζεύγη). " "Δείτε την :ref:`documentation of view objects `." -#: library/stdtypes.rst:4963 +#: library/stdtypes.rst:5019 msgid "" "Return a new view of the dictionary's keys. See the :ref:`documentation of " "view objects `." @@ -8885,7 +9026,7 @@ msgstr "" "Επιστρέφει μια νέα όψη των κλειδιών του λεξικού. Δείτε το :ref:" "`documentation of view objects `." -#: library/stdtypes.rst:4968 +#: library/stdtypes.rst:5024 msgid "" "If *key* is in the dictionary, remove it and return its value, else return " "*default*. If *default* is not given and *key* is not in the dictionary, a :" @@ -8895,7 +9036,7 @@ msgstr "" "διαφορετικά επιστρέφει *default*. Εάν *default* δεν δίνεται και το *key* " "δεν είναι στο λεξικό, γίνεται raise ένα :exc:`KeyError`." -#: library/stdtypes.rst:4974 +#: library/stdtypes.rst:5030 msgid "" "Remove and return a ``(key, value)`` pair from the dictionary. Pairs are " "returned in :abbr:`LIFO (last-in, first-out)` order." @@ -8903,7 +9044,7 @@ msgstr "" "Αφαιρεί και επιστρέφει ένα ζεύγος ``(key, value)`` από το λεξικό. Τα ζεύγη " "επιστρέφονται με τη σειρά :abbr:`LIFO (last-in, first-out)`." -#: library/stdtypes.rst:4977 +#: library/stdtypes.rst:5033 msgid "" ":meth:`popitem` is useful to destructively iterate over a dictionary, as " "often used in set algorithms. If the dictionary is empty, calling :meth:" @@ -8913,7 +9054,7 @@ msgstr "" "λεξικό, όπως χρησιμοποιείται συχνά σε αλγόριθμους συνόλου. Εάν το λεξικό " "είναι κενό, η κλήση της :meth:`popitem` κάνει raise ένα :exc:`KeyError`." -#: library/stdtypes.rst:4981 +#: library/stdtypes.rst:5037 msgid "" "LIFO order is now guaranteed. In prior versions, :meth:`popitem` would " "return an arbitrary key/value pair." @@ -8921,7 +9062,7 @@ msgstr "" "Η σειρά LIFO είναι πλέον εγγυημένη. Σε προηγούμενες εκδόσεις, η :meth:" "`popitem` επιστρέφει ένα αυθαίρετο ζεύγος κλειδιού/τιμής." -#: library/stdtypes.rst:4987 +#: library/stdtypes.rst:5043 msgid "" "Return a reverse iterator over the keys of the dictionary. This is a " "shortcut for ``reversed(d.keys())``." @@ -8929,7 +9070,7 @@ msgstr "" "Επιστρέφει έναν αντίστροφο iterator πάνω από τα κλειδιά του λεξικού. Αυτή " "είναι μια συντόμευση για ``reversed(d.keys())``." -#: library/stdtypes.rst:4994 +#: library/stdtypes.rst:5050 msgid "" "If *key* is in the dictionary, return its value. If not, insert *key* with " "a value of *default* and return *default*. *default* defaults to ``None``." @@ -8938,7 +9079,7 @@ msgstr "" "εισάγετε το *key* με τιμή *default* και επιστρέφει *default*. Το *default* " "από προεπιλογή είναι ``None``." -#: library/stdtypes.rst:5000 +#: library/stdtypes.rst:5056 msgid "" "Update the dictionary with the key/value pairs from *other*, overwriting " "existing keys. Return ``None``." @@ -8946,7 +9087,7 @@ msgstr "" "Ενημερώνει το λεξικό με τα ζεύγη κλειδιών/τιμών από το *other*, " "αντικαθιστώντας τα υπάρχοντα κλειδιά. Επιστρέφει ``None``." -#: library/stdtypes.rst:5003 +#: library/stdtypes.rst:5059 msgid "" ":meth:`update` accepts either another object with a ``keys()`` method (in " "which case :meth:`~object.__getitem__` is called with every key returned " @@ -8961,7 +9102,7 @@ msgstr "" "κλειδιών, το λεξικό ενημερώνεται στη συνέχεια με αυτά τα ζεύγη κλειδιών/" "τιμών: ``d.update(red=1, blue=2)``." -#: library/stdtypes.rst:5011 +#: library/stdtypes.rst:5067 msgid "" "Return a new view of the dictionary's values. See the :ref:`documentation " "of view objects `." @@ -8969,7 +9110,7 @@ msgstr "" "Επιστρέφει μια νέα όψη των τιμών του λεξικού. Δείτε την :ref:`documentation " "of view objects `." -#: library/stdtypes.rst:5014 +#: library/stdtypes.rst:5070 msgid "" "An equality comparison between one ``dict.values()`` view and another will " "always return ``False``. This also applies when comparing ``dict.values()`` " @@ -8979,7 +9120,7 @@ msgstr "" "επιστρέφει πάντα ``False``. Αυτό ισχύει επίσης όταν συγκρίνετε το ``dict." "values()`` με τον εαυτό της::" -#: library/stdtypes.rst:5018 +#: library/stdtypes.rst:5074 msgid "" ">>> d = {'a': 1}\n" ">>> d.values() == d.values()\n" @@ -8989,7 +9130,7 @@ msgstr "" ">>> d.values() == d.values()\n" "False" -#: library/stdtypes.rst:5024 +#: library/stdtypes.rst:5080 msgid "" "Create a new dictionary with the merged keys and values of *d* and *other*, " "which must both be dictionaries. The values of *other* take priority when " @@ -8999,7 +9140,7 @@ msgstr "" "και *other*, τα οποία πρέπει να είναι και τα δύο λεξικά. Οι τιμές του " "*other* έχουν προτεραιότητα όταν τα κλειδιά των *d* και *other* είναι κοινά." -#: library/stdtypes.rst:5032 +#: library/stdtypes.rst:5088 msgid "" "Update the dictionary *d* with keys and values from *other*, which may be " "either a :term:`mapping` or an :term:`iterable` of key/value pairs. The " @@ -9010,11 +9151,11 @@ msgstr "" "τιμές του *other* έχουν προτεραιότητα όταν τα κλειδιά των το *d* και *other* " "είναι κοινά." -#: library/stdtypes.rst:5038 +#: library/stdtypes.rst:5094 msgid "Dictionaries and dictionary views are reversible. ::" msgstr "Τα λεξικά και οι όψεις λεξικών είναι αναστρέψιμες. ::" -#: library/stdtypes.rst:5040 +#: library/stdtypes.rst:5096 msgid "" ">>> d = {\"one\": 1, \"two\": 2, \"three\": 3, \"four\": 4}\n" ">>> d\n" @@ -9036,11 +9177,11 @@ msgstr "" ">>> list(reversed(d.items()))\n" "[('four', 4), ('three', 3), ('two', 2), ('one', 1)]" -#: library/stdtypes.rst:5050 +#: library/stdtypes.rst:5106 msgid "Dictionaries are now reversible." msgstr "Τα λεξικά είναι πλέον αναστρέψιμα." -#: library/stdtypes.rst:5055 +#: library/stdtypes.rst:5111 msgid "" ":class:`types.MappingProxyType` can be used to create a read-only view of a :" "class:`dict`." @@ -9048,11 +9189,11 @@ msgstr "" "Η :class:`types.MappingProxyType` μπορεί να χρησιμοποιηθεί για τη δημιουργία " "μιας όψης μόνο για ανάγνωση μιας :class:`dict`." -#: library/stdtypes.rst:5062 +#: library/stdtypes.rst:5118 msgid "Dictionary view objects" msgstr "Αντικείμενα όψης λεξικού" -#: library/stdtypes.rst:5064 +#: library/stdtypes.rst:5120 msgid "" "The objects returned by :meth:`dict.keys`, :meth:`dict.values` and :meth:" "`dict.items` are *view objects*. They provide a dynamic view on the " @@ -9064,7 +9205,7 @@ msgstr "" "Παρέχουν μια δυναμική όψη στις εγγραφές του λεξικού, που σημαίνει ότι όταν " "αλλάζει το λεξικό, η όψη αντικατοπτρίζει αυτές τις αλλαγές." -#: library/stdtypes.rst:5069 +#: library/stdtypes.rst:5125 msgid "" "Dictionary views can be iterated over to yield their respective data, and " "support membership tests:" @@ -9072,11 +9213,11 @@ msgstr "" "Οι όψεις λεξικού μπορούν να γίνουν iterate για την απόδοση των αντίστοιχων " "δεδομένων τους και την υποστήριξη ελέγχων για το αν είναι μέρος του:" -#: library/stdtypes.rst:5074 +#: library/stdtypes.rst:5130 msgid "Return the number of entries in the dictionary." msgstr "Επιστρέφει τον αριθμό των καταχωρήσεων στο λεξικό." -#: library/stdtypes.rst:5078 +#: library/stdtypes.rst:5134 msgid "" "Return an iterator over the keys, values or items (represented as tuples of " "``(key, value)``) in the dictionary." @@ -9084,7 +9225,7 @@ msgstr "" "Επιστρέφει έναν iterator πάνω στα κλειδιά, τις τιμές ή τα στοιχεία (που " "αντιπροσωπεύονται ως πλειάδες (tuples) του ``(key, value)`` στο λεξικό." -#: library/stdtypes.rst:5081 +#: library/stdtypes.rst:5137 msgid "" "Keys and values are iterated over in insertion order. This allows the " "creation of ``(value, key)`` pairs using :func:`zip`: ``pairs = zip(d." @@ -9097,7 +9238,7 @@ msgstr "" "δημιουργήσετε την ίδια λίστα είναι ``pairs = [(v, k) for (k, v) in d." "items()]``." -#: library/stdtypes.rst:5086 +#: library/stdtypes.rst:5142 msgid "" "Iterating views while adding or deleting entries in the dictionary may raise " "a :exc:`RuntimeError` or fail to iterate over all entries." @@ -9106,11 +9247,11 @@ msgstr "" "μπορεί να κάνει raise μια :exc:`RuntimeError` ή να αποτύχει το iterate σε " "όλες τις καταχωρήσεις." -#: library/stdtypes.rst:5089 +#: library/stdtypes.rst:5145 msgid "Dictionary order is guaranteed to be insertion order." msgstr "Η σειρά λεξικού είναι εγγυημένη σειρά εισαγωγής." -#: library/stdtypes.rst:5094 +#: library/stdtypes.rst:5150 msgid "" "Return ``True`` if *x* is in the underlying dictionary's keys, values or " "items (in the latter case, *x* should be a ``(key, value)`` tuple)." @@ -9119,7 +9260,7 @@ msgstr "" "ή τα στοιχεία του υποκείμενου λεξικού (στην τελευταία περίπτωση, το *x* θα " "πρέπει να είναι μια ``(key, value)`` πλειάδα (tuple))." -#: library/stdtypes.rst:5099 +#: library/stdtypes.rst:5155 msgid "" "Return a reverse iterator over the keys, values or items of the dictionary. " "The view will be iterated in reverse order of the insertion." @@ -9128,11 +9269,11 @@ msgstr "" "στοιχεία του λεξικού. Η όψη θα γίνει iterate με την αντίστροφη σειρά από την " "εισαγωγή." -#: library/stdtypes.rst:5102 +#: library/stdtypes.rst:5158 msgid "Dictionary views are now reversible." msgstr "Οι όψεις λεξικού είναι πλέον αναστρέψιμες." -#: library/stdtypes.rst:5107 +#: library/stdtypes.rst:5163 msgid "" "Return a :class:`types.MappingProxyType` that wraps the original dictionary " "to which the view refers." @@ -9140,7 +9281,7 @@ msgstr "" "Επιστρέφει μια :class:`types.MappingProxyType` που αναδιπλώνει το αρχικό " "λεξικό στο οποίο αναφέρεται η όψη." -#: library/stdtypes.rst:5112 +#: library/stdtypes.rst:5168 msgid "" "Keys views are set-like since their entries are unique and :term:`hashable`. " "Items views also have set-like operations since the (key, value) pairs are " @@ -9166,11 +9307,11 @@ msgstr "" "όψεις που μοιάζουν με σύνολο δέχονται οποιοδήποτε iterable ως άλλο τελεστή, " "σε αντίθεση με τα σύνολα που δέχονται μόνο σύνολα ως είσοδο." -#: library/stdtypes.rst:5124 +#: library/stdtypes.rst:5180 msgid "An example of dictionary view usage::" msgstr "Ένα παράδειγμα χρήσης όψης λεξικού::" -#: library/stdtypes.rst:5126 +#: library/stdtypes.rst:5182 msgid "" ">>> dishes = {'eggs': 2, 'sausage': 1, 'bacon': 1, 'spam': 500}\n" ">>> keys = dishes.keys()\n" @@ -9248,11 +9389,11 @@ msgstr "" ">>> values.mapping['spam']\n" "500" -#: library/stdtypes.rst:5168 +#: library/stdtypes.rst:5224 msgid "Context Manager Types" msgstr "Τύποι Διαχείρισης Περιεχομένου" -#: library/stdtypes.rst:5175 +#: library/stdtypes.rst:5231 msgid "" "Python's :keyword:`with` statement supports the concept of a runtime context " "defined by a context manager. This is implemented using a pair of methods " @@ -9266,7 +9407,7 @@ msgstr "" "εισάγεται πριν από την εκτέλεση του σώματος της δήλωσης και να κάνει έξοδο " "όταν τερματιστεί η δήλωση:" -#: library/stdtypes.rst:5183 +#: library/stdtypes.rst:5239 msgid "" "Enter the runtime context and return either this object or another object " "related to the runtime context. The value returned by this method is bound " @@ -9278,7 +9419,7 @@ msgstr "" "επιστρέφεται από αυτήν την μέθοδο είναι δεσμευμένη στο αναγνωριστικό στην " "πρόταση :keyword:`!as` των δηλώσεων :keyword:`with` διαχείρισης περιεχομένου." -#: library/stdtypes.rst:5188 +#: library/stdtypes.rst:5244 msgid "" "An example of a context manager that returns itself is a :term:`file " "object`. File objects return themselves from __enter__() to allow :func:" @@ -9289,7 +9430,7 @@ msgstr "" "__enter__() για να επιτρέψουν στο :func:`open` να χρησιμοποιηθεί ως έκφραση " "περιεχομένου σε μια δήλωση :keyword:`with`." -#: library/stdtypes.rst:5192 +#: library/stdtypes.rst:5248 msgid "" "An example of a context manager that returns a related object is the one " "returned by :func:`decimal.localcontext`. These managers set the active " @@ -9306,7 +9447,7 @@ msgstr "" "πλαίσιο στο σώμα της δήλωσης :keyword:`with`, χωρίς να επηρεάζεται ο κώδικας " "εκτός της δήλωσης :keyword:`!with`." -#: library/stdtypes.rst:5202 +#: library/stdtypes.rst:5258 msgid "" "Exit the runtime context and return a Boolean flag indicating if any " "exception that occurred should be suppressed. If an exception occurred while " @@ -9321,7 +9462,7 @@ msgstr "" "και τις πληροφορίες ανίχνευσης. Διαφορετικά, και τα τρία ορίσματα είναι " "``None``." -#: library/stdtypes.rst:5207 +#: library/stdtypes.rst:5263 msgid "" "Returning a true value from this method will cause the :keyword:`with` " "statement to suppress the exception and continue execution with the " @@ -9339,7 +9480,7 @@ msgstr "" "μεθόδου θα αντικαταστήσουν κάθε εξαίρεση που προέκυψε στο σώμα της δήλωσης :" "keyword:`!with`." -#: library/stdtypes.rst:5214 +#: library/stdtypes.rst:5270 msgid "" "The exception passed in should never be reraised explicitly - instead, this " "method should return a false value to indicate that the method completed " @@ -9354,7 +9495,7 @@ msgstr "" "περιεχομένου να εντοπίζει εύκολα εάν μια μέθοδος :meth:`~object.__exit__` " "έχει πράγματι αποτύχει." -#: library/stdtypes.rst:5220 +#: library/stdtypes.rst:5276 msgid "" "Python defines several context managers to support easy thread " "synchronisation, prompt closure of files or other objects, and simpler " @@ -9369,7 +9510,7 @@ msgstr "" "τους πρωτοκόλλου διαχείρισης περιεχομένου. Δείτε το module :mod:`contextlib` " "για μερικά παραδείγματα." -#: library/stdtypes.rst:5226 +#: library/stdtypes.rst:5282 msgid "" "Python's :term:`generator`\\s and the :class:`contextlib.contextmanager` " "decorator provide a convenient way to implement these protocols. If a " @@ -9386,7 +9527,7 @@ msgstr "" "__enter__` και :meth:`~contextmanager.__exit__`, αντί του iterator που " "παράγεται από μια undecorated συνάρτηση γεννήτριας." -#: library/stdtypes.rst:5233 +#: library/stdtypes.rst:5289 msgid "" "Note that there is no specific slot for any of these methods in the type " "structure for Python objects in the Python/C API. Extension types wanting to " @@ -9401,7 +9542,7 @@ msgstr "" "της ρύθμισης στο πλαίσιο του χρόνου εκτέλεσης, η επιβάρυνση μιας απλής " "αναζήτησης κλάσης λεξικού είναι αμελητέα." -#: library/stdtypes.rst:5241 +#: library/stdtypes.rst:5297 msgid "" "Type Annotation Types --- :ref:`Generic Alias `, :ref:" "`Union `" @@ -9409,7 +9550,7 @@ msgstr "" "Τύποι Annotation τύπου --- :ref:`Generic Alias `, :ref:" "`Union `" -#: library/stdtypes.rst:5246 +#: library/stdtypes.rst:5302 msgid "" "The core built-in types for :term:`type annotations ` are :ref:" "`Generic Alias ` and :ref:`Union `." @@ -9418,11 +9559,11 @@ msgstr "" "είναι :ref:`Generic Alias ` και :ref:`Union `." -#: library/stdtypes.rst:5253 +#: library/stdtypes.rst:5309 msgid "Generic Alias Type" msgstr "Τύπος Generic Alias" -#: library/stdtypes.rst:5259 +#: library/stdtypes.rst:5315 msgid "" "``GenericAlias`` objects are generally created by :ref:`subscripting " "` a class. They are most often used with :ref:`container " @@ -9439,7 +9580,7 @@ msgstr "" "Τα αντικείμενα ``GenericAlias`` προορίζονται κυρίως για χρήση με :term:`type " "annotations `." -#: library/stdtypes.rst:5269 +#: library/stdtypes.rst:5325 msgid "" "It is generally only possible to subscript a class if the class implements " "the special method :meth:`~object.__class_getitem__`." @@ -9447,7 +9588,7 @@ msgstr "" "Γενικά είναι δυνατή η εγγραφή μιας κλάσης μόνο εάν η κλάση εφαρμόζει την " "ειδική μέθοδο :meth:`~object.__class_getitem__`." -#: library/stdtypes.rst:5272 +#: library/stdtypes.rst:5328 msgid "" "A ``GenericAlias`` object acts as a proxy for a :term:`generic type`, " "implementing *parameterized generics*." @@ -9455,7 +9596,7 @@ msgstr "" "Ένα αντικείμενο ``GenericAlias`` λειτουργεί ως διακομιστής μεσολάβησης " "(proxy) για έναν :term:`generic type`, υλοποιώντας *parameterized generics*." -#: library/stdtypes.rst:5275 +#: library/stdtypes.rst:5331 msgid "" "For a container class, the argument(s) supplied to a :ref:`subscription " "` of the class may indicate the type(s) of the elements an " @@ -9470,7 +9611,7 @@ msgstr "" "υποδηλώσει ένα :class:`set` στο οποίο όλα τα στοιχεία είναι τύπου :class:" "`bytes`." -#: library/stdtypes.rst:5281 +#: library/stdtypes.rst:5337 msgid "" "For a class which defines :meth:`~object.__class_getitem__` but is not a " "container, the argument(s) supplied to a subscription of the class will " @@ -9485,7 +9626,7 @@ msgstr "" "expressions ` μπορούν να χρησιμοποιηθούν τόσο στον τύπο δεδομένων :class:" "`str` όσο και στον τύπο δεδομένων :class:`bytes`:" -#: library/stdtypes.rst:5287 +#: library/stdtypes.rst:5343 msgid "" "If ``x = re.search('foo', 'foo')``, ``x`` will be a :ref:`re.Match ` object where the return values of ``x.group(0)`` and ``x[0]`` will " @@ -9498,7 +9639,7 @@ msgstr "" "αναπαραστήσουμε αυτό το είδος αντικειμένου σε σχολιασμούς τύπου με το " "``GenericAlias`` ``re.Match[str]``." -#: library/stdtypes.rst:5293 +#: library/stdtypes.rst:5349 msgid "" "If ``y = re.search(b'bar', b'bar')``, (note the ``b`` for :class:`bytes`), " "``y`` will also be an instance of ``re.Match``, but the return values of ``y." @@ -9513,7 +9654,7 @@ msgstr "" "ποικιλία αντικειμένων :ref:`re.Match ` με το ``re." "Match[bytes]``." -#: library/stdtypes.rst:5299 +#: library/stdtypes.rst:5355 msgid "" "``GenericAlias`` objects are instances of the class :class:`types." "GenericAlias`, which can also be used to create ``GenericAlias`` objects " @@ -9523,7 +9664,7 @@ msgstr "" "GenericAlias`, τα οποία μπορούν επίσης να χρησιμοποιηθούν για την δημιουργία " "αντικειμένων ``GenericAlias`` απευθείας." -#: library/stdtypes.rst:5305 +#: library/stdtypes.rst:5361 msgid "" "Creates a ``GenericAlias`` representing a type ``T`` parameterized by types " "*X*, *Y*, and more depending on the ``T`` used. For example, a function " @@ -9534,7 +9675,7 @@ msgstr "" "χρησιμοποιείται. Για παράδειγμα, μια συνάρτηση που αναμένει μια :class:" "`list` που περιέχει στοιχεία της :class:`float`::" -#: library/stdtypes.rst:5310 +#: library/stdtypes.rst:5366 msgid "" "def average(values: list[float]) -> float:\n" " return sum(values) / len(values)" @@ -9542,7 +9683,7 @@ msgstr "" "def average(values: list[float]) -> float:\n" " return sum(values) / len(values)" -#: library/stdtypes.rst:5313 +#: library/stdtypes.rst:5369 msgid "" "Another example for :term:`mapping` objects, using a :class:`dict`, which is " "a generic type expecting two type parameters representing the key type and " @@ -9555,7 +9696,7 @@ msgstr "" "παράδειγμα, η συνάρτηση αναμένει ένα ``dict`` με κλειδιά τύπου :class:`str` " "και τιμές τύπου :class:`int`::" -#: library/stdtypes.rst:5318 +#: library/stdtypes.rst:5374 msgid "" "def send_post_request(url: str, body: dict[str, int]) -> None:\n" " ..." @@ -9563,7 +9704,7 @@ msgstr "" "def send_post_request(url: str, body: dict[str, int]) -> None:\n" " ..." -#: library/stdtypes.rst:5321 +#: library/stdtypes.rst:5377 msgid "" "The builtin functions :func:`isinstance` and :func:`issubclass` do not " "accept ``GenericAlias`` types for their second argument::" @@ -9572,7 +9713,7 @@ msgstr "" "`issubclass` δεν δέχονται τους τύπους ``GenericAlias`` για το δεύτερο όρισμά " "τους::" -#: library/stdtypes.rst:5324 +#: library/stdtypes.rst:5380 msgid "" ">>> isinstance([1, 2], list[str])\n" "Traceback (most recent call last):\n" @@ -9584,7 +9725,7 @@ msgstr "" " File \"\", line 1, in \n" "TypeError: isinstance() argument 2 cannot be a parameterized generic" -#: library/stdtypes.rst:5329 +#: library/stdtypes.rst:5385 msgid "" "The Python runtime does not enforce :term:`type annotations `. " "This extends to generic types and their type parameters. When creating a " @@ -9599,7 +9740,7 @@ msgstr "" "τους. Για παράδειγμα, ο ακόλουθος κώδικας αποθαρρύνεται, αλλά θα εκτελεστεί " "χωρίς σφάλματα::" -#: library/stdtypes.rst:5335 +#: library/stdtypes.rst:5391 msgid "" ">>> t = list[str]\n" ">>> t([1, 2, 3])\n" @@ -9609,7 +9750,7 @@ msgstr "" ">>> t([1, 2, 3])\n" "[1, 2, 3]" -#: library/stdtypes.rst:5339 +#: library/stdtypes.rst:5395 msgid "" "Furthermore, parameterized generics erase type parameters during object " "creation::" @@ -9617,7 +9758,7 @@ msgstr "" "Επιπλέον, τα παραμετροποιημένα generics διαγράφουν τις παραμέτρους τύπου " "κατά τη δημιουργία αντικειμένου::" -#: library/stdtypes.rst:5342 +#: library/stdtypes.rst:5398 msgid "" ">>> t = list[str]\n" ">>> type(t)\n" @@ -9635,7 +9776,7 @@ msgstr "" ">>> type(l)\n" "" -#: library/stdtypes.rst:5350 +#: library/stdtypes.rst:5406 msgid "" "Calling :func:`repr` or :func:`str` on a generic shows the parameterized " "type::" @@ -9643,7 +9784,7 @@ msgstr "" "Η κλήση :func:`repr` ή :func:`str` σε ένα generic δείχνει τον " "παραμετροποιημένο τύπο::" -#: library/stdtypes.rst:5352 +#: library/stdtypes.rst:5408 msgid "" ">>> repr(list[int])\n" "'list[int]'\n" @@ -9657,7 +9798,7 @@ msgstr "" ">>> str(list[int])\n" "'list[int]'" -#: library/stdtypes.rst:5358 +#: library/stdtypes.rst:5414 msgid "" "The :meth:`~object.__getitem__` method of generic containers will raise an " "exception to disallow mistakes like ``dict[str][str]``::" @@ -9665,7 +9806,7 @@ msgstr "" "Η μέθοδος :meth:`~object.__getitem__` των generic containers θα κάνει raise " "μια εξαίρεση για την απαγόρευση λαθών όπως ``dict[str][str]``::" -#: library/stdtypes.rst:5361 +#: library/stdtypes.rst:5417 msgid "" ">>> dict[str][str]\n" "Traceback (most recent call last):\n" @@ -9677,7 +9818,7 @@ msgstr "" " ...\n" "TypeError: dict[str] is not a generic class" -#: library/stdtypes.rst:5366 +#: library/stdtypes.rst:5422 msgid "" "However, such expressions are valid when :ref:`type variables ` " "are used. The index must have as many elements as there are type variable " @@ -9688,7 +9829,7 @@ msgstr "" "στοιχεία όσα και τα στοιχεία μεταβλητής τύπου στο αντικείμενο " "``GenericAlias`` :attr:`~genericalias.__args__`. ::" -#: library/stdtypes.rst:5370 +#: library/stdtypes.rst:5426 msgid "" ">>> from typing import TypeVar\n" ">>> Y = TypeVar('Y')\n" @@ -9700,11 +9841,11 @@ msgstr "" ">>> dict[str, Y][int]\n" "dict[str, int]" -#: library/stdtypes.rst:5377 +#: library/stdtypes.rst:5433 msgid "Standard Generic Classes" msgstr "Τυπικές Γενικές Κλάσεις" -#: library/stdtypes.rst:5379 +#: library/stdtypes.rst:5435 msgid "" "The following standard library classes support parameterized generics. This " "list is non-exhaustive." @@ -9712,241 +9853,241 @@ msgstr "" "Οι ακόλουθες τυπικές κλάσεις βιβλιοθήκης υποστηρίζουν γενικά " "παραμετροποιημένα. Αυτή η λίστα δεν είναι εξαντλητική." -#: library/stdtypes.rst:5382 +#: library/stdtypes.rst:5438 msgid ":class:`tuple`" msgstr ":class:`tuple`" -#: library/stdtypes.rst:5383 +#: library/stdtypes.rst:5439 msgid ":class:`list`" msgstr ":class:`list`" -#: library/stdtypes.rst:5384 +#: library/stdtypes.rst:5440 msgid ":class:`dict`" msgstr ":class:`dict`" -#: library/stdtypes.rst:5385 +#: library/stdtypes.rst:5441 msgid ":class:`set`" msgstr ":class:`set`" -#: library/stdtypes.rst:5386 +#: library/stdtypes.rst:5442 msgid ":class:`frozenset`" msgstr ":class:`frozenset`" -#: library/stdtypes.rst:5387 +#: library/stdtypes.rst:5443 msgid ":class:`type`" msgstr ":class:`type`" -#: library/stdtypes.rst:5388 +#: library/stdtypes.rst:5444 msgid ":class:`asyncio.Future`" msgstr ":class:`asyncio.Future`" -#: library/stdtypes.rst:5389 +#: library/stdtypes.rst:5445 msgid ":class:`asyncio.Task`" msgstr ":class:`asyncio.Task`" -#: library/stdtypes.rst:5390 +#: library/stdtypes.rst:5446 msgid ":class:`collections.deque`" msgstr ":class:`collections.deque`" -#: library/stdtypes.rst:5391 +#: library/stdtypes.rst:5447 msgid ":class:`collections.defaultdict`" msgstr ":class:`collections.defaultdict`" -#: library/stdtypes.rst:5392 +#: library/stdtypes.rst:5448 msgid ":class:`collections.OrderedDict`" msgstr ":class:`collections.OrderedDict`" -#: library/stdtypes.rst:5393 +#: library/stdtypes.rst:5449 msgid ":class:`collections.Counter`" msgstr ":class:`collections.Counter`" -#: library/stdtypes.rst:5394 +#: library/stdtypes.rst:5450 msgid ":class:`collections.ChainMap`" msgstr ":class:`collections.ChainMap`" -#: library/stdtypes.rst:5395 +#: library/stdtypes.rst:5451 msgid ":class:`collections.abc.Awaitable`" msgstr ":class:`collections.abc.Awaitable`" -#: library/stdtypes.rst:5396 +#: library/stdtypes.rst:5452 msgid ":class:`collections.abc.Coroutine`" msgstr ":class:`collections.abc.Coroutine`" -#: library/stdtypes.rst:5397 +#: library/stdtypes.rst:5453 msgid ":class:`collections.abc.AsyncIterable`" msgstr ":class:`collections.abc.AsyncIterable`" -#: library/stdtypes.rst:5398 +#: library/stdtypes.rst:5454 msgid ":class:`collections.abc.AsyncIterator`" msgstr ":class:`collections.abc.AsyncIterator`" -#: library/stdtypes.rst:5399 +#: library/stdtypes.rst:5455 msgid ":class:`collections.abc.AsyncGenerator`" msgstr ":class:`collections.abc.AsyncGenerator`" -#: library/stdtypes.rst:5400 +#: library/stdtypes.rst:5456 msgid ":class:`collections.abc.Iterable`" msgstr ":class:`collections.abc.Iterable`" -#: library/stdtypes.rst:5401 +#: library/stdtypes.rst:5457 msgid ":class:`collections.abc.Iterator`" msgstr ":class:`collections.abc.Iterator`" -#: library/stdtypes.rst:5402 +#: library/stdtypes.rst:5458 msgid ":class:`collections.abc.Generator`" msgstr ":class:`collections.abc.Generator`" -#: library/stdtypes.rst:5403 +#: library/stdtypes.rst:5459 msgid ":class:`collections.abc.Reversible`" msgstr ":class:`collections.abc.Reversible`" -#: library/stdtypes.rst:5404 +#: library/stdtypes.rst:5460 msgid ":class:`collections.abc.Container`" msgstr ":class:`collections.abc.Container`" -#: library/stdtypes.rst:5405 +#: library/stdtypes.rst:5461 msgid ":class:`collections.abc.Collection`" msgstr ":class:`collections.abc.Collection`" -#: library/stdtypes.rst:5406 +#: library/stdtypes.rst:5462 msgid ":class:`collections.abc.Callable`" msgstr ":class:`collections.abc.Callable`" -#: library/stdtypes.rst:5407 +#: library/stdtypes.rst:5463 msgid ":class:`collections.abc.Set`" msgstr ":class:`collections.abc.Set`" -#: library/stdtypes.rst:5408 +#: library/stdtypes.rst:5464 msgid ":class:`collections.abc.MutableSet`" msgstr ":class:`collections.abc.MutableSet`" -#: library/stdtypes.rst:5409 +#: library/stdtypes.rst:5465 msgid ":class:`collections.abc.Mapping`" msgstr ":class:`collections.abc.Mapping`" -#: library/stdtypes.rst:5410 +#: library/stdtypes.rst:5466 msgid ":class:`collections.abc.MutableMapping`" msgstr ":class:`collections.abc.MutableMapping`" -#: library/stdtypes.rst:5411 +#: library/stdtypes.rst:5467 msgid ":class:`collections.abc.Sequence`" msgstr ":class:`collections.abc.Sequence`" -#: library/stdtypes.rst:5412 +#: library/stdtypes.rst:5468 msgid ":class:`collections.abc.MutableSequence`" msgstr ":class:`collections.abc.MutableSequence`" -#: library/stdtypes.rst:5413 +#: library/stdtypes.rst:5469 msgid ":class:`collections.abc.MappingView`" msgstr ":class:`collections.abc.MappingView`" -#: library/stdtypes.rst:5414 +#: library/stdtypes.rst:5470 msgid ":class:`collections.abc.KeysView`" msgstr ":class:`collections.abc.KeysView`" -#: library/stdtypes.rst:5415 +#: library/stdtypes.rst:5471 msgid ":class:`collections.abc.ItemsView`" msgstr ":class:`collections.abc.ItemsView`" -#: library/stdtypes.rst:5416 +#: library/stdtypes.rst:5472 msgid ":class:`collections.abc.ValuesView`" msgstr ":class:`collections.abc.ValuesView`" -#: library/stdtypes.rst:5417 +#: library/stdtypes.rst:5473 msgid ":class:`contextlib.AbstractContextManager`" msgstr ":class:`contextlib.AbstractContextManager`" -#: library/stdtypes.rst:5418 +#: library/stdtypes.rst:5474 msgid ":class:`contextlib.AbstractAsyncContextManager`" msgstr ":class:`contextlib.AbstractAsyncContextManager`" -#: library/stdtypes.rst:5419 +#: library/stdtypes.rst:5475 msgid ":class:`dataclasses.Field`" msgstr ":class:`dataclasses.Field`" -#: library/stdtypes.rst:5420 +#: library/stdtypes.rst:5476 msgid ":class:`functools.cached_property`" msgstr ":class:`functools.cached_property`" -#: library/stdtypes.rst:5421 +#: library/stdtypes.rst:5477 msgid ":class:`functools.partialmethod`" msgstr ":class:`functools.partialmethod`" -#: library/stdtypes.rst:5422 +#: library/stdtypes.rst:5478 msgid ":class:`os.PathLike`" msgstr ":class:`os.PathLike`" -#: library/stdtypes.rst:5423 +#: library/stdtypes.rst:5479 msgid ":class:`queue.LifoQueue`" msgstr ":class:`queue.LifoQueue`" -#: library/stdtypes.rst:5424 +#: library/stdtypes.rst:5480 msgid ":class:`queue.Queue`" msgstr ":class:`queue.Queue`" -#: library/stdtypes.rst:5425 +#: library/stdtypes.rst:5481 msgid ":class:`queue.PriorityQueue`" msgstr ":class:`queue.PriorityQueue`" -#: library/stdtypes.rst:5426 +#: library/stdtypes.rst:5482 msgid ":class:`queue.SimpleQueue`" msgstr ":class:`queue.SimpleQueue`" -#: library/stdtypes.rst:5427 +#: library/stdtypes.rst:5483 msgid ":ref:`re.Pattern `" msgstr ":ref:`re.Pattern `" -#: library/stdtypes.rst:5428 +#: library/stdtypes.rst:5484 msgid ":ref:`re.Match `" msgstr ":ref:`re.Match `" -#: library/stdtypes.rst:5429 +#: library/stdtypes.rst:5485 msgid ":class:`shelve.BsdDbShelf`" msgstr ":class:`shelve.BsdDbShelf`" -#: library/stdtypes.rst:5430 +#: library/stdtypes.rst:5486 msgid ":class:`shelve.DbfilenameShelf`" msgstr ":class:`shelve.DbfilenameShelf`" -#: library/stdtypes.rst:5431 +#: library/stdtypes.rst:5487 msgid ":class:`shelve.Shelf`" msgstr ":class:`shelve.Shelf`" -#: library/stdtypes.rst:5432 +#: library/stdtypes.rst:5488 msgid ":class:`types.MappingProxyType`" msgstr ":class:`types.MappingProxyType`" -#: library/stdtypes.rst:5433 +#: library/stdtypes.rst:5489 msgid ":class:`weakref.WeakKeyDictionary`" msgstr ":class:`weakref.WeakKeyDictionary`" -#: library/stdtypes.rst:5434 +#: library/stdtypes.rst:5490 msgid ":class:`weakref.WeakMethod`" msgstr ":class:`weakref.WeakMethod`" -#: library/stdtypes.rst:5435 +#: library/stdtypes.rst:5491 msgid ":class:`weakref.WeakSet`" msgstr ":class:`weakref.WeakSet`" -#: library/stdtypes.rst:5436 +#: library/stdtypes.rst:5492 msgid ":class:`weakref.WeakValueDictionary`" msgstr ":class:`weakref.WeakValueDictionary`" -#: library/stdtypes.rst:5441 +#: library/stdtypes.rst:5497 msgid "Special Attributes of ``GenericAlias`` objects" msgstr "Ειδικά Χαρακτηριστικά αντικειμένων ``GenericAlias``" -#: library/stdtypes.rst:5443 +#: library/stdtypes.rst:5499 msgid "All parameterized generics implement special read-only attributes." msgstr "" "Όλα τα παραμετροποιημένα generics εφαρμόζουν ειδικά χαρακτηριστικά μόνο για " "ανάγνωση." -#: library/stdtypes.rst:5447 +#: library/stdtypes.rst:5503 msgid "This attribute points at the non-parameterized generic class::" msgstr "Αυτό το χαρακτηριστικό δείχνει στη μη παραμετροποιημένη γενική κλάση::" -#: library/stdtypes.rst:5449 +#: library/stdtypes.rst:5505 msgid "" ">>> list[int].__origin__\n" "" @@ -9954,7 +10095,7 @@ msgstr "" ">>> list[int].__origin__\n" "" -#: library/stdtypes.rst:5455 +#: library/stdtypes.rst:5511 msgid "" "This attribute is a :class:`tuple` (possibly of length 1) of generic types " "passed to the original :meth:`~object.__class_getitem__` of the generic " @@ -9964,7 +10105,7 @@ msgstr "" "τύπων που μεταβιβάστηκαν στο αρχικό :meth:`~object.__class_getitem__` της " "generic κλάσης::" -#: library/stdtypes.rst:5459 +#: library/stdtypes.rst:5515 msgid "" ">>> dict[str, list[int]].__args__\n" "(, list[int])" @@ -9972,7 +10113,7 @@ msgstr "" ">>> dict[str, list[int]].__args__\n" "(, list[int])" -#: library/stdtypes.rst:5465 +#: library/stdtypes.rst:5521 msgid "" "This attribute is a lazily computed tuple (possibly empty) of unique type " "variables found in ``__args__``::" @@ -9980,7 +10121,7 @@ msgstr "" "Αυτό το χαρακτηριστικό είναι μία νωχελικά υπολογισμένη πλειάδα (tuple) " "(πιθανώς κενή) μεταβλητών μοναδικού τύπου που βρίσκονται στο ``__args__``::" -#: library/stdtypes.rst:5468 +#: library/stdtypes.rst:5524 msgid "" ">>> from typing import TypeVar\n" "\n" @@ -9994,7 +10135,7 @@ msgstr "" ">>> list[T].__parameters__\n" "(~T,)" -#: library/stdtypes.rst:5476 +#: library/stdtypes.rst:5532 msgid "" "A ``GenericAlias`` object with :class:`typing.ParamSpec` parameters may not " "have correct ``__parameters__`` after substitution because :class:`typing." @@ -10005,7 +10146,7 @@ msgstr "" "επειδή το :class:`typing.ParamSpec` προορίζεται κυρίως για έλεγχο στατικού " "τύπου." -#: library/stdtypes.rst:5483 +#: library/stdtypes.rst:5539 msgid "" "A boolean that is true if the alias has been unpacked using the ``*`` " "operator (see :data:`~typing.TypeVarTuple`)." @@ -10013,19 +10154,19 @@ msgstr "" "Ένα boolean που ισχύει αν το alias έχει αποσυμπιεστεί χρησιμοποιώντας τον " "τελεστή ``*`` (δείτε το :data:`~typing.TypeVarTuple`)." -#: library/stdtypes.rst:5491 +#: library/stdtypes.rst:5547 msgid ":pep:`484` - Type Hints" msgstr ":pep:`484` - Type Hints" -#: library/stdtypes.rst:5492 +#: library/stdtypes.rst:5548 msgid "Introducing Python's framework for type annotations." msgstr "Παρουσιάζοντας το framework της Python για τύπους annotations." -#: library/stdtypes.rst:5494 +#: library/stdtypes.rst:5550 msgid ":pep:`585` - Type Hinting Generics In Standard Collections" msgstr ":pep:`585` - Τύπος Generics Συμβουλών στις Τυπικές Συλλογές" -#: library/stdtypes.rst:5495 +#: library/stdtypes.rst:5551 msgid "" "Introducing the ability to natively parameterize standard-library classes, " "provided they implement the special class method :meth:`~object." @@ -10035,7 +10176,7 @@ msgstr "" "βιβλιοθήκης, υπό την προϋπόθεση ότι εφαρμόζουν τη μέθοδο ειδικής κλάσης :" "meth:`~object.__class_getitem__`." -#: library/stdtypes.rst:5499 +#: library/stdtypes.rst:5555 msgid "" ":ref:`Generics`, :ref:`user-defined generics ` and :" "class:`typing.Generic`" @@ -10043,7 +10184,7 @@ msgstr "" "Τα :ref:`Generics`, :ref:`user-defined generics ` " "και :class:`typing.Generic`" -#: library/stdtypes.rst:5500 +#: library/stdtypes.rst:5556 msgid "" "Documentation on how to implement generic classes that can be parameterized " "at runtime and understood by static type-checkers." @@ -10052,11 +10193,11 @@ msgstr "" "παραμετροποιηθούν κατά το χρόνο εκτέλεσης και να κατανοηθούν από στατικούς " "ελεγκτές τύπων." -#: library/stdtypes.rst:5509 +#: library/stdtypes.rst:5565 msgid "Union Type" msgstr "Τύπος Ένωσης" -#: library/stdtypes.rst:5515 +#: library/stdtypes.rst:5571 msgid "" "A union object holds the value of the ``|`` (bitwise or) operation on " "multiple :ref:`type objects `. These types are intended " @@ -10070,7 +10211,7 @@ msgstr "" "έκφραση τύπου ένωσης επιτρέπει την καθαρότερη σύνταξη υποδείξεων σε σύγκριση " "με την εγγραφή :class:`typing.Union`." -#: library/stdtypes.rst:5522 +#: library/stdtypes.rst:5578 msgid "" "Defines a union object which holds types *X*, *Y*, and so forth. ``X | Y`` " "means either X or Y. It is equivalent to ``typing.Union[X, Y]``. For " @@ -10082,7 +10223,7 @@ msgstr "" "``typing.Union[X, Y]``. Για παράδειγμα, η ακόλουθη συνάρτηση αναμένει ένα " "όρισμα τύπου :class:`int` or :class:`float`::" -#: library/stdtypes.rst:5527 +#: library/stdtypes.rst:5583 msgid "" "def square(number: int | float) -> int | float:\n" " return number ** 2" @@ -10090,7 +10231,7 @@ msgstr "" "def square(number: int | float) -> int | float:\n" " return number ** 2" -#: library/stdtypes.rst:5532 +#: library/stdtypes.rst:5588 msgid "" "The ``|`` operand cannot be used at runtime to define unions where one or " "more members is a forward reference. For example, ``int | \"Foo\"``, where " @@ -10105,42 +10246,42 @@ msgstr "" "εκτέλεσης. Για ενώσεις που περιλαμβάνουν μπροστινές αναφορές, παρουσιάζει " "ολόκληρη την έκφραση ως συμβολοσειρά, π.χ. ``\"int | Foo\"``." -#: library/stdtypes.rst:5540 +#: library/stdtypes.rst:5596 msgid "" "Union objects can be tested for equality with other union objects. Details:" msgstr "" "Τα αντικείμενα ένωσης μπορούν να ελεγχθούν για ισότητα με άλλα αντικείμενα " "ένωσης. Λεπτομέρειες:" -#: library/stdtypes.rst:5542 +#: library/stdtypes.rst:5598 msgid "Unions of unions are flattened::" msgstr "Οι ενώσεις των ενώσεων ισοπεδώνονται::" -#: library/stdtypes.rst:5544 +#: library/stdtypes.rst:5600 msgid "(int | str) | float == int | str | float" msgstr "(int | str) | float == int | str | float" -#: library/stdtypes.rst:5546 +#: library/stdtypes.rst:5602 msgid "Redundant types are removed::" msgstr "Οι περιττοί τύποι καταργούνται::" -#: library/stdtypes.rst:5548 +#: library/stdtypes.rst:5604 msgid "int | str | int == int | str" msgstr "int | str | int == int | str" -#: library/stdtypes.rst:5550 +#: library/stdtypes.rst:5606 msgid "When comparing unions, the order is ignored::" msgstr "Κατά τη σύγκριση των ενώσεων, η σειρά αγνοείται::" -#: library/stdtypes.rst:5552 +#: library/stdtypes.rst:5608 msgid "int | str == str | int" msgstr "int | str == str | int" -#: library/stdtypes.rst:5554 +#: library/stdtypes.rst:5610 msgid "It creates instances of :class:`typing.Union`::" msgstr "Δημιουργεί στιγμιότυπα της :class:`typing.Union`::" -#: library/stdtypes.rst:5556 +#: library/stdtypes.rst:5612 msgid "" "int | str == typing.Union[int, str]\n" "type(int | str) is typing.Union" @@ -10148,15 +10289,15 @@ msgstr "" "int | str == typing.Union[int, str]\n" "type(int | str) is typing.Union" -#: library/stdtypes.rst:5559 +#: library/stdtypes.rst:5615 msgid "Optional types can be spelled as a union with ``None``::" msgstr "Οι προαιρετικοί τύποι μπορούν να γραφτούν ως ένωση με ``None``::" -#: library/stdtypes.rst:5561 +#: library/stdtypes.rst:5617 msgid "str | None == typing.Optional[str]" msgstr "str | None == typing.Optional[str]" -#: library/stdtypes.rst:5566 +#: library/stdtypes.rst:5622 msgid "" "Calls to :func:`isinstance` and :func:`issubclass` are also supported with a " "union object::" @@ -10164,7 +10305,7 @@ msgstr "" "Οι κλήσεις σε :func:`isinstance` και :func:`issubclass` υποστηρίζονται " "επίσης με ένα αντικείμενο ένωσης::" -#: library/stdtypes.rst:5569 +#: library/stdtypes.rst:5625 msgid "" ">>> isinstance(\"\", int | str)\n" "True" @@ -10172,7 +10313,7 @@ msgstr "" ">>> isinstance(\"\", int | str)\n" "True" -#: library/stdtypes.rst:5572 +#: library/stdtypes.rst:5628 msgid "" "However, :ref:`parameterized generics ` in union objects " "cannot be checked::" @@ -10180,7 +10321,7 @@ msgstr "" "Ωστόσο, το :ref:`parameterized generics ` σε αντικείμενα " "ένωσης δεν μπορούν να ελεγχθούν::" -#: library/stdtypes.rst:5575 +#: library/stdtypes.rst:5631 msgid "" ">>> isinstance(1, int | list[int]) # short-circuit evaluation\n" "True\n" @@ -10196,7 +10337,7 @@ msgstr "" " ...\n" "TypeError: isinstance() argument 2 cannot be a parameterized generic" -#: library/stdtypes.rst:5582 +#: library/stdtypes.rst:5638 msgid "" "The user-exposed type for the union object can be accessed from :class:" "`typing.Union` and used for :func:`isinstance` checks::" @@ -10205,7 +10346,7 @@ msgstr "" "προσπελαστεί από το :data:`types.UnionType` και να χρησιμοποιηθεί για " "ελέγχους :func:`isinstance`." -#: library/stdtypes.rst:5585 +#: library/stdtypes.rst:5641 msgid "" ">>> import typing\n" ">>> isinstance(int | str, typing.Union)\n" @@ -10223,7 +10364,7 @@ msgstr "" " File \"\", line 1, in \n" "TypeError: cannot create 'typing.Union' instances" -#: library/stdtypes.rst:5594 +#: library/stdtypes.rst:5650 msgid "" "The :meth:`!__or__` method for type objects was added to support the syntax " "``X | Y``. If a metaclass implements :meth:`!__or__`, the Union may " @@ -10233,7 +10374,7 @@ msgstr "" "υποστηρίξει τη σύνταξη ``X | Y``. Εάν μια μετακλάση υλοποιεί :meth:`!" "__or__`, η Ένωση μπορεί να την παρακάμψει:" -#: library/stdtypes.rst:5598 +#: library/stdtypes.rst:5654 msgid "" ">>> class M(type):\n" "... def __or__(self, other):\n" @@ -10259,12 +10400,12 @@ msgstr "" ">>> int | C\n" "int | C" -#: library/stdtypes.rst:5614 +#: library/stdtypes.rst:5670 msgid ":pep:`604` -- PEP proposing the ``X | Y`` syntax and the Union type." msgstr "" ":pep:`604` -- Το PEP προτείνει τη σύνταξη ``X | Y`` και τον τύπο Ένωση." -#: library/stdtypes.rst:5620 +#: library/stdtypes.rst:5676 msgid "" "Union objects are now instances of :class:`typing.Union`. Previously, they " "were instances of :class:`types.UnionType`, which remains an alias for :" @@ -10274,11 +10415,11 @@ msgstr "" "Προηγουμένως, ήταν στιγμιότυπα της :class:`types.UnionType`, το οποίο " "παραμείνει ένα ψευδώνυμο για τη :class:`typing.Union`." -#: library/stdtypes.rst:5627 +#: library/stdtypes.rst:5683 msgid "Other Built-in Types" msgstr "Άλλοι Ενσωματωμένοι (built-in) Τύποι" -#: library/stdtypes.rst:5629 +#: library/stdtypes.rst:5685 msgid "" "The interpreter supports several other kinds of objects. Most of these " "support only one or two operations." @@ -10286,11 +10427,11 @@ msgstr "" "Ο διερμηνέας υποστηρίζει πολλά άλλα είδη αντικειμένων. Τα περισσότερα από " "αυτά υποστηρίζουν μόνο μία ή δύο λειτουργίες." -#: library/stdtypes.rst:5636 +#: library/stdtypes.rst:5692 msgid "Modules" msgstr "Modules" -#: library/stdtypes.rst:5638 +#: library/stdtypes.rst:5694 msgid "" "The only special operation on a module is attribute access: ``m.name``, " "where *m* is a module and *name* accesses a name defined in *m*'s symbol " @@ -10308,7 +10449,7 @@ msgstr "" "δεν απαιτεί να υπάρχει ένα αντικείμενο module με το όνομα *foo* αλλά απαιτεί " "έναν (εξωτερικό) *definition* για ένα module που ονομάζεται *foo* κάπου.)" -#: library/stdtypes.rst:5645 +#: library/stdtypes.rst:5701 msgid "" "A special attribute of every module is :attr:`~object.__dict__`. This is the " "dictionary containing the module's symbol table. Modifying this dictionary " @@ -10327,7 +10468,7 @@ msgstr "" "= {}``). Δεν συνίσταται η απευθείας τροποποίηση του :attr:`~object." "__dict__`." -#: library/stdtypes.rst:5653 +#: library/stdtypes.rst:5709 msgid "" "Modules built into the interpreter are written like this: ````. If loaded from a file, they are written as ````. Εάν φορτωθούν από ένα αρχείο, γράφονται ως " "````." -#: library/stdtypes.rst:5661 +#: library/stdtypes.rst:5717 msgid "Classes and Class Instances" msgstr "Κλάσεις και Στιγμιότυπα Κλάσης" -#: library/stdtypes.rst:5663 +#: library/stdtypes.rst:5719 msgid "See :ref:`objects` and :ref:`class` for these." msgstr "Δείτε :ref:`objects` και :ref:`class` για αυτά." -#: library/stdtypes.rst:5669 +#: library/stdtypes.rst:5725 msgid "Functions" msgstr "Συναρτήσεις" -#: library/stdtypes.rst:5671 +#: library/stdtypes.rst:5727 msgid "" "Function objects are created by function definitions. The only operation on " "a function object is to call it: ``func(argument-list)``." @@ -10358,7 +10499,7 @@ msgstr "" "λειτουργία σε ένα αντικείμενο συνάρτησης είναι να το ονομάσουμε: " "``func(argument-list)``." -#: library/stdtypes.rst:5674 +#: library/stdtypes.rst:5730 msgid "" "There are really two flavors of function objects: built-in functions and " "user-defined functions. Both support the same operation (to call the " @@ -10370,15 +10511,15 @@ msgstr "" "υποστηρίζουν την ίδια λειτουργία (για να καλέσετε τη συνάρτηση), αλλά η " "υλοποίηση είναι διαφορετική, εξ ου και οι διαφορετικοί τύποι αντικειμένων." -#: library/stdtypes.rst:5678 +#: library/stdtypes.rst:5734 msgid "See :ref:`function` for more information." msgstr "Δείτε το :ref:`function` για περισσότερες πληροφορίες." -#: library/stdtypes.rst:5684 +#: library/stdtypes.rst:5740 msgid "Methods" msgstr "Μέθοδοι" -#: library/stdtypes.rst:5688 +#: library/stdtypes.rst:5744 msgid "" "Methods are functions that are called using the attribute notation. There " "are two flavors: :ref:`built-in methods ` (such as :meth:" @@ -10391,7 +10532,7 @@ msgstr "" "method `. Οι ενσωματωμένες μέθοδοι περιγράφονται με τους " "τύπους που τις υποστηρίζουν." -#: library/stdtypes.rst:5693 +#: library/stdtypes.rst:5749 msgid "" "If you access a method (a function defined in a class namespace) through an " "instance, you get a special object: a :dfn:`bound method` (also called :ref:" @@ -10414,7 +10555,7 @@ msgstr "" "arg-2, ..., arg-n)`` είναι απολύτως ισοδύναμη με την κλήση του ``m." "__func__(m.__self__, arg-1, arg-2, ..., arg-n)``." -#: library/stdtypes.rst:5704 +#: library/stdtypes.rst:5760 msgid "" "Like :ref:`function objects `, bound method objects " "support getting arbitrary attributes. However, since method attributes are " @@ -10434,7 +10575,7 @@ msgstr "" "χαρακτηριστικό μεθόδου πρέπει να το ορίσετε ρητά στο υποκείμενο αντικείμενο " "συνάρτησης:" -#: library/stdtypes.rst:5712 +#: library/stdtypes.rst:5768 msgid "" ">>> class C:\n" "... def method(self):\n" @@ -10462,15 +10603,15 @@ msgstr "" ">>> c.method.whoami\n" "'my name is method'" -#: library/stdtypes.rst:5727 +#: library/stdtypes.rst:5783 msgid "See :ref:`instance-methods` for more information." msgstr "Δείτε το :ref:`instance-methods` για περισσότερες πληροφορίες." -#: library/stdtypes.rst:5735 +#: library/stdtypes.rst:5791 msgid "Code Objects" msgstr "Αντικείμενα Κώδικα" -#: library/stdtypes.rst:5741 +#: library/stdtypes.rst:5797 msgid "" "Code objects are used by the implementation to represent \"pseudo-compiled\" " "executable Python code such as a function body. They differ from function " @@ -10488,7 +10629,7 @@ msgstr "" "χαρακτηριστικού τους :attr:`~function.__code__`. Δείτε επίσης το module :mod:" "`code`." -#: library/stdtypes.rst:5748 +#: library/stdtypes.rst:5804 msgid "" "Accessing :attr:`~function.__code__` raises an :ref:`auditing event " "` ``object.__getattr__`` with arguments ``obj`` and " @@ -10498,7 +10639,7 @@ msgstr "" "event ` ``object.__getattr__`` με ορίσματα ``obj`` και " "``\"__code__\"``." -#: library/stdtypes.rst:5755 +#: library/stdtypes.rst:5811 msgid "" "A code object can be executed or evaluated by passing it (instead of a " "source string) to the :func:`exec` or :func:`eval` built-in functions." @@ -10507,15 +10648,15 @@ msgstr "" "(αντί για πηγαία συμβολοσειρά) στις ενσωματωμένες συναρτήσεις :func:`exec` " "ή :func:`eval`." -#: library/stdtypes.rst:5758 +#: library/stdtypes.rst:5814 msgid "See :ref:`types` for more information." msgstr "Δείτε :ref:`types` για περισσότερες πληροφορίες." -#: library/stdtypes.rst:5764 +#: library/stdtypes.rst:5820 msgid "Type Objects" msgstr "Τύποι Αντικειμένων" -#: library/stdtypes.rst:5770 +#: library/stdtypes.rst:5826 msgid "" "Type objects represent the various object types. An object's type is " "accessed by the built-in function :func:`type`. There are no special " @@ -10528,15 +10669,15 @@ msgstr "" "(standard) module :mod:`types` ορίζει ονόματα για όλους τους τυπικούς " "ενσωματωμένους τύπους." -#: library/stdtypes.rst:5775 +#: library/stdtypes.rst:5831 msgid "Types are written like this: ````." msgstr "Οι τύποι γράφονται ως εξής: ````." -#: library/stdtypes.rst:5781 +#: library/stdtypes.rst:5837 msgid "The Null Object" msgstr "Το Αντικείμενο Null" -#: library/stdtypes.rst:5783 +#: library/stdtypes.rst:5839 msgid "" "This object is returned by functions that don't explicitly return a value. " "It supports no special operations. There is exactly one null object, named " @@ -10547,15 +10688,15 @@ msgstr "" "μηδενικό αντικείμενο, που ονομάζεται ``None`` (ένα ενσωματωμένο όνομα). Το " "``type(None)()`` παράγει το ίδιο singleton." -#: library/stdtypes.rst:5787 +#: library/stdtypes.rst:5843 msgid "It is written as ``None``." msgstr "Γράφεται ως ``None``." -#: library/stdtypes.rst:5794 +#: library/stdtypes.rst:5850 msgid "The Ellipsis Object" msgstr "Το αντικείμενο Ellipsis" -#: library/stdtypes.rst:5796 +#: library/stdtypes.rst:5852 msgid "" "This object is commonly used by slicing (see :ref:`slicings`). It supports " "no special operations. There is exactly one ellipsis object, named :const:" @@ -10568,15 +10709,15 @@ msgstr "" "ενσωματωμένο όνομα). Το ``type(Ellipsis)()`` παράγει το :const:`Ellipsis` " "singleton." -#: library/stdtypes.rst:5801 +#: library/stdtypes.rst:5857 msgid "It is written as ``Ellipsis`` or ``...``." msgstr "Γράφεται ως ``Ellipsis`` ή ``...``." -#: library/stdtypes.rst:5807 +#: library/stdtypes.rst:5863 msgid "The NotImplemented Object" msgstr "Το NotImplemented Αντικείμενο" -#: library/stdtypes.rst:5809 +#: library/stdtypes.rst:5865 msgid "" "This object is returned from comparisons and binary operations when they are " "asked to operate on types they don't support. See :ref:`comparisons` for " @@ -10589,15 +10730,15 @@ msgstr "" "αντικείμενο :data:`NotImplemented`. Το :code:`type(NotImplemented)()` " "παράγει το στιγμιότυπο singleton." -#: library/stdtypes.rst:5814 +#: library/stdtypes.rst:5870 msgid "It is written as :code:`NotImplemented`." msgstr "Είναι γραμμένο ως :code:`NotImplemented`." -#: library/stdtypes.rst:5820 +#: library/stdtypes.rst:5876 msgid "Internal Objects" msgstr "Εσωτερικά Αντικείμενα" -#: library/stdtypes.rst:5822 +#: library/stdtypes.rst:5878 msgid "" "See :ref:`types` for this information. It describes :ref:`stack frame " "objects `, :ref:`traceback objects `, and " @@ -10607,11 +10748,11 @@ msgstr "" "objects `, :ref:`traceback objects `, και " "αντικείμενα τμηματοποίησης." -#: library/stdtypes.rst:5830 +#: library/stdtypes.rst:5886 msgid "Special Attributes" msgstr "Ειδικά Χαρακτηριστικά" -#: library/stdtypes.rst:5832 +#: library/stdtypes.rst:5888 msgid "" "The implementation adds a few special read-only attributes to several object " "types, where they are relevant. Some of these are not reported by the :func:" @@ -10621,14 +10762,14 @@ msgstr "" "διάφορους τύπους αντικειμένων, όπου είναι σχετικά. Ορισμένα από αυτά δεν " "αναφέρονται από την ενσωματωμένη συνάρτηση :func:`dir`." -#: library/stdtypes.rst:5839 +#: library/stdtypes.rst:5895 msgid "" "The name of the class, function, method, descriptor, or generator instance." msgstr "" "Το όνομα της κλάσης, της συνάρτησης, της μεθόδου, του descriptor ή του " "στιγμιοτύπου generator." -#: library/stdtypes.rst:5845 +#: library/stdtypes.rst:5901 msgid "" "The :term:`qualified name` of the class, function, method, descriptor, or " "generator instance." @@ -10636,18 +10777,18 @@ msgstr "" "Το :term:`qualified name` της κλάσης, της συνάρτησης, της μεθόδου, του " "descriptor, ή του στιγμιοτύπου generator." -#: library/stdtypes.rst:5853 +#: library/stdtypes.rst:5909 msgid "The name of the module in which a class or function was defined." msgstr "Το όνομα του module στο οποίο ορίστηκε μια κλάση ή μια συνάρτηση." -#: library/stdtypes.rst:5858 +#: library/stdtypes.rst:5914 msgid "" "The documentation string of a class or function, or ``None`` if undefined." msgstr "" "Η συμβολοσειρά τεκμηρίωσης μιας κλάσης ή συνάρτησης ή ``None`` εάν δεν έχει " "οριστεί." -#: library/stdtypes.rst:5863 +#: library/stdtypes.rst:5919 msgid "" "The :ref:`type parameters ` of generic classes, functions, and :" "ref:`type aliases `. For classes and functions that are not " @@ -10657,11 +10798,11 @@ msgstr "" "συναρτήσεων και :ref:`type aliases `. Για κλάσεις και " "συναρτήσεις που δεν είναι γενικές, αυτή θα είναι μια κενή πλειάδα." -#: library/stdtypes.rst:5873 +#: library/stdtypes.rst:5929 msgid "Integer string conversion length limitation" msgstr "Περιορισμός μήκους μετατροπής συμβολοσειράς ακέραιου αριθμού" -#: library/stdtypes.rst:5875 +#: library/stdtypes.rst:5931 msgid "" "CPython has a global limit for converting between :class:`int` and :class:" "`str` to mitigate denial of service attacks. This limit *only* applies to " @@ -10674,7 +10815,7 @@ msgstr "" "του δύο. Οι δεξαεξαδικές, οκταδικές, και δυαδικές μετατροπές είναι " "απεριόριστες. Το όριο μπορεί να διαμορφωθεί." -#: library/stdtypes.rst:5880 +#: library/stdtypes.rst:5936 msgid "" "The :class:`int` type in CPython is an arbitrary length number stored in " "binary form (commonly known as a \"bignum\"). There exists no algorithm that " @@ -10692,14 +10833,14 @@ msgstr "" "``int('1' * 500_000)`` μπορεί να διαρκέσει περισσότερο από ένα δευτερόλεπτο " "σε μια γρήγορη CPU." -#: library/stdtypes.rst:5887 +#: library/stdtypes.rst:5943 msgid "" "Limiting conversion size offers a practical way to avoid :cve:`2020-10735`." msgstr "" "Ο περιορισμός του μεγέθους μετατροπής προσφέρει έναν πρακτικό τρόπο αποφυγής " "του :cve:`2020-10735`." -#: library/stdtypes.rst:5889 +#: library/stdtypes.rst:5945 msgid "" "The limit is applied to the number of digit characters in the input or " "output string when a non-linear conversion algorithm would be involved. " @@ -10709,13 +10850,13 @@ msgstr "" "εισόδου ή εξόδου όταν εμπλέκεται ένας μη γραμμικός αλγόριθμος μετατροπής. " "Τα underscores και το πρόσημο δεν υπολογίζονται στο όριο." -#: library/stdtypes.rst:5893 +#: library/stdtypes.rst:5949 msgid "" "When an operation would exceed the limit, a :exc:`ValueError` is raised:" msgstr "" "Όταν μια λειτουργία υπερβαίνει το όριο, γίνεται raise μια :exc:`ValueError`:" -#: library/stdtypes.rst:5895 +#: library/stdtypes.rst:5951 msgid "" ">>> import sys\n" ">>> sys.set_int_max_str_digits(4300) # Illustrative, this is the default.\n" @@ -10759,7 +10900,7 @@ msgstr "" "7144\n" ">>> assert int(hex(i_squared), base=16) == i*i # Hexadecimal is unlimited." -#: library/stdtypes.rst:5915 +#: library/stdtypes.rst:5971 msgid "" "The default limit is 4300 digits as provided in :data:`sys.int_info." "default_max_str_digits `. The lowest limit that can be " @@ -10771,11 +10912,11 @@ msgstr "" "να διαμορφωθεί είναι 640 ψηφία όπως προβλέπεται στο :data:`sys.int_info." "str_digits_check_threshold `." -#: library/stdtypes.rst:5920 +#: library/stdtypes.rst:5976 msgid "Verification:" msgstr "Επαλήθευση:" -#: library/stdtypes.rst:5922 +#: library/stdtypes.rst:5978 msgid "" ">>> import sys\n" ">>> assert sys.int_info.default_max_str_digits == 4300, sys.int_info\n" @@ -10793,11 +10934,11 @@ msgstr "" "... '571186405732').to_bytes(53, 'big')\n" "..." -#: library/stdtypes.rst:5935 +#: library/stdtypes.rst:5991 msgid "Affected APIs" msgstr "Επηρεασμένα APIs" -#: library/stdtypes.rst:5937 +#: library/stdtypes.rst:5993 msgid "" "The limitation only applies to potentially slow conversions between :class:" "`int` and :class:`str` or :class:`bytes`:" @@ -10805,23 +10946,23 @@ msgstr "" "Ο περιορισμός ισχύει μόνο για δυνητικά αργές μετατροπές μεταξύ :class:`int` " "και :class:`str` ή :class:`bytes`:" -#: library/stdtypes.rst:5940 +#: library/stdtypes.rst:5996 msgid "``int(string)`` with default base 10." msgstr "``int(string)`` με default βάση το 10." -#: library/stdtypes.rst:5941 +#: library/stdtypes.rst:5997 msgid "``int(string, base)`` for all bases that are not a power of 2." msgstr "``int(string, base)`` για όλες τις βάσεις που δεν είναι δύναμη του 2." -#: library/stdtypes.rst:5942 +#: library/stdtypes.rst:5998 msgid "``str(integer)``." msgstr "``str(integer)``." -#: library/stdtypes.rst:5943 +#: library/stdtypes.rst:5999 msgid "``repr(integer)``." msgstr "``repr(integer)``." -#: library/stdtypes.rst:5944 +#: library/stdtypes.rst:6000 msgid "" "any other string conversion to base 10, for example ``f\"{integer}\"``, " "``\"{}\".format(integer)``, or ``b\"%d\" % integer``." @@ -10829,40 +10970,40 @@ msgstr "" "οποιαδήποτε άλλη μετατροπή συμβολοσειράς στη βάση 10, για παράδειγμα " "``f\"{integer}\"``, ``\"{}\".format(integer)``, ή ``b\"%d\" % integer``." -#: library/stdtypes.rst:5947 +#: library/stdtypes.rst:6003 msgid "The limitations do not apply to functions with a linear algorithm:" msgstr "Οι περιορισμοί δεν ισχύουν για συναρτήσεις με γραμμικό αλγόριθμο:" -#: library/stdtypes.rst:5949 +#: library/stdtypes.rst:6005 msgid "``int(string, base)`` with base 2, 4, 8, 16, or 32." msgstr "``int(string, base)`` με βάση 2, 4, 8, 16, ή 32." -#: library/stdtypes.rst:5950 +#: library/stdtypes.rst:6006 msgid ":func:`int.from_bytes` and :func:`int.to_bytes`." msgstr ":func:`int.from_bytes` και :func:`int.to_bytes`." -#: library/stdtypes.rst:5951 +#: library/stdtypes.rst:6007 msgid ":func:`hex`, :func:`oct`, :func:`bin`." msgstr ":func:`hex`, :func:`oct`, :func:`bin`." -#: library/stdtypes.rst:5952 +#: library/stdtypes.rst:6008 msgid ":ref:`formatspec` for hex, octal, and binary numbers." msgstr "" ":ref:`formatspec` για δεκαεξαδικούς, οκταδικούς και δυαδικούς αριθμούς." -#: library/stdtypes.rst:5953 +#: library/stdtypes.rst:6009 msgid ":class:`str` to :class:`float`." msgstr ":class:`str` σε :class:`float`." -#: library/stdtypes.rst:5954 +#: library/stdtypes.rst:6010 msgid ":class:`str` to :class:`decimal.Decimal`." msgstr ":class:`str` σε :class:`decimal.Decimal`." -#: library/stdtypes.rst:5957 +#: library/stdtypes.rst:6013 msgid "Configuring the limit" msgstr "Διαμόρφωση ορίου" -#: library/stdtypes.rst:5959 +#: library/stdtypes.rst:6015 msgid "" "Before Python starts up you can use an environment variable or an " "interpreter command line flag to configure the limit:" @@ -10871,7 +11012,7 @@ msgstr "" "περιβάλλοντος ή ένα δείκτη γραμμής εντολών διερμηνέα για να διαμορφώσετε το " "όριο:" -#: library/stdtypes.rst:5962 +#: library/stdtypes.rst:6018 msgid "" ":envvar:`PYTHONINTMAXSTRDIGITS`, e.g. ``PYTHONINTMAXSTRDIGITS=640 python3`` " "to set the limit to 640 or ``PYTHONINTMAXSTRDIGITS=0 python3`` to disable " @@ -10881,7 +11022,7 @@ msgstr "" "για να ορίσετε το όριο σε 640 ή ``PYTHONINTMAXSTRDIGITS=0 python3`` για να " "απενεργοποιήσετε τον περιορισμό." -#: library/stdtypes.rst:5965 +#: library/stdtypes.rst:6021 msgid "" ":option:`-X int_max_str_digits <-X>`, e.g. ``python3 -X " "int_max_str_digits=640``" @@ -10889,7 +11030,7 @@ msgstr "" ":option:`-X int_max_str_digits <-X>`, π.χ. ``python3 -X " "int_max_str_digits=640``" -#: library/stdtypes.rst:5967 +#: library/stdtypes.rst:6023 msgid "" ":data:`sys.flags.int_max_str_digits` contains the value of :envvar:" "`PYTHONINTMAXSTRDIGITS` or :option:`-X int_max_str_digits <-X>`. If both the " @@ -10904,7 +11045,7 @@ msgstr "" "επομένως χρησιμοποιήθηκε μια τιμή :data:`sys.int_info." "default_max_str_digits` κατά την προετοιμασία." -#: library/stdtypes.rst:5973 +#: library/stdtypes.rst:6029 msgid "" "From code, you can inspect the current limit and set a new one using these :" "mod:`sys` APIs:" @@ -10912,7 +11053,7 @@ msgstr "" "Από τον κώδικα, μπορείτε να επιθεωρήσετε το τρέχον όριο και να ορίσετε ένα " "νέο χρησιμοποιώντας αυτά τα :mod:`sys` APIs:" -#: library/stdtypes.rst:5976 +#: library/stdtypes.rst:6032 msgid "" ":func:`sys.get_int_max_str_digits` and :func:`sys.set_int_max_str_digits` " "are a getter and setter for the interpreter-wide limit. Subinterpreters have " @@ -10922,7 +11063,7 @@ msgstr "" "είναι ένας getter και setter για το όριο σε όλο τον διερμηνέα. Οι " "δευτερεύοντες διερμηνείς έχουν το δικό τους όριο." -#: library/stdtypes.rst:5980 +#: library/stdtypes.rst:6036 msgid "" "Information about the default and minimum can be found in :data:`sys." "int_info`:" @@ -10930,7 +11071,7 @@ msgstr "" "Πληροφορίες σχετικά με την προεπιλογή και το ελάχιστο μπορούν να βρεθούν " "στο :data:`sys.int_info`:" -#: library/stdtypes.rst:5982 +#: library/stdtypes.rst:6038 msgid "" ":data:`sys.int_info.default_max_str_digits ` is the compiled-" "in default limit." @@ -10938,7 +11079,7 @@ msgstr "" "Το :data:`sys.int_info.default_max_str_digits ` είναι το " "μεταγλωττισμένο προεπιλεγμένο όριο." -#: library/stdtypes.rst:5984 +#: library/stdtypes.rst:6040 msgid "" ":data:`sys.int_info.str_digits_check_threshold ` is the lowest " "accepted value for the limit (other than 0 which disables it)." @@ -10946,7 +11087,7 @@ msgstr "" "Το :data:`sys.int_info.str_digits_check_threshold ` είναι η " "χαμηλότερη αποδεκτή τιμή για το όριο (εκτός από το 0 που το απενεργοποιεί)." -#: library/stdtypes.rst:5991 +#: library/stdtypes.rst:6047 msgid "" "Setting a low limit *can* lead to problems. While rare, code exists that " "contains integer constants in decimal in their source that exceed the " @@ -10967,7 +11108,7 @@ msgstr "" "τον κώδικα. Μια λύση για τον πηγαίο που περιέχει τόσο μεγάλες σταθερές είναι " "να τις μετατρέψετε σε δεκαεξαδική μορφή ``0x`` καθώς δεν έχει όριο." -#: library/stdtypes.rst:6000 +#: library/stdtypes.rst:6056 msgid "" "Test your application thoroughly if you use a low limit. Ensure your tests " "run with the limit set early via the environment or flag so that it applies " @@ -10981,11 +11122,11 @@ msgstr "" "καλέσει την Python για να μεταγλωττίσει εκ των προτέρων το ``.py`` πηγαίο σε " "αρχεία ``.pyc``." -#: library/stdtypes.rst:6006 +#: library/stdtypes.rst:6062 msgid "Recommended configuration" msgstr "Προτεινόμενη διαμόρφωση" -#: library/stdtypes.rst:6008 +#: library/stdtypes.rst:6064 msgid "" "The default :data:`sys.int_info.default_max_str_digits` is expected to be " "reasonable for most applications. If your application requires a different " @@ -10998,11 +11139,11 @@ msgstr "" "τον συμβατό με τον κώδικα της έκδοσης Python, καθώς αυτά τα API προστέθηκαν " "στην ενημερωμένη έκδοση κώδικα ασφαλείας σε εκδόσεις πριν από την 3.12." -#: library/stdtypes.rst:6013 +#: library/stdtypes.rst:6069 msgid "Example::" msgstr "Παράδειγμα::" -#: library/stdtypes.rst:6015 +#: library/stdtypes.rst:6071 msgid "" ">>> import sys\n" ">>> if hasattr(sys, \"set_int_max_str_digits\"):\n" @@ -11024,15 +11165,15 @@ msgstr "" "... elif current_limit < lower_bound:\n" "... sys.set_int_max_str_digits(lower_bound)" -#: library/stdtypes.rst:6025 +#: library/stdtypes.rst:6081 msgid "If you need to disable it entirely, set it to ``0``." msgstr "Εάν πρέπει να το απενεργοποιήσετε εντελώς, ορίστε το σε ``0``." -#: library/stdtypes.rst:6029 +#: library/stdtypes.rst:6085 msgid "Footnotes" msgstr "Υποσημειώσεις" -#: library/stdtypes.rst:6030 +#: library/stdtypes.rst:6086 msgid "" "Additional information on these special methods may be found in the Python " "Reference Manual (:ref:`customization`)." @@ -11040,7 +11181,7 @@ msgstr "" "Πρόσθετε πληροφορίες σχετικά με αυτές τις ειδικές μεθόδους μπορείτε να " "βρείτε στο Εγχειρίδιο Αναφοράς Python (:ref:`customization`)." -#: library/stdtypes.rst:6033 +#: library/stdtypes.rst:6089 msgid "" "As a consequence, the list ``[1, 2]`` is considered equal to ``[1.0, 2.0]``, " "and similarly for tuples." @@ -11048,12 +11189,12 @@ msgstr "" "Σαν συνέπεια, η λίστα ``[1, 2]`` θεωρείται ίση με ``[1.0, 2.0]``, και ομοίως " "για πλειάδες (tuples)." -#: library/stdtypes.rst:6036 +#: library/stdtypes.rst:6092 msgid "They must have since the parser can't tell the type of the operands." msgstr "" "Πρέπει να έχουν, αφού ο parser δεν μπορεί να ξεχωρίσει τον τύπο των τελεστών." -#: library/stdtypes.rst:6038 +#: library/stdtypes.rst:6094 msgid "" "Cased characters are those with general category property being one of " "\"Lu\" (Letter, uppercase), \"Ll\" (Letter, lowercase), or \"Lt\" (Letter, " @@ -11063,7 +11204,7 @@ msgstr "" "είναι ένας από τους \"Lu\" (Γράμμα, κεφαλαίο), \"Ll\" (Γράμμα, πεζά), ή " "\"Lt\" (Γράμμα, κεφαλαία)." -#: library/stdtypes.rst:6041 +#: library/stdtypes.rst:6097 msgid "" "To format only a tuple you should therefore provide a singleton tuple whose " "only element is the tuple to be formatted." @@ -11076,12 +11217,12 @@ msgstr "" msgid "built-in" msgstr "ενσωματωμένοι (built-in) τύποι" -#: library/stdtypes.rst:322 library/stdtypes.rst:992 library/stdtypes.rst:1181 -#: library/stdtypes.rst:4775 library/stdtypes.rst:5766 +#: library/stdtypes.rst:322 library/stdtypes.rst:992 library/stdtypes.rst:1184 +#: library/stdtypes.rst:4831 library/stdtypes.rst:5822 msgid "types" msgstr "τύποι" -#: library/stdtypes.rst:1196 library/stdtypes.rst:4775 +#: library/stdtypes.rst:1199 library/stdtypes.rst:4831 msgid "statement" msgstr "statement" @@ -11194,11 +11335,11 @@ msgstr "is" msgid "is not" msgstr "is not" -#: library/stdtypes.rst:208 library/stdtypes.rst:1159 library/stdtypes.rst:1302 -#: library/stdtypes.rst:1425 library/stdtypes.rst:1676 -#: library/stdtypes.rst:2827 library/stdtypes.rst:4573 -#: library/stdtypes.rst:5255 library/stdtypes.rst:5686 -#: library/stdtypes.rst:5730 +#: library/stdtypes.rst:208 library/stdtypes.rst:1162 library/stdtypes.rst:1307 +#: library/stdtypes.rst:1430 library/stdtypes.rst:1681 +#: library/stdtypes.rst:2883 library/stdtypes.rst:4629 +#: library/stdtypes.rst:5311 library/stdtypes.rst:5742 +#: library/stdtypes.rst:5786 msgid "object" msgstr "αντικείμενο" @@ -11286,8 +11427,8 @@ msgstr "δυαδικό" msgid "arithmetic" msgstr "αριθμητικό" -#: library/stdtypes.rst:992 library/stdtypes.rst:4775 library/stdtypes.rst:5751 -#: library/stdtypes.rst:5766 +#: library/stdtypes.rst:992 library/stdtypes.rst:4831 library/stdtypes.rst:5807 +#: library/stdtypes.rst:5822 msgid "built-in function" msgstr "ενσωματωμένες (built-in) συναρτήσεις" @@ -11303,7 +11444,7 @@ msgstr "float" msgid "complex" msgstr "complex" -#: library/stdtypes.rst:2684 library/stdtypes.rst:3943 +#: library/stdtypes.rst:2740 library/stdtypes.rst:3999 msgid "+ (plus)" msgstr "+ (συν)" @@ -11315,11 +11456,11 @@ msgstr "τελεστής unary" msgid "binary operator" msgstr "δυαδικός τελεστής" -#: library/stdtypes.rst:2684 library/stdtypes.rst:3943 +#: library/stdtypes.rst:2740 library/stdtypes.rst:3999 msgid "- (minus)" msgstr "- (πλην)" -#: library/stdtypes.rst:2641 library/stdtypes.rst:3900 +#: library/stdtypes.rst:2697 library/stdtypes.rst:3956 msgid "* (asterisk)" msgstr "* (αστερίσκος)" @@ -11331,7 +11472,7 @@ msgstr "/ (κάθετος)" msgid "//" msgstr "//" -#: library/stdtypes.rst:2605 library/stdtypes.rst:3868 +#: library/stdtypes.rst:2661 library/stdtypes.rst:3924 msgid "% (percent)" msgstr "% (τοις εκατό)" @@ -11339,7 +11480,7 @@ msgstr "% (τοις εκατό)" msgid "**" msgstr "**" -#: library/stdtypes.rst:399 library/stdtypes.rst:1196 library/stdtypes.rst:4775 +#: library/stdtypes.rst:399 library/stdtypes.rst:1199 library/stdtypes.rst:4831 msgid "operations on" msgstr "λειτουργίες on" @@ -11347,7 +11488,7 @@ msgstr "λειτουργίες on" msgid "conjugate() (complex number method)" msgstr "conjugate() (μέθοδος μιγαδικών αριθμών)" -#: library/stdtypes.rst:1742 library/stdtypes.rst:5766 +#: library/stdtypes.rst:1747 library/stdtypes.rst:5822 msgid "module" msgstr "module" @@ -11415,7 +11556,7 @@ msgstr "τιμές" msgid "iterator protocol" msgstr "πρωτόκολλο iterator" -#: library/stdtypes.rst:5170 +#: library/stdtypes.rst:5226 msgid "protocol" msgstr "πρωτόκολλο" @@ -11423,7 +11564,7 @@ msgstr "πρωτόκολλο" msgid "iterator" msgstr "iterator" -#: library/stdtypes.rst:976 library/stdtypes.rst:1159 library/stdtypes.rst:1196 +#: library/stdtypes.rst:976 library/stdtypes.rst:1162 library/stdtypes.rst:1199 msgid "sequence" msgstr "sequence" @@ -11439,7 +11580,7 @@ msgstr "container" msgid "iteration over" msgstr "iteration over" -#: library/stdtypes.rst:4775 +#: library/stdtypes.rst:4831 msgid "len" msgstr "len" @@ -11463,11 +11604,11 @@ msgstr "λειτουργία" msgid "repetition" msgstr "επανάληψη" -#: library/stdtypes.rst:1196 +#: library/stdtypes.rst:1199 msgid "subscript" msgstr "subscript" -#: library/stdtypes.rst:1196 +#: library/stdtypes.rst:1199 msgid "slice" msgstr "slice" @@ -11495,350 +11636,350 @@ msgstr "μεταβλητή ακολουθίας" msgid "loop over" msgstr "loop over" -#: library/stdtypes.rst:1159 +#: library/stdtypes.rst:1162 msgid "immutable" msgstr "αμετάβλητο" -#: library/stdtypes.rst:1381 +#: library/stdtypes.rst:1386 msgid "tuple" msgstr "πλειάδα (tuple)" -#: library/stdtypes.rst:1159 +#: library/stdtypes.rst:1162 msgid "hash" msgstr "hash" -#: library/stdtypes.rst:1181 +#: library/stdtypes.rst:1184 msgid "mutable" msgstr "ευμετάβλητο" -#: library/stdtypes.rst:1196 library/stdtypes.rst:1302 +#: library/stdtypes.rst:1199 library/stdtypes.rst:1307 msgid "list" msgstr "λίστα" -#: library/stdtypes.rst:2808 library/stdtypes.rst:3046 -#: library/stdtypes.rst:3868 +#: library/stdtypes.rst:2864 library/stdtypes.rst:3102 +#: library/stdtypes.rst:3924 msgid "bytearray" msgstr "bytearray" -#: library/stdtypes.rst:4775 library/stdtypes.rst:5766 +#: library/stdtypes.rst:4831 library/stdtypes.rst:5822 msgid "type" msgstr "τύπος" -#: library/stdtypes.rst:1196 +#: library/stdtypes.rst:1199 msgid "assignment" msgstr "εκχώρηση" -#: library/stdtypes.rst:4775 +#: library/stdtypes.rst:4831 msgid "del" msgstr "del" -#: library/stdtypes.rst:1196 +#: library/stdtypes.rst:1199 msgid "append() (sequence method)" msgstr "append() (μέθοδος ακολουθίας)" -#: library/stdtypes.rst:1196 +#: library/stdtypes.rst:1199 msgid "clear() (sequence method)" msgstr "clear() (μέθοδος ακολουθίας)" -#: library/stdtypes.rst:1196 +#: library/stdtypes.rst:1199 msgid "copy() (sequence method)" msgstr "copy() (μέθοδος ακολουθίας)" -#: library/stdtypes.rst:1196 +#: library/stdtypes.rst:1199 msgid "extend() (sequence method)" msgstr "extend() (μέθοδος ακολουθίας)" -#: library/stdtypes.rst:1196 +#: library/stdtypes.rst:1199 msgid "insert() (sequence method)" msgstr "insert() (μέθοδος ακολουθίας)" -#: library/stdtypes.rst:1196 +#: library/stdtypes.rst:1199 msgid "pop() (sequence method)" msgstr "pop() (μέθοδος ακολουθίας)" -#: library/stdtypes.rst:1196 +#: library/stdtypes.rst:1199 msgid "remove() (sequence method)" msgstr "remove() (μέθοδος ακολουθίας)" -#: library/stdtypes.rst:1196 +#: library/stdtypes.rst:1199 msgid "reverse() (sequence method)" msgstr "reverse() (μέθοδος ακολουθίας)" -#: library/stdtypes.rst:1425 +#: library/stdtypes.rst:1430 msgid "range" msgstr "range" -#: library/stdtypes.rst:1689 library/stdtypes.rst:2459 -#: library/stdtypes.rst:2605 +#: library/stdtypes.rst:1694 library/stdtypes.rst:2515 +#: library/stdtypes.rst:2661 msgid "string" msgstr "string" -#: library/stdtypes.rst:1546 +#: library/stdtypes.rst:1551 msgid "text sequence type" msgstr "τύπος ακολουθίας κειμένου" -#: library/stdtypes.rst:1689 library/stdtypes.rst:1707 +#: library/stdtypes.rst:1694 library/stdtypes.rst:1712 msgid "str (built-in class)" msgstr "str (ενσωματωμένη (built-in) κλάση)" -#: library/stdtypes.rst:1546 +#: library/stdtypes.rst:1551 msgid "(see also string)" msgstr "(βλ. επίσης string)" -#: library/stdtypes.rst:1676 +#: library/stdtypes.rst:1681 msgid "io.StringIO" msgstr "io.StringIO" -#: library/stdtypes.rst:2800 +#: library/stdtypes.rst:2856 msgid "buffer protocol" msgstr "πρωτόκολλο buffer" -#: library/stdtypes.rst:2808 library/stdtypes.rst:3046 -#: library/stdtypes.rst:3868 +#: library/stdtypes.rst:2864 library/stdtypes.rst:3102 +#: library/stdtypes.rst:3924 msgid "bytes" msgstr "bytes" -#: library/stdtypes.rst:3046 +#: library/stdtypes.rst:3102 msgid "methods" msgstr "μέθοδοι" -#: library/stdtypes.rst:1742 +#: library/stdtypes.rst:1747 msgid "re" msgstr "re" -#: library/stdtypes.rst:3722 +#: library/stdtypes.rst:3778 msgid "universal newlines" msgstr "καθολικές νέες γραμμές" -#: library/stdtypes.rst:2273 +#: library/stdtypes.rst:2329 msgid "str.splitlines method" msgstr "μέθοδος str.splitlines" -#: library/stdtypes.rst:2459 +#: library/stdtypes.rst:2515 msgid "! formatted string literal" msgstr "! μορφοποιημένη συμβολοσειρά κυριολεκτικής μορφής" -#: library/stdtypes.rst:2459 +#: library/stdtypes.rst:2515 msgid "formatted string literals" msgstr "μορφοποιημένες συμβολοσειρές κυριολεξίας" -#: library/stdtypes.rst:2459 +#: library/stdtypes.rst:2515 msgid "! f-string" msgstr "! f-string" -#: library/stdtypes.rst:2459 +#: library/stdtypes.rst:2515 msgid "f-strings" msgstr "string" -#: library/stdtypes.rst:2459 +#: library/stdtypes.rst:2515 msgid "fstring" msgstr "fstring" -#: library/stdtypes.rst:2459 +#: library/stdtypes.rst:2515 msgid "interpolated string literal" msgstr "συμβολοσειρά κυριολεξίας με παρεμβολή" -#: library/stdtypes.rst:2459 +#: library/stdtypes.rst:2515 msgid "formatted literal" msgstr "μορφοποιημένη κυριολεξία" -#: library/stdtypes.rst:2459 +#: library/stdtypes.rst:2515 msgid "interpolated literal" msgstr "κυριολεκτικό με παρεμβολή" -#: library/stdtypes.rst:2459 +#: library/stdtypes.rst:2515 msgid "{} (curly brackets)" msgstr "{} (αγκύλες)" -#: library/stdtypes.rst:2459 +#: library/stdtypes.rst:2515 msgid "in formatted string literal" msgstr "μέσα σε μορφοποιημένη συμβολοσειρά" -#: library/stdtypes.rst:2459 +#: library/stdtypes.rst:2515 msgid "! (exclamation mark)" msgstr "! (Θαυμαστικό)" -#: library/stdtypes.rst:2459 +#: library/stdtypes.rst:2515 msgid ": (colon)" msgstr ": (άνω κάτω τελεία)" -#: library/stdtypes.rst:2459 +#: library/stdtypes.rst:2515 msgid "= (equals)" msgstr "= (ίσο)" -#: library/stdtypes.rst:2459 +#: library/stdtypes.rst:2515 msgid "for help in debugging using string literals" msgstr "για βοήθεια στην αποσφαλμάτωση μέσω κυριολεκτικών συμβολοσειρών" -#: library/stdtypes.rst:2605 +#: library/stdtypes.rst:2661 msgid "formatting, string (%)" msgstr "μορφοποίηση, string (%)" -#: library/stdtypes.rst:2605 +#: library/stdtypes.rst:2661 msgid "interpolation, string (%)" msgstr "παρεμβολή, string (%)" -#: library/stdtypes.rst:2605 +#: library/stdtypes.rst:2661 msgid "formatting, printf" msgstr "μορφοποίηση, printf" -#: library/stdtypes.rst:2605 +#: library/stdtypes.rst:2661 msgid "interpolation, printf" msgstr "παρεμβολή, printf" -#: library/stdtypes.rst:3868 +#: library/stdtypes.rst:3924 msgid "printf-style formatting" msgstr "μορφοποίηση σε στυλ printf" -#: library/stdtypes.rst:3868 +#: library/stdtypes.rst:3924 msgid "sprintf-style formatting" msgstr "μορφοποίηση σε στυλ sprintf" -#: library/stdtypes.rst:3900 +#: library/stdtypes.rst:3956 msgid "() (parentheses)" msgstr "() (παρενθέσεις)" -#: library/stdtypes.rst:2684 library/stdtypes.rst:3943 +#: library/stdtypes.rst:2740 library/stdtypes.rst:3999 msgid "in printf-style formatting" msgstr "σε μορφοποίηση σε στυλ printf" -#: library/stdtypes.rst:3900 +#: library/stdtypes.rst:3956 msgid ". (dot)" msgstr ". (τελεία)" -#: library/stdtypes.rst:3943 +#: library/stdtypes.rst:3999 msgid "# (hash)" msgstr "# (δίεση)" -#: library/stdtypes.rst:3943 +#: library/stdtypes.rst:3999 msgid "space" msgstr "διάστημα" -#: library/stdtypes.rst:2800 +#: library/stdtypes.rst:2856 msgid "binary sequence types" msgstr "τύπος δυαδικών ακολουθιών" -#: library/stdtypes.rst:2808 +#: library/stdtypes.rst:2864 msgid "memoryview" msgstr "memoryview" -#: library/stdtypes.rst:2808 +#: library/stdtypes.rst:2864 msgid "array" msgstr "πίνακας" -#: library/stdtypes.rst:3722 +#: library/stdtypes.rst:3778 msgid "bytes.splitlines method" msgstr "bytes.splitlines μέθοδος" -#: library/stdtypes.rst:3722 +#: library/stdtypes.rst:3778 msgid "bytearray.splitlines method" msgstr "bytearray.splitlines μέθοδος" -#: library/stdtypes.rst:3868 +#: library/stdtypes.rst:3924 msgid "formatting" msgstr "μορφοποίηση" -#: library/stdtypes.rst:3868 +#: library/stdtypes.rst:3924 msgid "bytes (%)" msgstr "bytes (%)" -#: library/stdtypes.rst:3868 +#: library/stdtypes.rst:3924 msgid "bytearray (%)" msgstr "bytearray (%)" -#: library/stdtypes.rst:3868 +#: library/stdtypes.rst:3924 msgid "interpolation" msgstr "μεταβολή" -#: library/stdtypes.rst:4573 +#: library/stdtypes.rst:4629 msgid "set" msgstr "set" -#: library/stdtypes.rst:4775 +#: library/stdtypes.rst:4831 msgid "mapping" msgstr "αντιστοίχιση" -#: library/stdtypes.rst:4775 +#: library/stdtypes.rst:4831 msgid "dictionary" msgstr "λεξικό" -#: library/stdtypes.rst:4885 +#: library/stdtypes.rst:4941 msgid "__missing__()" msgstr "__missing__()" -#: library/stdtypes.rst:5170 +#: library/stdtypes.rst:5226 msgid "context manager" msgstr "διαχειριστής περιεχομένου" -#: library/stdtypes.rst:5170 +#: library/stdtypes.rst:5226 msgid "context management protocol" msgstr "πρωτόκολλο διαχειριστή περιεχομένου" -#: library/stdtypes.rst:5170 +#: library/stdtypes.rst:5226 msgid "context management" msgstr "διαχείριση περιεχομένου" -#: library/stdtypes.rst:5243 +#: library/stdtypes.rst:5299 msgid "annotation" msgstr "annotation" -#: library/stdtypes.rst:5243 +#: library/stdtypes.rst:5299 msgid "type annotation; type hint" msgstr "type annotation; type hint" -#: library/stdtypes.rst:5255 +#: library/stdtypes.rst:5311 msgid "GenericAlias" msgstr "GenericAlias" -#: library/stdtypes.rst:5255 +#: library/stdtypes.rst:5311 msgid "Generic" msgstr "Generic" -#: library/stdtypes.rst:5255 +#: library/stdtypes.rst:5311 msgid "Alias" msgstr "Alias" -#: library/stdtypes.rst:5511 +#: library/stdtypes.rst:5567 msgid "Union" msgstr "Ένωση" -#: library/stdtypes.rst:5511 +#: library/stdtypes.rst:5567 msgid "union" msgstr "ένωση" -#: library/stdtypes.rst:5686 +#: library/stdtypes.rst:5742 msgid "method" msgstr "μέθοδος" -#: library/stdtypes.rst:5730 +#: library/stdtypes.rst:5786 msgid "code" msgstr "κώδικας" -#: library/stdtypes.rst:5730 +#: library/stdtypes.rst:5786 msgid "code object" msgstr "αντικείμενο κώδικα" -#: library/stdtypes.rst:5737 +#: library/stdtypes.rst:5793 msgid "compile" msgstr "compile" -#: library/stdtypes.rst:5737 +#: library/stdtypes.rst:5793 msgid "__code__ (function object attribute)" msgstr "__code__ (χαρακτηριστικό αντικείμενου συνάρτησης)" -#: library/stdtypes.rst:5751 +#: library/stdtypes.rst:5807 msgid "exec" msgstr "exec" -#: library/stdtypes.rst:5751 +#: library/stdtypes.rst:5807 msgid "eval" msgstr "eval" -#: library/stdtypes.rst:5790 +#: library/stdtypes.rst:5846 msgid "..." msgstr "..." -#: library/stdtypes.rst:5790 +#: library/stdtypes.rst:5846 msgid "ellipsis literal" msgstr "ellipsis literal" diff --git a/library/string.po b/library/string.po index 90eae22c..279c04a8 100644 --- a/library/string.po +++ b/library/string.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/stringprep.po b/library/stringprep.po index 1431a472..64fc7a67 100644 --- a/library/stringprep.po +++ b/library/stringprep.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/struct.po b/library/struct.po index 3454abd8..61513deb 100644 --- a/library/struct.po +++ b/library/struct.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-10 22:42+0200\n" "Last-Translator: Marios Giannopoulos \n" "Language-Team: PyGreece \n" diff --git a/library/subprocess.po b/library/subprocess.po index f54c8ff6..ad66274f 100644 --- a/library/subprocess.po +++ b/library/subprocess.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/sunau.po b/library/sunau.po index 3d9f20e9..b3454cf7 100644 --- a/library/sunau.po +++ b/library/sunau.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/superseded.po b/library/superseded.po index e5187654..9f50163e 100644 --- a/library/superseded.po +++ b/library/superseded.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/symtable.po b/library/symtable.po index dcac3a75..aae45843 100644 --- a/library/symtable.po +++ b/library/symtable.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/sys.monitoring.po b/library/sys.monitoring.po index 77aa744b..610e495f 100644 --- a/library/sys.monitoring.po +++ b/library/sys.monitoring.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/sys.po b/library/sys.po index d4f40dcb..d0d0311f 100644 --- a/library/sys.po +++ b/library/sys.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -42,8 +42,8 @@ msgid "" msgstr "" #: library/sys.rst:298 library/sys.rst:789 library/sys.rst:1054 -#: library/sys.rst:1891 library/sys.rst:1914 library/sys.rst:1952 -#: library/sys.rst:2196 +#: library/sys.rst:1891 library/sys.rst:1914 library/sys.rst:1959 +#: library/sys.rst:2203 msgid "Availability" msgstr "" @@ -2444,74 +2444,81 @@ msgid "" "local and remote interpreters must be the same exact version." msgstr "" -#: library/sys.rst:1942 +#: library/sys.rst:1938 +msgid "" +"When the script is executed in the remote process, an :ref:`auditing event " +"` ``sys.remote_debugger_script`` is raised with the path in the " +"remote process." +msgstr "" + +#: library/sys.rst:1949 msgid "" "Changes the :term:`filesystem encoding and error handler` to 'mbcs' and " "'replace' respectively, for consistency with versions of Python prior to 3.6." msgstr "" -#: library/sys.rst:1946 +#: library/sys.rst:1953 msgid "" "This is equivalent to defining the :envvar:`PYTHONLEGACYWINDOWSFSENCODING` " "environment variable before launching Python." msgstr "" -#: library/sys.rst:1949 +#: library/sys.rst:1956 msgid "" "See also :func:`sys.getfilesystemencoding` and :func:`sys." "getfilesystemencodeerrors`." msgstr "" -#: library/sys.rst:1955 +#: library/sys.rst:1962 msgid "" "Changing the filesystem encoding after Python startup is risky because the " "old fsencoding or paths encoded by the old fsencoding may be cached " "somewhere. Use :envvar:`PYTHONLEGACYWINDOWSFSENCODING` instead." msgstr "" -#: library/sys.rst:1959 +#: library/sys.rst:1966 msgid "See :pep:`529` for more details." msgstr "" -#: library/sys.rst:1962 +#: library/sys.rst:1969 msgid "Use :envvar:`PYTHONLEGACYWINDOWSFSENCODING` instead." msgstr "" -#: library/sys.rst:1969 +#: library/sys.rst:1976 msgid "" ":term:`File objects ` used by the interpreter for standard " "input, output and errors:" msgstr "" -#: library/sys.rst:1972 +#: library/sys.rst:1979 msgid "" "``stdin`` is used for all interactive input (including calls to :func:" "`input`);" msgstr "" -#: library/sys.rst:1974 +#: library/sys.rst:1981 msgid "" "``stdout`` is used for the output of :func:`print` and :term:`expression` " "statements and for the prompts of :func:`input`;" msgstr "" -#: library/sys.rst:1976 +#: library/sys.rst:1983 msgid "The interpreter's own prompts and its error messages go to ``stderr``." msgstr "" -#: library/sys.rst:1978 +#: library/sys.rst:1985 msgid "" "These streams are regular :term:`text files ` like those returned " "by the :func:`open` function. Their parameters are chosen as follows:" msgstr "" -#: library/sys.rst:1982 +#: library/sys.rst:1989 msgid "" "The encoding and error handling are is initialized from :c:member:`PyConfig." "stdio_encoding` and :c:member:`PyConfig.stdio_errors`." msgstr "" -#: library/sys.rst:1985 +#: library/sys.rst:1992 msgid "" "On Windows, UTF-8 is used for the console device. Non-character devices " "such as disk files and pipes use the system locale encoding (i.e. the ANSI " @@ -2522,14 +2529,14 @@ msgid "" "initially attached to a console." msgstr "" -#: library/sys.rst:1994 +#: library/sys.rst:2001 msgid "" "The special behaviour of the console can be overridden by setting the " "environment variable PYTHONLEGACYWINDOWSSTDIO before starting Python. In " "that case, the console codepages are used as for any other character device." msgstr "" -#: library/sys.rst:1999 +#: library/sys.rst:2006 msgid "" "Under all platforms, you can override the character encoding by setting the :" "envvar:`PYTHONIOENCODING` environment variable before starting Python or by " @@ -2538,7 +2545,7 @@ msgid "" "only applies when :envvar:`PYTHONLEGACYWINDOWSSTDIO` is also set." msgstr "" -#: library/sys.rst:2006 +#: library/sys.rst:2013 msgid "" "When interactive, the ``stdout`` stream is line-buffered. Otherwise, it is " "block-buffered like regular text files. The ``stderr`` stream is line-" @@ -2547,19 +2554,19 @@ msgid "" "`PYTHONUNBUFFERED` environment variable." msgstr "" -#: library/sys.rst:2012 +#: library/sys.rst:2019 msgid "" "Non-interactive ``stderr`` is now line-buffered instead of fully buffered." msgstr "" -#: library/sys.rst:2018 +#: library/sys.rst:2025 msgid "" "To write or read binary data from/to the standard streams, use the " "underlying binary :data:`~io.TextIOBase.buffer` object. For example, to " "write bytes to :data:`stdout`, use ``sys.stdout.buffer.write(b'abc')``." msgstr "" -#: library/sys.rst:2022 +#: library/sys.rst:2029 msgid "" "However, if you are writing a library (and do not control in which context " "its code will be executed), be aware that the standard streams may be " @@ -2567,7 +2574,7 @@ msgid "" "support the :attr:`!buffer` attribute." msgstr "" -#: library/sys.rst:2032 +#: library/sys.rst:2039 msgid "" "These objects contain the original values of ``stdin``, ``stderr`` and " "``stdout`` at the start of the program. They are used during finalization, " @@ -2575,7 +2582,7 @@ msgid "" "``sys.std*`` object has been redirected." msgstr "" -#: library/sys.rst:2037 +#: library/sys.rst:2044 msgid "" "It can also be used to restore the actual files to known working file " "objects in case they have been overwritten with a broken object. However, " @@ -2583,7 +2590,7 @@ msgid "" "before replacing it, and restore the saved object." msgstr "" -#: library/sys.rst:2043 +#: library/sys.rst:2050 msgid "" "Under some conditions ``stdin``, ``stdout`` and ``stderr`` as well as the " "original values ``__stdin__``, ``__stdout__`` and ``__stderr__`` can be " @@ -2591,12 +2598,12 @@ msgid "" "to a console and Python apps started with :program:`pythonw`." msgstr "" -#: library/sys.rst:2051 +#: library/sys.rst:2058 msgid "" "A frozenset of strings containing the names of standard library modules." msgstr "" -#: library/sys.rst:2053 +#: library/sys.rst:2060 msgid "" "It is the same on all platforms. Modules which are not available on some " "platforms and modules disabled at Python build are also listed. All module " @@ -2604,7 +2611,7 @@ msgid "" "modules are excluded." msgstr "" -#: library/sys.rst:2058 +#: library/sys.rst:2065 msgid "" "For packages, only the main package is listed: sub-packages and sub-modules " "are not listed. For example, the ``email`` package is listed, but the " @@ -2612,60 +2619,60 @@ msgid "" "listed." msgstr "" -#: library/sys.rst:2063 +#: library/sys.rst:2070 msgid "See also the :data:`sys.builtin_module_names` list." msgstr "" -#: library/sys.rst:2070 +#: library/sys.rst:2077 msgid "" "A :term:`named tuple` holding information about the thread implementation." msgstr "" -#: library/sys.rst:2075 +#: library/sys.rst:2082 msgid "The name of the thread implementation:" msgstr "" -#: library/sys.rst:2077 +#: library/sys.rst:2084 msgid "``\"nt\"``: Windows threads" msgstr "" -#: library/sys.rst:2078 +#: library/sys.rst:2085 msgid "``\"pthread\"``: POSIX threads" msgstr "" -#: library/sys.rst:2079 +#: library/sys.rst:2086 msgid "" "``\"pthread-stubs\"``: stub POSIX threads (on WebAssembly platforms without " "threading support)" msgstr "" -#: library/sys.rst:2081 +#: library/sys.rst:2088 msgid "``\"solaris\"``: Solaris threads" msgstr "" -#: library/sys.rst:2085 +#: library/sys.rst:2092 msgid "The name of the lock implementation:" msgstr "" -#: library/sys.rst:2087 +#: library/sys.rst:2094 msgid "``\"semaphore\"``: a lock uses a semaphore" msgstr "" -#: library/sys.rst:2088 +#: library/sys.rst:2095 msgid "``\"mutex+cond\"``: a lock uses a mutex and a condition variable" msgstr "" -#: library/sys.rst:2089 +#: library/sys.rst:2096 msgid "``None`` if this information is unknown" msgstr "" -#: library/sys.rst:2093 +#: library/sys.rst:2100 msgid "" "The name and version of the thread library. It is a string, or ``None`` if " "this information is unknown." msgstr "" -#: library/sys.rst:2101 +#: library/sys.rst:2108 msgid "" "When this variable is set to an integer value, it determines the maximum " "number of levels of traceback information printed when an unhandled " @@ -2674,73 +2681,73 @@ msgid "" "are printed." msgstr "" -#: library/sys.rst:2109 +#: library/sys.rst:2116 msgid "Handle an unraisable exception." msgstr "" -#: library/sys.rst:2111 +#: library/sys.rst:2118 msgid "" "Called when an exception has occurred but there is no way for Python to " "handle it. For example, when a destructor raises an exception or during " "garbage collection (:func:`gc.collect`)." msgstr "" -#: library/sys.rst:2115 +#: library/sys.rst:2122 msgid "The *unraisable* argument has the following attributes:" msgstr "" -#: library/sys.rst:2117 +#: library/sys.rst:2124 msgid ":attr:`!exc_type`: Exception type." msgstr "" -#: library/sys.rst:2118 +#: library/sys.rst:2125 msgid ":attr:`!exc_value`: Exception value, can be ``None``." msgstr "" -#: library/sys.rst:2119 +#: library/sys.rst:2126 msgid ":attr:`!exc_traceback`: Exception traceback, can be ``None``." msgstr "" -#: library/sys.rst:2120 +#: library/sys.rst:2127 msgid ":attr:`!err_msg`: Error message, can be ``None``." msgstr "" -#: library/sys.rst:2121 +#: library/sys.rst:2128 msgid ":attr:`!object`: Object causing the exception, can be ``None``." msgstr "" -#: library/sys.rst:2123 +#: library/sys.rst:2130 msgid "" "The default hook formats :attr:`!err_msg` and :attr:`!object` as: " "``f'{err_msg}: {object!r}'``; use \"Exception ignored in\" error message if :" "attr:`!err_msg` is ``None``." msgstr "" -#: library/sys.rst:2127 +#: library/sys.rst:2134 msgid "" ":func:`sys.unraisablehook` can be overridden to control how unraisable " "exceptions are handled." msgstr "" -#: library/sys.rst:2132 +#: library/sys.rst:2139 msgid ":func:`excepthook` which handles uncaught exceptions." msgstr "" -#: library/sys.rst:2136 +#: library/sys.rst:2143 msgid "" "Storing :attr:`!exc_value` using a custom hook can create a reference cycle. " "It should be cleared explicitly to break the reference cycle when the " "exception is no longer needed." msgstr "" -#: library/sys.rst:2140 +#: library/sys.rst:2147 msgid "" "Storing :attr:`!object` using a custom hook can resurrect it if it is set to " "an object which is being finalized. Avoid storing :attr:`!object` after the " "custom hook completes to avoid resurrecting objects." msgstr "" -#: library/sys.rst:2146 +#: library/sys.rst:2153 msgid "" "Raise an auditing event ``sys.unraisablehook`` with arguments *hook*, " "*unraisable* when an exception that cannot be handled occurs. The " @@ -2748,7 +2755,7 @@ msgid "" "hook has been set, *hook* may be ``None``." msgstr "" -#: library/sys.rst:2155 +#: library/sys.rst:2162 msgid "" "A string containing the version number of the Python interpreter plus " "additional information on the build number and compiler used. This string " @@ -2757,13 +2764,13 @@ msgid "" "functions provided by the :mod:`platform` module." msgstr "" -#: library/sys.rst:2164 +#: library/sys.rst:2171 msgid "" "The C API version for this interpreter. Programmers may find this useful " "when debugging version conflicts between Python and extension modules." msgstr "" -#: library/sys.rst:2170 +#: library/sys.rst:2177 msgid "" "A tuple containing the five components of the version number: *major*, " "*minor*, *micro*, *releaselevel*, and *serial*. All values except " @@ -2774,18 +2781,18 @@ msgid "" "version_info.major`` and so on." msgstr "" -#: library/sys.rst:2178 +#: library/sys.rst:2185 msgid "Added named component attributes." msgstr "" -#: library/sys.rst:2183 +#: library/sys.rst:2190 msgid "" "This is an implementation detail of the warnings framework; do not modify " "this value. Refer to the :mod:`warnings` module for more information on the " "warnings framework." msgstr "" -#: library/sys.rst:2190 +#: library/sys.rst:2197 msgid "" "The version number used to form registry keys on Windows platforms. This is " "stored as string resource 1000 in the Python DLL. The value is normally the " @@ -2794,20 +2801,20 @@ msgid "" "has no effect on the registry keys used by Python." msgstr "" -#: library/sys.rst:2202 +#: library/sys.rst:2209 msgid "" "Namespace containing functions and constants for register callbacks and " "controlling monitoring events. See :mod:`sys.monitoring` for details." msgstr "" -#: library/sys.rst:2208 +#: library/sys.rst:2215 msgid "" "A dictionary of the various implementation-specific flags passed through " "the :option:`-X` command-line option. Option names are either mapped to " "their values, if given explicitly, or to :const:`True`. Example:" msgstr "" -#: library/sys.rst:2212 +#: library/sys.rst:2219 msgid "" "$ ./python -Xa=b -Xc\n" "Python 3.2a3+ (py3k, Oct 16 2010, 20:14:50)\n" @@ -2819,18 +2826,18 @@ msgid "" "{'a': 'b', 'c': True}" msgstr "" -#: library/sys.rst:2224 +#: library/sys.rst:2231 msgid "" "This is a CPython-specific way of accessing options passed through :option:`-" "X`. Other implementations may export them through other means, or not at " "all." msgstr "" -#: library/sys.rst:2232 +#: library/sys.rst:2239 msgid "Citations" msgstr "" -#: library/sys.rst:2233 +#: library/sys.rst:2240 msgid "" "ISO/IEC 9899:1999. \"Programming languages -- C.\" A public draft of this " "standard is available at https://www.open-std.org/jtc1/sc22/wg14/www/docs/" diff --git a/library/sys_path_init.po b/library/sys_path_init.po index 63abc87d..f3fd2bd5 100644 --- a/library/sys_path_init.po +++ b/library/sys_path_init.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/sysconfig.po b/library/sysconfig.po index b588bd31..698835a6 100644 --- a/library/sysconfig.po +++ b/library/sysconfig.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/syslog.po b/library/syslog.po index 172168c7..94b895be 100644 --- a/library/syslog.po +++ b/library/syslog.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/tabnanny.po b/library/tabnanny.po index 47bdd9c7..7ebb27af 100644 --- a/library/tabnanny.po +++ b/library/tabnanny.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/tarfile.po b/library/tarfile.po index 612398cf..23c660be 100644 --- a/library/tarfile.po +++ b/library/tarfile.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -349,11 +349,11 @@ msgstr "" msgid "Open an lzma compressed *stream* for writing." msgstr "" -#: library/tarfile.rst:431 +#: library/tarfile.rst:440 msgid "The ``'x'`` (exclusive creation) mode was added." msgstr "" -#: library/tarfile.rst:434 library/tarfile.rst:682 +#: library/tarfile.rst:443 library/tarfile.rst:691 msgid "The *name* parameter accepts a :term:`path-like object`." msgstr "" @@ -451,124 +451,132 @@ msgid "" "directory." msgstr "" -#: library/tarfile.rst:259 +#: library/tarfile.rst:260 +msgid "" +"Raised to refuse emulating a link (hard or symbolic) by extracting another " +"archive member, when that member would be rejected by the filter location. " +"The exception that was raised to reject the replacement member is available " +"as :attr:`!BaseException.__context__`." +msgstr "" + +#: library/tarfile.rst:268 msgid "The following constants are available at the module level:" msgstr "" -#: library/tarfile.rst:263 +#: library/tarfile.rst:272 msgid "" "The default character encoding: ``'utf-8'`` on Windows, the value returned " "by :func:`sys.getfilesystemencoding` otherwise." msgstr "" -#: library/tarfile.rst:269 +#: library/tarfile.rst:278 msgid "A regular file :attr:`~TarInfo.type`." msgstr "" -#: library/tarfile.rst:273 +#: library/tarfile.rst:282 msgid "A link (inside tarfile) :attr:`~TarInfo.type`." msgstr "" -#: library/tarfile.rst:277 +#: library/tarfile.rst:286 msgid "A symbolic link :attr:`~TarInfo.type`." msgstr "" -#: library/tarfile.rst:281 +#: library/tarfile.rst:290 msgid "A character special device :attr:`~TarInfo.type`." msgstr "" -#: library/tarfile.rst:285 +#: library/tarfile.rst:294 msgid "A block special device :attr:`~TarInfo.type`." msgstr "" -#: library/tarfile.rst:289 +#: library/tarfile.rst:298 msgid "A directory :attr:`~TarInfo.type`." msgstr "" -#: library/tarfile.rst:293 +#: library/tarfile.rst:302 msgid "A FIFO special device :attr:`~TarInfo.type`." msgstr "" -#: library/tarfile.rst:297 +#: library/tarfile.rst:306 msgid "A contiguous file :attr:`~TarInfo.type`." msgstr "" -#: library/tarfile.rst:301 +#: library/tarfile.rst:310 msgid "A GNU tar longname :attr:`~TarInfo.type`." msgstr "" -#: library/tarfile.rst:305 +#: library/tarfile.rst:314 msgid "A GNU tar longlink :attr:`~TarInfo.type`." msgstr "" -#: library/tarfile.rst:309 +#: library/tarfile.rst:318 msgid "A GNU tar sparse file :attr:`~TarInfo.type`." msgstr "" -#: library/tarfile.rst:312 +#: library/tarfile.rst:321 msgid "" "Each of the following constants defines a tar archive format that the :mod:" "`tarfile` module is able to create. See section :ref:`tar-formats` for " "details." msgstr "" -#: library/tarfile.rst:319 +#: library/tarfile.rst:328 msgid "POSIX.1-1988 (ustar) format." msgstr "" -#: library/tarfile.rst:324 +#: library/tarfile.rst:333 msgid "GNU tar format." msgstr "" -#: library/tarfile.rst:329 +#: library/tarfile.rst:338 msgid "POSIX.1-2001 (pax) format." msgstr "" -#: library/tarfile.rst:334 +#: library/tarfile.rst:343 msgid "" "The default format for creating archives. This is currently :const:" "`PAX_FORMAT`." msgstr "" -#: library/tarfile.rst:336 +#: library/tarfile.rst:345 msgid "" "The default format for new archives was changed to :const:`PAX_FORMAT` from :" "const:`GNU_FORMAT`." msgstr "" -#: library/tarfile.rst:343 +#: library/tarfile.rst:352 msgid "Module :mod:`zipfile`" msgstr "" -#: library/tarfile.rst:344 +#: library/tarfile.rst:353 msgid "Documentation of the :mod:`zipfile` standard module." msgstr "" -#: library/tarfile.rst:346 +#: library/tarfile.rst:355 msgid ":ref:`archiving-operations`" msgstr "" -#: library/tarfile.rst:347 +#: library/tarfile.rst:356 msgid "" "Documentation of the higher-level archiving facilities provided by the " "standard :mod:`shutil` module." msgstr "" -#: library/tarfile.rst:350 +#: library/tarfile.rst:359 msgid "" "`GNU tar manual, Basic Tar Format `_" msgstr "" -#: library/tarfile.rst:351 +#: library/tarfile.rst:360 msgid "Documentation for tar archive files, including GNU tar extensions." msgstr "" -#: library/tarfile.rst:357 +#: library/tarfile.rst:366 msgid "TarFile Objects" msgstr "" -#: library/tarfile.rst:359 +#: library/tarfile.rst:368 msgid "" "The :class:`TarFile` object provides an interface to a tar archive. A tar " "archive is a sequence of blocks. An archive member (a stored file) is made " @@ -577,7 +585,7 @@ msgid "" "class:`TarInfo` object, see :ref:`tarinfo-objects` for details." msgstr "" -#: library/tarfile.rst:365 +#: library/tarfile.rst:374 msgid "" "A :class:`TarFile` object can be used as a context manager in a :keyword:" "`with` statement. It will automatically be closed when the block is " @@ -586,24 +594,24 @@ msgid "" "be closed. See the :ref:`tar-examples` section for a use case." msgstr "" -#: library/tarfile.rst:371 +#: library/tarfile.rst:380 msgid "Added support for the context management protocol." msgstr "" -#: library/tarfile.rst:376 +#: library/tarfile.rst:385 msgid "" "All following arguments are optional and can be accessed as instance " "attributes as well." msgstr "" -#: library/tarfile.rst:379 +#: library/tarfile.rst:388 msgid "" "*name* is the pathname of the archive. *name* may be a :term:`path-like " "object`. It can be omitted if *fileobj* is given. In this case, the file " "object's :attr:`!name` attribute is used if it exists." msgstr "" -#: library/tarfile.rst:383 +#: library/tarfile.rst:392 msgid "" "*mode* is either ``'r'`` to read from an existing archive, ``'a'`` to append " "data to an existing file, ``'w'`` to create a new file overwriting an " @@ -611,18 +619,18 @@ msgid "" "exist." msgstr "" -#: library/tarfile.rst:387 +#: library/tarfile.rst:396 msgid "" "If *fileobj* is given, it is used for reading or writing data. If it can be " "determined, *mode* is overridden by *fileobj*'s mode. *fileobj* will be used " "from position 0." msgstr "" -#: library/tarfile.rst:393 +#: library/tarfile.rst:402 msgid "*fileobj* is not closed, when :class:`TarFile` is closed." msgstr "" -#: library/tarfile.rst:395 +#: library/tarfile.rst:404 msgid "" "*format* controls the archive format for writing. It must be one of the " "constants :const:`USTAR_FORMAT`, :const:`GNU_FORMAT` or :const:`PAX_FORMAT` " @@ -630,20 +638,20 @@ msgid "" "detected, even if different formats are present in a single archive." msgstr "" -#: library/tarfile.rst:400 +#: library/tarfile.rst:409 msgid "" "The *tarinfo* argument can be used to replace the default :class:`TarInfo` " "class with a different one." msgstr "" -#: library/tarfile.rst:403 +#: library/tarfile.rst:412 msgid "" "If *dereference* is :const:`False`, add symbolic and hard links to the " "archive. If it is :const:`True`, add the content of the target files to the " "archive. This has no effect on systems that do not support symbolic links." msgstr "" -#: library/tarfile.rst:407 +#: library/tarfile.rst:416 msgid "" "If *ignore_zeros* is :const:`False`, treat an empty block as the end of the " "archive. If it is :const:`True`, skip empty (and invalid) blocks and try to " @@ -651,19 +659,19 @@ msgid "" "concatenated or damaged archives." msgstr "" -#: library/tarfile.rst:411 +#: library/tarfile.rst:420 msgid "" "*debug* can be set from ``0`` (no debug messages) up to ``3`` (all debug " "messages). The messages are written to ``sys.stderr``." msgstr "" -#: library/tarfile.rst:414 +#: library/tarfile.rst:423 msgid "" "*errorlevel* controls how extraction errors are handled, see :attr:`the " "corresponding attribute `." msgstr "" -#: library/tarfile.rst:417 +#: library/tarfile.rst:426 msgid "" "The *encoding* and *errors* arguments define the character encoding to be " "used for reading or writing the archive and how conversion errors are going " @@ -671,57 +679,57 @@ msgid "" "ref:`tar-unicode` for in-depth information." msgstr "" -#: library/tarfile.rst:422 +#: library/tarfile.rst:431 msgid "" "The *pax_headers* argument is an optional dictionary of strings which will " "be added as a pax global header if *format* is :const:`PAX_FORMAT`." msgstr "" -#: library/tarfile.rst:425 +#: library/tarfile.rst:434 msgid "" "If *stream* is set to :const:`True` then while reading the archive info " "about files in the archive are not cached, saving memory." msgstr "" -#: library/tarfile.rst:751 +#: library/tarfile.rst:760 msgid "Use ``'surrogateescape'`` as the default for the *errors* argument." msgstr "" -#: library/tarfile.rst:437 +#: library/tarfile.rst:446 msgid "Add the *stream* parameter." msgstr "" -#: library/tarfile.rst:442 +#: library/tarfile.rst:451 msgid "" "Alternative constructor. The :func:`tarfile.open` function is actually a " "shortcut to this classmethod." msgstr "" -#: library/tarfile.rst:448 +#: library/tarfile.rst:457 msgid "" "Return a :class:`TarInfo` object for member *name*. If *name* can not be " "found in the archive, :exc:`KeyError` is raised." msgstr "" -#: library/tarfile.rst:453 +#: library/tarfile.rst:462 msgid "" "If a member occurs more than once in the archive, its last occurrence is " "assumed to be the most up-to-date version." msgstr "" -#: library/tarfile.rst:459 +#: library/tarfile.rst:468 msgid "" "Return the members of the archive as a list of :class:`TarInfo` objects. The " "list has the same order as the members in the archive." msgstr "" -#: library/tarfile.rst:465 +#: library/tarfile.rst:474 msgid "" "Return the members as a list of their names. It has the same order as the " "list returned by :meth:`getmembers`." msgstr "" -#: library/tarfile.rst:471 +#: library/tarfile.rst:480 msgid "" "Print a table of contents to ``sys.stdout``. If *verbose* is :const:`False`, " "only the names of the members are printed. If it is :const:`True`, output " @@ -729,18 +737,18 @@ msgid "" "given, it must be a subset of the list returned by :meth:`getmembers`." msgstr "" -#: library/tarfile.rst:476 +#: library/tarfile.rst:485 msgid "Added the *members* parameter." msgstr "" -#: library/tarfile.rst:482 +#: library/tarfile.rst:491 msgid "" "Return the next member of the archive as a :class:`TarInfo` object, when :" "class:`TarFile` is opened for reading. Return :const:`None` if there is no " "more available." msgstr "" -#: library/tarfile.rst:489 +#: library/tarfile.rst:498 msgid "" "Extract all members from the archive to the current working directory or " "directory *path*. If optional *members* is given, it must be a subset of the " @@ -752,14 +760,14 @@ msgid "" "fail." msgstr "" -#: library/tarfile.rst:497 +#: library/tarfile.rst:506 msgid "" "If *numeric_owner* is :const:`True`, the uid and gid numbers from the " "tarfile are used to set the owner/group for the extracted files. Otherwise, " "the named values from the tarfile are used." msgstr "" -#: library/tarfile.rst:501 +#: library/tarfile.rst:510 msgid "" "The *filter* argument specifies how ``members`` are modified or rejected " "before extraction. See :ref:`tarfile-extraction-filter` for details. It is " @@ -768,11 +776,11 @@ msgid "" "secure default (3.13 and lower)." msgstr "" -#: library/tarfile.rst:510 +#: library/tarfile.rst:519 msgid "Never extract archives from untrusted sources without prior inspection." msgstr "" -#: library/tarfile.rst:512 +#: library/tarfile.rst:521 msgid "" "Since Python 3.14, the default (:func:`data `) will prevent the " "most dangerous security issues. However, it will not prevent *all* " @@ -780,23 +788,23 @@ msgid "" "section for details." msgstr "" -#: library/tarfile.rst:554 +#: library/tarfile.rst:563 msgid "Added the *numeric_owner* parameter." msgstr "" -#: library/tarfile.rst:557 +#: library/tarfile.rst:566 msgid "The *path* parameter accepts a :term:`path-like object`." msgstr "" -#: library/tarfile.rst:560 library/tarfile.rst:644 +#: library/tarfile.rst:569 library/tarfile.rst:653 msgid "Added the *filter* parameter." msgstr "" -#: library/tarfile.rst:526 +#: library/tarfile.rst:535 msgid "The *filter* parameter now defaults to ``'data'``." msgstr "" -#: library/tarfile.rst:532 +#: library/tarfile.rst:541 msgid "" "Extract a member from the archive to the current working directory, using " "its full name. Its file information is extracted as accurately as possible. " @@ -805,29 +813,29 @@ msgid "" "File attributes (owner, mtime, mode) are set unless *set_attrs* is false." msgstr "" -#: library/tarfile.rst:538 +#: library/tarfile.rst:547 msgid "" "The *numeric_owner* and *filter* arguments are the same as for :meth:" "`extractall`." msgstr "" -#: library/tarfile.rst:543 +#: library/tarfile.rst:552 msgid "" "The :meth:`extract` method does not take care of several extraction issues. " "In most cases you should consider using the :meth:`extractall` method." msgstr "" -#: library/tarfile.rst:548 +#: library/tarfile.rst:557 msgid "" "Never extract archives from untrusted sources without prior inspection. See " "the warning for :meth:`extractall` for details." msgstr "" -#: library/tarfile.rst:551 +#: library/tarfile.rst:560 msgid "Added the *set_attrs* parameter." msgstr "" -#: library/tarfile.rst:566 +#: library/tarfile.rst:575 msgid "" "Extract a member from the archive as a file object. *member* may be a " "filename or a :class:`TarInfo` object. If *member* is a regular file or a " @@ -836,17 +844,17 @@ msgid "" "the archive, :exc:`KeyError` is raised." msgstr "" -#: library/tarfile.rst:572 +#: library/tarfile.rst:581 msgid "Return an :class:`io.BufferedReader` object." msgstr "" -#: library/tarfile.rst:575 +#: library/tarfile.rst:584 msgid "" "The returned :class:`io.BufferedReader` object has the :attr:`!mode` " "attribute which is always equal to ``'rb'``." msgstr "" -#: library/tarfile.rst:582 +#: library/tarfile.rst:591 msgid "" "If *errorlevel* is ``0``, errors are ignored when using :meth:`TarFile." "extract` and :meth:`TarFile.extractall`. Nevertheless, they appear as error " @@ -856,45 +864,45 @@ msgid "" "exc:`TarError` exceptions as well." msgstr "" -#: library/tarfile.rst:590 +#: library/tarfile.rst:599 msgid "" "Some exceptions, e.g. ones caused by wrong argument types or data " "corruption, are always raised." msgstr "" -#: library/tarfile.rst:593 +#: library/tarfile.rst:602 msgid "" "Custom :ref:`extraction filters ` should raise :" "exc:`FilterError` for *fatal* errors and :exc:`ExtractError` for *non-fatal* " "ones." msgstr "" -#: library/tarfile.rst:597 +#: library/tarfile.rst:606 msgid "" "Note that when an exception is raised, the archive may be partially " "extracted. It is the user’s responsibility to clean up." msgstr "" -#: library/tarfile.rst:604 +#: library/tarfile.rst:613 msgid "" "The :ref:`extraction filter ` used as a default " "for the *filter* argument of :meth:`~TarFile.extract` and :meth:`~TarFile." "extractall`." msgstr "" -#: library/tarfile.rst:608 +#: library/tarfile.rst:617 msgid "" "The attribute may be ``None`` or a callable. String names are not allowed " "for this attribute, unlike the *filter* argument to :meth:`~TarFile.extract`." msgstr "" -#: library/tarfile.rst:612 +#: library/tarfile.rst:621 msgid "" "If ``extraction_filter`` is ``None`` (the default), extraction methods will " "use the :func:`data ` filter by default." msgstr "" -#: library/tarfile.rst:615 +#: library/tarfile.rst:624 msgid "" "The attribute may be set on instances or overridden in subclasses. It also " "is possible to set it on the ``TarFile`` class itself to set a global " @@ -904,7 +912,7 @@ msgid "" "wrapped in :func:`staticmethod` to prevent injection of a ``self`` argument." msgstr "" -#: library/tarfile.rst:625 +#: library/tarfile.rst:634 msgid "" "The default filter is set to :func:`data `, which disallows " "some dangerous features such as links to absolute paths or paths outside of " @@ -912,7 +920,7 @@ msgid "" "`fully_trusted `." msgstr "" -#: library/tarfile.rst:633 +#: library/tarfile.rst:642 msgid "" "Add the file *name* to the archive. *name* may be any type of file " "(directory, fifo, symbolic link, etc.). If given, *arcname* specifies an " @@ -925,11 +933,11 @@ msgid "" "ref:`tar-examples` for an example." msgstr "" -#: library/tarfile.rst:647 +#: library/tarfile.rst:656 msgid "Recursion adds entries in sorted order." msgstr "" -#: library/tarfile.rst:653 +#: library/tarfile.rst:662 msgid "" "Add the :class:`TarInfo` object *tarinfo* to the archive. If *tarinfo* " "represents a non zero-size regular file, the *fileobj* argument should be a :" @@ -938,11 +946,11 @@ msgid "" "meth:`gettarinfo`." msgstr "" -#: library/tarfile.rst:660 +#: library/tarfile.rst:669 msgid "*fileobj* must be given for non-zero-sized regular files." msgstr "" -#: library/tarfile.rst:665 +#: library/tarfile.rst:674 msgid "" "Create a :class:`TarInfo` object from the result of :func:`os.stat` or " "equivalent on an existing file. The file is either named by *name*, or " @@ -953,7 +961,7 @@ msgid "" "The name should be a text string." msgstr "" -#: library/tarfile.rst:674 +#: library/tarfile.rst:683 msgid "" "You can modify some of the :class:`TarInfo`’s attributes before you add it " "using :meth:`addfile`. If the file object is not an ordinary file object " @@ -963,21 +971,21 @@ msgid "" "case *arcname* could be a dummy string." msgstr "" -#: library/tarfile.rst:688 +#: library/tarfile.rst:697 msgid "" "Close the :class:`TarFile`. In write mode, two finishing zero blocks are " "appended to the archive." msgstr "" -#: library/tarfile.rst:695 +#: library/tarfile.rst:704 msgid "A dictionary containing key-value pairs of pax global headers." msgstr "" -#: library/tarfile.rst:702 +#: library/tarfile.rst:711 msgid "TarInfo Objects" msgstr "" -#: library/tarfile.rst:704 +#: library/tarfile.rst:713 msgid "" "A :class:`TarInfo` object represents one member in a :class:`TarFile`. Aside " "from storing all required attributes of a file (like file type, size, time, " @@ -985,14 +993,14 @@ msgid "" "type. It does *not* contain the file's data itself." msgstr "" -#: library/tarfile.rst:709 +#: library/tarfile.rst:718 msgid "" ":class:`TarInfo` objects are returned by :class:`TarFile`'s methods :meth:" "`~TarFile.getmember`, :meth:`~TarFile.getmembers` and :meth:`~TarFile." "gettarinfo`." msgstr "" -#: library/tarfile.rst:713 +#: library/tarfile.rst:722 msgid "" "Modifying the objects returned by :meth:`~TarFile.getmember` or :meth:" "`~TarFile.getmembers` will affect all subsequent operations on the archive. " @@ -1001,80 +1009,80 @@ msgid "" "step." msgstr "" -#: library/tarfile.rst:719 +#: library/tarfile.rst:728 msgid "" "Several attributes can be set to ``None`` to indicate that a piece of " "metadata is unused or unknown. Different :class:`TarInfo` methods handle " "``None`` differently:" msgstr "" -#: library/tarfile.rst:723 +#: library/tarfile.rst:732 msgid "" "The :meth:`~TarFile.extract` or :meth:`~TarFile.extractall` methods will " "ignore the corresponding metadata, leaving it set to a default." msgstr "" -#: library/tarfile.rst:725 +#: library/tarfile.rst:734 msgid ":meth:`~TarFile.addfile` will fail." msgstr "" -#: library/tarfile.rst:726 +#: library/tarfile.rst:735 msgid ":meth:`~TarFile.list` will print a placeholder string." msgstr "" -#: library/tarfile.rst:730 +#: library/tarfile.rst:739 msgid "Create a :class:`TarInfo` object." msgstr "" -#: library/tarfile.rst:735 +#: library/tarfile.rst:744 msgid "Create and return a :class:`TarInfo` object from string buffer *buf*." msgstr "" -#: library/tarfile.rst:737 +#: library/tarfile.rst:746 msgid "Raises :exc:`HeaderError` if the buffer is invalid." msgstr "" -#: library/tarfile.rst:742 +#: library/tarfile.rst:751 msgid "" "Read the next member from the :class:`TarFile` object *tarfile* and return " "it as a :class:`TarInfo` object." msgstr "" -#: library/tarfile.rst:748 +#: library/tarfile.rst:757 msgid "" "Create a string buffer from a :class:`TarInfo` object. For information on " "the arguments see the constructor of the :class:`TarFile` class." msgstr "" -#: library/tarfile.rst:755 +#: library/tarfile.rst:764 msgid "A ``TarInfo`` object has the following public data attributes:" msgstr "" -#: library/tarfile.rst:761 +#: library/tarfile.rst:770 msgid "Name of the archive member." msgstr "" -#: library/tarfile.rst:767 +#: library/tarfile.rst:776 msgid "Size in bytes." msgstr "" -#: library/tarfile.rst:773 +#: library/tarfile.rst:782 msgid "" "Time of last modification in seconds since the :ref:`epoch `, as in :" "attr:`os.stat_result.st_mtime`." msgstr "" -#: library/tarfile.rst:789 library/tarfile.rst:832 library/tarfile.rst:854 +#: library/tarfile.rst:798 library/tarfile.rst:841 library/tarfile.rst:863 msgid "" "Can be set to ``None`` for :meth:`~TarFile.extract` and :meth:`~TarFile." "extractall`, causing extraction to skip applying this attribute." msgstr "" -#: library/tarfile.rst:785 +#: library/tarfile.rst:794 msgid "Permission bits, as for :func:`os.chmod`." msgstr "" -#: library/tarfile.rst:795 +#: library/tarfile.rst:804 msgid "" "File type. *type* is usually one of these constants: :const:`REGTYPE`, :" "const:`AREGTYPE`, :const:`LNKTYPE`, :const:`SYMTYPE`, :const:`DIRTYPE`, :" @@ -1083,128 +1091,128 @@ msgid "" "more conveniently, use the ``is*()`` methods below." msgstr "" -#: library/tarfile.rst:805 +#: library/tarfile.rst:814 msgid "" "Name of the target file name, which is only present in :class:`TarInfo` " "objects of type :const:`LNKTYPE` and :const:`SYMTYPE`." msgstr "" -#: library/tarfile.rst:808 +#: library/tarfile.rst:817 msgid "" "For symbolic links (``SYMTYPE``), the *linkname* is relative to the " "directory that contains the link. For hard links (``LNKTYPE``), the " "*linkname* is relative to the root of the archive." msgstr "" -#: library/tarfile.rst:817 +#: library/tarfile.rst:826 msgid "User ID of the user who originally stored this member." msgstr "" -#: library/tarfile.rst:828 +#: library/tarfile.rst:837 msgid "Group ID of the user who originally stored this member." msgstr "" -#: library/tarfile.rst:839 +#: library/tarfile.rst:848 msgid "User name." msgstr "" -#: library/tarfile.rst:850 +#: library/tarfile.rst:859 msgid "Group name." msgstr "" -#: library/tarfile.rst:861 +#: library/tarfile.rst:870 msgid "Header checksum." msgstr "" -#: library/tarfile.rst:867 +#: library/tarfile.rst:876 msgid "Device major number." msgstr "" -#: library/tarfile.rst:873 +#: library/tarfile.rst:882 msgid "Device minor number." msgstr "" -#: library/tarfile.rst:879 +#: library/tarfile.rst:888 msgid "The tar header starts here." msgstr "" -#: library/tarfile.rst:885 +#: library/tarfile.rst:894 msgid "The file's data starts here." msgstr "" -#: library/tarfile.rst:890 +#: library/tarfile.rst:899 msgid "Sparse member information." msgstr "" -#: library/tarfile.rst:896 +#: library/tarfile.rst:905 msgid "" "A dictionary containing key-value pairs of an associated pax extended header." msgstr "" -#: library/tarfile.rst:904 +#: library/tarfile.rst:913 msgid "" "Return a *new* copy of the :class:`!TarInfo` object with the given " "attributes changed. For example, to return a ``TarInfo`` with the group name " "set to ``'staff'``, use::" msgstr "" -#: library/tarfile.rst:908 +#: library/tarfile.rst:917 msgid "new_tarinfo = old_tarinfo.replace(gname='staff')" msgstr "" -#: library/tarfile.rst:910 +#: library/tarfile.rst:919 msgid "" "By default, a deep copy is made. If *deep* is false, the copy is shallow, i." "e. ``pax_headers`` and any custom attributes are shared with the original " "``TarInfo`` object." msgstr "" -#: library/tarfile.rst:914 +#: library/tarfile.rst:923 msgid "A :class:`TarInfo` object also provides some convenient query methods:" msgstr "" -#: library/tarfile.rst:919 +#: library/tarfile.rst:928 msgid "Return :const:`True` if the :class:`TarInfo` object is a regular file." msgstr "" -#: library/tarfile.rst:924 +#: library/tarfile.rst:933 msgid "Same as :meth:`isfile`." msgstr "" -#: library/tarfile.rst:929 +#: library/tarfile.rst:938 msgid "Return :const:`True` if it is a directory." msgstr "" -#: library/tarfile.rst:934 +#: library/tarfile.rst:943 msgid "Return :const:`True` if it is a symbolic link." msgstr "" -#: library/tarfile.rst:939 +#: library/tarfile.rst:948 msgid "Return :const:`True` if it is a hard link." msgstr "" -#: library/tarfile.rst:944 +#: library/tarfile.rst:953 msgid "Return :const:`True` if it is a character device." msgstr "" -#: library/tarfile.rst:949 +#: library/tarfile.rst:958 msgid "Return :const:`True` if it is a block device." msgstr "" -#: library/tarfile.rst:954 +#: library/tarfile.rst:963 msgid "Return :const:`True` if it is a FIFO." msgstr "" -#: library/tarfile.rst:959 +#: library/tarfile.rst:968 msgid "" "Return :const:`True` if it is one of character device, block device or FIFO." msgstr "" -#: library/tarfile.rst:965 +#: library/tarfile.rst:974 msgid "Extraction filters" msgstr "" -#: library/tarfile.rst:969 +#: library/tarfile.rst:978 msgid "" "The *tar* format is designed to capture all details of a UNIX-like " "filesystem, which makes it very powerful. Unfortunately, the features make " @@ -1214,71 +1222,71 @@ msgid "" "components, or symlinks that affect later members)." msgstr "" -#: library/tarfile.rst:977 +#: library/tarfile.rst:986 msgid "" "In most cases, the full functionality is not needed. Therefore, *tarfile* " "supports extraction filters: a mechanism to limit functionality, and thus " "mitigate some of the security issues." msgstr "" -#: library/tarfile.rst:983 +#: library/tarfile.rst:992 msgid "" "None of the available filters blocks *all* dangerous archive features. Never " "extract archives from untrusted sources without prior inspection. See also :" "ref:`tarfile-further-verification`." msgstr "" -#: library/tarfile.rst:989 +#: library/tarfile.rst:998 msgid ":pep:`706`" msgstr "" -#: library/tarfile.rst:990 +#: library/tarfile.rst:999 msgid "Contains further motivation and rationale behind the design." msgstr "" -#: library/tarfile.rst:992 +#: library/tarfile.rst:1001 msgid "" "The *filter* argument to :meth:`TarFile.extract` or :meth:`~TarFile." "extractall` can be:" msgstr "" -#: library/tarfile.rst:995 +#: library/tarfile.rst:1004 msgid "" "the string ``'fully_trusted'``: Honor all metadata as specified in the " "archive. Should be used if the user trusts the archive completely, or " "implements their own complex verification." msgstr "" -#: library/tarfile.rst:1000 +#: library/tarfile.rst:1009 msgid "" "the string ``'tar'``: Honor most *tar*-specific features (i.e. features of " "UNIX-like filesystems), but block features that are very likely to be " "surprising or malicious. See :func:`tar_filter` for details." msgstr "" -#: library/tarfile.rst:1004 +#: library/tarfile.rst:1013 msgid "" "the string ``'data'``: Ignore or block most features specific to UNIX-like " "filesystems. Intended for extracting cross-platform data archives. See :func:" "`data_filter` for details." msgstr "" -#: library/tarfile.rst:1008 +#: library/tarfile.rst:1017 msgid "``None`` (default): Use :attr:`TarFile.extraction_filter`." msgstr "" -#: library/tarfile.rst:1010 +#: library/tarfile.rst:1019 msgid "" "If that is also ``None`` (the default), the ``'data'`` filter will be used." msgstr "" -#: library/tarfile.rst:1014 +#: library/tarfile.rst:1023 msgid "" "The default filter is set to :func:`data `. Previously, the " "default was equivalent to :func:`fully_trusted `." msgstr "" -#: library/tarfile.rst:1018 +#: library/tarfile.rst:1027 msgid "" "A callable which will be called for each extracted member with a :ref:" "`TarInfo ` describing the member and the destination path " @@ -1286,27 +1294,27 @@ msgid "" "members)::" msgstr "" -#: library/tarfile.rst:1023 +#: library/tarfile.rst:1032 msgid "filter(member: TarInfo, path: str, /) -> TarInfo | None" msgstr "" -#: library/tarfile.rst:1025 +#: library/tarfile.rst:1034 msgid "" "The callable is called just before each member is extracted, so it can take " "the current state of the disk into account. It can:" msgstr "" -#: library/tarfile.rst:1029 +#: library/tarfile.rst:1038 msgid "" "return a :class:`TarInfo` object which will be used instead of the metadata " "in the archive, or" msgstr "" -#: library/tarfile.rst:1031 +#: library/tarfile.rst:1040 msgid "return ``None``, in which case the member will be skipped, or" msgstr "" -#: library/tarfile.rst:1032 +#: library/tarfile.rst:1041 msgid "" "raise an exception to abort the operation or skip the member, depending on :" "attr:`~TarFile.errorlevel`. Note that when extraction is aborted, :meth:" @@ -1314,124 +1322,136 @@ msgid "" "attempt to clean up." msgstr "" -#: library/tarfile.rst:1038 +#: library/tarfile.rst:1047 msgid "Default named filters" msgstr "" -#: library/tarfile.rst:1040 +#: library/tarfile.rst:1049 msgid "" "The pre-defined, named filters are available as functions, so they can be " "reused in custom filters:" msgstr "" -#: library/tarfile.rst:1045 +#: library/tarfile.rst:1054 msgid "Return *member* unchanged." msgstr "" -#: library/tarfile.rst:1047 +#: library/tarfile.rst:1056 msgid "This implements the ``'fully_trusted'`` filter." msgstr "" -#: library/tarfile.rst:1051 +#: library/tarfile.rst:1060 msgid "Implements the ``'tar'`` filter." msgstr "" -#: library/tarfile.rst:1053 +#: library/tarfile.rst:1062 msgid "Strip leading slashes (``/`` and :data:`os.sep`) from filenames." msgstr "" -#: library/tarfile.rst:1054 +#: library/tarfile.rst:1063 msgid "" ":ref:`Refuse ` to extract files with absolute " "paths (in case the name is absolute even after stripping slashes, e.g. ``C:/" "foo`` on Windows). This raises :class:`~tarfile.AbsolutePathError`." msgstr "" -#: library/tarfile.rst:1058 +#: library/tarfile.rst:1067 msgid "" ":ref:`Refuse ` to extract files whose absolute " "path (after following symlinks) would end up outside the destination. This " "raises :class:`~tarfile.OutsideDestinationError`." msgstr "" -#: library/tarfile.rst:1061 +#: library/tarfile.rst:1070 msgid "" "Clear high mode bits (setuid, setgid, sticky) and group/other write bits (:" "const:`~stat.S_IWGRP` | :const:`~stat.S_IWOTH`)." msgstr "" -#: library/tarfile.rst:1097 +#: library/tarfile.rst:1112 msgid "Return the modified ``TarInfo`` member." msgstr "" -#: library/tarfile.rst:1068 +#: library/tarfile.rst:1077 msgid "" "Implements the ``'data'`` filter. In addition to what ``tar_filter`` does:" msgstr "" -#: library/tarfile.rst:1071 +#: library/tarfile.rst:1080 +msgid "" +"Normalize link targets (:attr:`TarInfo.linkname`) using :func:`os.path." +"normpath`. Note that this removes internal ``..`` components, which may " +"change the meaning of the link if the path in :attr:`!TarInfo.linkname` " +"traverses symbolic links." +msgstr "" + +#: library/tarfile.rst:1086 msgid "" ":ref:`Refuse ` to extract links (hard or soft) " "that link to absolute paths, or ones that link outside the destination." msgstr "" -#: library/tarfile.rst:1074 +#: library/tarfile.rst:1089 msgid "" "This raises :class:`~tarfile.AbsoluteLinkError` or :class:`~tarfile." "LinkOutsideDestinationError`." msgstr "" -#: library/tarfile.rst:1077 +#: library/tarfile.rst:1092 msgid "" "Note that such files are refused even on platforms that do not support " "symbolic links." msgstr "" -#: library/tarfile.rst:1080 +#: library/tarfile.rst:1095 msgid "" ":ref:`Refuse ` to extract device files (including " "pipes). This raises :class:`~tarfile.SpecialFileError`." msgstr "" -#: library/tarfile.rst:1084 +#: library/tarfile.rst:1099 msgid "For regular files, including hard links:" msgstr "" -#: library/tarfile.rst:1086 +#: library/tarfile.rst:1101 msgid "" "Set the owner read and write permissions (:const:`~stat.S_IRUSR` | :const:" "`~stat.S_IWUSR`)." msgstr "" -#: library/tarfile.rst:1088 +#: library/tarfile.rst:1103 msgid "" "Remove the group & other executable permission (:const:`~stat.S_IXGRP` | :" "const:`~stat.S_IXOTH`) if the owner doesn’t have it (:const:`~stat.S_IXUSR`)." msgstr "" -#: library/tarfile.rst:1092 +#: library/tarfile.rst:1107 msgid "" "For other files (directories), set ``mode`` to ``None``, so that extraction " "methods skip applying permission bits." msgstr "" -#: library/tarfile.rst:1094 +#: library/tarfile.rst:1109 msgid "" "Set user and group info (``uid``, ``gid``, ``uname``, ``gname``) to " "``None``, so that extraction methods skip setting it." msgstr "" -#: library/tarfile.rst:1099 +#: library/tarfile.rst:1114 msgid "" "Note that this filter does not block *all* dangerous archive features. See :" "ref:`tarfile-further-verification` for details." msgstr "" -#: library/tarfile.rst:1106 +#: library/tarfile.rst:1119 +msgid "Link targets are now normalized." +msgstr "" + +#: library/tarfile.rst:1125 msgid "Filter errors" msgstr "" -#: library/tarfile.rst:1108 +#: library/tarfile.rst:1127 msgid "" "When a filter refuses to extract a file, it will raise an appropriate " "exception, a subclass of :class:`~tarfile.FilterError`. This will abort the " @@ -1440,11 +1460,11 @@ msgid "" "continue." msgstr "" -#: library/tarfile.rst:1118 +#: library/tarfile.rst:1137 msgid "Hints for further verification" msgstr "" -#: library/tarfile.rst:1120 +#: library/tarfile.rst:1139 msgid "" "Even with ``filter='data'``, *tarfile* is not suited for extracting " "untrusted files without prior inspection. Among other issues, the pre-" @@ -1452,69 +1472,73 @@ msgid "" "additional checks." msgstr "" -#: library/tarfile.rst:1125 +#: library/tarfile.rst:1144 msgid "Here is an incomplete list of things to consider:" msgstr "" -#: library/tarfile.rst:1127 +#: library/tarfile.rst:1146 msgid "" "Extract to a :func:`new temporary directory ` to prevent e." "g. exploiting pre-existing links, and to make it easier to clean up after a " "failed extraction." msgstr "" -#: library/tarfile.rst:1130 +#: library/tarfile.rst:1149 +msgid "Disallow symbolic links if you do not need the functionality." +msgstr "" + +#: library/tarfile.rst:1150 msgid "" "When working with untrusted data, use external (e.g. OS-level) limits on " "disk, memory and CPU usage." msgstr "" -#: library/tarfile.rst:1132 +#: library/tarfile.rst:1152 msgid "" "Check filenames against an allow-list of characters (to filter out control " "characters, confusables, foreign path separators, and so on)." msgstr "" -#: library/tarfile.rst:1135 +#: library/tarfile.rst:1155 msgid "" "Check that filenames have expected extensions (discouraging files that " "execute when you “click on them”, or extension-less files like Windows " "special device names)." msgstr "" -#: library/tarfile.rst:1138 +#: library/tarfile.rst:1158 msgid "" "Limit the number of extracted files, total size of extracted data, filename " "length (including symlink length), and size of individual files." msgstr "" -#: library/tarfile.rst:1140 +#: library/tarfile.rst:1160 msgid "Check for files that would be shadowed on case-insensitive filesystems." msgstr "" -#: library/tarfile.rst:1142 +#: library/tarfile.rst:1162 msgid "Also note that:" msgstr "" -#: library/tarfile.rst:1144 +#: library/tarfile.rst:1164 msgid "" "Tar files may contain multiple versions of the same file. Later ones are " "expected to overwrite any earlier ones. This feature is crucial to allow " "updating tape archives, but can be abused maliciously." msgstr "" -#: library/tarfile.rst:1148 +#: library/tarfile.rst:1168 msgid "" "*tarfile* does not protect against issues with “live” data, e.g. an attacker " "tinkering with the destination (or source) directory while extraction (or " "archiving) is in progress." msgstr "" -#: library/tarfile.rst:1154 +#: library/tarfile.rst:1174 msgid "Supporting older Python versions" msgstr "" -#: library/tarfile.rst:1156 +#: library/tarfile.rst:1176 msgid "" "Extraction filters were added to Python 3.12, but may be backported to older " "versions as security updates. To check whether the feature is available, use " @@ -1522,59 +1546,59 @@ msgid "" "version." msgstr "" -#: library/tarfile.rst:1161 +#: library/tarfile.rst:1181 msgid "" "The following examples show how to support Python versions with and without " "the feature. Note that setting ``extraction_filter`` will affect any " "subsequent operations." msgstr "" -#: library/tarfile.rst:1165 +#: library/tarfile.rst:1185 msgid "Fully trusted archive::" msgstr "" -#: library/tarfile.rst:1167 +#: library/tarfile.rst:1187 msgid "" "my_tarfile.extraction_filter = (lambda member, path: member)\n" "my_tarfile.extractall()" msgstr "" -#: library/tarfile.rst:1170 +#: library/tarfile.rst:1190 msgid "" "Use the ``'data'`` filter if available, but revert to Python 3.11 behavior " "(``'fully_trusted'``) if this feature is not available::" msgstr "" -#: library/tarfile.rst:1173 +#: library/tarfile.rst:1193 msgid "" "my_tarfile.extraction_filter = getattr(tarfile, 'data_filter',\n" " (lambda member, path: member))\n" "my_tarfile.extractall()" msgstr "" -#: library/tarfile.rst:1177 +#: library/tarfile.rst:1197 msgid "Use the ``'data'`` filter; *fail* if it is not available::" msgstr "" -#: library/tarfile.rst:1179 +#: library/tarfile.rst:1199 msgid "my_tarfile.extractall(filter=tarfile.data_filter)" msgstr "" -#: library/tarfile.rst:1181 +#: library/tarfile.rst:1201 msgid "or::" msgstr "" -#: library/tarfile.rst:1183 +#: library/tarfile.rst:1203 msgid "" "my_tarfile.extraction_filter = tarfile.data_filter\n" "my_tarfile.extractall()" msgstr "" -#: library/tarfile.rst:1186 +#: library/tarfile.rst:1206 msgid "Use the ``'data'`` filter; *warn* if it is not available::" msgstr "" -#: library/tarfile.rst:1188 +#: library/tarfile.rst:1208 msgid "" "if hasattr(tarfile, 'data_filter'):\n" " my_tarfile.extractall(filter='data')\n" @@ -1584,28 +1608,28 @@ msgid "" " my_tarfile.extractall()" msgstr "" -#: library/tarfile.rst:1197 +#: library/tarfile.rst:1217 msgid "Stateful extraction filter example" msgstr "" -#: library/tarfile.rst:1199 +#: library/tarfile.rst:1219 msgid "" "While *tarfile*'s extraction methods take a simple *filter* callable, custom " "filters may be more complex objects with an internal state. It may be useful " "to write these as context managers, to be used like this::" msgstr "" -#: library/tarfile.rst:1203 +#: library/tarfile.rst:1223 msgid "" "with StatefulFilter() as filter_func:\n" " tar.extractall(path, filter=filter_func)" msgstr "" -#: library/tarfile.rst:1206 +#: library/tarfile.rst:1226 msgid "Such a filter can be written as, for example::" msgstr "" -#: library/tarfile.rst:1208 +#: library/tarfile.rst:1228 msgid "" "class StatefulFilter:\n" " def __init__(self):\n" @@ -1622,103 +1646,103 @@ msgid "" " print(f'{self.file_count} files extracted')" msgstr "" -#: library/tarfile.rst:1228 +#: library/tarfile.rst:1248 msgid "Command-Line Interface" msgstr "" -#: library/tarfile.rst:1232 +#: library/tarfile.rst:1252 msgid "" "The :mod:`tarfile` module provides a simple command-line interface to " "interact with tar archives." msgstr "" -#: library/tarfile.rst:1235 +#: library/tarfile.rst:1255 msgid "" "If you want to create a new tar archive, specify its name after the :option:" "`-c` option and then list the filename(s) that should be included:" msgstr "" -#: library/tarfile.rst:1238 +#: library/tarfile.rst:1258 msgid "$ python -m tarfile -c monty.tar spam.txt eggs.txt" msgstr "" -#: library/tarfile.rst:1242 +#: library/tarfile.rst:1262 msgid "Passing a directory is also acceptable:" msgstr "" -#: library/tarfile.rst:1244 +#: library/tarfile.rst:1264 msgid "$ python -m tarfile -c monty.tar life-of-brian_1979/" msgstr "" -#: library/tarfile.rst:1248 +#: library/tarfile.rst:1268 msgid "" "If you want to extract a tar archive into the current directory, use the :" "option:`-e` option:" msgstr "" -#: library/tarfile.rst:1251 +#: library/tarfile.rst:1271 msgid "$ python -m tarfile -e monty.tar" msgstr "" -#: library/tarfile.rst:1255 +#: library/tarfile.rst:1275 msgid "" "You can also extract a tar archive into a different directory by passing the " "directory's name:" msgstr "" -#: library/tarfile.rst:1258 +#: library/tarfile.rst:1278 msgid "$ python -m tarfile -e monty.tar other-dir/" msgstr "" -#: library/tarfile.rst:1262 +#: library/tarfile.rst:1282 msgid "For a list of the files in a tar archive, use the :option:`-l` option:" msgstr "" -#: library/tarfile.rst:1264 +#: library/tarfile.rst:1284 msgid "$ python -m tarfile -l monty.tar" msgstr "" -#: library/tarfile.rst:1270 +#: library/tarfile.rst:1290 msgid "Command-line options" msgstr "" -#: library/tarfile.rst:1275 +#: library/tarfile.rst:1295 msgid "List files in a tarfile." msgstr "" -#: library/tarfile.rst:1280 +#: library/tarfile.rst:1300 msgid "Create tarfile from source files." msgstr "" -#: library/tarfile.rst:1285 +#: library/tarfile.rst:1305 msgid "" "Extract tarfile into the current directory if *output_dir* is not specified." msgstr "" -#: library/tarfile.rst:1290 +#: library/tarfile.rst:1310 msgid "Test whether the tarfile is valid or not." msgstr "" -#: library/tarfile.rst:1294 +#: library/tarfile.rst:1314 msgid "Verbose output." msgstr "" -#: library/tarfile.rst:1298 +#: library/tarfile.rst:1318 msgid "" "Specifies the *filter* for ``--extract``. See :ref:`tarfile-extraction-" "filter` for details. Only string names are accepted (that is, " "``fully_trusted``, ``tar``, and ``data``)." msgstr "" -#: library/tarfile.rst:1306 +#: library/tarfile.rst:1326 msgid "Examples" msgstr "" -#: library/tarfile.rst:1308 +#: library/tarfile.rst:1328 msgid "How to extract an entire tar archive to the current working directory::" msgstr "" -#: library/tarfile.rst:1310 +#: library/tarfile.rst:1330 msgid "" "import tarfile\n" "tar = tarfile.open(\"sample.tar.gz\")\n" @@ -1726,13 +1750,13 @@ msgid "" "tar.close()" msgstr "" -#: library/tarfile.rst:1315 +#: library/tarfile.rst:1335 msgid "" "How to extract a subset of a tar archive with :meth:`TarFile.extractall` " "using a generator function instead of a list::" msgstr "" -#: library/tarfile.rst:1318 +#: library/tarfile.rst:1338 msgid "" "import os\n" "import tarfile\n" @@ -1747,11 +1771,11 @@ msgid "" "tar.close()" msgstr "" -#: library/tarfile.rst:1330 +#: library/tarfile.rst:1350 msgid "How to create an uncompressed tar archive from a list of filenames::" msgstr "" -#: library/tarfile.rst:1332 +#: library/tarfile.rst:1352 msgid "" "import tarfile\n" "tar = tarfile.open(\"sample.tar\", \"w\")\n" @@ -1760,11 +1784,11 @@ msgid "" "tar.close()" msgstr "" -#: library/tarfile.rst:1338 +#: library/tarfile.rst:1358 msgid "The same example using the :keyword:`with` statement::" msgstr "" -#: library/tarfile.rst:1340 +#: library/tarfile.rst:1360 msgid "" "import tarfile\n" "with tarfile.open(\"sample.tar\", \"w\") as tar:\n" @@ -1772,13 +1796,13 @@ msgid "" " tar.add(name)" msgstr "" -#: library/tarfile.rst:1345 +#: library/tarfile.rst:1365 msgid "" "How to read a gzip compressed tar archive and display some member " "information::" msgstr "" -#: library/tarfile.rst:1347 +#: library/tarfile.rst:1367 msgid "" "import tarfile\n" "tar = tarfile.open(\"sample.tar.gz\", \"r:gz\")\n" @@ -1794,13 +1818,13 @@ msgid "" "tar.close()" msgstr "" -#: library/tarfile.rst:1359 +#: library/tarfile.rst:1379 msgid "" "How to create an archive and reset the user information using the *filter* " "parameter in :meth:`TarFile.add`::" msgstr "" -#: library/tarfile.rst:1362 +#: library/tarfile.rst:1382 msgid "" "import tarfile\n" "def reset(tarinfo):\n" @@ -1812,17 +1836,17 @@ msgid "" "tar.close()" msgstr "" -#: library/tarfile.rst:1375 +#: library/tarfile.rst:1395 msgid "Supported tar formats" msgstr "" -#: library/tarfile.rst:1377 +#: library/tarfile.rst:1397 msgid "" "There are three tar formats that can be created with the :mod:`tarfile` " "module:" msgstr "" -#: library/tarfile.rst:1379 +#: library/tarfile.rst:1399 msgid "" "The POSIX.1-1988 ustar format (:const:`USTAR_FORMAT`). It supports filenames " "up to a length of at best 256 characters and linknames up to 100 characters. " @@ -1830,7 +1854,7 @@ msgid "" "supported format." msgstr "" -#: library/tarfile.rst:1384 +#: library/tarfile.rst:1404 msgid "" "The GNU tar format (:const:`GNU_FORMAT`). It supports long filenames and " "linknames, files bigger than 8 GiB and sparse files. It is the de facto " @@ -1838,7 +1862,7 @@ msgid "" "extensions for long names, sparse file support is read-only." msgstr "" -#: library/tarfile.rst:1389 +#: library/tarfile.rst:1409 msgid "" "The POSIX.1-2001 pax format (:const:`PAX_FORMAT`). It is the most flexible " "format with virtually no limits. It supports long filenames and linknames, " @@ -1849,7 +1873,7 @@ msgid "" "*ustar* format. It is the current default format for new archives." msgstr "" -#: library/tarfile.rst:1397 +#: library/tarfile.rst:1417 msgid "" "It extends the existing *ustar* format with extra headers for information " "that cannot be stored otherwise. There are two flavours of pax headers: " @@ -1858,13 +1882,13 @@ msgid "" "in a pax header is encoded in *UTF-8* for portability reasons." msgstr "" -#: library/tarfile.rst:1403 +#: library/tarfile.rst:1423 msgid "" "There are some more variants of the tar format which can be read, but not " "created:" msgstr "" -#: library/tarfile.rst:1406 +#: library/tarfile.rst:1426 msgid "" "The ancient V7 format. This is the first tar format from Unix Seventh " "Edition, storing only regular files and directories. Names must not be " @@ -1873,17 +1897,17 @@ msgid "" "ASCII characters." msgstr "" -#: library/tarfile.rst:1411 +#: library/tarfile.rst:1431 msgid "" "The SunOS tar extended format. This format is a variant of the POSIX.1-2001 " "pax format, but is not compatible." msgstr "" -#: library/tarfile.rst:1417 +#: library/tarfile.rst:1437 msgid "Unicode issues" msgstr "" -#: library/tarfile.rst:1419 +#: library/tarfile.rst:1439 msgid "" "The tar format was originally conceived to make backups on tape drives with " "the main focus on preserving file system information. Nowadays tar archives " @@ -1898,13 +1922,13 @@ msgid "" "It stores non-ASCII metadata using the universal character encoding *UTF-8*." msgstr "" -#: library/tarfile.rst:1431 +#: library/tarfile.rst:1451 msgid "" "The details of character conversion in :mod:`tarfile` are controlled by the " "*encoding* and *errors* keyword arguments of the :class:`TarFile` class." msgstr "" -#: library/tarfile.rst:1434 +#: library/tarfile.rst:1454 msgid "" "*encoding* defines the character encoding to use for the metadata in the " "archive. The default value is :func:`sys.getfilesystemencoding` or " @@ -1913,7 +1937,7 @@ msgid "" "not set appropriately, this conversion may fail." msgstr "" -#: library/tarfile.rst:1440 +#: library/tarfile.rst:1460 msgid "" "The *errors* argument defines how characters are treated that cannot be " "converted. Possible values are listed in section :ref:`error-handlers`. The " @@ -1921,7 +1945,7 @@ msgid "" "system calls, see :ref:`os-filenames`." msgstr "" -#: library/tarfile.rst:1445 +#: library/tarfile.rst:1465 msgid "" "For :const:`PAX_FORMAT` archives (the default), *encoding* is generally not " "needed because all the metadata is stored using *UTF-8*. *encoding* is only " diff --git a/library/telnetlib.po b/library/telnetlib.po index c488eebc..ab79e7dd 100644 --- a/library/telnetlib.po +++ b/library/telnetlib.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/tempfile.po b/library/tempfile.po index 2d72ac30..6944fa8c 100644 --- a/library/tempfile.po +++ b/library/tempfile.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/termios.po b/library/termios.po index e793697d..93cb6f95 100644 --- a/library/termios.po +++ b/library/termios.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/test.po b/library/test.po index 81442c19..24844878 100644 --- a/library/test.po +++ b/library/test.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/text.po b/library/text.po index 247ba1e2..51c20ac1 100644 --- a/library/text.po +++ b/library/text.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/textwrap.po b/library/textwrap.po index e9a582be..3b9a1aa7 100644 --- a/library/textwrap.po +++ b/library/textwrap.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/threading.po b/library/threading.po index f0bd9d85..abc72f32 100644 --- a/library/threading.po +++ b/library/threading.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -31,38 +31,103 @@ msgid "" "level :mod:`_thread` module." msgstr "" -#: library/threading.rst:14 -msgid "This module used to be optional, it is now always available." +#: library/threading.rst:293 includes/wasm-notavail.rst:3 +msgid "Availability" +msgstr "" + +#: includes/wasm-notavail.rst:5 +msgid "" +"This module does not work or is not available on WebAssembly. See :ref:`wasm-" +"availability` for more information." +msgstr "" + +#: library/threading.rst:17 +msgid "Introduction" msgstr "" #: library/threading.rst:19 msgid "" +"The :mod:`!threading` module provides a way to run multiple `threads " +"`_ (smaller units of a " +"process) concurrently within a single process. It allows for the creation " +"and management of threads, making it possible to execute tasks in parallel, " +"sharing memory space. Threads are particularly useful when tasks are I/O " +"bound, such as file operations or making network requests, where much of the " +"time is spent waiting for external resources." +msgstr "" + +#: library/threading.rst:27 +msgid "" +"A typical use case for :mod:`!threading` includes managing a pool of worker " +"threads that can process multiple tasks concurrently. Here's a basic " +"example of creating and starting threads using :class:`~threading.Thread`::" +msgstr "" + +#: library/threading.rst:31 +msgid "" +"import threading\n" +"import time\n" +"\n" +"def crawl(link, delay=3):\n" +" print(f\"crawl started for {link}\")\n" +" time.sleep(delay) # Blocking I/O (simulating a network request)\n" +" print(f\"crawl ended for {link}\")\n" +"\n" +"links = [\n" +" \"https://python.org\",\n" +" \"https://docs.python.org\",\n" +" \"https://peps.python.org\",\n" +"]\n" +"\n" +"# Start threads for each link\n" +"threads = []\n" +"for link in links:\n" +" # Using `args` to pass positional arguments and `kwargs` for keyword " +"arguments\n" +" t = threading.Thread(target=crawl, args=(link,), kwargs={\"delay\": 2})\n" +" threads.append(t)\n" +"\n" +"# Start each thread\n" +"for t in threads:\n" +" t.start()\n" +"\n" +"# Wait for all threads to finish\n" +"for t in threads:\n" +" t.join()" +msgstr "" + +#: library/threading.rst:60 +msgid "This module used to be optional, it is now always available." +msgstr "" + +#: library/threading.rst:65 +msgid "" ":class:`concurrent.futures.ThreadPoolExecutor` offers a higher level " "interface to push tasks to a background thread without blocking execution of " "the calling thread, while still being able to retrieve their results when " "needed." msgstr "" -#: library/threading.rst:23 +#: library/threading.rst:69 msgid "" ":mod:`queue` provides a thread-safe interface for exchanging data between " "running threads." msgstr "" -#: library/threading.rst:26 +#: library/threading.rst:72 msgid "" ":mod:`asyncio` offers an alternative approach to achieving task level " "concurrency without requiring the use of multiple operating system threads." msgstr "" -#: library/threading.rst:31 +#: library/threading.rst:77 msgid "" "In the Python 2.x series, this module contained ``camelCase`` names for some " "methods and functions. These are deprecated as of Python 3.10, but they are " "still supported for compatibility with Python 2.5 and lower." msgstr "" -#: library/threading.rst:38 +#: library/threading.rst:84 msgid "" "In CPython, due to the :term:`Global Interpreter Lock `, only one thread can execute Python code at once (even though certain " @@ -73,110 +138,126 @@ msgid "" "appropriate model if you want to run multiple I/O-bound tasks simultaneously." msgstr "" -#: library/threading.rst:229 includes/wasm-notavail.rst:3 -msgid "Availability" +#: library/threading.rst:95 +msgid "GIL and performance considerations" msgstr "" -#: includes/wasm-notavail.rst:5 +#: library/threading.rst:97 msgid "" -"This module does not work or is not available on WebAssembly. See :ref:`wasm-" -"availability` for more information." +"Unlike the :mod:`multiprocessing` module, which uses separate processes to " +"bypass the :term:`global interpreter lock` (GIL), the threading module " +"operates within a single process, meaning that all threads share the same " +"memory space. However, the GIL limits the performance gains of threading " +"when it comes to CPU-bound tasks, as only one thread can execute Python " +"bytecode at a time. Despite this, threads remain a useful tool for achieving " +"concurrency in many scenarios." msgstr "" -#: library/threading.rst:50 +#: library/threading.rst:105 +msgid "" +"As of Python 3.13, :term:`free-threaded ` builds can disable " +"the GIL, enabling true parallel execution of threads, but this feature is " +"not available by default (see :pep:`703`)." +msgstr "" + +#: library/threading.rst:112 +msgid "Reference" +msgstr "" + +#: library/threading.rst:114 msgid "This module defines the following functions:" msgstr "" -#: library/threading.rst:55 +#: library/threading.rst:119 msgid "" "Return the number of :class:`Thread` objects currently alive. The returned " "count is equal to the length of the list returned by :func:`.enumerate`." msgstr "" -#: library/threading.rst:58 +#: library/threading.rst:122 msgid "The function ``activeCount`` is a deprecated alias for this function." msgstr "" -#: library/threading.rst:63 +#: library/threading.rst:127 msgid "" "Return the current :class:`Thread` object, corresponding to the caller's " "thread of control. If the caller's thread of control was not created " -"through the :mod:`threading` module, a dummy thread object with limited " +"through the :mod:`!threading` module, a dummy thread object with limited " "functionality is returned." msgstr "" -#: library/threading.rst:68 +#: library/threading.rst:132 msgid "The function ``currentThread`` is a deprecated alias for this function." msgstr "" -#: library/threading.rst:73 +#: library/threading.rst:137 msgid "Handle uncaught exception raised by :func:`Thread.run`." msgstr "" -#: library/threading.rst:75 +#: library/threading.rst:139 msgid "The *args* argument has the following attributes:" msgstr "" -#: library/threading.rst:77 +#: library/threading.rst:141 msgid "*exc_type*: Exception type." msgstr "" -#: library/threading.rst:78 +#: library/threading.rst:142 msgid "*exc_value*: Exception value, can be ``None``." msgstr "" -#: library/threading.rst:79 +#: library/threading.rst:143 msgid "*exc_traceback*: Exception traceback, can be ``None``." msgstr "" -#: library/threading.rst:80 +#: library/threading.rst:144 msgid "*thread*: Thread which raised the exception, can be ``None``." msgstr "" -#: library/threading.rst:82 +#: library/threading.rst:146 msgid "" "If *exc_type* is :exc:`SystemExit`, the exception is silently ignored. " "Otherwise, the exception is printed out on :data:`sys.stderr`." msgstr "" -#: library/threading.rst:85 +#: library/threading.rst:149 msgid "" "If this function raises an exception, :func:`sys.excepthook` is called to " "handle it." msgstr "" -#: library/threading.rst:88 +#: library/threading.rst:152 msgid "" ":func:`threading.excepthook` can be overridden to control how uncaught " "exceptions raised by :func:`Thread.run` are handled." msgstr "" -#: library/threading.rst:91 +#: library/threading.rst:155 msgid "" "Storing *exc_value* using a custom hook can create a reference cycle. It " "should be cleared explicitly to break the reference cycle when the exception " "is no longer needed." msgstr "" -#: library/threading.rst:95 +#: library/threading.rst:159 msgid "" "Storing *thread* using a custom hook can resurrect it if it is set to an " "object which is being finalized. Avoid storing *thread* after the custom " "hook completes to avoid resurrecting objects." msgstr "" -#: library/threading.rst:100 +#: library/threading.rst:164 msgid ":func:`sys.excepthook` handles uncaught exceptions." msgstr "" -#: library/threading.rst:106 +#: library/threading.rst:170 msgid "" "Holds the original value of :func:`threading.excepthook`. It is saved so " "that the original value can be restored in case they happen to get replaced " "with broken or alternative objects." msgstr "" -#: library/threading.rst:114 +#: library/threading.rst:178 msgid "" "Return the 'thread identifier' of the current thread. This is a nonzero " "integer. Its value has no direct meaning; it is intended as a magic cookie " @@ -185,7 +266,7 @@ msgid "" "created." msgstr "" -#: library/threading.rst:125 +#: library/threading.rst:189 msgid "" "Return the native integral Thread ID of the current thread assigned by the " "kernel. This is a non-negative integer. Its value may be used to uniquely " @@ -193,11 +274,11 @@ msgid "" "after which the value may be recycled by the OS)." msgstr "" -#: library/threading.rst:134 +#: library/threading.rst:198 msgid "Added support for GNU/kFreeBSD." msgstr "" -#: library/threading.rst:140 +#: library/threading.rst:204 msgid "" "Return a list of all :class:`Thread` objects currently active. The list " "includes daemonic threads and dummy thread objects created by :func:" @@ -206,59 +287,59 @@ msgid "" "even when terminated." msgstr "" -#: library/threading.rst:149 +#: library/threading.rst:213 msgid "" "Return the main :class:`Thread` object. In normal conditions, the main " "thread is the thread from which the Python interpreter was started." msgstr "" -#: library/threading.rst:160 +#: library/threading.rst:224 msgid "" -"Set a trace function for all threads started from the :mod:`threading` " +"Set a trace function for all threads started from the :mod:`!threading` " "module. The *func* will be passed to :func:`sys.settrace` for each thread, " "before its :meth:`~Thread.run` method is called." msgstr "" -#: library/threading.rst:166 +#: library/threading.rst:230 msgid "" -"Set a trace function for all threads started from the :mod:`threading` " +"Set a trace function for all threads started from the :mod:`!threading` " "module and all Python threads that are currently executing." msgstr "" -#: library/threading.rst:169 +#: library/threading.rst:233 msgid "" "The *func* will be passed to :func:`sys.settrace` for each thread, before " "its :meth:`~Thread.run` method is called." msgstr "" -#: library/threading.rst:180 +#: library/threading.rst:244 msgid "Get the trace function as set by :func:`settrace`." msgstr "" -#: library/threading.rst:189 +#: library/threading.rst:253 msgid "" -"Set a profile function for all threads started from the :mod:`threading` " +"Set a profile function for all threads started from the :mod:`!threading` " "module. The *func* will be passed to :func:`sys.setprofile` for each " "thread, before its :meth:`~Thread.run` method is called." msgstr "" -#: library/threading.rst:195 +#: library/threading.rst:259 msgid "" -"Set a profile function for all threads started from the :mod:`threading` " +"Set a profile function for all threads started from the :mod:`!threading` " "module and all Python threads that are currently executing." msgstr "" -#: library/threading.rst:198 +#: library/threading.rst:262 msgid "" "The *func* will be passed to :func:`sys.setprofile` for each thread, before " "its :meth:`~Thread.run` method is called." msgstr "" -#: library/threading.rst:207 +#: library/threading.rst:271 msgid "Get the profiler function as set by :func:`setprofile`." msgstr "" -#: library/threading.rst:214 +#: library/threading.rst:278 msgid "" "Return the thread stack size used when creating new threads. The optional " "*size* argument specifies the stack size to be used for subsequently created " @@ -277,15 +358,15 @@ msgid "" "information)." msgstr "" -#: library/threading.rst:231 +#: library/threading.rst:295 msgid "Unix platforms with POSIX threads support." msgstr "" -#: library/threading.rst:234 +#: library/threading.rst:298 msgid "This module also defines the following constant:" msgstr "" -#: library/threading.rst:238 +#: library/threading.rst:302 msgid "" "The maximum value allowed for the *timeout* parameter of blocking functions " "(:meth:`Lock.acquire`, :meth:`RLock.acquire`, :meth:`Condition.wait`, etc.). " @@ -293,13 +374,13 @@ msgid "" "`OverflowError`." msgstr "" -#: library/threading.rst:246 +#: library/threading.rst:310 msgid "" "This module defines a number of classes, which are detailed in the sections " "below." msgstr "" -#: library/threading.rst:249 +#: library/threading.rst:313 msgid "" "The design of this module is loosely based on Java's threading model. " "However, where Java makes locks and condition variables basic behavior of " @@ -310,22 +391,22 @@ msgid "" "Thread class, when implemented, are mapped to module-level functions." msgstr "" -#: library/threading.rst:257 +#: library/threading.rst:321 msgid "All of the methods described below are executed atomically." msgstr "" -#: library/threading.rst:261 -msgid "Thread-Local Data" +#: library/threading.rst:325 +msgid "Thread-local data" msgstr "" -#: library/threading.rst:263 +#: library/threading.rst:327 msgid "" "Thread-local data is data whose values are thread specific. If you have data " "that you want to be local to a thread, create a :class:`local` object and " "use its attributes::" msgstr "" -#: library/threading.rst:267 +#: library/threading.rst:331 msgid "" ">>> mydata = local()\n" ">>> mydata.number = 42\n" @@ -333,11 +414,11 @@ msgid "" "42" msgstr "" -#: library/threading.rst:272 +#: library/threading.rst:336 msgid "You can also access the :class:`local`-object's dictionary::" msgstr "" -#: library/threading.rst:274 +#: library/threading.rst:338 msgid "" ">>> mydata.__dict__\n" "{'number': 42}\n" @@ -347,11 +428,11 @@ msgid "" "[]" msgstr "" -#: library/threading.rst:281 +#: library/threading.rst:345 msgid "If we access the data in a different thread::" msgstr "" -#: library/threading.rst:283 +#: library/threading.rst:347 msgid "" ">>> log = []\n" ">>> def f():\n" @@ -368,19 +449,19 @@ msgid "" "[[], 11]" msgstr "" -#: library/threading.rst:297 +#: library/threading.rst:361 msgid "" "we get different data. Furthermore, changes made in the other thread don't " "affect data seen in this thread::" msgstr "" -#: library/threading.rst:300 +#: library/threading.rst:364 msgid "" ">>> mydata.number\n" "42" msgstr "" -#: library/threading.rst:303 +#: library/threading.rst:367 msgid "" "Of course, values you get from a :class:`local` object, including their :" "attr:`~object.__dict__` attribute, are for whatever thread was current at " @@ -389,13 +470,13 @@ msgid "" "came from." msgstr "" -#: library/threading.rst:309 +#: library/threading.rst:373 msgid "" "You can create custom :class:`local` objects by subclassing the :class:" "`local` class::" msgstr "" -#: library/threading.rst:312 +#: library/threading.rst:376 msgid "" ">>> class MyLocal(local):\n" "... number = 2\n" @@ -405,7 +486,7 @@ msgid "" "... return self.number ** 2" msgstr "" -#: library/threading.rst:319 +#: library/threading.rst:383 msgid "" "This can be useful to support default values, methods and initialization. " "Note that if you define an :py:meth:`~object.__init__` method, it will be " @@ -413,50 +494,50 @@ msgid "" "This is necessary to initialize each thread's dictionary." msgstr "" -#: library/threading.rst:325 +#: library/threading.rst:389 msgid "Now if we create a :class:`local` object::" msgstr "" -#: library/threading.rst:327 +#: library/threading.rst:391 msgid ">>> mydata = MyLocal(color='red')" msgstr "" -#: library/threading.rst:329 +#: library/threading.rst:393 msgid "we have a default number::" msgstr "" -#: library/threading.rst:331 +#: library/threading.rst:395 msgid "" ">>> mydata.number\n" "2" msgstr "" -#: library/threading.rst:334 +#: library/threading.rst:398 msgid "an initial color::" msgstr "" -#: library/threading.rst:336 +#: library/threading.rst:400 msgid "" ">>> mydata.color\n" "'red'\n" ">>> del mydata.color" msgstr "" -#: library/threading.rst:340 +#: library/threading.rst:404 msgid "And a method that operates on the data::" msgstr "" -#: library/threading.rst:342 +#: library/threading.rst:406 msgid "" ">>> mydata.squared()\n" "4" msgstr "" -#: library/threading.rst:345 +#: library/threading.rst:409 msgid "As before, we can access the data in a separate thread::" msgstr "" -#: library/threading.rst:347 +#: library/threading.rst:411 msgid "" ">>> log = []\n" ">>> thread = threading.Thread(target=f)\n" @@ -466,11 +547,11 @@ msgid "" "[[('color', 'red')], 11]" msgstr "" -#: library/threading.rst:354 +#: library/threading.rst:418 msgid "without affecting this thread's data::" msgstr "" -#: library/threading.rst:356 +#: library/threading.rst:420 msgid "" ">>> mydata.number\n" "2\n" @@ -480,13 +561,13 @@ msgid "" "AttributeError: 'MyLocal' object has no attribute 'color'" msgstr "" -#: library/threading.rst:363 +#: library/threading.rst:427 msgid "" "Note that subclasses can define :term:`__slots__`, but they are not thread " "local. They are shared across threads::" msgstr "" -#: library/threading.rst:366 +#: library/threading.rst:430 msgid "" ">>> class MyLocal(local):\n" "... __slots__ = 'number'\n" @@ -496,36 +577,36 @@ msgid "" ">>> mydata.color = 'red'" msgstr "" -#: library/threading.rst:373 +#: library/threading.rst:437 msgid "So, the separate thread::" msgstr "" -#: library/threading.rst:375 +#: library/threading.rst:439 msgid "" ">>> thread = threading.Thread(target=f)\n" ">>> thread.start()\n" ">>> thread.join()" msgstr "" -#: library/threading.rst:379 +#: library/threading.rst:443 msgid "affects what we see::" msgstr "" -#: library/threading.rst:381 +#: library/threading.rst:445 msgid "" ">>> mydata.number\n" "11" msgstr "" -#: library/threading.rst:387 +#: library/threading.rst:451 msgid "A class that represents thread-local data." msgstr "" -#: library/threading.rst:393 -msgid "Thread Objects" +#: library/threading.rst:457 +msgid "Thread objects" msgstr "" -#: library/threading.rst:395 +#: library/threading.rst:459 msgid "" "The :class:`Thread` class represents an activity that is run in a separate " "thread of control. There are two ways to specify the activity: by passing a " @@ -535,14 +616,14 @@ msgid "" "``__init__()`` and :meth:`~Thread.run` methods of this class." msgstr "" -#: library/threading.rst:402 +#: library/threading.rst:466 msgid "" "Once a thread object is created, its activity must be started by calling the " "thread's :meth:`~Thread.start` method. This invokes the :meth:`~Thread.run` " "method in a separate thread of control." msgstr "" -#: library/threading.rst:406 +#: library/threading.rst:470 msgid "" "Once the thread's activity is started, the thread is considered 'alive'. It " "stops being alive when its :meth:`~Thread.run` method terminates -- either " @@ -550,27 +631,27 @@ msgid "" "is_alive` method tests whether the thread is alive." msgstr "" -#: library/threading.rst:411 +#: library/threading.rst:475 msgid "" "Other threads can call a thread's :meth:`~Thread.join` method. This blocks " "the calling thread until the thread whose :meth:`~Thread.join` method is " "called is terminated." msgstr "" -#: library/threading.rst:415 +#: library/threading.rst:479 msgid "" "A thread has a name. The name can be passed to the constructor, and read or " "changed through the :attr:`~Thread.name` attribute." msgstr "" -#: library/threading.rst:418 +#: library/threading.rst:482 msgid "" "If the :meth:`~Thread.run` method raises an exception, :func:`threading." "excepthook` is called to handle it. By default, :func:`threading.excepthook` " "ignores silently :exc:`SystemExit`." msgstr "" -#: library/threading.rst:422 +#: library/threading.rst:486 msgid "" "A thread can be flagged as a \"daemon thread\". The significance of this " "flag is that the entire Python program exits when only daemon threads are " @@ -579,7 +660,7 @@ msgid "" "constructor argument." msgstr "" -#: library/threading.rst:429 +#: library/threading.rst:493 msgid "" "Daemon threads are abruptly stopped at shutdown. Their resources (such as " "open files, database transactions, etc.) may not be released properly. If " @@ -587,13 +668,13 @@ msgid "" "suitable signalling mechanism such as an :class:`Event`." msgstr "" -#: library/threading.rst:434 +#: library/threading.rst:498 msgid "" "There is a \"main thread\" object; this corresponds to the initial thread of " "control in the Python program. It is not a daemon thread." msgstr "" -#: library/threading.rst:437 +#: library/threading.rst:501 msgid "" "There is the possibility that \"dummy thread objects\" are created. These " "are thread objects corresponding to \"alien threads\", which are threads of " @@ -604,25 +685,25 @@ msgid "" "threads." msgstr "" -#: library/threading.rst:448 +#: library/threading.rst:512 msgid "" "This constructor should always be called with keyword arguments. Arguments " "are:" msgstr "" -#: library/threading.rst:451 +#: library/threading.rst:515 msgid "" "*group* should be ``None``; reserved for future extension when a :class:`!" "ThreadGroup` class is implemented." msgstr "" -#: library/threading.rst:454 +#: library/threading.rst:518 msgid "" "*target* is the callable object to be invoked by the :meth:`run` method. " "Defaults to ``None``, meaning nothing is called." msgstr "" -#: library/threading.rst:457 +#: library/threading.rst:521 msgid "" "*name* is the thread name. By default, a unique name is constructed of the " "form \"Thread-*N*\" where *N* is a small decimal number, or \"Thread-*N* " @@ -630,26 +711,26 @@ msgid "" "is specified." msgstr "" -#: library/threading.rst:462 +#: library/threading.rst:526 msgid "" "*args* is a list or tuple of arguments for the target invocation. Defaults " "to ``()``." msgstr "" -#: library/threading.rst:464 +#: library/threading.rst:528 msgid "" "*kwargs* is a dictionary of keyword arguments for the target invocation. " "Defaults to ``{}``." msgstr "" -#: library/threading.rst:467 +#: library/threading.rst:531 msgid "" "If not ``None``, *daemon* explicitly sets whether the thread is daemonic. If " "``None`` (the default), the daemonic property is inherited from the current " "thread." msgstr "" -#: library/threading.rst:471 +#: library/threading.rst:535 msgid "" "*context* is the :class:`~contextvars.Context` value to use when starting " "the thread. The default value is ``None`` which indicates that the :data:" @@ -662,58 +743,58 @@ msgid "" "defaults true on free-threaded builds and false otherwise." msgstr "" -#: library/threading.rst:481 +#: library/threading.rst:545 msgid "" "If the subclass overrides the constructor, it must make sure to invoke the " "base class constructor (``Thread.__init__()``) before doing anything else to " "the thread." msgstr "" -#: library/threading.rst:485 +#: library/threading.rst:549 msgid "Added the *daemon* parameter." msgstr "" -#: library/threading.rst:488 +#: library/threading.rst:552 msgid "Use the *target* name if *name* argument is omitted." msgstr "" -#: library/threading.rst:491 +#: library/threading.rst:555 msgid "Added the *context* parameter." msgstr "" -#: library/threading.rst:496 +#: library/threading.rst:560 msgid "Start the thread's activity." msgstr "" -#: library/threading.rst:498 +#: library/threading.rst:562 msgid "" "It must be called at most once per thread object. It arranges for the " "object's :meth:`~Thread.run` method to be invoked in a separate thread of " "control." msgstr "" -#: library/threading.rst:502 +#: library/threading.rst:566 msgid "" "This method will raise a :exc:`RuntimeError` if called more than once on the " "same thread object." msgstr "" -#: library/threading.rst:505 +#: library/threading.rst:569 msgid "" "If supported, set the operating system thread name to :attr:`threading." "Thread.name`. The name can be truncated depending on the operating system " "thread name limits." msgstr "" -#: library/threading.rst:509 +#: library/threading.rst:573 msgid "Set the operating system thread name." msgstr "" -#: library/threading.rst:514 +#: library/threading.rst:578 msgid "Method representing the thread's activity." msgstr "" -#: library/threading.rst:516 +#: library/threading.rst:580 msgid "" "You may override this method in a subclass. The standard :meth:`run` method " "invokes the callable object passed to the object's constructor as the " @@ -721,17 +802,17 @@ msgid "" "the *args* and *kwargs* arguments, respectively." msgstr "" -#: library/threading.rst:521 +#: library/threading.rst:585 msgid "" "Using list or tuple as the *args* argument which passed to the :class:" "`Thread` could achieve the same effect." msgstr "" -#: library/threading.rst:524 +#: library/threading.rst:588 msgid "Example::" msgstr "" -#: library/threading.rst:526 +#: library/threading.rst:590 msgid "" ">>> from threading import Thread\n" ">>> t = Thread(target=print, args=[1])\n" @@ -742,7 +823,7 @@ msgid "" "1" msgstr "" -#: library/threading.rst:538 +#: library/threading.rst:602 msgid "" "Wait until the thread terminates. This blocks the calling thread until the " "thread whose :meth:`~Thread.join` method is called terminates -- either " @@ -750,7 +831,7 @@ msgid "" "occurs." msgstr "" -#: library/threading.rst:543 +#: library/threading.rst:607 msgid "" "When the *timeout* argument is present and not ``None``, it should be a " "floating-point number specifying a timeout for the operation in seconds (or " @@ -760,17 +841,17 @@ msgid "" "`~Thread.join` call timed out." msgstr "" -#: library/threading.rst:550 +#: library/threading.rst:614 msgid "" "When the *timeout* argument is not present or ``None``, the operation will " "block until the thread terminates." msgstr "" -#: library/threading.rst:553 +#: library/threading.rst:617 msgid "A thread can be joined many times." msgstr "" -#: library/threading.rst:555 +#: library/threading.rst:619 msgid "" ":meth:`~Thread.join` raises a :exc:`RuntimeError` if an attempt is made to " "join the current thread as that would cause a deadlock. It is also an error " @@ -778,25 +859,25 @@ msgid "" "do so raise the same exception." msgstr "" -#: library/threading.rst:560 +#: library/threading.rst:624 msgid "" "If an attempt is made to join a running daemonic thread in in late stages " "of :term:`Python finalization ` :meth:`!join` raises " "a :exc:`PythonFinalizationError`." msgstr "" -#: library/threading.rst:566 +#: library/threading.rst:630 msgid "May raise :exc:`PythonFinalizationError`." msgstr "" -#: library/threading.rst:570 +#: library/threading.rst:634 msgid "" "A string used for identification purposes only. It has no semantics. " "Multiple threads may be given the same name. The initial name is set by the " "constructor." msgstr "" -#: library/threading.rst:574 +#: library/threading.rst:638 msgid "" "On some platforms, the thread name is set at the operating system level when " "the thread starts, so that it is visible in task managers. This name may be " @@ -804,20 +885,20 @@ msgid "" "or 63 bytes on macOS)." msgstr "" -#: library/threading.rst:579 +#: library/threading.rst:643 msgid "" "Changes to *name* are only reflected at the OS level when the currently " "running thread is renamed. (Setting the *name* attribute of a different " "thread only updates the Python Thread object.)" msgstr "" -#: library/threading.rst:586 +#: library/threading.rst:650 msgid "" "Deprecated getter/setter API for :attr:`~Thread.name`; use it directly as a " "property instead." msgstr "" -#: library/threading.rst:593 +#: library/threading.rst:657 msgid "" "The 'thread identifier' of this thread or ``None`` if the thread has not " "been started. This is a nonzero integer. See the :func:`get_ident` " @@ -826,7 +907,7 @@ msgid "" "thread has exited." msgstr "" -#: library/threading.rst:601 +#: library/threading.rst:665 msgid "" "The Thread ID (``TID``) of this thread, as assigned by the OS (kernel). This " "is a non-negative integer, or ``None`` if the thread has not been started. " @@ -835,25 +916,25 @@ msgid "" "after which the value may be recycled by the OS)." msgstr "" -#: library/threading.rst:610 +#: library/threading.rst:674 msgid "" "Similar to Process IDs, Thread IDs are only valid (guaranteed unique system-" "wide) from the time the thread is created until the thread has been " "terminated." msgstr "" -#: library/threading.rst:620 +#: library/threading.rst:684 msgid "Return whether the thread is alive." msgstr "" -#: library/threading.rst:622 +#: library/threading.rst:686 msgid "" "This method returns ``True`` just before the :meth:`~Thread.run` method " "starts until just after the :meth:`~Thread.run` method terminates. The " "module function :func:`.enumerate` returns a list of all alive threads." msgstr "" -#: library/threading.rst:628 +#: library/threading.rst:692 msgid "" "A boolean value indicating whether this thread is a daemon thread (``True``) " "or not (``False``). This must be set before :meth:`~Thread.start` is " @@ -863,22 +944,22 @@ msgid "" "`~Thread.daemon` = ``False``." msgstr "" -#: library/threading.rst:635 +#: library/threading.rst:699 msgid "" "The entire Python program exits when no alive non-daemon threads are left." msgstr "" -#: library/threading.rst:640 +#: library/threading.rst:704 msgid "" "Deprecated getter/setter API for :attr:`~Thread.daemon`; use it directly as " "a property instead." msgstr "" -#: library/threading.rst:649 -msgid "Lock Objects" +#: library/threading.rst:713 +msgid "Lock objects" msgstr "" -#: library/threading.rst:651 +#: library/threading.rst:715 msgid "" "A primitive lock is a synchronization primitive that is not owned by a " "particular thread when locked. In Python, it is currently the lowest level " @@ -886,7 +967,7 @@ msgid "" "`_thread` extension module." msgstr "" -#: library/threading.rst:656 +#: library/threading.rst:720 msgid "" "A primitive lock is in one of two states, \"locked\" or \"unlocked\". It is " "created in the unlocked state. It has two basic methods, :meth:`~Lock." @@ -900,11 +981,11 @@ msgid "" "an unlocked lock, a :exc:`RuntimeError` will be raised." msgstr "" -#: library/threading.rst:667 +#: library/threading.rst:731 msgid "Locks also support the :ref:`context management protocol `." msgstr "" -#: library/threading.rst:669 +#: library/threading.rst:733 msgid "" "When more than one thread is blocked in :meth:`~Lock.acquire` waiting for " "the state to turn to unlocked, only one thread proceeds when a :meth:`~Lock." @@ -912,41 +993,41 @@ msgid "" "proceeds is not defined, and may vary across implementations." msgstr "" -#: library/threading.rst:674 +#: library/threading.rst:738 msgid "All methods are executed atomically." msgstr "" -#: library/threading.rst:679 +#: library/threading.rst:743 msgid "" "The class implementing primitive lock objects. Once a thread has acquired a " "lock, subsequent attempts to acquire it block, until it is released; any " "thread may release it." msgstr "" -#: library/threading.rst:683 +#: library/threading.rst:747 msgid "" "``Lock`` is now a class. In earlier Pythons, ``Lock`` was a factory function " "which returned an instance of the underlying private lock type." msgstr "" -#: library/threading.rst:785 +#: library/threading.rst:849 msgid "Acquire a lock, blocking or non-blocking." msgstr "" -#: library/threading.rst:693 +#: library/threading.rst:757 msgid "" "When invoked with the *blocking* argument set to ``True`` (the default), " "block until the lock is unlocked, then set it to locked and return ``True``." msgstr "" -#: library/threading.rst:696 +#: library/threading.rst:760 msgid "" "When invoked with the *blocking* argument set to ``False``, do not block. If " "a call with *blocking* set to ``True`` would block, return ``False`` " "immediately; otherwise, set the lock to locked and return ``True``." msgstr "" -#: library/threading.rst:700 +#: library/threading.rst:764 msgid "" "When invoked with the floating-point *timeout* argument set to a positive " "value, block for at most the number of seconds specified by *timeout* and as " @@ -955,56 +1036,56 @@ msgid "" "*blocking* is ``False``." msgstr "" -#: library/threading.rst:706 +#: library/threading.rst:770 msgid "" "The return value is ``True`` if the lock is acquired successfully, ``False`` " "if not (for example if the *timeout* expired)." msgstr "" -#: library/threading.rst:823 library/threading.rst:1083 +#: library/threading.rst:887 library/threading.rst:1147 msgid "The *timeout* parameter is new." msgstr "" -#: library/threading.rst:712 +#: library/threading.rst:776 msgid "" "Lock acquisition can now be interrupted by signals on POSIX if the " "underlying threading implementation supports it." msgstr "" -#: library/threading.rst:716 +#: library/threading.rst:780 msgid "Lock acquisition can now be interrupted by signals on Windows." msgstr "" -#: library/threading.rst:722 +#: library/threading.rst:786 msgid "" "Release a lock. This can be called from any thread, not only the thread " "which has acquired the lock." msgstr "" -#: library/threading.rst:725 +#: library/threading.rst:789 msgid "" "When the lock is locked, reset it to unlocked, and return. If any other " "threads are blocked waiting for the lock to become unlocked, allow exactly " "one of them to proceed." msgstr "" -#: library/threading.rst:729 +#: library/threading.rst:793 msgid "When invoked on an unlocked lock, a :exc:`RuntimeError` is raised." msgstr "" -#: library/threading.rst:839 +#: library/threading.rst:903 msgid "There is no return value." msgstr "" -#: library/threading.rst:735 +#: library/threading.rst:799 msgid "Return ``True`` if the lock is acquired." msgstr "" -#: library/threading.rst:742 -msgid "RLock Objects" +#: library/threading.rst:806 +msgid "RLock objects" msgstr "" -#: library/threading.rst:744 +#: library/threading.rst:808 msgid "" "A reentrant lock is a synchronization primitive that may be acquired " "multiple times by the same thread. Internally, it uses the concepts of " @@ -1013,13 +1094,13 @@ msgid "" "lock; in the unlocked state, no thread owns it." msgstr "" -#: library/threading.rst:750 +#: library/threading.rst:814 msgid "" "Threads call a lock's :meth:`~RLock.acquire` method to lock it, and its :" "meth:`~Lock.release` method to unlock it." msgstr "" -#: library/threading.rst:755 +#: library/threading.rst:819 msgid "" "Reentrant locks support the :ref:`context management protocol `, " "so it is recommended to use :keyword:`with` instead of manually calling :" @@ -1027,7 +1108,7 @@ msgid "" "releasing the lock for a block of code." msgstr "" -#: library/threading.rst:760 +#: library/threading.rst:824 msgid "" "RLock's :meth:`~RLock.acquire`/:meth:`~RLock.release` call pairs may be " "nested, unlike Lock's :meth:`~Lock.acquire`/:meth:`~Lock.release`. Only the " @@ -1036,7 +1117,7 @@ msgid "" "in :meth:`~RLock.acquire` to proceed." msgstr "" -#: library/threading.rst:766 +#: library/threading.rst:830 msgid "" ":meth:`~RLock.acquire`/:meth:`~RLock.release` must be used in pairs: each " "acquire must have a release in the thread that has acquired the lock. " @@ -1044,7 +1125,7 @@ msgid "" "deadlock." msgstr "" -#: library/threading.rst:773 +#: library/threading.rst:837 msgid "" "This class implements reentrant lock objects. A reentrant lock must be " "released by the thread that acquired it. Once a thread has acquired a " @@ -1052,39 +1133,39 @@ msgid "" "thread must release it once for each time it has acquired it." msgstr "" -#: library/threading.rst:778 +#: library/threading.rst:842 msgid "" "Note that ``RLock`` is actually a factory function which returns an instance " "of the most efficient version of the concrete RLock class that is supported " "by the platform." msgstr "" -#: library/threading.rst:789 +#: library/threading.rst:853 msgid ":ref:`Using RLock as a context manager `" msgstr "" -#: library/threading.rst:790 +#: library/threading.rst:854 msgid "" "Recommended over manual :meth:`!acquire` and :meth:`release` calls whenever " "practical." msgstr "" -#: library/threading.rst:794 +#: library/threading.rst:858 msgid "" "When invoked with the *blocking* argument set to ``True`` (the default):" msgstr "" -#: library/threading.rst:808 +#: library/threading.rst:872 msgid "If no thread owns the lock, acquire the lock and return immediately." msgstr "" -#: library/threading.rst:798 +#: library/threading.rst:862 msgid "" "If another thread owns the lock, block until we are able to acquire lock, or " "*timeout*, if set to a positive float value." msgstr "" -#: library/threading.rst:801 +#: library/threading.rst:865 msgid "" "If the same thread owns the lock, acquire the lock again, and return " "immediately. This is the difference between :class:`Lock` and :class:`!" @@ -1092,35 +1173,35 @@ msgid "" "until the lock can be acquired." msgstr "" -#: library/threading.rst:806 +#: library/threading.rst:870 msgid "When invoked with the *blocking* argument set to ``False``:" msgstr "" -#: library/threading.rst:810 +#: library/threading.rst:874 msgid "If another thread owns the lock, return immediately." msgstr "" -#: library/threading.rst:812 +#: library/threading.rst:876 msgid "" "If the same thread owns the lock, acquire the lock again and return " "immediately." msgstr "" -#: library/threading.rst:815 +#: library/threading.rst:879 msgid "" "In all cases, if the thread was able to acquire the lock, return ``True``. " "If the thread was unable to acquire the lock (i.e. if not blocking or the " "timeout was reached) return ``False``." msgstr "" -#: library/threading.rst:819 +#: library/threading.rst:883 msgid "" "If called multiple times, failing to call :meth:`~RLock.release` as many " "times may lead to deadlock. Consider using :class:`!RLock` as a context " "manager rather than calling acquire/release directly." msgstr "" -#: library/threading.rst:829 +#: library/threading.rst:893 msgid "" "Release a lock, decrementing the recursion level. If after the decrement it " "is zero, reset the lock to unlocked (not owned by any thread), and if any " @@ -1129,22 +1210,22 @@ msgid "" "is still nonzero, the lock remains locked and owned by the calling thread." msgstr "" -#: library/threading.rst:835 +#: library/threading.rst:899 msgid "" "Only call this method when the calling thread owns the lock. A :exc:" "`RuntimeError` is raised if this method is called when the lock is not " "acquired." msgstr "" -#: library/threading.rst:943 +#: library/threading.rst:1007 msgid "Return a boolean indicating whether this object is locked right now." msgstr "" -#: library/threading.rst:852 -msgid "Condition Objects" +#: library/threading.rst:916 +msgid "Condition objects" msgstr "" -#: library/threading.rst:854 +#: library/threading.rst:918 msgid "" "A condition variable is always associated with some kind of lock; this can " "be passed in or one will be created by default. Passing one in is useful " @@ -1152,7 +1233,7 @@ msgid "" "of the condition object: you don't have to track it separately." msgstr "" -#: library/threading.rst:859 +#: library/threading.rst:923 msgid "" "A condition variable obeys the :ref:`context management protocol `: using the ``with`` statement acquires the associated lock for the " @@ -1161,7 +1242,7 @@ msgid "" "associated lock." msgstr "" -#: library/threading.rst:865 +#: library/threading.rst:929 msgid "" "Other methods must be called with the associated lock held. The :meth:" "`~Condition.wait` method releases the lock, and then blocks until another " @@ -1170,14 +1251,14 @@ msgid "" "and returns. It is also possible to specify a timeout." msgstr "" -#: library/threading.rst:871 +#: library/threading.rst:935 msgid "" "The :meth:`~Condition.notify` method wakes up one of the threads waiting for " "the condition variable, if any are waiting. The :meth:`~Condition." "notify_all` method wakes up all threads waiting for the condition variable." msgstr "" -#: library/threading.rst:875 +#: library/threading.rst:939 msgid "" "Note: the :meth:`~Condition.notify` and :meth:`~Condition.notify_all` " "methods don't release the lock; this means that the thread or threads " @@ -1186,7 +1267,7 @@ msgid "" "or :meth:`~Condition.notify_all` finally relinquishes ownership of the lock." msgstr "" -#: library/threading.rst:881 +#: library/threading.rst:945 msgid "" "The typical programming style using condition variables uses the lock to " "synchronize access to some shared state; threads that are interested in a " @@ -1198,7 +1279,7 @@ msgid "" "situation with unlimited buffer capacity::" msgstr "" -#: library/threading.rst:890 +#: library/threading.rst:954 msgid "" "# Consume one item\n" "with cv:\n" @@ -1212,7 +1293,7 @@ msgid "" " cv.notify()" msgstr "" -#: library/threading.rst:901 +#: library/threading.rst:965 msgid "" "The ``while`` loop checking for the application's condition is necessary " "because :meth:`~Condition.wait` can return after an arbitrary long time, and " @@ -1222,7 +1303,7 @@ msgid "" "checking, and eases the computation of timeouts::" msgstr "" -#: library/threading.rst:908 +#: library/threading.rst:972 msgid "" "# Consume an item\n" "with cv:\n" @@ -1230,7 +1311,7 @@ msgid "" " get_an_available_item()" msgstr "" -#: library/threading.rst:913 +#: library/threading.rst:977 msgid "" "To choose between :meth:`~Condition.notify` and :meth:`~Condition." "notify_all`, consider whether one state change can be interesting for only " @@ -1239,44 +1320,44 @@ msgid "" "thread." msgstr "" -#: library/threading.rst:921 +#: library/threading.rst:985 msgid "" "This class implements condition variable objects. A condition variable " "allows one or more threads to wait until they are notified by another thread." msgstr "" -#: library/threading.rst:924 +#: library/threading.rst:988 msgid "" "If the *lock* argument is given and not ``None``, it must be a :class:`Lock` " "or :class:`RLock` object, and it is used as the underlying lock. Otherwise, " "a new :class:`RLock` object is created and used as the underlying lock." msgstr "" -#: library/threading.rst:1058 library/threading.rst:1156 -#: library/threading.rst:1224 +#: library/threading.rst:1122 library/threading.rst:1220 +#: library/threading.rst:1288 msgid "changed from a factory function to a class." msgstr "" -#: library/threading.rst:933 +#: library/threading.rst:997 msgid "" "Acquire the underlying lock. This method calls the corresponding method on " "the underlying lock; the return value is whatever that method returns." msgstr "" -#: library/threading.rst:938 +#: library/threading.rst:1002 msgid "" "Release the underlying lock. This method calls the corresponding method on " "the underlying lock; there is no return value." msgstr "" -#: library/threading.rst:949 +#: library/threading.rst:1013 msgid "" "Wait until notified or until a timeout occurs. If the calling thread has not " "acquired the lock when this method is called, a :exc:`RuntimeError` is " "raised." msgstr "" -#: library/threading.rst:953 +#: library/threading.rst:1017 msgid "" "This method releases the underlying lock, and then blocks until it is " "awakened by a :meth:`notify` or :meth:`notify_all` call for the same " @@ -1284,14 +1365,14 @@ msgid "" "Once awakened or timed out, it re-acquires the lock and returns." msgstr "" -#: library/threading.rst:958 +#: library/threading.rst:1022 msgid "" "When the *timeout* argument is present and not ``None``, it should be a " "floating-point number specifying a timeout for the operation in seconds (or " "fractions thereof)." msgstr "" -#: library/threading.rst:962 +#: library/threading.rst:1026 msgid "" "When the underlying lock is an :class:`RLock`, it is not released using its :" "meth:`release` method, since this may not actually unlock the lock when it " @@ -1301,24 +1382,24 @@ msgid "" "used to restore the recursion level when the lock is reacquired." msgstr "" -#: library/threading.rst:970 +#: library/threading.rst:1034 msgid "" "The return value is ``True`` unless a given *timeout* expired, in which case " "it is ``False``." msgstr "" -#: library/threading.rst:1189 +#: library/threading.rst:1253 msgid "Previously, the method always returned ``None``." msgstr "" -#: library/threading.rst:978 +#: library/threading.rst:1042 msgid "" "Wait until a condition evaluates to true. *predicate* should be a callable " "which result will be interpreted as a boolean value. A *timeout* may be " "provided giving the maximum time to wait." msgstr "" -#: library/threading.rst:982 +#: library/threading.rst:1046 msgid "" "This utility method may call :meth:`wait` repeatedly until the predicate is " "satisfied, or until a timeout occurs. The return value is the last return " @@ -1326,39 +1407,39 @@ msgid "" "out." msgstr "" -#: library/threading.rst:987 +#: library/threading.rst:1051 msgid "" "Ignoring the timeout feature, calling this method is roughly equivalent to " "writing::" msgstr "" -#: library/threading.rst:990 +#: library/threading.rst:1054 msgid "" "while not predicate():\n" " cv.wait()" msgstr "" -#: library/threading.rst:993 +#: library/threading.rst:1057 msgid "" "Therefore, the same rules apply as with :meth:`wait`: The lock must be held " "when called and is re-acquired on return. The predicate is evaluated with " "the lock held." msgstr "" -#: library/threading.rst:1001 +#: library/threading.rst:1065 msgid "" "By default, wake up one thread waiting on this condition, if any. If the " "calling thread has not acquired the lock when this method is called, a :exc:" "`RuntimeError` is raised." msgstr "" -#: library/threading.rst:1005 +#: library/threading.rst:1069 msgid "" "This method wakes up at most *n* of the threads waiting for the condition " "variable; it is a no-op if no threads are waiting." msgstr "" -#: library/threading.rst:1008 +#: library/threading.rst:1072 msgid "" "The current implementation wakes up exactly *n* threads, if at least *n* " "threads are waiting. However, it's not safe to rely on this behavior. A " @@ -1366,14 +1447,14 @@ msgid "" "threads." msgstr "" -#: library/threading.rst:1013 +#: library/threading.rst:1077 msgid "" "Note: an awakened thread does not actually return from its :meth:`wait` call " "until it can reacquire the lock. Since :meth:`notify` does not release the " "lock, its caller should." msgstr "" -#: library/threading.rst:1019 +#: library/threading.rst:1083 msgid "" "Wake up all threads waiting on this condition. This method acts like :meth:" "`notify`, but wakes up all waiting threads instead of one. If the calling " @@ -1381,15 +1462,15 @@ msgid "" "`RuntimeError` is raised." msgstr "" -#: library/threading.rst:1024 +#: library/threading.rst:1088 msgid "The method ``notifyAll`` is a deprecated alias for this method." msgstr "" -#: library/threading.rst:1030 -msgid "Semaphore Objects" +#: library/threading.rst:1094 +msgid "Semaphore objects" msgstr "" -#: library/threading.rst:1032 +#: library/threading.rst:1096 msgid "" "This is one of the oldest synchronization primitives in the history of " "computer science, invented by the early Dutch computer scientist Edsger W. " @@ -1397,7 +1478,7 @@ msgid "" "acquire` and :meth:`~Semaphore.release`)." msgstr "" -#: library/threading.rst:1037 +#: library/threading.rst:1101 msgid "" "A semaphore manages an internal counter which is decremented by each :meth:" "`~Semaphore.acquire` call and incremented by each :meth:`~Semaphore.release` " @@ -1406,12 +1487,12 @@ msgid "" "meth:`~Semaphore.release`." msgstr "" -#: library/threading.rst:1043 +#: library/threading.rst:1107 msgid "" "Semaphores also support the :ref:`context management protocol `." msgstr "" -#: library/threading.rst:1048 +#: library/threading.rst:1112 msgid "" "This class implements semaphore objects. A semaphore manages an atomic " "counter representing the number of :meth:`release` calls minus the number " @@ -1420,28 +1501,28 @@ msgid "" "If not given, *value* defaults to 1." msgstr "" -#: library/threading.rst:1054 +#: library/threading.rst:1118 msgid "" "The optional argument gives the initial *value* for the internal counter; it " "defaults to ``1``. If the *value* given is less than 0, :exc:`ValueError` is " "raised." msgstr "" -#: library/threading.rst:1063 +#: library/threading.rst:1127 msgid "Acquire a semaphore." msgstr "" -#: library/threading.rst:1065 +#: library/threading.rst:1129 msgid "When invoked without arguments:" msgstr "" -#: library/threading.rst:1067 +#: library/threading.rst:1131 msgid "" "If the internal counter is larger than zero on entry, decrement it by one " "and return ``True`` immediately." msgstr "" -#: library/threading.rst:1069 +#: library/threading.rst:1133 msgid "" "If the internal counter is zero on entry, block until awoken by a call to :" "meth:`~Semaphore.release`. Once awoken (and the counter is greater than 0), " @@ -1450,32 +1531,32 @@ msgid "" "threads are awoken should not be relied on." msgstr "" -#: library/threading.rst:1075 +#: library/threading.rst:1139 msgid "" "When invoked with *blocking* set to ``False``, do not block. If a call " "without an argument would block, return ``False`` immediately; otherwise, do " "the same thing as when called without arguments, and return ``True``." msgstr "" -#: library/threading.rst:1079 +#: library/threading.rst:1143 msgid "" "When invoked with a *timeout* other than ``None``, it will block for at most " "*timeout* seconds. If acquire does not complete successfully in that " "interval, return ``False``. Return ``True`` otherwise." msgstr "" -#: library/threading.rst:1088 +#: library/threading.rst:1152 msgid "" "Release a semaphore, incrementing the internal counter by *n*. When it was " "zero on entry and other threads are waiting for it to become larger than " "zero again, wake up *n* of those threads." msgstr "" -#: library/threading.rst:1092 +#: library/threading.rst:1156 msgid "Added the *n* parameter to release multiple waiting threads at once." msgstr "" -#: library/threading.rst:1098 +#: library/threading.rst:1162 msgid "" "Class implementing bounded semaphore objects. A bounded semaphore checks to " "make sure its current value doesn't exceed its initial value. If it does, :" @@ -1484,11 +1565,11 @@ msgid "" "times it's a sign of a bug. If not given, *value* defaults to 1." msgstr "" -#: library/threading.rst:1111 -msgid ":class:`Semaphore` Example" +#: library/threading.rst:1175 +msgid ":class:`Semaphore` example" msgstr "" -#: library/threading.rst:1113 +#: library/threading.rst:1177 msgid "" "Semaphores are often used to guard resources with limited capacity, for " "example, a database server. In any situation where the size of the resource " @@ -1496,20 +1577,20 @@ msgid "" "threads, your main thread would initialize the semaphore::" msgstr "" -#: library/threading.rst:1118 +#: library/threading.rst:1182 msgid "" "maxconnections = 5\n" "# ...\n" "pool_sema = BoundedSemaphore(value=maxconnections)" msgstr "" -#: library/threading.rst:1122 +#: library/threading.rst:1186 msgid "" "Once spawned, worker threads call the semaphore's acquire and release " "methods when they need to connect to the server::" msgstr "" -#: library/threading.rst:1125 +#: library/threading.rst:1189 msgid "" "with pool_sema:\n" " conn = connectdb()\n" @@ -1519,31 +1600,31 @@ msgid "" " conn.close()" msgstr "" -#: library/threading.rst:1132 +#: library/threading.rst:1196 msgid "" "The use of a bounded semaphore reduces the chance that a programming error " "which causes the semaphore to be released more than it's acquired will go " "undetected." msgstr "" -#: library/threading.rst:1139 -msgid "Event Objects" +#: library/threading.rst:1203 +msgid "Event objects" msgstr "" -#: library/threading.rst:1141 +#: library/threading.rst:1205 msgid "" "This is one of the simplest mechanisms for communication between threads: " "one thread signals an event and other threads wait for it." msgstr "" -#: library/threading.rst:1144 +#: library/threading.rst:1208 msgid "" "An event object manages an internal flag that can be set to true with the :" "meth:`~Event.set` method and reset to false with the :meth:`~Event.clear` " "method. The :meth:`~Event.wait` method blocks until the flag is true." msgstr "" -#: library/threading.rst:1151 +#: library/threading.rst:1215 msgid "" "Class implementing event objects. An event manages a flag that can be set " "to true with the :meth:`~Event.set` method and reset to false with the :meth:" @@ -1551,29 +1632,29 @@ msgid "" "flag is initially false." msgstr "" -#: library/threading.rst:1161 +#: library/threading.rst:1225 msgid "Return ``True`` if and only if the internal flag is true." msgstr "" -#: library/threading.rst:1163 +#: library/threading.rst:1227 msgid "The method ``isSet`` is a deprecated alias for this method." msgstr "" -#: library/threading.rst:1167 +#: library/threading.rst:1231 msgid "" "Set the internal flag to true. All threads waiting for it to become true are " "awakened. Threads that call :meth:`wait` once the flag is true will not " "block at all." msgstr "" -#: library/threading.rst:1173 +#: library/threading.rst:1237 msgid "" "Reset the internal flag to false. Subsequently, threads calling :meth:`wait` " "will block until :meth:`.set` is called to set the internal flag to true " "again." msgstr "" -#: library/threading.rst:1179 +#: library/threading.rst:1243 msgid "" "Block as long as the internal flag is false and the timeout, if given, has " "not expired. The return value represents the reason that this blocking " @@ -1582,18 +1663,18 @@ msgid "" "become true within the given wait time." msgstr "" -#: library/threading.rst:1185 +#: library/threading.rst:1249 msgid "" "When the timeout argument is present and not ``None``, it should be a " "floating-point number specifying a timeout for the operation in seconds, or " "fractions thereof." msgstr "" -#: library/threading.rst:1196 -msgid "Timer Objects" +#: library/threading.rst:1260 +msgid "Timer objects" msgstr "" -#: library/threading.rst:1198 +#: library/threading.rst:1262 msgid "" "This class represents an action that should be run only after a certain " "amount of time has passed --- a timer. :class:`Timer` is a subclass of :" @@ -1601,7 +1682,7 @@ msgid "" "threads." msgstr "" -#: library/threading.rst:1202 +#: library/threading.rst:1266 msgid "" "Timers are started, as with threads, by calling their :meth:`Timer.start " "` method. The timer can be stopped (before its action has " @@ -1610,11 +1691,11 @@ msgid "" "interval specified by the user." msgstr "" -#: library/threading.rst:1208 +#: library/threading.rst:1272 msgid "For example::" msgstr "" -#: library/threading.rst:1210 +#: library/threading.rst:1274 msgid "" "def hello():\n" " print(\"hello, world\")\n" @@ -1623,7 +1704,7 @@ msgid "" "t.start() # after 30 seconds, \"hello, world\" will be printed" msgstr "" -#: library/threading.rst:1219 +#: library/threading.rst:1283 msgid "" "Create a timer that will run *function* with arguments *args* and keyword " "arguments *kwargs*, after *interval* seconds have passed. If *args* is " @@ -1631,17 +1712,17 @@ msgid "" "``None`` (the default) then an empty dict will be used." msgstr "" -#: library/threading.rst:1229 +#: library/threading.rst:1293 msgid "" "Stop the timer, and cancel the execution of the timer's action. This will " "only work if the timer is still in its waiting stage." msgstr "" -#: library/threading.rst:1234 -msgid "Barrier Objects" +#: library/threading.rst:1298 +msgid "Barrier objects" msgstr "" -#: library/threading.rst:1238 +#: library/threading.rst:1302 msgid "" "This class provides a simple synchronization primitive for use by a fixed " "number of threads that need to wait for each other. Each of the threads " @@ -1650,18 +1731,18 @@ msgid "" "calls. At this point, the threads are released simultaneously." msgstr "" -#: library/threading.rst:1244 +#: library/threading.rst:1308 msgid "" "The barrier can be reused any number of times for the same number of threads." msgstr "" -#: library/threading.rst:1246 +#: library/threading.rst:1310 msgid "" "As an example, here is a simple way to synchronize a client and server " "thread::" msgstr "" -#: library/threading.rst:1248 +#: library/threading.rst:1312 msgid "" "b = Barrier(2, timeout=5)\n" "\n" @@ -1679,7 +1760,7 @@ msgid "" " process_client_connection(connection)" msgstr "" -#: library/threading.rst:1266 +#: library/threading.rst:1330 msgid "" "Create a barrier object for *parties* number of threads. An *action*, when " "provided, is a callable to be called by one of the threads when they are " @@ -1687,7 +1768,7 @@ msgid "" "the :meth:`wait` method." msgstr "" -#: library/threading.rst:1273 +#: library/threading.rst:1337 msgid "" "Pass the barrier. When all the threads party to the barrier have called " "this function, they are all released simultaneously. If a *timeout* is " @@ -1695,14 +1776,14 @@ msgid "" "constructor." msgstr "" -#: library/threading.rst:1278 +#: library/threading.rst:1342 msgid "" "The return value is an integer in the range 0 to *parties* -- 1, different " "for each thread. This can be used to select a thread to do some special " "housekeeping, e.g.::" msgstr "" -#: library/threading.rst:1282 +#: library/threading.rst:1346 msgid "" "i = barrier.wait()\n" "if i == 0:\n" @@ -1710,37 +1791,37 @@ msgid "" " print(\"passed the barrier\")" msgstr "" -#: library/threading.rst:1287 +#: library/threading.rst:1351 msgid "" "If an *action* was provided to the constructor, one of the threads will have " "called it prior to being released. Should this call raise an error, the " "barrier is put into the broken state." msgstr "" -#: library/threading.rst:1291 +#: library/threading.rst:1355 msgid "If the call times out, the barrier is put into the broken state." msgstr "" -#: library/threading.rst:1293 +#: library/threading.rst:1357 msgid "" "This method may raise a :class:`BrokenBarrierError` exception if the barrier " "is broken or reset while a thread is waiting." msgstr "" -#: library/threading.rst:1298 +#: library/threading.rst:1362 msgid "" "Return the barrier to the default, empty state. Any threads waiting on it " "will receive the :class:`BrokenBarrierError` exception." msgstr "" -#: library/threading.rst:1301 +#: library/threading.rst:1365 msgid "" "Note that using this function may require some external synchronization if " "there are other threads whose state is unknown. If a barrier is broken it " "may be better to just leave it and create a new one." msgstr "" -#: library/threading.rst:1307 +#: library/threading.rst:1371 msgid "" "Put the barrier into a broken state. This causes any active or future calls " "to :meth:`wait` to fail with the :class:`BrokenBarrierError`. Use this for " @@ -1748,36 +1829,36 @@ msgid "" "application." msgstr "" -#: library/threading.rst:1312 +#: library/threading.rst:1376 msgid "" "It may be preferable to simply create the barrier with a sensible *timeout* " "value to automatically guard against one of the threads going awry." msgstr "" -#: library/threading.rst:1318 +#: library/threading.rst:1382 msgid "The number of threads required to pass the barrier." msgstr "" -#: library/threading.rst:1322 +#: library/threading.rst:1386 msgid "The number of threads currently waiting in the barrier." msgstr "" -#: library/threading.rst:1326 +#: library/threading.rst:1390 msgid "A boolean that is ``True`` if the barrier is in the broken state." msgstr "" -#: library/threading.rst:1331 +#: library/threading.rst:1395 msgid "" "This exception, a subclass of :exc:`RuntimeError`, is raised when the :class:" "`Barrier` object is reset or broken." msgstr "" -#: library/threading.rst:1338 +#: library/threading.rst:1402 msgid "" "Using locks, conditions, and semaphores in the :keyword:`!with` statement" msgstr "" -#: library/threading.rst:1340 +#: library/threading.rst:1404 msgid "" "All of the objects provided by this module that have ``acquire`` and " "``release`` methods can be used as context managers for a :keyword:`with` " @@ -1786,17 +1867,17 @@ msgid "" "following snippet::" msgstr "" -#: library/threading.rst:1346 +#: library/threading.rst:1410 msgid "" "with some_lock:\n" " # do something..." msgstr "" -#: library/threading.rst:1349 +#: library/threading.rst:1413 msgid "is equivalent to::" msgstr "" -#: library/threading.rst:1351 +#: library/threading.rst:1415 msgid "" "some_lock.acquire()\n" "try:\n" @@ -1805,21 +1886,21 @@ msgid "" " some_lock.release()" msgstr "" -#: library/threading.rst:1357 +#: library/threading.rst:1421 msgid "" "Currently, :class:`Lock`, :class:`RLock`, :class:`Condition`, :class:" "`Semaphore`, and :class:`BoundedSemaphore` objects may be used as :keyword:" "`with` statement context managers." msgstr "" -#: library/threading.rst:176 +#: library/threading.rst:240 msgid "trace function" msgstr "" -#: library/threading.rst:176 +#: library/threading.rst:240 msgid "debugger" msgstr "" -#: library/threading.rst:205 +#: library/threading.rst:269 msgid "profile function" msgstr "" diff --git a/library/time.po b/library/time.po index 298e5287..1bb92974 100644 --- a/library/time.po +++ b/library/time.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/timeit.po b/library/timeit.po index 56a140f0..e6a352ba 100644 --- a/library/timeit.po +++ b/library/timeit.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/tk.po b/library/tk.po index 071e1a95..972a226f 100644 --- a/library/tk.po +++ b/library/tk.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/tkinter.colorchooser.po b/library/tkinter.colorchooser.po index 0f896c49..43d59778 100644 --- a/library/tkinter.colorchooser.po +++ b/library/tkinter.colorchooser.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/tkinter.dnd.po b/library/tkinter.dnd.po index d79bfc21..f07cf43d 100644 --- a/library/tkinter.dnd.po +++ b/library/tkinter.dnd.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/tkinter.font.po b/library/tkinter.font.po index f8965cfd..e3ceef03 100644 --- a/library/tkinter.font.po +++ b/library/tkinter.font.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/tkinter.messagebox.po b/library/tkinter.messagebox.po index 4a1ac474..0493a971 100644 --- a/library/tkinter.messagebox.po +++ b/library/tkinter.messagebox.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/tkinter.po b/library/tkinter.po index e020e959..67165f6e 100644 --- a/library/tkinter.po +++ b/library/tkinter.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/tkinter.scrolledtext.po b/library/tkinter.scrolledtext.po index c2e9922e..a4c0bbd2 100644 --- a/library/tkinter.scrolledtext.po +++ b/library/tkinter.scrolledtext.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/tkinter.ttk.po b/library/tkinter.ttk.po index 9a730562..8e36e0e4 100644 --- a/library/tkinter.ttk.po +++ b/library/tkinter.ttk.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/token.po b/library/token.po index d4d84cfe..37a007bd 100644 --- a/library/token.po +++ b/library/token.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -73,7 +73,7 @@ msgstr "" #: library/token.rst:53 msgid "" "Token value that indicates an :ref:`identifier `. Note that " -"keywords are also initially tokenized an ``NAME`` tokens." +"keywords are also initially tokenized as ``NAME`` tokens." msgstr "" #: library/token.rst:58 diff --git a/library/tokenize.po b/library/tokenize.po index 7ff8acba..b11a9560 100644 --- a/library/tokenize.po +++ b/library/tokenize.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/tomllib.po b/library/tomllib.po index d7391ee5..ee52e7f4 100644 --- a/library/tomllib.po +++ b/library/tomllib.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/trace.po b/library/trace.po index 3d54ef7d..74cf9555 100644 --- a/library/trace.po +++ b/library/trace.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/traceback.po b/library/traceback.po index d97a4e3a..d38e9942 100644 --- a/library/traceback.po +++ b/library/traceback.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/tracemalloc.po b/library/tracemalloc.po index 32e145db..febd3cb6 100644 --- a/library/tracemalloc.po +++ b/library/tracemalloc.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/tty.po b/library/tty.po index f3b0ddb4..bfbd2762 100644 --- a/library/tty.po +++ b/library/tty.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/turtle.po b/library/turtle.po index d47d9cb7..ce06ec85 100644 --- a/library/turtle.po +++ b/library/turtle.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/types.po b/library/types.po index 95614636..83fa5584 100644 --- a/library/types.po +++ b/library/types.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-22 18:56+0300\n" "Last-Translator: Marios Giannopoulos \n" "Language-Team: PyGreece \n" diff --git a/library/typing.po b/library/typing.po index 1620ecb8..a31753b6 100644 --- a/library/typing.po +++ b/library/typing.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -415,7 +415,7 @@ msgid "" "ReturnType]`` respectively." msgstr "" -#: library/typing.rst:3970 +#: library/typing.rst:3965 msgid "" "``Callable`` now supports :class:`ParamSpec` and :data:`Concatenate`. See :" "pep:`612` for more details." @@ -3245,7 +3245,7 @@ msgstr "" msgid "Typed version of :func:`collections.namedtuple`." msgstr "" -#: library/typing.rst:2451 library/typing.rst:3544 +#: library/typing.rst:2451 library/typing.rst:3545 msgid "Usage::" msgstr "" @@ -4796,46 +4796,24 @@ msgstr "" #: library/typing.rst:3502 msgid "" "This is similar to calling :meth:`annotationlib.ForwardRef.evaluate`, but " -"unlike that method, :func:`!evaluate_forward_ref` also:" -msgstr "" - -#: library/typing.rst:3505 -msgid "Recursively evaluates forward references nested within the type hint." +"unlike that method, :func:`!evaluate_forward_ref` also recursively evaluates " +"forward references nested within the type hint." msgstr "" #: library/typing.rst:3506 msgid "" -"Raises :exc:`TypeError` when it encounters certain objects that are not " -"valid type hints." -msgstr "" - -#: library/typing.rst:3508 -msgid "" -"Replaces type hints that evaluate to :const:`!None` with :class:`types." -"NoneType`." -msgstr "" - -#: library/typing.rst:3510 -msgid "" -"Supports the :attr:`~annotationlib.Format.FORWARDREF` and :attr:" -"`~annotationlib.Format.STRING` formats." -msgstr "" - -#: library/typing.rst:3513 -msgid "" "See the documentation for :meth:`annotationlib.ForwardRef.evaluate` for the " -"meaning of the *owner*, *globals*, *locals*, and *type_params* parameters. " -"*format* specifies the format of the annotation and is a member of the :" -"class:`annotationlib.Format` enum." +"meaning of the *owner*, *globals*, *locals*, *type_params*, and *format* " +"parameters." msgstr "" -#: library/typing.rst:3522 +#: library/typing.rst:3513 msgid "" "A sentinel object used to indicate that a type parameter has no default " "value. For example:" msgstr "" -#: library/typing.rst:3525 +#: library/typing.rst:3516 msgid "" ">>> T = TypeVar(\"T\")\n" ">>> T.__default__ is typing.NoDefault\n" @@ -4845,46 +4823,51 @@ msgid "" "True" msgstr "" -#: library/typing.rst:3537 +#: library/typing.rst:3528 msgid "Constant" msgstr "" -#: library/typing.rst:3541 +#: library/typing.rst:3532 msgid "" "A special constant that is assumed to be ``True`` by 3rd party static type " -"checkers. It is ``False`` at runtime." +"checkers. It's ``False`` at runtime." +msgstr "" + +#: library/typing.rst:3535 +msgid "" +"A module which is expensive to import, and which only contain types used for " +"typing annotations, can be safely imported inside an ``if TYPE_CHECKING:`` " +"block. This prevents the module from actually being imported at runtime; " +"annotations aren't eagerly evaluated (see :pep:`649`) so using undefined " +"symbols in annotations is harmless--as long as you don't later examine them. " +"Your static type analysis tool will set ``TYPE_CHECKING`` to ``True`` during " +"static type analysis, which means the module will be imported and the types " +"will be checked properly during such analysis." msgstr "" -#: library/typing.rst:3546 +#: library/typing.rst:3547 msgid "" "if TYPE_CHECKING:\n" " import expensive_mod\n" "\n" -"def fun(arg: 'expensive_mod.SomeType') -> None:\n" +"def fun(arg: expensive_mod.SomeType) -> None:\n" " local_var: expensive_mod.AnotherType = other_fun()" msgstr "" -#: library/typing.rst:3552 +#: library/typing.rst:3553 msgid "" -"The first type annotation must be enclosed in quotes, making it a \"forward " -"reference\", to hide the ``expensive_mod`` reference from the interpreter " -"runtime. Type annotations for local variables are not evaluated, so the " -"second annotation does not need to be enclosed in quotes." +"If you occasionally need to examine type annotations at runtime which may " +"contain undefined symbols, use :meth:`annotationlib.get_annotations` with a " +"``format`` parameter of :attr:`annotationlib.Format.STRING` or :attr:" +"`annotationlib.Format.FORWARDREF` to safely retrieve the annotations without " +"raising :exc:`NameError`." msgstr "" -#: library/typing.rst:3559 -msgid "" -"If ``from __future__ import annotations`` is used, annotations are not " -"evaluated at function definition time. Instead, they are stored as strings " -"in ``__annotations__``. This makes it unnecessary to use quotes around the " -"annotation (see :pep:`563`)." -msgstr "" - -#: library/typing.rst:3571 +#: library/typing.rst:3566 msgid "Deprecated aliases" msgstr "" -#: library/typing.rst:3573 +#: library/typing.rst:3568 msgid "" "This module defines several deprecated aliases to pre-existing standard " "library classes. These were originally included in the :mod:`!typing` module " @@ -4893,7 +4876,7 @@ msgid "" "pre-existing classes were enhanced to support ``[]`` (see :pep:`585`)." msgstr "" -#: library/typing.rst:3580 +#: library/typing.rst:3575 msgid "" "The redundant types are deprecated as of Python 3.9. However, while the " "aliases may be removed at some point, removal of these aliases is not " @@ -4901,7 +4884,7 @@ msgid "" "the interpreter for these aliases." msgstr "" -#: library/typing.rst:3585 +#: library/typing.rst:3580 msgid "" "If at some point it is decided to remove these deprecated aliases, a " "deprecation warning will be issued by the interpreter for at least two " @@ -4909,38 +4892,38 @@ msgid "" "`!typing` module without deprecation warnings until at least Python 3.14." msgstr "" -#: library/typing.rst:3590 +#: library/typing.rst:3585 msgid "" "Type checkers are encouraged to flag uses of the deprecated types if the " "program they are checking targets a minimum Python version of 3.9 or newer." msgstr "" -#: library/typing.rst:3596 +#: library/typing.rst:3591 msgid "Aliases to built-in types" msgstr "" -#: library/typing.rst:3600 +#: library/typing.rst:3595 msgid "Deprecated alias to :class:`dict`." msgstr "" -#: library/typing.rst:3602 +#: library/typing.rst:3597 msgid "" "Note that to annotate arguments, it is preferred to use an abstract " "collection type such as :class:`~collections.abc.Mapping` rather than to " "use :class:`dict` or :class:`!typing.Dict`." msgstr "" -#: library/typing.rst:3606 +#: library/typing.rst:3601 msgid "" ":class:`builtins.dict ` now supports subscripting (``[]``). See :pep:" "`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3612 +#: library/typing.rst:3607 msgid "Deprecated alias to :class:`list`." msgstr "" -#: library/typing.rst:3614 +#: library/typing.rst:3609 msgid "" "Note that to annotate arguments, it is preferred to use an abstract " "collection type such as :class:`~collections.abc.Sequence` or :class:" @@ -4948,136 +4931,136 @@ msgid "" "typing.List`." msgstr "" -#: library/typing.rst:3619 +#: library/typing.rst:3614 msgid "" ":class:`builtins.list ` now supports subscripting (``[]``). See :pep:" "`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3625 +#: library/typing.rst:3620 msgid "Deprecated alias to :class:`builtins.set `." msgstr "" -#: library/typing.rst:3627 +#: library/typing.rst:3622 msgid "" "Note that to annotate arguments, it is preferred to use an abstract " "collection type such as :class:`collections.abc.Set` rather than to use :" "class:`set` or :class:`typing.Set`." msgstr "" -#: library/typing.rst:3631 +#: library/typing.rst:3626 msgid "" ":class:`builtins.set ` now supports subscripting (``[]``). See :pep:" "`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3637 +#: library/typing.rst:3632 msgid "Deprecated alias to :class:`builtins.frozenset `." msgstr "" -#: library/typing.rst:3639 +#: library/typing.rst:3634 msgid "" ":class:`builtins.frozenset ` now supports subscripting (``[]``). " "See :pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3646 +#: library/typing.rst:3641 msgid "Deprecated alias for :class:`tuple`." msgstr "" -#: library/typing.rst:3648 +#: library/typing.rst:3643 msgid "" ":class:`tuple` and ``Tuple`` are special-cased in the type system; see :ref:" "`annotating-tuples` for more details." msgstr "" -#: library/typing.rst:3651 +#: library/typing.rst:3646 msgid "" ":class:`builtins.tuple ` now supports subscripting (``[]``). See :pep:" "`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3657 +#: library/typing.rst:3652 msgid "Deprecated alias to :class:`type`." msgstr "" -#: library/typing.rst:3659 +#: library/typing.rst:3654 msgid "" "See :ref:`type-of-class-objects` for details on using :class:`type` or " "``typing.Type`` in type annotations." msgstr "" -#: library/typing.rst:3664 +#: library/typing.rst:3659 msgid "" ":class:`builtins.type ` now supports subscripting (``[]``). See :pep:" "`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3671 +#: library/typing.rst:3666 msgid "Aliases to types in :mod:`collections`" msgstr "" -#: library/typing.rst:3675 +#: library/typing.rst:3670 msgid "Deprecated alias to :class:`collections.defaultdict`." msgstr "" -#: library/typing.rst:3679 +#: library/typing.rst:3674 msgid "" ":class:`collections.defaultdict` now supports subscripting (``[]``). See :" "pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3685 +#: library/typing.rst:3680 msgid "Deprecated alias to :class:`collections.OrderedDict`." msgstr "" -#: library/typing.rst:3689 +#: library/typing.rst:3684 msgid "" ":class:`collections.OrderedDict` now supports subscripting (``[]``). See :" "pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3695 +#: library/typing.rst:3690 msgid "Deprecated alias to :class:`collections.ChainMap`." msgstr "" -#: library/typing.rst:3699 +#: library/typing.rst:3694 msgid "" ":class:`collections.ChainMap` now supports subscripting (``[]``). See :pep:" "`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3705 +#: library/typing.rst:3700 msgid "Deprecated alias to :class:`collections.Counter`." msgstr "" -#: library/typing.rst:3709 +#: library/typing.rst:3704 msgid "" ":class:`collections.Counter` now supports subscripting (``[]``). See :pep:" "`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3715 +#: library/typing.rst:3710 msgid "Deprecated alias to :class:`collections.deque`." msgstr "" -#: library/typing.rst:3719 +#: library/typing.rst:3714 msgid "" ":class:`collections.deque` now supports subscripting (``[]``). See :pep:" "`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3726 +#: library/typing.rst:3721 msgid "Aliases to other concrete types" msgstr "" -#: library/typing.rst:3731 +#: library/typing.rst:3726 msgid "" "Deprecated aliases corresponding to the return types from :func:`re.compile` " "and :func:`re.match`." msgstr "" -#: library/typing.rst:3734 +#: library/typing.rst:3729 msgid "" "These types (and the corresponding functions) are generic over :data:" "`AnyStr`. ``Pattern`` can be specialised as ``Pattern[str]`` or " @@ -5085,331 +5068,331 @@ msgid "" "``Match[bytes]``." msgstr "" -#: library/typing.rst:3739 +#: library/typing.rst:3734 msgid "" "Classes ``Pattern`` and ``Match`` from :mod:`re` now support ``[]``. See :" "pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3745 +#: library/typing.rst:3740 msgid "Deprecated alias for :class:`str`." msgstr "" -#: library/typing.rst:3747 +#: library/typing.rst:3742 msgid "" "``Text`` is provided to supply a forward compatible path for Python 2 code: " "in Python 2, ``Text`` is an alias for ``unicode``." msgstr "" -#: library/typing.rst:3751 +#: library/typing.rst:3746 msgid "" "Use ``Text`` to indicate that a value must contain a unicode string in a " "manner that is compatible with both Python 2 and Python 3::" msgstr "" -#: library/typing.rst:3754 +#: library/typing.rst:3749 msgid "" "def add_unicode_checkmark(text: Text) -> Text:\n" " return text + u' \\u2713'" msgstr "" -#: library/typing.rst:3759 +#: library/typing.rst:3754 msgid "" "Python 2 is no longer supported, and most type checkers also no longer " "support type checking Python 2 code. Removal of the alias is not currently " "planned, but users are encouraged to use :class:`str` instead of ``Text``." msgstr "" -#: library/typing.rst:3769 +#: library/typing.rst:3764 msgid "Aliases to container ABCs in :mod:`collections.abc`" msgstr "" -#: library/typing.rst:3773 +#: library/typing.rst:3768 msgid "Deprecated alias to :class:`collections.abc.Set`." msgstr "" -#: library/typing.rst:3775 +#: library/typing.rst:3770 msgid "" ":class:`collections.abc.Set` now supports subscripting (``[]``). See :pep:" "`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3781 +#: library/typing.rst:3776 msgid "Deprecated alias to :class:`collections.abc.Collection`." msgstr "" -#: library/typing.rst:3785 +#: library/typing.rst:3780 msgid "" ":class:`collections.abc.Collection` now supports subscripting (``[]``). See :" "pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3791 +#: library/typing.rst:3786 msgid "Deprecated alias to :class:`collections.abc.Container`." msgstr "" -#: library/typing.rst:3793 +#: library/typing.rst:3788 msgid "" ":class:`collections.abc.Container` now supports subscripting (``[]``). See :" "pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3799 +#: library/typing.rst:3794 msgid "Deprecated alias to :class:`collections.abc.ItemsView`." msgstr "" -#: library/typing.rst:3801 +#: library/typing.rst:3796 msgid "" ":class:`collections.abc.ItemsView` now supports subscripting (``[]``). See :" "pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3807 +#: library/typing.rst:3802 msgid "Deprecated alias to :class:`collections.abc.KeysView`." msgstr "" -#: library/typing.rst:3809 +#: library/typing.rst:3804 msgid "" ":class:`collections.abc.KeysView` now supports subscripting (``[]``). See :" "pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3815 +#: library/typing.rst:3810 msgid "Deprecated alias to :class:`collections.abc.Mapping`." msgstr "" -#: library/typing.rst:3817 +#: library/typing.rst:3812 msgid "" ":class:`collections.abc.Mapping` now supports subscripting (``[]``). See :" "pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3823 +#: library/typing.rst:3818 msgid "Deprecated alias to :class:`collections.abc.MappingView`." msgstr "" -#: library/typing.rst:3825 +#: library/typing.rst:3820 msgid "" ":class:`collections.abc.MappingView` now supports subscripting (``[]``). " "See :pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3831 +#: library/typing.rst:3826 msgid "Deprecated alias to :class:`collections.abc.MutableMapping`." msgstr "" -#: library/typing.rst:3833 +#: library/typing.rst:3828 msgid "" ":class:`collections.abc.MutableMapping` now supports subscripting (``[]``). " "See :pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3840 +#: library/typing.rst:3835 msgid "Deprecated alias to :class:`collections.abc.MutableSequence`." msgstr "" -#: library/typing.rst:3842 +#: library/typing.rst:3837 msgid "" ":class:`collections.abc.MutableSequence` now supports subscripting (``[]``). " "See :pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3849 +#: library/typing.rst:3844 msgid "Deprecated alias to :class:`collections.abc.MutableSet`." msgstr "" -#: library/typing.rst:3851 +#: library/typing.rst:3846 msgid "" ":class:`collections.abc.MutableSet` now supports subscripting (``[]``). See :" "pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3857 +#: library/typing.rst:3852 msgid "Deprecated alias to :class:`collections.abc.Sequence`." msgstr "" -#: library/typing.rst:3859 +#: library/typing.rst:3854 msgid "" ":class:`collections.abc.Sequence` now supports subscripting (``[]``). See :" "pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3865 +#: library/typing.rst:3860 msgid "Deprecated alias to :class:`collections.abc.ValuesView`." msgstr "" -#: library/typing.rst:3867 +#: library/typing.rst:3862 msgid "" ":class:`collections.abc.ValuesView` now supports subscripting (``[]``). See :" "pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3874 +#: library/typing.rst:3869 msgid "Aliases to asynchronous ABCs in :mod:`collections.abc`" msgstr "" -#: library/typing.rst:3878 +#: library/typing.rst:3873 msgid "Deprecated alias to :class:`collections.abc.Coroutine`." msgstr "" -#: library/typing.rst:3880 +#: library/typing.rst:3875 msgid "" "See :ref:`annotating-generators-and-coroutines` for details on using :class:" "`collections.abc.Coroutine` and ``typing.Coroutine`` in type annotations." msgstr "" -#: library/typing.rst:3886 +#: library/typing.rst:3881 msgid "" ":class:`collections.abc.Coroutine` now supports subscripting (``[]``). See :" "pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3892 +#: library/typing.rst:3887 msgid "Deprecated alias to :class:`collections.abc.AsyncGenerator`." msgstr "" -#: library/typing.rst:3894 +#: library/typing.rst:3889 msgid "" "See :ref:`annotating-generators-and-coroutines` for details on using :class:" "`collections.abc.AsyncGenerator` and ``typing.AsyncGenerator`` in type " "annotations." msgstr "" -#: library/typing.rst:3900 +#: library/typing.rst:3895 msgid "" ":class:`collections.abc.AsyncGenerator` now supports subscripting (``[]``). " "See :pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3905 +#: library/typing.rst:3900 msgid "The ``SendType`` parameter now has a default." msgstr "" -#: library/typing.rst:3910 +#: library/typing.rst:3905 msgid "Deprecated alias to :class:`collections.abc.AsyncIterable`." msgstr "" -#: library/typing.rst:3914 +#: library/typing.rst:3909 msgid "" ":class:`collections.abc.AsyncIterable` now supports subscripting (``[]``). " "See :pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3920 +#: library/typing.rst:3915 msgid "Deprecated alias to :class:`collections.abc.AsyncIterator`." msgstr "" -#: library/typing.rst:3924 +#: library/typing.rst:3919 msgid "" ":class:`collections.abc.AsyncIterator` now supports subscripting (``[]``). " "See :pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3930 +#: library/typing.rst:3925 msgid "Deprecated alias to :class:`collections.abc.Awaitable`." msgstr "" -#: library/typing.rst:3934 +#: library/typing.rst:3929 msgid "" ":class:`collections.abc.Awaitable` now supports subscripting (``[]``). See :" "pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3941 +#: library/typing.rst:3936 msgid "Aliases to other ABCs in :mod:`collections.abc`" msgstr "" -#: library/typing.rst:3945 +#: library/typing.rst:3940 msgid "Deprecated alias to :class:`collections.abc.Iterable`." msgstr "" -#: library/typing.rst:3947 +#: library/typing.rst:3942 msgid "" ":class:`collections.abc.Iterable` now supports subscripting (``[]``). See :" "pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3953 +#: library/typing.rst:3948 msgid "Deprecated alias to :class:`collections.abc.Iterator`." msgstr "" -#: library/typing.rst:3955 +#: library/typing.rst:3950 msgid "" ":class:`collections.abc.Iterator` now supports subscripting (``[]``). See :" "pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3961 +#: library/typing.rst:3956 msgid "Deprecated alias to :class:`collections.abc.Callable`." msgstr "" -#: library/typing.rst:3963 +#: library/typing.rst:3958 msgid "" "See :ref:`annotating-callables` for details on how to use :class:" "`collections.abc.Callable` and ``typing.Callable`` in type annotations." msgstr "" -#: library/typing.rst:3966 +#: library/typing.rst:3961 msgid "" ":class:`collections.abc.Callable` now supports subscripting (``[]``). See :" "pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3976 +#: library/typing.rst:3971 msgid "Deprecated alias to :class:`collections.abc.Generator`." msgstr "" -#: library/typing.rst:3978 +#: library/typing.rst:3973 msgid "" "See :ref:`annotating-generators-and-coroutines` for details on using :class:" "`collections.abc.Generator` and ``typing.Generator`` in type annotations." msgstr "" -#: library/typing.rst:3982 +#: library/typing.rst:3977 msgid "" ":class:`collections.abc.Generator` now supports subscripting (``[]``). See :" "pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3986 +#: library/typing.rst:3981 msgid "Default values for the send and return types were added." msgstr "" -#: library/typing.rst:3991 +#: library/typing.rst:3986 msgid "Deprecated alias to :class:`collections.abc.Hashable`." msgstr "" -#: library/typing.rst:3993 +#: library/typing.rst:3988 msgid "Use :class:`collections.abc.Hashable` directly instead." msgstr "" -#: library/typing.rst:3998 +#: library/typing.rst:3993 msgid "Deprecated alias to :class:`collections.abc.Reversible`." msgstr "" -#: library/typing.rst:4000 +#: library/typing.rst:3995 msgid "" ":class:`collections.abc.Reversible` now supports subscripting (``[]``). See :" "pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:4006 +#: library/typing.rst:4001 msgid "Deprecated alias to :class:`collections.abc.Sized`." msgstr "" -#: library/typing.rst:4008 +#: library/typing.rst:4003 msgid "Use :class:`collections.abc.Sized` directly instead." msgstr "" -#: library/typing.rst:4014 +#: library/typing.rst:4009 msgid "Aliases to :mod:`contextlib` ABCs" msgstr "" -#: library/typing.rst:4018 +#: library/typing.rst:4013 msgid "Deprecated alias to :class:`contextlib.AbstractContextManager`." msgstr "" -#: library/typing.rst:4020 +#: library/typing.rst:4015 msgid "" "The first type parameter, ``T_co``, represents the type returned by the :" "meth:`~object.__enter__` method. The optional second type parameter, " @@ -5417,21 +5400,21 @@ msgid "" "returned by the :meth:`~object.__exit__` method." msgstr "" -#: library/typing.rst:4027 +#: library/typing.rst:4022 msgid "" ":class:`contextlib.AbstractContextManager` now supports subscripting " "(``[]``). See :pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:4032 +#: library/typing.rst:4027 msgid "Added the optional second type parameter, ``ExitT_co``." msgstr "" -#: library/typing.rst:4037 +#: library/typing.rst:4032 msgid "Deprecated alias to :class:`contextlib.AbstractAsyncContextManager`." msgstr "" -#: library/typing.rst:4039 +#: library/typing.rst:4034 msgid "" "The first type parameter, ``T_co``, represents the type returned by the :" "meth:`~object.__aenter__` method. The optional second type parameter, " @@ -5439,21 +5422,21 @@ msgid "" "returned by the :meth:`~object.__aexit__` method." msgstr "" -#: library/typing.rst:4046 +#: library/typing.rst:4041 msgid "" ":class:`contextlib.AbstractAsyncContextManager` now supports subscripting " "(``[]``). See :pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:4051 +#: library/typing.rst:4046 msgid "Added the optional second type parameter, ``AExitT_co``." msgstr "" -#: library/typing.rst:4055 +#: library/typing.rst:4050 msgid "Deprecation Timeline of Major Features" msgstr "" -#: library/typing.rst:4057 +#: library/typing.rst:4052 msgid "" "Certain features in ``typing`` are deprecated and may be removed in a future " "version of Python. The following table summarizes major deprecations for " @@ -5461,98 +5444,98 @@ msgid "" "listed." msgstr "" -#: library/typing.rst:4064 +#: library/typing.rst:4059 msgid "Feature" msgstr "" -#: library/typing.rst:4065 +#: library/typing.rst:4060 msgid "Deprecated in" msgstr "" -#: library/typing.rst:4066 +#: library/typing.rst:4061 msgid "Projected removal" msgstr "" -#: library/typing.rst:4067 +#: library/typing.rst:4062 msgid "PEP/issue" msgstr "" -#: library/typing.rst:4068 +#: library/typing.rst:4063 msgid "``typing`` versions of standard collections" msgstr "" -#: library/typing.rst:4069 +#: library/typing.rst:4064 msgid "3.9" msgstr "" -#: library/typing.rst:4070 +#: library/typing.rst:4065 msgid "Undecided (see :ref:`deprecated-aliases` for more information)" msgstr "" -#: library/typing.rst:4071 +#: library/typing.rst:4066 msgid ":pep:`585`" msgstr "" -#: library/typing.rst:4072 +#: library/typing.rst:4067 msgid ":data:`typing.Text`" msgstr "" -#: library/typing.rst:4073 +#: library/typing.rst:4068 msgid "3.11" msgstr "" -#: library/typing.rst:4078 library/typing.rst:4082 +#: library/typing.rst:4073 library/typing.rst:4077 msgid "Undecided" msgstr "" -#: library/typing.rst:4075 +#: library/typing.rst:4070 msgid ":gh:`92332`" msgstr "" -#: library/typing.rst:4076 +#: library/typing.rst:4071 msgid ":class:`typing.Hashable` and :class:`typing.Sized`" msgstr "" -#: library/typing.rst:4081 +#: library/typing.rst:4076 msgid "3.12" msgstr "" -#: library/typing.rst:4079 +#: library/typing.rst:4074 msgid ":gh:`94309`" msgstr "" -#: library/typing.rst:4080 +#: library/typing.rst:4075 msgid ":data:`typing.TypeAlias`" msgstr "" -#: library/typing.rst:4083 +#: library/typing.rst:4078 msgid ":pep:`695`" msgstr "" -#: library/typing.rst:4084 +#: library/typing.rst:4079 msgid ":func:`@typing.no_type_check_decorator `" msgstr "" -#: library/typing.rst:4089 +#: library/typing.rst:4084 msgid "3.13" msgstr "" -#: library/typing.rst:4086 +#: library/typing.rst:4081 msgid "3.15" msgstr "" -#: library/typing.rst:4087 +#: library/typing.rst:4082 msgid ":gh:`106309`" msgstr "" -#: library/typing.rst:4088 +#: library/typing.rst:4083 msgid ":data:`typing.AnyStr`" msgstr "" -#: library/typing.rst:4090 +#: library/typing.rst:4085 msgid "3.18" msgstr "" -#: library/typing.rst:4091 +#: library/typing.rst:4086 msgid ":gh:`105578`" msgstr "" diff --git a/library/unicodedata.po b/library/unicodedata.po index b1afce6b..651d81e2 100644 --- a/library/unicodedata.po +++ b/library/unicodedata.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/unittest.mock-examples.po b/library/unittest.mock-examples.po index bce5e00a..bbbb18d1 100644 --- a/library/unittest.mock-examples.po +++ b/library/unittest.mock-examples.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/unittest.mock.po b/library/unittest.mock.po index b066090d..5d0f0329 100644 --- a/library/unittest.mock.po +++ b/library/unittest.mock.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -2768,9 +2768,9 @@ msgstr "" #: library/unittest.mock.rst:2655 msgid "" -">>> mock.has_data()\n" +">>> mock.header_items()\n" "\n" -">>> mock.has_data.assret_called_with() # Intentional typo!" +">>> mock.header_items.assret_called_with() # Intentional typo!" msgstr "" #: library/unittest.mock.rst:2661 diff --git a/library/unittest.po b/library/unittest.po index 7016a4e1..32900ad1 100644 --- a/library/unittest.po +++ b/library/unittest.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -197,7 +197,7 @@ msgstr "" #: library/unittest.rst:112 msgid "" -"A testcase is created by subclassing :class:`unittest.TestCase`. The three " +"A test case is created by subclassing :class:`unittest.TestCase`. The three " "individual tests are defined with methods whose names start with the letters " "``test``. This naming convention informs the test runner about which " "methods represent tests." diff --git a/library/unix.po b/library/unix.po index 229e9d94..4fbb552a 100644 --- a/library/unix.po +++ b/library/unix.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/urllib.error.po b/library/urllib.error.po index 88502107..00a9d40e 100644 --- a/library/urllib.error.po +++ b/library/urllib.error.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/urllib.parse.po b/library/urllib.parse.po index 7c4ba8d1..dda7128c 100644 --- a/library/urllib.parse.po +++ b/library/urllib.parse.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/urllib.po b/library/urllib.po index 7424f1fd..bf2d2a85 100644 --- a/library/urllib.po +++ b/library/urllib.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/urllib.request.po b/library/urllib.request.po index 84d0e702..c8ec905d 100644 --- a/library/urllib.request.po +++ b/library/urllib.request.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -1283,7 +1283,7 @@ msgstr "" #: library/urllib.request.rst:1123 msgid "" "Send an HTTP request, which can be either GET or POST, depending on ``req." -"has_data()``." +"data``." msgstr "" #: library/urllib.request.rst:1130 @@ -1293,7 +1293,7 @@ msgstr "" #: library/urllib.request.rst:1135 msgid "" "Send an HTTPS request, which can be either GET or POST, depending on ``req." -"has_data()``." +"data``." msgstr "" #: library/urllib.request.rst:1142 diff --git a/library/urllib.robotparser.po b/library/urllib.robotparser.po index 7f8f5f23..46797a25 100644 --- a/library/urllib.robotparser.po +++ b/library/urllib.robotparser.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/uu.po b/library/uu.po index 03e0cf99..171543e9 100644 --- a/library/uu.po +++ b/library/uu.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/uuid.po b/library/uuid.po index 0212d790..55df7e68 100644 --- a/library/uuid.po +++ b/library/uuid.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -302,117 +302,124 @@ msgid "" "arguments are substituted for a pseudo-random integer of appropriate size." msgstr "" -#: library/uuid.rst:263 +#: library/uuid.rst:260 +msgid "" +"By default, *a*, *b* and *c* are not generated by a cryptographically secure " +"pseudo-random number generator (CSPRNG). Use :func:`uuid4` when a UUID needs " +"to be used in a security-sensitive context." +msgstr "" + +#: library/uuid.rst:267 msgid "" "The :mod:`uuid` module defines the following namespace identifiers for use " "with :func:`uuid3` or :func:`uuid5`." msgstr "" -#: library/uuid.rst:269 +#: library/uuid.rst:273 msgid "" "When this namespace is specified, the *name* string is a fully qualified " "domain name." msgstr "" -#: library/uuid.rst:275 +#: library/uuid.rst:279 msgid "When this namespace is specified, the *name* string is a URL." msgstr "" -#: library/uuid.rst:280 +#: library/uuid.rst:284 msgid "When this namespace is specified, the *name* string is an ISO OID." msgstr "" -#: library/uuid.rst:285 +#: library/uuid.rst:289 msgid "" "When this namespace is specified, the *name* string is an X.500 DN in DER or " "a text output format." msgstr "" -#: library/uuid.rst:288 +#: library/uuid.rst:292 msgid "" "The :mod:`uuid` module defines the following constants for the possible " "values of the :attr:`~UUID.variant` attribute:" msgstr "" -#: library/uuid.rst:294 +#: library/uuid.rst:298 msgid "Reserved for NCS compatibility." msgstr "" -#: library/uuid.rst:299 +#: library/uuid.rst:303 msgid "" "Specifies the UUID layout given in :rfc:`4122`. This constant is kept for " "backward compatibility even though :rfc:`4122` has been superseded by :rfc:" "`9562`." msgstr "" -#: library/uuid.rst:306 +#: library/uuid.rst:310 msgid "Reserved for Microsoft compatibility." msgstr "" -#: library/uuid.rst:311 +#: library/uuid.rst:315 msgid "Reserved for future definition." msgstr "" -#: library/uuid.rst:314 +#: library/uuid.rst:318 msgid "The :mod:`uuid` module defines the special Nil and Max UUID values:" msgstr "" -#: library/uuid.rst:319 +#: library/uuid.rst:323 msgid "" "A special form of UUID that is specified to have all 128 bits set to zero " "according to :rfc:`RFC 9562, §5.9 <9562#section-5.9>`." msgstr "" -#: library/uuid.rst:327 +#: library/uuid.rst:331 msgid "" "A special form of UUID that is specified to have all 128 bits set to one " "according to :rfc:`RFC 9562, §5.10 <9562#section-5.10>`." msgstr "" -#: library/uuid.rst:335 +#: library/uuid.rst:339 msgid ":rfc:`9562` - A Universally Unique IDentifier (UUID) URN Namespace" msgstr "" -#: library/uuid.rst:336 +#: library/uuid.rst:340 msgid "" "This specification defines a Uniform Resource Name namespace for UUIDs, the " "internal format of UUIDs, and methods of generating UUIDs." msgstr "" -#: library/uuid.rst:343 +#: library/uuid.rst:347 msgid "Command-Line Usage" msgstr "" -#: library/uuid.rst:347 +#: library/uuid.rst:351 msgid "" "The :mod:`uuid` module can be executed as a script from the command line." msgstr "" -#: library/uuid.rst:349 +#: library/uuid.rst:353 msgid "" "python -m uuid [-h] [-u {uuid1,uuid3,uuid4,uuid5,uuid6,uuid7,uuid8}] [-n " "NAMESPACE] [-N NAME]" msgstr "" -#: library/uuid.rst:353 +#: library/uuid.rst:357 msgid "The following options are accepted:" msgstr "" -#: library/uuid.rst:359 +#: library/uuid.rst:363 msgid "Show the help message and exit." msgstr "" -#: library/uuid.rst:364 +#: library/uuid.rst:368 msgid "" "Specify the function name to use to generate the uuid. By default :func:" "`uuid4` is used." msgstr "" -#: library/uuid.rst:367 +#: library/uuid.rst:371 msgid "Allow generating UUID versions 6, 7 and 8." msgstr "" -#: library/uuid.rst:373 +#: library/uuid.rst:377 msgid "" "The namespace is a ``UUID``, or ``@ns`` where ``ns`` is a well-known " "predefined UUID addressed by namespace name. Such as ``@dns``, ``@url``, " @@ -420,25 +427,25 @@ msgid "" "functions." msgstr "" -#: library/uuid.rst:380 +#: library/uuid.rst:384 msgid "" "The name used as part of generating the uuid. Only required for :func:" "`uuid3` / :func:`uuid5` functions." msgstr "" -#: library/uuid.rst:386 +#: library/uuid.rst:390 msgid "Generate *num* fresh UUIDs." msgstr "" -#: library/uuid.rst:394 +#: library/uuid.rst:398 msgid "Example" msgstr "" -#: library/uuid.rst:396 +#: library/uuid.rst:400 msgid "Here are some examples of typical usage of the :mod:`uuid` module::" msgstr "" -#: library/uuid.rst:398 +#: library/uuid.rst:402 msgid "" ">>> import uuid\n" "\n" @@ -491,17 +498,17 @@ msgid "" "datetime.datetime(...)" msgstr "" -#: library/uuid.rst:452 +#: library/uuid.rst:456 msgid "Command-Line Example" msgstr "" -#: library/uuid.rst:454 +#: library/uuid.rst:458 msgid "" "Here are some examples of typical usage of the :mod:`uuid` command-line " "interface:" msgstr "" -#: library/uuid.rst:456 +#: library/uuid.rst:460 msgid "" "# generate a random UUID - by default uuid4() is used\n" "$ python -m uuid\n" diff --git a/library/venv.po b/library/venv.po index bc4e51ff..d8a379b3 100644 --- a/library/venv.po +++ b/library/venv.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/warnings.po b/library/warnings.po index f73d40b6..72cc30b5 100644 --- a/library/warnings.po +++ b/library/warnings.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/wave.po b/library/wave.po index 2fbda643..905d1cc3 100644 --- a/library/wave.po +++ b/library/wave.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/weakref.po b/library/weakref.po index a1df2a90..71d30764 100644 --- a/library/weakref.po +++ b/library/weakref.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/webbrowser.po b/library/webbrowser.po index 2bfc00b2..f955683a 100644 --- a/library/webbrowser.po +++ b/library/webbrowser.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/windows.po b/library/windows.po index df6ebed6..d71252a0 100644 --- a/library/windows.po +++ b/library/windows.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/winreg.po b/library/winreg.po index 712f7b38..68769b6b 100644 --- a/library/winreg.po +++ b/library/winreg.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/winsound.po b/library/winsound.po index 1583ce05..0c60f63c 100644 --- a/library/winsound.po +++ b/library/winsound.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/wsgiref.po b/library/wsgiref.po index 3f17709e..41a927de 100644 --- a/library/wsgiref.po +++ b/library/wsgiref.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/xdrlib.po b/library/xdrlib.po index c23b6a69..d3ec74e5 100644 --- a/library/xdrlib.po +++ b/library/xdrlib.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/xml.dom.minidom.po b/library/xml.dom.minidom.po index de1b0d0d..b3641761 100644 --- a/library/xml.dom.minidom.po +++ b/library/xml.dom.minidom.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/xml.dom.po b/library/xml.dom.po index 5edfe984..77a1767c 100644 --- a/library/xml.dom.po +++ b/library/xml.dom.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/xml.dom.pulldom.po b/library/xml.dom.pulldom.po index 8a096d78..5bd03c70 100644 --- a/library/xml.dom.pulldom.po +++ b/library/xml.dom.pulldom.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/xml.etree.elementtree.po b/library/xml.etree.elementtree.po index 0f39266e..4c79d0a7 100644 --- a/library/xml.etree.elementtree.po +++ b/library/xml.etree.elementtree.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/xml.po b/library/xml.po index 84c578bf..dbf4056e 100644 --- a/library/xml.po +++ b/library/xml.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/xml.sax.handler.po b/library/xml.sax.handler.po index 7c6012f8..96e31662 100644 --- a/library/xml.sax.handler.po +++ b/library/xml.sax.handler.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/xml.sax.po b/library/xml.sax.po index 3c93e9c7..5af4a483 100644 --- a/library/xml.sax.po +++ b/library/xml.sax.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/xml.sax.reader.po b/library/xml.sax.reader.po index 47ae0872..3bcac94f 100644 --- a/library/xml.sax.reader.po +++ b/library/xml.sax.reader.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/xml.sax.utils.po b/library/xml.sax.utils.po index f509e350..ea8d8026 100644 --- a/library/xml.sax.utils.po +++ b/library/xml.sax.utils.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/xmlrpc.client.po b/library/xmlrpc.client.po index bb9aa322..73fb5d94 100644 --- a/library/xmlrpc.client.po +++ b/library/xmlrpc.client.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/xmlrpc.po b/library/xmlrpc.po index 3b7012b8..eb1fd8f5 100644 --- a/library/xmlrpc.po +++ b/library/xmlrpc.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/xmlrpc.server.po b/library/xmlrpc.server.po index 27b35325..3dbe3c83 100644 --- a/library/xmlrpc.server.po +++ b/library/xmlrpc.server.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/zipapp.po b/library/zipapp.po index 7763fd85..0226c81c 100644 --- a/library/zipapp.po +++ b/library/zipapp.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/zipfile.po b/library/zipfile.po index df96862e..cc310f24 100644 --- a/library/zipfile.po +++ b/library/zipfile.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/zipimport.po b/library/zipimport.po index 574187d1..8ab00ae6 100644 --- a/library/zipimport.po +++ b/library/zipimport.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/zlib.po b/library/zlib.po index 014c6e89..2e80d05c 100644 --- a/library/zlib.po +++ b/library/zlib.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/zoneinfo.po b/library/zoneinfo.po index d09882f0..1a27b3ec 100644 --- a/library/zoneinfo.po +++ b/library/zoneinfo.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/license.po b/license.po index e31bfbba..a97b1638 100644 --- a/license.po +++ b/license.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-14 22:38+0300\n" "Last-Translator: Panagiotis Skias \n" "Language-Team: PyGreece \n" @@ -289,7 +289,6 @@ msgid "PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2" msgstr "PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2" #: license.rst:98 -#, fuzzy msgid "" "1. This LICENSE AGREEMENT is between the Python Software Foundation " "(\"PSF\"), and\n" @@ -2347,11 +2346,11 @@ msgstr "" #: license.rst:1051 msgid "mimalloc" -msgstr "" +msgstr "mimalloc" #: license.rst:1053 msgid "MIT License::" -msgstr "" +msgstr "MIT Άδεια::" #: license.rst:1055 msgid "" @@ -2469,7 +2468,7 @@ msgstr "" #: license.rst:1106 msgid "Global Unbounded Sequences (GUS)" -msgstr "" +msgstr "Καθολικές Απεριόριστες Ακολουθίες (ΚΑΑ)" #: license.rst:1108 msgid "" @@ -2478,6 +2477,10 @@ msgid "" "com/freebsd/freebsd-src/blob/main/sys/kern/subr_smr.c>`_. The file is " "distributed under the 2-Clause BSD License::" msgstr "" +"Το αρχείο :file:`Python/qsbr.c` είναι προσαρμοσμένο από το σύστημα ασφαλούς " +"ανάκτησης μνήμης \"Global Unbounded Sequences\" του FreeBSD, που υλοποιείται " +"στο `subr_smr.c `_. Το αρχείο διανέμεται υπό την Άδεια 2-Clause BSD::" #: license.rst:1113 msgid "" @@ -2529,7 +2532,7 @@ msgstr "" #: license.rst:1138 msgid "Zstandard bindings" -msgstr "" +msgstr "Δεσμεύσεις Zstandard" #: license.rst:1140 msgid "" @@ -2538,9 +2541,12 @@ msgid "" "pyzstd/>`_, copyright Ma Lin and contributors. The pyzstd code is " "distributed under the 3-Clause BSD License::" msgstr "" +"Οι δεσμεύσεις Zstandard στα :file:`Modules/_zstd` και :file:`Lib/compression/" +"zstd` βασίζονται σε κώδικα από τη βιβλιοθήκη `pyzstd library `_, πνευματικής ιδιοκτησίας του Ma Lin και των " +"συνεργατών του. Ο κώδικας της pyzstd διανέμεται υπό την άδεια 3-Clause BSD." #: license.rst:1145 -#, fuzzy msgid "" "Copyright (c) 2020-present, Ma Lin and contributors.\n" "All rights reserved.\n" diff --git a/reference/compound_stmts.po b/reference/compound_stmts.po index e5a5e5a2..df7ed20f 100644 --- a/reference/compound_stmts.po +++ b/reference/compound_stmts.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -144,13 +144,13 @@ msgstr "" #: reference/compound_stmts.rst:160 msgid "" -"The ``starred_list`` expression is evaluated once; it should yield an :term:" -"`iterable` object. An :term:`iterator` is created for that iterable. The " -"first item provided by the iterator is then assigned to the target list " -"using the standard rules for assignments (see :ref:`assignment`), and the " -"suite is executed. This repeats for each item provided by the iterator. " -"When the iterator is exhausted, the suite in the :keyword:`!else` clause, if " -"present, is executed, and the loop terminates." +"The :token:`~python-grammar:starred_expression_list` expression is evaluated " +"once; it should yield an :term:`iterable` object. An :term:`iterator` is " +"created for that iterable. The first item provided by the iterator is then " +"assigned to the target list using the standard rules for assignments (see :" +"ref:`assignment`), and the suite is executed. This repeats for each item " +"provided by the iterator. When the iterator is exhausted, the suite in the :" +"keyword:`!else` clause, if present, is executed, and the loop terminates." msgstr "" #: reference/compound_stmts.rst:173 @@ -1474,7 +1474,7 @@ msgstr "" msgid ":class:`int`" msgstr "" -#: reference/compound_stmts.rst:1167 reference/compound_stmts.rst:1919 +#: reference/compound_stmts.rst:1167 reference/compound_stmts.rst:1925 msgid ":class:`list`" msgstr "" @@ -1486,7 +1486,7 @@ msgstr "" msgid ":class:`str`" msgstr "" -#: reference/compound_stmts.rst:1170 reference/compound_stmts.rst:1922 +#: reference/compound_stmts.rst:1170 reference/compound_stmts.rst:1928 msgid ":class:`tuple`" msgstr "" @@ -2414,7 +2414,7 @@ msgstr "" #: reference/compound_stmts.rst:1888 msgid "" -"By default, annotations are lazily evaluated in a :ref:`annotation scope " +"By default, annotations are lazily evaluated in an :ref:`annotation scope " "`. This means that they are not evaluated when the code " "containing the annotation is evaluated. Instead, the interpreter saves " "information that can be used to evaluate the annotation later if requested. " @@ -2435,97 +2435,106 @@ msgid "" "{'param': 'annotation'}" msgstr "" -#: reference/compound_stmts.rst:1903 +#: reference/compound_stmts.rst:1901 +msgid "" +"This future statement will be deprecated and removed in a future version of " +"Python, but not before Python 3.13 reaches its end of life (see :pep:`749`). " +"When it is used, introspection tools like :func:`annotationlib." +"get_annotations` and :func:`typing.get_type_hints` are less likely to be " +"able to resolve annotations at runtime." +msgstr "" + +#: reference/compound_stmts.rst:1909 msgid "Footnotes" msgstr "" -#: reference/compound_stmts.rst:1904 +#: reference/compound_stmts.rst:1910 msgid "" "The exception is propagated to the invocation stack unless there is a :" "keyword:`finally` clause which happens to raise another exception. That new " "exception causes the old one to be lost." msgstr "" -#: reference/compound_stmts.rst:1908 +#: reference/compound_stmts.rst:1914 msgid "In pattern matching, a sequence is defined as one of the following:" msgstr "" -#: reference/compound_stmts.rst:1910 +#: reference/compound_stmts.rst:1916 msgid "a class that inherits from :class:`collections.abc.Sequence`" msgstr "" -#: reference/compound_stmts.rst:1911 +#: reference/compound_stmts.rst:1917 msgid "" "a Python class that has been registered as :class:`collections.abc.Sequence`" msgstr "" -#: reference/compound_stmts.rst:1912 +#: reference/compound_stmts.rst:1918 msgid "" "a builtin class that has its (CPython) :c:macro:`Py_TPFLAGS_SEQUENCE` bit set" msgstr "" -#: reference/compound_stmts.rst:1913 reference/compound_stmts.rst:1932 +#: reference/compound_stmts.rst:1919 reference/compound_stmts.rst:1938 msgid "a class that inherits from any of the above" msgstr "" -#: reference/compound_stmts.rst:1915 +#: reference/compound_stmts.rst:1921 msgid "The following standard library classes are sequences:" msgstr "" -#: reference/compound_stmts.rst:1917 +#: reference/compound_stmts.rst:1923 msgid ":class:`array.array`" msgstr "" -#: reference/compound_stmts.rst:1918 +#: reference/compound_stmts.rst:1924 msgid ":class:`collections.deque`" msgstr "" -#: reference/compound_stmts.rst:1920 +#: reference/compound_stmts.rst:1926 msgid ":class:`memoryview`" msgstr "" -#: reference/compound_stmts.rst:1921 +#: reference/compound_stmts.rst:1927 msgid ":class:`range`" msgstr "" -#: reference/compound_stmts.rst:1924 +#: reference/compound_stmts.rst:1930 msgid "" "Subject values of type ``str``, ``bytes``, and ``bytearray`` do not match " "sequence patterns." msgstr "" -#: reference/compound_stmts.rst:1927 +#: reference/compound_stmts.rst:1933 msgid "In pattern matching, a mapping is defined as one of the following:" msgstr "" -#: reference/compound_stmts.rst:1929 +#: reference/compound_stmts.rst:1935 msgid "a class that inherits from :class:`collections.abc.Mapping`" msgstr "" -#: reference/compound_stmts.rst:1930 +#: reference/compound_stmts.rst:1936 msgid "" "a Python class that has been registered as :class:`collections.abc.Mapping`" msgstr "" -#: reference/compound_stmts.rst:1931 +#: reference/compound_stmts.rst:1937 msgid "" "a builtin class that has its (CPython) :c:macro:`Py_TPFLAGS_MAPPING` bit set" msgstr "" -#: reference/compound_stmts.rst:1934 +#: reference/compound_stmts.rst:1940 msgid "" "The standard library classes :class:`dict` and :class:`types." "MappingProxyType` are mappings." msgstr "" -#: reference/compound_stmts.rst:1937 +#: reference/compound_stmts.rst:1943 msgid "" "A string literal appearing as the first statement in the function body is " "transformed into the function's :attr:`~function.__doc__` attribute and " "therefore the function's :term:`docstring`." msgstr "" -#: reference/compound_stmts.rst:1941 +#: reference/compound_stmts.rst:1947 msgid "" "A string literal appearing as the first statement in the class body is " "transformed into the namespace's :attr:`~type.__doc__` item and therefore " diff --git a/reference/datamodel.po b/reference/datamodel.po index 0a338f9c..8e3a423e 100644 --- a/reference/datamodel.po +++ b/reference/datamodel.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -313,11 +313,11 @@ msgid "" "``\"True\"`` are returned, respectively." msgstr "" -#: reference/datamodel.rst:266 +#: reference/datamodel.rst:268 msgid ":class:`numbers.Real` (:class:`float`)" msgstr "" -#: reference/datamodel.rst:274 +#: reference/datamodel.rst:276 msgid "" "These represent machine-level double precision floating-point numbers. You " "are at the mercy of the underlying machine architecture (and C or Java " @@ -328,11 +328,11 @@ msgid "" "complicate the language with two kinds of floating-point numbers." msgstr "" -#: reference/datamodel.rst:284 +#: reference/datamodel.rst:286 msgid ":class:`numbers.Complex` (:class:`complex`)" msgstr "" -#: reference/datamodel.rst:290 +#: reference/datamodel.rst:292 msgid "" "These represent complex numbers as a pair of machine-level double precision " "floating-point numbers. The same caveats apply as for floating-point " @@ -340,11 +340,11 @@ msgid "" "retrieved through the read-only attributes ``z.real`` and ``z.imag``." msgstr "" -#: reference/datamodel.rst:297 +#: reference/datamodel.rst:299 msgid "Sequences" msgstr "" -#: reference/datamodel.rst:306 +#: reference/datamodel.rst:308 msgid "" "These represent finite ordered sets indexed by non-negative numbers. The " "built-in function :func:`len` returns the number of items of a sequence. " @@ -355,7 +355,7 @@ msgid "" "second to last item of sequence a with length ``n``." msgstr "" -#: reference/datamodel.rst:316 +#: reference/datamodel.rst:318 msgid "" "Sequences also support slicing: ``a[i:j]`` selects all items with index *k* " "such that *i* ``<=`` *k* ``<`` *j*. When used as an expression, a slice is " @@ -363,22 +363,22 @@ msgid "" "applies to negative slice positions." msgstr "" -#: reference/datamodel.rst:321 +#: reference/datamodel.rst:323 msgid "" "Some sequences also support \"extended slicing\" with a third \"step\" " "parameter: ``a[i:j:k]`` selects all items of *a* with index *x* where ``x = " "i + n*k``, *n* ``>=`` ``0`` and *i* ``<=`` *x* ``<`` *j*." msgstr "" -#: reference/datamodel.rst:325 +#: reference/datamodel.rst:327 msgid "Sequences are distinguished according to their mutability:" msgstr "" -#: reference/datamodel.rst:329 +#: reference/datamodel.rst:331 msgid "Immutable sequences" msgstr "" -#: reference/datamodel.rst:335 +#: reference/datamodel.rst:337 msgid "" "An object of an immutable sequence type cannot change once it is created. " "(If the object contains references to other objects, these other objects may " @@ -386,15 +386,15 @@ msgid "" "referenced by an immutable object cannot change.)" msgstr "" -#: reference/datamodel.rst:340 +#: reference/datamodel.rst:342 msgid "The following types are immutable sequences:" msgstr "" -#: reference/datamodel.rst:345 +#: reference/datamodel.rst:347 msgid "Strings" msgstr "" -#: reference/datamodel.rst:353 +#: reference/datamodel.rst:355 msgid "" "A string is a sequence of values that represent Unicode code points. All the " "code points in the range ``U+0000 - U+10FFFF`` can be represented in a " @@ -408,11 +408,11 @@ msgid "" "to achieve the opposite." msgstr "" -#: reference/datamodel.rst:365 +#: reference/datamodel.rst:367 msgid "Tuples" msgstr "" -#: reference/datamodel.rst:371 +#: reference/datamodel.rst:373 msgid "" "The items of a tuple are arbitrary Python objects. Tuples of two or more " "items are formed by comma-separated lists of expressions. A tuple of one " @@ -422,11 +422,11 @@ msgid "" "empty pair of parentheses." msgstr "" -#: reference/datamodel.rst:378 +#: reference/datamodel.rst:380 msgid "Bytes" msgstr "" -#: reference/datamodel.rst:381 +#: reference/datamodel.rst:383 msgid "" "A bytes object is an immutable array. The items are 8-bit bytes, " "represented by integers in the range 0 <= x < 256. Bytes literals (like " @@ -435,43 +435,43 @@ msgid "" "`~bytes.decode` method." msgstr "" -#: reference/datamodel.rst:389 +#: reference/datamodel.rst:391 msgid "Mutable sequences" msgstr "" -#: reference/datamodel.rst:398 +#: reference/datamodel.rst:400 msgid "" "Mutable sequences can be changed after they are created. The subscription " "and slicing notations can be used as the target of assignment and :keyword:" "`del` (delete) statements." msgstr "" -#: reference/datamodel.rst:406 +#: reference/datamodel.rst:408 msgid "" "The :mod:`collections` and :mod:`array` module provide additional examples " "of mutable sequence types." msgstr "" -#: reference/datamodel.rst:409 +#: reference/datamodel.rst:411 msgid "There are currently two intrinsic mutable sequence types:" msgstr "" -#: reference/datamodel.rst:411 +#: reference/datamodel.rst:413 msgid "Lists" msgstr "" -#: reference/datamodel.rst:414 +#: reference/datamodel.rst:416 msgid "" "The items of a list are arbitrary Python objects. Lists are formed by " "placing a comma-separated list of expressions in square brackets. (Note that " "there are no special cases needed to form lists of length 0 or 1.)" msgstr "" -#: reference/datamodel.rst:418 +#: reference/datamodel.rst:420 msgid "Byte Arrays" msgstr "" -#: reference/datamodel.rst:421 +#: reference/datamodel.rst:423 msgid "" "A bytearray object is a mutable array. They are created by the built-in :" "func:`bytearray` constructor. Aside from being mutable (and hence " @@ -479,11 +479,11 @@ msgid "" "functionality as immutable :class:`bytes` objects." msgstr "" -#: reference/datamodel.rst:428 +#: reference/datamodel.rst:430 msgid "Set types" msgstr "" -#: reference/datamodel.rst:434 +#: reference/datamodel.rst:436 msgid "" "These represent unordered, finite sets of unique, immutable objects. As " "such, they cannot be indexed by any subscript. However, they can be iterated " @@ -493,7 +493,7 @@ msgid "" "union, difference, and symmetric difference." msgstr "" -#: reference/datamodel.rst:441 +#: reference/datamodel.rst:443 msgid "" "For set elements, the same immutability rules apply as for dictionary keys. " "Note that numeric types obey the normal rules for numeric comparison: if two " @@ -501,37 +501,37 @@ msgid "" "contained in a set." msgstr "" -#: reference/datamodel.rst:446 +#: reference/datamodel.rst:448 msgid "There are currently two intrinsic set types:" msgstr "" -#: reference/datamodel.rst:449 +#: reference/datamodel.rst:451 msgid "Sets" msgstr "" -#: reference/datamodel.rst:452 +#: reference/datamodel.rst:454 msgid "" "These represent a mutable set. They are created by the built-in :func:`set` " "constructor and can be modified afterwards by several methods, such as :meth:" "`~set.add`." msgstr "" -#: reference/datamodel.rst:457 +#: reference/datamodel.rst:459 msgid "Frozen sets" msgstr "" -#: reference/datamodel.rst:460 +#: reference/datamodel.rst:462 msgid "" "These represent an immutable set. They are created by the built-in :func:" "`frozenset` constructor. As a frozenset is immutable and :term:`hashable`, " "it can be used again as an element of another set, or as a dictionary key." msgstr "" -#: reference/datamodel.rst:467 +#: reference/datamodel.rst:469 msgid "Mappings" msgstr "" -#: reference/datamodel.rst:474 +#: reference/datamodel.rst:476 msgid "" "These represent finite sets of objects indexed by arbitrary index sets. The " "subscript notation ``a[k]`` selects the item indexed by ``k`` from the " @@ -540,15 +540,15 @@ msgid "" "returns the number of items in a mapping." msgstr "" -#: reference/datamodel.rst:480 +#: reference/datamodel.rst:482 msgid "There is currently a single intrinsic mapping type:" msgstr "" -#: reference/datamodel.rst:484 +#: reference/datamodel.rst:486 msgid "Dictionaries" msgstr "" -#: reference/datamodel.rst:488 +#: reference/datamodel.rst:490 msgid "" "These represent finite sets of objects indexed by nearly arbitrary values. " "The only types of values not acceptable as keys are values containing lists " @@ -560,7 +560,7 @@ msgid "" "interchangeably to index the same dictionary entry." msgstr "" -#: reference/datamodel.rst:497 +#: reference/datamodel.rst:499 msgid "" "Dictionaries preserve insertion order, meaning that keys will be produced in " "the same order they were added sequentially over the dictionary. Replacing " @@ -568,128 +568,128 @@ msgid "" "inserting it will add it to the end instead of keeping its old place." msgstr "" -#: reference/datamodel.rst:502 +#: reference/datamodel.rst:504 msgid "" "Dictionaries are mutable; they can be created by the ``{}`` notation (see " "section :ref:`dict`)." msgstr "" -#: reference/datamodel.rst:509 +#: reference/datamodel.rst:511 msgid "" "The extension modules :mod:`dbm.ndbm` and :mod:`dbm.gnu` provide additional " "examples of mapping types, as does the :mod:`collections` module." msgstr "" -#: reference/datamodel.rst:513 +#: reference/datamodel.rst:515 msgid "" "Dictionaries did not preserve insertion order in versions of Python before " "3.6. In CPython 3.6, insertion order was preserved, but it was considered an " "implementation detail at that time rather than a language guarantee." msgstr "" -#: reference/datamodel.rst:520 +#: reference/datamodel.rst:522 msgid "Callable types" msgstr "" -#: reference/datamodel.rst:528 +#: reference/datamodel.rst:530 msgid "" "These are the types to which the function call operation (see section :ref:" "`calls`) can be applied:" msgstr "" -#: reference/datamodel.rst:535 +#: reference/datamodel.rst:537 msgid "User-defined functions" msgstr "" -#: reference/datamodel.rst:542 +#: reference/datamodel.rst:544 msgid "" "A user-defined function object is created by a function definition (see " "section :ref:`function`). It should be called with an argument list " "containing the same number of items as the function's formal parameter list." msgstr "" -#: reference/datamodel.rst:1429 reference/datamodel.rst:1629 +#: reference/datamodel.rst:1443 reference/datamodel.rst:1643 msgid "Special read-only attributes" msgstr "" -#: reference/datamodel.rst:594 reference/datamodel.rst:1196 +#: reference/datamodel.rst:596 reference/datamodel.rst:1198 msgid "Attribute" msgstr "" -#: reference/datamodel.rst:595 reference/datamodel.rst:1197 +#: reference/datamodel.rst:597 reference/datamodel.rst:1199 msgid "Meaning" msgstr "" -#: reference/datamodel.rst:562 +#: reference/datamodel.rst:564 msgid "" "A reference to the :class:`dictionary ` that holds the function's :ref:" "`global variables ` -- the global namespace of the module in which " "the function was defined." msgstr "" -#: reference/datamodel.rst:567 +#: reference/datamodel.rst:569 msgid "" "``None`` or a :class:`tuple` of cells that contain bindings for the names " "specified in the :attr:`~codeobject.co_freevars` attribute of the " "function's :attr:`code object `." msgstr "" -#: reference/datamodel.rst:571 +#: reference/datamodel.rst:573 msgid "" "A cell object has the attribute ``cell_contents``. This can be used to get " "the value of the cell, as well as set the value." msgstr "" -#: reference/datamodel.rst:1671 +#: reference/datamodel.rst:1685 msgid "Special writable attributes" msgstr "" -#: reference/datamodel.rst:589 +#: reference/datamodel.rst:591 msgid "Most of these attributes check the type of the assigned value:" msgstr "" -#: reference/datamodel.rst:598 +#: reference/datamodel.rst:600 msgid "The function's documentation string, or ``None`` if unavailable." msgstr "" -#: reference/datamodel.rst:601 +#: reference/datamodel.rst:603 msgid "" "The function's name. See also: :attr:`__name__ attributes `." msgstr "" -#: reference/datamodel.rst:605 +#: reference/datamodel.rst:607 msgid "" "The function's :term:`qualified name`. See also: :attr:`__qualname__ " "attributes `." msgstr "" -#: reference/datamodel.rst:611 +#: reference/datamodel.rst:613 msgid "" "The name of the module the function was defined in, or ``None`` if " "unavailable." msgstr "" -#: reference/datamodel.rst:615 +#: reference/datamodel.rst:617 msgid "" "A :class:`tuple` containing default :term:`parameter` values for those " "parameters that have defaults, or ``None`` if no parameters have a default " "value." msgstr "" -#: reference/datamodel.rst:620 +#: reference/datamodel.rst:622 msgid "" "The :ref:`code object ` representing the compiled function " "body." msgstr "" -#: reference/datamodel.rst:624 +#: reference/datamodel.rst:626 msgid "" "The namespace supporting arbitrary function attributes. See also: :attr:" "`__dict__ attributes `." msgstr "" -#: reference/datamodel.rst:628 +#: reference/datamodel.rst:630 msgid "" "A :class:`dictionary ` containing annotations of :term:`parameters " "`. The keys of the dictionary are the parameter names, and " @@ -697,100 +697,100 @@ msgid "" "__annotations__`." msgstr "" -#: reference/datamodel.rst:1103 reference/datamodel.rst:1235 +#: reference/datamodel.rst:1105 reference/datamodel.rst:1249 msgid "" "Annotations are now :ref:`lazily evaluated `. See :pep:" "`649`." msgstr "" -#: reference/datamodel.rst:639 +#: reference/datamodel.rst:641 msgid "" "The :term:`annotate function` for this function, or ``None`` if the function " "has no annotations. See :attr:`object.__annotate__`." msgstr "" -#: reference/datamodel.rst:645 +#: reference/datamodel.rst:647 msgid "" "A :class:`dictionary ` containing defaults for keyword-only :term:" "`parameters `." msgstr "" -#: reference/datamodel.rst:649 +#: reference/datamodel.rst:651 msgid "" "A :class:`tuple` containing the :ref:`type parameters ` of a :" "ref:`generic function `." msgstr "" -#: reference/datamodel.rst:654 +#: reference/datamodel.rst:656 msgid "" "Function objects also support getting and setting arbitrary attributes, " "which can be used, for example, to attach metadata to functions. Regular " "attribute dot-notation is used to get and set such attributes." msgstr "" -#: reference/datamodel.rst:660 +#: reference/datamodel.rst:662 msgid "" "CPython's current implementation only supports function attributes on user-" "defined functions. Function attributes on :ref:`built-in functions ` may be supported in the future." msgstr "" -#: reference/datamodel.rst:665 +#: reference/datamodel.rst:667 msgid "" "Additional information about a function's definition can be retrieved from " "its :ref:`code object ` (accessible via the :attr:`~function." "__code__` attribute)." msgstr "" -#: reference/datamodel.rst:673 +#: reference/datamodel.rst:675 msgid "Instance methods" msgstr "" -#: reference/datamodel.rst:680 +#: reference/datamodel.rst:682 msgid "" "An instance method object combines a class, a class instance and any " "callable object (normally a user-defined function)." msgstr "" -#: reference/datamodel.rst:1767 +#: reference/datamodel.rst:1781 msgid "Special read-only attributes:" msgstr "" -#: reference/datamodel.rst:695 +#: reference/datamodel.rst:697 msgid "" "Refers to the class instance object to which the method is :ref:`bound " "`" msgstr "" -#: reference/datamodel.rst:699 +#: reference/datamodel.rst:701 msgid "Refers to the original :ref:`function object `" msgstr "" -#: reference/datamodel.rst:702 +#: reference/datamodel.rst:704 msgid "" "The method's documentation (same as :attr:`method.__func__.__doc__ `). A :class:`string ` if the original function had a " "docstring, else ``None``." msgstr "" -#: reference/datamodel.rst:708 +#: reference/datamodel.rst:710 msgid "" "The name of the method (same as :attr:`method.__func__.__name__ `)" msgstr "" -#: reference/datamodel.rst:712 +#: reference/datamodel.rst:714 msgid "" "The name of the module the method was defined in, or ``None`` if unavailable." msgstr "" -#: reference/datamodel.rst:715 +#: reference/datamodel.rst:717 msgid "" "Methods also support accessing (but not setting) the arbitrary function " "attributes on the underlying :ref:`function object `." msgstr "" -#: reference/datamodel.rst:718 +#: reference/datamodel.rst:720 msgid "" "User-defined method objects may be created when getting an attribute of a " "class (perhaps via an instance of that class), if that attribute is a user-" @@ -798,7 +798,7 @@ msgid "" "`classmethod` object." msgstr "" -#: reference/datamodel.rst:725 +#: reference/datamodel.rst:727 msgid "" "When an instance method object is created by retrieving a user-defined :ref:" "`function object ` from a class via one of its " @@ -807,7 +807,7 @@ msgid "" "__func__` attribute is the original function object." msgstr "" -#: reference/datamodel.rst:731 +#: reference/datamodel.rst:733 msgid "" "When an instance method object is created by retrieving a :class:" "`classmethod` object from a class or instance, its :attr:`~method.__self__` " @@ -815,7 +815,7 @@ msgid "" "the function object underlying the class method." msgstr "" -#: reference/datamodel.rst:736 +#: reference/datamodel.rst:738 msgid "" "When an instance method object is called, the underlying function (:attr:" "`~method.__func__`) is called, inserting the class instance (:attr:`~method." @@ -825,7 +825,7 @@ msgid "" "f(x, 1)``." msgstr "" -#: reference/datamodel.rst:743 +#: reference/datamodel.rst:745 msgid "" "When an instance method object is derived from a :class:`classmethod` " "object, the \"class instance\" stored in :attr:`~method.__self__` will " @@ -834,18 +834,18 @@ msgid "" "function." msgstr "" -#: reference/datamodel.rst:748 +#: reference/datamodel.rst:750 msgid "" "It is important to note that user-defined functions which are attributes of " "a class instance are not converted to bound methods; this *only* happens " "when the function is an attribute of the class." msgstr "" -#: reference/datamodel.rst:755 +#: reference/datamodel.rst:757 msgid "Generator functions" msgstr "" -#: reference/datamodel.rst:761 +#: reference/datamodel.rst:763 msgid "" "A function or method which uses the :keyword:`yield` statement (see section :" "ref:`yield`) is called a :dfn:`generator function`. Such a function, when " @@ -858,11 +858,11 @@ msgid "" "values to be returned." msgstr "" -#: reference/datamodel.rst:773 +#: reference/datamodel.rst:775 msgid "Coroutine functions" msgstr "" -#: reference/datamodel.rst:778 +#: reference/datamodel.rst:780 msgid "" "A function or method which is defined using :keyword:`async def` is called " "a :dfn:`coroutine function`. Such a function, when called, returns a :term:" @@ -871,11 +871,11 @@ msgid "" "ref:`coroutine-objects` section." msgstr "" -#: reference/datamodel.rst:786 +#: reference/datamodel.rst:788 msgid "Asynchronous generator functions" msgstr "" -#: reference/datamodel.rst:792 +#: reference/datamodel.rst:794 msgid "" "A function or method which is defined using :keyword:`async def` and which " "uses the :keyword:`yield` statement is called a :dfn:`asynchronous generator " @@ -884,7 +884,7 @@ msgid "" "execute the body of the function." msgstr "" -#: reference/datamodel.rst:798 +#: reference/datamodel.rst:800 msgid "" "Calling the asynchronous iterator's :meth:`aiterator.__anext__ ` method will return an :term:`awaitable` which when awaited will " @@ -895,11 +895,11 @@ msgid "" "yielded." msgstr "" -#: reference/datamodel.rst:811 +#: reference/datamodel.rst:813 msgid "Built-in functions" msgstr "" -#: reference/datamodel.rst:818 +#: reference/datamodel.rst:820 msgid "" "A built-in function object is a wrapper around a C function. Examples of " "built-in functions are :func:`len` and :func:`math.sin` (:mod:`math` is a " @@ -907,32 +907,32 @@ msgid "" "determined by the C function. Special read-only attributes:" msgstr "" -#: reference/datamodel.rst:823 +#: reference/datamodel.rst:825 msgid "" ":attr:`!__doc__` is the function's documentation string, or ``None`` if " "unavailable. See :attr:`function.__doc__`." msgstr "" -#: reference/datamodel.rst:825 +#: reference/datamodel.rst:827 msgid "" ":attr:`!__name__` is the function's name. See :attr:`function.__name__`." msgstr "" -#: reference/datamodel.rst:826 +#: reference/datamodel.rst:828 msgid ":attr:`!__self__` is set to ``None`` (but see the next item)." msgstr "" -#: reference/datamodel.rst:827 +#: reference/datamodel.rst:829 msgid "" ":attr:`!__module__` is the name of the module the function was defined in or " "``None`` if unavailable. See :attr:`function.__module__`." msgstr "" -#: reference/datamodel.rst:835 +#: reference/datamodel.rst:837 msgid "Built-in methods" msgstr "" -#: reference/datamodel.rst:842 +#: reference/datamodel.rst:844 msgid "" "This is really a different disguise of a built-in function, this time " "containing an object passed to the C function as an implicit extra " @@ -943,11 +943,11 @@ msgid "" "__self__>`.)" msgstr "" -#: reference/datamodel.rst:852 +#: reference/datamodel.rst:854 msgid "Classes" msgstr "" -#: reference/datamodel.rst:854 +#: reference/datamodel.rst:856 msgid "" "Classes are callable. These objects normally act as factories for new " "instances of themselves, but variations are possible for class types that " @@ -956,21 +956,21 @@ msgid "" "initialize the new instance." msgstr "" -#: reference/datamodel.rst:862 +#: reference/datamodel.rst:864 msgid "Class Instances" msgstr "" -#: reference/datamodel.rst:864 +#: reference/datamodel.rst:866 msgid "" "Instances of arbitrary classes can be made callable by defining a :meth:" "`~object.__call__` method in their class." msgstr "" -#: reference/datamodel.rst:871 +#: reference/datamodel.rst:873 msgid "Modules" msgstr "" -#: reference/datamodel.rst:877 +#: reference/datamodel.rst:879 msgid "" "Modules are a basic organizational unit of Python code, and are created by " "the :ref:`import system ` as invoked either by the :keyword:" @@ -985,17 +985,17 @@ msgid "" "done)." msgstr "" -#: reference/datamodel.rst:890 +#: reference/datamodel.rst:892 msgid "" "Attribute assignment updates the module's namespace dictionary, e.g., ``m.x " "= 1`` is equivalent to ``m.__dict__[\"x\"] = 1``." msgstr "" -#: reference/datamodel.rst:909 +#: reference/datamodel.rst:911 msgid "Import-related attributes on module objects" msgstr "" -#: reference/datamodel.rst:911 +#: reference/datamodel.rst:913 msgid "" "Module objects have the following attributes that relate to the :ref:`import " "system `. When a module is created using the machinery " @@ -1004,7 +1004,7 @@ msgid "" "and loads the module." msgstr "" -#: reference/datamodel.rst:917 +#: reference/datamodel.rst:919 msgid "" "To create a module dynamically rather than using the import system, it's " "recommended to use :func:`importlib.util.module_from_spec`, which will set " @@ -1015,7 +1015,7 @@ msgid "" "approach." msgstr "" -#: reference/datamodel.rst:927 +#: reference/datamodel.rst:929 msgid "" "With the exception of :attr:`~module.__name__`, it is **strongly** " "recommended that you rely on :attr:`~module.__spec__` and its attributes " @@ -1024,7 +1024,7 @@ msgid "" "corresponding attribute on the module itself:" msgstr "" -#: reference/datamodel.rst:933 +#: reference/datamodel.rst:935 msgid "" ">>> import typing\n" ">>> typing.__name__, typing.__spec__.name\n" @@ -1037,34 +1037,34 @@ msgid "" "('keyboard_smashing', 'spelling')" msgstr "" -#: reference/datamodel.rst:947 +#: reference/datamodel.rst:949 msgid "" "The name used to uniquely identify the module in the import system. For a " "directly executed module, this will be set to ``\"__main__\"``." msgstr "" -#: reference/datamodel.rst:950 +#: reference/datamodel.rst:952 msgid "" "This attribute must be set to the fully qualified name of the module. It is " "expected to match the value of :attr:`module.__spec__.name `." msgstr "" -#: reference/datamodel.rst:956 +#: reference/datamodel.rst:958 msgid "A record of the module's import-system-related state." msgstr "" -#: reference/datamodel.rst:958 +#: reference/datamodel.rst:960 msgid "" "Set to the :class:`module spec ` that was " "used when importing the module. See :ref:`module-specs` for more details." msgstr "" -#: reference/datamodel.rst:965 +#: reference/datamodel.rst:967 msgid "The :term:`package` a module belongs to." msgstr "" -#: reference/datamodel.rst:967 +#: reference/datamodel.rst:969 msgid "" "If the module is top-level (that is, not a part of any specific package) " "then the attribute should be set to ``''`` (the empty string). Otherwise, it " @@ -1073,7 +1073,7 @@ msgid "" "for further details." msgstr "" -#: reference/datamodel.rst:973 +#: reference/datamodel.rst:975 msgid "" "This attribute is used instead of :attr:`~module.__name__` to calculate " "explicit relative imports for main modules. It defaults to ``None`` for " @@ -1082,7 +1082,7 @@ msgid "" "is set to a :class:`str`." msgstr "" -#: reference/datamodel.rst:979 +#: reference/datamodel.rst:981 msgid "" "It is **strongly** recommended that you use :attr:`module.__spec__.parent " "` instead of :attr:`!module." @@ -1090,14 +1090,14 @@ msgid "" "__spec__.parent` is not set, and this fallback path is deprecated." msgstr "" -#: reference/datamodel.rst:1026 +#: reference/datamodel.rst:1028 msgid "" "This attribute now defaults to ``None`` for modules created dynamically " "using the :class:`types.ModuleType` constructor. Previously the attribute " "was optional." msgstr "" -#: reference/datamodel.rst:990 +#: reference/datamodel.rst:992 msgid "" "The value of :attr:`!__package__` is expected to be the same as :attr:" "`__spec__.parent `. :attr:" @@ -1105,38 +1105,38 @@ msgid "" "attr:`!__spec__.parent` is not defined." msgstr "" -#: reference/datamodel.rst:996 +#: reference/datamodel.rst:998 msgid "" ":exc:`ImportWarning` is raised if an import resolution falls back to :attr:`!" "__package__` instead of :attr:`__spec__.parent `." msgstr "" -#: reference/datamodel.rst:1001 +#: reference/datamodel.rst:1003 msgid "" "Raise :exc:`DeprecationWarning` instead of :exc:`ImportWarning` when falling " "back to :attr:`!__package__` during import resolution." msgstr "" -#: reference/datamodel.rst:1005 +#: reference/datamodel.rst:1007 msgid "" ":attr:`!__package__` will cease to be set or taken into consideration by the " "import system or standard library." msgstr "" -#: reference/datamodel.rst:1011 +#: reference/datamodel.rst:1013 msgid "" "The :term:`loader` object that the import machinery used to load the module." msgstr "" -#: reference/datamodel.rst:1013 +#: reference/datamodel.rst:1015 msgid "" "This attribute is mostly useful for introspection, but can be used for " "additional loader-specific functionality, for example getting data " "associated with a loader." msgstr "" -#: reference/datamodel.rst:1017 +#: reference/datamodel.rst:1019 msgid "" ":attr:`!__loader__` defaults to ``None`` for modules created dynamically " "using the :class:`types.ModuleType` constructor; use :func:`importlib.util." @@ -1144,14 +1144,14 @@ msgid "" "object." msgstr "" -#: reference/datamodel.rst:1022 +#: reference/datamodel.rst:1024 msgid "" "It is **strongly** recommended that you use :attr:`module.__spec__.loader " "` instead of :attr:`!module." "__loader__`." msgstr "" -#: reference/datamodel.rst:1031 +#: reference/datamodel.rst:1033 msgid "" "Setting :attr:`!__loader__` on a module while failing to set :attr:`!" "__spec__.loader` is deprecated. In Python 3.16, :attr:`!__loader__` will " @@ -1159,7 +1159,7 @@ msgid "" "standard library." msgstr "" -#: reference/datamodel.rst:1039 +#: reference/datamodel.rst:1041 msgid "" "A (possibly empty) :term:`sequence` of strings enumerating the locations " "where the package's submodules will be found. Non-package modules should not " @@ -1167,21 +1167,21 @@ msgid "" "details." msgstr "" -#: reference/datamodel.rst:1044 +#: reference/datamodel.rst:1046 msgid "" "It is **strongly** recommended that you use :attr:`module.__spec__." "submodule_search_locations ` instead of :attr:`!module.__path__`." msgstr "" -#: reference/datamodel.rst:1051 +#: reference/datamodel.rst:1053 msgid "" ":attr:`!__file__` and :attr:`!__cached__` are both optional attributes that " "may or may not be set. Both attributes should be a :class:`str` when they " "are available." msgstr "" -#: reference/datamodel.rst:1055 +#: reference/datamodel.rst:1057 msgid "" ":attr:`!__file__` indicates the pathname of the file from which the module " "was loaded (if loaded from a file), or the pathname of the shared library " @@ -1192,7 +1192,7 @@ msgid "" "example, a module loaded from a database)." msgstr "" -#: reference/datamodel.rst:1063 +#: reference/datamodel.rst:1065 msgid "" "If :attr:`!__file__` is set then the :attr:`!__cached__` attribute might " "also be set, which is the path to any compiled version of the code (for " @@ -1201,7 +1201,7 @@ msgid "" "exist (see :pep:`3147`)." msgstr "" -#: reference/datamodel.rst:1069 +#: reference/datamodel.rst:1071 msgid "" "Note that :attr:`!__cached__` may be set even if :attr:`!__file__` is not " "set. However, that scenario is quite atypical. Ultimately, the :term:" @@ -1211,14 +1211,14 @@ msgid "" "file, that atypical scenario may be appropriate." msgstr "" -#: reference/datamodel.rst:1076 +#: reference/datamodel.rst:1078 msgid "" "It is **strongly** recommended that you use :attr:`module.__spec__.cached " "` instead of :attr:`!module." "__cached__`." msgstr "" -#: reference/datamodel.rst:1080 +#: reference/datamodel.rst:1082 msgid "" "Setting :attr:`!__cached__` on a module while failing to set :attr:`!" "__spec__.cached` is deprecated. In Python 3.15, :attr:`!__cached__` will " @@ -1226,51 +1226,51 @@ msgid "" "library." msgstr "" -#: reference/datamodel.rst:1087 +#: reference/datamodel.rst:1089 msgid "Other writable attributes on module objects" msgstr "" -#: reference/datamodel.rst:1089 +#: reference/datamodel.rst:1091 msgid "" "As well as the import-related attributes listed above, module objects also " "have the following writable attributes:" msgstr "" -#: reference/datamodel.rst:1094 +#: reference/datamodel.rst:1096 msgid "" "The module's documentation string, or ``None`` if unavailable. See also: :" "attr:`__doc__ attributes `." msgstr "" -#: reference/datamodel.rst:1099 +#: reference/datamodel.rst:1101 msgid "" "A dictionary containing :term:`variable annotations ` " "collected during module body execution. For best practices on working with :" "attr:`!__annotations__`, see :mod:`annotationlib`." msgstr "" -#: reference/datamodel.rst:1109 +#: reference/datamodel.rst:1111 msgid "" "The :term:`annotate function` for this module, or ``None`` if the module has " "no annotations. See also: :attr:`~object.__annotate__` attributes." msgstr "" -#: reference/datamodel.rst:1115 +#: reference/datamodel.rst:1117 msgid "Module dictionaries" msgstr "" -#: reference/datamodel.rst:1117 +#: reference/datamodel.rst:1119 msgid "Module objects also have the following special read-only attribute:" msgstr "" -#: reference/datamodel.rst:1122 +#: reference/datamodel.rst:1124 msgid "" "The module's namespace as a dictionary object. Uniquely among the attributes " "listed here, :attr:`!__dict__` cannot be accessed as a global variable from " "within a module; it can only be accessed as an attribute on module objects." msgstr "" -#: reference/datamodel.rst:1128 +#: reference/datamodel.rst:1130 msgid "" "Because of the way CPython clears module dictionaries, the module dictionary " "will be cleared when the module falls out of scope even if the dictionary " @@ -1278,11 +1278,11 @@ msgid "" "module around while using its dictionary directly." msgstr "" -#: reference/datamodel.rst:1137 +#: reference/datamodel.rst:1139 msgid "Custom classes" msgstr "" -#: reference/datamodel.rst:1139 +#: reference/datamodel.rst:1141 msgid "" "Custom class types are typically created by class definitions (see section :" "ref:`class`). A class has a namespace implemented by a dictionary object. " @@ -1297,7 +1297,7 @@ msgid "" "found at :ref:`python_2.3_mro`." msgstr "" -#: reference/datamodel.rst:1160 +#: reference/datamodel.rst:1162 msgid "" "When a class attribute reference (for class :class:`!C`, say) would yield a " "class method object, it is transformed into an instance method object whose :" @@ -1308,129 +1308,144 @@ msgid "" "contained in its :attr:`~object.__dict__`." msgstr "" -#: reference/datamodel.rst:1171 +#: reference/datamodel.rst:1173 msgid "" "Class attribute assignments update the class's dictionary, never the " "dictionary of a base class." msgstr "" -#: reference/datamodel.rst:1176 +#: reference/datamodel.rst:1178 msgid "" "A class object can be called (see above) to yield a class instance (see " "below)." msgstr "" -#: reference/datamodel.rst:1335 +#: reference/datamodel.rst:1349 msgid "Special attributes" msgstr "" -#: reference/datamodel.rst:1200 +#: reference/datamodel.rst:1202 msgid "" "The class's name. See also: :attr:`__name__ attributes `." msgstr "" -#: reference/datamodel.rst:1204 +#: reference/datamodel.rst:1206 msgid "" "The class's :term:`qualified name`. See also: :attr:`__qualname__ attributes " "`." msgstr "" -#: reference/datamodel.rst:1208 +#: reference/datamodel.rst:1210 msgid "The name of the module in which the class was defined." msgstr "" -#: reference/datamodel.rst:1211 +#: reference/datamodel.rst:1213 msgid "" "A :class:`mapping proxy ` providing a read-only view " "of the class's namespace. See also: :attr:`__dict__ attributes `." msgstr "" -#: reference/datamodel.rst:1216 +#: reference/datamodel.rst:1218 msgid "" "A :class:`tuple` containing the class's bases. In most cases, for a class " "defined as ``class X(A, B, C)``, ``X.__bases__`` will be exactly equal to " "``(A, B, C)``." msgstr "" -#: reference/datamodel.rst:1221 +#: reference/datamodel.rst:1223 msgid "" "The class's documentation string, or ``None`` if undefined. Not inherited by " "subclasses." msgstr "" -#: reference/datamodel.rst:1225 +#: reference/datamodel.rst:1227 msgid "" "A dictionary containing :term:`variable annotations ` " "collected during class body execution. See also: :attr:`__annotations__ " "attributes `." msgstr "" -#: reference/datamodel.rst:1230 +#: reference/datamodel.rst:1232 msgid "" "For best practices on working with :attr:`~object.__annotations__`, please " -"see :mod:`annotationlib`. Where possible, use :func:`annotationlib." -"get_annotations` instead of accessing this attribute directly." +"see :mod:`annotationlib`. Use :func:`annotationlib.get_annotations` instead " +"of accessing this attribute directly." +msgstr "" + +#: reference/datamodel.rst:1239 +msgid "" +"Accessing the :attr:`!__annotations__` attribute directly on a class object " +"may return annotations for the wrong class, specifically in certain cases " +"where the class, its base class, or a metaclass is defined under ``from " +"__future__ import annotations``. See :pep:`749 <749#pep749-metaclasses>` for " +"details." +msgstr "" + +#: reference/datamodel.rst:1245 +msgid "" +"This attribute does not exist on certain builtin classes. On user-defined " +"classes without ``__annotations__``, it is an empty dictionary." msgstr "" -#: reference/datamodel.rst:1240 +#: reference/datamodel.rst:1254 msgid "" "The :term:`annotate function` for this class, or ``None`` if the class has " "no annotations. See also: :attr:`__annotate__ attributes `." msgstr "" -#: reference/datamodel.rst:1247 +#: reference/datamodel.rst:1261 msgid "" "A :class:`tuple` containing the :ref:`type parameters ` of a :" "ref:`generic class `." msgstr "" -#: reference/datamodel.rst:1253 +#: reference/datamodel.rst:1267 msgid "" "A :class:`tuple` containing names of attributes of this class which are " "assigned through ``self.X`` from any function in its body." msgstr "" -#: reference/datamodel.rst:1259 +#: reference/datamodel.rst:1273 msgid "" "The line number of the first line of the class definition, including " "decorators. Setting the :attr:`__module__` attribute removes the :attr:`!" "__firstlineno__` item from the type's dictionary." msgstr "" -#: reference/datamodel.rst:1267 +#: reference/datamodel.rst:1281 msgid "" "The :class:`tuple` of classes that are considered when looking for base " "classes during method resolution." msgstr "" -#: reference/datamodel.rst:1272 +#: reference/datamodel.rst:1286 msgid "Special methods" msgstr "" -#: reference/datamodel.rst:1274 +#: reference/datamodel.rst:1288 msgid "" "In addition to the special attributes described above, all Python classes " "also have the following two methods available:" msgstr "" -#: reference/datamodel.rst:1279 +#: reference/datamodel.rst:1293 msgid "" "This method can be overridden by a metaclass to customize the method " "resolution order for its instances. It is called at class instantiation, " "and its result is stored in :attr:`~type.__mro__`." msgstr "" -#: reference/datamodel.rst:1285 +#: reference/datamodel.rst:1299 msgid "" "Each class keeps a list of weak references to its immediate subclasses. This " "method returns a list of all those references still alive. The list is in " "definition order. Example:" msgstr "" -#: reference/datamodel.rst:1289 +#: reference/datamodel.rst:1303 msgid "" ">>> class A: pass\n" ">>> class B(A): pass\n" @@ -1438,11 +1453,11 @@ msgid "" "[]" msgstr "" -#: reference/datamodel.rst:1297 +#: reference/datamodel.rst:1311 msgid "Class instances" msgstr "" -#: reference/datamodel.rst:1305 +#: reference/datamodel.rst:1319 msgid "" "A class instance is created by calling a class object (see above). A class " "instance has a namespace implemented as a dictionary which is the first " @@ -1459,7 +1474,7 @@ msgid "" "__getattr__` method, that is called to satisfy the lookup." msgstr "" -#: reference/datamodel.rst:1321 +#: reference/datamodel.rst:1335 msgid "" "Attribute assignments and deletions update the instance's dictionary, never " "a class's dictionary. If the class has a :meth:`~object.__setattr__` or :" @@ -1467,28 +1482,28 @@ msgid "" "instance dictionary directly." msgstr "" -#: reference/datamodel.rst:1331 +#: reference/datamodel.rst:1345 msgid "" "Class instances can pretend to be numbers, sequences, or mappings if they " "have methods with certain special names. See section :ref:`specialnames`." msgstr "" -#: reference/datamodel.rst:1343 +#: reference/datamodel.rst:1357 msgid "The class to which a class instance belongs." msgstr "" -#: reference/datamodel.rst:1347 +#: reference/datamodel.rst:1361 msgid "" "A dictionary or other mapping object used to store an object's (writable) " "attributes. Not all instances have a :attr:`!__dict__` attribute; see the " "section on :ref:`slots` for more details." msgstr "" -#: reference/datamodel.rst:1353 +#: reference/datamodel.rst:1367 msgid "I/O objects (also known as file objects)" msgstr "" -#: reference/datamodel.rst:1368 +#: reference/datamodel.rst:1382 msgid "" "A :term:`file object` represents an open file. Various shortcuts are " "available to create file objects: the :func:`open` built-in function, and " @@ -1497,7 +1512,7 @@ msgid "" "methods provided by extension modules)." msgstr "" -#: reference/datamodel.rst:1374 +#: reference/datamodel.rst:1388 msgid "" "The objects ``sys.stdin``, ``sys.stdout`` and ``sys.stderr`` are initialized " "to file objects corresponding to the interpreter's standard input, output " @@ -1505,22 +1520,22 @@ msgid "" "interface defined by the :class:`io.TextIOBase` abstract class." msgstr "" -#: reference/datamodel.rst:1382 +#: reference/datamodel.rst:1396 msgid "Internal types" msgstr "" -#: reference/datamodel.rst:1388 +#: reference/datamodel.rst:1402 msgid "" "A few types used internally by the interpreter are exposed to the user. " "Their definitions may change with future versions of the interpreter, but " "they are mentioned here for completeness." msgstr "" -#: reference/datamodel.rst:1396 +#: reference/datamodel.rst:1410 msgid "Code objects" msgstr "" -#: reference/datamodel.rst:1400 +#: reference/datamodel.rst:1414 msgid "" "Code objects represent *byte-compiled* executable Python code, or :term:" "`bytecode`. The difference between a code object and a function object is " @@ -1532,111 +1547,111 @@ msgid "" "no references (directly or indirectly) to mutable objects." msgstr "" -#: reference/datamodel.rst:1434 +#: reference/datamodel.rst:1448 msgid "The function name" msgstr "" -#: reference/datamodel.rst:1437 +#: reference/datamodel.rst:1451 msgid "The fully qualified function name" msgstr "" -#: reference/datamodel.rst:1442 +#: reference/datamodel.rst:1456 msgid "" "The total number of positional :term:`parameters ` (including " "positional-only parameters and parameters with default values) that the " "function has" msgstr "" -#: reference/datamodel.rst:1447 +#: reference/datamodel.rst:1461 msgid "" "The number of positional-only :term:`parameters ` (including " "arguments with default values) that the function has" msgstr "" -#: reference/datamodel.rst:1451 +#: reference/datamodel.rst:1465 msgid "" "The number of keyword-only :term:`parameters ` (including " "arguments with default values) that the function has" msgstr "" -#: reference/datamodel.rst:1455 +#: reference/datamodel.rst:1469 msgid "" "The number of :ref:`local variables ` used by the function " "(including parameters)" msgstr "" -#: reference/datamodel.rst:1459 +#: reference/datamodel.rst:1473 msgid "" "A :class:`tuple` containing the names of the local variables in the function " "(starting with the parameter names)" msgstr "" -#: reference/datamodel.rst:1463 +#: reference/datamodel.rst:1477 msgid "" "A :class:`tuple` containing the names of :ref:`local variables ` " "that are referenced from at least one :term:`nested scope` inside the " "function" msgstr "" -#: reference/datamodel.rst:1467 +#: reference/datamodel.rst:1481 msgid "" "A :class:`tuple` containing the names of :term:`free (closure) variables " "` that a :term:`nested scope` references in an outer " "scope. See also :attr:`function.__closure__`." msgstr "" -#: reference/datamodel.rst:1471 +#: reference/datamodel.rst:1485 msgid "Note: references to global and builtin names are *not* included." msgstr "" -#: reference/datamodel.rst:1474 +#: reference/datamodel.rst:1488 msgid "" "A string representing the sequence of :term:`bytecode` instructions in the " "function" msgstr "" -#: reference/datamodel.rst:1478 +#: reference/datamodel.rst:1492 msgid "" "A :class:`tuple` containing the literals used by the :term:`bytecode` in the " "function" msgstr "" -#: reference/datamodel.rst:1482 +#: reference/datamodel.rst:1496 msgid "" "A :class:`tuple` containing the names used by the :term:`bytecode` in the " "function" msgstr "" -#: reference/datamodel.rst:1486 +#: reference/datamodel.rst:1500 msgid "The name of the file from which the code was compiled" msgstr "" -#: reference/datamodel.rst:1489 +#: reference/datamodel.rst:1503 msgid "The line number of the first line of the function" msgstr "" -#: reference/datamodel.rst:1492 +#: reference/datamodel.rst:1506 msgid "" "A string encoding the mapping from :term:`bytecode` offsets to line numbers. " "For details, see the source code of the interpreter." msgstr "" -#: reference/datamodel.rst:1495 +#: reference/datamodel.rst:1509 msgid "" "This attribute of code objects is deprecated, and may be removed in Python " "3.15." msgstr "" -#: reference/datamodel.rst:1500 +#: reference/datamodel.rst:1514 msgid "The required stack size of the code object" msgstr "" -#: reference/datamodel.rst:1503 +#: reference/datamodel.rst:1517 msgid "" "An :class:`integer ` encoding a number of flags for the interpreter." msgstr "" -#: reference/datamodel.rst:1508 +#: reference/datamodel.rst:1522 msgid "" "The following flag bits are defined for :attr:`~codeobject.co_flags`: bit " "``0x04`` is set if the function uses the ``*arguments`` syntax to accept an " @@ -1647,7 +1662,7 @@ msgid "" "might be present." msgstr "" -#: reference/datamodel.rst:1516 +#: reference/datamodel.rst:1530 msgid "" "Future feature declarations (for example, ``from __future__ import " "division``) also use bits in :attr:`~codeobject.co_flags` to indicate " @@ -1655,12 +1670,12 @@ msgid "" "attr:`~__future__._Feature.compiler_flag`." msgstr "" -#: reference/datamodel.rst:1520 +#: reference/datamodel.rst:1534 msgid "" "Other bits in :attr:`~codeobject.co_flags` are reserved for internal use." msgstr "" -#: reference/datamodel.rst:1524 +#: reference/datamodel.rst:1538 msgid "" "If a code object represents a function and has a docstring, the :data:" "`~inspect.CO_HAS_DOCSTRING` bit is set in :attr:`~codeobject.co_flags` and " @@ -1668,17 +1683,17 @@ msgid "" "function." msgstr "" -#: reference/datamodel.rst:1530 +#: reference/datamodel.rst:1544 msgid "Methods on code objects" msgstr "" -#: reference/datamodel.rst:1534 +#: reference/datamodel.rst:1548 msgid "" "Returns an iterable over the source code positions of each :term:`bytecode` " "instruction in the code object." msgstr "" -#: reference/datamodel.rst:1537 +#: reference/datamodel.rst:1551 msgid "" "The iterator returns :class:`tuple`\\s containing the ``(start_line, " "end_line, start_column, end_column)``. The *i-th* tuple corresponds to the " @@ -1686,37 +1701,37 @@ msgid "" "information is 0-indexed utf-8 byte offsets on the given source line." msgstr "" -#: reference/datamodel.rst:1543 +#: reference/datamodel.rst:1557 msgid "" "This positional information can be missing. A non-exhaustive lists of cases " "where this may happen:" msgstr "" -#: reference/datamodel.rst:1546 +#: reference/datamodel.rst:1560 msgid "Running the interpreter with :option:`-X` ``no_debug_ranges``." msgstr "" -#: reference/datamodel.rst:1547 +#: reference/datamodel.rst:1561 msgid "" "Loading a pyc file compiled while using :option:`-X` ``no_debug_ranges``." msgstr "" -#: reference/datamodel.rst:1548 +#: reference/datamodel.rst:1562 msgid "Position tuples corresponding to artificial instructions." msgstr "" -#: reference/datamodel.rst:1549 +#: reference/datamodel.rst:1563 msgid "" "Line and column numbers that can't be represented due to implementation " "specific limitations." msgstr "" -#: reference/datamodel.rst:1552 +#: reference/datamodel.rst:1566 msgid "" "When this occurs, some or all of the tuple elements can be :const:`None`." msgstr "" -#: reference/datamodel.rst:1558 +#: reference/datamodel.rst:1572 msgid "" "This feature requires storing column positions in code objects which may " "result in a small increase of disk usage of compiled Python files or " @@ -1726,155 +1741,155 @@ msgid "" "environment variable can be used." msgstr "" -#: reference/datamodel.rst:1567 +#: reference/datamodel.rst:1581 msgid "" "Returns an iterator that yields information about successive ranges of :term:" "`bytecode`\\s. Each item yielded is a ``(start, end, lineno)`` :class:" "`tuple`:" msgstr "" -#: reference/datamodel.rst:1571 +#: reference/datamodel.rst:1585 msgid "" "``start`` (an :class:`int`) represents the offset (inclusive) of the start " "of the :term:`bytecode` range" msgstr "" -#: reference/datamodel.rst:1573 +#: reference/datamodel.rst:1587 msgid "" "``end`` (an :class:`int`) represents the offset (exclusive) of the end of " "the :term:`bytecode` range" msgstr "" -#: reference/datamodel.rst:1575 +#: reference/datamodel.rst:1589 msgid "" "``lineno`` is an :class:`int` representing the line number of the :term:" "`bytecode` range, or ``None`` if the bytecodes in the given range have no " "line number" msgstr "" -#: reference/datamodel.rst:1579 +#: reference/datamodel.rst:1593 msgid "The items yielded will have the following properties:" msgstr "" -#: reference/datamodel.rst:1581 +#: reference/datamodel.rst:1595 msgid "The first range yielded will have a ``start`` of 0." msgstr "" -#: reference/datamodel.rst:1582 +#: reference/datamodel.rst:1596 msgid "" "The ``(start, end)`` ranges will be non-decreasing and consecutive. That is, " "for any pair of :class:`tuple`\\s, the ``start`` of the second will be equal " "to the ``end`` of the first." msgstr "" -#: reference/datamodel.rst:1585 +#: reference/datamodel.rst:1599 msgid "No range will be backwards: ``end >= start`` for all triples." msgstr "" -#: reference/datamodel.rst:1586 +#: reference/datamodel.rst:1600 msgid "" "The last :class:`tuple` yielded will have ``end`` equal to the size of the :" "term:`bytecode`." msgstr "" -#: reference/datamodel.rst:1589 +#: reference/datamodel.rst:1603 msgid "" "Zero-width ranges, where ``start == end``, are allowed. Zero-width ranges " "are used for lines that are present in the source code, but have been " "eliminated by the :term:`bytecode` compiler." msgstr "" -#: reference/datamodel.rst:1597 +#: reference/datamodel.rst:1611 msgid ":pep:`626` - Precise line numbers for debugging and other tools." msgstr "" -#: reference/datamodel.rst:1598 +#: reference/datamodel.rst:1612 msgid "The PEP that introduced the :meth:`!co_lines` method." msgstr "" -#: reference/datamodel.rst:1602 +#: reference/datamodel.rst:1616 msgid "" "Return a copy of the code object with new values for the specified fields." msgstr "" -#: reference/datamodel.rst:1604 +#: reference/datamodel.rst:1618 msgid "" "Code objects are also supported by the generic function :func:`copy.replace`." msgstr "" -#: reference/datamodel.rst:1612 +#: reference/datamodel.rst:1626 msgid "Frame objects" msgstr "" -#: reference/datamodel.rst:1616 +#: reference/datamodel.rst:1630 msgid "" "Frame objects represent execution frames. They may occur in :ref:`traceback " "objects `, and are also passed to registered trace " "functions." msgstr "" -#: reference/datamodel.rst:1634 +#: reference/datamodel.rst:1648 msgid "" "Points to the previous stack frame (towards the caller), or ``None`` if this " "is the bottom stack frame" msgstr "" -#: reference/datamodel.rst:1638 +#: reference/datamodel.rst:1652 msgid "" "The :ref:`code object ` being executed in this frame. " "Accessing this attribute raises an :ref:`auditing event ` ``object." "__getattr__`` with arguments ``obj`` and ``\"f_code\"``." msgstr "" -#: reference/datamodel.rst:1643 +#: reference/datamodel.rst:1657 msgid "" "The mapping used by the frame to look up :ref:`local variables `. If " "the frame refers to an :term:`optimized scope`, this may return a write-" "through proxy object." msgstr "" -#: reference/datamodel.rst:1648 +#: reference/datamodel.rst:1662 msgid "Return a proxy for optimized scopes." msgstr "" -#: reference/datamodel.rst:1652 +#: reference/datamodel.rst:1666 msgid "" "The dictionary used by the frame to look up :ref:`global variables `" msgstr "" -#: reference/datamodel.rst:1656 +#: reference/datamodel.rst:1670 msgid "" "The dictionary used by the frame to look up :ref:`built-in (intrinsic) names " "`" msgstr "" -#: reference/datamodel.rst:1660 +#: reference/datamodel.rst:1674 msgid "" "The \"precise instruction\" of the frame object (this is an index into the :" "term:`bytecode` string of the :ref:`code object `)" msgstr "" -#: reference/datamodel.rst:1676 +#: reference/datamodel.rst:1690 msgid "" "If not ``None``, this is a function called for various events during code " "execution (this is used by debuggers). Normally an event is triggered for " "each new source line (see :attr:`~frame.f_trace_lines`)." msgstr "" -#: reference/datamodel.rst:1681 +#: reference/datamodel.rst:1695 msgid "" "Set this attribute to :const:`False` to disable triggering a tracing event " "for each source line." msgstr "" -#: reference/datamodel.rst:1685 +#: reference/datamodel.rst:1699 msgid "" "Set this attribute to :const:`True` to allow per-opcode events to be " "requested. Note that this may lead to undefined interpreter behaviour if " "exceptions raised by the trace function escape to the function being traced." msgstr "" -#: reference/datamodel.rst:1691 +#: reference/datamodel.rst:1705 msgid "" "The current line number of the frame -- writing to this from within a trace " "function jumps to the given line (only for the bottom-most frame). A " @@ -1882,15 +1897,15 @@ msgid "" "this attribute." msgstr "" -#: reference/datamodel.rst:1697 +#: reference/datamodel.rst:1711 msgid "Frame object methods" msgstr "" -#: reference/datamodel.rst:1699 +#: reference/datamodel.rst:1713 msgid "Frame objects support one method:" msgstr "" -#: reference/datamodel.rst:1703 +#: reference/datamodel.rst:1717 msgid "" "This method clears all references to :ref:`local variables ` held by " "the frame. Also, if the frame belonged to a :term:`generator`, the " @@ -1899,34 +1914,34 @@ msgid "" "and storing its :ref:`traceback ` for later use)." msgstr "" -#: reference/datamodel.rst:1709 +#: reference/datamodel.rst:1723 msgid "" ":exc:`RuntimeError` is raised if the frame is currently executing or " "suspended." msgstr "" -#: reference/datamodel.rst:1714 +#: reference/datamodel.rst:1728 msgid "" "Attempting to clear a suspended frame raises :exc:`RuntimeError` (as has " "always been the case for executing frames)." msgstr "" -#: reference/datamodel.rst:1722 +#: reference/datamodel.rst:1736 msgid "Traceback objects" msgstr "" -#: reference/datamodel.rst:1735 +#: reference/datamodel.rst:1749 msgid "" "Traceback objects represent the stack trace of an :ref:`exception `. A traceback object is implicitly created when an exception occurs, " "and may also be explicitly created by calling :class:`types.TracebackType`." msgstr "" -#: reference/datamodel.rst:1740 +#: reference/datamodel.rst:1754 msgid "Traceback objects can now be explicitly instantiated from Python code." msgstr "" -#: reference/datamodel.rst:1743 +#: reference/datamodel.rst:1757 msgid "" "For implicitly created tracebacks, when the search for an exception handler " "unwinds the execution stack, at each unwound level a traceback object is " @@ -1937,7 +1952,7 @@ msgid "" "the caught exception." msgstr "" -#: reference/datamodel.rst:1752 +#: reference/datamodel.rst:1766 msgid "" "When the program contains no suitable handler, the stack trace is written " "(nicely formatted) to the standard error stream; if the interpreter is " @@ -1945,33 +1960,33 @@ msgid "" "last_traceback`." msgstr "" -#: reference/datamodel.rst:1757 +#: reference/datamodel.rst:1771 msgid "" "For explicitly created tracebacks, it is up to the creator of the traceback " "to determine how the :attr:`~traceback.tb_next` attributes should be linked " "to form a full stack trace." msgstr "" -#: reference/datamodel.rst:1772 +#: reference/datamodel.rst:1786 msgid "" "Points to the execution :ref:`frame ` of the current level." msgstr "" -#: reference/datamodel.rst:1775 +#: reference/datamodel.rst:1789 msgid "" "Accessing this attribute raises an :ref:`auditing event ` ``object." "__getattr__`` with arguments ``obj`` and ``\"tb_frame\"``." msgstr "" -#: reference/datamodel.rst:1780 +#: reference/datamodel.rst:1794 msgid "Gives the line number where the exception occurred" msgstr "" -#: reference/datamodel.rst:1783 +#: reference/datamodel.rst:1797 msgid "Indicates the \"precise instruction\"." msgstr "" -#: reference/datamodel.rst:1785 +#: reference/datamodel.rst:1799 msgid "" "The line number and last instruction in the traceback may differ from the " "line number of its :ref:`frame object ` if the exception " @@ -1979,39 +1994,39 @@ msgid "" "with a :keyword:`finally` clause." msgstr "" -#: reference/datamodel.rst:1796 +#: reference/datamodel.rst:1810 msgid "" "The special writable attribute :attr:`!tb_next` is the next level in the " "stack trace (towards the frame where the exception occurred), or ``None`` if " "there is no next level." msgstr "" -#: reference/datamodel.rst:1800 +#: reference/datamodel.rst:1814 msgid "This attribute is now writable" msgstr "" -#: reference/datamodel.rst:1805 +#: reference/datamodel.rst:1819 msgid "Slice objects" msgstr "" -#: reference/datamodel.rst:1809 +#: reference/datamodel.rst:1823 msgid "" "Slice objects are used to represent slices for :meth:`~object.__getitem__` " "methods. They are also created by the built-in :func:`slice` function." msgstr "" -#: reference/datamodel.rst:1818 +#: reference/datamodel.rst:1832 msgid "" "Special read-only attributes: :attr:`~slice.start` is the lower bound; :attr:" "`~slice.stop` is the upper bound; :attr:`~slice.step` is the step value; " "each is ``None`` if omitted. These attributes can have any type." msgstr "" -#: reference/datamodel.rst:1822 +#: reference/datamodel.rst:1836 msgid "Slice objects support one method:" msgstr "" -#: reference/datamodel.rst:1826 +#: reference/datamodel.rst:1840 msgid "" "This method takes a single integer argument *length* and computes " "information about the slice that the slice object would describe if applied " @@ -2021,11 +2036,11 @@ msgid "" "a manner consistent with regular slices." msgstr "" -#: reference/datamodel.rst:1835 +#: reference/datamodel.rst:1849 msgid "Static method objects" msgstr "" -#: reference/datamodel.rst:1837 +#: reference/datamodel.rst:1851 msgid "" "Static method objects provide a way of defeating the transformation of " "function objects to method objects described above. A static method object " @@ -2036,11 +2051,11 @@ msgid "" "method objects are created by the built-in :func:`staticmethod` constructor." msgstr "" -#: reference/datamodel.rst:1847 +#: reference/datamodel.rst:1861 msgid "Class method objects" msgstr "" -#: reference/datamodel.rst:1849 +#: reference/datamodel.rst:1863 msgid "" "A class method object, like a static method object, is a wrapper around " "another object that alters the way in which that object is retrieved from " @@ -2050,11 +2065,11 @@ msgid "" "`classmethod` constructor." msgstr "" -#: reference/datamodel.rst:1859 +#: reference/datamodel.rst:1873 msgid "Special method names" msgstr "" -#: reference/datamodel.rst:1865 +#: reference/datamodel.rst:1879 msgid "" "A class can implement certain operations that are invoked by special syntax " "(such as arithmetic operations or subscripting and slicing) by defining " @@ -2068,7 +2083,7 @@ msgid "" "`TypeError`)." msgstr "" -#: reference/datamodel.rst:1876 +#: reference/datamodel.rst:1890 msgid "" "Setting a special method to ``None`` indicates that the corresponding " "operation is not available. For example, if a class sets :meth:`~object." @@ -2077,7 +2092,7 @@ msgid "" "`~object.__getitem__`). [#]_" msgstr "" -#: reference/datamodel.rst:1882 +#: reference/datamodel.rst:1896 msgid "" "When implementing a class that emulates any built-in type, it is important " "that the emulation only be implemented to the degree that it makes sense for " @@ -2087,11 +2102,11 @@ msgid "" "the W3C's Document Object Model.)" msgstr "" -#: reference/datamodel.rst:1893 +#: reference/datamodel.rst:1907 msgid "Basic customization" msgstr "" -#: reference/datamodel.rst:1899 +#: reference/datamodel.rst:1913 msgid "" "Called to create a new instance of class *cls*. :meth:`__new__` is a static " "method (special-cased so you need not declare it as such) that takes the " @@ -2101,7 +2116,7 @@ msgid "" "new object instance (usually an instance of *cls*)." msgstr "" -#: reference/datamodel.rst:1906 +#: reference/datamodel.rst:1920 msgid "" "Typical implementations create a new instance of the class by invoking the " "superclass's :meth:`__new__` method using ``super().__new__(cls[, ...])`` " @@ -2109,7 +2124,7 @@ msgid "" "necessary before returning it." msgstr "" -#: reference/datamodel.rst:1911 +#: reference/datamodel.rst:1925 msgid "" "If :meth:`__new__` is invoked during object construction and it returns an " "instance of *cls*, then the new instance’s :meth:`__init__` method will be " @@ -2118,13 +2133,13 @@ msgid "" "constructor." msgstr "" -#: reference/datamodel.rst:1916 +#: reference/datamodel.rst:1930 msgid "" "If :meth:`__new__` does not return an instance of *cls*, then the new " "instance's :meth:`__init__` method will not be invoked." msgstr "" -#: reference/datamodel.rst:1919 +#: reference/datamodel.rst:1933 msgid "" ":meth:`__new__` is intended mainly to allow subclasses of immutable types " "(like int, str, or tuple) to customize instance creation. It is also " @@ -2132,7 +2147,7 @@ msgid "" "creation." msgstr "" -#: reference/datamodel.rst:1928 +#: reference/datamodel.rst:1942 msgid "" "Called after the instance has been created (by :meth:`__new__`), but before " "it is returned to the caller. The arguments are those passed to the class " @@ -2142,7 +2157,7 @@ msgid "" "example: ``super().__init__([args...])``." msgstr "" -#: reference/datamodel.rst:1935 +#: reference/datamodel.rst:1949 msgid "" "Because :meth:`__new__` and :meth:`__init__` work together in constructing " "objects (:meth:`__new__` to create it, and :meth:`__init__` to customize " @@ -2150,7 +2165,7 @@ msgid "" "will cause a :exc:`TypeError` to be raised at runtime." msgstr "" -#: reference/datamodel.rst:1948 +#: reference/datamodel.rst:1962 msgid "" "Called when the instance is about to be destroyed. This is also called a " "finalizer or (improperly) a destructor. If a base class has a :meth:" @@ -2159,7 +2174,7 @@ msgid "" "instance." msgstr "" -#: reference/datamodel.rst:1954 +#: reference/datamodel.rst:1968 msgid "" "It is possible (though not recommended!) for the :meth:`__del__` method to " "postpone destruction of the instance by creating a new reference to it. " @@ -2169,7 +2184,7 @@ msgid "" "it once." msgstr "" -#: reference/datamodel.rst:1961 +#: reference/datamodel.rst:1975 msgid "" "It is not guaranteed that :meth:`__del__` methods are called for objects " "that still exist when the interpreter exits. :class:`weakref.finalize` " @@ -2177,14 +2192,14 @@ msgid "" "when an object is garbage collected." msgstr "" -#: reference/datamodel.rst:1968 +#: reference/datamodel.rst:1982 msgid "" "``del x`` doesn't directly call ``x.__del__()`` --- the former decrements " "the reference count for ``x`` by one, and the latter is only called when " "``x``'s reference count reaches zero." msgstr "" -#: reference/datamodel.rst:1973 +#: reference/datamodel.rst:1987 msgid "" "It is possible for a reference cycle to prevent the reference count of an " "object from going to zero. In this case, the cycle will be later detected " @@ -2195,18 +2210,18 @@ msgid "" "caught in the traceback." msgstr "" -#: reference/datamodel.rst:1983 +#: reference/datamodel.rst:1997 msgid "Documentation for the :mod:`gc` module." msgstr "" -#: reference/datamodel.rst:1987 +#: reference/datamodel.rst:2001 msgid "" "Due to the precarious circumstances under which :meth:`__del__` methods are " "invoked, exceptions that occur during their execution are ignored, and a " "warning is printed to ``sys.stderr`` instead. In particular:" msgstr "" -#: reference/datamodel.rst:1991 +#: reference/datamodel.rst:2005 msgid "" ":meth:`__del__` can be invoked when arbitrary code is being executed, " "including from any arbitrary thread. If :meth:`__del__` needs to take a " @@ -2215,7 +2230,7 @@ msgid "" "`__del__`." msgstr "" -#: reference/datamodel.rst:1997 +#: reference/datamodel.rst:2011 msgid "" ":meth:`__del__` can be executed during interpreter shutdown. As a " "consequence, the global variables it needs to access (including other " @@ -2226,7 +2241,7 @@ msgid "" "still available at the time when the :meth:`__del__` method is called." msgstr "" -#: reference/datamodel.rst:2012 +#: reference/datamodel.rst:2026 msgid "" "Called by the :func:`repr` built-in function to compute the \"official\" " "string representation of an object. If at all possible, this should look " @@ -2238,14 +2253,14 @@ msgid "" "an \"informal\" string representation of instances of that class is required." msgstr "" -#: reference/datamodel.rst:2021 +#: reference/datamodel.rst:2035 msgid "" "This is typically used for debugging, so it is important that the " "representation is information-rich and unambiguous. A default implementation " "is provided by the :class:`object` class itself." msgstr "" -#: reference/datamodel.rst:2033 +#: reference/datamodel.rst:2047 msgid "" "Called by :func:`str(object) `, the default :meth:`__format__` " "implementation, and the built-in function :func:`print`, to compute the " @@ -2253,27 +2268,27 @@ msgid "" "return value must be a :ref:`str ` object." msgstr "" -#: reference/datamodel.rst:2038 +#: reference/datamodel.rst:2052 msgid "" "This method differs from :meth:`object.__repr__` in that there is no " "expectation that :meth:`__str__` return a valid Python expression: a more " "convenient or concise representation can be used." msgstr "" -#: reference/datamodel.rst:2042 +#: reference/datamodel.rst:2056 msgid "" "The default implementation defined by the built-in type :class:`object` " "calls :meth:`object.__repr__`." msgstr "" -#: reference/datamodel.rst:2052 +#: reference/datamodel.rst:2066 msgid "" "Called by :ref:`bytes ` to compute a byte-string representation " "of an object. This should return a :class:`bytes` object. The :class:" "`object` class itself does not provide this method." msgstr "" -#: reference/datamodel.rst:2064 +#: reference/datamodel.rst:2078 msgid "" "Called by the :func:`format` built-in function, and by extension, evaluation " "of :ref:`formatted string literals ` and the :meth:`str.format` " @@ -2285,34 +2300,34 @@ msgid "" "formatting option syntax." msgstr "" -#: reference/datamodel.rst:2074 +#: reference/datamodel.rst:2088 msgid "" "See :ref:`formatspec` for a description of the standard formatting syntax." msgstr "" -#: reference/datamodel.rst:2076 +#: reference/datamodel.rst:2090 msgid "The return value must be a string object." msgstr "" -#: reference/datamodel.rst:2078 +#: reference/datamodel.rst:2092 msgid "" "The default implementation by the :class:`object` class should be given an " "empty *format_spec* string. It delegates to :meth:`__str__`." msgstr "" -#: reference/datamodel.rst:2081 +#: reference/datamodel.rst:2095 msgid "" "The __format__ method of ``object`` itself raises a :exc:`TypeError` if " "passed any non-empty string." msgstr "" -#: reference/datamodel.rst:2085 +#: reference/datamodel.rst:2099 msgid "" "``object.__format__(x, '')`` is now equivalent to ``str(x)`` rather than " "``format(str(x), '')``." msgstr "" -#: reference/datamodel.rst:2101 +#: reference/datamodel.rst:2115 msgid "" "These are the so-called \"rich comparison\" methods. The correspondence " "between operator symbols and method names is as follows: ``x.__hash__``." msgstr "" -#: reference/datamodel.rst:2199 +#: reference/datamodel.rst:2213 msgid "" "If a class that does not override :meth:`__eq__` wishes to suppress hash " "support, it should include ``__hash__ = None`` in the class definition. A " @@ -2454,7 +2469,7 @@ msgid "" "``isinstance(obj, collections.abc.Hashable)`` call." msgstr "" -#: reference/datamodel.rst:2208 +#: reference/datamodel.rst:2222 msgid "" "By default, the :meth:`__hash__` values of str and bytes objects are " "\"salted\" with an unpredictable random value. Although they remain " @@ -2462,7 +2477,7 @@ msgid "" "between repeated invocations of Python." msgstr "" -#: reference/datamodel.rst:2213 +#: reference/datamodel.rst:2227 msgid "" "This is intended to provide protection against a denial-of-service caused by " "carefully chosen inputs that exploit the worst case performance of a dict " @@ -2470,22 +2485,22 @@ msgid "" "advisories/ocert-2011-003.html for details." msgstr "" -#: reference/datamodel.rst:2218 +#: reference/datamodel.rst:2232 msgid "" "Changing hash values affects the iteration order of sets. Python has never " "made guarantees about this ordering (and it typically varies between 32-bit " "and 64-bit builds)." msgstr "" -#: reference/datamodel.rst:2222 +#: reference/datamodel.rst:2236 msgid "See also :envvar:`PYTHONHASHSEED`." msgstr "" -#: reference/datamodel.rst:2224 +#: reference/datamodel.rst:2238 msgid "Hash randomization is enabled by default." msgstr "" -#: reference/datamodel.rst:2232 +#: reference/datamodel.rst:2246 msgid "" "Called to implement truth value testing and the built-in operation " "``bool()``; should return ``False`` or ``True``. When this method is not " @@ -2495,18 +2510,18 @@ msgid "" "class itself), all its instances are considered true." msgstr "" -#: reference/datamodel.rst:2243 +#: reference/datamodel.rst:2257 msgid "Customizing attribute access" msgstr "" -#: reference/datamodel.rst:2245 +#: reference/datamodel.rst:2259 msgid "" "The following methods can be defined to customize the meaning of attribute " "access (use of, assignment to, or deletion of ``x.name``) for class " "instances." msgstr "" -#: reference/datamodel.rst:2253 +#: reference/datamodel.rst:2267 msgid "" "Called when the default attribute access fails with an :exc:`AttributeError` " "(either :meth:`__getattribute__` raises an :exc:`AttributeError` because " @@ -2517,7 +2532,7 @@ msgid "" "`object` class itself does not provide this method." msgstr "" -#: reference/datamodel.rst:2261 +#: reference/datamodel.rst:2275 msgid "" "Note that if the attribute is found through the normal mechanism, :meth:" "`__getattr__` is not called. (This is an intentional asymmetry between :" @@ -2530,7 +2545,7 @@ msgid "" "actually get total control over attribute access." msgstr "" -#: reference/datamodel.rst:2274 +#: reference/datamodel.rst:2288 msgid "" "Called unconditionally to implement attribute accesses for instances of the " "class. If the class also defines :meth:`__getattr__`, the latter will not be " @@ -2542,64 +2557,64 @@ msgid "" "example, ``object.__getattribute__(self, name)``." msgstr "" -#: reference/datamodel.rst:2285 +#: reference/datamodel.rst:2299 msgid "" "This method may still be bypassed when looking up special methods as the " "result of implicit invocation via language syntax or :ref:`built-in " "functions `. See :ref:`special-lookup`." msgstr "" -#: reference/datamodel.rst:2292 +#: reference/datamodel.rst:2306 msgid "" "For certain sensitive attribute accesses, raises an :ref:`auditing event " "` ``object.__getattr__`` with arguments ``obj`` and ``name``." msgstr "" -#: reference/datamodel.rst:2299 +#: reference/datamodel.rst:2313 msgid "" "Called when an attribute assignment is attempted. This is called instead of " "the normal mechanism (i.e. store the value in the instance dictionary). " "*name* is the attribute name, *value* is the value to be assigned to it." msgstr "" -#: reference/datamodel.rst:2303 +#: reference/datamodel.rst:2317 msgid "" "If :meth:`__setattr__` wants to assign to an instance attribute, it should " "call the base class method with the same name, for example, ``object." "__setattr__(self, name, value)``." msgstr "" -#: reference/datamodel.rst:2309 +#: reference/datamodel.rst:2323 msgid "" "For certain sensitive attribute assignments, raises an :ref:`auditing event " "` ``object.__setattr__`` with arguments ``obj``, ``name``, " "``value``." msgstr "" -#: reference/datamodel.rst:2316 +#: reference/datamodel.rst:2330 msgid "" "Like :meth:`__setattr__` but for attribute deletion instead of assignment. " "This should only be implemented if ``del obj.name`` is meaningful for the " "object." msgstr "" -#: reference/datamodel.rst:2321 +#: reference/datamodel.rst:2335 msgid "" "For certain sensitive attribute deletions, raises an :ref:`auditing event " "` ``object.__delattr__`` with arguments ``obj`` and ``name``." msgstr "" -#: reference/datamodel.rst:2328 +#: reference/datamodel.rst:2342 msgid "" "Called when :func:`dir` is called on the object. An iterable must be " "returned. :func:`dir` converts the returned iterable to a list and sorts it." msgstr "" -#: reference/datamodel.rst:2333 +#: reference/datamodel.rst:2347 msgid "Customizing module attribute access" msgstr "" -#: reference/datamodel.rst:2340 +#: reference/datamodel.rst:2354 msgid "" "Special names ``__getattr__`` and ``__dir__`` can be also used to customize " "access to module attributes. The ``__getattr__`` function at the module " @@ -2611,21 +2626,21 @@ msgid "" "with the attribute name and the result is returned." msgstr "" -#: reference/datamodel.rst:2349 +#: reference/datamodel.rst:2363 msgid "" "The ``__dir__`` function should accept no arguments, and return an iterable " "of strings that represents the names accessible on module. If present, this " "function overrides the standard :func:`dir` search on a module." msgstr "" -#: reference/datamodel.rst:2353 +#: reference/datamodel.rst:2367 msgid "" "For a more fine grained customization of the module behavior (setting " "attributes, properties, etc.), one can set the ``__class__`` attribute of a " "module object to a subclass of :class:`types.ModuleType`. For example::" msgstr "" -#: reference/datamodel.rst:2357 +#: reference/datamodel.rst:2371 msgid "" "import sys\n" "from types import ModuleType\n" @@ -2641,7 +2656,7 @@ msgid "" "sys.modules[__name__].__class__ = VerboseModule" msgstr "" -#: reference/datamodel.rst:2371 +#: reference/datamodel.rst:2385 msgid "" "Defining module ``__getattr__`` and setting module ``__class__`` only affect " "lookups made using the attribute access syntax -- directly accessing the " @@ -2649,27 +2664,27 @@ msgid "" "module's globals dictionary) is unaffected." msgstr "" -#: reference/datamodel.rst:2376 +#: reference/datamodel.rst:2390 msgid "``__class__`` module attribute is now writable." msgstr "" -#: reference/datamodel.rst:2379 +#: reference/datamodel.rst:2393 msgid "``__getattr__`` and ``__dir__`` module attributes." msgstr "" -#: reference/datamodel.rst:2384 +#: reference/datamodel.rst:2398 msgid ":pep:`562` - Module __getattr__ and __dir__" msgstr "" -#: reference/datamodel.rst:2385 +#: reference/datamodel.rst:2399 msgid "Describes the ``__getattr__`` and ``__dir__`` functions on modules." msgstr "" -#: reference/datamodel.rst:2391 +#: reference/datamodel.rst:2405 msgid "Implementing Descriptors" msgstr "" -#: reference/datamodel.rst:2393 +#: reference/datamodel.rst:2407 msgid "" "The following methods only apply when an instance of the class containing " "the method (a so-called *descriptor* class) appears in an *owner* class (the " @@ -2680,7 +2695,7 @@ msgid "" "does not implement any of these protocols." msgstr "" -#: reference/datamodel.rst:2403 +#: reference/datamodel.rst:2417 msgid "" "Called to get the attribute of the owner class (class attribute access) or " "of an instance of that class (instance attribute access). The optional " @@ -2689,13 +2704,13 @@ msgid "" "accessed through the *owner*." msgstr "" -#: reference/datamodel.rst:2409 +#: reference/datamodel.rst:2423 msgid "" "This method should return the computed attribute value or raise an :exc:" "`AttributeError` exception." msgstr "" -#: reference/datamodel.rst:2412 +#: reference/datamodel.rst:2426 msgid "" ":PEP:`252` specifies that :meth:`__get__` is callable with one or two " "arguments. Python's own built-in descriptors support this specification; " @@ -2705,31 +2720,31 @@ msgid "" "not." msgstr "" -#: reference/datamodel.rst:2421 +#: reference/datamodel.rst:2435 msgid "" "Called to set the attribute on an instance *instance* of the owner class to " "a new value, *value*." msgstr "" -#: reference/datamodel.rst:2424 +#: reference/datamodel.rst:2438 msgid "" "Note, adding :meth:`__set__` or :meth:`__delete__` changes the kind of " "descriptor to a \"data descriptor\". See :ref:`descriptor-invocation` for " "more details." msgstr "" -#: reference/datamodel.rst:2430 +#: reference/datamodel.rst:2444 msgid "" "Called to delete the attribute on an instance *instance* of the owner class." msgstr "" -#: reference/datamodel.rst:2432 +#: reference/datamodel.rst:2446 msgid "" "Instances of descriptors may also have the :attr:`!__objclass__` attribute " "present:" msgstr "" -#: reference/datamodel.rst:2437 +#: reference/datamodel.rst:2451 msgid "" "The attribute :attr:`!__objclass__` is interpreted by the :mod:`inspect` " "module as specifying the class where this object was defined (setting this " @@ -2740,11 +2755,11 @@ msgid "" "are implemented in C)." msgstr "" -#: reference/datamodel.rst:2448 +#: reference/datamodel.rst:2462 msgid "Invoking Descriptors" msgstr "" -#: reference/datamodel.rst:2450 +#: reference/datamodel.rst:2464 msgid "" "In general, a descriptor is an object attribute with \"binding behavior\", " "one whose attribute access has been overridden by methods in the descriptor " @@ -2753,7 +2768,7 @@ msgid "" "is said to be a descriptor." msgstr "" -#: reference/datamodel.rst:2456 +#: reference/datamodel.rst:2470 msgid "" "The default behavior for attribute access is to get, set, or delete the " "attribute from an object's dictionary. For instance, ``a.x`` has a lookup " @@ -2761,7 +2776,7 @@ msgid "" "continuing through the base classes of ``type(a)`` excluding metaclasses." msgstr "" -#: reference/datamodel.rst:2461 +#: reference/datamodel.rst:2475 msgid "" "However, if the looked-up value is an object defining one of the descriptor " "methods, then Python may override the default behavior and invoke the " @@ -2769,54 +2784,54 @@ msgid "" "depends on which descriptor methods were defined and how they were called." msgstr "" -#: reference/datamodel.rst:2466 +#: reference/datamodel.rst:2480 msgid "" "The starting point for descriptor invocation is a binding, ``a.x``. How the " "arguments are assembled depends on ``a``:" msgstr "" -#: reference/datamodel.rst:2469 +#: reference/datamodel.rst:2483 msgid "Direct Call" msgstr "" -#: reference/datamodel.rst:2470 +#: reference/datamodel.rst:2484 msgid "" "The simplest and least common call is when user code directly invokes a " "descriptor method: ``x.__get__(a)``." msgstr "" -#: reference/datamodel.rst:2473 +#: reference/datamodel.rst:2487 msgid "Instance Binding" msgstr "" -#: reference/datamodel.rst:2474 +#: reference/datamodel.rst:2488 msgid "" "If binding to an object instance, ``a.x`` is transformed into the call: " "``type(a).__dict__['x'].__get__(a, type(a))``." msgstr "" -#: reference/datamodel.rst:2477 +#: reference/datamodel.rst:2491 msgid "Class Binding" msgstr "" -#: reference/datamodel.rst:2478 +#: reference/datamodel.rst:2492 msgid "" "If binding to a class, ``A.x`` is transformed into the call: ``A." "__dict__['x'].__get__(None, A)``." msgstr "" -#: reference/datamodel.rst:2481 +#: reference/datamodel.rst:2495 msgid "Super Binding" msgstr "" -#: reference/datamodel.rst:2482 +#: reference/datamodel.rst:2496 msgid "" "A dotted lookup such as ``super(A, a).x`` searches ``a.__class__.__mro__`` " "for a base class ``B`` following ``A`` and then returns ``B.__dict__['x']." "__get__(a, A)``. If not a descriptor, ``x`` is returned unchanged." msgstr "" -#: reference/datamodel.rst:2519 +#: reference/datamodel.rst:2533 msgid "" "For instance bindings, the precedence of descriptor invocation depends on " "which descriptor methods are defined. A descriptor can define any " @@ -2834,7 +2849,7 @@ msgid "" "instances." msgstr "" -#: reference/datamodel.rst:2534 +#: reference/datamodel.rst:2548 msgid "" "Python methods (including those decorated with :func:`@staticmethod " "` and :func:`@classmethod `) are implemented as " @@ -2843,30 +2858,30 @@ msgid "" "from other instances of the same class." msgstr "" -#: reference/datamodel.rst:2540 +#: reference/datamodel.rst:2554 msgid "" "The :func:`property` function is implemented as a data descriptor. " "Accordingly, instances cannot override the behavior of a property." msgstr "" -#: reference/datamodel.rst:2547 +#: reference/datamodel.rst:2561 msgid "__slots__" msgstr "" -#: reference/datamodel.rst:2549 +#: reference/datamodel.rst:2563 msgid "" "*__slots__* allow us to explicitly declare data members (like properties) " "and deny the creation of :attr:`~object.__dict__` and *__weakref__* (unless " "explicitly declared in *__slots__* or available in a parent.)" msgstr "" -#: reference/datamodel.rst:2553 +#: reference/datamodel.rst:2567 msgid "" "The space saved over using :attr:`~object.__dict__` can be significant. " "Attribute lookup speed can be significantly improved as well." msgstr "" -#: reference/datamodel.rst:2558 +#: reference/datamodel.rst:2572 msgid "" "This class variable can be assigned a string, iterable, or sequence of " "strings with variable names used by instances. *__slots__* reserves space " @@ -2874,18 +2889,18 @@ msgid "" "`~object.__dict__` and *__weakref__* for each instance." msgstr "" -#: reference/datamodel.rst:2567 +#: reference/datamodel.rst:2581 msgid "Notes on using *__slots__*:" msgstr "" -#: reference/datamodel.rst:2569 +#: reference/datamodel.rst:2583 msgid "" "When inheriting from a class without *__slots__*, the :attr:`~object." "__dict__` and *__weakref__* attribute of the instances will always be " "accessible." msgstr "" -#: reference/datamodel.rst:2573 +#: reference/datamodel.rst:2587 msgid "" "Without a :attr:`~object.__dict__` variable, instances cannot be assigned " "new variables not listed in the *__slots__* definition. Attempts to assign " @@ -2894,7 +2909,7 @@ msgid "" "sequence of strings in the *__slots__* declaration." msgstr "" -#: reference/datamodel.rst:2580 +#: reference/datamodel.rst:2594 msgid "" "Without a *__weakref__* variable for each instance, classes defining " "*__slots__* do not support :mod:`weak references ` to its " @@ -2902,7 +2917,7 @@ msgid "" "to the sequence of strings in the *__slots__* declaration." msgstr "" -#: reference/datamodel.rst:2586 +#: reference/datamodel.rst:2600 msgid "" "*__slots__* are implemented at the class level by creating :ref:`descriptors " "` for each variable name. As a result, class attributes cannot " @@ -2910,7 +2925,7 @@ msgid "" "otherwise, the class attribute would overwrite the descriptor assignment." msgstr "" -#: reference/datamodel.rst:2592 +#: reference/datamodel.rst:2606 msgid "" "The action of a *__slots__* declaration is not limited to the class where it " "is defined. *__slots__* declared in parents are available in child classes. " @@ -2919,7 +2934,7 @@ msgid "" "only contain names of any *additional* slots)." msgstr "" -#: reference/datamodel.rst:2598 +#: reference/datamodel.rst:2612 msgid "" "If a class defines a slot also defined in a base class, the instance " "variable defined by the base class slot is inaccessible (except by " @@ -2928,7 +2943,7 @@ msgid "" "prevent this." msgstr "" -#: reference/datamodel.rst:2603 +#: reference/datamodel.rst:2617 msgid "" ":exc:`TypeError` will be raised if nonempty *__slots__* are defined for a " "class derived from a :c:member:`\"variable-length\" built-in type " @@ -2936,11 +2951,11 @@ msgid "" "`tuple`." msgstr "" -#: reference/datamodel.rst:2608 +#: reference/datamodel.rst:2622 msgid "Any non-string :term:`iterable` may be assigned to *__slots__*." msgstr "" -#: reference/datamodel.rst:2610 +#: reference/datamodel.rst:2624 msgid "" "If a :class:`dictionary ` is used to assign *__slots__*, the " "dictionary keys will be used as the slot names. The values of the dictionary " @@ -2948,13 +2963,13 @@ msgid "" "func:`inspect.getdoc` and displayed in the output of :func:`help`." msgstr "" -#: reference/datamodel.rst:2615 +#: reference/datamodel.rst:2629 msgid "" ":attr:`~object.__class__` assignment works only if both classes have the " "same *__slots__*." msgstr "" -#: reference/datamodel.rst:2618 +#: reference/datamodel.rst:2632 msgid "" ":ref:`Multiple inheritance ` with multiple slotted parent " "classes can be used, but only one parent is allowed to have attributes " @@ -2962,18 +2977,18 @@ msgid "" "raise :exc:`TypeError`." msgstr "" -#: reference/datamodel.rst:2624 +#: reference/datamodel.rst:2638 msgid "" "If an :term:`iterator` is used for *__slots__* then a :term:`descriptor` is " "created for each of the iterator's values. However, the *__slots__* " "attribute will be an empty iterator." msgstr "" -#: reference/datamodel.rst:2632 +#: reference/datamodel.rst:2646 msgid "Customizing class creation" msgstr "" -#: reference/datamodel.rst:2634 +#: reference/datamodel.rst:2648 msgid "" "Whenever a class inherits from another class, :meth:`~object." "__init_subclass__` is called on the parent class. This way, it is possible " @@ -2983,14 +2998,14 @@ msgid "" "future subclasses of the class defining the method." msgstr "" -#: reference/datamodel.rst:2643 +#: reference/datamodel.rst:2657 msgid "" "This method is called whenever the containing class is subclassed. *cls* is " "then the new subclass. If defined as a normal instance method, this method " "is implicitly converted to a class method." msgstr "" -#: reference/datamodel.rst:2647 +#: reference/datamodel.rst:2661 msgid "" "Keyword arguments which are given to a new class are passed to the parent " "class's ``__init_subclass__``. For compatibility with other classes using " @@ -2998,7 +3013,7 @@ msgid "" "pass the others over to the base class, as in::" msgstr "" -#: reference/datamodel.rst:2653 +#: reference/datamodel.rst:2667 msgid "" "class Philosopher:\n" " def __init_subclass__(cls, /, default_name, **kwargs):\n" @@ -3009,13 +3024,13 @@ msgid "" " pass" msgstr "" -#: reference/datamodel.rst:2661 +#: reference/datamodel.rst:2675 msgid "" "The default implementation ``object.__init_subclass__`` does nothing, but " "raises an error if it is called with any arguments." msgstr "" -#: reference/datamodel.rst:2666 +#: reference/datamodel.rst:2680 msgid "" "The metaclass hint ``metaclass`` is consumed by the rest of the type " "machinery, and is never passed to ``__init_subclass__`` implementations. The " @@ -3023,32 +3038,32 @@ msgid "" "``type(cls)``." msgstr "" -#: reference/datamodel.rst:2674 +#: reference/datamodel.rst:2688 msgid "" "When a class is created, :meth:`type.__new__` scans the class variables and " "makes callbacks to those with a :meth:`~object.__set_name__` hook." msgstr "" -#: reference/datamodel.rst:2679 +#: reference/datamodel.rst:2693 msgid "" "Automatically called at the time the owning class *owner* is created. The " "object has been assigned to *name* in that class::" msgstr "" -#: reference/datamodel.rst:2682 +#: reference/datamodel.rst:2696 msgid "" "class A:\n" " x = C() # Automatically calls: x.__set_name__(A, 'x')" msgstr "" -#: reference/datamodel.rst:2685 +#: reference/datamodel.rst:2699 msgid "" "If the class variable is assigned after the class is created, :meth:" "`__set_name__` will not be called automatically. If needed, :meth:" "`__set_name__` can be called directly::" msgstr "" -#: reference/datamodel.rst:2689 +#: reference/datamodel.rst:2703 msgid "" "class A:\n" " pass\n" @@ -3058,22 +3073,22 @@ msgid "" "c.__set_name__(A, 'x') # Manually invoke the hook" msgstr "" -#: reference/datamodel.rst:2696 +#: reference/datamodel.rst:2710 msgid "See :ref:`class-object-creation` for more details." msgstr "" -#: reference/datamodel.rst:2704 +#: reference/datamodel.rst:2718 msgid "Metaclasses" msgstr "" -#: reference/datamodel.rst:2711 +#: reference/datamodel.rst:2725 msgid "" "By default, classes are constructed using :func:`type`. The class body is " "executed in a new namespace and the class name is bound locally to the " "result of ``type(name, bases, namespace)``." msgstr "" -#: reference/datamodel.rst:2715 +#: reference/datamodel.rst:2729 msgid "" "The class creation process can be customized by passing the ``metaclass`` " "keyword argument in the class definition line, or by inheriting from an " @@ -3081,7 +3096,7 @@ msgid "" "both ``MyClass`` and ``MySubclass`` are instances of ``Meta``::" msgstr "" -#: reference/datamodel.rst:2720 +#: reference/datamodel.rst:2734 msgid "" "class Meta(type):\n" " pass\n" @@ -3093,41 +3108,41 @@ msgid "" " pass" msgstr "" -#: reference/datamodel.rst:2729 +#: reference/datamodel.rst:2743 msgid "" "Any other keyword arguments that are specified in the class definition are " "passed through to all metaclass operations described below." msgstr "" -#: reference/datamodel.rst:2732 +#: reference/datamodel.rst:2746 msgid "When a class definition is executed, the following steps occur:" msgstr "" -#: reference/datamodel.rst:2734 +#: reference/datamodel.rst:2748 msgid "MRO entries are resolved;" msgstr "" -#: reference/datamodel.rst:2735 +#: reference/datamodel.rst:2749 msgid "the appropriate metaclass is determined;" msgstr "" -#: reference/datamodel.rst:2736 +#: reference/datamodel.rst:2750 msgid "the class namespace is prepared;" msgstr "" -#: reference/datamodel.rst:2737 +#: reference/datamodel.rst:2751 msgid "the class body is executed;" msgstr "" -#: reference/datamodel.rst:2738 +#: reference/datamodel.rst:2752 msgid "the class object is created." msgstr "" -#: reference/datamodel.rst:2742 +#: reference/datamodel.rst:2756 msgid "Resolving MRO entries" msgstr "" -#: reference/datamodel.rst:2746 +#: reference/datamodel.rst:2760 msgid "" "If a base that appears in a class definition is not an instance of :class:" "`type`, then an :meth:`!__mro_entries__` method is searched on the base. If " @@ -3139,59 +3154,59 @@ msgid "" "is ignored." msgstr "" -#: reference/datamodel.rst:2757 +#: reference/datamodel.rst:2771 msgid ":func:`types.resolve_bases`" msgstr "" -#: reference/datamodel.rst:2758 +#: reference/datamodel.rst:2772 msgid "Dynamically resolve bases that are not instances of :class:`type`." msgstr "" -#: reference/datamodel.rst:2760 +#: reference/datamodel.rst:2774 msgid ":func:`types.get_original_bases`" msgstr "" -#: reference/datamodel.rst:2761 +#: reference/datamodel.rst:2775 msgid "" "Retrieve a class's \"original bases\" prior to modifications by :meth:" "`~object.__mro_entries__`." msgstr "" -#: reference/datamodel.rst:2764 +#: reference/datamodel.rst:2778 msgid ":pep:`560`" msgstr "" -#: reference/datamodel.rst:2765 +#: reference/datamodel.rst:2779 msgid "Core support for typing module and generic types." msgstr "" -#: reference/datamodel.rst:2769 +#: reference/datamodel.rst:2783 msgid "Determining the appropriate metaclass" msgstr "" -#: reference/datamodel.rst:2773 +#: reference/datamodel.rst:2787 msgid "" "The appropriate metaclass for a class definition is determined as follows:" msgstr "" -#: reference/datamodel.rst:2775 +#: reference/datamodel.rst:2789 msgid "" "if no bases and no explicit metaclass are given, then :func:`type` is used;" msgstr "" -#: reference/datamodel.rst:2776 +#: reference/datamodel.rst:2790 msgid "" "if an explicit metaclass is given and it is *not* an instance of :func:" "`type`, then it is used directly as the metaclass;" msgstr "" -#: reference/datamodel.rst:2778 +#: reference/datamodel.rst:2792 msgid "" "if an instance of :func:`type` is given as the explicit metaclass, or bases " "are defined, then the most derived metaclass is used." msgstr "" -#: reference/datamodel.rst:2781 +#: reference/datamodel.rst:2795 msgid "" "The most derived metaclass is selected from the explicitly specified " "metaclass (if any) and the metaclasses (i.e. ``type(cls)``) of all specified " @@ -3200,11 +3215,11 @@ msgid "" "that criterion, then the class definition will fail with ``TypeError``." msgstr "" -#: reference/datamodel.rst:2791 +#: reference/datamodel.rst:2805 msgid "Preparing the class namespace" msgstr "" -#: reference/datamodel.rst:2796 +#: reference/datamodel.rst:2810 msgid "" "Once the appropriate metaclass has been identified, then the class namespace " "is prepared. If the metaclass has a ``__prepare__`` attribute, it is called " @@ -3216,25 +3231,25 @@ msgid "" "copied into a new ``dict``." msgstr "" -#: reference/datamodel.rst:2805 +#: reference/datamodel.rst:2819 msgid "" "If the metaclass has no ``__prepare__`` attribute, then the class namespace " "is initialised as an empty ordered mapping." msgstr "" -#: reference/datamodel.rst:2810 +#: reference/datamodel.rst:2824 msgid ":pep:`3115` - Metaclasses in Python 3000" msgstr "" -#: reference/datamodel.rst:2811 +#: reference/datamodel.rst:2825 msgid "Introduced the ``__prepare__`` namespace hook" msgstr "" -#: reference/datamodel.rst:2815 +#: reference/datamodel.rst:2829 msgid "Executing the class body" msgstr "" -#: reference/datamodel.rst:2820 +#: reference/datamodel.rst:2834 msgid "" "The class body is executed (approximately) as ``exec(body, globals(), " "namespace)``. The key difference from a normal call to :func:`exec` is that " @@ -3243,7 +3258,7 @@ msgid "" "inside a function." msgstr "" -#: reference/datamodel.rst:2826 +#: reference/datamodel.rst:2840 msgid "" "However, even when the class definition occurs inside the function, methods " "defined inside the class still cannot see names defined at the class scope. " @@ -3252,11 +3267,11 @@ msgid "" "reference described in the next section." msgstr "" -#: reference/datamodel.rst:2835 +#: reference/datamodel.rst:2849 msgid "Creating the class object" msgstr "" -#: reference/datamodel.rst:2842 +#: reference/datamodel.rst:2856 msgid "" "Once the class namespace has been populated by executing the class body, the " "class object is created by calling ``metaclass(name, bases, namespace, " @@ -3264,7 +3279,7 @@ msgid "" "to ``__prepare__``)." msgstr "" -#: reference/datamodel.rst:2847 +#: reference/datamodel.rst:2861 msgid "" "This class object is the one that will be referenced by the zero-argument " "form of :func:`super`. ``__class__`` is an implicit closure reference " @@ -3275,7 +3290,7 @@ msgid "" "is identified based on the first argument passed to the method." msgstr "" -#: reference/datamodel.rst:2857 +#: reference/datamodel.rst:2871 msgid "" "In CPython 3.6 and later, the ``__class__`` cell is passed to the metaclass " "as a ``__classcell__`` entry in the class namespace. If present, this must " @@ -3284,39 +3299,39 @@ msgid "" "in Python 3.8." msgstr "" -#: reference/datamodel.rst:2863 +#: reference/datamodel.rst:2877 msgid "" "When using the default metaclass :class:`type`, or any metaclass that " "ultimately calls ``type.__new__``, the following additional customization " "steps are invoked after creating the class object:" msgstr "" -#: reference/datamodel.rst:2867 +#: reference/datamodel.rst:2881 msgid "" "The ``type.__new__`` method collects all of the attributes in the class " "namespace that define a :meth:`~object.__set_name__` method;" msgstr "" -#: reference/datamodel.rst:2869 +#: reference/datamodel.rst:2883 msgid "" "Those ``__set_name__`` methods are called with the class being defined and " "the assigned name of that particular attribute;" msgstr "" -#: reference/datamodel.rst:2871 +#: reference/datamodel.rst:2885 msgid "" "The :meth:`~object.__init_subclass__` hook is called on the immediate parent " "of the new class in its method resolution order." msgstr "" -#: reference/datamodel.rst:2874 +#: reference/datamodel.rst:2888 msgid "" "After the class object is created, it is passed to the class decorators " "included in the class definition (if any) and the resulting object is bound " "in the local namespace as the defined class." msgstr "" -#: reference/datamodel.rst:2878 +#: reference/datamodel.rst:2892 msgid "" "When a new class is created by ``type.__new__``, the object provided as the " "namespace parameter is copied to a new ordered mapping and the original " @@ -3324,19 +3339,19 @@ msgid "" "becomes the :attr:`~type.__dict__` attribute of the class object." msgstr "" -#: reference/datamodel.rst:2885 +#: reference/datamodel.rst:2899 msgid ":pep:`3135` - New super" msgstr "" -#: reference/datamodel.rst:2886 +#: reference/datamodel.rst:2900 msgid "Describes the implicit ``__class__`` closure reference" msgstr "" -#: reference/datamodel.rst:2890 +#: reference/datamodel.rst:2904 msgid "Uses for metaclasses" msgstr "" -#: reference/datamodel.rst:2892 +#: reference/datamodel.rst:2906 msgid "" "The potential uses for metaclasses are boundless. Some ideas that have been " "explored include enum, logging, interface checking, automatic delegation, " @@ -3344,17 +3359,17 @@ msgid "" "locking/synchronization." msgstr "" -#: reference/datamodel.rst:2899 +#: reference/datamodel.rst:2913 msgid "Customizing instance and subclass checks" msgstr "" -#: reference/datamodel.rst:2901 +#: reference/datamodel.rst:2915 msgid "" "The following methods are used to override the default behavior of the :func:" "`isinstance` and :func:`issubclass` built-in functions." msgstr "" -#: reference/datamodel.rst:2904 +#: reference/datamodel.rst:2918 msgid "" "In particular, the metaclass :class:`abc.ABCMeta` implements these methods " "in order to allow the addition of Abstract Base Classes (ABCs) as \"virtual " @@ -3362,21 +3377,21 @@ msgid "" "other ABCs." msgstr "" -#: reference/datamodel.rst:2911 +#: reference/datamodel.rst:2925 msgid "" "Return true if *instance* should be considered a (direct or indirect) " "instance of *class*. If defined, called to implement ``isinstance(instance, " "class)``." msgstr "" -#: reference/datamodel.rst:2918 +#: reference/datamodel.rst:2932 msgid "" "Return true if *subclass* should be considered a (direct or indirect) " "subclass of *class*. If defined, called to implement ``issubclass(subclass, " "class)``." msgstr "" -#: reference/datamodel.rst:2923 +#: reference/datamodel.rst:2937 msgid "" "Note that these methods are looked up on the type (metaclass) of a class. " "They cannot be defined as class methods in the actual class. This is " @@ -3384,11 +3399,11 @@ msgid "" "only in this case the instance is itself a class." msgstr "" -#: reference/datamodel.rst:2930 +#: reference/datamodel.rst:2944 msgid ":pep:`3119` - Introducing Abstract Base Classes" msgstr "" -#: reference/datamodel.rst:2931 +#: reference/datamodel.rst:2945 msgid "" "Includes the specification for customizing :func:`isinstance` and :func:" "`issubclass` behavior through :meth:`~type.__instancecheck__` and :meth:" @@ -3397,11 +3412,11 @@ msgid "" "language." msgstr "" -#: reference/datamodel.rst:2939 +#: reference/datamodel.rst:2953 msgid "Emulating generic types" msgstr "" -#: reference/datamodel.rst:2941 +#: reference/datamodel.rst:2955 msgid "" "When using :term:`type annotations`, it is often useful to " "*parameterize* a :term:`generic type` using Python's square-brackets " @@ -3409,65 +3424,65 @@ msgid "" "a :class:`list` in which all the elements are of type :class:`int`." msgstr "" -#: reference/datamodel.rst:2948 +#: reference/datamodel.rst:2962 msgid ":pep:`484` - Type Hints" msgstr "" -#: reference/datamodel.rst:2949 +#: reference/datamodel.rst:2963 msgid "Introducing Python's framework for type annotations" msgstr "" -#: reference/datamodel.rst:2951 +#: reference/datamodel.rst:2965 msgid ":ref:`Generic Alias Types`" msgstr "" -#: reference/datamodel.rst:2952 +#: reference/datamodel.rst:2966 msgid "Documentation for objects representing parameterized generic classes" msgstr "" -#: reference/datamodel.rst:2954 +#: reference/datamodel.rst:2968 msgid "" ":ref:`Generics`, :ref:`user-defined generics` and :" "class:`typing.Generic`" msgstr "" -#: reference/datamodel.rst:2955 +#: reference/datamodel.rst:2969 msgid "" "Documentation on how to implement generic classes that can be parameterized " "at runtime and understood by static type-checkers." msgstr "" -#: reference/datamodel.rst:2958 +#: reference/datamodel.rst:2972 msgid "" "A class can *generally* only be parameterized if it defines the special " "class method ``__class_getitem__()``." msgstr "" -#: reference/datamodel.rst:2963 +#: reference/datamodel.rst:2977 msgid "" "Return an object representing the specialization of a generic class by type " "arguments found in *key*." msgstr "" -#: reference/datamodel.rst:2966 +#: reference/datamodel.rst:2980 msgid "" "When defined on a class, ``__class_getitem__()`` is automatically a class " "method. As such, there is no need for it to be decorated with :func:" "`@classmethod` when it is defined." msgstr "" -#: reference/datamodel.rst:2972 +#: reference/datamodel.rst:2986 msgid "The purpose of *__class_getitem__*" msgstr "" -#: reference/datamodel.rst:2974 +#: reference/datamodel.rst:2988 msgid "" "The purpose of :meth:`~object.__class_getitem__` is to allow runtime " "parameterization of standard-library generic classes in order to more easily " "apply :term:`type hints` to these classes." msgstr "" -#: reference/datamodel.rst:2978 +#: reference/datamodel.rst:2992 msgid "" "To implement custom generic classes that can be parameterized at runtime and " "understood by static type-checkers, users should either inherit from a " @@ -3476,7 +3491,7 @@ msgid "" "own implementation of ``__class_getitem__()``." msgstr "" -#: reference/datamodel.rst:2984 +#: reference/datamodel.rst:2998 msgid "" "Custom implementations of :meth:`~object.__class_getitem__` on classes " "defined outside of the standard library may not be understood by third-party " @@ -3484,11 +3499,11 @@ msgid "" "purposes other than type hinting is discouraged." msgstr "" -#: reference/datamodel.rst:2994 +#: reference/datamodel.rst:3008 msgid "*__class_getitem__* versus *__getitem__*" msgstr "" -#: reference/datamodel.rst:2996 +#: reference/datamodel.rst:3010 msgid "" "Usually, the :ref:`subscription` of an object using square " "brackets will call the :meth:`~object.__getitem__` instance method defined " @@ -3498,14 +3513,14 @@ msgid "" "genericalias>` object if it is properly defined." msgstr "" -#: reference/datamodel.rst:3003 +#: reference/datamodel.rst:3017 msgid "" "Presented with the :term:`expression` ``obj[x]``, the Python interpreter " "follows something like the following process to decide whether :meth:" "`~object.__getitem__` or :meth:`~object.__class_getitem__` should be called::" msgstr "" -#: reference/datamodel.rst:3008 +#: reference/datamodel.rst:3022 msgid "" "from inspect import isclass\n" "\n" @@ -3531,7 +3546,7 @@ msgid "" " )" msgstr "" -#: reference/datamodel.rst:3031 +#: reference/datamodel.rst:3045 msgid "" "In Python, all classes are themselves instances of other classes. The class " "of a class is known as that class's :term:`metaclass`, and most classes have " @@ -3541,7 +3556,7 @@ msgid "" "__class_getitem__` being called::" msgstr "" -#: reference/datamodel.rst:3038 +#: reference/datamodel.rst:3052 msgid "" ">>> # list has class \"type\" as its metaclass, like most classes:\n" ">>> type(list)\n" @@ -3556,14 +3571,14 @@ msgid "" "" msgstr "" -#: reference/datamodel.rst:3050 +#: reference/datamodel.rst:3064 msgid "" "However, if a class has a custom metaclass that defines :meth:`~object." "__getitem__`, subscribing the class may result in different behaviour. An " "example of this can be found in the :mod:`enum` module::" msgstr "" -#: reference/datamodel.rst:3054 +#: reference/datamodel.rst:3068 msgid "" ">>> from enum import Enum\n" ">>> class Menu(Enum):\n" @@ -3583,33 +3598,33 @@ msgid "" "" msgstr "" -#: reference/datamodel.rst:3073 +#: reference/datamodel.rst:3087 msgid ":pep:`560` - Core Support for typing module and generic types" msgstr "" -#: reference/datamodel.rst:3074 +#: reference/datamodel.rst:3088 msgid "" "Introducing :meth:`~object.__class_getitem__`, and outlining when a :ref:" "`subscription` results in ``__class_getitem__()`` being " "called instead of :meth:`~object.__getitem__`" msgstr "" -#: reference/datamodel.rst:3082 +#: reference/datamodel.rst:3096 msgid "Emulating callable objects" msgstr "" -#: reference/datamodel.rst:3089 +#: reference/datamodel.rst:3103 msgid "" "Called when the instance is \"called\" as a function; if this method is " "defined, ``x(arg1, arg2, ...)`` roughly translates to ``type(x).__call__(x, " "arg1, ...)``. The :class:`object` class itself does not provide this method." msgstr "" -#: reference/datamodel.rst:3097 +#: reference/datamodel.rst:3111 msgid "Emulating container types" msgstr "" -#: reference/datamodel.rst:3099 +#: reference/datamodel.rst:3113 msgid "" "The following methods can be defined to implement container objects. None of " "them are provided by the :class:`object` class itself. Containers usually " @@ -3646,7 +3661,7 @@ msgid "" "should iterate through the values." msgstr "" -#: reference/datamodel.rst:3141 +#: reference/datamodel.rst:3155 msgid "" "Called to implement the built-in function :func:`len`. Should return the " "length of the object, an integer ``>=`` 0. Also, an object that doesn't " @@ -3654,7 +3669,7 @@ msgid "" "returns zero is considered to be false in a Boolean context." msgstr "" -#: reference/datamodel.rst:3148 +#: reference/datamodel.rst:3162 msgid "" "In CPython, the length is required to be at most :data:`sys.maxsize`. If the " "length is larger than :data:`!sys.maxsize` some features (such as :func:" @@ -3663,7 +3678,7 @@ msgid "" "`~object.__bool__` method." msgstr "" -#: reference/datamodel.rst:3157 +#: reference/datamodel.rst:3171 msgid "" "Called to implement :func:`operator.length_hint`. Should return an estimated " "length for the object (which may be greater or less than the actual length). " @@ -3673,28 +3688,28 @@ msgid "" "never required for correctness." msgstr "" -#: reference/datamodel.rst:3171 +#: reference/datamodel.rst:3185 msgid "" "Slicing is done exclusively with the following three methods. A call like ::" msgstr "" -#: reference/datamodel.rst:3173 +#: reference/datamodel.rst:3187 msgid "a[1:2] = b" msgstr "" -#: reference/datamodel.rst:3175 +#: reference/datamodel.rst:3189 msgid "is translated to ::" msgstr "" -#: reference/datamodel.rst:3177 +#: reference/datamodel.rst:3191 msgid "a[slice(1, 2, None)] = b" msgstr "" -#: reference/datamodel.rst:3179 +#: reference/datamodel.rst:3193 msgid "and so forth. Missing slice items are always filled in with ``None``." msgstr "" -#: reference/datamodel.rst:3184 +#: reference/datamodel.rst:3198 msgid "" "Called to implement evaluation of ``self[key]``. For :term:`sequence` types, " "the accepted keys should be integers. Optionally, they may support :class:" @@ -3706,20 +3721,20 @@ msgid "" "`KeyError` should be raised." msgstr "" -#: reference/datamodel.rst:3196 +#: reference/datamodel.rst:3210 msgid "" ":keyword:`for` loops expect that an :exc:`IndexError` will be raised for " "illegal indexes to allow proper detection of the end of the sequence." msgstr "" -#: reference/datamodel.rst:3201 +#: reference/datamodel.rst:3215 msgid "" "When :ref:`subscripting` a *class*, the special class method :" "meth:`~object.__class_getitem__` may be called instead of ``__getitem__()``. " "See :ref:`classgetitem-versus-getitem` for more details." msgstr "" -#: reference/datamodel.rst:3209 +#: reference/datamodel.rst:3223 msgid "" "Called to implement assignment to ``self[key]``. Same note as for :meth:" "`__getitem__`. This should only be implemented for mappings if the objects " @@ -3728,7 +3743,7 @@ msgid "" "for improper *key* values as for the :meth:`__getitem__` method." msgstr "" -#: reference/datamodel.rst:3218 +#: reference/datamodel.rst:3232 msgid "" "Called to implement deletion of ``self[key]``. Same note as for :meth:" "`__getitem__`. This should only be implemented for mappings if the objects " @@ -3737,13 +3752,13 @@ msgid "" "values as for the :meth:`__getitem__` method." msgstr "" -#: reference/datamodel.rst:3227 +#: reference/datamodel.rst:3241 msgid "" "Called by :class:`dict`\\ .\\ :meth:`__getitem__` to implement ``self[key]`` " "for dict subclasses when key is not in the dictionary." msgstr "" -#: reference/datamodel.rst:3233 +#: reference/datamodel.rst:3247 msgid "" "This method is called when an :term:`iterator` is required for a container. " "This method should return a new iterator object that can iterate over all " @@ -3751,14 +3766,14 @@ msgid "" "of the container." msgstr "" -#: reference/datamodel.rst:3241 +#: reference/datamodel.rst:3255 msgid "" "Called (if present) by the :func:`reversed` built-in to implement reverse " "iteration. It should return a new iterator object that iterates over all " "the objects in the container in reverse order." msgstr "" -#: reference/datamodel.rst:3245 +#: reference/datamodel.rst:3259 msgid "" "If the :meth:`__reversed__` method is not provided, the :func:`reversed` " "built-in will fall back to using the sequence protocol (:meth:`__len__` and :" @@ -3767,7 +3782,7 @@ msgid "" "more efficient than the one provided by :func:`reversed`." msgstr "" -#: reference/datamodel.rst:3252 +#: reference/datamodel.rst:3266 msgid "" "The membership test operators (:keyword:`in` and :keyword:`not in`) are " "normally implemented as an iteration through a container. However, container " @@ -3775,14 +3790,14 @@ msgid "" "implementation, which also does not require the object be iterable." msgstr "" -#: reference/datamodel.rst:3259 +#: reference/datamodel.rst:3273 msgid "" "Called to implement membership test operators. Should return true if *item* " "is in *self*, false otherwise. For mapping objects, this should consider " "the keys of the mapping rather than the values or the key-item pairs." msgstr "" -#: reference/datamodel.rst:3263 +#: reference/datamodel.rst:3277 msgid "" "For objects that don't define :meth:`__contains__`, the membership test " "first tries iteration via :meth:`__iter__`, then the old sequence iteration " @@ -3790,11 +3805,11 @@ msgid "" "reference `." msgstr "" -#: reference/datamodel.rst:3272 +#: reference/datamodel.rst:3286 msgid "Emulating numeric types" msgstr "" -#: reference/datamodel.rst:3274 +#: reference/datamodel.rst:3288 msgid "" "The following methods can be defined to emulate numeric objects. Methods " "corresponding to operations that are not supported by the particular kind of " @@ -3802,7 +3817,7 @@ msgid "" "should be left undefined." msgstr "" -#: reference/datamodel.rst:3300 +#: reference/datamodel.rst:3314 msgid "" "These methods are called to implement the binary arithmetic operations " "(``+``, ``-``, ``*``, ``@``, ``/``, ``//``, ``%``, :func:`divmod`, :func:" @@ -3816,13 +3831,13 @@ msgid "" "`pow` function is to be supported." msgstr "" -#: reference/datamodel.rst:3311 +#: reference/datamodel.rst:3325 msgid "" "If one of those methods does not support the operation with the supplied " "arguments, it should return :data:`NotImplemented`." msgstr "" -#: reference/datamodel.rst:3334 +#: reference/datamodel.rst:3348 msgid "" "These methods are called to implement the binary arithmetic operations " "(``+``, ``-``, ``*``, ``@``, ``/``, ``//``, ``%``, :func:`divmod`, :func:" @@ -3836,21 +3851,21 @@ msgid "" "`NotImplemented` or ``type(y)`` is a subclass of ``type(x)``. [#]_" msgstr "" -#: reference/datamodel.rst:3345 +#: reference/datamodel.rst:3359 msgid "" "Note that :meth:`__rpow__` should be defined to accept an optional third " "argument if the three-argument version of the built-in :func:`pow` function " "is to be supported." msgstr "" -#: reference/datamodel.rst:3351 +#: reference/datamodel.rst:3365 msgid "" "Three-argument :func:`pow` now try calling :meth:`~object.__rpow__` if " "necessary. Previously it was only called in two-argument :func:`!pow` and " "the binary power operator." msgstr "" -#: reference/datamodel.rst:3357 +#: reference/datamodel.rst:3371 msgid "" "If the right operand's type is a subclass of the left operand's type and " "that subclass provides a different implementation of the reflected method " @@ -3859,7 +3874,7 @@ msgid "" "ancestors' operations." msgstr "" -#: reference/datamodel.rst:3377 +#: reference/datamodel.rst:3391 msgid "" "These methods are called to implement the augmented arithmetic assignments " "(``+=``, ``-=``, ``*=``, ``@=``, ``/=``, ``//=``, ``%=``, ``**=``, ``<<=``, " @@ -3877,19 +3892,19 @@ msgid "" "data model." msgstr "" -#: reference/datamodel.rst:3400 +#: reference/datamodel.rst:3414 msgid "" "Called to implement the unary arithmetic operations (``-``, ``+``, :func:" "`abs` and ``~``)." msgstr "" -#: reference/datamodel.rst:3413 +#: reference/datamodel.rst:3427 msgid "" "Called to implement the built-in functions :func:`complex`, :func:`int` and :" "func:`float`. Should return a value of the appropriate type." msgstr "" -#: reference/datamodel.rst:3420 +#: reference/datamodel.rst:3434 msgid "" "Called to implement :func:`operator.index`, and whenever Python needs to " "losslessly convert the numeric object to an integer object (such as in " @@ -3898,14 +3913,14 @@ msgid "" "integer type. Must return an integer." msgstr "" -#: reference/datamodel.rst:3426 +#: reference/datamodel.rst:3440 msgid "" "If :meth:`__int__`, :meth:`__float__` and :meth:`__complex__` are not " "defined then corresponding built-in functions :func:`int`, :func:`float` " "and :func:`complex` fall back to :meth:`__index__`." msgstr "" -#: reference/datamodel.rst:3438 +#: reference/datamodel.rst:3452 msgid "" "Called to implement the built-in function :func:`round` and :mod:`math` " "functions :func:`~math.trunc`, :func:`~math.floor` and :func:`~math.ceil`. " @@ -3914,16 +3929,16 @@ msgid "" "(typically an :class:`int`)." msgstr "" -#: reference/datamodel.rst:3444 +#: reference/datamodel.rst:3458 msgid "" ":func:`int` no longer delegates to the :meth:`~object.__trunc__` method." msgstr "" -#: reference/datamodel.rst:3451 +#: reference/datamodel.rst:3465 msgid "With Statement Context Managers" msgstr "" -#: reference/datamodel.rst:3453 +#: reference/datamodel.rst:3467 msgid "" "A :dfn:`context manager` is an object that defines the runtime context to be " "established when executing a :keyword:`with` statement. The context manager " @@ -3933,34 +3948,34 @@ msgid "" "can also be used by directly invoking their methods." msgstr "" -#: reference/datamodel.rst:3464 +#: reference/datamodel.rst:3478 msgid "" "Typical uses of context managers include saving and restoring various kinds " "of global state, locking and unlocking resources, closing opened files, etc." msgstr "" -#: reference/datamodel.rst:3467 +#: reference/datamodel.rst:3481 msgid "" "For more information on context managers, see :ref:`typecontextmanager`. " "The :class:`object` class itself does not provide the context manager " "methods." msgstr "" -#: reference/datamodel.rst:3473 +#: reference/datamodel.rst:3487 msgid "" "Enter the runtime context related to this object. The :keyword:`with` " "statement will bind this method's return value to the target(s) specified in " "the :keyword:`!as` clause of the statement, if any." msgstr "" -#: reference/datamodel.rst:3480 +#: reference/datamodel.rst:3494 msgid "" "Exit the runtime context related to this object. The parameters describe the " "exception that caused the context to be exited. If the context was exited " "without an exception, all three arguments will be :const:`None`." msgstr "" -#: reference/datamodel.rst:3484 +#: reference/datamodel.rst:3498 msgid "" "If an exception is supplied, and the method wishes to suppress the exception " "(i.e., prevent it from being propagated), it should return a true value. " @@ -3968,27 +3983,27 @@ msgid "" "method." msgstr "" -#: reference/datamodel.rst:3488 +#: reference/datamodel.rst:3502 msgid "" "Note that :meth:`~object.__exit__` methods should not reraise the passed-in " "exception; this is the caller's responsibility." msgstr "" -#: reference/datamodel.rst:3494 +#: reference/datamodel.rst:3508 msgid ":pep:`343` - The \"with\" statement" msgstr "" -#: reference/datamodel.rst:3495 +#: reference/datamodel.rst:3509 msgid "" "The specification, background, and examples for the Python :keyword:`with` " "statement." msgstr "" -#: reference/datamodel.rst:3502 +#: reference/datamodel.rst:3516 msgid "Customizing positional arguments in class pattern matching" msgstr "" -#: reference/datamodel.rst:3504 +#: reference/datamodel.rst:3518 msgid "" "When using a class name in a pattern, positional arguments in the pattern " "are not allowed by default, i.e. ``case MyClass(x, y)`` is typically invalid " @@ -3996,7 +4011,7 @@ msgid "" "pattern, the class needs to define a *__match_args__* attribute." msgstr "" -#: reference/datamodel.rst:3511 +#: reference/datamodel.rst:3525 msgid "" "This class variable can be assigned a tuple of strings. When this class is " "used in a class pattern with positional arguments, each positional argument " @@ -4005,7 +4020,7 @@ msgid "" "to setting it to ``()``." msgstr "" -#: reference/datamodel.rst:3517 +#: reference/datamodel.rst:3531 msgid "" "For example, if ``MyClass.__match_args__`` is ``(\"left\", \"center\", " "\"right\")`` that means that ``case MyClass(x, y)`` is equivalent to ``case " @@ -4015,19 +4030,19 @@ msgid "" "exc:`TypeError`." msgstr "" -#: reference/datamodel.rst:3527 +#: reference/datamodel.rst:3541 msgid ":pep:`634` - Structural Pattern Matching" msgstr "" -#: reference/datamodel.rst:3528 +#: reference/datamodel.rst:3542 msgid "The specification for the Python ``match`` statement." msgstr "" -#: reference/datamodel.rst:3534 +#: reference/datamodel.rst:3548 msgid "Emulating buffer types" msgstr "" -#: reference/datamodel.rst:3536 +#: reference/datamodel.rst:3550 msgid "" "The :ref:`buffer protocol ` provides a way for Python objects " "to expose efficient access to a low-level memory array. This protocol is " @@ -4035,13 +4050,13 @@ msgid "" "and third-party libraries may define additional buffer types." msgstr "" -#: reference/datamodel.rst:3541 +#: reference/datamodel.rst:3555 msgid "" "While buffer types are usually implemented in C, it is also possible to " "implement the protocol in Python." msgstr "" -#: reference/datamodel.rst:3546 +#: reference/datamodel.rst:3560 msgid "" "Called when a buffer is requested from *self* (for example, by the :class:" "`memoryview` constructor). The *flags* argument is an integer representing " @@ -4051,7 +4066,7 @@ msgid "" "`memoryview` object." msgstr "" -#: reference/datamodel.rst:3555 +#: reference/datamodel.rst:3569 msgid "" "Called when a buffer is no longer needed. The *buffer* argument is a :class:" "`memoryview` object that was previously returned by :meth:`~object." @@ -4060,35 +4075,35 @@ msgid "" "to perform any cleanup are not required to implement this method." msgstr "" -#: reference/datamodel.rst:3566 +#: reference/datamodel.rst:3580 msgid ":pep:`688` - Making the buffer protocol accessible in Python" msgstr "" -#: reference/datamodel.rst:3567 +#: reference/datamodel.rst:3581 msgid "" "Introduces the Python ``__buffer__`` and ``__release_buffer__`` methods." msgstr "" -#: reference/datamodel.rst:3569 +#: reference/datamodel.rst:3583 msgid ":class:`collections.abc.Buffer`" msgstr "" -#: reference/datamodel.rst:3570 +#: reference/datamodel.rst:3584 msgid "ABC for buffer types." msgstr "" -#: reference/datamodel.rst:3573 +#: reference/datamodel.rst:3587 msgid "Annotations" msgstr "" -#: reference/datamodel.rst:3575 +#: reference/datamodel.rst:3589 msgid "" "Functions, classes, and modules may contain :term:`annotations " "`, which are a way to associate information (usually :term:`type " "hints `) with a symbol." msgstr "" -#: reference/datamodel.rst:3581 +#: reference/datamodel.rst:3595 msgid "" "This attribute contains the annotations for an object. It is :ref:`lazily " "evaluated `, so accessing the attribute may execute " @@ -4096,24 +4111,24 @@ msgid "" "attribute is set to a dictionary mapping from variable names to annotations." msgstr "" -#: reference/datamodel.rst:3586 +#: reference/datamodel.rst:3600 msgid "Annotations are now lazily evaluated." msgstr "" -#: reference/datamodel.rst:3591 +#: reference/datamodel.rst:3605 msgid "" "An :term:`annotate function`. Returns a new dictionary object mapping " "attribute/parameter names to their annotation values." msgstr "" -#: reference/datamodel.rst:3594 +#: reference/datamodel.rst:3608 msgid "" "Takes a format parameter specifying the format in which annotations values " "should be provided. It must be a member of the :class:`annotationlib.Format` " "enum, or an integer with a value corresponding to a member of the enum." msgstr "" -#: reference/datamodel.rst:3598 +#: reference/datamodel.rst:3612 msgid "" "If an annotate function doesn't support the requested format, it must raise :" "exc:`NotImplementedError`. Annotate functions must always support :attr:" @@ -4121,34 +4136,34 @@ msgid "" "`NotImplementedError()` when called with this format." msgstr "" -#: reference/datamodel.rst:3603 +#: reference/datamodel.rst:3617 msgid "" "When called with :attr:`~annotationlib.Format.VALUE` format, an annotate " "function may raise :exc:`NameError`; it must not raise :exc:`!NameError` " "when called requesting any other format." msgstr "" -#: reference/datamodel.rst:3606 +#: reference/datamodel.rst:3620 msgid "" "If an object does not have any annotations, :attr:`~object.__annotate__` " "should preferably be set to ``None`` (it can’t be deleted), rather than set " "to a function that returns an empty dict." msgstr "" -#: reference/datamodel.rst:3613 +#: reference/datamodel.rst:3627 msgid ":pep:`649` --- Deferred evaluation of annotation using descriptors" msgstr "" -#: reference/datamodel.rst:3614 +#: reference/datamodel.rst:3628 msgid "" "Introduces lazy evaluation of annotations and the ``__annotate__`` function." msgstr "" -#: reference/datamodel.rst:3620 +#: reference/datamodel.rst:3634 msgid "Special method lookup" msgstr "" -#: reference/datamodel.rst:3622 +#: reference/datamodel.rst:3636 msgid "" "For custom classes, implicit invocations of special methods are only " "guaranteed to work correctly if defined on an object's type, not in the " @@ -4156,7 +4171,7 @@ msgid "" "following code raises an exception::" msgstr "" -#: reference/datamodel.rst:3627 +#: reference/datamodel.rst:3641 msgid "" ">>> class C:\n" "... pass\n" @@ -4169,7 +4184,7 @@ msgid "" "TypeError: object of type 'C' has no len()" msgstr "" -#: reference/datamodel.rst:3637 +#: reference/datamodel.rst:3651 msgid "" "The rationale behind this behaviour lies with a number of special methods " "such as :meth:`~object.__hash__` and :meth:`~object.__repr__` that are " @@ -4178,7 +4193,7 @@ msgid "" "invoked on the type object itself::" msgstr "" -#: reference/datamodel.rst:3644 +#: reference/datamodel.rst:3658 msgid "" ">>> 1 .__hash__() == hash(1)\n" "True\n" @@ -4188,14 +4203,14 @@ msgid "" "TypeError: descriptor '__hash__' of 'int' object needs an argument" msgstr "" -#: reference/datamodel.rst:3651 +#: reference/datamodel.rst:3665 msgid "" "Incorrectly attempting to invoke an unbound method of a class in this way is " "sometimes referred to as 'metaclass confusion', and is avoided by bypassing " "the instance when looking up special methods::" msgstr "" -#: reference/datamodel.rst:3655 +#: reference/datamodel.rst:3669 msgid "" ">>> type(1).__hash__(1) == hash(1)\n" "True\n" @@ -4203,14 +4218,14 @@ msgid "" "True" msgstr "" -#: reference/datamodel.rst:3660 +#: reference/datamodel.rst:3674 msgid "" "In addition to bypassing any instance attributes in the interest of " "correctness, implicit special method lookup generally also bypasses the :" "meth:`~object.__getattribute__` method even of the object's metaclass::" msgstr "" -#: reference/datamodel.rst:3664 +#: reference/datamodel.rst:3678 msgid "" ">>> class Meta(type):\n" "... def __getattribute__(*args):\n" @@ -4235,7 +4250,7 @@ msgid "" "10" msgstr "" -#: reference/datamodel.rst:3686 +#: reference/datamodel.rst:3700 msgid "" "Bypassing the :meth:`~object.__getattribute__` machinery in this fashion " "provides significant scope for speed optimisations within the interpreter, " @@ -4244,29 +4259,29 @@ msgid "" "consistently invoked by the interpreter)." msgstr "" -#: reference/datamodel.rst:3697 +#: reference/datamodel.rst:3711 msgid "Coroutines" msgstr "" -#: reference/datamodel.rst:3701 +#: reference/datamodel.rst:3715 msgid "Awaitable Objects" msgstr "" -#: reference/datamodel.rst:3703 +#: reference/datamodel.rst:3717 msgid "" "An :term:`awaitable` object generally implements an :meth:`~object." "__await__` method. :term:`Coroutine objects ` returned from :" "keyword:`async def` functions are awaitable." msgstr "" -#: reference/datamodel.rst:3709 +#: reference/datamodel.rst:3723 msgid "" "The :term:`generator iterator` objects returned from generators decorated " "with :func:`types.coroutine` are also awaitable, but they do not implement :" "meth:`~object.__await__`." msgstr "" -#: reference/datamodel.rst:3715 +#: reference/datamodel.rst:3729 msgid "" "Must return an :term:`iterator`. Should be used to implement :term:" "`awaitable` objects. For instance, :class:`asyncio.Future` implements this " @@ -4274,7 +4289,7 @@ msgid "" "`object` class itself is not awaitable and does not provide this method." msgstr "" -#: reference/datamodel.rst:3723 +#: reference/datamodel.rst:3737 msgid "" "The language doesn't place any restriction on the type or value of the " "objects yielded by the iterator returned by ``__await__``, as this is " @@ -4282,15 +4297,15 @@ msgid "" "g. :mod:`asyncio`) that will be managing the :term:`awaitable` object." msgstr "" -#: reference/datamodel.rst:3731 +#: reference/datamodel.rst:3745 msgid ":pep:`492` for additional information about awaitable objects." msgstr "" -#: reference/datamodel.rst:3737 +#: reference/datamodel.rst:3751 msgid "Coroutine Objects" msgstr "" -#: reference/datamodel.rst:3739 +#: reference/datamodel.rst:3753 msgid "" ":term:`Coroutine objects ` are :term:`awaitable` objects. A " "coroutine's execution can be controlled by calling :meth:`~object.__await__` " @@ -4301,18 +4316,18 @@ msgid "" "should not directly raise unhandled :exc:`StopIteration` exceptions." msgstr "" -#: reference/datamodel.rst:3747 +#: reference/datamodel.rst:3761 msgid "" "Coroutines also have the methods listed below, which are analogous to those " "of generators (see :ref:`generator-methods`). However, unlike generators, " "coroutines do not directly support iteration." msgstr "" -#: reference/datamodel.rst:3751 +#: reference/datamodel.rst:3765 msgid "It is a :exc:`RuntimeError` to await on a coroutine more than once." msgstr "" -#: reference/datamodel.rst:3757 +#: reference/datamodel.rst:3771 msgid "" "Starts or resumes execution of the coroutine. If *value* is ``None``, this " "is equivalent to advancing the iterator returned by :meth:`~object." @@ -4323,7 +4338,7 @@ msgid "" "value, described above." msgstr "" -#: reference/datamodel.rst:3768 +#: reference/datamodel.rst:3782 msgid "" "Raises the specified exception in the coroutine. This method delegates to " "the :meth:`~generator.throw` method of the iterator that caused the " @@ -4334,13 +4349,13 @@ msgid "" "not caught in the coroutine, it propagates back to the caller." msgstr "" -#: reference/datamodel.rst:3779 +#: reference/datamodel.rst:3793 msgid "" "The second signature \\(type\\[, value\\[, traceback\\]\\]\\) is deprecated " "and may be removed in a future version of Python." msgstr "" -#: reference/datamodel.rst:3784 +#: reference/datamodel.rst:3798 msgid "" "Causes the coroutine to clean itself up and exit. If the coroutine is " "suspended, this method first delegates to the :meth:`~generator.close` " @@ -4350,46 +4365,46 @@ msgid "" "is marked as having finished executing, even if it was never started." msgstr "" -#: reference/datamodel.rst:3792 +#: reference/datamodel.rst:3806 msgid "" "Coroutine objects are automatically closed using the above process when they " "are about to be destroyed." msgstr "" -#: reference/datamodel.rst:3798 +#: reference/datamodel.rst:3812 msgid "Asynchronous Iterators" msgstr "" -#: reference/datamodel.rst:3800 +#: reference/datamodel.rst:3814 msgid "" "An *asynchronous iterator* can call asynchronous code in its ``__anext__`` " "method." msgstr "" -#: reference/datamodel.rst:3803 +#: reference/datamodel.rst:3817 msgid "" "Asynchronous iterators can be used in an :keyword:`async for` statement." msgstr "" -#: reference/datamodel.rst:3854 +#: reference/datamodel.rst:3868 msgid "The :class:`object` class itself does not provide these methods." msgstr "" -#: reference/datamodel.rst:3810 +#: reference/datamodel.rst:3824 msgid "Must return an *asynchronous iterator* object." msgstr "" -#: reference/datamodel.rst:3814 +#: reference/datamodel.rst:3828 msgid "" "Must return an *awaitable* resulting in a next value of the iterator. " "Should raise a :exc:`StopAsyncIteration` error when the iteration is over." msgstr "" -#: reference/datamodel.rst:3817 +#: reference/datamodel.rst:3831 msgid "An example of an asynchronous iterable object::" msgstr "" -#: reference/datamodel.rst:3819 +#: reference/datamodel.rst:3833 msgid "" "class Reader:\n" " async def readline(self):\n" @@ -4405,53 +4420,53 @@ msgid "" " return val" msgstr "" -#: reference/datamodel.rst:3834 +#: reference/datamodel.rst:3848 msgid "" "Prior to Python 3.7, :meth:`~object.__aiter__` could return an *awaitable* " "that would resolve to an :term:`asynchronous iterator `." msgstr "" -#: reference/datamodel.rst:3839 +#: reference/datamodel.rst:3853 msgid "" "Starting with Python 3.7, :meth:`~object.__aiter__` must return an " "asynchronous iterator object. Returning anything else will result in a :exc:" "`TypeError` error." msgstr "" -#: reference/datamodel.rst:3847 +#: reference/datamodel.rst:3861 msgid "Asynchronous Context Managers" msgstr "" -#: reference/datamodel.rst:3849 +#: reference/datamodel.rst:3863 msgid "" "An *asynchronous context manager* is a *context manager* that is able to " "suspend execution in its ``__aenter__`` and ``__aexit__`` methods." msgstr "" -#: reference/datamodel.rst:3852 +#: reference/datamodel.rst:3866 msgid "" "Asynchronous context managers can be used in an :keyword:`async with` " "statement." msgstr "" -#: reference/datamodel.rst:3858 +#: reference/datamodel.rst:3872 msgid "" "Semantically similar to :meth:`~object.__enter__`, the only difference being " "that it must return an *awaitable*." msgstr "" -#: reference/datamodel.rst:3863 +#: reference/datamodel.rst:3877 msgid "" "Semantically similar to :meth:`~object.__exit__`, the only difference being " "that it must return an *awaitable*." msgstr "" -#: reference/datamodel.rst:3866 +#: reference/datamodel.rst:3880 msgid "An example of an asynchronous context manager class::" msgstr "" -#: reference/datamodel.rst:3868 +#: reference/datamodel.rst:3882 msgid "" "class AsyncContextManager:\n" " async def __aenter__(self):\n" @@ -4461,18 +4476,18 @@ msgid "" " await log('exiting context')" msgstr "" -#: reference/datamodel.rst:3879 +#: reference/datamodel.rst:3893 msgid "Footnotes" msgstr "" -#: reference/datamodel.rst:3880 +#: reference/datamodel.rst:3894 msgid "" "It *is* possible in some cases to change an object's type, under certain " "controlled conditions. It generally isn't a good idea though, since it can " "lead to some very strange behaviour if it is handled incorrectly." msgstr "" -#: reference/datamodel.rst:3884 +#: reference/datamodel.rst:3898 msgid "" "The :meth:`~object.__hash__`, :meth:`~object.__iter__`, :meth:`~object." "__reversed__`, :meth:`~object.__contains__`, :meth:`~object." @@ -4481,7 +4496,7 @@ msgid "" "by relying on the behavior that ``None`` is not callable." msgstr "" -#: reference/datamodel.rst:3891 +#: reference/datamodel.rst:3905 msgid "" "\"Does not support\" here means that the class has no such method, or the " "method returns :data:`NotImplemented`. Do not set the method to ``None`` if " @@ -4489,14 +4504,14 @@ msgid "" "instead have the opposite effect of explicitly *blocking* such fallback." msgstr "" -#: reference/datamodel.rst:3897 +#: reference/datamodel.rst:3911 msgid "" "For operands of the same type, it is assumed that if the non-reflected " "method (such as :meth:`~object.__add__`) fails then the operation is not " "supported, which is why the reflected method is not called." msgstr "" -#: reference/datamodel.rst:3901 +#: reference/datamodel.rst:3915 msgid "" "If the right operand's type is a subclass of the left operand's type, the " "reflected method having precedence allows subclasses to override their " @@ -4504,14 +4519,14 @@ msgid "" msgstr "" #: reference/datamodel.rst:152 reference/datamodel.rst:187 -#: reference/datamodel.rst:232 reference/datamodel.rst:268 -#: reference/datamodel.rst:299 reference/datamodel.rst:366 -#: reference/datamodel.rst:412 reference/datamodel.rst:450 -#: reference/datamodel.rst:469 reference/datamodel.rst:522 -#: reference/datamodel.rst:675 reference/datamodel.rst:837 -#: reference/datamodel.rst:1151 reference/datamodel.rst:1326 -#: reference/datamodel.rst:1506 reference/datamodel.rst:1724 -#: reference/datamodel.rst:3167 +#: reference/datamodel.rst:232 reference/datamodel.rst:270 +#: reference/datamodel.rst:301 reference/datamodel.rst:368 +#: reference/datamodel.rst:414 reference/datamodel.rst:452 +#: reference/datamodel.rst:471 reference/datamodel.rst:524 +#: reference/datamodel.rst:677 reference/datamodel.rst:839 +#: reference/datamodel.rst:1153 reference/datamodel.rst:1340 +#: reference/datamodel.rst:1520 reference/datamodel.rst:1738 +#: reference/datamodel.rst:3181 msgid "object" msgstr "" @@ -4519,11 +4534,11 @@ msgstr "" msgid "data" msgstr "" -#: reference/datamodel.rst:299 reference/datamodel.rst:430 -#: reference/datamodel.rst:813 reference/datamodel.rst:1807 -#: reference/datamodel.rst:2056 reference/datamodel.rst:2706 -#: reference/datamodel.rst:3295 reference/datamodel.rst:3398 -#: reference/datamodel.rst:3436 +#: reference/datamodel.rst:301 reference/datamodel.rst:432 +#: reference/datamodel.rst:815 reference/datamodel.rst:1821 +#: reference/datamodel.rst:2070 reference/datamodel.rst:2720 +#: reference/datamodel.rst:3309 reference/datamodel.rst:3412 +#: reference/datamodel.rst:3450 msgid "built-in function" msgstr "" @@ -4531,7 +4546,7 @@ msgstr "" msgid "id" msgstr "" -#: reference/datamodel.rst:126 reference/datamodel.rst:2706 +#: reference/datamodel.rst:126 reference/datamodel.rst:2720 msgid "type" msgstr "" @@ -4567,7 +4582,7 @@ msgstr "" msgid "unreachable object" msgstr "" -#: reference/datamodel.rst:1151 +#: reference/datamodel.rst:1153 msgid "container" msgstr "" @@ -4579,21 +4594,21 @@ msgstr "" msgid "extension" msgstr "" -#: reference/datamodel.rst:403 reference/datamodel.rst:505 -#: reference/datamodel.rst:893 reference/datamodel.rst:1355 +#: reference/datamodel.rst:405 reference/datamodel.rst:507 +#: reference/datamodel.rst:895 reference/datamodel.rst:1369 msgid "module" msgstr "" -#: reference/datamodel.rst:268 reference/datamodel.rst:813 +#: reference/datamodel.rst:270 reference/datamodel.rst:815 msgid "C" msgstr "" -#: reference/datamodel.rst:268 reference/datamodel.rst:813 +#: reference/datamodel.rst:270 reference/datamodel.rst:815 msgid "language" msgstr "" -#: reference/datamodel.rst:1151 reference/datamodel.rst:1299 -#: reference/datamodel.rst:1319 +#: reference/datamodel.rst:1153 reference/datamodel.rst:1313 +#: reference/datamodel.rst:1333 msgid "attribute" msgstr "" @@ -4613,11 +4628,11 @@ msgstr "" msgid "ellipsis literal" msgstr "" -#: reference/datamodel.rst:1326 +#: reference/datamodel.rst:1340 msgid "numeric" msgstr "" -#: reference/datamodel.rst:238 reference/datamodel.rst:346 +#: reference/datamodel.rst:238 reference/datamodel.rst:348 msgid "integer" msgstr "" @@ -4637,829 +4652,829 @@ msgstr "" msgid "True" msgstr "" -#: reference/datamodel.rst:268 +#: reference/datamodel.rst:270 msgid "floating-point" msgstr "" -#: reference/datamodel.rst:286 +#: reference/datamodel.rst:288 msgid "number" msgstr "" -#: reference/datamodel.rst:268 +#: reference/datamodel.rst:270 msgid "Java" msgstr "" -#: reference/datamodel.rst:3408 +#: reference/datamodel.rst:3422 msgid "complex" msgstr "" -#: reference/datamodel.rst:430 reference/datamodel.rst:3137 +#: reference/datamodel.rst:432 reference/datamodel.rst:3151 msgid "len" msgstr "" -#: reference/datamodel.rst:1326 +#: reference/datamodel.rst:1340 msgid "sequence" msgstr "" -#: reference/datamodel.rst:299 +#: reference/datamodel.rst:301 msgid "index operation" msgstr "" -#: reference/datamodel.rst:299 +#: reference/datamodel.rst:301 msgid "item selection" msgstr "" -#: reference/datamodel.rst:391 reference/datamodel.rst:469 +#: reference/datamodel.rst:393 reference/datamodel.rst:471 msgid "subscription" msgstr "" -#: reference/datamodel.rst:391 +#: reference/datamodel.rst:393 msgid "slicing" msgstr "" -#: reference/datamodel.rst:331 +#: reference/datamodel.rst:333 msgid "immutable sequence" msgstr "" -#: reference/datamodel.rst:331 +#: reference/datamodel.rst:333 msgid "immutable" msgstr "" -#: reference/datamodel.rst:2025 reference/datamodel.rst:2056 +#: reference/datamodel.rst:2039 reference/datamodel.rst:2070 msgid "string" msgstr "" -#: reference/datamodel.rst:342 +#: reference/datamodel.rst:344 msgid "immutable sequences" msgstr "" -#: reference/datamodel.rst:346 +#: reference/datamodel.rst:348 msgid "chr" msgstr "" -#: reference/datamodel.rst:346 +#: reference/datamodel.rst:348 msgid "ord" msgstr "" -#: reference/datamodel.rst:346 +#: reference/datamodel.rst:348 msgid "character" msgstr "" -#: reference/datamodel.rst:346 +#: reference/datamodel.rst:348 msgid "Unicode" msgstr "" -#: reference/datamodel.rst:366 +#: reference/datamodel.rst:368 msgid "tuple" msgstr "" -#: reference/datamodel.rst:366 +#: reference/datamodel.rst:368 msgid "singleton" msgstr "" -#: reference/datamodel.rst:366 +#: reference/datamodel.rst:368 msgid "empty" msgstr "" -#: reference/datamodel.rst:2050 +#: reference/datamodel.rst:2064 msgid "bytes" msgstr "" -#: reference/datamodel.rst:379 +#: reference/datamodel.rst:381 msgid "byte" msgstr "" -#: reference/datamodel.rst:391 +#: reference/datamodel.rst:393 msgid "mutable sequence" msgstr "" -#: reference/datamodel.rst:391 +#: reference/datamodel.rst:393 msgid "mutable" msgstr "" -#: reference/datamodel.rst:1169 reference/datamodel.rst:1319 +#: reference/datamodel.rst:1171 reference/datamodel.rst:1333 msgid "assignment" msgstr "" -#: reference/datamodel.rst:873 reference/datamodel.rst:1943 -#: reference/datamodel.rst:3460 +#: reference/datamodel.rst:875 reference/datamodel.rst:1957 +#: reference/datamodel.rst:3474 msgid "statement" msgstr "" -#: reference/datamodel.rst:403 +#: reference/datamodel.rst:405 msgid "array" msgstr "" -#: reference/datamodel.rst:404 +#: reference/datamodel.rst:406 msgid "collections" msgstr "" -#: reference/datamodel.rst:412 +#: reference/datamodel.rst:414 msgid "list" msgstr "" -#: reference/datamodel.rst:419 +#: reference/datamodel.rst:421 msgid "bytearray" msgstr "" -#: reference/datamodel.rst:430 +#: reference/datamodel.rst:432 msgid "set type" msgstr "" -#: reference/datamodel.rst:450 +#: reference/datamodel.rst:452 msgid "set" msgstr "" -#: reference/datamodel.rst:458 +#: reference/datamodel.rst:460 msgid "frozenset" msgstr "" -#: reference/datamodel.rst:1326 +#: reference/datamodel.rst:1340 msgid "mapping" msgstr "" -#: reference/datamodel.rst:1151 reference/datamodel.rst:2149 +#: reference/datamodel.rst:1153 reference/datamodel.rst:2163 msgid "dictionary" msgstr "" -#: reference/datamodel.rst:505 +#: reference/datamodel.rst:507 msgid "dbm.ndbm" msgstr "" -#: reference/datamodel.rst:505 +#: reference/datamodel.rst:507 msgid "dbm.gnu" msgstr "" -#: reference/datamodel.rst:522 +#: reference/datamodel.rst:524 msgid "callable" msgstr "" -#: reference/datamodel.rst:537 reference/datamodel.rst:775 -#: reference/datamodel.rst:813 +#: reference/datamodel.rst:539 reference/datamodel.rst:777 +#: reference/datamodel.rst:815 msgid "function" msgstr "" -#: reference/datamodel.rst:1151 reference/datamodel.rst:3087 +#: reference/datamodel.rst:1153 reference/datamodel.rst:3101 msgid "call" msgstr "" -#: reference/datamodel.rst:522 +#: reference/datamodel.rst:524 msgid "invocation" msgstr "" -#: reference/datamodel.rst:522 +#: reference/datamodel.rst:524 msgid "argument" msgstr "" -#: reference/datamodel.rst:675 +#: reference/datamodel.rst:677 msgid "user-defined" msgstr "" -#: reference/datamodel.rst:537 +#: reference/datamodel.rst:539 msgid "user-defined function" msgstr "" -#: reference/datamodel.rst:550 +#: reference/datamodel.rst:552 msgid "__closure__ (function attribute)" msgstr "" -#: reference/datamodel.rst:550 +#: reference/datamodel.rst:552 msgid "__globals__ (function attribute)" msgstr "" -#: reference/datamodel.rst:550 +#: reference/datamodel.rst:552 msgid "global" msgstr "" -#: reference/datamodel.rst:893 +#: reference/datamodel.rst:895 msgid "namespace" msgstr "" -#: reference/datamodel.rst:577 +#: reference/datamodel.rst:579 msgid "__doc__ (function attribute)" msgstr "" -#: reference/datamodel.rst:577 +#: reference/datamodel.rst:579 msgid "__name__ (function attribute)" msgstr "" -#: reference/datamodel.rst:577 +#: reference/datamodel.rst:579 msgid "__module__ (function attribute)" msgstr "" -#: reference/datamodel.rst:577 +#: reference/datamodel.rst:579 msgid "__dict__ (function attribute)" msgstr "" -#: reference/datamodel.rst:577 +#: reference/datamodel.rst:579 msgid "__defaults__ (function attribute)" msgstr "" -#: reference/datamodel.rst:577 +#: reference/datamodel.rst:579 msgid "__code__ (function attribute)" msgstr "" -#: reference/datamodel.rst:577 +#: reference/datamodel.rst:579 msgid "__annotations__ (function attribute)" msgstr "" -#: reference/datamodel.rst:577 +#: reference/datamodel.rst:579 msgid "__annotate__ (function attribute)" msgstr "" -#: reference/datamodel.rst:577 +#: reference/datamodel.rst:579 msgid "__kwdefaults__ (function attribute)" msgstr "" -#: reference/datamodel.rst:577 +#: reference/datamodel.rst:579 msgid "__type_params__ (function attribute)" msgstr "" -#: reference/datamodel.rst:837 +#: reference/datamodel.rst:839 msgid "method" msgstr "" -#: reference/datamodel.rst:675 +#: reference/datamodel.rst:677 msgid "user-defined method" msgstr "" -#: reference/datamodel.rst:683 +#: reference/datamodel.rst:685 msgid "__func__ (method attribute)" msgstr "" -#: reference/datamodel.rst:683 +#: reference/datamodel.rst:685 msgid "__self__ (method attribute)" msgstr "" -#: reference/datamodel.rst:683 +#: reference/datamodel.rst:685 msgid "__doc__ (method attribute)" msgstr "" -#: reference/datamodel.rst:683 +#: reference/datamodel.rst:685 msgid "__name__ (method attribute)" msgstr "" -#: reference/datamodel.rst:683 +#: reference/datamodel.rst:685 msgid "__module__ (method attribute)" msgstr "" -#: reference/datamodel.rst:1506 +#: reference/datamodel.rst:1520 msgid "generator" msgstr "" -#: reference/datamodel.rst:757 +#: reference/datamodel.rst:759 msgid "iterator" msgstr "" -#: reference/datamodel.rst:3693 +#: reference/datamodel.rst:3707 msgid "coroutine" msgstr "" -#: reference/datamodel.rst:788 +#: reference/datamodel.rst:790 msgid "asynchronous generator" msgstr "" -#: reference/datamodel.rst:788 +#: reference/datamodel.rst:790 msgid "asynchronous iterator" msgstr "" -#: reference/datamodel.rst:837 +#: reference/datamodel.rst:839 msgid "built-in method" msgstr "" -#: reference/datamodel.rst:837 +#: reference/datamodel.rst:839 msgid "built-in" msgstr "" -#: reference/datamodel.rst:873 +#: reference/datamodel.rst:875 msgid "import" msgstr "" -#: reference/datamodel.rst:893 +#: reference/datamodel.rst:895 msgid "__name__ (module attribute)" msgstr "" -#: reference/datamodel.rst:893 +#: reference/datamodel.rst:895 msgid "__spec__ (module attribute)" msgstr "" -#: reference/datamodel.rst:893 +#: reference/datamodel.rst:895 msgid "__package__ (module attribute)" msgstr "" -#: reference/datamodel.rst:893 +#: reference/datamodel.rst:895 msgid "__loader__ (module attribute)" msgstr "" -#: reference/datamodel.rst:893 +#: reference/datamodel.rst:895 msgid "__path__ (module attribute)" msgstr "" -#: reference/datamodel.rst:893 +#: reference/datamodel.rst:895 msgid "__file__ (module attribute)" msgstr "" -#: reference/datamodel.rst:893 +#: reference/datamodel.rst:895 msgid "__cached__ (module attribute)" msgstr "" -#: reference/datamodel.rst:893 +#: reference/datamodel.rst:895 msgid "__doc__ (module attribute)" msgstr "" -#: reference/datamodel.rst:893 +#: reference/datamodel.rst:895 msgid "__annotations__ (module attribute)" msgstr "" -#: reference/datamodel.rst:893 +#: reference/datamodel.rst:895 msgid "__annotate__ (module attribute)" msgstr "" -#: reference/datamodel.rst:1119 +#: reference/datamodel.rst:1121 msgid "__dict__ (module attribute)" msgstr "" -#: reference/datamodel.rst:1169 reference/datamodel.rst:1926 -#: reference/datamodel.rst:2817 +#: reference/datamodel.rst:1171 reference/datamodel.rst:1940 +#: reference/datamodel.rst:2831 msgid "class" msgstr "" -#: reference/datamodel.rst:1299 reference/datamodel.rst:1319 +#: reference/datamodel.rst:1313 reference/datamodel.rst:1333 msgid "class instance" msgstr "" -#: reference/datamodel.rst:1299 reference/datamodel.rst:3087 +#: reference/datamodel.rst:1313 reference/datamodel.rst:3101 msgid "instance" msgstr "" -#: reference/datamodel.rst:1174 +#: reference/datamodel.rst:1176 msgid "class object" msgstr "" -#: reference/datamodel.rst:1181 +#: reference/datamodel.rst:1183 msgid "__name__ (class attribute)" msgstr "" -#: reference/datamodel.rst:1181 +#: reference/datamodel.rst:1183 msgid "__module__ (class attribute)" msgstr "" -#: reference/datamodel.rst:1181 +#: reference/datamodel.rst:1183 msgid "__dict__ (class attribute)" msgstr "" -#: reference/datamodel.rst:1181 +#: reference/datamodel.rst:1183 msgid "__bases__ (class attribute)" msgstr "" -#: reference/datamodel.rst:1181 +#: reference/datamodel.rst:1183 msgid "__doc__ (class attribute)" msgstr "" -#: reference/datamodel.rst:1181 +#: reference/datamodel.rst:1183 msgid "__annotations__ (class attribute)" msgstr "" -#: reference/datamodel.rst:1181 +#: reference/datamodel.rst:1183 msgid "__annotate__ (class attribute)" msgstr "" -#: reference/datamodel.rst:1181 +#: reference/datamodel.rst:1183 msgid "__type_params__ (class attribute)" msgstr "" -#: reference/datamodel.rst:1181 +#: reference/datamodel.rst:1183 msgid "__static_attributes__ (class attribute)" msgstr "" -#: reference/datamodel.rst:1181 +#: reference/datamodel.rst:1183 msgid "__firstlineno__ (class attribute)" msgstr "" -#: reference/datamodel.rst:1337 +#: reference/datamodel.rst:1351 msgid "__dict__ (instance attribute)" msgstr "" -#: reference/datamodel.rst:1337 +#: reference/datamodel.rst:1351 msgid "__class__ (instance attribute)" msgstr "" -#: reference/datamodel.rst:1355 +#: reference/datamodel.rst:1369 msgid "open" msgstr "" -#: reference/datamodel.rst:1355 +#: reference/datamodel.rst:1369 msgid "io" msgstr "" -#: reference/datamodel.rst:1355 +#: reference/datamodel.rst:1369 msgid "popen() (in module os)" msgstr "" -#: reference/datamodel.rst:1355 +#: reference/datamodel.rst:1369 msgid "makefile() (socket method)" msgstr "" -#: reference/datamodel.rst:1355 +#: reference/datamodel.rst:1369 msgid "sys.stdin" msgstr "" -#: reference/datamodel.rst:1355 +#: reference/datamodel.rst:1369 msgid "sys.stdout" msgstr "" -#: reference/datamodel.rst:1355 +#: reference/datamodel.rst:1369 msgid "sys.stderr" msgstr "" -#: reference/datamodel.rst:1355 +#: reference/datamodel.rst:1369 msgid "stdio" msgstr "" -#: reference/datamodel.rst:1355 +#: reference/datamodel.rst:1369 msgid "stdin (in module sys)" msgstr "" -#: reference/datamodel.rst:1355 +#: reference/datamodel.rst:1369 msgid "stdout (in module sys)" msgstr "" -#: reference/datamodel.rst:1355 +#: reference/datamodel.rst:1369 msgid "stderr (in module sys)" msgstr "" -#: reference/datamodel.rst:1384 +#: reference/datamodel.rst:1398 msgid "internal type" msgstr "" -#: reference/datamodel.rst:1384 +#: reference/datamodel.rst:1398 msgid "types, internal" msgstr "" -#: reference/datamodel.rst:1398 +#: reference/datamodel.rst:1412 msgid "bytecode" msgstr "" -#: reference/datamodel.rst:1398 +#: reference/datamodel.rst:1412 msgid "code" msgstr "" -#: reference/datamodel.rst:1398 +#: reference/datamodel.rst:1412 msgid "code object" msgstr "" -#: reference/datamodel.rst:1409 +#: reference/datamodel.rst:1423 msgid "co_argcount (code object attribute)" msgstr "" -#: reference/datamodel.rst:1409 +#: reference/datamodel.rst:1423 msgid "co_posonlyargcount (code object attribute)" msgstr "" -#: reference/datamodel.rst:1409 +#: reference/datamodel.rst:1423 msgid "co_kwonlyargcount (code object attribute)" msgstr "" -#: reference/datamodel.rst:1409 +#: reference/datamodel.rst:1423 msgid "co_code (code object attribute)" msgstr "" -#: reference/datamodel.rst:1409 +#: reference/datamodel.rst:1423 msgid "co_consts (code object attribute)" msgstr "" -#: reference/datamodel.rst:1409 +#: reference/datamodel.rst:1423 msgid "co_filename (code object attribute)" msgstr "" -#: reference/datamodel.rst:1409 +#: reference/datamodel.rst:1423 msgid "co_firstlineno (code object attribute)" msgstr "" -#: reference/datamodel.rst:1409 +#: reference/datamodel.rst:1423 msgid "co_flags (code object attribute)" msgstr "" -#: reference/datamodel.rst:1409 +#: reference/datamodel.rst:1423 msgid "co_lnotab (code object attribute)" msgstr "" -#: reference/datamodel.rst:1409 +#: reference/datamodel.rst:1423 msgid "co_name (code object attribute)" msgstr "" -#: reference/datamodel.rst:1409 +#: reference/datamodel.rst:1423 msgid "co_names (code object attribute)" msgstr "" -#: reference/datamodel.rst:1409 +#: reference/datamodel.rst:1423 msgid "co_nlocals (code object attribute)" msgstr "" -#: reference/datamodel.rst:1409 +#: reference/datamodel.rst:1423 msgid "co_stacksize (code object attribute)" msgstr "" -#: reference/datamodel.rst:1409 +#: reference/datamodel.rst:1423 msgid "co_varnames (code object attribute)" msgstr "" -#: reference/datamodel.rst:1409 +#: reference/datamodel.rst:1423 msgid "co_cellvars (code object attribute)" msgstr "" -#: reference/datamodel.rst:1409 +#: reference/datamodel.rst:1423 msgid "co_freevars (code object attribute)" msgstr "" -#: reference/datamodel.rst:1409 +#: reference/datamodel.rst:1423 msgid "co_qualname (code object attribute)" msgstr "" -#: reference/datamodel.rst:1522 +#: reference/datamodel.rst:1536 msgid "documentation string" msgstr "" -#: reference/datamodel.rst:1614 +#: reference/datamodel.rst:1628 msgid "frame" msgstr "" -#: reference/datamodel.rst:1620 +#: reference/datamodel.rst:1634 msgid "f_back (frame attribute)" msgstr "" -#: reference/datamodel.rst:1620 +#: reference/datamodel.rst:1634 msgid "f_code (frame attribute)" msgstr "" -#: reference/datamodel.rst:1620 +#: reference/datamodel.rst:1634 msgid "f_globals (frame attribute)" msgstr "" -#: reference/datamodel.rst:1620 +#: reference/datamodel.rst:1634 msgid "f_locals (frame attribute)" msgstr "" -#: reference/datamodel.rst:1620 +#: reference/datamodel.rst:1634 msgid "f_lasti (frame attribute)" msgstr "" -#: reference/datamodel.rst:1620 +#: reference/datamodel.rst:1634 msgid "f_builtins (frame attribute)" msgstr "" -#: reference/datamodel.rst:1664 +#: reference/datamodel.rst:1678 msgid "f_trace (frame attribute)" msgstr "" -#: reference/datamodel.rst:1664 +#: reference/datamodel.rst:1678 msgid "f_trace_lines (frame attribute)" msgstr "" -#: reference/datamodel.rst:1664 +#: reference/datamodel.rst:1678 msgid "f_trace_opcodes (frame attribute)" msgstr "" -#: reference/datamodel.rst:1664 +#: reference/datamodel.rst:1678 msgid "f_lineno (frame attribute)" msgstr "" -#: reference/datamodel.rst:1724 +#: reference/datamodel.rst:1738 msgid "traceback" msgstr "" -#: reference/datamodel.rst:1724 +#: reference/datamodel.rst:1738 msgid "stack" msgstr "" -#: reference/datamodel.rst:1724 +#: reference/datamodel.rst:1738 msgid "trace" msgstr "" -#: reference/datamodel.rst:1724 +#: reference/datamodel.rst:1738 msgid "exception" msgstr "" -#: reference/datamodel.rst:1724 +#: reference/datamodel.rst:1738 msgid "handler" msgstr "" -#: reference/datamodel.rst:1724 +#: reference/datamodel.rst:1738 msgid "execution" msgstr "" -#: reference/datamodel.rst:1724 +#: reference/datamodel.rst:1738 msgid "exc_info (in module sys)" msgstr "" -#: reference/datamodel.rst:1724 +#: reference/datamodel.rst:1738 msgid "last_traceback (in module sys)" msgstr "" -#: reference/datamodel.rst:1724 +#: reference/datamodel.rst:1738 msgid "sys.exc_info" msgstr "" -#: reference/datamodel.rst:1724 +#: reference/datamodel.rst:1738 msgid "sys.exception" msgstr "" -#: reference/datamodel.rst:1724 +#: reference/datamodel.rst:1738 msgid "sys.last_traceback" msgstr "" -#: reference/datamodel.rst:1761 +#: reference/datamodel.rst:1775 msgid "tb_frame (traceback attribute)" msgstr "" -#: reference/datamodel.rst:1761 +#: reference/datamodel.rst:1775 msgid "tb_lineno (traceback attribute)" msgstr "" -#: reference/datamodel.rst:1761 +#: reference/datamodel.rst:1775 msgid "tb_lasti (traceback attribute)" msgstr "" -#: reference/datamodel.rst:1761 +#: reference/datamodel.rst:1775 msgid "try" msgstr "" -#: reference/datamodel.rst:1791 +#: reference/datamodel.rst:1805 msgid "tb_next (traceback attribute)" msgstr "" -#: reference/datamodel.rst:3167 +#: reference/datamodel.rst:3181 msgid "slice" msgstr "" -#: reference/datamodel.rst:1813 +#: reference/datamodel.rst:1827 msgid "start (slice object attribute)" msgstr "" -#: reference/datamodel.rst:1813 +#: reference/datamodel.rst:1827 msgid "stop (slice object attribute)" msgstr "" -#: reference/datamodel.rst:1813 +#: reference/datamodel.rst:1827 msgid "step (slice object attribute)" msgstr "" -#: reference/datamodel.rst:1861 +#: reference/datamodel.rst:1875 msgid "operator" msgstr "" -#: reference/datamodel.rst:1861 +#: reference/datamodel.rst:1875 msgid "overloading" msgstr "" -#: reference/datamodel.rst:1861 +#: reference/datamodel.rst:1875 msgid "__getitem__() (mapping object method)" msgstr "" -#: reference/datamodel.rst:1897 +#: reference/datamodel.rst:1911 msgid "subclassing" msgstr "" -#: reference/datamodel.rst:1897 +#: reference/datamodel.rst:1911 msgid "immutable types" msgstr "" -#: reference/datamodel.rst:1926 +#: reference/datamodel.rst:1940 msgid "constructor" msgstr "" -#: reference/datamodel.rst:1943 +#: reference/datamodel.rst:1957 msgid "destructor" msgstr "" -#: reference/datamodel.rst:1943 +#: reference/datamodel.rst:1957 msgid "finalizer" msgstr "" -#: reference/datamodel.rst:1943 +#: reference/datamodel.rst:1957 msgid "del" msgstr "" -#: reference/datamodel.rst:2007 +#: reference/datamodel.rst:2021 msgid "repr() (built-in function)" msgstr "" -#: reference/datamodel.rst:2007 +#: reference/datamodel.rst:2021 msgid "__repr__() (object method)" msgstr "" -#: reference/datamodel.rst:2025 +#: reference/datamodel.rst:2039 msgid "__str__() (object method)" msgstr "" -#: reference/datamodel.rst:2025 +#: reference/datamodel.rst:2039 msgid "format() (built-in function)" msgstr "" -#: reference/datamodel.rst:2025 +#: reference/datamodel.rst:2039 msgid "print() (built-in function)" msgstr "" -#: reference/datamodel.rst:2056 +#: reference/datamodel.rst:2070 msgid "__format__() (object method)" msgstr "" -#: reference/datamodel.rst:2056 +#: reference/datamodel.rst:2070 msgid "conversion" msgstr "" -#: reference/datamodel.rst:2056 +#: reference/datamodel.rst:2070 msgid "print" msgstr "" -#: reference/datamodel.rst:2098 +#: reference/datamodel.rst:2112 msgid "comparisons" msgstr "" -#: reference/datamodel.rst:2149 +#: reference/datamodel.rst:2163 msgid "hash" msgstr "" -#: reference/datamodel.rst:2230 +#: reference/datamodel.rst:2244 msgid "__len__() (mapping object method)" msgstr "" -#: reference/datamodel.rst:2335 +#: reference/datamodel.rst:2349 msgid "__getattr__ (module attribute)" msgstr "" -#: reference/datamodel.rst:2335 +#: reference/datamodel.rst:2349 msgid "__dir__ (module attribute)" msgstr "" -#: reference/datamodel.rst:2335 +#: reference/datamodel.rst:2349 msgid "__class__ (module attribute)" msgstr "" -#: reference/datamodel.rst:2706 +#: reference/datamodel.rst:2720 msgid "metaclass" msgstr "" -#: reference/datamodel.rst:2706 +#: reference/datamodel.rst:2720 msgid "= (equals)" msgstr "" -#: reference/datamodel.rst:2706 +#: reference/datamodel.rst:2720 msgid "class definition" msgstr "" -#: reference/datamodel.rst:2770 +#: reference/datamodel.rst:2784 msgid "metaclass hint" msgstr "" -#: reference/datamodel.rst:2793 +#: reference/datamodel.rst:2807 msgid "__prepare__ (metaclass method)" msgstr "" -#: reference/datamodel.rst:2817 +#: reference/datamodel.rst:2831 msgid "body" msgstr "" -#: reference/datamodel.rst:2837 +#: reference/datamodel.rst:2851 msgid "__class__ (method cell)" msgstr "" -#: reference/datamodel.rst:2837 +#: reference/datamodel.rst:2851 msgid "__classcell__ (class namespace entry)" msgstr "" -#: reference/datamodel.rst:3137 +#: reference/datamodel.rst:3151 msgid "__bool__() (object method)" msgstr "" -#: reference/datamodel.rst:3330 +#: reference/datamodel.rst:3344 msgid "divmod" msgstr "" -#: reference/datamodel.rst:3330 +#: reference/datamodel.rst:3344 msgid "pow" msgstr "" -#: reference/datamodel.rst:3398 +#: reference/datamodel.rst:3412 msgid "abs" msgstr "" -#: reference/datamodel.rst:3408 +#: reference/datamodel.rst:3422 msgid "int" msgstr "" -#: reference/datamodel.rst:3408 +#: reference/datamodel.rst:3422 msgid "float" msgstr "" -#: reference/datamodel.rst:3436 +#: reference/datamodel.rst:3450 msgid "round" msgstr "" -#: reference/datamodel.rst:3460 +#: reference/datamodel.rst:3474 msgid "with" msgstr "" -#: reference/datamodel.rst:3460 +#: reference/datamodel.rst:3474 msgid "context manager" msgstr "" diff --git a/reference/executionmodel.po b/reference/executionmodel.po index cf3c842a..2ab91599 100644 --- a/reference/executionmodel.po +++ b/reference/executionmodel.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-13 19:59+0200\n" "Last-Translator: Marios Giannopoulos \n" "Language-Team: PyGreece \n" diff --git a/reference/expressions.po b/reference/expressions.po index cc80aed4..ae172d1d 100644 --- a/reference/expressions.po +++ b/reference/expressions.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -179,7 +179,7 @@ msgstr "" msgid "Python supports string and bytes literals and various numeric literals:" msgstr "" -#: reference/expressions.rst:140 +#: reference/expressions.rst:139 msgid "" "Evaluation of a literal yields an object of the given type (string, bytes, " "integer, floating-point number, complex number) with the given value. The " @@ -187,7 +187,7 @@ msgid "" "(complex) literals. See section :ref:`literals` for details." msgstr "" -#: reference/expressions.rst:149 +#: reference/expressions.rst:148 msgid "" "All literals correspond to immutable data types, and hence the object's " "identity is less important than its value. Multiple evaluations of literals " @@ -196,30 +196,30 @@ msgid "" "the same value." msgstr "" -#: reference/expressions.rst:159 +#: reference/expressions.rst:158 msgid "Parenthesized forms" msgstr "" -#: reference/expressions.rst:165 +#: reference/expressions.rst:164 msgid "" "A parenthesized form is an optional expression list enclosed in parentheses:" msgstr "" -#: reference/expressions.rst:170 +#: reference/expressions.rst:169 msgid "" "A parenthesized expression list yields whatever that expression list yields: " "if the list contains at least one comma, it yields a tuple; otherwise, it " "yields the single expression that makes up the expression list." msgstr "" -#: reference/expressions.rst:176 +#: reference/expressions.rst:175 msgid "" "An empty pair of parentheses yields an empty tuple object. Since tuples are " "immutable, the same rules as for literals apply (i.e., two occurrences of " "the empty tuple may or may not yield the same object)." msgstr "" -#: reference/expressions.rst:184 +#: reference/expressions.rst:183 msgid "" "Note that tuples are not formed by the parentheses, but rather by use of the " "comma. The exception is the empty tuple, for which parentheses *are* " @@ -227,31 +227,31 @@ msgid "" "ambiguities and allow common typos to pass uncaught." msgstr "" -#: reference/expressions.rst:193 +#: reference/expressions.rst:192 msgid "Displays for lists, sets and dictionaries" msgstr "" -#: reference/expressions.rst:197 +#: reference/expressions.rst:196 msgid "" "For constructing a list, a set or a dictionary Python provides special " "syntax called \"displays\", each of them in two flavors:" msgstr "" -#: reference/expressions.rst:200 +#: reference/expressions.rst:199 msgid "either the container contents are listed explicitly, or" msgstr "" -#: reference/expressions.rst:202 +#: reference/expressions.rst:201 msgid "" "they are computed via a set of looping and filtering instructions, called a :" "dfn:`comprehension`." msgstr "" -#: reference/expressions.rst:210 +#: reference/expressions.rst:209 msgid "Common syntax elements for comprehensions are:" msgstr "" -#: reference/expressions.rst:218 +#: reference/expressions.rst:217 msgid "" "The comprehension consists of a single expression followed by at least one :" "keyword:`!for` clause and zero or more :keyword:`!for` or :keyword:`!if` " @@ -261,7 +261,7 @@ msgid "" "expression to produce an element each time the innermost block is reached." msgstr "" -#: reference/expressions.rst:225 +#: reference/expressions.rst:224 msgid "" "However, aside from the iterable expression in the leftmost :keyword:`!for` " "clause, the comprehension is executed in a separate implicitly nested scope. " @@ -269,7 +269,7 @@ msgid "" "the enclosing scope." msgstr "" -#: reference/expressions.rst:229 +#: reference/expressions.rst:228 msgid "" "The iterable expression in the leftmost :keyword:`!for` clause is evaluated " "directly in the enclosing scope and then passed as an argument to the " @@ -279,14 +279,14 @@ msgid "" "iterable. For example: ``[x*y for x in range(10) for y in range(x, x+10)]``." msgstr "" -#: reference/expressions.rst:236 +#: reference/expressions.rst:235 msgid "" "To ensure the comprehension always results in a container of the appropriate " "type, ``yield`` and ``yield from`` expressions are prohibited in the " "implicitly nested scope." msgstr "" -#: reference/expressions.rst:243 +#: reference/expressions.rst:242 msgid "" "Since Python 3.6, in an :keyword:`async def` function, an :keyword:`!async " "for` clause may be used to iterate over a :term:`asynchronous iterator`. A " @@ -296,7 +296,7 @@ msgid "" "clauses, and may also use :keyword:`await` expressions." msgstr "" -#: reference/expressions.rst:250 +#: reference/expressions.rst:249 msgid "" "If a comprehension contains :keyword:`!async for` clauses, or if it " "contains :keyword:`!await` expressions or other asynchronous comprehensions " @@ -306,7 +306,7 @@ msgid "" "it appears. See also :pep:`530`." msgstr "" -#: reference/expressions.rst:257 +#: reference/expressions.rst:256 msgid "Asynchronous comprehensions were introduced." msgstr "" @@ -314,23 +314,23 @@ msgstr "" msgid "``yield`` and ``yield from`` prohibited in the implicitly nested scope." msgstr "" -#: reference/expressions.rst:263 +#: reference/expressions.rst:262 msgid "" "Asynchronous comprehensions are now allowed inside comprehensions in " "asynchronous functions. Outer comprehensions implicitly become asynchronous." msgstr "" -#: reference/expressions.rst:272 +#: reference/expressions.rst:271 msgid "List displays" msgstr "" -#: reference/expressions.rst:282 +#: reference/expressions.rst:281 msgid "" "A list display is a possibly empty series of expressions enclosed in square " "brackets:" msgstr "" -#: reference/expressions.rst:288 +#: reference/expressions.rst:287 msgid "" "A list display yields a new list object, the contents being specified by " "either a list of expressions or a comprehension. When a comma-separated " @@ -340,17 +340,17 @@ msgid "" "comprehension." msgstr "" -#: reference/expressions.rst:298 +#: reference/expressions.rst:297 msgid "Set displays" msgstr "" -#: reference/expressions.rst:307 +#: reference/expressions.rst:306 msgid "" "A set display is denoted by curly braces and distinguishable from dictionary " "displays by the lack of colons separating keys and values:" msgstr "" -#: reference/expressions.rst:313 +#: reference/expressions.rst:312 msgid "" "A set display yields a new mutable set object, the contents being specified " "by either a sequence of expressions or a comprehension. When a comma-" @@ -360,27 +360,27 @@ msgid "" "comprehension." msgstr "" -#: reference/expressions.rst:319 +#: reference/expressions.rst:318 msgid "" "An empty set cannot be constructed with ``{}``; this literal constructs an " "empty dictionary." msgstr "" -#: reference/expressions.rst:326 +#: reference/expressions.rst:325 msgid "Dictionary displays" msgstr "" -#: reference/expressions.rst:337 +#: reference/expressions.rst:336 msgid "" "A dictionary display is a possibly empty series of dict items (key/value " "pairs) enclosed in curly braces:" msgstr "" -#: reference/expressions.rst:346 +#: reference/expressions.rst:345 msgid "A dictionary display yields a new dictionary object." msgstr "" -#: reference/expressions.rst:348 +#: reference/expressions.rst:347 msgid "" "If a comma-separated sequence of dict items is given, they are evaluated " "from left to right to define the entries of the dictionary: each key object " @@ -390,7 +390,7 @@ msgid "" "given." msgstr "" -#: reference/expressions.rst:358 +#: reference/expressions.rst:357 msgid "" "A double asterisk ``**`` denotes :dfn:`dictionary unpacking`. Its operand " "must be a :term:`mapping`. Each mapping item is added to the new " @@ -398,11 +398,11 @@ msgid "" "and earlier dictionary unpackings." msgstr "" -#: reference/expressions.rst:363 +#: reference/expressions.rst:362 msgid "Unpacking into dictionary displays, originally proposed by :pep:`448`." msgstr "" -#: reference/expressions.rst:366 +#: reference/expressions.rst:365 msgid "" "A dict comprehension, in contrast to list and set comprehensions, needs two " "expressions separated with a colon followed by the usual \"for\" and \"if\" " @@ -410,7 +410,7 @@ msgid "" "are inserted in the new dictionary in the order they are produced." msgstr "" -#: reference/expressions.rst:374 +#: reference/expressions.rst:373 msgid "" "Restrictions on the types of the key values are listed earlier in section :" "ref:`types`. (To summarize, the key type should be :term:`hashable`, which " @@ -419,7 +419,7 @@ msgid "" "given key value prevails." msgstr "" -#: reference/expressions.rst:380 +#: reference/expressions.rst:379 msgid "" "Prior to Python 3.8, in dict comprehensions, the evaluation order of key and " "value was not well-defined. In CPython, the value was evaluated before the " @@ -427,33 +427,34 @@ msgid "" "by :pep:`572`." msgstr "" -#: reference/expressions.rst:390 +#: reference/expressions.rst:389 msgid "Generator expressions" msgstr "" -#: reference/expressions.rst:397 +#: reference/expressions.rst:396 msgid "A generator expression is a compact generator notation in parentheses:" msgstr "" -#: reference/expressions.rst:402 +#: reference/expressions.rst:401 msgid "" "A generator expression yields a new generator object. Its syntax is the " "same as for comprehensions, except that it is enclosed in parentheses " "instead of brackets or curly braces." msgstr "" -#: reference/expressions.rst:406 +#: reference/expressions.rst:405 msgid "" "Variables used in the generator expression are evaluated lazily when the :" "meth:`~generator.__next__` method is called for the generator object (in the " "same fashion as normal generators). However, the iterable expression in the " -"leftmost :keyword:`!for` clause is immediately evaluated, so that an error " -"produced by it will be emitted at the point where the generator expression " -"is defined, rather than at the point where the first value is retrieved. " -"Subsequent :keyword:`!for` clauses and any filter condition in the leftmost :" -"keyword:`!for` clause cannot be evaluated in the enclosing scope as they may " -"depend on the values obtained from the leftmost iterable. For example: " -"``(x*y for x in range(10) for y in range(x, x+10))``." +"leftmost :keyword:`!for` clause is immediately evaluated, and the :term:" +"`iterator` is immediately created for that iterable, so that an error " +"produced while creating the iterator will be emitted at the point where the " +"generator expression is defined, rather than at the point where the first " +"value is retrieved. Subsequent :keyword:`!for` clauses and any filter " +"condition in the leftmost :keyword:`!for` clause cannot be evaluated in the " +"enclosing scope as they may depend on the values obtained from the leftmost " +"iterable. For example: ``(x*y for x in range(10) for y in range(x, x+10))``." msgstr "" #: reference/expressions.rst:417 @@ -2424,7 +2425,7 @@ msgid "" "applies." msgstr "" -#: reference/expressions.rst:392 reference/expressions.rst:1781 +#: reference/expressions.rst:391 reference/expressions.rst:1781 #: reference/expressions.rst:1872 reference/expressions.rst:1926 msgid "expression" msgstr "" @@ -2479,39 +2480,39 @@ msgstr "" msgid "literal" msgstr "" -#: reference/expressions.rst:371 +#: reference/expressions.rst:370 msgid "immutable" msgstr "" -#: reference/expressions.rst:145 +#: reference/expressions.rst:144 msgid "data" msgstr "" -#: reference/expressions.rst:145 +#: reference/expressions.rst:144 msgid "type" msgstr "" -#: reference/expressions.rst:274 reference/expressions.rst:328 -#: reference/expressions.rst:392 reference/expressions.rst:742 +#: reference/expressions.rst:273 reference/expressions.rst:327 +#: reference/expressions.rst:391 reference/expressions.rst:742 #: reference/expressions.rst:883 reference/expressions.rst:1004 #: reference/expressions.rst:1166 reference/expressions.rst:1187 #: reference/expressions.rst:1938 msgid "object" msgstr "" -#: reference/expressions.rst:161 +#: reference/expressions.rst:160 msgid "parenthesized form" msgstr "" -#: reference/expressions.rst:392 reference/expressions.rst:1004 +#: reference/expressions.rst:391 reference/expressions.rst:1004 msgid "() (parentheses)" msgstr "" -#: reference/expressions.rst:161 +#: reference/expressions.rst:160 msgid "tuple display" msgstr "" -#: reference/expressions.rst:274 +#: reference/expressions.rst:273 msgid "empty" msgstr "" @@ -2523,20 +2524,20 @@ msgstr "" msgid "comma" msgstr "" -#: reference/expressions.rst:274 reference/expressions.rst:328 +#: reference/expressions.rst:273 reference/expressions.rst:327 #: reference/expressions.rst:1004 reference/expressions.rst:1926 msgid ", (comma)" msgstr "" -#: reference/expressions.rst:274 reference/expressions.rst:328 +#: reference/expressions.rst:273 reference/expressions.rst:327 msgid "comprehensions" msgstr "" -#: reference/expressions.rst:205 +#: reference/expressions.rst:204 msgid "for" msgstr "" -#: reference/expressions.rst:240 +#: reference/expressions.rst:239 msgid "in comprehensions" msgstr "" @@ -2544,7 +2545,7 @@ msgstr "" msgid "if" msgstr "" -#: reference/expressions.rst:205 +#: reference/expressions.rst:204 msgid "async for" msgstr "" @@ -2557,7 +2558,7 @@ msgstr "" msgid "list" msgstr "" -#: reference/expressions.rst:300 reference/expressions.rst:328 +#: reference/expressions.rst:299 reference/expressions.rst:327 msgid "display" msgstr "" @@ -2565,43 +2566,43 @@ msgstr "" msgid "[] (square brackets)" msgstr "" -#: reference/expressions.rst:274 +#: reference/expressions.rst:273 msgid "list expression" msgstr "" -#: reference/expressions.rst:300 reference/expressions.rst:1926 +#: reference/expressions.rst:299 reference/expressions.rst:1926 msgid "expression list" msgstr "" -#: reference/expressions.rst:300 +#: reference/expressions.rst:299 msgid "set" msgstr "" -#: reference/expressions.rst:328 +#: reference/expressions.rst:327 msgid "{} (curly brackets)" msgstr "" -#: reference/expressions.rst:300 +#: reference/expressions.rst:299 msgid "set expression" msgstr "" -#: reference/expressions.rst:354 reference/expressions.rst:883 +#: reference/expressions.rst:353 reference/expressions.rst:883 msgid "dictionary" msgstr "" -#: reference/expressions.rst:328 +#: reference/expressions.rst:327 msgid "key" msgstr "" -#: reference/expressions.rst:328 +#: reference/expressions.rst:327 msgid "value" msgstr "" -#: reference/expressions.rst:328 +#: reference/expressions.rst:327 msgid "key/value pair" msgstr "" -#: reference/expressions.rst:328 +#: reference/expressions.rst:327 msgid "dictionary expression" msgstr "" @@ -2609,11 +2610,11 @@ msgstr "" msgid ": (colon)" msgstr "" -#: reference/expressions.rst:328 +#: reference/expressions.rst:327 msgid "in dictionary expressions" msgstr "" -#: reference/expressions.rst:354 +#: reference/expressions.rst:353 msgid "in dictionary displays" msgstr "" @@ -2625,7 +2626,7 @@ msgstr "" msgid "**" msgstr "" -#: reference/expressions.rst:371 +#: reference/expressions.rst:370 msgid "hashable" msgstr "" @@ -2633,7 +2634,7 @@ msgstr "" msgid "generator" msgstr "" -#: reference/expressions.rst:392 +#: reference/expressions.rst:391 msgid "generator expression" msgstr "" diff --git a/reference/grammar.po b/reference/grammar.po index 64e879da..23d14167 100644 --- a/reference/grammar.po +++ b/reference/grammar.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-04 22:25+0300\n" "Last-Translator: Marios Giannopoulos \n" "Language-Team: PyGreece \n" @@ -34,27 +34,39 @@ msgstr "" #: reference/grammar.rst:11 msgid "" -"The notation is a mixture of `EBNF `_ and `PEG `_. In particular, ``&`` followed by a symbol, " -"token or parenthesized group indicates a positive lookahead (i.e., is " -"required to match but not consumed), while ``!`` indicates a negative " -"lookahead (i.e., is required *not* to match). We use the ``|`` separator to " -"mean PEG's \"ordered choice\" (written as ``/`` in traditional PEG " -"grammars). See :pep:`617` for more details on the grammar's syntax." +"The notation used here is the same as in the preceding docs, and is " +"described in the :ref:`notation ` section, except for a few extra " +"complications:" msgstr "" -"Η σημειογραφία είναι ένα μείγμα από `EBNF `_ και `PEG `_. Συγκεκριμένα, το ``&`` που ακολουθείται από " -"ένα σύμβολο, ένα token ή μια παρενθετική ομάδα υποδηλώνει θετική " -"προεπισκόπηση (δηλαδή απαιτείται να ταιριάζει αλλά δεν καταναλώνεται), ενώ " -"το ``!`` υποδηλώνει αρνητική προεπισκόπηση (δηλαδή απαιτείται *να μην* " -"ταιριάζει). Χρησιμοποιούμε τον τελεστή ``|`` για να εκφράσουμε την " -"\"ταξινομημένη επιλογή\" του PEG (που γράφεται ως ``/`` στις παραδοσιακές " -"γραμματικές PEG). Δείτε το :pep:`617` για περισσότερες λεπτομέρειες σχετικά " -"με τη σύνταξη της γραμματικής." +"Η σημειογραφία που χρησιμοποιείται εδώ είναι η ίδια με τα προηγούμενα " +"έγγραφα και περιγράφεται στην ενότητα :ref:`notation `, εκτός από " +"μερικές επιπλέον επιπλοκές:" + +#: reference/grammar.rst:15 +msgid "" +"``&e``: a positive lookahead (that is, ``e`` is required to match but not " +"consumed)" +msgstr "" +"``&e``: μια θετική προοπτική (δηλαδή, το ``e`` απαιτείται να ταιριάζει αλλά " +"δεν καταναλώνεται)" + +#: reference/grammar.rst:17 +msgid "" +"``!e``: a negative lookahead (that is, ``e`` is required *not* to match)" +msgstr "" +"``!e``: μια αρνητική προοπτική (δηλαδή, το ``e`` απαιτείται *να μην* " +"ταιριάζει)" + +#: reference/grammar.rst:18 +msgid "" +"``~`` (\"cut\"): commit to the current alternative and fail the rule even if " +"this fails to parse" +msgstr "" +"``~`` (\"cut\"): ολοκλήρωση της τρέχουσας εναλλακτικής λύσης και αποτυχία " +"του κανόνα ακόμα κι αν αυτή αποτύχει να αναλυθεί" #: reference/grammar.rst:21 +#, fuzzy msgid "" "# PEG grammar for Python\n" "\n" @@ -167,12 +179,12 @@ msgid "" "statements[asdl_stmt_seq*]: a=statement+ { _PyPegen_register_stmts(p, " "(asdl_stmt_seq*)_PyPegen_seq_flatten(p, a)) }\n" "\n" -"statement[asdl_stmt_seq*]: \n" -" | a=compound_stmt { (asdl_stmt_seq*)_PyPegen_singleton_seq(p, a) } \n" +"statement[asdl_stmt_seq*]:\n" +" | a=compound_stmt { (asdl_stmt_seq*)_PyPegen_singleton_seq(p, a) }\n" " | a[asdl_stmt_seq*]=simple_stmts { a }\n" "\n" "single_compound_stmt[asdl_stmt_seq*]:\n" -" | a=compound_stmt { \n" +" | a=compound_stmt {\n" " _PyPegen_register_stmts(p, (asdl_stmt_seq*)_PyPegen_singleton_seq(p, " "a)) }\n" "\n" @@ -583,9 +595,9 @@ msgid "" " _PyAST_ExceptHandler(e, ((expr_ty) t)->v.Name.id, b, EXTRA) }\n" " | 'except' e=expressions ':' b=block {\n" " CHECK_VERSION(\n" -" excepthandler_ty, \n" -" 14, \n" -" \"except expressions without parentheses are\", \n" +" excepthandler_ty,\n" +" 14,\n" +" \"except expressions without parentheses are\",\n" " _PyAST_ExceptHandler(e, NULL, b, EXTRA)) }\n" " | 'except' ':' b=block { _PyAST_ExceptHandler(NULL, NULL, b, EXTRA) }\n" " | invalid_except_stmt\n" @@ -597,9 +609,9 @@ msgid "" " _PyAST_ExceptHandler(e, ((expr_ty) t)->v.Name.id, b, EXTRA) }\n" " | 'except' '*' e=expressions ':' b=block {\n" " CHECK_VERSION(\n" -" excepthandler_ty, \n" -" 14, \n" -" \"except expressions without parentheses are\", \n" +" excepthandler_ty,\n" +" 14,\n" +" \"except expressions without parentheses are\",\n" " _PyAST_ExceptHandler(e, NULL, b, EXTRA)) }\n" " | invalid_except_star_stmt\n" "finally_block[asdl_stmt_seq*]:\n" @@ -1180,11 +1192,11 @@ msgid "" " | tstring_replacement_field\n" " | t=TSTRING_MIDDLE { _PyPegen_constant_from_token(p, t) }\n" "tstring[expr_ty] (memo):\n" -" | a=TSTRING_START b=tstring_middle* c=TSTRING_END { \n" +" | a=TSTRING_START b=tstring_middle* c=TSTRING_END {\n" " CHECK_VERSION(\n" -" expr_ty, \n" -" 14, \n" -" \"t-strings are\", \n" +" expr_ty,\n" +" 14,\n" +" \"t-strings are\",\n" " _PyPegen_template_str(p, a, (asdl_expr_seq*)b, c)) }\n" "\n" "string[expr_ty]: s[Token*]=STRING { _PyPegen_constant_from_string(p, s) }\n" @@ -1701,12 +1713,12 @@ msgid "" "after 'import'\") }\n" "invalid_dotted_as_name:\n" " | dotted_name 'as' !(NAME (',' | ')' | NEWLINE)) a=expression {\n" -" RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, \n" +" RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a,\n" " \"cannot use %s as import target\", " "_PyPegen_get_expr_name(a)) }\n" "invalid_import_from_as_name:\n" " | NAME 'as' !(NAME (',' | ')' | NEWLINE)) a=expression {\n" -" RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, \n" +" RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a,\n" " \"cannot use %s as import target\", " "_PyPegen_get_expr_name(a)) }\n" "\n" @@ -1754,7 +1766,7 @@ msgid "" " | a='except' expression ['as' NAME ] NEWLINE " "{ RAISE_SYNTAX_ERROR(\"expected ':'\") }\n" " | a='except' NEWLINE { RAISE_SYNTAX_ERROR(\"expected ':'\") }\n" -" | 'except' expression 'as' a=expression {\n" +" | 'except' expression 'as' a=expression ':' block {\n" " RAISE_SYNTAX_ERROR_KNOWN_LOCATION(\n" " a, \"cannot use except statement with %s\", " "_PyPegen_get_expr_name(a)) }\n" @@ -1766,7 +1778,7 @@ msgid "" "{ RAISE_SYNTAX_ERROR(\"expected ':'\") }\n" " | a='except' '*' (NEWLINE | ':') { RAISE_SYNTAX_ERROR(\"expected one or " "more exception types\") }\n" -" | 'except' '*' expression 'as' a=expression {\n" +" | 'except' '*' expression 'as' a=expression ':' block {\n" " RAISE_SYNTAX_ERROR_KNOWN_LOCATION(\n" " a, \"cannot use except* statement with %s\", " "_PyPegen_get_expr_name(a)) }\n" @@ -2072,12 +2084,12 @@ msgstr "" "statements[asdl_stmt_seq*]: a=statement+ { _PyPegen_register_stmts(p, " "(asdl_stmt_seq*)_PyPegen_seq_flatten(p, a)) }\n" "\n" -"statement[asdl_stmt_seq*]: \n" -" | a=compound_stmt { (asdl_stmt_seq*)_PyPegen_singleton_seq(p, a) } \n" +"statement[asdl_stmt_seq*]:\n" +" | a=compound_stmt { (asdl_stmt_seq*)_PyPegen_singleton_seq(p, a) }\n" " | a[asdl_stmt_seq*]=simple_stmts { a }\n" "\n" "single_compound_stmt[asdl_stmt_seq*]:\n" -" | a=compound_stmt { \n" +" | a=compound_stmt {\n" " _PyPegen_register_stmts(p, (asdl_stmt_seq*)_PyPegen_singleton_seq(p, " "a)) }\n" "\n" @@ -2488,9 +2500,9 @@ msgstr "" " _PyAST_ExceptHandler(e, ((expr_ty) t)->v.Name.id, b, EXTRA) }\n" " | 'except' e=expressions ':' b=block {\n" " CHECK_VERSION(\n" -" excepthandler_ty, \n" -" 14, \n" -" \"except expressions without parentheses are\", \n" +" excepthandler_ty,\n" +" 14,\n" +" \"except expressions without parentheses are\",\n" " _PyAST_ExceptHandler(e, NULL, b, EXTRA)) }\n" " | 'except' ':' b=block { _PyAST_ExceptHandler(NULL, NULL, b, EXTRA) }\n" " | invalid_except_stmt\n" @@ -2502,9 +2514,9 @@ msgstr "" " _PyAST_ExceptHandler(e, ((expr_ty) t)->v.Name.id, b, EXTRA) }\n" " | 'except' '*' e=expressions ':' b=block {\n" " CHECK_VERSION(\n" -" excepthandler_ty, \n" -" 14, \n" -" \"except expressions without parentheses are\", \n" +" excepthandler_ty,\n" +" 14,\n" +" \"except expressions without parentheses are\",\n" " _PyAST_ExceptHandler(e, NULL, b, EXTRA)) }\n" " | invalid_except_star_stmt\n" "finally_block[asdl_stmt_seq*]:\n" @@ -3085,11 +3097,11 @@ msgstr "" " | tstring_replacement_field\n" " | t=TSTRING_MIDDLE { _PyPegen_constant_from_token(p, t) }\n" "tstring[expr_ty] (memo):\n" -" | a=TSTRING_START b=tstring_middle* c=TSTRING_END { \n" +" | a=TSTRING_START b=tstring_middle* c=TSTRING_END {\n" " CHECK_VERSION(\n" -" expr_ty, \n" -" 14, \n" -" \"t-strings are\", \n" +" expr_ty,\n" +" 14,\n" +" \"t-strings are\",\n" " _PyPegen_template_str(p, a, (asdl_expr_seq*)b, c)) }\n" "\n" "string[expr_ty]: s[Token*]=STRING { _PyPegen_constant_from_string(p, s) }\n" @@ -3606,12 +3618,12 @@ msgstr "" "after 'import'\") }\n" "invalid_dotted_as_name:\n" " | dotted_name 'as' !(NAME (',' | ')' | NEWLINE)) a=expression {\n" -" RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, \n" +" RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a,\n" " \"cannot use %s as import target\", " "_PyPegen_get_expr_name(a)) }\n" "invalid_import_from_as_name:\n" " | NAME 'as' !(NAME (',' | ')' | NEWLINE)) a=expression {\n" -" RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, \n" +" RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a,\n" " \"cannot use %s as import target\", " "_PyPegen_get_expr_name(a)) }\n" "\n" @@ -3659,7 +3671,7 @@ msgstr "" " | a='except' expression ['as' NAME ] NEWLINE " "{ RAISE_SYNTAX_ERROR(\"expected ':'\") }\n" " | a='except' NEWLINE { RAISE_SYNTAX_ERROR(\"expected ':'\") }\n" -" | 'except' expression 'as' a=expression {\n" +" | 'except' expression 'as' a=expression ':' block {\n" " RAISE_SYNTAX_ERROR_KNOWN_LOCATION(\n" " a, \"cannot use except statement with %s\", " "_PyPegen_get_expr_name(a)) }\n" @@ -3671,7 +3683,7 @@ msgstr "" "{ RAISE_SYNTAX_ERROR(\"expected ':'\") }\n" " | a='except' '*' (NEWLINE | ':') { RAISE_SYNTAX_ERROR(\"expected one or " "more exception types\") }\n" -" | 'except' '*' expression 'as' a=expression {\n" +" | 'except' '*' expression 'as' a=expression ':' block {\n" " RAISE_SYNTAX_ERROR_KNOWN_LOCATION(\n" " a, \"cannot use except* statement with %s\", " "_PyPegen_get_expr_name(a)) }\n" @@ -3865,3 +3877,25 @@ msgstr "" " RAISE_SYNTAX_ERROR_STARTING_FROM(\n" " token,\n" " \"Type parameter list cannot be empty\")}\n" + +#~ msgid "" +#~ "The notation is a mixture of `EBNF `_ and `PEG `_. In particular, ``&`` followed by a " +#~ "symbol, token or parenthesized group indicates a positive lookahead (i." +#~ "e., is required to match but not consumed), while ``!`` indicates a " +#~ "negative lookahead (i.e., is required *not* to match). We use the ``|`` " +#~ "separator to mean PEG's \"ordered choice\" (written as ``/`` in " +#~ "traditional PEG grammars). See :pep:`617` for more details on the " +#~ "grammar's syntax." +#~ msgstr "" +#~ "Η σημειογραφία είναι ένα μείγμα από `EBNF `_ και `PEG `_. Συγκεκριμένα, το ``&`` που " +#~ "ακολουθείται από ένα σύμβολο, ένα token ή μια παρενθετική ομάδα " +#~ "υποδηλώνει θετική προεπισκόπηση (δηλαδή απαιτείται να ταιριάζει αλλά δεν " +#~ "καταναλώνεται), ενώ το ``!`` υποδηλώνει αρνητική προεπισκόπηση (δηλαδή " +#~ "απαιτείται *να μην* ταιριάζει). Χρησιμοποιούμε τον τελεστή ``|`` για να " +#~ "εκφράσουμε την \"ταξινομημένη επιλογή\" του PEG (που γράφεται ως ``/`` " +#~ "στις παραδοσιακές γραμματικές PEG). Δείτε το :pep:`617` για περισσότερες " +#~ "λεπτομέρειες σχετικά με τη σύνταξη της γραμματικής." diff --git a/reference/import.po b/reference/import.po index a8d2550c..1b9f6636 100644 --- a/reference/import.po +++ b/reference/import.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/reference/index.po b/reference/index.po index 4f11cdfa..94c8b08f 100644 --- a/reference/index.po +++ b/reference/index.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/reference/introduction.po b/reference/introduction.po index 34cd608f..9b6e5573 100644 --- a/reference/introduction.po +++ b/reference/introduction.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2024-11-25 12:27+0200\n" "Last-Translator: Stelios Rotas \n" "Language-Team: PyGreece \n" @@ -217,95 +217,247 @@ msgstr "Σημειογραφία" #: reference/introduction.rst:93 msgid "" -"The descriptions of lexical analysis and syntax use a modified `Backus–Naur " -"form (BNF) `_ " -"grammar notation. This uses the following style of definition:" +"The descriptions of lexical analysis and syntax use a grammar notation that " +"is a mixture of `EBNF `_ and `PEG `_. For example:" msgstr "" -"Οι περιγραφές στην λεξιλογική ανάλυση και σύνταξη χρησιμοποιούν έναν " -"τροποποιημένο γραμματικό συμβολισμό στην `μορφή Μπάκους-Νάουρ (BNF) " -"`_. Αυτό χρησιμοποιεί τον ακόλουθο τρόπο " -"ορισμού:" +"Οι περιγραφές στην λεξιλογική ανάλυση και σύνταξη χρησιμοποιούν μια " +"γραμματική σημειογραφία που είναι μείγμα των `EBNF `_ και `PEG `_. Για παράδειγμα:" -#: reference/introduction.rst:101 +#: reference/introduction.rst:106 msgid "" -"The first line says that a ``name`` is an ``lc_letter`` followed by a " -"sequence of zero or more ``lc_letter``\\ s and underscores. An " -"``lc_letter`` in turn is any of the single characters ``'a'`` through " -"``'z'``. (This rule is actually adhered to for the names defined in lexical " -"and grammar rules in this document.)" +"In this example, the first line says that a ``name`` is a ``letter`` " +"followed by a sequence of zero or more ``letter``\\ s, ``digit``\\ s, and " +"underscores. A ``letter`` in turn is any of the single characters ``'a'`` " +"through ``'z'`` and ``A`` through ``Z``; a ``digit`` is a single character " +"from ``0`` to ``9``." msgstr "" -"Η πρώτη γραμμή λέει ότι ένα ``name`` είναι ένα ``lc_letter`` ακολουθούμενο " -"από μία σειρά από μηδέν ή περισσότερα ``lc_letter``\\ s και κάτω παύλες. Ένα " -"``lc_letter`` με τη σειρά του είναι οποιοσδήποτε από τους μονούς χαρακτήρες " -"``'a'`` έως ``'z'``. (Αυτός ο κανόνας στην πραγματικότητα εφαρμόζεται για τα " -"ονόματα που ορίζονται στους λεξιλογικούς και γραμματικούς κανόνες αυτού του " -"εγγράφου.)" +"Σε αυτό το παράδειγμα, η πρώτη γραμμή αναφέρει ότι ένα ``name`` είναι ένα " +"``letter`` ακολουθούμενο από μια ακολουθία μηδενός ή περισσότερων " +"``γραμμάτος``\\ ων, ``ψηφίο``\\ α, και κάτω παύλων. Ένα ``letter`` με τη " +"σειρά του είναι οποιοσδήποτε από τους μεμονωμένους χαρακτήρες ``'a'`` έως " +"``'z'`` και ``A`` έως ``Z``∙ ένα ``digit`` είναι ένας μεμονωμένος χαρακτήρας " +"από ``0`` έως ``9``." -#: reference/introduction.rst:106 +#: reference/introduction.rst:112 +msgid "" +"Each rule begins with a name (which identifies the rule that's being " +"defined) followed by a colon, ``:``. The definition to the right of the " +"colon uses the following syntax elements:" +msgstr "" +"Κάθε κανόνας ξεκινά με ένα όνομα (το οποίο προσδιορίζει τον κανόνα που " +"ορίζεται) ακολουθούμενο από άνω κάτω τελεία, ``:``. Ο ορισμός στα δεξιά της " +"άνω και κάτω τελείας χρησιμοποιεί τα ακόλουθα στοιχεία σύνταξης:" + +#: reference/introduction.rst:116 +msgid "" +"``name``: A name refers to another rule. Where possible, it is a link to the " +"rule's definition." +msgstr "" +"``name``: Ένα όνομα αναφέρεται σε έναν άλλο κανόνα, Όπου είναι δυνατόν, " +"είναι ένας σύνδεσμος προς τον ορισμό του κανόνα." + +#: reference/introduction.rst:119 msgid "" -"Each rule begins with a name (which is the name defined by the rule) and ``::" -"=``. A vertical bar (``|``) is used to separate alternatives; it is the " -"least binding operator in this notation. A star (``*``) means zero or more " -"repetitions of the preceding item; likewise, a plus (``+``) means one or " -"more repetitions, and a phrase enclosed in square brackets (``[ ]``) means " -"zero or one occurrences (in other words, the enclosed phrase is optional). " -"The ``*`` and ``+`` operators bind as tightly as possible; parentheses are " -"used for grouping. Literal strings are enclosed in quotes. White space is " -"only meaningful to separate tokens. Rules are normally contained on a single " -"line; rules with many alternatives may be formatted alternatively with each " -"line after the first beginning with a vertical bar." -msgstr "" -"Κάθε κανόνας ξεκινά με ένα όνομα (το οποίο είναι ένα όνομα ορισμένο από τον " -"κανόνα) και ``::=``. Μία κάθετη γραμμή (``|``) χρησιμοποιείται για να " -"διαχωρίσει τις εναλλακτικές· έχει την μικρότερη προτεραιότητα στην σειρά " -"προτεραιότητας πράξεων αυτού του συμβολισμού. Ένας αστερίσκος (``*``) " -"σημαίνει μηδέν ή περισσότερες επαναλήψεις του προηγούμενου αντικειμένου· " -"παρομοίως, το συν (``+``) σημαίνει μία ή περισσότερες επαναλήψεις, και μία " -"φράση περιφραγμένη από αγκύλες (``[ ]``) σημαίνει μηδέν ή μία περίπτωση (με " -"άλλα λόγια, η περιφραγμένη φράση είναι προαιρετική). Οι τελεστές ``*`` και " -"``+`` ενώνονται όσο το δυνατόν πιο σφιχτά· οι παρενθέσεις χρησιμοποιούνται " -"για ομαδοποίηση. Οι συμβολοσειρές είναι περιφραγμένες από εισαγωγικά. Οι " -"κενοί χαρακτήρες είναι μόνο σημαντικοί για να διαχωρίσουν τα *tokens*. Οι " -"κανόνες συνήθως περιέχονται σε μία μονή γραμμή· οι κανόνες με πολλές " -"εναλλακτικές μπορεί να μορφοποιηθούν εναλλακτικά με κάθε γραμμή μετά την " -"πρώτη να ξεκινάει με μια κάθετη γραμμή." - -#: reference/introduction.rst:120 -msgid "" -"In lexical definitions (as the example above), two more conventions are " -"used: Two literal characters separated by three dots mean a choice of any " -"single character in the given (inclusive) range of ASCII characters. A " -"phrase between angular brackets (``<...>``) gives an informal description of " -"the symbol defined; e.g., this could be used to describe the notion of " -"'control character' if needed." -msgstr "" -"Στους λεξιλογικούς ορισμούς (όπως στο παραπάνω παράδειγμα), δύο περισσότεροι " -"κανόνες χρησιμοποιούνται: Δύο χαρακτήρες χωρισμένοι από τρεις τελείες " -"σημαίνει επιλογή όποιου μονού χαρακτήρα στο συγκεκριμένο (κλειστό) εύρος " -"*ASCII* χαρακτήρων. Η φράση ανάμεσα σε γωνιακές παρενθέσεις (``<...>``) " -"δίνει μία άτυπη περιγραφή του ορισμένου συμβόλου· π.χ., αυτό θα μπορούσε να " -"χρησιμοποιηθεί για να περιγράψει την ιδέα του 'χαρακτήρα ελέγχου' (control " -"character) αν χρειαστεί." +"``TOKEN``: An uppercase name refers to a :term:`token`. For the purposes of " +"grammar definitions, tokens are the same as rules." +msgstr "" +"``TOKEN``: Ένα κεφαλαίο όνομα αναφέρεται σε ένα :term:`token`. Για τους " +"σκοπούς των γραμματικών ορισμών, τα tokens είναι το ίδιο με τους κανόνες." + +#: reference/introduction.rst:122 +msgid "" +"``\"text\"``, ``'text'``: Text in single or double quotes must match " +"literally (without the quotes). The type of quote is chosen according to the " +"meaning of ``text``:" +msgstr "" +"``\"text\"``, ``'text'``: Το κείμενο σε μονά ή διπλά εισαγωγικά πρέπει να " +"ταιριάζει κυριολεκτικά (χωρίς τα εισαγωγικά). Ο τύπος του εισαγωγικού " +"επιλέγεται ανάλογα με τη σημασία του ``text``:" + +#: reference/introduction.rst:126 +msgid "``'if'``: A name in single quotes denotes a :ref:`keyword `." +msgstr "" +"``'if'``: Ένα όνομα σε μονά εισαγωγικά υποδηλώνει μια :ref:`keyword " +"`." #: reference/introduction.rst:127 msgid "" -"Even though the notation used is almost the same, there is a big difference " -"between the meaning of lexical and syntactic definitions: a lexical " -"definition operates on the individual characters of the input source, while " -"a syntax definition operates on the stream of tokens generated by the " -"lexical analysis. All uses of BNF in the next chapter (\"Lexical Analysis\") " -"are lexical definitions; uses in subsequent chapters are syntactic " -"definitions." -msgstr "" -"Αν και η σημειογραφία που χρησιμοποιείται είναι σχεδόν η ίδια, υπάρχει " -"μεγάλη διαφορά ανάμεσα στη σημασία των λεξιλογικών και των συντακτικών " -"ορισμών: ένας λεξιλογικός ορισμός λειτουργεί με τους μεμονωμένους χαρακτήρες " -"της πηγής εισόδου, ενώ ένας ορισμός σύνταξης λειτουργεί στην ροή των *token* " -"που δημιουργείται από τη λεξιλογική ανάλυση. Όλες οι χρήσεις του *BNF* στο " -"επόμενο κεφάλαιο (\"Λεξιλογική Ανάλυση\") είναι λεξιλογικοί ορισμοί· οι " -"χρήσεις στα ακόλουθα κεφάλαια είναι συντακτικοί ορισμοί." +"``\"case\"``: A name in double quotes denotes a :ref:`soft-keyword `." +msgstr "" +"``\"case\"``: Ένα όνομα σε διπλά εισαγωγικά υποδηλώνει ένα :ref:`soft-" +"keyword `." + +#: reference/introduction.rst:129 +msgid "" +"``'@'``: A non-letter symbol in single quotes denotes an :py:data:`~token." +"OP` token, that is, a :ref:`delimiter ` or :ref:`operator " +"`." +msgstr "" +"``'@'``: Ένα σύμβολο που δεν περιέχει γράμμα σε μονά εισαγωγικά υποδηλώνει " +"ένα :py:data:`~token.OP` token, δηλαδή, ένα :ref:`delimiter ` ή :" +"ref:`operator `." + +#: reference/introduction.rst:133 +msgid "" +"``e1 e2``: Items separated only by whitespace denote a sequence. Here, " +"``e1`` must be followed by ``e2``." +msgstr "" +"``e1 e2``: Τα στοιχεία που χωρίζονται μόνο με κενό υποδηλώνουν μια " +"ακολουθία. Εδώ, το ``e1`` πρέπει να ακολουθείται από το ``e2``." + +#: reference/introduction.rst:135 +msgid "" +"``e1 | e2``: A vertical bar is used to separate alternatives. It denotes " +"PEG's \"ordered choice\": if ``e1`` matches, ``e2`` is not considered. In " +"traditional PEG grammars, this is written as a slash, ``/``, rather than a " +"vertical bar. See :pep:`617` for more background and details." +msgstr "" +"``e1 | e2``: Χρησιμοποιείται μια κάθετη γραμμή για τον διαχωρισμό των " +"εναλλακτικών λύσεων. Υποδηλώνει την \"διατεταγμένη επιλογή\" του PEG: εάν το " +"``e1`` ταιριάζει, το ``e2`` δεν λαμβάνεται υπόψη. Στις παραδοσιακές " +"γραμματικές του PEG, αυτό γράφεται ως κάθετος, ``/``, αντί για κάθετη " +"γραμμή. Δείτε το :pep:`617` για περισσότερες πληροφορίες και λεπτομέρειες." + +#: reference/introduction.rst:141 +msgid "``e*``: A star means zero or more repetitions of the preceding item." +msgstr "" +"``e*``: Ένας αστερίσκος σημαίνει μηδέν ή περισσότερες επαναλήψεις του " +"προηγούμενοι στοιχείου." + +#: reference/introduction.rst:142 +msgid "``e+``: Likewise, a plus means one or more repetitions." +msgstr "``e+``: Ομοίως, ένα συν σημαίνει μία ή περισσότερες επαναλήψεις." + +#: reference/introduction.rst:143 +msgid "" +"``[e]``: A phrase enclosed in square brackets means zero or one occurrences. " +"In other words, the enclosed phrase is optional." +msgstr "" +"``[e]``: Μια φράση που περικλείεται σε αγκύλες σημαίνει μηδέν ή μία " +"εμφάνιση. Με άλλα λόγια, η φράση που περικλείεται είναι προαιρετική." + +#: reference/introduction.rst:145 +msgid "" +"``e?``: A question mark has exactly the same meaning as square brackets: the " +"preceding item is optional." +msgstr "" +"``e?``: Ένα ερωτηματικό έχει ακριβώς την ίδια σημασία με τις αγκύλες: το " +"προηγούμενο στοιχείο είναι προαιρετικό." + +#: reference/introduction.rst:147 +msgid "``(e)``: Parentheses are used for grouping." +msgstr "``(e)``: Οι παρενθέσεις χρησιμοποιούνται για ομαδοποίηση." + +#: reference/introduction.rst:148 +msgid "" +"``\"a\"...\"z\"``: Two literal characters separated by three dots mean a " +"choice of any single character in the given (inclusive) range of ASCII " +"characters. This notation is only used in :ref:`lexical definitions " +"`." +msgstr "" +"``\"a\"...\"z\"``: Δύο κυριολεκτικοί χαρακτήρες διαχωρισμένοι από τρεις " +"τελείες σημαίνουν την επιλογή οποιουδήποτε μεμονωμένου χαρακτήρα στο " +"δεδομένο (συμπεριλαμβανομένου) εύρος χαρακτήρων ASCII. Αυτή η σημειογραφία " +"χρησιμοποιείται μόνο σε :ref:`lexical definitions `." + +#: reference/introduction.rst:152 +msgid "" +"``<...>``: A phrase between angular brackets gives an informal description " +"of the matched symbol (for example, ````), or an abbreviation that is defined in nearby text (for example, " +"````). This notation is only used in :ref:`lexical definitions `." +msgstr "" +"``<...>``: Μια φράση μέσα σε γωνιακές αγκύλες δίνει μια άτυπη περιγραφή του " +"αντίστοιχου συμβόλου (για παράδειγμα ````), ή μια συντομογραφία που ορίζεται σε κοντινό κείμενο (για παράδειγμα, " +"````). Αυτή η σημειογραφία χρησιμοποιείται μόνο σε :ref:`lexical " +"definitions `." + +#: reference/introduction.rst:158 +msgid "" +"The unary operators (``*``, ``+``, ``?``) bind as tightly as possible; the " +"vertical bar (``|``) binds most loosely." +msgstr "" +"Οι μοναδιαίοι τελεστές (``*``, ``+``, ``?``) συνδέονται όσο το δυνατόν πιο " +"σφιχτά∙ η κάθετη γραμμή (``|``) συνδέεται πιο χαλαρά." + +#: reference/introduction.rst:161 +msgid "White space is only meaningful to separate tokens." +msgstr "Το κενό έχει νόημα μόνο για τον διαχωρισμό των διακριτικών." + +#: reference/introduction.rst:163 +msgid "" +"Rules are normally contained on a single line, but rules that are too long " +"may be wrapped:" +msgstr "" +"Οι κανόνες συνήθως περιέχονται σε μία μόνο γραμμή, αλλά οι κανόνες που είναι " +"πολύ μεγάλοι μπορούν να αναδιπλωθούν." + +#: reference/introduction.rst:172 +msgid "" +"Alternatively, rules may be formatted with the first line ending at the " +"colon, and each alternative beginning with a vertical bar on a new line. For " +"example:" +msgstr "" +"Εναλλακτικά, οι κανόνες μπορούν να μορφοποιηθούν με την πρώτη γραμμή να " +"τελειών στην άνω και κάτω τελεία και κάθε εναλλακτική να ξεκινά με μια " +"κάθετη γραμμή σε μια νέα γραμμή. Για παράδειγμα:" + +#: reference/introduction.rst:187 +msgid "This does *not* mean that there is an empty first alternative." +msgstr "Αυτό *δεν* σημαίνει ότι υπάρχει μια κενή πρώτη εναλλακτική λύση." + +#: reference/introduction.rst:194 +msgid "Lexical and Syntactic definitions" +msgstr "Λεξικοί και Συντακτικοί ορισμοί" + +#: reference/introduction.rst:196 +msgid "" +"There is some difference between *lexical* and *syntactic* analysis: the :" +"term:`lexical analyzer` operates on the individual characters of the input " +"source, while the *parser* (syntactic analyzer) operates on the stream of :" +"term:`tokens ` generated by the lexical analysis. However, in some " +"cases the exact boundary between the two phases is a CPython implementation " +"detail." +msgstr "" +"Υπάρχει κάποια διαφορά μεταξύ της *λεξικής* και της *συντακτικής* ανάλυσης: " +"ο :term:`lexical analyzer` λειτουργεί στους μεμονωμένους χαρακτήρες της " +"πηγής εισόδου, ενώ ο *αναλυτής* (συντακτικός αναλυτής) λειτουργεί στη ροή " +"των :term:`tokens ` που δημιουργούνται από τη λεξική ανάλυση. Ωστόσο, " +"σε ορισμένες περιπτώσεις το ακριβές όριο μεταξύ των δύο φάσεων είναι μια " +"λεπτομέρεια υλοποίησης της CPython." + +#: reference/introduction.rst:203 +msgid "" +"The practical difference between the two is that in *lexical* definitions, " +"all whitespace is significant. The lexical analyzer :ref:`discards " +"` all whitespace that is not converted to tokens like :data:" +"`token.INDENT` or :data:`~token.NEWLINE`. *Syntactic* definitions then use " +"these tokens, rather than source characters." +msgstr "" +"Η πρακτική διαφορά μεταξύ των δύο είναι ότι στους *λεξιλογικούς* ορισμούς, " +"όλα τα κενά είναι σημαντικά. Ο λεξικός αναλυτής :ref:`discards ` " +"όλα τα κενά που δεν μετατρέπονται σε διακριτικά όπως :data:`token.INDENT` ή :" +"data:`~token.NEWLINE`. Οι *συντακτικοί* ορισμοί χρησιμοποιούν στη συνέχεια " +"αυτά τα διακριτικά, αντί για τους χαρακτήρες προέλευσης." + +#: reference/introduction.rst:209 +msgid "" +"This documentation uses the same BNF grammar for both styles of definitions. " +"All uses of BNF in the next chapter (:ref:`lexical`) are lexical " +"definitions; uses in subsequent chapters are syntactic definitions." +msgstr "" +"Αυτή η τεκμηρίωση χρησιμοποιεί την ίδια γραμματική BNF και για τα δύο στυλ " +"ορισμών. Όλες οι χρήσεις του BNF στο επόμενο κεφάλαιο (:ref:`lexical`) είναι " +"λεξιλογικοί ορισμοί∙ οι χρήσεις στα επόμενα κεφάλαια είναι συντακτικοί " +"ορισμοί." #: reference/introduction.rst:91 msgid "BNF" @@ -323,10 +475,55 @@ msgstr "συντακτικό" msgid "notation" msgstr "σημειογραφία" -#: reference/introduction.rst:118 +#: reference/introduction.rst:189 msgid "lexical definitions" msgstr "λεξιλογικοί ορισμοί" -#: reference/introduction.rst:118 -msgid "ASCII" -msgstr "ASCII" +#~ msgid "" +#~ "Each rule begins with a name (which is the name defined by the rule) and " +#~ "``::=``. A vertical bar (``|``) is used to separate alternatives; it is " +#~ "the least binding operator in this notation. A star (``*``) means zero " +#~ "or more repetitions of the preceding item; likewise, a plus (``+``) means " +#~ "one or more repetitions, and a phrase enclosed in square brackets " +#~ "(``[ ]``) means zero or one occurrences (in other words, the enclosed " +#~ "phrase is optional). The ``*`` and ``+`` operators bind as tightly as " +#~ "possible; parentheses are used for grouping. Literal strings are " +#~ "enclosed in quotes. White space is only meaningful to separate tokens. " +#~ "Rules are normally contained on a single line; rules with many " +#~ "alternatives may be formatted alternatively with each line after the " +#~ "first beginning with a vertical bar." +#~ msgstr "" +#~ "Κάθε κανόνας ξεκινά με ένα όνομα (το οποίο είναι ένα όνομα ορισμένο από " +#~ "τον κανόνα) και ``::=``. Μία κάθετη γραμμή (``|``) χρησιμοποιείται για να " +#~ "διαχωρίσει τις εναλλακτικές· έχει την μικρότερη προτεραιότητα στην σειρά " +#~ "προτεραιότητας πράξεων αυτού του συμβολισμού. Ένας αστερίσκος (``*``) " +#~ "σημαίνει μηδέν ή περισσότερες επαναλήψεις του προηγούμενου αντικειμένου· " +#~ "παρομοίως, το συν (``+``) σημαίνει μία ή περισσότερες επαναλήψεις, και " +#~ "μία φράση περιφραγμένη από αγκύλες (``[ ]``) σημαίνει μηδέν ή μία " +#~ "περίπτωση (με άλλα λόγια, η περιφραγμένη φράση είναι προαιρετική). Οι " +#~ "τελεστές ``*`` και ``+`` ενώνονται όσο το δυνατόν πιο σφιχτά· οι " +#~ "παρενθέσεις χρησιμοποιούνται για ομαδοποίηση. Οι συμβολοσειρές είναι " +#~ "περιφραγμένες από εισαγωγικά. Οι κενοί χαρακτήρες είναι μόνο σημαντικοί " +#~ "για να διαχωρίσουν τα *tokens*. Οι κανόνες συνήθως περιέχονται σε μία " +#~ "μονή γραμμή· οι κανόνες με πολλές εναλλακτικές μπορεί να μορφοποιηθούν " +#~ "εναλλακτικά με κάθε γραμμή μετά την πρώτη να ξεκινάει με μια κάθετη " +#~ "γραμμή." + +#~ msgid "" +#~ "In lexical definitions (as the example above), two more conventions are " +#~ "used: Two literal characters separated by three dots mean a choice of any " +#~ "single character in the given (inclusive) range of ASCII characters. A " +#~ "phrase between angular brackets (``<...>``) gives an informal description " +#~ "of the symbol defined; e.g., this could be used to describe the notion of " +#~ "'control character' if needed." +#~ msgstr "" +#~ "Στους λεξιλογικούς ορισμούς (όπως στο παραπάνω παράδειγμα), δύο " +#~ "περισσότεροι κανόνες χρησιμοποιούνται: Δύο χαρακτήρες χωρισμένοι από " +#~ "τρεις τελείες σημαίνει επιλογή όποιου μονού χαρακτήρα στο συγκεκριμένο " +#~ "(κλειστό) εύρος *ASCII* χαρακτήρων. Η φράση ανάμεσα σε γωνιακές " +#~ "παρενθέσεις (``<...>``) δίνει μία άτυπη περιγραφή του ορισμένου συμβόλου· " +#~ "π.χ., αυτό θα μπορούσε να χρησιμοποιηθεί για να περιγράψει την ιδέα του " +#~ "'χαρακτήρα ελέγχου' (control character) αν χρειαστεί." + +#~ msgid "ASCII" +#~ msgstr "ASCII" diff --git a/reference/lexical_analysis.po b/reference/lexical_analysis.po index 371962d6..7770b633 100644 --- a/reference/lexical_analysis.po +++ b/reference/lexical_analysis.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -360,117 +360,150 @@ msgid "" msgstr "" #: reference/lexical_analysis.rst:292 -msgid "Identifiers and keywords" +msgid "Names (identifiers and keywords)" msgstr "" #: reference/lexical_analysis.rst:296 msgid "" -"Identifiers (also referred to as *names*) are described by the following " -"lexical definitions." +":data:`~token.NAME` tokens represent *identifiers*, *keywords*, and *soft " +"keywords*." msgstr "" #: reference/lexical_analysis.rst:299 msgid "" -"The syntax of identifiers in Python is based on the Unicode standard annex " -"UAX-31, with elaboration and changes as defined below; see also :pep:`3131` " -"for further details." +"Within the ASCII range (U+0001..U+007F), the valid characters for names " +"include the uppercase and lowercase letters (``A-Z`` and ``a-z``), the " +"underscore ``_`` and, except for the first character, the digits ``0`` " +"through ``9``." msgstr "" -#: reference/lexical_analysis.rst:303 +#: reference/lexical_analysis.rst:304 msgid "" -"Within the ASCII range (U+0001..U+007F), the valid characters for " -"identifiers include the uppercase and lowercase letters ``A`` through ``Z``, " -"the underscore ``_`` and, except for the first character, the digits ``0`` " -"through ``9``. Python 3.0 introduced additional characters from outside the " -"ASCII range (see :pep:`3131`). For these characters, the classification " -"uses the version of the Unicode Character Database as included in the :mod:" -"`unicodedata` module." +"Names must contain at least one character, but have no upper length limit. " +"Case is significant." msgstr "" -#: reference/lexical_analysis.rst:311 -msgid "Identifiers are unlimited in length. Case is significant." +#: reference/lexical_analysis.rst:307 +msgid "" +"Besides ``A-Z``, ``a-z``, ``_`` and ``0-9``, names can also use \"letter-" +"like\" and \"number-like\" characters from outside the ASCII range, as " +"detailed below." msgstr "" -#: reference/lexical_analysis.rst:320 -msgid "The Unicode category codes mentioned above stand for:" +#: reference/lexical_analysis.rst:310 +msgid "" +"All identifiers are converted into the `normalization form`_ NFKC while " +"parsing; comparison of identifiers is based on NFKC." msgstr "" -#: reference/lexical_analysis.rst:322 -msgid "*Lu* - uppercase letters" +#: reference/lexical_analysis.rst:313 +msgid "" +"Formally, the first character of a normalized identifier must belong to the " +"set ``id_start``, which is the union of:" msgstr "" -#: reference/lexical_analysis.rst:323 -msgid "*Ll* - lowercase letters" +#: reference/lexical_analysis.rst:316 +msgid "Unicode category ```` - uppercase letters (includes ``A`` to ``Z``)" msgstr "" -#: reference/lexical_analysis.rst:324 -msgid "*Lt* - titlecase letters" +#: reference/lexical_analysis.rst:317 +msgid "Unicode category ```` - lowercase letters (includes ``a`` to ``z``)" msgstr "" -#: reference/lexical_analysis.rst:325 -msgid "*Lm* - modifier letters" +#: reference/lexical_analysis.rst:318 +msgid "Unicode category ```` - titlecase letters" msgstr "" -#: reference/lexical_analysis.rst:326 -msgid "*Lo* - other letters" +#: reference/lexical_analysis.rst:319 +msgid "Unicode category ```` - modifier letters" +msgstr "" + +#: reference/lexical_analysis.rst:320 +msgid "Unicode category ```` - other letters" +msgstr "" + +#: reference/lexical_analysis.rst:321 +msgid "Unicode category ```` - letter numbers" msgstr "" -#: reference/lexical_analysis.rst:327 -msgid "*Nl* - letter numbers" +#: reference/lexical_analysis.rst:322 +msgid "{``\"_\"``} - the underscore" +msgstr "" + +#: reference/lexical_analysis.rst:323 +msgid "" +"```` - an explicit set of characters in `PropList.txt`_ to " +"support backwards compatibility" msgstr "" -#: reference/lexical_analysis.rst:328 -msgid "*Mn* - nonspacing marks" +#: reference/lexical_analysis.rst:326 +msgid "" +"The remaining characters must belong to the set ``id_continue``, which is " +"the union of:" msgstr "" #: reference/lexical_analysis.rst:329 -msgid "*Mc* - spacing combining marks" +msgid "all characters in ``id_start``" msgstr "" #: reference/lexical_analysis.rst:330 -msgid "*Nd* - decimal numbers" +msgid "Unicode category ```` - decimal numbers (includes ``0`` to ``9``)" msgstr "" #: reference/lexical_analysis.rst:331 -msgid "*Pc* - connector punctuations" +msgid "Unicode category ```` - connector punctuations" msgstr "" #: reference/lexical_analysis.rst:332 -msgid "" -"*Other_ID_Start* - explicit list of characters in `PropList.txt `_ to support backwards " -"compatibility" +msgid "Unicode category ```` - nonspacing marks" +msgstr "" + +#: reference/lexical_analysis.rst:333 +msgid "Unicode category ```` - spacing combining marks" msgstr "" -#: reference/lexical_analysis.rst:335 -msgid "*Other_ID_Continue* - likewise" +#: reference/lexical_analysis.rst:334 +msgid "" +"```` - another explicit set of characters in `PropList." +"txt`_ to support backwards compatibility" msgstr "" #: reference/lexical_analysis.rst:337 msgid "" -"All identifiers are converted into the normal form NFKC while parsing; " -"comparison of identifiers is based on NFKC." +"Unicode categories use the version of the Unicode Character Database as " +"included in the :mod:`unicodedata` module." msgstr "" #: reference/lexical_analysis.rst:340 msgid "" -"A non-normative HTML file listing all valid identifier characters for " -"Unicode 16.0.0 can be found at https://www.unicode.org/Public/16.0.0/ucd/" -"DerivedCoreProperties.txt" +"These sets are based on the Unicode standard annex `UAX-31`_. See also :pep:" +"`3131` for further details." +msgstr "" + +#: reference/lexical_analysis.rst:343 +msgid "" +"Even more formally, names are described by the following lexical definitions:" +msgstr "" + +#: reference/lexical_analysis.rst:357 +msgid "" +"A non-normative listing of all valid identifier characters as defined by " +"Unicode is available in the `DerivedCoreProperties.txt`_ file in the Unicode " +"Character Database." msgstr "" -#: reference/lexical_analysis.rst:348 +#: reference/lexical_analysis.rst:371 msgid "Keywords" msgstr "" -#: reference/lexical_analysis.rst:354 +#: reference/lexical_analysis.rst:377 msgid "" -"The following identifiers are used as reserved words, or *keywords* of the " +"The following names are used as reserved words, or *keywords* of the " "language, and cannot be used as ordinary identifiers. They must be spelled " "exactly as written here:" msgstr "" -#: reference/lexical_analysis.rst:358 +#: reference/lexical_analysis.rst:381 msgid "" "False await else import pass\n" "None break except in raise\n" @@ -481,94 +514,101 @@ msgid "" "async elif if or yield" msgstr "" -#: reference/lexical_analysis.rst:372 +#: reference/lexical_analysis.rst:395 msgid "Soft Keywords" msgstr "" -#: reference/lexical_analysis.rst:378 +#: reference/lexical_analysis.rst:401 msgid "" -"Some identifiers are only reserved under specific contexts. These are known " -"as *soft keywords*. The identifiers ``match``, ``case``, ``type`` and ``_`` " -"can syntactically act as keywords in certain contexts, but this distinction " -"is done at the parser level, not when tokenizing." +"Some names are only reserved under specific contexts. These are known as " +"*soft keywords*:" msgstr "" -#: reference/lexical_analysis.rst:383 +#: reference/lexical_analysis.rst:404 msgid "" -"As soft keywords, their use in the grammar is possible while still " -"preserving compatibility with existing code that uses these names as " -"identifier names." +"``match``, ``case``, and ``_``, when used in the :keyword:`match` statement." +msgstr "" + +#: reference/lexical_analysis.rst:405 +msgid "``type``, when used in the :keyword:`type` statement." msgstr "" -#: reference/lexical_analysis.rst:387 +#: reference/lexical_analysis.rst:407 msgid "" -"``match``, ``case``, and ``_`` are used in the :keyword:`match` statement. " -"``type`` is used in the :keyword:`type` statement." +"These syntactically act as keywords in their specific contexts, but this " +"distinction is done at the parser level, not when tokenizing." msgstr "" -#: reference/lexical_analysis.rst:390 +#: reference/lexical_analysis.rst:410 +msgid "" +"As soft keywords, their use in the grammar is possible while still " +"preserving compatibility with existing code that uses these names as " +"identifier names." +msgstr "" + +#: reference/lexical_analysis.rst:414 msgid "``type`` is now a soft keyword." msgstr "" -#: reference/lexical_analysis.rst:399 +#: reference/lexical_analysis.rst:423 msgid "Reserved classes of identifiers" msgstr "" -#: reference/lexical_analysis.rst:401 +#: reference/lexical_analysis.rst:425 msgid "" "Certain classes of identifiers (besides keywords) have special meanings. " "These classes are identified by the patterns of leading and trailing " "underscore characters:" msgstr "" -#: reference/lexical_analysis.rst:405 +#: reference/lexical_analysis.rst:429 msgid "``_*``" msgstr "" -#: reference/lexical_analysis.rst:406 +#: reference/lexical_analysis.rst:430 msgid "Not imported by ``from module import *``." msgstr "" -#: reference/lexical_analysis.rst:408 +#: reference/lexical_analysis.rst:432 msgid "``_``" msgstr "" -#: reference/lexical_analysis.rst:409 +#: reference/lexical_analysis.rst:433 msgid "" "In a ``case`` pattern within a :keyword:`match` statement, ``_`` is a :ref:" "`soft keyword ` that denotes a :ref:`wildcard `." msgstr "" -#: reference/lexical_analysis.rst:413 +#: reference/lexical_analysis.rst:437 msgid "" "Separately, the interactive interpreter makes the result of the last " "evaluation available in the variable ``_``. (It is stored in the :mod:" "`builtins` module, alongside built-in functions like ``print``.)" msgstr "" -#: reference/lexical_analysis.rst:418 +#: reference/lexical_analysis.rst:442 msgid "" "Elsewhere, ``_`` is a regular identifier. It is often used to name " "\"special\" items, but it is not special to Python itself." msgstr "" -#: reference/lexical_analysis.rst:423 +#: reference/lexical_analysis.rst:447 msgid "" "The name ``_`` is often used in conjunction with internationalization; refer " "to the documentation for the :mod:`gettext` module for more information on " "this convention." msgstr "" -#: reference/lexical_analysis.rst:427 +#: reference/lexical_analysis.rst:451 msgid "It is also commonly used for unused variables." msgstr "" -#: reference/lexical_analysis.rst:429 +#: reference/lexical_analysis.rst:453 msgid "``__*__``" msgstr "" -#: reference/lexical_analysis.rst:430 +#: reference/lexical_analysis.rst:454 msgid "" "System-defined names, informally known as \"dunder\" names. These names are " "defined by the interpreter and its implementation (including the standard " @@ -578,11 +618,11 @@ msgid "" "explicitly documented use, is subject to breakage without warning." msgstr "" -#: reference/lexical_analysis.rst:437 +#: reference/lexical_analysis.rst:461 msgid "``__*``" msgstr "" -#: reference/lexical_analysis.rst:438 +#: reference/lexical_analysis.rst:462 msgid "" "Class-private names. Names in this category, when used within the context " "of a class definition, are re-written to use a mangled form to help avoid " @@ -590,23 +630,23 @@ msgid "" "section :ref:`atom-identifiers`." msgstr "" -#: reference/lexical_analysis.rst:447 +#: reference/lexical_analysis.rst:471 msgid "Literals" msgstr "" -#: reference/lexical_analysis.rst:451 +#: reference/lexical_analysis.rst:475 msgid "Literals are notations for constant values of some built-in types." msgstr "" -#: reference/lexical_analysis.rst:462 +#: reference/lexical_analysis.rst:486 msgid "String and Bytes literals" msgstr "" -#: reference/lexical_analysis.rst:464 +#: reference/lexical_analysis.rst:488 msgid "String literals are described by the following lexical definitions:" msgstr "" -#: reference/lexical_analysis.rst:489 +#: reference/lexical_analysis.rst:514 msgid "" "One syntactic restriction not indicated by these productions is that " "whitespace is not allowed between the :token:`~python-grammar:stringprefix` " @@ -616,7 +656,7 @@ msgid "" "`encodings`." msgstr "" -#: reference/lexical_analysis.rst:499 +#: reference/lexical_analysis.rst:524 msgid "" "In plain English: Both types of literals can be enclosed in matching single " "quotes (``'``) or double quotes (``\"``). They can also be enclosed in " @@ -629,7 +669,7 @@ msgid "" "sequences>` below for examples." msgstr "" -#: reference/lexical_analysis.rst:512 +#: reference/lexical_analysis.rst:537 msgid "" "Bytes literals are always prefixed with ``'b'`` or ``'B'``; they produce an " "instance of the :class:`bytes` type instead of the :class:`str` type. They " @@ -637,7 +677,7 @@ msgid "" "greater must be expressed with escapes." msgstr "" -#: reference/lexical_analysis.rst:521 +#: reference/lexical_analysis.rst:546 msgid "" "Both string and bytes literals may optionally be prefixed with a letter " "``'r'`` or ``'R'``; such constructs are called :dfn:`raw string literals` " @@ -646,20 +686,20 @@ msgid "" "escapes are not treated specially." msgstr "" -#: reference/lexical_analysis.rst:527 +#: reference/lexical_analysis.rst:552 msgid "" "The ``'rb'`` prefix of raw bytes literals has been added as a synonym of " "``'br'``." msgstr "" -#: reference/lexical_analysis.rst:531 +#: reference/lexical_analysis.rst:556 msgid "" "Support for the unicode legacy literal (``u'value'``) was reintroduced to " "simplify the maintenance of dual Python 2.x and 3.x codebases. See :pep:" "`414` for more information." msgstr "" -#: reference/lexical_analysis.rst:539 +#: reference/lexical_analysis.rst:564 msgid "" "A string literal with ``'f'`` or ``'F'`` in its prefix is a :dfn:`formatted " "string literal`; see :ref:`f-strings`. The ``'f'`` may be combined with " @@ -667,7 +707,7 @@ msgid "" "are possible, but formatted bytes literals are not." msgstr "" -#: reference/lexical_analysis.rst:544 +#: reference/lexical_analysis.rst:569 msgid "" "In triple-quoted literals, unescaped newlines and quotes are allowed (and " "are retained), except that three unescaped quotes in a row terminate the " @@ -675,250 +715,250 @@ msgid "" "either ``'`` or ``\"``.)" msgstr "" -#: reference/lexical_analysis.rst:567 +#: reference/lexical_analysis.rst:592 msgid "Escape sequences" msgstr "" -#: reference/lexical_analysis.rst:569 +#: reference/lexical_analysis.rst:594 msgid "" "Unless an ``'r'`` or ``'R'`` prefix is present, escape sequences in string " "and bytes literals are interpreted according to rules similar to those used " "by Standard C. The recognized escape sequences are:" msgstr "" -#: reference/lexical_analysis.rst:574 reference/lexical_analysis.rst:607 +#: reference/lexical_analysis.rst:599 reference/lexical_analysis.rst:632 msgid "Escape Sequence" msgstr "" -#: reference/lexical_analysis.rst:574 reference/lexical_analysis.rst:607 +#: reference/lexical_analysis.rst:599 reference/lexical_analysis.rst:632 msgid "Meaning" msgstr "" -#: reference/lexical_analysis.rst:574 reference/lexical_analysis.rst:607 +#: reference/lexical_analysis.rst:599 reference/lexical_analysis.rst:632 msgid "Notes" msgstr "" -#: reference/lexical_analysis.rst:576 +#: reference/lexical_analysis.rst:601 msgid "``\\``\\ " msgstr "" -#: reference/lexical_analysis.rst:576 +#: reference/lexical_analysis.rst:601 msgid "Backslash and newline ignored" msgstr "" -#: reference/lexical_analysis.rst:576 +#: reference/lexical_analysis.rst:601 msgid "\\(1)" msgstr "" -#: reference/lexical_analysis.rst:578 +#: reference/lexical_analysis.rst:603 msgid "``\\\\``" msgstr "" -#: reference/lexical_analysis.rst:578 +#: reference/lexical_analysis.rst:603 msgid "Backslash (``\\``)" msgstr "" -#: reference/lexical_analysis.rst:580 +#: reference/lexical_analysis.rst:605 msgid "``\\'``" msgstr "" -#: reference/lexical_analysis.rst:580 +#: reference/lexical_analysis.rst:605 msgid "Single quote (``'``)" msgstr "" -#: reference/lexical_analysis.rst:582 +#: reference/lexical_analysis.rst:607 msgid "``\\\"``" msgstr "" -#: reference/lexical_analysis.rst:582 +#: reference/lexical_analysis.rst:607 msgid "Double quote (``\"``)" msgstr "" -#: reference/lexical_analysis.rst:584 +#: reference/lexical_analysis.rst:609 msgid "``\\a``" msgstr "" -#: reference/lexical_analysis.rst:584 +#: reference/lexical_analysis.rst:609 msgid "ASCII Bell (BEL)" msgstr "" -#: reference/lexical_analysis.rst:586 +#: reference/lexical_analysis.rst:611 msgid "``\\b``" msgstr "" -#: reference/lexical_analysis.rst:586 +#: reference/lexical_analysis.rst:611 msgid "ASCII Backspace (BS)" msgstr "" -#: reference/lexical_analysis.rst:588 +#: reference/lexical_analysis.rst:613 msgid "``\\f``" msgstr "" -#: reference/lexical_analysis.rst:588 +#: reference/lexical_analysis.rst:613 msgid "ASCII Formfeed (FF)" msgstr "" -#: reference/lexical_analysis.rst:590 +#: reference/lexical_analysis.rst:615 msgid "``\\n``" msgstr "" -#: reference/lexical_analysis.rst:590 +#: reference/lexical_analysis.rst:615 msgid "ASCII Linefeed (LF)" msgstr "" -#: reference/lexical_analysis.rst:592 +#: reference/lexical_analysis.rst:617 msgid "``\\r``" msgstr "" -#: reference/lexical_analysis.rst:592 +#: reference/lexical_analysis.rst:617 msgid "ASCII Carriage Return (CR)" msgstr "" -#: reference/lexical_analysis.rst:594 +#: reference/lexical_analysis.rst:619 msgid "``\\t``" msgstr "" -#: reference/lexical_analysis.rst:594 +#: reference/lexical_analysis.rst:619 msgid "ASCII Horizontal Tab (TAB)" msgstr "" -#: reference/lexical_analysis.rst:596 +#: reference/lexical_analysis.rst:621 msgid "``\\v``" msgstr "" -#: reference/lexical_analysis.rst:596 +#: reference/lexical_analysis.rst:621 msgid "ASCII Vertical Tab (VT)" msgstr "" -#: reference/lexical_analysis.rst:598 +#: reference/lexical_analysis.rst:623 msgid ":samp:`\\\\\\\\{ooo}`" msgstr "" -#: reference/lexical_analysis.rst:598 +#: reference/lexical_analysis.rst:623 msgid "Character with octal value *ooo*" msgstr "" -#: reference/lexical_analysis.rst:598 +#: reference/lexical_analysis.rst:623 msgid "(2,4)" msgstr "" -#: reference/lexical_analysis.rst:601 +#: reference/lexical_analysis.rst:626 msgid ":samp:`\\\\x{hh}`" msgstr "" -#: reference/lexical_analysis.rst:601 +#: reference/lexical_analysis.rst:626 msgid "Character with hex value *hh*" msgstr "" -#: reference/lexical_analysis.rst:601 +#: reference/lexical_analysis.rst:626 msgid "(3,4)" msgstr "" -#: reference/lexical_analysis.rst:604 +#: reference/lexical_analysis.rst:629 msgid "Escape sequences only recognized in string literals are:" msgstr "" -#: reference/lexical_analysis.rst:609 +#: reference/lexical_analysis.rst:634 msgid ":samp:`\\\\N\\\\{{name}\\\\}`" msgstr "" -#: reference/lexical_analysis.rst:609 +#: reference/lexical_analysis.rst:634 msgid "Character named *name* in the Unicode database" msgstr "" -#: reference/lexical_analysis.rst:609 +#: reference/lexical_analysis.rst:634 msgid "\\(5)" msgstr "" -#: reference/lexical_analysis.rst:612 +#: reference/lexical_analysis.rst:637 msgid ":samp:`\\\\u{xxxx}`" msgstr "" -#: reference/lexical_analysis.rst:612 +#: reference/lexical_analysis.rst:637 msgid "Character with 16-bit hex value *xxxx*" msgstr "" -#: reference/lexical_analysis.rst:612 +#: reference/lexical_analysis.rst:637 msgid "\\(6)" msgstr "" -#: reference/lexical_analysis.rst:615 +#: reference/lexical_analysis.rst:640 msgid ":samp:`\\\\U{xxxxxxxx}`" msgstr "" -#: reference/lexical_analysis.rst:615 +#: reference/lexical_analysis.rst:640 msgid "Character with 32-bit hex value *xxxxxxxx*" msgstr "" -#: reference/lexical_analysis.rst:615 +#: reference/lexical_analysis.rst:640 msgid "\\(7)" msgstr "" -#: reference/lexical_analysis.rst:619 +#: reference/lexical_analysis.rst:644 msgid "Notes:" msgstr "" -#: reference/lexical_analysis.rst:622 +#: reference/lexical_analysis.rst:647 msgid "A backslash can be added at the end of a line to ignore the newline::" msgstr "" -#: reference/lexical_analysis.rst:624 +#: reference/lexical_analysis.rst:649 msgid "" ">>> 'This string will not include \\\n" "... backslashes or newline characters.'\n" "'This string will not include backslashes or newline characters.'" msgstr "" -#: reference/lexical_analysis.rst:628 +#: reference/lexical_analysis.rst:653 msgid "" "The same result can be achieved using :ref:`triple-quoted strings " "`, or parentheses and :ref:`string literal concatenation `." msgstr "" -#: reference/lexical_analysis.rst:633 +#: reference/lexical_analysis.rst:658 msgid "As in Standard C, up to three octal digits are accepted." msgstr "" -#: reference/lexical_analysis.rst:635 +#: reference/lexical_analysis.rst:660 msgid "" "Octal escapes with value larger than ``0o377`` produce a :exc:" "`DeprecationWarning`." msgstr "" -#: reference/lexical_analysis.rst:639 +#: reference/lexical_analysis.rst:664 msgid "" "Octal escapes with value larger than ``0o377`` produce a :exc:" "`SyntaxWarning`. In a future Python version they will be eventually a :exc:" "`SyntaxError`." msgstr "" -#: reference/lexical_analysis.rst:645 +#: reference/lexical_analysis.rst:670 msgid "Unlike in Standard C, exactly two hex digits are required." msgstr "" -#: reference/lexical_analysis.rst:648 +#: reference/lexical_analysis.rst:673 msgid "" "In a bytes literal, hexadecimal and octal escapes denote the byte with the " "given value. In a string literal, these escapes denote a Unicode character " "with the given value." msgstr "" -#: reference/lexical_analysis.rst:653 +#: reference/lexical_analysis.rst:678 msgid "Support for name aliases [#]_ has been added." msgstr "" -#: reference/lexical_analysis.rst:657 +#: reference/lexical_analysis.rst:682 msgid "Exactly four hex digits are required." msgstr "" -#: reference/lexical_analysis.rst:660 +#: reference/lexical_analysis.rst:685 msgid "" "Any Unicode character can be encoded this way. Exactly eight hex digits are " "required." msgstr "" -#: reference/lexical_analysis.rst:666 +#: reference/lexical_analysis.rst:691 msgid "" "Unlike Standard C, all unrecognized escape sequences are left in the string " "unchanged, i.e., *the backslash is left in the result*. (This behavior is " @@ -928,17 +968,17 @@ msgid "" "category of unrecognized escapes for bytes literals." msgstr "" -#: reference/lexical_analysis.rst:673 +#: reference/lexical_analysis.rst:698 msgid "Unrecognized escape sequences produce a :exc:`DeprecationWarning`." msgstr "" -#: reference/lexical_analysis.rst:676 +#: reference/lexical_analysis.rst:701 msgid "" "Unrecognized escape sequences produce a :exc:`SyntaxWarning`. In a future " "Python version they will be eventually a :exc:`SyntaxError`." msgstr "" -#: reference/lexical_analysis.rst:680 +#: reference/lexical_analysis.rst:705 msgid "" "Even in a raw literal, quotes can be escaped with a backslash, but the " "backslash remains in the result; for example, ``r\"\\\"\"`` is a valid " @@ -951,11 +991,11 @@ msgid "" "continuation." msgstr "" -#: reference/lexical_analysis.rst:693 +#: reference/lexical_analysis.rst:718 msgid "String literal concatenation" msgstr "" -#: reference/lexical_analysis.rst:695 +#: reference/lexical_analysis.rst:720 msgid "" "Multiple adjacent string or bytes literals (delimited by whitespace), " "possibly using different quoting conventions, are allowed, and their meaning " @@ -965,14 +1005,14 @@ msgid "" "lines, or even to add comments to parts of strings, for example::" msgstr "" -#: reference/lexical_analysis.rst:702 +#: reference/lexical_analysis.rst:727 msgid "" "re.compile(\"[A-Za-z_]\" # letter or underscore\n" " \"[A-Za-z0-9_]*\" # letter, digit or underscore\n" " )" msgstr "" -#: reference/lexical_analysis.rst:706 +#: reference/lexical_analysis.rst:731 msgid "" "Note that this feature is defined at the syntactical level, but implemented " "at compile time. The '+' operator must be used to concatenate string " @@ -982,11 +1022,11 @@ msgid "" "with plain string literals." msgstr "" -#: reference/lexical_analysis.rst:729 +#: reference/lexical_analysis.rst:754 msgid "f-strings" msgstr "" -#: reference/lexical_analysis.rst:733 +#: reference/lexical_analysis.rst:758 msgid "" "A :dfn:`formatted string literal` or :dfn:`f-string` is a string literal " "that is prefixed with ``'f'`` or ``'F'``. These strings may contain " @@ -995,14 +1035,14 @@ msgid "" "are really expressions evaluated at run time." msgstr "" -#: reference/lexical_analysis.rst:739 +#: reference/lexical_analysis.rst:764 msgid "" "Escape sequences are decoded like in ordinary string literals (except when a " "literal is also marked as a raw string). After decoding, the grammar for " "the contents of the string is:" msgstr "" -#: reference/lexical_analysis.rst:753 +#: reference/lexical_analysis.rst:778 msgid "" "The parts of the string outside curly braces are treated literally, except " "that any doubled curly braces ``'{{'`` or ``'}}'`` are replaced with the " @@ -1015,7 +1055,7 @@ msgid "" "replacement field ends with a closing curly bracket ``'}'``." msgstr "" -#: reference/lexical_analysis.rst:763 +#: reference/lexical_analysis.rst:788 msgid "" "Expressions in formatted string literals are treated like regular Python " "expressions surrounded by parentheses, with a few exceptions. An empty " @@ -1029,27 +1069,27 @@ msgid "" "replacement fields must be closed in a different line." msgstr "" -#: reference/lexical_analysis.rst:774 +#: reference/lexical_analysis.rst:799 msgid "" ">>> f\"abc{a # This is a comment }\"\n" "... + 3}\"\n" "'abc5'" msgstr "" -#: reference/lexical_analysis.rst:780 +#: reference/lexical_analysis.rst:805 msgid "" "Prior to Python 3.7, an :keyword:`await` expression and comprehensions " "containing an :keyword:`async for` clause were illegal in the expressions in " "formatted string literals due to a problem with the implementation." msgstr "" -#: reference/lexical_analysis.rst:785 +#: reference/lexical_analysis.rst:810 msgid "" "Prior to Python 3.12, comments were not allowed inside f-string replacement " "fields." msgstr "" -#: reference/lexical_analysis.rst:789 +#: reference/lexical_analysis.rst:814 msgid "" "When the equal sign ``'='`` is provided, the output will have the expression " "text, the ``'='`` and the evaluated value. Spaces after the opening brace " @@ -1060,18 +1100,18 @@ msgid "" "r'`` is declared." msgstr "" -#: reference/lexical_analysis.rst:797 +#: reference/lexical_analysis.rst:822 msgid "The equal sign ``'='``." msgstr "" -#: reference/lexical_analysis.rst:800 +#: reference/lexical_analysis.rst:825 msgid "" "If a conversion is specified, the result of evaluating the expression is " "converted before formatting. Conversion ``'!s'`` calls :func:`str` on the " "result, ``'!r'`` calls :func:`repr`, and ``'!a'`` calls :func:`ascii`." msgstr "" -#: reference/lexical_analysis.rst:804 +#: reference/lexical_analysis.rst:829 msgid "" "The result is then formatted using the :func:`format` protocol. The format " "specifier is passed to the :meth:`~object.__format__` method of the " @@ -1080,7 +1120,7 @@ msgid "" "value of the whole string." msgstr "" -#: reference/lexical_analysis.rst:810 +#: reference/lexical_analysis.rst:835 msgid "" "Top-level format specifiers may include nested replacement fields. These " "nested fields may include their own conversion fields and :ref:`format " @@ -1089,17 +1129,17 @@ msgid "" "as that used by the :meth:`str.format` method." msgstr "" -#: reference/lexical_analysis.rst:816 +#: reference/lexical_analysis.rst:841 msgid "" "Formatted string literals may be concatenated, but replacement fields cannot " "be split across literals." msgstr "" -#: reference/lexical_analysis.rst:819 +#: reference/lexical_analysis.rst:844 msgid "Some examples of formatted string literals::" msgstr "" -#: reference/lexical_analysis.rst:821 +#: reference/lexical_analysis.rst:846 msgid "" ">>> name = \"Fred\"\n" ">>> f\"He said his name is {name!r}.\"\n" @@ -1131,32 +1171,32 @@ msgid "" "'line = \"The mill\\'s closed\" '" msgstr "" -#: reference/lexical_analysis.rst:851 +#: reference/lexical_analysis.rst:876 msgid "" "Reusing the outer f-string quoting type inside a replacement field is " "permitted::" msgstr "" -#: reference/lexical_analysis.rst:854 +#: reference/lexical_analysis.rst:879 msgid "" ">>> a = dict(x=2)\n" ">>> f\"abc {a[\"x\"]} def\"\n" "'abc 2 def'" msgstr "" -#: reference/lexical_analysis.rst:858 +#: reference/lexical_analysis.rst:883 msgid "" "Prior to Python 3.12, reuse of the same quoting type of the outer f-string " "inside a replacement field was not possible." msgstr "" -#: reference/lexical_analysis.rst:862 +#: reference/lexical_analysis.rst:887 msgid "" "Backslashes are also allowed in replacement fields and are evaluated the " "same way as in any other context::" msgstr "" -#: reference/lexical_analysis.rst:865 +#: reference/lexical_analysis.rst:890 msgid "" ">>> a = [\"a\", \"b\", \"c\"]\n" ">>> print(f\"List a contains:\\n{\"\\n\".join(a)}\")\n" @@ -1166,19 +1206,19 @@ msgid "" "c" msgstr "" -#: reference/lexical_analysis.rst:872 +#: reference/lexical_analysis.rst:897 msgid "" "Prior to Python 3.12, backslashes were not permitted inside an f-string " "replacement field." msgstr "" -#: reference/lexical_analysis.rst:876 +#: reference/lexical_analysis.rst:901 msgid "" "Formatted string literals cannot be used as docstrings, even if they do not " "include expressions." msgstr "" -#: reference/lexical_analysis.rst:881 +#: reference/lexical_analysis.rst:906 msgid "" ">>> def foo():\n" "... f\"Not a docstring\"\n" @@ -1187,144 +1227,315 @@ msgid "" "True" msgstr "" -#: reference/lexical_analysis.rst:887 +#: reference/lexical_analysis.rst:912 msgid "" "See also :pep:`498` for the proposal that added formatted string literals, " "and :meth:`str.format`, which uses a related format string mechanism." msgstr "" -#: reference/lexical_analysis.rst:894 +#: reference/lexical_analysis.rst:919 msgid "Numeric literals" msgstr "" -#: reference/lexical_analysis.rst:900 +#: reference/lexical_analysis.rst:925 +msgid "" +":data:`~token.NUMBER` tokens represent numeric literals, of which there are " +"three types: integers, floating-point numbers, and imaginary numbers." +msgstr "" + +#: reference/lexical_analysis.rst:933 msgid "" -"There are three types of numeric literals: integers, floating-point numbers, " -"and imaginary numbers. There are no complex literals (complex numbers can " -"be formed by adding a real number and an imaginary number)." +"The numeric value of a numeric literal is the same as if it were passed as a " +"string to the :class:`int`, :class:`float` or :class:`complex` class " +"constructor, respectively. Note that not all valid inputs for those " +"constructors are also valid literals." msgstr "" -#: reference/lexical_analysis.rst:904 +#: reference/lexical_analysis.rst:938 msgid "" -"Note that numeric literals do not include a sign; a phrase like ``-1`` is " -"actually an expression composed of the unary operator '``-``' and the " -"literal ``1``." +"Numeric literals do not include a sign; a phrase like ``-1`` is actually an " +"expression composed of the unary operator '``-``' and the literal ``1``." msgstr "" -#: reference/lexical_analysis.rst:918 +#: reference/lexical_analysis.rst:952 msgid "Integer literals" msgstr "" -#: reference/lexical_analysis.rst:920 -msgid "Integer literals are described by the following lexical definitions:" +#: reference/lexical_analysis.rst:954 +msgid "Integer literals denote whole numbers. For example::" msgstr "" -#: reference/lexical_analysis.rst:934 +#: reference/lexical_analysis.rst:956 +msgid "" +"7\n" +"3\n" +"2147483647" +msgstr "" + +#: reference/lexical_analysis.rst:960 msgid "" "There is no limit for the length of integer literals apart from what can be " -"stored in available memory." +"stored in available memory::" +msgstr "" + +#: reference/lexical_analysis.rst:963 +msgid "7922816251426433759354395033679228162514264337593543950336" +msgstr "" + +#: reference/lexical_analysis.rst:965 +msgid "" +"Underscores can be used to group digits for enhanced readability, and are " +"ignored for determining the numeric value of the literal. For example, the " +"following literals are equivalent::" +msgstr "" + +#: reference/lexical_analysis.rst:969 +msgid "" +"100_000_000_000\n" +"100000000000\n" +"1_00_00_00_00_000" +msgstr "" + +#: reference/lexical_analysis.rst:973 +msgid "" +"Underscores can only occur between digits. For example, ``_123``, ``321_``, " +"and ``123__321`` are *not* valid literals." +msgstr "" + +#: reference/lexical_analysis.rst:976 +msgid "" +"Integers can be specified in binary (base 2), octal (base 8), or hexadecimal " +"(base 16) using the prefixes ``0b``, ``0o`` and ``0x``, respectively. " +"Hexadecimal digits 10 through 15 are represented by letters ``A``-``F``, " +"case-insensitive. For example::" msgstr "" -#: reference/lexical_analysis.rst:937 +#: reference/lexical_analysis.rst:981 msgid "" -"Underscores are ignored for determining the numeric value of the literal. " -"They can be used to group digits for enhanced readability. One underscore " -"can occur between digits, and after base specifiers like ``0x``." +"0b100110111\n" +"0b_1110_0101\n" +"0o177\n" +"0o377\n" +"0xdeadbeef\n" +"0xDead_Beef" msgstr "" -#: reference/lexical_analysis.rst:941 +#: reference/lexical_analysis.rst:988 msgid "" -"Note that leading zeros in a non-zero decimal number are not allowed. This " -"is for disambiguation with C-style octal literals, which Python used before " -"version 3.0." +"An underscore can follow the base specifier. For example, ``0x_1f`` is a " +"valid literal, but ``0_x1f`` and ``0x__1f`` are not." msgstr "" -#: reference/lexical_analysis.rst:945 -msgid "Some examples of integer literals::" +#: reference/lexical_analysis.rst:992 +msgid "" +"Leading zeros in a non-zero decimal number are not allowed. For example, " +"``0123`` is not a valid literal. This is for disambiguation with C-style " +"octal literals, which Python used before version 3.0." msgstr "" -#: reference/lexical_analysis.rst:947 +#: reference/lexical_analysis.rst:997 msgid "" -"7 2147483647 0o177 0b100110111\n" -"3 79228162514264337593543950336 0o377 0xdeadbeef\n" -" 100_000_000_000 0b_1110_0101" +"Formally, integer literals are described by the following lexical " +"definitions:" msgstr "" -#: reference/lexical_analysis.rst:951 reference/lexical_analysis.rst:983 +#: reference/lexical_analysis.rst:1014 reference/lexical_analysis.rst:1078 msgid "Underscores are now allowed for grouping purposes in literals." msgstr "" -#: reference/lexical_analysis.rst:962 +#: reference/lexical_analysis.rst:1025 msgid "Floating-point literals" msgstr "" -#: reference/lexical_analysis.rst:964 +#: reference/lexical_analysis.rst:1027 msgid "" -"Floating-point literals are described by the following lexical definitions:" +"Floating-point (float) literals, such as ``3.14`` or ``1.5``, denote :ref:" +"`approximations of real numbers `." msgstr "" -#: reference/lexical_analysis.rst:974 +#: reference/lexical_analysis.rst:1030 msgid "" -"Note that the integer and exponent parts are always interpreted using radix " -"10. For example, ``077e010`` is legal, and denotes the same number as " -"``77e10``. The allowed range of floating-point literals is implementation-" -"dependent. As in integer literals, underscores are supported for digit " -"grouping." +"They consist of *integer* and *fraction* parts, each composed of decimal " +"digits. The parts are separated by a decimal point, ``.``::" msgstr "" -#: reference/lexical_analysis.rst:979 -msgid "Some examples of floating-point literals::" +#: reference/lexical_analysis.rst:1033 +msgid "" +"2.71828\n" +"4.0" msgstr "" -#: reference/lexical_analysis.rst:981 -msgid "3.14 10. .001 1e100 3.14e-10 0e0 3.14_15_93" +#: reference/lexical_analysis.rst:1036 +msgid "" +"Unlike in integer literals, leading zeros are allowed in the numeric parts. " +"For example, ``077.010`` is legal, and denotes the same number as ``77.10``." msgstr "" -#: reference/lexical_analysis.rst:992 +#: reference/lexical_analysis.rst:1039 +msgid "" +"As in integer literals, single underscores may occur between digits to help " +"readability::" +msgstr "" + +#: reference/lexical_analysis.rst:1042 +msgid "" +"96_485.332_123\n" +"3.14_15_93" +msgstr "" + +#: reference/lexical_analysis.rst:1045 +msgid "Either of these parts, but not both, can be empty. For example::" +msgstr "" + +#: reference/lexical_analysis.rst:1047 +msgid "" +"10. # (equivalent to 10.0)\n" +".001 # (equivalent to 0.001)" +msgstr "" + +#: reference/lexical_analysis.rst:1050 +msgid "" +"Optionally, the integer and fraction may be followed by an *exponent*: the " +"letter ``e`` or ``E``, followed by an optional sign, ``+`` or ``-``, and a " +"number in the same format as the integer and fraction parts. The ``e`` or " +"``E`` represents \"times ten raised to the power of\"::" +msgstr "" + +#: reference/lexical_analysis.rst:1055 +msgid "" +"1.0e3 # (represents 1.0×10³, or 1000.0)\n" +"1.166e-5 # (represents 1.166×10⁻⁵, or 0.00001166)\n" +"6.02214076e+23 # (represents 6.02214076×10²³, or 602214076000000000000000.)" +msgstr "" + +#: reference/lexical_analysis.rst:1059 +msgid "" +"In floats with only integer and exponent parts, the decimal point may be " +"omitted::" +msgstr "" + +#: reference/lexical_analysis.rst:1062 +msgid "" +"1e3 # (equivalent to 1.e3 and 1.0e3)\n" +"0e0 # (equivalent to 0.)" +msgstr "" + +#: reference/lexical_analysis.rst:1065 +msgid "" +"Formally, floating-point literals are described by the following lexical " +"definitions:" +msgstr "" + +#: reference/lexical_analysis.rst:1087 msgid "Imaginary literals" msgstr "" -#: reference/lexical_analysis.rst:994 -msgid "Imaginary literals are described by the following lexical definitions:" +#: reference/lexical_analysis.rst:1089 +msgid "" +"Python has :ref:`complex number ` objects, but no complex " +"literals. Instead, *imaginary literals* denote complex numbers with a zero " +"real part." +msgstr "" + +#: reference/lexical_analysis.rst:1094 +msgid "" +"For example, in math, the complex number 3+4.2\\ *i* is written as the real " +"number 3 added to the imaginary number 4.2\\ *i*. Python uses a similar " +"syntax, except the imaginary unit is written as ``j`` rather than *i*::" +msgstr "" + +#: reference/lexical_analysis.rst:1099 +msgid "3+4.2j" +msgstr "" + +#: reference/lexical_analysis.rst:1101 +msgid "" +"This is an expression composed of the :ref:`integer literal ` " +"``3``, the :ref:`operator ` '``+``', and the :ref:`imaginary " +"literal ` ``4.2j``. Since these are three separate tokens, " +"whitespace is allowed between them::" +msgstr "" + +#: reference/lexical_analysis.rst:1107 +msgid "3 + 4.2j" msgstr "" -#: reference/lexical_analysis.rst:999 +#: reference/lexical_analysis.rst:1109 msgid "" -"An imaginary literal yields a complex number with a real part of 0.0. " -"Complex numbers are represented as a pair of floating-point numbers and have " -"the same restrictions on their range. To create a complex number with a " -"nonzero real part, add a floating-point number to it, e.g., ``(3+4j)``. " -"Some examples of imaginary literals::" +"No whitespace is allowed *within* each token. In particular, the ``j`` " +"suffix, may not be separated from the number before it." msgstr "" -#: reference/lexical_analysis.rst:1005 -msgid "3.14j 10.j 10j .001j 1e100j 3.14e-10j 3.14_15_93j" +#: reference/lexical_analysis.rst:1113 +msgid "" +"The number before the ``j`` has the same syntax as a floating-point literal. " +"Thus, the following are valid imaginary literals::" msgstr "" -#: reference/lexical_analysis.rst:1011 +#: reference/lexical_analysis.rst:1116 +msgid "" +"4.2j\n" +"3.14j\n" +"10.j\n" +".001j\n" +"1e100j\n" +"3.14e-10j\n" +"3.14_15_93j" +msgstr "" + +#: reference/lexical_analysis.rst:1124 +msgid "" +"Unlike in a floating-point literal the decimal point can be omitted if the " +"imaginary number only has an integer part. The number is still evaluated as " +"a floating-point number, not an integer::" +msgstr "" + +#: reference/lexical_analysis.rst:1128 +msgid "" +"10j\n" +"0j\n" +"1000000000000000000000000j # equivalent to 1e+24j" +msgstr "" + +#: reference/lexical_analysis.rst:1132 +msgid "" +"The ``j`` suffix is case-insensitive. That means you can use ``J`` instead::" +msgstr "" + +#: reference/lexical_analysis.rst:1135 +msgid "3.14J # equivalent to 3.14j" +msgstr "" + +#: reference/lexical_analysis.rst:1137 +msgid "" +"Formally, imaginary literals are described by the following lexical " +"definition:" +msgstr "" + +#: reference/lexical_analysis.rst:1148 msgid "Operators" msgstr "" -#: reference/lexical_analysis.rst:1015 +#: reference/lexical_analysis.rst:1152 msgid "The following tokens are operators:" msgstr "" -#: reference/lexical_analysis.rst:1017 +#: reference/lexical_analysis.rst:1154 msgid "" "+ - * ** / // % @\n" "<< >> & | ^ ~ :=\n" "< > <= >= == !=" msgstr "" -#: reference/lexical_analysis.rst:1028 +#: reference/lexical_analysis.rst:1165 msgid "Delimiters" msgstr "" -#: reference/lexical_analysis.rst:1032 +#: reference/lexical_analysis.rst:1169 msgid "The following tokens serve as delimiters in the grammar:" msgstr "" -#: reference/lexical_analysis.rst:1034 +#: reference/lexical_analysis.rst:1171 msgid "" "( ) [ ] { }\n" ", : ! . ; @ =\n" @@ -1332,7 +1543,7 @@ msgid "" "@= &= |= ^= >>= <<= **=" msgstr "" -#: reference/lexical_analysis.rst:1041 +#: reference/lexical_analysis.rst:1178 msgid "" "The period can also occur in floating-point and imaginary literals. A " "sequence of three periods has a special meaning as an ellipsis literal. The " @@ -1340,31 +1551,31 @@ msgid "" "as delimiters, but also perform an operation." msgstr "" -#: reference/lexical_analysis.rst:1046 +#: reference/lexical_analysis.rst:1183 msgid "" "The following printing ASCII characters have special meaning as part of " "other tokens or are otherwise significant to the lexical analyzer:" msgstr "" -#: reference/lexical_analysis.rst:1049 +#: reference/lexical_analysis.rst:1186 msgid "' \" # \\" msgstr "" -#: reference/lexical_analysis.rst:1053 +#: reference/lexical_analysis.rst:1190 msgid "" "The following printing ASCII characters are not used in Python. Their " "occurrence outside string literals and comments is an unconditional error:" msgstr "" -#: reference/lexical_analysis.rst:1056 +#: reference/lexical_analysis.rst:1193 msgid "$ ? `" msgstr "" -#: reference/lexical_analysis.rst:1062 +#: reference/lexical_analysis.rst:1199 msgid "Footnotes" msgstr "" -#: reference/lexical_analysis.rst:1063 +#: reference/lexical_analysis.rst:1200 msgid "https://www.unicode.org/Public/16.0.0/ucd/NameAliases.txt" msgstr "" @@ -1389,7 +1600,7 @@ msgid "logical line" msgstr "" #: reference/lexical_analysis.rst:36 reference/lexical_analysis.rst:115 -#: reference/lexical_analysis.rst:548 +#: reference/lexical_analysis.rst:573 msgid "physical line" msgstr "" @@ -1477,307 +1688,307 @@ msgstr "" msgid "name" msgstr "" -#: reference/lexical_analysis.rst:350 reference/lexical_analysis.rst:374 +#: reference/lexical_analysis.rst:373 reference/lexical_analysis.rst:397 msgid "keyword" msgstr "" -#: reference/lexical_analysis.rst:350 +#: reference/lexical_analysis.rst:373 msgid "reserved word" msgstr "" -#: reference/lexical_analysis.rst:374 +#: reference/lexical_analysis.rst:397 msgid "soft keyword" msgstr "" -#: reference/lexical_analysis.rst:393 +#: reference/lexical_analysis.rst:417 msgid "_, identifiers" msgstr "" -#: reference/lexical_analysis.rst:393 +#: reference/lexical_analysis.rst:417 msgid "__, identifiers" msgstr "" -#: reference/lexical_analysis.rst:449 +#: reference/lexical_analysis.rst:473 msgid "literal" msgstr "" -#: reference/lexical_analysis.rst:449 +#: reference/lexical_analysis.rst:473 msgid "constant" msgstr "" -#: reference/lexical_analysis.rst:454 reference/lexical_analysis.rst:495 +#: reference/lexical_analysis.rst:478 reference/lexical_analysis.rst:520 msgid "string literal" msgstr "" -#: reference/lexical_analysis.rst:454 reference/lexical_analysis.rst:508 +#: reference/lexical_analysis.rst:478 reference/lexical_analysis.rst:533 msgid "bytes literal" msgstr "" -#: reference/lexical_analysis.rst:454 +#: reference/lexical_analysis.rst:478 msgid "ASCII" msgstr "" -#: reference/lexical_analysis.rst:454 +#: reference/lexical_analysis.rst:478 msgid "' (single quote)" msgstr "" -#: reference/lexical_analysis.rst:454 +#: reference/lexical_analysis.rst:478 msgid "\" (double quote)" msgstr "" -#: reference/lexical_analysis.rst:454 +#: reference/lexical_analysis.rst:478 msgid "u'" msgstr "" -#: reference/lexical_analysis.rst:454 +#: reference/lexical_analysis.rst:478 msgid "u\"" msgstr "" -#: reference/lexical_analysis.rst:495 +#: reference/lexical_analysis.rst:520 msgid "triple-quoted string" msgstr "" -#: reference/lexical_analysis.rst:495 +#: reference/lexical_analysis.rst:520 msgid "Unicode Consortium" msgstr "" -#: reference/lexical_analysis.rst:495 +#: reference/lexical_analysis.rst:520 msgid "raw string" msgstr "" -#: reference/lexical_analysis.rst:495 +#: reference/lexical_analysis.rst:520 msgid "\"\"\"" msgstr "" -#: reference/lexical_analysis.rst:495 +#: reference/lexical_analysis.rst:520 msgid "'''" msgstr "" -#: reference/lexical_analysis.rst:508 +#: reference/lexical_analysis.rst:533 msgid "b'" msgstr "" -#: reference/lexical_analysis.rst:508 +#: reference/lexical_analysis.rst:533 msgid "b\"" msgstr "" -#: reference/lexical_analysis.rst:517 +#: reference/lexical_analysis.rst:542 msgid "r'" msgstr "" -#: reference/lexical_analysis.rst:517 +#: reference/lexical_analysis.rst:542 msgid "raw string literal" msgstr "" -#: reference/lexical_analysis.rst:517 +#: reference/lexical_analysis.rst:542 msgid "r\"" msgstr "" -#: reference/lexical_analysis.rst:535 +#: reference/lexical_analysis.rst:560 msgid "f'" msgstr "" -#: reference/lexical_analysis.rst:535 reference/lexical_analysis.rst:713 +#: reference/lexical_analysis.rst:560 reference/lexical_analysis.rst:738 msgid "formatted string literal" msgstr "" -#: reference/lexical_analysis.rst:535 +#: reference/lexical_analysis.rst:560 msgid "f\"" msgstr "" -#: reference/lexical_analysis.rst:548 +#: reference/lexical_analysis.rst:573 msgid "escape sequence" msgstr "" -#: reference/lexical_analysis.rst:548 +#: reference/lexical_analysis.rst:573 msgid "Standard C" msgstr "" -#: reference/lexical_analysis.rst:548 +#: reference/lexical_analysis.rst:573 msgid "C" msgstr "" -#: reference/lexical_analysis.rst:548 +#: reference/lexical_analysis.rst:573 msgid "\\ (backslash)" msgstr "" -#: reference/lexical_analysis.rst:548 +#: reference/lexical_analysis.rst:573 msgid "\\\\" msgstr "" -#: reference/lexical_analysis.rst:548 +#: reference/lexical_analysis.rst:573 msgid "\\a" msgstr "" -#: reference/lexical_analysis.rst:548 +#: reference/lexical_analysis.rst:573 msgid "\\b" msgstr "" -#: reference/lexical_analysis.rst:548 +#: reference/lexical_analysis.rst:573 msgid "\\f" msgstr "" -#: reference/lexical_analysis.rst:548 +#: reference/lexical_analysis.rst:573 msgid "\\n" msgstr "" -#: reference/lexical_analysis.rst:548 +#: reference/lexical_analysis.rst:573 msgid "\\r" msgstr "" -#: reference/lexical_analysis.rst:548 +#: reference/lexical_analysis.rst:573 msgid "\\t" msgstr "" -#: reference/lexical_analysis.rst:548 +#: reference/lexical_analysis.rst:573 msgid "\\v" msgstr "" -#: reference/lexical_analysis.rst:548 +#: reference/lexical_analysis.rst:573 msgid "\\x" msgstr "" -#: reference/lexical_analysis.rst:548 +#: reference/lexical_analysis.rst:573 msgid "\\N" msgstr "" -#: reference/lexical_analysis.rst:548 +#: reference/lexical_analysis.rst:573 msgid "\\u" msgstr "" -#: reference/lexical_analysis.rst:548 +#: reference/lexical_analysis.rst:573 msgid "\\U" msgstr "" -#: reference/lexical_analysis.rst:664 +#: reference/lexical_analysis.rst:689 msgid "unrecognized escape sequence" msgstr "" -#: reference/lexical_analysis.rst:713 +#: reference/lexical_analysis.rst:738 msgid "interpolated string literal" msgstr "" -#: reference/lexical_analysis.rst:713 +#: reference/lexical_analysis.rst:738 msgid "string" msgstr "" -#: reference/lexical_analysis.rst:713 +#: reference/lexical_analysis.rst:738 msgid "formatted literal" msgstr "" -#: reference/lexical_analysis.rst:713 +#: reference/lexical_analysis.rst:738 msgid "interpolated literal" msgstr "" -#: reference/lexical_analysis.rst:713 +#: reference/lexical_analysis.rst:738 msgid "f-string" msgstr "" -#: reference/lexical_analysis.rst:713 +#: reference/lexical_analysis.rst:738 msgid "fstring" msgstr "" -#: reference/lexical_analysis.rst:713 +#: reference/lexical_analysis.rst:738 msgid "{} (curly brackets)" msgstr "" -#: reference/lexical_analysis.rst:713 +#: reference/lexical_analysis.rst:738 msgid "in formatted string literal" msgstr "" -#: reference/lexical_analysis.rst:713 +#: reference/lexical_analysis.rst:738 msgid "! (exclamation)" msgstr "" -#: reference/lexical_analysis.rst:713 +#: reference/lexical_analysis.rst:738 msgid ": (colon)" msgstr "" -#: reference/lexical_analysis.rst:713 +#: reference/lexical_analysis.rst:738 msgid "= (equals)" msgstr "" -#: reference/lexical_analysis.rst:713 +#: reference/lexical_analysis.rst:738 msgid "for help in debugging using string literals" msgstr "" -#: reference/lexical_analysis.rst:896 +#: reference/lexical_analysis.rst:921 msgid "number" msgstr "" -#: reference/lexical_analysis.rst:896 +#: reference/lexical_analysis.rst:921 msgid "numeric literal" msgstr "" -#: reference/lexical_analysis.rst:896 reference/lexical_analysis.rst:909 +#: reference/lexical_analysis.rst:921 reference/lexical_analysis.rst:943 msgid "integer literal" msgstr "" -#: reference/lexical_analysis.rst:896 +#: reference/lexical_analysis.rst:921 msgid "floating-point literal" msgstr "" -#: reference/lexical_analysis.rst:896 +#: reference/lexical_analysis.rst:921 msgid "hexadecimal literal" msgstr "" -#: reference/lexical_analysis.rst:896 +#: reference/lexical_analysis.rst:921 msgid "octal literal" msgstr "" -#: reference/lexical_analysis.rst:896 +#: reference/lexical_analysis.rst:921 msgid "binary literal" msgstr "" -#: reference/lexical_analysis.rst:896 +#: reference/lexical_analysis.rst:921 msgid "decimal literal" msgstr "" -#: reference/lexical_analysis.rst:896 +#: reference/lexical_analysis.rst:921 msgid "imaginary literal" msgstr "" -#: reference/lexical_analysis.rst:896 +#: reference/lexical_analysis.rst:921 msgid "complex literal" msgstr "" -#: reference/lexical_analysis.rst:909 +#: reference/lexical_analysis.rst:943 msgid "0b" msgstr "" -#: reference/lexical_analysis.rst:909 +#: reference/lexical_analysis.rst:943 msgid "0o" msgstr "" -#: reference/lexical_analysis.rst:909 +#: reference/lexical_analysis.rst:943 msgid "0x" msgstr "" -#: reference/lexical_analysis.rst:909 reference/lexical_analysis.rst:955 +#: reference/lexical_analysis.rst:943 reference/lexical_analysis.rst:1018 msgid "_ (underscore)" msgstr "" -#: reference/lexical_analysis.rst:909 reference/lexical_analysis.rst:955 -#: reference/lexical_analysis.rst:987 +#: reference/lexical_analysis.rst:943 reference/lexical_analysis.rst:1018 +#: reference/lexical_analysis.rst:1082 msgid "in numeric literal" msgstr "" -#: reference/lexical_analysis.rst:955 +#: reference/lexical_analysis.rst:1018 msgid ". (dot)" msgstr "" -#: reference/lexical_analysis.rst:955 +#: reference/lexical_analysis.rst:1018 msgid "e" msgstr "" -#: reference/lexical_analysis.rst:987 +#: reference/lexical_analysis.rst:1082 msgid "j" msgstr "" -#: reference/lexical_analysis.rst:1013 +#: reference/lexical_analysis.rst:1150 msgid "operators" msgstr "" -#: reference/lexical_analysis.rst:1030 +#: reference/lexical_analysis.rst:1167 msgid "delimiters" msgstr "" diff --git a/reference/simple_stmts.po b/reference/simple_stmts.po index 1d189089..63bb47b5 100644 --- a/reference/simple_stmts.po +++ b/reference/simple_stmts.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/reference/toplevel_components.po b/reference/toplevel_components.po index 92f2e6f3..f605736a 100644 --- a/reference/toplevel_components.po +++ b/reference/toplevel_components.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx.po b/sphinx.po index f92e05e1..59e49450 100644 --- a/sphinx.po +++ b/sphinx.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2024-05-08 09:17+0300\n" "Last-Translator: Panagiotis Skias \n" "Language-Team: PyGreece \n" @@ -27,23 +27,23 @@ msgid "In development" msgstr "Υπό ανάπτυξη" #: tools/templates/customsourcelink.html:3 -msgid "This Page" -msgstr "Αυτή η Σελίδα" +msgid "This page" +msgstr "Αυτή η σελίδα" #: tools/templates/customsourcelink.html:5 -msgid "Report a Bug" -msgstr "Ανέφερε ένα Bug" +msgid "Report a bug" +msgstr "Ανέφερε ένα bug" #: tools/templates/customsourcelink.html:8 -msgid "Show Source" -msgstr "Εμφάνιση Πηγής" +msgid "Show source" +msgstr "Εμφάνιση πηγαίου" #: tools/templates/download.html:2 tools/templates/indexsidebar.html:1 msgid "Download" msgstr "Κατεβάστε" #: tools/templates/download.html:30 -msgid "Download Python %(dl_version)s Documentation" +msgid "Download Python %(dl_version)s documentation" msgstr "Κατεβάστε την τεκμηρίωση της Python %(dl_version)s" #: tools/templates/download.html:32 @@ -467,8 +467,8 @@ msgid "Reporting issues" msgstr "Αναφορά ζητημάτων" #: tools/templates/indexcontent.html:75 -msgid "Contributing to Docs" -msgstr "Συμβολή στην Τεκμηρίωση" +msgid "Contributing to docs" +msgstr "Συμβολή στην τεκμηρίωση" #: tools/templates/indexcontent.html:76 msgid "Download the documentation" @@ -503,24 +503,24 @@ msgid "Other resources" msgstr "Άλλες πηγές" #: tools/templates/indexsidebar.html:12 -msgid "PEP Index" +msgid "PEP index" msgstr "Ευρετήριο PEP" #: tools/templates/indexsidebar.html:13 -msgid "Beginner's Guide" +msgid "Beginner's guide" msgstr "Οδηγός για αρχάριους" #: tools/templates/indexsidebar.html:14 -msgid "Book List" -msgstr "Λίστα Βιβλίων" +msgid "Book list" +msgstr "Λίστα βιβλίων" #: tools/templates/indexsidebar.html:15 -msgid "Audio/Visual Talks" -msgstr "Οπτικοακουστικές Ομιλίες" +msgid "Audio/visual talks" +msgstr "Οπτικοακουστικές ομιλίες" #: tools/templates/indexsidebar.html:16 -msgid "Python Developer’s Guide" -msgstr "Οδηγός Προγραμματιστή Python" +msgid "Python developer’s guide" +msgstr "Οδηγός προγραμματιστή Python" #: tools/templates/layout.html:6 msgid "" diff --git a/tutorial/appendix.po b/tutorial/appendix.po index 460b1fa4..e65836f3 100644 --- a/tutorial/appendix.po +++ b/tutorial/appendix.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2024-05-03 22:21+0300\n" "Last-Translator: Panagiotis Skias \n" "Language-Team: PyGreece \n" diff --git a/tutorial/appetite.po b/tutorial/appetite.po index 7b385225..2521fea3 100644 --- a/tutorial/appetite.po +++ b/tutorial/appetite.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2024-08-02 13:10+0300\n" "Last-Translator: Panagiotis Skias \n" "Language-Team: LANGUAGE \n" diff --git a/tutorial/classes.po b/tutorial/classes.po index 9ce24ab7..b0412875 100644 --- a/tutorial/classes.po +++ b/tutorial/classes.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-13 19:53+0200\n" "Last-Translator: Anastasios Louka \n" "Language-Team: PyGreece \n" diff --git a/tutorial/controlflow.po b/tutorial/controlflow.po index 33ff5adb..2b7e096e 100644 --- a/tutorial/controlflow.po +++ b/tutorial/controlflow.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2024-09-30 23:13+0300\n" "Last-Translator: Panagiotis Skias \n" "Language-Team: PyGreece \n" @@ -2221,13 +2221,15 @@ msgstr "" #: tutorial/controlflow.rst:1001 msgid "" "The above example uses a lambda expression to return a function. Another " -"use is to pass a small function as an argument::" +"use is to pass a small function as an argument. For instance, :meth:`list." +"sort` takes a sorting key function *key* which can be a lambda function::" msgstr "" "Το παραπάνω παράδειγμα χρησιμοποιεί μια έκφραση lambda για να επιστρέψει μια " "συνάρτηση. Μια άλλη χρήση είναι η μετάδοση μιας μικρής συνάρτησης ως " -"όρισμα::" +"όρισμα. Για παράδειγμα, η :meth:`list.sort` δέχεται μια συνάρτηση " +"ταξινόμησης κλειδιού *key* η οποία μπορεί να είναι μια συνάρτηση lambda::" -#: tutorial/controlflow.rst:1004 +#: tutorial/controlflow.rst:1005 msgid "" ">>> pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]\n" ">>> pairs.sort(key=lambda pair: pair[1])\n" @@ -2239,11 +2241,11 @@ msgstr "" ">>> pairs\n" "[(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')]" -#: tutorial/controlflow.rst:1013 +#: tutorial/controlflow.rst:1014 msgid "Documentation Strings" msgstr "Συμβολοσειρές Τεκμηρίωσης" -#: tutorial/controlflow.rst:1020 +#: tutorial/controlflow.rst:1021 msgid "" "Here are some conventions about the content and formatting of documentation " "strings." @@ -2251,7 +2253,7 @@ msgstr "" "Ακολουθούν ορισμένες συμβάσεις σχετικά με το περιεχόμενο και τη μορφοποίηση " "των συμβολοσειρών τεκμηρίωσης." -#: tutorial/controlflow.rst:1023 +#: tutorial/controlflow.rst:1024 msgid "" "The first line should always be a short, concise summary of the object's " "purpose. For brevity, it should not explicitly state the object's name or " @@ -2265,7 +2267,7 @@ msgstr "" "εάν το όνομα είναι ρήμα που περιγράφει τη λειτουργία της συνάρτησης). Αυτή " "η γραμμή πρέπει να ξεκινά με κεφαλαίο γράμμα και να τελειώνει με τελεία." -#: tutorial/controlflow.rst:1029 +#: tutorial/controlflow.rst:1030 msgid "" "If there are more lines in the documentation string, the second line should " "be blank, visually separating the summary from the rest of the description. " @@ -2278,7 +2280,7 @@ msgstr "" "παράγραφοι που περιγράφουν τις συμβάσεις κλήσης του αντικειμένου, τις " "παρενέργειές του κ.λπ.." -#: tutorial/controlflow.rst:1034 +#: tutorial/controlflow.rst:1035 msgid "" "The Python parser does not strip indentation from multi-line string literals " "in Python, so tools that process documentation have to strip indentation if " @@ -2306,11 +2308,11 @@ msgstr "" "αρχικό κενό τους. Η ισοδυναμία των κενών διαστημάτων θα πρέπει να ελέγχεται " "μετά την επέκταση των καρτελών (σε 8 κενά, κανονικά)." -#: tutorial/controlflow.rst:1046 +#: tutorial/controlflow.rst:1047 msgid "Here is an example of a multi-line docstring::" msgstr "Ακολουθεί ένα παράδειγμα ενός πολλαπλών γραμμών docstring::" -#: tutorial/controlflow.rst:1048 +#: tutorial/controlflow.rst:1049 msgid "" ">>> def my_function():\n" "... \"\"\"Do nothing, but document it.\n" @@ -2322,7 +2324,7 @@ msgid "" ">>> print(my_function.__doc__)\n" "Do nothing, but document it.\n" "\n" -" No, really, it doesn't do anything." +"No, really, it doesn't do anything." msgstr "" ">>> def my_function():\n" "... \"\"\"Do nothing, but document it.\n" @@ -2334,13 +2336,13 @@ msgstr "" ">>> print(my_function.__doc__)\n" "Do nothing, but document it.\n" "\n" -" No, really, it doesn't do anything." +"No, really, it doesn't do anything." -#: tutorial/controlflow.rst:1064 +#: tutorial/controlflow.rst:1065 msgid "Function Annotations" msgstr "Annotations Συναρτήσεων" -#: tutorial/controlflow.rst:1072 +#: tutorial/controlflow.rst:1073 msgid "" ":ref:`Function annotations ` are completely optional metadata " "information about the types used by user-defined functions (see :pep:`3107` " @@ -2351,7 +2353,7 @@ msgstr "" "συναρτήσεις που καθορίζονται από το χρήστη (δείτε :pep:`3107` και :pep:`484` " "για περισσότερες πληροφορίες)." -#: tutorial/controlflow.rst:1076 +#: tutorial/controlflow.rst:1077 msgid "" ":term:`Annotations ` are stored in the :attr:`!" "__annotations__` attribute of the function as a dictionary and have no " @@ -2373,7 +2375,7 @@ msgstr "" "ένα απαιτούμενο όρισμα, ένα προαιρετικό όρισμα και την επιστρεφόμενη τιμή σε " "annotations::" -#: tutorial/controlflow.rst:1085 +#: tutorial/controlflow.rst:1086 msgid "" ">>> def f(ham: str, eggs: str = 'eggs') -> str:\n" "... print(\"Annotations:\", f.__annotations__)\n" @@ -2397,11 +2399,11 @@ msgstr "" "Arguments: spam eggs\n" "'spam and eggs'" -#: tutorial/controlflow.rst:1098 +#: tutorial/controlflow.rst:1099 msgid "Intermezzo: Coding Style" msgstr "Intermezzo: Στυλ Κώδικα" -#: tutorial/controlflow.rst:1103 +#: tutorial/controlflow.rst:1104 msgid "" "Now that you are about to write longer, more complex pieces of Python, it is " "a good time to talk about *coding style*. Most languages can be written (or " @@ -2417,7 +2419,7 @@ msgstr "" "πάντα μια καλή ιδέα και η υιοθέτηση ενός ωραίου στυλ κώδικα βοηθάει πάρα " "πολύ σε αυτό." -#: tutorial/controlflow.rst:1109 +#: tutorial/controlflow.rst:1110 msgid "" "For Python, :pep:`8` has emerged as the style guide that most projects " "adhere to; it promotes a very readable and eye-pleasing coding style. Every " @@ -2429,11 +2431,11 @@ msgstr "" "κώδικα. Κάθε προγραμματιστής Python θα πρέπει να το διαβάσει κάποια στιγμή· " "εδώ είναι τα πιο σημαντικό σημεία που εξάγονται για εσάς:" -#: tutorial/controlflow.rst:1114 +#: tutorial/controlflow.rst:1115 msgid "Use 4-space indentation, and no tabs." msgstr "Χρησιμοποιήστε εσοχή 4 διαστημάτων και όχι tabs." -#: tutorial/controlflow.rst:1116 +#: tutorial/controlflow.rst:1117 msgid "" "4 spaces are a good compromise between small indentation (allows greater " "nesting depth) and large indentation (easier to read). Tabs introduce " @@ -2444,11 +2446,11 @@ msgstr "" "ανάγνωση). Τα tabs δημιουργούν σύγχυση, και είναι καλύτερο να παραμείνουν " "απέξω." -#: tutorial/controlflow.rst:1120 +#: tutorial/controlflow.rst:1121 msgid "Wrap lines so that they don't exceed 79 characters." msgstr "Τυλίξτε τις γραμμές έτσι ώστε να μην υπερβαίνουν τους 79 χαρακτήρες." -#: tutorial/controlflow.rst:1122 +#: tutorial/controlflow.rst:1123 msgid "" "This helps users with small displays and makes it possible to have several " "code files side-by-side on larger displays." @@ -2456,7 +2458,7 @@ msgstr "" "Αυτό βοηθά του χρήστες με μικρές οθόνες και καθιστά δυνατή την ύπαρξη πολλών " "αρχείων κώδικα δίπλα-δίπλα σε μεγαλύτερες οθόνες." -#: tutorial/controlflow.rst:1125 +#: tutorial/controlflow.rst:1126 msgid "" "Use blank lines to separate functions and classes, and larger blocks of code " "inside functions." @@ -2464,15 +2466,15 @@ msgstr "" "Χρησιμοποιείστε κενές γραμμές για να διαχωρίσετε συναρτήσεις και κλάσεις και " "μεγαλύτερα μπλοκ κώδικα μέσα συναρτήσεις." -#: tutorial/controlflow.rst:1128 +#: tutorial/controlflow.rst:1129 msgid "When possible, put comments on a line of their own." msgstr "Όταν είναι δυνατόν, βάλτε σχόλια σε μια δική τους γραμμή." -#: tutorial/controlflow.rst:1130 +#: tutorial/controlflow.rst:1131 msgid "Use docstrings." msgstr "Χρησιμοποιήστε docstrings." -#: tutorial/controlflow.rst:1132 +#: tutorial/controlflow.rst:1133 msgid "" "Use spaces around operators and after commas, but not directly inside " "bracketing constructs: ``a = f(1, 2) + g(3, 4)``." @@ -2480,7 +2482,7 @@ msgstr "" "Χρησιμοποιήστε κενά γύρω από τελεστές και μετά από κόμματα, αλλά όχι " "απευθείας μέσα δε δομές αγκύλων: ``a = f(1, 2) + g(3, 4)``." -#: tutorial/controlflow.rst:1135 +#: tutorial/controlflow.rst:1136 msgid "" "Name your classes and functions consistently; the convention is to use " "``UpperCamelCase`` for classes and ``lowercase_with_underscores`` for " @@ -2494,7 +2496,7 @@ msgstr "" "(δείτε :ref:`tut-firstclasses` για περισσότερα σχετικά με τις κλάσεις και " "τις μεθόδους)." -#: tutorial/controlflow.rst:1140 +#: tutorial/controlflow.rst:1141 msgid "" "Don't use fancy encodings if your code is meant to be used in international " "environments. Python's default, UTF-8, or even plain ASCII work best in any " @@ -2504,7 +2506,7 @@ msgstr "" "να χρησιμοποιηθεί σε διεθνή περιβάλλοντα. Η προεπιλογή της Python, UTF-8, ή " "ακόμα και το απλό ASCII λειτουργούν καλύτερα σε κάθε περίπτωση." -#: tutorial/controlflow.rst:1144 +#: tutorial/controlflow.rst:1145 msgid "" "Likewise, don't use non-ASCII characters in identifiers if there is only the " "slightest chance people speaking a different language will read or maintain " @@ -2514,11 +2516,11 @@ msgstr "" "εάν υπάρχει μόνο η παραμικρή πιθανότητα οι άνθρωποι που μιλούν διαφορετική " "γλώσσα να διαβάσουν ή να διατηρήσουν τον κώδικα." -#: tutorial/controlflow.rst:1150 +#: tutorial/controlflow.rst:1151 msgid "Footnotes" msgstr "Υποσημειώσεις" -#: tutorial/controlflow.rst:1151 +#: tutorial/controlflow.rst:1152 msgid "" "Actually, *call by object reference* would be a better description, since if " "a mutable object is passed, the caller will see any changes the callee makes " @@ -2537,15 +2539,15 @@ msgstr "statement" msgid "for" msgstr "for" -#: tutorial/controlflow.rst:1015 +#: tutorial/controlflow.rst:1016 msgid "documentation strings" msgstr "documentation strings" -#: tutorial/controlflow.rst:1015 +#: tutorial/controlflow.rst:1016 msgid "docstrings" msgstr "docstrings" -#: tutorial/controlflow.rst:1015 +#: tutorial/controlflow.rst:1016 msgid "strings, documentation" msgstr "strings, documentation" @@ -2561,31 +2563,31 @@ msgstr "in function calls" msgid "**" msgstr "**" -#: tutorial/controlflow.rst:1067 +#: tutorial/controlflow.rst:1068 msgid "function" msgstr "function" -#: tutorial/controlflow.rst:1067 +#: tutorial/controlflow.rst:1068 msgid "annotations" msgstr "annotations" -#: tutorial/controlflow.rst:1067 +#: tutorial/controlflow.rst:1068 msgid "->" msgstr "->" -#: tutorial/controlflow.rst:1067 +#: tutorial/controlflow.rst:1068 msgid "function annotations" msgstr "function annotations" -#: tutorial/controlflow.rst:1067 +#: tutorial/controlflow.rst:1068 msgid ": (colon)" msgstr ": (colon)" -#: tutorial/controlflow.rst:1101 +#: tutorial/controlflow.rst:1102 msgid "coding" msgstr "coding" -#: tutorial/controlflow.rst:1101 +#: tutorial/controlflow.rst:1102 msgid "style" msgstr "style" diff --git a/tutorial/datastructures.po b/tutorial/datastructures.po index 05e9fc14..f3973b8d 100644 --- a/tutorial/datastructures.po +++ b/tutorial/datastructures.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2024-09-18 17:32+0300\n" "Last-Translator: Panagiotis Skias \n" "Language-Team: PyGreece \n" diff --git a/tutorial/errors.po b/tutorial/errors.po index 44e8f65a..46df48b5 100644 --- a/tutorial/errors.po +++ b/tutorial/errors.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-04 22:12+0300\n" "Last-Translator: Panagiotis Skias \n" "Language-Team: LANGUAGE \n" diff --git a/tutorial/floatingpoint.po b/tutorial/floatingpoint.po index f8f26489..df753392 100644 --- a/tutorial/floatingpoint.po +++ b/tutorial/floatingpoint.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2024-08-04 20:25+0000\n" "Last-Translator: Panagiotis Skias \n" "Language-Team: PyGreece \n" diff --git a/tutorial/index.po b/tutorial/index.po index 4f6b9032..3ac868f9 100644 --- a/tutorial/index.po +++ b/tutorial/index.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2024-12-10 22:14+0300\n" "Last-Translator: Dimitrios Papadopoulos\n" "Language-Team: PyGreece \n" @@ -23,6 +23,12 @@ msgstr "Το Python Tutorial" #: tutorial/index.rst:7 msgid "" +"This tutorial is designed for *programmers* that are new to the Python " +"language, **not** *beginners* who are new to programming." +msgstr "" + +#: tutorial/index.rst:11 +msgid "" "Python is an easy to learn, powerful programming language. It has efficient " "high-level data structures and a simple but effective approach to object-" "oriented programming. Python's elegant syntax and dynamic typing, together " @@ -36,7 +42,7 @@ msgstr "" "διερμηνευμένη φύση της, την καθιστούν ιδανική γλώσσα για scripting και " "ταχεία ανάπτυξη εφαρμογών σε πολλούς τομείς στις περισσότερες πλατφόρμες." -#: tutorial/index.rst:13 +#: tutorial/index.rst:17 msgid "" "The Python interpreter and the extensive standard library are freely " "available in source or binary form for all major platforms from the Python " @@ -51,7 +57,7 @@ msgstr "" "και δείκτες σε πολλά δωρεάν modules τρίτων, προγράμματα και εργαλεία Python, " "καθώς και πρόσθετη τεκμηρίωση." -#: tutorial/index.rst:19 +#: tutorial/index.rst:23 msgid "" "The Python interpreter is easily extended with new functions and data types " "implemented in C or C++ (or other languages callable from C). Python is also " @@ -62,19 +68,22 @@ msgstr "" "κληθούν από τη C). Η Python είναι επίσης κατάλληλη ως γλώσσα επέκτασης για " "προσαρμόσιμες εφαρμογές." -#: tutorial/index.rst:23 +#: tutorial/index.rst:27 msgid "" "This tutorial introduces the reader informally to the basic concepts and " -"features of the Python language and system. It helps to have a Python " -"interpreter handy for hands-on experience, but all examples are self-" +"features of the Python language and system. Be aware that it expects you to " +"have a basic understanding of programming in general. It helps to have a " +"Python interpreter handy for hands-on experience, but all examples are self-" "contained, so the tutorial can be read off-line as well." msgstr "" "Αυτό το tutorial εισάγει τον αναγνώστη ανεπίσημα στις βασικές έννοιες και " -"δυνατότητες της γλώσσας και του συστήματος Python. Βοηθάει να έχετε πρόχειρο " -"έναν διερμηνέα Python για πρακτική εμπειρία, αλλά όλα τα παραδείγματα είναι " -"αυτοτελή, οπότε το tutorial μπορεί να διαβαστεί και εκτός σύνδεσης." +"δυνατότητες της γλώσσας και του συστήματος Python. Λάβετε υπόψη ότι απαιτεί " +"να έχετε μια βασική κατανόηση του προγραμματισμού γενικά. Βοηθάει να έχετε " +"πρόχειρο έναν διερμηνέα Python για πρακτική εμπειρία, αλλά όλα τα " +"παραδείγματα είναι αυτοτελή, οπότε το tutorial μπορεί να διαβαστεί και εκτός " +"σύνδεσης." -#: tutorial/index.rst:28 +#: tutorial/index.rst:33 msgid "" "For a description of standard objects and modules, see :ref:`library-" "index`. :ref:`reference-index` gives a more formal definition of the " @@ -87,7 +96,7 @@ msgstr "" "index` και το :ref:`c-api-index`. Υπάρχουν επίσης αρκετά βιβλία που " "καλύπτουν την Python σε βάθος." -#: tutorial/index.rst:33 +#: tutorial/index.rst:38 msgid "" "This tutorial does not attempt to be comprehensive and cover every single " "feature, or even every commonly used feature. Instead, it introduces many of " @@ -105,6 +114,6 @@ msgstr "" "για τα διάφoρα modules βιβλιοθηκών Python που περιγράφονται στο :ref:" "`library-index`." -#: tutorial/index.rst:40 +#: tutorial/index.rst:45 msgid "The :ref:`glossary` is also worth going through." msgstr "Αξίζει επίσης να διαβάσετε το :ref:`glossary`." diff --git a/tutorial/inputoutput.po b/tutorial/inputoutput.po index 2f9f1b8f..ec1187a3 100644 --- a/tutorial/inputoutput.po +++ b/tutorial/inputoutput.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2024-09-20 11:10+0300\n" "Last-Translator: Panagiotis Skias \n" "Language-Team: PyGreece \n" diff --git a/tutorial/interactive.po b/tutorial/interactive.po index 911d5bd3..29be1743 100644 --- a/tutorial/interactive.po +++ b/tutorial/interactive.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-03 17:14+0300\n" "Last-Translator: Panagiotis Skias \n" "Language-Team: PyGreece \n" diff --git a/tutorial/interpreter.po b/tutorial/interpreter.po index c2d79dde..9f45c3f3 100644 --- a/tutorial/interpreter.po +++ b/tutorial/interpreter.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-04 22:16+0000\n" "Last-Translator: Panagiotis Skias \n" "Language-Team: LANGUAGE \n" diff --git a/tutorial/introduction.po b/tutorial/introduction.po index 9976c34a..57bbc83b 100644 --- a/tutorial/introduction.po +++ b/tutorial/introduction.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-02-13 17:17+0001\n" "Last-Translator: Lysandros Nikolaou \n" "Language-Team: PyGreece \n" @@ -40,17 +40,17 @@ msgstr "" #: tutorial/introduction.rst:16 msgid "" -"You can toggle the display of prompts and output by clicking on ``>>>`` in " -"the upper-right corner of an example box. If you hide the prompts and " -"output for an example, then you can easily copy and paste the input lines " -"into your interpreter." +"You can use the \"Copy\" button (it appears in the upper-right corner when " +"hovering over or tapping a code example), which strips prompts and omits " +"output, to copy and paste the input lines into your interpreter." msgstr "" -"Μπορείτε να αλλάξετε την εμφάνιση των prompts και της εξόδου κάνοντας κλικ " -"στο ``>>>>`` στην επάνω δεξιά γωνία ενός πλαισίου παραδείγματος. Εάν " -"αποκρύψετε τα prompts και την έξοδο για ένα παράδειγμα, τότε μπορείτε εύκολα " -"να αντιγράψετε και να επικολλήσετε τις γραμμές εισαγωγής στον διερμηνέα σας." +"Μπορείτε να χρησιμοποιήσετε το κουμπί \"Copy\" (εμφανίζεται στην επάνω δεξιά " +"γωνία όταν τοποθετείτε τον δείκτη του ποντικιού πάνω από ένα παράδειγμα " +"κώδικα ή πατάτε αυτό), το οποίο αφαιρεί τις προτροπές και παραλείπει την " +"έξοδο, για να αντιγράψετε και να επικολλήσετε τις γραμμές εισόδου στον " +"διερμηνέα σας." -#: tutorial/introduction.rst:23 +#: tutorial/introduction.rst:22 msgid "" "Many of the examples in this manual, even those entered at the interactive " "prompt, include comments. Comments in Python start with the hash character, " @@ -70,11 +70,11 @@ msgstr "" "ερμηνεύονται από την Python, μπορούν να παραλείπονται κατά την πληκτρολόγηση " "παραδειγμάτων." -#: tutorial/introduction.rst:31 +#: tutorial/introduction.rst:30 msgid "Some examples::" msgstr "Μερικά παραδείγματα::" -#: tutorial/introduction.rst:33 +#: tutorial/introduction.rst:32 msgid "" "# this is the first comment\n" "spam = 1 # and this is the second comment\n" @@ -86,11 +86,11 @@ msgstr "" " # ... and now a third!\n" "text = \"# This is not a comment because it's inside quotes.\"" -#: tutorial/introduction.rst:42 +#: tutorial/introduction.rst:41 msgid "Using Python as a Calculator" msgstr "Χρησιμοποιώντας την Python ως Αριθμομηχανή" -#: tutorial/introduction.rst:44 +#: tutorial/introduction.rst:43 msgid "" "Let's try some simple Python commands. Start the interpreter and wait for " "the primary prompt, ``>>>``. (It shouldn't take long.)" @@ -98,11 +98,11 @@ msgstr "" "Ας δοκιμάσουμε μερικές απλές εντολές της Python. Ξεκινήστε τον διερμηνέα και " "περιμένετε το πρώτο prompt, ```>>>```. (Δεν θα πάρει πολύ χρόνο.)" -#: tutorial/introduction.rst:51 +#: tutorial/introduction.rst:50 msgid "Numbers" msgstr "Αριθμοί" -#: tutorial/introduction.rst:53 +#: tutorial/introduction.rst:52 msgid "" "The interpreter acts as a simple calculator: you can type an expression at " "it and it will write the value. Expression syntax is straightforward: the " @@ -115,7 +115,7 @@ msgstr "" "να χρησιμοποιηθούν για την εκτέλεση αριθμητικών πράξεων∙ οι παρενθέσεις " "(``()``) μπορούν να χρησιμοποιηθούν για ομαδοποίηση. Για παράδειγμα::" -#: tutorial/introduction.rst:59 +#: tutorial/introduction.rst:58 msgid "" ">>> 2 + 2\n" "4\n" @@ -135,7 +135,7 @@ msgstr "" ">>> 8 / 5 # division always returns a floating-point number\n" "1.6" -#: tutorial/introduction.rst:68 +#: tutorial/introduction.rst:67 msgid "" "The integer numbers (e.g. ``2``, ``4``, ``20``) have type :class:`int`, the " "ones with a fractional part (e.g. ``5.0``, ``1.6``) have type :class:" @@ -146,7 +146,7 @@ msgstr "" "`float`. Θα δούμε περισσότερα για τους αριθμητικούς τύπους αργότερα σε " "αυτόν τον οδηγό." -#: tutorial/introduction.rst:72 +#: tutorial/introduction.rst:71 msgid "" "Division (``/``) always returns a float. To do :term:`floor division` and " "get an integer result you can use the ``//`` operator; to calculate the " @@ -157,7 +157,7 @@ msgstr "" "να χρησιμοποιήσετε τον τελεστή ``//``∙ για να υπολογίσετε το το υπόλοιπο " "μίας διαίρεσης, χρησιμοποιήστε τον τελεστή ``%``::" -#: tutorial/introduction.rst:76 +#: tutorial/introduction.rst:75 msgid "" ">>> 17 / 3 # classic division returns a float\n" "5.666666666666667\n" @@ -179,7 +179,7 @@ msgstr "" ">>> 5 * 3 + 2 # floored quotient * divisor + remainder\n" "17" -#: tutorial/introduction.rst:86 +#: tutorial/introduction.rst:85 msgid "" "With Python, it is possible to use the ``**`` operator to calculate powers " "[#]_::" @@ -187,7 +187,7 @@ msgstr "" "Στην Python, είναι εφικτό να χρησιμοποιήσετε τον τελεστή ``**`` για να " "υπολογίσετε δυνάμεις [#]_::" -#: tutorial/introduction.rst:88 +#: tutorial/introduction.rst:87 msgid "" ">>> 5 ** 2 # 5 squared\n" "25\n" @@ -199,7 +199,7 @@ msgstr "" ">>> 2 ** 7 # 2 to the power of 7\n" "128" -#: tutorial/introduction.rst:93 +#: tutorial/introduction.rst:92 msgid "" "The equal sign (``=``) is used to assign a value to a variable. Afterwards, " "no result is displayed before the next interactive prompt::" @@ -208,7 +208,7 @@ msgstr "" "σε μια μεταβλητή. Στη συνέχεια, δεν εμφανίζεται αποτέλεσμα πριν από το " "επόμενο διαδραστικό prompt::" -#: tutorial/introduction.rst:96 +#: tutorial/introduction.rst:95 msgid "" ">>> width = 20\n" ">>> height = 5 * 9\n" @@ -220,7 +220,7 @@ msgstr "" ">>> width * height\n" "900" -#: tutorial/introduction.rst:101 +#: tutorial/introduction.rst:100 msgid "" "If a variable is not \"defined\" (assigned a value), trying to use it will " "give you an error::" @@ -228,7 +228,7 @@ msgstr "" "Αν μία μεταβλητή δεν έχει «οριστεί» (δεν της έχει αποδοθεί κάποια τιμή), η " "προσπάθεια χρήσης της θα σας δώσει ένα σφάλμα::" -#: tutorial/introduction.rst:104 +#: tutorial/introduction.rst:103 msgid "" ">>> n # try to access an undefined variable\n" "Traceback (most recent call last):\n" @@ -240,7 +240,7 @@ msgstr "" " File \"\", line 1, in \n" "NameError: name 'n' is not defined" -#: tutorial/introduction.rst:109 +#: tutorial/introduction.rst:108 msgid "" "There is full support for floating point; operators with mixed type operands " "convert the integer operand to floating point::" @@ -248,7 +248,7 @@ msgstr "" "Υπάρχει πλήρης υποστήριξη για δεκαδικά ψηφία∙ τελεστές με τελεστέους μικτού " "τύπου μετατρέπουν τον ακέραιο τελεστέο σε δεκαδικό::" -#: tutorial/introduction.rst:112 +#: tutorial/introduction.rst:111 msgid "" ">>> 4 * 3.75 - 1\n" "14.0" @@ -256,7 +256,7 @@ msgstr "" ">>> 4 * 3.75 - 1\n" "14.0" -#: tutorial/introduction.rst:115 +#: tutorial/introduction.rst:114 msgid "" "In interactive mode, the last printed expression is assigned to the variable " "``_``. This means that when you are using Python as a desk calculator, it " @@ -267,7 +267,7 @@ msgstr "" "αριθμομηχανή γραφείου, είναι κάπως πιο εύκολο να συνεχίσετε προηγούμενους " "υπολογισμούς, για παράδειγμα:" -#: tutorial/introduction.rst:119 +#: tutorial/introduction.rst:118 msgid "" ">>> tax = 12.5 / 100\n" ">>> price = 100.50\n" @@ -287,7 +287,7 @@ msgstr "" ">>> round(_, 2)\n" "113.06" -#: tutorial/introduction.rst:128 +#: tutorial/introduction.rst:127 msgid "" "This variable should be treated as read-only by the user. Don't explicitly " "assign a value to it --- you would create an independent local variable with " @@ -298,7 +298,7 @@ msgstr "" "ανεξάρτητη τοπική μεταβλητή με το ίδιο όνομα αποκρύπτοντας την ενσωματωμένη " "μεταβλητή με τη μαγική της συμπεριφορά." -#: tutorial/introduction.rst:132 +#: tutorial/introduction.rst:131 msgid "" "In addition to :class:`int` and :class:`float`, Python supports other types " "of numbers, such as :class:`~decimal.Decimal` and :class:`~fractions." @@ -312,11 +312,11 @@ msgstr "" "numbers ` (μιγαδικούς αριθμούς), και χρησιμοποιεί την κατάληξη " "``j`` ή ``J`` για να δηλώσει το φανταστικό μέρος (π.χ. ``3+5j``)." -#: tutorial/introduction.rst:142 +#: tutorial/introduction.rst:141 msgid "Text" msgstr "Κείμενο" -#: tutorial/introduction.rst:144 +#: tutorial/introduction.rst:143 msgid "" "Python can manipulate text (represented by type :class:`str`, so-called " "\"strings\") as well as numbers. This includes characters \"``!``\", words " @@ -331,7 +331,7 @@ msgstr "" "περικλείονται σε μονά εισαγωγικά (``'...'``) ή διπλά εισαγωγικά (``\"..." "\"``) με το ίδιο αποτέλεσμα [#]_." -#: tutorial/introduction.rst:150 +#: tutorial/introduction.rst:149 msgid "" ">>> 'spam eggs' # single quotes\n" "'spam eggs'\n" @@ -347,7 +347,7 @@ msgstr "" ">>> '1975' # digits and numerals enclosed in quotes are also strings\n" "'1975'" -#: tutorial/introduction.rst:159 +#: tutorial/introduction.rst:158 msgid "" "To quote a quote, we need to \"escape\" it, by preceding it with ``\\``. " "Alternatively, we can use the other type of quotation marks::" @@ -356,7 +356,7 @@ msgstr "" "προτάσσοντάς του μία ``\\``. Εναλλακτικά, μπορούμε να χρησιμοποιήσουμε τον " "άλλο τύπο εισαγωγικών::" -#: tutorial/introduction.rst:162 +#: tutorial/introduction.rst:161 msgid "" ">>> 'doesn\\'t' # use \\' to escape the single quote...\n" "\"doesn't\"\n" @@ -380,7 +380,7 @@ msgstr "" ">>> '\"Isn\\'t,\" they said.'\n" "'\"Isn\\'t,\" they said.'" -#: tutorial/introduction.rst:173 +#: tutorial/introduction.rst:172 msgid "" "In the Python shell, the string definition and output string can look " "different. The :func:`print` function produces a more readable output, by " @@ -392,7 +392,7 @@ msgstr "" "ευανάγνωστη έξοδο, παραλείποντας τα εισαγωγικά που περικλείουν την " "συμβολοσειρά και εκτυπώνοντας escaped και ειδικούς χαρακτήρες::" -#: tutorial/introduction.rst:177 +#: tutorial/introduction.rst:176 msgid "" ">>> s = 'First line.\\nSecond line.' # \\n means newline\n" ">>> s # without print(), special characters are included in the string\n" @@ -410,7 +410,7 @@ msgstr "" "First line.\n" "Second line." -#: tutorial/introduction.rst:184 +#: tutorial/introduction.rst:183 msgid "" "If you don't want characters prefaced by ``\\`` to be interpreted as special " "characters, you can use *raw strings* by adding an ``r`` before the first " @@ -420,7 +420,7 @@ msgstr "" "ως ειδικοί χαρακτήρες, μπορείτε να χρησιμοποιήσετε *ακατέργαστες " "συμβολοσειρές* προσθέτοντας ένα ``r`` πριν από το πρώτο εισαγωγικό::" -#: tutorial/introduction.rst:188 +#: tutorial/introduction.rst:187 msgid "" ">>> print('C:\\some\\name') # here \\n means newline!\n" "C:\\some\n" @@ -434,7 +434,7 @@ msgstr "" ">>> print(r'C:\\some\\name') # note the r before the quote\n" "C:\\some\\name" -#: tutorial/introduction.rst:194 +#: tutorial/introduction.rst:193 msgid "" "There is one subtle aspect to raw strings: a raw string may not end in an " "odd number of ``\\`` characters; see :ref:`the FAQ entry ` για περισσότερες πληροφορίες και λύσεις." -#: tutorial/introduction.rst:199 +#: tutorial/introduction.rst:198 msgid "" "String literals can span multiple lines. One way is using triple-quotes: " "``\"\"\"...\"\"\"`` or ``'''...'''``. End-of-line characters are " @@ -460,7 +460,7 @@ msgstr "" "προσθέτοντας μία ``\\`` στο τέλος της γραμμής. Στο ακόλουθο παράδειγμα, η " "αρχική νέα γραμμή δεν περιλαμβάνεται::" -#: tutorial/introduction.rst:205 +#: tutorial/introduction.rst:204 msgid "" ">>> print(\"\"\"\\\n" "... Usage: thingy [OPTIONS]\n" @@ -484,7 +484,7 @@ msgstr "" "\n" ">>>" -#: tutorial/introduction.rst:216 +#: tutorial/introduction.rst:215 msgid "" "Strings can be concatenated (glued together) with the ``+`` operator, and " "repeated with ``*``::" @@ -492,7 +492,7 @@ msgstr "" "Οι συμβολοσειρές μπορούν να συνδεθούν (κολληθούν η μία στην άλλη) με τον " "τελεστή ``+``, και να επαναληφθούν με τον τελεστή ``*``::" -#: tutorial/introduction.rst:219 +#: tutorial/introduction.rst:218 msgid "" ">>> # 3 times 'un', followed by 'ium'\n" ">>> 3 * 'un' + 'ium'\n" @@ -502,7 +502,7 @@ msgstr "" ">>> 3 * 'un' + 'ium'\n" "'unununium'" -#: tutorial/introduction.rst:223 +#: tutorial/introduction.rst:222 msgid "" "Two or more *string literals* (i.e. the ones enclosed between quotes) next " "to each other are automatically concatenated. ::" @@ -510,7 +510,7 @@ msgstr "" "Δύο ή παραπάνω *συμβολοσειρές* (που περικλείονται σε εισαγωγικά) η μία δίπλα " "στην άλλη συνδέονται αυτόματα. ::" -#: tutorial/introduction.rst:226 +#: tutorial/introduction.rst:225 msgid "" ">>> 'Py' 'thon'\n" "'Python'" @@ -518,14 +518,14 @@ msgstr "" ">>> 'Py' 'thon'\n" "'Python'" -#: tutorial/introduction.rst:229 +#: tutorial/introduction.rst:228 msgid "" "This feature is particularly useful when you want to break long strings::" msgstr "" "Αυτή η λειτουργία είναι ιδιαίτερα χρήσιμη όταν θέλετε να σπάσετε μεγάλες " "συμβολοσειρές::" -#: tutorial/introduction.rst:231 +#: tutorial/introduction.rst:230 msgid "" ">>> text = ('Put several strings within parentheses '\n" "... 'to have them joined together.')\n" @@ -537,14 +537,14 @@ msgstr "" ">>> text\n" "'Put several strings within parentheses to have them joined together.'" -#: tutorial/introduction.rst:236 +#: tutorial/introduction.rst:235 msgid "" "This only works with two literals though, not with variables or expressions::" msgstr "" "Ωστόσο, αυτό λειτουργεί μόνο με κυριολεκτικές συμβολοσειρές, όχι με " "μεταβλητές ή εκφράσεις::" -#: tutorial/introduction.rst:238 +#: tutorial/introduction.rst:237 msgid "" ">>> prefix = 'Py'\n" ">>> prefix 'thon' # can't concatenate a variable and a string literal\n" @@ -570,14 +570,14 @@ msgstr "" " ^^^^^\n" "SyntaxError: invalid syntax" -#: tutorial/introduction.rst:250 +#: tutorial/introduction.rst:249 msgid "" "If you want to concatenate variables or a variable and a literal, use ``+``::" msgstr "" "Αν θέλετε να συνδέσετε μεταβλητές ή μία μεταβλητή και μία κυριολεκτική " "συμβολοσειρά, χρησιμοποιήστε το ``+``::" -#: tutorial/introduction.rst:252 +#: tutorial/introduction.rst:251 msgid "" ">>> prefix + 'thon'\n" "'Python'" @@ -585,7 +585,7 @@ msgstr "" ">>> prefix + 'thon'\n" "'Python'" -#: tutorial/introduction.rst:255 +#: tutorial/introduction.rst:254 msgid "" "Strings can be *indexed* (subscripted), with the first character having " "index 0. There is no separate character type; a character is simply a string " @@ -595,7 +595,7 @@ msgstr "" "πρώτο χαρακτήρα να έχει τον δείκτη 0. Δεν υπάρχει ξεχωριστός τύπος για " "χαρακτήρες∙ ένας χαρακτήρας είναι απλώς μία συμβολοσειρά με μέγεθος ένα::" -#: tutorial/introduction.rst:259 +#: tutorial/introduction.rst:258 msgid "" ">>> word = 'Python'\n" ">>> word[0] # character in position 0\n" @@ -609,14 +609,14 @@ msgstr "" ">>> word[5] # character in position 5\n" "'n'" -#: tutorial/introduction.rst:265 +#: tutorial/introduction.rst:264 msgid "" "Indices may also be negative numbers, to start counting from the right::" msgstr "" "Οι δείκτες μπορούν να είναι και αρνητικοί αριθμοί, για να ξεκινήσετε την " "αρίθμηση από τα δεξιά::" -#: tutorial/introduction.rst:267 +#: tutorial/introduction.rst:266 msgid "" ">>> word[-1] # last character\n" "'n'\n" @@ -632,13 +632,13 @@ msgstr "" ">>> word[-6]\n" "'P'" -#: tutorial/introduction.rst:274 +#: tutorial/introduction.rst:273 msgid "Note that since -0 is the same as 0, negative indices start from -1." msgstr "" "Σημειώστε ότι αφού το -0 είναι το ίδιο με το 0, οι αρνητικοί δείκτες " "ξεκινούν από το -1." -#: tutorial/introduction.rst:276 +#: tutorial/introduction.rst:275 msgid "" "In addition to indexing, *slicing* is also supported. While indexing is " "used to obtain individual characters, *slicing* allows you to obtain a " @@ -648,7 +648,7 @@ msgstr "" "ευρετηρίαση χρησιμοποιείται για την απόκτηση μεμονομένων χαρακτήρων, ο " "*τεμαχισμός* σας επιτρέπει να αποκτήσετε ένας μέρος της συμβολοσειράς::" -#: tutorial/introduction.rst:279 +#: tutorial/introduction.rst:278 msgid "" ">>> word[0:2] # characters from position 0 (included) to 2 (excluded)\n" "'Py'\n" @@ -660,7 +660,7 @@ msgstr "" ">>> word[2:5] # characters from position 2 (included) to 5 (excluded)\n" "'tho'" -#: tutorial/introduction.rst:284 +#: tutorial/introduction.rst:283 msgid "" "Slice indices have useful defaults; an omitted first index defaults to zero, " "an omitted second index defaults to the size of the string being sliced. ::" @@ -669,7 +669,7 @@ msgstr "" "πρώτου δείκτη έχει ως προεπιλογή το μηδέν, η παράλειψη του δεύτερου δείκτη " "έχει ως προεπιλογή το μέγεθος της συμβολοσειράς που τεμαχίζεται. ::" -#: tutorial/introduction.rst:287 +#: tutorial/introduction.rst:286 msgid "" ">>> word[:2] # character from the beginning to position 2 (excluded)\n" "'Py'\n" @@ -685,7 +685,7 @@ msgstr "" ">>> word[-2:] # characters from the second-last (included) to the end\n" "'on'" -#: tutorial/introduction.rst:294 +#: tutorial/introduction.rst:293 msgid "" "Note how the start is always included, and the end always excluded. This " "makes sure that ``s[:i] + s[i:]`` is always equal to ``s``::" @@ -693,7 +693,7 @@ msgstr "" "Προσέξτε πώς η αρχή περιλαμβάνεται πάντα, ενώ το τέλος πάντα εξαιρείται. " "Αυτό εξασφαλίζει ότι το ``s[:i] + s[i:]`` είναι πάντα ίσο με ``s``::" -#: tutorial/introduction.rst:297 +#: tutorial/introduction.rst:296 msgid "" ">>> word[:2] + word[2:]\n" "'Python'\n" @@ -705,7 +705,7 @@ msgstr "" ">>> word[:4] + word[4:]\n" "'Python'" -#: tutorial/introduction.rst:302 +#: tutorial/introduction.rst:301 msgid "" "One way to remember how slices work is to think of the indices as pointing " "*between* characters, with the left edge of the first character numbered 0. " @@ -717,7 +717,7 @@ msgstr "" "χαρακτήρα να αριθμείται με 0. Τότε το δεξιό άκρο του τελευταίου χαρακτήρα " "μιας συμβολοσειράς *ν* χαρακτήρων έχει δείκτη *ν*, για παράδειγμα::" -#: tutorial/introduction.rst:307 +#: tutorial/introduction.rst:306 msgid "" " +---+---+---+---+---+---+\n" " | P | y | t | h | o | n |\n" @@ -731,7 +731,7 @@ msgstr "" " 0 1 2 3 4 5 6\n" "-6 -5 -4 -3 -2 -1" -#: tutorial/introduction.rst:313 +#: tutorial/introduction.rst:312 msgid "" "The first row of numbers gives the position of the indices 0...6 in the " "string; the second row gives the corresponding negative indices. The slice " @@ -743,7 +743,7 @@ msgstr "" "*i* έως *j* αποτελείται από όλους τους χαρακτήρες μεταξύ των άκρων με " "ετικέτες *i* και *j*, αντίστοιχα." -#: tutorial/introduction.rst:318 +#: tutorial/introduction.rst:317 msgid "" "For non-negative indices, the length of a slice is the difference of the " "indices, if both are within bounds. For example, the length of " @@ -753,11 +753,11 @@ msgstr "" "δεικτών, εάν και οι δύο είναι εντός των ορίων. Για παράδειγμα, το μήκος του " "``word[1:3]`` είναι 2." -#: tutorial/introduction.rst:322 +#: tutorial/introduction.rst:321 msgid "Attempting to use an index that is too large will result in an error::" msgstr "Η απόπειρα χρήσης ενός πολύ μεγάλου δείκτη θα οδηγήσει σε σφάλμα::" -#: tutorial/introduction.rst:324 +#: tutorial/introduction.rst:323 msgid "" ">>> word[42] # the word only has 6 characters\n" "Traceback (most recent call last):\n" @@ -769,7 +769,7 @@ msgstr "" " File \"\", line 1, in \n" "IndexError: string index out of range" -#: tutorial/introduction.rst:329 +#: tutorial/introduction.rst:328 msgid "" "However, out of range slice indexes are handled gracefully when used for " "slicing::" @@ -777,7 +777,7 @@ msgstr "" "Ωστόσο, οι δείκτες εκτός εύρους αντιμετωπίζονται χωρίς σφάλμα όταν " "χρησιμοποιούνται για τεμαχισμούς::" -#: tutorial/introduction.rst:332 +#: tutorial/introduction.rst:331 msgid "" ">>> word[4:42]\n" "'on'\n" @@ -789,7 +789,7 @@ msgstr "" ">>> word[42:]\n" "''" -#: tutorial/introduction.rst:337 +#: tutorial/introduction.rst:336 msgid "" "Python strings cannot be changed --- they are :term:`immutable`. Therefore, " "assigning to an indexed position in the string results in an error::" @@ -798,7 +798,7 @@ msgstr "" "`immutable`. Επομένως, η ανάθεση σε μια συγκεκριμένη θέση στη συμβολοσειρά " "οδηγεί σε σφάλμα::" -#: tutorial/introduction.rst:340 +#: tutorial/introduction.rst:339 msgid "" ">>> word[0] = 'J'\n" "Traceback (most recent call last):\n" @@ -818,13 +818,13 @@ msgstr "" " File \"\", line 1, in \n" "TypeError: 'str' object does not support item assignment" -#: tutorial/introduction.rst:349 +#: tutorial/introduction.rst:348 msgid "If you need a different string, you should create a new one::" msgstr "" "Εάν χρειάζεστε μια διαφορετική συμβολοσειρά, θα πρέπει να δημιουργήσετε μια " "νέα::" -#: tutorial/introduction.rst:351 +#: tutorial/introduction.rst:350 msgid "" ">>> 'J' + word[1:]\n" "'Jython'\n" @@ -836,12 +836,12 @@ msgstr "" ">>> word[:2] + 'py'\n" "'Pypy'" -#: tutorial/introduction.rst:356 +#: tutorial/introduction.rst:355 msgid "The built-in function :func:`len` returns the length of a string::" msgstr "" "Η ενσωματωμένη συνάρτηση :func:`len` επιστρέφει το μήκος μιας συμβολοσειράς::" -#: tutorial/introduction.rst:358 +#: tutorial/introduction.rst:357 msgid "" ">>> s = 'supercalifragilisticexpialidocious'\n" ">>> len(s)\n" @@ -851,11 +851,11 @@ msgstr "" ">>> len(s)\n" "34" -#: tutorial/introduction.rst:365 +#: tutorial/introduction.rst:364 msgid ":ref:`textseq`" msgstr ":ref:`textseq`" -#: tutorial/introduction.rst:366 +#: tutorial/introduction.rst:365 msgid "" "Strings are examples of *sequence types*, and support the common operations " "supported by such types." @@ -863,11 +863,11 @@ msgstr "" "Οι συμβολοσειρές είναι παραδείγματα *τύπων ακολουθίας* και υποστηρίζουν τις " "κοινές πράξεις που υποστηρίζονται από τέτοιους τύπους." -#: tutorial/introduction.rst:369 +#: tutorial/introduction.rst:368 msgid ":ref:`string-methods`" msgstr ":ref:`string-methods`" -#: tutorial/introduction.rst:370 +#: tutorial/introduction.rst:369 msgid "" "Strings support a large number of methods for basic transformations and " "searching." @@ -875,29 +875,29 @@ msgstr "" "Οι συμβολοσειρές υποστηρίζουν έναν μεγάλο αριθμό μεθόδων για βασικούς " "μετασχηματισμούς και αναζήτηση." -#: tutorial/introduction.rst:373 +#: tutorial/introduction.rst:372 msgid ":ref:`f-strings`" msgstr ":ref:`f-strings`" -#: tutorial/introduction.rst:374 +#: tutorial/introduction.rst:373 msgid "String literals that have embedded expressions." msgstr "Κυριολεκτικές συμβολοσειρές που έχουν ενσωματωμένες εκφράσεις." -#: tutorial/introduction.rst:376 +#: tutorial/introduction.rst:375 msgid ":ref:`formatstrings`" msgstr ":ref:`formatstrings`" -#: tutorial/introduction.rst:377 +#: tutorial/introduction.rst:376 msgid "Information about string formatting with :meth:`str.format`." msgstr "" "Πληροφορίες σχετικά με τη μορφοποίηση συμβολοσειρών με τη μέθοδο :meth:`str." "format`." -#: tutorial/introduction.rst:379 +#: tutorial/introduction.rst:378 msgid ":ref:`old-string-formatting`" msgstr ":ref:`old-string-formatting`" -#: tutorial/introduction.rst:380 +#: tutorial/introduction.rst:379 msgid "" "The old formatting operations invoked when strings are the left operand of " "the ``%`` operator are described in more detail here." @@ -905,11 +905,11 @@ msgstr "" "Οι παλιές λειτουργίες μορφοποίησης που καλούνται όταν οι συμβολοσειρές είναι " "ο αριστερός τελεστέος του τελεστή ``%`` περιγράφονται λεπτομερέστερα εδώ." -#: tutorial/introduction.rst:387 +#: tutorial/introduction.rst:386 msgid "Lists" msgstr "Λίστες" -#: tutorial/introduction.rst:389 +#: tutorial/introduction.rst:388 msgid "" "Python knows a number of *compound* data types, used to group together other " "values. The most versatile is the *list*, which can be written as a list of " @@ -923,7 +923,7 @@ msgstr "" "περιέχουν στοιχεία διαφορετικών τύπων, αλλά συνήθως όλα τα στοιχεία έχουν " "τον ίδιο τύπο. ::" -#: tutorial/introduction.rst:394 +#: tutorial/introduction.rst:393 msgid "" ">>> squares = [1, 4, 9, 16, 25]\n" ">>> squares\n" @@ -933,7 +933,7 @@ msgstr "" ">>> squares\n" "[1, 4, 9, 16, 25]" -#: tutorial/introduction.rst:398 +#: tutorial/introduction.rst:397 msgid "" "Like strings (and all other built-in :term:`sequence` types), lists can be " "indexed and sliced::" @@ -941,7 +941,7 @@ msgstr "" "Όπως οι συμβολοσειρές (και όλοι οι άλλοι ενσωματωμένοι τύποι :term:" "`sequence`), οι λίστες μπορούν να δεικτοδοτηθούν και να τεμαχιστούν::" -#: tutorial/introduction.rst:401 +#: tutorial/introduction.rst:400 msgid "" ">>> squares[0] # indexing returns the item\n" "1\n" @@ -957,11 +957,11 @@ msgstr "" ">>> squares[-3:] # slicing returns a new list\n" "[9, 16, 25]" -#: tutorial/introduction.rst:408 +#: tutorial/introduction.rst:407 msgid "Lists also support operations like concatenation::" msgstr "Οι λίστες υποστηρίζουν επίσης λειτουργίες όπως σύνδεση::" -#: tutorial/introduction.rst:410 +#: tutorial/introduction.rst:409 msgid "" ">>> squares + [36, 49, 64, 81, 100]\n" "[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]" @@ -969,7 +969,7 @@ msgstr "" ">>> squares + [36, 49, 64, 81, 100]\n" "[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]" -#: tutorial/introduction.rst:413 +#: tutorial/introduction.rst:412 msgid "" "Unlike strings, which are :term:`immutable`, lists are a :term:`mutable` " "type, i.e. it is possible to change their content::" @@ -978,7 +978,7 @@ msgstr "" "λίστες είναι :term:`mutable` τύπος, δηλαδή είναι δυνατόν να αλλάξετε το " "περιεχόμενό τους::" -#: tutorial/introduction.rst:416 +#: tutorial/introduction.rst:415 msgid "" ">>> cubes = [1, 8, 27, 65, 125] # something's wrong here\n" ">>> 4 ** 3 # the cube of 4 is 64, not 65!\n" @@ -994,7 +994,7 @@ msgstr "" ">>> cubes\n" "[1, 8, 27, 64, 125]" -#: tutorial/introduction.rst:423 +#: tutorial/introduction.rst:422 msgid "" "You can also add new items at the end of the list, by using the :meth:`!list." "append` *method* (we will see more about methods later)::" @@ -1003,7 +1003,7 @@ msgstr "" "χρησιμοποιώντας την *μέθοδο* :meth:`!list.append` (θα δούμε περισσότερα για " "τις μεθόδους αργότερα)::" -#: tutorial/introduction.rst:426 +#: tutorial/introduction.rst:425 msgid "" ">>> cubes.append(216) # add the cube of 6\n" ">>> cubes.append(7 ** 3) # and the cube of 7\n" @@ -1015,7 +1015,7 @@ msgstr "" ">>> cubes\n" "[1, 8, 27, 64, 125, 216, 343]" -#: tutorial/introduction.rst:431 +#: tutorial/introduction.rst:430 msgid "" "Simple assignment in Python never copies data. When you assign a list to a " "variable, the variable refers to the *existing list*. Any changes you make " @@ -1027,7 +1027,7 @@ msgstr "" "Οποιεσδήποτε αλλαγές κάνετε στη λίστα μέσω μιας μεταβλητής θα γίνουν " "αντιληπτές από όλες τις άλλες μεταβλητές που αναφέρονται σε αυτήν::" -#: tutorial/introduction.rst:436 +#: tutorial/introduction.rst:435 msgid "" ">>> rgb = [\"Red\", \"Green\", \"Blue\"]\n" ">>> rgba = rgb\n" @@ -1045,7 +1045,7 @@ msgstr "" ">>> rgb\n" "[\"Red\", \"Green\", \"Blue\", \"Alph\"]" -#: tutorial/introduction.rst:444 +#: tutorial/introduction.rst:443 msgid "" "All slice operations return a new list containing the requested elements. " "This means that the following slice returns a :ref:`shallow copy " @@ -1055,7 +1055,7 @@ msgstr "" "στοιχεία. Αυτό σημαίνει ότι ο ακόλουθος τεμαχισμός επιστρέφει ένα :ref:" "`shallow copy ` (ρηχό αντίγραφο) της λίστας::" -#: tutorial/introduction.rst:448 +#: tutorial/introduction.rst:447 msgid "" ">>> correct_rgba = rgba[:]\n" ">>> correct_rgba[-1] = \"Alpha\"\n" @@ -1071,7 +1071,7 @@ msgstr "" ">>> rgba\n" "[\"Red\", \"Green\", \"Blue\", \"Alph\"]" -#: tutorial/introduction.rst:455 +#: tutorial/introduction.rst:454 msgid "" "Assignment to slices is also possible, and this can even change the size of " "the list or clear it entirely::" @@ -1079,7 +1079,7 @@ msgstr "" "Η ανάθεση σε τεμαχισμούς είναι επίσης δυνατή, και αυτό μπορεί ακόμη και να " "αλλάξει το μέγεθος της λίστας ή να τη διαγράψει εντελώς::" -#: tutorial/introduction.rst:458 +#: tutorial/introduction.rst:457 msgid "" ">>> letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g']\n" ">>> letters\n" @@ -1113,11 +1113,11 @@ msgstr "" ">>> letters\n" "[]" -#: tutorial/introduction.rst:474 +#: tutorial/introduction.rst:473 msgid "The built-in function :func:`len` also applies to lists::" msgstr "Η ενσωματωμένη συνάρτηση :func:`len` εφαρμόζεται επίσης στις λίστες::" -#: tutorial/introduction.rst:476 +#: tutorial/introduction.rst:475 msgid "" ">>> letters = ['a', 'b', 'c', 'd']\n" ">>> len(letters)\n" @@ -1127,7 +1127,7 @@ msgstr "" ">>> len(letters)\n" "4" -#: tutorial/introduction.rst:480 +#: tutorial/introduction.rst:479 msgid "" "It is possible to nest lists (create lists containing other lists), for " "example::" @@ -1135,7 +1135,7 @@ msgstr "" "Είναι δυνατό να εμφωλεύσετε λίστες (να δημιουργήσετε λίστες που περιέχουν " "άλλες λίστες), για παράδειγμα::" -#: tutorial/introduction.rst:483 +#: tutorial/introduction.rst:482 msgid "" ">>> a = ['a', 'b', 'c']\n" ">>> n = [1, 2, 3]\n" @@ -1157,11 +1157,11 @@ msgstr "" ">>> x[0][1]\n" "'b'" -#: tutorial/introduction.rst:496 +#: tutorial/introduction.rst:495 msgid "First Steps Towards Programming" msgstr "Πρώτα Βήματα Προς Τον Προγραμματισμό" -#: tutorial/introduction.rst:498 +#: tutorial/introduction.rst:497 msgid "" "Of course, we can use Python for more complicated tasks than adding two and " "two together. For instance, we can write an initial sub-sequence of the " @@ -1173,7 +1173,7 @@ msgstr "" "αρχική υπο-σειρά της `Σειράς Fibonacci `_ ως ακολουθεί::" -#: tutorial/introduction.rst:503 +#: tutorial/introduction.rst:502 msgid "" ">>> # Fibonacci series:\n" ">>> # the sum of two elements defines the next\n" @@ -1205,11 +1205,11 @@ msgstr "" "5\n" "8" -#: tutorial/introduction.rst:518 +#: tutorial/introduction.rst:517 msgid "This example introduces several new features." msgstr "Αυτό το παράδειγμα εισάγει διάφορα νέα χαρακτηριστικά." -#: tutorial/introduction.rst:520 +#: tutorial/introduction.rst:519 msgid "" "The first line contains a *multiple assignment*: the variables ``a`` and " "``b`` simultaneously get the new values 0 and 1. On the last line this is " @@ -1223,7 +1223,7 @@ msgstr "" "αξιολογούνται όλες πρώτα πριν γίνει οποιαδήποτε ανάθεση. Οι εκφράσεις στην " "δεξιά πλευρά αξιολογούνται από αριστερά προς τα δεξιά." -#: tutorial/introduction.rst:526 +#: tutorial/introduction.rst:525 msgid "" "The :keyword:`while` loop executes as long as the condition (here: ``a < " "10``) remains true. In Python, like in C, any non-zero integer value is " @@ -1244,7 +1244,7 @@ msgstr "" "(μικρότερο από), ``>`` (μεγαλύτερο από), ``==`` (ίσο με), ``<=`` (μικρότερο " "ή ίσο με), ``>=`` (μεγαλύτερο ή ίσο με) και ``!=`` (μη ίσο με)." -#: tutorial/introduction.rst:535 +#: tutorial/introduction.rst:534 msgid "" "The *body* of the loop is *indented*: indentation is Python's way of " "grouping statements. At the interactive prompt, you have to type a tab or " @@ -1266,7 +1266,7 @@ msgstr "" "τελευταία γραμμή). Σημείωση ότι κάθε γραμμή μέσα σε ένα βασικό μπλοκ πρέπει " "να έχει την ίδια εσοχή." -#: tutorial/introduction.rst:544 +#: tutorial/introduction.rst:543 msgid "" "The :func:`print` function writes the value of the argument(s) it is given. " "It differs from just writing the expression you want to write (as we did " @@ -1283,7 +1283,7 @@ msgstr "" "παρεμβάλλεται μεταξύ των στοιχείων, ώστε να μπορείτε να μορφοποιήσετε τα " "πράγματα όμορφα, όπως εδώ::" -#: tutorial/introduction.rst:551 +#: tutorial/introduction.rst:550 msgid "" ">>> i = 256*256\n" ">>> print('The value of i is', i)\n" @@ -1293,7 +1293,7 @@ msgstr "" ">>> print('The value of i is', i)\n" "The value of i is 65536" -#: tutorial/introduction.rst:555 +#: tutorial/introduction.rst:554 msgid "" "The keyword argument *end* can be used to avoid the newline after the " "output, or end the output with a different string::" @@ -1302,7 +1302,7 @@ msgstr "" "γραμμής μετά την έξοδο, ή για να τελειώσετε την έξοδο με μια διαφορετική " "συμβολοσειρά::" -#: tutorial/introduction.rst:558 +#: tutorial/introduction.rst:557 msgid "" ">>> a, b = 0, 1\n" ">>> while a < 1000:\n" @@ -1318,11 +1318,11 @@ msgstr "" "...\n" "0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987," -#: tutorial/introduction.rst:567 +#: tutorial/introduction.rst:566 msgid "Footnotes" msgstr "Υποσημειώσεις" -#: tutorial/introduction.rst:568 +#: tutorial/introduction.rst:567 msgid "" "Since ``**`` has higher precedence than ``-``, ``-3**2`` will be interpreted " "as ``-(3**2)`` and thus result in ``-9``. To avoid this and get ``9``, you " @@ -1333,7 +1333,7 @@ msgstr "" "το αποφύγετε αυτό και να πάρετε ``9``, μπορείτε να χρησιμοποιήσετε " "``(-3)**2``." -#: tutorial/introduction.rst:572 +#: tutorial/introduction.rst:571 msgid "" "Unlike other languages, special characters such as ``\\n`` have the same " "meaning with both single (``'...'``) and double (``\"...\"``) quotes. The " @@ -1346,11 +1346,11 @@ msgstr "" "δεν χρειάζεται να αποφύγετε το ``\"`` (αλλά πρέπει να αποφύγετε το ``\\'``) " "και το αντίστροφο." -#: tutorial/introduction.rst:21 +#: tutorial/introduction.rst:20 msgid "# (hash)" msgstr "# (hash)" -#: tutorial/introduction.rst:21 +#: tutorial/introduction.rst:20 msgid "comment" msgstr "σχόλιο" diff --git a/tutorial/modules.po b/tutorial/modules.po index e5a1f6f8..ac21ceb4 100644 --- a/tutorial/modules.po +++ b/tutorial/modules.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-03 17:11+0300\n" "Last-Translator: Panagiotis Skias \n" "Language-Team: PyGreece \n" @@ -79,14 +79,16 @@ msgstr "" msgid "" "# Fibonacci numbers module\n" "\n" -"def fib(n): # write Fibonacci series up to n\n" +"def fib(n):\n" +" \"\"\"Write Fibonacci series up to n.\"\"\"\n" " a, b = 0, 1\n" " while a < n:\n" " print(a, end=' ')\n" " a, b = b, a+b\n" " print()\n" "\n" -"def fib2(n): # return Fibonacci series up to n\n" +"def fib2(n):\n" +" \"\"\"Return Fibonacci series up to n.\"\"\"\n" " result = []\n" " a, b = 0, 1\n" " while a < n:\n" @@ -96,14 +98,16 @@ msgid "" msgstr "" "# Fibonacci numbers module\n" "\n" -"def fib(n): # write Fibonacci series up to n\n" +"def fib(n):\n" +" \"\"\"Write Fibonacci series up to n.\"\"\"\n" " a, b = 0, 1\n" " while a < n:\n" " print(a, end=' ')\n" " a, b = b, a+b\n" " print()\n" "\n" -"def fib2(n): # return Fibonacci series up to n\n" +"def fib2(n):\n" +" \"\"\"Return Fibonacci series up to n.\"\"\"\n" " result = []\n" " a, b = 0, 1\n" " while a < n:\n" @@ -111,7 +115,7 @@ msgstr "" " a, b = b, a+b\n" " return result" -#: tutorial/modules.rst:45 +#: tutorial/modules.rst:47 msgid "" "Now enter the Python interpreter and import this module with the following " "command::" @@ -119,11 +123,11 @@ msgstr "" "Τώρα εισάγετε τον Python interpreter και εισάγετε αυτό το module με την " "ακόλουθη εντολή::" -#: tutorial/modules.rst:48 +#: tutorial/modules.rst:50 msgid ">>> import fibo" msgstr ">>> import fibo" -#: tutorial/modules.rst:50 +#: tutorial/modules.rst:52 msgid "" "This does not add the names of the functions defined in ``fibo`` directly " "to the current :term:`namespace` (see :ref:`tut-scopes` for more details); " @@ -136,7 +140,7 @@ msgstr "" "εκεί. Χρησιμοποιώντας το όνομα του module μπορείτε να αποκτήσετε πρόσβαση " "στις λειτουργίες::" -#: tutorial/modules.rst:55 +#: tutorial/modules.rst:57 msgid "" ">>> fibo.fib(1000)\n" "0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987\n" @@ -152,14 +156,14 @@ msgstr "" ">>> fibo.__name__\n" "'fibo'" -#: tutorial/modules.rst:62 +#: tutorial/modules.rst:64 msgid "" "If you intend to use a function often you can assign it to a local name::" msgstr "" "Εάν σκοπεύετε να χρησιμοποιείτε συχνά μια συνάρτηση, μπορείτε να την " "αντιστοιχίσετε σε ένα τοπικό όνομα::" -#: tutorial/modules.rst:64 +#: tutorial/modules.rst:66 msgid "" ">>> fib = fibo.fib\n" ">>> fib(500)\n" @@ -169,11 +173,11 @@ msgstr "" ">>> fib(500)\n" "0 1 1 2 3 5 8 13 21 34 55 89 144 233 377" -#: tutorial/modules.rst:72 +#: tutorial/modules.rst:74 msgid "More on Modules" msgstr "Περισσότερα για τα Modules" -#: tutorial/modules.rst:74 +#: tutorial/modules.rst:76 msgid "" "A module can contain executable statements as well as function definitions. " "These statements are intended to initialize the module. They are executed " @@ -186,7 +190,7 @@ msgstr "" "δήλωση εισαγωγής. [#]_ (Εκτελούνται επίσης εάν το αρχείο εκτελείται ως " "script.)" -#: tutorial/modules.rst:79 +#: tutorial/modules.rst:81 msgid "" "Each module has its own private namespace, which is used as the global " "namespace by all functions defined in the module. Thus, the author of a " @@ -203,7 +207,7 @@ msgstr "" "global μεταβλητές ενός module με το ίδιο notation που χρησιμοποιείται για να " "αναφέρεται στις συναρτήσεις, ``modname.itemname``." -#: tutorial/modules.rst:86 +#: tutorial/modules.rst:88 msgid "" "Modules can import other modules. It is customary but not required to place " "all :keyword:`import` statements at the beginning of a module (or script, " @@ -218,7 +222,7 @@ msgstr "" "οποιωνδήποτε συναρτήσεων ή κλάσεων), προστίθενται στον global namespace του " "module." -#: tutorial/modules.rst:91 +#: tutorial/modules.rst:93 msgid "" "There is a variant of the :keyword:`import` statement that imports names " "from a module directly into the importing module's namespace. For example::" @@ -227,7 +231,7 @@ msgstr "" "ένα module απευθείας στον χώρο στα importing module's namespace. Για " "παράδειγμα::" -#: tutorial/modules.rst:94 +#: tutorial/modules.rst:96 msgid "" ">>> from fibo import fib, fib2\n" ">>> fib(500)\n" @@ -237,7 +241,7 @@ msgstr "" ">>> fib(500)\n" "0 1 1 2 3 5 8 13 21 34 55 89 144 233 377" -#: tutorial/modules.rst:98 +#: tutorial/modules.rst:100 msgid "" "This does not introduce the module name from which the imports are taken in " "the local namespace (so in the example, ``fibo`` is not defined)." @@ -245,13 +249,13 @@ msgstr "" "Αυτό δεν εισάγει το όνομα ενός module από το οποίο λαμβάνονται οι εισαγωγές " "στο τοπικό namespace (αρά στο παράδειγμα, το ``fibo`` δεν ορίζεται)." -#: tutorial/modules.rst:101 +#: tutorial/modules.rst:103 msgid "There is even a variant to import all names that a module defines::" msgstr "" "Υπάρχει ακόμη και μια παραλλαγή για την εισαγωγή όλων των ονομάτων που " "ορίζει μια ενότητα::" -#: tutorial/modules.rst:103 +#: tutorial/modules.rst:105 msgid "" ">>> from fibo import *\n" ">>> fib(500)\n" @@ -261,7 +265,7 @@ msgstr "" ">>> fib(500)\n" "0 1 1 2 3 5 8 13 21 34 55 89 144 233 377" -#: tutorial/modules.rst:107 +#: tutorial/modules.rst:109 msgid "" "This imports all names except those beginning with an underscore (``_``). In " "most cases Python programmers do not use this facility since it introduces " @@ -274,7 +278,7 @@ msgstr "" "ονομάτων στον interpreter, κρύβοντας πιθανώς κάποια πράγματα που έχετε ήδη " "ορίσει." -#: tutorial/modules.rst:112 +#: tutorial/modules.rst:114 msgid "" "Note that in general the practice of importing ``*`` from a module or " "package is frowned upon, since it often causes poorly readable code. " @@ -285,7 +289,7 @@ msgstr "" "είναι εντάξει να τον χρησιμοποιήσετε για να αποθηκεύσετε την πληκτρολόγηση " "σε διαδραστικές περιόδους σύνδεσης." -#: tutorial/modules.rst:116 +#: tutorial/modules.rst:118 msgid "" "If the module name is followed by :keyword:`!as`, then the name following :" "keyword:`!as` is bound directly to the imported module." @@ -293,7 +297,7 @@ msgstr "" "Εάν το όνομα του module ακολουθείται από :keyword:`!as`, τότε το όνομα που " "ακολουθεί :keyword:`!as` συνδέεται απευθείας με το εισαγόμενο module." -#: tutorial/modules.rst:121 +#: tutorial/modules.rst:123 msgid "" ">>> import fibo as fib\n" ">>> fib.fib(500)\n" @@ -303,7 +307,7 @@ msgstr "" ">>> fib.fib(500)\n" "0 1 1 2 3 5 8 13 21 34 55 89 144 233 377" -#: tutorial/modules.rst:125 +#: tutorial/modules.rst:127 msgid "" "This is effectively importing the module in the same way that ``import " "fibo`` will do, with the only difference of it being available as ``fib``." @@ -311,14 +315,14 @@ msgstr "" "Αυτό ουσιαστικά εισάγει το module με τον ίδιο τρόπο που θα κάνει το ``import " "fibo`` , με τη μόνη διαφορά ότι είναι διαθέσιμο ως ``fib``." -#: tutorial/modules.rst:128 +#: tutorial/modules.rst:130 msgid "" "It can also be used when utilising :keyword:`from` with similar effects::" msgstr "" "Μπορεί επίσης να χρησιμοποιηθεί όταν χρησιμοποιείτε :keyword:`from` με " "παρόμοια εφέ::" -#: tutorial/modules.rst:130 +#: tutorial/modules.rst:132 msgid "" ">>> from fibo import fib as fibonacci\n" ">>> fibonacci(500)\n" @@ -328,7 +332,7 @@ msgstr "" ">>> fibonacci(500)\n" "0 1 1 2 3 5 8 13 21 34 55 89 144 233 377" -#: tutorial/modules.rst:137 +#: tutorial/modules.rst:139 msgid "" "For efficiency reasons, each module is only imported once per interpreter " "session. Therefore, if you change your modules, you must restart the " @@ -342,19 +346,19 @@ msgstr "" "θέλετε να δοκιμάσετε διαδραστικά, χρησιμοποιήστε το :func:`importlib." "reload`, π.χ. ``import importlib; importlib.reload(modulename)``." -#: tutorial/modules.rst:147 +#: tutorial/modules.rst:149 msgid "Executing modules as scripts" msgstr "Εκτέλεση modules ως scripts" -#: tutorial/modules.rst:149 +#: tutorial/modules.rst:151 msgid "When you run a Python module with ::" msgstr "Όταν εκτελείτε ένα Python module με::" -#: tutorial/modules.rst:151 +#: tutorial/modules.rst:153 msgid "python fibo.py " msgstr "python fibo.py " -#: tutorial/modules.rst:153 +#: tutorial/modules.rst:155 msgid "" "the code in the module will be executed, just as if you imported it, but " "with the ``__name__`` set to ``\"__main__\"``. That means that by adding " @@ -364,7 +368,7 @@ msgstr "" "το ``name`` να έχει οριστεί σε ``\"__main__\"``. Αυτό σημαίνει ότι " "προσθέτοντας αυτόν τον κώδικα στο τέλος του module σας::" -#: tutorial/modules.rst:157 +#: tutorial/modules.rst:159 msgid "" "if __name__ == \"__main__\":\n" " import sys\n" @@ -374,7 +378,7 @@ msgstr "" " import sys\n" " fib(int(sys.argv[1]))" -#: tutorial/modules.rst:161 +#: tutorial/modules.rst:163 msgid "" "you can make the file usable as a script as well as an importable module, " "because the code that parses the command line only runs if the module is " @@ -384,7 +388,7 @@ msgstr "" "που μπορεί να εισαχθεί, επειδή ο κώδικας που αναλύει την γραμμή εντολών " "εκτελείται μόνο εάν το module εκτελείται ως το \"main\" αρχείο:" -#: tutorial/modules.rst:165 +#: tutorial/modules.rst:167 msgid "" "$ python fibo.py 50\n" "0 1 1 2 3 5 8 13 21 34" @@ -392,11 +396,11 @@ msgstr "" "$ python fibo.py 50\n" "0 1 1 2 3 5 8 13 21 34" -#: tutorial/modules.rst:170 +#: tutorial/modules.rst:172 msgid "If the module is imported, the code is not run::" msgstr "Εάν το module έχει εισαχθεί, ο κώδικας δεν εκτελείται::" -#: tutorial/modules.rst:172 +#: tutorial/modules.rst:174 msgid "" ">>> import fibo\n" ">>>" @@ -404,7 +408,7 @@ msgstr "" ">>> import fibo\n" ">>>" -#: tutorial/modules.rst:175 +#: tutorial/modules.rst:177 msgid "" "This is often used either to provide a convenient user interface to a " "module, or for testing purposes (running the module as a script executes a " @@ -414,11 +418,11 @@ msgstr "" "σε ένα module, είτε για σκοπούς δοκιμής (η εκτέλεση του module ως script " "εκτελεί μια δοκιμαστική σουίτα)." -#: tutorial/modules.rst:182 +#: tutorial/modules.rst:184 msgid "The Module Search Path" msgstr "Το Search Path του Module" -#: tutorial/modules.rst:186 +#: tutorial/modules.rst:188 msgid "" "When a module named :mod:`!spam` is imported, the interpreter first searches " "for a built-in module with that name. These module names are listed in :data:" @@ -433,7 +437,7 @@ msgstr "" "δίνονται από τη μεταβλητή :data:`sys.path`. Το :data:`sys.path` " "αρχικοποιείται από αυτές τις θέσεις:" -#: tutorial/modules.rst:192 +#: tutorial/modules.rst:194 msgid "" "The directory containing the input script (or the current directory when no " "file is specified)." @@ -441,7 +445,7 @@ msgstr "" "Ο κατάλογος που περιέχει το input script (ή τον τρέχοντα κατάλογο όταν δεν " "έχει καθοριστεί αρχείο)." -#: tutorial/modules.rst:194 +#: tutorial/modules.rst:196 msgid "" ":envvar:`PYTHONPATH` (a list of directory names, with the same syntax as the " "shell variable :envvar:`PATH`)." @@ -449,7 +453,7 @@ msgstr "" ":envvar:`PYTHONPATH` (μια λίστα ονομάτων καταλόγου, με την ίδια σύνταξη με " "τη μεταβλητή του shell :envvar:`PATH`)." -#: tutorial/modules.rst:196 +#: tutorial/modules.rst:198 msgid "" "The installation-dependent default (by convention including a ``site-" "packages`` directory, handled by the :mod:`site` module)." @@ -458,11 +462,11 @@ msgstr "" "συμπεριλαμβανομένου ενός καταλόγου ``site-packages``, που χειρίζεται το " "module :mod:`site`." -#: tutorial/modules.rst:199 +#: tutorial/modules.rst:201 msgid "More details are at :ref:`sys-path-init`." msgstr "Περισσότερες λεπτομέρειες βρίσκονται στο :ref:`sys-path-init`." -#: tutorial/modules.rst:202 +#: tutorial/modules.rst:204 msgid "" "On file systems which support symlinks, the directory containing the input " "script is calculated after the symlink is followed. In other words the " @@ -473,7 +477,7 @@ msgstr "" "κατάλογος που περιέχει το symlink **δεν** προστίθεται στη διαδρομή " "αναζήτησης του module." -#: tutorial/modules.rst:206 +#: tutorial/modules.rst:208 msgid "" "After initialization, Python programs can modify :data:`sys.path`. The " "directory containing the script being run is placed at the beginning of the " @@ -490,11 +494,11 @@ msgstr "" "βιβλιοθήκης. Αυτό είναι ένα σφάλμα, εκτός εάν προορίζεται η αντικατάσταση. " "Βλ. την ενότητα :ref:`tut-standardmodules` για περισσότερες πληροφορίες." -#: tutorial/modules.rst:219 +#: tutorial/modules.rst:221 msgid "\"Compiled\" Python files" msgstr "\"Compiled\" Python αρχεία" -#: tutorial/modules.rst:221 +#: tutorial/modules.rst:223 msgid "" "To speed up loading modules, Python caches the compiled version of each " "module in the ``__pycache__`` directory under the name :file:`module." @@ -513,7 +517,7 @@ msgstr "" "compiled modules από διαφορετικές εκδόσεις και διαφορετικές εκδόσεις της " "Python να συνυπάρχουν." -#: tutorial/modules.rst:229 +#: tutorial/modules.rst:231 msgid "" "Python checks the modification date of the source against the compiled " "version to see if it's out of date and needs to be recompiled. This is a " @@ -527,7 +531,7 @@ msgstr "" "modules είναι ανεξάρτητες από πλατφόρμα, επομένως η ίδια βιβλιοθήκη μπορεί " "να κοινοποιηθεί ανάμεσα σε συστήματα με διαφορετικές αρχιτεκτονικές." -#: tutorial/modules.rst:234 +#: tutorial/modules.rst:236 msgid "" "Python does not check the cache in two circumstances. First, it always " "recompiles and does not store the result for the module that's loaded " @@ -543,11 +547,11 @@ msgstr "" "(compiled μόνο), το compiled module πρέπει να βρίσκεται στον source κατάλογο " "και δεν πρέπει να υπάρχει source module." -#: tutorial/modules.rst:241 +#: tutorial/modules.rst:243 msgid "Some tips for experts:" msgstr "Μερικές συμβουλές για ειδικούς:" -#: tutorial/modules.rst:243 +#: tutorial/modules.rst:245 msgid "" "You can use the :option:`-O` or :option:`-OO` switches on the Python command " "to reduce the size of a compiled module. The ``-O`` switch removes assert " @@ -567,7 +571,7 @@ msgstr "" "Οι μελλοντικές εκδόσεις μπορεί να αλλάξουν τα αποτελέσματα της " "βελτιστοποίησης." -#: tutorial/modules.rst:251 +#: tutorial/modules.rst:253 msgid "" "A program doesn't run any faster when it is read from a ``.pyc`` file than " "when it is read from a ``.py`` file; the only thing that's faster about ``." @@ -578,7 +582,7 @@ msgstr "" "είναι πιο γρήγορο από τα αρχεία ``.pyc`` είναι η ταχύτητα με την οποία " "φορτώνονται." -#: tutorial/modules.rst:255 +#: tutorial/modules.rst:257 msgid "" "The module :mod:`compileall` can create .pyc files for all modules in a " "directory." @@ -586,7 +590,7 @@ msgstr "" "Το module :mod:`compileall` μπορεί να δημιουργήσει αρχεία .pyc για όλα τα " "modules σε ένα κατάλογο." -#: tutorial/modules.rst:258 +#: tutorial/modules.rst:260 msgid "" "There is more detail on this process, including a flow chart of the " "decisions, in :pep:`3147`." @@ -594,11 +598,11 @@ msgstr "" "Υπάρχουν περισσότερες λεπτομέρειες σχετικά με αυτή τη διαδικασία, " "συμπεριλαμβανομένου ενός διαγράμματος ροής των αποφάσεων, στο :pep:`3147`." -#: tutorial/modules.rst:265 +#: tutorial/modules.rst:267 msgid "Standard Modules" msgstr "Standard Modules" -#: tutorial/modules.rst:269 +#: tutorial/modules.rst:271 msgid "" "Python comes with a library of standard modules, described in a separate " "document, the Python Library Reference (\"Library Reference\" hereafter). " @@ -626,7 +630,7 @@ msgstr "" "της Python. Οι μεταβλητές ``sys.ps1`` και ``sys.ps2`` ορίζουν τις " "συμβολοσειρές που χρησιμοποιούνται ως κύρια και δευτερεύοντα prompts::" -#: tutorial/modules.rst:281 +#: tutorial/modules.rst:283 msgid "" ">>> import sys\n" ">>> sys.ps1\n" @@ -648,7 +652,7 @@ msgstr "" "Yuck!\n" "C>" -#: tutorial/modules.rst:292 +#: tutorial/modules.rst:294 msgid "" "These two variables are only defined if the interpreter is in interactive " "mode." @@ -656,7 +660,7 @@ msgstr "" "Αυτές οι δύο μεταβλητές ορίζονται μόνο εάν ο interpreter βρίσκεται σε " "διαδραστική λειτουργία." -#: tutorial/modules.rst:294 +#: tutorial/modules.rst:296 msgid "" "The variable ``sys.path`` is a list of strings that determines the " "interpreter's search path for modules. It is initialized to a default path " @@ -671,7 +675,7 @@ msgstr "" "δεν έχει οριστεί. Μπορείτε να το τροποποιήσετε χρησιμοποιώντας τυπικές " "λειτουργίες λίστας::" -#: tutorial/modules.rst:300 +#: tutorial/modules.rst:302 msgid "" ">>> import sys\n" ">>> sys.path.append('/ufs/guido/lib/python')" @@ -679,11 +683,11 @@ msgstr "" ">>> import sys\n" ">>> sys.path.append('/ufs/guido/lib/python')" -#: tutorial/modules.rst:307 +#: tutorial/modules.rst:309 msgid "The :func:`dir` Function" msgstr "Η συνάρτηση :func:`dir`" -#: tutorial/modules.rst:309 +#: tutorial/modules.rst:311 msgid "" "The built-in function :func:`dir` is used to find out which names a module " "defines. It returns a sorted list of strings::" @@ -691,7 +695,7 @@ msgstr "" "Η ενσωματωμένη συνάρτηση :func:`dir` χρησιμοποιείται για να ανακαλύψει ποια " "ονόματα ορίζει ένα module. Επιστρέφει μια ταξινομημένη λίστα συμβολοσειρών::" -#: tutorial/modules.rst:312 +#: tutorial/modules.rst:314 msgid "" ">>> import fibo, sys\n" ">>> dir(fibo)\n" @@ -759,14 +763,14 @@ msgstr "" "'version_info',\n" " 'warnoptions']" -#: tutorial/modules.rst:338 +#: tutorial/modules.rst:340 msgid "" "Without arguments, :func:`dir` lists the names you have defined currently::" msgstr "" "Χωρίς ορίσματα, η :func:`dir` παραθέτει τα ονόματα που έχετε ορίσει αυτήν τη " "στιγμή::" -#: tutorial/modules.rst:340 +#: tutorial/modules.rst:342 msgid "" ">>> a = [1, 2, 3, 4, 5]\n" ">>> import fibo\n" @@ -780,14 +784,14 @@ msgstr "" ">>> dir()\n" "['__builtins__', '__name__', 'a', 'fib', 'fibo', 'sys']" -#: tutorial/modules.rst:346 +#: tutorial/modules.rst:348 msgid "" "Note that it lists all types of names: variables, modules, functions, etc." msgstr "" "Λάβετε υπόψη ότι παραθέτει όλους τους τύπους ονομάτων: μεταβλητές, modules, " "συναρτήσεις, κ.λπ." -#: tutorial/modules.rst:350 +#: tutorial/modules.rst:352 msgid "" ":func:`dir` does not list the names of built-in functions and variables. If " "you want a list of those, they are defined in the standard module :mod:" @@ -797,7 +801,7 @@ msgstr "" "μεταβλητών. Εάν θέλετε μια λίστα από αυτές, ορίζονται στην τυπική ενότητα :" "mod:`builtins`::" -#: tutorial/modules.rst:354 +#: tutorial/modules.rst:356 msgid "" ">>> import builtins\n" ">>> dir(builtins)\n" @@ -865,11 +869,11 @@ msgstr "" " 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'vars',\n" " 'zip']" -#: tutorial/modules.rst:389 +#: tutorial/modules.rst:391 msgid "Packages" msgstr "Πακέτα" -#: tutorial/modules.rst:391 +#: tutorial/modules.rst:393 msgid "" "Packages are a way of structuring Python's module namespace by using " "\"dotted module names\". For example, the module name :mod:`!A.B` " @@ -888,7 +892,7 @@ msgstr "" "το NumbPY ή το Pillow από το να χρειάζεται να ανησυχούν ο ένας για τα module " "ονόματα του άλλου." -#: tutorial/modules.rst:399 +#: tutorial/modules.rst:401 msgid "" "Suppose you want to design a collection of modules (a \"package\") for the " "uniform handling of sound files and sound data. There are many different " @@ -915,7 +919,7 @@ msgstr "" "αυτές τις λειτουργίες. Ακολουθεί μια πιθανή δομή για το πακέτο σας (που " "εκφράζεται ως ιεραρχικό σύστημα αρχείων):" -#: tutorial/modules.rst:410 +#: tutorial/modules.rst:412 msgid "" "sound/ Top-level package\n" " __init__.py Initialize the sound package\n" @@ -965,7 +969,7 @@ msgstr "" " karaoke.py\n" " ..." -#: tutorial/modules.rst:436 +#: tutorial/modules.rst:438 msgid "" "When importing the package, Python searches through the directories on ``sys." "path`` looking for the package subdirectory." @@ -973,7 +977,7 @@ msgstr "" "Κατά την εισαγωγή του πακέτου, η Python πραγματοποιεί αναζήτηση στους " "καταλόγους στο ``sys.path`` αναζητώντας τον υποκατάλογο του πακέτου." -#: tutorial/modules.rst:439 +#: tutorial/modules.rst:441 msgid "" "The :file:`__init__.py` files are required to make Python treat directories " "containing the file as packages (unless using a :term:`namespace package`, a " @@ -993,7 +997,7 @@ msgstr "" "εκτελέσει initialization κώδικα για το πακέτο ή να ορίσει την μεταβλητή " "``__all__``, που περιγράφεται αργότερα." -#: tutorial/modules.rst:447 +#: tutorial/modules.rst:449 msgid "" "Users of the package can import individual modules from the package, for " "example::" @@ -1001,11 +1005,11 @@ msgstr "" "Οι χρήστες του πακέτου μπορούν να εισάγουν μεμονωμένα module από το πακέτο, " "για παράδειγμα::" -#: tutorial/modules.rst:450 +#: tutorial/modules.rst:452 msgid "import sound.effects.echo" msgstr "import sound.effects.echo" -#: tutorial/modules.rst:452 +#: tutorial/modules.rst:454 msgid "" "This loads the submodule :mod:`!sound.effects.echo`. It must be referenced " "with its full name. ::" @@ -1013,19 +1017,19 @@ msgstr "" "Αυτό φορτώνει το submodule :mod:`!sound.effects.echo`. Πρέπει να αναφέρεται " "με το πλήρες όνομά του. ::" -#: tutorial/modules.rst:455 +#: tutorial/modules.rst:457 msgid "sound.effects.echo.echofilter(input, output, delay=0.7, atten=4)" msgstr "sound.effects.echo.echofilter(input, output, delay=0.7, atten=4)" -#: tutorial/modules.rst:457 +#: tutorial/modules.rst:459 msgid "An alternative way of importing the submodule is::" msgstr "Ένα εναλλακτικός τρόπος για την εισαγωγή του submodule είναι::" -#: tutorial/modules.rst:459 +#: tutorial/modules.rst:461 msgid "from sound.effects import echo" msgstr "from sound.effects import echo" -#: tutorial/modules.rst:461 +#: tutorial/modules.rst:463 msgid "" "This also loads the submodule :mod:`!echo`, and makes it available without " "its package prefix, so it can be used as follows::" @@ -1033,11 +1037,11 @@ msgstr "" "Αυτό φορτώνει επίσης το submodule :mod:`!echo`, και την καθιστά διαθέσιμη " "χωρίς το πρόθεμα πακέτου, ώστε να μπορεί να χρησιμοποιηθεί ως εξής::" -#: tutorial/modules.rst:464 +#: tutorial/modules.rst:466 msgid "echo.echofilter(input, output, delay=0.7, atten=4)" msgstr "echo.echofilter(input, output, delay=0.7, atten=4)" -#: tutorial/modules.rst:466 +#: tutorial/modules.rst:468 msgid "" "Yet another variation is to import the desired function or variable " "directly::" @@ -1045,11 +1049,11 @@ msgstr "" "Μια άλλη παραλλαγή είναι η απευθείας εισαγωγή της επιθυμητής συνάρτησης ή " "μεταβλητής::" -#: tutorial/modules.rst:468 +#: tutorial/modules.rst:470 msgid "from sound.effects.echo import echofilter" msgstr "from sound.effects.echo import echofilter" -#: tutorial/modules.rst:470 +#: tutorial/modules.rst:472 msgid "" "Again, this loads the submodule :mod:`!echo`, but this makes its function :" "func:`!echofilter` directly available::" @@ -1057,11 +1061,11 @@ msgstr "" "Και πάλι, αυτό φορτώνει το submodule :mod:`!echo`, αλλά αυτό κάνει τη " "συνάρτηση της :func:`!echofilter` άμεσα διαθέσιμη::" -#: tutorial/modules.rst:473 +#: tutorial/modules.rst:475 msgid "echofilter(input, output, delay=0.7, atten=4)" msgstr "echofilter(input, output, delay=0.7, atten=4)" -#: tutorial/modules.rst:475 +#: tutorial/modules.rst:477 msgid "" "Note that when using ``from package import item``, the item can be either a " "submodule (or subpackage) of the package, or some other name defined in the " @@ -1077,7 +1081,7 @@ msgstr "" "όχι, υποθέτει ότι είναι ένα module και επιχειρεί να το φορτώσει , αν δεν το " "βρει δημιουργεί η εξαίρεση :exc:`ImportError`." -#: tutorial/modules.rst:482 +#: tutorial/modules.rst:484 msgid "" "Contrarily, when using syntax like ``import item.subitem.subsubitem``, each " "item except for the last must be a package; the last item can be a module or " @@ -1090,11 +1094,11 @@ msgstr "" "δεν μπορεί να είναι μια κλάση ή συνάρτηση ή μεταβλητή που ορίζεται από " "προηγούμενο στοιχείο." -#: tutorial/modules.rst:491 +#: tutorial/modules.rst:493 msgid "Importing \\* From a Package" msgstr "Εισάγοντας \\* από ένα Πακέτο" -#: tutorial/modules.rst:495 +#: tutorial/modules.rst:497 msgid "" "Now what happens when the user writes ``from sound.effects import *``? " "Ideally, one would hope that this somehow goes out to the filesystem, finds " @@ -1109,7 +1113,7 @@ msgstr "" "μπορεί να έχει ανεπιθύμητες παρενέργειες που θα έπρεπε να συμβούν όταν το " "submodule εισάγεται ρητά." -#: tutorial/modules.rst:501 +#: tutorial/modules.rst:503 msgid "" "The only solution is for the package author to provide an explicit index of " "the package. The :keyword:`import` statement uses the following convention: " @@ -1133,11 +1137,11 @@ msgstr "" "παράδειγμα το αρχείο :file:`sound/effects/__init__.py` θα μπορούσε να " "περιέχει τον ακόλουθο κώδικα::" -#: tutorial/modules.rst:511 +#: tutorial/modules.rst:513 msgid "__all__ = [\"echo\", \"surround\", \"reverse\"]" msgstr "__all__ = [\"echo\", \"surround\", \"reverse\"]" -#: tutorial/modules.rst:513 +#: tutorial/modules.rst:515 msgid "" "This would mean that ``from sound.effects import *`` would import the three " "named submodules of the :mod:`!sound.effects` package." @@ -1145,7 +1149,7 @@ msgstr "" "Αυτό θα σήμαινε ότι ``from sound.effects import *`` θα εισαγάγει τα τρία " "submodules με το όνομα του πακέτου :mod:`!sound.effects`." -#: tutorial/modules.rst:516 +#: tutorial/modules.rst:518 msgid "" "Be aware that submodules might become shadowed by locally defined names. For " "example, if you added a ``reverse`` function to the :file:`sound/effects/" @@ -1161,7 +1165,7 @@ msgstr "" "``surround``, αλλά *όχι* το submodule ``reverse``, επειδή επισκιάζεται από " "την τοπικά καθορισμένη συνάρτηση ``reverse``::" -#: tutorial/modules.rst:523 +#: tutorial/modules.rst:525 msgid "" "__all__ = [\n" " \"echo\", # refers to the 'echo.py' file\n" @@ -1181,7 +1185,7 @@ msgstr "" "def reverse(msg: str): # <-- this name shadows the 'reverse.py' submodule\n" " return msg[::-1] # in the case of a 'from sound.effects import *'" -#: tutorial/modules.rst:532 +#: tutorial/modules.rst:534 msgid "" "If ``__all__`` is not defined, the statement ``from sound.effects import *`` " "does *not* import all submodules from the package :mod:`!sound.effects` into " @@ -1203,7 +1207,7 @@ msgstr "" "Περιλαμβάνει επίσης τυχόν submodules του πακέτου που φορτώθηκαν ρητά από " "προηγούμενες δηλώσεις :keyword:`import`. Σκεφτείτε αυτόν τον κώδικα::" -#: tutorial/modules.rst:541 +#: tutorial/modules.rst:543 msgid "" "import sound.effects.echo\n" "import sound.effects.surround\n" @@ -1213,7 +1217,7 @@ msgstr "" "import sound.effects.surround\n" "from sound.effects import *" -#: tutorial/modules.rst:545 +#: tutorial/modules.rst:547 msgid "" "In this example, the :mod:`!echo` and :mod:`!surround` modules are imported " "in the current namespace because they are defined in the :mod:`!sound." @@ -1225,7 +1229,7 @@ msgstr "" "effects`όταν η δήλωση ``from...import`` εκτελείται. (Αυτό λειτουργεί επίσης " "όταν ορίζεται το ``__all__``)." -#: tutorial/modules.rst:550 +#: tutorial/modules.rst:552 msgid "" "Although certain modules are designed to export only names that follow " "certain patterns when you use ``import *``, it is still considered bad " @@ -1235,7 +1239,7 @@ msgstr "" "ακολουθούν ορισμένα μοτίβα όταν χρησιμοποιείτε το ``import *``, εξακολουθεί " "να θεωρείται κακή πρακτική στον κώδικα παραγωγής." -#: tutorial/modules.rst:554 +#: tutorial/modules.rst:556 msgid "" "Remember, there is nothing wrong with using ``from package import " "specific_submodule``! In fact, this is the recommended notation unless the " @@ -1247,11 +1251,11 @@ msgstr "" "σημείωση, εκτός εάν το module εισαγωγής χρειάζεται να χρησιμοποιήσει " "submodules με το ίδιο όνομα από διαφορετικά πακέτα." -#: tutorial/modules.rst:563 +#: tutorial/modules.rst:565 msgid "Intra-package References" msgstr "Intra-package αναφορές" -#: tutorial/modules.rst:565 +#: tutorial/modules.rst:567 msgid "" "When packages are structured into subpackages (as with the :mod:`!sound` " "package in the example), you can use absolute imports to refer to submodules " @@ -1266,7 +1270,7 @@ msgstr "" "στο πακέτο :mod:`!sound.effects` , μπορεί να χρησιμοποιήσει το ``from sound." "effects import echo``." -#: tutorial/modules.rst:571 +#: tutorial/modules.rst:573 msgid "" "You can also write relative imports, with the ``from module import name`` " "form of import statement. These imports use leading dots to indicate the " @@ -1279,7 +1283,7 @@ msgstr "" "στη σχετική εισαγωγή. Από το :mod:`!surround` module για παράδειγμα, μπορεί " "να χρησιμοποιήσετε::" -#: tutorial/modules.rst:576 +#: tutorial/modules.rst:578 msgid "" "from . import echo\n" "from .. import formats\n" @@ -1289,7 +1293,7 @@ msgstr "" "from .. import formats\n" "from ..filters import equalizer" -#: tutorial/modules.rst:580 +#: tutorial/modules.rst:582 msgid "" "Note that relative imports are based on the name of the current module. " "Since the name of the main module is always ``\"__main__\"``, modules " @@ -1301,11 +1305,11 @@ msgstr "" "modules που προορίζονται για χρήση ως κύριο module μιας εφαρμογής Python " "πρέπει πάντα να χρησιμοποιούν απόλυτες εισαγωγές." -#: tutorial/modules.rst:586 +#: tutorial/modules.rst:588 msgid "Packages in Multiple Directories" msgstr "Πακέτα σε Πολλαπλούς Καταλόγους" -#: tutorial/modules.rst:588 +#: tutorial/modules.rst:590 msgid "" "Packages support one more special attribute, :attr:`~module.__path__`. This " "is initialized to be a :term:`sequence` of strings containing the name of " @@ -1320,7 +1324,7 @@ msgstr "" "μεταβλητή μπορεί να τροποποιηθεί, αυτό επηρεάζει τις μελλοντικές αναζητήσεις " "για modules και υποπακέτα που περιέχονται στο πακέτο." -#: tutorial/modules.rst:595 +#: tutorial/modules.rst:597 msgid "" "While this feature is not often needed, it can be used to extend the set of " "modules found in a package." @@ -1328,11 +1332,11 @@ msgstr "" "Ενώ αυτή η δυνατότητα δεν χρειάζεται συχνά, μπορεί να χρησιμοποιηθεί για την " "επέκταση του συνόλου των modules που βρίσκονται σε ένα πακέτο." -#: tutorial/modules.rst:600 +#: tutorial/modules.rst:602 msgid "Footnotes" msgstr "Υποσημειώσεις" -#: tutorial/modules.rst:601 +#: tutorial/modules.rst:603 msgid "" "In fact function definitions are also 'statements' that are 'executed'; the " "execution of a module-level function definition adds the function name to " @@ -1342,26 +1346,26 @@ msgstr "" "'εκτελούνται'∙ η εκτέλεση ενός ορισμού συνάρτησης σε επίπεδο module " "προσθέτει το όνομα της συνάρτησης στον καθολικό namespace του module." -#: tutorial/modules.rst:267 tutorial/modules.rst:348 +#: tutorial/modules.rst:269 tutorial/modules.rst:350 msgid "module" msgstr "module" -#: tutorial/modules.rst:184 +#: tutorial/modules.rst:186 msgid "search" msgstr "αναζήτηση" -#: tutorial/modules.rst:184 +#: tutorial/modules.rst:186 msgid "path" msgstr "path" -#: tutorial/modules.rst:267 +#: tutorial/modules.rst:269 msgid "sys" msgstr "sys" -#: tutorial/modules.rst:348 +#: tutorial/modules.rst:350 msgid "builtins" msgstr "builtins" -#: tutorial/modules.rst:493 +#: tutorial/modules.rst:495 msgid "__all__" msgstr "__all__" diff --git a/tutorial/stdlib.po b/tutorial/stdlib.po index e4215bc7..e1a8faae 100644 --- a/tutorial/stdlib.po +++ b/tutorial/stdlib.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-13 19:39+0300\n" "Last-Translator: Panagiotis Skias \n" "Language-Team: PyGreece \n" diff --git a/tutorial/stdlib2.po b/tutorial/stdlib2.po index ba67af54..0a373b70 100644 --- a/tutorial/stdlib2.po +++ b/tutorial/stdlib2.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-13 19:38+0300\n" "Last-Translator: Panagiotis Skias \n" "Language-Team: PyGreece \n" diff --git a/tutorial/venv.po b/tutorial/venv.po index 21601439..491b1f15 100644 --- a/tutorial/venv.po +++ b/tutorial/venv.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2024-06-13 23:10+0300\n" "Last-Translator: Panagiotis Skias \n" "Language-Team: PyGreece \n" diff --git a/tutorial/whatnow.po b/tutorial/whatnow.po index 31be85f1..c4558457 100644 --- a/tutorial/whatnow.po +++ b/tutorial/whatnow.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2024-06-12 09:07+0300\n" "Last-Translator: Panagiotis Skias \n" "Language-Team: PyGreece \n" diff --git a/using/android.po b/using/android.po index 6f5697c4..ddf47479 100644 --- a/using/android.po +++ b/using/android.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.13\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -142,3 +142,16 @@ msgid "" "testbed/app/src/main/c/main_activity.c>`. This will need to be C code called " "via JNI." msgstr "" + +#: using/android.rst:68 +msgid "Building a Python package for Android" +msgstr "" + +#: using/android.rst:70 +msgid "" +"Python packages can be built for Android as wheels and released on PyPI. The " +"recommended tool for doing this is `cibuildwheel `__, which automates all the details of " +"setting up a cross-compilation environment, building the wheel, and testing " +"it on an emulator." +msgstr "" diff --git a/using/cmdline.po b/using/cmdline.po index 6c2cefb8..07f85362 100644 --- a/using/cmdline.po +++ b/using/cmdline.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/using/configure.po b/using/configure.po index 13d82e67..64da2224 100644 --- a/using/configure.po +++ b/using/configure.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -361,7 +361,7 @@ msgid "" "cleared." msgstr "" -#: using/configure.rst:741 +#: using/configure.rst:749 msgid "Effects:" msgstr "" @@ -517,8 +517,8 @@ msgstr "" #: using/configure.rst:293 msgid "" -"Enables **experimental** support for running Python without the :term:" -"`global interpreter lock` (GIL): free threading build." +"Enables support for running Python without the :term:`global interpreter " +"lock` (GIL): free threading build." msgstr "" #: using/configure.rst:296 @@ -586,11 +586,11 @@ msgstr "" msgid "C compiler options" msgstr "" -#: using/configure.rst:1308 +#: using/configure.rst:1316 msgid "C compiler command." msgstr "" -#: using/configure.rst:1320 +#: using/configure.rst:1328 msgid "C compiler flags." msgstr "" @@ -602,7 +602,7 @@ msgstr "" msgid "C preprocessor flags, e.g. :samp:`-I{include_dir}`." msgstr "" -#: using/configure.rst:812 +#: using/configure.rst:820 msgid "Linker options" msgstr "" @@ -693,128 +693,134 @@ msgid "" msgstr "" #: using/configure.rst:451 +msgid "" +"C compiler and linker flags for ``libzstd``, used by :mod:`compression.zstd` " +"module, overriding ``pkg-config``." +msgstr "" + +#: using/configure.rst:459 msgid "C compiler and linker flags for PANEL, overriding ``pkg-config``." msgstr "" -#: using/configure.rst:453 +#: using/configure.rst:461 msgid "" "C compiler and linker flags for ``libpanel`` or ``libpanelw``, used by :mod:" "`curses.panel` module, overriding ``pkg-config``." msgstr "" -#: using/configure.rst:459 +#: using/configure.rst:467 msgid "C compiler and linker flags for TCLTK, overriding ``pkg-config``." msgstr "" -#: using/configure.rst:464 +#: using/configure.rst:472 msgid "" "C compiler and linker flags for ``libzlib``, used by :mod:`gzip` module, " "overriding ``pkg-config``." msgstr "" -#: using/configure.rst:469 +#: using/configure.rst:477 msgid "WebAssembly Options" msgstr "" -#: using/configure.rst:473 +#: using/configure.rst:481 msgid "Turn on dynamic linking support for WASM." msgstr "" -#: using/configure.rst:475 +#: using/configure.rst:483 msgid "" "Dynamic linking enables ``dlopen``. File size of the executable increases " "due to limited dead code elimination and additional features." msgstr "" -#: using/configure.rst:482 +#: using/configure.rst:490 msgid "Turn on pthreads support for WASM." msgstr "" -#: using/configure.rst:488 +#: using/configure.rst:496 msgid "Install Options" msgstr "" -#: using/configure.rst:492 +#: using/configure.rst:500 msgid "" "Install architecture-independent files in PREFIX. On Unix, it defaults to :" "file:`/usr/local`." msgstr "" -#: using/configure.rst:495 +#: using/configure.rst:503 msgid "This value can be retrieved at runtime using :data:`sys.prefix`." msgstr "" -#: using/configure.rst:497 +#: using/configure.rst:505 msgid "" "As an example, one can use ``--prefix=\"$HOME/.local/\"`` to install a " "Python in its home directory." msgstr "" -#: using/configure.rst:502 +#: using/configure.rst:510 msgid "" "Install architecture-dependent files in EPREFIX, defaults to :option:`--" "prefix`." msgstr "" -#: using/configure.rst:504 +#: using/configure.rst:512 msgid "This value can be retrieved at runtime using :data:`sys.exec_prefix`." msgstr "" -#: using/configure.rst:508 +#: using/configure.rst:516 msgid "" "Don't build nor install test modules, like the :mod:`test` package or the :" "mod:`!_testcapi` extension module (built and installed by default)." msgstr "" -#: using/configure.rst:515 +#: using/configure.rst:523 msgid "Select the :mod:`ensurepip` command run on Python installation:" msgstr "" -#: using/configure.rst:517 +#: using/configure.rst:525 msgid "" "``upgrade`` (default): run ``python -m ensurepip --altinstall --upgrade`` " "command." msgstr "" -#: using/configure.rst:519 +#: using/configure.rst:527 msgid "``install``: run ``python -m ensurepip --altinstall`` command;" msgstr "" -#: using/configure.rst:520 +#: using/configure.rst:528 msgid "``no``: don't run ensurepip;" msgstr "" -#: using/configure.rst:526 +#: using/configure.rst:534 msgid "Performance options" msgstr "" -#: using/configure.rst:528 +#: using/configure.rst:536 msgid "" "Configuring Python using ``--enable-optimizations --with-lto`` (PGO + LTO) " "is recommended for best performance. The experimental ``--enable-bolt`` flag " "can also be used to improve performance." msgstr "" -#: using/configure.rst:534 +#: using/configure.rst:542 msgid "" "Enable Profile Guided Optimization (PGO) using :envvar:`PROFILE_TASK` " "(disabled by default)." msgstr "" -#: using/configure.rst:537 +#: using/configure.rst:545 msgid "" "The C compiler Clang requires ``llvm-profdata`` program for PGO. On macOS, " "GCC also requires it: GCC is just an alias to Clang on macOS." msgstr "" -#: using/configure.rst:540 +#: using/configure.rst:548 msgid "" "Disable also semantic interposition in libpython if ``--enable-shared`` and " "GCC is used: add ``-fno-semantic-interposition`` to the compiler and linker " "flags." msgstr "" -#: using/configure.rst:546 +#: using/configure.rst:554 msgid "" "During the build, you may encounter compiler warnings about profile data not " "being available for some source files. These warnings are harmless, as only " @@ -823,58 +829,58 @@ msgid "" "profile-instr-unprofiled`` to :envvar:`CFLAGS`." msgstr "" -#: using/configure.rst:555 +#: using/configure.rst:563 msgid "Use ``-fno-semantic-interposition`` on GCC." msgstr "" -#: using/configure.rst:560 +#: using/configure.rst:568 msgid "" "Environment variable used in the Makefile: Python command line arguments for " "the PGO generation task." msgstr "" -#: using/configure.rst:563 +#: using/configure.rst:571 msgid "Default: ``-m test --pgo --timeout=$(TESTTIMEOUT)``." msgstr "" -#: using/configure.rst:567 +#: using/configure.rst:575 msgid "Task failure is no longer ignored silently." msgstr "" -#: using/configure.rst:572 +#: using/configure.rst:580 msgid "Enable Link Time Optimization (LTO) in any build (disabled by default)." msgstr "" -#: using/configure.rst:574 +#: using/configure.rst:582 msgid "" "The C compiler Clang requires ``llvm-ar`` for LTO (``ar`` on macOS), as well " "as an LTO-aware linker (``ld.gold`` or ``lld``)." msgstr "" -#: using/configure.rst:579 +#: using/configure.rst:587 msgid "To use ThinLTO feature, use ``--with-lto=thin`` on Clang." msgstr "" -#: using/configure.rst:582 +#: using/configure.rst:590 msgid "" "Use ThinLTO as the default optimization policy on Clang if the compiler " "accepts the flag." msgstr "" -#: using/configure.rst:587 +#: using/configure.rst:595 msgid "" "Enable usage of the `BOLT post-link binary optimizer `_ (disabled by default)." msgstr "" -#: using/configure.rst:591 +#: using/configure.rst:599 msgid "" "BOLT is part of the LLVM project but is not always included in their binary " "distributions. This flag requires that ``llvm-bolt`` and ``merge-fdata`` are " "available." msgstr "" -#: using/configure.rst:595 +#: using/configure.rst:603 msgid "" "BOLT is still a fairly new project so this flag should be considered " "experimental for now. Because this tool operates on machine code its success " @@ -885,7 +891,7 @@ msgid "" "encouraged." msgstr "" -#: using/configure.rst:603 +#: using/configure.rst:611 msgid "" "The :envvar:`!BOLT_INSTRUMENT_FLAGS` and :envvar:`!BOLT_APPLY_FLAGS` :" "program:`configure` variables can be defined to override the default set of " @@ -893,23 +899,23 @@ msgid "" "binaries, respectively." msgstr "" -#: using/configure.rst:612 +#: using/configure.rst:620 msgid "" "Arguments to ``llvm-bolt`` when creating a `BOLT optimized binary `_." msgstr "" -#: using/configure.rst:619 +#: using/configure.rst:627 msgid "Arguments to ``llvm-bolt`` when instrumenting binaries." msgstr "" -#: using/configure.rst:625 +#: using/configure.rst:633 msgid "" "Enable computed gotos in evaluation loop (enabled by default on supported " "compilers)." msgstr "" -#: using/configure.rst:630 +#: using/configure.rst:638 msgid "" "Enable interpreters using tail calls in CPython. If enabled, enabling PGO (:" "option:`--enable-optimizations`) is highly recommended. This option " @@ -919,46 +925,46 @@ msgid "" "feature." msgstr "" -#: using/configure.rst:640 +#: using/configure.rst:648 msgid "" "Disable the fast :ref:`mimalloc ` allocator (enabled by default)." msgstr "" -#: using/configure.rst:650 +#: using/configure.rst:658 msgid "See also :envvar:`PYTHONMALLOC` environment variable." msgstr "" -#: using/configure.rst:647 +#: using/configure.rst:655 msgid "" "Disable the specialized Python memory allocator :ref:`pymalloc ` " "(enabled by default)." msgstr "" -#: using/configure.rst:654 +#: using/configure.rst:662 msgid "" "Disable static documentation strings to reduce the memory footprint (enabled " "by default). Documentation strings defined in Python are not affected." msgstr "" -#: using/configure.rst:657 +#: using/configure.rst:665 msgid "Don't define the ``WITH_DOC_STRINGS`` macro." msgstr "" -#: using/configure.rst:659 +#: using/configure.rst:667 msgid "See the ``PyDoc_STRVAR()`` macro." msgstr "" -#: using/configure.rst:663 +#: using/configure.rst:671 msgid "Enable C-level code profiling with ``gprof`` (disabled by default)." msgstr "" -#: using/configure.rst:667 +#: using/configure.rst:675 msgid "" "Add ``-fstrict-overflow`` to the C compiler flags (by default we add ``-fno-" "strict-overflow`` instead)." msgstr "" -#: using/configure.rst:672 +#: using/configure.rst:680 msgid "" "Deactivate remote debugging support described in :pep:`768` (enabled by " "default). When this flag is provided the code that allows the interpreter to " @@ -968,61 +974,61 @@ msgid "" "executed." msgstr "" -#: using/configure.rst:685 +#: using/configure.rst:693 msgid "Python Debug Build" msgstr "" -#: using/configure.rst:687 +#: using/configure.rst:695 msgid "" "A debug build is Python built with the :option:`--with-pydebug` configure " "option." msgstr "" -#: using/configure.rst:690 +#: using/configure.rst:698 msgid "Effects of a debug build:" msgstr "" -#: using/configure.rst:692 +#: using/configure.rst:700 msgid "" "Display all warnings by default: the list of default warning filters is " "empty in the :mod:`warnings` module." msgstr "" -#: using/configure.rst:694 +#: using/configure.rst:702 msgid "Add ``d`` to :data:`sys.abiflags`." msgstr "" -#: using/configure.rst:695 +#: using/configure.rst:703 msgid "Add :func:`!sys.gettotalrefcount` function." msgstr "" -#: using/configure.rst:696 +#: using/configure.rst:704 msgid "Add :option:`-X showrefcount <-X>` command line option." msgstr "" -#: using/configure.rst:697 +#: using/configure.rst:705 msgid "" "Add :option:`-d` command line option and :envvar:`PYTHONDEBUG` environment " "variable to debug the parser." msgstr "" -#: using/configure.rst:699 +#: using/configure.rst:707 msgid "" "Add support for the ``__lltrace__`` variable: enable low-level tracing in " "the bytecode evaluation loop if the variable is defined." msgstr "" -#: using/configure.rst:701 +#: using/configure.rst:709 msgid "" "Install :ref:`debug hooks on memory allocators ` " "to detect buffer overflow and other memory errors." msgstr "" -#: using/configure.rst:703 +#: using/configure.rst:711 msgid "Define ``Py_DEBUG`` and ``Py_REF_DEBUG`` macros." msgstr "" -#: using/configure.rst:704 +#: using/configure.rst:712 msgid "" "Add runtime checks: code surrounded by ``#ifdef Py_DEBUG`` and ``#endif``. " "Enable ``assert(...)`` and ``_PyObject_ASSERT(...)`` assertions: don't set " @@ -1030,317 +1036,317 @@ msgid "" "option). Main runtime checks:" msgstr "" -#: using/configure.rst:709 +#: using/configure.rst:717 msgid "Add sanity checks on the function arguments." msgstr "" -#: using/configure.rst:710 +#: using/configure.rst:718 msgid "" "Unicode and int objects are created with their memory filled with a pattern " "to detect usage of uninitialized objects." msgstr "" -#: using/configure.rst:712 +#: using/configure.rst:720 msgid "" "Ensure that functions which can clear or replace the current exception are " "not called with an exception raised." msgstr "" -#: using/configure.rst:714 +#: using/configure.rst:722 msgid "Check that deallocator functions don't change the current exception." msgstr "" -#: using/configure.rst:715 +#: using/configure.rst:723 msgid "" "The garbage collector (:func:`gc.collect` function) runs some basic checks " "on objects consistency." msgstr "" -#: using/configure.rst:717 +#: using/configure.rst:725 msgid "" "The :c:macro:`!Py_SAFE_DOWNCAST()` macro checks for integer underflow and " "overflow when downcasting from wide types to narrow types." msgstr "" -#: using/configure.rst:720 +#: using/configure.rst:728 msgid "" "See also the :ref:`Python Development Mode ` and the :option:`--" "with-trace-refs` configure option." msgstr "" -#: using/configure.rst:723 +#: using/configure.rst:731 msgid "" "Release builds and debug builds are now ABI compatible: defining the " "``Py_DEBUG`` macro no longer implies the ``Py_TRACE_REFS`` macro (see the :" "option:`--with-trace-refs` option)." msgstr "" -#: using/configure.rst:730 +#: using/configure.rst:738 msgid "Debug options" msgstr "" -#: using/configure.rst:734 +#: using/configure.rst:742 msgid "" ":ref:`Build Python in debug mode `: define the ``Py_DEBUG`` " "macro (disabled by default)." msgstr "" -#: using/configure.rst:739 +#: using/configure.rst:747 msgid "Enable tracing references for debugging purpose (disabled by default)." msgstr "" -#: using/configure.rst:743 +#: using/configure.rst:751 msgid "Define the ``Py_TRACE_REFS`` macro." msgstr "" -#: using/configure.rst:744 +#: using/configure.rst:752 msgid "Add :func:`sys.getobjects` function." msgstr "" -#: using/configure.rst:745 +#: using/configure.rst:753 msgid "Add :envvar:`PYTHONDUMPREFS` environment variable." msgstr "" -#: using/configure.rst:747 +#: using/configure.rst:755 msgid "" "The :envvar:`PYTHONDUMPREFS` environment variable can be used to dump " "objects and reference counts still alive at Python exit." msgstr "" -#: using/configure.rst:750 +#: using/configure.rst:758 msgid ":ref:`Statically allocated objects ` are not traced." msgstr "" -#: using/configure.rst:754 +#: using/configure.rst:762 msgid "" "This build is now ABI compatible with release build and :ref:`debug build " "`." msgstr "" -#: using/configure.rst:760 +#: using/configure.rst:768 msgid "" "Build with C assertions enabled (default is no): ``assert(...);`` and " "``_PyObject_ASSERT(...);``." msgstr "" -#: using/configure.rst:763 +#: using/configure.rst:771 msgid "" "If set, the ``NDEBUG`` macro is not defined in the :envvar:`OPT` compiler " "variable." msgstr "" -#: using/configure.rst:766 +#: using/configure.rst:774 msgid "" "See also the :option:`--with-pydebug` option (:ref:`debug build `) which also enables assertions." msgstr "" -#: using/configure.rst:773 +#: using/configure.rst:781 msgid "Enable Valgrind support (default is no)." msgstr "" -#: using/configure.rst:777 +#: using/configure.rst:785 msgid "Enable DTrace support (default is no)." msgstr "" -#: using/configure.rst:779 +#: using/configure.rst:787 msgid "" "See :ref:`Instrumenting CPython with DTrace and SystemTap `." msgstr "" -#: using/configure.rst:786 +#: using/configure.rst:794 msgid "" "Enable AddressSanitizer memory error detector, ``asan`` (default is no)." msgstr "" -#: using/configure.rst:792 +#: using/configure.rst:800 msgid "" "Enable MemorySanitizer allocation error detector, ``msan`` (default is no)." msgstr "" -#: using/configure.rst:798 +#: using/configure.rst:806 msgid "" "Enable UndefinedBehaviorSanitizer undefined behaviour detector, ``ubsan`` " "(default is no)." msgstr "" -#: using/configure.rst:805 +#: using/configure.rst:813 msgid "Enable ThreadSanitizer data race detector, ``tsan`` (default is no)." msgstr "" -#: using/configure.rst:816 +#: using/configure.rst:824 msgid "Enable building a shared Python library: ``libpython`` (default is no)." msgstr "" -#: using/configure.rst:820 +#: using/configure.rst:828 msgid "" "Do not build ``libpythonMAJOR.MINOR.a`` and do not install ``python.o`` " "(built and enabled by default)." msgstr "" -#: using/configure.rst:827 +#: using/configure.rst:835 msgid "Libraries options" msgstr "" -#: using/configure.rst:831 +#: using/configure.rst:839 msgid "Link against additional libraries (default is no)." msgstr "" -#: using/configure.rst:835 +#: using/configure.rst:843 msgid "" "Build the :mod:`!pyexpat` module using an installed ``expat`` library " "(default is no)." msgstr "" -#: using/configure.rst:840 +#: using/configure.rst:848 msgid "" "Build the ``_decimal`` extension module using an installed ``mpdecimal`` " "library, see the :mod:`decimal` module (default is yes)." msgstr "" -#: using/configure.rst:845 +#: using/configure.rst:853 msgid "Default to using the installed ``mpdecimal`` library." msgstr "" -#: using/configure.rst:848 +#: using/configure.rst:856 msgid "" "A copy of the ``mpdecimal`` library sources will no longer be distributed " "with Python 3.15." msgstr "" -#: using/configure.rst:852 +#: using/configure.rst:860 msgid ":option:`LIBMPDEC_CFLAGS` and :option:`LIBMPDEC_LIBS`." msgstr "" -#: using/configure.rst:856 +#: using/configure.rst:864 msgid "Designate a backend library for the :mod:`readline` module." msgstr "" -#: using/configure.rst:858 +#: using/configure.rst:866 msgid "readline: Use readline as the backend." msgstr "" -#: using/configure.rst:859 +#: using/configure.rst:867 msgid "editline: Use editline as the backend." msgstr "" -#: using/configure.rst:865 +#: using/configure.rst:873 msgid "Don't build the :mod:`readline` module (built by default)." msgstr "" -#: using/configure.rst:867 +#: using/configure.rst:875 msgid "Don't define the ``HAVE_LIBREADLINE`` macro." msgstr "" -#: using/configure.rst:873 +#: using/configure.rst:881 msgid "" "Override ``libm`` math library to *STRING* (default is system-dependent)." msgstr "" -#: using/configure.rst:877 +#: using/configure.rst:885 msgid "Override ``libc`` C library to *STRING* (default is system-dependent)." msgstr "" -#: using/configure.rst:881 +#: using/configure.rst:889 msgid "Root of the OpenSSL directory." msgstr "" -#: using/configure.rst:887 +#: using/configure.rst:895 msgid "Set runtime library directory (rpath) for OpenSSL libraries:" msgstr "" -#: using/configure.rst:889 +#: using/configure.rst:897 msgid "``no`` (default): don't set rpath;" msgstr "" -#: using/configure.rst:890 +#: using/configure.rst:898 msgid "" "``auto``: auto-detect rpath from :option:`--with-openssl` and ``pkg-config``;" msgstr "" -#: using/configure.rst:892 +#: using/configure.rst:900 msgid "*DIR*: set an explicit rpath." msgstr "" -#: using/configure.rst:898 +#: using/configure.rst:906 msgid "Security Options" msgstr "" -#: using/configure.rst:902 +#: using/configure.rst:910 msgid "Select hash algorithm for use in ``Python/pyhash.c``:" msgstr "" -#: using/configure.rst:904 +#: using/configure.rst:912 msgid "``siphash13`` (default);" msgstr "" -#: using/configure.rst:905 +#: using/configure.rst:913 msgid "``siphash24``;" msgstr "" -#: using/configure.rst:906 +#: using/configure.rst:914 msgid "``fnv``." msgstr "" -#: using/configure.rst:910 +#: using/configure.rst:918 msgid "``siphash13`` is added and it is the new default." msgstr "" -#: using/configure.rst:915 +#: using/configure.rst:923 msgid "Built-in hash modules:" msgstr "" -#: using/configure.rst:917 +#: using/configure.rst:925 msgid "``md5``;" msgstr "" -#: using/configure.rst:918 +#: using/configure.rst:926 msgid "``sha1``;" msgstr "" -#: using/configure.rst:919 +#: using/configure.rst:927 msgid "``sha256``;" msgstr "" -#: using/configure.rst:920 +#: using/configure.rst:928 msgid "``sha512``;" msgstr "" -#: using/configure.rst:921 +#: using/configure.rst:929 msgid "``sha3`` (with shake);" msgstr "" -#: using/configure.rst:922 +#: using/configure.rst:930 msgid "``blake2``." msgstr "" -#: using/configure.rst:928 +#: using/configure.rst:936 msgid "Override the OpenSSL default cipher suites string:" msgstr "" -#: using/configure.rst:930 +#: using/configure.rst:938 msgid "``python`` (default): use Python's preferred selection;" msgstr "" -#: using/configure.rst:931 +#: using/configure.rst:939 msgid "``openssl``: leave OpenSSL's defaults untouched;" msgstr "" -#: using/configure.rst:932 +#: using/configure.rst:940 msgid "*STRING*: use a custom string" msgstr "" -#: using/configure.rst:934 +#: using/configure.rst:942 msgid "See the :mod:`ssl` module." msgstr "" -#: using/configure.rst:940 +#: using/configure.rst:948 msgid "" "The settings ``python`` and *STRING* also set TLS 1.2 as minimum protocol " "version." msgstr "" -#: using/configure.rst:945 +#: using/configure.rst:953 msgid "" "Disable compiler options that are `recommended by OpenSSF`_ for security " "reasons with no performance overhead. If this option is not enabled, CPython " @@ -1349,24 +1355,24 @@ msgid "" "listed below." msgstr "" -#: using/configure.rst:949 +#: using/configure.rst:957 msgid "" "The following compiler options are disabled with :option:`!--disable-safety`:" msgstr "" -#: using/configure.rst:951 +#: using/configure.rst:959 msgid "" "`-fstack-protector-strong`_: Enable run-time checks for stack-based buffer " "overflows." msgstr "" -#: using/configure.rst:952 +#: using/configure.rst:960 msgid "" "`-Wtrampolines`_: Enable warnings about trampolines that require executable " "stacks." msgstr "" -#: using/configure.rst:962 +#: using/configure.rst:970 msgid "" "Enable compiler options that are `recommended by OpenSSF`_ for security " "reasons which require overhead. If this option is not enabled, CPython will " @@ -1375,81 +1381,81 @@ msgid "" "listed below." msgstr "" -#: using/configure.rst:966 +#: using/configure.rst:974 msgid "" "The following compiler options are enabled with :option:`!--enable-slower-" "safety`:" msgstr "" -#: using/configure.rst:968 +#: using/configure.rst:976 msgid "" "`-D_FORTIFY_SOURCE=3`_: Fortify sources with compile- and run-time checks " "for unsafe libc usage and buffer overflows." msgstr "" -#: using/configure.rst:976 +#: using/configure.rst:984 msgid "macOS Options" msgstr "" -#: using/configure.rst:978 +#: using/configure.rst:986 msgid "See :source:`Mac/README.rst`." msgstr "" -#: using/configure.rst:983 +#: using/configure.rst:991 msgid "" "Create a universal binary build. *SDKDIR* specifies which macOS SDK should " "be used to perform the build (default is no)." msgstr "" -#: using/configure.rst:989 +#: using/configure.rst:997 msgid "" "Create a Python.framework rather than a traditional Unix install. Optional " "*INSTALLDIR* specifies the installation path (default is no)." msgstr "" -#: using/configure.rst:994 +#: using/configure.rst:1002 msgid "" "Specify the kind of universal binary that should be created. This option is " "only valid when :option:`--enable-universalsdk` is set." msgstr "" -#: using/configure.rst:997 +#: using/configure.rst:1005 msgid "Options:" msgstr "" -#: using/configure.rst:999 +#: using/configure.rst:1007 msgid "``universal2`` (x86-64 and arm64);" msgstr "" -#: using/configure.rst:1000 +#: using/configure.rst:1008 msgid "``32-bit`` (PPC and i386);" msgstr "" -#: using/configure.rst:1001 +#: using/configure.rst:1009 msgid "``64-bit`` (PPC64 and x86-64);" msgstr "" -#: using/configure.rst:1002 +#: using/configure.rst:1010 msgid "``3-way`` (i386, PPC and x86-64);" msgstr "" -#: using/configure.rst:1003 +#: using/configure.rst:1011 msgid "``intel`` (i386 and x86-64);" msgstr "" -#: using/configure.rst:1004 +#: using/configure.rst:1012 msgid "``intel-32`` (i386);" msgstr "" -#: using/configure.rst:1005 +#: using/configure.rst:1013 msgid "``intel-64`` (x86-64);" msgstr "" -#: using/configure.rst:1006 +#: using/configure.rst:1014 msgid "``all`` (PPC, i386, PPC64 and x86-64)." msgstr "" -#: using/configure.rst:1008 +#: using/configure.rst:1016 msgid "" "Note that values for this configuration item are *not* the same as the " "identifiers used for universal binary wheels on macOS. See the Python " @@ -1458,13 +1464,13 @@ msgid "" "platform-compatibility-tags/#macos>`_" msgstr "" -#: using/configure.rst:1016 +#: using/configure.rst:1024 msgid "" "Specify the name for the python framework on macOS only valid when :option:" "`--enable-framework` is set (default: ``Python``)." msgstr "" -#: using/configure.rst:1022 +#: using/configure.rst:1030 msgid "" "The Python standard library contains strings that are known to trigger " "automated inspection tool errors when submitted for distribution by the " @@ -1473,29 +1479,29 @@ msgid "" "can also be specified. This option is disabled by default." msgstr "" -#: using/configure.rst:1031 +#: using/configure.rst:1039 msgid "iOS Options" msgstr "" -#: using/configure.rst:1033 +#: using/configure.rst:1041 msgid "See :source:`iOS/README.rst`." msgstr "" -#: using/configure.rst:1037 +#: using/configure.rst:1045 msgid "" "Create a Python.framework. Unlike macOS, the *INSTALLDIR* argument " "specifying the installation path is mandatory." msgstr "" -#: using/configure.rst:1042 +#: using/configure.rst:1050 msgid "Specify the name for the framework (default: ``Python``)." msgstr "" -#: using/configure.rst:1046 +#: using/configure.rst:1054 msgid "Cross Compiling Options" msgstr "" -#: using/configure.rst:1048 +#: using/configure.rst:1056 msgid "" "Cross compiling, also known as cross building, can be used to build Python " "for another CPU architecture or platform. Cross compiling requires a Python " @@ -1503,28 +1509,28 @@ msgid "" "match the version of the cross compiled host Python." msgstr "" -#: using/configure.rst:1055 +#: using/configure.rst:1063 msgid "" "configure for building on BUILD, usually guessed by :program:`config.guess`." msgstr "" -#: using/configure.rst:1059 +#: using/configure.rst:1067 msgid "cross-compile to build programs to run on HOST (target platform)" msgstr "" -#: using/configure.rst:1063 +#: using/configure.rst:1071 msgid "path to build ``python`` binary for cross compiling" msgstr "" -#: using/configure.rst:1069 +#: using/configure.rst:1077 msgid "An environment variable that points to a file with configure overrides." msgstr "" -#: using/configure.rst:1071 +#: using/configure.rst:1079 msgid "Example *config.site* file:" msgstr "" -#: using/configure.rst:1073 +#: using/configure.rst:1081 msgid "" "# config.site-aarch64\n" "ac_cv_buggy_getaddrinfo=no\n" @@ -1532,15 +1538,15 @@ msgid "" "ac_cv_file__dev_ptc=no" msgstr "" -#: using/configure.rst:1082 +#: using/configure.rst:1090 msgid "Program to run CPython for the host platform for cross-compilation." msgstr "" -#: using/configure.rst:1087 +#: using/configure.rst:1095 msgid "Cross compiling example::" msgstr "" -#: using/configure.rst:1089 +#: using/configure.rst:1097 msgid "" "CONFIG_SITE=config.site-aarch64 ../configure \\\n" " --build=x86_64-pc-linux-gnu \\\n" @@ -1548,64 +1554,64 @@ msgid "" " --with-build-python=../x86_64/python" msgstr "" -#: using/configure.rst:1096 +#: using/configure.rst:1104 msgid "Python Build System" msgstr "" -#: using/configure.rst:1099 +#: using/configure.rst:1107 msgid "Main files of the build system" msgstr "" -#: using/configure.rst:1101 +#: using/configure.rst:1109 msgid ":file:`configure.ac` => :file:`configure`;" msgstr "" -#: using/configure.rst:1102 +#: using/configure.rst:1110 msgid "" ":file:`Makefile.pre.in` => :file:`Makefile` (created by :file:`configure`);" msgstr "" -#: using/configure.rst:1103 +#: using/configure.rst:1111 msgid ":file:`pyconfig.h` (created by :file:`configure`);" msgstr "" -#: using/configure.rst:1104 +#: using/configure.rst:1112 msgid "" ":file:`Modules/Setup`: C extensions built by the Makefile using :file:" "`Module/makesetup` shell script;" msgstr "" -#: using/configure.rst:1108 +#: using/configure.rst:1116 msgid "Main build steps" msgstr "" -#: using/configure.rst:1110 +#: using/configure.rst:1118 msgid "C files (``.c``) are built as object files (``.o``)." msgstr "" -#: using/configure.rst:1111 +#: using/configure.rst:1119 msgid "A static ``libpython`` library (``.a``) is created from objects files." msgstr "" -#: using/configure.rst:1112 +#: using/configure.rst:1120 msgid "" "``python.o`` and the static ``libpython`` library are linked into the final " "``python`` program." msgstr "" -#: using/configure.rst:1114 +#: using/configure.rst:1122 msgid "C extensions are built by the Makefile (see :file:`Modules/Setup`)." msgstr "" -#: using/configure.rst:1117 +#: using/configure.rst:1125 msgid "Main Makefile targets" msgstr "" -#: using/configure.rst:1120 +#: using/configure.rst:1128 msgid "make" msgstr "" -#: using/configure.rst:1122 +#: using/configure.rst:1130 msgid "" "For the most part, when rebuilding after editing some code or refreshing " "your checkout from upstream, all you need to do is execute ``make``, which " @@ -1616,22 +1622,22 @@ msgid "" "all`` will build. The three choices are:" msgstr "" -#: using/configure.rst:1131 +#: using/configure.rst:1139 msgid "``profile-opt`` (configured with ``--enable-optimizations``)" msgstr "" -#: using/configure.rst:1132 +#: using/configure.rst:1140 msgid "" "``build_wasm`` (chosen if the host platform matches ``wasm32-wasi*`` or " "``wasm32-emscripten``)" msgstr "" -#: using/configure.rst:1134 +#: using/configure.rst:1142 msgid "" "``build_all`` (configured without explicitly using either of the others)" msgstr "" -#: using/configure.rst:1136 +#: using/configure.rst:1144 msgid "" "Depending on the most recent source file changes, Make will rebuild any " "targets (object files and executables) deemed out-of-date, including running " @@ -1644,11 +1650,11 @@ msgid "" "problems, at the expense of longer build times." msgstr "" -#: using/configure.rst:1149 +#: using/configure.rst:1157 msgid "make platform" msgstr "" -#: using/configure.rst:1151 +#: using/configure.rst:1159 msgid "" "Build the ``python`` program, but don't build the standard library extension " "modules. This generates a file named ``platform`` which contains a single " @@ -1656,91 +1662,91 @@ msgid "" "arm64-3.12`` or ``linux-x86_64-3.13``." msgstr "" -#: using/configure.rst:1158 +#: using/configure.rst:1166 msgid "make profile-opt" msgstr "" -#: using/configure.rst:1160 +#: using/configure.rst:1168 msgid "" "Build Python using profile-guided optimization (PGO). You can use the " "configure :option:`--enable-optimizations` option to make this the default " "target of the ``make`` command (``make all`` or just ``make``)." msgstr "" -#: using/configure.rst:1168 +#: using/configure.rst:1176 msgid "make clean" msgstr "" -#: using/configure.rst:1170 +#: using/configure.rst:1178 msgid "Remove built files." msgstr "" -#: using/configure.rst:1174 +#: using/configure.rst:1182 msgid "make distclean" msgstr "" -#: using/configure.rst:1176 +#: using/configure.rst:1184 msgid "" "In addition to the work done by ``make clean``, remove files created by the " "configure script. ``configure`` will have to be run before building again. " "[#]_" msgstr "" -#: using/configure.rst:1182 +#: using/configure.rst:1190 msgid "make install" msgstr "" -#: using/configure.rst:1184 +#: using/configure.rst:1192 msgid "Build the ``all`` target and install Python." msgstr "" -#: using/configure.rst:1188 +#: using/configure.rst:1196 msgid "make test" msgstr "" -#: using/configure.rst:1190 +#: using/configure.rst:1198 msgid "" "Build the ``all`` target and run the Python test suite with the ``--fast-" "ci`` option without GUI tests. Variables:" msgstr "" -#: using/configure.rst:1193 +#: using/configure.rst:1201 msgid "``TESTOPTS``: additional regrtest command-line options." msgstr "" -#: using/configure.rst:1194 +#: using/configure.rst:1202 msgid "``TESTPYTHONOPTS``: additional Python command-line options." msgstr "" -#: using/configure.rst:1195 +#: using/configure.rst:1203 msgid "``TESTTIMEOUT``: timeout in seconds (default: 10 minutes)." msgstr "" -#: using/configure.rst:1199 +#: using/configure.rst:1207 msgid "make ci" msgstr "" -#: using/configure.rst:1201 +#: using/configure.rst:1209 msgid "" "This is similar to ``make test``, but uses the ``-ugui`` to also run GUI " "tests." msgstr "" -#: using/configure.rst:1207 +#: using/configure.rst:1215 msgid "make buildbottest" msgstr "" -#: using/configure.rst:1209 +#: using/configure.rst:1217 msgid "" "This is similar to ``make test``, but uses the ``--slow-ci`` option and " "default timeout of 20 minutes, instead of ``--fast-ci`` option." msgstr "" -#: using/configure.rst:1214 +#: using/configure.rst:1222 msgid "make regen-all" msgstr "" -#: using/configure.rst:1216 +#: using/configure.rst:1224 msgid "" "Regenerate (almost) all generated files. These include (but are not limited " "to) bytecode cases, and parser generator file. ``make regen-stdlib-module-" @@ -1748,18 +1754,18 @@ msgid "" "files <#generated-files>`_." msgstr "" -#: using/configure.rst:1223 +#: using/configure.rst:1231 msgid "C extensions" msgstr "" -#: using/configure.rst:1225 +#: using/configure.rst:1233 msgid "" "Some C extensions are built as built-in modules, like the ``sys`` module. " "They are built with the ``Py_BUILD_CORE_BUILTIN`` macro defined. Built-in " "modules have no ``__file__`` attribute:" msgstr "" -#: using/configure.rst:1229 +#: using/configure.rst:1237 msgid "" ">>> import sys\n" ">>> sys\n" @@ -1770,14 +1776,14 @@ msgid "" "AttributeError: module 'sys' has no attribute '__file__'" msgstr "" -#: using/configure.rst:1239 +#: using/configure.rst:1247 msgid "" "Other C extensions are built as dynamic libraries, like the ``_asyncio`` " "module. They are built with the ``Py_BUILD_CORE_MODULE`` macro defined. " "Example on Linux x86-64:" msgstr "" -#: using/configure.rst:1243 +#: using/configure.rst:1251 msgid "" ">>> import _asyncio\n" ">>> _asyncio\n" @@ -1787,7 +1793,7 @@ msgid "" "'/usr/lib64/python3.9/lib-dynload/_asyncio.cpython-39-x86_64-linux-gnu.so'" msgstr "" -#: using/configure.rst:1251 +#: using/configure.rst:1259 msgid "" ":file:`Modules/Setup` is used to generate Makefile targets to build C " "extensions. At the beginning of the files, C extensions are built as built-" @@ -1795,304 +1801,304 @@ msgid "" "dynamic libraries." msgstr "" -#: using/configure.rst:1255 +#: using/configure.rst:1263 msgid "" "The :c:macro:`!PyAPI_FUNC()`, :c:macro:`!PyAPI_DATA()` and :c:macro:" "`PyMODINIT_FUNC` macros of :file:`Include/exports.h` are defined differently " "depending if the ``Py_BUILD_CORE_MODULE`` macro is defined:" msgstr "" -#: using/configure.rst:1259 +#: using/configure.rst:1267 msgid "Use ``Py_EXPORTED_SYMBOL`` if the ``Py_BUILD_CORE_MODULE`` is defined" msgstr "" -#: using/configure.rst:1260 +#: using/configure.rst:1268 msgid "Use ``Py_IMPORTED_SYMBOL`` otherwise." msgstr "" -#: using/configure.rst:1262 +#: using/configure.rst:1270 msgid "" "If the ``Py_BUILD_CORE_BUILTIN`` macro is used by mistake on a C extension " "built as a shared library, its :samp:`PyInit_{xxx}()` function is not " "exported, causing an :exc:`ImportError` on import." msgstr "" -#: using/configure.rst:1268 +#: using/configure.rst:1276 msgid "Compiler and linker flags" msgstr "" -#: using/configure.rst:1270 +#: using/configure.rst:1278 msgid "" "Options set by the ``./configure`` script and environment variables and used " "by ``Makefile``." msgstr "" -#: using/configure.rst:1274 +#: using/configure.rst:1282 msgid "Preprocessor flags" msgstr "" -#: using/configure.rst:1278 +#: using/configure.rst:1286 msgid "" "Value of :envvar:`CPPFLAGS` variable passed to the ``./configure`` script." msgstr "" -#: using/configure.rst:1284 +#: using/configure.rst:1292 msgid "" "(Objective) C/C++ preprocessor flags, e.g. :samp:`-I{include_dir}` if you " "have headers in a nonstandard directory *include_dir*." msgstr "" -#: using/configure.rst:1477 +#: using/configure.rst:1485 msgid "" "Both :envvar:`CPPFLAGS` and :envvar:`LDFLAGS` need to contain the shell's " "value to be able to build extension modules using the directories specified " "in the environment variables." msgstr "" -#: using/configure.rst:1297 +#: using/configure.rst:1305 msgid "" "Extra preprocessor flags added for building the interpreter object files." msgstr "" -#: using/configure.rst:1299 +#: using/configure.rst:1307 msgid "" "Default: ``$(BASECPPFLAGS) -I. -I$(srcdir)/Include $(CONFIGURE_CPPFLAGS) " "$(CPPFLAGS)``." msgstr "" -#: using/configure.rst:1304 +#: using/configure.rst:1312 msgid "Compiler flags" msgstr "" -#: using/configure.rst:1310 +#: using/configure.rst:1318 msgid "Example: ``gcc -pthread``." msgstr "" -#: using/configure.rst:1314 +#: using/configure.rst:1322 msgid "C++ compiler command." msgstr "" -#: using/configure.rst:1316 +#: using/configure.rst:1324 msgid "Example: ``g++ -pthread``." msgstr "" -#: using/configure.rst:1324 +#: using/configure.rst:1332 msgid "" ":envvar:`CFLAGS_NODIST` is used for building the interpreter and stdlib C " "extensions. Use it when a compiler flag should *not* be part of :envvar:" "`CFLAGS` once Python is installed (:gh:`65320`)." msgstr "" -#: using/configure.rst:1328 +#: using/configure.rst:1336 msgid "In particular, :envvar:`CFLAGS` should not contain:" msgstr "" -#: using/configure.rst:1330 +#: using/configure.rst:1338 msgid "" "the compiler flag ``-I`` (for setting the search path for include files). " "The ``-I`` flags are processed from left to right, and any flags in :envvar:" "`CFLAGS` would take precedence over user- and package-supplied ``-I`` flags." msgstr "" -#: using/configure.rst:1335 +#: using/configure.rst:1343 msgid "" "hardening flags such as ``-Werror`` because distributions cannot control " "whether packages installed by users conform to such heightened standards." msgstr "" -#: using/configure.rst:1343 +#: using/configure.rst:1351 msgid "" "Options passed to the :mod:`compileall` command line when building PYC files " "in ``make install``. Default: ``-j0``." msgstr "" -#: using/configure.rst:1350 +#: using/configure.rst:1358 msgid "Extra C compiler flags." msgstr "" -#: using/configure.rst:1354 +#: using/configure.rst:1362 msgid "" "Value of :envvar:`CFLAGS` variable passed to the ``./configure`` script." msgstr "" -#: using/configure.rst:1361 +#: using/configure.rst:1369 msgid "" "Value of :envvar:`CFLAGS_NODIST` variable passed to the ``./configure`` " "script." msgstr "" -#: using/configure.rst:1368 +#: using/configure.rst:1376 msgid "Base compiler flags." msgstr "" -#: using/configure.rst:1372 +#: using/configure.rst:1380 msgid "Optimization flags." msgstr "" -#: using/configure.rst:1376 +#: using/configure.rst:1384 msgid "Strict or non-strict aliasing flags used to compile ``Python/dtoa.c``." msgstr "" -#: using/configure.rst:1382 +#: using/configure.rst:1390 msgid "Compiler flags used to build a shared library." msgstr "" -#: using/configure.rst:1384 +#: using/configure.rst:1392 msgid "For example, ``-fPIC`` is used on Linux and on BSD." msgstr "" -#: using/configure.rst:1388 +#: using/configure.rst:1396 msgid "Extra C flags added for building the interpreter object files." msgstr "" -#: using/configure.rst:1390 +#: using/configure.rst:1398 msgid "" "Default: ``$(CCSHARED)`` when :option:`--enable-shared` is used, or an empty " "string otherwise." msgstr "" -#: using/configure.rst:1395 +#: using/configure.rst:1403 msgid "" "Default: ``$(BASECFLAGS) $(OPT) $(CONFIGURE_CFLAGS) $(CFLAGS) " "$(EXTRA_CFLAGS)``." msgstr "" -#: using/configure.rst:1399 +#: using/configure.rst:1407 msgid "" "Default: ``$(CONFIGURE_CFLAGS_NODIST) $(CFLAGS_NODIST) -I$(srcdir)/Include/" "internal``." msgstr "" -#: using/configure.rst:1405 +#: using/configure.rst:1413 msgid "C flags used for building the interpreter object files." msgstr "" -#: using/configure.rst:1407 +#: using/configure.rst:1415 msgid "" "Default: ``$(PY_CFLAGS) $(PY_CFLAGS_NODIST) $(PY_CPPFLAGS) " "$(CFLAGSFORSHARED)``." msgstr "" -#: using/configure.rst:1413 +#: using/configure.rst:1421 msgid "Default: ``$(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE``." msgstr "" -#: using/configure.rst:1419 +#: using/configure.rst:1427 msgid "" "Compiler flags to build a standard library extension module as a built-in " "module, like the :mod:`posix` module." msgstr "" -#: using/configure.rst:1422 +#: using/configure.rst:1430 msgid "Default: ``$(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE_BUILTIN``." msgstr "" -#: using/configure.rst:1428 +#: using/configure.rst:1436 msgid "Purify command. Purify is a memory debugger program." msgstr "" -#: using/configure.rst:1430 +#: using/configure.rst:1438 msgid "Default: empty string (not used)." msgstr "" -#: using/configure.rst:1434 +#: using/configure.rst:1442 msgid "Linker flags" msgstr "" -#: using/configure.rst:1438 +#: using/configure.rst:1446 msgid "" "Linker command used to build programs like ``python`` and ``_testembed``." msgstr "" -#: using/configure.rst:1440 +#: using/configure.rst:1448 msgid "Default: ``$(PURIFY) $(CC)``." msgstr "" -#: using/configure.rst:1444 +#: using/configure.rst:1452 msgid "" "Value of :envvar:`LDFLAGS` variable passed to the ``./configure`` script." msgstr "" -#: using/configure.rst:1446 +#: using/configure.rst:1454 msgid "" "Avoid assigning :envvar:`CFLAGS`, :envvar:`LDFLAGS`, etc. so users can use " "them on the command line to append to these values without stomping the pre-" "set values." msgstr "" -#: using/configure.rst:1454 +#: using/configure.rst:1462 msgid "" ":envvar:`LDFLAGS_NODIST` is used in the same manner as :envvar:" "`CFLAGS_NODIST`. Use it when a linker flag should *not* be part of :envvar:" "`LDFLAGS` once Python is installed (:gh:`65320`)." msgstr "" -#: using/configure.rst:1458 +#: using/configure.rst:1466 msgid "In particular, :envvar:`LDFLAGS` should not contain:" msgstr "" -#: using/configure.rst:1460 +#: using/configure.rst:1468 msgid "" "the compiler flag ``-L`` (for setting the search path for libraries). The ``-" "L`` flags are processed from left to right, and any flags in :envvar:" "`LDFLAGS` would take precedence over user- and package-supplied ``-L`` flags." msgstr "" -#: using/configure.rst:1467 +#: using/configure.rst:1475 msgid "" "Value of :envvar:`LDFLAGS_NODIST` variable passed to the ``./configure`` " "script." msgstr "" -#: using/configure.rst:1474 +#: using/configure.rst:1482 msgid "" "Linker flags, e.g. :samp:`-L{lib_dir}` if you have libraries in a " "nonstandard directory *lib_dir*." msgstr "" -#: using/configure.rst:1483 +#: using/configure.rst:1491 msgid "" "Linker flags to pass libraries to the linker when linking the Python " "executable." msgstr "" -#: using/configure.rst:1486 +#: using/configure.rst:1494 msgid "Example: ``-lrt``." msgstr "" -#: using/configure.rst:1490 +#: using/configure.rst:1498 msgid "Command to build a shared library." msgstr "" -#: using/configure.rst:1492 +#: using/configure.rst:1500 msgid "Default: ``@LDSHARED@ $(PY_LDFLAGS)``." msgstr "" -#: using/configure.rst:1496 +#: using/configure.rst:1504 msgid "Command to build ``libpython`` shared library." msgstr "" -#: using/configure.rst:1498 +#: using/configure.rst:1506 msgid "Default: ``@BLDSHARED@ $(PY_CORE_LDFLAGS)``." msgstr "" -#: using/configure.rst:1502 +#: using/configure.rst:1510 msgid "Default: ``$(CONFIGURE_LDFLAGS) $(LDFLAGS)``." msgstr "" -#: using/configure.rst:1506 +#: using/configure.rst:1514 msgid "Default: ``$(CONFIGURE_LDFLAGS_NODIST) $(LDFLAGS_NODIST)``." msgstr "" -#: using/configure.rst:1512 +#: using/configure.rst:1520 msgid "Linker flags used for building the interpreter object files." msgstr "" -#: using/configure.rst:1518 +#: using/configure.rst:1526 msgid "Footnotes" msgstr "" -#: using/configure.rst:1519 +#: using/configure.rst:1527 msgid "" "``git clean -fdx`` is an even more extreme way to \"clean\" your checkout. " "It removes all files not known to Git. When bug hunting using ``git " diff --git a/using/editors.po b/using/editors.po index 5681b70f..68b563ee 100644 --- a/using/editors.po +++ b/using/editors.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-04-05 19:20+0300\n" "Last-Translator: ALEXANDROS TZIORAS alextzioras23@gmail.com\n" "Language-Team: Language-Team: PyGreece \n" diff --git a/using/index.po b/using/index.po index 22515d4c..2b64048b 100644 --- a/using/index.po +++ b/using/index.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-04-06 10:11+0300\n" "Last-Translator: ALEXANDROS TZIORAS alextzioras23@gmail.com\n" "Language-Team: Language-Team: PyGreece Language: \n" diff --git a/using/ios.po b/using/ios.po index 6a433af0..2e677cdd 100644 --- a/using/ios.po +++ b/using/ios.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.13\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/using/mac.po b/using/mac.po index b1072a2d..81ab0ee4 100644 --- a/using/mac.po +++ b/using/mac.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" -"PO-Revision-Date: 2025-05-21 21:25+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" +"PO-Revision-Date: 2025-06-19 17:58+0300\n" "Last-Translator: Marios Giannopoulos \n" "Language-Team: PyGreece \n" "Language: el\n" @@ -50,15 +50,15 @@ msgstr "" "CPython για λήψη από την ιστοσελίδα `python.org `_. Δείτε :ref:`alternative_bundles` για μερικές άλλες επιλογές." -#: using/mac.rst:34 +#: using/mac.rst:27 msgid "Using Python for macOS from ``python.org``" msgstr "Χρησιμοποιώντας Python για macOS από το ``python.org``" -#: using/mac.rst:37 +#: using/mac.rst:30 msgid "Installation steps" msgstr "Βήματα εγκατάστασης" -#: using/mac.rst:39 +#: using/mac.rst:32 msgid "" "For `current Python versions `_ (other " "than those in ``security`` status), the release team produces a **Python for " @@ -81,7 +81,7 @@ msgstr "" "Silicon και Intel) που υποστηρίζονται από μια ευρεία γκάμα εκδόσεων macOS, " "αυτή τη στιγμή συνήθως από τουλάχιστον **macOS 10.13 High Sierra** και μετά." -#: using/mac.rst:51 +#: using/mac.rst:44 msgid "" "The downloaded file is a standard macOS installer package file (``.pkg``). " "File integrity information (checksum, size, sigstore signature, etc) for " @@ -98,7 +98,7 @@ msgstr "" "Developer ID πιστοποιητικά για να ικανοποιούν τις απαιτήσεις `macOS " "Gatekeeper `_." -#: using/mac.rst:57 +#: using/mac.rst:50 msgid "" "For a default installation, double-click on the downloaded installer package " "file. This should launch the standard macOS Installer app and display the " @@ -108,24 +108,24 @@ msgstr "" "που κατεβάσατε. Αυτό θα πρέπει να εκκινήσει την τυπική εφαρμογή εγκατάστασης " "macOS και να εμφανίσει το πρώτο από αρκετά βήματα παραθύρου εγκατάστασης." -#: using/mac.rst:63 +#: using/mac.rst:56 msgid "" "Clicking on the **Continue** button brings up the **Read Me** for this " "installer. Besides other important information, the **Read Me** documents " "which Python version is going to be installed and on what versions of macOS " "it is supported. You may need to scroll through to read the whole file. By " "default, this **Read Me** will also be installed in |" -"usemac_applications_folder_version| and available to read anytime." +"applications_python_version_literal| and available to read anytime." msgstr "" "Κάνοντας κλικ στο κουμπί **Continue** εμφανίζεται το **Read Me** για αυτόν " "τον εγκαταστάτη. Εκτός από άλλες σημαντικές πληροφορίες, το **Read Me** " "καταγράφει ποια έκδοση Python πρόκειται να εγκατασταθεί και σε ποιες " "εκδόσεις macOS υποστηρίζεται. Ίσως χρειαστεί να κάνετε κύλιση για να " "διαβάσετε ολόκληρο το αρχείο. Από προεπιλογή, αυτό το **Read Me** θα " -"εγκατασταθεί επίσης στο |usemac_applications_folder_version| και θα είναι " +"εγκατασταθεί επίσης στο |applications_python_version_literal| και θα είναι " "διαθέσιμο για ανάγνωση οποιαδήποτε στιγμή." -#: using/mac.rst:71 +#: using/mac.rst:64 msgid "" "Clicking on **Continue** proceeds to display the license for Python and for " "other included software. You will then need to **Agree** to the license " @@ -138,7 +138,7 @@ msgstr "" "το αρχείο άδειας θα εγκατασταθεί επίσης και θα είναι διαθέσιμο για ανάγνωση " "αργότερα." -#: using/mac.rst:78 +#: using/mac.rst:71 msgid "" "After the license terms are accepted, the next step is the **Installation " "Type** display. For most uses, the standard set of installation operations " @@ -148,21 +148,20 @@ msgstr "" "**Τύπος Εγκατάστασης**. Για τις περισσότερες χρήσεις, το τυπικό σύνολο " "λειτουργιών εγκατάστασης είναι κατάλληλο." -#: using/mac.rst:83 +#: using/mac.rst:76 msgid "" "By pressing the **Customize** button, you can choose to omit or select " "certain package components of the installer. Click on each package name to " "see a description of what it installs. To also install support for the " -"optional experimental free-threaded feature, see :ref:`install-freethreaded-" -"macos`." +"optional free-threaded feature, see :ref:`install-freethreaded-macos`." msgstr "" "Πατώντας το κουμπί **Customize**, μπορείτε να επιλέξετε να παραλείψετε ή να " "επιλέξετε ορισμένα πακέτα του εγκαταστάτη. Κάντε κλικ σε κάθε όνομα πακέτου " "για να δείτε μια περιγραφή του τι εγκαθιστά. Για να εγκαταστήσετε επίσης " -"υποστήριξη για την προαιρετική πειραματική δυνατότητα χωρίς νήματα, δείτε :" -"ref:`install-freethreaded-macos`." +"υποστήριξη για την προαιρετική δυνατότητα χωρίς νήματα, δείτε :ref:`install-" +"freethreaded-macos`." -#: using/mac.rst:91 +#: using/mac.rst:84 msgid "" "In either case, clicking **Install** will begin the install process by " "asking permission to install new software. A macOS user name with " @@ -174,21 +173,22 @@ msgstr "" "χρήστη macOS με ``Administrator`` δικαιώματα είναι απαραίτητο καθώς η " "εγκατεστημένη Python θα είναι διαθέσιμη σε όλους τους χρήστες του Mac." -#: using/mac.rst:95 +#: using/mac.rst:88 msgid "When the installation is complete, the **Summary** window will appear." msgstr "" "Όταν ολοκληρωθεί η εγκατάσταση, θα εμφανιστεί το παράθυρο **Περίληψη**." -#: using/mac.rst:99 +#: using/mac.rst:92 msgid "" "Double-click on the :command:`Install Certificates.command` icon or file in " -"the |usemac_applications_folder_version| window to complete the installation." +"the |applications_python_version_literal| window to complete the " +"installation." msgstr "" "Διπλό κλικ στο εικονίδιο ή το αρχείο :command:`Install Certificates.command` " -"στο παράθυρο |usemac_applications_folder_version| για να ολοκληρώσετε την " +"στο παράθυρο |applications_python_version_literal| για να ολοκληρώσετε την " "εγκατάσταση." -#: using/mac.rst:105 +#: using/mac.rst:98 msgid "" "This will open a temporary :program:`Terminal` shell window that will use " "the new Python to download and install SSL root certificates for its use." @@ -197,7 +197,7 @@ msgstr "" "χρησιμοποιήσει τη νέα Python για να κατεβάσει και να εγκαταστήσει ριζικούς " "πιστοποιητικούς SSL για τη χρήση του." -#: using/mac.rst:111 +#: using/mac.rst:104 msgid "" "If ``Successfully installed certifi`` and ``update complete`` appears in the " "terminal window, the installation is complete. Close this terminal window " @@ -207,25 +207,25 @@ msgstr "" "στο παράθυρο τερματικού, η εγκατάσταση είναι ολοκληρωμένη. Κλείστε αυτό το " "παράθυρο τερματικού και το παράθυρο εγκαταστάτη." -#: using/mac.rst:115 +#: using/mac.rst:108 msgid "A default install will include:" msgstr "Μια προεπιλεγμένη εγκατάσταση θα περιλαμβάνει:" -#: using/mac.rst:117 +#: using/mac.rst:110 msgid "" -"A |usemac_applications_folder_name| folder in your :file:`Applications` " -"folder. In here you find :program:`IDLE`, the development environment that " -"is a standard part of official Python distributions; and :program:`Python " +"A |python_version_literal| folder in your :file:`Applications` folder. In " +"here you find :program:`IDLE`, the development environment that is a " +"standard part of official Python distributions; and :program:`Python " "Launcher`, which handles double-clicking Python scripts from the macOS " "`Finder `_." msgstr "" -"Ένα φάκελο |usemac_applications_folder_name| στο φάκελο :file:" -"`Applications`. Εδώ θα βρείτε το :program:`IDLE`, το περιβάλλον ανάπτυξης " -"που είναι τυπικό μέρος των επίσημων διανομών Python. και το :program:`Python " -"Launcher`, το οποίο χειρίζεται τα διπλά κλικ σε Python scripts από το macOS " -"`Finder `_." +"Ένας |python_version_literal| φάκελος στον φάκελο :file:`Applications`. Εδώ " +"θα βρείτε το :program:`IDLE`, το περιβάλλον ανάπτυξης που είναι τυπικό μέρος " +"των επίσημων διανομών Python∙ και το :program:`Python Launcher`, το οποίο " +"χειρίζεται τα διπλά κλικ σε Python scripts από το macOS `Finder `_." -#: using/mac.rst:122 +#: using/mac.rst:115 msgid "" "A framework :file:`/Library/Frameworks/Python.framework`, which includes the " "Python executable and libraries. The installer adds this location to your " @@ -239,7 +239,7 @@ msgstr "" "Symlinks στον εκτελέσιμο κώδικα Python τοποθετούνται στο :file:`/usr/local/" "bin/`." -#: using/mac.rst:129 +#: using/mac.rst:122 msgid "" "Recent versions of macOS include a :command:`python3` command in :file:`/usr/" "bin/python3` that links to a usually older and incomplete version of Python " @@ -265,28 +265,28 @@ msgstr "" "διασφαλίσουν ότι η :command:`python3` θα χρησιμοποιηθεί αντί της συστήματος :" "command:`python3`." -#: using/mac.rst:140 +#: using/mac.rst:133 msgid "How to run a Python script" msgstr "Πώς να εκτελέσετε ένα σενάριο Python" -#: using/mac.rst:142 +#: using/mac.rst:135 msgid "" "There are two ways to invoke the Python interpreter. If you are familiar " "with using a Unix shell in a terminal window, you can invoke |" -"usemac_python_x_dot_y_literal| or ``python3`` optionally followed by one or " -"more command line options (described in :ref:`using-on-general`). The Python " +"python_x_dot_y_literal| or ``python3`` optionally followed by one or more " +"command line options (described in :ref:`using-on-general`). The Python " "tutorial also has a useful section on :ref:`using Python interactively from " "a shell `." msgstr "" -"Υπάρχουν δύο τρόποι για να καλέσετε τον ερμηνευτή Python. Εάν είστε " +"Υπάρχουν δύο τρόποι για να καλέσετε τον διερμηνέα Python. Εάν είστε " "εξοικειωμένοι με τη χρήση ενός κελύφους Unix σε ένα παράθυρο τερματικού, " -"μπορείτε να καλέσετε |usemac_python_x_dot_y_literal| ή ``python3`` " -"προαιρετικά ακολουθούμενο από μία ή περισσότερες επιλογές γραμμής εντολών " -"(περιγράφεται στο :ref:`using-on-general`). Το εγχειρίδιο Python έχει επίσης " -"μια χρήσιμη ενότητα σχετικά με :ref:`using Python interactively from a shell " -"`." +"μπορείτε να καλέσετε |python_x_dot_y_literal| ή ``python3`` προαιρετικά " +"ακολουθούμενο από μία ή περισσότερες επιλογές γραμμής εντολών (περιγράφεται " +"στο :ref:`using-on-general`). Το εγχειρίδιο Python έχει επίσης μια χρήσιμη " +"ενότητα σχετικά με :ref:`using Python interactively from a shell `." -#: using/mac.rst:149 +#: using/mac.rst:142 msgid "" "You can also invoke the interpreter through an integrated development " "environment. :ref:`idle` is a basic editor and interpreter environment which " @@ -303,7 +303,7 @@ msgstr "" "Python, μπορείτε να διαβάσετε την εισαγωγή του εγχειριδίου σε αυτό το " "έγγραφο." -#: using/mac.rst:157 +#: using/mac.rst:150 msgid "" "There are many other editors and IDEs available, see :ref:`editors` for more " "information." @@ -311,7 +311,7 @@ msgstr "" "Υπάρχουν πολλοί άλλοι επεξεργαστές και IDE διαθέσιμοι, δείτε :ref:`editors` " "για περισσότερες πληροφορίες." -#: using/mac.rst:160 +#: using/mac.rst:153 msgid "" "To run a Python script file from the terminal window, you can invoke the " "interpreter with the name of the script file:" @@ -319,19 +319,19 @@ msgstr "" "Για να εκτελέσετε ένα αρχείο script Python από το παράθυρο τερματικού, " "μπορείτε να καλέσετε τον ερμηνευτή με το όνομα του αρχείου script:" -#: using/mac.rst:163 -msgid "|usemac_python_x_dot_y_literal| ``myscript.py``" -msgstr "|usemac_python_x_dot_y_literal| ``myscript.py``" +#: using/mac.rst:156 +msgid "|python_x_dot_y_literal| ``myscript.py``" +msgstr "|python_x_dot_y_literal| ``myscript.py``" -#: using/mac.rst:165 +#: using/mac.rst:158 msgid "To run your script from the Finder, you can either:" msgstr "Για να εκτελέσετε το script σας από το Finder, μπορείτε είτε:" -#: using/mac.rst:167 +#: using/mac.rst:160 msgid "Drag it to :program:`Python Launcher`." msgstr "Σύρετε το στο :program:`Python Launcher`." -#: using/mac.rst:169 +#: using/mac.rst:162 msgid "" "Select :program:`Python Launcher` as the default application to open your " "script (or any ``.py`` script) through the Finder Info window and double-" @@ -347,7 +347,7 @@ msgstr "" "χρησιμοποιήστε το μενού ``Προτιμήσεις`` για να αλλάξετε τα πράγματα " "παγκοσμίως." -#: using/mac.rst:175 +#: using/mac.rst:168 msgid "" "Be aware that running the script directly from the macOS Finder might " "produce different results than when running from a terminal window as the " @@ -362,11 +362,11 @@ msgstr "" "κελύφους. Και, όπως με οποιοδήποτε άλλο script ή πρόγραμμα, να είστε " "σίγουροι για το τι πρόκειται να εκτελέσετε." -#: using/mac.rst:185 +#: using/mac.rst:178 msgid "Alternative Distributions" msgstr "Εναλλακτικές Διανομές" -#: using/mac.rst:187 +#: using/mac.rst:180 msgid "" "Besides the standard ``python.org`` for macOS installer, there are third-" "party distributions for macOS that may include additional functionality. " @@ -376,19 +376,19 @@ msgstr "" "διανομές για macOS που μπορεί να περιλαμβάνουν πρόσθετη λειτουργικότητα. " "Ορισμένες δημοφιλείς διανομές και τα βασικά χαρακτηριστικά τους:" -#: using/mac.rst:191 +#: using/mac.rst:184 msgid "`ActivePython `_" msgstr "`ActivePython `_" -#: using/mac.rst:192 +#: using/mac.rst:185 msgid "Installer with multi-platform compatibility, documentation" msgstr "Εγκαταστάτης με συμβατότητα πολλών πλατφορμών, τεκμηρίωση" -#: using/mac.rst:194 +#: using/mac.rst:187 msgid "`Anaconda `_" msgstr "`Anaconda `_" -#: using/mac.rst:195 +#: using/mac.rst:188 msgid "" "Popular scientific modules (such as numpy, scipy, and pandas) and the " "``conda`` package manager." @@ -396,11 +396,11 @@ msgstr "" "Δημοφιλή επιστημονικά modules (όπως numpy, scipy και pandas) και ο ``conda`` " "διαχειριστής πακέτων." -#: using/mac.rst:198 +#: using/mac.rst:191 msgid "`Homebrew `_" msgstr "`Homebrew `_" -#: using/mac.rst:199 +#: using/mac.rst:192 msgid "" "Package manager for macOS including multiple versions of Python and many " "third-party Python-based packages (including numpy, scipy, and pandas)." @@ -408,11 +408,11 @@ msgstr "" "Διαχειριστής πακέτων για macOS που περιλαμβάνει πολλές εκδόσεις Python και " "πολλά τρίτα πακέτα Python (συμπεριλαμβανομένων των numpy, scipy και pandas)." -#: using/mac.rst:202 +#: using/mac.rst:195 msgid "`MacPorts `_" msgstr "`MacPorts `_" -#: using/mac.rst:203 +#: using/mac.rst:196 msgid "" "Another package manager for macOS including multiple versions of Python and " "many third-party Python-based packages. May include pre-built versions of " @@ -423,7 +423,7 @@ msgstr "" "κατασκευασμένες εκδόσεις της Python και πολλά πακέτα για παλαιότερες " "εκδόσεις του macOS." -#: using/mac.rst:207 +#: using/mac.rst:200 msgid "" "Note that distributions might not include the latest versions of Python or " "other libraries, and are not maintained or supported by the core Python team." @@ -432,27 +432,27 @@ msgstr "" "εκδόσεις της Python ή άλλων βιβλιοθηκών και δεν υποστηρίζονται ή " "συντηρούνται από την κύρια ομάδα Python." -#: using/mac.rst:213 +#: using/mac.rst:206 msgid "Installing Additional Python Packages" msgstr "Εγκατάσταση πρόσθετων πακέτων Python" -#: using/mac.rst:215 +#: using/mac.rst:208 msgid "Refer to the `Python Packaging User Guide`_ for more information." msgstr "" "Ανατρέξτε στον `Python Packaging User Guide`_ για περισσότερες πληροφορίες." -#: using/mac.rst:225 +#: using/mac.rst:218 msgid "GUI Programming" msgstr "Προγραμματισμός GUI" -#: using/mac.rst:227 +#: using/mac.rst:220 msgid "" "There are several options for building GUI applications on the Mac with " "Python." msgstr "" "Υπάρχουν πολλές επιλογές για την κατασκευή εφαρμογών GUI στον Mac με Python." -#: using/mac.rst:229 +#: using/mac.rst:222 msgid "" "The standard Python GUI toolkit is :mod:`tkinter`, based on the cross-" "platform Tk toolkit (https://www.tcl.tk). A macOS-native version of Tk is " @@ -462,7 +462,7 @@ msgstr "" "διαλειτουργικό εργαλείο Tk (https://www.tcl.tk). Μια εγγενής έκδοση Tk macOS " "περιλαμβάνεται με τον εγκαταστάτη." -#: using/mac.rst:233 +#: using/mac.rst:226 msgid "" "*PyObjC* is a Python binding to Apple's Objective-C/Cocoa framework. " "Information on PyObjC is available from :pypi:`pyobjc`." @@ -470,13 +470,13 @@ msgstr "" "Το *PyObjC* είναι ένα Python binding στο πλαίσιο Objective-C/Cocoa της " "Apple. Πληροφορίες σχετικά με το PyObjC είναι διαθέσιμες από :pypi:`pyobjc`." -#: using/mac.rst:236 +#: using/mac.rst:229 msgid "A number of alternative macOS GUI toolkits are available including:" msgstr "" "Ένας αριθμός εναλλακτικών εργαλείων GUI macOS είναι διαθέσιμος, " "συμπεριλαμβανομένων:" -#: using/mac.rst:238 +#: using/mac.rst:231 msgid "" "`PySide `_: Official Python bindings to the " "`Qt GUI toolkit `_." @@ -484,7 +484,7 @@ msgstr "" "`PySide `_: Επίσημα Python bindings στο `Qt " "GUI toolkit `_." -#: using/mac.rst:241 +#: using/mac.rst:234 msgid "" "`PyQt `_: Alternative Python " "bindings to Qt." @@ -492,7 +492,7 @@ msgstr "" "`PyQt `_: Εναλλακτικά Python " "bindings στο Qt." -#: using/mac.rst:244 +#: using/mac.rst:237 msgid "" "`Kivy `_: A cross-platform GUI toolkit that supports " "desktop and mobile platforms." @@ -500,7 +500,7 @@ msgstr "" "`Kivy `_: Ένα διαλειτουργικό εργαλείο GUI που υποστηρίζει " "desktop και mobile πλατφόρμες." -#: using/mac.rst:247 +#: using/mac.rst:240 msgid "" "`Toga `_: Part of the `BeeWare Project `_; supports desktop, mobile, web and console apps." @@ -509,7 +509,7 @@ msgstr "" "beeware.org>`_; υποστηρίζει εφαρμογές desktop, mobile, web και κονσόλας " "εφαρμογές." -#: using/mac.rst:250 +#: using/mac.rst:243 msgid "" "`wxPython `_: A cross-platform toolkit that supports " "desktop operating systems." @@ -517,134 +517,129 @@ msgstr "" "`wxPython `_: Ένα διαλειτουργικό εργαλείο που " "υποστηρίζει desktop πλατφόρμες." -#: using/mac.rst:255 +#: using/mac.rst:248 msgid "Advanced Topics" msgstr "Προχωρημένα θέματα" -#: using/mac.rst:260 +#: using/mac.rst:253 msgid "Installing Free-threaded Binaries" msgstr "Εγκατάσταση εκδόσεων Free-threaded" -#: using/mac.rst:262 -msgid "(Experimental)" -msgstr "(Πειραματικό)" - -#: using/mac.rst:266 -msgid "" -"Everything described in this section is considered experimental, and should " -"be expected to change in future releases." -msgstr "" -"Όλα όσα περιγράφονται σε αυτήν την ενότητα θεωρούνται πειραματικά και θα " -"πρέπει να αναμένονται να αλλάξουν σε μελλοντικές εκδόσεις." - -#: using/mac.rst:269 +#: using/mac.rst:257 msgid "" "The ``python.org`` :ref:`Python for macOS ` installer package can optionally install an additional build of " -"Python |usemac_x_dot_y| that supports :pep:`703`, the experimental free-" -"threading feature (running with the :term:`global interpreter lock` " -"disabled). Check the release page on ``python.org`` for possible updated " -"information." +"Python |version| that supports :pep:`703`, the free-threading feature " +"(running with the :term:`global interpreter lock` disabled). Check the " +"release page on ``python.org`` for possible updated information." msgstr "" "Το πακέτο εγκατάστασης ``python.org`` :ref:`Python for macOS ` μπορεί προαιρετικά να εγκαταστήσει μια επιπλέον " -"έκδοση της Python |usemac_x_dot_y| που υποστηρίζει :pep:`703`, την " -"πειραματική δυνατότητα ελεύθερης νηματοποίησης (threading) (εκτέλεση με το :" -"term:`global interpreter lock` απενεργοποιημένο). Ελέγξτε τη σελίδα " -"κυκλοφορίας στο ``python.org`` για πιθανές ενημερωμένες πληροφορίες." +"έκδοση της Python |version| που υποστηρίζει :pep:`703`, την πειραματική " +"δυνατότητα ελεύθερης νηματοποίησης (threading) (εκτέλεση με το :term:`global " +"interpreter lock` απενεργοποιημένο). Ελέγξτε τη σελίδα κυκλοφορίας στο " +"``python.org`` για πιθανές ενημερωμένες πληροφορίες." + +#: using/mac.rst:263 +msgid "" +"The free-threaded mode is working and continues to be improved, but there is " +"some additional overhead in single-threaded workloads compared to the " +"regular build. Additionally, third-party packages, in particular ones with " +"an :term:`extension module`, may not be ready for use in a free-threaded " +"build, and will re-enable the :term:`GIL`. Therefore, the support for free-" +"threading is not installed by default. It is packaged as a separate install " +"option, available by clicking the **Customize** button on the **Installation " +"Type** step of the installer as described above." +msgstr "" +"Η λειτουργία ελεύθερου νήματος λειτουργεί και συνεχίζει να βελτιώνεται, αλλά " +"υπάρχει κάποια πρόσθετη επιβάρυνση στα φορτία εργασίας μονού νήματος σε " +"σύγκριση με την κανονική έκδοση. Επιπλέον, τα πακέτα τρίτων κατασκευαστών, " +"ιδίως αυτά με :term:`extension module`, ενδέχεται να μην είναι έτοιμα για " +"χρήση σε μια έκδοση ελεύθερου νήματος και θα ενεργοποιήσουν ξανά το :term:" +"`GIL`. Επομένως, η υποστήριξη για ελεύθερη νηματοποποίησης δεν εγκαθίστανται " +"από προεπιλογή. Είναι συσκευασμένη ως ξεχωριστή επιλογή εγκατάστασης, " +"διαθέσιμη κάνοντας κλικ το κουμπί **Customize** στο βήμα **Installation " +"Type** του προγράμματος εγκατάστασης όπως περιγράφεται παραπάνω." #: using/mac.rst:275 msgid "" -"Because this feature is still considered experimental, the support for it is " -"not installed by default. It is packaged as a separate install option, " -"available by clicking the **Customize** button on the **Installation Type** " -"step of the installer as described above." -msgstr "" -"Επειδή αυτή η δυνατότητα εξακολουθεί να θεωρείται πειραματική, η υποστήριξή " -"της δεν εγκαθίσταται από προεπιλογή. Είναι συσκευασμένο ως ξεχωριστή επιλογή " -"εγκατάστασης, διαθέσιμη κάνοντας κλικ στο κουμπί **Προσαρμογή** στο βήμα " -"**Τύπος εγκατάστασης** του εγκαταστάτη όπως περιγράφεται παραπάνω." - -#: using/mac.rst:282 -msgid "" "If the box next to the **Free-threaded Python** package name is checked, a " "separate :file:`PythonT.framework` will also be installed alongside the " "normal :file:`Python.framework` in :file:`/Library/Frameworks`. This " -"configuration allows a free-threaded Python |usemac_x_dot_y| build to co-" -"exist on your system with a traditional (GIL only) Python |usemac_x_dot_y| " -"build with minimal risk while installing or testing. This installation " -"layout is itself experimental and is subject to change in future releases." +"configuration allows a free-threaded Python |version| build to co-exist on " +"your system with a traditional (GIL only) Python |version| build with " +"minimal risk while installing or testing. This installation layout may " +"change in future releases." msgstr "" "Εάν το πλαίσιο δίπλα στο όνομα πακέτου **Free-threaded Python** είναι " "επιλεγμένο, θα εγκατασταθεί επίσης ένα ξεχωριστό :file:`PythonT.framework` " "δίπλα στο κανονικό :file:`Python.framework` στο :file:`/Library/Frameworks`. " -"Αυτή η διαμόρφωση επιτρέπει σε μια έκδοση Python |usemac_x_dot_y| ελεύθερης " +"Αυτή η διαμόρφωση επιτρέπει σε μια έκδοση Python |version| ελεύθερης " "νηματοποίησης να συγκατοικεί στο σύστημά σας με μια παραδοσιακή (μόνο GIL) " -"Python |usemac_x_dot_y| έκδοση με ελάχιστο κίνδυνο κατά την εγκατάσταση ή τη " +"Python |version| έκδοση με ελάχιστο κίνδυνο κατά την εγκατάσταση ή τη " "δοκιμή. Αυτή η διάταξη εγκατάστασης είναι πειραματική και υπόκειται σε " "αλλαγές σε μελλοντικές εκδόσεις." -#: using/mac.rst:290 +#: using/mac.rst:283 msgid "Known cautions and limitations:" msgstr "Γνωστές προφυλάξεις και περιορισμοί:" -#: using/mac.rst:292 +#: using/mac.rst:285 msgid "" "The **UNIX command-line tools** package, which is selected by default, will " -"install links in :file:`/usr/local/bin` for |" -"usemac_python_x_dot_y_t_literal|, the free-threaded interpreter, and |" -"usemac_python_x_dot_y_t_literal_config|, a configuration utility which may " -"be useful for package builders. Since :file:`/usr/local/bin` is typically " -"included in your shell ``PATH``, in most cases no changes to your ``PATH`` " -"environment variables should be needed to use |" -"usemac_python_x_dot_y_t_literal|." +"install links in :file:`/usr/local/bin` for |python_x_dot_y_t_literal|, the " +"free-threaded interpreter, and |python_x_dot_y_t_literal_config|, a " +"configuration utility which may be useful for package builders. Since :file:" +"`/usr/local/bin` is typically included in your shell ``PATH``, in most cases " +"no changes to your ``PATH`` environment variables should be needed to use |" +"python_x_dot_y_t_literal|." msgstr "" "To **UNIX command-line tools** πακέτο, το οποίο επιλέγεται από προεπιλογή, " "θα εγκαταστήσει συνδέσμους στο :file:`/usr/local/bin` για |" -"usemac_python_x_dot_y_t_literal|, τον ερμηνευτή ελεύθερης νηματοποίησης και |" -"usemac_python_x_dot_y_t_literal_config|, ένα βοηθητικό πρόγραμμα διαμόρφωσης " -"που μπορεί να είναι χρήσιμο για κατασκευαστές πακέτων. Δεδομένου ότι το :" -"file:`/usr/local/bin` περιλαμβάνεται συνήθως στη μεταβλητή περιβάλλοντος " -"``PATH`` του κελύφους σας, στις περισσότερες περιπτώσεις δεν θα χρειαστούν " -"αλλαγές στις μεταβλητές περιβάλλοντος ``PATH`` για να χρησιμοποιήσετε |" -"usemac_python_x_dot_y_t_literal|." +"python_x_dot_y_t_literal|, τον ερμηνευτή ελεύθερης νηματοποίησης και |" +"python_x_dot_y_t_literal_config|, ένα βοηθητικό πρόγραμμα διαμόρφωσης που " +"μπορεί να είναι χρήσιμο για κατασκευαστές πακέτων. Δεδομένου ότι το :file:`/" +"usr/local/bin` περιλαμβάνεται συνήθως στη μεταβλητή περιβάλλοντος ``PATH`` " +"του κελύφους σας, στις περισσότερες περιπτώσεις δεν θα χρειαστούν αλλαγές " +"στις μεταβλητές περιβάλλοντος ``PATH`` για να χρησιμοποιήσετε |" +"python_x_dot_y_t_literal|." -#: using/mac.rst:300 +#: using/mac.rst:293 msgid "" "For this release, the **Shell profile updater** package and the :file:" -"`Update Shell Profile.command` in |usemac_applications_folder_version| do " +"`Update Shell Profile.command` in |applications_python_version_literal| do " "not support the free-threaded package." msgstr "" "Για αυτήν την έκδοση, το πακέτο **Shell profile updater** και το :file:" -"`Update Shell Profile.command` στο |usemac_applications_folder_version| δεν " -"υποστηρίζουν το πακέτο ελεύθερης νηματοποίησης." +"`Update Shell Profile.command` στο |applications_python_version_literal| " +"δεν υποστηρίζουν το πακέτο ελεύθερης νηματοποίησης." -#: using/mac.rst:304 +#: using/mac.rst:297 msgid "" "The free-threaded build and the traditional build have separate search paths " "and separate :file:`site-packages` directories so, by default, if you need a " "package available in both builds, it may need to be installed in both. The " "free-threaded package will install a separate instance of :program:`pip` for " -"use with |usemac_python_x_dot_y_t_literal|." +"use with |python_x_dot_y_t_literal|." msgstr "" "Η έκδοση ελεύθερης νηματοποίησης και η παραδοσιακή έκδοση έχουν ξεχωριστές " "διαδρομές αναζήτησης και ξεχωριστούς καταλόγους :file:`site-packages`, " "οπότε, από προεπιλογή, εάν χρειάζεστε ένα πακέτο διαθέσιμο και στις δύο " "εκδόσεις, μπορεί να χρειαστεί να εγκατασταθεί και στις δύο. Το πακέτο " "ελεύθερης νηματοποίησης θα εγκαταστήσει μια ξεχωριστή έκδοση του :program:" -"`pip` για χρήση με |usemac_python_x_dot_y_t_literal|." +"`pip` για χρήση με |python_x_dot_y_t_literal|." -#: using/mac.rst:310 +#: using/mac.rst:303 msgid "To install a package using :command:`pip` without a :command:`venv`:" msgstr "" "Για να εγκαταστήσετε ένα πακέτο χρησιμοποιώντας :command:`pip` χωρίς :" "command:`venv`:" -#: using/mac.rst:312 -msgid "|usemac_python_x_dot_y_t_literal| ``-m pip install ``" -msgstr "|usemac_python_x_dot_y_t_literal| ``-m pip install ``" +#: using/mac.rst:307 +msgid "python\\ |version|\\ t -m pip install " +msgstr "python\\ |version|\\ t -m pip install " -#: using/mac.rst:314 +#: using/mac.rst:309 msgid "" "When working with multiple Python environments, it is usually safest and " "easiest to :ref:`create and use virtual environments `. This can " @@ -656,23 +651,23 @@ msgstr "" "μπορεί να αποφύγει πιθανά ονόματα εντολών συγκρούσεων και σύγχυση σχετικά με " "το ποια Python είναι σε χρήση:" -#: using/mac.rst:318 -msgid "|usemac_python_x_dot_y_t_literal| ``-m venv ``" -msgstr "|usemac_python_x_dot_y_t_literal| ``-m venv ``" +#: using/mac.rst:315 +msgid "python\\ |version|\\ t -m venv " +msgstr "python\\ |version|\\ t -m venv " -#: using/mac.rst:320 +#: using/mac.rst:318 msgid "then :command:`activate`." msgstr "τότε :command:`activate`." -#: using/mac.rst:322 +#: using/mac.rst:320 msgid "To run a free-threaded version of IDLE:" msgstr "Για να εκτελέσετε μια έκδοση ελεύθερης νηματοποίησης του IDLE:" #: using/mac.rst:324 -msgid "|usemac_python_x_dot_y_t_literal| ``-m idlelib``" -msgstr "|usemac_python_x_dot_y_t_literal| ``-m idlelib``" +msgid "python\\ |version|\\ t -m idlelib" +msgstr "python\\ |version|\\ t -m idlelib" -#: using/mac.rst:326 +#: using/mac.rst:327 msgid "" "The interpreters in both builds respond to the same :ref:`PYTHON environment " "variables ` which may have unexpected results, for " @@ -687,7 +682,7 @@ msgstr "" "` όπως ``-E`` για να αγνοήσετε αυτές τις " "μεταβλητές περιβάλλοντος." -#: using/mac.rst:333 +#: using/mac.rst:334 msgid "" "The free-threaded build links to the third-party shared libraries, such as " "``OpenSSL`` and ``Tk``, installed in the traditional framework. This means " @@ -702,68 +697,68 @@ msgstr "" "command:`Install Certificates.command` script, επομένως χρειάζεται να " "εκτελείται μόνο μία φορά." -#: using/mac.rst:339 +#: using/mac.rst:340 msgid "" "If you cannot depend on the link in ``/usr/local/bin`` pointing to the " -"``python.org`` free-threaded |usemac_python_x_dot_y_t_literal| (for example, " -"if you want to install your own version there or some other distribution " -"does), you can explicitly set your shell ``PATH`` environment variable to " -"include the ``PythonT`` framework ``bin`` directory:" +"``python.org`` free-threaded |python_x_dot_y_t_literal| (for example, if you " +"want to install your own version there or some other distribution does), you " +"can explicitly set your shell ``PATH`` environment variable to include the " +"``PythonT`` framework ``bin`` directory:" msgstr "" "Εάν δεν μπορείτε να εξαρτηθείτε από το σύνδεσμο στο ``/usr/local/bin`` που " -"δείχνει στην έκδοση |usemac_python_x_dot_y_t_literal| ελεύθερης " -"νηματοποίησης (για παράδειγμα, εάν θέλετε να εγκαταστήσετε τη δική σας " -"έκδοση εκεί ή κάποια άλλη διανομή το κάνει), μπορείτε να ορίσετε ρητά τη " -"μεταβλητή περιβάλλοντος ``PATH`` του κελύφους σας για να περιλαμβάνει το " -"κατάλογο ``bin`` του πλαισίου ``PythonT``:" +"δείχνει στην έκδοση |python_x_dot_y_t_literal| ελεύθερης νηματοποίησης (για " +"παράδειγμα, εάν θέλετε να εγκαταστήσετε τη δική σας έκδοση εκεί ή κάποια " +"άλλη διανομή το κάνει), μπορείτε να ορίσετε ρητά τη μεταβλητή περιβάλλοντος " +"``PATH`` του κελύφους σας για να περιλαμβάνει το κατάλογο ``bin`` του " +"πλαισίου ``PythonT``:" -#: using/mac.rst:345 +#: using/mac.rst:348 msgid "" -"export PATH=\"/Library/Frameworks/PythonT.framework/Versions/3.13/bin\":" -"\"$PATH\"" +"export PATH=\"/Library/Frameworks/PythonT.framework/Versions/\\ |version|\\ /" +"bin\":\"$PATH\"" msgstr "" -"export PATH=\"/Library/Frameworks/PythonT.framework/Versions/3.13/bin\":" -"\"$PATH\"" +"export PATH=\"/Library/Frameworks/PythonT.framework/Versions/\\ |version|\\ /" +"bin\":\"$PATH\"" -#: using/mac.rst:349 +#: using/mac.rst:350 msgid "" "The traditional framework installation by default does something similar, " "except for :file:`Python.framework`. Be aware that having both framework " "``bin`` directories in ``PATH`` can lead to confusion if there are duplicate " -"names like ``python3.13`` in both; which one is actually used depends on the " -"order they appear in ``PATH``. The ``which python3.x`` or ``which python3." -"xt`` commands can show which path is being used. Using virtual environments " -"can help avoid such ambiguities. Another option might be to create a shell :" -"command:`alias` to the desired interpreter, like:" +"names like |python_x_dot_y_literal| in both; which one is actually used " +"depends on the order they appear in ``PATH``. The ``which python3.x`` or " +"``which python3.xt`` commands can show which path is being used. Using " +"virtual environments can help avoid such ambiguities. Another option might " +"be to create a shell :command:`alias` to the desired interpreter, like:" msgstr "" "Η παραδοσιακή εγκατάσταση πλαισίου από προεπιλογή κάνει κάτι παρόμοιο, εκτός " "από το :file:`Python.framework`. Να είστε προσεκτικοί ότι η παρουσία και των " "δύο καταλόγων ``bin`` πλαισίου στο ``PATH`` μπορεί να οδηγήσει σε σύγχυση " -"εάν υπάρχουν διπλά ονόματα όπως ``python3.13`` και στις δύο. Ποιο " +"εάν υπάρχουν διπλά ονόματα όπως |python_x_dot_y_literal| και στις δύο∙ ποιο " "χρησιμοποιείται στην πραγματικότητα εξαρτάται από τη σειρά που εμφανίζονται " "στο ``PATH``. Οι εντολές ``which python3.x`` ή ``which python3.xt`` μπορούν " "να δείξουν ποια διαδρομή χρησιμοποιείται. Η χρήση εικονικών περιβαλλόντων " "μπορεί να βοηθήσει στην αποφυγή τέτοιων αμφισημιών. Μια άλλη επιλογή μπορεί " "να είναι η δημιουργία ενός κελύφους :command:`alias` στον επιθυμητό " -"ερμηνευτή, όπως:" +"διερμηνέα, όπως:" -#: using/mac.rst:358 +#: using/mac.rst:361 msgid "" -"alias py3.13=\"/Library/Frameworks/Python.framework/Versions/3.13/bin/" -"python3.13\"\n" -"alias py3.13t=\"/Library/Frameworks/PythonT.framework/Versions/3.13/bin/" -"python3.13t\"" +"alias py\\ |version|\\ =\"/Library/Frameworks/Python.framework/Versions/\\ |" +"version|\\ /bin/python\\ |version|\\ \"\n" +"alias py\\ |version|\\ t=\"/Library/Frameworks/PythonT.framework/Versions/\\ " +"|version|\\ /bin/python\\ |version|\\ t\"" msgstr "" -"alias py3.13=\"/Library/Frameworks/Python.framework/Versions/3.13/bin/" -"python3.13\"\n" -"alias py3.13t=\"/Library/Frameworks/PythonT.framework/Versions/3.13/bin/" -"python3.13t\"" +"alias py\\ |version|\\ =\"/Library/Frameworks/Python.framework/Versions/\\ |" +"version|\\ /bin/python\\ |version|\\ \"\n" +"alias py\\ |version|\\ t=\"/Library/Frameworks/PythonT.framework/Versions/\\ " +"|version|\\ /bin/python\\ |version|\\ t\"" -#: using/mac.rst:364 +#: using/mac.rst:365 msgid "Installing using the command line" msgstr "Εγκατάσταση χρησιμοποιώντας τη γραμμή εντολών" -#: using/mac.rst:366 +#: using/mac.rst:367 msgid "" "If you want to use automation to install the ``python.org`` installer " "package (rather than by using the familiar macOS :program:`Installer` GUI " @@ -771,7 +766,7 @@ msgid "" "non-default options, too. If you are not familiar with :command:`installer`, " "it can be somewhat cryptic (see :command:`man installer` for more " "information). As an example, the following shell snippet shows one way to do " -"it, using the ``3.13.0b2`` release and selecting the free-threaded " +"it, using the |x_dot_y_b2_literal| release and selecting the free-threaded " "interpreter option:" msgstr "" "Εάν θέλετε να χρησιμοποιήσετε αυτοματισμό για να εγκαταστήσετε το πακέτο " @@ -781,22 +776,22 @@ msgstr "" "επίσης. Εάν δεν είστε εξοικειωμένοι με το :command:`installer`, μπορεί να " "είναι κάπως κρυπτικό (βλ. :command:`man installer` για περισσότερες " "πληροφορίες). Ως παράδειγμα, το παρακάτω απόσπασμα κώδικα δείχνει έναν τρόπο " -"να το κάνετε, χρησιμοποιώντας την έκδοση ``3.13.0b2`` και επιλέγοντας την " -"επιλογή ερμηνευτή ελεύθερης νηματοποίησης:" +"να το κάνετε, χρησιμοποιώντας την έκδοση |x_dot_y_b2_literal| και " +"επιλέγοντας την επιλογή διερμηνέα ελεύθερης νηματοποίησης:" -#: using/mac.rst:375 +#: using/mac.rst:378 msgid "" -"RELEASE=\"python-3.13.0b2-macos11.pkg\"\n" +"RELEASE=\"python-\\ |version|\\ 0b2-macos11.pkg\"\n" "\n" "# download installer pkg\n" -"curl -O https://www.python.org/ftp/python/3.13.0/${RELEASE}\n" +"curl -O \\https://www.python.org/ftp/python/\\ |version|\\ .0/${RELEASE}\n" "\n" "# create installer choicechanges to customize the install:\n" -"# enable the PythonTFramework-3.13 package\n" +"# enable the PythonTFramework-\\ |version|\\ package\n" "# while accepting the other defaults (install all other packages)\n" "cat > ./choicechanges.plist <\n" -"\n" "\n" "\n" @@ -806,7 +801,8 @@ msgid "" " choiceAttribute\n" " selected\n" " choiceIdentifier\n" -" org.python.Python.PythonTFramework-3.13\n" +" org.python.Python.PythonTFramework-\\ |version|\\ \n" " \n" "\n" "\n" @@ -815,17 +811,17 @@ msgid "" "sudo installer -pkg ./${RELEASE} -applyChoiceChangesXML ./choicechanges." "plist -target /" msgstr "" -"RELEASE=\"python-3.13.0b2-macos11.pkg\"\n" +"RELEASE=\"python-\\ |version|\\ 0b2-macos11.pkg\"\n" "\n" "# download installer pkg\n" -"curl -O https://www.python.org/ftp/python/3.13.0/${RELEASE}\n" +"curl -O \\https://www.python.org/ftp/python/\\ |version|\\ .0/${RELEASE}\n" "\n" "# create installer choicechanges to customize the install:\n" -"# enable the PythonTFramework-3.13 package\n" +"# enable the PythonTFramework-\\ |version|\\ package\n" "# while accepting the other defaults (install all other packages)\n" "cat > ./choicechanges.plist <\n" -"\n" "\n" "\n" @@ -835,7 +831,8 @@ msgstr "" " choiceAttribute\n" " selected\n" " choiceIdentifier\n" -" org.python.Python.PythonTFramework-3.13\n" +" org.python.Python.PythonTFramework-\\ |version|\\ \n" " \n" "\n" "\n" @@ -844,7 +841,7 @@ msgstr "" "sudo installer -pkg ./${RELEASE} -applyChoiceChangesXML ./choicechanges." "plist -target /" -#: using/mac.rst:405 +#: using/mac.rst:406 msgid "" "You can then test that both installer builds are now available with " "something like:" @@ -852,45 +849,49 @@ msgstr "" "Μπορείτε στη συνέχεια να ελέγξετε ότι και οι δύο εγκαταστάτες είναι " "διαθέσιμοι με κάτι σαν:" -#: using/mac.rst:407 +#: using/mac.rst:410 msgid "" "$ # test that the free-threaded interpreter was installed if the Unix " "Command Tools package was enabled\n" -"$ /usr/local/bin/python3.13t -VV\n" -"Python 3.13.0b2 experimental free-threading build (v3.13.0b2:3a83b172af, " -"Jun 5 2024, 12:57:31) [Clang 15.0.0 (clang-1500.3.9.4)]\n" -"$ # and the traditional interpreter\n" -"$ /usr/local/bin/python3.13 -VV\n" -"Python 3.13.0b2 (v3.13.0b2:3a83b172af, Jun 5 2024, 12:50:24) [Clang 15.0.0 " +"$ /usr/local/bin/python\\ |version|\\ t -VV\n" +"Python \\ |version|\\ .0b2 free-threading build (v\\ |version|" +"\\ .0b2:3a83b172af, Jun 5 2024, 12:57:31) [Clang 15.0.0 " "(clang-1500.3.9.4)]\n" +"$ # and the traditional interpreter\n" +"$ /usr/local/bin/python\\ |version|\\ -VV\n" +"Python \\ |version|\\ .0b2 (v\\ |version|\\ .0b2:3a83b172af, Jun 5 2024, " +"12:50:24) [Clang 15.0.0 (clang-1500.3.9.4)]\n" "$ # test that they are also available without the prefix if /usr/local/bin " "is on $PATH\n" -"$ python3.13t -VV\n" -"Python 3.13.0b2 experimental free-threading build (v3.13.0b2:3a83b172af, " -"Jun 5 2024, 12:57:31) [Clang 15.0.0 (clang-1500.3.9.4)]\n" -"$ python3.13 -VV\n" -"Python 3.13.0b2 (v3.13.0b2:3a83b172af, Jun 5 2024, 12:50:24) [Clang 15.0.0 " -"(clang-1500.3.9.4)]" +"$ python\\ |version|\\ t -VV\n" +"Python \\ |version|\\ .0b2 free-threading build (v\\ |version|" +"\\ .0b2:3a83b172af, Jun 5 2024, 12:57:31) [Clang 15.0.0 " +"(clang-1500.3.9.4)]\n" +"$ python\\ |version|\\ -VV\n" +"Python \\ |version|\\ .0b2 (v\\ |version|\\ .0b2:3a83b172af, Jun 5 2024, " +"12:50:24) [Clang 15.0.0 (clang-1500.3.9.4)]" msgstr "" "$ # test that the free-threaded interpreter was installed if the Unix " "Command Tools package was enabled\n" -"$ /usr/local/bin/python3.13t -VV\n" -"Python 3.13.0b2 experimental free-threading build (v3.13.0b2:3a83b172af, " -"Jun 5 2024, 12:57:31) [Clang 15.0.0 (clang-1500.3.9.4)]\n" -"$ # and the traditional interpreter\n" -"$ /usr/local/bin/python3.13 -VV\n" -"Python 3.13.0b2 (v3.13.0b2:3a83b172af, Jun 5 2024, 12:50:24) [Clang 15.0.0 " +"$ /usr/local/bin/python\\ |version|\\ t -VV\n" +"Python \\ |version|\\ .0b2 free-threading build (v\\ |version|" +"\\ .0b2:3a83b172af, Jun 5 2024, 12:57:31) [Clang 15.0.0 " "(clang-1500.3.9.4)]\n" +"$ # and the traditional interpreter\n" +"$ /usr/local/bin/python\\ |version|\\ -VV\n" +"Python \\ |version|\\ .0b2 (v\\ |version|\\ .0b2:3a83b172af, Jun 5 2024, " +"12:50:24) [Clang 15.0.0 (clang-1500.3.9.4)]\n" "$ # test that they are also available without the prefix if /usr/local/bin " "is on $PATH\n" -"$ python3.13t -VV\n" -"Python 3.13.0b2 experimental free-threading build (v3.13.0b2:3a83b172af, " -"Jun 5 2024, 12:57:31) [Clang 15.0.0 (clang-1500.3.9.4)]\n" -"$ python3.13 -VV\n" -"Python 3.13.0b2 (v3.13.0b2:3a83b172af, Jun 5 2024, 12:50:24) [Clang 15.0.0 " -"(clang-1500.3.9.4)]" +"$ python\\ |version|\\ t -VV\n" +"Python \\ |version|\\ .0b2 free-threading build (v\\ |version|" +"\\ .0b2:3a83b172af, Jun 5 2024, 12:57:31) [Clang 15.0.0 " +"(clang-1500.3.9.4)]\n" +"$ python\\ |version|\\ -VV\n" +"Python \\ |version|\\ .0b2 (v\\ |version|\\ .0b2:3a83b172af, Jun 5 2024, " +"12:50:24) [Clang 15.0.0 (clang-1500.3.9.4)]" -#: using/mac.rst:423 +#: using/mac.rst:424 msgid "" "Current ``python.org`` installers only install to fixed locations like :file:" "`/Library/Frameworks/`, :file:`/Applications`, and :file:`/usr/local/bin`. " @@ -903,11 +904,11 @@ msgstr "" "την επιλογή ``-domain`` του :command:`installer` για να εγκαταστήσετε σε " "άλλες τοποθεσίες." -#: using/mac.rst:431 +#: using/mac.rst:432 msgid "Distributing Python Applications" msgstr "Διανομή εφαρμογών Python" -#: using/mac.rst:433 +#: using/mac.rst:434 msgid "" "A range of tools exist for converting your Python code into a standalone " "distributable application:" @@ -915,7 +916,7 @@ msgstr "" "Υπάρχει μια σειρά εργαλείων για τη μετατροπή του κώδικα Python σας σε μια " "αυτόνομη διανεμόμενη εφαρμογή:" -#: using/mac.rst:436 +#: using/mac.rst:437 msgid "" ":pypi:`py2app`: Supports creating macOS ``.app`` bundles from a Python " "project." @@ -923,7 +924,7 @@ msgstr "" ":pypi:`py2app`: Υποστηρίζει τη δημιουργία macOS ``.app`` πακέτων από ένα " "έργο Python." -#: using/mac.rst:439 +#: using/mac.rst:440 msgid "" "`Briefcase `_: Part of the `BeeWare " "Project `_; a cross-platform packaging tool that " @@ -935,7 +936,7 @@ msgstr "" "υποστηρίζει τη δημιουργία ``.app`` πακέτων σε macOS, καθώς και τη διαχείριση " "υπογραφής και πιστοποίησης." -#: using/mac.rst:444 +#: using/mac.rst:445 msgid "" "`PyInstaller `_: A cross-platform packaging tool " "that creates a single file or folder as a distributable artifact." @@ -944,11 +945,11 @@ msgstr "" "πλατφορμών που δημιουργεί ένα μόνο αρχείο ή φάκελο ως διανεμόμενο " "αντικείμενο." -#: using/mac.rst:448 +#: using/mac.rst:449 msgid "App Store Compliance" msgstr "Συμμόρφωση App Store" -#: using/mac.rst:450 +#: using/mac.rst:451 msgid "" "Apps submitted for distribution through the macOS App Store must pass " "Apple's app review process. This process includes a set of automated " @@ -960,7 +961,7 @@ msgstr "" "περιλαμβάνει ένα σύνολο αυτοματοποιημένων κανόνων επικύρωσης που ελέγχουν το " "υποβληθέν πακέτο εφαρμογής για προβληματικό κώδικα." -#: using/mac.rst:454 +#: using/mac.rst:455 msgid "" "The Python standard library contains some code that is known to violate " "these automated rules. While these violations appear to be false positives, " @@ -974,7 +975,7 @@ msgstr "" "βιβλιοθήκη προτύπων Python για να περάσει μια εφαρμογή την αναθεώρηση του " "App Store." -#: using/mac.rst:459 +#: using/mac.rst:460 msgid "" "The Python source tree contains :source:`a patch file ` that will remove all code that is known to cause " @@ -988,7 +989,7 @@ msgstr "" "επιδιόρθωση εφαρμόζεται αυτόματα όταν η CPython διαμορφώνεται με την :option:" "`--with-app-store-compliance` επιλογή." -#: using/mac.rst:465 +#: using/mac.rst:466 msgid "" "This patch is not normally required to use CPython on a Mac; nor is it " "required if you are distributing an app *outside* the macOS App Store. It is " @@ -999,11 +1000,11 @@ msgstr "" "Ούτε απαιτείται εάν διανέμετε μια εφαρμογή *εκτός* του macOS App Store. " "Απαιτείται *μόνο* εάν χρησιμοποιείτε το macOS App Store ως κανάλι διανομής." -#: using/mac.rst:470 +#: using/mac.rst:471 msgid "Other Resources" msgstr "Άλλοι πόροι" -#: using/mac.rst:472 +#: using/mac.rst:473 msgid "" "The `python.org Help page `_ has links " "to many useful resources. The `Pythonmac-SIG mailing list `_ είναι ένας " "άλλος πόρος υποστήριξης ειδικά για χρήστες και προγραμματιστές Python στο " "Mac." + +#~ msgid "(Experimental)" +#~ msgstr "(Πειραματικό)" + +#~ msgid "" +#~ "Everything described in this section is considered experimental, and " +#~ "should be expected to change in future releases." +#~ msgstr "" +#~ "Όλα όσα περιγράφονται σε αυτήν την ενότητα θεωρούνται πειραματικά και θα " +#~ "πρέπει να αναμένονται να αλλάξουν σε μελλοντικές εκδόσεις." + +#~ msgid "|usemac_python_x_dot_y_t_literal| ``-m venv ``" +#~ msgstr "|usemac_python_x_dot_y_t_literal| ``-m venv ``" + +#~ msgid "|usemac_python_x_dot_y_t_literal| ``-m idlelib``" +#~ msgstr "|usemac_python_x_dot_y_t_literal| ``-m idlelib``" diff --git a/using/unix.po b/using/unix.po index bca5f7f6..f3e8fce0 100644 --- a/using/unix.po +++ b/using/unix.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-03 17:10+0300\n" "Last-Translator: Kleopatra Karapanagiotou \n" "Language-Team: PyGreece \n" diff --git a/using/windows.po b/using/windows.po index 55c5af9e..596cd08a 100644 --- a/using/windows.po +++ b/using/windows.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -118,56 +118,49 @@ msgstr "" #: using/windows.rst:79 msgid "" "After installation, the ``python``, ``py``, and ``pymanager`` commands " -"should be available. If they are not, click Start and search for \"Manage " -"app execution aliases\". This settings page will let you enable the relevant " -"commands. They will be labelled \"Python (default)\", \"Python (default " -"windowed)\", and \"Python install manager\"." +"should be available. If you have existing installations of Python, or you " +"have modified your :envvar:`PATH` variable, you may need to remove them or " +"undo the modifications. See :ref:`pymanager-troubleshoot` for more help with " +"fixing non-working commands." msgstr "" #: using/windows.rst:85 msgid "" -"If you have existing installations of Python, or you have modified your :" -"envvar:`PATH` variable, you may need to remove them or undo the " -"modifications in order for the commands to work. Old versions of Python can " -"be reinstalled using the Python install manager." -msgstr "" - -#: using/windows.rst:90 -msgid "" "When you first install a runtime, you will likely be prompted to add a " "directory to your :envvar:`PATH`. This is optional, if you prefer to use the " "``py`` command, but is offered for those who prefer the full range of " "aliases (such as ``python3.14.exe``) to be available. The directory will be :" -"file:`%LocalAppData%\\Python\\bin` by default, but may be customized by an " -"administrator. Click Start and search for \"Edit environment variables for " -"your account\" for the system settings page to add the path." +"file:`%LocalAppData%\\\\Python\\\\bin` by default, but may be customized by " +"an administrator. Click Start and search for \"Edit environment variables " +"for your account\" for the system settings page to add the path." msgstr "" -#: using/windows.rst:98 +#: using/windows.rst:93 msgid "" "Each Python runtime you install will have its own directory for scripts. " "These also need to be added to :envvar:`PATH` if you want to use them." msgstr "" -#: using/windows.rst:101 +#: using/windows.rst:96 msgid "" "The Python install manager will be automatically updated to new releases. " "This does not affect any installs of Python runtimes. Uninstalling the " "Python install manager does not uninstall any Python runtimes." msgstr "" -#: using/windows.rst:105 +#: using/windows.rst:100 msgid "" "If you are not able to install an MSIX in your context, for example, you are " -"using automated deployment software that does not support it, please see :" -"ref:`pymanager-advancedinstall` below for more information." +"using automated deployment software that does not support it, or are " +"targeting Windows Server 2019, please see :ref:`pymanager-advancedinstall` " +"below for more information." msgstr "" -#: using/windows.rst:111 +#: using/windows.rst:107 msgid "Basic Use" msgstr "" -#: using/windows.rst:113 +#: using/windows.rst:109 msgid "" "The recommended command for launching Python is ``python``, which will " "either launch the version requested by the script being launched, an active " @@ -177,7 +170,7 @@ msgid "" "latest release will be installed automatically." msgstr "" -#: using/windows.rst:120 +#: using/windows.rst:116 msgid "" "For all scenarios involving multiple runtime versions, the recommended " "command is ``py``. This may be used anywhere in place of ``python`` or the " @@ -187,7 +180,7 @@ msgid "" "below." msgstr "" -#: using/windows.rst:126 +#: using/windows.rst:122 msgid "" "Because the ``py`` command may already be taken by the previous version, " "there is also an unambiguous ``pymanager`` command. Scripted installs that " @@ -199,7 +192,7 @@ msgid "" "provides equivalent behaviour to ``py ...``)." msgstr "" -#: using/windows.rst:135 +#: using/windows.rst:131 msgid "" "Each of these commands also has a windowed version that avoids creating a " "console window. These are ``pyw``, ``pythonw`` and ``pymanagerw``. A " @@ -208,14 +201,14 @@ msgid "" "Windows, but is not meant to be widely used or recommended." msgstr "" -#: using/windows.rst:141 +#: using/windows.rst:137 msgid "" "To launch your default runtime, run ``python`` or ``py`` with the arguments " "you want to be passed to the runtime (such as script files or the module to " "launch):" msgstr "" -#: using/windows.rst:144 +#: using/windows.rst:140 msgid "" "$> py\n" "...\n" @@ -225,6 +218,13 @@ msgid "" "..." msgstr "" +#: using/windows.rst:149 +msgid "" +"The default runtime can be overridden with the :envvar:" +"`PYTHON_MANAGER_DEFAULT` environment variable, or a configuration file. See :" +"ref:`pymanager-config` for information about configuration settings." +msgstr "" + #: using/windows.rst:153 msgid "" "To launch a specific runtime, the ``py`` command accepts a ``-V:`` " @@ -577,7 +577,7 @@ msgstr "" msgid "Environment Variable" msgstr "" -#: using/windows.rst:1247 using/windows.rst:1862 +#: using/windows.rst:1301 using/windows.rst:1916 msgid "Description" msgstr "" @@ -767,15 +767,15 @@ msgstr "" msgid "````" msgstr "" -#: using/windows.rst:1636 +#: using/windows.rst:1690 msgid "For example, if the first line of your script starts with" msgstr "" -#: using/windows.rst:1638 +#: using/windows.rst:1692 msgid "#! /usr/bin/python" msgstr "" -#: using/windows.rst:1642 +#: using/windows.rst:1696 msgid "" "The default Python or an active virtual environment will be located and " "used. As many Python scripts written to work on Unix will already have this " @@ -797,6 +797,13 @@ msgstr "" #: using/windows.rst:475 msgid "" +"If no runtimes are installed, or if automatic installation is enabled, the " +"requested runtime will be installed if necessary. See :ref:`pymanager-" +"config` for information about configuration settings." +msgstr "" + +#: using/windows.rst:479 +msgid "" "The ``/usr/bin/env`` form of shebang line will also search the :envvar:" "`PATH` environment variable for unrecognized commands. This corresponds to " "the behaviour of the Unix ``env`` program, which performs the same search, " @@ -805,7 +812,7 @@ msgid "" "``shebang_can_run_anything`` configuration option." msgstr "" -#: using/windows.rst:482 +#: using/windows.rst:486 msgid "" "Shebang lines that do not match any of patterns are treated as *Windows* " "executable paths that are absolute or relative to the directory containing " @@ -817,11 +824,11 @@ msgid "" "``shebang_can_run_anything`` configuration option." msgstr "" -#: using/windows.rst:506 +#: using/windows.rst:518 msgid "Advanced Installation" msgstr "" -#: using/windows.rst:508 +#: using/windows.rst:520 msgid "" "For situations where an MSIX cannot be installed, such as some older " "administrative distribution platforms, there is an MSI available from the " @@ -832,7 +839,13 @@ msgid "" "configuration." msgstr "" -#: using/windows.rst:515 +#: using/windows.rst:529 +msgid "" +"Windows Server 2019 is the only version of Windows that CPython supports " +"that does not support MSIX. For Windows Server 2019, you should use the MSI." +msgstr "" + +#: using/windows.rst:532 msgid "" "Be aware that the MSI package does not bundle any runtimes, and so is not " "suitable for installs into offline environments without also creating an " @@ -840,7 +853,7 @@ msgid "" "admin-config` for information on handling these scenarios." msgstr "" -#: using/windows.rst:520 +#: using/windows.rst:537 msgid "" "Runtimes installed by the MSI are shared with those installed by the MSIX, " "and are all per-user only. The Python install manager does not support " @@ -850,7 +863,7 @@ msgid "" "menu." msgstr "" -#: using/windows.rst:526 +#: using/windows.rst:543 msgid "" "When the MSIX is installed, but commands are not available in the :envvar:" "`PATH` environment variable, they can be found under :file:`%LocalAppData%\\" @@ -862,16 +875,45 @@ msgid "" "recommended." msgstr "" -#: using/windows.rst:535 +#: using/windows.rst:552 +msgid "" +"To programmatically install the Python install manager, it is easiest to use " +"WinGet, which is included with all supported versions of Windows:" +msgstr "" + +#: using/windows.rst:555 +msgid "" +"$> winget install 9NQ7512CXL7T -e --accept-package-agreements --disable-" +"interactivity\n" +"\n" +"# Optionally run the configuration checker and accept all changes\n" +"$> py install --configure -y" +msgstr "" + +#: using/windows.rst:562 +msgid "" +"To download the Python install manager and install on another machine, the " +"following WinGet command will download the required files from the Store to " +"your Downloads directory (add ``-d `` to customize the output " +"location). This also generates a YAML file that appears to be unnecessary, " +"as the downloaded MSIX can be installed by launching or using the commands " +"below." +msgstr "" + +#: using/windows.rst:568 +msgid "" +"$> winget download 9NQ7512CXL7T -e --skip-license --accept-package-" +"agreements --accept-source-agreements" +msgstr "" + +#: using/windows.rst:572 msgid "" -"To programmatically install or uninstall the MSIX without using your " -"distribution platform's native support, the `Add-AppxPackage `_ and `Remove-" -"AppxPackage `_ PowerShell cmdlets are simplest to use:" +"To programmatically install or uninstall an MSIX using only PowerShell, the " +"`Add-AppxPackage`_ and `Remove-AppxPackage`_ PowerShell cmdlets are " +"recommended:" msgstr "" -#: using/windows.rst:541 +#: using/windows.rst:575 msgid "" "$> Add-AppxPackage C:\\Downloads\\python-manager-25.0.msix\n" "...\n" @@ -879,23 +921,52 @@ msgid "" "AppxPackage" msgstr "" -#: using/windows.rst:547 +#: using/windows.rst:581 +msgid "" +"The latest release can be downloaded and installed by Windows by passing the " +"AppInstaller file to the Add-AppxPackage command. This installs using the " +"MSIX on python.org, and is only recommended for cases where installing via " +"the Store (interactively or using WinGet) is not possible." +msgstr "" + +#: using/windows.rst:586 +msgid "" +"$> Add-AppxPackage -AppInstallerFile https://www.python.org/ftp/python/" +"pymanager/pymanager.appinstaller" +msgstr "" + +#: using/windows.rst:590 +msgid "" +"Other tools and APIs may also be used to provision an MSIX package for all " +"users on a machine, but Python does not consider this a supported scenario. " +"We suggest looking into the PowerShell `Add-AppxProvisionedPackage`_ cmdlet, " +"the native Windows `PackageManager`_ class, or the documentation and support " +"for your deployment tool." +msgstr "" + +#: using/windows.rst:596 +msgid "" +"Regardless of the install method, users will still need to install their own " +"copies of Python itself, as there is no way to trigger those installs " +"without being a logged in user. When using the MSIX, the latest version of " +"Python will be available for all users to install without network access." +msgstr "" + +#: using/windows.rst:601 msgid "" -"The native APIs for package management may be found on the Windows " -"`PackageManager `_ class. The :func:`!AddPackageAsync` method " -"installs for the current user, or use :func:`!StagePackageAsync` followed " -"by :func:`!ProvisionPackageForAllUsersAsync` to install the Python install " -"manager for all users from the MSIX package. Users will still need to " -"install their own copies of Python itself, as there is no way to trigger " -"those installs without being a logged in user." +"Note that the MSIX downloadable from the Store and from the Python website " +"are subtly different and cannot be installed at the same time. Wherever " +"possible, we suggest using the above WinGet commands to download the package " +"from the Store to reduce the risk of setting up conflicting installs. There " +"are no licensing restrictions on the Python install manager that would " +"prevent using the Store package in this way." msgstr "" -#: using/windows.rst:558 +#: using/windows.rst:612 msgid "Administrative Configuration" msgstr "" -#: using/windows.rst:560 +#: using/windows.rst:614 msgid "" "There are a number of options that may be useful for administrators to " "override configuration of the Python install manager. These can be used to " @@ -904,7 +975,7 @@ msgid "" "below." msgstr "" -#: using/windows.rst:565 +#: using/windows.rst:619 msgid "" "Configuration options may be overridden in the registry by setting values " "under :file:`HKEY_LOCAL_MACHINE\\\\Software\\\\Policies\\\\Python\\" @@ -917,7 +988,7 @@ msgid "" "``base_config`` allows users to further modify settings they may need." msgstr "" -#: using/windows.rst:575 +#: using/windows.rst:629 msgid "" "Note that most settings with environment variables support those variables " "because their default setting specifies the variable. If you override them, " @@ -929,13 +1000,13 @@ msgid "" "environment variable will be used instead." msgstr "" -#: using/windows.rst:584 +#: using/windows.rst:638 msgid "" "Configuration settings that are paths are interpreted as relative to the " "directory containing the configuration file that specified them." msgstr "" -#: using/windows.rst:587 +#: using/windows.rst:641 msgid "Administrative configuration options" msgstr "" @@ -1053,34 +1124,34 @@ msgid "" "other than a Python runtime." msgstr "" -#: using/windows.rst:1426 +#: using/windows.rst:1480 msgid "Installing Free-threaded Binaries" msgstr "" -#: using/windows.rst:874 using/windows.rst:1428 +#: using/windows.rst:928 using/windows.rst:1482 msgid "(Experimental)" msgstr "" -#: using/windows.rst:878 using/windows.rst:1432 +#: using/windows.rst:932 using/windows.rst:1486 msgid "" "Everything described in this section is considered experimental, and should " "be expected to change in future releases." msgstr "" -#: using/windows.rst:640 +#: using/windows.rst:694 msgid "" "Pre-built distributions of the experimental free-threaded build are " "available by installing tags with the ``t`` suffix." msgstr "" -#: using/windows.rst:643 +#: using/windows.rst:697 msgid "" "$> py install 3.14t\n" "$> py install 3.14t-arm64\n" "$> py install 3.14t-32" msgstr "" -#: using/windows.rst:649 +#: using/windows.rst:703 msgid "" "This will install and register as normal. If you have no other runtimes " "installed, then ``python`` will launch this one. Otherwise, you will need to " @@ -1089,11 +1160,11 @@ msgid "" "commands." msgstr "" -#: using/windows.rst:665 +#: using/windows.rst:719 msgid "Troubleshooting" msgstr "" -#: using/windows.rst:659 +#: using/windows.rst:713 msgid "" "If your Python install manager does not seem to be working correctly, please " "work through these tests and fixes to see if it helps. If not, please report " @@ -1231,28 +1302,28 @@ msgid "" "for each runtime, and so you may need to add multiple paths." msgstr "" -#: using/windows.rst:734 +#: using/windows.rst:788 msgid "The embeddable package" msgstr "" -#: using/windows.rst:738 +#: using/windows.rst:792 msgid "" "The embedded distribution is a ZIP file containing a minimal Python " "environment. It is intended for acting as part of another application, " "rather than being directly accessed by end-users." msgstr "" -#: using/windows.rst:742 +#: using/windows.rst:796 msgid "" "To install an embedded distribution, we recommend using ``py install`` with " "the ``--target`` option:" msgstr "" -#: using/windows.rst:745 +#: using/windows.rst:799 msgid "$> py install 3.14-embed --target=runtime" msgstr "" -#: using/windows.rst:749 +#: using/windows.rst:803 msgid "" "When extracted, the embedded distribution is (almost) fully isolated from " "the user's system, including environment variables, system registry " @@ -1263,14 +1334,14 @@ msgid "" "documentation are not included." msgstr "" -#: using/windows.rst:756 +#: using/windows.rst:810 msgid "" "A default ``._pth`` file is included, which further restricts the default " "search paths (as described below in :ref:`windows_finding_modules`). This " "file is intended for embedders to modify as necessary." msgstr "" -#: using/windows.rst:760 +#: using/windows.rst:814 msgid "" "Third-party packages should be installed by the application installer " "alongside the embedded distribution. Using pip to manage dependencies as for " @@ -1281,16 +1352,16 @@ msgid "" "compatibility with newer versions before providing updates to users." msgstr "" -#: using/windows.rst:768 +#: using/windows.rst:822 msgid "" "The two recommended use cases for this distribution are described below." msgstr "" -#: using/windows.rst:771 +#: using/windows.rst:825 msgid "Python Application" msgstr "" -#: using/windows.rst:773 +#: using/windows.rst:827 msgid "" "An application written in Python does not necessarily require users to be " "aware of that fact. The embedded distribution may be used in this case to " @@ -1299,7 +1370,7 @@ msgid "" "there are two options." msgstr "" -#: using/windows.rst:779 +#: using/windows.rst:833 msgid "" "Using a specialized executable as a launcher requires some coding, but " "provides the most transparent experience for users. With a customized " @@ -1310,7 +1381,7 @@ msgid "" "line." msgstr "" -#: using/windows.rst:786 +#: using/windows.rst:840 msgid "" "The simpler approach is to provide a batch file or generated shortcut that " "directly calls the ``python.exe`` or ``pythonw.exe`` with the required " @@ -1319,7 +1390,7 @@ msgid "" "from other running Python processes or file associations." msgstr "" -#: using/windows.rst:792 +#: using/windows.rst:846 msgid "" "With the latter approach, packages should be installed as directories " "alongside the Python executable to ensure they are available on the path. " @@ -1328,11 +1399,11 @@ msgid "" "application." msgstr "" -#: using/windows.rst:798 +#: using/windows.rst:852 msgid "Embedding Python" msgstr "" -#: using/windows.rst:800 +#: using/windows.rst:854 msgid "" "Applications written in native code often require some form of scripting " "language, and the embedded Python distribution can be used for this purpose. " @@ -1343,7 +1414,7 @@ msgid "" "interpreter." msgstr "" -#: using/windows.rst:807 +#: using/windows.rst:861 msgid "" "As with the application use, packages can be installed to any location as " "there is an opportunity to specify search paths before initializing the " @@ -1351,11 +1422,11 @@ msgid "" "the embedded distribution and a regular installation." msgstr "" -#: using/windows.rst:816 +#: using/windows.rst:870 msgid "The nuget.org packages" msgstr "" -#: using/windows.rst:820 +#: using/windows.rst:874 msgid "" "The nuget.org package is a reduced size Python environment intended for use " "on continuous integration and build systems that do not have a system-wide " @@ -1363,14 +1434,14 @@ msgid "" "works perfectly fine for packages containing build-time tools." msgstr "" -#: using/windows.rst:825 +#: using/windows.rst:879 msgid "" "Visit `nuget.org `_ for the most up-to-date " "information on using nuget. What follows is a summary that is sufficient for " "Python developers." msgstr "" -#: using/windows.rst:829 +#: using/windows.rst:883 msgid "" "The ``nuget.exe`` command line tool may be downloaded directly from " "``https://aka.ms/nugetclidl``, for example, using curl or PowerShell. With " @@ -1378,13 +1449,13 @@ msgid "" "installed using::" msgstr "" -#: using/windows.rst:834 +#: using/windows.rst:888 msgid "" "nuget.exe install python -ExcludeVersion -OutputDirectory .\n" "nuget.exe install pythonx86 -ExcludeVersion -OutputDirectory ." msgstr "" -#: using/windows.rst:837 +#: using/windows.rst:891 msgid "" "To select a particular version, add a ``-Version 3.x.y``. The output " "directory may be changed from ``.``, and the package will be installed into " @@ -1394,7 +1465,7 @@ msgid "" "directory that contains the Python installation:" msgstr "" -#: using/windows.rst:844 +#: using/windows.rst:898 msgid "" "# Without -ExcludeVersion\n" "> .\\python.3.5.2\\tools\\python.exe -V\n" @@ -1405,7 +1476,7 @@ msgid "" "Python 3.5.2" msgstr "" -#: using/windows.rst:854 +#: using/windows.rst:908 msgid "" "In general, nuget packages are not upgradeable, and newer versions should be " "installed side-by-side and referenced using the full path. Alternatively, " @@ -1413,7 +1484,7 @@ msgid "" "will do this automatically if they do not preserve files between builds." msgstr "" -#: using/windows.rst:859 +#: using/windows.rst:913 msgid "" "Alongside the ``tools`` directory is a ``build\\native`` directory. This " "contains a MSBuild properties file ``python.props`` that can be used in a C+" @@ -1421,7 +1492,7 @@ msgid "" "automatically use the headers and import libraries in your build." msgstr "" -#: using/windows.rst:864 +#: using/windows.rst:918 msgid "" "The package information pages on nuget.org are `www.nuget.org/packages/" "python `_ for the 64-bit version, " @@ -1430,11 +1501,11 @@ msgid "" "`_ for the ARM64 version" msgstr "" -#: using/windows.rst:872 +#: using/windows.rst:926 msgid "Free-threaded packages" msgstr "" -#: using/windows.rst:881 +#: using/windows.rst:935 msgid "" "Packages containing free-threaded binaries are named `python-freethreaded " "`_ for the 64-bit " @@ -1445,45 +1516,45 @@ msgid "" "exe`` entry points, both of which run free threaded." msgstr "" -#: using/windows.rst:892 +#: using/windows.rst:946 msgid "Alternative bundles" msgstr "" -#: using/windows.rst:894 +#: using/windows.rst:948 msgid "" "Besides the standard CPython distribution, there are modified packages " "including additional functionality. The following is a list of popular " "versions and their key features:" msgstr "" -#: using/windows.rst:898 +#: using/windows.rst:952 msgid "`ActivePython `_" msgstr "" -#: using/windows.rst:899 +#: using/windows.rst:953 msgid "Installer with multi-platform compatibility, documentation, PyWin32" msgstr "" -#: using/windows.rst:901 +#: using/windows.rst:955 msgid "`Anaconda `_" msgstr "" -#: using/windows.rst:902 +#: using/windows.rst:956 msgid "" "Popular scientific modules (such as numpy, scipy and pandas) and the " "``conda`` package manager." msgstr "" -#: using/windows.rst:905 +#: using/windows.rst:959 msgid "" "`Enthought Deployment Manager `_" msgstr "" -#: using/windows.rst:906 +#: using/windows.rst:960 msgid "\"The Next Generation Python Environment and Package Manager\"." msgstr "" -#: using/windows.rst:908 +#: using/windows.rst:962 msgid "" "Previously Enthought provided Canopy, but it `reached end of life in 2016 " "`_." msgstr "" -#: using/windows.rst:911 +#: using/windows.rst:965 msgid "`WinPython `_" msgstr "" -#: using/windows.rst:912 +#: using/windows.rst:966 msgid "" "Windows-specific distribution with prebuilt scientific packages and tools " "for building packages." msgstr "" -#: using/windows.rst:915 +#: using/windows.rst:969 msgid "" "Note that these packages may not include the latest versions of Python or " "other libraries, and are not maintained or supported by the core Python team." msgstr "" -#: using/windows.rst:920 +#: using/windows.rst:974 msgid "Supported Windows versions" msgstr "" -#: using/windows.rst:922 +#: using/windows.rst:976 msgid "" "As specified in :pep:`11`, a Python release only supports a Windows platform " "while Microsoft considers the platform under extended support. This means " @@ -1520,17 +1591,17 @@ msgid "" "please install Python 3.12." msgstr "" -#: using/windows.rst:1213 +#: using/windows.rst:1267 msgid "Removing the MAX_PATH Limitation" msgstr "" -#: using/windows.rst:1215 +#: using/windows.rst:1269 msgid "" "Windows historically has limited path lengths to 260 characters. This meant " "that paths longer than this would not resolve and errors would result." msgstr "" -#: using/windows.rst:937 +#: using/windows.rst:991 msgid "" "In the latest versions of Windows, this limitation can be expanded to over " "32,000 characters. Your administrator will need to activate the \"Enable " @@ -1539,36 +1610,36 @@ msgid "" "``HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\FileSystem``." msgstr "" -#: using/windows.rst:1224 +#: using/windows.rst:1278 msgid "" "This allows the :func:`open` function, the :mod:`os` module and most other " "path functionality to accept and return paths longer than 260 characters." msgstr "" -#: using/windows.rst:945 +#: using/windows.rst:999 msgid "" "After changing the above option and rebooting, no further configuration is " "required." msgstr "" -#: using/windows.rst:952 +#: using/windows.rst:1006 msgid "UTF-8 mode" msgstr "" -#: using/windows.rst:956 +#: using/windows.rst:1010 msgid "" "Windows still uses legacy encodings for the system encoding (the ANSI Code " "Page). Python uses it for the default encoding of text files (e.g. :func:" "`locale.getencoding`)." msgstr "" -#: using/windows.rst:960 +#: using/windows.rst:1014 msgid "" "This may cause issues because UTF-8 is widely used on the internet and most " "Unix systems, including WSL (Windows Subsystem for Linux)." msgstr "" -#: using/windows.rst:963 +#: using/windows.rst:1017 msgid "" "You can use the :ref:`Python UTF-8 Mode ` to change the default " "text encoding to UTF-8. You can enable the :ref:`Python UTF-8 Mode ` is enabled, you can still use " "the system encoding (the ANSI Code Page) via the \"mbcs\" codec." msgstr "" -#: using/windows.rst:972 +#: using/windows.rst:1026 msgid "" "Note that adding ``PYTHONUTF8=1`` to the default environment variables will " "affect all Python 3.7+ applications on your system. If you have any Python " @@ -1592,45 +1663,45 @@ msgid "" "utf8`` command line option." msgstr "" -#: using/windows.rst:979 +#: using/windows.rst:1033 msgid "" "Even when UTF-8 mode is disabled, Python uses UTF-8 by default on Windows " "for:" msgstr "" -#: using/windows.rst:982 +#: using/windows.rst:1036 msgid "Console I/O including standard I/O (see :pep:`528` for details)." msgstr "" -#: using/windows.rst:983 +#: using/windows.rst:1037 msgid "" "The :term:`filesystem encoding ` " "(see :pep:`529` for details)." msgstr "" -#: using/windows.rst:990 +#: using/windows.rst:1044 msgid "Finding modules" msgstr "" -#: using/windows.rst:992 +#: using/windows.rst:1046 msgid "" "These notes supplement the description at :ref:`sys-path-init` with detailed " "Windows notes." msgstr "" -#: using/windows.rst:995 +#: using/windows.rst:1049 msgid "" "When no ``._pth`` file is found, this is how :data:`sys.path` is populated " "on Windows:" msgstr "" -#: using/windows.rst:998 +#: using/windows.rst:1052 msgid "" "An empty entry is added at the start, which corresponds to the current " "directory." msgstr "" -#: using/windows.rst:1001 +#: using/windows.rst:1055 msgid "" "If the environment variable :envvar:`PYTHONPATH` exists, as described in :" "ref:`using-on-envvars`, its entries are added next. Note that on Windows, " @@ -1638,7 +1709,7 @@ msgid "" "from the colon used in drive identifiers (``C:\\`` etc.)." msgstr "" -#: using/windows.rst:1006 +#: using/windows.rst:1060 msgid "" "Additional \"application paths\" can be added in the registry as subkeys of :" "samp:`\\\\SOFTWARE\\\\Python\\\\PythonCore\\\\{version}\\\\PythonPath` under " @@ -1648,7 +1719,7 @@ msgid "" "installers only use HKLM, so HKCU is typically empty.)" msgstr "" -#: using/windows.rst:1013 +#: using/windows.rst:1067 msgid "" "If the environment variable :envvar:`PYTHONHOME` is set, it is assumed as " "\"Python Home\". Otherwise, the path of the main Python executable is used " @@ -1659,31 +1730,31 @@ msgid "" "PythonPath stored in the registry." msgstr "" -#: using/windows.rst:1021 +#: using/windows.rst:1075 msgid "" "If the Python Home cannot be located, no :envvar:`PYTHONPATH` is specified " "in the environment, and no registry entries can be found, a default path " "with relative entries is used (e.g. ``.\\Lib;.\\plat-win``, etc)." msgstr "" -#: using/windows.rst:1025 +#: using/windows.rst:1079 msgid "" "If a ``pyvenv.cfg`` file is found alongside the main executable or in the " "directory one level above the executable, the following variations apply:" msgstr "" -#: using/windows.rst:1028 +#: using/windows.rst:1082 msgid "" "If ``home`` is an absolute path and :envvar:`PYTHONHOME` is not set, this " "path is used instead of the path to the main executable when deducing the " "home location." msgstr "" -#: using/windows.rst:1032 +#: using/windows.rst:1086 msgid "The end result of all this is:" msgstr "" -#: using/windows.rst:1034 +#: using/windows.rst:1088 msgid "" "When running :file:`python.exe`, or any other .exe in the main Python " "directory (either an installed version, or directly from the PCbuild " @@ -1691,7 +1762,7 @@ msgid "" "ignored. Other \"application paths\" in the registry are always read." msgstr "" -#: using/windows.rst:1039 +#: using/windows.rst:1093 msgid "" "When Python is hosted in another .exe (different directory, embedded via " "COM, etc), the \"Python Home\" will not be deduced, so the core path from " @@ -1699,20 +1770,20 @@ msgid "" "always read." msgstr "" -#: using/windows.rst:1043 +#: using/windows.rst:1097 msgid "" "If Python can't find its home and there are no registry value (frozen .exe, " "some very strange installation setup) you get a path with some default, but " "relative, paths." msgstr "" -#: using/windows.rst:1047 +#: using/windows.rst:1101 msgid "" "For those who want to bundle Python into their application or distribution, " "the following advice will prevent conflicts with other installations:" msgstr "" -#: using/windows.rst:1050 +#: using/windows.rst:1104 msgid "" "Include a ``._pth`` file alongside your executable containing the " "directories to include. This will ignore paths listed in the registry and " @@ -1720,20 +1791,20 @@ msgid "" "listed." msgstr "" -#: using/windows.rst:1055 +#: using/windows.rst:1109 msgid "" "If you are loading :file:`python3.dll` or :file:`python37.dll` in your own " "executable, explicitly set :c:member:`PyConfig.module_search_paths` before :" "c:func:`Py_InitializeFromConfig`." msgstr "" -#: using/windows.rst:1059 +#: using/windows.rst:1113 msgid "" "Clear and/or overwrite :envvar:`PYTHONPATH` and set :envvar:`PYTHONHOME` " "before launching :file:`python.exe` from your application." msgstr "" -#: using/windows.rst:1062 +#: using/windows.rst:1116 msgid "" "If you cannot use the previous suggestions (for example, you are a " "distribution that allows people to run :file:`python.exe` directly), ensure " @@ -1742,7 +1813,7 @@ msgid "" "correctly named ZIP file will be detected instead.)" msgstr "" -#: using/windows.rst:1068 +#: using/windows.rst:1122 msgid "" "These will ensure that the files in a system-wide installation will not take " "precedence over the copy of the standard library bundled with your " @@ -1752,19 +1823,19 @@ msgid "" "packages." msgstr "" -#: using/windows.rst:1076 +#: using/windows.rst:1130 msgid "" "Add ``._pth`` file support and removes ``applocal`` option from ``pyvenv." "cfg``." msgstr "" -#: using/windows.rst:1081 +#: using/windows.rst:1135 msgid "" "Add :file:`python{XX}.zip` as a potential landmark when directly adjacent to " "the executable." msgstr "" -#: using/windows.rst:1086 +#: using/windows.rst:1140 msgid "" "Modules specified in the registry under ``Modules`` (not ``PythonPath``) may " "be imported by :class:`importlib.machinery.WindowsRegistryFinder`. This " @@ -1772,86 +1843,86 @@ msgid "" "explicitly added to :data:`sys.meta_path` in the future." msgstr "" -#: using/windows.rst:1092 +#: using/windows.rst:1146 msgid "Additional modules" msgstr "" -#: using/windows.rst:1094 +#: using/windows.rst:1148 msgid "" "Even though Python aims to be portable among all platforms, there are " "features that are unique to Windows. A couple of modules, both in the " "standard library and external, and snippets exist to use these features." msgstr "" -#: using/windows.rst:1098 +#: using/windows.rst:1152 msgid "" "The Windows-specific standard modules are documented in :ref:`mswin-specific-" "services`." msgstr "" -#: using/windows.rst:1102 +#: using/windows.rst:1156 msgid "PyWin32" msgstr "" -#: using/windows.rst:1104 +#: using/windows.rst:1158 msgid "" "The :pypi:`PyWin32` module by Mark Hammond is a collection of modules for " "advanced Windows-specific support. This includes utilities for:" msgstr "" -#: using/windows.rst:1108 +#: using/windows.rst:1162 msgid "" "`Component Object Model `_ (COM)" msgstr "" -#: using/windows.rst:1111 +#: using/windows.rst:1165 msgid "Win32 API calls" msgstr "" -#: using/windows.rst:1112 +#: using/windows.rst:1166 msgid "Registry" msgstr "" -#: using/windows.rst:1113 +#: using/windows.rst:1167 msgid "Event log" msgstr "" -#: using/windows.rst:1114 +#: using/windows.rst:1168 msgid "" "`Microsoft Foundation Classes `_ (MFC) user interfaces" msgstr "" -#: using/windows.rst:1118 +#: using/windows.rst:1172 msgid "" "`PythonWin `_ is a sample MFC application shipped with PyWin32. " "It is an embeddable IDE with a built-in debugger." msgstr "" -#: using/windows.rst:1124 +#: using/windows.rst:1178 msgid "" "`Win32 How Do I...? `_" msgstr "" -#: using/windows.rst:1125 +#: using/windows.rst:1179 msgid "by Tim Golden" msgstr "" -#: using/windows.rst:1127 +#: using/windows.rst:1181 msgid "`Python and COM `_" msgstr "" -#: using/windows.rst:1128 +#: using/windows.rst:1182 msgid "by David and Paul Boddie" msgstr "" -#: using/windows.rst:1132 +#: using/windows.rst:1186 msgid "cx_Freeze" msgstr "" -#: using/windows.rst:1134 +#: using/windows.rst:1188 msgid "" "`cx_Freeze `_ wraps Python " "scripts into executable Windows programs (:file:`{*}.exe` files). When you " @@ -1859,11 +1930,11 @@ msgid "" "users to install Python." msgstr "" -#: using/windows.rst:1141 +#: using/windows.rst:1195 msgid "Compiling Python on Windows" msgstr "" -#: using/windows.rst:1143 +#: using/windows.rst:1197 msgid "" "If you want to compile CPython yourself, first thing you should do is get " "the `source `_. You can download " @@ -1871,38 +1942,38 @@ msgid "" "devguide.python.org/setup/#get-the-source-code>`_." msgstr "" -#: using/windows.rst:1148 +#: using/windows.rst:1202 msgid "" "The source tree contains a build solution and project files for Microsoft " "Visual Studio, which is the compiler used to build the official Python " "releases. These files are in the :file:`PCbuild` directory." msgstr "" -#: using/windows.rst:1152 +#: using/windows.rst:1206 msgid "" "Check :file:`PCbuild/readme.txt` for general information on the build " "process." msgstr "" -#: using/windows.rst:1154 +#: using/windows.rst:1208 msgid "For extension modules, consult :ref:`building-on-windows`." msgstr "" -#: using/windows.rst:1161 +#: using/windows.rst:1215 msgid "The full installer (deprecated)" msgstr "" -#: using/windows.rst:1165 +#: using/windows.rst:1219 msgid "" "This installer is deprecated since 3.14 and will not be produced for Python " "3.16 or later. See :ref:`pymanager` for the modern installer." msgstr "" -#: using/windows.rst:1170 +#: using/windows.rst:1224 msgid "Installation steps" msgstr "" -#: using/windows.rst:1172 +#: using/windows.rst:1226 msgid "" "Four Python |version| installers are available for download - two each for " "the 32-bit and 64-bit versions of the interpreter. The *web installer* is a " @@ -1913,43 +1984,43 @@ msgid "" "ways to avoid downloading during installation." msgstr "" -#: using/windows.rst:1180 +#: using/windows.rst:1234 msgid "After starting the installer, one of two options may be selected:" msgstr "" -#: using/windows.rst:1184 +#: using/windows.rst:1238 msgid "If you select \"Install Now\":" msgstr "" -#: using/windows.rst:1186 +#: using/windows.rst:1240 msgid "" "You will *not* need to be an administrator (unless a system update for the C " "Runtime Library is required or you install the :ref:`launcher` for all users)" msgstr "" -#: using/windows.rst:1189 +#: using/windows.rst:1243 msgid "Python will be installed into your user directory" msgstr "" -#: using/windows.rst:1190 +#: using/windows.rst:1244 msgid "" "The :ref:`launcher` will be installed according to the option at the bottom " "of the first page" msgstr "" -#: using/windows.rst:1192 +#: using/windows.rst:1246 msgid "The standard library, test suite, launcher and pip will be installed" msgstr "" -#: using/windows.rst:1193 +#: using/windows.rst:1247 msgid "If selected, the install directory will be added to your :envvar:`PATH`" msgstr "" -#: using/windows.rst:1194 +#: using/windows.rst:1248 msgid "Shortcuts will only be visible for the current user" msgstr "" -#: using/windows.rst:1196 +#: using/windows.rst:1250 msgid "" "Selecting \"Customize installation\" will allow you to select the features " "to install, the installation location and other options or post-install " @@ -1957,42 +2028,42 @@ msgid "" "option." msgstr "" -#: using/windows.rst:1200 +#: using/windows.rst:1254 msgid "" "To perform an all-users installation, you should select \"Customize " "installation\". In this case:" msgstr "" -#: using/windows.rst:1203 +#: using/windows.rst:1257 msgid "You may be required to provide administrative credentials or approval" msgstr "" -#: using/windows.rst:1204 +#: using/windows.rst:1258 msgid "Python will be installed into the Program Files directory" msgstr "" -#: using/windows.rst:1205 +#: using/windows.rst:1259 msgid "The :ref:`launcher` will be installed into the Windows directory" msgstr "" -#: using/windows.rst:1206 +#: using/windows.rst:1260 msgid "Optional features may be selected during installation" msgstr "" -#: using/windows.rst:1207 +#: using/windows.rst:1261 msgid "The standard library can be pre-compiled to bytecode" msgstr "" -#: using/windows.rst:1208 +#: using/windows.rst:1262 msgid "" "If selected, the install directory will be added to the system :envvar:`PATH`" msgstr "" -#: using/windows.rst:1209 +#: using/windows.rst:1263 msgid "Shortcuts are available for all users" msgstr "" -#: using/windows.rst:1218 +#: using/windows.rst:1272 msgid "" "In the latest versions of Windows, this limitation can be expanded to " "approximately 32,000 characters. Your administrator will need to activate " @@ -2001,19 +2072,19 @@ msgid "" "``HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\FileSystem``." msgstr "" -#: using/windows.rst:1227 +#: using/windows.rst:1281 msgid "After changing the above option, no further configuration is required." msgstr "" -#: using/windows.rst:1231 +#: using/windows.rst:1285 msgid "Support for long paths was enabled in Python." msgstr "" -#: using/windows.rst:1236 +#: using/windows.rst:1290 msgid "Installing Without UI" msgstr "" -#: using/windows.rst:1238 +#: using/windows.rst:1292 msgid "" "All of the options available in the installer UI can also be specified from " "the command line, allowing scripted installers to replicate an installation " @@ -2021,350 +2092,350 @@ msgid "" "without suppressing the UI in order to change some of the defaults." msgstr "" -#: using/windows.rst:1243 +#: using/windows.rst:1297 msgid "" "The following options (found by executing the installer with ``/?``) can be " "passed into the installer:" msgstr "" -#: using/windows.rst:1267 using/windows.rst:1862 +#: using/windows.rst:1321 using/windows.rst:1916 msgid "Name" msgstr "" -#: using/windows.rst:1249 +#: using/windows.rst:1303 msgid "/passive" msgstr "" -#: using/windows.rst:1249 +#: using/windows.rst:1303 msgid "to display progress without requiring user interaction" msgstr "" -#: using/windows.rst:1251 +#: using/windows.rst:1305 msgid "/quiet" msgstr "" -#: using/windows.rst:1251 +#: using/windows.rst:1305 msgid "to install/uninstall without displaying any UI" msgstr "" -#: using/windows.rst:1253 +#: using/windows.rst:1307 msgid "/simple" msgstr "" -#: using/windows.rst:1253 +#: using/windows.rst:1307 msgid "to prevent user customization" msgstr "" -#: using/windows.rst:1255 +#: using/windows.rst:1309 msgid "/uninstall" msgstr "" -#: using/windows.rst:1255 +#: using/windows.rst:1309 msgid "to remove Python (without confirmation)" msgstr "" -#: using/windows.rst:1257 +#: using/windows.rst:1311 msgid "/layout [directory]" msgstr "" -#: using/windows.rst:1257 +#: using/windows.rst:1311 msgid "to pre-download all components" msgstr "" -#: using/windows.rst:1259 +#: using/windows.rst:1313 msgid "/log [filename]" msgstr "" -#: using/windows.rst:1259 +#: using/windows.rst:1313 msgid "to specify log files location" msgstr "" -#: using/windows.rst:1262 +#: using/windows.rst:1316 msgid "" "All other options are passed as ``name=value``, where the value is usually " "``0`` to disable a feature, ``1`` to enable a feature, or a path. The full " "list of available options is shown below." msgstr "" -#: using/windows.rst:1267 +#: using/windows.rst:1321 msgid "Default" msgstr "" -#: using/windows.rst:1269 +#: using/windows.rst:1323 msgid "InstallAllUsers" msgstr "" -#: using/windows.rst:1269 +#: using/windows.rst:1323 msgid "Perform a system-wide installation." msgstr "" -#: using/windows.rst:1295 using/windows.rst:1302 using/windows.rst:1333 -#: using/windows.rst:1344 +#: using/windows.rst:1349 using/windows.rst:1356 using/windows.rst:1387 +#: using/windows.rst:1398 msgid "0" msgstr "" -#: using/windows.rst:1271 +#: using/windows.rst:1325 msgid "TargetDir" msgstr "" -#: using/windows.rst:1271 +#: using/windows.rst:1325 msgid "The installation directory" msgstr "" -#: using/windows.rst:1271 +#: using/windows.rst:1325 msgid "Selected based on InstallAllUsers" msgstr "" -#: using/windows.rst:1274 +#: using/windows.rst:1328 msgid "DefaultAllUsersTargetDir" msgstr "" -#: using/windows.rst:1274 +#: using/windows.rst:1328 msgid "The default installation directory for all-user installs" msgstr "" -#: using/windows.rst:1274 +#: using/windows.rst:1328 msgid "" ":file:`%ProgramFiles%\\\\\\ Python X.Y` or :file:`\\ %ProgramFiles(x86)%\\\\" "\\ Python X.Y`" msgstr "" -#: using/windows.rst:1279 +#: using/windows.rst:1333 msgid "DefaultJustForMeTargetDir" msgstr "" -#: using/windows.rst:1279 +#: using/windows.rst:1333 msgid "The default install directory for just-for-me installs" msgstr "" -#: using/windows.rst:1279 +#: using/windows.rst:1333 msgid "" ":file:`%LocalAppData%\\\\\\ Programs\\\\Python\\\\\\ PythonXY` or :file:" "`%LocalAppData%\\\\\\ Programs\\\\Python\\\\\\ PythonXY-32` or :file:" "`%LocalAppData%\\\\\\ Programs\\\\Python\\\\\\ PythonXY-64`" msgstr "" -#: using/windows.rst:1289 +#: using/windows.rst:1343 msgid "DefaultCustomTargetDir" msgstr "" -#: using/windows.rst:1289 +#: using/windows.rst:1343 msgid "The default custom install directory displayed in the UI" msgstr "" -#: using/windows.rst:1346 +#: using/windows.rst:1400 msgid "(empty)" msgstr "" -#: using/windows.rst:1292 +#: using/windows.rst:1346 msgid "AssociateFiles" msgstr "" -#: using/windows.rst:1292 +#: using/windows.rst:1346 msgid "Create file associations if the launcher is also installed." msgstr "" -#: using/windows.rst:1306 using/windows.rst:1313 using/windows.rst:1321 -#: using/windows.rst:1327 using/windows.rst:1335 using/windows.rst:1339 +#: using/windows.rst:1360 using/windows.rst:1367 using/windows.rst:1375 +#: using/windows.rst:1381 using/windows.rst:1389 using/windows.rst:1393 msgid "1" msgstr "" -#: using/windows.rst:1295 +#: using/windows.rst:1349 msgid "CompileAll" msgstr "" -#: using/windows.rst:1295 +#: using/windows.rst:1349 msgid "Compile all ``.py`` files to ``.pyc``." msgstr "" -#: using/windows.rst:1298 +#: using/windows.rst:1352 msgid "PrependPath" msgstr "" -#: using/windows.rst:1298 +#: using/windows.rst:1352 msgid "" "Prepend install and Scripts directories to :envvar:`PATH` and add ``.PY`` " "to :envvar:`PATHEXT`" msgstr "" -#: using/windows.rst:1302 +#: using/windows.rst:1356 msgid "AppendPath" msgstr "" -#: using/windows.rst:1302 +#: using/windows.rst:1356 msgid "" "Append install and Scripts directories to :envvar:`PATH` and add ``.PY`` " "to :envvar:`PATHEXT`" msgstr "" -#: using/windows.rst:1306 +#: using/windows.rst:1360 msgid "Shortcuts" msgstr "" -#: using/windows.rst:1306 +#: using/windows.rst:1360 msgid "" "Create shortcuts for the interpreter, documentation and IDLE if installed." msgstr "" -#: using/windows.rst:1309 +#: using/windows.rst:1363 msgid "Include_doc" msgstr "" -#: using/windows.rst:1309 +#: using/windows.rst:1363 msgid "Install Python manual" msgstr "" -#: using/windows.rst:1311 +#: using/windows.rst:1365 msgid "Include_debug" msgstr "" -#: using/windows.rst:1311 +#: using/windows.rst:1365 msgid "Install debug binaries" msgstr "" -#: using/windows.rst:1313 +#: using/windows.rst:1367 msgid "Include_dev" msgstr "" -#: using/windows.rst:1313 +#: using/windows.rst:1367 msgid "" "Install developer headers and libraries. Omitting this may lead to an " "unusable installation." msgstr "" -#: using/windows.rst:1317 +#: using/windows.rst:1371 msgid "Include_exe" msgstr "" -#: using/windows.rst:1317 +#: using/windows.rst:1371 msgid "" "Install :file:`python.exe` and related files. Omitting this may lead to an " "unusable installation." msgstr "" -#: using/windows.rst:1321 +#: using/windows.rst:1375 msgid "Include_launcher" msgstr "" -#: using/windows.rst:1321 +#: using/windows.rst:1375 msgid "Install :ref:`launcher`." msgstr "" -#: using/windows.rst:1323 +#: using/windows.rst:1377 msgid "InstallLauncherAllUsers" msgstr "" -#: using/windows.rst:1323 +#: using/windows.rst:1377 msgid "" "Installs the launcher for all users. Also requires ``Include_launcher`` to " "be set to 1" msgstr "" -#: using/windows.rst:1327 +#: using/windows.rst:1381 msgid "Include_lib" msgstr "" -#: using/windows.rst:1327 +#: using/windows.rst:1381 msgid "" "Install standard library and extension modules. Omitting this may lead to an " "unusable installation." msgstr "" -#: using/windows.rst:1331 +#: using/windows.rst:1385 msgid "Include_pip" msgstr "" -#: using/windows.rst:1331 +#: using/windows.rst:1385 msgid "Install bundled pip and setuptools" msgstr "" -#: using/windows.rst:1333 +#: using/windows.rst:1387 msgid "Include_symbols" msgstr "" -#: using/windows.rst:1333 +#: using/windows.rst:1387 msgid "Install debugging symbols (``*.pdb``)" msgstr "" -#: using/windows.rst:1335 +#: using/windows.rst:1389 msgid "Include_tcltk" msgstr "" -#: using/windows.rst:1335 +#: using/windows.rst:1389 msgid "Install Tcl/Tk support and IDLE" msgstr "" -#: using/windows.rst:1337 +#: using/windows.rst:1391 msgid "Include_test" msgstr "" -#: using/windows.rst:1337 +#: using/windows.rst:1391 msgid "Install standard library test suite" msgstr "" -#: using/windows.rst:1339 +#: using/windows.rst:1393 msgid "Include_tools" msgstr "" -#: using/windows.rst:1339 +#: using/windows.rst:1393 msgid "Install utility scripts" msgstr "" -#: using/windows.rst:1341 +#: using/windows.rst:1395 msgid "LauncherOnly" msgstr "" -#: using/windows.rst:1341 +#: using/windows.rst:1395 msgid "Only installs the launcher. This will override most other options." msgstr "" -#: using/windows.rst:1344 +#: using/windows.rst:1398 msgid "SimpleInstall" msgstr "" -#: using/windows.rst:1344 +#: using/windows.rst:1398 msgid "Disable most install UI" msgstr "" -#: using/windows.rst:1346 +#: using/windows.rst:1400 msgid "SimpleInstallDescription" msgstr "" -#: using/windows.rst:1346 +#: using/windows.rst:1400 msgid "A custom message to display when the simplified install UI is used." msgstr "" -#: using/windows.rst:1350 +#: using/windows.rst:1404 msgid "" "For example, to silently install a default, system-wide Python installation, " "you could use the following command (from an elevated command prompt)::" msgstr "" -#: using/windows.rst:1353 +#: using/windows.rst:1407 msgid "python-3.9.0.exe /quiet InstallAllUsers=1 PrependPath=1 Include_test=0" msgstr "" -#: using/windows.rst:1355 +#: using/windows.rst:1409 msgid "" "To allow users to easily install a personal copy of Python without the test " "suite, you could provide a shortcut with the following command. This will " "display a simplified initial page and disallow customization::" msgstr "" -#: using/windows.rst:1359 +#: using/windows.rst:1413 msgid "" "python-3.9.0.exe InstallAllUsers=0 Include_launcher=0 Include_test=0\n" " SimpleInstall=1 SimpleInstallDescription=\"Just for me, no test suite.\"" msgstr "" -#: using/windows.rst:1362 +#: using/windows.rst:1416 msgid "" "(Note that omitting the launcher also omits file associations, and is only " "recommended for per-user installs when there is also a system-wide " "installation that included the launcher.)" msgstr "" -#: using/windows.rst:1366 +#: using/windows.rst:1420 msgid "" "The options listed above can also be provided in a file named ``unattend." "xml`` alongside the executable. This file specifies a list of options and " @@ -2373,7 +2444,7 @@ msgid "" "strings. This example file sets the same options as the previous example:" msgstr "" -#: using/windows.rst:1372 +#: using/windows.rst:1426 msgid "" "\n" " " msgstr "" -#: using/windows.rst:1385 +#: using/windows.rst:1439 msgid "Installing Without Downloading" msgstr "" -#: using/windows.rst:1387 +#: using/windows.rst:1441 msgid "" "As some features of Python are not included in the initial installer " "download, selecting those features may require an internet connection. To " @@ -2400,7 +2471,7 @@ msgid "" "to be performed it is very useful to have a locally cached copy." msgstr "" -#: using/windows.rst:1395 +#: using/windows.rst:1449 msgid "" "Execute the following command from Command Prompt to download all possible " "required files. Remember to substitute ``python-3.9.0.exe`` for the actual " @@ -2408,27 +2479,27 @@ msgid "" "avoid collisions between files with the same name." msgstr "" -#: using/windows.rst:1402 +#: using/windows.rst:1456 msgid "python-3.9.0.exe /layout [optional target directory]" msgstr "" -#: using/windows.rst:1404 +#: using/windows.rst:1458 msgid "" "You may also specify the ``/quiet`` option to hide the progress display." msgstr "" -#: using/windows.rst:1407 +#: using/windows.rst:1461 msgid "Modifying an install" msgstr "" -#: using/windows.rst:1409 +#: using/windows.rst:1463 msgid "" "Once Python has been installed, you can add or remove features through the " "Programs and Features tool that is part of Windows. Select the Python entry " "and choose \"Uninstall/Change\" to open the installer in maintenance mode." msgstr "" -#: using/windows.rst:1413 +#: using/windows.rst:1467 msgid "" "\"Modify\" allows you to add or remove features by modifying the checkboxes " "- unchanged checkboxes will not install or remove anything. Some options " @@ -2436,26 +2507,26 @@ msgid "" "these, you will need to remove and then reinstall Python completely." msgstr "" -#: using/windows.rst:1418 +#: using/windows.rst:1472 msgid "" "\"Repair\" will verify all the files that should be installed using the " "current settings and replace any that have been removed or modified." msgstr "" -#: using/windows.rst:1421 +#: using/windows.rst:1475 msgid "" "\"Uninstall\" will remove Python entirely, with the exception of the :ref:" "`launcher`, which has its own entry in Programs and Features." msgstr "" -#: using/windows.rst:1435 +#: using/windows.rst:1489 msgid "" "To install pre-built binaries with free-threading enabled (see :pep:`703`), " "you should select \"Customize installation\". The second page of options " "includes the \"Download free-threaded binaries\" checkbox." msgstr "" -#: using/windows.rst:1441 +#: using/windows.rst:1495 msgid "" "Selecting this option will download and install additional binaries to the " "same location as the main Python install. The main executable is called " @@ -2464,7 +2535,7 @@ msgid "" "are shared with the main install." msgstr "" -#: using/windows.rst:1447 +#: using/windows.rst:1501 msgid "" "The free-threaded version is registered as a regular Python install with the " "tag ``3.13t`` (with a ``-32`` or ``-arm64`` suffix as normal for those " @@ -2476,7 +2547,7 @@ msgid "" "not install the free-threaded binaries at this time." msgstr "" -#: using/windows.rst:1456 +#: using/windows.rst:1510 msgid "" "To specify the install option at the command line, use " "``Include_freethreaded=1``. See :ref:`install-layout-option` for " @@ -2485,24 +2556,24 @@ msgid "" "apply to the free-threaded builds." msgstr "" -#: using/windows.rst:1462 +#: using/windows.rst:1516 msgid "" "Free-threaded binaries are also available :ref:`on nuget.org `." msgstr "" -#: using/windows.rst:1466 +#: using/windows.rst:1520 msgid "Python Launcher for Windows (Deprecated)" msgstr "" -#: using/windows.rst:1470 +#: using/windows.rst:1524 msgid "" "The launcher and this documentation have been superseded by the Python " "Install Manager described above. This is preserved temporarily for " "historical interest." msgstr "" -#: using/windows.rst:1476 +#: using/windows.rst:1530 msgid "" "The Python launcher for Windows is a utility which aids in locating and " "executing of different Python versions. It allows scripts (or the command-" @@ -2510,7 +2581,7 @@ msgid "" "locate and execute that version." msgstr "" -#: using/windows.rst:1481 +#: using/windows.rst:1535 msgid "" "Unlike the :envvar:`PATH` variable, the launcher will correctly select the " "most appropriate version of Python. It will prefer per-user installations " @@ -2518,19 +2589,19 @@ msgid "" "most recently installed version." msgstr "" -#: using/windows.rst:1486 +#: using/windows.rst:1540 msgid "The launcher was originally specified in :pep:`397`." msgstr "" -#: using/windows.rst:1489 +#: using/windows.rst:1543 msgid "Getting started" msgstr "" -#: using/windows.rst:1492 +#: using/windows.rst:1546 msgid "From the command-line" msgstr "" -#: using/windows.rst:1496 +#: using/windows.rst:1550 msgid "" "System-wide installations of Python 3.3 and later will put the launcher on " "your :envvar:`PATH`. The launcher is compatible with all available versions " @@ -2538,62 +2609,62 @@ msgid "" "the launcher is available, execute the following command in Command Prompt::" msgstr "" -#: using/windows.rst:1501 +#: using/windows.rst:1555 msgid "py" msgstr "" -#: using/windows.rst:1503 +#: using/windows.rst:1557 msgid "" "You should find that the latest version of Python you have installed is " "started - it can be exited as normal, and any additional command-line " "arguments specified will be sent directly to Python." msgstr "" -#: using/windows.rst:1507 +#: using/windows.rst:1561 msgid "" "If you have multiple versions of Python installed (e.g., 3.7 and |version|) " "you will have noticed that Python |version| was started - to launch Python " "3.7, try the command::" msgstr "" -#: using/windows.rst:1511 +#: using/windows.rst:1565 msgid "py -3.7" msgstr "" -#: using/windows.rst:1513 +#: using/windows.rst:1567 msgid "" "If you want the latest version of Python 2 you have installed, try the " "command::" msgstr "" -#: using/windows.rst:1516 +#: using/windows.rst:1570 msgid "py -2" msgstr "" -#: using/windows.rst:1518 +#: using/windows.rst:1572 msgid "" "If you see the following error, you do not have the launcher installed::" msgstr "" -#: using/windows.rst:1520 +#: using/windows.rst:1574 msgid "" "'py' is not recognized as an internal or external command,\n" "operable program or batch file." msgstr "" -#: using/windows.rst:1523 +#: using/windows.rst:1577 msgid "The command::" msgstr "" -#: using/windows.rst:1525 +#: using/windows.rst:1579 msgid "py --list" msgstr "" -#: using/windows.rst:1527 +#: using/windows.rst:1581 msgid "displays the currently installed version(s) of Python." msgstr "" -#: using/windows.rst:1529 +#: using/windows.rst:1583 msgid "" "The ``-x.y`` argument is the short form of the ``-V:Company/Tag`` argument, " "which allows selecting a specific Python runtime, including those that may " @@ -2602,14 +2673,14 @@ msgid "" "available runtimes using the ``-V:`` format." msgstr "" -#: using/windows.rst:1535 +#: using/windows.rst:1589 msgid "" "When using the ``-V:`` argument, specifying the Company will limit selection " "to runtimes from that provider, while specifying only the Tag will select " "from all providers. Note that omitting the slash implies a tag::" msgstr "" -#: using/windows.rst:1539 +#: using/windows.rst:1593 msgid "" "# Select any '3.*' tagged runtime\n" "py -V:3\n" @@ -2621,14 +2692,14 @@ msgid "" "py -V:PythonCore/3" msgstr "" -#: using/windows.rst:1548 +#: using/windows.rst:1602 msgid "" "The short form of the argument (``-3``) only ever selects from core Python " "releases, and not other distributions. However, the longer form (``-V:3``) " "will select from any." msgstr "" -#: using/windows.rst:1552 +#: using/windows.rst:1606 msgid "" "The Company is matched on the full string, case-insensitive. The Tag is " "matched on either the full string, or a prefix, provided the next character " @@ -2637,11 +2708,11 @@ msgid "" "``3.1``), but are compared using text (``-V:3.01`` does not match ``3.1``)." msgstr "" -#: using/windows.rst:1560 +#: using/windows.rst:1614 msgid "Virtual environments" msgstr "" -#: using/windows.rst:1564 +#: using/windows.rst:1618 msgid "" "If the launcher is run with no explicit Python version specification, and a " "virtual environment (created with the standard library :mod:`venv` module or " @@ -2651,42 +2722,42 @@ msgid "" "specify the global Python version." msgstr "" -#: using/windows.rst:1572 +#: using/windows.rst:1626 msgid "From a script" msgstr "" -#: using/windows.rst:1574 +#: using/windows.rst:1628 msgid "" "Let's create a test Python script - create a file called ``hello.py`` with " "the following contents" msgstr "" -#: using/windows.rst:1577 +#: using/windows.rst:1631 msgid "" "#! python\n" "import sys\n" "sys.stdout.write(\"hello from Python %s\\n\" % (sys.version,))" msgstr "" -#: using/windows.rst:1583 +#: using/windows.rst:1637 msgid "From the directory in which hello.py lives, execute the command::" msgstr "" -#: using/windows.rst:1585 +#: using/windows.rst:1639 msgid "py hello.py" msgstr "" -#: using/windows.rst:1587 +#: using/windows.rst:1641 msgid "" "You should notice the version number of your latest Python 2.x installation " "is printed. Now try changing the first line to be:" msgstr "" -#: using/windows.rst:1590 +#: using/windows.rst:1644 msgid "#! python3" msgstr "" -#: using/windows.rst:1594 +#: using/windows.rst:1648 msgid "" "Re-executing the command should now print the latest Python 3.x information. " "As with the above command-line examples, you can specify a more explicit " @@ -2695,7 +2766,7 @@ msgid "" "information printed." msgstr "" -#: using/windows.rst:1600 +#: using/windows.rst:1654 msgid "" "Note that unlike interactive use, a bare \"python\" will use the latest " "version of Python 2.x that you have installed. This is for backward " @@ -2703,11 +2774,11 @@ msgid "" "typically refers to Python 2." msgstr "" -#: using/windows.rst:1606 +#: using/windows.rst:1660 msgid "From file associations" msgstr "" -#: using/windows.rst:1608 +#: using/windows.rst:1662 msgid "" "The launcher should have been associated with Python files (i.e. ``.py``, ``." "pyw``, ``.pyc`` files) when it was installed. This means that when you " @@ -2716,17 +2787,17 @@ msgid "" "have the script specify the version which should be used." msgstr "" -#: using/windows.rst:1614 +#: using/windows.rst:1668 msgid "" "The key benefit of this is that a single launcher can support multiple " "Python versions at the same time depending on the contents of the first line." msgstr "" -#: using/windows.rst:1618 +#: using/windows.rst:1672 msgid "Shebang Lines" msgstr "" -#: using/windows.rst:1620 +#: using/windows.rst:1674 msgid "" "If the first line of a script file starts with ``#!``, it is known as a " "\"shebang\" line. Linux and other Unix like operating systems have native " @@ -2736,30 +2807,30 @@ msgid "" "demonstrate their use." msgstr "" -#: using/windows.rst:1627 +#: using/windows.rst:1681 msgid "" "To allow shebang lines in Python scripts to be portable between Unix and " "Windows, this launcher supports a number of 'virtual' commands to specify " "which interpreter to use. The supported virtual commands are:" msgstr "" -#: using/windows.rst:1631 +#: using/windows.rst:1685 msgid "``/usr/bin/env``" msgstr "" -#: using/windows.rst:1632 +#: using/windows.rst:1686 msgid "``/usr/bin/python``" msgstr "" -#: using/windows.rst:1633 +#: using/windows.rst:1687 msgid "``/usr/local/bin/python``" msgstr "" -#: using/windows.rst:1634 +#: using/windows.rst:1688 msgid "``python``" msgstr "" -#: using/windows.rst:1648 +#: using/windows.rst:1702 msgid "" "Any of the above virtual commands can be suffixed with an explicit version " "(either just the major version, or the major and minor version). Furthermore " @@ -2769,21 +2840,21 @@ msgid "" "and the environment will be used." msgstr "" -#: using/windows.rst:1657 +#: using/windows.rst:1711 msgid "" "Beginning with python launcher 3.7 it is possible to request 64-bit version " "by the \"-64\" suffix. Furthermore it is possible to specify a major and " "architecture without minor (i.e. ``/usr/bin/python3-64``)." msgstr "" -#: using/windows.rst:1663 +#: using/windows.rst:1717 msgid "" "The \"-64\" suffix is deprecated, and now implies \"any architecture that is " "not provably i386/32-bit\". To request a specific environment, use the new :" "samp:`-V:{TAG}` argument with the complete tag." msgstr "" -#: using/windows.rst:1669 +#: using/windows.rst:1723 msgid "" "Virtual commands referencing ``python`` now prefer an active virtual " "environment rather than searching :envvar:`PATH`. This handles cases where " @@ -2791,7 +2862,7 @@ msgid "" "not present in the active environment." msgstr "" -#: using/windows.rst:1674 +#: using/windows.rst:1728 msgid "" "The ``/usr/bin/env`` form of shebang line has one further special property. " "Before looking for installed Python interpreters, this form will search the " @@ -2805,7 +2876,7 @@ msgid "" "of :envvar:`PATH`." msgstr "" -#: using/windows.rst:1685 +#: using/windows.rst:1739 msgid "" "Shebang lines that do not match any of these patterns are looked up in the " "``[commands]`` section of the launcher's :ref:`.INI file `. " @@ -2816,13 +2887,13 @@ msgid "" "part of the filename)." msgstr "" -#: using/windows.rst:1693 +#: using/windows.rst:1747 msgid "" "[commands]\n" "/bin/xpython=C:\\Program Files\\XPython\\python.exe" msgstr "" -#: using/windows.rst:1698 +#: using/windows.rst:1752 msgid "" "Any commands not found in the .INI file are treated as **Windows** " "executable paths that are absolute or relative to the directory containing " @@ -2833,33 +2904,33 @@ msgid "" "will be appended." msgstr "" -#: using/windows.rst:1707 +#: using/windows.rst:1761 msgid "Arguments in shebang lines" msgstr "" -#: using/windows.rst:1709 +#: using/windows.rst:1763 msgid "" "The shebang lines can also specify additional options to be passed to the " "Python interpreter. For example, if you have a shebang line:" msgstr "" -#: using/windows.rst:1712 +#: using/windows.rst:1766 msgid "#! /usr/bin/python -v" msgstr "" -#: using/windows.rst:1716 +#: using/windows.rst:1770 msgid "Then Python will be started with the ``-v`` option" msgstr "" -#: using/windows.rst:1719 +#: using/windows.rst:1773 msgid "Customization" msgstr "" -#: using/windows.rst:1724 +#: using/windows.rst:1778 msgid "Customization via INI files" msgstr "" -#: using/windows.rst:1726 +#: using/windows.rst:1780 msgid "" "Two .ini files will be searched by the launcher - ``py.ini`` in the current " "user's application data directory (``%LOCALAPPDATA%`` or ``$env:" @@ -2868,7 +2939,7 @@ msgid "" "e. py.exe) and for the 'windows' version (i.e. pyw.exe)." msgstr "" -#: using/windows.rst:1732 +#: using/windows.rst:1786 msgid "" "Customization specified in the \"application directory\" will have " "precedence over the one next to the executable, so a user, who may not have " @@ -2876,11 +2947,11 @@ msgid "" "that global .ini file." msgstr "" -#: using/windows.rst:1737 +#: using/windows.rst:1791 msgid "Customizing default Python versions" msgstr "" -#: using/windows.rst:1739 +#: using/windows.rst:1793 msgid "" "In some cases, a version qualifier can be included in a command to dictate " "which version of Python will be used by the command. A version qualifier " @@ -2890,13 +2961,13 @@ msgid "" "\"-32\" or \"-64\"." msgstr "" -#: using/windows.rst:1745 +#: using/windows.rst:1799 msgid "" "For example, a shebang line of ``#!python`` has no version qualifier, while " "``#!python3`` has a version qualifier which specifies only a major version." msgstr "" -#: using/windows.rst:1748 +#: using/windows.rst:1802 msgid "" "If no version qualifiers are found in a command, the environment variable :" "envvar:`PY_PYTHON` can be set to specify the default version qualifier. If " @@ -2906,7 +2977,7 @@ msgid "" "launcher included with Python 3.7 or newer.)" msgstr "" -#: using/windows.rst:1755 +#: using/windows.rst:1809 msgid "" "If no minor version qualifiers are found, the environment variable " "``PY_PYTHON{major}`` (where ``{major}`` is the current major version " @@ -2917,7 +2988,7 @@ msgid "" "version in that family." msgstr "" -#: using/windows.rst:1763 +#: using/windows.rst:1817 msgid "" "On 64-bit Windows with both 32-bit and 64-bit implementations of the same " "(major.minor) Python version installed, the 64-bit version will always be " @@ -2931,30 +3002,30 @@ msgid "" "suffix can be used on a version specifier to change this behaviour." msgstr "" -#: using/windows.rst:1774 +#: using/windows.rst:1828 msgid "Examples:" msgstr "" -#: using/windows.rst:1776 +#: using/windows.rst:1830 msgid "" "If no relevant options are set, the commands ``python`` and ``python2`` will " "use the latest Python 2.x version installed and the command ``python3`` will " "use the latest Python 3.x installed." msgstr "" -#: using/windows.rst:1780 +#: using/windows.rst:1834 msgid "" "The command ``python3.7`` will not consult any options at all as the " "versions are fully specified." msgstr "" -#: using/windows.rst:1783 +#: using/windows.rst:1837 msgid "" "If ``PY_PYTHON=3``, the commands ``python`` and ``python3`` will both use " "the latest installed Python 3 version." msgstr "" -#: using/windows.rst:1786 +#: using/windows.rst:1840 msgid "" "If ``PY_PYTHON=3.7-32``, the command ``python`` will use the 32-bit " "implementation of 3.7 whereas the command ``python3`` will use the latest " @@ -2962,13 +3033,13 @@ msgid "" "specified.)" msgstr "" -#: using/windows.rst:1791 +#: using/windows.rst:1845 msgid "" "If ``PY_PYTHON=3`` and ``PY_PYTHON3=3.7``, the commands ``python`` and " "``python3`` will both use specifically 3.7" msgstr "" -#: using/windows.rst:1794 +#: using/windows.rst:1848 msgid "" "In addition to environment variables, the same settings can be configured in " "the .INI file used by the launcher. The section in the INI file is called " @@ -2978,38 +3049,38 @@ msgid "" "will override things specified in the INI file." msgstr "" -#: using/windows.rst:1801 +#: using/windows.rst:1855 msgid "For example:" msgstr "" -#: using/windows.rst:1803 +#: using/windows.rst:1857 msgid "Setting ``PY_PYTHON=3.7`` is equivalent to the INI file containing:" msgstr "" -#: using/windows.rst:1805 +#: using/windows.rst:1859 msgid "" "[defaults]\n" "python=3.7" msgstr "" -#: using/windows.rst:1810 +#: using/windows.rst:1864 msgid "" "Setting ``PY_PYTHON=3`` and ``PY_PYTHON3=3.7`` is equivalent to the INI file " "containing:" msgstr "" -#: using/windows.rst:1813 +#: using/windows.rst:1867 msgid "" "[defaults]\n" "python=3\n" "python3=3.7" msgstr "" -#: using/windows.rst:1820 +#: using/windows.rst:1874 msgid "Diagnostics" msgstr "" -#: using/windows.rst:1822 +#: using/windows.rst:1876 msgid "" "If an environment variable :envvar:`PYLAUNCHER_DEBUG` is set (to any value), " "the launcher will print diagnostic information to stderr (i.e. to the " @@ -3019,11 +3090,11 @@ msgid "" "the target Python. It is primarily intended for testing and debugging." msgstr "" -#: using/windows.rst:1830 +#: using/windows.rst:1884 msgid "Dry Run" msgstr "" -#: using/windows.rst:1832 +#: using/windows.rst:1886 msgid "" "If an environment variable :envvar:`PYLAUNCHER_DRYRUN` is set (to any " "value), the launcher will output the command it would have run, but will not " @@ -3033,11 +3104,11 @@ msgid "" "correctly in the console." msgstr "" -#: using/windows.rst:1840 +#: using/windows.rst:1894 msgid "Install on demand" msgstr "" -#: using/windows.rst:1842 +#: using/windows.rst:1896 msgid "" "If an environment variable :envvar:`PYLAUNCHER_ALLOW_INSTALL` is set (to any " "value), and the requested Python version is not installed but is available " @@ -3046,7 +3117,7 @@ msgid "" "again." msgstr "" -#: using/windows.rst:1847 +#: using/windows.rst:1901 msgid "" "An additional :envvar:`PYLAUNCHER_ALWAYS_INSTALL` variable causes the " "launcher to always try to install Python, even if it is detected. This is " @@ -3054,110 +3125,110 @@ msgid "" "`PYLAUNCHER_DRYRUN`)." msgstr "" -#: using/windows.rst:1852 +#: using/windows.rst:1906 msgid "Return codes" msgstr "" -#: using/windows.rst:1854 +#: using/windows.rst:1908 msgid "" "The following exit codes may be returned by the Python launcher. " "Unfortunately, there is no way to distinguish these from the exit code of " "Python itself." msgstr "" -#: using/windows.rst:1857 +#: using/windows.rst:1911 msgid "" "The names of codes are as used in the sources, and are only for reference. " "There is no way to access or resolve them apart from reading this page. " "Entries are listed in alphabetical order of names." msgstr "" -#: using/windows.rst:1862 +#: using/windows.rst:1916 msgid "Value" msgstr "" -#: using/windows.rst:1864 +#: using/windows.rst:1918 msgid "RC_BAD_VENV_CFG" msgstr "" -#: using/windows.rst:1864 +#: using/windows.rst:1918 msgid "107" msgstr "" -#: using/windows.rst:1864 +#: using/windows.rst:1918 msgid "A :file:`pyvenv.cfg` was found but is corrupt." msgstr "" -#: using/windows.rst:1866 +#: using/windows.rst:1920 msgid "RC_CREATE_PROCESS" msgstr "" -#: using/windows.rst:1866 +#: using/windows.rst:1920 msgid "101" msgstr "" -#: using/windows.rst:1866 +#: using/windows.rst:1920 msgid "Failed to launch Python." msgstr "" -#: using/windows.rst:1868 +#: using/windows.rst:1922 msgid "RC_INSTALLING" msgstr "" -#: using/windows.rst:1868 +#: using/windows.rst:1922 msgid "111" msgstr "" -#: using/windows.rst:1868 +#: using/windows.rst:1922 msgid "" "An install was started, but the command will need to be re-run after it " "completes." msgstr "" -#: using/windows.rst:1871 +#: using/windows.rst:1925 msgid "RC_INTERNAL_ERROR" msgstr "" -#: using/windows.rst:1871 +#: using/windows.rst:1925 msgid "109" msgstr "" -#: using/windows.rst:1871 +#: using/windows.rst:1925 msgid "Unexpected error. Please report a bug." msgstr "" -#: using/windows.rst:1873 +#: using/windows.rst:1927 msgid "RC_NO_COMMANDLINE" msgstr "" -#: using/windows.rst:1873 +#: using/windows.rst:1927 msgid "108" msgstr "" -#: using/windows.rst:1873 +#: using/windows.rst:1927 msgid "Unable to obtain command line from the operating system." msgstr "" -#: using/windows.rst:1876 +#: using/windows.rst:1930 msgid "RC_NO_PYTHON" msgstr "" -#: using/windows.rst:1876 +#: using/windows.rst:1930 msgid "103" msgstr "" -#: using/windows.rst:1876 +#: using/windows.rst:1930 msgid "Unable to locate the requested version." msgstr "" -#: using/windows.rst:1878 +#: using/windows.rst:1932 msgid "RC_NO_VENV_CFG" msgstr "" -#: using/windows.rst:1878 +#: using/windows.rst:1932 msgid "106" msgstr "" -#: using/windows.rst:1878 +#: using/windows.rst:1932 msgid "A :file:`pyvenv.cfg` was required but not found." msgstr "" diff --git a/whatsnew/2.0.po b/whatsnew/2.0.po index 99626cba..ed9184a6 100644 --- a/whatsnew/2.0.po +++ b/whatsnew/2.0.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/whatsnew/2.1.po b/whatsnew/2.1.po index d8e8276e..138fb248 100644 --- a/whatsnew/2.1.po +++ b/whatsnew/2.1.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/whatsnew/2.2.po b/whatsnew/2.2.po index 41c23842..7579b065 100644 --- a/whatsnew/2.2.po +++ b/whatsnew/2.2.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/whatsnew/2.3.po b/whatsnew/2.3.po index 9edd97d2..e6b9df9b 100644 --- a/whatsnew/2.3.po +++ b/whatsnew/2.3.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/whatsnew/2.4.po b/whatsnew/2.4.po index 8cc86103..08c59e30 100644 --- a/whatsnew/2.4.po +++ b/whatsnew/2.4.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/whatsnew/2.5.po b/whatsnew/2.5.po index 2b29f4d3..cff7c150 100644 --- a/whatsnew/2.5.po +++ b/whatsnew/2.5.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/whatsnew/2.6.po b/whatsnew/2.6.po index 4eb60f53..b81b9a35 100644 --- a/whatsnew/2.6.po +++ b/whatsnew/2.6.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/whatsnew/2.7.po b/whatsnew/2.7.po index ed353008..4a09b0d8 100644 --- a/whatsnew/2.7.po +++ b/whatsnew/2.7.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/whatsnew/3.0.po b/whatsnew/3.0.po index 929624fd..805e3fef 100644 --- a/whatsnew/3.0.po +++ b/whatsnew/3.0.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/whatsnew/3.1.po b/whatsnew/3.1.po index 06a960c1..7a0f1f63 100644 --- a/whatsnew/3.1.po +++ b/whatsnew/3.1.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/whatsnew/3.10.po b/whatsnew/3.10.po index 82c9ea95..1ed4b224 100644 --- a/whatsnew/3.10.po +++ b/whatsnew/3.10.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -123,7 +123,7 @@ msgstr "" msgid ":pep:`597`, Add optional EncodingWarning" msgstr "" -#: whatsnew/3.10.rst:2053 +#: whatsnew/3.10.rst:2054 msgid "New Features" msgstr "" @@ -785,14 +785,15 @@ msgstr "" 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::" +"pattern has the ability to capture instance attributes into variables::" msgstr "" #: whatsnew/3.10.rst:556 msgid "" "class Point:\n" -" x: int\n" -" y: int\n" +" def __init__(self, x, y):\n" +" self.x = x\n" +" self.y = y\n" "\n" "def location(point):\n" " match point:\n" @@ -808,11 +809,11 @@ msgid "" " print(\"Not a point\")" msgstr "" -#: whatsnew/3.10.rst:574 +#: whatsnew/3.10.rst:575 msgid "Patterns with positional parameters" msgstr "" -#: whatsnew/3.10.rst:576 +#: whatsnew/3.10.rst:577 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 " @@ -822,7 +823,7 @@ msgid "" "attribute to the ``var`` variable)::" msgstr "" -#: whatsnew/3.10.rst:582 +#: whatsnew/3.10.rst:583 msgid "" "Point(1, var)\n" "Point(1, y=var)\n" @@ -830,17 +831,17 @@ msgid "" "Point(y=var, x=1)" msgstr "" -#: whatsnew/3.10.rst:588 +#: whatsnew/3.10.rst:589 msgid "Nested patterns" msgstr "" -#: whatsnew/3.10.rst:590 +#: whatsnew/3.10.rst:591 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:593 +#: whatsnew/3.10.rst:594 msgid "" "match points:\n" " case []:\n" @@ -855,18 +856,18 @@ msgid "" " print(\"Something else is found in the list.\")" msgstr "" -#: whatsnew/3.10.rst:606 +#: whatsnew/3.10.rst:607 msgid "Complex patterns and the wildcard" msgstr "" -#: whatsnew/3.10.rst:608 +#: whatsnew/3.10.rst:609 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:612 +#: whatsnew/3.10.rst:613 msgid "" "match test_variable:\n" " case ('warning', code, 40):\n" @@ -875,24 +876,24 @@ msgid "" " print(f\"An error {code} occurred.\")" msgstr "" -#: whatsnew/3.10.rst:618 +#: whatsnew/3.10.rst:619 msgid "" "In the above case, ``test_variable`` will match for ('error', code, 100) and " "('error', code, 800)." msgstr "" -#: whatsnew/3.10.rst:622 +#: whatsnew/3.10.rst:623 msgid "Guard" msgstr "" -#: whatsnew/3.10.rst:624 +#: whatsnew/3.10.rst:625 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:628 +#: whatsnew/3.10.rst:629 msgid "" "match point:\n" " case Point(x, y) if x == y:\n" @@ -901,15 +902,15 @@ msgid "" " print(f\"Point is not on the diagonal.\")" msgstr "" -#: whatsnew/3.10.rst:635 +#: whatsnew/3.10.rst:636 msgid "Other Key Features" msgstr "" -#: whatsnew/3.10.rst:637 +#: whatsnew/3.10.rst:638 msgid "Several other key features:" msgstr "" -#: whatsnew/3.10.rst:639 +#: whatsnew/3.10.rst:640 msgid "" "Like unpacking assignments, tuple and list patterns have exactly the same " "meaning and actually match arbitrary sequences. Technically, the subject " @@ -918,7 +919,7 @@ msgid "" "match strings." msgstr "" -#: whatsnew/3.10.rst:645 +#: whatsnew/3.10.rst:646 msgid "" "Sequence patterns support wildcards: ``[x, y, *rest]`` and ``(x, y, *rest)`` " "work similar to wildcards in unpacking assignments. The name after ``*`` " @@ -926,7 +927,7 @@ msgid "" "items without binding the remaining items." msgstr "" -#: whatsnew/3.10.rst:650 +#: whatsnew/3.10.rst:651 msgid "" "Mapping patterns: ``{\"bandwidth\": b, \"latency\": l}`` captures the " "``\"bandwidth\"`` and ``\"latency\"`` values from a dict. Unlike sequence " @@ -934,34 +935,34 @@ msgid "" "(But ``**_`` would be redundant, so is not allowed.)" msgstr "" -#: whatsnew/3.10.rst:655 +#: whatsnew/3.10.rst:656 msgid "Subpatterns may be captured using the ``as`` keyword::" msgstr "" -#: whatsnew/3.10.rst:657 +#: whatsnew/3.10.rst:658 msgid "case (Point(x1, y1), Point(x2, y2) as p2): ..." msgstr "" -#: whatsnew/3.10.rst:659 +#: whatsnew/3.10.rst:660 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:662 +#: whatsnew/3.10.rst:663 msgid "" "Most literals are compared by equality. However, the singletons ``True``, " "``False`` and ``None`` are compared by identity." msgstr "" -#: whatsnew/3.10.rst:665 +#: whatsnew/3.10.rst:666 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:669 +#: whatsnew/3.10.rst:670 msgid "" "from enum import Enum\n" "class Color(Enum):\n" @@ -979,17 +980,17 @@ msgid "" " print(\"I'm feeling the blues :(\")" msgstr "" -#: whatsnew/3.10.rst:684 +#: whatsnew/3.10.rst:685 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:691 +#: whatsnew/3.10.rst:692 msgid "Optional ``EncodingWarning`` and ``encoding=\"locale\"`` option" msgstr "" -#: whatsnew/3.10.rst:693 +#: whatsnew/3.10.rst:694 msgid "" "The default encoding of :class:`~io.TextIOWrapper` and :func:`open` is " "platform and locale dependent. Since UTF-8 is used on most Unix platforms, " @@ -997,106 +998,106 @@ msgid "" "TOML, Markdown) is a very common bug. For example::" msgstr "" -#: whatsnew/3.10.rst:698 +#: whatsnew/3.10.rst:699 msgid "" "# BUG: \"rb\" mode or encoding=\"utf-8\" should be used.\n" "with open(\"data.json\") as f:\n" " data = json.load(f)" msgstr "" -#: whatsnew/3.10.rst:702 +#: whatsnew/3.10.rst:703 msgid "" "To find this type of bug, an optional ``EncodingWarning`` is added. It is " "emitted when :data:`sys.flags.warn_default_encoding ` is true and " "locale-specific default encoding is used." msgstr "" -#: whatsnew/3.10.rst:706 +#: whatsnew/3.10.rst:707 msgid "" "``-X warn_default_encoding`` option and :envvar:`PYTHONWARNDEFAULTENCODING` " "are added to enable the warning." msgstr "" -#: whatsnew/3.10.rst:709 +#: whatsnew/3.10.rst:710 msgid "See :ref:`io-text-encoding` for more information." msgstr "" -#: whatsnew/3.10.rst:714 +#: whatsnew/3.10.rst:715 msgid "New Features Related to Type Hints" msgstr "" -#: whatsnew/3.10.rst:716 +#: whatsnew/3.10.rst:717 msgid "" "This section covers major changes affecting :pep:`484` type hints and the :" "mod:`typing` module." msgstr "" -#: whatsnew/3.10.rst:721 +#: whatsnew/3.10.rst:722 msgid "PEP 604: New Type Union Operator" msgstr "" -#: whatsnew/3.10.rst:723 +#: whatsnew/3.10.rst:724 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 :class:`typing.Union`, especially in type hints." msgstr "" -#: whatsnew/3.10.rst:727 +#: whatsnew/3.10.rst:728 msgid "" "In previous versions of Python, to apply a type hint for functions accepting " "arguments of multiple types, :class:`typing.Union` was used::" msgstr "" -#: whatsnew/3.10.rst:730 +#: whatsnew/3.10.rst:731 msgid "" "def square(number: Union[int, float]) -> Union[int, float]:\n" " return number ** 2" msgstr "" -#: whatsnew/3.10.rst:734 +#: whatsnew/3.10.rst:735 msgid "Type hints can now be written in a more succinct manner::" msgstr "" -#: whatsnew/3.10.rst:736 +#: whatsnew/3.10.rst:737 msgid "" "def square(number: int | float) -> int | float:\n" " return number ** 2" msgstr "" -#: whatsnew/3.10.rst:740 +#: whatsnew/3.10.rst:741 msgid "" "This new syntax is also accepted as the second argument to :func:" "`isinstance` and :func:`issubclass`::" msgstr "" -#: whatsnew/3.10.rst:743 +#: whatsnew/3.10.rst:744 msgid "" ">>> isinstance(1, int | str)\n" "True" msgstr "" -#: whatsnew/3.10.rst:746 +#: whatsnew/3.10.rst:747 msgid "See :ref:`types-union` and :pep:`604` for more details." msgstr "" -#: whatsnew/3.10.rst:748 +#: whatsnew/3.10.rst:749 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:753 +#: whatsnew/3.10.rst:754 msgid "PEP 612: Parameter Specification Variables" msgstr "" -#: whatsnew/3.10.rst:755 +#: whatsnew/3.10.rst:756 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:758 +#: whatsnew/3.10.rst:759 msgid "" "The first is the parameter specification variable. They are used to forward " "the parameter types of one callable to another callable -- a pattern " @@ -1105,7 +1106,7 @@ msgid "" "to type annotate dependency of parameter types in such a precise manner." msgstr "" -#: whatsnew/3.10.rst:764 +#: whatsnew/3.10.rst:765 msgid "" "The second option is the new ``Concatenate`` operator. It's used in " "conjunction with parameter specification variables to type annotate a higher " @@ -1113,24 +1114,24 @@ msgid "" "Examples of usage can be found in :class:`typing.Concatenate`." msgstr "" -#: whatsnew/3.10.rst:769 +#: whatsnew/3.10.rst:770 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:773 +#: whatsnew/3.10.rst:774 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:778 +#: whatsnew/3.10.rst:779 msgid "PEP 613: TypeAlias" msgstr "" -#: whatsnew/3.10.rst:780 +#: whatsnew/3.10.rst:781 msgid "" ":pep:`484` introduced the concept of type aliases, only requiring them to be " "top-level unannotated assignments. This simplicity sometimes made it " @@ -1139,37 +1140,37 @@ msgid "" "involved. Compare::" msgstr "" -#: whatsnew/3.10.rst:785 +#: whatsnew/3.10.rst:786 msgid "" "StrCache = 'Cache[str]' # a type alias\n" "LOG_PREFIX = 'LOG[DEBUG]' # a module constant" msgstr "" -#: whatsnew/3.10.rst:788 +#: whatsnew/3.10.rst:789 msgid "" "Now the :mod:`typing` module has a special value :data:`~typing.TypeAlias` " "which lets you declare type aliases more explicitly::" msgstr "" -#: whatsnew/3.10.rst:791 +#: whatsnew/3.10.rst:792 msgid "" "StrCache: TypeAlias = 'Cache[str]' # a type alias\n" "LOG_PREFIX = 'LOG[DEBUG]' # a module constant" msgstr "" -#: whatsnew/3.10.rst:794 +#: whatsnew/3.10.rst:795 msgid "See :pep:`613` for more details." msgstr "" -#: whatsnew/3.10.rst:796 +#: whatsnew/3.10.rst:797 msgid "(Contributed by Mikhail Golubev in :issue:`41923`.)" msgstr "" -#: whatsnew/3.10.rst:799 +#: whatsnew/3.10.rst:800 msgid "PEP 647: User-Defined Type Guards" msgstr "" -#: whatsnew/3.10.rst:801 +#: whatsnew/3.10.rst:802 msgid "" ":data:`~typing.TypeGuard` has been added to the :mod:`typing` module to " "annotate type guard functions and improve information provided to static " @@ -1177,24 +1178,24 @@ msgid "" "`~typing.TypeGuard`\\ 's documentation, and :pep:`647`." msgstr "" -#: whatsnew/3.10.rst:806 +#: whatsnew/3.10.rst:807 msgid "" "(Contributed by Ken Jin and Guido van Rossum in :issue:`43766`. PEP written " "by Eric Traut.)" msgstr "" -#: whatsnew/3.10.rst:810 +#: whatsnew/3.10.rst:811 msgid "Other Language Changes" msgstr "" -#: whatsnew/3.10.rst:812 +#: whatsnew/3.10.rst:813 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:816 +#: whatsnew/3.10.rst:817 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." @@ -1202,13 +1203,13 @@ msgid "" "Dennis Sweeney in :issue:`40890`.)" msgstr "" -#: whatsnew/3.10.rst:821 +#: whatsnew/3.10.rst:822 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:824 +#: whatsnew/3.10.rst:825 msgid "" "Builtin and extension functions that take integer arguments no longer " "accept :class:`~decimal.Decimal`\\ s, :class:`~fractions.Fraction`\\ s and " @@ -1217,20 +1218,20 @@ msgid "" "__index__` method). (Contributed by Serhiy Storchaka in :issue:`37999`.)" msgstr "" -#: whatsnew/3.10.rst:831 +#: whatsnew/3.10.rst:832 msgid "" "If :func:`object.__ipow__` returns :data:`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:835 +#: whatsnew/3.10.rst:836 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:838 +#: whatsnew/3.10.rst:839 msgid "" "Functions have a new ``__builtins__`` attribute which is used to look for " "builtin symbols when a function is executed, instead of looking into " @@ -1239,7 +1240,7 @@ msgid "" "builtins. (Contributed by Mark Shannon in :issue:`42990`.)" msgstr "" -#: whatsnew/3.10.rst:844 +#: whatsnew/3.10.rst:845 msgid "" "Two new builtin functions -- :func:`aiter` and :func:`anext` have been added " "to provide asynchronous counterparts to :func:`iter` and :func:`next`, " @@ -1247,7 +1248,7 @@ msgid "" "in :issue:`31861`.)" msgstr "" -#: whatsnew/3.10.rst:849 +#: whatsnew/3.10.rst:850 msgid "" "Static methods (:func:`@staticmethod `) and class methods (:" "func:`@classmethod `) now inherit the method attributes " @@ -1257,7 +1258,7 @@ msgid "" "Stinner in :issue:`43682`.)" msgstr "" -#: whatsnew/3.10.rst:856 +#: whatsnew/3.10.rst:857 msgid "" "Annotations for complex targets (everything beside ``simple name`` targets " "defined by :pep:`526`) no longer cause any runtime effects with ``from " @@ -1265,7 +1266,7 @@ msgid "" "`42737`.)" msgstr "" -#: whatsnew/3.10.rst:860 +#: whatsnew/3.10.rst:861 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 " @@ -1274,7 +1275,7 @@ msgid "" "howto`. (Contributed by Larry Hastings in :issue:`43901`.)" msgstr "" -#: whatsnew/3.10.rst:867 +#: whatsnew/3.10.rst:868 msgid "" "Annotations consist of ``yield``, ``yield from``, ``await`` or named " "expressions are now forbidden under ``from __future__ import annotations`` " @@ -1282,7 +1283,7 @@ msgid "" "`42725`.)" msgstr "" -#: whatsnew/3.10.rst:872 +#: whatsnew/3.10.rst:873 msgid "" "Usage of unbound variables, ``super()`` and other expressions that might " "alter the processing of symbol table as annotations are now rendered " @@ -1290,7 +1291,7 @@ msgid "" "Batuhan Taskaya in :issue:`42725`.)" msgstr "" -#: whatsnew/3.10.rst:877 +#: whatsnew/3.10.rst:878 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 " @@ -1300,121 +1301,121 @@ msgid "" "Raymond Hettinger in :issue:`43475`.)" msgstr "" -#: whatsnew/3.10.rst:884 +#: whatsnew/3.10.rst:885 msgid "" "A :exc:`SyntaxError` (instead of a :exc:`NameError`) will be raised when " "deleting the :const:`__debug__` constant. (Contributed by Donghee Na in :" "issue:`45000`.)" msgstr "" -#: whatsnew/3.10.rst:887 +#: whatsnew/3.10.rst:888 msgid "" ":exc:`SyntaxError` exceptions now have ``end_lineno`` and ``end_offset`` " "attributes. They will be ``None`` if not determined. (Contributed by Pablo " "Galindo in :issue:`43914`.)" msgstr "" -#: whatsnew/3.10.rst:892 +#: whatsnew/3.10.rst:893 msgid "New Modules" msgstr "" -#: whatsnew/3.10.rst:894 +#: whatsnew/3.10.rst:895 msgid "None." msgstr "" -#: whatsnew/3.10.rst:898 +#: whatsnew/3.10.rst:899 msgid "Improved Modules" msgstr "" -#: whatsnew/3.10.rst:901 +#: whatsnew/3.10.rst:902 msgid "asyncio" msgstr "" -#: whatsnew/3.10.rst:903 +#: whatsnew/3.10.rst:904 msgid "" "Add missing :meth:`~asyncio.events.AbstractEventLoop." "connect_accepted_socket` method. (Contributed by Alex Grönholm in :issue:" "`41332`.)" msgstr "" -#: whatsnew/3.10.rst:908 +#: whatsnew/3.10.rst:909 msgid "argparse" msgstr "" -#: whatsnew/3.10.rst:910 +#: whatsnew/3.10.rst:911 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:914 +#: whatsnew/3.10.rst:915 msgid "array" msgstr "" -#: whatsnew/3.10.rst:916 +#: whatsnew/3.10.rst:917 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:921 +#: whatsnew/3.10.rst:922 msgid "asynchat, asyncore, smtpd" msgstr "" -#: whatsnew/3.10.rst:922 +#: whatsnew/3.10.rst:923 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:927 +#: whatsnew/3.10.rst:928 msgid "base64" msgstr "" -#: whatsnew/3.10.rst:929 +#: whatsnew/3.10.rst:930 msgid "" "Add :func:`base64.b32hexencode` and :func:`base64.b32hexdecode` to support " "the Base32 Encoding with Extended Hex Alphabet." msgstr "" -#: whatsnew/3.10.rst:933 +#: whatsnew/3.10.rst:934 msgid "bdb" msgstr "" -#: whatsnew/3.10.rst:935 +#: whatsnew/3.10.rst:936 msgid "" "Add :meth:`~bdb.Breakpoint.clearBreakpoints` to reset all set breakpoints. " "(Contributed by Irit Katriel in :issue:`24160`.)" msgstr "" -#: whatsnew/3.10.rst:939 +#: whatsnew/3.10.rst:940 msgid "bisect" msgstr "" -#: whatsnew/3.10.rst:941 +#: whatsnew/3.10.rst:942 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:945 +#: whatsnew/3.10.rst:946 msgid "codecs" msgstr "" -#: whatsnew/3.10.rst:947 +#: whatsnew/3.10.rst:948 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:951 +#: whatsnew/3.10.rst:952 msgid "collections.abc" msgstr "" -#: whatsnew/3.10.rst:953 +#: whatsnew/3.10.rst:954 msgid "" "The ``__args__`` of the :ref:`parameterized generic ` " "for :class:`collections.abc.Callable` are now consistent with :data:`typing." @@ -1430,34 +1431,34 @@ msgid "" "`42195`.)" msgstr "" -#: whatsnew/3.10.rst:966 +#: whatsnew/3.10.rst:967 msgid "contextlib" msgstr "" -#: whatsnew/3.10.rst:968 +#: whatsnew/3.10.rst:969 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:972 +#: whatsnew/3.10.rst:973 msgid "" "Add asynchronous context manager support to :func:`contextlib.nullcontext`. " "(Contributed by Tom Gringauz in :issue:`41543`.)" msgstr "" -#: whatsnew/3.10.rst:975 +#: whatsnew/3.10.rst:976 msgid "" "Add :class:`~contextlib.AsyncContextDecorator`, for supporting usage of " "async context managers as decorators." msgstr "" -#: whatsnew/3.10.rst:979 +#: whatsnew/3.10.rst:980 msgid "curses" msgstr "" -#: whatsnew/3.10.rst:981 +#: whatsnew/3.10.rst:982 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." @@ -1467,43 +1468,43 @@ msgid "" "Kintscher and Hans Petter Jansson in :issue:`36982`.)" msgstr "" -#: whatsnew/3.10.rst:988 +#: whatsnew/3.10.rst:989 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:993 +#: whatsnew/3.10.rst:994 msgid "dataclasses" msgstr "" -#: whatsnew/3.10.rst:996 +#: whatsnew/3.10.rst:997 msgid "__slots__" msgstr "" -#: whatsnew/3.10.rst:998 +#: whatsnew/3.10.rst:999 msgid "" "Added ``slots`` parameter in :func:`dataclasses.dataclass` decorator. " "(Contributed by Yurii Karabas in :issue:`42269`)" msgstr "" -#: whatsnew/3.10.rst:1002 +#: whatsnew/3.10.rst:1003 msgid "Keyword-only fields" msgstr "" -#: whatsnew/3.10.rst:1004 +#: whatsnew/3.10.rst:1005 msgid "" "dataclasses 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:1008 +#: whatsnew/3.10.rst:1009 msgid "You can say that every field is keyword-only:" msgstr "" -#: whatsnew/3.10.rst:1010 +#: whatsnew/3.10.rst:1011 msgid "" "from dataclasses import dataclass\n" "\n" @@ -1513,17 +1514,17 @@ msgid "" " birthday: datetime.date" msgstr "" -#: whatsnew/3.10.rst:1019 +#: whatsnew/3.10.rst:1020 msgid "" "Both ``name`` and ``birthday`` are keyword-only parameters to the generated " "__init__ method." msgstr "" -#: whatsnew/3.10.rst:1022 +#: whatsnew/3.10.rst:1023 msgid "You can specify keyword-only on a per-field basis:" msgstr "" -#: whatsnew/3.10.rst:1024 +#: whatsnew/3.10.rst:1025 msgid "" "from dataclasses import dataclass, field\n" "\n" @@ -1533,7 +1534,7 @@ msgid "" " birthday: datetime.date = field(kw_only=True)" msgstr "" -#: whatsnew/3.10.rst:1033 +#: whatsnew/3.10.rst:1034 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 " @@ -1541,13 +1542,13 @@ msgid "" "the full dataclasses documentation for details." msgstr "" -#: whatsnew/3.10.rst:1038 +#: whatsnew/3.10.rst:1039 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:1041 +#: whatsnew/3.10.rst:1042 msgid "" "from dataclasses import dataclass, KW_ONLY\n" "\n" @@ -1560,17 +1561,17 @@ msgid "" " t: float = 0.0" msgstr "" -#: whatsnew/3.10.rst:1053 +#: whatsnew/3.10.rst:1054 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:1060 +#: whatsnew/3.10.rst:1061 msgid "distutils" msgstr "" -#: whatsnew/3.10.rst:1062 +#: whatsnew/3.10.rst:1063 msgid "" "The entire ``distutils`` package is deprecated, to be removed in Python " "3.12. Its functionality for specifying package builds has already been " @@ -1583,38 +1584,38 @@ msgid "" "`632` for discussion." msgstr "" -#: whatsnew/3.10.rst:1072 +#: whatsnew/3.10.rst:1073 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:1078 +#: whatsnew/3.10.rst:1079 msgid "doctest" msgstr "" -#: whatsnew/3.10.rst:1215 whatsnew/3.10.rst:1341 +#: whatsnew/3.10.rst:1216 whatsnew/3.10.rst:1342 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:1084 +#: whatsnew/3.10.rst:1085 msgid "encodings" msgstr "" -#: whatsnew/3.10.rst:1086 +#: whatsnew/3.10.rst:1087 msgid "" ":func:`encodings.normalize_encoding` now ignores non-ASCII characters. " "(Contributed by Hai Shi in :issue:`39337`.)" msgstr "" -#: whatsnew/3.10.rst:1090 +#: whatsnew/3.10.rst:1091 msgid "enum" msgstr "" -#: whatsnew/3.10.rst:1092 +#: whatsnew/3.10.rst:1093 msgid "" ":class:`~enum.Enum` :func:`~object.__repr__` now returns ``enum_name." "member_name`` and :func:`~object.__str__` now returns ``member_name``. " @@ -1622,106 +1623,106 @@ msgid "" "``module_name.member_name``. (Contributed by Ethan Furman in :issue:`40066`.)" msgstr "" -#: whatsnew/3.10.rst:1097 +#: whatsnew/3.10.rst:1098 msgid "" "Add :class:`enum.StrEnum` for enums where all members are strings. " "(Contributed by Ethan Furman in :issue:`41816`.)" msgstr "" -#: whatsnew/3.10.rst:1101 +#: whatsnew/3.10.rst:1102 msgid "fileinput" msgstr "" -#: whatsnew/3.10.rst:1103 +#: whatsnew/3.10.rst:1104 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:1107 +#: whatsnew/3.10.rst:1108 msgid "" ":func:`fileinput.hook_compressed` now returns :class:`~io.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:1112 +#: whatsnew/3.10.rst:1113 msgid "faulthandler" msgstr "" -#: whatsnew/3.10.rst:1114 +#: whatsnew/3.10.rst:1115 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:1119 +#: whatsnew/3.10.rst:1120 msgid "gc" msgstr "" -#: whatsnew/3.10.rst:1121 +#: whatsnew/3.10.rst:1122 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:1125 +#: whatsnew/3.10.rst:1126 msgid "glob" msgstr "" -#: whatsnew/3.10.rst:1127 +#: whatsnew/3.10.rst:1128 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:1132 +#: whatsnew/3.10.rst:1133 msgid "hashlib" msgstr "" -#: whatsnew/3.10.rst:1134 +#: whatsnew/3.10.rst:1135 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:1137 +#: whatsnew/3.10.rst:1138 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:1140 +#: whatsnew/3.10.rst:1141 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:1146 +#: whatsnew/3.10.rst:1147 msgid "hmac" msgstr "" -#: whatsnew/3.10.rst:1148 +#: whatsnew/3.10.rst:1149 msgid "" "The hmac module now uses OpenSSL's HMAC implementation internally. " "(Contributed by Christian Heimes in :issue:`40645`.)" msgstr "" -#: whatsnew/3.10.rst:1152 +#: whatsnew/3.10.rst:1153 msgid "IDLE and idlelib" msgstr "" -#: whatsnew/3.10.rst:1154 +#: whatsnew/3.10.rst:1155 msgid "" "Make IDLE invoke :func:`sys.excepthook` (when started without '-n'). User " "hooks were previously ignored. (Contributed by Ken Hilton in :issue:" "`43008`.)" msgstr "" -#: whatsnew/3.10.rst:1158 +#: whatsnew/3.10.rst:1159 msgid "" "Rearrange the settings dialog. Split the General tab into Windows and Shell/" "Ed tabs. Move help sources, which extend the Help menu, to the Extensions " @@ -1732,11 +1733,11 @@ msgid "" "`33962`.)" msgstr "" -#: whatsnew/3.10.rst:1166 +#: whatsnew/3.10.rst:1167 msgid "The changes above were backported to a 3.9 maintenance release." msgstr "" -#: whatsnew/3.10.rst:1168 +#: whatsnew/3.10.rst:1169 msgid "" "Add a Shell sidebar. Move the primary prompt ('>>>') to the sidebar. Add " "secondary prompts ('...') to the sidebar. Left click and optional drag " @@ -1747,7 +1748,7 @@ msgid "" "text. (Contributed by Tal Einat in :issue:`37903`.)" msgstr "" -#: whatsnew/3.10.rst:1177 +#: whatsnew/3.10.rst:1178 msgid "" "Use spaces instead of tabs to indent interactive code. This makes " "interactive code entries 'look right'. Making this feasible was a major " @@ -1755,7 +1756,7 @@ msgid "" "in :issue:`37892`.)" msgstr "" -#: whatsnew/3.10.rst:1182 +#: whatsnew/3.10.rst:1183 msgid "" "Highlight the new :ref:`soft keywords ` :keyword:`match`, :" "keyword:`case `, and :keyword:`_ ` in pattern-" @@ -1764,33 +1765,33 @@ msgid "" "(Contributed by Tal Einat in :issue:`44010`.)" msgstr "" -#: whatsnew/3.10.rst:1188 +#: whatsnew/3.10.rst:1189 msgid "New in 3.10 maintenance releases." msgstr "" -#: whatsnew/3.10.rst:1190 +#: whatsnew/3.10.rst:1191 msgid "" "Apply syntax highlighting to ``.pyi`` files. (Contributed by Alex Waygood " "and Terry Jan Reedy in :issue:`45447`.)" msgstr "" -#: whatsnew/3.10.rst:1193 +#: whatsnew/3.10.rst:1194 msgid "" "Include prompts when saving Shell with inputs and outputs. (Contributed by " "Terry Jan Reedy in :gh:`95191`.)" msgstr "" -#: whatsnew/3.10.rst:1197 +#: whatsnew/3.10.rst:1198 msgid "importlib.metadata" msgstr "" -#: whatsnew/3.10.rst:1199 +#: whatsnew/3.10.rst:1200 msgid "" "Feature parity with ``importlib_metadata`` 4.6 (`history `_)." msgstr "" -#: whatsnew/3.10.rst:1202 +#: whatsnew/3.10.rst:1203 msgid "" ":ref:`importlib.metadata entry points ` now provide a nicer " "experience for selecting entry points by group and name through a new :ref:" @@ -1798,18 +1799,18 @@ msgid "" "Note in the docs for more info on the deprecation and usage." msgstr "" -#: whatsnew/3.10.rst:1208 +#: whatsnew/3.10.rst:1209 msgid "" "Added :ref:`importlib.metadata.packages_distributions() ` for resolving top-level Python modules and packages to " "their :ref:`importlib.metadata.Distribution `." msgstr "" -#: whatsnew/3.10.rst:1213 +#: whatsnew/3.10.rst:1214 msgid "inspect" msgstr "" -#: whatsnew/3.10.rst:1218 +#: whatsnew/3.10.rst:1219 msgid "" "Add :func:`inspect.get_annotations`, which safely computes the annotations " "defined on an object. It works around the quirks of accessing the " @@ -1827,38 +1828,38 @@ msgid "" "`43817`.)" msgstr "" -#: whatsnew/3.10.rst:1234 +#: whatsnew/3.10.rst:1235 msgid "itertools" msgstr "" -#: whatsnew/3.10.rst:1236 +#: whatsnew/3.10.rst:1237 msgid "" "Add :func:`itertools.pairwise`. (Contributed by Raymond Hettinger in :issue:" "`38200`.)" msgstr "" -#: whatsnew/3.10.rst:1240 +#: whatsnew/3.10.rst:1241 msgid "linecache" msgstr "" -#: whatsnew/3.10.rst:1246 +#: whatsnew/3.10.rst:1247 msgid "os" msgstr "" -#: whatsnew/3.10.rst:1248 +#: whatsnew/3.10.rst:1249 msgid "" "Add :func:`os.cpu_count` support for VxWorks RTOS. (Contributed by Peixing " "Xin in :issue:`41440`.)" msgstr "" -#: whatsnew/3.10.rst:1251 +#: whatsnew/3.10.rst:1252 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:1255 +#: whatsnew/3.10.rst:1256 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 " @@ -1866,41 +1867,41 @@ msgid "" "Galindo in :issue:`41625`.)" msgstr "" -#: whatsnew/3.10.rst:1260 +#: whatsnew/3.10.rst:1261 msgid "" "Add :const:`~os.O_EVTONLY`, :const:`~os.O_FSYNC`, :const:`~os.O_SYMLINK` " "and :const:`~os.O_NOFOLLOW_ANY` for macOS. (Contributed by Donghee Na in :" "issue:`43106`.)" msgstr "" -#: whatsnew/3.10.rst:1265 +#: whatsnew/3.10.rst:1266 msgid "os.path" msgstr "" -#: whatsnew/3.10.rst:1267 +#: whatsnew/3.10.rst:1268 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:1273 +#: whatsnew/3.10.rst:1274 msgid "pathlib" msgstr "" -#: whatsnew/3.10.rst:1275 +#: whatsnew/3.10.rst:1276 msgid "" "Add slice support to :attr:`PurePath.parents `. " "(Contributed by Joshua Cannon in :issue:`35498`.)" msgstr "" -#: whatsnew/3.10.rst:1278 +#: whatsnew/3.10.rst:1279 msgid "" "Add negative indexing support to :attr:`PurePath.parents `. (Contributed by Yaroslav Pankovych in :issue:`21041`.)" msgstr "" -#: whatsnew/3.10.rst:1282 +#: whatsnew/3.10.rst:1283 msgid "" "Add :meth:`Path.hardlink_to ` method that " "supersedes :meth:`!link_to`. The new method has the same argument order as :" @@ -1908,7 +1909,7 @@ msgid "" "`39950`.)" msgstr "" -#: whatsnew/3.10.rst:1287 +#: whatsnew/3.10.rst:1288 msgid "" ":meth:`pathlib.Path.stat` and :meth:`~pathlib.Path.chmod` now accept a " "*follow_symlinks* keyword-only argument for consistency with corresponding " @@ -1916,11 +1917,11 @@ msgid "" "`39906`.)" msgstr "" -#: whatsnew/3.10.rst:1293 +#: whatsnew/3.10.rst:1294 msgid "platform" msgstr "" -#: whatsnew/3.10.rst:1295 +#: whatsnew/3.10.rst:1296 msgid "" "Add :func:`platform.freedesktop_os_release` to retrieve operation system " "identification from `freedesktop.org os-release >> from typing import Literal\n" ">>> Literal[{0}]\n" @@ -2208,18 +2209,18 @@ msgid "" "TypeError: unhashable type: 'set'" msgstr "" -#: whatsnew/3.10.rst:1479 +#: whatsnew/3.10.rst:1480 msgid "(Contributed by Yurii Karabas in :issue:`42345`.)" msgstr "" -#: whatsnew/3.10.rst:1481 +#: whatsnew/3.10.rst:1482 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:1485 +#: whatsnew/3.10.rst:1486 msgid "" "Subclasses of ``typing.Protocol`` which only have data variables declared " "will now raise a ``TypeError`` when checked with ``isinstance`` unless they " @@ -2229,7 +2230,7 @@ msgid "" "(Contributed by Yurii Karabas in :issue:`38908`.)" msgstr "" -#: whatsnew/3.10.rst:1493 +#: whatsnew/3.10.rst:1494 msgid "" "Importing from the ``typing.io`` and ``typing.re`` submodules will now emit :" "exc:`DeprecationWarning`. These submodules have been deprecated since " @@ -2238,22 +2239,22 @@ msgid "" "instead. (Contributed by Sebastian Rittau in :issue:`38291`.)" msgstr "" -#: whatsnew/3.10.rst:1501 +#: whatsnew/3.10.rst:1502 msgid "unittest" msgstr "" -#: whatsnew/3.10.rst:1503 +#: whatsnew/3.10.rst:1504 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:1508 +#: whatsnew/3.10.rst:1509 msgid "urllib.parse" msgstr "" -#: whatsnew/3.10.rst:1510 +#: whatsnew/3.10.rst:1511 msgid "" "Python versions earlier than Python 3.10 allowed using both ``;`` and ``&`` " "as query parameter separators in :func:`urllib.parse.parse_qs` and :func:" @@ -2266,7 +2267,7 @@ msgid "" "in :issue:`42967`.)" msgstr "" -#: whatsnew/3.10.rst:1520 +#: whatsnew/3.10.rst:1521 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:" @@ -2276,22 +2277,22 @@ msgid "" "variable ``urllib.parse._UNSAFE_URL_BYTES_TO_REMOVE``. (See :gh:`88048`)" msgstr "" -#: whatsnew/3.10.rst:1528 +#: whatsnew/3.10.rst:1529 msgid "xml" msgstr "" -#: whatsnew/3.10.rst:1530 +#: whatsnew/3.10.rst:1531 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:1535 +#: whatsnew/3.10.rst:1536 msgid "zipimport" msgstr "" -#: whatsnew/3.10.rst:1536 +#: whatsnew/3.10.rst:1537 msgid "" "Add methods related to :pep:`451`: :meth:`~zipimport.zipimporter." "find_spec`, :meth:`zipimport.zipimporter.create_module`, and :meth:" @@ -2299,24 +2300,24 @@ msgid "" "`42131`.)" msgstr "" -#: whatsnew/3.10.rst:1541 +#: whatsnew/3.10.rst:1542 msgid "" "Add :meth:`~zipimport.zipimporter.invalidate_caches` method. (Contributed by " "Desmond Cheong in :issue:`14678`.)" msgstr "" -#: whatsnew/3.10.rst:1546 +#: whatsnew/3.10.rst:1547 msgid "Optimizations" msgstr "" -#: whatsnew/3.10.rst:1548 +#: whatsnew/3.10.rst:1549 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:1552 +#: whatsnew/3.10.rst:1553 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 -" @@ -2325,7 +2326,7 @@ msgid "" "`41006` and :issue:`41718`.)" msgstr "" -#: whatsnew/3.10.rst:1558 +#: whatsnew/3.10.rst:1559 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. " @@ -2334,7 +2335,7 @@ msgid "" "and MicroPython.)" msgstr "" -#: whatsnew/3.10.rst:1564 +#: whatsnew/3.10.rst:1565 msgid "" "When building Python with :option:`--enable-optimizations` now ``-fno-" "semantic-interposition`` is added to both the compile and link line. This " @@ -2345,7 +2346,7 @@ msgid "" "and Pablo Galindo in :issue:`38980`.)" msgstr "" -#: whatsnew/3.10.rst:1572 +#: whatsnew/3.10.rst:1573 msgid "" "Use a new output buffer management code for :mod:`bz2` / :mod:`lzma` / :mod:" "`zlib` modules, and add ``.readall()`` function to ``_compression." @@ -2355,7 +2356,7 @@ msgid "" "`41486`)" msgstr "" -#: whatsnew/3.10.rst:1578 +#: whatsnew/3.10.rst:1579 msgid "" "When using stringized annotations, annotations dicts for functions are no " "longer created when the function is created. Instead, they are stored as a " @@ -2365,7 +2366,7 @@ msgid "" "Inada Naoki in :issue:`42202`.)" msgstr "" -#: whatsnew/3.10.rst:1585 +#: whatsnew/3.10.rst:1586 msgid "" "Substring search functions such as ``str1 in str2`` and ``str2.find(str1)`` " "now sometimes use Crochemore & Perrin's \"Two-Way\" string searching " @@ -2373,7 +2374,7 @@ msgid "" "Dennis Sweeney in :issue:`41972`)" msgstr "" -#: whatsnew/3.10.rst:1590 +#: whatsnew/3.10.rst:1591 msgid "" "Add micro-optimizations to ``_PyType_Lookup()`` to improve type attribute " "cache lookup performance in the common case of cache hits. This makes the " @@ -2381,7 +2382,7 @@ msgid "" "issue:`43452`.)" msgstr "" -#: whatsnew/3.10.rst:1594 +#: whatsnew/3.10.rst:1595 msgid "" "The following built-in functions now support the faster :pep:`590` " "vectorcall calling convention: :func:`map`, :func:`filter`, :func:" @@ -2390,7 +2391,7 @@ msgid "" "`41873` and :issue:`41870`.)" msgstr "" -#: whatsnew/3.10.rst:1598 +#: whatsnew/3.10.rst:1599 msgid "" ":class:`~bz2.BZ2File` performance is improved by removing internal " "``RLock``. This makes :class:`!BZ2File` thread unsafe in the face of " @@ -2399,11 +2400,11 @@ msgid "" "Naoki in :issue:`43785`.)" msgstr "" -#: whatsnew/3.10.rst:2212 +#: whatsnew/3.10.rst:2213 msgid "Deprecated" msgstr "" -#: whatsnew/3.10.rst:1608 +#: whatsnew/3.10.rst:1609 msgid "" "Currently Python accepts numeric literals immediately followed by keywords, " "for example ``0in x``, ``1or x``, ``0if 1else 2``. It allows confusing and " @@ -2416,7 +2417,7 @@ msgid "" "by Serhiy Storchaka in :issue:`43833`.)" msgstr "" -#: whatsnew/3.10.rst:1619 +#: whatsnew/3.10.rst:1620 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. " @@ -2433,21 +2434,21 @@ msgid "" "transition." msgstr "" -#: whatsnew/3.10.rst:1636 +#: whatsnew/3.10.rst:1637 msgid "" "The entire ``distutils`` namespace is deprecated, to be removed in Python " "3.12. Refer to the :ref:`module changes ` section for " "more information." msgstr "" -#: whatsnew/3.10.rst:1640 +#: whatsnew/3.10.rst:1641 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:1644 +#: whatsnew/3.10.rst:1645 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:" @@ -2455,21 +2456,21 @@ msgid "" "(Contributed by Brett Cannon in :issue:`26131`.)" msgstr "" -#: whatsnew/3.10.rst:1650 +#: whatsnew/3.10.rst:1651 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:1654 +#: whatsnew/3.10.rst:1655 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:1659 +#: whatsnew/3.10.rst:1660 msgid "" "The use of :meth:`!importlib.abc.MetaPathFinder.find_module` and :meth:`!" "importlib.abc.PathEntryFinder.find_module` by the import system now trigger " @@ -2479,7 +2480,7 @@ msgid "" "porting. (Contributed by Brett Cannon in :issue:`42134`.)" msgstr "" -#: whatsnew/3.10.rst:1668 +#: whatsnew/3.10.rst:1669 msgid "" "The use of :meth:`!importlib.abc.PathEntryFinder.find_loader` by the import " "system now triggers an :exc:`ImportWarning` as :meth:`importlib.abc." @@ -2488,7 +2489,7 @@ msgid "" "`43672`.)" msgstr "" -#: whatsnew/3.10.rst:1674 +#: whatsnew/3.10.rst:1675 msgid "" "The various implementations of :meth:`!importlib.abc.MetaPathFinder." "find_module` ( :meth:`!importlib.machinery.BuiltinImporter.find_module`, :" @@ -2503,7 +2504,7 @@ msgid "" "Python 3.4). (Contributed by Brett Cannon in :issue:`42135`.)" msgstr "" -#: whatsnew/3.10.rst:1689 +#: whatsnew/3.10.rst:1690 msgid "" ":class:`!importlib.abc.Finder` is deprecated (including its sole method, :" "meth:`!find_module`). Both :class:`importlib.abc.MetaPathFinder` and :class:" @@ -2512,7 +2513,7 @@ msgid "" "(Contributed by Brett Cannon in :issue:`42135`.)" msgstr "" -#: whatsnew/3.10.rst:1696 +#: whatsnew/3.10.rst:1697 msgid "" "The deprecations of :mod:`!imp`, :func:`!importlib.find_loader`, :func:`!" "importlib.util.set_package_wrapper`, :func:`!importlib.util." @@ -2523,7 +2524,7 @@ msgid "" "Brett Cannon in :issue:`43720`.)" msgstr "" -#: whatsnew/3.10.rst:1706 +#: whatsnew/3.10.rst:1707 msgid "" "The import system now uses the ``__spec__`` attribute on modules before " "falling back on :meth:`!module_repr` for a module's ``__repr__()`` method. " @@ -2531,7 +2532,7 @@ msgid "" "(Contributed by Brett Cannon in :issue:`42137`.)" msgstr "" -#: whatsnew/3.10.rst:1712 +#: whatsnew/3.10.rst:1713 msgid "" ":meth:`!importlib.abc.Loader.module_repr`, :meth:`!importlib.machinery." "FrozenLoader.module_repr`, and :meth:`!importlib.machinery.BuiltinLoader." @@ -2539,7 +2540,7 @@ msgid "" "(Contributed by Brett Cannon in :issue:`42136`.)" msgstr "" -#: whatsnew/3.10.rst:1718 +#: whatsnew/3.10.rst:1719 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, " @@ -2547,7 +2548,7 @@ msgid "" "issue:`42264`.)" msgstr "" -#: whatsnew/3.10.rst:1723 +#: whatsnew/3.10.rst:1724 msgid "" "The undocumented built-in function ``sqlite3.enable_shared_cache`` is now " "deprecated, scheduled for removal in Python 3.12. Its use is strongly " @@ -2557,67 +2558,67 @@ msgid "" "query parameter. (Contributed by Erlend E. Aasland in :issue:`24464`.)" msgstr "" -#: whatsnew/3.10.rst:1731 +#: whatsnew/3.10.rst:1732 msgid "The following ``threading`` methods are now deprecated:" msgstr "" -#: whatsnew/3.10.rst:1733 +#: whatsnew/3.10.rst:1734 msgid "``threading.currentThread`` => :func:`threading.current_thread`" msgstr "" -#: whatsnew/3.10.rst:1735 +#: whatsnew/3.10.rst:1736 msgid "``threading.activeCount`` => :func:`threading.active_count`" msgstr "" -#: whatsnew/3.10.rst:1737 +#: whatsnew/3.10.rst:1738 msgid "" "``threading.Condition.notifyAll`` => :meth:`threading.Condition.notify_all`" msgstr "" -#: whatsnew/3.10.rst:1740 +#: whatsnew/3.10.rst:1741 msgid "``threading.Event.isSet`` => :meth:`threading.Event.is_set`" msgstr "" -#: whatsnew/3.10.rst:1742 +#: whatsnew/3.10.rst:1743 msgid "``threading.Thread.setName`` => :attr:`threading.Thread.name`" msgstr "" -#: whatsnew/3.10.rst:1744 +#: whatsnew/3.10.rst:1745 msgid "``threading.thread.getName`` => :attr:`threading.Thread.name`" msgstr "" -#: whatsnew/3.10.rst:1746 +#: whatsnew/3.10.rst:1747 msgid "``threading.Thread.isDaemon`` => :attr:`threading.Thread.daemon`" msgstr "" -#: whatsnew/3.10.rst:1748 +#: whatsnew/3.10.rst:1749 msgid "``threading.Thread.setDaemon`` => :attr:`threading.Thread.daemon`" msgstr "" -#: whatsnew/3.10.rst:1750 +#: whatsnew/3.10.rst:1751 msgid "(Contributed by Jelle Zijlstra in :gh:`87889`.)" msgstr "" -#: whatsnew/3.10.rst:1752 +#: whatsnew/3.10.rst:1753 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:1756 +#: whatsnew/3.10.rst:1757 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:1759 +#: whatsnew/3.10.rst:1760 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:1762 +#: whatsnew/3.10.rst:1763 msgid "" ":data:`!OP_NO_SSLv2`, :data:`!OP_NO_SSLv3`, :data:`!OP_NO_TLSv1`, :data:`!" "OP_NO_TLSv1_1`, :data:`!OP_NO_TLSv1_2`, and :data:`!OP_NO_TLSv1_3` are " @@ -2625,7 +2626,7 @@ msgid "" "SSLContext.maximum_version`." msgstr "" -#: whatsnew/3.10.rst:1768 +#: whatsnew/3.10.rst:1769 msgid "" ":data:`!PROTOCOL_SSLv2`, :data:`!PROTOCOL_SSLv3`, :data:`!PROTOCOL_SSLv23`, :" "data:`!PROTOCOL_TLSv1`, :data:`!PROTOCOL_TLSv1_1`, :data:`!" @@ -2633,25 +2634,25 @@ msgid "" "const:`~ssl.PROTOCOL_TLS_CLIENT` and :const:`~ssl.PROTOCOL_TLS_SERVER`" msgstr "" -#: whatsnew/3.10.rst:1774 +#: whatsnew/3.10.rst:1775 msgid ":func:`!wrap_socket` is replaced by :meth:`ssl.SSLContext.wrap_socket`" msgstr "" -#: whatsnew/3.10.rst:1776 +#: whatsnew/3.10.rst:1777 msgid ":func:`!match_hostname`" msgstr "" -#: whatsnew/3.10.rst:1778 +#: whatsnew/3.10.rst:1779 msgid ":func:`!RAND_pseudo_bytes`, :func:`!RAND_egd`" msgstr "" -#: whatsnew/3.10.rst:1780 +#: whatsnew/3.10.rst:1781 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:1783 +#: whatsnew/3.10.rst:1784 msgid "" "The threading debug (:envvar:`!PYTHONTHREADDEBUG` environment variable) is " "deprecated in Python 3.10 and will be removed in Python 3.12. This feature " @@ -2659,7 +2660,7 @@ msgid "" "Victor Stinner in :issue:`44584`.)" msgstr "" -#: whatsnew/3.10.rst:1788 +#: whatsnew/3.10.rst:1789 msgid "" "Importing from the ``typing.io`` and ``typing.re`` submodules will now emit :" "exc:`DeprecationWarning`. These submodules will be removed in a future " @@ -2668,11 +2669,11 @@ msgid "" "Rittau in :issue:`38291`.)" msgstr "" -#: whatsnew/3.10.rst:2220 +#: whatsnew/3.10.rst:2221 msgid "Removed" msgstr "" -#: whatsnew/3.10.rst:1799 +#: whatsnew/3.10.rst:1800 msgid "" "Removed special methods ``__int__``, ``__float__``, ``__floordiv__``, " "``__mod__``, ``__divmod__``, ``__rfloordiv__``, ``__rmod__`` and " @@ -2680,7 +2681,7 @@ msgid "" "`TypeError`. (Contributed by Serhiy Storchaka in :issue:`41974`.)" msgstr "" -#: whatsnew/3.10.rst:1805 +#: whatsnew/3.10.rst:1806 msgid "" "The ``ParserBase.error()`` method from the private and undocumented " "``_markupbase`` module has been removed. :class:`html.parser.HTMLParser` is " @@ -2689,7 +2690,7 @@ msgid "" "`31844`.)" msgstr "" -#: whatsnew/3.10.rst:1811 +#: whatsnew/3.10.rst:1812 msgid "" "Removed the ``unicodedata.ucnhash_CAPI`` attribute which was an internal " "PyCapsule object. The related private ``_PyUnicode_Name_CAPI`` structure was " @@ -2697,7 +2698,7 @@ msgid "" "`42157`.)" msgstr "" -#: whatsnew/3.10.rst:1816 +#: whatsnew/3.10.rst:1817 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 " @@ -2705,7 +2706,7 @@ msgid "" "``graminit.h`` and ``grammar.h``." msgstr "" -#: whatsnew/3.10.rst:1821 +#: whatsnew/3.10.rst:1822 msgid "" "Removed the Public C API functions ``PyParser_SimpleParseStringFlags``, " "``PyParser_SimpleParseStringFlagsFilename``, " @@ -2713,7 +2714,7 @@ msgid "" "deprecated in 3.9 due to the switch to the new PEG parser." msgstr "" -#: whatsnew/3.10.rst:1826 +#: whatsnew/3.10.rst:1827 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 " @@ -2722,71 +2723,71 @@ msgid "" "their code. (Contributed by Donghee Na and Terry J. Reedy in :issue:`42299`.)" msgstr "" -#: whatsnew/3.10.rst:1833 +#: whatsnew/3.10.rst:1834 msgid "" "Removed the :c:func:`!PyModule_GetWarningsModule` function that was useless " "now due to the :mod:`!_warnings` module was converted to a builtin module in " "2.6. (Contributed by Hai Shi in :issue:`42599`.)" msgstr "" -#: whatsnew/3.10.rst:1837 +#: whatsnew/3.10.rst:1838 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:1841 +#: whatsnew/3.10.rst:1842 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:1845 +#: whatsnew/3.10.rst:1846 msgid "This simplifies the high-level API." msgstr "" -#: whatsnew/3.10.rst:1846 +#: whatsnew/3.10.rst:1847 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:1849 +#: whatsnew/3.10.rst:1850 msgid "" "Event loop passing is error-prone especially when dealing with loops running " "in different threads." msgstr "" -#: whatsnew/3.10.rst:1852 +#: whatsnew/3.10.rst:1853 msgid "" "Note that the low-level API will still accept ``loop``. See :ref:`changes-" "python-api` for examples of how to replace existing code." msgstr "" -#: whatsnew/3.10.rst:1927 +#: whatsnew/3.10.rst:1928 msgid "" "(Contributed by Yurii Karabas, Andrew Svetlov, Yury Selivanov and Kyle " "Stanley in :issue:`42392`.)" msgstr "" -#: whatsnew/3.10.rst:2147 +#: whatsnew/3.10.rst:2148 msgid "Porting to Python 3.10" msgstr "" -#: whatsnew/3.10.rst:1862 +#: whatsnew/3.10.rst:1863 msgid "" "This section lists previously described changes and other bugfixes that may " "require changes to your code." msgstr "" -#: whatsnew/3.10.rst:1867 +#: whatsnew/3.10.rst:1868 msgid "Changes in the Python syntax" msgstr "" -#: whatsnew/3.10.rst:1869 +#: whatsnew/3.10.rst:1870 msgid "" "Deprecation warning is now emitted when compiling previously valid syntax if " "the numeric literal is immediately followed by a keyword (like in ``0in " @@ -2796,11 +2797,11 @@ msgid "" "following keyword. (Contributed by Serhiy Storchaka in :issue:`43833`.)" msgstr "" -#: whatsnew/3.10.rst:1880 +#: whatsnew/3.10.rst:1881 msgid "Changes in the Python API" msgstr "" -#: whatsnew/3.10.rst:1882 +#: whatsnew/3.10.rst:1883 msgid "" "The *etype* parameters of the :func:`~traceback.format_exception`, :func:" "`~traceback.format_exception_only`, and :func:`~traceback.print_exception` " @@ -2808,7 +2809,7 @@ msgid "" "(Contributed by Zackery Spytz and Matthias Bussonnier in :issue:`26389`.)" msgstr "" -#: whatsnew/3.10.rst:1888 +#: whatsnew/3.10.rst:1889 msgid "" ":mod:`atexit`: At Python exit, if a callback registered with :func:`atexit." "register` fails, its exception is now logged. Previously, only some " @@ -2816,7 +2817,7 @@ msgid "" "(Contributed by Victor Stinner in :issue:`42639`.)" msgstr "" -#: whatsnew/3.10.rst:1894 +#: whatsnew/3.10.rst:1895 msgid "" ":class:`collections.abc.Callable` generic now flattens type parameters, " "similar to what :data:`typing.Callable` currently does. This means that " @@ -2829,7 +2830,7 @@ msgid "" "`42195`.)" msgstr "" -#: whatsnew/3.10.rst:1904 +#: whatsnew/3.10.rst:1905 msgid "" ":meth:`socket.htons` and :meth:`socket.ntohs` now raise :exc:`OverflowError` " "instead of :exc:`DeprecationWarning` if the given parameter will not fit in " @@ -2837,41 +2838,41 @@ msgid "" "`42393`.)" msgstr "" -#: whatsnew/3.10.rst:1909 +#: whatsnew/3.10.rst:1910 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:1913 +#: whatsnew/3.10.rst:1914 msgid "A coroutine that currently looks like this::" msgstr "" -#: whatsnew/3.10.rst:1915 +#: whatsnew/3.10.rst:1916 msgid "" "async def foo(loop):\n" " await asyncio.sleep(1, loop=loop)" msgstr "" -#: whatsnew/3.10.rst:1918 +#: whatsnew/3.10.rst:1919 msgid "Should be replaced with this::" msgstr "" -#: whatsnew/3.10.rst:1920 +#: whatsnew/3.10.rst:1921 msgid "" "async def foo():\n" " await asyncio.sleep(1)" msgstr "" -#: whatsnew/3.10.rst:1923 +#: whatsnew/3.10.rst:1924 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:1930 +#: whatsnew/3.10.rst:1931 msgid "" "The :data:`types.FunctionType` constructor now inherits the current builtins " "if the *globals* dictionary has no ``\"__builtins__\"`` key, rather than " @@ -2882,11 +2883,11 @@ msgid "" "`42990`.)" msgstr "" -#: whatsnew/3.10.rst:1939 +#: whatsnew/3.10.rst:1940 msgid "Changes in the C API" msgstr "" -#: whatsnew/3.10.rst:1941 +#: whatsnew/3.10.rst:1942 msgid "" "The C API functions ``PyParser_SimpleParseStringFlags``, " "``PyParser_SimpleParseStringFlagsFilename``, " @@ -2895,31 +2896,31 @@ msgid "" "PEG parser." msgstr "" -#: whatsnew/3.10.rst:1947 +#: whatsnew/3.10.rst:1948 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:1951 +#: whatsnew/3.10.rst:1952 msgid "Specifically:" msgstr "" -#: whatsnew/3.10.rst:1953 +#: whatsnew/3.10.rst:1954 msgid "" "A call to ``PyParser_SimpleParseStringFlags`` followed by ``PyNode_Compile`` " "can be replaced by calling :c:func:`Py_CompileString`." msgstr "" -#: whatsnew/3.10.rst:1956 +#: whatsnew/3.10.rst:1957 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:1960 +#: whatsnew/3.10.rst:1961 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` " @@ -2928,7 +2929,7 @@ msgid "" "(Declarations and error handling are omitted.) ::" msgstr "" -#: whatsnew/3.10.rst:1966 +#: whatsnew/3.10.rst:1967 msgid "" "io_module = Import_ImportModule(\"io\");\n" "fileobject = PyObject_CallMethod(io_module, \"open\", \"ss\", filename, " @@ -2939,7 +2940,7 @@ msgid "" "code = Py_CompileString(source_buf, filename, Py_file_input);" msgstr "" -#: whatsnew/3.10.rst:1973 +#: whatsnew/3.10.rst:1974 msgid "" "For ``FrameObject`` objects, the :attr:`~frame.f_lasti` member now " "represents a wordcode offset instead of a simple offset into the bytecode " @@ -2950,53 +2951,53 @@ msgid "" "`PyFrame_GetLineNumber` instead." msgstr "" -#: whatsnew/3.10.rst:1981 +#: whatsnew/3.10.rst:1982 msgid "CPython bytecode changes" msgstr "" -#: whatsnew/3.10.rst:1983 +#: whatsnew/3.10.rst:1984 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:1988 +#: whatsnew/3.10.rst:1989 msgid "Build Changes" msgstr "" -#: whatsnew/3.10.rst:1990 +#: whatsnew/3.10.rst:1991 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:1994 +#: whatsnew/3.10.rst:1995 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:1998 +#: whatsnew/3.10.rst:1999 msgid "" ":mod:`sqlite3` requires SQLite 3.7.15 or higher. (Contributed by Sergey " "Fedoseev and Erlend E. Aasland in :issue:`40744` and :issue:`40810`.)" msgstr "" -#: whatsnew/3.10.rst:2001 +#: whatsnew/3.10.rst:2002 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:2004 +#: whatsnew/3.10.rst:2005 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:2008 +#: whatsnew/3.10.rst:2009 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 " @@ -3005,7 +3006,7 @@ msgid "" "packages." msgstr "" -#: whatsnew/3.10.rst:2014 +#: whatsnew/3.10.rst:2015 msgid "" "Some Linux distribution packaging policies recommend against bundling " "dependencies. For example, Fedora installs wheel packages in the ``/usr/" @@ -3013,22 +3014,22 @@ msgid "" "_bundled`` package." msgstr "" -#: whatsnew/3.10.rst:2019 +#: whatsnew/3.10.rst:2020 msgid "(Contributed by Victor Stinner in :issue:`42856`.)" msgstr "" -#: whatsnew/3.10.rst:2021 +#: whatsnew/3.10.rst:2022 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:2025 +#: whatsnew/3.10.rst:2026 msgid "(Contributed by Victor Stinner in :issue:`43103`.)" msgstr "" -#: whatsnew/3.10.rst:2027 +#: whatsnew/3.10.rst:2028 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 " @@ -3037,7 +3038,7 @@ msgid "" "Stamatogiannakis in :issue:`42603`.)" msgstr "" -#: whatsnew/3.10.rst:2033 +#: whatsnew/3.10.rst:2034 msgid "" "Add :option:`--with-openssl-rpath` option to ``configure`` script. The " "option simplifies building Python with a custom OpenSSL installation, e.g. " @@ -3045,15 +3046,15 @@ msgid "" "(Contributed by Christian Heimes in :issue:`43466`.)" msgstr "" -#: whatsnew/3.10.rst:2040 +#: whatsnew/3.10.rst:2041 msgid "C API Changes" msgstr "" -#: whatsnew/3.10.rst:2043 +#: whatsnew/3.10.rst:2044 msgid "PEP 652: Maintaining the Stable ABI" msgstr "" -#: whatsnew/3.10.rst:2045 +#: whatsnew/3.10.rst:2046 msgid "" "The Stable ABI (Application Binary Interface) for extension modules or " "embedding Python is now explicitly defined. :ref:`stable` describes C API " @@ -3061,25 +3062,25 @@ msgid "" "ABI." msgstr "" -#: whatsnew/3.10.rst:2050 +#: whatsnew/3.10.rst:2051 msgid "(Contributed by Petr Viktorin in :pep:`652` and :issue:`43795`.)" msgstr "" -#: whatsnew/3.10.rst:2055 +#: whatsnew/3.10.rst:2056 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:2059 +#: whatsnew/3.10.rst:2060 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:2064 +#: whatsnew/3.10.rst:2065 msgid "" "The :c:func:`PyDateTime_DATE_GET_TZINFO` and :c:func:" "`PyDateTime_TIME_GET_TZINFO` macros have been added for accessing the " @@ -3087,72 +3088,72 @@ msgid "" "time` objects. (Contributed by Zackery Spytz in :issue:`30155`.)" msgstr "" -#: whatsnew/3.10.rst:2070 +#: whatsnew/3.10.rst:2071 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:2074 +#: whatsnew/3.10.rst:2075 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:2078 +#: whatsnew/3.10.rst:2079 msgid "" "Add :c:func:`PyUnicode_AsUTF8AndSize` to the limited C API. (Contributed by " "Alex Gaynor in :issue:`41784`.)" msgstr "" -#: whatsnew/3.10.rst:2081 +#: whatsnew/3.10.rst:2082 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:2086 +#: whatsnew/3.10.rst:2087 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:2090 +#: whatsnew/3.10.rst:2091 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:2094 +#: whatsnew/3.10.rst:2095 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:2098 +#: whatsnew/3.10.rst:2099 msgid "" "The :c:func:`PyType_GetSlot` function can accept :ref:`static types `. (Contributed by Hai Shi and Petr Viktorin in :issue:`41073`.)" msgstr "" -#: whatsnew/3.10.rst:2102 +#: whatsnew/3.10.rst:2103 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:2106 +#: whatsnew/3.10.rst:2107 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:2110 +#: whatsnew/3.10.rst:2111 msgid "" "The limited C API is now supported if :ref:`Python is built in debug mode " "` (if the ``Py_DEBUG`` macro is defined). In the limited C API, " @@ -3165,14 +3166,14 @@ msgid "" "`36465`)." msgstr "" -#: whatsnew/3.10.rst:2120 +#: whatsnew/3.10.rst:2121 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:2124 +#: whatsnew/3.10.rst:2125 msgid "" "Add the :c:func:`Py_Is(x, y) ` function to test if the *x* object is " "the *y* object, the same as ``x is y`` in Python. Add also the :c:func:" @@ -3182,7 +3183,7 @@ msgid "" "`43753`.)" msgstr "" -#: whatsnew/3.10.rst:2131 +#: whatsnew/3.10.rst:2132 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 " @@ -3190,20 +3191,20 @@ msgid "" "collector from C code without having to import the :mod:`gc` module." msgstr "" -#: whatsnew/3.10.rst:2138 +#: whatsnew/3.10.rst:2139 msgid "" "Add a new :c:macro:`Py_TPFLAGS_DISALLOW_INSTANTIATION` type flag to disallow " "creating type instances. (Contributed by Victor Stinner in :issue:`43916`.)" msgstr "" -#: whatsnew/3.10.rst:2142 +#: whatsnew/3.10.rst:2143 msgid "" "Add a new :c:macro:`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:2149 +#: whatsnew/3.10.rst:2150 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 ``#``: " @@ -3212,7 +3213,7 @@ msgid "" "`40943`.)" msgstr "" -#: whatsnew/3.10.rst:2155 +#: whatsnew/3.10.rst:2156 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, " @@ -3220,25 +3221,25 @@ msgid "" "For backward compatibility, this macro can be used::" msgstr "" -#: whatsnew/3.10.rst:2160 +#: whatsnew/3.10.rst:2161 msgid "" "#if PY_VERSION_HEX < 0x030900A4\n" "# define Py_SET_REFCNT(obj, refcnt) ((Py_REFCNT(obj) = (refcnt)), (void)0)\n" "#endif" msgstr "" -#: whatsnew/3.10.rst:2164 +#: whatsnew/3.10.rst:2165 msgid "(Contributed by Victor Stinner in :issue:`39573`.)" msgstr "" -#: whatsnew/3.10.rst:2166 +#: whatsnew/3.10.rst:2167 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:2170 +#: whatsnew/3.10.rst:2171 msgid "" "``PyUnicode_FromUnicode(NULL, size)`` and " "``PyUnicode_FromStringAndSize(NULL, size)`` raise ``DeprecationWarning`` " @@ -3246,14 +3247,14 @@ msgid "" "data. (Contributed by Inada Naoki in :issue:`36346`.)" msgstr "" -#: whatsnew/3.10.rst:2175 +#: whatsnew/3.10.rst:2176 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:2179 +#: whatsnew/3.10.rst:2180 msgid "" ":c:func:`Py_GetPath`, :c:func:`Py_GetPrefix`, :c:func:`Py_GetExecPrefix`, :c:" "func:`Py_GetProgramFullPath`, :c:func:`Py_GetPythonHome` and :c:func:" @@ -3263,7 +3264,7 @@ msgid "" "Stinner in :issue:`42260`.)" msgstr "" -#: whatsnew/3.10.rst:2186 +#: whatsnew/3.10.rst:2187 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 " @@ -3273,7 +3274,7 @@ msgid "" "and Victor Stinner in :issue:`30459`.)" msgstr "" -#: whatsnew/3.10.rst:2193 +#: whatsnew/3.10.rst:2194 msgid "" "The non-limited API files ``odictobject.h``, ``parser_interface.h``, " "``picklebufobject.h``, ``pyarena.h``, ``pyctype.h``, ``pydebug.h``, ``pyfpe." @@ -3284,7 +3285,7 @@ msgid "" "issue:`35134`.)" msgstr "" -#: whatsnew/3.10.rst:2201 +#: whatsnew/3.10.rst:2202 msgid "" "Use the :c:macro:`Py_TPFLAGS_IMMUTABLETYPE` type flag to create immutable " "type objects. Do not rely on :c:macro:`Py_TPFLAGS_HEAPTYPE` to decide if a " @@ -3293,85 +3294,85 @@ msgid "" "issue:`43908`.)" msgstr "" -#: whatsnew/3.10.rst:2207 +#: whatsnew/3.10.rst:2208 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:2214 +#: whatsnew/3.10.rst:2215 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:2222 +#: whatsnew/3.10.rst:2223 msgid "" "Removed ``Py_UNICODE_str*`` functions manipulating ``Py_UNICODE*`` strings. " "(Contributed by Inada Naoki in :issue:`41123`.)" msgstr "" -#: whatsnew/3.10.rst:2225 +#: whatsnew/3.10.rst:2226 msgid "" "``Py_UNICODE_strlen``: use :c:func:`PyUnicode_GetLength` or :c:macro:" "`PyUnicode_GET_LENGTH`" msgstr "" -#: whatsnew/3.10.rst:2227 +#: whatsnew/3.10.rst:2228 msgid "" "``Py_UNICODE_strcat``: use :c:func:`PyUnicode_CopyCharacters` or :c:func:" "`PyUnicode_FromFormat`" msgstr "" -#: whatsnew/3.10.rst:2229 +#: whatsnew/3.10.rst:2230 msgid "" "``Py_UNICODE_strcpy``, ``Py_UNICODE_strncpy``: use :c:func:" "`PyUnicode_CopyCharacters` or :c:func:`PyUnicode_Substring`" msgstr "" -#: whatsnew/3.10.rst:2231 +#: whatsnew/3.10.rst:2232 msgid "``Py_UNICODE_strcmp``: use :c:func:`PyUnicode_Compare`" msgstr "" -#: whatsnew/3.10.rst:2232 +#: whatsnew/3.10.rst:2233 msgid "``Py_UNICODE_strncmp``: use :c:func:`PyUnicode_Tailmatch`" msgstr "" -#: whatsnew/3.10.rst:2233 +#: whatsnew/3.10.rst:2234 msgid "" "``Py_UNICODE_strchr``, ``Py_UNICODE_strrchr``: use :c:func:" "`PyUnicode_FindChar`" msgstr "" -#: whatsnew/3.10.rst:2236 +#: whatsnew/3.10.rst:2237 msgid "" "Removed ``PyUnicode_GetMax()``. Please migrate to new (:pep:`393`) APIs. " "(Contributed by Inada Naoki in :issue:`41103`.)" msgstr "" -#: whatsnew/3.10.rst:2239 +#: whatsnew/3.10.rst:2240 msgid "" "Removed ``PyLong_FromUnicode()``. Please migrate to :c:func:" "`PyLong_FromUnicodeObject`. (Contributed by Inada Naoki in :issue:`41103`.)" msgstr "" -#: whatsnew/3.10.rst:2242 +#: whatsnew/3.10.rst:2243 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:2246 +#: whatsnew/3.10.rst:2247 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:2250 +#: whatsnew/3.10.rst:2251 msgid "" "Removed undocumented macros ``Py_ALLOW_RECURSION`` and " "``Py_END_ALLOW_RECURSION`` and the ``recursion_critical`` field of the :c:" @@ -3379,14 +3380,14 @@ msgid "" "issue:`41936`.)" msgstr "" -#: whatsnew/3.10.rst:2255 +#: whatsnew/3.10.rst:2256 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:2260 +#: whatsnew/3.10.rst:2261 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 " @@ -3394,48 +3395,48 @@ msgid "" "Stinner in :issue:`43244`.)" msgstr "" -#: whatsnew/3.10.rst:2265 +#: whatsnew/3.10.rst:2266 msgid "Remove the ``symtable.h`` header file and the undocumented functions:" msgstr "" -#: whatsnew/3.10.rst:2267 +#: whatsnew/3.10.rst:2268 msgid "``PyST_GetScope()``" msgstr "" -#: whatsnew/3.10.rst:2268 +#: whatsnew/3.10.rst:2269 msgid "``PySymtable_Build()``" msgstr "" -#: whatsnew/3.10.rst:2269 +#: whatsnew/3.10.rst:2270 msgid "``PySymtable_BuildObject()``" msgstr "" -#: whatsnew/3.10.rst:2270 +#: whatsnew/3.10.rst:2271 msgid "``PySymtable_Free()``" msgstr "" -#: whatsnew/3.10.rst:2271 +#: whatsnew/3.10.rst:2272 msgid "``Py_SymtableString()``" msgstr "" -#: whatsnew/3.10.rst:2272 +#: whatsnew/3.10.rst:2273 msgid "``Py_SymtableStringObject()``" msgstr "" -#: whatsnew/3.10.rst:2274 +#: whatsnew/3.10.rst:2275 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:2278 +#: whatsnew/3.10.rst:2279 msgid "" "Use Python :mod:`symtable` module instead. (Contributed by Victor Stinner " "in :issue:`43244`.)" msgstr "" -#: whatsnew/3.10.rst:2281 +#: whatsnew/3.10.rst:2282 msgid "" "Remove :c:func:`PyOS_ReadlineFunctionPointer` from the limited C API headers " "and from ``python3.dll``, the library that provides the stable ABI on " @@ -3443,7 +3444,7 @@ msgid "" "cannot be guaranteed. (Contributed by Petr Viktorin in :issue:`43868`.)" msgstr "" -#: whatsnew/3.10.rst:2287 +#: whatsnew/3.10.rst:2288 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 " @@ -3454,96 +3455,96 @@ msgid "" "(Contributed by Victor Stinner in :issue:`43244`.)" msgstr "" -#: whatsnew/3.10.rst:2295 +#: whatsnew/3.10.rst:2296 msgid "" "Remove the compiler and parser functions using ``struct _mod`` type, because " "the public AST C API was removed:" msgstr "" -#: whatsnew/3.10.rst:2298 +#: whatsnew/3.10.rst:2299 msgid "``PyAST_Compile()``" msgstr "" -#: whatsnew/3.10.rst:2299 +#: whatsnew/3.10.rst:2300 msgid "``PyAST_CompileEx()``" msgstr "" -#: whatsnew/3.10.rst:2300 +#: whatsnew/3.10.rst:2301 msgid "``PyAST_CompileObject()``" msgstr "" -#: whatsnew/3.10.rst:2301 +#: whatsnew/3.10.rst:2302 msgid "``PyFuture_FromAST()``" msgstr "" -#: whatsnew/3.10.rst:2302 +#: whatsnew/3.10.rst:2303 msgid "``PyFuture_FromASTObject()``" msgstr "" -#: whatsnew/3.10.rst:2303 +#: whatsnew/3.10.rst:2304 msgid "``PyParser_ASTFromFile()``" msgstr "" -#: whatsnew/3.10.rst:2304 +#: whatsnew/3.10.rst:2305 msgid "``PyParser_ASTFromFileObject()``" msgstr "" -#: whatsnew/3.10.rst:2305 +#: whatsnew/3.10.rst:2306 msgid "``PyParser_ASTFromFilename()``" msgstr "" -#: whatsnew/3.10.rst:2306 +#: whatsnew/3.10.rst:2307 msgid "``PyParser_ASTFromString()``" msgstr "" -#: whatsnew/3.10.rst:2307 +#: whatsnew/3.10.rst:2308 msgid "``PyParser_ASTFromStringObject()``" msgstr "" -#: whatsnew/3.10.rst:2309 +#: whatsnew/3.10.rst:2310 msgid "" "These functions were undocumented and excluded from the limited C API. " "(Contributed by Victor Stinner in :issue:`43244`.)" msgstr "" -#: whatsnew/3.10.rst:2312 +#: whatsnew/3.10.rst:2313 msgid "Remove the ``pyarena.h`` header file with functions:" msgstr "" -#: whatsnew/3.10.rst:2314 +#: whatsnew/3.10.rst:2315 msgid "``PyArena_New()``" msgstr "" -#: whatsnew/3.10.rst:2315 +#: whatsnew/3.10.rst:2316 msgid "``PyArena_Free()``" msgstr "" -#: whatsnew/3.10.rst:2316 +#: whatsnew/3.10.rst:2317 msgid "``PyArena_Malloc()``" msgstr "" -#: whatsnew/3.10.rst:2317 +#: whatsnew/3.10.rst:2318 msgid "``PyArena_AddPyObject()``" msgstr "" -#: whatsnew/3.10.rst:2319 +#: whatsnew/3.10.rst:2320 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 "" -#: whatsnew/3.10.rst:2323 +#: whatsnew/3.10.rst:2324 msgid "" "The ``PyThreadState.use_tracing`` member has been removed to optimize " "Python. (Contributed by Mark Shannon in :issue:`43760`.)" msgstr "" -#: whatsnew/3.10.rst:2328 +#: whatsnew/3.10.rst:2329 msgid "Notable security feature in 3.10.7" msgstr "" -#: whatsnew/3.10.rst:2330 +#: whatsnew/3.10.rst:2331 msgid "" "Converting between :class:`int` and :class:`str` in bases other than 2 " "(binary), 4, 8 (octal), 16 (hexadecimal), or 32 such as base 10 (decimal) " @@ -3556,11 +3557,11 @@ msgid "" "digits in string form." msgstr "" -#: whatsnew/3.10.rst:2341 +#: whatsnew/3.10.rst:2342 msgid "Notable security feature in 3.10.8" msgstr "" -#: whatsnew/3.10.rst:2343 +#: whatsnew/3.10.rst:2344 msgid "" "The deprecated :mod:`!mailcap` module now refuses to inject unsafe text " "(filenames, MIME types, parameters) into shell commands. Instead of using " @@ -3569,15 +3570,15 @@ msgid "" "`98966`.)" msgstr "" -#: whatsnew/3.10.rst:2350 +#: whatsnew/3.10.rst:2351 msgid "Notable changes in 3.10.12" msgstr "" -#: whatsnew/3.10.rst:2353 +#: whatsnew/3.10.rst:2354 msgid "tarfile" msgstr "" -#: whatsnew/3.10.rst:2355 +#: whatsnew/3.10.rst:2356 msgid "" "The extraction methods in :mod:`tarfile`, and :func:`shutil.unpack_archive`, " "have a new a *filter* argument that allows limiting tar features than may be " diff --git a/whatsnew/3.11.po b/whatsnew/3.11.po index 863dcdb7..b26374dd 100644 --- a/whatsnew/3.11.po +++ b/whatsnew/3.11.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/whatsnew/3.12.po b/whatsnew/3.12.po index 23515ce2..aae68d48 100644 --- a/whatsnew/3.12.po +++ b/whatsnew/3.12.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -2384,27 +2384,36 @@ msgstr "" #: deprecations/pending-removal-in-3.15.rst:88 msgid "" +"When using the functional syntax of :class:`~typing.TypedDict`\\s, failing " +"to pass a value to the *fields* parameter (``TD = TypedDict(\"TD\")``) or " +"passing ``None`` (``TD = TypedDict(\"TD\", None)``) has been deprecated " +"since Python 3.13. Use ``class TD(TypedDict): pass`` or ``TD = " +"TypedDict(\"TD\", {})`` to create a TypedDict with zero field." +msgstr "" + +#: deprecations/pending-removal-in-3.15.rst:95 +msgid "" "The :func:`typing.no_type_check_decorator` decorator function has been " "deprecated since Python 3.13. After eight years in the :mod:`typing` module, " "it has yet to be supported by any major type checker." msgstr "" -#: deprecations/pending-removal-in-3.15.rst:93 +#: deprecations/pending-removal-in-3.15.rst:100 msgid ":mod:`wave`:" msgstr "" -#: deprecations/pending-removal-in-3.15.rst:95 +#: deprecations/pending-removal-in-3.15.rst:102 msgid "" "The :meth:`~wave.Wave_read.getmark`, :meth:`!setmark`, and :meth:`~wave." "Wave_read.getmarkers` methods of the :class:`~wave.Wave_read` and :class:" "`~wave.Wave_write` classes have been deprecated since Python 3.13." msgstr "" -#: deprecations/pending-removal-in-3.15.rst:100 +#: deprecations/pending-removal-in-3.15.rst:107 msgid ":mod:`zipimport`:" msgstr "" -#: deprecations/pending-removal-in-3.15.rst:102 +#: deprecations/pending-removal-in-3.15.rst:109 msgid "" ":meth:`~zipimport.zipimporter.load_module` has been deprecated since Python " "3.10. Use :meth:`~zipimport.zipimporter.exec_module` instead. (Contributed " diff --git a/whatsnew/3.13.po b/whatsnew/3.13.po index b4601618..1f0b8ce0 100644 --- a/whatsnew/3.13.po +++ b/whatsnew/3.13.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.13\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -339,7 +339,7 @@ msgid "" "years of security fixes." msgstr "" -#: whatsnew/3.13.rst:2030 +#: whatsnew/3.13.rst:2046 msgid "New Features" msgstr "" @@ -1110,37 +1110,56 @@ msgid "" "(Contributed by Arthur Tacca and Jason Zhang in :gh:`115957`.)" msgstr "" -#: whatsnew/3.13.rst:735 +#: whatsnew/3.13.rst:733 +msgid "" +"The function and methods named ``create_task`` have received a new " +"``**kwargs`` argument that is passed through to the task constructor. This " +"change was accidentally added in 3.13.3, and broke the API contract for " +"custom task factories. Several third-party task factories implemented " +"workarounds for this. In 3.13.4 and later releases the old factory contract " +"is honored once again (until 3.14). To keep the workarounds working, the " +"extra ``**kwargs`` argument still allows passing additional keyword " +"arguments to :class:`~asyncio.Task` and to custom task factories." +msgstr "" + +#: whatsnew/3.13.rst:744 +msgid "" +"This affects the following function and methods: :meth:`asyncio." +"create_task`, :meth:`asyncio.loop.create_task`, :meth:`asyncio.TaskGroup." +"create_task`. (Contributed by Thomas Grainger in :gh:`128307`.)" +msgstr "" + +#: whatsnew/3.13.rst:751 msgid "base64" msgstr "" -#: whatsnew/3.13.rst:737 +#: whatsnew/3.13.rst:753 msgid "" "Add :func:`~base64.z85encode` and :func:`~base64.z85decode` functions for " "encoding :class:`bytes` as `Z85 data`_ and decoding Z85-encoded data to :" "class:`!bytes`. (Contributed by Matan Perelman in :gh:`75299`.)" msgstr "" -#: whatsnew/3.13.rst:746 +#: whatsnew/3.13.rst:762 msgid "compileall" msgstr "" -#: whatsnew/3.13.rst:756 whatsnew/3.13.rst:1015 +#: whatsnew/3.13.rst:772 whatsnew/3.13.rst:1031 msgid "" "The default number of worker threads and processes is now selected using :" "func:`os.process_cpu_count` instead of :func:`os.cpu_count`. (Contributed by " "Victor Stinner in :gh:`109649`.)" msgstr "" -#: whatsnew/3.13.rst:754 +#: whatsnew/3.13.rst:770 msgid "concurrent.futures" msgstr "" -#: whatsnew/3.13.rst:1664 +#: whatsnew/3.13.rst:1680 msgid "configparser" msgstr "" -#: whatsnew/3.13.rst:764 +#: whatsnew/3.13.rst:780 msgid "" ":class:`~configparser.ConfigParser` now has support for unnamed sections, " "which allows for top-level key-value pairs. This can be enabled with the new " @@ -1148,11 +1167,11 @@ msgid "" "gh:`66449`.)" msgstr "" -#: whatsnew/3.13.rst:771 +#: whatsnew/3.13.rst:787 msgid "copy" msgstr "" -#: whatsnew/3.13.rst:773 +#: whatsnew/3.13.rst:789 msgid "" "The new :func:`~copy.replace` function and the :meth:`replace protocol " "` make creating modified copies of objects much simpler. " @@ -1161,43 +1180,43 @@ msgid "" "protocol:" msgstr "" -#: whatsnew/3.13.rst:779 +#: whatsnew/3.13.rst:795 msgid ":func:`collections.namedtuple`" msgstr "" -#: whatsnew/3.13.rst:780 +#: whatsnew/3.13.rst:796 msgid ":class:`dataclasses.dataclass`" msgstr "" -#: whatsnew/3.13.rst:781 +#: whatsnew/3.13.rst:797 msgid "" ":class:`datetime.datetime`, :class:`datetime.date`, :class:`datetime.time`" msgstr "" -#: whatsnew/3.13.rst:782 +#: whatsnew/3.13.rst:798 msgid ":class:`inspect.Signature`, :class:`inspect.Parameter`" msgstr "" -#: whatsnew/3.13.rst:783 +#: whatsnew/3.13.rst:799 msgid ":class:`types.SimpleNamespace`" msgstr "" -#: whatsnew/3.13.rst:784 +#: whatsnew/3.13.rst:800 msgid ":ref:`code objects `" msgstr "" -#: whatsnew/3.13.rst:786 +#: whatsnew/3.13.rst:802 msgid "" "Any user-defined class can also support :func:`copy.replace` by defining " "the :meth:`~object.__replace__` method. (Contributed by Serhiy Storchaka in :" "gh:`108751`.)" msgstr "" -#: whatsnew/3.13.rst:792 +#: whatsnew/3.13.rst:808 msgid "ctypes" msgstr "" -#: whatsnew/3.13.rst:794 +#: whatsnew/3.13.rst:810 msgid "" "As a consequence of necessary internal refactoring, initialization of " "internal metaclasses now happens in ``__init__`` rather than in ``__new__``. " @@ -1205,25 +1224,25 @@ msgid "" "custom initialization. Generally:" msgstr "" -#: whatsnew/3.13.rst:800 +#: whatsnew/3.13.rst:816 msgid "" "Custom logic that was done in ``__new__`` after calling ``super().__new__`` " "should be moved to ``__init__``." msgstr "" -#: whatsnew/3.13.rst:802 +#: whatsnew/3.13.rst:818 msgid "" "To create a class, call the metaclass, not only the metaclass's ``__new__`` " "method." msgstr "" -#: whatsnew/3.13.rst:805 +#: whatsnew/3.13.rst:821 msgid "" "See :gh:`124520` for discussion and links to changes in some affected " "projects." msgstr "" -#: whatsnew/3.13.rst:808 +#: whatsnew/3.13.rst:824 msgid "" ":class:`ctypes.Structure` objects have a new :attr:`~ctypes.Structure." "_align_` attribute which allows the alignment of the structure being packed " @@ -1231,29 +1250,29 @@ msgid "" "in :gh:`112433`)" msgstr "" -#: whatsnew/3.13.rst:814 +#: whatsnew/3.13.rst:830 msgid "dbm" msgstr "" -#: whatsnew/3.13.rst:816 +#: whatsnew/3.13.rst:832 msgid "" "Add :mod:`dbm.sqlite3`, a new module which implements an SQLite backend, and " "make it the default :mod:`!dbm` backend. (Contributed by Raymond Hettinger " "and Erlend E. Aasland in :gh:`100414`.)" msgstr "" -#: whatsnew/3.13.rst:820 +#: whatsnew/3.13.rst:836 msgid "" "Allow removing all items from the database through the new :meth:`.gdbm." "clear` and :meth:`.ndbm.clear` methods. (Contributed by Donghee Na in :gh:" "`107122`.)" msgstr "" -#: whatsnew/3.13.rst:826 +#: whatsnew/3.13.rst:842 msgid "dis" msgstr "" -#: whatsnew/3.13.rst:828 +#: whatsnew/3.13.rst:844 msgid "" "Change the output of :mod:`dis` module functions to show logical labels for " "jump targets and exception handlers, rather than offsets. The offsets can be " @@ -1261,7 +1280,7 @@ msgid "" "the *show_offsets* argument. (Contributed by Irit Katriel in :gh:`112137`.)" msgstr "" -#: whatsnew/3.13.rst:835 +#: whatsnew/3.13.rst:851 msgid "" ":meth:`~dis.get_instructions` no longer represents cache entries as separate " "instructions. Instead, it returns them as part of the :class:`~dis." @@ -1270,11 +1289,11 @@ msgid "" "(Contributed by Irit Katriel in :gh:`112962`.)" msgstr "" -#: whatsnew/3.13.rst:847 +#: whatsnew/3.13.rst:863 msgid "doctest" msgstr "" -#: whatsnew/3.13.rst:849 +#: whatsnew/3.13.rst:865 msgid "" ":mod:`doctest` output is now colored by default. This can be controlled via " "the new :envvar:`PYTHON_COLORS` environment variable as well as the " @@ -1283,18 +1302,18 @@ msgid "" "`117225`.)" msgstr "" -#: whatsnew/3.13.rst:856 +#: whatsnew/3.13.rst:872 msgid "" "The :meth:`.DocTestRunner.run` method now counts the number of skipped " "tests. Add the :attr:`.DocTestRunner.skips` and :attr:`.TestResults.skipped` " "attributes. (Contributed by Victor Stinner in :gh:`108794`.)" msgstr "" -#: whatsnew/3.13.rst:862 +#: whatsnew/3.13.rst:878 msgid "email" msgstr "" -#: whatsnew/3.13.rst:864 +#: whatsnew/3.13.rst:880 msgid "" "Headers with embedded newlines are now quoted on output. The :mod:`~email." "generator` will now refuse to serialize (write) headers that are improperly " @@ -1304,7 +1323,7 @@ msgid "" "Bloemsaat and Petr Viktorin in :gh:`121650`.)" msgstr "" -#: whatsnew/3.13.rst:872 +#: whatsnew/3.13.rst:888 msgid "" ":func:`~email.utils.getaddresses` and :func:`~email.utils.parseaddr` now " "return ``('', '')`` pairs in more situations where invalid email addresses " @@ -1316,21 +1335,21 @@ msgid "" "Stinner for :gh:`102988` to improve the :cve:`2023-27043` fix.)" msgstr "" -#: whatsnew/3.13.rst:884 +#: whatsnew/3.13.rst:900 msgid "enum" msgstr "" -#: whatsnew/3.13.rst:886 +#: whatsnew/3.13.rst:902 msgid "" ":class:`~enum.EnumDict` has been made public to better support subclassing :" "class:`~enum.EnumType`." msgstr "" -#: whatsnew/3.13.rst:891 +#: whatsnew/3.13.rst:907 msgid "fractions" msgstr "" -#: whatsnew/3.13.rst:893 +#: whatsnew/3.13.rst:909 msgid "" ":class:`~fractions.Fraction` objects now support the standard :ref:`format " "specification mini-language ` rules for fill, alignment, sign " @@ -1338,22 +1357,22 @@ msgid "" "`111320`.)" msgstr "" -#: whatsnew/3.13.rst:900 +#: whatsnew/3.13.rst:916 msgid "glob" msgstr "" -#: whatsnew/3.13.rst:902 +#: whatsnew/3.13.rst:918 msgid "" "Add :func:`~glob.translate`, a function to convert a path specification with " "shell-style wildcards to a regular expression. (Contributed by Barney Gale " "in :gh:`72904`.)" msgstr "" -#: whatsnew/3.13.rst:908 +#: whatsnew/3.13.rst:924 msgid "importlib" msgstr "" -#: whatsnew/3.13.rst:910 +#: whatsnew/3.13.rst:926 msgid "" "The following functions in :mod:`importlib.resources` now allow accessing a " "directory (or tree) of resources, using multiple positional arguments (the " @@ -1361,37 +1380,37 @@ msgid "" "keyword-only):" msgstr "" -#: whatsnew/3.13.rst:915 +#: whatsnew/3.13.rst:931 msgid ":func:`~importlib.resources.is_resource`" msgstr "" -#: whatsnew/3.13.rst:916 +#: whatsnew/3.13.rst:932 msgid ":func:`~importlib.resources.open_binary`" msgstr "" -#: whatsnew/3.13.rst:917 +#: whatsnew/3.13.rst:933 msgid ":func:`~importlib.resources.open_text`" msgstr "" -#: whatsnew/3.13.rst:918 +#: whatsnew/3.13.rst:934 msgid ":func:`~importlib.resources.path`" msgstr "" -#: whatsnew/3.13.rst:919 +#: whatsnew/3.13.rst:935 msgid ":func:`~importlib.resources.read_binary`" msgstr "" -#: whatsnew/3.13.rst:920 +#: whatsnew/3.13.rst:936 msgid ":func:`~importlib.resources.read_text`" msgstr "" -#: whatsnew/3.13.rst:922 +#: whatsnew/3.13.rst:938 msgid "" "These functions are no longer deprecated and are not scheduled for removal. " "(Contributed by Petr Viktorin in :gh:`116608`.)" msgstr "" -#: whatsnew/3.13.rst:925 +#: whatsnew/3.13.rst:941 msgid "" ":func:`~importlib.resources.contents` remains deprecated in favor of the " "fully-featured :class:`~importlib.resources.abc.Traversable` API. However, " @@ -1399,11 +1418,11 @@ msgid "" "`116608`.)" msgstr "" -#: whatsnew/3.13.rst:932 +#: whatsnew/3.13.rst:948 msgid "io" msgstr "" -#: whatsnew/3.13.rst:934 +#: whatsnew/3.13.rst:950 msgid "" "The :class:`~io.IOBase` finalizer now logs any errors raised by the :meth:" "`~io.IOBase.close` method with :data:`sys.unraisablehook`. Previously, " @@ -1412,17 +1431,17 @@ msgid "" "build>`. (Contributed by Victor Stinner in :gh:`62948`.)" msgstr "" -#: whatsnew/3.13.rst:943 +#: whatsnew/3.13.rst:959 msgid "ipaddress" msgstr "" -#: whatsnew/3.13.rst:945 +#: whatsnew/3.13.rst:961 msgid "" "Add the :attr:`.IPv4Address.ipv6_mapped` property, which returns the IPv4-" "mapped IPv6 address. (Contributed by Charles Machalow in :gh:`109466`.)" msgstr "" -#: whatsnew/3.13.rst:949 +#: whatsnew/3.13.rst:965 msgid "" "Fix ``is_global`` and ``is_private`` behavior in :class:`~ipaddress." "IPv4Address`, :class:`~ipaddress.IPv6Address`, :class:`~ipaddress." @@ -1430,22 +1449,22 @@ msgid "" "Stasiak in :gh:`113171`.)" msgstr "" -#: whatsnew/3.13.rst:956 +#: whatsnew/3.13.rst:972 msgid "itertools" msgstr "" -#: whatsnew/3.13.rst:958 +#: whatsnew/3.13.rst:974 msgid "" ":func:`~itertools.batched` has a new *strict* parameter, which raises a :exc:" "`ValueError` if the final batch is shorter than the specified batch size. " "(Contributed by Raymond Hettinger in :gh:`113202`.)" msgstr "" -#: whatsnew/3.13.rst:965 +#: whatsnew/3.13.rst:981 msgid "marshal" msgstr "" -#: whatsnew/3.13.rst:967 +#: whatsnew/3.13.rst:983 msgid "" "Add the *allow_code* parameter in module functions. Passing " "``allow_code=False`` prevents serialization and de-serialization of code " @@ -1453,11 +1472,11 @@ msgid "" "Serhiy Storchaka in :gh:`113626`.)" msgstr "" -#: whatsnew/3.13.rst:974 +#: whatsnew/3.13.rst:990 msgid "math" msgstr "" -#: whatsnew/3.13.rst:976 +#: whatsnew/3.13.rst:992 msgid "" "The new function :func:`~math.fma` performs fused multiply-add operations. " "This computes ``x * y + z`` with only a single round, and so avoids any " @@ -1467,11 +1486,11 @@ msgid "" "Stinner in :gh:`73468`.)" msgstr "" -#: whatsnew/3.13.rst:986 +#: whatsnew/3.13.rst:1002 msgid "mimetypes" msgstr "" -#: whatsnew/3.13.rst:988 +#: whatsnew/3.13.rst:1004 msgid "" "Add the :func:`~mimetypes.guess_file_type` function to guess a MIME type " "from a filesystem path. Using paths with :func:`~mimetypes.guess_type` is " @@ -1479,18 +1498,18 @@ msgid "" "`66543`.)" msgstr "" -#: whatsnew/3.13.rst:995 +#: whatsnew/3.13.rst:1011 msgid "mmap" msgstr "" -#: whatsnew/3.13.rst:997 +#: whatsnew/3.13.rst:1013 msgid "" ":class:`~mmap.mmap` is now protected from crashing on Windows when the " "mapped memory is inaccessible due to file system errors or access " "violations. (Contributed by Jannis Weigend in :gh:`118209`.)" msgstr "" -#: whatsnew/3.13.rst:1001 +#: whatsnew/3.13.rst:1017 msgid "" ":class:`~mmap.mmap` has a new :meth:`~mmap.mmap.seekable` method that can be " "used when a seekable file-like object is required. The :meth:`~mmap.mmap." @@ -1498,7 +1517,7 @@ msgid "" "Na and Sylvie Liberman in :gh:`111835`.)" msgstr "" -#: whatsnew/3.13.rst:1006 +#: whatsnew/3.13.rst:1022 msgid "" "The new UNIX-only *trackfd* parameter for :class:`~mmap.mmap` controls file " "descriptor duplication; if false, the file descriptor specified by *fileno* " @@ -1506,22 +1525,22 @@ msgid "" "gh:`78502`.)" msgstr "" -#: whatsnew/3.13.rst:1013 +#: whatsnew/3.13.rst:1029 msgid "multiprocessing" msgstr "" -#: whatsnew/3.13.rst:1021 +#: whatsnew/3.13.rst:1037 msgid "os" msgstr "" -#: whatsnew/3.13.rst:1023 +#: whatsnew/3.13.rst:1039 msgid "" "Add :func:`~os.process_cpu_count` function to get the number of logical CPU " "cores usable by the calling thread of the current process. (Contributed by " "Victor Stinner in :gh:`109649`.)" msgstr "" -#: whatsnew/3.13.rst:1027 +#: whatsnew/3.13.rst:1043 msgid "" ":func:`~os.cpu_count` and :func:`~os.process_cpu_count` can be overridden " "through the new environment variable :envvar:`PYTHON_CPU_COUNT` or the new " @@ -1531,7 +1550,7 @@ msgid "" "Na in :gh:`109595`.)" msgstr "" -#: whatsnew/3.13.rst:1035 +#: whatsnew/3.13.rst:1051 msgid "" "Add a :ref:`low level interface ` to Linux's :manpage:`timer " "file descriptors ` via :func:`~os.timerfd_create`, :func:" @@ -1542,7 +1561,7 @@ msgid "" "in :gh:`108277`.)" msgstr "" -#: whatsnew/3.13.rst:1044 +#: whatsnew/3.13.rst:1060 msgid "" ":func:`~os.lchmod` and the *follow_symlinks* argument of :func:`~os.chmod` " "are both now available on Windows. Note that the default value of " @@ -1550,14 +1569,14 @@ msgid "" "by Serhiy Storchaka in :gh:`59616`.)" msgstr "" -#: whatsnew/3.13.rst:1050 +#: whatsnew/3.13.rst:1066 msgid "" ":func:`~os.fchmod` and support for file descriptors in :func:`~os.chmod` are " "both now available on Windows. (Contributed by Serhiy Storchaka in :gh:" "`113191`.)" msgstr "" -#: whatsnew/3.13.rst:1054 +#: whatsnew/3.13.rst:1070 msgid "" "On Windows, :func:`~os.mkdir` and :func:`~os.makedirs` now support passing a " "*mode* value of ``0o700`` to apply access control to the new directory. This " @@ -1566,14 +1585,14 @@ msgid "" "Steve Dower in :gh:`118486`.)" msgstr "" -#: whatsnew/3.13.rst:1061 +#: whatsnew/3.13.rst:1077 msgid "" ":func:`~os.posix_spawn` now accepts ``None`` for the *env* argument, which " "makes the newly spawned process use the current process environment. " "(Contributed by Jakub Kulik in :gh:`113119`.)" msgstr "" -#: whatsnew/3.13.rst:1065 +#: whatsnew/3.13.rst:1081 msgid "" ":func:`~os.posix_spawn` can now use the :const:`~os.POSIX_SPAWN_CLOSEFROM` " "attribute in the *file_actions* parameter on platforms that support :c:func:" @@ -1581,76 +1600,76 @@ msgid "" "gh:`113117`.)" msgstr "" -#: whatsnew/3.13.rst:1072 +#: whatsnew/3.13.rst:1088 msgid "os.path" msgstr "" -#: whatsnew/3.13.rst:1074 +#: whatsnew/3.13.rst:1090 msgid "" "Add :func:`~os.path.isreserved` to check if a path is reserved on the " "current system. This function is only available on Windows. (Contributed by " "Barney Gale in :gh:`88569`.)" msgstr "" -#: whatsnew/3.13.rst:1079 +#: whatsnew/3.13.rst:1095 msgid "" "On Windows, :func:`~os.path.isabs` no longer considers paths starting with " "exactly one slash (``\\`` or ``/``) to be absolute. (Contributed by Barney " "Gale and Jon Foster in :gh:`44626`.)" msgstr "" -#: whatsnew/3.13.rst:1083 +#: whatsnew/3.13.rst:1099 msgid "" ":func:`~os.path.realpath` now resolves MS-DOS style file names even if the " "file is not accessible. (Contributed by Moonsik Park in :gh:`82367`.)" msgstr "" -#: whatsnew/3.13.rst:1720 +#: whatsnew/3.13.rst:1736 msgid "pathlib" msgstr "" -#: whatsnew/3.13.rst:1091 +#: whatsnew/3.13.rst:1107 msgid "" "Add :exc:`~pathlib.UnsupportedOperation`, which is raised instead of :exc:" "`NotImplementedError` when a path operation isn't supported. (Contributed by " "Barney Gale in :gh:`89812`.)" msgstr "" -#: whatsnew/3.13.rst:1095 +#: whatsnew/3.13.rst:1111 msgid "" "Add a new constructor for creating :class:`~pathlib.Path` objects from " "'file' URIs (``file:///``), :meth:`.Path.from_uri`. (Contributed by Barney " "Gale in :gh:`107465`.)" msgstr "" -#: whatsnew/3.13.rst:1099 +#: whatsnew/3.13.rst:1115 msgid "" "Add :meth:`.PurePath.full_match` for matching paths with shell-style " "wildcards, including the recursive wildcard \"``**``\". (Contributed by " "Barney Gale in :gh:`73435`.)" msgstr "" -#: whatsnew/3.13.rst:1103 +#: whatsnew/3.13.rst:1119 msgid "" "Add the :attr:`.PurePath.parser` class attribute to store the implementation " "of :mod:`os.path` used for low-level path parsing and joining. This will be " "either :mod:`!posixpath` or :mod:`!ntpath`." msgstr "" -#: whatsnew/3.13.rst:1108 +#: whatsnew/3.13.rst:1124 msgid "" "Add *recurse_symlinks* keyword-only argument to :meth:`.Path.glob` and :meth:" "`~pathlib.Path.rglob`. (Contributed by Barney Gale in :gh:`77609`.)" msgstr "" -#: whatsnew/3.13.rst:1112 +#: whatsnew/3.13.rst:1128 msgid "" ":meth:`.Path.glob` and :meth:`~pathlib.Path.rglob` now return files and " "directories when given a pattern that ends with \"``**``\". Previously, only " "directories were returned. (Contributed by Barney Gale in :gh:`70303`.)" msgstr "" -#: whatsnew/3.13.rst:1117 +#: whatsnew/3.13.rst:1133 msgid "" "Add the *follow_symlinks* keyword-only argument to :meth:`Path.is_file " "`, :meth:`Path.is_dir `, :meth:`." @@ -1658,11 +1677,11 @@ msgid "" "`105793` and Kamil Turek in :gh:`107962`.)" msgstr "" -#: whatsnew/3.13.rst:1125 +#: whatsnew/3.13.rst:1141 msgid "pdb" msgstr "" -#: whatsnew/3.13.rst:1127 +#: whatsnew/3.13.rst:1143 msgid "" ":func:`breakpoint` and :func:`~pdb.set_trace` now enter the debugger " "immediately rather than on the next line of code to be executed. This change " @@ -1671,20 +1690,20 @@ msgid "" "Gao in :gh:`118579`.)" msgstr "" -#: whatsnew/3.13.rst:1133 +#: whatsnew/3.13.rst:1149 msgid "" "``sys.path[0]`` is no longer replaced by the directory of the script being " "debugged when :attr:`sys.flags.safe_path` is set. (Contributed by Tian Gao " "and Christian Walther in :gh:`111762`.)" msgstr "" -#: whatsnew/3.13.rst:1137 +#: whatsnew/3.13.rst:1153 msgid "" ":mod:`zipapp` is now supported as a debugging target. (Contributed by Tian " "Gao in :gh:`118501`.)" msgstr "" -#: whatsnew/3.13.rst:1140 +#: whatsnew/3.13.rst:1156 msgid "" "Add ability to move between chained exceptions during post-mortem debugging " "in :func:`~pdb.pm` using the new :pdbcmd:`exceptions [exc_number] " @@ -1692,101 +1711,101 @@ msgid "" "`106676`.)" msgstr "" -#: whatsnew/3.13.rst:1145 +#: whatsnew/3.13.rst:1161 msgid "" "Expressions and statements whose prefix is a pdb command are now correctly " "identified and executed. (Contributed by Tian Gao in :gh:`108464`.)" msgstr "" -#: whatsnew/3.13.rst:1151 +#: whatsnew/3.13.rst:1167 msgid "queue" msgstr "" -#: whatsnew/3.13.rst:1153 +#: whatsnew/3.13.rst:1169 msgid "" "Add :meth:`Queue.shutdown ` and :exc:`~queue.ShutDown` " "to manage queue termination. (Contributed by Laurie Opperman and Yves Duprat " "in :gh:`104750`.)" msgstr "" -#: whatsnew/3.13.rst:1159 +#: whatsnew/3.13.rst:1175 msgid "random" msgstr "" -#: whatsnew/3.13.rst:1161 +#: whatsnew/3.13.rst:1177 msgid "" "Add a :ref:`command-line interface `. (Contributed by Hugo van " "Kemenade in :gh:`118131`.)" msgstr "" -#: whatsnew/3.13.rst:1728 +#: whatsnew/3.13.rst:1744 msgid "re" msgstr "" -#: whatsnew/3.13.rst:1168 +#: whatsnew/3.13.rst:1184 msgid "" "Rename :exc:`!re.error` to :exc:`~re.PatternError` for improved clarity. :" "exc:`!re.error` is kept for backward compatibility." msgstr "" -#: whatsnew/3.13.rst:1173 +#: whatsnew/3.13.rst:1189 msgid "shutil" msgstr "" -#: whatsnew/3.13.rst:1175 +#: whatsnew/3.13.rst:1191 msgid "" "Support the *dir_fd* and *follow_symlinks* keyword arguments in :func:" "`~shutil.chown`. (Contributed by Berker Peksag and Tahia K in :gh:`62308`)" msgstr "" -#: whatsnew/3.13.rst:1181 +#: whatsnew/3.13.rst:1197 msgid "site" msgstr "" -#: whatsnew/3.13.rst:1183 +#: whatsnew/3.13.rst:1199 msgid "" ":file:`.pth` files are now decoded using UTF-8 first, and then with the :" "term:`locale encoding` if UTF-8 decoding fails. (Contributed by Inada Naoki " "in :gh:`117802`.)" msgstr "" -#: whatsnew/3.13.rst:1189 +#: whatsnew/3.13.rst:1205 msgid "sqlite3" msgstr "" -#: whatsnew/3.13.rst:1191 +#: whatsnew/3.13.rst:1207 msgid "" "A :exc:`ResourceWarning` is now emitted if a :class:`~sqlite3.Connection` " "object is not :meth:`closed ` explicitly. " "(Contributed by Erlend E. Aasland in :gh:`105539`.)" msgstr "" -#: whatsnew/3.13.rst:1195 +#: whatsnew/3.13.rst:1211 msgid "" "Add the *filter* keyword-only parameter to :meth:`.Connection.iterdump` for " "filtering database objects to dump. (Contributed by Mariusz Felisiak in :gh:" "`91602`.)" msgstr "" -#: whatsnew/3.13.rst:1201 +#: whatsnew/3.13.rst:1217 msgid "ssl" msgstr "" -#: whatsnew/3.13.rst:1203 +#: whatsnew/3.13.rst:1219 msgid "" "The :func:`~ssl.create_default_context` API now includes :data:`~ssl." "VERIFY_X509_PARTIAL_CHAIN` and :data:`~ssl.VERIFY_X509_STRICT` in its " "default flags." msgstr "" -#: whatsnew/3.13.rst:1209 +#: whatsnew/3.13.rst:1225 msgid "" ":data:`~ssl.VERIFY_X509_STRICT` may reject pre-:rfc:`5280` or malformed " "certificates that the underlying OpenSSL implementation might otherwise " "accept. Whilst disabling this is not recommended, you can do so using:" msgstr "" -#: whatsnew/3.13.rst:1214 +#: whatsnew/3.13.rst:1230 msgid "" "import ssl\n" "\n" @@ -1794,15 +1813,15 @@ msgid "" "ctx.verify_flags &= ~ssl.VERIFY_X509_STRICT" msgstr "" -#: whatsnew/3.13.rst:1221 +#: whatsnew/3.13.rst:1237 msgid "(Contributed by William Woodruff in :gh:`112389`.)" msgstr "" -#: whatsnew/3.13.rst:1225 +#: whatsnew/3.13.rst:1241 msgid "statistics" msgstr "" -#: whatsnew/3.13.rst:1227 +#: whatsnew/3.13.rst:1243 msgid "" "Add :func:`~statistics.kde` for kernel density estimation. This makes it " "possible to estimate a continuous probability density function from a fixed " @@ -1810,24 +1829,24 @@ msgid "" "`115863`.)" msgstr "" -#: whatsnew/3.13.rst:1232 +#: whatsnew/3.13.rst:1248 msgid "" "Add :func:`~statistics.kde_random` for sampling from an estimated " "probability density function created by :func:`~statistics.kde`. " "(Contributed by Raymond Hettinger in :gh:`115863`.)" msgstr "" -#: whatsnew/3.13.rst:1240 +#: whatsnew/3.13.rst:1256 msgid "subprocess" msgstr "" -#: whatsnew/3.13.rst:1242 +#: whatsnew/3.13.rst:1258 msgid "" "The :mod:`subprocess` module now uses the :func:`~os.posix_spawn` function " "in more situations." msgstr "" -#: whatsnew/3.13.rst:1245 +#: whatsnew/3.13.rst:1261 msgid "" "Notably, when *close_fds* is ``True`` (the default), :func:`~os.posix_spawn` " "will be used when the C library provides :c:func:`!" @@ -1836,7 +1855,7 @@ msgid "" "existing Linux :c:func:`!vfork` based code." msgstr "" -#: whatsnew/3.13.rst:1252 +#: whatsnew/3.13.rst:1268 msgid "" "A private control knob :attr:`!subprocess._USE_POSIX_SPAWN` can be set to " "``False`` if you need to force :mod:`subprocess` to never use :func:`~os." @@ -1846,22 +1865,22 @@ msgid "" "`113117`.)" msgstr "" -#: whatsnew/3.13.rst:1262 +#: whatsnew/3.13.rst:1278 msgid "sys" msgstr "" -#: whatsnew/3.13.rst:1264 +#: whatsnew/3.13.rst:1280 msgid "" "Add the :func:`~sys._is_interned` function to test if a string was interned. " "This function is not guaranteed to exist in all implementations of Python. " "(Contributed by Serhiy Storchaka in :gh:`78573`.)" msgstr "" -#: whatsnew/3.13.rst:1270 +#: whatsnew/3.13.rst:1286 msgid "tempfile" msgstr "" -#: whatsnew/3.13.rst:1272 +#: whatsnew/3.13.rst:1288 msgid "" "On Windows, the default mode ``0o700`` used by :func:`tempfile.mkdtemp` now " "limits access to the new directory due to changes to :func:`os.mkdir`. This " @@ -1869,11 +1888,11 @@ msgid "" "`118486`.)" msgstr "" -#: whatsnew/3.13.rst:1279 +#: whatsnew/3.13.rst:1295 msgid "time" msgstr "" -#: whatsnew/3.13.rst:1281 +#: whatsnew/3.13.rst:1297 msgid "" "On Windows, :func:`~time.monotonic` now uses the " "``QueryPerformanceCounter()`` clock for a resolution of 1 microsecond, " @@ -1881,7 +1900,7 @@ msgid "" "milliseconds. (Contributed by Victor Stinner in :gh:`88494`.)" msgstr "" -#: whatsnew/3.13.rst:1287 +#: whatsnew/3.13.rst:1303 msgid "" "On Windows, :func:`~time.time` now uses the " "``GetSystemTimePreciseAsFileTime()`` clock for a resolution of 1 " @@ -1890,11 +1909,11 @@ msgid "" "`63207`.)" msgstr "" -#: whatsnew/3.13.rst:1295 +#: whatsnew/3.13.rst:1311 msgid "tkinter" msgstr "" -#: whatsnew/3.13.rst:1297 +#: whatsnew/3.13.rst:1313 msgid "" "Add :mod:`tkinter` widget methods: :meth:`!tk_busy_hold`, :meth:`!" "tk_busy_configure`, :meth:`!tk_busy_cget`, :meth:`!tk_busy_forget`, :meth:`!" @@ -1902,7 +1921,7 @@ msgid "" "klappnase and Serhiy Storchaka in :gh:`72684`.)" msgstr "" -#: whatsnew/3.13.rst:1303 +#: whatsnew/3.13.rst:1319 msgid "" "The :mod:`tkinter` widget method :meth:`!wm_attributes` now accepts the " "attribute name without the minus prefix to get window attributes, for " @@ -1911,14 +1930,14 @@ msgid "" "wm_attributes(alpha=0.5)``. (Contributed by Serhiy Storchaka in :gh:`43457`.)" msgstr "" -#: whatsnew/3.13.rst:1310 +#: whatsnew/3.13.rst:1326 msgid "" ":meth:`!wm_attributes` can now return attributes as a :class:`dict`, by " "using the new optional keyword-only parameter *return_python_dict*. " "(Contributed by Serhiy Storchaka in :gh:`43457`.)" msgstr "" -#: whatsnew/3.13.rst:1314 +#: whatsnew/3.13.rst:1330 msgid "" ":meth:`!Text.count` can now return a simple :class:`int` when the new " "optional keyword-only parameter *return_ints* is used. Otherwise, the single " @@ -1926,27 +1945,27 @@ msgid "" "in :gh:`97928`.)" msgstr "" -#: whatsnew/3.13.rst:1319 +#: whatsnew/3.13.rst:1335 msgid "" "Support the \"vsapi\" element type in the :meth:`~tkinter.ttk.Style." "element_create` method of :class:`tkinter.ttk.Style`. (Contributed by Serhiy " "Storchaka in :gh:`68166`.)" msgstr "" -#: whatsnew/3.13.rst:1324 +#: whatsnew/3.13.rst:1340 msgid "" "Add the :meth:`!after_info` method for Tkinter widgets. (Contributed by " "Cheryl Sabella in :gh:`77020`.)" msgstr "" -#: whatsnew/3.13.rst:1327 +#: whatsnew/3.13.rst:1343 msgid "" "Add a new :meth:`!copy_replace` method to :class:`!PhotoImage` to copy a " "region from one image to another, possibly with pixel zooming, subsampling, " "or both. (Contributed by Serhiy Storchaka in :gh:`118225`.)" msgstr "" -#: whatsnew/3.13.rst:1332 +#: whatsnew/3.13.rst:1348 msgid "" "Add *from_coords* parameter to the :class:`!PhotoImage` methods :meth:`!" "copy`, :meth:`!zoom` and :meth:`!subsample`. Add *zoom* and *subsample* " @@ -1954,7 +1973,7 @@ msgid "" "Serhiy Storchaka in :gh:`118225`.)" msgstr "" -#: whatsnew/3.13.rst:1338 +#: whatsnew/3.13.rst:1354 msgid "" "Add the :class:`!PhotoImage` methods :meth:`!read` to read an image from a " "file and :meth:`!data` to get the image data. Add *background* and " @@ -1962,11 +1981,11 @@ msgid "" "Storchaka in :gh:`118271`.)" msgstr "" -#: whatsnew/3.13.rst:1346 +#: whatsnew/3.13.rst:1362 msgid "traceback" msgstr "" -#: whatsnew/3.13.rst:1348 +#: whatsnew/3.13.rst:1364 msgid "" "Add the :attr:`~traceback.TracebackException.exc_type_str` attribute to :" "class:`~traceback.TracebackException`, which holds a string display of the " @@ -1976,7 +1995,7 @@ msgid "" "(Contributed by Irit Katriel in :gh:`112332`.)" msgstr "" -#: whatsnew/3.13.rst:1357 +#: whatsnew/3.13.rst:1373 msgid "" "Add a new *show_group* keyword-only parameter to :meth:`.TracebackException." "format_exception_only` to (recursively) format the nested exceptions of a :" @@ -1984,11 +2003,11 @@ msgid "" "`105292`.)" msgstr "" -#: whatsnew/3.13.rst:1364 +#: whatsnew/3.13.rst:1380 msgid "types" msgstr "" -#: whatsnew/3.13.rst:1366 +#: whatsnew/3.13.rst:1382 msgid "" ":class:`~types.SimpleNamespace` can now take a single positional argument to " "initialise the namespace's arguments. This argument must either be a mapping " @@ -1996,63 +2015,63 @@ msgid "" "`108191`.)" msgstr "" -#: whatsnew/3.13.rst:1753 +#: whatsnew/3.13.rst:1769 msgid "typing" msgstr "" -#: whatsnew/3.13.rst:1375 +#: whatsnew/3.13.rst:1391 msgid "" ":pep:`705`: Add :data:`~typing.ReadOnly`, a special typing construct to mark " "a :class:`~typing.TypedDict` item as read-only for type checkers." msgstr "" -#: whatsnew/3.13.rst:1378 +#: whatsnew/3.13.rst:1394 msgid "" ":pep:`742`: Add :data:`~typing.TypeIs`, a typing construct that can be used " "to instruct a type checker how to narrow a type." msgstr "" -#: whatsnew/3.13.rst:1381 +#: whatsnew/3.13.rst:1397 msgid "" "Add :data:`~typing.NoDefault`, a sentinel object used to represent the " "defaults of some parameters in the :mod:`typing` module. (Contributed by " "Jelle Zijlstra in :gh:`116126`.)" msgstr "" -#: whatsnew/3.13.rst:1385 +#: whatsnew/3.13.rst:1401 msgid "" "Add :func:`~typing.get_protocol_members` to return the set of members " "defining a :class:`typing.Protocol`. (Contributed by Jelle Zijlstra in :gh:" "`104873`.)" msgstr "" -#: whatsnew/3.13.rst:1389 +#: whatsnew/3.13.rst:1405 msgid "" "Add :func:`~typing.is_protocol` to check whether a class is a :class:" "`~typing.Protocol`. (Contributed by Jelle Zijlstra in :gh:`104873`.)" msgstr "" -#: whatsnew/3.13.rst:1393 +#: whatsnew/3.13.rst:1409 msgid "" ":data:`~typing.ClassVar` can now be nested in :data:`~typing.Final`, and " "vice versa. (Contributed by Mehdi Drissi in :gh:`89547`.)" msgstr "" -#: whatsnew/3.13.rst:1399 +#: whatsnew/3.13.rst:1415 msgid "unicodedata" msgstr "" -#: whatsnew/3.13.rst:1401 +#: whatsnew/3.13.rst:1417 msgid "" "Update the Unicode database to `version 15.1.0`__. (Contributed by James " "Gerity in :gh:`109559`.)" msgstr "" -#: whatsnew/3.13.rst:1408 +#: whatsnew/3.13.rst:1424 msgid "venv" msgstr "" -#: whatsnew/3.13.rst:1410 +#: whatsnew/3.13.rst:1426 msgid "" "Add support for creating source control management (SCM) ignore files in a " "virtual environment's directory. By default, Git is supported. This is " @@ -2062,11 +2081,11 @@ msgid "" "Cannon in :gh:`108125`.)" msgstr "" -#: whatsnew/3.13.rst:1421 +#: whatsnew/3.13.rst:1437 msgid "warnings" msgstr "" -#: whatsnew/3.13.rst:1423 +#: whatsnew/3.13.rst:1439 msgid "" ":pep:`702`: The new :func:`warnings.deprecated` decorator provides a way to " "communicate deprecations to a :term:`static type checker` and to warn on " @@ -2075,62 +2094,62 @@ msgid "" "(Contributed by Jelle Zijlstra in :gh:`104003`.)" msgstr "" -#: whatsnew/3.13.rst:1432 +#: whatsnew/3.13.rst:1448 msgid "xml" msgstr "" -#: whatsnew/3.13.rst:1434 +#: whatsnew/3.13.rst:1450 msgid "" "Allow controlling Expat >=2.6.0 reparse deferral (:cve:`2023-52425`) by " "adding five new methods:" msgstr "" -#: whatsnew/3.13.rst:1437 +#: whatsnew/3.13.rst:1453 msgid ":meth:`xml.etree.ElementTree.XMLParser.flush`" msgstr "" -#: whatsnew/3.13.rst:1438 +#: whatsnew/3.13.rst:1454 msgid ":meth:`xml.etree.ElementTree.XMLPullParser.flush`" msgstr "" -#: whatsnew/3.13.rst:1439 +#: whatsnew/3.13.rst:1455 msgid ":meth:`xml.parsers.expat.xmlparser.GetReparseDeferralEnabled`" msgstr "" -#: whatsnew/3.13.rst:1440 +#: whatsnew/3.13.rst:1456 msgid ":meth:`xml.parsers.expat.xmlparser.SetReparseDeferralEnabled`" msgstr "" -#: whatsnew/3.13.rst:1441 +#: whatsnew/3.13.rst:1457 msgid ":meth:`!xml.sax.expatreader.ExpatParser.flush`" msgstr "" -#: whatsnew/3.13.rst:1443 +#: whatsnew/3.13.rst:1459 msgid "(Contributed by Sebastian Pipping in :gh:`115623`.)" msgstr "" -#: whatsnew/3.13.rst:1445 +#: whatsnew/3.13.rst:1461 msgid "" "Add the :meth:`!close` method for the iterator returned by :func:`~xml.etree." "ElementTree.iterparse` for explicit cleanup. (Contributed by Serhiy " "Storchaka in :gh:`69893`.)" msgstr "" -#: whatsnew/3.13.rst:1451 +#: whatsnew/3.13.rst:1467 msgid "zipimport" msgstr "" -#: whatsnew/3.13.rst:1453 +#: whatsnew/3.13.rst:1469 msgid "" "Add support for ZIP64_ format files. Everybody loves huge data, right? " "(Contributed by Tim Hatch in :gh:`94146`.)" msgstr "" -#: whatsnew/3.13.rst:1461 +#: whatsnew/3.13.rst:1477 msgid "Optimizations" msgstr "" -#: whatsnew/3.13.rst:1463 +#: whatsnew/3.13.rst:1479 msgid "" "Several standard library modules have had their import times significantly " "improved. For example, the import time of the :mod:`typing` module has been " @@ -2141,13 +2160,13 @@ msgid "" "Turner, Daniel Hollas, and others in :gh:`109653`.)" msgstr "" -#: whatsnew/3.13.rst:1474 +#: whatsnew/3.13.rst:1490 msgid "" ":func:`textwrap.indent` is now around 30% faster than before for large " "input. (Contributed by Inada Naoki in :gh:`107369`.)" msgstr "" -#: whatsnew/3.13.rst:1477 +#: whatsnew/3.13.rst:1493 msgid "" "The :mod:`subprocess` module now uses the :func:`~os.posix_spawn` function " "in more situations, including when *close_fds* is ``True`` (the default) on " @@ -2157,15 +2176,15 @@ msgid "" "Kulik in :gh:`113117`.)" msgstr "" -#: whatsnew/3.13.rst:1487 +#: whatsnew/3.13.rst:1503 msgid "Removed Modules And APIs" msgstr "" -#: whatsnew/3.13.rst:1493 +#: whatsnew/3.13.rst:1509 msgid "PEP 594: Remove \"dead batteries\" from the standard library" msgstr "" -#: whatsnew/3.13.rst:1495 +#: whatsnew/3.13.rst:1511 msgid "" ":pep:`594` proposed removing 19 modules from the standard library, " "colloquially referred to as 'dead batteries' due to their historic, " @@ -2173,38 +2192,38 @@ msgid "" "in Python 3.11, and are now removed:" msgstr "" -#: whatsnew/3.13.rst:1501 +#: whatsnew/3.13.rst:1517 msgid ":mod:`!aifc`" msgstr "" -#: whatsnew/3.13.rst:1503 +#: whatsnew/3.13.rst:1519 msgid "" ":pypi:`standard-aifc`: Use the redistribution of ``aifc`` library from PyPI." msgstr "" -#: whatsnew/3.13.rst:1506 +#: whatsnew/3.13.rst:1522 msgid ":mod:`!audioop`" msgstr "" -#: whatsnew/3.13.rst:1508 +#: whatsnew/3.13.rst:1524 msgid ":pypi:`audioop-lts`: Use ``audioop-lts`` library from PyPI." msgstr "" -#: whatsnew/3.13.rst:1511 +#: whatsnew/3.13.rst:1527 msgid ":mod:`!chunk`" msgstr "" -#: whatsnew/3.13.rst:1513 +#: whatsnew/3.13.rst:1529 msgid "" ":pypi:`standard-chunk`: Use the redistribution of ``chunk`` library from " "PyPI." msgstr "" -#: whatsnew/3.13.rst:1516 +#: whatsnew/3.13.rst:1532 msgid ":mod:`!cgi` and :mod:`!cgitb`" msgstr "" -#: whatsnew/3.13.rst:1518 +#: whatsnew/3.13.rst:1534 msgid "" ":class:`!cgi.FieldStorage` can typically be replaced with :func:`urllib." "parse.parse_qsl` for ``GET`` and ``HEAD`` requests, and the :mod:`email." @@ -2212,7 +2231,7 @@ msgid "" "requests." msgstr "" -#: whatsnew/3.13.rst:1523 +#: whatsnew/3.13.rst:1539 msgid "" ":func:`!cgi.parse` can be replaced by calling :func:`urllib.parse.parse_qs` " "directly on the desired query string, unless the input is ``multipart/form-" @@ -2220,14 +2239,14 @@ msgid "" "parse_multipart`." msgstr "" -#: whatsnew/3.13.rst:1528 +#: whatsnew/3.13.rst:1544 msgid "" ":func:`!cgi.parse_header` can be replaced with the functionality in the :mod:" "`email` package, which implements the same MIME RFCs. For example, with :" "class:`email.message.EmailMessage`:" msgstr "" -#: whatsnew/3.13.rst:1532 +#: whatsnew/3.13.rst:1548 msgid "" "from email.message import EmailMessage\n" "\n" @@ -2236,7 +2255,7 @@ msgid "" "main, params = msg.get_content_type(), msg['content-type'].params" msgstr "" -#: whatsnew/3.13.rst:1540 +#: whatsnew/3.13.rst:1556 msgid "" ":func:`!cgi.parse_multipart` can be replaced with the functionality in the :" "mod:`email` package, which implements the same MIME RFCs, or with the :pypi:" @@ -2244,54 +2263,54 @@ msgid "" "and :class:`email.message.Message` classes." msgstr "" -#: whatsnew/3.13.rst:1546 +#: whatsnew/3.13.rst:1562 msgid "" ":pypi:`standard-cgi`: and :pypi:`standard-cgitb`: Use the redistribution of " "``cgi`` and ``cgitb`` library from PyPI." msgstr "" -#: whatsnew/3.13.rst:1549 +#: whatsnew/3.13.rst:1565 msgid "" ":mod:`!crypt` and the private :mod:`!_crypt` extension. The :mod:`hashlib` " "module may be an appropriate replacement when simply hashing a value is " "required. Otherwise, various third-party libraries on PyPI are available:" msgstr "" -#: whatsnew/3.13.rst:1554 +#: whatsnew/3.13.rst:1570 msgid "" ":pypi:`bcrypt`: Modern password hashing for your software and your servers." msgstr "" -#: whatsnew/3.13.rst:1556 +#: whatsnew/3.13.rst:1572 msgid "" ":pypi:`passlib`: Comprehensive password hashing framework supporting over 30 " "schemes." msgstr "" -#: whatsnew/3.13.rst:1558 +#: whatsnew/3.13.rst:1574 msgid ":pypi:`argon2-cffi`: The secure Argon2 password hashing algorithm." msgstr "" -#: whatsnew/3.13.rst:1560 +#: whatsnew/3.13.rst:1576 msgid "" ":pypi:`legacycrypt`: :mod:`ctypes` wrapper to the POSIX crypt library call " "and associated functionality." msgstr "" -#: whatsnew/3.13.rst:1563 +#: whatsnew/3.13.rst:1579 msgid "" ":pypi:`crypt_r`: Fork of the :mod:`!crypt` module, wrapper to the :manpage:" "`crypt_r(3)` library call and associated functionality." msgstr "" -#: whatsnew/3.13.rst:1567 +#: whatsnew/3.13.rst:1583 msgid "" ":pypi:`standard-crypt` and :pypi:`deprecated-crypt-alternative`: Use the " "redistribution of ``crypt`` and reimplementation of ``_crypt`` libraries " "from PyPI." msgstr "" -#: whatsnew/3.13.rst:1570 +#: whatsnew/3.13.rst:1586 msgid "" ":mod:`!imghdr`: The :pypi:`filetype`, :pypi:`puremagic`, or :pypi:`python-" "magic` libraries should be used as replacements. For example, the :func:`!" @@ -2299,138 +2318,138 @@ msgid "" "function for all file formats that were supported by :mod:`!imghdr`." msgstr "" -#: whatsnew/3.13.rst:1577 +#: whatsnew/3.13.rst:1593 msgid "" ":pypi:`standard-imghdr`: Use the redistribution of ``imghdr`` library from " "PyPI." msgstr "" -#: whatsnew/3.13.rst:1580 +#: whatsnew/3.13.rst:1596 msgid ":mod:`!mailcap`: Use the :mod:`mimetypes` module instead." msgstr "" -#: whatsnew/3.13.rst:1583 +#: whatsnew/3.13.rst:1599 msgid "" ":pypi:`standard-mailcap`: Use the redistribution of ``mailcap`` library from " "PyPI." msgstr "" -#: whatsnew/3.13.rst:1586 +#: whatsnew/3.13.rst:1602 msgid ":mod:`!msilib`" msgstr "" -#: whatsnew/3.13.rst:1587 +#: whatsnew/3.13.rst:1603 msgid ":mod:`!nis`" msgstr "" -#: whatsnew/3.13.rst:1588 +#: whatsnew/3.13.rst:1604 msgid ":mod:`!nntplib`: Use the :pypi:`pynntp` library from PyPI instead." msgstr "" -#: whatsnew/3.13.rst:1591 +#: whatsnew/3.13.rst:1607 msgid "" ":pypi:`standard-nntplib`: Use the redistribution of ``nntplib`` library from " "PyPI." msgstr "" -#: whatsnew/3.13.rst:1594 +#: whatsnew/3.13.rst:1610 msgid "" ":mod:`!ossaudiodev`: For audio playback, use the :pypi:`pygame` library from " "PyPI instead." msgstr "" -#: whatsnew/3.13.rst:1596 +#: whatsnew/3.13.rst:1612 msgid "" ":mod:`!pipes`: Use the :mod:`subprocess` module instead. Use :func:`shlex." "quote` to replace the undocumented ``pipes.quote`` function." msgstr "" -#: whatsnew/3.13.rst:1601 +#: whatsnew/3.13.rst:1617 msgid "" ":pypi:`standard-pipes`: Use the redistribution of ``pipes`` library from " "PyPI." msgstr "" -#: whatsnew/3.13.rst:1604 +#: whatsnew/3.13.rst:1620 msgid "" ":mod:`!sndhdr`: The :pypi:`filetype`, :pypi:`puremagic`, or :pypi:`python-" "magic` libraries should be used as replacements." msgstr "" -#: whatsnew/3.13.rst:1608 +#: whatsnew/3.13.rst:1624 msgid "" ":pypi:`standard-sndhdr`: Use the redistribution of ``sndhdr`` library from " "PyPI." msgstr "" -#: whatsnew/3.13.rst:1611 +#: whatsnew/3.13.rst:1627 msgid ":mod:`!spwd`: Use the :pypi:`python-pam` library from PyPI instead." msgstr "" -#: whatsnew/3.13.rst:1613 +#: whatsnew/3.13.rst:1629 msgid ":mod:`!sunau`" msgstr "" -#: whatsnew/3.13.rst:1615 +#: whatsnew/3.13.rst:1631 msgid "" ":pypi:`standard-sunau`: Use the redistribution of ``sunau`` library from " "PyPI." msgstr "" -#: whatsnew/3.13.rst:1618 +#: whatsnew/3.13.rst:1634 msgid "" ":mod:`!telnetlib`, Use the :pypi:`telnetlib3` or :pypi:`Exscript` libraries " "from PyPI instead." msgstr "" -#: whatsnew/3.13.rst:1621 +#: whatsnew/3.13.rst:1637 msgid "" ":pypi:`standard-telnetlib`: Use the redistribution of ``telnetlib`` library " "from PyPI." msgstr "" -#: whatsnew/3.13.rst:1624 +#: whatsnew/3.13.rst:1640 msgid "" ":mod:`!uu`: Use the :mod:`base64` module instead, as a modern alternative." msgstr "" -#: whatsnew/3.13.rst:1627 +#: whatsnew/3.13.rst:1643 msgid "" ":pypi:`standard-uu`: Use the redistribution of ``uu`` library from PyPI." msgstr "" -#: whatsnew/3.13.rst:1630 +#: whatsnew/3.13.rst:1646 msgid ":mod:`!xdrlib`" msgstr "" -#: whatsnew/3.13.rst:1632 +#: whatsnew/3.13.rst:1648 msgid "" ":pypi:`standard-xdrlib`: Use the redistribution of ``xdrlib`` library from " "PyPI." msgstr "" -#: whatsnew/3.13.rst:1635 +#: whatsnew/3.13.rst:1651 msgid "" "(Contributed by Victor Stinner and Zachary Ware in :gh:`104773` and :gh:" "`104780`.)" msgstr "" -#: whatsnew/3.13.rst:1639 +#: whatsnew/3.13.rst:1655 msgid "2to3" msgstr "" -#: whatsnew/3.13.rst:1641 +#: whatsnew/3.13.rst:1657 msgid "" "Remove the :program:`2to3` program and the :mod:`!lib2to3` module, " "previously deprecated in Python 3.11. (Contributed by Victor Stinner in :gh:" "`104780`.)" msgstr "" -#: whatsnew/3.13.rst:1647 +#: whatsnew/3.13.rst:1663 msgid "builtins" msgstr "" -#: whatsnew/3.13.rst:1649 +#: whatsnew/3.13.rst:1665 msgid "" "Remove support for chained :class:`classmethod` descriptors (introduced in :" "gh:`63272`). These can no longer be used to wrap other descriptors, such as :" @@ -2440,47 +2459,47 @@ msgid "" "(Contributed by Raymond Hettinger in :gh:`89519`.)" msgstr "" -#: whatsnew/3.13.rst:1658 +#: whatsnew/3.13.rst:1674 msgid "" "Raise a :exc:`RuntimeError` when calling :meth:`frame.clear` on a suspended " "frame (as has always been the case for an executing frame). (Contributed by " "Irit Katriel in :gh:`79932`.)" msgstr "" -#: whatsnew/3.13.rst:1666 +#: whatsnew/3.13.rst:1682 msgid "" "Remove the undocumented :class:`!LegacyInterpolation` class, deprecated in " "the docstring since Python 3.2, and at runtime since Python 3.11. " "(Contributed by Hugo van Kemenade in :gh:`104886`.)" msgstr "" -#: whatsnew/3.13.rst:1673 +#: whatsnew/3.13.rst:1689 msgid "importlib.metadata" msgstr "" -#: whatsnew/3.13.rst:1675 +#: whatsnew/3.13.rst:1691 msgid "" "Remove deprecated subscript (:meth:`~object.__getitem__`) access for :ref:" "`EntryPoint ` objects. (Contributed by Jason R. Coombs in :gh:" "`113175`.)" msgstr "" -#: whatsnew/3.13.rst:1681 +#: whatsnew/3.13.rst:1697 msgid "locale" msgstr "" -#: whatsnew/3.13.rst:1683 +#: whatsnew/3.13.rst:1699 msgid "" "Remove the :func:`!locale.resetlocale` function, deprecated in Python 3.11. " "Use ``locale.setlocale(locale.LC_ALL, \"\")`` instead. (Contributed by " "Victor Stinner in :gh:`104783`.)" msgstr "" -#: whatsnew/3.13.rst:1689 +#: whatsnew/3.13.rst:1705 msgid "opcode" msgstr "" -#: whatsnew/3.13.rst:1691 +#: whatsnew/3.13.rst:1707 msgid "" "Move :attr:`!opcode.ENABLE_SPECIALIZATION` to :attr:`!_opcode." "ENABLE_SPECIALIZATION`. This field was added in 3.12, it was never " @@ -2488,7 +2507,7 @@ msgid "" "Katriel in :gh:`105481`.)" msgstr "" -#: whatsnew/3.13.rst:1696 +#: whatsnew/3.13.rst:1712 msgid "" "Remove :func:`!opcode.is_pseudo`, :attr:`!opcode.MIN_PSEUDO_OPCODE`, and :" "attr:`!opcode.MAX_PSEUDO_OPCODE`, which were added in Python 3.12, but were " @@ -2496,11 +2515,11 @@ msgid "" "be used externally. (Contributed by Irit Katriel in :gh:`105481`.)" msgstr "" -#: whatsnew/3.13.rst:1704 +#: whatsnew/3.13.rst:1720 msgid "optparse" msgstr "" -#: whatsnew/3.13.rst:1706 +#: whatsnew/3.13.rst:1722 msgid "" "This module is no longer considered :term:`soft deprecated`. While :mod:" "`argparse` remains preferred for new projects that aren't using a third " @@ -2513,43 +2532,43 @@ msgid "" "(Contributed by Alyssa Coghlan and Serhiy Storchaka in :gh:`126180`.)" msgstr "" -#: whatsnew/3.13.rst:1722 +#: whatsnew/3.13.rst:1738 msgid "" "Remove the ability to use :class:`~pathlib.Path` objects as context " "managers. This functionality was deprecated and has had no effect since " "Python 3.9. (Contributed by Barney Gale in :gh:`83863`.)" msgstr "" -#: whatsnew/3.13.rst:1730 +#: whatsnew/3.13.rst:1746 msgid "" "Remove the undocumented, deprecated, and broken :func:`!re.template` " "function and :attr:`!re.TEMPLATE` / :attr:`!re.T` flag. (Contributed by " "Serhiy Storchaka and Nikita Sobolev in :gh:`105687`.)" msgstr "" -#: whatsnew/3.13.rst:1736 +#: whatsnew/3.13.rst:1752 msgid "tkinter.tix" msgstr "" -#: whatsnew/3.13.rst:1738 +#: whatsnew/3.13.rst:1754 msgid "" "Remove the :mod:`!tkinter.tix` module, deprecated in Python 3.6. The third-" "party Tix library which the module wrapped is unmaintained. (Contributed by " "Zachary Ware in :gh:`75552`.)" msgstr "" -#: whatsnew/3.13.rst:1744 +#: whatsnew/3.13.rst:1760 msgid "turtle" msgstr "" -#: whatsnew/3.13.rst:1746 +#: whatsnew/3.13.rst:1762 msgid "" "Remove the :meth:`!RawTurtle.settiltangle` method, deprecated in the " "documentation since Python 3.1 and at runtime since Python 3.11. " "(Contributed by Hugo van Kemenade in :gh:`104876`.)" msgstr "" -#: whatsnew/3.13.rst:1755 +#: whatsnew/3.13.rst:1771 msgid "" "Remove the :mod:`!typing.io` and :mod:`!typing.re` namespaces, deprecated " "since Python 3.8. The items in those namespaces can be imported directly " @@ -2557,66 +2576,66 @@ msgid "" "`92871`.)" msgstr "" -#: whatsnew/3.13.rst:1761 +#: whatsnew/3.13.rst:1777 msgid "" "Remove the keyword-argument method of creating :class:`~typing.TypedDict` " "types, deprecated in Python 3.11. (Contributed by Tomas Roun in :gh:" "`104786`.)" msgstr "" -#: whatsnew/3.13.rst:1767 +#: whatsnew/3.13.rst:1783 msgid "unittest" msgstr "" -#: whatsnew/3.13.rst:1769 +#: whatsnew/3.13.rst:1785 msgid "" "Remove the following :mod:`unittest` functions, deprecated in Python 3.11:" msgstr "" -#: whatsnew/3.13.rst:1771 +#: whatsnew/3.13.rst:1787 msgid ":func:`!unittest.findTestCases`" msgstr "" -#: whatsnew/3.13.rst:1772 +#: whatsnew/3.13.rst:1788 msgid ":func:`!unittest.makeSuite`" msgstr "" -#: whatsnew/3.13.rst:1773 +#: whatsnew/3.13.rst:1789 msgid ":func:`!unittest.getTestCaseNames`" msgstr "" -#: whatsnew/3.13.rst:1775 +#: whatsnew/3.13.rst:1791 msgid "Use :class:`~unittest.TestLoader` methods instead:" msgstr "" -#: whatsnew/3.13.rst:1777 +#: whatsnew/3.13.rst:1793 msgid ":meth:`~unittest.TestLoader.loadTestsFromModule`" msgstr "" -#: whatsnew/3.13.rst:1778 +#: whatsnew/3.13.rst:1794 msgid ":meth:`~unittest.TestLoader.loadTestsFromTestCase`" msgstr "" -#: whatsnew/3.13.rst:1779 +#: whatsnew/3.13.rst:1795 msgid ":meth:`~unittest.TestLoader.getTestCaseNames`" msgstr "" -#: whatsnew/3.13.rst:1781 +#: whatsnew/3.13.rst:1797 msgid "(Contributed by Hugo van Kemenade in :gh:`104835`.)" msgstr "" -#: whatsnew/3.13.rst:1783 +#: whatsnew/3.13.rst:1799 msgid "" "Remove the untested and undocumented :meth:`!TestProgram.usageExit` method, " "deprecated in Python 3.11. (Contributed by Hugo van Kemenade in :gh:" "`104992`.)" msgstr "" -#: whatsnew/3.13.rst:1789 +#: whatsnew/3.13.rst:1805 msgid "urllib" msgstr "" -#: whatsnew/3.13.rst:1791 +#: whatsnew/3.13.rst:1807 msgid "" "Remove the *cafile*, *capath*, and *cadefault* parameters of the :func:" "`urllib.request.urlopen` function, deprecated in Python 3.6. Use the " @@ -2627,33 +2646,33 @@ msgid "" "Victor Stinner in :gh:`105382`.)" msgstr "" -#: whatsnew/3.13.rst:1802 +#: whatsnew/3.13.rst:1818 msgid "webbrowser" msgstr "" -#: whatsnew/3.13.rst:1804 +#: whatsnew/3.13.rst:1820 msgid "" "Remove the untested and undocumented :class:`!MacOSX` class, deprecated in " "Python 3.11. Use the :class:`!MacOSXOSAScript` class (introduced in Python " "3.2) instead. (Contributed by Hugo van Kemenade in :gh:`104804`.)" msgstr "" -#: whatsnew/3.13.rst:1809 +#: whatsnew/3.13.rst:1825 msgid "" "Remove the deprecated :attr:`!MacOSXOSAScript._name` attribute. Use the :" "attr:`MacOSXOSAScript.name ` attribute instead. " "(Contributed by Nikita Sobolev in :gh:`105546`.)" msgstr "" -#: whatsnew/3.13.rst:1816 +#: whatsnew/3.13.rst:1832 msgid "New Deprecations" msgstr "" -#: whatsnew/3.13.rst:1818 +#: whatsnew/3.13.rst:1834 msgid ":ref:`User-defined functions `:" msgstr "" -#: whatsnew/3.13.rst:1820 +#: whatsnew/3.13.rst:1836 msgid "" "Deprecate assignment to a function's :attr:`~function.__code__` attribute, " "where the new code object's type does not match the function's type. The " @@ -2661,11 +2680,11 @@ msgid "" "coroutine. (Contributed by Irit Katriel in :gh:`81137`.)" msgstr "" -#: whatsnew/3.13.rst:1826 deprecations/pending-removal-in-3.16.rst:11 +#: whatsnew/3.13.rst:1842 deprecations/pending-removal-in-3.16.rst:11 msgid ":mod:`array`:" msgstr "" -#: whatsnew/3.13.rst:1828 +#: whatsnew/3.13.rst:1844 msgid "" "Deprecate the ``'u'`` format code (:c:type:`wchar_t`) at runtime. This " "format code has been deprecated in documentation since Python 3.3, and will " @@ -2674,60 +2693,60 @@ msgid "" "`80480`.)" msgstr "" -#: whatsnew/3.13.rst:1835 deprecations/pending-removal-in-3.15.rst:16 +#: whatsnew/3.13.rst:1851 deprecations/pending-removal-in-3.15.rst:16 msgid ":mod:`ctypes`:" msgstr "" -#: whatsnew/3.13.rst:1837 +#: whatsnew/3.13.rst:1853 msgid "" "Deprecate the undocumented :func:`!SetPointerType` function, to be removed " "in Python 3.15. (Contributed by Victor Stinner in :gh:`105733`.)" msgstr "" -#: whatsnew/3.13.rst:1841 +#: whatsnew/3.13.rst:1857 msgid "" ":term:`Soft-deprecate ` the :func:`~ctypes.ARRAY` function " "in favour of ``type * length`` multiplication. (Contributed by Victor " "Stinner in :gh:`105733`.)" msgstr "" -#: whatsnew/3.13.rst:1845 +#: whatsnew/3.13.rst:1861 msgid ":mod:`decimal`:" msgstr "" -#: whatsnew/3.13.rst:1847 +#: whatsnew/3.13.rst:1863 msgid "" "Deprecate the non-standard and undocumented :class:`~decimal.Decimal` format " "specifier ``'N'``, which is only supported in the :mod:`!decimal` module's C " "implementation. (Contributed by Serhiy Storchaka in :gh:`89902`.)" msgstr "" -#: whatsnew/3.13.rst:1852 +#: whatsnew/3.13.rst:1868 msgid ":mod:`dis`:" msgstr "" -#: whatsnew/3.13.rst:1854 +#: whatsnew/3.13.rst:1870 msgid "" "Deprecate the :attr:`!HAVE_ARGUMENT` separator. Check membership in :data:" "`~dis.hasarg` instead. (Contributed by Irit Katriel in :gh:`109319`.)" msgstr "" -#: whatsnew/3.13.rst:1858 +#: whatsnew/3.13.rst:1874 msgid ":mod:`gettext`:" msgstr "" -#: whatsnew/3.13.rst:1860 +#: whatsnew/3.13.rst:1876 msgid "" "Deprecate non-integer numbers as arguments to functions and methods that " "consider plural forms in the :mod:`!gettext` module, even if no translation " "was found. (Contributed by Serhiy Storchaka in :gh:`88434`.)" msgstr "" -#: whatsnew/3.13.rst:1865 +#: whatsnew/3.13.rst:1881 msgid ":mod:`glob`:" msgstr "" -#: whatsnew/3.13.rst:1867 +#: whatsnew/3.13.rst:1883 msgid "" "Deprecate the undocumented :func:`!glob0` and :func:`!glob1` functions. Use :" "func:`~glob.glob` and pass a :term:`path-like object` specifying the root " @@ -2735,11 +2754,11 @@ msgid "" "in :gh:`117337`.)" msgstr "" -#: whatsnew/3.13.rst:1872 deprecations/pending-removal-in-3.15.rst:21 +#: whatsnew/3.13.rst:1888 deprecations/pending-removal-in-3.15.rst:21 msgid ":mod:`http.server`:" msgstr "" -#: whatsnew/3.13.rst:1874 +#: whatsnew/3.13.rst:1890 msgid "" "Deprecate :class:`~http.server.CGIHTTPRequestHandler`, to be removed in " "Python 3.15. Process-based CGI HTTP servers have been out of favor for a " @@ -2748,29 +2767,29 @@ msgid "" "by Gregory P. Smith in :gh:`109096`.)" msgstr "" -#: whatsnew/3.13.rst:1881 +#: whatsnew/3.13.rst:1897 msgid "" "Deprecate the :option:`!--cgi` flag to the :program:`python -m http.server` " "command-line interface, to be removed in Python 3.15. (Contributed by " "Gregory P. Smith in :gh:`109096`.)" msgstr "" -#: whatsnew/3.13.rst:1886 deprecations/pending-removal-in-3.16.rst:70 +#: whatsnew/3.13.rst:1902 deprecations/pending-removal-in-3.16.rst:70 msgid ":mod:`mimetypes`:" msgstr "" -#: whatsnew/3.13.rst:1888 +#: whatsnew/3.13.rst:1904 msgid "" ":term:`Soft-deprecate ` file path arguments to :func:" "`~mimetypes.guess_type`, use :func:`~mimetypes.guess_file_type` instead. " "(Contributed by Serhiy Storchaka in :gh:`66543`.)" msgstr "" -#: whatsnew/3.13.rst:1893 +#: whatsnew/3.13.rst:1909 msgid ":mod:`re`:" msgstr "" -#: whatsnew/3.13.rst:1895 +#: whatsnew/3.13.rst:1911 msgid "" "Deprecate passing the optional *maxsplit*, *count*, or *flags* arguments as " "positional arguments to the module-level :func:`~re.split`, :func:`~re.sub`, " @@ -2779,43 +2798,43 @@ msgid "" "by Serhiy Storchaka in :gh:`56166`.)" msgstr "" -#: whatsnew/3.13.rst:1902 deprecations/pending-removal-in-3.15.rst:46 +#: whatsnew/3.13.rst:1918 deprecations/pending-removal-in-3.15.rst:46 msgid ":mod:`pathlib`:" msgstr "" -#: whatsnew/3.13.rst:1904 +#: whatsnew/3.13.rst:1920 msgid "" "Deprecate :meth:`.PurePath.is_reserved`, to be removed in Python 3.15. Use :" "func:`os.path.isreserved` to detect reserved paths on Windows. (Contributed " "by Barney Gale in :gh:`88569`.)" msgstr "" -#: whatsnew/3.13.rst:1909 deprecations/pending-removal-in-3.15.rst:52 +#: whatsnew/3.13.rst:1925 deprecations/pending-removal-in-3.15.rst:52 msgid ":mod:`platform`:" msgstr "" -#: whatsnew/3.13.rst:1911 +#: whatsnew/3.13.rst:1927 msgid "" "Deprecate :func:`~platform.java_ver`, to be removed in Python 3.15. This " "function is only useful for Jython support, has a confusing API, and is " "largely untested. (Contributed by Nikita Sobolev in :gh:`116349`.)" msgstr "" -#: whatsnew/3.13.rst:1917 +#: whatsnew/3.13.rst:1933 msgid ":mod:`pydoc`:" msgstr "" -#: whatsnew/3.13.rst:1919 +#: whatsnew/3.13.rst:1935 msgid "" "Deprecate the undocumented :func:`!ispackage` function. (Contributed by " "Zackery Spytz in :gh:`64020`.)" msgstr "" -#: whatsnew/3.13.rst:1922 deprecations/pending-removal-in-3.14.rst:91 +#: whatsnew/3.13.rst:1938 deprecations/pending-removal-in-3.14.rst:91 msgid ":mod:`sqlite3`:" msgstr "" -#: whatsnew/3.13.rst:1924 +#: whatsnew/3.13.rst:1940 msgid "" "Deprecate passing more than one positional argument to the :func:`~sqlite3." "connect` function and the :class:`~sqlite3.Connection` constructor. The " @@ -2823,7 +2842,7 @@ msgid "" "by Erlend E. Aasland in :gh:`107948`.)" msgstr "" -#: whatsnew/3.13.rst:1930 +#: whatsnew/3.13.rst:1946 msgid "" "Deprecate passing name, number of arguments, and the callable as keyword " "arguments for :meth:`.Connection.create_function` and :meth:`.Connection." @@ -2831,7 +2850,7 @@ msgid "" "3.15. (Contributed by Erlend E. Aasland in :gh:`108278`.)" msgstr "" -#: whatsnew/3.13.rst:1936 +#: whatsnew/3.13.rst:1952 msgid "" "Deprecate passing the callback callable by keyword for the :meth:`~sqlite3." "Connection.set_authorizer`, :meth:`~sqlite3.Connection." @@ -2841,44 +2860,44 @@ msgid "" "`108278`.)" msgstr "" -#: whatsnew/3.13.rst:1944 deprecations/pending-removal-in-3.16.rst:90 +#: whatsnew/3.13.rst:1960 deprecations/pending-removal-in-3.16.rst:90 msgid ":mod:`sys`:" msgstr "" -#: whatsnew/3.13.rst:1946 +#: whatsnew/3.13.rst:1962 msgid "" "Deprecate the :func:`~sys._enablelegacywindowsfsencoding` function, to be " "removed in Python 3.16. Use the :envvar:`PYTHONLEGACYWINDOWSFSENCODING` " "environment variable instead. (Contributed by Inada Naoki in :gh:`73427`.)" msgstr "" -#: whatsnew/3.13.rst:1951 deprecations/pending-removal-in-3.16.rst:102 +#: whatsnew/3.13.rst:1967 deprecations/pending-removal-in-3.16.rst:102 msgid ":mod:`tarfile`:" msgstr "" -#: whatsnew/3.13.rst:1953 +#: whatsnew/3.13.rst:1969 msgid "" "Deprecate the undocumented and unused :attr:`!TarFile.tarfile` attribute, to " "be removed in Python 3.16. (Contributed in :gh:`115256`.)" msgstr "" -#: whatsnew/3.13.rst:1957 +#: whatsnew/3.13.rst:1973 msgid ":mod:`traceback`:" msgstr "" -#: whatsnew/3.13.rst:1959 +#: whatsnew/3.13.rst:1975 msgid "" "Deprecate the :attr:`.TracebackException.exc_type` attribute. Use :attr:`." "TracebackException.exc_type_str` instead. (Contributed by Irit Katriel in :" "gh:`112332`.)" msgstr "" -#: whatsnew/3.13.rst:1963 deprecations/pending-removal-in-3.15.rst:80 +#: whatsnew/3.13.rst:1979 deprecations/pending-removal-in-3.15.rst:80 #: deprecations/pending-removal-in-3.17.rst:4 msgid ":mod:`typing`:" msgstr "" -#: whatsnew/3.13.rst:1965 +#: whatsnew/3.13.rst:1981 msgid "" "Deprecate the undocumented keyword argument syntax for creating :class:" "`~typing.NamedTuple` classes (e.g. ``Point = NamedTuple(\"Point\", x=int, " @@ -2886,7 +2905,7 @@ msgid "" "functional syntax instead. (Contributed by Alex Waygood in :gh:`105566`.)" msgstr "" -#: whatsnew/3.13.rst:1972 +#: whatsnew/3.13.rst:1988 msgid "" "Deprecate omitting the *fields* parameter when creating a :class:`~typing." "NamedTuple` or :class:`typing.TypedDict` class, and deprecate passing " @@ -2898,7 +2917,7 @@ msgid "" "Alex Waygood in :gh:`105566` and :gh:`105570`.)" msgstr "" -#: whatsnew/3.13.rst:1982 +#: whatsnew/3.13.rst:1998 msgid "" "Deprecate the :func:`typing.no_type_check_decorator` decorator function, to " "be removed in in Python 3.15. After eight years in the :mod:`typing` module, " @@ -2906,7 +2925,7 @@ msgid "" "Waygood in :gh:`106309`.)" msgstr "" -#: whatsnew/3.13.rst:1988 +#: whatsnew/3.13.rst:2004 msgid "" "Deprecate :data:`typing.AnyStr`. In Python 3.16, it will be removed from " "``typing.__all__``, and a :exc:`DeprecationWarning` will be emitted at " @@ -2915,11 +2934,11 @@ msgid "" "(Contributed by Michael The in :gh:`107116`.)" msgstr "" -#: whatsnew/3.13.rst:1996 deprecations/pending-removal-in-3.15.rst:93 +#: whatsnew/3.13.rst:2012 deprecations/pending-removal-in-3.15.rst:100 msgid ":mod:`wave`:" msgstr "" -#: whatsnew/3.13.rst:1998 +#: whatsnew/3.13.rst:2014 msgid "" "Deprecate the :meth:`~wave.Wave_read.getmark`, :meth:`!setmark`, and :meth:" "`~wave.Wave_read.getmarkers` methods of the :class:`~wave.Wave_read` and :" @@ -3240,23 +3259,32 @@ msgstr "" #: deprecations/pending-removal-in-3.15.rst:88 msgid "" +"When using the functional syntax of :class:`~typing.TypedDict`\\s, failing " +"to pass a value to the *fields* parameter (``TD = TypedDict(\"TD\")``) or " +"passing ``None`` (``TD = TypedDict(\"TD\", None)``) has been deprecated " +"since Python 3.13. Use ``class TD(TypedDict): pass`` or ``TD = " +"TypedDict(\"TD\", {})`` to create a TypedDict with zero field." +msgstr "" + +#: deprecations/pending-removal-in-3.15.rst:95 +msgid "" "The :func:`typing.no_type_check_decorator` decorator function has been " "deprecated since Python 3.13. After eight years in the :mod:`typing` module, " "it has yet to be supported by any major type checker." msgstr "" -#: deprecations/pending-removal-in-3.15.rst:95 +#: deprecations/pending-removal-in-3.15.rst:102 msgid "" "The :meth:`~wave.Wave_read.getmark`, :meth:`!setmark`, and :meth:`~wave." "Wave_read.getmarkers` methods of the :class:`~wave.Wave_read` and :class:" "`~wave.Wave_write` classes have been deprecated since Python 3.13." msgstr "" -#: deprecations/pending-removal-in-3.15.rst:100 +#: deprecations/pending-removal-in-3.15.rst:107 msgid ":mod:`zipimport`:" msgstr "" -#: deprecations/pending-removal-in-3.15.rst:102 +#: deprecations/pending-removal-in-3.15.rst:109 msgid "" ":meth:`~zipimport.zipimporter.load_module` has been deprecated since Python " "3.10. Use :meth:`~zipimport.zipimporter.exec_module` instead. (Contributed " @@ -3804,11 +3832,11 @@ msgid "" "_clear_internal_caches` instead." msgstr "" -#: whatsnew/3.13.rst:2017 +#: whatsnew/3.13.rst:2033 msgid "CPython Bytecode Changes" msgstr "" -#: whatsnew/3.13.rst:2019 +#: whatsnew/3.13.rst:2035 msgid "" "The oparg of :opcode:`YIELD_VALUE` is now ``1`` if the yield is part of a " "yield-from or await, and ``0`` otherwise. The oparg of :opcode:`RESUME` was " @@ -3817,97 +3845,97 @@ msgid "" "`111354`.)" msgstr "" -#: whatsnew/3.13.rst:2027 +#: whatsnew/3.13.rst:2043 msgid "C API Changes" msgstr "" -#: whatsnew/3.13.rst:2032 +#: whatsnew/3.13.rst:2048 msgid "" "Add the :ref:`PyMonitoring C API ` for generating :pep:" "`669` monitoring events:" msgstr "" -#: whatsnew/3.13.rst:2035 +#: whatsnew/3.13.rst:2051 msgid ":c:type:`PyMonitoringState`" msgstr "" -#: whatsnew/3.13.rst:2036 +#: whatsnew/3.13.rst:2052 msgid ":c:func:`PyMonitoring_FirePyStartEvent`" msgstr "" -#: whatsnew/3.13.rst:2037 +#: whatsnew/3.13.rst:2053 msgid ":c:func:`PyMonitoring_FirePyResumeEvent`" msgstr "" -#: whatsnew/3.13.rst:2038 +#: whatsnew/3.13.rst:2054 msgid ":c:func:`PyMonitoring_FirePyReturnEvent`" msgstr "" -#: whatsnew/3.13.rst:2039 +#: whatsnew/3.13.rst:2055 msgid ":c:func:`PyMonitoring_FirePyYieldEvent`" msgstr "" -#: whatsnew/3.13.rst:2040 +#: whatsnew/3.13.rst:2056 msgid ":c:func:`PyMonitoring_FireCallEvent`" msgstr "" -#: whatsnew/3.13.rst:2041 +#: whatsnew/3.13.rst:2057 msgid ":c:func:`PyMonitoring_FireLineEvent`" msgstr "" -#: whatsnew/3.13.rst:2042 +#: whatsnew/3.13.rst:2058 msgid ":c:func:`PyMonitoring_FireJumpEvent`" msgstr "" -#: whatsnew/3.13.rst:2043 +#: whatsnew/3.13.rst:2059 msgid "``PyMonitoring_FireBranchEvent``" msgstr "" -#: whatsnew/3.13.rst:2044 +#: whatsnew/3.13.rst:2060 msgid ":c:func:`PyMonitoring_FireCReturnEvent`" msgstr "" -#: whatsnew/3.13.rst:2045 +#: whatsnew/3.13.rst:2061 msgid ":c:func:`PyMonitoring_FirePyThrowEvent`" msgstr "" -#: whatsnew/3.13.rst:2046 +#: whatsnew/3.13.rst:2062 msgid ":c:func:`PyMonitoring_FireRaiseEvent`" msgstr "" -#: whatsnew/3.13.rst:2047 +#: whatsnew/3.13.rst:2063 msgid ":c:func:`PyMonitoring_FireCRaiseEvent`" msgstr "" -#: whatsnew/3.13.rst:2048 +#: whatsnew/3.13.rst:2064 msgid ":c:func:`PyMonitoring_FireReraiseEvent`" msgstr "" -#: whatsnew/3.13.rst:2049 +#: whatsnew/3.13.rst:2065 msgid ":c:func:`PyMonitoring_FireExceptionHandledEvent`" msgstr "" -#: whatsnew/3.13.rst:2050 +#: whatsnew/3.13.rst:2066 msgid ":c:func:`PyMonitoring_FirePyUnwindEvent`" msgstr "" -#: whatsnew/3.13.rst:2051 +#: whatsnew/3.13.rst:2067 msgid ":c:func:`PyMonitoring_FireStopIterationEvent`" msgstr "" -#: whatsnew/3.13.rst:2052 +#: whatsnew/3.13.rst:2068 msgid ":c:func:`PyMonitoring_EnterScope`" msgstr "" -#: whatsnew/3.13.rst:2053 +#: whatsnew/3.13.rst:2069 msgid ":c:func:`PyMonitoring_ExitScope`" msgstr "" -#: whatsnew/3.13.rst:2055 +#: whatsnew/3.13.rst:2071 msgid "(Contributed by Irit Katriel in :gh:`111997`)." msgstr "" -#: whatsnew/3.13.rst:2057 +#: whatsnew/3.13.rst:2073 msgid "" "Add :c:type:`PyMutex`, a lightweight mutex that occupies a single byte, and " "the new :c:func:`PyMutex_Lock` and :c:func:`PyMutex_Unlock` functions. :c:" @@ -3915,52 +3943,52 @@ msgid "" "operation needs to block. (Contributed by Sam Gross in :gh:`108724`.)" msgstr "" -#: whatsnew/3.13.rst:2063 +#: whatsnew/3.13.rst:2079 msgid "" "Add the :ref:`PyTime C API ` to provide access to system clocks:" msgstr "" -#: whatsnew/3.13.rst:2065 +#: whatsnew/3.13.rst:2081 msgid ":c:type:`PyTime_t`." msgstr "" -#: whatsnew/3.13.rst:2066 +#: whatsnew/3.13.rst:2082 msgid ":c:var:`PyTime_MIN` and :c:var:`PyTime_MAX`." msgstr "" -#: whatsnew/3.13.rst:2067 +#: whatsnew/3.13.rst:2083 msgid ":c:func:`PyTime_AsSecondsDouble`." msgstr "" -#: whatsnew/3.13.rst:2068 +#: whatsnew/3.13.rst:2084 msgid ":c:func:`PyTime_Monotonic`." msgstr "" -#: whatsnew/3.13.rst:2069 +#: whatsnew/3.13.rst:2085 msgid ":c:func:`PyTime_MonotonicRaw`." msgstr "" -#: whatsnew/3.13.rst:2070 +#: whatsnew/3.13.rst:2086 msgid ":c:func:`PyTime_PerfCounter`." msgstr "" -#: whatsnew/3.13.rst:2071 +#: whatsnew/3.13.rst:2087 msgid ":c:func:`PyTime_PerfCounterRaw`." msgstr "" -#: whatsnew/3.13.rst:2072 +#: whatsnew/3.13.rst:2088 msgid ":c:func:`PyTime_Time`." msgstr "" -#: whatsnew/3.13.rst:2073 +#: whatsnew/3.13.rst:2089 msgid ":c:func:`PyTime_TimeRaw`." msgstr "" -#: whatsnew/3.13.rst:2075 +#: whatsnew/3.13.rst:2091 msgid "(Contributed by Victor Stinner and Petr Viktorin in :gh:`110850`.)" msgstr "" -#: whatsnew/3.13.rst:2077 +#: whatsnew/3.13.rst:2093 msgid "" "Add the :c:func:`PyDict_ContainsString` function with the same behavior as :" "c:func:`PyDict_Contains`, but *key* is specified as a :c:expr:`const char*` " @@ -3968,7 +3996,7 @@ msgid "" "by Victor Stinner in :gh:`108314`.)" msgstr "" -#: whatsnew/3.13.rst:2083 +#: whatsnew/3.13.rst:2099 msgid "" "Add the :c:func:`PyDict_GetItemRef` and :c:func:`PyDict_GetItemStringRef` " "functions, which behave similarly to :c:func:`PyDict_GetItemWithError`, but " @@ -3978,7 +4006,7 @@ msgid "" "`106004`.)" msgstr "" -#: whatsnew/3.13.rst:2091 +#: whatsnew/3.13.rst:2107 msgid "" "Add the :c:func:`PyDict_SetDefaultRef` function, which behaves similarly to :" "c:func:`PyDict_SetDefault`, but returns a :term:`strong reference` instead " @@ -3987,7 +4015,7 @@ msgid "" "dictionary. (Contributed by Sam Gross in :gh:`112066`.)" msgstr "" -#: whatsnew/3.13.rst:2099 +#: whatsnew/3.13.rst:2115 msgid "" "Add the :c:func:`PyDict_Pop` and :c:func:`PyDict_PopString` functions to " "remove a key from a dictionary and optionally return the removed value. This " @@ -3996,7 +4024,7 @@ msgid "" "Victor Stinner in :gh:`111262`.)" msgstr "" -#: whatsnew/3.13.rst:2106 +#: whatsnew/3.13.rst:2122 msgid "" "Add the :c:func:`PyMapping_GetOptionalItem` and :c:func:" "`PyMapping_GetOptionalItemString` functions as alternatives to :c:func:" @@ -4007,7 +4035,7 @@ msgid "" "gh:`106307`.)" msgstr "" -#: whatsnew/3.13.rst:2116 +#: whatsnew/3.13.rst:2132 msgid "" "Add the :c:func:`PyObject_GetOptionalAttr` and :c:func:" "`PyObject_GetOptionalAttrString` functions as alternatives to :c:func:" @@ -4018,37 +4046,37 @@ msgid "" "Serhiy Storchaka in :gh:`106521`.)" msgstr "" -#: whatsnew/3.13.rst:2126 +#: whatsnew/3.13.rst:2142 msgid "" "Add the :c:func:`PyErr_FormatUnraisable` function as an extension to :c:func:" "`PyErr_WriteUnraisable` that allows customizing the warning message. " "(Contributed by Serhiy Storchaka in :gh:`108082`.)" msgstr "" -#: whatsnew/3.13.rst:2131 +#: whatsnew/3.13.rst:2147 msgid "" "Add new functions that return a :term:`strong reference` instead of a :term:" "`borrowed reference` for frame locals, globals, and builtins, as part of :" "ref:`PEP 667 `:" msgstr "" -#: whatsnew/3.13.rst:2135 +#: whatsnew/3.13.rst:2151 msgid ":c:func:`PyEval_GetFrameBuiltins` replaces :c:func:`PyEval_GetBuiltins`" msgstr "" -#: whatsnew/3.13.rst:2136 +#: whatsnew/3.13.rst:2152 msgid ":c:func:`PyEval_GetFrameGlobals` replaces :c:func:`PyEval_GetGlobals`" msgstr "" -#: whatsnew/3.13.rst:2137 +#: whatsnew/3.13.rst:2153 msgid ":c:func:`PyEval_GetFrameLocals` replaces :c:func:`PyEval_GetLocals`" msgstr "" -#: whatsnew/3.13.rst:2139 +#: whatsnew/3.13.rst:2155 msgid "(Contributed by Mark Shannon and Tian Gao in :gh:`74929`.)" msgstr "" -#: whatsnew/3.13.rst:2141 +#: whatsnew/3.13.rst:2157 msgid "" "Add the :c:func:`Py_GetConstant` and :c:func:`Py_GetConstantBorrowed` " "functions to get :term:`strong ` or :term:`borrowed " @@ -4057,7 +4085,7 @@ msgid "" "constant zero. (Contributed by Victor Stinner in :gh:`115754`.)" msgstr "" -#: whatsnew/3.13.rst:2148 +#: whatsnew/3.13.rst:2164 msgid "" "Add the :c:func:`PyImport_AddModuleRef` function as a replacement for :c:" "func:`PyImport_AddModule` that returns a :term:`strong reference` instead of " @@ -4065,35 +4093,35 @@ msgid "" "`105922`.)" msgstr "" -#: whatsnew/3.13.rst:2153 +#: whatsnew/3.13.rst:2169 msgid "" "Add the :c:func:`Py_IsFinalizing` function to check whether the main Python " "interpreter is :term:`shutting down `. (Contributed by " "Victor Stinner in :gh:`108014`.)" msgstr "" -#: whatsnew/3.13.rst:2158 +#: whatsnew/3.13.rst:2174 msgid "" "Add the :c:func:`PyList_GetItemRef` function as a replacement for :c:func:" "`PyList_GetItem` that returns a :term:`strong reference` instead of a :term:" "`borrowed reference`. (Contributed by Sam Gross in :gh:`114329`.)" msgstr "" -#: whatsnew/3.13.rst:2163 +#: whatsnew/3.13.rst:2179 msgid "" "Add the :c:func:`PyList_Extend` and :c:func:`PyList_Clear` functions, " "mirroring the Python :meth:`!list.extend` and :meth:`!list.clear` methods. " "(Contributed by Victor Stinner in :gh:`111138`.)" msgstr "" -#: whatsnew/3.13.rst:2167 +#: whatsnew/3.13.rst:2183 msgid "" "Add the :c:func:`PyLong_AsInt` function. It behaves similarly to :c:func:" "`PyLong_AsLong`, but stores the result in a C :c:expr:`int` instead of a C :" "c:expr:`long`. (Contributed by Victor Stinner in :gh:`108014`.)" msgstr "" -#: whatsnew/3.13.rst:2172 +#: whatsnew/3.13.rst:2188 msgid "" "Add the :c:func:`PyLong_AsNativeBytes`, :c:func:`PyLong_FromNativeBytes`, " "and :c:func:`PyLong_FromUnsignedNativeBytes` functions to simplify " @@ -4101,27 +4129,27 @@ msgid "" "(Contributed by Steve Dower in :gh:`111140`.)" msgstr "" -#: whatsnew/3.13.rst:2178 +#: whatsnew/3.13.rst:2194 msgid "" "Add :c:func:`PyModule_Add` function, which is similar to :c:func:" "`PyModule_AddObjectRef` and :c:func:`PyModule_AddObject`, but always steals " "a reference to the value. (Contributed by Serhiy Storchaka in :gh:`86493`.)" msgstr "" -#: whatsnew/3.13.rst:2183 +#: whatsnew/3.13.rst:2199 msgid "" "Add the :c:func:`PyObject_GenericHash` function that implements the default " "hashing function of a Python object. (Contributed by Serhiy Storchaka in :gh:" "`113024`.)" msgstr "" -#: whatsnew/3.13.rst:2187 +#: whatsnew/3.13.rst:2203 msgid "" "Add the :c:func:`Py_HashPointer` function to hash a raw pointer. " "(Contributed by Victor Stinner in :gh:`111545`.)" msgstr "" -#: whatsnew/3.13.rst:2190 +#: whatsnew/3.13.rst:2206 msgid "" "Add the :c:func:`PyObject_VisitManagedDict` and :c:func:" "`PyObject_ClearManagedDict` functions. which must be called by the traverse " @@ -4130,7 +4158,7 @@ msgid "" "with Python 3.11 and 3.12. (Contributed by Victor Stinner in :gh:`107073`.)" msgstr "" -#: whatsnew/3.13.rst:2198 +#: whatsnew/3.13.rst:2214 msgid "" "Add the :c:func:`PyRefTracer_SetTracer` and :c:func:`PyRefTracer_GetTracer` " "functions, which enable tracking object creation and destruction in the same " @@ -4138,14 +4166,14 @@ msgid "" "in :gh:`93502`.)" msgstr "" -#: whatsnew/3.13.rst:2204 +#: whatsnew/3.13.rst:2220 msgid "" "Add the :c:func:`PySys_AuditTuple` function as an alternative to :c:func:" "`PySys_Audit` that takes event arguments as a Python :class:`tuple` object. " "(Contributed by Victor Stinner in :gh:`85283`.)" msgstr "" -#: whatsnew/3.13.rst:2209 +#: whatsnew/3.13.rst:2225 msgid "" "Add the :c:func:`PyThreadState_GetUnchecked()` function as an alternative " "to :c:func:`PyThreadState_Get()` that doesn't kill the process with a fatal " @@ -4153,7 +4181,7 @@ msgid "" "result is ``NULL``. (Contributed by Victor Stinner in :gh:`108867`.)" msgstr "" -#: whatsnew/3.13.rst:2215 +#: whatsnew/3.13.rst:2231 msgid "" "Add the :c:func:`PyType_GetFullyQualifiedName` function to get the type's " "fully qualified name. The module name is prepended if :attr:`type." @@ -4161,14 +4189,14 @@ msgid "" "``'__main__'``. (Contributed by Victor Stinner in :gh:`111696`.)" msgstr "" -#: whatsnew/3.13.rst:2221 +#: whatsnew/3.13.rst:2237 msgid "" "Add the :c:func:`PyType_GetModuleName` function to get the type's module " "name. This is equivalent to getting the :attr:`type.__module__` attribute. " "(Contributed by Eric Snow and Victor Stinner in :gh:`111696`.)" msgstr "" -#: whatsnew/3.13.rst:2226 +#: whatsnew/3.13.rst:2242 msgid "" "Add the :c:func:`PyUnicode_EqualToUTF8AndSize` and :c:func:" "`PyUnicode_EqualToUTF8` functions to compare a Unicode object with a :c:expr:" @@ -4177,7 +4205,7 @@ msgid "" "Storchaka in :gh:`110289`.)" msgstr "" -#: whatsnew/3.13.rst:2233 +#: whatsnew/3.13.rst:2249 msgid "" "Add the :c:func:`PyWeakref_GetRef` function as an alternative to :c:func:" "`PyWeakref_GetObject` that returns a :term:`strong reference` or ``NULL`` if " @@ -4185,47 +4213,47 @@ msgid "" "`105927`.)" msgstr "" -#: whatsnew/3.13.rst:2239 +#: whatsnew/3.13.rst:2255 msgid "Add fixed variants of functions which silently ignore errors:" msgstr "" -#: whatsnew/3.13.rst:2241 +#: whatsnew/3.13.rst:2257 msgid "" ":c:func:`PyObject_HasAttrWithError` replaces :c:func:`PyObject_HasAttr`." msgstr "" -#: whatsnew/3.13.rst:2242 +#: whatsnew/3.13.rst:2258 msgid "" ":c:func:`PyObject_HasAttrStringWithError` replaces :c:func:" "`PyObject_HasAttrString`." msgstr "" -#: whatsnew/3.13.rst:2244 +#: whatsnew/3.13.rst:2260 msgid "" ":c:func:`PyMapping_HasKeyWithError` replaces :c:func:`PyMapping_HasKey`." msgstr "" -#: whatsnew/3.13.rst:2245 +#: whatsnew/3.13.rst:2261 msgid "" ":c:func:`PyMapping_HasKeyStringWithError` replaces :c:func:" "`PyMapping_HasKeyString`." msgstr "" -#: whatsnew/3.13.rst:2248 +#: whatsnew/3.13.rst:2264 msgid "" "The new functions return ``-1`` for errors and the standard ``1`` for true " "and ``0`` for false." msgstr "" -#: whatsnew/3.13.rst:2251 +#: whatsnew/3.13.rst:2267 msgid "(Contributed by Serhiy Storchaka in :gh:`108511`.)" msgstr "" -#: whatsnew/3.13.rst:2255 +#: whatsnew/3.13.rst:2271 msgid "Changed C APIs" msgstr "" -#: whatsnew/3.13.rst:2257 +#: whatsnew/3.13.rst:2273 msgid "" "The *keywords* parameter of :c:func:`PyArg_ParseTupleAndKeywords` and :c:" "func:`PyArg_VaParseTupleAndKeywords` now has type :c:expr:`char * const *` " @@ -4238,20 +4266,20 @@ msgid "" "`65210`.)" msgstr "" -#: whatsnew/3.13.rst:2269 +#: whatsnew/3.13.rst:2285 msgid "" ":c:func:`PyArg_ParseTupleAndKeywords` now supports non-ASCII keyword " "parameter names. (Contributed by Serhiy Storchaka in :gh:`110815`.)" msgstr "" -#: whatsnew/3.13.rst:2273 +#: whatsnew/3.13.rst:2289 msgid "" "The :c:func:`!PyCode_GetFirstFree` function is now unstable API and is now " "named :c:func:`PyUnstable_Code_GetFirstFree`. (Contributed by Bogdan " "Romanyuk in :gh:`115781`.)" msgstr "" -#: whatsnew/3.13.rst:2277 +#: whatsnew/3.13.rst:2293 msgid "" "The :c:func:`PyDict_GetItem`, :c:func:`PyDict_GetItemString`, :c:func:" "`PyMapping_HasKey`, :c:func:`PyMapping_HasKeyString`, :c:func:" @@ -4262,35 +4290,35 @@ msgid "" "documentation. (Contributed by Serhiy Storchaka in :gh:`106672`.)" msgstr "" -#: whatsnew/3.13.rst:2286 +#: whatsnew/3.13.rst:2302 msgid "" "Add support for the ``%T``, ``%#T``, ``%N`` and ``%#N`` formats to :c:func:" "`PyUnicode_FromFormat`:" msgstr "" -#: whatsnew/3.13.rst:2289 +#: whatsnew/3.13.rst:2305 msgid "``%T``: Get the fully qualified name of an object type" msgstr "" -#: whatsnew/3.13.rst:2290 +#: whatsnew/3.13.rst:2306 msgid "``%#T``: As above, but use a colon as the separator" msgstr "" -#: whatsnew/3.13.rst:2291 +#: whatsnew/3.13.rst:2307 msgid "``%N``: Get the fully qualified name of a type" msgstr "" -#: whatsnew/3.13.rst:2292 +#: whatsnew/3.13.rst:2308 msgid "``%#N``: As above, but use a colon as the separator" msgstr "" -#: whatsnew/3.13.rst:2294 +#: whatsnew/3.13.rst:2310 msgid "" "See :pep:`737` for more information. (Contributed by Victor Stinner in :gh:" "`111696`.)" msgstr "" -#: whatsnew/3.13.rst:2297 +#: whatsnew/3.13.rst:2313 msgid "" "You no longer have to define the ``PY_SSIZE_T_CLEAN`` macro before " "including :file:`Python.h` when using ``#`` formats in :ref:`format codes " @@ -4299,7 +4327,7 @@ msgid "" "`104922`.)" msgstr "" -#: whatsnew/3.13.rst:2303 +#: whatsnew/3.13.rst:2319 msgid "" "If Python is built in :ref:`debug mode ` or :option:`with " "assertions <--with-assertions>`, :c:func:`PyTuple_SET_ITEM` and :c:func:" @@ -4307,60 +4335,60 @@ msgid "" "(Contributed by Victor Stinner in :gh:`106168`.)" msgstr "" -#: whatsnew/3.13.rst:2311 +#: whatsnew/3.13.rst:2327 msgid "Limited C API Changes" msgstr "" -#: whatsnew/3.13.rst:2313 +#: whatsnew/3.13.rst:2329 msgid "The following functions are now included in the Limited C API:" msgstr "" -#: whatsnew/3.13.rst:2315 +#: whatsnew/3.13.rst:2331 msgid ":c:func:`PyMem_RawMalloc`" msgstr "" -#: whatsnew/3.13.rst:2316 +#: whatsnew/3.13.rst:2332 msgid ":c:func:`PyMem_RawCalloc`" msgstr "" -#: whatsnew/3.13.rst:2317 +#: whatsnew/3.13.rst:2333 msgid ":c:func:`PyMem_RawRealloc`" msgstr "" -#: whatsnew/3.13.rst:2318 +#: whatsnew/3.13.rst:2334 msgid ":c:func:`PyMem_RawFree`" msgstr "" -#: whatsnew/3.13.rst:2319 +#: whatsnew/3.13.rst:2335 msgid ":c:func:`PySys_Audit`" msgstr "" -#: whatsnew/3.13.rst:2320 +#: whatsnew/3.13.rst:2336 msgid ":c:func:`PySys_AuditTuple`" msgstr "" -#: whatsnew/3.13.rst:2321 +#: whatsnew/3.13.rst:2337 msgid ":c:func:`PyType_GetModuleByDef`" msgstr "" -#: whatsnew/3.13.rst:2323 +#: whatsnew/3.13.rst:2339 msgid "" "(Contributed by Victor Stinner in :gh:`85283`, :gh:`85283`, and :gh:" "`116936`.)" msgstr "" -#: whatsnew/3.13.rst:2325 +#: whatsnew/3.13.rst:2341 msgid "" "Python built with :option:`--with-trace-refs` (tracing references) now " "supports the :ref:`Limited API `. (Contributed by Victor " "Stinner in :gh:`108634`.)" msgstr "" -#: whatsnew/3.13.rst:2331 +#: whatsnew/3.13.rst:2347 msgid "Removed C APIs" msgstr "" -#: whatsnew/3.13.rst:2333 +#: whatsnew/3.13.rst:2349 msgid "" "Remove several functions, macros, variables, etc with names prefixed by " "``_Py`` or ``_PY`` (which are considered private). If your project is " @@ -4370,13 +4398,13 @@ msgid "" "Victor Stinner. (Contributed by Victor Stinner in :gh:`106320`.)" msgstr "" -#: whatsnew/3.13.rst:2341 +#: whatsnew/3.13.rst:2357 msgid "" "Remove old buffer protocols deprecated in Python 3.0. Use :ref:" "`bufferobjects` instead." msgstr "" -#: whatsnew/3.13.rst:2344 +#: whatsnew/3.13.rst:2360 msgid "" ":c:func:`!PyObject_CheckReadBuffer`: Use :c:func:`PyObject_CheckBuffer` to " "test whether the object supports the buffer protocol. Note that :c:func:" @@ -4385,13 +4413,13 @@ msgid "" "example of :c:func:`PyObject_GetBuffer`." msgstr "" -#: whatsnew/3.13.rst:2352 +#: whatsnew/3.13.rst:2368 msgid "" ":c:func:`!PyObject_AsCharBuffer`, :c:func:`!PyObject_AsReadBuffer`: Use :c:" "func:`PyObject_GetBuffer` and :c:func:`PyBuffer_Release` instead:" msgstr "" -#: whatsnew/3.13.rst:2355 +#: whatsnew/3.13.rst:2371 msgid "" "Py_buffer view;\n" "if (PyObject_GetBuffer(obj, &view, PyBUF_SIMPLE) < 0) {\n" @@ -4402,13 +4430,13 @@ msgid "" "PyBuffer_Release(&view);" msgstr "" -#: whatsnew/3.13.rst:2365 +#: whatsnew/3.13.rst:2381 msgid "" ":c:func:`!PyObject_AsWriteBuffer`: Use :c:func:`PyObject_GetBuffer` and :c:" "func:`PyBuffer_Release` instead:" msgstr "" -#: whatsnew/3.13.rst:2368 +#: whatsnew/3.13.rst:2384 msgid "" "Py_buffer view;\n" "if (PyObject_GetBuffer(obj, &view, PyBUF_WRITABLE) < 0) {\n" @@ -4418,21 +4446,21 @@ msgid "" "PyBuffer_Release(&view);" msgstr "" -#: whatsnew/3.13.rst:2377 +#: whatsnew/3.13.rst:2393 msgid "(Contributed by Inada Naoki in :gh:`85275`.)" msgstr "" -#: whatsnew/3.13.rst:2379 +#: whatsnew/3.13.rst:2395 msgid "Remove various functions deprecated in Python 3.9:" msgstr "" -#: whatsnew/3.13.rst:2381 +#: whatsnew/3.13.rst:2397 msgid "" ":c:func:`!PyEval_CallObject`, :c:func:`!PyEval_CallObjectWithKeywords`: Use :" "c:func:`PyObject_CallNoArgs` or :c:func:`PyObject_Call` instead." msgstr "" -#: whatsnew/3.13.rst:2386 +#: whatsnew/3.13.rst:2402 msgid "" "In :c:func:`PyObject_Call`, positional arguments must be a :class:`tuple` " "and must not be ``NULL``, and keyword arguments must be a :class:`dict` or " @@ -4443,106 +4471,106 @@ msgid "" "`PyTuple_New(0) `." msgstr "" -#: whatsnew/3.13.rst:2396 +#: whatsnew/3.13.rst:2412 msgid "" ":c:func:`!PyEval_CallFunction`: Use :c:func:`PyObject_CallFunction` instead." msgstr "" -#: whatsnew/3.13.rst:2398 +#: whatsnew/3.13.rst:2414 msgid "" ":c:func:`!PyEval_CallMethod`: Use :c:func:`PyObject_CallMethod` instead." msgstr "" -#: whatsnew/3.13.rst:2400 +#: whatsnew/3.13.rst:2416 msgid ":c:func:`!PyCFunction_Call`: Use :c:func:`PyObject_Call` instead." msgstr "" -#: whatsnew/3.13.rst:2403 +#: whatsnew/3.13.rst:2419 msgid "(Contributed by Victor Stinner in :gh:`105107`.)" msgstr "" -#: whatsnew/3.13.rst:2405 +#: whatsnew/3.13.rst:2421 msgid "" "Remove the following old functions to configure the Python initialization, " "deprecated in Python 3.11:" msgstr "" -#: whatsnew/3.13.rst:2408 +#: whatsnew/3.13.rst:2424 msgid "" ":c:func:`!PySys_AddWarnOptionUnicode`: Use :c:member:`PyConfig.warnoptions` " "instead." msgstr "" -#: whatsnew/3.13.rst:2410 +#: whatsnew/3.13.rst:2426 msgid "" ":c:func:`!PySys_AddWarnOption`: Use :c:member:`PyConfig.warnoptions` instead." msgstr "" -#: whatsnew/3.13.rst:2412 +#: whatsnew/3.13.rst:2428 msgid ":c:func:`!PySys_AddXOption`: Use :c:member:`PyConfig.xoptions` instead." msgstr "" -#: whatsnew/3.13.rst:2414 +#: whatsnew/3.13.rst:2430 msgid "" ":c:func:`!PySys_HasWarnOptions`: Use :c:member:`PyConfig.xoptions` instead." msgstr "" -#: whatsnew/3.13.rst:2416 +#: whatsnew/3.13.rst:2432 msgid "" ":c:func:`!PySys_SetPath`: Set :c:member:`PyConfig.module_search_paths` " "instead." msgstr "" -#: whatsnew/3.13.rst:2418 +#: whatsnew/3.13.rst:2434 msgid "" ":c:func:`!Py_SetPath`: Set :c:member:`PyConfig.module_search_paths` instead." msgstr "" -#: whatsnew/3.13.rst:2420 +#: whatsnew/3.13.rst:2436 msgid "" ":c:func:`!Py_SetStandardStreamEncoding`: Set :c:member:`PyConfig." "stdio_encoding` instead, and set also maybe :c:member:`PyConfig." "legacy_windows_stdio` (on Windows)." msgstr "" -#: whatsnew/3.13.rst:2423 +#: whatsnew/3.13.rst:2439 msgid "" ":c:func:`!_Py_SetProgramFullPath`: Set :c:member:`PyConfig.executable` " "instead." msgstr "" -#: whatsnew/3.13.rst:2426 +#: whatsnew/3.13.rst:2442 msgid "" "Use the new :c:type:`PyConfig` API of the :ref:`Python Initialization " "Configuration ` instead (:pep:`587`), added to Python 3.8. " "(Contributed by Victor Stinner in :gh:`105145`.)" msgstr "" -#: whatsnew/3.13.rst:2430 +#: whatsnew/3.13.rst:2446 msgid "" "Remove :c:func:`!PyEval_AcquireLock` and :c:func:`!PyEval_ReleaseLock` " "functions, deprecated in Python 3.2. They didn't update the current thread " "state. They can be replaced with:" msgstr "" -#: whatsnew/3.13.rst:2435 +#: whatsnew/3.13.rst:2451 msgid ":c:func:`PyEval_SaveThread` and :c:func:`PyEval_RestoreThread`;" msgstr "" -#: whatsnew/3.13.rst:2436 +#: whatsnew/3.13.rst:2452 msgid "" "low-level :c:func:`PyEval_AcquireThread` and :c:func:`PyEval_RestoreThread`;" msgstr "" -#: whatsnew/3.13.rst:2437 +#: whatsnew/3.13.rst:2453 msgid "or :c:func:`PyGILState_Ensure` and :c:func:`PyGILState_Release`." msgstr "" -#: whatsnew/3.13.rst:2439 +#: whatsnew/3.13.rst:2455 msgid "(Contributed by Victor Stinner in :gh:`105182`.)" msgstr "" -#: whatsnew/3.13.rst:2441 +#: whatsnew/3.13.rst:2457 msgid "" "Remove the :c:func:`!PyEval_ThreadsInitialized` function, deprecated in " "Python 3.9. Since Python 3.7, :c:func:`!Py_Initialize` always creates the " @@ -4551,7 +4579,7 @@ msgid "" "Stinner in :gh:`105182`.)" msgstr "" -#: whatsnew/3.13.rst:2448 +#: whatsnew/3.13.rst:2464 msgid "" "Remove the :c:func:`!_PyInterpreterState_Get` alias to :c:func:" "`PyInterpreterState_Get()` which was kept for backward compatibility with " @@ -4560,26 +4588,26 @@ msgid "" "Stinner in :gh:`106320`.)" msgstr "" -#: whatsnew/3.13.rst:2455 +#: whatsnew/3.13.rst:2471 msgid "" "Remove the private :c:func:`!_PyObject_FastCall` function: use :c:func:`!" "PyObject_Vectorcall` which is available since Python 3.8 (:pep:`590`). " "(Contributed by Victor Stinner in :gh:`106023`.)" msgstr "" -#: whatsnew/3.13.rst:2460 +#: whatsnew/3.13.rst:2476 msgid "" "Remove the ``cpython/pytime.h`` header file, which only contained private " "functions. (Contributed by Victor Stinner in :gh:`106316`.)" msgstr "" -#: whatsnew/3.13.rst:2464 +#: whatsnew/3.13.rst:2480 msgid "" "Remove the undocumented ``PY_TIMEOUT_MAX`` constant from the limited C API. " "(Contributed by Victor Stinner in :gh:`110014`.)" msgstr "" -#: whatsnew/3.13.rst:2467 +#: whatsnew/3.13.rst:2483 msgid "" "Remove the old trashcan macros ``Py_TRASHCAN_SAFE_BEGIN`` and " "``Py_TRASHCAN_SAFE_END``. Replace both with the new macros " @@ -4587,72 +4615,72 @@ msgid "" "in :gh:`105111`.)" msgstr "" -#: whatsnew/3.13.rst:2474 +#: whatsnew/3.13.rst:2490 msgid "Deprecated C APIs" msgstr "" -#: whatsnew/3.13.rst:2476 +#: whatsnew/3.13.rst:2492 msgid "Deprecate old Python initialization functions:" msgstr "" -#: whatsnew/3.13.rst:2478 deprecations/c-api-pending-removal-in-3.15.rst:63 +#: whatsnew/3.13.rst:2494 deprecations/c-api-pending-removal-in-3.15.rst:63 msgid "" ":c:func:`PySys_ResetWarnOptions`: Clear :data:`sys.warnoptions` and :data:`!" "warnings.filters` instead." msgstr "" -#: whatsnew/3.13.rst:2480 +#: whatsnew/3.13.rst:2496 msgid ":c:func:`Py_GetExecPrefix`: Get :data:`sys.exec_prefix` instead." msgstr "" -#: whatsnew/3.13.rst:2482 +#: whatsnew/3.13.rst:2498 msgid ":c:func:`Py_GetPath`: Get :data:`sys.path` instead." msgstr "" -#: whatsnew/3.13.rst:2484 +#: whatsnew/3.13.rst:2500 msgid ":c:func:`Py_GetPrefix`: Get :data:`sys.prefix` instead." msgstr "" -#: whatsnew/3.13.rst:2486 +#: whatsnew/3.13.rst:2502 msgid ":c:func:`Py_GetProgramFullPath`: Get :data:`sys.executable` instead." msgstr "" -#: whatsnew/3.13.rst:2488 +#: whatsnew/3.13.rst:2504 msgid ":c:func:`Py_GetProgramName`: Get :data:`sys.executable` instead." msgstr "" -#: whatsnew/3.13.rst:2490 +#: whatsnew/3.13.rst:2506 msgid "" ":c:func:`Py_GetPythonHome`: Get :c:member:`PyConfig.home` or the :envvar:" "`PYTHONHOME` environment variable instead." msgstr "" -#: whatsnew/3.13.rst:2494 +#: whatsnew/3.13.rst:2510 msgid "(Contributed by Victor Stinner in :gh:`105145`.)" msgstr "" -#: whatsnew/3.13.rst:2496 +#: whatsnew/3.13.rst:2512 msgid "" ":term:`Soft deprecate ` the :c:func:`PyEval_GetBuiltins`, :" "c:func:`PyEval_GetGlobals`, and :c:func:`PyEval_GetLocals` functions, which " "return a :term:`borrowed reference`. (Soft deprecated as part of :pep:`667`.)" msgstr "" -#: whatsnew/3.13.rst:2502 +#: whatsnew/3.13.rst:2518 msgid "" "Deprecate the :c:func:`PyImport_ImportModuleNoBlock` function, which is just " "an alias to :c:func:`PyImport_ImportModule` since Python 3.3. (Contributed " "by Victor Stinner in :gh:`105396`.)" msgstr "" -#: whatsnew/3.13.rst:2506 +#: whatsnew/3.13.rst:2522 msgid "" ":term:`Soft deprecate ` the :c:func:`PyModule_AddObject` " "function. It should be replaced with :c:func:`PyModule_Add` or :c:func:" "`PyModule_AddObjectRef`. (Contributed by Serhiy Storchaka in :gh:`86493`.)" msgstr "" -#: whatsnew/3.13.rst:2512 +#: whatsnew/3.13.rst:2528 msgid "" "Deprecate the old ``Py_UNICODE`` and ``PY_UNICODE_TYPE`` types and the :c:" "macro:`!Py_UNICODE_WIDE` define. Use the :c:type:`wchar_t` type directly " @@ -4661,7 +4689,7 @@ msgid "" "`105156`.)" msgstr "" -#: whatsnew/3.13.rst:2519 +#: whatsnew/3.13.rst:2535 msgid "" "Deprecate the :c:func:`PyWeakref_GetObject` and :c:func:" "`PyWeakref_GET_OBJECT` functions, which return a :term:`borrowed reference`. " @@ -5163,56 +5191,56 @@ msgstr "" msgid ":c:func:`PyThread_ReInitTLS`: Unneeded since Python 3.7." msgstr "" -#: whatsnew/3.13.rst:2541 +#: whatsnew/3.13.rst:2557 msgid "Build Changes" msgstr "" -#: whatsnew/3.13.rst:2543 +#: whatsnew/3.13.rst:2559 msgid "" "``arm64-apple-ios`` and ``arm64-apple-ios-simulator`` are both now :pep:`11` " "tier 3 platforms. (:ref:`PEP 730 ` written and " "implementation contributed by Russell Keith-Magee in :gh:`114099`.)" msgstr "" -#: whatsnew/3.13.rst:2548 +#: whatsnew/3.13.rst:2564 msgid "" "``aarch64-linux-android`` and ``x86_64-linux-android`` are both now :pep:" "`11` tier 3 platforms. (:ref:`PEP 738 ` " "written and implementation contributed by Malcolm Smith in :gh:`116622`.)" msgstr "" -#: whatsnew/3.13.rst:2553 +#: whatsnew/3.13.rst:2569 msgid "" "``wasm32-wasi`` is now a :pep:`11` tier 2 platform. (Contributed by Brett " "Cannon in :gh:`115192`.)" msgstr "" -#: whatsnew/3.13.rst:2556 +#: whatsnew/3.13.rst:2572 msgid "" "``wasm32-emscripten`` is no longer a :pep:`11` supported platform. " "(Contributed by Brett Cannon in :gh:`115192`.)" msgstr "" -#: whatsnew/3.13.rst:2559 +#: whatsnew/3.13.rst:2575 msgid "" "Building CPython now requires a compiler with support for the C11 atomic " "library, GCC built-in atomic functions, or MSVC interlocked intrinsics." msgstr "" -#: whatsnew/3.13.rst:2562 +#: whatsnew/3.13.rst:2578 msgid "" "Autoconf 2.71 and aclocal 1.16.5 are now required to regenerate the :file:" "`configure` script. (Contributed by Christian Heimes in :gh:`89886` and by " "Victor Stinner in :gh:`112090`.)" msgstr "" -#: whatsnew/3.13.rst:2566 +#: whatsnew/3.13.rst:2582 msgid "" "SQLite 3.15.2 or newer is required to build the :mod:`sqlite3` extension " "module. (Contributed by Erlend Aasland in :gh:`105875`.)" msgstr "" -#: whatsnew/3.13.rst:2570 +#: whatsnew/3.13.rst:2586 msgid "" "CPython now bundles the `mimalloc library`_ by default. It is licensed under " "the MIT license; see :ref:`mimalloc license `. The bundled " @@ -5220,28 +5248,28 @@ msgid "" "Dino Viehland in :gh:`109914`.)" msgstr "" -#: whatsnew/3.13.rst:2578 +#: whatsnew/3.13.rst:2594 msgid "" "The :file:`configure` option :option:`--with-system-libmpdec` now defaults " "to ``yes``. The bundled copy of ``libmpdecimal`` will be removed in Python " "3.15." msgstr "" -#: whatsnew/3.13.rst:2582 +#: whatsnew/3.13.rst:2598 msgid "" "Python built with :file:`configure` :option:`--with-trace-refs` (tracing " "references) is now ABI compatible with the Python release build and :ref:" "`debug build `. (Contributed by Victor Stinner in :gh:`108634`.)" msgstr "" -#: whatsnew/3.13.rst:2587 +#: whatsnew/3.13.rst:2603 msgid "" "On POSIX systems, the pkg-config (``.pc``) filenames now include the ABI " "flags. For example, the free-threaded build generates ``python-3.13t.pc`` " "and the debug build generates ``python-3.13d.pc``." msgstr "" -#: whatsnew/3.13.rst:2591 +#: whatsnew/3.13.rst:2607 msgid "" "The ``errno``, ``fcntl``, ``grp``, ``md5``, ``pwd``, ``resource``, " "``termios``, ``winsound``, ``_ctypes_test``, ``_multiprocessing." @@ -5251,27 +5279,27 @@ msgid "" "`85283`.)" msgstr "" -#: whatsnew/3.13.rst:2600 +#: whatsnew/3.13.rst:2616 msgid "Porting to Python 3.13" msgstr "" -#: whatsnew/3.13.rst:2602 +#: whatsnew/3.13.rst:2618 msgid "" "This section lists previously described changes and other bugfixes that may " "require changes to your code." msgstr "" -#: whatsnew/3.13.rst:2606 +#: whatsnew/3.13.rst:2622 msgid "Changes in the Python API" msgstr "" -#: whatsnew/3.13.rst:2610 +#: whatsnew/3.13.rst:2626 msgid "" ":ref:`PEP 667 ` introduces several changes to " "the semantics of :func:`locals` and :attr:`f_locals `:" msgstr "" -#: whatsnew/3.13.rst:2613 +#: whatsnew/3.13.rst:2629 msgid "" "Calling :func:`locals` in an :term:`optimized scope` now produces an " "independent snapshot on each call, and hence no longer implicitly updates " @@ -5283,7 +5311,7 @@ msgid "" "scope. (Changed as part of :pep:`667`.)" msgstr "" -#: whatsnew/3.13.rst:2622 +#: whatsnew/3.13.rst:2638 msgid "" "Calling :func:`locals` from a comprehension at module or class scope " "(including via ``exec`` or ``eval``) once more behaves as if the " @@ -5293,7 +5321,7 @@ msgid "" "implementing :pep:`709`. (Changed as part of :pep:`667`.)" msgstr "" -#: whatsnew/3.13.rst:2629 +#: whatsnew/3.13.rst:2645 msgid "" "Accessing :attr:`FrameType.f_locals ` in an :term:`optimized " "scope` now returns a write-through proxy rather than a snapshot that gets " @@ -5302,7 +5330,7 @@ msgid "" "of :pep:`667`.)" msgstr "" -#: whatsnew/3.13.rst:2635 +#: whatsnew/3.13.rst:2651 msgid "" ":class:`functools.partial` now emits a :exc:`FutureWarning` when used as a " "method. The behavior will change in future Python versions. Wrap it in :func:" @@ -5310,14 +5338,14 @@ msgid "" "Serhiy Storchaka in :gh:`121027`.)" msgstr "" -#: whatsnew/3.13.rst:2641 +#: whatsnew/3.13.rst:2657 msgid "" "An :exc:`OSError` is now raised by :func:`getpass.getuser` for any failure " "to retrieve a username, instead of :exc:`ImportError` on non-Unix platforms " "or :exc:`KeyError` on Unix platforms where the password database is empty." msgstr "" -#: whatsnew/3.13.rst:2646 +#: whatsnew/3.13.rst:2662 msgid "" "The value of the :attr:`!mode` attribute of :class:`gzip.GzipFile` is now a " "string (``'rb'`` or ``'wb'``) instead of an integer (``1`` or ``2``). The " @@ -5326,13 +5354,13 @@ msgid "" "(Contributed by Serhiy Storchaka in :gh:`115961`.)" msgstr "" -#: whatsnew/3.13.rst:2652 +#: whatsnew/3.13.rst:2668 msgid "" ":class:`mailbox.Maildir` now ignores files with a leading dot (``.``). " "(Contributed by Zackery Spytz in :gh:`65559`.)" msgstr "" -#: whatsnew/3.13.rst:2655 +#: whatsnew/3.13.rst:2671 msgid "" ":meth:`pathlib.Path.glob` and :meth:`~pathlib.Path.rglob` now return both " "files and directories if a pattern that ends with \"``**``\" is given, " @@ -5340,25 +5368,25 @@ msgid "" "behavior and only match directories." msgstr "" -#: whatsnew/3.13.rst:2660 +#: whatsnew/3.13.rst:2676 msgid "" "The :mod:`threading` module now expects the :mod:`!_thread` module to have " "an :func:`!_is_main_interpreter` function. This function takes no arguments " "and returns ``True`` if the current interpreter is the main interpreter." msgstr "" -#: whatsnew/3.13.rst:2665 +#: whatsnew/3.13.rst:2681 msgid "" "Any library or application that provides a custom :mod:`!_thread` module " "must provide :func:`!_is_main_interpreter`, just like the module's other " "\"private\" attributes. (:gh:`112826`.)" msgstr "" -#: whatsnew/3.13.rst:2672 +#: whatsnew/3.13.rst:2688 msgid "Changes in the C API" msgstr "" -#: whatsnew/3.13.rst:2674 +#: whatsnew/3.13.rst:2690 msgid "" "``Python.h`` no longer includes the ```` standard header. It was " "included for the :c:func:`!finite` function which is now provided by the " @@ -5367,7 +5395,7 @@ msgid "" "`108765`.)" msgstr "" -#: whatsnew/3.13.rst:2680 +#: whatsnew/3.13.rst:2696 msgid "" "``Python.h`` no longer includes these standard header files: ````, " "```` and ````. If needed, they should now be " @@ -5378,7 +5406,7 @@ msgid "" "Victor Stinner in :gh:`108765`.)" msgstr "" -#: whatsnew/3.13.rst:2688 +#: whatsnew/3.13.rst:2704 msgid "" "On Windows, ``Python.h`` no longer includes the ```` standard " "header file. If needed, it should now be included explicitly. For example, " @@ -5388,7 +5416,7 @@ msgid "" "(Contributed by Victor Stinner in :gh:`108765`.)" msgstr "" -#: whatsnew/3.13.rst:2695 +#: whatsnew/3.13.rst:2711 msgid "" "If the :c:macro:`Py_LIMITED_API` macro is defined, :c:macro:`!" "Py_BUILD_CORE`, :c:macro:`!Py_BUILD_CORE_BUILTIN` and :c:macro:`!" @@ -5396,18 +5424,18 @@ msgid "" "(Contributed by Victor Stinner in :gh:`85283`.)" msgstr "" -#: whatsnew/3.13.rst:2700 +#: whatsnew/3.13.rst:2716 msgid "" "The old trashcan macros ``Py_TRASHCAN_SAFE_BEGIN`` and " "``Py_TRASHCAN_SAFE_END`` were removed. They should be replaced by the new " "macros ``Py_TRASHCAN_BEGIN`` and ``Py_TRASHCAN_END``." msgstr "" -#: whatsnew/3.13.rst:2704 +#: whatsnew/3.13.rst:2720 msgid "A ``tp_dealloc`` function that has the old macros, such as::" msgstr "" -#: whatsnew/3.13.rst:2706 +#: whatsnew/3.13.rst:2722 msgid "" "static void\n" "mytype_dealloc(mytype *p)\n" @@ -5419,11 +5447,11 @@ msgid "" "}" msgstr "" -#: whatsnew/3.13.rst:2715 +#: whatsnew/3.13.rst:2731 msgid "should migrate to the new macros as follows::" msgstr "" -#: whatsnew/3.13.rst:2717 +#: whatsnew/3.13.rst:2733 msgid "" "static void\n" "mytype_dealloc(mytype *p)\n" @@ -5435,7 +5463,7 @@ msgid "" "}" msgstr "" -#: whatsnew/3.13.rst:2726 +#: whatsnew/3.13.rst:2742 msgid "" "Note that ``Py_TRASHCAN_BEGIN`` has a second argument which should be the " "deallocation function it is in. The new macros were added in Python 3.8 and " @@ -5443,13 +5471,13 @@ msgid "" "in :gh:`105111`.)" msgstr "" -#: whatsnew/3.13.rst:2733 +#: whatsnew/3.13.rst:2749 msgid "" ":ref:`PEP 667 ` introduces several changes to " "frame-related functions:" msgstr "" -#: whatsnew/3.13.rst:2736 +#: whatsnew/3.13.rst:2752 msgid "" "The effects of mutating the dictionary returned from :c:func:" "`PyEval_GetLocals` in an :term:`optimized scope` have changed. New dict " @@ -5463,7 +5491,7 @@ msgid "" "being used, so refer to the deprecation notice on the function for details." msgstr "" -#: whatsnew/3.13.rst:2749 +#: whatsnew/3.13.rst:2765 msgid "" "Calling :c:func:`PyFrame_GetLocals` in an :term:`optimized scope` now " "returns a write-through proxy rather than a snapshot that gets updated at " @@ -5472,126 +5500,126 @@ msgid "" "`PyEval_GetFrameLocals` API." msgstr "" -#: whatsnew/3.13.rst:2756 +#: whatsnew/3.13.rst:2772 msgid "" ":c:func:`!PyFrame_FastToLocals` and :c:func:`!PyFrame_FastToLocalsWithError` " "no longer have any effect. Calling these functions has been redundant since " "Python 3.11, when :c:func:`PyFrame_GetLocals` was first introduced." msgstr "" -#: whatsnew/3.13.rst:2761 +#: whatsnew/3.13.rst:2777 msgid "" ":c:func:`!PyFrame_LocalsToFast` no longer has any effect. Calling this " "function is redundant now that :c:func:`PyFrame_GetLocals` returns a write-" "through proxy for :term:`optimized scopes `." msgstr "" -#: whatsnew/3.13.rst:2765 +#: whatsnew/3.13.rst:2781 msgid "" "Python 3.13 removed many private functions. Some of them can be replaced " "using these alternatives:" msgstr "" -#: whatsnew/3.13.rst:2768 +#: whatsnew/3.13.rst:2784 msgid "``_PyDict_Pop()``: :c:func:`PyDict_Pop` or :c:func:`PyDict_PopString`;" msgstr "" -#: whatsnew/3.13.rst:2769 +#: whatsnew/3.13.rst:2785 msgid "``_PyDict_GetItemWithError()``: :c:func:`PyDict_GetItemRef`;" msgstr "" -#: whatsnew/3.13.rst:2770 +#: whatsnew/3.13.rst:2786 msgid "``_PyErr_WriteUnraisableMsg()``: :c:func:`PyErr_FormatUnraisable`;" msgstr "" -#: whatsnew/3.13.rst:2771 +#: whatsnew/3.13.rst:2787 msgid "" "``_PyEval_SetTrace()``: :c:func:`PyEval_SetTrace` or :c:func:" "`PyEval_SetTraceAllThreads`;" msgstr "" -#: whatsnew/3.13.rst:2772 +#: whatsnew/3.13.rst:2788 msgid "``_PyList_Extend()``: :c:func:`PyList_Extend`;" msgstr "" -#: whatsnew/3.13.rst:2773 +#: whatsnew/3.13.rst:2789 msgid "``_PyLong_AsInt()``: :c:func:`PyLong_AsInt`;" msgstr "" -#: whatsnew/3.13.rst:2774 +#: whatsnew/3.13.rst:2790 msgid "``_PyMem_RawStrdup()``: ``strdup()``;" msgstr "" -#: whatsnew/3.13.rst:2775 +#: whatsnew/3.13.rst:2791 msgid "``_PyMem_Strdup()``: ``strdup()``;" msgstr "" -#: whatsnew/3.13.rst:2776 +#: whatsnew/3.13.rst:2792 msgid "``_PyObject_ClearManagedDict()``: :c:func:`PyObject_ClearManagedDict`;" msgstr "" -#: whatsnew/3.13.rst:2777 +#: whatsnew/3.13.rst:2793 msgid "``_PyObject_VisitManagedDict()``: :c:func:`PyObject_VisitManagedDict`;" msgstr "" -#: whatsnew/3.13.rst:2778 +#: whatsnew/3.13.rst:2794 msgid "" "``_PyThreadState_UncheckedGet()``: :c:func:`PyThreadState_GetUnchecked()`;" msgstr "" -#: whatsnew/3.13.rst:2779 +#: whatsnew/3.13.rst:2795 msgid "``_PyTime_AsSecondsDouble()``: :c:func:`PyTime_AsSecondsDouble`;" msgstr "" -#: whatsnew/3.13.rst:2780 +#: whatsnew/3.13.rst:2796 msgid "" "``_PyTime_GetMonotonicClock()``: :c:func:`PyTime_Monotonic` or :c:func:" "`PyTime_MonotonicRaw`;" msgstr "" -#: whatsnew/3.13.rst:2781 +#: whatsnew/3.13.rst:2797 msgid "" "``_PyTime_GetPerfCounter()``: :c:func:`PyTime_PerfCounter` or :c:func:" "`PyTime_PerfCounterRaw`;" msgstr "" -#: whatsnew/3.13.rst:2782 +#: whatsnew/3.13.rst:2798 msgid "" "``_PyTime_GetSystemClock()``: :c:func:`PyTime_Time` or :c:func:" "`PyTime_TimeRaw`;" msgstr "" -#: whatsnew/3.13.rst:2783 +#: whatsnew/3.13.rst:2799 msgid "``_PyTime_MAX``: :c:var:`PyTime_MAX`;" msgstr "" -#: whatsnew/3.13.rst:2784 +#: whatsnew/3.13.rst:2800 msgid "``_PyTime_MIN``: :c:var:`PyTime_MIN`;" msgstr "" -#: whatsnew/3.13.rst:2785 +#: whatsnew/3.13.rst:2801 msgid "``_PyTime_t``: :c:type:`PyTime_t`;" msgstr "" -#: whatsnew/3.13.rst:2786 +#: whatsnew/3.13.rst:2802 msgid "``_Py_HashPointer()``: :c:func:`Py_HashPointer`;" msgstr "" -#: whatsnew/3.13.rst:2787 +#: whatsnew/3.13.rst:2803 msgid "``_Py_IsFinalizing()``: :c:func:`Py_IsFinalizing`." msgstr "" -#: whatsnew/3.13.rst:2789 +#: whatsnew/3.13.rst:2805 msgid "" "The `pythoncapi-compat project`_ can be used to get most of these new " "functions on Python 3.12 and older." msgstr "" -#: whatsnew/3.13.rst:2793 +#: whatsnew/3.13.rst:2809 msgid "Regression Test Changes" msgstr "" -#: whatsnew/3.13.rst:2795 +#: whatsnew/3.13.rst:2811 msgid "" "Python built with :file:`configure` :option:`--with-pydebug` now supports a :" "option:`-X presite=package.module <-X>` command-line option. If used, it " diff --git a/whatsnew/3.14.po b/whatsnew/3.14.po index 90216d09..053d7b97 100644 --- a/whatsnew/3.14.po +++ b/whatsnew/3.14.po @@ -8,10 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.14\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -69,56 +70,74 @@ msgstr "" #: whatsnew/3.14.rst:76 msgid "" "The library changes include the addition of a new :mod:`!annotationlib` " -"module for introspecting and wrapping annotations (:pep:`649`), a new :mod:`!" +"module for introspecting and wrapping annotations (:pep:`749`), a new :mod:`!" "compression.zstd` module for Zstandard support (:pep:`784`), plus syntax " "highlighting in the REPL, as well as the usual deprecations and removals, " "and improvements in user-friendliness and correctness." msgstr "" #: whatsnew/3.14.rst:85 -msgid ":ref:`PEP 649: deferred evaluation of annotations `" +msgid "" +":ref:`PEP 779: Free-threaded Python is officially supported `" msgstr "" #: whatsnew/3.14.rst:86 -msgid ":ref:`PEP 741: Python Configuration C API `" +msgid "" +":ref:`PEP 649 and 749: deferred evaluation of annotations `" msgstr "" #: whatsnew/3.14.rst:87 -msgid ":ref:`PEP 750: Template strings `" +msgid "" +":ref:`PEP 734: Multiple interpreters in the stdlib `" msgstr "" #: whatsnew/3.14.rst:88 +msgid ":ref:`PEP 741: Python configuration C API `" +msgstr "" + +#: whatsnew/3.14.rst:89 +msgid ":ref:`PEP 750: Template strings `" +msgstr "" + +#: whatsnew/3.14.rst:90 msgid "" ":ref:`PEP 758: Allow except and except* expressions without parentheses " "`" msgstr "" -#: whatsnew/3.14.rst:89 +#: whatsnew/3.14.rst:91 msgid ":ref:`PEP 761: Discontinuation of PGP signatures `" msgstr "" -#: whatsnew/3.14.rst:90 +#: whatsnew/3.14.rst:92 msgid "" ":ref:`PEP 765: Disallow return/break/continue that exit a finally block " "`" msgstr "" -#: whatsnew/3.14.rst:91 +#: whatsnew/3.14.rst:93 +msgid "" +":ref:`Free-threaded mode improvements `" +msgstr "" + +#: whatsnew/3.14.rst:94 msgid "" ":ref:`PEP 768: Safe external debugger interface for CPython `" msgstr "" -#: whatsnew/3.14.rst:92 +#: whatsnew/3.14.rst:95 msgid "" ":ref:`PEP 784: Adding Zstandard to the standard library `" msgstr "" -#: whatsnew/3.14.rst:93 +#: whatsnew/3.14.rst:96 msgid ":ref:`A new type of interpreter `" msgstr "" -#: whatsnew/3.14.rst:94 +#: whatsnew/3.14.rst:97 msgid "" ":ref:`Syntax highlighting in PyREPL `, and " "color output in :ref:`unittest `, :ref:`argparse " @@ -126,17 +145,17 @@ msgid "" "`calendar ` CLIs" msgstr "" -#: whatsnew/3.14.rst:99 +#: whatsnew/3.14.rst:102 msgid "" ":ref:`Binary releases for the experimental just-in-time compiler " "`" msgstr "" -#: whatsnew/3.14.rst:103 +#: whatsnew/3.14.rst:106 msgid "Incompatible changes" msgstr "" -#: whatsnew/3.14.rst:105 +#: whatsnew/3.14.rst:108 msgid "" "On platforms other than macOS and Windows, the default :ref:`start method " "` for :mod:`multiprocessing` and :class:" @@ -144,20 +163,20 @@ msgid "" "*forkserver*." msgstr "" -#: whatsnew/3.14.rst:110 +#: whatsnew/3.14.rst:113 msgid "" "See :ref:`(1) ` and :ref:`(2) " "` for details." msgstr "" -#: whatsnew/3.14.rst:113 +#: whatsnew/3.14.rst:116 msgid "" "If you encounter :exc:`NameError`\\s or pickling errors coming out of :mod:" "`multiprocessing` or :mod:`concurrent.futures`, see the :ref:`forkserver " "restrictions `." msgstr "" -#: whatsnew/3.14.rst:117 +#: whatsnew/3.14.rst:120 msgid "" "The interpreter avoids some reference count modifications internally when " "it's safe to do so. This can lead to different values returned from :func:" @@ -165,15 +184,203 @@ msgid "" "Python. See :ref:`below ` for details." msgstr "" -#: whatsnew/3.14.rst:2463 +#: whatsnew/3.14.rst:2722 msgid "New features" msgstr "" -#: whatsnew/3.14.rst:128 +#: whatsnew/3.14.rst:131 +msgid "PEP 779: Free-threaded Python is officially supported" +msgstr "" + +#: whatsnew/3.14.rst:133 +msgid "" +"The free-threaded build of Python is now supported and no longer " +"experimental. This is the start of phase II where free-threaded Python is " +"officially supported but still optional." +msgstr "" + +#: whatsnew/3.14.rst:137 +msgid "" +"We are confident that the project is on the right path, and we appreciate " +"the continued dedication from everyone working to make free-threading ready " +"for broader adoption across the Python community." +msgstr "" + +#: whatsnew/3.14.rst:141 +msgid "" +"With these recommendations and the acceptance of this PEP, we as the Python " +"developer community should broadly advertise that free-threading is a " +"supported Python build option now and into the future, and that it will not " +"be removed without a proper deprecation schedule." +msgstr "" + +#: whatsnew/3.14.rst:146 +msgid "" +"Any decision to transition to phase III, with free-threading as the default " +"or sole build of Python is still undecided, and dependent on many factors " +"both within CPython itself and the community. This decision is for the " +"future." +msgstr "" + +#: whatsnew/3.14.rst:151 +msgid "" +":pep:`779` and its `acceptance `__." +msgstr "" + +#: whatsnew/3.14.rst:157 +msgid "PEP 734: Multiple interpreters in the stdlib" +msgstr "" + +#: whatsnew/3.14.rst:159 +msgid "" +"The CPython runtime supports running multiple copies of Python in the same " +"process simultaneously and has done so for over 20 years. Each of these " +"separate copies is called an \"interpreter\". However, the feature had been " +"available only through the C-API." +msgstr "" + +#: whatsnew/3.14.rst:164 +msgid "" +"That limitation is removed in the 3.14 release, with the new :mod:" +"`concurrent.interpreters` module." +msgstr "" + +#: whatsnew/3.14.rst:167 +msgid "" +"There are at least two notable reasons why using multiple interpreters is " +"worth considering:" +msgstr "" + +#: whatsnew/3.14.rst:170 +msgid "they support a new (to Python), human-friendly concurrency model" +msgstr "" + +#: whatsnew/3.14.rst:171 +msgid "true multi-core parallelism" +msgstr "" + +#: whatsnew/3.14.rst:173 +msgid "" +"For some use cases, concurrency in software enables efficiency and can " +"simplify software, at a high level. At the same time, implementing and " +"maintaining all but the simplest concurrency is often a struggle for the " +"human brain. That especially applies to plain threads (for example, :mod:" +"`threading`), where all memory is shared between all threads." +msgstr "" + +#: whatsnew/3.14.rst:179 +msgid "" +"With multiple isolated interpreters, you can take advantage of a class of " +"concurrency models, like CSP or the actor model, that have found success in " +"other programming languages, like Smalltalk, Erlang, Haskell, and Go. Think " +"of multiple interpreters like threads but with opt-in sharing." +msgstr "" + +#: whatsnew/3.14.rst:185 +msgid "" +"Regarding multi-core parallelism: as of the 3.12 release, interpreters are " +"now sufficiently isolated from one another to be used in parallel. (See :pep:" +"`684`.) This unlocks a variety of CPU-intensive use cases for Python that " +"were limited by the :term:`GIL`." +msgstr "" + +#: whatsnew/3.14.rst:190 +msgid "" +"Using multiple interpreters is similar in many ways to :mod:" +"`multiprocessing`, in that they both provide isolated logical \"processes\" " +"that can run in parallel, with no sharing by default. However, when using " +"multiple interpreters, an application will use fewer system resources and " +"will operate more efficiently (since it stays within the same process). " +"Think of multiple interpreters as having the isolation of processes with the " +"efficiency of threads." +msgstr "" + +#: whatsnew/3.14.rst:201 +msgid "" +"While the feature has been around for decades, multiple interpreters have " +"not been used widely, due to low awareness and the lack of a stdlib module. " +"Consequently, they currently have several notable limitations, which will " +"improve significantly now that the feature is finally going mainstream." +msgstr "" + +#: whatsnew/3.14.rst:207 +msgid "Current limitations:" +msgstr "" + +#: whatsnew/3.14.rst:209 +msgid "starting each interpreter has not been optimized yet" +msgstr "" + +#: whatsnew/3.14.rst:210 +msgid "" +"each interpreter uses more memory than necessary (we will be working next on " +"extensive internal sharing between interpreters)" +msgstr "" + +#: whatsnew/3.14.rst:213 +msgid "" +"there aren't many options *yet* for truly sharing objects or other data " +"between interpreters (other than :type:`memoryview`)" +msgstr "" + +#: whatsnew/3.14.rst:215 +msgid "" +"many extension modules on PyPI are not compatible with multiple interpreters " +"yet (stdlib extension modules *are* compatible)" +msgstr "" + +#: whatsnew/3.14.rst:217 +msgid "" +"the approach to writing applications that use multiple isolated interpreters " +"is mostly unfamiliar to Python users, for now" +msgstr "" + +#: whatsnew/3.14.rst:220 +msgid "" +"The impact of these limitations will depend on future CPython improvements, " +"how interpreters are used, and what the community solves through PyPI " +"packages. Depending on the use case, the limitations may not have much " +"impact, so try it out!" +msgstr "" + +#: whatsnew/3.14.rst:225 +msgid "" +"Furthermore, future CPython releases will reduce or eliminate overhead and " +"provide utilities that are less appropriate on PyPI. In the meantime, most " +"of the limitations can also be addressed through extension modules, meaning " +"PyPI packages can fill any gap for 3.14, and even back to 3.12 where " +"interpreters were finally properly isolated and stopped sharing the :term:" +"`GIL`. Likewise, we expect to slowly see libraries on PyPI for high-level " +"abstractions on top of interpreters." +msgstr "" + +#: whatsnew/3.14.rst:233 +msgid "" +"Regarding extension modules, work is in progress to update some PyPI " +"projects, as well as tools like Cython, pybind11, nanobind, and PyO3. The " +"steps for isolating an extension module are found at :ref:`isolating-" +"extensions-howto`. Isolating a module has a lot of overlap with what is " +"required to support :ref:`free-threading `, so the ongoing work in the community in that area will help " +"accelerate support for multiple interpreters." +msgstr "" + +#: whatsnew/3.14.rst:242 +msgid "" +"Also added in 3.14: :ref:`concurrent.futures.InterpreterPoolExecutor " +"`." +msgstr "" + +#: whatsnew/3.14.rst:246 +msgid ":pep:`734`." +msgstr "" + +#: whatsnew/3.14.rst:252 msgid "PEP 750: Template strings" msgstr "" -#: whatsnew/3.14.rst:130 +#: whatsnew/3.14.rst:254 msgid "" "Template string literals (t-strings) are a generalization of f-strings, " "using a ``t`` in place of the ``f`` prefix. Instead of evaluating to :class:" @@ -181,7 +388,7 @@ msgid "" "type:" msgstr "" -#: whatsnew/3.14.rst:134 +#: whatsnew/3.14.rst:258 msgid "" "from string.templatelib import Template\n" "\n" @@ -189,14 +396,14 @@ msgid "" "template: Template = t\"Hello {name}\"" msgstr "" -#: whatsnew/3.14.rst:141 +#: whatsnew/3.14.rst:265 msgid "" "The template can then be combined with functions that operate on the " "template's structure to produce a :class:`str` or a string-like result. For " "example, sanitizing input:" msgstr "" -#: whatsnew/3.14.rst:145 +#: whatsnew/3.14.rst:269 msgid "" "evil = \"\"\n" "template = t\"

{evil}

\"\n" @@ -204,11 +411,11 @@ msgid "" "p>\"" msgstr "" -#: whatsnew/3.14.rst:151 +#: whatsnew/3.14.rst:275 msgid "As another example, generating HTML attributes from data:" msgstr "" -#: whatsnew/3.14.rst:153 +#: whatsnew/3.14.rst:277 msgid "" "attributes = {\"src\": \"shrubbery.jpg\", \"alt\": \"looks nice\"}\n" "template = t\"\"\n" @@ -216,7 +423,7 @@ msgid "" "class=\"looks-nice\">'" msgstr "" -#: whatsnew/3.14.rst:159 +#: whatsnew/3.14.rst:283 msgid "" "Compared to using an f-string, the ``html`` function has access to template " "attributes containing the original information: static strings, " @@ -226,11 +433,11 @@ msgid "" "much closer to the Python language, syntax, scoping, and more." msgstr "" -#: whatsnew/3.14.rst:166 +#: whatsnew/3.14.rst:290 msgid "Writing template handlers is straightforward:" msgstr "" -#: whatsnew/3.14.rst:168 +#: whatsnew/3.14.rst:292 msgid "" "from string.templatelib import Template, Interpolation\n" "\n" @@ -249,7 +456,7 @@ msgid "" "assert lower_upper(t\"HELLO {name}\") == \"hello WORLD\"" msgstr "" -#: whatsnew/3.14.rst:185 +#: whatsnew/3.14.rst:309 msgid "" "With this in place, developers can write template systems to sanitize SQL, " "make safe shell operations, improve logging, tackle modern ideas in web " @@ -257,22 +464,22 @@ msgid "" "business DSLs." msgstr "" -#: whatsnew/3.14.rst:189 +#: whatsnew/3.14.rst:313 msgid "" "(Contributed by Jim Baker, Guido van Rossum, Paul Everitt, Koudai Aono, " "Lysandros Nikolaou, Dave Peck, Adam Turner, Jelle Zijlstra, Bénédikt Tran, " "and Pablo Galindo Salgado in :gh:`132661`.)" msgstr "" -#: whatsnew/3.14.rst:194 +#: whatsnew/3.14.rst:318 msgid ":pep:`750`." msgstr "" -#: whatsnew/3.14.rst:200 +#: whatsnew/3.14.rst:324 msgid "PEP 768: Safe external debugger interface for CPython" msgstr "" -#: whatsnew/3.14.rst:202 +#: whatsnew/3.14.rst:326 msgid "" ":pep:`768` introduces a zero-overhead debugging interface that allows " "debuggers and profilers to safely attach to running Python processes. This " @@ -282,7 +489,7 @@ msgid "" "module's remote attaching capabilities." msgstr "" -#: whatsnew/3.14.rst:208 +#: whatsnew/3.14.rst:332 msgid "" "The new interface provides safe execution points for attaching debugger code " "without modifying the interpreter's normal execution path or adding runtime " @@ -291,17 +498,17 @@ msgid "" "capability for high-availability systems and production environments." msgstr "" -#: whatsnew/3.14.rst:213 +#: whatsnew/3.14.rst:337 msgid "" "For convenience, CPython implements this interface through the :mod:`sys` " "module with a :func:`sys.remote_exec` function::" msgstr "" -#: whatsnew/3.14.rst:216 +#: whatsnew/3.14.rst:340 msgid "sys.remote_exec(pid, script_path)" msgstr "" -#: whatsnew/3.14.rst:218 +#: whatsnew/3.14.rst:342 msgid "" "This function allows sending Python code to be executed in a target process " "at the next safe execution point. However, tool authors can also implement " @@ -309,13 +516,13 @@ msgid "" "mechanisms used to safely attach to running processes." msgstr "" -#: whatsnew/3.14.rst:222 +#: whatsnew/3.14.rst:346 msgid "" "Here's a simple example that inspects object types in a running Python " "process:" msgstr "" -#: whatsnew/3.14.rst:224 +#: whatsnew/3.14.rst:348 msgid "" "import os\n" "import sys\n" @@ -334,27 +541,27 @@ msgid "" " os.unlink(script_path)" msgstr "" -#: whatsnew/3.14.rst:241 +#: whatsnew/3.14.rst:365 msgid "" "The debugging interface has been carefully designed with security in mind " "and includes several mechanisms to control access:" msgstr "" -#: whatsnew/3.14.rst:244 +#: whatsnew/3.14.rst:368 msgid "A :envvar:`PYTHON_DISABLE_REMOTE_DEBUG` environment variable." msgstr "" -#: whatsnew/3.14.rst:245 +#: whatsnew/3.14.rst:369 msgid "A :option:`-X disable-remote-debug` command-line option." msgstr "" -#: whatsnew/3.14.rst:246 +#: whatsnew/3.14.rst:370 msgid "" "A :option:`--without-remote-debug` configure flag to completely disable the " "feature at build time." msgstr "" -#: whatsnew/3.14.rst:248 +#: whatsnew/3.14.rst:372 msgid "" "A key implementation detail is that the interface piggybacks on the " "interpreter's existing evaluation loop and safe points, ensuring zero " @@ -362,21 +569,21 @@ msgid "" "processes to coordinate debugging operations." msgstr "" -#: whatsnew/3.14.rst:252 +#: whatsnew/3.14.rst:376 msgid "" "(Contributed by Pablo Galindo Salgado, Matt Wozniski, and Ivona Stojanovic " "in :gh:`131591`.)" msgstr "" -#: whatsnew/3.14.rst:329 +#: whatsnew/3.14.rst:453 msgid ":pep:`768`." msgstr "" -#: whatsnew/3.14.rst:261 +#: whatsnew/3.14.rst:385 msgid "PEP 784: Adding Zstandard to the standard library" msgstr "" -#: whatsnew/3.14.rst:263 +#: whatsnew/3.14.rst:387 msgid "" "The new ``compression`` package contains modules :mod:`!compression.lzma`, :" "mod:`!compression.bz2`, :mod:`!compression.gzip` and :mod:`!compression." @@ -388,7 +595,7 @@ msgid "" "sooner than five years after the release of 3.14." msgstr "" -#: whatsnew/3.14.rst:272 +#: whatsnew/3.14.rst:396 msgid "" "The new :mod:`!compression.zstd` module provides compression and " "decompression APIs for the Zstandard format via bindings to `Meta's zstd " @@ -399,11 +606,11 @@ msgid "" "`zipfile`, and :mod:`shutil` modules." msgstr "" -#: whatsnew/3.14.rst:280 +#: whatsnew/3.14.rst:404 msgid "Here's an example of using the new module to compress some data:" msgstr "" -#: whatsnew/3.14.rst:282 +#: whatsnew/3.14.rst:406 msgid "" "from compression import zstd\n" "import math\n" @@ -416,37 +623,37 @@ msgid "" "print(f\"Achieved compression ratio of {ratio}\")" msgstr "" -#: whatsnew/3.14.rst:294 +#: whatsnew/3.14.rst:418 msgid "" "As can be seen, the API is similar to the APIs of the :mod:`!lzma` and :mod:" "`!bz2` modules." msgstr "" -#: whatsnew/3.14.rst:297 +#: whatsnew/3.14.rst:421 msgid "" "(Contributed by Emma Harper Smith, Adam Turner, Gregory P. Smith, Tomas " -"Roun, Victor Stinner, and Rogdham in :gh:`132983`)" +"Roun, Victor Stinner, and Rogdham in :gh:`132983`.)" msgstr "" -#: whatsnew/3.14.rst:301 +#: whatsnew/3.14.rst:425 msgid ":pep:`784`." msgstr "" -#: whatsnew/3.14.rst:307 +#: whatsnew/3.14.rst:431 msgid "Remote attaching to a running Python process with PDB" msgstr "" -#: whatsnew/3.14.rst:309 +#: whatsnew/3.14.rst:433 msgid "" "The :mod:`pdb` module now supports remote attaching to a running Python " "process using a new ``-p PID`` command-line option:" msgstr "" -#: whatsnew/3.14.rst:312 +#: whatsnew/3.14.rst:436 msgid "python -m pdb -p 1234" msgstr "" -#: whatsnew/3.14.rst:316 +#: whatsnew/3.14.rst:440 msgid "" "This will connect to the Python process with the given PID and allow you to " "debug it interactively. Notice that due to how the Python interpreter works " @@ -455,21 +662,21 @@ msgid "" "when the process receives a signal." msgstr "" -#: whatsnew/3.14.rst:322 +#: whatsnew/3.14.rst:446 msgid "" "This feature uses :pep:`768` and the :func:`sys.remote_exec` function to " "attach to the remote process and send the PDB commands to it." msgstr "" -#: whatsnew/3.14.rst:326 +#: whatsnew/3.14.rst:450 msgid "(Contributed by Matt Wozniski and Pablo Galindo in :gh:`131591`.)" msgstr "" -#: whatsnew/3.14.rst:335 +#: whatsnew/3.14.rst:459 msgid "PEP 758 – Allow except and except* expressions without parentheses" msgstr "" -#: whatsnew/3.14.rst:337 +#: whatsnew/3.14.rst:461 msgid "" "The :keyword:`except` and :keyword:`except* ` expressions now " "allow parentheses to be omitted when there are multiple exception types and " @@ -477,54 +684,56 @@ msgid "" "valid:" msgstr "" -#: whatsnew/3.14.rst:341 +#: whatsnew/3.14.rst:465 msgid "" "try:\n" -" release_new_sleep_token_album()\n" -"except AlbumNotFound, SongsTooGoodToBeReleased:\n" -" print(\"Sorry, no new album this year.\")\n" +" connect_to_server()\n" +"except TimeoutError, ConnectionRefusedError:\n" +" print(\"Network issue encountered.\")\n" "\n" " # The same applies to except* (for exception groups):\n" +"\n" "try:\n" -" release_new_sleep_token_album()\n" -"except* AlbumNotFound, SongsTooGoodToBeReleased:\n" -" print(\"Sorry, no new album this year.\")" +" connect_to_server()\n" +"except* TimeoutError, ConnectionRefusedError:\n" +" print(\"Network issue encountered.\")" msgstr "" -#: whatsnew/3.14.rst:354 +#: whatsnew/3.14.rst:479 msgid "Check :pep:`758` for more details." msgstr "" -#: whatsnew/3.14.rst:356 +#: whatsnew/3.14.rst:481 msgid "(Contributed by Pablo Galindo and Brett Cannon in :gh:`131831`.)" msgstr "" -#: whatsnew/3.14.rst:359 +#: whatsnew/3.14.rst:484 msgid ":pep:`758`." msgstr "" -#: whatsnew/3.14.rst:365 -msgid "PEP 649: deferred evaluation of annotations" +#: whatsnew/3.14.rst:490 +msgid "PEP 649 and 749: deferred evaluation of annotations" msgstr "" -#: whatsnew/3.14.rst:367 +#: whatsnew/3.14.rst:492 msgid "" "The :term:`annotations ` on functions, classes, and modules are " "no longer evaluated eagerly. Instead, annotations are stored in special-" "purpose :term:`annotate functions ` and evaluated only " -"when necessary. This is specified in :pep:`649` and :pep:`749`." +"when necessary (except if ``from __future__ import annotations`` is used). " +"This is specified in :pep:`649` and :pep:`749`." msgstr "" -#: whatsnew/3.14.rst:372 +#: whatsnew/3.14.rst:498 msgid "" "This change is designed to make annotations in Python more performant and " "more usable in most circumstances. The runtime cost for defining annotations " "is minimized, but it remains possible to introspect annotations at runtime. " -"It is usually no longer necessary to enclose annotations in strings if they " -"contain forward references." +"It is no longer necessary to enclose annotations in strings if they contain " +"forward references." msgstr "" -#: whatsnew/3.14.rst:378 +#: whatsnew/3.14.rst:504 msgid "" "The new :mod:`annotationlib` module provides tools for inspecting deferred " "annotations. Annotations may be evaluated in the :attr:`~annotationlib." @@ -535,11 +744,11 @@ msgid "" "annotations as strings)." msgstr "" -#: whatsnew/3.14.rst:385 +#: whatsnew/3.14.rst:511 msgid "This example shows how these formats behave:" msgstr "" -#: whatsnew/3.14.rst:387 +#: whatsnew/3.14.rst:513 msgid "" ">>> from annotationlib import get_annotations, Format\n" ">>> def func(arg: Undefined):\n" @@ -554,32 +763,33 @@ msgid "" "{'arg': 'Undefined'}" msgstr "" -#: whatsnew/3.14.rst:402 +#: whatsnew/3.14.rst:528 msgid "Implications for annotated code" msgstr "" -#: whatsnew/3.14.rst:404 +#: whatsnew/3.14.rst:530 msgid "" "If you define annotations in your code (for example, for use with a static " "type checker), then this change probably does not affect you: you can keep " "writing annotations the same way you did with previous versions of Python." msgstr "" -#: whatsnew/3.14.rst:408 +#: whatsnew/3.14.rst:534 msgid "" "You will likely be able to remove quoted strings in annotations, which are " "frequently used for forward references. Similarly, if you use ``from " "__future__ import annotations`` to avoid having to write strings in " -"annotations, you may well be able to remove that import. However, if you " -"rely on third-party libraries that read annotations, those libraries may " -"need changes to support unquoted annotations before they work as expected." +"annotations, you may well be able to remove that import once you support " +"only Python 3.14 and newer. However, if you rely on third-party libraries " +"that read annotations, those libraries may need changes to support unquoted " +"annotations before they work as expected." msgstr "" -#: whatsnew/3.14.rst:416 +#: whatsnew/3.14.rst:543 msgid "Implications for readers of ``__annotations__``" msgstr "" -#: whatsnew/3.14.rst:418 +#: whatsnew/3.14.rst:545 msgid "" "If your code reads the ``__annotations__`` attribute on objects, you may " "want to make changes in order to support code that relies on deferred " @@ -588,11 +798,20 @@ msgid "" "FORWARDREF` format, as the :mod:`dataclasses` module now does." msgstr "" -#: whatsnew/3.14.rst:425 +#: whatsnew/3.14.rst:551 +msgid "" +"The external :pypi:`typing_extensions` package provides partial backports of " +"some of the functionality of the :mod:`annotationlib` module, such as the :" +"class:`~annotationlib.Format` enum and the :func:`~annotationlib." +"get_annotations` function. These can be used to write cross-version code " +"that takes advantage of the new behavior in Python 3.14." +msgstr "" + +#: whatsnew/3.14.rst:557 msgid "Related changes" msgstr "" -#: whatsnew/3.14.rst:427 +#: whatsnew/3.14.rst:559 msgid "" "The changes in Python 3.14 are designed to rework how ``__annotations__`` " "works at runtime while minimizing breakage to code that contains annotations " @@ -603,11 +822,26 @@ msgid "" "use only the documented functionality of the :mod:`annotationlib` module." msgstr "" -#: whatsnew/3.14.rst:436 +#: whatsnew/3.14.rst:567 +msgid "" +"In particular, do not read annotations directly from the namespace " +"dictionary attribute of type objects. Use :func:`annotationlib." +"get_annotate_from_class_namespace` during class construction and :func:" +"`annotationlib.get_annotations` afterwards." +msgstr "" + +#: whatsnew/3.14.rst:571 +msgid "" +"In previous releases, it was sometimes possible to access class annotations " +"from an instance of an annotated class. This behavior was undocumented and " +"accidental, and will no longer work in Python 3.14." +msgstr "" + +#: whatsnew/3.14.rst:576 msgid "``from __future__ import annotations``" msgstr "" -#: whatsnew/3.14.rst:438 +#: whatsnew/3.14.rst:578 msgid "" "In Python 3.7, :pep:`563` introduced the ``from __future__ import " "annotations`` directive, which turns all annotations into strings. This " @@ -618,15 +852,21 @@ msgid "" "of code using ``from __future__ import annotations`` is unchanged." msgstr "" -#: whatsnew/3.14.rst:447 -msgid ":pep:`649`." +#: whatsnew/3.14.rst:586 +msgid "" +"(Contributed by Jelle Zijlstra in :gh:`119180`; :pep:`649` was written by " +"Larry Hastings.)" +msgstr "" + +#: whatsnew/3.14.rst:589 +msgid ":pep:`649` and :pep:`749`." msgstr "" -#: whatsnew/3.14.rst:451 +#: whatsnew/3.14.rst:593 msgid "Improved error messages" msgstr "" -#: whatsnew/3.14.rst:453 +#: whatsnew/3.14.rst:595 msgid "" "The interpreter now provides helpful suggestions when it detects typos in " "Python keywords. When a word that closely resembles a Python keyword is " @@ -635,7 +875,7 @@ msgid "" "typing mistakes. For example:" msgstr "" -#: whatsnew/3.14.rst:459 +#: whatsnew/3.14.rst:601 msgid "" ">>> whille True:\n" "... pass\n" @@ -669,21 +909,21 @@ msgid "" "SyntaxError: invalid syntax. Did you mean 'raise'?" msgstr "" -#: whatsnew/3.14.rst:492 +#: whatsnew/3.14.rst:634 msgid "" "While the feature focuses on the most common cases, some variations of " "misspellings may still result in regular syntax errors. (Contributed by " "Pablo Galindo in :gh:`132449`.)" msgstr "" -#: whatsnew/3.14.rst:496 +#: whatsnew/3.14.rst:638 msgid "" "When unpacking assignment fails due to incorrect number of variables, the " "error message prints the received number of values in more cases than " "before. (Contributed by Tushar Sadhwani in :gh:`122239`.)" msgstr "" -#: whatsnew/3.14.rst:500 +#: whatsnew/3.14.rst:642 msgid "" ">>> x, y, z = 1, 2, 3, 4\n" "Traceback (most recent call last):\n" @@ -693,13 +933,13 @@ msgid "" "ValueError: too many values to unpack (expected 3, got 4)" msgstr "" -#: whatsnew/3.14.rst:509 +#: whatsnew/3.14.rst:651 msgid "" ":keyword:`elif` statements that follow an :keyword:`else` block now have a " "specific error message. (Contributed by Steele Farnsworth in :gh:`129902`.)" msgstr "" -#: whatsnew/3.14.rst:512 +#: whatsnew/3.14.rst:654 msgid "" ">>> if who == \"me\":\n" "... print(\"It's me!\")\n" @@ -713,7 +953,7 @@ msgid "" "SyntaxError: 'elif' block follows an 'else' block" msgstr "" -#: whatsnew/3.14.rst:525 +#: whatsnew/3.14.rst:667 msgid "" "If a statement (:keyword:`pass`, :keyword:`del`, :keyword:`return`, :keyword:" "`yield`, :keyword:`raise`, :keyword:`break`, :keyword:`continue`, :keyword:" @@ -724,7 +964,7 @@ msgid "" "required. (Contributed by Sergey Miryanov in :gh:`129515`.)" msgstr "" -#: whatsnew/3.14.rst:533 +#: whatsnew/3.14.rst:675 msgid "" ">>> x = 1 if True else pass\n" "Traceback (most recent call last):\n" @@ -741,27 +981,27 @@ msgid "" "SyntaxError: expected expression before 'if', but statement is given" msgstr "" -#: whatsnew/3.14.rst:550 +#: whatsnew/3.14.rst:692 msgid "" "When incorrectly closed strings are detected, the error message suggests " "that the string may be intended to be part of the string. (Contributed by " "Pablo Galindo in :gh:`88535`.)" msgstr "" -#: whatsnew/3.14.rst:554 +#: whatsnew/3.14.rst:696 msgid "" ">>> \"The interesting object \"The important object\" is very important\"\n" "Traceback (most recent call last):\n" "SyntaxError: invalid syntax. Is this intended to be part of the string?" msgstr "" -#: whatsnew/3.14.rst:560 +#: whatsnew/3.14.rst:702 msgid "" "When strings have incompatible prefixes, the error now shows which prefixes " "are incompatible. (Contributed by Nikita Sobolev in :gh:`133197`.)" msgstr "" -#: whatsnew/3.14.rst:564 +#: whatsnew/3.14.rst:706 msgid "" ">>> ub'abc'\n" " File \"\", line 1\n" @@ -770,33 +1010,33 @@ msgid "" "SyntaxError: 'u' and 'b' prefixes are incompatible" msgstr "" -#: whatsnew/3.14.rst:572 +#: whatsnew/3.14.rst:714 msgid "Improved error messages when using ``as`` with incompatible targets in:" msgstr "" -#: whatsnew/3.14.rst:574 +#: whatsnew/3.14.rst:716 msgid "Imports: ``import ... as ...``" msgstr "" -#: whatsnew/3.14.rst:575 +#: whatsnew/3.14.rst:717 msgid "From imports: ``from ... import ... as ...``" msgstr "" -#: whatsnew/3.14.rst:576 +#: whatsnew/3.14.rst:718 msgid "Except handlers: ``except ... as ...``" msgstr "" -#: whatsnew/3.14.rst:577 +#: whatsnew/3.14.rst:719 msgid "Pattern-match cases: ``case ... as ...``" msgstr "" -#: whatsnew/3.14.rst:579 +#: whatsnew/3.14.rst:721 msgid "" "(Contributed by Nikita Sobolev in :gh:`123539`, :gh:`123562`, and :gh:" "`123440`.)" msgstr "" -#: whatsnew/3.14.rst:582 +#: whatsnew/3.14.rst:724 msgid "" ">>> import ast as arr[0]\n" " File \"\", line 1\n" @@ -805,14 +1045,14 @@ msgid "" "SyntaxError: cannot use subscript as import target" msgstr "" -#: whatsnew/3.14.rst:590 +#: whatsnew/3.14.rst:732 msgid "" "Improved error message when trying to add an instance of an unhashable type " "to a :class:`dict` or :class:`set`. (Contributed by CF Bolz-Tereick and " "Victor Stinner in :gh:`132828`.)" msgstr "" -#: whatsnew/3.14.rst:594 +#: whatsnew/3.14.rst:736 msgid "" ">>> s = set()\n" ">>> s.add({'pages': 12, 'grade': 'A'})\n" @@ -831,31 +1071,31 @@ msgid "" "TypeError: cannot use 'list' as a dict key (unhashable type: 'list')" msgstr "" -#: whatsnew/3.14.rst:616 -msgid "PEP 741: Python Configuration C API" +#: whatsnew/3.14.rst:758 +msgid "PEP 741: Python configuration C API" msgstr "" -#: whatsnew/3.14.rst:618 +#: whatsnew/3.14.rst:760 msgid "" "Add a :ref:`PyInitConfig C API ` to configure the Python " "initialization without relying on C structures and the ability to make ABI-" "compatible changes in the future." msgstr "" -#: whatsnew/3.14.rst:622 +#: whatsnew/3.14.rst:764 msgid "" "Complete the :pep:`587` :ref:`PyConfig C API ` by adding :c:" "func:`PyInitConfig_AddModule` which can be used to add a built-in extension " "module; feature previously referred to as the “inittab”." msgstr "" -#: whatsnew/3.14.rst:626 +#: whatsnew/3.14.rst:768 msgid "" "Add :c:func:`PyConfig_Get` and :c:func:`PyConfig_Set` functions to get and " "set the current runtime configuration." msgstr "" -#: whatsnew/3.14.rst:629 +#: whatsnew/3.14.rst:771 msgid "" "PEP 587 “Python Initialization Configuration” unified all the ways to " "configure the Python initialization. This PEP unifies also the configuration " @@ -865,7 +1105,7 @@ msgid "" "the API further." msgstr "" -#: whatsnew/3.14.rst:636 +#: whatsnew/3.14.rst:778 msgid "" "The lower level PEP 587 PyConfig API remains available for use cases with an " "intentionally higher level of coupling to CPython implementation details " @@ -873,29 +1113,29 @@ msgid "" "configuration mechanisms)." msgstr "" -#: whatsnew/3.14.rst:2524 whatsnew/3.14.rst:2543 +#: whatsnew/3.14.rst:2784 whatsnew/3.14.rst:2803 msgid "(Contributed by Victor Stinner in :gh:`107954`.)" msgstr "" -#: whatsnew/3.14.rst:644 +#: whatsnew/3.14.rst:786 msgid ":pep:`741`." msgstr "" -#: whatsnew/3.14.rst:649 +#: whatsnew/3.14.rst:791 msgid "Asyncio introspection capabilities" msgstr "" -#: whatsnew/3.14.rst:651 +#: whatsnew/3.14.rst:793 msgid "" "Added a new command-line interface to inspect running Python processes using " "asynchronous tasks, available via:" msgstr "" -#: whatsnew/3.14.rst:654 +#: whatsnew/3.14.rst:796 msgid "python -m asyncio ps PID" msgstr "" -#: whatsnew/3.14.rst:658 +#: whatsnew/3.14.rst:800 msgid "" "This tool inspects the given process ID (PID) and displays information about " "currently running asyncio tasks. It outputs a task table: a flat listing of " @@ -903,11 +1143,11 @@ msgid "" "them." msgstr "" -#: whatsnew/3.14.rst:663 +#: whatsnew/3.14.rst:805 msgid "python -m asyncio pstree PID" msgstr "" -#: whatsnew/3.14.rst:667 +#: whatsnew/3.14.rst:809 msgid "" "This tool fetches the same information, but renders a visual async call " "tree, showing coroutine relationships in a hierarchical format. This " @@ -917,11 +1157,11 @@ msgid "" "together." msgstr "" -#: whatsnew/3.14.rst:673 +#: whatsnew/3.14.rst:815 msgid "For example given this code:" msgstr "" -#: whatsnew/3.14.rst:675 +#: whatsnew/3.14.rst:817 msgid "" "import asyncio\n" "\n" @@ -946,79 +1186,108 @@ msgid "" " asyncio.run(main())" msgstr "" -#: whatsnew/3.14.rst:698 +#: whatsnew/3.14.rst:840 msgid "" "Executing the new tool on the running process will yield a table like this:" msgstr "" -#: whatsnew/3.14.rst:700 +#: whatsnew/3.14.rst:842 msgid "" "python -m asyncio ps 12345\n" "\n" "tid task id task name coroutine " -"chain awaiter name awaiter id\n" -"---------------------------------------------------------------------------------------------------------------------------------------\n" -"8138752 0x564bd3d0210 " -"Task-1 " +"stack awaiter " +"chain awaiter name awaiter id\n" +"------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\n" +"1935500 0x7fc930c18050 Task-1 TaskGroup._aexit -> " +"TaskGroup.__aexit__ -> " +"main " "0x0\n" -"8138752 0x564bd3d0410 Sundowning _aexit -> __aexit__ -> " -"main Task-1 0x564bd3d0210\n" -"8138752 0x564bd3d0610 TMBTE _aexit -> __aexit__ -> " -"main Task-1 0x564bd3d0210\n" -"8138752 0x564bd3d0810 TNDNBTG _aexit -> __aexit__ -> " -"album Sundowning 0x564bd3d0410\n" -"8138752 0x564bd3d0a10 Levitate _aexit -> __aexit__ -> " -"album Sundowning 0x564bd3d0410\n" -"8138752 0x564bd3e0550 DYWTYLM _aexit -> __aexit__ -> " -"album TMBTE 0x564bd3d0610\n" -"8138752 0x564bd3e0710 Aqua Regia _aexit -> __aexit__ -> " -"album TMBTE 0x564bd3d0610" +"1935500 0x7fc930c18230 Sundowning TaskGroup._aexit -> " +"TaskGroup.__aexit__ -> album TaskGroup._aexit -> TaskGroup.__aexit__ -> " +"main Task-1 0x7fc930c18050\n" +"1935500 0x7fc93173fa50 TMBTE TaskGroup._aexit -> " +"TaskGroup.__aexit__ -> album TaskGroup._aexit -> TaskGroup.__aexit__ -> " +"main Task-1 0x7fc930c18050\n" +"1935500 0x7fc93173fdf0 TNDNBTG sleep -> " +"play TaskGroup._aexit -> TaskGroup." +"__aexit__ -> album Sundowning 0x7fc930c18230\n" +"1935500 0x7fc930d32510 Levitate sleep -> " +"play TaskGroup._aexit -> TaskGroup." +"__aexit__ -> album Sundowning 0x7fc930c18230\n" +"1935500 0x7fc930d32890 DYWTYLM sleep -> " +"play TaskGroup._aexit -> TaskGroup." +"__aexit__ -> album TMBTE 0x7fc93173fa50\n" +"1935500 0x7fc93161ec30 Aqua Regia sleep -> " +"play TaskGroup._aexit -> TaskGroup." +"__aexit__ -> album TMBTE 0x7fc93173fa50" +msgstr "" + +#: whatsnew/3.14.rst:856 +msgid "or a tree like this:" msgstr "" -#: whatsnew/3.14.rst:715 -msgid "or:" -msgstr "" - -#: whatsnew/3.14.rst:717 +#: whatsnew/3.14.rst:858 msgid "" "python -m asyncio pstree 12345\n" "\n" "└── (T) Task-1\n" -" └── main\n" -" └── __aexit__\n" -" └── _aexit\n" +" └── main example.py:13\n" +" └── TaskGroup.__aexit__ Lib/asyncio/taskgroups.py:72\n" +" └── TaskGroup._aexit Lib/asyncio/taskgroups.py:121\n" " ├── (T) Sundowning\n" -" │ └── album\n" -" │ └── __aexit__\n" -" │ └── _aexit\n" +" │ └── album example.py:8\n" +" │ └── TaskGroup.__aexit__ Lib/asyncio/taskgroups." +"py:72\n" +" │ └── TaskGroup._aexit Lib/asyncio/taskgroups." +"py:121\n" " │ ├── (T) TNDNBTG\n" +" │ │ └── play example.py:4\n" +" │ │ └── sleep Lib/asyncio/tasks.py:702\n" " │ └── (T) Levitate\n" +" │ └── play example.py:4\n" +" │ └── sleep Lib/asyncio/tasks.py:702\n" " └── (T) TMBTE\n" -" └── album\n" -" └── __aexit__\n" -" └── _aexit\n" +" └── album example.py:8\n" +" └── TaskGroup.__aexit__ Lib/asyncio/taskgroups." +"py:72\n" +" └── TaskGroup._aexit Lib/asyncio/taskgroups." +"py:121\n" " ├── (T) DYWTYLM\n" -" └── (T) Aqua Regia" +" │ └── play example.py:4\n" +" │ └── sleep Lib/asyncio/tasks.py:702\n" +" └── (T) Aqua Regia\n" +" └── play example.py:4\n" +" └── sleep Lib/asyncio/tasks.py:702" msgstr "" -#: whatsnew/3.14.rst:738 +#: whatsnew/3.14.rst:887 msgid "" "If a cycle is detected in the async await graph (which could indicate a " "programming issue), the tool raises an error and lists the cycle paths that " -"prevent tree construction." +"prevent tree construction:" msgstr "" -#: whatsnew/3.14.rst:742 +#: whatsnew/3.14.rst:891 +msgid "" +"python -m asyncio pstree 12345\n" +"\n" +"ERROR: await-graph contains cycles - cannot print a tree!\n" +"\n" +"cycle: Task-2 → Task-3 → Task-2" +msgstr "" + +#: whatsnew/3.14.rst:899 msgid "" "(Contributed by Pablo Galindo, Łukasz Langa, Yury Selivanov, and Marta Gomez " "Macias in :gh:`91048`.)" msgstr "" -#: whatsnew/3.14.rst:748 +#: whatsnew/3.14.rst:905 msgid "A new type of interpreter" msgstr "" -#: whatsnew/3.14.rst:750 +#: whatsnew/3.14.rst:907 msgid "" "A new type of interpreter has been added to CPython. It uses tail calls " "between small C functions that implement individual Python opcodes, rather " @@ -1030,14 +1299,14 @@ msgid "" "new interpreter." msgstr "" -#: whatsnew/3.14.rst:759 +#: whatsnew/3.14.rst:916 msgid "" "This interpreter currently only works with Clang 19 and newer on x86-64 and " "AArch64 architectures. However, we expect that a future release of GCC will " "support this as well." msgstr "" -#: whatsnew/3.14.rst:763 +#: whatsnew/3.14.rst:920 msgid "" "This feature is opt-in for now. We highly recommend enabling profile-guided " "optimization with the new interpreter as it is the only configuration we " @@ -1045,13 +1314,13 @@ msgid "" "information on how to build Python, see :option:`--with-tail-call-interp`." msgstr "" -#: whatsnew/3.14.rst:771 +#: whatsnew/3.14.rst:928 msgid "" "This is not to be confused with `tail call optimization`__ of Python " "functions, which is currently not implemented in CPython." msgstr "" -#: whatsnew/3.14.rst:774 +#: whatsnew/3.14.rst:931 msgid "" "This new interpreter type is an internal implementation detail of the " "CPython interpreter. It doesn't change the visible behavior of Python " @@ -1059,7 +1328,7 @@ msgid "" "anything else." msgstr "" -#: whatsnew/3.14.rst:782 +#: whatsnew/3.14.rst:939 msgid "" "This section previously reported a 9-15% geometric mean speedup. This number " "has since been cautiously revised down to 3-5%. While we expect performance " @@ -1075,17 +1344,56 @@ msgid "" "light.)" msgstr "" -#: whatsnew/3.14.rst:794 +#: whatsnew/3.14.rst:951 msgid "" "(Contributed by Ken Jin in :gh:`128563`, with ideas on how to implement this " "in CPython by Mark Shannon, Garrett Gu, Haoran Xu, and Josh Haberman.)" msgstr "" -#: whatsnew/3.14.rst:801 +#: whatsnew/3.14.rst:957 +msgid "Free-threaded mode" +msgstr "" + +#: whatsnew/3.14.rst:959 +msgid "" +"Free-threaded mode (:pep:`703`), initially added in 3.13, has been " +"significantly improved. The implementation described in PEP 703 was " +"finished, including C API changes, and temporary workarounds in the " +"interpreter were replaced with more permanent solutions. The specializing " +"adaptive interpreter (:pep:`659`) is now enabled in free-threaded mode, " +"which along with many other optimizations greatly improves its performance. " +"The performance penalty on single-threaded code in free-threaded mode is now " +"roughly 5-10%, depending on platform and C compiler used." +msgstr "" + +#: whatsnew/3.14.rst:967 +msgid "" +"This work was done by many contributors: Sam Gross, Matt Page, Neil " +"Schemenauer, Thomas Wouters, Donghee Na, Kirill Podoprigora, Ken Jin, Itamar " +"Oren, Brett Simmers, Dino Viehland, Nathan Goldbaum, Ralf Gommers, Lysandros " +"Nikolaou, Kumar Aditya, Edgar Margffoy, and many others." +msgstr "" + +#: whatsnew/3.14.rst:972 +msgid "" +"Some of these contributors are employed by Meta, which has continued to " +"provide significant engineering resources to support this project." +msgstr "" + +#: whatsnew/3.14.rst:975 +msgid "" +"From 3.14, when compiling extension modules for the free-threaded build of " +"CPython on Windows, the preprocessor variable ``Py_GIL_DISABLED`` now needs " +"to be specified by the build backend, as it will no longer be determined " +"automatically by the C compiler. For a running interpreter, the setting that " +"was used at compile time can be found using :func:`sysconfig.get_config_var`." +msgstr "" + +#: whatsnew/3.14.rst:985 msgid "Syntax highlighting in PyREPL" msgstr "" -#: whatsnew/3.14.rst:803 +#: whatsnew/3.14.rst:987 msgid "" "The default :term:`interactive` shell now highlights Python syntax as you " "type. The feature is enabled by default unless the :envvar:" @@ -1093,7 +1401,7 @@ msgid "" "variables are used. See :ref:`using-on-controlling-color` for details." msgstr "" -#: whatsnew/3.14.rst:809 +#: whatsnew/3.14.rst:993 msgid "" "The default color theme for syntax highlighting strives for good contrast " "and uses exclusively the 4-bit VGA standard ANSI color codes for maximum " @@ -1102,15 +1410,15 @@ msgid "" "the :envvar:`PYTHONSTARTUP` script." msgstr "" -#: whatsnew/3.14.rst:815 +#: whatsnew/3.14.rst:999 msgid "(Contributed by Łukasz Langa in :gh:`131507`.)" msgstr "" -#: whatsnew/3.14.rst:821 +#: whatsnew/3.14.rst:1005 msgid "Binary releases for the experimental just-in-time compiler" msgstr "" -#: whatsnew/3.14.rst:823 +#: whatsnew/3.14.rst:1007 msgid "" "The official macOS and Windows release binaries now include an " "*experimental* just-in-time (JIT) compiler. Although it is **not** " @@ -1120,7 +1428,7 @@ msgid "" "off` configuration option for similar behavior." msgstr "" -#: whatsnew/3.14.rst:830 +#: whatsnew/3.14.rst:1014 msgid "" "The JIT is at an early stage and still in active development. As such, the " "typical performance impact of enabling it can range from 10% slower to 20% " @@ -1132,7 +1440,7 @@ msgid "" "current process." msgstr "" -#: whatsnew/3.14.rst:838 +#: whatsnew/3.14.rst:1022 msgid "" "Currently, the most significant missing functionality is that native " "debuggers and profilers like ``gdb`` and ``perf`` are unable to unwind " @@ -1141,20 +1449,20 @@ msgid "" "not support JIT compilation." msgstr "" -#: whatsnew/3.14.rst:843 +#: whatsnew/3.14.rst:1027 msgid "" "Please report any bugs or major performance regressions that you encounter!" msgstr "" -#: whatsnew/3.14.rst:845 +#: whatsnew/3.14.rst:1029 msgid ":pep:`744`" msgstr "" -#: whatsnew/3.14.rst:849 +#: whatsnew/3.14.rst:1033 msgid "Other language changes" msgstr "" -#: whatsnew/3.14.rst:851 +#: whatsnew/3.14.rst:1035 msgid "" "The default :term:`interactive` shell now supports import autocompletion. " "This means that typing ``import foo`` and pressing ```` will suggest " @@ -1164,14 +1472,14 @@ msgid "" "in :gh:`69605`.)" msgstr "" -#: whatsnew/3.14.rst:858 +#: whatsnew/3.14.rst:1042 msgid "" "The :func:`map` built-in now has an optional keyword-only *strict* flag " "like :func:`zip` to check that all the iterables are of equal length. " "(Contributed by Wannes Boeykens in :gh:`119793`.)" msgstr "" -#: whatsnew/3.14.rst:862 +#: whatsnew/3.14.rst:1046 msgid "" "Incorrect usage of :keyword:`await` and asynchronous comprehensions is now " "detected even if the code is optimized away by the :option:`-O` command-line " @@ -1179,7 +1487,7 @@ msgid "" "`SyntaxError`. (Contributed by Jelle Zijlstra in :gh:`121637`.)" msgstr "" -#: whatsnew/3.14.rst:867 +#: whatsnew/3.14.rst:1051 msgid "" "Writes to ``__debug__`` are now detected even if the code is optimized away " "by the :option:`-O` command-line option. For example, ``python -O -c 'assert " @@ -1187,7 +1495,7 @@ msgid "" "Katriel in :gh:`122245`.)" msgstr "" -#: whatsnew/3.14.rst:872 +#: whatsnew/3.14.rst:1056 msgid "" "Add class methods :meth:`float.from_number` and :meth:`complex.from_number` " "to convert a number to :class:`float` or :class:`complex` type " @@ -1195,32 +1503,32 @@ msgid "" "(Contributed by Serhiy Storchaka in :gh:`84978`.)" msgstr "" -#: whatsnew/3.14.rst:877 +#: whatsnew/3.14.rst:1061 msgid "" "Implement mixed-mode arithmetic rules combining real and complex numbers as " "specified by C standards since C99. (Contributed by Sergey B Kirpichev in :" "gh:`69639`.)" msgstr "" -#: whatsnew/3.14.rst:881 +#: whatsnew/3.14.rst:1065 msgid "" "All Windows code pages are now supported as \"cpXXX\" codecs on Windows. " "(Contributed by Serhiy Storchaka in :gh:`123803`.)" msgstr "" -#: whatsnew/3.14.rst:884 +#: whatsnew/3.14.rst:1068 msgid "" ":class:`super` objects are now :mod:`pickleable ` and :mod:`copyable " "`. (Contributed by Serhiy Storchaka in :gh:`125767`.)" msgstr "" -#: whatsnew/3.14.rst:888 +#: whatsnew/3.14.rst:1072 msgid "" "The :class:`memoryview` type now supports subscription, making it a :term:" "`generic type`. (Contributed by Brian Schubert in :gh:`126012`.)" msgstr "" -#: whatsnew/3.14.rst:892 +#: whatsnew/3.14.rst:1076 msgid "" "Support underscore and comma as thousands separators in the fractional part " "for floating-point presentation types of the new-style string formatting " @@ -1228,14 +1536,14 @@ msgid "" "Kirpichev in :gh:`87790`.)" msgstr "" -#: whatsnew/3.14.rst:897 +#: whatsnew/3.14.rst:1081 msgid "" "The :func:`bytes.fromhex` and :func:`bytearray.fromhex` methods now accept " "ASCII :class:`bytes` and :term:`bytes-like objects `. " "(Contributed by Daniel Pope in :gh:`129349`.)" msgstr "" -#: whatsnew/3.14.rst:901 +#: whatsnew/3.14.rst:1085 msgid "" "Support ``\\z`` as a synonym for ``\\Z`` in :mod:`regular expressions `. " "It is interpreted unambiguously in many other regular expression engines, " @@ -1243,35 +1551,35 @@ msgid "" "Storchaka in :gh:`133306`.)" msgstr "" -#: whatsnew/3.14.rst:906 +#: whatsnew/3.14.rst:1090 msgid "" "``\\B`` in :mod:`regular expression ` now matches empty input string. " "Now it is always the opposite of ``\\b``. (Contributed by Serhiy Storchaka " "in :gh:`124130`.)" msgstr "" -#: whatsnew/3.14.rst:910 +#: whatsnew/3.14.rst:1094 msgid "" "iOS and macOS apps can now be configured to redirect ``stdout`` and " "``stderr`` content to the system log. (Contributed by Russell Keith-Magee " "in :gh:`127592`.)" msgstr "" -#: whatsnew/3.14.rst:914 +#: whatsnew/3.14.rst:1098 msgid "" "The iOS testbed is now able to stream test output while the test is running. " "The testbed can also be used to run the test suite of projects other than " "CPython itself. (Contributed by Russell Keith-Magee in :gh:`127592`.)" msgstr "" -#: whatsnew/3.14.rst:918 +#: whatsnew/3.14.rst:1102 msgid "" "Three-argument :func:`pow` now tries calling :meth:`~object.__rpow__` if " "necessary. Previously it was only called in two-argument :func:`!pow` and " "the binary power operator. (Contributed by Serhiy Storchaka in :gh:`130104`.)" msgstr "" -#: whatsnew/3.14.rst:923 +#: whatsnew/3.14.rst:1107 msgid "" "Add a built-in implementation for HMAC (:rfc:`2104`) using formally verified " "code from the `HACL* `__ project. " @@ -1279,7 +1587,7 @@ msgid "" "HMAC is not available. (Contributed by Bénédikt Tran in :gh:`99108`.)" msgstr "" -#: whatsnew/3.14.rst:929 +#: whatsnew/3.14.rst:1113 msgid "" "The import time flag can now track modules that are already loaded " "('cached'), via the new :option:`-X importtime=2 <-X>`. When such a module " @@ -1288,7 +1596,7 @@ msgid "" "for future use. (Contributed by Noah Kim and Adam Turner in :gh:`118655`.)" msgstr "" -#: whatsnew/3.14.rst:936 +#: whatsnew/3.14.rst:1120 msgid "" "When subclassing from a pure C type, the C slots for the new type are no " "longer replaced with a wrapped version on class creation if they are not " @@ -1296,14 +1604,14 @@ msgid "" "`132329`.)" msgstr "" -#: whatsnew/3.14.rst:941 +#: whatsnew/3.14.rst:1125 msgid "" "The command-line option :option:`-c` now automatically dedents its code " "argument before execution. The auto-dedentation behavior mirrors :func:" "`textwrap.dedent`. (Contributed by Jon Crall and Steven Sun in :gh:`103998`.)" msgstr "" -#: whatsnew/3.14.rst:946 +#: whatsnew/3.14.rst:1130 msgid "" "Improve error message when an object supporting the synchronous context " "manager protocol is entered using :keyword:`async with` instead of :keyword:" @@ -1311,45 +1619,45 @@ msgid "" "(Contributed by Bénédikt Tran in :gh:`128398`.)" msgstr "" -#: whatsnew/3.14.rst:952 +#: whatsnew/3.14.rst:1136 msgid "" ":option:`!-J` is no longer a reserved flag for Jython_, and now has no " "special meaning. (Contributed by Adam Turner in :gh:`133336`.)" msgstr "" -#: whatsnew/3.14.rst:961 +#: whatsnew/3.14.rst:1145 msgid "" "PEP 765: Disallow ``return``/``break``/``continue`` that exit a ``finally`` " "block" msgstr "" -#: whatsnew/3.14.rst:963 +#: whatsnew/3.14.rst:1147 msgid "" "The compiler emits a :exc:`SyntaxWarning` when a :keyword:`return`, :keyword:" "`break` or :keyword:`continue` statements appears where it exits a :keyword:" "`finally` block. This change is specified in :pep:`765`." msgstr "" -#: whatsnew/3.14.rst:969 +#: whatsnew/3.14.rst:1153 msgid "New modules" msgstr "" -#: whatsnew/3.14.rst:971 +#: whatsnew/3.14.rst:1155 msgid "" ":mod:`annotationlib`: For introspecting :term:`annotations `. " "See :pep:`749` for more details. (Contributed by Jelle Zijlstra in :gh:" "`119180`.)" msgstr "" -#: whatsnew/3.14.rst:977 +#: whatsnew/3.14.rst:1161 msgid "Improved modules" msgstr "" -#: whatsnew/3.14.rst:2141 +#: whatsnew/3.14.rst:2395 msgid "argparse" msgstr "" -#: whatsnew/3.14.rst:982 +#: whatsnew/3.14.rst:1166 msgid "" "The default value of the :ref:`program name ` for :class:`argparse." "ArgumentParser` now reflects the way the Python interpreter was instructed " @@ -1357,7 +1665,7 @@ msgid "" "Alyssa Coghlan in :gh:`66436`.)" msgstr "" -#: whatsnew/3.14.rst:987 +#: whatsnew/3.14.rst:1171 msgid "" "Introduced the optional *suggest_on_error* parameter to :class:`argparse." "ArgumentParser`, enabling suggestions for argument choices and subparser " @@ -1365,7 +1673,7 @@ msgid "" "`124456`.)" msgstr "" -#: whatsnew/3.14.rst:994 +#: whatsnew/3.14.rst:1178 msgid "" "Introduced the optional *color* parameter to :class:`argparse." "ArgumentParser`, enabling color for help text. This can be controlled by :" @@ -1374,62 +1682,83 @@ msgid "" "mod:`!argparse`. (Contributed by Hugo van Kemenade in :gh:`130645`.)" msgstr "" -#: whatsnew/3.14.rst:2156 +#: whatsnew/3.14.rst:2410 msgid "ast" msgstr "" -#: whatsnew/3.14.rst:1005 +#: whatsnew/3.14.rst:1189 msgid "" "Add :func:`ast.compare` for comparing two ASTs. (Contributed by Batuhan " "Taskaya and Jeremy Hylton in :gh:`60191`.)" msgstr "" -#: whatsnew/3.14.rst:1008 +#: whatsnew/3.14.rst:1192 msgid "" "Add support for :func:`copy.replace` for AST nodes. (Contributed by Bénédikt " "Tran in :gh:`121141`.)" msgstr "" -#: whatsnew/3.14.rst:1011 +#: whatsnew/3.14.rst:1195 msgid "" "Docstrings are now removed from an optimized AST in optimization level 2. " "(Contributed by Irit Katriel in :gh:`123958`.)" msgstr "" -#: whatsnew/3.14.rst:1014 +#: whatsnew/3.14.rst:1198 msgid "" "The ``repr()`` output for AST nodes now includes more information. " "(Contributed by Tomas Roun in :gh:`116022`.)" msgstr "" -#: whatsnew/3.14.rst:1017 +#: whatsnew/3.14.rst:1201 msgid "" ":func:`ast.parse`, when called with an AST as input, now always verifies " "that the root node type is appropriate. (Contributed by Irit Katriel in :gh:" "`130139`.)" msgstr "" -#: whatsnew/3.14.rst:1021 +#: whatsnew/3.14.rst:1205 msgid "" "Add new ``--feature-version``, ``--optimize``, ``--show-empty`` options to " "command-line interface. (Contributed by Semyon Moroz in :gh:`133367`.)" msgstr "" -#: whatsnew/3.14.rst:1027 +#: whatsnew/3.14.rst:2186 whatsnew/3.14.rst:2438 +msgid "asyncio" +msgstr "" + +#: whatsnew/3.14.rst:1213 +msgid "" +"The function and methods named :func:`!create_task` now take an arbitrary " +"list of keyword arguments. All keyword arguments are passed to the :class:" +"`~asyncio.Task` constructor or the custom task factory. (See :meth:`~asyncio." +"loop.set_task_factory` for details.) The ``name`` and ``context`` keyword " +"arguments are no longer special; the name should now be set using the " +"``name`` keyword argument of the factory, and ``context`` may be ``None``." +msgstr "" + +#: whatsnew/3.14.rst:1221 +msgid "" +"This affects the following function and methods: :meth:`asyncio." +"create_task`, :meth:`asyncio.loop.create_task`, :meth:`asyncio.TaskGroup." +"create_task`. (Contributed by Thomas Grainger in :gh:`128307`.)" +msgstr "" + +#: whatsnew/3.14.rst:1229 msgid "bdb" msgstr "" -#: whatsnew/3.14.rst:1029 +#: whatsnew/3.14.rst:1231 msgid "" "The :mod:`bdb` module now supports the :mod:`sys.monitoring` backend. " "(Contributed by Tian Gao in :gh:`124533`.)" msgstr "" -#: whatsnew/3.14.rst:1036 +#: whatsnew/3.14.rst:1238 msgid "calendar" msgstr "" -#: whatsnew/3.14.rst:1038 +#: whatsnew/3.14.rst:1240 msgid "" "By default, today's date is highlighted in color in :mod:`calendar`'s :ref:" "`command-line ` text output. This can be controlled by :ref:" @@ -1437,11 +1766,11 @@ msgid "" "van Kemenade in :gh:`128317`.)" msgstr "" -#: whatsnew/3.14.rst:1046 +#: whatsnew/3.14.rst:1248 msgid "concurrent.futures" msgstr "" -#: whatsnew/3.14.rst:1048 +#: whatsnew/3.14.rst:1252 msgid "" "Add :class:`~concurrent.futures.InterpreterPoolExecutor`, which exposes " "\"subinterpreters\" (multiple Python interpreters in the same process) to " @@ -1449,7 +1778,7 @@ msgid "" "(Contributed by Eric Snow in :gh:`124548`.)" msgstr "" -#: whatsnew/3.14.rst:1056 +#: whatsnew/3.14.rst:1260 msgid "" "The default :class:`~concurrent.futures.ProcessPoolExecutor` :ref:`start " "method ` changed from :ref:`fork " @@ -1458,14 +1787,14 @@ msgid "" "was already :ref:`spawn `." msgstr "" -#: whatsnew/3.14.rst:1062 +#: whatsnew/3.14.rst:1266 msgid "" "If the threading incompatible *fork* method is required, you must explicitly " "request it by supplying a multiprocessing context *mp_context* to :class:" "`~concurrent.futures.ProcessPoolExecutor`." msgstr "" -#: whatsnew/3.14.rst:1485 +#: whatsnew/3.14.rst:1700 msgid "" "See :ref:`forkserver restrictions ` " "for information and differences with the *fork* method and how this change " @@ -1473,11 +1802,11 @@ msgid "" "objects that can not be automatically :mod:`pickled `." msgstr "" -#: whatsnew/3.14.rst:1490 +#: whatsnew/3.14.rst:1705 msgid "(Contributed by Gregory P. Smith in :gh:`84559`.)" msgstr "" -#: whatsnew/3.14.rst:1073 +#: whatsnew/3.14.rst:1277 msgid "" "Add :meth:`concurrent.futures.ProcessPoolExecutor.terminate_workers` and :" "meth:`concurrent.futures.ProcessPoolExecutor.kill_workers` as ways to " @@ -1485,7 +1814,7 @@ msgid "" "(Contributed by Charles Machalow in :gh:`130849`.)" msgstr "" -#: whatsnew/3.14.rst:1078 +#: whatsnew/3.14.rst:1282 msgid "" "Add the optional ``buffersize`` parameter to :meth:`concurrent.futures." "Executor.map` to limit the number of submitted tasks whose results have not " @@ -1494,21 +1823,33 @@ msgid "" "Bonnal and Josh Rosenberg in :gh:`74028`.)" msgstr "" -#: whatsnew/3.14.rst:1087 +#: whatsnew/3.14.rst:1290 +msgid "configparser" +msgstr "" + +#: whatsnew/3.14.rst:1292 +msgid "" +"Security fix: will no longer write config files it cannot read. Attempting " +"to :meth:`configparser.ConfigParser.write` keys containing delimiters or " +"beginning with the section header pattern will raise a :class:`configparser." +"InvalidWriteError`. (Contributed by Jacob Lincoln in :gh:`129270`.)" +msgstr "" + +#: whatsnew/3.14.rst:1299 msgid "contextvars" msgstr "" -#: whatsnew/3.14.rst:1089 +#: whatsnew/3.14.rst:1301 msgid "" "Support context manager protocol by :class:`contextvars.Token`. (Contributed " "by Andrew Svetlov in :gh:`129889`.)" msgstr "" -#: whatsnew/3.14.rst:1094 +#: whatsnew/3.14.rst:1306 msgid "ctypes" msgstr "" -#: whatsnew/3.14.rst:1096 +#: whatsnew/3.14.rst:1308 msgid "" "The layout of :ref:`bit fields ` in :" "class:`~ctypes.Structure` and :class:`~ctypes.Union` now matches platform " @@ -1516,13 +1857,13 @@ msgid "" "overlap. (Contributed by Matthias Görgens in :gh:`97702`.)" msgstr "" -#: whatsnew/3.14.rst:1102 +#: whatsnew/3.14.rst:1314 msgid "" "The :attr:`.Structure._layout_` class attribute can now be set to help match " "a non-default ABI. (Contributed by Petr Viktorin in :gh:`97702`.)" msgstr "" -#: whatsnew/3.14.rst:1106 +#: whatsnew/3.14.rst:1318 msgid "" "The class of :class:`~ctypes.Structure`/:class:`~ctypes.Union` field " "descriptors is now available as :class:`~ctypes.CField`, and has new " @@ -1530,19 +1871,19 @@ msgid "" "in :gh:`128715`.)" msgstr "" -#: whatsnew/3.14.rst:1111 +#: whatsnew/3.14.rst:1323 msgid "" "On Windows, the :exc:`~ctypes.COMError` exception is now public. " "(Contributed by Jun Komoda in :gh:`126686`.)" msgstr "" -#: whatsnew/3.14.rst:1114 +#: whatsnew/3.14.rst:1326 msgid "" "On Windows, the :func:`~ctypes.CopyComPointer` function is now public. " "(Contributed by Jun Komoda in :gh:`127275`.)" msgstr "" -#: whatsnew/3.14.rst:1117 +#: whatsnew/3.14.rst:1329 msgid "" ":func:`ctypes.memoryview_at` now exists to create a :class:`memoryview` " "object that refers to the supplied pointer and length. This works like :func:" @@ -1551,7 +1892,7 @@ msgid "" "sized buffers. (Contributed by Rian Hunter in :gh:`112018`.)" msgstr "" -#: whatsnew/3.14.rst:1124 +#: whatsnew/3.14.rst:1336 msgid "" "Complex types, :class:`~ctypes.c_float_complex`, :class:`~ctypes." "c_double_complex` and :class:`~ctypes.c_longdouble_complex`, are now " @@ -1559,13 +1900,13 @@ msgid "" "types. (Contributed by Sergey B Kirpichev in :gh:`61103`.)" msgstr "" -#: whatsnew/3.14.rst:1130 +#: whatsnew/3.14.rst:1342 msgid "" "Add :func:`ctypes.util.dllist` for listing the shared libraries loaded by " "the current process. (Contributed by Brian Ward in :gh:`119349`.)" msgstr "" -#: whatsnew/3.14.rst:1134 +#: whatsnew/3.14.rst:1346 msgid "" "Move :func:`ctypes.POINTER` types cache from a global internal cache " "(``_pointer_type_cache``) to the :attr:`ctypes._CData.__pointer_type__` " @@ -1574,67 +1915,73 @@ msgid "" "Miryanov in :gh:`100926`.)" msgstr "" -#: whatsnew/3.14.rst:1140 +#: whatsnew/3.14.rst:1352 msgid "" "The :class:`ctypes.py_object` type now supports subscription, making it a :" "term:`generic type`. (Contributed by Brian Schubert in :gh:`132168`.)" msgstr "" -#: whatsnew/3.14.rst:1145 +#: whatsnew/3.14.rst:1356 +msgid "" +":mod:`ctypes` now supports :term:`free-threading builds `. " +"(Contributed by Kumar Aditya and Peter Bierma in :gh:`127945`.)" +msgstr "" + +#: whatsnew/3.14.rst:1360 msgid "curses" msgstr "" -#: whatsnew/3.14.rst:1147 +#: whatsnew/3.14.rst:1362 msgid "" "Add the :func:`~curses.assume_default_colors` function, a refinement of the :" "func:`~curses.use_default_colors` function which allows to change the color " "pair ``0``. (Contributed by Serhiy Storchaka in :gh:`133139`.)" msgstr "" -#: whatsnew/3.14.rst:1153 +#: whatsnew/3.14.rst:1368 msgid "datetime" msgstr "" -#: whatsnew/3.14.rst:1155 +#: whatsnew/3.14.rst:1370 msgid "" "Add :meth:`datetime.time.strptime` and :meth:`datetime.date.strptime`. " "(Contributed by Wannes Boeykens in :gh:`41431`.)" msgstr "" -#: whatsnew/3.14.rst:1159 +#: whatsnew/3.14.rst:1374 msgid "decimal" msgstr "" -#: whatsnew/3.14.rst:1161 +#: whatsnew/3.14.rst:1376 msgid "" "Add alternative :class:`~decimal.Decimal` constructor :meth:`Decimal." "from_number() `. (Contributed by Serhiy " "Storchaka in :gh:`121798`.)" msgstr "" -#: whatsnew/3.14.rst:1165 +#: whatsnew/3.14.rst:1380 msgid "" "Expose :func:`decimal.IEEEContext` to support creation of contexts " "corresponding to the IEEE 754 (2008) decimal interchange formats. " "(Contributed by Sergey B Kirpichev in :gh:`53032`.)" msgstr "" -#: whatsnew/3.14.rst:1170 +#: whatsnew/3.14.rst:1385 msgid "difflib" msgstr "" -#: whatsnew/3.14.rst:1172 +#: whatsnew/3.14.rst:1387 msgid "" "Comparison pages with highlighted changes generated by the :class:`difflib." "HtmlDiff` class now support dark mode. (Contributed by Jiahao Li in :gh:" "`129939`.)" msgstr "" -#: whatsnew/3.14.rst:1177 +#: whatsnew/3.14.rst:1392 msgid "dis" msgstr "" -#: whatsnew/3.14.rst:1179 +#: whatsnew/3.14.rst:1394 msgid "" "Add support for rendering full source location information of :class:" "`instructions `, rather than only the line number. This " @@ -1642,49 +1989,49 @@ msgid "" "keyword argument:" msgstr "" -#: whatsnew/3.14.rst:1184 +#: whatsnew/3.14.rst:1399 msgid ":class:`dis.Bytecode`" msgstr "" -#: whatsnew/3.14.rst:1185 +#: whatsnew/3.14.rst:1400 msgid ":func:`dis.dis`" msgstr "" -#: whatsnew/3.14.rst:1186 +#: whatsnew/3.14.rst:1401 msgid ":func:`dis.distb`" msgstr "" -#: whatsnew/3.14.rst:1187 +#: whatsnew/3.14.rst:1402 msgid ":func:`dis.disassemble`" msgstr "" -#: whatsnew/3.14.rst:1189 +#: whatsnew/3.14.rst:1404 msgid "" "This feature is also exposed via :option:`dis --show-positions`. " "(Contributed by Bénédikt Tran in :gh:`123165`.)" msgstr "" -#: whatsnew/3.14.rst:1192 +#: whatsnew/3.14.rst:1407 msgid "" "Add the :option:`dis --specialized` command-line option to show specialized " "bytecode. (Contributed by Bénédikt Tran in :gh:`127413`.)" msgstr "" -#: whatsnew/3.14.rst:1198 +#: whatsnew/3.14.rst:1413 msgid "errno" msgstr "" -#: whatsnew/3.14.rst:1200 +#: whatsnew/3.14.rst:1415 msgid "" "Add :data:`errno.EHWPOISON` error code. (Contributed by James Roy in :gh:" "`126585`.)" msgstr "" -#: whatsnew/3.14.rst:1205 +#: whatsnew/3.14.rst:1420 msgid "faulthandler" msgstr "" -#: whatsnew/3.14.rst:1207 +#: whatsnew/3.14.rst:1422 msgid "" "Add support for printing the C stack trace on systems that :ref:`support it " "` via :func:`faulthandler.dump_c_stack` or via the " @@ -1692,72 +2039,72 @@ msgid "" "Bierma in :gh:`127604`.)" msgstr "" -#: whatsnew/3.14.rst:1214 +#: whatsnew/3.14.rst:1429 msgid "fnmatch" msgstr "" -#: whatsnew/3.14.rst:1216 +#: whatsnew/3.14.rst:1431 msgid "" "Added :func:`fnmatch.filterfalse` for excluding names matching a pattern. " "(Contributed by Bénédikt Tran in :gh:`74598`.)" msgstr "" -#: whatsnew/3.14.rst:1221 +#: whatsnew/3.14.rst:1436 msgid "fractions" msgstr "" -#: whatsnew/3.14.rst:1223 +#: whatsnew/3.14.rst:1438 msgid "" "Add support for converting any objects that have the :meth:`!" "as_integer_ratio` method to a :class:`~fractions.Fraction`. (Contributed by " "Serhiy Storchaka in :gh:`82017`.)" msgstr "" -#: whatsnew/3.14.rst:1227 +#: whatsnew/3.14.rst:1442 msgid "" "Add alternative :class:`~fractions.Fraction` constructor :meth:`Fraction." "from_number() `. (Contributed by Serhiy " "Storchaka in :gh:`121797`.)" msgstr "" -#: whatsnew/3.14.rst:1233 +#: whatsnew/3.14.rst:1448 msgid "functools" msgstr "" -#: whatsnew/3.14.rst:1235 +#: whatsnew/3.14.rst:1450 msgid "" "Add support to :func:`functools.partial` and :func:`functools.partialmethod` " "for :data:`functools.Placeholder` sentinels to reserve a place for " "positional arguments. (Contributed by Dominykas Grigonis in :gh:`119127`.)" msgstr "" -#: whatsnew/3.14.rst:1240 +#: whatsnew/3.14.rst:1455 msgid "" "Allow the *initial* parameter of :func:`functools.reduce` to be passed as a " "keyword argument. (Contributed by Sayandip Dutta in :gh:`125916`.)" msgstr "" -#: whatsnew/3.14.rst:1246 +#: whatsnew/3.14.rst:1461 msgid "getopt" msgstr "" -#: whatsnew/3.14.rst:1248 +#: whatsnew/3.14.rst:1463 msgid "" "Add support for options with optional arguments. (Contributed by Serhiy " "Storchaka in :gh:`126374`.)" msgstr "" -#: whatsnew/3.14.rst:1251 +#: whatsnew/3.14.rst:1466 msgid "" "Add support for returning intermixed options and non-option arguments in " "order. (Contributed by Serhiy Storchaka in :gh:`126390`.)" msgstr "" -#: whatsnew/3.14.rst:1256 +#: whatsnew/3.14.rst:1471 msgid "getpass" msgstr "" -#: whatsnew/3.14.rst:1258 +#: whatsnew/3.14.rst:1473 msgid "" "Support keyboard feedback by :func:`getpass.getpass` via the keyword-only " "optional argument ``echo_char``. Placeholder characters are rendered " @@ -1765,68 +2112,68 @@ msgid "" "(Contributed by Semyon Moroz in :gh:`77065`.)" msgstr "" -#: whatsnew/3.14.rst:1265 +#: whatsnew/3.14.rst:1480 msgid "graphlib" msgstr "" -#: whatsnew/3.14.rst:1267 +#: whatsnew/3.14.rst:1482 msgid "" "Allow :meth:`graphlib.TopologicalSorter.prepare` to be called more than once " "as long as sorting has not started. (Contributed by Daniel Pope in :gh:" "`130914`.)" msgstr "" -#: whatsnew/3.14.rst:1273 +#: whatsnew/3.14.rst:1488 msgid "heapq" msgstr "" -#: whatsnew/3.14.rst:1275 +#: whatsnew/3.14.rst:1490 msgid "Add functions for working with max-heaps:" msgstr "" -#: whatsnew/3.14.rst:1277 +#: whatsnew/3.14.rst:1492 msgid ":func:`heapq.heapify_max`," msgstr "" -#: whatsnew/3.14.rst:1278 +#: whatsnew/3.14.rst:1493 msgid ":func:`heapq.heappush_max`," msgstr "" -#: whatsnew/3.14.rst:1279 +#: whatsnew/3.14.rst:1494 msgid ":func:`heapq.heappop_max`," msgstr "" -#: whatsnew/3.14.rst:1280 +#: whatsnew/3.14.rst:1495 msgid ":func:`heapq.heapreplace_max`" msgstr "" -#: whatsnew/3.14.rst:1281 +#: whatsnew/3.14.rst:1496 msgid ":func:`heapq.heappushpop_max`" msgstr "" -#: whatsnew/3.14.rst:1285 +#: whatsnew/3.14.rst:1500 msgid "hmac" msgstr "" -#: whatsnew/3.14.rst:1287 +#: whatsnew/3.14.rst:1502 msgid "" "Add a built-in implementation for HMAC (:rfc:`2104`) using formally verified " "code from the `HACL* `__ project. " "(Contributed by Bénédikt Tran in :gh:`99108`.)" msgstr "" -#: whatsnew/3.14.rst:1293 +#: whatsnew/3.14.rst:1508 msgid "http" msgstr "" -#: whatsnew/3.14.rst:1295 +#: whatsnew/3.14.rst:1510 msgid "" "Directory lists and error pages generated by the :mod:`http.server` module " "allow the browser to apply its default dark mode. (Contributed by Yorik " "Hansen in :gh:`123430`.)" msgstr "" -#: whatsnew/3.14.rst:1299 +#: whatsnew/3.14.rst:1514 msgid "" "The :mod:`http.server` module now supports serving over HTTPS using the :" "class:`http.server.HTTPSServer` class. This functionality is exposed by the " @@ -1834,71 +2181,71 @@ msgid "" "options:" msgstr "" -#: whatsnew/3.14.rst:1304 +#: whatsnew/3.14.rst:1519 msgid "``--tls-cert ``: Path to the TLS certificate file." msgstr "" -#: whatsnew/3.14.rst:1305 +#: whatsnew/3.14.rst:1520 msgid "``--tls-key ``: Optional path to the private key file." msgstr "" -#: whatsnew/3.14.rst:1306 +#: whatsnew/3.14.rst:1521 msgid "" "``--tls-password-file ``: Optional path to the password file for the " "private key." msgstr "" -#: whatsnew/3.14.rst:1308 +#: whatsnew/3.14.rst:1523 msgid "(Contributed by Semyon Moroz in :gh:`85162`.)" msgstr "" -#: whatsnew/3.14.rst:1312 +#: whatsnew/3.14.rst:1527 msgid "imaplib" msgstr "" -#: whatsnew/3.14.rst:1314 +#: whatsnew/3.14.rst:1529 msgid "" "Add :meth:`IMAP4.idle() `, implementing the IMAP4 " "``IDLE`` command as defined in :rfc:`2177`. (Contributed by Forest in :gh:" "`55454`.)" msgstr "" -#: whatsnew/3.14.rst:1320 +#: whatsnew/3.14.rst:1535 msgid "inspect" msgstr "" -#: whatsnew/3.14.rst:1322 +#: whatsnew/3.14.rst:1537 msgid "" ":func:`inspect.signature` takes a new argument *annotation_format* to " "control the :class:`annotationlib.Format` used for representing annotations. " "(Contributed by Jelle Zijlstra in :gh:`101552`.)" msgstr "" -#: whatsnew/3.14.rst:1326 +#: whatsnew/3.14.rst:1541 msgid "" ":meth:`inspect.Signature.format` takes a new argument *unquote_annotations*. " "If true, string :term:`annotations ` are displayed without " "surrounding quotes. (Contributed by Jelle Zijlstra in :gh:`101552`.)" msgstr "" -#: whatsnew/3.14.rst:1330 +#: whatsnew/3.14.rst:1545 msgid "" "Add function :func:`inspect.ispackage` to determine whether an object is a :" "term:`package` or not. (Contributed by Zhikang Yan in :gh:`125634`.)" msgstr "" -#: whatsnew/3.14.rst:1961 +#: whatsnew/3.14.rst:2216 msgid "io" msgstr "" -#: whatsnew/3.14.rst:1338 +#: whatsnew/3.14.rst:1553 msgid "" "Reading text from a non-blocking stream with ``read`` may now raise a :exc:" "`BlockingIOError` if the operation cannot immediately return bytes. " "(Contributed by Giovanni Siragusa in :gh:`109523`.)" msgstr "" -#: whatsnew/3.14.rst:1342 +#: whatsnew/3.14.rst:1557 msgid "" "Add protocols :class:`io.Reader` and :class:`io.Writer` as a simpler " "alternatives to the pseudo-protocols :class:`typing.IO`, :class:`typing." @@ -1906,17 +2253,17 @@ msgid "" "gh:`127648`.)" msgstr "" -#: whatsnew/3.14.rst:1349 +#: whatsnew/3.14.rst:1564 msgid "json" msgstr "" -#: whatsnew/3.14.rst:1351 +#: whatsnew/3.14.rst:1566 msgid "" "Add notes for JSON serialization errors that allow to identify the source of " "the error. (Contributed by Serhiy Storchaka in :gh:`122163`.)" msgstr "" -#: whatsnew/3.14.rst:1355 +#: whatsnew/3.14.rst:1570 msgid "" "Enable the :mod:`json` module to work as a script using the :option:`-m` " "switch: :program:`python -m json`. See the :ref:`JSON command-line interface " @@ -1924,7 +2271,7 @@ msgid "" "`122873`.)" msgstr "" -#: whatsnew/3.14.rst:1362 +#: whatsnew/3.14.rst:1577 msgid "" "By default, the output of the :ref:`JSON command-line interface ` is highlighted in color. This can be controlled by :ref:" @@ -1932,49 +2279,49 @@ msgid "" "Roun in :gh:`131952`.)" msgstr "" -#: whatsnew/3.14.rst:1369 +#: whatsnew/3.14.rst:1584 msgid "linecache" msgstr "" -#: whatsnew/3.14.rst:1371 +#: whatsnew/3.14.rst:1586 msgid "" ":func:`linecache.getline` can retrieve source code for frozen modules. " "(Contributed by Tian Gao in :gh:`131638`.)" msgstr "" -#: whatsnew/3.14.rst:1376 +#: whatsnew/3.14.rst:1591 msgid "logging.handlers" msgstr "" -#: whatsnew/3.14.rst:1378 +#: whatsnew/3.14.rst:1593 msgid "" ":class:`logging.handlers.QueueListener` now implements the context manager " "protocol, allowing it to be used in a :keyword:`with` statement. " "(Contributed by Charles Machalow in :gh:`132106`.)" msgstr "" -#: whatsnew/3.14.rst:1382 +#: whatsnew/3.14.rst:1597 msgid "" ":meth:`QueueListener.start ` now " "raises a :exc:`RuntimeError` if the listener is already started. " "(Contributed by Charles Machalow in :gh:`132106`.)" msgstr "" -#: whatsnew/3.14.rst:1388 +#: whatsnew/3.14.rst:1603 msgid "math" msgstr "" -#: whatsnew/3.14.rst:1390 +#: whatsnew/3.14.rst:1605 msgid "" "Added more detailed error messages for domain errors in the module. " "(Contributed by by Charlie Zhao and Sergey B Kirpichev in :gh:`101410`.)" msgstr "" -#: whatsnew/3.14.rst:1395 +#: whatsnew/3.14.rst:1610 msgid "mimetypes" msgstr "" -#: whatsnew/3.14.rst:1397 +#: whatsnew/3.14.rst:1612 msgid "" "Document the command-line for :mod:`mimetypes`. It now exits with ``1`` on " "failure instead of ``0`` and ``2`` on incorrect command-line parameters " @@ -1983,202 +2330,202 @@ msgid "" "Kemenade in :gh:`93096`.)" msgstr "" -#: whatsnew/3.14.rst:1404 +#: whatsnew/3.14.rst:1619 msgid "Add MS and :rfc:`8081` MIME types for fonts:" msgstr "" -#: whatsnew/3.14.rst:1406 +#: whatsnew/3.14.rst:1621 msgid "Embedded OpenType: ``application/vnd.ms-fontobject``" msgstr "" -#: whatsnew/3.14.rst:1407 +#: whatsnew/3.14.rst:1622 msgid "OpenType Layout (OTF) ``font/otf``" msgstr "" -#: whatsnew/3.14.rst:1408 +#: whatsnew/3.14.rst:1623 msgid "TrueType: ``font/ttf``" msgstr "" -#: whatsnew/3.14.rst:1409 +#: whatsnew/3.14.rst:1624 msgid "WOFF 1.0 ``font/woff``" msgstr "" -#: whatsnew/3.14.rst:1410 +#: whatsnew/3.14.rst:1625 msgid "WOFF 2.0 ``font/woff2``" msgstr "" -#: whatsnew/3.14.rst:1412 +#: whatsnew/3.14.rst:1627 msgid "(Contributed by Sahil Prajapati and Hugo van Kemenade in :gh:`84852`.)" msgstr "" -#: whatsnew/3.14.rst:1414 +#: whatsnew/3.14.rst:1629 msgid "" "Add :rfc:`9559` MIME types for Matroska audiovisual data container " "structures, containing:" msgstr "" -#: whatsnew/3.14.rst:1417 +#: whatsnew/3.14.rst:1632 msgid "audio with no video: ``audio/matroska`` (``.mka``)" msgstr "" -#: whatsnew/3.14.rst:1418 +#: whatsnew/3.14.rst:1633 msgid "video: ``video/matroska`` (``.mkv``)" msgstr "" -#: whatsnew/3.14.rst:1419 +#: whatsnew/3.14.rst:1634 msgid "stereoscopic video: ``video/matroska-3d`` (``.mk3d``)" msgstr "" -#: whatsnew/3.14.rst:1421 +#: whatsnew/3.14.rst:1636 msgid "(Contributed by Hugo van Kemenade in :gh:`89416`.)" msgstr "" -#: whatsnew/3.14.rst:1423 +#: whatsnew/3.14.rst:1638 msgid "Add MIME types for images with RFCs:" msgstr "" -#: whatsnew/3.14.rst:1425 +#: whatsnew/3.14.rst:1640 msgid ":rfc:`1494`: CCITT Group 3 (``.g3``)" msgstr "" -#: whatsnew/3.14.rst:1426 +#: whatsnew/3.14.rst:1641 msgid ":rfc:`3362`: Real-time Facsimile, T.38 (``.t38``)" msgstr "" -#: whatsnew/3.14.rst:1427 +#: whatsnew/3.14.rst:1642 msgid "" ":rfc:`3745`: JPEG 2000 (``.jp2``), extension (``.jpx``) and compound (``." "jpm``)" msgstr "" -#: whatsnew/3.14.rst:1428 +#: whatsnew/3.14.rst:1643 msgid ":rfc:`3950`: Tag Image File Format Fax eXtended, TIFF-FX (``.tfx``)" msgstr "" -#: whatsnew/3.14.rst:1429 +#: whatsnew/3.14.rst:1644 msgid ":rfc:`4047`: Flexible Image Transport System (``.fits``)" msgstr "" -#: whatsnew/3.14.rst:1430 +#: whatsnew/3.14.rst:1645 msgid "" ":rfc:`7903`: Enhanced Metafile (``.emf``) and Windows Metafile (``.wmf``)" msgstr "" -#: whatsnew/3.14.rst:1432 +#: whatsnew/3.14.rst:1647 msgid "(Contributed by Hugo van Kemenade in :gh:`85957`.)" msgstr "" -#: whatsnew/3.14.rst:1434 +#: whatsnew/3.14.rst:1649 msgid "More MIME type changes:" msgstr "" -#: whatsnew/3.14.rst:1436 +#: whatsnew/3.14.rst:1651 msgid "" ":rfc:`2361`: Change type for ``.avi`` to ``video/vnd.avi`` and for ``.wav`` " "to ``audio/vnd.wave``" msgstr "" -#: whatsnew/3.14.rst:1438 +#: whatsnew/3.14.rst:1653 msgid ":rfc:`4337`: Add MPEG-4 ``audio/mp4`` (``.m4a``)" msgstr "" -#: whatsnew/3.14.rst:1439 +#: whatsnew/3.14.rst:1654 msgid ":rfc:`5334`: Add Ogg media (``.oga``, ``.ogg`` and ``.ogx``)" msgstr "" -#: whatsnew/3.14.rst:1440 +#: whatsnew/3.14.rst:1655 msgid ":rfc:`6713`: Add gzip ``application/gzip`` (``.gz``)" msgstr "" -#: whatsnew/3.14.rst:1441 +#: whatsnew/3.14.rst:1656 msgid ":rfc:`9639`: Add FLAC ``audio/flac`` (``.flac``)" msgstr "" -#: whatsnew/3.14.rst:1442 +#: whatsnew/3.14.rst:1657 msgid "Add 7z ``application/x-7z-compressed`` (``.7z``)" msgstr "" -#: whatsnew/3.14.rst:1443 +#: whatsnew/3.14.rst:1658 msgid "" "Add Android Package ``application/vnd.android.package-archive`` (``.apk``) " "when not strict" msgstr "" -#: whatsnew/3.14.rst:1445 +#: whatsnew/3.14.rst:1660 msgid "Add deb ``application/x-debian-package`` (``.deb``)" msgstr "" -#: whatsnew/3.14.rst:1446 +#: whatsnew/3.14.rst:1661 msgid "Add glTF binary ``model/gltf-binary`` (``.glb``)" msgstr "" -#: whatsnew/3.14.rst:1447 +#: whatsnew/3.14.rst:1662 msgid "Add glTF JSON/ASCII ``model/gltf+json`` (``.gltf``)" msgstr "" -#: whatsnew/3.14.rst:1448 +#: whatsnew/3.14.rst:1663 msgid "Add M4V ``video/x-m4v`` (``.m4v``)" msgstr "" -#: whatsnew/3.14.rst:1449 +#: whatsnew/3.14.rst:1664 msgid "Add PHP ``application/x-httpd-php`` (``.php``)" msgstr "" -#: whatsnew/3.14.rst:1450 +#: whatsnew/3.14.rst:1665 msgid "Add RAR ``application/vnd.rar`` (``.rar``)" msgstr "" -#: whatsnew/3.14.rst:1451 +#: whatsnew/3.14.rst:1666 msgid "Add RPM ``application/x-rpm`` (``.rpm``)" msgstr "" -#: whatsnew/3.14.rst:1452 +#: whatsnew/3.14.rst:1667 msgid "Add STL ``model/stl`` (``.stl``)" msgstr "" -#: whatsnew/3.14.rst:1453 +#: whatsnew/3.14.rst:1668 msgid "Add Windows Media Video ``video/x-ms-wmv`` (``.wmv``)" msgstr "" -#: whatsnew/3.14.rst:1454 +#: whatsnew/3.14.rst:1669 msgid "De facto: Add WebM ``audio/webm`` (``.weba``)" msgstr "" -#: whatsnew/3.14.rst:1455 +#: whatsnew/3.14.rst:1670 msgid "" "`ECMA-376 `__: Add ``.docx``, ``.pptx`` and ``.xlsx`` types" msgstr "" -#: whatsnew/3.14.rst:1458 +#: whatsnew/3.14.rst:1673 msgid "" "`OASIS `__: Add OpenDocument ``.odg``, ``.odp``, ``.ods`` and " "``.odt`` types" msgstr "" -#: whatsnew/3.14.rst:1461 +#: whatsnew/3.14.rst:1676 msgid "" "`W3C `__: Add EPUB " "``application/epub+zip`` (``.epub``)" msgstr "" -#: whatsnew/3.14.rst:1464 +#: whatsnew/3.14.rst:1679 msgid "(Contributed by Hugo van Kemenade in :gh:`129965`.)" msgstr "" -#: whatsnew/3.14.rst:1466 +#: whatsnew/3.14.rst:1681 msgid "" "Add :rfc:`9512` ``application/yaml`` MIME type for YAML files (``.yaml`` and " "``.yml``). (Contributed by Sasha \"Nelie\" Chernykh and Hugo van Kemenade " "in :gh:`132056`.)" msgstr "" -#: whatsnew/3.14.rst:1472 +#: whatsnew/3.14.rst:1687 msgid "multiprocessing" msgstr "" -#: whatsnew/3.14.rst:1476 +#: whatsnew/3.14.rst:1691 msgid "" "The default :ref:`start method ` changed " "from :ref:`fork ` to :ref:`forkserver " @@ -2187,7 +2534,7 @@ msgid "" "spawn>`." msgstr "" -#: whatsnew/3.14.rst:1481 +#: whatsnew/3.14.rst:1696 msgid "" "If the threading incompatible *fork* method is required, you must explicitly " "request it via a context from :func:`multiprocessing.get_context` " @@ -2195,7 +2542,7 @@ msgid "" "set_start_method`." msgstr "" -#: whatsnew/3.14.rst:1492 +#: whatsnew/3.14.rst:1707 msgid "" ":mod:`multiprocessing`'s ``\"forkserver\"`` start method now authenticates " "its control socket to avoid solely relying on filesystem permissions to " @@ -2203,27 +2550,27 @@ msgid "" "and run code. (Contributed by Gregory P. Smith for :gh:`97514`.)" msgstr "" -#: whatsnew/3.14.rst:1498 +#: whatsnew/3.14.rst:1713 msgid "" "The :ref:`multiprocessing proxy objects ` for " "*list* and *dict* types gain previously overlooked missing methods:" msgstr "" -#: whatsnew/3.14.rst:1501 +#: whatsnew/3.14.rst:1716 msgid ":meth:`!clear` and :meth:`!copy` for proxies of :class:`list`" msgstr "" -#: whatsnew/3.14.rst:1502 +#: whatsnew/3.14.rst:1717 msgid "" ":meth:`~dict.fromkeys`, ``reversed(d)``, ``d | {}``, ``{} | d``, ``d |= " "{'b': 2}`` for proxies of :class:`dict`" msgstr "" -#: whatsnew/3.14.rst:1505 +#: whatsnew/3.14.rst:1720 msgid "(Contributed by Roy Hyunjin Han for :gh:`103134`.)" msgstr "" -#: whatsnew/3.14.rst:1507 +#: whatsnew/3.14.rst:1722 msgid "" "Add support for shared :class:`set` objects via :meth:`SyncManager.set() " "`. The :func:`set` in :func:" @@ -2231,7 +2578,7 @@ msgid "" "Park in :gh:`129949`.)" msgstr "" -#: whatsnew/3.14.rst:1512 +#: whatsnew/3.14.rst:1727 msgid "" "Add :func:`multiprocessing.Process.interrupt` which terminates the child " "process by sending :py:const:`~signal.SIGINT`. This enables :keyword:" @@ -2239,11 +2586,11 @@ msgid "" "(Contributed by Artem Pulkin in :gh:`131913`.)" msgstr "" -#: whatsnew/3.14.rst:1518 +#: whatsnew/3.14.rst:1733 msgid "operator" msgstr "" -#: whatsnew/3.14.rst:1520 +#: whatsnew/3.14.rst:1735 msgid "" "Two new functions :func:`operator.is_none` and :func:`operator.is_not_none` " "have been added, such that ``operator.is_none(obj)`` is equivalent to ``obj " @@ -2251,11 +2598,11 @@ msgid "" "None``. (Contributed by Raymond Hettinger and Nico Mexis in :gh:`115808`.)" msgstr "" -#: whatsnew/3.14.rst:1528 +#: whatsnew/3.14.rst:1743 msgid "os" msgstr "" -#: whatsnew/3.14.rst:1530 +#: whatsnew/3.14.rst:1745 msgid "" "Add the :func:`os.reload_environ` function to update :data:`os.environ` and :" "data:`os.environb` with changes to the environment made by :func:`os." @@ -2263,52 +2610,65 @@ msgid "" "(Contributed by Victor Stinner in :gh:`120057`.)" msgstr "" -#: whatsnew/3.14.rst:1536 +#: whatsnew/3.14.rst:1751 msgid "" "Add the :data:`~os.SCHED_DEADLINE` and :data:`~os.SCHED_NORMAL` constants to " "the :mod:`os` module. (Contributed by James Roy in :gh:`127688`.)" msgstr "" -#: whatsnew/3.14.rst:1540 +#: whatsnew/3.14.rst:1755 msgid "" "Add the :func:`os.readinto` function to read into a :ref:`buffer object " "` from a file descriptor. (Contributed by Cody Maloney in :gh:" "`129205`.)" msgstr "" -#: whatsnew/3.14.rst:2333 +#: whatsnew/3.14.rst:1761 +msgid "os.path" +msgstr "" + +#: whatsnew/3.14.rst:1763 +msgid "" +"The *strict* parameter to :func:`os.path.realpath` accepts a new value, :" +"data:`os.path.ALLOW_MISSING`. If used, errors other than :exc:" +"`FileNotFoundError` will be re-raised; the resulting path can be missing but " +"it will be free of symlinks. (Contributed by Petr Viktorin for :cve:" +"`2025-4517`.)" +msgstr "" + +#: whatsnew/3.14.rst:2587 msgid "pathlib" msgstr "" -#: whatsnew/3.14.rst:1548 +#: whatsnew/3.14.rst:1773 msgid "" "Add methods to :class:`pathlib.Path` to recursively copy or move files and " "directories:" msgstr "" -#: whatsnew/3.14.rst:1551 +#: whatsnew/3.14.rst:1776 msgid "" ":meth:`~pathlib.Path.copy` copies a file or directory tree to a destination." msgstr "" -#: whatsnew/3.14.rst:1552 +#: whatsnew/3.14.rst:1777 msgid ":meth:`~pathlib.Path.copy_into` copies *into* a destination directory." msgstr "" -#: whatsnew/3.14.rst:1553 +#: whatsnew/3.14.rst:1778 msgid "" ":meth:`~pathlib.Path.move` moves a file or directory tree to a destination." msgstr "" -#: whatsnew/3.14.rst:1554 +#: whatsnew/3.14.rst:1779 msgid ":meth:`~pathlib.Path.move_into` moves *into* a destination directory." msgstr "" -#: whatsnew/3.14.rst:1556 +#: whatsnew/3.14.rst:1781 msgid "(Contributed by Barney Gale in :gh:`73991`.)" msgstr "" -#: whatsnew/3.14.rst:1558 +#: whatsnew/3.14.rst:1783 msgid "" "Add :attr:`pathlib.Path.info` attribute, which stores an object implementing " "the :class:`pathlib.types.PathInfo` protocol (also new). The object supports " @@ -2318,11 +2678,11 @@ msgid "" "Barney Gale in :gh:`125413`.)" msgstr "" -#: whatsnew/3.14.rst:1568 +#: whatsnew/3.14.rst:1793 msgid "pdb" msgstr "" -#: whatsnew/3.14.rst:1570 +#: whatsnew/3.14.rst:1795 msgid "" "Hardcoded breakpoints (:func:`breakpoint` and :func:`pdb.set_trace`) now " "reuse the most recent :class:`~pdb.Pdb` instance that calls :meth:`~pdb.Pdb." @@ -2332,14 +2692,14 @@ msgid "" "`121450`.)" msgstr "" -#: whatsnew/3.14.rst:1577 +#: whatsnew/3.14.rst:1802 msgid "" "Add a new argument *mode* to :class:`pdb.Pdb`. Disable the ``restart`` " "command when :mod:`pdb` is in ``inline`` mode. (Contributed by Tian Gao in :" "gh:`123757`.)" msgstr "" -#: whatsnew/3.14.rst:1581 +#: whatsnew/3.14.rst:1806 msgid "" "A confirmation prompt will be shown when the user tries to quit :mod:`pdb` " "in ``inline`` mode. ``y``, ``Y``, ```` or ``EOF`` will confirm the " @@ -2347,34 +2707,34 @@ msgid "" "(Contributed by Tian Gao in :gh:`124704`.)" msgstr "" -#: whatsnew/3.14.rst:1586 +#: whatsnew/3.14.rst:1811 msgid "" "Inline breakpoints like :func:`breakpoint` or :func:`pdb.set_trace` will " "always stop the program at calling frame, ignoring the ``skip`` pattern (if " "any). (Contributed by Tian Gao in :gh:`130493`.)" msgstr "" -#: whatsnew/3.14.rst:1591 +#: whatsnew/3.14.rst:1816 msgid "" "```` at the beginning of the line in :mod:`pdb` multi-line input will " "fill in a 4-space indentation now, instead of inserting a ``\\t`` character. " "(Contributed by Tian Gao in :gh:`130471`.)" msgstr "" -#: whatsnew/3.14.rst:1595 +#: whatsnew/3.14.rst:1820 msgid "" "Auto-indent is introduced in :mod:`pdb` multi-line input. It will either " "keep the indentation of the last line or insert a 4-space indentation when " "it detects a new code block. (Contributed by Tian Gao in :gh:`133350`.)" msgstr "" -#: whatsnew/3.14.rst:1600 +#: whatsnew/3.14.rst:1825 msgid "" "``$_asynctask`` is added to access the current asyncio task if applicable. " "(Contributed by Tian Gao in :gh:`124367`.)" msgstr "" -#: whatsnew/3.14.rst:1603 +#: whatsnew/3.14.rst:1828 msgid "" ":mod:`pdb` now supports two backends: :func:`sys.settrace` and :mod:`sys." "monitoring`. Using :mod:`pdb` CLI or :func:`breakpoint` will always use the :" @@ -2383,14 +2743,14 @@ msgid "" "which is configurable. (Contributed by Tian Gao in :gh:`124533`.)" msgstr "" -#: whatsnew/3.14.rst:1610 +#: whatsnew/3.14.rst:1835 msgid "" ":func:`pdb.set_trace_async` is added to support debugging asyncio " "coroutines. :keyword:`await` statements are supported with this function. " "(Contributed by Tian Gao in :gh:`132576`.)" msgstr "" -#: whatsnew/3.14.rst:1615 +#: whatsnew/3.14.rst:1840 msgid "" "Source code displayed in :mod:`pdb` will be syntax-highlighted. This feature " "can be controlled using the same methods as PyREPL, in addition to the newly " @@ -2398,247 +2758,283 @@ msgid "" "and Łukasz Langa in :gh:`133355`.)" msgstr "" -#: whatsnew/3.14.rst:1622 +#: whatsnew/3.14.rst:1847 msgid "pickle" msgstr "" -#: whatsnew/3.14.rst:1624 +#: whatsnew/3.14.rst:1849 msgid "" "Set the default protocol version on the :mod:`pickle` module to 5. For more " "details, see :ref:`pickle protocols `." msgstr "" -#: whatsnew/3.14.rst:1627 +#: whatsnew/3.14.rst:1852 msgid "" "Add notes for pickle serialization errors that allow to identify the source " "of the error. (Contributed by Serhiy Storchaka in :gh:`122213`.)" msgstr "" -#: whatsnew/3.14.rst:1633 +#: whatsnew/3.14.rst:1858 msgid "platform" msgstr "" -#: whatsnew/3.14.rst:1635 +#: whatsnew/3.14.rst:1860 msgid "" "Add :func:`platform.invalidate_caches` to invalidate the cached results. " "(Contributed by Bénédikt Tran in :gh:`122549`.)" msgstr "" -#: whatsnew/3.14.rst:1640 +#: whatsnew/3.14.rst:1865 msgid "pydoc" msgstr "" -#: whatsnew/3.14.rst:1642 +#: whatsnew/3.14.rst:1867 msgid "" ":term:`Annotations ` in help output are now usually displayed in " "a format closer to that in the original source. (Contributed by Jelle " "Zijlstra in :gh:`101552`.)" msgstr "" -#: whatsnew/3.14.rst:1648 +#: whatsnew/3.14.rst:1873 msgid "socket" msgstr "" -#: whatsnew/3.14.rst:1650 +#: whatsnew/3.14.rst:1875 msgid "Improve and fix support for Bluetooth sockets." msgstr "" -#: whatsnew/3.14.rst:1652 +#: whatsnew/3.14.rst:1877 msgid "" "Fix support of Bluetooth sockets on NetBSD and DragonFly BSD. (Contributed " "by Serhiy Storchaka in :gh:`132429`.)" msgstr "" -#: whatsnew/3.14.rst:1654 +#: whatsnew/3.14.rst:1879 msgid "" "Fix support for :const:`~socket.BTPROTO_HCI` on FreeBSD. (Contributed by " "Victor Stinner in :gh:`111178`.)" msgstr "" -#: whatsnew/3.14.rst:1656 +#: whatsnew/3.14.rst:1881 msgid "" "Add support for :const:`~socket.BTPROTO_SCO` on FreeBSD. (Contributed by " "Serhiy Storchaka in :gh:`85302`.)" msgstr "" -#: whatsnew/3.14.rst:1658 +#: whatsnew/3.14.rst:1883 msgid "" "Add support for *cid* and *bdaddr_type* in the address for :const:`~socket." "BTPROTO_L2CAP` on FreeBSD. (Contributed by Serhiy Storchaka in :gh:`132429`.)" msgstr "" -#: whatsnew/3.14.rst:1661 +#: whatsnew/3.14.rst:1886 msgid "" "Add support for *channel* in the address for :const:`~socket.BTPROTO_HCI` on " "Linux. (Contributed by Serhiy Storchaka in :gh:`70145`.)" msgstr "" -#: whatsnew/3.14.rst:1664 +#: whatsnew/3.14.rst:1889 msgid "" "Accept an integer as the address for :const:`~socket.BTPROTO_HCI` on Linux. " "(Contributed by Serhiy Storchaka in :gh:`132099`.)" msgstr "" -#: whatsnew/3.14.rst:1667 +#: whatsnew/3.14.rst:1892 msgid "" "Return *cid* in :meth:`~socket.socket.getsockname` for :const:`~socket." "BTPROTO_L2CAP`. (Contributed by Serhiy Storchaka in :gh:`132429`.)" msgstr "" -#: whatsnew/3.14.rst:1670 +#: whatsnew/3.14.rst:1895 msgid "" "Add many new constants. (Contributed by Serhiy Storchaka in :gh:`132734`.)" msgstr "" -#: whatsnew/3.14.rst:1674 +#: whatsnew/3.14.rst:1899 msgid "ssl" msgstr "" -#: whatsnew/3.14.rst:1676 +#: whatsnew/3.14.rst:1901 msgid "" "Indicate through :data:`ssl.HAS_PHA` whether the :mod:`ssl` module supports " "TLSv1.3 post-handshake client authentication (PHA). (Contributed by Will " "Childs-Klein in :gh:`128036`.)" msgstr "" -#: whatsnew/3.14.rst:1682 +#: whatsnew/3.14.rst:1907 msgid "struct" msgstr "" -#: whatsnew/3.14.rst:1684 +#: whatsnew/3.14.rst:1909 msgid "" "Support the :c:expr:`float complex` and :c:expr:`double complex` C types in " "the :mod:`struct` module (formatting characters ``'F'`` and ``'D'`` " "respectively). (Contributed by Sergey B Kirpichev in :gh:`121249`.)" msgstr "" -#: whatsnew/3.14.rst:1691 +#: whatsnew/3.14.rst:1916 msgid "symtable" msgstr "" -#: whatsnew/3.14.rst:1693 +#: whatsnew/3.14.rst:1918 msgid "Expose the following :class:`symtable.Symbol` methods:" msgstr "" -#: whatsnew/3.14.rst:1695 +#: whatsnew/3.14.rst:1920 msgid ":meth:`~symtable.Symbol.is_comp_cell`" msgstr "" -#: whatsnew/3.14.rst:1696 +#: whatsnew/3.14.rst:1921 msgid ":meth:`~symtable.Symbol.is_comp_iter`" msgstr "" -#: whatsnew/3.14.rst:1697 +#: whatsnew/3.14.rst:1922 msgid ":meth:`~symtable.Symbol.is_free_class`" msgstr "" -#: whatsnew/3.14.rst:1699 +#: whatsnew/3.14.rst:1924 msgid "(Contributed by Bénédikt Tran in :gh:`120029`.)" msgstr "" -#: whatsnew/3.14.rst:1703 +#: whatsnew/3.14.rst:1928 msgid "sys" msgstr "" -#: whatsnew/3.14.rst:1705 +#: whatsnew/3.14.rst:1930 msgid "" "The previously undocumented special function :func:`sys.getobjects`, which " "only exists in specialized builds of Python, may now return objects from " "other interpreters than the one it's called in." msgstr "" -#: whatsnew/3.14.rst:1709 +#: whatsnew/3.14.rst:1934 msgid "" "Add :func:`sys._is_immortal` for determining if an object is :term:" "`immortal`. (Contributed by Peter Bierma in :gh:`128509`.)" msgstr "" -#: whatsnew/3.14.rst:1712 +#: whatsnew/3.14.rst:1937 msgid "" "On FreeBSD, :data:`sys.platform` doesn't contain the major version anymore. " "It is always ``'freebsd'``, instead of ``'freebsd13'`` or ``'freebsd14'``." msgstr "" -#: whatsnew/3.14.rst:1715 +#: whatsnew/3.14.rst:1940 msgid "" "Raise :exc:`DeprecationWarning` for :func:`sys._clear_type_cache`. This " "function was deprecated in Python 3.13 but it didn't raise a runtime warning." msgstr "" -#: whatsnew/3.14.rst:1720 +#: whatsnew/3.14.rst:1945 msgid "sys.monitoring" msgstr "" -#: whatsnew/3.14.rst:1722 +#: whatsnew/3.14.rst:1947 msgid "" "Two new events are added: :monitoring-event:`BRANCH_LEFT` and :monitoring-" "event:`BRANCH_RIGHT`. The ``BRANCH`` event is deprecated." msgstr "" -#: whatsnew/3.14.rst:1727 +#: whatsnew/3.14.rst:1952 msgid "sysconfig" msgstr "" -#: whatsnew/3.14.rst:1729 +#: whatsnew/3.14.rst:1954 msgid "" "Add ``ABIFLAGS`` key to :func:`sysconfig.get_config_vars` on Windows. " "(Contributed by Xuehai Pan in :gh:`131799`.)" msgstr "" -#: whatsnew/3.14.rst:1734 +#: whatsnew/3.14.rst:1959 +msgid "tarfile" +msgstr "" + +#: whatsnew/3.14.rst:1961 +msgid "" +":func:`~tarfile.data_filter` now normalizes symbolic link targets in order " +"to avoid path traversal attacks. (Contributed by Petr Viktorin in :gh:" +"`127987` and :cve:`2025-4138`.)" +msgstr "" + +#: whatsnew/3.14.rst:1964 +msgid "" +":func:`~tarfile.TarFile.extractall` now skips fixing up directory attributes " +"when a directory was removed or replaced by another kind of file. " +"(Contributed by Petr Viktorin in :gh:`127987` and :cve:`2024-12718`.)" +msgstr "" + +#: whatsnew/3.14.rst:1967 +msgid "" +":func:`~tarfile.TarFile.extract` and :func:`~tarfile.TarFile.extractall` now " +"(re-)apply the extraction filter when substituting a link (hard or symbolic) " +"with a copy of another archive member, and when fixing up directory " +"attributes. The former raises a new exception, :exc:`~tarfile." +"LinkFallbackError`. (Contributed by Petr Viktorin for :cve:`2025-4330` and :" +"cve:`2024-12718`.)" +msgstr "" + +#: whatsnew/3.14.rst:1973 +msgid "" +":func:`~tarfile.TarFile.extract` and :func:`~tarfile.TarFile.extractall` no " +"longer extract rejected members when :func:`~tarfile.TarFile.errorlevel` is " +"zero. (Contributed by Matt Prodani and Petr Viktorin in :gh:`112887` and :" +"cve:`2025-4435`.)" +msgstr "" + +#: whatsnew/3.14.rst:1981 msgid "threading" msgstr "" -#: whatsnew/3.14.rst:1736 +#: whatsnew/3.14.rst:1983 msgid "" ":meth:`threading.Thread.start` now sets the operating system thread name to :" "attr:`threading.Thread.name`. (Contributed by Victor Stinner in :gh:`59705`.)" msgstr "" -#: whatsnew/3.14.rst:1742 +#: whatsnew/3.14.rst:1989 msgid "tkinter" msgstr "" -#: whatsnew/3.14.rst:1744 +#: whatsnew/3.14.rst:1991 msgid "" "Make :mod:`tkinter` widget methods :meth:`!after` and :meth:`!after_idle` " "accept arguments passed by keyword. (Contributed by Zhikang Yan in :gh:" "`126899`.)" msgstr "" -#: whatsnew/3.14.rst:1748 +#: whatsnew/3.14.rst:1995 msgid "" "Add ability to specify name for :class:`!tkinter.OptionMenu` and :class:`!" "tkinter.ttk.OptionMenu`. (Contributed by Zhikang Yan in :gh:`130482`.)" msgstr "" -#: whatsnew/3.14.rst:1753 +#: whatsnew/3.14.rst:2000 msgid "turtle" msgstr "" -#: whatsnew/3.14.rst:1755 +#: whatsnew/3.14.rst:2002 msgid "" "Add context managers for :func:`turtle.fill`, :func:`turtle.poly` and :func:" "`turtle.no_animation`. (Contributed by Marie Roald and Yngve Mardal Moe in :" "gh:`126350`.)" msgstr "" -#: whatsnew/3.14.rst:1761 +#: whatsnew/3.14.rst:2008 msgid "types" msgstr "" -#: whatsnew/3.14.rst:1763 +#: whatsnew/3.14.rst:2010 msgid "" ":class:`types.UnionType` is now an alias for :class:`typing.Union`. See :ref:" "`below ` for more details. (Contributed by Jelle " "Zijlstra in :gh:`105499`.)" msgstr "" -#: whatsnew/3.14.rst:2369 +#: whatsnew/3.14.rst:2623 msgid "typing" msgstr "" -#: whatsnew/3.14.rst:1773 +#: whatsnew/3.14.rst:2020 msgid "" ":class:`types.UnionType` and :class:`typing.Union` are now aliases for each " "other, meaning that both old-style unions (created with ``Union[int, str]``) " @@ -2648,14 +3044,14 @@ msgid "" "at runtime:" msgstr "" -#: whatsnew/3.14.rst:1779 +#: whatsnew/3.14.rst:2026 msgid "" "Both syntaxes for creating a union now produce the same string " "representation in ``repr()``. For example, ``repr(Union[int, str])`` is now " "``\"int | str\"`` instead of ``\"typing.Union[int, str]\"``." msgstr "" -#: whatsnew/3.14.rst:1782 +#: whatsnew/3.14.rst:2029 msgid "" "Unions created using the old syntax are no longer cached. Previously, " "running ``Union[int, str]`` multiple times would return the same object " @@ -2672,7 +3068,7 @@ msgid "" "in memory usage for most users." msgstr "" -#: whatsnew/3.14.rst:1795 +#: whatsnew/3.14.rst:2042 msgid "" "Previously, old-style unions were implemented using the private class " "``typing._UnionGenericAlias``. This class is no longer needed for the " @@ -2682,76 +3078,76 @@ msgid "" "of relying on private implementation details." msgstr "" -#: whatsnew/3.14.rst:1800 +#: whatsnew/3.14.rst:2047 msgid "" "It is now possible to use :class:`typing.Union` itself in :func:`isinstance` " "checks. For example, ``isinstance(int | str, typing.Union)`` will return " "``True``; previously this raised :exc:`TypeError`." msgstr "" -#: whatsnew/3.14.rst:1803 +#: whatsnew/3.14.rst:2050 msgid "" "The ``__args__`` attribute of :class:`typing.Union` objects is no longer " "writable." msgstr "" -#: whatsnew/3.14.rst:1804 +#: whatsnew/3.14.rst:2051 msgid "" "It is no longer possible to set any attributes on :class:`typing.Union` " "objects. This only ever worked for dunder attributes on previous versions, " "was never documented to work, and was subtly broken in many cases." msgstr "" -#: whatsnew/3.14.rst:1808 +#: whatsnew/3.14.rst:2055 msgid "(Contributed by Jelle Zijlstra in :gh:`105499`.)" msgstr "" -#: whatsnew/3.14.rst:1812 +#: whatsnew/3.14.rst:2059 msgid "unicodedata" msgstr "" -#: whatsnew/3.14.rst:1814 +#: whatsnew/3.14.rst:2061 msgid "The Unicode database has been updated to Unicode 16.0.0." msgstr "" -#: whatsnew/3.14.rst:1820 +#: whatsnew/3.14.rst:2067 msgid "unittest" msgstr "" -#: whatsnew/3.14.rst:1822 +#: whatsnew/3.14.rst:2069 msgid "" ":mod:`unittest` output is now colored by default. This can be controlled by :" "ref:`environment variables `. (Contributed by " "Hugo van Kemenade in :gh:`127221`.)" msgstr "" -#: whatsnew/3.14.rst:1827 +#: whatsnew/3.14.rst:2074 msgid "" "unittest discovery supports :term:`namespace package` as start directory " "again. It was removed in Python 3.11. (Contributed by Jacob Walls in :gh:" "`80958`.)" msgstr "" -#: whatsnew/3.14.rst:1831 +#: whatsnew/3.14.rst:2078 msgid "" "A number of new methods were added in the :class:`~unittest.TestCase` class " "that provide more specialized tests." msgstr "" -#: whatsnew/3.14.rst:1834 +#: whatsnew/3.14.rst:2081 msgid "" ":meth:`~unittest.TestCase.assertHasAttr` and :meth:`~unittest.TestCase." "assertNotHasAttr` check whether the object has a particular attribute." msgstr "" -#: whatsnew/3.14.rst:1837 +#: whatsnew/3.14.rst:2084 msgid "" ":meth:`~unittest.TestCase.assertIsSubclass` and :meth:`~unittest.TestCase." "assertNotIsSubclass` check whether the object is a subclass of a particular " "class, or of one of a tuple of classes." msgstr "" -#: whatsnew/3.14.rst:1840 +#: whatsnew/3.14.rst:2087 msgid "" ":meth:`~unittest.TestCase.assertStartsWith`, :meth:`~unittest.TestCase." "assertNotStartsWith`, :meth:`~unittest.TestCase.assertEndsWith` and :meth:" @@ -2759,124 +3155,124 @@ msgid "" "string starts or ends with particular string(s)." msgstr "" -#: whatsnew/3.14.rst:1846 +#: whatsnew/3.14.rst:2093 msgid "(Contributed by Serhiy Storchaka in :gh:`71339`.)" msgstr "" -#: whatsnew/3.14.rst:2377 +#: whatsnew/3.14.rst:2631 msgid "urllib" msgstr "" -#: whatsnew/3.14.rst:1852 +#: whatsnew/3.14.rst:2099 msgid "" "Upgrade HTTP digest authentication algorithm for :mod:`urllib.request` by " "supporting SHA-256 digest authentication as specified in :rfc:`7616`. " "(Contributed by Calvin Bui in :gh:`128193`.)" msgstr "" -#: whatsnew/3.14.rst:1856 +#: whatsnew/3.14.rst:2103 msgid "" "Improve ergonomics and standards compliance when parsing and emitting ``file:" "`` URLs." msgstr "" -#: whatsnew/3.14.rst:1859 +#: whatsnew/3.14.rst:2106 msgid "In :func:`urllib.request.url2pathname`:" msgstr "" -#: whatsnew/3.14.rst:1861 +#: whatsnew/3.14.rst:2108 msgid "" "Accept a complete URL when the new *require_scheme* argument is set to true." msgstr "" -#: whatsnew/3.14.rst:1863 +#: whatsnew/3.14.rst:2110 msgid "Discard URL authority if it matches the local hostname." msgstr "" -#: whatsnew/3.14.rst:1864 +#: whatsnew/3.14.rst:2111 msgid "" "Discard URL authority if it resolves to a local IP address when the new " "*resolve_host* argument is set to true." msgstr "" -#: whatsnew/3.14.rst:1866 +#: whatsnew/3.14.rst:2113 msgid "" "Raise :exc:`~urllib.error.URLError` if a URL authority isn't local, except " "on Windows where we return a UNC path as before." msgstr "" -#: whatsnew/3.14.rst:1869 +#: whatsnew/3.14.rst:2116 msgid "In :func:`urllib.request.pathname2url`:" msgstr "" -#: whatsnew/3.14.rst:1871 +#: whatsnew/3.14.rst:2118 msgid "" "Return a complete URL when the new *add_scheme* argument is set to true." msgstr "" -#: whatsnew/3.14.rst:1872 +#: whatsnew/3.14.rst:2119 msgid "" "Include an empty URL authority when a path begins with a slash. For example, " "the path ``/etc/hosts`` is converted to the URL ``///etc/hosts``." msgstr "" -#: whatsnew/3.14.rst:1875 +#: whatsnew/3.14.rst:2122 msgid "" "On Windows, drive letters are no longer converted to uppercase, and ``:`` " "characters not following a drive letter no longer cause an :exc:`OSError` " "exception to be raised." msgstr "" -#: whatsnew/3.14.rst:1879 +#: whatsnew/3.14.rst:2126 msgid "(Contributed by Barney Gale in :gh:`125866`.)" msgstr "" -#: whatsnew/3.14.rst:1971 +#: whatsnew/3.14.rst:2226 msgid "uuid" msgstr "" -#: whatsnew/3.14.rst:1885 +#: whatsnew/3.14.rst:2132 msgid "" "Add support for UUID versions 6, 7, and 8 via :func:`uuid.uuid6`, :func:" "`uuid.uuid7`, and :func:`uuid.uuid8` respectively, as specified in :rfc:" "`9562`. (Contributed by Bénédikt Tran in :gh:`89083`.)" msgstr "" -#: whatsnew/3.14.rst:1890 +#: whatsnew/3.14.rst:2137 msgid "" ":const:`uuid.NIL` and :const:`uuid.MAX` are now available to represent the " "Nil and Max UUID formats as defined by :rfc:`9562`. (Contributed by Nick " "Pope in :gh:`128427`.)" msgstr "" -#: whatsnew/3.14.rst:1894 +#: whatsnew/3.14.rst:2141 msgid "" "Allow to generate multiple UUIDs at once via :option:`python -m uuid --count " "`. (Contributed by Simon Legner in :gh:`131236`.)" msgstr "" -#: whatsnew/3.14.rst:1899 +#: whatsnew/3.14.rst:2146 msgid "webbrowser" msgstr "" -#: whatsnew/3.14.rst:1901 +#: whatsnew/3.14.rst:2148 msgid "" "Names in the :envvar:`BROWSER` environment variable can now refer to already " "registered browsers for the :mod:`webbrowser` module, instead of always " "generating a new browser command." msgstr "" -#: whatsnew/3.14.rst:1905 +#: whatsnew/3.14.rst:2152 msgid "" "This makes it possible to set :envvar:`BROWSER` to the value of one of the " "supported browsers on macOS." msgstr "" -#: whatsnew/3.14.rst:1910 +#: whatsnew/3.14.rst:2157 msgid "zipinfo" msgstr "" -#: whatsnew/3.14.rst:1912 +#: whatsnew/3.14.rst:2159 msgid "" "Added :func:`ZipInfo._for_archive ` to resolve " "suitable defaults for a :class:`~zipfile.ZipInfo` object as used by :func:" @@ -2884,18 +3280,18 @@ msgid "" "in :gh:`123424`.)" msgstr "" -#: whatsnew/3.14.rst:1917 +#: whatsnew/3.14.rst:2164 msgid "" ":meth:`zipfile.ZipFile.writestr` now respect ``SOURCE_DATE_EPOCH`` that " "distributions can set centrally and have build tools consume this in order " "to produce reproducible output. (Contributed by Jiahao Li in :gh:`91279`.)" msgstr "" -#: whatsnew/3.14.rst:1926 +#: whatsnew/3.14.rst:2173 msgid "Optimizations" msgstr "" -#: whatsnew/3.14.rst:1928 +#: whatsnew/3.14.rst:2175 msgid "" "The import time for several standard library modules has been improved, " "including :mod:`ast`, :mod:`asyncio`, :mod:`base64`, :mod:`cmd`, :mod:" @@ -2905,24 +3301,32 @@ msgid "" "`zipfile`." msgstr "" -#: whatsnew/3.14.rst:1934 +#: whatsnew/3.14.rst:2181 msgid "" "(Contributed by Adam Turner, Bénédikt Tran, Chris Markiewicz, Eli Schwartz, " "Hugo van Kemenade, Jelle Zijlstra, and others in :gh:`118761`.)" msgstr "" -#: whatsnew/3.14.rst:2184 -msgid "asyncio" +#: whatsnew/3.14.rst:2188 +msgid "" +":mod:`asyncio` has a new per-thread double linked list implementation " +"internally for :class:`native tasks ` which speeds up " +"execution by 10-20% on standard pyperformance benchmarks and reduces memory " +"usage. This enables external introspection tools such as :ref:`python -m " +"asyncio pstree ` to introspect the call " +"graph of asyncio tasks running in all threads. (Contributed by Kumar Aditya " +"in :gh:`107803`.)" msgstr "" -#: whatsnew/3.14.rst:1941 +#: whatsnew/3.14.rst:2196 msgid "" -":mod:`asyncio` now uses double linked list implementation for native tasks " -"which speeds up execution by 10% on standard pyperformance benchmarks and " -"reduces memory usage. (Contributed by Kumar Aditya in :gh:`107803`.)" +":mod:`asyncio` has first class support for :term:`free-threading builds " +"`. This enables parallel execution of multiple event loops " +"across different threads and scales linearly with the number of threads. " +"(Contributed by Kumar Aditya in :gh:`128002`.)" msgstr "" -#: whatsnew/3.14.rst:1946 +#: whatsnew/3.14.rst:2201 msgid "" ":mod:`asyncio` has new utility functions for introspecting and printing the " "program's call graph: :func:`asyncio.capture_call_graph` and :func:`asyncio." @@ -2930,18 +3334,18 @@ msgid "" "and Łukasz Langa in :gh:`91048`.)" msgstr "" -#: whatsnew/3.14.rst:1953 +#: whatsnew/3.14.rst:2208 msgid "base64" msgstr "" -#: whatsnew/3.14.rst:1955 +#: whatsnew/3.14.rst:2210 msgid "" "Improve the performance of :func:`base64.b16decode` by up to ten times, and " "reduce the import time of :mod:`base64` by up to six times. (Contributed by " "Bénédikt Tran, Chris Markiewicz, and Adam Turner in :gh:`118761`.)" msgstr "" -#: whatsnew/3.14.rst:1962 +#: whatsnew/3.14.rst:2217 msgid "" ":mod:`io` which provides the built-in :func:`open` makes less system calls " "when opening regular files as well as reading whole files. Reading a small " @@ -2951,34 +3355,34 @@ msgid "" "gh:`90102`.)" msgstr "" -#: whatsnew/3.14.rst:1973 +#: whatsnew/3.14.rst:2228 msgid "" "Improve generation of :class:`~uuid.UUID` objects via their dedicated " "functions:" msgstr "" -#: whatsnew/3.14.rst:1976 +#: whatsnew/3.14.rst:2231 msgid "" ":func:`~uuid.uuid3` and :func:`~uuid.uuid5` are both roughly 40% faster for " "16-byte names and 20% faster for 1024-byte names. Performance for longer " "names remains unchanged." msgstr "" -#: whatsnew/3.14.rst:1979 +#: whatsnew/3.14.rst:2234 msgid "" ":func:`~uuid.uuid4` and :func:`~uuid.uuid8` are 30% and 40% faster " "respectively." msgstr "" -#: whatsnew/3.14.rst:1982 +#: whatsnew/3.14.rst:2237 msgid "(Contributed by Bénédikt Tran in :gh:`128150`.)" msgstr "" -#: whatsnew/3.14.rst:1986 +#: whatsnew/3.14.rst:2241 msgid "zlib" msgstr "" -#: whatsnew/3.14.rst:1988 +#: whatsnew/3.14.rst:2243 msgid "" "On Windows, ``zlib-ng`` is now used as the implementation of the :mod:`zlib` " "module. This should produce compatible and comparable results with better " @@ -2988,84 +3392,80 @@ msgid "" "by Steve Dower in :gh:`91349`.)" msgstr "" -#: whatsnew/3.14.rst:2692 +#: whatsnew/3.14.rst:2952 msgid "Deprecated" msgstr "" -#: whatsnew/3.14.rst:2000 deprecations/pending-removal-in-future.rst:7 +#: whatsnew/3.14.rst:2255 deprecations/pending-removal-in-future.rst:7 msgid ":mod:`argparse`:" msgstr "" -#: whatsnew/3.14.rst:2002 +#: whatsnew/3.14.rst:2257 msgid "" "Passing the undocumented keyword argument *prefix_chars* to :meth:`~argparse." "ArgumentParser.add_argument_group` is now deprecated. (Contributed by " "Savannah Ostrowski in :gh:`125563`.)" msgstr "" -#: whatsnew/3.14.rst:2006 +#: whatsnew/3.14.rst:2261 msgid "" "Deprecated the :class:`argparse.FileType` type converter. Anything with " "resource management should be done downstream after the arguments are " "parsed. (Contributed by Serhiy Storchaka in :gh:`58032`.)" msgstr "" -#: whatsnew/3.14.rst:2011 deprecations/pending-removal-in-3.16.rst:19 +#: whatsnew/3.14.rst:2266 deprecations/pending-removal-in-3.16.rst:19 msgid ":mod:`asyncio`:" msgstr "" -#: whatsnew/3.14.rst:2013 deprecations/pending-removal-in-3.16.rst:21 +#: whatsnew/3.14.rst:2268 deprecations/pending-removal-in-3.16.rst:21 msgid "" ":func:`!asyncio.iscoroutinefunction` is deprecated and will be removed in " "Python 3.16; use :func:`inspect.iscoroutinefunction` instead. (Contributed " "by Jiahao Li and Kumar Aditya in :gh:`122875`.)" msgstr "" -#: whatsnew/3.14.rst:2018 deprecations/pending-removal-in-3.16.rst:26 +#: whatsnew/3.14.rst:2273 deprecations/pending-removal-in-3.16.rst:26 msgid "" ":mod:`asyncio` policy system is deprecated and will be removed in Python " "3.16. In particular, the following classes and functions are deprecated:" msgstr "" -#: whatsnew/3.14.rst:2021 deprecations/pending-removal-in-3.16.rst:29 +#: whatsnew/3.14.rst:2276 deprecations/pending-removal-in-3.16.rst:29 msgid ":class:`asyncio.AbstractEventLoopPolicy`" msgstr "" -#: whatsnew/3.14.rst:2022 deprecations/pending-removal-in-3.16.rst:30 +#: whatsnew/3.14.rst:2277 deprecations/pending-removal-in-3.16.rst:30 msgid ":class:`asyncio.DefaultEventLoopPolicy`" msgstr "" -#: whatsnew/3.14.rst:2023 deprecations/pending-removal-in-3.16.rst:31 +#: whatsnew/3.14.rst:2278 deprecations/pending-removal-in-3.16.rst:31 msgid ":class:`asyncio.WindowsSelectorEventLoopPolicy`" msgstr "" -#: whatsnew/3.14.rst:2024 deprecations/pending-removal-in-3.16.rst:32 +#: whatsnew/3.14.rst:2279 deprecations/pending-removal-in-3.16.rst:32 msgid ":class:`asyncio.WindowsProactorEventLoopPolicy`" msgstr "" -#: whatsnew/3.14.rst:2025 deprecations/pending-removal-in-3.16.rst:33 +#: whatsnew/3.14.rst:2280 deprecations/pending-removal-in-3.16.rst:33 msgid ":func:`asyncio.get_event_loop_policy`" msgstr "" -#: whatsnew/3.14.rst:2026 deprecations/pending-removal-in-3.16.rst:34 +#: whatsnew/3.14.rst:2281 deprecations/pending-removal-in-3.16.rst:34 msgid ":func:`asyncio.set_event_loop_policy`" msgstr "" -#: whatsnew/3.14.rst:2027 -msgid ":func:`asyncio.set_event_loop`" -msgstr "" - -#: whatsnew/3.14.rst:2029 deprecations/pending-removal-in-3.16.rst:36 +#: whatsnew/3.14.rst:2283 deprecations/pending-removal-in-3.16.rst:36 msgid "" "Users should use :func:`asyncio.run` or :class:`asyncio.Runner` with " "*loop_factory* to use the desired event loop implementation." msgstr "" -#: whatsnew/3.14.rst:2032 deprecations/pending-removal-in-3.16.rst:39 +#: whatsnew/3.14.rst:2286 deprecations/pending-removal-in-3.16.rst:39 msgid "For example, to use :class:`asyncio.SelectorEventLoop` on Windows::" msgstr "" -#: whatsnew/3.14.rst:2034 deprecations/pending-removal-in-3.16.rst:41 +#: whatsnew/3.14.rst:2288 deprecations/pending-removal-in-3.16.rst:41 msgid "" "import asyncio\n" "\n" @@ -3075,11 +3475,11 @@ msgid "" "asyncio.run(main(), loop_factory=asyncio.SelectorEventLoop)" msgstr "" -#: whatsnew/3.14.rst:2041 deprecations/pending-removal-in-3.16.rst:48 +#: whatsnew/3.14.rst:2295 deprecations/pending-removal-in-3.16.rst:48 msgid "(Contributed by Kumar Aditya in :gh:`127949`.)" msgstr "" -#: whatsnew/3.14.rst:2043 +#: whatsnew/3.14.rst:2297 msgid "" ":mod:`builtins`: Passing a complex number as the *real* or *imag* argument " "in the :func:`complex` constructor is now deprecated; it should only be " @@ -3087,18 +3487,18 @@ msgid "" "gh:`109218`.)" msgstr "" -#: whatsnew/3.14.rst:2049 +#: whatsnew/3.14.rst:2303 msgid "" ":mod:`codecs`: :func:`codecs.open` is now deprecated. Use :func:`open` " "instead. (Contributed by Inada Naoki in :gh:`133036`.)" msgstr "" -#: whatsnew/3.14.rst:2053 deprecations/pending-removal-in-3.15.rst:16 +#: whatsnew/3.14.rst:2307 deprecations/pending-removal-in-3.15.rst:16 #: deprecations/pending-removal-in-3.19.rst:4 msgid ":mod:`ctypes`:" msgstr "" -#: whatsnew/3.14.rst:2055 +#: whatsnew/3.14.rst:2309 msgid "" "On non-Windows platforms, setting :attr:`.Structure._pack_` to use a MSVC-" "compatible default memory layout is deprecated in favor of setting :attr:`." @@ -3106,7 +3506,7 @@ msgid "" "`131747`.)" msgstr "" -#: whatsnew/3.14.rst:2060 +#: whatsnew/3.14.rst:2314 msgid "" "Calling :func:`ctypes.POINTER` on a string is deprecated. Use :ref:`ctypes-" "incomplete-types` for self-referential structures. Also, the internal " @@ -3115,14 +3515,14 @@ msgid "" "`100926`.)" msgstr "" -#: whatsnew/3.14.rst:2066 +#: whatsnew/3.14.rst:2320 msgid "" ":mod:`functools`: Calling the Python implementation of :func:`functools." "reduce` with *function* or *sequence* as keyword arguments is now " "deprecated. (Contributed by Kirill Podoprigora in :gh:`121676`.)" msgstr "" -#: whatsnew/3.14.rst:2071 +#: whatsnew/3.14.rst:2325 msgid "" ":mod:`logging`: Support for custom logging handlers with the *strm* argument " "is deprecated and scheduled for removal in Python 3.16. Define handlers with " @@ -3130,7 +3530,7 @@ msgid "" "`115032`.)" msgstr "" -#: whatsnew/3.14.rst:2076 +#: whatsnew/3.14.rst:2330 msgid "" ":mod:`mimetypes`: Valid extensions start with a '.' or are empty for :meth:" "`mimetypes.MimeTypes.add_type`. Undotted extensions are deprecated and will " @@ -3138,14 +3538,14 @@ msgid "" "in :gh:`75223`.)" msgstr "" -#: whatsnew/3.14.rst:2083 +#: whatsnew/3.14.rst:2337 msgid "" ":mod:`!nturl2path`: This module is now deprecated. Call :func:`urllib." "request.url2pathname` and :func:`~urllib.request.pathname2url` instead. " "(Contributed by Barney Gale in :gh:`125866`.)" msgstr "" -#: whatsnew/3.14.rst:2088 +#: whatsnew/3.14.rst:2342 msgid "" ":mod:`os`: :term:`Soft deprecate ` :func:`os.popen` and :" "func:`os.spawn* ` functions. They should no longer be used to " @@ -3153,14 +3553,14 @@ msgid "" "(Contributed by Victor Stinner in :gh:`120743`.)" msgstr "" -#: whatsnew/3.14.rst:2094 +#: whatsnew/3.14.rst:2348 msgid "" ":mod:`pathlib`: :meth:`!pathlib.PurePath.as_uri` is deprecated and will be " "removed in Python 3.19. Use :meth:`pathlib.Path.as_uri` instead. " "(Contributed by Barney Gale in :gh:`123599`.)" msgstr "" -#: whatsnew/3.14.rst:2099 +#: whatsnew/3.14.rst:2353 msgid "" ":mod:`pdb`: The undocumented ``pdb.Pdb.curframe_locals`` attribute is now a " "deprecated read-only property. The low overhead dynamic frame locals access " @@ -3170,13 +3570,13 @@ msgid "" "later versions. (Contributed by Tian Gao in :gh:`124369` and :gh:`125951`.)" msgstr "" -#: whatsnew/3.14.rst:2107 +#: whatsnew/3.14.rst:2361 msgid "" ":mod:`symtable`: Deprecate :meth:`symtable.Class.get_methods` due to the " "lack of interest. (Contributed by Bénédikt Tran in :gh:`119698`.)" msgstr "" -#: whatsnew/3.14.rst:2111 +#: whatsnew/3.14.rst:2365 msgid "" ":mod:`tkinter`: The :class:`!tkinter.Variable` methods :meth:`!" "trace_variable`, :meth:`!trace_vdelete` and :meth:`!trace_vinfo` are now " @@ -3184,7 +3584,7 @@ msgid "" "trace_info` instead. (Contributed by Serhiy Storchaka in :gh:`120220`.)" msgstr "" -#: whatsnew/3.14.rst:2118 +#: whatsnew/3.14.rst:2372 msgid "" ":mod:`urllib.parse`: Accepting objects with false values (like ``0`` and " "``[]``) except empty strings, byte-like objects and ``None`` in :mod:`urllib." @@ -3335,27 +3735,36 @@ msgstr "" #: deprecations/pending-removal-in-3.15.rst:88 msgid "" +"When using the functional syntax of :class:`~typing.TypedDict`\\s, failing " +"to pass a value to the *fields* parameter (``TD = TypedDict(\"TD\")``) or " +"passing ``None`` (``TD = TypedDict(\"TD\", None)``) has been deprecated " +"since Python 3.13. Use ``class TD(TypedDict): pass`` or ``TD = " +"TypedDict(\"TD\", {})`` to create a TypedDict with zero field." +msgstr "" + +#: deprecations/pending-removal-in-3.15.rst:95 +msgid "" "The :func:`typing.no_type_check_decorator` decorator function has been " "deprecated since Python 3.13. After eight years in the :mod:`typing` module, " "it has yet to be supported by any major type checker." msgstr "" -#: deprecations/pending-removal-in-3.15.rst:93 +#: deprecations/pending-removal-in-3.15.rst:100 msgid ":mod:`wave`:" msgstr "" -#: deprecations/pending-removal-in-3.15.rst:95 +#: deprecations/pending-removal-in-3.15.rst:102 msgid "" "The :meth:`~wave.Wave_read.getmark`, :meth:`!setmark`, and :meth:`~wave." "Wave_read.getmarkers` methods of the :class:`~wave.Wave_read` and :class:" "`~wave.Wave_write` classes have been deprecated since Python 3.13." msgstr "" -#: deprecations/pending-removal-in-3.15.rst:100 +#: deprecations/pending-removal-in-3.15.rst:107 msgid ":mod:`zipimport`:" msgstr "" -#: deprecations/pending-removal-in-3.15.rst:102 +#: deprecations/pending-removal-in-3.15.rst:109 msgid "" ":meth:`~zipimport.zipimporter.load_module` has been deprecated since Python " "3.10. Use :meth:`~zipimport.zipimporter.exec_module` instead. (Contributed " @@ -3865,17 +4274,17 @@ msgid "" "_clear_internal_caches` instead." msgstr "" -#: whatsnew/3.14.rst:2773 +#: whatsnew/3.14.rst:3033 msgid "Removed" msgstr "" -#: whatsnew/3.14.rst:2143 +#: whatsnew/3.14.rst:2397 msgid "" "Remove the *type*, *choices*, and *metavar* parameters of :class:`!argparse." "BooleanOptionalAction`. They were deprecated since 3.12." msgstr "" -#: whatsnew/3.14.rst:2147 +#: whatsnew/3.14.rst:2401 msgid "" "Calling :meth:`~argparse.ArgumentParser.add_argument_group` on an argument " "group, and calling :meth:`~argparse.ArgumentParser.add_argument_group` or :" @@ -3886,33 +4295,33 @@ msgid "" "(Contributed by Savannah Ostrowski in :gh:`127186`.)" msgstr "" -#: whatsnew/3.14.rst:2158 +#: whatsnew/3.14.rst:2412 msgid "" "Remove the following classes. They were all deprecated since Python 3.8, and " "have emitted deprecation warnings since Python 3.12:" msgstr "" -#: whatsnew/3.14.rst:2161 +#: whatsnew/3.14.rst:2415 msgid ":class:`!ast.Bytes`" msgstr "" -#: whatsnew/3.14.rst:2162 +#: whatsnew/3.14.rst:2416 msgid ":class:`!ast.Ellipsis`" msgstr "" -#: whatsnew/3.14.rst:2163 +#: whatsnew/3.14.rst:2417 msgid ":class:`!ast.NameConstant`" msgstr "" -#: whatsnew/3.14.rst:2164 +#: whatsnew/3.14.rst:2418 msgid ":class:`!ast.Num`" msgstr "" -#: whatsnew/3.14.rst:2165 +#: whatsnew/3.14.rst:2419 msgid ":class:`!ast.Str`" msgstr "" -#: whatsnew/3.14.rst:2167 +#: whatsnew/3.14.rst:2421 msgid "" "Use :class:`ast.Constant` instead. As a consequence of these removals, user-" "defined ``visit_Num``, ``visit_Str``, ``visit_Bytes``, " @@ -3922,98 +4331,98 @@ msgid "" "instead." msgstr "" -#: whatsnew/3.14.rst:2174 +#: whatsnew/3.14.rst:2428 msgid "" "Also, remove the following deprecated properties on :class:`ast.Constant`, " "which were present for compatibility with the now-removed AST classes:" msgstr "" -#: whatsnew/3.14.rst:2177 +#: whatsnew/3.14.rst:2431 msgid ":attr:`!ast.Constant.n`" msgstr "" -#: whatsnew/3.14.rst:2178 +#: whatsnew/3.14.rst:2432 msgid ":attr:`!ast.Constant.s`" msgstr "" -#: whatsnew/3.14.rst:2180 +#: whatsnew/3.14.rst:2434 msgid "" "Use :attr:`!ast.Constant.value` instead. (Contributed by Alex Waygood in :gh:" "`119562`.)" msgstr "" -#: whatsnew/3.14.rst:2186 +#: whatsnew/3.14.rst:2440 msgid "" "Remove the following classes and functions. They were all deprecated and " "emitted deprecation warnings since Python 3.12:" msgstr "" -#: whatsnew/3.14.rst:2189 +#: whatsnew/3.14.rst:2443 msgid ":func:`!asyncio.get_child_watcher`" msgstr "" -#: whatsnew/3.14.rst:2190 +#: whatsnew/3.14.rst:2444 msgid ":func:`!asyncio.set_child_watcher`" msgstr "" -#: whatsnew/3.14.rst:2191 +#: whatsnew/3.14.rst:2445 msgid ":meth:`!asyncio.AbstractEventLoopPolicy.get_child_watcher`" msgstr "" -#: whatsnew/3.14.rst:2192 +#: whatsnew/3.14.rst:2446 msgid ":meth:`!asyncio.AbstractEventLoopPolicy.set_child_watcher`" msgstr "" -#: whatsnew/3.14.rst:2193 +#: whatsnew/3.14.rst:2447 msgid ":class:`!asyncio.AbstractChildWatcher`" msgstr "" -#: whatsnew/3.14.rst:2194 +#: whatsnew/3.14.rst:2448 msgid ":class:`!asyncio.FastChildWatcher`" msgstr "" -#: whatsnew/3.14.rst:2195 +#: whatsnew/3.14.rst:2449 msgid ":class:`!asyncio.MultiLoopChildWatcher`" msgstr "" -#: whatsnew/3.14.rst:2196 +#: whatsnew/3.14.rst:2450 msgid ":class:`!asyncio.PidfdChildWatcher`" msgstr "" -#: whatsnew/3.14.rst:2197 +#: whatsnew/3.14.rst:2451 msgid ":class:`!asyncio.SafeChildWatcher`" msgstr "" -#: whatsnew/3.14.rst:2198 +#: whatsnew/3.14.rst:2452 msgid ":class:`!asyncio.ThreadedChildWatcher`" msgstr "" -#: whatsnew/3.14.rst:2200 +#: whatsnew/3.14.rst:2454 msgid "(Contributed by Kumar Aditya in :gh:`120804`.)" msgstr "" -#: whatsnew/3.14.rst:2202 +#: whatsnew/3.14.rst:2456 msgid "" "Removed implicit creation of event loop by :func:`asyncio.get_event_loop`. " "It now raises a :exc:`RuntimeError` if there is no current event loop. " "(Contributed by Kumar Aditya in :gh:`126353`.)" msgstr "" -#: whatsnew/3.14.rst:2206 +#: whatsnew/3.14.rst:2460 msgid "" "There's a few patterns that use :func:`asyncio.get_event_loop`, most of them " "can be replaced with :func:`asyncio.run`." msgstr "" -#: whatsnew/3.14.rst:2209 +#: whatsnew/3.14.rst:2463 msgid "If you're running an async function, simply use :func:`asyncio.run`." msgstr "" -#: whatsnew/3.14.rst:2234 whatsnew/3.14.rst:2260 +#: whatsnew/3.14.rst:2488 whatsnew/3.14.rst:2514 msgid "Before::" msgstr "" -#: whatsnew/3.14.rst:2213 +#: whatsnew/3.14.rst:2467 msgid "" "async def main():\n" " ...\n" @@ -4026,11 +4435,11 @@ msgid "" " loop.close()" msgstr "" -#: whatsnew/3.14.rst:2246 whatsnew/3.14.rst:2279 +#: whatsnew/3.14.rst:2500 whatsnew/3.14.rst:2533 msgid "After::" msgstr "" -#: whatsnew/3.14.rst:2225 +#: whatsnew/3.14.rst:2479 msgid "" "async def main():\n" " ...\n" @@ -4038,13 +4447,13 @@ msgid "" "asyncio.run(main())" msgstr "" -#: whatsnew/3.14.rst:2230 +#: whatsnew/3.14.rst:2484 msgid "" "If you need to start something, for example, a server listening on a socket " "and then run forever, use :func:`asyncio.run` and an :class:`asyncio.Event`." msgstr "" -#: whatsnew/3.14.rst:2236 +#: whatsnew/3.14.rst:2490 msgid "" "def start_server(loop):\n" " ...\n" @@ -4057,7 +4466,7 @@ msgid "" " loop.close()" msgstr "" -#: whatsnew/3.14.rst:2248 +#: whatsnew/3.14.rst:2502 msgid "" "def start_server(loop):\n" " ...\n" @@ -4069,13 +4478,13 @@ msgid "" "asyncio.run(main())" msgstr "" -#: whatsnew/3.14.rst:2257 +#: whatsnew/3.14.rst:2511 msgid "" "If you need to run something in an event loop, then run some blocking code " "around it, use :class:`asyncio.Runner`." msgstr "" -#: whatsnew/3.14.rst:2262 +#: whatsnew/3.14.rst:2516 msgid "" "async def operation_one():\n" " ...\n" @@ -4095,7 +4504,7 @@ msgid "" " loop.close()" msgstr "" -#: whatsnew/3.14.rst:2281 +#: whatsnew/3.14.rst:2535 msgid "" "async def operation_one():\n" " ...\n" @@ -4112,119 +4521,119 @@ msgid "" " runner.run(operation_two())" msgstr "" -#: whatsnew/3.14.rst:2298 +#: whatsnew/3.14.rst:2552 msgid "collections.abc" msgstr "" -#: whatsnew/3.14.rst:2300 +#: whatsnew/3.14.rst:2554 msgid "" "Remove :class:`!collections.abc.ByteString`. It had previously raised a :exc:" "`DeprecationWarning` since Python 3.12." msgstr "" -#: whatsnew/3.14.rst:2304 +#: whatsnew/3.14.rst:2558 msgid "email" msgstr "" -#: whatsnew/3.14.rst:2306 +#: whatsnew/3.14.rst:2560 msgid "" "Remove the *isdst* parameter from :func:`email.utils.localtime`. " "(Contributed by Hugo van Kemenade in :gh:`118798`.)" msgstr "" -#: whatsnew/3.14.rst:2310 +#: whatsnew/3.14.rst:2564 msgid "importlib" msgstr "" -#: whatsnew/3.14.rst:2312 +#: whatsnew/3.14.rst:2566 msgid "Remove deprecated :mod:`importlib.abc` classes:" msgstr "" -#: whatsnew/3.14.rst:2314 +#: whatsnew/3.14.rst:2568 msgid ":class:`!importlib.abc.ResourceReader`" msgstr "" -#: whatsnew/3.14.rst:2315 +#: whatsnew/3.14.rst:2569 msgid ":class:`!importlib.abc.Traversable`" msgstr "" -#: whatsnew/3.14.rst:2316 +#: whatsnew/3.14.rst:2570 msgid ":class:`!importlib.abc.TraversableResources`" msgstr "" -#: whatsnew/3.14.rst:2318 +#: whatsnew/3.14.rst:2572 msgid "Use :mod:`importlib.resources.abc` classes instead:" msgstr "" -#: whatsnew/3.14.rst:2320 +#: whatsnew/3.14.rst:2574 msgid ":class:`importlib.resources.abc.Traversable`" msgstr "" -#: whatsnew/3.14.rst:2321 +#: whatsnew/3.14.rst:2575 msgid ":class:`importlib.resources.abc.TraversableResources`" msgstr "" -#: whatsnew/3.14.rst:2323 +#: whatsnew/3.14.rst:2577 msgid "(Contributed by Jason R. Coombs and Hugo van Kemenade in :gh:`93963`.)" msgstr "" -#: whatsnew/3.14.rst:2326 +#: whatsnew/3.14.rst:2580 msgid "itertools" msgstr "" -#: whatsnew/3.14.rst:2328 +#: whatsnew/3.14.rst:2582 msgid "" "Remove :mod:`itertools` support for copy, deepcopy, and pickle operations. " "These had previously raised a :exc:`DeprecationWarning` since Python 3.12. " "(Contributed by Raymond Hettinger in :gh:`101588`.)" msgstr "" -#: whatsnew/3.14.rst:2335 +#: whatsnew/3.14.rst:2589 msgid "" "Remove support for passing additional keyword arguments to :class:`pathlib." "Path`. In previous versions, any such arguments are ignored." msgstr "" -#: whatsnew/3.14.rst:2337 +#: whatsnew/3.14.rst:2591 msgid "" "Remove support for passing additional positional arguments to :meth:`pathlib." "PurePath.relative_to` and :meth:`~pathlib.PurePath.is_relative_to`. In " "previous versions, any such arguments are joined onto *other*." msgstr "" -#: whatsnew/3.14.rst:2343 +#: whatsnew/3.14.rst:2597 msgid "pkgutil" msgstr "" -#: whatsnew/3.14.rst:2345 +#: whatsnew/3.14.rst:2599 msgid "" "Remove deprecated :func:`!pkgutil.get_loader` and :func:`!pkgutil." "find_loader`. These had previously raised a :exc:`DeprecationWarning` since " "Python 3.12. (Contributed by Bénédikt Tran in :gh:`97850`.)" msgstr "" -#: whatsnew/3.14.rst:2350 +#: whatsnew/3.14.rst:2604 msgid "pty" msgstr "" -#: whatsnew/3.14.rst:2352 +#: whatsnew/3.14.rst:2606 msgid "" "Remove deprecated :func:`!pty.master_open` and :func:`!pty.slave_open`. They " "had previously raised a :exc:`DeprecationWarning` since Python 3.12. Use :" "func:`pty.openpty` instead. (Contributed by Nikita Sobolev in :gh:`118824`.)" msgstr "" -#: whatsnew/3.14.rst:2358 +#: whatsnew/3.14.rst:2612 msgid "sqlite3" msgstr "" -#: whatsnew/3.14.rst:2360 +#: whatsnew/3.14.rst:2614 msgid "" "Remove :data:`!version` and :data:`!version_info` from :mod:`sqlite3`. " "(Contributed by Hugo van Kemenade in :gh:`118924`.)" msgstr "" -#: whatsnew/3.14.rst:2363 +#: whatsnew/3.14.rst:2617 msgid "" "Disallow using a sequence of parameters with named placeholders. This had " "previously raised a :exc:`DeprecationWarning` since Python 3.12; it will now " @@ -4232,31 +4641,31 @@ msgid "" "in :gh:`118928` and :gh:`101693`.)" msgstr "" -#: whatsnew/3.14.rst:2371 +#: whatsnew/3.14.rst:2625 msgid "" "Remove :class:`!typing.ByteString`. It had previously raised a :exc:" "`DeprecationWarning` since Python 3.12." msgstr "" -#: whatsnew/3.14.rst:2374 +#: whatsnew/3.14.rst:2628 msgid ":class:`typing.TypeAliasType` now supports star unpacking." msgstr "" -#: whatsnew/3.14.rst:2379 +#: whatsnew/3.14.rst:2633 msgid "" "Remove deprecated :class:`!Quoter` class from :mod:`urllib.parse`. It had " "previously raised a :exc:`DeprecationWarning` since Python 3.11. " "(Contributed by Nikita Sobolev in :gh:`118827`.)" msgstr "" -#: whatsnew/3.14.rst:2382 +#: whatsnew/3.14.rst:2636 msgid "" "Remove deprecated :class:`!URLopener` and :class:`!FancyURLopener` classes " "from :mod:`urllib.request`. They had previously raised a :exc:" "`DeprecationWarning` since Python 3.3." msgstr "" -#: whatsnew/3.14.rst:2386 +#: whatsnew/3.14.rst:2640 msgid "" "``myopener.open()`` can be replaced with :func:`~urllib.request.urlopen`, " "and ``myopener.retrieve()`` can be replaced with :func:`~urllib.request." @@ -4265,18 +4674,18 @@ msgid "" "(Contributed by Barney Gale in :gh:`84850`.)" msgstr "" -#: whatsnew/3.14.rst:2394 +#: whatsnew/3.14.rst:2648 msgid "Others" msgstr "" -#: whatsnew/3.14.rst:2396 +#: whatsnew/3.14.rst:2650 msgid "" "Using :data:`NotImplemented` in a boolean context will now raise a :exc:" "`TypeError`. It had previously raised a :exc:`DeprecationWarning` since " "Python 3.9. (Contributed by Jelle Zijlstra in :gh:`118767`.)" msgstr "" -#: whatsnew/3.14.rst:2400 +#: whatsnew/3.14.rst:2654 msgid "" "The :func:`int` built-in no longer delegates to :meth:`~object.__trunc__`. " "Classes that want to support conversion to integer must implement either :" @@ -4284,73 +4693,81 @@ msgid "" "Dickinson in :gh:`119743`.)" msgstr "" -#: whatsnew/3.14.rst:2407 +#: whatsnew/3.14.rst:2661 msgid "CPython bytecode changes" msgstr "" -#: whatsnew/3.14.rst:2409 +#: whatsnew/3.14.rst:2663 msgid "" "Replaced the opcode ``BINARY_SUBSCR`` by :opcode:`BINARY_OP` with oparg " "``NB_SUBSCR``. (Contributed by Irit Katriel in :gh:`100239`.)" msgstr "" -#: whatsnew/3.14.rst:2634 +#: whatsnew/3.14.rst:2894 msgid "Porting to Python 3.14" msgstr "" -#: whatsnew/3.14.rst:2415 +#: whatsnew/3.14.rst:2669 msgid "" "This section lists previously described changes and other bugfixes that may " "require changes to your code." msgstr "" -#: whatsnew/3.14.rst:2419 +#: whatsnew/3.14.rst:2673 msgid "Changes in the Python API" msgstr "" -#: whatsnew/3.14.rst:2421 +#: whatsnew/3.14.rst:2675 msgid "" ":class:`functools.partial` is now a method descriptor. Wrap it in :func:" "`staticmethod` if you want to preserve the old behavior. (Contributed by " "Serhiy Storchaka and Dominykas Grigonis in :gh:`121027`.)" msgstr "" -#: whatsnew/3.14.rst:2425 +#: whatsnew/3.14.rst:2679 msgid "" "The :func:`locale.nl_langinfo` function now sets temporarily the " "``LC_CTYPE`` locale in some cases. This temporary change affects other " "threads. (Contributed by Serhiy Storchaka in :gh:`69998`.)" msgstr "" -#: whatsnew/3.14.rst:2430 +#: whatsnew/3.14.rst:2684 msgid "" ":class:`types.UnionType` is now an alias for :class:`typing.Union`, causing " "changes in some behaviors. See :ref:`above ` for " "more details. (Contributed by Jelle Zijlstra in :gh:`105499`.)" msgstr "" -#: whatsnew/3.14.rst:2437 +#: whatsnew/3.14.rst:2689 +msgid "" +"The runtime behavior of annotations has changed in various ways; see :ref:" +"`above ` for details. While most code that interacts " +"with annotations should continue to work, some undocumented details may " +"behave differently." +msgstr "" + +#: whatsnew/3.14.rst:2696 msgid "Build changes" msgstr "" -#: whatsnew/3.14.rst:2439 +#: whatsnew/3.14.rst:2698 msgid "" "GNU Autoconf 2.72 is now required to generate :file:`configure`. " "(Contributed by Erlend Aasland in :gh:`115765`.)" msgstr "" -#: whatsnew/3.14.rst:2442 +#: whatsnew/3.14.rst:2701 msgid "" "``#pragma``-based linking with ``python3*.lib`` can now be switched off " "with :c:expr:`Py_NO_LINK_LIB`. (Contributed by Jean-Christophe Fillion-Robin " "in :gh:`82909`.)" msgstr "" -#: whatsnew/3.14.rst:2449 +#: whatsnew/3.14.rst:2708 msgid "PEP 761: Discontinuation of PGP signatures" msgstr "" -#: whatsnew/3.14.rst:2451 +#: whatsnew/3.14.rst:2710 msgid "" "PGP signatures will not be available for CPython 3.14 and onwards. Users " "verifying artifacts must use `Sigstore verification materials`_ for " @@ -4358,82 +4775,86 @@ msgid "" "pep:`761`." msgstr "" -#: whatsnew/3.14.rst:2460 +#: whatsnew/3.14.rst:2719 msgid "C API changes" msgstr "" -#: whatsnew/3.14.rst:2465 +#: whatsnew/3.14.rst:2724 msgid "" "Add :c:func:`PyLong_GetSign` function to get the sign of :class:`int` " "objects. (Contributed by Sergey B Kirpichev in :gh:`116560`.)" msgstr "" -#: whatsnew/3.14.rst:2468 +#: whatsnew/3.14.rst:2727 msgid "" "Add a new :c:type:`PyUnicodeWriter` API to create a Python :class:`str` " "object:" msgstr "" -#: whatsnew/3.14.rst:2471 +#: whatsnew/3.14.rst:2730 msgid ":c:func:`PyUnicodeWriter_Create`" msgstr "" -#: whatsnew/3.14.rst:2472 +#: whatsnew/3.14.rst:2731 msgid ":c:func:`PyUnicodeWriter_DecodeUTF8Stateful`" msgstr "" -#: whatsnew/3.14.rst:2473 +#: whatsnew/3.14.rst:2732 msgid ":c:func:`PyUnicodeWriter_Discard`" msgstr "" -#: whatsnew/3.14.rst:2474 +#: whatsnew/3.14.rst:2733 msgid ":c:func:`PyUnicodeWriter_Finish`" msgstr "" -#: whatsnew/3.14.rst:2475 +#: whatsnew/3.14.rst:2734 msgid ":c:func:`PyUnicodeWriter_Format`" msgstr "" -#: whatsnew/3.14.rst:2476 +#: whatsnew/3.14.rst:2735 +msgid ":c:func:`PyUnicodeWriter_WriteASCII`" +msgstr "" + +#: whatsnew/3.14.rst:2736 msgid ":c:func:`PyUnicodeWriter_WriteChar`" msgstr "" -#: whatsnew/3.14.rst:2477 +#: whatsnew/3.14.rst:2737 msgid ":c:func:`PyUnicodeWriter_WriteRepr`" msgstr "" -#: whatsnew/3.14.rst:2478 +#: whatsnew/3.14.rst:2738 msgid ":c:func:`PyUnicodeWriter_WriteStr`" msgstr "" -#: whatsnew/3.14.rst:2479 +#: whatsnew/3.14.rst:2739 msgid ":c:func:`PyUnicodeWriter_WriteSubstring`" msgstr "" -#: whatsnew/3.14.rst:2480 +#: whatsnew/3.14.rst:2740 msgid ":c:func:`PyUnicodeWriter_WriteUCS4`" msgstr "" -#: whatsnew/3.14.rst:2481 +#: whatsnew/3.14.rst:2741 msgid ":c:func:`PyUnicodeWriter_WriteUTF8`" msgstr "" -#: whatsnew/3.14.rst:2482 +#: whatsnew/3.14.rst:2742 msgid ":c:func:`PyUnicodeWriter_WriteWideChar`" msgstr "" -#: whatsnew/3.14.rst:2484 +#: whatsnew/3.14.rst:2744 msgid "(Contributed by Victor Stinner in :gh:`119182`.)" msgstr "" -#: whatsnew/3.14.rst:2486 +#: whatsnew/3.14.rst:2746 msgid "" "Add :c:func:`PyIter_NextItem` to replace :c:func:`PyIter_Next`, which has an " "ambiguous return value. (Contributed by Irit Katriel and Erlend Aasland in :" "gh:`105201`.)" msgstr "" -#: whatsnew/3.14.rst:2490 +#: whatsnew/3.14.rst:2750 msgid "" "Add :c:func:`PyLong_IsPositive`, :c:func:`PyLong_IsNegative` and :c:func:" "`PyLong_IsZero` for checking if :c:type:`PyLongObject` is positive, " @@ -4441,210 +4862,210 @@ msgid "" "Kirpichev in :gh:`126061`.)" msgstr "" -#: whatsnew/3.14.rst:2495 +#: whatsnew/3.14.rst:2755 msgid "" "Add new functions to convert C ```` numbers from/to Python :class:" "`int`:" msgstr "" -#: whatsnew/3.14.rst:2498 +#: whatsnew/3.14.rst:2758 msgid ":c:func:`PyLong_AsInt32`" msgstr "" -#: whatsnew/3.14.rst:2499 +#: whatsnew/3.14.rst:2759 msgid ":c:func:`PyLong_AsInt64`" msgstr "" -#: whatsnew/3.14.rst:2500 +#: whatsnew/3.14.rst:2760 msgid ":c:func:`PyLong_AsUInt32`" msgstr "" -#: whatsnew/3.14.rst:2501 +#: whatsnew/3.14.rst:2761 msgid ":c:func:`PyLong_AsUInt64`" msgstr "" -#: whatsnew/3.14.rst:2502 +#: whatsnew/3.14.rst:2762 msgid ":c:func:`PyLong_FromInt32`" msgstr "" -#: whatsnew/3.14.rst:2503 +#: whatsnew/3.14.rst:2763 msgid ":c:func:`PyLong_FromInt64`" msgstr "" -#: whatsnew/3.14.rst:2504 +#: whatsnew/3.14.rst:2764 msgid ":c:func:`PyLong_FromUInt32`" msgstr "" -#: whatsnew/3.14.rst:2505 +#: whatsnew/3.14.rst:2765 msgid ":c:func:`PyLong_FromUInt64`" msgstr "" -#: whatsnew/3.14.rst:2507 +#: whatsnew/3.14.rst:2767 msgid "(Contributed by Victor Stinner in :gh:`120389`.)" msgstr "" -#: whatsnew/3.14.rst:2509 +#: whatsnew/3.14.rst:2769 msgid "" "Add :c:func:`PyBytes_Join(sep, iterable) ` function, similar " "to ``sep.join(iterable)`` in Python. (Contributed by Victor Stinner in :gh:" "`121645`.)" msgstr "" -#: whatsnew/3.14.rst:2513 +#: whatsnew/3.14.rst:2773 msgid "" "Add :c:func:`Py_HashBuffer` to compute and return the hash value of a " "buffer. (Contributed by Antoine Pitrou and Victor Stinner in :gh:`122854`.)" msgstr "" -#: whatsnew/3.14.rst:2516 +#: whatsnew/3.14.rst:2776 msgid "" "Add functions to get and set the current runtime Python configuration (:pep:" "`741`):" msgstr "" -#: whatsnew/3.14.rst:2519 +#: whatsnew/3.14.rst:2779 msgid ":c:func:`PyConfig_Get`" msgstr "" -#: whatsnew/3.14.rst:2520 +#: whatsnew/3.14.rst:2780 msgid ":c:func:`PyConfig_GetInt`" msgstr "" -#: whatsnew/3.14.rst:2521 +#: whatsnew/3.14.rst:2781 msgid ":c:func:`PyConfig_Set`" msgstr "" -#: whatsnew/3.14.rst:2522 +#: whatsnew/3.14.rst:2782 msgid ":c:func:`PyConfig_Names`" msgstr "" -#: whatsnew/3.14.rst:2526 +#: whatsnew/3.14.rst:2786 msgid "Add functions to configure the Python initialization (:pep:`741`):" msgstr "" -#: whatsnew/3.14.rst:2528 +#: whatsnew/3.14.rst:2788 msgid ":c:func:`Py_InitializeFromInitConfig`" msgstr "" -#: whatsnew/3.14.rst:2529 +#: whatsnew/3.14.rst:2789 msgid ":c:func:`PyInitConfig_AddModule`" msgstr "" -#: whatsnew/3.14.rst:2530 +#: whatsnew/3.14.rst:2790 msgid ":c:func:`PyInitConfig_Create`" msgstr "" -#: whatsnew/3.14.rst:2531 +#: whatsnew/3.14.rst:2791 msgid ":c:func:`PyInitConfig_Free`" msgstr "" -#: whatsnew/3.14.rst:2532 +#: whatsnew/3.14.rst:2792 msgid ":c:func:`PyInitConfig_FreeStrList`" msgstr "" -#: whatsnew/3.14.rst:2533 +#: whatsnew/3.14.rst:2793 msgid ":c:func:`PyInitConfig_GetError`" msgstr "" -#: whatsnew/3.14.rst:2534 +#: whatsnew/3.14.rst:2794 msgid ":c:func:`PyInitConfig_GetExitCode`" msgstr "" -#: whatsnew/3.14.rst:2535 +#: whatsnew/3.14.rst:2795 msgid ":c:func:`PyInitConfig_GetInt`" msgstr "" -#: whatsnew/3.14.rst:2536 +#: whatsnew/3.14.rst:2796 msgid ":c:func:`PyInitConfig_GetStr`" msgstr "" -#: whatsnew/3.14.rst:2537 +#: whatsnew/3.14.rst:2797 msgid ":c:func:`PyInitConfig_GetStrList`" msgstr "" -#: whatsnew/3.14.rst:2538 +#: whatsnew/3.14.rst:2798 msgid ":c:func:`PyInitConfig_HasOption`" msgstr "" -#: whatsnew/3.14.rst:2539 +#: whatsnew/3.14.rst:2799 msgid ":c:func:`PyInitConfig_SetInt`" msgstr "" -#: whatsnew/3.14.rst:2540 +#: whatsnew/3.14.rst:2800 msgid ":c:func:`PyInitConfig_SetStr`" msgstr "" -#: whatsnew/3.14.rst:2541 +#: whatsnew/3.14.rst:2801 msgid ":c:func:`PyInitConfig_SetStrList`" msgstr "" -#: whatsnew/3.14.rst:2545 +#: whatsnew/3.14.rst:2805 msgid "" "Add a new import and export API for Python :class:`int` objects (:pep:`757`):" msgstr "" -#: whatsnew/3.14.rst:2547 +#: whatsnew/3.14.rst:2807 msgid ":c:func:`PyLong_GetNativeLayout`" msgstr "" -#: whatsnew/3.14.rst:2548 +#: whatsnew/3.14.rst:2808 msgid ":c:func:`PyLong_Export`" msgstr "" -#: whatsnew/3.14.rst:2549 +#: whatsnew/3.14.rst:2809 msgid ":c:func:`PyLong_FreeExport`" msgstr "" -#: whatsnew/3.14.rst:2550 +#: whatsnew/3.14.rst:2810 msgid ":c:func:`PyLongWriter_Create`" msgstr "" -#: whatsnew/3.14.rst:2551 +#: whatsnew/3.14.rst:2811 msgid ":c:func:`PyLongWriter_Finish`" msgstr "" -#: whatsnew/3.14.rst:2552 +#: whatsnew/3.14.rst:2812 msgid ":c:func:`PyLongWriter_Discard`" msgstr "" -#: whatsnew/3.14.rst:2554 +#: whatsnew/3.14.rst:2814 msgid "(Contributed by Sergey B Kirpichev and Victor Stinner in :gh:`102471`.)" msgstr "" -#: whatsnew/3.14.rst:2556 +#: whatsnew/3.14.rst:2816 msgid "" "Add :c:func:`PyType_GetBaseByToken` and :c:data:`Py_tp_token` slot for " "easier superclass identification, which attempts to resolve the `type " "checking issue `__ " -"mentioned in :pep:`630` (:gh:`124153`)." +"mentioned in :pep:`630`. (Contributed in :gh:`124153`.)" msgstr "" -#: whatsnew/3.14.rst:2561 +#: whatsnew/3.14.rst:2821 msgid "" "Add :c:func:`PyUnicode_Equal` function to the limited C API: test if two " "strings are equal. (Contributed by Victor Stinner in :gh:`124502`.)" msgstr "" -#: whatsnew/3.14.rst:2565 +#: whatsnew/3.14.rst:2825 msgid "" "Add :c:func:`PyType_Freeze` function to make a type immutable. (Contributed " "by Victor Stinner in :gh:`121654`.)" msgstr "" -#: whatsnew/3.14.rst:2568 +#: whatsnew/3.14.rst:2828 msgid "" "Add :c:func:`PyUnstable_Object_EnableDeferredRefcount` for enabling deferred " "reference counting, as outlined in :pep:`703`." msgstr "" -#: whatsnew/3.14.rst:2571 +#: whatsnew/3.14.rst:2831 msgid "" "Add :c:func:`PyMonitoring_FireBranchLeftEvent` and :c:func:" "`PyMonitoring_FireBranchRightEvent` for generating :monitoring-event:" "`BRANCH_LEFT` and :monitoring-event:`BRANCH_RIGHT` events, respectively." msgstr "" -#: whatsnew/3.14.rst:2576 +#: whatsnew/3.14.rst:2836 msgid "" "Add :c:func:`Py_fopen` function to open a file. Similar to the :c:func:`!" "fopen` function, but the *path* parameter is a Python object and an " @@ -4652,34 +5073,34 @@ msgid "" "file. (Contributed by Victor Stinner in :gh:`127350`.)" msgstr "" -#: whatsnew/3.14.rst:2582 +#: whatsnew/3.14.rst:2842 msgid "" "Add support of nullable arguments in :c:func:`PyArg_ParseTuple` and similar " "functions. Adding ``?`` after any format unit makes ``None`` be accepted as " "a value. (Contributed by Serhiy Storchaka in :gh:`112068`.)" msgstr "" -#: whatsnew/3.14.rst:2587 +#: whatsnew/3.14.rst:2847 msgid "" "The ``k`` and ``K`` formats in :c:func:`PyArg_ParseTuple` and similar " "functions now use :meth:`~object.__index__` if available, like all other " "integer formats. (Contributed by Serhiy Storchaka in :gh:`112068`.)" msgstr "" -#: whatsnew/3.14.rst:2592 +#: whatsnew/3.14.rst:2852 msgid "" "Add macros :c:func:`Py_PACK_VERSION` and :c:func:`Py_PACK_FULL_VERSION` for " "bit-packing Python version numbers. (Contributed by Petr Viktorin in :gh:" "`128629`.)" msgstr "" -#: whatsnew/3.14.rst:2596 +#: whatsnew/3.14.rst:2856 msgid "" "Add :c:func:`PyUnstable_IsImmortal` for determining whether an object is :" "term:`immortal`, for debugging purposes." msgstr "" -#: whatsnew/3.14.rst:2599 +#: whatsnew/3.14.rst:2859 msgid "" "Add :c:func:`PyImport_ImportModuleAttr` and :c:func:" "`PyImport_ImportModuleAttrString` helper functions to import a module and " @@ -4687,14 +5108,14 @@ msgid "" "`128911`.)" msgstr "" -#: whatsnew/3.14.rst:2604 +#: whatsnew/3.14.rst:2864 msgid "" "Add support for a new ``p`` format unit in :c:func:`Py_BuildValue` that " "allows to take a C integer and produce a Python :class:`bool` object. " "(Contributed by Pablo Galindo in :issue:`45325`.)" msgstr "" -#: whatsnew/3.14.rst:2608 +#: whatsnew/3.14.rst:2868 msgid "" "Add :c:func:`PyUnstable_Object_IsUniqueReferencedTemporary` to determine if " "an object is a unique temporary object on the interpreter's operand stack. " @@ -4703,18 +5124,18 @@ msgid "" "functions." msgstr "" -#: whatsnew/3.14.rst:2613 +#: whatsnew/3.14.rst:2873 msgid "" "Add :c:func:`PyUnstable_Object_IsUniquelyReferenced` as a replacement for " "``Py_REFCNT(op) == 1`` on :term:`free threaded ` builds. " "(Contributed by Peter Bierma in :gh:`133140`.)" msgstr "" -#: whatsnew/3.14.rst:2619 +#: whatsnew/3.14.rst:2879 msgid "Limited C API changes" msgstr "" -#: whatsnew/3.14.rst:2621 +#: whatsnew/3.14.rst:2881 msgid "" "In the limited C API 3.14 and newer, :c:func:`Py_TYPE` and :c:func:" "`Py_REFCNT` are now implemented as an opaque function call to hide " @@ -4722,7 +5143,7 @@ msgid "" "gh:`124127`.)" msgstr "" -#: whatsnew/3.14.rst:2626 +#: whatsnew/3.14.rst:2886 msgid "" "Remove the :c:macro:`PySequence_Fast_GET_SIZE`, :c:macro:" "`PySequence_Fast_GET_ITEM` and :c:macro:`PySequence_Fast_ITEMS` macros from " @@ -4731,7 +5152,7 @@ msgid "" "Stinner in :gh:`91417`.)" msgstr "" -#: whatsnew/3.14.rst:2636 +#: whatsnew/3.14.rst:2896 msgid "" ":c:func:`Py_Finalize` now deletes all interned strings. This is backwards " "incompatible to any C-Extension that holds onto an interned string after a " @@ -4744,14 +5165,14 @@ msgid "" "`113601`.)" msgstr "" -#: whatsnew/3.14.rst:2646 +#: whatsnew/3.14.rst:2906 msgid "" "The :ref:`Unicode Exception Objects ` C API now raises a :" "exc:`TypeError` if its exception argument is not a :exc:`UnicodeError` " "object. (Contributed by Bénédikt Tran in :gh:`127691`.)" msgstr "" -#: whatsnew/3.14.rst:2653 +#: whatsnew/3.14.rst:2913 msgid "" "The interpreter internally avoids some reference count modifications when " "loading objects onto the operands stack by :term:`borrowing `." msgstr "" -#: whatsnew/3.14.rst:2735 deprecations/c-api-pending-removal-in-3.18.rst:17 +#: whatsnew/3.14.rst:2995 deprecations/c-api-pending-removal-in-3.18.rst:17 msgid "" ":c:func:`!_PyUnicodeWriter_Finish`: replace " "``_PyUnicodeWriter_Finish(&writer)`` with :c:func:" "`PyUnicodeWriter_Finish(writer) `." msgstr "" -#: whatsnew/3.14.rst:2738 deprecations/c-api-pending-removal-in-3.18.rst:20 +#: whatsnew/3.14.rst:2998 deprecations/c-api-pending-removal-in-3.18.rst:20 msgid "" ":c:func:`!_PyUnicodeWriter_Dealloc`: replace " "``_PyUnicodeWriter_Dealloc(&writer)`` with :c:func:" "`PyUnicodeWriter_Discard(writer) `." msgstr "" -#: whatsnew/3.14.rst:2741 deprecations/c-api-pending-removal-in-3.18.rst:23 +#: whatsnew/3.14.rst:3001 deprecations/c-api-pending-removal-in-3.18.rst:23 msgid "" ":c:func:`!_PyUnicodeWriter_WriteChar`: replace " "``_PyUnicodeWriter_WriteChar(&writer, ch)`` with :c:func:" "`PyUnicodeWriter_WriteChar(writer, ch) `." msgstr "" -#: whatsnew/3.14.rst:2744 deprecations/c-api-pending-removal-in-3.18.rst:26 +#: whatsnew/3.14.rst:3004 deprecations/c-api-pending-removal-in-3.18.rst:26 msgid "" ":c:func:`!_PyUnicodeWriter_WriteStr`: replace " "``_PyUnicodeWriter_WriteStr(&writer, str)`` with :c:func:" "`PyUnicodeWriter_WriteStr(writer, str) `." msgstr "" -#: whatsnew/3.14.rst:2747 deprecations/c-api-pending-removal-in-3.18.rst:29 +#: whatsnew/3.14.rst:3007 deprecations/c-api-pending-removal-in-3.18.rst:29 msgid "" ":c:func:`!_PyUnicodeWriter_WriteSubstring`: replace " "``_PyUnicodeWriter_WriteSubstring(&writer, str, start, end)`` with :c:func:" @@ -4966,29 +5387,29 @@ msgid "" "`." msgstr "" -#: whatsnew/3.14.rst:2750 deprecations/c-api-pending-removal-in-3.18.rst:32 +#: whatsnew/3.14.rst:3010 msgid "" ":c:func:`!_PyUnicodeWriter_WriteASCIIString`: replace " "``_PyUnicodeWriter_WriteASCIIString(&writer, str)`` with :c:func:" -"`PyUnicodeWriter_WriteUTF8(writer, str) `." +"`PyUnicodeWriter_WriteASCII(writer, str) `." msgstr "" -#: whatsnew/3.14.rst:2753 deprecations/c-api-pending-removal-in-3.18.rst:35 +#: whatsnew/3.14.rst:3013 deprecations/c-api-pending-removal-in-3.18.rst:35 msgid "" ":c:func:`!_PyUnicodeWriter_WriteLatin1String`: replace " "``_PyUnicodeWriter_WriteLatin1String(&writer, str)`` with :c:func:" "`PyUnicodeWriter_WriteUTF8(writer, str) `." msgstr "" -#: whatsnew/3.14.rst:2756 deprecations/c-api-pending-removal-in-3.18.rst:40 +#: whatsnew/3.14.rst:3016 deprecations/c-api-pending-removal-in-3.18.rst:40 msgid ":c:func:`!_Py_HashPointer`: use :c:func:`Py_HashPointer`." msgstr "" -#: whatsnew/3.14.rst:2757 deprecations/c-api-pending-removal-in-3.18.rst:41 +#: whatsnew/3.14.rst:3017 deprecations/c-api-pending-removal-in-3.18.rst:41 msgid ":c:func:`!_Py_fopen_obj`: use :c:func:`Py_fopen`." msgstr "" -#: whatsnew/3.14.rst:2759 +#: whatsnew/3.14.rst:3019 msgid "" "The `pythoncapi-compat project`_ can be used to get these new public " "functions on Python 3.13 and older. (Contributed by Victor Stinner in :gh:" @@ -5279,6 +5700,13 @@ msgstr "" msgid ":c:func:`!_PyDict_Pop()`: :c:func:`PyDict_Pop`." msgstr "" +#: deprecations/c-api-pending-removal-in-3.18.rst:32 +msgid "" +":c:func:`!_PyUnicodeWriter_WriteASCIIString`: replace " +"``_PyUnicodeWriter_WriteASCIIString(&writer, str)`` with :c:func:" +"`PyUnicodeWriter_WriteUTF8(writer, str) `." +msgstr "" + #: deprecations/c-api-pending-removal-in-3.18.rst:38 msgid ":c:func:`!_PyUnicodeWriter_Prepare`: (no replacement)." msgstr "" @@ -5387,27 +5815,27 @@ msgstr "" msgid ":c:func:`PyThread_ReInitTLS`: Unneeded since Python 3.7." msgstr "" -#: whatsnew/3.14.rst:2775 +#: whatsnew/3.14.rst:3035 msgid "" "Creating :c:data:`immutable types ` with mutable " "bases was deprecated since 3.12 and now raises a :exc:`TypeError`." msgstr "" -#: whatsnew/3.14.rst:2778 +#: whatsnew/3.14.rst:3038 msgid "" "Remove ``PyDictObject.ma_version_tag`` member which was deprecated since " "Python 3.12. Use the :c:func:`PyDict_AddWatcher` API instead. (Contributed " "by Sam Gross in :gh:`124296`.)" msgstr "" -#: whatsnew/3.14.rst:2782 +#: whatsnew/3.14.rst:3042 msgid "" "Remove the private ``_Py_InitializeMain()`` function. It was a :term:" "`provisional API` added to Python 3.8 by :pep:`587`. (Contributed by Victor " "Stinner in :gh:`129033`.)" msgstr "" -#: whatsnew/3.14.rst:2786 +#: whatsnew/3.14.rst:3046 msgid "" "The undocumented APIs :c:macro:`!Py_C_RECURSION_LIMIT` and :c:member:`!" "PyThreadState.c_recursion_remaining`, added in 3.13, are removed without a " diff --git a/whatsnew/3.2.po b/whatsnew/3.2.po index fad90cb1..54464c2d 100644 --- a/whatsnew/3.2.po +++ b/whatsnew/3.2.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/whatsnew/3.3.po b/whatsnew/3.3.po index 3811991a..c27ac370 100644 --- a/whatsnew/3.3.po +++ b/whatsnew/3.3.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/whatsnew/3.4.po b/whatsnew/3.4.po index 71d04d90..73da895d 100644 --- a/whatsnew/3.4.po +++ b/whatsnew/3.4.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/whatsnew/3.5.po b/whatsnew/3.5.po index 71857bdb..d2fd0846 100644 --- a/whatsnew/3.5.po +++ b/whatsnew/3.5.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/whatsnew/3.6.po b/whatsnew/3.6.po index 86077560..4c64cde4 100644 --- a/whatsnew/3.6.po +++ b/whatsnew/3.6.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/whatsnew/3.7.po b/whatsnew/3.7.po index 549c7181..45f3bb61 100644 --- a/whatsnew/3.7.po +++ b/whatsnew/3.7.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/whatsnew/3.8.po b/whatsnew/3.8.po index ef2f5ca3..d2f933eb 100644 --- a/whatsnew/3.8.po +++ b/whatsnew/3.8.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/whatsnew/3.9.po b/whatsnew/3.9.po index f914e06d..974ccfff 100644 --- a/whatsnew/3.9.po +++ b/whatsnew/3.9.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/whatsnew/changelog.po b/whatsnew/changelog.po index 90ec123a..2e4216a6 100644 --- a/whatsnew/changelog.po +++ b/whatsnew/changelog.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/whatsnew/index.po b/whatsnew/index.po index e1357a76..2625b696 100644 --- a/whatsnew/index.po +++ b/whatsnew/index.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-20 15:48+0300\n" "Last-Translator: Marios Giannopoulos \n" "Language-Team: PyGreece \n" pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy