diff --git a/Makefile b/Makefile index 0c7ab513f9..da970cd135 100644 --- a/Makefile +++ b/Makefile @@ -8,7 +8,7 @@ # Configuration CPYTHON_PATH := cpython #Current commit for this upstream repo is setted by the submodule -BRANCH := 3.8 +BRANCH := 3.11 LANGUAGE_TEAM := python-docs-es LANGUAGE := es @@ -80,7 +80,7 @@ venv: # Makefile's "serve" target. Run "build" before using this target. .PHONY: serve serve: - $(MAKE) -C $(CPYTHON_WORKDIR)/Doc serve + $(MAKE) -C $(CPYTHON_WORKDIR)/Doc htmlview # clean: remove all .mo files and the venv directory that may exist and diff --git a/about.po b/about.po index 4f08105256..75a8f41642 100644 --- a/about.po +++ b/about.po @@ -1,23 +1,25 @@ # Copyright (C) 2001-2020, Python Software Foundation # This file is distributed under the same license as the Python package. # Maintained by the python-doc-es workteam. -# docs-es@python.org / https://mail.python.org/mailman3/lists/docs-es.python.org/ -# Check https://github.com/python/python-docs-es/blob/3.8/TRANSLATORS to get the list of volunteers +# docs-es@python.org / +# https://mail.python.org/mailman3/lists/docs-es.python.org/ +# Check https://github.com/python/python-docs-es/blob/3.8/TRANSLATORS to get +# the list of volunteers # msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-05-06 11:59-0400\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2019-12-22 12:23+0100\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Last-Translator: \n" -"Language-Team: python-doc-es\n" "Language: es\n" -"X-Generator: Poedit 2.2.4\n" +"Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/about.rst:3 msgid "About these documents" @@ -57,26 +59,28 @@ msgstr "" "herramientas de Python y escritor de gran parte del contenido;" #: ../Doc/about.rst:24 +#, fuzzy msgid "" -"the `Docutils `_ project for creating " +"the `Docutils `_ project for creating " "reStructuredText and the Docutils suite;" msgstr "" "el proyecto `Docutils `_ para creación de " "reStructuredText y el juego de Utilidades de Documentación;" #: ../Doc/about.rst:26 +#, fuzzy msgid "" -"Fredrik Lundh for his `Alternative Python Reference `_ project from which Sphinx got many good ideas." +"Fredrik Lundh for his Alternative Python Reference project from which Sphinx " +"got many good ideas." msgstr "" "Fredrik Lundh por su proyecto `Referencia Alternativa de Python `_ para la cual Sphinx tuvo muchas ideas." -#: ../Doc/about.rst:32 +#: ../Doc/about.rst:31 msgid "Contributors to the Python Documentation" msgstr "Contribuidores de la documentación de Python" -#: ../Doc/about.rst:34 +#: ../Doc/about.rst:33 msgid "" "Many people have contributed to the Python language, the Python standard " "library, and the Python documentation. See :source:`Misc/ACKS` in the " @@ -86,7 +90,7 @@ msgstr "" "estándar de Python, y la documentación de Python. Revisa :source:`Misc/ACKS` " "la distribución de Python para una lista parcial de contribuidores." -#: ../Doc/about.rst:38 +#: ../Doc/about.rst:37 msgid "" "It is only with the input and contributions of the Python community that " "Python has such wonderful documentation -- Thank You!" diff --git a/bugs.po b/bugs.po index c1932550bf..175bd25e93 100644 --- a/bugs.po +++ b/bugs.po @@ -10,16 +10,16 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2020-06-28 01:03+0200\n" "Last-Translator: \n" -"Language-Team: python-doc-es\n" "Language: es\n" +"Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" -"Generated-By: Babel 2.9.1\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/bugs.rst:5 msgid "Dealing with Bugs" @@ -96,7 +96,7 @@ msgid "" msgstr "" "Resumen general del proceso necesario para reportar una mejora en el tracker." -#: ../Doc/bugs.rst:35 +#: ../Doc/bugs.rst:36 msgid "" "`Helping with Documentation `_" @@ -112,30 +112,43 @@ msgstr "" "Guía detallada para gente interesada en contribuir a la documentación de " "Python." -#: ../Doc/bugs.rst:41 +#: ../Doc/bugs.rst:38 +#, fuzzy +msgid "" +"`Documentation Translations `_" +msgstr "" +"`Ayudar con la documentación `_" + +#: ../Doc/bugs.rst:39 +msgid "" +"A list of GitHub pages for documentation translation and their primary " +"contacts." +msgstr "" + +#: ../Doc/bugs.rst:45 msgid "Using the Python issue tracker" msgstr "Utilizar el issue tracker de Python" -#: ../Doc/bugs.rst:43 +#: ../Doc/bugs.rst:47 msgid "" -"Bug reports for Python itself should be submitted via the Python Bug Tracker " -"(https://bugs.python.org/). The bug tracker offers a web form which allows " -"pertinent information to be entered and submitted to the developers." +"Issue reports for Python itself should be submitted via the GitHub issues " +"tracker (https://github.com/python/cpython/issues). The GitHub issues " +"tracker offers a web form which allows pertinent information to be entered " +"and submitted to the developers." msgstr "" -"Los informes de errores para Python en sí deben enviarse a través de Python " -"Bug Tracker (https://bugs.python.org/). El rastreador de errores ofrece un " -"formulario web que permite ingresar y enviar la información pertinente a los " -"desarrolladores." -#: ../Doc/bugs.rst:47 +#: ../Doc/bugs.rst:52 +#, fuzzy msgid "" "The first step in filing a report is to determine whether the problem has " "already been reported. The advantage in doing so, aside from saving the " -"developers time, is that you learn what has been done to fix it; it may be " +"developers' time, is that you learn what has been done to fix it; it may be " "that the problem has already been fixed for the next release, or additional " "information is needed (in which case you are welcome to provide it if you " -"can!). To do this, search the bug database using the search box on the top " -"of the page." +"can!). To do this, search the tracker using the search box at the top of the " +"page." msgstr "" "El primer paso para rellenar un informe es determinar si el problema ya ha " "sido descrito previamente. La ventaja de hacer esto, aparte de ahorrar " @@ -146,42 +159,34 @@ msgstr "" "en la base de datos de errores usando la zona de búsqueda al principio de " "esta página." -#: ../Doc/bugs.rst:54 +#: ../Doc/bugs.rst:59 msgid "" -"If the problem you're reporting is not already in the bug tracker, go back " -"to the Python Bug Tracker and log in. If you don't already have a tracker " -"account, select the \"Register\" link or, if you use OpenID, one of the " -"OpenID provider logos in the sidebar. It is not possible to submit a bug " -"report anonymously." +"If the problem you're reporting is not already in the list, log in to " +"GitHub. If you don't already have a GitHub account, create a new account " +"using the \"Sign up\" link. It is not possible to submit a bug report " +"anonymously." msgstr "" -"Si el problema que estás describiendo no está todavía en el rastreador de " -"errores, vuelve al Python Bug Tracker e inicia sesión. Si no tienes una " -"cuenta en el rastreador, selecciona el enlace \"Register\" o, si usas " -"OpenID, selecciona uno de los logos de los proveedores OpenID en la barra " -"lateral. No es posible el envío de informes de errores de manera anónima." -#: ../Doc/bugs.rst:59 +#: ../Doc/bugs.rst:64 +#, fuzzy msgid "" -"Being now logged in, you can submit a bug. Select the \"Create New\" link " -"in the sidebar to open the bug reporting form." +"Being now logged in, you can submit an issue. Click on the \"New issue\" " +"button in the top bar to report a new issue." msgstr "" "Una vez dentro, puedes enviar el error. Selecciona el enlace \"Create New\" " "en la barra lateral para abrir el formulario del informe de errores." -#: ../Doc/bugs.rst:62 +#: ../Doc/bugs.rst:67 +msgid "The submission form has two fields, \"Title\" and \"Comment\"." +msgstr "" + +#: ../Doc/bugs.rst:69 msgid "" -"The submission form has a number of fields. For the \"Title\" field, enter " -"a *very* short description of the problem; less than ten words is good. In " -"the \"Type\" field, select the type of your problem; also select the " -"\"Component\" and \"Versions\" to which the bug relates." +"For the \"Title\" field, enter a *very* short description of the problem; " +"less than ten words is good." msgstr "" -"El formulario de envío tiene un número de campos. Para el campo \"Title\", " -"introduce una descripción *muy* corta del problema; menos de diez palabras " -"está bien. En el campo \"Type\", selecciona el tipo de problema; selecciona " -"también el \"Component\" y \"Versions\" con los que el error está " -"relacionado." -#: ../Doc/bugs.rst:67 +#: ../Doc/bugs.rst:72 msgid "" "In the \"Comment\" field, describe the problem in detail, including what you " "expected to happen and what did happen. Be sure to include whether any " @@ -193,17 +198,18 @@ msgstr "" "si cualquier módulo de extensión está involucrado, y qué plataformas de " "hardware y software estás usando (incluyendo las versiones correspondientes)." -#: ../Doc/bugs.rst:72 +#: ../Doc/bugs.rst:77 +#, fuzzy msgid "" -"Each bug report will be assigned to a developer who will determine what " -"needs to be done to correct the problem. You will receive an update each " -"time action is taken on the bug." +"Each issue report will be reviewed by a developer who will determine what " +"needs to be done to correct the problem. You will receive an update each " +"time an action is taken on the issue." msgstr "" "Cada informe de errores será asignado a un desarrollador que determinará qué " "es necesario hacer para corregir el problema. Recibirás una actualización " "cada vez que una acción nueva sea aplicada." -#: ../Doc/bugs.rst:81 +#: ../Doc/bugs.rst:86 msgid "" "`How to Report Bugs Effectively `_" @@ -211,7 +217,7 @@ msgstr "" "`Cómo informar de errores de manera efectiva `_" -#: ../Doc/bugs.rst:80 +#: ../Doc/bugs.rst:85 msgid "" "Article which goes into some detail about how to create a useful bug report. " "This describes what kind of information is useful and why it is useful." @@ -219,7 +225,7 @@ msgstr "" "Artículo que detalla cómo crear un informe de errores útil. Describe qué " "tipo de información es útil y por qué lo es." -#: ../Doc/bugs.rst:84 +#: ../Doc/bugs.rst:89 msgid "" "`Bug Writing Guidelines `_" @@ -227,7 +233,7 @@ msgstr "" "`Bug Writing Guidelines `_" -#: ../Doc/bugs.rst:84 +#: ../Doc/bugs.rst:89 msgid "" "Information about writing a good bug report. Some of this is specific to " "the Mozilla project, but describes general good practices." @@ -236,11 +242,11 @@ msgstr "" "información es específica al proyecto Mozilla, pero en general describe " "buenas prácticas." -#: ../Doc/bugs.rst:90 +#: ../Doc/bugs.rst:95 msgid "Getting started contributing to Python yourself" msgstr "Para empezar a contribuir en Python" -#: ../Doc/bugs.rst:92 +#: ../Doc/bugs.rst:97 msgid "" "Beyond just reporting bugs that you find, you are also welcome to submit " "patches to fix them. You can find more information on how to get started " @@ -254,3 +260,39 @@ msgstr "" "Guide`_. Si tienes preguntas, el `core-mentorship mailing list`_ es un " "agradable lugar para obtener respuestas a cualquiera y a todas las preguntas " "pertenecientes al proceso de corrección de problemas en Python." + +#~ msgid "" +#~ "Bug reports for Python itself should be submitted via the Python Bug " +#~ "Tracker (https://bugs.python.org/). The bug tracker offers a web form " +#~ "which allows pertinent information to be entered and submitted to the " +#~ "developers." +#~ msgstr "" +#~ "Los informes de errores para Python en sí deben enviarse a través de " +#~ "Python Bug Tracker (https://bugs.python.org/). El rastreador de errores " +#~ "ofrece un formulario web que permite ingresar y enviar la información " +#~ "pertinente a los desarrolladores." + +#~ msgid "" +#~ "If the problem you're reporting is not already in the bug tracker, go " +#~ "back to the Python Bug Tracker and log in. If you don't already have a " +#~ "tracker account, select the \"Register\" link or, if you use OpenID, one " +#~ "of the OpenID provider logos in the sidebar. It is not possible to " +#~ "submit a bug report anonymously." +#~ msgstr "" +#~ "Si el problema que estás describiendo no está todavía en el rastreador de " +#~ "errores, vuelve al Python Bug Tracker e inicia sesión. Si no tienes una " +#~ "cuenta en el rastreador, selecciona el enlace \"Register\" o, si usas " +#~ "OpenID, selecciona uno de los logos de los proveedores OpenID en la barra " +#~ "lateral. No es posible el envío de informes de errores de manera anónima." + +#~ msgid "" +#~ "The submission form has a number of fields. For the \"Title\" field, " +#~ "enter a *very* short description of the problem; less than ten words is " +#~ "good. In the \"Type\" field, select the type of your problem; also " +#~ "select the \"Component\" and \"Versions\" to which the bug relates." +#~ msgstr "" +#~ "El formulario de envío tiene un número de campos. Para el campo " +#~ "\"Title\", introduce una descripción *muy* corta del problema; menos de " +#~ "diez palabras está bien. En el campo \"Type\", selecciona el tipo de " +#~ "problema; selecciona también el \"Component\" y \"Versions\" con los que " +#~ "el error está relacionado." diff --git a/c-api/allocation.po b/c-api/allocation.po index 1e5ad7b9d9..e02d0897de 100644 --- a/c-api/allocation.po +++ b/c-api/allocation.po @@ -1,31 +1,34 @@ # Copyright (C) 2001-2020, Python Software Foundation # This file is distributed under the same license as the Python package. # Maintained by the python-doc-es workteam. -# docs-es@python.org / https://mail.python.org/mailman3/lists/docs-es.python.org/ -# Check https://github.com/python/python-docs-es/blob/3.8/TRANSLATORS to get the list of volunteers +# docs-es@python.org / +# https://mail.python.org/mailman3/lists/docs-es.python.org/ +# Check https://github.com/python/python-docs-es/blob/3.8/TRANSLATORS to get +# the list of volunteers # msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-05-06 11:59-0400\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2020-05-08 01:33+0200\n" +"Last-Translator: \n" +"Language: es\n" "Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" +"Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Last-Translator: \n" -"Language: es\n" -"X-Generator: Poedit 2.3\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/c-api/allocation.rst:6 msgid "Allocating Objects on the Heap" msgstr "Asignación de objetos en el montículo" #: ../Doc/c-api/allocation.rst:17 +#, fuzzy msgid "" -"Initialize a newly-allocated object *op* with its type and initial " +"Initialize a newly allocated object *op* with its type and initial " "reference. Returns the initialized object. If *type* indicates that the " "object participates in the cyclic garbage detector, it is added to the " "detector's set of observed objects. Other fields of the object are not " diff --git a/c-api/apiabiversion.po b/c-api/apiabiversion.po index 35a0ecf3b2..b8be949735 100644 --- a/c-api/apiabiversion.po +++ b/c-api/apiabiversion.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-10-30 21:22-0300\n" "Last-Translator: \n" "Language: es\n" @@ -19,8 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/c-api/apiabiversion.rst:7 msgid "API and ABI Versioning" @@ -180,6 +179,17 @@ msgstr "" "Así, ``3.4.1a2`` es la hexadecimal ``0x030401a2`` y ``3.10.0`` es la " "hexadecimal ``0x030a00f0``." -#: ../Doc/c-api/apiabiversion.rst:62 +#: ../Doc/c-api/apiabiversion.rst:61 +msgid "This version is also available via the symbol :data:`Py_Version`." +msgstr "" + +#: ../Doc/c-api/apiabiversion.rst:65 +msgid "" +"The Python runtime version number encoded in a single constant integer, with " +"the same format as the :c:macro:`PY_VERSION_HEX` macro. This contains the " +"Python version used at run time." +msgstr "" + +#: ../Doc/c-api/apiabiversion.rst:71 msgid "All the given macros are defined in :source:`Include/patchlevel.h`." msgstr "Todas las macros dadas se definen en :source:`Include/patchlevel.h`." diff --git a/c-api/arg.po b/c-api/arg.po index d897e1fff8..ac0f669d1e 100644 --- a/c-api/arg.po +++ b/c-api/arg.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-10-30 19:57-0300\n" "Last-Translator: Cristián Maureira-Fredes \n" "Language: es\n" @@ -19,8 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/c-api/arg.rst:6 msgid "Parsing arguments and building values" @@ -330,10 +329,11 @@ msgid "``S`` (:class:`bytes`) [PyBytesObject \\*]" msgstr "``S`` (:class:`bytes`) [PyBytesObject \\*]" #: ../Doc/c-api/arg.rst:130 +#, fuzzy msgid "" "Requires that the Python object is a :class:`bytes` object, without " "attempting any conversion. Raises :exc:`TypeError` if the object is not a " -"bytes object. The C variable may also be declared as :c:type:`PyObject*`." +"bytes object. The C variable may also be declared as :c:expr:`PyObject*`." msgstr "" "Requiere que el objeto Python es un objeto :class:`bytes`, sin intentar " "ninguna conversión. Lanza :exc:`TypeError` si el objeto no es un objeto " @@ -344,10 +344,11 @@ msgid "``Y`` (:class:`bytearray`) [PyByteArrayObject \\*]" msgstr "``Y`` (:class:`bytearray`) [PyByteArrayObject \\*]" #: ../Doc/c-api/arg.rst:135 +#, fuzzy msgid "" "Requires that the Python object is a :class:`bytearray` object, without " "attempting any conversion. Raises :exc:`TypeError` if the object is not a :" -"class:`bytearray` object. The C variable may also be declared as :c:type:" +"class:`bytearray` object. The C variable may also be declared as :c:expr:" "`PyObject*`." msgstr "" "Requiere que el objeto Python es un objeto :class:`bytearray`, sin intentar " @@ -432,10 +433,11 @@ msgid "``U`` (:class:`str`) [PyObject \\*]" msgstr "``U`` (:class:`str`) [PyObject \\*]" #: ../Doc/c-api/arg.rst:182 +#, fuzzy msgid "" "Requires that the Python object is a Unicode object, without attempting any " "conversion. Raises :exc:`TypeError` if the object is not a Unicode object. " -"The C variable may also be declared as :c:type:`PyObject*`." +"The C variable may also be declared as :c:expr:`PyObject*`." msgstr "" "Requiere que el objeto Python es un objeto Unicode, sin intentar ninguna " "conversión. Lanza :exc:`TypeError` si el objeto no es un objeto Unicode. La " @@ -470,12 +472,13 @@ msgstr "" "caracteres. Solo funciona para datos codificados sin bytes NUL integrados." #: ../Doc/c-api/arg.rst:196 +#, fuzzy msgid "" "This format requires two arguments. The first is only used as input, and " -"must be a :c:type:`const char*` which points to the name of an encoding as a " +"must be a :c:expr:`const char*` which points to the name of an encoding as a " "NUL-terminated string, or ``NULL``, in which case ``'utf-8'`` encoding is " "used. An exception is raised if the named encoding is not known to Python. " -"The second argument must be a :c:type:`char**`; the value of the pointer it " +"The second argument must be a :c:expr:`char**`; the value of the pointer it " "references will be set to a buffer with the contents of the argument text. " "The text will be encoded in the encoding specified by the first argument." msgstr "" @@ -538,12 +541,13 @@ msgstr "" "entrada que contienen caracteres NUL." #: ../Doc/c-api/arg.rst:219 +#, fuzzy msgid "" "It requires three arguments. The first is only used as input, and must be " -"a :c:type:`const char*` which points to the name of an encoding as a NUL-" +"a :c:expr:`const char*` which points to the name of an encoding as a NUL-" "terminated string, or ``NULL``, in which case ``'utf-8'`` encoding is used. " "An exception is raised if the named encoding is not known to Python. The " -"second argument must be a :c:type:`char**`; the value of the pointer it " +"second argument must be a :c:expr:`char**`; the value of the pointer it " "references will be set to a buffer with the contents of the argument text. " "The text will be encoded in the encoding specified by the first argument. " "The third argument must be a pointer to an integer; the referenced integer " @@ -567,14 +571,14 @@ msgstr "Hay dos modos de operación:" #: ../Doc/c-api/arg.rst:231 msgid "" "If *\\*buffer* points a ``NULL`` pointer, the function will allocate a " -"buffer of the needed size, copy the encoded data into this buffer and set *" -"\\*buffer* to reference the newly allocated storage. The caller is " +"buffer of the needed size, copy the encoded data into this buffer and set " +"*\\*buffer* to reference the newly allocated storage. The caller is " "responsible for calling :c:func:`PyMem_Free` to free the allocated buffer " "after usage." msgstr "" "Si *\\*buffer* señala un puntero ``NULL``, la función asignará un búfer del " -"tamaño necesario, copiará los datos codificados en este búfer y configurará *" -"\\*buffer* para hacer referencia al almacenamiento recién asignado. Quien " +"tamaño necesario, copiará los datos codificados en este búfer y configurará " +"*\\*buffer* para hacer referencia al almacenamiento recién asignado. Quien " "llama es responsable de llamar a :c:func:`PyMem_Free` para liberar el búfer " "asignado después del uso." @@ -628,9 +632,10 @@ msgid "``b`` (:class:`int`) [unsigned char]" msgstr "``b`` (:class:`int`) [unsigned char]" #: ../Doc/c-api/arg.rst:254 +#, fuzzy msgid "" "Convert a nonnegative Python integer to an unsigned tiny int, stored in a C :" -"c:type:`unsigned char`." +"c:expr:`unsigned char`." msgstr "" "Convierte un entero de Python no negativo en un pequeño int sin signo, " "almacenado en un :c:type:`unsigned char` de C." @@ -640,9 +645,10 @@ msgid "``B`` (:class:`int`) [unsigned char]" msgstr "``B`` (:class:`int`) [unsigned char]" #: ../Doc/c-api/arg.rst:258 +#, fuzzy msgid "" "Convert a Python integer to a tiny int without overflow checking, stored in " -"a C :c:type:`unsigned char`." +"a C :c:expr:`unsigned char`." msgstr "" "Convierte un entero de Python en un pequeño int sin comprobación de " "desbordamiento, almacenado en un :c:type:`unsigned char` de C." @@ -652,7 +658,8 @@ msgid "``h`` (:class:`int`) [short int]" msgstr "``h`` (:class:`int`) [short int]" #: ../Doc/c-api/arg.rst:262 -msgid "Convert a Python integer to a C :c:type:`short int`." +#, fuzzy +msgid "Convert a Python integer to a C :c:expr:`short int`." msgstr "Convierte un entero de Python a un :c:type:`short int` de C." #: ../Doc/c-api/arg.rst:266 ../Doc/c-api/arg.rst:602 @@ -660,8 +667,9 @@ msgid "``H`` (:class:`int`) [unsigned short int]" msgstr "``H`` (:class:`int`) [unsigned short int]" #: ../Doc/c-api/arg.rst:265 +#, fuzzy msgid "" -"Convert a Python integer to a C :c:type:`unsigned short int`, without " +"Convert a Python integer to a C :c:expr:`unsigned short int`, without " "overflow checking." msgstr "" "Convierte un entero de Python a un :c:type:`unsigned short int` de C, sin " @@ -672,7 +680,8 @@ msgid "``i`` (:class:`int`) [int]" msgstr "``i`` (:class:`int`) [int]" #: ../Doc/c-api/arg.rst:269 -msgid "Convert a Python integer to a plain C :c:type:`int`." +#, fuzzy +msgid "Convert a Python integer to a plain C :c:expr:`int`." msgstr "Convierte un entero Python a un :c:type:`int` de C plano." #: ../Doc/c-api/arg.rst:273 ../Doc/c-api/arg.rst:605 @@ -680,8 +689,9 @@ msgid "``I`` (:class:`int`) [unsigned int]" msgstr "``I`` (:class:`int`) [unsigned int]" #: ../Doc/c-api/arg.rst:272 +#, fuzzy msgid "" -"Convert a Python integer to a C :c:type:`unsigned int`, without overflow " +"Convert a Python integer to a C :c:expr:`unsigned int`, without overflow " "checking." msgstr "" "Convierte un entero de Python a un :c:type:`unsigned int` de C, sin " @@ -692,7 +702,8 @@ msgid "``l`` (:class:`int`) [long int]" msgstr "``l`` (:class:`int`) [long int]" #: ../Doc/c-api/arg.rst:276 -msgid "Convert a Python integer to a C :c:type:`long int`." +#, fuzzy +msgid "Convert a Python integer to a C :c:expr:`long int`." msgstr "Convierte un entero Python a un :c:type:`long int` de C." #: ../Doc/c-api/arg.rst:280 ../Doc/c-api/arg.rst:608 @@ -700,8 +711,9 @@ msgid "``k`` (:class:`int`) [unsigned long]" msgstr "``k`` (:class:`int`) [unsigned long]" #: ../Doc/c-api/arg.rst:279 +#, fuzzy msgid "" -"Convert a Python integer to a C :c:type:`unsigned long` without overflow " +"Convert a Python integer to a C :c:expr:`unsigned long` without overflow " "checking." msgstr "" "Convierte un entero de Python a un :c:type:`unsigned long` de C, sin " @@ -712,7 +724,8 @@ msgid "``L`` (:class:`int`) [long long]" msgstr "``L`` (:class:`int`) [long long]" #: ../Doc/c-api/arg.rst:283 -msgid "Convert a Python integer to a C :c:type:`long long`." +#, fuzzy +msgid "Convert a Python integer to a C :c:expr:`long long`." msgstr "Convierte un entero de Python a un :c:type:`long long` de C." #: ../Doc/c-api/arg.rst:287 ../Doc/c-api/arg.rst:614 @@ -720,15 +733,17 @@ msgid "``K`` (:class:`int`) [unsigned long long]" msgstr "``K`` (:class:`int`) [unsigned long long]" #: ../Doc/c-api/arg.rst:286 +#, fuzzy msgid "" -"Convert a Python integer to a C :c:type:`unsigned long long` without " +"Convert a Python integer to a C :c:expr:`unsigned long long` without " "overflow checking." msgstr "" "Convierte un entero de Python a un :c:type:`unsigned long long` de C, sin " "verificación de desbordamiento." #: ../Doc/c-api/arg.rst:290 ../Doc/c-api/arg.rst:617 -msgid "``n`` (:class:`int`) [Py_ssize_t]" +#, fuzzy +msgid "``n`` (:class:`int`) [:c:type:`Py_ssize_t`]" msgstr "``n`` (:class:`int`) [Py_ssize_t]" #: ../Doc/c-api/arg.rst:290 @@ -740,9 +755,10 @@ msgid "``c`` (:class:`bytes` or :class:`bytearray` of length 1) [char]" msgstr "``c`` (:class:`bytes` o :class:`bytearray` de largo 1) [char]" #: ../Doc/c-api/arg.rst:293 +#, fuzzy msgid "" "Convert a Python byte, represented as a :class:`bytes` or :class:`bytearray` " -"object of length 1, to a C :c:type:`char`." +"object of length 1, to a C :c:expr:`char`." msgstr "" "Convierte un byte de Python, representado como un objeto :class:`bytes` o :" "class:`bytearray` de longitud 1, a un :c:type:`char` de C." @@ -756,9 +772,10 @@ msgid "``C`` (:class:`str` of length 1) [int]" msgstr "``C`` (:class:`str` de largo 1) [int]" #: ../Doc/c-api/arg.rst:300 +#, fuzzy msgid "" "Convert a Python character, represented as a :class:`str` object of length " -"1, to a C :c:type:`int`." +"1, to a C :c:expr:`int`." msgstr "" "Convierte un carácter Python, representado como un objeto :class:`str` de " "longitud 1, a un tipo :c:type:`int` de C." @@ -768,7 +785,8 @@ msgid "``f`` (:class:`float`) [float]" msgstr "``f`` (:class:`float`) [float]" #: ../Doc/c-api/arg.rst:304 -msgid "Convert a Python floating point number to a C :c:type:`float`." +#, fuzzy +msgid "Convert a Python floating point number to a C :c:expr:`float`." msgstr "" "Convierte un número de punto flotante de Python a un :c:type:`float` de C." @@ -777,7 +795,8 @@ msgid "``d`` (:class:`float`) [double]" msgstr "``d`` (:class:`float`) [double]" #: ../Doc/c-api/arg.rst:307 -msgid "Convert a Python floating point number to a C :c:type:`double`." +#, fuzzy +msgid "Convert a Python floating point number to a C :c:expr:`double`." msgstr "" "Convierte un número de punto flotante de Python a un :c:type:`double` de C." @@ -814,10 +833,11 @@ msgid "``O!`` (object) [*typeobject*, PyObject \\*]" msgstr "``O!`` (object) [*typeobject*, PyObject \\*]" #: ../Doc/c-api/arg.rst:321 +#, fuzzy msgid "" "Store a Python object in a C object pointer. This is similar to ``O``, but " "takes two C arguments: the first is the address of a Python type object, the " -"second is the address of the C variable (of type :c:type:`PyObject*`) into " +"second is the address of the C variable (of type :c:expr:`PyObject*`) into " "which the object pointer is stored. If the Python object does not have the " "required type, :exc:`TypeError` is raised." msgstr "" @@ -832,10 +852,11 @@ msgid "``O&`` (object) [*converter*, *anything*]" msgstr "``O&`` (object) [*converter*, *anything*]" #: ../Doc/c-api/arg.rst:330 +#, fuzzy msgid "" "Convert a Python object to a C variable through a *converter* function. " "This takes two arguments: the first is a function, the second is the address " -"of a C variable (of arbitrary type), converted to :c:type:`void *`. The " +"of a C variable (of arbitrary type), converted to :c:expr:`void *`. The " "*converter* function in turn is called as follows::" msgstr "" "Convierte un objeto Python en una variable C a través de una función " @@ -845,13 +866,14 @@ msgstr "" "manera::" #: ../Doc/c-api/arg.rst:337 +#, fuzzy msgid "" "where *object* is the Python object to be converted and *address* is the :c:" -"type:`void*` argument that was passed to the :c:func:`PyArg_Parse\\*` " -"function. The returned *status* should be ``1`` for a successful conversion " -"and ``0`` if the conversion has failed. When the conversion fails, the " -"*converter* function should raise an exception and leave the content of " -"*address* unmodified." +"expr:`void*` argument that was passed to the ``PyArg_Parse*`` function. The " +"returned *status* should be ``1`` for a successful conversion and ``0`` if " +"the conversion has failed. When the conversion fails, the *converter* " +"function should raise an exception and leave the content of *address* " +"unmodified." msgstr "" "donde *object* es el objeto de Python a convertir y *address* es el " "argumento :c:type:`void*` que se pasó a la función :c:func:`PyArg_Parse\\*`. " @@ -1022,22 +1044,22 @@ msgstr "" "especificado para la unidad de formato correspondiente en ese caso." #: ../Doc/c-api/arg.rst:410 +#, fuzzy msgid "" "For the conversion to succeed, the *arg* object must match the format and " -"the format must be exhausted. On success, the :c:func:`PyArg_Parse\\*` " -"functions return true, otherwise they return false and raise an appropriate " -"exception. When the :c:func:`PyArg_Parse\\*` functions fail due to " -"conversion failure in one of the format units, the variables at the " -"addresses corresponding to that and the following format units are left " -"untouched." +"the format must be exhausted. On success, the ``PyArg_Parse*`` functions " +"return true, otherwise they return false and raise an appropriate exception. " +"When the ``PyArg_Parse*`` functions fail due to conversion failure in one of " +"the format units, the variables at the addresses corresponding to that and " +"the following format units are left untouched." msgstr "" "Para que la conversión tenga éxito, el objeto *arg* debe coincidir con el " "formato y el formato debe estar agotado. En caso de éxito, las funciones :c:" "func:`PyArg_Parse\\*` retornan verdadero; de lo contrario, retornan falso y " -"generan una excepción apropiada. Cuando las funciones :c:func:`PyArg_Parse" -"\\*` fallan debido a un error de conversión en una de las unidades de " -"formato, las variables en las direcciones correspondientes y las siguientes " -"unidades de formato quedan intactas." +"generan una excepción apropiada. Cuando las funciones :c:func:" +"`PyArg_Parse\\*` fallan debido a un error de conversión en una de las " +"unidades de formato, las variables en las direcciones correspondientes y las " +"siguientes unidades de formato quedan intactas." #: ../Doc/c-api/arg.rst:419 msgid "API Functions" @@ -1122,6 +1144,7 @@ msgstr "" "descomponer otras tuplas, y puede continuar usándose para ese propósito." #: ../Doc/c-api/arg.rst:477 +#, fuzzy msgid "" "A simpler form of parameter retrieval which does not use a format string to " "specify the types of the arguments. Functions which use this method to " @@ -1130,7 +1153,7 @@ msgid "" "should be passed as *args*; it must actually be a tuple. The length of the " "tuple must be at least *min* and no more than *max*; *min* and *max* may be " "equal. Additional arguments must be passed to the function, each of which " -"should be a pointer to a :c:type:`PyObject*` variable; these will be filled " +"should be a pointer to a :c:expr:`PyObject*` variable; these will be filled " "in with the values from *args*; they will contain :term:`borrowed references " "`. The variables which correspond to optional parameters " "not given by *args* will not be filled in; these should be initialized by " @@ -1175,11 +1198,12 @@ msgid "Building values" msgstr "Construyendo valores" #: ../Doc/c-api/arg.rst:520 +#, fuzzy msgid "" -"Create a new value based on a format string similar to those accepted by " -"the :c:func:`PyArg_Parse\\*` family of functions and a sequence of values. " -"Returns the value or ``NULL`` in the case of an error; an exception will be " -"raised if ``NULL`` is returned." +"Create a new value based on a format string similar to those accepted by the " +"``PyArg_Parse*`` family of functions and a sequence of values. Returns the " +"value or ``NULL`` in the case of an error; an exception will be raised if " +"``NULL`` is returned." msgstr "" "Crea un nuevo valor basado en una cadena de formato similar a los aceptados " "por la familia de funciones :c:func:`PyArg_Parse\\*` y una secuencia de " @@ -1318,8 +1342,9 @@ msgid "``u`` (:class:`str`) [const wchar_t \\*]" msgstr "``u`` (:class:`str`) [const wchar_t \\*]" #: ../Doc/c-api/arg.rst:571 +#, fuzzy msgid "" -"Convert a null-terminated :c:type:`wchar_t` buffer of Unicode (UTF-16 or " +"Convert a null-terminated :c:expr:`wchar_t` buffer of Unicode (UTF-16 or " "UCS-4) data to a Python Unicode object. If the Unicode buffer pointer is " "``NULL``, ``None`` is returned." msgstr "" @@ -1352,7 +1377,8 @@ msgstr "" "``z#`` (:class:`str` o ``None``) [const char \\*, :c:type:`Py_ssize_t`]" #: ../Doc/c-api/arg.rst:587 -msgid "Convert a plain C :c:type:`int` to a Python integer object." +#, fuzzy +msgid "Convert a plain C :c:expr:`int` to a Python integer object." msgstr "Convierte un :c:type:`int` plano de C a un objeto entero de Python." #: ../Doc/c-api/arg.rst:590 @@ -1360,40 +1386,49 @@ msgid "``b`` (:class:`int`) [char]" msgstr "``b`` (:class:`int`) [char]" #: ../Doc/c-api/arg.rst:590 -msgid "Convert a plain C :c:type:`char` to a Python integer object." +#, fuzzy +msgid "Convert a plain C :c:expr:`char` to a Python integer object." msgstr "Convierte un :c:type:`char` plano de C a un objeto entero de Python." #: ../Doc/c-api/arg.rst:593 -msgid "Convert a plain C :c:type:`short int` to a Python integer object." +#, fuzzy +msgid "Convert a plain C :c:expr:`short int` to a Python integer object." msgstr "" "Convierte un :c:type:`short int` plano de C a un objeto entero de Python." #: ../Doc/c-api/arg.rst:596 -msgid "Convert a C :c:type:`long int` to a Python integer object." +#, fuzzy +msgid "Convert a C :c:expr:`long int` to a Python integer object." msgstr "Convierta un :c:type:`long int` de C en un objeto entero de Python." #: ../Doc/c-api/arg.rst:599 -msgid "Convert a C :c:type:`unsigned char` to a Python integer object." +#, fuzzy +msgid "Convert a C :c:expr:`unsigned char` to a Python integer object." msgstr "Convierte un :c:type:`unsigned char` de C a un entero de Python." #: ../Doc/c-api/arg.rst:602 -msgid "Convert a C :c:type:`unsigned short int` to a Python integer object." +#, fuzzy +msgid "Convert a C :c:expr:`unsigned short int` to a Python integer object." msgstr "Convierte un :c:type:`unsigned short int` de C a un entero de Python." #: ../Doc/c-api/arg.rst:605 -msgid "Convert a C :c:type:`unsigned int` to a Python integer object." +#, fuzzy +msgid "Convert a C :c:expr:`unsigned int` to a Python integer object." msgstr "Convierte un :c:type:`unsigned int` de C a un entero de Python." #: ../Doc/c-api/arg.rst:608 -msgid "Convert a C :c:type:`unsigned long` to a Python integer object." +#, fuzzy +msgid "Convert a C :c:expr:`unsigned long` to a Python integer object." msgstr "Convierte un :c:type:`unsigned long` de C a un entero de Python." #: ../Doc/c-api/arg.rst:611 -msgid "Convert a C :c:type:`long long` to a Python integer object." +#, fuzzy +msgid "Convert a C :c:expr:`long long` to a Python integer object." msgstr "Convierte un :c:type:`long long` de C en un objeto entero de Python." #: ../Doc/c-api/arg.rst:614 -msgid "Convert a C :c:type:`unsigned long long` to a Python integer object." +#, fuzzy +msgid "Convert a C :c:expr:`unsigned long long` to a Python integer object." msgstr "Convierte un :c:type:`unsigned long long` de C a un entero de Python." #: ../Doc/c-api/arg.rst:617 @@ -1405,28 +1440,32 @@ msgid "``c`` (:class:`bytes` of length 1) [char]" msgstr "``c`` (:class:`bytes` de largo 1) [char]" #: ../Doc/c-api/arg.rst:620 +#, fuzzy msgid "" -"Convert a C :c:type:`int` representing a byte to a Python :class:`bytes` " +"Convert a C :c:expr:`int` representing a byte to a Python :class:`bytes` " "object of length 1." msgstr "" "Convierte un :c:type:`int` de C representando un byte a un objeto :class:" "`bytes` de Python de largo 1." #: ../Doc/c-api/arg.rst:624 +#, fuzzy msgid "" -"Convert a C :c:type:`int` representing a character to Python :class:`str` " +"Convert a C :c:expr:`int` representing a character to Python :class:`str` " "object of length 1." msgstr "" "Convierte un :c:type:`int` de C representando un carácter a un objeto :class:" "`str` de Python de largo 1." #: ../Doc/c-api/arg.rst:628 -msgid "Convert a C :c:type:`double` to a Python floating point number." +#, fuzzy +msgid "Convert a C :c:expr:`double` to a Python floating point number." msgstr "" "Convierte un :c:type:`double` de C a un número de punto flotante de Python." #: ../Doc/c-api/arg.rst:631 -msgid "Convert a C :c:type:`float` to a Python floating point number." +#, fuzzy +msgid "Convert a C :c:expr:`float` to a Python floating point number." msgstr "" "Convierte un :c:type:`float` de C a un número de punto flotante de Python." @@ -1479,9 +1518,10 @@ msgstr "" "de objetos en la lista de argumentos." #: ../Doc/c-api/arg.rst:653 +#, fuzzy msgid "" "Convert *anything* to a Python object through a *converter* function. The " -"function is called with *anything* (which should be compatible with :c:type:" +"function is called with *anything* (which should be compatible with :c:expr:" "`void*`) as its argument and should return a \"new\" Python object, or " "``NULL`` if an error occurred." msgstr "" diff --git a/c-api/buffer.po b/c-api/buffer.po index 88f7904d19..6b98cb7fc0 100644 --- a/c-api/buffer.po +++ b/c-api/buffer.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-03-19 11:16+0100\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-08-02 01:18+0200\n" "Last-Translator: Cristián Maureira-Fredes \n" "Language: es\n" @@ -19,8 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.8.0\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/c-api/buffer.rst:11 msgid "Buffer Protocol" @@ -881,6 +880,16 @@ msgstr "Esta función falla si *len* != *src->len*." #: ../Doc/c-api/buffer.rst:504 msgid "" +"Copy data from *src* to *dest* buffer. Can convert between C-style and or " +"Fortran-style buffers." +msgstr "" + +#: ../Doc/c-api/buffer.rst:507 +msgid "``0`` is returned on success, ``-1`` on error." +msgstr "" + +#: ../Doc/c-api/buffer.rst:511 +msgid "" "Fill the *strides* array with byte-strides of a :term:`contiguous` (C-style " "if *order* is ``'C'`` or Fortran-style if *order* is ``'F'``) array of the " "given shape with the given number of bytes per element." @@ -889,7 +898,7 @@ msgstr "" "(estilo C si *order* es ``'C'`` o estilo Fortran si *order* es ``'F '`` ) " "arreglo de la forma dada con el número dado de bytes por elemento." -#: ../Doc/c-api/buffer.rst:511 +#: ../Doc/c-api/buffer.rst:518 msgid "" "Handle buffer requests for an exporter that wants to expose *buf* of size " "*len* with writability set according to *readonly*. *buf* is interpreted as " @@ -899,7 +908,7 @@ msgstr "" "de tamaño *len* con capacidad de escritura establecida de acuerdo con " "*readonly*. *buf* se interpreta como una secuencia de bytes sin signo." -#: ../Doc/c-api/buffer.rst:515 +#: ../Doc/c-api/buffer.rst:522 msgid "" "The *flags* argument indicates the request type. This function always fills " "in *view* as specified by flags, unless *buf* has been designated as read-" @@ -910,7 +919,7 @@ msgstr "" "designado como solo lectura y :c:macro:`PyBUF_WRITABLE` esté configurado en " "*flags*." -#: ../Doc/c-api/buffer.rst:519 +#: ../Doc/c-api/buffer.rst:526 msgid "" "On success, set ``view->obj`` to a new reference to *exporter* and return 0. " "Otherwise, raise :c:data:`PyExc_BufferError`, set ``view->obj`` to ``NULL`` " @@ -920,7 +929,7 @@ msgstr "" "y retorna 0. De lo contrario, aumenta :c:data:`PyExc_BufferError`, establece " "``view->obj`` en ``NULL`` y retorna ``-1``;" -#: ../Doc/c-api/buffer.rst:523 +#: ../Doc/c-api/buffer.rst:530 msgid "" "If this function is used as part of a :ref:`getbufferproc `, " "*exporter* MUST be set to the exporting object and *flags* must be passed " diff --git a/c-api/bytearray.po b/c-api/bytearray.po index ba18285871..553085156d 100644 --- a/c-api/bytearray.po +++ b/c-api/bytearray.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-03-19 11:16+0100\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-08-01 20:18+0200\n" "Last-Translator: Cristián Maureira-Fredes \n" "Language: es\n" @@ -19,8 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.8.0\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/c-api/bytearray.rst:6 msgid "Byte Array Objects" @@ -75,7 +74,7 @@ msgstr "" "Retorna un nuevo objeto de arreglo de bytes de cualquier objeto, *o*, que " "implementa el :ref:`buffer protocol `." -#: ../Doc/c-api/bytearray.rst:50 +#: ../Doc/c-api/bytearray.rst:48 msgid "" "Create a new bytearray object from *string* and its length, *len*. On " "failure, ``NULL`` is returned." @@ -83,19 +82,19 @@ msgstr "" "Crea un nuevo objeto de arreglo de bytes a partir de *string* y su longitud, " "*len*. En caso de fallo, se retorna ``NULL``." -#: ../Doc/c-api/bytearray.rst:56 +#: ../Doc/c-api/bytearray.rst:54 msgid "" "Concat bytearrays *a* and *b* and return a new bytearray with the result." msgstr "" "Une los arreglos de bytes (*bytearrays*) *a* y *b* y retorna un nuevo " "arreglo de bytes (*bytearray*) con el resultado." -#: ../Doc/c-api/bytearray.rst:61 +#: ../Doc/c-api/bytearray.rst:59 msgid "Return the size of *bytearray* after checking for a ``NULL`` pointer." msgstr "" "Retorna el tamaño de *bytearray* después de buscar un puntero ``NULL``." -#: ../Doc/c-api/bytearray.rst:66 +#: ../Doc/c-api/bytearray.rst:64 msgid "" "Return the contents of *bytearray* as a char array after checking for a " "``NULL`` pointer. The returned array always has an extra null byte appended." @@ -104,23 +103,29 @@ msgstr "" "verificar un puntero ``NULL``. La arreglo retornado siempre tiene un byte " "nulo adicional agregado." -#: ../Doc/c-api/bytearray.rst:73 +#: ../Doc/c-api/bytearray.rst:71 msgid "Resize the internal buffer of *bytearray* to *len*." msgstr "Cambia el tamaño del búfer interno de *bytearray* a *len*." -#: ../Doc/c-api/bytearray.rst:76 +#: ../Doc/c-api/bytearray.rst:74 msgid "Macros" msgstr "Macros" -#: ../Doc/c-api/bytearray.rst:78 +#: ../Doc/c-api/bytearray.rst:76 msgid "These macros trade safety for speed and they don't check pointers." msgstr "" "Estos macros intercambian seguridad por velocidad y no comprueban punteros." -#: ../Doc/c-api/bytearray.rst:82 -msgid "Macro version of :c:func:`PyByteArray_AsString`." -msgstr "Versión macro de :c:func:`PyByteArray_AsString`." +#: ../Doc/c-api/bytearray.rst:80 +msgid "Similar to :c:func:`PyByteArray_AsString`, but without error checking." +msgstr "" + +#: ../Doc/c-api/bytearray.rst:85 +msgid "Similar to :c:func:`PyByteArray_Size`, but without error checking." +msgstr "" + +#~ msgid "Macro version of :c:func:`PyByteArray_AsString`." +#~ msgstr "Versión macro de :c:func:`PyByteArray_AsString`." -#: ../Doc/c-api/bytearray.rst:87 -msgid "Macro version of :c:func:`PyByteArray_Size`." -msgstr "Versión macro de :c:func:`PyByteArray_Size`." +#~ msgid "Macro version of :c:func:`PyByteArray_Size`." +#~ msgstr "Versión macro de :c:func:`PyByteArray_Size`." diff --git a/c-api/bytes.po b/c-api/bytes.po index eeeb32a403..9b543af6c3 100644 --- a/c-api/bytes.po +++ b/c-api/bytes.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-03-19 11:16+0100\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-08-01 20:18+0200\n" "Last-Translator: Cristián Maureira-Fredes \n" "Language: es\n" @@ -19,17 +19,17 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.8.0\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/c-api/bytes.rst:6 msgid "Bytes Objects" msgstr "Objetos Bytes" #: ../Doc/c-api/bytes.rst:8 +#, fuzzy msgid "" "These functions raise :exc:`TypeError` when expecting a bytes parameter and " -"are called with a non-bytes parameter." +"called with a non-bytes parameter." msgstr "" "Estas funciones lanzan :exc:`TypeError` cuando se espera un parámetro de " "bytes y se llama con un parámetro que no es bytes." @@ -196,8 +196,8 @@ msgid ":attr:`%zd`" msgstr ":attr:`%zd`" #: ../Doc/c-api/bytes.rst:87 -msgid "Py_ssize_t" -msgstr "Py_ssize_t" +msgid ":c:type:`\\ Py_ssize_t`" +msgstr "" #: ../Doc/c-api/bytes.rst:87 msgid "Equivalent to ``printf(\"%zd\")``. [1]_" @@ -258,9 +258,9 @@ msgstr "const void\\*" #: ../Doc/c-api/bytes.rst:102 msgid "" -"The hex representation of a C pointer. Mostly equivalent to ``printf(\"%p" -"\")`` except that it is guaranteed to start with the literal ``0x`` " -"regardless of what the platform's ``printf`` yields." +"The hex representation of a C pointer. Mostly equivalent to " +"``printf(\"%p\")`` except that it is guaranteed to start with the literal " +"``0x`` regardless of what the platform's ``printf`` yields." msgstr "" "La representación hexadecimal de un puntero en C. Principalmente equivalente " "a ``printf(\"%p\")`` excepto que se garantiza que comience con el literal " @@ -304,7 +304,8 @@ msgid "Return the length of the bytes in bytes object *o*." msgstr "Retorna la longitud de los bytes en el objeto bytes *o*." #: ../Doc/c-api/bytes.rst:137 -msgid "Macro form of :c:func:`PyBytes_Size` but without error checking." +#, fuzzy +msgid "Similar to :c:func:`PyBytes_Size`, but without error checking." msgstr "" "Forma macro de :c:func:`PyBytes_Size` pero sin verificación de errores." @@ -327,7 +328,8 @@ msgstr "" "`PyBytes_AsString` retorna ``NULL`` y lanza un :exc:`TypeError`." #: ../Doc/c-api/bytes.rst:154 -msgid "Macro form of :c:func:`PyBytes_AsString` but without error checking." +#, fuzzy +msgid "Similar to :c:func:`PyBytes_AsString`, but without error checking." msgstr "" "Forma macro de :c:func:`PyBytes_AsString` pero sin verificación de errores." @@ -407,8 +409,8 @@ msgid "" "address of an existing bytes object as an lvalue (it may be written into), " "and the new size desired. On success, *\\*bytes* holds the resized bytes " "object and ``0`` is returned; the address in *\\*bytes* may differ from its " -"input value. If the reallocation fails, the original bytes object at *" -"\\*bytes* is deallocated, *\\*bytes* is set to ``NULL``, :exc:`MemoryError` " +"input value. If the reallocation fails, the original bytes object at " +"*\\*bytes* is deallocated, *\\*bytes* is set to ``NULL``, :exc:`MemoryError` " "is set, and ``-1`` is returned." msgstr "" "Una forma de cambiar el tamaño de un objeto bytes aunque sea \"inmutable\". " @@ -417,7 +419,10 @@ msgstr "" "esta función si el recuento en el objeto bytes de entrada no es uno. Pasa la " "dirección de un objeto de bytes existente como un *lvalue* (puede escribirse " "en él) y el nuevo tamaño deseado. En caso de éxito, *\\*bytes* retiene el " -"objeto de bytes redimensionados y se retorna ``0``; la dirección en *" -"\\*bytes* puede diferir de su valor de entrada. Si la reasignación falla, el " -"objeto de bytes original en *\\*bytes* se desasigna, *\\*bytes* se establece " -"en ``NULL``, :exc:`MemoryError` se establece y se retorna ``-1`` ." +"objeto de bytes redimensionados y se retorna ``0``; la dirección en " +"*\\*bytes* puede diferir de su valor de entrada. Si la reasignación falla, " +"el objeto de bytes original en *\\*bytes* se desasigna, *\\*bytes* se " +"establece en ``NULL``, :exc:`MemoryError` se establece y se retorna ``-1`` ." + +#~ msgid "Py_ssize_t" +#~ msgstr "Py_ssize_t" diff --git a/c-api/call.po b/c-api/call.po index 0a17363d51..661005a0fb 100644 --- a/c-api/call.po +++ b/c-api/call.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python en Español 3.9\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-12-09 10:27+0800\n" "Last-Translator: Rodrigo Tobar \n" "Language: es\n" @@ -17,8 +17,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/c-api/call.rst:6 msgid "Call Protocol" @@ -65,9 +64,10 @@ msgstr "" "manera." #: ../Doc/c-api/call.rst:29 +#, fuzzy msgid "" -"To call an object, use :c:func:`PyObject_Call` or other :ref:`call API `." +"To call an object, use :c:func:`PyObject_Call` or another :ref:`call API " +"`." msgstr "" "Para llamar a un objeto, use :c:func:`PyObject_Call` u otro :ref:`call API " "`." @@ -294,15 +294,7 @@ msgstr "" "Sin embargo, la función ``PyVectorcall_NARGS`` debe usarse para permitir " "futuras extensiones." -#: ../Doc/c-api/call.rst:147 ../Doc/c-api/call.rst:161 -#: ../Doc/c-api/call.rst:175 ../Doc/c-api/call.rst:259 -#: ../Doc/c-api/call.rst:346 ../Doc/c-api/call.rst:360 -#: ../Doc/c-api/call.rst:375 ../Doc/c-api/call.rst:391 -#: ../Doc/c-api/call.rst:413 -msgid "This function is not part of the :ref:`limited API `." -msgstr "Esta función no es parte de la :ref:`API limitada `." - -#: ../Doc/c-api/call.rst:153 +#: ../Doc/c-api/call.rst:151 msgid "" "If *op* does not support the vectorcall protocol (either because the type " "does not or because the specific instance does not), return *NULL*. " @@ -314,7 +306,7 @@ msgstr "" "contrario, retorna el puntero de la función vectorcall almacenado en *op*. " "Esta función nunca lanza una excepción." -#: ../Doc/c-api/call.rst:158 +#: ../Doc/c-api/call.rst:156 msgid "" "This is mostly useful to check whether or not *op* supports vectorcall, " "which can be done by checking ``PyVectorcall_Function(op) != NULL``." @@ -322,7 +314,7 @@ msgstr "" "Esto es principalmente útil para verificar si *op* admite vectorcall, lo " "cual se puede hacer marcando ``PyVectorcall_Function(op) != NULL``." -#: ../Doc/c-api/call.rst:167 +#: ../Doc/c-api/call.rst:163 msgid "" "Call *callable*'s :c:type:`vectorcallfunc` with positional and keyword " "arguments given in a tuple and dict, respectively." @@ -330,7 +322,7 @@ msgstr "" "Llama a la :c:type:`vectorcallfunc` de *callable* con argumentos " "posicionales y de palabras clave dados en una tupla y dict, respectivamente." -#: ../Doc/c-api/call.rst:170 +#: ../Doc/c-api/call.rst:166 msgid "" "This is a specialized function, intended to be put in the :c:member:" "`~PyTypeObject.tp_call` slot or be used in an implementation of ``tp_call``. " @@ -342,11 +334,11 @@ msgstr "" "``tp_call``. No comprueba el flag :const:`Py_TPFLAGS_HAVE_VECTORCALL` y no " "vuelve a ``tp_call``." -#: ../Doc/c-api/call.rst:183 +#: ../Doc/c-api/call.rst:177 msgid "Object Calling API" msgstr "API para invocar objetos" -#: ../Doc/c-api/call.rst:185 +#: ../Doc/c-api/call.rst:179 msgid "" "Various functions are available for calling a Python object. Each converts " "its arguments to a convention supported by the called object – either " @@ -358,7 +350,7 @@ msgstr "" "ya sea *tp_call* o vectorcall. Para realizar la menor conversión posible, " "elija la que mejor se adapte al formato de datos que tiene disponible." -#: ../Doc/c-api/call.rst:191 +#: ../Doc/c-api/call.rst:185 msgid "" "The following table summarizes the available functions; please see " "individual documentation for details." @@ -366,132 +358,132 @@ msgstr "" "La siguiente tabla resume las funciones disponibles; consulte la " "documentación individual para obtener más detalles." -#: ../Doc/c-api/call.rst:195 +#: ../Doc/c-api/call.rst:189 msgid "Function" msgstr "Función" -#: ../Doc/c-api/call.rst:195 +#: ../Doc/c-api/call.rst:189 msgid "callable" msgstr "invocable" -#: ../Doc/c-api/call.rst:195 +#: ../Doc/c-api/call.rst:189 msgid "args" msgstr "args" -#: ../Doc/c-api/call.rst:195 +#: ../Doc/c-api/call.rst:189 msgid "kwargs" msgstr "kwargs" -#: ../Doc/c-api/call.rst:197 +#: ../Doc/c-api/call.rst:191 msgid ":c:func:`PyObject_Call`" msgstr ":c:func:`PyObject_Call`" -#: ../Doc/c-api/call.rst:197 ../Doc/c-api/call.rst:199 -#: ../Doc/c-api/call.rst:201 ../Doc/c-api/call.rst:203 -#: ../Doc/c-api/call.rst:205 ../Doc/c-api/call.rst:209 -#: ../Doc/c-api/call.rst:217 ../Doc/c-api/call.rst:219 +#: ../Doc/c-api/call.rst:191 ../Doc/c-api/call.rst:193 +#: ../Doc/c-api/call.rst:195 ../Doc/c-api/call.rst:197 +#: ../Doc/c-api/call.rst:199 ../Doc/c-api/call.rst:203 +#: ../Doc/c-api/call.rst:211 ../Doc/c-api/call.rst:213 msgid "``PyObject *``" msgstr "``PyObject *``" -#: ../Doc/c-api/call.rst:197 +#: ../Doc/c-api/call.rst:191 msgid "tuple" msgstr "tupla" -#: ../Doc/c-api/call.rst:197 ../Doc/c-api/call.rst:219 +#: ../Doc/c-api/call.rst:191 ../Doc/c-api/call.rst:213 msgid "dict/``NULL``" msgstr "dict/``NULL``" -#: ../Doc/c-api/call.rst:199 +#: ../Doc/c-api/call.rst:193 msgid ":c:func:`PyObject_CallNoArgs`" msgstr ":c:func:`PyObject_CallNoArgs`" -#: ../Doc/c-api/call.rst:199 ../Doc/c-api/call.rst:201 -#: ../Doc/c-api/call.rst:203 ../Doc/c-api/call.rst:205 -#: ../Doc/c-api/call.rst:207 ../Doc/c-api/call.rst:209 -#: ../Doc/c-api/call.rst:211 ../Doc/c-api/call.rst:213 -#: ../Doc/c-api/call.rst:215 +#: ../Doc/c-api/call.rst:193 ../Doc/c-api/call.rst:195 +#: ../Doc/c-api/call.rst:197 ../Doc/c-api/call.rst:199 +#: ../Doc/c-api/call.rst:201 ../Doc/c-api/call.rst:203 +#: ../Doc/c-api/call.rst:205 ../Doc/c-api/call.rst:207 +#: ../Doc/c-api/call.rst:209 msgid "---" msgstr "---" -#: ../Doc/c-api/call.rst:201 +#: ../Doc/c-api/call.rst:195 msgid ":c:func:`PyObject_CallOneArg`" msgstr ":c:func:`PyObject_CallOneArg`" -#: ../Doc/c-api/call.rst:201 ../Doc/c-api/call.rst:215 +#: ../Doc/c-api/call.rst:195 ../Doc/c-api/call.rst:209 msgid "1 object" msgstr "1 objeto" -#: ../Doc/c-api/call.rst:203 +#: ../Doc/c-api/call.rst:197 msgid ":c:func:`PyObject_CallObject`" msgstr ":c:func:`PyObject_CallObject`" -#: ../Doc/c-api/call.rst:203 +#: ../Doc/c-api/call.rst:197 msgid "tuple/``NULL``" msgstr "tuple/``NULL``" -#: ../Doc/c-api/call.rst:205 +#: ../Doc/c-api/call.rst:199 msgid ":c:func:`PyObject_CallFunction`" msgstr ":c:func:`PyObject_CallFunction`" -#: ../Doc/c-api/call.rst:205 ../Doc/c-api/call.rst:207 +#: ../Doc/c-api/call.rst:199 ../Doc/c-api/call.rst:201 msgid "format" msgstr "formato" -#: ../Doc/c-api/call.rst:207 +#: ../Doc/c-api/call.rst:201 msgid ":c:func:`PyObject_CallMethod`" msgstr ":c:func:`PyObject_CallMethod`" -#: ../Doc/c-api/call.rst:207 +#: ../Doc/c-api/call.rst:201 msgid "obj + ``char*``" msgstr "obj + ``char*``" -#: ../Doc/c-api/call.rst:209 +#: ../Doc/c-api/call.rst:203 msgid ":c:func:`PyObject_CallFunctionObjArgs`" msgstr ":c:func:`PyObject_CallFunctionObjArgs`" -#: ../Doc/c-api/call.rst:209 ../Doc/c-api/call.rst:211 +#: ../Doc/c-api/call.rst:203 ../Doc/c-api/call.rst:205 msgid "variadic" msgstr "variadica" -#: ../Doc/c-api/call.rst:211 +#: ../Doc/c-api/call.rst:205 msgid ":c:func:`PyObject_CallMethodObjArgs`" msgstr ":c:func:`PyObject_CallMethodObjArgs`" -#: ../Doc/c-api/call.rst:211 ../Doc/c-api/call.rst:213 -#: ../Doc/c-api/call.rst:215 +#: ../Doc/c-api/call.rst:205 ../Doc/c-api/call.rst:207 +#: ../Doc/c-api/call.rst:209 msgid "obj + name" msgstr "obj + nombre" -#: ../Doc/c-api/call.rst:213 +#: ../Doc/c-api/call.rst:207 msgid ":c:func:`PyObject_CallMethodNoArgs`" msgstr ":c:func:`PyObject_CallMethodNoArgs`" -#: ../Doc/c-api/call.rst:215 +#: ../Doc/c-api/call.rst:209 msgid ":c:func:`PyObject_CallMethodOneArg`" msgstr ":c:func:`PyObject_CallMethodOneArg`" -#: ../Doc/c-api/call.rst:217 +#: ../Doc/c-api/call.rst:211 msgid ":c:func:`PyObject_Vectorcall`" msgstr ":c:func:`PyObject_Vectorcall`" -#: ../Doc/c-api/call.rst:217 ../Doc/c-api/call.rst:219 -#: ../Doc/c-api/call.rst:221 +#: ../Doc/c-api/call.rst:211 ../Doc/c-api/call.rst:213 +#: ../Doc/c-api/call.rst:215 msgid "vectorcall" msgstr "vectorcall" -#: ../Doc/c-api/call.rst:219 +#: ../Doc/c-api/call.rst:213 msgid ":c:func:`PyObject_VectorcallDict`" msgstr ":c:func:`PyObject_VectorcallDict`" -#: ../Doc/c-api/call.rst:221 +#: ../Doc/c-api/call.rst:215 msgid ":c:func:`PyObject_VectorcallMethod`" msgstr ":c:func:`PyObject_VectorcallMethod`" -#: ../Doc/c-api/call.rst:221 +#: ../Doc/c-api/call.rst:215 msgid "arg + name" msgstr "arg + nombre" -#: ../Doc/c-api/call.rst:227 +#: ../Doc/c-api/call.rst:221 msgid "" "Call a callable Python object *callable*, with arguments given by the tuple " "*args*, and named arguments given by the dictionary *kwargs*." @@ -499,7 +491,7 @@ msgstr "" "Llama a un objeto de Python invocable *callable*, con argumentos dados por " "la tupla *args*, y argumentos con nombre dados por el diccionario *kwargs*." -#: ../Doc/c-api/call.rst:230 +#: ../Doc/c-api/call.rst:224 msgid "" "*args* must not be *NULL*; use an empty tuple if no arguments are needed. If " "no named arguments are needed, *kwargs* can be *NULL*." @@ -508,12 +500,12 @@ msgstr "" "argumentos. Si no se necesitan argumentos con nombre, *kwargs* puede ser " "*NULL*." -#: ../Doc/c-api/call.rst:233 ../Doc/c-api/call.rst:245 -#: ../Doc/c-api/call.rst:256 ../Doc/c-api/call.rst:269 -#: ../Doc/c-api/call.rst:281 ../Doc/c-api/call.rst:301 -#: ../Doc/c-api/call.rst:320 ../Doc/c-api/call.rst:334 -#: ../Doc/c-api/call.rst:343 ../Doc/c-api/call.rst:357 -#: ../Doc/c-api/call.rst:372 ../Doc/c-api/call.rst:410 +#: ../Doc/c-api/call.rst:227 ../Doc/c-api/call.rst:239 +#: ../Doc/c-api/call.rst:250 ../Doc/c-api/call.rst:261 +#: ../Doc/c-api/call.rst:273 ../Doc/c-api/call.rst:293 +#: ../Doc/c-api/call.rst:312 ../Doc/c-api/call.rst:326 +#: ../Doc/c-api/call.rst:335 ../Doc/c-api/call.rst:347 +#: ../Doc/c-api/call.rst:360 ../Doc/c-api/call.rst:394 msgid "" "Return the result of the call on success, or raise an exception and return " "*NULL* on failure." @@ -521,7 +513,7 @@ msgstr "" "Retorna el resultado de la llamada en caso de éxito o lanza una excepción y " "retorna *NULL* en caso de error." -#: ../Doc/c-api/call.rst:236 +#: ../Doc/c-api/call.rst:230 msgid "" "This is the equivalent of the Python expression: ``callable(*args, " "**kwargs)``." @@ -529,7 +521,7 @@ msgstr "" "Este es el equivalente de la expresión de Python: ``callable(*args, " "**kwargs)``." -#: ../Doc/c-api/call.rst:242 +#: ../Doc/c-api/call.rst:236 msgid "" "Call a callable Python object *callable* without any arguments. It is the " "most efficient way to call a callable Python object without any argument." @@ -538,7 +530,7 @@ msgstr "" "forma más eficiente de llamar a un objeto Python invocable sin ningún " "argumento." -#: ../Doc/c-api/call.rst:253 +#: ../Doc/c-api/call.rst:247 msgid "" "Call a callable Python object *callable* with exactly 1 positional argument " "*arg* and no keyword arguments." @@ -546,7 +538,7 @@ msgstr "" "Llama a un objeto de Python invocable *callable* con exactamente 1 argumento " "posicional *arg* y sin argumentos de palabra clave." -#: ../Doc/c-api/call.rst:266 +#: ../Doc/c-api/call.rst:258 msgid "" "Call a callable Python object *callable*, with arguments given by the tuple " "*args*. If no arguments are needed, then *args* can be *NULL*." @@ -555,11 +547,11 @@ msgstr "" "la tupla *args*. Si no se necesitan argumentos, entonces *args* puede ser " "*NULL*." -#: ../Doc/c-api/call.rst:272 ../Doc/c-api/call.rst:284 +#: ../Doc/c-api/call.rst:264 ../Doc/c-api/call.rst:276 msgid "This is the equivalent of the Python expression: ``callable(*args)``." msgstr "Este es el equivalente de la expresión de Python: ``callable(*args)``." -#: ../Doc/c-api/call.rst:277 +#: ../Doc/c-api/call.rst:269 msgid "" "Call a callable Python object *callable*, with a variable number of C " "arguments. The C arguments are described using a :c:func:`Py_BuildValue` " @@ -571,19 +563,20 @@ msgstr "" "caracteres de formato de estilo :c:func:`Py_BuildValue`. El formato puede " "ser *NULL*, lo que indica que no se proporcionan argumentos." -#: ../Doc/c-api/call.rst:286 +#: ../Doc/c-api/call.rst:278 +#, fuzzy msgid "" -"Note that if you only pass :c:type:`PyObject *` args, :c:func:" +"Note that if you only pass :c:expr:`PyObject *` args, :c:func:" "`PyObject_CallFunctionObjArgs` is a faster alternative." msgstr "" "Tenga en cuenta que si solo pasa :c:type:`PyObject *` args, :c:func:" "`PyObject_CallFunctionObjArgs` es una alternativa más rápida." -#: ../Doc/c-api/call.rst:289 +#: ../Doc/c-api/call.rst:281 msgid "The type of *format* was changed from ``char *``." msgstr "El tipo de *format* se cambió desde ``char *``." -#: ../Doc/c-api/call.rst:295 +#: ../Doc/c-api/call.rst:287 msgid "" "Call the method named *name* of object *obj* with a variable number of C " "arguments. The C arguments are described by a :c:func:`Py_BuildValue` " @@ -593,12 +586,12 @@ msgstr "" "argumentos en C. Los argumentos de C se describen mediante una cadena de " "formato :c:func:`Py_BuildValue` que debería producir una tupla." -#: ../Doc/c-api/call.rst:299 +#: ../Doc/c-api/call.rst:291 msgid "The format can be *NULL*, indicating that no arguments are provided." msgstr "" "El formato puede ser *NULL*, lo que indica que no se proporcionan argumentos." -#: ../Doc/c-api/call.rst:304 +#: ../Doc/c-api/call.rst:296 msgid "" "This is the equivalent of the Python expression: ``obj.name(arg1, " "arg2, ...)``." @@ -606,21 +599,23 @@ msgstr "" "Este es el equivalente de la expresión de Python: ``obj.name(arg1, " "arg2, ...)``." -#: ../Doc/c-api/call.rst:307 +#: ../Doc/c-api/call.rst:299 +#, fuzzy msgid "" -"Note that if you only pass :c:type:`PyObject *` args, :c:func:" +"Note that if you only pass :c:expr:`PyObject *` args, :c:func:" "`PyObject_CallMethodObjArgs` is a faster alternative." msgstr "" "Tenga en cuenta que si solo pasa :c:type:`PyObject *` args, :c:func:" "`PyObject_CallMethodObjArgs` es una alternativa más rápida." -#: ../Doc/c-api/call.rst:310 +#: ../Doc/c-api/call.rst:302 msgid "The types of *name* and *format* were changed from ``char *``." msgstr "Los tipos de *name* y *format* se cambiaron desde ``char *``." -#: ../Doc/c-api/call.rst:316 +#: ../Doc/c-api/call.rst:308 +#, fuzzy msgid "" -"Call a callable Python object *callable*, with a variable number of :c:type:" +"Call a callable Python object *callable*, with a variable number of :c:expr:" "`PyObject *` arguments. The arguments are provided as a variable number of " "parameters followed by *NULL*." msgstr "" @@ -628,7 +623,7 @@ msgstr "" "argumentos :c:type:`PyObject *`. Los argumentos se proporcionan como un " "número variable de parámetros seguidos de *NULL*." -#: ../Doc/c-api/call.rst:323 +#: ../Doc/c-api/call.rst:315 msgid "" "This is the equivalent of the Python expression: ``callable(arg1, " "arg2, ...)``." @@ -636,11 +631,12 @@ msgstr "" "Este es el equivalente de la expresión de Python: ``callable(arg1, " "arg2, ...)``." -#: ../Doc/c-api/call.rst:329 +#: ../Doc/c-api/call.rst:321 +#, fuzzy msgid "" "Call a method of the Python object *obj*, where the name of the method is " "given as a Python string object in *name*. It is called with a variable " -"number of :c:type:`PyObject *` arguments. The arguments are provided as a " +"number of :c:expr:`PyObject *` arguments. The arguments are provided as a " "variable number of parameters followed by *NULL*." msgstr "" "Llama a un método del objeto de Python *obj*, donde el nombre del método se " @@ -649,7 +645,7 @@ msgstr "" "argumentos se proporcionan como un número variable de parámetros seguidos de " "*NULL*." -#: ../Doc/c-api/call.rst:340 +#: ../Doc/c-api/call.rst:332 msgid "" "Call a method of the Python object *obj* without arguments, where the name " "of the method is given as a Python string object in *name*." @@ -657,7 +653,7 @@ msgstr "" "Llama a un método del objeto de Python *obj* sin argumentos, donde el nombre " "del método se da como un objeto de cadena de caracteres de Python en *name*." -#: ../Doc/c-api/call.rst:353 +#: ../Doc/c-api/call.rst:343 msgid "" "Call a method of the Python object *obj* with a single positional argument " "*arg*, where the name of the method is given as a Python string object in " @@ -667,7 +663,7 @@ msgstr "" "posicional *arg*, donde el nombre del método se proporciona como un objeto " "de cadena de caracteres de Python en *name*." -#: ../Doc/c-api/call.rst:367 +#: ../Doc/c-api/call.rst:355 msgid "" "Call a callable Python object *callable*. The arguments are the same as for :" "c:type:`vectorcallfunc`. If *callable* supports vectorcall_, this directly " @@ -677,7 +673,7 @@ msgstr "" "mismos que para :c:type:`vectorcallfunc`. Si *callable* admite vectorcall_, " "esto llama directamente a la función vectorcall almacenada en *callable*." -#: ../Doc/c-api/call.rst:381 +#: ../Doc/c-api/call.rst:367 msgid "" "Call *callable* with positional arguments passed exactly as in the " "vectorcall_ protocol, but with keyword arguments passed as a dictionary " @@ -688,7 +684,7 @@ msgstr "" "un diccionario *kwdict*. El arreglo *args* contiene solo los argumentos " "posicionales." -#: ../Doc/c-api/call.rst:385 +#: ../Doc/c-api/call.rst:371 msgid "" "Regardless of which protocol is used internally, a conversion of arguments " "needs to be done. Therefore, this function should only be used if the caller " @@ -701,7 +697,7 @@ msgstr "" "los argumentos de palabras clave, pero no una tupla para los argumentos " "posicionales." -#: ../Doc/c-api/call.rst:397 +#: ../Doc/c-api/call.rst:381 msgid "" "Call a method using the vectorcall calling convention. The name of the " "method is given as a Python string *name*. The object whose method is called " @@ -721,7 +717,7 @@ msgstr "" "``args[0]`` puede cambiarse temporalmente. Los argumentos de palabras clave " "se pueden pasar como en :c:func:`PyObject_Vectorcall`." -#: ../Doc/c-api/call.rst:406 +#: ../Doc/c-api/call.rst:390 msgid "" "If the object has the :const:`Py_TPFLAGS_METHOD_DESCRIPTOR` feature, this " "will call the unbound method object with the full *args* vector as arguments." @@ -730,14 +726,17 @@ msgstr "" "esto llamará al objeto de método independiente con el vector *args* completo " "como argumentos." -#: ../Doc/c-api/call.rst:419 +#: ../Doc/c-api/call.rst:401 msgid "Call Support API" msgstr "API de soporte de llamadas" -#: ../Doc/c-api/call.rst:423 +#: ../Doc/c-api/call.rst:405 msgid "" "Determine if the object *o* is callable. Return ``1`` if the object is " "callable and ``0`` otherwise. This function always succeeds." msgstr "" "Determina si el objeto *o* es invocable. Retorna ``1`` si el objeto es " "invocable y ``0`` en caso contrario. Esta función siempre finaliza con éxito." + +#~ msgid "This function is not part of the :ref:`limited API `." +#~ msgstr "Esta función no es parte de la :ref:`API limitada `." diff --git a/c-api/capsule.po b/c-api/capsule.po index cac821e290..111412044d 100644 --- a/c-api/capsule.po +++ b/c-api/capsule.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-03-19 11:16+0100\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-08-01 20:17+0200\n" "Last-Translator: Cristián Maureira-Fredes \n" "Language: es\n" @@ -19,8 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.8.0\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/c-api/capsule.rst:6 msgid "Capsules" @@ -34,9 +33,10 @@ msgstr "" "estos objetos." #: ../Doc/c-api/capsule.rst:17 +#, fuzzy msgid "" "This subtype of :c:type:`PyObject` represents an opaque value, useful for C " -"extension modules who need to pass an opaque value (as a :c:type:`void*` " +"extension modules who need to pass an opaque value (as a :c:expr:`void*` " "pointer) through Python code to other C code. It is often used to make a C " "function pointer defined in one module available to other modules, so the " "regular import mechanism can be used to access C APIs defined in dynamically " @@ -186,13 +186,12 @@ msgstr "" "func:`PyErr_Occurred` para desambiguar." #: ../Doc/c-api/capsule.rst:103 +#, fuzzy msgid "" "Import a pointer to a C object from a capsule attribute in a module. The " "*name* parameter should specify the full name to the attribute, as in " "``module.attribute``. The *name* stored in the capsule must match this " -"string exactly. If *no_block* is true, import the module without blocking " -"(using :c:func:`PyImport_ImportModuleNoBlock`). If *no_block* is false, " -"import the module conventionally (using :c:func:`PyImport_ImportModule`)." +"string exactly." msgstr "" "Importa un puntero a un objeto C desde un atributo cápsula en un módulo. El " "parámetro *name* debe especificar el nombre completo del atributo, como en " @@ -202,7 +201,7 @@ msgstr "" "`PyImport_ImportModuleNoBlock`). Si *no_block* es falso, importa el módulo " "convencionalmente (usando :c:func:`PyImport_ImportModule`)." -#: ../Doc/c-api/capsule.rst:110 +#: ../Doc/c-api/capsule.rst:108 msgid "" "Return the capsule's internal *pointer* on success. On failure, set an " "exception and return ``NULL``." @@ -210,7 +209,11 @@ msgstr "" "Retorna el puntero *pointer* interno de la cápsula en caso de éxito. En caso " "de falla, establece una excepción y retorna ``NULL``." -#: ../Doc/c-api/capsule.rst:116 +#: ../Doc/c-api/capsule.rst:111 +msgid "*no_block* has no effect anymore." +msgstr "" + +#: ../Doc/c-api/capsule.rst:117 msgid "" "Determines whether or not *capsule* is a valid capsule. A valid capsule is " "non-``NULL``, passes :c:func:`PyCapsule_CheckExact`, has a non-``NULL`` " @@ -224,7 +227,7 @@ msgstr "" "c:func:`PyCapsule_GetPointer` para obtener información sobre cómo se " "comparan los nombres de las cápsulas)." -#: ../Doc/c-api/capsule.rst:122 +#: ../Doc/c-api/capsule.rst:123 msgid "" "In other words, if :c:func:`PyCapsule_IsValid` returns a true value, calls " "to any of the accessors (any function starting with :c:func:`PyCapsule_Get`) " @@ -234,7 +237,7 @@ msgstr "" "verdadero, las llamadas a cualquiera de las funciones de acceso (cualquier " "función que comience con :c:func:`PyCapsule_Get`) tienen éxito." -#: ../Doc/c-api/capsule.rst:126 +#: ../Doc/c-api/capsule.rst:127 msgid "" "Return a nonzero value if the object is valid and matches the name passed " "in. Return ``0`` otherwise. This function will not fail." @@ -242,23 +245,23 @@ msgstr "" "Retorna un valor distinto de cero si el objeto es válido y coincide con el " "nombre pasado. Retorna ``0`` de lo contrario. Esta función no fallará." -#: ../Doc/c-api/capsule.rst:132 +#: ../Doc/c-api/capsule.rst:133 msgid "Set the context pointer inside *capsule* to *context*." msgstr "Establece el puntero de contexto dentro de *capsule* a *context*." -#: ../Doc/c-api/capsule.rst:134 ../Doc/c-api/capsule.rst:141 -#: ../Doc/c-api/capsule.rst:150 ../Doc/c-api/capsule.rst:158 +#: ../Doc/c-api/capsule.rst:135 ../Doc/c-api/capsule.rst:142 +#: ../Doc/c-api/capsule.rst:151 ../Doc/c-api/capsule.rst:159 msgid "" "Return ``0`` on success. Return nonzero and set an exception on failure." msgstr "" "Retorna ``0`` en caso de éxito. Retorna distinto de cero y establece una " "excepción en caso de error." -#: ../Doc/c-api/capsule.rst:139 +#: ../Doc/c-api/capsule.rst:140 msgid "Set the destructor inside *capsule* to *destructor*." msgstr "Establece el destructor dentro de *capsule* en *destructor*." -#: ../Doc/c-api/capsule.rst:146 +#: ../Doc/c-api/capsule.rst:147 msgid "" "Set the name inside *capsule* to *name*. If non-``NULL``, the name must " "outlive the capsule. If the previous *name* stored in the capsule was not " @@ -268,7 +271,7 @@ msgstr "" "nombre debe sobrevivir a la cápsula. Si el *name* anterior almacenado en la " "cápsula no era ``NULL``, no se intenta liberarlo." -#: ../Doc/c-api/capsule.rst:155 +#: ../Doc/c-api/capsule.rst:156 msgid "" "Set the void pointer inside *capsule* to *pointer*. The pointer may not be " "``NULL``." diff --git a/c-api/code.po b/c-api/code.po index 4322c1eb3a..4b983fbd14 100644 --- a/c-api/code.po +++ b/c-api/code.po @@ -10,16 +10,16 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-08-16 13:04+0200\n" "Last-Translator: Cristián Maureira-Fredes \n" -"Language-Team: python-doc-es\n" "Language: es\n" +"Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" -"Generated-By: Babel 2.9.1\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/c-api/code.rst:8 msgid "Code Objects" @@ -64,37 +64,48 @@ msgid "Return the number of free variables in *co*." msgstr "Retorna el número de variables libres en *co*." #: ../Doc/c-api/code.rst:38 +#, fuzzy msgid "" "Return a new code object. If you need a dummy code object to create a " "frame, use :c:func:`PyCode_NewEmpty` instead. Calling :c:func:`PyCode_New` " -"directly can bind you to a precise Python version since the definition of " -"the bytecode changes often." +"directly will bind you to a precise Python version since the definition of " +"the bytecode changes often. The many arguments of this function are inter-" +"dependent in complex ways, meaning that subtle changes to values are likely " +"to result in incorrect execution or VM crashes. Use this function only with " +"extreme care." msgstr "" "Retorna un nuevo objeto de código. Si necesita un objeto de código ficticio " "para crear un marco (*frame*), use :c:func:`PyCode_NewEmpty` en su lugar. " "Llamando :c:func:`PyCode_New` directamente puede enlazarlo a una versión " "precisa de Python ya que la definición del código de bytes cambia a menudo." -#: ../Doc/c-api/code.rst:45 +#: ../Doc/c-api/code.rst:45 ../Doc/c-api/code.rst:55 +msgid "Added ``exceptiontable`` parameter." +msgstr "" + +#: ../Doc/c-api/code.rst:50 +#, fuzzy msgid "" "Similar to :c:func:`PyCode_New`, but with an extra \"posonlyargcount\" for " -"positional-only arguments." +"positional-only arguments. The same caveats that apply to ``PyCode_New`` " +"also apply to this function." msgstr "" "Similar a :c:func:`PyCode_New`, pero con un \"*posonlyargcount*\" adicional " "para argumentos solo posicionales." -#: ../Doc/c-api/code.rst:51 +#: ../Doc/c-api/code.rst:60 +#, fuzzy msgid "" "Return a new empty code object with the specified filename, function name, " -"and first line number. It is illegal to :func:`exec` or :func:`eval` the " -"resulting code object." +"and first line number. The resulting code object will raise an ``Exception`` " +"if executed." msgstr "" "Retorna un nuevo objeto de código vacío con el nombre de archivo " "especificado, el nombre de la función y el número de la primera línea. Es " "ilegal utilizar :func:`exec` o :func:`eval` en el objeto de código " "resultante." -#: ../Doc/c-api/code.rst:57 +#: ../Doc/c-api/code.rst:66 msgid "" "Return the line number of the instruction that occurs on or before " "``byte_offset`` and ends after it. If you just need the line number of a " @@ -104,12 +115,60 @@ msgstr "" "``byte_offset`` y finaliza después. Si solo necesita el número de línea de " "un marco, use :c:func:`PyFrame_GetLineNumber` en su lugar." -#: ../Doc/c-api/code.rst:60 +#: ../Doc/c-api/code.rst:69 +#, fuzzy msgid "" "For efficiently iterating over the line numbers in a code object, use `the " -"API described in PEP 626 `_." +"API described in PEP 626 `_." msgstr "" "Para iterar de manera eficiente sobre los números de línea en un objeto de " "código, use `la API descrita en PEP 626 `_." + +#: ../Doc/c-api/code.rst:74 +msgid "" +"Sets the passed ``int`` pointers to the source code line and column numbers " +"for the instruction at ``byte_offset``. Sets the value to ``0`` when " +"information is not available for any particular element." +msgstr "" + +#: ../Doc/c-api/code.rst:78 +msgid "Returns ``1`` if the function succeeds and 0 otherwise." +msgstr "" + +#: ../Doc/c-api/code.rst:82 +msgid "" +"Equivalent to the Python code ``getattr(co, 'co_code')``. Returns a strong " +"reference to a :c:type:`PyBytesObject` representing the bytecode in a code " +"object. On error, ``NULL`` is returned and an exception is raised." +msgstr "" + +#: ../Doc/c-api/code.rst:87 +msgid "" +"This ``PyBytesObject`` may be created on-demand by the interpreter and does " +"not necessarily represent the bytecode actually executed by CPython. The " +"primary use case for this function is debuggers and profilers." +msgstr "" + +#: ../Doc/c-api/code.rst:95 +msgid "" +"Equivalent to the Python code ``getattr(co, 'co_varnames')``. Returns a new " +"reference to a :c:type:`PyTupleObject` containing the names of the local " +"variables. On error, ``NULL`` is returned and an exception is raised." +msgstr "" + +#: ../Doc/c-api/code.rst:104 +msgid "" +"Equivalent to the Python code ``getattr(co, 'co_cellvars')``. Returns a new " +"reference to a :c:type:`PyTupleObject` containing the names of the local " +"variables that are referenced by nested functions. On error, ``NULL`` is " +"returned and an exception is raised." +msgstr "" + +#: ../Doc/c-api/code.rst:113 +msgid "" +"Equivalent to the Python code ``getattr(co, 'co_freevars')``. Returns a new " +"reference to a :c:type:`PyTupleObject` containing the names of the free " +"variables. On error, ``NULL`` is returned and an exception is raised." +msgstr "" diff --git a/c-api/codec.po b/c-api/codec.po index 9b9014973f..ee204da5b3 100644 --- a/c-api/codec.po +++ b/c-api/codec.po @@ -223,8 +223,8 @@ msgid "" "Replace the unicode encode error with backslash escapes (``\\x``, ``\\u`` " "and ``\\U``)." msgstr "" -"Reemplaza el error de codificación Unicode con escapes de barra invertida (``" -"\\x``, ``\\u`` y ``\\U``)." +"Reemplaza el error de codificación Unicode con escapes de barra invertida " +"(``\\x``, ``\\u`` y ``\\U``)." #: ../Doc/c-api/codec.rst:129 msgid "Replace the unicode encode error with ``\\N{...}`` escapes." diff --git a/c-api/complex.po b/c-api/complex.po index b85620892f..91642a9e00 100644 --- a/c-api/complex.po +++ b/c-api/complex.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-12-09 10:18+0800\n" "Last-Translator: Rodrigo Tobar \n" "Language: es\n" @@ -19,8 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/c-api/complex.rst:6 msgid "Complex Number Objects" @@ -180,11 +179,13 @@ msgid "Return a new :c:type:`PyComplexObject` object from *real* and *imag*." msgstr "Retorna un nuevo objeto :c:type:`PyComplexObject` de *real* e *imag*." #: ../Doc/c-api/complex.rst:118 -msgid "Return the real part of *op* as a C :c:type:`double`." +#, fuzzy +msgid "Return the real part of *op* as a C :c:expr:`double`." msgstr "Retorna la parte real de *op* como :c:type:`double` en C." #: ../Doc/c-api/complex.rst:123 -msgid "Return the imaginary part of *op* as a C :c:type:`double`." +#, fuzzy +msgid "Return the imaginary part of *op* as a C :c:expr:`double`." msgstr "Retorna la parte imaginaria de *op* como un :c:type:`double` de C." #: ../Doc/c-api/complex.rst:128 diff --git a/c-api/conversion.po b/c-api/conversion.po index 69f6bccf35..17cc6cd427 100644 --- a/c-api/conversion.po +++ b/c-api/conversion.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-12-09 10:24+0800\n" "Last-Translator: Rodrigo Tobar \n" "Language: es\n" @@ -19,8 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/c-api/conversion.rst:6 msgid "String conversion and formatting" @@ -65,25 +64,28 @@ msgstr "" "(*corner cases*), que las funciones del Estándar C no hacen." #: ../Doc/c-api/conversion.rst:28 +#, fuzzy msgid "" "The wrappers ensure that ``str[size-1]`` is always ``'\\0'`` upon return. " "They never write more than *size* bytes (including the trailing ``'\\0'``) " "into str. Both functions require that ``str != NULL``, ``size > 0``, " -"``format != NULL`` and ``size < INT_MAX``." +"``format != NULL`` and ``size < INT_MAX``. Note that this means there is no " +"equivalent to the C99 ``n = snprintf(NULL, 0, ...)`` which would determine " +"the necessary buffer size." msgstr "" "Las envolturas aseguran que ``str[size-1]`` sea siempre ``'\\0'`` al " "retornar. Nunca se escriben más de *size* bytes (incluido el ``'\\0'`` del " "final) en *str*. Ambas funciones requieren que ``str != NULL``, ``size > " "0``, ``format != NULL`` y ``size < INT_MAX``." -#: ../Doc/c-api/conversion.rst:33 +#: ../Doc/c-api/conversion.rst:34 msgid "" "The return value (*rv*) for these functions should be interpreted as follows:" msgstr "" "El valor de retorno (*rv*) para estas funciones debe interpretarse de la " "siguiente manera:" -#: ../Doc/c-api/conversion.rst:35 +#: ../Doc/c-api/conversion.rst:36 msgid "" "When ``0 <= rv < size``, the output conversion was successful and *rv* " "characters were written to *str* (excluding the trailing ``'\\0'`` byte at " @@ -93,7 +95,7 @@ msgstr "" "caracteres *rv* se escribieron en *str* (excluyendo el byte ``'\\0'`` final " "en ``str[rv]``)." -#: ../Doc/c-api/conversion.rst:39 +#: ../Doc/c-api/conversion.rst:40 msgid "" "When ``rv >= size``, the output conversion was truncated and a buffer with " "``rv + 1`` bytes would have been needed to succeed. ``str[size-1]`` is " @@ -103,7 +105,7 @@ msgstr "" "necesitado un búfer con ``rv + 1`` bytes para tener éxito. ``str[size-1]`` " "es ``'\\0'`` en este caso." -#: ../Doc/c-api/conversion.rst:43 +#: ../Doc/c-api/conversion.rst:44 msgid "" "When ``rv < 0``, \"something bad happened.\" ``str[size-1]`` is ``'\\0'`` in " "this case too, but the rest of *str* is undefined. The exact cause of the " @@ -113,7 +115,7 @@ msgstr "" "este caso también, pero el resto de *str* no está definido. La causa exacta " "del error depende de la plataforma subyacente." -#: ../Doc/c-api/conversion.rst:48 +#: ../Doc/c-api/conversion.rst:49 msgid "" "The following functions provide locale-independent string to number " "conversions." @@ -121,9 +123,10 @@ msgstr "" "Las siguientes funciones proporcionan cadenas de caracteres independientes " "de la configuración regional para numerar las conversiones." -#: ../Doc/c-api/conversion.rst:52 +#: ../Doc/c-api/conversion.rst:53 +#, fuzzy msgid "" -"Convert a string ``s`` to a :c:type:`double`, raising a Python exception on " +"Convert a string ``s`` to a :c:expr:`double`, raising a Python exception on " "failure. The set of accepted strings corresponds to the set of strings " "accepted by Python's :func:`float` constructor, except that ``s`` must not " "have leading or trailing whitespace. The conversion is independent of the " @@ -136,7 +139,7 @@ msgstr "" "espacios en blanco iniciales o finales. La conversión es independiente de la " "configuración regional actual." -#: ../Doc/c-api/conversion.rst:58 +#: ../Doc/c-api/conversion.rst:59 msgid "" "If ``endptr`` is ``NULL``, convert the whole string. Raise :exc:" "`ValueError` and return ``-1.0`` if the string is not a valid representation " @@ -147,7 +150,7 @@ msgstr "" "representación válida de un número de punto flotante." # set -> configura. ¿"define" quizás?. Revisar en varios lugares del archivo -#: ../Doc/c-api/conversion.rst:62 +#: ../Doc/c-api/conversion.rst:63 msgid "" "If endptr is not ``NULL``, convert as much of the string as possible and set " "``*endptr`` to point to the first unconverted character. If no initial " @@ -162,7 +165,7 @@ msgstr "" "para que apunte al comienzo de la cadena de caracteres, lanza ValueError y " "retorna ``-1.0``." -#: ../Doc/c-api/conversion.rst:69 +#: ../Doc/c-api/conversion.rst:70 msgid "" "If ``s`` represents a value that is too large to store in a float (for " "example, ``\"1e500\"`` is such a string on many platforms) then if " @@ -181,7 +184,7 @@ msgstr "" "configura ``*endptr`` para que apunte al primer carácter después del valor " "convertido." -#: ../Doc/c-api/conversion.rst:77 +#: ../Doc/c-api/conversion.rst:78 msgid "" "If any other error occurs during the conversion (for example an out-of-" "memory error), set the appropriate Python exception and return ``-1.0``." @@ -190,15 +193,16 @@ msgstr "" "de falta de memoria), establece la excepción Python adecuada y retorna " "``-1.0``." -#: ../Doc/c-api/conversion.rst:86 +#: ../Doc/c-api/conversion.rst:87 +#, fuzzy msgid "" -"Convert a :c:type:`double` *val* to a string using supplied *format_code*, " +"Convert a :c:expr:`double` *val* to a string using supplied *format_code*, " "*precision*, and *flags*." msgstr "" "Convierte un :c:type:`double` *val* en una cadena de caracteres usando " "*format_code*, *precision* y *flags* suministrados." -#: ../Doc/c-api/conversion.rst:89 +#: ../Doc/c-api/conversion.rst:90 msgid "" "*format_code* must be one of ``'e'``, ``'E'``, ``'f'``, ``'F'``, ``'g'``, " "``'G'`` or ``'r'``. For ``'r'``, the supplied *precision* must be 0 and is " @@ -209,7 +213,7 @@ msgstr "" "se ignora. El código de formato ``'r'`` especifica el formato estándar :" "func:`repr`." -#: ../Doc/c-api/conversion.rst:94 +#: ../Doc/c-api/conversion.rst:95 msgid "" "*flags* can be zero or more of the values ``Py_DTSF_SIGN``, " "``Py_DTSF_ADD_DOT_0``, or ``Py_DTSF_ALT``, or-ed together:" @@ -217,7 +221,7 @@ msgstr "" "*flags* puede ser cero o más de los valores ``Py_DTSF_SIGN``, " "``Py_DTSF_ADD_DOT_0``, o ``Py_DTSF_ALT``, unidos por *or* (*or-ed*) juntos:" -#: ../Doc/c-api/conversion.rst:97 +#: ../Doc/c-api/conversion.rst:98 msgid "" "``Py_DTSF_SIGN`` means to always precede the returned string with a sign " "character, even if *val* is non-negative." @@ -225,7 +229,7 @@ msgstr "" "``Py_DTSF_SIGN`` significa preceder siempre a la cadena de caracteres " "retornada con un carácter de signo, incluso si *val* no es negativo." -#: ../Doc/c-api/conversion.rst:100 +#: ../Doc/c-api/conversion.rst:101 msgid "" "``Py_DTSF_ADD_DOT_0`` means to ensure that the returned string will not look " "like an integer." @@ -233,7 +237,7 @@ msgstr "" "``Py_DTSF_ADD_DOT_0`` significa asegurarse de que la cadena de caracteres " "retornada no se verá como un número entero." -#: ../Doc/c-api/conversion.rst:103 +#: ../Doc/c-api/conversion.rst:104 msgid "" "``Py_DTSF_ALT`` means to apply \"alternate\" formatting rules. See the " "documentation for the :c:func:`PyOS_snprintf` ``'#'`` specifier for details." @@ -242,7 +246,7 @@ msgstr "" "Consulte la documentación del especificador :c:func:`PyOS_snprintf` ``'#'`` " "para obtener más detalles." -#: ../Doc/c-api/conversion.rst:107 +#: ../Doc/c-api/conversion.rst:108 msgid "" "If *ptype* is non-``NULL``, then the value it points to will be set to one " "of ``Py_DTST_FINITE``, ``Py_DTST_INFINITE``, or ``Py_DTST_NAN``, signifying " @@ -254,7 +258,7 @@ msgstr "" "que *val* es un número finito, un número infinito o no es un número, " "respectivamente." -#: ../Doc/c-api/conversion.rst:111 +#: ../Doc/c-api/conversion.rst:112 msgid "" "The return value is a pointer to *buffer* with the converted string or " "``NULL`` if the conversion failed. The caller is responsible for freeing the " @@ -265,7 +269,7 @@ msgstr "" "responsable de liberar la cadena de caracteres retornada llamando a :c:func:" "`PyMem_Free`." -#: ../Doc/c-api/conversion.rst:120 +#: ../Doc/c-api/conversion.rst:121 msgid "" "Case insensitive comparison of strings. The function works almost " "identically to :c:func:`strcmp` except that it ignores the case." @@ -274,7 +278,7 @@ msgstr "" "La función se comporta casi de manera idéntica a :c:func:`strcmp`, excepto " "que ignora el caso." -#: ../Doc/c-api/conversion.rst:126 +#: ../Doc/c-api/conversion.rst:127 msgid "" "Case insensitive comparison of strings. The function works almost " "identically to :c:func:`strncmp` except that it ignores the case." diff --git a/c-api/datetime.po b/c-api/datetime.po index f4ccf7f465..d07f6dc46f 100644 --- a/c-api/datetime.po +++ b/c-api/datetime.po @@ -10,16 +10,16 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-10-19 02:00+0200\n" "Last-Translator: Meta Louis-Kosmas \n" "Language: es\n" "Language-Team: python-doc-es\n" -"Plural-Forms: nplurals=2; plural=(n != 1);nMIME-Version: 1.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/c-api/datetime.rst:6 msgid "DateTime Objects" @@ -205,7 +205,7 @@ msgstr "" "el número resultante de micro segundos y segundos se encuentre en los rangos " "documentados para los objetos :class:`datetime.timedelta`." -#: ../Doc/c-api/datetime.rst:137 +#: ../Doc/c-api/datetime.rst:138 msgid "" "Return a :class:`datetime.timezone` object with an unnamed fixed offset " "represented by the *offset* argument." @@ -213,7 +213,7 @@ msgstr "" "Retorna un objeto :class:`datetime.timezone` con un desplazamiento fijo sin " "nombre representado por el argumento *offset*." -#: ../Doc/c-api/datetime.rst:144 +#: ../Doc/c-api/datetime.rst:146 msgid "" "Return a :class:`datetime.timezone` object with a fixed offset represented " "by the *offset* argument and with tzname *name*." @@ -221,7 +221,7 @@ msgstr "" "Retorna un objeto :class:`datetime.timezone` con un desplazamiento fijo " "representado por el argumento *offset* y con tzname *name*." -#: ../Doc/c-api/datetime.rst:150 +#: ../Doc/c-api/datetime.rst:152 msgid "" "Macros to extract fields from date objects. The argument must be an " "instance of :c:data:`PyDateTime_Date`, including subclasses (such as :c:data:" @@ -233,19 +233,19 @@ msgstr "" "data:`PyDateTime_DateTime`). El argumento no debe ser ``NULL`` y el tipo no " "está marcado:" -#: ../Doc/c-api/datetime.rst:157 +#: ../Doc/c-api/datetime.rst:159 msgid "Return the year, as a positive int." msgstr "Regrese el año, como un int positivo." -#: ../Doc/c-api/datetime.rst:162 +#: ../Doc/c-api/datetime.rst:164 msgid "Return the month, as an int from 1 through 12." msgstr "Regresa el mes, como int del 1 al 12." -#: ../Doc/c-api/datetime.rst:167 +#: ../Doc/c-api/datetime.rst:169 msgid "Return the day, as an int from 1 through 31." msgstr "Retorna el día, como int del 1 al 31." -#: ../Doc/c-api/datetime.rst:170 +#: ../Doc/c-api/datetime.rst:172 msgid "" "Macros to extract fields from datetime objects. The argument must be an " "instance of :c:data:`PyDateTime_DateTime`, including subclasses. The " @@ -255,27 +255,32 @@ msgstr "" "una instancia de :c:data:`PyDateTime_DateTime`, incluidas las subclases. El " "argumento no debe ser ``NULL`` y el tipo no es comprobado:" -#: ../Doc/c-api/datetime.rst:176 ../Doc/c-api/datetime.rst:205 +#: ../Doc/c-api/datetime.rst:178 ../Doc/c-api/datetime.rst:216 msgid "Return the hour, as an int from 0 through 23." msgstr "Retorna la hora, como un int de 0 hasta 23." -#: ../Doc/c-api/datetime.rst:181 ../Doc/c-api/datetime.rst:210 +#: ../Doc/c-api/datetime.rst:183 ../Doc/c-api/datetime.rst:221 msgid "Return the minute, as an int from 0 through 59." msgstr "Retorna el minuto, como un int de 0 hasta 59." -#: ../Doc/c-api/datetime.rst:186 ../Doc/c-api/datetime.rst:215 +#: ../Doc/c-api/datetime.rst:188 ../Doc/c-api/datetime.rst:226 msgid "Return the second, as an int from 0 through 59." msgstr "Retorna el segundo, como un int de 0 hasta 59." -#: ../Doc/c-api/datetime.rst:191 ../Doc/c-api/datetime.rst:220 +#: ../Doc/c-api/datetime.rst:193 ../Doc/c-api/datetime.rst:231 msgid "Return the microsecond, as an int from 0 through 999999." msgstr "Retorna el micro segundo, como un int de 0 hasta 999999." -#: ../Doc/c-api/datetime.rst:195 ../Doc/c-api/datetime.rst:224 +#: ../Doc/c-api/datetime.rst:198 ../Doc/c-api/datetime.rst:236 +#, fuzzy +msgid "Return the fold, as an int from 0 through 1." +msgstr "Retorna el día, como int del 1 al 31." + +#: ../Doc/c-api/datetime.rst:205 ../Doc/c-api/datetime.rst:243 msgid "Return the tzinfo (which may be ``None``)." msgstr "Retorna el tzinfo (que puede ser ``None``)." -#: ../Doc/c-api/datetime.rst:199 +#: ../Doc/c-api/datetime.rst:210 msgid "" "Macros to extract fields from time objects. The argument must be an " "instance of :c:data:`PyDateTime_Time`, including subclasses. The argument " @@ -285,7 +290,7 @@ msgstr "" "instancia de :c:data:`PyDateTime_Time`, incluidas las subclases. El " "argumento no debe ser ``NULL`` y el tipo no está marcado:" -#: ../Doc/c-api/datetime.rst:229 +#: ../Doc/c-api/datetime.rst:248 msgid "" "Macros to extract fields from time delta objects. The argument must be an " "instance of :c:data:`PyDateTime_Delta`, including subclasses. The argument " @@ -295,23 +300,23 @@ msgstr "" "una instancia de :c:data:`PyDateTime_Delta`, incluidas las subclases. El " "argumento no debe ser ``NULL`` y el tipo no está marcado:" -#: ../Doc/c-api/datetime.rst:235 +#: ../Doc/c-api/datetime.rst:254 msgid "Return the number of days, as an int from -999999999 to 999999999." msgstr "Retorna el número de días, como un int desde -999999999 a 999999999." -#: ../Doc/c-api/datetime.rst:242 +#: ../Doc/c-api/datetime.rst:261 msgid "Return the number of seconds, as an int from 0 through 86399." msgstr "Retorna el número de segundos, como un int de 0 a 86399." -#: ../Doc/c-api/datetime.rst:249 +#: ../Doc/c-api/datetime.rst:268 msgid "Return the number of microseconds, as an int from 0 through 999999." msgstr "Retorna el número de micro segundos, como un int de 0 a 999999." -#: ../Doc/c-api/datetime.rst:254 +#: ../Doc/c-api/datetime.rst:273 msgid "Macros for the convenience of modules implementing the DB API:" msgstr "Macros para la conveniencia de módulos que implementan la API DB:" -#: ../Doc/c-api/datetime.rst:258 +#: ../Doc/c-api/datetime.rst:277 msgid "" "Create and return a new :class:`datetime.datetime` object given an argument " "tuple suitable for passing to :meth:`datetime.datetime.fromtimestamp()`." @@ -319,7 +324,7 @@ msgstr "" "Crea y retorna un nuevo objeto :class:`datetime.datetime` dado una tupla de " "argumentos adecuada para pasar a :meth:`datetime.datetime.fromtimestamp()`." -#: ../Doc/c-api/datetime.rst:264 +#: ../Doc/c-api/datetime.rst:283 msgid "" "Create and return a new :class:`datetime.date` object given an argument " "tuple suitable for passing to :meth:`datetime.date.fromtimestamp()`." diff --git a/c-api/dict.po b/c-api/dict.po index f3c630f772..687259048f 100644 --- a/c-api/dict.po +++ b/c-api/dict.po @@ -10,16 +10,16 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-08-01 20:34+0200\n" "Last-Translator: Cristián Maureira-Fredes \n" "Language: es\n" "Language-Team: python-doc-es\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/c-api/dict.rst:6 msgid "Dictionary Objects" @@ -106,9 +106,10 @@ msgstr "" "referencia a *val*." #: ../Doc/c-api/dict.rst:75 +#, fuzzy msgid "" "Insert *val* into the dictionary *p* using *key* as a key. *key* should be " -"a :c:type:`const char*`. The key object is created using " +"a :c:expr:`const char*`. The key object is created using " "``PyUnicode_FromString(key)``. Return ``0`` on success or ``-1`` on " "failure. This function *does not* steal a reference to *val*." msgstr "" @@ -177,9 +178,10 @@ msgstr "" "presente." #: ../Doc/c-api/dict.rst:120 +#, fuzzy msgid "" "This is the same as :c:func:`PyDict_GetItem`, but *key* is specified as a :c:" -"type:`const char*`, rather than a :c:type:`PyObject*`." +"expr:`const char*`, rather than a :c:expr:`PyObject*`." msgstr "" "Esto es lo mismo que :c:func:`PyDict_GetItem`, pero *key* se especifica como " "un :c:type:`const char*`, en lugar de un :c:type:`PyObject*`." @@ -242,12 +244,13 @@ msgstr "" "``len(p)`` en un diccionario." #: ../Doc/c-api/dict.rst:165 +#, fuzzy msgid "" "Iterate over all key-value pairs in the dictionary *p*. The :c:type:" "`Py_ssize_t` referred to by *ppos* must be initialized to ``0`` prior to the " "first call to this function to start the iteration; the function returns " "true for each pair in the dictionary, and false once all pairs have been " -"reported. The parameters *pkey* and *pvalue* should either point to :c:type:" +"reported. The parameters *pkey* and *pvalue* should either point to :c:expr:" "`PyObject*` variables that will be filled in with each key and value, " "respectively, or may be ``NULL``. Any references returned through them are " "borrowed. *ppos* should not be altered during iteration. Its value " diff --git a/c-api/exceptions.po b/c-api/exceptions.po index 21df2cead2..f0049830d2 100644 --- a/c-api/exceptions.po +++ b/c-api/exceptions.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-10-27 17:37+0200\n" "Last-Translator: Cristián Maureira-Fredes \n" "Language: es\n" @@ -19,14 +19,14 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/c-api/exceptions.rst:8 msgid "Exception Handling" msgstr "Manejo de excepciones" #: ../Doc/c-api/exceptions.rst:10 +#, fuzzy msgid "" "The functions described in this chapter will let you handle and raise Python " "exceptions. It is important to understand some of the basics of Python " @@ -35,8 +35,8 @@ msgid "" "occurred. Most C API functions don't clear this on success, but will set it " "to indicate the cause of the error on failure. Most C API functions also " "return an error indicator, usually ``NULL`` if they are supposed to return a " -"pointer, or ``-1`` if they return an integer (exception: the :c:func:`PyArg_" -"\\*` functions return ``1`` for success and ``0`` for failure)." +"pointer, or ``-1`` if they return an integer (exception: the ``PyArg_*`` " +"functions return ``1`` for success and ``0`` for failure)." msgstr "" "Las funciones descritas en este capítulo le permitirán manejar y aumentar " "las excepciones de Python. Es importante comprender algunos de los conceptos " @@ -318,14 +318,15 @@ msgstr "" "partir de la codificación de :term:`filesystem encoding and error handler`." #: ../Doc/c-api/exceptions.rst:191 +#, fuzzy msgid "" "This is a convenience function to raise :exc:`WindowsError`. If called with " -"*ierr* of :c:data:`0`, the error code returned by a call to :c:func:" -"`GetLastError` is used instead. It calls the Win32 function :c:func:" -"`FormatMessage` to retrieve the Windows description of error code given by " -"*ierr* or :c:func:`GetLastError`, then it constructs a tuple object whose " -"first item is the *ierr* value and whose second item is the corresponding " -"error message (gotten from :c:func:`FormatMessage`), and then calls " +"*ierr* of ``0``, the error code returned by a call to :c:func:`GetLastError` " +"is used instead. It calls the Win32 function :c:func:`FormatMessage` to " +"retrieve the Windows description of error code given by *ierr* or :c:func:" +"`GetLastError`, then it constructs a tuple object whose first item is the " +"*ierr* value and whose second item is the corresponding error message " +"(gotten from :c:func:`FormatMessage`), and then calls " "``PyErr_SetObject(PyExc_WindowsError, object)``. This function always " "returns ``NULL``." msgstr "" @@ -402,6 +403,14 @@ msgstr "" #: ../Doc/c-api/exceptions.rst:258 msgid "" +"Much like :c:func:`PyErr_SetImportError` but this function allows for " +"specifying a subclass of :exc:`ImportError` to raise." +msgstr "" +"Al igual que :c:func:`PyErr_SetImportError` pero esta función permite " +"especificar una subclase de :exc:`ImportError` para aumentar." + +#: ../Doc/c-api/exceptions.rst:266 +msgid "" "Set file, line, and offset information for the current exception. If the " "current exception is not a :exc:`SyntaxError`, then it sets additional " "attributes, which make the exception printing subsystem think the exception " @@ -412,7 +421,7 @@ msgstr "" "atributos adicionales, lo que hace que el sub sistema de impresión de " "excepciones piense que la excepción es :exc:`SyntaxError`." -#: ../Doc/c-api/exceptions.rst:268 +#: ../Doc/c-api/exceptions.rst:276 msgid "" "Like :c:func:`PyErr_SyntaxLocationObject`, but *filename* is a byte string " "decoded from the :term:`filesystem encoding and error handler`." @@ -420,14 +429,15 @@ msgstr "" "Como :c:func:`PyErr_SyntaxLocationObject`, pero *filename* es una cadena de " "bytes decodificada a partir de :term:`filesystem encoding and error handler`." -#: ../Doc/c-api/exceptions.rst:276 +#: ../Doc/c-api/exceptions.rst:284 +#, fuzzy msgid "" -"Like :c:func:`PyErr_SyntaxLocationEx`, but the col_offset parameter is " +"Like :c:func:`PyErr_SyntaxLocationEx`, but the *col_offset* parameter is " "omitted." msgstr "" "Como :c:func:`PyErr_SyntaxLocationEx`, pero se omite el parámetro col_offset." -#: ../Doc/c-api/exceptions.rst:282 +#: ../Doc/c-api/exceptions.rst:290 msgid "" "This is a shorthand for ``PyErr_SetString(PyExc_SystemError, message)``, " "where *message* indicates that an internal operation (e.g. a Python/C API " @@ -439,11 +449,11 @@ msgstr "" "función de Python/C API) con un argumento ilegal. Es principalmente para uso " "interno." -#: ../Doc/c-api/exceptions.rst:289 +#: ../Doc/c-api/exceptions.rst:297 msgid "Issuing warnings" msgstr "Emitir advertencias" -#: ../Doc/c-api/exceptions.rst:291 +#: ../Doc/c-api/exceptions.rst:299 msgid "" "Use these functions to issue warnings from C code. They mirror similar " "functions exported by the Python :mod:`warnings` module. They normally " @@ -471,7 +481,7 @@ msgstr "" "llama debe hacer su manejo normal de excepciones (por ejemplo, referencias " "propiedad de :c:func:`Py_DECREF` y retornan un valor de error)." -#: ../Doc/c-api/exceptions.rst:306 +#: ../Doc/c-api/exceptions.rst:314 msgid "" "Issue a warning message. The *category* argument is a warning category (see " "below) or ``NULL``; the *message* argument is a UTF-8 encoded string. " @@ -488,7 +498,7 @@ msgstr "" "Un *stack_level* de 1 es la función que llama :c:func:`PyErr_WarnEx`, 2 es " "la función por encima de eso, y así sucesivamente." -#: ../Doc/c-api/exceptions.rst:313 +#: ../Doc/c-api/exceptions.rst:321 msgid "" "Warning categories must be subclasses of :c:data:`PyExc_Warning`; :c:data:" "`PyExc_Warning` is a subclass of :c:data:`PyExc_Exception`; the default " @@ -503,7 +513,7 @@ msgstr "" "están disponibles como variables globales cuyos nombres se enumeran en :ref:" "`standardwarningcategories`." -#: ../Doc/c-api/exceptions.rst:319 +#: ../Doc/c-api/exceptions.rst:327 msgid "" "For information about warning control, see the documentation for the :mod:" "`warnings` module and the :option:`-W` option in the command line " @@ -514,19 +524,12 @@ msgstr "" "documentación de la línea de comandos. No hay API de C para el control de " "advertencia." -#: ../Doc/c-api/exceptions.rst:325 -msgid "" -"Much like :c:func:`PyErr_SetImportError` but this function allows for " -"specifying a subclass of :exc:`ImportError` to raise." -msgstr "" -"Al igual que :c:func:`PyErr_SetImportError` pero esta función permite " -"especificar una subclase de :exc:`ImportError` para aumentar." - -#: ../Doc/c-api/exceptions.rst:333 +#: ../Doc/c-api/exceptions.rst:334 +#, fuzzy msgid "" "Issue a warning message with explicit control over all warning attributes. " "This is a straightforward wrapper around the Python function :func:`warnings." -"warn_explicit`, see there for more information. The *module* and *registry* " +"warn_explicit`; see there for more information. The *module* and *registry* " "arguments may be set to ``NULL`` to get the default effect described there." msgstr "" "Emite un mensaje de advertencia con control explícito sobre todos los " @@ -535,7 +538,7 @@ msgstr "" "más información. Los argumentos *module* y *registry* pueden establecerse en " "``NULL`` para obtener el efecto predeterminado que se describe allí." -#: ../Doc/c-api/exceptions.rst:344 +#: ../Doc/c-api/exceptions.rst:345 msgid "" "Similar to :c:func:`PyErr_WarnExplicitObject` except that *message* and " "*module* are UTF-8 encoded strings, and *filename* is decoded from the :term:" @@ -545,7 +548,7 @@ msgstr "" "*module* son cadenas codificadas UTF-8, y *filename* se decodifica de :term:" "`filesystem encoding and error handler`." -#: ../Doc/c-api/exceptions.rst:351 +#: ../Doc/c-api/exceptions.rst:352 msgid "" "Function similar to :c:func:`PyErr_WarnEx`, but use :c:func:" "`PyUnicode_FromFormat` to format the warning message. *format* is an ASCII-" @@ -555,7 +558,7 @@ msgstr "" "`PyUnicode_FromFormat` para formatear el mensaje de advertencia. *format* es " "una cadena de caracteres codificada en ASCII." -#: ../Doc/c-api/exceptions.rst:360 +#: ../Doc/c-api/exceptions.rst:361 msgid "" "Function similar to :c:func:`PyErr_WarnFormat`, but *category* is :exc:" "`ResourceWarning` and it passes *source* to :func:`warnings.WarningMessage`." @@ -563,17 +566,18 @@ msgstr "" "Función similar a :c:func:`PyErr_WarnFormat`, pero *category* es :exc:" "`ResourceWarning` y pasa *source* a :func:`warnings.WarningMessage`." -#: ../Doc/c-api/exceptions.rst:367 +#: ../Doc/c-api/exceptions.rst:368 msgid "Querying the error indicator" msgstr "Consultando el indicador de error" -#: ../Doc/c-api/exceptions.rst:371 +#: ../Doc/c-api/exceptions.rst:372 +#, fuzzy msgid "" "Test whether the error indicator is set. If set, return the exception " -"*type* (the first argument to the last call to one of the :c:func:`PyErr_Set" -"\\*` functions or to :c:func:`PyErr_Restore`). If not set, return " -"``NULL``. You do not own a reference to the return value, so you do not " -"need to :c:func:`Py_DECREF` it." +"*type* (the first argument to the last call to one of the ``PyErr_Set*`` " +"functions or to :c:func:`PyErr_Restore`). If not set, return ``NULL``. You " +"do not own a reference to the return value, so you do not need to :c:func:" +"`Py_DECREF` it." msgstr "" "Prueba si el indicador de error está configurado. Si se establece, retorna " "la excepción *type* (el primer argumento de la última llamada a una de las " @@ -581,11 +585,11 @@ msgstr "" "configurado, retorna ``NULL``. No posee una referencia al valor de retorno, " "por lo que no necesita usar :c:func:`Py_DECREF`." -#: ../Doc/c-api/exceptions.rst:377 +#: ../Doc/c-api/exceptions.rst:378 msgid "The caller must hold the GIL." msgstr "La persona que llama debe retener el GIL." -#: ../Doc/c-api/exceptions.rst:381 +#: ../Doc/c-api/exceptions.rst:382 msgid "" "Do not compare the return value to a specific exception; use :c:func:" "`PyErr_ExceptionMatches` instead, shown below. (The comparison could easily " @@ -598,7 +602,7 @@ msgstr "" "instancia en lugar de una clase, en el caso de una excepción de clase, o " "puede ser una subclase de la excepción esperada)." -#: ../Doc/c-api/exceptions.rst:389 +#: ../Doc/c-api/exceptions.rst:390 msgid "" "Equivalent to ``PyErr_GivenExceptionMatches(PyErr_Occurred(), exc)``. This " "should only be called when an exception is actually set; a memory access " @@ -608,7 +612,7 @@ msgstr "" "solo debería llamarse cuando se establece una excepción; se producirá una " "infracción de acceso a la memoria si no se ha producido ninguna excepción." -#: ../Doc/c-api/exceptions.rst:396 +#: ../Doc/c-api/exceptions.rst:397 msgid "" "Return true if the *given* exception matches the exception type in *exc*. " "If *exc* is a class object, this also returns true when *given* is an " @@ -621,7 +625,7 @@ msgstr "" "busca una coincidencia en todos los tipos de excepción en la tupla (y " "recursivamente en sub tuplas)." -#: ../Doc/c-api/exceptions.rst:404 +#: ../Doc/c-api/exceptions.rst:405 msgid "" "Retrieve the error indicator into three variables whose addresses are " "passed. If the error indicator is not set, set all three variables to " @@ -635,7 +639,7 @@ msgstr "" "cada objeto recuperado. El objeto de valor y rastreo puede ser ``NULL`` " "incluso cuando el objeto de tipo no lo es." -#: ../Doc/c-api/exceptions.rst:411 +#: ../Doc/c-api/exceptions.rst:412 msgid "" "This function is normally only used by code that needs to catch exceptions " "or by code that needs to save and restore the error indicator temporarily, e." @@ -645,7 +649,7 @@ msgstr "" "excepciones o el código que necesita guardar y restaurar el indicador de " "error temporalmente, por ejemplo:" -#: ../Doc/c-api/exceptions.rst:426 +#: ../Doc/c-api/exceptions.rst:427 msgid "" "Set the error indicator from the three objects. If the error indicator is " "already set, it is cleared first. If the objects are ``NULL``, the error " @@ -667,7 +671,7 @@ msgstr "" "no posee estas referencias. (Si no comprende esto, no use esta función. Se " "lo advertí)." -#: ../Doc/c-api/exceptions.rst:438 +#: ../Doc/c-api/exceptions.rst:439 msgid "" "This function is normally only used by code that needs to save and restore " "the error indicator temporarily. Use :c:func:`PyErr_Fetch` to save the " @@ -677,7 +681,7 @@ msgstr "" "restaurar el indicador de error temporalmente. Use :c:func:`PyErr_Fetch` " "para guardar el indicador de error actual." -#: ../Doc/c-api/exceptions.rst:445 +#: ../Doc/c-api/exceptions.rst:446 msgid "" "Under certain circumstances, the values returned by :c:func:`PyErr_Fetch` " "below can be \"unnormalized\", meaning that ``*exc`` is a class object but " @@ -694,7 +698,7 @@ msgstr "" "pasa nada. La normalización retrasada se implementa para mejorar el " "rendimiento." -#: ../Doc/c-api/exceptions.rst:453 +#: ../Doc/c-api/exceptions.rst:454 msgid "" "This function *does not* implicitly set the ``__traceback__`` attribute on " "the exception value. If setting the traceback appropriately is desired, the " @@ -704,12 +708,56 @@ msgstr "" "el valor de excepción. Si se desea establecer el rastreo de manera adecuada, " "se necesita el siguiente fragmento adicional:" -#: ../Doc/c-api/exceptions.rst:464 +#: ../Doc/c-api/exceptions.rst:465 msgid "" -"Retrieve the exception info, as known from ``sys.exc_info()``. This refers " -"to an exception that was *already caught*, not to an exception that was " -"freshly raised. Returns new references for the three objects, any of which " -"may be ``NULL``. Does not modify the exception info state." +"Retrieve the active exception instance, as would be returned by :func:`sys." +"exception`. This refers to an exception that was *already caught*, not to an " +"exception that was freshly raised. Returns a new reference to the exception " +"or ``NULL``. Does not modify the interpreter's exception state." +msgstr "" + +#: ../Doc/c-api/exceptions.rst:472 +#, fuzzy +msgid "" +"This function is not normally used by code that wants to handle exceptions. " +"Rather, it can be used when code needs to save and restore the exception " +"state temporarily. Use :c:func:`PyErr_SetHandledException` to restore or " +"clear the exception state." +msgstr "" +"Esta función normalmente no es utilizada por el código que quiere manejar " +"excepciones. En cambio, se puede usar cuando el código necesita guardar y " +"restaurar el estado de excepción temporalmente. Use :c:func:" +"`PyErr_SetExcInfo` para restaurar o borrar el estado de excepción." + +#: ../Doc/c-api/exceptions.rst:481 +msgid "" +"Set the active exception, as known from ``sys.exception()``. This refers to " +"an exception that was *already caught*, not to an exception that was freshly " +"raised. To clear the exception state, pass ``NULL``." +msgstr "" + +#: ../Doc/c-api/exceptions.rst:488 +#, fuzzy +msgid "" +"This function is not normally used by code that wants to handle exceptions. " +"Rather, it can be used when code needs to save and restore the exception " +"state temporarily. Use :c:func:`PyErr_GetHandledException` to get the " +"exception state." +msgstr "" +"Esta función normalmente no es utilizada por el código que quiere manejar " +"excepciones. En cambio, se puede usar cuando el código necesita guardar y " +"restaurar el estado de excepción temporalmente. Use :c:func:" +"`PyErr_GetExcInfo` para leer el estado de excepción." + +#: ../Doc/c-api/exceptions.rst:497 +#, fuzzy +msgid "" +"Retrieve the old-style representation of the exception info, as known from :" +"func:`sys.exc_info`. This refers to an exception that was *already caught*, " +"not to an exception that was freshly raised. Returns new references for the " +"three objects, any of which may be ``NULL``. Does not modify the exception " +"info state. This function is kept for backwards compatibility. Prefer " +"using :c:func:`PyErr_GetHandledException`." msgstr "" "Recupere la información de excepción, como se conoce de ``sys.exc_info()``. " "Esto se refiere a una excepción que *ya fue capturada*, no a una excepción " @@ -717,7 +765,7 @@ msgstr "" "objetos, cualquiera de los cuales puede ser ``NULL``. No modifica el estado " "de información de excepción." -#: ../Doc/c-api/exceptions.rst:471 +#: ../Doc/c-api/exceptions.rst:506 msgid "" "This function is not normally used by code that wants to handle exceptions. " "Rather, it can be used when code needs to save and restore the exception " @@ -729,13 +777,15 @@ msgstr "" "restaurar el estado de excepción temporalmente. Use :c:func:" "`PyErr_SetExcInfo` para restaurar o borrar el estado de excepción." -#: ../Doc/c-api/exceptions.rst:481 +#: ../Doc/c-api/exceptions.rst:516 +#, fuzzy msgid "" "Set the exception info, as known from ``sys.exc_info()``. This refers to an " "exception that was *already caught*, not to an exception that was freshly " "raised. This function steals the references of the arguments. To clear the " -"exception state, pass ``NULL`` for all three arguments. For general rules " -"about the three arguments, see :c:func:`PyErr_Restore`." +"exception state, pass ``NULL`` for all three arguments. This function is " +"kept for backwards compatibility. Prefer using :c:func:" +"`PyErr_SetHandledException`." msgstr "" "Establezca la información de excepción, como se conoce de ``sys." "exc_info()``. Esto se refiere a una excepción que *ya fue capturada*, no a " @@ -744,7 +794,7 @@ msgstr "" "``NULL`` para los tres argumentos. Para ver las reglas generales sobre los " "tres argumentos, consulte :c:func:`PyErr_Restore`." -#: ../Doc/c-api/exceptions.rst:489 +#: ../Doc/c-api/exceptions.rst:525 msgid "" "This function is not normally used by code that wants to handle exceptions. " "Rather, it can be used when code needs to save and restore the exception " @@ -756,15 +806,22 @@ msgstr "" "restaurar el estado de excepción temporalmente. Use :c:func:" "`PyErr_GetExcInfo` para leer el estado de excepción." -#: ../Doc/c-api/exceptions.rst:498 +#: ../Doc/c-api/exceptions.rst:532 +msgid "" +"The ``type`` and ``traceback`` arguments are no longer used and can be NULL. " +"The interpreter now derives them from the exception instance (the ``value`` " +"argument). The function still steals references of all three arguments." +msgstr "" + +#: ../Doc/c-api/exceptions.rst:540 msgid "Signal Handling" msgstr "Manejo de señal" -#: ../Doc/c-api/exceptions.rst:508 +#: ../Doc/c-api/exceptions.rst:550 msgid "This function interacts with Python's signal handling." msgstr "Esta función interactúa con el manejo de señales de Python." -#: ../Doc/c-api/exceptions.rst:510 +#: ../Doc/c-api/exceptions.rst:552 msgid "" "If the function is called from the main thread and under the main Python " "interpreter, it checks whether a signal has been sent to the processes and " @@ -777,7 +834,7 @@ msgstr "" "mod:`signal` es compatible, esto puede invocar un manejador de señales " "escrito en Python." -#: ../Doc/c-api/exceptions.rst:515 +#: ../Doc/c-api/exceptions.rst:557 msgid "" "The function attempts to handle all pending signals, and then returns ``0``. " "However, if a Python signal handler raises an exception, the error indicator " @@ -792,7 +849,7 @@ msgstr "" "hayan manejado todavía: estarán en la siguiente invocación de :c:func:" "`PyErr_CheckSignals()`)." -#: ../Doc/c-api/exceptions.rst:521 +#: ../Doc/c-api/exceptions.rst:563 msgid "" "If the function is called from a non-main thread, or under a non-main Python " "interpreter, it does nothing and returns ``0``." @@ -800,7 +857,7 @@ msgstr "" "Si la función se llama desde un hilo no principal, o bajo un intérprete de " "Python no principal, no hace nada y devuelve ``0``." -#: ../Doc/c-api/exceptions.rst:524 +#: ../Doc/c-api/exceptions.rst:566 msgid "" "This function can be called by long-running C code that wants to be " "interruptible by user requests (such as by pressing Ctrl-C)." @@ -809,7 +866,7 @@ msgstr "" "que quiere ser interrumpible por las peticiones del usuario (como presionar " "Ctrl-C)." -#: ../Doc/c-api/exceptions.rst:528 +#: ../Doc/c-api/exceptions.rst:570 msgid "" "The default Python signal handler for :const:`SIGINT` raises the :exc:" "`KeyboardInterrupt` exception." @@ -817,7 +874,7 @@ msgstr "" "El controlador de señales de Python predeterminado para :const:`SIGINT` " "lanza la excepción :exc:`KeyboardInterrupt`." -#: ../Doc/c-api/exceptions.rst:539 +#: ../Doc/c-api/exceptions.rst:581 msgid "" "Simulate the effect of a :const:`SIGINT` signal arriving. This is equivalent " "to ``PyErr_SetInterruptEx(SIGINT)``." @@ -825,7 +882,7 @@ msgstr "" "Simula el efecto de la llegada de una señal :const:`SIGINT`. Esto es " "equivalente a ``PyErr_SetInterruptEx(SIGINT)``." -#: ../Doc/c-api/exceptions.rst:543 ../Doc/c-api/exceptions.rst:570 +#: ../Doc/c-api/exceptions.rst:585 ../Doc/c-api/exceptions.rst:612 msgid "" "This function is async-signal-safe. It can be called without the :term:" "`GIL` and from a C signal handler." @@ -833,7 +890,7 @@ msgstr "" "Esta función es segura para señales asíncronas. Se puede llamar sin el :term:" "`GIL` y desde un manejador de señales de C." -#: ../Doc/c-api/exceptions.rst:553 +#: ../Doc/c-api/exceptions.rst:595 msgid "" "Simulate the effect of a signal arriving. The next time :c:func:" "`PyErr_CheckSignals` is called, the Python signal handler for the given " @@ -843,7 +900,7 @@ msgstr "" "c:func:`PyErr_CheckSignals`, se llamará al manejador de señal de Python para " "el número de señal dado." -#: ../Doc/c-api/exceptions.rst:557 +#: ../Doc/c-api/exceptions.rst:599 msgid "" "This function can be called by C code that sets up its own signal handling " "and wants Python signal handlers to be invoked as expected when an " @@ -855,7 +912,7 @@ msgstr "" "como se espera cuando se solicita una interrupción (por ejemplo, cuando el " "usuario presiona Ctrl-C para interrumpir una operación)." -#: ../Doc/c-api/exceptions.rst:562 +#: ../Doc/c-api/exceptions.rst:604 msgid "" "If the given signal isn't handled by Python (it was set to :data:`signal." "SIG_DFL` or :data:`signal.SIG_IGN`), it will be ignored." @@ -863,7 +920,7 @@ msgstr "" "Si la señal dada no es manejada por Python (se configuró en :data:`signal." "SIG_DFL` o :data:`signal.SIG_IGN`), se ignorará." -#: ../Doc/c-api/exceptions.rst:565 +#: ../Doc/c-api/exceptions.rst:607 msgid "" "If *signum* is outside of the allowed range of signal numbers, ``-1`` is " "returned. Otherwise, ``0`` is returned. The error indicator is never " @@ -873,7 +930,7 @@ msgstr "" "``-1``. De lo contrario, se devuelve ``0``. Esta función nunca cambia el " "indicador de error." -#: ../Doc/c-api/exceptions.rst:578 +#: ../Doc/c-api/exceptions.rst:620 msgid "" "This utility function specifies a file descriptor to which the signal number " "is written as a single byte whenever a signal is received. *fd* must be non-" @@ -883,7 +940,7 @@ msgstr "" "número de señal se escribe como un solo byte cada vez que se recibe una " "señal. *fd* debe ser sin bloqueo. retorna el descriptor de archivo anterior." -#: ../Doc/c-api/exceptions.rst:582 +#: ../Doc/c-api/exceptions.rst:624 msgid "" "The value ``-1`` disables the feature; this is the initial state. This is " "equivalent to :func:`signal.set_wakeup_fd` in Python, but without any error " @@ -895,15 +952,15 @@ msgstr "" "de errores. *fd* debe ser un descriptor de archivo válido. La función solo " "debe llamarse desde el hilo principal." -#: ../Doc/c-api/exceptions.rst:587 +#: ../Doc/c-api/exceptions.rst:629 msgid "On Windows, the function now also supports socket handles." msgstr "En Windows, la función ahora también admite controladores de socket." -#: ../Doc/c-api/exceptions.rst:592 +#: ../Doc/c-api/exceptions.rst:634 msgid "Exception Classes" msgstr "Clases de Excepción" -#: ../Doc/c-api/exceptions.rst:596 +#: ../Doc/c-api/exceptions.rst:638 msgid "" "This utility function creates and returns a new exception class. The *name* " "argument must be the name of the new exception, a C string of the form " @@ -917,7 +974,7 @@ msgstr "" "*dict* son normalmente ``NULL``. Esto crea un objeto de clase derivado de :" "exc:`Exception` (accesible en C como :c:data:`PyExc_Exception`)." -#: ../Doc/c-api/exceptions.rst:602 +#: ../Doc/c-api/exceptions.rst:644 msgid "" "The :attr:`__module__` attribute of the new class is set to the first part " "(up to the last dot) of the *name* argument, and the class name is set to " @@ -933,7 +990,7 @@ msgstr "" "solo una clase o una tupla de clases. El argumento *dict* se puede usar para " "especificar un diccionario de variables de clase y métodos." -#: ../Doc/c-api/exceptions.rst:611 +#: ../Doc/c-api/exceptions.rst:653 msgid "" "Same as :c:func:`PyErr_NewException`, except that the new exception class " "can easily be given a docstring: If *doc* is non-``NULL``, it will be used " @@ -944,11 +1001,11 @@ msgstr "" "es ``NULL``, se utilizará como la cadena de documentación para la clase de " "excepción." -#: ../Doc/c-api/exceptions.rst:619 +#: ../Doc/c-api/exceptions.rst:661 msgid "Exception Objects" msgstr "Objetos Excepción" -#: ../Doc/c-api/exceptions.rst:623 +#: ../Doc/c-api/exceptions.rst:665 msgid "" "Return the traceback associated with the exception as a new reference, as " "accessible from Python through :attr:`__traceback__`. If there is no " @@ -958,7 +1015,7 @@ msgstr "" "accesible desde Python a través de :attr:`__traceback__`. Si no hay un " "rastreo asociado, esto retorna ``NULL``." -#: ../Doc/c-api/exceptions.rst:630 +#: ../Doc/c-api/exceptions.rst:672 msgid "" "Set the traceback associated with the exception to *tb*. Use ``Py_None`` to " "clear it." @@ -966,7 +1023,7 @@ msgstr "" "Establezca el rastreo asociado con la excepción a *tb*. Use ``Py_None`` para " "borrarlo." -#: ../Doc/c-api/exceptions.rst:636 +#: ../Doc/c-api/exceptions.rst:678 msgid "" "Return the context (another exception instance during whose handling *ex* " "was raised) associated with the exception as a new reference, as accessible " @@ -978,7 +1035,7 @@ msgstr "" "Python a través de :attr:`__context__`. Si no hay un contexto asociado, esto " "retorna ``NULL``." -#: ../Doc/c-api/exceptions.rst:644 +#: ../Doc/c-api/exceptions.rst:686 msgid "" "Set the context associated with the exception to *ctx*. Use ``NULL`` to " "clear it. There is no type check to make sure that *ctx* is an exception " @@ -988,7 +1045,7 @@ msgstr "" "borrarlo. No hay verificación de tipo para asegurarse de que *ctx* es una " "instancia de excepción. Esto roba una referencia a *ctx*." -#: ../Doc/c-api/exceptions.rst:651 +#: ../Doc/c-api/exceptions.rst:693 msgid "" "Return the cause (either an exception instance, or :const:`None`, set by " "``raise ... from ...``) associated with the exception as a new reference, as " @@ -998,7 +1055,7 @@ msgstr "" "establecida por ``raise ... from ...``) asociada con la excepción como una " "nueva referencia, como accesible desde Python a través de :attr:`__causa__`." -#: ../Doc/c-api/exceptions.rst:658 +#: ../Doc/c-api/exceptions.rst:700 msgid "" "Set the cause associated with the exception to *cause*. Use ``NULL`` to " "clear it. There is no type check to make sure that *cause* is either an " @@ -1008,18 +1065,18 @@ msgstr "" "borrarlo. No hay verificación de tipo para asegurarse de que *cause* sea una " "instancia de excepción o :const:`None`. Esto roba una referencia a *cause*." -#: ../Doc/c-api/exceptions.rst:662 +#: ../Doc/c-api/exceptions.rst:704 msgid "" ":attr:`__suppress_context__` is implicitly set to ``True`` by this function." msgstr "" ":attr:`__suppress_context__` es implícitamente establecido en ``True`` por " "esta función." -#: ../Doc/c-api/exceptions.rst:668 +#: ../Doc/c-api/exceptions.rst:710 msgid "Unicode Exception Objects" msgstr "Objetos Unicode de Excepción" -#: ../Doc/c-api/exceptions.rst:670 +#: ../Doc/c-api/exceptions.rst:712 msgid "" "The following functions are used to create and modify Unicode exceptions " "from C." @@ -1027,7 +1084,7 @@ msgstr "" "Las siguientes funciones se utilizan para crear y modificar excepciones " "Unicode de C." -#: ../Doc/c-api/exceptions.rst:674 +#: ../Doc/c-api/exceptions.rst:716 msgid "" "Create a :class:`UnicodeDecodeError` object with the attributes *encoding*, " "*object*, *length*, *start*, *end* and *reason*. *encoding* and *reason* are " @@ -1037,64 +1094,25 @@ msgstr "" "*object*, *length*, *start*, *end* y *reason*. *encoding* y *reason* son " "cadenas codificadas UTF-8." -#: ../Doc/c-api/exceptions.rst:680 -msgid "" -"Create a :class:`UnicodeEncodeError` object with the attributes *encoding*, " -"*object*, *length*, *start*, *end* and *reason*. *encoding* and *reason* are " -"UTF-8 encoded strings." -msgstr "" -"Crea un objeto :class:`UnicodeEncodeError` con los atributos *encoding*, " -"*object*, *length*, *start*, *end* y *reason*. *encoding* y *reason* son " -"cadenas codificadas UTF-8." - -#: ../Doc/c-api/exceptions.rst:684 ../Doc/c-api/exceptions.rst:694 -msgid "3.11" -msgstr "3.11" - -#: ../Doc/c-api/exceptions.rst:686 -msgid "" -"``Py_UNICODE`` is deprecated since Python 3.3. Please migrate to " -"``PyObject_CallFunction(PyExc_UnicodeEncodeError, \"sOnns\", ...)``." -msgstr "" -"``Py_UNICODE`` está obsoleto desde Python 3.3. Migre por favor a " -"``PyObject_CallFunction(PyExc_UnicodeEncodeError, \"sOnns\", ...)``." - -#: ../Doc/c-api/exceptions.rst:691 -msgid "" -"Create a :class:`UnicodeTranslateError` object with the attributes *object*, " -"*length*, *start*, *end* and *reason*. *reason* is a UTF-8 encoded string." -msgstr "" -"Crea un objeto :class:`UnicodeTranslateError` con los atributos *encoding*, " -"*object*, *length*, *start*, *end* y *reason*. *encoding* y *reason* son " -"cadenas codificadas UTF-8." - -#: ../Doc/c-api/exceptions.rst:696 -msgid "" -"``Py_UNICODE`` is deprecated since Python 3.3. Please migrate to " -"``PyObject_CallFunction(PyExc_UnicodeTranslateError, \"Onns\", ...)``." -msgstr "" -"``Py_UNICODE`` está obsoleto desde Python 3.3. Migre por favor a " -"``PyObject_CallFunction(PyExc_UnicodeTranslateError, \"sOnns\", ...)``." - -#: ../Doc/c-api/exceptions.rst:702 +#: ../Doc/c-api/exceptions.rst:723 msgid "Return the *encoding* attribute of the given exception object." msgstr "Retorna el atributo *encoding* del objeto de excepción dado." -#: ../Doc/c-api/exceptions.rst:708 +#: ../Doc/c-api/exceptions.rst:729 msgid "Return the *object* attribute of the given exception object." msgstr "Retorna el atributo *object* del objeto de excepción dado." -#: ../Doc/c-api/exceptions.rst:714 +#: ../Doc/c-api/exceptions.rst:735 msgid "" -"Get the *start* attribute of the given exception object and place it into *" -"\\*start*. *start* must not be ``NULL``. Return ``0`` on success, ``-1`` " +"Get the *start* attribute of the given exception object and place it into " +"*\\*start*. *start* must not be ``NULL``. Return ``0`` on success, ``-1`` " "on failure." msgstr "" -"Obtiene el atributo *start* del objeto de excepción dado y lo coloca en *" -"\\*start*. *start* no debe ser ``NULL``. retorna ``0`` en caso de éxito, " +"Obtiene el atributo *start* del objeto de excepción dado y lo coloca en " +"*\\*start*. *start* no debe ser ``NULL``. retorna ``0`` en caso de éxito, " "``-1`` en caso de error." -#: ../Doc/c-api/exceptions.rst:722 +#: ../Doc/c-api/exceptions.rst:743 msgid "" "Set the *start* attribute of the given exception object to *start*. Return " "``0`` on success, ``-1`` on failure." @@ -1102,17 +1120,17 @@ msgstr "" "Establece el atributo *start* del objeto de excepción dado en *start*. " "Retorna ``0`` en caso de éxito, ``-1`` en caso de error." -#: ../Doc/c-api/exceptions.rst:729 +#: ../Doc/c-api/exceptions.rst:750 msgid "" -"Get the *end* attribute of the given exception object and place it into *" -"\\*end*. *end* must not be ``NULL``. Return ``0`` on success, ``-1`` on " +"Get the *end* attribute of the given exception object and place it into " +"*\\*end*. *end* must not be ``NULL``. Return ``0`` on success, ``-1`` on " "failure." msgstr "" -"Obtiene el atributo *end* del objeto de excepción dado y lo coloca en *" -"\\*end*. *end* no debe ser ``NULL``. retorna ``0`` en caso de éxito, ``-1`` " +"Obtiene el atributo *end* del objeto de excepción dado y lo coloca en " +"*\\*end*. *end* no debe ser ``NULL``. retorna ``0`` en caso de éxito, ``-1`` " "en caso de error." -#: ../Doc/c-api/exceptions.rst:737 +#: ../Doc/c-api/exceptions.rst:758 msgid "" "Set the *end* attribute of the given exception object to *end*. Return " "``0`` on success, ``-1`` on failure." @@ -1120,11 +1138,11 @@ msgstr "" "Establece el atributo *end* del objeto de excepción dado en *end*. Retorna " "``0`` en caso de éxito, ``-1`` en caso de error." -#: ../Doc/c-api/exceptions.rst:744 +#: ../Doc/c-api/exceptions.rst:765 msgid "Return the *reason* attribute of the given exception object." msgstr "Retorna el atributo *reason* del objeto de excepción dado." -#: ../Doc/c-api/exceptions.rst:750 +#: ../Doc/c-api/exceptions.rst:771 msgid "" "Set the *reason* attribute of the given exception object to *reason*. " "Return ``0`` on success, ``-1`` on failure." @@ -1132,11 +1150,11 @@ msgstr "" "Establece el atributo *reason* del objeto de excepción dado en *reason*. " "Retorna ``0`` en caso de éxito, ``-1`` en caso de error." -#: ../Doc/c-api/exceptions.rst:757 +#: ../Doc/c-api/exceptions.rst:778 msgid "Recursion Control" msgstr "Control de Recursión" -#: ../Doc/c-api/exceptions.rst:759 +#: ../Doc/c-api/exceptions.rst:780 msgid "" "These two functions provide a way to perform safe recursive calls at the C " "level, both in the core and in extension modules. They are needed if the " @@ -1152,13 +1170,13 @@ msgstr "" "son necesarios para las implementaciones de *tp_call* porque :ref:`call " "protocol ` se encarga del manejo de la recursividad." -#: ../Doc/c-api/exceptions.rst:768 +#: ../Doc/c-api/exceptions.rst:789 msgid "Marks a point where a recursive C-level call is about to be performed." msgstr "" "Marca un punto donde una llamada recursiva de nivel C está a punto de " "realizarse." -#: ../Doc/c-api/exceptions.rst:770 +#: ../Doc/c-api/exceptions.rst:791 msgid "" "If :const:`USE_STACKCHECK` is defined, this function checks if the OS stack " "overflowed using :c:func:`PyOS_CheckStack`. In this is the case, it sets a :" @@ -1168,7 +1186,7 @@ msgstr "" "del SO se desbordó usando :c:func:`PyOS_CheckStack`. En este caso, establece " "un :exc:`MemoryError` y retorna un valor distinto de cero." -#: ../Doc/c-api/exceptions.rst:774 +#: ../Doc/c-api/exceptions.rst:795 msgid "" "The function then checks if the recursion limit is reached. If this is the " "case, a :exc:`RecursionError` is set and a nonzero value is returned. " @@ -1178,7 +1196,7 @@ msgstr "" "caso, se establece a :exc:`RecursionError` y se retorna un valor distinto de " "cero. De lo contrario, se retorna cero." -#: ../Doc/c-api/exceptions.rst:778 +#: ../Doc/c-api/exceptions.rst:799 msgid "" "*where* should be a UTF-8 encoded string such as ``\" in instance check\"`` " "to be concatenated to the :exc:`RecursionError` message caused by the " @@ -1188,11 +1206,11 @@ msgstr "" "la comprobación de instancia\"`` para concatenarse con el mensaje :exc:" "`RecursionError` causado por el límite de profundidad de recursión." -#: ../Doc/c-api/exceptions.rst:782 ../Doc/c-api/exceptions.rst:790 +#: ../Doc/c-api/exceptions.rst:803 ../Doc/c-api/exceptions.rst:811 msgid "This function is now also available in the limited API." msgstr "Esta función ahora también está disponible en la API limitada." -#: ../Doc/c-api/exceptions.rst:787 +#: ../Doc/c-api/exceptions.rst:808 msgid "" "Ends a :c:func:`Py_EnterRecursiveCall`. Must be called once for each " "*successful* invocation of :c:func:`Py_EnterRecursiveCall`." @@ -1200,7 +1218,7 @@ msgstr "" "Termina una :c:func:`Py_EnterRecursiveCall`. Se debe llamar una vez por cada " "invocación *exitosa* de :c:func:`Py_EnterRecursiveCall`." -#: ../Doc/c-api/exceptions.rst:793 +#: ../Doc/c-api/exceptions.rst:814 msgid "" "Properly implementing :c:member:`~PyTypeObject.tp_repr` for container types " "requires special recursion handling. In addition to protecting the stack, :" @@ -1215,7 +1233,7 @@ msgstr "" "esta funcionalidad. Efectivamente, estos son los C equivalentes a :func:" "`reprlib.recursive_repr`." -#: ../Doc/c-api/exceptions.rst:801 +#: ../Doc/c-api/exceptions.rst:822 msgid "" "Called at the beginning of the :c:member:`~PyTypeObject.tp_repr` " "implementation to detect cycles." @@ -1223,7 +1241,7 @@ msgstr "" "Llamado al comienzo de la implementación :c:member:`~PyTypeObject.tp_repr` " "para detectar ciclos." -#: ../Doc/c-api/exceptions.rst:804 +#: ../Doc/c-api/exceptions.rst:825 msgid "" "If the object has already been processed, the function returns a positive " "integer. In that case the :c:member:`~PyTypeObject.tp_repr` implementation " @@ -1236,7 +1254,7 @@ msgstr "" "objetos :class:`dict` retornan ``{...}`` y los objetos :class:`list` " "retornan ``[...]``." -#: ../Doc/c-api/exceptions.rst:810 +#: ../Doc/c-api/exceptions.rst:831 msgid "" "The function will return a negative integer if the recursion limit is " "reached. In that case the :c:member:`~PyTypeObject.tp_repr` implementation " @@ -1246,7 +1264,7 @@ msgstr "" "recursión. En ese caso, la implementación :c:member:`~PyTypeObject.tp_repr` " "normalmente debería retornar ``NULL``." -#: ../Doc/c-api/exceptions.rst:814 +#: ../Doc/c-api/exceptions.rst:835 msgid "" "Otherwise, the function returns zero and the :c:member:`~PyTypeObject." "tp_repr` implementation can continue normally." @@ -1254,7 +1272,7 @@ msgstr "" "De lo contrario, la función retorna cero y la implementación :c:member:" "`~PyTypeObject.tp_repr` puede continuar normalmente." -#: ../Doc/c-api/exceptions.rst:819 +#: ../Doc/c-api/exceptions.rst:840 msgid "" "Ends a :c:func:`Py_ReprEnter`. Must be called once for each invocation of :" "c:func:`Py_ReprEnter` that returns zero." @@ -1262,15 +1280,16 @@ msgstr "" "Termina a :c:func:`Py_ReprEnter`. Se debe llamar una vez por cada invocación " "de :c:func:`Py_ReprEnter` que retorna cero." -#: ../Doc/c-api/exceptions.rst:826 +#: ../Doc/c-api/exceptions.rst:847 msgid "Standard Exceptions" msgstr "Excepciones Estándar" -#: ../Doc/c-api/exceptions.rst:828 +#: ../Doc/c-api/exceptions.rst:849 +#, fuzzy msgid "" "All standard Python exceptions are available as global variables whose names " "are ``PyExc_`` followed by the Python exception name. These have the type :" -"c:type:`PyObject*`; they are all class objects. For completeness, here are " +"c:expr:`PyObject*`; they are all class objects. For completeness, here are " "all the variables:" msgstr "" "Todas las excepciones estándar de Python están disponibles como variables " @@ -1278,455 +1297,451 @@ msgstr "" "Python. Estos tienen el tipo :c:type:`PyObject*`; todos son objetos de " "clase. Para completar, aquí están todas las variables:" -#: ../Doc/c-api/exceptions.rst:889 ../Doc/c-api/exceptions.rst:1022 -#: ../Doc/c-api/exceptions.rst:1067 +#: ../Doc/c-api/exceptions.rst:910 ../Doc/c-api/exceptions.rst:1043 +#: ../Doc/c-api/exceptions.rst:1088 msgid "C Name" msgstr "Nombre en C" -#: ../Doc/c-api/exceptions.rst:889 ../Doc/c-api/exceptions.rst:1067 +#: ../Doc/c-api/exceptions.rst:910 ../Doc/c-api/exceptions.rst:1088 msgid "Python Name" msgstr "Nombre en Python" -#: ../Doc/c-api/exceptions.rst:889 ../Doc/c-api/exceptions.rst:1022 -#: ../Doc/c-api/exceptions.rst:1067 +#: ../Doc/c-api/exceptions.rst:910 ../Doc/c-api/exceptions.rst:1043 +#: ../Doc/c-api/exceptions.rst:1088 msgid "Notes" msgstr "Notas" -#: ../Doc/c-api/exceptions.rst:891 +#: ../Doc/c-api/exceptions.rst:912 msgid ":c:data:`PyExc_BaseException`" msgstr ":c:data:`PyExc_BaseException`" -#: ../Doc/c-api/exceptions.rst:891 +#: ../Doc/c-api/exceptions.rst:912 msgid ":exc:`BaseException`" msgstr ":exc:`BaseException`" -#: ../Doc/c-api/exceptions.rst:891 ../Doc/c-api/exceptions.rst:893 -#: ../Doc/c-api/exceptions.rst:895 ../Doc/c-api/exceptions.rst:941 -#: ../Doc/c-api/exceptions.rst:953 ../Doc/c-api/exceptions.rst:1069 -msgid "\\(1)" -msgstr "\\(1)" +#: ../Doc/c-api/exceptions.rst:912 ../Doc/c-api/exceptions.rst:914 +#: ../Doc/c-api/exceptions.rst:916 ../Doc/c-api/exceptions.rst:962 +#: ../Doc/c-api/exceptions.rst:974 +msgid "[1]_" +msgstr "" -#: ../Doc/c-api/exceptions.rst:893 +#: ../Doc/c-api/exceptions.rst:914 msgid ":c:data:`PyExc_Exception`" msgstr ":c:data:`PyExc_Exception`" -#: ../Doc/c-api/exceptions.rst:893 +#: ../Doc/c-api/exceptions.rst:914 msgid ":exc:`Exception`" msgstr ":exc:`Exception`" -#: ../Doc/c-api/exceptions.rst:895 +#: ../Doc/c-api/exceptions.rst:916 msgid ":c:data:`PyExc_ArithmeticError`" msgstr ":c:data:`PyExc_ArithmeticError`" -#: ../Doc/c-api/exceptions.rst:895 +#: ../Doc/c-api/exceptions.rst:916 msgid ":exc:`ArithmeticError`" msgstr ":exc:`ArithmeticError`" -#: ../Doc/c-api/exceptions.rst:897 +#: ../Doc/c-api/exceptions.rst:918 msgid ":c:data:`PyExc_AssertionError`" msgstr ":c:data:`PyExc_AssertionError`" -#: ../Doc/c-api/exceptions.rst:897 +#: ../Doc/c-api/exceptions.rst:918 msgid ":exc:`AssertionError`" msgstr ":exc:`AssertionError`" -#: ../Doc/c-api/exceptions.rst:899 +#: ../Doc/c-api/exceptions.rst:920 msgid ":c:data:`PyExc_AttributeError`" msgstr ":c:data:`PyExc_AttributeError`" -#: ../Doc/c-api/exceptions.rst:899 +#: ../Doc/c-api/exceptions.rst:920 msgid ":exc:`AttributeError`" msgstr ":exc:`AttributeError`" -#: ../Doc/c-api/exceptions.rst:901 +#: ../Doc/c-api/exceptions.rst:922 msgid ":c:data:`PyExc_BlockingIOError`" msgstr ":c:data:`PyExc_BlockingIOError`" -#: ../Doc/c-api/exceptions.rst:901 +#: ../Doc/c-api/exceptions.rst:922 msgid ":exc:`BlockingIOError`" msgstr ":exc:`BlockingIOError`" -#: ../Doc/c-api/exceptions.rst:903 +#: ../Doc/c-api/exceptions.rst:924 msgid ":c:data:`PyExc_BrokenPipeError`" msgstr ":c:data:`PyExc_BrokenPipeError`" -#: ../Doc/c-api/exceptions.rst:903 +#: ../Doc/c-api/exceptions.rst:924 msgid ":exc:`BrokenPipeError`" msgstr ":exc:`BrokenPipeError`" -#: ../Doc/c-api/exceptions.rst:905 +#: ../Doc/c-api/exceptions.rst:926 msgid ":c:data:`PyExc_BufferError`" msgstr ":c:data:`PyExc_BufferError`" -#: ../Doc/c-api/exceptions.rst:905 +#: ../Doc/c-api/exceptions.rst:926 msgid ":exc:`BufferError`" msgstr ":exc:`BufferError`" -#: ../Doc/c-api/exceptions.rst:907 +#: ../Doc/c-api/exceptions.rst:928 msgid ":c:data:`PyExc_ChildProcessError`" msgstr ":c:data:`PyExc_ChildProcessError`" -#: ../Doc/c-api/exceptions.rst:907 +#: ../Doc/c-api/exceptions.rst:928 msgid ":exc:`ChildProcessError`" msgstr ":exc:`ChildProcessError`" -#: ../Doc/c-api/exceptions.rst:909 +#: ../Doc/c-api/exceptions.rst:930 msgid ":c:data:`PyExc_ConnectionAbortedError`" msgstr ":c:data:`PyExc_ConnectionAbortedError`" -#: ../Doc/c-api/exceptions.rst:909 +#: ../Doc/c-api/exceptions.rst:930 msgid ":exc:`ConnectionAbortedError`" msgstr ":exc:`ConnectionAbortedError`" -#: ../Doc/c-api/exceptions.rst:911 +#: ../Doc/c-api/exceptions.rst:932 msgid ":c:data:`PyExc_ConnectionError`" msgstr ":c:data:`PyExc_ConnectionError`" -#: ../Doc/c-api/exceptions.rst:911 +#: ../Doc/c-api/exceptions.rst:932 msgid ":exc:`ConnectionError`" msgstr ":exc:`ConnectionError`" -#: ../Doc/c-api/exceptions.rst:913 +#: ../Doc/c-api/exceptions.rst:934 msgid ":c:data:`PyExc_ConnectionRefusedError`" msgstr ":c:data:`PyExc_ConnectionRefusedError`" -#: ../Doc/c-api/exceptions.rst:913 +#: ../Doc/c-api/exceptions.rst:934 msgid ":exc:`ConnectionRefusedError`" msgstr ":exc:`ConnectionRefusedError`" -#: ../Doc/c-api/exceptions.rst:915 +#: ../Doc/c-api/exceptions.rst:936 msgid ":c:data:`PyExc_ConnectionResetError`" msgstr ":c:data:`PyExc_ConnectionResetError`" -#: ../Doc/c-api/exceptions.rst:915 +#: ../Doc/c-api/exceptions.rst:936 msgid ":exc:`ConnectionResetError`" msgstr ":exc:`ConnectionResetError`" -#: ../Doc/c-api/exceptions.rst:917 +#: ../Doc/c-api/exceptions.rst:938 msgid ":c:data:`PyExc_EOFError`" msgstr ":c:data:`PyExc_EOFError`" -#: ../Doc/c-api/exceptions.rst:917 +#: ../Doc/c-api/exceptions.rst:938 msgid ":exc:`EOFError`" msgstr ":exc:`EOFError`" -#: ../Doc/c-api/exceptions.rst:919 +#: ../Doc/c-api/exceptions.rst:940 msgid ":c:data:`PyExc_FileExistsError`" msgstr ":c:data:`PyExc_FileExistsError`" -#: ../Doc/c-api/exceptions.rst:919 +#: ../Doc/c-api/exceptions.rst:940 msgid ":exc:`FileExistsError`" msgstr ":exc:`FileExistsError`" -#: ../Doc/c-api/exceptions.rst:921 +#: ../Doc/c-api/exceptions.rst:942 msgid ":c:data:`PyExc_FileNotFoundError`" msgstr ":c:data:`PyExc_FileNotFoundError`" -#: ../Doc/c-api/exceptions.rst:921 +#: ../Doc/c-api/exceptions.rst:942 msgid ":exc:`FileNotFoundError`" msgstr ":exc:`FileNotFoundError`" -#: ../Doc/c-api/exceptions.rst:923 +#: ../Doc/c-api/exceptions.rst:944 msgid ":c:data:`PyExc_FloatingPointError`" msgstr ":c:data:`PyExc_FloatingPointError`" -#: ../Doc/c-api/exceptions.rst:923 +#: ../Doc/c-api/exceptions.rst:944 msgid ":exc:`FloatingPointError`" msgstr ":exc:`FloatingPointError`" -#: ../Doc/c-api/exceptions.rst:925 +#: ../Doc/c-api/exceptions.rst:946 msgid ":c:data:`PyExc_GeneratorExit`" msgstr ":c:data:`PyExc_GeneratorExit`" -#: ../Doc/c-api/exceptions.rst:925 +#: ../Doc/c-api/exceptions.rst:946 msgid ":exc:`GeneratorExit`" msgstr ":exc:`GeneratorExit`" -#: ../Doc/c-api/exceptions.rst:927 +#: ../Doc/c-api/exceptions.rst:948 msgid ":c:data:`PyExc_ImportError`" msgstr ":c:data:`PyExc_ImportError`" -#: ../Doc/c-api/exceptions.rst:927 +#: ../Doc/c-api/exceptions.rst:948 msgid ":exc:`ImportError`" msgstr ":exc:`ImportError`" -#: ../Doc/c-api/exceptions.rst:929 +#: ../Doc/c-api/exceptions.rst:950 msgid ":c:data:`PyExc_IndentationError`" msgstr ":c:data:`PyExc_IndentationError`" -#: ../Doc/c-api/exceptions.rst:929 +#: ../Doc/c-api/exceptions.rst:950 msgid ":exc:`IndentationError`" msgstr ":exc:`IndentationError`" -#: ../Doc/c-api/exceptions.rst:931 +#: ../Doc/c-api/exceptions.rst:952 msgid ":c:data:`PyExc_IndexError`" msgstr ":c:data:`PyExc_IndexError`" -#: ../Doc/c-api/exceptions.rst:931 +#: ../Doc/c-api/exceptions.rst:952 msgid ":exc:`IndexError`" msgstr ":exc:`IndexError`" -#: ../Doc/c-api/exceptions.rst:933 +#: ../Doc/c-api/exceptions.rst:954 msgid ":c:data:`PyExc_InterruptedError`" msgstr ":c:data:`PyExc_InterruptedError`" -#: ../Doc/c-api/exceptions.rst:933 +#: ../Doc/c-api/exceptions.rst:954 msgid ":exc:`InterruptedError`" msgstr ":exc:`InterruptedError`" -#: ../Doc/c-api/exceptions.rst:935 +#: ../Doc/c-api/exceptions.rst:956 msgid ":c:data:`PyExc_IsADirectoryError`" msgstr ":c:data:`PyExc_IsADirectoryError`" -#: ../Doc/c-api/exceptions.rst:935 +#: ../Doc/c-api/exceptions.rst:956 msgid ":exc:`IsADirectoryError`" msgstr ":exc:`IsADirectoryError`" -#: ../Doc/c-api/exceptions.rst:937 +#: ../Doc/c-api/exceptions.rst:958 msgid ":c:data:`PyExc_KeyError`" msgstr ":c:data:`PyExc_KeyError`" -#: ../Doc/c-api/exceptions.rst:937 +#: ../Doc/c-api/exceptions.rst:958 msgid ":exc:`KeyError`" msgstr ":exc:`KeyError`" -#: ../Doc/c-api/exceptions.rst:939 +#: ../Doc/c-api/exceptions.rst:960 msgid ":c:data:`PyExc_KeyboardInterrupt`" msgstr ":c:data:`PyExc_KeyboardInterrupt`" -#: ../Doc/c-api/exceptions.rst:939 +#: ../Doc/c-api/exceptions.rst:960 msgid ":exc:`KeyboardInterrupt`" msgstr ":exc:`KeyboardInterrupt`" -#: ../Doc/c-api/exceptions.rst:941 +#: ../Doc/c-api/exceptions.rst:962 msgid ":c:data:`PyExc_LookupError`" msgstr ":c:data:`PyExc_LookupError`" -#: ../Doc/c-api/exceptions.rst:941 +#: ../Doc/c-api/exceptions.rst:962 msgid ":exc:`LookupError`" msgstr ":exc:`LookupError`" -#: ../Doc/c-api/exceptions.rst:943 +#: ../Doc/c-api/exceptions.rst:964 msgid ":c:data:`PyExc_MemoryError`" msgstr ":c:data:`PyExc_MemoryError`" -#: ../Doc/c-api/exceptions.rst:943 +#: ../Doc/c-api/exceptions.rst:964 msgid ":exc:`MemoryError`" msgstr ":exc:`MemoryError`" -#: ../Doc/c-api/exceptions.rst:945 +#: ../Doc/c-api/exceptions.rst:966 msgid ":c:data:`PyExc_ModuleNotFoundError`" msgstr ":c:data:`PyExc_ModuleNotFoundError`" -#: ../Doc/c-api/exceptions.rst:945 +#: ../Doc/c-api/exceptions.rst:966 msgid ":exc:`ModuleNotFoundError`" msgstr ":exc:`ModuleNotFoundError`" -#: ../Doc/c-api/exceptions.rst:947 +#: ../Doc/c-api/exceptions.rst:968 msgid ":c:data:`PyExc_NameError`" msgstr ":c:data:`PyExc_NameError`" -#: ../Doc/c-api/exceptions.rst:947 +#: ../Doc/c-api/exceptions.rst:968 msgid ":exc:`NameError`" msgstr ":exc:`NameError`" -#: ../Doc/c-api/exceptions.rst:949 +#: ../Doc/c-api/exceptions.rst:970 msgid ":c:data:`PyExc_NotADirectoryError`" msgstr ":c:data:`PyExc_NotADirectoryError`" -#: ../Doc/c-api/exceptions.rst:949 +#: ../Doc/c-api/exceptions.rst:970 msgid ":exc:`NotADirectoryError`" msgstr ":exc:`NotADirectoryError`" -#: ../Doc/c-api/exceptions.rst:951 +#: ../Doc/c-api/exceptions.rst:972 msgid ":c:data:`PyExc_NotImplementedError`" msgstr ":c:data:`PyExc_NotImplementedError`" -#: ../Doc/c-api/exceptions.rst:951 +#: ../Doc/c-api/exceptions.rst:972 msgid ":exc:`NotImplementedError`" msgstr ":exc:`NotImplementedError`" -#: ../Doc/c-api/exceptions.rst:953 +#: ../Doc/c-api/exceptions.rst:974 msgid ":c:data:`PyExc_OSError`" msgstr ":c:data:`PyExc_OSError`" -#: ../Doc/c-api/exceptions.rst:953 +#: ../Doc/c-api/exceptions.rst:974 msgid ":exc:`OSError`" msgstr ":exc:`OSError`" -#: ../Doc/c-api/exceptions.rst:955 +#: ../Doc/c-api/exceptions.rst:976 msgid ":c:data:`PyExc_OverflowError`" msgstr ":c:data:`PyExc_OverflowError`" -#: ../Doc/c-api/exceptions.rst:955 +#: ../Doc/c-api/exceptions.rst:976 msgid ":exc:`OverflowError`" msgstr ":exc:`OverflowError`" -#: ../Doc/c-api/exceptions.rst:957 +#: ../Doc/c-api/exceptions.rst:978 msgid ":c:data:`PyExc_PermissionError`" msgstr ":c:data:`PyExc_PermissionError`" -#: ../Doc/c-api/exceptions.rst:957 +#: ../Doc/c-api/exceptions.rst:978 msgid ":exc:`PermissionError`" msgstr ":exc:`PermissionError`" -#: ../Doc/c-api/exceptions.rst:959 +#: ../Doc/c-api/exceptions.rst:980 msgid ":c:data:`PyExc_ProcessLookupError`" msgstr ":c:data:`PyExc_ProcessLookupError`" -#: ../Doc/c-api/exceptions.rst:959 +#: ../Doc/c-api/exceptions.rst:980 msgid ":exc:`ProcessLookupError`" msgstr ":exc:`ProcessLookupError`" -#: ../Doc/c-api/exceptions.rst:961 +#: ../Doc/c-api/exceptions.rst:982 msgid ":c:data:`PyExc_RecursionError`" msgstr ":c:data:`PyExc_RecursionError`" -#: ../Doc/c-api/exceptions.rst:961 +#: ../Doc/c-api/exceptions.rst:982 msgid ":exc:`RecursionError`" msgstr ":exc:`RecursionError`" -#: ../Doc/c-api/exceptions.rst:963 +#: ../Doc/c-api/exceptions.rst:984 msgid ":c:data:`PyExc_ReferenceError`" msgstr ":c:data:`PyExc_ReferenceError`" -#: ../Doc/c-api/exceptions.rst:963 +#: ../Doc/c-api/exceptions.rst:984 msgid ":exc:`ReferenceError`" msgstr ":exc:`ReferenceError`" -#: ../Doc/c-api/exceptions.rst:963 -msgid "\\(2)" -msgstr "\\(2)" - -#: ../Doc/c-api/exceptions.rst:965 +#: ../Doc/c-api/exceptions.rst:986 msgid ":c:data:`PyExc_RuntimeError`" msgstr ":c:data:`PyExc_RuntimeError`" -#: ../Doc/c-api/exceptions.rst:965 +#: ../Doc/c-api/exceptions.rst:986 msgid ":exc:`RuntimeError`" msgstr ":exc:`RuntimeError`" -#: ../Doc/c-api/exceptions.rst:967 +#: ../Doc/c-api/exceptions.rst:988 msgid ":c:data:`PyExc_StopAsyncIteration`" msgstr ":c:data:`PyExc_StopAsyncIteration`" -#: ../Doc/c-api/exceptions.rst:967 +#: ../Doc/c-api/exceptions.rst:988 msgid ":exc:`StopAsyncIteration`" msgstr ":exc:`StopAsyncIteration`" -#: ../Doc/c-api/exceptions.rst:969 +#: ../Doc/c-api/exceptions.rst:990 msgid ":c:data:`PyExc_StopIteration`" msgstr ":c:data:`PyExc_StopIteration`" -#: ../Doc/c-api/exceptions.rst:969 +#: ../Doc/c-api/exceptions.rst:990 msgid ":exc:`StopIteration`" msgstr ":exc:`StopIteration`" -#: ../Doc/c-api/exceptions.rst:971 +#: ../Doc/c-api/exceptions.rst:992 msgid ":c:data:`PyExc_SyntaxError`" msgstr ":c:data:`PyExc_SyntaxError`" -#: ../Doc/c-api/exceptions.rst:971 +#: ../Doc/c-api/exceptions.rst:992 msgid ":exc:`SyntaxError`" msgstr ":exc:`SyntaxError`" -#: ../Doc/c-api/exceptions.rst:973 +#: ../Doc/c-api/exceptions.rst:994 msgid ":c:data:`PyExc_SystemError`" msgstr ":c:data:`PyExc_SystemError`" -#: ../Doc/c-api/exceptions.rst:973 +#: ../Doc/c-api/exceptions.rst:994 msgid ":exc:`SystemError`" msgstr ":exc:`SystemError`" -#: ../Doc/c-api/exceptions.rst:975 +#: ../Doc/c-api/exceptions.rst:996 msgid ":c:data:`PyExc_SystemExit`" msgstr ":c:data:`PyExc_SystemExit`" -#: ../Doc/c-api/exceptions.rst:975 +#: ../Doc/c-api/exceptions.rst:996 msgid ":exc:`SystemExit`" msgstr ":exc:`SystemExit`" -#: ../Doc/c-api/exceptions.rst:977 +#: ../Doc/c-api/exceptions.rst:998 msgid ":c:data:`PyExc_TabError`" msgstr ":c:data:`PyExc_TabError`" -#: ../Doc/c-api/exceptions.rst:977 +#: ../Doc/c-api/exceptions.rst:998 msgid ":exc:`TabError`" msgstr ":exc:`TabError`" -#: ../Doc/c-api/exceptions.rst:979 +#: ../Doc/c-api/exceptions.rst:1000 msgid ":c:data:`PyExc_TimeoutError`" msgstr ":c:data:`PyExc_TimeoutError`" -#: ../Doc/c-api/exceptions.rst:979 +#: ../Doc/c-api/exceptions.rst:1000 msgid ":exc:`TimeoutError`" msgstr ":exc:`TimeoutError`" -#: ../Doc/c-api/exceptions.rst:981 +#: ../Doc/c-api/exceptions.rst:1002 msgid ":c:data:`PyExc_TypeError`" msgstr ":c:data:`PyExc_TypeError`" -#: ../Doc/c-api/exceptions.rst:981 +#: ../Doc/c-api/exceptions.rst:1002 msgid ":exc:`TypeError`" msgstr ":exc:`TypeError`" -#: ../Doc/c-api/exceptions.rst:983 +#: ../Doc/c-api/exceptions.rst:1004 msgid ":c:data:`PyExc_UnboundLocalError`" msgstr ":c:data:`PyExc_UnboundLocalError`" -#: ../Doc/c-api/exceptions.rst:983 +#: ../Doc/c-api/exceptions.rst:1004 msgid ":exc:`UnboundLocalError`" msgstr ":exc:`UnboundLocalError`" -#: ../Doc/c-api/exceptions.rst:985 +#: ../Doc/c-api/exceptions.rst:1006 msgid ":c:data:`PyExc_UnicodeDecodeError`" msgstr ":c:data:`PyExc_UnicodeDecodeError`" -#: ../Doc/c-api/exceptions.rst:985 +#: ../Doc/c-api/exceptions.rst:1006 msgid ":exc:`UnicodeDecodeError`" msgstr ":exc:`UnicodeDecodeError`" -#: ../Doc/c-api/exceptions.rst:987 +#: ../Doc/c-api/exceptions.rst:1008 msgid ":c:data:`PyExc_UnicodeEncodeError`" msgstr ":c:data:`PyExc_UnicodeEncodeError`" -#: ../Doc/c-api/exceptions.rst:987 +#: ../Doc/c-api/exceptions.rst:1008 msgid ":exc:`UnicodeEncodeError`" msgstr ":exc:`UnicodeEncodeError`" -#: ../Doc/c-api/exceptions.rst:989 +#: ../Doc/c-api/exceptions.rst:1010 msgid ":c:data:`PyExc_UnicodeError`" msgstr ":c:data:`PyExc_UnicodeError`" -#: ../Doc/c-api/exceptions.rst:989 +#: ../Doc/c-api/exceptions.rst:1010 msgid ":exc:`UnicodeError`" msgstr ":exc:`UnicodeError`" -#: ../Doc/c-api/exceptions.rst:991 +#: ../Doc/c-api/exceptions.rst:1012 msgid ":c:data:`PyExc_UnicodeTranslateError`" msgstr ":c:data:`PyExc_UnicodeTranslateError`" -#: ../Doc/c-api/exceptions.rst:991 +#: ../Doc/c-api/exceptions.rst:1012 msgid ":exc:`UnicodeTranslateError`" msgstr ":exc:`UnicodeTranslateError`" -#: ../Doc/c-api/exceptions.rst:993 +#: ../Doc/c-api/exceptions.rst:1014 msgid ":c:data:`PyExc_ValueError`" msgstr ":c:data:`PyExc_ValueError`" -#: ../Doc/c-api/exceptions.rst:993 +#: ../Doc/c-api/exceptions.rst:1014 msgid ":exc:`ValueError`" msgstr ":exc:`ValueError`" -#: ../Doc/c-api/exceptions.rst:995 +#: ../Doc/c-api/exceptions.rst:1016 msgid ":c:data:`PyExc_ZeroDivisionError`" msgstr ":c:data:`PyExc_ZeroDivisionError`" -#: ../Doc/c-api/exceptions.rst:995 +#: ../Doc/c-api/exceptions.rst:1016 msgid ":exc:`ZeroDivisionError`" msgstr ":exc:`ZeroDivisionError`" -#: ../Doc/c-api/exceptions.rst:998 +#: ../Doc/c-api/exceptions.rst:1019 msgid "" ":c:data:`PyExc_BlockingIOError`, :c:data:`PyExc_BrokenPipeError`, :c:data:" "`PyExc_ChildProcessError`, :c:data:`PyExc_ConnectionError`, :c:data:" @@ -1746,47 +1761,47 @@ msgstr "" "`PyExc_PermissionError`, :c:data:`PyExc_ProcessLookupError` y :c:data:" "`PyExc_TimeoutError` fueron introducidos luego de :pep:`3151`." -#: ../Doc/c-api/exceptions.rst:1008 +#: ../Doc/c-api/exceptions.rst:1029 msgid ":c:data:`PyExc_StopAsyncIteration` and :c:data:`PyExc_RecursionError`." msgstr ":c:data:`PyExc_StopAsyncIteration` y :c:data:`PyExc_RecursionError`." -#: ../Doc/c-api/exceptions.rst:1011 +#: ../Doc/c-api/exceptions.rst:1032 msgid ":c:data:`PyExc_ModuleNotFoundError`." msgstr ":c:data:`PyExc_ModuleNotFoundError`." -#: ../Doc/c-api/exceptions.rst:1014 +#: ../Doc/c-api/exceptions.rst:1035 msgid "These are compatibility aliases to :c:data:`PyExc_OSError`:" msgstr "Estos son alias de compatibilidad para :c:data:`PyExc_OSError`:" -#: ../Doc/c-api/exceptions.rst:1024 +#: ../Doc/c-api/exceptions.rst:1045 msgid ":c:data:`PyExc_EnvironmentError`" msgstr ":c:data:`PyExc_EnvironmentError`" -#: ../Doc/c-api/exceptions.rst:1026 +#: ../Doc/c-api/exceptions.rst:1047 msgid ":c:data:`PyExc_IOError`" msgstr ":c:data:`PyExc_IOError`" -#: ../Doc/c-api/exceptions.rst:1028 +#: ../Doc/c-api/exceptions.rst:1049 msgid ":c:data:`PyExc_WindowsError`" msgstr ":c:data:`PyExc_WindowsError`" -#: ../Doc/c-api/exceptions.rst:1028 -msgid "\\(3)" -msgstr "\\(3)" +#: ../Doc/c-api/exceptions.rst:1049 +msgid "[2]_" +msgstr "" -#: ../Doc/c-api/exceptions.rst:1031 +#: ../Doc/c-api/exceptions.rst:1052 msgid "These aliases used to be separate exception types." msgstr "Estos alias solían ser tipos de excepción separados." -#: ../Doc/c-api/exceptions.rst:1034 ../Doc/c-api/exceptions.rst:1095 +#: ../Doc/c-api/exceptions.rst:1055 ../Doc/c-api/exceptions.rst:1116 msgid "Notes:" msgstr "Notas:" -#: ../Doc/c-api/exceptions.rst:1037 +#: ../Doc/c-api/exceptions.rst:1058 msgid "This is a base class for other standard exceptions." msgstr "Esta es una clase base para otras excepciones estándar." -#: ../Doc/c-api/exceptions.rst:1040 +#: ../Doc/c-api/exceptions.rst:1061 msgid "" "Only defined on Windows; protect code that uses this by testing that the " "preprocessor macro ``MS_WINDOWS`` is defined." @@ -1794,15 +1809,16 @@ msgstr "" "Solo se define en Windows; proteja el código que usa esto probando que la " "macro del preprocesador ``MS_WINDOWS`` está definida." -#: ../Doc/c-api/exceptions.rst:1046 +#: ../Doc/c-api/exceptions.rst:1067 msgid "Standard Warning Categories" msgstr "Categorías de advertencia estándar" -#: ../Doc/c-api/exceptions.rst:1048 +#: ../Doc/c-api/exceptions.rst:1069 +#, fuzzy msgid "" "All standard Python warning categories are available as global variables " "whose names are ``PyExc_`` followed by the Python exception name. These have " -"the type :c:type:`PyObject*`; they are all class objects. For completeness, " +"the type :c:expr:`PyObject*`; they are all class objects. For completeness, " "here are all the variables:" msgstr "" "Todas las categorías de advertencia estándar de Python están disponibles " @@ -1810,98 +1826,146 @@ msgstr "" "excepción de Python. Estos tienen el tipo :c:type:`PyObject*`; todos son " "objetos de clase. Para completar, aquí están todas las variables:" -#: ../Doc/c-api/exceptions.rst:1069 +#: ../Doc/c-api/exceptions.rst:1090 msgid ":c:data:`PyExc_Warning`" msgstr ":c:data:`PyExc_Warning`" -#: ../Doc/c-api/exceptions.rst:1069 +#: ../Doc/c-api/exceptions.rst:1090 msgid ":exc:`Warning`" msgstr ":exc:`Warning`" -#: ../Doc/c-api/exceptions.rst:1071 +#: ../Doc/c-api/exceptions.rst:1090 +msgid "[3]_" +msgstr "" + +#: ../Doc/c-api/exceptions.rst:1092 msgid ":c:data:`PyExc_BytesWarning`" msgstr ":c:data:`PyExc_BytesWarning`" -#: ../Doc/c-api/exceptions.rst:1071 +#: ../Doc/c-api/exceptions.rst:1092 msgid ":exc:`BytesWarning`" msgstr ":exc:`BytesWarning`" -#: ../Doc/c-api/exceptions.rst:1073 +#: ../Doc/c-api/exceptions.rst:1094 msgid ":c:data:`PyExc_DeprecationWarning`" msgstr ":c:data:`PyExc_DeprecationWarning`" -#: ../Doc/c-api/exceptions.rst:1073 +#: ../Doc/c-api/exceptions.rst:1094 msgid ":exc:`DeprecationWarning`" msgstr ":exc:`DeprecationWarning`" -#: ../Doc/c-api/exceptions.rst:1075 +#: ../Doc/c-api/exceptions.rst:1096 msgid ":c:data:`PyExc_FutureWarning`" msgstr ":c:data:`PyExc_FutureWarning`" -#: ../Doc/c-api/exceptions.rst:1075 +#: ../Doc/c-api/exceptions.rst:1096 msgid ":exc:`FutureWarning`" msgstr ":exc:`FutureWarning`" -#: ../Doc/c-api/exceptions.rst:1077 +#: ../Doc/c-api/exceptions.rst:1098 msgid ":c:data:`PyExc_ImportWarning`" msgstr ":c:data:`PyExc_ImportWarning`" -#: ../Doc/c-api/exceptions.rst:1077 +#: ../Doc/c-api/exceptions.rst:1098 msgid ":exc:`ImportWarning`" msgstr ":exc:`ImportWarning`" -#: ../Doc/c-api/exceptions.rst:1079 +#: ../Doc/c-api/exceptions.rst:1100 msgid ":c:data:`PyExc_PendingDeprecationWarning`" msgstr ":c:data:`PyExc_PendingDeprecationWarning`" -#: ../Doc/c-api/exceptions.rst:1079 +#: ../Doc/c-api/exceptions.rst:1100 msgid ":exc:`PendingDeprecationWarning`" msgstr ":exc:`PendingDeprecationWarning`" -#: ../Doc/c-api/exceptions.rst:1081 +#: ../Doc/c-api/exceptions.rst:1102 msgid ":c:data:`PyExc_ResourceWarning`" msgstr ":c:data:`PyExc_ResourceWarning`" -#: ../Doc/c-api/exceptions.rst:1081 +#: ../Doc/c-api/exceptions.rst:1102 msgid ":exc:`ResourceWarning`" msgstr ":exc:`ResourceWarning`" -#: ../Doc/c-api/exceptions.rst:1083 +#: ../Doc/c-api/exceptions.rst:1104 msgid ":c:data:`PyExc_RuntimeWarning`" msgstr ":c:data:`PyExc_RuntimeWarning`" -#: ../Doc/c-api/exceptions.rst:1083 +#: ../Doc/c-api/exceptions.rst:1104 msgid ":exc:`RuntimeWarning`" msgstr ":exc:`RuntimeWarning`" -#: ../Doc/c-api/exceptions.rst:1085 +#: ../Doc/c-api/exceptions.rst:1106 msgid ":c:data:`PyExc_SyntaxWarning`" msgstr ":c:data:`PyExc_SyntaxWarning`" -#: ../Doc/c-api/exceptions.rst:1085 +#: ../Doc/c-api/exceptions.rst:1106 msgid ":exc:`SyntaxWarning`" msgstr ":exc:`SyntaxWarning`" -#: ../Doc/c-api/exceptions.rst:1087 +#: ../Doc/c-api/exceptions.rst:1108 msgid ":c:data:`PyExc_UnicodeWarning`" msgstr ":c:data:`PyExc_UnicodeWarning`" -#: ../Doc/c-api/exceptions.rst:1087 +#: ../Doc/c-api/exceptions.rst:1108 msgid ":exc:`UnicodeWarning`" msgstr ":exc:`UnicodeWarning`" -#: ../Doc/c-api/exceptions.rst:1089 +#: ../Doc/c-api/exceptions.rst:1110 msgid ":c:data:`PyExc_UserWarning`" msgstr ":c:data:`PyExc_UserWarning`" -#: ../Doc/c-api/exceptions.rst:1089 +#: ../Doc/c-api/exceptions.rst:1110 msgid ":exc:`UserWarning`" msgstr ":exc:`UserWarning`" -#: ../Doc/c-api/exceptions.rst:1092 +#: ../Doc/c-api/exceptions.rst:1113 msgid ":c:data:`PyExc_ResourceWarning`." msgstr ":c:data:`PyExc_ResourceWarning`." -#: ../Doc/c-api/exceptions.rst:1098 +#: ../Doc/c-api/exceptions.rst:1119 msgid "This is a base class for other standard warning categories." msgstr "Esta es una clase base para otras categorías de advertencia estándar." + +#~ msgid "" +#~ "Create a :class:`UnicodeEncodeError` object with the attributes " +#~ "*encoding*, *object*, *length*, *start*, *end* and *reason*. *encoding* " +#~ "and *reason* are UTF-8 encoded strings." +#~ msgstr "" +#~ "Crea un objeto :class:`UnicodeEncodeError` con los atributos *encoding*, " +#~ "*object*, *length*, *start*, *end* y *reason*. *encoding* y *reason* son " +#~ "cadenas codificadas UTF-8." + +#~ msgid "3.11" +#~ msgstr "3.11" + +#~ msgid "" +#~ "``Py_UNICODE`` is deprecated since Python 3.3. Please migrate to " +#~ "``PyObject_CallFunction(PyExc_UnicodeEncodeError, \"sOnns\", ...)``." +#~ msgstr "" +#~ "``Py_UNICODE`` está obsoleto desde Python 3.3. Migre por favor a " +#~ "``PyObject_CallFunction(PyExc_UnicodeEncodeError, \"sOnns\", ...)``." + +#~ msgid "" +#~ "Create a :class:`UnicodeTranslateError` object with the attributes " +#~ "*object*, *length*, *start*, *end* and *reason*. *reason* is a UTF-8 " +#~ "encoded string." +#~ msgstr "" +#~ "Crea un objeto :class:`UnicodeTranslateError` con los atributos " +#~ "*encoding*, *object*, *length*, *start*, *end* y *reason*. *encoding* y " +#~ "*reason* son cadenas codificadas UTF-8." + +#~ msgid "" +#~ "``Py_UNICODE`` is deprecated since Python 3.3. Please migrate to " +#~ "``PyObject_CallFunction(PyExc_UnicodeTranslateError, \"Onns\", ...)``." +#~ msgstr "" +#~ "``Py_UNICODE`` está obsoleto desde Python 3.3. Migre por favor a " +#~ "``PyObject_CallFunction(PyExc_UnicodeTranslateError, \"sOnns\", ...)``." + +#~ msgid "\\(1)" +#~ msgstr "\\(1)" + +#~ msgid "\\(2)" +#~ msgstr "\\(2)" + +#~ msgid "\\(3)" +#~ msgstr "\\(3)" diff --git a/c-api/file.po b/c-api/file.po index 7fda015746..13ba4364d2 100644 --- a/c-api/file.po +++ b/c-api/file.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-03-19 11:16+0100\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-08-01 20:12+0200\n" "Last-Translator: Cristián Maureira-Fredes \n" "Language: es\n" @@ -19,17 +19,17 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.8.0\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/c-api/file.rst:6 msgid "File Objects" msgstr "Objetos archivo" #: ../Doc/c-api/file.rst:10 +#, fuzzy msgid "" "These APIs are a minimal emulation of the Python 2 C API for built-in file " -"objects, which used to rely on the buffered I/O (:c:type:`FILE*`) support " +"objects, which used to rely on the buffered I/O (:c:expr:`FILE*`) support " "from the C standard library. In Python 3, files and streams use the new :" "mod:`io` module, which defines several layers over the low-level unbuffered " "I/O of the operating system. The functions described below are convenience " @@ -81,8 +81,9 @@ msgid "Ignore *name* attribute." msgstr "Ignora el atributo *name*." #: ../Doc/c-api/file.rst:41 +#, fuzzy msgid "" -"Return the file descriptor associated with *p* as an :c:type:`int`. If the " +"Return the file descriptor associated with *p* as an :c:expr:`int`. If the " "object is an integer, its value is returned. If not, the object's :meth:" "`~io.IOBase.fileno` method is called if it exists; the method must return an " "integer, which is returned as the file descriptor value. Sets an exception " @@ -125,8 +126,9 @@ msgstr "" "parámetro a través del controlador proporcionado." #: ../Doc/c-api/file.rst:68 +#, fuzzy msgid "" -"The handler is a function of type :c:type:`PyObject *(\\*)(PyObject *path, " +"The handler is a function of type :c:expr:`PyObject *(\\*)(PyObject *path, " "void *userData)`, where *path* is guaranteed to be :c:type:`PyUnicodeObject`." msgstr "" "El controlador es una función de tipo :c:type:`PyObject *(\\*)(PyObject " diff --git a/c-api/float.po b/c-api/float.po index f73243005a..45319fea85 100644 --- a/c-api/float.po +++ b/c-api/float.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-03-19 11:16+0100\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-08-01 20:11+0200\n" "Last-Translator: Cristián Maureira-Fredes \n" "Language: es\n" @@ -19,8 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.8.0\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/c-api/float.rst:6 msgid "Floating Point Objects" @@ -74,8 +73,9 @@ msgstr "" "de error." #: ../Doc/c-api/float.rst:47 +#, fuzzy msgid "" -"Return a C :c:type:`double` representation of the contents of *pyfloat*. If " +"Return a C :c:expr:`double` representation of the contents of *pyfloat*. If " "*pyfloat* is not a Python floating point object but has a :meth:`__float__` " "method, this method will first be called to convert *pyfloat* into a float. " "If ``__float__()`` is not defined then it falls back to :meth:`__index__`. " @@ -95,8 +95,9 @@ msgid "Use :meth:`__index__` if available." msgstr "Utilice :meth:`__index__` si está disponible." #: ../Doc/c-api/float.rst:60 +#, fuzzy msgid "" -"Return a C :c:type:`double` representation of the contents of *pyfloat*, but " +"Return a C :c:expr:`double` representation of the contents of *pyfloat*, but " "without error checking." msgstr "" "Retorna una representación C :c:type:`double` de los contenidos de " @@ -113,16 +114,134 @@ msgstr "" "delgada alrededor del archivo de encabezado :file:`float.h`." #: ../Doc/c-api/float.rst:73 +#, fuzzy msgid "" -"Return the maximum representable finite float *DBL_MAX* as C :c:type:" +"Return the maximum representable finite float *DBL_MAX* as C :c:expr:" "`double`." msgstr "" "Retorna el máximo flotante finito representable *DBL_MAX* como C :c:type:" "`double`." #: ../Doc/c-api/float.rst:78 +#, fuzzy msgid "" -"Return the minimum normalized positive float *DBL_MIN* as C :c:type:`double`." +"Return the minimum normalized positive float *DBL_MIN* as C :c:expr:`double`." msgstr "" "Retorna el flotante positivo normalizado mínimo *DBL_MIN* como C :c:type:" "`double`." + +#: ../Doc/c-api/float.rst:82 +msgid "Pack and Unpack functions" +msgstr "" + +#: ../Doc/c-api/float.rst:84 +msgid "" +"The pack and unpack functions provide an efficient platform-independent way " +"to store floating-point values as byte strings. The Pack routines produce a " +"bytes string from a C :c:expr:`double`, and the Unpack routines produce a C :" +"c:expr:`double` from such a bytes string. The suffix (2, 4 or 8) specifies " +"the number of bytes in the bytes string." +msgstr "" + +#: ../Doc/c-api/float.rst:90 +msgid "" +"On platforms that appear to use IEEE 754 formats these functions work by " +"copying bits. On other platforms, the 2-byte format is identical to the IEEE " +"754 binary16 half-precision format, the 4-byte format (32-bit) is identical " +"to the IEEE 754 binary32 single precision format, and the 8-byte format to " +"the IEEE 754 binary64 double precision format, although the packing of INFs " +"and NaNs (if such things exist on the platform) isn't handled correctly, and " +"attempting to unpack a bytes string containing an IEEE INF or NaN will raise " +"an exception." +msgstr "" + +#: ../Doc/c-api/float.rst:99 +msgid "" +"On non-IEEE platforms with more precision, or larger dynamic range, than " +"IEEE 754 supports, not all values can be packed; on non-IEEE platforms with " +"less precision, or smaller dynamic range, not all values can be unpacked. " +"What happens in such cases is partly accidental (alas)." +msgstr "" + +#: ../Doc/c-api/float.rst:107 +msgid "Pack functions" +msgstr "" + +#: ../Doc/c-api/float.rst:109 +msgid "" +"The pack routines write 2, 4 or 8 bytes, starting at *p*. *le* is an :c:expr:" +"`int` argument, non-zero if you want the bytes string in little-endian " +"format (exponent last, at ``p+1``, ``p+3``, or ``p+6`` ``p+7``), zero if you " +"want big-endian format (exponent first, at *p*). The :c:data:`PY_BIG_ENDIAN` " +"constant can be used to use the native endian: it is equal to ``1`` on big " +"endian processor, or ``0`` on little endian processor." +msgstr "" + +#: ../Doc/c-api/float.rst:116 +msgid "" +"Return value: ``0`` if all is OK, ``-1`` if error (and an exception is set, " +"most likely :exc:`OverflowError`)." +msgstr "" + +#: ../Doc/c-api/float.rst:119 +msgid "There are two problems on non-IEEE platforms:" +msgstr "" + +#: ../Doc/c-api/float.rst:121 +msgid "What this does is undefined if *x* is a NaN or infinity." +msgstr "" + +#: ../Doc/c-api/float.rst:122 +msgid "``-0.0`` and ``+0.0`` produce the same bytes string." +msgstr "" + +#: ../Doc/c-api/float.rst:126 +msgid "Pack a C double as the IEEE 754 binary16 half-precision format." +msgstr "" + +#: ../Doc/c-api/float.rst:130 +msgid "Pack a C double as the IEEE 754 binary32 single precision format." +msgstr "" + +#: ../Doc/c-api/float.rst:134 +msgid "Pack a C double as the IEEE 754 binary64 double precision format." +msgstr "" + +#: ../Doc/c-api/float.rst:138 +msgid "Unpack functions" +msgstr "" + +#: ../Doc/c-api/float.rst:140 +msgid "" +"The unpack routines read 2, 4 or 8 bytes, starting at *p*. *le* is an :c:" +"expr:`int` argument, non-zero if the bytes string is in little-endian format " +"(exponent last, at ``p+1``, ``p+3`` or ``p+6`` and ``p+7``), zero if big-" +"endian (exponent first, at *p*). The :c:data:`PY_BIG_ENDIAN` constant can be " +"used to use the native endian: it is equal to ``1`` on big endian processor, " +"or ``0`` on little endian processor." +msgstr "" + +#: ../Doc/c-api/float.rst:147 +msgid "" +"Return value: The unpacked double. On error, this is ``-1.0`` and :c:func:" +"`PyErr_Occurred` is true (and an exception is set, most likely :exc:" +"`OverflowError`)." +msgstr "" + +#: ../Doc/c-api/float.rst:151 +msgid "" +"Note that on a non-IEEE platform this will refuse to unpack a bytes string " +"that represents a NaN or infinity." +msgstr "" + +#: ../Doc/c-api/float.rst:156 +msgid "Unpack the IEEE 754 binary16 half-precision format as a C double." +msgstr "" + +#: ../Doc/c-api/float.rst:160 +msgid "Unpack the IEEE 754 binary32 single precision format as a C double." +msgstr "" + +#: ../Doc/c-api/float.rst:164 +msgid "Unpack the IEEE 754 binary64 double precision format as a C double." +msgstr "" diff --git a/c-api/frame.po b/c-api/frame.po new file mode 100644 index 0000000000..6be633ebe8 --- /dev/null +++ b/c-api/frame.po @@ -0,0 +1,107 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2001-2022, Python Software Foundation +# This file is distributed under the same license as the Python en Español +# package. +# FIRST AUTHOR , 2022. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Python en Español 3.11\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-10-25 19:47+0200\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" +"Generated-By: Babel 2.10.3\n" + +#: ../Doc/c-api/frame.rst:4 +msgid "Frame Objects" +msgstr "" + +#: ../Doc/c-api/frame.rst:8 +msgid "The C structure of the objects used to describe frame objects." +msgstr "" + +#: ../Doc/c-api/frame.rst:10 +msgid "There are no public members in this structure." +msgstr "" + +#: ../Doc/c-api/frame.rst:12 +msgid "" +"The members of this structure were removed from the public C API. Refer to " +"the :ref:`What's New entry ` for details." +msgstr "" + +#: ../Doc/c-api/frame.rst:17 +msgid "" +"The :c:func:`PyEval_GetFrame` and :c:func:`PyThreadState_GetFrame` functions " +"can be used to get a frame object." +msgstr "" + +#: ../Doc/c-api/frame.rst:20 +msgid "See also :ref:`Reflection `." +msgstr "" + +#: ../Doc/c-api/frame.rst:25 +msgid "Get the *frame* next outer frame." +msgstr "" + +#: ../Doc/c-api/frame.rst:27 +msgid "" +"Return a :term:`strong reference`, or ``NULL`` if *frame* has no outer frame." +msgstr "" + +#: ../Doc/c-api/frame.rst:35 +msgid "Get the *frame*'s ``f_builtins`` attribute." +msgstr "" + +#: ../Doc/c-api/frame.rst:37 ../Doc/c-api/frame.rst:68 +msgid "Return a :term:`strong reference`. The result cannot be ``NULL``." +msgstr "" + +#: ../Doc/c-api/frame.rst:44 +msgid "Get the *frame* code." +msgstr "" + +#: ../Doc/c-api/frame.rst:46 ../Doc/c-api/frame.rst:86 +msgid "Return a :term:`strong reference`." +msgstr "" + +#: ../Doc/c-api/frame.rst:48 +msgid "The result (frame code) cannot be ``NULL``." +msgstr "" + +#: ../Doc/c-api/frame.rst:55 +msgid "" +"Get the generator, coroutine, or async generator that owns this frame, or " +"``NULL`` if this frame is not owned by a generator. Does not raise an " +"exception, even if the return value is ``NULL``." +msgstr "" + +#: ../Doc/c-api/frame.rst:59 +msgid "Return a :term:`strong reference`, or ``NULL``." +msgstr "" + +#: ../Doc/c-api/frame.rst:66 +msgid "Get the *frame*'s ``f_globals`` attribute." +msgstr "" + +#: ../Doc/c-api/frame.rst:75 +msgid "Get the *frame*'s ``f_lasti`` attribute." +msgstr "" + +#: ../Doc/c-api/frame.rst:77 +msgid "Returns -1 if ``frame.f_lasti`` is ``None``." +msgstr "" + +#: ../Doc/c-api/frame.rst:84 +msgid "Get the *frame*'s ``f_locals`` attribute (:class:`dict`)." +msgstr "" + +#: ../Doc/c-api/frame.rst:93 +msgid "Return the line number that *frame* is currently executing." +msgstr "" diff --git a/c-api/function.po b/c-api/function.po index 6af56d2e99..f583c9d876 100644 --- a/c-api/function.po +++ b/c-api/function.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-12-09 10:29+0800\n" "Last-Translator: Rodrigo Tobar \n" "Language: es\n" @@ -19,8 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/c-api/function.rst:6 msgid "Function Objects" @@ -65,38 +64,40 @@ msgstr "" "la función." #: ../Doc/c-api/function.rst:37 +#, fuzzy msgid "" "The function's docstring and name are retrieved from the code object. " "*__module__* is retrieved from *globals*. The argument defaults, annotations " "and closure are set to ``NULL``. *__qualname__* is set to the same value as " -"the function's name." +"the code object's ``co_qualname`` field." msgstr "" "El docstring y el nombre de la función se obtiene del objeto código. " "*__module__* se obtiene de *globals *. El argumento *defaults*, " "*annotations* y *closure* se establecen en ``NULL``. *__qualname__* se " "establece en el mismo valor que el nombre de la función." -#: ../Doc/c-api/function.rst:44 +#: ../Doc/c-api/function.rst:45 +#, fuzzy msgid "" "As :c:func:`PyFunction_New`, but also allows setting the function object's " "``__qualname__`` attribute. *qualname* should be a unicode object or " "``NULL``; if ``NULL``, the ``__qualname__`` attribute is set to the same " -"value as its ``__name__`` attribute." +"value as the code object's ``co_qualname`` field." msgstr "" "Como :c:func:`PyFunction_New`, pero también permite configurar el atributo " "``__qualname__`` del objeto función. *qualname* debe ser un objeto unicode o " "``NULL``; si es ``NULL``, el atributo ``__qualname__`` se establece en el " "mismo valor que su atributo ``__name__``." -#: ../Doc/c-api/function.rst:54 +#: ../Doc/c-api/function.rst:55 msgid "Return the code object associated with the function object *op*." msgstr "Retorna el objeto código asociado con el objeto función *op*." -#: ../Doc/c-api/function.rst:59 +#: ../Doc/c-api/function.rst:60 msgid "Return the globals dictionary associated with the function object *op*." msgstr "Retorna el diccionario global asociado con el objeto función *op*." -#: ../Doc/c-api/function.rst:64 +#: ../Doc/c-api/function.rst:65 msgid "" "Return a :term:`borrowed reference` to the *__module__* attribute of the " "function object *op*. It can be *NULL*." @@ -104,7 +105,7 @@ msgstr "" "Retorna una referencia tomada (:term:`borrowed reference`) al atributo " "*__module__* del objeto función *op*. Puede ser *NULL*." -#: ../Doc/c-api/function.rst:67 +#: ../Doc/c-api/function.rst:68 msgid "" "This is normally a string containing the module name, but can be set to any " "other object by Python code." @@ -113,7 +114,7 @@ msgstr "" "módulo, pero se puede establecer en cualquier otro objeto mediante código " "Python." -#: ../Doc/c-api/function.rst:73 +#: ../Doc/c-api/function.rst:74 msgid "" "Return the argument default values of the function object *op*. This can be " "a tuple of arguments or ``NULL``." @@ -121,7 +122,7 @@ msgstr "" "Retorna los valores predeterminados del argumento del objeto función *op*. " "Esto puede ser una tupla de argumentos o ``NULL``." -#: ../Doc/c-api/function.rst:79 +#: ../Doc/c-api/function.rst:80 msgid "" "Set the argument default values for the function object *op*. *defaults* " "must be ``Py_None`` or a tuple." @@ -129,12 +130,12 @@ msgstr "" "Establece los valores predeterminados del argumento para el objeto función " "*op*. *defaults* deben ser ``Py_None`` o una tupla." -#: ../Doc/c-api/function.rst:82 ../Doc/c-api/function.rst:96 -#: ../Doc/c-api/function.rst:110 +#: ../Doc/c-api/function.rst:83 ../Doc/c-api/function.rst:97 +#: ../Doc/c-api/function.rst:111 msgid "Raises :exc:`SystemError` and returns ``-1`` on failure." msgstr "Lanza :exc:`SystemError` y retorna ``-1`` en caso de error." -#: ../Doc/c-api/function.rst:87 +#: ../Doc/c-api/function.rst:88 msgid "" "Return the closure associated with the function object *op*. This can be " "``NULL`` or a tuple of cell objects." @@ -142,7 +143,7 @@ msgstr "" "Retorna el cierre asociado con el objeto función *op*. Esto puede ser " "``NULL`` o una tupla de objetos celda." -#: ../Doc/c-api/function.rst:93 +#: ../Doc/c-api/function.rst:94 msgid "" "Set the closure associated with the function object *op*. *closure* must be " "``Py_None`` or a tuple of cell objects." @@ -150,7 +151,7 @@ msgstr "" "Establece el cierre asociado con el objeto función *op*. *cierre* debe ser " "``Py_None`` o una tupla de objetos celda." -#: ../Doc/c-api/function.rst:101 +#: ../Doc/c-api/function.rst:102 msgid "" "Return the annotations of the function object *op*. This can be a mutable " "dictionary or ``NULL``." @@ -158,7 +159,7 @@ msgstr "" "Retorna las anotaciones del objeto función *op*. Este puede ser un " "diccionario mutable o ``NULL``." -#: ../Doc/c-api/function.rst:107 +#: ../Doc/c-api/function.rst:108 msgid "" "Set the annotations for the function object *op*. *annotations* must be a " "dictionary or ``Py_None``." diff --git a/c-api/gcsupport.po b/c-api/gcsupport.po index 97112b1c07..3f8e453875 100644 --- a/c-api/gcsupport.po +++ b/c-api/gcsupport.po @@ -29,11 +29,11 @@ msgstr "Apoyo a la recolección de basura cíclica" #: ../Doc/c-api/gcsupport.rst:8 msgid "" "Python's support for detecting and collecting garbage which involves " -"circular references requires support from object types which are \"containers" -"\" for other objects which may also be containers. Types which do not store " -"references to other objects, or which only store references to atomic types " -"(such as numbers or strings), do not need to provide any explicit support " -"for garbage collection." +"circular references requires support from object types which are " +"\"containers\" for other objects which may also be containers. Types which " +"do not store references to other objects, or which only store references to " +"atomic types (such as numbers or strings), do not need to provide any " +"explicit support for garbage collection." msgstr "" "El soporte de Python para detectar y recolectar basura que involucra " "referencias circulares requiere el soporte de tipos de objetos que son " diff --git a/c-api/import.po b/c-api/import.po index ca6ae26d1d..c2203d5d78 100644 --- a/c-api/import.po +++ b/c-api/import.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-10-28 21:28-0500\n" "Last-Translator: Cristián Maureira-Fredes \n" "Language: es\n" @@ -19,8 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/c-api/import.rst:6 msgid "Importing Modules" @@ -400,9 +399,16 @@ msgstr "" "(ver :file:`Tools/freeze` en la distribución de código fuente de Python). Su " "definición, que se encuentra en :file:`Include/import.h`, es::" -#: ../Doc/c-api/import.rst:264 +#: ../Doc/c-api/import.rst:262 msgid "" -"This pointer is initialized to point to an array of :c:type:`struct _frozen` " +"The new ``is_package`` field indicates whether the module is a package or " +"not. This replaces setting the ``size`` field to a negative value." +msgstr "" + +#: ../Doc/c-api/import.rst:268 +#, fuzzy +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 " "frozen module is imported, it is searched in this table. Third-party code " "could play tricks with this to provide a dynamically created collection of " @@ -414,7 +420,7 @@ msgstr "" "código de terceros podría jugar trucos con esto para proporcionar una " "colección de módulos congelados creada dinámicamente." -#: ../Doc/c-api/import.rst:272 +#: ../Doc/c-api/import.rst:276 msgid "" "Add a single module to the existing table of built-in modules. This is a " "convenience wrapper around :c:func:`PyImport_ExtendInittab`, returning " @@ -430,7 +436,7 @@ msgstr "" "inicialización llamada en el primer intento de importación. Esto debería " "llamarse antes de :c:func:`Py_Initialize`." -#: ../Doc/c-api/import.rst:282 +#: ../Doc/c-api/import.rst:286 msgid "" "Structure describing a single entry in the list of built-in modules. Each " "of these structures gives the name and initialization function for a module " @@ -447,7 +453,7 @@ msgstr "" "func:`PyImport_ExtendInittab` para proporcionar módulos integrados " "adicionales. La estructura se define en :file:`Include/import.h` como::" -#: ../Doc/c-api/import.rst:297 +#: ../Doc/c-api/import.rst:301 msgid "" "Add a collection of modules to the table of built-in modules. The *newtab* " "array must end with a sentinel entry which contains ``NULL`` for the :attr:" @@ -465,7 +471,7 @@ msgstr "" "error, no se agregan módulos a la tabla interna. Esta función debe ser " "llamada antes de :c:func:`Py_Initialize`." -#: ../Doc/c-api/import.rst:304 +#: ../Doc/c-api/import.rst:308 msgid "" "If Python is initialized multiple times, :c:func:`PyImport_AppendInittab` " "or :c:func:`PyImport_ExtendInittab` must be called before each Python " diff --git a/c-api/init.po b/c-api/init.po index 73e43a90c4..af24893bbd 100644 --- a/c-api/init.po +++ b/c-api/init.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-10-21 00:37-0300\n" "Last-Translator: CatalinaArrey \n" "Language: es\n" @@ -19,8 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/c-api/init.rst:8 msgid "Initialization, Finalization, and Threads" @@ -271,7 +270,8 @@ msgstr "" "c:func:`Py_GetPath`." #: ../Doc/c-api/init.rst:113 -msgid "Private flag used by ``_freeze_importlib`` and ``frozenmain`` programs." +#, fuzzy +msgid "Private flag used by ``_freeze_module`` and ``frozenmain`` programs." msgstr "" "Indicador privado utilizado por los programas ``_freeze_importlib`` y " "``frozenmain``." @@ -623,6 +623,13 @@ msgstr "Parámetros de todo el proceso" #: ../Doc/c-api/init.rst:326 msgid "" +"This API is kept for backward compatibility: setting :c:member:`PyConfig." +"stdio_encoding` and :c:member:`PyConfig.stdio_errors` should be used " +"instead, see :ref:`Python Initialization Configuration `." +msgstr "" + +#: ../Doc/c-api/init.rst:331 +msgid "" "This function should be called before :c:func:`Py_Initialize`, if it is " "called at all. It specifies which encoding and error handling to use with " "standard IO, with the same meanings as in :func:`str.encode`." @@ -631,7 +638,7 @@ msgstr "" "llama. Especifica qué codificación y manejo de errores usar con IO estándar, " "con los mismos significados que en :func:`str.encode`." -#: ../Doc/c-api/init.rst:330 +#: ../Doc/c-api/init.rst:335 msgid "" "It overrides :envvar:`PYTHONIOENCODING` values, and allows embedding code to " "control IO encoding when the environment variable does not work." @@ -639,7 +646,7 @@ msgstr "" "Reemplaza los valores :envvar:`PYTHONIOENCODING`, y permite incrustar código " "para controlar la codificación IO cuando la variable de entorno no funciona." -#: ../Doc/c-api/init.rst:333 +#: ../Doc/c-api/init.rst:338 msgid "" "*encoding* and/or *errors* may be ``NULL`` to use :envvar:`PYTHONIOENCODING` " "and/or default values (depending on other settings)." @@ -648,7 +655,7 @@ msgstr "" "`PYTHONIOENCODING` o valores predeterminados (dependiendo de otras " "configuraciones)." -#: ../Doc/c-api/init.rst:337 +#: ../Doc/c-api/init.rst:342 msgid "" "Note that :data:`sys.stderr` always uses the \"backslashreplace\" error " "handler, regardless of this (or any other) setting." @@ -657,7 +664,7 @@ msgstr "" "\"*backslashreplace*\", independientemente de esta configuración (o " "cualquier otra)." -#: ../Doc/c-api/init.rst:340 +#: ../Doc/c-api/init.rst:345 msgid "" "If :c:func:`Py_FinalizeEx` is called, this function will need to be called " "again in order to affect subsequent calls to :c:func:`Py_Initialize`." @@ -665,7 +672,7 @@ msgstr "" "Si se llama a :c:func:`Py_FinalizeEx`, será necesario volver a llamar a esta " "función para afectar las llamadas posteriores a :c:func:`Py_Initialize`." -#: ../Doc/c-api/init.rst:343 +#: ../Doc/c-api/init.rst:348 msgid "" "Returns ``0`` if successful, a nonzero value on error (e.g. calling after " "the interpreter has already been initialized)." @@ -673,7 +680,14 @@ msgstr "" "Retorna ``0`` si tiene éxito, un valor distinto de cero en caso de error " "(por ejemplo, llamar después de que el intérprete ya se haya inicializado)" -#: ../Doc/c-api/init.rst:356 +#: ../Doc/c-api/init.rst:363 +msgid "" +"This API is kept for backward compatibility: setting :c:member:`PyConfig." +"program_name` should be used instead, see :ref:`Python Initialization " +"Configuration `." +msgstr "" + +#: ../Doc/c-api/init.rst:367 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 " @@ -697,17 +711,18 @@ msgstr "" "contenido no cambiará mientras dure la ejecución del programa. Ningún código " "en el intérprete de Python cambiará el contenido de este almacenamiento." -#: ../Doc/c-api/init.rst:367 ../Doc/c-api/init.rst:511 -#: ../Doc/c-api/init.rst:617 ../Doc/c-api/init.rst:644 -#: ../Doc/c-api/init.rst:661 +#: ../Doc/c-api/init.rst:378 ../Doc/c-api/init.rst:529 +#: ../Doc/c-api/init.rst:644 ../Doc/c-api/init.rst:680 +#: ../Doc/c-api/init.rst:706 +#, fuzzy msgid "" -"Use :c:func:`Py_DecodeLocale` to decode a bytes string to get a :c:type:" +"Use :c:func:`Py_DecodeLocale` to decode a bytes string to get a :c:expr:" "`wchar_*` string." msgstr "" "Use :c:func:`Py_DecodeLocale` para decodificar una cadena de bytes para " "obtener una cadena :c:type:`wchar_ *`." -#: ../Doc/c-api/init.rst:375 +#: ../Doc/c-api/init.rst:388 msgid "" "Return the program name set with :c:func:`Py_SetProgramName`, or the " "default. The returned string points into static storage; the caller should " @@ -717,9 +732,9 @@ msgstr "" "o el valor predeterminado. La cadena de caracteres retornada apunta al " "almacenamiento estático; la persona que llama no debe modificar su valor." -#: ../Doc/c-api/init.rst:379 ../Doc/c-api/init.rst:398 -#: ../Doc/c-api/init.rst:439 ../Doc/c-api/init.rst:458 -#: ../Doc/c-api/init.rst:482 ../Doc/c-api/init.rst:671 +#: ../Doc/c-api/init.rst:392 ../Doc/c-api/init.rst:411 +#: ../Doc/c-api/init.rst:452 ../Doc/c-api/init.rst:471 +#: ../Doc/c-api/init.rst:495 ../Doc/c-api/init.rst:718 msgid "" "This function should not be called before :c:func:`Py_Initialize`, otherwise " "it returns ``NULL``." @@ -727,15 +742,15 @@ msgstr "" "Esta función ya no se puede llamar antes de :c:func:`Py_Initialize()`, de " "otra forma retornará ``NULL``." -#: ../Doc/c-api/init.rst:382 ../Doc/c-api/init.rst:401 -#: ../Doc/c-api/init.rst:442 ../Doc/c-api/init.rst:461 -#: ../Doc/c-api/init.rst:487 ../Doc/c-api/init.rst:674 +#: ../Doc/c-api/init.rst:395 ../Doc/c-api/init.rst:414 +#: ../Doc/c-api/init.rst:455 ../Doc/c-api/init.rst:474 +#: ../Doc/c-api/init.rst:500 ../Doc/c-api/init.rst:721 msgid "It now returns ``NULL`` if called before :c:func:`Py_Initialize`." msgstr "" "Todas las siguientes funciones deben llamarse después de :c:func:" "`Py_Initialize`, de lo contrario retornará ``NULL``." -#: ../Doc/c-api/init.rst:388 +#: ../Doc/c-api/init.rst:401 msgid "" "Return the *prefix* for installed platform-independent files. This is " "derived through a number of complicated rules from the program name set " @@ -760,7 +775,7 @@ msgstr "" "compilación. El valor está disponible para el código de Python como ``sys." "prefix``. Solo es útil en Unix. Ver también la siguiente función." -#: ../Doc/c-api/init.rst:407 +#: ../Doc/c-api/init.rst:420 msgid "" "Return the *exec-prefix* for installed platform-*dependent* files. This is " "derived through a number of complicated rules from the program name set " @@ -785,7 +800,7 @@ msgstr "" "`configure` en tiempo de compilación. El valor está disponible para el " "código de Python como ``sys.exec_prefix``. Solo es útil en Unix." -#: ../Doc/c-api/init.rst:417 +#: ../Doc/c-api/init.rst:430 msgid "" "Background: The exec-prefix differs from the prefix when platform dependent " "files (such as executables and shared libraries) are installed in a " @@ -800,7 +815,7 @@ msgstr "" "file:`/usr/local/plat` mientras que la plataforma independiente puede " "instalarse en :file:`/usr/local`." -#: ../Doc/c-api/init.rst:423 +#: ../Doc/c-api/init.rst:436 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 " @@ -826,7 +841,7 @@ msgstr "" "compilados de Python son independientes de la plataforma (¡pero no " "independientes de la versión de Python con la que fueron compilados!)." -#: ../Doc/c-api/init.rst:434 +#: ../Doc/c-api/init.rst:447 msgid "" "System administrators will know how to configure the :program:`mount` or :" "program:`automount` programs to share :file:`/usr/local` between platforms " @@ -838,7 +853,7 @@ msgstr "" "entre plataformas mientras que :file:`/usr/local/plat` sea un sistema de " "archivos diferente para cada plataforma." -#: ../Doc/c-api/init.rst:452 +#: ../Doc/c-api/init.rst:465 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 " @@ -853,7 +868,7 @@ msgstr "" "almacenamiento estático; la persona que llama no debe modificar su valor. El " "valor está disponible para el código de Python como ``sys.executable``." -#: ../Doc/c-api/init.rst:472 +#: ../Doc/c-api/init.rst:485 msgid "" "Return the default module search path; this is computed from the program " "name (set by :c:func:`Py_SetProgramName` above) and some environment " @@ -876,8 +891,17 @@ msgstr "" "en el inicio del intérprete; se puede (y generalmente se realiza) modificar " "más adelante para cambiar la ruta de búsqueda para cargar módulos." -# Actualmente se está usando el sistema operativo macOS, mientras que Mac OS X es un versión más antigua de la misma. -#: ../Doc/c-api/init.rst:498 +#: ../Doc/c-api/init.rst:511 +msgid "" +"This API is kept for backward compatibility: setting :c:member:`PyConfig." +"module_search_paths` and :c:member:`PyConfig.module_search_paths_set` should " +"be used instead, see :ref:`Python Initialization Configuration `." +msgstr "" + +# Actualmente se está usando el sistema operativo macOS, mientras que Mac OS X +# es un versión más antigua de la misma. +#: ../Doc/c-api/init.rst:516 msgid "" "Set the default module search path. If this function is called before :c:" "func:`Py_Initialize`, then :c:func:`Py_GetPath` won't attempt to compute a " @@ -896,7 +920,7 @@ msgstr "" "delimitador dependiente de la plataforma, el cual es ``':'`` en Unix y " "macOS, ``';'`` en Windows." -#: ../Doc/c-api/init.rst:506 +#: ../Doc/c-api/init.rst:524 msgid "" "This also causes :data:`sys.executable` to be set to the program full path " "(see :c:func:`Py_GetProgramFullPath`) and for :data:`sys.prefix` and :data:" @@ -909,7 +933,7 @@ msgstr "" "persona que llama modificarlos si es necesario después de llamar :c:func:" "`Py_Initialize`." -#: ../Doc/c-api/init.rst:514 +#: ../Doc/c-api/init.rst:532 msgid "" "The path argument is copied internally, so the caller may free it after the " "call completes." @@ -917,7 +941,7 @@ msgstr "" "El argumento de ruta se copia internamente, por lo que la persona que llama " "puede liberarlo después de que se complete la llamada." -#: ../Doc/c-api/init.rst:517 +#: ../Doc/c-api/init.rst:535 msgid "" "The program full path is now used for :data:`sys.executable`, instead of the " "program name." @@ -925,7 +949,7 @@ msgstr "" "La ruta completa del programa ahora se usa para :data:`sys.executable`, en " "lugar del nombre del programa." -#: ../Doc/c-api/init.rst:524 +#: ../Doc/c-api/init.rst:544 msgid "" "Return the version of this Python interpreter. This is a string that looks " "something like ::" @@ -933,13 +957,14 @@ msgstr "" "Retorna la versión de este intérprete de Python. Esta es una cadena de " "caracteres que se parece a ::" -#: ../Doc/c-api/init.rst:531 +#: ../Doc/c-api/init.rst:551 +#, fuzzy msgid "" "The first word (up to the first space character) is the current Python " -"version; the first three characters are the major and minor version " -"separated by a period. The returned string points into static storage; the " -"caller should not modify its value. The value is available to Python code " -"as :data:`sys.version`." +"version; the first characters are the major and minor version separated by a " +"period. The returned string points into static storage; the caller should " +"not modify its value. The value is available to Python code as :data:`sys." +"version`." msgstr "" "La primera palabra (hasta el primer carácter de espacio) es la versión " "actual de Python; los primeros tres caracteres son la versión mayor y menor " @@ -947,7 +972,11 @@ msgstr "" "almacenamiento estático; la persona que llama no debe modificar su valor. El " "valor está disponible para el código Python como :data:`sys.version`." -#: ../Doc/c-api/init.rst:541 +#: ../Doc/c-api/init.rst:556 +msgid "See also the :c:var:`Py_Version` constant." +msgstr "" + +#: ../Doc/c-api/init.rst:563 msgid "" "Return the platform identifier for the current platform. On Unix, this is " "formed from the \"official\" name of the operating system, converted to " @@ -966,7 +995,7 @@ msgstr "" "que llama no debe modificar su valor. El valor está disponible para el " "código de Python como ``sys.platform``." -#: ../Doc/c-api/init.rst:552 +#: ../Doc/c-api/init.rst:574 msgid "" "Return the official copyright string for the current Python version, for " "example" @@ -974,11 +1003,11 @@ msgstr "" "Retorna la cadena de caracteres de copyright oficial para la versión actual " "de Python, por ejemplo" -#: ../Doc/c-api/init.rst:554 +#: ../Doc/c-api/init.rst:576 msgid "``'Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam'``" msgstr "``'Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam'``" -#: ../Doc/c-api/init.rst:558 +#: ../Doc/c-api/init.rst:580 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``." @@ -987,7 +1016,7 @@ msgstr "" "persona que llama no debe modificar su valor. El valor está disponible para " "el código de Python como ``sys.copyright``." -#: ../Doc/c-api/init.rst:564 +#: ../Doc/c-api/init.rst:586 msgid "" "Return an indication of the compiler used to build the current Python " "version, in square brackets, for example::" @@ -995,7 +1024,7 @@ msgstr "" "Retorna una indicación del compilador utilizado para construir la versión " "actual de Python, entre corchetes, por ejemplo:" -#: ../Doc/c-api/init.rst:571 ../Doc/c-api/init.rst:585 +#: ../Doc/c-api/init.rst:593 ../Doc/c-api/init.rst:607 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 " @@ -1005,7 +1034,7 @@ msgstr "" "persona que llama no debe modificar su valor. El valor está disponible para " "el código Python como parte de la variable ``sys.version``." -#: ../Doc/c-api/init.rst:578 +#: ../Doc/c-api/init.rst:600 msgid "" "Return information about the sequence number and build date and time of the " "current Python interpreter instance, for example ::" @@ -1013,7 +1042,15 @@ msgstr "" "Retorna información sobre el número de secuencia y la fecha y hora de " "compilación de la instancia actual de intérprete de Python, por ejemplo::" -#: ../Doc/c-api/init.rst:597 +#: ../Doc/c-api/init.rst:619 +msgid "" +"This API is kept for backward compatibility: setting :c:member:`PyConfig." +"argv`, :c:member:`PyConfig.parse_argv` and :c:member:`PyConfig.safe_path` " +"should be used instead, see :ref:`Python Initialization Configuration `." +msgstr "" + +#: ../Doc/c-api/init.rst:624 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 " @@ -1032,7 +1069,7 @@ msgstr "" "caracteres vacía. Si esta función no puede inicializar :data:`sys.argv`, una " "condición fatal se señala usando :c:func:`Py_FatalError`." -#: ../Doc/c-api/init.rst:605 +#: ../Doc/c-api/init.rst:632 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 " @@ -1042,7 +1079,7 @@ msgstr "" "*updatepath* no es cero, la función también modifica :data:`sys.path` de " "acuerdo con el siguiente algoritmo:" -#: ../Doc/c-api/init.rst:609 +#: ../Doc/c-api/init.rst:636 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." @@ -1052,7 +1089,7 @@ msgstr "" "``argv[0]``, la ruta absoluta del directorio donde se encuentra el *script* " "se antepone a :data:`sys.path`." -#: ../Doc/c-api/init.rst:612 +#: ../Doc/c-api/init.rst:639 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 " @@ -1063,7 +1100,13 @@ msgstr "" "data:`sys.path`, que es lo mismo que anteponer el directorio de trabajo " "actual (``\".\"``)." -#: ../Doc/c-api/init.rst:621 +#: ../Doc/c-api/init.rst:647 ../Doc/c-api/init.rst:683 +msgid "" +"See also :c:member:`PyConfig.orig_argv` and :c:member:`PyConfig.argv` " +"members of the :ref:`Python Initialization Configuration `." +msgstr "" + +#: ../Doc/c-api/init.rst:651 msgid "" "It is recommended that applications embedding the Python interpreter for " "purposes other than executing a single script pass ``0`` as *updatepath*, " @@ -1076,7 +1119,7 @@ msgstr "" "desean. Ver `CVE-2008-5983 ` _." -#: ../Doc/c-api/init.rst:626 +#: ../Doc/c-api/init.rst:656 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:" @@ -1086,7 +1129,14 @@ msgstr "" "manualmente el primer elemento (*popping*) :data:`sys.path` después de haber " "llamado :c:func:`PySys_SetArgv`, por ejemplo usando ::" -#: ../Doc/c-api/init.rst:640 +#: ../Doc/c-api/init.rst:672 +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 "" + +#: ../Doc/c-api/init.rst:676 msgid "" "This function works like :c:func:`PySys_SetArgvEx` with *updatepath* set to " "``1`` unless the :program:`python` interpreter was started with the :option:" @@ -1096,11 +1146,18 @@ msgstr "" "establecido en ``1`` a menos que el intérprete :program:`python` se haya " "iniciado con la opción :option:`-I`." -#: ../Doc/c-api/init.rst:647 +#: ../Doc/c-api/init.rst:686 msgid "The *updatepath* value depends on :option:`-I`." msgstr "El valor *updatepath* depende de la opción :option:`-I`." -#: ../Doc/c-api/init.rst:652 +#: ../Doc/c-api/init.rst:693 +msgid "" +"This API is kept for backward compatibility: setting :c:member:`PyConfig." +"home` should be used instead, see :ref:`Python Initialization Configuration " +"`." +msgstr "" + +#: ../Doc/c-api/init.rst:697 msgid "" "Set the default \"home\" directory, that is, the location of the standard " "Python libraries. See :envvar:`PYTHONHOME` for the meaning of the argument " @@ -1110,7 +1167,7 @@ msgstr "" "ubicación de las bibliotecas estándar de Python. Ver :envvar:`PYTHONHOME` " "para el significado de la cadena de caracteres de argumento." -#: ../Doc/c-api/init.rst:656 +#: ../Doc/c-api/init.rst:701 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 " @@ -1122,7 +1179,7 @@ msgstr "" "ejecución del programa. Ningún código en el intérprete de Python cambiará el " "contenido de este almacenamiento." -#: ../Doc/c-api/init.rst:667 +#: ../Doc/c-api/init.rst:714 msgid "" "Return the default \"home\", that is, the value set by a previous call to :c:" "func:`Py_SetPythonHome`, or the value of the :envvar:`PYTHONHOME` " @@ -1132,11 +1189,11 @@ msgstr "" "establecido por una llamada anterior a :c:func:`Py_SetPythonHome`, o el " "valor de la variable de entorno :envvar:`PYTHONHOME` si está configurado." -#: ../Doc/c-api/init.rst:681 +#: ../Doc/c-api/init.rst:728 msgid "Thread State and the Global Interpreter Lock" msgstr "Estado del hilo y el bloqueo global del intérprete" -#: ../Doc/c-api/init.rst:688 +#: ../Doc/c-api/init.rst:735 msgid "" "The Python interpreter is not fully thread-safe. In order to support multi-" "threaded Python programs, there's a global lock, called the :term:`global " @@ -1157,7 +1214,7 @@ msgstr "" "conteo de referencias podría terminar incrementándose solo una vez en lugar " "de dos veces." -#: ../Doc/c-api/init.rst:698 +#: ../Doc/c-api/init.rst:745 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 " @@ -1174,7 +1231,7 @@ msgstr "" "escribir un archivo, para que otros hilos de Python puedan ejecutarse " "mientras tanto." -#: ../Doc/c-api/init.rst:709 +#: ../Doc/c-api/init.rst:756 msgid "" "The Python interpreter keeps some thread-specific bookkeeping information " "inside a data structure called :c:type:`PyThreadState`. There's also one " @@ -1186,11 +1243,11 @@ msgstr "" "`PyThreadState`. También hay una variable global que apunta a la actual :c:" "type:`PyThreadState`: se puede recuperar usando :c:func:`PyThreadState_Get`." -#: ../Doc/c-api/init.rst:715 +#: ../Doc/c-api/init.rst:762 msgid "Releasing the GIL from extension code" msgstr "Liberando el GIL del código de extensión" -#: ../Doc/c-api/init.rst:717 +#: ../Doc/c-api/init.rst:764 msgid "" "Most extension code manipulating the :term:`GIL` has the following simple " "structure::" @@ -1198,11 +1255,11 @@ msgstr "" "La mayoría del código de extensión que manipula el :term:`GIL` tiene la " "siguiente estructura simple ::" -#: ../Doc/c-api/init.rst:726 +#: ../Doc/c-api/init.rst:773 msgid "This is so common that a pair of macros exists to simplify it::" msgstr "Esto es tan común que existen un par de macros para simplificarlo:" -#: ../Doc/c-api/init.rst:736 +#: ../Doc/c-api/init.rst:783 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 " @@ -1212,11 +1269,11 @@ msgstr "" "una variable local oculta; la macro :c:macro:`Py_END_ALLOW_THREADS` cierra " "el bloque." -#: ../Doc/c-api/init.rst:740 +#: ../Doc/c-api/init.rst:787 msgid "The block above expands to the following code::" msgstr "El bloque anterior se expande al siguiente código::" -#: ../Doc/c-api/init.rst:752 +#: ../Doc/c-api/init.rst:799 msgid "" "Here is how these functions work: the global interpreter lock is used to " "protect the pointer to the current thread state. When releasing the lock " @@ -1235,7 +1292,7 @@ msgstr "" "estado del hilo, el bloqueo debe adquirirse antes de almacenar el puntero " "del estado del hilo." -#: ../Doc/c-api/init.rst:761 +#: ../Doc/c-api/init.rst:808 msgid "" "Calling system I/O functions is the most common use case for releasing the " "GIL, but it can also be useful before calling long-running computations " @@ -1251,11 +1308,11 @@ msgstr "" "intermedias. Por ejemplo, los módulos estándar :mod:`zlib` y :mod:`hashlib` " "liberan el GIL al comprimir o mezclar datos." -#: ../Doc/c-api/init.rst:772 +#: ../Doc/c-api/init.rst:819 msgid "Non-Python created threads" msgstr "Hilos creados sin Python" -#: ../Doc/c-api/init.rst:774 +#: ../Doc/c-api/init.rst:821 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 " @@ -1271,7 +1328,7 @@ msgstr "" "terceros con su propia administración de hilos), no contienen el GIL, ni " "existe una estructura de estado de hilos para ellos." -#: ../Doc/c-api/init.rst:781 +#: ../Doc/c-api/init.rst:828 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 " @@ -1291,7 +1348,7 @@ msgstr "" "liberar el GIL y finalmente liberar la estructura de datos del estado del " "hilo." -#: ../Doc/c-api/init.rst:789 +#: ../Doc/c-api/init.rst:836 msgid "" "The :c:func:`PyGILState_Ensure` and :c:func:`PyGILState_Release` functions " "do all of the above automatically. The typical idiom for calling into " @@ -1301,25 +1358,20 @@ msgstr "" "hacen todo lo anterior automáticamente. El idioma típico para llamar a " "Python desde un hilo C es::" -#: ../Doc/c-api/init.rst:803 +#: ../Doc/c-api/init.rst:850 msgid "" -"Note that the :c:func:`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 :c:func:" -"`PyGILState_\\*` API is unsupported." +"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." msgstr "" -"Tenga en cuenta que las funciones :c:func:`PyGILState_\\*` suponen que solo " -"hay un intérprete global (creado automáticamente por :c:func:" -"`Py_Initialize`). Python admite la creación de intérpretes adicionales " -"(usando :c:func:`Py_NewInterpreter`), pero la mezcla de múltiples " -"intérpretes y la API :c:func:`PyGILState_\\*` no son compatibles." -#: ../Doc/c-api/init.rst:813 +#: ../Doc/c-api/init.rst:860 msgid "Cautions about fork()" msgstr "Precauciones sobre ``fork()``" -#: ../Doc/c-api/init.rst:815 +#: ../Doc/c-api/init.rst:862 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 " @@ -1334,7 +1386,7 @@ msgstr "" "manejar las cerraduras como en todo el estado almacenado en el tiempo de " "ejecución de CPython." -#: ../Doc/c-api/init.rst:821 +#: ../Doc/c-api/init.rst:868 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` " @@ -1366,7 +1418,7 @@ msgstr "" "`PyOS_AfterFork_Child` intenta restablecer los bloqueos necesarios, pero no " "siempre puede hacerlo." -#: ../Doc/c-api/init.rst:836 +#: ../Doc/c-api/init.rst:883 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 " @@ -1389,11 +1441,11 @@ msgstr "" "originalmente. La única excepción es si :c:func:`exec` se llamará " "inmediatamente después." -#: ../Doc/c-api/init.rst:849 +#: ../Doc/c-api/init.rst:896 msgid "High-level API" msgstr "API de alto nivel" -#: ../Doc/c-api/init.rst:851 +#: ../Doc/c-api/init.rst:898 msgid "" "These are the most commonly used types and functions when writing C " "extension code, or when embedding the Python interpreter:" @@ -1401,7 +1453,7 @@ msgstr "" "Estos son los tipos y funciones más utilizados al escribir código de " "extensión C o al incrustar el intérprete de Python:" -#: ../Doc/c-api/init.rst:856 +#: ../Doc/c-api/init.rst:903 msgid "" "This data structure represents the state shared by a number of cooperating " "threads. Threads belonging to the same interpreter share their module " @@ -1413,7 +1465,7 @@ msgstr "" "comparten la administración de su módulo y algunos otros elementos internos. " "No hay miembros públicos en esta estructura." -#: ../Doc/c-api/init.rst:861 +#: ../Doc/c-api/init.rst:908 msgid "" "Threads belonging to different interpreters initially share nothing, except " "process state like available memory, open file descriptors and such. The " @@ -1426,32 +1478,33 @@ msgstr "" "compartido por todos los hilos, independientemente de a qué intérprete " "pertenezcan." -#: ../Doc/c-api/init.rst:869 +#: ../Doc/c-api/init.rst:916 +#, fuzzy msgid "" "This data structure represents the state of a single thread. The only " -"public data member is :attr:`interp` (:c:type:`PyInterpreterState *`), which " +"public data member is :attr:`interp` (:c:expr:`PyInterpreterState *`), which " "points to this thread's interpreter state." msgstr "" "Esta estructura de datos representa el estado de un solo hilo. El único " "miembro de datos públicos es :attr:`interp` (:c:type:`PyInterpreterState " "*`), que apunta al estado del intérprete de este hilo." -#: ../Doc/c-api/init.rst:882 +#: ../Doc/c-api/init.rst:929 msgid "Deprecated function which does nothing." msgstr "Función deprecada que no hace nada." -#: ../Doc/c-api/init.rst:884 +#: ../Doc/c-api/init.rst:931 msgid "" "In Python 3.6 and older, this function created the GIL if it didn't exist." msgstr "" "En Python 3.6 y versiones anteriores, esta función creaba el GIL si no " "existía." -#: ../Doc/c-api/init.rst:886 +#: ../Doc/c-api/init.rst:933 msgid "The function now does nothing." msgstr "La función ahora no hace nada." -#: ../Doc/c-api/init.rst:889 +#: ../Doc/c-api/init.rst:936 msgid "" "This function is now called by :c:func:`Py_Initialize()`, so you don't have " "to call it yourself anymore." @@ -1459,12 +1512,12 @@ msgstr "" "Esta función ahora es llamada por :c:func:`Py_Initialize()`, por lo que ya " "no tiene que llamarla usted mismo." -#: ../Doc/c-api/init.rst:893 +#: ../Doc/c-api/init.rst:940 msgid "" "This function cannot be called before :c:func:`Py_Initialize()` anymore." msgstr "Esta función ya no se puede llamar antes de :c:func:`Py_Initialize()`." -#: ../Doc/c-api/init.rst:903 +#: ../Doc/c-api/init.rst:950 msgid "" "Returns a non-zero value if :c:func:`PyEval_InitThreads` has been called. " "This function can be called without holding the GIL, and therefore can be " @@ -1475,12 +1528,12 @@ msgstr "" "por lo tanto, se puede utilizar para evitar llamadas a la API de bloqueo " "cuando se ejecuta un solo hilo." -#: ../Doc/c-api/init.rst:907 +#: ../Doc/c-api/init.rst:954 msgid "The :term:`GIL` is now initialized by :c:func:`Py_Initialize()`." msgstr "" "El término :term:`GIL` ahora se inicializa con :c:func:`Py_Initialize()`." -#: ../Doc/c-api/init.rst:915 +#: ../Doc/c-api/init.rst:962 msgid "" "Release the global interpreter lock (if it has been created) and reset the " "thread state to ``NULL``, returning the previous thread state (which is not " @@ -1492,7 +1545,7 @@ msgstr "" "es ``NULL``). Si se ha creado el bloqueo, el hilo actual debe haberlo " "adquirido." -#: ../Doc/c-api/init.rst:923 +#: ../Doc/c-api/init.rst:970 msgid "" "Acquire the global interpreter lock (if it has been created) and set the " "thread state to *tstate*, which must not be ``NULL``. If the lock has been " @@ -1504,8 +1557,8 @@ msgstr "" "bloqueo, el hilo actual no debe haberlo adquirido, de lo contrario se " "produce un *deadlock*." -#: ../Doc/c-api/init.rst:929 ../Doc/c-api/init.rst:975 -#: ../Doc/c-api/init.rst:1234 ../Doc/c-api/init.rst:1272 +#: ../Doc/c-api/init.rst:976 ../Doc/c-api/init.rst:1022 +#: ../Doc/c-api/init.rst:1304 ../Doc/c-api/init.rst:1342 msgid "" "Calling this function from a thread when the runtime is finalizing will " "terminate the thread, even if the thread was not created by Python. You can " @@ -1519,7 +1572,7 @@ msgstr "" "intérprete está en proceso de finalización antes de llamar a esta función " "para evitar una terminación no deseada." -#: ../Doc/c-api/init.rst:937 +#: ../Doc/c-api/init.rst:984 msgid "" "Return the current thread state. The global interpreter lock must be held. " "When the current thread state is ``NULL``, this issues a fatal error (so " @@ -1529,7 +1582,7 @@ msgstr "" "intérprete. Cuando el estado actual del hilo es ``NULL``, esto genera un " "error fatal (por lo que la persona que llama no necesita verificar ``NULL``)." -#: ../Doc/c-api/init.rst:944 +#: ../Doc/c-api/init.rst:991 msgid "" "Swap the current thread state with the thread state given by the argument " "*tstate*, which may be ``NULL``. The global interpreter lock must be held " @@ -1539,7 +1592,7 @@ msgstr "" "argumento *tstate*, que puede ser ``NULL``. El bloqueo global del intérprete " "debe mantenerse y no se libera." -#: ../Doc/c-api/init.rst:949 +#: ../Doc/c-api/init.rst:996 msgid "" "The following functions use thread-local storage, and are not compatible " "with sub-interpreters:" @@ -1547,7 +1600,7 @@ msgstr "" "Las siguientes funciones utilizan almacenamiento local de hilos y no son " "compatibles con subinterpretes:" -#: ../Doc/c-api/init.rst:954 +#: ../Doc/c-api/init.rst:1001 msgid "" "Ensure that the current thread is ready to call the Python C API regardless " "of the current state of Python, or of the global interpreter lock. This may " @@ -1570,7 +1623,7 @@ msgstr "" "macro:`Py_BEGIN_ALLOW_THREADS` y :c:macro:`Py_END_ALLOW_THREADS` es " "aceptable." -#: ../Doc/c-api/init.rst:964 +#: ../Doc/c-api/init.rst:1011 msgid "" "The return value is an opaque \"handle\" to the thread state when :c:func:" "`PyGILState_Ensure` was called, and must be passed to :c:func:" @@ -1586,7 +1639,7 @@ msgstr "" "pueden compartirse; cada llamada única a :c:func:`PyGILState_Ensure` debe " "guardar el identificador para su llamada a :c:func:`PyGILState_Release`." -#: ../Doc/c-api/init.rst:971 +#: ../Doc/c-api/init.rst:1018 msgid "" "When the function returns, the current thread will hold the GIL and be able " "to call arbitrary Python code. Failure is a fatal error." @@ -1594,7 +1647,7 @@ msgstr "" "Cuando la función regrese, el hilo actual contendrá el GIL y podrá llamar a " "código arbitrario de Python. El fracaso es un error fatal." -#: ../Doc/c-api/init.rst:983 +#: ../Doc/c-api/init.rst:1030 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:" @@ -1606,7 +1659,7 @@ msgstr "" "func:`PyGILState_Ensure` (pero en general este estado será desconocido para " "la persona que llama, de ahí el uso de la API ``GILState``)." -#: ../Doc/c-api/init.rst:988 +#: ../Doc/c-api/init.rst:1035 msgid "" "Every call to :c:func:`PyGILState_Ensure` must be matched by a call to :c:" "func:`PyGILState_Release` on the same thread." @@ -1614,7 +1667,7 @@ msgstr "" "Cada llamada a :c:func:`PyGILState_Ensure` debe coincidir con una llamada a :" "c:func:`PyGILState_Release` en el mismo hilo." -#: ../Doc/c-api/init.rst:994 +#: ../Doc/c-api/init.rst:1041 msgid "" "Get the current thread state for this thread. May return ``NULL`` if no " "GILState API has been used on the current thread. Note that the main thread " @@ -1628,7 +1681,7 @@ msgstr "" "en el subproceso principal. Esta es principalmente una función auxiliar y de " "diagnóstico." -#: ../Doc/c-api/init.rst:1002 +#: ../Doc/c-api/init.rst:1049 msgid "" "Return ``1`` if the current thread is holding the GIL and ``0`` otherwise. " "This function can be called from any thread at any time. Only if it has had " @@ -1647,7 +1700,7 @@ msgstr "" "bloqueado puede permitir que la persona que llama realice acciones " "confidenciales o se comporte de otra manera de manera diferente." -#: ../Doc/c-api/init.rst:1014 +#: ../Doc/c-api/init.rst:1061 msgid "" "The following macros are normally used without a trailing semicolon; look " "for example usage in the Python source distribution." @@ -1655,7 +1708,7 @@ msgstr "" "Las siguientes macros se usan normalmente sin punto y coma final; busque, " "por ejemplo, el uso en la distribución fuente de Python." -#: ../Doc/c-api/init.rst:1020 +#: ../Doc/c-api/init.rst:1067 msgid "" "This macro expands to ``{ PyThreadState *_save; _save = PyEval_SaveThread();" "``. Note that it contains an opening brace; it must be matched with a " @@ -1667,7 +1720,7 @@ msgstr "" "la siguiente macro :c:macro:`Py_END_ALLOW_THREADS`. Ver arriba para una " "discusión más detallada de esta macro." -#: ../Doc/c-api/init.rst:1028 +#: ../Doc/c-api/init.rst:1075 msgid "" "This macro expands to ``PyEval_RestoreThread(_save); }``. Note that it " "contains a closing brace; it must be matched with an earlier :c:macro:" @@ -1679,7 +1732,7 @@ msgstr "" "macro:`Py_BEGIN_ALLOW_THREADS`. Ver arriba para una discusión más detallada " "de esta macro." -#: ../Doc/c-api/init.rst:1036 +#: ../Doc/c-api/init.rst:1083 msgid "" "This macro expands to ``PyEval_RestoreThread(_save);``: it is equivalent to :" "c:macro:`Py_END_ALLOW_THREADS` without the closing brace." @@ -1687,7 +1740,7 @@ msgstr "" "Esta macro se expande a ``PyEval_RestoreThread(_save);``: es equivalente a :" "c:macro:`Py_END_ALLOW_THREADS` sin la llave de cierre." -#: ../Doc/c-api/init.rst:1042 +#: ../Doc/c-api/init.rst:1089 msgid "" "This macro expands to ``_save = PyEval_SaveThread();``: it is equivalent to :" "c:macro:`Py_BEGIN_ALLOW_THREADS` without the opening brace and variable " @@ -1697,22 +1750,22 @@ msgstr "" "c:macro:`Py_BEGIN_ALLOW_THREADS` sin la llave de apertura y la declaración " "de variable." -#: ../Doc/c-api/init.rst:1048 +#: ../Doc/c-api/init.rst:1095 msgid "Low-level API" msgstr "API de bajo nivel" -#: ../Doc/c-api/init.rst:1050 +#: ../Doc/c-api/init.rst:1097 msgid "" "All of the following functions must be called after :c:func:`Py_Initialize`." msgstr "" "Todas las siguientes funciones deben llamarse después de :c:func:" "`Py_Initialize`." -#: ../Doc/c-api/init.rst:1052 +#: ../Doc/c-api/init.rst:1099 msgid ":c:func:`Py_Initialize()` now initializes the :term:`GIL`." msgstr ":c:func:`Py_Initialize()` ahora inicializa el :term:`GIL`." -#: ../Doc/c-api/init.rst:1058 +#: ../Doc/c-api/init.rst:1105 msgid "" "Create a new interpreter state object. The global interpreter lock need not " "be held, but may be held if it is necessary to serialize calls to this " @@ -1722,7 +1775,7 @@ msgstr "" "bloqueo global del intérprete, pero se puede retener si es necesario para " "serializar llamadas a esta función." -#: ../Doc/c-api/init.rst:1062 +#: ../Doc/c-api/init.rst:1109 msgid "" "Raises an :ref:`auditing event ` ``cpython." "PyInterpreterState_New`` with no arguments." @@ -1730,7 +1783,7 @@ msgstr "" "Genera un :ref:`evento de auditoría ` ``python." "PyInterpreterState_New`` sin argumentos." -#: ../Doc/c-api/init.rst:1067 +#: ../Doc/c-api/init.rst:1114 msgid "" "Reset all information in an interpreter state object. The global " "interpreter lock must be held." @@ -1738,7 +1791,7 @@ msgstr "" "Restablece toda la información en un objeto de estado de intérprete. Se debe " "mantener el bloqueo global del intérprete." -#: ../Doc/c-api/init.rst:1070 +#: ../Doc/c-api/init.rst:1117 msgid "" "Raises an :ref:`auditing event ` ``cpython." "PyInterpreterState_Clear`` with no arguments." @@ -1746,7 +1799,7 @@ msgstr "" "Lanza una :ref:`eventos de auditoría ` ``python.PyInterpreterState " "Clear`` sin argumentos." -#: ../Doc/c-api/init.rst:1075 +#: ../Doc/c-api/init.rst:1122 msgid "" "Destroy an interpreter state object. The global interpreter lock need not " "be held. The interpreter state must have been reset with a previous call " @@ -1756,7 +1809,7 @@ msgstr "" "bloqueo global del intérprete. El estado del intérprete debe haberse " "restablecido con una llamada previa a :c:func:`PyInterpreterState_Clear`." -#: ../Doc/c-api/init.rst:1082 +#: ../Doc/c-api/init.rst:1129 msgid "" "Create a new thread state object belonging to the given interpreter object. " "The global interpreter lock need not be held, but may be held if it is " @@ -1766,7 +1819,7 @@ msgstr "" "dado. No es necesario retener el bloqueo global del intérprete, pero se " "puede retener si es necesario para serializar llamadas a esta función." -#: ../Doc/c-api/init.rst:1089 +#: ../Doc/c-api/init.rst:1136 msgid "" "Reset all information in a thread state object. The global interpreter lock " "must be held." @@ -1774,7 +1827,7 @@ msgstr "" "Restablece toda la información en un objeto de estado de hilo. Se debe " "mantener el bloqueo global del intérprete." -#: ../Doc/c-api/init.rst:1092 +#: ../Doc/c-api/init.rst:1139 msgid "" "This function now calls the :c:member:`PyThreadState.on_delete` callback. " "Previously, that happened in :c:func:`PyThreadState_Delete`." @@ -1782,7 +1835,7 @@ msgstr "" "Esta función ahora llama a la retrollamada :c:member:`PyThreadState." "on_delete`. Anteriormente, eso sucedía en :c:func:`PyThreadState_Delete`." -#: ../Doc/c-api/init.rst:1099 +#: ../Doc/c-api/init.rst:1146 msgid "" "Destroy a thread state object. The global interpreter lock need not be " "held. The thread state must have been reset with a previous call to :c:func:" @@ -1792,7 +1845,7 @@ msgstr "" "global del intérprete. El estado del hilo debe haberse restablecido con una " "llamada previa a :c:func:`PyThreadState_Clear`." -#: ../Doc/c-api/init.rst:1106 +#: ../Doc/c-api/init.rst:1153 msgid "" "Destroy the current thread state and release the global interpreter lock. " "Like :c:func:`PyThreadState_Delete`, the global interpreter lock need not be " @@ -1804,12 +1857,13 @@ msgstr "" "bloqueo del intérprete global. El estado del hilo debe haberse restablecido " "con una llamada anterior a :c:func:`PyThreadState_Clear`." -#: ../Doc/c-api/init.rst:1114 +#: ../Doc/c-api/init.rst:1161 msgid "Get the current frame of the Python thread state *tstate*." msgstr "Obtiene el marco actual del estado del hilo de Python *tstate*." -# Como bien tradujeron con anterioridad, está más claro el decir referencia sólida a referencia fuerte, el cual no calzaría en este contexto. -#: ../Doc/c-api/init.rst:1116 +# Como bien tradujeron con anterioridad, está más claro el decir referencia +# sólida a referencia fuerte, el cual no calzaría en este contexto. +#: ../Doc/c-api/init.rst:1163 msgid "" "Return a :term:`strong reference`. Return ``NULL`` if no frame is currently " "executing." @@ -1817,31 +1871,50 @@ msgstr "" "Retorna una :term:`strong reference` (referencia sólida). Retorna ``NULL`` " "si no se está ejecutando ningún cuadro." -#: ../Doc/c-api/init.rst:1119 +#: ../Doc/c-api/init.rst:1166 msgid "See also :c:func:`PyEval_GetFrame`." msgstr "Vea también :c:func:`PyEval_GetFrame`." -#: ../Doc/c-api/init.rst:1121 ../Doc/c-api/init.rst:1130 -#: ../Doc/c-api/init.rst:1139 +#: ../Doc/c-api/init.rst:1168 ../Doc/c-api/init.rst:1177 +#: ../Doc/c-api/init.rst:1186 msgid "*tstate* must not be ``NULL``." msgstr "*tstate* no debe ser ``NULL``." -#: ../Doc/c-api/init.rst:1128 +#: ../Doc/c-api/init.rst:1175 msgid "" "Get the unique thread state identifier of the Python thread state *tstate*." msgstr "" "Obtiene el identificador de estado de subproceso único del estado del hilo " "de Python *tstate*." -#: ../Doc/c-api/init.rst:1137 +#: ../Doc/c-api/init.rst:1184 msgid "Get the interpreter of the Python thread state *tstate*." msgstr "Obtiene el intérprete del estado del hilo de Python *tstate*." -#: ../Doc/c-api/init.rst:1146 +#: ../Doc/c-api/init.rst:1193 +msgid "Suspend tracing and profiling in the Python thread state *tstate*." +msgstr "" + +#: ../Doc/c-api/init.rst:1195 +msgid "Resume them using the :c:func:`PyThreadState_LeaveTracing` function." +msgstr "" + +#: ../Doc/c-api/init.rst:1202 +msgid "" +"Resume tracing and profiling in the Python thread state *tstate* suspended " +"by the :c:func:`PyThreadState_EnterTracing` function." +msgstr "" + +#: ../Doc/c-api/init.rst:1205 +msgid "" +"See also :c:func:`PyEval_SetTrace` and :c:func:`PyEval_SetProfile` functions." +msgstr "" + +#: ../Doc/c-api/init.rst:1213 msgid "Get the current interpreter." msgstr "Obtiene el intérprete actual." -#: ../Doc/c-api/init.rst:1148 +#: ../Doc/c-api/init.rst:1215 msgid "" "Issue a fatal error if there no current Python thread state or no current " "interpreter. It cannot return NULL." @@ -1849,11 +1922,11 @@ msgstr "" "Emite un error fatal si no hay un estado actual del hilo de Python o no hay " "un intérprete actual. No puede retornar NULL." -#: ../Doc/c-api/init.rst:1151 ../Doc/c-api/init.rst:1161 +#: ../Doc/c-api/init.rst:1218 ../Doc/c-api/init.rst:1228 msgid "The caller must hold the GIL." msgstr "La persona que llama debe retener el GIL." -#: ../Doc/c-api/init.rst:1158 +#: ../Doc/c-api/init.rst:1225 msgid "" "Return the interpreter's unique ID. If there was any error in doing so then " "``-1`` is returned and an error is set." @@ -1861,7 +1934,7 @@ msgstr "" "Retorna la identificación única del intérprete. Si hubo algún error al " "hacerlo, entonces se retorna ``-1`` y se establece un error." -#: ../Doc/c-api/init.rst:1168 +#: ../Doc/c-api/init.rst:1235 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 " @@ -1872,7 +1945,7 @@ msgstr "" "excepción y la persona que llama debe suponer que no hay disponible una " "instrucción específica del intérprete." -#: ../Doc/c-api/init.rst:1172 +#: ../Doc/c-api/init.rst:1239 msgid "" "This is not a replacement for :c:func:`PyModule_GetState()`, which " "extensions should use to store interpreter-specific state information." @@ -1880,11 +1953,11 @@ msgstr "" "Esto no reemplaza a :c:func:`PyModule_GetState()`, que las extensiones deben " "usar para almacenar información de estado específica del intérprete." -#: ../Doc/c-api/init.rst:1179 +#: ../Doc/c-api/init.rst:1246 msgid "Type of a frame evaluation function." msgstr "Tipo de función de evaluación de marcos." -#: ../Doc/c-api/init.rst:1181 +#: ../Doc/c-api/init.rst:1248 msgid "" "The *throwflag* parameter is used by the ``throw()`` method of generators: " "if non-zero, handle the current exception." @@ -1892,24 +1965,30 @@ msgstr "" "El parámetro *throwflag* es usado por el método de generadores ``throw()``: " "si no es cero, maneja la excepción actual." -#: ../Doc/c-api/init.rst:1184 +#: ../Doc/c-api/init.rst:1251 msgid "The function now takes a *tstate* parameter." msgstr "La función ahora recibe un parámetro *tstate*." -#: ../Doc/c-api/init.rst:1189 +#: ../Doc/c-api/init.rst:1254 +msgid "" +"The *frame* parameter changed from ``PyFrameObject*`` to " +"``_PyInterpreterFrame*``." +msgstr "" + +#: ../Doc/c-api/init.rst:1259 msgid "Get the frame evaluation function." msgstr "Obtiene la función de evaluación de marcos." -#: ../Doc/c-api/init.rst:1191 ../Doc/c-api/init.rst:1199 +#: ../Doc/c-api/init.rst:1261 ../Doc/c-api/init.rst:1269 msgid "See the :pep:`523` \"Adding a frame evaluation API to CPython\"." msgstr "" "Consulte :pep:`523` \"Adición de una API de evaluación de marcos a CPython\"." -#: ../Doc/c-api/init.rst:1197 +#: ../Doc/c-api/init.rst:1267 msgid "Set the frame evaluation function." msgstr "Configura la función de evaluación del marco." -#: ../Doc/c-api/init.rst:1206 +#: ../Doc/c-api/init.rst:1276 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 " @@ -1924,7 +2003,7 @@ msgstr "" "función retorna ``NULL``, no se ha producido ninguna excepción y la persona " "que llama debe asumir que no hay disponible ningún estado del hilo actual." -#: ../Doc/c-api/init.rst:1215 +#: ../Doc/c-api/init.rst:1285 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. " @@ -1944,15 +2023,16 @@ msgstr "" "identificación del hilo. Si *exc* es :const:`NULL`, se borra la excepción " "pendiente (si existe) para el hilo. Esto no lanza excepciones." -#: ../Doc/c-api/init.rst:1223 +#: ../Doc/c-api/init.rst:1293 +#, fuzzy msgid "" -"The type of the *id* parameter changed from :c:type:`long` to :c:type:" +"The type of the *id* parameter changed from :c:expr:`long` to :c:expr:" "`unsigned long`." msgstr "" "El tipo del parámetro *id* cambia de :c:type:`long` a :c:type:`unsigned " "long`." -#: ../Doc/c-api/init.rst:1229 +#: ../Doc/c-api/init.rst:1299 msgid "" "Acquire the global interpreter lock and set the current thread state to " "*tstate*, which must not be ``NULL``. The lock must have been created " @@ -1963,7 +2043,7 @@ msgstr "" "creado anteriormente. Si este hilo ya tiene el bloqueo, se produce un " "deadlock." -#: ../Doc/c-api/init.rst:1240 ../Doc/c-api/init.rst:1278 +#: ../Doc/c-api/init.rst:1310 ../Doc/c-api/init.rst:1348 msgid "" "Updated to be consistent with :c:func:`PyEval_RestoreThread`, :c:func:" "`Py_END_ALLOW_THREADS`, and :c:func:`PyGILState_Ensure`, and terminate the " @@ -1973,7 +2053,7 @@ msgstr "" "`Py_END_ALLOW_THREADS`, y :c:func:`PyGILState_Ensure`, y termina el hilo " "actual si se llama mientras el intérprete está finalizando." -#: ../Doc/c-api/init.rst:1245 +#: ../Doc/c-api/init.rst:1315 msgid "" ":c:func:`PyEval_RestoreThread` is a higher-level function which is always " "available (even when threads have not been initialized)." @@ -1981,7 +2061,7 @@ msgstr "" ":c:func:`PyEval_RestoreThread` es una función de nivel superior que siempre " "está disponible (incluso cuando los subprocesos no se han inicializado)." -#: ../Doc/c-api/init.rst:1251 +#: ../Doc/c-api/init.rst:1321 msgid "" "Reset the current thread state to ``NULL`` and release the global " "interpreter lock. The lock must have been created earlier and must be held " @@ -1995,7 +2075,7 @@ msgstr "" "usa para verificar que representa el estado actual del hilo --- si no lo es, " "se informa un error fatal." -#: ../Doc/c-api/init.rst:1257 +#: ../Doc/c-api/init.rst:1327 msgid "" ":c:func:`PyEval_SaveThread` is a higher-level function which is always " "available (even when threads have not been initialized)." @@ -2003,7 +2083,7 @@ msgstr "" ":c:func:`PyEval_SaveThread` es una función de nivel superior que siempre " "está disponible (incluso cuando los hilos no se han inicializado)." -#: ../Doc/c-api/init.rst:1263 +#: ../Doc/c-api/init.rst:1333 msgid "" "Acquire the global interpreter lock. The lock must have been created " "earlier. If this thread already has the lock, a deadlock ensues." @@ -2011,7 +2091,7 @@ msgstr "" "Adquiera el bloqueo global de intérprete. El bloqueo debe haber sido creado " "anteriormente. Si este hilo ya tiene el bloqueo, se produce un *deadlock*." -#: ../Doc/c-api/init.rst:1266 +#: ../Doc/c-api/init.rst:1336 msgid "" "This function does not update the current thread state. Please use :c:func:" "`PyEval_RestoreThread` or :c:func:`PyEval_AcquireThread` instead." @@ -2019,7 +2099,7 @@ msgstr "" "Esta función no actualiza el estado actual del hilo. Utilice :c:func:" "`PyEval_RestoreThread` o :c:func:`PyEval_AcquireThread` en su lugar." -#: ../Doc/c-api/init.rst:1286 +#: ../Doc/c-api/init.rst:1356 msgid "" "Release the global interpreter lock. The lock must have been created " "earlier." @@ -2027,7 +2107,7 @@ msgstr "" "Libere el bloqueo global del intérprete. El bloqueo debe haber sido creado " "anteriormente." -#: ../Doc/c-api/init.rst:1288 +#: ../Doc/c-api/init.rst:1358 msgid "" "This function does not update the current thread state. Please use :c:func:" "`PyEval_SaveThread` or :c:func:`PyEval_ReleaseThread` instead." @@ -2035,11 +2115,11 @@ msgstr "" "Esta función no actualiza el estado actual del hilo. Utilice :c:func:" "`PyEval_SaveThread` o :c:func:`PyEval_ReleaseThread` en su lugar." -#: ../Doc/c-api/init.rst:1297 +#: ../Doc/c-api/init.rst:1367 msgid "Sub-interpreter support" msgstr "Soporte de subinterprete" -#: ../Doc/c-api/init.rst:1299 +#: ../Doc/c-api/init.rst:1369 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 " @@ -2051,7 +2131,7 @@ msgstr "" "independientes en el mismo proceso y tal vez incluso en el mismo hilo. Los " "subinterpretes le permiten hacer eso." -#: ../Doc/c-api/init.rst:1304 +#: ../Doc/c-api/init.rst:1374 msgid "" "The \"main\" interpreter is the first one created when the runtime " "initializes. It is usually the only Python interpreter in a process. Unlike " @@ -2070,7 +2150,7 @@ msgstr "" "del tiempo de ejecución. La función :c:func:`PyInterpreterState_Main` " "retorna un puntero a su estado." -#: ../Doc/c-api/init.rst:1311 +#: ../Doc/c-api/init.rst:1381 msgid "" "You can switch between sub-interpreters using the :c:func:" "`PyThreadState_Swap` function. You can create and destroy them using the " @@ -2080,7 +2160,7 @@ msgstr "" "`PyThreadState_Swap`. Puede crearlos y destruirlos utilizando las siguientes " "funciones:" -#: ../Doc/c-api/init.rst:1325 +#: ../Doc/c-api/init.rst:1395 msgid "" "Create a new sub-interpreter. This is an (almost) totally separate " "environment for the execution of Python code. In particular, the new " @@ -2102,7 +2182,7 @@ msgstr "" "estándar ``sys.stdin``, ``sys.stdout`` y ``sys.stderr`` (sin embargo, estos " "se refieren a los mismos descriptores de archivo subyacentes)." -#: ../Doc/c-api/init.rst:1335 +#: ../Doc/c-api/init.rst:1405 msgid "" "The return value points to the first thread state created in the new sub-" "interpreter. This thread state is made in the current thread state. Note " @@ -2127,13 +2207,13 @@ msgstr "" "embargo, a diferencia de la mayoría de las otras funciones de Python/C API, " "no es necesario que haya un estado del hilo actual en entrada.)" -#: ../Doc/c-api/init.rst:1350 +#: ../Doc/c-api/init.rst:1420 msgid "Extension modules are shared between (sub-)interpreters as follows:" msgstr "" "Los módulos de extensión se comparten entre (sub) intérpretes de la " "siguiente manera:" -#: ../Doc/c-api/init.rst:1352 +#: ../Doc/c-api/init.rst:1422 msgid "" "For modules using multi-phase initialization, e.g. :c:func:" "`PyModule_FromDefAndSpec`, a separate module object is created and " @@ -2145,7 +2225,7 @@ msgstr "" "para cada intérprete. Solo las variables estáticas y globales de nivel C se " "comparten entre estos objetos de módulo." -#: ../Doc/c-api/init.rst:1358 +#: ../Doc/c-api/init.rst:1428 msgid "" "For modules using single-phase initialization, e.g. :c:func:" "`PyModule_Create`, the first time a particular extension is imported, it is " @@ -2166,7 +2246,7 @@ msgstr "" "intérpretes, lo que puede causar un comportamiento no deseado (ver Errores y " "advertencias (`Bugs and caveats`_) a continuación)." -#: ../Doc/c-api/init.rst:1369 +#: ../Doc/c-api/init.rst:1439 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:" @@ -2182,7 +2262,7 @@ msgstr "" "que con la inicialización de múltiples fases, esto significa que solo se " "comparten variables estáticas y globales de nivel C entre estos módulos." -#: ../Doc/c-api/init.rst:1383 +#: ../Doc/c-api/init.rst:1453 msgid "" "Destroy the (sub-)interpreter represented by the given thread state. The " "given thread state must be the current thread state. See the discussion of " @@ -2202,11 +2282,11 @@ msgstr "" "`Py_FinalizeEx` destruirá todos los subinterpretes que no se hayan destruido " "explícitamente en ese punto." -#: ../Doc/c-api/init.rst:1393 +#: ../Doc/c-api/init.rst:1463 msgid "Bugs and caveats" msgstr "Errores y advertencias" -#: ../Doc/c-api/init.rst:1395 +#: ../Doc/c-api/init.rst:1465 msgid "" "Because sub-interpreters (and the main interpreter) are part of the same " "process, the insulation between them isn't perfect --- for example, using " @@ -2229,7 +2309,7 @@ msgstr "" "subinterprete en un espacio de nombres de otro (sub) intérprete; Esto debe " "evitarse si es posible." -#: ../Doc/c-api/init.rst:1405 +#: ../Doc/c-api/init.rst:1475 msgid "" "Special care should be taken to avoid sharing user-defined functions, " "methods, instances or classes between sub-interpreters, since import " @@ -2244,12 +2324,13 @@ msgstr "" "Es igualmente importante evitar compartir objetos desde los que se pueda " "acceder a lo anterior." -#: ../Doc/c-api/init.rst:1411 +#: ../Doc/c-api/init.rst:1481 +#, fuzzy msgid "" -"Also note that combining this functionality with :c:func:`PyGILState_\\*` " -"APIs is delicate, because these APIs assume a bijection between Python " -"thread states and OS-level threads, an assumption broken by the presence of " -"sub-interpreters. It is highly recommended that you don't switch sub-" +"Also note that combining this functionality with ``PyGILState_*`` APIs is " +"delicate, because these APIs assume a bijection between Python thread states " +"and OS-level threads, an assumption broken by the presence of sub-" +"interpreters. It is highly recommended that you don't switch sub-" "interpreters between a pair of matching :c:func:`PyGILState_Ensure` and :c:" "func:`PyGILState_Release` calls. Furthermore, extensions (such as :mod:" "`ctypes`) using these APIs to allow calling of Python code from non-Python " @@ -2265,11 +2346,11 @@ msgstr "" "permitir la llamada de código Python desde hilos no creados por Python " "probablemente se rompan cuando se usan subinterpretes." -#: ../Doc/c-api/init.rst:1422 +#: ../Doc/c-api/init.rst:1492 msgid "Asynchronous Notifications" msgstr "Notificaciones asincrónicas" -#: ../Doc/c-api/init.rst:1424 +#: ../Doc/c-api/init.rst:1494 msgid "" "A mechanism is provided to make asynchronous notifications to the main " "interpreter thread. These notifications take the form of a function pointer " @@ -2279,7 +2360,7 @@ msgstr "" "principal del intérprete. Estas notificaciones toman la forma de un puntero " "de función y un argumento de puntero nulo." -#: ../Doc/c-api/init.rst:1433 +#: ../Doc/c-api/init.rst:1503 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 " @@ -2290,7 +2371,7 @@ msgstr "" "ser llamado en el hilo principal. En caso de fallo, se retorna ``-1`` sin " "establecer ninguna excepción." -#: ../Doc/c-api/init.rst:1437 +#: ../Doc/c-api/init.rst:1507 msgid "" "When successfully queued, *func* will be *eventually* called from the main " "interpreter thread with the argument *arg*. It will be called " @@ -2302,11 +2383,11 @@ msgstr "" "asincrónica con respecto al código Python que se ejecuta normalmente, pero " "con ambas condiciones cumplidas:" -#: ../Doc/c-api/init.rst:1442 +#: ../Doc/c-api/init.rst:1512 msgid "on a :term:`bytecode` boundary;" msgstr "en un límite :term:`bytecode`;" -#: ../Doc/c-api/init.rst:1443 +#: ../Doc/c-api/init.rst:1513 msgid "" "with the main thread holding the :term:`global interpreter lock` (*func* can " "therefore use the full C API)." @@ -2314,7 +2395,7 @@ msgstr "" "con el hilo principal que contiene el :term:`global interpreter lock` " "(*func*, por lo tanto, puede usar la API C completa)." -#: ../Doc/c-api/init.rst:1446 +#: ../Doc/c-api/init.rst:1516 msgid "" "*func* must return ``0`` on success, or ``-1`` on failure with an exception " "set. *func* won't be interrupted to perform another asynchronous " @@ -2326,7 +2407,7 @@ msgstr "" "notificación asíncrona de forma recursiva, pero aún se puede interrumpir " "para cambiar hilos si se libera el bloqueo global del intérprete." -#: ../Doc/c-api/init.rst:1451 +#: ../Doc/c-api/init.rst:1521 msgid "" "This function doesn't need a current thread state to run, and it doesn't " "need the global interpreter lock." @@ -2334,7 +2415,7 @@ msgstr "" "Esta función no necesita un estado de hilo actual para ejecutarse y no " "necesita el bloqueo global del intérprete." -#: ../Doc/c-api/init.rst:1454 +#: ../Doc/c-api/init.rst:1524 msgid "" "To call this function in a subinterpreter, the caller must hold the GIL. " "Otherwise, the function *func* can be scheduled to be called from the wrong " @@ -2344,7 +2425,7 @@ msgstr "" "GIL. De lo contrario, la función *func* se puede programar para que se llame " "desde el intérprete incorrecto." -#: ../Doc/c-api/init.rst:1459 +#: ../Doc/c-api/init.rst:1529 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 " @@ -2360,7 +2441,7 @@ msgstr "" "**no** es adecuada para llamar a código Python desde hilos C arbitrarios. En " "su lugar, use :ref:`PyGILState API `." -#: ../Doc/c-api/init.rst:1466 +#: ../Doc/c-api/init.rst:1536 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 " @@ -2372,11 +2453,11 @@ msgstr "" "desde el intérprete principal. Cada subinterprete ahora tiene su propia " "lista de llamadas programadas." -#: ../Doc/c-api/init.rst:1477 +#: ../Doc/c-api/init.rst:1547 msgid "Profiling and Tracing" msgstr "Perfilado y Rastreo" -#: ../Doc/c-api/init.rst:1482 +#: ../Doc/c-api/init.rst:1552 msgid "" "The Python interpreter provides some low-level support for attaching " "profiling and execution tracing facilities. These are used for profiling, " @@ -2386,7 +2467,7 @@ msgstr "" "funciones de creación de perfiles y seguimiento de ejecución. Estos se " "utilizan para herramientas de análisis de perfiles, depuración y cobertura." -#: ../Doc/c-api/init.rst:1486 +#: ../Doc/c-api/init.rst:1556 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 " @@ -2403,7 +2484,7 @@ msgstr "" "función de rastreo son los mismos que se informaron a las funciones de " "rastreo a nivel de Python en versiones anteriores." -#: ../Doc/c-api/init.rst:1496 +#: ../Doc/c-api/init.rst:1566 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 " @@ -2422,67 +2503,67 @@ msgstr "" "const:`PyTrace_C_RETURN`, o :const:`PyTrace_OPCODE`, y *arg* depende de el " "valor de *what*:" -#: ../Doc/c-api/init.rst:1505 +#: ../Doc/c-api/init.rst:1575 msgid "Value of *what*" msgstr "Valor de *what*" -#: ../Doc/c-api/init.rst:1505 +#: ../Doc/c-api/init.rst:1575 msgid "Meaning of *arg*" msgstr "Significado de *arg*" -#: ../Doc/c-api/init.rst:1507 +#: ../Doc/c-api/init.rst:1577 msgid ":const:`PyTrace_CALL`" msgstr ":const:`PyTrace_CALL`" -#: ../Doc/c-api/init.rst:1507 ../Doc/c-api/init.rst:1512 -#: ../Doc/c-api/init.rst:1523 +#: ../Doc/c-api/init.rst:1577 ../Doc/c-api/init.rst:1582 +#: ../Doc/c-api/init.rst:1593 msgid "Always :c:data:`Py_None`." msgstr "Siempre :c:data:`Py_None`." -#: ../Doc/c-api/init.rst:1509 +#: ../Doc/c-api/init.rst:1579 msgid ":const:`PyTrace_EXCEPTION`" msgstr ":const:`PyTrace_EXCEPTION`" -#: ../Doc/c-api/init.rst:1509 +#: ../Doc/c-api/init.rst:1579 msgid "Exception information as returned by :func:`sys.exc_info`." msgstr "Información de excepción retornada por :func:`sys.exc_info`." -#: ../Doc/c-api/init.rst:1512 +#: ../Doc/c-api/init.rst:1582 msgid ":const:`PyTrace_LINE`" msgstr ":const:`PyTrace_LINE`" -#: ../Doc/c-api/init.rst:1514 +#: ../Doc/c-api/init.rst:1584 msgid ":const:`PyTrace_RETURN`" msgstr ":const:`PyTrace_RETURN`" -#: ../Doc/c-api/init.rst:1514 +#: ../Doc/c-api/init.rst:1584 msgid "" "Value being returned to the caller, or ``NULL`` if caused by an exception." msgstr "" "Valor retornado al que llama, o ``NULL`` si es causado por una excepción." -#: ../Doc/c-api/init.rst:1517 +#: ../Doc/c-api/init.rst:1587 msgid ":const:`PyTrace_C_CALL`" msgstr ":const:`PyTrace_C_CALL`" -#: ../Doc/c-api/init.rst:1517 ../Doc/c-api/init.rst:1519 -#: ../Doc/c-api/init.rst:1521 +#: ../Doc/c-api/init.rst:1587 ../Doc/c-api/init.rst:1589 +#: ../Doc/c-api/init.rst:1591 msgid "Function object being called." msgstr "Objeto función que se llaman." -#: ../Doc/c-api/init.rst:1519 +#: ../Doc/c-api/init.rst:1589 msgid ":const:`PyTrace_C_EXCEPTION`" msgstr ":const:`PyTrace_C_EXCEPTION`" -#: ../Doc/c-api/init.rst:1521 +#: ../Doc/c-api/init.rst:1591 msgid ":const:`PyTrace_C_RETURN`" msgstr ":const:`PyTrace_C_RETURN`" -#: ../Doc/c-api/init.rst:1523 +#: ../Doc/c-api/init.rst:1593 msgid ":const:`PyTrace_OPCODE`" msgstr ":const:`PyTrace_OPCODE`" -#: ../Doc/c-api/init.rst:1528 +#: ../Doc/c-api/init.rst:1598 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 " @@ -2496,7 +2577,7 @@ msgstr "" "de generador no se informa ya que no hay transferencia de control al código " "de bytes de Python en la marco correspondiente." -#: ../Doc/c-api/init.rst:1537 +#: ../Doc/c-api/init.rst:1607 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 " @@ -2517,7 +2598,7 @@ msgstr "" "las funciones de rastreo reciben estos eventos; el perfilador (*profiler*) " "no los necesita." -#: ../Doc/c-api/init.rst:1548 +#: ../Doc/c-api/init.rst:1618 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 " @@ -2529,7 +2610,7 @@ msgstr "" "número de línea. Puede deshabilitarse para un marco configurando :attr:" "`f_trace_lines` en *0* en ese marco." -#: ../Doc/c-api/init.rst:1555 +#: ../Doc/c-api/init.rst:1625 msgid "" "The value for the *what* parameter to :c:type:`Py_tracefunc` functions when " "a call is about to return." @@ -2537,7 +2618,7 @@ msgstr "" "El valor para el parámetro *what* para :c:type:`Py_tracefunc` funciona " "cuando una llamada está por regresar." -#: ../Doc/c-api/init.rst:1561 +#: ../Doc/c-api/init.rst:1631 msgid "" "The value for the *what* parameter to :c:type:`Py_tracefunc` functions when " "a C function is about to be called." @@ -2545,7 +2626,7 @@ msgstr "" "El valor del parámetro *what* para :c:type:`Py_tracefunc` funciona cuando " "una función C está a punto de ser invocada." -#: ../Doc/c-api/init.rst:1567 +#: ../Doc/c-api/init.rst:1637 msgid "" "The value for the *what* parameter to :c:type:`Py_tracefunc` functions when " "a C function has raised an exception." @@ -2553,7 +2634,7 @@ msgstr "" "El valor del parámetro *what* para funciones :c:type:`Py_tracefunc` cuando " "una función C ha lanzado una excepción." -#: ../Doc/c-api/init.rst:1573 +#: ../Doc/c-api/init.rst:1643 msgid "" "The value for the *what* parameter to :c:type:`Py_tracefunc` functions when " "a C function has returned." @@ -2561,7 +2642,7 @@ msgstr "" "El valor del parámetro *what* para :c:type:`Py_tracefunc` funciona cuando " "una función C ha retornado." -#: ../Doc/c-api/init.rst:1579 +#: ../Doc/c-api/init.rst:1649 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 " @@ -2574,7 +2655,7 @@ msgstr "" "solicitarse explícitamente estableciendo :attr:`f_trace_opcodes` en *1* en " "el marco." -#: ../Doc/c-api/init.rst:1587 +#: ../Doc/c-api/init.rst:1657 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``. " @@ -2591,11 +2672,15 @@ msgstr "" "perfilado para todos los eventos supervisados, excepto :const:" "`PyTrace_LINE` :const:`PyTrace_OPCODE` y :const:`PyTrace_EXCEPTION`." -#: ../Doc/c-api/init.rst:1594 ../Doc/c-api/init.rst:1606 +#: ../Doc/c-api/init.rst:1664 +msgid "See also the :func:`sys.setprofile` function." +msgstr "" + +#: ../Doc/c-api/init.rst:1666 ../Doc/c-api/init.rst:1680 msgid "The caller must hold the :term:`GIL`." msgstr "La persona que llama debe mantener el :term:`GIL`." -#: ../Doc/c-api/init.rst:1599 +#: ../Doc/c-api/init.rst:1671 msgid "" "Set the tracing function to *func*. This is similar to :c:func:" "`PyEval_SetProfile`, except the tracing function does receive line-number " @@ -2613,18 +2698,22 @@ msgstr "" "`PyTrace_C_CALL`, :const:`PyTrace_C_EXCEPTION` o :const:`PyTrace_C_RETURN` " "como valor para el parámetro *what*." -#: ../Doc/c-api/init.rst:1612 +#: ../Doc/c-api/init.rst:1678 +msgid "See also the :func:`sys.settrace` function." +msgstr "" + +#: ../Doc/c-api/init.rst:1686 msgid "Advanced Debugger Support" msgstr "Soporte avanzado del depurador" -#: ../Doc/c-api/init.rst:1617 +#: ../Doc/c-api/init.rst:1691 msgid "" "These functions are only intended to be used by advanced debugging tools." msgstr "" "Estas funciones solo están destinadas a ser utilizadas por herramientas de " "depuración avanzadas." -#: ../Doc/c-api/init.rst:1622 +#: ../Doc/c-api/init.rst:1696 msgid "" "Return the interpreter state object at the head of the list of all such " "objects." @@ -2632,11 +2721,11 @@ msgstr "" "Retorna el objeto de estado del intérprete al principio de la lista de todos " "esos objetos." -#: ../Doc/c-api/init.rst:1627 +#: ../Doc/c-api/init.rst:1701 msgid "Return the main interpreter state object." msgstr "Retorna el objeto de estado del intérprete principal." -#: ../Doc/c-api/init.rst:1632 +#: ../Doc/c-api/init.rst:1706 msgid "" "Return the next interpreter state object after *interp* from the list of all " "such objects." @@ -2644,7 +2733,7 @@ msgstr "" "Retorna el siguiente objeto de estado de intérprete después de *interp* de " "la lista de todos esos objetos." -#: ../Doc/c-api/init.rst:1638 +#: ../Doc/c-api/init.rst:1712 msgid "" "Return the pointer to the first :c:type:`PyThreadState` object in the list " "of threads associated with the interpreter *interp*." @@ -2652,7 +2741,7 @@ msgstr "" "Retorna el puntero al primer objeto :c:type:`PyThreadState` en la lista de " "hilos asociados con el intérprete *interp*." -#: ../Doc/c-api/init.rst:1644 +#: ../Doc/c-api/init.rst:1718 msgid "" "Return the next thread state object after *tstate* from the list of all such " "objects belonging to the same :c:type:`PyInterpreterState` object." @@ -2661,17 +2750,18 @@ msgstr "" "lista de todos los objetos que pertenecen al mismo objeto :c:type:" "`PyInterpreterState`." -#: ../Doc/c-api/init.rst:1651 +#: ../Doc/c-api/init.rst:1725 msgid "Thread Local Storage Support" msgstr "Soporte de almacenamiento local de hilo" -#: ../Doc/c-api/init.rst:1655 +#: ../Doc/c-api/init.rst:1729 +#, fuzzy msgid "" "The Python interpreter provides low-level support for thread-local storage " "(TLS) which wraps the underlying native TLS implementation to support the " "Python-level thread local storage API (:class:`threading.local`). The " "CPython C level APIs are similar to those offered by pthreads and Windows: " -"use a thread key and functions to associate a :c:type:`void*` value per " +"use a thread key and functions to associate a :c:expr:`void*` value per " "thread." msgstr "" "El intérprete de Python proporciona soporte de bajo nivel para el " @@ -2681,7 +2771,7 @@ msgstr "" "similares a las ofrecidas por pthreads y Windows: use una clave de hilo y " "funciones para asociar un valor de :c:type:`void*` por hilo." -#: ../Doc/c-api/init.rst:1662 +#: ../Doc/c-api/init.rst:1736 msgid "" "The GIL does *not* need to be held when calling these functions; they supply " "their own locking." @@ -2689,7 +2779,7 @@ msgstr "" "El GIL *no* necesita ser retenido al llamar a estas funciones; proporcionan " "su propio bloqueo." -#: ../Doc/c-api/init.rst:1665 +#: ../Doc/c-api/init.rst:1739 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." @@ -2698,11 +2788,12 @@ msgstr "" "TLS, debe incluir :file:`pythread.h` para usar el almacenamiento local de " "hilos." -#: ../Doc/c-api/init.rst:1669 +#: ../Doc/c-api/init.rst:1743 +#, fuzzy msgid "" "None of these API functions handle memory management on behalf of the :c:" -"type:`void*` values. You need to allocate and deallocate them yourself. If " -"the :c:type:`void*` values happen to be :c:type:`PyObject*`, these functions " +"expr:`void*` values. You need to allocate and deallocate them yourself. If " +"the :c:expr:`void*` values happen to be :c:expr:`PyObject*`, these functions " "don't do refcount operations on them either." msgstr "" "Ninguna de estas funciones API maneja la administración de memoria en nombre " @@ -2710,27 +2801,28 @@ msgstr "" "Si los valores :c:type:`void*` son :c:type:`PyObject*`, estas funciones " "tampoco realizan operaciones de conteo de referencias en ellos." -#: ../Doc/c-api/init.rst:1677 +#: ../Doc/c-api/init.rst:1751 msgid "Thread Specific Storage (TSS) API" msgstr "" "API de almacenamiento específico de hilo (TSS, *Thread Specific Storage*)" -#: ../Doc/c-api/init.rst:1679 +#: ../Doc/c-api/init.rst:1753 +#, fuzzy 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:type:`int` to represent thread keys." +"instead of :c:expr:`int` to represent thread keys." msgstr "" "La API de TSS se introduce para reemplazar el uso de la API TLS existente " "dentro del intérprete de CPython. Esta API utiliza un nuevo tipo :c:type:" "`Py_tss_t` en lugar de :c:type:`int` para representar las claves del hilo." -#: ../Doc/c-api/init.rst:1685 +#: ../Doc/c-api/init.rst:1759 msgid "\"A New C-API for Thread-Local Storage in CPython\" (:pep:`539`)" msgstr "" "\"Una nueva C-API para *Thread-Local Storage* en CPython\" (:pep:`539`)" -#: ../Doc/c-api/init.rst:1690 +#: ../Doc/c-api/init.rst:1764 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 " @@ -2742,7 +2834,7 @@ msgstr "" "campo interno que representa el estado de inicialización de la clave. No hay " "miembros públicos en esta estructura." -#: ../Doc/c-api/init.rst:1695 +#: ../Doc/c-api/init.rst:1769 msgid "" "When :ref:`Py_LIMITED_API ` is not defined, static allocation of " "this type by :c:macro:`Py_tss_NEEDS_INIT` is allowed." @@ -2750,7 +2842,7 @@ msgstr "" "Cuando :ref:`Py_LIMITED_API ` no está definido, la asignación " "estática de este tipo por :c:macro:`Py_tss_NEEDS_INIT` está permitida." -#: ../Doc/c-api/init.rst:1701 +#: ../Doc/c-api/init.rst:1775 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 `." @@ -2759,11 +2851,11 @@ msgstr "" "Tenga en cuenta que esta macro no se definirá con :ref:`Py_LIMITED_API " "`." -#: ../Doc/c-api/init.rst:1706 +#: ../Doc/c-api/init.rst:1780 msgid "Dynamic Allocation" msgstr "Asignación dinámica" -#: ../Doc/c-api/init.rst:1708 +#: ../Doc/c-api/init.rst:1782 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 " @@ -2774,7 +2866,7 @@ msgstr "" "asignación estática de este tipo no es posible debido a que su " "implementación es opaca en el momento de la compilación." -#: ../Doc/c-api/init.rst:1715 +#: ../Doc/c-api/init.rst:1789 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." @@ -2783,29 +2875,31 @@ msgstr "" "macro:`Py_tss_NEEDS_INIT`, o ``NULL`` en caso de falla de asignación " "dinámica." -#: ../Doc/c-api/init.rst:1722 +#: ../Doc/c-api/init.rst:1796 +#, fuzzy 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`." +"have been unassigned. This is a no-op if the *key* argument is ``NULL``." msgstr "" "Libera la clave *key* asignada por :c:func:`PyThread_tss_alloc`, después de " "llamar por primera vez :c:func:`PyThread_tss_delete` para asegurarse de que " "los hilos locales asociados no hayan sido asignados. Esto es un *no-op* si " "el argumento *key* es `NULL`." -#: ../Doc/c-api/init.rst:1728 +#: ../Doc/c-api/init.rst:1802 +#, fuzzy msgid "" -"A freed key becomes a dangling pointer, you should reset the key to `NULL`." +"A freed key becomes a dangling pointer. You should reset the key to ``NULL``." msgstr "" "Una clave (*key*) liberada se convierte en un puntero colgante (*dangling " "pointer*), debe restablecer la llave a `NULL`." -#: ../Doc/c-api/init.rst:1733 +#: ../Doc/c-api/init.rst:1807 msgid "Methods" msgstr "Métodos" -#: ../Doc/c-api/init.rst:1735 +#: ../Doc/c-api/init.rst:1809 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 " @@ -2817,7 +2911,7 @@ msgstr "" "no están definidos si el :c:type:`Py_tss_t` dado no ha sido inicializado " "por :c:func:`PyThread_tss_create`." -#: ../Doc/c-api/init.rst:1743 +#: ../Doc/c-api/init.rst:1817 msgid "" "Return a non-zero value if the given :c:type:`Py_tss_t` has been initialized " "by :c:func:`PyThread_tss_create`." @@ -2825,7 +2919,7 @@ msgstr "" "Retorna un valor distinto de cero si :c:type:`Py_tss_t` ha sido inicializado " "por :c:func:`PyThread_tss_create`." -#: ../Doc/c-api/init.rst:1749 +#: ../Doc/c-api/init.rst:1823 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 " @@ -2839,7 +2933,7 @@ msgstr "" "invocar repetidamente en la misma tecla: llamarla a una tecla ya " "inicializada es un *no-op* e inmediatamente retorna el éxito." -#: ../Doc/c-api/init.rst:1758 +#: ../Doc/c-api/init.rst:1832 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 " @@ -2853,19 +2947,21 @@ msgstr "" "c:func:`PyThread_tss_create`. Esta función se puede invocar repetidamente en " "la misma llave; llamarla en una llave ya destruida es un *no-op*." -#: ../Doc/c-api/init.rst:1767 +#: ../Doc/c-api/init.rst:1841 +#, fuzzy msgid "" -"Return a zero value to indicate successfully associating a :c:type:`void*` " +"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:type:`void*` value." +"mapping of the key to a :c:expr:`void*` value." msgstr "" "Retorna un valor cero para indicar la asociación exitosa de un valor a :c:" "type:`void*` con una clave TSS en el hilo actual. Cada hilo tiene un mapeo " "distinto de la clave a un valor :c:type:`void*`." -#: ../Doc/c-api/init.rst:1774 +#: ../Doc/c-api/init.rst:1848 +#, fuzzy msgid "" -"Return the :c:type:`void*` value associated with a TSS key in the current " +"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 "" @@ -2873,11 +2969,11 @@ msgstr "" "actual. Esto retorna ``NULL`` si no hay ningún valor asociado con la clave " "en el hilo actual." -#: ../Doc/c-api/init.rst:1782 +#: ../Doc/c-api/init.rst:1856 msgid "Thread Local Storage (TLS) API" msgstr "API de almacenamiento local de hilos (TLS, *Thread Local Storage*)" -#: ../Doc/c-api/init.rst:1784 +#: ../Doc/c-api/init.rst:1858 msgid "" "This API is superseded by :ref:`Thread Specific Storage (TSS) API `." @@ -2886,7 +2982,7 @@ msgstr "" "(TSS, por sus significado en inglés *Thread Specific Storage*) `." -#: ../Doc/c-api/init.rst:1789 +#: ../Doc/c-api/init.rst:1863 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 " @@ -2900,10 +2996,23 @@ msgstr "" "inmediatamente con un estado de falla, y las otras funciones TLS serán no " "operativas en tales plataformas." -#: ../Doc/c-api/init.rst:1794 +#: ../Doc/c-api/init.rst:1868 msgid "" "Due to the compatibility problem noted above, this version of the API should " "not be used in new code." msgstr "" "Debido al problema de compatibilidad mencionado anteriormente, esta versión " "de la API no debe usarse en código nuevo." + +#~ msgid "" +#~ "Note that the :c:func:`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 :c:func:" +#~ "`PyGILState_\\*` API is unsupported." +#~ msgstr "" +#~ "Tenga en cuenta que las funciones :c:func:`PyGILState_\\*` suponen que " +#~ "solo hay un intérprete global (creado automáticamente por :c:func:" +#~ "`Py_Initialize`). Python admite la creación de intérpretes adicionales " +#~ "(usando :c:func:`Py_NewInterpreter`), pero la mezcla de múltiples " +#~ "intérpretes y la API :c:func:`PyGILState_\\*` no son compatibles." diff --git a/c-api/init_config.po b/c-api/init_config.po index 6cc988f521..1680d4c079 100644 --- a/c-api/init_config.po +++ b/c-api/init_config.po @@ -8,16 +8,16 @@ msgid "" msgstr "" "Project-Id-Version: Python en Español 3.7\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-08-02 01:43+0200\n" "Last-Translator: Cristián Maureira-Fredes \n" -"Language-Team: \n" "Language: es\n" +"Language-Team: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" -"Generated-By: Babel 2.9.1\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/c-api/init_config.rst:7 msgid "Python Initialization Configuration" @@ -38,10 +38,11 @@ msgid "There are two kinds of configuration:" msgstr "Hay dos tipos de configuración:" #: ../Doc/c-api/init_config.rst:17 +#, fuzzy msgid "" "The :ref:`Python Configuration ` can be used to build a " "customized Python which behaves as the regular Python. For example, " -"environments variables and command line arguments are used to configure " +"environment variables and command line arguments are used to configure " "Python." msgstr "" "La :ref:`Configuración de Python ` se puede utilizar " @@ -50,11 +51,12 @@ msgstr "" "comandos se utilizan para configurar Python." #: ../Doc/c-api/init_config.rst:22 +#, fuzzy msgid "" "The :ref:`Isolated Configuration ` can be used to embed " "Python into an application. It isolates Python from the system. For example, " -"environments variables are ignored, the LC_CTYPE locale is left unchanged " -"and no signal handler is registered." +"environment variables are ignored, the LC_CTYPE locale is left unchanged and " +"no signal handler is registered." msgstr "" "La :ref:`Configuración Aislada ` se puede utilizar para " "incrustar Python en una aplicación. Aísla a Python del sistema. Por ejemplo, " @@ -129,11 +131,12 @@ msgstr "" "Si *index* es mayor o igual que el largo de *list*, agrega *item* a *list*." #: ../Doc/c-api/init_config.rst:100 -msgid "*index* must be greater than or equal to 0." +#, fuzzy +msgid "*index* must be greater than or equal to ``0``." msgstr "*index* debe ser mayor o igual que 0." #: ../Doc/c-api/init_config.rst:104 ../Doc/c-api/init_config.rst:124 -#: ../Doc/c-api/init_config.rst:225 ../Doc/c-api/init_config.rst:519 +#: ../Doc/c-api/init_config.rst:225 ../Doc/c-api/init_config.rst:530 msgid "Structure fields:" msgstr "Campos de estructura:" @@ -351,9 +354,10 @@ msgstr "" "preferida del usuario?" #: ../Doc/c-api/init_config.rst:259 +#, fuzzy msgid "" -"If equals to 0, set :c:member:`~PyPreConfig.coerce_c_locale` and :c:member:" -"`~PyPreConfig.coerce_c_locale_warn` members to 0." +"If equals to ``0``, set :c:member:`~PyPreConfig.coerce_c_locale` and :c:" +"member:`~PyPreConfig.coerce_c_locale_warn` members to ``0``." msgstr "" "Si es igual a 0, establezca los miembros :c:member:`~PyPreConfig." "coerce_c_locale` y :c:member:`~PyPreConfig.coerce_c_locale_warn` en 0." @@ -363,19 +367,22 @@ msgid "See the :term:`locale encoding`." msgstr "Vea el :term:`locale encoding`." #: ../Doc/c-api/init_config.rst:264 ../Doc/c-api/init_config.rst:319 -#: ../Doc/c-api/init_config.rst:627 +#: ../Doc/c-api/init_config.rst:670 msgid "Default: ``1`` in Python config, ``0`` in isolated config." msgstr "" "Predeterminado: ``1`` en la configuración de Python, ``0`` en la " "configuración aislada." #: ../Doc/c-api/init_config.rst:268 -msgid "If equals to 2, coerce the C locale." +#, fuzzy +msgid "If equals to ``2``, coerce the C locale." msgstr "Si es igual a 2, imponga la configuración regional C." #: ../Doc/c-api/init_config.rst:270 +#, fuzzy msgid "" -"If equals to 1, read the LC_CTYPE locale to decide if it should be coerced." +"If equals to ``1``, read the LC_CTYPE locale to decide if it should be " +"coerced." msgstr "" "Si es igual a 1, lea la configuración regional LC_CTYPE para decidir si debe " "ser coaccionado." @@ -393,15 +400,15 @@ msgstr "" "coaccionada." #: ../Doc/c-api/init_config.rst:285 +#, fuzzy msgid "" -"If non-zero, enables the :ref:`Python Development Mode `: see :c:" -"member:`PyConfig.dev_mode`." +":ref:`Python Development Mode `: see :c:member:`PyConfig.dev_mode`." msgstr "" "Si es distinto de cero, habilita el :ref:`Modo de desarrollo de Python " "`: consulte :c:member:`PyConfig.dev_mode`." -#: ../Doc/c-api/init_config.rst:288 ../Doc/c-api/init_config.rst:633 -#: ../Doc/c-api/init_config.rst:675 ../Doc/c-api/init_config.rst:1094 +#: ../Doc/c-api/init_config.rst:288 ../Doc/c-api/init_config.rst:679 +#: ../Doc/c-api/init_config.rst:721 ../Doc/c-api/init_config.rst:1150 msgid "Default: ``-1`` in Python mode, ``0`` in isolated mode." msgstr "Por defecto: ``-1`` en modo Python, ``0`` en modo aislado." @@ -409,7 +416,7 @@ msgstr "Por defecto: ``-1`` en modo Python, ``0`` en modo aislado." msgid "Isolated mode: see :c:member:`PyConfig.isolated`." msgstr "Modo aislado: consulte :c:member:`PyConfig.isolated`." -#: ../Doc/c-api/init_config.rst:294 ../Doc/c-api/init_config.rst:798 +#: ../Doc/c-api/init_config.rst:294 ../Doc/c-api/init_config.rst:846 msgid "Default: ``0`` in Python mode, ``1`` in isolated mode." msgstr "Por defecto: ``0`` en modo Python, ``1`` en modo aislado." @@ -437,7 +444,7 @@ msgstr "" "Inicializado desde valor de variable de entorno :envvar:" "`PYTHONLEGACYWINDOWSFSENCODING`." -#: ../Doc/c-api/init_config.rst:307 ../Doc/c-api/init_config.rst:811 +#: ../Doc/c-api/init_config.rst:307 ../Doc/c-api/init_config.rst:859 msgid "" "Only available on Windows. ``#ifdef MS_WINDOWS`` macro can be used for " "Windows specific code." @@ -445,14 +452,14 @@ msgstr "" "Solo disponible en Windows. La macro ``#ifdef MS_WINDOWS`` se puede usar " "para el código específico de Windows." -#: ../Doc/c-api/init_config.rst:310 ../Doc/c-api/init_config.rst:588 -#: ../Doc/c-api/init_config.rst:595 ../Doc/c-api/init_config.rst:646 -#: ../Doc/c-api/init_config.rst:756 ../Doc/c-api/init_config.rst:770 -#: ../Doc/c-api/init_config.rst:784 ../Doc/c-api/init_config.rst:814 -#: ../Doc/c-api/init_config.rst:828 ../Doc/c-api/init_config.rst:881 -#: ../Doc/c-api/init_config.rst:930 ../Doc/c-api/init_config.rst:990 -#: ../Doc/c-api/init_config.rst:1029 ../Doc/c-api/init_config.rst:1058 -#: ../Doc/c-api/init_config.rst:1129 +#: ../Doc/c-api/init_config.rst:310 ../Doc/c-api/init_config.rst:618 +#: ../Doc/c-api/init_config.rst:625 ../Doc/c-api/init_config.rst:692 +#: ../Doc/c-api/init_config.rst:801 ../Doc/c-api/init_config.rst:815 +#: ../Doc/c-api/init_config.rst:829 ../Doc/c-api/init_config.rst:862 +#: ../Doc/c-api/init_config.rst:876 ../Doc/c-api/init_config.rst:936 +#: ../Doc/c-api/init_config.rst:985 ../Doc/c-api/init_config.rst:1045 +#: ../Doc/c-api/init_config.rst:1085 ../Doc/c-api/init_config.rst:1114 +#: ../Doc/c-api/init_config.rst:1187 msgid "Default: ``0``." msgstr "Predeterminado: ``0``." @@ -476,7 +483,7 @@ msgstr "" "¿Utiliza :ref:`variables de entorno `? Consulte :c:member:" "`PyConfig.use_environment`." -#: ../Doc/c-api/init_config.rst:326 ../Doc/c-api/init_config.rst:1103 +#: ../Doc/c-api/init_config.rst:326 ../Doc/c-api/init_config.rst:1161 msgid "Default: ``1`` in Python config and ``0`` in isolated config." msgstr "" "Predeterminado: ``1`` en la configuración de Python y ``0`` en la " @@ -487,39 +494,44 @@ msgid "If non-zero, enable the :ref:`Python UTF-8 Mode `." msgstr "Si es distinto de cero, habilite :ref:`Python UTF-8 Mode `." #: ../Doc/c-api/init_config.rst:332 +#, fuzzy msgid "" -"Set by the :option:`-X utf8 <-X>` command line option and the :envvar:" -"`PYTHONUTF8` environment variable." +"Set to ``0`` or ``1`` by the :option:`-X utf8 <-X>` command line option and " +"the :envvar:`PYTHONUTF8` environment variable." msgstr "" "Establecido por la opción de línea de comando :option:`-X utf8 <-X>` y la " "variable de entorno :envvar:`PYTHONUTF8`." #: ../Doc/c-api/init_config.rst:335 +msgid "Also set to ``1`` if the ``LC_CTYPE`` locale is ``C`` or ``POSIX``." +msgstr "" + +#: ../Doc/c-api/init_config.rst:337 msgid "Default: ``-1`` in Python config and ``0`` in isolated config." msgstr "" "Predeterminado: ``-1`` en la configuración de Python y ``0`` en la " "configuración aislada." -#: ../Doc/c-api/init_config.rst:341 +#: ../Doc/c-api/init_config.rst:343 msgid "Preinitialize Python with PyPreConfig" msgstr "Preinicialización de Python con PyPreConfig" -#: ../Doc/c-api/init_config.rst:343 +#: ../Doc/c-api/init_config.rst:345 msgid "The preinitialization of Python:" msgstr "La preinicialización de Python:" -#: ../Doc/c-api/init_config.rst:345 +#: ../Doc/c-api/init_config.rst:347 msgid "Set the Python memory allocators (:c:member:`PyPreConfig.allocator`)" msgstr "" "Establecer los asignadores de memoria de Python (:c:member:`PyPreConfig." "allocator`)" -#: ../Doc/c-api/init_config.rst:346 +#: ../Doc/c-api/init_config.rst:348 msgid "Configure the LC_CTYPE locale (:term:`locale encoding`)" msgstr "" "Configurar la configuración regional LC_CTYPE (:term:`locale encoding`)" -#: ../Doc/c-api/init_config.rst:347 +#: ../Doc/c-api/init_config.rst:349 msgid "" "Set the :ref:`Python UTF-8 Mode ` (:c:member:`PyPreConfig." "utf8_mode`)" @@ -527,7 +539,7 @@ msgstr "" "Establecer el :ref:`Python UTF-8 Mode ` (:c:member:`PyPreConfig." "utf8_mode`)" -#: ../Doc/c-api/init_config.rst:350 +#: ../Doc/c-api/init_config.rst:352 msgid "" "The current preconfiguration (``PyPreConfig`` type) is stored in " "``_PyRuntime.preconfig``." @@ -535,21 +547,21 @@ msgstr "" "La preconfiguración actual (tipo ``PyPreConfig``) se almacena en " "``_PyRuntime.preconfig``." -#: ../Doc/c-api/init_config.rst:353 +#: ../Doc/c-api/init_config.rst:355 msgid "Functions to preinitialize Python:" msgstr "Funciones para preinicializar Python:" -#: ../Doc/c-api/init_config.rst:357 ../Doc/c-api/init_config.rst:363 -#: ../Doc/c-api/init_config.rst:372 +#: ../Doc/c-api/init_config.rst:359 ../Doc/c-api/init_config.rst:365 +#: ../Doc/c-api/init_config.rst:374 msgid "Preinitialize Python from *preconfig* preconfiguration." msgstr "Preinicializa Python desde la preconfiguración *preconfig*." -#: ../Doc/c-api/init_config.rst:359 ../Doc/c-api/init_config.rst:368 -#: ../Doc/c-api/init_config.rst:377 +#: ../Doc/c-api/init_config.rst:361 ../Doc/c-api/init_config.rst:370 +#: ../Doc/c-api/init_config.rst:379 msgid "*preconfig* must not be ``NULL``." msgstr "*preconfig* no debe ser ``NULL``." -#: ../Doc/c-api/init_config.rst:365 +#: ../Doc/c-api/init_config.rst:367 msgid "" "Parse *argv* command line arguments (bytes strings) if :c:member:" "`~PyPreConfig.parse_argv` of *preconfig* is non-zero." @@ -557,7 +569,7 @@ msgstr "" "Analice los argumentos de la línea de comando *argv* (cadenas de bytes) si :" "c:member:`~PyPreConfig.parse_argv` de *preconfig* no es cero." -#: ../Doc/c-api/init_config.rst:374 +#: ../Doc/c-api/init_config.rst:376 msgid "" "Parse *argv* command line arguments (wide strings) if :c:member:" "`~PyPreConfig.parse_argv` of *preconfig* is non-zero." @@ -565,7 +577,7 @@ msgstr "" "Analice los argumentos de la línea de comando *argv* (cadenas anchas) si :c:" "member:`~PyPreConfig.parse_argv` de *preconfig* no es cero." -#: ../Doc/c-api/init_config.rst:379 ../Doc/c-api/init_config.rst:1191 +#: ../Doc/c-api/init_config.rst:381 ../Doc/c-api/init_config.rst:1249 msgid "" "The caller is responsible to handle exceptions (error or exit) using :c:func:" "`PyStatus_Exception` and :c:func:`Py_ExitStatusException`." @@ -574,7 +586,7 @@ msgstr "" "salida) usando :c:func:`PyStatus_Exception` y :c:func:" "`Py_ExitStatusException`." -#: ../Doc/c-api/init_config.rst:382 +#: ../Doc/c-api/init_config.rst:384 msgid "" "For :ref:`Python Configuration ` (:c:func:" "`PyPreConfig_InitPythonConfig`), if Python is initialized with command line " @@ -591,7 +603,7 @@ msgstr "" "comando :option:`-X utf8 <-X>` habilita el :ref:`Python UTF-8 Mode `." -#: ../Doc/c-api/init_config.rst:389 +#: ../Doc/c-api/init_config.rst:391 msgid "" "``PyMem_SetAllocator()`` can be called after :c:func:`Py_PreInitialize` and " "before :c:func:`Py_InitializeFromConfig` to install a custom memory " @@ -604,7 +616,7 @@ msgstr "" "`Py_PreInitialize` si :c:member:`PyPreConfig.allocator` está configurado en " "``PYMEM_ALLOCATOR_NOT_SET``." -#: ../Doc/c-api/init_config.rst:394 +#: ../Doc/c-api/init_config.rst:396 msgid "" "Python memory allocation functions like :c:func:`PyMem_RawMalloc` must not " "be used before the Python preinitialization, whereas calling directly " @@ -617,7 +629,7 @@ msgstr "" "seguro. No se debe llamar a :c:func:`Py_DecodeLocale` antes de la " "preinicialización de Python." -#: ../Doc/c-api/init_config.rst:399 +#: ../Doc/c-api/init_config.rst:401 msgid "" "Example using the preinitialization to enable the :ref:`Python UTF-8 Mode " "`::" @@ -625,16 +637,16 @@ msgstr "" "Ejemplo usando la preinicialización para habilitar el :ref:`Python UTF-8 " "Mode ` ::" -#: ../Doc/c-api/init_config.rst:421 +#: ../Doc/c-api/init_config.rst:423 msgid "PyConfig" msgstr "PyConfig" -#: ../Doc/c-api/init_config.rst:425 +#: ../Doc/c-api/init_config.rst:427 msgid "Structure containing most parameters to configure Python." msgstr "" "Estructura que contiene la mayoría de los parámetros para configurar Python." -#: ../Doc/c-api/init_config.rst:427 +#: ../Doc/c-api/init_config.rst:429 msgid "" "When done, the :c:func:`PyConfig_Clear` function must be used to release the " "configuration memory." @@ -642,11 +654,11 @@ msgstr "" "Cuando termine, se debe utilizar la función :c:func:`PyConfig_Clear` para " "liberar la memoria de configuración." -#: ../Doc/c-api/init_config.rst:430 +#: ../Doc/c-api/init_config.rst:432 msgid "Structure methods:" msgstr "Métodos de estructura:" -#: ../Doc/c-api/init_config.rst:434 +#: ../Doc/c-api/init_config.rst:436 msgid "" "Initialize configuration with the :ref:`Python Configuration `." @@ -654,7 +666,7 @@ msgstr "" "Inicialice la configuración con la :ref:`Configuración de Python `." -#: ../Doc/c-api/init_config.rst:439 +#: ../Doc/c-api/init_config.rst:441 msgid "" "Initialize configuration with the :ref:`Isolated Configuration `." @@ -662,17 +674,17 @@ msgstr "" "Inicialice la configuración con la :ref:`Configuración Aislada `." -#: ../Doc/c-api/init_config.rst:444 +#: ../Doc/c-api/init_config.rst:446 msgid "Copy the wide character string *str* into ``*config_str``." msgstr "Copia la cadena de caracteres anchos *str* en ``*config_str``." -#: ../Doc/c-api/init_config.rst:446 ../Doc/c-api/init_config.rst:453 -#: ../Doc/c-api/init_config.rst:460 ../Doc/c-api/init_config.rst:468 -#: ../Doc/c-api/init_config.rst:474 ../Doc/c-api/init_config.rst:488 +#: ../Doc/c-api/init_config.rst:448 ../Doc/c-api/init_config.rst:455 +#: ../Doc/c-api/init_config.rst:462 ../Doc/c-api/init_config.rst:470 +#: ../Doc/c-api/init_config.rst:476 ../Doc/c-api/init_config.rst:493 msgid ":ref:`Preinitialize Python ` if needed." msgstr ":ref:`Preinicializa Python ` si es necesario." -#: ../Doc/c-api/init_config.rst:450 +#: ../Doc/c-api/init_config.rst:452 msgid "" "Decode *str* using :c:func:`Py_DecodeLocale` and set the result into " "``*config_str``." @@ -680,7 +692,7 @@ msgstr "" "Decodifique *str* usando :c:func:`Py_DecodeLocale` y establezca el resultado " "en ``*config_str``." -#: ../Doc/c-api/init_config.rst:457 +#: ../Doc/c-api/init_config.rst:459 msgid "" "Set command line arguments (:c:member:`~PyConfig.argv` member of *config*) " "from the *argv* list of wide character strings." @@ -689,7 +701,7 @@ msgstr "" "`~PyConfig.argv` de *config*) de la lista *argv* de cadenas de caracteres " "anchas." -#: ../Doc/c-api/init_config.rst:464 +#: ../Doc/c-api/init_config.rst:466 msgid "" "Set command line arguments (:c:member:`~PyConfig.argv` member of *config*) " "from the *argv* list of bytes strings. Decode bytes using :c:func:" @@ -699,21 +711,27 @@ msgstr "" "argv` de *config*) de la lista *argv* de cadenas de bytes. Decodifica bytes " "usando :c:func:`Py_DecodeLocale`." -#: ../Doc/c-api/init_config.rst:472 +#: ../Doc/c-api/init_config.rst:474 msgid "Set the list of wide strings *list* to *length* and *items*." msgstr "" "Establece la lista de cadenas de caracteres anchas *list* a *length* y " "*items*." -#: ../Doc/c-api/init_config.rst:478 +#: ../Doc/c-api/init_config.rst:480 msgid "Read all Python configuration." msgstr "Lee toda la configuración de Python." -#: ../Doc/c-api/init_config.rst:480 +#: ../Doc/c-api/init_config.rst:482 msgid "Fields which are already initialized are left unchanged." msgstr "Los campos que ya están inicializados no se modifican." -#: ../Doc/c-api/init_config.rst:482 ../Doc/c-api/init_config.rst:910 +#: ../Doc/c-api/init_config.rst:484 +msgid "" +"Fields for :ref:`path configuration ` are no longer " +"calculated or modified when calling this function, as of Python 3.11." +msgstr "" + +#: ../Doc/c-api/init_config.rst:487 ../Doc/c-api/init_config.rst:965 msgid "" "The :c:func:`PyConfig_Read` function only parses :c:member:`PyConfig.argv` " "arguments once: :c:member:`PyConfig.parse_argv` is set to ``2`` after " @@ -727,7 +745,7 @@ msgstr "" "se eliminan de :c:member:`PyConfig.argv`, analizar los argumentos dos veces " "analizaría las opciones de la aplicación como opciones de Python." -#: ../Doc/c-api/init_config.rst:490 +#: ../Doc/c-api/init_config.rst:495 msgid "" "The :c:member:`PyConfig.argv` arguments are now only parsed once, :c:member:" "`PyConfig.parse_argv` is set to ``2`` after arguments are parsed, and " @@ -738,11 +756,18 @@ msgstr "" "argumentos y los argumentos solo se analizan si :c:member:`PyConfig." "parse_argv` es igual a ``1``." -#: ../Doc/c-api/init_config.rst:498 +#: ../Doc/c-api/init_config.rst:501 +msgid "" +":c:func:`PyConfig_Read` no longer calculates all paths, and so fields listed " +"under :ref:`Python Path Configuration ` may no longer be " +"updated until :c:func:`Py_InitializeFromConfig` is called." +msgstr "" + +#: ../Doc/c-api/init_config.rst:509 msgid "Release configuration memory." msgstr "Libera memoria de configuración." -#: ../Doc/c-api/init_config.rst:500 +#: ../Doc/c-api/init_config.rst:511 msgid "" "Most ``PyConfig`` methods :ref:`preinitialize Python ` if needed. " "In that case, the Python preinitialization configuration (:c:type:" @@ -757,23 +782,23 @@ msgstr "" "type:`PyPreConfig`, deben establecerse antes de llamar a un método :c:type:" "`PyConfig`:" -#: ../Doc/c-api/init_config.rst:506 +#: ../Doc/c-api/init_config.rst:517 msgid ":c:member:`PyConfig.dev_mode`" msgstr ":c:member:`PyConfig.dev_mode`" -#: ../Doc/c-api/init_config.rst:507 +#: ../Doc/c-api/init_config.rst:518 msgid ":c:member:`PyConfig.isolated`" msgstr ":c:member:`PyConfig.isolated`" -#: ../Doc/c-api/init_config.rst:508 +#: ../Doc/c-api/init_config.rst:519 msgid ":c:member:`PyConfig.parse_argv`" msgstr ":c:member:`PyConfig.parse_argv`" -#: ../Doc/c-api/init_config.rst:509 +#: ../Doc/c-api/init_config.rst:520 msgid ":c:member:`PyConfig.use_environment`" msgstr ":c:member:`PyConfig.use_environment`" -#: ../Doc/c-api/init_config.rst:511 +#: ../Doc/c-api/init_config.rst:522 msgid "" "Moreover, if :c:func:`PyConfig_SetArgv` or :c:func:`PyConfig_SetBytesArgv` " "is used, this method must be called before other methods, since the " @@ -785,7 +810,7 @@ msgstr "" "ya que la configuración de preinicialización depende de los argumentos de la " "línea de comando (si :c:member:`parse_argv` no es cero)." -#: ../Doc/c-api/init_config.rst:516 +#: ../Doc/c-api/init_config.rst:527 msgid "" "The caller of these methods is responsible to handle exceptions (error or " "exit) using ``PyStatus_Exception()`` and ``Py_ExitStatusException()``." @@ -794,11 +819,11 @@ msgstr "" "(error o salida) usando ``PyStatus_Exception()`` y " "``Py_ExitStatusException()``." -#: ../Doc/c-api/init_config.rst:523 +#: ../Doc/c-api/init_config.rst:534 msgid "Command line arguments: :data:`sys.argv`." msgstr "Argumentos de la línea de comando: :data:`sys.argv`." -#: ../Doc/c-api/init_config.rst:525 +#: ../Doc/c-api/init_config.rst:536 msgid "" "Set :c:member:`~PyConfig.parse_argv` to ``1`` to parse :c:member:`~PyConfig." "argv` the same way the regular Python parses Python command line arguments " @@ -809,7 +834,7 @@ msgstr "" "de la línea de comandos de Python y luego quita los argumentos de Python de :" "c:member:`~PyConfig.argv`." -#: ../Doc/c-api/init_config.rst:530 +#: ../Doc/c-api/init_config.rst:541 msgid "" "If :c:member:`~PyConfig.argv` is empty, an empty string is added to ensure " "that :data:`sys.argv` always exists and is never empty." @@ -817,94 +842,138 @@ msgstr "" "Si :c:member:`~PyConfig.argv` está vacío, se agrega una cadena vacía para " "garantizar que :data:`sys.argv` siempre exista y nunca esté vacío." -#: ../Doc/c-api/init_config.rst:533 ../Doc/c-api/init_config.rst:541 -#: ../Doc/c-api/init_config.rst:553 ../Doc/c-api/init_config.rst:561 -#: ../Doc/c-api/init_config.rst:653 ../Doc/c-api/init_config.rst:662 -#: ../Doc/c-api/init_config.rst:745 ../Doc/c-api/init_config.rst:851 -#: ../Doc/c-api/init_config.rst:949 ../Doc/c-api/init_config.rst:967 -#: ../Doc/c-api/init_config.rst:981 ../Doc/c-api/init_config.rst:998 -#: ../Doc/c-api/init_config.rst:1010 ../Doc/c-api/init_config.rst:1018 +#: ../Doc/c-api/init_config.rst:544 ../Doc/c-api/init_config.rst:571 +#: ../Doc/c-api/init_config.rst:583 ../Doc/c-api/init_config.rst:591 +#: ../Doc/c-api/init_config.rst:699 ../Doc/c-api/init_config.rst:708 +#: ../Doc/c-api/init_config.rst:790 ../Doc/c-api/init_config.rst:906 +#: ../Doc/c-api/init_config.rst:1004 ../Doc/c-api/init_config.rst:1022 +#: ../Doc/c-api/init_config.rst:1036 ../Doc/c-api/init_config.rst:1053 +#: ../Doc/c-api/init_config.rst:1066 ../Doc/c-api/init_config.rst:1074 msgid "Default: ``NULL``." msgstr "Valor predeterminado: ``NULL``." -#: ../Doc/c-api/init_config.rst:535 +#: ../Doc/c-api/init_config.rst:546 msgid "See also the :c:member:`~PyConfig.orig_argv` member." msgstr "Consulte también el miembro :c:member:`~PyConfig.orig_argv`." -#: ../Doc/c-api/init_config.rst:539 +#: ../Doc/c-api/init_config.rst:550 +msgid "" +"If equals to zero, ``Py_RunMain()`` prepends a potentially unsafe path to :" +"data:`sys.path` at startup:" +msgstr "" + +#: ../Doc/c-api/init_config.rst:553 +msgid "" +"If :c:member:`argv[0] ` is equal to ``L\"-m\"`` (``python -m " +"module``), prepend the current working directory." +msgstr "" + +#: ../Doc/c-api/init_config.rst:555 +msgid "" +"If running a script (``python script.py``), prepend the script's directory. " +"If it's a symbolic link, resolve symbolic links." +msgstr "" + +#: ../Doc/c-api/init_config.rst:557 +msgid "" +"Otherwise (``python -c code`` and ``python``), prepend an empty string, " +"which means the current working directory." +msgstr "" + +#: ../Doc/c-api/init_config.rst:560 +#, fuzzy +msgid "" +"Set to ``1`` by the :option:`-P` command line option and the :envvar:" +"`PYTHONSAFEPATH` environment variable." +msgstr "" +"Establecido en 0 por la opción de línea de comando :option:`-u` y la " +"variable de entorno :envvar:`PYTHONUNBUFFERED`." + +#: ../Doc/c-api/init_config.rst:563 +#, fuzzy +msgid "Default: ``0`` in Python config, ``1`` in isolated config." +msgstr "" +"Predeterminado: ``1`` en la configuración de Python, ``0`` en la " +"configuración aislada." + +#: ../Doc/c-api/init_config.rst:569 msgid ":data:`sys.base_exec_prefix`." msgstr ":data:`sys.base_exec_prefix`." -#: ../Doc/c-api/init_config.rst:543 ../Doc/c-api/init_config.rst:555 -#: ../Doc/c-api/init_config.rst:563 ../Doc/c-api/init_config.rst:655 -#: ../Doc/c-api/init_config.rst:664 ../Doc/c-api/init_config.rst:868 -#: ../Doc/c-api/init_config.rst:951 +#: ../Doc/c-api/init_config.rst:573 ../Doc/c-api/init_config.rst:585 +#: ../Doc/c-api/init_config.rst:593 ../Doc/c-api/init_config.rst:701 +#: ../Doc/c-api/init_config.rst:710 ../Doc/c-api/init_config.rst:923 +#: ../Doc/c-api/init_config.rst:1006 msgid "Part of the :ref:`Python Path Configuration ` output." msgstr "" "Parte de la salida :ref:`Python Path Configuration `." -#: ../Doc/c-api/init_config.rst:547 +#: ../Doc/c-api/init_config.rst:577 msgid "Python base executable: :data:`sys._base_executable`." msgstr "Ejecutable base de Python: :data:`sys._base_executable`." -#: ../Doc/c-api/init_config.rst:549 +#: ../Doc/c-api/init_config.rst:579 msgid "Set by the :envvar:`__PYVENV_LAUNCHER__` environment variable." msgstr "Establecido por la variable de entorno :envvar:`__PYVENV_LAUNCHER__`." -#: ../Doc/c-api/init_config.rst:551 +#: ../Doc/c-api/init_config.rst:581 msgid "Set from :c:member:`PyConfig.executable` if ``NULL``." msgstr "Establecido desde :c:member:`PyConfig.executable` si ``NULL``." -#: ../Doc/c-api/init_config.rst:559 +#: ../Doc/c-api/init_config.rst:589 msgid ":data:`sys.base_prefix`." msgstr ":data:`sys.base_prefix`." -#: ../Doc/c-api/init_config.rst:567 +#: ../Doc/c-api/init_config.rst:597 +#, fuzzy msgid "" -"If equals to 0 and :c:member:`~PyConfig.configure_c_stdio` is non-zero, " +"If equals to ``0`` and :c:member:`~PyConfig.configure_c_stdio` is non-zero, " "disable buffering on the C streams stdout and stderr." msgstr "" "Si es igual a 0 y :c:member:`~PyConfig.configure_c_stdio` no es cero, " "deshabilite el almacenamiento en búfer en las secuencias C stdout y stderr." -#: ../Doc/c-api/init_config.rst:570 +#: ../Doc/c-api/init_config.rst:600 +#, fuzzy msgid "" -"Set to 0 by the :option:`-u` command line option and the :envvar:" +"Set to ``0`` by the :option:`-u` command line option and the :envvar:" "`PYTHONUNBUFFERED` environment variable." msgstr "" "Establecido en 0 por la opción de línea de comando :option:`-u` y la " "variable de entorno :envvar:`PYTHONUNBUFFERED`." -#: ../Doc/c-api/init_config.rst:573 +#: ../Doc/c-api/init_config.rst:603 msgid "stdin is always opened in buffered mode." msgstr "stdin siempre se abre en modo de búfer." -#: ../Doc/c-api/init_config.rst:575 ../Doc/c-api/init_config.rst:1046 -#: ../Doc/c-api/init_config.rst:1161 +#: ../Doc/c-api/init_config.rst:605 ../Doc/c-api/init_config.rst:638 +#: ../Doc/c-api/init_config.rst:1102 ../Doc/c-api/init_config.rst:1219 msgid "Default: ``1``." msgstr "Predeterminado: ``1``." -#: ../Doc/c-api/init_config.rst:579 +#: ../Doc/c-api/init_config.rst:609 +#, fuzzy msgid "" -"If equals to 1, issue a warning when comparing :class:`bytes` or :class:" +"If equals to ``1``, issue a warning when comparing :class:`bytes` or :class:" "`bytearray` with :class:`str`, or comparing :class:`bytes` with :class:`int`." msgstr "" "Si es igual a 1, emite una advertencia al comparar :class:`bytes` o :class:" "`bytearray` con :class:`str`, o al comparar :class:`bytes` con :class:`int`." -#: ../Doc/c-api/init_config.rst:583 +#: ../Doc/c-api/init_config.rst:613 +#, fuzzy msgid "" -"If equal or greater to 2, raise a :exc:`BytesWarning` exception in these " +"If equal or greater to ``2``, raise a :exc:`BytesWarning` exception in these " "cases." msgstr "" "Si es igual o mayor a 2, lanza una excepción :exc:`BytesWarning` en estos " "casos." -#: ../Doc/c-api/init_config.rst:586 +#: ../Doc/c-api/init_config.rst:616 msgid "Incremented by the :option:`-b` command line option." msgstr "Incrementado por la opción de línea de comando :option:`-b`." -#: ../Doc/c-api/init_config.rst:592 +#: ../Doc/c-api/init_config.rst:622 msgid "" "If non-zero, emit a :exc:`EncodingWarning` warning when :class:`io." "TextIOWrapper` uses its default encoding. See :ref:`io-encoding-warning` for " @@ -914,7 +983,23 @@ msgstr "" "`io.TextIOWrapper` usa su codificación predeterminada. Consulte :ref:`io-" "encoding-warning` para obtener más detalles." -#: ../Doc/c-api/init_config.rst:601 +#: ../Doc/c-api/init_config.rst:631 +msgid "" +"If equals to ``0``, disables the inclusion of the end line and column " +"mappings in code objects. Also disables traceback printing carets to " +"specific error locations." +msgstr "" + +#: ../Doc/c-api/init_config.rst:635 +#, fuzzy +msgid "" +"Set to ``0`` by the :envvar:`PYTHONNODEBUGRANGES` environment variable and " +"by the :option:`-X no_debug_ranges <-X>` command line option." +msgstr "" +"Establecido en ``0`` por las opciones de línea de comando :option:`-s` y :" +"option:`-I`." + +#: ../Doc/c-api/init_config.rst:644 msgid "" "Control the validation behavior of hash-based ``.pyc`` files: value of the :" "option:`--check-hash-based-pycs` command line option." @@ -923,11 +1008,11 @@ msgstr "" "hash: valor de la opción de línea de comando :option:`--check-hash-based-" "pycs`." -#: ../Doc/c-api/init_config.rst:604 +#: ../Doc/c-api/init_config.rst:647 msgid "Valid values:" msgstr "Valores válidos:" -#: ../Doc/c-api/init_config.rst:606 +#: ../Doc/c-api/init_config.rst:649 msgid "" "``L\"always\"``: Hash the source file for invalidation regardless of value " "of the 'check_source' flag." @@ -935,12 +1020,12 @@ msgstr "" "``L\"always\"``: Calcula el hash el archivo fuente para invalidación " "independientemente del valor de la marca 'check_source'." -#: ../Doc/c-api/init_config.rst:608 +#: ../Doc/c-api/init_config.rst:651 msgid "``L\"never\"``: Assume that hash-based pycs always are valid." msgstr "" "``L\"never\"``: suponga que los pycs basados en hash siempre son válidos." -#: ../Doc/c-api/init_config.rst:609 +#: ../Doc/c-api/init_config.rst:652 msgid "" "``L\"default\"``: The 'check_source' flag in hash-based pycs determines " "invalidation." @@ -948,26 +1033,26 @@ msgstr "" "``L\"default\"``: El indicador 'check_source' en pycs basados en hash " "determina la invalidación." -#: ../Doc/c-api/init_config.rst:612 +#: ../Doc/c-api/init_config.rst:655 msgid "Default: ``L\"default\"``." msgstr "Predeterminado: ``L\"default\"``." -#: ../Doc/c-api/init_config.rst:614 +#: ../Doc/c-api/init_config.rst:657 msgid "See also :pep:`552` \"Deterministic pycs\"." msgstr "Consulte también :pep:`552` \"Pycs deterministas\"." -#: ../Doc/c-api/init_config.rst:618 +#: ../Doc/c-api/init_config.rst:661 msgid "If non-zero, configure C standard streams:" msgstr "Si es distinto de cero, configure los flujos estándar de C:" -#: ../Doc/c-api/init_config.rst:620 +#: ../Doc/c-api/init_config.rst:663 msgid "" "On Windows, set the binary mode (``O_BINARY``) on stdin, stdout and stderr." msgstr "" "En Windows, configure el modo binario (``O_BINARY``) en stdin, stdout y " "stderr." -#: ../Doc/c-api/init_config.rst:622 +#: ../Doc/c-api/init_config.rst:665 msgid "" "If :c:member:`~PyConfig.buffered_stdio` equals zero, disable buffering of " "stdin, stdout and stderr streams." @@ -975,7 +1060,7 @@ msgstr "" "Si :c:member:`~PyConfig.buffered_stdio` es igual a cero, deshabilite el " "almacenamiento en búfer de los flujos stdin, stdout y stderr." -#: ../Doc/c-api/init_config.rst:624 +#: ../Doc/c-api/init_config.rst:667 msgid "" "If :c:member:`~PyConfig.interactive` is non-zero, enable stream buffering on " "stdin and stdout (only stdout on Windows)." @@ -983,27 +1068,37 @@ msgstr "" "Si :c:member:`~PyConfig.interactive` no es cero, habilite el almacenamiento " "en búfer de flujo en stdin y stdout (solo stdout en Windows)." -#: ../Doc/c-api/init_config.rst:631 +#: ../Doc/c-api/init_config.rst:674 msgid "If non-zero, enable the :ref:`Python Development Mode `." msgstr "" "Si es distinto de cero, habilita :ref:`Modo de desarrollo de Python " "`." -#: ../Doc/c-api/init_config.rst:637 -msgid "Dump Python refererences?" +#: ../Doc/c-api/init_config.rst:676 +#, fuzzy +msgid "" +"Set to ``1`` by the :option:`-X dev <-X>` option and the :envvar:" +"`PYTHONDEVMODE` environment variable." +msgstr "" +"Configure el ``1`` mediante la opción :option:`-X importtime <-X>` y la " +"variable de entorno :envvar:`PYTHONPROFILEIMPORTTIME`." + +#: ../Doc/c-api/init_config.rst:683 +#, fuzzy +msgid "Dump Python references?" msgstr "¿Volcar referencias de Python?" -#: ../Doc/c-api/init_config.rst:639 +#: ../Doc/c-api/init_config.rst:685 msgid "If non-zero, dump all objects which are still alive at exit." msgstr "" "Si no es cero, volcar todos los objetos que aún están vivos en la salida." -#: ../Doc/c-api/init_config.rst:641 +#: ../Doc/c-api/init_config.rst:687 msgid "Set to ``1`` by the :envvar:`PYTHONDUMPREFS` environment variable." msgstr "" "Establecido en ``1`` por la variable de entorno :envvar:`PYTHONDUMPREFS`." -#: ../Doc/c-api/init_config.rst:643 +#: ../Doc/c-api/init_config.rst:689 msgid "" "Need a special build of Python with the ``Py_TRACE_REFS`` macro defined: see " "the :option:`configure --with-trace-refs option <--with-trace-refs>`." @@ -1012,7 +1107,7 @@ msgstr "" "definida: consulte la :option:`opción de configure --with-trace-refs option " "<--with-trace-refs>`." -#: ../Doc/c-api/init_config.rst:650 +#: ../Doc/c-api/init_config.rst:696 msgid "" "The site-specific directory prefix where the platform-dependent Python files " "are installed: :data:`sys.exec_prefix`." @@ -1020,7 +1115,7 @@ msgstr "" "El prefijo de directorio específico del sitio donde se instalan los archivos " "Python dependientes de la plataforma: :data:`sys.exec_prefix`." -#: ../Doc/c-api/init_config.rst:659 +#: ../Doc/c-api/init_config.rst:705 msgid "" "The absolute path of the executable binary for the Python interpreter: :data:" "`sys.executable`." @@ -1028,15 +1123,15 @@ msgstr "" "La ruta absoluta del binario ejecutable para el intérprete de Python: :data:" "`sys.executable`." -#: ../Doc/c-api/init_config.rst:668 +#: ../Doc/c-api/init_config.rst:714 msgid "Enable faulthandler?" msgstr "¿Habilitar administrador de fallas?" -#: ../Doc/c-api/init_config.rst:670 +#: ../Doc/c-api/init_config.rst:716 msgid "If non-zero, call :func:`faulthandler.enable` at startup." msgstr "Si no es cero, llama a :func:`faulthandler.enable` al inicio." -#: ../Doc/c-api/init_config.rst:672 +#: ../Doc/c-api/init_config.rst:718 msgid "" "Set to ``1`` by :option:`-X faulthandler <-X>` and the :envvar:" "`PYTHONFAULTHANDLER` environment variable." @@ -1044,7 +1139,7 @@ msgstr "" "Establecido en ``1`` por :option:`-X faulthandler <-X>` y la variable de " "entorno :envvar:`PYTHONFAULTHANDLER`." -#: ../Doc/c-api/init_config.rst:679 +#: ../Doc/c-api/init_config.rst:725 msgid "" ":term:`Filesystem encoding `: :func:" "`sys.getfilesystemencoding`." @@ -1052,12 +1147,12 @@ msgstr "" ":term:`Codificación del sistema de archvios `: :func:`sys.getfilesystemencoding`." -#: ../Doc/c-api/init_config.rst:682 +#: ../Doc/c-api/init_config.rst:728 msgid "On macOS, Android and VxWorks: use ``\"utf-8\"`` by default." msgstr "" "En macOS, Android y VxWorks: use ``\"utf-8\"`` de forma predeterminada." -#: ../Doc/c-api/init_config.rst:684 +#: ../Doc/c-api/init_config.rst:730 msgid "" "On Windows: use ``\"utf-8\"`` by default, or ``\"mbcs\"`` if :c:member:" "`~PyPreConfig.legacy_windows_fs_encoding` of :c:type:`PyPreConfig` is non-" @@ -1067,51 +1162,52 @@ msgstr "" "c:member:`~PyPreConfig.legacy_windows_fs_encoding` de :c:type:`PyPreConfig` " "no es cero." -#: ../Doc/c-api/init_config.rst:688 +#: ../Doc/c-api/init_config.rst:734 msgid "Default encoding on other platforms:" msgstr "Codificación predeterminada en otras plataformas:" -#: ../Doc/c-api/init_config.rst:690 +#: ../Doc/c-api/init_config.rst:736 msgid "``\"utf-8\"`` if :c:member:`PyPreConfig.utf8_mode` is non-zero." msgstr "" "``\"utf-8\"`` si :c:member:`PyPreConfig.utf8_mode` es distinto de cero." -#: ../Doc/c-api/init_config.rst:691 +#: ../Doc/c-api/init_config.rst:737 +#, fuzzy msgid "" "``\"ascii\"`` if Python detects that ``nl_langinfo(CODESET)`` announces the " -"ASCII encoding (or Roman8 encoding on HP-UX), whereas the ``mbstowcs()`` " -"function decodes from a different encoding (usually Latin1)." +"ASCII encoding, whereas the ``mbstowcs()`` function decodes from a different " +"encoding (usually Latin1)." msgstr "" "``\"ascii\"`` si Python detecta que ``nl_langinfo(CODESET)`` anuncia la " "codificación ASCII (o la codificación Roman8 en HP-UX), mientras que la " "función ``mbstowcs()`` descodifica a partir de una codificación diferente " "(generalmente Latin1)." -#: ../Doc/c-api/init_config.rst:695 +#: ../Doc/c-api/init_config.rst:740 msgid "``\"utf-8\"`` if ``nl_langinfo(CODESET)`` returns an empty string." msgstr "``\"utf-8\"`` si ``nl_langinfo(CODESET)`` retorna una cadena vacía." -#: ../Doc/c-api/init_config.rst:696 +#: ../Doc/c-api/init_config.rst:741 msgid "" "Otherwise, use the :term:`locale encoding`: ``nl_langinfo(CODESET)`` result." msgstr "" "De lo contrario, utilice el resultado :term:`locale encoding`: " "``nl_langinfo(CODESET)``." -#: ../Doc/c-api/init_config.rst:699 +#: ../Doc/c-api/init_config.rst:744 msgid "" "At Python startup, the encoding name is normalized to the Python codec name. " "For example, ``\"ANSI_X3.4-1968\"`` is replaced with ``\"ascii\"``." msgstr "" "Al inicio de Python, el nombre de codificación se normaliza al nombre del " -"códec de Python. Por ejemplo, ``\"ANSI_X3.4-1968\"`` se reemplaza por ``" -"\"ascii\"``." +"códec de Python. Por ejemplo, ``\"ANSI_X3.4-1968\"`` se reemplaza por " +"``\"ascii\"``." -#: ../Doc/c-api/init_config.rst:702 +#: ../Doc/c-api/init_config.rst:747 msgid "See also the :c:member:`~PyConfig.filesystem_errors` member." msgstr "Consulte también el miembro :c:member:`~PyConfig.filesystem_errors`." -#: ../Doc/c-api/init_config.rst:706 +#: ../Doc/c-api/init_config.rst:751 msgid "" ":term:`Filesystem error handler `: :" "func:`sys.getfilesystemencodeerrors`." @@ -1119,47 +1215,47 @@ msgstr "" ":term:`Manejador de errores del sistema de archivos `: :func:`sys.getfilesystemencodeerrors`." -#: ../Doc/c-api/init_config.rst:709 +#: ../Doc/c-api/init_config.rst:754 msgid "" "On Windows: use ``\"surrogatepass\"`` by default, or ``\"replace\"`` if :c:" "member:`~PyPreConfig.legacy_windows_fs_encoding` of :c:type:`PyPreConfig` is " "non-zero." msgstr "" -"En Windows: utilice ``\"surrogatepass\"`` de forma predeterminada o ``" -"\"replace\"`` si :c:member:`~PyPreConfig.legacy_windows_fs_encoding` de :c:" +"En Windows: utilice ``\"surrogatepass\"`` de forma predeterminada o " +"``\"replace\"`` si :c:member:`~PyPreConfig.legacy_windows_fs_encoding` de :c:" "type:`PyPreConfig` no es cero." -#: ../Doc/c-api/init_config.rst:713 +#: ../Doc/c-api/init_config.rst:758 msgid "On other platforms: use ``\"surrogateescape\"`` by default." msgstr "" "En otras plataformas: utilice ``\"surrogateescape\"`` de forma " "predeterminada." -#: ../Doc/c-api/init_config.rst:715 +#: ../Doc/c-api/init_config.rst:760 msgid "Supported error handlers:" msgstr "Controladores de errores admitidos:" -#: ../Doc/c-api/init_config.rst:717 +#: ../Doc/c-api/init_config.rst:762 msgid "``\"strict\"``" msgstr "``\"strict\"``" -#: ../Doc/c-api/init_config.rst:718 +#: ../Doc/c-api/init_config.rst:763 msgid "``\"surrogateescape\"``" msgstr "``\"surrogateescape\"``" -#: ../Doc/c-api/init_config.rst:719 +#: ../Doc/c-api/init_config.rst:764 msgid "``\"surrogatepass\"`` (only supported with the UTF-8 encoding)" msgstr "``\"surrogatepass\"`` (solo compatible con la codificación UTF-8)" -#: ../Doc/c-api/init_config.rst:721 +#: ../Doc/c-api/init_config.rst:766 msgid "See also the :c:member:`~PyConfig.filesystem_encoding` member." msgstr "Consulte también el miembro :c:member:`~PyConfig.filesystem_encoding`." -#: ../Doc/c-api/init_config.rst:726 +#: ../Doc/c-api/init_config.rst:771 msgid "Randomized hash function seed." msgstr "Funciones de semillas aleatorias hash." -#: ../Doc/c-api/init_config.rst:728 +#: ../Doc/c-api/init_config.rst:773 msgid "" "If :c:member:`~PyConfig.use_hash_seed` is zero, a seed is chosen randomly at " "Python startup, and :c:member:`~PyConfig.hash_seed` is ignored." @@ -1167,22 +1263,22 @@ msgstr "" "Si :c:member:`~PyConfig.use_hash_seed` es cero, se elige una semilla al azar " "en el inicio de Python y se ignora :c:member:`~PyConfig.hash_seed`." -#: ../Doc/c-api/init_config.rst:731 +#: ../Doc/c-api/init_config.rst:776 msgid "Set by the :envvar:`PYTHONHASHSEED` environment variable." msgstr "Establecido por la variable de entorno :envvar:`PYTHONHASHSEED`." -#: ../Doc/c-api/init_config.rst:733 +#: ../Doc/c-api/init_config.rst:778 msgid "" "Default *use_hash_seed* value: ``-1`` in Python mode, ``0`` in isolated mode." msgstr "" "Valor predeterminado de *use_hash_seed*: ``-1`` en modo Python, ``0`` en " "modo aislado." -#: ../Doc/c-api/init_config.rst:738 +#: ../Doc/c-api/init_config.rst:783 msgid "Python home directory." msgstr "Directorio de inicio de Python." -#: ../Doc/c-api/init_config.rst:740 +#: ../Doc/c-api/init_config.rst:785 msgid "" "If :c:func:`Py_SetPythonHome` has been called, use its argument if it is not " "``NULL``." @@ -1190,22 +1286,22 @@ msgstr "" "Si se ha llamado a :c:func:`Py_SetPythonHome`, use su argumento si no es " "``NULL``." -#: ../Doc/c-api/init_config.rst:743 +#: ../Doc/c-api/init_config.rst:788 msgid "Set by the :envvar:`PYTHONHOME` environment variable." msgstr "Establecido por la variable de entorno :envvar:`PYTHONHOME`." -#: ../Doc/c-api/init_config.rst:747 ../Doc/c-api/init_config.rst:840 -#: ../Doc/c-api/init_config.rst:853 ../Doc/c-api/init_config.rst:942 -#: ../Doc/c-api/init_config.rst:969 +#: ../Doc/c-api/init_config.rst:792 ../Doc/c-api/init_config.rst:888 +#: ../Doc/c-api/init_config.rst:908 ../Doc/c-api/init_config.rst:994 +#: ../Doc/c-api/init_config.rst:1024 msgid "Part of the :ref:`Python Path Configuration ` input." msgstr "" "Parte de la entrada :ref:`Python Path Configuration `." -#: ../Doc/c-api/init_config.rst:751 +#: ../Doc/c-api/init_config.rst:796 msgid "If non-zero, profile import time." msgstr "Si no es cero, el tiempo de importación del perfil." -#: ../Doc/c-api/init_config.rst:753 +#: ../Doc/c-api/init_config.rst:798 msgid "" "Set the ``1`` by the :option:`-X importtime <-X>` option and the :envvar:" "`PYTHONPROFILEIMPORTTIME` environment variable." @@ -1213,23 +1309,25 @@ msgstr "" "Configure el ``1`` mediante la opción :option:`-X importtime <-X>` y la " "variable de entorno :envvar:`PYTHONPROFILEIMPORTTIME`." -#: ../Doc/c-api/init_config.rst:760 +#: ../Doc/c-api/init_config.rst:805 msgid "Enter interactive mode after executing a script or a command." msgstr "" "Ingresa al modo interactivo después de ejecutar un script o un comando." -#: ../Doc/c-api/init_config.rst:762 +#: ../Doc/c-api/init_config.rst:807 +#, fuzzy msgid "" -"If greater than 0, enable inspect: when a script is passed as first argument " -"or the -c option is used, enter interactive mode after executing the script " -"or the command, even when :data:`sys.stdin` does not appear to be a terminal." +"If greater than ``0``, enable inspect: when a script is passed as first " +"argument or the -c option is used, enter interactive mode after executing " +"the script or the command, even when :data:`sys.stdin` does not appear to be " +"a terminal." msgstr "" "Si es mayor que 0, habilite inspeccionar: cuando se pasa una secuencia de " "comandos como primer argumento o se usa la opción -c, ingrese al modo " "interactivo después de ejecutar la secuencia de comandos o el comando, " "incluso cuando :data:`sys.stdin` no parezca ser una terminal." -#: ../Doc/c-api/init_config.rst:767 +#: ../Doc/c-api/init_config.rst:812 msgid "" "Incremented by the :option:`-i` command line option. Set to ``1`` if the :" "envvar:`PYTHONINSPECT` environment variable is non-empty." @@ -1237,37 +1335,50 @@ msgstr "" "Incrementado por la opción de línea de comando :option:`-i`. Establecido en " "``1`` si la variable de entorno :envvar:`PYTHONINSPECT` no está vacía." -#: ../Doc/c-api/init_config.rst:774 +#: ../Doc/c-api/init_config.rst:819 msgid "Install Python signal handlers?" msgstr "¿Instalar controladores de señales de Python?" -#: ../Doc/c-api/init_config.rst:776 ../Doc/c-api/init_config.rst:916 -#: ../Doc/c-api/init_config.rst:940 ../Doc/c-api/init_config.rst:1113 +#: ../Doc/c-api/init_config.rst:821 ../Doc/c-api/init_config.rst:971 +#: ../Doc/c-api/init_config.rst:992 ../Doc/c-api/init_config.rst:1171 msgid "Default: ``1`` in Python mode, ``0`` in isolated mode." msgstr "Por defecto: ``1`` en modo Python, ``0`` en modo aislado." -#: ../Doc/c-api/init_config.rst:780 -msgid "If greater than 0, enable the interactive mode (REPL)." +#: ../Doc/c-api/init_config.rst:825 +#, fuzzy +msgid "If greater than ``0``, enable the interactive mode (REPL)." msgstr "Si es mayor que 0, habilita el modo interactivo (REPL)." -#: ../Doc/c-api/init_config.rst:782 +#: ../Doc/c-api/init_config.rst:827 msgid "Incremented by the :option:`-i` command line option." msgstr "Incrementado por la opción de línea de comando :option:`-i`." -#: ../Doc/c-api/init_config.rst:788 -msgid "If greater than 0, enable isolated mode:" +#: ../Doc/c-api/init_config.rst:833 +#, fuzzy +msgid "If greater than ``0``, enable isolated mode:" msgstr "Si es mayor que 0, habilite el modo aislado:" -#: ../Doc/c-api/init_config.rst:790 +#: ../Doc/c-api/init_config.rst:835 msgid "" -":data:`sys.path` contains neither the script's directory (computed from " -"``argv[0]`` or the current directory) nor the user's site-packages directory." +"Set :c:member:`~PyConfig.safe_path` to ``1``: don't prepend a potentially " +"unsafe path to :data:`sys.path` at Python startup." msgstr "" -":data:`sys.path` no contiene ni el directorio del script (calculado a partir " -"de ``argv[0]`` o el directorio actual) ni el directorio de paquetes del " -"sitio del usuario." -#: ../Doc/c-api/init_config.rst:793 +#: ../Doc/c-api/init_config.rst:838 ../Doc/c-api/init_config.rst:1469 +#, fuzzy +msgid "Set :c:member:`~PyConfig.use_environment` to ``0``." +msgstr ":c:member:`PyConfig.use_environment`" + +#: ../Doc/c-api/init_config.rst:839 +#, fuzzy +msgid "" +"Set :c:member:`~PyConfig.user_site_directory` to ``0``: don't add the user " +"site directory to :data:`sys.path`." +msgstr "" +"Si es distinto de cero, agregue el directorio del sitio del usuario a :data:" +"`sys.path`." + +#: ../Doc/c-api/init_config.rst:841 msgid "" "Python REPL doesn't import :mod:`readline` nor enable default readline " "configuration on interactive prompts." @@ -1275,19 +1386,17 @@ msgstr "" "Python REPL no importa :mod:`readline` ni habilita la configuración " "predeterminada de readline en mensajes interactivos." -#: ../Doc/c-api/init_config.rst:795 -msgid "" -"Set :c:member:`~PyConfig.use_environment` and :c:member:`~PyConfig." -"user_site_directory` to 0." +#: ../Doc/c-api/init_config.rst:844 +#, fuzzy +msgid "Set to ``1`` by the :option:`-I` command line option." msgstr "" -"Establece :c:member:`~PyConfig.use_environment` y :c:member:`~PyConfig." -"user_site_directory` en 0." +"Establecido en ``1`` mediante la opción de línea de comando :option:`-x`." -#: ../Doc/c-api/init_config.rst:800 +#: ../Doc/c-api/init_config.rst:848 msgid "See also :c:member:`PyPreConfig.isolated`." msgstr "Ver también :c:member:`PyPreConfig.isolated`." -#: ../Doc/c-api/init_config.rst:804 +#: ../Doc/c-api/init_config.rst:852 msgid "" "If non-zero, use :class:`io.FileIO` instead of :class:`io.WindowsConsoleIO` " "for :data:`sys.stdin`, :data:`sys.stdout` and :data:`sys.stderr`." @@ -1296,7 +1405,7 @@ msgstr "" "WindowsConsoleIO` para :data:`sys.stdin`, :data:`sys.stdout` y :data:`sys." "stderr`." -#: ../Doc/c-api/init_config.rst:808 +#: ../Doc/c-api/init_config.rst:856 msgid "" "Set to ``1`` if the :envvar:`PYTHONLEGACYWINDOWSSTDIO` environment variable " "is set to a non-empty string." @@ -1304,13 +1413,13 @@ msgstr "" "Establecido en ``1`` si la variable de entorno :envvar:" "`PYTHONLEGACYWINDOWSSTDIO` está establecida en una cadena no vacía." -#: ../Doc/c-api/init_config.rst:816 +#: ../Doc/c-api/init_config.rst:864 msgid "See also the :pep:`528` (Change Windows console encoding to UTF-8)." msgstr "" "Consulte también :pep:`528` (Cambiar la codificación de la consola de " "Windows a UTF-8)." -#: ../Doc/c-api/init_config.rst:820 +#: ../Doc/c-api/init_config.rst:868 msgid "" "If non-zero, dump statistics on :ref:`Python pymalloc memory allocator " "` at exit." @@ -1318,12 +1427,12 @@ msgstr "" "Si no es cero, volcar las estadísticas en :ref:`Asignador de memoria Python " "pymalloc ` en la salida." -#: ../Doc/c-api/init_config.rst:823 +#: ../Doc/c-api/init_config.rst:871 msgid "Set to ``1`` by the :envvar:`PYTHONMALLOCSTATS` environment variable." msgstr "" "Establecido en ``1`` por la variable de entorno :envvar:`PYTHONMALLOCSTATS`." -#: ../Doc/c-api/init_config.rst:825 +#: ../Doc/c-api/init_config.rst:873 msgid "" "The option is ignored if Python is :option:`configured using the --without-" "pymalloc option <--without-pymalloc>`." @@ -1331,27 +1440,36 @@ msgstr "" "La opción se ignora si Python es :option:`configurado usando la opción --" "without-pymalloc <--without-pymalloc>`." -#: ../Doc/c-api/init_config.rst:832 +#: ../Doc/c-api/init_config.rst:880 msgid "Platform library directory name: :data:`sys.platlibdir`." msgstr "" "Nombre del directorio de la biblioteca de la plataforma: :data:`sys." "platlibdir`." -#: ../Doc/c-api/init_config.rst:834 +#: ../Doc/c-api/init_config.rst:882 msgid "Set by the :envvar:`PYTHONPLATLIBDIR` environment variable." msgstr "Establecido por la variable de entorno :envvar:`PYTHONPLATLIBDIR`." -#: ../Doc/c-api/init_config.rst:836 +#: ../Doc/c-api/init_config.rst:884 +#, fuzzy msgid "" "Default: value of the ``PLATLIBDIR`` macro which is set by the :option:" -"`configure --with-platlibdir option <--with-platlibdir>` (default: ``\"lib" -"\"``)." +"`configure --with-platlibdir option <--with-platlibdir>` (default: " +"``\"lib\"``, or ``\"DLLs\"`` on Windows)." msgstr "" "Predeterminado: valor de la macro ``PLATLIBDIR`` que establece la :option:" -"`opción configure --with-platlibdir <--with-platlibdir>` (predeterminado: ``" -"\"lib\"``)." +"`opción configure --with-platlibdir <--with-platlibdir>` (predeterminado: " +"``\"lib\"``)." + +#: ../Doc/c-api/init_config.rst:892 +msgid "" +"This macro is now used on Windows to locate the standard library extension " +"modules, typically under ``DLLs``. However, for compatibility, note that " +"this value is ignored for any non-standard layouts, including in-tree builds " +"and virtual environments." +msgstr "" -#: ../Doc/c-api/init_config.rst:846 +#: ../Doc/c-api/init_config.rst:901 msgid "" "Module search paths (:data:`sys.path`) as a string separated by ``DELIM`` (:" "data:`os.path.pathsep`)." @@ -1359,27 +1477,28 @@ msgstr "" "Rutas de búsqueda de módulos (:data:`sys.path`) como una cadena separada por " "``DELIM`` (:data:`os.path.pathsep`)." -#: ../Doc/c-api/init_config.rst:849 +#: ../Doc/c-api/init_config.rst:904 msgid "Set by the :envvar:`PYTHONPATH` environment variable." msgstr "Establecido por la variable de entorno :envvar:`PYTHONPATH`." -#: ../Doc/c-api/init_config.rst:858 +#: ../Doc/c-api/init_config.rst:913 msgid "Module search paths: :data:`sys.path`." msgstr "Rutas de búsqueda del módulo: :data:`sys.path`." -#: ../Doc/c-api/init_config.rst:860 +#: ../Doc/c-api/init_config.rst:915 +#, fuzzy msgid "" -"If :c:member:`~PyConfig.module_search_paths_set` is equal to 0, the function " -"calculating the :ref:`Python Path Configuration ` " -"overrides the :c:member:`~PyConfig.module_search_paths` and sets :c:member:" -"`~PyConfig.module_search_paths_set` to ``1``." +"If :c:member:`~PyConfig.module_search_paths_set` is equal to ``0``, :c:func:" +"`Py_InitializeFromConfig` will replace :c:member:`~PyConfig." +"module_search_paths` and sets :c:member:`~PyConfig.module_search_paths_set` " +"to ``1``." msgstr "" "Si :c:member:`~PyConfig.module_search_paths_set` es igual a 0, la función " "que calcula :ref:`Python Path Configuration ` anula :c:" "member:`~PyConfig.module_search_paths` y establece :c:member:`~PyConfig." "module_search_paths_set` en ``1``." -#: ../Doc/c-api/init_config.rst:865 +#: ../Doc/c-api/init_config.rst:920 msgid "" "Default: empty list (``module_search_paths``) and ``0`` " "(``module_search_paths_set``)." @@ -1387,24 +1506,24 @@ msgstr "" "Por defecto: lista vacía (``module_search_paths``) y ``0`` " "(``module_search_paths_set``)." -#: ../Doc/c-api/init_config.rst:872 +#: ../Doc/c-api/init_config.rst:927 msgid "Compilation optimization level:" msgstr "Nivel de optimización de compilación:" -#: ../Doc/c-api/init_config.rst:874 +#: ../Doc/c-api/init_config.rst:929 msgid "``0``: Peephole optimizer, set ``__debug__`` to ``True``." msgstr "``0``: Optimizador de mirilla, configure ``__debug__`` en ``True``." -#: ../Doc/c-api/init_config.rst:875 +#: ../Doc/c-api/init_config.rst:930 msgid "``1``: Level 0, remove assertions, set ``__debug__`` to ``False``." msgstr "" "``1``: Nivel 0, elimina las aserciones, establece ``__debug__`` en ``False``." -#: ../Doc/c-api/init_config.rst:876 +#: ../Doc/c-api/init_config.rst:931 msgid "``2``: Level 1, strip docstrings." msgstr "``2``: Nivel 1, elimina docstrings." -#: ../Doc/c-api/init_config.rst:878 +#: ../Doc/c-api/init_config.rst:933 msgid "" "Incremented by the :option:`-O` command line option. Set to the :envvar:" "`PYTHONOPTIMIZE` environment variable value." @@ -1412,7 +1531,7 @@ msgstr "" "Incrementado por la opción de línea de comando :option:`-O`. Establecido en " "el valor de la variable de entorno :envvar:`PYTHONOPTIMIZE`." -#: ../Doc/c-api/init_config.rst:885 +#: ../Doc/c-api/init_config.rst:940 msgid "" "The list of the original command line arguments passed to the Python " "executable: :data:`sys.orig_argv`." @@ -1420,7 +1539,7 @@ msgstr "" "La lista de los argumentos originales de la línea de comandos pasados al " "ejecutable de Python: :data:`sys.orig_argv`." -#: ../Doc/c-api/init_config.rst:888 +#: ../Doc/c-api/init_config.rst:943 msgid "" "If :c:member:`~PyConfig.orig_argv` list is empty and :c:member:`~PyConfig." "argv` is not a list only containing an empty string, :c:func:`PyConfig_Read` " @@ -1434,7 +1553,7 @@ msgstr "" "orig_argv` antes de modificar :c:member:`~PyConfig.argv` (si :c:member:" "`~PyConfig.parse_argv` no es cero)." -#: ../Doc/c-api/init_config.rst:895 +#: ../Doc/c-api/init_config.rst:950 msgid "" "See also the :c:member:`~PyConfig.argv` member and the :c:func:" "`Py_GetArgcArgv` function." @@ -1442,16 +1561,16 @@ msgstr "" "Consulte también el miembro :c:member:`~PyConfig.argv` y la función :c:func:" "`Py_GetArgcArgv`." -#: ../Doc/c-api/init_config.rst:898 ../Doc/c-api/init_config.rst:1148 -#: ../Doc/c-api/init_config.rst:1167 +#: ../Doc/c-api/init_config.rst:953 ../Doc/c-api/init_config.rst:1206 +#: ../Doc/c-api/init_config.rst:1225 msgid "Default: empty list." msgstr "Predeterminado: lista vacía." -#: ../Doc/c-api/init_config.rst:904 +#: ../Doc/c-api/init_config.rst:959 msgid "Parse command line arguments?" msgstr "¿Analizar los argumentos de la línea de comando?" -#: ../Doc/c-api/init_config.rst:906 +#: ../Doc/c-api/init_config.rst:961 msgid "" "If equals to ``1``, parse :c:member:`~PyConfig.argv` the same way the " "regular Python parses :ref:`command line arguments `, and " @@ -1461,7 +1580,7 @@ msgstr "" "que Python normal analiza :ref:`argumentos de línea de comando ` y elimina los argumentos de Python de :c:member:`~PyConfig.argv`." -#: ../Doc/c-api/init_config.rst:918 +#: ../Doc/c-api/init_config.rst:973 msgid "" "The :c:member:`PyConfig.argv` arguments are now only parsed if :c:member:" "`PyConfig.parse_argv` equals to ``1``." @@ -1469,16 +1588,17 @@ msgstr "" "Los argumentos :c:member:`PyConfig.argv` ahora solo se analizan si :c:member:" "`PyConfig.parse_argv` es igual a ``1``." -#: ../Doc/c-api/init_config.rst:924 +#: ../Doc/c-api/init_config.rst:979 +#, fuzzy msgid "" -"Parser debug mode. If greater than 0, turn on parser debugging output (for " -"expert only, depending on compilation options)." +"Parser debug mode. If greater than ``0``, turn on parser debugging output " +"(for expert only, depending on compilation options)." msgstr "" "Modo de depuración del analizador. Si es mayor que 0, active la salida de " "depuración del analizador (solo para expertos, según las opciones de " "compilación)." -#: ../Doc/c-api/init_config.rst:927 +#: ../Doc/c-api/init_config.rst:982 msgid "" "Incremented by the :option:`-d` command line option. Set to the :envvar:" "`PYTHONDEBUG` environment variable value." @@ -1486,21 +1606,21 @@ msgstr "" "Incrementado por la opción de línea de comando :option:`-d`. Establecido en " "el valor de la variable de entorno :envvar:`PYTHONDEBUG`." -#: ../Doc/c-api/init_config.rst:934 +#: ../Doc/c-api/init_config.rst:989 +#, fuzzy msgid "" -"On Unix, if non-zero, calculating the :ref:`Python Path Configuration ` can log warnings into ``stderr``. If equals to 0, suppress " -"these warnings." +"If non-zero, calculation of path configuration is allowed to log warnings " +"into ``stderr``. If equals to ``0``, suppress these warnings." msgstr "" "En Unix, si es distinto de cero, el cálculo de :ref:`Python Path " "Configuration ` puede registrar advertencias en " "``stderr``. Si es igual a 0, suprima estas advertencias." -#: ../Doc/c-api/init_config.rst:938 -msgid "It has no effect on Windows." -msgstr "No tiene ningún efecto en Windows." +#: ../Doc/c-api/init_config.rst:996 +msgid "Now also applies on Windows." +msgstr "" -#: ../Doc/c-api/init_config.rst:946 +#: ../Doc/c-api/init_config.rst:1001 msgid "" "The site-specific directory prefix where the platform independent Python " "files are installed: :data:`sys.prefix`." @@ -1508,7 +1628,7 @@ msgstr "" "El prefijo de directorio específico del sitio donde se instalan los archivos " "Python independientes de la plataforma: :data:`sys.prefix`." -#: ../Doc/c-api/init_config.rst:955 +#: ../Doc/c-api/init_config.rst:1010 msgid "" "Program name used to initialize :c:member:`~PyConfig.executable` and in " "early error messages during Python initialization." @@ -1517,17 +1637,17 @@ msgstr "" "executable` y en los primeros mensajes de error durante la inicialización de " "Python." -#: ../Doc/c-api/init_config.rst:958 +#: ../Doc/c-api/init_config.rst:1013 msgid "If :func:`Py_SetProgramName` has been called, use its argument." msgstr "Si se ha llamado a :func:`Py_SetProgramName`, usa su argumento." -#: ../Doc/c-api/init_config.rst:959 +#: ../Doc/c-api/init_config.rst:1014 msgid "On macOS, use :envvar:`PYTHONEXECUTABLE` environment variable if set." msgstr "" "En macOS, usa la variable de entorno :envvar:`PYTHONEXECUTABLE` si está " "configurada." -#: ../Doc/c-api/init_config.rst:960 +#: ../Doc/c-api/init_config.rst:1015 msgid "" "If the ``WITH_NEXT_FRAMEWORK`` macro is defined, use :envvar:" "`__PYVENV_LAUNCHER__` environment variable if set." @@ -1535,14 +1655,14 @@ msgstr "" "Si se define la macro ``WITH_NEXT_FRAMEWORK``, utiliza la variable de " "entorno :envvar:`__PYVENV_LAUNCHER__` si está configurada." -#: ../Doc/c-api/init_config.rst:962 +#: ../Doc/c-api/init_config.rst:1017 msgid "" "Use ``argv[0]`` of :c:member:`~PyConfig.argv` if available and non-empty." msgstr "" "Utiliza ``argv[0]`` de :c:member:`~PyConfig.argv` si está disponible y no " "está vacío." -#: ../Doc/c-api/init_config.rst:964 +#: ../Doc/c-api/init_config.rst:1019 msgid "" "Otherwise, use ``L\"python\"`` on Windows, or ``L\"python3\"`` on other " "platforms." @@ -1550,7 +1670,7 @@ msgstr "" "De lo contrario, utiliza ``L\"python\"`` en Windows o ``L\"python3\"`` en " "otras plataformas." -#: ../Doc/c-api/init_config.rst:973 +#: ../Doc/c-api/init_config.rst:1028 msgid "" "Directory where cached ``.pyc`` files are written: :data:`sys." "pycache_prefix`." @@ -1558,7 +1678,7 @@ msgstr "" "Directorio donde se escriben los archivos ``.pyc`` almacenados en caché: :" "data:`sys.pycache_prefix`." -#: ../Doc/c-api/init_config.rst:976 +#: ../Doc/c-api/init_config.rst:1031 msgid "" "Set by the :option:`-X pycache_prefix=PATH <-X>` command line option and " "the :envvar:`PYTHONPYCACHEPREFIX` environment variable." @@ -1567,62 +1687,70 @@ msgstr "" "pycache_prefix=PATH <-X>` y la variable de entorno :envvar:" "`PYTHONPYCACHEPREFIX`." -#: ../Doc/c-api/init_config.rst:979 +#: ../Doc/c-api/init_config.rst:1034 msgid "If ``NULL``, :data:`sys.pycache_prefix` is set to ``None``." msgstr "Si ``NULL``, :data:`sys.pycache_prefix` es establecido a ``None``." -#: ../Doc/c-api/init_config.rst:985 +#: ../Doc/c-api/init_config.rst:1040 +#, fuzzy msgid "" -"Quiet mode. If greater than 0, don't display the copyright and version at " -"Python startup in interactive mode." +"Quiet mode. If greater than ``0``, don't display the copyright and version " +"at Python startup in interactive mode." msgstr "" "Modo silencioso. Si es mayor que 0, no muestre los derechos de autor y la " "versión al inicio de Python en modo interactivo." -#: ../Doc/c-api/init_config.rst:988 +#: ../Doc/c-api/init_config.rst:1043 msgid "Incremented by the :option:`-q` command line option." msgstr "Incrementado por la opción de línea de comando :option:`-q`." -#: ../Doc/c-api/init_config.rst:994 +#: ../Doc/c-api/init_config.rst:1049 msgid "Value of the :option:`-c` command line option." msgstr "Valor de la opción de línea de comando :option:`-c`." -#: ../Doc/c-api/init_config.rst:996 ../Doc/c-api/init_config.rst:1008 -#: ../Doc/c-api/init_config.rst:1016 +#: ../Doc/c-api/init_config.rst:1051 ../Doc/c-api/init_config.rst:1072 msgid "Used by :c:func:`Py_RunMain`." msgstr "Usado por :c:func:`Py_RunMain`." -#: ../Doc/c-api/init_config.rst:1002 +#: ../Doc/c-api/init_config.rst:1057 +#, fuzzy msgid "" "Filename passed on the command line: trailing command line argument without :" -"option:`-c` or :option:`-m`." +"option:`-c` or :option:`-m`. It is used by the :c:func:`Py_RunMain` function." msgstr "" "Nombre de archivo pasado en la línea de comando: argumento de línea de " "comando final sin :option:`-c` o :option:`-m`." -#: ../Doc/c-api/init_config.rst:1005 +#: ../Doc/c-api/init_config.rst:1061 +#, fuzzy msgid "" "For example, it is set to ``script.py`` by the ``python3 script.py arg`` " -"command." +"command line." msgstr "" "Por ejemplo, el comando ``python3 script.py arg`` lo establece en ``script." "py``." -#: ../Doc/c-api/init_config.rst:1014 +#: ../Doc/c-api/init_config.rst:1064 +#, fuzzy +msgid "See also the :c:member:`PyConfig.skip_source_first_line` option." +msgstr "Consulte también el miembro :c:member:`~PyConfig.orig_argv`." + +#: ../Doc/c-api/init_config.rst:1070 msgid "Value of the :option:`-m` command line option." msgstr "Valor de la opción de línea de comando :option:`-m`." -#: ../Doc/c-api/init_config.rst:1022 +#: ../Doc/c-api/init_config.rst:1078 msgid "Show total reference count at exit?" msgstr "¿Mostrar el recuento de referencia total en la salida?" -#: ../Doc/c-api/init_config.rst:1024 -msgid "Set to 1 by :option:`-X showrefcount <-X>` command line option." +#: ../Doc/c-api/init_config.rst:1080 +#, fuzzy +msgid "Set to ``1`` by :option:`-X showrefcount <-X>` command line option." msgstr "" "Establecido en 1 por la opción de línea de comandos :option:`-X showrefcount " "<-X>`." -#: ../Doc/c-api/init_config.rst:1026 +#: ../Doc/c-api/init_config.rst:1082 msgid "" "Need a :ref:`debug build of Python ` (the ``Py_REF_DEBUG`` " "macro must be defined)." @@ -1630,11 +1758,11 @@ msgstr "" "Necesita una :ref:`compilación de depuración de Python ` (se " "debe definir la macro ``Py_REF_DEBUG``)." -#: ../Doc/c-api/init_config.rst:1033 +#: ../Doc/c-api/init_config.rst:1089 msgid "Import the :mod:`site` module at startup?" msgstr "¿Importar el módulo :mod:`site` al inicio?" -#: ../Doc/c-api/init_config.rst:1035 +#: ../Doc/c-api/init_config.rst:1091 msgid "" "If equal to zero, disable the import of the module site and the site-" "dependent manipulations of :data:`sys.path` that it entails." @@ -1642,7 +1770,7 @@ msgstr "" "Si es igual a cero, desactive la importación del sitio del módulo y las " "manipulaciones dependientes del sitio de :data:`sys.path` que conlleva." -#: ../Doc/c-api/init_config.rst:1038 +#: ../Doc/c-api/init_config.rst:1094 msgid "" "Also disable these manipulations if the :mod:`site` module is explicitly " "imported later (call :func:`site.main` if you want them to be triggered)." @@ -1650,12 +1778,12 @@ msgstr "" "También deshabilite estas manipulaciones si el módulo :mod:`site` se importa " "explícitamente más tarde (llame a :func:`site.main` si desea que se activen)." -#: ../Doc/c-api/init_config.rst:1041 +#: ../Doc/c-api/init_config.rst:1097 msgid "Set to ``0`` by the :option:`-S` command line option." msgstr "" "Establecido en ``0`` mediante la opción de línea de comando :option:`-S`." -#: ../Doc/c-api/init_config.rst:1043 +#: ../Doc/c-api/init_config.rst:1099 msgid "" ":data:`sys.flags.no_site` is set to the inverted value of :c:member:" "`~PyConfig.site_import`." @@ -1663,7 +1791,7 @@ msgstr "" ":data:`sys.flags.no_site` se establece en el valor invertido de :c:member:" "`~PyConfig.site_import`." -#: ../Doc/c-api/init_config.rst:1050 +#: ../Doc/c-api/init_config.rst:1106 msgid "" "If non-zero, skip the first line of the :c:member:`PyConfig.run_filename` " "source." @@ -1671,7 +1799,7 @@ msgstr "" "Si no es cero, omita la primera línea de la fuente :c:member:`PyConfig." "run_filename`." -#: ../Doc/c-api/init_config.rst:1053 +#: ../Doc/c-api/init_config.rst:1109 msgid "" "It allows the usage of non-Unix forms of ``#!cmd``. This is intended for a " "DOS specific hack only." @@ -1679,22 +1807,22 @@ msgstr "" "Permite el uso de formas de ``#!cmd`` que no son Unix. Esto está destinado " "únicamente a un truco específico de DOS." -#: ../Doc/c-api/init_config.rst:1056 +#: ../Doc/c-api/init_config.rst:1112 msgid "Set to ``1`` by the :option:`-x` command line option." msgstr "" "Establecido en ``1`` mediante la opción de línea de comando :option:`-x`." -#: ../Doc/c-api/init_config.rst:1063 +#: ../Doc/c-api/init_config.rst:1119 msgid "" "Encoding and encoding errors of :data:`sys.stdin`, :data:`sys.stdout` and :" -"data:`sys.stderr` (but :data:`sys.stderr` always uses ``\"backslashreplace" -"\"`` error handler)." +"data:`sys.stderr` (but :data:`sys.stderr` always uses " +"``\"backslashreplace\"`` error handler)." msgstr "" "Codificación y errores de codificación de :data:`sys.stdin`, :data:`sys." "stdout` y :data:`sys.stderr` (pero :data:`sys.stderr` siempre usa el " "controlador de errores ``\"backslashreplace\"``)." -#: ../Doc/c-api/init_config.rst:1067 +#: ../Doc/c-api/init_config.rst:1123 msgid "" "If :c:func:`Py_SetStandardStreamEncoding` has been called, use its *error* " "and *errors* arguments if they are not ``NULL``." @@ -1702,34 +1830,34 @@ msgstr "" "Si se ha llamado a :c:func:`Py_SetStandardStreamEncoding`, utilice sus " "argumentos *error* y *errors* si no son ``NULL``." -#: ../Doc/c-api/init_config.rst:1070 +#: ../Doc/c-api/init_config.rst:1126 msgid "" "Use the :envvar:`PYTHONIOENCODING` environment variable if it is non-empty." msgstr "" "Utilice la variable de entorno :envvar:`PYTHONIOENCODING` si no está vacía." -#: ../Doc/c-api/init_config.rst:1073 +#: ../Doc/c-api/init_config.rst:1129 msgid "Default encoding:" msgstr "Codificación predeterminada:" -#: ../Doc/c-api/init_config.rst:1075 +#: ../Doc/c-api/init_config.rst:1131 msgid "``\"UTF-8\"`` if :c:member:`PyPreConfig.utf8_mode` is non-zero." msgstr "" "``\"UTF-8\"`` si :c:member:`PyPreConfig.utf8_mode` es distinto de cero." -#: ../Doc/c-api/init_config.rst:1076 +#: ../Doc/c-api/init_config.rst:1132 msgid "Otherwise, use the :term:`locale encoding`." msgstr "De lo contrario, usa el :term:`locale encoding`." -#: ../Doc/c-api/init_config.rst:1078 +#: ../Doc/c-api/init_config.rst:1134 msgid "Default error handler:" msgstr "Manejador de errores predeterminado:" -#: ../Doc/c-api/init_config.rst:1080 +#: ../Doc/c-api/init_config.rst:1136 msgid "On Windows: use ``\"surrogateescape\"``." msgstr "En Windows: use ``\"surrogateescape\"``." -#: ../Doc/c-api/init_config.rst:1081 +#: ../Doc/c-api/init_config.rst:1137 msgid "" "``\"surrogateescape\"`` if :c:member:`PyPreConfig.utf8_mode` is non-zero, or " "if the LC_CTYPE locale is \"C\" or \"POSIX\"." @@ -1737,19 +1865,19 @@ msgstr "" "``\"surrogateescape\"`` si :c:member:`PyPreConfig.utf8_mode` no es cero o si " "la configuración regional LC_CTYPE es \"C\" o \"POSIX\"." -#: ../Doc/c-api/init_config.rst:1083 +#: ../Doc/c-api/init_config.rst:1139 msgid "``\"strict\"`` otherwise." msgstr "``\"strict\"`` de lo contrario." -#: ../Doc/c-api/init_config.rst:1087 +#: ../Doc/c-api/init_config.rst:1143 msgid "Enable tracemalloc?" msgstr "¿Habilitar tracemalloc?" -#: ../Doc/c-api/init_config.rst:1089 +#: ../Doc/c-api/init_config.rst:1145 msgid "If non-zero, call :func:`tracemalloc.start` at startup." msgstr "Si no es cero, llama a :func:`tracemalloc.start` al inicio." -#: ../Doc/c-api/init_config.rst:1091 +#: ../Doc/c-api/init_config.rst:1147 msgid "" "Set by :option:`-X tracemalloc=N <-X>` command line option and by the :" "envvar:`PYTHONTRACEMALLOC` environment variable." @@ -1757,11 +1885,11 @@ msgstr "" "Establecido por la opción de línea de comando :option:`-X tracemalloc=N <-" "X>` y por la variable de entorno :envvar:`PYTHONTRACEMALLOC`." -#: ../Doc/c-api/init_config.rst:1098 +#: ../Doc/c-api/init_config.rst:1154 msgid "Use :ref:`environment variables `?" msgstr "¿Utiliza :ref:`variables de entorno `?" -#: ../Doc/c-api/init_config.rst:1100 +#: ../Doc/c-api/init_config.rst:1156 msgid "" "If equals to zero, ignore the :ref:`environment variables `." @@ -1769,26 +1897,33 @@ msgstr "" "Si es igual a cero, ignora las :ref:`variables de entorno `." -#: ../Doc/c-api/init_config.rst:1107 +#: ../Doc/c-api/init_config.rst:1159 +#, fuzzy +msgid "Set to ``0`` by the :option:`-E` environment variable." +msgstr "" +"Establecido en ``0`` por la variable de entorno :envvar:`PYTHONNOUSERSITE`." + +#: ../Doc/c-api/init_config.rst:1165 msgid "If non-zero, add the user site directory to :data:`sys.path`." msgstr "" "Si es distinto de cero, agregue el directorio del sitio del usuario a :data:" "`sys.path`." -#: ../Doc/c-api/init_config.rst:1109 +#: ../Doc/c-api/init_config.rst:1167 msgid "Set to ``0`` by the :option:`-s` and :option:`-I` command line options." msgstr "" "Establecido en ``0`` por las opciones de línea de comando :option:`-s` y :" "option:`-I`." -#: ../Doc/c-api/init_config.rst:1111 +#: ../Doc/c-api/init_config.rst:1169 msgid "Set to ``0`` by the :envvar:`PYTHONNOUSERSITE` environment variable." msgstr "" "Establecido en ``0`` por la variable de entorno :envvar:`PYTHONNOUSERSITE`." -#: ../Doc/c-api/init_config.rst:1117 +#: ../Doc/c-api/init_config.rst:1175 +#, fuzzy msgid "" -"Verbose mode. If greater than 0, print a message each time a module is " +"Verbose mode. If greater than ``0``, print a message each time a module is " "imported, showing the place (filename or built-in module) from which it is " "loaded." msgstr "" @@ -1796,26 +1931,27 @@ msgstr "" "importe un módulo, mostrando el lugar (nombre de archivo o módulo integrado) " "desde el que se carga." -#: ../Doc/c-api/init_config.rst:1121 +#: ../Doc/c-api/init_config.rst:1179 +#, fuzzy msgid "" -"If greater or equal to 2, print a message for each file that is checked for " -"when searching for a module. Also provides information on module cleanup at " -"exit." +"If greater or equal to ``2``, print a message for each file that is checked " +"for when searching for a module. Also provides information on module cleanup " +"at exit." msgstr "" "Si es mayor o igual a 2, imprima un mensaje para cada archivo que se " "compruebe al buscar un módulo. También proporciona información sobre la " "limpieza del módulo al salir." -#: ../Doc/c-api/init_config.rst:1125 +#: ../Doc/c-api/init_config.rst:1183 msgid "Incremented by the :option:`-v` command line option." msgstr "Incrementado por la opción de línea de comando :option:`-v`." -#: ../Doc/c-api/init_config.rst:1127 +#: ../Doc/c-api/init_config.rst:1185 msgid "Set to the :envvar:`PYTHONVERBOSE` environment variable value." msgstr "" "Establecido en el valor de la variable de entorno :envvar:`PYTHONVERBOSE`." -#: ../Doc/c-api/init_config.rst:1133 +#: ../Doc/c-api/init_config.rst:1191 msgid "" "Options of the :mod:`warnings` module to build warnings filters, lowest to " "highest priority: :data:`sys.warnoptions`." @@ -1823,7 +1959,7 @@ msgstr "" "Opciones del módulo :mod:`warnings` para crear filtros de advertencias, de " "menor a mayor prioridad: :data:`sys.warnoptions`." -#: ../Doc/c-api/init_config.rst:1136 +#: ../Doc/c-api/init_config.rst:1194 msgid "" "The :mod:`warnings` module adds :data:`sys.warnoptions` in the reverse " "order: the last :c:member:`PyConfig.warnoptions` item becomes the first item " @@ -1834,7 +1970,7 @@ msgstr "" "el primer elemento de :data:`warnings.filters` que es verificado primero " "(máxima prioridad)." -#: ../Doc/c-api/init_config.rst:1141 +#: ../Doc/c-api/init_config.rst:1199 msgid "" "The :option:`-W` command line options adds its value to :c:member:`~PyConfig." "warnoptions`, it can be used multiple times." @@ -1842,7 +1978,7 @@ msgstr "" "Las opciones de la línea de comando :option:`-W` agregan su valor a :c:" "member:`~PyConfig.warnoptions`, se puede usar varias veces." -#: ../Doc/c-api/init_config.rst:1144 +#: ../Doc/c-api/init_config.rst:1202 msgid "" "The :envvar:`PYTHONWARNINGS` environment variable can also be used to add " "warning options. Multiple options can be specified, separated by commas (``," @@ -1852,15 +1988,16 @@ msgstr "" "para agregar opciones de advertencia. Se pueden especificar varias opciones, " "separadas por comas (``,``)." -#: ../Doc/c-api/init_config.rst:1152 +#: ../Doc/c-api/init_config.rst:1210 +#, fuzzy msgid "" -"If equal to 0, Python won't try to write ``.pyc`` files on the import of " +"If equal to ``0``, Python won't try to write ``.pyc`` files on the import of " "source modules." msgstr "" "Si es igual a 0, Python no intentará escribir archivos ``.pyc`` en la " "importación de módulos fuente." -#: ../Doc/c-api/init_config.rst:1155 +#: ../Doc/c-api/init_config.rst:1213 msgid "" "Set to ``0`` by the :option:`-B` command line option and the :envvar:" "`PYTHONDONTWRITEBYTECODE` environment variable." @@ -1868,7 +2005,7 @@ msgstr "" "Establecido en ``0`` por la opción de línea de comando :option:`-B` y la " "variable de entorno :envvar:`PYTHONDONTWRITEBYTECODE`." -#: ../Doc/c-api/init_config.rst:1158 +#: ../Doc/c-api/init_config.rst:1216 msgid "" ":data:`sys.dont_write_bytecode` is initialized to the inverted value of :c:" "member:`~PyConfig.write_bytecode`." @@ -1876,13 +2013,13 @@ msgstr "" ":data:`sys.dont_write_bytecode` se inicializa al valor invertido de :c:" "member:`~PyConfig.write_bytecode`." -#: ../Doc/c-api/init_config.rst:1165 +#: ../Doc/c-api/init_config.rst:1223 msgid "Values of the :option:`-X` command line options: :data:`sys._xoptions`." msgstr "" "Valores de las opciones de la línea de comando :option:`-X`: :data:`sys." "_xoptions`." -#: ../Doc/c-api/init_config.rst:1169 +#: ../Doc/c-api/init_config.rst:1227 msgid "" "If :c:member:`~PyConfig.parse_argv` is non-zero, :c:member:`~PyConfig.argv` " "arguments are parsed the same way the regular Python parses :ref:`command " @@ -1894,7 +2031,7 @@ msgstr "" "ref:`argumentos de línea de comando `, y los argumentos de " "Python se eliminan de :c:member:`~PyConfig.argv`." -#: ../Doc/c-api/init_config.rst:1174 +#: ../Doc/c-api/init_config.rst:1232 msgid "" "The :c:member:`~PyConfig.xoptions` options are parsed to set other options: " "see the :option:`-X` command line option." @@ -1902,23 +2039,23 @@ msgstr "" "Las opciones de :c:member:`~PyConfig.xoptions` se analizan para establecer " "otras opciones: consulte la opción de línea de comando :option:`-X`." -#: ../Doc/c-api/init_config.rst:1179 +#: ../Doc/c-api/init_config.rst:1237 msgid "The ``show_alloc_count`` field has been removed." msgstr "El campo ``show_alloc_count`` fue removido." -#: ../Doc/c-api/init_config.rst:1183 +#: ../Doc/c-api/init_config.rst:1241 msgid "Initialization with PyConfig" msgstr "Inicialización con PyConfig" -#: ../Doc/c-api/init_config.rst:1185 +#: ../Doc/c-api/init_config.rst:1243 msgid "Function to initialize Python:" msgstr "Función para inicializar Python:" -#: ../Doc/c-api/init_config.rst:1189 +#: ../Doc/c-api/init_config.rst:1247 msgid "Initialize Python from *config* configuration." msgstr "Inicializa Python desde la configuración *config*." -#: ../Doc/c-api/init_config.rst:1194 +#: ../Doc/c-api/init_config.rst:1252 msgid "" "If :c:func:`PyImport_FrozenModules`, :c:func:`PyImport_AppendInittab` or :c:" "func:`PyImport_ExtendInittab` are used, they must be set or called after " @@ -1933,7 +2070,7 @@ msgstr "" "llamar a :c:func:`PyImport_AppendInittab` o :c:func:`PyImport_ExtendInittab` " "antes de cada inicialización de Python." -#: ../Doc/c-api/init_config.rst:1201 +#: ../Doc/c-api/init_config.rst:1259 msgid "" "The current configuration (``PyConfig`` type) is stored in " "``PyInterpreterState.config``." @@ -1941,23 +2078,24 @@ msgstr "" "La configuración actual (tipo ``PyConfig``) se almacena en " "``PyInterpreterState.config``." -#: ../Doc/c-api/init_config.rst:1204 +#: ../Doc/c-api/init_config.rst:1262 msgid "Example setting the program name::" msgstr "Ejemplo de configuración del nombre del programa::" -#: ../Doc/c-api/init_config.rst:1232 +#: ../Doc/c-api/init_config.rst:1290 msgid "" "More complete example modifying the default configuration, read the " -"configuration, and then override some parameters::" +"configuration, and then override some parameters. Note that since 3.11, many " +"parameters are not calculated until initialization, and so values cannot be " +"read from the configuration structure. Any values set before initialize is " +"called will be left unchanged by initialization::" msgstr "" -"Ejemplo más completo que modifica la configuración predeterminada, lee la " -"configuración y luego anula algunos parámetros ::" -#: ../Doc/c-api/init_config.rst:1283 +#: ../Doc/c-api/init_config.rst:1353 msgid "Isolated Configuration" msgstr "Configuración aislada" -#: ../Doc/c-api/init_config.rst:1285 +#: ../Doc/c-api/init_config.rst:1355 msgid "" ":c:func:`PyPreConfig_InitIsolatedConfig` and :c:func:" "`PyConfig_InitIsolatedConfig` functions create a configuration to isolate " @@ -1967,9 +2105,10 @@ msgstr "" "`PyConfig_InitIsolatedConfig` crean una configuración para aislar Python del " "sistema. Por ejemplo, para incrustar Python en una aplicación." -#: ../Doc/c-api/init_config.rst:1290 +#: ../Doc/c-api/init_config.rst:1360 +#, fuzzy msgid "" -"This configuration ignores global configuration variables, environments " +"This configuration ignores global configuration variables, environment " "variables, command line arguments (:c:member:`PyConfig.argv` is not parsed) " "and user site directory. The C standard streams (ex: ``stdout``) and the " "LC_CTYPE locale are left unchanged. Signal handlers are not installed." @@ -1980,23 +2119,18 @@ msgstr "" "transmisiones estándar C (por ejemplo, ``stdout``) y el entorno local " "LC_CTYPE no se modifican. Los manejadores de señal no están instalados." -#: ../Doc/c-api/init_config.rst:1295 +#: ../Doc/c-api/init_config.rst:1365 msgid "" -"Configuration files are still used with this configuration. Set the :ref:" -"`Python Path Configuration ` (\"output fields\") to ignore " -"these configuration files and avoid the function computing the default path " -"configuration." +"Configuration files are still used with this configuration to determine " +"paths that are unspecified. Ensure :c:member:`PyConfig.home` is specified to " +"avoid computing the default path configuration." msgstr "" -"Los archivos de configuración todavía se utilizan con esta configuración. " -"Configure el :ref:`Python Path Configuration ` (\"campos " -"de salida\") para ignorar estos archivos de configuración y evitar que la " -"función calcule la configuración de ruta predeterminada." -#: ../Doc/c-api/init_config.rst:1304 +#: ../Doc/c-api/init_config.rst:1373 msgid "Python Configuration" msgstr "Configuración de Python" -#: ../Doc/c-api/init_config.rst:1306 +#: ../Doc/c-api/init_config.rst:1375 msgid "" ":c:func:`PyPreConfig_InitPythonConfig` and :c:func:" "`PyConfig_InitPythonConfig` functions create a configuration to build a " @@ -2006,7 +2140,7 @@ msgstr "" "`PyConfig_InitPythonConfig` crean una configuración para construir un Python " "personalizado que se comporta como el Python normal." -#: ../Doc/c-api/init_config.rst:1310 +#: ../Doc/c-api/init_config.rst:1379 msgid "" "Environments variables and command line arguments are used to configure " "Python, whereas global configuration variables are ignored." @@ -2015,7 +2149,7 @@ msgstr "" "utilizan para configurar Python, mientras que las variables de configuración " "global se ignoran." -#: ../Doc/c-api/init_config.rst:1313 +#: ../Doc/c-api/init_config.rst:1382 msgid "" "This function enables C locale coercion (:pep:`538`) and :ref:`Python UTF-8 " "Mode ` (:pep:`540`) depending on the LC_CTYPE locale, :envvar:" @@ -2026,44 +2160,44 @@ msgstr "" "regional LC_CTYPE, las variables de entorno :envvar:`PYTHONUTF8` y :envvar:" "`PYTHONCOERCECLOCALE`." -#: ../Doc/c-api/init_config.rst:1322 +#: ../Doc/c-api/init_config.rst:1391 msgid "Python Path Configuration" msgstr "Configuración de la ruta de Python" -#: ../Doc/c-api/init_config.rst:1324 +#: ../Doc/c-api/init_config.rst:1393 msgid ":c:type:`PyConfig` contains multiple fields for the path configuration:" msgstr "" ":c:type:`PyConfig` contiene múltiples campos para la configuración de ruta:" -#: ../Doc/c-api/init_config.rst:1326 +#: ../Doc/c-api/init_config.rst:1395 msgid "Path configuration inputs:" msgstr "Entradas de configuración de ruta:" -#: ../Doc/c-api/init_config.rst:1328 +#: ../Doc/c-api/init_config.rst:1397 msgid ":c:member:`PyConfig.home`" msgstr ":c:member:`PyConfig.home`" -#: ../Doc/c-api/init_config.rst:1329 +#: ../Doc/c-api/init_config.rst:1398 msgid ":c:member:`PyConfig.platlibdir`" msgstr ":c:member:`PyConfig.platlibdir`" -#: ../Doc/c-api/init_config.rst:1330 +#: ../Doc/c-api/init_config.rst:1399 msgid ":c:member:`PyConfig.pathconfig_warnings`" msgstr ":c:member:`PyConfig.pathconfig_warnings`" -#: ../Doc/c-api/init_config.rst:1331 +#: ../Doc/c-api/init_config.rst:1400 msgid ":c:member:`PyConfig.program_name`" msgstr ":c:member:`PyConfig.program_name`" -#: ../Doc/c-api/init_config.rst:1332 +#: ../Doc/c-api/init_config.rst:1401 msgid ":c:member:`PyConfig.pythonpath_env`" msgstr ":c:member:`PyConfig.pythonpath_env`" -#: ../Doc/c-api/init_config.rst:1333 +#: ../Doc/c-api/init_config.rst:1402 msgid "current working directory: to get absolute paths" msgstr "directorio de trabajo actual: para obtener rutas absolutas" -#: ../Doc/c-api/init_config.rst:1334 +#: ../Doc/c-api/init_config.rst:1403 msgid "" "``PATH`` environment variable to get the program full path (from :c:member:" "`PyConfig.program_name`)" @@ -2071,45 +2205,45 @@ msgstr "" "Variable de entorno ``PATH`` para obtener la ruta completa del programa (de :" "c:member:`PyConfig.program_name`)" -#: ../Doc/c-api/init_config.rst:1336 +#: ../Doc/c-api/init_config.rst:1405 msgid "``__PYVENV_LAUNCHER__`` environment variable" msgstr "Variable de entorno ``__PYVENV_LAUNCHER__``" -#: ../Doc/c-api/init_config.rst:1337 +#: ../Doc/c-api/init_config.rst:1406 msgid "" -"(Windows only) Application paths in the registry under \"Software\\Python" -"\\PythonCore\\X.Y\\PythonPath\" of HKEY_CURRENT_USER and HKEY_LOCAL_MACHINE " -"(where X.Y is the Python version)." +"(Windows only) Application paths in the registry under " +"\"Software\\Python\\PythonCore\\X.Y\\PythonPath\" of HKEY_CURRENT_USER and " +"HKEY_LOCAL_MACHINE (where X.Y is the Python version)." msgstr "" -"(Solo Windows) Rutas de aplicación en el registro en \"Software\\Python" -"\\PythonCore\\X.Y\\PythonPath\" de HKEY_CURRENT_USER y HKEY_LOCAL_MACHINE " -"(donde X.Y es la versión de Python)." +"(Solo Windows) Rutas de aplicación en el registro en " +"\"Software\\Python\\PythonCore\\X.Y\\PythonPath\" de HKEY_CURRENT_USER y " +"HKEY_LOCAL_MACHINE (donde X.Y es la versión de Python)." -#: ../Doc/c-api/init_config.rst:1341 +#: ../Doc/c-api/init_config.rst:1410 msgid "Path configuration output fields:" msgstr "Campos de salida de configuración de ruta:" -#: ../Doc/c-api/init_config.rst:1343 +#: ../Doc/c-api/init_config.rst:1412 msgid ":c:member:`PyConfig.base_exec_prefix`" msgstr ":c:member:`PyConfig.base_exec_prefix`" -#: ../Doc/c-api/init_config.rst:1344 +#: ../Doc/c-api/init_config.rst:1413 msgid ":c:member:`PyConfig.base_executable`" msgstr ":c:member:`PyConfig.base_executable`" -#: ../Doc/c-api/init_config.rst:1345 +#: ../Doc/c-api/init_config.rst:1414 msgid ":c:member:`PyConfig.base_prefix`" msgstr ":c:member:`PyConfig.base_prefix`" -#: ../Doc/c-api/init_config.rst:1346 +#: ../Doc/c-api/init_config.rst:1415 msgid ":c:member:`PyConfig.exec_prefix`" msgstr ":c:member:`PyConfig.exec_prefix`" -#: ../Doc/c-api/init_config.rst:1347 +#: ../Doc/c-api/init_config.rst:1416 msgid ":c:member:`PyConfig.executable`" msgstr ":c:member:`PyConfig.executable`" -#: ../Doc/c-api/init_config.rst:1348 +#: ../Doc/c-api/init_config.rst:1417 msgid "" ":c:member:`PyConfig.module_search_paths_set`, :c:member:`PyConfig." "module_search_paths`" @@ -2117,32 +2251,28 @@ msgstr "" ":c:member:`PyConfig.module_search_paths_set`, :c:member:`PyConfig." "module_search_paths`" -#: ../Doc/c-api/init_config.rst:1350 +#: ../Doc/c-api/init_config.rst:1419 msgid ":c:member:`PyConfig.prefix`" msgstr ":c:member:`PyConfig.prefix`" -#: ../Doc/c-api/init_config.rst:1352 +#: ../Doc/c-api/init_config.rst:1421 msgid "" "If at least one \"output field\" is not set, Python calculates the path " "configuration to fill unset fields. If :c:member:`~PyConfig." -"module_search_paths_set` is equal to 0, :c:member:`~PyConfig." +"module_search_paths_set` is equal to ``0``, :c:member:`~PyConfig." "module_search_paths` is overridden and :c:member:`~PyConfig." -"module_search_paths_set` is set to 1." +"module_search_paths_set` is set to ``1``." msgstr "" -"Si no se establece al menos un \"campo de salida\", Python calcula la " -"configuración de la ruta para completar los campos no definidos. Si :c:" -"member:`~PyConfig.module_search_paths_set` es igual a 0, :c:member:" -"`~PyConfig.module_search_paths` se reemplaza y :c:member:`~PyConfig." -"module_search_paths_set` se establece en 1." -#: ../Doc/c-api/init_config.rst:1358 +#: ../Doc/c-api/init_config.rst:1427 +#, fuzzy msgid "" "It is possible to completely ignore the function calculating the default " "path configuration by setting explicitly all path configuration output " "fields listed above. A string is considered as set even if it is non-empty. " "``module_search_paths`` is considered as set if ``module_search_paths_set`` " -"is set to 1. In this case, path configuration input fields are ignored as " -"well." +"is set to ``1``. In this case, ``module_search_paths`` will be used without " +"modification." msgstr "" "Es posible ignorar por completo la función que calcula la configuración de " "ruta predeterminada al establecer explícitamente todos los campos de salida " @@ -2152,17 +2282,18 @@ msgstr "" "``module_search_paths_set`` se establece en 1. En este caso, los campos de " "entrada de configuración de ruta también se ignoran." -#: ../Doc/c-api/init_config.rst:1365 +#: ../Doc/c-api/init_config.rst:1434 +#, fuzzy msgid "" -"Set :c:member:`~PyConfig.pathconfig_warnings` to 0 to suppress warnings when " -"calculating the path configuration (Unix only, Windows does not log any " +"Set :c:member:`~PyConfig.pathconfig_warnings` to ``0`` to suppress warnings " +"when calculating the path configuration (Unix only, Windows does not log any " "warning)." msgstr "" "Establezca :c:member:`~PyConfig.pathconfig_warnings` en 0 para suprimir las " "advertencias al calcular la configuración de la ruta (solo Unix, Windows no " "registra ninguna advertencia)." -#: ../Doc/c-api/init_config.rst:1368 +#: ../Doc/c-api/init_config.rst:1437 msgid "" "If :c:member:`~PyConfig.base_prefix` or :c:member:`~PyConfig." "base_exec_prefix` fields are not set, they inherit their value from :c:" @@ -2172,11 +2303,11 @@ msgstr "" "base_exec_prefix` no están establecidos, heredan su valor de :c:member:" "`~PyConfig.prefix` y :c:member:`~PyConfig.exec_prefix` respectivamente." -#: ../Doc/c-api/init_config.rst:1372 +#: ../Doc/c-api/init_config.rst:1441 msgid ":c:func:`Py_RunMain` and :c:func:`Py_Main` modify :data:`sys.path`:" msgstr ":c:func:`Py_RunMain` y :c:func:`Py_Main` modifican :data:`sys.path`:" -#: ../Doc/c-api/init_config.rst:1374 +#: ../Doc/c-api/init_config.rst:1443 msgid "" "If :c:member:`~PyConfig.run_filename` is set and is a directory which " "contains a ``__main__.py`` script, prepend :c:member:`~PyConfig." @@ -2186,11 +2317,11 @@ msgstr "" "que contiene un script ``__main__.py``, anteponga :c:member:`~PyConfig." "run_filename` a :data:`sys.path`." -#: ../Doc/c-api/init_config.rst:1377 +#: ../Doc/c-api/init_config.rst:1446 msgid "If :c:member:`~PyConfig.isolated` is zero:" msgstr "Si :c:member:`~PyConfig.isolated` es cero:" -#: ../Doc/c-api/init_config.rst:1379 +#: ../Doc/c-api/init_config.rst:1448 msgid "" "If :c:member:`~PyConfig.run_module` is set, prepend the current directory " "to :data:`sys.path`. Do nothing if the current directory cannot be read." @@ -2199,7 +2330,7 @@ msgstr "" "directorio actual a :data:`sys.path`. No haga nada si el directorio actual " "no se puede leer." -#: ../Doc/c-api/init_config.rst:1381 +#: ../Doc/c-api/init_config.rst:1450 msgid "" "If :c:member:`~PyConfig.run_filename` is set, prepend the directory of the " "filename to :data:`sys.path`." @@ -2207,12 +2338,12 @@ msgstr "" "Si :c:member:`~PyConfig.run_filename` está configurado, anteponga el " "directorio del nombre del archivo a :data:`sys.path`." -#: ../Doc/c-api/init_config.rst:1383 +#: ../Doc/c-api/init_config.rst:1452 msgid "Otherwise, prepend an empty string to :data:`sys.path`." msgstr "" "De lo contrario, anteponga una cadena de caracteres vacía a :data:`sys.path`." -#: ../Doc/c-api/init_config.rst:1385 +#: ../Doc/c-api/init_config.rst:1454 msgid "" "If :c:member:`~PyConfig.site_import` is non-zero, :data:`sys.path` can be " "modified by the :mod:`site` module. If :c:member:`~PyConfig." @@ -2226,24 +2357,43 @@ msgstr "" "usuario existe, el módulo :mod:`site` agrega el directorio del paquete del " "sitio del usuario a :data:`sys.path`." -#: ../Doc/c-api/init_config.rst:1391 +#: ../Doc/c-api/init_config.rst:1460 msgid "The following configuration files are used by the path configuration:" msgstr "" "La configuración de ruta utiliza los siguientes archivos de configuración:" -#: ../Doc/c-api/init_config.rst:1393 +#: ../Doc/c-api/init_config.rst:1462 msgid "``pyvenv.cfg``" msgstr "``pyvenv.cfg``" -#: ../Doc/c-api/init_config.rst:1394 -msgid "``python._pth`` (Windows only)" -msgstr "``python._pth`` (sólo Windows)" +#: ../Doc/c-api/init_config.rst:1463 +msgid "``._pth`` file (ex: ``python._pth``)" +msgstr "" -#: ../Doc/c-api/init_config.rst:1395 +#: ../Doc/c-api/init_config.rst:1464 msgid "``pybuilddir.txt`` (Unix only)" msgstr "``pybuilddir.txt`` (sólo Unix)" -#: ../Doc/c-api/init_config.rst:1397 +#: ../Doc/c-api/init_config.rst:1466 +msgid "If a ``._pth`` file is present:" +msgstr "" + +#: ../Doc/c-api/init_config.rst:1468 +#, fuzzy +msgid "Set :c:member:`~PyConfig.isolated` to ``1``." +msgstr ":c:member:`PyConfig.isolated`" + +#: ../Doc/c-api/init_config.rst:1470 +#, fuzzy +msgid "Set :c:member:`~PyConfig.site_import` to ``0``." +msgstr "Establezca :c:member:`PyPreConfig.utf8_mode` en ``0``," + +#: ../Doc/c-api/init_config.rst:1471 +#, fuzzy +msgid "Set :c:member:`~PyConfig.safe_path` to ``1``." +msgstr "Establezca :c:member:`PyPreConfig.utf8_mode` en ``0``," + +#: ../Doc/c-api/init_config.rst:1473 msgid "" "The ``__PYVENV_LAUNCHER__`` environment variable is used to set :c:member:" "`PyConfig.base_executable`" @@ -2251,11 +2401,11 @@ msgstr "" "La variable de entorno ``__PYVENV_LAUNCHER__`` se usa para establecer :c:" "member:`PyConfig.base_executable`" -#: ../Doc/c-api/init_config.rst:1402 +#: ../Doc/c-api/init_config.rst:1478 msgid "Py_RunMain()" msgstr "Py_RunMain()" -#: ../Doc/c-api/init_config.rst:1406 +#: ../Doc/c-api/init_config.rst:1482 msgid "" "Execute the command (:c:member:`PyConfig.run_command`), the script (:c:" "member:`PyConfig.run_filename`) or the module (:c:member:`PyConfig." @@ -2265,11 +2415,11 @@ msgstr "" "`PyConfig.run_filename`) o el módulo (:c:member:`PyConfig.run_module`) " "especificado en la línea de comando o en la configuración." -#: ../Doc/c-api/init_config.rst:1411 +#: ../Doc/c-api/init_config.rst:1487 msgid "By default and when if :option:`-i` option is used, run the REPL." msgstr "Por defecto y cuando se usa la opción :option:`-i`, ejecuta el REPL." -#: ../Doc/c-api/init_config.rst:1413 +#: ../Doc/c-api/init_config.rst:1489 msgid "" "Finally, finalizes Python and returns an exit status that can be passed to " "the ``exit()`` function." @@ -2277,7 +2427,7 @@ msgstr "" "Finalmente, finaliza Python y retorna un estado de salida que se puede pasar " "a la función ``exit()``." -#: ../Doc/c-api/init_config.rst:1416 +#: ../Doc/c-api/init_config.rst:1492 msgid "" "See :ref:`Python Configuration ` for an example of " "customized Python always running in isolated mode using :c:func:`Py_RunMain`." @@ -2286,49 +2436,50 @@ msgstr "" "ejemplo de Python personalizado que siempre se ejecuta en modo aislado " "usando :c:func:`Py_RunMain`." -#: ../Doc/c-api/init_config.rst:1422 +#: ../Doc/c-api/init_config.rst:1498 msgid "Py_GetArgcArgv()" msgstr "Py_GetArgcArgv()" -#: ../Doc/c-api/init_config.rst:1426 +#: ../Doc/c-api/init_config.rst:1502 msgid "Get the original command line arguments, before Python modified them." msgstr "" "Obtiene los argumentos originales de la línea de comandos, antes de que " "Python los modificara." -#: ../Doc/c-api/init_config.rst:1428 +#: ../Doc/c-api/init_config.rst:1504 msgid "See also :c:member:`PyConfig.orig_argv` member." msgstr "Ver también el miembro :c:member:`PyConfig.orig_argv`." -#: ../Doc/c-api/init_config.rst:1432 +#: ../Doc/c-api/init_config.rst:1508 msgid "Multi-Phase Initialization Private Provisional API" msgstr "API Provisional Privada de Inicialización Multifásica" -#: ../Doc/c-api/init_config.rst:1434 +#: ../Doc/c-api/init_config.rst:1510 +#, fuzzy msgid "" "This section is a private provisional API introducing multi-phase " -"initialization, the core feature of the :pep:`432`:" +"initialization, the core feature of :pep:`432`:" msgstr "" "Esta sección es una API provisional privada que presenta la inicialización " "de múltiples fases, la característica principal de :pep:`432`:" -#: ../Doc/c-api/init_config.rst:1437 +#: ../Doc/c-api/init_config.rst:1513 msgid "\"Core\" initialization phase, \"bare minimum Python\":" msgstr "Fase de inicialización \"Core\", \"Python mínimo\":" -#: ../Doc/c-api/init_config.rst:1439 +#: ../Doc/c-api/init_config.rst:1515 msgid "Builtin types;" msgstr "Tipos incorporados;" -#: ../Doc/c-api/init_config.rst:1440 +#: ../Doc/c-api/init_config.rst:1516 msgid "Builtin exceptions;" msgstr "Excepciones incorporadas;" -#: ../Doc/c-api/init_config.rst:1441 +#: ../Doc/c-api/init_config.rst:1517 msgid "Builtin and frozen modules;" msgstr "Módulos incorporados y congelados;" -#: ../Doc/c-api/init_config.rst:1442 +#: ../Doc/c-api/init_config.rst:1518 msgid "" "The :mod:`sys` module is only partially initialized (ex: :data:`sys.path` " "doesn't exist yet)." @@ -2336,24 +2487,24 @@ msgstr "" "El módulo :mod:`sys` solo se inicializa parcialmente (por ejemplo :data:`sys." "path` aún no existe)." -#: ../Doc/c-api/init_config.rst:1445 +#: ../Doc/c-api/init_config.rst:1521 msgid "\"Main\" initialization phase, Python is fully initialized:" msgstr "" "Fase de inicialización \"principal\", Python está completamente inicializado:" -#: ../Doc/c-api/init_config.rst:1447 +#: ../Doc/c-api/init_config.rst:1523 msgid "Install and configure :mod:`importlib`;" msgstr "Instala y configura :mod:`importlib`;" -#: ../Doc/c-api/init_config.rst:1448 +#: ../Doc/c-api/init_config.rst:1524 msgid "Apply the :ref:`Path Configuration `;" msgstr "Aplique la :ref:`Configuración de ruta `;" -#: ../Doc/c-api/init_config.rst:1449 +#: ../Doc/c-api/init_config.rst:1525 msgid "Install signal handlers;" msgstr "Instala manejadores de señal;" -#: ../Doc/c-api/init_config.rst:1450 +#: ../Doc/c-api/init_config.rst:1526 msgid "" "Finish :mod:`sys` module initialization (ex: create :data:`sys.stdout` and :" "data:`sys.path`);" @@ -2361,34 +2512,35 @@ msgstr "" "Finaliza la inicialización del módulo :mod:`sys` (por ejemplo: crea :data:" "`sys.stdout` y :data:`sys.path`);" -#: ../Doc/c-api/init_config.rst:1452 +#: ../Doc/c-api/init_config.rst:1528 msgid "" "Enable optional features like :mod:`faulthandler` and :mod:`tracemalloc`;" msgstr "" "Habilita características opcionales como :mod:`faulthandler` y :mod:" "`tracemalloc`;" -#: ../Doc/c-api/init_config.rst:1453 +#: ../Doc/c-api/init_config.rst:1529 msgid "Import the :mod:`site` module;" msgstr "Importe el módulo :mod:`site`;" -#: ../Doc/c-api/init_config.rst:1454 +#: ../Doc/c-api/init_config.rst:1530 msgid "etc." msgstr "etc." -#: ../Doc/c-api/init_config.rst:1456 +#: ../Doc/c-api/init_config.rst:1532 msgid "Private provisional API:" msgstr "API provisional privada:" -#: ../Doc/c-api/init_config.rst:1458 +#: ../Doc/c-api/init_config.rst:1534 +#, fuzzy msgid "" -":c:member:`PyConfig._init_main`: if set to 0, :c:func:" +":c:member:`PyConfig._init_main`: if set to ``0``, :c:func:" "`Py_InitializeFromConfig` stops at the \"Core\" initialization phase." msgstr "" ":c:member:`PyConfig._init_main`: si se establece en 0, :c:func:" "`Py_InitializeFromConfig` se detiene en la fase de inicialización \"Core\"." -#: ../Doc/c-api/init_config.rst:1460 +#: ../Doc/c-api/init_config.rst:1536 msgid "" ":c:member:`PyConfig._isolated_interpreter`: if non-zero, disallow threads, " "subprocesses and fork." @@ -2396,14 +2548,14 @@ msgstr "" ":c:member:`PyConfig._isolated_interpreter`: si no es cero, no permite hilos, " "subprocesos y bifurcaciones." -#: ../Doc/c-api/init_config.rst:1465 +#: ../Doc/c-api/init_config.rst:1541 msgid "" "Move to the \"Main\" initialization phase, finish the Python initialization." msgstr "" "Vaya a la fase de inicialización \"Principal\", finalice la inicialización " "de Python." -#: ../Doc/c-api/init_config.rst:1467 +#: ../Doc/c-api/init_config.rst:1543 msgid "" "No module is imported during the \"Core\" phase and the ``importlib`` module " "is not configured: the :ref:`Path Configuration ` is only " @@ -2418,7 +2570,7 @@ msgstr "" "ruta `, tal vez instale un importador personalizado :data:" "`sys.meta_path` o un enlace de importación, etc." -#: ../Doc/c-api/init_config.rst:1473 +#: ../Doc/c-api/init_config.rst:1549 msgid "" "It may become possible to calculatin the :ref:`Path Configuration ` in Python, after the Core phase and before the Main phase, which is " @@ -2428,7 +2580,7 @@ msgstr "" "en Python, después de la fase Core y antes de la fase Main, que es una de " "las motivaciones :pep:`432`." -#: ../Doc/c-api/init_config.rst:1477 +#: ../Doc/c-api/init_config.rst:1553 msgid "" "The \"Core\" phase is not properly defined: what should be and what should " "not be available at this phase is not specified yet. The API is marked as " @@ -2441,10 +2593,63 @@ msgstr "" "incluso eliminar en cualquier momento hasta que se diseñe una API pública " "adecuada." -#: ../Doc/c-api/init_config.rst:1482 +#: ../Doc/c-api/init_config.rst:1558 msgid "" "Example running Python code between \"Core\" and \"Main\" initialization " "phases::" msgstr "" "Ejemplo de ejecución de código Python entre las fases de inicialización " "\"Core\" y \"Main\"::" + +#~ msgid "" +#~ ":data:`sys.path` contains neither the script's directory (computed from " +#~ "``argv[0]`` or the current directory) nor the user's site-packages " +#~ "directory." +#~ msgstr "" +#~ ":data:`sys.path` no contiene ni el directorio del script (calculado a " +#~ "partir de ``argv[0]`` o el directorio actual) ni el directorio de " +#~ "paquetes del sitio del usuario." + +#~ msgid "" +#~ "Set :c:member:`~PyConfig.use_environment` and :c:member:`~PyConfig." +#~ "user_site_directory` to 0." +#~ msgstr "" +#~ "Establece :c:member:`~PyConfig.use_environment` y :c:member:`~PyConfig." +#~ "user_site_directory` en 0." + +#~ msgid "It has no effect on Windows." +#~ msgstr "No tiene ningún efecto en Windows." + +#~ msgid "" +#~ "More complete example modifying the default configuration, read the " +#~ "configuration, and then override some parameters::" +#~ msgstr "" +#~ "Ejemplo más completo que modifica la configuración predeterminada, lee la " +#~ "configuración y luego anula algunos parámetros ::" + +#~ msgid "" +#~ "Configuration files are still used with this configuration. Set the :ref:" +#~ "`Python Path Configuration ` (\"output fields\") to " +#~ "ignore these configuration files and avoid the function computing the " +#~ "default path configuration." +#~ msgstr "" +#~ "Los archivos de configuración todavía se utilizan con esta configuración. " +#~ "Configure el :ref:`Python Path Configuration ` " +#~ "(\"campos de salida\") para ignorar estos archivos de configuración y " +#~ "evitar que la función calcule la configuración de ruta predeterminada." + +#~ msgid "" +#~ "If at least one \"output field\" is not set, Python calculates the path " +#~ "configuration to fill unset fields. If :c:member:`~PyConfig." +#~ "module_search_paths_set` is equal to 0, :c:member:`~PyConfig." +#~ "module_search_paths` is overridden and :c:member:`~PyConfig." +#~ "module_search_paths_set` is set to 1." +#~ msgstr "" +#~ "Si no se establece al menos un \"campo de salida\", Python calcula la " +#~ "configuración de la ruta para completar los campos no definidos. Si :c:" +#~ "member:`~PyConfig.module_search_paths_set` es igual a 0, :c:member:" +#~ "`~PyConfig.module_search_paths` se reemplaza y :c:member:`~PyConfig." +#~ "module_search_paths_set` se establece en 1." + +#~ msgid "``python._pth`` (Windows only)" +#~ msgstr "``python._pth`` (sólo Windows)" diff --git a/c-api/intro.po b/c-api/intro.po index 33a43cec52..a0c586b8c8 100644 --- a/c-api/intro.po +++ b/c-api/intro.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-12-09 10:48+0800\n" "Last-Translator: Rodrigo Tobar \n" "Language: es\n" @@ -19,8 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/c-api/intro.rst:8 msgid "Introduction" @@ -230,6 +229,104 @@ msgstr "" "no es necesariamente una lista completa." #: ../Doc/c-api/intro.rst:110 +msgid "Return the absolute value of ``x``." +msgstr "Retorna el valor absoluto de ``x``." + +#: ../Doc/c-api/intro.rst:116 +msgid "" +"Ask the compiler to always inline a static inline function. The compiler can " +"ignore it and decides to not inline the function." +msgstr "" + +#: ../Doc/c-api/intro.rst:119 +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 "" + +#: ../Doc/c-api/intro.rst:123 +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 "" + +#: ../Doc/c-api/intro.rst:127 +msgid "" +"If Python is :ref:`built in debug mode ` (if the ``Py_DEBUG`` " +"macro is defined), the :c:macro:`Py_ALWAYS_INLINE` macro does nothing." +msgstr "" + +#: ../Doc/c-api/intro.rst:130 +msgid "It must be specified before the function return type. Usage::" +msgstr "" + +#: ../Doc/c-api/intro.rst:138 +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 "" +"El argumento debe ser un carácter o un número entero en el rango [-128, 127] " +"o [0, 255]. Este macro retorna la conversión ``c`` a un ``unsigned char``." + +#: ../Doc/c-api/intro.rst:143 +msgid "" +"Use this for deprecated declarations. The macro must be placed before the " +"symbol name." +msgstr "" +"Use esto para declaraciones obsoletas. El macro debe colocarse antes del " +"nombre del símbolo." + +#: ../Doc/c-api/intro.rst:146 ../Doc/c-api/intro.rst:232 +#: ../Doc/c-api/intro.rst:250 +msgid "Example::" +msgstr "Ejemplo::" + +#: ../Doc/c-api/intro.rst:150 +msgid "MSVC support was added." +msgstr "Soporte para MSVC fue agregado." + +#: ../Doc/c-api/intro.rst:155 +msgid "" +"Like ``getenv(s)``, but returns ``NULL`` if :option:`-E` was passed on the " +"command line (i.e. if ``Py_IgnoreEnvironmentFlag`` is set)." +msgstr "" +"Al igual que ``getenv(s)``, pero retorna ``NULL`` si: la opción :option:`-E` " +"se pasó en la línea de comando (es decir, si se establece " +"``Py_IgnoreEnvironmentFlag``)." + +#: ../Doc/c-api/intro.rst:160 +msgid "Return the maximum value between ``x`` and ``y``." +msgstr "Retorna el valor máximo entre ``x`` e ``y``." + +#: ../Doc/c-api/intro.rst:166 +msgid "Return the size of a structure (``type``) ``member`` in bytes." +msgstr "Retorna el tamaño de una estructura (``type``) ``member`` en bytes." + +#: ../Doc/c-api/intro.rst:172 +msgid "Return the minimum value between ``x`` and ``y``." +msgstr "Retorna el valor mínimo entre ``x`` e ``y``." + +#: ../Doc/c-api/intro.rst:178 +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 "" + +#: ../Doc/c-api/intro.rst:182 +msgid "Usage::" +msgstr "" + +#: ../Doc/c-api/intro.rst:190 +msgid "" +"Convert ``x`` to a C string. E.g. ``Py_STRINGIFY(123)`` returns ``\"123\"``." +msgstr "" +"Convierte ``x`` en una cadena de caracteres C. Por ejemplo, " +"``Py_STRINGIFY(123)`` retorna ``\"123\"``." + +#: ../Doc/c-api/intro.rst:197 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 " @@ -242,7 +339,7 @@ msgstr "" "declaraciones ``case``. Use esto en lugares donde podría tener la tentación " "de poner una llamada ``assert(0)`` o ``abort()``." -#: ../Doc/c-api/intro.rst:115 +#: ../Doc/c-api/intro.rst:202 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 " @@ -253,7 +350,7 @@ msgstr "" "macro se implementa con ``__builtin_unreachable()`` en GCC en modo de " "lanzamiento." -#: ../Doc/c-api/intro.rst:119 +#: ../Doc/c-api/intro.rst:206 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`." @@ -261,7 +358,7 @@ msgstr "" "Un uso de ``Py_UNREACHABLE()`` es seguir una llamada a una función que nunca " "retorna pero que no está declarada :c:macro:`_Py_NO_RETURN`." -#: ../Doc/c-api/intro.rst:122 +#: ../Doc/c-api/intro.rst:209 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 " @@ -276,47 +373,7 @@ msgstr "" "persona que llama. Si no se puede informar del error a la persona que llama, " "se puede utilizar :c:func:`Py_FatalError`." -#: ../Doc/c-api/intro.rst:132 -msgid "Return the absolute value of ``x``." -msgstr "Retorna el valor absoluto de ``x``." - -#: ../Doc/c-api/intro.rst:138 -msgid "Return the minimum value between ``x`` and ``y``." -msgstr "Retorna el valor mínimo entre ``x`` e ``y``." - -#: ../Doc/c-api/intro.rst:144 -msgid "Return the maximum value between ``x`` and ``y``." -msgstr "Retorna el valor máximo entre ``x`` e ``y``." - -#: ../Doc/c-api/intro.rst:150 -msgid "" -"Convert ``x`` to a C string. E.g. ``Py_STRINGIFY(123)`` returns ``\"123\"``." -msgstr "" -"Convierte ``x`` en una cadena de caracteres C. Por ejemplo, " -"``Py_STRINGIFY(123)`` retorna ``\"123\"``." - -#: ../Doc/c-api/intro.rst:157 -msgid "Return the size of a structure (``type``) ``member`` in bytes." -msgstr "Retorna el tamaño de una estructura (``type``) ``member`` en bytes." - -#: ../Doc/c-api/intro.rst:163 -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 "" -"El argumento debe ser un carácter o un número entero en el rango [-128, 127] " -"o [0, 255]. Este macro retorna la conversión ``c`` a un ``unsigned char``." - -#: ../Doc/c-api/intro.rst:168 -msgid "" -"Like ``getenv(s)``, but returns ``NULL`` if :option:`-E` was passed on the " -"command line (i.e. if ``Py_IgnoreEnvironmentFlag`` is set)." -msgstr "" -"Al igual que ``getenv(s)``, pero retorna ``NULL`` si: la opción :option:`-E` " -"se pasó en la línea de comando (es decir, si se establece " -"``Py_IgnoreEnvironmentFlag``)." - -#: ../Doc/c-api/intro.rst:173 +#: ../Doc/c-api/intro.rst:219 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; }``." @@ -325,24 +382,7 @@ msgstr "" "silenciar las advertencias del compilador. Ejemplo: ``int func(int a, int " "Py_UNUSED(b)) {return a; }``." -#: ../Doc/c-api/intro.rst:180 -msgid "" -"Use this for deprecated declarations. The macro must be placed before the " -"symbol name." -msgstr "" -"Use esto para declaraciones obsoletas. El macro debe colocarse antes del " -"nombre del símbolo." - -#: ../Doc/c-api/intro.rst:183 ../Doc/c-api/intro.rst:198 -#: ../Doc/c-api/intro.rst:216 -msgid "Example::" -msgstr "Ejemplo::" - -#: ../Doc/c-api/intro.rst:187 -msgid "MSVC support was added." -msgstr "Soporte para MSVC fue agregado." - -#: ../Doc/c-api/intro.rst:192 +#: ../Doc/c-api/intro.rst:226 msgid "" "Creates a variable with name ``name`` that can be used in docstrings. If " "Python is built without docstrings, the value will be empty." @@ -350,7 +390,7 @@ msgstr "" "Crea una variable con el nombre ``name`` que se puede usar en *docstrings*. " "Si Python se construye sin *docstrings*, el valor estará vacío." -#: ../Doc/c-api/intro.rst:195 +#: ../Doc/c-api/intro.rst:229 msgid "" "Use :c:macro:`PyDoc_STRVAR` for docstrings to support building Python " "without docstrings, as specified in :pep:`7`." @@ -358,7 +398,7 @@ msgstr "" "Utilice :c:macro:`PyDoc_STRVAR` para que los *docstrings* admitan la " "construcción de Python sin *docstrings*, como se especifica en :pep:`7`." -#: ../Doc/c-api/intro.rst:210 +#: ../Doc/c-api/intro.rst:244 msgid "" "Creates a docstring for the given input string or an empty string if " "docstrings are disabled." @@ -366,7 +406,7 @@ msgstr "" "Crea un *docstring* para la cadena de caracteres de entrada dada o una " "cadena vacía si los *docstrings* están deshabilitados." -#: ../Doc/c-api/intro.rst:213 +#: ../Doc/c-api/intro.rst:247 msgid "" "Use :c:macro:`PyDoc_STR` in specifying docstrings to support building Python " "without docstrings, as specified in :pep:`7`." @@ -374,20 +414,21 @@ msgstr "" "Utilice :c:macro:`PyDoc_STR` al especificar *docstrings* para admitir la " "construcción de Python sin *docstrings*, como se especifica en :pep:`7`." -#: ../Doc/c-api/intro.rst:227 +#: ../Doc/c-api/intro.rst:262 msgid "Objects, Types and Reference Counts" msgstr "Objetos, tipos y conteos de referencias" -#: ../Doc/c-api/intro.rst:231 +#: ../Doc/c-api/intro.rst:266 +#, fuzzy msgid "" "Most Python/C API functions have one or more arguments as well as a return " -"value of type :c:type:`PyObject*`. This type is a pointer to an opaque data " +"value of type :c:expr:`PyObject*`. This type is a pointer to an opaque data " "type representing an arbitrary Python object. Since all Python object types " "are treated the same way by the Python language in most situations (e.g., " "assignments, scope rules, and argument passing), it is only fitting that " "they should be represented by a single C type. Almost all Python objects " "live on the heap: you never declare an automatic or static variable of type :" -"c:type:`PyObject`, only pointer variables of type :c:type:`PyObject*` can " +"c:type:`PyObject`, only pointer variables of type :c:expr:`PyObject*` can " "be declared. The sole exception are the type objects; since these must " "never be deallocated, they are typically static :c:type:`PyTypeObject` " "objects." @@ -405,7 +446,7 @@ msgstr "" "tipo; como nunca deben desasignarse, son típicamente objetos estáticos :c:" "type:`PyTypeObject`." -#: ../Doc/c-api/intro.rst:242 +#: ../Doc/c-api/intro.rst:277 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." @@ -424,11 +465,11 @@ msgstr "" "es verdadero si (y solo si) el objeto al que apunta *a* es una lista de " "Python." -#: ../Doc/c-api/intro.rst:253 +#: ../Doc/c-api/intro.rst:288 msgid "Reference Counts" msgstr "Conteo de Referencias" -#: ../Doc/c-api/intro.rst:255 +#: ../Doc/c-api/intro.rst:290 msgid "" "The reference count is important because today's computers have a finite " "(and often severely limited) memory size; it counts how many different " @@ -453,7 +494,7 @@ msgstr "" "objetos que se refieren entre sí aquí; por ahora, la solución es \"no hagas " "eso\")." -#: ../Doc/c-api/intro.rst:270 +#: ../Doc/c-api/intro.rst:305 msgid "" "Reference counts are always manipulated explicitly. The normal way is to " "use the macro :c:func:`Py_INCREF` to increment an object's reference count " @@ -486,7 +527,7 @@ msgstr "" "la memoria virtual (suponiendo ``sizeof(Py_ssize_t) >= sizeof(void*)``). Por " "lo tanto, el incremento del recuento de referencia es una operación simple." -#: ../Doc/c-api/intro.rst:284 +#: ../Doc/c-api/intro.rst:319 msgid "" "It is not necessary to increment an object's reference count for every " "local variable that contains a pointer to an object. In theory, the " @@ -517,7 +558,7 @@ msgstr "" "mecanismo de llamada garantiza mantener una referencia a cada argumento " "durante la duración de la llamada." -#: ../Doc/c-api/intro.rst:298 +#: ../Doc/c-api/intro.rst:333 msgid "" "However, a common pitfall is to extract an object from a list and hold on to " "it for a while without incrementing its reference count. Some other " @@ -536,7 +577,7 @@ msgstr "" "vuelva al usuario desde a :c:func:`Py_DECREF`, por lo que casi cualquier " "operación es potencialmente peligrosa." -#: ../Doc/c-api/intro.rst:306 +#: ../Doc/c-api/intro.rst:341 msgid "" "A safe approach is to always use the generic operations (functions whose " "name begins with ``PyObject_``, ``PyNumber_``, ``PySequence_`` or " @@ -552,11 +593,11 @@ msgstr "" "responsabilidad de llamar :c:func:`Py_DECREF` cuando hayan terminado con el " "resultado; Esto pronto se convierte en una segunda naturaleza." -#: ../Doc/c-api/intro.rst:316 +#: ../Doc/c-api/intro.rst:351 msgid "Reference Count Details" msgstr "Detalles del conteo de referencia" -#: ../Doc/c-api/intro.rst:318 +#: ../Doc/c-api/intro.rst:353 msgid "" "The reference count behavior of functions in the Python/C API is best " "explained in terms of *ownership of references*. Ownership pertains to " @@ -588,7 +629,7 @@ msgstr "" "No es necesario hacer nada para obtener una :term:`referencia prestada " "`." -#: ../Doc/c-api/intro.rst:331 +#: ../Doc/c-api/intro.rst:366 msgid "" "Conversely, when a calling function passes in a reference to an object, " "there are two possibilities: the function *steals* a reference to the " @@ -602,7 +643,7 @@ msgstr "" "a una función, esa función asume que ahora posee esa referencia, y usted ya " "no es responsable de ella." -#: ../Doc/c-api/intro.rst:341 +#: ../Doc/c-api/intro.rst:376 msgid "" "Few functions steal references; the two notable exceptions are :c:func:" "`PyList_SetItem` and :c:func:`PyTuple_SetItem`, which steal a reference to " @@ -622,7 +663,7 @@ msgstr "" "(olvidando el manejo de errores por el momento; una mejor manera de " "codificar esto se muestra a continuación)::" -#: ../Doc/c-api/intro.rst:356 +#: ../Doc/c-api/intro.rst:391 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 " @@ -635,7 +676,7 @@ msgstr "" "para tomar otra referencia antes de llamar a la función de robo de " "referencias." -#: ../Doc/c-api/intro.rst:361 +#: ../Doc/c-api/intro.rst:396 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 " @@ -648,7 +689,7 @@ msgstr "" "datos inmutable. Solo debe usar :c:func:`PyTuple_SetItem` para las tuplas " "que está creando usted mismo." -#: ../Doc/c-api/intro.rst:366 +#: ../Doc/c-api/intro.rst:401 msgid "" "Equivalent code for populating a list can be written using :c:func:" "`PyList_New` and :c:func:`PyList_SetItem`." @@ -656,7 +697,7 @@ msgstr "" "El código equivalente para llenar una lista se puede escribir usando :c:func:" "`PyList_New` y :c:func:`PyList_SetItem`." -#: ../Doc/c-api/intro.rst:369 +#: ../Doc/c-api/intro.rst:404 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:" @@ -672,7 +713,7 @@ msgstr "" "reemplazarse por lo siguiente (que también se ocupa de la comprobación de " "errores)::" -#: ../Doc/c-api/intro.rst:380 +#: ../Doc/c-api/intro.rst:415 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 " @@ -690,7 +731,7 @@ msgstr "" "(\"robarla\"). Por ejemplo, esta función establece todos los elementos de " "una lista (en realidad, cualquier secuencia mutable) en un elemento dado::" -#: ../Doc/c-api/intro.rst:410 +#: ../Doc/c-api/intro.rst:445 msgid "" "The situation is slightly different for function return values. While " "passing a reference to most functions does not change your ownership " @@ -713,7 +754,7 @@ msgstr "" "siempre retornan una nueva referencia (la entidad que llama se convierte en " "el propietario de la referencia)." -#: ../Doc/c-api/intro.rst:419 +#: ../Doc/c-api/intro.rst:454 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 " @@ -731,7 +772,7 @@ msgstr "" "lista usando :c:func:`PySequence_GetItem` (que toma exactamente los mismos " "argumentos), usted posee una referencia al objeto retornado." -#: ../Doc/c-api/intro.rst:431 +#: ../Doc/c-api/intro.rst:466 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`, " @@ -741,15 +782,16 @@ msgstr "" "de los elementos en una lista de enteros; una vez usando :c:func:" "`PyList_GetItem`, y una vez usando :c:func:`PySequence_GetItem`. ::" -#: ../Doc/c-api/intro.rst:495 +#: ../Doc/c-api/intro.rst:530 msgid "Types" msgstr "Tipos" -#: ../Doc/c-api/intro.rst:497 +#: ../Doc/c-api/intro.rst:532 +#, fuzzy 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:type:`int`, :c:type:`long`, :c:type:" -"`double` and :c:type:`char*`. A few structure types are used to describe " +"API; most are simple C types such as :c:expr:`int`, :c:expr:`long`, :c:expr:" +"`double` and :c:expr:`char*`. A few structure types are used to describe " "static tables used to list the functions exported by a module or the data " "attributes of a new object type, and another is used to describe the value " "of a complex number. These will be discussed together with the functions " @@ -763,11 +805,19 @@ msgstr "" "objeto, y otro se usa para describir el valor de un número complejo. Estos " "serán discutidos junto con las funciones que los usan." -#: ../Doc/c-api/intro.rst:509 +#: ../Doc/c-api/intro.rst:542 +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 " +"type). See :pep:`353` for details. ``PY_SSIZE_T_MAX`` is the largest " +"positive value of type :c:type:`Py_ssize_t`." +msgstr "" + +#: ../Doc/c-api/intro.rst:551 msgid "Exceptions" msgstr "Excepciones" -#: ../Doc/c-api/intro.rst:511 +#: ../Doc/c-api/intro.rst:553 msgid "" "The Python programmer only needs to deal with exceptions if specific error " "handling is required; unhandled exceptions are automatically propagated to " @@ -781,7 +831,7 @@ msgstr "" "sucesivamente, hasta que llegan al intérprete de nivel superior, donde se " "informan al usuario acompañado de un seguimiento de pila (*stack traceback*)." -#: ../Doc/c-api/intro.rst:519 +#: ../Doc/c-api/intro.rst:561 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 " @@ -808,7 +858,7 @@ msgstr "" "requieren pruebas explícitas de errores con :c:func:`PyErr_Occurred`. Estas " "excepciones siempre se documentan explícitamente." -#: ../Doc/c-api/intro.rst:534 +#: ../Doc/c-api/intro.rst:576 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 " @@ -831,7 +881,7 @@ msgstr "" "más general) para establecer el estado de excepción, y :c:func:`PyErr_Clear` " "borra la excepción estado." -#: ../Doc/c-api/intro.rst:544 +#: ../Doc/c-api/intro.rst:586 msgid "" "The full exception state consists of three objects (all of which can be " "``NULL``): the exception type, the corresponding exception value, and the " @@ -854,7 +904,7 @@ msgstr "" "de código de bytes (*bytecode*) de Python, que se encarga de transferirlo a " "``sys.exc_info()`` y amigos." -#: ../Doc/c-api/intro.rst:556 +#: ../Doc/c-api/intro.rst:598 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." @@ -879,7 +929,7 @@ msgstr "" "También reduce la extensión de vida útil a menudo no deseada para los " "objetos a los que hacen referencia los marcos de pila en el rastreo." -#: ../Doc/c-api/intro.rst:567 +#: ../Doc/c-api/intro.rst:609 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 " @@ -897,7 +947,7 @@ msgstr "" "excepción que se acaba de generar y perderá información importante sobre la " "causa exacta del error." -#: ../Doc/c-api/intro.rst:576 +#: ../Doc/c-api/intro.rst:618 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 " @@ -912,11 +962,11 @@ msgstr "" "para recordar por qué le gusta Python, le mostramos el código Python " "equivalente::" -#: ../Doc/c-api/intro.rst:591 +#: ../Doc/c-api/intro.rst:633 msgid "Here is the corresponding C code, in all its glory::" msgstr "Aquí está el código C correspondiente, en todo su esplendor::" -#: ../Doc/c-api/intro.rst:643 +#: ../Doc/c-api/intro.rst:685 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:" @@ -939,11 +989,11 @@ msgstr "" "``-1`` (falla) y solo se establece en éxito después de que la última llamada " "realizada sea exitosa." -#: ../Doc/c-api/intro.rst:657 +#: ../Doc/c-api/intro.rst:699 msgid "Embedding Python" msgstr "Integración de Python" -#: ../Doc/c-api/intro.rst:659 +#: ../Doc/c-api/intro.rst:701 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 " @@ -956,7 +1006,7 @@ msgstr "" "de Python. La mayor parte de la funcionalidad del intérprete solo se puede " "usar después de que el intérprete se haya inicializado." -#: ../Doc/c-api/intro.rst:672 +#: ../Doc/c-api/intro.rst:714 msgid "" "The basic initialization function is :c:func:`Py_Initialize`. This " "initializes the table of loaded modules, and creates the fundamental " @@ -968,20 +1018,15 @@ msgstr "" "mod:`builtins`, :mod:`__main__`, y :mod:`sys`. También inicializa la ruta de " "búsqueda del módulo (``sys.path``)." -#: ../Doc/c-api/intro.rst:679 +#: ../Doc/c-api/intro.rst:719 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 " -"later, it must be set explicitly with a call to ``PySys_SetArgvEx(argc, " -"argv, updatepath)`` after the call to :c:func:`Py_Initialize`." +"later, setting :c:member:`PyConfig.argv` and :c:member:`PyConfig.parse_argv` " +"must be set: see :ref:`Python Initialization Configuration `." msgstr "" -":c:func:`Py_Initialize` no establece la \"lista de argumentos de script" -"\" (``sys.argv``). Si el código de Python necesita esta variable que se " -"ejecutará más adelante, debe establecerse explícitamente con una llamada a " -"``PySys_SetArgvEx(argc, argv, updatepath)`` después de la llamada a :c:func:" -"`Py_Initialize`." -#: ../Doc/c-api/intro.rst:684 +#: ../Doc/c-api/intro.rst:724 msgid "" "On most systems (in particular, on Unix and Windows, although the details " "are slightly different), :c:func:`Py_Initialize` calculates the module " @@ -1002,7 +1047,7 @@ msgstr "" "encuentra el ejecutable llamado :file:`python` en la ruta de búsqueda del " "comando *shell* (la variable de entorno :envvar:`PATH`)." -#: ../Doc/c-api/intro.rst:693 +#: ../Doc/c-api/intro.rst:733 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/" @@ -1021,7 +1066,7 @@ msgstr "" "`PYTHONHOME`, o inserte directorios adicionales delante de la ruta estándar " "estableciendo :envvar:`PYTHONPATH`." -#: ../Doc/c-api/intro.rst:708 +#: ../Doc/c-api/intro.rst:748 msgid "" "The embedding application can steer the search by calling " "``Py_SetProgramName(file)`` *before* calling :c:func:`Py_Initialize`. Note " @@ -1039,7 +1084,7 @@ msgstr "" "`Py_GetPath`, :c:func:`Py_GetPrefix`, :c:func:`Py_GetExecPrefix`, y :c:func:" "`Py_GetProgramFullPath` (todo definido en :file:`Modules/getpath.c`)." -#: ../Doc/c-api/intro.rst:718 +#: ../Doc/c-api/intro.rst:758 msgid "" "Sometimes, it is desirable to \"uninitialize\" Python. For instance, the " "application may want to start over (make another call to :c:func:" @@ -1063,11 +1108,11 @@ msgstr "" "asignada por el intérprete de Python, por ejemplo, la memoria asignada por " "los módulos de extensión actualmente no se puede liberar." -#: ../Doc/c-api/intro.rst:732 +#: ../Doc/c-api/intro.rst:772 msgid "Debugging Builds" msgstr "Depuración de compilaciones" -#: ../Doc/c-api/intro.rst:734 +#: ../Doc/c-api/intro.rst:774 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 " @@ -1078,13 +1123,14 @@ msgstr "" "tienden a agregar una gran cantidad de sobrecarga al tiempo de ejecución, " "por lo que no están habilitadas de forma predeterminada." -#: ../Doc/c-api/intro.rst:738 +#: ../Doc/c-api/intro.rst:778 +#, fuzzy 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 " "available that support tracing of reference counts, debugging the memory " "allocator, or low-level profiling of the main interpreter loop. Only the " -"most frequently-used builds will be described in the remainder of this " +"most frequently used builds will be described in the remainder of this " "section." msgstr "" "Una lista completa de los diversos tipos de compilaciones de depuración se " @@ -1094,7 +1140,7 @@ msgstr "" "creación de perfiles de bajo nivel del bucle principal del intérprete. Solo " "las compilaciones más utilizadas se describirán en el resto de esta sección." -#: ../Doc/c-api/intro.rst:744 +#: ../Doc/c-api/intro.rst:784 msgid "" "Compiling the interpreter with the :c:macro:`Py_DEBUG` macro defined " "produces what is generally meant by :ref:`a debug build of Python `." @@ -1121,7 +1167,7 @@ msgstr "" "continuación, se realizan verificaciones adicionales, véase :ref:" "`compilaciones de depuración `." -#: ../Doc/c-api/intro.rst:755 +#: ../Doc/c-api/intro.rst:795 msgid "" "Defining :c:macro:`Py_TRACE_REFS` enables reference tracing (see the :option:" "`configure --with-trace-refs option <--with-trace-refs>`). When defined, a " @@ -1138,10 +1184,22 @@ msgstr "" "imprimen todas las referencias existentes. (En modo interactivo, esto sucede " "después de cada declaración ejecutada por el intérprete)." -#: ../Doc/c-api/intro.rst:762 +#: ../Doc/c-api/intro.rst:802 msgid "" "Please refer to :file:`Misc/SpecialBuilds.txt` in the Python source " "distribution for more detailed information." msgstr "" "Consulte :file:`Misc/SpecialBuilds.txt` en la distribución fuente de Python " "para obtener información más detallada." + +#~ 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 " +#~ "later, it must be set explicitly with a call to ``PySys_SetArgvEx(argc, " +#~ "argv, updatepath)`` after the call to :c:func:`Py_Initialize`." +#~ msgstr "" +#~ ":c:func:`Py_Initialize` no establece la \"lista de argumentos de " +#~ "script\" (``sys.argv``). Si el código de Python necesita esta variable " +#~ "que se ejecutará más adelante, debe establecerse explícitamente con una " +#~ "llamada a ``PySys_SetArgvEx(argc, argv, updatepath)`` después de la " +#~ "llamada a :c:func:`Py_Initialize`." diff --git a/c-api/iter.po b/c-api/iter.po index d90cd201bb..e882d8788c 100644 --- a/c-api/iter.po +++ b/c-api/iter.po @@ -10,16 +10,16 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-08-16 13:04+0200\n" "Last-Translator: Cristián Maureira-Fredes \n" -"Language-Team: python-doc-es\n" "Language: es\n" +"Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" -"Generated-By: Babel 2.9.1\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/c-api/iter.rst:6 msgid "Iterator Protocol" @@ -30,35 +30,39 @@ msgid "There are two functions specifically for working with iterators." msgstr "Hay dos funciones específicas para trabajar con iteradores." #: ../Doc/c-api/iter.rst:12 +#, fuzzy msgid "" -"Return non-zero if the object *o* supports the iterator protocol, and ``0`` " -"otherwise. This function always succeeds." +"Return non-zero if the object *o* can be safely passed to :c:func:" +"`PyIter_Next`, and ``0`` otherwise. This function always succeeds." msgstr "" "Retorna un valor distinto de cero si el objeto *o* admite el protocolo de " "iterador y ``0`` en caso contrario. Esta función siempre tiene éxito." #: ../Doc/c-api/iter.rst:17 +#, fuzzy msgid "" -"Returns non-zero if the object 'obj' provides :class:`AsyncIterator` " -"protocols, and ``0`` otherwise. This function always succeeds." +"Return non-zero if the object *o* provides the :class:`AsyncIterator` " +"protocol, and ``0`` otherwise. This function always succeeds." msgstr "" "Retorna un valor distinto de cero si el objeto 'obj' proporciona protocolos :" "class:`AsyncIterator` y ``0`` en caso contrario. Esta función siempre tiene " "éxito." #: ../Doc/c-api/iter.rst:24 +#, fuzzy msgid "" -"Return the next value from the iteration *o*. The object must be an " -"iterator (it is up to the caller to check this). If there are no remaining " -"values, returns ``NULL`` with no exception set. If an error occurs while " -"retrieving the item, returns ``NULL`` and passes along the exception." +"Return the next value from the iterator *o*. The object must be an iterator " +"according to :c:func:`PyIter_Check` (it is up to the caller to check this). " +"If there are no remaining values, returns ``NULL`` with no exception set. If " +"an error occurs while retrieving the item, returns ``NULL`` and passes along " +"the exception." msgstr "" "Retorna el siguiente valor de la iteración *o*. El objeto debe ser un " "iterador (depende de quién llama comprobar esto). Si no quedan valores " "restantes, retorna ``NULL`` sin establecer ninguna excepción. Si se produce " "un error al recuperar el elemento, retorna ``NULL`` y pasa la excepción." -#: ../Doc/c-api/iter.rst:29 +#: ../Doc/c-api/iter.rst:30 msgid "" "To write a loop which iterates over an iterator, the C code should look " "something like this::" @@ -66,32 +70,32 @@ msgstr "" "Para escribir un bucle que itera sobre un iterador, el código en C debería " "verse así::" -#: ../Doc/c-api/iter.rst:58 +#: ../Doc/c-api/iter.rst:59 msgid "" "The enum value used to represent different results of :c:func:`PyIter_Send`." msgstr "" "El valor de enumeración utilizado para representar diferentes resultados de :" "c:func:`PyIter_Send`." -#: ../Doc/c-api/iter.rst:65 +#: ../Doc/c-api/iter.rst:66 msgid "Sends the *arg* value into the iterator *iter*. Returns:" msgstr "Envía el valor *arg* al iterador *iter*. Retorna:" -#: ../Doc/c-api/iter.rst:67 +#: ../Doc/c-api/iter.rst:68 msgid "" "``PYGEN_RETURN`` if iterator returns. Return value is returned via *presult*." msgstr "" "``PYGEN_RETURN`` si el iterador regresa. El valor de retorno se retorna a " "través de *presult*." -#: ../Doc/c-api/iter.rst:68 +#: ../Doc/c-api/iter.rst:69 msgid "" "``PYGEN_NEXT`` if iterator yields. Yielded value is returned via *presult*." msgstr "" "``PYGEN_NEXT`` si el iterador cede. El valor cedido se retorna a través de " "*presult*." -#: ../Doc/c-api/iter.rst:69 +#: ../Doc/c-api/iter.rst:70 msgid "" "``PYGEN_ERROR`` if iterator has raised and exception. *presult* is set to " "``NULL``." diff --git a/c-api/list.po b/c-api/list.po index bad57e1938..3f7a08d860 100644 --- a/c-api/list.po +++ b/c-api/list.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-03-19 11:16+0100\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-08-01 20:11+0200\n" "Last-Translator: Cristián Maureira-Fredes \n" "Language: es\n" @@ -19,8 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.8.0\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/c-api/list.rst:6 msgid "List Objects" @@ -83,7 +82,8 @@ msgstr "" "``len(list)`` en un objeto lista." #: ../Doc/c-api/list.rst:56 -msgid "Macro form of :c:func:`PyList_Size` without error checking." +#, fuzzy +msgid "Similar to :c:func:`PyList_Size`, but without error checking." msgstr "Forma macro de :c:func:`PyList_Size` sin comprobación de errores." #: ../Doc/c-api/list.rst:61 @@ -99,7 +99,8 @@ msgstr "" "len(list)*), retorna ``NULL`` y establece una excepción :exc:`IndexError`." #: ../Doc/c-api/list.rst:69 -msgid "Macro form of :c:func:`PyList_GetItem` without error checking." +#, fuzzy +msgid "Similar to :c:func:`PyList_GetItem`, but without error checking." msgstr "Forma macro de :c:func:`PyList_GetItem` sin comprobación de errores." #: ../Doc/c-api/list.rst:74 diff --git a/c-api/long.po b/c-api/long.po index d4a8818dba..3b4ba25b60 100644 --- a/c-api/long.po +++ b/c-api/long.po @@ -10,16 +10,16 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-08-02 01:24+0200\n" "Last-Translator: Cristián Maureira-Fredes \n" -"Language-Team: python-doc-es\n" "Language: es\n" +"Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" -"Generated-By: Babel 2.9.1\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/c-api/long.rst:6 msgid "Integer Objects" @@ -79,9 +79,10 @@ msgstr "" "de error." #: ../Doc/c-api/long.rst:43 +#, fuzzy msgid "" "The current implementation keeps an array of integer objects for all " -"integers between ``-5`` and ``256``, when you create an int in that range " +"integers between ``-5`` and ``256``. When you create an int in that range " "you actually just get back a reference to the existing object." msgstr "" "La implementación actual mantiene un arreglo de objetos enteros para todos " @@ -89,8 +90,9 @@ msgstr "" "realidad solo obtiene una referencia al objeto existente." #: ../Doc/c-api/long.rst:50 +#, fuzzy msgid "" -"Return a new :c:type:`PyLongObject` object from a C :c:type:`unsigned long`, " +"Return a new :c:type:`PyLongObject` object from a C :c:expr:`unsigned long`, " "or ``NULL`` on failure." msgstr "" "Retorna un objeto :c:type:`PyLongObject` nuevo desde un C :c:type:`unsigned " @@ -113,16 +115,18 @@ msgstr "" "o ``NULL`` en caso de error." #: ../Doc/c-api/long.rst:68 +#, fuzzy msgid "" -"Return a new :c:type:`PyLongObject` object from a C :c:type:`long long`, or " +"Return a new :c:type:`PyLongObject` object from a C :c:expr:`long long`, or " "``NULL`` on failure." msgstr "" "Retorna un objeto :c:type:`PyLongObject` nuevo desde un C :c:type:`long " "long`, o ``NULL`` en caso de error." #: ../Doc/c-api/long.rst:74 +#, fuzzy msgid "" -"Return a new :c:type:`PyLongObject` object from a C :c:type:`unsigned long " +"Return a new :c:type:`PyLongObject` object from a C :c:expr:`unsigned long " "long`, or ``NULL`` on failure." msgstr "" "Retorna un objeto :c:type:`PyLongObject` nuevo desde un C :c:type:`unsigned " @@ -176,8 +180,9 @@ msgstr "" "recuperar del valor resultante usando :c:func:`PyLong_AsVoidPtr`." #: ../Doc/c-api/long.rst:118 ../Doc/c-api/long.rst:136 +#, fuzzy msgid "" -"Return a C :c:type:`long` representation of *obj*. If *obj* is not an " +"Return a C :c:expr:`long` representation of *obj*. If *obj* is not an " "instance of :c:type:`PyLongObject`, first call its :meth:`__index__` method " "(if present) to convert it to a :c:type:`PyLongObject`." msgstr "" @@ -186,9 +191,10 @@ msgstr "" "`__index__` (si está presente) para convertirlo en un :c:type:`PyLongObject`." #: ../Doc/c-api/long.rst:122 +#, fuzzy msgid "" "Raise :exc:`OverflowError` if the value of *obj* is out of range for a :c:" -"type:`long`." +"expr:`long`." msgstr "" "Lanza :exc:`OverflowError` si el valor de *obj* está fuera de rango para un :" "c:type:`long`." @@ -227,8 +233,9 @@ msgstr "" "``-1`` como de costumbre." #: ../Doc/c-api/long.rst:159 ../Doc/c-api/long.rst:177 +#, fuzzy msgid "" -"Return a C :c:type:`long long` representation of *obj*. If *obj* is not an " +"Return a C :c:expr:`long long` representation of *obj*. If *obj* is not an " "instance of :c:type:`PyLongObject`, first call its :meth:`__index__` method " "(if present) to convert it to a :c:type:`PyLongObject`." msgstr "" @@ -237,9 +244,10 @@ msgstr "" "`__index__` (si está presente) para convertirlo en un :c:type:`PyLongObject`." #: ../Doc/c-api/long.rst:163 +#, fuzzy msgid "" "Raise :exc:`OverflowError` if the value of *obj* is out of range for a :c:" -"type:`long long`." +"expr:`long long`." msgstr "" "Lanza :exc:`OverflowError` si el valor de *obj* está fuera de rango para un :" "c:type:`long long`." @@ -274,17 +282,19 @@ msgstr "" "un :c:type:`Py_ssize_t`." #: ../Doc/c-api/long.rst:218 +#, fuzzy msgid "" -"Return a C :c:type:`unsigned long` representation of *pylong*. *pylong* " +"Return a C :c:expr:`unsigned long` representation of *pylong*. *pylong* " "must be an instance of :c:type:`PyLongObject`." msgstr "" "Retorna una representación de C :c:type:`unsigned long` de *pylong*. " "*pylong* debe ser una instancia de :c:type:`PyLongObject`." #: ../Doc/c-api/long.rst:221 +#, fuzzy msgid "" "Raise :exc:`OverflowError` if the value of *pylong* is out of range for a :c:" -"type:`unsigned long`." +"expr:`unsigned long`." msgstr "" "Lanza :exc:`OverflowError` si el valor de *pylong* está fuera de rango para " "un :c:type:`unsigned long`." @@ -322,17 +332,19 @@ msgstr "" "desambiguar." #: ../Doc/c-api/long.rst:249 +#, fuzzy msgid "" -"Return a C :c:type:`unsigned long long` representation of *pylong*. " +"Return a C :c:expr:`unsigned long long` representation of *pylong*. " "*pylong* must be an instance of :c:type:`PyLongObject`." msgstr "" "Retorna una representación de C :c:type:`unsigned long long` de *pylong*. " "*pylong* debe ser una instancia de :c:type:`PyLongObject`." #: ../Doc/c-api/long.rst:252 +#, fuzzy msgid "" "Raise :exc:`OverflowError` if the value of *pylong* is out of range for an :" -"c:type:`unsigned long long`." +"c:expr:`unsigned long long`." msgstr "" "Lanza :exc:`OverflowError` si el valor de *pylong* está fuera de rango para " "un :c:type:`unsigned long long`." @@ -353,8 +365,9 @@ msgstr "" "`TypeError`." #: ../Doc/c-api/long.rst:264 +#, fuzzy msgid "" -"Return a C :c:type:`unsigned long` representation of *obj*. If *obj* is not " +"Return a C :c:expr:`unsigned long` representation of *obj*. If *obj* is not " "an instance of :c:type:`PyLongObject`, first call its :meth:`__index__` " "method (if present) to convert it to a :c:type:`PyLongObject`." msgstr "" @@ -363,8 +376,9 @@ msgstr "" "`__index__` (si está presente) para convertirlo en un :c:type:`PyLongObject`." #: ../Doc/c-api/long.rst:268 +#, fuzzy msgid "" -"If the value of *obj* is out of range for an :c:type:`unsigned long`, return " +"If the value of *obj* is out of range for an :c:expr:`unsigned long`, return " "the reduction of that value modulo ``ULONG_MAX + 1``." msgstr "" "Si el valor de *obj* está fuera del rango para :c:type:`unsigned long`, " @@ -379,8 +393,9 @@ msgstr "" "para desambiguar." #: ../Doc/c-api/long.rst:283 +#, fuzzy msgid "" -"Return a C :c:type:`unsigned long long` representation of *obj*. If *obj* " +"Return a C :c:expr:`unsigned long long` representation of *obj*. If *obj* " "is not an instance of :c:type:`PyLongObject`, first call its :meth:" "`__index__` method (if present) to convert it to a :c:type:`PyLongObject`." msgstr "" @@ -390,8 +405,9 @@ msgstr "" "`PyLongObject`." #: ../Doc/c-api/long.rst:288 +#, fuzzy msgid "" -"If the value of *obj* is out of range for an :c:type:`unsigned long long`, " +"If the value of *obj* is out of range for an :c:expr:`unsigned long long`, " "return the reduction of that value modulo ``ULLONG_MAX + 1``." msgstr "" "Si el valor de *obj* está fuera del rango para :c:type:`unsigned long long`, " @@ -406,17 +422,19 @@ msgstr "" "para desambiguar." #: ../Doc/c-api/long.rst:303 +#, fuzzy msgid "" -"Return a C :c:type:`double` representation of *pylong*. *pylong* must be an " +"Return a C :c:expr:`double` representation of *pylong*. *pylong* must be an " "instance of :c:type:`PyLongObject`." msgstr "" "Retorna una representación de C :c:type:`double` de *pylong*. *pylong* debe " "ser una instancia de :c:type:`PyLongObject`." #: ../Doc/c-api/long.rst:306 +#, fuzzy msgid "" "Raise :exc:`OverflowError` if the value of *pylong* is out of range for a :c:" -"type:`double`." +"expr:`double`." msgstr "" "Lanza :exc:`OverflowError` si el valor de *pylong* está fuera de rango para " "un :c:type:`double`." @@ -429,10 +447,11 @@ msgstr "" "desambiguar." #: ../Doc/c-api/long.rst:314 +#, fuzzy msgid "" -"Convert a Python integer *pylong* to a C :c:type:`void` pointer. If *pylong* " +"Convert a Python integer *pylong* to a C :c:expr:`void` pointer. If *pylong* " "cannot be converted, an :exc:`OverflowError` will be raised. This is only " -"assured to produce a usable :c:type:`void` pointer for values created with :" +"assured to produce a usable :c:expr:`void` pointer for values created with :" "c:func:`PyLong_FromVoidPtr`." msgstr "" "Convierte un entero Python *pylong* en un puntero C :c:type:`void`. Si " diff --git a/c-api/mapping.po b/c-api/mapping.po index 874d0f1840..f72c07e839 100644 --- a/c-api/mapping.po +++ b/c-api/mapping.po @@ -10,17 +10,16 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-05 12:54+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2020-05-10 02:44+0200\n" +"Last-Translator: Cristián Maureira-Fredes \n" +"Language: es\n" "Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" +"Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.8.0\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Last-Translator: Cristián Maureira-Fredes \n" -"Language: es\n" -"X-Generator: Poedit 2.3\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/c-api/mapping.rst:6 msgid "Mapping Protocol" @@ -35,11 +34,13 @@ msgstr "" "func:`PyObject_DelItem`." #: ../Doc/c-api/mapping.rst:14 +#, fuzzy msgid "" -"Return ``1`` if the object provides mapping protocol or supports slicing, " -"and ``0`` otherwise. Note that it returns ``1`` for Python classes with a :" -"meth:`__getitem__` method since in general case it is impossible to " -"determine what type of keys it supports. This function always succeeds." +"Return ``1`` if the object provides the mapping protocol or supports " +"slicing, and ``0`` otherwise. Note that it returns ``1`` for Python classes " +"with a :meth:`__getitem__` method, since in general it is impossible to " +"determine what type of keys the class supports. This function always " +"succeeds." msgstr "" "Retorna ``1`` si el objeto proporciona el protocolo de mapeo o admite " "rebanado (*slicing*), y ``0`` de lo contrario. Tenga en cuenta que retorna " diff --git a/c-api/marshal.po b/c-api/marshal.po index d506153e52..bb690697fe 100644 --- a/c-api/marshal.po +++ b/c-api/marshal.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-03-19 11:16+0100\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-08-01 20:28+0200\n" "Last-Translator: Cristián Maureira-Fredes \n" "Language: es\n" @@ -19,8 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.8.0\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/c-api/marshal.rst:6 msgid "Data marshalling support" @@ -60,14 +59,10 @@ msgstr "" #: ../Doc/c-api/marshal.rst:24 msgid "" -"Marshal a :c:type:`long` integer, *value*, to *file*. This will only write " +"Marshal a :c:expr:`long` integer, *value*, to *file*. This will only write " "the least-significant 32 bits of *value*; regardless of the size of the " -"native :c:type:`long` type. *version* indicates the file format." +"native :c:expr:`long` type. *version* indicates the file format." msgstr "" -"Empaqueta (*marshal*) un entero :c:type:`long`, *value*, a un archivo " -"*file*. Esto solo escribirá los 32 bits menos significativos de *value*; " -"independientemente del tamaño del tipo nativo :c:type:`long`. *version* " -"indica el formato del archivo." #: ../Doc/c-api/marshal.rst:31 msgid "" @@ -92,10 +87,11 @@ msgstr "" "(*marshalled*)." #: ../Doc/c-api/marshal.rst:46 +#, fuzzy msgid "" -"Return a C :c:type:`long` from the data stream in a :c:type:`FILE*` opened " +"Return a C :c:expr:`long` from the data stream in a :c:expr:`FILE*` opened " "for reading. Only a 32-bit value can be read in using this function, " -"regardless of the native size of :c:type:`long`." +"regardless of the native size of :c:expr:`long`." msgstr "" "Retorna un C :c:type:`long` del flujo de datos en un :c:type:`FILE*` abierto " "para lectura. Solo se puede leer un valor de 32 bits con esta función, " @@ -110,18 +106,20 @@ msgstr "" "retorna ``-1``." #: ../Doc/c-api/marshal.rst:56 +#, fuzzy msgid "" -"Return a C :c:type:`short` from the data stream in a :c:type:`FILE*` opened " +"Return a C :c:expr:`short` from the data stream in a :c:expr:`FILE*` opened " "for reading. Only a 16-bit value can be read in using this function, " -"regardless of the native size of :c:type:`short`." +"regardless of the native size of :c:expr:`short`." msgstr "" "Retorna un C :c:type:`short` desde el flujo de datos en un :c:type:`FILE*` " "abierto para lectura. Solo se puede leer un valor de 16 bits con esta " "función, independientemente del tamaño nativo de :c:type:`short`." #: ../Doc/c-api/marshal.rst:66 +#, fuzzy msgid "" -"Return a Python object from the data stream in a :c:type:`FILE*` opened for " +"Return a Python object from the data stream in a :c:expr:`FILE*` opened for " "reading." msgstr "" "Retorna un objeto Python del flujo de datos en un :c:type:`FILE*` abierto " @@ -137,8 +135,9 @@ msgstr "" "`ValueError` o :exc:`TypeError`) y retorna ``NULL``." #: ../Doc/c-api/marshal.rst:75 +#, fuzzy msgid "" -"Return a Python object from the data stream in a :c:type:`FILE*` opened for " +"Return a Python object from the data stream in a :c:expr:`FILE*` opened for " "reading. Unlike :c:func:`PyMarshal_ReadObjectFromFile`, this function " "assumes that no further objects will be read from the file, allowing it to " "aggressively load file data into memory so that the de-serialization can " @@ -161,3 +160,13 @@ msgid "" msgstr "" "Retorna un objeto Python del flujo de datos en un búfer de bytes que " "contiene *len* bytes a los que apunta *data*." + +#~ msgid "" +#~ "Marshal a :c:type:`long` integer, *value*, to *file*. This will only " +#~ "write the least-significant 32 bits of *value*; regardless of the size of " +#~ "the native :c:type:`long` type. *version* indicates the file format." +#~ msgstr "" +#~ "Empaqueta (*marshal*) un entero :c:type:`long`, *value*, a un archivo " +#~ "*file*. Esto solo escribirá los 32 bits menos significativos de *value*; " +#~ "independientemente del tamaño del tipo nativo :c:type:`long`. *version* " +#~ "indica el formato del archivo." diff --git a/c-api/memory.po b/c-api/memory.po index 50015035ba..02b83720e5 100644 --- a/c-api/memory.po +++ b/c-api/memory.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-10-22 08:58-0300\n" "Last-Translator: Cristián Maureira-Fredes \n" "Language: es\n" @@ -19,8 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" -"X-Generator: Poedit 2.2.1\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/c-api/memory.rst:8 msgid "Memory Management" @@ -121,6 +120,7 @@ msgstr "" "solo participa en la asignación del objeto de bytes retornado como resultado." #: ../Doc/c-api/memory.rst:72 +#, fuzzy msgid "" "In most situations, however, it is recommended to allocate memory from the " "Python heap specifically because the latter is under control of the Python " @@ -128,7 +128,7 @@ msgid "" "extended with new object types written in C. Another reason for using the " "Python heap is the desire to *inform* the Python memory manager about the " "memory needs of the extension module. Even when the requested memory is used " -"exclusively for internal, highly-specific purposes, delegating all memory " +"exclusively for internal, highly specific purposes, delegating all memory " "requests to the Python memory manager causes the interpreter to have a more " "accurate image of its memory footprint as a whole. Consequently, under " "certain circumstances, the Python memory manager may or may not trigger " @@ -280,8 +280,9 @@ msgstr "" #: ../Doc/c-api/memory.rst:144 ../Doc/c-api/memory.rst:215 #: ../Doc/c-api/memory.rst:323 +#, fuzzy msgid "" -"Allocates *n* bytes and returns a pointer of type :c:type:`void*` to the " +"Allocates *n* bytes and returns a pointer of type :c:expr:`void*` to the " "allocated memory, or ``NULL`` if the request fails." msgstr "" "Asigna *n* bytes y retorna un puntero de tipo :c:type:`void*` a la memoria " @@ -299,9 +300,10 @@ msgstr "" #: ../Doc/c-api/memory.rst:154 ../Doc/c-api/memory.rst:225 #: ../Doc/c-api/memory.rst:333 +#, fuzzy msgid "" "Allocates *nelem* elements each whose size in bytes is *elsize* and returns " -"a pointer of type :c:type:`void*` to the allocated memory, or ``NULL`` if " +"a pointer of type :c:expr:`void*` to the allocated memory, or ``NULL`` if " "the request fails. The memory is initialized to zeros." msgstr "" "Asigna *nelem* elementos cada uno cuyo tamaño en bytes es *elsize* y retorna " @@ -478,9 +480,10 @@ msgstr "" "Tenga en cuenta que *TYPE* se refiere a cualquier tipo de C." #: ../Doc/c-api/memory.rst:267 +#, fuzzy msgid "" "Same as :c:func:`PyMem_Malloc`, but allocates ``(n * sizeof(TYPE))`` bytes " -"of memory. Returns a pointer cast to :c:type:`TYPE*`. The memory will not " +"of memory. Returns a pointer cast to :c:expr:`TYPE*`. The memory will not " "have been initialized in any way." msgstr "" "Igual que :c:func:`PyMem_Malloc`, pero asigna ``(n * sizeof(TYPE))`` bytes " @@ -488,9 +491,10 @@ msgstr "" "no se habrá inicializado de ninguna manera." #: ../Doc/c-api/memory.rst:274 +#, fuzzy msgid "" "Same as :c:func:`PyMem_Realloc`, but the memory block is resized to ``(n * " -"sizeof(TYPE))`` bytes. Returns a pointer cast to :c:type:`TYPE*`. On " +"sizeof(TYPE))`` bytes. Returns a pointer cast to :c:expr:`TYPE*`. On " "return, *p* will be a pointer to the new memory area, or ``NULL`` in the " "event of failure." msgstr "" @@ -553,9 +557,10 @@ msgid "Object allocators" msgstr "Asignadores de objetos" #: ../Doc/c-api/memory.rst:308 +#, fuzzy msgid "" "There is no guarantee that the memory returned by these allocators can be " -"successfully casted to a Python object when intercepting the allocating " +"successfully cast to a Python object when intercepting the allocating " "functions in this domain by the methods described in the :ref:`Customize " "Memory Allocators ` section." msgstr "" @@ -729,7 +734,8 @@ msgstr "" msgid "``pymalloc``: :ref:`pymalloc memory allocator `." msgstr "``pymalloc``: :ref:`asignador de memoria pymalloc `." -# debug hooks se deja como enlaces de depuración ya que en traducciones anteriores se dejó como enlaces +# debug hooks se deja como enlaces de depuración ya que en traducciones +# anteriores se dejó como enlaces #: ../Doc/c-api/memory.rst:392 msgid "" "\"+ debug\": with :ref:`debug hooks on the Python memory allocators `." +msgstr "" + +#: ../Doc/c-api/memory.rst:484 msgid "" "Setup :ref:`debug hooks in the Python memory allocators ` " "to detect memory errors." @@ -913,14 +926,14 @@ msgstr "" "Configuración :ref:`enlaces de depuración en los asignadores de memoria de " "Python ` para detectar errores de memoria." -#: ../Doc/c-api/memory.rst:489 +#: ../Doc/c-api/memory.rst:491 msgid "Debug hooks on the Python memory allocators" msgstr "" "Configurar enlaces para detectar errores en las funciones del asignador de " "memoria de Python" # "debug hooks" como se traduciría -#: ../Doc/c-api/memory.rst:491 +#: ../Doc/c-api/memory.rst:493 msgid "" "When :ref:`Python is built in debug mode `, the :c:func:" "`PyMem_SetupDebugHooks` function is called at the :ref:`Python " @@ -932,7 +945,7 @@ msgstr "" "de Python ` para configurar los enlaces de depuración en Python " "asignadores de memoria para detectar errores de memoria." -#: ../Doc/c-api/memory.rst:496 +#: ../Doc/c-api/memory.rst:498 msgid "" "The :envvar:`PYTHONMALLOC` environment variable can be used to install debug " "hooks on a Python compiled in release mode (ex: ``PYTHONMALLOC=debug``)." @@ -941,7 +954,7 @@ msgstr "" "instalar enlaces de depuración en un Python compilado en modo de lanzamiento " "(por ejemplo: ``PYTHONMALLOC=debug``)." -#: ../Doc/c-api/memory.rst:499 +#: ../Doc/c-api/memory.rst:501 msgid "" "The :c:func:`PyMem_SetupDebugHooks` function can be used to set debug hooks " "after calling :c:func:`PyMem_SetAllocator`." @@ -950,7 +963,7 @@ msgstr "" "enlaces de depuración después de llamar a :c:func:`PyMem_SetAllocator`." # hooks como se traduce? -#: ../Doc/c-api/memory.rst:502 +#: ../Doc/c-api/memory.rst:504 msgid "" "These debug hooks fill dynamically allocated memory blocks with special, " "recognizable bit patterns. Newly allocated memory is filled with the byte " @@ -967,11 +980,11 @@ msgstr "" "byte ``0xFD`` (``PYMEM_FORBIDDENBYTE``). Es poco probable que las cadenas de " "estos bytes sean direcciones válidas, flotantes o cadenas ASCII." -#: ../Doc/c-api/memory.rst:509 +#: ../Doc/c-api/memory.rst:511 msgid "Runtime checks:" msgstr "Verificaciones de tiempo de ejecución:" -#: ../Doc/c-api/memory.rst:511 +#: ../Doc/c-api/memory.rst:513 msgid "" "Detect API violations. For example, detect if :c:func:`PyObject_Free` is " "called on a memory block allocated by :c:func:`PyMem_Malloc`." @@ -979,17 +992,17 @@ msgstr "" "Detecte violaciones de API, por ejemplo: :c:func:`PyObject_Free` llamado en " "un búfer asignado por :c:func:`PyMem_Malloc`." -#: ../Doc/c-api/memory.rst:513 +#: ../Doc/c-api/memory.rst:515 msgid "Detect write before the start of the buffer (buffer underflow)." msgstr "" "Detectar escritura antes del inicio del búfer (desbordamiento del búfer)" -#: ../Doc/c-api/memory.rst:514 +#: ../Doc/c-api/memory.rst:516 msgid "Detect write after the end of the buffer (buffer overflow)." msgstr "" "Detectar escritura después del final del búfer (desbordamiento del búfer)" -#: ../Doc/c-api/memory.rst:515 +#: ../Doc/c-api/memory.rst:517 msgid "" "Check that the :term:`GIL ` is held when allocator " "functions of :c:data:`PYMEM_DOMAIN_OBJ` (ex: :c:func:`PyObject_Malloc`) and :" @@ -1000,7 +1013,7 @@ msgstr "" "`PyObject_Malloc`) y dominios :c:data:`PYMEM_DOMAIN_MEM` (por ejemplo: :c:" "func:`PyMem_Malloc`) se llaman." -#: ../Doc/c-api/memory.rst:520 +#: ../Doc/c-api/memory.rst:522 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 " @@ -1012,14 +1025,14 @@ msgstr "" "El rastreo solo se muestra si :mod:`tracemalloc` rastrea las asignaciones de " "memoria de Python y se rastrea el bloque de memoria." -#: ../Doc/c-api/memory.rst:525 +#: ../Doc/c-api/memory.rst:527 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 " "represents the address returned by a malloc-like or realloc-like function " -"(``p[i:j]`` means the slice of bytes from ``*(p+i)`` inclusive up to ``*(p" -"+j)`` exclusive; note that the treatment of negative indices differs from a " -"Python slice):" +"(``p[i:j]`` means the slice of bytes from ``*(p+i)`` inclusive up to " +"``*(p+j)`` exclusive; note that the treatment of negative indices differs " +"from a Python slice):" msgstr "" "Sea *S*=``sizeof(size_t)``. Se agregan ``2*S`` bytes en cada extremo de cada " "bloque de *N* bytes solicitados. El diseño de la memoria es así, donde p " @@ -1028,11 +1041,11 @@ msgstr "" "``*(p+j)`` exclusivo; tenga en cuenta que el tratamiento de los índices " "negativos difiere de un segmento de Python):" -#: ../Doc/c-api/memory.rst:532 +#: ../Doc/c-api/memory.rst:534 msgid "``p[-2*S:-S]``" msgstr "``p[-2*S:-S]``" -#: ../Doc/c-api/memory.rst:532 +#: ../Doc/c-api/memory.rst:534 msgid "" "Number of bytes originally asked for. This is a size_t, big-endian (easier " "to read in a memory dump)." @@ -1040,41 +1053,41 @@ msgstr "" "Número de bytes solicitados originalmente. Este es un size_t, big-endian " "(más fácil de leer en un volcado de memoria)." -#: ../Doc/c-api/memory.rst:539 +#: ../Doc/c-api/memory.rst:541 msgid "``p[-S]``" msgstr "``p[-S]``" -#: ../Doc/c-api/memory.rst:535 +#: ../Doc/c-api/memory.rst:537 msgid "API identifier (ASCII character):" msgstr "Identificador de API (carácter ASCII):" -#: ../Doc/c-api/memory.rst:537 +#: ../Doc/c-api/memory.rst:539 msgid "``'r'`` for :c:data:`PYMEM_DOMAIN_RAW`." msgstr "``'r'`` para :c:data:`PYMEM_DOMAIN_RAW`." -#: ../Doc/c-api/memory.rst:538 +#: ../Doc/c-api/memory.rst:540 msgid "``'m'`` for :c:data:`PYMEM_DOMAIN_MEM`." msgstr "``'m'`` para :c:data:`PYMEM_DOMAIN_MEM`." -#: ../Doc/c-api/memory.rst:539 +#: ../Doc/c-api/memory.rst:541 msgid "``'o'`` for :c:data:`PYMEM_DOMAIN_OBJ`." msgstr "``'o'`` para :c:data:`PYMEM_DOMAIN_OBJ`." -#: ../Doc/c-api/memory.rst:542 +#: ../Doc/c-api/memory.rst:544 msgid "``p[-S+1:0]``" msgstr "``p[-S+1:0]``" -#: ../Doc/c-api/memory.rst:542 +#: ../Doc/c-api/memory.rst:544 msgid "Copies of PYMEM_FORBIDDENBYTE. Used to catch under- writes and reads." msgstr "" "Copias de PYMEM_FORBIDDENBYTE. Se utiliza para detectar suscripciones y " "lecturas." -#: ../Doc/c-api/memory.rst:551 +#: ../Doc/c-api/memory.rst:553 msgid "``p[0:N]``" msgstr "``p[0:N]``" -#: ../Doc/c-api/memory.rst:545 +#: ../Doc/c-api/memory.rst:547 msgid "" "The requested memory, filled with copies of PYMEM_CLEANBYTE, used to catch " "reference to uninitialized memory. When a realloc-like function is called " @@ -1093,21 +1106,21 @@ msgstr "" "similar a la realloc solicitando un bloque de memoria más pequeño, los bytes " "antiguos sobrantes también se llenan con PYMEM_DEADBYTE." -#: ../Doc/c-api/memory.rst:554 +#: ../Doc/c-api/memory.rst:556 msgid "``p[N:N+S]``" msgstr "``p[N:N+S]``" -#: ../Doc/c-api/memory.rst:554 +#: ../Doc/c-api/memory.rst:556 msgid "Copies of PYMEM_FORBIDDENBYTE. Used to catch over- writes and reads." msgstr "" "Copias de PYMEM_FORBIDDENBYTE. Se utiliza para detectar sobrescrituras y " "lecturas." -#: ../Doc/c-api/memory.rst:565 +#: ../Doc/c-api/memory.rst:567 msgid "``p[N+S:N+2*S]``" msgstr "``p[N+S:N+2*S]``" -#: ../Doc/c-api/memory.rst:557 +#: ../Doc/c-api/memory.rst:559 msgid "" "Only used if the ``PYMEM_DEBUG_SERIALNO`` macro is defined (not defined by " "default)." @@ -1115,7 +1128,7 @@ msgstr "" "Solo se utiliza si la macro ``PYMEM_DEBUG_SERIALNO`` está definida (no " "definida por defecto)." -#: ../Doc/c-api/memory.rst:560 +#: ../Doc/c-api/memory.rst:562 msgid "" "A serial number, incremented by 1 on each call to a malloc-like or realloc-" "like function. Big-endian ``size_t``. If \"bad memory\" is detected later, " @@ -1132,7 +1145,7 @@ msgstr "" "obmalloc.c es el único lugar donde se incrementa el número de serie, y " "existe para que pueda establecer un punto de interrupción fácilmente." -#: ../Doc/c-api/memory.rst:567 +#: ../Doc/c-api/memory.rst:569 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, " @@ -1154,7 +1167,7 @@ msgstr "" "(lo que significa que se está usando la memoria liberada) o PYMEM_CLEANBYTE " "(que significa que se está usando la memoria no inicializada)." -#: ../Doc/c-api/memory.rst:576 +#: ../Doc/c-api/memory.rst:578 msgid "" "The :c:func:`PyMem_SetupDebugHooks` function now also works on Python " "compiled in release mode. On error, the debug hooks now use :mod:" @@ -1169,7 +1182,7 @@ msgstr "" "comprueban si el GIL se mantiene cuando se llaman las funciones de :c:data:" "`PYMEM_DOMAIN_OBJ` y :c:data:`PYMEM_DOMAIN_MEM` dominios." -#: ../Doc/c-api/memory.rst:584 +#: ../Doc/c-api/memory.rst:586 msgid "" "Byte patterns ``0xCB`` (``PYMEM_CLEANBYTE``), ``0xDB`` (``PYMEM_DEADBYTE``) " "and ``0xFB`` (``PYMEM_FORBIDDENBYTE``) have been replaced with ``0xCD``, " @@ -1181,11 +1194,11 @@ msgstr "" "por ``0xCD``, ``0xDD`` y ``0xFD`` para usar los mismos valores que la " "depuración de Windows CRT ``malloc()`` y ``free()``." -#: ../Doc/c-api/memory.rst:594 +#: ../Doc/c-api/memory.rst:596 msgid "The pymalloc allocator" msgstr "El asignador pymalloc" -#: ../Doc/c-api/memory.rst:596 +#: ../Doc/c-api/memory.rst:598 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 " @@ -1199,7 +1212,7 @@ msgstr "" "Vuelve a :c:func:`PyMem_RawMalloc` y :c:func:`PyMem_RawRealloc` para " "asignaciones de más de 512 bytes." -#: ../Doc/c-api/memory.rst:601 +#: ../Doc/c-api/memory.rst:603 msgid "" "*pymalloc* is the :ref:`default allocator ` of " "the :c:data:`PYMEM_DOMAIN_MEM` (ex: :c:func:`PyMem_Malloc`) and :c:data:" @@ -1209,23 +1222,23 @@ msgstr "" "de :c:data:`PYMEM_DOMAIN_MEM` (por ejemplo: :c:func:`PyMem_Malloc`) y :c:" "data:`PYMEM_DOMAIN_OBJ` (por ejemplo: :c:func:`PyObject_Malloc`) dominios." -#: ../Doc/c-api/memory.rst:605 +#: ../Doc/c-api/memory.rst:607 msgid "The arena allocator uses the following functions:" msgstr "El asignador de arena utiliza las siguientes funciones:" -#: ../Doc/c-api/memory.rst:607 +#: ../Doc/c-api/memory.rst:609 msgid ":c:func:`VirtualAlloc` and :c:func:`VirtualFree` on Windows," msgstr ":c:func:`VirtualAlloc` y :c:func:`VirtualFree` en Windows," -#: ../Doc/c-api/memory.rst:608 +#: ../Doc/c-api/memory.rst:610 msgid ":c:func:`mmap` and :c:func:`munmap` if available," msgstr ":c:func:`mmap` y :c:func:`munmap` si está disponible," -#: ../Doc/c-api/memory.rst:609 +#: ../Doc/c-api/memory.rst:611 msgid ":c:func:`malloc` and :c:func:`free` otherwise." msgstr ":c:func:`malloc` y :c:func:`free` en caso contrario." -#: ../Doc/c-api/memory.rst:611 +#: ../Doc/c-api/memory.rst:613 msgid "" "This allocator is disabled if Python is configured with the :option:`--" "without-pymalloc` option. It can also be disabled at runtime using the :" @@ -1236,11 +1249,11 @@ msgstr "" "ejecución usando la variable de entorno :envvar:`PYTHONMALLOC` (por ejemplo: " "``PYTHONMALLOC=malloc``)." -#: ../Doc/c-api/memory.rst:616 +#: ../Doc/c-api/memory.rst:618 msgid "Customize pymalloc Arena Allocator" msgstr "Personalizar asignador de arena de pymalloc" -#: ../Doc/c-api/memory.rst:622 +#: ../Doc/c-api/memory.rst:624 msgid "" "Structure used to describe an arena allocator. The structure has three " "fields:" @@ -1248,39 +1261,39 @@ msgstr "" "Estructura utilizada para describir un asignador de arena. La estructura " "tiene tres campos:" -#: ../Doc/c-api/memory.rst:630 +#: ../Doc/c-api/memory.rst:632 msgid "``void* alloc(void *ctx, size_t size)``" msgstr "``void* alloc(void *ctx, size_t size)``" -#: ../Doc/c-api/memory.rst:630 +#: ../Doc/c-api/memory.rst:632 msgid "allocate an arena of size bytes" msgstr "asignar una arena de bytes de tamaño" -#: ../Doc/c-api/memory.rst:632 +#: ../Doc/c-api/memory.rst:634 msgid "``void free(void *ctx, void *ptr, size_t size)``" msgstr "``void free(void *ctx, void *ptr, size_t size)``" -#: ../Doc/c-api/memory.rst:632 +#: ../Doc/c-api/memory.rst:634 msgid "free an arena" msgstr "liberar la arena" -#: ../Doc/c-api/memory.rst:637 +#: ../Doc/c-api/memory.rst:639 msgid "Get the arena allocator." msgstr "Consigue el asignador de arena." -#: ../Doc/c-api/memory.rst:641 +#: ../Doc/c-api/memory.rst:643 msgid "Set the arena allocator." msgstr "Establecer el asignador de arena." -#: ../Doc/c-api/memory.rst:645 +#: ../Doc/c-api/memory.rst:647 msgid "tracemalloc C API" msgstr "tracemalloc C API" -#: ../Doc/c-api/memory.rst:651 +#: ../Doc/c-api/memory.rst:653 msgid "Track an allocated memory block in the :mod:`tracemalloc` module." msgstr "Rastree un bloque de memoria asignado en el módulo :mod:`tracemalloc`." -#: ../Doc/c-api/memory.rst:653 +#: ../Doc/c-api/memory.rst:655 msgid "" "Return ``0`` on success, return ``-1`` on error (failed to allocate memory " "to store the trace). Return ``-2`` if tracemalloc is disabled." @@ -1289,12 +1302,12 @@ msgstr "" "asignar memoria para almacenar la traza). Retorna ``-2`` si tracemalloc está " "deshabilitado." -#: ../Doc/c-api/memory.rst:656 +#: ../Doc/c-api/memory.rst:658 msgid "If memory block is already tracked, update the existing trace." msgstr "" "Si el bloque de memoria ya está rastreado, actualice el rastreo existente." -#: ../Doc/c-api/memory.rst:660 +#: ../Doc/c-api/memory.rst:662 msgid "" "Untrack an allocated memory block in the :mod:`tracemalloc` module. Do " "nothing if the block was not tracked." @@ -1302,17 +1315,17 @@ msgstr "" "Descomprima un bloque de memoria asignado en el módulo :mod:`tracemalloc`. " "No haga nada si el bloque no fue rastreado." -#: ../Doc/c-api/memory.rst:663 +#: ../Doc/c-api/memory.rst:665 msgid "Return ``-2`` if tracemalloc is disabled, otherwise return ``0``." msgstr "" "Retorna ``-2`` si tracemalloc está deshabilitado; de lo contrario, retorna " "``0``." -#: ../Doc/c-api/memory.rst:669 +#: ../Doc/c-api/memory.rst:671 msgid "Examples" msgstr "Ejemplos" -#: ../Doc/c-api/memory.rst:671 +#: ../Doc/c-api/memory.rst:673 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 " @@ -1322,12 +1335,12 @@ msgstr "" "el búfer de E/S se asigne desde el montón de Python utilizando el primer " "conjunto de funciones::" -#: ../Doc/c-api/memory.rst:684 +#: ../Doc/c-api/memory.rst:686 msgid "The same code using the type-oriented function set::" msgstr "" "El mismo código que utiliza el conjunto de funciones orientado a tipos::" -#: ../Doc/c-api/memory.rst:696 +#: ../Doc/c-api/memory.rst:698 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 " @@ -1344,7 +1357,7 @@ msgstr "" "uno de los cuales está etiquetado como *fatal* porque mezcla dos asignadores " "diferentes que operan en montones diferentes.::" -#: ../Doc/c-api/memory.rst:711 +#: ../Doc/c-api/memory.rst:713 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:func:" @@ -1354,7 +1367,7 @@ msgstr "" "del montón de Python, los objetos en Python se asignan y liberan con :c:func:" "`PyObject_New`, :c:func:`PyObject_NewVar` y :c:func:`PyObject_Del` ." -#: ../Doc/c-api/memory.rst:715 +#: ../Doc/c-api/memory.rst:717 msgid "" "These will be explained in the next chapter on defining and implementing new " "object types in C." diff --git a/c-api/method.po b/c-api/method.po index 0d75788c6f..bebf0db8f5 100644 --- a/c-api/method.po +++ b/c-api/method.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-03-19 11:16+0100\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-08-01 20:26+0200\n" "Last-Translator: Cristián Maureira-Fredes \n" "Language: es\n" @@ -19,8 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.8.0\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/c-api/method.rst:6 msgid "Instance Method Objects" @@ -55,8 +54,9 @@ msgstr "" "función siempre finaliza con éxito." #: ../Doc/c-api/method.rst:30 +#, fuzzy msgid "" -"Return a new instance method object, with *func* being any callable object " +"Return a new instance method object, with *func* being any callable object. " "*func* is the function that will be called when the instance method is " "called." msgstr "" diff --git a/c-api/module.po b/c-api/module.po index 84c692d5aa..41c570ce95 100644 --- a/c-api/module.po +++ b/c-api/module.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-12-09 10:51+0800\n" "Last-Translator: Rodrigo Tobar \n" "Language: es\n" @@ -19,8 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/c-api/module.rst:6 msgid "Module Objects" @@ -91,14 +90,15 @@ msgstr "" "objeto de módulo), se lanza :exc:`SystemError` y se retorna ``NULL``." #: ../Doc/c-api/module.rst:67 +#, fuzzy msgid "" -"It is recommended extensions use other :c:func:`PyModule_\\*` and :c:func:" -"`PyObject_\\*` functions rather than directly manipulate a module's :attr:" -"`~object.__dict__`." +"It is recommended extensions use other ``PyModule_*`` and ``PyObject_*`` " +"functions rather than directly manipulate a module's :attr:`~object." +"__dict__`." msgstr "" -"Se recomienda que las extensiones utilicen otras funciones :c:func:`PyModule_" -"\\*` y :c:func:`PyObject_\\*` en lugar de manipular directamente el módulo :" -"attr:`~object.__dict__`." +"Se recomienda que las extensiones utilicen otras funciones :c:func:" +"`PyModule_\\*` y :c:func:`PyObject_\\*` en lugar de manipular directamente " +"el módulo :attr:`~object.__dict__`." #: ../Doc/c-api/module.rst:78 msgid "" diff --git a/c-api/number.po b/c-api/number.po index 123e863125..7bd0380510 100644 --- a/c-api/number.po +++ b/c-api/number.po @@ -10,16 +10,16 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-10-19 02:00+0200\n" "Last-Translator: Meta Louis-Kosmas \n" "Language: es\n" "Language-Team: python-doc-es\n" -"Plural-Forms: nplurals=2; plural=(n != 1);nMIME-Version: 1.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/c-api/number.rst:6 msgid "Number Protocol" @@ -71,20 +71,23 @@ msgstr "" "``o1 @ o2``." #: ../Doc/c-api/number.rst:46 +#, fuzzy, python-format msgid "" "Return the floor of *o1* divided by *o2*, or ``NULL`` on failure. This is " -"equivalent to the \"classic\" division of integers." +"the equivalent of the Python expression ``o1 // o2``." msgstr "" -"Retorna el piso (*floor*) de *o1* dividido por *o2*, o ``NULL`` en caso de " -"falla. Esto es equivalente a la división \"clásica\" de enteros." +"Retorna el resto de dividir *o1* entre *o2* o ``NULL`` en caso de error. " +"Este es el equivalente de la expresión de Python ``o1% o2``." #: ../Doc/c-api/number.rst:52 +#, fuzzy msgid "" "Return a reasonable approximation for the mathematical value of *o1* divided " "by *o2*, or ``NULL`` on failure. The return value is \"approximate\" " "because binary floating point numbers are approximate; it is not possible to " "represent all real numbers in base two. This function can return a floating " -"point value when passed two integers." +"point value when passed two integers. This is the equivalent of the Python " +"expression ``o1 / o2``." msgstr "" "Retorna una aproximación razonable para el valor matemático de *o1* dividido " "por *o2* o ``NULL`` en caso de falla. El valor de retorno es \"aproximado\" " @@ -250,13 +253,15 @@ msgstr "" "admite. Este es el equivalente de la declaración de Python ``o1 //= o2``." #: ../Doc/c-api/number.rst:178 +#, fuzzy msgid "" "Return a reasonable approximation for the mathematical value of *o1* divided " "by *o2*, or ``NULL`` on failure. The return value is \"approximate\" " "because binary floating point numbers are approximate; it is not possible to " "represent all real numbers in base two. This function can return a floating " "point value when passed two integers. The operation is done *in-place* when " -"*o1* supports it." +"*o1* supports it. This is the equivalent of the Python statement ``o1 /= " +"o2``." msgstr "" "Retorna una aproximación razonable para el valor matemático de *o1* dividido " "por *o2* o ``NULL`` en caso de falla. El valor de retorno es \"aproximado\" " @@ -265,7 +270,7 @@ msgstr "" "retornar un valor de punto flotante cuando se pasan dos enteros. La " "operación se realiza en su lugar (*in-place*) cuando *o1* lo admite." -#: ../Doc/c-api/number.rst:187 +#: ../Doc/c-api/number.rst:188 msgid "" "Returns the remainder of dividing *o1* by *o2*, or ``NULL`` on failure. The " "operation is done *in-place* when *o1* supports it. This is the equivalent " @@ -275,7 +280,7 @@ msgstr "" "operación se realiza en su lugar (*in-place*) cuando *o1* lo admite. Este es " "el equivalente de la declaración de Python ``o1%= o2``." -#: ../Doc/c-api/number.rst:196 +#: ../Doc/c-api/number.rst:197 msgid "" "See the built-in function :func:`pow`. Returns ``NULL`` on failure. The " "operation is done *in-place* when *o1* supports it. This is the equivalent " @@ -292,7 +297,7 @@ msgstr "" "`Py_None` en su lugar (pasar ``NULL`` para *o3* provocaría un acceso ilegal " "a la memoria)." -#: ../Doc/c-api/number.rst:205 +#: ../Doc/c-api/number.rst:206 msgid "" "Returns the result of left shifting *o1* by *o2* on success, or ``NULL`` on " "failure. The operation is done *in-place* when *o1* supports it. This is " @@ -303,7 +308,7 @@ msgstr "" "(*in-place*) cuando *o1* lo admite. Este es el equivalente de la declaración " "de Python ``o1 <<= o2``." -#: ../Doc/c-api/number.rst:212 +#: ../Doc/c-api/number.rst:213 msgid "" "Returns the result of right shifting *o1* by *o2* on success, or ``NULL`` on " "failure. The operation is done *in-place* when *o1* supports it. This is " @@ -314,7 +319,7 @@ msgstr "" "(*in-place*) cuando *o1* lo admite. Este es el equivalente de la declaración " "de Python ``o1 >>= o2``." -#: ../Doc/c-api/number.rst:219 +#: ../Doc/c-api/number.rst:220 msgid "" "Returns the \"bitwise and\" of *o1* and *o2* on success and ``NULL`` on " "failure. The operation is done *in-place* when *o1* supports it. This is " @@ -325,7 +330,7 @@ msgstr "" "cuando *o1* lo admite. Este es el equivalente de la declaración de Python " "``o1 &= o2``." -#: ../Doc/c-api/number.rst:226 +#: ../Doc/c-api/number.rst:227 msgid "" "Returns the \"bitwise exclusive or\" of *o1* by *o2* on success, or ``NULL`` " "on failure. The operation is done *in-place* when *o1* supports it. This " @@ -336,7 +341,7 @@ msgstr "" "en su lugar (*in-place*) cuando *o1* lo admite. Este es el equivalente de la " "declaración de Python ``o1 ^= o2``." -#: ../Doc/c-api/number.rst:233 +#: ../Doc/c-api/number.rst:234 msgid "" "Returns the \"bitwise or\" of *o1* and *o2* on success, or ``NULL`` on " "failure. The operation is done *in-place* when *o1* supports it. This is " @@ -347,7 +352,7 @@ msgstr "" "cuando *o1* lo admite. Este es el equivalente de la declaración de Python " "``o1 |= o2``." -#: ../Doc/c-api/number.rst:242 +#: ../Doc/c-api/number.rst:243 msgid "" "Returns the *o* converted to an integer object on success, or ``NULL`` on " "failure. This is the equivalent of the Python expression ``int(o)``." @@ -355,7 +360,7 @@ msgstr "" "Retorna el *o* convertido a un objeto entero en caso de éxito, o ``NULL`` en " "caso de error. Este es el equivalente de la expresión de Python ``int(o)``." -#: ../Doc/c-api/number.rst:250 +#: ../Doc/c-api/number.rst:251 msgid "" "Returns the *o* converted to a float object on success, or ``NULL`` on " "failure. This is the equivalent of the Python expression ``float(o)``." @@ -364,7 +369,7 @@ msgstr "" "en caso de error. Este es el equivalente de la expresión de Python " "``float(o)``." -#: ../Doc/c-api/number.rst:256 +#: ../Doc/c-api/number.rst:257 msgid "" "Returns the *o* converted to a Python int on success or ``NULL`` with a :exc:" "`TypeError` exception raised on failure." @@ -372,7 +377,7 @@ msgstr "" "Retorna el *o* convertido aun entero de Python (*int*) en caso de éxito o " "``NULL`` con una excepción :exc:`TypeError` lanzada en caso de error." -#: ../Doc/c-api/number.rst:259 +#: ../Doc/c-api/number.rst:260 msgid "" "The result always has exact type :class:`int`. Previously, the result could " "have been an instance of a subclass of ``int``." @@ -380,7 +385,7 @@ msgstr "" "El resultado siempre tiene el tipo exacto :class:`int`. Anteriormente, el " "resultado podía ser una instancia de una subclase de ``int``." -#: ../Doc/c-api/number.rst:266 +#: ../Doc/c-api/number.rst:267 msgid "" "Returns the integer *n* converted to base *base* as a string. The *base* " "argument must be one of 2, 8, 10, or 16. For base 2, 8, or 16, the returned " @@ -394,19 +399,22 @@ msgstr "" "``'0b'``', ``'0o'`` o ``'0x'``, respectivamente. Si *n* no es un entero " "(*int*) Python, primero se convierte con :c:func:`PyNumber_Index`." -#: ../Doc/c-api/number.rst:275 +#: ../Doc/c-api/number.rst:276 +#, fuzzy msgid "" -"Returns *o* converted to a Py_ssize_t value if *o* can be interpreted as an " -"integer. If the call fails, an exception is raised and ``-1`` is returned." +"Returns *o* converted to a :c:type:`Py_ssize_t` value if *o* can be " +"interpreted as an integer. If the call fails, an exception is raised and " +"``-1`` is returned." msgstr "" "Retorna *o* convertido a un valor ``Py_ssize_t`` si *o* puede interpretarse " "como un entero. Si la llamada falla, se lanza una excepción y se retorna " "``-1``." -#: ../Doc/c-api/number.rst:278 +#: ../Doc/c-api/number.rst:279 +#, fuzzy msgid "" -"If *o* can be converted to a Python int but the attempt to convert to a " -"Py_ssize_t value would raise an :exc:`OverflowError`, then the *exc* " +"If *o* can be converted to a Python int but the attempt to convert to a :c:" +"type:`Py_ssize_t` value would raise an :exc:`OverflowError`, then the *exc* " "argument is the type of exception that will be raised (usually :exc:" "`IndexError` or :exc:`OverflowError`). If *exc* is ``NULL``, then the " "exception is cleared and the value is clipped to ``PY_SSIZE_T_MIN`` for a " @@ -419,12 +427,20 @@ msgstr "" "``NULL``, la excepción se borra y el valor se recorta a ``PY_SSIZE_T_MIN`` " "para un entero negativo o ``PY_SSIZE_T_MAX`` para un entero positivo." -#: ../Doc/c-api/number.rst:288 +#: ../Doc/c-api/number.rst:289 +#, fuzzy msgid "" -"Returns ``1`` if *o* is an index integer (has the nb_index slot of the " -"tp_as_number structure filled in), and ``0`` otherwise. This function always " -"succeeds." +"Returns ``1`` if *o* is an index integer (has the ``nb_index`` slot of the " +"``tp_as_number`` structure filled in), and ``0`` otherwise. This function " +"always succeeds." msgstr "" "Retorna ``1`` si *o* es un entero índice (tiene el espacio ``nb_index`` de " "la estructura ``tp_as_number`` rellenado) y ``0`` en caso contrario. Esta " "función siempre tiene éxito." + +#~ msgid "" +#~ "Return the floor of *o1* divided by *o2*, or ``NULL`` on failure. This " +#~ "is equivalent to the \"classic\" division of integers." +#~ msgstr "" +#~ "Retorna el piso (*floor*) de *o1* dividido por *o2*, o ``NULL`` en caso " +#~ "de falla. Esto es equivalente a la división \"clásica\" de enteros." diff --git a/c-api/object.po b/c-api/object.po index a191c82208..f42c1266aa 100644 --- a/c-api/object.po +++ b/c-api/object.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-10-29 14:59-0300\n" "Last-Translator: Cristián Maureira-Fredes \n" "Language: es\n" @@ -19,8 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" -"X-Generator: Poedit 2.3\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/c-api/object.rst:6 msgid "Object Protocol" @@ -125,7 +124,7 @@ msgstr "" "atributos de instancia, mientras que los descriptores que no son de datos no " "lo hacen. De lo contrario, se lanza un :exc:`AttributeError`." -#: ../Doc/c-api/object.rst:79 ../Doc/c-api/object.rst:90 +#: ../Doc/c-api/object.rst:79 ../Doc/c-api/object.rst:91 msgid "" "Set the value of the attribute named *attr_name*, for object *o*, to the " "value *v*. Raise an exception and return ``-1`` on failure; return ``0`` on " @@ -137,22 +136,25 @@ msgstr "" "``o.attr_name = v``." #: ../Doc/c-api/object.rst:84 +#, fuzzy msgid "" -"If *v* is ``NULL``, the attribute is deleted, however this feature is " -"deprecated in favour of using :c:func:`PyObject_DelAttr`." +"If *v* is ``NULL``, the attribute is deleted. This behaviour is deprecated " +"in favour of using :c:func:`PyObject_DelAttr`, but there are currently no " +"plans to remove it." msgstr "" "Si *v* es ``NULL``, el atributo se elimina, sin embargo, esta característica " "está obsoleta a favor de usar :c:func:`PyObject_DelAttr`." -#: ../Doc/c-api/object.rst:95 +#: ../Doc/c-api/object.rst:96 +#, fuzzy msgid "" -"If *v* is ``NULL``, the attribute is deleted, however this feature is " -"deprecated in favour of using :c:func:`PyObject_DelAttrString`." +"If *v* is ``NULL``, the attribute is deleted, but this feature is deprecated " +"in favour of using :c:func:`PyObject_DelAttrString`." msgstr "" "Si *v* es ``NULL``, el atributo se elimina, sin embargo, esta característica " "está obsoleta a favor de usar :c:func:`PyObject_DelAttrString`." -#: ../Doc/c-api/object.rst:101 +#: ../Doc/c-api/object.rst:102 msgid "" "Generic attribute setter and deleter function that is meant to be put into a " "type object's :c:member:`~PyTypeObject.tp_setattro` slot. It looks for a " @@ -172,7 +174,7 @@ msgstr "" "`~object.__dict__` (si está presente). En caso de éxito, se retorna ``0``; " "de lo contrario, se lanza un :exc:`AttributeError` y se retorna ``-1``." -#: ../Doc/c-api/object.rst:113 ../Doc/c-api/object.rst:119 +#: ../Doc/c-api/object.rst:114 ../Doc/c-api/object.rst:120 msgid "" "Delete attribute named *attr_name*, for object *o*. Returns ``-1`` on " "failure. This is the equivalent of the Python statement ``del o.attr_name``." @@ -181,7 +183,7 @@ msgstr "" "en caso de falla. Este es el equivalente de la declaración de Python ``del o." "attr_name``." -#: ../Doc/c-api/object.rst:125 +#: ../Doc/c-api/object.rst:126 msgid "" "A generic implementation for the getter of a ``__dict__`` descriptor. It " "creates the dictionary if necessary." @@ -189,7 +191,20 @@ msgstr "" "Una implementación genérica para obtener un descriptor ``__dict__``. Crea el " "diccionario si es necesario." -#: ../Doc/c-api/object.rst:133 +#: ../Doc/c-api/object.rst:129 +msgid "" +"This function may also be called to get the :py:attr:`~object.__dict__` of " +"the object *o*. Pass ``NULL`` for *context* when calling it. Since this " +"function may need to allocate memory for the dictionary, it may be more " +"efficient to call :c:func:`PyObject_GetAttr` when accessing an attribute on " +"the object." +msgstr "" + +#: ../Doc/c-api/object.rst:135 +msgid "On failure, returns ``NULL`` with an exception set." +msgstr "" + +#: ../Doc/c-api/object.rst:142 msgid "" "A generic implementation for the setter of a ``__dict__`` descriptor. This " "implementation does not allow the dictionary to be deleted." @@ -197,7 +212,20 @@ msgstr "" "Una implementación genérica para el creador de un descriptor ``__dict__``. " "Esta implementación no permite que se elimine el diccionario." -#: ../Doc/c-api/object.rst:141 +#: ../Doc/c-api/object.rst:150 +msgid "" +"Return a pointer to :py:attr:`~object.__dict__` of the object *obj*. If " +"there is no ``__dict__``, return ``NULL`` without setting an exception." +msgstr "" + +#: ../Doc/c-api/object.rst:153 +msgid "" +"This function may need to allocate memory for the dictionary, so it may be " +"more efficient to call :c:func:`PyObject_GetAttr` when accessing an " +"attribute on the object." +msgstr "" + +#: ../Doc/c-api/object.rst:160 msgid "" "Compare the values of *o1* and *o2* using the operation specified by *opid*, " "which must be one of :const:`Py_LT`, :const:`Py_LE`, :const:`Py_EQ`, :const:" @@ -215,7 +243,7 @@ msgstr "" "o2``, donde ``op`` es el operador correspondiente a *opid*. Retorna el valor " "de la comparación en caso de éxito o ``NULL`` en caso de error." -#: ../Doc/c-api/object.rst:151 +#: ../Doc/c-api/object.rst:170 msgid "" "Compare the values of *o1* and *o2* using the operation specified by *opid*, " "which must be one of :const:`Py_LT`, :const:`Py_LE`, :const:`Py_EQ`, :const:" @@ -233,7 +261,7 @@ msgstr "" "falso, ``1`` en caso contrario. Este es el equivalente de la expresión de " "Python ``o1 op o2``, donde ``op`` es el operador correspondiente a *opid*." -#: ../Doc/c-api/object.rst:160 +#: ../Doc/c-api/object.rst:179 msgid "" "If *o1* and *o2* are the same object, :c:func:`PyObject_RichCompareBool` " "will always return ``1`` for :const:`Py_EQ` and ``0`` for :const:`Py_NE`." @@ -241,7 +269,7 @@ msgstr "" "Si *o1* y *o2* son el mismo objeto, :c:func:`PyObject_RichCompareBool` " "siempre retornará ``1`` para :const:`Py_EQ` y ``0`` para :const:`Py_NE`." -#: ../Doc/c-api/object.rst:167 +#: ../Doc/c-api/object.rst:186 msgid "" "Compute a string representation of object *o*. Returns the string " "representation on success, ``NULL`` on failure. This is the equivalent of " @@ -253,7 +281,7 @@ msgstr "" "de error. Este es el equivalente de la expresión de Python ``repr(o)``. " "Llamado por la función incorporada :func:`repr`." -#: ../Doc/c-api/object.rst:171 ../Doc/c-api/object.rst:195 +#: ../Doc/c-api/object.rst:190 ../Doc/c-api/object.rst:214 msgid "" "This function now includes a debug assertion to help ensure that it does not " "silently discard an active exception." @@ -261,7 +289,7 @@ msgstr "" "Esta función ahora incluye una afirmación de depuración para ayudar a " "garantizar que no descarte silenciosamente una excepción activa." -#: ../Doc/c-api/object.rst:179 +#: ../Doc/c-api/object.rst:198 msgid "" "As :c:func:`PyObject_Repr`, compute a string representation of object *o*, " "but escape the non-ASCII characters in the string returned by :c:func:" @@ -271,12 +299,12 @@ msgid "" msgstr "" "Como :c:func:`PyObject_Repr`, calcula una representación de cadena de " "caracteres del objeto *o*, pero escapa los caracteres no ASCII en la cadena " -"de caracteres retornada por :c:func:`PyObject_Repr` con ``\\x``, ``\\u`` o ``" -"\\U`` escapa. Esto genera una cadena de caracteres similar a la que retorna :" -"c:func:`PyObject_Repr` en Python 2. Llamado por la función incorporada :func:" -"`ascii`." +"de caracteres retornada por :c:func:`PyObject_Repr` con ``\\x``, ``\\u`` o " +"``\\U`` escapa. Esto genera una cadena de caracteres similar a la que " +"retorna :c:func:`PyObject_Repr` en Python 2. Llamado por la función " +"incorporada :func:`ascii`." -#: ../Doc/c-api/object.rst:190 +#: ../Doc/c-api/object.rst:209 msgid "" "Compute a string representation of object *o*. Returns the string " "representation on success, ``NULL`` on failure. This is the equivalent of " @@ -288,7 +316,7 @@ msgstr "" "de error. Llamado por la función incorporada :func:`str` y, por lo tanto, " "por la función :func:`print`." -#: ../Doc/c-api/object.rst:204 +#: ../Doc/c-api/object.rst:223 msgid "" "Compute a bytes representation of object *o*. ``NULL`` is returned on " "failure and a bytes object on success. This is equivalent to the Python " @@ -302,7 +330,7 @@ msgstr "" "diferencia de ``bytes(o)``, se lanza un TypeError cuando *o* es un entero en " "lugar de un objeto de bytes con inicialización cero." -#: ../Doc/c-api/object.rst:213 +#: ../Doc/c-api/object.rst:232 msgid "" "Return ``1`` if the class *derived* is identical to or derived from the " "class *cls*, otherwise return ``0``. In case of an error, return ``-1``." @@ -310,7 +338,7 @@ msgstr "" "Retorna ``1`` si la clase *derived* es idéntica o derivada de la clase " "*cls*; de lo contrario, retorna ``0``. En caso de error, retorna ``-1``." -#: ../Doc/c-api/object.rst:216 ../Doc/c-api/object.rst:235 +#: ../Doc/c-api/object.rst:235 ../Doc/c-api/object.rst:254 msgid "" "If *cls* is a tuple, the check will be done against every entry in *cls*. " "The result will be ``1`` when at least one of the checks returns ``1``, " @@ -320,7 +348,7 @@ msgstr "" "*cls*. El resultado será ``1`` cuando al menos una de las verificaciones " "retorne ``1``, de lo contrario será ``0``." -#: ../Doc/c-api/object.rst:220 +#: ../Doc/c-api/object.rst:239 msgid "" "If *cls* has a :meth:`~class.__subclasscheck__` method, it will be called to " "determine the subclass status as described in :pep:`3119`. Otherwise, " @@ -332,7 +360,7 @@ msgstr "" "contrario, *derived* es una subclase de *cls* si es una subclase directa o " "indirecta, es decir, contenida en ``cls.__ mro__``." -#: ../Doc/c-api/object.rst:225 +#: ../Doc/c-api/object.rst:244 msgid "" "Normally only class objects, i.e. instances of :class:`type` or a derived " "class, are considered classes. However, objects can override this by having " @@ -343,7 +371,7 @@ msgstr "" "pueden anular esto al tener un atributo :attr:`__bases__` (que debe ser una " "tupla de clases base)." -#: ../Doc/c-api/object.rst:232 +#: ../Doc/c-api/object.rst:251 msgid "" "Return ``1`` if *inst* is an instance of the class *cls* or a subclass of " "*cls*, or ``0`` if not. On error, returns ``-1`` and sets an exception." @@ -352,7 +380,7 @@ msgstr "" "*cls*, o ``0`` si no. En caso de error, retorna ``-1`` y establece una " "excepción." -#: ../Doc/c-api/object.rst:239 +#: ../Doc/c-api/object.rst:258 msgid "" "If *cls* has a :meth:`~class.__instancecheck__` method, it will be called to " "determine the subclass status as described in :pep:`3119`. Otherwise, " @@ -363,7 +391,7 @@ msgstr "" "contrario, *inst* es una instancia de *cls* si su clase es una subclase de " "*cls*." -#: ../Doc/c-api/object.rst:243 +#: ../Doc/c-api/object.rst:262 msgid "" "An instance *inst* can override what is considered its class by having a :" "attr:`__class__` attribute." @@ -371,7 +399,7 @@ msgstr "" "Una instancia *inst* puede anular lo que se considera su clase al tener un " "atributo :attr:`__class__`." -#: ../Doc/c-api/object.rst:246 +#: ../Doc/c-api/object.rst:265 msgid "" "An object *cls* can override if it is considered a class, and what its base " "classes are, by having a :attr:`__bases__` attribute (which must be a tuple " @@ -381,7 +409,7 @@ msgstr "" "clases base, al tener un atributo :attr:`__bases__` (que debe ser una tupla " "de clases base)." -#: ../Doc/c-api/object.rst:255 +#: ../Doc/c-api/object.rst:274 msgid "" "Compute and return the hash value of an object *o*. On failure, return " "``-1``. This is the equivalent of the Python expression ``hash(o)``." @@ -389,15 +417,16 @@ msgstr "" "Calcula y retorna el valor hash de un objeto *o*. En caso de fallo, retorna " "``-1``. Este es el equivalente de la expresión de Python ``hash(o)``." -#: ../Doc/c-api/object.rst:258 +#: ../Doc/c-api/object.rst:277 +#, fuzzy msgid "" -"The return type is now Py_hash_t. This is a signed integer the same size as " -"Py_ssize_t." +"The return type is now Py_hash_t. This is a signed integer the same size " +"as :c:type:`Py_ssize_t`." msgstr "" "El tipo de retorno ahora es *Py_hash_t*. Este es un entero con signo del " "mismo tamaño que *Py_ssize_t*." -#: ../Doc/c-api/object.rst:265 +#: ../Doc/c-api/object.rst:284 msgid "" "Set a :exc:`TypeError` indicating that ``type(o)`` is not hashable and " "return ``-1``. This function receives special treatment when stored in a " @@ -409,7 +438,7 @@ msgstr "" "almacena en una ranura ``tp_hash``, lo que permite que un tipo indique " "explícitamente al intérprete que no es *hashable*." -#: ../Doc/c-api/object.rst:273 +#: ../Doc/c-api/object.rst:292 msgid "" "Returns ``1`` if the object *o* is considered to be true, and ``0`` " "otherwise. This is equivalent to the Python expression ``not not o``. On " @@ -419,7 +448,7 @@ msgstr "" "contrario. Esto es equivalente a la expresión de Python ``not not o``. En " "caso de error, retorna ``-1``." -#: ../Doc/c-api/object.rst:280 +#: ../Doc/c-api/object.rst:299 msgid "" "Returns ``0`` if the object *o* is considered to be true, and ``1`` " "otherwise. This is equivalent to the Python expression ``not o``. On " @@ -429,15 +458,16 @@ msgstr "" "contrario. Esto es equivalente a la expresión de Python ``not o``. En caso " "de error, retorna ``-1``." -#: ../Doc/c-api/object.rst:289 +#: ../Doc/c-api/object.rst:308 +#, fuzzy msgid "" "When *o* is non-``NULL``, returns a type object corresponding to the object " "type of object *o*. On failure, raises :exc:`SystemError` and returns " "``NULL``. This is equivalent to the Python expression ``type(o)``. This " "function increments the reference count of the return value. There's really " -"no reason to use this function instead of the common expression ``o-" -">ob_type``, which returns a pointer of type :c:type:`PyTypeObject*`, except " -"when the incremented reference count is needed." +"no reason to use this function instead of the :c:func:`Py_TYPE()` function, " +"which returns a pointer of type :c:expr:`PyTypeObject*`, except when the " +"incremented reference count is needed." msgstr "" "Cuando *o* no es ``NULL``, retorna un tipo de objeto correspondiente al tipo " "de objeto del objeto *o*. En caso de falla, lanza :exc:`SystemError` y " @@ -447,7 +477,7 @@ msgstr "" "``o->ob_type``, que retorna un puntero de tipo :c:type:`PyTypeObject*`, " "excepto cuando se necesita el recuento de referencias incrementado." -#: ../Doc/c-api/object.rst:300 +#: ../Doc/c-api/object.rst:319 msgid "" "Return non-zero if the object *o* is of type *type* or a subtype of *type*, " "and ``0`` otherwise. Both parameters must be non-``NULL``." @@ -456,7 +486,7 @@ msgstr "" "*type*, y ``0`` en cualquier otro caso. Ninguno de los dos parámetros debe " "ser ``NULL``." -#: ../Doc/c-api/object.rst:309 +#: ../Doc/c-api/object.rst:328 msgid "" "Return the length of object *o*. If the object *o* provides either the " "sequence and mapping protocols, the sequence length is returned. On error, " @@ -468,7 +498,7 @@ msgstr "" "caso de error, se retorna ``-1``. Este es el equivalente a la expresión de " "Python ``len(o)``." -#: ../Doc/c-api/object.rst:316 +#: ../Doc/c-api/object.rst:335 msgid "" "Return an estimated length for the object *o*. First try to return its " "actual length, then an estimate using :meth:`~object.__length_hint__`, and " @@ -482,7 +512,7 @@ msgstr "" "error, retorna ``-1``. Este es el equivalente a la expresión de Python " "``operator.length_hint(o, defaultvalue)``." -#: ../Doc/c-api/object.rst:326 +#: ../Doc/c-api/object.rst:345 msgid "" "Return element of *o* corresponding to the object *key* or ``NULL`` on " "failure. This is the equivalent of the Python expression ``o[key]``." @@ -491,7 +521,7 @@ msgstr "" "``NULL`` en caso de error. Este es el equivalente de la expresión de Python " "``o[key]``." -#: ../Doc/c-api/object.rst:332 +#: ../Doc/c-api/object.rst:351 msgid "" "Map the object *key* to the value *v*. Raise an exception and return ``-1`` " "on failure; return ``0`` on success. This is the equivalent of the Python " @@ -502,7 +532,7 @@ msgstr "" "declaración de Python ``o[key] = v``. Esta función *no* roba una referencia " "a *v*." -#: ../Doc/c-api/object.rst:340 +#: ../Doc/c-api/object.rst:359 msgid "" "Remove the mapping for the object *key* from the object *o*. Return ``-1`` " "on failure. This is equivalent to the Python statement ``del o[key]``." @@ -510,7 +540,7 @@ msgstr "" "Elimina la asignación para el objeto *key* del objeto *o*. Retorna ``-1`` en " "caso de falla. Esto es equivalente a la declaración de Python ``del o[key]``." -#: ../Doc/c-api/object.rst:346 +#: ../Doc/c-api/object.rst:365 msgid "" "This is equivalent to the Python expression ``dir(o)``, returning a " "(possibly empty) list of strings appropriate for the object argument, or " @@ -526,7 +556,7 @@ msgstr "" "locales actuales; en este caso, si no hay un marco de ejecución activo, se " "retorna ``NULL`` pero :c:func:`PyErr_Occurred` retornará falso." -#: ../Doc/c-api/object.rst:355 +#: ../Doc/c-api/object.rst:374 msgid "" "This is equivalent to the Python expression ``iter(o)``. It returns a new " "iterator for the object argument, or the object itself if the object is " @@ -538,7 +568,7 @@ msgstr "" "un iterador. Lanza :exc:`TypeError` y retorna ``NULL`` si el objeto no puede " "iterarse." -#: ../Doc/c-api/object.rst:363 +#: ../Doc/c-api/object.rst:382 msgid "" "This is the equivalent to the Python expression ``aiter(o)``. Takes an :" "class:`AsyncIterable` object and returns an :class:`AsyncIterator` for it. " diff --git a/c-api/refcounting.po b/c-api/refcounting.po index fd0e4265a1..4682d9d5a7 100644 --- a/c-api/refcounting.po +++ b/c-api/refcounting.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-10-30 18:20+0200\n" "Last-Translator: Cristián Maureira-Fredes \n" "Language: es\n" @@ -19,8 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/c-api/refcounting.rst:8 msgid "Reference Counting" @@ -199,19 +198,19 @@ msgstr "" "referencia de un objeto que pueda atravesarse durante la recolección de " "basura." -#: ../Doc/c-api/refcounting.rst:113 +#: ../Doc/c-api/refcounting.rst:114 msgid "" -"The following functions are for runtime dynamic embedding of Python: " -"``Py_IncRef(PyObject *o)``, ``Py_DecRef(PyObject *o)``. They are simply " -"exported function versions of :c:func:`Py_XINCREF` and :c:func:`Py_XDECREF`, " -"respectively." +"Increment the reference count for object *o*. A function version of :c:func:" +"`Py_XINCREF`. It can be used for runtime dynamic embedding of Python." msgstr "" -"Las siguientes funciones son para la incorporación dinámica de Python en " -"tiempo de ejecución: ``Py_IncRef(PyObject *o)``, ``Py_DecRef(PyObject *o)``. " -"Simplemente son versiones de funciones exportadas de :c:func:`Py_XINCREF` y :" -"c:func:`Py_XDECREF`, respectivamente." -#: ../Doc/c-api/refcounting.rst:118 +#: ../Doc/c-api/refcounting.rst:120 +msgid "" +"Decrement the reference count for object *o*. A function version of :c:func:" +"`Py_XDECREF`. It can be used for runtime dynamic embedding of Python." +msgstr "" + +#: ../Doc/c-api/refcounting.rst:124 msgid "" "The following functions or macros are only for use within the interpreter " "core: :c:func:`_Py_Dealloc`, :c:func:`_Py_ForgetReference`, :c:func:" @@ -220,3 +219,14 @@ msgstr "" "Las siguientes funciones o macros son solo para uso dentro del núcleo del " "intérprete: :c:func:`_Py_Dealloc`, :c:func:`_Py_ForgetReference`, :c:func:" "`_Py_NewReference`, así como la variable global :c:data:`_Py_RefTotal`." + +#~ msgid "" +#~ "The following functions are for runtime dynamic embedding of Python: " +#~ "``Py_IncRef(PyObject *o)``, ``Py_DecRef(PyObject *o)``. They are simply " +#~ "exported function versions of :c:func:`Py_XINCREF` and :c:func:" +#~ "`Py_XDECREF`, respectively." +#~ msgstr "" +#~ "Las siguientes funciones son para la incorporación dinámica de Python en " +#~ "tiempo de ejecución: ``Py_IncRef(PyObject *o)``, ``Py_DecRef(PyObject " +#~ "*o)``. Simplemente son versiones de funciones exportadas de :c:func:" +#~ "`Py_XINCREF` y :c:func:`Py_XDECREF`, respectivamente." diff --git a/c-api/reflection.po b/c-api/reflection.po index a41ae03b32..8578c4b6ce 100644 --- a/c-api/reflection.po +++ b/c-api/reflection.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-12-09 10:32+0800\n" "Last-Translator: Rodrigo Tobar \n" "Language: es\n" @@ -19,8 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/c-api/reflection.rst:6 msgid "Reflection" @@ -64,40 +63,6 @@ msgid "See also :c:func:`PyThreadState_GetFrame`." msgstr "Vea también :c:func:`PyThreadState_GetFrame`." #: ../Doc/c-api/reflection.rst:36 -msgid "Get the *frame* next outer frame." -msgstr "Obtiene el *frame* siguiente marco (*frame*) exterior." - -#: ../Doc/c-api/reflection.rst:38 -msgid "" -"Return a :term:`strong reference`, or ``NULL`` if *frame* has no outer frame." -msgstr "" -"Devuelve una :term:`referencia fuerte ` o ``NULL`` si " -"*frame* no tiene un marco exterior." - -#: ../Doc/c-api/reflection.rst:40 ../Doc/c-api/reflection.rst:60 -msgid "*frame* must not be ``NULL``." -msgstr "*frame* no debe ser ``NULL``." - -#: ../Doc/c-api/reflection.rst:47 -msgid "Get the *frame* code." -msgstr "Obtiene el código *frame*." - -#: ../Doc/c-api/reflection.rst:49 -msgid "Return a :term:`strong reference`." -msgstr "Retorna una :term:`referencia fuerte `." - -#: ../Doc/c-api/reflection.rst:51 -msgid "" -"*frame* must not be ``NULL``. The result (frame code) cannot be ``NULL``." -msgstr "" -"*frame* no debe ser ``NULL``. El resultado (código del marco) no puede ser " -"``NULL``." - -#: ../Doc/c-api/reflection.rst:58 -msgid "Return the line number that *frame* is currently executing." -msgstr "Retorna el número de línea que *frame* está ejecutando actualmente." - -#: ../Doc/c-api/reflection.rst:65 msgid "" "Return the name of *func* if it is a function, class or instance object, " "else the name of *func*\\s type." @@ -105,7 +70,7 @@ msgstr "" "Retorna el nombre de *func* si es una función, clase u objeto de instancia; " "de lo contrario, el nombre del tipo *func*\\s." -#: ../Doc/c-api/reflection.rst:71 +#: ../Doc/c-api/reflection.rst:42 msgid "" "Return a description string, depending on the type of *func*. Return values " "include \"()\" for functions and methods, \" constructor\", \" instance\", " @@ -116,3 +81,31 @@ msgstr "" "Los valores de retorno incluyen \"()\" para funciones y métodos, " "\"constructor\", \"instancia\" y \"objeto\". Concatenado con el resultado " "de :c:func:`PyEval_GetFuncName`, el resultado será una descripción de *func*." + +#~ msgid "Get the *frame* next outer frame." +#~ msgstr "Obtiene el *frame* siguiente marco (*frame*) exterior." + +#~ msgid "" +#~ "Return a :term:`strong reference`, or ``NULL`` if *frame* has no outer " +#~ "frame." +#~ msgstr "" +#~ "Devuelve una :term:`referencia fuerte ` o ``NULL`` si " +#~ "*frame* no tiene un marco exterior." + +#~ msgid "*frame* must not be ``NULL``." +#~ msgstr "*frame* no debe ser ``NULL``." + +#~ msgid "Get the *frame* code." +#~ msgstr "Obtiene el código *frame*." + +#~ msgid "Return a :term:`strong reference`." +#~ msgstr "Retorna una :term:`referencia fuerte `." + +#~ msgid "" +#~ "*frame* must not be ``NULL``. The result (frame code) cannot be ``NULL``." +#~ msgstr "" +#~ "*frame* no debe ser ``NULL``. El resultado (código del marco) no puede " +#~ "ser ``NULL``." + +#~ msgid "Return the line number that *frame* is currently executing." +#~ msgstr "Retorna el número de línea que *frame* está ejecutando actualmente." diff --git a/c-api/sequence.po b/c-api/sequence.po index 76b8ba74bb..2da91ee853 100644 --- a/c-api/sequence.po +++ b/c-api/sequence.po @@ -10,29 +10,29 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-05 12:54+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2020-05-17 14:28+0200\n" +"Last-Translator: Cristián Maureira-Fredes \n" +"Language: es\n" "Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" +"Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.8.0\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Last-Translator: Cristián Maureira-Fredes \n" -"Language: es\n" -"X-Generator: Poedit 2.3\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/c-api/sequence.rst:6 msgid "Sequence Protocol" msgstr "Protocolo de secuencia" #: ../Doc/c-api/sequence.rst:11 +#, fuzzy msgid "" -"Return ``1`` if the object provides sequence protocol, and ``0`` otherwise. " -"Note that it returns ``1`` for Python classes with a :meth:`__getitem__` " -"method unless they are :class:`dict` subclasses since in general case it is " -"impossible to determine what the type of keys it supports. This function " -"always succeeds." +"Return ``1`` if the object provides the sequence protocol, and ``0`` " +"otherwise. Note that it returns ``1`` for Python classes with a :meth:" +"`__getitem__` method, unless they are :class:`dict` subclasses, since in " +"general it is impossible to determine what type of keys the class supports. " +"This function always succeeds." msgstr "" "Retorna ``1`` si el objeto proporciona el protocolo de secuencia y ``0`` en " "caso contrario. Tenga en cuenta que retorna ``1`` para las clases de Python " @@ -117,9 +117,10 @@ msgstr "" "una referencia a *v*." #: ../Doc/c-api/sequence.rst:72 +#, fuzzy msgid "" -"If *v* is ``NULL``, the element is deleted, however this feature is " -"deprecated in favour of using :c:func:`PySequence_DelItem`." +"If *v* is ``NULL``, the element is deleted, but this feature is deprecated " +"in favour of using :c:func:`PySequence_DelItem`." msgstr "" "Si *v* es ``NULL``, el elemento se elimina, sin embargo, esta característica " "está en desuso a favor del uso de :c:func:`PySequence_DelItem`." @@ -232,10 +233,11 @@ msgstr "" "lista, se retornará." #: ../Doc/c-api/sequence.rst:148 +#, fuzzy msgid "" "Returns the length of *o*, assuming that *o* was returned by :c:func:" -"`PySequence_Fast` and that *o* is not ``NULL``. The size can also be gotten " -"by calling :c:func:`PySequence_Size` on *o*, but :c:func:" +"`PySequence_Fast` and that *o* is not ``NULL``. The size can also be " +"retrieved by calling :c:func:`PySequence_Size` on *o*, but :c:func:" "`PySequence_Fast_GET_SIZE` is faster because it can assume *o* is a list or " "tuple." msgstr "" diff --git a/c-api/set.po b/c-api/set.po index f7bdb844c4..fc9847c069 100644 --- a/c-api/set.po +++ b/c-api/set.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-12-09 10:57+0800\n" "Last-Translator: Rodrigo Tobar \n" "Language: es\n" @@ -19,8 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/c-api/set.rst:6 msgid "Set Objects" @@ -29,37 +28,28 @@ msgstr "Objetos Conjunto" #: ../Doc/c-api/set.rst:15 msgid "" "This section details the public API for :class:`set` and :class:`frozenset` " -"objects. Any functionality not listed below is best accessed using the " -"either the abstract object protocol (including :c:func:" -"`PyObject_CallMethod`, :c:func:`PyObject_RichCompareBool`, :c:func:" -"`PyObject_Hash`, :c:func:`PyObject_Repr`, :c:func:`PyObject_IsTrue`, :c:func:" -"`PyObject_Print`, and :c:func:`PyObject_GetIter`) or the abstract number " -"protocol (including :c:func:`PyNumber_And`, :c:func:`PyNumber_Subtract`, :c:" -"func:`PyNumber_Or`, :c:func:`PyNumber_Xor`, :c:func:`PyNumber_InPlaceAnd`, :" -"c:func:`PyNumber_InPlaceSubtract`, :c:func:`PyNumber_InPlaceOr`, and :c:func:" +"objects. Any functionality not listed below is best accessed using either " +"the abstract object protocol (including :c:func:`PyObject_CallMethod`, :c:" +"func:`PyObject_RichCompareBool`, :c:func:`PyObject_Hash`, :c:func:" +"`PyObject_Repr`, :c:func:`PyObject_IsTrue`, :c:func:`PyObject_Print`, and :c:" +"func:`PyObject_GetIter`) or the abstract number protocol (including :c:func:" +"`PyNumber_And`, :c:func:`PyNumber_Subtract`, :c:func:`PyNumber_Or`, :c:func:" +"`PyNumber_Xor`, :c:func:`PyNumber_InPlaceAnd`, :c:func:" +"`PyNumber_InPlaceSubtract`, :c:func:`PyNumber_InPlaceOr`, and :c:func:" "`PyNumber_InPlaceXor`)." msgstr "" -"Esta sección detalla la API pública para objetos :class:`set` y :class:" -"`frozenset`. Se puede acceder mejor a cualquier funcionalidad que no se " -"enumere a continuación utilizando el protocolo de objeto abstracto (que " -"incluye :c:func:`PyObject_CallMethod`, :c:func:`PyObject_RichCompareBool`, :" -"c:func:`PyObject_Hash`, :c:func:`PyObject_Repr`, :c:func:`PyObject_IsTrue`, :" -"c:func:`PyObject_Print`, y :c:func:`PyObject_GetIter`) o el protocolo de " -"número abstracto (que incluye :c:func:`PyNumber_And`, :c:func:" -"`PyNumber_Subtract`, :c:func:`PyNumber_Or`, :c:func:`PyNumber_Xor`, :c:func:" -"`PyNumber_InPlaceAnd`, :c:func:`PyNumber_InPlaceSubtract`, :c:func:" -"`PyNumber_InPlaceOr`, y :c:func:`PyNumber_InPlaceXor`)." #: ../Doc/c-api/set.rst:29 +#, fuzzy msgid "" "This subtype of :c:type:`PyObject` is used to hold the internal data for " "both :class:`set` and :class:`frozenset` objects. It is like a :c:type:" "`PyDictObject` in that it is a fixed size for small sets (much like tuple " "storage) and will point to a separate, variable sized block of memory for " "medium and large sized sets (much like list storage). None of the fields of " -"this structure should be considered public and are subject to change. All " -"access should be done through the documented API rather than by manipulating " -"the values in the structure." +"this structure should be considered public and all are subject to change. " +"All access should be done through the documented API rather than by " +"manipulating the values in the structure." msgstr "" "Este subtipo de :c:type:`PyObject` se utiliza para contener los datos " "internos de los objetos :class:`set` y :class:`frozenset`. Es como un :c:" @@ -211,9 +201,10 @@ msgstr "" "`set`, :class:`frozenset`, o una instancia de un subtipo." #: ../Doc/c-api/set.rst:133 +#, fuzzy msgid "" "Add *key* to a :class:`set` instance. Also works with :class:`frozenset` " -"instances (like :c:func:`PyTuple_SetItem` it can be used to fill-in the " +"instances (like :c:func:`PyTuple_SetItem` it can be used to fill in the " "values of brand new frozensets before they are exposed to other code). " "Return ``0`` on success or ``-1`` on failure. Raise a :exc:`TypeError` if " "the *key* is unhashable. Raise a :exc:`MemoryError` if there is no room to " @@ -269,3 +260,27 @@ msgstr "" #: ../Doc/c-api/set.rst:166 msgid "Empty an existing set of all elements." msgstr "Vacía un conjunto existente de todos los elementos." + +#~ msgid "" +#~ "This section details the public API for :class:`set` and :class:" +#~ "`frozenset` objects. Any functionality not listed below is best accessed " +#~ "using the either the abstract object protocol (including :c:func:" +#~ "`PyObject_CallMethod`, :c:func:`PyObject_RichCompareBool`, :c:func:" +#~ "`PyObject_Hash`, :c:func:`PyObject_Repr`, :c:func:`PyObject_IsTrue`, :c:" +#~ "func:`PyObject_Print`, and :c:func:`PyObject_GetIter`) or the abstract " +#~ "number protocol (including :c:func:`PyNumber_And`, :c:func:" +#~ "`PyNumber_Subtract`, :c:func:`PyNumber_Or`, :c:func:`PyNumber_Xor`, :c:" +#~ "func:`PyNumber_InPlaceAnd`, :c:func:`PyNumber_InPlaceSubtract`, :c:func:" +#~ "`PyNumber_InPlaceOr`, and :c:func:`PyNumber_InPlaceXor`)." +#~ msgstr "" +#~ "Esta sección detalla la API pública para objetos :class:`set` y :class:" +#~ "`frozenset`. Se puede acceder mejor a cualquier funcionalidad que no se " +#~ "enumere a continuación utilizando el protocolo de objeto abstracto (que " +#~ "incluye :c:func:`PyObject_CallMethod`, :c:func:" +#~ "`PyObject_RichCompareBool`, :c:func:`PyObject_Hash`, :c:func:" +#~ "`PyObject_Repr`, :c:func:`PyObject_IsTrue`, :c:func:`PyObject_Print`, y :" +#~ "c:func:`PyObject_GetIter`) o el protocolo de número abstracto (que " +#~ "incluye :c:func:`PyNumber_And`, :c:func:`PyNumber_Subtract`, :c:func:" +#~ "`PyNumber_Or`, :c:func:`PyNumber_Xor`, :c:func:`PyNumber_InPlaceAnd`, :c:" +#~ "func:`PyNumber_InPlaceSubtract`, :c:func:`PyNumber_InPlaceOr`, y :c:func:" +#~ "`PyNumber_InPlaceXor`)." diff --git a/c-api/structures.po b/c-api/structures.po index 599ebd69de..2556efbd15 100644 --- a/c-api/structures.po +++ b/c-api/structures.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-10-28 15:10-0500\n" "Last-Translator: José Luis Salgado Banda \n" "Language: es\n" @@ -19,8 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/c-api/structures.rst:6 msgid "Common Object Structures" @@ -56,13 +55,14 @@ msgstr "" "objetos de Python." #: ../Doc/c-api/structures.rst:25 +#, fuzzy msgid "" "All object types are extensions of this type. This is a type which contains " "the information Python needs to treat a pointer to an object as an object. " "In a normal \"release\" build, it contains only the object's reference count " "and a pointer to the corresponding type object. Nothing is actually declared " "to be a :c:type:`PyObject`, but every pointer to a Python object can be cast " -"to a :c:type:`PyObject*`. Access to the members must be done by using the " +"to a :c:expr:`PyObject*`. Access to the members must be done by using the " "macros :c:macro:`Py_REFCNT` and :c:macro:`Py_TYPE`." msgstr "" "Todos los tipos de objetos son extensiones de este tipo. Este es un tipo que " @@ -154,12 +154,19 @@ msgid "Return a :term:`borrowed reference`." msgstr "Retorna una referencia prestada (:term:`borrowed reference`)." #: ../Doc/c-api/structures.rst:102 -msgid "The :c:func:`Py_SET_TYPE` function must be used to set an object type." +#, fuzzy +msgid "Use the :c:func:`Py_SET_TYPE` function to set an object type." msgstr "" "Debe utilizarse la función :c:func:`Py_SET_TYPE` para establecer un tipo de " "objeto." -#: ../Doc/c-api/structures.rst:107 +#: ../Doc/c-api/structures.rst:104 +msgid "" +":c:func:`Py_TYPE()` is changed to an inline static function. The parameter " +"type is no longer :c:expr:`const PyObject*`." +msgstr "" + +#: ../Doc/c-api/structures.rst:111 msgid "" "Return non-zero if the object *o* type is *type*. Return zero otherwise. " "Equivalent to: ``Py_TYPE(o) == type``." @@ -167,41 +174,56 @@ msgstr "" "Retorna un valor distinto de cero si el objeto *o* tipo es *type*. Retorna " "cero en caso contrario. Equivalente a: ``Py_TYPE(o) == type``." -#: ../Doc/c-api/structures.rst:115 +#: ../Doc/c-api/structures.rst:119 msgid "Set the object *o* type to *type*." msgstr "Establece el tipo del objeto *o* a *type*." -#: ../Doc/c-api/structures.rst:122 +#: ../Doc/c-api/structures.rst:126 msgid "Get the reference count of the Python object *o*." msgstr "Obtiene la cuenta de referencias del objeto Python *o*." -#: ../Doc/c-api/structures.rst:124 +#: ../Doc/c-api/structures.rst:128 +#, fuzzy msgid "" -":c:func:`Py_REFCNT()` is changed to the inline static function. Use :c:func:" -"`Py_SET_REFCNT()` to set an object reference count." +"Use the :c:func:`Py_SET_REFCNT()` function to set an object reference count." +msgstr "" +"Debe utilizarse la función :c:func:`Py_SET_TYPE` para establecer un tipo de " +"objeto." + +#: ../Doc/c-api/structures.rst:130 +msgid "The parameter type is no longer :c:expr:`const PyObject*`." msgstr "" -":c:func:`Py_REFCNT()` se cambia a la función estática en línea. Use :c:func:" -"`Py_SET_REFCNT()` para establecer una cuenta de referencias de objetos." -#: ../Doc/c-api/structures.rst:131 +#: ../Doc/c-api/structures.rst:133 +msgid ":c:func:`Py_REFCNT()` is changed to the inline static function." +msgstr "" + +#: ../Doc/c-api/structures.rst:139 msgid "Set the object *o* reference counter to *refcnt*." msgstr "Establece el conteo de referencia del objeto *o* a *refcnt*." -#: ../Doc/c-api/structures.rst:138 +#: ../Doc/c-api/structures.rst:146 msgid "Get the size of the Python object *o*." msgstr "Obtiene el tamaño del objeto Python *o*." -#: ../Doc/c-api/structures.rst:140 -msgid "The :c:func:`Py_SET_SIZE` function must be used to set an object size." +#: ../Doc/c-api/structures.rst:148 +#, fuzzy +msgid "Use the :c:func:`Py_SET_SIZE` function to set an object size." msgstr "" "Debe utilizarse la función :c:func:`Py_SET_SIZE` para establecer un tamaño " "de objeto." -#: ../Doc/c-api/structures.rst:145 +#: ../Doc/c-api/structures.rst:150 +msgid "" +":c:func:`Py_SIZE()` is changed to an inline static function. The parameter " +"type is no longer :c:expr:`const PyVarObject*`." +msgstr "" + +#: ../Doc/c-api/structures.rst:157 msgid "Set the object *o* size to *size*." msgstr "Establece el tamaño del objeto *o* a *size*." -#: ../Doc/c-api/structures.rst:152 +#: ../Doc/c-api/structures.rst:164 msgid "" "This is a macro which expands to initialization values for a new :c:type:" "`PyObject` type. This macro expands to::" @@ -209,7 +231,7 @@ msgstr "" "Esta es una macro que se expande para valores de inicialización para un " "nuevo tipo :c:type:`PyObject`. Esta macro expande::" -#: ../Doc/c-api/structures.rst:161 +#: ../Doc/c-api/structures.rst:173 msgid "" "This is a macro which expands to initialization values for a new :c:type:" "`PyVarObject` type, including the :attr:`ob_size` field. This macro expands " @@ -219,14 +241,15 @@ msgstr "" "nuevo tipo :c:type:`PyVarObject`, incluyendo el campo :attr:`ob_size`. Esta " "macro se expande a::" -#: ../Doc/c-api/structures.rst:170 +#: ../Doc/c-api/structures.rst:182 msgid "Implementing functions and methods" msgstr "Implementando funciones y métodos" -#: ../Doc/c-api/structures.rst:174 +#: ../Doc/c-api/structures.rst:186 +#, fuzzy msgid "" "Type of the functions used to implement most Python callables in C. " -"Functions of this type take two :c:type:`PyObject*` parameters and return " +"Functions of this type take two :c:expr:`PyObject*` parameters and return " "one such value. If the return value is ``NULL``, an exception shall have " "been set. If not ``NULL``, the return value is interpreted as the return " "value of the function as exposed in Python. The function must return a new " @@ -239,11 +262,11 @@ msgstr "" "interpreta como el valor de retorno de la función que se expone en Python. " "La función debe retornar una nueva referencia." -#: ../Doc/c-api/structures.rst:181 +#: ../Doc/c-api/structures.rst:193 msgid "The function signature is::" msgstr "La firma de la función es::" -#: ../Doc/c-api/structures.rst:188 +#: ../Doc/c-api/structures.rst:200 msgid "" "Type of the functions used to implement Python callables in C with " "signature :const:`METH_VARARGS | METH_KEYWORDS`. The function signature is::" @@ -252,7 +275,7 @@ msgstr "" "C con la firma :const:`METH_VARARGS | METH_KEYWORDS`. La firma de la función " "es::" -#: ../Doc/c-api/structures.rst:199 +#: ../Doc/c-api/structures.rst:211 msgid "" "Type of the functions used to implement Python callables in C with " "signature :const:`METH_FASTCALL`. The function signature is::" @@ -260,7 +283,7 @@ msgstr "" "Tipo de las funciones que se utilizan para implementar invocables Python en " "C con la firma :const:`METH_FASTCALL`. La firma de la función es::" -#: ../Doc/c-api/structures.rst:209 +#: ../Doc/c-api/structures.rst:221 msgid "" "Type of the functions used to implement Python callables in C with " "signature :const:`METH_FASTCALL | METH_KEYWORDS`. The function signature is::" @@ -269,7 +292,7 @@ msgstr "" "C con la firma :const:`METH_FASTCALL | METH_KEYWORDS`. La firma de la " "función es::" -#: ../Doc/c-api/structures.rst:220 +#: ../Doc/c-api/structures.rst:232 msgid "" "Type of the functions used to implement Python callables in C with " "signature :const:`METH_METHOD | METH_FASTCALL | METH_KEYWORDS`. The function " @@ -279,7 +302,7 @@ msgstr "" "C con la firma :const:`METH_METHOD | METH_FASTCALL | METH_KEYWORDS`. La " "firma de la función es::" -#: ../Doc/c-api/structures.rst:235 +#: ../Doc/c-api/structures.rst:247 msgid "" "Structure used to describe a method of an extension type. This structure " "has four fields:" @@ -287,76 +310,77 @@ msgstr "" "Estructura utiliza para describir un método de un tipo de extensión. Esta " "estructura tiene cuatro campos:" -#: ../Doc/c-api/structures.rst:239 ../Doc/c-api/structures.rst:397 -#: ../Doc/c-api/structures.rst:493 +#: ../Doc/c-api/structures.rst:251 ../Doc/c-api/structures.rst:410 +#: ../Doc/c-api/structures.rst:506 msgid "Field" msgstr "Campo" -#: ../Doc/c-api/structures.rst:239 ../Doc/c-api/structures.rst:397 -#: ../Doc/c-api/structures.rst:493 +#: ../Doc/c-api/structures.rst:251 ../Doc/c-api/structures.rst:410 +#: ../Doc/c-api/structures.rst:506 msgid "C Type" msgstr "Tipo C" -#: ../Doc/c-api/structures.rst:239 ../Doc/c-api/structures.rst:397 -#: ../Doc/c-api/structures.rst:493 +#: ../Doc/c-api/structures.rst:251 ../Doc/c-api/structures.rst:410 +#: ../Doc/c-api/structures.rst:506 msgid "Meaning" msgstr "Significado" -#: ../Doc/c-api/structures.rst:241 +#: ../Doc/c-api/structures.rst:253 msgid ":attr:`ml_name`" msgstr ":attr:`ml_name`" -#: ../Doc/c-api/structures.rst:241 ../Doc/c-api/structures.rst:249 -#: ../Doc/c-api/structures.rst:399 ../Doc/c-api/structures.rst:412 -#: ../Doc/c-api/structures.rst:428 ../Doc/c-api/structures.rst:495 -#: ../Doc/c-api/structures.rst:503 +#: ../Doc/c-api/structures.rst:253 ../Doc/c-api/structures.rst:261 +#: ../Doc/c-api/structures.rst:412 ../Doc/c-api/structures.rst:425 +#: ../Doc/c-api/structures.rst:441 ../Doc/c-api/structures.rst:508 +#: ../Doc/c-api/structures.rst:516 msgid "const char \\*" msgstr "const char \\*" -#: ../Doc/c-api/structures.rst:241 +#: ../Doc/c-api/structures.rst:253 msgid "name of the method" msgstr "nombre del método" -#: ../Doc/c-api/structures.rst:243 +#: ../Doc/c-api/structures.rst:255 msgid ":attr:`ml_meth`" msgstr ":attr:`ml_meth`" -#: ../Doc/c-api/structures.rst:243 +#: ../Doc/c-api/structures.rst:255 msgid "PyCFunction" msgstr "PyCFunction" -#: ../Doc/c-api/structures.rst:243 +#: ../Doc/c-api/structures.rst:255 msgid "pointer to the C implementation" msgstr "puntero a la implementación en C" -#: ../Doc/c-api/structures.rst:246 +#: ../Doc/c-api/structures.rst:258 msgid ":attr:`ml_flags`" msgstr ":attr:`ml_flags`" -#: ../Doc/c-api/structures.rst:246 ../Doc/c-api/structures.rst:401 -#: ../Doc/c-api/structures.rst:408 ../Doc/c-api/structures.rst:424 +#: ../Doc/c-api/structures.rst:258 ../Doc/c-api/structures.rst:414 +#: ../Doc/c-api/structures.rst:421 ../Doc/c-api/structures.rst:437 msgid "int" msgstr "int" -#: ../Doc/c-api/structures.rst:246 +#: ../Doc/c-api/structures.rst:258 msgid "flag bits indicating how the call should be constructed" msgstr "*flag* bits que indican cómo debe ser construida la llamada" -#: ../Doc/c-api/structures.rst:249 +#: ../Doc/c-api/structures.rst:261 msgid ":attr:`ml_doc`" msgstr ":attr:`ml_doc`" -#: ../Doc/c-api/structures.rst:249 ../Doc/c-api/structures.rst:412 +#: ../Doc/c-api/structures.rst:261 ../Doc/c-api/structures.rst:425 msgid "points to the contents of the docstring" msgstr "puntos a los contenidos del docstring" -#: ../Doc/c-api/structures.rst:253 +#: ../Doc/c-api/structures.rst:265 +#, fuzzy msgid "" "The :attr:`ml_meth` is a C function pointer. The functions may be of " -"different types, but they always return :c:type:`PyObject*`. If the " +"different types, but they always return :c:expr:`PyObject*`. If the " "function is not of the :c:type:`PyCFunction`, the compiler will require a " "cast in the method table. Even though :c:type:`PyCFunction` defines the " -"first parameter as :c:type:`PyObject*`, it is common that the method " +"first parameter as :c:expr:`PyObject*`, it is common that the method " "implementation uses the specific C type of the *self* object." msgstr "" "El :attr:`ml_meth` es un puntero de función C. Las funciones pueden ser de " @@ -366,7 +390,7 @@ msgstr "" "primer parámetro como :c:type:`PyObject*`, es común que la implementación " "del método utiliza el tipo específico C del objeto *self*." -#: ../Doc/c-api/structures.rst:260 +#: ../Doc/c-api/structures.rst:272 msgid "" "The :attr:`ml_flags` field is a bitfield which can include the following " "flags. The individual flags indicate either a calling convention or a " @@ -376,14 +400,15 @@ msgstr "" "siguientes *flags*. Las *flags* individuales indican o bien una convención " "de llamada o una convención vinculante." -#: ../Doc/c-api/structures.rst:264 +#: ../Doc/c-api/structures.rst:276 msgid "There are these calling conventions:" msgstr "Existen estas convenciones de llamada:" -#: ../Doc/c-api/structures.rst:268 +#: ../Doc/c-api/structures.rst:280 +#, fuzzy msgid "" "This is the typical calling convention, where the methods have the type :c:" -"type:`PyCFunction`. The function expects two :c:type:`PyObject*` values. The " +"type:`PyCFunction`. The function expects two :c:expr:`PyObject*` values. The " "first one is the *self* object for methods; for module functions, it is the " "module object. The second parameter (often called *args*) is a tuple object " "representing all arguments. This parameter is typically processed using :c:" @@ -397,7 +422,7 @@ msgstr "" "procesa típicamente usando :c:func:`PyArg_ParseTuple` o :c:func:" "`PyArg_UnpackTuple`." -#: ../Doc/c-api/structures.rst:278 +#: ../Doc/c-api/structures.rst:290 msgid "" "Methods with these flags must be of type :c:type:`PyCFunctionWithKeywords`. " "The function expects three parameters: *self*, *args*, *kwargs* where " @@ -412,11 +437,12 @@ msgstr "" "clave. Los parámetros se procesan típicamente usando :c:func:" "`PyArg_ParseTupleAndKeywords`." -#: ../Doc/c-api/structures.rst:287 +#: ../Doc/c-api/structures.rst:299 +#, fuzzy msgid "" "Fast calling convention supporting only positional arguments. The methods " "have the type :c:type:`_PyCFunctionFast`. The first parameter is *self*, the " -"second parameter is a C array of :c:type:`PyObject*` values indicating the " +"second parameter is a C array of :c:expr:`PyObject*` values indicating the " "arguments and the third parameter is the number of arguments (the length of " "the array)." msgstr "" @@ -426,16 +452,17 @@ msgstr "" "que indican los argumentos y el tercer parámetro es el número de argumentos " "(la longitud del arreglo)." -#: ../Doc/c-api/structures.rst:297 +#: ../Doc/c-api/structures.rst:309 msgid "``METH_FASTCALL`` is now part of the stable ABI." msgstr "Ahora ``METH_FASTCALL`` es parte de la ABI estable." -#: ../Doc/c-api/structures.rst:302 +#: ../Doc/c-api/structures.rst:314 +#, fuzzy msgid "" "Extension of :const:`METH_FASTCALL` supporting also keyword arguments, with " "methods of type :c:type:`_PyCFunctionFastWithKeywords`. Keyword arguments " "are passed the same way as in the :ref:`vectorcall protocol `: " -"there is an additional fourth :c:type:`PyObject*` parameter which is a tuple " +"there is an additional fourth :c:expr:`PyObject*` parameter which is a tuple " "representing the names of the keyword arguments (which are guaranteed to be " "strings) or possibly ``NULL`` if there are no keywords. The values of the " "keyword arguments are stored in the *args* array, after the positional " @@ -450,11 +477,7 @@ msgstr "" "clave. Los valores de los argumentos de palabras clave se almacenan en el " "arreglo *args*, después de los argumentos posicionales." -#: ../Doc/c-api/structures.rst:312 -msgid "This is not part of the :ref:`limited API `." -msgstr "Esto no es parte de la :ref:`API limitada `." - -#: ../Doc/c-api/structures.rst:319 +#: ../Doc/c-api/structures.rst:329 msgid "" "Extension of :const:`METH_FASTCALL | METH_KEYWORDS` supporting the *defining " "class*, that is, the class that contains the method in question. The " @@ -464,7 +487,7 @@ msgstr "" "definitoria*, es decir, la clase que contiene el método en cuestión. La " "clase definitoria podría ser una superclase de ``Py_TYPE(self)``." -#: ../Doc/c-api/structures.rst:323 +#: ../Doc/c-api/structures.rst:333 msgid "" "The method needs to be of type :c:type:`PyCMethod`, the same as for " "``METH_FASTCALL | METH_KEYWORDS`` with ``defining_class`` argument added " @@ -474,7 +497,7 @@ msgstr "" "``METH_FASTCALL | METH_KEYWORDS`` con el argumento ``defining_clase`` " "añadido después de ``self``." -#: ../Doc/c-api/structures.rst:332 +#: ../Doc/c-api/structures.rst:342 msgid "" "Methods without parameters don't need to check whether arguments are given " "if they are listed with the :const:`METH_NOARGS` flag. They need to be of " @@ -488,12 +511,19 @@ msgstr "" "*self* y llevará a cabo una referencia a la instancia módulo u objeto. En " "todos los casos el segundo parámetro será ``NULL``." -#: ../Doc/c-api/structures.rst:341 +#: ../Doc/c-api/structures.rst:348 +msgid "" +"The function must have 2 parameters. Since the second parameter is unused, :" +"c:macro:`Py_UNUSED` can be used to prevent a compiler warning." +msgstr "" + +#: ../Doc/c-api/structures.rst:354 +#, fuzzy msgid "" "Methods with a single object argument can be listed with the :const:`METH_O` " "flag, instead of invoking :c:func:`PyArg_ParseTuple` with a ``\"O\"`` " "argument. They have the type :c:type:`PyCFunction`, with the *self* " -"parameter, and a :c:type:`PyObject*` parameter representing the single " +"parameter, and a :c:expr:`PyObject*` parameter representing the single " "argument." msgstr "" "Los métodos con un solo argumento objeto pueden ser listados con el flag :" @@ -501,7 +531,7 @@ msgstr "" "argumento ``\"O\"``. Tienen el tipo :c:type:`PyCFunction`, con el parámetro " "*self*, y un parámetro :c:type:`PyObject*` que representa el único argumento." -#: ../Doc/c-api/structures.rst:347 +#: ../Doc/c-api/structures.rst:360 msgid "" "These two constants are not used to indicate the calling convention but the " "binding when use with methods of classes. These may not be used for " @@ -513,7 +543,7 @@ msgstr "" "pueden usar para funciones definidas para módulos. A lo sumo uno de estos " "*flags* puede establecerse en un método dado." -#: ../Doc/c-api/structures.rst:357 +#: ../Doc/c-api/structures.rst:370 msgid "" "The method will be passed the type object as the first parameter rather than " "an instance of the type. This is used to create *class methods*, similar to " @@ -524,7 +554,7 @@ msgstr "" "methods*), similar a lo que se crea cuando se utiliza la función :func:" "`classmethod` incorporada." -#: ../Doc/c-api/structures.rst:367 +#: ../Doc/c-api/structures.rst:380 msgid "" "The method will be passed ``NULL`` as the first parameter rather than an " "instance of the type. This is used to create *static methods*, similar to " @@ -535,7 +565,7 @@ msgstr "" "similar a lo que se crea cuando se utiliza la función :func:`staticmethod` " "incorporada." -#: ../Doc/c-api/structures.rst:371 +#: ../Doc/c-api/structures.rst:384 msgid "" "One other constant controls whether a method is loaded in place of another " "definition with the same method name." @@ -543,7 +573,7 @@ msgstr "" "En otros controles constantes dependiendo si se carga un método en su lugar " "(*in place*) de otra definición con el mismo nombre del método." -#: ../Doc/c-api/structures.rst:377 +#: ../Doc/c-api/structures.rst:390 msgid "" "The method will be loaded in place of existing definitions. Without " "*METH_COEXIST*, the default is to skip repeated definitions. Since slot " @@ -565,11 +595,11 @@ msgstr "" "coexistirá con la ranura. Esto es útil porque las llamadas a PyCFunctions se " "optimizan más que las llamadas a objetos envolvente." -#: ../Doc/c-api/structures.rst:389 +#: ../Doc/c-api/structures.rst:402 msgid "Accessing attributes of extension types" msgstr "Acceder a atributos de tipos de extensión" -#: ../Doc/c-api/structures.rst:393 +#: ../Doc/c-api/structures.rst:406 msgid "" "Structure which describes an attribute of a type which corresponds to a C " "struct member. Its fields are:" @@ -577,51 +607,51 @@ msgstr "" "Estructura que describe un atributo de un tipo que corresponde a un miembro " "de la estructura de C. Sus campos son:" -#: ../Doc/c-api/structures.rst:399 +#: ../Doc/c-api/structures.rst:412 msgid ":attr:`name`" msgstr ":attr:`name`" -#: ../Doc/c-api/structures.rst:399 +#: ../Doc/c-api/structures.rst:412 msgid "name of the member" msgstr "nombre del miembro" -#: ../Doc/c-api/structures.rst:401 +#: ../Doc/c-api/structures.rst:414 msgid ":attr:`!type`" msgstr ":attr:`!type`" -#: ../Doc/c-api/structures.rst:401 +#: ../Doc/c-api/structures.rst:414 msgid "the type of the member in the C struct" msgstr "el tipo de miembro en la estructura de C" -#: ../Doc/c-api/structures.rst:404 +#: ../Doc/c-api/structures.rst:417 msgid ":attr:`offset`" msgstr ":attr:`offset`" -#: ../Doc/c-api/structures.rst:404 ../Doc/c-api/structures.rst:440 +#: ../Doc/c-api/structures.rst:417 ../Doc/c-api/structures.rst:453 msgid "Py_ssize_t" msgstr "Py_ssize_t" -#: ../Doc/c-api/structures.rst:404 +#: ../Doc/c-api/structures.rst:417 msgid "" "the offset in bytes that the member is located on the type's object struct" msgstr "" "el desplazamiento en bytes que el miembro se encuentra en la estructura de " "objetos tipo" -#: ../Doc/c-api/structures.rst:408 +#: ../Doc/c-api/structures.rst:421 msgid ":attr:`flags`" msgstr ":attr:`flags`" -#: ../Doc/c-api/structures.rst:408 +#: ../Doc/c-api/structures.rst:421 msgid "flag bits indicating if the field should be read-only or writable" msgstr "" "*flags* bits que indican si el campo debe ser de sólo lectura o de escritura" -#: ../Doc/c-api/structures.rst:412 +#: ../Doc/c-api/structures.rst:425 msgid ":attr:`doc`" msgstr ":attr:`doc`" -#: ../Doc/c-api/structures.rst:416 +#: ../Doc/c-api/structures.rst:429 msgid "" ":attr:`!type` can be one of many ``T_`` macros corresponding to various C " "types. When the member is accessed in Python, it will be converted to the " @@ -631,136 +661,136 @@ msgstr "" "diversos tipos C. Cuando se accede al miembro en Python, será convertida al " "tipo Python equivalente." -#: ../Doc/c-api/structures.rst:421 +#: ../Doc/c-api/structures.rst:434 msgid "Macro name" msgstr "Nombre de la macro" -#: ../Doc/c-api/structures.rst:421 +#: ../Doc/c-api/structures.rst:434 msgid "C type" msgstr "Tipo C" -#: ../Doc/c-api/structures.rst:423 +#: ../Doc/c-api/structures.rst:436 msgid "T_SHORT" msgstr "T_SHORT" -#: ../Doc/c-api/structures.rst:423 +#: ../Doc/c-api/structures.rst:436 msgid "short" msgstr "short" -#: ../Doc/c-api/structures.rst:424 +#: ../Doc/c-api/structures.rst:437 msgid "T_INT" msgstr "T_INT" -#: ../Doc/c-api/structures.rst:425 +#: ../Doc/c-api/structures.rst:438 msgid "T_LONG" msgstr "T_LONG" -#: ../Doc/c-api/structures.rst:425 +#: ../Doc/c-api/structures.rst:438 msgid "long" msgstr "long" -#: ../Doc/c-api/structures.rst:426 +#: ../Doc/c-api/structures.rst:439 msgid "T_FLOAT" msgstr "T_FLOAT" -#: ../Doc/c-api/structures.rst:426 +#: ../Doc/c-api/structures.rst:439 msgid "float" msgstr "float" -#: ../Doc/c-api/structures.rst:427 +#: ../Doc/c-api/structures.rst:440 msgid "T_DOUBLE" msgstr "T_DOUBLE" -#: ../Doc/c-api/structures.rst:427 +#: ../Doc/c-api/structures.rst:440 msgid "double" msgstr "double" -#: ../Doc/c-api/structures.rst:428 +#: ../Doc/c-api/structures.rst:441 msgid "T_STRING" msgstr "T_STRING" -#: ../Doc/c-api/structures.rst:429 +#: ../Doc/c-api/structures.rst:442 msgid "T_OBJECT" msgstr "T_OBJECT" -#: ../Doc/c-api/structures.rst:429 ../Doc/c-api/structures.rst:430 +#: ../Doc/c-api/structures.rst:442 ../Doc/c-api/structures.rst:443 msgid "PyObject \\*" msgstr "PyObject \\*" -#: ../Doc/c-api/structures.rst:430 +#: ../Doc/c-api/structures.rst:443 msgid "T_OBJECT_EX" msgstr "T_OBJECT_EX" -#: ../Doc/c-api/structures.rst:431 +#: ../Doc/c-api/structures.rst:444 msgid "T_CHAR" msgstr "T_CHAR" -#: ../Doc/c-api/structures.rst:431 ../Doc/c-api/structures.rst:432 -#: ../Doc/c-api/structures.rst:437 +#: ../Doc/c-api/structures.rst:444 ../Doc/c-api/structures.rst:445 +#: ../Doc/c-api/structures.rst:450 msgid "char" msgstr "char" -#: ../Doc/c-api/structures.rst:432 +#: ../Doc/c-api/structures.rst:445 msgid "T_BYTE" msgstr "T_BYTE" -#: ../Doc/c-api/structures.rst:433 +#: ../Doc/c-api/structures.rst:446 msgid "T_UBYTE" msgstr "T_UBYTE" -#: ../Doc/c-api/structures.rst:433 +#: ../Doc/c-api/structures.rst:446 msgid "unsigned char" msgstr "unsigned char" -#: ../Doc/c-api/structures.rst:434 +#: ../Doc/c-api/structures.rst:447 msgid "T_UINT" msgstr "T_UINT" -#: ../Doc/c-api/structures.rst:434 +#: ../Doc/c-api/structures.rst:447 msgid "unsigned int" msgstr "unsigned int" -#: ../Doc/c-api/structures.rst:435 +#: ../Doc/c-api/structures.rst:448 msgid "T_USHORT" msgstr "T_USHORT" -#: ../Doc/c-api/structures.rst:435 +#: ../Doc/c-api/structures.rst:448 msgid "unsigned short" msgstr "unsigned short" -#: ../Doc/c-api/structures.rst:436 +#: ../Doc/c-api/structures.rst:449 msgid "T_ULONG" msgstr "T_ULONG" -#: ../Doc/c-api/structures.rst:436 +#: ../Doc/c-api/structures.rst:449 msgid "unsigned long" msgstr "unsigned long" -#: ../Doc/c-api/structures.rst:437 +#: ../Doc/c-api/structures.rst:450 msgid "T_BOOL" msgstr "T_BOOL" -#: ../Doc/c-api/structures.rst:438 +#: ../Doc/c-api/structures.rst:451 msgid "T_LONGLONG" msgstr "T_LONGLONG" -#: ../Doc/c-api/structures.rst:438 +#: ../Doc/c-api/structures.rst:451 msgid "long long" msgstr "long long" -#: ../Doc/c-api/structures.rst:439 +#: ../Doc/c-api/structures.rst:452 msgid "T_ULONGLONG" msgstr "T_ULONGLONG" -#: ../Doc/c-api/structures.rst:439 +#: ../Doc/c-api/structures.rst:452 msgid "unsigned long long" msgstr "unsigned long long" -#: ../Doc/c-api/structures.rst:440 +#: ../Doc/c-api/structures.rst:453 msgid "T_PYSSIZET" msgstr "T_PYSSIZET" -#: ../Doc/c-api/structures.rst:443 +#: ../Doc/c-api/structures.rst:456 msgid "" ":c:macro:`T_OBJECT` and :c:macro:`T_OBJECT_EX` differ in that :c:macro:" "`T_OBJECT` returns ``None`` if the member is ``NULL`` and :c:macro:" @@ -776,7 +806,7 @@ msgstr "" "el uso de la declaración :keyword:`del` en ese atributo más correctamente " "que :c:macro:`T_OBJECT`." -#: ../Doc/c-api/structures.rst:450 +#: ../Doc/c-api/structures.rst:463 msgid "" ":attr:`flags` can be ``0`` for write and read access or :c:macro:`READONLY` " "for read-only access. Using :c:macro:`T_STRING` for :attr:`type` implies :c:" @@ -790,7 +820,7 @@ msgstr "" "`T_STRING` se interpretan como UTF-8. Sólo se pueden eliminar :c:macro:" "`T_OBJECT` y miembros :c:macro:`T_OBJECT_EX`. (Se establecen a ``NULL``)." -#: ../Doc/c-api/structures.rst:458 +#: ../Doc/c-api/structures.rst:471 msgid "" "Heap allocated types (created using :c:func:`PyType_FromSpec` or similar), " "``PyMemberDef`` may contain definitions for the special members " @@ -808,7 +838,7 @@ msgstr "" "`~PyTypeObject.tp_vectorcall_offset` en objetos de tipo. Estos deben " "definirse con ``T_PYSSIZET`` y ``READONLY``, por ejemplo::" -#: ../Doc/c-api/structures.rst:475 +#: ../Doc/c-api/structures.rst:488 msgid "" "Get an attribute belonging to the object at address *obj_addr*. The " "attribute is described by ``PyMemberDef`` *m*. Returns ``NULL`` on error." @@ -817,7 +847,7 @@ msgstr "" "atributo se describe por ``PyMemberDef`` *m*. Retorna ``NULL`` en caso de " "error." -#: ../Doc/c-api/structures.rst:482 +#: ../Doc/c-api/structures.rst:495 msgid "" "Set an attribute belonging to the object at address *obj_addr* to object " "*o*. The attribute to set is described by ``PyMemberDef`` *m*. Returns " @@ -827,7 +857,7 @@ msgstr "" "objeto *o*. El atributo a establecer se describe por ``PyMemberDef`` *m*. " "Retorna ``0`` si tiene éxito y un valor negativo si falla." -#: ../Doc/c-api/structures.rst:489 +#: ../Doc/c-api/structures.rst:502 msgid "" "Structure to define property-like access for a type. See also description of " "the :c:member:`PyTypeObject.tp_getset` slot." @@ -835,35 +865,36 @@ msgstr "" "Estructura para definir el acceso para un tipo como el de una propiedad. " "Véase también la descripción de la ranura :c:member:`PyTypeObject.tp_getset`." -#: ../Doc/c-api/structures.rst:495 +#: ../Doc/c-api/structures.rst:508 msgid "name" msgstr "nombre" -#: ../Doc/c-api/structures.rst:495 +#: ../Doc/c-api/structures.rst:508 msgid "attribute name" msgstr "nombre del atributo" -#: ../Doc/c-api/structures.rst:497 +#: ../Doc/c-api/structures.rst:510 msgid "get" msgstr "get" -#: ../Doc/c-api/structures.rst:497 +#: ../Doc/c-api/structures.rst:510 msgid "getter" msgstr "getter" -#: ../Doc/c-api/structures.rst:497 -msgid "C Function to get the attribute" +#: ../Doc/c-api/structures.rst:510 +#, fuzzy +msgid "C function to get the attribute" msgstr "Función C para obtener el atributo" -#: ../Doc/c-api/structures.rst:499 +#: ../Doc/c-api/structures.rst:512 msgid "set" msgstr "set" -#: ../Doc/c-api/structures.rst:499 +#: ../Doc/c-api/structures.rst:512 msgid "setter" msgstr "setter" -#: ../Doc/c-api/structures.rst:499 +#: ../Doc/c-api/structures.rst:512 msgid "" "optional C function to set or delete the attribute, if omitted the attribute " "is readonly" @@ -871,38 +902,39 @@ msgstr "" "función opcional C para establecer o eliminar el atributo, si se omite el " "atributo es de sólo lectura" -#: ../Doc/c-api/structures.rst:503 +#: ../Doc/c-api/structures.rst:516 msgid "doc" msgstr "doc" -#: ../Doc/c-api/structures.rst:503 +#: ../Doc/c-api/structures.rst:516 msgid "optional docstring" msgstr "docstring opcional" -#: ../Doc/c-api/structures.rst:505 +#: ../Doc/c-api/structures.rst:518 msgid "closure" msgstr "clausura (*closure*)" -#: ../Doc/c-api/structures.rst:505 +#: ../Doc/c-api/structures.rst:518 msgid "void \\*" msgstr "void \\*" -#: ../Doc/c-api/structures.rst:505 +#: ../Doc/c-api/structures.rst:518 msgid "" "optional function pointer, providing additional data for getter and setter" msgstr "" "puntero de función opcional, proporcionar datos adicionales para *getter* y " "*setter*" -#: ../Doc/c-api/structures.rst:510 +#: ../Doc/c-api/structures.rst:523 +#, fuzzy msgid "" -"The ``get`` function takes one :c:type:`PyObject*` parameter (the instance) " +"The ``get`` function takes one :c:expr:`PyObject*` parameter (the instance) " "and a function pointer (the associated ``closure``)::" msgstr "" "La función ``get`` toma un parámetro :c:type:`PyObject*` (la instancia) y un " "puntero de función (el ``closure`` asociado)::" -#: ../Doc/c-api/structures.rst:515 +#: ../Doc/c-api/structures.rst:528 msgid "" "It should return a new reference on success or ``NULL`` with a set exception " "on failure." @@ -910,16 +942,17 @@ msgstr "" "Debe retornar una nueva referencia en caso de éxito o ``NULL`` con una " "excepción establecida en caso de error." -#: ../Doc/c-api/structures.rst:518 +#: ../Doc/c-api/structures.rst:531 +#, fuzzy msgid "" -"``set`` functions take two :c:type:`PyObject*` parameters (the instance and " +"``set`` functions take two :c:expr:`PyObject*` parameters (the instance and " "the value to be set) and a function pointer (the associated ``closure``)::" msgstr "" "Las funciones ``set`` toman dos parámetros :c:type:`PyObject*` (la instancia " "y el valor a ser establecido) y un puntero de función (el ``closure`` " "asociado)::" -#: ../Doc/c-api/structures.rst:523 +#: ../Doc/c-api/structures.rst:536 msgid "" "In case the attribute should be deleted the second parameter is ``NULL``. " "Should return ``0`` on success or ``-1`` with a set exception on failure." @@ -927,3 +960,14 @@ msgstr "" "En caso de que el atributo deba suprimirse el segundo parámetro es ``NULL``. " "Debe retornar ``0`` en caso de éxito o ``-1`` con una excepción explícita en " "caso de fallo." + +#~ msgid "" +#~ ":c:func:`Py_REFCNT()` is changed to the inline static function. Use :c:" +#~ "func:`Py_SET_REFCNT()` to set an object reference count." +#~ msgstr "" +#~ ":c:func:`Py_REFCNT()` se cambia a la función estática en línea. Use :c:" +#~ "func:`Py_SET_REFCNT()` para establecer una cuenta de referencias de " +#~ "objetos." + +#~ msgid "This is not part of the :ref:`limited API `." +#~ msgstr "Esto no es parte de la :ref:`API limitada `." diff --git a/c-api/sys.po b/c-api/sys.po index cb18a742b7..00c107f335 100644 --- a/c-api/sys.po +++ b/c-api/sys.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-12-09 10:56+0800\n" "Last-Translator: Rodrigo Tobar \n" "Language: es\n" @@ -19,8 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/c-api/sys.rst:6 msgid "Operating System Utilities" @@ -156,12 +155,13 @@ msgid "This function is superseded by :c:func:`PyOS_AfterFork_Child()`." msgstr "Esta función es reemplazada por :c:func:`PyOS_AfterFork_Child()`." #: ../Doc/c-api/sys.rst:97 +#, fuzzy msgid "" "Return true when the interpreter runs out of stack space. This is a " "reliable check, but is only available when :const:`USE_STACKCHECK` is " -"defined (currently on Windows using the Microsoft Visual C++ compiler). :" -"const:`USE_STACKCHECK` will be defined automatically; you should never " -"change the definition in your own code." +"defined (currently on certain versions of Windows using the Microsoft Visual " +"C++ compiler). :const:`USE_STACKCHECK` will be defined automatically; you " +"should never change the definition in your own code." msgstr "" "Retorna verdadero cuando el intérprete se queda sin espacio de pila (*stack " "space*). Esta es una verificación confiable, pero solo está disponible " @@ -170,11 +170,12 @@ msgstr "" "automáticamente; nunca debe cambiar la definición en su propio código." #: ../Doc/c-api/sys.rst:106 +#, fuzzy msgid "" "Return the current signal handler for signal *i*. This is a thin wrapper " "around either :c:func:`sigaction` or :c:func:`signal`. Do not call those " "functions directly! :c:type:`PyOS_sighandler_t` is a typedef alias for :c:" -"type:`void (\\*)(int)`." +"expr:`void (\\*)(int)`." msgstr "" "Retorna el controlador de señal actual para la señal *i*. Esta es una " "pequeña envoltura alrededor de :c:func:`sigaction` o :c:func:`signal`. ¡No " @@ -182,11 +183,12 @@ msgstr "" "*typedef* para :c:type:`void (\\*)(int)`." #: ../Doc/c-api/sys.rst:114 +#, fuzzy msgid "" "Set the signal handler for signal *i* to be *h*; return the old signal " "handler. This is a thin wrapper around either :c:func:`sigaction` or :c:func:" "`signal`. Do not call those functions directly! :c:type:" -"`PyOS_sighandler_t` is a typedef alias for :c:type:`void (\\*)(int)`." +"`PyOS_sighandler_t` is a typedef alias for :c:expr:`void (\\*)(int)`." msgstr "" "Configura el controlador de señal para la señal *i* como *h*; retorna el " "antiguo manejador de señal. Esta es una pequeña envoltura alrededor de :c:" @@ -218,8 +220,8 @@ msgstr "" msgid "" "Decode a byte string from the :term:`filesystem encoding and error handler`. " "If the error handler is :ref:`surrogateescape error handler " -"`, undecodable bytes are decoded as characters in range U" -"+DC80..U+DCFF; and if a byte sequence can be decoded as a surrogate " +"`, undecodable bytes are decoded as characters in range " +"U+DC80..U+DCFF; and if a byte sequence can be decoded as a surrogate " "character, the bytes are escaped using the surrogateescape error handler " "instead of decoding them." msgstr "" @@ -294,7 +296,7 @@ msgstr "" "La función ahora utiliza la codificación UTF-8 en el :ref:`Modo Python UTF-8 " "`." -#: ../Doc/c-api/sys.rst:166 ../Doc/c-api/sys.rst:208 +#: ../Doc/c-api/sys.rst:166 msgid "" "The function now uses the UTF-8 encoding on Windows if :c:data:" "`Py_LegacyWindowsFSEncodingFlag` is zero;" @@ -315,10 +317,11 @@ msgstr "" "sustituidos en el rango U+DC80..U+DCFF se convierten en bytes 0x80..0xFF." #: ../Doc/c-api/sys.rst:178 +#, fuzzy msgid "" "Return a pointer to a newly allocated byte string, use :c:func:`PyMem_Free` " "to free the memory. Return ``NULL`` on encoding error or memory allocation " -"error" +"error." msgstr "" "Retorna un puntero a una cadena de bytes recién asignada, use :c:func:" "`PyMem_Free` para liberar la memoria. Retorna ``NULL`` en el error de " @@ -349,6 +352,15 @@ msgstr "" "Las funciones :c:func:`PyUnicode_EncodeFSDefault` y :c:func:" "`PyUnicode_EncodeLocale`." +#: ../Doc/c-api/sys.rst:208 +#, fuzzy +msgid "" +"The function now uses the UTF-8 encoding on Windows if :c:data:" +"`Py_LegacyWindowsFSEncodingFlag` is zero." +msgstr "" +"La función ahora usa la codificación UTF-8 en Windows si :c:data:" +"`Py_LegacyWindowsFSEncodingFlag` es cero;" + #: ../Doc/c-api/sys.rst:216 msgid "System Functions" msgstr "Funciones del Sistema" @@ -391,7 +403,14 @@ msgstr "" "Restablece :data:`sys.warnoptions` a una lista vacía. Esta función puede " "llamarse antes de :c:func:`Py_Initialize`." -#: ../Doc/c-api/sys.rst:240 +#: ../Doc/c-api/sys.rst:240 ../Doc/c-api/sys.rst:251 +msgid "" +"This API is kept for backward compatibility: setting :c:member:`PyConfig." +"warnoptions` should be used instead, see :ref:`Python Initialization " +"Configuration `." +msgstr "" + +#: ../Doc/c-api/sys.rst:244 msgid "" "Append *s* to :data:`sys.warnoptions`. This function must be called prior " "to :c:func:`Py_Initialize` in order to affect the warnings filter list." @@ -399,11 +418,11 @@ msgstr "" "Agrega *s* a :data:`sys.warnoptions`. Esta función debe llamarse antes de :c:" "func:`Py_Initialize` para afectar la lista de filtros de advertencias." -#: ../Doc/c-api/sys.rst:245 +#: ../Doc/c-api/sys.rst:255 msgid "Append *unicode* to :data:`sys.warnoptions`." msgstr "Agrega *unicode* a :data:`sys.warnoptions`." -#: ../Doc/c-api/sys.rst:247 +#: ../Doc/c-api/sys.rst:257 msgid "" "Note: this function is not currently usable from outside the CPython " "implementation, as it must be called prior to the implicit import of :mod:" @@ -417,7 +436,15 @@ msgstr "" "efectiva, pero no se puede llamar hasta que se haya inicializado suficiente " "tiempo de ejecución para permitir la creación de objetos Unicode." -#: ../Doc/c-api/sys.rst:255 +#: ../Doc/c-api/sys.rst:267 +msgid "" +"This API is kept for backward compatibility: setting :c:member:`PyConfig." +"module_search_paths` and :c:member:`PyConfig.module_search_paths_set` should " +"be used instead, see :ref:`Python Initialization Configuration `." +msgstr "" + +#: ../Doc/c-api/sys.rst:272 msgid "" "Set :data:`sys.path` to a list object of paths found in *path* which should " "be a list of paths separated with the platform's search path delimiter (``:" @@ -427,7 +454,7 @@ msgstr "" "*path*, que debería ser una lista de rutas separadas con el delimitador de " "ruta de búsqueda de la plataforma (``:`` en Unix, ``;`` en Windows )" -#: ../Doc/c-api/sys.rst:261 +#: ../Doc/c-api/sys.rst:280 msgid "" "Write the output string described by *format* to :data:`sys.stdout`. No " "exceptions are raised, even if truncation occurs (see below)." @@ -436,7 +463,7 @@ msgstr "" "`sys.stdout`. No se lanzan excepciones, incluso si se produce el " "truncamiento (ver más abajo)." -#: ../Doc/c-api/sys.rst:264 +#: ../Doc/c-api/sys.rst:283 #, python-format msgid "" "*format* should limit the total size of the formatted output string to 1000 " @@ -456,7 +483,7 @@ msgstr "" "tenga cuidado con \"%f\", que puede imprimir cientos de dígitos para números " "muy grandes." -#: ../Doc/c-api/sys.rst:272 +#: ../Doc/c-api/sys.rst:291 msgid "" "If a problem occurs, or :data:`sys.stdout` is unset, the formatted message " "is written to the real (C level) *stdout*." @@ -464,7 +491,7 @@ msgstr "" "Si ocurre un problema, o :data:`sys.stdout` no está configurado, el mensaje " "formateado se escribe en el real (nivel C) *stdout*." -#: ../Doc/c-api/sys.rst:277 +#: ../Doc/c-api/sys.rst:296 msgid "" "As :c:func:`PySys_WriteStdout`, but write to :data:`sys.stderr` or *stderr* " "instead." @@ -472,7 +499,7 @@ msgstr "" "Como :c:func:`PySys_WriteStdout`, pero escribe a :data:`sys.stderr` o " "*stderr* en su lugar." -#: ../Doc/c-api/sys.rst:282 +#: ../Doc/c-api/sys.rst:301 msgid "" "Function similar to PySys_WriteStdout() but format the message using :c:func:" "`PyUnicode_FromFormatV` and don't truncate the message to an arbitrary " @@ -482,7 +509,7 @@ msgstr "" "func:`PyUnicode_FromFormatV` y no trunca el mensaje a una longitud " "arbitraria." -#: ../Doc/c-api/sys.rst:290 +#: ../Doc/c-api/sys.rst:309 msgid "" "As :c:func:`PySys_FormatStdout`, but write to :data:`sys.stderr` or *stderr* " "instead." @@ -490,7 +517,14 @@ msgstr "" "Como :c:func:`PySys_FormatStdout`, pero escribe a :data:`sys.stderr` o " "*stderr* en su lugar." -#: ../Doc/c-api/sys.rst:297 +#: ../Doc/c-api/sys.rst:316 +msgid "" +"This API is kept for backward compatibility: setting :c:member:`PyConfig." +"xoptions` should be used instead, see :ref:`Python Initialization " +"Configuration `." +msgstr "" + +#: ../Doc/c-api/sys.rst:320 msgid "" "Parse *s* as a set of :option:`-X` options and add them to the current " "options mapping as returned by :c:func:`PySys_GetXOptions`. This function " @@ -501,7 +535,7 @@ msgstr "" "`PySys_GetXOptions`. Esta función puede llamarse antes de :c:func:" "`Py_Initialize`." -#: ../Doc/c-api/sys.rst:305 +#: ../Doc/c-api/sys.rst:330 msgid "" "Return the current dictionary of :option:`-X` options, similarly to :data:" "`sys._xoptions`. On error, ``NULL`` is returned and an exception is set." @@ -510,7 +544,7 @@ msgstr "" "data:`sys._xoptions`. En caso de error, se retorna ``NULL`` y se establece " "una excepción." -#: ../Doc/c-api/sys.rst:314 +#: ../Doc/c-api/sys.rst:339 msgid "" "Raise an auditing event with any active hooks. Return zero for success and " "non-zero with an exception set on failure." @@ -518,7 +552,7 @@ msgstr "" "Lanza un evento de auditoría con cualquier gancho activo. Retorna cero para " "el éxito y no cero con una excepción establecida en caso de error." -#: ../Doc/c-api/sys.rst:317 +#: ../Doc/c-api/sys.rst:342 msgid "" "If any hooks have been added, *format* and other arguments will be used to " "construct a tuple to pass. Apart from ``N``, the same format characters as " @@ -536,31 +570,34 @@ msgstr "" "no hay forma de saber si se consumirán argumentos para esta función, su uso " "puede causar fugas de referencia)." -#: ../Doc/c-api/sys.rst:325 +#: ../Doc/c-api/sys.rst:350 +#, fuzzy msgid "" -"Note that ``#`` format characters should always be treated as " -"``Py_ssize_t``, regardless of whether ``PY_SSIZE_T_CLEAN`` was defined." +"Note that ``#`` format characters should always be treated as :c:type:" +"`Py_ssize_t`, regardless of whether ``PY_SSIZE_T_CLEAN`` was defined." msgstr "" "Tenga en cuenta que los caracteres de formato ``#`` siempre deben tratarse " "como ``Py_ssize_t``, independientemente de si se definió " "``PY_SSIZE_T_CLEAN``." -#: ../Doc/c-api/sys.rst:328 +#: ../Doc/c-api/sys.rst:353 msgid ":func:`sys.audit` performs the same function from Python code." msgstr ":func:`sys.audit` realiza la misma función del código Python." -#: ../Doc/c-api/sys.rst:334 +#: ../Doc/c-api/sys.rst:359 +#, fuzzy msgid "" -"Require ``Py_ssize_t`` for ``#`` format characters. Previously, an " +"Require :c:type:`Py_ssize_t` for ``#`` format characters. Previously, an " "unavoidable deprecation warning was raised." msgstr "" "Requiere ``Py_ssize_t`` para los caracteres de formato ``#``. Anteriormente, " "se lanza una advertencia de deprecación inevitable." -#: ../Doc/c-api/sys.rst:340 +#: ../Doc/c-api/sys.rst:365 +#, fuzzy msgid "" "Append the callable *hook* to the list of active auditing hooks. Return zero " -"for success and non-zero on failure. If the runtime has been initialized, " +"on success and non-zero on failure. If the runtime has been initialized, " "also set an error on failure. Hooks added through this API are called for " "all interpreters created by the runtime." msgstr "" @@ -570,7 +607,7 @@ msgstr "" "fallo. Los ganchos agregados a través de esta API se llaman para todos los " "intérpretes creados por el tiempo de ejecución." -#: ../Doc/c-api/sys.rst:346 +#: ../Doc/c-api/sys.rst:371 msgid "" "The *userData* pointer is passed into the hook function. Since hook " "functions may be called from different runtimes, this pointer should not " @@ -580,7 +617,7 @@ msgstr "" "enlace pueden llamarse desde diferentes tiempos de ejecución, este puntero " "no debe referirse directamente al estado de Python." -#: ../Doc/c-api/sys.rst:350 +#: ../Doc/c-api/sys.rst:375 msgid "" "This function is safe to call before :c:func:`Py_Initialize`. When called " "after runtime initialization, existing audit hooks are notified and may " @@ -593,9 +630,10 @@ msgstr "" "al generar un error subclasificado de :class:`Excepción` (otros errores no " "se silenciarán)." -#: ../Doc/c-api/sys.rst:355 +#: ../Doc/c-api/sys.rst:380 +#, fuzzy msgid "" -"The hook function is of type :c:type:`int (*)(const char *event, PyObject " +"The hook function is of type :c:expr:`int (*)(const char *event, PyObject " "*args, void *userData)`, where *args* is guaranteed to be a :c:type:" "`PyTupleObject`. The hook function is always called with the GIL held by the " "Python interpreter that raised the event." @@ -605,7 +643,7 @@ msgstr "" "type:`PyTupleObject`. La función gancho siempre se llama con el GIL en poder " "del intérprete de Python que lanzó el evento." -#: ../Doc/c-api/sys.rst:360 +#: ../Doc/c-api/sys.rst:385 msgid "" "See :pep:`578` for a detailed description of auditing. Functions in the " "runtime and standard library that raise events are listed in the :ref:`audit " @@ -616,7 +654,7 @@ msgstr "" "enumeran en :ref:`table de eventos de auditoria `. Los " "detalles se encuentran en la documentación de cada función." -#: ../Doc/c-api/sys.rst:365 +#: ../Doc/c-api/sys.rst:390 msgid "" "Raises an :ref:`auditing event ` ``sys.addaudithook`` with no " "arguments." @@ -624,7 +662,7 @@ msgstr "" "Lanza un :ref:`evento de auditoria ` ``sys.addaudithook`` sin " "argumentos." -#: ../Doc/c-api/sys.rst:367 +#: ../Doc/c-api/sys.rst:392 msgid "" "If the interpreter is initialized, this function raises a auditing event " "``sys.addaudithook`` with no arguments. If any existing hooks raise an " @@ -639,11 +677,11 @@ msgstr "" "asumir que su gancho ha sido agregado a menos que controlen todos los " "ganchos existentes." -#: ../Doc/c-api/sys.rst:379 +#: ../Doc/c-api/sys.rst:404 msgid "Process Control" msgstr "Control de procesos" -#: ../Doc/c-api/sys.rst:386 +#: ../Doc/c-api/sys.rst:411 msgid "" "Print a fatal error message and kill the process. No cleanup is performed. " "This function should only be invoked when a condition is detected that would " @@ -659,7 +697,7 @@ msgstr "" "la función de biblioteca C estándar :c:func:`abort` que intentará producir " "un archivo :file:`core`." -#: ../Doc/c-api/sys.rst:393 +#: ../Doc/c-api/sys.rst:418 msgid "" "The ``Py_FatalError()`` function is replaced with a macro which logs " "automatically the name of the current function, unless the " @@ -669,11 +707,11 @@ msgstr "" "automáticamente el nombre de la función actual, a menos que se defina la " "macro ``Py_LIMITED_API``." -#: ../Doc/c-api/sys.rst:397 +#: ../Doc/c-api/sys.rst:422 msgid "Log the function name automatically." msgstr "Registra el nombre de la función automáticamente." -#: ../Doc/c-api/sys.rst:407 +#: ../Doc/c-api/sys.rst:432 msgid "" "Exit the current process. This calls :c:func:`Py_FinalizeEx` and then calls " "the standard C library function ``exit(status)``. If :c:func:" @@ -683,11 +721,11 @@ msgstr "" "la función estándar de la biblioteca C ``exit(status)``. Si :c:func:" "`Py_FinalizeEx` indica un error, el estado de salida se establece en 120." -#: ../Doc/c-api/sys.rst:411 +#: ../Doc/c-api/sys.rst:436 msgid "Errors from finalization no longer ignored." msgstr "Los errores de finalización ya no se ignoran." -#: ../Doc/c-api/sys.rst:421 +#: ../Doc/c-api/sys.rst:446 msgid "" "Register a cleanup function to be called by :c:func:`Py_FinalizeEx`. The " "cleanup function will be called with no arguments and should return no " diff --git a/c-api/tuple.po b/c-api/tuple.po index df7a4962b8..2c61d723f4 100644 --- a/c-api/tuple.po +++ b/c-api/tuple.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-12-09 10:31+0800\n" "Last-Translator: Rodrigo Tobar \n" "Language: es\n" @@ -19,8 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/c-api/tuple.rst:6 msgid "Tuple Objects" @@ -135,8 +134,9 @@ msgstr "" "de errores, y debe *solo* usarse para completar tuplas nuevas." #: ../Doc/c-api/tuple.rst:94 +#, fuzzy msgid "" -"This macro \"steals\" a reference to *o*, and, unlike :c:func:" +"This function \"steals\" a reference to *o*, and, unlike :c:func:" "`PyTuple_SetItem`, does *not* discard a reference to any item that is being " "replaced; any reference in the tuple at position *pos* will be leaked." msgstr "" @@ -277,9 +277,10 @@ msgstr "" "cantidad de campos visibles para el lado de Python (si se usa como tupla)" #: ../Doc/c-api/tuple.rst:163 +#, fuzzy msgid "" "Describes a field of a struct sequence. As a struct sequence is modeled as a " -"tuple, all fields are typed as :c:type:`PyObject*`. The index in the :attr:" +"tuple, all fields are typed as :c:expr:`PyObject*`. The index in the :attr:" "`fields` array of the :c:type:`PyStructSequence_Desc` determines which field " "of the struct sequence is described." msgstr "" @@ -340,10 +341,15 @@ msgstr "" "el valor *o*. Como :c:func:`PyTuple_SET_ITEM`, esto solo debe usarse para " "completar instancias nuevas." -#: ../Doc/c-api/tuple.rst:213 ../Doc/c-api/tuple.rst:222 +#: ../Doc/c-api/tuple.rst:213 ../Doc/c-api/tuple.rst:223 msgid "This function \"steals\" a reference to *o*." msgstr "Esta función \"roba\" una referencia a *o*." #: ../Doc/c-api/tuple.rst:218 -msgid "Macro equivalent of :c:func:`PyStructSequence_SetItem`." -msgstr "Macro equivalente de :c:func:`PyStructSequence_SetItem`." +msgid "" +"Similar to :c:func:`PyStructSequence_SetItem`, but implemented as a static " +"inlined function." +msgstr "" + +#~ msgid "Macro equivalent of :c:func:`PyStructSequence_SetItem`." +#~ msgstr "Macro equivalente de :c:func:`PyStructSequence_SetItem`." diff --git a/c-api/type.po b/c-api/type.po index 46e7f461af..fb7ba5cc65 100644 --- a/c-api/type.po +++ b/c-api/type.po @@ -10,16 +10,16 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-08-02 01:37+0200\n" "Last-Translator: Cristián Maureira-Fredes \n" -"Language-Team: python-doc-es\n" "Language: es\n" +"Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" -"Generated-By: Babel 2.9.1\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/c-api/type.rst:6 msgid "Type Objects" @@ -66,9 +66,10 @@ msgstr "" "versión actual." #: ../Doc/c-api/type.rst:42 +#, fuzzy msgid "" "Return the :c:member:`~PyTypeObject.tp_flags` member of *type*. This " -"function is primarily meant for use with `Py_LIMITED_API`; the individual " +"function is primarily meant for use with ``Py_LIMITED_API``; the individual " "flag bits are guaranteed to be stable across Python releases, but access to :" "c:member:`~PyTypeObject.tp_flags` itself is not part of the limited API." msgstr "" @@ -175,6 +176,18 @@ msgstr "" #: ../Doc/c-api/type.rst:111 msgid "" +"Return the type's name. Equivalent to getting the type's ``__name__`` " +"attribute." +msgstr "" + +#: ../Doc/c-api/type.rst:117 +msgid "" +"Return the type's qualified name. Equivalent to getting the type's " +"``__qualname__`` attribute." +msgstr "" + +#: ../Doc/c-api/type.rst:124 +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 " "function was called with invalid parameters. Callers will typically cast the " @@ -185,14 +198,14 @@ msgstr "" "con parámetros no válidos. Las personas que llaman suelen convertir el " "puntero de resultado en el tipo de función apropiado." -#: ../Doc/c-api/type.rst:117 +#: ../Doc/c-api/type.rst:130 msgid "" "See :c:member:`PyType_Slot.slot` for possible values of the *slot* argument." msgstr "" "Consulte :c:member:`PyType_Slot.slot` para conocer los posibles valores del " "argumento *slot*." -#: ../Doc/c-api/type.rst:121 +#: ../Doc/c-api/type.rst:134 msgid "" ":c:func:`PyType_GetSlot` can now accept all types. Previously, it was " "limited to :ref:`heap types `." @@ -200,7 +213,7 @@ msgstr "" ":c:func:`PyType_GetSlot` ahora puede aceptar todos los tipos. Anteriormente, " "estaba limitado a :ref:`heap types `." -#: ../Doc/c-api/type.rst:127 +#: ../Doc/c-api/type.rst:140 msgid "" "Return the module object associated with the given type when the type was " "created using :c:func:`PyType_FromModuleAndSpec`." @@ -208,7 +221,7 @@ msgstr "" "Retorna el objeto módulo asociado con el tipo dado cuando se creó el tipo " "usando :c:func:`PyType_FromModuleAndSpec`." -#: ../Doc/c-api/type.rst:130 ../Doc/c-api/type.rst:148 +#: ../Doc/c-api/type.rst:143 ../Doc/c-api/type.rst:163 msgid "" "If no module is associated with the given type, sets :py:class:`TypeError` " "and returns ``NULL``." @@ -216,14 +229,16 @@ msgstr "" "Si no hay ningún módulo asociado con el tipo dado, establece :py:class:" "`TypeError` y retorna ``NULL``." -#: ../Doc/c-api/type.rst:133 +#: ../Doc/c-api/type.rst:146 +#, fuzzy 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 " "not return the intended result. ``Py_TYPE(self)`` may be a *subclass* of the " "intended class, and subclasses are not necessarily defined in the same " "module as their superclass. See :c:type:`PyCMethod` to get the class that " -"defines the method." +"defines the method. See :c:func:`PyType_GetModuleByDef` for cases when " +"``PyCMethod`` cannot be used." msgstr "" "Esta función se suele utilizar para obtener el módulo en el que se define un " "método. Tenga en cuenta que en un método de este tipo, es posible que " @@ -233,7 +248,7 @@ msgstr "" "superclase. Consulte :c:type:`PyCMethod` para obtener la clase que define el " "método." -#: ../Doc/c-api/type.rst:144 +#: ../Doc/c-api/type.rst:159 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:" @@ -243,7 +258,7 @@ msgstr "" "atajo para llamar :c:func:`PyModule_GetState()` en el resultado de :c:func:" "`PyType_GetModule`." -#: ../Doc/c-api/type.rst:151 +#: ../Doc/c-api/type.rst:166 msgid "" "If the *type* has an associated module but its state is ``NULL``, returns " "``NULL`` without setting an exception." @@ -251,11 +266,34 @@ msgstr "" "Si el tipo *type* tiene un módulo asociado pero su estado es ``NULL``, " "retorna ``NULL`` sin establecer una excepción." -#: ../Doc/c-api/type.rst:158 +#: ../Doc/c-api/type.rst:173 +msgid "" +"Find the first superclass whose module was created from the given :c:type:" +"`PyModuleDef` *def*, and return that module." +msgstr "" + +#: ../Doc/c-api/type.rst:176 +#, fuzzy +msgid "" +"If no module is found, raises a :py:class:`TypeError` and returns ``NULL``." +msgstr "" +"Si no hay ningún módulo asociado con el tipo dado, establece :py:class:" +"`TypeError` y retorna ``NULL``." + +#: ../Doc/c-api/type.rst:178 +msgid "" +"This function is intended to be used together with :c:func:" +"`PyModule_GetState()` to get module state from slot methods (such as :c:" +"member:`~PyTypeObject.tp_init` or :c:member:`~PyNumberMethods.nb_add`) and " +"other places where a method's defining class cannot be passed using the :c:" +"type:`PyCMethod` calling convention." +msgstr "" + +#: ../Doc/c-api/type.rst:188 msgid "Creating Heap-Allocated Types" msgstr "Crear tipos asignados en montículo (*heap*)" -#: ../Doc/c-api/type.rst:160 +#: ../Doc/c-api/type.rst:190 msgid "" "The following functions and structs are used to create :ref:`heap types " "`." @@ -263,7 +301,7 @@ msgstr "" "Las siguientes funciones y estructuras se utilizan para crear :ref:`heap " "types `." -#: ../Doc/c-api/type.rst:165 +#: ../Doc/c-api/type.rst:195 msgid "" "Creates and returns a :ref:`heap type ` from the *spec* (:const:" "`Py_TPFLAGS_HEAPTYPE`)." @@ -271,7 +309,7 @@ msgstr "" "Crea y retorna un :ref:`tipo heap ` a partir del *spec* (:const:" "`Py_TPFLAGS_HEAPTYPE`)." -#: ../Doc/c-api/type.rst:168 +#: ../Doc/c-api/type.rst:198 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 " @@ -285,7 +323,7 @@ msgstr "" "la ranura *Py_tp_base* en su lugar. Si también es ``NULL``, el nuevo tipo se " "deriva de :class:`object`." -#: ../Doc/c-api/type.rst:174 +#: ../Doc/c-api/type.rst:204 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``, " @@ -299,11 +337,11 @@ msgstr "" "con :c:func:`PyType_GetModule`. El módulo asociado no es heredado por " "subclases; debe especificarse para cada clase individualmente." -#: ../Doc/c-api/type.rst:181 +#: ../Doc/c-api/type.rst:211 msgid "This function calls :c:func:`PyType_Ready` on the new type." msgstr "Esta función llama :c:func:`PyType_Ready` en el tipo nuevo." -#: ../Doc/c-api/type.rst:187 +#: ../Doc/c-api/type.rst:217 msgid "" "The function now accepts a single class as the *bases* argument and ``NULL`` " "as the ``tp_doc`` slot." @@ -311,24 +349,24 @@ msgstr "" "La función ahora acepta una sola clase como argumento *bases* y ``NULL`` " "como ranura ``tp_doc``." -#: ../Doc/c-api/type.rst:192 +#: ../Doc/c-api/type.rst:222 msgid "Equivalent to ``PyType_FromModuleAndSpec(NULL, spec, bases)``." msgstr "Equivalente a ``PyType_FromModuleAndSpec(NULL, spec, bases)``." -#: ../Doc/c-api/type.rst:198 +#: ../Doc/c-api/type.rst:228 msgid "Equivalent to ``PyType_FromSpecWithBases(spec, NULL)``." msgstr "Equivalente a ``PyType_FromSpecWithBases(spec, NULL)``." -#: ../Doc/c-api/type.rst:202 +#: ../Doc/c-api/type.rst:232 msgid "Structure defining a type's behavior." msgstr "Estructura que define el comportamiento de un tipo." -#: ../Doc/c-api/type.rst:206 +#: ../Doc/c-api/type.rst:236 msgid "Name of the type, used to set :c:member:`PyTypeObject.tp_name`." msgstr "" "Nombre del tipo, utilizado para establecer :c:member:`PyTypeObject.tp_name`." -#: ../Doc/c-api/type.rst:211 +#: ../Doc/c-api/type.rst:241 msgid "" "Size of the instance in bytes, used to set :c:member:`PyTypeObject." "tp_basicsize` and :c:member:`PyTypeObject.tp_itemsize`." @@ -336,13 +374,13 @@ msgstr "" "Tamaño de la instancia en bytes, utilizado para establecer :c:member:" "`PyTypeObject.tp_basicsize` y :c:member:`PyTypeObject.tp_itemsize`." -#: ../Doc/c-api/type.rst:217 +#: ../Doc/c-api/type.rst:247 msgid "Type flags, used to set :c:member:`PyTypeObject.tp_flags`." msgstr "" "Banderas (*flags*) del tipo, que se usan para establecer :c:member:" "`PyTypeObject.tp_flags`." -#: ../Doc/c-api/type.rst:219 +#: ../Doc/c-api/type.rst:249 msgid "" "If the ``Py_TPFLAGS_HEAPTYPE`` flag is not set, :c:func:" "`PyType_FromSpecWithBases` sets it automatically." @@ -350,7 +388,7 @@ msgstr "" "Si el indicador ``Py_TPFLAGS_HEAPTYPE`` no está establecido, :c:func:" "`PyType_FromSpecWithBases` lo establece automáticamente." -#: ../Doc/c-api/type.rst:224 +#: ../Doc/c-api/type.rst:254 msgid "" "Array of :c:type:`PyType_Slot` structures. Terminated by the special slot " "value ``{0, NULL}``." @@ -358,7 +396,7 @@ msgstr "" "Arreglo de estructuras :c:type:`PyType_Slot`. Terminado por el valor de " "ranura especial ``{0, NULL}``." -#: ../Doc/c-api/type.rst:229 +#: ../Doc/c-api/type.rst:259 msgid "" "Structure defining optional functionality of a type, containing a slot ID " "and a value pointer." @@ -366,11 +404,11 @@ msgstr "" "Estructura que define la funcionalidad opcional de un tipo, que contiene una " "ranura ID y un puntero de valor." -#: ../Doc/c-api/type.rst:234 +#: ../Doc/c-api/type.rst:264 msgid "A slot ID." msgstr "Una ranura ID." -#: ../Doc/c-api/type.rst:236 +#: ../Doc/c-api/type.rst:266 msgid "" "Slot IDs are named like the field names of the structures :c:type:" "`PyTypeObject`, :c:type:`PyNumberMethods`, :c:type:`PySequenceMethods`, :c:" @@ -382,20 +420,20 @@ msgstr "" "`PySequenceMethods`, :c:type:`PyMappingMethods` y :c:type:`PyAsyncMethods` " "con un prefijo ``Py_`` agregado. Por ejemplo, use:" -#: ../Doc/c-api/type.rst:242 +#: ../Doc/c-api/type.rst:272 msgid "``Py_tp_dealloc`` to set :c:member:`PyTypeObject.tp_dealloc`" msgstr "``Py_tp_dealloc`` para establecer :c:member:`PyTypeObject.tp_dealloc`" -#: ../Doc/c-api/type.rst:243 +#: ../Doc/c-api/type.rst:273 msgid "``Py_nb_add`` to set :c:member:`PyNumberMethods.nb_add`" msgstr "``Py_nb_add`` para establecer :c:member:`PyNumberMethods.nb_add`" -#: ../Doc/c-api/type.rst:244 +#: ../Doc/c-api/type.rst:274 msgid "``Py_sq_length`` to set :c:member:`PySequenceMethods.sq_length`" msgstr "" "``Py_sq_length`` para establecer :c:member:`PySequenceMethods.sq_length`" -#: ../Doc/c-api/type.rst:246 +#: ../Doc/c-api/type.rst:276 msgid "" "The following fields cannot be set at all using :c:type:`PyType_Spec` and :c:" "type:`PyType_Slot`:" @@ -403,31 +441,31 @@ msgstr "" "Los siguientes campos no se pueden configurar en absoluto usando :c:type:" "`PyType_Spec` y :c:type:`PyType_Slot`:" -#: ../Doc/c-api/type.rst:249 +#: ../Doc/c-api/type.rst:279 msgid ":c:member:`~PyTypeObject.tp_dict`" msgstr ":c:member:`~PyTypeObject.tp_dict`" -#: ../Doc/c-api/type.rst:250 +#: ../Doc/c-api/type.rst:280 msgid ":c:member:`~PyTypeObject.tp_mro`" msgstr ":c:member:`~PyTypeObject.tp_mro`" -#: ../Doc/c-api/type.rst:251 +#: ../Doc/c-api/type.rst:281 msgid ":c:member:`~PyTypeObject.tp_cache`" msgstr ":c:member:`~PyTypeObject.tp_cache`" -#: ../Doc/c-api/type.rst:252 +#: ../Doc/c-api/type.rst:282 msgid ":c:member:`~PyTypeObject.tp_subclasses`" msgstr ":c:member:`~PyTypeObject.tp_subclasses`" -#: ../Doc/c-api/type.rst:253 +#: ../Doc/c-api/type.rst:283 msgid ":c:member:`~PyTypeObject.tp_weaklist`" msgstr ":c:member:`~PyTypeObject.tp_weaklist`" -#: ../Doc/c-api/type.rst:254 +#: ../Doc/c-api/type.rst:284 msgid ":c:member:`~PyTypeObject.tp_vectorcall`" msgstr ":c:member:`~PyTypeObject.tp_vectorcall`" -#: ../Doc/c-api/type.rst:255 +#: ../Doc/c-api/type.rst:285 msgid "" ":c:member:`~PyTypeObject.tp_weaklistoffset` (see :ref:`PyMemberDef " "`)" @@ -435,7 +473,7 @@ msgstr "" ":c:member:`~PyTypeObject.tp_weaklistoffset` (vea :ref:`PyMemberDef " "`)" -#: ../Doc/c-api/type.rst:257 +#: ../Doc/c-api/type.rst:287 msgid "" ":c:member:`~PyTypeObject.tp_dictoffset` (see :ref:`PyMemberDef `)" @@ -443,7 +481,7 @@ msgstr "" ":c:member:`~PyTypeObject.tp_dictoffset` (vea :ref:`PyMemberDef `)" -#: ../Doc/c-api/type.rst:259 +#: ../Doc/c-api/type.rst:289 msgid "" ":c:member:`~PyTypeObject.tp_vectorcall_offset` (see :ref:`PyMemberDef " "`)" @@ -451,23 +489,7 @@ msgstr "" ":c:member:`~PyTypeObject.tp_vectorcall_offset` (vea :ref:`PyMemberDef " "`)" -#: ../Doc/c-api/type.rst:262 -msgid "" -"The following fields cannot be set using :c:type:`PyType_Spec` and :c:type:" -"`PyType_Slot` under the limited API:" -msgstr "" -"Los siguientes campos no se pueden establecer usando :c:type:`PyType_Spec` " -"y :c:type:`PyType_Slot` cuando se utiliza la API limitada:" - -#: ../Doc/c-api/type.rst:265 -msgid ":c:member:`~PyBufferProcs.bf_getbuffer`" -msgstr ":c:member:`~PyBufferProcs.bf_getbuffer`" - -#: ../Doc/c-api/type.rst:266 -msgid ":c:member:`~PyBufferProcs.bf_releasebuffer`" -msgstr ":c:member:`~PyBufferProcs.bf_releasebuffer`" - -#: ../Doc/c-api/type.rst:268 +#: ../Doc/c-api/type.rst:292 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 :py:func:" @@ -477,13 +499,20 @@ msgstr "" "problemático en algunas plataformas. Para evitar problemas, use el argumento " "*bases* de :py:func:`PyType_FromSpecWithBases` en su lugar." -#: ../Doc/c-api/type.rst:275 -msgid "Slots in :c:type:`PyBufferProcs` in may be set in the unlimited API." +#: ../Doc/c-api/type.rst:299 +#, fuzzy +msgid "Slots in :c:type:`PyBufferProcs` may be set in the unlimited API." msgstr "" "Las ranuras en :c:type:`PyBufferProcs` se pueden configurar en la API " "ilimitada." -#: ../Doc/c-api/type.rst:279 +#: ../Doc/c-api/type.rst:301 +msgid "" +":c:member:`~PyBufferProcs.bf_getbuffer` and :c:member:`~PyBufferProcs." +"bf_releasebuffer` are now available under the limited API." +msgstr "" + +#: ../Doc/c-api/type.rst:308 msgid "" "The desired value of the slot. In most cases, this is a pointer to a " "function." @@ -491,6 +520,19 @@ msgstr "" "El valor deseado de la ranura. En la mayoría de los casos, este es un " "puntero a una función." -#: ../Doc/c-api/type.rst:282 +#: ../Doc/c-api/type.rst:311 msgid "Slots other than ``Py_tp_doc`` may not be ``NULL``." msgstr "Las ranuras que no sean ``Py_tp_doc`` pueden no ser ``NULL``." + +#~ msgid "" +#~ "The following fields cannot be set using :c:type:`PyType_Spec` and :c:" +#~ "type:`PyType_Slot` under the limited API:" +#~ msgstr "" +#~ "Los siguientes campos no se pueden establecer usando :c:type:" +#~ "`PyType_Spec` y :c:type:`PyType_Slot` cuando se utiliza la API limitada:" + +#~ msgid ":c:member:`~PyBufferProcs.bf_getbuffer`" +#~ msgstr ":c:member:`~PyBufferProcs.bf_getbuffer`" + +#~ msgid ":c:member:`~PyBufferProcs.bf_releasebuffer`" +#~ msgstr ":c:member:`~PyBufferProcs.bf_releasebuffer`" diff --git a/c-api/typehints.po b/c-api/typehints.po index a122d5faf2..b118013c8d 100644 --- a/c-api/typehints.po +++ b/c-api/typehints.po @@ -8,17 +8,16 @@ msgid "" msgstr "" "Project-Id-Version: Python en Español 3.10\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-11-16 22:14-0600\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Last-Translator: Erick G. Islas Osuna \n" -"Language-Team: \n" "Language: es\n" -"X-Generator: Poedit 3.0\n" +"Language-Team: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/c-api/typehints.rst:6 msgid "Objects for Type Hinting" @@ -35,12 +34,13 @@ msgstr "" "ref:`Union `. Solo ``GenericAlias`` es expuesto a C." #: ../Doc/c-api/typehints.rst:14 +#, fuzzy msgid "" "Create a :ref:`GenericAlias ` object. Equivalent to " "calling the Python class :class:`types.GenericAlias`. The *origin* and " "*args* arguments set the ``GenericAlias``\\ 's ``__origin__`` and " -"``__args__`` attributes respectively. *origin* should be a :c:type:" -"`PyTypeObject*`, and *args* can be a :c:type:`PyTupleObject*` or any " +"``__args__`` attributes respectively. *origin* should be a :c:expr:" +"`PyTypeObject*`, and *args* can be a :c:expr:`PyTupleObject*` or any " "``PyObject*``. If *args* passed is not a tuple, a 1-tuple is automatically " "constructed and ``__args__`` is set to ``(args,)``. Minimal checking is done " "for the arguments, so the function will succeed even if *origin* is not a " diff --git a/c-api/typeobj.po b/c-api/typeobj.po index e6ea5b6e46..db9ed6c7cb 100644 --- a/c-api/typeobj.po +++ b/c-api/typeobj.po @@ -10,30 +10,31 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-08-01 20:07+0200\n" "Last-Translator: Cristián Maureira-Fredes \n" -"Language-Team: python-doc-es\n" "Language: es\n" +"Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" -"Generated-By: Babel 2.9.1\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/c-api/typeobj.rst:6 msgid "Type Objects" msgstr "Objetos Tipo" #: ../Doc/c-api/typeobj.rst:8 +#, fuzzy msgid "" "Perhaps one of the most important structures of the Python object system is " "the structure that defines a new type: the :c:type:`PyTypeObject` " -"structure. Type objects can be handled using any of the :c:func:`PyObject_" -"\\*` or :c:func:`PyType_\\*` functions, but do not offer much that's " -"interesting to most Python applications. These objects are fundamental to " -"how objects behave, so they are very important to the interpreter itself and " -"to any extension module that implements new types." +"structure. Type objects can be handled using any of the ``PyObject_*`` or " +"``PyType_*`` functions, but do not offer much that's interesting to most " +"Python applications. These objects are fundamental to how objects behave, so " +"they are very important to the interpreter itself and to any extension " +"module that implements new types." msgstr "" "Quizás una de las estructuras más importantes del sistema de objetos Python " "es la estructura que define un nuevo tipo: la estructura :c:type:" @@ -150,8 +151,9 @@ msgstr ":c:member:`~PyTypeObject.tp_basicsize`" #: ../Doc/c-api/typeobj.rst:48 ../Doc/c-api/typeobj.rst:52 #: ../Doc/c-api/typeobj.rst:99 ../Doc/c-api/typeobj.rst:120 #: ../Doc/c-api/typeobj.rst:408 -msgid "Py_ssize_t" -msgstr "Py_ssize_t" +#, fuzzy +msgid ":c:type:`Py_ssize_t`" +msgstr ":c:type:`ssizeargfunc`" #: ../Doc/c-api/typeobj.rst:48 msgid ":c:member:`~PyTypeObject.tp_itemsize`" @@ -597,8 +599,8 @@ msgid "" msgstr "" "Un nombre de ranura entre paréntesis indica que está (efectivamente) en " "desuso. Los nombres entre paréntesis angulares deben tratarse como de solo " -"lectura. Los nombres entre corchetes son solo para uso interno. \"" -"\" (como prefijo) significa que el campo es obligatorio (no debe ser " +"lectura. Los nombres entre corchetes son solo para uso interno. " +"\"\" (como prefijo) significa que el campo es obligatorio (no debe ser " "``NULL``)." #: ../Doc/c-api/typeobj.rst:156 @@ -1173,13 +1175,13 @@ msgid "PyObject Slots" msgstr "Ranuras (*Slots*) ``PyObject``" #: ../Doc/c-api/typeobj.rst:478 +#, fuzzy msgid "" "The type object structure extends the :c:type:`PyVarObject` structure. The :" -"attr:`ob_size` field is used for dynamic types (created by :func:" -"`type_new`, usually called from a class statement). Note that :c:data:" -"`PyType_Type` (the metatype) initializes :c:member:`~PyTypeObject." -"tp_itemsize`, which means that its instances (i.e. type objects) *must* have " -"the :attr:`ob_size` field." +"attr:`ob_size` field is used for dynamic types (created by :func:`type_new`, " +"usually called from a class statement). Note that :c:data:`PyType_Type` (the " +"metatype) initializes :c:member:`~PyTypeObject.tp_itemsize`, which means " +"that its instances (i.e. type objects) *must* have the :attr:`ob_size` field." msgstr "" "La estructura de objeto de tipo extiende la estructura :c:type:" "`PyVarObject`. El campo :attr:`ob_size` se usa para tipos dinámicos (creado " @@ -1207,34 +1209,34 @@ msgstr "" #: ../Doc/c-api/typeobj.rst:494 ../Doc/c-api/typeobj.rst:517 #: ../Doc/c-api/typeobj.rst:539 ../Doc/c-api/typeobj.rst:553 #: ../Doc/c-api/typeobj.rst:597 ../Doc/c-api/typeobj.rst:640 -#: ../Doc/c-api/typeobj.rst:686 ../Doc/c-api/typeobj.rst:730 -#: ../Doc/c-api/typeobj.rst:749 ../Doc/c-api/typeobj.rst:766 -#: ../Doc/c-api/typeobj.rst:784 ../Doc/c-api/typeobj.rst:808 -#: ../Doc/c-api/typeobj.rst:825 ../Doc/c-api/typeobj.rst:837 -#: ../Doc/c-api/typeobj.rst:849 ../Doc/c-api/typeobj.rst:882 -#: ../Doc/c-api/typeobj.rst:900 ../Doc/c-api/typeobj.rst:920 -#: ../Doc/c-api/typeobj.rst:941 ../Doc/c-api/typeobj.rst:967 -#: ../Doc/c-api/typeobj.rst:986 ../Doc/c-api/typeobj.rst:1002 -#: ../Doc/c-api/typeobj.rst:1039 ../Doc/c-api/typeobj.rst:1050 -#: ../Doc/c-api/typeobj.rst:1060 ../Doc/c-api/typeobj.rst:1070 -#: ../Doc/c-api/typeobj.rst:1084 ../Doc/c-api/typeobj.rst:1102 -#: ../Doc/c-api/typeobj.rst:1125 ../Doc/c-api/typeobj.rst:1172 -#: ../Doc/c-api/typeobj.rst:1187 ../Doc/c-api/typeobj.rst:1206 -#: ../Doc/c-api/typeobj.rst:1225 ../Doc/c-api/typeobj.rst:1247 -#: ../Doc/c-api/typeobj.rst:1263 ../Doc/c-api/typeobj.rst:1331 -#: ../Doc/c-api/typeobj.rst:1398 ../Doc/c-api/typeobj.rst:1457 -#: ../Doc/c-api/typeobj.rst:1487 ../Doc/c-api/typeobj.rst:1519 -#: ../Doc/c-api/typeobj.rst:1542 ../Doc/c-api/typeobj.rst:1555 -#: ../Doc/c-api/typeobj.rst:1570 ../Doc/c-api/typeobj.rst:1584 -#: ../Doc/c-api/typeobj.rst:1614 ../Doc/c-api/typeobj.rst:1634 -#: ../Doc/c-api/typeobj.rst:1660 ../Doc/c-api/typeobj.rst:1678 +#: ../Doc/c-api/typeobj.rst:698 ../Doc/c-api/typeobj.rst:736 +#: ../Doc/c-api/typeobj.rst:756 ../Doc/c-api/typeobj.rst:773 +#: ../Doc/c-api/typeobj.rst:791 ../Doc/c-api/typeobj.rst:815 +#: ../Doc/c-api/typeobj.rst:832 ../Doc/c-api/typeobj.rst:844 +#: ../Doc/c-api/typeobj.rst:856 ../Doc/c-api/typeobj.rst:889 +#: ../Doc/c-api/typeobj.rst:907 ../Doc/c-api/typeobj.rst:927 +#: ../Doc/c-api/typeobj.rst:948 ../Doc/c-api/typeobj.rst:974 +#: ../Doc/c-api/typeobj.rst:993 ../Doc/c-api/typeobj.rst:1009 +#: ../Doc/c-api/typeobj.rst:1046 ../Doc/c-api/typeobj.rst:1057 +#: ../Doc/c-api/typeobj.rst:1067 ../Doc/c-api/typeobj.rst:1077 +#: ../Doc/c-api/typeobj.rst:1091 ../Doc/c-api/typeobj.rst:1109 +#: ../Doc/c-api/typeobj.rst:1132 ../Doc/c-api/typeobj.rst:1179 +#: ../Doc/c-api/typeobj.rst:1194 ../Doc/c-api/typeobj.rst:1213 +#: ../Doc/c-api/typeobj.rst:1232 ../Doc/c-api/typeobj.rst:1254 +#: ../Doc/c-api/typeobj.rst:1270 ../Doc/c-api/typeobj.rst:1338 +#: ../Doc/c-api/typeobj.rst:1405 ../Doc/c-api/typeobj.rst:1464 +#: ../Doc/c-api/typeobj.rst:1494 ../Doc/c-api/typeobj.rst:1526 +#: ../Doc/c-api/typeobj.rst:1549 ../Doc/c-api/typeobj.rst:1562 +#: ../Doc/c-api/typeobj.rst:1577 ../Doc/c-api/typeobj.rst:1591 +#: ../Doc/c-api/typeobj.rst:1621 ../Doc/c-api/typeobj.rst:1641 +#: ../Doc/c-api/typeobj.rst:1667 ../Doc/c-api/typeobj.rst:1685 #: ../Doc/c-api/typeobj.rst:1718 ../Doc/c-api/typeobj.rst:1769 #: ../Doc/c-api/typeobj.rst:1786 ../Doc/c-api/typeobj.rst:1827 #: ../Doc/c-api/typeobj.rst:1849 ../Doc/c-api/typeobj.rst:1881 #: ../Doc/c-api/typeobj.rst:1898 ../Doc/c-api/typeobj.rst:1909 #: ../Doc/c-api/typeobj.rst:1919 ../Doc/c-api/typeobj.rst:1928 #: ../Doc/c-api/typeobj.rst:1938 ../Doc/c-api/typeobj.rst:1952 -#: ../Doc/c-api/typeobj.rst:1990 ../Doc/c-api/typeobj.rst:2007 +#: ../Doc/c-api/typeobj.rst:1998 ../Doc/c-api/typeobj.rst:2021 msgid "**Inheritance:**" msgstr "**Herencia:**" @@ -1276,12 +1278,12 @@ msgstr "" "inicializa en el campo :attr:`ob_type` de la clase base. :c:func:" "`PyType_Ready` no cambiará este campo si no es cero." -#: ../Doc/c-api/typeobj.rst:519 ../Doc/c-api/typeobj.rst:688 -#: ../Doc/c-api/typeobj.rst:810 ../Doc/c-api/typeobj.rst:902 -#: ../Doc/c-api/typeobj.rst:922 ../Doc/c-api/typeobj.rst:1521 -#: ../Doc/c-api/typeobj.rst:1544 ../Doc/c-api/typeobj.rst:1662 -#: ../Doc/c-api/typeobj.rst:1680 ../Doc/c-api/typeobj.rst:1771 -#: ../Doc/c-api/typeobj.rst:1883 ../Doc/c-api/typeobj.rst:1992 +#: ../Doc/c-api/typeobj.rst:519 ../Doc/c-api/typeobj.rst:700 +#: ../Doc/c-api/typeobj.rst:817 ../Doc/c-api/typeobj.rst:909 +#: ../Doc/c-api/typeobj.rst:929 ../Doc/c-api/typeobj.rst:1528 +#: ../Doc/c-api/typeobj.rst:1551 ../Doc/c-api/typeobj.rst:1669 +#: ../Doc/c-api/typeobj.rst:1687 ../Doc/c-api/typeobj.rst:1771 +#: ../Doc/c-api/typeobj.rst:1883 ../Doc/c-api/typeobj.rst:2000 msgid "This field is inherited by subtypes." msgstr "Este campo es heredado por subtipos." @@ -1295,12 +1297,13 @@ msgstr "" "with-trace-refs>`)." #: ../Doc/c-api/typeobj.rst:528 +#, fuzzy msgid "" "Their initialization to ``NULL`` is taken care of by the " "``PyObject_HEAD_INIT`` macro. For :ref:`statically allocated objects " "`, these fields always remain ``NULL``. For :ref:`dynamically " "allocated objects `, these two fields are used to link the " -"object into a doubly-linked list of *all* live objects on the heap." +"object into a doubly linked list of *all* live objects on the heap." msgstr "" "La macro ``PyObject_HEAD_INIT`` se encarga de su inicialización a ``NULL``. " "Para :ref:`objetos asignados estáticamente `, estos campos " @@ -1576,6 +1579,13 @@ msgstr "" #: ../Doc/c-api/typeobj.rst:671 msgid "" +"If the type supports garbage collection (has the :const:`Py_TPFLAGS_HAVE_GC` " +"flag bit set), the destructor should call :c:func:`PyObject_GC_UnTrack` " +"before clearing any member fields." +msgstr "" + +#: ../Doc/c-api/typeobj.rst:683 +msgid "" "Finally, if the type is heap allocated (:const:`Py_TPFLAGS_HEAPTYPE`), the " "deallocator should decrement the reference count for its type object after " "calling the type deallocator. In order to avoid dangling pointers, the " @@ -1586,7 +1596,7 @@ msgstr "" "referencia para su objeto tipo después de llamar al desasignador del tipo. " "Para evitar punteros colgantes, la forma recomendada de lograr esto es:" -#: ../Doc/c-api/typeobj.rst:693 +#: ../Doc/c-api/typeobj.rst:705 msgid "" "An optional offset to a per-instance function that implements calling the " "object using the :ref:`vectorcall protocol `, a more efficient " @@ -1596,7 +1606,7 @@ msgstr "" "llamada al objeto usando :ref:`vectorcall protocol `, una " "alternativa más eficiente del simple :c:member:`~PyTypeObject.tp_call`." -#: ../Doc/c-api/typeobj.rst:698 +#: ../Doc/c-api/typeobj.rst:710 msgid "" "This field is only used if the flag :const:`Py_TPFLAGS_HAVE_VECTORCALL` is " "set. If so, this must be a positive integer containing the offset in the " @@ -1607,7 +1617,7 @@ msgstr "" "contenga el desplazamiento en la instancia de un puntero :c:type:" "`vectorcallfunc`." -#: ../Doc/c-api/typeobj.rst:702 +#: ../Doc/c-api/typeobj.rst:714 msgid "" "The *vectorcallfunc* pointer may be ``NULL``, in which case the instance " "behaves as if :const:`Py_TPFLAGS_HAVE_VECTORCALL` was not set: calling the " @@ -1618,7 +1628,7 @@ msgstr "" "configurado: llamar a la instancia vuelve a :c:member:`~PyTypeObject." "tp_call`." -#: ../Doc/c-api/typeobj.rst:706 +#: ../Doc/c-api/typeobj.rst:718 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 " @@ -1630,29 +1640,20 @@ msgstr "" "comportamiento sea coherente con la función *vectorcallfunc*. Esto se puede " "hacer configurando *tp_call* en :c:func:`PyVectorcall_Call`." -#: ../Doc/c-api/typeobj.rst:713 +#: ../Doc/c-api/typeobj.rst:725 +#, fuzzy msgid "" -"It is not recommended for :ref:`heap types ` to implement the " -"vectorcall protocol. When a user sets :attr:`__call__` in Python code, only " -"*tp_call* is updated, likely making it inconsistent with the vectorcall " -"function." +"It is not recommended for :ref:`mutable heap types ` to " +"implement the vectorcall protocol. When a user sets :attr:`__call__` in " +"Python code, only *tp_call* is updated, likely making it inconsistent with " +"the vectorcall function." msgstr "" "No se recomienda para :ref:`tipos heap ` para implementar el " "protocolo vectorcall. Cuando un usuario establece :attr:`__call__` en código " "Python, solo se actualiza *tp_call*, lo que probablemente lo haga " "inconsistente con la función vectorcall." -#: ../Doc/c-api/typeobj.rst:720 -msgid "" -"The semantics of the ``tp_vectorcall_offset`` slot are provisional and " -"expected to be finalized in Python 3.9. If you use vectorcall, plan for " -"updating your code for Python 3.9." -msgstr "" -"La semántica de la ranura ``tp_vectorcall_offset`` es provisional y se " -"espera que finalice en Python 3.9. Si usa *vectorcall*, planifique " -"actualizar su código para Python 3.9." - -#: ../Doc/c-api/typeobj.rst:726 +#: ../Doc/c-api/typeobj.rst:732 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." @@ -1660,13 +1661,15 @@ msgstr "" "Antes de la versión 3.8, este slot se llamaba ``tp_print``. En Python 2.x, " "se usó para imprimir en un archivo. En Python 3.0 a 3.7, no se usó." -#: ../Doc/c-api/typeobj.rst:732 +#: ../Doc/c-api/typeobj.rst:738 +#, fuzzy msgid "" "This field is always inherited. However, the :const:" "`Py_TPFLAGS_HAVE_VECTORCALL` flag is not always inherited. If it's not, then " "the subclass won't use :ref:`vectorcall `, except when :c:func:" -"`PyVectorcall_Call` is explicitly called. This is in particular the case " -"for :ref:`heap types ` (including subclasses defined in Python)." +"`PyVectorcall_Call` is explicitly called. This is in particular the case for " +"types without the :const:`Py_TPFLAGS_IMMUTABLETYPE` flag set (including " +"subclasses defined in Python)." msgstr "" "Este campo siempre se hereda. Sin embargo, la bandera :const:" "`Py_TPFLAGS_HAVE_VECTORCALL` no siempre se hereda. Si no es así, la subclase " @@ -1675,13 +1678,13 @@ msgstr "" "de :ref:`tipos heap ` (incluidas las subclases definidas en " "Python)." -#: ../Doc/c-api/typeobj.rst:743 +#: ../Doc/c-api/typeobj.rst:750 msgid "An optional pointer to the get-attribute-string function." msgstr "" -"Un puntero opcional a la función \"obtener atributo cadena de caracteres" -"\" (*get-attribute-string*)." +"Un puntero opcional a la función \"obtener atributo cadena de " +"caracteres\" (*get-attribute-string*)." -#: ../Doc/c-api/typeobj.rst:745 +#: ../Doc/c-api/typeobj.rst:752 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, " @@ -1693,11 +1696,11 @@ msgstr "" "tomando una cadena de caracteres C en lugar de un objeto de cadena Python " "para dar el nombre del atributo." -#: ../Doc/c-api/typeobj.rst:751 ../Doc/c-api/typeobj.rst:943 +#: ../Doc/c-api/typeobj.rst:758 ../Doc/c-api/typeobj.rst:950 msgid "Group: :attr:`tp_getattr`, :attr:`tp_getattro`" msgstr "Grupo: :attr:`tp_getattr`, :attr:`tp_getattro`" -#: ../Doc/c-api/typeobj.rst:753 +#: ../Doc/c-api/typeobj.rst:760 msgid "" "This field is inherited by subtypes together with :c:member:`~PyTypeObject." "tp_getattro`: a subtype inherits both :c:member:`~PyTypeObject.tp_getattr` " @@ -1711,12 +1714,12 @@ msgstr "" "subtipos :c:member:`~PyTypeObject.tp_getattr` y :c:member:`~PyTypeObject." "tp_getattro` son ambos ``NULL``." -#: ../Doc/c-api/typeobj.rst:760 ../Doc/c-api/typeobj.rst:956 +#: ../Doc/c-api/typeobj.rst:767 ../Doc/c-api/typeobj.rst:963 msgid "" "An optional pointer to the function for setting and deleting attributes." msgstr "Un puntero opcional a la función para configurar y eliminar atributos." -#: ../Doc/c-api/typeobj.rst:762 +#: ../Doc/c-api/typeobj.rst:769 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, " @@ -1728,11 +1731,11 @@ msgstr "" "tomando una cadena de caracteres C en lugar de un objeto de cadena Python " "para dar el nombre del atributo." -#: ../Doc/c-api/typeobj.rst:768 ../Doc/c-api/typeobj.rst:969 +#: ../Doc/c-api/typeobj.rst:775 ../Doc/c-api/typeobj.rst:976 msgid "Group: :attr:`tp_setattr`, :attr:`tp_setattro`" msgstr "Grupo: :attr:`tp_setattr`, :attr:`tp_setattro`" -#: ../Doc/c-api/typeobj.rst:770 +#: ../Doc/c-api/typeobj.rst:777 msgid "" "This field is inherited by subtypes together with :c:member:`~PyTypeObject." "tp_setattro`: a subtype inherits both :c:member:`~PyTypeObject.tp_setattr` " @@ -1746,7 +1749,7 @@ msgstr "" "subtipos :c:member:`~PyTypeObject.tp_setattr` y :c:member:`~PyTypeObject." "tp_setattro` son ambos ``NULL``." -#: ../Doc/c-api/typeobj.rst:777 +#: ../Doc/c-api/typeobj.rst:784 msgid "" "Pointer to an additional structure that contains fields relevant only to " "objects which implement :term:`awaitable` and :term:`asynchronous iterator` " @@ -1757,11 +1760,11 @@ msgstr "" "y \"iterador asíncrono\" (:term:`asynchronous iterator`) en el nivel C. Ver :" "ref:`async-structs` para más detalles." -#: ../Doc/c-api/typeobj.rst:781 +#: ../Doc/c-api/typeobj.rst:788 msgid "Formerly known as ``tp_compare`` and ``tp_reserved``." msgstr "Anteriormente conocidos como ``tp_compare`` y ``tp_reserved``." -#: ../Doc/c-api/typeobj.rst:786 +#: ../Doc/c-api/typeobj.rst:793 msgid "" "The :c:member:`~PyTypeObject.tp_as_async` field is not inherited, but the " "contained fields are inherited individually." @@ -1769,7 +1772,7 @@ msgstr "" "El campo :c:member:`~PyTypeObject.tp_as_async` no se hereda, pero los campos " "contenidos se heredan individualmente." -#: ../Doc/c-api/typeobj.rst:794 +#: ../Doc/c-api/typeobj.rst:801 msgid "" "An optional pointer to a function that implements the built-in function :" "func:`repr`." @@ -1777,11 +1780,11 @@ msgstr "" "Un puntero opcional a una función que implementa la función incorporada :" "func:`repr`." -#: ../Doc/c-api/typeobj.rst:797 +#: ../Doc/c-api/typeobj.rst:804 msgid "The signature is the same as for :c:func:`PyObject_Repr`::" msgstr "La firma es la misma que para :c:func:`PyObject_Repr`::" -#: ../Doc/c-api/typeobj.rst:801 +#: ../Doc/c-api/typeobj.rst:808 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 " @@ -1796,17 +1799,17 @@ msgstr "" "termine con ``'>'`` desde la cual se puede deducir tanto el tipo como el " "valor del objeto." -#: ../Doc/c-api/typeobj.rst:812 ../Doc/c-api/typeobj.rst:924 -#: ../Doc/c-api/typeobj.rst:949 ../Doc/c-api/typeobj.rst:975 -#: ../Doc/c-api/typeobj.rst:1017 ../Doc/c-api/typeobj.rst:1466 -#: ../Doc/c-api/typeobj.rst:1618 ../Doc/c-api/typeobj.rst:1639 +#: ../Doc/c-api/typeobj.rst:819 ../Doc/c-api/typeobj.rst:931 +#: ../Doc/c-api/typeobj.rst:956 ../Doc/c-api/typeobj.rst:982 +#: ../Doc/c-api/typeobj.rst:1024 ../Doc/c-api/typeobj.rst:1473 +#: ../Doc/c-api/typeobj.rst:1625 ../Doc/c-api/typeobj.rst:1646 #: ../Doc/c-api/typeobj.rst:1737 ../Doc/c-api/typeobj.rst:1773 #: ../Doc/c-api/typeobj.rst:1791 ../Doc/c-api/typeobj.rst:1833 #: ../Doc/c-api/typeobj.rst:1854 ../Doc/c-api/typeobj.rst:1885 msgid "**Default:**" msgstr "**Por defecto:**" -#: ../Doc/c-api/typeobj.rst:814 +#: ../Doc/c-api/typeobj.rst:821 #, python-format msgid "" "When this field is not set, a string of the form ``<%s object at %p>`` is " @@ -1817,7 +1820,7 @@ msgstr "" "de la forma ``<%s object at %p>``, donde ``%s`` se reemplaza por el nombre " "del tipo y ``%p`` por dirección de memoria del objeto." -#: ../Doc/c-api/typeobj.rst:821 +#: ../Doc/c-api/typeobj.rst:828 msgid "" "Pointer to an additional structure that contains fields relevant only to " "objects which implement the number protocol. These fields are documented " @@ -1827,7 +1830,7 @@ msgstr "" "objetos que implementan el protocolo numérico. Estos campos están " "documentados en :ref:`number-structs`." -#: ../Doc/c-api/typeobj.rst:827 +#: ../Doc/c-api/typeobj.rst:834 msgid "" "The :c:member:`~PyTypeObject.tp_as_number` field is not inherited, but the " "contained fields are inherited individually." @@ -1835,7 +1838,7 @@ msgstr "" "El campo :c:member:`~PyTypeObject.tp_as_number` no se hereda, pero los " "campos contenidos se heredan individualmente." -#: ../Doc/c-api/typeobj.rst:833 +#: ../Doc/c-api/typeobj.rst:840 msgid "" "Pointer to an additional structure that contains fields relevant only to " "objects which implement the sequence protocol. These fields are documented " @@ -1845,7 +1848,7 @@ msgstr "" "objetos que implementan el protocolo de secuencia. Estos campos están " "documentados en :ref:`estructuras de secuencia `." -#: ../Doc/c-api/typeobj.rst:839 +#: ../Doc/c-api/typeobj.rst:846 msgid "" "The :c:member:`~PyTypeObject.tp_as_sequence` field is not inherited, but the " "contained fields are inherited individually." @@ -1853,7 +1856,7 @@ msgstr "" "El campo :c:member:`~PyTypeObject.tp_as_sequence` no se hereda, pero los " "campos contenidos se heredan individualmente." -#: ../Doc/c-api/typeobj.rst:845 +#: ../Doc/c-api/typeobj.rst:852 msgid "" "Pointer to an additional structure that contains fields relevant only to " "objects which implement the mapping protocol. These fields are documented " @@ -1863,7 +1866,7 @@ msgstr "" "objetos que implementan el protocolo de mapeo. Estos campos están " "documentados en :ref:`mapping-structs`." -#: ../Doc/c-api/typeobj.rst:851 +#: ../Doc/c-api/typeobj.rst:858 msgid "" "The :c:member:`~PyTypeObject.tp_as_mapping` field is not inherited, but the " "contained fields are inherited individually." @@ -1871,7 +1874,7 @@ msgstr "" "El campo :c:member:`~PyTypeObject.tp_as_mapping` no se hereda, pero los " "campos contenidos se heredan individualmente." -#: ../Doc/c-api/typeobj.rst:859 +#: ../Doc/c-api/typeobj.rst:866 msgid "" "An optional pointer to a function that implements the built-in function :" "func:`hash`." @@ -1879,11 +1882,11 @@ msgstr "" "Un puntero opcional a una función que implementa la función incorporada :" "func:`hash`." -#: ../Doc/c-api/typeobj.rst:862 +#: ../Doc/c-api/typeobj.rst:869 msgid "The signature is the same as for :c:func:`PyObject_Hash`::" msgstr "La firma es la misma que para :c:func:`PyObject_Hash`::" -#: ../Doc/c-api/typeobj.rst:866 +#: ../Doc/c-api/typeobj.rst:873 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 " @@ -1893,7 +1896,7 @@ msgstr "" "se produce un error durante el cálculo del valor *hash*, la función debe " "establecer una excepción y retornar ``-1``." -#: ../Doc/c-api/typeobj.rst:870 +#: ../Doc/c-api/typeobj.rst:877 msgid "" "When this field is not set (*and* :attr:`tp_richcompare` is not set), an " "attempt to take the hash of the object raises :exc:`TypeError`. This is the " @@ -1904,7 +1907,7 @@ msgstr "" "*hash* del objeto. Esto es lo mismo que establecerlo en :c:func:" "`PyObject_HashNotImplemented`." -#: ../Doc/c-api/typeobj.rst:874 +#: ../Doc/c-api/typeobj.rst:881 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 " @@ -1923,11 +1926,11 @@ msgstr "" "el nivel de Python dará como resultado que la ranura ``tp_hash`` se " "establezca en :c:func:`PyObject_HashNotImplemented`." -#: ../Doc/c-api/typeobj.rst:884 ../Doc/c-api/typeobj.rst:1459 +#: ../Doc/c-api/typeobj.rst:891 ../Doc/c-api/typeobj.rst:1466 msgid "Group: :attr:`tp_hash`, :attr:`tp_richcompare`" msgstr "Grupo: :attr:`tp_hash`, :attr:`tp_richcompare`" -#: ../Doc/c-api/typeobj.rst:886 +#: ../Doc/c-api/typeobj.rst:893 msgid "" "This field is inherited by subtypes together with :c:member:`~PyTypeObject." "tp_richcompare`: a subtype inherits both of :c:member:`~PyTypeObject." @@ -1941,7 +1944,7 @@ msgstr "" "member:`~PyTypeObject.tp_richcompare` y :c:member:`~PyTypeObject.tp_hash` " "son ambos ``NULL``." -#: ../Doc/c-api/typeobj.rst:894 +#: ../Doc/c-api/typeobj.rst:901 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 " @@ -1951,7 +1954,7 @@ msgstr "" "debería ser ``NULL`` si el objeto no es invocable. La firma es la misma que " "para :c:func:`PyObject_Call`::" -#: ../Doc/c-api/typeobj.rst:907 +#: ../Doc/c-api/typeobj.rst:914 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 " @@ -1965,11 +1968,11 @@ msgstr "" "`PyObject_Str` para hacer el trabajo real, y :c:func:`PyObject_Str` llamará " "a este controlador.)" -#: ../Doc/c-api/typeobj.rst:912 +#: ../Doc/c-api/typeobj.rst:919 msgid "The signature is the same as for :c:func:`PyObject_Str`::" msgstr "La firma es la misma que para :c:func:`PyObject_Str`::" -#: ../Doc/c-api/typeobj.rst:916 +#: ../Doc/c-api/typeobj.rst:923 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 " @@ -1981,7 +1984,7 @@ msgstr "" "representación que será utilizada, entre otras cosas, por la función :func:" "`print`." -#: ../Doc/c-api/typeobj.rst:926 +#: ../Doc/c-api/typeobj.rst:933 msgid "" "When this field is not set, :c:func:`PyObject_Repr` is called to return a " "string representation." @@ -1989,16 +1992,16 @@ msgstr "" "Cuando este campo no está configurado, se llama a :c:func:`PyObject_Repr` " "para retornar una representación de cadena de caracteres." -#: ../Doc/c-api/typeobj.rst:932 +#: ../Doc/c-api/typeobj.rst:939 msgid "An optional pointer to the get-attribute function." msgstr "" "Un puntero opcional a la función \"obtener atributo\" (*get-attribute*)." -#: ../Doc/c-api/typeobj.rst:934 +#: ../Doc/c-api/typeobj.rst:941 msgid "The signature is the same as for :c:func:`PyObject_GetAttr`::" msgstr "La firma es la misma que para :c:func:`PyObject_GetAttr`::" -#: ../Doc/c-api/typeobj.rst:938 +#: ../Doc/c-api/typeobj.rst:945 msgid "" "It is usually convenient to set this field to :c:func:" "`PyObject_GenericGetAttr`, which implements the normal way of looking for " @@ -2008,7 +2011,7 @@ msgstr "" "`PyObject_GenericGetAttr`, que implementa la forma normal de buscar " "atributos de objeto." -#: ../Doc/c-api/typeobj.rst:945 +#: ../Doc/c-api/typeobj.rst:952 msgid "" "This field is inherited by subtypes together with :c:member:`~PyTypeObject." "tp_getattr`: a subtype inherits both :c:member:`~PyTypeObject.tp_getattr` " @@ -2022,15 +2025,15 @@ msgstr "" "c:member:`~PyTypeObject.tp_getattr` y :c:member:`~PyTypeObject.tp_getattro` " "son ambos ``NULL``." -#: ../Doc/c-api/typeobj.rst:951 +#: ../Doc/c-api/typeobj.rst:958 msgid ":c:type:`PyBaseObject_Type` uses :c:func:`PyObject_GenericGetAttr`." msgstr ":c:type:`PyBaseObject_Type` usa :c:func:`PyObject_GenericGetAttr`." -#: ../Doc/c-api/typeobj.rst:958 +#: ../Doc/c-api/typeobj.rst:965 msgid "The signature is the same as for :c:func:`PyObject_SetAttr`::" msgstr "La firma es la misma que para :c:func:`PyObject_SetAttr`::" -#: ../Doc/c-api/typeobj.rst:962 +#: ../Doc/c-api/typeobj.rst:969 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:" @@ -2042,7 +2045,7 @@ msgstr "" "en :c:func:`PyObject_GenericSetAttr`, que implementa la forma normal de " "establecer los atributos del objeto." -#: ../Doc/c-api/typeobj.rst:971 +#: ../Doc/c-api/typeobj.rst:978 msgid "" "This field is inherited by subtypes together with :c:member:`~PyTypeObject." "tp_setattr`: a subtype inherits both :c:member:`~PyTypeObject.tp_setattr` " @@ -2056,11 +2059,11 @@ msgstr "" "c:member:`~PyTypeObject.tp_setattr` y :c:member:`~PyTypeObject.tp_setattro` " "son ambos ``NULL``." -#: ../Doc/c-api/typeobj.rst:977 +#: ../Doc/c-api/typeobj.rst:984 msgid ":c:type:`PyBaseObject_Type` uses :c:func:`PyObject_GenericSetAttr`." msgstr ":c:type:`PyBaseObject_Type` usa :c:func:`PyObject_GenericSetAttr`." -#: ../Doc/c-api/typeobj.rst:982 +#: ../Doc/c-api/typeobj.rst:989 msgid "" "Pointer to an additional structure that contains fields relevant only to " "objects which implement the buffer interface. These fields are documented " @@ -2070,7 +2073,7 @@ msgstr "" "objetos que implementan la interfaz del búfer. Estos campos están " "documentados en :ref:`buffer-structs`." -#: ../Doc/c-api/typeobj.rst:988 +#: ../Doc/c-api/typeobj.rst:995 msgid "" "The :c:member:`~PyTypeObject.tp_as_buffer` field is not inherited, but the " "contained fields are inherited individually." @@ -2078,7 +2081,7 @@ msgstr "" "El campo :c:member:`~PyTypeObject.tp_as_buffer` no se hereda, pero los " "campos contenidos se heredan individualmente." -#: ../Doc/c-api/typeobj.rst:994 +#: ../Doc/c-api/typeobj.rst:1001 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 " @@ -2099,7 +2102,7 @@ msgstr "" "bandera está claro, no se debe acceder a los campos de tipo que protege y se " "debe considerar que tienen un valor cero o ``NULL``." -#: ../Doc/c-api/typeobj.rst:1004 +#: ../Doc/c-api/typeobj.rst:1011 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 " @@ -2126,18 +2129,18 @@ msgstr "" "member:`~PyTypeObject.tp_clear` en el subtipo existen y tienen valores " "``NULL``." -#: ../Doc/c-api/typeobj.rst:1019 +#: ../Doc/c-api/typeobj.rst:1026 msgid "" ":c:type:`PyBaseObject_Type` uses ``Py_TPFLAGS_DEFAULT | " "Py_TPFLAGS_BASETYPE``." msgstr "" ":c:type:`PyBaseObject_Type` usa ``Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE``." -#: ../Doc/c-api/typeobj.rst:1022 +#: ../Doc/c-api/typeobj.rst:1029 msgid "**Bit Masks:**" msgstr "**Máscaras de bits:**" -#: ../Doc/c-api/typeobj.rst:1024 +#: ../Doc/c-api/typeobj.rst:1031 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." @@ -2151,7 +2154,7 @@ msgstr "" "un tipo y un valor de banderas, *tp* y *f*, y comprueba si ``tp->tp_flags & " "f`` no es cero." -#: ../Doc/c-api/typeobj.rst:1031 +#: ../Doc/c-api/typeobj.rst:1038 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 " @@ -2169,13 +2172,13 @@ msgstr "" "aplica a instancias de subtipos; solo el tipo al que hace referencia el " "*ob_type* de la instancia obtiene INCREF o DECREF)." -#: ../Doc/c-api/typeobj.rst:1041 ../Doc/c-api/typeobj.rst:1052 -#: ../Doc/c-api/typeobj.rst:1062 ../Doc/c-api/typeobj.rst:1072 -#: ../Doc/c-api/typeobj.rst:1104 +#: ../Doc/c-api/typeobj.rst:1048 ../Doc/c-api/typeobj.rst:1059 +#: ../Doc/c-api/typeobj.rst:1069 ../Doc/c-api/typeobj.rst:1079 +#: ../Doc/c-api/typeobj.rst:1111 msgid "???" msgstr "???" -#: ../Doc/c-api/typeobj.rst:1046 +#: ../Doc/c-api/typeobj.rst:1053 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\" " @@ -2185,7 +2188,7 @@ msgstr "" "tipo. Si este bit es claro, el tipo no puede subtiparse (similar a una clase " "\"final\" en Java)." -#: ../Doc/c-api/typeobj.rst:1057 +#: ../Doc/c-api/typeobj.rst:1064 msgid "" "This bit is set when the type object has been fully initialized by :c:func:" "`PyType_Ready`." @@ -2193,7 +2196,7 @@ msgstr "" "Este bit se establece cuando el objeto tipo ha sido completamente " "inicializado por :c:func:`PyType_Ready`." -#: ../Doc/c-api/typeobj.rst:1067 +#: ../Doc/c-api/typeobj.rst:1074 msgid "" "This bit is set while :c:func:`PyType_Ready` is in the process of " "initializing the type object." @@ -2201,7 +2204,7 @@ msgstr "" "Este bit se establece mientras :c:func:`PyType_Ready` está en el proceso de " "inicialización del objeto tipo." -#: ../Doc/c-api/typeobj.rst:1077 +#: ../Doc/c-api/typeobj.rst:1084 msgid "" "This bit is set when the object supports garbage collection. If this bit is " "set, instances must be created using :c:func:`PyObject_GC_New` and destroyed " @@ -2218,14 +2221,14 @@ msgstr "" "tp_traverse` y :c:member:`~PyTypeObject.tp_clear` están presentes en el " "objeto de tipo." -#: ../Doc/c-api/typeobj.rst:1086 ../Doc/c-api/typeobj.rst:1333 -#: ../Doc/c-api/typeobj.rst:1400 +#: ../Doc/c-api/typeobj.rst:1093 ../Doc/c-api/typeobj.rst:1340 +#: ../Doc/c-api/typeobj.rst:1407 msgid "" "Group: :const:`Py_TPFLAGS_HAVE_GC`, :attr:`tp_traverse`, :attr:`tp_clear`" msgstr "" "Grupo: :const:`Py_TPFLAGS_HAVE_GC`, :attr:`tp_traverse`, :attr:`tp_clear`" -#: ../Doc/c-api/typeobj.rst:1088 +#: ../Doc/c-api/typeobj.rst:1095 msgid "" "The :const:`Py_TPFLAGS_HAVE_GC` flag bit is inherited together with the :" "attr:`tp_traverse` and :attr:`tp_clear` fields, i.e. if the :const:" @@ -2239,7 +2242,7 @@ msgstr "" "attr:`tp_traverse` y :attr:`tp_clear` en el subtipo existen y tienen valores " "``NULL``." -#: ../Doc/c-api/typeobj.rst:1098 +#: ../Doc/c-api/typeobj.rst:1105 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 " @@ -2250,16 +2253,16 @@ msgstr "" "Actualmente, incluye los siguientes bits: :const:" "`Py_TPFLAGS_HAVE_STACKLESS_EXTENSION`." -#: ../Doc/c-api/typeobj.rst:1109 +#: ../Doc/c-api/typeobj.rst:1116 msgid "This bit indicates that objects behave like unbound methods." msgstr "" "Este bit indica que los objetos se comportan como métodos independientes." -#: ../Doc/c-api/typeobj.rst:1111 +#: ../Doc/c-api/typeobj.rst:1118 msgid "If this flag is set for ``type(meth)``, then:" msgstr "Si este indicador está configurado para ``type(meth)``, entonces:" -#: ../Doc/c-api/typeobj.rst:1113 +#: ../Doc/c-api/typeobj.rst:1120 msgid "" "``meth.__get__(obj, cls)(*args, **kwds)`` (with ``obj`` not None) must be " "equivalent to ``meth(obj, *args, **kwds)``." @@ -2267,7 +2270,7 @@ msgstr "" "``meth.__get__(obj, cls)(*args, **kwds)`` (con ``obj`` no ``None``) debe ser " "equivalente a ``meth(obj, *args, **kwds)``." -#: ../Doc/c-api/typeobj.rst:1116 +#: ../Doc/c-api/typeobj.rst:1123 msgid "" "``meth.__get__(None, cls)(*args, **kwds)`` must be equivalent to " "``meth(*args, **kwds)``." @@ -2275,7 +2278,7 @@ msgstr "" "``meth.__get__(None, cls)(*args, **kwds)`` debe ser equivalente a " "``meth(*args, **kwds)``." -#: ../Doc/c-api/typeobj.rst:1119 +#: ../Doc/c-api/typeobj.rst:1126 msgid "" "This flag enables an optimization for typical method calls like ``obj." "meth()``: it avoids creating a temporary \"bound method\" object for ``obj." @@ -2285,17 +2288,18 @@ msgstr "" "típicos como ``obj.meth()``: evita crear un objeto temporal de \"método " "vinculado\" para ``obj.meth``." -#: ../Doc/c-api/typeobj.rst:1127 +#: ../Doc/c-api/typeobj.rst:1134 +#, fuzzy msgid "" -"This flag is never inherited by :ref:`heap types `. For " -"extension types, it is inherited whenever :c:member:`~PyTypeObject." -"tp_descr_get` is inherited." +"This flag is never inherited by types without the :const:" +"`Py_TPFLAGS_IMMUTABLETYPE` flag set. For extension types, it is inherited " +"whenever :c:member:`~PyTypeObject.tp_descr_get` is inherited." msgstr "" "Esta bandera nunca es heredada por :ref:`tipos heap `. Para los " "tipos de extensión, se hereda siempre que se hereda :c:member:`~PyTypeObject." "tp_descr_get`." -#: ../Doc/c-api/typeobj.rst:1144 +#: ../Doc/c-api/typeobj.rst:1151 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 " @@ -2313,7 +2317,7 @@ msgstr "" "comportará de manera diferente dependiendo del tipo de verificación que se " "use." -#: ../Doc/c-api/typeobj.rst:1155 +#: ../Doc/c-api/typeobj.rst:1162 msgid "" "This bit is set when the :c:member:`~PyTypeObject.tp_finalize` slot is " "present in the type structure." @@ -2321,7 +2325,7 @@ msgstr "" "Este bit se establece cuando la ranura :c:member:`~PyTypeObject.tp_finalize` " "está presente en la estructura de tipo." -#: ../Doc/c-api/typeobj.rst:1160 +#: ../Doc/c-api/typeobj.rst:1167 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." @@ -2330,7 +2334,7 @@ msgstr "" "espacio :c:member:`~PyTypeObject.tp_finalize` siempre está presente en la " "estructura de tipos." -#: ../Doc/c-api/typeobj.rst:1168 +#: ../Doc/c-api/typeobj.rst:1175 msgid "" "This bit is set when the class implements the :ref:`vectorcall protocol " "`. See :c:member:`~PyTypeObject.tp_vectorcall_offset` for " @@ -2340,17 +2344,13 @@ msgstr "" "`. Consulte :c:member:`~PyTypeObject.tp_vectorcall_offset` para " "obtener más detalles." -#: ../Doc/c-api/typeobj.rst:1174 +#: ../Doc/c-api/typeobj.rst:1181 msgid "" -"This bit is inherited for :ref:`static subtypes ` if :c:member:" -"`~PyTypeObject.tp_call` is also inherited. :ref:`Heap types ` do " -"not inherit ``Py_TPFLAGS_HAVE_VECTORCALL``." +"This bit is inherited for types with the :const:`Py_TPFLAGS_IMMUTABLETYPE` " +"flag set, if :c:member:`~PyTypeObject.tp_call` is also inherited." msgstr "" -"Este bit se hereda para :ref:`static subtypes ` si también se " -"hereda :c:member:`~PyTypeObject.tp_call`. :ref:`Tipos heap ` no " -"hereda ``Py_TPFLAGS_HAVE_VECTORCALL``." -#: ../Doc/c-api/typeobj.rst:1182 +#: ../Doc/c-api/typeobj.rst:1189 msgid "" "This bit is set for type objects that are immutable: type attributes cannot " "be set nor deleted." @@ -2358,7 +2358,7 @@ msgstr "" "Este bit se establece para objetos de tipo que son inmutables: los atributos " "de tipo no se pueden establecer ni eliminar." -#: ../Doc/c-api/typeobj.rst:1184 +#: ../Doc/c-api/typeobj.rst:1191 msgid "" ":c:func:`PyType_Ready` automatically applies this flag to :ref:`static types " "`." @@ -2366,11 +2366,11 @@ msgstr "" ":c:func:`PyType_Ready` aplica automáticamente este indicador a :ref:`static " "types `." -#: ../Doc/c-api/typeobj.rst:1189 ../Doc/c-api/typeobj.rst:1208 +#: ../Doc/c-api/typeobj.rst:1196 ../Doc/c-api/typeobj.rst:1215 msgid "This flag is not inherited." msgstr "Este flag no se hereda." -#: ../Doc/c-api/typeobj.rst:1195 +#: ../Doc/c-api/typeobj.rst:1202 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." @@ -2379,7 +2379,7 @@ msgstr "" "`~PyTypeObject.tp_new` en NULL y no cree la clave ``__new__`` en el " "diccionario de tipos." -#: ../Doc/c-api/typeobj.rst:1199 +#: ../Doc/c-api/typeobj.rst:1206 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." @@ -2388,7 +2388,7 @@ msgstr "" "ejemplo, debe establecerse antes de que se llame a :c:func:`PyType_Ready` en " "el tipo." -#: ../Doc/c-api/typeobj.rst:1202 +#: ../Doc/c-api/typeobj.rst:1209 msgid "" "The flag is set automatically on :ref:`static types ` if :c:" "member:`~PyTypeObject.tp_base` is NULL or ``&PyBaseObject_Type`` and :c:" @@ -2398,7 +2398,7 @@ msgstr "" "types>` si :c:member:`~PyTypeObject.tp_base` es NULL o " "``&PyBaseObject_Type`` y :c:member:`~PyTypeObject.tp_new` es NULL." -#: ../Doc/c-api/typeobj.rst:1215 +#: ../Doc/c-api/typeobj.rst:1222 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 " @@ -2411,15 +2411,16 @@ msgstr "" "class:`collections.abc.Mapping`, y se desarma al registrar :class:" "`collections.abc.Sequence`." -#: ../Doc/c-api/typeobj.rst:1222 ../Doc/c-api/typeobj.rst:1244 +#: ../Doc/c-api/typeobj.rst:1229 ../Doc/c-api/typeobj.rst:1251 +#, fuzzy msgid "" ":const:`Py_TPFLAGS_MAPPING` and :const:`Py_TPFLAGS_SEQUENCE` are mutually " -"exclusive; it is an error enable both flags simultaneously." +"exclusive; it is an error to enable both flags simultaneously." msgstr "" ":const:`Py_TPFLAGS_MAPPING` y :const:`Py_TPFLAGS_SEQUENCE` se excluyen " "mutuamente; es un error habilitar ambos indicadores simultáneamente." -#: ../Doc/c-api/typeobj.rst:1227 +#: ../Doc/c-api/typeobj.rst:1234 msgid "" "This flag is inherited by types that do not already set :const:" "`Py_TPFLAGS_SEQUENCE`." @@ -2427,11 +2428,11 @@ msgstr "" "Esta bandera la heredan los tipos que aún no configuran :const:" "`Py_TPFLAGS_SEQUENCE`." -#: ../Doc/c-api/typeobj.rst:1230 ../Doc/c-api/typeobj.rst:1252 +#: ../Doc/c-api/typeobj.rst:1237 ../Doc/c-api/typeobj.rst:1259 msgid ":pep:`634` -- Structural Pattern Matching: Specification" msgstr ":pep:`634` - Coincidencia de patrones estructurales: especificación" -#: ../Doc/c-api/typeobj.rst:1237 +#: ../Doc/c-api/typeobj.rst:1244 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 " @@ -2444,7 +2445,7 @@ msgstr "" "`collections.abc.Sequence`, y se desarma al registrar :class:`collections." "abc.Mapping`." -#: ../Doc/c-api/typeobj.rst:1249 +#: ../Doc/c-api/typeobj.rst:1256 msgid "" "This flag is inherited by types that do not already set :const:" "`Py_TPFLAGS_MAPPING`." @@ -2452,7 +2453,7 @@ msgstr "" "Esta bandera la heredan los tipos que aún no configuran :const:" "`Py_TPFLAGS_MAPPING`." -#: ../Doc/c-api/typeobj.rst:1259 +#: ../Doc/c-api/typeobj.rst:1266 msgid "" "An optional pointer to a NUL-terminated C string giving the docstring for " "this type object. This is exposed as the :attr:`__doc__` attribute on the " @@ -2462,11 +2463,11 @@ msgstr "" "que proporciona la cadena de documentación para este tipo de objeto. Esto se " "expone como el atributo :attr:`__doc__` en el tipo y las instancias del tipo." -#: ../Doc/c-api/typeobj.rst:1265 +#: ../Doc/c-api/typeobj.rst:1272 msgid "This field is *not* inherited by subtypes." msgstr "Este campo es *no* heredado por los subtipos." -#: ../Doc/c-api/typeobj.rst:1270 +#: ../Doc/c-api/typeobj.rst:1277 msgid "" "An optional pointer to a traversal function for the garbage collector. This " "is only used if the :const:`Py_TPFLAGS_HAVE_GC` flag bit is set. The " @@ -2476,7 +2477,7 @@ msgstr "" "Esto solo se usa si se establece el bit de la bandera (*flag*) :const:" "`Py_TPFLAGS_HAVE_GC`. La firma es::" -#: ../Doc/c-api/typeobj.rst:1275 ../Doc/c-api/typeobj.rst:1395 +#: ../Doc/c-api/typeobj.rst:1282 ../Doc/c-api/typeobj.rst:1402 msgid "" "More information about Python's garbage collection scheme can be found in " "section :ref:`supporting-cycle-detection`." @@ -2484,7 +2485,7 @@ msgstr "" "Se puede encontrar más información sobre el esquema de recolección de basura " "de Python en la sección :ref:`supporting-cycle-detection`." -#: ../Doc/c-api/typeobj.rst:1278 +#: ../Doc/c-api/typeobj.rst:1285 msgid "" "The :c:member:`~PyTypeObject.tp_traverse` pointer is used by the garbage " "collector to detect reference cycles. A typical implementation of a :c:" @@ -2500,7 +2501,7 @@ msgstr "" "de Python que posee la instancia. Por ejemplo, esta es la función :c:func:" "`local_traverse` del módulo de extensión :mod:`_thread`::" -#: ../Doc/c-api/typeobj.rst:1293 +#: ../Doc/c-api/typeobj.rst:1300 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`` " @@ -2512,7 +2513,7 @@ msgstr "" "``self->key``, solo puede ser ``NULL`` o una cadena de caracteres de Python " "y, por lo tanto, no puede ser parte de un ciclo de referencia." -#: ../Doc/c-api/typeobj.rst:1297 +#: ../Doc/c-api/typeobj.rst:1304 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` " @@ -2523,7 +2524,7 @@ msgstr "" "para que la función :func:`~gc.get_referents` del módulo :mod:`gc` lo " "incluirá." -#: ../Doc/c-api/typeobj.rst:1302 +#: ../Doc/c-api/typeobj.rst:1309 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:" @@ -2571,7 +2572,7 @@ msgstr "" "al heap). Si no es así, es posible que el objeto de tipo no se recolecte " "como basura." -#: ../Doc/c-api/typeobj.rst:1326 +#: ../Doc/c-api/typeobj.rst:1333 msgid "" "Heap-allocated types are expected to visit ``Py_TYPE(self)`` in " "``tp_traverse``. In earlier versions of Python, due to `bug 40217 `_, hacer esto puede provocar fallas en " "las subclases." -#: ../Doc/c-api/typeobj.rst:1335 +#: ../Doc/c-api/typeobj.rst:1342 msgid "" "This field is inherited by subtypes together with :c:member:`~PyTypeObject." "tp_clear` and the :const:`Py_TPFLAGS_HAVE_GC` flag bit: the flag bit, :c:" @@ -2594,7 +2595,7 @@ msgstr "" "bandera, :c:member:`~PyTypeObject.tp_traverse`, y :c:member:`~PyTypeObject." "tp_clear` se heredan todos del tipo base si todos son cero en el subtipo." -#: ../Doc/c-api/typeobj.rst:1343 +#: ../Doc/c-api/typeobj.rst:1350 msgid "" "An optional pointer to a clear function for the garbage collector. This is " "only used if the :const:`Py_TPFLAGS_HAVE_GC` flag bit is set. The signature " @@ -2604,7 +2605,7 @@ msgstr "" "recolector de basura. Esto solo se usa si se establece el bit de bandera :" "const:`Py_TPFLAGS_HAVE_GC`. La firma es::" -#: ../Doc/c-api/typeobj.rst:1348 +#: ../Doc/c-api/typeobj.rst:1355 msgid "" "The :c:member:`~PyTypeObject.tp_clear` member function is used to break " "reference cycles in cyclic garbage detected by the garbage collector. Taken " @@ -2631,7 +2632,7 @@ msgstr "" "tupla. Esto no es inmediatamente obvio, y rara vez hay una buena razón para " "evitar la implementación de :c:member:`~PyTypeObject.tp_clear`." -#: ../Doc/c-api/typeobj.rst:1358 +#: ../Doc/c-api/typeobj.rst:1365 msgid "" "Implementations of :c:member:`~PyTypeObject.tp_clear` should drop the " "instance's references to those of its members that may be Python objects, " @@ -2643,7 +2644,7 @@ msgstr "" "ser objetos de Python, y establecer sus punteros a esos miembros en " "``NULL``, como en el siguiente ejemplo::" -#: ../Doc/c-api/typeobj.rst:1372 +#: ../Doc/c-api/typeobj.rst:1379 msgid "" "The :c:func:`Py_CLEAR` macro should be used, because clearing references is " "delicate: the reference to the contained object must not be decremented " @@ -2670,7 +2671,7 @@ msgstr "" "objeto contenido ya no se puede usar. El macro :c:func:`Py_CLEAR` realiza " "las operaciones en un orden seguro." -#: ../Doc/c-api/typeobj.rst:1383 +#: ../Doc/c-api/typeobj.rst:1390 msgid "" "Note that :c:member:`~PyTypeObject.tp_clear` is not *always* called before " "an instance is deallocated. For example, when reference counting is enough " @@ -2683,7 +2684,7 @@ msgstr "" "recolector de basura cíclico no está involucrado y se llama directamente a :" "c:member:`~PyTypeObject.tp_dealloc`." -#: ../Doc/c-api/typeobj.rst:1389 +#: ../Doc/c-api/typeobj.rst:1396 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 " @@ -2699,7 +2700,7 @@ msgstr "" "objetos Python contenidos y escribir la función :c:member:`~PyTypeObject." "tp_dealloc` para invocar :c:member:`~PyTypeObject.tp_clear`." -#: ../Doc/c-api/typeobj.rst:1402 +#: ../Doc/c-api/typeobj.rst:1409 msgid "" "This field is inherited by subtypes together with :c:member:`~PyTypeObject." "tp_traverse` and the :const:`Py_TPFLAGS_HAVE_GC` flag bit: the flag bit, :c:" @@ -2711,13 +2712,13 @@ msgstr "" "bandera, :c:member:`~PyTypeObject.tp_traverse`, y :c:member:`~PyTypeObject." "tp_clear` se heredan todos del tipo base si todos son cero en el subtipo." -#: ../Doc/c-api/typeobj.rst:1410 +#: ../Doc/c-api/typeobj.rst:1417 msgid "" "An optional pointer to the rich comparison function, whose signature is::" msgstr "" "Un puntero opcional a la función de comparación enriquecida, cuya firma es::" -#: ../Doc/c-api/typeobj.rst:1414 +#: ../Doc/c-api/typeobj.rst:1421 msgid "" "The first parameter is guaranteed to be an instance of the type that is " "defined by :c:type:`PyTypeObject`." @@ -2725,7 +2726,7 @@ msgstr "" "Se garantiza que el primer parámetro será una instancia del tipo definido " "por :c:type:`PyTypeObject`." -#: ../Doc/c-api/typeobj.rst:1417 +#: ../Doc/c-api/typeobj.rst:1424 msgid "" "The function should return the result of the comparison (usually ``Py_True`` " "or ``Py_False``). If the comparison is undefined, it must return " @@ -2737,7 +2738,7 @@ msgstr "" "retornar ``Py_NotImplemented``, si se produce otro error, debe retornar " "``NULL`` y establecer una condición de excepción." -#: ../Doc/c-api/typeobj.rst:1422 +#: ../Doc/c-api/typeobj.rst:1429 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`:" @@ -2746,70 +2747,70 @@ msgstr "" "argumento para :c:member:`~PyTypeObject.tp_richcompare` y para :c:func:" "`PyObject_RichCompare`:" -#: ../Doc/c-api/typeobj.rst:1426 +#: ../Doc/c-api/typeobj.rst:1433 msgid "Constant" msgstr "Constante" -#: ../Doc/c-api/typeobj.rst:1426 +#: ../Doc/c-api/typeobj.rst:1433 msgid "Comparison" msgstr "Comparación" -#: ../Doc/c-api/typeobj.rst:1428 +#: ../Doc/c-api/typeobj.rst:1435 msgid ":const:`Py_LT`" msgstr ":const:`Py_LT`" -#: ../Doc/c-api/typeobj.rst:1428 +#: ../Doc/c-api/typeobj.rst:1435 msgid "``<``" msgstr "``<``" -#: ../Doc/c-api/typeobj.rst:1430 +#: ../Doc/c-api/typeobj.rst:1437 msgid ":const:`Py_LE`" msgstr ":const:`Py_LE`" -#: ../Doc/c-api/typeobj.rst:1430 +#: ../Doc/c-api/typeobj.rst:1437 msgid "``<=``" msgstr "``<=``" -#: ../Doc/c-api/typeobj.rst:1432 +#: ../Doc/c-api/typeobj.rst:1439 msgid ":const:`Py_EQ`" msgstr ":const:`Py_EQ`" -#: ../Doc/c-api/typeobj.rst:1432 +#: ../Doc/c-api/typeobj.rst:1439 msgid "``==``" msgstr "``==``" -#: ../Doc/c-api/typeobj.rst:1434 +#: ../Doc/c-api/typeobj.rst:1441 msgid ":const:`Py_NE`" msgstr ":const:`Py_NE`" -#: ../Doc/c-api/typeobj.rst:1434 +#: ../Doc/c-api/typeobj.rst:1441 msgid "``!=``" msgstr "``!=``" -#: ../Doc/c-api/typeobj.rst:1436 +#: ../Doc/c-api/typeobj.rst:1443 msgid ":const:`Py_GT`" msgstr ":const:`Py_GT`" -#: ../Doc/c-api/typeobj.rst:1436 +#: ../Doc/c-api/typeobj.rst:1443 msgid "``>``" msgstr "``>``" -#: ../Doc/c-api/typeobj.rst:1438 +#: ../Doc/c-api/typeobj.rst:1445 msgid ":const:`Py_GE`" msgstr ":const:`Py_GE`" -#: ../Doc/c-api/typeobj.rst:1438 +#: ../Doc/c-api/typeobj.rst:1445 msgid "``>=``" msgstr "``>=``" -#: ../Doc/c-api/typeobj.rst:1441 +#: ../Doc/c-api/typeobj.rst:1448 msgid "" "The following macro is defined to ease writing rich comparison functions:" msgstr "" "El siguiente macro está definido para facilitar la escritura de funciones de " "comparación enriquecidas:" -#: ../Doc/c-api/typeobj.rst:1445 +#: ../Doc/c-api/typeobj.rst:1452 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 " @@ -2822,17 +2823,17 @@ msgstr "" "tercer argumento especifica la operación solicitada, como por ejemplo :c:" "func:`PyObject_RichCompare`." -#: ../Doc/c-api/typeobj.rst:1451 +#: ../Doc/c-api/typeobj.rst:1458 msgid "The return value's reference count is properly incremented." msgstr "" "El conteo de referencia del valor de retorno se incrementa correctamente." -#: ../Doc/c-api/typeobj.rst:1453 +#: ../Doc/c-api/typeobj.rst:1460 msgid "On error, sets an exception and returns ``NULL`` from the function." msgstr "" "En caso de error, establece una excepción y retorna ``NULL`` de la función." -#: ../Doc/c-api/typeobj.rst:1461 +#: ../Doc/c-api/typeobj.rst:1468 msgid "" "This field is inherited by subtypes together with :c:member:`~PyTypeObject." "tp_hash`: a subtype inherits :c:member:`~PyTypeObject.tp_richcompare` and :c:" @@ -2844,7 +2845,7 @@ msgstr "" "member:`~PyTypeObject.tp_hash` cuando el subtipo :c:member:`~PyTypeObject." "tp_richcompare` y :c:member:`~PyTypeObject.tp_hash` son ambos ``NULL``." -#: ../Doc/c-api/typeobj.rst:1468 +#: ../Doc/c-api/typeobj.rst:1475 msgid "" ":c:type:`PyBaseObject_Type` provides a :attr:`tp_richcompare` " "implementation, which may be inherited. However, if only :attr:`tp_hash` is " @@ -2856,13 +2857,14 @@ msgstr "" "attr:`tp_hash`, ni siquiera se utiliza la función heredada y las instancias " "del tipo no podrán participar en ninguna comparación." -#: ../Doc/c-api/typeobj.rst:1477 +#: ../Doc/c-api/typeobj.rst:1484 +#, fuzzy 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 " "weak reference list head (ignoring the GC header, if present); this offset " -"is used by :c:func:`PyObject_ClearWeakRefs` and the :c:func:`PyWeakref_\\*` " -"functions. The instance structure needs to include a field of type :c:type:" +"is used by :c:func:`PyObject_ClearWeakRefs` and the ``PyWeakref_*`` " +"functions. The instance structure needs to include a field of type :c:expr:" "`PyObject*` which is initialized to ``NULL``." msgstr "" "Si las instancias de este tipo son débilmente referenciables, este campo es " @@ -2873,7 +2875,7 @@ msgstr "" "estructura de la instancia debe incluir un campo de tipo :c:type:`PyObject*` " "que se inicializa en ``NULL``." -#: ../Doc/c-api/typeobj.rst:1484 +#: ../Doc/c-api/typeobj.rst:1491 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." @@ -2881,7 +2883,7 @@ msgstr "" "No confunda este campo con :c:member:`~PyTypeObject.tp_weaklist`; ese es el " "encabezado de la lista para referencias débiles al objeto de tipo en sí." -#: ../Doc/c-api/typeobj.rst:1489 +#: ../Doc/c-api/typeobj.rst:1496 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 " @@ -2896,7 +2898,7 @@ msgstr "" "encuentra a través de :c:member:`~PyTypeObject.tp_weaklistoffset`, esto no " "debería ser un problema." -#: ../Doc/c-api/typeobj.rst:1494 +#: ../Doc/c-api/typeobj.rst:1501 msgid "" "When a type defined by a class statement has no :attr:`~object.__slots__` " "declaration, and none of its base types are weakly referenceable, the type " @@ -2911,7 +2913,7 @@ msgstr "" "y configurando :c:member:`~PyTypeObject.tp_weaklistoffset` del " "desplazamiento de esa ranura." -#: ../Doc/c-api/typeobj.rst:1499 +#: ../Doc/c-api/typeobj.rst:1506 msgid "" "When a type's :attr:`__slots__` declaration contains a slot named :attr:" "`__weakref__`, that slot becomes the weak reference list head for instances " @@ -2924,7 +2926,7 @@ msgstr "" "del espacio se almacena en el tipo :c:member:`~PyTypeObject." "tp_weaklistoffset`." -#: ../Doc/c-api/typeobj.rst:1504 +#: ../Doc/c-api/typeobj.rst:1511 msgid "" "When a type's :attr:`__slots__` declaration does not contain a slot named :" "attr:`__weakref__`, the type inherits its :c:member:`~PyTypeObject." @@ -2934,29 +2936,31 @@ msgstr "" "llamado :attr:`__weakref__`, el tipo hereda su :c:member:`~PyTypeObject." "tp_weaklistoffset` de su tipo base." -#: ../Doc/c-api/typeobj.rst:1511 +#: ../Doc/c-api/typeobj.rst:1518 +#, fuzzy msgid "" -"An optional pointer to a function that returns an iterator for the object. " -"Its presence normally signals that the instances of this type are iterable " -"(although sequences may be iterable without this function)." +"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 "" "Un puntero opcional a una función que retorna un iterador para el objeto. Su " "presencia normalmente indica que las instancias de este tipo son iterables " "(aunque las secuencias pueden ser iterables sin esta función)." -#: ../Doc/c-api/typeobj.rst:1515 +#: ../Doc/c-api/typeobj.rst:1522 msgid "This function has the same signature as :c:func:`PyObject_GetIter`::" msgstr "Esta función tiene la misma firma que :c:func:`PyObject_GetIter`::" -#: ../Doc/c-api/typeobj.rst:1526 +#: ../Doc/c-api/typeobj.rst:1533 +#, fuzzy msgid "" -"An optional pointer to a function that returns the next item in an iterator. " -"The signature is::" +"An optional pointer to a function that returns the next item in an :term:" +"`iterator`. The signature is::" msgstr "" "Un puntero opcional a una función que retorna el siguiente elemento en un " "iterador. La firma es::" -#: ../Doc/c-api/typeobj.rst:1531 +#: ../Doc/c-api/typeobj.rst:1538 msgid "" "When the iterator is exhausted, it must return ``NULL``; a :exc:" "`StopIteration` exception may or may not be set. When another error occurs, " @@ -2968,7 +2972,7 @@ msgstr "" "también debe retornar ``NULL``. Su presencia indica que las instancias de " "este tipo son iteradores." -#: ../Doc/c-api/typeobj.rst:1536 +#: ../Doc/c-api/typeobj.rst:1543 msgid "" "Iterator types should also define the :c:member:`~PyTypeObject.tp_iter` " "function, and that function should return the iterator instance itself (not " @@ -2978,11 +2982,11 @@ msgstr "" "`~PyTypeObject.tp_iter`, y esa función debería retornar la instancia de " "iterador en sí (no una nueva instancia de iterador)." -#: ../Doc/c-api/typeobj.rst:1540 +#: ../Doc/c-api/typeobj.rst:1547 msgid "This function has the same signature as :c:func:`PyIter_Next`." msgstr "Esta función tiene la misma firma que :c:func:`PyIter_Next`." -#: ../Doc/c-api/typeobj.rst:1549 +#: ../Doc/c-api/typeobj.rst:1556 msgid "" "An optional pointer to a static ``NULL``-terminated array of :c:type:" "`PyMethodDef` structures, declaring regular methods of this type." @@ -2990,7 +2994,7 @@ msgstr "" "Un puntero opcional a un arreglo estático terminado en ``NULL`` de " "estructuras :c:type:`PyMethodDef`, declarando métodos regulares de este tipo." -#: ../Doc/c-api/typeobj.rst:1552 +#: ../Doc/c-api/typeobj.rst:1559 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." @@ -2999,7 +3003,7 @@ msgstr "" "tipo (ver :c:member:`~PyTypeObject.tp_dict` a continuación) que contiene un " "descriptor *method*." -#: ../Doc/c-api/typeobj.rst:1557 +#: ../Doc/c-api/typeobj.rst:1564 msgid "" "This field is not inherited by subtypes (methods are inherited through a " "different mechanism)." @@ -3007,7 +3011,7 @@ msgstr "" "Los subtipos no heredan este campo (los métodos se heredan mediante un " "mecanismo diferente)." -#: ../Doc/c-api/typeobj.rst:1563 +#: ../Doc/c-api/typeobj.rst:1570 msgid "" "An optional pointer to a static ``NULL``-terminated array of :c:type:" "`PyMemberDef` structures, declaring regular data members (fields or slots) " @@ -3017,7 +3021,7 @@ msgstr "" "estructuras :c:type:`PyMemberDef`, declarando miembros de datos regulares " "(campos o ranuras) de instancias de este tipo." -#: ../Doc/c-api/typeobj.rst:1567 +#: ../Doc/c-api/typeobj.rst:1574 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." @@ -3026,7 +3030,7 @@ msgstr "" "tipo (ver :c:member:`~PyTypeObject.tp_dict` a continuación) que contiene un " "descriptor *member*." -#: ../Doc/c-api/typeobj.rst:1572 +#: ../Doc/c-api/typeobj.rst:1579 msgid "" "This field is not inherited by subtypes (members are inherited through a " "different mechanism)." @@ -3034,7 +3038,7 @@ msgstr "" "Los subtipos no heredan este campo (los miembros se heredan mediante un " "mecanismo diferente)." -#: ../Doc/c-api/typeobj.rst:1578 +#: ../Doc/c-api/typeobj.rst:1585 msgid "" "An optional pointer to a static ``NULL``-terminated array of :c:type:" "`PyGetSetDef` structures, declaring computed attributes of instances of this " @@ -3044,7 +3048,7 @@ msgstr "" "estructuras :c:type:`PyGetSetDef`, declarando atributos calculados de " "instancias de este tipo." -#: ../Doc/c-api/typeobj.rst:1581 +#: ../Doc/c-api/typeobj.rst:1588 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." @@ -3053,7 +3057,7 @@ msgstr "" "tipo (ver :c:member:`~PyTypeObject.tp_dict` a continuación) que contiene un " "descriptor *getset*." -#: ../Doc/c-api/typeobj.rst:1586 +#: ../Doc/c-api/typeobj.rst:1593 msgid "" "This field is not inherited by subtypes (computed attributes are inherited " "through a different mechanism)." @@ -3061,7 +3065,7 @@ msgstr "" "Este campo no es heredado por los subtipos (los atributos computados se " "heredan a través de un mecanismo diferente)." -#: ../Doc/c-api/typeobj.rst:1592 +#: ../Doc/c-api/typeobj.rst:1599 msgid "" "An optional pointer to a base type from which type properties are " "inherited. At this level, only single inheritance is supported; multiple " @@ -3072,7 +3076,7 @@ msgstr "" "tipo. En este nivel, solo se admite una herencia única; La herencia múltiple " "requiere la creación dinámica de un objeto tipo llamando al metatipo." -#: ../Doc/c-api/typeobj.rst:1600 +#: ../Doc/c-api/typeobj.rst:1607 msgid "" "Slot initialization is subject to the rules of initializing globals. C99 " "requires the initializers to be \"address constants\". Function designators " @@ -3080,11 +3084,12 @@ msgid "" "valid C99 address constants." msgstr "" "La inicialización de ranuras está sujeta a las reglas de inicialización de " -"globales. C99 requiere que los inicializadores sean \"constantes de dirección" -"\". Los designadores de funciones como :c:func:`PyType_GenericNew`, con " -"conversión implícita a un puntero, son constantes de dirección C99 válidas." +"globales. C99 requiere que los inicializadores sean \"constantes de " +"dirección\". Los designadores de funciones como :c:func:`PyType_GenericNew`, " +"con conversión implícita a un puntero, son constantes de dirección C99 " +"válidas." -#: ../Doc/c-api/typeobj.rst:1605 +#: ../Doc/c-api/typeobj.rst:1612 msgid "" "However, the unary '&' operator applied to a non-static variable like :c:" "func:`PyBaseObject_Type` is not required to produce an address constant. " @@ -3097,7 +3102,7 @@ msgstr "" "Ambos compiladores son estrictamente estándar conforme a este comportamiento " "particular." -#: ../Doc/c-api/typeobj.rst:1611 +#: ../Doc/c-api/typeobj.rst:1618 msgid "" "Consequently, :c:member:`~PyTypeObject.tp_base` should be set in the " "extension module's init function." @@ -3105,11 +3110,11 @@ msgstr "" "En consecuencia, :c:member:`~PyTypeObject.tp_base` debe establecerse en la " "función *init* del módulo de extensión." -#: ../Doc/c-api/typeobj.rst:1616 +#: ../Doc/c-api/typeobj.rst:1623 msgid "This field is not inherited by subtypes (obviously)." msgstr "Este campo no es heredado por los subtipos (obviamente)." -#: ../Doc/c-api/typeobj.rst:1620 +#: ../Doc/c-api/typeobj.rst:1627 msgid "" "This field defaults to ``&PyBaseObject_Type`` (which to Python programmers " "is known as the type :class:`object`)." @@ -3117,11 +3122,11 @@ msgstr "" "Este campo predeterminado es ``&PyBaseObject_Type`` (que para los " "programadores de Python se conoce como el tipo :class:`objeto`)." -#: ../Doc/c-api/typeobj.rst:1626 +#: ../Doc/c-api/typeobj.rst:1633 msgid "The type's dictionary is stored here by :c:func:`PyType_Ready`." msgstr "El diccionario del tipo se almacena aquí por :c:func:`PyType_Ready`." -#: ../Doc/c-api/typeobj.rst:1628 +#: ../Doc/c-api/typeobj.rst:1635 msgid "" "This field should normally be initialized to ``NULL`` before PyType_Ready is " "called; it may also be initialized to a dictionary containing initial " @@ -3136,7 +3141,7 @@ msgstr "" "agregarse a este diccionario solo si no corresponden a operaciones " "sobrecargadas (como :meth:`__add__`)." -#: ../Doc/c-api/typeobj.rst:1636 +#: ../Doc/c-api/typeobj.rst:1643 msgid "" "This field is not inherited by subtypes (though the attributes defined in " "here are inherited through a different mechanism)." @@ -3144,7 +3149,7 @@ msgstr "" "Este campo no es heredado por los subtipos (aunque los atributos definidos " "aquí se heredan a través de un mecanismo diferente)." -#: ../Doc/c-api/typeobj.rst:1641 +#: ../Doc/c-api/typeobj.rst:1648 msgid "" "If this field is ``NULL``, :c:func:`PyType_Ready` will assign a new " "dictionary to it." @@ -3152,7 +3157,7 @@ msgstr "" "Si este campo es ``NULL``, :c:func:`PyType_Ready` le asignará un nuevo " "diccionario." -#: ../Doc/c-api/typeobj.rst:1646 +#: ../Doc/c-api/typeobj.rst:1653 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." @@ -3160,18 +3165,18 @@ msgstr "" "No es seguro usar :c:func:`PyDict_SetItem` en o modificar de otra manera a :" "c:member:`~PyTypeObject.tp_dict` con el diccionario C-API." -#: ../Doc/c-api/typeobj.rst:1652 +#: ../Doc/c-api/typeobj.rst:1659 msgid "An optional pointer to a \"descriptor get\" function." msgstr "" "Un puntero opcional a una función \"obtener descriptor\" (*descriptor ger*)." -#: ../Doc/c-api/typeobj.rst:1654 ../Doc/c-api/typeobj.rst:1670 +#: ../Doc/c-api/typeobj.rst:1661 ../Doc/c-api/typeobj.rst:1677 #: ../Doc/c-api/typeobj.rst:1752 ../Doc/c-api/typeobj.rst:1782 #: ../Doc/c-api/typeobj.rst:1806 msgid "The function signature is::" msgstr "La firma de la función es::" -#: ../Doc/c-api/typeobj.rst:1667 +#: ../Doc/c-api/typeobj.rst:1674 msgid "" "An optional pointer to a function for setting and deleting a descriptor's " "value." @@ -3179,11 +3184,11 @@ msgstr "" "Un puntero opcional a una función para configurar y eliminar el valor de un " "descriptor." -#: ../Doc/c-api/typeobj.rst:1674 +#: ../Doc/c-api/typeobj.rst:1681 msgid "The *value* argument is set to ``NULL`` to delete the value." msgstr "El argumento *value* se establece a ``NULL`` para borrar el valor." -#: ../Doc/c-api/typeobj.rst:1685 +#: ../Doc/c-api/typeobj.rst:1692 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 " @@ -3195,7 +3200,7 @@ msgstr "" "instancias del tipo del diccionario de variables de instancia; este " "desplazamiento es utilizado por :c:func:`PyObject_GenericGetAttr`." -#: ../Doc/c-api/typeobj.rst:1690 +#: ../Doc/c-api/typeobj.rst:1697 msgid "" "Do not confuse this field with :c:member:`~PyTypeObject.tp_dict`; that is " "the dictionary for attributes of the type object itself." @@ -3203,7 +3208,7 @@ msgstr "" "No confunda este campo con :c:member:`~PyTypeObject.tp_dict`; ese es el " "diccionario para los atributos del tipo de objeto en sí." -#: ../Doc/c-api/typeobj.rst:1693 +#: ../Doc/c-api/typeobj.rst:1700 msgid "" "If the value of this field is greater than zero, it specifies the offset " "from the start of the instance structure. If the value is less than zero, " @@ -3232,30 +3237,14 @@ msgstr "" "debe establecerse en ``-4`` para indicar que el diccionario está al final de " "la estructura." -#: ../Doc/c-api/typeobj.rst:1705 -msgid "" -"The real dictionary offset in an instance can be computed from a negative :c:" -"member:`~PyTypeObject.tp_dictoffset` as follows::" -msgstr "" -"El desplazamiento real del diccionario en una instancia se puede calcular a " -"partir de un elemento negativo :c:member:`~PyTypeObject.tp_dictoffset` de la " -"siguiente manera::" - #: ../Doc/c-api/typeobj.rst:1712 msgid "" -"where :c:member:`~PyTypeObject.tp_basicsize`, :c:member:`~PyTypeObject." -"tp_itemsize` and :c:member:`~PyTypeObject.tp_dictoffset` are taken from the " -"type object, and :attr:`ob_size` is taken from the instance. The absolute " -"value is taken because ints use the sign of :attr:`ob_size` to store the " -"sign of the number. (There's never a need to do this calculation yourself; " -"it is done for you by :c:func:`_PyObject_GetDictPtr`.)" +"The :c:member:`~PyTypeObject.tp_dictoffset` should be regarded as write-" +"only. To get the pointer to the dictionary call :c:func:" +"`PyObject_GenericGetDict`. Calling :c:func:`PyObject_GenericGetDict` may " +"need to allocate memory for the dictionary, so it is may be more efficient " +"to call :c:func:`PyObject_GetAttr` when accessing an attribute on the object." msgstr "" -"donde :c:member:`~PyTypeObject.tp_basicsize`, :c:member:`~PyTypeObject." -"tp_itemsize` y :c:member:`~PyTypeObject.tp_dictoffset` se toman del objeto " -"*type*, y :attr:`ob_size` está tomado de la instancia. Se toma el valor " -"absoluto porque *ints* usa el signo de :attr:`ob_size` para almacenar el " -"signo del número. (Nunca es necesario hacer este cálculo usted mismo; lo " -"hace por usted la función :c:func:`_PyObject_GetDictPtr`.)" #: ../Doc/c-api/typeobj.rst:1720 msgid "" @@ -3647,38 +3636,6 @@ msgstr "" #: ../Doc/c-api/typeobj.rst:1987 msgid "" -"For this field to be taken into account (even through inheritance), you must " -"also set the :const:`Py_TPFLAGS_HAVE_FINALIZE` flags bit." -msgstr "" -"Para que este campo se tenga en cuenta (incluso a través de la herencia), " -"también debe establecer el bit de banderas :const:`Py_TPFLAGS_HAVE_FINALIZE`." - -#: ../Doc/c-api/typeobj.rst:1996 -msgid "\"Safe object finalization\" (:pep:`442`)" -msgstr "\"Finalización segura de objetos\" (:pep:`442`)" - -#: ../Doc/c-api/typeobj.rst:2001 -msgid "" -"Vectorcall function to use for calls of this type object. In other words, it " -"is used to implement :ref:`vectorcall ` for ``type.__call__``. " -"If ``tp_vectorcall`` is ``NULL``, the default call implementation using :" -"attr:`__new__` and :attr:`__init__` is used." -msgstr "" -"Función Vectorcall a utilizar para llamadas de este tipo de objeto. En otras " -"palabras, se usa para implementar :ref:`vectorcall ` para ``type." -"__call__``. Si ``tp_vectorcall`` es ``NULL``, se usa la implementación de " -"llamada predeterminada usando :attr:`__new__` y :attr:`__init__`." - -#: ../Doc/c-api/typeobj.rst:2009 -msgid "This field is never inherited." -msgstr "Este campo nunca se hereda." - -#: ../Doc/c-api/typeobj.rst:2011 -msgid "(the field exists since 3.8 but it's only used since 3.9)" -msgstr "(el campo existe desde 3.8 pero solo se usa desde 3.9)" - -#: ../Doc/c-api/typeobj.rst:2014 -msgid "" "Also, note that, in a garbage collected Python, :c:member:`~PyTypeObject." "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 " @@ -3702,11 +3659,42 @@ msgstr "" "objetos en el hilo que se llama ``tp_dealloc`` no violará ningún supuesto de " "la biblioteca." -#: ../Doc/c-api/typeobj.rst:2028 +#: ../Doc/c-api/typeobj.rst:2006 +msgid "" +"Before version 3.8 it was necessary to set the :const:" +"`Py_TPFLAGS_HAVE_FINALIZE` flags bit in order for this field to be used. " +"This is no longer required." +msgstr "" + +#: ../Doc/c-api/typeobj.rst:2010 +msgid "\"Safe object finalization\" (:pep:`442`)" +msgstr "\"Finalización segura de objetos\" (:pep:`442`)" + +#: ../Doc/c-api/typeobj.rst:2015 +msgid "" +"Vectorcall function to use for calls of this type object. In other words, it " +"is used to implement :ref:`vectorcall ` for ``type.__call__``. " +"If ``tp_vectorcall`` is ``NULL``, the default call implementation using :" +"attr:`__new__` and :attr:`__init__` is used." +msgstr "" +"Función Vectorcall a utilizar para llamadas de este tipo de objeto. En otras " +"palabras, se usa para implementar :ref:`vectorcall ` para ``type." +"__call__``. Si ``tp_vectorcall`` es ``NULL``, se usa la implementación de " +"llamada predeterminada usando :attr:`__new__` y :attr:`__init__`." + +#: ../Doc/c-api/typeobj.rst:2023 +msgid "This field is never inherited." +msgstr "Este campo nunca se hereda." + +#: ../Doc/c-api/typeobj.rst:2025 +msgid "(the field exists since 3.8 but it's only used since 3.9)" +msgstr "(el campo existe desde 3.8 pero solo se usa desde 3.9)" + +#: ../Doc/c-api/typeobj.rst:2031 msgid "Static Types" msgstr "Tipos estáticos" -#: ../Doc/c-api/typeobj.rst:2030 +#: ../Doc/c-api/typeobj.rst:2033 msgid "" "Traditionally, types defined in C code are *static*, that is, a static :c:" "type:`PyTypeObject` structure is defined directly in code and initialized " @@ -3716,14 +3704,14 @@ msgstr "" "una estructura estática :c:type:`PyTypeObject` se define directamente en el " "código y se inicializa usando :c:func:`PyType_Ready`." -#: ../Doc/c-api/typeobj.rst:2034 +#: ../Doc/c-api/typeobj.rst:2037 msgid "" "This results in types that are limited relative to types defined in Python:" msgstr "" "Esto da como resultado tipos que están limitados en relación con los tipos " "definidos en Python:" -#: ../Doc/c-api/typeobj.rst:2036 +#: ../Doc/c-api/typeobj.rst:2039 msgid "" "Static types are limited to one base, i.e. they cannot use multiple " "inheritance." @@ -3731,7 +3719,7 @@ msgstr "" "Los tipos estáticos están limitados a una base, es decir, no pueden usar " "herencia múltiple." -#: ../Doc/c-api/typeobj.rst:2038 +#: ../Doc/c-api/typeobj.rst:2041 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." @@ -3740,7 +3728,7 @@ msgstr "" "inmutables. No es posible agregar o modificar los atributos del objeto tipo " "desde Python." -#: ../Doc/c-api/typeobj.rst:2040 +#: ../Doc/c-api/typeobj.rst:2043 msgid "" "Static type objects are shared across :ref:`sub-interpreters `, so they should not include any subinterpreter-" @@ -3750,21 +3738,22 @@ msgstr "" "interpreter-support>`, por lo que no deben incluir ningún estado específico " "del sub interpretador." -#: ../Doc/c-api/typeobj.rst:2044 +#: ../Doc/c-api/typeobj.rst:2047 +#, fuzzy msgid "" -"Also, since :c:type:`PyTypeObject` is not part of the :ref:`stable ABI " -"`, any extension modules using static types must be compiled for a " -"specific Python minor version." +"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 "" "Además, dado que :c:type:`PyTypeObject` no forma parte de :ref:`stable ABI " "`, cualquier módulo de extensión que use tipos estáticos debe " "compilarse para una versión menor específica de Python." -#: ../Doc/c-api/typeobj.rst:2052 +#: ../Doc/c-api/typeobj.rst:2055 msgid "Heap Types" msgstr "Tipos Heap" -#: ../Doc/c-api/typeobj.rst:2054 +#: ../Doc/c-api/typeobj.rst:2057 msgid "" "An alternative to :ref:`static types ` is *heap-allocated " "types*, or *heap types* for short, which correspond closely to classes " @@ -3776,7 +3765,7 @@ msgstr "" "las clases creadas por la declaración ``class`` de Python. Los tipos de heap " "tienen establecida la bandera :const:`Py_TPFLAGS_HEAPTYPE`." -#: ../Doc/c-api/typeobj.rst:2059 +#: ../Doc/c-api/typeobj.rst:2062 msgid "" "This is done by filling a :c:type:`PyType_Spec` structure and calling :c:" "func:`PyType_FromSpec`, :c:func:`PyType_FromSpecWithBases`, or :c:func:" @@ -3786,11 +3775,11 @@ msgstr "" "func:`PyType_FromSpec`, :c:func:`PyType_FromSpecWithBases` o :c:func:" "`PyType_FromModuleAndSpec`." -#: ../Doc/c-api/typeobj.rst:2067 +#: ../Doc/c-api/typeobj.rst:2070 msgid "Number Object Structures" msgstr "Estructuras de Objetos de Números" -#: ../Doc/c-api/typeobj.rst:2074 +#: ../Doc/c-api/typeobj.rst:2077 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 " @@ -3800,11 +3789,11 @@ msgstr "" "implementar el protocolo numérico. Cada función es utilizada por la función " "de un nombre similar documentado en la sección :ref:`number`." -#: ../Doc/c-api/typeobj.rst:2080 ../Doc/c-api/typeobj.rst:2404 +#: ../Doc/c-api/typeobj.rst:2083 ../Doc/c-api/typeobj.rst:2407 msgid "Here is the structure definition::" msgstr "Aquí está la definición de la estructura::" -#: ../Doc/c-api/typeobj.rst:2127 +#: ../Doc/c-api/typeobj.rst:2130 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 " @@ -3820,7 +3809,7 @@ msgstr "" "retornar ``Py_NotImplemented``, si se produce otro error, deben retornar " "``NULL`` y establecer una excepción." -#: ../Doc/c-api/typeobj.rst:2136 +#: ../Doc/c-api/typeobj.rst:2139 msgid "" "The :c:data:`nb_reserved` field should always be ``NULL``. It was " "previously called :c:data:`nb_long`, and was renamed in Python 3.0.1." @@ -3828,11 +3817,11 @@ msgstr "" "El campo :c:data:`nb_reserved` siempre debe ser ``NULL``. Anteriormente se " "llamaba :c:data:`nb_long`, y se renombró en Python 3.0.1." -#: ../Doc/c-api/typeobj.rst:2181 +#: ../Doc/c-api/typeobj.rst:2184 msgid "Mapping Object Structures" msgstr "Estructuras de Objetos Mapeo" -#: ../Doc/c-api/typeobj.rst:2188 +#: ../Doc/c-api/typeobj.rst:2191 msgid "" "This structure holds pointers to the functions which an object uses to " "implement the mapping protocol. It has three members:" @@ -3840,7 +3829,7 @@ msgstr "" "Esta estructura contiene punteros a las funciones que utiliza un objeto para " "implementar el protocolo de mapeo. Tiene tres miembros:" -#: ../Doc/c-api/typeobj.rst:2193 +#: ../Doc/c-api/typeobj.rst:2196 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 " @@ -3850,7 +3839,7 @@ msgstr "" "`PyObject_Size`, y tiene la misma firma. Esta ranura puede establecerse en " "``NULL`` si el objeto no tiene una longitud definida." -#: ../Doc/c-api/typeobj.rst:2199 +#: ../Doc/c-api/typeobj.rst:2202 msgid "" "This function is used by :c:func:`PyObject_GetItem` and :c:func:" "`PySequence_GetSlice`, and has the same signature as :c:func:`!" @@ -3862,7 +3851,7 @@ msgstr "" "PyObject_GetItem`. Este espacio debe llenarse para que la función :c:func:" "`PyMapping_Check` retorna ``1``, de lo contrario puede ser ``NULL``." -#: ../Doc/c-api/typeobj.rst:2207 +#: ../Doc/c-api/typeobj.rst:2210 msgid "" "This function is used by :c:func:`PyObject_SetItem`, :c:func:" "`PyObject_DelItem`, :c:func:`PyObject_SetSlice` and :c:func:" @@ -3878,11 +3867,11 @@ msgstr "" "Si este espacio es ``NULL``, el objeto no admite la asignación y eliminación " "de elementos." -#: ../Doc/c-api/typeobj.rst:2218 +#: ../Doc/c-api/typeobj.rst:2221 msgid "Sequence Object Structures" msgstr "Estructuras de objetos secuencia" -#: ../Doc/c-api/typeobj.rst:2225 +#: ../Doc/c-api/typeobj.rst:2228 msgid "" "This structure holds pointers to the functions which an object uses to " "implement the sequence protocol." @@ -3890,7 +3879,7 @@ msgstr "" "Esta estructura contiene punteros a las funciones que utiliza un objeto para " "implementar el protocolo de secuencia." -#: ../Doc/c-api/typeobj.rst:2230 +#: ../Doc/c-api/typeobj.rst:2233 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 " @@ -3902,7 +3891,7 @@ msgstr "" "negativos a través de los espacios :c:member:`~PySequenceMethods.sq_item` y :" "c:member:`~PySequenceMethods.sq_ass_item`." -#: ../Doc/c-api/typeobj.rst:2237 +#: ../Doc/c-api/typeobj.rst:2240 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 " @@ -3912,7 +3901,7 @@ msgstr "" "firma. También es utilizado por el operador ``+``, después de intentar la " "suma numérica a través de la ranura :c:member:`~PyNumberMethods.nb_add`." -#: ../Doc/c-api/typeobj.rst:2243 +#: ../Doc/c-api/typeobj.rst:2246 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 " @@ -3923,7 +3912,7 @@ msgstr "" "multiplicación numérica a través de la ranura :c:member:`~PyNumberMethods." "nb_multiply`." -#: ../Doc/c-api/typeobj.rst:2249 +#: ../Doc/c-api/typeobj.rst:2252 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 " @@ -3937,7 +3926,7 @@ msgstr "" "mp_subscript`. Este espacio debe llenarse para que la función :c:func:" "`PySequence_Check` retorna ``1``, de lo contrario puede ser ``NULL``." -#: ../Doc/c-api/typeobj.rst:2255 +#: ../Doc/c-api/typeobj.rst:2258 msgid "" "Negative indexes are handled as follows: if the :attr:`sq_length` slot is " "filled, it is called and the sequence length is used to compute a positive " @@ -3949,7 +3938,7 @@ msgstr "" "para calcular un índice positivo que se pasa a :attr:`sq_item`. Si :attr:" "`sq_length` es ``NULL``, el índice se pasa como es a la función." -#: ../Doc/c-api/typeobj.rst:2262 +#: ../Doc/c-api/typeobj.rst:2265 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:" @@ -3964,7 +3953,7 @@ msgstr "" "mp_ass_subscript`. Este espacio puede dejarse en ``NULL`` si el objeto no " "admite la asignación y eliminación de elementos." -#: ../Doc/c-api/typeobj.rst:2271 +#: ../Doc/c-api/typeobj.rst:2274 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:`!" @@ -3975,7 +3964,7 @@ msgstr "" "`!PySequence_Contains` simplemente atraviesa la secuencia hasta que " "encuentra una coincidencia." -#: ../Doc/c-api/typeobj.rst:2278 +#: ../Doc/c-api/typeobj.rst:2281 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 " @@ -3991,7 +3980,7 @@ msgstr "" "asignación aumentada ``+=``, después de intentar la suma numérica en el " "lugar a través de la ranura :c:member:`~PyNumberMethods.nb_inplace_add`." -#: ../Doc/c-api/typeobj.rst:2287 +#: ../Doc/c-api/typeobj.rst:2290 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 " @@ -4008,11 +3997,11 @@ msgstr "" "en el lugar a través de la ranura :c:member:`~PyNumberMethods." "nb_inplace_multiply`." -#: ../Doc/c-api/typeobj.rst:2298 +#: ../Doc/c-api/typeobj.rst:2301 msgid "Buffer Object Structures" msgstr "Estructuras de Objetos Búfer" -#: ../Doc/c-api/typeobj.rst:2306 +#: ../Doc/c-api/typeobj.rst:2309 msgid "" "This structure holds pointers to the functions required by the :ref:`Buffer " "protocol `. The protocol defines how an exporter object can " @@ -4022,13 +4011,13 @@ msgstr "" "`Buffer protocol `. El protocolo define cómo un objeto " "exportador puede exponer sus datos internos a objetos de consumo." -#: ../Doc/c-api/typeobj.rst:2312 ../Doc/c-api/typeobj.rst:2361 -#: ../Doc/c-api/typeobj.rst:2415 ../Doc/c-api/typeobj.rst:2426 -#: ../Doc/c-api/typeobj.rst:2437 ../Doc/c-api/typeobj.rst:2446 +#: ../Doc/c-api/typeobj.rst:2315 ../Doc/c-api/typeobj.rst:2364 +#: ../Doc/c-api/typeobj.rst:2418 ../Doc/c-api/typeobj.rst:2429 +#: ../Doc/c-api/typeobj.rst:2441 ../Doc/c-api/typeobj.rst:2450 msgid "The signature of this function is::" msgstr "La firma de esta función es::" -#: ../Doc/c-api/typeobj.rst:2316 +#: ../Doc/c-api/typeobj.rst:2319 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 " @@ -4038,35 +4027,37 @@ msgstr "" "especificado por *flags*. Excepto por el punto (3), una implementación de " "esta función DEBE seguir estos pasos:" -#: ../Doc/c-api/typeobj.rst:2320 +#: ../Doc/c-api/typeobj.rst:2323 +#, fuzzy msgid "" "Check if the request can be met. If not, raise :c:data:`PyExc_BufferError`, " -"set :c:data:`view->obj` to ``NULL`` and return ``-1``." +"set :c:expr:`view->obj` to ``NULL`` and return ``-1``." msgstr "" "Comprueba si se puede cumplir con la solicitud. Si no, lanza :c:data:" "`PyExc_BufferError`, establece :c:data:`view->obj` en ``NULL`` y retorna " "``-1``." -#: ../Doc/c-api/typeobj.rst:2323 +#: ../Doc/c-api/typeobj.rst:2326 msgid "Fill in the requested fields." msgstr "Rellene los campos solicitados." -#: ../Doc/c-api/typeobj.rst:2325 +#: ../Doc/c-api/typeobj.rst:2328 msgid "Increment an internal counter for the number of exports." msgstr "" "Incrementa un contador interno para el número de exportaciones (*exports*)." -#: ../Doc/c-api/typeobj.rst:2327 +#: ../Doc/c-api/typeobj.rst:2330 +#, fuzzy msgid "" -"Set :c:data:`view->obj` to *exporter* and increment :c:data:`view->obj`." +"Set :c:expr:`view->obj` to *exporter* and increment :c:expr:`view->obj`." msgstr "" "Establece :c:data:`view->obj` en *exporter* e incremente :c:data:`view->obj`." -#: ../Doc/c-api/typeobj.rst:2329 +#: ../Doc/c-api/typeobj.rst:2332 msgid "Return ``0``." msgstr "Retorna ``0``." -#: ../Doc/c-api/typeobj.rst:2331 +#: ../Doc/c-api/typeobj.rst:2334 msgid "" "If *exporter* is part of a chain or tree of buffer providers, two main " "schemes can be used:" @@ -4074,23 +4065,25 @@ msgstr "" "Si *exporter* es parte de una cadena o árbol de proveedores de búfer, se " "pueden usar dos esquemas principales:" -#: ../Doc/c-api/typeobj.rst:2334 +#: ../Doc/c-api/typeobj.rst:2337 +#, fuzzy msgid "" "Re-export: Each member of the tree acts as the exporting object and sets :c:" -"data:`view->obj` to a new reference to itself." +"expr:`view->obj` to a new reference to itself." msgstr "" "Re-exportación: cada miembro del árbol actúa como el objeto exportador y " "establece :c:data:`view->obj` en una nueva referencia a sí mismo." -#: ../Doc/c-api/typeobj.rst:2337 +#: ../Doc/c-api/typeobj.rst:2340 +#, fuzzy msgid "" "Redirect: The buffer request is redirected to the root object of the tree. " -"Here, :c:data:`view->obj` will be a new reference to the root object." +"Here, :c:expr:`view->obj` will be a new reference to the root object." msgstr "" "Redirigir: la solicitud de búfer se redirige al objeto raíz del árbol. Aquí :" "c:data:`view->obj` será una nueva referencia al objeto raíz." -#: ../Doc/c-api/typeobj.rst:2341 +#: ../Doc/c-api/typeobj.rst:2344 msgid "" "The individual fields of *view* are described in section :ref:`Buffer " "structure `, the rules how an exporter must react to " @@ -4102,7 +4095,7 @@ msgstr "" "reaccionar un exportador a solicitudes específicas se encuentran en la " "sección :ref:`Tipos de solicitud de búfer `." -#: ../Doc/c-api/typeobj.rst:2346 +#: ../Doc/c-api/typeobj.rst:2349 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:" @@ -4116,7 +4109,7 @@ msgstr "" "`~Py_buffer.strides`, :c:member:`~Py_buffer.suboffsets` y :c:member:" "`~Py_buffer.internal` son de solo lectura para el consumidor." -#: ../Doc/c-api/typeobj.rst:2353 +#: ../Doc/c-api/typeobj.rst:2356 msgid "" ":c:func:`PyBuffer_FillInfo` provides an easy way of exposing a simple bytes " "buffer while dealing correctly with all request types." @@ -4125,7 +4118,7 @@ msgstr "" "de bytes simple mientras se trata correctamente con todos los tipos de " "solicitud." -#: ../Doc/c-api/typeobj.rst:2356 +#: ../Doc/c-api/typeobj.rst:2359 msgid "" ":c:func:`PyObject_GetBuffer` is the interface for the consumer that wraps " "this function." @@ -4133,7 +4126,7 @@ msgstr "" ":c:func:`PyObject_GetBuffer` es la interfaz para el consumidor que envuelve " "esta función." -#: ../Doc/c-api/typeobj.rst:2365 +#: ../Doc/c-api/typeobj.rst:2368 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 " @@ -4145,15 +4138,15 @@ msgstr "" "``NULL``. De lo contrario, una implementación estándar de esta función " "tomará estos pasos opcionales:" -#: ../Doc/c-api/typeobj.rst:2370 +#: ../Doc/c-api/typeobj.rst:2373 msgid "Decrement an internal counter for the number of exports." msgstr "Disminuir un contador interno para el número de exportaciones." -#: ../Doc/c-api/typeobj.rst:2372 +#: ../Doc/c-api/typeobj.rst:2375 msgid "If the counter is ``0``, free all memory associated with *view*." msgstr "Si el contador es ``0``, libera toda la memoria asociada con *view*." -#: ../Doc/c-api/typeobj.rst:2374 +#: ../Doc/c-api/typeobj.rst:2377 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 " @@ -4165,9 +4158,10 @@ msgstr "" "que este campo permanecerá constante, mientras que un consumidor PUEDE pasar " "una copia del búfer original como argumento *view*." -#: ../Doc/c-api/typeobj.rst:2380 +#: ../Doc/c-api/typeobj.rst:2383 +#, fuzzy msgid "" -"This function MUST NOT decrement :c:data:`view->obj`, since that is done " +"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 "" @@ -4175,7 +4169,7 @@ msgstr "" "automáticamente en :c:func:`PyBuffer_Release` (este esquema es útil para " "romper los ciclos de referencia)." -#: ../Doc/c-api/typeobj.rst:2385 +#: ../Doc/c-api/typeobj.rst:2388 msgid "" ":c:func:`PyBuffer_Release` is the interface for the consumer that wraps this " "function." @@ -4183,11 +4177,11 @@ msgstr "" ":c:func:`PyBuffer_Release` es la interfaz para el consumidor que envuelve " "esta función." -#: ../Doc/c-api/typeobj.rst:2393 +#: ../Doc/c-api/typeobj.rst:2396 msgid "Async Object Structures" msgstr "Estructuras de objetos asíncronos" -#: ../Doc/c-api/typeobj.rst:2401 +#: ../Doc/c-api/typeobj.rst:2404 msgid "" "This structure holds pointers to the functions required to implement :term:" "`awaitable` and :term:`asynchronous iterator` objects." @@ -4196,29 +4190,32 @@ msgstr "" "implementar objetos \"esperable\" (:term:`awaitable`) y \"iterador " "asincrónico\" (:term:`asynchronous iterator`)." -#: ../Doc/c-api/typeobj.rst:2419 +#: ../Doc/c-api/typeobj.rst:2422 +#, fuzzy msgid "" -"The returned object must be an iterator, i.e. :c:func:`PyIter_Check` must " -"return ``1`` for it." +"The returned object must be an :term:`iterator`, i.e. :c:func:`PyIter_Check` " +"must return ``1`` for it." msgstr "" "El objeto retornado debe ser un iterador, es decir :c:func:`PyIter_Check` " "debe retornar ``1`` para ello." -#: ../Doc/c-api/typeobj.rst:2422 +#: ../Doc/c-api/typeobj.rst:2425 msgid "" "This slot may be set to ``NULL`` if an object is not an :term:`awaitable`." msgstr "" "Este espacio puede establecerse en ``NULL`` si un objeto no es :term:" "`awaitable`." -#: ../Doc/c-api/typeobj.rst:2430 +#: ../Doc/c-api/typeobj.rst:2433 +#, fuzzy msgid "" -"Must return an :term:`awaitable` object. See :meth:`__anext__` for details." +"Must return an :term:`asynchronous iterator` object. See :meth:`__anext__` " +"for details." msgstr "" "Debe retornar un objeto \"esperable\" (:term:`awaitable`). Ver :meth:" "`__anext__` para más detalles." -#: ../Doc/c-api/typeobj.rst:2432 +#: ../Doc/c-api/typeobj.rst:2436 msgid "" "This slot may be set to ``NULL`` if an object does not implement " "asynchronous iteration protocol." @@ -4226,7 +4223,7 @@ msgstr "" "Este espacio puede establecerse en ``NULL`` si un objeto no implementa el " "protocolo de iteración asincrónica." -#: ../Doc/c-api/typeobj.rst:2441 +#: ../Doc/c-api/typeobj.rst:2445 msgid "" "Must return an :term:`awaitable` object. See :meth:`__anext__` for details. " "This slot may be set to ``NULL``." @@ -4234,18 +4231,18 @@ msgstr "" "Debe retornar un objeto \"esperable\" (:term:`awaitable`). Ver :meth:" "`__anext__` para más detalles. Esta ranura puede establecerse en ``NULL``." -#: ../Doc/c-api/typeobj.rst:2450 +#: ../Doc/c-api/typeobj.rst:2454 msgid "" "See :c:func:`PyIter_Send` for details. This slot may be set to ``NULL``." msgstr "" "Consulte :c:func:`PyIter_Send` para obtener más detalles. Esta ranura se " "puede establecer en ``NULL``." -#: ../Doc/c-api/typeobj.rst:2459 +#: ../Doc/c-api/typeobj.rst:2463 msgid "Slot Type typedefs" msgstr "Tipo Ranura *typedefs*" -#: ../Doc/c-api/typeobj.rst:2463 +#: ../Doc/c-api/typeobj.rst:2467 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 " @@ -4269,7 +4266,7 @@ msgstr "" "``sizeof(void*)``; de lo contrario, *nitems* no se usa y la longitud del " "bloque debe ser :c:member:`~PyTypeObject.tp_basicsize`." -#: ../Doc/c-api/typeobj.rst:2473 +#: ../Doc/c-api/typeobj.rst:2477 msgid "" "This function should not do any other instance initialization, not even to " "allocate additional memory; that should be done by :c:member:`~PyTypeObject." @@ -4279,27 +4276,27 @@ msgstr "" "siquiera para asignar memoria adicional; eso debe ser realizado por :c:" "member:`~PyTypeObject.tp_new`." -#: ../Doc/c-api/typeobj.rst:2480 +#: ../Doc/c-api/typeobj.rst:2484 msgid "See :c:member:`~PyTypeObject.tp_free`." msgstr "Consulte :c:member:`~PyTypeObject.tp_free`." -#: ../Doc/c-api/typeobj.rst:2484 +#: ../Doc/c-api/typeobj.rst:2488 msgid "See :c:member:`~PyTypeObject.tp_new`." msgstr "Consulte :c:member:`~PyTypeObject.tp_new`." -#: ../Doc/c-api/typeobj.rst:2488 +#: ../Doc/c-api/typeobj.rst:2492 msgid "See :c:member:`~PyTypeObject.tp_init`." msgstr "Consulte :c:member:`~PyTypeObject.tp_init`." -#: ../Doc/c-api/typeobj.rst:2492 +#: ../Doc/c-api/typeobj.rst:2496 msgid "See :c:member:`~PyTypeObject.tp_repr`." msgstr "Consulte :c:member:`~PyTypeObject.tp_repr`." -#: ../Doc/c-api/typeobj.rst:2496 ../Doc/c-api/typeobj.rst:2505 +#: ../Doc/c-api/typeobj.rst:2500 ../Doc/c-api/typeobj.rst:2509 msgid "Return the value of the named attribute for the object." msgstr "Retorna el valor del atributo nombrado para el objeto." -#: ../Doc/c-api/typeobj.rst:2500 ../Doc/c-api/typeobj.rst:2511 +#: ../Doc/c-api/typeobj.rst:2504 ../Doc/c-api/typeobj.rst:2515 msgid "" "Set the value of the named attribute for the object. The value argument is " "set to ``NULL`` to delete the attribute." @@ -4307,47 +4304,49 @@ msgstr "" "Establece el valor del atributo nombrado para el objeto. El argumento del " "valor se establece en ``NULL`` para eliminar el atributo." -#: ../Doc/c-api/typeobj.rst:2507 +#: ../Doc/c-api/typeobj.rst:2511 msgid "See :c:member:`~PyTypeObject.tp_getattro`." msgstr "Consulte :c:member:`~PyTypeObject.tp_getattro`." -#: ../Doc/c-api/typeobj.rst:2514 +#: ../Doc/c-api/typeobj.rst:2518 msgid "See :c:member:`~PyTypeObject.tp_setattro`." msgstr "Consulte :c:member:`~PyTypeObject.tp_setattro`." -#: ../Doc/c-api/typeobj.rst:2518 -msgid "See :c:member:`~PyTypeObject.tp_descrget`." +#: ../Doc/c-api/typeobj.rst:2522 +#, fuzzy +msgid "See :c:member:`~PyTypeObject.tp_descr_get`." msgstr "Consulte :c:member:`~PyTypeObject.tp_descrget`." -#: ../Doc/c-api/typeobj.rst:2522 -msgid "See :c:member:`~PyTypeObject.tp_descrset`." +#: ../Doc/c-api/typeobj.rst:2526 +#, fuzzy +msgid "See :c:member:`~PyTypeObject.tp_descr_set`." msgstr "Consulte :c:member:`~PyTypeObject.tp_descrset`." -#: ../Doc/c-api/typeobj.rst:2526 +#: ../Doc/c-api/typeobj.rst:2530 msgid "See :c:member:`~PyTypeObject.tp_hash`." msgstr "Consulte :c:member:`~PyTypeObject.tp_hash`." -#: ../Doc/c-api/typeobj.rst:2530 +#: ../Doc/c-api/typeobj.rst:2534 msgid "See :c:member:`~PyTypeObject.tp_richcompare`." msgstr "Consulte :c:member:`~PyTypeObject.tp_richcompare`." -#: ../Doc/c-api/typeobj.rst:2534 +#: ../Doc/c-api/typeobj.rst:2538 msgid "See :c:member:`~PyTypeObject.tp_iter`." msgstr "Consulte :c:member:`~PyTypeObject.tp_iter`." -#: ../Doc/c-api/typeobj.rst:2538 +#: ../Doc/c-api/typeobj.rst:2542 msgid "See :c:member:`~PyTypeObject.tp_iternext`." msgstr "Consulte :c:member:`~PyTypeObject.tp_iternext`." -#: ../Doc/c-api/typeobj.rst:2552 +#: ../Doc/c-api/typeobj.rst:2556 msgid "See :c:member:`~PyAsyncMethods.am_send`." msgstr "Consulte :c:member:`~PyAsyncMethods.am_send`." -#: ../Doc/c-api/typeobj.rst:2568 +#: ../Doc/c-api/typeobj.rst:2572 msgid "Examples" msgstr "Ejemplos" -#: ../Doc/c-api/typeobj.rst:2570 +#: ../Doc/c-api/typeobj.rst:2574 msgid "" "The following are simple examples of Python type definitions. They include " "common usage you may encounter. Some demonstrate tricky corner cases. For " @@ -4360,11 +4359,11 @@ msgstr "" "un tutorial, consulte \"definiendo nuevos tipos\" (:ref:`defining-new-" "types`) y \"tópicos de nuevos tipos (:ref:`new-types-topics`)." -#: ../Doc/c-api/typeobj.rst:2575 +#: ../Doc/c-api/typeobj.rst:2579 msgid "A basic :ref:`static type `::" msgstr "Un :ref:`tipo estático ` básico:" -#: ../Doc/c-api/typeobj.rst:2592 +#: ../Doc/c-api/typeobj.rst:2596 msgid "" "You may also find older code (especially in the CPython code base) with a " "more verbose initializer::" @@ -4372,13 +4371,13 @@ msgstr "" "También puede encontrar código más antiguo (especialmente en la base de " "código CPython) con un inicializador más detallado::" -#: ../Doc/c-api/typeobj.rst:2636 +#: ../Doc/c-api/typeobj.rst:2640 msgid "A type that supports weakrefs, instance dicts, and hashing::" msgstr "" "Un tipo que admite referencias débiles, instancias de diccionarios (*dicts*) " "y *hashing*::" -#: ../Doc/c-api/typeobj.rst:2663 +#: ../Doc/c-api/typeobj.rst:2667 msgid "" "A str subclass that cannot be subclassed and cannot be called to create " "instances (e.g. uses a separate factory func) using :c:data:" @@ -4388,17 +4387,70 @@ msgstr "" "crear instancias (por ejemplo, usa una función de fábrica separada) usando " "el indicador :c:data:`Py_TPFLAGS_DISALLOW_INSTANTIATION`:" -#: ../Doc/c-api/typeobj.rst:2682 +#: ../Doc/c-api/typeobj.rst:2686 msgid "" "The simplest :ref:`static type ` with fixed-length instances::" msgstr "" "El :ref:`tipo estático ` más simple con instancias de longitud " "fija:" -#: ../Doc/c-api/typeobj.rst:2693 +#: ../Doc/c-api/typeobj.rst:2697 msgid "" "The simplest :ref:`static type ` with variable-length " "instances::" msgstr "" "El :ref:`tipo estático ` más simple con instancias de longitud " "variable:" + +#~ msgid "Py_ssize_t" +#~ msgstr "Py_ssize_t" + +#~ msgid "" +#~ "The semantics of the ``tp_vectorcall_offset`` slot are provisional and " +#~ "expected to be finalized in Python 3.9. If you use vectorcall, plan for " +#~ "updating your code for Python 3.9." +#~ msgstr "" +#~ "La semántica de la ranura ``tp_vectorcall_offset`` es provisional y se " +#~ "espera que finalice en Python 3.9. Si usa *vectorcall*, planifique " +#~ "actualizar su código para Python 3.9." + +#~ msgid "" +#~ "This bit is inherited for :ref:`static subtypes ` if :c:" +#~ "member:`~PyTypeObject.tp_call` is also inherited. :ref:`Heap types ` do not inherit ``Py_TPFLAGS_HAVE_VECTORCALL``." +#~ msgstr "" +#~ "Este bit se hereda para :ref:`static subtypes ` si también " +#~ "se hereda :c:member:`~PyTypeObject.tp_call`. :ref:`Tipos heap ` no hereda ``Py_TPFLAGS_HAVE_VECTORCALL``." + +#~ msgid "" +#~ "The real dictionary offset in an instance can be computed from a " +#~ "negative :c:member:`~PyTypeObject.tp_dictoffset` as follows::" +#~ msgstr "" +#~ "El desplazamiento real del diccionario en una instancia se puede calcular " +#~ "a partir de un elemento negativo :c:member:`~PyTypeObject.tp_dictoffset` " +#~ "de la siguiente manera::" + +#~ msgid "" +#~ "where :c:member:`~PyTypeObject.tp_basicsize`, :c:member:`~PyTypeObject." +#~ "tp_itemsize` and :c:member:`~PyTypeObject.tp_dictoffset` are taken from " +#~ "the type object, and :attr:`ob_size` is taken from the instance. The " +#~ "absolute value is taken because ints use the sign of :attr:`ob_size` to " +#~ "store the sign of the number. (There's never a need to do this " +#~ "calculation yourself; it is done for you by :c:func:" +#~ "`_PyObject_GetDictPtr`.)" +#~ msgstr "" +#~ "donde :c:member:`~PyTypeObject.tp_basicsize`, :c:member:`~PyTypeObject." +#~ "tp_itemsize` y :c:member:`~PyTypeObject.tp_dictoffset` se toman del " +#~ "objeto *type*, y :attr:`ob_size` está tomado de la instancia. Se toma el " +#~ "valor absoluto porque *ints* usa el signo de :attr:`ob_size` para " +#~ "almacenar el signo del número. (Nunca es necesario hacer este cálculo " +#~ "usted mismo; lo hace por usted la función :c:func:`_PyObject_GetDictPtr`.)" + +#~ msgid "" +#~ "For this field to be taken into account (even through inheritance), you " +#~ "must also set the :const:`Py_TPFLAGS_HAVE_FINALIZE` flags bit." +#~ msgstr "" +#~ "Para que este campo se tenga en cuenta (incluso a través de la herencia), " +#~ "también debe establecer el bit de banderas :const:" +#~ "`Py_TPFLAGS_HAVE_FINALIZE`." diff --git a/c-api/unicode.po b/c-api/unicode.po index 4ce4dc23f3..4432028a4c 100644 --- a/c-api/unicode.po +++ b/c-api/unicode.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-10-30 20:53-0300\n" "Last-Translator: Cristián Maureira-Fredes \n" "Language: es\n" @@ -20,8 +20,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/c-api/unicode.rst:6 msgid "Unicode Objects and Codecs" @@ -49,9 +48,10 @@ msgstr "" "rango completo de Unicode)." #: ../Doc/c-api/unicode.rst:20 +#, fuzzy msgid "" -":c:type:`Py_UNICODE*` and UTF-8 representations are created on demand and " -"cached in the Unicode object. The :c:type:`Py_UNICODE*` representation is " +":c:expr:`Py_UNICODE*` and UTF-8 representations are created on demand and " +"cached in the Unicode object. The :c:expr:`Py_UNICODE*` representation is " "deprecated and inefficient." msgstr "" ":c:type:`Py_UNICODE *` y las representaciones UTF-8 se crean a pedido y se " @@ -79,9 +79,10 @@ msgstr "" "la implementación." #: ../Doc/c-api/unicode.rst:31 +#, fuzzy msgid "" "\"legacy\" Unicode objects have been created through one of the deprecated " -"APIs (typically :c:func:`PyUnicode_FromUnicode`) and only bear the :c:type:" +"APIs (typically :c:func:`PyUnicode_FromUnicode`) and only bear the :c:expr:" "`Py_UNICODE*` representation; you will have to call :c:func:" "`PyUnicode_READY` on them before calling any other API." msgstr "" @@ -124,8 +125,9 @@ msgstr "" "con caracteres Unicode individuales, use :c:type:`Py_UCS4`." #: ../Doc/c-api/unicode.rst:61 +#, fuzzy msgid "" -"This is a typedef of :c:type:`wchar_t`, which is a 16-bit type or 32-bit " +"This is a typedef of :c:expr:`wchar_t`, which is a 16-bit type or 32-bit " "type depending on the platform." msgstr "" "Este es una definición de tipo (*typedef*) de :c:type:`wchar_t`, que es un " @@ -161,9 +163,10 @@ msgstr "" "Está expuesto al código de Python como ``str``." #: ../Doc/c-api/unicode.rst:87 +#, fuzzy msgid "" -"The following APIs are really C macros and can be used to do fast checks and " -"to access internal read-only data of Unicode objects:" +"The following APIs are C macros and static inlined functions for fast checks " +"and access to internal read-only data of Unicode objects:" msgstr "" "Las siguientes API son realmente macros de C y se pueden utilizar para " "realizar comprobaciones rápidas y acceder a datos internos de solo lectura " @@ -246,8 +249,8 @@ msgid "" msgstr "" "Retorna una de las constantes de tipo ``PyUnicode`` (ver arriba) que indican " "cuántos bytes por carácter utiliza este objeto Unicode para almacenar sus " -"datos. *o* tiene que ser un objeto Unicode en la representación \"canónica" -"\" (no marcada)." +"datos. *o* tiene que ser un objeto Unicode en la representación " +"\"canónica\" (no marcada)." #: ../Doc/c-api/unicode.rst:165 msgid "" @@ -258,12 +261,13 @@ msgstr "" "objeto Unicode en la representación \"canónica\" (no marcada)." #: ../Doc/c-api/unicode.rst:174 +#, fuzzy msgid "" "Write into a canonical representation *data* (as obtained with :c:func:" -"`PyUnicode_DATA`). This macro does not do any sanity checks and is intended " +"`PyUnicode_DATA`). This function performs no sanity checks, and is intended " "for usage in loops. The caller should cache the *kind* value and *data* " -"pointer as obtained from other macro calls. *index* is the index in the " -"string (starts at 0) and *value* is the new code point value which should be " +"pointer as obtained from other calls. *index* is the index in the string " +"(starts at 0) and *value* is the new code point value which should be " "written to that location." msgstr "" "Escribe en una representación canónica *data* (como se obtiene con :c:func:" @@ -274,7 +278,7 @@ msgstr "" "y *value* es el nuevo valor del punto de código que debe escribirse en esa " "ubicación." -#: ../Doc/c-api/unicode.rst:186 +#: ../Doc/c-api/unicode.rst:187 msgid "" "Read a code point from a canonical representation *data* (as obtained with :" "c:func:`PyUnicode_DATA`). No checks or ready calls are performed." @@ -283,17 +287,17 @@ msgstr "" "c:func:`PyUnicode_DATA`). No se realizan verificaciones ni llamadas " "preparadas." -#: ../Doc/c-api/unicode.rst:194 +#: ../Doc/c-api/unicode.rst:195 msgid "" -"Read a character from a Unicode object *o*, which must be in the \"canonical" -"\" representation. This is less efficient than :c:func:`PyUnicode_READ` if " -"you do multiple consecutive reads." +"Read a character from a Unicode object *o*, which must be in the " +"\"canonical\" representation. This is less efficient than :c:func:" +"`PyUnicode_READ` if you do multiple consecutive reads." msgstr "" "Lee un carácter de un objeto Unicode *o*, que debe estar en la " "representación \"canónica\". Esto es menos eficiente que :c:func:" "`PyUnicode_READ` si realiza varias lecturas consecutivas." -#: ../Doc/c-api/unicode.rst:203 +#: ../Doc/c-api/unicode.rst:204 msgid "" "Return the maximum code point that is suitable for creating another string " "based on *o*, which must be in the \"canonical\" representation. This is " @@ -304,7 +308,7 @@ msgstr "" "Esto siempre es una aproximación pero más eficiente que iterar sobre la " "cadena." -#: ../Doc/c-api/unicode.rst:212 +#: ../Doc/c-api/unicode.rst:213 msgid "" "Return the size of the deprecated :c:type:`Py_UNICODE` representation, in " "code units (this includes surrogate pairs as 2 units). *o* has to be a " @@ -314,8 +318,8 @@ msgstr "" "unidades de código (esto incluye pares sustitutos como 2 unidades). *o* " "tiene que ser un objeto Unicode (no marcado)." -#: ../Doc/c-api/unicode.rst:218 ../Doc/c-api/unicode.rst:228 -#: ../Doc/c-api/unicode.rst:756 +#: ../Doc/c-api/unicode.rst:219 ../Doc/c-api/unicode.rst:229 +#: ../Doc/c-api/unicode.rst:752 msgid "" "Part of the old-style Unicode API, please migrate to using :c:func:" "`PyUnicode_GET_LENGTH`." @@ -323,7 +327,7 @@ msgstr "" "Parte de la API Unicode de estilo antiguo, por favor migrar para usar :c:" "func:`PyUnicode_GET_LENGTH`." -#: ../Doc/c-api/unicode.rst:223 +#: ../Doc/c-api/unicode.rst:224 msgid "" "Return the size of the deprecated :c:type:`Py_UNICODE` representation in " "bytes. *o* has to be a Unicode object (not checked)." @@ -331,13 +335,14 @@ msgstr "" "Retorna el tamaño de la representación en desuso :c:type:`Py_UNICODE` en " "bytes. *o* tiene que ser un objeto Unicode (no marcado)." -#: ../Doc/c-api/unicode.rst:234 +#: ../Doc/c-api/unicode.rst:235 +#, fuzzy msgid "" "Return a pointer to a :c:type:`Py_UNICODE` representation of the object. " "The returned buffer is always terminated with an extra null code point. It " "may also contain embedded null code points, which would cause the string to " "be truncated when used in most C functions. The ``AS_DATA`` form casts the " -"pointer to :c:type:`const char *`. The *o* argument has to be a Unicode " +"pointer to :c:expr:`const char *`. The *o* argument has to be a Unicode " "object (not checked)." msgstr "" "Retorna un puntero a una representación :c:type:`Py_UNICODE` del objeto. El " @@ -347,9 +352,10 @@ msgstr "" "funciones de C. La forma ``AS_DATA`` arroja el puntero a :c:type:`const char " "*`. El argumento *o* tiene que ser un objeto Unicode (no marcado)." -#: ../Doc/c-api/unicode.rst:241 +#: ../Doc/c-api/unicode.rst:242 +#, fuzzy msgid "" -"This macro is now inefficient -- because in many cases the :c:type:" +"This function is now inefficient -- because in many cases the :c:type:" "`Py_UNICODE` representation does not exist and needs to be created -- and " "can fail (return ``NULL`` with an exception set). Try to port the code to " "use the new :c:func:`PyUnicode_nBYTE_DATA` macros or use :c:func:" @@ -361,7 +367,7 @@ msgstr "" "las nuevas macros :c:func:`PyUnicode_nBYTE_DATA` o use :c:func:" "`PyUnicode_WRITE` o :c:func:`PyUnicode_READ`." -#: ../Doc/c-api/unicode.rst:250 +#: ../Doc/c-api/unicode.rst:251 msgid "" "Part of the old-style Unicode API, please migrate to using the :c:func:" "`PyUnicode_nBYTE_DATA` family of macros." @@ -369,7 +375,7 @@ msgstr "" "Parte de la antigua API Unicode, por favor migre para usar la familia de " "macros :c:func:`PyUnicode_nBYTE_DATA`." -#: ../Doc/c-api/unicode.rst:255 +#: ../Doc/c-api/unicode.rst:256 msgid "" "Return ``1`` if the string is a valid identifier according to the language " "definition, section :ref:`identifiers`. Return ``0`` otherwise." @@ -378,7 +384,7 @@ msgstr "" "acuerdo con la definición del lenguaje, sección :ref:`identifiers`. Retorna " "``0`` de lo contrario." -#: ../Doc/c-api/unicode.rst:258 +#: ../Doc/c-api/unicode.rst:259 msgid "" "The function does not call :c:func:`Py_FatalError` anymore if the string is " "not ready." @@ -386,11 +392,11 @@ msgstr "" "La función ya no llama a :c:func:`Py_FatalError` si la cadena de caracteres " "no está lista." -#: ../Doc/c-api/unicode.rst:264 +#: ../Doc/c-api/unicode.rst:265 msgid "Unicode Character Properties" msgstr "Propiedades de caracteres Unicode" -#: ../Doc/c-api/unicode.rst:266 +#: ../Doc/c-api/unicode.rst:267 msgid "" "Unicode provides many different character properties. The most often needed " "ones are available through these macros which are mapped to C functions " @@ -400,66 +406,66 @@ msgstr "" "necesitan con mayor frecuencia están disponibles a través de estas macros " "que se asignan a las funciones de C según la configuración de Python." -#: ../Doc/c-api/unicode.rst:273 +#: ../Doc/c-api/unicode.rst:274 msgid "" "Return ``1`` or ``0`` depending on whether *ch* is a whitespace character." msgstr "" "Retorna ``1`` o ``0`` dependiendo de si *ch* es un carácter de espacio en " "blanco." -#: ../Doc/c-api/unicode.rst:278 +#: ../Doc/c-api/unicode.rst:279 msgid "" "Return ``1`` or ``0`` depending on whether *ch* is a lowercase character." msgstr "" "Retorna ``1`` o ``0`` dependiendo de si *ch* es un carácter en minúscula." -#: ../Doc/c-api/unicode.rst:283 +#: ../Doc/c-api/unicode.rst:284 msgid "" "Return ``1`` or ``0`` depending on whether *ch* is an uppercase character." msgstr "" "Retorna ``1`` o ``0`` dependiendo de si *ch* es un carácter en mayúscula." -#: ../Doc/c-api/unicode.rst:288 +#: ../Doc/c-api/unicode.rst:289 msgid "" "Return ``1`` or ``0`` depending on whether *ch* is a titlecase character." msgstr "" "Retorna ``1`` o ``0`` dependiendo de si *ch* es un carácter en caso de " "título (*titlecase*)." -#: ../Doc/c-api/unicode.rst:293 +#: ../Doc/c-api/unicode.rst:294 msgid "" "Return ``1`` or ``0`` depending on whether *ch* is a linebreak character." msgstr "" "Retorna ``1`` o ``0`` dependiendo de si *ch* es un carácter de salto de " "línea." -#: ../Doc/c-api/unicode.rst:298 +#: ../Doc/c-api/unicode.rst:299 msgid "Return ``1`` or ``0`` depending on whether *ch* is a decimal character." msgstr "" "Retorna ``1`` o ``0`` dependiendo de si *ch* es un carácter decimal o no." -#: ../Doc/c-api/unicode.rst:303 +#: ../Doc/c-api/unicode.rst:304 msgid "Return ``1`` or ``0`` depending on whether *ch* is a digit character." msgstr "" "Retorna ``1`` o ``0`` dependiendo de si *ch* es un carácter de dígitos." -#: ../Doc/c-api/unicode.rst:308 +#: ../Doc/c-api/unicode.rst:309 msgid "Return ``1`` or ``0`` depending on whether *ch* is a numeric character." msgstr "Retorna ``1`` o ``0`` dependiendo de si *ch* es un carácter numérico." -#: ../Doc/c-api/unicode.rst:313 +#: ../Doc/c-api/unicode.rst:314 msgid "" "Return ``1`` or ``0`` depending on whether *ch* is an alphabetic character." msgstr "" "Retorna ``1`` o ``0`` dependiendo de si *ch* es un carácter alfabético." -#: ../Doc/c-api/unicode.rst:318 +#: ../Doc/c-api/unicode.rst:319 msgid "" "Return ``1`` or ``0`` depending on whether *ch* is an alphanumeric character." msgstr "" "Retorna ``1`` o ``0`` dependiendo de si *ch* es un carácter alfanumérico." -#: ../Doc/c-api/unicode.rst:323 +#: ../Doc/c-api/unicode.rst:324 msgid "" "Return ``1`` or ``0`` depending on whether *ch* is a printable character. " "Nonprintable characters are those characters defined in the Unicode " @@ -478,29 +484,29 @@ msgstr "" "con el manejo de cadenas de caracteres escritas en :data:`sys.stdout` o :" "data:`sys.stderr`.)" -#: ../Doc/c-api/unicode.rst:332 +#: ../Doc/c-api/unicode.rst:333 msgid "These APIs can be used for fast direct character conversions:" msgstr "" "Estas API se pueden usar para conversiones caracteres rápidas y directos:" -#: ../Doc/c-api/unicode.rst:337 +#: ../Doc/c-api/unicode.rst:338 msgid "Return the character *ch* converted to lower case." msgstr "Retorna el carácter *ch* convertido a minúsculas." -#: ../Doc/c-api/unicode.rst:339 ../Doc/c-api/unicode.rst:347 -#: ../Doc/c-api/unicode.rst:355 +#: ../Doc/c-api/unicode.rst:340 ../Doc/c-api/unicode.rst:348 +#: ../Doc/c-api/unicode.rst:356 msgid "This function uses simple case mappings." msgstr "Esta función utiliza conversiones simples." -#: ../Doc/c-api/unicode.rst:345 +#: ../Doc/c-api/unicode.rst:346 msgid "Return the character *ch* converted to upper case." msgstr "Retorna el carácter *ch* convertido a mayúsculas." -#: ../Doc/c-api/unicode.rst:353 +#: ../Doc/c-api/unicode.rst:354 msgid "Return the character *ch* converted to title case." msgstr "Retorna el carácter *ch* convertido a formato de título (*titlecase*)." -#: ../Doc/c-api/unicode.rst:361 +#: ../Doc/c-api/unicode.rst:362 msgid "" "Return the character *ch* converted to a decimal positive integer. Return " "``-1`` if this is not possible. This macro does not raise exceptions." @@ -508,7 +514,7 @@ msgstr "" "Retorna el carácter *ch* convertido a un entero positivo decimal. Retorna " "``-1`` si esto no es posible. Esta macro no lanza excepciones." -#: ../Doc/c-api/unicode.rst:367 +#: ../Doc/c-api/unicode.rst:368 msgid "" "Return the character *ch* converted to a single digit integer. Return ``-1`` " "if this is not possible. This macro does not raise exceptions." @@ -516,7 +522,7 @@ msgstr "" "Retorna el carácter *ch* convertido a un entero de un solo dígito. Retorna " "``-1`` si esto no es posible. Esta macro no lanza excepciones." -#: ../Doc/c-api/unicode.rst:373 +#: ../Doc/c-api/unicode.rst:374 msgid "" "Return the character *ch* converted to a double. Return ``-1.0`` if this is " "not possible. This macro does not raise exceptions." @@ -524,23 +530,23 @@ msgstr "" "Retorna el carácter *ch* convertido a doble. retorne ``-1.0`` si esto no es " "posible. Esta macro no lanza excepciones." -#: ../Doc/c-api/unicode.rst:377 +#: ../Doc/c-api/unicode.rst:378 msgid "These APIs can be used to work with surrogates:" msgstr "Estas API se pueden usar para trabajar con sustitutos:" -#: ../Doc/c-api/unicode.rst:381 +#: ../Doc/c-api/unicode.rst:382 msgid "Check if *ch* is a surrogate (``0xD800 <= ch <= 0xDFFF``)." msgstr "Comprueba si *ch* es un sustituto (``0xD800 <= ch <= 0xDFFF``)." -#: ../Doc/c-api/unicode.rst:385 +#: ../Doc/c-api/unicode.rst:386 msgid "Check if *ch* is a high surrogate (``0xD800 <= ch <= 0xDBFF``)." msgstr "Comprueba si *ch* es un sustituto alto (``0xD800 <= ch <= 0xDFFF``)." -#: ../Doc/c-api/unicode.rst:389 +#: ../Doc/c-api/unicode.rst:390 msgid "Check if *ch* is a low surrogate (``0xDC00 <= ch <= 0xDFFF``)." msgstr "Comprueba si *ch* es un sustituto bajo (``0xD800 <= ch <= 0xDFFF``)." -#: ../Doc/c-api/unicode.rst:393 +#: ../Doc/c-api/unicode.rst:394 msgid "" "Join two surrogate characters and return a single Py_UCS4 value. *high* and " "*low* are respectively the leading and trailing surrogates in a surrogate " @@ -550,11 +556,11 @@ msgstr "" "*low* son respectivamente los sustitutos iniciales y finales en un par " "sustituto." -#: ../Doc/c-api/unicode.rst:399 +#: ../Doc/c-api/unicode.rst:400 msgid "Creating and accessing Unicode strings" msgstr "Creando y accediendo a cadenas de caracteres Unicode" -#: ../Doc/c-api/unicode.rst:401 +#: ../Doc/c-api/unicode.rst:402 msgid "" "To create Unicode objects and access their basic sequence properties, use " "these APIs:" @@ -562,7 +568,7 @@ msgstr "" "Para crear objetos Unicode y acceder a sus propiedades de secuencia básicas, " "use estas API:" -#: ../Doc/c-api/unicode.rst:406 +#: ../Doc/c-api/unicode.rst:407 msgid "" "Create a new Unicode object. *maxchar* should be the true maximum code " "point to be placed in the string. As an approximation, it can be rounded up " @@ -572,7 +578,7 @@ msgstr "" "que se colocará en la cadena de caracteres. Como una aproximación, se puede " "redondear al valor más cercano en la secuencia 127, 255, 65535, 1114111." -#: ../Doc/c-api/unicode.rst:410 +#: ../Doc/c-api/unicode.rst:411 msgid "" "This is the recommended way to allocate a new Unicode object. Objects " "created using this function are not resizable." @@ -580,7 +586,7 @@ msgstr "" "Esta es la forma recomendada de asignar un nuevo objeto Unicode. Los objetos " "creados con esta función no se pueden redimensionar." -#: ../Doc/c-api/unicode.rst:419 +#: ../Doc/c-api/unicode.rst:420 msgid "" "Create a new Unicode object with the given *kind* (possible values are :c:" "macro:`PyUnicode_1BYTE_KIND` etc., as returned by :c:func:" @@ -592,7 +598,15 @@ msgstr "" "`PyUnicode_KIND`). El *búfer* debe apuntar a un vector (*array*) de *tamaño* " "unidades de 1, 2 o 4 bytes por carácter, según el tipo." -#: ../Doc/c-api/unicode.rst:429 +#: ../Doc/c-api/unicode.rst:425 +msgid "" +"If necessary, the input *buffer* is copied and transformed into the " +"canonical representation. For example, if the *buffer* is a UCS4 string (:c:" +"macro:`PyUnicode_4BYTE_KIND`) and it consists only of codepoints in the UCS1 " +"range, it will be transformed into UCS1 (:c:macro:`PyUnicode_1BYTE_KIND`)." +msgstr "" + +#: ../Doc/c-api/unicode.rst:436 msgid "" "Create a Unicode object from the char buffer *u*. The bytes will be " "interpreted as being UTF-8 encoded. The buffer is copied into the new " @@ -604,7 +618,7 @@ msgstr "" "objeto. Si el búfer no es ``NULL``, el valor de retorno podría ser un objeto " "compartido, es decir, no se permite la modificación de los datos." -#: ../Doc/c-api/unicode.rst:434 +#: ../Doc/c-api/unicode.rst:441 msgid "" "If *u* is ``NULL``, this function behaves like :c:func:" "`PyUnicode_FromUnicode` with the buffer set to ``NULL``. This usage is " @@ -615,14 +629,14 @@ msgstr "" "`PyUnicode_FromUnicode` con el búfer establecido en ``NULL``. Este uso se " "considera obsoleto (*deprecated*) en favor de :c:func:`PyUnicode_New`." -#: ../Doc/c-api/unicode.rst:441 +#: ../Doc/c-api/unicode.rst:448 msgid "" "Create a Unicode object from a UTF-8 encoded null-terminated char buffer *u*." msgstr "" "Crea un objeto Unicode a partir de un búfer *u* de caracteres terminado en " "nulo y codificado en UTF-8." -#: ../Doc/c-api/unicode.rst:447 +#: ../Doc/c-api/unicode.rst:454 msgid "" "Take a C :c:func:`printf`\\ -style *format* string and a variable number of " "arguments, calculate the size of the resulting Python Unicode string and " @@ -638,253 +652,253 @@ msgstr "" "caracteres *format* codificada en ASCII. Se permiten los siguientes " "caracteres de formato:" -#: ../Doc/c-api/unicode.rst:462 +#: ../Doc/c-api/unicode.rst:469 msgid "Format Characters" msgstr "Formatear caracteres" -#: ../Doc/c-api/unicode.rst:462 +#: ../Doc/c-api/unicode.rst:469 msgid "Type" msgstr "Tipo" -#: ../Doc/c-api/unicode.rst:462 +#: ../Doc/c-api/unicode.rst:469 msgid "Comment" msgstr "Comentario" -#: ../Doc/c-api/unicode.rst:464 +#: ../Doc/c-api/unicode.rst:471 #, python-format msgid ":attr:`%%`" msgstr ":attr:`%%`" -#: ../Doc/c-api/unicode.rst:464 +#: ../Doc/c-api/unicode.rst:471 msgid "*n/a*" msgstr "*n/a*" -#: ../Doc/c-api/unicode.rst:464 +#: ../Doc/c-api/unicode.rst:471 #, python-format msgid "The literal % character." msgstr "El carácter literal %." -#: ../Doc/c-api/unicode.rst:466 +#: ../Doc/c-api/unicode.rst:473 #, python-format msgid ":attr:`%c`" msgstr ":attr:`%c`" -#: ../Doc/c-api/unicode.rst:466 ../Doc/c-api/unicode.rst:469 -#: ../Doc/c-api/unicode.rst:502 ../Doc/c-api/unicode.rst:505 +#: ../Doc/c-api/unicode.rst:473 ../Doc/c-api/unicode.rst:476 +#: ../Doc/c-api/unicode.rst:509 ../Doc/c-api/unicode.rst:512 msgid "int" msgstr "int" -#: ../Doc/c-api/unicode.rst:466 +#: ../Doc/c-api/unicode.rst:473 msgid "A single character, represented as a C int." msgstr "Un solo carácter, representado como un entero (*int*) de C." -#: ../Doc/c-api/unicode.rst:469 +#: ../Doc/c-api/unicode.rst:476 #, python-format msgid ":attr:`%d`" msgstr ":attr:`%d`" -#: ../Doc/c-api/unicode.rst:469 +#: ../Doc/c-api/unicode.rst:476 #, python-format msgid "Equivalent to ``printf(\"%d\")``. [1]_" msgstr "Equivalente a ``printf(\"%d\")``. [1]_" -#: ../Doc/c-api/unicode.rst:472 +#: ../Doc/c-api/unicode.rst:479 #, python-format msgid ":attr:`%u`" msgstr ":attr:`%u`" -#: ../Doc/c-api/unicode.rst:472 +#: ../Doc/c-api/unicode.rst:479 msgid "unsigned int" msgstr "unsigned int" -#: ../Doc/c-api/unicode.rst:472 +#: ../Doc/c-api/unicode.rst:479 #, python-format msgid "Equivalent to ``printf(\"%u\")``. [1]_" msgstr "Equivalente a ``printf(\"%u\")``. [1]_" -#: ../Doc/c-api/unicode.rst:475 +#: ../Doc/c-api/unicode.rst:482 #, python-format msgid ":attr:`%ld`" msgstr ":attr:`%ld`" -#: ../Doc/c-api/unicode.rst:475 ../Doc/c-api/unicode.rst:478 +#: ../Doc/c-api/unicode.rst:482 ../Doc/c-api/unicode.rst:485 msgid "long" msgstr "long" -#: ../Doc/c-api/unicode.rst:475 +#: ../Doc/c-api/unicode.rst:482 #, python-format msgid "Equivalent to ``printf(\"%ld\")``. [1]_" msgstr "Equivalente a ``printf(\"%ld\")``. [1]_" -#: ../Doc/c-api/unicode.rst:478 +#: ../Doc/c-api/unicode.rst:485 #, python-format msgid ":attr:`%li`" msgstr ":attr:`%li`" -#: ../Doc/c-api/unicode.rst:478 +#: ../Doc/c-api/unicode.rst:485 #, python-format msgid "Equivalent to ``printf(\"%li\")``. [1]_" msgstr "Equivalente a ``printf(\"%li\")``. [1]_" -#: ../Doc/c-api/unicode.rst:481 +#: ../Doc/c-api/unicode.rst:488 #, python-format msgid ":attr:`%lu`" msgstr ":attr:`%lu`" -#: ../Doc/c-api/unicode.rst:481 +#: ../Doc/c-api/unicode.rst:488 msgid "unsigned long" msgstr "unsigned long" -#: ../Doc/c-api/unicode.rst:481 +#: ../Doc/c-api/unicode.rst:488 #, python-format msgid "Equivalent to ``printf(\"%lu\")``. [1]_" msgstr "Equivalente a ``printf(\"%lu\")``. [1]_" -#: ../Doc/c-api/unicode.rst:484 +#: ../Doc/c-api/unicode.rst:491 msgid ":attr:`%lld`" msgstr ":attr:`%lld`" -#: ../Doc/c-api/unicode.rst:484 ../Doc/c-api/unicode.rst:487 +#: ../Doc/c-api/unicode.rst:491 ../Doc/c-api/unicode.rst:494 msgid "long long" msgstr "long long" -#: ../Doc/c-api/unicode.rst:484 +#: ../Doc/c-api/unicode.rst:491 msgid "Equivalent to ``printf(\"%lld\")``. [1]_" msgstr "Equivalente a ``printf(\"%lld\")``. [1]_" -#: ../Doc/c-api/unicode.rst:487 +#: ../Doc/c-api/unicode.rst:494 msgid ":attr:`%lli`" msgstr ":attr:`%lli`" -#: ../Doc/c-api/unicode.rst:487 +#: ../Doc/c-api/unicode.rst:494 msgid "Equivalent to ``printf(\"%lli\")``. [1]_" msgstr "Equivalente a ``printf(\"%lli\")``. [1]_" -#: ../Doc/c-api/unicode.rst:490 +#: ../Doc/c-api/unicode.rst:497 msgid ":attr:`%llu`" msgstr ":attr:`%llu`" -#: ../Doc/c-api/unicode.rst:490 +#: ../Doc/c-api/unicode.rst:497 msgid "unsigned long long" msgstr "unsigned long long" -#: ../Doc/c-api/unicode.rst:490 +#: ../Doc/c-api/unicode.rst:497 msgid "Equivalent to ``printf(\"%llu\")``. [1]_" msgstr "Equivalente a ``printf(\"%llu\")``. [1]_" -#: ../Doc/c-api/unicode.rst:493 +#: ../Doc/c-api/unicode.rst:500 msgid ":attr:`%zd`" msgstr ":attr:`%zd`" -#: ../Doc/c-api/unicode.rst:493 ../Doc/c-api/unicode.rst:496 -msgid "Py_ssize_t" -msgstr "Py_ssize_t" +#: ../Doc/c-api/unicode.rst:500 ../Doc/c-api/unicode.rst:503 +msgid ":c:type:`\\ Py_ssize_t`" +msgstr "" -#: ../Doc/c-api/unicode.rst:493 +#: ../Doc/c-api/unicode.rst:500 msgid "Equivalent to ``printf(\"%zd\")``. [1]_" msgstr "Equivalente a ``printf(\"%zd\")``. [1]_" -#: ../Doc/c-api/unicode.rst:496 +#: ../Doc/c-api/unicode.rst:503 msgid ":attr:`%zi`" msgstr ":attr:`%zi`" -#: ../Doc/c-api/unicode.rst:496 +#: ../Doc/c-api/unicode.rst:503 msgid "Equivalent to ``printf(\"%zi\")``. [1]_" msgstr "Equivalente a ``printf(\"%zi\")``. [1]_" -#: ../Doc/c-api/unicode.rst:499 +#: ../Doc/c-api/unicode.rst:506 msgid ":attr:`%zu`" msgstr ":attr:`%zu`" -#: ../Doc/c-api/unicode.rst:499 +#: ../Doc/c-api/unicode.rst:506 msgid "size_t" msgstr "size_t" -#: ../Doc/c-api/unicode.rst:499 +#: ../Doc/c-api/unicode.rst:506 msgid "Equivalent to ``printf(\"%zu\")``. [1]_" msgstr "Equivalente a ``printf(\"%zu\")``. [1]_" -#: ../Doc/c-api/unicode.rst:502 +#: ../Doc/c-api/unicode.rst:509 #, python-format msgid ":attr:`%i`" msgstr ":attr:`%i`" -#: ../Doc/c-api/unicode.rst:502 +#: ../Doc/c-api/unicode.rst:509 #, python-format msgid "Equivalent to ``printf(\"%i\")``. [1]_" msgstr "Equivalente a ``printf(\"%i\")``. [1]_" -#: ../Doc/c-api/unicode.rst:505 +#: ../Doc/c-api/unicode.rst:512 #, python-format msgid ":attr:`%x`" msgstr ":attr:`%x`" -#: ../Doc/c-api/unicode.rst:505 +#: ../Doc/c-api/unicode.rst:512 #, python-format msgid "Equivalent to ``printf(\"%x\")``. [1]_" msgstr "Equivalente a ``printf(\"%x\")``. [1]_" -#: ../Doc/c-api/unicode.rst:508 +#: ../Doc/c-api/unicode.rst:515 #, python-format msgid ":attr:`%s`" msgstr ":attr:`%s`" -#: ../Doc/c-api/unicode.rst:508 +#: ../Doc/c-api/unicode.rst:515 msgid "const char\\*" msgstr "const char\\*" -#: ../Doc/c-api/unicode.rst:508 +#: ../Doc/c-api/unicode.rst:515 msgid "A null-terminated C character array." msgstr "Un arreglo de caracteres de C terminada en nulo." -#: ../Doc/c-api/unicode.rst:511 +#: ../Doc/c-api/unicode.rst:518 msgid ":attr:`%p`" msgstr ":attr:`%p`" -#: ../Doc/c-api/unicode.rst:511 +#: ../Doc/c-api/unicode.rst:518 msgid "const void\\*" msgstr "const void\\*" -#: ../Doc/c-api/unicode.rst:511 +#: ../Doc/c-api/unicode.rst:518 msgid "" -"The hex representation of a C pointer. Mostly equivalent to ``printf(\"%p" -"\")`` except that it is guaranteed to start with the literal ``0x`` " -"regardless of what the platform's ``printf`` yields." +"The hex representation of a C pointer. Mostly equivalent to " +"``printf(\"%p\")`` except that it is guaranteed to start with the literal " +"``0x`` regardless of what the platform's ``printf`` yields." msgstr "" "La representación hexadecimal de un puntero en C. Principalmente equivalente " "a ``printf(\"%p\")`` excepto que se garantiza que comience con el literal " "``0x``, independiente de lo que produzca el ``printf`` de la plataforma." -#: ../Doc/c-api/unicode.rst:519 +#: ../Doc/c-api/unicode.rst:526 msgid ":attr:`%A`" msgstr ":attr:`%A`" -#: ../Doc/c-api/unicode.rst:519 ../Doc/c-api/unicode.rst:522 -#: ../Doc/c-api/unicode.rst:531 ../Doc/c-api/unicode.rst:534 +#: ../Doc/c-api/unicode.rst:526 ../Doc/c-api/unicode.rst:529 +#: ../Doc/c-api/unicode.rst:538 ../Doc/c-api/unicode.rst:541 msgid "PyObject\\*" msgstr "PyObject\\*" -#: ../Doc/c-api/unicode.rst:519 +#: ../Doc/c-api/unicode.rst:526 msgid "The result of calling :func:`ascii`." msgstr "El resultado de llamar :func:`ascii`." -#: ../Doc/c-api/unicode.rst:522 +#: ../Doc/c-api/unicode.rst:529 msgid ":attr:`%U`" msgstr ":attr:`%U`" -#: ../Doc/c-api/unicode.rst:522 +#: ../Doc/c-api/unicode.rst:529 msgid "A Unicode object." msgstr "Un objeto Unicode." -#: ../Doc/c-api/unicode.rst:524 +#: ../Doc/c-api/unicode.rst:531 msgid ":attr:`%V`" msgstr ":attr:`%V`" -#: ../Doc/c-api/unicode.rst:524 +#: ../Doc/c-api/unicode.rst:531 msgid "PyObject\\*, const char\\*" msgstr "PyObject\\*, const char\\*" -#: ../Doc/c-api/unicode.rst:524 +#: ../Doc/c-api/unicode.rst:531 msgid "" "A Unicode object (which may be ``NULL``) and a null-terminated C character " "array as a second parameter (which will be used, if the first parameter is " @@ -894,23 +908,23 @@ msgstr "" "terminada en nulo como segundo parámetro (que se utilizará, si el primer " "parámetro es ``NULL``)." -#: ../Doc/c-api/unicode.rst:531 +#: ../Doc/c-api/unicode.rst:538 msgid ":attr:`%S`" msgstr ":attr:`%S`" -#: ../Doc/c-api/unicode.rst:531 +#: ../Doc/c-api/unicode.rst:538 msgid "The result of calling :c:func:`PyObject_Str`." msgstr "El resultado de llamar :c:func:`PyObject_Str`." -#: ../Doc/c-api/unicode.rst:534 +#: ../Doc/c-api/unicode.rst:541 msgid ":attr:`%R`" msgstr ":attr:`%R`" -#: ../Doc/c-api/unicode.rst:534 +#: ../Doc/c-api/unicode.rst:541 msgid "The result of calling :c:func:`PyObject_Repr`." msgstr "El resultado de llamar :c:func:`PyObject_Repr`." -#: ../Doc/c-api/unicode.rst:538 +#: ../Doc/c-api/unicode.rst:545 msgid "" "An unrecognized format character causes all the rest of the format string to " "be copied as-is to the result string, and any extra arguments discarded." @@ -919,7 +933,7 @@ msgstr "" "formato se copie tal cual a la cadena de resultado y se descartan los " "argumentos adicionales." -#: ../Doc/c-api/unicode.rst:542 +#: ../Doc/c-api/unicode.rst:549 #, python-format msgid "" "The width formatter unit is number of characters rather than bytes. The " @@ -929,12 +943,12 @@ msgid "" "``PyObject*`` argument is not ``NULL``)." msgstr "" "La unidad del formateador de ancho es el número de caracteres en lugar de " -"bytes. La unidad del formateador de precisión es la cantidad de bytes para ``" -"\"%s\"`` y ``\"%V\" `` (si el argumento ``PyObject*`` es ``NULL``), y una " +"bytes. La unidad del formateador de precisión es la cantidad de bytes para " +"``\"%s\"`` y ``\"%V\" `` (si el argumento ``PyObject*`` es ``NULL``), y una " "cantidad de caracteres para ``\"%A\"``, ``\"%U\"``, ``\"%S\"``, ``\"%R\"`` y " "``\"%V\"`` (si el argumento ``PyObject*`` no es ``NULL``)." -#: ../Doc/c-api/unicode.rst:548 +#: ../Doc/c-api/unicode.rst:555 msgid "" "For integer specifiers (d, u, ld, li, lu, lld, lli, llu, zd, zi, zu, i, x): " "the 0-conversion flag has effect even when a precision is given." @@ -943,25 +957,25 @@ msgstr "" "zu, i, x)*: el indicador de conversión 0 tiene efecto incluso cuando se " "proporciona una precisión." -#: ../Doc/c-api/unicode.rst:551 +#: ../Doc/c-api/unicode.rst:558 msgid "Support for ``\"%lld\"`` and ``\"%llu\"`` added." msgstr "Soporte agregado para ``\"%lld\"`` y ``\"%llu\"``." -#: ../Doc/c-api/unicode.rst:554 +#: ../Doc/c-api/unicode.rst:561 #, python-format msgid "Support for ``\"%li\"``, ``\"%lli\"`` and ``\"%zi\"`` added." msgstr "Soporte agregado para ``\"%li\"``, ``\"%lli\"`` y ``\"%zi\"``." -#: ../Doc/c-api/unicode.rst:557 +#: ../Doc/c-api/unicode.rst:564 #, python-format msgid "" -"Support width and precision formatter for ``\"%s\"``, ``\"%A\"``, ``\"%U" -"\"``, ``\"%V\"``, ``\"%S\"``, ``\"%R\"`` added." +"Support width and precision formatter for ``\"%s\"``, ``\"%A\"``, " +"``\"%U\"``, ``\"%V\"``, ``\"%S\"``, ``\"%R\"`` added." msgstr "" "Soporte agregado para formateadores de anchura y precisión para ``\"%s\"``, " "``\"%A\"``, ``\"%U\"``, ``\"%V\"``, ``\"%S\"``, ``\"%R\"``." -#: ../Doc/c-api/unicode.rst:564 +#: ../Doc/c-api/unicode.rst:571 msgid "" "Identical to :c:func:`PyUnicode_FromFormat` except that it takes exactly two " "arguments." @@ -969,11 +983,11 @@ msgstr "" "Idéntico a :c:func:`PyUnicode_FromFormat` excepto que toma exactamente dos " "argumentos." -#: ../Doc/c-api/unicode.rst:571 +#: ../Doc/c-api/unicode.rst:578 msgid "Decode an encoded object *obj* to a Unicode object." msgstr "Decodifica un objeto codificado *obj* en un objeto Unicode." -#: ../Doc/c-api/unicode.rst:573 +#: ../Doc/c-api/unicode.rst:580 msgid "" ":class:`bytes`, :class:`bytearray` and other :term:`bytes-like objects " "` are decoded according to the given *encoding* and using " @@ -986,7 +1000,7 @@ msgstr "" "``NULL`` para que la interfaz use los valores predeterminados (ver :ref:" "`builtincodecs` para más detalles)." -#: ../Doc/c-api/unicode.rst:579 +#: ../Doc/c-api/unicode.rst:586 msgid "" "All other objects, including Unicode objects, cause a :exc:`TypeError` to be " "set." @@ -994,7 +1008,7 @@ msgstr "" "Todos los demás objetos, incluidos los objetos Unicode, hacen que se " "establezca un :exc:`TypeError`." -#: ../Doc/c-api/unicode.rst:582 +#: ../Doc/c-api/unicode.rst:589 msgid "" "The API returns ``NULL`` if there was an error. The caller is responsible " "for decref'ing the returned objects." @@ -1002,11 +1016,11 @@ msgstr "" "La API retorna ``NULL`` si hubo un error. La entidad que hace la llamadas es " "la responsable de desreferenciar los objetos retornados." -#: ../Doc/c-api/unicode.rst:588 +#: ../Doc/c-api/unicode.rst:595 msgid "Return the length of the Unicode object, in code points." msgstr "Retorna la longitud del objeto Unicode, en puntos de código." -#: ../Doc/c-api/unicode.rst:599 +#: ../Doc/c-api/unicode.rst:606 msgid "" "Copy characters from one Unicode object into another. This function " "performs character conversion when necessary and falls back to :c:func:" @@ -1018,15 +1032,15 @@ msgstr "" "es posible. Retorna ``-1`` y establece una excepción en caso de error; de lo " "contrario, retorna el número de caracteres copiados." -#: ../Doc/c-api/unicode.rst:610 +#: ../Doc/c-api/unicode.rst:617 msgid "" -"Fill a string with a character: write *fill_char* into ``unicode[start:start" -"+length]``." +"Fill a string with a character: write *fill_char* into ``unicode[start:" +"start+length]``." msgstr "" "Rellena una cadena con un carácter: escriba *fill_char* en ``unicode[inicio:" "inicio+longitud]``." -#: ../Doc/c-api/unicode.rst:613 +#: ../Doc/c-api/unicode.rst:620 msgid "" "Fail if *fill_char* is bigger than the string maximum character, or if the " "string has more than 1 reference." @@ -1034,7 +1048,7 @@ msgstr "" "Falla si *fill_char* es más grande que el carácter máximo de la cadena, o si " "la cadena tiene más de 1 referencia." -#: ../Doc/c-api/unicode.rst:616 +#: ../Doc/c-api/unicode.rst:623 msgid "" "Return the number of written character, or return ``-1`` and raise an " "exception on error." @@ -1042,7 +1056,7 @@ msgstr "" "Retorna el número de caracteres escritos o retorna ``-1`` y lanza una " "excepción en caso de error." -#: ../Doc/c-api/unicode.rst:625 +#: ../Doc/c-api/unicode.rst:632 msgid "" "Write a character to a string. The string must have been created through :c:" "func:`PyUnicode_New`. Since Unicode strings are supposed to be immutable, " @@ -1053,7 +1067,7 @@ msgstr "" "cadenas de caracteres Unicode son inmutables, la cadena no debe compartirse " "o no se ha cifrado todavía." -#: ../Doc/c-api/unicode.rst:629 +#: ../Doc/c-api/unicode.rst:636 msgid "" "This function checks that *unicode* is a Unicode object, that the index is " "not out of bounds, and that the object can be modified safely (i.e. that it " @@ -1063,17 +1077,18 @@ msgstr "" "está fuera de los límites y que el objeto se puede modificar de forma segura " "(es decir, si su número de referencia es uno)." -#: ../Doc/c-api/unicode.rst:638 +#: ../Doc/c-api/unicode.rst:645 +#, fuzzy msgid "" "Read a character from a string. This function checks that *unicode* is a " -"Unicode object and the index is not out of bounds, in contrast to the macro " -"version :c:func:`PyUnicode_READ_CHAR`." +"Unicode object and the index is not out of bounds, in contrast to :c:func:" +"`PyUnicode_READ_CHAR`, which performs no error checking." msgstr "" "Lee un carácter de una cadena de caracteres. Esta función verifica que " "*unicode* es un objeto Unicode y que el índice no está fuera de límites, en " "contraste con la versión de macro :c:func:`PyUnicode_READ_CHAR`." -#: ../Doc/c-api/unicode.rst:648 +#: ../Doc/c-api/unicode.rst:655 msgid "" "Return a substring of *str*, from character index *start* (included) to " "character index *end* (excluded). Negative indices are not supported." @@ -1082,7 +1097,7 @@ msgstr "" "*start* (incluido) al índice de caracteres *end* (excluido). Los índices " "negativos no son compatibles." -#: ../Doc/c-api/unicode.rst:657 +#: ../Doc/c-api/unicode.rst:664 msgid "" "Copy the string *u* into a UCS4 buffer, including a null character, if " "*copy_null* is set. Returns ``NULL`` and sets an exception on error (in " @@ -1094,7 +1109,7 @@ msgstr "" "excepción en caso de error (en particular, a :exc:`SystemError` si *buflen* " "es menor que la longitud de *u*). *buffer* se retorna en caso de éxito." -#: ../Doc/c-api/unicode.rst:667 +#: ../Doc/c-api/unicode.rst:674 msgid "" "Copy the string *u* into a new UCS4 buffer that is allocated using :c:func:" "`PyMem_Malloc`. If this fails, ``NULL`` is returned with a :exc:" @@ -1106,11 +1121,11 @@ msgstr "" "exc:`MemoryError` establecido. El búfer retornado siempre tiene un punto de " "código nulo adicional agregado." -#: ../Doc/c-api/unicode.rst:676 +#: ../Doc/c-api/unicode.rst:683 msgid "Deprecated Py_UNICODE APIs" msgstr "APIs de Py_UNICODE deprecadas" -#: ../Doc/c-api/unicode.rst:680 +#: ../Doc/c-api/unicode.rst:687 msgid "" "These API functions are deprecated with the implementation of :pep:`393`. " "Extension modules can continue using them, as they will not be removed in " @@ -1122,7 +1137,7 @@ msgstr "" "Python 3.x, pero deben ser conscientes de que su uso ahora puede causar " "problemas de rendimiento y memoria." -#: ../Doc/c-api/unicode.rst:687 +#: ../Doc/c-api/unicode.rst:694 msgid "" "Create a Unicode object from the Py_UNICODE buffer *u* of the given size. " "*u* may be ``NULL`` which causes the contents to be undefined. It is the " @@ -1134,7 +1149,7 @@ msgstr "" "responsabilidad del usuario completar los datos necesarios. El búfer se " "copia en el nuevo objeto." -#: ../Doc/c-api/unicode.rst:692 +#: ../Doc/c-api/unicode.rst:699 msgid "" "If the buffer is not ``NULL``, the return value might be a shared object. " "Therefore, modification of the resulting Unicode object is only allowed when " @@ -1144,7 +1159,7 @@ msgstr "" "compartido. Por lo tanto, la modificación del objeto Unicode resultante solo " "se permite cuando *u* es ``NULL``." -#: ../Doc/c-api/unicode.rst:696 +#: ../Doc/c-api/unicode.rst:703 msgid "" "If the buffer is ``NULL``, :c:func:`PyUnicode_READY` must be called once the " "string content has been filled before using any of the access macros such " @@ -1154,7 +1169,7 @@ msgstr "" "que se haya llenado el contenido de la cadena de caracteres antes de usar " "cualquiera de las macros de acceso, como :c:func:`PyUnicode_KIND`." -#: ../Doc/c-api/unicode.rst:703 +#: ../Doc/c-api/unicode.rst:710 msgid "" "Part of the old-style Unicode API, please migrate to using :c:func:" "`PyUnicode_FromKindAndData`, :c:func:`PyUnicode_FromWideChar`, or :c:func:" @@ -1163,10 +1178,11 @@ msgstr "" "Por favor migrar para usar :c:func:`PyUnicode_FromKindAndData`, :c:func:" "`PyUnicode_FromWideChar` o :c:func:`PyUnicode_New`." -#: ../Doc/c-api/unicode.rst:708 +#: ../Doc/c-api/unicode.rst:715 +#, fuzzy msgid "" "Return a read-only pointer to the Unicode object's internal :c:type:" -"`Py_UNICODE` buffer, or ``NULL`` on error. This will create the :c:type:" +"`Py_UNICODE` buffer, or ``NULL`` on error. This will create the :c:expr:" "`Py_UNICODE*` representation of the object if it is not yet available. The " "buffer is always terminated with an extra null code point. Note that the " "resulting :c:type:`Py_UNICODE` string may also contain embedded null code " @@ -1181,7 +1197,7 @@ msgstr "" "de código nulo incrustados, lo que provocaría que la cadena se truncara " "cuando se usara en la mayoría de las funciones de C." -#: ../Doc/c-api/unicode.rst:719 ../Doc/c-api/unicode.rst:746 +#: ../Doc/c-api/unicode.rst:726 ../Doc/c-api/unicode.rst:742 msgid "" "Part of the old-style Unicode API, please migrate to using :c:func:" "`PyUnicode_AsUCS4`, :c:func:`PyUnicode_AsWideChar`, :c:func:" @@ -1191,29 +1207,12 @@ msgstr "" "func:`PyUnicode_AsUCS4`, :c:func:`PyUnicode_AsWideChar`, :c:func:" "`PyUnicode_ReadChar` o APIs nuevas similares." -#: ../Doc/c-api/unicode.rst:724 -msgid "" -"Create a Unicode object by replacing all decimal digits in :c:type:" -"`Py_UNICODE` buffer of the given *size* by ASCII digits 0--9 according to " -"their decimal value. Return ``NULL`` if an exception occurs." -msgstr "" -"Crea un objeto Unicode reemplazando todos los dígitos decimales en el búfer :" -"c:type:`Py_UNICODE` del *size* dado por dígitos ASCII 0--9 de acuerdo con su " -"valor decimal. Retorna ``NULL`` si ocurre una excepción." - -#: ../Doc/c-api/unicode.rst:730 -msgid "" -"Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :c:" -"func:`Py_UNICODE_TODECIMAL`." -msgstr "" -"Parte del estilo antiguo de la API :c:type:`Py_UNICODE`; por favor migrar " -"para usar :c:func:`Py_UNICODE_TODECIMAL`." - -#: ../Doc/c-api/unicode.rst:735 +#: ../Doc/c-api/unicode.rst:731 +#, fuzzy msgid "" "Like :c:func:`PyUnicode_AsUnicode`, but also saves the :c:func:`Py_UNICODE` " "array length (excluding the extra null terminator) in *size*. Note that the " -"resulting :c:type:`Py_UNICODE*` string may contain embedded null code " +"resulting :c:expr:`Py_UNICODE*` string may contain embedded null code " "points, which would cause the string to be truncated when used in most C " "functions." msgstr "" @@ -1224,7 +1223,7 @@ msgstr "" "provocaría que la cadena se truncara cuando se usara en la mayoría de las " "funciones de C." -#: ../Doc/c-api/unicode.rst:751 +#: ../Doc/c-api/unicode.rst:747 msgid "" "Return the size of the deprecated :c:type:`Py_UNICODE` representation, in " "code units (this includes surrogate pairs as 2 units)." @@ -1232,7 +1231,7 @@ msgstr "" "Retorna el tamaño de la representación en desuso :c:type:`Py_UNICODE`, en " "unidades de código (esto incluye pares sustitutos como 2 unidades)." -#: ../Doc/c-api/unicode.rst:761 +#: ../Doc/c-api/unicode.rst:757 msgid "" "Copy an instance of a Unicode subtype to a new true Unicode object if " "necessary. If *obj* is already a true Unicode object (not a subtype), return " @@ -1242,17 +1241,17 @@ msgstr "" "verdadero si es necesario. Si *obj* ya es un verdadero objeto Unicode (no un " "subtipo), retorna la referencia con un recuento incrementado." -#: ../Doc/c-api/unicode.rst:765 +#: ../Doc/c-api/unicode.rst:761 msgid "" "Objects other than Unicode or its subtypes will cause a :exc:`TypeError`." msgstr "" "Los objetos que no sean Unicode o sus subtipos causarán un :exc:`TypeError`." -#: ../Doc/c-api/unicode.rst:769 +#: ../Doc/c-api/unicode.rst:765 msgid "Locale Encoding" msgstr "Codificación regional" -#: ../Doc/c-api/unicode.rst:771 +#: ../Doc/c-api/unicode.rst:767 msgid "" "The current locale encoding can be used to decode text from the operating " "system." @@ -1260,22 +1259,22 @@ msgstr "" "La codificación local actual se puede utilizar para decodificar texto del " "sistema operativo." -#: ../Doc/c-api/unicode.rst:778 +#: ../Doc/c-api/unicode.rst:774 msgid "" "Decode a string from UTF-8 on Android and VxWorks, or from the current " -"locale encoding on other platforms. The supported error handlers are ``" -"\"strict\"`` and ``\"surrogateescape\"`` (:pep:`383`). The decoder uses ``" -"\"strict\"`` error handler if *errors* is ``NULL``. *str* must end with a " +"locale encoding on other platforms. The supported error handlers are " +"``\"strict\"`` and ``\"surrogateescape\"`` (:pep:`383`). The decoder uses " +"``\"strict\"`` error handler if *errors* is ``NULL``. *str* must end with a " "null character but cannot contain embedded null characters." msgstr "" "Decodifica una cadena de caracteres UTF-8 en Android y VxWorks, o de la " "codificación de configuración regional actual en otras plataformas. Los " -"manejadores de errores admitidos son ``\"estricto\"`` y ``\"subrogateescape" -"\"`` (:pep:`383`). El decodificador usa el controlador de errores ``" -"\"estricto\"`` si *errors* es``NULL``. *str* debe terminar con un carácter " -"nulo pero no puede contener caracteres nulos incrustados." +"manejadores de errores admitidos son ``\"estricto\"`` y " +"``\"subrogateescape\"`` (:pep:`383`). El decodificador usa el controlador de " +"errores ``\"estricto\"`` si *errors* es``NULL``. *str* debe terminar con un " +"carácter nulo pero no puede contener caracteres nulos incrustados." -#: ../Doc/c-api/unicode.rst:785 +#: ../Doc/c-api/unicode.rst:781 msgid "" "Use :c:func:`PyUnicode_DecodeFSDefaultAndSize` to decode a string from :c:" "data:`Py_FileSystemDefaultEncoding` (the locale encoding read at Python " @@ -1285,15 +1284,15 @@ msgstr "" "cadena de :c:data:`Py_FileSystemDefaultEncoding` (la codificación de la " "configuración regional leída al iniciar Python)." -#: ../Doc/c-api/unicode.rst:789 ../Doc/c-api/unicode.rst:825 +#: ../Doc/c-api/unicode.rst:785 ../Doc/c-api/unicode.rst:821 msgid "This function ignores the :ref:`Python UTF-8 Mode `." msgstr "Esta función ignora el :ref:`modo Python UTF-8 `." -#: ../Doc/c-api/unicode.rst:793 ../Doc/c-api/unicode.rst:896 +#: ../Doc/c-api/unicode.rst:789 ../Doc/c-api/unicode.rst:892 msgid "The :c:func:`Py_DecodeLocale` function." msgstr "La función :c:func:`Py_DecodeLocale`." -#: ../Doc/c-api/unicode.rst:797 +#: ../Doc/c-api/unicode.rst:793 msgid "" "The function now also uses the current locale encoding for the " "``surrogateescape`` error handler, except on Android. Previously, :c:func:" @@ -1306,7 +1305,7 @@ msgstr "" "``subrogateescape``, y la codificación local actual se usaba para " "``estricto``." -#: ../Doc/c-api/unicode.rst:806 +#: ../Doc/c-api/unicode.rst:802 msgid "" "Similar to :c:func:`PyUnicode_DecodeLocaleAndSize`, but compute the string " "length using :c:func:`strlen`." @@ -1314,13 +1313,13 @@ msgstr "" "Similar a :c:func:`PyUnicode_DecodeLocaleAndSize`, pero calcula la longitud " "de la cadena de caracteres usando :c:func:`strlen`." -#: ../Doc/c-api/unicode.rst:814 +#: ../Doc/c-api/unicode.rst:810 msgid "" "Encode a Unicode object to UTF-8 on Android and VxWorks, or to the current " -"locale encoding on other platforms. The supported error handlers are ``" -"\"strict\"`` and ``\"surrogateescape\"`` (:pep:`383`). The encoder uses ``" -"\"strict\"`` error handler if *errors* is ``NULL``. Return a :class:`bytes` " -"object. *unicode* cannot contain embedded null characters." +"locale encoding on other platforms. The supported error handlers are " +"``\"strict\"`` and ``\"surrogateescape\"`` (:pep:`383`). The encoder uses " +"``\"strict\"`` error handler if *errors* is ``NULL``. Return a :class:" +"`bytes` object. *unicode* cannot contain embedded null characters." msgstr "" "Codifica un objeto Unicode UTF-8 en Android y VxWorks, o en la codificación " "local actual en otras plataformas. Los manejadores de errores admitidos son " @@ -1329,7 +1328,7 @@ msgstr "" "Retorna un objeto :class:`bytes`. *unicode* no puede contener caracteres " "nulos incrustados." -#: ../Doc/c-api/unicode.rst:821 +#: ../Doc/c-api/unicode.rst:817 msgid "" "Use :c:func:`PyUnicode_EncodeFSDefault` to encode a string to :c:data:" "`Py_FileSystemDefaultEncoding` (the locale encoding read at Python startup)." @@ -1338,11 +1337,11 @@ msgstr "" "caracteres en :c:data:`Py_FileSystemDefaultEncoding` (la codificación de la " "configuración regional leída al iniciar Python)." -#: ../Doc/c-api/unicode.rst:829 ../Doc/c-api/unicode.rst:932 +#: ../Doc/c-api/unicode.rst:825 ../Doc/c-api/unicode.rst:928 msgid "The :c:func:`Py_EncodeLocale` function." msgstr "La función :c:func:`Py_EncodeLocale`." -#: ../Doc/c-api/unicode.rst:833 +#: ../Doc/c-api/unicode.rst:829 msgid "" "The function now also uses the current locale encoding for the " "``surrogateescape`` error handler, except on Android. Previously, :c:func:" @@ -1355,11 +1354,11 @@ msgstr "" "``subrogateescape``, y la codificación local actual se usaba para " "``estricto``." -#: ../Doc/c-api/unicode.rst:842 +#: ../Doc/c-api/unicode.rst:838 msgid "File System Encoding" msgstr "Codificación del sistema de archivos" -#: ../Doc/c-api/unicode.rst:844 +#: ../Doc/c-api/unicode.rst:840 msgid "" "To encode and decode file names and other environment strings, :c:data:" "`Py_FileSystemDefaultEncoding` should be used as the encoding, and :c:data:" @@ -1376,12 +1375,13 @@ msgstr "" "debe usar el convertidor ``\"O&\"``, pasando :c:func:`PyUnicode_FSConverter` " "como la función de conversión:" -#: ../Doc/c-api/unicode.rst:853 +#: ../Doc/c-api/unicode.rst:849 +#, fuzzy msgid "" "ParseTuple converter: encode :class:`str` objects -- obtained directly or " "through the :class:`os.PathLike` interface -- to :class:`bytes` using :c:" "func:`PyUnicode_EncodeFSDefault`; :class:`bytes` objects are output as-is. " -"*result* must be a :c:type:`PyBytesObject*` which must be released when it " +"*result* must be a :c:expr:`PyBytesObject*` which must be released when it " "is no longer used." msgstr "" "Convertidor *ParseTuple* : codificar objetos :class:`str` -- obtenidos " @@ -1390,11 +1390,11 @@ msgstr "" "emiten tal cual. *result* debe ser un :c:type:`PyBytesObject*` que debe " "liberarse cuando ya no se use." -#: ../Doc/c-api/unicode.rst:861 ../Doc/c-api/unicode.rst:878 +#: ../Doc/c-api/unicode.rst:857 ../Doc/c-api/unicode.rst:874 msgid "Accepts a :term:`path-like object`." msgstr "Acepta un objeto similar a una ruta (:term:`path-like object`)." -#: ../Doc/c-api/unicode.rst:864 +#: ../Doc/c-api/unicode.rst:860 msgid "" "To decode file names to :class:`str` during argument parsing, the ``\"O&\"`` " "converter should be used, passing :c:func:`PyUnicode_FSDecoder` as the " @@ -1404,12 +1404,13 @@ msgstr "" "argumentos, se debe usar el convertidor ``\"O&\"``, pasando :c:func:" "`PyUnicode_FSDecoder` como la función de conversión:" -#: ../Doc/c-api/unicode.rst:870 +#: ../Doc/c-api/unicode.rst:866 +#, fuzzy msgid "" "ParseTuple converter: decode :class:`bytes` objects -- obtained either " "directly or indirectly through the :class:`os.PathLike` interface -- to :" "class:`str` using :c:func:`PyUnicode_DecodeFSDefaultAndSize`; :class:`str` " -"objects are output as-is. *result* must be a :c:type:`PyUnicodeObject*` " +"objects are output as-is. *result* must be a :c:expr:`PyUnicodeObject*` " "which must be released when it is no longer used." msgstr "" "Conversor ``ParseTuple``: decodifica objetos :class:`bytes` -- obtenidos " @@ -1418,14 +1419,14 @@ msgstr "" "class:`str` se generan tal cual. *result* debe ser :c:type:" "`PyUnicodeObject*` que debe liberarse cuando ya no se use." -#: ../Doc/c-api/unicode.rst:884 +#: ../Doc/c-api/unicode.rst:880 msgid "Decode a string from the :term:`filesystem encoding and error handler`." msgstr "" "Decodifica una cadena desde el :term:`codificador de sistema de archivos y " "gestor de errores `." -#: ../Doc/c-api/unicode.rst:886 ../Doc/c-api/unicode.rst:907 -#: ../Doc/c-api/unicode.rst:923 +#: ../Doc/c-api/unicode.rst:882 ../Doc/c-api/unicode.rst:903 +#: ../Doc/c-api/unicode.rst:919 msgid "" "If :c:data:`Py_FileSystemDefaultEncoding` is not set, fall back to the " "locale encoding." @@ -1433,7 +1434,7 @@ msgstr "" "Si :c:data:`Py_FileSystemDefaultEncoding` no está configurado, recurre a la " "codificación de configuración regional." -#: ../Doc/c-api/unicode.rst:889 +#: ../Doc/c-api/unicode.rst:885 msgid "" ":c:data:`Py_FileSystemDefaultEncoding` is initialized at startup from the " "locale encoding and cannot be modified later. If you need to decode a string " @@ -1445,13 +1446,13 @@ msgstr "" "decodificar una cadena de caracteres de la codificación local actual, " "utilice :c:func:`PyUnicode_DecodeLocaleAndSize`." -#: ../Doc/c-api/unicode.rst:898 ../Doc/c-api/unicode.rst:912 -#: ../Doc/c-api/unicode.rst:936 +#: ../Doc/c-api/unicode.rst:894 ../Doc/c-api/unicode.rst:908 +#: ../Doc/c-api/unicode.rst:932 msgid "Use :c:data:`Py_FileSystemDefaultEncodeErrors` error handler." msgstr "" "Utilice el controlador de errores :c:data:`Py_FileSystemDefaultEncodeErrors`." -#: ../Doc/c-api/unicode.rst:904 +#: ../Doc/c-api/unicode.rst:900 msgid "" "Decode a null-terminated string from the :term:`filesystem encoding and " "error handler`." @@ -1460,14 +1461,14 @@ msgstr "" "sistema de archivos y gestor de errores `." -#: ../Doc/c-api/unicode.rst:910 +#: ../Doc/c-api/unicode.rst:906 msgid "" "Use :c:func:`PyUnicode_DecodeFSDefaultAndSize` if you know the string length." msgstr "" "Utilice :c:func:`PyUnicode_DecodeFSDefaultAndSize` si conoce la longitud de " "la cadena." -#: ../Doc/c-api/unicode.rst:918 +#: ../Doc/c-api/unicode.rst:914 msgid "" "Encode a Unicode object to :c:data:`Py_FileSystemDefaultEncoding` with the :" "c:data:`Py_FileSystemDefaultEncodeErrors` error handler, and return :class:" @@ -1479,7 +1480,7 @@ msgstr "" "retorna :class:`bytes`. Tenga en cuenta que el objeto resultante :class:" "`bytes` puede contener bytes nulos." -#: ../Doc/c-api/unicode.rst:926 +#: ../Doc/c-api/unicode.rst:922 msgid "" ":c:data:`Py_FileSystemDefaultEncoding` is initialized at startup from the " "locale encoding and cannot be modified later. If you need to encode a string " @@ -1490,17 +1491,19 @@ msgstr "" "una cadena a la codificación local actual, utilice :c:func:" "`PyUnicode_EncodeLocale`." -#: ../Doc/c-api/unicode.rst:940 +#: ../Doc/c-api/unicode.rst:936 msgid "wchar_t Support" msgstr "soporte wchar_t" -#: ../Doc/c-api/unicode.rst:942 -msgid ":c:type:`wchar_t` support for platforms which support it:" +#: ../Doc/c-api/unicode.rst:938 +#, fuzzy +msgid ":c:expr:`wchar_t` support for platforms which support it:" msgstr "soporte :c:type:`wchar_t` para plataformas que lo soportan:" -#: ../Doc/c-api/unicode.rst:946 +#: ../Doc/c-api/unicode.rst:942 +#, fuzzy msgid "" -"Create a Unicode object from the :c:type:`wchar_t` buffer *w* of the given " +"Create a Unicode object from the :c:expr:`wchar_t` buffer *w* of the given " "*size*. Passing ``-1`` as the *size* indicates that the function must itself " "compute the length, using wcslen. Return ``NULL`` on failure." msgstr "" @@ -1508,37 +1511,28 @@ msgstr "" "*size* dado. Pasar ``-1`` como *size* indica que la función debe calcular la " "longitud, usando ``wcslen``. Retorna ``NULL`` en caso de falla." -#: ../Doc/c-api/unicode.rst:954 +#: ../Doc/c-api/unicode.rst:950 msgid "" -"Copy the Unicode object contents into the :c:type:`wchar_t` buffer *w*. At " -"most *size* :c:type:`wchar_t` characters are copied (excluding a possibly " -"trailing null termination character). Return the number of :c:type:" +"Copy the Unicode object contents into the :c:expr:`wchar_t` buffer *w*. At " +"most *size* :c:expr:`wchar_t` characters are copied (excluding a possibly " +"trailing null termination character). Return the number of :c:expr:" "`wchar_t` characters copied or ``-1`` in case of an error. Note that the " -"resulting :c:type:`wchar_t*` string may or may not be null-terminated. It " -"is the responsibility of the caller to make sure that the :c:type:`wchar_t*` " +"resulting :c:expr:`wchar_t*` string may or may not be null-terminated. It " +"is the responsibility of the caller to make sure that the :c:expr:`wchar_t*` " "string is null-terminated in case this is required by the application. Also, " -"note that the :c:type:`wchar_t*` string might contain null characters, which " +"note that the :c:expr:`wchar_t*` string might contain null characters, which " "would cause the string to be truncated when used with most C functions." msgstr "" -"Copia el contenido del objeto Unicode en el búfer :c:type:`wchar_t` *w*. A " -"lo sumo *size* se copian los caracteres :c:type:`wchar_t` (excluyendo un " -"posible carácter de terminación nulo final). Retorna el número de " -"caracteres :c:type:`wchar_t` copiados o ``-1`` en caso de error. Tenga en " -"cuenta que la cadena resultante :c:type:`wchar_t*` puede o no tener " -"terminación nula. Es responsabilidad de la persona que llama asegurarse de " -"que la cadena :c:type:`wchar_t*` tenga una terminación nula en caso de que " -"la aplicación lo requiera. Además, tenga en cuenta que la cadena :c:type:" -"`wchar_t*` podría contener caracteres nulos, lo que provocaría que la cadena " -"se truncara cuando se usara con la mayoría de las funciones de C." -#: ../Doc/c-api/unicode.rst:967 +#: ../Doc/c-api/unicode.rst:963 +#, fuzzy msgid "" "Convert the Unicode object to a wide character string. The output string " "always ends with a null character. If *size* is not ``NULL``, write the " "number of wide characters (excluding the trailing null termination " -"character) into *\\*size*. Note that the resulting :c:type:`wchar_t` string " +"character) into *\\*size*. Note that the resulting :c:expr:`wchar_t` string " "might contain null characters, which would cause the string to be truncated " -"when used with most C functions. If *size* is ``NULL`` and the :c:type:" +"when used with most C functions. If *size* is ``NULL`` and the :c:expr:" "`wchar_t*` string contains null characters a :exc:`ValueError` is raised." msgstr "" "Convierte el objeto Unicode en una cadena de caracteres ancha. La cadena de " @@ -1550,11 +1544,11 @@ msgstr "" "funciones de C. Si *size* es ``NULL`` y la cadena :c:type:`wchar_t*` " "contiene caracteres nulos un :exc:`ValueError` aparece." -#: ../Doc/c-api/unicode.rst:975 +#: ../Doc/c-api/unicode.rst:971 msgid "" "Returns a buffer allocated by :c:func:`PyMem_Alloc` (use :c:func:" -"`PyMem_Free` to free it) on success. On error, returns ``NULL`` and *" -"\\*size* is undefined. Raises a :exc:`MemoryError` if memory allocation is " +"`PyMem_Free` to free it) on success. On error, returns ``NULL`` and " +"*\\*size* is undefined. Raises a :exc:`MemoryError` if memory allocation is " "failed." msgstr "" "Retorna un búfer asignado por :c:func:`PyMem_Alloc` (utilice :c:func:" @@ -1562,19 +1556,20 @@ msgstr "" "``NULL`` y *\\*size* no está definido. Provoca un :exc:`MemoryError` si " "falla la asignación de memoria." -#: ../Doc/c-api/unicode.rst:982 +#: ../Doc/c-api/unicode.rst:978 +#, fuzzy msgid "" -"Raises a :exc:`ValueError` if *size* is ``NULL`` and the :c:type:`wchar_t*` " +"Raises a :exc:`ValueError` if *size* is ``NULL`` and the :c:expr:`wchar_t*` " "string contains null characters." msgstr "" "Provoca un :exc:`ValueError` si *size* es ``NULL`` y la cadena :c:type:" "`wchar_t*` contiene caracteres nulos." -#: ../Doc/c-api/unicode.rst:990 +#: ../Doc/c-api/unicode.rst:986 msgid "Built-in Codecs" msgstr "Códecs incorporados" -#: ../Doc/c-api/unicode.rst:992 +#: ../Doc/c-api/unicode.rst:988 msgid "" "Python provides a set of built-in codecs which are written in C for speed. " "All of these codecs are directly usable via the following functions." @@ -1583,7 +1578,7 @@ msgstr "" "para mayor velocidad. Todos estos códecs se pueden usar directamente a " "través de las siguientes funciones." -#: ../Doc/c-api/unicode.rst:995 +#: ../Doc/c-api/unicode.rst:991 msgid "" "Many of the following APIs take two arguments encoding and errors, and they " "have the same semantics as the ones of the built-in :func:`str` string " @@ -1593,7 +1588,7 @@ msgstr "" "y tienen la misma semántica que las del constructor de objetos de cadena " "incorporado :func:`str`." -#: ../Doc/c-api/unicode.rst:999 +#: ../Doc/c-api/unicode.rst:995 msgid "" "Setting encoding to ``NULL`` causes the default encoding to be used which is " "UTF-8. The file system calls should use :c:func:`PyUnicode_FSConverter` for " @@ -1612,7 +1607,7 @@ msgstr "" "cambiará en tiempo de ejecución (como cuando la aplicación invoca " "*setlocale*)." -#: ../Doc/c-api/unicode.rst:1007 +#: ../Doc/c-api/unicode.rst:1003 msgid "" "Error handling is set by errors which may also be set to ``NULL`` meaning to " "use the default handling defined for the codec. Default error handling for " @@ -1623,23 +1618,24 @@ msgstr "" "definido para el códec. El manejo de errores predeterminado para todos los " "códecs integrados es \"estricto\" (se lanza :exc:`ValueError`)." -#: ../Doc/c-api/unicode.rst:1011 +#: ../Doc/c-api/unicode.rst:1007 +#, fuzzy msgid "" -"The codecs all use a similar interface. Only deviation from the following " +"The codecs all use a similar interface. Only deviations from the following " "generic ones are documented for simplicity." msgstr "" "Todos los códecs usan una interfaz similar. Solo la desviación de las " "siguientes genéricas se documenta por simplicidad." -#: ../Doc/c-api/unicode.rst:1016 +#: ../Doc/c-api/unicode.rst:1012 msgid "Generic Codecs" msgstr "Códecs genéricos" -#: ../Doc/c-api/unicode.rst:1018 +#: ../Doc/c-api/unicode.rst:1014 msgid "These are the generic codec APIs:" msgstr "Estas son las APIs de códecs genéricos:" -#: ../Doc/c-api/unicode.rst:1024 +#: ../Doc/c-api/unicode.rst:1020 msgid "" "Create a Unicode object by decoding *size* bytes of the encoded string *s*. " "*encoding* and *errors* have the same meaning as the parameters of the same " @@ -1653,7 +1649,7 @@ msgstr "" "utilizará se busca utilizando el registro de códec Python. Retorna ``NULL`` " "si el códec provocó una excepción." -#: ../Doc/c-api/unicode.rst:1034 +#: ../Doc/c-api/unicode.rst:1030 msgid "" "Encode a Unicode object and return the result as Python bytes object. " "*encoding* and *errors* have the same meaning as the parameters of the same " @@ -1667,37 +1663,15 @@ msgstr "" "utilizará se busca utilizando el registro de códec Python. Retorna ``NULL`` " "si el códec provocó una excepción." -#: ../Doc/c-api/unicode.rst:1044 -msgid "" -"Encode the :c:type:`Py_UNICODE` buffer *s* of the given *size* and return a " -"Python bytes object. *encoding* and *errors* have the same meaning as the " -"parameters of the same name in the Unicode :meth:`~str.encode` method. The " -"codec to be used is looked up using the Python codec registry. Return " -"``NULL`` if an exception was raised by the codec." -msgstr "" -"Codifica el búfer :c:type:`Py_UNICODE` *s* del tamaño *size* dado y retorna " -"un objeto de bytes de Python. *encoding* y *errors* tienen el mismo " -"significado que los parámetros del mismo nombre en el método Unicode :meth:" -"`~str.encode`. El códec que se utilizará se busca utilizando el registro de " -"códec Python. Retorna ``NULL`` si el códec provocó una excepción." - -#: ../Doc/c-api/unicode.rst:1052 ../Doc/c-api/unicode.rst:1312 -msgid "" -"Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :c:" -"func:`PyUnicode_AsEncodedString`." -msgstr "" -"Parte del viejo estilo de la API :c:type:`Py_UNICODE`; por favor migrar para " -"usar :c:func:`PyUnicode_AsEncodedString`." - -#: ../Doc/c-api/unicode.rst:1056 +#: ../Doc/c-api/unicode.rst:1038 msgid "UTF-8 Codecs" msgstr "Códecs UTF-8" -#: ../Doc/c-api/unicode.rst:1058 +#: ../Doc/c-api/unicode.rst:1040 msgid "These are the UTF-8 codec APIs:" msgstr "Estas son las APIs del códec UTF-8:" -#: ../Doc/c-api/unicode.rst:1063 +#: ../Doc/c-api/unicode.rst:1045 msgid "" "Create a Unicode object by decoding *size* bytes of the UTF-8 encoded string " "*s*. Return ``NULL`` if an exception was raised by the codec." @@ -1705,7 +1679,7 @@ msgstr "" "Crea un objeto Unicode decodificando *size* bytes de la cadena codificada " "UTF-8 *s*. Retorna ``NULL`` si el códec provocó una excepción." -#: ../Doc/c-api/unicode.rst:1070 +#: ../Doc/c-api/unicode.rst:1052 msgid "" "If *consumed* is ``NULL``, behave like :c:func:`PyUnicode_DecodeUTF8`. If " "*consumed* is not ``NULL``, trailing incomplete UTF-8 byte sequences will " @@ -1717,7 +1691,7 @@ msgstr "" "se tratarán como un error. Esos bytes no serán decodificados y la cantidad " "de bytes que han sido decodificados se almacenará en *consumed*." -#: ../Doc/c-api/unicode.rst:1078 +#: ../Doc/c-api/unicode.rst:1060 msgid "" "Encode a Unicode object using UTF-8 and return the result as Python bytes " "object. Error handling is \"strict\". Return ``NULL`` if an exception was " @@ -1727,7 +1701,7 @@ msgstr "" "objeto de bytes de Python. El manejo de errores es \"estricto\". Retorna " "``NULL`` si el códec provocó una excepción." -#: ../Doc/c-api/unicode.rst:1085 +#: ../Doc/c-api/unicode.rst:1067 msgid "" "Return a pointer to the UTF-8 encoding of the Unicode object, and store the " "size of the encoded representation (in bytes) in *size*. The *size* " @@ -1741,7 +1715,7 @@ msgstr "" "retornado siempre tiene un byte nulo adicional agregado (no incluido en " "*size*), independientemente de si hay otros puntos de código nulo." -#: ../Doc/c-api/unicode.rst:1091 +#: ../Doc/c-api/unicode.rst:1073 msgid "" "In the case of an error, ``NULL`` is returned with an exception set and no " "*size* is stored." @@ -1749,57 +1723,40 @@ msgstr "" "En caso de error, se retorna ``NULL`` con un conjunto de excepciones y no se " "almacena *size*." -#: ../Doc/c-api/unicode.rst:1094 +#: ../Doc/c-api/unicode.rst:1076 +#, fuzzy msgid "" "This caches the UTF-8 representation of the string in the Unicode object, " "and subsequent calls will return a pointer to the same buffer. The caller " -"is not responsible for deallocating the buffer." +"is not responsible for deallocating the buffer. The buffer is deallocated " +"and pointers to it become invalid when the Unicode object is garbage " +"collected." msgstr "" "Esto almacena en caché la representación UTF-8 de la cadena en el objeto " "Unicode, y las llamadas posteriores retornarán un puntero al mismo búfer. La " "persona que llama no es responsable de desasignar el búfer." -#: ../Doc/c-api/unicode.rst:1100 ../Doc/c-api/unicode.rst:1113 +#: ../Doc/c-api/unicode.rst:1083 ../Doc/c-api/unicode.rst:1096 msgid "The return type is now ``const char *`` rather of ``char *``." msgstr "El tipo de retorno ahora es ``const char *`` en lugar de ``char *``." -#: ../Doc/c-api/unicode.rst:1103 +#: ../Doc/c-api/unicode.rst:1086 msgid "This function is a part of the :ref:`limited API `." msgstr "Esta función es parte de la :ref:`API limitada `." -#: ../Doc/c-api/unicode.rst:1109 +#: ../Doc/c-api/unicode.rst:1092 msgid "As :c:func:`PyUnicode_AsUTF8AndSize`, but does not store the size." msgstr "Como :c:func:`PyUnicode_AsUTF8AndSize`, pero no almacena el tamaño." -#: ../Doc/c-api/unicode.rst:1119 -msgid "" -"Encode the :c:type:`Py_UNICODE` buffer *s* of the given *size* using UTF-8 " -"and return a Python bytes object. Return ``NULL`` if an exception was " -"raised by the codec." -msgstr "" -"Codifica el búfer :c:type:`Py_UNICODE` *s* del tamaño *size* dado usando " -"UTF-8 y retorna un objeto de bytes de Python. Retorna ``NULL`` si el códec " -"provocó una excepción." - -#: ../Doc/c-api/unicode.rst:1126 -msgid "" -"Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :c:" -"func:`PyUnicode_AsUTF8String`, :c:func:`PyUnicode_AsUTF8AndSize` or :c:func:" -"`PyUnicode_AsEncodedString`." -msgstr "" -"Parte del viejo estilo de la API :c:type:`Py_UNICODE`; por favor migrar para " -"usar :c:func:`PyUnicode_AsUTF8String`, :c:func:`PyUnicode_AsUTF8AndSize` o :" -"c:func:`PyUnicode_AsEncodedString`." - -#: ../Doc/c-api/unicode.rst:1130 +#: ../Doc/c-api/unicode.rst:1101 msgid "UTF-32 Codecs" msgstr "Códecs UTF-32" -#: ../Doc/c-api/unicode.rst:1132 +#: ../Doc/c-api/unicode.rst:1103 msgid "These are the UTF-32 codec APIs:" msgstr "Estas son las APIs de códecs para UTF-32:" -#: ../Doc/c-api/unicode.rst:1138 +#: ../Doc/c-api/unicode.rst:1109 msgid "" "Decode *size* bytes from a UTF-32 encoded buffer string and return the " "corresponding Unicode object. *errors* (if non-``NULL``) defines the error " @@ -1809,7 +1766,7 @@ msgstr "" "el objeto Unicode correspondiente. *errors* (si no es ``NULL``) define el " "manejo de errores. Su valor predeterminado es \"estricto\"." -#: ../Doc/c-api/unicode.rst:1142 ../Doc/c-api/unicode.rst:1215 +#: ../Doc/c-api/unicode.rst:1113 ../Doc/c-api/unicode.rst:1163 msgid "" "If *byteorder* is non-``NULL``, the decoder starts decoding using the given " "byte order::" @@ -1817,7 +1774,7 @@ msgstr "" "Si *byteorder* no es ``NULL``, el decodificador comienza a decodificar " "utilizando el orden de bytes dado::" -#: ../Doc/c-api/unicode.rst:1149 +#: ../Doc/c-api/unicode.rst:1120 msgid "" "If ``*byteorder`` is zero, and the first four bytes of the input data are a " "byte order mark (BOM), the decoder switches to this byte order and the BOM " @@ -1830,7 +1787,7 @@ msgstr "" "resultante. Si ``*byteorder`` es ``-1`` o ``1``, cualquier marca de orden de " "bytes se copia en la salida." -#: ../Doc/c-api/unicode.rst:1154 ../Doc/c-api/unicode.rst:1228 +#: ../Doc/c-api/unicode.rst:1125 msgid "" "After completion, *\\*byteorder* is set to the current byte order at the end " "of input data." @@ -1838,17 +1795,16 @@ msgstr "" "Una vez completado, *\\*byteorder* se establece en el orden de bytes actual " "al final de los datos de entrada." -#: ../Doc/c-api/unicode.rst:1157 ../Doc/c-api/unicode.rst:1231 +#: ../Doc/c-api/unicode.rst:1128 ../Doc/c-api/unicode.rst:1179 msgid "If *byteorder* is ``NULL``, the codec starts in native order mode." msgstr "" "Si *byteorder* es ``NULL``, el códec se inicia en modo de orden nativo." -#: ../Doc/c-api/unicode.rst:1159 ../Doc/c-api/unicode.rst:1195 -#: ../Doc/c-api/unicode.rst:1233 ../Doc/c-api/unicode.rst:1270 +#: ../Doc/c-api/unicode.rst:1130 ../Doc/c-api/unicode.rst:1181 msgid "Return ``NULL`` if an exception was raised by the codec." msgstr "Retorna ``NULL`` si el códec provocó una excepción." -#: ../Doc/c-api/unicode.rst:1165 +#: ../Doc/c-api/unicode.rst:1136 msgid "" "If *consumed* is ``NULL``, behave like :c:func:`PyUnicode_DecodeUTF32`. If " "*consumed* is not ``NULL``, :c:func:`PyUnicode_DecodeUTF32Stateful` will not " @@ -1863,7 +1819,7 @@ msgstr "" "decodificados y la cantidad de bytes que han sido decodificados se " "almacenará en *consumed*." -#: ../Doc/c-api/unicode.rst:1174 +#: ../Doc/c-api/unicode.rst:1145 msgid "" "Return a Python byte string using the UTF-32 encoding in native byte order. " "The string always starts with a BOM mark. Error handling is \"strict\". " @@ -1873,50 +1829,15 @@ msgstr "" "de bytes nativo. La cadena siempre comienza con una marca BOM. El manejo de " "errores es \"estricto\". Retorna ``NULL`` si el códec provocó una excepción." -#: ../Doc/c-api/unicode.rst:1182 -msgid "" -"Return a Python bytes object holding the UTF-32 encoded value of the Unicode " -"data in *s*. Output is written according to the following byte order::" -msgstr "" -"Retorna un objeto de bytes de Python que contiene el valor codificado UTF-32 " -"de los datos Unicode en *s*. La salida se escribe de acuerdo con el " -"siguiente orden de bytes:" - -#: ../Doc/c-api/unicode.rst:1189 ../Doc/c-api/unicode.rst:1263 -msgid "" -"If byteorder is ``0``, the output string will always start with the Unicode " -"BOM mark (U+FEFF). In the other two modes, no BOM mark is prepended." -msgstr "" -"Si *byteorder* es ``0``, la cadena de caracteres de salida siempre comenzará " -"con la marca Unicode BOM (U+FEFF). En los otros dos modos, no se antepone " -"ninguna marca BOM." - -#: ../Doc/c-api/unicode.rst:1192 -msgid "" -"If ``Py_UNICODE_WIDE`` is not defined, surrogate pairs will be output as a " -"single code point." -msgstr "" -"Si ``Py_UNICODE_WIDE`` no está definido, los pares sustitutos se mostrarán " -"como un único punto de código." - -#: ../Doc/c-api/unicode.rst:1199 -msgid "" -"Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :c:" -"func:`PyUnicode_AsUTF32String` or :c:func:`PyUnicode_AsEncodedString`." -msgstr "" -"Parte del viejo estilo de la API :c:type:`Py_UNICODE`; por favor migrar para " -"usar :c:func:`PyUnicode_AsUTF32String`. o :c:func:" -"`PyUnicode_AsEncodedString`." - -#: ../Doc/c-api/unicode.rst:1203 +#: ../Doc/c-api/unicode.rst:1151 msgid "UTF-16 Codecs" msgstr "Códecs UTF-16" -#: ../Doc/c-api/unicode.rst:1205 +#: ../Doc/c-api/unicode.rst:1153 msgid "These are the UTF-16 codec APIs:" msgstr "Estas son las APIs de códecs para UTF-16:" -#: ../Doc/c-api/unicode.rst:1211 +#: ../Doc/c-api/unicode.rst:1159 msgid "" "Decode *size* bytes from a UTF-16 encoded buffer string and return the " "corresponding Unicode object. *errors* (if non-``NULL``) defines the error " @@ -1924,10 +1845,10 @@ msgid "" msgstr "" "Decodifica *size* bytes de una cadena de caracteres de búfer codificada " "UTF-16 y retorna el objeto Unicode correspondiente. *errors* (si no es " -"``NULL``) define el manejo de errores. Su valor predeterminado es \"estricto" -"\"." +"``NULL``) define el manejo de errores. Su valor predeterminado es " +"\"estricto\"." -#: ../Doc/c-api/unicode.rst:1222 +#: ../Doc/c-api/unicode.rst:1170 msgid "" "If ``*byteorder`` is zero, and the first two bytes of the input data are a " "byte order mark (BOM), the decoder switches to this byte order and the BOM " @@ -1939,10 +1860,19 @@ msgstr "" "son una marca de orden de bytes (BOM), el decodificador cambia a este orden " "de bytes y la BOM no se copia en la cadena de caracteres Unicode resultante. " "Si ``*byteorder`` es ``-1`` o ``1``, cualquier marca de orden de bytes se " -"copia en la salida (donde dará como resultado un ``\\ufeff`` o un carácter ``" -"\\ufffe``)." +"copia en la salida (donde dará como resultado un ``\\ufeff`` o un carácter " +"``\\ufffe``)." -#: ../Doc/c-api/unicode.rst:1239 +#: ../Doc/c-api/unicode.rst:1176 +#, fuzzy +msgid "" +"After completion, ``*byteorder`` is set to the current byte order at the end " +"of input data." +msgstr "" +"Una vez completado, *\\*byteorder* se establece en el orden de bytes actual " +"al final de los datos de entrada." + +#: ../Doc/c-api/unicode.rst:1187 msgid "" "If *consumed* is ``NULL``, behave like :c:func:`PyUnicode_DecodeUTF16`. If " "*consumed* is not ``NULL``, :c:func:`PyUnicode_DecodeUTF16Stateful` will not " @@ -1958,7 +1888,7 @@ msgstr "" "serán decodificados y la cantidad de bytes que han sido decodificados se " "almacenará en *consumed*." -#: ../Doc/c-api/unicode.rst:1248 +#: ../Doc/c-api/unicode.rst:1196 msgid "" "Return a Python byte string using the UTF-16 encoding in native byte order. " "The string always starts with a BOM mark. Error handling is \"strict\". " @@ -1968,43 +1898,15 @@ msgstr "" "de bytes nativo. La cadena siempre comienza con una marca BOM. El manejo de " "errores es \"estricto\". Retorna ``NULL`` si el códec provocó una excepción." -#: ../Doc/c-api/unicode.rst:1256 -msgid "" -"Return a Python bytes object holding the UTF-16 encoded value of the Unicode " -"data in *s*. Output is written according to the following byte order::" -msgstr "" -"Retorna un objeto de bytes de Python que contiene el valor codificado UTF-16 " -"de los datos Unicode en *s*. La salida se escribe de acuerdo con el " -"siguiente orden de bytes:" - -#: ../Doc/c-api/unicode.rst:1266 -msgid "" -"If ``Py_UNICODE_WIDE`` is defined, a single :c:type:`Py_UNICODE` value may " -"get represented as a surrogate pair. If it is not defined, each :c:type:" -"`Py_UNICODE` values is interpreted as a UCS-2 character." -msgstr "" -"Si se define ``Py_UNICODE_WIDE``, un solo valor de :c:type:`Py_UNICODE` " -"puede representarse como un par sustituto. Si no está definido, cada uno de " -"los valores :c:type:`Py_UNICODE` se interpreta como un carácter UCS-2." - -#: ../Doc/c-api/unicode.rst:1274 -msgid "" -"Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :c:" -"func:`PyUnicode_AsUTF16String` or :c:func:`PyUnicode_AsEncodedString`." -msgstr "" -"Parte del viejo estilo de la API :c:type:`Py_UNICODE`; por favor migrar para " -"usar :c:func:`PyUnicode_AsUTF16String`. o :c:func:" -"`PyUnicode_AsEncodedString`." - -#: ../Doc/c-api/unicode.rst:1278 +#: ../Doc/c-api/unicode.rst:1202 msgid "UTF-7 Codecs" msgstr "Códecs UTF-7" -#: ../Doc/c-api/unicode.rst:1280 +#: ../Doc/c-api/unicode.rst:1204 msgid "These are the UTF-7 codec APIs:" msgstr "Estas son las APIs del códec UTF-7:" -#: ../Doc/c-api/unicode.rst:1285 +#: ../Doc/c-api/unicode.rst:1209 msgid "" "Create a Unicode object by decoding *size* bytes of the UTF-7 encoded string " "*s*. Return ``NULL`` if an exception was raised by the codec." @@ -2012,7 +1914,7 @@ msgstr "" "Crea un objeto Unicode decodificando *size* bytes de la cadena de caracteres " "codificada UTF-7 *s*. Retorna ``NULL`` si el códec provocó una excepción." -#: ../Doc/c-api/unicode.rst:1292 +#: ../Doc/c-api/unicode.rst:1216 msgid "" "If *consumed* is ``NULL``, behave like :c:func:`PyUnicode_DecodeUTF7`. If " "*consumed* is not ``NULL``, trailing incomplete UTF-7 base-64 sections will " @@ -2024,37 +1926,15 @@ msgstr "" "tratarán como un error. Esos bytes no serán decodificados y la cantidad de " "bytes que han sido decodificados se almacenará en *consumed*." -#: ../Doc/c-api/unicode.rst:1301 -msgid "" -"Encode the :c:type:`Py_UNICODE` buffer of the given size using UTF-7 and " -"return a Python bytes object. Return ``NULL`` if an exception was raised by " -"the codec." -msgstr "" -"Codifica el búfer :c:type:`Py_UNICODE` del tamaño dado usando UTF-7 y " -"retorna un objeto de bytes de Python. Retorna ``NULL`` si el códec provocó " -"una excepción." - -#: ../Doc/c-api/unicode.rst:1305 -msgid "" -"If *base64SetO* is nonzero, \"Set O\" (punctuation that has no otherwise " -"special meaning) will be encoded in base-64. If *base64WhiteSpace* is " -"nonzero, whitespace will be encoded in base-64. Both are set to zero for " -"the Python \"utf-7\" codec." -msgstr "" -"Si *base64SetO* no es cero, \"Set O\" (puntuación que no tiene un " -"significado especial) se codificará en base-64. Si *base64WhiteSpace* no es " -"cero, el espacio en blanco se codificará en base-64. Ambos se establecen en " -"cero para el códec Python \"utf-7\"." - -#: ../Doc/c-api/unicode.rst:1316 +#: ../Doc/c-api/unicode.rst:1223 msgid "Unicode-Escape Codecs" msgstr "Códecs Unicode escapado" -#: ../Doc/c-api/unicode.rst:1318 +#: ../Doc/c-api/unicode.rst:1225 msgid "These are the \"Unicode Escape\" codec APIs:" msgstr "Estas son las APIs de códecs para Unicode escapado:" -#: ../Doc/c-api/unicode.rst:1324 +#: ../Doc/c-api/unicode.rst:1231 msgid "" "Create a Unicode object by decoding *size* bytes of the Unicode-Escape " "encoded string *s*. Return ``NULL`` if an exception was raised by the codec." @@ -2063,7 +1943,7 @@ msgstr "" "Unicode escapada (*Unicode-Escape*) *s*. Retorna ``NULL`` si el códec " "provocó una excepción." -#: ../Doc/c-api/unicode.rst:1330 +#: ../Doc/c-api/unicode.rst:1237 msgid "" "Encode a Unicode object using Unicode-Escape and return the result as a " "bytes object. Error handling is \"strict\". Return ``NULL`` if an " @@ -2073,34 +1953,16 @@ msgstr "" "retorna el resultado como un objeto de bytes. El manejo de errores es " "\"estricto\". Retorna ``NULL`` si el códec provocó una excepción." -#: ../Doc/c-api/unicode.rst:1337 -msgid "" -"Encode the :c:type:`Py_UNICODE` buffer of the given *size* using Unicode-" -"Escape and return a bytes object. Return ``NULL`` if an exception was " -"raised by the codec." -msgstr "" -"Codifica el búfer :c:type:`Py_UNICODE` del tamaño *size* dado utilizando " -"Unicode escapado y retorna un objeto de bytes. Retorna ``NULL`` si el códec " -"provocó una excepción." - -#: ../Doc/c-api/unicode.rst:1342 -msgid "" -"Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :c:" -"func:`PyUnicode_AsUnicodeEscapeString`." -msgstr "" -"Parte del viejo estilo de la API :c:type:`Py_UNICODE`; por favor migrar para " -"usar :c:func:`PyUnicode_AsUnicodeEscapeString`." - -#: ../Doc/c-api/unicode.rst:1346 +#: ../Doc/c-api/unicode.rst:1243 msgid "Raw-Unicode-Escape Codecs" msgstr "Códecs para Unicode escapado en bruto" -#: ../Doc/c-api/unicode.rst:1348 +#: ../Doc/c-api/unicode.rst:1245 msgid "These are the \"Raw Unicode Escape\" codec APIs:" msgstr "" "Estas son las API del códec Unicode escapado en bruto (*Raw Unicode Escape*):" -#: ../Doc/c-api/unicode.rst:1354 +#: ../Doc/c-api/unicode.rst:1251 msgid "" "Create a Unicode object by decoding *size* bytes of the Raw-Unicode-Escape " "encoded string *s*. Return ``NULL`` if an exception was raised by the codec." @@ -2109,7 +1971,7 @@ msgstr "" "codificada Unicode escapada en bruto (*Raw-Unicode-Escape*) *s*. Retorna " "``NULL`` si el códec provocó una excepción." -#: ../Doc/c-api/unicode.rst:1360 +#: ../Doc/c-api/unicode.rst:1257 msgid "" "Encode a Unicode object using Raw-Unicode-Escape and return the result as a " "bytes object. Error handling is \"strict\". Return ``NULL`` if an " @@ -2119,31 +1981,11 @@ msgstr "" "Escape*) y retorna el resultado como un objeto de bytes. El manejo de " "errores es \"estricto\". Retorna ``NULL`` si el códec provocó una excepción." -#: ../Doc/c-api/unicode.rst:1368 -msgid "" -"Encode the :c:type:`Py_UNICODE` buffer of the given *size* using Raw-Unicode-" -"Escape and return a bytes object. Return ``NULL`` if an exception was " -"raised by the codec." -msgstr "" -"Codifica el búfer :c:type:`Py_UNICODE` del tamaño *size* dado usando Unicode " -"escapado en bruto (*Raw-Unicode-Escape*) y retorna un objeto de bytes. " -"Retorna ``NULL`` si el códec provocó una excepción." - -#: ../Doc/c-api/unicode.rst:1374 -msgid "" -"Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :c:" -"func:`PyUnicode_AsRawUnicodeEscapeString` or :c:func:" -"`PyUnicode_AsEncodedString`." -msgstr "" -"Parte del viejo estilo de la API :c:type:`Py_UNICODE`; por favor migrar para " -"usar :c:func:`PyUnicode_AsRawUnicodeEscapeString` o :c:func:" -"`PyUnicode_AsEncodedString`." - -#: ../Doc/c-api/unicode.rst:1378 +#: ../Doc/c-api/unicode.rst:1263 msgid "Latin-1 Codecs" msgstr "Códecs Latin-1" -#: ../Doc/c-api/unicode.rst:1380 +#: ../Doc/c-api/unicode.rst:1265 msgid "" "These are the Latin-1 codec APIs: Latin-1 corresponds to the first 256 " "Unicode ordinals and only these are accepted by the codecs during encoding." @@ -2152,7 +1994,7 @@ msgstr "" "ordinales Unicode y solo estos son aceptados por los códecs durante la " "codificación." -#: ../Doc/c-api/unicode.rst:1386 +#: ../Doc/c-api/unicode.rst:1271 msgid "" "Create a Unicode object by decoding *size* bytes of the Latin-1 encoded " "string *s*. Return ``NULL`` if an exception was raised by the codec." @@ -2161,7 +2003,7 @@ msgstr "" "codificada en latin-1 *s*. Retorna ``NULL`` si el códec provocó una " "excepción." -#: ../Doc/c-api/unicode.rst:1392 +#: ../Doc/c-api/unicode.rst:1277 msgid "" "Encode a Unicode object using Latin-1 and return the result as Python bytes " "object. Error handling is \"strict\". Return ``NULL`` if an exception was " @@ -2171,30 +2013,11 @@ msgstr "" "objeto de bytes Python. El manejo de errores es \"estricto\". Retorna " "``NULL`` si el códec provocó una excepción." -#: ../Doc/c-api/unicode.rst:1399 -msgid "" -"Encode the :c:type:`Py_UNICODE` buffer of the given *size* using Latin-1 and " -"return a Python bytes object. Return ``NULL`` if an exception was raised by " -"the codec." -msgstr "" -"Codifica el búfer :c:type:`Py_UNICODE` del tamaño *size* dado usando Latin-1 " -"y retorna un objeto de bytes de Python. Retorna ``NULL`` si el códec provocó " -"una excepción." - -#: ../Doc/c-api/unicode.rst:1406 -msgid "" -"Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :c:" -"func:`PyUnicode_AsLatin1String` or :c:func:`PyUnicode_AsEncodedString`." -msgstr "" -"Parte del viejo estilo de la API :c:type:`Py_UNICODE`; por favor migrar para " -"usar :c:func:`PyUnicode_AsLatin1String` o :c:func:" -"`PyUnicode_AsEncodedString`." - -#: ../Doc/c-api/unicode.rst:1410 +#: ../Doc/c-api/unicode.rst:1283 msgid "ASCII Codecs" msgstr "Códecs ASCII" -#: ../Doc/c-api/unicode.rst:1412 +#: ../Doc/c-api/unicode.rst:1285 msgid "" "These are the ASCII codec APIs. Only 7-bit ASCII data is accepted. All " "other codes generate errors." @@ -2202,7 +2025,7 @@ msgstr "" "Estas son las API del códec ASCII. Solo se aceptan datos ASCII de 7 bits. " "Todos los demás códigos generan errores." -#: ../Doc/c-api/unicode.rst:1418 +#: ../Doc/c-api/unicode.rst:1291 msgid "" "Create a Unicode object by decoding *size* bytes of the ASCII encoded string " "*s*. Return ``NULL`` if an exception was raised by the codec." @@ -2210,7 +2033,7 @@ msgstr "" "Crea un objeto Unicode decodificando *size* bytes de la cadena de caracteres " "codificada ASCII *s*. Retorna ``NULL`` si el códec provocó una excepción." -#: ../Doc/c-api/unicode.rst:1424 +#: ../Doc/c-api/unicode.rst:1297 msgid "" "Encode a Unicode object using ASCII and return the result as Python bytes " "object. Error handling is \"strict\". Return ``NULL`` if an exception was " @@ -2220,33 +2043,16 @@ msgstr "" "objeto de bytes de Python. El manejo de errores es \"estricto\". Retorna " "``NULL`` si el códec provocó una excepción." -#: ../Doc/c-api/unicode.rst:1431 -msgid "" -"Encode the :c:type:`Py_UNICODE` buffer of the given *size* using ASCII and " -"return a Python bytes object. Return ``NULL`` if an exception was raised by " -"the codec." -msgstr "" -"Codifica el búfer :c:type:`Py_UNICODE` del tamaño *size* dado utilizando " -"ASCII y retorna un objeto de bytes de Python. Retorna ``NULL`` si el códec " -"provocó una excepción." - -#: ../Doc/c-api/unicode.rst:1438 -msgid "" -"Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :c:" -"func:`PyUnicode_AsASCIIString` or :c:func:`PyUnicode_AsEncodedString`." -msgstr "" -"Parte del viejo estilo de la API :c:type:`Py_UNICODE`; por favor migrar para " -"usar :c:func:`PyUnicode_AsASCIIString` o :c:func:`PyUnicode_AsEncodedString`." - -#: ../Doc/c-api/unicode.rst:1442 +#: ../Doc/c-api/unicode.rst:1303 msgid "Character Map Codecs" msgstr "Códecs de mapa de caracteres" -#: ../Doc/c-api/unicode.rst:1444 +#: ../Doc/c-api/unicode.rst:1305 +#, fuzzy msgid "" "This codec is special in that it can be used to implement many different " "codecs (and this is in fact what was done to obtain most of the standard " -"codecs included in the :mod:`encodings` package). The codec uses mapping to " +"codecs included in the :mod:`encodings` package). The codec uses mappings to " "encode and decode characters. The mapping objects provided must support " "the :meth:`__getitem__` mapping interface; dictionaries and sequences work " "well." @@ -2258,11 +2064,11 @@ msgstr "" "deben soportar la interfaz de mapeo :meth:`__getitem__`; Los diccionarios y " "las secuencias funcionan bien." -#: ../Doc/c-api/unicode.rst:1450 +#: ../Doc/c-api/unicode.rst:1311 msgid "These are the mapping codec APIs:" msgstr "Estos son las API de códec de mapeo:" -#: ../Doc/c-api/unicode.rst:1455 +#: ../Doc/c-api/unicode.rst:1316 msgid "" "Create a Unicode object by decoding *size* bytes of the encoded string *s* " "using the given *mapping* object. Return ``NULL`` if an exception was " @@ -2272,7 +2078,7 @@ msgstr "" "codificada *s* usando el objeto *mapping* dado. Retorna ``NULL`` si el códec " "provocó una excepción." -#: ../Doc/c-api/unicode.rst:1459 +#: ../Doc/c-api/unicode.rst:1320 msgid "" "If *mapping* is ``NULL``, Latin-1 decoding will be applied. Else *mapping* " "must map bytes ordinals (integers in the range from 0 to 255) to Unicode " @@ -2289,7 +2095,7 @@ msgstr "" "``0xFFFE`` o ``'\\ ufffe'``, se tratan como asignaciones indefinidas y " "causan un error." -#: ../Doc/c-api/unicode.rst:1470 +#: ../Doc/c-api/unicode.rst:1331 msgid "" "Encode a Unicode object using the given *mapping* object and return the " "result as a bytes object. Error handling is \"strict\". Return ``NULL`` if " @@ -2299,7 +2105,7 @@ msgstr "" "resultado como un objeto de bytes. El manejo de errores es \"estricto\". " "Retorna ``NULL`` si el códec provocó una excepción." -#: ../Doc/c-api/unicode.rst:1474 +#: ../Doc/c-api/unicode.rst:1335 msgid "" "The *mapping* object must map Unicode ordinal integers to bytes objects, " "integers in the range from 0 to 255 or ``None``. Unmapped character " @@ -2312,30 +2118,11 @@ msgstr "" "asignados a ``Ninguno``, se tratan como \"mapeo indefinido\" y causan un " "error." -#: ../Doc/c-api/unicode.rst:1483 -msgid "" -"Encode the :c:type:`Py_UNICODE` buffer of the given *size* using the given " -"*mapping* object and return the result as a bytes object. Return ``NULL`` " -"if an exception was raised by the codec." -msgstr "" -"Codifica el búfer :c:type:`Py_UNICODE` del tamaño *size* dado utilizando el " -"objeto *mapping* dado y retorna el resultado como un objeto de bytes. " -"Retorna ``NULL`` si el códec provocó una excepción." - -#: ../Doc/c-api/unicode.rst:1490 -msgid "" -"Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :c:" -"func:`PyUnicode_AsCharmapString` or :c:func:`PyUnicode_AsEncodedString`." -msgstr "" -"Parte del viejo estilo de la API :c:type:`Py_UNICODE`; por favor migrar para " -"usar :c:func:`PyUnicode_AsCharmapString` o :c:func:" -"`PyUnicode_AsEncodedString`." - -#: ../Doc/c-api/unicode.rst:1493 +#: ../Doc/c-api/unicode.rst:1341 msgid "The following codec API is special in that maps Unicode to Unicode." msgstr "La siguiente API de códec es especial en que asigna Unicode a Unicode." -#: ../Doc/c-api/unicode.rst:1497 +#: ../Doc/c-api/unicode.rst:1345 msgid "" "Translate a string by applying a character mapping table to it and return " "the resulting Unicode object. Return ``NULL`` if an exception was raised by " @@ -2345,7 +2132,7 @@ msgstr "" "el objeto Unicode resultante. Retorna ``NULL`` cuando el códec provocó una " "excepción." -#: ../Doc/c-api/unicode.rst:1501 +#: ../Doc/c-api/unicode.rst:1349 msgid "" "The mapping table must map Unicode ordinal integers to Unicode ordinal " "integers or ``None`` (causing deletion of the character)." @@ -2353,7 +2140,7 @@ msgstr "" "La tabla de mapeo debe mapear enteros ordinales Unicode a enteros ordinales " "Unicode o ``None`` (causando la eliminación del carácter)." -#: ../Doc/c-api/unicode.rst:1504 +#: ../Doc/c-api/unicode.rst:1352 msgid "" "Mapping tables need only provide the :meth:`__getitem__` interface; " "dictionaries and sequences work well. Unmapped character ordinals (ones " @@ -2364,7 +2151,7 @@ msgstr "" "ordinales de caracteres no asignados (los que causan un :exc:`LookupError`) " "se dejan intactos y se copian tal cual." -#: ../Doc/c-api/unicode.rst:1508 +#: ../Doc/c-api/unicode.rst:1356 msgid "" "*errors* has the usual meaning for codecs. It may be ``NULL`` which " "indicates to use the default error handling." @@ -2372,31 +2159,11 @@ msgstr "" "*errors* tiene el significado habitual para los códecs. Puede ser ``NULL``, " "lo que indica que debe usar el manejo de errores predeterminado." -#: ../Doc/c-api/unicode.rst:1515 -msgid "" -"Translate a :c:type:`Py_UNICODE` buffer of the given *size* by applying a " -"character *mapping* table to it and return the resulting Unicode object. " -"Return ``NULL`` when an exception was raised by the codec." -msgstr "" -"Traduce un búfer :c:type:`Py_UNICODE` del tamaño *size* dado al aplicarle " -"una tabla de *mapping* de caracteres y retornar el objeto Unicode " -"resultante. Retorna ``NULL`` cuando el códec provocó una excepción." - -#: ../Doc/c-api/unicode.rst:1522 -msgid "" -"Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :c:" -"func:`PyUnicode_Translate`. or :ref:`generic codec based API `" -msgstr "" -"Parte del viejo estilo de la API :c:type:`Py_UNICODE`; por favor migrar para " -"usar :c:func:`PyUnicode_Translate`. o :ref:`generic codec based API `" - -#: ../Doc/c-api/unicode.rst:1526 +#: ../Doc/c-api/unicode.rst:1361 msgid "MBCS codecs for Windows" msgstr "Códecs MBCS para Windows" -#: ../Doc/c-api/unicode.rst:1528 +#: ../Doc/c-api/unicode.rst:1363 msgid "" "These are the MBCS codec APIs. They are currently only available on Windows " "and use the Win32 MBCS converters to implement the conversions. Note that " @@ -2409,7 +2176,7 @@ msgstr "" "codificaciones, no solo una. La codificación de destino está definida por la " "configuración del usuario en la máquina que ejecuta el códec." -#: ../Doc/c-api/unicode.rst:1535 +#: ../Doc/c-api/unicode.rst:1370 msgid "" "Create a Unicode object by decoding *size* bytes of the MBCS encoded string " "*s*. Return ``NULL`` if an exception was raised by the codec." @@ -2417,7 +2184,7 @@ msgstr "" "Crea un objeto Unicode decodificando *size* bytes de la cadena de caracteres " "codificada con MBCS *s*. Retorna ``NULL`` si el códec provocó una excepción." -#: ../Doc/c-api/unicode.rst:1542 +#: ../Doc/c-api/unicode.rst:1377 msgid "" "If *consumed* is ``NULL``, behave like :c:func:`PyUnicode_DecodeMBCS`. If " "*consumed* is not ``NULL``, :c:func:`PyUnicode_DecodeMBCSStateful` will not " @@ -2429,7 +2196,7 @@ msgstr "" "decodificará el byte inicial y el número de bytes que se han decodificado se " "almacenará en *consumed*." -#: ../Doc/c-api/unicode.rst:1550 +#: ../Doc/c-api/unicode.rst:1385 msgid "" "Encode a Unicode object using MBCS and return the result as Python bytes " "object. Error handling is \"strict\". Return ``NULL`` if an exception was " @@ -2439,7 +2206,7 @@ msgstr "" "de bytes de Python. El manejo de errores es \"estricto\". Retorna ``NULL`` " "si el códec provocó una excepción." -#: ../Doc/c-api/unicode.rst:1557 +#: ../Doc/c-api/unicode.rst:1392 msgid "" "Encode the Unicode object using the specified code page and return a Python " "bytes object. Return ``NULL`` if an exception was raised by the codec. Use :" @@ -2450,35 +2217,15 @@ msgstr "" "una excepción. Use la página de códigos :c:data:`CP_ACP` para obtener el " "codificador MBCS." -#: ../Doc/c-api/unicode.rst:1566 -msgid "" -"Encode the :c:type:`Py_UNICODE` buffer of the given *size* using MBCS and " -"return a Python bytes object. Return ``NULL`` if an exception was raised by " -"the codec." -msgstr "" -"Codifica el búfer :c:type:`Py_UNICODE` del tamaño *size* dado usando MBCS y " -"retorna un objeto de bytes de Python. Retorna ``NULL`` si el códec provocó " -"una excepción." - -#: ../Doc/c-api/unicode.rst:1573 -msgid "" -"Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :c:" -"func:`PyUnicode_AsMBCSString`, :c:func:`PyUnicode_EncodeCodePage` or :c:func:" -"`PyUnicode_AsEncodedString`." -msgstr "" -"Parte del viejo estilo :c:type:`Py_UNICODE` de la API; por favor migrar a :c:" -"func:`PyUnicode_AsMBCSString`, :c:func:`PyUnicode_EncodeCodePage` o :c:func:" -"`PyUnicode_AsEncodedString`." - -#: ../Doc/c-api/unicode.rst:1577 +#: ../Doc/c-api/unicode.rst:1400 msgid "Methods & Slots" msgstr "Métodos & Ranuras (*Slots*)" -#: ../Doc/c-api/unicode.rst:1583 +#: ../Doc/c-api/unicode.rst:1406 msgid "Methods and Slot Functions" msgstr "Métodos y funciones de ranura (*Slot*)" -#: ../Doc/c-api/unicode.rst:1585 +#: ../Doc/c-api/unicode.rst:1408 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 " @@ -2488,16 +2235,16 @@ msgstr "" "caracteres en la entrada (nos referimos a ellos como cadenas de caracteres " "en las descripciones) y retorna objetos Unicode o enteros según corresponda." -#: ../Doc/c-api/unicode.rst:1589 +#: ../Doc/c-api/unicode.rst:1412 msgid "They all return ``NULL`` or ``-1`` if an exception occurs." msgstr "Todos retornan ``NULL`` o ``-1`` si ocurre una excepción." -#: ../Doc/c-api/unicode.rst:1594 +#: ../Doc/c-api/unicode.rst:1417 msgid "Concat two strings giving a new Unicode string." msgstr "" "Une dos cadenas de caracteres que dan una nueva cadena de caracteres Unicode." -#: ../Doc/c-api/unicode.rst:1599 +#: ../Doc/c-api/unicode.rst:1422 msgid "" "Split a string giving a list of Unicode strings. If *sep* is ``NULL``, " "splitting will be done at all whitespace substrings. Otherwise, splits " @@ -2512,10 +2259,11 @@ msgstr "" "negativo, no se establece ningún límite. Los separadores no están incluidos " "en la lista resultante." -#: ../Doc/c-api/unicode.rst:1607 +#: ../Doc/c-api/unicode.rst:1430 +#, fuzzy msgid "" "Split a Unicode string at line breaks, returning a list of Unicode strings. " -"CRLF is considered to be one line break. If *keepend* is ``0``, the Line " +"CRLF is considered to be one line break. If *keepend* is ``0``, the line " "break characters are not included in the resulting strings." msgstr "" "Divide una cadena de caracteres Unicode en los saltos de línea, retornando " @@ -2523,7 +2271,7 @@ msgstr "" "línea. Si *keepend* es ``0``, los caracteres de salto de línea no se " "incluyen en las cadenas de caracteres resultantes." -#: ../Doc/c-api/unicode.rst:1614 +#: ../Doc/c-api/unicode.rst:1437 msgid "" "Join a sequence of strings using the given *separator* and return the " "resulting Unicode string." @@ -2531,7 +2279,7 @@ msgstr "" "Une una secuencia de cadenas de caracteres usando el *separator* dado y " "retorna la cadena de caracteres Unicode resultante." -#: ../Doc/c-api/unicode.rst:1621 +#: ../Doc/c-api/unicode.rst:1444 msgid "" "Return ``1`` if *substr* matches ``str[start:end]`` at the given tail end " "(*direction* == ``-1`` means to do a prefix match, *direction* == ``1`` a " @@ -2542,7 +2290,7 @@ msgstr "" "prefijo, *direction* == ``1`` una coincidencia de sufijo), ``0`` de lo " "contrario. retorne ``-1`` si ocurrió un error." -#: ../Doc/c-api/unicode.rst:1629 +#: ../Doc/c-api/unicode.rst:1452 msgid "" "Return the first position of *substr* in ``str[start:end]`` using the given " "*direction* (*direction* == ``1`` means to do a forward search, *direction* " @@ -2557,7 +2305,7 @@ msgstr "" "que no se encontró ninguna coincidencia, y ``-2`` indica que se produjo un " "error y se ha establecido una excepción." -#: ../Doc/c-api/unicode.rst:1639 +#: ../Doc/c-api/unicode.rst:1462 msgid "" "Return the first position of the character *ch* in ``str[start:end]`` using " "the given *direction* (*direction* == ``1`` means to do a forward search, " @@ -2572,13 +2320,13 @@ msgstr "" "que no se encontró ninguna coincidencia, y ``-2`` indica que se produjo un " "error y se ha establecido una excepción." -#: ../Doc/c-api/unicode.rst:1647 +#: ../Doc/c-api/unicode.rst:1470 msgid "*start* and *end* are now adjusted to behave like ``str[start:end]``." msgstr "" "*start* y *end* ahora están ajustados para comportarse como ``str[start:" "end]``." -#: ../Doc/c-api/unicode.rst:1654 +#: ../Doc/c-api/unicode.rst:1477 msgid "" "Return the number of non-overlapping occurrences of *substr* in ``str[start:" "end]``. Return ``-1`` if an error occurred." @@ -2586,7 +2334,7 @@ msgstr "" "Retorna el número de ocurrencias no superpuestas de *substr* en ``str[start:" "end]``. Retorna ``-1`` si ocurrió un error." -#: ../Doc/c-api/unicode.rst:1661 +#: ../Doc/c-api/unicode.rst:1484 msgid "" "Replace at most *maxcount* occurrences of *substr* in *str* with *replstr* " "and return the resulting Unicode object. *maxcount* == ``-1`` means replace " @@ -2596,7 +2344,7 @@ msgstr "" "*replstr* y retorna el objeto Unicode resultante. *maxcount* == ``-1`` " "significa reemplazar todas las ocurrencias." -#: ../Doc/c-api/unicode.rst:1668 +#: ../Doc/c-api/unicode.rst:1491 msgid "" "Compare two strings and return ``-1``, ``0``, ``1`` for less than, equal, " "and greater than, respectively." @@ -2604,7 +2352,7 @@ msgstr "" "Compara dos cadenas de caracteres y retorna ``-1``, ``0``, ``1`` para menor " "que, igual y mayor que, respectivamente." -#: ../Doc/c-api/unicode.rst:1671 +#: ../Doc/c-api/unicode.rst:1494 msgid "" "This function returns ``-1`` upon failure, so one should call :c:func:" "`PyErr_Occurred` to check for errors." @@ -2612,7 +2360,7 @@ msgstr "" "Esta función retorna ``-1`` en caso de falla, por lo que se debe llamar a :c:" "func:`PyErr_Occurred` para verificar si hay errores." -#: ../Doc/c-api/unicode.rst:1677 +#: ../Doc/c-api/unicode.rst:1500 msgid "" "Compare a Unicode object, *uni*, with *string* and return ``-1``, ``0``, " "``1`` for less than, equal, and greater than, respectively. It is best to " @@ -2624,30 +2372,30 @@ msgstr "" "solo cadenas de caracteres codificadas en ASCII, pero la función interpreta " "la cadena de entrada como ISO-8859-1 si contiene caracteres no ASCII." -#: ../Doc/c-api/unicode.rst:1682 +#: ../Doc/c-api/unicode.rst:1505 msgid "This function does not raise exceptions." msgstr "Esta función no lanza excepciones." -#: ../Doc/c-api/unicode.rst:1687 +#: ../Doc/c-api/unicode.rst:1510 msgid "Rich compare two Unicode strings and return one of the following:" msgstr "" "Comparación enriquecida de dos cadenas de caracteres Unicode y retorna uno " "de los siguientes:" -#: ../Doc/c-api/unicode.rst:1689 +#: ../Doc/c-api/unicode.rst:1512 msgid "``NULL`` in case an exception was raised" msgstr "``NULL`` en caso de que se produzca una excepción" -#: ../Doc/c-api/unicode.rst:1690 +#: ../Doc/c-api/unicode.rst:1513 msgid ":const:`Py_True` or :const:`Py_False` for successful comparisons" msgstr ":const:`Py_True` o :const:`Py_False` para comparaciones exitosas" -#: ../Doc/c-api/unicode.rst:1691 +#: ../Doc/c-api/unicode.rst:1514 msgid ":const:`Py_NotImplemented` in case the type combination is unknown" msgstr "" ":const:`Py_NotImplemented` en caso que se desconozca la combinación de tipos" -#: ../Doc/c-api/unicode.rst:1693 +#: ../Doc/c-api/unicode.rst:1516 msgid "" "Possible values for *op* are :const:`Py_GT`, :const:`Py_GE`, :const:" "`Py_EQ`, :const:`Py_NE`, :const:`Py_LT`, and :const:`Py_LE`." @@ -2655,7 +2403,7 @@ msgstr "" "Los posibles valores para *op* son :const:`Py_GT`, :const:`Py_GE`, :const:" "`Py_EQ`, :const:`Py_NE`, :const:`Py_LT`, y :const:`Py_LE`." -#: ../Doc/c-api/unicode.rst:1699 +#: ../Doc/c-api/unicode.rst:1522 msgid "" "Return a new string object from *format* and *args*; this is analogous to " "``format % args``." @@ -2663,7 +2411,7 @@ msgstr "" "Retorna un nuevo objeto de cadena de caracteres desde *format* y *args*; " "esto es análogo al ``format % args``." -#: ../Doc/c-api/unicode.rst:1705 +#: ../Doc/c-api/unicode.rst:1528 msgid "" "Check whether *element* is contained in *container* and return true or false " "accordingly." @@ -2671,7 +2419,7 @@ msgstr "" "Comprueba si *element* está contenido en *container* y retorna verdadero o " "falso en consecuencia." -#: ../Doc/c-api/unicode.rst:1708 +#: ../Doc/c-api/unicode.rst:1531 msgid "" "*element* has to coerce to a one element Unicode string. ``-1`` is returned " "if there was an error." @@ -2679,12 +2427,12 @@ msgstr "" "*element* tiene que convertir a una cadena de caracteres Unicode. Se retorna " "``-1`` si hubo un error." -#: ../Doc/c-api/unicode.rst:1714 +#: ../Doc/c-api/unicode.rst:1537 msgid "" "Intern the argument *\\*string* in place. The argument must be the address " "of a pointer variable pointing to a Python Unicode string object. If there " -"is an existing interned string that is the same as *\\*string*, it sets *" -"\\*string* to it (decrementing the reference count of the old string object " +"is an existing interned string that is the same as *\\*string*, it sets " +"*\\*string* to it (decrementing the reference count of the old string object " "and incrementing the reference count of the interned string object), " "otherwise it leaves *\\*string* alone and interns it (incrementing its " "reference count). (Clarification: even though there is a lot of talk about " @@ -2703,7 +2451,7 @@ msgstr "" "recuento de referencia; usted es el propietario del objeto después de la " "llamada si y solo si lo tenía antes de la llamada)." -#: ../Doc/c-api/unicode.rst:1727 +#: ../Doc/c-api/unicode.rst:1550 msgid "" "A combination of :c:func:`PyUnicode_FromString` and :c:func:" "`PyUnicode_InternInPlace`, returning either a new Unicode string object that " @@ -2715,3 +2463,285 @@ msgstr "" "caracteres Unicode que ha sido creado internamente o una nueva " "referencia(\"propia\") a un objeto de cadena de caracteres interno anterior " "con el mismo valor." + +#~ msgid "Py_ssize_t" +#~ msgstr "Py_ssize_t" + +#~ msgid "" +#~ "Create a Unicode object by replacing all decimal digits in :c:type:" +#~ "`Py_UNICODE` buffer of the given *size* by ASCII digits 0--9 according to " +#~ "their decimal value. Return ``NULL`` if an exception occurs." +#~ msgstr "" +#~ "Crea un objeto Unicode reemplazando todos los dígitos decimales en el " +#~ "búfer :c:type:`Py_UNICODE` del *size* dado por dígitos ASCII 0--9 de " +#~ "acuerdo con su valor decimal. Retorna ``NULL`` si ocurre una excepción." + +#~ msgid "" +#~ "Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :" +#~ "c:func:`Py_UNICODE_TODECIMAL`." +#~ msgstr "" +#~ "Parte del estilo antiguo de la API :c:type:`Py_UNICODE`; por favor migrar " +#~ "para usar :c:func:`Py_UNICODE_TODECIMAL`." + +#~ msgid "" +#~ "Copy the Unicode object contents into the :c:type:`wchar_t` buffer *w*. " +#~ "At most *size* :c:type:`wchar_t` characters are copied (excluding a " +#~ "possibly trailing null termination character). Return the number of :c:" +#~ "type:`wchar_t` characters copied or ``-1`` in case of an error. Note " +#~ "that the resulting :c:type:`wchar_t*` string may or may not be null-" +#~ "terminated. It is the responsibility of the caller to make sure that " +#~ "the :c:type:`wchar_t*` string is null-terminated in case this is required " +#~ "by the application. Also, note that the :c:type:`wchar_t*` string might " +#~ "contain null characters, which would cause the string to be truncated " +#~ "when used with most C functions." +#~ msgstr "" +#~ "Copia el contenido del objeto Unicode en el búfer :c:type:`wchar_t` *w*. " +#~ "A lo sumo *size* se copian los caracteres :c:type:`wchar_t` (excluyendo " +#~ "un posible carácter de terminación nulo final). Retorna el número de " +#~ "caracteres :c:type:`wchar_t` copiados o ``-1`` en caso de error. Tenga en " +#~ "cuenta que la cadena resultante :c:type:`wchar_t*` puede o no tener " +#~ "terminación nula. Es responsabilidad de la persona que llama asegurarse " +#~ "de que la cadena :c:type:`wchar_t*` tenga una terminación nula en caso de " +#~ "que la aplicación lo requiera. Además, tenga en cuenta que la cadena :c:" +#~ "type:`wchar_t*` podría contener caracteres nulos, lo que provocaría que " +#~ "la cadena se truncara cuando se usara con la mayoría de las funciones de " +#~ "C." + +#~ msgid "" +#~ "Encode the :c:type:`Py_UNICODE` buffer *s* of the given *size* and return " +#~ "a Python bytes object. *encoding* and *errors* have the same meaning as " +#~ "the parameters of the same name in the Unicode :meth:`~str.encode` " +#~ "method. The codec to be used is looked up using the Python codec " +#~ "registry. Return ``NULL`` if an exception was raised by the codec." +#~ msgstr "" +#~ "Codifica el búfer :c:type:`Py_UNICODE` *s* del tamaño *size* dado y " +#~ "retorna un objeto de bytes de Python. *encoding* y *errors* tienen el " +#~ "mismo significado que los parámetros del mismo nombre en el método " +#~ "Unicode :meth:`~str.encode`. El códec que se utilizará se busca " +#~ "utilizando el registro de códec Python. Retorna ``NULL`` si el códec " +#~ "provocó una excepción." + +#~ msgid "" +#~ "Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :" +#~ "c:func:`PyUnicode_AsEncodedString`." +#~ msgstr "" +#~ "Parte del viejo estilo de la API :c:type:`Py_UNICODE`; por favor migrar " +#~ "para usar :c:func:`PyUnicode_AsEncodedString`." + +#~ msgid "" +#~ "Encode the :c:type:`Py_UNICODE` buffer *s* of the given *size* using " +#~ "UTF-8 and return a Python bytes object. Return ``NULL`` if an exception " +#~ "was raised by the codec." +#~ msgstr "" +#~ "Codifica el búfer :c:type:`Py_UNICODE` *s* del tamaño *size* dado usando " +#~ "UTF-8 y retorna un objeto de bytes de Python. Retorna ``NULL`` si el " +#~ "códec provocó una excepción." + +#~ msgid "" +#~ "Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :" +#~ "c:func:`PyUnicode_AsUTF8String`, :c:func:`PyUnicode_AsUTF8AndSize` or :c:" +#~ "func:`PyUnicode_AsEncodedString`." +#~ msgstr "" +#~ "Parte del viejo estilo de la API :c:type:`Py_UNICODE`; por favor migrar " +#~ "para usar :c:func:`PyUnicode_AsUTF8String`, :c:func:" +#~ "`PyUnicode_AsUTF8AndSize` o :c:func:`PyUnicode_AsEncodedString`." + +#~ msgid "" +#~ "Return a Python bytes object holding the UTF-32 encoded value of the " +#~ "Unicode data in *s*. Output is written according to the following byte " +#~ "order::" +#~ msgstr "" +#~ "Retorna un objeto de bytes de Python que contiene el valor codificado " +#~ "UTF-32 de los datos Unicode en *s*. La salida se escribe de acuerdo con " +#~ "el siguiente orden de bytes:" + +#~ msgid "" +#~ "If byteorder is ``0``, the output string will always start with the " +#~ "Unicode BOM mark (U+FEFF). In the other two modes, no BOM mark is " +#~ "prepended." +#~ msgstr "" +#~ "Si *byteorder* es ``0``, la cadena de caracteres de salida siempre " +#~ "comenzará con la marca Unicode BOM (U+FEFF). En los otros dos modos, no " +#~ "se antepone ninguna marca BOM." + +#~ msgid "" +#~ "If ``Py_UNICODE_WIDE`` is not defined, surrogate pairs will be output as " +#~ "a single code point." +#~ msgstr "" +#~ "Si ``Py_UNICODE_WIDE`` no está definido, los pares sustitutos se " +#~ "mostrarán como un único punto de código." + +#~ msgid "" +#~ "Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :" +#~ "c:func:`PyUnicode_AsUTF32String` or :c:func:`PyUnicode_AsEncodedString`." +#~ msgstr "" +#~ "Parte del viejo estilo de la API :c:type:`Py_UNICODE`; por favor migrar " +#~ "para usar :c:func:`PyUnicode_AsUTF32String`. o :c:func:" +#~ "`PyUnicode_AsEncodedString`." + +#~ msgid "" +#~ "Return a Python bytes object holding the UTF-16 encoded value of the " +#~ "Unicode data in *s*. Output is written according to the following byte " +#~ "order::" +#~ msgstr "" +#~ "Retorna un objeto de bytes de Python que contiene el valor codificado " +#~ "UTF-16 de los datos Unicode en *s*. La salida se escribe de acuerdo con " +#~ "el siguiente orden de bytes:" + +#~ msgid "" +#~ "If ``Py_UNICODE_WIDE`` is defined, a single :c:type:`Py_UNICODE` value " +#~ "may get represented as a surrogate pair. If it is not defined, each :c:" +#~ "type:`Py_UNICODE` values is interpreted as a UCS-2 character." +#~ msgstr "" +#~ "Si se define ``Py_UNICODE_WIDE``, un solo valor de :c:type:`Py_UNICODE` " +#~ "puede representarse como un par sustituto. Si no está definido, cada uno " +#~ "de los valores :c:type:`Py_UNICODE` se interpreta como un carácter UCS-2." + +#~ msgid "" +#~ "Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :" +#~ "c:func:`PyUnicode_AsUTF16String` or :c:func:`PyUnicode_AsEncodedString`." +#~ msgstr "" +#~ "Parte del viejo estilo de la API :c:type:`Py_UNICODE`; por favor migrar " +#~ "para usar :c:func:`PyUnicode_AsUTF16String`. o :c:func:" +#~ "`PyUnicode_AsEncodedString`." + +#~ msgid "" +#~ "Encode the :c:type:`Py_UNICODE` buffer of the given size using UTF-7 and " +#~ "return a Python bytes object. Return ``NULL`` if an exception was raised " +#~ "by the codec." +#~ msgstr "" +#~ "Codifica el búfer :c:type:`Py_UNICODE` del tamaño dado usando UTF-7 y " +#~ "retorna un objeto de bytes de Python. Retorna ``NULL`` si el códec " +#~ "provocó una excepción." + +#~ msgid "" +#~ "If *base64SetO* is nonzero, \"Set O\" (punctuation that has no otherwise " +#~ "special meaning) will be encoded in base-64. If *base64WhiteSpace* is " +#~ "nonzero, whitespace will be encoded in base-64. Both are set to zero for " +#~ "the Python \"utf-7\" codec." +#~ msgstr "" +#~ "Si *base64SetO* no es cero, \"Set O\" (puntuación que no tiene un " +#~ "significado especial) se codificará en base-64. Si *base64WhiteSpace* no " +#~ "es cero, el espacio en blanco se codificará en base-64. Ambos se " +#~ "establecen en cero para el códec Python \"utf-7\"." + +#~ msgid "" +#~ "Encode the :c:type:`Py_UNICODE` buffer of the given *size* using Unicode-" +#~ "Escape and return a bytes object. Return ``NULL`` if an exception was " +#~ "raised by the codec." +#~ msgstr "" +#~ "Codifica el búfer :c:type:`Py_UNICODE` del tamaño *size* dado utilizando " +#~ "Unicode escapado y retorna un objeto de bytes. Retorna ``NULL`` si el " +#~ "códec provocó una excepción." + +#~ msgid "" +#~ "Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :" +#~ "c:func:`PyUnicode_AsUnicodeEscapeString`." +#~ msgstr "" +#~ "Parte del viejo estilo de la API :c:type:`Py_UNICODE`; por favor migrar " +#~ "para usar :c:func:`PyUnicode_AsUnicodeEscapeString`." + +#~ msgid "" +#~ "Encode the :c:type:`Py_UNICODE` buffer of the given *size* using Raw-" +#~ "Unicode-Escape and return a bytes object. Return ``NULL`` if an " +#~ "exception was raised by the codec." +#~ msgstr "" +#~ "Codifica el búfer :c:type:`Py_UNICODE` del tamaño *size* dado usando " +#~ "Unicode escapado en bruto (*Raw-Unicode-Escape*) y retorna un objeto de " +#~ "bytes. Retorna ``NULL`` si el códec provocó una excepción." + +#~ msgid "" +#~ "Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :" +#~ "c:func:`PyUnicode_AsRawUnicodeEscapeString` or :c:func:" +#~ "`PyUnicode_AsEncodedString`." +#~ msgstr "" +#~ "Parte del viejo estilo de la API :c:type:`Py_UNICODE`; por favor migrar " +#~ "para usar :c:func:`PyUnicode_AsRawUnicodeEscapeString` o :c:func:" +#~ "`PyUnicode_AsEncodedString`." + +#~ msgid "" +#~ "Encode the :c:type:`Py_UNICODE` buffer of the given *size* using Latin-1 " +#~ "and return a Python bytes object. Return ``NULL`` if an exception was " +#~ "raised by the codec." +#~ msgstr "" +#~ "Codifica el búfer :c:type:`Py_UNICODE` del tamaño *size* dado usando " +#~ "Latin-1 y retorna un objeto de bytes de Python. Retorna ``NULL`` si el " +#~ "códec provocó una excepción." + +#~ msgid "" +#~ "Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :" +#~ "c:func:`PyUnicode_AsLatin1String` or :c:func:`PyUnicode_AsEncodedString`." +#~ msgstr "" +#~ "Parte del viejo estilo de la API :c:type:`Py_UNICODE`; por favor migrar " +#~ "para usar :c:func:`PyUnicode_AsLatin1String` o :c:func:" +#~ "`PyUnicode_AsEncodedString`." + +#~ msgid "" +#~ "Encode the :c:type:`Py_UNICODE` buffer of the given *size* using ASCII " +#~ "and return a Python bytes object. Return ``NULL`` if an exception was " +#~ "raised by the codec." +#~ msgstr "" +#~ "Codifica el búfer :c:type:`Py_UNICODE` del tamaño *size* dado utilizando " +#~ "ASCII y retorna un objeto de bytes de Python. Retorna ``NULL`` si el " +#~ "códec provocó una excepción." + +#~ msgid "" +#~ "Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :" +#~ "c:func:`PyUnicode_AsASCIIString` or :c:func:`PyUnicode_AsEncodedString`." +#~ msgstr "" +#~ "Parte del viejo estilo de la API :c:type:`Py_UNICODE`; por favor migrar " +#~ "para usar :c:func:`PyUnicode_AsASCIIString` o :c:func:" +#~ "`PyUnicode_AsEncodedString`." + +#~ msgid "" +#~ "Encode the :c:type:`Py_UNICODE` buffer of the given *size* using the " +#~ "given *mapping* object and return the result as a bytes object. Return " +#~ "``NULL`` if an exception was raised by the codec." +#~ msgstr "" +#~ "Codifica el búfer :c:type:`Py_UNICODE` del tamaño *size* dado utilizando " +#~ "el objeto *mapping* dado y retorna el resultado como un objeto de bytes. " +#~ "Retorna ``NULL`` si el códec provocó una excepción." + +#~ msgid "" +#~ "Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :" +#~ "c:func:`PyUnicode_AsCharmapString` or :c:func:`PyUnicode_AsEncodedString`." +#~ msgstr "" +#~ "Parte del viejo estilo de la API :c:type:`Py_UNICODE`; por favor migrar " +#~ "para usar :c:func:`PyUnicode_AsCharmapString` o :c:func:" +#~ "`PyUnicode_AsEncodedString`." + +#~ msgid "" +#~ "Translate a :c:type:`Py_UNICODE` buffer of the given *size* by applying a " +#~ "character *mapping* table to it and return the resulting Unicode object. " +#~ "Return ``NULL`` when an exception was raised by the codec." +#~ msgstr "" +#~ "Traduce un búfer :c:type:`Py_UNICODE` del tamaño *size* dado al aplicarle " +#~ "una tabla de *mapping* de caracteres y retornar el objeto Unicode " +#~ "resultante. Retorna ``NULL`` cuando el códec provocó una excepción." + +#~ msgid "" +#~ "Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :" +#~ "c:func:`PyUnicode_Translate`. or :ref:`generic codec based API `" +#~ msgstr "" +#~ "Parte del viejo estilo de la API :c:type:`Py_UNICODE`; por favor migrar " +#~ "para usar :c:func:`PyUnicode_Translate`. o :ref:`generic codec based API " +#~ "`" + +#~ msgid "" +#~ "Encode the :c:type:`Py_UNICODE` buffer of the given *size* using MBCS and " +#~ "return a Python bytes object. Return ``NULL`` if an exception was raised " +#~ "by the codec." +#~ msgstr "" +#~ "Codifica el búfer :c:type:`Py_UNICODE` del tamaño *size* dado usando MBCS " +#~ "y retorna un objeto de bytes de Python. Retorna ``NULL`` si el códec " +#~ "provocó una excepción." + +#~ msgid "" +#~ "Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :" +#~ "c:func:`PyUnicode_AsMBCSString`, :c:func:`PyUnicode_EncodeCodePage` or :c:" +#~ "func:`PyUnicode_AsEncodedString`." +#~ msgstr "" +#~ "Parte del viejo estilo :c:type:`Py_UNICODE` de la API; por favor migrar " +#~ "a :c:func:`PyUnicode_AsMBCSString`, :c:func:`PyUnicode_EncodeCodePage` o :" +#~ "c:func:`PyUnicode_AsEncodedString`." diff --git a/c-api/veryhigh.po b/c-api/veryhigh.po index 4bb6d4e6a4..63b829057b 100644 --- a/c-api/veryhigh.po +++ b/c-api/veryhigh.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-12-09 10:55+0800\n" "Last-Translator: Rodrigo Tobar \n" "Language: es\n" @@ -19,8 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/c-api/veryhigh.rst:8 msgid "The Very High Level Layer" @@ -49,13 +48,14 @@ msgstr "" "siguiendo las funciones que los aceptan como parámetros." #: ../Doc/c-api/veryhigh.rst:19 +#, fuzzy msgid "" -"Note also that several of these functions take :c:type:`FILE*` parameters. " -"One particular issue which needs to be handled carefully is that the :c:type:" +"Note also that several of these functions take :c:expr:`FILE*` parameters. " +"One particular issue which needs to be handled carefully is that the :c:expr:" "`FILE` structure for different C libraries can be different and " "incompatible. Under Windows (at least), it is possible for dynamically " "linked extensions to actually use different libraries, so care should be " -"taken that :c:type:`FILE*` parameters are only passed to these functions if " +"taken that :c:expr:`FILE*` parameters are only passed to these functions if " "it is certain that they were created by the same library that the Python " "runtime is using." msgstr "" @@ -133,13 +133,15 @@ msgstr "" "abajo, dejando *flags* establecido a ``NULL``." #: ../Doc/c-api/veryhigh.rst:72 +#, fuzzy msgid "" "If *fp* refers to a file associated with an interactive device (console or " "terminal input or Unix pseudo-terminal), return the value of :c:func:" "`PyRun_InteractiveLoop`, otherwise return the result of :c:func:" "`PyRun_SimpleFile`. *filename* is decoded from the filesystem encoding (:" "func:`sys.getfilesystemencoding`). If *filename* is ``NULL``, this function " -"uses ``\"???\"`` as the filename." +"uses ``\"???\"`` as the filename. If *closeit* is true, the file is closed " +"before ``PyRun_SimpleFileExFlags()`` returns." msgstr "" "Si *fp* se refiere a un archivo asociado con un dispositivo interactivo " "(entrada de consola o terminal o pseudo-terminal Unix), retorna el valor de :" @@ -148,16 +150,17 @@ msgstr "" "codificación del sistema de archivos (:func:`sys.getfilesystemencoding`). Si " "*filename* es ``NULL``, esta función usa ``\"???\"`` como nombre de archivo." -#: ../Doc/c-api/veryhigh.rst:82 +#: ../Doc/c-api/veryhigh.rst:84 +#, fuzzy msgid "" "This is a simplified interface to :c:func:`PyRun_SimpleStringFlags` below, " -"leaving the :c:type:`PyCompilerFlags`\\* argument set to ``NULL``." +"leaving the :c:struct:`PyCompilerFlags`\\* argument set to ``NULL``." msgstr "" "Esta es una interfaz simplificada para :c:func:`PyRun_SimpleStringFlags` más " "abajo, dejando el argumento :c:type:`PyCompilerFlags`\\* establecido a " "``NULL``." -#: ../Doc/c-api/veryhigh.rst:88 +#: ../Doc/c-api/veryhigh.rst:90 msgid "" "Executes the Python source code from *command* in the :mod:`__main__` module " "according to the *flags* argument. If :mod:`__main__` does not already " @@ -171,7 +174,7 @@ msgstr "" "excepción. Si hubo un error, no hay forma de obtener la información de " "excepción. Para el significado de *flags*, ver abajo." -#: ../Doc/c-api/veryhigh.rst:94 +#: ../Doc/c-api/veryhigh.rst:96 msgid "" "Note that if an otherwise unhandled :exc:`SystemExit` is raised, this " "function will not return ``-1``, but exit the process, as long as " @@ -181,7 +184,7 @@ msgstr "" "función no retornará ``-1``, pero saldrá del proceso, siempre que " "``Py_InspectFlag`` no esté configurado." -#: ../Doc/c-api/veryhigh.rst:101 +#: ../Doc/c-api/veryhigh.rst:103 msgid "" "This is a simplified interface to :c:func:`PyRun_SimpleFileExFlags` below, " "leaving *closeit* set to ``0`` and *flags* set to ``NULL``." @@ -190,7 +193,7 @@ msgstr "" "abajo, dejando *closeit* establecido a ``0`` y *flags* establecido a " "``NULL``." -#: ../Doc/c-api/veryhigh.rst:107 +#: ../Doc/c-api/veryhigh.rst:109 msgid "" "This is a simplified interface to :c:func:`PyRun_SimpleFileExFlags` below, " "leaving *flags* set to ``NULL``." @@ -198,7 +201,7 @@ msgstr "" "Esta es una interfaz simplificada para :c:func:`PyRun_SimpleStringFlags` más " "abajo, dejando *flags* establecido a ``NULL``." -#: ../Doc/c-api/veryhigh.rst:113 +#: ../Doc/c-api/veryhigh.rst:115 msgid "" "Similar to :c:func:`PyRun_SimpleStringFlags`, but the Python source code is " "read from *fp* instead of an in-memory string. *filename* should be the name " @@ -212,17 +215,17 @@ msgstr "" "`filesystem encoding and error handler`. Si *closeit* es verdadero, el " "fichero se cierra antes de que ``PyRun_SimpleFileExFlags()`` retorne." -#: ../Doc/c-api/veryhigh.rst:120 +#: ../Doc/c-api/veryhigh.rst:122 msgid "" -"On Windows, *fp* should be opened as binary mode (e.g. ``fopen(filename, \"rb" -"\")``). Otherwise, Python may not handle script file with LF line ending " +"On Windows, *fp* should be opened as binary mode (e.g. ``fopen(filename, " +"\"rb\")``). Otherwise, Python may not handle script file with LF line ending " "correctly." msgstr "" "En Windows, *fp* debe abrirse en modo binario (por ejemplo, " "``fopen(filename, \"rb\")``. De lo contrario, Python puede no manejar " "correctamente el archivo de script con la terminación de línea LF." -#: ../Doc/c-api/veryhigh.rst:126 +#: ../Doc/c-api/veryhigh.rst:128 msgid "" "This is a simplified interface to :c:func:`PyRun_InteractiveOneFlags` below, " "leaving *flags* set to ``NULL``." @@ -230,7 +233,7 @@ msgstr "" "Esta es una interfaz simplificada para :c:func:`PyRun_InteractiveOneFlags` " "más abajo, dejando *flags* establecido a ``NULL``." -#: ../Doc/c-api/veryhigh.rst:132 +#: ../Doc/c-api/veryhigh.rst:134 msgid "" "Read and execute a single statement from a file associated with an " "interactive device according to the *flags* argument. The user will be " @@ -243,7 +246,7 @@ msgstr "" "term:`manejador de codificación y errores del sistema de archivos " "`." -#: ../Doc/c-api/veryhigh.rst:137 +#: ../Doc/c-api/veryhigh.rst:139 msgid "" "Returns ``0`` when the input was executed successfully, ``-1`` if there was " "an exception, or an error code from the :file:`errcode.h` include file " @@ -257,7 +260,7 @@ msgstr "" "cuenta que :file:`errcode.h` no está incluido en :file:`Python.h`, por lo " "que debe incluirse específicamente si es necesario)." -#: ../Doc/c-api/veryhigh.rst:146 +#: ../Doc/c-api/veryhigh.rst:148 msgid "" "This is a simplified interface to :c:func:`PyRun_InteractiveLoopFlags` " "below, leaving *flags* set to ``NULL``." @@ -265,7 +268,7 @@ msgstr "" "Esta es una interfaz simplificada para :c:func:`PyRun_InteractiveLoopFlags` " "más abajo, dejando *flags* establecido a ``NULL``." -#: ../Doc/c-api/veryhigh.rst:152 +#: ../Doc/c-api/veryhigh.rst:154 msgid "" "Read and execute statements from a file associated with an interactive " "device until EOF is reached. The user will be prompted using ``sys.ps1`` " @@ -278,7 +281,7 @@ msgstr "" "de codificación y errores del sistema de archivos `. Retorna ``0`` en EOF o un número negativo en caso de falla." -#: ../Doc/c-api/veryhigh.rst:160 +#: ../Doc/c-api/veryhigh.rst:162 msgid "" "Can be set to point to a function with the prototype ``int func(void)``. " "The function will be called when Python's interpreter prompt is about to " @@ -295,7 +298,7 @@ msgstr "" "eventos, como se hace en :file:`Modules/_tkinter.c` en el código fuente de " "Python." -#: ../Doc/c-api/veryhigh.rst:171 +#: ../Doc/c-api/veryhigh.rst:173 msgid "" "Can be set to point to a function with the prototype ``char *func(FILE " "*stdin, FILE *stdout, char *prompt)``, overriding the default function used " @@ -314,7 +317,7 @@ msgstr "" "resultante. Por ejemplo, el módulo :mod:`readline` establece este enlace " "para proporcionar funciones de edición de línea y finalización de tabulación." -#: ../Doc/c-api/veryhigh.rst:180 +#: ../Doc/c-api/veryhigh.rst:182 msgid "" "The result must be a string allocated by :c:func:`PyMem_RawMalloc` or :c:" "func:`PyMem_RawRealloc`, or ``NULL`` if an error occurred." @@ -323,7 +326,7 @@ msgstr "" "`PyMem_RawMalloc` o :c:func:`PyMem_RawRealloc`, o ``NULL`` si ocurre un " "error." -#: ../Doc/c-api/veryhigh.rst:183 +#: ../Doc/c-api/veryhigh.rst:185 msgid "" "The result must be allocated by :c:func:`PyMem_RawMalloc` or :c:func:" "`PyMem_RawRealloc`, instead of being allocated by :c:func:`PyMem_Malloc` or :" @@ -333,7 +336,7 @@ msgstr "" "`PyMem_RawRealloc`, en vez de ser alocado por :c:func:`PyMem_Malloc` o :c:" "func:`PyMem_Realloc`." -#: ../Doc/c-api/veryhigh.rst:190 +#: ../Doc/c-api/veryhigh.rst:192 msgid "" "This is a simplified interface to :c:func:`PyRun_StringFlags` below, leaving " "*flags* set to ``NULL``." @@ -341,7 +344,7 @@ msgstr "" "Esta es una interfaz simplificada para :c:func:`PyRun_StringFlags` más " "abajo, dejando *flags* establecido a ``NULL``." -#: ../Doc/c-api/veryhigh.rst:196 +#: ../Doc/c-api/veryhigh.rst:198 msgid "" "Execute Python source code from *str* in the context specified by the " "objects *globals* and *locals* with the compiler flags specified by " @@ -356,7 +359,7 @@ msgstr "" "*start* especifica el token de inicio que se debe usar para analizar el " "código fuente." -#: ../Doc/c-api/veryhigh.rst:202 +#: ../Doc/c-api/veryhigh.rst:204 msgid "" "Returns the result of executing the code as a Python object, or ``NULL`` if " "an exception was raised." @@ -364,7 +367,7 @@ msgstr "" "Retorna el resultado de ejecutar el código como un objeto Python, o " "``NULL``' si se produjo una excepción." -#: ../Doc/c-api/veryhigh.rst:208 +#: ../Doc/c-api/veryhigh.rst:210 msgid "" "This is a simplified interface to :c:func:`PyRun_FileExFlags` below, leaving " "*closeit* set to ``0`` and *flags* set to ``NULL``." @@ -373,7 +376,7 @@ msgstr "" "abajo, dejando *closeit* establecido a ``0`` y *flags* establecido a " "``NULL``." -#: ../Doc/c-api/veryhigh.rst:214 +#: ../Doc/c-api/veryhigh.rst:216 msgid "" "This is a simplified interface to :c:func:`PyRun_FileExFlags` below, leaving " "*flags* set to ``NULL``." @@ -381,7 +384,7 @@ msgstr "" "Esta es una interfaz simplificada para :c:func:`PyRun_FileExFlags` más " "abajo, dejando *flags* establecido a ``NULL``." -#: ../Doc/c-api/veryhigh.rst:220 +#: ../Doc/c-api/veryhigh.rst:222 msgid "" "This is a simplified interface to :c:func:`PyRun_FileExFlags` below, leaving " "*closeit* set to ``0``." @@ -389,7 +392,7 @@ msgstr "" "Esta es una interfaz simplificada para :c:func:`PyRun_FileExFlags` más " "abajo, dejando *closeit* establecido a ``0``." -#: ../Doc/c-api/veryhigh.rst:226 +#: ../Doc/c-api/veryhigh.rst:228 msgid "" "Similar to :c:func:`PyRun_StringFlags`, but the Python source code is read " "from *fp* instead of an in-memory string. *filename* should be the name of " @@ -403,7 +406,7 @@ msgstr "" "encoding and error handler`. Si *closeit* es verdadero, el fichero se cierra " "antes de que :c:func:`PyRun_FileExFlags` retorne." -#: ../Doc/c-api/veryhigh.rst:235 +#: ../Doc/c-api/veryhigh.rst:237 msgid "" "This is a simplified interface to :c:func:`Py_CompileStringFlags` below, " "leaving *flags* set to ``NULL``." @@ -411,7 +414,7 @@ msgstr "" "Esta es una interfaz simplificada para :c:func:`Py_CompileStringFlags` más " "abajo, dejando *flags* establecido a ``NULL``." -#: ../Doc/c-api/veryhigh.rst:241 +#: ../Doc/c-api/veryhigh.rst:243 msgid "" "This is a simplified interface to :c:func:`Py_CompileStringExFlags` below, " "with *optimize* set to ``-1``." @@ -419,7 +422,7 @@ msgstr "" "Esta es una interfaz simplificada para :c:func:`Py_CompileStringExFlags` más " "abajo, con *optimize* establecido a ``-1``." -#: ../Doc/c-api/veryhigh.rst:247 +#: ../Doc/c-api/veryhigh.rst:249 msgid "" "Parse and compile the Python source code in *str*, returning the resulting " "code object. The start token is given by *start*; this can be used to " @@ -438,7 +441,7 @@ msgstr "" "mensajes de excepción :exc:`SyntaxError`. Esto retorna ``NULL``' si el " "código no se puede analizar gramaticalmente o compilar." -#: ../Doc/c-api/veryhigh.rst:255 +#: ../Doc/c-api/veryhigh.rst:257 msgid "" "The integer *optimize* specifies the optimization level of the compiler; a " "value of ``-1`` selects the optimization level of the interpreter as given " @@ -453,7 +456,7 @@ msgstr "" "(los *asserts* se eliminan, ``__debug__`` es falso) o ``2`` (los docstrings " "también se eliminan) )" -#: ../Doc/c-api/veryhigh.rst:266 +#: ../Doc/c-api/veryhigh.rst:268 msgid "" "Like :c:func:`Py_CompileStringObject`, but *filename* is a byte string " "decoded from the :term:`filesystem encoding and error handler`." @@ -462,7 +465,7 @@ msgstr "" "bytes decodificada a partir del :term:`manejador de codificación y errores " "del sistema de archivos `." -#: ../Doc/c-api/veryhigh.rst:273 +#: ../Doc/c-api/veryhigh.rst:275 msgid "" "This is a simplified interface to :c:func:`PyEval_EvalCodeEx`, with just the " "code object, and global and local variables. The other arguments are set to " @@ -472,7 +475,7 @@ msgstr "" "el objeto de código y las variables globales y locales. Los otros argumentos " "están establecidos en ``NULL``." -#: ../Doc/c-api/veryhigh.rst:280 +#: ../Doc/c-api/veryhigh.rst:282 msgid "" "Evaluate a precompiled code object, given a particular environment for its " "evaluation. This environment consists of a dictionary of global variables, " @@ -487,15 +490,7 @@ msgstr "" "argumentos :ref:`keyword-only ` y una tupla de " "cierre de células." -#: ../Doc/c-api/veryhigh.rst:289 -msgid "" -"The C structure of the objects used to describe frame objects. The fields of " -"this type are subject to change at any time." -msgstr "" -"La estructura en C de los objetos utilizados para describir objetos del " -"marco. Los campos de este tipo están sujetos a cambios en cualquier momento." - -#: ../Doc/c-api/veryhigh.rst:295 +#: ../Doc/c-api/veryhigh.rst:291 msgid "" "Evaluate an execution frame. This is a simplified interface to :c:func:" "`PyEval_EvalFrameEx`, for backward compatibility." @@ -503,7 +498,7 @@ msgstr "" "Evaluar un marco de ejecución. Esta es una interfaz simplificada para :c:" "func:`PyEval_EvalFrameEx`, para compatibilidad con versiones anteriores." -#: ../Doc/c-api/veryhigh.rst:301 +#: ../Doc/c-api/veryhigh.rst:297 msgid "" "This is the main, unvarnished function of Python interpretation. The code " "object associated with the execution frame *f* is executed, interpreting " @@ -519,7 +514,7 @@ msgstr "" "general; si es verdadero, entonces se lanza una excepción de inmediato; esto " "se usa para los métodos :meth:`~generator.throw` de objetos generadores." -#: ../Doc/c-api/veryhigh.rst:308 +#: ../Doc/c-api/veryhigh.rst:304 msgid "" "This function now includes a debug assertion to help ensure that it does not " "silently discard an active exception." @@ -527,7 +522,7 @@ msgstr "" "Esta función ahora incluye una afirmación de depuración para ayudar a " "garantizar que no descarte silenciosamente una excepción activa." -#: ../Doc/c-api/veryhigh.rst:315 +#: ../Doc/c-api/veryhigh.rst:311 msgid "" "This function changes the flags of the current evaluation frame, and returns " "true on success, false on failure." @@ -535,7 +530,7 @@ msgstr "" "Esta función cambia los flags del marco de evaluación actual, y retorna " "verdad (*true*) en caso de éxito, falso (*false*) en caso de fallo." -#: ../Doc/c-api/veryhigh.rst:323 +#: ../Doc/c-api/veryhigh.rst:319 msgid "" "The start symbol from the Python grammar for isolated expressions; for use " "with :c:func:`Py_CompileString`." @@ -543,7 +538,7 @@ msgstr "" "El símbolo de inicio de la gramática de Python para expresiones aisladas; " "para usar con :c:func:`Py_CompileString`." -#: ../Doc/c-api/veryhigh.rst:331 +#: ../Doc/c-api/veryhigh.rst:327 msgid "" "The start symbol from the Python grammar for sequences of statements as read " "from a file or other source; for use with :c:func:`Py_CompileString`. This " @@ -554,7 +549,7 @@ msgstr "" "`Py_CompileString`. Este es el símbolo usado cuando se compile un código " "fuente en Python arbitrariamente largo." -#: ../Doc/c-api/veryhigh.rst:340 +#: ../Doc/c-api/veryhigh.rst:336 msgid "" "The start symbol from the Python grammar for a single statement; for use " "with :c:func:`Py_CompileString`. This is the symbol used for the interactive " @@ -564,7 +559,7 @@ msgstr "" "para usar con :c:func:`Py_CompileString`. Este es el símbolo usado para el " "bucle interactivo del intérprete." -#: ../Doc/c-api/veryhigh.rst:347 +#: ../Doc/c-api/veryhigh.rst:343 msgid "" "This is the structure used to hold compiler flags. In cases where code is " "only being compiled, it is passed as ``int flags``, and in cases where code " @@ -577,7 +572,7 @@ msgstr "" "*flags``. En este caso, ``from __future__ import`` puede modificar los " "*flags*." -#: ../Doc/c-api/veryhigh.rst:352 +#: ../Doc/c-api/veryhigh.rst:348 msgid "" "Whenever ``PyCompilerFlags *flags`` is ``NULL``, :attr:`cf_flags` is treated " "as equal to ``0``, and any modification due to ``from __future__ import`` is " @@ -587,11 +582,11 @@ msgstr "" "tratado como igual a ``0``, y cualquier modificación debido a ``from " "__future__ import`` es descartada." -#: ../Doc/c-api/veryhigh.rst:358 +#: ../Doc/c-api/veryhigh.rst:354 msgid "Compiler flags." msgstr "Flags del compilador." -#: ../Doc/c-api/veryhigh.rst:362 +#: ../Doc/c-api/veryhigh.rst:358 msgid "" "*cf_feature_version* is the minor Python version. It should be initialized " "to ``PY_MINOR_VERSION``." @@ -599,7 +594,7 @@ msgstr "" "*cf_feature_version* es la versión menor de Python. Debe ser inicializado a " "``PY_MINOR_VERSION``." -#: ../Doc/c-api/veryhigh.rst:365 +#: ../Doc/c-api/veryhigh.rst:361 msgid "" "The field is ignored by default, it is used if and only if ``PyCF_ONLY_AST`` " "flag is set in *cf_flags*." @@ -607,11 +602,11 @@ msgstr "" "El campo es ignorado por defecto, es usado si y solo si el flag " "``PyCF_ONLY_AST`` está configurado en *cf_flags*." -#: ../Doc/c-api/veryhigh.rst:368 +#: ../Doc/c-api/veryhigh.rst:364 msgid "Added *cf_feature_version* field." msgstr "Agregado el campo *cf_feature_version*." -#: ../Doc/c-api/veryhigh.rst:374 +#: ../Doc/c-api/veryhigh.rst:370 msgid "" "This bit can be set in *flags* to cause division operator ``/`` to be " "interpreted as \"true division\" according to :pep:`238`." @@ -619,3 +614,11 @@ msgstr "" "Este bit puede ser configurado en *flags* para causar que un operador de " "división ``/`` sea interpretado como una \"división real\" de acuerdo a :pep:" "`238`." + +#~ msgid "" +#~ "The C structure of the objects used to describe frame objects. The fields " +#~ "of this type are subject to change at any time." +#~ msgstr "" +#~ "La estructura en C de los objetos utilizados para describir objetos del " +#~ "marco. Los campos de este tipo están sujetos a cambios en cualquier " +#~ "momento." diff --git a/c-api/weakref.po b/c-api/weakref.po index 6f839b3b39..7b5728a3cf 100644 --- a/c-api/weakref.po +++ b/c-api/weakref.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-10-18 19:38+0200\n" "Last-Translator: Diego Cristóbal Herreros \n" "Language: es\n" @@ -20,8 +20,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/c-api/weakref.rst:6 msgid "Weak Reference Objects" @@ -61,6 +60,7 @@ msgstr "" "finaliza con éxito." #: ../Doc/c-api/weakref.rst:32 +#, fuzzy msgid "" "Return a weak reference object for the object *ob*. This will always return " "a new reference, but is not guaranteed to create a new object; an existing " @@ -68,7 +68,7 @@ msgid "" "a callable object that receives notification when *ob* is garbage collected; " "it should accept a single parameter, which will be the weak reference object " "itself. *callback* may also be ``None`` or ``NULL``. If *ob* is not a " -"weakly-referencable object, or if *callback* is not callable, ``None``, or " +"weakly referencable object, or if *callback* is not callable, ``None``, or " "``NULL``, this will return ``NULL`` and raise :exc:`TypeError`." msgstr "" "Retorna un objeto de referencia débil para el objeto *ob*. Esto siempre " @@ -82,6 +82,7 @@ msgstr "" "``NULL``, esto retornará ``NULL`` y causará un :exc:`TypeError`." #: ../Doc/c-api/weakref.rst:44 +#, fuzzy msgid "" "Return a weak reference proxy object for the object *ob*. This will always " "return a new reference, but is not guaranteed to create a new object; an " @@ -89,7 +90,7 @@ msgid "" "can be a callable object that receives notification when *ob* is garbage " "collected; it should accept a single parameter, which will be the weak " "reference object itself. *callback* may also be ``None`` or ``NULL``. If " -"*ob* is not a weakly-referencable object, or if *callback* is not callable, " +"*ob* is not a weakly referencable object, or if *callback* is not callable, " "``None``, or ``NULL``, this will return ``NULL`` and raise :exc:`TypeError`." msgstr "" "Retorna un objeto proxy de referencia débil para el objeto *ob*. Esto " @@ -123,9 +124,8 @@ msgstr "" "de la referencia prestada." #: ../Doc/c-api/weakref.rst:69 -msgid "" -"Similar to :c:func:`PyWeakref_GetObject`, but implemented as a macro that " -"does no error checking." +#, fuzzy +msgid "Similar to :c:func:`PyWeakref_GetObject`, but does no error checking." msgstr "" "Similar a :c:func:`PyWeakref_GetObject`, pero implementado como un macro que " "no verifica errores." diff --git a/conf.py b/conf.py index c838a0e065..91d13c2065 100644 --- a/conf.py +++ b/conf.py @@ -45,6 +45,8 @@ # This file is not included and it's not marked as :orphan: 'distutils/_setuptools_disclaimer.rst', 'cpython/Doc/distutils/_setuptools_disclaimer.rst', + 'cpython/Doc/library/cpython/Doc/includes/wasm-notavail.rst', + 'cpython/Doc/install/cpython/Doc/distutils/_setuptools_disclaimer.rst' ] if 'exclude_patterns' in globals(): exclude_patterns += _exclude_patterns diff --git a/copyright.po b/copyright.po index 344f0ca450..b3568568a3 100644 --- a/copyright.po +++ b/copyright.po @@ -10,17 +10,16 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-03-19 11:16+0100\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-08-04 10:56+0200\n" +"Last-Translator: Cristián Maureira-Fredes \n" +"Language: es\n" "Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" +"Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.8.0\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Last-Translator: Cristián Maureira-Fredes \n" -"Language: es\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/copyright.rst:3 msgid "Copyright" @@ -31,7 +30,8 @@ msgid "Python and this documentation is:" msgstr "Python y esta documentación es:" #: ../Doc/copyright.rst:7 -msgid "Copyright © 2001-2021 Python Software Foundation. All rights reserved." +#, fuzzy +msgid "Copyright © 2001-2022 Python Software Foundation. All rights reserved." msgstr "" "Derechos de autor © 2001-2021 Python Software Foundation. Todos los derechos " "reservados." @@ -45,15 +45,15 @@ msgid "" "Copyright © 1995-2000 Corporation for National Research Initiatives. All " "rights reserved." msgstr "" -"Derechos de autor © 1995-2000 Corporation for National Research Initiatives. Todos " -"los derechos reservados." +"Derechos de autor © 1995-2000 Corporation for National Research Initiatives. " +"Todos los derechos reservados." #: ../Doc/copyright.rst:14 msgid "" "Copyright © 1991-1995 Stichting Mathematisch Centrum. All rights reserved." msgstr "" -"Derechos de autor © 1991-1995 Stichting Mathematisch Centrum. Todos los derechos " -"reservados." +"Derechos de autor © 1991-1995 Stichting Mathematisch Centrum. Todos los " +"derechos reservados." #: ../Doc/copyright.rst:18 msgid "" diff --git a/cpython b/cpython index b494f5935c..b3cafb60af 160000 --- a/cpython +++ b/cpython @@ -1 +1 @@ -Subproject commit b494f5935c92951e75597bfe1c8b1f3112fec270 +Subproject commit b3cafb60afeb2300002af9982d43703435b8302d diff --git a/distutils/apiref.po b/distutils/apiref.po index 567b3cd21a..748b5674f1 100644 --- a/distutils/apiref.po +++ b/distutils/apiref.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-11-26 14:46+0100\n" "Last-Translator: Cristián Maureira-Fredes \n" "Language: es\n" @@ -19,8 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/distutils/apiref.rst:5 msgid "API Reference" @@ -40,7 +39,7 @@ msgstr "" "otras API, hace que la API sea coherente en diferentes versiones de Python " "y, por lo tanto, se recomienda usar ``distutils`` directamente." -#: ../Doc/distutils/_setuptools_disclaimer.rst:3 +#: ../Doc/distutils/cpython/Doc/distutils/_setuptools_disclaimer.rst:3 msgid "" "This document is being retained solely until the ``setuptools`` " "documentation at https://setuptools.readthedocs.io/en/latest/setuptools.html " @@ -1036,9 +1035,9 @@ msgid "" "in every link driven by this compiler object." msgstr "" "Agrega *object* a la lista de archivos de objeto (o análogos, como archivos " -"de biblioteca nombrados explícitamente o la salida de \"*resource compilers*" -"\" o compiladores de recursos) para que se incluyan en cada enlace impulsado " -"por este objeto de compilador." +"de biblioteca nombrados explícitamente o la salida de \"*resource " +"compilers*\" o compiladores de recursos) para que se incluyan en cada enlace " +"impulsado por este objeto de compilador." #: ../Doc/distutils/apiref.rst:505 msgid "" @@ -1388,8 +1387,8 @@ msgid "" "component). These are on top of the system default and those supplied to :" "meth:`add_library_dir` and/or :meth:`set_library_dirs`. " "*runtime_library_dirs* is a list of directories that will be embedded into " -"the shared library and used to search for other shared libraries that \\*it" -"\\* depends on at run-time. (This may only be relevant on Unix.)" +"the shared library and used to search for other shared libraries that " +"\\*it\\* depends on at run-time. (This may only be relevant on Unix.)" msgstr "" "*library_dirs*, si se proporciona, debe ser una lista de directorios para " "buscar bibliotecas que se especificaron como nombres de bibliotecas " @@ -2265,8 +2264,9 @@ msgstr "" "que no se encuentre en *local_vars* u ``os.environ``." #: ../Doc/distutils/apiref.rst:1201 +#, fuzzy msgid "" -"Note that this is not a fully-fledged string interpolation function. A valid " +"Note that this is not a full-fledged string interpolation function. A valid " "``$variable`` can consist only of upper and lower case letters, numbers and " "an underscore. No { } or ( ) style quoting is available." msgstr "" @@ -3050,10 +3050,10 @@ msgid "" msgstr "" "Imprime (a *stderr*) un mensaje de advertencia vinculado a la línea lógica " "actual en el archivo actual. Si la línea lógica actual en el archivo abarca " -"varias líneas físicas, la advertencia se refiere a todo el rango, como ``" -"\"lines 3-5\"``. Si se proporciona *line*, anula el número de línea actual; " -"puede ser una lista o tupla para indicar un rango de líneas físicas, o un " -"número entero para una sola línea física." +"varias líneas físicas, la advertencia se refiere a todo el rango, como " +"``\"lines 3-5\"``. Si se proporciona *line*, anula el número de línea " +"actual; puede ser una lista o tupla para indicar un rango de líneas físicas, " +"o un número entero para una sola línea física." #: ../Doc/distutils/apiref.rst:1681 msgid "" @@ -3131,19 +3131,19 @@ msgid "" "options, is the :meth:`run` method, which must also be implemented by every " "command class." msgstr "" -"La clase base abstracta para definir clases de comando, las \"*worker bees*" -"\" de *Distutils*. Una analogía útil para las clases de comando es pensar en " -"ellas como subrutinas con variables locales llamadas *options*. Las opciones " -"se declaran en :meth:`initialize_options` y se definen (dados sus valores " -"finales) en :meth:`finalize_options`, los cuales deben ser definidos por " -"cada clase de comando. La distinción entre los dos es necesaria porque los " -"valores de las opciones pueden provenir del mundo exterior (línea de " -"comando, archivo de configuración, ...), y cualquier opción que dependa de " -"otras opciones debe calcularse después de que se hayan procesado estas " -"influencias externas --- por lo tanto :meth:`finalize_options`. El cuerpo de " -"la subrutina, donde hace todo su trabajo basado en los valores de sus " -"opciones, es el método :meth:`run`, que también debe ser implementado por " -"cada clase de comando." +"La clase base abstracta para definir clases de comando, las \"*worker " +"bees*\" de *Distutils*. Una analogía útil para las clases de comando es " +"pensar en ellas como subrutinas con variables locales llamadas *options*. " +"Las opciones se declaran en :meth:`initialize_options` y se definen (dados " +"sus valores finales) en :meth:`finalize_options`, los cuales deben ser " +"definidos por cada clase de comando. La distinción entre los dos es " +"necesaria porque los valores de las opciones pueden provenir del mundo " +"exterior (línea de comando, archivo de configuración, ...), y cualquier " +"opción que dependa de otras opciones debe calcularse después de que se hayan " +"procesado estas influencias externas --- por lo tanto :meth:" +"`finalize_options`. El cuerpo de la subrutina, donde hace todo su trabajo " +"basado en los valores de sus opciones, es el método :meth:`run`, que también " +"debe ser implementado por cada clase de comando." #: ../Doc/distutils/apiref.rst:1747 msgid "" @@ -3294,61 +3294,45 @@ msgstr "" #: ../Doc/distutils/apiref.rst:1856 msgid "" -":mod:`distutils.command.bdist_msi` --- Build a Microsoft Installer binary " -"package" -msgstr "" -":mod:`distutils.command.bdist_msi` --- Construye un paquete binario " -"instalador de Microsoft" - -#: ../Doc/distutils/apiref.rst:1863 -msgid "Use bdist_wheel (wheel packages) instead." -msgstr "Utiliza *bdist_wheel* (paquetes *wheel*) en su lugar." - -#: ../Doc/distutils/apiref.rst:1866 -msgid "Builds a `Windows Installer`_ (.msi) binary package." -msgstr "Construye un paquete binario `Windows Installer`_ (.msi)" - -#: ../Doc/distutils/apiref.rst:1872 -msgid "" ":mod:`distutils.command.bdist_rpm` --- Build a binary distribution as a " "Redhat RPM and SRPM" msgstr "" ":mod:`distutils.command.bdist_rpm` --- Construye una distribución binaria " "como RedHat RPM y SRPM" -#: ../Doc/distutils/apiref.rst:1882 +#: ../Doc/distutils/apiref.rst:1866 msgid ":mod:`distutils.command.sdist` --- Build a source distribution" msgstr "" ":mod:`distutils.command.sdist` --- Construye una distribución de código " "fuente" -#: ../Doc/distutils/apiref.rst:1892 +#: ../Doc/distutils/apiref.rst:1876 msgid ":mod:`distutils.command.build` --- Build all files of a package" msgstr "" ":mod:`distutils.command.build` --- Construye todos los archivos de un paquete" -#: ../Doc/distutils/apiref.rst:1902 +#: ../Doc/distutils/apiref.rst:1886 msgid "" ":mod:`distutils.command.build_clib` --- Build any C libraries in a package" msgstr "" ":mod:`distutils.command.build_clib` --- Construye cualquier biblioteca C en " "un paquete" -#: ../Doc/distutils/apiref.rst:1912 +#: ../Doc/distutils/apiref.rst:1896 msgid "" ":mod:`distutils.command.build_ext` --- Build any extensions in a package" msgstr "" ":mod:`distutils.command.build_ext` --- Construye cualquier extensión en un " "paquete" -#: ../Doc/distutils/apiref.rst:1922 +#: ../Doc/distutils/apiref.rst:1906 msgid "" ":mod:`distutils.command.build_py` --- Build the .py/.pyc files of a package" msgstr "" ":mod:`distutils.command.build_py` --- Construye los archivos .py/.pyc de un " "paquete" -#: ../Doc/distutils/apiref.rst:1932 +#: ../Doc/distutils/apiref.rst:1916 msgid "" "Alternative implementation of build_py which also runs the 2to3 conversion " "library on each .py file that is going to be installed. To use this in a " @@ -3360,28 +3344,28 @@ msgstr "" "esto en un archivo *setup.py* de una distribución que está diseñada para " "ejecutarse con Python 2.x y 3.x, agrega:" -#: ../Doc/distutils/apiref.rst:1942 +#: ../Doc/distutils/apiref.rst:1926 msgid "to your setup.py, and later::" msgstr "a su *setup.py*, y posteriormente:" -#: ../Doc/distutils/apiref.rst:1946 +#: ../Doc/distutils/apiref.rst:1930 msgid "to the invocation of setup()." msgstr "a la invocación de configuración setup()." -#: ../Doc/distutils/apiref.rst:1950 +#: ../Doc/distutils/apiref.rst:1934 msgid "" ":mod:`distutils.command.build_scripts` --- Build the scripts of a package" msgstr "" ":mod:`distutils.command.build_scripts` --- Construye los scripts de un " "paquete" -#: ../Doc/distutils/apiref.rst:1960 +#: ../Doc/distutils/apiref.rst:1944 msgid ":mod:`distutils.command.clean` --- Clean a package build area" msgstr "" ":mod:`distutils.command.clean` --- Limpia el área de construcción de un " "paquete" -#: ../Doc/distutils/apiref.rst:1965 +#: ../Doc/distutils/apiref.rst:1949 msgid "" "This command removes the temporary files created by :command:`build` and its " "subcommands, like intermediary compiled object files. With the ``--all`` " @@ -3392,7 +3376,7 @@ msgstr "" "intermediarios. Con la opción ``--all``, se eliminará el directorio de " "compilación completo." -#: ../Doc/distutils/apiref.rst:1969 +#: ../Doc/distutils/apiref.rst:1953 msgid "" "Extension modules built :ref:`in place ` will " "not be cleaned, as they are not in the build directory." @@ -3400,23 +3384,23 @@ msgstr "" "Los módulos de extensión construidos :ref:`in place ` no se limpiarán, ya que no están en el directorio de construcción." -#: ../Doc/distutils/apiref.rst:1974 +#: ../Doc/distutils/apiref.rst:1958 msgid ":mod:`distutils.command.config` --- Perform package configuration" msgstr "" ":mod:`distutils.command.config` --- Realiza la configuración de un paquete" -#: ../Doc/distutils/apiref.rst:1984 +#: ../Doc/distutils/apiref.rst:1968 msgid ":mod:`distutils.command.install` --- Install a package" msgstr ":mod:`distutils.command.install` --- Instala un paquete" -#: ../Doc/distutils/apiref.rst:1994 +#: ../Doc/distutils/apiref.rst:1978 msgid "" ":mod:`distutils.command.install_data` --- Install data files from a package" msgstr "" ":mod:`distutils.command.install_data` --- Instala archivos de datos de un " "paquete" -#: ../Doc/distutils/apiref.rst:2004 +#: ../Doc/distutils/apiref.rst:1988 msgid "" ":mod:`distutils.command.install_headers` --- Install C/C++ header files from " "a package" @@ -3424,14 +3408,14 @@ msgstr "" ":mod:`distutils.command.install_headers` --- Instala archivos de encabezado " "C/C++ desde un paquete" -#: ../Doc/distutils/apiref.rst:2014 +#: ../Doc/distutils/apiref.rst:1998 msgid "" ":mod:`distutils.command.install_lib` --- Install library files from a package" msgstr "" ":mod:`distutils.command.install_lib` --- Instala archivos de biblioteca " "desde un paquete" -#: ../Doc/distutils/apiref.rst:2024 +#: ../Doc/distutils/apiref.rst:2008 msgid "" ":mod:`distutils.command.install_scripts` --- Install script files from a " "package" @@ -3439,7 +3423,7 @@ msgstr "" ":mod:`distutils.command.install_scripts` --- Instala archivos de script " "desde un paquete" -#: ../Doc/distutils/apiref.rst:2034 +#: ../Doc/distutils/apiref.rst:2018 msgid "" ":mod:`distutils.command.register` --- Register a module with the Python " "Package Index" @@ -3447,7 +3431,7 @@ msgstr "" ":mod:`distutils.command.register` --- Registra un módulo con el índice de " "paquetes de Python" -#: ../Doc/distutils/apiref.rst:2040 +#: ../Doc/distutils/apiref.rst:2024 msgid "" "The ``register`` command registers the package with the Python Package " "Index. This is described in more detail in :pep:`301`." @@ -3455,12 +3439,12 @@ msgstr "" "El comando ``register`` registra el paquete con el índice de paquetes de " "Python. Esto se describe con más detalle en :pep:`301`." -#: ../Doc/distutils/apiref.rst:2047 +#: ../Doc/distutils/apiref.rst:2031 msgid ":mod:`distutils.command.check` --- Check the meta-data of a package" msgstr "" ":mod:`distutils.command.check` --- Verificar los metadatos de un paquete" -#: ../Doc/distutils/apiref.rst:2053 +#: ../Doc/distutils/apiref.rst:2037 msgid "" "The ``check`` command performs some tests on the meta-data of a package. For " "example, it verifies that all required meta-data are provided as the " @@ -3469,3 +3453,16 @@ msgstr "" "El comando ``check`` realiza algunas pruebas en los metadatos de un paquete. " "Por ejemplo, verifica que todos los metadatos requeridos se proporcionen " "como argumentos pasados a la función :func:`setup`." + +#~ msgid "" +#~ ":mod:`distutils.command.bdist_msi` --- Build a Microsoft Installer binary " +#~ "package" +#~ msgstr "" +#~ ":mod:`distutils.command.bdist_msi` --- Construye un paquete binario " +#~ "instalador de Microsoft" + +#~ msgid "Use bdist_wheel (wheel packages) instead." +#~ msgstr "Utiliza *bdist_wheel* (paquetes *wheel*) en su lugar." + +#~ msgid "Builds a `Windows Installer`_ (.msi) binary package." +#~ msgstr "Construye un paquete binario `Windows Installer`_ (.msi)" diff --git a/distutils/builtdist.po b/distutils/builtdist.po index c4f89b89c7..6e9495abf0 100644 --- a/distutils/builtdist.po +++ b/distutils/builtdist.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-11-26 14:47+0100\n" "Last-Translator: Cristián Maureira-Fredes \n" "Language: es_ES\n" @@ -19,14 +19,13 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/distutils/builtdist.rst:5 msgid "Creating Built Distributions" msgstr "Crear distribuciones compiladas" -#: ../Doc/distutils/_setuptools_disclaimer.rst:3 +#: ../Doc/distutils/cpython/Doc/distutils/_setuptools_disclaimer.rst:3 msgid "" "This document is being retained solely until the ``setuptools`` " "documentation at https://setuptools.readthedocs.io/en/latest/setuptools.html " @@ -332,19 +331,19 @@ msgstr "" msgid "" "You don't have to use the :command:`bdist` command with the :option:`!--" "formats` option; you can also use the command that directly implements the " -"format you're interested in. Some of these :command:`bdist` \"sub-commands" -"\" actually generate several similar formats; for instance, the :command:" -"`bdist_dumb` command generates all the \"dumb\" archive formats (``tar``, " -"``gztar``, ``bztar``, ``xztar``, ``ztar``, and ``zip``), and :command:" -"`bdist_rpm` generates both binary and source RPMs. The :command:`bdist` sub-" -"commands, and the formats generated by each, are:" +"format you're interested in. Some of these :command:`bdist` \"sub-" +"commands\" actually generate several similar formats; for instance, the :" +"command:`bdist_dumb` command generates all the \"dumb\" archive formats " +"(``tar``, ``gztar``, ``bztar``, ``xztar``, ``ztar``, and ``zip``), and :" +"command:`bdist_rpm` generates both binary and source RPMs. The :command:" +"`bdist` sub-commands, and the formats generated by each, are:" msgstr "" "No tiene que usar el comando :command:`bdist` con la opción :option:`!--" "formats`; también puede usar el comando que directamente implementa el " "formato en el que esté interesado. Algunos de estos subcomandos :command:" "`bdist` de hecho generan varios formatos similares; por ejemplo, el comando :" -"command:`bdist_dumb` genera todos los formatos de archivo \"dumb" -"\" (``tar``, ``gztar``, ``bztar``, ``xztar``, ``ztar``, y ``zip``), y :" +"command:`bdist_dumb` genera todos los formatos de archivo " +"\"dumb\" (``tar``, ``gztar``, ``bztar``, ``xztar``, ``ztar``, y ``zip``), y :" "command:`bdist_rpm` genera tanto binario como fuentes *RPMs*. Los " "subcomandos :command:`bdist`, y los formatos generados por cada uno, son:" @@ -372,19 +371,7 @@ msgstr ":command:`bdist_rpm`" msgid "rpm, srpm" msgstr "*rpm*, *srpm*" -#: ../Doc/distutils/builtdist.rst:141 -msgid ":command:`bdist_msi`" -msgstr ":command:`bdist_msi`" - -#: ../Doc/distutils/builtdist.rst:141 -msgid "msi" -msgstr "*msi*" - -#: ../Doc/distutils/builtdist.rst:145 -msgid "bdist_msi is deprecated since Python 3.9." -msgstr "bdist_msi está deprecado desde Python 3.9." - -#: ../Doc/distutils/builtdist.rst:147 +#: ../Doc/distutils/builtdist.rst:142 msgid "" "The following sections give details on the individual :command:`bdist_\\*` " "commands." @@ -392,11 +379,11 @@ msgstr "" "Las siguientes secciones proporcionan detalles sobre los comandos " "individuales de :command:`bdist_\\*` ." -#: ../Doc/distutils/builtdist.rst:163 +#: ../Doc/distutils/builtdist.rst:158 msgid "Creating RPM packages" msgstr "Creando paquetes *RPM*" -#: ../Doc/distutils/builtdist.rst:165 +#: ../Doc/distutils/builtdist.rst:160 msgid "" "The RPM format is used by many popular Linux distributions, including Red " "Hat, SuSE, and Mandrake. If one of these (or any of the other RPM-based " @@ -414,7 +401,7 @@ msgstr "" "entre distribuciones Linux, también podrá crear *RPMs* que funcionen en " "distribuciones diferentes basadas en *RPM*." -#: ../Doc/distutils/builtdist.rst:172 +#: ../Doc/distutils/builtdist.rst:167 msgid "" "The usual way to create an RPM of your module distribution is to run the :" "command:`bdist_rpm` command::" @@ -422,11 +409,11 @@ msgstr "" "El forma más común de crear un *RPM* de su distribución de módulo es " "ejecutar el comando :command:`bdist_rpm` ::" -#: ../Doc/distutils/builtdist.rst:177 +#: ../Doc/distutils/builtdist.rst:172 msgid "or the :command:`bdist` command with the :option:`!--format` option::" msgstr "o el comando :command:`bdist` con la opción :option:`!--format` ::" -#: ../Doc/distutils/builtdist.rst:181 +#: ../Doc/distutils/builtdist.rst:176 msgid "" "The former allows you to specify RPM-specific options; the latter allows " "you to easily specify multiple formats in one run. If you need to do both, " @@ -438,7 +425,7 @@ msgstr "" "hacer los dos, se pueden especificar explícitamente múltiples comandos :" "command:`bdist_\\*` y sus opciones::" -#: ../Doc/distutils/builtdist.rst:187 +#: ../Doc/distutils/builtdist.rst:182 msgid "" "Creating RPM packages is driven by a :file:`.spec` file, much as using the " "Distutils is driven by the setup script. To make your life easier, the :" @@ -456,75 +443,75 @@ msgstr "" "secciones en el archivo :file:`.spec` se derivan de las opciones del script " "de configuración de la siguiente manera:" -#: ../Doc/distutils/builtdist.rst:195 ../Doc/distutils/builtdist.rst:219 +#: ../Doc/distutils/builtdist.rst:190 ../Doc/distutils/builtdist.rst:214 msgid "RPM :file:`.spec` file option or section" msgstr "Opción de archivo *RPM* :file:`.spec` o sección" -#: ../Doc/distutils/builtdist.rst:195 +#: ../Doc/distutils/builtdist.rst:190 msgid "Distutils setup script option" msgstr "Opción del script de instalación de *Distutils*" -#: ../Doc/distutils/builtdist.rst:197 +#: ../Doc/distutils/builtdist.rst:192 msgid "Name" msgstr "Nombre" -#: ../Doc/distutils/builtdist.rst:197 +#: ../Doc/distutils/builtdist.rst:192 msgid "``name``" msgstr "``name``" -#: ../Doc/distutils/builtdist.rst:199 +#: ../Doc/distutils/builtdist.rst:194 msgid "Summary (in preamble)" msgstr "Resumen (en el preámbulo)" -#: ../Doc/distutils/builtdist.rst:199 +#: ../Doc/distutils/builtdist.rst:194 msgid "``description``" msgstr "``description``" -#: ../Doc/distutils/builtdist.rst:201 +#: ../Doc/distutils/builtdist.rst:196 msgid "Version" msgstr "Versión" -#: ../Doc/distutils/builtdist.rst:201 +#: ../Doc/distutils/builtdist.rst:196 msgid "``version``" msgstr "``version``" -#: ../Doc/distutils/builtdist.rst:203 ../Doc/distutils/builtdist.rst:226 +#: ../Doc/distutils/builtdist.rst:198 ../Doc/distutils/builtdist.rst:221 msgid "Vendor" msgstr "Vendedor" -#: ../Doc/distutils/builtdist.rst:203 +#: ../Doc/distutils/builtdist.rst:198 msgid "" "``author`` and ``author_email``, or --- & ``maintainer`` and " "``maintainer_email``" msgstr "" "``author`` y ``author_email``, o --- & ``maintainer`` y ``maintainer_email``" -#: ../Doc/distutils/builtdist.rst:207 +#: ../Doc/distutils/builtdist.rst:202 msgid "Copyright" msgstr "Copyright" -#: ../Doc/distutils/builtdist.rst:207 +#: ../Doc/distutils/builtdist.rst:202 msgid "``license``" msgstr "``license``" -#: ../Doc/distutils/builtdist.rst:209 +#: ../Doc/distutils/builtdist.rst:204 msgid "Url" msgstr "Url" -#: ../Doc/distutils/builtdist.rst:209 +#: ../Doc/distutils/builtdist.rst:204 msgid "``url``" msgstr "``url``" -#: ../Doc/distutils/builtdist.rst:211 +#: ../Doc/distutils/builtdist.rst:206 #, python-format msgid "%description (section)" msgstr "%description (sección)" -#: ../Doc/distutils/builtdist.rst:211 +#: ../Doc/distutils/builtdist.rst:206 msgid "``long_description``" msgstr "``long_description``" -#: ../Doc/distutils/builtdist.rst:214 +#: ../Doc/distutils/builtdist.rst:209 msgid "" "Additionally, there are many options in :file:`.spec` files that don't have " "corresponding options in the setup script. Most of these are handled " @@ -535,118 +522,118 @@ msgstr "" "están manejadas a través de opciones al comando :command:`bdist_rpm` como " "sigue:" -#: ../Doc/distutils/builtdist.rst:219 +#: ../Doc/distutils/builtdist.rst:214 msgid ":command:`bdist_rpm` option" msgstr "Opción :command:`bdist_rpm`" -#: ../Doc/distutils/builtdist.rst:219 +#: ../Doc/distutils/builtdist.rst:214 msgid "default value" msgstr "valor predefinido" -#: ../Doc/distutils/builtdist.rst:222 +#: ../Doc/distutils/builtdist.rst:217 msgid "Release" msgstr "*Release*" -#: ../Doc/distutils/builtdist.rst:222 +#: ../Doc/distutils/builtdist.rst:217 msgid "``release``" msgstr "``release``" -#: ../Doc/distutils/builtdist.rst:222 +#: ../Doc/distutils/builtdist.rst:217 msgid "\"1\"" msgstr "\"1\"" -#: ../Doc/distutils/builtdist.rst:224 +#: ../Doc/distutils/builtdist.rst:219 msgid "Group" msgstr "Grupo" -#: ../Doc/distutils/builtdist.rst:224 +#: ../Doc/distutils/builtdist.rst:219 msgid "``group``" msgstr "``group``" -#: ../Doc/distutils/builtdist.rst:224 +#: ../Doc/distutils/builtdist.rst:219 msgid "\"Development/Libraries\"" msgstr "\"Desarrollo/Librerías\"" -#: ../Doc/distutils/builtdist.rst:226 +#: ../Doc/distutils/builtdist.rst:221 msgid "``vendor``" msgstr "``vendor``" -#: ../Doc/distutils/builtdist.rst:226 +#: ../Doc/distutils/builtdist.rst:221 msgid "(see above)" msgstr "(ver arriba)" -#: ../Doc/distutils/builtdist.rst:228 +#: ../Doc/distutils/builtdist.rst:223 msgid "Packager" msgstr "Empaquetador" -#: ../Doc/distutils/builtdist.rst:228 +#: ../Doc/distutils/builtdist.rst:223 msgid "``packager``" msgstr "``packager``" -#: ../Doc/distutils/builtdist.rst:228 ../Doc/distutils/builtdist.rst:230 -#: ../Doc/distutils/builtdist.rst:232 ../Doc/distutils/builtdist.rst:234 -#: ../Doc/distutils/builtdist.rst:236 ../Doc/distutils/builtdist.rst:238 -#: ../Doc/distutils/builtdist.rst:240 ../Doc/distutils/builtdist.rst:242 +#: ../Doc/distutils/builtdist.rst:223 ../Doc/distutils/builtdist.rst:225 +#: ../Doc/distutils/builtdist.rst:227 ../Doc/distutils/builtdist.rst:229 +#: ../Doc/distutils/builtdist.rst:231 ../Doc/distutils/builtdist.rst:233 +#: ../Doc/distutils/builtdist.rst:235 ../Doc/distutils/builtdist.rst:237 msgid "(none)" msgstr "(ninguno)" -#: ../Doc/distutils/builtdist.rst:230 +#: ../Doc/distutils/builtdist.rst:225 msgid "Provides" msgstr "Proporciona" -#: ../Doc/distutils/builtdist.rst:230 +#: ../Doc/distutils/builtdist.rst:225 msgid "``provides``" msgstr "``provides``" -#: ../Doc/distutils/builtdist.rst:232 +#: ../Doc/distutils/builtdist.rst:227 msgid "Requires" msgstr "Requiere" -#: ../Doc/distutils/builtdist.rst:232 +#: ../Doc/distutils/builtdist.rst:227 msgid "``requires``" msgstr "``requires``" -#: ../Doc/distutils/builtdist.rst:234 +#: ../Doc/distutils/builtdist.rst:229 msgid "Conflicts" msgstr "Conflictos" -#: ../Doc/distutils/builtdist.rst:234 +#: ../Doc/distutils/builtdist.rst:229 msgid "``conflicts``" msgstr "``conflicts``" -#: ../Doc/distutils/builtdist.rst:236 +#: ../Doc/distutils/builtdist.rst:231 msgid "Obsoletes" msgstr "Obsolescencias" -#: ../Doc/distutils/builtdist.rst:236 +#: ../Doc/distutils/builtdist.rst:231 msgid "``obsoletes``" msgstr "``obsoletes``" -#: ../Doc/distutils/builtdist.rst:238 +#: ../Doc/distutils/builtdist.rst:233 msgid "Distribution" msgstr "Distribución" -#: ../Doc/distutils/builtdist.rst:238 +#: ../Doc/distutils/builtdist.rst:233 msgid "``distribution_name``" msgstr "``distribution_name``" -#: ../Doc/distutils/builtdist.rst:240 +#: ../Doc/distutils/builtdist.rst:235 msgid "BuildRequires" msgstr "Requisitos de compilación" -#: ../Doc/distutils/builtdist.rst:240 +#: ../Doc/distutils/builtdist.rst:235 msgid "``build_requires``" msgstr "``build_requires``" -#: ../Doc/distutils/builtdist.rst:242 +#: ../Doc/distutils/builtdist.rst:237 msgid "Icon" msgstr "Icono" -#: ../Doc/distutils/builtdist.rst:242 +#: ../Doc/distutils/builtdist.rst:237 msgid "``icon``" msgstr "``icon``" -#: ../Doc/distutils/builtdist.rst:245 +#: ../Doc/distutils/builtdist.rst:240 msgid "" "Obviously, supplying even a few of these options on the command-line would " "be tedious and error-prone, so it's usually best to put them in the setup " @@ -667,7 +654,7 @@ msgstr "" "temporalmente este archivo, puede pasar la opción :option:`!--no-user-cfg` " "a :file:`setup.py`." -#: ../Doc/distutils/builtdist.rst:253 +#: ../Doc/distutils/builtdist.rst:248 msgid "" "There are three steps to building a binary RPM package, all of which are " "handled automatically by the Distutils:" @@ -675,7 +662,7 @@ msgstr "" "Hay tres pasos para construir un paquete *RPM* binario, los cuales son " "manejados automáticamente por *Distutils*:" -#: ../Doc/distutils/builtdist.rst:256 +#: ../Doc/distutils/builtdist.rst:251 msgid "" "create a :file:`.spec` file, which describes the package (analogous to the " "Distutils setup script; in fact, much of the information in the setup " @@ -685,11 +672,11 @@ msgstr "" "de configuración de Distutils; de hecho, gran parte de la información en el " "script de configuración termina en el fichero :file:`.spec` )" -#: ../Doc/distutils/builtdist.rst:260 +#: ../Doc/distutils/builtdist.rst:255 msgid "create the source RPM" msgstr "crear el fuente RPM" -#: ../Doc/distutils/builtdist.rst:262 +#: ../Doc/distutils/builtdist.rst:257 msgid "" "create the \"binary\" RPM (which may or may not contain binary code, " "depending on whether your module distribution contains Python extensions)" @@ -697,7 +684,7 @@ msgstr "" "crear el \"binario\" RPM (que puede o no contener código binario, " "dependiendo de si la distribución de su módulo contiene extensiones Python)" -#: ../Doc/distutils/builtdist.rst:265 +#: ../Doc/distutils/builtdist.rst:260 msgid "" "Normally, RPM bundles the last two steps together; when you use the " "Distutils, all three steps are typically bundled together." @@ -705,7 +692,7 @@ msgstr "" "Normalmente, *RPM* agrupa los dos últimos pasos; cuando usa las *Distutils*, " "los tres pasos generalmente están agrupados." -#: ../Doc/distutils/builtdist.rst:268 +#: ../Doc/distutils/builtdist.rst:263 msgid "" "If you wish, you can separate these three steps. You can use the :option:" "`!--spec-only` option to make :command:`bdist_rpm` just create the :file:`." @@ -720,14 +707,14 @@ msgstr "" "file:`.spec` y salga; en este caso, el archivo :file:`.spec` se escribirá en " "el \"directorio de distribución\"--- normalmente :file:`dist/`, pero se " "puede personalizar con la opción :option:`!--dist-dir`. (Normalmente, el " -"archivo :file:`.spec` termina en lo más profundo del \"árbol de compilación" -"\", en un directorio temporal creado por :command:`bdist_rpm`.)" +"archivo :file:`.spec` termina en lo más profundo del \"árbol de " +"compilación\", en un directorio temporal creado por :command:`bdist_rpm`.)" -#: ../Doc/distutils/builtdist.rst:296 +#: ../Doc/distutils/builtdist.rst:291 msgid "Cross-compiling on Windows" msgstr "Compilación cruzada en Windows" -#: ../Doc/distutils/builtdist.rst:298 +#: ../Doc/distutils/builtdist.rst:293 msgid "" "Starting with Python 2.6, distutils is capable of cross-compiling between " "Windows platforms. In practice, this means that with the correct tools " @@ -739,7 +726,7 @@ msgstr "" "las herramientas correctas instaladas, puede usar una versión de Windows de " "32bit para crear extensiones de 64bit y viceversa." -#: ../Doc/distutils/builtdist.rst:303 +#: ../Doc/distutils/builtdist.rst:298 msgid "" "To build for an alternate platform, specify the :option:`!--plat-name` " "option to the build command. Valid values are currently 'win32', and 'win-" @@ -750,11 +737,11 @@ msgstr "" "actualmente 'win32', y 'win-amd64'. Por ejemplo, en una versión de Windows " "de 32bit, puede ejecutar::" -#: ../Doc/distutils/builtdist.rst:309 +#: ../Doc/distutils/builtdist.rst:304 msgid "to build a 64bit version of your extension." msgstr "para crear una versión de 64 bits de su extensión." -#: ../Doc/distutils/builtdist.rst:311 +#: ../Doc/distutils/builtdist.rst:306 msgid "" "would create a 64bit installation executable on your 32bit version of " "Windows." @@ -762,7 +749,7 @@ msgstr "" "crearía un ejecutable de instalación de 64bit en su versión de 32bit de " "Windows." -#: ../Doc/distutils/builtdist.rst:313 +#: ../Doc/distutils/builtdist.rst:308 msgid "" "To cross-compile, you must download the Python source code and cross-compile " "Python itself for the platform you are targeting - it is not possible from a " @@ -782,7 +769,7 @@ msgstr "" "de código de Python y construir la configuración \" x64 \" del proyecto " "'pythoncore' antes de que sea posible la compilación cruzada de extensiones." -#: ../Doc/distutils/builtdist.rst:322 +#: ../Doc/distutils/builtdist.rst:317 msgid "" "Note that by default, Visual Studio 2008 does not install 64bit compilers or " "tools. You may need to reexecute the Visual Studio setup process and select " @@ -795,11 +782,11 @@ msgstr "" "(usar Panel de control -> [Agregar/Quitar] Programas es una forma " "conveniente de verificar o modificar su instalación existente)." -#: ../Doc/distutils/builtdist.rst:330 +#: ../Doc/distutils/builtdist.rst:325 msgid "The Postinstallation script" msgstr "El script posterior a la instalación" -#: ../Doc/distutils/builtdist.rst:332 +#: ../Doc/distutils/builtdist.rst:327 msgid "" "Starting with Python 2.3, a postinstallation script can be specified with " "the :option:`!--install-script` option. The basename of the script must be " @@ -811,7 +798,7 @@ msgstr "" "el nombre base del script y el nombre del archivo del *script* también se " "debe incluir en el argumento de los scripts de la función de configuración." -#: ../Doc/distutils/builtdist.rst:337 +#: ../Doc/distutils/builtdist.rst:332 msgid "" "This script will be run at installation time on the target system after all " "the files have been copied, with ``argv[1]`` set to :option:`!-install`, and " @@ -824,7 +811,7 @@ msgstr "" "desinstalación antes de que se eliminen los archivos con ``argv[1]`` " "establecido en :option:`!-remove`." -#: ../Doc/distutils/builtdist.rst:342 +#: ../Doc/distutils/builtdist.rst:337 msgid "" "The installation script runs embedded in the windows installer, every output " "(``sys.stdout``, ``sys.stderr``) is redirected into a buffer and will be " @@ -834,7 +821,7 @@ msgstr "" "cada salida (``sys.stdout``, ``sys.stderr``) se redirige a un búfer y se " "mostrará en la GUI una vez finalizado el *script*." -#: ../Doc/distutils/builtdist.rst:346 +#: ../Doc/distutils/builtdist.rst:341 msgid "" "Some functions especially useful in this context are available as additional " "built-in functions in the installation script." @@ -842,7 +829,7 @@ msgstr "" "Algunas funciones especialmente útiles en este contexto están disponibles " "como funciones integradas adicionales en el script de instalación." -#: ../Doc/distutils/builtdist.rst:353 +#: ../Doc/distutils/builtdist.rst:348 msgid "" "These functions should be called when a directory or file is created by the " "postinstall script at installation time. It will register *path* with the " @@ -855,7 +842,7 @@ msgstr "" "la distribución. Para mayor seguridad, los directorios solo se eliminan si " "están vacíos." -#: ../Doc/distutils/builtdist.rst:361 +#: ../Doc/distutils/builtdist.rst:356 msgid "" "This function can be used to retrieve special folder locations on Windows " "like the Start Menu or the Desktop. It returns the full path to the folder. " @@ -866,11 +853,11 @@ msgstr "" "completa al directorio. *csidl_string* debe ser una de las siguientes " "cadenas::" -#: ../Doc/distutils/builtdist.rst:381 +#: ../Doc/distutils/builtdist.rst:376 msgid "If the folder cannot be retrieved, :exc:`OSError` is raised." msgstr "Si no se puede recuperar el directorio, se lanza :exc:`OSError`." -#: ../Doc/distutils/builtdist.rst:383 +#: ../Doc/distutils/builtdist.rst:378 msgid "" "Which folders are available depends on the exact Windows version, and " "probably also the configuration. For details refer to Microsoft's " @@ -881,7 +868,7 @@ msgstr "" "consulte la documentación de Microsoft de la función :c:func:" "`SHGetSpecialFolderPath` ." -#: ../Doc/distutils/builtdist.rst:390 +#: ../Doc/distutils/builtdist.rst:385 msgid "" "This function creates a shortcut. *target* is the path to the program to be " "started by the shortcut. *description* is the description of the shortcut. " @@ -900,3 +887,12 @@ msgstr "" "icono del acceso directo, y *iconindex* es el índice del icono en el archivo " "*iconpath*. Nuevamente, para obtener más detalles, consulte la documentación " "de Microsoft para la interfaz :class:`IShellLink`." + +#~ msgid ":command:`bdist_msi`" +#~ msgstr ":command:`bdist_msi`" + +#~ msgid "msi" +#~ msgstr "*msi*" + +#~ msgid "bdist_msi is deprecated since Python 3.9." +#~ msgstr "bdist_msi está deprecado desde Python 3.9." diff --git a/distutils/index.po b/distutils/index.po index a53e81fa09..611e326998 100644 --- a/distutils/index.po +++ b/distutils/index.po @@ -95,8 +95,9 @@ msgid "" "capabilities that ``setuptools`` builds on to allow Python developers to " "make Python modules and extensions readily available to a wider audience." msgstr "" -"Este documento describe las utilidades de distribución de Python (\"Distutils" -"\") desde el punto de vista del desarrollador del módulo, describiendo las " -"capacidades subyacentes sobre las que se basan las ``setuptools`` para " -"permitir que los desarrolladores de Python hagan que los módulos y " -"extensiones de Python estén disponibles para una audiencia más amplia." +"Este documento describe las utilidades de distribución de Python " +"(\"Distutils\") desde el punto de vista del desarrollador del módulo, " +"describiendo las capacidades subyacentes sobre las que se basan las " +"``setuptools`` para permitir que los desarrolladores de Python hagan que los " +"módulos y extensiones de Python estén disponibles para una audiencia más " +"amplia." diff --git a/distutils/setupscript.po b/distutils/setupscript.po index 47b37ae182..1a98a9b8ef 100644 --- a/distutils/setupscript.po +++ b/distutils/setupscript.po @@ -1248,8 +1248,8 @@ msgid "" "option which is deprecated but still acts as an alias for ``license``." msgstr "" "El campo ``license`` es un texto que indica la licencia que cubre el paquete " -"donde la licencia no es una selección de los clasificadores de Trove *" -"\"License\"*. Vea el campo ``Classifier``. Tenga en cuenta que hay una " +"donde la licencia no es una selección de los clasificadores de Trove " +"*\"License\"*. Vea el campo ``Classifier``. Tenga en cuenta que hay una " "opción de distribución de ``license`` que está en desuso pero que aún actúa " "como un alias para la ``license``." diff --git a/distutils/sourcedist.po b/distutils/sourcedist.po index f52bbbc8fd..4fea09de83 100644 --- a/distutils/sourcedist.po +++ b/distutils/sourcedist.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-11-26 14:38+0100\n" "Last-Translator: Cristián Maureira-Fredes \n" "Language: es\n" @@ -19,14 +19,13 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/distutils/sourcedist.rst:5 msgid "Creating a Source Distribution" msgstr "Crear una distribución del código fuente" -#: ../Doc/distutils/_setuptools_disclaimer.rst:3 +#: ../Doc/distutils/cpython/Doc/distutils/_setuptools_disclaimer.rst:3 msgid "" "This document is being retained solely until the ``setuptools`` " "documentation at https://setuptools.readthedocs.io/en/latest/setuptools.html " @@ -117,6 +116,12 @@ msgstr "``bztar``" msgid "bzip2'ed tar file (:file:`.tar.bz2`)" msgstr "archivo tar comprimido con bzip2 (:file:`.tar.bz2`)" +#: ../Doc/distutils/sourcedist.rst:34 ../Doc/distutils/sourcedist.rst:37 +#: ../Doc/distutils/sourcedist.rst:43 +#, fuzzy +msgid "\\(5)" +msgstr "\\(4)" + #: ../Doc/distutils/sourcedist.rst:37 msgid "``xztar``" msgstr "``xztar``" @@ -134,8 +139,9 @@ msgid "compressed tar file (:file:`.tar.Z`)" msgstr "archivo tar comprimido (:file:`.tar.Z`)" #: ../Doc/distutils/sourcedist.rst:40 -msgid "\\(4)" -msgstr "\\(4)" +#, fuzzy +msgid "(4),(5)" +msgstr "(1),(3)" #: ../Doc/distutils/sourcedist.rst:43 msgid "``tar``" @@ -179,6 +185,12 @@ msgstr "" #: ../Doc/distutils/sourcedist.rst:65 msgid "" +"deprecated by `PEP 527 `_; `PyPI `_ only accepts ``.zip`` and ``.tar.gz`` files." +msgstr "" + +#: ../Doc/distutils/sourcedist.rst:68 +msgid "" "When using any ``tar`` format (``gztar``, ``bztar``, ``xztar``, ``ztar`` or " "``tar``), under Unix you can specify the ``owner`` and ``group`` names that " "will be set for each member of the archive." @@ -187,16 +199,16 @@ msgstr "" "o ``tar``), en Unix se puede especificar el nombre del ``propietario`` y " "``grupo`` que se establecerá para cada uno de los miembros del archivo." -#: ../Doc/distutils/sourcedist.rst:69 +#: ../Doc/distutils/sourcedist.rst:72 msgid "For example, if you want all files of the archive to be owned by root::" msgstr "" "Por ejemplo, si quiere que todos los archivos pertenezcan al usuario root::" -#: ../Doc/distutils/sourcedist.rst:77 +#: ../Doc/distutils/sourcedist.rst:80 msgid "Specifying the files to distribute" msgstr "Especificar los archivos a distribuir" -#: ../Doc/distutils/sourcedist.rst:79 +#: ../Doc/distutils/sourcedist.rst:82 msgid "" "If you don't supply an explicit list of files (or instructions on how to " "generate one), the :command:`sdist` command puts a minimal default set into " @@ -206,7 +218,7 @@ msgstr "" "sobre cómo generar uno), el comando :command:`sdist` pone un conjunto mínimo " "por defecto en la distribución de código fuente:" -#: ../Doc/distutils/sourcedist.rst:83 +#: ../Doc/distutils/sourcedist.rst:86 msgid "" "all Python source files implied by the ``py_modules`` and ``packages`` " "options" @@ -214,14 +226,14 @@ msgstr "" "todos los archivos de código fuente de Python implícitos por las opciones " "``py_modules`` y ``packages``" -#: ../Doc/distutils/sourcedist.rst:86 +#: ../Doc/distutils/sourcedist.rst:89 msgid "" "all C source files mentioned in the ``ext_modules`` or ``libraries`` options" msgstr "" "todos los archivos de código fuente de C mencionados en las opciones " "``ext_modules`` o ``libraries``" -#: ../Doc/distutils/sourcedist.rst:92 +#: ../Doc/distutils/sourcedist.rst:95 msgid "" "scripts identified by the ``scripts`` option See :ref:`distutils-installing-" "scripts`." @@ -229,7 +241,7 @@ msgstr "" "*scripts* identificados por la opción ``scripts`` Ver :ref:`distutils-" "installing-scripts`." -#: ../Doc/distutils/sourcedist.rst:95 +#: ../Doc/distutils/sourcedist.rst:98 msgid "" "anything that looks like a test script: :file:`test/test\\*.py` (currently, " "the Distutils don't do anything with test scripts except include them in " @@ -241,7 +253,7 @@ msgstr "" "incluye en la distribución, pero en el futuro habrá un estándar para " "realizar pruebas de los módulos de Python en las distribuciones)" -#: ../Doc/distutils/sourcedist.rst:100 +#: ../Doc/distutils/sourcedist.rst:103 msgid "" "Any of the standard README files (:file:`README`, :file:`README.txt`, or :" "file:`README.rst`), :file:`setup.py` (or whatever you called your setup " @@ -251,7 +263,7 @@ msgstr "" "txt`, o :file:`README.rst`), :file:`setup.py` (o cualquier nombre que le " "haya puesto al script de configuración), y :file:`setup.cfg`." -#: ../Doc/distutils/sourcedist.rst:104 +#: ../Doc/distutils/sourcedist.rst:107 msgid "" "all files that matches the ``package_data`` metadata. See :ref:`distutils-" "installing-package-data`." @@ -259,7 +271,7 @@ msgstr "" "todos los archivos que coincidan con los metadatos ``package_data``. Vea :" "ref:`distutils-installing-package-data`." -#: ../Doc/distutils/sourcedist.rst:107 +#: ../Doc/distutils/sourcedist.rst:110 msgid "" "all files that matches the ``data_files`` metadata. See :ref:`distutils-" "additional-files`." @@ -267,7 +279,7 @@ msgstr "" "todos los archivos que coincidan con los metadatos ``data_files``. Vea :ref:" "`distutils-additional-files`." -#: ../Doc/distutils/sourcedist.rst:110 +#: ../Doc/distutils/sourcedist.rst:113 msgid "" "Sometimes this is enough, but usually you will want to specify additional " "files to distribute. The typical way to do this is to write a *manifest " @@ -287,7 +299,7 @@ msgstr "" "comando :command:`sdist` procesa esta plantilla y genera un manifiesto " "basado en las instrucciones y en lo que encuentra en el sistema de ficheros." -#: ../Doc/distutils/sourcedist.rst:118 +#: ../Doc/distutils/sourcedist.rst:121 msgid "" "If you prefer to roll your own manifest file, the format is simple: one " "filename per line, regular files (or symlinks to them) only. If you do " @@ -300,7 +312,7 @@ msgstr "" "todo: el conjunto predeterminado de los archivos descritos más arriba no se " "aplica en este caso." -#: ../Doc/distutils/sourcedist.rst:123 +#: ../Doc/distutils/sourcedist.rst:126 msgid "" "An existing generated :file:`MANIFEST` will be regenerated without :command:" "`sdist` comparing its modification time to the one of :file:`MANIFEST.in` " @@ -310,7 +322,7 @@ msgstr "" "`sdist` comparando su tiempo de modificación con el de :file:`MANIFEST.in` " "o :file:`setup.py`." -#: ../Doc/distutils/sourcedist.rst:128 +#: ../Doc/distutils/sourcedist.rst:131 msgid "" ":file:`MANIFEST` files start with a comment indicating they are generated. " "Files without this comment are not overwritten or removed." @@ -319,7 +331,7 @@ msgstr "" "generados. Los archivos que no tengan este comentario no se sobrescriben ni " "eliminan." -#: ../Doc/distutils/sourcedist.rst:132 +#: ../Doc/distutils/sourcedist.rst:135 msgid "" ":command:`sdist` will read a :file:`MANIFEST` file if no :file:`MANIFEST.in` " "exists, like it used to do." @@ -327,14 +339,14 @@ msgstr "" ":command:`sdist` leerá un archivo :file:`MANIFEST` si no existe el archivo :" "file:`MANIFEST.in`, como solía hacer." -#: ../Doc/distutils/sourcedist.rst:136 +#: ../Doc/distutils/sourcedist.rst:139 msgid "" ":file:`README.rst` is now included in the list of distutils standard READMEs." msgstr "" ":file:`README.rst` ahora está incluido en la lista de LEAMEs estándar de " "distutils." -#: ../Doc/distutils/sourcedist.rst:140 +#: ../Doc/distutils/sourcedist.rst:143 msgid "" "The manifest template has one command per line, where each command specifies " "a set of files to include or exclude from the source distribution. For an " @@ -345,7 +357,7 @@ msgstr "" "de código fuente. Para un ejemplo, de nuevo nos dirigimos a la Distutils la " "propia plantilla de manifiesto:" -#: ../Doc/distutils/sourcedist.rst:150 +#: ../Doc/distutils/sourcedist.rst:153 msgid "" "The meanings should be fairly clear: include all files in the distribution " "root matching :file:`\\*.txt`, all files anywhere under the :file:`examples` " @@ -369,7 +381,7 @@ msgstr "" "disponibles en el mini-lenguaje de la plantilla de manifiesto; vea la " "sección :ref:`sdist-cmd`." -#: ../Doc/distutils/sourcedist.rst:160 +#: ../Doc/distutils/sourcedist.rst:163 msgid "" "The order of commands in the manifest template matters: initially, we have " "the list of default files as described above, and each command in the " @@ -384,13 +396,13 @@ msgstr "" "manifiesto, eliminamos los archivos que no deberían incluirse en la " "distribución del código fuente:" -#: ../Doc/distutils/sourcedist.rst:166 +#: ../Doc/distutils/sourcedist.rst:169 msgid "all files in the Distutils \"build\" tree (default :file:`build/`)" msgstr "" "todos los archivos en el árbol \"build\" de Distutils (por defecto :file:" "`build/`)" -#: ../Doc/distutils/sourcedist.rst:168 +#: ../Doc/distutils/sourcedist.rst:171 msgid "" "all files in directories named :file:`RCS`, :file:`CVS`, :file:`.svn`, :file:" "`.hg`, :file:`.git`, :file:`.bzr` or :file:`_darcs`" @@ -398,7 +410,7 @@ msgstr "" "todos los archivos en directorios nombrados :file:`RCS`, :file:`CVS`, :file:" "`.svn`, :file:`.hg`, :file:`.git`, :file:`.bzr` o :file:`_darcs`" -#: ../Doc/distutils/sourcedist.rst:171 +#: ../Doc/distutils/sourcedist.rst:174 msgid "" "Now we have our complete list of files, which is written to the manifest for " "future reference, and then used to build the source distribution archive(s)." @@ -407,7 +419,7 @@ msgstr "" "manifiesto para una futura referencia, y luego se utilizará para construir " "los archivos de distribución de código fuente." -#: ../Doc/distutils/sourcedist.rst:174 +#: ../Doc/distutils/sourcedist.rst:177 msgid "" "You can disable the default set of included files with the :option:`!--no-" "defaults` option, and you can disable the standard exclude set with :option:" @@ -417,7 +429,7 @@ msgstr "" "opción :option:`!--no-defaults`, y puede deshabilitar el conjunto de " "exclusión estándar con :option:`!--no-prune`." -#: ../Doc/distutils/sourcedist.rst:178 +#: ../Doc/distutils/sourcedist.rst:181 msgid "" "Following the Distutils' own manifest template, let's trace how the :command:" "`sdist` command builds the list of files to include in the Distutils source " @@ -427,7 +439,7 @@ msgstr "" "comando :command:`sdist` crea la lista de archivos para incluir en la " "distribución fuente de Distutils:" -#: ../Doc/distutils/sourcedist.rst:182 +#: ../Doc/distutils/sourcedist.rst:185 msgid "" "include all Python source files in the :file:`distutils` and :file:" "`distutils/command` subdirectories (because packages corresponding to those " @@ -440,7 +452,7 @@ msgstr "" "``packages`` en el script de configuración ---vea la sección :ref:`setup-" "script`)" -#: ../Doc/distutils/sourcedist.rst:187 +#: ../Doc/distutils/sourcedist.rst:190 msgid "" "include :file:`README.txt`, :file:`setup.py`, and :file:`setup.cfg` " "(standard files)" @@ -448,11 +460,11 @@ msgstr "" "incluir:file:`README.txt`, :file:`setup.py`, y :file:`setup.cfg` (archivos " "estándar)" -#: ../Doc/distutils/sourcedist.rst:190 +#: ../Doc/distutils/sourcedist.rst:193 msgid "include :file:`test/test\\*.py` (standard files)" msgstr "incluir :file:`test/test\\*.py` (archivos estándar)" -#: ../Doc/distutils/sourcedist.rst:192 +#: ../Doc/distutils/sourcedist.rst:195 msgid "" "include :file:`\\*.txt` in the distribution root (this will find :file:" "`README.txt` a second time, but such redundancies are weeded out later)" @@ -460,7 +472,7 @@ msgstr "" "incluir :file:`\\*.txt` en la raíz de la distribución(esto encontrará :file:" "`README.txt` por segunda vez, pero tales redundancias se eliminan más tarde)" -#: ../Doc/distutils/sourcedist.rst:195 +#: ../Doc/distutils/sourcedist.rst:198 msgid "" "include anything matching :file:`\\*.txt` or :file:`\\*.py` in the sub-tree " "under :file:`examples`," @@ -468,7 +480,7 @@ msgstr "" "incluir cualquier archivo que coincida con :file:`\\*.txt` or :file:`\\*.py` " "en el subárbol dentro de :file:`examples`," -#: ../Doc/distutils/sourcedist.rst:198 +#: ../Doc/distutils/sourcedist.rst:201 msgid "" "exclude all files in the sub-trees starting at directories matching :file:" "`examples/sample?/build`\\ ---this may exclude files included by the " @@ -481,7 +493,7 @@ msgstr "" "importante que el comando ``prune`` en la plantilla de manifiesto vaya " "después del comando ``recursive-include``" -#: ../Doc/distutils/sourcedist.rst:203 +#: ../Doc/distutils/sourcedist.rst:206 msgid "" "exclude the entire :file:`build` tree, and any :file:`RCS`, :file:`CVS`, :" "file:`.svn`, :file:`.hg`, :file:`.git`, :file:`.bzr` and :file:`_darcs` " @@ -491,7 +503,7 @@ msgstr "" "file:`CVS`, :file:`.svn`, :file:`.hg`, :file:`.git`, :file:`.bzr` y :file:" "`_darcs`" -#: ../Doc/distutils/sourcedist.rst:207 +#: ../Doc/distutils/sourcedist.rst:210 msgid "" "Just like in the setup script, file and directory names in the manifest " "template should always be slash-separated; the Distutils will take care of " @@ -504,11 +516,11 @@ msgstr "" "en su plataforma. De esa manera, la plantilla de manifiesto es portable en " "todos los sistemas operativos." -#: ../Doc/distutils/sourcedist.rst:216 +#: ../Doc/distutils/sourcedist.rst:219 msgid "Manifest-related options" msgstr "Opciones relacionadas con el manifesto" -#: ../Doc/distutils/sourcedist.rst:218 +#: ../Doc/distutils/sourcedist.rst:221 msgid "" "The normal course of operations for the :command:`sdist` command is as " "follows:" @@ -516,7 +528,7 @@ msgstr "" "El curso normal de operaciones para el comando :command:`sdist` es el " "siguiente:" -#: ../Doc/distutils/sourcedist.rst:220 +#: ../Doc/distutils/sourcedist.rst:223 msgid "" "if the manifest file (:file:`MANIFEST` by default) exists and the first line " "does not have a comment indicating it is generated from :file:`MANIFEST.in`, " @@ -526,7 +538,7 @@ msgstr "" "primera línea no tiene un comentario que indique que se genera a partir de :" "file:`MANIFEST.in`, entonces se usa como está, sin alteraciones" -#: ../Doc/distutils/sourcedist.rst:224 +#: ../Doc/distutils/sourcedist.rst:227 msgid "" "if the manifest file doesn't exist or has been previously automatically " "generated, read :file:`MANIFEST.in` and create the manifest" @@ -534,7 +546,7 @@ msgstr "" "si el archivo de manifiesto no existe o si se ha generado previamente de " "forma automática, lea :file:`MANIFEST.in` y cree el manifiesto" -#: ../Doc/distutils/sourcedist.rst:227 +#: ../Doc/distutils/sourcedist.rst:230 msgid "" "if neither :file:`MANIFEST` nor :file:`MANIFEST.in` exist, create a manifest " "with just the default file set" @@ -542,7 +554,7 @@ msgstr "" "si no existe :file:`MANIFEST` ni :file:`MANIFEST.in`, cree un manifiesto " "solamente con el conjunto de archivos predeterminado" -#: ../Doc/distutils/sourcedist.rst:230 +#: ../Doc/distutils/sourcedist.rst:233 msgid "" "use the list of files now in :file:`MANIFEST` (either just generated or read " "in) to create the source distribution archive(s)" @@ -550,7 +562,7 @@ msgstr "" "use la lista de archivos, que ahora están en :file:`MANIFEST` (ya sea " "generado o leído) para crear los archivos de distribución de código fuente" -#: ../Doc/distutils/sourcedist.rst:233 +#: ../Doc/distutils/sourcedist.rst:236 msgid "" "There are a couple of options that modify this behaviour. First, use the :" "option:`!--no-defaults` and :option:`!--no-prune` to disable the standard " @@ -560,7 +572,7 @@ msgstr "" "option:`!--no-defaults` y :option:`!--no-prune` para desactivar los " "conjuntos estándar \"include\" y \"exclude\"." -#: ../Doc/distutils/sourcedist.rst:237 +#: ../Doc/distutils/sourcedist.rst:240 msgid "" "Second, you might just want to (re)generate the manifest, but not create a " "source distribution::" @@ -568,6 +580,6 @@ msgstr "" "Segundo, quizá quiera (re)generar el manifesto, pero no crear la " "distribución del código fuente::" -#: ../Doc/distutils/sourcedist.rst:242 +#: ../Doc/distutils/sourcedist.rst:245 msgid ":option:`!-o` is a shortcut for :option:`!--manifest-only`." msgstr ":option:`!-o` es una forma corta de :option:`!--manifest-only`." diff --git a/extending/building.po b/extending/building.po index e6433f960f..dbb88a09f5 100644 --- a/extending/building.po +++ b/extending/building.po @@ -10,17 +10,16 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-05 12:54+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2020-06-24 22:47+0200\n" +"Last-Translator: Cristián Maureira-Fredes \n" +"Language: es\n" "Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" +"Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.8.0\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Last-Translator: Cristián Maureira-Fredes \n" -"Language: es\n" -"X-Generator: Poedit 2.3\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/extending/building.rst:7 msgid "Building C and C++ Extensions" @@ -52,8 +51,9 @@ msgid "The initialization function has the signature:" msgstr "La función de inicialización tiene la firma:" #: ../Doc/extending/building.rst:20 +#, fuzzy msgid "" -"It returns either a fully-initialized module, or a :c:type:`PyModuleDef` " +"It returns either a fully initialized module, or a :c:type:`PyModuleDef` " "instance. See :ref:`initializing-modules` for details." msgstr "" "Retorna un módulo completamente inicializado o una instancia :c:type:" diff --git a/extending/extending.po b/extending/extending.po index 5591c3b60a..272b2e90c1 100644 --- a/extending/extending.po +++ b/extending/extending.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-10-27 04:00-0400\n" "Last-Translator: Cristián Maureira-Fredes \n" "Language: es\n" @@ -19,8 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/extending/extending.rst:8 msgid "Extending Python with C or C++" @@ -148,8 +147,8 @@ msgstr "" msgid "" "All user-visible symbols defined by :file:`Python.h` have a prefix of ``Py`` " "or ``PY``, except those defined in standard header files. For convenience, " -"and since they are used extensively by the Python interpreter, ``\"Python.h" -"\"`` includes a few standard header files: ````, ````, " +"and since they are used extensively by the Python interpreter, ``\"Python." +"h\"`` includes a few standard header files: ````, ````, " "````, and ````. If the latter header file does not exist " "on your system, it declares the functions :c:func:`malloc`, :c:func:`free` " "and :c:func:`realloc` directly." @@ -237,30 +236,15 @@ msgstr "Intermezzo: errores y excepciones" msgid "" "An important convention throughout the Python interpreter is the following: " "when a function fails, it should set an exception condition and return an " -"error value (usually a ``NULL`` pointer). Exceptions are stored in a static " -"global variable inside the interpreter; if this variable is ``NULL`` no " -"exception has occurred. A second global variable stores the \"associated " -"value\" of the exception (the second argument to :keyword:`raise`). A third " -"variable contains the stack traceback in case the error originated in Python " -"code. These three variables are the C equivalents of the result in Python " -"of :meth:`sys.exc_info` (see the section on module :mod:`sys` in the Python " -"Library Reference). It is important to know about them to understand how " -"errors are passed around." -msgstr "" -"Una convención importante en todo el intérprete de Python es la siguiente: " -"cuando una función falla, debe establecer una condición de excepción y " -"retornar un valor de error (generalmente un puntero ``NULL``). Las " -"excepciones se almacenan en una variable global estática dentro del " -"intérprete; Si esta variable es ``NULL``, no se ha producido ninguna " -"excepción. Una segunda variable global almacena el \"valor asociado\" de la " -"excepción (el segundo argumento para :keyword:`raise`). Una tercera variable " -"contiene el seguimiento de la pila en caso de que el error se origine en el " -"código Python. Estas tres variables son los equivalentes en C del resultado " -"en Python de :meth:`sys.exc_info` (consulte la sección sobre el módulo :mod:" -"`sys` en la Referencia de la biblioteca de Python). Es importante conocerlos " -"para comprender cómo se transmiten los errores." +"error value (usually ``-1`` or a ``NULL`` pointer). Exception information " +"is stored in three members of the interpreter's thread state. These are " +"``NULL`` if there is no exception. Otherwise they are the C equivalents of " +"the members of the Python tuple returned by :meth:`sys.exc_info`. These are " +"the exception type, exception instance, and a traceback object. It is " +"important to know about them to understand how errors are passed around." +msgstr "" -#: ../Doc/extending/extending.rst:139 +#: ../Doc/extending/extending.rst:137 msgid "" "The Python API defines a number of functions to set various types of " "exceptions." @@ -268,7 +252,7 @@ msgstr "" "La API de Python define una serie de funciones para establecer varios tipos " "de excepciones." -#: ../Doc/extending/extending.rst:141 +#: ../Doc/extending/extending.rst:139 msgid "" "The most common one is :c:func:`PyErr_SetString`. Its arguments are an " "exception object and a C string. The exception object is usually a " @@ -282,7 +266,7 @@ msgstr "" "causa del error y se convierte en un objeto de cadena Python y se almacena " "como el \"valor asociado\" de la excepción." -#: ../Doc/extending/extending.rst:147 +#: ../Doc/extending/extending.rst:145 msgid "" "Another useful function is :c:func:`PyErr_SetFromErrno`, which only takes an " "exception argument and constructs the associated value by inspection of the " @@ -298,7 +282,7 @@ msgstr "" "valor asociado. No necesita :c:func:`Py_INCREF` los objetos pasados a " "cualquiera de estas funciones." -#: ../Doc/extending/extending.rst:154 +#: ../Doc/extending/extending.rst:152 msgid "" "You can test non-destructively whether an exception has been set with :c:" "func:`PyErr_Occurred`. This returns the current exception object, or " @@ -312,18 +296,18 @@ msgstr "" "llamar a :c:func:`PyErr_Occurred` para ver si se produjo un error en una " "llamada a la función, ya que debería poder distinguir el valor de retorno." -#: ../Doc/extending/extending.rst:160 +#: ../Doc/extending/extending.rst:158 +#, fuzzy msgid "" "When a function *f* that calls another function *g* detects that the latter " "fails, *f* should itself return an error value (usually ``NULL`` or " -"``-1``). It should *not* call one of the :c:func:`PyErr_\\*` functions --- " -"one has already been called by *g*. *f*'s caller is then supposed to also " -"return an error indication to *its* caller, again *without* calling :c:func:" -"`PyErr_\\*`, and so on --- the most detailed cause of the error was already " -"reported by the function that first detected it. Once the error reaches the " -"Python interpreter's main loop, this aborts the currently executing Python " -"code and tries to find an exception handler specified by the Python " -"programmer." +"``-1``). It should *not* call one of the ``PyErr_*`` functions --- one has " +"already been called by *g*. *f*'s caller is then supposed to also return an " +"error indication to *its* caller, again *without* calling ``PyErr_*``, and " +"so on --- the most detailed cause of the error was already reported by the " +"function that first detected it. Once the error reaches the Python " +"interpreter's main loop, this aborts the currently executing Python code and " +"tries to find an exception handler specified by the Python programmer." msgstr "" "Cuando una función *f* que llama a otra función *g* detecta que la última " "falla, *f* debería retornar un valor de error (generalmente ``NULL`` o " @@ -337,13 +321,14 @@ msgstr "" "intenta encontrar un controlador de excepción especificado por el " "programador de Python." -#: ../Doc/extending/extending.rst:170 +#: ../Doc/extending/extending.rst:168 +#, fuzzy msgid "" "(There are situations where a module can actually give a more detailed error " -"message by calling another :c:func:`PyErr_\\*` function, and in such cases " -"it is fine to do so. As a general rule, however, this is not necessary, and " -"can cause information about the cause of the error to be lost: most " -"operations can fail for a variety of reasons.)" +"message by calling another ``PyErr_*`` function, and in such cases it is " +"fine to do so. As a general rule, however, this is not necessary, and can " +"cause information about the cause of the error to be lost: most operations " +"can fail for a variety of reasons.)" msgstr "" "(Hay situaciones en las que un módulo puede dar un mensaje de error más " "detallado llamando a otra función :c:func:`PyErr_\\*`, y en tales casos está " @@ -351,7 +336,7 @@ msgstr "" "puede causar que se pierda información sobre la causa del error: la mayoría " "de las operaciones pueden fallar por varias razones.)" -#: ../Doc/extending/extending.rst:176 +#: ../Doc/extending/extending.rst:174 msgid "" "To ignore an exception set by a function call that failed, the exception " "condition must be cleared explicitly by calling :c:func:`PyErr_Clear`. The " @@ -366,7 +351,7 @@ msgstr "" "manejarlo completamente por sí mismo (posiblemente probando algo más o " "pretendiendo que nada salió mal) )" -#: ../Doc/extending/extending.rst:182 +#: ../Doc/extending/extending.rst:180 msgid "" "Every failing :c:func:`malloc` call must be turned into an exception --- the " "direct caller of :c:func:`malloc` (or :c:func:`realloc`) must call :c:func:" @@ -381,7 +366,7 @@ msgstr "" "c:func:`PyLong_FromLong`) ya hacen esto, por lo que esta nota solo es " "relevante para aquellos que llaman :c:func:`malloc` directamente." -#: ../Doc/extending/extending.rst:188 +#: ../Doc/extending/extending.rst:186 msgid "" "Also note that, with the important exception of :c:func:`PyArg_ParseTuple` " "and friends, functions that return an integer status usually return a " @@ -393,7 +378,7 @@ msgstr "" "generalmente retornan un valor positivo o cero para el éxito y ``-1`` para " "el fracaso, como las llamadas al sistema Unix." -#: ../Doc/extending/extending.rst:192 +#: ../Doc/extending/extending.rst:190 msgid "" "Finally, be careful to clean up garbage (by making :c:func:`Py_XDECREF` or :" "c:func:`Py_DECREF` calls for objects you have already created) when you " @@ -403,7 +388,7 @@ msgstr "" "`Py_XDECREF` o :c:func:`Py_DECREF` requiere objetos que ya ha creado) cuando " "retorna un indicador de error!" -#: ../Doc/extending/extending.rst:196 +#: ../Doc/extending/extending.rst:194 msgid "" "The choice of which exception to raise is entirely yours. There are " "predeclared C objects corresponding to all built-in Python exceptions, such " @@ -426,7 +411,7 @@ msgstr "" "valor debe estar en un rango particular o debe satisfacer otras " "condiciones, :c:data:`PyExc_ValueError` es apropiado." -#: ../Doc/extending/extending.rst:206 +#: ../Doc/extending/extending.rst:204 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::" @@ -435,7 +420,7 @@ msgstr "" "Para esto, generalmente declara una variable de objeto estático al comienzo " "de su archivo::" -#: ../Doc/extending/extending.rst:211 +#: ../Doc/extending/extending.rst:209 msgid "" "and initialize it in your module's initialization function (:c:func:" "`PyInit_spam`) with an exception object::" @@ -443,7 +428,7 @@ msgstr "" "y lo inicializa en la función de inicialización de su módulo (:c:func:" "`PyInit_spam`) con un objeto de excepción::" -#: ../Doc/extending/extending.rst:235 +#: ../Doc/extending/extending.rst:233 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 " @@ -455,7 +440,7 @@ msgstr "" "con la clase base siendo :exc:`Exception` (a menos que se pase otra clase en " "lugar de ``NULL``), descrita en :ref:`bltin-exceptions`." -#: ../Doc/extending/extending.rst:240 +#: ../Doc/extending/extending.rst:238 msgid "" "Note also that the :c:data:`SpamError` variable retains a reference to the " "newly created exception class; this is intentional! Since the exception " @@ -474,7 +459,7 @@ msgstr "" "excepción podría causar un volcado del núcleo u otros efectos secundarios no " "deseados." -#: ../Doc/extending/extending.rst:247 +#: ../Doc/extending/extending.rst:245 msgid "" "We discuss the use of ``PyMODINIT_FUNC`` as a function return type later in " "this sample." @@ -482,7 +467,7 @@ msgstr "" "Discutimos el uso de ``PyMODINIT_FUNC`` como un tipo de retorno de función " "más adelante en esta muestra." -#: ../Doc/extending/extending.rst:250 +#: ../Doc/extending/extending.rst:248 msgid "" "The :exc:`spam.error` exception can be raised in your extension module using " "a call to :c:func:`PyErr_SetString` as shown below::" @@ -491,11 +476,11 @@ msgstr "" "mediante una llamada a :c:func:`PyErr_SetString` como se muestra a " "continuación::" -#: ../Doc/extending/extending.rst:273 +#: ../Doc/extending/extending.rst:271 msgid "Back to the Example" msgstr "De vuelta al ejemplo" -#: ../Doc/extending/extending.rst:275 +#: ../Doc/extending/extending.rst:273 msgid "" "Going back to our example function, you should now be able to understand " "this statement::" @@ -503,7 +488,7 @@ msgstr "" "Volviendo a nuestra función de ejemplo, ahora debería poder comprender esta " "declaración::" -#: ../Doc/extending/extending.rst:281 +#: ../Doc/extending/extending.rst:279 msgid "" "It returns ``NULL`` (the error indicator for functions returning object " "pointers) if an error is detected in the argument list, relying on the " @@ -522,7 +507,7 @@ msgstr "" "variable :c:data:`command` debería declararse correctamente como ``const " "char * command``)." -#: ../Doc/extending/extending.rst:289 +#: ../Doc/extending/extending.rst:287 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`::" @@ -530,7 +515,7 @@ msgstr "" "La siguiente declaración es una llamada a la función Unix :c:func:`system`, " "pasándole la cadena que acabamos de obtener de :c:func:`PyArg_ParseTuple`::" -#: ../Doc/extending/extending.rst:294 +#: ../Doc/extending/extending.rst:292 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`. ::" @@ -539,7 +524,7 @@ msgstr "" "como un objeto Python. Esto se hace usando la función :c:func:" "`PyLong_FromLong`. ::" -#: ../Doc/extending/extending.rst:299 +#: ../Doc/extending/extending.rst:297 msgid "" "In this case, it will return an integer object. (Yes, even integers are " "objects on the heap in Python!)" @@ -547,10 +532,11 @@ msgstr "" "En este caso, retornará un objeto entero. (Sí, ¡incluso los enteros son " "objetos en el montículo (*heap*) en Python!)" -#: ../Doc/extending/extending.rst:302 +#: ../Doc/extending/extending.rst:300 +#, fuzzy msgid "" "If you have a C function that returns no useful argument (a function " -"returning :c:type:`void`), the corresponding Python function must return " +"returning :c:expr:`void`), the corresponding Python function must return " "``None``. You need this idiom to do so (which is implemented by the :c:" "macro:`Py_RETURN_NONE` macro)::" msgstr "" @@ -559,7 +545,7 @@ msgstr "" "``None``. Necesita este modismo para hacerlo (que se implementa mediante la " "macro :c:macro:`Py_RETURN_NONE`)::" -#: ../Doc/extending/extending.rst:310 +#: ../Doc/extending/extending.rst:308 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 " @@ -569,11 +555,11 @@ msgstr "" "Es un objeto genuino de Python en lugar de un puntero ``NULL``, que " "significa \"error\" en la mayoría de los contextos, como hemos visto." -#: ../Doc/extending/extending.rst:318 +#: ../Doc/extending/extending.rst:316 msgid "The Module's Method Table and Initialization Function" msgstr "La tabla de métodos del módulo y la función de inicialización" -#: ../Doc/extending/extending.rst:320 +#: ../Doc/extending/extending.rst:318 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\"::" @@ -582,7 +568,7 @@ msgstr "" "Python. Primero, necesitamos enumerar su nombre y dirección en una \"tabla " "de métodos\"::" -#: ../Doc/extending/extending.rst:331 +#: ../Doc/extending/extending.rst:329 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 " @@ -596,7 +582,7 @@ msgstr "" "| METH_KEYWORDS``; un valor de ``0`` significa que se usa una variante " "obsoleta de :c:func:`PyArg_ParseTuple`." -#: ../Doc/extending/extending.rst:336 +#: ../Doc/extending/extending.rst:334 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:" @@ -607,7 +593,7 @@ msgstr "" "análisis mediante :c:func:`PyArg_ParseTuple`; A continuación se proporciona " "más información sobre esta función." -#: ../Doc/extending/extending.rst:340 +#: ../Doc/extending/extending.rst:338 msgid "" "The :const:`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 " @@ -621,14 +607,14 @@ msgstr "" "diccionario de palabras clave. Use :c:func:`PyArg_ParseTupleAndKeywords` " "para analizar los argumentos de dicha función." -#: ../Doc/extending/extending.rst:346 +#: ../Doc/extending/extending.rst:344 msgid "" "The method table must be referenced in the module definition structure::" msgstr "" "La tabla de métodos debe ser referenciada en la estructura de definición del " "módulo::" -#: ../Doc/extending/extending.rst:357 +#: ../Doc/extending/extending.rst:355 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:" @@ -640,7 +626,7 @@ msgstr "" "func:`PyInit_name`, donde *name* es el nombre del módulo y debe ser el único " "elemento no ``static`` definido en el archivo del módulo::" -#: ../Doc/extending/extending.rst:368 +#: ../Doc/extending/extending.rst:366 msgid "" "Note that PyMODINIT_FUNC declares the function as ``PyObject *`` return " "type, declares any special linkage declarations required by the platform, " @@ -648,10 +634,10 @@ msgid "" msgstr "" "Tenga en cuenta que PyMODINIT_FUNC declara la función como ``PyObject *`` " "tipo de retorno, declara cualquier declaración de vinculación especial " -"requerida por la plataforma, y para C++ declara la función como ``extern \"C" -"\"``." +"requerida por la plataforma, y para C++ declara la función como ``extern " +"\"C\"``." -#: ../Doc/extending/extending.rst:372 +#: ../Doc/extending/extending.rst:370 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 " @@ -676,7 +662,7 @@ msgstr "" "retornar el objeto del módulo a su llamador, para que luego se inserte en " "``sys.modules``." -#: ../Doc/extending/extending.rst:383 +#: ../Doc/extending/extending.rst:381 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` " @@ -689,7 +675,7 @@ msgstr "" "use :c:func:`PyImport_AppendInittab`, seguido opcionalmente por una " "importación del módulo::" -#: ../Doc/extending/extending.rst:427 +#: ../Doc/extending/extending.rst:425 msgid "" "Removing entries from ``sys.modules`` or importing compiled modules into " "multiple interpreters within a process (or following a :c:func:`fork` " @@ -703,7 +689,7 @@ msgstr "" "extensiones de módulos. Los autores de módulos de extensiones deben tener " "precaución al inicializar estructuras de datos internas." -#: ../Doc/extending/extending.rst:433 +#: ../Doc/extending/extending.rst:431 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 " @@ -713,7 +699,7 @@ msgstr "" "Python como :file:`Modules/xxmodule.c`. Este archivo puede usarse como " "plantilla o simplemente leerse como ejemplo." -#: ../Doc/extending/extending.rst:439 +#: ../Doc/extending/extending.rst:437 msgid "" "Unlike our ``spam`` example, ``xxmodule`` uses *multi-phase initialization* " "(new in Python 3.5), where a PyModuleDef structure is returned from " @@ -726,11 +712,11 @@ msgstr "" "deja al maquinaria de importación. Para obtener detalles sobre la " "inicialización múltiples fases, consulte :PEP:`489`." -#: ../Doc/extending/extending.rst:448 +#: ../Doc/extending/extending.rst:446 msgid "Compilation and Linkage" msgstr "Compilación y Enlazamiento" -#: ../Doc/extending/extending.rst:450 +#: ../Doc/extending/extending.rst:448 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 " @@ -747,7 +733,7 @@ msgstr "" "adicional que se refiere solo a la construcción en Windows (capítulo :ref:" "`building-on-windows`)." -#: ../Doc/extending/extending.rst:457 +#: ../Doc/extending/extending.rst:455 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 " @@ -764,7 +750,7 @@ msgstr "" "desempaquetada, agregue una línea al archivo :file:`Modules/Setup.local` que " "describe su archivo:" -#: ../Doc/extending/extending.rst:468 +#: ../Doc/extending/extending.rst:466 msgid "" "and rebuild the interpreter by running :program:`make` in the toplevel " "directory. You can also run :program:`make` in the :file:`Modules/` " @@ -778,7 +764,7 @@ msgstr "" "program:`make` Makefile'. (Esto es necesario cada vez que cambia el archivo :" "file:`Configuración`)." -#: ../Doc/extending/extending.rst:474 +#: ../Doc/extending/extending.rst:472 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:" @@ -786,11 +772,11 @@ msgstr "" "Si su módulo requiere bibliotecas adicionales para vincular, también se " "pueden enumerar en la línea del archivo de configuración, por ejemplo:" -#: ../Doc/extending/extending.rst:485 +#: ../Doc/extending/extending.rst:483 msgid "Calling Python Functions from C" msgstr "Llamando funciones Python desde C" -#: ../Doc/extending/extending.rst:487 +#: ../Doc/extending/extending.rst:485 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 " @@ -809,7 +795,7 @@ msgstr "" "requerirá llamar a las funciones de retrollamada de Python desde una " "retrollamada en C. Otros usos también son imaginables." -#: ../Doc/extending/extending.rst:495 +#: ../Doc/extending/extending.rst:493 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 " @@ -824,7 +810,7 @@ msgstr "" "implementación de la opción de línea de comando :option:`-c` en :file:" "`Modules/main.c` del código fuente de Python.)" -#: ../Doc/extending/extending.rst:501 +#: ../Doc/extending/extending.rst:499 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 " @@ -841,7 +827,7 @@ msgstr "" "parezca. Por ejemplo, la siguiente función podría ser parte de una " "definición de módulo::" -#: ../Doc/extending/extending.rst:531 +#: ../Doc/extending/extending.rst:529 msgid "" "This function must be registered with the interpreter using the :const:" "`METH_VARARGS` flag; this is described in section :ref:`methodtable`. The :" @@ -853,7 +839,7 @@ msgstr "" "función :c:func:`PyArg_ParseTuple` y sus argumentos están documentados en la " "sección :ref:`parsetuple`." -#: ../Doc/extending/extending.rst:536 +#: ../Doc/extending/extending.rst:534 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`` " @@ -866,7 +852,7 @@ msgstr "" "``NULL`` en este contexto). Más información sobre ellos en la sección :ref:" "`refcounts`." -#: ../Doc/extending/extending.rst:543 +#: ../Doc/extending/extending.rst:541 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 " @@ -887,7 +873,7 @@ msgstr "" "su cadena de formato consta de cero o más códigos de formato entre " "paréntesis. Por ejemplo::" -#: ../Doc/extending/extending.rst:563 +#: ../Doc/extending/extending.rst:561 msgid "" ":c:func:`PyObject_CallObject` returns a Python object pointer: this is the " "return value of the Python function. :c:func:`PyObject_CallObject` is " @@ -902,7 +888,7 @@ msgstr "" "cual se le llama :c:func:`Py_DECREF` inmediatamente después de la llamada :c:" "func:`PyObject_CallObject`." -#: ../Doc/extending/extending.rst:570 +#: ../Doc/extending/extending.rst:568 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 " @@ -916,7 +902,7 @@ msgstr "" "global, debería de alguna manera :c:func:`Py_DECREF` el resultado, incluso " "(¡especialmente!) Si no está interesado en su valor." -#: ../Doc/extending/extending.rst:576 +#: ../Doc/extending/extending.rst:574 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 " @@ -935,7 +921,7 @@ msgstr "" "no es posible o deseable, la excepción se debe eliminar llamando a :c:func:" "`PyErr_Clear`. Por ejemplo::" -#: ../Doc/extending/extending.rst:589 +#: ../Doc/extending/extending.rst:587 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 " @@ -957,7 +943,7 @@ msgstr "" "ejemplo, si desea pasar un código de evento integral, puede usar el " "siguiente código::" -#: ../Doc/extending/extending.rst:608 +#: ../Doc/extending/extending.rst:606 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 " @@ -969,7 +955,7 @@ msgstr "" "estrictamente hablando, este código no está completo: :c:func:" "`Py_BuildValue` puede quedarse sin memoria, y esto debe verificarse." -#: ../Doc/extending/extending.rst:612 +#: ../Doc/extending/extending.rst:610 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 " @@ -980,16 +966,16 @@ msgstr "" "palabras clave. Como en el ejemplo anterior, usamos :c:func:`Py_BuildValue` " "para construir el diccionario. ::" -#: ../Doc/extending/extending.rst:630 +#: ../Doc/extending/extending.rst:628 msgid "Extracting Parameters in Extension Functions" msgstr "Extracción de parámetros en funciones de extensión" -#: ../Doc/extending/extending.rst:634 +#: ../Doc/extending/extending.rst:632 msgid "The :c:func:`PyArg_ParseTuple` function is declared as follows::" msgstr "" "La función :c:func:`PyArg_ParseTuple` se declara de la siguiente manera::" -#: ../Doc/extending/extending.rst:638 +#: ../Doc/extending/extending.rst:636 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, " @@ -1004,7 +990,7 @@ msgstr "" "ser direcciones de variables cuyo tipo está determinado por la cadena de " "formato." -#: ../Doc/extending/extending.rst:644 +#: ../Doc/extending/extending.rst:642 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 " @@ -1017,7 +1003,7 @@ msgstr "" "comete errores allí, su código probablemente se bloqueará o al menos " "sobrescribir bits aleatorios en la memoria. ¡Así que ten cuidado!" -#: ../Doc/extending/extending.rst:649 +#: ../Doc/extending/extending.rst:647 msgid "" "Note that any Python object references which are provided to the caller are " "*borrowed* references; do not decrement their reference count!" @@ -1026,22 +1012,22 @@ msgstr "" "a quien llama son referencias prestadas (*borrowed*); ¡no disminuya su " "recuento de referencias!" -#: ../Doc/extending/extending.rst:652 +#: ../Doc/extending/extending.rst:650 msgid "Some example calls::" msgstr "Algunas llamadas de ejemplo::" -#: ../Doc/extending/extending.rst:722 +#: ../Doc/extending/extending.rst:720 msgid "Keyword Parameters for Extension Functions" msgstr "Parámetros de palabras clave para funciones de extensión" -#: ../Doc/extending/extending.rst:726 +#: ../Doc/extending/extending.rst:724 msgid "" "The :c:func:`PyArg_ParseTupleAndKeywords` function is declared as follows::" msgstr "" "La función :c:func:`PyArg_ParseTupleAndKeywords` se declara de la siguiente " "manera::" -#: ../Doc/extending/extending.rst:731 +#: ../Doc/extending/extending.rst:729 msgid "" "The *arg* and *format* parameters are identical to those of the :c:func:" "`PyArg_ParseTuple` function. The *kwdict* parameter is the dictionary of " @@ -1061,7 +1047,7 @@ msgstr "" "`PyArg_ParseTupleAndKeywords` retorna verdadero; de lo contrario, retorna " "falso y genera una excepción apropiada." -#: ../Doc/extending/extending.rst:741 +#: ../Doc/extending/extending.rst:739 msgid "" "Nested tuples cannot be parsed when using keyword arguments! Keyword " "parameters passed in which are not present in the *kwlist* will cause :exc:" @@ -1071,7 +1057,7 @@ msgstr "" "clave! Los parámetros de palabras clave pasados que no están presentes en la " "*kwlist* provocarán que se genere :exc:`TypeError`." -#: ../Doc/extending/extending.rst:747 +#: ../Doc/extending/extending.rst:745 msgid "" "Here is an example module which uses keywords, based on an example by Geoff " "Philbrick (philbrick@hks.com)::" @@ -1079,11 +1065,11 @@ msgstr "" "Aquí hay un módulo de ejemplo que usa palabras clave, basado en un ejemplo " "de *Geoff Philbrick (philbrick@hks.com)*::" -#: ../Doc/extending/extending.rst:802 +#: ../Doc/extending/extending.rst:800 msgid "Building Arbitrary Values" msgstr "Construyendo Valores Arbitrarios" -#: ../Doc/extending/extending.rst:804 +#: ../Doc/extending/extending.rst:802 msgid "" "This function is the counterpart to :c:func:`PyArg_ParseTuple`. It is " "declared as follows::" @@ -1091,7 +1077,7 @@ msgstr "" "Esta función es la contraparte de :c:func:`PyArg_ParseTuple`. Se declara de " "la siguiente manera::" -#: ../Doc/extending/extending.rst:809 +#: ../Doc/extending/extending.rst:807 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, " @@ -1103,7 +1089,7 @@ msgstr "" "función, no de salida) no deben ser punteros, solo valores. Retorna un nuevo " "objeto Python, adecuado para regresar de una función C llamada desde Python." -#: ../Doc/extending/extending.rst:814 +#: ../Doc/extending/extending.rst:812 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 " @@ -1124,18 +1110,18 @@ msgstr "" "Para forzarlo a retornar una tupla de tamaño 0 o uno, agregar paréntesis a " "la cadena de formato." -#: ../Doc/extending/extending.rst:822 +#: ../Doc/extending/extending.rst:820 msgid "" "Examples (to the left the call, to the right the resulting Python value):" msgstr "" "Ejemplos (a la izquierda la llamada, a la derecha el valor de Python " "resultante):" -#: ../Doc/extending/extending.rst:848 +#: ../Doc/extending/extending.rst:846 msgid "Reference Counts" msgstr "Conteo de Referencias" -#: ../Doc/extending/extending.rst:850 +#: ../Doc/extending/extending.rst:848 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 " @@ -1149,7 +1135,7 @@ msgstr "" "operadores ``new`` y ``delete`` se usan esencialmente con el mismo " "significado y restringiremos la siguiente discusión al caso C." -#: ../Doc/extending/extending.rst:856 +#: ../Doc/extending/extending.rst:854 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:" @@ -1175,7 +1161,7 @@ msgstr "" "malas consecuencias que hacer referencia a datos no inicializados: volcados " "de núcleos, resultados incorrectos, bloqueos misteriosos." -#: ../Doc/extending/extending.rst:867 +#: ../Doc/extending/extending.rst:865 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, " @@ -1206,7 +1192,7 @@ msgstr "" "lo tanto, es importante evitar que se produzcan fugas mediante una " "convención o estrategia de codificación que minimice este tipo de errores." -#: ../Doc/extending/extending.rst:880 +#: ../Doc/extending/extending.rst:878 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. " @@ -1224,7 +1210,7 @@ msgstr "" "cuando se elimina una referencia al mismo. Cuando el contador llega a cero, " "la última referencia al objeto se ha eliminado y el objeto se libera." -#: ../Doc/extending/extending.rst:888 +#: ../Doc/extending/extending.rst:886 msgid "" "An alternative strategy is called :dfn:`automatic garbage collection`. " "(Sometimes, reference counting is also referred to as a garbage collection " @@ -1253,7 +1239,7 @@ msgstr "" "automático lo suficientemente portátil estará disponible para C. Hasta " "entonces, tendremos que vivir con recuentos de referencia." -#: ../Doc/extending/extending.rst:900 +#: ../Doc/extending/extending.rst:898 msgid "" "While Python uses the traditional reference counting implementation, it also " "offers a cycle detector that works to detect reference cycles. This allows " @@ -1279,7 +1265,7 @@ msgstr "" "referenciada a partir de los objetos en el ciclo, a pesar de que no hay más " "referencias al ciclo en sí." -#: ../Doc/extending/extending.rst:911 +#: ../Doc/extending/extending.rst:909 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." @@ -1291,11 +1277,11 @@ msgstr "" "(la función :func:`~gc.collect`), así como interfaces de configuración y la " "posibilidad de desactivar el detector en tiempo de ejecución." -#: ../Doc/extending/extending.rst:920 +#: ../Doc/extending/extending.rst:918 msgid "Reference Counting in Python" msgstr "Conteo de Referencias en Python" -#: ../Doc/extending/extending.rst:922 +#: ../Doc/extending/extending.rst:920 msgid "" "There are two macros, ``Py_INCREF(x)`` and ``Py_DECREF(x)``, which handle " "the incrementing and decrementing of the reference count. :c:func:" @@ -1313,7 +1299,7 @@ msgstr "" "propósito (y otros), cada objeto también contiene un puntero a su objeto de " "tipo." -#: ../Doc/extending/extending.rst:929 +#: ../Doc/extending/extending.rst:927 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 " @@ -1336,7 +1322,7 @@ msgstr "" "c:func:`Py_DECREF`. Olvidar deshacerse de una referencia de propiedad crea " "una pérdida de memoria." -#: ../Doc/extending/extending.rst:938 +#: ../Doc/extending/extending.rst:936 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 " @@ -1351,7 +1337,7 @@ msgstr "" "propietario la haya eliminado corre el riesgo de usar memoria liberada y " "debe evitarse por completo [#]_." -#: ../Doc/extending/extending.rst:944 +#: ../Doc/extending/extending.rst:942 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 " @@ -1370,7 +1356,7 @@ msgstr "" "usar después de que el propietario del que se tomó prestado la haya " "eliminado." -#: ../Doc/extending/extending.rst:952 +#: ../Doc/extending/extending.rst:950 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 " @@ -1385,11 +1371,11 @@ msgstr "" "debe disponer de la referencia correctamente, así como el propietario " "anterior)." -#: ../Doc/extending/extending.rst:962 +#: ../Doc/extending/extending.rst:960 msgid "Ownership Rules" msgstr "Reglas de Propiedad" -#: ../Doc/extending/extending.rst:964 +#: ../Doc/extending/extending.rst:962 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 " @@ -1399,7 +1385,7 @@ msgstr "" "parte de la especificación de la interfaz de la función si la propiedad se " "transfiere con la referencia o no." -#: ../Doc/extending/extending.rst:968 +#: ../Doc/extending/extending.rst:966 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 " @@ -1417,7 +1403,7 @@ msgstr "" "objeto. Por ejemplo, :c:func:`PyLong_FromLong` mantiene un caché de valores " "populares y puede retornar una referencia a un elemento en caché." -#: ../Doc/extending/extending.rst:976 +#: ../Doc/extending/extending.rst:974 msgid "" "Many functions that extract objects from other objects also transfer " "ownership with the reference, for instance :c:func:" @@ -1435,7 +1421,7 @@ msgstr "" "referencias retornadas que tomaste prestadas de la tupla, lista o " "diccionario." -#: ../Doc/extending/extending.rst:983 +#: ../Doc/extending/extending.rst:981 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 " @@ -1446,7 +1432,7 @@ msgstr "" "posible porque una referencia de propiedad del objeto se almacena en ``sys." "modules``." -#: ../Doc/extending/extending.rst:987 +#: ../Doc/extending/extending.rst:985 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 " @@ -1465,7 +1451,7 @@ msgstr "" "cuenta que :c:func:`PyDict_SetItem` y sus amigos no se hacen cargo de la " "propiedad --- son \"normales\")" -#: ../Doc/extending/extending.rst:995 +#: ../Doc/extending/extending.rst:993 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 " @@ -1480,7 +1466,7 @@ msgstr "" "transmitirse, debe convertirse en una referencia propia llamando a :c:func:" "`Py_INCREF`." -#: ../Doc/extending/extending.rst:1001 +#: ../Doc/extending/extending.rst:999 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 " @@ -1490,11 +1476,11 @@ msgstr "" "Python debe ser una referencia de propiedad: la propiedad se transfiere de " "la función a su llamador." -#: ../Doc/extending/extending.rst:1009 +#: ../Doc/extending/extending.rst:1007 msgid "Thin Ice" msgstr "Hielo delgado" -#: ../Doc/extending/extending.rst:1011 +#: ../Doc/extending/extending.rst:1009 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 " @@ -1506,7 +1492,7 @@ msgstr "" "invocaciones implícitas del intérprete, lo que puede hacer que el " "propietario de una referencia se deshaga de él." -#: ../Doc/extending/extending.rst:1015 +#: ../Doc/extending/extending.rst:1013 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 " @@ -1516,7 +1502,7 @@ msgstr "" "`Py_DECREF` en un objeto no relacionado mientras toma prestada una " "referencia a un elemento de la lista. Por ejemplo::" -#: ../Doc/extending/extending.rst:1027 +#: ../Doc/extending/extending.rst:1025 msgid "" "This function first borrows a reference to ``list[0]``, then replaces " "``list[1]`` with the value ``0``, and finally prints the borrowed reference. " @@ -1526,7 +1512,7 @@ msgstr "" "reemplaza ``list[1]`` con el valor ``0``, y finalmente imprime la referencia " "prestada. Parece inofensivo, ¿verdad? ¡Pero no lo es!" -#: ../Doc/extending/extending.rst:1031 +#: ../Doc/extending/extending.rst:1029 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 " @@ -1543,7 +1529,7 @@ msgstr "" "instancia de clase tiene un recuento de referencia de 1, al eliminarla " "llamará a su método :meth:`__del__`." -#: ../Doc/extending/extending.rst:1038 +#: ../Doc/extending/extending.rst:1036 msgid "" "Since it is written in Python, the :meth:`__del__` method can execute " "arbitrary Python code. Could it perhaps do something to invalidate the " @@ -1561,7 +1547,7 @@ msgstr "" "este fuera el última referencia a ese objeto, liberaría la memoria asociada " "con él, invalidando así el ``elemento``." -#: ../Doc/extending/extending.rst:1046 +#: ../Doc/extending/extending.rst:1044 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::" @@ -1570,7 +1556,7 @@ msgstr "" "temporalmente el recuento de referencia. La versión correcta de la función " "dice:" -#: ../Doc/extending/extending.rst:1060 +#: ../Doc/extending/extending.rst:1058 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 " @@ -1580,7 +1566,7 @@ msgstr "" "de este error y alguien pasó una cantidad considerable de tiempo en un " "depurador C para descubrir por qué sus métodos :meth:`__del__` fallaban ..." -#: ../Doc/extending/extending.rst:1064 +#: ../Doc/extending/extending.rst:1062 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 " @@ -1603,11 +1589,11 @@ msgstr "" "complete la E/S. Obviamente, la siguiente función tiene el mismo problema " "que la anterior:" -#: ../Doc/extending/extending.rst:1087 +#: ../Doc/extending/extending.rst:1085 msgid "NULL Pointers" msgstr "Punteros NULL" -#: ../Doc/extending/extending.rst:1089 +#: ../Doc/extending/extending.rst:1087 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 " @@ -1627,7 +1613,7 @@ msgstr "" "función --- si cada función probara ``NULL``, habría muchas pruebas " "redundantes y el código correría más lentamente." -#: ../Doc/extending/extending.rst:1097 +#: ../Doc/extending/extending.rst:1095 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 " @@ -1637,7 +1623,7 @@ msgstr "" "puede ser ``NULL``, por ejemplo, de :c:func:`malloc` o de una función que " "puede plantear una excepción." -#: ../Doc/extending/extending.rst:1101 +#: ../Doc/extending/extending.rst:1099 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:" @@ -1647,7 +1633,7 @@ msgstr "" "punteros ``NULL`` --- sin embargo, sus variantes :c:func:`Py_XINCREF` y :c:" "func:`Py_XDECREF` lo hacen." -#: ../Doc/extending/extending.rst:1105 +#: ../Doc/extending/extending.rst:1103 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 " @@ -1661,7 +1647,7 @@ msgstr "" "contra varios tipos esperados diferentes, y esto generaría pruebas " "redundantes. No hay variantes con comprobación ``NULL``." -#: ../Doc/extending/extending.rst:1111 +#: ../Doc/extending/extending.rst:1109 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 " @@ -1671,7 +1657,7 @@ msgstr "" "pasada a las funciones C (``args`` en los ejemplos) nunca sea ``NULL`` --- " "de hecho, garantiza que siempre sea una tupla [#]_." -#: ../Doc/extending/extending.rst:1115 +#: ../Doc/extending/extending.rst:1113 msgid "" "It is a severe error to ever let a ``NULL`` pointer \"escape\" to the Python " "user." @@ -1679,11 +1665,11 @@ msgstr "" "Es un error grave dejar que un puntero ``NULL`` \"escape\" al usuario de " "Python." -#: ../Doc/extending/extending.rst:1126 +#: ../Doc/extending/extending.rst:1124 msgid "Writing Extensions in C++" msgstr "Escribiendo Extensiones en C++" -#: ../Doc/extending/extending.rst:1128 +#: ../Doc/extending/extending.rst:1126 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 " @@ -1706,11 +1692,11 @@ msgstr "" "este formulario si el símbolo ``__cplusplus`` está definido (todos los " "compiladores recientes de C++ definen este símbolo) ." -#: ../Doc/extending/extending.rst:1142 +#: ../Doc/extending/extending.rst:1140 msgid "Providing a C API for an Extension Module" msgstr "Proporcionar una API C para un módulo de extensión" -#: ../Doc/extending/extending.rst:1147 +#: ../Doc/extending/extending.rst:1145 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 " @@ -1729,7 +1715,7 @@ msgstr "" "este nuevo tipo de colección debe tener un conjunto de funciones C para la " "manipulación directa desde otros módulos de extensión." -#: ../Doc/extending/extending.rst:1155 +#: ../Doc/extending/extending.rst:1153 msgid "" "At first sight this seems easy: just write the functions (without declaring " "them ``static``, of course), provide an appropriate header file, and " @@ -1759,7 +1745,7 @@ msgstr "" "símbolos son visibles a nivel mundial, ¡el módulo cuyas funciones uno desea " "llamar podría no haberse cargado todavía!" -#: ../Doc/extending/extending.rst:1167 +#: ../Doc/extending/extending.rst:1165 msgid "" "Portability therefore requires not to make any assumptions about symbol " "visibility. This means that all symbols in extension modules should be " @@ -1776,11 +1762,12 @@ msgstr "" "significa que los símbolos que *deberían* ser accesibles desde otros módulos " "de extensión deben exportarse de una manera diferente." -#: ../Doc/extending/extending.rst:1174 +#: ../Doc/extending/extending.rst:1172 +#, fuzzy 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 " -"data type which stores a pointer (:c:type:`void \\*`). Capsules can only be " +"data type which stores a pointer (:c:expr:`void \\*`). Capsules can only be " "created and accessed via their C API, but they can be passed around like any " "other Python object. In particular, they can be assigned to a name in an " "extension module's namespace. Other extension modules can then import this " @@ -1796,7 +1783,7 @@ msgstr "" "Otros módulos de extensión pueden importar este módulo, recuperar el valor " "de este nombre y luego recuperar el puntero de la Cápsula." -#: ../Doc/extending/extending.rst:1182 +#: ../Doc/extending/extending.rst:1180 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 " @@ -1812,10 +1799,11 @@ msgstr "" "recuperación de los punteros se pueden distribuir de diferentes maneras " "entre el módulo que proporciona el código y los módulos del cliente." -#: ../Doc/extending/extending.rst:1188 +#: ../Doc/extending/extending.rst:1186 +#, fuzzy msgid "" "Whichever method you choose, it's important to name your Capsules properly. " -"The function :c:func:`PyCapsule_New` takes a name parameter (:c:type:`const " +"The function :c:func:`PyCapsule_New` takes a name parameter (:c:expr:`const " "char \\*`); you're permitted to pass in a ``NULL`` name, but we strongly " "encourage you to specify a name. Properly named Capsules provide a degree " "of runtime type-safety; there is no feasible way to tell one unnamed Capsule " @@ -1828,7 +1816,7 @@ msgstr "" "nombradas proporcionan un grado de seguridad de tipo de tiempo de ejecución; " "no hay una manera factible de distinguir una Cápsula sin nombre de otra." -#: ../Doc/extending/extending.rst:1195 +#: ../Doc/extending/extending.rst:1193 msgid "" "In particular, Capsules used to expose C APIs should be given a name " "following this convention::" @@ -1836,7 +1824,7 @@ msgstr "" "En particular, las cápsulas utilizadas para exponer las API de C deben " "recibir un nombre siguiendo esta convención:" -#: ../Doc/extending/extending.rst:1200 +#: ../Doc/extending/extending.rst:1198 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 " @@ -1849,12 +1837,13 @@ msgstr "" "usuarios de C API un alto grado de certeza de que la Cápsula que cargan " "contiene la API de C correcta." -#: ../Doc/extending/extending.rst:1205 +#: ../Doc/extending/extending.rst:1203 +#, fuzzy 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 " "used library modules. It stores all C API pointers (just one in the " -"example!) in an array of :c:type:`void` pointers which becomes the value of " +"example!) in an array of :c:expr:`void` pointers which becomes the value of " "a Capsule. The header file corresponding to the module provides a macro that " "takes care of importing the module and retrieving its C API pointers; client " "modules only have to call this macro before accessing the C API." @@ -1868,7 +1857,7 @@ msgstr "" "el módulo y recuperar sus punteros de API C; Los módulos de cliente solo " "tienen que llamar a esta macro antes de acceder a la API de C." -#: ../Doc/extending/extending.rst:1213 +#: ../Doc/extending/extending.rst:1211 msgid "" "The exporting module is a modification of the :mod:`spam` module from " "section :ref:`extending-simpleexample`. The function :func:`spam.system` " @@ -1884,7 +1873,7 @@ msgstr "" "complicado en realidad (como agregar \"spam\" a cada comando). Esta función :" "c:func:`PySpam_System` también se exporta a otros módulos de extensión." -#: ../Doc/extending/extending.rst:1220 +#: ../Doc/extending/extending.rst:1218 msgid "" "The function :c:func:`PySpam_System` is a plain C function, declared " "``static`` like everything else::" @@ -1892,19 +1881,19 @@ msgstr "" "La función :c:func:`PySpam_System` es una función C simple, declarada " "``static`` como todo lo demás::" -#: ../Doc/extending/extending.rst:1229 +#: ../Doc/extending/extending.rst:1227 msgid "The function :c:func:`spam_system` is modified in a trivial way::" msgstr "La función :c:func:`spam_system` se modifica de manera trivial::" -#: ../Doc/extending/extending.rst:1243 +#: ../Doc/extending/extending.rst:1241 msgid "In the beginning of the module, right after the line ::" msgstr "Al comienzo del módulo, justo después de la línea::" -#: ../Doc/extending/extending.rst:1247 +#: ../Doc/extending/extending.rst:1245 msgid "two more lines must be added::" msgstr "se deben agregar dos líneas más::" -#: ../Doc/extending/extending.rst:1252 +#: ../Doc/extending/extending.rst:1250 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 " @@ -1916,7 +1905,7 @@ msgstr "" "Finalmente, la función de inicialización del módulo debe encargarse de " "inicializar la matriz de punteros de API C::" -#: ../Doc/extending/extending.rst:1282 +#: ../Doc/extending/extending.rst:1280 msgid "" "Note that ``PySpam_API`` is declared ``static``; otherwise the pointer array " "would disappear when :func:`PyInit_spam` terminates!" @@ -1924,7 +1913,7 @@ msgstr "" "Tenga en cuenta que ``PySpam_API`` se declara ``static``; de lo contrario, " "la matriz de punteros desaparecería cuando :func:`PyInit_spam` finalice!" -#: ../Doc/extending/extending.rst:1285 +#: ../Doc/extending/extending.rst:1283 msgid "" "The bulk of the work is in the header file :file:`spammodule.h`, which looks " "like this::" @@ -1932,7 +1921,7 @@ msgstr "" "La mayor parte del trabajo está en el archivo de encabezado :file:" "`spammodule.h`, que se ve así:" -#: ../Doc/extending/extending.rst:1336 +#: ../Doc/extending/extending.rst:1334 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:" @@ -1942,7 +1931,7 @@ msgstr "" "func:`PySpam_System` es llamar a la función (o más bien macro) :c:func:" "`import_spam` en su función de inicialización::" -#: ../Doc/extending/extending.rst:1354 +#: ../Doc/extending/extending.rst:1352 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 " @@ -1952,7 +1941,7 @@ msgstr "" "h` es bastante complicado. Sin embargo, la estructura básica es la misma " "para cada función que se exporta, por lo que solo se debe aprender una vez." -#: ../Doc/extending/extending.rst:1358 +#: ../Doc/extending/extending.rst:1356 msgid "" "Finally it should be mentioned that Capsules offer additional functionality, " "which is especially useful for memory allocation and deallocation of the " @@ -1969,11 +1958,11 @@ msgstr "" "pycapsule.h` y :file:`Objects/pycapsule.c` en la distribución del código " "fuente de Python)." -#: ../Doc/extending/extending.rst:1366 +#: ../Doc/extending/extending.rst:1364 msgid "Footnotes" msgstr "Notas al pie de página" -#: ../Doc/extending/extending.rst:1367 +#: ../Doc/extending/extending.rst:1365 msgid "" "An interface for this function already exists in the standard module :mod:" "`os` --- it was chosen as a simple and straightforward example." @@ -1981,7 +1970,7 @@ msgstr "" "Ya existe una interfaz para esta función en el módulo estándar :mod:`os` --- " "se eligió como un ejemplo simple y directo." -#: ../Doc/extending/extending.rst:1370 +#: ../Doc/extending/extending.rst:1368 msgid "" "The metaphor of \"borrowing\" a reference is not completely correct: the " "owner still has a copy of the reference." @@ -1989,7 +1978,7 @@ msgstr "" "La metáfora de \"pedir prestado\" una referencia no es completamente " "correcta: el propietario todavía tiene una copia de la referencia." -#: ../Doc/extending/extending.rst:1373 +#: ../Doc/extending/extending.rst:1371 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 " @@ -1999,10 +1988,37 @@ msgstr "" "el recuento de referencia en sí podría estar en la memoria liberada y, por " "lo tanto, puede reutilizarse para otro objeto!" -#: ../Doc/extending/extending.rst:1377 +#: ../Doc/extending/extending.rst:1375 msgid "" "These guarantees don't hold when you use the \"old\" style calling " "convention --- this is still found in much existing code." msgstr "" "Estas garantías no se cumplen cuando utiliza la convención de llamadas de " "estilo \"antiguo\", que todavía se encuentra en muchos códigos existentes." + +#~ msgid "" +#~ "An important convention throughout the Python interpreter is the " +#~ "following: when a function fails, it should set an exception condition " +#~ "and return an error value (usually a ``NULL`` pointer). Exceptions are " +#~ "stored in a static global variable inside the interpreter; if this " +#~ "variable is ``NULL`` no exception has occurred. A second global variable " +#~ "stores the \"associated value\" of the exception (the second argument to :" +#~ "keyword:`raise`). A third variable contains the stack traceback in case " +#~ "the error originated in Python code. These three variables are the C " +#~ "equivalents of the result in Python of :meth:`sys.exc_info` (see the " +#~ "section on module :mod:`sys` in the Python Library Reference). It is " +#~ "important to know about them to understand how errors are passed around." +#~ msgstr "" +#~ "Una convención importante en todo el intérprete de Python es la " +#~ "siguiente: cuando una función falla, debe establecer una condición de " +#~ "excepción y retornar un valor de error (generalmente un puntero " +#~ "``NULL``). Las excepciones se almacenan en una variable global estática " +#~ "dentro del intérprete; Si esta variable es ``NULL``, no se ha producido " +#~ "ninguna excepción. Una segunda variable global almacena el \"valor " +#~ "asociado\" de la excepción (el segundo argumento para :keyword:`raise`). " +#~ "Una tercera variable contiene el seguimiento de la pila en caso de que el " +#~ "error se origine en el código Python. Estas tres variables son los " +#~ "equivalentes en C del resultado en Python de :meth:`sys.exc_info` " +#~ "(consulte la sección sobre el módulo :mod:`sys` en la Referencia de la " +#~ "biblioteca de Python). Es importante conocerlos para comprender cómo se " +#~ "transmiten los errores." diff --git a/extending/index.po b/extending/index.po index 43634655a7..5cf56aaebd 100644 --- a/extending/index.po +++ b/extending/index.po @@ -1,23 +1,25 @@ # Copyright (C) 2001-2020, Python Software Foundation # This file is distributed under the same license as the Python package. # Maintained by the python-doc-es workteam. -# docs-es@python.org / https://mail.python.org/mailman3/lists/docs-es.python.org/ -# Check https://github.com/python/python-docs-es/blob/3.8/TRANSLATORS to get the list of volunteers +# docs-es@python.org / +# https://mail.python.org/mailman3/lists/docs-es.python.org/ +# Check https://github.com/python/python-docs-es/blob/3.8/TRANSLATORS to get +# the list of volunteers # msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-05-06 11:59-0400\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2020-06-24 22:38+0200\n" +"Last-Translator: Cristián Maureira-Fredes \n" +"Language: es\n" "Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" +"Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Last-Translator: Cristián Maureira-Fredes \n" -"Language: es\n" -"X-Generator: Poedit 2.3\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/extending/index.rst:5 msgid "Extending and Embedding the Python Interpreter" @@ -70,10 +72,11 @@ msgid "Recommended third party tools" msgstr "Herramientas de terceros recomendadas" #: ../Doc/extending/index.rst:28 +#, fuzzy 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 `_, `cffi `_, `SWIG `_ and `Numba `_ offer both simpler and " "more sophisticated approaches to creating C and C++ extensions for Python." msgstr "" diff --git a/extending/newtypes.po b/extending/newtypes.po index f0dc6dc3ca..42385be284 100644 --- a/extending/newtypes.po +++ b/extending/newtypes.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-10-19 20:28-0500\n" "Last-Translator: Cristián Maureira-Fredes \n" "Language: es\n" @@ -19,8 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/extending/newtypes.rst:7 msgid "Defining Extension Types: Assorted Topics" @@ -127,7 +126,13 @@ msgstr "" "aquí. El objeto en sí mismo necesita ser liberado aquí también. Aquí hay un " "ejemplo de esta función::" -#: ../Doc/extending/newtypes.rst:83 +#: ../Doc/extending/newtypes.rst:79 +msgid "" +"If your type supports garbage collection, the destructor should call :c:func:" +"`PyObject_GC_UnTrack` before clearing any member fields::" +msgstr "" + +#: ../Doc/extending/newtypes.rst:95 msgid "" "One important requirement of the deallocator function is that it leaves any " "pending exceptions alone. This is important since deallocators are " @@ -154,7 +159,7 @@ msgstr "" "la acción insegura y restaurarla cuando haya terminado. Esto se puede hacer " "usando las funciones :c:func:`PyErr_Fetch` y :c:func:`PyErr_Restore`::" -#: ../Doc/extending/newtypes.rst:122 +#: ../Doc/extending/newtypes.rst:134 msgid "" "There are limitations to what you can safely do in a deallocator function. " "First, if your type supports garbage collection (using :c:member:" @@ -177,7 +182,7 @@ msgstr "" "terminar llamando :c:member:`~PyTypeObject.tp_dealloc` nuevamente, causando " "una doble liberación y un bloqueo." -#: ../Doc/extending/newtypes.rst:131 +#: ../Doc/extending/newtypes.rst:143 msgid "" "Starting with Python 3.4, it is recommended not to put any complex " "finalization code in :c:member:`~PyTypeObject.tp_dealloc`, and instead use " @@ -187,15 +192,15 @@ msgstr "" "finalización complejo en :c:member:`~PyTypeObject.tp_dealloc`, y en su lugar " "use el nuevo método de tipo :c:member:`~PyTypeObject.tp_finalize`." -#: ../Doc/extending/newtypes.rst:136 +#: ../Doc/extending/newtypes.rst:148 msgid ":pep:`442` explains the new finalization scheme." msgstr ":pep:`442` explica el nuevo esquema de finalización." -#: ../Doc/extending/newtypes.rst:143 +#: ../Doc/extending/newtypes.rst:155 msgid "Object Presentation" msgstr "Presentación de Objetos" -#: ../Doc/extending/newtypes.rst:145 +#: ../Doc/extending/newtypes.rst:157 msgid "" "In Python, there are two ways to generate a textual representation of an " "object: the :func:`repr` function, and the :func:`str` function. (The :func:" @@ -205,7 +210,7 @@ msgstr "" "objeto: la función :func:`repr`, y la función :func:`str`. (La función :func:" "`print` solo llama a :func:`str`.) Estos controladores son opcionales." -#: ../Doc/extending/newtypes.rst:154 +#: ../Doc/extending/newtypes.rst:166 msgid "" "The :c:member:`~PyTypeObject.tp_repr` handler should return a string object " "containing a representation of the instance for which it is called. Here is " @@ -215,17 +220,18 @@ msgstr "" "cadena que contenga una representación de la instancia para la que se llama. " "Aquí hay un ejemplo simple::" -#: ../Doc/extending/newtypes.rst:165 +#: ../Doc/extending/newtypes.rst:177 +#, fuzzy msgid "" "If no :c:member:`~PyTypeObject.tp_repr` handler is specified, the " "interpreter will supply a representation that uses the type's :c:member:" -"`~PyTypeObject.tp_name` and a uniquely-identifying value for the object." +"`~PyTypeObject.tp_name` and a uniquely identifying value for the object." msgstr "" "Si no se especifica :c:member:`~PyTypeObject.tp_repr`, el intérprete " "proporcionará una representación que utiliza los tipos :c:member:" "`~PyTypeObject.tp_name` y un valor de identificación único para el objeto." -#: ../Doc/extending/newtypes.rst:169 +#: ../Doc/extending/newtypes.rst:181 msgid "" "The :c:member:`~PyTypeObject.tp_str` handler is to :func:`str` what the :c:" "member:`~PyTypeObject.tp_repr` handler described above is to :func:`repr`; " @@ -243,15 +249,15 @@ msgstr "" "consumo humano. Si :c:member:`~PyTypeObject.tp_str` no se especifica, en su " "lugar se utiliza el controlador :c:member:`~PyTypeObject.tp_repr`." -#: ../Doc/extending/newtypes.rst:176 +#: ../Doc/extending/newtypes.rst:188 msgid "Here is a simple example::" msgstr "Aquí hay un ejemplo simple::" -#: ../Doc/extending/newtypes.rst:188 +#: ../Doc/extending/newtypes.rst:200 msgid "Attribute Management" msgstr "Gestión de atributos" -#: ../Doc/extending/newtypes.rst:190 +#: ../Doc/extending/newtypes.rst:202 msgid "" "For every object which can support attributes, the corresponding type must " "provide the functions that control how the attributes are resolved. There " @@ -267,13 +273,14 @@ msgstr "" "atributos). La eliminación de un atributo es un caso especial, para el cual " "el nuevo valor pasado al controlador es ``NULL``." -#: ../Doc/extending/newtypes.rst:196 +#: ../Doc/extending/newtypes.rst:208 +#, fuzzy msgid "" "Python supports two pairs of attribute handlers; a type that supports " "attributes only needs to implement the functions for one pair. The " -"difference is that one pair takes the name of the attribute as a :c:type:" -"`char\\*`, while the other accepts a :c:type:`PyObject\\*`. Each type can " -"use whichever pair makes more sense for the implementation's convenience. ::" +"difference is that one pair takes the name of the attribute as a :c:expr:" +"`char\\*`, while the other accepts a :c:expr:`PyObject*`. Each type can use " +"whichever pair makes more sense for the implementation's convenience. ::" msgstr "" "Python admite dos pares de controladores de atributos; un tipo que admite " "atributos solo necesita implementar las funciones para un par. La diferencia " @@ -281,11 +288,12 @@ msgstr "" "que el otro acepta un :c:type:`PyObject\\*`. Cada tipo puede usar el par que " "tenga más sentido para la conveniencia de la implementación. ::" -#: ../Doc/extending/newtypes.rst:208 +#: ../Doc/extending/newtypes.rst:220 +#, fuzzy msgid "" "If accessing attributes of an object is always a simple operation (this will " "be explained shortly), there are generic implementations which can be used " -"to provide the :c:type:`PyObject\\*` version of the attribute management " +"to provide the :c:expr:`PyObject*` version of the attribute management " "functions. The actual need for type-specific attribute handlers almost " "completely disappeared starting with Python 2.2, though there are many " "examples which have not been updated to use some of the new generic " @@ -299,11 +307,11 @@ msgstr "" "Python 2.2, aunque hay muchos ejemplos que no se han actualizado para " "utilizar algunos de los nuevos mecanismos genéricos que están disponibles." -#: ../Doc/extending/newtypes.rst:219 +#: ../Doc/extending/newtypes.rst:231 msgid "Generic Attribute Management" msgstr "Gestión de atributos genéricos" -#: ../Doc/extending/newtypes.rst:221 +#: ../Doc/extending/newtypes.rst:233 msgid "" "Most extension types only use *simple* attributes. So, what makes the " "attributes simple? There are only a couple of conditions that must be met:" @@ -312,7 +320,7 @@ msgstr "" "¿qué hace que los atributos sean simples? Solo hay un par de condiciones que " "se deben cumplir:" -#: ../Doc/extending/newtypes.rst:224 +#: ../Doc/extending/newtypes.rst:236 msgid "" "The name of the attributes must be known when :c:func:`PyType_Ready` is " "called." @@ -320,7 +328,7 @@ msgstr "" "El nombre de los atributos debe ser conocido cuando :c:func:`PyType_Ready` " "es llamado." -#: ../Doc/extending/newtypes.rst:227 +#: ../Doc/extending/newtypes.rst:239 msgid "" "No special processing is needed to record that an attribute was looked up or " "set, nor do actions need to be taken based on the value." @@ -328,7 +336,7 @@ msgstr "" "No se necesita un procesamiento especial para registrar que un atributo se " "buscó o se configuró, ni se deben tomar acciones basadas en el valor." -#: ../Doc/extending/newtypes.rst:230 +#: ../Doc/extending/newtypes.rst:242 msgid "" "Note that this list does not place any restrictions on the values of the " "attributes, when the values are computed, or how relevant data is stored." @@ -337,7 +345,7 @@ msgstr "" "atributos, cuándo se calculan los valores o cómo se almacenan los datos " "relevantes." -#: ../Doc/extending/newtypes.rst:233 +#: ../Doc/extending/newtypes.rst:245 msgid "" "When :c:func:`PyType_Ready` is called, it uses three tables referenced by " "the type object to create :term:`descriptor`\\s which are placed in the " @@ -357,11 +365,11 @@ msgstr "" "tp_getattro` y los campos :c:member:`~PyTypeObject.tp_setattro` ``NULL`` " "también, permitiendo que el tipo base maneje los atributos." -#: ../Doc/extending/newtypes.rst:241 +#: ../Doc/extending/newtypes.rst:253 msgid "The tables are declared as three fields of the type object::" msgstr "Las tablas se declaran como tres campos del tipo objeto::" -#: ../Doc/extending/newtypes.rst:247 +#: ../Doc/extending/newtypes.rst:259 msgid "" "If :c:member:`~PyTypeObject.tp_methods` is not ``NULL``, it must refer to an " "array of :c:type:`PyMethodDef` structures. Each entry in the table is an " @@ -371,7 +379,7 @@ msgstr "" "arreglo de estructuras :c:type:`PyMethodDef`. Cada entrada en la tabla es " "una instancia de esta estructura::" -#: ../Doc/extending/newtypes.rst:258 +#: ../Doc/extending/newtypes.rst:270 msgid "" "One entry should be defined for each method provided by the type; no entries " "are needed for methods inherited from a base type. One additional entry is " @@ -383,7 +391,7 @@ msgstr "" "necesita una entrada adicional al final; es un centinela el que marca el " "final del arreglo. El campo :attr:`ml_name` del centinela debe ser ``NULL``." -#: ../Doc/extending/newtypes.rst:263 +#: ../Doc/extending/newtypes.rst:275 msgid "" "The second table is used to define attributes which map directly to data " "stored in the instance. A variety of primitive C types are supported, and " @@ -395,7 +403,7 @@ msgstr "" "de tipos C primitivos, y el acceso puede ser de solo lectura o lectura-" "escritura. Las estructuras en la tabla se definen como::" -#: ../Doc/extending/newtypes.rst:275 +#: ../Doc/extending/newtypes.rst:287 msgid "" "For each entry in the table, a :term:`descriptor` will be constructed and " "added to the type which will be able to extract a value from the instance " @@ -413,7 +421,7 @@ msgstr "" "C. El campo :attr:`flags` se usa para almacenar flags que controlan cómo se " "puede acceder al atributo." -#: ../Doc/extending/newtypes.rst:282 +#: ../Doc/extending/newtypes.rst:294 msgid "" "The following flag constants are defined in :file:`structmember.h`; they may " "be combined using bitwise-OR." @@ -421,27 +429,27 @@ msgstr "" "Las siguientes constantes de flag se definen en :file:`structmember.h`; se " "pueden combinar usando OR bit a bit (*bitwise-OR*)." -#: ../Doc/extending/newtypes.rst:286 +#: ../Doc/extending/newtypes.rst:298 msgid "Constant" msgstr "Constante" -#: ../Doc/extending/newtypes.rst:286 +#: ../Doc/extending/newtypes.rst:298 msgid "Meaning" msgstr "Significado" -#: ../Doc/extending/newtypes.rst:288 +#: ../Doc/extending/newtypes.rst:300 msgid ":const:`READONLY`" msgstr ":const:`READONLY`" -#: ../Doc/extending/newtypes.rst:288 +#: ../Doc/extending/newtypes.rst:300 msgid "Never writable." msgstr "Nunca escribible." -#: ../Doc/extending/newtypes.rst:290 +#: ../Doc/extending/newtypes.rst:302 msgid ":const:`PY_AUDIT_READ`" msgstr ":const:`PY_AUDIT_READ`" -#: ../Doc/extending/newtypes.rst:290 +#: ../Doc/extending/newtypes.rst:302 msgid "" "Emit an ``object.__getattr__`` :ref:`audit events ` before " "reading." @@ -449,7 +457,7 @@ msgstr "" "Emite un ``object.__getattr__`` :ref:`audita evento ` antes de " "leer." -#: ../Doc/extending/newtypes.rst:295 +#: ../Doc/extending/newtypes.rst:307 msgid "" ":const:`RESTRICTED`, :const:`READ_RESTRICTED` and :const:`WRITE_RESTRICTED` " "are deprecated. However, :const:`READ_RESTRICTED` is an alias for :const:" @@ -462,7 +470,7 @@ msgstr "" "`RESTRICTED` o :const:`READ_RESTRICTED` también generarán un evento de " "auditoría." -#: ../Doc/extending/newtypes.rst:308 +#: ../Doc/extending/newtypes.rst:320 msgid "" "An interesting advantage of using the :c:member:`~PyTypeObject.tp_members` " "table to build descriptors that are used at runtime is that any attribute " @@ -478,7 +486,7 @@ msgstr "" "puede usar la API de introspección para recuperar el descriptor del objeto " "de clase y obtener el docstring utilizando su atributo :attr:`__doc__`." -#: ../Doc/extending/newtypes.rst:314 +#: ../Doc/extending/newtypes.rst:326 msgid "" "As with the :c:member:`~PyTypeObject.tp_methods` table, a sentinel entry " "with a :attr:`name` value of ``NULL`` is required." @@ -486,15 +494,16 @@ msgstr "" "Al igual que con la tabla :c:member:`~PyTypeObject.tp_methods`, se requiere " "una entrada de centinela con un valor :attr:`name` de ``NULL``." -#: ../Doc/extending/newtypes.rst:328 +#: ../Doc/extending/newtypes.rst:340 msgid "Type-specific Attribute Management" msgstr "Gestión de atributos específicos de tipo" -#: ../Doc/extending/newtypes.rst:330 +#: ../Doc/extending/newtypes.rst:342 +#, fuzzy msgid "" -"For simplicity, only the :c:type:`char\\*` version will be demonstrated " +"For simplicity, only the :c:expr:`char\\*` version will be demonstrated " "here; the type of the name parameter is the only difference between the :c:" -"type:`char\\*` and :c:type:`PyObject\\*` flavors of the interface. This " +"expr:`char\\*` and :c:expr:`PyObject*` flavors of the interface. This " "example effectively does the same thing as the generic example above, but " "does not use the generic support added in Python 2.2. It explains how the " "handler functions are called, so that if you do need to extend their " @@ -508,7 +517,7 @@ msgstr "" "las funciones del controlador, de modo que si necesita ampliar su " "funcionalidad, comprenderá lo que debe hacerse." -#: ../Doc/extending/newtypes.rst:338 +#: ../Doc/extending/newtypes.rst:350 msgid "" "The :c:member:`~PyTypeObject.tp_getattr` handler is called when the object " "requires an attribute look-up. It is called in the same situations where " @@ -518,11 +527,11 @@ msgstr "" "requiere una búsqueda de atributo. Se llama en las mismas situaciones donde " "se llamaría el método :meth:`__getattr__` de una clase." -#: ../Doc/extending/newtypes.rst:342 +#: ../Doc/extending/newtypes.rst:354 msgid "Here is an example::" msgstr "Aquí hay un ejemplo::" -#: ../Doc/extending/newtypes.rst:358 +#: ../Doc/extending/newtypes.rst:370 msgid "" "The :c:member:`~PyTypeObject.tp_setattr` handler is called when the :meth:" "`__setattr__` or :meth:`__delattr__` method of a class instance would be " @@ -538,11 +547,11 @@ msgstr "" "fuera realmente todo lo que deseaba, el controlador :c:member:`~PyTypeObject." "tp_setattr` debería establecerse en ``NULL``. ::" -#: ../Doc/extending/newtypes.rst:372 +#: ../Doc/extending/newtypes.rst:384 msgid "Object Comparison" msgstr "Comparación de Objetos" -#: ../Doc/extending/newtypes.rst:378 +#: ../Doc/extending/newtypes.rst:390 msgid "" "The :c:member:`~PyTypeObject.tp_richcompare` handler is called when " "comparisons are needed. It is analogous to the :ref:`rich comparison " @@ -554,11 +563,12 @@ msgstr "" "`, como :meth:`__lt__`, y también llamado por :c:func:" "`PyObject_RichCompare` y :c:func:`PyObject_RichCompareBool`." -#: ../Doc/extending/newtypes.rst:383 +#: ../Doc/extending/newtypes.rst:395 +#, fuzzy msgid "" "This function is called with two Python objects and the operator as " "arguments, where the operator is one of ``Py_EQ``, ``Py_NE``, ``Py_LE``, " -"``Py_GT``, ``Py_LT`` or ``Py_GT``. It should compare the two objects with " +"``Py_GE``, ``Py_LT`` or ``Py_GT``. It should compare the two objects with " "respect to the specified operator and return ``Py_True`` or ``Py_False`` if " "the comparison is successful, ``Py_NotImplemented`` to indicate that " "comparison is not implemented and the other object's comparison method " @@ -572,7 +582,7 @@ msgstr "" "comparación no está implementada y el método de comparación del otro objeto " "debería intentarse, o ``NULL`` si se estableció una excepción." -#: ../Doc/extending/newtypes.rst:391 +#: ../Doc/extending/newtypes.rst:403 msgid "" "Here is a sample implementation, for a datatype that is considered equal if " "the size of an internal pointer is equal::" @@ -580,11 +590,11 @@ msgstr "" "Aquí hay una implementación de muestra, para un tipo de datos que se " "considera igual si el tamaño de un puntero interno es igual:" -#: ../Doc/extending/newtypes.rst:421 +#: ../Doc/extending/newtypes.rst:433 msgid "Abstract Protocol Support" msgstr "Soporte de protocolo abstracto" -#: ../Doc/extending/newtypes.rst:423 +#: ../Doc/extending/newtypes.rst:435 msgid "" "Python supports a variety of *abstract* 'protocols;' the specific interfaces " "provided to use these interfaces are documented in :ref:`abstract`." @@ -593,7 +603,7 @@ msgstr "" "específicas proporcionadas para usar estas interfaces están documentadas en :" "ref:`abstract`." -#: ../Doc/extending/newtypes.rst:427 +#: ../Doc/extending/newtypes.rst:439 msgid "" "A number of these abstract interfaces were defined early in the development " "of the Python implementation. In particular, the number, mapping, and " @@ -621,7 +631,7 @@ msgstr "" "indicador puede establecerse para indicar la presencia de un intervalo, pero " "un intervalo aún puede estar vacío.)::" -#: ../Doc/extending/newtypes.rst:442 +#: ../Doc/extending/newtypes.rst:454 msgid "" "If you wish your object to be able to act like a number, a sequence, or a " "mapping object, then you place the address of a structure that implements " @@ -639,7 +649,7 @@ msgstr "" "de cada uno de estos en el directorio :file:`Objects` de la distribución " "fuente de Python. ::" -#: ../Doc/extending/newtypes.rst:451 +#: ../Doc/extending/newtypes.rst:463 msgid "" "This function, if you choose to provide it, should return a hash number for " "an instance of your data type. Here is a simple example::" @@ -647,7 +657,7 @@ msgstr "" "Esta función, si elige proporcionarla, debería retornar un número hash para " "una instancia de su tipo de datos. Aquí hay un ejemplo simple::" -#: ../Doc/extending/newtypes.rst:464 +#: ../Doc/extending/newtypes.rst:476 msgid "" ":c:type:`Py_hash_t` is a signed integer type with a platform-varying width. " "Returning ``-1`` from :c:member:`~PyTypeObject.tp_hash` indicates an error, " @@ -659,7 +669,7 @@ msgstr "" "tp_hash` indica un error, por lo que debe tener cuidado de evitar retornarlo " "cuando el cálculo de hash sea exitoso, como se vio anteriormente." -#: ../Doc/extending/newtypes.rst:473 +#: ../Doc/extending/newtypes.rst:485 msgid "" "This function is called when an instance of your data type is \"called\", " "for example, if ``obj1`` is an instance of your data type and the Python " @@ -671,11 +681,11 @@ msgstr "" "Python contiene ``obj1('hello')``, el controlador :c:member:`~PyTypeObject." "tp_call` se invoca." -#: ../Doc/extending/newtypes.rst:477 +#: ../Doc/extending/newtypes.rst:489 msgid "This function takes three arguments:" msgstr "Esta función toma tres argumentos:" -#: ../Doc/extending/newtypes.rst:479 +#: ../Doc/extending/newtypes.rst:491 msgid "" "*self* is the instance of the data type which is the subject of the call. If " "the call is ``obj1('hello')``, then *self* is ``obj1``." @@ -683,7 +693,7 @@ msgstr "" "*self* es la instancia del tipo de datos que es el sujeto de la llamada. Si " "la llamada es ``obj1('hola')``, entonces *self* es ``obj1``." -#: ../Doc/extending/newtypes.rst:482 +#: ../Doc/extending/newtypes.rst:494 msgid "" "*args* is a tuple containing the arguments to the call. You can use :c:func:" "`PyArg_ParseTuple` to extract the arguments." @@ -691,7 +701,7 @@ msgstr "" "*args* es una tupla que contiene los argumentos de la llamada. Puede usar :c:" "func:`PyArg_ParseTuple` para extraer los argumentos." -#: ../Doc/extending/newtypes.rst:485 +#: ../Doc/extending/newtypes.rst:497 msgid "" "*kwds* is a dictionary of keyword arguments that were passed. If this is non-" "``NULL`` and you support keyword arguments, use :c:func:" @@ -706,11 +716,11 @@ msgstr "" "`TypeError` con un mensaje que indique que los argumentos de palabras clave " "no son compatibles." -#: ../Doc/extending/newtypes.rst:491 +#: ../Doc/extending/newtypes.rst:503 msgid "Here is a toy ``tp_call`` implementation::" msgstr "Aquí hay una implementación de juguete ``tp_call``::" -#: ../Doc/extending/newtypes.rst:517 +#: ../Doc/extending/newtypes.rst:529 msgid "" "These functions provide support for the iterator protocol. Both handlers " "take exactly one parameter, the instance for which they are being called, " @@ -728,7 +738,7 @@ msgstr "" "member:`~PyTypeObject.tp_iternext` corresponde al método Python :meth:" "`~iterator.__next__`." -#: ../Doc/extending/newtypes.rst:524 +#: ../Doc/extending/newtypes.rst:536 msgid "" "Any :term:`iterable` object must implement the :c:member:`~PyTypeObject." "tp_iter` handler, which must return an :term:`iterator` object. Here the " @@ -738,7 +748,7 @@ msgstr "" "`~PyTypeObject.tp_iter`, que debe retornar un objeto :term:`iterator`. Aquí " "se aplican las mismas pautas que para las clases de Python:" -#: ../Doc/extending/newtypes.rst:528 +#: ../Doc/extending/newtypes.rst:540 msgid "" "For collections (such as lists and tuples) which can support multiple " "independent iterators, a new iterator should be created and returned by each " @@ -748,7 +758,7 @@ msgstr "" "iteradores independientes, cada llamada debe crear y retornar un nuevo " "iterador a :c:member:`~PyTypeObject.tp_iter`." -#: ../Doc/extending/newtypes.rst:531 +#: ../Doc/extending/newtypes.rst:543 msgid "" "Objects which can only be iterated over once (usually due to side effects of " "iteration, such as file objects) can implement :c:member:`~PyTypeObject." @@ -761,7 +771,7 @@ msgstr "" "referencia a ellos mismos y, por lo tanto, también deben implementar el " "manejador :c:member:`~PyTypeObject.tp_iternext`." -#: ../Doc/extending/newtypes.rst:536 +#: ../Doc/extending/newtypes.rst:548 msgid "" "Any :term:`iterator` object should implement both :c:member:`~PyTypeObject." "tp_iter` and :c:member:`~PyTypeObject.tp_iternext`. An iterator's :c:member:" @@ -787,11 +797,11 @@ msgstr "" "mejor. Si se produce un error real, :c:member:`~PyTypeObject.tp_iternext` " "siempre debe establecer una excepción y retornar ``NULL``." -#: ../Doc/extending/newtypes.rst:552 +#: ../Doc/extending/newtypes.rst:564 msgid "Weak Reference Support" msgstr "Soporte de referencia débil" -#: ../Doc/extending/newtypes.rst:554 +#: ../Doc/extending/newtypes.rst:566 msgid "" "One of the goals of Python's weak reference implementation is to allow any " "type to participate in the weak reference mechanism without incurring the " @@ -802,11 +812,11 @@ msgstr "" "sin incurrir en la sobrecarga de objetos críticos para el rendimiento (como " "los números)." -#: ../Doc/extending/newtypes.rst:559 +#: ../Doc/extending/newtypes.rst:571 msgid "Documentation for the :mod:`weakref` module." msgstr "Documentación para el módulo :mod:`weakref`." -#: ../Doc/extending/newtypes.rst:561 +#: ../Doc/extending/newtypes.rst:573 msgid "" "For an object to be weakly referencable, the extension type must do two " "things:" @@ -814,9 +824,10 @@ msgstr "" "Para que un objeto sea débilmente referenciable, el tipo de extensión debe " "hacer dos cosas:" -#: ../Doc/extending/newtypes.rst:563 +#: ../Doc/extending/newtypes.rst:575 +#, fuzzy msgid "" -"Include a :c:type:`PyObject\\*` field in the C object structure dedicated to " +"Include a :c:expr:`PyObject*` field in the C object structure dedicated to " "the weak reference mechanism. The object's constructor should leave it " "``NULL`` (which is automatic when using the default :c:member:`~PyTypeObject." "tp_alloc`)." @@ -826,7 +837,7 @@ msgstr "" "dejarlo ``NULL`` (que es automático cuando se usa el valor predeterminado :c:" "member:`~PyTypeObject.tp_alloc`)." -#: ../Doc/extending/newtypes.rst:568 +#: ../Doc/extending/newtypes.rst:580 msgid "" "Set the :c:member:`~PyTypeObject.tp_weaklistoffset` type member to the " "offset of the aforementioned field in the C object structure, so that the " @@ -836,7 +847,7 @@ msgstr "" "el desplazamiento del campo mencionado anteriormente en la estructura del " "objeto C, para que el intérprete sepa cómo acceder y modificar ese campo." -#: ../Doc/extending/newtypes.rst:572 +#: ../Doc/extending/newtypes.rst:584 msgid "" "Concretely, here is how a trivial object structure would be augmented with " "the required field::" @@ -844,12 +855,13 @@ msgstr "" "Concretamente, así es como una estructura de objeto trivial se aumentaría " "con el campo requerido::" -#: ../Doc/extending/newtypes.rst:580 -msgid "And the corresponding member in the statically-declared type object::" +#: ../Doc/extending/newtypes.rst:592 +#, fuzzy +msgid "And the corresponding member in the statically declared type object::" msgstr "" "Y el miembro correspondiente en el objeto de tipo declarado estáticamente::" -#: ../Doc/extending/newtypes.rst:588 +#: ../Doc/extending/newtypes.rst:600 msgid "" "The only further addition is that ``tp_dealloc`` needs to clear any weak " "references (by calling :c:func:`PyObject_ClearWeakRefs`) if the field is non-" @@ -859,11 +871,11 @@ msgstr "" "referencia débil (llamando a :c:func:`PyObject_ClearWeakRefs`) si el campo " "no es ``NULL`` ::" -#: ../Doc/extending/newtypes.rst:604 +#: ../Doc/extending/newtypes.rst:616 msgid "More Suggestions" msgstr "Más Sugerencias" -#: ../Doc/extending/newtypes.rst:606 +#: ../Doc/extending/newtypes.rst:618 msgid "" "In order to learn how to implement any specific method for your new data " "type, get the :term:`CPython` source code. Go to the :file:`Objects` " @@ -877,7 +889,7 @@ msgstr "" "desee (por ejemplo, ``tp_richcompare``). Encontrará ejemplos de la función " "que desea implementar." -#: ../Doc/extending/newtypes.rst:612 +#: ../Doc/extending/newtypes.rst:624 msgid "" "When you need to verify that an object is a concrete instance of the type " "you are implementing, use the :c:func:`PyObject_TypeCheck` function. A " @@ -887,21 +899,21 @@ msgstr "" "que está implementando, use la función :c:func:`PyObject_TypeCheck`. Una " "muestra de su uso podría ser algo como lo siguiente::" -#: ../Doc/extending/newtypes.rst:623 +#: ../Doc/extending/newtypes.rst:635 msgid "Download CPython source releases." msgstr "Descargue las versiones de origen de CPython." -#: ../Doc/extending/newtypes.rst:623 +#: ../Doc/extending/newtypes.rst:635 msgid "https://www.python.org/downloads/source/" msgstr "https://www.python.org/downloads/source/" -#: ../Doc/extending/newtypes.rst:625 +#: ../Doc/extending/newtypes.rst:637 msgid "" "The CPython project on GitHub, where the CPython source code is developed." msgstr "" "El proyecto CPython en GitHub, donde se desarrolla el código fuente de " "CPython." -#: ../Doc/extending/newtypes.rst:626 +#: ../Doc/extending/newtypes.rst:638 msgid "https://github.com/python/cpython" msgstr "https://github.com/python/cpython" diff --git a/extending/newtypes_tutorial.po b/extending/newtypes_tutorial.po index 01cde9ccd6..49fe4dd427 100644 --- a/extending/newtypes_tutorial.po +++ b/extending/newtypes_tutorial.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-11-12 10:39+0800\n" "Last-Translator: Rodrigo Tobar \n" "Language: es\n" @@ -19,8 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/extending/newtypes_tutorial.rst:7 msgid "Defining Extension Types: Tutorial" @@ -46,9 +45,10 @@ msgid "The Basics" msgstr "Lo Básico" #: ../Doc/extending/newtypes_tutorial.rst:26 +#, fuzzy msgid "" "The :term:`CPython` runtime sees all Python objects as variables of type :c:" -"type:`PyObject\\*`, which serves as a \"base type\" for all Python objects. " +"expr:`PyObject*`, which serves as a \"base type\" for all Python objects. " "The :c:type:`PyObject` structure itself only contains the object's :term:" "`reference count` and a pointer to the object's \"type object\". This is " "where the action is; the type object determines which (C) functions get " @@ -59,11 +59,11 @@ msgstr "" "El tiempo de ejecución :term:`CPython` ve todos los objetos de Python como " "variables de tipo :c:type:`PyObject\\*`, que sirve como un \"tipo base\" " "para todos los objetos de Python. La estructura :c:type:`PyObject` solo " -"contiene el :term:`reference count` del objeto y un puntero al \"objeto tipo" -"\" del objeto. Aquí es donde está la acción; el objeto tipo determina qué " -"funciones (C) llama el intérprete cuando, por ejemplo, se busca un atributo " -"en un objeto, se llama un método o se multiplica por otro objeto. Estas " -"funciones de C se denominan \"métodos de tipo\"." +"contiene el :term:`reference count` del objeto y un puntero al \"objeto " +"tipo\" del objeto. Aquí es donde está la acción; el objeto tipo determina " +"qué funciones (C) llama el intérprete cuando, por ejemplo, se busca un " +"atributo en un objeto, se llama un método o se multiplica por otro objeto. " +"Estas funciones de C se denominan \"métodos de tipo\"." #: ../Doc/extending/newtypes_tutorial.rst:35 msgid "" @@ -137,12 +137,13 @@ msgid "The first bit is::" msgstr "La primera parte es::" #: ../Doc/extending/newtypes_tutorial.rst:67 +#, fuzzy 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 " "type :c:type:`PyObject`, containing a pointer to a type object and a " -"reference count (these can be accessed using the macros :c:macro:`Py_REFCNT` " -"and :c:macro:`Py_TYPE` respectively). The reason for the macro is to " +"reference count (these can be accessed using the macros :c:macro:`Py_TYPE` " +"and :c:macro:`Py_REFCNT` respectively). The reason for the macro is to " "abstract away the layout and to enable additional fields in :ref:`debug " "builds `." msgstr "" @@ -841,12 +842,13 @@ msgid "" "getter and setter functions that decide the attribute to get or set based on " "data in the closure.)" msgstr "" -"La función *getter* se pasa al objeto :class:`Custom` y un \"cierre" -"\" (*closure*), que es un puntero nulo. En este caso, se ignora el cierre. " -"(El cierre admite un uso avanzado en el que los datos de definición se pasan " -"al captador y al definidor. Esto podría, por ejemplo, usarse para permitir " -"un solo conjunto de funciones de captador y definidor que deciden que el " -"atributo se obtenga o establezca en función de los datos en el cierre.)" +"La función *getter* se pasa al objeto :class:`Custom` y un " +"\"cierre\" (*closure*), que es un puntero nulo. En este caso, se ignora el " +"cierre. (El cierre admite un uso avanzado en el que los datos de definición " +"se pasan al captador y al definidor. Esto podría, por ejemplo, usarse para " +"permitir un solo conjunto de funciones de captador y definidor que deciden " +"que el atributo se obtenga o establezca en función de los datos en el " +"cierre.)" #: ../Doc/extending/newtypes_tutorial.rst:587 msgid "" @@ -874,9 +876,9 @@ msgid "" "mentioned above. In this case, we aren't using a closure, so we just pass " "``NULL``." msgstr "" -"El último elemento en la estructura :c:type:`PyGetSetDef` es el \"cierre" -"\" (*closure*) mencionado anteriormente. En este caso, no estamos usando un " -"cierre, por lo que simplemente pasamos ``NULL``." +"El último elemento en la estructura :c:type:`PyGetSetDef` es el " +"\"cierre\" (*closure*) mencionado anteriormente. En este caso, no estamos " +"usando un cierre, por lo que simplemente pasamos ``NULL``." #: ../Doc/extending/newtypes_tutorial.rst:609 msgid "We also remove the member definitions for these attributes::" diff --git a/extending/windows.po b/extending/windows.po index ee5192224b..0efba4512f 100644 --- a/extending/windows.po +++ b/extending/windows.po @@ -1,23 +1,25 @@ # Copyright (C) 2001-2020, Python Software Foundation # This file is distributed under the same license as the Python package. # Maintained by the python-doc-es workteam. -# docs-es@python.org / https://mail.python.org/mailman3/lists/docs-es.python.org/ -# Check https://github.com/python/python-docs-es/blob/3.8/TRANSLATORS to get the list of volunteers +# docs-es@python.org / +# https://mail.python.org/mailman3/lists/docs-es.python.org/ +# Check https://github.com/python/python-docs-es/blob/3.8/TRANSLATORS to get +# the list of volunteers # msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-05-06 11:59-0400\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2020-06-24 22:59+0200\n" +"Last-Translator: Cristián Maureira-Fredes \n" +"Language: es\n" "Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" +"Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Last-Translator: Cristián Maureira-Fredes \n" -"Language: es\n" -"X-Generator: Poedit 2.3\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/extending/windows.rst:8 msgid "Building C and C++ Extensions on Windows" @@ -218,16 +220,16 @@ msgid "Using DLLs in Practice" msgstr "Usar DLL en la práctica" #: ../Doc/extending/windows.rst:108 +#, fuzzy msgid "" "Windows Python is built in Microsoft Visual C++; using other compilers may " -"or may not work (though Borland seems to). The rest of this section is MSVC+" -"+ specific." +"or may not work. The rest of this section is MSVC++ specific." msgstr "" "Windows Python está construido en Microsoft Visual C++; el uso de otros " "compiladores puede o no funcionar (aunque Borland parece funcionar). El " "resto de esta sección es específica de MSVC++." -#: ../Doc/extending/windows.rst:112 +#: ../Doc/extending/windows.rst:111 msgid "" "When creating DLLs in Windows, you must pass :file:`pythonXY.lib` to the " "linker. To build two DLLs, spam and ni (which uses C functions found in " @@ -237,7 +239,7 @@ msgstr "" "enlazador. Para construir dos DLL, spam y ni (que usa funciones C que se " "encuentran en el spam), puede usar estos comandos::" -#: ../Doc/extending/windows.rst:119 +#: ../Doc/extending/windows.rst:118 msgid "" "The first command created three files: :file:`spam.obj`, :file:`spam.dll` " "and :file:`spam.lib`. :file:`Spam.dll` does not contain any Python " @@ -249,7 +251,7 @@ msgstr "" "(como :c:func:`PyArg_ParseTuple`), pero sabe cómo encontrar el código de " "Python gracias a :file:`pythonXY.lib`." -#: ../Doc/extending/windows.rst:124 +#: ../Doc/extending/windows.rst:123 msgid "" "The second command created :file:`ni.dll` (and :file:`.obj` and :file:`." "lib`), which knows how to find the necessary functions from spam, and also " @@ -259,7 +261,7 @@ msgstr "" "sabe cómo encontrar las funciones necesarias del spam, y también del " "ejecutable de Python." -#: ../Doc/extending/windows.rst:128 +#: ../Doc/extending/windows.rst:127 msgid "" "Not every identifier is exported to the lookup table. If you want any other " "modules (including Python) to be able to see your identifiers, you have to " @@ -271,7 +273,7 @@ msgstr "" "debe decir ``_declspec(dllexport)``, como en ``void _declspec(dllexport) " "initspam(void)`` o ``PyObject_declspec(dllexport) *NiGetSpamData(void)``." -#: ../Doc/extending/windows.rst:133 +#: ../Doc/extending/windows.rst:132 msgid "" "Developer Studio will throw in a lot of import libraries that you do not " "really need, adding about 100K to your executable. To get rid of them, use " diff --git a/faq/design.po b/faq/design.po index 030c5bc006..8099b9dcfa 100644 --- a/faq/design.po +++ b/faq/design.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-10-22 14:43+0100\n" "Last-Translator: Claudia Millan \n" "Language: es\n" @@ -19,8 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/faq/design.rst:3 msgid "Design and History FAQ" @@ -317,8 +316,9 @@ msgid "Starting in Python 3.8, you can!" msgstr "¡A partir de Python 3.8, se puede!" #: ../Doc/faq/design.rst:158 +#, fuzzy msgid "" -"Assignment expressions using the walrus operator `:=` assign a variable in " +"Assignment expressions using the walrus operator ``:=`` assign a variable in " "an expression::" msgstr "" "Asignación de expresiones usando el operador de morsa `:=` asigna una " @@ -516,7 +516,7 @@ msgstr "" "posibilidades, puede crear un diccionario que asigne valores de casos a " "funciones para llamar. Por ejemplo::" -#: ../Doc/faq/design.rst:279 +#: ../Doc/faq/design.rst:276 msgid "" "For calling methods on objects, you can simplify yet further by using the :" "func:`getattr` built-in to retrieve methods with a particular name::" @@ -524,7 +524,7 @@ msgstr "" "Para invocar métodos en objetos, puede simplificar aún más utilizando :func:" "`getattr` incorporado para recuperar métodos con un nombre particular::" -#: ../Doc/faq/design.rst:291 +#: ../Doc/faq/design.rst:288 msgid "" "It's suggested that you use a prefix for the method names, such as " "``visit_`` in this example. Without such a prefix, if values are coming " @@ -536,7 +536,7 @@ msgstr "" "una fuente no confiable, un atacante podría invocar cualquier método en su " "objeto." -#: ../Doc/faq/design.rst:297 +#: ../Doc/faq/design.rst:294 msgid "" "Can't you emulate threads in the interpreter instead of relying on an OS-" "specific thread implementation?" @@ -544,7 +544,7 @@ msgstr "" "¿No puede emular hilos en el intérprete en lugar de confiar en una " "implementación de hilos específica del sistema operativo?" -#: ../Doc/faq/design.rst:299 +#: ../Doc/faq/design.rst:296 msgid "" "Answer 1: Unfortunately, the interpreter pushes at least one C stack frame " "for each Python stack frame. Also, extensions can call back into Python at " @@ -557,7 +557,7 @@ msgstr "" "implementación completa de subprocesos requiere soporte de subprocesos para " "C." -#: ../Doc/faq/design.rst:304 +#: ../Doc/faq/design.rst:301 msgid "" "Answer 2: Fortunately, there is `Stackless Python `_, which has a completely redesigned " @@ -567,11 +567,11 @@ msgstr "" "stackless-dev/stackless/wiki>`_, que tiene un bucle de intérprete " "completamente rediseñado que evita la pila C." -#: ../Doc/faq/design.rst:309 +#: ../Doc/faq/design.rst:306 msgid "Why can't lambda expressions contain statements?" msgstr "¿Por qué las expresiones lambda no pueden contener sentencias?" -#: ../Doc/faq/design.rst:311 +#: ../Doc/faq/design.rst:308 msgid "" "Python lambda expressions cannot contain statements because Python's " "syntactic framework can't handle statements nested inside expressions. " @@ -586,11 +586,12 @@ msgstr "" "funcionalidad, las lambdas de Python son solo una notación abreviada si eres " "demasiado vago para definir una función." -#: ../Doc/faq/design.rst:317 +#: ../Doc/faq/design.rst:314 +#, fuzzy msgid "" "Functions are already first class objects in Python, and can be declared in " "a local scope. Therefore the only advantage of using a lambda instead of a " -"locally-defined function is that you don't need to invent a name for the " +"locally defined function is that you don't need to invent a name for the " "function -- but that's just a local variable to which the function object " "(which is exactly the same type of object that a lambda expression yields) " "is assigned!" @@ -602,17 +603,17 @@ msgstr "" "objeto de función (que es exactamente el mismo tipo de se asigna un objeto " "que produce una expresión lambda)" -#: ../Doc/faq/design.rst:325 +#: ../Doc/faq/design.rst:322 msgid "Can Python be compiled to machine code, C or some other language?" msgstr "¿Se puede compilar Python en código máquina, C o algún otro lenguaje?" -#: ../Doc/faq/design.rst:327 +#: ../Doc/faq/design.rst:324 +#, fuzzy msgid "" -"`Cython `_ compiles a modified version of Python with " -"optional annotations into C extensions. `Nuitka `_ " +"`Cython `_ compiles a modified version of Python with " +"optional annotations into C extensions. `Nuitka `_ " "is an up-and-coming compiler of Python into C++ code, aiming to support the " -"full Python language. For compiling to Java you can consider `VOC `_." +"full Python language." msgstr "" "`Cython `_ compila una versión modificada de Python con " "anotaciones opcionales en extensiones C. `Nuitka `_ " @@ -620,11 +621,11 @@ msgstr "" "soportar el lenguaje completo de Python. Para compilar en Java puede " "considerar `VOC `_." -#: ../Doc/faq/design.rst:335 +#: ../Doc/faq/design.rst:331 msgid "How does Python manage memory?" msgstr "¿Cómo gestiona Python la memoria?" -#: ../Doc/faq/design.rst:337 +#: ../Doc/faq/design.rst:333 msgid "" "The details of Python memory management depend on the implementation. The " "standard implementation of Python, :term:`CPython`, uses reference counting " @@ -643,11 +644,12 @@ msgstr "" "proporciona funciones para realizar una recolección de basura, obtener " "estadísticas de depuración y ajustar los parámetros del recolector." -#: ../Doc/faq/design.rst:345 +#: ../Doc/faq/design.rst:341 +#, fuzzy msgid "" -"Other implementations (such as `Jython `_ or `PyPy " -"`_), however, can rely on a different mechanism such as " -"a full-blown garbage collector. This difference can cause some subtle " +"Other implementations (such as `Jython `_ or `PyPy " +"`_), however, can rely on a different mechanism such " +"as a full-blown garbage collector. This difference can cause some subtle " "porting problems if your Python code depends on the behavior of the " "reference counting implementation." msgstr "" @@ -657,7 +659,7 @@ msgstr "" "sutiles de portabilidad si su código de Python depende del comportamiento de " "la implementación de conteo de referencias." -#: ../Doc/faq/design.rst:351 +#: ../Doc/faq/design.rst:347 msgid "" "In some Python implementations, the following code (which is fine in " "CPython) will probably run out of file descriptors::" @@ -665,7 +667,7 @@ msgstr "" "En algunas implementaciones de Python, el siguiente código (que está bien en " "CPython) probablemente se quedará sin descriptores de archivo::" -#: ../Doc/faq/design.rst:358 +#: ../Doc/faq/design.rst:354 msgid "" "Indeed, using CPython's reference counting and destructor scheme, each new " "assignment to *f* closes the previous file. With a traditional GC, however, " @@ -677,7 +679,7 @@ msgstr "" "embargo, con un GC tradicional, esos objetos de archivo solo se recopilarán " "(y cerrarán) a intervalos variables y posiblemente largos." -#: ../Doc/faq/design.rst:363 +#: ../Doc/faq/design.rst:359 msgid "" "If you want to write code that will work with any Python implementation, you " "should explicitly close the file or use the :keyword:`with` statement; this " @@ -688,13 +690,13 @@ msgstr "" "keyword:`with`; esto funcionará independientemente del esquema de " "administración de memoria::" -#: ../Doc/faq/design.rst:373 +#: ../Doc/faq/design.rst:369 msgid "Why doesn't CPython use a more traditional garbage collection scheme?" msgstr "" "¿Por qué CPython no utiliza un esquema de recolección de basura más " "tradicional?" -#: ../Doc/faq/design.rst:375 +#: ../Doc/faq/design.rst:371 msgid "" "For one thing, this is not a C standard feature and hence it's not portable. " "(Yes, we know about the Boehm GC library. It has bits of assembler code for " @@ -709,7 +711,7 @@ msgstr "" "completamente transparente; se requieren parches para obtener Python para " "trabajar con eso)" -#: ../Doc/faq/design.rst:381 +#: ../Doc/faq/design.rst:377 msgid "" "Traditional GC also becomes a problem when Python is embedded into other " "applications. While in a standalone Python it's fine to replace the " @@ -726,11 +728,11 @@ msgstr "" "quiero a Python. En este momento, CPython funciona con todo lo que " "implementa malloc() y free() correctamente." -#: ../Doc/faq/design.rst:390 +#: ../Doc/faq/design.rst:386 msgid "Why isn't all memory freed when CPython exits?" msgstr "¿Por qué no se libera toda la memoria cuando sale CPython?" -#: ../Doc/faq/design.rst:392 +#: ../Doc/faq/design.rst:388 msgid "" "Objects referenced from the global namespaces of Python modules are not " "always deallocated when Python exits. This may happen if there are circular " @@ -747,7 +749,7 @@ msgstr "" "Python es, sin embargo, agresivo sobre la limpieza de la memoria al salir e " "intenta destruir cada objeto." -#: ../Doc/faq/design.rst:399 +#: ../Doc/faq/design.rst:395 msgid "" "If you want to force Python to delete certain things on deallocation use " "the :mod:`atexit` module to run a function that will force those deletions." @@ -756,11 +758,11 @@ msgstr "" "el módulo :mod:`atexit` para ejecutar una función que obligará a esas " "eliminaciones." -#: ../Doc/faq/design.rst:404 +#: ../Doc/faq/design.rst:400 msgid "Why are there separate tuple and list data types?" msgstr "¿Por qué hay tipos de datos separados de tuplas y listas?" -#: ../Doc/faq/design.rst:406 +#: ../Doc/faq/design.rst:402 msgid "" "Lists and tuples, while similar in many respects, are generally used in " "fundamentally different ways. Tuples can be thought of as being similar to " @@ -776,7 +778,7 @@ msgstr "" "tipos que funcionan como un grupo. Por ejemplo, una coordenada cartesiana se " "representa adecuadamente como una tupla de dos o tres números." -#: ../Doc/faq/design.rst:413 +#: ../Doc/faq/design.rst:409 msgid "" "Lists, on the other hand, are more like arrays in other languages. They " "tend to hold a varying number of objects all of which have the same type and " @@ -792,7 +794,7 @@ msgstr "" "directorio actual. Las funciones que operan en esta salida generalmente no " "se romperían si agregara otro archivo o dos al directorio." -#: ../Doc/faq/design.rst:420 +#: ../Doc/faq/design.rst:416 msgid "" "Tuples are immutable, meaning that once a tuple has been created, you can't " "replace any of its elements with a new value. Lists are mutable, meaning " @@ -807,11 +809,11 @@ msgstr "" "claves de diccionario y, por lo tanto, solo las tuplas y no las listas se " "pueden usar como claves." -#: ../Doc/faq/design.rst:427 +#: ../Doc/faq/design.rst:423 msgid "How are lists implemented in CPython?" msgstr "¿Cómo se implementan las listas en Python?" -#: ../Doc/faq/design.rst:429 +#: ../Doc/faq/design.rst:425 msgid "" "CPython's lists are really variable-length arrays, not Lisp-style linked " "lists. The implementation uses a contiguous array of references to other " @@ -823,7 +825,7 @@ msgstr "" "referencias a otros objetos y mantiene un puntero a esta matriz y la " "longitud de la matriz en una estructura de encabezado de lista." -#: ../Doc/faq/design.rst:433 +#: ../Doc/faq/design.rst:429 msgid "" "This makes indexing a list ``a[i]`` an operation whose cost is independent " "of the size of the list or the value of the index." @@ -831,7 +833,7 @@ msgstr "" "Esto hace que indexar una lista ``a[i]`` una operación cuyo costo es " "independiente del tamaño de la lista o del valor del índice." -#: ../Doc/faq/design.rst:436 +#: ../Doc/faq/design.rst:432 msgid "" "When items are appended or inserted, the array of references is resized. " "Some cleverness is applied to improve the performance of appending items " @@ -844,11 +846,11 @@ msgstr "" "un espacio extra para que las próximas veces no requieran un cambio de " "tamaño real." -#: ../Doc/faq/design.rst:443 +#: ../Doc/faq/design.rst:439 msgid "How are dictionaries implemented in CPython?" msgstr "¿Cómo se implementan los diccionarios en CPython?" -#: ../Doc/faq/design.rst:445 +#: ../Doc/faq/design.rst:441 msgid "" "CPython's dictionaries are implemented as resizable hash tables. Compared " "to B-trees, this gives better performance for lookup (the most common " @@ -861,7 +863,7 @@ msgstr "" "con diferencia) en la mayoría de las circunstancias, y la implementación es " "más simple." -#: ../Doc/faq/design.rst:449 +#: ../Doc/faq/design.rst:445 msgid "" "Dictionaries work by computing a hash code for each key stored in the " "dictionary using the :func:`hash` built-in function. The hash code varies " @@ -884,11 +886,11 @@ msgstr "" "los diccionarios toman tiempo constante -- O(1), en notación Big-O -- para " "recuperar una clave." -#: ../Doc/faq/design.rst:460 +#: ../Doc/faq/design.rst:456 msgid "Why must dictionary keys be immutable?" msgstr "¿Por qué las claves del diccionario deben ser inmutables?" -#: ../Doc/faq/design.rst:462 +#: ../Doc/faq/design.rst:458 msgid "" "The hash table implementation of dictionaries uses a hash value calculated " "from the key value to find the key. If the key were a mutable object, its " @@ -910,7 +912,7 @@ msgstr "" "de buscar el valor anterior, tampoco lo encontraría, porque el valor del " "objeto que se encuentra en ese hash bin sería diferente." -#: ../Doc/faq/design.rst:471 +#: ../Doc/faq/design.rst:467 msgid "" "If you want a dictionary indexed with a list, simply convert the list to a " "tuple first; the function ``tuple(L)`` creates a tuple with the same entries " @@ -922,11 +924,11 @@ msgstr "" "mismas entradas que la lista ``L``. Las tuplas son inmutables y, por lo " "tanto, pueden usarse como claves de diccionario." -#: ../Doc/faq/design.rst:475 +#: ../Doc/faq/design.rst:471 msgid "Some unacceptable solutions that have been proposed:" msgstr "Algunas soluciones inaceptables que se han propuesto:" -#: ../Doc/faq/design.rst:477 +#: ../Doc/faq/design.rst:473 msgid "" "Hash lists by their address (object ID). This doesn't work because if you " "construct a new list with the same value it won't be found; e.g.::" @@ -934,7 +936,7 @@ msgstr "" "Listas de hash por su dirección (ID de objeto). Esto no funciona porque si " "construye una nueva lista con el mismo valor, no se encontrará; por ejemplo::" -#: ../Doc/faq/design.rst:483 +#: ../Doc/faq/design.rst:479 msgid "" "would raise a :exc:`KeyError` exception because the id of the ``[1, 2]`` " "used in the second line differs from that in the first line. In other " @@ -946,7 +948,7 @@ msgstr "" "palabras, las claves del diccionario deben compararse usando ``==``, no " "usando :keyword:`is`." -#: ../Doc/faq/design.rst:487 +#: ../Doc/faq/design.rst:483 msgid "" "Make a copy when using a list as a key. This doesn't work because the list, " "being a mutable object, could contain a reference to itself, and then the " @@ -956,7 +958,7 @@ msgstr "" "lista, al ser un objeto mutable, podría contener una referencia a sí misma, " "y luego el código de copia se ejecutaría en un bucle infinito." -#: ../Doc/faq/design.rst:491 +#: ../Doc/faq/design.rst:487 msgid "" "Allow lists as keys but tell the user not to modify them. This would allow " "a class of hard-to-track bugs in programs when you forgot or modified a list " @@ -969,7 +971,7 @@ msgstr "" "invariante importante de diccionarios: cada valor en ``d.keys()`` se puede " "usar como una clave del diccionario." -#: ../Doc/faq/design.rst:496 +#: ../Doc/faq/design.rst:492 msgid "" "Mark lists as read-only once they are used as a dictionary key. The problem " "is that it's not just the top-level object that could change its value; you " @@ -985,7 +987,7 @@ msgstr "" "los objetos accesibles desde allí como de solo lectura -- y nuevamente, los " "objetos autoreferenciados podrían causar un bucle infinito." -#: ../Doc/faq/design.rst:502 +#: ../Doc/faq/design.rst:498 msgid "" "There is a trick to get around this if you need to, but use it at your own " "risk: You can wrap a mutable structure inside a class instance which has " @@ -1001,7 +1003,7 @@ msgstr "" "residen en un diccionario (u otra estructura basada en hash) permanezca fijo " "mientras el objeto está en el diccionario (u otra estructura). ::" -#: ../Doc/faq/design.rst:526 +#: ../Doc/faq/design.rst:522 msgid "" "Note that the hash computation is complicated by the possibility that some " "members of the list may be unhashable and also by the possibility of " @@ -1011,7 +1013,7 @@ msgstr "" "algunos miembros de la lista sean inquebrantables y también por la " "posibilidad de desbordamiento aritmético." -#: ../Doc/faq/design.rst:530 +#: ../Doc/faq/design.rst:526 msgid "" "Furthermore it must always be the case that if ``o1 == o2`` (ie ``o1." "__eq__(o2) is True``) then ``hash(o1) == hash(o2)`` (ie, ``o1.__hash__() == " @@ -1025,7 +1027,7 @@ msgstr "" "un diccionario o no. Si no cumple con estas restricciones, los diccionarios " "y otras estructuras basadas en hash se comportarán mal." -#: ../Doc/faq/design.rst:535 +#: ../Doc/faq/design.rst:531 msgid "" "In the case of ListWrapper, whenever the wrapper object is in a dictionary " "the wrapped list must not change to avoid anomalies. Don't do this unless " @@ -1038,11 +1040,11 @@ msgstr "" "requisitos y las consecuencias de no cumplirlos correctamente. Considérese " "advertido." -#: ../Doc/faq/design.rst:542 +#: ../Doc/faq/design.rst:538 msgid "Why doesn't list.sort() return the sorted list?" msgstr "¿Por qué list.sort() no retorna la lista ordenada?" -#: ../Doc/faq/design.rst:544 +#: ../Doc/faq/design.rst:540 msgid "" "In situations where performance matters, making a copy of the list just to " "sort it would be wasteful. Therefore, :meth:`list.sort` sorts the list in " @@ -1058,7 +1060,7 @@ msgstr "" "accidentalmente una lista cuando necesite una copia ordenada, pero también " "deberá mantener la versión sin ordenar." -#: ../Doc/faq/design.rst:550 +#: ../Doc/faq/design.rst:546 msgid "" "If you want to return a new list, use the built-in :func:`sorted` function " "instead. This function creates a new list from a provided iterable, sorts " @@ -1070,11 +1072,11 @@ msgstr "" "proporcionado, la ordena y la retorna. Por ejemplo, a continuación se " "explica cómo iterar sobre las teclas de un diccionario en orden ordenado:" -#: ../Doc/faq/design.rst:560 +#: ../Doc/faq/design.rst:556 msgid "How do you specify and enforce an interface spec in Python?" msgstr "¿Cómo se especifica y aplica una especificación de interfaz en Python?" -#: ../Doc/faq/design.rst:562 +#: ../Doc/faq/design.rst:558 msgid "" "An interface specification for a module as provided by languages such as C++ " "and Java describes the prototypes for the methods and functions of the " @@ -1087,7 +1089,7 @@ msgstr "" "especificaciones de la interfaz ayuda en la construcción de grandes " "programas." -#: ../Doc/faq/design.rst:567 +#: ../Doc/faq/design.rst:563 msgid "" "Python 2.6 adds an :mod:`abc` module that lets you define Abstract Base " "Classes (ABCs). You can then use :func:`isinstance` and :func:`issubclass` " @@ -1103,7 +1105,7 @@ msgstr "" "class:`~collections.abc.Iterable`, :class:`~collections.abc.Container` y :" "class:`~collections.abc.MutableMapping`." -#: ../Doc/faq/design.rst:574 +#: ../Doc/faq/design.rst:570 msgid "" "For Python, many of the advantages of interface specifications can be " "obtained by an appropriate test discipline for components." @@ -1112,7 +1114,7 @@ msgstr "" "pueden obtener mediante una disciplina de prueba adecuada para los " "componentes." -#: ../Doc/faq/design.rst:577 +#: ../Doc/faq/design.rst:573 msgid "" "A good test suite for a module can both provide a regression test and serve " "as a module interface specification and a set of examples. Many Python " @@ -1133,7 +1135,7 @@ msgstr "" "terceros se pueden utilizar para construir conjuntos de pruebas exhaustivas " "que ejercitan cada línea de código en un módulo." -#: ../Doc/faq/design.rst:585 +#: ../Doc/faq/design.rst:581 msgid "" "An appropriate testing discipline can help build large complex applications " "in Python as well as having interface specifications would. In fact, it can " @@ -1152,7 +1154,7 @@ msgstr "" "implementación :meth:`append` realmente haga esto correctamente, pero es " "trivial verificar esta propiedad en un conjunto de pruebas." -#: ../Doc/faq/design.rst:593 +#: ../Doc/faq/design.rst:589 msgid "" "Writing test suites is very helpful, and you might want to design your code " "to make it easily tested. One increasingly popular technique, test-driven " @@ -1166,11 +1168,11 @@ msgstr "" "conjunto de pruebas primero, antes de escribir el código real. Por supuesto, " "Python te permite ser descuidado y no escribir casos de prueba." -#: ../Doc/faq/design.rst:601 +#: ../Doc/faq/design.rst:597 msgid "Why is there no goto?" msgstr "¿Por qué no hay goto?" -#: ../Doc/faq/design.rst:603 +#: ../Doc/faq/design.rst:599 msgid "" "In the 1970s people realized that unrestricted goto could lead to messy " "\"spaghetti\" code that was hard to understand and revise. In a high-level " @@ -1186,7 +1188,7 @@ msgstr "" "expresiones ``or``, ``and`` e ``if-else``) y repetir (con declaraciones " "``while`` y ``for``, que posiblemente contengan ``continue`` y ``break``)." -#: ../Doc/faq/design.rst:610 +#: ../Doc/faq/design.rst:606 msgid "" "One can also use exceptions to provide a \"structured goto\" that works even " "across function calls. Many feel that exceptions can conveniently emulate " @@ -1198,7 +1200,7 @@ msgstr "" "pueden emular convenientemente todos los usos razonables de los constructos " "\"go\" o \"goto\" de C, Fortran y otros lenguajes. Por ejemplo::" -#: ../Doc/faq/design.rst:626 +#: ../Doc/faq/design.rst:622 msgid "" "This doesn't allow you to jump into the middle of a loop, but that's usually " "considered an abuse of goto anyway. Use sparingly." @@ -1206,13 +1208,13 @@ msgstr "" "Esto no le permite saltar a la mitad de un bucle, pero de todos modos eso " "generalmente se considera un abuso de goto. Utilizar con moderación." -#: ../Doc/faq/design.rst:631 +#: ../Doc/faq/design.rst:627 msgid "Why can't raw strings (r-strings) end with a backslash?" msgstr "" "¿Por qué las cadenas de caracteres sin formato (r-strings) no pueden " "terminar con una barra diagonal inversa?" -#: ../Doc/faq/design.rst:633 +#: ../Doc/faq/design.rst:629 msgid "" "More precisely, they can't end with an odd number of backslashes: the " "unpaired backslash at the end escapes the closing quote character, leaving " @@ -1222,7 +1224,7 @@ msgstr "" "invertidas: la barra invertida no emparejada al final escapa el carácter de " "comillas de cierre, dejando una cadena sin terminar." -#: ../Doc/faq/design.rst:637 +#: ../Doc/faq/design.rst:633 msgid "" "Raw strings were designed to ease creating input for processors (chiefly " "regular expression engines) that want to do their own backslash escape " @@ -1241,7 +1243,7 @@ msgstr "" "cuando las cadenas de caracteres r (*r-strings*) se usan para el propósito " "previsto." -#: ../Doc/faq/design.rst:644 +#: ../Doc/faq/design.rst:640 msgid "" "If you're trying to build Windows pathnames, note that all Windows system " "calls accept forward slashes too::" @@ -1249,20 +1251,20 @@ msgstr "" "Si está intentando construir nombres de ruta de Windows, tenga en cuenta que " "todas las llamadas al sistema de Windows también aceptan barras diagonales:" -#: ../Doc/faq/design.rst:649 +#: ../Doc/faq/design.rst:645 msgid "" "If you're trying to build a pathname for a DOS command, try e.g. one of ::" msgstr "" "Si está tratando de construir una ruta para un comando de DOS, intente por " "ejemplo uno de los siguientes::" -#: ../Doc/faq/design.rst:657 +#: ../Doc/faq/design.rst:653 msgid "Why doesn't Python have a \"with\" statement for attribute assignments?" msgstr "" "¿Por qué Python no tiene una declaración \"with\" para las asignaciones de " "atributos?" -#: ../Doc/faq/design.rst:659 +#: ../Doc/faq/design.rst:655 msgid "" "Python has a 'with' statement that wraps the execution of a block, calling " "code on the entrance and exit from the block. Some languages have a " @@ -1272,11 +1274,11 @@ msgstr "" "llamando al código en la entrada y salida del bloque. Algunos lenguajes " "tienen una construcción que se ve así:" -#: ../Doc/faq/design.rst:667 +#: ../Doc/faq/design.rst:663 msgid "In Python, such a construct would be ambiguous." msgstr "En Python, tal construcción sería ambigua." -#: ../Doc/faq/design.rst:669 +#: ../Doc/faq/design.rst:665 msgid "" "Other languages, such as Object Pascal, Delphi, and C++, use static types, " "so it's possible to know, in an unambiguous way, what member is being " @@ -1289,7 +1291,7 @@ msgstr "" "el compilador *siempre* conoce el alcance de cada variable en tiempo de " "compilación." -#: ../Doc/faq/design.rst:674 +#: ../Doc/faq/design.rst:670 msgid "" "Python uses dynamic types. It is impossible to know in advance which " "attribute will be referenced at runtime. Member attributes may be added or " @@ -1303,11 +1305,11 @@ msgstr "" "imposible saber, a partir de una simple lectura, a qué atributo se hace " "referencia: ¿uno local, uno global o un atributo miembro?" -#: ../Doc/faq/design.rst:680 +#: ../Doc/faq/design.rst:676 msgid "For instance, take the following incomplete snippet::" msgstr "Por ejemplo, tome el siguiente fragmento incompleto::" -#: ../Doc/faq/design.rst:686 +#: ../Doc/faq/design.rst:682 msgid "" "The snippet assumes that \"a\" must have a member attribute called \"x\". " "However, there is nothing in Python that tells the interpreter this. What " @@ -1322,7 +1324,7 @@ msgstr "" "naturaleza dinámica de Python hace que tales elecciones sean mucho más " "difíciles." -#: ../Doc/faq/design.rst:692 +#: ../Doc/faq/design.rst:688 msgid "" "The primary benefit of \"with\" and similar language features (reduction of " "code volume) can, however, easily be achieved in Python by assignment. " @@ -1332,11 +1334,11 @@ msgstr "" "lenguaje similares (reducción del volumen del código) se puede lograr " "fácilmente en Python mediante la asignación. En vez de::" -#: ../Doc/faq/design.rst:699 +#: ../Doc/faq/design.rst:695 msgid "write this::" msgstr "escribe esto::" -#: ../Doc/faq/design.rst:706 +#: ../Doc/faq/design.rst:702 msgid "" "This also has the side-effect of increasing execution speed because name " "bindings are resolved at run-time in Python, and the second version only " @@ -1346,11 +1348,11 @@ msgstr "" "ejecución porque los enlaces de nombres se resuelven en tiempo de ejecución " "en Python, y la segunda versión solo necesita realizar la resolución una vez." -#: ../Doc/faq/design.rst:712 +#: ../Doc/faq/design.rst:708 msgid "Why don't generators support the with statement?" msgstr "¿Por qué los generadores no admiten la declaración with?" -#: ../Doc/faq/design.rst:714 +#: ../Doc/faq/design.rst:710 msgid "" "For technical reasons, a generator used directly as a context manager would " "not work correctly. When, as is most common, a generator is used as an " @@ -1363,12 +1365,12 @@ msgstr "" "necesario cerrar. Cuando lo esté, envuélvalo como un\"contextlib." "closing(generator)\" en la instrucción 'with'." -#: ../Doc/faq/design.rst:721 +#: ../Doc/faq/design.rst:717 msgid "Why are colons required for the if/while/def/class statements?" msgstr "" "¿Por qué se requieren dos puntos para las declaraciones if/while/def/class?" -#: ../Doc/faq/design.rst:723 +#: ../Doc/faq/design.rst:719 msgid "" "The colon is required primarily to enhance readability (one of the results " "of the experimental ABC language). Consider this::" @@ -1376,11 +1378,11 @@ msgstr "" "Los dos puntos se requieren principalmente para mejorar la legibilidad (uno " "de los resultados del lenguaje ABC experimental). Considera esto::" -#: ../Doc/faq/design.rst:729 +#: ../Doc/faq/design.rst:725 msgid "versus ::" msgstr "versus ::" -#: ../Doc/faq/design.rst:734 +#: ../Doc/faq/design.rst:730 msgid "" "Notice how the second one is slightly easier to read. Notice further how a " "colon sets off the example in this FAQ answer; it's a standard usage in " @@ -1390,7 +1392,7 @@ msgstr "" "cómo los dos puntos establecen el ejemplo en esta respuesta de preguntas " "frecuentes; Es un uso estándar en inglés." -#: ../Doc/faq/design.rst:737 +#: ../Doc/faq/design.rst:733 msgid "" "Another minor reason is that the colon makes it easier for editors with " "syntax highlighting; they can look for colons to decide when indentation " @@ -1402,11 +1404,11 @@ msgstr "" "aumentar la indentación en lugar de tener que hacer un análisis más " "elaborado del texto del programa." -#: ../Doc/faq/design.rst:743 +#: ../Doc/faq/design.rst:739 msgid "Why does Python allow commas at the end of lists and tuples?" msgstr "¿Por qué Python permite comas al final de las listas y tuplas?" -#: ../Doc/faq/design.rst:745 +#: ../Doc/faq/design.rst:741 msgid "" "Python lets you add a trailing comma at the end of lists, tuples, and " "dictionaries::" @@ -1414,11 +1416,11 @@ msgstr "" "Python le permite agregar una coma final al final de las listas, tuplas y " "diccionarios::" -#: ../Doc/faq/design.rst:756 +#: ../Doc/faq/design.rst:752 msgid "There are several reasons to allow this." msgstr "Hay varias razones para permitir esto." -#: ../Doc/faq/design.rst:758 +#: ../Doc/faq/design.rst:754 msgid "" "When you have a literal value for a list, tuple, or dictionary spread across " "multiple lines, it's easier to add more elements because you don't have to " @@ -1430,7 +1432,7 @@ msgstr "" "tiene que recordar agregar una coma a la línea anterior. Las líneas también " "se pueden reordenar sin crear un error de sintaxis." -#: ../Doc/faq/design.rst:763 +#: ../Doc/faq/design.rst:759 msgid "" "Accidentally omitting the comma can lead to errors that are hard to " "diagnose. For example::" @@ -1438,7 +1440,7 @@ msgstr "" "La omisión accidental de la coma puede ocasionar errores difíciles de " "diagnosticar. Por ejemplo::" -#: ../Doc/faq/design.rst:773 +#: ../Doc/faq/design.rst:769 msgid "" "This list looks like it has four elements, but it actually contains three: " "\"fee\", \"fiefoo\" and \"fum\". Always adding the comma avoids this source " @@ -1448,7 +1450,7 @@ msgstr "" "tres: \"fee\", \"fiefoo\" y \"fum\". Agregar siempre la coma evita esta " "fuente de error." -#: ../Doc/faq/design.rst:776 +#: ../Doc/faq/design.rst:772 msgid "" "Allowing the trailing comma may also make programmatic code generation " "easier." diff --git a/faq/extending.po b/faq/extending.po index 0a43386e27..b8245f086d 100644 --- a/faq/extending.po +++ b/faq/extending.po @@ -10,16 +10,16 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-08-02 11:16+0200\n" "Last-Translator: Cristián Maureira-Fredes \n" -"Language-Team: python-doc-es\n" "Language: es_AR\n" +"Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" -"Generated-By: Babel 2.9.1\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/faq/extending.rst:3 msgid "Extending/Embedding FAQ" @@ -55,10 +55,10 @@ msgstr "¿Puedo crear mis propias funciones en C++?" #: ../Doc/faq/extending.rst:28 msgid "" -"Yes, using the C compatibility features found in C++. Place ``extern \"C" -"\" { ... }`` around the Python include files and put ``extern \"C\"`` before " -"each function that is going to be called by the Python interpreter. Global " -"or static C++ objects with constructors are probably not a good idea." +"Yes, using the C compatibility features found in C++. Place ``extern " +"\"C\" { ... }`` around the Python include files and put ``extern \"C\"`` " +"before each function that is going to be called by the Python interpreter. " +"Global or static C++ objects with constructors are probably not a good idea." msgstr "" "Si, utilizando las características de compatibilidad encontradas en C++. " "Coloca ``extern \"C\" { ... }`` alrededor los archivos incluidos Python y " @@ -79,8 +79,9 @@ msgstr "" "dependiendo en que estés tratando de hacer." #: ../Doc/faq/extending.rst:44 +#, fuzzy msgid "" -"`Cython `_ and its relative `Pyrex `_ 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 " @@ -93,12 +94,13 @@ msgstr "" "tener que aprender la API de Python C." #: ../Doc/faq/extending.rst:50 +#, fuzzy 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 `_. `SIP " +"`__, `CXX `_ `Boost `_, or `Weave `_ are also alternatives " "for wrapping C++ libraries." msgstr "" @@ -410,11 +412,11 @@ msgstr "" msgid "For Debian, run ``apt-get install python-dev``." msgstr "Para Debian, corre ``apt-get install python-dev``." -#: ../Doc/faq/extending.rst:259 +#: ../Doc/faq/extending.rst:258 msgid "How do I tell \"incomplete input\" from \"invalid input\"?" msgstr "¿Cómo digo \"entrada incompleta\" desde \"entrada inválida\"?" -#: ../Doc/faq/extending.rst:261 +#: ../Doc/faq/extending.rst:260 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. " @@ -428,7 +430,7 @@ msgstr "" "paréntesis o triples comillas), pero te da un mensaje de error de sintaxis " "inmediatamente cuando la entrada es invalida." -#: ../Doc/faq/extending.rst:267 +#: ../Doc/faq/extending.rst:266 msgid "" "In Python you can use the :mod:`codeop` module, which approximates the " "parser's behavior sufficiently. IDLE uses this, for example." @@ -437,7 +439,7 @@ msgstr "" "comportamiento del analizador gramatical (*parser*) . IDLE usa esto, por " "ejemplo." -#: ../Doc/faq/extending.rst:270 +#: ../Doc/faq/extending.rst:269 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 " @@ -452,37 +454,10 @@ msgstr "" "personalizada." #: ../Doc/faq/extending.rst:276 -msgid "" -"However sometimes you have to run the embedded Python interpreter in the " -"same thread as your rest application and you can't allow the :c:func:" -"`PyRun_InteractiveLoop` to stop while waiting for user input. A solution is " -"trying to compile the received string with :c:func:`Py_CompileString`. If it " -"compiles without errors, try to execute the returned code object by calling :" -"c:func:`PyEval_EvalCode`. Otherwise save the input for later. If the " -"compilation fails, find out if it's an error or just more input is required " -"- by extracting the message string from the exception tuple and comparing it " -"to the string \"unexpected EOF while parsing\". Here is a complete example " -"using the GNU readline library (you may want to ignore **SIGINT** while " -"calling readline())::" -msgstr "" -"Sin embargo, a veces debe ejecutar el intérprete de Python integrado en el " -"mismo hilo que su aplicación de descanso y no puede permitir que el :c:func:" -"`PyRun_InteractiveLoop` se detenga mientras espera la entrada del usuario. " -"Una solución es intentar compilar la cadena recibida con :c:func:" -"`Py_CompileString`. Si se compila sin errores, intente ejecutar el objeto de " -"código devuelto llamando a :c:func:`PyEval_EvalCode`. De lo contrario, " -"guarde la entrada para más tarde. Si la compilación falla, averigüe si es un " -"error o simplemente se requiere más entrada, extrayendo la cadena del " -"mensaje de la tupla de excepción y comparándola con la cadena \"EOF " -"inesperado durante el análisis\". Aquí hay un ejemplo completo usando la " -"biblioteca de línea de lectura de GNU (es posible que desee ignorar " -"**SIGINT** mientras llama a readline ()):" - -#: ../Doc/faq/extending.rst:401 msgid "How do I find undefined g++ symbols __builtin_new or __pure_virtual?" msgstr "¿Cómo encuentro símbolos g++ __builtin_new o __pure_virtual?" -#: ../Doc/faq/extending.rst:403 +#: ../Doc/faq/extending.rst:278 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 " @@ -493,7 +468,7 @@ msgstr "" "Makefile) y enlaza *link* tu extensión usando g++ (por ejemplo `g++ -shared -" "o mymodule.so mymodule.o``)." -#: ../Doc/faq/extending.rst:409 +#: ../Doc/faq/extending.rst:284 msgid "" "Can I create an object class with some methods implemented in C and others " "in Python (e.g. through inheritance)?" @@ -501,7 +476,7 @@ msgstr "" "¿Puedo crear una clase objeto con algunos métodos implementado en C y otros " "en Python (por ejemplo a través de la herencia)?" -#: ../Doc/faq/extending.rst:411 +#: ../Doc/faq/extending.rst:286 msgid "" "Yes, you can inherit from built-in classes such as :class:`int`, :class:" "`list`, :class:`dict`, etc." @@ -509,12 +484,39 @@ msgstr "" "Si, puedes heredar de clases integradas como :class:`int`, :class:`list`, :" "class:`dict`, etc." -#: ../Doc/faq/extending.rst:414 +#: ../Doc/faq/extending.rst:289 +#, fuzzy msgid "" -"The Boost Python Library (BPL, http://www.boost.org/libs/python/doc/index." +"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 " "extension class written in C++ using the BPL)." msgstr "" "La biblioteca *Boost Pyhton* (BPL, http://www.boost.org/libs/python/doc/" "index.html) provee una manera de realizar esto desde C++ (por ejemplo puedes " "heredar de una clase extensión escrita en C++ usando el BPL)." + +#~ msgid "" +#~ "However sometimes you have to run the embedded Python interpreter in the " +#~ "same thread as your rest application and you can't allow the :c:func:" +#~ "`PyRun_InteractiveLoop` to stop while waiting for user input. A solution " +#~ "is trying to compile the received string with :c:func:`Py_CompileString`. " +#~ "If it compiles without errors, try to execute the returned code object by " +#~ "calling :c:func:`PyEval_EvalCode`. Otherwise save the input for later. If " +#~ "the compilation fails, find out if it's an error or just more input is " +#~ "required - by extracting the message string from the exception tuple and " +#~ "comparing it to the string \"unexpected EOF while parsing\". Here is a " +#~ "complete example using the GNU readline library (you may want to ignore " +#~ "**SIGINT** while calling readline())::" +#~ msgstr "" +#~ "Sin embargo, a veces debe ejecutar el intérprete de Python integrado en " +#~ "el mismo hilo que su aplicación de descanso y no puede permitir que el :c:" +#~ "func:`PyRun_InteractiveLoop` se detenga mientras espera la entrada del " +#~ "usuario. Una solución es intentar compilar la cadena recibida con :c:func:" +#~ "`Py_CompileString`. Si se compila sin errores, intente ejecutar el objeto " +#~ "de código devuelto llamando a :c:func:`PyEval_EvalCode`. De lo contrario, " +#~ "guarde la entrada para más tarde. Si la compilación falla, averigüe si es " +#~ "un error o simplemente se requiere más entrada, extrayendo la cadena del " +#~ "mensaje de la tupla de excepción y comparándola con la cadena \"EOF " +#~ "inesperado durante el análisis\". Aquí hay un ejemplo completo usando la " +#~ "biblioteca de línea de lectura de GNU (es posible que desee ignorar " +#~ "**SIGINT** mientras llama a readline ()):" diff --git a/faq/general.po b/faq/general.po index f996b20315..404611c9de 100644 --- a/faq/general.po +++ b/faq/general.po @@ -10,16 +10,16 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-08-02 11:14+0200\n" "Last-Translator: Cristián Maureira-Fredes \n" -"Language-Team: python-doc-es\n" "Language: es\n" +"Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" -"Generated-By: Babel 2.9.1\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/faq/general.rst:5 msgid "General Python FAQ" @@ -248,16 +248,17 @@ msgstr "" "se puede aplicar a muchas clases diferentes de problemas." #: ../Doc/faq/general.rst:114 +#, fuzzy msgid "" "The language comes with a large standard library that covers areas such as " "string processing (regular expressions, Unicode, calculating differences " -"between files), internet protocols (HTTP, FTP, SMTP, XML-RPC, POP, IMAP, CGI " -"programming), software engineering (unit testing, logging, profiling, " -"parsing Python code), and operating system interfaces (system calls, " -"filesystems, TCP/IP sockets). Look at the table of contents for :ref:" -"`library-index` to get an idea of what's available. A wide variety of third-" -"party extensions are also available. Consult `the Python Package Index " -"`_ to find packages of interest to you." +"between files), internet protocols (HTTP, FTP, SMTP, XML-RPC, POP, IMAP), " +"software engineering (unit testing, logging, profiling, parsing Python " +"code), and operating system interfaces (system calls, filesystems, TCP/IP " +"sockets). Look at the table of contents for :ref:`library-index` to get an " +"idea of what's available. A wide variety of third-party extensions are also " +"available. Consult `the Python Package Index `_ to find " +"packages of interest to you." msgstr "" "El lenguaje viene con una gran biblioteca estándar que cubre áreas como " "procesamiento de cadenas (expresiones regulares, Unicode, cálculo de " @@ -276,22 +277,32 @@ msgid "How does the Python version numbering scheme work?" msgstr "¿Cómo funciona el esquema numérico de versiones de Python?" #: ../Doc/faq/general.rst:128 +msgid "Python versions are numbered \"A.B.C\" or \"A.B\":" +msgstr "" + +#: ../Doc/faq/general.rst:130 msgid "" -"Python versions are numbered A.B.C or A.B. A is the major version number -- " -"it is only incremented for really major changes in the language. B is the " -"minor version number, incremented for less earth-shattering changes. C is " -"the micro-level -- it is incremented for each bugfix release. See :pep:`6` " -"for more information about bugfix releases." +"*A* is the major version number -- it is only incremented for really major " +"changes in the language." +msgstr "" + +#: ../Doc/faq/general.rst:132 +msgid "" +"*B* is the minor version number -- it is incremented for less earth-" +"shattering changes." msgstr "" -"La versiones de Python están numeradas A.B.C o A.B. A es el numero de " -"versión más importante -- sólo es incrementado por cambios realmente grandes " -"en el lenguaje. B es el número de versión secundario (o menor), incrementado " -"ante cambios menos traumáticos. C es el nivel micro -- se incrementa en cada " -"lanzamiento de corrección de errores. Mira el :pep:`6` para más información " -"sobre los lanzamientos de corrección de errores." #: ../Doc/faq/general.rst:134 msgid "" +"*C* is the micro version number -- it is incremented for each bugfix release." +msgstr "" + +#: ../Doc/faq/general.rst:136 +msgid "See :pep:`6` for more information about bugfix releases." +msgstr "" + +#: ../Doc/faq/general.rst:138 +msgid "" "Not all releases are bugfix releases. In the run-up to a new major release, " "a series of development releases are made, denoted as alpha, beta, or " "release candidate. Alphas are early releases in which interfaces aren't yet " @@ -310,24 +321,31 @@ msgstr "" "*release candidates* están congelados, sin hacer cambios excepto los " "necesarios para corregir bugs críticos." -#: ../Doc/faq/general.rst:142 -msgid "" -"Alpha, beta and release candidate versions have an additional suffix. The " -"suffix for an alpha version is \"aN\" for some small number N, the suffix " -"for a beta version is \"bN\" for some small number N, and the suffix for a " -"release candidate version is \"rcN\" for some small number N. In other " -"words, all versions labeled 2.0aN precede the versions labeled 2.0bN, which " -"precede versions labeled 2.0rcN, and *those* precede 2.0." +#: ../Doc/faq/general.rst:146 +msgid "Alpha, beta and release candidate versions have an additional suffix:" +msgstr "" + +#: ../Doc/faq/general.rst:148 +msgid "The suffix for an alpha version is \"aN\" for some small number *N*." msgstr "" -"Las versiones alpha, beta y candidata de lanzamiento (*release candidate*) " -"tienen un sufijo adicional. El sufijo para la versión alpha es \"aN\" para " -"algunos números N pequeños; el sufijo para beta es \"bN\" para algunos " -"números N pequeños, y el sufijo para *release candidates* es \"cN\" para " -"algunos números N pequeños. En otras palabras, todas las versiones " -"etiquetadas 2.0aN preceden a las 2.0bN, que preceden a las etiquetadas " -"2.0cN, y *todas esas* preceden a la 2.0." #: ../Doc/faq/general.rst:149 +msgid "The suffix for a beta version is \"bN\" for some small number *N*." +msgstr "" + +#: ../Doc/faq/general.rst:150 +msgid "" +"The suffix for a release candidate version is \"rcN\" for some small number " +"*N*." +msgstr "" + +#: ../Doc/faq/general.rst:152 +msgid "" +"In other words, all versions labeled *2.0aN* precede the versions labeled " +"*2.0bN*, which precede versions labeled *2.0rcN*, and *those* precede 2.0." +msgstr "" + +#: ../Doc/faq/general.rst:155 msgid "" "You may also find version numbers with a \"+\" suffix, e.g. \"2.2+\". These " "are unreleased versions, built directly from the CPython development " @@ -341,7 +359,7 @@ msgstr "" "lanzamiento menor se realiza, la versión es incrementada a la siguiente " "versión menor, que se vuelve \"a0\", por ejemplo \"2.4a0\"." -#: ../Doc/faq/general.rst:154 +#: ../Doc/faq/general.rst:160 msgid "" "See also the documentation for :data:`sys.version`, :data:`sys.hexversion`, " "and :data:`sys.version_info`." @@ -349,11 +367,11 @@ msgstr "" "Mira también la documentación para :data:`sys.version`, :data:`sys." "hexversion`, y :data:`sys.version_info`." -#: ../Doc/faq/general.rst:159 +#: ../Doc/faq/general.rst:165 msgid "How do I obtain a copy of the Python source?" msgstr "¿Cómo obtengo una copia del código fuente de Python?" -#: ../Doc/faq/general.rst:161 +#: ../Doc/faq/general.rst:167 msgid "" "The latest Python source distribution is always available from python.org, " "at https://www.python.org/downloads/. The latest development sources can be " @@ -364,7 +382,7 @@ msgstr "" "código fuente en desarrollo más reciente se puede obtener en https://github." "com/python/cpython/." -#: ../Doc/faq/general.rst:165 +#: ../Doc/faq/general.rst:171 msgid "" "The source distribution is a gzipped tar file containing the complete C " "source, Sphinx-formatted documentation, Python library modules, example " @@ -377,7 +395,7 @@ msgstr "" "software libremente distribuibles. El código fuente compilará y se ejecutará " "sin problemas en la mayoría de las plataformas Unix." -#: ../Doc/faq/general.rst:170 +#: ../Doc/faq/general.rst:176 msgid "" "Consult the `Getting Started section of the Python Developer's Guide " "`__ for more information on getting the " @@ -387,11 +405,11 @@ msgstr "" "devguide.python.org/setup/>`__ para más información sobre cómo obtener el " "código fuente y compilarlo." -#: ../Doc/faq/general.rst:176 +#: ../Doc/faq/general.rst:182 msgid "How do I get documentation on Python?" msgstr "¿Cómo consigo documentación sobre Python?" -#: ../Doc/faq/general.rst:180 +#: ../Doc/faq/general.rst:186 msgid "" "The standard documentation for the current stable version of Python is " "available at https://docs.python.org/3/. PDF, plain text, and downloadable " @@ -402,22 +420,24 @@ msgstr "" "versiones en PDF, texto plano y HTML descargable en https://docs.python." "org/3/download.html." -#: ../Doc/faq/general.rst:184 +#: ../Doc/faq/general.rst:190 +#, fuzzy msgid "" "The documentation is written in reStructuredText and processed by `the " -"Sphinx documentation tool `__. The reStructuredText " -"source for the documentation is part of the Python source distribution." +"Sphinx documentation tool `__. The " +"reStructuredText source for the documentation is part of the Python source " +"distribution." msgstr "" "La documentación está escrita en reStructuredText y procesada con `la " "herramienta de documentación Sphinx `__. Las fuentes " "reStructuredText de la documentación son parte de la distribución fuente de " "Python." -#: ../Doc/faq/general.rst:190 +#: ../Doc/faq/general.rst:196 msgid "I've never programmed before. Is there a Python tutorial?" msgstr "Nunca he programado antes. ¿Hay un tutorial de Python?" -#: ../Doc/faq/general.rst:192 +#: ../Doc/faq/general.rst:198 msgid "" "There are numerous tutorials and books available. The standard " "documentation includes :ref:`tutorial-index`." @@ -425,7 +445,7 @@ msgstr "" "Hay numerosos tutoriales y libros disponibles. La documentación estándar " "incluye :ref:`tutorial-index`." -#: ../Doc/faq/general.rst:195 +#: ../Doc/faq/general.rst:201 msgid "" "Consult `the Beginner's Guide `_ to find information for beginning Python programmers, " @@ -435,11 +455,11 @@ msgstr "" "BeginnersGuide>`_ para encontrar información para principiantes en Python, " "incluyendo una lista de tutoriales." -#: ../Doc/faq/general.rst:200 +#: ../Doc/faq/general.rst:206 msgid "Is there a newsgroup or mailing list devoted to Python?" msgstr "¿Hay un *newsgroup* o una lista de correo dedicada a Python?" -#: ../Doc/faq/general.rst:202 +#: ../Doc/faq/general.rst:208 msgid "" "There is a newsgroup, :newsgroup:`comp.lang.python`, and a mailing list, " "`python-list `_. The " @@ -456,7 +476,7 @@ msgstr "" "tráfico, recibiendo cientos de publicaciones cada día. y los lectores de " "Usenet suelen ser más capaces de hacer frente a este volumen." -#: ../Doc/faq/general.rst:209 +#: ../Doc/faq/general.rst:215 msgid "" "Announcements of new software releases and events can be found in comp.lang." "python.announce, a low-traffic moderated list that receives about five " @@ -469,7 +489,7 @@ msgstr "" "`lista de correos de anuncios de Python `_." -#: ../Doc/faq/general.rst:214 +#: ../Doc/faq/general.rst:220 msgid "" "More info about other mailing lists and newsgroups can be found at https://" "www.python.org/community/lists/." @@ -477,11 +497,11 @@ msgstr "" "Más información sobre listas de correo o grupos de noticias puede hallarse " "en https://www.python.org/community/lists/." -#: ../Doc/faq/general.rst:219 +#: ../Doc/faq/general.rst:225 msgid "How do I get a beta test version of Python?" msgstr "¿Cómo obtengo una versión de prueba *beta* de Python?" -#: ../Doc/faq/general.rst:221 +#: ../Doc/faq/general.rst:227 msgid "" "Alpha and beta releases are available from https://www.python.org/" "downloads/. All releases are announced on the comp.lang.python and comp." @@ -494,7 +514,7 @@ msgstr "" "principal de Python en https://www.python.org/; un *feed* RSS está " "disponible." -#: ../Doc/faq/general.rst:226 +#: ../Doc/faq/general.rst:232 msgid "" "You can also access the development version of Python through Git. See `The " "Python Developer's Guide `_ for details." @@ -503,34 +523,19 @@ msgstr "" "`The Python Developer's Guide `_ para los " "detalles." -#: ../Doc/faq/general.rst:231 +#: ../Doc/faq/general.rst:237 msgid "How do I submit bug reports and patches for Python?" msgstr "¿Cómo envío un reporte de *bug* y parches para Python?" -#: ../Doc/faq/general.rst:233 +#: ../Doc/faq/general.rst:239 +#, fuzzy msgid "" -"To report a bug or submit a patch, please use the Roundup installation at " -"https://bugs.python.org/." +"To report a bug or submit a patch, use the issue tracker at https://github." +"com/python/cpython/issues." msgstr "" "Para reportar un *bug* o enviar un parche, por favor usa la instalación de " "Roundup en https://bugs.python.org/." -#: ../Doc/faq/general.rst:236 -msgid "" -"You must have a Roundup account to report bugs; this makes it possible for " -"us to contact you if we have follow-up questions. It will also enable " -"Roundup to send you updates as we act on your bug. If you had previously " -"used SourceForge to report bugs to Python, you can obtain your Roundup " -"password through Roundup's `password reset procedure `_." -msgstr "" -"Debes tener una cuenta de Roundup para reportar *bugs*; esto nos permite " -"contactarte si tenemos más preguntas. También permite que Roundup te envíe " -"actualizaciones cuando haya actualizaciones sobre tu *bug*. Si previamente " -"usaste SourceForge para reportar bugs a Python, puedes obtener tu contraseña " -"de Roundup a través del `procedimiento de reinicio de contraseña de Roundup " -"`_." - #: ../Doc/faq/general.rst:242 msgid "" "For more information on how Python is developed, consult `the Python " @@ -591,9 +596,10 @@ msgid "Where in the world is www.python.org located?" msgstr "¿En qué parte del mundo está ubicado www.python.org?" #: ../Doc/faq/general.rst:272 +#, fuzzy msgid "" "The Python project's infrastructure is located all over the world and is " -"managed by the Python Infrastructure Team. Details `here `__." msgstr "" "La infraestructura del proyecto Python está ubicada alrededor de todo el " @@ -662,12 +668,13 @@ msgstr "" "interfaces se mantendrán a lo largo de la misma serie." #: ../Doc/faq/general.rst:309 +#, fuzzy msgid "" "The latest stable releases can always be found on the `Python download page " "`_. There are two production-ready " "versions of Python: 2.x and 3.x. The recommended version is 3.x, which is " "supported by most widely used libraries. Although 2.x is still widely used, " -"`it is not maintained anymore `_." +"`it is not maintained anymore `_." msgstr "" "La última versión estable siempre se puede encontrar en la página `Python " "download page `_. Hay dos versiones de " @@ -724,10 +731,11 @@ msgstr "" "empresas y organizaciones." #: ../Doc/faq/general.rst:337 +#, fuzzy msgid "" "High-profile Python projects include `the Mailman mailing list manager " -"`_ and `the Zope application server `_. Several Linux distributions, most notably `Red Hat `_ and `the Zope application server `_. Several Linux distributions, most notably `Red Hat `_, have written part or all of their installer and system " "administration software in Python. Companies that use Python internally " "include Google, Yahoo, and Lucasfilm Ltd." @@ -745,18 +753,12 @@ msgstr "¿Qué nuevos desarrollos se esperan para Python en el futuro?" #: ../Doc/faq/general.rst:348 msgid "" -"See https://www.python.org/dev/peps/ for the Python Enhancement Proposals " -"(PEPs). PEPs are design documents describing a suggested new feature for " -"Python, providing a concise technical specification and a rationale. Look " -"for a PEP titled \"Python X.Y Release Schedule\", where X.Y is a version " -"that hasn't been publicly released yet." +"See https://peps.python.org/ for the Python Enhancement Proposals (PEPs). " +"PEPs are design documents describing a suggested new feature for Python, " +"providing a concise technical specification and a rationale. Look for a PEP " +"titled \"Python X.Y Release Schedule\", where X.Y is a version that hasn't " +"been publicly released yet." msgstr "" -"Mira https://www.python.org/dev/peps/ para las *Python Enhancement " -"Proposals* (\"Propuestas de mejora de Python\", PEPs). Las PEPs son " -"documentos de diseño que describen una nueva funcionalidad sugerida para " -"Python, proveyendo una especificación técnica concisa y una razón " -"fundamental. Busca una PEP titulada \"Python X.Y Release Schedule\", donde X." -"Y es una versión que aún no ha sido publicada." #: ../Doc/faq/general.rst:354 msgid "" @@ -893,21 +895,13 @@ msgstr "" #: ../Doc/faq/general.rst:437 msgid "" "There are also good IDEs for Python. IDLE is a cross-platform IDE for " -"Python that is written in Python using Tkinter. PythonWin is a Windows-" -"specific IDE. Emacs users will be happy to know that there is a very good " -"Python mode for Emacs. All of these programming environments provide syntax " -"highlighting, auto-indenting, and access to the interactive interpreter " -"while coding. Consult `the Python wiki `_ for a full list of Python editing environments." -msgstr "" -"También hay buenas IDEs para Python. IDLE es una IDE multiplataforma para " -"Python que está escrita en Python usando Tkinter. PythonWin es un IDE " -"específico para Windows. Quienes usan Emacs estarán felices de saber que hay " -"un modo para Python muy bueno. Todos estos entornos de programación proveen " -"resaltado de sintaxis, auto-sangrado y acceso al intérprete interactivo " -"mientras se programa. Consulta `la wiki de Python `_ para ver una lista completa de entornos de " -"programación." +"Python that is written in Python using Tkinter. Emacs users will be happy to " +"know that there is a very good Python mode for Emacs. All of these " +"programming environments provide syntax highlighting, auto-indenting, and " +"access to the interactive interpreter while coding. Consult `the Python " +"wiki `_ for a full list of " +"Python editing environments." +msgstr "" #: ../Doc/faq/general.rst:445 msgid "" @@ -918,3 +912,82 @@ msgstr "" "Si quieres discutir el uso de Python en la educación, quizás te interese " "unirte a la `la lista de correo edu-sig `_." + +#~ msgid "" +#~ "Python versions are numbered A.B.C or A.B. A is the major version number " +#~ "-- it is only incremented for really major changes in the language. B is " +#~ "the minor version number, incremented for less earth-shattering changes. " +#~ "C is the micro-level -- it is incremented for each bugfix release. See :" +#~ "pep:`6` for more information about bugfix releases." +#~ msgstr "" +#~ "La versiones de Python están numeradas A.B.C o A.B. A es el numero de " +#~ "versión más importante -- sólo es incrementado por cambios realmente " +#~ "grandes en el lenguaje. B es el número de versión secundario (o menor), " +#~ "incrementado ante cambios menos traumáticos. C es el nivel micro -- se " +#~ "incrementa en cada lanzamiento de corrección de errores. Mira el :pep:`6` " +#~ "para más información sobre los lanzamientos de corrección de errores." + +#~ msgid "" +#~ "Alpha, beta and release candidate versions have an additional suffix. " +#~ "The suffix for an alpha version is \"aN\" for some small number N, the " +#~ "suffix for a beta version is \"bN\" for some small number N, and the " +#~ "suffix for a release candidate version is \"rcN\" for some small number " +#~ "N. In other words, all versions labeled 2.0aN precede the versions " +#~ "labeled 2.0bN, which precede versions labeled 2.0rcN, and *those* precede " +#~ "2.0." +#~ msgstr "" +#~ "Las versiones alpha, beta y candidata de lanzamiento (*release " +#~ "candidate*) tienen un sufijo adicional. El sufijo para la versión alpha " +#~ "es \"aN\" para algunos números N pequeños; el sufijo para beta es \"bN\" " +#~ "para algunos números N pequeños, y el sufijo para *release candidates* es " +#~ "\"cN\" para algunos números N pequeños. En otras palabras, todas las " +#~ "versiones etiquetadas 2.0aN preceden a las 2.0bN, que preceden a las " +#~ "etiquetadas 2.0cN, y *todas esas* preceden a la 2.0." + +#~ msgid "" +#~ "You must have a Roundup account to report bugs; this makes it possible " +#~ "for us to contact you if we have follow-up questions. It will also " +#~ "enable Roundup to send you updates as we act on your bug. If you had " +#~ "previously used SourceForge to report bugs to Python, you can obtain your " +#~ "Roundup password through Roundup's `password reset procedure `_." +#~ msgstr "" +#~ "Debes tener una cuenta de Roundup para reportar *bugs*; esto nos permite " +#~ "contactarte si tenemos más preguntas. También permite que Roundup te " +#~ "envíe actualizaciones cuando haya actualizaciones sobre tu *bug*. Si " +#~ "previamente usaste SourceForge para reportar bugs a Python, puedes " +#~ "obtener tu contraseña de Roundup a través del `procedimiento de reinicio " +#~ "de contraseña de Roundup `_." + +#~ msgid "" +#~ "See https://www.python.org/dev/peps/ for the Python Enhancement Proposals " +#~ "(PEPs). PEPs are design documents describing a suggested new feature for " +#~ "Python, providing a concise technical specification and a rationale. " +#~ "Look for a PEP titled \"Python X.Y Release Schedule\", where X.Y is a " +#~ "version that hasn't been publicly released yet." +#~ msgstr "" +#~ "Mira https://www.python.org/dev/peps/ para las *Python Enhancement " +#~ "Proposals* (\"Propuestas de mejora de Python\", PEPs). Las PEPs son " +#~ "documentos de diseño que describen una nueva funcionalidad sugerida para " +#~ "Python, proveyendo una especificación técnica concisa y una razón " +#~ "fundamental. Busca una PEP titulada \"Python X.Y Release Schedule\", " +#~ "donde X.Y es una versión que aún no ha sido publicada." + +#~ msgid "" +#~ "There are also good IDEs for Python. IDLE is a cross-platform IDE for " +#~ "Python that is written in Python using Tkinter. PythonWin is a Windows-" +#~ "specific IDE. Emacs users will be happy to know that there is a very good " +#~ "Python mode for Emacs. All of these programming environments provide " +#~ "syntax highlighting, auto-indenting, and access to the interactive " +#~ "interpreter while coding. Consult `the Python wiki `_ for a full list of Python editing environments." +#~ msgstr "" +#~ "También hay buenas IDEs para Python. IDLE es una IDE multiplataforma para " +#~ "Python que está escrita en Python usando Tkinter. PythonWin es un IDE " +#~ "específico para Windows. Quienes usan Emacs estarán felices de saber que " +#~ "hay un modo para Python muy bueno. Todos estos entornos de programación " +#~ "proveen resaltado de sintaxis, auto-sangrado y acceso al intérprete " +#~ "interactivo mientras se programa. Consulta `la wiki de Python `_ para ver una lista completa de " +#~ "entornos de programación." diff --git a/faq/gui.po b/faq/gui.po index 4dcd1c5d46..e4d721ec80 100644 --- a/faq/gui.po +++ b/faq/gui.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-11-09 22:34-0600\n" "Last-Translator: Erick G. Islas Osuna \n" "Language: es\n" @@ -19,8 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/faq/gui.rst:5 msgid "Graphic User Interface FAQ" @@ -101,10 +100,11 @@ msgstr "" "variables de entorno :envvar:`TK_LIBRARY`." #: ../Doc/faq/gui.rst:49 +#, fuzzy msgid "" "To get truly stand-alone applications, the Tcl scripts that form the library " "have to be integrated into the application as well. One tool supporting that " -"is SAM (stand-alone modules), which is part of the Tix distribution (http://" +"is SAM (stand-alone modules), which is part of the Tix distribution (https://" "tix.sourceforge.net/)." msgstr "" "Para obtener aplicaciones verdaderamente independientes, los *scripts* Tcl " diff --git a/faq/library.po b/faq/library.po index 3b7db82dcc..84ddd66dba 100644 --- a/faq/library.po +++ b/faq/library.po @@ -10,16 +10,16 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-08-02 11:09+0200\n" "Last-Translator: Cristián Maureira-Fredes \n" -"Language-Team: python-doc-es\n" "Language: es\n" +"Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" -"Generated-By: Babel 2.9.1\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/faq/library.rst:5 msgid "Library and Extension FAQ" @@ -211,19 +211,11 @@ msgstr "" "tienen cursores BSD, pero no parece que ningún sistema operativo actualmente " "mantenido caiga dentro de esta categoría." -#: ../Doc/faq/library.rst:109 -msgid "" -"For Windows: use `the consolelib module `_." -msgstr "" -"Para Windows: use `el módulo consolelib `_." - -#: ../Doc/faq/library.rst:114 +#: ../Doc/faq/library.rst:111 msgid "Is there an equivalent to C's onexit() in Python?" msgstr "¿Hay un equivalente en Python al onexit() de C?" -#: ../Doc/faq/library.rst:116 +#: ../Doc/faq/library.rst:113 msgid "" "The :mod:`atexit` module provides a register function that is similar to " "C's :c:func:`onexit`." @@ -231,11 +223,11 @@ msgstr "" "El módulo :mod:`atexit` proporciona una función de registro que es similar " "a :c:func:`onexit` de C." -#: ../Doc/faq/library.rst:121 +#: ../Doc/faq/library.rst:118 msgid "Why don't my signal handlers work?" msgstr "¿Por qué no funcionan mis manejadores de señales?" -#: ../Doc/faq/library.rst:123 +#: ../Doc/faq/library.rst:120 msgid "" "The most common problem is that the signal handler is declared with the " "wrong argument list. It is called as ::" @@ -243,19 +235,19 @@ msgstr "" "El problema más común es que el manejador de señales esté declarado con la " "lista incorrecta de argumentos. Se llama como ::" -#: ../Doc/faq/library.rst:128 +#: ../Doc/faq/library.rst:125 msgid "so it should be declared with two parameters::" msgstr "así que debería declararse con dos argumentos::" -#: ../Doc/faq/library.rst:135 +#: ../Doc/faq/library.rst:132 msgid "Common tasks" msgstr "Tareas comunes" -#: ../Doc/faq/library.rst:138 +#: ../Doc/faq/library.rst:135 msgid "How do I test a Python program or component?" msgstr "¿Cómo pruebo un programa o un componente Python?" -#: ../Doc/faq/library.rst:140 +#: ../Doc/faq/library.rst:137 msgid "" "Python comes with two testing frameworks. The :mod:`doctest` module finds " "examples in the docstrings for a module and runs them, comparing the output " @@ -266,7 +258,7 @@ msgstr "" "comparando la salida con la salida esperada especificada en la cadena de " "documentación." -#: ../Doc/faq/library.rst:144 +#: ../Doc/faq/library.rst:141 msgid "" "The :mod:`unittest` module is a fancier testing framework modelled on Java " "and Smalltalk testing frameworks." @@ -274,7 +266,7 @@ msgstr "" "El módulo :mod:`unittest` es un *framework* de *testing* más agradable y " "modelado sobre los *frameworks* de *testing* de Java y Smalltalk." -#: ../Doc/faq/library.rst:147 +#: ../Doc/faq/library.rst:144 msgid "" "To make testing easier, you should use good modular design in your program. " "Your program should have almost all functionality encapsulated in either " @@ -293,16 +285,16 @@ msgstr "" "mutación de variables globales, ya que esto dificulta mucho más hacer el " "*testing*." -#: ../Doc/faq/library.rst:155 +#: ../Doc/faq/library.rst:152 msgid "The \"global main logic\" of your program may be as simple as ::" msgstr "" "La \"lógica global principal\" de su programa puede ser tan simple como ::" -#: ../Doc/faq/library.rst:160 +#: ../Doc/faq/library.rst:157 msgid "at the bottom of the main module of your program." msgstr "al final del módulo principal de su programa." -#: ../Doc/faq/library.rst:162 +#: ../Doc/faq/library.rst:159 msgid "" "Once your program is organized as a tractable collection of function and " "class behaviours, you should write test functions that exercise the " @@ -322,7 +314,7 @@ msgstr "" "comprobación en paralelo con el \"código de producción\", ya que esto " "facilita encontrar antes errores e incluso fallos de diseño." -#: ../Doc/faq/library.rst:170 +#: ../Doc/faq/library.rst:167 msgid "" "\"Support modules\" that are not intended to be the main module of a program " "may include a self-test of the module. ::" @@ -330,7 +322,7 @@ msgstr "" "Los \"módulos de soporte\" que no tienen la intención de estar en el módulo " "principal de un programa pueden incluir un auto *test* del módulo. ::" -#: ../Doc/faq/library.rst:176 +#: ../Doc/faq/library.rst:173 msgid "" "Even programs that interact with complex external interfaces may be tested " "when the external interfaces are unavailable by using \"fake\" interfaces " @@ -340,16 +332,17 @@ msgstr "" "pueden comprobar cuando las interfaces externas no están disponibles usando " "interfaces \"simuladas\" implementadas en Python." -#: ../Doc/faq/library.rst:182 +#: ../Doc/faq/library.rst:179 msgid "How do I create documentation from doc strings?" msgstr "¿Cómo creo documentación a partir de los docstrings?" -#: ../Doc/faq/library.rst:184 +#: ../Doc/faq/library.rst:181 +#, fuzzy msgid "" "The :mod:`pydoc` module can create HTML from the doc strings in your Python " "source code. An alternative for creating API documentation purely from " -"docstrings is `epydoc `_. `Sphinx `_ can also include docstring content." +"docstrings is `epydoc `_. `Sphinx `_ can also include docstring content." msgstr "" "El módulo :mod:`pydoc` puede crear HTML desde los docstrings existentes en " "su código fuente Python. Una alternativa para crear documentación API " @@ -357,11 +350,11 @@ msgstr "" ">`_. `Sphinx `_ también puede incluir contenido " "docstring." -#: ../Doc/faq/library.rst:191 +#: ../Doc/faq/library.rst:188 msgid "How do I get a single keypress at a time?" msgstr "¿Cómo consigo presionar una única tecla cada vez?" -#: ../Doc/faq/library.rst:193 +#: ../Doc/faq/library.rst:190 msgid "" "For Unix variants there are several solutions. It's straightforward to do " "this using curses, but curses is a fairly large module to learn." @@ -369,15 +362,15 @@ msgstr "" "Para variantes Unix hay varias soluciones. Lo más directo es hacerlo usando " "cursores, pero curses es un módulo bastante amplio para aprenderlo." -#: ../Doc/faq/library.rst:237 +#: ../Doc/faq/library.rst:234 msgid "Threads" msgstr "Hilos" -#: ../Doc/faq/library.rst:240 +#: ../Doc/faq/library.rst:237 msgid "How do I program using threads?" msgstr "¿Cómo programo usando hilos?" -#: ../Doc/faq/library.rst:242 +#: ../Doc/faq/library.rst:239 msgid "" "Be sure to use the :mod:`threading` module and not the :mod:`_thread` " "module. The :mod:`threading` module builds convenient abstractions on top of " @@ -387,19 +380,11 @@ msgstr "" "El módulo :mod:`threading` construye abstracciones convenientes sobre las " "primitivas de bajo nivel proporcionadas por el módulo :mod:`_thread`." -#: ../Doc/faq/library.rst:246 -msgid "" -"Aahz has a set of slides from his threading tutorial that are helpful; see " -"http://www.pythoncraft.com/OSCON2001/." -msgstr "" -"Aahz tiene un conjunto de transparencias en su tutorial de hilos que resulta " -"útil: vea http://www.pythoncraft.com/OSCON2001/." - -#: ../Doc/faq/library.rst:251 +#: ../Doc/faq/library.rst:245 msgid "None of my threads seem to run: why?" msgstr "Ninguno de mis hilos parece funcionar: ¿por qué?" -#: ../Doc/faq/library.rst:253 +#: ../Doc/faq/library.rst:247 msgid "" "As soon as the main thread exits, all threads are killed. Your main thread " "is running too quickly, giving the threads no time to do any work." @@ -408,7 +393,7 @@ msgstr "" "principal está corriendo demasiado rápido, sin dar tiempo a los hilos para " "hacer algún trabajo." -#: ../Doc/faq/library.rst:256 +#: ../Doc/faq/library.rst:250 msgid "" "A simple fix is to add a sleep to the end of the program that's long enough " "for all the threads to finish::" @@ -416,7 +401,7 @@ msgstr "" "Una solución sencilla es añadir un *sleep* al final del programa que sea " "suficientemente largo para que todos los hilos terminen::" -#: ../Doc/faq/library.rst:271 +#: ../Doc/faq/library.rst:265 msgid "" "But now (on many platforms) the threads don't run in parallel, but appear to " "run sequentially, one at a time! The reason is that the OS thread scheduler " @@ -427,13 +412,13 @@ msgstr "" "planificador de hilos del sistema operativo no inicia un nuevo hilo hasta " "que el hilo anterior está bloqueado." -#: ../Doc/faq/library.rst:275 +#: ../Doc/faq/library.rst:269 msgid "A simple fix is to add a tiny sleep to the start of the run function::" msgstr "" "Una solución sencilla es añadir un pequeño *sleep* al comienzo de la función " "run::" -#: ../Doc/faq/library.rst:288 +#: ../Doc/faq/library.rst:282 msgid "" "Instead of trying to guess a good delay value for :func:`time.sleep`, it's " "better to use some kind of semaphore mechanism. One idea is to use the :mod:" @@ -447,11 +432,11 @@ msgstr "" "añada un *token* a la cola cuando termine, y permitiendo al hilo principal " "leer tantos tokens de la cola como hilos haya." -#: ../Doc/faq/library.rst:296 +#: ../Doc/faq/library.rst:290 msgid "How do I parcel out work among a bunch of worker threads?" msgstr "¿Cómo puedo dividir trabajo entre un grupo de hilos?" -#: ../Doc/faq/library.rst:298 +#: ../Doc/faq/library.rst:292 msgid "" "The easiest way is to use the :mod:`concurrent.futures` module, especially " "the :mod:`~concurrent.futures.ThreadPoolExecutor` class." @@ -459,7 +444,7 @@ msgstr "" "La manera más fácil es usar el nuevo módulo :mod:`concurrent.futures`, " "especialmente el módulo :mod:`~concurrent.futures.ThreadPoolExecutor`." -#: ../Doc/faq/library.rst:301 +#: ../Doc/faq/library.rst:295 msgid "" "Or, if you want fine control over the dispatching algorithm, you can write " "your own logic manually. Use the :mod:`queue` module to create a queue " @@ -476,15 +461,15 @@ msgstr "" "se encargará de los bloqueos necesarios para asegurar que cada trabajo se " "reparte exactamente una vez." -#: ../Doc/faq/library.rst:308 +#: ../Doc/faq/library.rst:302 msgid "Here's a trivial example::" msgstr "Aquí hay un ejemplo trivial::" -#: ../Doc/faq/library.rst:346 +#: ../Doc/faq/library.rst:340 msgid "When run, this will produce the following output:" msgstr "Cuando se ejecute, esto producirá la siguiente salida:" -#: ../Doc/faq/library.rst:364 +#: ../Doc/faq/library.rst:358 msgid "" "Consult the module's documentation for more details; the :class:`~queue." "Queue` class provides a featureful interface." @@ -492,11 +477,11 @@ msgstr "" "Consulte la documentación del módulo para más detalles; la clase :class:" "`~queue.Queue` proporciona una interfaz llena de características." -#: ../Doc/faq/library.rst:369 +#: ../Doc/faq/library.rst:363 msgid "What kinds of global value mutation are thread-safe?" msgstr "¿Qué tipos de mutación de valores globales son *thread-safe*?" -#: ../Doc/faq/library.rst:371 +#: ../Doc/faq/library.rst:365 msgid "" "A :term:`global interpreter lock` (GIL) is used internally to ensure that " "only one thread runs in the Python VM at a time. In general, Python offers " @@ -513,7 +498,7 @@ msgstr "" "alcanzada por cada instrucción, es atómica desde el punto de vista de un " "programa Python." -#: ../Doc/faq/library.rst:378 +#: ../Doc/faq/library.rst:372 msgid "" "In theory, this means an exact accounting requires an exact understanding of " "the PVM bytecode implementation. In practice, it means that operations on " @@ -526,7 +511,7 @@ msgstr "" "*built-in* (enteros, listas, diccionarios, etc.) que \"parecen atómicas\" " "realmente lo son." -#: ../Doc/faq/library.rst:383 +#: ../Doc/faq/library.rst:377 msgid "" "For example, the following operations are all atomic (L, L1, L2 are lists, " "D, D1, D2 are dicts, x, y are objects, i, j are ints)::" @@ -534,11 +519,11 @@ msgstr "" "Por ejemplo, las siguientes operaciones son todas atómicas (L, L1, L2 son " "listas, D, D1, D2 son diccionarios, *x, y* son objetos, *i, j* son enteros)::" -#: ../Doc/faq/library.rst:398 +#: ../Doc/faq/library.rst:392 msgid "These aren't::" msgstr "Estas no lo son::" -#: ../Doc/faq/library.rst:405 +#: ../Doc/faq/library.rst:399 msgid "" "Operations that replace other objects may invoke those other objects' :meth:" "`__del__` method when their reference count reaches zero, and that can " @@ -551,11 +536,11 @@ msgstr "" "las actualizaciones en masa de diccionarios y listas. Cuando se esté en " "duda, ¡use un mutex!" -#: ../Doc/faq/library.rst:412 +#: ../Doc/faq/library.rst:406 msgid "Can't we get rid of the Global Interpreter Lock?" msgstr "¿Podemos deshacernos del *Global Interpreter Lock*?" -#: ../Doc/faq/library.rst:416 +#: ../Doc/faq/library.rst:410 msgid "" "The :term:`global interpreter lock` (GIL) is often seen as a hindrance to " "Python's deployment on high-end multiprocessor server machines, because a " @@ -568,7 +553,7 @@ msgstr "" "sólo usa una CPU, debido a la exigencia de que (casi) todo el código Python " "sólo puede correr mientras el GIL esté activado." -#: ../Doc/faq/library.rst:421 +#: ../Doc/faq/library.rst:415 #, python-format msgid "" "Back in the days of Python 1.5, Greg Stein actually implemented a " @@ -589,7 +574,7 @@ msgstr "" "debido a la cantidad de bloqueos de grano fino necesarios para compensar la " "eliminación del GIL." -#: ../Doc/faq/library.rst:429 +#: ../Doc/faq/library.rst:423 msgid "" "This doesn't mean that you can't make good use of Python on multi-CPU " "machines! You just have to be creative with dividing the work up between " @@ -607,7 +592,7 @@ msgstr "" "módulo :mod:`multiprocessing` proporciona una API de bajo nivel en caso de " "que se quiera tener un mayor control sobre el despacho de las tareas." -#: ../Doc/faq/library.rst:437 +#: ../Doc/faq/library.rst:431 msgid "" "Judicious use of C extensions will also help; if you use a C extension to " "perform a time-consuming task, the extension can release the GIL while the " @@ -621,7 +606,7 @@ msgstr "" "hilos hacer trabajo. Algunos módulos de la biblioteca estándar tales como :" "mod:`zlib` y :mod:`hashlib` ya lo hacen." -#: ../Doc/faq/library.rst:443 +#: ../Doc/faq/library.rst:437 msgid "" "It has been suggested that the GIL should be a per-interpreter-state lock " "rather than truly global; interpreters then wouldn't be able to share " @@ -642,7 +627,7 @@ msgstr "" "su propia lista libre; estas listas libres se tendrían que mover al estado " "del intérprete. Y así sucesivamente." -#: ../Doc/faq/library.rst:452 +#: ../Doc/faq/library.rst:446 msgid "" "And I doubt that it can even be done in finite time, because the same " "problem exists for 3rd party extensions. It is likely that 3rd party " @@ -654,7 +639,7 @@ msgstr "" "terceros se escriban más rápido de lo que se puedan convertir para almacenar " "todo su estado global en el estado del intérprete." -#: ../Doc/faq/library.rst:457 +#: ../Doc/faq/library.rst:451 msgid "" "And finally, once you have multiple interpreters not sharing any state, what " "have you gained over running each interpreter in a separate process?" @@ -663,15 +648,15 @@ msgstr "" "estado, ¿qué habrá ganado sobre correr cada intérprete en un proceso " "separado?" -#: ../Doc/faq/library.rst:462 +#: ../Doc/faq/library.rst:456 msgid "Input and Output" msgstr "Entrada y Salida" -#: ../Doc/faq/library.rst:465 +#: ../Doc/faq/library.rst:459 msgid "How do I delete a file? (And other file questions...)" msgstr "¿Cómo borro un fichero? (Y otras preguntas sobre ficheros...)" -#: ../Doc/faq/library.rst:467 +#: ../Doc/faq/library.rst:461 msgid "" "Use ``os.remove(filename)`` or ``os.unlink(filename)``; for documentation, " "see the :mod:`os` module. The two functions are identical; :func:`~os." @@ -682,7 +667,7 @@ msgstr "" "func:`~os.unlink` es simplemente el nombre de la llamada al sistema UNIX " "para esta función." -#: ../Doc/faq/library.rst:471 +#: ../Doc/faq/library.rst:465 msgid "" "To remove a directory, use :func:`os.rmdir`; use :func:`os.mkdir` to create " "one. ``os.makedirs(path)`` will create any intermediate directories in " @@ -696,11 +681,11 @@ msgstr "" "intermedios siempre y cuando estén vacíos; si quiere borrar un árbol de " "directorios completo y sus contenidos, use :func:`shutil.rmtree`." -#: ../Doc/faq/library.rst:477 +#: ../Doc/faq/library.rst:471 msgid "To rename a file, use ``os.rename(old_path, new_path)``." msgstr "Para renombrar un fichero, use ``os.rename(old_path, new_path)``." -#: ../Doc/faq/library.rst:479 +#: ../Doc/faq/library.rst:473 msgid "" "To truncate a file, open it using ``f = open(filename, \"rb+\")``, and use " "``f.truncate(offset)``; offset defaults to the current seek position. " @@ -713,7 +698,7 @@ msgstr "" "ficheros abiertos con :func:`os.open`, donde *fd* es el descriptor del " "fichero (un entero pequeño)." -#: ../Doc/faq/library.rst:484 +#: ../Doc/faq/library.rst:478 msgid "" "The :mod:`shutil` module also contains a number of functions to work on " "files including :func:`~shutil.copyfile`, :func:`~shutil.copytree`, and :" @@ -723,18 +708,20 @@ msgstr "" "con ficheros incluyendo :func:`~shutil.copyfile`, :func:`~shutil.copytree` " "y :func:`~shutil.rmtree`." -#: ../Doc/faq/library.rst:490 +#: ../Doc/faq/library.rst:484 msgid "How do I copy a file?" msgstr "¿Cómo copio un fichero?" -#: ../Doc/faq/library.rst:492 +#: ../Doc/faq/library.rst:486 msgid "" -"The :mod:`shutil` module contains a :func:`~shutil.copyfile` function. Note " -"that on MacOS 9 it doesn't copy the resource fork and Finder info." +"The :mod:`shutil` module contains a :func:`~shutil.copyfile` function. Note " +"that on Windows NTFS volumes, it does not copy `alternate data streams " +"`_ nor " +"`resource forks `__ on macOS " +"HFS+ volumes, though both are now rarely used. It also doesn't copy file " +"permissions and metadata, though using :func:`shutil.copy2` instead will " +"preserve most (though not all) of it." msgstr "" -"El módulo :mod:`shutil` contiene una función :func:`~shutil.copyfile`. " -"Nótese que en MacOS 9 no copia el fork del recurso ni la información de " -"Finder." #: ../Doc/faq/library.rst:497 msgid "How do I read (or write) binary data?" @@ -785,8 +772,8 @@ msgid "" "will return :class:`str` objects rather than :class:`bytes` objects." msgstr "" "Para leer y escribir datos binarios, es obligatorio abrir el fichero en modo " -"binario (aquí, pasando ``\"rb\"`` a :func:`open`). Si, en cambio, usa ``\"r" -"\"`` (por defecto), el fichero se abrirá en modo texto y ``f.read()`` " +"binario (aquí, pasando ``\"rb\"`` a :func:`open`). Si, en cambio, usa " +"``\"r\"`` (por defecto), el fichero se abrirá en modo texto y ``f.read()`` " "retornará objetos :class:`str` en vez de objetos :class:`bytes`." #: ../Doc/faq/library.rst:529 @@ -813,12 +800,12 @@ msgid "How do I access the serial (RS232) port?" msgstr "¿Cómo accedo al puerto serial (RS232)?" #: ../Doc/faq/library.rst:620 -msgid "For Win32, POSIX (Linux, BSD, etc.), Jython:" -msgstr "Para *Win32*, POSIX (Linux, BSD, etc.), Jython:" +msgid "For Win32, OSX, Linux, BSD, Jython, IronPython:" +msgstr "" #: ../Doc/faq/library.rst:622 -msgid "http://pyserial.sourceforge.net" -msgstr "http://pyserial.sourceforge.net" +msgid "https://pypi.org/project/pyserial/" +msgstr "" #: ../Doc/faq/library.rst:624 msgid "For Unix, see a Usenet post by Mitch Chapman:" @@ -910,9 +897,11 @@ msgstr "" "wiki.python.org/moin/WebProgramming\\ ." #: ../Doc/faq/library.rst:672 +#, fuzzy msgid "" "Cameron Laird maintains a useful set of pages about Python web technologies " -"at http://phaseit.net/claird/comp.lang.python/web_python." +"at https://web.archive.org/web/20210224183619/http://phaseit.net/claird/comp." +"lang.python/web_python." msgstr "" "Cameron Laird mantiene un conjunto útil de páginas sobre tecnologías web " "Python en http://phaseit.net/claird/comp.lang.python/web_python." @@ -1158,3 +1147,31 @@ msgid "" msgstr "" "También hay una clase ``Random`` que usted puede instanciar para crear " "múltiples generadores independientes de valores aleatorios." + +#~ msgid "" +#~ "For Windows: use `the consolelib module `_." +#~ msgstr "" +#~ "Para Windows: use `el módulo consolelib `_." + +#~ msgid "" +#~ "Aahz has a set of slides from his threading tutorial that are helpful; " +#~ "see http://www.pythoncraft.com/OSCON2001/." +#~ msgstr "" +#~ "Aahz tiene un conjunto de transparencias en su tutorial de hilos que " +#~ "resulta útil: vea http://www.pythoncraft.com/OSCON2001/." + +#~ msgid "" +#~ "The :mod:`shutil` module contains a :func:`~shutil.copyfile` function. " +#~ "Note that on MacOS 9 it doesn't copy the resource fork and Finder info." +#~ msgstr "" +#~ "El módulo :mod:`shutil` contiene una función :func:`~shutil.copyfile`. " +#~ "Nótese que en MacOS 9 no copia el fork del recurso ni la información de " +#~ "Finder." + +#~ msgid "For Win32, POSIX (Linux, BSD, etc.), Jython:" +#~ msgstr "Para *Win32*, POSIX (Linux, BSD, etc.), Jython:" + +#~ msgid "http://pyserial.sourceforge.net" +#~ msgstr "http://pyserial.sourceforge.net" diff --git a/faq/programming.po b/faq/programming.po index 70c9f320af..de0dd1d2ba 100644 --- a/faq/programming.po +++ b/faq/programming.po @@ -10,17 +10,16 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-12-11 15:36-0300\n" "Last-Translator: Juan C. Tello \n" -"Language-Team: python-doc-es\n" "Language: es\n" +"Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Generated-By: Babel 2.9.1\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/faq/programming.rst:5 msgid "Programming FAQ" @@ -94,8 +93,9 @@ msgstr "" "activestate.com/activepython>`." #: ../Doc/faq/programming.rst:38 +#, fuzzy msgid "" -"`Eric `_ is an IDE built on PyQt and " +"`Eric `_ is an IDE built on PyQt and " "the Scintilla editing component." msgstr "" "`Eric `_ es un IDE creado usando PyQt " @@ -145,9 +145,11 @@ msgstr "" "estático?" #: ../Doc/faq/programming.rst:59 +#, fuzzy msgid "" -"`Pylint `_ and `Pyflakes `_ do basic checking that will help you catch bugs sooner." +"`Pylint `_ and `Pyflakes " +"`_ do basic checking that will help you " +"catch bugs sooner." msgstr "" "`Pylint `_ y `Pyflakes `_ realizan comprobaciones básicas que le ayudarán a detectar " @@ -185,11 +187,12 @@ msgstr "" "generar un único ejecutable." #: ../Doc/faq/programming.rst:80 +#, fuzzy msgid "" "One is to use the freeze tool, which is included in the Python source tree " -"as ``Tools/freeze``. It converts Python byte code to C arrays; a C compiler " -"you can embed all your modules into a new program, which is then linked with " -"the standard Python modules." +"as ``Tools/freeze``. It converts Python byte code to C arrays; with a C " +"compiler you can embed all your modules into a new program, which is then " +"linked with the standard Python modules." msgstr "" "Una forma es usando la herramienta *freeze*, la cual viene incluida con el " "árbol de código Python como ``Tools/freeze``. Convierte el byte code Python " @@ -233,7 +236,8 @@ msgid "`Nuitka `_ (Cross-platform)" msgstr "`Nuitka `_ (Multiplataforma)" #: ../Doc/faq/programming.rst:98 -msgid "`PyInstaller `_ (Cross-platform)" +#, fuzzy +msgid "`PyInstaller `_ (Cross-platform)" msgstr "`PyInstaller `_ (Multiplataforma)" #: ../Doc/faq/programming.rst:99 @@ -254,7 +258,8 @@ msgid "`py2app `_ (macOS only)" msgstr "`py2app `_ (macOS solamente)" #: ../Doc/faq/programming.rst:102 -msgid "`py2exe `_ (Windows only)" +#, fuzzy +msgid "`py2exe `_ (Windows only)" msgstr "`py2exe `_ (solo Windows)" #: ../Doc/faq/programming.rst:105 @@ -545,7 +550,8 @@ msgstr "" "Image, etc." #: ../Doc/faq/programming.rst:297 -msgid "locally-developed modules" +#, fuzzy +msgid "locally developed modules" msgstr "módulos desarrollados localmente" #: ../Doc/faq/programming.rst:299 @@ -566,10 +572,10 @@ msgid "" msgstr "" "No hay problema con las importaciones circulares cuando ambos módulos usan " "la forma de importación \"import \". Fallará cuando el segundo " -"módulo quiera coger un nombre del primer módulo (\"from module import name" -"\") y la importación se encuentre en el nivel superior. Esto sucede porque " -"los nombres en el primero todavía no se encuentran disponibles debido a que " -"el primer módulo se encuentra ocupado importando al segundo." +"módulo quiera coger un nombre del primer módulo (\"from module import " +"name\") y la importación se encuentre en el nivel superior. Esto sucede " +"porque los nombres en el primero todavía no se encuentran disponibles debido " +"a que el primer módulo se encuentra ocupado importando al segundo." #: ../Doc/faq/programming.rst:308 msgid "" @@ -735,12 +741,13 @@ msgid "What is the difference between arguments and parameters?" msgstr "¿Cuál es la diferencia entre argumentos y parámetros?" #: ../Doc/faq/programming.rst:410 +#, fuzzy msgid "" ":term:`Parameters ` are defined by the names that appear in a " "function definition, whereas :term:`arguments ` are the values " -"actually passed to a function when calling it. Parameters define what types " -"of arguments a function can accept. For example, given the function " -"definition::" +"actually passed to a function when calling it. Parameters define what :term:" +"`kind of arguments ` a function can accept. For example, given " +"the function definition::" msgstr "" ":term:`Parámetros ` se definen mediante los nombres que aparecen " "en la definición de una función mientras que :term:`argumentos ` " @@ -748,7 +755,7 @@ msgstr "" "Parámetros definen qué tipos de argumentos puede aceptar una función. por " "ejemplo, dada la definición de la función::" -#: ../Doc/faq/programming.rst:418 +#: ../Doc/faq/programming.rst:419 msgid "" "*foo*, *bar* and *kwargs* are parameters of ``func``. However, when calling " "``func``, for example::" @@ -756,30 +763,30 @@ msgstr "" "*foo*, *bar* y *kwargs* son parámetros de ``func``. Sin embargo, cuando " "invocamos a ``func``, por ejemplo::" -#: ../Doc/faq/programming.rst:423 +#: ../Doc/faq/programming.rst:424 msgid "the values ``42``, ``314``, and ``somevar`` are arguments." msgstr "los valores ``42``, ``314`` y ``somevar`` son argumentos." -#: ../Doc/faq/programming.rst:427 +#: ../Doc/faq/programming.rst:428 msgid "Why did changing list 'y' also change list 'x'?" msgstr "¿Por qué cambiando la lista 'y' cambia, también, la lista 'x'?" -#: ../Doc/faq/programming.rst:429 +#: ../Doc/faq/programming.rst:430 msgid "If you wrote code like::" msgstr "Si escribes código como::" -#: ../Doc/faq/programming.rst:439 +#: ../Doc/faq/programming.rst:440 msgid "" "you might be wondering why appending an element to ``y`` changed ``x`` too." msgstr "" "te estarás preguntando porque añadir un elemento a ``y`` ha cambiado también " "a ``x``." -#: ../Doc/faq/programming.rst:441 +#: ../Doc/faq/programming.rst:442 msgid "There are two factors that produce this result:" msgstr "Hay dos factores que provocan este resultado:" -#: ../Doc/faq/programming.rst:443 +#: ../Doc/faq/programming.rst:444 msgid "" "Variables are simply names that refer to objects. Doing ``y = x`` doesn't " "create a copy of the list -- it creates a new variable ``y`` that refers to " @@ -792,14 +799,14 @@ msgstr "" "solo existe un objeto (la lista) y tanto ``x`` como ``y`` hacen referencia " "al mismo." -#: ../Doc/faq/programming.rst:447 +#: ../Doc/faq/programming.rst:448 msgid "" "Lists are :term:`mutable`, which means that you can change their content." msgstr "" "Las listas son :term:`mutable`, lo que significa que puedes cambiar su " "contenido." -#: ../Doc/faq/programming.rst:449 +#: ../Doc/faq/programming.rst:450 msgid "" "After the call to :meth:`~list.append`, the content of the mutable object " "has changed from ``[]`` to ``[10]``. Since both the variables refer to the " @@ -810,11 +817,11 @@ msgstr "" "al mismo objeto, el usar cualquiera de los nombres accederá al valor " "modificado ``[10]``." -#: ../Doc/faq/programming.rst:453 +#: ../Doc/faq/programming.rst:454 msgid "If we instead assign an immutable object to ``x``::" msgstr "Si, por otra parte, asignamos un objeto inmutable a ``x``::" -#: ../Doc/faq/programming.rst:463 +#: ../Doc/faq/programming.rst:464 msgid "" "we can see that in this case ``x`` and ``y`` are not equal anymore. This is " "because integers are :term:`immutable`, and when we do ``x = x + 1`` we are " @@ -833,7 +840,7 @@ msgstr "" "referencian a ellos (``x`` ahora referencia a ``6`` pero ``y`` todavía " "referencia a ``5``)." -#: ../Doc/faq/programming.rst:471 +#: ../Doc/faq/programming.rst:472 msgid "" "Some operations (for example ``y.append(10)`` and ``y.sort()``) mutate the " "object, whereas superficially similar operations (for example ``y = y + " @@ -854,7 +861,7 @@ msgstr "" "lugar, ``None``, lo cual ayudará a que tu programa genera un error que pueda " "ser diagnosticado fácilmente." -#: ../Doc/faq/programming.rst:480 +#: ../Doc/faq/programming.rst:481 msgid "" "However, there is one class of operations where the same operation sometimes " "has different behaviors with different types: the augmented assignment " @@ -870,11 +877,11 @@ msgstr "" "extend([1, 2, 3])`` y muta ``a_list``, mientras que ``some_tuple += (1, 2, " "3)`` y ``some_int += 1`` crea nuevos objetos)." -#: ../Doc/faq/programming.rst:487 +#: ../Doc/faq/programming.rst:488 msgid "In other words:" msgstr "En otras palabras:" -#: ../Doc/faq/programming.rst:489 +#: ../Doc/faq/programming.rst:490 msgid "" "If we have a mutable object (:class:`list`, :class:`dict`, :class:`set`, " "etc.), we can use some specific operations to mutate it and all the " @@ -884,7 +891,7 @@ msgstr "" "etc.), podemos usar algunas operaciones específicas para mutarlo y todas las " "variables que referencian al mismo verán el cambio reflejado." -#: ../Doc/faq/programming.rst:492 +#: ../Doc/faq/programming.rst:493 msgid "" "If we have an immutable object (:class:`str`, :class:`int`, :class:`tuple`, " "etc.), all the variables that refer to it will always see the same value, " @@ -896,7 +903,7 @@ msgstr "" "valor pero las operaciones que transforman ese valor en un nuevo valor " "siempre retornan un nuevo objeto." -#: ../Doc/faq/programming.rst:497 +#: ../Doc/faq/programming.rst:498 msgid "" "If you want to know if two variables refer to the same object or not, you " "can use the :keyword:`is` operator, or the built-in function :func:`id`." @@ -904,13 +911,13 @@ msgstr "" "Si deseas saber si dos variables referencian o no al mismo objeto puedes " "usar el operador :keyword:`is` o la función incorporada :func:`id`." -#: ../Doc/faq/programming.rst:502 +#: ../Doc/faq/programming.rst:503 msgid "How do I write a function with output parameters (call by reference)?" msgstr "" "¿Cómo puedo escribir una función sin parámetros (invocación mediante " "referencia)?" -#: ../Doc/faq/programming.rst:504 +#: ../Doc/faq/programming.rst:505 msgid "" "Remember that arguments are passed by assignment in Python. Since " "assignment just creates references to objects, there's no alias between an " @@ -923,46 +930,46 @@ msgstr "" "no hay invocación por referencia per se. Puedes obtener el mismo efecto " "deseado de formas distintas." -#: ../Doc/faq/programming.rst:509 +#: ../Doc/faq/programming.rst:510 msgid "By returning a tuple of the results::" msgstr "Mediante el retorno de una tupla de resultados::" -#: ../Doc/faq/programming.rst:520 +#: ../Doc/faq/programming.rst:521 msgid "This is almost always the clearest solution." msgstr "Esta es, casi siempre, la solución más clara." -#: ../Doc/faq/programming.rst:522 +#: ../Doc/faq/programming.rst:523 msgid "" "By using global variables. This isn't thread-safe, and is not recommended." msgstr "" "Mediante el uso de variables globales. No es thread-safe y no se recomienda." -#: ../Doc/faq/programming.rst:524 +#: ../Doc/faq/programming.rst:525 msgid "By passing a mutable (changeable in-place) object::" msgstr "Pasando un objeto mutable (intercambiable en el mismo sitio)::" -#: ../Doc/faq/programming.rst:535 +#: ../Doc/faq/programming.rst:536 msgid "By passing in a dictionary that gets mutated::" msgstr "Pasando un diccionario que muta::" -#: ../Doc/faq/programming.rst:546 +#: ../Doc/faq/programming.rst:547 msgid "Or bundle up values in a class instance::" msgstr "O empaquetar valores en una instancia de clase::" -#: ../Doc/faq/programming.rst:563 +#: ../Doc/faq/programming.rst:564 msgid "There's almost never a good reason to get this complicated." msgstr "Casi nunca existe una buena razón para hacer esto tan complicado." -#: ../Doc/faq/programming.rst:565 +#: ../Doc/faq/programming.rst:566 msgid "Your best choice is to return a tuple containing the multiple results." msgstr "" "Tu mejor opción es retornar una tupla que contenga los múltiples resultados." -#: ../Doc/faq/programming.rst:569 +#: ../Doc/faq/programming.rst:570 msgid "How do you make a higher order function in Python?" msgstr "¿Cómo se puede hacer una función de orden superior en Python?" -#: ../Doc/faq/programming.rst:571 +#: ../Doc/faq/programming.rst:572 msgid "" "You have two choices: you can use nested scopes or you can use callable " "objects. For example, suppose you wanted to define ``linear(a,b)`` which " @@ -974,19 +981,19 @@ msgstr "" "b)`` que devuelve una función ``f(x)`` que calcula el valor ``a*x+b``. Usar " "ámbitos de aplicación anidados::" -#: ../Doc/faq/programming.rst:580 +#: ../Doc/faq/programming.rst:581 msgid "Or using a callable object::" msgstr "O usar un objeto invocable::" -#: ../Doc/faq/programming.rst:590 +#: ../Doc/faq/programming.rst:591 msgid "In both cases, ::" msgstr "En ambos casos, ::" -#: ../Doc/faq/programming.rst:594 +#: ../Doc/faq/programming.rst:595 msgid "gives a callable object where ``taxes(10e6) == 0.3 * 10e6 + 2``." msgstr "nos da un objeto invocable donde ``taxes(10e6) == 0.3 * 10e6 + 2``." -#: ../Doc/faq/programming.rst:596 +#: ../Doc/faq/programming.rst:597 msgid "" "The callable object approach has the disadvantage that it is a bit slower " "and results in slightly longer code. However, note that a collection of " @@ -997,11 +1004,11 @@ msgstr "" "destacar que una colección de invocables pueden compartir su firma vía " "herencia::" -#: ../Doc/faq/programming.rst:605 +#: ../Doc/faq/programming.rst:606 msgid "Object can encapsulate state for several methods::" msgstr "Los objetos pueden encapsular el estado de varios métodos::" -#: ../Doc/faq/programming.rst:623 +#: ../Doc/faq/programming.rst:624 msgid "" "Here ``inc()``, ``dec()`` and ``reset()`` act like functions which share the " "same counting variable." @@ -1009,11 +1016,11 @@ msgstr "" "Aquí ``inc()``, ``dec()`` y ``reset()`` se comportan como funciones las " "cuales comparten la misma variable de conteo." -#: ../Doc/faq/programming.rst:628 +#: ../Doc/faq/programming.rst:629 msgid "How do I copy an object in Python?" msgstr "¿Cómo copio un objeto en Python?" -#: ../Doc/faq/programming.rst:630 +#: ../Doc/faq/programming.rst:631 msgid "" "In general, try :func:`copy.copy` or :func:`copy.deepcopy` for the general " "case. Not all objects can be copied, but most can." @@ -1022,7 +1029,7 @@ msgstr "" "general. No todos los objetos se pueden copiar pero la mayoría sí que pueden " "copiarse." -#: ../Doc/faq/programming.rst:633 +#: ../Doc/faq/programming.rst:634 msgid "" "Some objects can be copied more easily. Dictionaries have a :meth:`~dict." "copy` method::" @@ -1030,15 +1037,15 @@ msgstr "" "Algunas objetos se pueden copiar de forma más sencilla. Los diccionarios " "disponen de un método :meth:`~dict.copy`::" -#: ../Doc/faq/programming.rst:638 +#: ../Doc/faq/programming.rst:639 msgid "Sequences can be copied by slicing::" msgstr "Las secuencias se pueden copiar usando un rebanado::" -#: ../Doc/faq/programming.rst:644 +#: ../Doc/faq/programming.rst:645 msgid "How can I find the methods or attributes of an object?" msgstr "¿Cómo puedo encontrar los métodos o atributos de un objeto?" -#: ../Doc/faq/programming.rst:646 +#: ../Doc/faq/programming.rst:647 msgid "" "For an instance x of a user-defined class, ``dir(x)`` returns an " "alphabetized list of the names containing the instance attributes and " @@ -1049,11 +1056,11 @@ msgstr "" "atributos y métodos de la instancia y los atributos definidos mediante su " "clase." -#: ../Doc/faq/programming.rst:652 +#: ../Doc/faq/programming.rst:653 msgid "How can my code discover the name of an object?" msgstr "¿Cómo puede mi código descubrir el nombre de un objeto?" -#: ../Doc/faq/programming.rst:654 +#: ../Doc/faq/programming.rst:655 msgid "" "Generally speaking, it can't, because objects don't really have names. " "Essentially, assignment always binds a name to a value; the same is true of " @@ -1066,7 +1073,7 @@ msgstr "" "``class`` pero, en este caso, el valor es un invocable. Considera el " "siguiente código::" -#: ../Doc/faq/programming.rst:670 +#: ../Doc/faq/programming.rst:671 msgid "" "Arguably the class has a name: even though it is bound to two names and " "invoked through the name B the created instance is still reported as an " @@ -1079,7 +1086,7 @@ msgstr "" "si el nombre de la instancia es a o b, ya que ambos nombres están ligados al " "mismo valor." -#: ../Doc/faq/programming.rst:675 +#: ../Doc/faq/programming.rst:676 msgid "" "Generally speaking it should not be necessary for your code to \"know the " "names\" of particular values. Unless you are deliberately writing " @@ -1091,7 +1098,7 @@ msgstr "" "deliberadamente programas introspectivos, esto suele ser una indicación de " "que un cambio de enfoque podría ser beneficioso." -#: ../Doc/faq/programming.rst:680 +#: ../Doc/faq/programming.rst:681 msgid "" "In comp.lang.python, Fredrik Lundh once gave an excellent analogy in answer " "to this question:" @@ -1099,7 +1106,7 @@ msgstr "" "En comp.lang.python, Fredrik Lundh proporcionó una vez una excelente " "analogía en respuesta a esta pregunta:" -#: ../Doc/faq/programming.rst:683 +#: ../Doc/faq/programming.rst:684 msgid "" "The same way as you get the name of that cat you found on your porch: the " "cat (object) itself cannot tell you its name, and it doesn't really care -- " @@ -1112,7 +1119,7 @@ msgstr "" "llama sería preguntando a todos los vecinos (espacios de nombres) si es su " "gato (objeto)..." -#: ../Doc/faq/programming.rst:688 +#: ../Doc/faq/programming.rst:689 msgid "" "....and don't be surprised if you'll find that it's known by many names, or " "no name at all!" @@ -1120,15 +1127,15 @@ msgstr "" "...y no te sorprendas si encuentras que se le conoce mediante diferentes " "nombres o ¡nadie conoce su nombre!" -#: ../Doc/faq/programming.rst:693 +#: ../Doc/faq/programming.rst:694 msgid "What's up with the comma operator's precedence?" msgstr "¿Qué ocurre con la precedencia del operador coma?" -#: ../Doc/faq/programming.rst:695 +#: ../Doc/faq/programming.rst:696 msgid "Comma is not an operator in Python. Consider this session::" msgstr "La coma no es un operador en Python. Considera la sesión::" -#: ../Doc/faq/programming.rst:700 +#: ../Doc/faq/programming.rst:701 msgid "" "Since the comma is not an operator, but a separator between expressions the " "above is evaluated as if you had entered::" @@ -1136,11 +1143,11 @@ msgstr "" "Debido a que la coma no es un operador sino un separador entre expresiones " "lo anterior se evalúe como se ha introducido::" -#: ../Doc/faq/programming.rst:705 +#: ../Doc/faq/programming.rst:706 msgid "not::" msgstr "no::" -#: ../Doc/faq/programming.rst:709 +#: ../Doc/faq/programming.rst:710 msgid "" "The same is true of the various assignment operators (``=``, ``+=`` etc). " "They are not truly operators but syntactic delimiters in assignment " @@ -1150,15 +1157,15 @@ msgstr "" "No son realmente operadores sino delimitadores sintácticos en declaraciones " "de asignación." -#: ../Doc/faq/programming.rst:714 +#: ../Doc/faq/programming.rst:715 msgid "Is there an equivalent of C's \"?:\" ternary operator?" msgstr "¿Existe un equivalente al operador ternario de C \"?:\"?" -#: ../Doc/faq/programming.rst:716 +#: ../Doc/faq/programming.rst:717 msgid "Yes, there is. The syntax is as follows::" msgstr "Sí, existe. La sintaxis es como sigue::" -#: ../Doc/faq/programming.rst:723 +#: ../Doc/faq/programming.rst:724 msgid "" "Before this syntax was introduced in Python 2.5, a common idiom was to use " "logical operators::" @@ -1166,7 +1173,7 @@ msgstr "" "Antes de que esta sintaxis se introdujera en Python 2.5 una expresión común " "fue el uso de operadores lógicos::" -#: ../Doc/faq/programming.rst:728 +#: ../Doc/faq/programming.rst:729 msgid "" "However, this idiom is unsafe, as it can give wrong results when *on_true* " "has a false boolean value. Therefore, it is always better to use the ``... " @@ -1176,34 +1183,37 @@ msgstr "" "erróneos cuando *on_true* tiene un valor booleano falso. Por tanto, siempre " "es mejor usar la forma ``... if ... else ...``." -#: ../Doc/faq/programming.rst:734 +#: ../Doc/faq/programming.rst:735 msgid "Is it possible to write obfuscated one-liners in Python?" msgstr "" "¿Es posible escribir expresiones en una línea de forma ofuscada en Python?" -#: ../Doc/faq/programming.rst:736 +#: ../Doc/faq/programming.rst:737 +#, fuzzy msgid "" "Yes. Usually this is done by nesting :keyword:`lambda` within :keyword:`!" -"lambda`. See the following three examples, due to Ulf Bartelt::" +"lambda`. See the following three examples, slightly adapted from Ulf " +"Bartelt::" msgstr "" "Sí. Normalmente se puede hacer anidando :keyword:`lambda` dentro de :" "keyword:`!lambda`. Examina los siguientes tres ejemplos, creados por Ulf " "Bartelt::" -#: ../Doc/faq/programming.rst:763 +#: ../Doc/faq/programming.rst:764 msgid "Don't try this at home, kids!" msgstr "¡No probéis esto en casa, personitas!" -#: ../Doc/faq/programming.rst:769 +#: ../Doc/faq/programming.rst:770 msgid "What does the slash(/) in the parameter list of a function mean?" msgstr "" "¿Qué hace la barra (/) en medio de la lista de parámetros de una función?" -#: ../Doc/faq/programming.rst:771 +#: ../Doc/faq/programming.rst:772 +#, fuzzy msgid "" "A slash in the argument list of a function denotes that the parameters prior " "to it are positional-only. Positional-only parameters are the ones without " -"an externally-usable name. Upon calling a function that accepts positional-" +"an externally usable name. Upon calling a function that accepts positional-" "only parameters, arguments are mapped to parameters based solely on their " "position. For example, :func:`divmod` is a function that accepts positional-" "only parameters. Its documentation looks like this::" @@ -1217,7 +1227,7 @@ msgstr "" "acepta parámetros únicamente posicionales. Su documentación es de la " "siguiente forma::" -#: ../Doc/faq/programming.rst:784 +#: ../Doc/faq/programming.rst:785 msgid "" "The slash at the end of the parameter list means that both parameters are " "positional-only. Thus, calling :func:`divmod` with keyword arguments would " @@ -1227,15 +1237,15 @@ msgstr "" "son únicamente posicionales. Por tanto, invocar a :func:`pow` con " "argumentos con palabra clave podría derivar en un error::" -#: ../Doc/faq/programming.rst:795 +#: ../Doc/faq/programming.rst:796 msgid "Numbers and strings" msgstr "Números y cadenas" -#: ../Doc/faq/programming.rst:798 +#: ../Doc/faq/programming.rst:799 msgid "How do I specify hexadecimal and octal integers?" msgstr "¿Cómo puedo especificar enteros hexadecimales y octales?" -#: ../Doc/faq/programming.rst:800 +#: ../Doc/faq/programming.rst:801 msgid "" "To specify an octal digit, precede the octal value with a zero, and then a " "lower or uppercase \"o\". For example, to set the variable \"a\" to the " @@ -1245,7 +1255,7 @@ msgstr "" "\"o\" en minúscula o mayúscula. Por ejemplo, para definir la variable \"a\" " "con el valor octal \"10\" (8 en decimal), escribe::" -#: ../Doc/faq/programming.rst:808 +#: ../Doc/faq/programming.rst:809 msgid "" "Hexadecimal is just as easy. Simply precede the hexadecimal number with a " "zero, and then a lower or uppercase \"x\". Hexadecimal digits can be " @@ -1256,11 +1266,11 @@ msgstr "" "hexadecimales se pueden especificar en minúsculas o mayúsculas. Por " "ejemplo, en el intérprete de Python::" -#: ../Doc/faq/programming.rst:821 +#: ../Doc/faq/programming.rst:822 msgid "Why does -22 // 10 return -3?" msgstr "¿Por qué -22 // 10 devuelve -3?" -#: ../Doc/faq/programming.rst:823 +#: ../Doc/faq/programming.rst:824 msgid "" "It's primarily driven by the desire that ``i % j`` have the same sign as " "``j``. If you want that, and also want::" @@ -1268,7 +1278,7 @@ msgstr "" "Es debido, principalmente al deseo que ``i % j`` tenga el mismo signo que " "``j``. Si quieres eso y, además, quieres::" -#: ../Doc/faq/programming.rst:828 +#: ../Doc/faq/programming.rst:829 msgid "" "then integer division has to return the floor. C also requires that " "identity to hold, and then compilers that truncate ``i // j`` need to make " @@ -1279,7 +1289,7 @@ msgstr "" "compiladores truncan ``i // j`` necesitan que ``i % j`` tenga el mismo signo " "que ``i``." -#: ../Doc/faq/programming.rst:832 +#: ../Doc/faq/programming.rst:833 msgid "" "There are few real use cases for ``i % j`` when ``j`` is negative. When " "``j`` is positive, there are many, and in virtually all of them it's more " @@ -1293,11 +1303,11 @@ msgstr "" "las 10, ¿qué dijo hace 200 horas? ``-190 % 12 == 2`` es útil; ``-190 % 12 " "== -10`` es un error listo para morderte." -#: ../Doc/faq/programming.rst:840 +#: ../Doc/faq/programming.rst:841 msgid "How do I get int literal attribute instead of SyntaxError?" msgstr "¿Cómo puedo obtener un atributo int literal en lugar de SyntaxError?" -#: ../Doc/faq/programming.rst:842 +#: ../Doc/faq/programming.rst:843 msgid "" "Trying to lookup an ``int`` literal attribute in the normal manner gives a " "syntax error because the period is seen as a decimal point::" @@ -1306,18 +1316,18 @@ msgstr "" "obtiene un error de sintaxis porque el punto es interpretado como un punto " "decimal::" -#: ../Doc/faq/programming.rst:851 +#: ../Doc/faq/programming.rst:852 msgid "" "The solution is to separate the literal from the period with either a space " "or parentheses." msgstr "" "La solución es separar el literal del punto con un espacio o un paréntesis." -#: ../Doc/faq/programming.rst:861 +#: ../Doc/faq/programming.rst:862 msgid "How do I convert a string to a number?" msgstr "¿Cómo convierto una cadena a un número?" -#: ../Doc/faq/programming.rst:863 +#: ../Doc/faq/programming.rst:864 msgid "" "For integers, use the built-in :func:`int` type constructor, e.g. " "``int('144') == 144``. Similarly, :func:`float` converts to floating-point, " @@ -1328,7 +1338,7 @@ msgstr "" "convierte a un número de coma flotante, por ejemplo ``float('144') == " "144.0``." -#: ../Doc/faq/programming.rst:867 +#: ../Doc/faq/programming.rst:868 msgid "" "By default, these interpret the number as decimal, so that ``int('0144') == " "144`` holds true, and ``int('0x144')`` raises :exc:`ValueError`. " @@ -1345,7 +1355,7 @@ msgstr "" "rules: un prefijo '0o' indica octal y un prefijo '0x' indica un número " "hexadecimal." -#: ../Doc/faq/programming.rst:874 +#: ../Doc/faq/programming.rst:875 msgid "" "Do not use the built-in function :func:`eval` if all you need is to convert " "strings to numbers. :func:`eval` will be significantly slower and it " @@ -1361,7 +1371,7 @@ msgstr "" "pasar``__import__('os').system(\"rm -rf $HOME\")`` lo cual borraría el " "directorio home al completo." -#: ../Doc/faq/programming.rst:881 +#: ../Doc/faq/programming.rst:882 msgid "" ":func:`eval` also has the effect of interpreting numbers as Python " "expressions, so that e.g. ``eval('09')`` gives a syntax error because Python " @@ -1372,11 +1382,11 @@ msgstr "" "sintaxis porque Python no permite un '0' inicial en un número decimal " "(excepto '0')." -#: ../Doc/faq/programming.rst:887 +#: ../Doc/faq/programming.rst:888 msgid "How do I convert a number to a string?" msgstr "¿Cómo puedo convertir un número a una cadena?" -#: ../Doc/faq/programming.rst:889 +#: ../Doc/faq/programming.rst:890 msgid "" "To convert, e.g., the number 144 to the string '144', use the built-in type " "constructor :func:`str`. If you want a hexadecimal or octal representation, " @@ -1392,11 +1402,11 @@ msgstr "" "ref:`formatstrings`, por ejemplo ``\"{:04d}\".format(144)`` produce " "``'0144'`` y ``\"{:.3f}\".format(1.0/3.0)`` produce ``'0.333'``." -#: ../Doc/faq/programming.rst:898 +#: ../Doc/faq/programming.rst:899 msgid "How do I modify a string in place?" msgstr "¿Cómo puedo modificar una cadena in situ?" -#: ../Doc/faq/programming.rst:900 +#: ../Doc/faq/programming.rst:901 msgid "" "You can't, because strings are immutable. In most situations, you should " "simply construct a new string from the various parts you want to assemble it " @@ -1410,15 +1420,15 @@ msgstr "" "habilidad de modificar en el mismo lugar datos unicode prueba usando el " "objeto :class:`io.StringIO` o el módulo :mod:`array`::" -#: ../Doc/faq/programming.rst:930 +#: ../Doc/faq/programming.rst:931 msgid "How do I use strings to call functions/methods?" msgstr "¿Cómo puedo usar cadenas para invocar funciones/métodos?" -#: ../Doc/faq/programming.rst:932 +#: ../Doc/faq/programming.rst:933 msgid "There are various techniques." msgstr "Existen varias técnicas." -#: ../Doc/faq/programming.rst:934 +#: ../Doc/faq/programming.rst:935 msgid "" "The best is to use a dictionary that maps strings to functions. The primary " "advantage of this technique is that the strings do not need to match the " @@ -1430,11 +1440,11 @@ msgstr "" "iguales que los nombres de las funciones. Esta es también la principal " "técnica que se usa para emular un constructo *case*::" -#: ../Doc/faq/programming.rst:949 +#: ../Doc/faq/programming.rst:950 msgid "Use the built-in function :func:`getattr`::" msgstr "Usa la función incorporada :func:`getattr`::" -#: ../Doc/faq/programming.rst:954 +#: ../Doc/faq/programming.rst:955 msgid "" "Note that :func:`getattr` works on any object, including classes, class " "instances, modules, and so on." @@ -1442,15 +1452,15 @@ msgstr "" "Nótese que :func:`getattr` funciona en cualquier objeto, incluido clases, " "instancias de clases, módulos, etc." -#: ../Doc/faq/programming.rst:957 +#: ../Doc/faq/programming.rst:958 msgid "This is used in several places in the standard library, like this::" msgstr "Esto se usa en varios lugares de la biblioteca estándar, como esto::" -#: ../Doc/faq/programming.rst:970 +#: ../Doc/faq/programming.rst:971 msgid "Use :func:`locals` to resolve the function name::" msgstr "Use :func:`locals` para resolver el nombre de la función::" -#: ../Doc/faq/programming.rst:982 +#: ../Doc/faq/programming.rst:983 msgid "" "Is there an equivalent to Perl's chomp() for removing trailing newlines from " "strings?" @@ -1458,7 +1468,7 @@ msgstr "" "¿Existe un equivalente a chomp() en Perl para eliminar nuevas líneas al " "final de las cadenas?" -#: ../Doc/faq/programming.rst:984 +#: ../Doc/faq/programming.rst:985 msgid "" "You can use ``S.rstrip(\"\\r\\n\")`` to remove all occurrences of any line " "terminator from the end of the string ``S`` without removing other trailing " @@ -1472,7 +1482,7 @@ msgstr "" "representa más de una línea con varias líneas vacías al final, las " "terminaciones de línea para todas las líneas vacías se eliminarán::" -#: ../Doc/faq/programming.rst:996 +#: ../Doc/faq/programming.rst:997 msgid "" "Since this is typically only desired when reading text one line at a time, " "using ``S.rstrip()`` this way works well." @@ -1480,15 +1490,15 @@ msgstr "" "Ya que esto solo sería deseable, típicamente, cuando lees texto línea a " "línea, usar ``S.rstrip()`` de esta forma funcionaría bien." -#: ../Doc/faq/programming.rst:1001 +#: ../Doc/faq/programming.rst:1002 msgid "Is there a scanf() or sscanf() equivalent?" msgstr "¿Existe un equivalente a scanf() o a sscanf() ?" -#: ../Doc/faq/programming.rst:1003 +#: ../Doc/faq/programming.rst:1004 msgid "Not as such." msgstr "No de la misma forma." -#: ../Doc/faq/programming.rst:1005 +#: ../Doc/faq/programming.rst:1006 msgid "" "For simple input parsing, the easiest approach is usually to split the line " "into whitespace-delimited words using the :meth:`~str.split` method of " @@ -1504,7 +1514,7 @@ msgstr "" "``split()`` permite un parámetro opcional \"sep\" que es útil si la línea " "usa algo diferente a espacios en blanco como separador." -#: ../Doc/faq/programming.rst:1011 +#: ../Doc/faq/programming.rst:1012 msgid "" "For more complicated input parsing, regular expressions are more powerful " "than C's :c:func:`sscanf` and better suited for the task." @@ -1513,23 +1523,23 @@ msgstr "" "regulares son más poderosas que :c:func:`sscanf` de C y se ajustan mejor a " "esta tarea." -#: ../Doc/faq/programming.rst:1016 +#: ../Doc/faq/programming.rst:1017 msgid "What does 'UnicodeDecodeError' or 'UnicodeEncodeError' error mean?" msgstr "¿Qué significa 'UnicodeDecodeError' o 'UnicodeEncodeError'?" -#: ../Doc/faq/programming.rst:1018 +#: ../Doc/faq/programming.rst:1019 msgid "See the :ref:`unicode-howto`." msgstr "Ver :ref:`unicode-howto`." -#: ../Doc/faq/programming.rst:1022 +#: ../Doc/faq/programming.rst:1023 msgid "Performance" msgstr "Rendimiento" -#: ../Doc/faq/programming.rst:1025 +#: ../Doc/faq/programming.rst:1026 msgid "My program is too slow. How do I speed it up?" msgstr "Mi programa es muy lento. ¿Cómo puedo acelerarlo?" -#: ../Doc/faq/programming.rst:1027 +#: ../Doc/faq/programming.rst:1028 msgid "" "That's a tough one, in general. First, here are a list of things to " "remember before diving further:" @@ -1537,7 +1547,7 @@ msgstr "" "Esa es una pregunta difícil, en general. Primero, aquí tienes una lista de " "cosas a recordar antes de ir más allá:" -#: ../Doc/faq/programming.rst:1030 +#: ../Doc/faq/programming.rst:1031 msgid "" "Performance characteristics vary across Python implementations. This FAQ " "focuses on :term:`CPython`." @@ -1546,7 +1556,7 @@ msgstr "" "implementaciones de Python. Estas preguntas frecuentes se enfocan en :term:" "`CPython`." -#: ../Doc/faq/programming.rst:1032 +#: ../Doc/faq/programming.rst:1033 msgid "" "Behaviour can vary across operating systems, especially when talking about I/" "O or multi-threading." @@ -1554,7 +1564,7 @@ msgstr "" "El comportamiento puede variar entre distintos sistemas operativos, " "especialmente cuando se habla de tareas I/O o multi-tarea." -#: ../Doc/faq/programming.rst:1034 +#: ../Doc/faq/programming.rst:1035 msgid "" "You should always find the hot spots in your program *before* attempting to " "optimize any code (see the :mod:`profile` module)." @@ -1562,7 +1572,7 @@ msgstr "" "Siempre deberías encontrar las partes importantes en tu programa *antes* de " "intentar optimizar el código (ver el módulo :mod:`profile`)." -#: ../Doc/faq/programming.rst:1036 +#: ../Doc/faq/programming.rst:1037 msgid "" "Writing benchmark scripts will allow you to iterate quickly when searching " "for improvements (see the :mod:`timeit` module)." @@ -1571,7 +1581,7 @@ msgstr "" "rápidamente cuando te encuentres buscando mejoras (ver el módulo :mod:" "`timeit`)." -#: ../Doc/faq/programming.rst:1038 +#: ../Doc/faq/programming.rst:1039 msgid "" "It is highly recommended to have good code coverage (through unit testing or " "any other technique) before potentially introducing regressions hidden in " @@ -1581,7 +1591,7 @@ msgstr "" "partir de pruebas unitarias o cualquier otra técnica) antes de introducir " "potenciales regresiones ocultas en sofisticadas optimizaciones." -#: ../Doc/faq/programming.rst:1042 +#: ../Doc/faq/programming.rst:1043 msgid "" "That being said, there are many tricks to speed up Python code. Here are " "some general principles which go a long way towards reaching acceptable " @@ -1591,7 +1601,7 @@ msgstr "" "tienes algunos principios generales que te permitirán llegar a alcanzar " "niveles de rendimiento aceptables:" -#: ../Doc/faq/programming.rst:1046 +#: ../Doc/faq/programming.rst:1047 msgid "" "Making your algorithms faster (or changing to faster ones) can yield much " "larger benefits than trying to sprinkle micro-optimization tricks all over " @@ -1601,7 +1611,7 @@ msgstr "" "provocar mayores beneficios que intentar unos pocos trucos de micro-" "optimización a través de todo tu código." -#: ../Doc/faq/programming.rst:1050 +#: ../Doc/faq/programming.rst:1051 msgid "" "Use the right data structures. Study documentation for the :ref:`bltin-" "types` and the :mod:`collections` module." @@ -1609,7 +1619,7 @@ msgstr "" "Utiliza las estructuras de datos correctas. Estudia la documentación para " "los :ref:`bltin-types` y el módulo :mod:`collections`." -#: ../Doc/faq/programming.rst:1053 +#: ../Doc/faq/programming.rst:1054 msgid "" "When the standard library provides a primitive for doing something, it is " "likely (although not guaranteed) to be faster than any alternative you may " @@ -1627,7 +1637,7 @@ msgstr "" "función relacionada :func:`sorted` para ordenar (y ver :ref:`sortinghowto` " "para ver ejemplos de uso moderadamente avanzados)." -#: ../Doc/faq/programming.rst:1061 +#: ../Doc/faq/programming.rst:1062 msgid "" "Abstractions tend to create indirections and force the interpreter to work " "more. If the levels of indirection outweigh the amount of useful work done, " @@ -1641,10 +1651,11 @@ msgstr "" "especialmente, en forma de pequeñas funciones o métodos (que también va en " "detrimento de la legibilidad)." -#: ../Doc/faq/programming.rst:1067 +#: ../Doc/faq/programming.rst:1068 +#, fuzzy msgid "" "If you have reached the limit of what pure Python can allow, there are tools " -"to take you further away. For example, `Cython `_ can " +"to take you further away. For example, `Cython `_ can " "compile a slightly modified version of Python code into a C extension, and " "can be used on many different platforms. Cython can take advantage of " "compilation (and optional type annotations) to make your code significantly " @@ -1662,7 +1673,7 @@ msgstr "" "también puedes escribir :ref:`un módulo de extensión en C ` " "tú mismo." -#: ../Doc/faq/programming.rst:1077 +#: ../Doc/faq/programming.rst:1078 msgid "" "The wiki page devoted to `performance tips `_." @@ -1670,12 +1681,12 @@ msgstr "" "La página de la wiki dedicada a `trucos de rendimiento `_." -#: ../Doc/faq/programming.rst:1083 +#: ../Doc/faq/programming.rst:1084 msgid "What is the most efficient way to concatenate many strings together?" msgstr "" "¿Cuál es la forma más eficiente de concatenar muchas cadenas conjuntamente?" -#: ../Doc/faq/programming.rst:1085 +#: ../Doc/faq/programming.rst:1086 msgid "" ":class:`str` and :class:`bytes` objects are immutable, therefore " "concatenating many strings together is inefficient as each concatenation " @@ -1688,7 +1699,7 @@ msgstr "" "en tiempo de ejecución es cuadrático en relación a la longitud de la cadena " "final." -#: ../Doc/faq/programming.rst:1090 +#: ../Doc/faq/programming.rst:1091 msgid "" "To accumulate many :class:`str` objects, the recommended idiom is to place " "them into a list and call :meth:`str.join` at the end::" @@ -1696,13 +1707,13 @@ msgstr "" "Para acumular muchos objetos :class:`str`, la forma recomendada sería " "colocarlos en una lista y llamar al método :meth:`str.join` al final::" -#: ../Doc/faq/programming.rst:1098 +#: ../Doc/faq/programming.rst:1099 msgid "(another reasonably efficient idiom is to use :class:`io.StringIO`)" msgstr "" "(otra forma que sería razonable en términos de eficiencia sería usar :class:" "`io.StringIO`)" -#: ../Doc/faq/programming.rst:1100 +#: ../Doc/faq/programming.rst:1101 msgid "" "To accumulate many :class:`bytes` objects, the recommended idiom is to " "extend a :class:`bytearray` object using in-place concatenation (the ``+=`` " @@ -1712,15 +1723,15 @@ msgstr "" "extender un objeto :class:`bytearray` usando el operador de concatenación " "in situ (el operador ``+=``)::" -#: ../Doc/faq/programming.rst:1109 +#: ../Doc/faq/programming.rst:1110 msgid "Sequences (Tuples/Lists)" msgstr "Secuencias (Tuplas/Listas)" -#: ../Doc/faq/programming.rst:1112 +#: ../Doc/faq/programming.rst:1113 msgid "How do I convert between tuples and lists?" msgstr "¿Cómo convertir entre tuplas y listas?" -#: ../Doc/faq/programming.rst:1114 +#: ../Doc/faq/programming.rst:1115 msgid "" "The type constructor ``tuple(seq)`` converts any sequence (actually, any " "iterable) into a tuple with the same items in the same order." @@ -1729,7 +1740,7 @@ msgstr "" "cualquier iterable) en una tupla con los mismos elementos y en el mismo " "orden." -#: ../Doc/faq/programming.rst:1117 +#: ../Doc/faq/programming.rst:1118 msgid "" "For example, ``tuple([1, 2, 3])`` yields ``(1, 2, 3)`` and ``tuple('abc')`` " "yields ``('a', 'b', 'c')``. If the argument is a tuple, it does not make a " @@ -1742,7 +1753,7 @@ msgstr "" "llamar a :func:`tuple` no tendrá mucho coste si no estás seguro si un objeto " "ya es una tupla." -#: ../Doc/faq/programming.rst:1122 +#: ../Doc/faq/programming.rst:1123 msgid "" "The type constructor ``list(seq)`` converts any sequence or iterable into a " "list with the same items in the same order. For example, ``list((1, 2, " @@ -1755,11 +1766,11 @@ msgstr "" "``['a', 'b', 'c']``. Si el argumento es una lista, hará una copia como lo " "haría ``seq[:]``." -#: ../Doc/faq/programming.rst:1129 +#: ../Doc/faq/programming.rst:1130 msgid "What's a negative index?" msgstr "¿Qué es un índice negativo?" -#: ../Doc/faq/programming.rst:1131 +#: ../Doc/faq/programming.rst:1132 msgid "" "Python sequences are indexed with positive numbers and negative numbers. " "For positive numbers 0 is the first index 1 is the second index and so " @@ -1772,7 +1783,7 @@ msgstr "" "así en adelante. Para los índices negativos el -1 el último índice, el -2 " "el penúltimo, etc. Piensa en ``seq[-n]`` como si fuera ``seq[len(seq)-n]``." -#: ../Doc/faq/programming.rst:1136 +#: ../Doc/faq/programming.rst:1137 msgid "" "Using negative indices can be very convenient. For example ``S[:-1]`` is " "all of the string except for its last character, which is useful for " @@ -1782,15 +1793,15 @@ msgstr "" "``S[:-1]`` se usa para todo la cadena excepto para su último carácter, lo " "cual es útil para eliminar el salto de línea final de una cadena." -#: ../Doc/faq/programming.rst:1142 +#: ../Doc/faq/programming.rst:1143 msgid "How do I iterate over a sequence in reverse order?" msgstr "¿Cómo puedo iterar sobre una secuencia en orden inverso?" -#: ../Doc/faq/programming.rst:1144 +#: ../Doc/faq/programming.rst:1145 msgid "Use the :func:`reversed` built-in function::" msgstr "Usa la función incorporada :func:`reversed`::" -#: ../Doc/faq/programming.rst:1149 +#: ../Doc/faq/programming.rst:1150 msgid "" "This won't touch your original sequence, but build a new copy with reversed " "order to iterate over." @@ -1798,21 +1809,21 @@ msgstr "" "Esto no transformará la secuencia original sino que creará una nueva copia " "en orden inverso por la que se puede iterar." -#: ../Doc/faq/programming.rst:1154 +#: ../Doc/faq/programming.rst:1155 msgid "How do you remove duplicates from a list?" msgstr "¿Cómo eliminar duplicados de una lista?" -#: ../Doc/faq/programming.rst:1156 +#: ../Doc/faq/programming.rst:1157 msgid "See the Python Cookbook for a long discussion of many ways to do this:" msgstr "" "Puedes echar un vistazo al recetario de Python para ver una gran discusión " "mostrando muchas formas de hacer esto:" -#: ../Doc/faq/programming.rst:1158 +#: ../Doc/faq/programming.rst:1159 msgid "https://code.activestate.com/recipes/52560/" msgstr "https://code.activestate.com/recipes/52560/" -#: ../Doc/faq/programming.rst:1160 +#: ../Doc/faq/programming.rst:1161 msgid "" "If you don't mind reordering the list, sort it and then scan from the end of " "the list, deleting duplicates as you go::" @@ -1820,7 +1831,7 @@ msgstr "" "Si no te preocupa que la lista se reordene la puedes ordenar y, después, y " "después escanearla desde el final borrando duplicados a medida que avanzas::" -#: ../Doc/faq/programming.rst:1172 +#: ../Doc/faq/programming.rst:1173 msgid "" "If all elements of the list may be used as set keys (i.e. they are all :term:" "`hashable`) this is often faster ::" @@ -1828,7 +1839,7 @@ msgstr "" "Si todos los elementos de la lista pueden ser usados como claves (por " "ejemplo son todos :term:`hashable`) esto será, en general, más rápido ::" -#: ../Doc/faq/programming.rst:1177 +#: ../Doc/faq/programming.rst:1178 msgid "" "This converts the list into a set, thereby removing duplicates, and then " "back into a list." @@ -1836,11 +1847,11 @@ msgstr "" "Esto convierte la lista en un conjunto eliminando, por tanto, los duplicados " "y, posteriormente, puedes volver a una lista." -#: ../Doc/faq/programming.rst:1182 +#: ../Doc/faq/programming.rst:1183 msgid "How do you remove multiple items from a list" msgstr "Cómo eliminar duplicados de una lista" -#: ../Doc/faq/programming.rst:1184 +#: ../Doc/faq/programming.rst:1185 msgid "" "As with removing duplicates, explicitly iterating in reverse with a delete " "condition is one possibility. However, it is easier and faster to use slice " @@ -1852,19 +1863,19 @@ msgstr "" "es más fácil y rápido utilizar el reemplazo de sectores con una iteración " "directa implícita o explícita. Aquí hay tres variaciones.::" -#: ../Doc/faq/programming.rst:1193 +#: ../Doc/faq/programming.rst:1194 msgid "The list comprehension may be fastest." msgstr "Esta comprensión de lista puede ser la más rápida." -#: ../Doc/faq/programming.rst:1197 +#: ../Doc/faq/programming.rst:1198 msgid "How do you make an array in Python?" msgstr "¿Cómo se puede hacer un array en Python?" -#: ../Doc/faq/programming.rst:1199 +#: ../Doc/faq/programming.rst:1200 msgid "Use a list::" msgstr "Usa una lista::" -#: ../Doc/faq/programming.rst:1203 +#: ../Doc/faq/programming.rst:1204 msgid "" "Lists are equivalent to C or Pascal arrays in their time complexity; the " "primary difference is that a Python list can contain objects of many " @@ -1874,7 +1885,7 @@ msgstr "" "La principal diferencia es que una lista en Python puede contener objetos de " "diferentes tipos." -#: ../Doc/faq/programming.rst:1206 +#: ../Doc/faq/programming.rst:1207 msgid "" "The ``array`` module also provides methods for creating arrays of fixed " "types with compact representations, but they are slower to index than " @@ -1886,14 +1897,14 @@ msgstr "" "listas. Además, debes tener en cuenta que las extensiones Numpy y otras " "definen estructuras de tipo array con diversas características también." -#: ../Doc/faq/programming.rst:1211 +#: ../Doc/faq/programming.rst:1212 msgid "" "To get Lisp-style linked lists, you can emulate cons cells using tuples::" msgstr "" "Para obtener listas enlazadas al estilo de las de Lisp, puedes emular celdas " "cons usando tuplas::" -#: ../Doc/faq/programming.rst:1215 +#: ../Doc/faq/programming.rst:1216 msgid "" "If mutability is desired, you could use lists instead of tuples. Here the " "analogue of lisp car is ``lisp_list[0]`` and the analogue of cdr is " @@ -1906,25 +1917,25 @@ msgstr "" "debido a que, normalmente, será bastante más lento que el usar listas " "Python." -#: ../Doc/faq/programming.rst:1224 +#: ../Doc/faq/programming.rst:1225 msgid "How do I create a multidimensional list?" msgstr "¿Cómo puedo crear una lista multidimensional?" -#: ../Doc/faq/programming.rst:1226 +#: ../Doc/faq/programming.rst:1227 msgid "You probably tried to make a multidimensional array like this::" msgstr "" "Seguramente hayas intentado crear un array multidimensional de la siguiente " "forma::" -#: ../Doc/faq/programming.rst:1230 +#: ../Doc/faq/programming.rst:1231 msgid "This looks correct if you print it:" msgstr "Esto parece correcto si lo muestras en pantalla:" -#: ../Doc/faq/programming.rst:1241 +#: ../Doc/faq/programming.rst:1242 msgid "But when you assign a value, it shows up in multiple places:" msgstr "Pero cuando asignas un valor, se muestra en múltiples sitios:" -#: ../Doc/faq/programming.rst:1253 +#: ../Doc/faq/programming.rst:1254 msgid "" "The reason is that replicating a list with ``*`` doesn't create copies, it " "only creates references to the existing objects. The ``*3`` creates a list " @@ -1936,7 +1947,7 @@ msgstr "" "3 referencias a la misma lista de longitud dos. Cambios a una fila se " "mostrarán en todas las filas, lo cual, seguramente, no es lo que deseas." -#: ../Doc/faq/programming.rst:1258 +#: ../Doc/faq/programming.rst:1259 msgid "" "The suggested approach is to create a list of the desired length first and " "then fill in each element with a newly created list::" @@ -1945,7 +1956,7 @@ msgstr "" "deseada y, después, rellenar cada elemento con una lista creada en ese " "momento::" -#: ../Doc/faq/programming.rst:1265 +#: ../Doc/faq/programming.rst:1266 msgid "" "This generates a list containing 3 different lists of length two. You can " "also use a list comprehension::" @@ -1953,30 +1964,31 @@ msgstr "" "Esto genera una lista conteniendo 3 listas distintas de longitud dos. " "También puedes usar una comprensión de lista::" -#: ../Doc/faq/programming.rst:1271 +#: ../Doc/faq/programming.rst:1272 +#, fuzzy msgid "" -"Or, you can use an extension that provides a matrix datatype; `NumPy `_ is the best known." +"Or, you can use an extension that provides a matrix datatype; `NumPy " +"`_ is the best known." msgstr "" "O puedes usar una extensión que proporcione un tipo de dato para matrices; " "`NumPy `_ es la más conocida." -#: ../Doc/faq/programming.rst:1276 +#: ../Doc/faq/programming.rst:1277 msgid "How do I apply a method to a sequence of objects?" msgstr "¿Cómo puedo aplicar un método a una secuencia de objetos?" -#: ../Doc/faq/programming.rst:1278 +#: ../Doc/faq/programming.rst:1279 msgid "Use a list comprehension::" msgstr "Usa una comprensión de listas::" -#: ../Doc/faq/programming.rst:1285 +#: ../Doc/faq/programming.rst:1286 msgid "" "Why does a_tuple[i] += ['item'] raise an exception when the addition works?" msgstr "" "¿Por qué hacer lo siguiente, ``a_tuple[i] += ['item']``, lanza una excepción " "cuando la suma funciona?" -#: ../Doc/faq/programming.rst:1287 +#: ../Doc/faq/programming.rst:1288 msgid "" "This is because of a combination of the fact that augmented assignment " "operators are *assignment* operators, and the difference between mutable and " @@ -1986,7 +1998,7 @@ msgstr "" "aumentada es un operador de *asignación* y a la diferencia entre objetos " "mutables e inmutable en Python." -#: ../Doc/faq/programming.rst:1291 +#: ../Doc/faq/programming.rst:1292 msgid "" "This discussion applies in general when augmented assignment operators are " "applied to elements of a tuple that point to mutable objects, but we'll use " @@ -1996,11 +2008,11 @@ msgstr "" "aumentada se aplican a elementos de una tupla que apuntan a objetos " "mutables. Pero vamos a usar una ``lista`` y ``+=`` para el ejemplo." -#: ../Doc/faq/programming.rst:1295 +#: ../Doc/faq/programming.rst:1296 msgid "If you wrote::" msgstr "Si escribes::" -#: ../Doc/faq/programming.rst:1303 +#: ../Doc/faq/programming.rst:1304 msgid "" "The reason for the exception should be immediately clear: ``1`` is added to " "the object ``a_tuple[0]`` points to (``1``), producing the result object, " @@ -2014,7 +2026,7 @@ msgstr "" "``2``, al elemento ``0`` de la tupla, obtenemos un error debido a que no " "podemos cambiar el elemento al que apunta la tupla." -#: ../Doc/faq/programming.rst:1309 +#: ../Doc/faq/programming.rst:1310 msgid "" "Under the covers, what this augmented assignment statement is doing is " "approximately this::" @@ -2022,7 +2034,7 @@ msgstr "" "En realidad, lo que esta declaración de asignación aumentada está haciendo " "es, aproximadamente, lo siguiente::" -#: ../Doc/faq/programming.rst:1318 +#: ../Doc/faq/programming.rst:1319 msgid "" "It is the assignment part of the operation that produces the error, since a " "tuple is immutable." @@ -2030,11 +2042,11 @@ msgstr "" "Es la parte de asignación de la operación la que provoca el error, debido a " "que una tupla es inmutable." -#: ../Doc/faq/programming.rst:1321 +#: ../Doc/faq/programming.rst:1322 msgid "When you write something like::" msgstr "Cuando escribes algo como lo siguiente::" -#: ../Doc/faq/programming.rst:1329 +#: ../Doc/faq/programming.rst:1330 msgid "" "The exception is a bit more surprising, and even more surprising is the fact " "that even though there was an error, the append worked::" @@ -2042,7 +2054,7 @@ msgstr "" "La excepción es un poco más sorprendente e, incluso, más sorprendente es el " "hecho que aunque hubo un error, la agregación funcionó::" -#: ../Doc/faq/programming.rst:1335 +#: ../Doc/faq/programming.rst:1336 msgid "" "To see why this happens, you need to know that (a) if an object implements " "an ``__iadd__`` magic method, it gets called when the ``+=`` augmented " @@ -2058,11 +2070,11 @@ msgstr "" "``extend`` en la lista y retornar la lista. Es por esto que decimos que " "para listas, ``+=`` es un atajo para ``list.extend``::" -#: ../Doc/faq/programming.rst:1347 +#: ../Doc/faq/programming.rst:1348 msgid "This is equivalent to::" msgstr "Esto es equivalente a ::" -#: ../Doc/faq/programming.rst:1352 +#: ../Doc/faq/programming.rst:1353 msgid "" "The object pointed to by a_list has been mutated, and the pointer to the " "mutated object is assigned back to ``a_list``. The end result of the " @@ -2074,13 +2086,13 @@ msgstr "" "opción debido a que es un puntero al mismo objeto al que estaba apuntando " "``a_list`` pero la asignación sí que ocurre." -#: ../Doc/faq/programming.rst:1357 +#: ../Doc/faq/programming.rst:1358 msgid "Thus, in our tuple example what is happening is equivalent to::" msgstr "" "Por tanto, en nuestro ejemplo con tupla lo que está pasando es equivalente " "a::" -#: ../Doc/faq/programming.rst:1365 +#: ../Doc/faq/programming.rst:1366 msgid "" "The ``__iadd__`` succeeds, and thus the list is extended, but even though " "``result`` points to the same object that ``a_tuple[0]`` already points to, " @@ -2092,7 +2104,7 @@ msgstr "" "``a_tuple[0]`` la asignación final sigue resultando en un error, debido a " "que las tuplas son inmutables." -#: ../Doc/faq/programming.rst:1371 +#: ../Doc/faq/programming.rst:1372 msgid "" "I want to do a complicated sort: can you do a Schwartzian Transform in " "Python?" @@ -2100,7 +2112,7 @@ msgstr "" "Quiero hacer una ordenación compleja: ¿Puedes hacer una transformada " "Schwartziana (Schwartzian Transform) en Python?" -#: ../Doc/faq/programming.rst:1373 +#: ../Doc/faq/programming.rst:1374 msgid "" "The technique, attributed to Randal Schwartz of the Perl community, sorts " "the elements of a list by a metric which maps each element to its \"sort " @@ -2112,11 +2124,11 @@ msgstr "" "elemento a su \"valor orden\". En Python, usa el argumento ``key`` par el " "método :meth:`list.sort`::" -#: ../Doc/faq/programming.rst:1382 +#: ../Doc/faq/programming.rst:1383 msgid "How can I sort one list by values from another list?" msgstr "¿Cómo puedo ordenar una lista a partir de valores de otra lista?" -#: ../Doc/faq/programming.rst:1384 +#: ../Doc/faq/programming.rst:1385 msgid "" "Merge them into an iterator of tuples, sort the resulting list, and then " "pick out the element you want. ::" @@ -2124,15 +2136,15 @@ msgstr "" "Las puedes unir en un iterador de tuplas, ordena la lista resultando y " "después extrae el elemento que deseas. ::" -#: ../Doc/faq/programming.rst:1399 +#: ../Doc/faq/programming.rst:1400 msgid "Objects" msgstr "Objetos" -#: ../Doc/faq/programming.rst:1402 +#: ../Doc/faq/programming.rst:1403 msgid "What is a class?" msgstr "¿Qué es una clase?" -#: ../Doc/faq/programming.rst:1404 +#: ../Doc/faq/programming.rst:1405 msgid "" "A class is the particular object type created by executing a class " "statement. Class objects are used as templates to create instance objects, " @@ -2144,7 +2156,7 @@ msgstr "" "instancias de objetos que son tanto los datos (atributos) como el código " "(métodos) específicos para un tipo de dato." -#: ../Doc/faq/programming.rst:1408 +#: ../Doc/faq/programming.rst:1409 msgid "" "A class can be based on one or more other classes, called its base " "class(es). It then inherits the attributes and methods of its base classes. " @@ -2161,11 +2173,11 @@ msgstr "" "``MaildirMailbox``, ``OutlookMailbox`` que gestionan distintos formatos " "específicos de buzón de correos." -#: ../Doc/faq/programming.rst:1417 +#: ../Doc/faq/programming.rst:1418 msgid "What is a method?" msgstr "¿Qué es un método?" -#: ../Doc/faq/programming.rst:1419 +#: ../Doc/faq/programming.rst:1420 msgid "" "A method is a function on some object ``x`` that you normally call as ``x." "name(arguments...)``. Methods are defined as functions inside the class " @@ -2175,11 +2187,11 @@ msgstr "" "de la forma ``x.name(arguments...)``. Los métodos se definen como " "funciones dentro de la definición de la clase::" -#: ../Doc/faq/programming.rst:1429 +#: ../Doc/faq/programming.rst:1430 msgid "What is self?" msgstr "¿Qué es self?" -#: ../Doc/faq/programming.rst:1431 +#: ../Doc/faq/programming.rst:1432 msgid "" "Self is merely a conventional name for the first argument of a method. A " "method defined as ``meth(self, a, b, c)`` should be called as ``x.meth(a, b, " @@ -2192,11 +2204,11 @@ msgstr "" "que se definió; el método invocado pensará que se le ha invocado como " "``meth(x, a, b, c)``." -#: ../Doc/faq/programming.rst:1436 +#: ../Doc/faq/programming.rst:1437 msgid "See also :ref:`why-self`." msgstr "Ver también :ref:`why-self`." -#: ../Doc/faq/programming.rst:1440 +#: ../Doc/faq/programming.rst:1441 msgid "" "How do I check if an object is an instance of a given class or of a subclass " "of it?" @@ -2204,7 +2216,7 @@ msgstr "" "¿Cómo puedo comprobar si un objeto es una instancia de una clase dada o de " "una subclase de la misma?" -#: ../Doc/faq/programming.rst:1442 +#: ../Doc/faq/programming.rst:1443 msgid "" "Use the built-in function ``isinstance(obj, cls)``. You can check if an " "object is an instance of any of a number of classes by providing a tuple " @@ -2219,7 +2231,7 @@ msgstr "" "tipos incorporados por ejemplo ``isinstance(obj, str)`` o ``isinstance(obj, " "(int, float, complex))``." -#: ../Doc/faq/programming.rst:1448 +#: ../Doc/faq/programming.rst:1449 msgid "" "Note that :func:`isinstance` also checks for virtual inheritance from an :" "term:`abstract base class`. So, the test will return ``True`` for a " @@ -2231,7 +2243,7 @@ msgstr "" "clase registrada incluso si no ha heredado directa o indirectamente de ella. " "Para verificar \"herencia verdadera\", escanea el :term:`MRO` de la clase:" -#: ../Doc/faq/programming.rst:1483 +#: ../Doc/faq/programming.rst:1484 msgid "" "Note that most programs do not use :func:`isinstance` on user-defined " "classes very often. If you are developing the classes yourself, a more " @@ -2247,7 +2259,7 @@ msgstr "" "comprobando la clase del objeto e ir haciendo cosas en base a la clase que " "es. Por ejemplo, si tienes una función que hace lo siguiente::" -#: ../Doc/faq/programming.rst:1497 +#: ../Doc/faq/programming.rst:1498 msgid "" "A better approach is to define a ``search()`` method on all the classes and " "just call it::" @@ -2255,11 +2267,11 @@ msgstr "" "Un enfoque más adecuado sería definir un método ``search()`` en todas las " "clases e invocarlo::" -#: ../Doc/faq/programming.rst:1512 +#: ../Doc/faq/programming.rst:1513 msgid "What is delegation?" msgstr "¿Qué es la delegación?" -#: ../Doc/faq/programming.rst:1514 +#: ../Doc/faq/programming.rst:1515 msgid "" "Delegation is an object oriented technique (also called a design pattern). " "Let's say you have an object ``x`` and want to change the behaviour of just " @@ -2273,7 +2285,7 @@ msgstr "" "proporciona una nueva implementación del método que te interesa cambiar y " "delega el resto de métodos al método correspondiente de ``x``." -#: ../Doc/faq/programming.rst:1520 +#: ../Doc/faq/programming.rst:1521 msgid "" "Python programmers can easily implement delegation. For example, the " "following class implements a class that behaves like a file but converts all " @@ -2284,7 +2296,7 @@ msgstr "" "comporta como un fichero pero convierte todos los datos escritos a " "mayúsculas::" -#: ../Doc/faq/programming.rst:1535 +#: ../Doc/faq/programming.rst:1536 msgid "" "Here the ``UpperOut`` class redefines the ``write()`` method to convert the " "argument string to uppercase before calling the underlying ``self._outfile." @@ -2300,7 +2312,7 @@ msgstr "" "consulta :ref:`la referencia del lenguaje ` para obtener " "más información sobre cómo controlar el acceso a atributos." -#: ../Doc/faq/programming.rst:1542 +#: ../Doc/faq/programming.rst:1543 msgid "" "Note that for more general cases delegation can get trickier. When " "attributes must be set as well as retrieved, the class must define a :meth:" @@ -2314,7 +2326,7 @@ msgstr "" "cuidado. La implementación básica de :meth:`__setattr__` es, " "aproximadamente, equivalente a lo siguiente::" -#: ../Doc/faq/programming.rst:1553 +#: ../Doc/faq/programming.rst:1554 msgid "" "Most :meth:`__setattr__` implementations must modify ``self.__dict__`` to " "store local state for self without causing an infinite recursion." @@ -2323,7 +2335,7 @@ msgstr "" "__dict__`` para almacenar el estado local para self sin provocar una " "recursión infinita." -#: ../Doc/faq/programming.rst:1558 +#: ../Doc/faq/programming.rst:1559 msgid "" "How do I call a method defined in a base class from a derived class that " "extends it?" @@ -2331,11 +2343,11 @@ msgstr "" "¿Cómo invoco a un método definido en una clase base desde una clase derivada " "que la extiende?" -#: ../Doc/faq/programming.rst:1560 +#: ../Doc/faq/programming.rst:1561 msgid "Use the built-in :func:`super` function::" msgstr "Usa la función incorporada :func:`super`::" -#: ../Doc/faq/programming.rst:1566 +#: ../Doc/faq/programming.rst:1567 msgid "" "In the example, :func:`super` will automatically determine the instance from " "which it was called (the ``self`` value), look up the :term:`method " @@ -2347,13 +2359,13 @@ msgstr "" "resolution order` (MRO) con ``type(self).__mro__``, y devuelve el siguiente " "en línea después de ``Derived`` en el MRO: ``Base``." -#: ../Doc/faq/programming.rst:1573 +#: ../Doc/faq/programming.rst:1574 msgid "How can I organize my code to make it easier to change the base class?" msgstr "" "¿Cómo puedo organizar mi código para hacer que sea más sencillo modificar la " "clase base?" -#: ../Doc/faq/programming.rst:1575 +#: ../Doc/faq/programming.rst:1576 msgid "" "You could assign the base class to an alias and derive from the alias. Then " "all you have to change is the value assigned to the alias. Incidentally, " @@ -2365,12 +2377,12 @@ msgstr "" "también es útil si desea decidir dinámicamente (por ejemplo, dependiendo de " "la disponibilidad de recursos) qué clase base usar. Ejemplo::" -#: ../Doc/faq/programming.rst:1590 +#: ../Doc/faq/programming.rst:1591 msgid "How do I create static class data and static class methods?" msgstr "" "¿Cómo puedo crear datos estáticos de clase y métodos estáticos de clase?" -#: ../Doc/faq/programming.rst:1592 +#: ../Doc/faq/programming.rst:1593 msgid "" "Both static data and static methods (in the sense of C++ or Java) are " "supported in Python." @@ -2378,7 +2390,7 @@ msgstr "" "Tanto los datos estáticos como los métodos estáticos (en el sentido de C++ o " "Java) están permitidos en Python." -#: ../Doc/faq/programming.rst:1595 +#: ../Doc/faq/programming.rst:1596 msgid "" "For static data, simply define a class attribute. To assign a new value to " "the attribute, you have to explicitly use the class name in the assignment::" @@ -2387,7 +2399,7 @@ msgstr "" "un nuevo valor al atributo debes usar de forma explícita el nombre de la " "clase en la asignación::" -#: ../Doc/faq/programming.rst:1607 +#: ../Doc/faq/programming.rst:1608 msgid "" "``c.count`` also refers to ``C.count`` for any ``c`` such that " "``isinstance(c, C)`` holds, unless overridden by ``c`` itself or by some " @@ -2398,7 +2410,7 @@ msgstr "" "sobreescrita por si misma o por alguna clase contenida en la búsqueda de " "clases base desde``c.__class__`` hasta ``C``." -#: ../Doc/faq/programming.rst:1611 +#: ../Doc/faq/programming.rst:1612 msgid "" "Caution: within a method of C, an assignment like ``self.count = 42`` " "creates a new and unrelated instance named \"count\" in ``self``'s own " @@ -2412,11 +2424,11 @@ msgstr "" "especificar la clase tanto si se produce desde dentro de un método como si " "no::" -#: ../Doc/faq/programming.rst:1618 +#: ../Doc/faq/programming.rst:1619 msgid "Static methods are possible::" msgstr "Los métodos estáticos son posibles::" -#: ../Doc/faq/programming.rst:1626 +#: ../Doc/faq/programming.rst:1627 msgid "" "However, a far more straightforward way to get the effect of a static method " "is via a simple module-level function::" @@ -2424,7 +2436,7 @@ msgstr "" "Sin embargo, una forma más directa de obtener el efecto de un método " "estático sería mediante una simple función a nivel de módulo::" -#: ../Doc/faq/programming.rst:1632 +#: ../Doc/faq/programming.rst:1633 msgid "" "If your code is structured so as to define one class (or tightly related " "class hierarchy) per module, this supplies the desired encapsulation." @@ -2433,11 +2445,11 @@ msgstr "" "de clases altamente relacionadas) por módulo, esto proporcionará la " "encapsulación deseada." -#: ../Doc/faq/programming.rst:1637 +#: ../Doc/faq/programming.rst:1638 msgid "How can I overload constructors (or methods) in Python?" msgstr "¿Como puedo sobrecargar constructores (o métodos) en Python?" -#: ../Doc/faq/programming.rst:1639 +#: ../Doc/faq/programming.rst:1640 msgid "" "This answer actually applies to all methods, but the question usually comes " "up first in the context of constructors." @@ -2445,11 +2457,11 @@ msgstr "" "Esta respuesta es aplicable, en realidad, a todos los métodos pero la " "pregunta suele surgir primero en el contexto de los constructores." -#: ../Doc/faq/programming.rst:1642 +#: ../Doc/faq/programming.rst:1643 msgid "In C++ you'd write" msgstr "En C++ deberías escribir" -#: ../Doc/faq/programming.rst:1651 +#: ../Doc/faq/programming.rst:1652 msgid "" "In Python you have to write a single constructor that catches all cases " "using default arguments. For example::" @@ -2457,26 +2469,26 @@ msgstr "" "En Python solo debes escribir un único constructor que tenga en cuenta todos " "los casos usando los argumentos por defecto. Por ejemplo::" -#: ../Doc/faq/programming.rst:1661 +#: ../Doc/faq/programming.rst:1662 msgid "This is not entirely equivalent, but close enough in practice." msgstr "" "Esto no es totalmente equivalente pero, en la práctica, es muy similar." -#: ../Doc/faq/programming.rst:1663 +#: ../Doc/faq/programming.rst:1664 msgid "You could also try a variable-length argument list, e.g. ::" msgstr "" "Podrías intentar, también una lista de argumentos de longitud variable, por " "ejemplo ::" -#: ../Doc/faq/programming.rst:1668 +#: ../Doc/faq/programming.rst:1669 msgid "The same approach works for all method definitions." msgstr "El mismo enfoque funciona para todas las definiciones de métodos." -#: ../Doc/faq/programming.rst:1672 +#: ../Doc/faq/programming.rst:1673 msgid "I try to use __spam and I get an error about _SomeClassName__spam." msgstr "Intento usar __spam y obtengo un error sobre _SomeClassName__spam." -#: ../Doc/faq/programming.rst:1674 +#: ../Doc/faq/programming.rst:1675 msgid "" "Variable names with double leading underscores are \"mangled\" to provide a " "simple but effective way to define class private variables. Any identifier " @@ -2492,7 +2504,7 @@ msgstr "" "bajo como sufijo) se reemplaza con ``_classname__spam``, donde ``classname`` " "es el nombre de la clase eliminando cualquier guión bajo prefijado." -#: ../Doc/faq/programming.rst:1680 +#: ../Doc/faq/programming.rst:1681 msgid "" "This doesn't guarantee privacy: an outside user can still deliberately " "access the \"_classname__spam\" attribute, and private values are visible in " @@ -2505,15 +2517,15 @@ msgstr "" "programadores Python no se suelen molestar en usar nombres privados de " "variables." -#: ../Doc/faq/programming.rst:1687 +#: ../Doc/faq/programming.rst:1688 msgid "My class defines __del__ but it is not called when I delete the object." msgstr "Mi clase define __del__ pero no se le invoca cuando borro el objeto." -#: ../Doc/faq/programming.rst:1689 +#: ../Doc/faq/programming.rst:1690 msgid "There are several possible reasons for this." msgstr "Existen varias razones posibles para que suceda así." -#: ../Doc/faq/programming.rst:1691 +#: ../Doc/faq/programming.rst:1692 msgid "" "The del statement does not necessarily call :meth:`__del__` -- it simply " "decrements the object's reference count, and if this reaches zero :meth:" @@ -2523,7 +2535,7 @@ msgstr "" "simplemente reduce el conteo de referencias del objeto y, si se reduce a " "cero entonces es cuando se invoca a :meth:`__del__`." -#: ../Doc/faq/programming.rst:1695 +#: ../Doc/faq/programming.rst:1696 msgid "" "If your data structures contain circular links (e.g. a tree where each child " "has a parent reference and each parent has a list of children) the reference " @@ -2549,7 +2561,7 @@ msgstr "" "collect` para forzar una recolección pero *existen* casos patológicos en los " "cuales los objetos nunca serán recolectados." -#: ../Doc/faq/programming.rst:1706 +#: ../Doc/faq/programming.rst:1707 msgid "" "Despite the cycle collector, it's still a good idea to define an explicit " "``close()`` method on objects to be called whenever you're done with them. " @@ -2566,7 +2578,7 @@ msgstr "" "``close()`` debe asegurarse que puede ser invocado más de una vez en el " "mismo objeto." -#: ../Doc/faq/programming.rst:1713 +#: ../Doc/faq/programming.rst:1714 msgid "" "Another way to avoid cyclical references is to use the :mod:`weakref` " "module, which allows you to point to objects without incrementing their " @@ -2579,7 +2591,7 @@ msgstr "" "referencias débiles para las referencias del padre y hermanos (¡si es que " "las necesitan!)." -#: ../Doc/faq/programming.rst:1726 +#: ../Doc/faq/programming.rst:1727 msgid "" "Finally, if your :meth:`__del__` method raises an exception, a warning " "message is printed to :data:`sys.stderr`." @@ -2587,12 +2599,12 @@ msgstr "" "Finalmente, si tu método :meth:`__del__` lanza una excepción, se manda un " "mensaje de alerta a :data:`sys.stderr`." -#: ../Doc/faq/programming.rst:1731 +#: ../Doc/faq/programming.rst:1732 msgid "How do I get a list of all instances of a given class?" msgstr "" "¿Cómo puedo obtener una lista de todas las instancias de una clase dada?" -#: ../Doc/faq/programming.rst:1733 +#: ../Doc/faq/programming.rst:1734 msgid "" "Python does not keep track of all instances of a class (or of a built-in " "type). You can program the class's constructor to keep track of all " @@ -2603,11 +2615,11 @@ msgstr "" "haga seguimiento de todas sus instancias manteniendo una lista de " "referencias débiles a cada instancia." -#: ../Doc/faq/programming.rst:1739 +#: ../Doc/faq/programming.rst:1740 msgid "Why does the result of ``id()`` appear to be not unique?" msgstr "¿Por qué el resultado de ``id()`` no parece ser único?" -#: ../Doc/faq/programming.rst:1741 +#: ../Doc/faq/programming.rst:1742 msgid "" "The :func:`id` builtin returns an integer that is guaranteed to be unique " "during the lifetime of the object. Since in CPython, this is the object's " @@ -2622,7 +2634,7 @@ msgstr "" "localiza en la misma posición en memoria. Esto se puede ver ilustrado en " "este ejemplo:" -#: ../Doc/faq/programming.rst:1752 +#: ../Doc/faq/programming.rst:1753 msgid "" "The two ids belong to different integer objects that are created before, and " "deleted immediately after execution of the ``id()`` call. To be sure that " @@ -2634,11 +2646,11 @@ msgstr "" "``id()``. Para estar seguro que los objetos cuya id quieres examinar siguen " "vivos crea otra referencia al objeto:" -#: ../Doc/faq/programming.rst:1765 +#: ../Doc/faq/programming.rst:1766 msgid "When can I rely on identity tests with the *is* operator?" msgstr "¿Cuándo puedo fiarme de pruebas de identidad con el operador *is*?" -#: ../Doc/faq/programming.rst:1767 +#: ../Doc/faq/programming.rst:1768 msgid "" "The ``is`` operator tests for object identity. The test ``a is b`` is " "equivalent to ``id(a) == id(b)``." @@ -2646,7 +2658,7 @@ msgstr "" "El operador ``is`` verifica la identidad de un objeto. La prueba ``a is b`` " "es equivalente a ``id(a) == id(b)``." -#: ../Doc/faq/programming.rst:1770 +#: ../Doc/faq/programming.rst:1771 msgid "" "The most important property of an identity test is that an object is always " "identical to itself, ``a is a`` always returns ``True``. Identity tests are " @@ -2659,7 +2671,7 @@ msgstr "" "diferencia de las pruebas de igualdad, las pruebas de identidad están " "garantizadas de devolver un booleano ``True`` o ``False``." -#: ../Doc/faq/programming.rst:1775 +#: ../Doc/faq/programming.rst:1776 msgid "" "However, identity tests can *only* be substituted for equality tests when " "object identity is assured. Generally, there are three circumstances where " @@ -2670,7 +2682,7 @@ msgstr "" "Generalmente hay tres circunstancias en las que la identidad está " "garantizada:" -#: ../Doc/faq/programming.rst:1779 +#: ../Doc/faq/programming.rst:1780 msgid "" "1) Assignments create new names but do not change object identity. After " "the assignment ``new = old``, it is guaranteed that ``new is old``." @@ -2679,7 +2691,7 @@ msgstr "" "objeto. Luego de la asignación ``new = old``, está garantizado que ``new is " "old``." -#: ../Doc/faq/programming.rst:1782 +#: ../Doc/faq/programming.rst:1783 msgid "" "2) Putting an object in a container that stores object references does not " "change object identity. After the list assignment ``s[0] = x``, it is " @@ -2689,7 +2701,7 @@ msgstr "" "cambia la identidad del objeto. Luego de la asignación de lista ``s[0] = " "x``, está garantizado que ``s[0] is x``." -#: ../Doc/faq/programming.rst:1786 +#: ../Doc/faq/programming.rst:1787 msgid "" "3) If an object is a singleton, it means that only one instance of that " "object can exist. After the assignments ``a = None`` and ``b = None``, it " @@ -2699,7 +2711,7 @@ msgstr "" "objeto puede existir. Después de las asignaciones ``a = None`` y ``b = " "None``, está garantizado que ``a is b`` porque ``None`` es un singleton." -#: ../Doc/faq/programming.rst:1790 +#: ../Doc/faq/programming.rst:1791 msgid "" "In most other circumstances, identity tests are inadvisable and equality " "tests are preferred. In particular, identity tests should not be used to " @@ -2711,13 +2723,13 @@ msgstr "" "pruebas de identidad no deben ser usadas para verificar constantes como :" "class:`int` y :class:`str` que no están garantizadas a ser singletons::" -#: ../Doc/faq/programming.rst:1807 +#: ../Doc/faq/programming.rst:1808 msgid "Likewise, new instances of mutable containers are never identical::" msgstr "" "De la misma manera, nuevas instancias de contenedores mutables nunca son " "idénticas::" -#: ../Doc/faq/programming.rst:1814 +#: ../Doc/faq/programming.rst:1815 msgid "" "In the standard library code, you will see several common patterns for " "correctly using identity tests:" @@ -2725,7 +2737,7 @@ msgstr "" "En la librería estándar de código, verás varios patrones comunes para usar " "correctamente pruebas de identidad:" -#: ../Doc/faq/programming.rst:1817 +#: ../Doc/faq/programming.rst:1818 msgid "" "1) As recommended by :pep:`8`, an identity test is the preferred way to " "check for ``None``. This reads like plain English in code and avoids " @@ -2737,10 +2749,11 @@ msgstr "" "en el código y evita confusión con otros objetos que puedan tener valores " "booleanos que se evalúen como falsos." -#: ../Doc/faq/programming.rst:1821 +#: ../Doc/faq/programming.rst:1822 +#, fuzzy msgid "" "2) Detecting optional arguments can be tricky when ``None`` is a valid input " -"value. In those situations, you can create an singleton sentinel object " +"value. In those situations, you can create a singleton sentinel object " "guaranteed to be distinct from other objects. For example, here is how to " "implement a method that behaves like :meth:`dict.pop`::" msgstr "" @@ -2750,7 +2763,7 @@ msgstr "" "Por ejemplo, aquí se explica cómo implementar un método que se comporta " "como :meth:`dict.pop`:" -#: ../Doc/faq/programming.rst:1837 +#: ../Doc/faq/programming.rst:1838 msgid "" "3) Container implementations sometimes need to augment equality tests with " "identity tests. This prevents the code from being confused by objects such " @@ -2761,7 +2774,7 @@ msgstr "" "confundido con objetos como ``float('NaN')`` que no son iguales que si " "mismos." -#: ../Doc/faq/programming.rst:1841 +#: ../Doc/faq/programming.rst:1842 msgid "" "For example, here is the implementation of :meth:`collections.abc.Sequence." "__contains__`::" @@ -2769,14 +2782,14 @@ msgstr "" "Por ejemplo, acá está la implementación de :meth:`collections.abc.Sequence." "__contains__`::" -#: ../Doc/faq/programming.rst:1852 +#: ../Doc/faq/programming.rst:1853 msgid "" "How can a subclass control what data is stored in an immutable instance?" msgstr "" "¿Cómo puede una subclase controlar qué datos se almacenan en una instancia " "inmutable?" -#: ../Doc/faq/programming.rst:1854 +#: ../Doc/faq/programming.rst:1855 msgid "" "When subclassing an immutable type, override the :meth:`__new__` method " "instead of the :meth:`__init__` method. The latter only runs *after* an " @@ -2788,22 +2801,22 @@ msgstr "" "*después* de que una instancia es creada, y entonces ya es muy tarde para " "alterar datos en una instancia inmutable." -#: ../Doc/faq/programming.rst:1859 +#: ../Doc/faq/programming.rst:1860 msgid "" "All of these immutable classes have a different signature than their parent " "class:" msgstr "" "Todas estas clases inmutables tienen una firma distinta que su clase padre:" -#: ../Doc/faq/programming.rst:1885 +#: ../Doc/faq/programming.rst:1886 msgid "The classes can be used like this:" msgstr "Las clases pueden ser utilizadas así:" -#: ../Doc/faq/programming.rst:1900 +#: ../Doc/faq/programming.rst:1903 msgid "How do I cache method calls?" msgstr "¿Cómo cacheo llamadas de método?" -#: ../Doc/faq/programming.rst:1902 +#: ../Doc/faq/programming.rst:1905 msgid "" "The two principal tools for caching methods are :func:`functools." "cached_property` and :func:`functools.lru_cache`. The former stores results " @@ -2813,7 +2826,7 @@ msgstr "" "cached_property` y :func:`functools.lru_cache`. El primero guarda " "resultados a nivel de instancia y el último a nivel de clase." -#: ../Doc/faq/programming.rst:1907 +#: ../Doc/faq/programming.rst:1910 msgid "" "The *cached_property* approach only works with methods that do not take any " "arguments. It does not create a reference to the instance. The cached " @@ -2823,9 +2836,10 @@ msgstr "" "argumentos. No crea una referencia a la instancia. El resultado del método " "cacheado se mantendrá solo mientras que la instancia esté activa." -#: ../Doc/faq/programming.rst:1911 +#: ../Doc/faq/programming.rst:1914 +#, fuzzy msgid "" -"The advantage is that when an instance is not longer used, the cached method " +"The advantage is that when an instance is no longer used, the cached method " "result will be released right away. The disadvantage is that if instances " "accumulate, so too will the accumulated method results. They can grow " "without bound." @@ -2835,7 +2849,7 @@ msgstr "" "instancias se acumulan, también se acumularán los métodos resultantes. " "Pueden crecer sin límite." -#: ../Doc/faq/programming.rst:1916 +#: ../Doc/faq/programming.rst:1919 msgid "" "The *lru_cache* approach works with methods that have hashable arguments. " "It creates a reference to the instance unless special efforts are made to " @@ -2845,7 +2859,7 @@ msgstr "" "hashables. Crea una referencia a la instancia a menos que esfuerzos " "especiales sean realizados para pasar en referencias débiles." -#: ../Doc/faq/programming.rst:1920 +#: ../Doc/faq/programming.rst:1923 msgid "" "The advantage of the least recently used algorithm is that the cache is " "bounded by the specified *maxsize*. The disadvantage is that instances are " @@ -2856,11 +2870,11 @@ msgstr "" "se mantienen activas hasta que sean eliminadas del cache por edad o que el " "cache sea borrado." -#: ../Doc/faq/programming.rst:1925 +#: ../Doc/faq/programming.rst:1928 msgid "This example shows the various techniques::" msgstr "Este ejemplo muestra las diversas técnicas::" -#: ../Doc/faq/programming.rst:1949 +#: ../Doc/faq/programming.rst:1952 msgid "" "The above example assumes that the *station_id* never changes. If the " "relevant instance attributes are mutable, the *cached_property* approach " @@ -2871,25 +2885,26 @@ msgstr "" "*cached_property* no puede funcionar porque no puede detectar cambios en los " "atributos." -#: ../Doc/faq/programming.rst:1954 +#: ../Doc/faq/programming.rst:1957 +#, fuzzy msgid "" -"The *lru_cache* approach can be made to work, but the class needs to define " -"the *__eq__* and *__hash__* methods so the cache can detect relevant " -"attribute updates::" +"To make the *lru_cache* approach work when the *station_id* is mutable, the " +"class needs to define the *__eq__* and *__hash__* methods so that the cache " +"can detect relevant attribute updates::" msgstr "" "Se puede hacer que el método *lru_cache* funcione, pero la clase debe " "definir los métodos *__eq__* y *__hash__* para que el cache pueda detectar " "cambios relevantes de atributo::" -#: ../Doc/faq/programming.rst:1980 +#: ../Doc/faq/programming.rst:1983 msgid "Modules" msgstr "Módulos" -#: ../Doc/faq/programming.rst:1983 +#: ../Doc/faq/programming.rst:1986 msgid "How do I create a .pyc file?" msgstr "¿Cómo creo un fichero .pyc?" -#: ../Doc/faq/programming.rst:1985 +#: ../Doc/faq/programming.rst:1988 msgid "" "When a module is imported for the first time (or when the source file has " "changed since the current compiled file was created) a ``.pyc`` file " @@ -2908,7 +2923,7 @@ msgstr "" "dependerá del binario ``python`` en particular que lo creó. (Ver :pep:" "`3147` para detalles.)" -#: ../Doc/faq/programming.rst:1993 +#: ../Doc/faq/programming.rst:1996 msgid "" "One reason that a ``.pyc`` file may not be created is a permissions problem " "with the directory containing the source file, meaning that the " @@ -2922,7 +2937,7 @@ msgstr "" "suceder, por ejemplo, si desarrollas como un usuario pero lo ejecutas como " "otro, como si estuvieras probando en un servidor web." -#: ../Doc/faq/programming.rst:1998 +#: ../Doc/faq/programming.rst:2001 msgid "" "Unless the :envvar:`PYTHONDONTWRITEBYTECODE` environment variable is set, " "creation of a .pyc file is automatic if you're importing a module and Python " @@ -2936,7 +2951,7 @@ msgstr "" "(permisos, espacio libre, etc...) para crear un subdirectorio " "``__pycache__`` y escribir un módulo compilado en ese subdirectorio." -#: ../Doc/faq/programming.rst:2003 +#: ../Doc/faq/programming.rst:2006 msgid "" "Running Python on a top level script is not considered an import and no ``." "pyc`` will be created. For example, if you have a top-level module ``foo." @@ -2952,7 +2967,7 @@ msgstr "" "pyc`` para ``xyz`` porque ``xyz`` ha sido importado, pero no se creará un " "fichero ``.pyc`` para ``foo`` ya que ``foo.py`` no ha sido importado." -#: ../Doc/faq/programming.rst:2010 +#: ../Doc/faq/programming.rst:2013 msgid "" "If you need to create a ``.pyc`` file for ``foo`` -- that is, to create a ``." "pyc`` file for a module that is not imported -- you can, using the :mod:" @@ -2962,7 +2977,7 @@ msgstr "" "crear un fichero ``.pyc`` para un módulo que no ha sido importado -- puedes " "usar los módulos :mod:`py_compile` y :mod:`compileall`." -#: ../Doc/faq/programming.rst:2014 +#: ../Doc/faq/programming.rst:2017 msgid "" "The :mod:`py_compile` module can manually compile any module. One way is to " "use the ``compile()`` function in that module interactively::" @@ -2971,7 +2986,7 @@ msgstr "" "Una forma sería usando la función ``compile()`` de ese módulo de forma " "interactiva::" -#: ../Doc/faq/programming.rst:2020 +#: ../Doc/faq/programming.rst:2023 msgid "" "This will write the ``.pyc`` to a ``__pycache__`` subdirectory in the same " "location as ``foo.py`` (or you can override that with the optional parameter " @@ -2981,7 +2996,7 @@ msgstr "" "localización en la que se encuentre ``foo.py`` (o, puedes sobreescribir ese " "comportamiento con el parámetro opcional ``cfile``)." -#: ../Doc/faq/programming.rst:2024 +#: ../Doc/faq/programming.rst:2027 msgid "" "You can also automatically compile all files in a directory or directories " "using the :mod:`compileall` module. You can do it from the shell prompt by " @@ -2993,11 +3008,11 @@ msgstr "" "línea de comandos ejecutando ``compileall.py`` y proporcionando una ruta al " "directorio que contiene los ficheros Python a compilar::" -#: ../Doc/faq/programming.rst:2033 +#: ../Doc/faq/programming.rst:2036 msgid "How do I find the current module name?" msgstr "¿Cómo puedo encontrar el nombre del módulo en uso?" -#: ../Doc/faq/programming.rst:2035 +#: ../Doc/faq/programming.rst:2038 msgid "" "A module can find out its own module name by looking at the predefined " "global variable ``__name__``. If this has the value ``'__main__'``, the " @@ -3012,51 +3027,51 @@ msgstr "" "para la línea de comandos o para probarse a si mismos y solo ejecutan código " "después de comprobar ``__name__``::" -#: ../Doc/faq/programming.rst:2050 +#: ../Doc/faq/programming.rst:2053 msgid "How can I have modules that mutually import each other?" msgstr "¿Cómo podría tener módulos que se importan mutuamente entre ellos?" -#: ../Doc/faq/programming.rst:2052 +#: ../Doc/faq/programming.rst:2055 msgid "Suppose you have the following modules:" msgstr "Supón que tienes los siguientes módulos:" -#: ../Doc/faq/programming.rst:2054 +#: ../Doc/faq/programming.rst:2057 msgid ":file:`foo.py`::" msgstr ":file:`foo.py`::" -#: ../Doc/faq/programming.rst:2059 +#: ../Doc/faq/programming.rst:2062 msgid ":file:`bar.py`::" msgstr ":file:`bar.py`::" -#: ../Doc/faq/programming.rst:2064 +#: ../Doc/faq/programming.rst:2067 msgid "The problem is that the interpreter will perform the following steps:" msgstr "El problema es que el intérprete realizará los siguientes pasos:" -#: ../Doc/faq/programming.rst:2066 +#: ../Doc/faq/programming.rst:2069 msgid "main imports ``foo``" msgstr "main importa a ``foo``" -#: ../Doc/faq/programming.rst:2067 +#: ../Doc/faq/programming.rst:2070 msgid "Empty globals for ``foo`` are created" msgstr "Se crean *globals* vacíos para foo" -#: ../Doc/faq/programming.rst:2068 +#: ../Doc/faq/programming.rst:2071 msgid "``foo`` is compiled and starts executing" msgstr "``foo`` se compila y se comienza a ejecutar" -#: ../Doc/faq/programming.rst:2069 +#: ../Doc/faq/programming.rst:2072 msgid "``foo`` imports ``bar``" msgstr "``foo`` importa a ``bar``" -#: ../Doc/faq/programming.rst:2070 +#: ../Doc/faq/programming.rst:2073 msgid "Empty globals for ``bar`` are created" msgstr "Se crean *globals* vacíos para ``bar``" -#: ../Doc/faq/programming.rst:2071 +#: ../Doc/faq/programming.rst:2074 msgid "``bar`` is compiled and starts executing" msgstr "``bar`` se compila y se comienza a ejecutar" -#: ../Doc/faq/programming.rst:2072 +#: ../Doc/faq/programming.rst:2075 msgid "" "``bar`` imports ``foo`` (which is a no-op since there already is a module " "named ``foo``)" @@ -3064,7 +3079,7 @@ msgstr "" "``bar`` importa a ``foo`` (lo cual es un no-op ya que ya hay un módulo que " "se llama ``foo``)" -#: ../Doc/faq/programming.rst:2073 +#: ../Doc/faq/programming.rst:2076 msgid "" "The import mechanism tries to read ``foo_var`` from ``foo`` globals, to set " "``bar.foo_var = foo.foo_var``" @@ -3072,7 +3087,7 @@ msgstr "" "El mecanismo de importado intenta leer ``foo_var`` de globales de ``foo``, " "para establecer ``bar.foo_var = foo.foo_var``" -#: ../Doc/faq/programming.rst:2075 +#: ../Doc/faq/programming.rst:2078 msgid "" "The last step fails, because Python isn't done with interpreting ``foo`` yet " "and the global symbol dictionary for ``foo`` is still empty." @@ -3081,7 +3096,7 @@ msgstr "" "interpretar a ``foo`` y el diccionario de símbolos global para ``foo`` " "todavía se encuentra vacío." -#: ../Doc/faq/programming.rst:2078 +#: ../Doc/faq/programming.rst:2081 msgid "" "The same thing happens when you use ``import foo``, and then try to access " "``foo.foo_var`` in global code." @@ -3089,11 +3104,11 @@ msgstr "" "Lo mismo ocurre cuando usas ``import foo`` y luego tratas de acceder a ``foo." "foo_var`` en un código global." -#: ../Doc/faq/programming.rst:2081 +#: ../Doc/faq/programming.rst:2084 msgid "There are (at least) three possible workarounds for this problem." msgstr "Existen (al menos) tres posibles soluciones para este problema." -#: ../Doc/faq/programming.rst:2083 +#: ../Doc/faq/programming.rst:2086 msgid "" "Guido van Rossum recommends avoiding all uses of ``from import ..." "``, and placing all code inside functions. Initializations of global " @@ -3107,14 +3122,14 @@ msgstr "" "únicamente constantes o funciones incorporadas . Esto significa que todo se " "referenciará como ``.`` desde un módulo importado." -#: ../Doc/faq/programming.rst:2088 +#: ../Doc/faq/programming.rst:2091 msgid "" "Jim Roskind suggests performing steps in the following order in each module:" msgstr "" "Jim Roskind sugiere realizar los siguientes pasos en el siguiente orden en " "cada módulo:" -#: ../Doc/faq/programming.rst:2090 +#: ../Doc/faq/programming.rst:2093 msgid "" "exports (globals, functions, and classes that don't need imported base " "classes)" @@ -3122,26 +3137,27 @@ msgstr "" "exportar (*globals*, funciones y clases que no necesitan clases bases " "importadas)" -#: ../Doc/faq/programming.rst:2092 +#: ../Doc/faq/programming.rst:2095 msgid "``import`` statements" msgstr "``import`` declaraciones" -#: ../Doc/faq/programming.rst:2093 +#: ../Doc/faq/programming.rst:2096 msgid "" "active code (including globals that are initialized from imported values)." msgstr "" "código activo (incluyendo *globals* que han sido inicializados desde valores " "importados)." -#: ../Doc/faq/programming.rst:2095 +#: ../Doc/faq/programming.rst:2098 +#, fuzzy msgid "" -"van Rossum doesn't like this approach much because the imports appear in a " +"Van Rossum doesn't like this approach much because the imports appear in a " "strange place, but it does work." msgstr "" "este enfoque no le gusta mucho a van Rossum debido a que los import aparecen " "en lugares extraños, pero funciona." -#: ../Doc/faq/programming.rst:2098 +#: ../Doc/faq/programming.rst:2101 msgid "" "Matthias Urlichs recommends restructuring your code so that the recursive " "import is not necessary in the first place." @@ -3149,15 +3165,15 @@ msgstr "" "Matthias Urlichs recomienda reestructurar tu código de tal forma que un " "import recursivo no sea necesario." -#: ../Doc/faq/programming.rst:2101 +#: ../Doc/faq/programming.rst:2104 msgid "These solutions are not mutually exclusive." msgstr "Estas soluciones no son mutuamente excluyentes." -#: ../Doc/faq/programming.rst:2105 +#: ../Doc/faq/programming.rst:2108 msgid "__import__('x.y.z') returns ; how do I get z?" msgstr "__import__('x.y.z') devuelve ; ¿cómo puedo obtener z?" -#: ../Doc/faq/programming.rst:2107 +#: ../Doc/faq/programming.rst:2110 msgid "" "Consider using the convenience function :func:`~importlib.import_module` " "from :mod:`importlib` instead::" @@ -3165,7 +3181,7 @@ msgstr "" "Considera, en su lugar, usa la función de conveniencia :func:`~importlib." "import_module` de :mod:`importlib`::" -#: ../Doc/faq/programming.rst:2114 +#: ../Doc/faq/programming.rst:2117 msgid "" "When I edit an imported module and reimport it, the changes don't show up. " "Why does this happen?" @@ -3173,7 +3189,7 @@ msgstr "" "Cuando edito un módulo importado y lo reimporto los cambios no tienen " "efecto. ¿Por qué sucede esto?" -#: ../Doc/faq/programming.rst:2116 +#: ../Doc/faq/programming.rst:2119 msgid "" "For reasons of efficiency as well as consistency, Python only reads the " "module file on the first time a module is imported. If it didn't, in a " @@ -3188,7 +3204,7 @@ msgstr "" "básico muchas veces. Para forzar una relectura de un módulo que ha sido " "modificado haz lo siguiente::" -#: ../Doc/faq/programming.rst:2126 +#: ../Doc/faq/programming.rst:2129 #, python-format msgid "" "Warning: this technique is not 100% fool-proof. In particular, modules " @@ -3197,7 +3213,7 @@ msgstr "" "Alerta: esta técnica no es 100% segura. En particular, los módulos que " "contienen declaraciones como ::" -#: ../Doc/faq/programming.rst:2131 +#: ../Doc/faq/programming.rst:2134 msgid "" "will continue to work with the old version of the imported objects. If the " "module contains class definitions, existing class instances will *not* be " @@ -3209,7 +3225,7 @@ msgstr "" "existentes *no* se actualizarán para usar la nueva definición de la clase. " "Esto podría resultar en el comportamiento paradójico siguiente::" -#: ../Doc/faq/programming.rst:2144 +#: ../Doc/faq/programming.rst:2147 msgid "" "The nature of the problem is made clear if you print out the \"identity\" of " "the class objects::" diff --git a/faq/windows.po b/faq/windows.po index 673fcf1288..03af472ad3 100644 --- a/faq/windows.po +++ b/faq/windows.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-11-21 15:09-0600\n" "Last-Translator: Cristián Maureira-Fredes \n" "Language: es_AR\n" @@ -19,8 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" -"X-Generator: Poedit 2.3\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/faq/windows.rst:9 msgid "Python on Windows FAQ" @@ -46,13 +45,14 @@ msgstr "" "orientación." #: ../Doc/faq/windows.rst:28 +#, fuzzy msgid "" "Unless you use some sort of integrated development environment, you will end " -"up *typing* Windows commands into what is variously referred to as a \"DOS " -"window\" or \"Command prompt window\". Usually you can create such a window " -"from your search bar by searching for ``cmd``. You should be able to " -"recognize when you have started such a window because you will see a Windows " -"\"command prompt\", which usually looks like this:" +"up *typing* Windows commands into what is referred to as a \"Command prompt " +"window\". Usually you can create such a window from your search bar by " +"searching for ``cmd``. You should be able to recognize when you have " +"started such a window because you will see a Windows \"command prompt\", " +"which usually looks like this:" msgstr "" "A menos que esté utilizando algún tipo de entorno de desarrollo, terminará " "escribiendo comandos de Windows en lo que se denomina \"DOS\" o \"símbolo " @@ -131,8 +131,8 @@ msgstr "" "Muchas personas usan el modo interactivo como una calculadora práctica pero " "altamente programable. Cuando desee finalizar su sesión interactiva de " "Python, llame a la función :func:`exit` o mantenga presionada la tecla :kbd:" -"`Ctrl` mientras ingresa una :kbd:`Z`, luego presione la tecla \":kbd:`Enter`" -"\" para regresar a su símbolo del sistema de Windows." +"`Ctrl` mientras ingresa una :kbd:`Z`, luego presione la tecla \":kbd:" +"`Enter`\" para regresar a su símbolo del sistema de Windows." #: ../Doc/faq/windows.rst:90 msgid "" @@ -337,15 +337,7 @@ msgstr "" "el uso de estos punteros sea transparente para cualquier código C que llame " "a rutinas en la API C de Python." -#: ../Doc/faq/windows.rst:189 -msgid "" -"Borland note: convert :file:`python{NN}.lib` to OMF format using Coff2Omf." -"exe first." -msgstr "" -"Nota *Borland*: convierta el archivo :file:`python{NN}.lib` al formato OMF " -"usando Coff2Omf.exe primero." - -#: ../Doc/faq/windows.rst:194 +#: ../Doc/faq/windows.rst:191 msgid "" "If you use SWIG, it is easy to create a Python \"extension module\" that " "will make the app's data and methods available to Python. SWIG will handle " @@ -359,7 +351,7 @@ msgstr "" "es un código C que se vincula *adentro* de su archivo.exe (!) _No_ necesita " "crear un archivo DLL, y también simplifica la vinculación." -#: ../Doc/faq/windows.rst:200 +#: ../Doc/faq/windows.rst:197 msgid "" "SWIG will create an init function (a C function) whose name depends on the " "name of the extension module. For example, if the name of the module is " @@ -373,7 +365,7 @@ msgstr "" "*shadow SWIG*, como debería, la función *init* se llamará *initleoc()*. Esto " "inicializa una clase auxiliar invisible utilizada por la clase *shadow*." -#: ../Doc/faq/windows.rst:206 +#: ../Doc/faq/windows.rst:203 msgid "" "The reason you can link the C code in step 2 into your .exe file is that " "calling the initialization function is equivalent to importing the module " @@ -383,7 +375,7 @@ msgstr "" "exe es que llamar a la función de inicialización es equivalente a importar " "el módulo a Python! (Este es el segundo hecho clave indocumentado)." -#: ../Doc/faq/windows.rst:210 +#: ../Doc/faq/windows.rst:207 msgid "" "In short, you can use the following code to initialize the Python " "interpreter with your extension module." @@ -391,7 +383,7 @@ msgstr "" "En resumen, puede usar el siguiente código para inicializar el intérprete de " "Python con su complemento." -#: ../Doc/faq/windows.rst:221 +#: ../Doc/faq/windows.rst:218 msgid "" "There are two problems with Python's C API which will become apparent if you " "use a compiler other than MSVC, the compiler used to build pythonNN.dll." @@ -400,7 +392,7 @@ msgstr "" "compilador que no sea *MSVC*, el compilador utilizado para construir " "*pythonNN.dll*." -#: ../Doc/faq/windows.rst:224 +#: ../Doc/faq/windows.rst:221 msgid "" "Problem 1: The so-called \"Very High Level\" functions that take FILE * " "arguments will not work in a multi-compiler environment because each " @@ -413,7 +405,7 @@ msgstr "" "Desde el punto de vista de la implementación, estas son funciones de muy " "_bajo_ nivel." -#: ../Doc/faq/windows.rst:229 +#: ../Doc/faq/windows.rst:226 msgid "" "Problem 2: SWIG generates the following code when generating wrappers to " "void functions:" @@ -421,7 +413,7 @@ msgstr "" "Problema 2: *SWIG* genera el siguiente código al generar contenedores para " "cancelar las funciones:" -#: ../Doc/faq/windows.rst:238 +#: ../Doc/faq/windows.rst:235 msgid "" "Alas, Py_None is a macro that expands to a reference to a complex data " "structure called _Py_NoneStruct inside pythonNN.dll. Again, this code will " @@ -432,7 +424,7 @@ msgstr "" "dll*. Nuevamente, este código fallará en un entorno de múltiples " "compiladores. Reemplace este código con:" -#: ../Doc/faq/windows.rst:246 +#: ../Doc/faq/windows.rst:243 msgid "" "It may be possible to use SWIG's ``%typemap`` command to make the change " "automatically, though I have not been able to get this to work (I'm a " @@ -442,7 +434,7 @@ msgstr "" "automáticamente, aunque no he logrado que funcione (soy un principiante con " "*SWIG*)." -#: ../Doc/faq/windows.rst:250 +#: ../Doc/faq/windows.rst:247 msgid "" "Using a Python shell script to put up a Python interpreter window from " "inside your Windows app is not a good idea; the resulting window will be " @@ -463,13 +455,13 @@ msgstr "" "Python (definido en su complemento) que contenga los métodos de *read()* y " "*write()*." -#: ../Doc/faq/windows.rst:259 +#: ../Doc/faq/windows.rst:256 msgid "How do I keep editors from inserting tabs into my Python source?" msgstr "" "¿Cómo puedo evitar que mi editor inserte pestañas en mi archivo fuente de " "Python?" -#: ../Doc/faq/windows.rst:261 +#: ../Doc/faq/windows.rst:258 msgid "" "The FAQ does not recommend using tabs, and the Python style guide, :pep:`8`, " "recommends 4 spaces for distributed Python code; this is also the Emacs " @@ -480,7 +472,7 @@ msgstr "" "el código de Python. Este es también el modo predeterminado de Emacs con " "Python." -#: ../Doc/faq/windows.rst:265 +#: ../Doc/faq/windows.rst:262 msgid "" "Under any editor, mixing tabs and spaces is a bad idea. MSVC is no " "different in this respect, and is easily configured to use spaces: Take :" @@ -494,7 +486,7 @@ msgstr "" "de archivo \"Default\", debe establecer \"Tab size\" and \"Indent size\" en " "4, luego seleccione Insertar espacios." -#: ../Doc/faq/windows.rst:270 +#: ../Doc/faq/windows.rst:267 msgid "" "Python raises :exc:`IndentationError` or :exc:`TabError` if mixed tabs and " "spaces are causing problems in leading whitespace. You may also run the :mod:" @@ -504,11 +496,11 @@ msgstr "" "combinación de tabulación y sangría es problemática al comienzo de la línea. " "También puede usar el módulo :mod:`tabnanny` para detectar estos errores." -#: ../Doc/faq/windows.rst:277 +#: ../Doc/faq/windows.rst:274 msgid "How do I check for a keypress without blocking?" msgstr "¿Cómo verifico una pulsación de tecla sin bloquearla?" -#: ../Doc/faq/windows.rst:279 +#: ../Doc/faq/windows.rst:276 msgid "" "Use the :mod:`msvcrt` module. This is a standard Windows-specific extension " "module. It defines a function ``kbhit()`` which checks whether a keyboard " @@ -517,3 +509,23 @@ msgstr "" "Use el módulo :mod:`msvcrt`. Es una extensión estándar específica de " "Windows, que define una función ``kbhit()`` que verifica si se ha presionado " "una tecla, y ``getch()`` que recupera el carácter sin mostrarlo." + +#: ../Doc/faq/windows.rst:281 +msgid "How do I solve the missing api-ms-win-crt-runtime-l1-1-0.dll error?" +msgstr "" + +#: ../Doc/faq/windows.rst:283 +msgid "" +"This can occur on Python 3.5 and later when using Windows 8.1 or earlier " +"without all updates having been installed. First ensure your operating " +"system is supported and is up to date, and if that does not resolve the " +"issue, visit the `Microsoft support page `_ for guidance on manually installing the C Runtime update." +msgstr "" + +#~ msgid "" +#~ "Borland note: convert :file:`python{NN}.lib` to OMF format using Coff2Omf." +#~ "exe first." +#~ msgstr "" +#~ "Nota *Borland*: convierta el archivo :file:`python{NN}.lib` al formato " +#~ "OMF usando Coff2Omf.exe primero." diff --git a/glossary.po b/glossary.po index 0989168be8..c26f22733e 100644 --- a/glossary.po +++ b/glossary.po @@ -10,16 +10,16 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-08-04 11:03+0200\n" "Last-Translator: Cristián Maureira-Fredes \n" -"Language-Team: python-doc-es\n" "Language: es\n" +"Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" -"Generated-By: Babel 2.9.1\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/glossary.rst:5 msgid "Glossary" @@ -331,20 +331,30 @@ msgid "attribute" msgstr "atributo" #: ../Doc/glossary.rst:139 +#, fuzzy msgid "" -"A value associated with an object which is referenced by name using dotted " -"expressions. For example, if an object *o* has an attribute *a* it would be " -"referenced as *o.a*." +"A value associated with an object which is usually referenced by name using " +"dotted expressions. For example, if an object *o* has an attribute *a* it " +"would be referenced as *o.a*." msgstr "" "Un valor asociado a un objeto que es referencias por el nombre usado " "expresiones de punto. Por ejemplo, si un objeto *o* tiene un atributo *a* " "sería referenciado como *o.a*." -#: ../Doc/glossary.rst:142 +#: ../Doc/glossary.rst:144 +msgid "" +"It is possible to give an object an attribute whose name is not an " +"identifier as defined by :ref:`identifiers`, for example using :func:" +"`setattr`, if the object allows it. Such an attribute will not be accessible " +"using a dotted expression, and would instead need to be retrieved with :func:" +"`getattr`." +msgstr "" + +#: ../Doc/glossary.rst:149 msgid "awaitable" msgstr "a la espera" -#: ../Doc/glossary.rst:144 +#: ../Doc/glossary.rst:151 msgid "" "An object that can be used in an :keyword:`await` expression. Can be a :" "term:`coroutine` or an object with an :meth:`__await__` method. See also :" @@ -354,11 +364,11 @@ msgstr "" "keyword:`await`. Puede ser una :term:`coroutine` o un objeto con un método :" "meth:`__await__`. Vea también :pep:`492`." -#: ../Doc/glossary.rst:147 +#: ../Doc/glossary.rst:154 msgid "BDFL" msgstr "BDFL" -#: ../Doc/glossary.rst:149 +#: ../Doc/glossary.rst:156 msgid "" "Benevolent Dictator For Life, a.k.a. `Guido van Rossum `_, Python's creator." @@ -367,11 +377,11 @@ msgstr "" "decir `Guido van Rossum `_, el creador de " "Python." -#: ../Doc/glossary.rst:151 +#: ../Doc/glossary.rst:158 msgid "binary file" msgstr "archivo binario" -#: ../Doc/glossary.rst:153 +#: ../Doc/glossary.rst:160 msgid "" "A :term:`file object` able to read and write :term:`bytes-like objects " "`. Examples of binary files are files opened in binary " @@ -385,7 +395,7 @@ msgstr "" "`sys.stdout.buffer`, e instancias de :class:`io.BytesIO` y de :class:`gzip." "GzipFile`." -#: ../Doc/glossary.rst:160 +#: ../Doc/glossary.rst:167 msgid "" "See also :term:`text file` for a file object able to read and write :class:" "`str` objects." @@ -393,11 +403,11 @@ msgstr "" "Vea también :term:`text file` para un objeto archivo capaz de leer y " "escribir objetos :class:`str`." -#: ../Doc/glossary.rst:162 +#: ../Doc/glossary.rst:169 msgid "borrowed reference" msgstr "referencia prestada" -#: ../Doc/glossary.rst:164 +#: ../Doc/glossary.rst:171 msgid "" "In Python's C API, a borrowed reference is a reference to an object. It does " "not modify the object reference count. It becomes a dangling pointer if the " @@ -410,7 +420,7 @@ msgstr "" "de basura puede eliminar el último :term:`strong reference` del objeto y así " "destruirlo." -#: ../Doc/glossary.rst:169 +#: ../Doc/glossary.rst:176 msgid "" "Calling :c:func:`Py_INCREF` on the :term:`borrowed reference` is recommended " "to convert it to a :term:`strong reference` in-place, except when the object " @@ -425,11 +435,11 @@ msgstr "" "`Py_NewRef` se puede utilizar para crear una nueva :term:`referencia fuerte " "`." -#: ../Doc/glossary.rst:174 +#: ../Doc/glossary.rst:181 msgid "bytes-like object" msgstr "objetos tipo binarios" -#: ../Doc/glossary.rst:176 +#: ../Doc/glossary.rst:183 msgid "" "An object that supports the :ref:`bufferobjects` and can export a C-:term:" "`contiguous` buffer. This includes all :class:`bytes`, :class:`bytearray`, " @@ -445,7 +455,7 @@ msgstr "" "operaciones que usan datos binarios; éstas incluyen compresión, salvar a " "archivos binarios, y enviarlos a través de un socket." -#: ../Doc/glossary.rst:183 +#: ../Doc/glossary.rst:190 msgid "" "Some operations need the binary data to be mutable. The documentation often " "refers to these as \"read-write bytes-like objects\". Example mutable " @@ -462,11 +472,11 @@ msgstr "" "(\"objetos tipo binario de sólo lectura\"); ejemplos de éstos incluyen :" "class:`bytes` y :class:`memoryview` del objeto :class:`bytes`." -#: ../Doc/glossary.rst:191 +#: ../Doc/glossary.rst:198 msgid "bytecode" msgstr "bytecode" -#: ../Doc/glossary.rst:193 +#: ../Doc/glossary.rst:200 msgid "" "Python source code is compiled into bytecode, the internal representation of " "a Python program in the CPython interpreter. The bytecode is also cached in " @@ -487,7 +497,7 @@ msgstr "" "*bytecodes* no tienen como requisito trabajar en las diversas máquina " "virtuales de Python, ni de ser estable entre versiones Python." -#: ../Doc/glossary.rst:203 +#: ../Doc/glossary.rst:210 msgid "" "A list of bytecode instructions can be found in the documentation for :ref:" "`the dis module `." @@ -495,11 +505,29 @@ msgstr "" "Una lista de las instrucciones en *bytecode* está disponible en la " "documentación de :ref:`el módulo dis `." -#: ../Doc/glossary.rst:205 +#: ../Doc/glossary.rst:212 +#, fuzzy +msgid "callable" +msgstr "hashable" + +#: ../Doc/glossary.rst:214 +msgid "" +"A callable is an object that can be called, possibly with a set of arguments " +"(see :term:`argument`), with the following syntax::" +msgstr "" + +#: ../Doc/glossary.rst:219 +msgid "" +"A :term:`function`, and by extension a :term:`method`, is a callable. An " +"instance of a class that implements the :meth:`~object.__call__` method is " +"also a callable." +msgstr "" + +#: ../Doc/glossary.rst:222 msgid "callback" msgstr "retrollamada" -#: ../Doc/glossary.rst:207 +#: ../Doc/glossary.rst:224 msgid "" "A subroutine function which is passed as an argument to be executed at some " "point in the future." @@ -507,11 +535,11 @@ msgstr "" "Una función de subrutina que se pasa como un argumento para ejecutarse en " "algún momento en el futuro." -#: ../Doc/glossary.rst:209 +#: ../Doc/glossary.rst:226 msgid "class" msgstr "clase" -#: ../Doc/glossary.rst:211 +#: ../Doc/glossary.rst:228 msgid "" "A template for creating user-defined objects. Class definitions normally " "contain method definitions which operate on instances of the class." @@ -520,11 +548,11 @@ msgstr "" "de clase normalmente contienen definiciones de métodos que operan una " "instancia de la clase." -#: ../Doc/glossary.rst:214 +#: ../Doc/glossary.rst:231 msgid "class variable" msgstr "variable de clase" -#: ../Doc/glossary.rst:216 +#: ../Doc/glossary.rst:233 msgid "" "A variable defined in a class and intended to be modified only at class " "level (i.e., not in an instance of the class)." @@ -532,35 +560,11 @@ msgstr "" "Una variable definida en una clase y prevista para ser modificada sólo a " "nivel de clase (es decir, no en una instancia de la clase)." -#: ../Doc/glossary.rst:218 -msgid "coercion" -msgstr "coerción" - -#: ../Doc/glossary.rst:220 -msgid "" -"The implicit conversion of an instance of one type to another during an " -"operation which involves two arguments of the same type. For example, " -"``int(3.15)`` converts the floating point number to the integer ``3``, but " -"in ``3+4.5``, each argument is of a different type (one int, one float), and " -"both must be converted to the same type before they can be added or it will " -"raise a :exc:`TypeError`. Without coercion, all arguments of even " -"compatible types would have to be normalized to the same value by the " -"programmer, e.g., ``float(3)+4.5`` rather than just ``3+4.5``." -msgstr "" -"La conversión implícita de una instancia de un tipo en otra durante una " -"operación que involucra dos argumentos del mismo tipo. Por ejemplo, " -"``int(3.15)`` convierte el número de punto flotante al entero ``3``, pero en " -"``3 + 4.5``, cada argumento es de un tipo diferente (uno entero, otro " -"flotante), y ambos deben ser convertidos al mismo tipo antes de que puedan " -"ser sumados o emitiría un :exc:`TypeError`. Sin coerción, todos los " -"argumentos, incluso de tipos compatibles, deberían ser normalizados al mismo " -"tipo por el programador, por ejemplo ``float(3)+4.5`` en lugar de ``3+4.5``." - -#: ../Doc/glossary.rst:228 +#: ../Doc/glossary.rst:235 msgid "complex number" msgstr "número complejo" -#: ../Doc/glossary.rst:230 +#: ../Doc/glossary.rst:237 msgid "" "An extension of the familiar real number system in which all numbers are " "expressed as a sum of a real part and an imaginary part. Imaginary numbers " @@ -583,11 +587,11 @@ msgstr "" "use :mod:`cmath`. El uso de números complejos es matemática bastante " "avanzada. Si no le parecen necesarios, puede ignorarlos sin inconvenientes." -#: ../Doc/glossary.rst:240 +#: ../Doc/glossary.rst:247 msgid "context manager" msgstr "administrador de contextos" -#: ../Doc/glossary.rst:242 +#: ../Doc/glossary.rst:249 msgid "" "An object which controls the environment seen in a :keyword:`with` statement " "by defining :meth:`__enter__` and :meth:`__exit__` methods. See :pep:`343`." @@ -595,11 +599,11 @@ msgstr "" "Un objeto que controla el entorno en la sentencia :keyword:`with` definiendo " "los métodos :meth:`__enter__` y :meth:`__exit__`. Vea :pep:`343`." -#: ../Doc/glossary.rst:245 +#: ../Doc/glossary.rst:252 msgid "context variable" msgstr "variable de contexto" -#: ../Doc/glossary.rst:247 +#: ../Doc/glossary.rst:254 msgid "" "A variable which can have different values depending on its context. This is " "similar to Thread-Local Storage in which each execution thread may have a " @@ -616,11 +620,11 @@ msgstr "" "contexto es mantener registro de las variables en tareas concurrentes " "asíncronas. Vea :mod:`contextvars`." -#: ../Doc/glossary.rst:254 +#: ../Doc/glossary.rst:261 msgid "contiguous" msgstr "contiguo" -#: ../Doc/glossary.rst:258 +#: ../Doc/glossary.rst:265 msgid "" "A buffer is considered contiguous exactly if it is either *C-contiguous* or " "*Fortran contiguous*. Zero-dimensional buffers are C and Fortran " @@ -638,11 +642,11 @@ msgstr "" "orden de las direcciones de memoria. Sin embargo, en arreglos Fortran " "contiguos, el primer índice vería más rápidamente." -#: ../Doc/glossary.rst:266 +#: ../Doc/glossary.rst:273 msgid "coroutine" msgstr "corrutina" -#: ../Doc/glossary.rst:268 +#: ../Doc/glossary.rst:275 msgid "" "Coroutines are a more generalized form of subroutines. Subroutines are " "entered at one point and exited at another point. Coroutines can be " @@ -655,11 +659,11 @@ msgstr "" "Pueden ser implementadas con la sentencia :keyword:`async def`. Vea además :" "pep:`492`." -#: ../Doc/glossary.rst:273 +#: ../Doc/glossary.rst:280 msgid "coroutine function" msgstr "función corrutina" -#: ../Doc/glossary.rst:275 +#: ../Doc/glossary.rst:282 msgid "" "A function which returns a :term:`coroutine` object. A coroutine function " "may be defined with the :keyword:`async def` statement, and may contain :" @@ -671,11 +675,11 @@ msgstr "" "las palabras claves :keyword:`await`, :keyword:`async for`, y :keyword:" "`async with`. Las mismas son introducidas en :pep:`492`." -#: ../Doc/glossary.rst:280 +#: ../Doc/glossary.rst:287 msgid "CPython" msgstr "CPython" -#: ../Doc/glossary.rst:282 +#: ../Doc/glossary.rst:289 msgid "" "The canonical implementation of the Python programming language, as " "distributed on `python.org `_. The term \"CPython\" " @@ -687,11 +691,11 @@ msgstr "" "es usado cuando es necesario distinguir esta implementación de otras como " "*Jython* o *IronPython*." -#: ../Doc/glossary.rst:286 +#: ../Doc/glossary.rst:293 msgid "decorator" msgstr "decorador" -#: ../Doc/glossary.rst:288 +#: ../Doc/glossary.rst:295 msgid "" "A function returning another function, usually applied as a function " "transformation using the ``@wrapper`` syntax. Common examples for " @@ -701,7 +705,7 @@ msgstr "" "de transformación empleando la sintaxis ``@envoltorio``. Ejemplos comunes de " "decoradores son :func:`classmethod` y :func:`staticmethod`." -#: ../Doc/glossary.rst:292 +#: ../Doc/glossary.rst:299 msgid "" "The decorator syntax is merely syntactic sugar, the following two function " "definitions are semantically equivalent::" @@ -709,7 +713,7 @@ msgstr "" "La sintaxis del decorador es meramente azúcar sintáctico, las definiciones " "de las siguientes dos funciones son semánticamente equivalentes::" -#: ../Doc/glossary.rst:303 +#: ../Doc/glossary.rst:310 msgid "" "The same concept exists for classes, but is less commonly used there. See " "the documentation for :ref:`function definitions ` and :ref:`class " @@ -719,11 +723,11 @@ msgstr "" "documentación de :ref:`function definitions ` y :ref:`class " "definitions ` para mayor detalle sobre decoradores." -#: ../Doc/glossary.rst:306 +#: ../Doc/glossary.rst:313 msgid "descriptor" msgstr "descriptor" -#: ../Doc/glossary.rst:308 +#: ../Doc/glossary.rst:315 msgid "" "Any object which defines the methods :meth:`__get__`, :meth:`__set__`, or :" "meth:`__delete__`. When a class attribute is a descriptor, its special " @@ -746,7 +750,7 @@ msgstr "" "propiedades, métodos de clase, métodos estáticos, y referencia a súper " "clases." -#: ../Doc/glossary.rst:318 +#: ../Doc/glossary.rst:325 msgid "" "For more information about descriptors' methods, see :ref:`descriptors` or " "the :ref:`Descriptor How To Guide `." @@ -755,11 +759,11 @@ msgstr "" "consulte :ref:`descriptors` o :ref:`Guía práctica de uso de los " "descriptores`." -#: ../Doc/glossary.rst:320 +#: ../Doc/glossary.rst:327 msgid "dictionary" msgstr "diccionario" -#: ../Doc/glossary.rst:322 +#: ../Doc/glossary.rst:329 msgid "" "An associative array, where arbitrary keys are mapped to values. The keys " "can be any object with :meth:`__hash__` and :meth:`__eq__` methods. Called a " @@ -769,11 +773,11 @@ msgstr "" "Las claves pueden ser cualquier objeto con los métodos :meth:`__hash__` y :" "meth:`__eq__` . Son llamadas hash en Perl." -#: ../Doc/glossary.rst:325 +#: ../Doc/glossary.rst:332 msgid "dictionary comprehension" msgstr "comprensión de diccionarios" -#: ../Doc/glossary.rst:327 +#: ../Doc/glossary.rst:334 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 " @@ -785,11 +789,11 @@ msgstr "" "in range(10)}`` genera un diccionario que contiene la clave ``n`` asignada " "al valor ``n ** 2``. Ver :ref:`comprehensions`." -#: ../Doc/glossary.rst:331 +#: ../Doc/glossary.rst:338 msgid "dictionary view" msgstr "vista de diccionario" -#: ../Doc/glossary.rst:333 +#: ../Doc/glossary.rst:340 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 " @@ -804,11 +808,11 @@ msgstr "" "la vista de diccionario a convertirse en una lista completa, use " "``list(dictview)``. Vea :ref:`dict-views`." -#: ../Doc/glossary.rst:339 +#: ../Doc/glossary.rst:346 msgid "docstring" msgstr "docstring" -#: ../Doc/glossary.rst:341 +#: ../Doc/glossary.rst:348 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 " @@ -822,11 +826,11 @@ msgstr "" "clase, función o módulo comprendida. Como está disponible mediante " "introspección, es el lugar canónico para ubicar la documentación del objeto." -#: ../Doc/glossary.rst:347 +#: ../Doc/glossary.rst:354 msgid "duck-typing" msgstr "tipado de pato" -#: ../Doc/glossary.rst:349 +#: ../Doc/glossary.rst:356 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 " @@ -849,11 +853,11 @@ msgstr "" "classes `. En su lugar, generalmente pregunta con :func:" "`hasattr` o :term:`EAFP`." -#: ../Doc/glossary.rst:358 +#: ../Doc/glossary.rst:365 msgid "EAFP" msgstr "EAFP" -#: ../Doc/glossary.rst:360 +#: ../Doc/glossary.rst:367 msgid "" "Easier to ask for forgiveness than permission. This common Python coding " "style assumes the existence of valid keys or attributes and catches " @@ -870,11 +874,11 @@ msgstr "" "Esta técnica contrasta con estilo :term:`LBYL` usual en otros lenguajes como " "C." -#: ../Doc/glossary.rst:366 +#: ../Doc/glossary.rst:373 msgid "expression" msgstr "expresión" -#: ../Doc/glossary.rst:368 +#: ../Doc/glossary.rst:375 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, " @@ -892,11 +896,11 @@ msgstr "" "`statement`\\s que no pueden ser usadas como expresiones, como la :keyword:" "`while`. Las asignaciones también son sentencias, no expresiones." -#: ../Doc/glossary.rst:375 +#: ../Doc/glossary.rst:382 msgid "extension module" msgstr "módulo de extensión" -#: ../Doc/glossary.rst:377 +#: ../Doc/glossary.rst:384 msgid "" "A module written in C or C++, using Python's C API to interact with the core " "and with user code." @@ -904,11 +908,11 @@ msgstr "" "Un módulo escrito en C o C++, usando la API para C de Python para " "interactuar con el núcleo y el código del usuario." -#: ../Doc/glossary.rst:379 +#: ../Doc/glossary.rst:386 msgid "f-string" msgstr "f-string" -#: ../Doc/glossary.rst:381 +#: ../Doc/glossary.rst:388 msgid "" "String literals prefixed with ``'f'`` or ``'F'`` are commonly called \"f-" "strings\" which is short for :ref:`formatted string literals `. " @@ -918,11 +922,11 @@ msgstr "" "``'F'``, que es una abreviatura para :ref:`formatted string literals `. Vea también :pep:`498`." -#: ../Doc/glossary.rst:384 +#: ../Doc/glossary.rst:391 msgid "file object" msgstr "objeto archivo" -#: ../Doc/glossary.rst:386 +#: ../Doc/glossary.rst:393 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 " @@ -939,7 +943,7 @@ msgstr "" "sockets, pipes, etc.). Los objetos archivo son también denominados :dfn:" "`objetos tipo archivo` o :dfn:`flujos`." -#: ../Doc/glossary.rst:394 +#: ../Doc/glossary.rst:401 msgid "" "There are actually three categories of file objects: raw :term:`binary files " "`, buffered :term:`binary files ` and :term:`text " @@ -953,19 +957,19 @@ msgstr "" "módulo :mod:`io`. La forma canónica de crear objetos archivo es usando la " "función :func:`open`." -#: ../Doc/glossary.rst:399 +#: ../Doc/glossary.rst:406 msgid "file-like object" msgstr "objetos tipo archivo" -#: ../Doc/glossary.rst:401 +#: ../Doc/glossary.rst:408 msgid "A synonym for :term:`file object`." msgstr "Un sinónimo de :term:`file object`." -#: ../Doc/glossary.rst:402 +#: ../Doc/glossary.rst:409 msgid "filesystem encoding and error handler" msgstr "codificación del sistema de archivos y manejador de errores" -#: ../Doc/glossary.rst:404 +#: ../Doc/glossary.rst:411 msgid "" "Encoding and error handler used by Python to decode bytes from the operating " "system and encode Unicode to the operating system." @@ -973,7 +977,7 @@ msgstr "" "Controlador de errores y codificación utilizado por Python para decodificar " "bytes del sistema operativo y codificar Unicode en el sistema operativo." -#: ../Doc/glossary.rst:407 +#: ../Doc/glossary.rst:414 msgid "" "The filesystem encoding must guarantee to successfully decode all bytes " "below 128. If the file system encoding fails to provide this guarantee, API " @@ -984,7 +988,7 @@ msgstr "" "de archivos no proporciona esta garantía, las funciones de API pueden " "lanzar :exc:`UnicodeError`." -#: ../Doc/glossary.rst:411 +#: ../Doc/glossary.rst:418 msgid "" "The :func:`sys.getfilesystemencoding` and :func:`sys." "getfilesystemencodeerrors` functions can be used to get the filesystem " @@ -994,7 +998,7 @@ msgstr "" "getfilesystemencodeerrors` se pueden utilizar para obtener la codificación " "del sistema de archivos y el controlador de errores." -#: ../Doc/glossary.rst:415 +#: ../Doc/glossary.rst:422 msgid "" "The :term:`filesystem encoding and error handler` are configured at Python " "startup by the :c:func:`PyConfig_Read` function: see :c:member:`~PyConfig." @@ -1007,15 +1011,16 @@ msgstr "" "`~PyConfig.filesystem_encoding` y :c:member:`~PyConfig.filesystem_errors` " "de :c:type:`PyConfig`." -#: ../Doc/glossary.rst:420 -msgid "See also the :term:`locale encoding`" +#: ../Doc/glossary.rst:427 +#, fuzzy +msgid "See also the :term:`locale encoding`." msgstr "Vea también :term:`locale encoding`" -#: ../Doc/glossary.rst:421 +#: ../Doc/glossary.rst:428 msgid "finder" msgstr "buscador" -#: ../Doc/glossary.rst:423 +#: ../Doc/glossary.rst:430 msgid "" "An object that tries to find the :term:`loader` for a module that is being " "imported." @@ -1023,7 +1028,7 @@ msgstr "" "Un objeto que trata de encontrar el :term:`loader` para el módulo que está " "siendo importado." -#: ../Doc/glossary.rst:426 +#: ../Doc/glossary.rst:433 msgid "" "Since Python 3.3, there are two types of finder: :term:`meta path finders " "` for use with :data:`sys.meta_path`, and :term:`path " @@ -1034,15 +1039,15 @@ msgstr "" "y :term:`buscadores de entradas de rutas ` para usar " "con :data:`sys.path_hooks`." -#: ../Doc/glossary.rst:430 +#: ../Doc/glossary.rst:437 msgid "See :pep:`302`, :pep:`420` and :pep:`451` for much more detail." msgstr "Vea :pep:`302`, :pep:`420` y :pep:`451` para mayores detalles." -#: ../Doc/glossary.rst:431 +#: ../Doc/glossary.rst:438 msgid "floor division" msgstr "división entera" -#: ../Doc/glossary.rst:433 +#: ../Doc/glossary.rst:440 msgid "" "Mathematical division that rounds down to nearest integer. The floor " "division operator is ``//``. For example, the expression ``11 // 4`` " @@ -1056,11 +1061,11 @@ msgstr "" "verdadera división de números flotantes. Note que ``(-11) // 4`` es ``-3`` " "porque es ``-2.75`` redondeado *para abajo*. Ver :pep:`238`." -#: ../Doc/glossary.rst:438 +#: ../Doc/glossary.rst:445 msgid "function" msgstr "función" -#: ../Doc/glossary.rst:440 +#: ../Doc/glossary.rst:447 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 " @@ -1072,16 +1077,16 @@ msgstr "" "ser usados en la ejecución de la misma. Vea también :term:`parameter`, :term:" "`method`, y la sección :ref:`function`." -#: ../Doc/glossary.rst:444 +#: ../Doc/glossary.rst:451 msgid "function annotation" msgstr "anotación de función" -#: ../Doc/glossary.rst:446 +#: ../Doc/glossary.rst:453 msgid "An :term:`annotation` of a function parameter or return value." msgstr "" "Una :term:`annotation` del parámetro de una función o un valor de retorno." -#: ../Doc/glossary.rst:448 +#: ../Doc/glossary.rst:455 msgid "" "Function annotations are usually used for :term:`type hints `: " "for example, this function is expected to take two :class:`int` arguments " @@ -1092,13 +1097,13 @@ msgstr "" "tome dos argumentos de clase :class:`int` y también se espera que retorne " "dos valores :class:`int`::" -#: ../Doc/glossary.rst:456 +#: ../Doc/glossary.rst:463 msgid "Function annotation syntax is explained in section :ref:`function`." msgstr "" "La sintaxis de las anotaciones de funciones son explicadas en la sección :" "ref:`function`." -#: ../Doc/glossary.rst:458 +#: ../Doc/glossary.rst:465 msgid "" "See :term:`variable annotation` and :pep:`484`, which describe this " "functionality. Also see :ref:`annotations-howto` for best practices on " @@ -1108,11 +1113,11 @@ msgstr "" "funcionalidad. Consulte también :ref:`annotations-howto` para conocer las " "mejores prácticas sobre cómo trabajar con anotaciones." -#: ../Doc/glossary.rst:462 +#: ../Doc/glossary.rst:469 msgid "__future__" msgstr "__future__" -#: ../Doc/glossary.rst:464 +#: ../Doc/glossary.rst:471 msgid "" "A :ref:`future statement `, ``from __future__ import ``, " "directs the compiler to compile the current module using syntax or semantics " @@ -1130,11 +1135,11 @@ msgstr "" "primera vez una nueva característica al lenguaje y cuándo se convertirá (o " "se convirtió) en la predeterminada:" -#: ../Doc/glossary.rst:475 +#: ../Doc/glossary.rst:482 msgid "garbage collection" msgstr "recolección de basura" -#: ../Doc/glossary.rst:477 +#: ../Doc/glossary.rst:484 msgid "" "The process of freeing memory when it is not used anymore. Python performs " "garbage collection via reference counting and a cyclic garbage collector " @@ -1147,11 +1152,11 @@ msgstr "" "romper las referencias cíclicas. El recogedor de basura puede ser " "controlado mediante el módulo :mod:`gc` ." -#: ../Doc/glossary.rst:483 +#: ../Doc/glossary.rst:490 msgid "generator" msgstr "generador" -#: ../Doc/glossary.rst:485 +#: ../Doc/glossary.rst:492 msgid "" "A function which returns a :term:`generator iterator`. It looks like a " "normal function except that it contains :keyword:`yield` expressions for " @@ -1163,7 +1168,7 @@ msgstr "" "producir series de valores utilizables en un bucle *for* o que pueden ser " "obtenidas una por una con la función :func:`next`." -#: ../Doc/glossary.rst:490 +#: ../Doc/glossary.rst:497 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 " @@ -1173,15 +1178,15 @@ msgstr "" "*iterador generador* en ciertos contextos. En aquellos casos en los que el " "significado no está claro, usar los términos completos evita la ambigüedad." -#: ../Doc/glossary.rst:493 +#: ../Doc/glossary.rst:500 msgid "generator iterator" msgstr "iterador generador" -#: ../Doc/glossary.rst:495 +#: ../Doc/glossary.rst:502 msgid "An object created by a :term:`generator` function." msgstr "Un objeto creado por una función :term:`generator`." -#: ../Doc/glossary.rst:497 +#: ../Doc/glossary.rst:504 msgid "" "Each :keyword:`yield` temporarily suspends processing, remembering the " "location execution state (including local variables and pending try-" @@ -1194,11 +1199,11 @@ msgstr "" "dejado, a diferencia de lo que ocurre con las funciones que comienzan " "nuevamente con cada invocación." -#: ../Doc/glossary.rst:504 +#: ../Doc/glossary.rst:511 msgid "generator expression" msgstr "expresión generadora" -#: ../Doc/glossary.rst:506 +#: ../Doc/glossary.rst:513 msgid "" "An expression that returns an iterator. It looks like a normal expression " "followed by a :keyword:`!for` clause defining a loop variable, range, and an " @@ -1210,11 +1215,11 @@ msgstr "" "bucle, un rango y una cláusula opcional :keyword:`!if`. La expresión " "combinada genera valores para la función contenedora::" -#: ../Doc/glossary.rst:513 +#: ../Doc/glossary.rst:520 msgid "generic function" msgstr "función genérica" -#: ../Doc/glossary.rst:515 +#: ../Doc/glossary.rst:522 msgid "" "A function composed of multiple functions implementing the same operation " "for different types. Which implementation should be used during a call is " @@ -1224,7 +1229,7 @@ msgstr "" "para diferentes tipos. Qué implementación deberá ser usada durante la " "llamada a la misma es determinado por el algoritmo de despacho." -#: ../Doc/glossary.rst:519 +#: ../Doc/glossary.rst:526 msgid "" "See also the :term:`single dispatch` glossary entry, the :func:`functools." "singledispatch` decorator, and :pep:`443`." @@ -1232,41 +1237,40 @@ msgstr "" "Vea también la entrada de glosario :term:`single dispatch`, el decorador :" "func:`functools.singledispatch`, y :pep:`443`." -#: ../Doc/glossary.rst:521 +#: ../Doc/glossary.rst:528 msgid "generic type" msgstr "tipos genéricos" -#: ../Doc/glossary.rst:523 +#: ../Doc/glossary.rst:530 +#, fuzzy msgid "" -"A :term:`type` that can be parameterized; typically a container like :class:" -"`list`. Used for :term:`type hints ` and :term:`annotations " -"`." +"A :term:`type` that can be parameterized; typically a :ref:`container " +"class` such as :class:`list` or :class:`dict`. Used for :" +"term:`type hints ` and :term:`annotations `." msgstr "" "Un :term:`type` que se puede parametrizar; normalmente un contenedor como :" "class:`list`. Usado para :term:`type hints ` y :term:`annotations " "`." -#: ../Doc/glossary.rst:527 +#: ../Doc/glossary.rst:535 msgid "" -"See :pep:`483` for more details, and :mod:`typing` or :ref:`generic alias " -"type ` for its uses." +"For more details, see :ref:`generic alias types`, :pep:" +"`483`, :pep:`484`, :pep:`585`, and the :mod:`typing` module." msgstr "" -"Ver :pep:`483` para más detalles, y :mod:`typing` o :ref:`tipo alias " -"genérico ` para sus usos." -#: ../Doc/glossary.rst:529 +#: ../Doc/glossary.rst:537 msgid "GIL" msgstr "GIL" -#: ../Doc/glossary.rst:531 +#: ../Doc/glossary.rst:539 msgid "See :term:`global interpreter lock`." msgstr "Vea :term:`global interpreter lock`." -#: ../Doc/glossary.rst:532 +#: ../Doc/glossary.rst:540 msgid "global interpreter lock" msgstr "bloqueo global del intérprete" -#: ../Doc/glossary.rst:534 +#: ../Doc/glossary.rst:542 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 " @@ -1284,10 +1288,11 @@ msgstr "" "hilos, a costa de mucho del paralelismo ofrecido por las máquinas con " "múltiples procesadores." -#: ../Doc/glossary.rst:543 +#: ../Doc/glossary.rst:551 +#, fuzzy msgid "" "However, some extension modules, either standard or third-party, are " -"designed so as to release the GIL when doing computationally-intensive tasks " +"designed so as to release the GIL when doing computationally intensive tasks " "such as compression or hashing. Also, the GIL is always released when doing " "I/O." msgstr "" @@ -1296,7 +1301,7 @@ msgstr "" "computacionalmente intensivas como la compresión o el *hashing*. Además, el " "GIL siempre es liberado cuando se hace entrada/salida." -#: ../Doc/glossary.rst:548 +#: ../Doc/glossary.rst:556 msgid "" "Past efforts to create a \"free-threaded\" interpreter (one which locks " "shared data at a much finer granularity) have not been successful because " @@ -1310,11 +1315,11 @@ msgstr "" "un solo procesador. Se cree que superar este problema de rendimiento haría " "la implementación mucho más compleja y por tanto, más costosa de mantener." -#: ../Doc/glossary.rst:554 +#: ../Doc/glossary.rst:562 msgid "hash-based pyc" msgstr "hash-based pyc" -#: ../Doc/glossary.rst:556 +#: ../Doc/glossary.rst:564 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-" @@ -1324,11 +1329,11 @@ msgstr "" "la última modificación del archivo fuente correspondiente para determinar su " "validez. Vea :ref:`pyc-invalidation`." -#: ../Doc/glossary.rst:559 +#: ../Doc/glossary.rst:567 msgid "hashable" msgstr "hashable" -#: ../Doc/glossary.rst:561 +#: ../Doc/glossary.rst:569 msgid "" "An object is *hashable* if it has a hash value which never changes during " "its lifetime (it needs a :meth:`__hash__` method), and can be compared to " @@ -1340,7 +1345,7 @@ msgstr "" "comparado con otro objeto (necesita el método :meth:`__eq__` ). Los objetos " "hashables que se comparan iguales deben tener el mismo número hash." -#: ../Doc/glossary.rst:566 +#: ../Doc/glossary.rst:574 msgid "" "Hashability makes an object usable as a dictionary key and a set member, " "because these data structures use the hash value internally." @@ -1349,7 +1354,7 @@ msgstr "" "miembro de un set, porque éstas estructuras de datos usan los valores de " "hash internamente." -#: ../Doc/glossary.rst:569 +#: ../Doc/glossary.rst:577 msgid "" "Most of Python's immutable built-in objects are hashable; mutable containers " "(such as lists or dictionaries) are not; immutable containers (such as " @@ -1366,25 +1371,26 @@ msgstr "" "Todos se comparan como desiguales (excepto consigo mismos), y su valor de " "hash está derivado de su función :func:`id`." -#: ../Doc/glossary.rst:576 +#: ../Doc/glossary.rst:584 msgid "IDLE" msgstr "IDLE" -#: ../Doc/glossary.rst:578 +#: ../Doc/glossary.rst:586 +#, fuzzy msgid "" -"An Integrated Development Environment for Python. IDLE is a basic editor " -"and interpreter environment which ships with the standard distribution of " -"Python." +"An Integrated Development and Learning Environment for Python. :ref:`idle` " +"is a basic editor and interpreter environment which ships with the standard " +"distribution of Python." msgstr "" "El entorno integrado de desarrollo de Python, o *Integrated Development " "Environment for Python*. IDLE es un editor básico y un entorno de " "intérprete que se incluye con la distribución estándar de Python." -#: ../Doc/glossary.rst:581 +#: ../Doc/glossary.rst:589 msgid "immutable" msgstr "inmutable" -#: ../Doc/glossary.rst:583 +#: ../Doc/glossary.rst:591 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 " @@ -1398,11 +1404,11 @@ msgstr "" "en lugares donde es necesario un valor de hash constante, por ejemplo como " "claves de un diccionario." -#: ../Doc/glossary.rst:588 +#: ../Doc/glossary.rst:596 msgid "import path" msgstr "ruta de importación" -#: ../Doc/glossary.rst:590 +#: ../Doc/glossary.rst:598 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 " @@ -1415,11 +1421,11 @@ msgstr "" "path`, pero para los subpaquetes también puede incluir al atributo " "``__path__`` del paquete padre." -#: ../Doc/glossary.rst:595 +#: ../Doc/glossary.rst:603 msgid "importing" msgstr "importar" -#: ../Doc/glossary.rst:597 +#: ../Doc/glossary.rst:605 msgid "" "The process by which Python code in one module is made available to Python " "code in another module." @@ -1427,11 +1433,11 @@ msgstr "" "El proceso mediante el cual el código Python dentro de un módulo se hace " "alcanzable desde otro código Python en otro módulo." -#: ../Doc/glossary.rst:599 +#: ../Doc/glossary.rst:607 msgid "importer" msgstr "importador" -#: ../Doc/glossary.rst:601 +#: ../Doc/glossary.rst:609 msgid "" "An object that both finds and loads a module; both a :term:`finder` and :" "term:`loader` object." @@ -1439,11 +1445,11 @@ msgstr "" "Un objeto que buscan y lee un módulo; un objeto que es tanto :term:`finder` " "como :term:`loader`." -#: ../Doc/glossary.rst:603 +#: ../Doc/glossary.rst:611 msgid "interactive" msgstr "interactivo" -#: ../Doc/glossary.rst:605 +#: ../Doc/glossary.rst:613 msgid "" "Python has an interactive interpreter which means you can enter statements " "and expressions at the interpreter prompt, immediately execute them and see " @@ -1458,11 +1464,11 @@ msgstr "" "forma muy potente de probar nuevas ideas o inspeccionar módulos y paquetes " "(recuerde ``help(x)``)." -#: ../Doc/glossary.rst:611 +#: ../Doc/glossary.rst:619 msgid "interpreted" msgstr "interpretado" -#: ../Doc/glossary.rst:613 +#: ../Doc/glossary.rst:621 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. " @@ -1479,11 +1485,11 @@ msgstr "" "cortos que los compilados, sin embargo sus programas suelen correr más " "lentamente. Vea también :term:`interactive`." -#: ../Doc/glossary.rst:620 +#: ../Doc/glossary.rst:628 msgid "interpreter shutdown" msgstr "apagado del intérprete" -#: ../Doc/glossary.rst:622 +#: ../Doc/glossary.rst:630 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 " @@ -1504,7 +1510,7 @@ msgstr "" "no funcionar más (ejemplos comunes son los módulos de bibliotecas o los " "artefactos de advertencias *warnings machinery*)" -#: ../Doc/glossary.rst:631 +#: ../Doc/glossary.rst:639 msgid "" "The main reason for interpreter shutdown is that the ``__main__`` module or " "the script being run has finished executing." @@ -1512,18 +1518,19 @@ msgstr "" "La principal razón para el apagado del intérpreter es que el módulo " "``__main__`` o el script que estaba corriendo termine su ejecución." -#: ../Doc/glossary.rst:633 +#: ../Doc/glossary.rst:641 msgid "iterable" msgstr "iterable" -#: ../Doc/glossary.rst:635 +#: ../Doc/glossary.rst:643 +#, fuzzy 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`, " "and :class:`tuple`) and some non-sequence types like :class:`dict`, :term:" "`file objects `, and objects of any classes you define with an :" "meth:`__iter__` method or with a :meth:`__getitem__` method that implements :" -"term:`Sequence ` semantics." +"term:`sequence` semantics." msgstr "" "Un objeto capaz de retornar sus miembros uno por vez. Ejemplos de iterables " "son todos los tipos de secuencias (como :class:`list`, :class:`str`, y :" @@ -1532,7 +1539,7 @@ msgstr "" "los métodos :meth:`__iter__` o con un método :meth:`__getitem__` que " "implementen la semántica de :term:`Sequence `." -#: ../Doc/glossary.rst:642 +#: ../Doc/glossary.rst:650 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 " @@ -1554,11 +1561,11 @@ msgstr "" "variable temporal sin nombre para mantener el iterador mientras dura el " "bucle. Vea también :term:`iterator`, :term:`sequence`, y :term:`generator`." -#: ../Doc/glossary.rst:652 +#: ../Doc/glossary.rst:660 msgid "iterator" msgstr "iterador" -#: ../Doc/glossary.rst:654 +#: ../Doc/glossary.rst:662 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 :" @@ -1591,15 +1598,21 @@ msgstr "" "iterador exhausto usado en previas iteraciones, haciéndolo aparecer como un " "contenedor vacío." -#: ../Doc/glossary.rst:669 +#: ../Doc/glossary.rst:677 msgid "More information can be found in :ref:`typeiter`." msgstr "Puede encontrar más información en :ref:`typeiter`." -#: ../Doc/glossary.rst:670 +#: ../Doc/glossary.rst:681 +msgid "" +"CPython does not consistently apply the requirement that an iterator define :" +"meth:`__iter__`." +msgstr "" + +#: ../Doc/glossary.rst:683 msgid "key function" msgstr "función clave" -#: ../Doc/glossary.rst:672 +#: ../Doc/glossary.rst:685 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 " @@ -1610,7 +1623,7 @@ msgstr "" "`locale.strxfrm` es usada para producir claves de ordenamiento que se " "adaptan a las convenciones específicas de ordenamiento de un *locale*." -#: ../Doc/glossary.rst:677 +#: ../Doc/glossary.rst:690 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`, :" @@ -1622,16 +1635,16 @@ msgstr "" "`min`, :func:`max`, :func:`sorted`, :meth:`list.sort`, :func:`heapq.merge`, :" "func:`heapq.nsmallest`, :func:`heapq.nlargest`, y :func:`itertools.groupby`." -#: ../Doc/glossary.rst:683 +#: ../Doc/glossary.rst:696 +#, fuzzy 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. " "Alternatively, a key function can be built from a :keyword:`lambda` " -"expression such as ``lambda r: (r[0], r[2])``. Also, the :mod:`operator` " -"module provides three key function constructors: :func:`~operator." -"attrgetter`, :func:`~operator.itemgetter`, and :func:`~operator." -"methodcaller`. See the :ref:`Sorting HOW TO ` for examples of " -"how to create and use key functions." +"expression such as ``lambda r: (r[0], r[2])``. Also, :func:`operator." +"attrgetter`, :func:`operator.itemgetter`, and :func:`operator.methodcaller` " +"are three key function constructors. See the :ref:`Sorting HOW TO " +"` for examples of how to create and use key functions." msgstr "" "Hay varias formas de crear una función clave. Por ejemplo, el método :meth:" "`str.lower` puede servir como función clave para ordenamientos que no " @@ -1643,19 +1656,19 @@ msgstr "" "`Sorting HOW TO ` ejemplos de cómo crear y usar funciones " "clave." -#: ../Doc/glossary.rst:691 +#: ../Doc/glossary.rst:703 msgid "keyword argument" msgstr "argumento nombrado" -#: ../Doc/glossary.rst:693 ../Doc/glossary.rst:982 +#: ../Doc/glossary.rst:705 ../Doc/glossary.rst:994 msgid "See :term:`argument`." msgstr "Vea :term:`argument`." -#: ../Doc/glossary.rst:694 +#: ../Doc/glossary.rst:706 msgid "lambda" msgstr "lambda" -#: ../Doc/glossary.rst:696 +#: ../Doc/glossary.rst:708 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 " @@ -1665,11 +1678,11 @@ msgstr "" "que es evaluada cuando la función es llamada. La sintaxis para crear una " "función lambda es ``lambda [parameters]: expression``" -#: ../Doc/glossary.rst:699 +#: ../Doc/glossary.rst:711 msgid "LBYL" msgstr "LBYL" -#: ../Doc/glossary.rst:701 +#: ../Doc/glossary.rst:713 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` " @@ -1682,7 +1695,7 @@ msgstr "" "`EAFP` y está caracterizado por la presencia de muchas sentencias :keyword:" "`if`." -#: ../Doc/glossary.rst:706 +#: ../Doc/glossary.rst:718 msgid "" "In a multi-threaded environment, the LBYL approach can risk introducing a " "race condition between \"the looking\" and \"the leaping\". For example, " @@ -1697,43 +1710,46 @@ msgstr "" "del test, pero antes de retornar el valor. Este problema puede ser resuelto " "usando bloqueos o empleando el método EAFP." -#: ../Doc/glossary.rst:711 +#: ../Doc/glossary.rst:723 msgid "locale encoding" msgstr "codificación de la configuración regional" -#: ../Doc/glossary.rst:713 +#: ../Doc/glossary.rst:725 +#, fuzzy msgid "" -"On Unix, it is the encoding of the LC_CTYPE locale. It can be set with " -"``locale.setlocale(locale.LC_CTYPE, new_locale)``." +"On Unix, it is the encoding of the LC_CTYPE locale. It can be set with :func:" +"`locale.setlocale(locale.LC_CTYPE, new_locale) `." msgstr "" "En Unix, es la codificación de la configuración regional LC_CTYPE. Se puede " "configurar con ``locale.setlocale(locale.LC_CTYPE, new_locale)``." -#: ../Doc/glossary.rst:716 -msgid "On Windows, it is the ANSI code page (ex: ``cp1252``)." +#: ../Doc/glossary.rst:728 +#, fuzzy +msgid "On Windows, it is the ANSI code page (ex: ``\"cp1252\"``)." msgstr "En Windows, es la página de códigos ANSI (por ejemplo, ``cp1252``)." -#: ../Doc/glossary.rst:718 +#: ../Doc/glossary.rst:730 msgid "" -"``locale.getpreferredencoding(False)`` can be used to get the locale " -"encoding." +"On Android and VxWorks, Python uses ``\"utf-8\"`` as the locale encoding." +msgstr "" + +#: ../Doc/glossary.rst:732 +#, fuzzy +msgid "``locale.getencoding()`` can be used to get the locale encoding." msgstr "" "``locale.getpreferredencoding(False)`` se puede utilizar para obtener la " "codificación de la configuración regional." -#: ../Doc/glossary.rst:721 -msgid "" -"Python uses the :term:`filesystem encoding and error handler` to convert " -"between Unicode filenames and bytes filenames." -msgstr "" -"Python usa el :term:`filesystem encoding and error handler` para convertir " -"entre nombres de archivo Unicode y nombres de archivo en bytes." +#: ../Doc/glossary.rst:734 +#, fuzzy +msgid "See also the :term:`filesystem encoding and error handler`." +msgstr "codificación del sistema de archivos y manejador de errores" -#: ../Doc/glossary.rst:723 +#: ../Doc/glossary.rst:735 msgid "list" msgstr "lista" -#: ../Doc/glossary.rst:725 +#: ../Doc/glossary.rst:737 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 " @@ -1743,11 +1759,11 @@ msgstr "" "similar a un arreglo en otros lenguajes que a una lista enlazada porque el " "acceso a los elementos es O(1)." -#: ../Doc/glossary.rst:728 +#: ../Doc/glossary.rst:740 msgid "list comprehension" msgstr "comprensión de listas" -#: ../Doc/glossary.rst:730 +#: ../Doc/glossary.rst:742 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 " @@ -1762,11 +1778,11 @@ msgstr "" "`if` es opcional. Si es omitida, todos los elementos en ``range(256)`` son " "procesados." -#: ../Doc/glossary.rst:736 +#: ../Doc/glossary.rst:748 msgid "loader" msgstr "cargador" -#: ../Doc/glossary.rst:738 +#: ../Doc/glossary.rst:750 msgid "" "An object that loads a module. It must define a method named :meth:" "`load_module`. A loader is typically returned by a :term:`finder`. See :pep:" @@ -1778,23 +1794,24 @@ msgstr "" "`finder`. Vea :pep:`302` para detalles y :class:`importlib.abc.Loader` para " "una :term:`abstract base class`." -#: ../Doc/glossary.rst:742 +#: ../Doc/glossary.rst:754 msgid "magic method" msgstr "método mágico" -#: ../Doc/glossary.rst:746 +#: ../Doc/glossary.rst:758 msgid "An informal synonym for :term:`special method`." msgstr "Una manera informal de llamar a un :term:`special method`." -#: ../Doc/glossary.rst:747 +#: ../Doc/glossary.rst:759 msgid "mapping" msgstr "mapeado" -#: ../Doc/glossary.rst:749 +#: ../Doc/glossary.rst:761 +#, fuzzy msgid "" "A container object that supports arbitrary key lookups and implements the " -"methods specified in the :class:`~collections.abc.Mapping` or :class:" -"`~collections.abc.MutableMapping` :ref:`abstract base classes `. Examples include :class:`dict`, :class:" "`collections.defaultdict`, :class:`collections.OrderedDict` and :class:" "`collections.Counter`." @@ -1806,11 +1823,11 @@ msgstr "" "`collections.defaultdict`, :class:`collections.OrderedDict` y :class:" "`collections.Counter`." -#: ../Doc/glossary.rst:755 +#: ../Doc/glossary.rst:767 msgid "meta path finder" msgstr "meta buscadores de ruta" -#: ../Doc/glossary.rst:757 +#: ../Doc/glossary.rst:769 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 `, pero son algo diferente." -#: ../Doc/glossary.rst:761 +#: ../Doc/glossary.rst:773 msgid "" "See :class:`importlib.abc.MetaPathFinder` for the methods that meta path " "finders implement." @@ -1828,11 +1845,11 @@ msgstr "" "Vea en :class:`importlib.abc.MetaPathFinder` los métodos que los meta " "buscadores de ruta implementan." -#: ../Doc/glossary.rst:763 +#: ../Doc/glossary.rst:775 msgid "metaclass" msgstr "metaclase" -#: ../Doc/glossary.rst:765 +#: ../Doc/glossary.rst:777 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 " @@ -1855,15 +1872,15 @@ msgstr "" "*loggear* acceso de atributos, agregar seguridad a hilos, rastrear la " "creación de objetos, implementar *singletons*, y muchas otras tareas." -#: ../Doc/glossary.rst:775 +#: ../Doc/glossary.rst:787 msgid "More information can be found in :ref:`metaclasses`." msgstr "Más información hallará en :ref:`metaclasses`." -#: ../Doc/glossary.rst:776 +#: ../Doc/glossary.rst:788 msgid "method" msgstr "método" -#: ../Doc/glossary.rst:778 +#: ../Doc/glossary.rst:790 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 " @@ -1875,11 +1892,11 @@ msgstr "" "instanciado como su primer :term:`argument` (el cual es usualmente " "denominado `self`). Vea :term:`function` y :term:`nested scope`." -#: ../Doc/glossary.rst:782 +#: ../Doc/glossary.rst:794 msgid "method resolution order" msgstr "orden de resolución de métodos" -#: ../Doc/glossary.rst:784 +#: ../Doc/glossary.rst:796 msgid "" "Method Resolution Order is the order in which base classes are searched for " "a member during lookup. See `The Python 2.3 Method Resolution Order `_ los " "detalles del algoritmo usado por el intérprete Python desde la versión 2.3." -#: ../Doc/glossary.rst:788 +#: ../Doc/glossary.rst:800 msgid "module" msgstr "módulo" -#: ../Doc/glossary.rst:790 +#: ../Doc/glossary.rst:802 msgid "" "An object that serves as an organizational unit of Python code. Modules " "have a namespace containing arbitrary Python objects. Modules are loaded " @@ -1905,15 +1922,15 @@ msgstr "" "módulos tienen espacios de nombres conteniendo objetos Python arbitrarios. " "Los módulos son cargados en Python por el proceso de :term:`importing`." -#: ../Doc/glossary.rst:794 +#: ../Doc/glossary.rst:806 msgid "See also :term:`package`." msgstr "Vea también :term:`package`." -#: ../Doc/glossary.rst:795 +#: ../Doc/glossary.rst:807 msgid "module spec" msgstr "especificador de módulo" -#: ../Doc/glossary.rst:797 +#: ../Doc/glossary.rst:809 msgid "" "A namespace containing the import-related information used to load a module. " "An instance of :class:`importlib.machinery.ModuleSpec`." @@ -1922,19 +1939,19 @@ msgstr "" "importación usada al leer un módulo. Una instancia de :class:`importlib." "machinery.ModuleSpec`." -#: ../Doc/glossary.rst:799 +#: ../Doc/glossary.rst:811 msgid "MRO" msgstr "MRO" -#: ../Doc/glossary.rst:801 +#: ../Doc/glossary.rst:813 msgid "See :term:`method resolution order`." msgstr "Vea :term:`method resolution order`." -#: ../Doc/glossary.rst:802 +#: ../Doc/glossary.rst:814 msgid "mutable" msgstr "mutable" -#: ../Doc/glossary.rst:804 +#: ../Doc/glossary.rst:816 msgid "" "Mutable objects can change their value but keep their :func:`id`. See also :" "term:`immutable`." @@ -1942,11 +1959,11 @@ msgstr "" "Los objetos mutables pueden cambiar su valor pero mantener su :func:`id`. " "Vea también :term:`immutable`." -#: ../Doc/glossary.rst:806 +#: ../Doc/glossary.rst:818 msgid "named tuple" msgstr "tupla nombrada" -#: ../Doc/glossary.rst:808 +#: ../Doc/glossary.rst:820 msgid "" "The term \"named tuple\" applies to any type or class that inherits from " "tuple and whose indexable elements are also accessible using named " @@ -1957,7 +1974,7 @@ msgstr "" "usando atributos nombrados. Este tipo o clase puede tener además otras " "capacidades." -#: ../Doc/glossary.rst:812 +#: ../Doc/glossary.rst:824 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." @@ -1967,7 +1984,7 @@ msgstr "" "retornados por :func:`time.localtime` y :func:`os.stat`. Otro ejemplo es :" "data:`sys.float_info`::" -#: ../Doc/glossary.rst:823 +#: ../Doc/glossary.rst:835 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 " @@ -1984,11 +2001,11 @@ msgstr "" "automáticamente brinda métodos adicionales que pueden no estar presentes en " "las tuplas nombradas personalizadas o incorporadas." -#: ../Doc/glossary.rst:830 +#: ../Doc/glossary.rst:842 msgid "namespace" msgstr "espacio de nombres" -#: ../Doc/glossary.rst:832 +#: ../Doc/glossary.rst:844 msgid "" "The place where a variable is stored. Namespaces are implemented as " "dictionaries. There are the local, global and built-in namespaces as well " @@ -2012,11 +2029,11 @@ msgstr "" "implementadas en los módulos :mod:`random` y :mod:`itertools`, " "respectivamente." -#: ../Doc/glossary.rst:842 +#: ../Doc/glossary.rst:854 msgid "namespace package" msgstr "paquete de espacios de nombres" -#: ../Doc/glossary.rst:844 +#: ../Doc/glossary.rst:856 msgid "" "A :pep:`420` :term:`package` which serves only as a container for " "subpackages. Namespace packages may have no physical representation, and " @@ -2028,15 +2045,15 @@ msgstr "" "específicamente se diferencian de los :term:`regular package` porque no " "tienen un archivo ``__init__.py``." -#: ../Doc/glossary.rst:849 +#: ../Doc/glossary.rst:861 msgid "See also :term:`module`." msgstr "Vea también :term:`module`." -#: ../Doc/glossary.rst:850 +#: ../Doc/glossary.rst:862 msgid "nested scope" msgstr "alcances anidados" -#: ../Doc/glossary.rst:852 +#: ../Doc/glossary.rst:864 msgid "" "The ability to refer to a variable in an enclosing definition. For " "instance, a function defined inside another function can refer to variables " @@ -2054,11 +2071,11 @@ msgstr "" "nombres global. Con :keyword:`nonlocal` se puede escribir en alcances " "exteriores." -#: ../Doc/glossary.rst:859 +#: ../Doc/glossary.rst:871 msgid "new-style class" msgstr "clase de nuevo estilo" -#: ../Doc/glossary.rst:861 +#: ../Doc/glossary.rst:873 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, " @@ -2071,11 +2088,11 @@ msgstr "" "`~object.__slots__`, descriptores, propiedades, :meth:`__getattribute__`, " "métodos de clase y métodos estáticos." -#: ../Doc/glossary.rst:865 +#: ../Doc/glossary.rst:877 msgid "object" msgstr "objeto" -#: ../Doc/glossary.rst:867 +#: ../Doc/glossary.rst:879 msgid "" "Any data with state (attributes or value) and defined behavior (methods). " "Also the ultimate base class of any :term:`new-style class`." @@ -2084,11 +2101,11 @@ msgstr "" "(métodos). También es la más básica clase base para cualquier :term:`new-" "style class`." -#: ../Doc/glossary.rst:870 +#: ../Doc/glossary.rst:882 msgid "package" msgstr "paquete" -#: ../Doc/glossary.rst:872 +#: ../Doc/glossary.rst:884 msgid "" "A Python :term:`module` which can contain submodules or recursively, " "subpackages. Technically, a package is a Python module with an ``__path__`` " @@ -2098,15 +2115,15 @@ msgstr "" "subpaquetes. Técnicamente, un paquete es un módulo Python con un atributo " "``__path__``." -#: ../Doc/glossary.rst:876 +#: ../Doc/glossary.rst:888 msgid "See also :term:`regular package` and :term:`namespace package`." msgstr "Vea también :term:`regular package` y :term:`namespace package`." -#: ../Doc/glossary.rst:877 +#: ../Doc/glossary.rst:889 msgid "parameter" msgstr "parámetro" -#: ../Doc/glossary.rst:879 +#: ../Doc/glossary.rst:891 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 " @@ -2116,7 +2133,7 @@ msgstr "" "que especifica un :term:`argument` (o en algunos casos, varios argumentos) " "que la función puede aceptar. Existen cinco tipos de argumentos:" -#: ../Doc/glossary.rst:883 +#: ../Doc/glossary.rst:895 msgid "" ":dfn:`positional-or-keyword`: specifies an argument that can be passed " "either :term:`positionally ` or as a :term:`keyword argument " @@ -2128,7 +2145,7 @@ msgstr "" "`. Este es el tipo por defecto de parámetro, como *foo* y *bar* " "en el siguiente ejemplo::" -#: ../Doc/glossary.rst:892 +#: ../Doc/glossary.rst:904 msgid "" ":dfn:`positional-only`: specifies an argument that can be supplied only by " "position. Positional-only parameters can be defined by including a ``/`` " @@ -2140,7 +2157,7 @@ msgstr "" "incluyendo un carácter ``/`` en la lista de parámetros de la función después " "de ellos, como *posonly1* y *posonly2* en el ejemplo que sigue::" -#: ../Doc/glossary.rst:901 +#: ../Doc/glossary.rst:913 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-" @@ -2154,7 +2171,7 @@ msgstr "" "en la lista de parámetros en la definición de la función, como *kw_only1* y " "*kw_only2* en el ejemplo siguiente::" -#: ../Doc/glossary.rst:909 +#: ../Doc/glossary.rst:921 msgid "" ":dfn:`var-positional`: specifies that an arbitrary sequence of positional " "arguments can be provided (in addition to any positional arguments already " @@ -2168,7 +2185,7 @@ msgstr "" "ser definido anteponiendo al nombre del parámetro ``*``, como a *args* en el " "siguiente ejemplo::" -#: ../Doc/glossary.rst:917 +#: ../Doc/glossary.rst:929 msgid "" ":dfn:`var-keyword`: specifies that arbitrarily many keyword arguments can be " "provided (in addition to any keyword arguments already accepted by other " @@ -2181,7 +2198,7 @@ msgstr "" "anteponiendo al nombre del parámetro con ``**``, como *kwargs* en el ejemplo " "precedente." -#: ../Doc/glossary.rst:923 +#: ../Doc/glossary.rst:935 msgid "" "Parameters can specify both optional and required arguments, as well as " "default values for some optional arguments." @@ -2189,7 +2206,7 @@ msgstr "" "Los parámetros puede especificar tanto argumentos opcionales como " "requeridos, así como valores por defecto para algunos argumentos opcionales." -#: ../Doc/glossary.rst:926 +#: ../Doc/glossary.rst:938 msgid "" "See also the :term:`argument` glossary entry, the FAQ question on :ref:`the " "difference between arguments and parameters `, " @@ -2201,11 +2218,11 @@ msgstr "" "la clase :class:`inspect.Parameter`, la sección :ref:`function` , y :pep:" "`362`." -#: ../Doc/glossary.rst:930 +#: ../Doc/glossary.rst:942 msgid "path entry" msgstr "entrada de ruta" -#: ../Doc/glossary.rst:932 +#: ../Doc/glossary.rst:944 msgid "" "A single location on the :term:`import path` which the :term:`path based " "finder` consults to find modules for importing." @@ -2213,11 +2230,11 @@ msgstr "" "Una ubicación única en el :term:`import path` que el :term:`path based " "finder` consulta para encontrar los módulos a importar." -#: ../Doc/glossary.rst:934 +#: ../Doc/glossary.rst:946 msgid "path entry finder" msgstr "buscador de entradas de ruta" -#: ../Doc/glossary.rst:936 +#: ../Doc/glossary.rst:948 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:" @@ -2227,7 +2244,7 @@ msgstr "" "es, un :term:`path entry hook`) que sabe cómo localizar módulos dada una :" "term:`path entry`." -#: ../Doc/glossary.rst:940 +#: ../Doc/glossary.rst:952 msgid "" "See :class:`importlib.abc.PathEntryFinder` for the methods that path entry " "finders implement." @@ -2235,11 +2252,11 @@ msgstr "" "Vea en :class:`importlib.abc.PathEntryFinder` los métodos que los buscadores " "de entradas de ruta implementan." -#: ../Doc/glossary.rst:942 +#: ../Doc/glossary.rst:954 msgid "path entry hook" msgstr "gancho a entrada de ruta" -#: ../Doc/glossary.rst:944 +#: ../Doc/glossary.rst:956 msgid "" "A callable on the :data:`sys.path_hook` list which returns a :term:`path " "entry finder` if it knows how to find modules on a specific :term:`path " @@ -2249,11 +2266,11 @@ msgstr "" "entry finder` si éste sabe cómo encontrar módulos en un :term:`path entry` " "específico." -#: ../Doc/glossary.rst:947 +#: ../Doc/glossary.rst:959 msgid "path based finder" msgstr "buscador basado en ruta" -#: ../Doc/glossary.rst:949 +#: ../Doc/glossary.rst:961 msgid "" "One of the default :term:`meta path finders ` which " "searches an :term:`import path` for modules." @@ -2261,11 +2278,11 @@ msgstr "" "Uno de los :term:`meta buscadores de ruta ` por defecto " "que busca un :term:`import path` para los módulos." -#: ../Doc/glossary.rst:951 +#: ../Doc/glossary.rst:963 msgid "path-like object" msgstr "objeto tipo ruta" -#: ../Doc/glossary.rst:953 +#: ../Doc/glossary.rst:965 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 " @@ -2285,11 +2302,11 @@ msgstr "" "emplearse para garantizar que retorne respectivamente :class:`str` o :class:" "`bytes`. Introducido por :pep:`519`." -#: ../Doc/glossary.rst:961 +#: ../Doc/glossary.rst:973 msgid "PEP" msgstr "PEP" -#: ../Doc/glossary.rst:963 +#: ../Doc/glossary.rst:975 msgid "" "Python Enhancement Proposal. A PEP is a design document providing " "information to the Python community, or describing a new feature for Python " @@ -2302,7 +2319,7 @@ msgstr "" "deberían dar una especificación técnica concisa y una fundamentación para " "las capacidades propuestas." -#: ../Doc/glossary.rst:969 +#: ../Doc/glossary.rst:981 msgid "" "PEPs are intended to be the primary mechanisms for proposing major new " "features, for collecting community input on an issue, and for documenting " @@ -2316,15 +2333,15 @@ msgstr "" "El autor del PEP es el responsable de lograr consenso con la comunidad y " "documentar las opiniones disidentes." -#: ../Doc/glossary.rst:975 +#: ../Doc/glossary.rst:987 msgid "See :pep:`1`." msgstr "Vea :pep:`1`." -#: ../Doc/glossary.rst:976 +#: ../Doc/glossary.rst:988 msgid "portion" msgstr "porción" -#: ../Doc/glossary.rst:978 +#: ../Doc/glossary.rst:990 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`." @@ -2333,15 +2350,15 @@ msgstr "" "archivo comprimido *zip*) que contribuye a un espacio de nombres de paquete, " "como está definido en :pep:`420`." -#: ../Doc/glossary.rst:980 +#: ../Doc/glossary.rst:992 msgid "positional argument" msgstr "argumento posicional" -#: ../Doc/glossary.rst:983 +#: ../Doc/glossary.rst:995 msgid "provisional API" msgstr "API provisional" -#: ../Doc/glossary.rst:985 +#: ../Doc/glossary.rst:997 msgid "" "A provisional API is one which has been deliberately excluded from the " "standard library's backwards compatibility guarantees. While major changes " @@ -2360,7 +2377,7 @@ msgstr "" "ocurrirán si fallas fundamentales y serias son descubiertas que no fueron " "vistas antes de la inclusión de la API." -#: ../Doc/glossary.rst:994 +#: ../Doc/glossary.rst:1006 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 " @@ -2371,7 +2388,7 @@ msgstr "" "encontrar una solución compatible hacia atrás para los problemas " "identificados." -#: ../Doc/glossary.rst:998 +#: ../Doc/glossary.rst:1010 msgid "" "This process allows the standard library to continue to evolve over time, " "without locking in problematic design errors for extended periods of time. " @@ -2381,19 +2398,19 @@ msgstr "" "el tiempo, sin bloquearse por errores de diseño problemáticos por períodos " "extensos de tiempo. Vea :pep:`411` para más detalles." -#: ../Doc/glossary.rst:1001 +#: ../Doc/glossary.rst:1013 msgid "provisional package" msgstr "paquete provisorio" -#: ../Doc/glossary.rst:1003 +#: ../Doc/glossary.rst:1015 msgid "See :term:`provisional API`." msgstr "Vea :term:`provisional API`." -#: ../Doc/glossary.rst:1004 +#: ../Doc/glossary.rst:1016 msgid "Python 3000" msgstr "Python 3000" -#: ../Doc/glossary.rst:1006 +#: ../Doc/glossary.rst:1018 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 " @@ -2403,11 +2420,11 @@ msgstr "" "cuando llegar a la versión 3 era algo distante en el futuro.) También se lo " "abrevió como *Py3k*." -#: ../Doc/glossary.rst:1009 +#: ../Doc/glossary.rst:1021 msgid "Pythonic" msgstr "Pythónico" -#: ../Doc/glossary.rst:1011 +#: ../Doc/glossary.rst:1023 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 " @@ -2424,15 +2441,15 @@ msgstr "" "construcción, así que los que no están familiarizados con Python podrían " "usar contadores numéricos::" -#: ../Doc/glossary.rst:1021 +#: ../Doc/glossary.rst:1033 msgid "As opposed to the cleaner, Pythonic method::" msgstr "En contraste, un método Pythónico más limpio::" -#: ../Doc/glossary.rst:1025 +#: ../Doc/glossary.rst:1037 msgid "qualified name" msgstr "nombre calificado" -#: ../Doc/glossary.rst:1027 +#: ../Doc/glossary.rst:1039 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 " @@ -2444,7 +2461,7 @@ msgstr "" "`3155`. Para las funciones o clases de más alto nivel, el nombre calificado " "es el igual al nombre del objeto::" -#: ../Doc/glossary.rst:1044 +#: ../Doc/glossary.rst:1056 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." @@ -2454,18 +2471,18 @@ msgstr "" "calificado* significa la ruta con puntos completo al módulo, incluyendo " "cualquier paquete padre, por ejemplo, `email.mime.text``::" -#: ../Doc/glossary.rst:1051 +#: ../Doc/glossary.rst:1063 msgid "reference count" msgstr "contador de referencias" -#: ../Doc/glossary.rst:1053 +#: ../Doc/glossary.rst:1065 +#, fuzzy msgid "" "The number of references to an object. When the reference count of an " "object drops to zero, it is deallocated. Reference counting is generally " "not visible to Python code, but it is a key element of the :term:`CPython` " -"implementation. The :mod:`sys` module defines a :func:`~sys.getrefcount` " -"function that programmers can call to return the reference count for a " -"particular object." +"implementation. Programmers can call the :func:`sys.getrefcount` function " +"to return the reference count for a particular object." msgstr "" "El número de referencias a un objeto. Cuando el contador de referencias de " "un objeto cae hasta cero, éste es desalojable. En conteo de referencias no " @@ -2474,11 +2491,11 @@ msgstr "" "`~sys.getrefcount` que los programadores pueden emplear para retornar el " "conteo de referencias de un objeto en particular." -#: ../Doc/glossary.rst:1059 +#: ../Doc/glossary.rst:1071 msgid "regular package" msgstr "paquete regular" -#: ../Doc/glossary.rst:1061 +#: ../Doc/glossary.rst:1073 msgid "" "A traditional :term:`package`, such as a directory containing an ``__init__." "py`` file." @@ -2486,15 +2503,15 @@ msgstr "" "Un :term:`package` tradicional, como aquellos con un directorio conteniendo " "el archivo ``__init__.py``." -#: ../Doc/glossary.rst:1064 +#: ../Doc/glossary.rst:1076 msgid "See also :term:`namespace package`." msgstr "Vea también :term:`namespace package`." -#: ../Doc/glossary.rst:1065 +#: ../Doc/glossary.rst:1077 msgid "__slots__" msgstr "__slots__" -#: ../Doc/glossary.rst:1067 +#: ../Doc/glossary.rst:1079 msgid "" "A declaration inside a class that saves memory by pre-declaring space for " "instance attributes and eliminating instance dictionaries. Though popular, " @@ -2508,11 +2525,11 @@ msgstr "" "correctamente y es mejor reservarla para los casos raros en los que existen " "grandes cantidades de instancias en aplicaciones con uso crítico de memoria." -#: ../Doc/glossary.rst:1072 +#: ../Doc/glossary.rst:1084 msgid "sequence" msgstr "secuencia" -#: ../Doc/glossary.rst:1074 +#: ../Doc/glossary.rst:1086 msgid "" "An :term:`iterable` which supports efficient element access using integer " "indices via the :meth:`__getitem__` special method and defines a :meth:" @@ -2531,7 +2548,7 @@ msgstr "" "una secuencia porque las búsquedas son por claves arbitraria :term:" "`immutable` y no por enteros." -#: ../Doc/glossary.rst:1083 +#: ../Doc/glossary.rst:1095 msgid "" "The :class:`collections.abc.Sequence` abstract base class defines a much " "richer interface that goes beyond just :meth:`__getitem__` and :meth:" @@ -2545,11 +2562,11 @@ msgstr "" "meth:`__reversed__`. Los tipos que implementan esta interfaz expandida " "pueden ser registrados explícitamente usando :func:`~abc.register`." -#: ../Doc/glossary.rst:1090 +#: ../Doc/glossary.rst:1102 msgid "set comprehension" msgstr "comprensión de conjuntos" -#: ../Doc/glossary.rst:1092 +#: ../Doc/glossary.rst:1104 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 " @@ -2561,11 +2578,11 @@ msgstr "" "'abracadabra' if c not in 'abc'}`` genera el conjunto de cadenas ``{'r', 'd'}" "``. Ver :ref:`comprehensions`." -#: ../Doc/glossary.rst:1096 +#: ../Doc/glossary.rst:1108 msgid "single dispatch" msgstr "despacho único" -#: ../Doc/glossary.rst:1098 +#: ../Doc/glossary.rst:1110 msgid "" "A form of :term:`generic function` dispatch where the implementation is " "chosen based on the type of a single argument." @@ -2573,11 +2590,11 @@ msgstr "" "Una forma de despacho de una :term:`generic function` donde la " "implementación es elegida a partir del tipo de un sólo argumento." -#: ../Doc/glossary.rst:1100 +#: ../Doc/glossary.rst:1112 msgid "slice" msgstr "rebanada" -#: ../Doc/glossary.rst:1102 +#: ../Doc/glossary.rst:1114 msgid "" "An object usually containing a portion of a :term:`sequence`. A slice is " "created using the subscript notation, ``[]`` with colons between numbers " @@ -2589,11 +2606,11 @@ msgstr "" "números cuando se ponen varios, como en ``nombre_variable[1:3:5]``. La " "notación con corchete (suscrito) usa internamente objetos :class:`slice`." -#: ../Doc/glossary.rst:1106 +#: ../Doc/glossary.rst:1118 msgid "special method" msgstr "método especial" -#: ../Doc/glossary.rst:1110 +#: ../Doc/glossary.rst:1122 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 " @@ -2605,11 +2622,11 @@ msgstr "" "comienzan y terminan con doble barra baja. Los métodos especiales están " "documentados en :ref:`specialnames`." -#: ../Doc/glossary.rst:1114 +#: ../Doc/glossary.rst:1126 msgid "statement" msgstr "sentencia" -#: ../Doc/glossary.rst:1116 +#: ../Doc/glossary.rst:1128 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 :" @@ -2620,11 +2637,11 @@ msgstr "" "sintaxis usando una palabra clave, como :keyword:`if`, :keyword:`while` o :" "keyword:`for`." -#: ../Doc/glossary.rst:1119 +#: ../Doc/glossary.rst:1131 msgid "strong reference" msgstr "referencia fuerte" -#: ../Doc/glossary.rst:1121 +#: ../Doc/glossary.rst:1133 msgid "" "In Python's C API, a strong reference is a reference to an object which " "increments the object's reference count when it is created and decrements " @@ -2634,7 +2651,7 @@ msgstr "" "que incrementa el recuento de referencias del objeto cuando se crea y " "disminuye el recuento de referencias del objeto cuando se elimina." -#: ../Doc/glossary.rst:1125 +#: ../Doc/glossary.rst:1137 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 " @@ -2646,23 +2663,38 @@ msgstr "" "`Py_DECREF` en la referencia fuerte antes de salir del alcance de la " "referencia fuerte, para evitar filtrar una referencia." -#: ../Doc/glossary.rst:1130 +#: ../Doc/glossary.rst:1142 msgid "See also :term:`borrowed reference`." msgstr "Consulte también :term:`borrowed reference`." -#: ../Doc/glossary.rst:1131 +#: ../Doc/glossary.rst:1143 msgid "text encoding" msgstr "codificación de texto" -#: ../Doc/glossary.rst:1133 -msgid "A codec which encodes Unicode strings to bytes." -msgstr "Un códec que codifica las cadenas Unicode a bytes." +#: ../Doc/glossary.rst:1145 +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 " +"serialized as a sequence of bytes." +msgstr "" + +#: ../Doc/glossary.rst:1149 +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\"." +msgstr "" + +#: ../Doc/glossary.rst:1152 +msgid "" +"There are a variety of different text serialization :ref:`codecs `, which are collectively referred to as \"text encodings\"." +msgstr "" -#: ../Doc/glossary.rst:1134 +#: ../Doc/glossary.rst:1155 msgid "text file" msgstr "archivo de texto" -#: ../Doc/glossary.rst:1136 +#: ../Doc/glossary.rst:1157 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:" @@ -2676,7 +2708,7 @@ msgstr "" "archivos de texto que son abiertos en modo texto (``'r'`` o ``'w'``), :data:" "`sys.stdin`, :data:`sys.stdout`, y las instancias de :class:`io.StringIO`." -#: ../Doc/glossary.rst:1143 +#: ../Doc/glossary.rst:1164 msgid "" "See also :term:`binary file` for a file object able to read and write :term:" "`bytes-like objects `." @@ -2684,11 +2716,11 @@ msgstr "" "Vea también :term:`binary file` por objeto de archivos capaces de leer y " "escribir :term:`objeto tipo binario `." -#: ../Doc/glossary.rst:1145 +#: ../Doc/glossary.rst:1166 msgid "triple-quoted string" msgstr "cadena con triple comilla" -#: ../Doc/glossary.rst:1147 +#: ../Doc/glossary.rst:1168 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 " @@ -2705,11 +2737,11 @@ msgstr "" "las cadenas y pueden abarcar múltiples líneas sin el uso de caracteres de " "continuación, haciéndolas particularmente útiles para escribir docstrings." -#: ../Doc/glossary.rst:1154 +#: ../Doc/glossary.rst:1175 msgid "type" msgstr "tipo" -#: ../Doc/glossary.rst:1156 +#: ../Doc/glossary.rst:1177 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:`~instance." @@ -2719,16 +2751,16 @@ msgstr "" "tiene un tipo. El tipo de un objeto puede ser accedido por su atributo :" "attr:`~instance.__class__` o puede ser conseguido usando ``type(obj)``." -#: ../Doc/glossary.rst:1160 +#: ../Doc/glossary.rst:1181 msgid "type alias" msgstr "alias de tipos" -#: ../Doc/glossary.rst:1162 +#: ../Doc/glossary.rst:1183 msgid "A synonym for a type, created by assigning the type to an identifier." msgstr "" "Un sinónimo para un tipo, creado al asignar un tipo a un identificador." -#: ../Doc/glossary.rst:1164 +#: ../Doc/glossary.rst:1185 msgid "" "Type aliases are useful for simplifying :term:`type hints `. For " "example::" @@ -2736,19 +2768,19 @@ msgstr "" "Los alias de tipos son útiles para simplificar los :term:`indicadores de " "tipo `. Por ejemplo::" -#: ../Doc/glossary.rst:1171 +#: ../Doc/glossary.rst:1192 msgid "could be made more readable like this::" msgstr "podría ser más legible así::" -#: ../Doc/glossary.rst:1178 ../Doc/glossary.rst:1192 +#: ../Doc/glossary.rst:1199 ../Doc/glossary.rst:1213 msgid "See :mod:`typing` and :pep:`484`, which describe this functionality." msgstr "Vea :mod:`typing` y :pep:`484`, que describen esta funcionalidad." -#: ../Doc/glossary.rst:1179 +#: ../Doc/glossary.rst:1200 msgid "type hint" msgstr "indicador de tipo" -#: ../Doc/glossary.rst:1181 +#: ../Doc/glossary.rst:1202 msgid "" "An :term:`annotation` that specifies the expected type for a variable, a " "class attribute, or a function parameter or return value." @@ -2756,7 +2788,7 @@ msgstr "" "Una :term:`annotation` que especifica el tipo esperado para una variable, " "un atributo de clase, un parámetro para una función o un valor de retorno." -#: ../Doc/glossary.rst:1184 +#: ../Doc/glossary.rst:1205 msgid "" "Type hints are optional and are not enforced by Python but they are useful " "to static type analysis tools, and aid IDEs with code completion and " @@ -2766,7 +2798,7 @@ msgstr "" "son útiles para las herramientas de análisis de tipos estático, y ayuda a " "las IDE en el completado del código y la refactorización." -#: ../Doc/glossary.rst:1188 +#: ../Doc/glossary.rst:1209 msgid "" "Type hints of global variables, class attributes, and functions, but not " "local variables, can be accessed using :func:`typing.get_type_hints`." @@ -2775,11 +2807,11 @@ msgstr "" "funciones, no de variables locales, pueden ser accedidos usando :func:" "`typing.get_type_hints`." -#: ../Doc/glossary.rst:1193 +#: ../Doc/glossary.rst:1214 msgid "universal newlines" msgstr "saltos de líneas universales" -#: ../Doc/glossary.rst:1195 +#: ../Doc/glossary.rst:1216 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 " @@ -2793,22 +2825,22 @@ msgstr "" "convención de Macintosh ``'\\r'``. Vea :pep:`278` y :pep:`3116`, además de :" "func:`bytes.splitlines` para usos adicionales." -#: ../Doc/glossary.rst:1200 +#: ../Doc/glossary.rst:1221 msgid "variable annotation" msgstr "anotación de variable" -#: ../Doc/glossary.rst:1202 +#: ../Doc/glossary.rst:1223 msgid "An :term:`annotation` of a variable or a class attribute." msgstr "Una :term:`annotation` de una variable o un atributo de clase." -#: ../Doc/glossary.rst:1204 +#: ../Doc/glossary.rst:1225 msgid "" "When annotating a variable or a class attribute, assignment is optional::" msgstr "" "Cuando se anota una variable o un atributo de clase, la asignación es " "opcional::" -#: ../Doc/glossary.rst:1209 +#: ../Doc/glossary.rst:1230 msgid "" "Variable annotations are usually used for :term:`type hints `: " "for example this variable is expected to take :class:`int` values::" @@ -2817,13 +2849,13 @@ msgstr "" "hints `: por ejemplo, se espera que esta variable tenga valores " "de clase :class:`int`::" -#: ../Doc/glossary.rst:1215 +#: ../Doc/glossary.rst:1236 msgid "Variable annotation syntax is explained in section :ref:`annassign`." msgstr "" "La sintaxis de la anotación de variables está explicada en la sección :ref:" "`annassign`." -#: ../Doc/glossary.rst:1217 +#: ../Doc/glossary.rst:1238 msgid "" "See :term:`function annotation`, :pep:`484` and :pep:`526`, which describe " "this functionality. Also see :ref:`annotations-howto` for best practices on " @@ -2833,11 +2865,11 @@ msgstr "" "esta funcionalidad. Consulte también :ref:`annotations-howto` para conocer " "las mejores prácticas sobre cómo trabajar con anotaciones." -#: ../Doc/glossary.rst:1221 +#: ../Doc/glossary.rst:1242 msgid "virtual environment" msgstr "entorno virtual" -#: ../Doc/glossary.rst:1223 +#: ../Doc/glossary.rst:1244 msgid "" "A cooperatively isolated runtime environment that allows Python users and " "applications to install and upgrade Python distribution packages without " @@ -2849,15 +2881,15 @@ msgstr "" "distribución de Python sin interferir con el comportamiento de otras " "aplicaciones de Python en el mismo sistema." -#: ../Doc/glossary.rst:1228 +#: ../Doc/glossary.rst:1249 msgid "See also :mod:`venv`." msgstr "Vea también :mod:`venv`." -#: ../Doc/glossary.rst:1229 +#: ../Doc/glossary.rst:1250 msgid "virtual machine" msgstr "máquina virtual" -#: ../Doc/glossary.rst:1231 +#: ../Doc/glossary.rst:1252 msgid "" "A computer defined entirely in software. Python's virtual machine executes " "the :term:`bytecode` emitted by the bytecode compiler." @@ -2865,11 +2897,11 @@ msgstr "" "Una computadora definida enteramente por software. La máquina virtual de " "Python ejecuta el :term:`bytecode` generado por el compilador de *bytecode*." -#: ../Doc/glossary.rst:1233 +#: ../Doc/glossary.rst:1254 msgid "Zen of Python" msgstr "Zen de Python" -#: ../Doc/glossary.rst:1235 +#: ../Doc/glossary.rst:1256 msgid "" "Listing of Python design principles and philosophies that are helpful in " "understanding and using the language. The listing can be found by typing " @@ -2878,3 +2910,44 @@ msgstr "" "Un listado de los principios de diseño y la filosofía de Python que son " "útiles para entender y usar el lenguaje. El listado puede encontrarse " "ingresando \"``import this``\" en la consola interactiva." + +#~ msgid "coercion" +#~ msgstr "coerción" + +#~ msgid "" +#~ "The implicit conversion of an instance of one type to another during an " +#~ "operation which involves two arguments of the same type. For example, " +#~ "``int(3.15)`` converts the floating point number to the integer ``3``, " +#~ "but in ``3+4.5``, each argument is of a different type (one int, one " +#~ "float), and both must be converted to the same type before they can be " +#~ "added or it will raise a :exc:`TypeError`. Without coercion, all " +#~ "arguments of even compatible types would have to be normalized to the " +#~ "same value by the programmer, e.g., ``float(3)+4.5`` rather than just " +#~ "``3+4.5``." +#~ msgstr "" +#~ "La conversión implícita de una instancia de un tipo en otra durante una " +#~ "operación que involucra dos argumentos del mismo tipo. Por ejemplo, " +#~ "``int(3.15)`` convierte el número de punto flotante al entero ``3``, pero " +#~ "en ``3 + 4.5``, cada argumento es de un tipo diferente (uno entero, otro " +#~ "flotante), y ambos deben ser convertidos al mismo tipo antes de que " +#~ "puedan ser sumados o emitiría un :exc:`TypeError`. Sin coerción, todos " +#~ "los argumentos, incluso de tipos compatibles, deberían ser normalizados " +#~ "al mismo tipo por el programador, por ejemplo ``float(3)+4.5`` en lugar " +#~ "de ``3+4.5``." + +#~ msgid "" +#~ "See :pep:`483` for more details, and :mod:`typing` or :ref:`generic alias " +#~ "type ` for its uses." +#~ msgstr "" +#~ "Ver :pep:`483` para más detalles, y :mod:`typing` o :ref:`tipo alias " +#~ "genérico ` para sus usos." + +#~ msgid "" +#~ "Python uses the :term:`filesystem encoding and error handler` to convert " +#~ "between Unicode filenames and bytes filenames." +#~ msgstr "" +#~ "Python usa el :term:`filesystem encoding and error handler` para " +#~ "convertir entre nombres de archivo Unicode y nombres de archivo en bytes." + +#~ msgid "A codec which encodes Unicode strings to bytes." +#~ msgstr "Un códec que codifica las cadenas Unicode a bytes." diff --git a/howto/annotations.po b/howto/annotations.po index b03acd653e..54b7de4856 100644 --- a/howto/annotations.po +++ b/howto/annotations.po @@ -8,17 +8,16 @@ msgid "" msgstr "" "Project-Id-Version: Python en Español 3.10\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-10-21 04:10-0500\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Last-Translator: José Luis Salgado Banda \n" -"Language-Team: \n" "Language: es\n" -"X-Generator: Poedit 2.4.3\n" +"Language-Team: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/howto/annotations.rst:5 msgid "Annotations Best Practices" @@ -316,8 +315,9 @@ msgstr "" "específicamente. Por ejemplo:" #: ../Doc/howto/annotations.rst:159 +#, fuzzy msgid "" -":pep:`604` union types using `|`, before support for this was added to " +":pep:`604` union types using ``|``, before support for this was added to " "Python 3.10." msgstr "" ":pep:`604` tipos de unión usando `|`, antes de que se agregara soporte para " diff --git a/howto/clinic.po b/howto/clinic.po index dba9de1459..d50b55c9de 100644 --- a/howto/clinic.po +++ b/howto/clinic.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-11-26 15:23+0100\n" "Last-Translator: Cristián Maureira-Fredes \n" "Language: es\n" @@ -19,8 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/howto/clinic.rst:5 msgid "Argument Clinic How-To" @@ -806,10 +805,11 @@ msgstr "" "existente con la macro, *no* agregue una coma al final." #: ../Doc/howto/clinic.rst:542 +#, fuzzy msgid "" "Compile, then run the relevant portions of the regression-test suite. This " "change should not introduce any new compile-time warnings or errors, and " -"there should be no externally-visible change to Python's behavior." +"there should be no externally visible change to Python's behavior." msgstr "" "Compile y luego ejecute las partes relevantes del conjunto de pruebas de " "regresión. Este cambio no debería introducir nuevas advertencias o errores " @@ -878,27 +878,19 @@ msgstr "" #: ../Doc/howto/clinic.rst:570 msgid "" -"In case you're curious, this is implemented in ``from_builtin()`` in ``Lib/" -"inspect.py``." -msgstr "" -"En caso de que tenga curiosidad, esto se implementa en ``from_builtin()`` en " -"``Lib/inspect.py``." - -#: ../Doc/howto/clinic.rst:573 -msgid "" "(In the future, this may need to get even more elaborate, to allow full " "expressions like ``CONSTANT - 1``.)" msgstr "" "(En el futuro, esto puede necesitar ser aún más elaborado, para permitir " "expresiones completas como ``CONSTANT - 1``.)" -#: ../Doc/howto/clinic.rst:578 +#: ../Doc/howto/clinic.rst:575 msgid "Renaming the C functions and variables generated by Argument Clinic" msgstr "" "Cambiar el nombre de las funciones y variables C generadas por Argument " "Clinic" -#: ../Doc/howto/clinic.rst:580 +#: ../Doc/howto/clinic.rst:577 msgid "" "Argument Clinic automatically names the functions it generates for you. " "Occasionally this may cause a problem, if the generated name collides with " @@ -918,7 +910,7 @@ msgstr "" "función para la función base (generada), luego agregará ``\"_impl\"`` al " "final y lo usará para el nombre de la función impl." -#: ../Doc/howto/clinic.rst:588 +#: ../Doc/howto/clinic.rst:585 msgid "" "For example, if we wanted to rename the C function names generated for " "``pickle.Pickler.dump``, it'd look like this::" @@ -926,7 +918,7 @@ msgstr "" "Por ejemplo, si quisiéramos cambiar el nombre de las funciones de C " "generadas para ``pickle.Pickler.dump``, se vería así:" -#: ../Doc/howto/clinic.rst:596 +#: ../Doc/howto/clinic.rst:593 msgid "" "The base function would now be named ``pickler_dumper()``, and the impl " "function would now be named ``pickler_dumper_impl()``." @@ -934,7 +926,7 @@ msgstr "" "La función base ahora se llamaría ``pickler_dumper()``, y la función " "implícita ahora se llamaría ``pickler_dumper_impl()``." -#: ../Doc/howto/clinic.rst:600 +#: ../Doc/howto/clinic.rst:597 msgid "" "Similarly, you may have a problem where you want to give a parameter a " "specific Python name, but that name may be inconvenient in C. Argument " @@ -946,7 +938,7 @@ msgstr "" "inconveniente en C. Argument Clinic le permite asignar nombres diferentes a " "un parámetro en Python y en C, usando el mismo ``\"as\"`` como sintaxis::" -#: ../Doc/howto/clinic.rst:614 +#: ../Doc/howto/clinic.rst:611 msgid "" "Here, the name used in Python (in the signature and the ``keywords`` array) " "would be ``file``, but the C variable would be named ``file_obj``." @@ -954,16 +946,16 @@ msgstr "" "Aquí, el nombre usado en Python (en la firma y el arreglo de ``keywords``) " "sería ``file``, pero la variable C se llamaría ``file_obj``." -#: ../Doc/howto/clinic.rst:617 +#: ../Doc/howto/clinic.rst:614 msgid "You can use this to rename the ``self`` parameter too!" msgstr "" "¡También puede usar esto para cambiar el nombre del parámetro ``self``!" -#: ../Doc/howto/clinic.rst:621 +#: ../Doc/howto/clinic.rst:618 msgid "Converting functions using PyArg_UnpackTuple" msgstr "Convirtiendo funciones usando PyArg_UnpackTuple" -#: ../Doc/howto/clinic.rst:623 +#: ../Doc/howto/clinic.rst:620 msgid "" "To convert a function parsing its arguments with :c:func:" "`PyArg_UnpackTuple`, simply write out all the arguments, specifying each as " @@ -978,7 +970,7 @@ msgstr "" "marcados como solo posicionales (agregue un ``/`` en una línea después del " "último argumento)." -#: ../Doc/howto/clinic.rst:629 +#: ../Doc/howto/clinic.rst:626 msgid "" "Currently the generated code will use :c:func:`PyArg_ParseTuple`, but this " "will change soon." @@ -986,11 +978,11 @@ msgstr "" "Actualmente, el código generado usará :c:func:`PyArg_ParseTuple`, pero esto " "cambiará pronto." -#: ../Doc/howto/clinic.rst:633 +#: ../Doc/howto/clinic.rst:630 msgid "Optional Groups" msgstr "Grupos opcionales" -#: ../Doc/howto/clinic.rst:635 +#: ../Doc/howto/clinic.rst:632 msgid "" "Some legacy functions have a tricky approach to parsing their arguments: " "they count the number of positional arguments, then use a ``switch`` " @@ -1008,7 +1000,7 @@ msgstr "" "clave). Este enfoque se usó para simular argumentos opcionales antes de que " "se creara :c:func:`PyArg_ParseTupleAndKeywords`." -#: ../Doc/howto/clinic.rst:642 +#: ../Doc/howto/clinic.rst:639 msgid "" "While functions using this approach can often be converted to use :c:func:" "`PyArg_ParseTupleAndKeywords`, optional arguments, and default values, it's " @@ -1032,7 +1024,7 @@ msgstr "" "argumentos se denominan ``x`` e ``y``; si llama a la función pasando ``x``, " "también debe pasar ``y``, y si no pasa ``x`` tampoco puede pasar ``y``.)" -#: ../Doc/howto/clinic.rst:654 +#: ../Doc/howto/clinic.rst:651 msgid "" "In any case, the goal of Argument Clinic is to support argument parsing for " "all existing CPython builtins without changing their semantics. Therefore " @@ -1049,7 +1041,7 @@ msgstr "" "estar a la izquierda o la derecha de los argumentos requeridos. *Solo* se " "pueden usar con parámetros de solo posición." -#: ../Doc/howto/clinic.rst:662 +#: ../Doc/howto/clinic.rst:659 msgid "" "Optional groups are *only* intended for use when converting functions that " "make multiple calls to :c:func:`PyArg_ParseTuple`! Functions that use *any* " @@ -1067,7 +1059,7 @@ msgstr "" "precisas en Python, porque Python simplemente no comprende el concepto. " "Evite el uso de grupos opcionales siempre que sea posible." -#: ../Doc/howto/clinic.rst:671 +#: ../Doc/howto/clinic.rst:668 msgid "" "To specify an optional group, add a ``[`` on a line by itself before the " "parameters you wish to group together, and a ``]`` on a line by itself after " @@ -1081,11 +1073,11 @@ msgstr "" "opcionales para hacer que los primeros dos parámetros y el último parámetro " "sean opcionales:" -#: ../Doc/howto/clinic.rst:700 +#: ../Doc/howto/clinic.rst:697 msgid "Notes:" msgstr "Notas:" -#: ../Doc/howto/clinic.rst:702 +#: ../Doc/howto/clinic.rst:699 msgid "" "For every optional group, one additional parameter will be passed into the " "impl function representing the group. The parameter will be an int named " @@ -1108,7 +1100,7 @@ msgstr "" "usó este grupo. (Por usado o no usado, me refiero a si los parámetros " "recibieron argumentos en esta invocación)." -#: ../Doc/howto/clinic.rst:713 +#: ../Doc/howto/clinic.rst:710 msgid "" "If there are no required arguments, the optional groups will behave as if " "they're to the right of the required arguments." @@ -1116,7 +1108,7 @@ msgstr "" "Si no hay argumentos requeridos, los grupos opcionales se comportarán como " "si estuvieran a la derecha de los argumentos requeridos." -#: ../Doc/howto/clinic.rst:716 +#: ../Doc/howto/clinic.rst:713 msgid "" "In the case of ambiguity, the argument parsing code favors parameters on the " "left (before the required parameters)." @@ -1124,11 +1116,11 @@ msgstr "" "En el caso de ambigüedad, el código de análisis de argumentos favorece los " "parámetros de la izquierda (antes de los parámetros requeridos)." -#: ../Doc/howto/clinic.rst:719 +#: ../Doc/howto/clinic.rst:716 msgid "Optional groups can only contain positional-only parameters." msgstr "Los grupos opcionales solo pueden contener parámetros posicionales." -#: ../Doc/howto/clinic.rst:721 +#: ../Doc/howto/clinic.rst:718 msgid "" "Optional groups are *only* intended for legacy code. Please do not use " "optional groups for new code." @@ -1136,13 +1128,13 @@ msgstr "" "Los grupos opcionales son *solo* destinados al código heredado. No utilice " "grupos opcionales para el código nuevo." -#: ../Doc/howto/clinic.rst:726 +#: ../Doc/howto/clinic.rst:723 msgid "Using real Argument Clinic converters, instead of \"legacy converters\"" msgstr "" "Usar convertidores de Argument Clinic reales, en lugar de \"convertidores " "heredados\"" -#: ../Doc/howto/clinic.rst:728 +#: ../Doc/howto/clinic.rst:725 msgid "" "To save time, and to minimize how much you need to learn to achieve your " "first port to Argument Clinic, the walkthrough above tells you to use " @@ -1157,7 +1149,7 @@ msgstr "" "código existente a Argument Clinic. Y para ser claros, su uso es aceptable " "al portar código para Python 3.4." -#: ../Doc/howto/clinic.rst:735 +#: ../Doc/howto/clinic.rst:732 msgid "" "However, in the long term we probably want all our blocks to use Argument " "Clinic's real syntax for converters. Why? A couple reasons:" @@ -1166,14 +1158,14 @@ msgstr "" "utilicen la sintaxis real de Argument Clinic para los convertidores. ¿Por " "qué? Un par de razones:" -#: ../Doc/howto/clinic.rst:739 +#: ../Doc/howto/clinic.rst:736 msgid "" "The proper converters are far easier to read and clearer in their intent." msgstr "" "Los convertidores adecuados son mucho más fáciles de leer y más claros en su " "intención." -#: ../Doc/howto/clinic.rst:740 +#: ../Doc/howto/clinic.rst:737 msgid "" "There are some format units that are unsupported as \"legacy converters\", " "because they require arguments, and the legacy converter syntax doesn't " @@ -1183,7 +1175,7 @@ msgstr "" "heredados\", porque requieren argumentos y la sintaxis del convertidor " "heredado no admite la especificación de argumentos." -#: ../Doc/howto/clinic.rst:743 +#: ../Doc/howto/clinic.rst:740 msgid "" "In the future we may have a new argument parsing library that isn't " "restricted to what :c:func:`PyArg_ParseTuple` supports; this flexibility " @@ -1194,7 +1186,7 @@ msgstr "" "admite; esta flexibilidad no estará disponible para los parámetros que " "utilizan convertidores heredados." -#: ../Doc/howto/clinic.rst:747 +#: ../Doc/howto/clinic.rst:744 msgid "" "Therefore, if you don't mind a little extra effort, please use the normal " "converters instead of legacy converters." @@ -1202,7 +1194,7 @@ msgstr "" "Por lo tanto, si no le importa un poco de esfuerzo adicional, utilice los " "convertidores normales en lugar de los convertidores heredados." -#: ../Doc/howto/clinic.rst:750 +#: ../Doc/howto/clinic.rst:747 msgid "" "In a nutshell, the syntax for Argument Clinic (non-legacy) converters looks " "like a Python function call. However, if there are no explicit arguments to " @@ -1215,7 +1207,7 @@ msgstr "" "valores predeterminados), puede omitir los paréntesis. Por tanto, ``bool`` y " "``bool()`` son exactamente los mismos convertidores." -#: ../Doc/howto/clinic.rst:756 +#: ../Doc/howto/clinic.rst:753 msgid "" "All arguments to Argument Clinic converters are keyword-only. All Argument " "Clinic converters accept the following arguments:" @@ -1224,16 +1216,16 @@ msgstr "" "palabras clave. Todos los convertidores de Argument Clinic aceptan los " "siguientes argumentos:" -#: ../Doc/howto/clinic.rst:764 ../Doc/howto/clinic.rst:1314 +#: ../Doc/howto/clinic.rst:761 ../Doc/howto/clinic.rst:1311 msgid "``c_default``" msgstr "``c_default``" -#: ../Doc/howto/clinic.rst:760 +#: ../Doc/howto/clinic.rst:757 msgid "" "The default value for this parameter when defined in C. Specifically, this " -"will be the initializer for the variable declared in the \"parse function" -"\". See :ref:`the section on default values ` for how to " -"use this. Specified as a string." +"will be the initializer for the variable declared in the \"parse " +"function\". See :ref:`the section on default values ` for " +"how to use this. Specified as a string." msgstr "" "El valor predeterminado para este parámetro cuando se define en C. " "Específicamente, será el inicializador de la variable declarada en la " @@ -1241,11 +1233,11 @@ msgstr "" "predeterminados ` para saber cómo usar esto. Especificado " "como una cadena de caracteres." -#: ../Doc/howto/clinic.rst:769 +#: ../Doc/howto/clinic.rst:766 msgid "``annotation``" msgstr "``annotation``" -#: ../Doc/howto/clinic.rst:767 +#: ../Doc/howto/clinic.rst:764 msgid "" "The annotation value for this parameter. Not currently supported, because :" "pep:`8` mandates that the Python library may not use annotations." @@ -1253,7 +1245,7 @@ msgstr "" "El valor de anotación para este parámetro. Actualmente no es compatible, " "porque :pep:`8` exige que la biblioteca de Python no use anotaciones." -#: ../Doc/howto/clinic.rst:771 +#: ../Doc/howto/clinic.rst:768 msgid "" "In addition, some converters accept additional arguments. Here is a list of " "these arguments, along with their meanings:" @@ -1261,11 +1253,11 @@ msgstr "" "Además, algunos convertidores aceptan argumentos adicionales. Aquí hay una " "lista de estos argumentos, junto con sus significados:" -#: ../Doc/howto/clinic.rst:780 +#: ../Doc/howto/clinic.rst:777 msgid "``accept``" msgstr "``accept``" -#: ../Doc/howto/clinic.rst:775 +#: ../Doc/howto/clinic.rst:772 msgid "" "A set of Python types (and possibly pseudo-types); this restricts the " "allowable Python argument to values of these types. (This is not a general-" @@ -1277,15 +1269,15 @@ msgstr "" "infraestructura de propósito general; por regla general, solo admite listas " "específicas de tipos como se muestra en la tabla de convertidores heredados)." -#: ../Doc/howto/clinic.rst:780 +#: ../Doc/howto/clinic.rst:777 msgid "To accept ``None``, add ``NoneType`` to this set." msgstr "Para aceptar ``None``, agregue ``NoneType`` a este conjunto." -#: ../Doc/howto/clinic.rst:785 +#: ../Doc/howto/clinic.rst:782 msgid "``bitwise``" msgstr "``bitwise``" -#: ../Doc/howto/clinic.rst:783 +#: ../Doc/howto/clinic.rst:780 msgid "" "Only supported for unsigned integers. The native integer value of this " "Python argument will be written to the parameter without any range checking, " @@ -1295,11 +1287,11 @@ msgstr "" "argumento de Python se escribirá en el parámetro sin ninguna verificación de " "rango, incluso para valores negativos." -#: ../Doc/howto/clinic.rst:790 ../Doc/howto/clinic.rst:1328 +#: ../Doc/howto/clinic.rst:787 ../Doc/howto/clinic.rst:1325 msgid "``converter``" msgstr "``converter``" -#: ../Doc/howto/clinic.rst:788 +#: ../Doc/howto/clinic.rst:785 msgid "" "Only supported by the ``object`` converter. Specifies the name of a :ref:`C " "\"converter function\" ` to use to convert this object to a " @@ -1309,11 +1301,11 @@ msgstr "" "una :ref:`\"función de conversión\" C ` para convertir este " "objeto en un tipo nativo." -#: ../Doc/howto/clinic.rst:795 +#: ../Doc/howto/clinic.rst:792 msgid "``encoding``" msgstr "``encoding``" -#: ../Doc/howto/clinic.rst:793 +#: ../Doc/howto/clinic.rst:790 msgid "" "Only supported for strings. Specifies the encoding to use when converting " "this string from a Python str (Unicode) value into a C ``char *`` value." @@ -1322,11 +1314,11 @@ msgstr "" "utilizará al convertir esta cadena de un valor Python str (Unicode) en un " "valor ``char *`` de C." -#: ../Doc/howto/clinic.rst:799 +#: ../Doc/howto/clinic.rst:796 msgid "``subclass_of``" msgstr "``subclass_of``" -#: ../Doc/howto/clinic.rst:798 +#: ../Doc/howto/clinic.rst:795 msgid "" "Only supported for the ``object`` converter. Requires that the Python value " "be a subclass of a Python type, as expressed in C." @@ -1334,25 +1326,25 @@ msgstr "" "Solo compatible con el convertidor de ``objetos``. Requiere que el valor de " "Python sea una subclase de un tipo de Python, como se expresa en C." -#: ../Doc/howto/clinic.rst:804 ../Doc/howto/clinic.rst:1300 +#: ../Doc/howto/clinic.rst:801 ../Doc/howto/clinic.rst:1297 msgid "``type``" msgstr "``type``" -#: ../Doc/howto/clinic.rst:802 +#: ../Doc/howto/clinic.rst:799 msgid "" "Only supported for the ``object`` and ``self`` converters. Specifies the C " -"type that will be used to declare the variable. Default value is ``" -"\"PyObject *\"``." +"type that will be used to declare the variable. Default value is " +"``\"PyObject *\"``." msgstr "" "Solo compatible con los convertidores de ``object`` y ``self``. Especifica " "el tipo C que se utilizará para declarar la variable. El valor " "predeterminado es ``\"PyObject *\"``." -#: ../Doc/howto/clinic.rst:810 +#: ../Doc/howto/clinic.rst:807 msgid "``zeroes``" msgstr "``zeroes``" -#: ../Doc/howto/clinic.rst:807 +#: ../Doc/howto/clinic.rst:804 msgid "" "Only supported for strings. If true, embedded NUL bytes (``'\\\\0'``) are " "permitted inside the value. The length of the string will be passed in to " @@ -1364,7 +1356,7 @@ msgstr "" "pasará a la función impl, justo después del parámetro de cadena, como un " "parámetro llamado ``_length``." -#: ../Doc/howto/clinic.rst:812 +#: ../Doc/howto/clinic.rst:809 msgid "" "Please note, not every possible combination of arguments will work. Usually " "these arguments are implemented by specific ``PyArg_ParseTuple`` *format " @@ -1383,7 +1375,7 @@ msgstr "" "asigna a ninguna unidad de formato existente. Entonces, Argument Clinic no " "lo admite. (O, al menos, todavía no)." -#: ../Doc/howto/clinic.rst:820 +#: ../Doc/howto/clinic.rst:817 msgid "" "Below is a table showing the mapping of legacy converters into real Argument " "Clinic converters. On the left is the legacy converter, on the right is the " @@ -1393,83 +1385,83 @@ msgstr "" "heredados en convertidores de Argument Clinic reales. A la izquierda está el " "convertidor heredado, a la derecha está el texto con el que lo reemplazaría." -#: ../Doc/howto/clinic.rst:825 +#: ../Doc/howto/clinic.rst:822 msgid "``'B'``" msgstr "``'B'``" -#: ../Doc/howto/clinic.rst:825 +#: ../Doc/howto/clinic.rst:822 msgid "``unsigned_char(bitwise=True)``" msgstr "``unsigned_char(bitwise=True)``" -#: ../Doc/howto/clinic.rst:826 +#: ../Doc/howto/clinic.rst:823 msgid "``'b'``" msgstr "``'b'``" -#: ../Doc/howto/clinic.rst:826 +#: ../Doc/howto/clinic.rst:823 msgid "``unsigned_char``" msgstr "``unsigned_char``" -#: ../Doc/howto/clinic.rst:827 +#: ../Doc/howto/clinic.rst:824 msgid "``'c'``" msgstr "``'c'``" -#: ../Doc/howto/clinic.rst:827 +#: ../Doc/howto/clinic.rst:824 msgid "``char``" msgstr "``char``" -#: ../Doc/howto/clinic.rst:828 +#: ../Doc/howto/clinic.rst:825 msgid "``'C'``" msgstr "``'C'``" -#: ../Doc/howto/clinic.rst:828 +#: ../Doc/howto/clinic.rst:825 msgid "``int(accept={str})``" msgstr "``int(accept={str})``" -#: ../Doc/howto/clinic.rst:829 +#: ../Doc/howto/clinic.rst:826 msgid "``'d'``" msgstr "``'d'``" -#: ../Doc/howto/clinic.rst:829 +#: ../Doc/howto/clinic.rst:826 msgid "``double``" msgstr "``double``" -#: ../Doc/howto/clinic.rst:830 +#: ../Doc/howto/clinic.rst:827 msgid "``'D'``" msgstr "``'D'``" -#: ../Doc/howto/clinic.rst:830 +#: ../Doc/howto/clinic.rst:827 msgid "``Py_complex``" msgstr "``Py_complex``" -#: ../Doc/howto/clinic.rst:831 +#: ../Doc/howto/clinic.rst:828 msgid "``'es'``" msgstr "``'es'``" -#: ../Doc/howto/clinic.rst:831 +#: ../Doc/howto/clinic.rst:828 msgid "``str(encoding='name_of_encoding')``" msgstr "``str(encoding='name_of_encoding')``" -#: ../Doc/howto/clinic.rst:832 +#: ../Doc/howto/clinic.rst:829 msgid "``'es#'``" msgstr "``'es#'``" -#: ../Doc/howto/clinic.rst:832 +#: ../Doc/howto/clinic.rst:829 msgid "``str(encoding='name_of_encoding', zeroes=True)``" msgstr "``str(encoding='name_of_encoding', zeroes=True)``" -#: ../Doc/howto/clinic.rst:833 +#: ../Doc/howto/clinic.rst:830 msgid "``'et'``" msgstr "``'et'``" -#: ../Doc/howto/clinic.rst:833 +#: ../Doc/howto/clinic.rst:830 msgid "``str(encoding='name_of_encoding', accept={bytes, bytearray, str})``" msgstr "``str(encoding='name_of_encoding', accept={bytes, bytearray, str})``" -#: ../Doc/howto/clinic.rst:834 +#: ../Doc/howto/clinic.rst:831 msgid "``'et#'``" msgstr "``'et#'``" -#: ../Doc/howto/clinic.rst:834 +#: ../Doc/howto/clinic.rst:831 msgid "" "``str(encoding='name_of_encoding', accept={bytes, bytearray, str}, " "zeroes=True)``" @@ -1477,255 +1469,255 @@ msgstr "" "``str(encoding='name_of_encoding', accept={bytes, bytearray, str}, " "zeroes=True)``" -#: ../Doc/howto/clinic.rst:835 +#: ../Doc/howto/clinic.rst:832 msgid "``'f'``" msgstr "``'f'``" -#: ../Doc/howto/clinic.rst:835 +#: ../Doc/howto/clinic.rst:832 msgid "``float``" msgstr "``float``" -#: ../Doc/howto/clinic.rst:836 +#: ../Doc/howto/clinic.rst:833 msgid "``'h'``" msgstr "``'h'``" -#: ../Doc/howto/clinic.rst:836 +#: ../Doc/howto/clinic.rst:833 msgid "``short``" msgstr "``short``" -#: ../Doc/howto/clinic.rst:837 +#: ../Doc/howto/clinic.rst:834 msgid "``'H'``" msgstr "``'H'``" -#: ../Doc/howto/clinic.rst:837 +#: ../Doc/howto/clinic.rst:834 msgid "``unsigned_short(bitwise=True)``" msgstr "``unsigned_short(bitwise=True)``" -#: ../Doc/howto/clinic.rst:838 +#: ../Doc/howto/clinic.rst:835 msgid "``'i'``" msgstr "``'i'``" -#: ../Doc/howto/clinic.rst:838 +#: ../Doc/howto/clinic.rst:835 msgid "``int``" msgstr "``int``" -#: ../Doc/howto/clinic.rst:839 +#: ../Doc/howto/clinic.rst:836 msgid "``'I'``" msgstr "``'I'``" -#: ../Doc/howto/clinic.rst:839 +#: ../Doc/howto/clinic.rst:836 msgid "``unsigned_int(bitwise=True)``" msgstr "``unsigned_int(bitwise=True)``" -#: ../Doc/howto/clinic.rst:840 +#: ../Doc/howto/clinic.rst:837 msgid "``'k'``" msgstr "``'k'``" -#: ../Doc/howto/clinic.rst:840 +#: ../Doc/howto/clinic.rst:837 msgid "``unsigned_long(bitwise=True)``" msgstr "``unsigned_long(bitwise=True)``" -#: ../Doc/howto/clinic.rst:841 +#: ../Doc/howto/clinic.rst:838 msgid "``'K'``" msgstr "``'K'``" -#: ../Doc/howto/clinic.rst:841 +#: ../Doc/howto/clinic.rst:838 msgid "``unsigned_long_long(bitwise=True)``" msgstr "``unsigned_long_long(bitwise=True)``" -#: ../Doc/howto/clinic.rst:842 +#: ../Doc/howto/clinic.rst:839 msgid "``'l'``" msgstr "``'l'``" -#: ../Doc/howto/clinic.rst:842 +#: ../Doc/howto/clinic.rst:839 msgid "``long``" msgstr "``long``" -#: ../Doc/howto/clinic.rst:843 +#: ../Doc/howto/clinic.rst:840 msgid "``'L'``" msgstr "``'L'``" -#: ../Doc/howto/clinic.rst:843 +#: ../Doc/howto/clinic.rst:840 msgid "``long long``" msgstr "``long long``" -#: ../Doc/howto/clinic.rst:844 +#: ../Doc/howto/clinic.rst:841 msgid "``'n'``" msgstr "``'n'``" -#: ../Doc/howto/clinic.rst:844 +#: ../Doc/howto/clinic.rst:841 msgid "``Py_ssize_t``" msgstr "``Py_ssize_t``" -#: ../Doc/howto/clinic.rst:845 +#: ../Doc/howto/clinic.rst:842 msgid "``'O'``" msgstr "``'O'``" -#: ../Doc/howto/clinic.rst:845 +#: ../Doc/howto/clinic.rst:842 msgid "``object``" msgstr "``object``" -#: ../Doc/howto/clinic.rst:846 +#: ../Doc/howto/clinic.rst:843 msgid "``'O!'``" msgstr "``'O!'``" -#: ../Doc/howto/clinic.rst:846 +#: ../Doc/howto/clinic.rst:843 msgid "``object(subclass_of='&PySomething_Type')``" msgstr "``object(subclass_of='&PySomething_Type')``" -#: ../Doc/howto/clinic.rst:847 +#: ../Doc/howto/clinic.rst:844 msgid "``'O&'``" msgstr "``'O&'``" -#: ../Doc/howto/clinic.rst:847 +#: ../Doc/howto/clinic.rst:844 msgid "``object(converter='name_of_c_function')``" msgstr "``object(converter='name_of_c_function')``" -#: ../Doc/howto/clinic.rst:848 +#: ../Doc/howto/clinic.rst:845 msgid "``'p'``" msgstr "``'p'``" -#: ../Doc/howto/clinic.rst:848 +#: ../Doc/howto/clinic.rst:845 msgid "``bool``" msgstr "``bool``" -#: ../Doc/howto/clinic.rst:849 +#: ../Doc/howto/clinic.rst:846 msgid "``'S'``" msgstr "``'S'``" -#: ../Doc/howto/clinic.rst:849 +#: ../Doc/howto/clinic.rst:846 msgid "``PyBytesObject``" msgstr "``PyBytesObject``" -#: ../Doc/howto/clinic.rst:850 +#: ../Doc/howto/clinic.rst:847 msgid "``'s'``" msgstr "``'s'``" -#: ../Doc/howto/clinic.rst:850 +#: ../Doc/howto/clinic.rst:847 msgid "``str``" msgstr "``str``" -#: ../Doc/howto/clinic.rst:851 +#: ../Doc/howto/clinic.rst:848 msgid "``'s#'``" msgstr "``'s#'``" -#: ../Doc/howto/clinic.rst:851 +#: ../Doc/howto/clinic.rst:848 msgid "``str(zeroes=True)``" msgstr "``str(zeroes=True)``" -#: ../Doc/howto/clinic.rst:852 +#: ../Doc/howto/clinic.rst:849 msgid "``'s*'``" msgstr "``'s*'``" -#: ../Doc/howto/clinic.rst:852 +#: ../Doc/howto/clinic.rst:849 msgid "``Py_buffer(accept={buffer, str})``" msgstr "``Py_buffer(accept={buffer, str})``" -#: ../Doc/howto/clinic.rst:853 +#: ../Doc/howto/clinic.rst:850 msgid "``'U'``" msgstr "``'U'``" -#: ../Doc/howto/clinic.rst:853 +#: ../Doc/howto/clinic.rst:850 msgid "``unicode``" msgstr "``unicode``" -#: ../Doc/howto/clinic.rst:854 +#: ../Doc/howto/clinic.rst:851 msgid "``'u'``" msgstr "``'u'``" -#: ../Doc/howto/clinic.rst:854 +#: ../Doc/howto/clinic.rst:851 msgid "``Py_UNICODE``" msgstr "``Py_UNICODE``" -#: ../Doc/howto/clinic.rst:855 +#: ../Doc/howto/clinic.rst:852 msgid "``'u#'``" msgstr "``'u#'``" -#: ../Doc/howto/clinic.rst:855 +#: ../Doc/howto/clinic.rst:852 msgid "``Py_UNICODE(zeroes=True)``" msgstr "``Py_UNICODE(zeroes=True)``" -#: ../Doc/howto/clinic.rst:856 +#: ../Doc/howto/clinic.rst:853 msgid "``'w*'``" msgstr "``'w*'``" -#: ../Doc/howto/clinic.rst:856 +#: ../Doc/howto/clinic.rst:853 msgid "``Py_buffer(accept={rwbuffer})``" msgstr "``Py_buffer(accept={rwbuffer})``" -#: ../Doc/howto/clinic.rst:857 +#: ../Doc/howto/clinic.rst:854 msgid "``'Y'``" msgstr "``'Y'``" -#: ../Doc/howto/clinic.rst:857 +#: ../Doc/howto/clinic.rst:854 msgid "``PyByteArrayObject``" msgstr "``PyByteArrayObject``" -#: ../Doc/howto/clinic.rst:858 +#: ../Doc/howto/clinic.rst:855 msgid "``'y'``" msgstr "``'y'``" -#: ../Doc/howto/clinic.rst:858 +#: ../Doc/howto/clinic.rst:855 msgid "``str(accept={bytes})``" msgstr "``str(accept={bytes})``" -#: ../Doc/howto/clinic.rst:859 +#: ../Doc/howto/clinic.rst:856 msgid "``'y#'``" msgstr "``'y#'``" -#: ../Doc/howto/clinic.rst:859 +#: ../Doc/howto/clinic.rst:856 msgid "``str(accept={robuffer}, zeroes=True)``" msgstr "``str(accept={robuffer}, zeroes=True)``" -#: ../Doc/howto/clinic.rst:860 +#: ../Doc/howto/clinic.rst:857 msgid "``'y*'``" msgstr "``'y*'``" -#: ../Doc/howto/clinic.rst:860 +#: ../Doc/howto/clinic.rst:857 msgid "``Py_buffer``" msgstr "``Py_buffer``" -#: ../Doc/howto/clinic.rst:861 +#: ../Doc/howto/clinic.rst:858 msgid "``'Z'``" msgstr "``'Z'``" -#: ../Doc/howto/clinic.rst:861 +#: ../Doc/howto/clinic.rst:858 msgid "``Py_UNICODE(accept={str, NoneType})``" msgstr "``Py_UNICODE(accept={str, NoneType})``" -#: ../Doc/howto/clinic.rst:862 +#: ../Doc/howto/clinic.rst:859 msgid "``'Z#'``" msgstr "``'Z#'``" -#: ../Doc/howto/clinic.rst:862 +#: ../Doc/howto/clinic.rst:859 msgid "``Py_UNICODE(accept={str, NoneType}, zeroes=True)``" msgstr "``Py_UNICODE(accept={str, NoneType}, zeroes=True)``" -#: ../Doc/howto/clinic.rst:863 +#: ../Doc/howto/clinic.rst:860 msgid "``'z'``" msgstr "``'z'``" -#: ../Doc/howto/clinic.rst:863 +#: ../Doc/howto/clinic.rst:860 msgid "``str(accept={str, NoneType})``" msgstr "``str(accept={str, NoneType})``" -#: ../Doc/howto/clinic.rst:864 +#: ../Doc/howto/clinic.rst:861 msgid "``'z#'``" msgstr "``'z#'``" -#: ../Doc/howto/clinic.rst:864 +#: ../Doc/howto/clinic.rst:861 msgid "``str(accept={str, NoneType}, zeroes=True)``" msgstr "``str(accept={str, NoneType}, zeroes=True)``" -#: ../Doc/howto/clinic.rst:865 +#: ../Doc/howto/clinic.rst:862 msgid "``'z*'``" msgstr "``'z*'``" -#: ../Doc/howto/clinic.rst:865 +#: ../Doc/howto/clinic.rst:862 msgid "``Py_buffer(accept={buffer, str, NoneType})``" msgstr "``Py_buffer(accept={buffer, str, NoneType})``" -#: ../Doc/howto/clinic.rst:868 +#: ../Doc/howto/clinic.rst:865 msgid "" "As an example, here's our sample ``pickle.Pickler.dump`` using the proper " "converter::" @@ -1733,7 +1725,7 @@ msgstr "" "Como ejemplo, aquí está nuestra muestra ``pickle.Pickler.dump`` usando el " "convertidor adecuado:" -#: ../Doc/howto/clinic.rst:881 +#: ../Doc/howto/clinic.rst:878 msgid "" "One advantage of real converters is that they're more flexible than legacy " "converters. For example, the ``unsigned_int`` converter (and all the " @@ -1748,7 +1740,7 @@ msgstr "" "de rango en el valor y no aceptarán números negativos. ¡No puedes hacer eso " "con un convertidor heredado!" -#: ../Doc/howto/clinic.rst:887 +#: ../Doc/howto/clinic.rst:884 msgid "" "Argument Clinic will show you all the converters it has available. For each " "converter it'll show you all the parameters it accepts, along with the " @@ -1760,11 +1752,11 @@ msgstr "" "con el valor predeterminado para cada parámetro. Simplemente ejecute ``Tools/" "clinic/clinic.py --converters`` para ver la lista completa." -#: ../Doc/howto/clinic.rst:893 +#: ../Doc/howto/clinic.rst:890 msgid "Py_buffer" msgstr "Py_buffer" -#: ../Doc/howto/clinic.rst:895 +#: ../Doc/howto/clinic.rst:892 msgid "" "When using the ``Py_buffer`` converter (or the ``'s*'``, ``'w*'``, ``'*y'``, " "or ``'z*'`` legacy converters), you *must* not call :c:func:" @@ -1776,11 +1768,11 @@ msgstr "" "func:`PyBuffer_Release` en el búfer provisto. Argument Clinic genera código " "que lo hace por usted (en la función de análisis)." -#: ../Doc/howto/clinic.rst:903 +#: ../Doc/howto/clinic.rst:900 msgid "Advanced converters" msgstr "Convertidores avanzados" -#: ../Doc/howto/clinic.rst:905 +#: ../Doc/howto/clinic.rst:902 msgid "" "Remember those format units you skipped for your first time because they " "were advanced? Here's how to handle those too." @@ -1788,7 +1780,7 @@ msgstr "" "¿Recuerda esas unidades de formato que omitió por primera vez porque eran " "avanzadas? Aquí le mostramos cómo manejarlas también." -#: ../Doc/howto/clinic.rst:908 +#: ../Doc/howto/clinic.rst:905 msgid "" "The trick is, all those format units take arguments—either conversion " "functions, or types, or strings specifying an encoding. (But \"legacy " @@ -1806,7 +1798,7 @@ msgstr "" "es ``converter`` (para ``O&``), ``subclass_of`` (para ``O!``) o ``encoding`` " "(para todas las unidades de formato que comienzan con ``e``)." -#: ../Doc/howto/clinic.rst:916 +#: ../Doc/howto/clinic.rst:913 msgid "" "When using ``subclass_of``, you may also want to use the other custom " "argument for ``object()``: ``type``, which lets you set the type actually " @@ -1821,7 +1813,7 @@ msgstr "" "utilizar el convertidor ``object(type='PyUnicodeObject *', " "subclass_of='&PyUnicode_Type')``." -#: ../Doc/howto/clinic.rst:922 +#: ../Doc/howto/clinic.rst:919 msgid "" "One possible problem with using Argument Clinic: it takes away some possible " "flexibility for the format units starting with ``e``. When writing a " @@ -1844,11 +1836,11 @@ msgstr "" "propio CPython siempre pasa cadenas de codificación estáticas codificadas " "para parámetros cuyas unidades de formato comienzan con ``e``." -#: ../Doc/howto/clinic.rst:935 +#: ../Doc/howto/clinic.rst:932 msgid "Parameter default values" msgstr "Valores predeterminados de los parámetros" -#: ../Doc/howto/clinic.rst:937 +#: ../Doc/howto/clinic.rst:934 msgid "" "Default values for parameters can be any of a number of values. At their " "simplest, they can be string, int, or float literals:" @@ -1857,12 +1849,12 @@ msgstr "" "varios valores. En su forma más simple, pueden ser literales string, int o " "float:" -#: ../Doc/howto/clinic.rst:946 +#: ../Doc/howto/clinic.rst:943 msgid "They can also use any of Python's built-in constants:" msgstr "" "También pueden usar cualquiera de las constantes incorporadas de Python:" -#: ../Doc/howto/clinic.rst:954 +#: ../Doc/howto/clinic.rst:951 msgid "" "There's also special support for a default value of ``NULL``, and for simple " "expressions, documented in the following sections." @@ -1870,11 +1862,11 @@ msgstr "" "También hay soporte especial para un valor predeterminado de ``NULL`` y para " "expresiones simples, documentadas en las siguientes secciones." -#: ../Doc/howto/clinic.rst:959 +#: ../Doc/howto/clinic.rst:956 msgid "The ``NULL`` default value" msgstr "El valor predeterminado ``NULL``" -#: ../Doc/howto/clinic.rst:961 +#: ../Doc/howto/clinic.rst:958 msgid "" "For string and object parameters, you can set them to ``None`` to indicate " "that there's no default. However, that means the C variable will be " @@ -1890,11 +1882,11 @@ msgstr "" "desde la perspectiva de Python se comporta como un valor predeterminado de " "``None``, pero la variable C se inicializa con ``NULL``." -#: ../Doc/howto/clinic.rst:969 +#: ../Doc/howto/clinic.rst:966 msgid "Expressions specified as default values" msgstr "Expresiones especificadas como valores por defecto" -#: ../Doc/howto/clinic.rst:971 +#: ../Doc/howto/clinic.rst:968 msgid "" "The default value for a parameter can be more than just a literal value. It " "can be an entire expression, using math operators and looking up attributes " @@ -1906,11 +1898,11 @@ msgstr "" "buscando atributos en objetos. Sin embargo, este soporte no es exactamente " "simple, debido a una semántica no obvia." -#: ../Doc/howto/clinic.rst:976 +#: ../Doc/howto/clinic.rst:973 msgid "Consider the following example:" msgstr "Considere el siguiente ejemplo:" -#: ../Doc/howto/clinic.rst:982 +#: ../Doc/howto/clinic.rst:979 msgid "" "``sys.maxsize`` can have different values on different platforms. Therefore " "Argument Clinic can't simply evaluate that expression locally and hard-code " @@ -1923,7 +1915,7 @@ msgstr "" "predeterminado de tal manera que se evaluará en tiempo de ejecución, cuando " "el usuario solicite la firma de la función." -#: ../Doc/howto/clinic.rst:987 +#: ../Doc/howto/clinic.rst:984 msgid "" "What namespace is available when the expression is evaluated? It's " "evaluated in the context of the module the builtin came from. So, if your " @@ -1934,7 +1926,7 @@ msgstr "" "si su módulo tiene un atributo llamado \"``max_widgets``\", simplemente " "puede usarlo:" -#: ../Doc/howto/clinic.rst:995 +#: ../Doc/howto/clinic.rst:992 msgid "" "If the symbol isn't found in the current module, it fails over to looking in " "``sys.modules``. That's how it can find ``sys.maxsize`` for example. " @@ -1948,7 +1940,7 @@ msgstr "" "intérprete, es mejor limitarse a los módulos que están precargados por el " "propio Python)." -#: ../Doc/howto/clinic.rst:1000 +#: ../Doc/howto/clinic.rst:997 msgid "" "Evaluating default values only at runtime means Argument Clinic can't " "compute the correct equivalent C default value. So you need to tell it " @@ -1961,7 +1953,7 @@ msgstr "" "una expresión, también debe especificar la expresión equivalente en C, " "usando el parámetro ``c_default`` para el convertidor:" -#: ../Doc/howto/clinic.rst:1009 +#: ../Doc/howto/clinic.rst:1006 msgid "" "Another complication: Argument Clinic can't know in advance whether or not " "the expression you supply is valid. It parses it to make sure it looks " @@ -1974,7 +1966,7 @@ msgstr "" "al usar expresiones para especificar valores que están garantizados para ser " "válidos en tiempo de ejecución!" -#: ../Doc/howto/clinic.rst:1014 +#: ../Doc/howto/clinic.rst:1011 msgid "" "Finally, because expressions must be representable as static C values, there " "are many restrictions on legal expressions. Here's a list of Python " @@ -1984,31 +1976,31 @@ msgstr "" "estáticos, existen muchas restricciones sobre las expresiones legales. Aquí " "hay una lista de funciones de Python que no está autorizado a usar:" -#: ../Doc/howto/clinic.rst:1018 +#: ../Doc/howto/clinic.rst:1015 msgid "Function calls." msgstr "Llamadas a funciones." -#: ../Doc/howto/clinic.rst:1019 +#: ../Doc/howto/clinic.rst:1016 msgid "Inline if statements (``3 if foo else 5``)." msgstr "Declaraciones if en línea (``3 if foo else 5``)." -#: ../Doc/howto/clinic.rst:1020 +#: ../Doc/howto/clinic.rst:1017 msgid "Automatic sequence unpacking (``*[1, 2, 3]``)." msgstr "Desempaque automático de secuencia (``*[1, 2, 3]``)." -#: ../Doc/howto/clinic.rst:1021 +#: ../Doc/howto/clinic.rst:1018 msgid "List/set/dict comprehensions and generator expressions." msgstr "Comprensiones de list/set/dict y expresiones generadoras." -#: ../Doc/howto/clinic.rst:1022 +#: ../Doc/howto/clinic.rst:1019 msgid "Tuple/list/set/dict literals." msgstr "Literales tuple/list/set/dict." -#: ../Doc/howto/clinic.rst:1027 +#: ../Doc/howto/clinic.rst:1024 msgid "Using a return converter" msgstr "Usando un convertidor de retorno" -#: ../Doc/howto/clinic.rst:1029 +#: ../Doc/howto/clinic.rst:1026 msgid "" "By default the impl function Argument Clinic generates for you returns " "``PyObject *``. But your C function often computes some C type, then " @@ -2024,7 +2016,7 @@ msgstr "" "nativos; ¿por qué no convertir su valor de retorno de un tipo C nativo en un " "tipo Python también?" -#: ../Doc/howto/clinic.rst:1035 +#: ../Doc/howto/clinic.rst:1032 msgid "" "That's what a \"return converter\" does. It changes your impl function to " "return some C type, then adds code to the generated (non-impl) function to " @@ -2035,7 +2027,7 @@ msgstr "" "implícita) para manejar la conversión de ese valor en el ``PyObject *`` " "apropiado." -#: ../Doc/howto/clinic.rst:1039 +#: ../Doc/howto/clinic.rst:1036 msgid "" "The syntax for return converters is similar to that of parameter converters. " "You specify the return converter like it was a return annotation on the " @@ -2052,7 +2044,7 @@ msgstr "" "está cambiando ninguno de los argumentos predeterminados, puede omitir los " "paréntesis." -#: ../Doc/howto/clinic.rst:1045 +#: ../Doc/howto/clinic.rst:1042 msgid "" "(If you use both ``\"as\"`` *and* a return converter for your function, the " "``\"as\"`` should come before the return converter.)" @@ -2060,7 +2052,7 @@ msgstr "" "(Si utiliza tanto ``\"as\" `` *y* un convertidor de retorno para su función, " "el ``\"as\"`` debe aparecer antes del convertidor de retorno.)" -#: ../Doc/howto/clinic.rst:1048 +#: ../Doc/howto/clinic.rst:1045 msgid "" "There's one additional complication when using return converters: how do you " "indicate an error has occurred? Normally, a function returns a valid (non-" @@ -2082,12 +2074,12 @@ msgstr "" "un valor verdadero), el código generado propagará el error. De lo contrario, " "codificará el valor que retorna como de costumbre." -#: ../Doc/howto/clinic.rst:1057 +#: ../Doc/howto/clinic.rst:1054 msgid "Currently Argument Clinic supports only a few return converters:" msgstr "" "Actualmente, Argument Clinic solo admite unos pocos convertidores de retorno:" -#: ../Doc/howto/clinic.rst:1072 +#: ../Doc/howto/clinic.rst:1069 msgid "" "None of these take parameters. For the first three, return -1 to indicate " "error. For ``DecodeFSDefault``, the return type is ``const char *``; return " @@ -2097,7 +2089,7 @@ msgstr "" "indicar error. Para ``DecodeFSDefault``, el tipo de retorno es ``const char " "*``; retorna un puntero ``NULL`` para indicar un error." -#: ../Doc/howto/clinic.rst:1076 +#: ../Doc/howto/clinic.rst:1073 msgid "" "(There's also an experimental ``NoneType`` converter, which lets you return " "``Py_None`` on success or ``NULL`` on failure, without having to increment " @@ -2109,7 +2101,7 @@ msgstr "" "que incrementar el recuento de referencias en ``Py_None``. seguro que agrega " "suficiente claridad para que valga la pena usarlo)" -#: ../Doc/howto/clinic.rst:1081 +#: ../Doc/howto/clinic.rst:1078 msgid "" "To see all the return converters Argument Clinic supports, along with their " "parameters (if any), just run ``Tools/clinic/clinic.py --converters`` for " @@ -2119,11 +2111,11 @@ msgstr "" "junto con sus parámetros (si los hay), simplemente ejecute ``Tools/clinic/" "clinic.py --converters`` para ver la lista completa." -#: ../Doc/howto/clinic.rst:1087 +#: ../Doc/howto/clinic.rst:1084 msgid "Cloning existing functions" msgstr "Clonando funciones existentes" -#: ../Doc/howto/clinic.rst:1089 +#: ../Doc/howto/clinic.rst:1086 msgid "" "If you have a number of functions that look similar, you may be able to use " "Clinic's \"clone\" feature. When you clone an existing function, you reuse:" @@ -2132,27 +2124,27 @@ msgstr "" "utilizar la función \"clone\" de Clinic. Cuando clona una función existente, " "reutiliza:" -#: ../Doc/howto/clinic.rst:1093 +#: ../Doc/howto/clinic.rst:1090 msgid "its parameters, including" msgstr "sus parámetros, incluyendo" -#: ../Doc/howto/clinic.rst:1095 +#: ../Doc/howto/clinic.rst:1092 msgid "their names," msgstr "sus nombres," -#: ../Doc/howto/clinic.rst:1097 +#: ../Doc/howto/clinic.rst:1094 msgid "their converters, with all parameters," msgstr "sus convertidores, con todos los parámetros," -#: ../Doc/howto/clinic.rst:1099 +#: ../Doc/howto/clinic.rst:1096 msgid "their default values," msgstr "sus valores predeterminados," -#: ../Doc/howto/clinic.rst:1101 +#: ../Doc/howto/clinic.rst:1098 msgid "their per-parameter docstrings," msgstr "sus docstrings por parámetro," -#: ../Doc/howto/clinic.rst:1103 +#: ../Doc/howto/clinic.rst:1100 msgid "" "their *kind* (whether they're positional only, positional or keyword, or " "keyword only), and" @@ -2160,11 +2152,11 @@ msgstr "" "su *kind* (ya sea solo posicional, posicional o por palabra clave, o solo " "por palabra clave), y" -#: ../Doc/howto/clinic.rst:1106 +#: ../Doc/howto/clinic.rst:1103 msgid "its return converter." msgstr "su convertidor de retorno." -#: ../Doc/howto/clinic.rst:1108 +#: ../Doc/howto/clinic.rst:1105 msgid "" "The only thing not copied from the original function is its docstring; the " "syntax allows you to specify a new docstring." @@ -2172,11 +2164,11 @@ msgstr "" "Lo único que no se ha copiado de la función original es su docstring; la " "sintaxis le permite especificar un nuevo docstring." -#: ../Doc/howto/clinic.rst:1111 +#: ../Doc/howto/clinic.rst:1108 msgid "Here's the syntax for cloning a function::" msgstr "Aquí está la sintaxis para clonar una función::" -#: ../Doc/howto/clinic.rst:1119 +#: ../Doc/howto/clinic.rst:1116 msgid "" "(The functions can be in different modules or classes. I wrote ``module." "class`` in the sample just to illustrate that you must use the full path to " @@ -2186,16 +2178,17 @@ msgstr "" "class`` en la muestra solo para ilustrar que debe usar la ruta completa a " "*ambas* funciones.)" -#: ../Doc/howto/clinic.rst:1123 +#: ../Doc/howto/clinic.rst:1120 +#, fuzzy msgid "" -"Sorry, there's no syntax for partially-cloning a function, or cloning a " +"Sorry, there's no syntax for partially cloning a function, or cloning a " "function then modifying it. Cloning is an all-or nothing proposition." msgstr "" "Lo sentimos, no hay sintaxis para clonar parcialmente una función o clonar " "una función y luego modificarla. La clonación es una propuesta de todo o " "nada." -#: ../Doc/howto/clinic.rst:1126 +#: ../Doc/howto/clinic.rst:1123 msgid "" "Also, the function you are cloning from must have been previously defined in " "the current file." @@ -2203,11 +2196,11 @@ msgstr "" "Además, la función desde la que está clonando debe haberse definido " "previamente en el archivo actual." -#: ../Doc/howto/clinic.rst:1130 +#: ../Doc/howto/clinic.rst:1127 msgid "Calling Python code" msgstr "Llamando código Python" -#: ../Doc/howto/clinic.rst:1132 +#: ../Doc/howto/clinic.rst:1129 msgid "" "The rest of the advanced topics require you to write Python code which lives " "inside your C file and modifies Argument Clinic's runtime state. This is " @@ -2217,7 +2210,7 @@ msgstr "" "dentro de su archivo C y modifica el estado de ejecución de Argument Clinic. " "Esto es simple: simplemente define un bloque de Python." -#: ../Doc/howto/clinic.rst:1136 +#: ../Doc/howto/clinic.rst:1133 msgid "" "A Python block uses different delimiter lines than an Argument Clinic " "function block. It looks like this::" @@ -2225,17 +2218,17 @@ msgstr "" "Un bloque Python utiliza diferentes líneas delimitadoras que un bloque de " "función de la Argument Clinic. Se parece a esto::" -#: ../Doc/howto/clinic.rst:1143 +#: ../Doc/howto/clinic.rst:1140 msgid "" "All the code inside the Python block is executed at the time it's parsed. " -"All text written to stdout inside the block is redirected into the \"output" -"\" after the block." +"All text written to stdout inside the block is redirected into the " +"\"output\" after the block." msgstr "" "Todo el código dentro del bloque de Python se ejecuta en el momento en que " "se analiza. Todo el texto escrito en stdout dentro del bloque se redirige a " "la \"salida\" después del bloque." -#: ../Doc/howto/clinic.rst:1147 +#: ../Doc/howto/clinic.rst:1144 msgid "" "As an example, here's a Python block that adds a static integer variable to " "the C code::" @@ -2243,11 +2236,11 @@ msgstr "" "Como ejemplo, aquí hay un bloque de Python que agrega una variable entera " "estática al código C ::" -#: ../Doc/howto/clinic.rst:1158 +#: ../Doc/howto/clinic.rst:1155 msgid "Using a \"self converter\"" msgstr "Usando un \"auto convertidor\"" -#: ../Doc/howto/clinic.rst:1160 +#: ../Doc/howto/clinic.rst:1157 msgid "" "Argument Clinic automatically adds a \"self\" parameter for you using a " "default converter. It automatically sets the ``type`` of this parameter to " @@ -2265,7 +2258,7 @@ msgstr "" "``self`` como el primer parámetro en un bloque y asegúrese de que su " "convertidor sea una instancia de ``self_converter`` o una subclase del mismo." -#: ../Doc/howto/clinic.rst:1169 +#: ../Doc/howto/clinic.rst:1166 msgid "" "What's the point? This lets you override the type of ``self``, or give it a " "different default name." @@ -2273,7 +2266,7 @@ msgstr "" "¿Qué sentido tiene ? Esto le permite anular el tipo de ``self`` o darle un " "nombre predeterminado diferente." -#: ../Doc/howto/clinic.rst:1172 +#: ../Doc/howto/clinic.rst:1169 msgid "" "How do you specify the custom type you want to cast ``self`` to? If you only " "have one or two functions with the same type for ``self``, you can directly " @@ -2285,7 +2278,7 @@ msgstr "" "directamente el convertidor ``self`` existente de Argument Clinic, pasando " "el tipo que desea usar como parámetro de ``type``::" -#: ../Doc/howto/clinic.rst:1188 +#: ../Doc/howto/clinic.rst:1185 msgid "" "On the other hand, if you have a lot of functions that will use the same " "type for ``self``, it's best to create your own converter, subclassing " @@ -2295,11 +2288,11 @@ msgstr "" "``self``, es mejor crear su propio convertidor, subclasificando " "``self_converter`` pero sobrescribiendo el miembro `` type``:" -#: ../Doc/howto/clinic.rst:1210 +#: ../Doc/howto/clinic.rst:1207 msgid "Using a \"defining class\" converter" msgstr "Usando un convertidor de \"clase definitoria\" (*defining class*)" -#: ../Doc/howto/clinic.rst:1212 +#: ../Doc/howto/clinic.rst:1209 msgid "" "Argument Clinic facilitates gaining access to the defining class of a " "method. This is useful for :ref:`heap type ` methods that need " @@ -2315,7 +2308,7 @@ msgstr "" "Ahora puede usar :c:func:`PyType_GetModuleState` en la clase de definición " "para obtener el estado del módulo, por ejemplo, de un método de módulo." -#: ../Doc/howto/clinic.rst:1218 +#: ../Doc/howto/clinic.rst:1215 msgid "" "Example from ``Modules/zlibmodule.c``. First, ``defining_class`` is added " "to the clinic input::" @@ -2323,7 +2316,7 @@ msgstr "" "Ejemplo de ``Modules/zlibmodule.c``. Primero, se agrega ``definition_class`` " "a la entrada de la clínica::" -#: ../Doc/howto/clinic.rst:1230 +#: ../Doc/howto/clinic.rst:1227 msgid "" "After running the Argument Clinic tool, the following function signature is " "generated::" @@ -2331,7 +2324,7 @@ msgstr "" "Después de ejecutar la herramienta Argument Clinic, se genera la siguiente " "firma de función::" -#: ../Doc/howto/clinic.rst:1240 +#: ../Doc/howto/clinic.rst:1237 msgid "" "The following code can now use ``PyType_GetModuleState(cls)`` to fetch the " "module state::" @@ -2339,7 +2332,7 @@ msgstr "" "El siguiente código ahora puede usar ``PyType_GetModuleState(cls)`` para " "obtener el estado del módulo::" -#: ../Doc/howto/clinic.rst:1246 +#: ../Doc/howto/clinic.rst:1243 msgid "" "Each method may only have one argument using this converter, and it must " "appear after ``self``, or, if ``self`` is not used, as the first argument. " @@ -2351,7 +2344,7 @@ msgstr "" "argumento. El argumento será de tipo ``PyTypeObject *``. El argumento no " "aparecerá en el ``__text_signature__``." -#: ../Doc/howto/clinic.rst:1251 +#: ../Doc/howto/clinic.rst:1248 msgid "" "The ``defining_class`` converter is not compatible with ``__init__`` and " "``__new__`` methods, which cannot use the ``METH_METHOD`` convention." @@ -2359,13 +2352,14 @@ msgstr "" "El convertidor ``definition_class`` no es compatible con los métodos " "``__init__`` y ``__new__``, que no pueden usar la convención ``METH_METHOD``." -#: ../Doc/howto/clinic.rst:1254 +#: ../Doc/howto/clinic.rst:1251 +#, fuzzy msgid "" "It is not possible to use ``defining_class`` with slot methods. In order to " -"fetch the module state from such methods, use ``_PyType_GetModuleByDef`` to " -"look up the module and then :c:func:`PyModule_GetState` to fetch the module " -"state. Example from the ``setattro`` slot method in ``Modules/_threadmodule." -"c``::" +"fetch the module state from such methods, use :c:func:" +"`PyType_GetModuleByDef` to look up the module and then :c:func:" +"`PyModule_GetState` to fetch the module state. Example from the " +"``setattro`` slot method in ``Modules/_threadmodule.c``::" msgstr "" "No es posible usar ``defining_class`` con métodos de ranura (*slot*). Para " "obtener el estado del módulo de dichos métodos, use " @@ -2373,15 +2367,15 @@ msgstr "" "`PyModule_GetState` para buscar el estado del módulo. Ejemplo del método de " "ranura ``setattro`` en ``Modules/_threadmodule.c``:" -#: ../Doc/howto/clinic.rst:1269 +#: ../Doc/howto/clinic.rst:1266 msgid "See also :pep:`573`." msgstr "Vea también :pep:`573`." -#: ../Doc/howto/clinic.rst:1273 +#: ../Doc/howto/clinic.rst:1270 msgid "Writing a custom converter" msgstr "Escribiendo un convertidor personalizado" -#: ../Doc/howto/clinic.rst:1275 +#: ../Doc/howto/clinic.rst:1272 msgid "" "As we hinted at in the previous section... you can write your own " "converters! A converter is simply a Python class that inherits from " @@ -2396,7 +2390,7 @@ msgstr "" "parámetro significa llamar a :c:func:`PyArg_ParseTuple` \"función de " "conversión\"." -#: ../Doc/howto/clinic.rst:1281 +#: ../Doc/howto/clinic.rst:1278 msgid "" "Your converter class should be named ``*something*_converter``. If the name " "follows this convention, then your converter class will be automatically " @@ -2409,7 +2403,7 @@ msgstr "" "automáticamente con Argument Clinic; su nombre será el nombre de su clase " "con el sufijo ``_converter`` eliminado. (Esto se logra con una metaclase)." -#: ../Doc/howto/clinic.rst:1287 +#: ../Doc/howto/clinic.rst:1284 msgid "" "You shouldn't subclass ``CConverter.__init__``. Instead, you should write a " "``converter_init()`` function. ``converter_init()`` always accepts a " @@ -2423,7 +2417,7 @@ msgstr "" "ser solo palabras clave. Cualquier argumento que se pase al convertidor en " "Argument Clinic se pasará a su ``converter_init()``." -#: ../Doc/howto/clinic.rst:1294 +#: ../Doc/howto/clinic.rst:1291 msgid "" "There are some additional members of ``CConverter`` you may wish to specify " "in your subclass. Here's the current list:" @@ -2431,7 +2425,7 @@ msgstr "" "Hay algunos miembros adicionales de ``CConverter`` que tal vez desee " "especificar en su subclase. Aquí está la lista actual:" -#: ../Doc/howto/clinic.rst:1298 +#: ../Doc/howto/clinic.rst:1295 msgid "" "The C type to use for this variable. ``type`` should be a Python string " "specifying the type, e.g. ``int``. If this is a pointer type, the type " @@ -2441,11 +2435,11 @@ msgstr "" "de Python que especifique el tipo, por ejemplo ``int``. Si se trata de un " "tipo de puntero, la cadena de tipo debe terminar con ``'*'``." -#: ../Doc/howto/clinic.rst:1304 +#: ../Doc/howto/clinic.rst:1301 msgid "``default``" msgstr "``default``" -#: ../Doc/howto/clinic.rst:1303 +#: ../Doc/howto/clinic.rst:1300 msgid "" "The Python default value for this parameter, as a Python value. Or the magic " "value ``unspecified`` if there is no default." @@ -2454,11 +2448,11 @@ msgstr "" "Python. O el valor mágico ``unspecified`` si no hay ningún valor " "predeterminado." -#: ../Doc/howto/clinic.rst:1309 +#: ../Doc/howto/clinic.rst:1306 msgid "``py_default``" msgstr "``py_default``" -#: ../Doc/howto/clinic.rst:1307 +#: ../Doc/howto/clinic.rst:1304 msgid "" "``default`` as it should appear in Python code, as a string. Or ``None`` if " "there is no default." @@ -2466,7 +2460,7 @@ msgstr "" "``default`` como debería aparecer en el código Python, como una cadena. O " "``None`` si no hay un valor predeterminado." -#: ../Doc/howto/clinic.rst:1312 +#: ../Doc/howto/clinic.rst:1309 msgid "" "``default`` as it should appear in C code, as a string. Or ``None`` if there " "is no default." @@ -2474,38 +2468,31 @@ msgstr "" "``default`` como debería aparecer en el código C, como una cadena de " "caracteres. O ``None`` si no hay un valor predeterminado." -#: ../Doc/howto/clinic.rst:1325 +#: ../Doc/howto/clinic.rst:1322 msgid "``c_ignored_default``" msgstr "``c_ignored_default``" -#: ../Doc/howto/clinic.rst:1317 +#: ../Doc/howto/clinic.rst:1314 msgid "" "The default value used to initialize the C variable when there is no " "default, but not specifying a default may result in an \"uninitialized " "variable\" warning. This can easily happen when using option groups—" -"although properly-written code will never actually use this value, the " +"although properly written code will never actually use this value, the " "variable does get passed in to the impl, and the C compiler will complain " "about the \"use\" of the uninitialized value. This value should always be a " "non-empty string." msgstr "" -"El valor predeterminado utilizado para inicializar la variable C cuando no " -"hay ningún valor predeterminado, pero no especificar un valor predeterminado " -"puede resultar en una advertencia de \"variable no inicializada\". Esto " -"puede suceder fácilmente cuando se utilizan grupos de opciones, aunque el " -"código escrito correctamente nunca utilizará este valor, la variable se pasa " -"al impl, y el compilador de C se quejará del \"uso\" del valor no " -"inicializado. Este valor siempre debe ser una cadena de caracteres no vacía." -#: ../Doc/howto/clinic.rst:1328 +#: ../Doc/howto/clinic.rst:1325 msgid "The name of the C converter function, as a string." msgstr "" "El nombre de la función de conversión de C, como una cadena de caracteres." -#: ../Doc/howto/clinic.rst:1333 +#: ../Doc/howto/clinic.rst:1330 msgid "``impl_by_reference``" msgstr "``impl_by_reference``" -#: ../Doc/howto/clinic.rst:1331 +#: ../Doc/howto/clinic.rst:1328 msgid "" "A boolean value. If true, Argument Clinic will add a ``&`` in front of the " "name of the variable when passing it into the impl function." @@ -2513,11 +2500,11 @@ msgstr "" "Un valor booleano. Si es verdadero, Argument Clinic agregará un ``&`` " "delante del nombre de la variable al pasarlo a la función *impl*." -#: ../Doc/howto/clinic.rst:1339 +#: ../Doc/howto/clinic.rst:1336 msgid "``parse_by_reference``" msgstr "``parse_by_reference``" -#: ../Doc/howto/clinic.rst:1336 +#: ../Doc/howto/clinic.rst:1333 msgid "" "A boolean value. If true, Argument Clinic will add a ``&`` in front of the " "name of the variable when passing it into :c:func:`PyArg_ParseTuple`." @@ -2525,7 +2512,7 @@ msgstr "" "Un valor booleano. Si es verdadero, Argument Clinic agregará un ``&`` " "delante del nombre de la variable al pasarlo a :c:func:`PyArg_ParseTuple`." -#: ../Doc/howto/clinic.rst:1341 +#: ../Doc/howto/clinic.rst:1338 msgid "" "Here's the simplest example of a custom converter, from ``Modules/zlibmodule." "c``::" @@ -2533,12 +2520,13 @@ msgstr "" "Aquí está el ejemplo más simple de un convertidor personalizado, de " "``Modules/zlibmodule.c``:" -#: ../Doc/howto/clinic.rst:1352 +#: ../Doc/howto/clinic.rst:1349 +#, fuzzy msgid "" "This block adds a converter to Argument Clinic named ``ssize_t``. " -"Parameters declared as ``ssize_t`` will be declared as type ``Py_ssize_t``, " -"and will be parsed by the ``'O&'`` format unit, which will call the " -"``ssize_t_converter`` converter function. ``ssize_t`` variables " +"Parameters declared as ``ssize_t`` will be declared as type :c:type:" +"`Py_ssize_t`, and will be parsed by the ``'O&'`` format unit, which will " +"call the ``ssize_t_converter`` converter function. ``ssize_t`` variables " "automatically support default values." msgstr "" "Este bloque agrega un convertidor a Argument Clinic llamado ``ssize_t``. Los " @@ -2547,7 +2535,7 @@ msgstr "" "llamará a la función de conversión ``ssize_t_converter``. Las variables " "``ssize_t`` admiten automáticamente los valores predeterminados." -#: ../Doc/howto/clinic.rst:1358 +#: ../Doc/howto/clinic.rst:1355 msgid "" "More sophisticated custom converters can insert custom C code to handle " "initialization and cleanup. You can see more examples of custom converters " @@ -2558,11 +2546,11 @@ msgstr "" "ejemplos de convertidores personalizados en el árbol de fuentes de CPython; " "grep los archivos C para la cadena ``CConverter``." -#: ../Doc/howto/clinic.rst:1364 +#: ../Doc/howto/clinic.rst:1361 msgid "Writing a custom return converter" msgstr "Escribiendo un convertidor de retorno personalizado" -#: ../Doc/howto/clinic.rst:1366 +#: ../Doc/howto/clinic.rst:1363 msgid "" "Writing a custom return converter is much like writing a custom converter. " "Except it's somewhat simpler, because return converters are themselves much " @@ -2572,7 +2560,7 @@ msgstr "" "un convertidor personalizado. Excepto que es algo más simple, porque los " "convertidores de retorno son en sí mismos mucho más simples." -#: ../Doc/howto/clinic.rst:1370 +#: ../Doc/howto/clinic.rst:1367 msgid "" "Return converters must subclass ``CReturnConverter``. There are no examples " "yet of custom return converters, because they are not widely used yet. If " @@ -2587,11 +2575,11 @@ msgstr "" "específicamente la implementación de ``CReturnConverter`` y todas sus " "subclases." -#: ../Doc/howto/clinic.rst:1378 +#: ../Doc/howto/clinic.rst:1375 msgid "METH_O and METH_NOARGS" msgstr "METH_O y METH_NOARGS" -#: ../Doc/howto/clinic.rst:1380 +#: ../Doc/howto/clinic.rst:1377 msgid "" "To convert a function using ``METH_O``, make sure the function's single " "argument is using the ``object`` converter, and mark the arguments as " @@ -2601,7 +2589,7 @@ msgstr "" "argumento de la función esté usando el convertidor de ``object`` y marque " "los argumentos como solo posicional:" -#: ../Doc/howto/clinic.rst:1392 +#: ../Doc/howto/clinic.rst:1389 msgid "" "To convert a function using ``METH_NOARGS``, just don't specify any " "arguments." @@ -2609,7 +2597,7 @@ msgstr "" "Para convertir una función usando ``METH_NOARGS``, simplemente no " "especifique ningún argumento." -#: ../Doc/howto/clinic.rst:1395 +#: ../Doc/howto/clinic.rst:1392 msgid "" "You can still use a self converter, a return converter, and specify a " "``type`` argument to the object converter for ``METH_O``." @@ -2617,11 +2605,11 @@ msgstr "" "Aún puede usar un autoconversor, un convertidor de retorno y especificar un " "argumento de ``tipo`` para el convertidor de objetos para ``METH_O``." -#: ../Doc/howto/clinic.rst:1399 +#: ../Doc/howto/clinic.rst:1396 msgid "tp_new and tp_init functions" msgstr "funciones tp_new y tp_init" -#: ../Doc/howto/clinic.rst:1401 +#: ../Doc/howto/clinic.rst:1398 msgid "" "You can convert ``tp_new`` and ``tp_init`` functions. Just name them " "``__new__`` or ``__init__`` as appropriate. Notes:" @@ -2629,7 +2617,7 @@ msgstr "" "Puede convertir las funciones ``tp_new`` y ``tp_init``. Simplemente " "nómbrelas ``__new__`` o ``__init__`` según corresponda. Notas:" -#: ../Doc/howto/clinic.rst:1404 +#: ../Doc/howto/clinic.rst:1401 msgid "" "The function name generated for ``__new__`` doesn't end in ``__new__`` like " "it would by default. It's just the name of the class, converted into a " @@ -2639,19 +2627,19 @@ msgstr "" "como lo haría por defecto. Es solo el nombre de la clase, convertido en un " "identificador C válido." -#: ../Doc/howto/clinic.rst:1408 +#: ../Doc/howto/clinic.rst:1405 msgid "No ``PyMethodDef`` ``#define`` is generated for these functions." msgstr "No se genera ningún ``PyMethodDef`` ``#define`` para estas funciones." -#: ../Doc/howto/clinic.rst:1410 +#: ../Doc/howto/clinic.rst:1407 msgid "``__init__`` functions return ``int``, not ``PyObject *``." msgstr "funciones ``__init__`` retornan ``int``, no ``PyObject *``." -#: ../Doc/howto/clinic.rst:1412 +#: ../Doc/howto/clinic.rst:1409 msgid "Use the docstring as the class docstring." msgstr "Utilice docstring como la clase de documentación." -#: ../Doc/howto/clinic.rst:1414 +#: ../Doc/howto/clinic.rst:1411 msgid "" "Although ``__new__`` and ``__init__`` functions must always accept both the " "``args`` and ``kwargs`` objects, when converting you may specify any " @@ -2665,11 +2653,11 @@ msgstr "" "no admite palabras clave, la función de análisis generada lanzará una " "excepción si recibe alguna)." -#: ../Doc/howto/clinic.rst:1421 +#: ../Doc/howto/clinic.rst:1418 msgid "Changing and redirecting Clinic's output" msgstr "Cambiar y redirigir la salida de Clinic" -#: ../Doc/howto/clinic.rst:1423 +#: ../Doc/howto/clinic.rst:1420 msgid "" "It can be inconvenient to have Clinic's output interspersed with your " "conventional hand-edited C code. Luckily, Clinic is configurable: you can " @@ -2683,7 +2671,7 @@ msgstr "" "escribir su salida en un archivo separado. También puede agregar un prefijo " "o sufijo a cada línea del resultado generado por Clinic." -#: ../Doc/howto/clinic.rst:1429 +#: ../Doc/howto/clinic.rst:1426 msgid "" "While changing Clinic's output in this manner can be a boon to readability, " "it may result in Clinic code using types before they are defined, or your " @@ -2705,15 +2693,15 @@ msgstr "" "nunca será necesario reorganizar su código para solucionar problemas de " "definición antes de su uso)." -#: ../Doc/howto/clinic.rst:1438 +#: ../Doc/howto/clinic.rst:1435 msgid "Let's start with defining some terminology:" msgstr "Comencemos por definir alguna terminología:" -#: ../Doc/howto/clinic.rst:1465 +#: ../Doc/howto/clinic.rst:1462 msgid "*field*" msgstr "*field*" -#: ../Doc/howto/clinic.rst:1441 +#: ../Doc/howto/clinic.rst:1438 msgid "" "A field, in this context, is a subsection of Clinic's output. For example, " "the ``#define`` for the ``PyMethodDef`` structure is a field, called " @@ -2725,7 +2713,7 @@ msgstr "" "llamado ``methoddef_define``. La clínica tiene siete campos diferentes que " "puede generar por definición de función:" -#: ../Doc/howto/clinic.rst:1456 +#: ../Doc/howto/clinic.rst:1453 msgid "" "All the names are of the form ``\"_\"``, where ``\"\"`` is the " "semantic object represented (the parsing function, the impl function, the " @@ -2733,25 +2721,25 @@ msgid "" "of statement the field is. Field names that end in ``\"_prototype\"`` " "represent forward declarations of that thing, without the actual body/data " "of the thing; field names that end in ``\"_definition\"`` represent the " -"actual definition of the thing, with the body/data of the thing. (``" -"\"methoddef\"`` is special, it's the only one that ends with ``\"_define" -"\"``, representing that it's a preprocessor #define.)" +"actual definition of the thing, with the body/data of the thing. " +"(``\"methoddef\"`` is special, it's the only one that ends with " +"``\"_define\"``, representing that it's a preprocessor #define.)" msgstr "" "Todos los nombres tienen la forma ``\"_\"``, donde ``\"\"`` es el " "objeto semántico representado (la función de análisis, la función impl, el " "docstring o la estructura methoddef) y ``\"\"`` representa qué tipo de " -"declaración es el campo. Los nombres de campo que terminan en ``\"_prototype" -"\"`` representan declaraciones hacia adelante de esa cosa, sin el cuerpo/" -"datos reales de la cosa; los nombres de campo que terminan en ``\"_definition" -"\"`` representan la definición real de la cosa, con el cuerpo/datos de la " -"cosa. (``\"methoddef\"`` es especial, es el único que termina con ``\"_define" -"\"``, lo que representa que es un preprocesador #define)." - -#: ../Doc/howto/clinic.rst:1499 +"declaración es el campo. Los nombres de campo que terminan en " +"``\"_prototype\"`` representan declaraciones hacia adelante de esa cosa, sin " +"el cuerpo/datos reales de la cosa; los nombres de campo que terminan en " +"``\"_definition\"`` representan la definición real de la cosa, con el cuerpo/" +"datos de la cosa. (``\"methoddef\"`` es especial, es el único que termina " +"con ``\"_define\"``, lo que representa que es un preprocesador #define)." + +#: ../Doc/howto/clinic.rst:1496 msgid "*destination*" msgstr "*destination*" -#: ../Doc/howto/clinic.rst:1468 +#: ../Doc/howto/clinic.rst:1465 msgid "" "A destination is a place Clinic can write output to. There are five built-" "in destinations:" @@ -2759,12 +2747,12 @@ msgstr "" "Un destino es un lugar en el que la Clínica puede escribir resultados. Hay " "cinco destinos incorporados:" -#: ../Doc/howto/clinic.rst:1473 ../Doc/howto/clinic.rst:1548 -#: ../Doc/howto/clinic.rst:1626 +#: ../Doc/howto/clinic.rst:1470 ../Doc/howto/clinic.rst:1545 +#: ../Doc/howto/clinic.rst:1623 msgid "``block``" msgstr "``block``" -#: ../Doc/howto/clinic.rst:1472 +#: ../Doc/howto/clinic.rst:1469 msgid "" "The default destination: printed in the output section of the current Clinic " "block." @@ -2772,12 +2760,12 @@ msgstr "" "El destino predeterminado: impreso en la sección de salida del bloque " "Clínico actual." -#: ../Doc/howto/clinic.rst:1479 ../Doc/howto/clinic.rst:1575 -#: ../Doc/howto/clinic.rst:1629 +#: ../Doc/howto/clinic.rst:1476 ../Doc/howto/clinic.rst:1572 +#: ../Doc/howto/clinic.rst:1626 msgid "``buffer``" msgstr "``buffer``" -#: ../Doc/howto/clinic.rst:1476 +#: ../Doc/howto/clinic.rst:1473 msgid "" "A text buffer where you can save text for later. Text sent here is appended " "to the end of any existing text. It's an error to have any text left in the " @@ -2787,12 +2775,12 @@ msgstr "" "aquí se agrega al final de cualquier texto existente. Es un error dejar " "texto en el búfer cuando Clinic termina de procesar un archivo." -#: ../Doc/howto/clinic.rst:1490 ../Doc/howto/clinic.rst:1561 -#: ../Doc/howto/clinic.rst:1655 +#: ../Doc/howto/clinic.rst:1487 ../Doc/howto/clinic.rst:1558 +#: ../Doc/howto/clinic.rst:1652 msgid "``file``" msgstr "``file``" -#: ../Doc/howto/clinic.rst:1482 +#: ../Doc/howto/clinic.rst:1479 msgid "" "A separate \"clinic file\" that will be created automatically by Clinic. The " "filename chosen for the file is ``{basename}.clinic{extension}``, where " @@ -2806,7 +2794,7 @@ msgstr "" "splitext()`` ejecutar en El archivo actual. (Ejemplo: el destino del " "``file`` para ``_pickle.c`` se escribiría en ``_pickle.clinic.c``.)" -#: ../Doc/howto/clinic.rst:1489 +#: ../Doc/howto/clinic.rst:1486 msgid "" "**Important: When using a** ``file`` **destination, you** *must check in* " "**the generated file!**" @@ -2814,12 +2802,12 @@ msgstr "" "**Importante: Al usar un destino **``file``**, *debe registrar* **el archivo " "generado!**" -#: ../Doc/howto/clinic.rst:1495 ../Doc/howto/clinic.rst:1588 -#: ../Doc/howto/clinic.rst:1659 +#: ../Doc/howto/clinic.rst:1492 ../Doc/howto/clinic.rst:1585 +#: ../Doc/howto/clinic.rst:1656 msgid "``two-pass``" msgstr "``two-pass``" -#: ../Doc/howto/clinic.rst:1493 +#: ../Doc/howto/clinic.rst:1490 msgid "" "A buffer like ``buffer``. However, a two-pass buffer can only be dumped " "once, and it prints out all text sent to it during all processing, even from " @@ -2830,24 +2818,24 @@ msgstr "" "procesamiento, incluso desde los bloques de la Clínica *después* del punto " "de descarga." -#: ../Doc/howto/clinic.rst:1499 ../Doc/howto/clinic.rst:1622 +#: ../Doc/howto/clinic.rst:1496 ../Doc/howto/clinic.rst:1619 msgid "``suppress``" msgstr "``suppress``" -#: ../Doc/howto/clinic.rst:1498 +#: ../Doc/howto/clinic.rst:1495 msgid "The text is suppressed—thrown away." msgstr "El texto se suprime --- se tira." -#: ../Doc/howto/clinic.rst:1501 +#: ../Doc/howto/clinic.rst:1498 msgid "Clinic defines five new directives that let you reconfigure its output." msgstr "" "Clinic define cinco nuevas directivas que le permiten reconfigurar su salida." -#: ../Doc/howto/clinic.rst:1503 +#: ../Doc/howto/clinic.rst:1500 msgid "The first new directive is ``dump``:" msgstr "La primera nueva directiva es ``dump``:" -#: ../Doc/howto/clinic.rst:1509 +#: ../Doc/howto/clinic.rst:1506 msgid "" "This dumps the current contents of the named destination into the output of " "the current block, and empties it. This only works with ``buffer`` and " @@ -2857,7 +2845,7 @@ msgstr "" "actual y lo vacía. Esto solo funciona con destinos de ``búfer`` y de ``dos " "pasadas``." -#: ../Doc/howto/clinic.rst:1513 +#: ../Doc/howto/clinic.rst:1510 msgid "" "The second new directive is ``output``. The most basic form of ``output`` " "is like this:" @@ -2865,7 +2853,7 @@ msgstr "" "La segunda nueva directiva es ``output``. La forma más básica de ``output`` " "es así:" -#: ../Doc/howto/clinic.rst:1520 +#: ../Doc/howto/clinic.rst:1517 msgid "" "This tells Clinic to output *field* to *destination*. ``output`` also " "supports a special meta-destination, called ``everything``, which tells " @@ -2875,11 +2863,11 @@ msgstr "" "también admite un metadestino especial, llamado ``everything``, que le dice " "a Clinic que envíe *todos* los campos a ese *destination*." -#: ../Doc/howto/clinic.rst:1524 +#: ../Doc/howto/clinic.rst:1521 msgid "``output`` has a number of other functions:" msgstr "``output`` tiene una serie de otras funciones:" -#: ../Doc/howto/clinic.rst:1533 +#: ../Doc/howto/clinic.rst:1530 msgid "" "``output push`` and ``output pop`` allow you to push and pop configurations " "on an internal configuration stack, so that you can temporarily modify the " @@ -2894,7 +2882,7 @@ msgstr "" "cambio para guardar la configuración actual, luego haga estallar cuando " "desee restaurar la configuración anterior." -#: ../Doc/howto/clinic.rst:1540 +#: ../Doc/howto/clinic.rst:1537 msgid "" "``output preset`` sets Clinic's output to one of several built-in preset " "configurations, as follows:" @@ -2902,7 +2890,7 @@ msgstr "" "``output preset`` configura la salida de Clinic en una de varias " "configuraciones preestablecidas incorporadas, de la siguiente manera:" -#: ../Doc/howto/clinic.rst:1544 +#: ../Doc/howto/clinic.rst:1541 msgid "" "Clinic's original starting configuration. Writes everything immediately " "after the input block." @@ -2910,7 +2898,7 @@ msgstr "" "Configuración inicial original de la clínica. Escribe todo inmediatamente " "después del bloque de entrada." -#: ../Doc/howto/clinic.rst:1547 +#: ../Doc/howto/clinic.rst:1544 msgid "" "Suppress the ``parser_prototype`` and ``docstring_prototype``, write " "everything else to ``block``." @@ -2918,7 +2906,7 @@ msgstr "" "Suprime el ``parser_prototype`` y ``docstring_prototype``, escribe todo lo " "demás en ``block``." -#: ../Doc/howto/clinic.rst:1551 +#: ../Doc/howto/clinic.rst:1548 msgid "" "Designed to write everything to the \"clinic file\" that it can. You then " "``#include`` this file near the top of your file. You may need to rearrange " @@ -2931,7 +2919,7 @@ msgstr "" "generalmente esto solo significa crear declaraciones hacia adelante para " "varias definiciones de ``typedef`` y ``PyTypeObject``." -#: ../Doc/howto/clinic.rst:1557 +#: ../Doc/howto/clinic.rst:1554 msgid "" "Suppress the ``parser_prototype`` and ``docstring_prototype``, write the " "``impl_definition`` to ``block``, and write everything else to ``file``." @@ -2939,12 +2927,12 @@ msgstr "" "Suprima ``parser_prototype`` y ``docstring_prototype``, escriba la " "``impl_definition`` en ``block`` y escriba todo lo demás en ``file``." -#: ../Doc/howto/clinic.rst:1561 +#: ../Doc/howto/clinic.rst:1558 msgid "The default filename is ``\"{dirname}/clinic/{basename}.h\"``." msgstr "" "El nombre de archivo predeterminado es ``\"{dirname}/clinic/{basename}.h\"``." -#: ../Doc/howto/clinic.rst:1564 +#: ../Doc/howto/clinic.rst:1561 msgid "" "Save up most of the output from Clinic, to be written into your file near " "the end. For Python files implementing modules or builtin types, it's " @@ -2961,7 +2949,7 @@ msgstr "" "que ``file``, si su archivo tiene arreglos estáticos ``PyMethodDef`` " "definidos en el medio del archivo." -#: ../Doc/howto/clinic.rst:1573 +#: ../Doc/howto/clinic.rst:1570 msgid "" "Suppress the ``parser_prototype``, ``impl_prototype``, and " "``docstring_prototype``, write the ``impl_definition`` to ``block``, and " @@ -2971,7 +2959,7 @@ msgstr "" "``docstring_prototype``, escriba ``impl_definition`` en ``block`` y escriba " "todo lo demás en ``file``." -#: ../Doc/howto/clinic.rst:1578 +#: ../Doc/howto/clinic.rst:1575 msgid "" "Similar to the ``buffer`` preset, but writes forward declarations to the " "``two-pass`` buffer, and definitions to the ``buffer``. This is similar to " @@ -2987,7 +2975,7 @@ msgstr "" "cerca del final como lo haría cuando usa el ajuste preestablecido de " "``buffer``." -#: ../Doc/howto/clinic.rst:1585 +#: ../Doc/howto/clinic.rst:1582 msgid "" "Suppresses the ``impl_prototype``, write the ``impl_definition`` to " "``block``, write ``docstring_prototype``, ``methoddef_define``, and " @@ -2997,11 +2985,11 @@ msgstr "" "escribe ``docstring_prototype``, ``methoddef_define`` y ``parser_prototype`` " "en ``two-pass``, escribe todo lo demás en ``buffer``." -#: ../Doc/howto/clinic.rst:1599 +#: ../Doc/howto/clinic.rst:1596 msgid "``partial-buffer``" msgstr "``partial-buffer``" -#: ../Doc/howto/clinic.rst:1591 +#: ../Doc/howto/clinic.rst:1588 msgid "" "Similar to the ``buffer`` preset, but writes more things to ``block``, only " "writing the really big chunks of generated code to ``buffer``. This avoids " @@ -3017,7 +3005,7 @@ msgstr "" "salida del bloque. Vierta el ``buffer`` cerca del final, tal como lo haría " "cuando usa el ajuste predeterminado de ``buffer``." -#: ../Doc/howto/clinic.rst:1598 +#: ../Doc/howto/clinic.rst:1595 msgid "" "Suppresses the ``impl_prototype``, write the ``docstring_definition`` and " "``parser_definition`` to ``buffer``, write everything else to ``block``." @@ -3025,49 +3013,49 @@ msgstr "" "Suprime el ``impl_prototype``, escribe ``docstring_definition`` y " "``parser_definition`` en ``buffer``, escribe todo lo demás en ``block``." -#: ../Doc/howto/clinic.rst:1601 +#: ../Doc/howto/clinic.rst:1598 msgid "The third new directive is ``destination``:" msgstr "La tercera nueva directiva es ``destino``:" -#: ../Doc/howto/clinic.rst:1607 +#: ../Doc/howto/clinic.rst:1604 msgid "This performs an operation on the destination named ``name``." msgstr "Esto realiza una operación en el destino llamado ``name``." -#: ../Doc/howto/clinic.rst:1609 +#: ../Doc/howto/clinic.rst:1606 msgid "There are two defined subcommands: ``new`` and ``clear``." msgstr "Hay dos subcomandos definidos: ``new`` y ``clear``." -#: ../Doc/howto/clinic.rst:1611 +#: ../Doc/howto/clinic.rst:1608 msgid "The ``new`` subcommand works like this:" msgstr "El subcomando ``new`` funciona así:" -#: ../Doc/howto/clinic.rst:1617 +#: ../Doc/howto/clinic.rst:1614 msgid "" "This creates a new destination with name ```` and type ````." msgstr "" "Esto crea un nuevo destino con el nombre ```` y escribe ````." -#: ../Doc/howto/clinic.rst:1619 +#: ../Doc/howto/clinic.rst:1616 msgid "There are five destination types:" msgstr "Hay cinco tipos de destinos:" -#: ../Doc/howto/clinic.rst:1622 +#: ../Doc/howto/clinic.rst:1619 msgid "Throws the text away." msgstr "Tira el texto." -#: ../Doc/howto/clinic.rst:1625 +#: ../Doc/howto/clinic.rst:1622 msgid "" "Writes the text to the current block. This is what Clinic originally did." msgstr "" "Escribe el texto en el bloque actual. Esto es lo que hizo Clinic " "originalmente." -#: ../Doc/howto/clinic.rst:1629 +#: ../Doc/howto/clinic.rst:1626 msgid "A simple text buffer, like the \"buffer\" builtin destination above." msgstr "" "Un búfer de texto simple, como el destino incorporado \"búfer\" anterior." -#: ../Doc/howto/clinic.rst:1632 +#: ../Doc/howto/clinic.rst:1629 msgid "" "A text file. The file destination takes an extra argument, a template to " "use for building the filename, like so:" @@ -3075,11 +3063,11 @@ msgstr "" "Un archivo de texto. El destino del archivo toma un argumento adicional, una " "plantilla para usar para construir el nombre de archivo, así:" -#: ../Doc/howto/clinic.rst:1635 +#: ../Doc/howto/clinic.rst:1632 msgid "destination new " msgstr "destino nuevo " -#: ../Doc/howto/clinic.rst:1637 +#: ../Doc/howto/clinic.rst:1634 msgid "" "The template can use three strings internally that will be replaced by bits " "of the filename:" @@ -3087,37 +3075,37 @@ msgstr "" "La plantilla puede usar tres cadenas internamente que serán reemplazadas por " "bits del nombre del archivo:" -#: ../Doc/howto/clinic.rst:1640 +#: ../Doc/howto/clinic.rst:1637 msgid "{path}" msgstr "{path}" -#: ../Doc/howto/clinic.rst:1641 +#: ../Doc/howto/clinic.rst:1638 msgid "The full path to the file, including directory and full filename." msgstr "" "La ruta completa al archivo, incluido el directorio y el nombre de archivo " "completo." -#: ../Doc/howto/clinic.rst:1642 +#: ../Doc/howto/clinic.rst:1639 msgid "{dirname}" msgstr "{dirname}" -#: ../Doc/howto/clinic.rst:1643 +#: ../Doc/howto/clinic.rst:1640 msgid "The name of the directory the file is in." msgstr "El nombre del directorio en el que se encuentra el archivo." -#: ../Doc/howto/clinic.rst:1644 +#: ../Doc/howto/clinic.rst:1641 msgid "{basename}" msgstr "{basename}" -#: ../Doc/howto/clinic.rst:1645 +#: ../Doc/howto/clinic.rst:1642 msgid "Just the name of the file, not including the directory." msgstr "Solo el nombre del archivo, sin incluir el directorio." -#: ../Doc/howto/clinic.rst:1647 +#: ../Doc/howto/clinic.rst:1644 msgid "{basename_root}" msgstr "{basename_root}" -#: ../Doc/howto/clinic.rst:1647 +#: ../Doc/howto/clinic.rst:1644 msgid "" "Basename with the extension clipped off (everything up to but not including " "the last '.')." @@ -3125,11 +3113,11 @@ msgstr "" "Nombre de base con la extensión recortada (todo hasta pero sin incluir el " "último '.')." -#: ../Doc/howto/clinic.rst:1651 +#: ../Doc/howto/clinic.rst:1648 msgid "{basename_extension}" msgstr "{basename_extension}" -#: ../Doc/howto/clinic.rst:1650 +#: ../Doc/howto/clinic.rst:1647 msgid "" "The last '.' and everything after it. If the basename does not contain a " "period, this will be the empty string." @@ -3137,7 +3125,7 @@ msgstr "" "El último '.' y todo lo que sigue. Si el nombre base no contiene un punto, " "esta será la cadena de caracteres vacía." -#: ../Doc/howto/clinic.rst:1653 +#: ../Doc/howto/clinic.rst:1650 msgid "" "If there are no periods in the filename, {basename} and {filename} are the " "same, and {extension} is empty. \"{basename}{extension}\" is always exactly " @@ -3147,17 +3135,17 @@ msgstr "" "iguales, y {extension} está vacía. \"{basename}{extension}\" es siempre " "exactamente igual que \"{filename}\". \"" -#: ../Doc/howto/clinic.rst:1658 +#: ../Doc/howto/clinic.rst:1655 msgid "A two-pass buffer, like the \"two-pass\" builtin destination above." msgstr "" "Un búfer de dos pasadas (*two-pass*), como el destino incorporado de \"dos " "pasadas\" anterior." -#: ../Doc/howto/clinic.rst:1661 +#: ../Doc/howto/clinic.rst:1658 msgid "The ``clear`` subcommand works like this:" msgstr "El subcomando ``clear`` funciona así:" -#: ../Doc/howto/clinic.rst:1667 +#: ../Doc/howto/clinic.rst:1664 msgid "" "It removes all the accumulated text up to this point in the destination. (I " "don't know what you'd need this for, but I thought maybe it'd be useful " @@ -3167,11 +3155,11 @@ msgstr "" "qué necesitarías esto, pero pensé que tal vez sería útil mientras alguien " "está experimentando)." -#: ../Doc/howto/clinic.rst:1671 +#: ../Doc/howto/clinic.rst:1668 msgid "The fourth new directive is ``set``:" msgstr "La cuarta nueva directiva está ``set``:" -#: ../Doc/howto/clinic.rst:1678 +#: ../Doc/howto/clinic.rst:1675 msgid "" "``set`` lets you set two internal variables in Clinic. ``line_prefix`` is a " "string that will be prepended to every line of Clinic's output; " @@ -3183,33 +3171,33 @@ msgstr "" "Clínica; ``line_suffix`` es una cadena de caracteres que se agregará a cada " "línea de salida de la Clínica." -#: ../Doc/howto/clinic.rst:1682 +#: ../Doc/howto/clinic.rst:1679 msgid "Both of these support two format strings:" msgstr "Ambos admiten dos cadenas de caracteres de formato:" -#: ../Doc/howto/clinic.rst:1685 +#: ../Doc/howto/clinic.rst:1682 msgid "``{block comment start}``" msgstr "``{block comment start}``" -#: ../Doc/howto/clinic.rst:1685 +#: ../Doc/howto/clinic.rst:1682 msgid "" "Turns into the string ``/*``, the start-comment text sequence for C files." msgstr "" "Se convierte en la cadena de caracteres ``/*``, la secuencia de texto de " "inicio de comentario para archivos C." -#: ../Doc/howto/clinic.rst:1688 +#: ../Doc/howto/clinic.rst:1685 msgid "``{block comment end}``" msgstr "``{block comment end}``" -#: ../Doc/howto/clinic.rst:1688 +#: ../Doc/howto/clinic.rst:1685 msgid "" "Turns into the string ``*/``, the end-comment text sequence for C files." msgstr "" "Se convierte en la cadena ``*/``, la secuencia de texto del comentario final " "para los archivos C." -#: ../Doc/howto/clinic.rst:1690 +#: ../Doc/howto/clinic.rst:1687 msgid "" "The final new directive is one you shouldn't need to use directly, called " "``preserve``:" @@ -3217,7 +3205,7 @@ msgstr "" "La nueva directiva final es una que no debería necesitar usar directamente, " "llamada ``preserve``:" -#: ../Doc/howto/clinic.rst:1697 +#: ../Doc/howto/clinic.rst:1694 msgid "" "This tells Clinic that the current contents of the output should be kept, " "unmodified. This is used internally by Clinic when dumping output into " @@ -3231,11 +3219,11 @@ msgstr "" "Clinic use su funcionalidad de suma de comprobación existente para " "garantizar que el archivo no se modificó a mano antes de sobrescribirlo." -#: ../Doc/howto/clinic.rst:1704 +#: ../Doc/howto/clinic.rst:1701 msgid "The #ifdef trick" msgstr "El truco #ifdef" -#: ../Doc/howto/clinic.rst:1706 +#: ../Doc/howto/clinic.rst:1703 msgid "" "If you're converting a function that isn't available on all platforms, " "there's a trick you can use to make life a little easier. The existing code " @@ -3245,7 +3233,7 @@ msgstr "" "plataformas, hay un truco que puede usar para hacer la vida un poco más " "fácil. El código existente probablemente se ve así:" -#: ../Doc/howto/clinic.rst:1717 +#: ../Doc/howto/clinic.rst:1714 msgid "" "And then in the ``PyMethodDef`` structure at the bottom the existing code " "will have:" @@ -3253,7 +3241,7 @@ msgstr "" "Y luego, en la estructura ``PyMethodDef`` en la parte inferior, el código " "existente tendrá:" -#: ../Doc/howto/clinic.rst:1726 +#: ../Doc/howto/clinic.rst:1723 msgid "" "In this scenario, you should enclose the body of your impl function inside " "the ``#ifdef``, like so::" @@ -3261,7 +3249,7 @@ msgstr "" "En este escenario, debe encerrar el cuerpo de su función *impl* dentro de " "``#ifdef``, así:" -#: ../Doc/howto/clinic.rst:1740 +#: ../Doc/howto/clinic.rst:1737 msgid "" "Then, remove those three lines from the ``PyMethodDef`` structure, replacing " "them with the macro Argument Clinic generated:" @@ -3269,7 +3257,7 @@ msgstr "" "Luego, elimine esas tres líneas de la estructura ``PyMethodDef``, " "reemplazándolas con la macro Argument Clinic generada:" -#: ../Doc/howto/clinic.rst:1747 +#: ../Doc/howto/clinic.rst:1744 msgid "" "(You can find the real name for this macro inside the generated code. Or you " "can calculate it yourself: it's the name of your function as defined on the " @@ -3281,7 +3269,7 @@ msgstr "" "en la primera línea de su bloque, pero con puntos cambiados a guiones bajos, " "mayúsculas y ``\"_METHODDEF\"`` agregado al final.)" -#: ../Doc/howto/clinic.rst:1752 +#: ../Doc/howto/clinic.rst:1749 msgid "" "Perhaps you're wondering: what if ``HAVE_FUNCTIONNAME`` isn't defined? The " "``MODULE_FUNCTIONNAME_METHODDEF`` macro won't be defined either!" @@ -3289,7 +3277,7 @@ msgstr "" "Quizás se esté preguntando: ¿qué pasa si ``HAVE_FUNCTIONNAME`` no está " "definido? ¡La macro ``MODULE_FUNCTIONNAME_METHODDEF`` tampoco se definirá!" -#: ../Doc/howto/clinic.rst:1755 +#: ../Doc/howto/clinic.rst:1752 msgid "" "Here's where Argument Clinic gets very clever. It actually detects that the " "Argument Clinic block might be deactivated by the ``#ifdef``. When that " @@ -3300,7 +3288,7 @@ msgstr "" "``#ifdef``. Cuando eso sucede, genera un pequeño código adicional que se ve " "así:" -#: ../Doc/howto/clinic.rst:1763 +#: ../Doc/howto/clinic.rst:1760 msgid "" "That means the macro always works. If the function is defined, this turns " "into the correct structure, including the trailing comma. If the function " @@ -3310,7 +3298,7 @@ msgstr "" "convierte en la estructura correcta, incluida la coma al final. Si la " "función no está definida, esto se convierte en nada." -#: ../Doc/howto/clinic.rst:1767 +#: ../Doc/howto/clinic.rst:1764 msgid "" "However, this causes one ticklish problem: where should Argument Clinic put " "this extra code when using the \"block\" output preset? It can't go in the " @@ -3322,7 +3310,7 @@ msgstr "" "salida \"bloque\"? No puede entrar en el bloque de salida, porque podría " "desactivarse con ``#ifdef``. (¡Ese es todo el punto!)" -#: ../Doc/howto/clinic.rst:1771 +#: ../Doc/howto/clinic.rst:1768 msgid "" "In this situation, Argument Clinic writes the extra code to the \"buffer\" " "destination. This may mean that you get a complaint from Argument Clinic:" @@ -3330,7 +3318,7 @@ msgstr "" "En esta situación, Argument Clinic escribe el código adicional en el destino " "del \"búfer\". Esto puede significar que recibe una queja de Argument Clinic:" -#: ../Doc/howto/clinic.rst:1779 +#: ../Doc/howto/clinic.rst:1776 msgid "" "When this happens, just open your file, find the ``dump buffer`` block that " "Argument Clinic added to your file (it'll be at the very bottom), then move " @@ -3341,11 +3329,11 @@ msgstr "" "inferior), luego muévalo arriba de la estructura ``PyMethodDef`` donde esa " "macro se utiliza." -#: ../Doc/howto/clinic.rst:1786 +#: ../Doc/howto/clinic.rst:1783 msgid "Using Argument Clinic in Python files" msgstr "Usando Argument Clinic en archivos Python" -#: ../Doc/howto/clinic.rst:1788 +#: ../Doc/howto/clinic.rst:1785 msgid "" "It's actually possible to use Argument Clinic to preprocess Python files. " "There's no point to using Argument Clinic blocks, of course, as the output " @@ -3358,7 +3346,7 @@ msgstr "" "usar Argument Clinic para ejecutar bloques de Python le permite usar Python " "como un preprocesador de Python!" -#: ../Doc/howto/clinic.rst:1793 +#: ../Doc/howto/clinic.rst:1790 msgid "" "Since Python comments are different from C comments, Argument Clinic blocks " "embedded in Python files look slightly different. They look like this:" @@ -3366,3 +3354,28 @@ msgstr "" "Dado que los comentarios de Python son diferentes de los comentarios de C, " "los bloques de Argument Clinic incrustados en archivos de Python tienen un " "aspecto ligeramente diferente. Se ven así:" + +#~ msgid "" +#~ "In case you're curious, this is implemented in ``from_builtin()`` in " +#~ "``Lib/inspect.py``." +#~ msgstr "" +#~ "En caso de que tenga curiosidad, esto se implementa en ``from_builtin()`` " +#~ "en ``Lib/inspect.py``." + +#~ msgid "" +#~ "The default value used to initialize the C variable when there is no " +#~ "default, but not specifying a default may result in an \"uninitialized " +#~ "variable\" warning. This can easily happen when using option groups—" +#~ "although properly-written code will never actually use this value, the " +#~ "variable does get passed in to the impl, and the C compiler will complain " +#~ "about the \"use\" of the uninitialized value. This value should always " +#~ "be a non-empty string." +#~ msgstr "" +#~ "El valor predeterminado utilizado para inicializar la variable C cuando " +#~ "no hay ningún valor predeterminado, pero no especificar un valor " +#~ "predeterminado puede resultar en una advertencia de \"variable no " +#~ "inicializada\". Esto puede suceder fácilmente cuando se utilizan grupos " +#~ "de opciones, aunque el código escrito correctamente nunca utilizará este " +#~ "valor, la variable se pasa al impl, y el compilador de C se quejará del " +#~ "\"uso\" del valor no inicializado. Este valor siempre debe ser una cadena " +#~ "de caracteres no vacía." diff --git a/howto/curses.po b/howto/curses.po index cf3ea1e38c..845f8d70fe 100644 --- a/howto/curses.po +++ b/howto/curses.po @@ -10,23 +10,23 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-05-06 11:59-0400\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2020-08-16 11:44-0500\n" "Last-Translator: Juan Diego Alfonso Ocampo \n" +"Language: es\n" "Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.8.0\n" -"X-Generator: Poedit 2.3.1\n" -"Language: es\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/howto/curses.rst:5 msgid "Curses Programming with Python" msgstr "Programación de Curses con Python" -#: ../Doc/howto/curses.rst:0 +#: ../Doc/howto/curses.rst msgid "Author" msgstr "Autor" @@ -34,7 +34,7 @@ msgstr "Autor" msgid "A.M. Kuchling, Eric S. Raymond" msgstr "A.M. Kuchling, Eric S. Raymond" -#: ../Doc/howto/curses.rst:0 +#: ../Doc/howto/curses.rst msgid "Release" msgstr "Versión" @@ -42,7 +42,6 @@ msgstr "Versión" msgid "2.04" msgstr "2.04" -#: ../Doc/howto/curses.rst:None msgid "Abstract" msgstr "Resumen" @@ -145,23 +144,14 @@ msgstr "" msgid "" "The Windows version of Python doesn't include the :mod:`curses` module. A " "ported version called `UniCurses `_ is " -"available. You could also try `the Console module `_ written by Fredrik Lundh, which doesn't use the same " -"API as curses but provides cursor-addressable text output and full support " -"for mouse and keyboard input." -msgstr "" -"La versión de Python para Windows no incluye el módulo :mod:`curses`. Una " -"versión portada llamada `UniCurses `_ " -"está disponible. También puede probar `el módulo de consola `_ escrito por *Fredrik Lundh*, que no utiliza la " -"misma API que curses pero proporciona salida de texto *direccionable* por el " -"cursor y soporte completo para entrada de mouse y teclado." - -#: ../Doc/howto/curses.rst:66 +"available." +msgstr "" + +#: ../Doc/howto/curses.rst:62 msgid "The Python curses module" msgstr "El módulo curses de Python" -#: ../Doc/howto/curses.rst:68 +#: ../Doc/howto/curses.rst:64 msgid "" "The Python module is a fairly simple wrapper over the C functions provided " "by curses; if you're already familiar with curses programming in C, it's " @@ -179,7 +169,7 @@ msgstr "" "func:`mvwaddstr` en un solo método :meth:`~curses.window.addstr`. Verá esto " "cubierto con más detalle más adelante." -#: ../Doc/howto/curses.rst:76 +#: ../Doc/howto/curses.rst:72 msgid "" "This HOWTO is an introduction to writing text-mode programs with curses and " "Python. It doesn't attempt to be a complete guide to the curses API; for " @@ -192,11 +182,11 @@ msgstr "" "las páginas del manual de C para ncurses. Sin embargo, le dará las ideas " "básicas." -#: ../Doc/howto/curses.rst:83 +#: ../Doc/howto/curses.rst:79 msgid "Starting and ending a curses application" msgstr "Iniciar y finalizar una aplicación de curses" -#: ../Doc/howto/curses.rst:85 +#: ../Doc/howto/curses.rst:81 msgid "" "Before doing anything, curses must be initialized. This is done by calling " "the :func:`~curses.initscr` function, which will determine the terminal " @@ -213,7 +203,7 @@ msgstr "" "completa; Esto generalmente se llama ``stdscr`` después del nombre de la " "variable C correspondiente. ::" -#: ../Doc/howto/curses.rst:96 +#: ../Doc/howto/curses.rst:92 msgid "" "Usually curses applications turn off automatic echoing of keys to the " "screen, in order to be able to read keys and only display them under certain " @@ -224,7 +214,7 @@ msgstr "" "ciertas circunstancias. Esto requiere llamar a la función :func:`~curses." "noecho` function. ::" -#: ../Doc/howto/curses.rst:103 +#: ../Doc/howto/curses.rst:99 msgid "" "Applications will also commonly need to react to keys instantly, without " "requiring the Enter key to be pressed; this is called cbreak mode, as " @@ -234,7 +224,7 @@ msgstr "" "sin necesidad de presionar la tecla Intro; Esto se llama modo cbreak, en " "oposición al modo de entrada almacenado en memoria intermedia habitual. ::" -#: ../Doc/howto/curses.rst:109 +#: ../Doc/howto/curses.rst:105 msgid "" "Terminals usually return special keys, such as the cursor keys or navigation " "keys such as Page Up and Home, as a multibyte escape sequence. While you " @@ -250,7 +240,7 @@ msgstr "" "retornando un valor especial como :const:`curses.KEY_LEFT`. Para obtener que " "curses haga el trabajo, deberá habilitar el modo de teclado. ::" -#: ../Doc/howto/curses.rst:118 +#: ../Doc/howto/curses.rst:114 msgid "" "Terminating a curses application is much easier than starting one. You'll " "need to call::" @@ -258,7 +248,7 @@ msgstr "" "Terminar una aplicación de curses es mucho más fácil que iniciar una. " "Tendrás que llamar a ::" -#: ../Doc/howto/curses.rst:125 +#: ../Doc/howto/curses.rst:121 msgid "" "to reverse the curses-friendly terminal settings. Then call the :func:" "`~curses.endwin` function to restore the terminal to its original operating " @@ -268,7 +258,7 @@ msgstr "" "la función :func:`~curses.endwin` para restaurar el terminal a su modo " "operativo original. ::" -#: ../Doc/howto/curses.rst:131 +#: ../Doc/howto/curses.rst:127 msgid "" "A common problem when debugging a curses application is to get your terminal " "messed up when the application dies without restoring the terminal to its " @@ -282,7 +272,7 @@ msgstr "" "genera una excepción no detectada. Las teclas ya no se repiten en la " "pantalla cuando las escribe, por ejemplo, lo que dificulta el uso del shell." -#: ../Doc/howto/curses.rst:137 +#: ../Doc/howto/curses.rst:133 msgid "" "In Python you can avoid these complications and make debugging much easier " "by importing the :func:`curses.wrapper` function and using it like this::" @@ -290,7 +280,7 @@ msgstr "" "En Python puede evitar estas complicaciones y facilitar la depuración " "importando la función :func:`curses.wrapper` y usándola así::" -#: ../Doc/howto/curses.rst:156 +#: ../Doc/howto/curses.rst:152 msgid "" "The :func:`~curses.wrapper` function takes a callable object and does the " "initializations described above, also initializing colors if color support " @@ -312,11 +302,11 @@ msgstr "" "se quedará en un estado extraño de excepción y podrá leer el mensaje de la " "excepción y el rastreo." -#: ../Doc/howto/curses.rst:168 +#: ../Doc/howto/curses.rst:164 msgid "Windows and Pads" msgstr "Ventanas y pads" -#: ../Doc/howto/curses.rst:170 +#: ../Doc/howto/curses.rst:166 msgid "" "Windows are the basic abstraction in curses. A window object represents a " "rectangular area of the screen, and supports methods to display text, erase " @@ -326,7 +316,7 @@ msgstr "" "representa un área rectangular de la pantalla y admite métodos para mostrar " "texto, borrarlo, permitir al usuario ingresar cadenas, etc." -#: ../Doc/howto/curses.rst:174 +#: ../Doc/howto/curses.rst:170 msgid "" "The ``stdscr`` object returned by the :func:`~curses.initscr` function is a " "window object that covers the entire screen. Many programs may need only " @@ -342,7 +332,7 @@ msgstr "" "borrarlas por separado. La función :func:`~curses.newwin` crea una nueva " "ventana de un tamaño dado, retornando el nuevo objeto de ventana. ::" -#: ../Doc/howto/curses.rst:185 +#: ../Doc/howto/curses.rst:181 msgid "" "Note that the coordinate system used in curses is unusual. Coordinates are " "always passed in the order *y,x*, and the top-left corner of a window is " @@ -359,7 +349,7 @@ msgstr "" "aplicaciones informáticas, pero ha sido parte de curses desde que se " "escribió por primera vez, y ahora es demasiado tarde para cambiar las cosas." -#: ../Doc/howto/curses.rst:193 +#: ../Doc/howto/curses.rst:189 msgid "" "Your application can determine the size of the screen by using the :data:" "`curses.LINES` and :data:`curses.COLS` variables to obtain the *y* and *x* " @@ -371,7 +361,7 @@ msgstr "" "tamaños *y* y *x*. Las coordenadas legales se extenderán de ``(0,0)`` a " "``(curses.LINES - 1, curses.COLS - 1)``." -#: ../Doc/howto/curses.rst:198 +#: ../Doc/howto/curses.rst:194 msgid "" "When you call a method to display or erase text, the effect doesn't " "immediately show up on the display. Instead you must call the :meth:" @@ -382,7 +372,7 @@ msgstr "" "`~curses.window.refresh` de los objetos de ventana para actualizar la " "pantalla." -#: ../Doc/howto/curses.rst:203 +#: ../Doc/howto/curses.rst:199 msgid "" "This is because curses was originally written with slow 300-baud terminal " "connections in mind; with these terminals, minimizing the time required to " @@ -400,7 +390,7 @@ msgstr "" "programa muestra algo de texto en una ventana y luego borra la ventana, no " "hay necesidad de enviar el texto original porque nunca son visibles." -#: ../Doc/howto/curses.rst:212 +#: ../Doc/howto/curses.rst:208 msgid "" "In practice, explicitly telling curses to redraw a window doesn't really " "complicate programming with curses much. Most programs go into a flurry of " @@ -418,7 +408,7 @@ msgstr "" "llamando primero a ``stdscr.refresh()`` o al método :meth:`refresh` de " "alguna otra ventana relevante." -#: ../Doc/howto/curses.rst:220 +#: ../Doc/howto/curses.rst:216 msgid "" "A pad is a special case of a window; it can be larger than the actual " "display screen, and only a portion of the pad displayed at a time. Creating " @@ -432,7 +422,7 @@ msgstr "" "que la actualización de un pad requiere dar las coordenadas del área en " "pantalla donde se mostrará una subsección del pad. ::" -#: ../Doc/howto/curses.rst:241 +#: ../Doc/howto/curses.rst:237 msgid "" "The :meth:`refresh` call displays a section of the pad in the rectangle " "extending from coordinate (5,5) to coordinate (20,75) on the screen; the " @@ -446,7 +436,7 @@ msgstr "" "coordenada (0,0) en el pad. Más allá de esa diferencia, los pads son " "exactamente como las ventanas normales y admiten los mismos métodos." -#: ../Doc/howto/curses.rst:247 +#: ../Doc/howto/curses.rst:243 msgid "" "If you have multiple windows and pads on screen there is a more efficient " "way to update the screen and prevent annoying screen flicker as each part of " @@ -457,7 +447,7 @@ msgstr "" "pantalla a medida que se actualiza cada parte de la pantalla. :meth:" "`refresh` en realidad hace dos cosas:" -#: ../Doc/howto/curses.rst:252 +#: ../Doc/howto/curses.rst:248 msgid "" "Calls the :meth:`~curses.window.noutrefresh` method of each window to update " "an underlying data structure representing the desired state of the screen." @@ -466,7 +456,7 @@ msgstr "" "actualizar una estructura de datos subyacente que representa el estado " "deseado de la pantalla." -#: ../Doc/howto/curses.rst:255 +#: ../Doc/howto/curses.rst:251 msgid "" "Calls the function :func:`~curses.doupdate` function to change the physical " "screen to match the desired state recorded in the data structure." @@ -474,7 +464,7 @@ msgstr "" "Llama a la función :func:`~curses.doupdate` para cambiar la pantalla física " "para que coincida con el estado deseado registrado en la estructura de datos." -#: ../Doc/howto/curses.rst:258 +#: ../Doc/howto/curses.rst:254 msgid "" "Instead you can call :meth:`noutrefresh` on a number of windows to update " "the data structure, and then call :func:`doupdate` to update the screen." @@ -483,11 +473,11 @@ msgstr "" "actualizar la estructura de datos, y luego llamar a :func:`doupdate` para " "actualizar la pantalla." -#: ../Doc/howto/curses.rst:264 +#: ../Doc/howto/curses.rst:260 msgid "Displaying Text" msgstr "Mostrando el texto" -#: ../Doc/howto/curses.rst:266 +#: ../Doc/howto/curses.rst:262 msgid "" "From a C programmer's point of view, curses may sometimes look like a twisty " "maze of functions, all subtly different. For example, :c:func:`addstr` " @@ -506,7 +496,7 @@ msgstr "" "usar en lugar de usar ``stdscr`` por defecto. :c:func:`mvwaddstr` permite " "especificar tanto una ventana como una coordenada." -#: ../Doc/howto/curses.rst:275 +#: ../Doc/howto/curses.rst:271 msgid "" "Fortunately the Python interface hides all these details. ``stdscr`` is a " "window object like any other, and methods such as :meth:`~curses.window." @@ -518,27 +508,27 @@ msgstr "" "`~curses.window.addstr` aceptan múltiples formas de argumento. Por lo " "general, hay cuatro formas diferentes." -#: ../Doc/howto/curses.rst:281 +#: ../Doc/howto/curses.rst:277 msgid "Form" msgstr "Formas" -#: ../Doc/howto/curses.rst:281 ../Doc/howto/curses.rst:350 +#: ../Doc/howto/curses.rst:277 ../Doc/howto/curses.rst:345 msgid "Description" msgstr "Descripción" -#: ../Doc/howto/curses.rst:283 +#: ../Doc/howto/curses.rst:279 msgid "*str* or *ch*" msgstr "*str* o *ch*" -#: ../Doc/howto/curses.rst:283 +#: ../Doc/howto/curses.rst:279 msgid "Display the string *str* or character *ch* at the current position" msgstr "Mostrar la cadena *str* o el carácter *ch* en la posición actual" -#: ../Doc/howto/curses.rst:286 +#: ../Doc/howto/curses.rst:282 msgid "*str* or *ch*, *attr*" msgstr "*str* o *ch*, *attr*" -#: ../Doc/howto/curses.rst:286 +#: ../Doc/howto/curses.rst:282 msgid "" "Display the string *str* or character *ch*, using attribute *attr* at the " "current position" @@ -546,20 +536,20 @@ msgstr "" "Muestra la cadena *str* o el carácter *ch*, utilizando el atributo *attr* en " "la posición actual" -#: ../Doc/howto/curses.rst:290 +#: ../Doc/howto/curses.rst:286 msgid "*y*, *x*, *str* or *ch*" msgstr "*y*, *x*, *str* o *ch*" -#: ../Doc/howto/curses.rst:290 +#: ../Doc/howto/curses.rst:286 msgid "Move to position *y,x* within the window, and display *str* or *ch*" msgstr "" "Moverse a la posición *y,x* dentro de la ventana, y mostrar *st* o *ch*" -#: ../Doc/howto/curses.rst:293 +#: ../Doc/howto/curses.rst:289 msgid "*y*, *x*, *str* or *ch*, *attr*" msgstr "*y*, *x*, *str* o *ch*, *attr*" -#: ../Doc/howto/curses.rst:293 +#: ../Doc/howto/curses.rst:289 msgid "" "Move to position *y,x* within the window, and display *str* or *ch*, using " "attribute *attr*" @@ -567,7 +557,7 @@ msgstr "" "Muévase a la posición *y, x* dentro de la ventana y muestre *str* o *ch*, " "usando el atributo *attr*" -#: ../Doc/howto/curses.rst:297 +#: ../Doc/howto/curses.rst:293 msgid "" "Attributes allow displaying text in highlighted forms such as boldface, " "underline, reverse code, or in color. They'll be explained in more detail " @@ -577,13 +567,14 @@ msgstr "" "subrayado, código inverso o en color. Se explicarán con más detalle en la " "siguiente subsección." -#: ../Doc/howto/curses.rst:302 +#: ../Doc/howto/curses.rst:298 +#, fuzzy msgid "" "The :meth:`~curses.window.addstr` method takes a Python string or bytestring " "as the value to be displayed. The contents of bytestrings are sent to the " "terminal as-is. Strings are encoded to bytes using the value of the " "window's :attr:`encoding` attribute; this defaults to the default system " -"encoding as returned by :func:`locale.getpreferredencoding`." +"encoding as returned by :func:`locale.getencoding`." msgstr "" "El método :meth:`~curses.window.addstr` toma una cadena de Python o una " "cadena de bytes como el valor que se mostrará. El contenido de las cadenas " @@ -592,7 +583,7 @@ msgstr "" "se establece de manera predeterminada en la codificación predeterminada del " "sistema que retorna :func:`locale.getpreferredencoding`." -#: ../Doc/howto/curses.rst:309 +#: ../Doc/howto/curses.rst:304 msgid "" "The :meth:`~curses.window.addch` methods take a character, which can be " "either a string of length 1, a bytestring of length 1, or an integer." @@ -600,7 +591,7 @@ msgstr "" "Los métodos :meth:`~curses.window.addch` toman un carácter, que puede ser " "una cadena de longitud 1, una cadena de bytes de longitud 1 o un entero." -#: ../Doc/howto/curses.rst:312 +#: ../Doc/howto/curses.rst:307 msgid "" "Constants are provided for extension characters; these constants are " "integers greater than 255. For example, :const:`ACS_PLMINUS` is a +/- " @@ -613,7 +604,7 @@ msgstr "" "un cuadro (útil para dibujar bordes). También puede usar el carácter Unicode " "apropiado." -#: ../Doc/howto/curses.rst:318 +#: ../Doc/howto/curses.rst:313 msgid "" "Windows remember where the cursor was left after the last operation, so if " "you leave out the *y,x* coordinates, the string or character will be " @@ -631,7 +622,7 @@ msgstr "" "cursor esté ubicado en algún lugar donde no distraiga; Puede ser confuso " "tener el cursor parpadeando en alguna ubicación aparentemente aleatoria." -#: ../Doc/howto/curses.rst:326 +#: ../Doc/howto/curses.rst:321 msgid "" "If your application doesn't need a blinking cursor at all, you can call " "``curs_set(False)`` to make it invisible. For compatibility with older " @@ -647,11 +638,11 @@ msgstr "" "biblioteca curses intentará suprimir el cursor parpadeante, y no tendrá que " "preocuparse por dejarlo en ubicaciones extrañas." -#: ../Doc/howto/curses.rst:335 +#: ../Doc/howto/curses.rst:330 msgid "Attributes and Color" msgstr "Atributos y color" -#: ../Doc/howto/curses.rst:337 +#: ../Doc/howto/curses.rst:332 msgid "" "Characters can be displayed in different ways. Status lines in a text-based " "application are commonly shown in reverse video, or a text viewer may need " @@ -663,7 +654,7 @@ msgstr "" "un visor de texto puede necesitar resaltar ciertas palabras. curses admite " "esto al permitirle especificar un atributo para cada celda en la pantalla." -#: ../Doc/howto/curses.rst:342 +#: ../Doc/howto/curses.rst:337 msgid "" "An attribute is an integer, each bit representing a different attribute. " "You can try to display text with multiple attribute bits set, but curses " @@ -679,59 +670,59 @@ msgstr "" "terminal que se utilice, por lo que es más seguro apegarse a los atributos " "más comúnmente disponibles, enumerados aquí." -#: ../Doc/howto/curses.rst:350 +#: ../Doc/howto/curses.rst:345 msgid "Attribute" msgstr "Atributo" -#: ../Doc/howto/curses.rst:352 +#: ../Doc/howto/curses.rst:347 msgid ":const:`A_BLINK`" msgstr ":const:`A_BLINK`" -#: ../Doc/howto/curses.rst:352 +#: ../Doc/howto/curses.rst:347 msgid "Blinking text" msgstr "Texto parpadeante" -#: ../Doc/howto/curses.rst:354 +#: ../Doc/howto/curses.rst:349 msgid ":const:`A_BOLD`" msgstr ":const:`A_BOLD`" -#: ../Doc/howto/curses.rst:354 +#: ../Doc/howto/curses.rst:349 msgid "Extra bright or bold text" msgstr "Texto extra brillante o en negrita" -#: ../Doc/howto/curses.rst:356 +#: ../Doc/howto/curses.rst:351 msgid ":const:`A_DIM`" msgstr ":const:`A_DIM`" -#: ../Doc/howto/curses.rst:356 +#: ../Doc/howto/curses.rst:351 msgid "Half bright text" msgstr "Texto medio brillante" -#: ../Doc/howto/curses.rst:358 +#: ../Doc/howto/curses.rst:353 msgid ":const:`A_REVERSE`" msgstr ":const:`A_REVERSE`" -#: ../Doc/howto/curses.rst:358 +#: ../Doc/howto/curses.rst:353 msgid "Reverse-video text" msgstr "Texto de video inverso" -#: ../Doc/howto/curses.rst:360 +#: ../Doc/howto/curses.rst:355 msgid ":const:`A_STANDOUT`" msgstr ":const:`A_STANDOUT`" -#: ../Doc/howto/curses.rst:360 +#: ../Doc/howto/curses.rst:355 msgid "The best highlighting mode available" msgstr "El mejor modo de resaltado disponible" -#: ../Doc/howto/curses.rst:362 +#: ../Doc/howto/curses.rst:357 msgid ":const:`A_UNDERLINE`" msgstr ":const:`A_UNDERLINE`" -#: ../Doc/howto/curses.rst:362 +#: ../Doc/howto/curses.rst:357 msgid "Underlined text" msgstr "Texto subrayado" -#: ../Doc/howto/curses.rst:365 +#: ../Doc/howto/curses.rst:360 msgid "" "So, to display a reverse-video status line on the top line of the screen, " "you could code::" @@ -739,7 +730,7 @@ msgstr "" "Entonces, para mostrar una línea de estado de video inverso en la línea " "superior de la pantalla, puede codificar::" -#: ../Doc/howto/curses.rst:372 +#: ../Doc/howto/curses.rst:367 msgid "" "The curses library also supports color on those terminals that provide it. " "The most common such terminal is probably the Linux console, followed by " @@ -749,7 +740,7 @@ msgstr "" "proporcionen. El terminal más común es probablemente la consola de Linux, " "seguido de *xterms* en color." -#: ../Doc/howto/curses.rst:376 +#: ../Doc/howto/curses.rst:371 msgid "" "To use color, you must call the :func:`~curses.start_color` function soon " "after calling :func:`~curses.initscr`, to initialize the default color set " @@ -770,7 +761,7 @@ msgstr "" "británica, tendrá que resignarse a escribir mal por el bien de estas " "funciones. )" -#: ../Doc/howto/curses.rst:386 +#: ../Doc/howto/curses.rst:381 msgid "" "The curses library maintains a finite number of color pairs, containing a " "foreground (or text) color and a background color. You can get the " @@ -786,12 +777,12 @@ msgstr "" "otros atributos como :const:`A_REVERSE`, pero nuevamente, no se garantiza " "que tales combinaciones funcionen en todos los terminales." -#: ../Doc/howto/curses.rst:393 +#: ../Doc/howto/curses.rst:388 msgid "An example, which displays a line of text using color pair 1::" msgstr "" "Un ejemplo, que muestra una línea de texto usando el par de colores 1 ::" -#: ../Doc/howto/curses.rst:398 +#: ../Doc/howto/curses.rst:393 msgid "" "As I said before, a color pair consists of a foreground and background " "color. The ``init_pair(n, f, b)`` function changes the definition of color " @@ -803,7 +794,7 @@ msgstr "" "colores *n*, a color de primer plano f y color de fondo b. El par de colores " "0 está cableado a blanco sobre negro, y no se puede cambiar." -#: ../Doc/howto/curses.rst:403 +#: ../Doc/howto/curses.rst:398 msgid "" "Colors are numbered, and :func:`start_color` initializes 8 basic colors when " "it activates color mode. They are: 0:black, 1:red, 2:green, 3:yellow, 4:" @@ -817,7 +808,7 @@ msgstr "" "define constantes con nombre para cada uno de estos colores: :const:`curses." "COLOR_BLACK`, :const:`curses.COLOR_RED`, y así sucesivamente." -#: ../Doc/howto/curses.rst:409 +#: ../Doc/howto/curses.rst:404 msgid "" "Let's put all this together. To change color 1 to red text on a white " "background, you would call::" @@ -825,7 +816,7 @@ msgstr "" "Pongamos todo esto juntos. Para cambiar el color 1 al texto rojo sobre un " "fondo blanco, debe llamar a::" -#: ../Doc/howto/curses.rst:414 +#: ../Doc/howto/curses.rst:409 msgid "" "When you change a color pair, any text already displayed using that color " "pair will change to the new colors. You can also display new text in this " @@ -835,7 +826,7 @@ msgstr "" "ese par de colores cambiará a los nuevos colores. También puede mostrar " "texto nuevo en este color con::" -#: ../Doc/howto/curses.rst:420 +#: ../Doc/howto/curses.rst:415 msgid "" "Very fancy terminals can change the definitions of the actual colors to a " "given RGB value. This lets you change color 1, which is usually red, to " @@ -856,11 +847,11 @@ msgstr "" "un terminal tan talentoso, consulte las páginas de manual de su sistema para " "obtener más información." -#: ../Doc/howto/curses.rst:431 +#: ../Doc/howto/curses.rst:426 msgid "User Input" msgstr "*Input* del usuario" -#: ../Doc/howto/curses.rst:433 +#: ../Doc/howto/curses.rst:428 msgid "" "The C curses library offers only very simple input mechanisms. Python's :mod:" "`curses` module adds a basic text-input widget. (Other libraries such as " @@ -872,11 +863,11 @@ msgstr "" "(Otras bibliotecas como `Urwid `_ tienen " "colecciones más extensas de widgets)." -#: ../Doc/howto/curses.rst:438 +#: ../Doc/howto/curses.rst:433 msgid "There are two methods for getting input from a window:" msgstr "Hay dos métodos para obtener información desde una ventana:" -#: ../Doc/howto/curses.rst:440 +#: ../Doc/howto/curses.rst:435 msgid "" ":meth:`~curses.window.getch` refreshes the screen and then waits for the " "user to hit a key, displaying the key if :func:`~curses.echo` has been " @@ -888,7 +879,7 @@ msgstr "" "sido llamado anteriormente. Opcionalmente, puede especificar una coordenada " "a la que se debe mover el cursor antes de pausar." -#: ../Doc/howto/curses.rst:445 +#: ../Doc/howto/curses.rst:440 msgid "" ":meth:`~curses.window.getkey` does the same thing but converts the integer " "to a string. Individual characters are returned as 1-character strings, and " @@ -900,7 +891,7 @@ msgstr "" "y las teclas especiales como las teclas de función retornan cadenas más " "largas que contienen un nombre de tecla como ``KEY_UP`` o ``^ G``." -#: ../Doc/howto/curses.rst:450 +#: ../Doc/howto/curses.rst:445 msgid "" "It's possible to not wait for the user using the :meth:`~curses.window." "nodelay` window method. After ``nodelay(True)``, :meth:`getch` and :meth:" @@ -920,7 +911,7 @@ msgstr "" "cada :meth:`getch`; Si no hay entrada disponible dentro de un retraso " "especificado (medido en décimas de segundo), curses generan una excepción." -#: ../Doc/howto/curses.rst:460 +#: ../Doc/howto/curses.rst:455 msgid "" "The :meth:`getch` method returns an integer; if it's between 0 and 255, it " "represents the ASCII code of the key pressed. Values greater than 255 are " @@ -936,7 +927,7 @@ msgstr "" "const:`curses.KEY_HOME`, o :const:`curses.KEY_LEFT`. El bucle principal de " "su programa puede verse así::" -#: ../Doc/howto/curses.rst:476 +#: ../Doc/howto/curses.rst:471 msgid "" "The :mod:`curses.ascii` module supplies ASCII class membership functions " "that take either integer or 1-character string arguments; these may be " @@ -952,7 +943,7 @@ msgstr "" "de 1 carácter y retornen el mismo tipo. Por ejemplo, :func:`curses.ascii." "ctrl` retorna el carácter de control correspondiente a su argumento." -#: ../Doc/howto/curses.rst:483 +#: ../Doc/howto/curses.rst:478 msgid "" "There's also a method to retrieve an entire string, :meth:`~curses.window." "getstr`. It isn't used very often, because its functionality is quite " @@ -966,7 +957,7 @@ msgstr "" "retroceso y la tecla Intro, que termina la cadena. Opcionalmente, puede " "limitarse a un número fijo de caracteres. ::" -#: ../Doc/howto/curses.rst:494 +#: ../Doc/howto/curses.rst:489 msgid "" "The :mod:`curses.textpad` module supplies a text box that supports an Emacs-" "like set of keybindings. Various methods of the :class:`~curses.textpad." @@ -978,18 +969,18 @@ msgstr "" "textpad.Textbox` admiten la edición con validación de entrada y recopilan " "los resultados de edición con o sin espacios finales. Aquí hay un ejemplo::" -#: ../Doc/howto/curses.rst:518 +#: ../Doc/howto/curses.rst:513 msgid "" "See the library documentation on :mod:`curses.textpad` for more details." msgstr "" "Consulte la documentación de la biblioteca sobre :mod:`curses.textpad` para " "más detalles." -#: ../Doc/howto/curses.rst:522 +#: ../Doc/howto/curses.rst:517 msgid "For More Information" msgstr "Para más información" -#: ../Doc/howto/curses.rst:524 +#: ../Doc/howto/curses.rst:519 msgid "" "This HOWTO doesn't cover some advanced topics, such as reading the contents " "of the screen or capturing mouse events from an xterm instance, but the " @@ -1001,7 +992,7 @@ msgstr "" "página de la biblioteca de Python para el módulo :mod:`curses` ahora está " "razonablemente completa. Deberías buscarlo posteriormente." -#: ../Doc/howto/curses.rst:529 +#: ../Doc/howto/curses.rst:524 msgid "" "If you're in doubt about the detailed behavior of the curses functions, " "consult the manual pages for your curses implementation, whether it's " @@ -1016,7 +1007,7 @@ msgstr "" "todas las funciones, atributos y caracteres :const:`ACS_\\*` disponibles " "para usted." -#: ../Doc/howto/curses.rst:536 +#: ../Doc/howto/curses.rst:531 msgid "" "Because the curses API is so large, some functions aren't supported in the " "Python interface. Often this isn't because they're difficult to implement, " @@ -1033,28 +1024,30 @@ msgstr "" "Guía del desarrollador de Python `_ para " "obtener más información sobre cómo enviar parches a Python." -#: ../Doc/howto/curses.rst:544 +#: ../Doc/howto/curses.rst:539 +#, fuzzy msgid "" -"`Writing Programs with NCURSES `_: a lengthy tutorial for C programmers." msgstr "" "`Escribir programas con NCURSES `_: un extenso tutoría para programadores de C." -#: ../Doc/howto/curses.rst:546 +#: ../Doc/howto/curses.rst:541 msgid "`The ncurses man page `_" msgstr "" "`La página web con el manual de ncurses `_" -#: ../Doc/howto/curses.rst:547 +#: ../Doc/howto/curses.rst:542 +#, fuzzy msgid "" -"`The ncurses FAQ `_" +"`The ncurses FAQ `_" msgstr "" "`Preguntas y respuestas frecuentes de ncurses `_" -#: ../Doc/howto/curses.rst:548 +#: ../Doc/howto/curses.rst:543 msgid "" "`\"Use curses... don't swear\" `_: video of a PyCon 2013 talk on controlling terminals using " @@ -1064,12 +1057,29 @@ msgstr "" "v=eN1eZtjLEnU>`_: video de una charla de PyCon 2013 sobre el control de " "terminales usando curses o Urwid." -#: ../Doc/howto/curses.rst:550 +#: ../Doc/howto/curses.rst:545 +#, fuzzy msgid "" -"`\"Console Applications with Urwid\" `_: video of a PyCon CA 2012 talk " -"demonstrating some applications written using Urwid." +"`\"Console Applications with Urwid\" `_: video of a PyCon CA 2012 talk demonstrating some " +"applications written using Urwid." msgstr "" "`\"Console Applications with Urwid\" `_: video de una charla de PyCon CA 2012 que " "muestra algunas aplicaciones escritas con Urwid." + +#~ msgid "" +#~ "The Windows version of Python doesn't include the :mod:`curses` module. " +#~ "A ported version called `UniCurses `_ " +#~ "is available. You could also try `the Console module `_ written by Fredrik Lundh, which doesn't use the " +#~ "same API as curses but provides cursor-addressable text output and full " +#~ "support for mouse and keyboard input." +#~ msgstr "" +#~ "La versión de Python para Windows no incluye el módulo :mod:`curses`. Una " +#~ "versión portada llamada `UniCurses `_ " +#~ "está disponible. También puede probar `el módulo de consola `_ escrito por *Fredrik Lundh*, que no " +#~ "utiliza la misma API que curses pero proporciona salida de texto " +#~ "*direccionable* por el cursor y soporte completo para entrada de mouse y " +#~ "teclado." diff --git a/howto/descriptor.po b/howto/descriptor.po index c562dbf7ab..41aea16ecb 100644 --- a/howto/descriptor.po +++ b/howto/descriptor.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-10-30 00:13+0800\n" "Last-Translator: Rodrigo Tobar \n" "Language: es\n" @@ -19,8 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/howto/descriptor.rst:5 msgid "Descriptor HowTo Guide" @@ -453,8 +452,9 @@ msgid "" msgstr "" ":class:`String` verifica que un valor es un :class:`str`. Opcionalmente " "valida que tenga un largo mínimo o máximo. Puede también validar un " -"`predicado `_ definido por el usuario." +"`predicado `_ definido por el " +"usuario." #: ../Doc/howto/descriptor.rst:437 msgid "Practical application" @@ -692,40 +692,26 @@ msgstr "" "La lógica para una búsqueda con puntos se encuentra en :meth:`object." "__getattribute__`. Acá hay un equivalente en Python puro:" -#: ../Doc/howto/descriptor.rst:700 +#: ../Doc/howto/descriptor.rst:719 msgid "" -"Interestingly, attribute lookup doesn't call :meth:`object.__getattribute__` " -"directly. Instead, both the dot operator and the :func:`getattr` function " -"perform attribute lookup by way of a helper function:" +"Note, there is no :meth:`__getattr__` hook in the :meth:`__getattribute__` " +"code. That is why calling :meth:`__getattribute__` directly or with " +"``super().__getattribute__`` will bypass :meth:`__getattr__` entirely." msgstr "" -"Es Interesante que la búsqueda de atributos no llama directamente a :meth:" -"`object.__getattribute__`. En cambio, tanto el operador punto como la " -"función :func:`getattr` realizan la búsqueda de atributos a través de una " -"función auxiliar:" -#: ../Doc/howto/descriptor.rst:747 +#: ../Doc/howto/descriptor.rst:723 msgid "" -"So if :meth:`__getattr__` exists, it is called whenever :meth:" -"`__getattribute__` raises :exc:`AttributeError` (either directly or in one " -"of the descriptor calls)." +"Instead, it is the dot operator and the :func:`getattr` function that are " +"responsible for invoking :meth:`__getattr__` whenever :meth:" +"`__getattribute__` raises an :exc:`AttributeError`. Their logic is " +"encapsulated in a helper function:" msgstr "" -"De tal modo, si :meth:`__getattr__` existe, es llamada cada vez que :meth:" -"`__getattribute__` lanza :exc:`AttributeError` (ya sea directamente o en una " -"de las llamadas a un descriptor)." -#: ../Doc/howto/descriptor.rst:750 -msgid "" -"Also, if a user calls :meth:`object.__getattribute__` directly, the :meth:" -"`__getattr__` hook is bypassed entirely." -msgstr "" -"Además, si un usuario llama directamente a :meth:`object.__getattribute__`, " -"el gancho en :meth:`__getattr__` es totalmente evitado." - -#: ../Doc/howto/descriptor.rst:755 +#: ../Doc/howto/descriptor.rst:773 msgid "Invocation from a class" msgstr "Invocación desde una clase" -#: ../Doc/howto/descriptor.rst:757 +#: ../Doc/howto/descriptor.rst:775 msgid "" "The logic for a dotted lookup such as ``A.x`` is in :meth:`type." "__getattribute__`. The steps are similar to those for :meth:`object." @@ -738,12 +724,12 @@ msgstr "" "reemplaza por una búsqueda a través del :term:`orden de resolución de " "métodos ` de la clase." -#: ../Doc/howto/descriptor.rst:762 +#: ../Doc/howto/descriptor.rst:780 msgid "If a descriptor is found, it is invoked with ``desc.__get__(None, A)``." msgstr "" "Si se encuentra un descriptor, se invoca con ``desc.__get__(None, A)``." -#: ../Doc/howto/descriptor.rst:764 +#: ../Doc/howto/descriptor.rst:782 msgid "" "The full C implementation can be found in :c:func:`type_getattro()` and :c:" "func:`_PyType_Lookup()` in :source:`Objects/typeobject.c`." @@ -752,11 +738,11 @@ msgstr "" "`type_getattro()` y :c:func:`_PyType_Lookup()` en :source:`Objects/" "typeobject.c`." -#: ../Doc/howto/descriptor.rst:769 +#: ../Doc/howto/descriptor.rst:787 msgid "Invocation from super" msgstr "Invocación desde super" -#: ../Doc/howto/descriptor.rst:771 +#: ../Doc/howto/descriptor.rst:789 msgid "" "The logic for super's dotted lookup is in the :meth:`__getattribute__` " "method for object returned by :class:`super()`." @@ -764,7 +750,7 @@ msgstr "" "La lógica de la búsqueda con puntos para super está en el método :meth:" "`__getattribute__` para el objeto retornado por :class:`super()`." -#: ../Doc/howto/descriptor.rst:774 +#: ../Doc/howto/descriptor.rst:792 msgid "" "A dotted lookup such as ``super(A, obj).m`` searches ``obj.__class__." "__mro__`` for the base class ``B`` immediately following ``A`` and then " @@ -776,7 +762,7 @@ msgstr "" "retorna ``B.__dict__['m'].__get__(obj, A)``. Si no es un descriptor, ``m`` " "se retorna sin cambiar." -#: ../Doc/howto/descriptor.rst:779 +#: ../Doc/howto/descriptor.rst:797 msgid "" "The full C implementation can be found in :c:func:`super_getattro()` in :" "source:`Objects/typeobject.c`. A pure Python equivalent can be found in " @@ -788,11 +774,11 @@ msgstr "" "Python puro se puede encontrar en el `Guido's Tutorial `_." -#: ../Doc/howto/descriptor.rst:786 +#: ../Doc/howto/descriptor.rst:804 msgid "Summary of invocation logic" msgstr "Resumen de la lógica de invocación" -#: ../Doc/howto/descriptor.rst:788 +#: ../Doc/howto/descriptor.rst:806 msgid "" "The mechanism for descriptors is embedded in the :meth:`__getattribute__()` " "methods for :class:`object`, :class:`type`, and :func:`super`." @@ -800,15 +786,15 @@ msgstr "" "El mecanismo de descriptores está embebido en los métodos :meth:" "`__getattribute__()` de :class:`object`, :class:`type`, y :func:`super`." -#: ../Doc/howto/descriptor.rst:791 +#: ../Doc/howto/descriptor.rst:809 msgid "The important points to remember are:" msgstr "Los puntos importantes a recordar son:" -#: ../Doc/howto/descriptor.rst:793 +#: ../Doc/howto/descriptor.rst:811 msgid "Descriptors are invoked by the :meth:`__getattribute__` method." msgstr "Los descriptores son invocados por el método :meth:`__getattribute__`." -#: ../Doc/howto/descriptor.rst:795 +#: ../Doc/howto/descriptor.rst:813 msgid "" "Classes inherit this machinery from :class:`object`, :class:`type`, or :func:" "`super`." @@ -816,7 +802,7 @@ msgstr "" "Las clases heredan esta maquinaria desde :class:`object`, :class:`type`, o :" "func:`super`." -#: ../Doc/howto/descriptor.rst:798 +#: ../Doc/howto/descriptor.rst:816 msgid "" "Overriding :meth:`__getattribute__` prevents automatic descriptor calls " "because all the descriptor logic is in that method." @@ -824,7 +810,7 @@ msgstr "" "Redefinir :meth:`__getattribute__` previene las llamadas automáticas a " "descriptores porque toda la lógica de descriptores está en ese método." -#: ../Doc/howto/descriptor.rst:801 +#: ../Doc/howto/descriptor.rst:819 msgid "" ":meth:`object.__getattribute__` and :meth:`type.__getattribute__` make " "different calls to :meth:`__get__`. The first includes the instance and may " @@ -836,22 +822,22 @@ msgstr "" "puede incluir la clase. El segundo establece ``None`` como instancia, y " "siempre incluye la clase." -#: ../Doc/howto/descriptor.rst:806 +#: ../Doc/howto/descriptor.rst:824 msgid "Data descriptors always override instance dictionaries." msgstr "" "Los descriptores de datos siempre anulan los diccionarios de instancia." -#: ../Doc/howto/descriptor.rst:808 +#: ../Doc/howto/descriptor.rst:826 msgid "Non-data descriptors may be overridden by instance dictionaries." msgstr "" "Los descriptores de no-datos pueden ser reemplazados por los diccionarios de " "instancia." -#: ../Doc/howto/descriptor.rst:812 +#: ../Doc/howto/descriptor.rst:830 msgid "Automatic name notification" msgstr "Notificación automática de nombre" -#: ../Doc/howto/descriptor.rst:814 +#: ../Doc/howto/descriptor.rst:832 msgid "" "Sometimes it is desirable for a descriptor to know what class variable name " "it was assigned to. When a new class is created, the :class:`type` " @@ -867,7 +853,7 @@ msgstr "" "dos argumentos. El argumento *owner* es la clase donde se usa el descriptor, " "y *name* es la variable de clase a la cual el descriptor se asigna." -#: ../Doc/howto/descriptor.rst:821 +#: ../Doc/howto/descriptor.rst:839 msgid "" "The implementation details are in :c:func:`type_new()` and :c:func:" "`set_names()` in :source:`Objects/typeobject.c`." @@ -875,7 +861,7 @@ msgstr "" "Los detalles de la implementación están en :c:func:`type_new()` y :c:func:" "`set_names()` en :source:`Objects/typeobject.c`." -#: ../Doc/howto/descriptor.rst:824 +#: ../Doc/howto/descriptor.rst:842 msgid "" "Since the update logic is in :meth:`type.__new__`, notifications only take " "place at the time of class creation. If descriptors are added to the class " @@ -886,22 +872,23 @@ msgstr "" "descriptores a la clase más tarde, :meth:`__set_name__` tendrá que ser " "llamado manualmente." -#: ../Doc/howto/descriptor.rst:830 +#: ../Doc/howto/descriptor.rst:848 msgid "ORM example" msgstr "Ejemplo de mapeos objeto-relacional (*ORM*)" -#: ../Doc/howto/descriptor.rst:832 +#: ../Doc/howto/descriptor.rst:850 +#, fuzzy, python-format msgid "" -"The following code is simplified skeleton showing how data descriptors could " -"be used to implement an `object relational mapping `_." +"The following code is a simplified skeleton showing how data descriptors " +"could be used to implement an `object relational mapping `_." msgstr "" "El siguiente código es un esqueleto simplificado que muestra cómo " "descriptores de datos pueden ser usados para implementar un mapeo objeto-" "relacional `_." -#: ../Doc/howto/descriptor.rst:836 +#: ../Doc/howto/descriptor.rst:854 msgid "" "The essential idea is that the data is stored in an external database. The " "Python instances only hold keys to the database's tables. Descriptors take " @@ -911,7 +898,7 @@ msgstr "" "Las instancias de Python sólo mantienen llaves a las tablas de la base de " "datos. Los descriptores se hacen cargo de las búsquedas o actualizaciones:" -#: ../Doc/howto/descriptor.rst:855 +#: ../Doc/howto/descriptor.rst:873 msgid "" "We can use the :class:`Field` class to define `models `_ that describe the schema for each table in a " @@ -921,11 +908,11 @@ msgstr "" "wikipedia.org/wiki/Modelo_de_base_de_datos>`_ que describen el esquema para " "cada tabla en la base de datos:" -#: ../Doc/howto/descriptor.rst:880 +#: ../Doc/howto/descriptor.rst:898 msgid "To use the models, first connect to the database::" msgstr "Para usar los modelos, primera conéctate a la base de datos::" -#: ../Doc/howto/descriptor.rst:885 +#: ../Doc/howto/descriptor.rst:903 msgid "" "An interactive session shows how data is retrieved from the database and how " "it can be updated:" @@ -933,16 +920,16 @@ msgstr "" "Una sesión interactiva muestra cómo los datos son obtenidos desde la base de " "datos y cómo se pueden actualizar:" -#: ../Doc/howto/descriptor.rst:930 +#: ../Doc/howto/descriptor.rst:948 msgid "Pure Python Equivalents" msgstr "Equivalentes en Python puro" -#: ../Doc/howto/descriptor.rst:932 +#: ../Doc/howto/descriptor.rst:950 msgid "" "The descriptor protocol is simple and offers exciting possibilities. " "Several use cases are so common that they have been prepackaged into built-" -"in tools. Properties, bound methods, static methods, class methods, and \\_" -"\\_slots\\_\\_ are all based on the descriptor protocol." +"in tools. Properties, bound methods, static methods, class methods, and " +"\\_\\_slots\\_\\_ are all based on the descriptor protocol." msgstr "" "El protocolo de descriptores es simple y ofrece posibilidades estimulantes. " "Varios casos de uso son tan comunes que han sido pre-empaquetados en " @@ -950,11 +937,11 @@ msgstr "" "estáticos, métodos de clase y \\_\\_slots\\_\\_ están todos basados en el " "protocolo de descriptores." -#: ../Doc/howto/descriptor.rst:939 +#: ../Doc/howto/descriptor.rst:957 msgid "Properties" msgstr "Propiedades" -#: ../Doc/howto/descriptor.rst:941 +#: ../Doc/howto/descriptor.rst:959 msgid "" "Calling :func:`property` is a succinct way of building a data descriptor " "that triggers a function call upon access to an attribute. Its signature " @@ -964,14 +951,14 @@ msgstr "" "datos que desencadena llamadas a funciones al acceder a un atributo. Su " "firma es::" -#: ../Doc/howto/descriptor.rst:946 +#: ../Doc/howto/descriptor.rst:964 msgid "" "The documentation shows a typical use to define a managed attribute ``x``:" msgstr "" "La documentación muestra un uso típico para definir un atributo gestionado " "``x``::" -#: ../Doc/howto/descriptor.rst:970 +#: ../Doc/howto/descriptor.rst:988 msgid "" "To see how :func:`property` is implemented in terms of the descriptor " "protocol, here is a pure Python equivalent:" @@ -979,7 +966,7 @@ msgstr "" "Para ver cómo se implementa :func:`property` en términos del protocolo de " "descriptores, aquí hay un equivalente puro de Python::" -#: ../Doc/howto/descriptor.rst:1073 +#: ../Doc/howto/descriptor.rst:1091 msgid "" "The :func:`property` builtin helps whenever a user interface has granted " "attribute access and then subsequent changes require the intervention of a " @@ -989,7 +976,7 @@ msgstr "" "usuario ha otorgado acceso a atributos y luego los cambios posteriores " "requieren la intervención de un método." -#: ../Doc/howto/descriptor.rst:1077 +#: ../Doc/howto/descriptor.rst:1095 msgid "" "For instance, a spreadsheet class may grant access to a cell value through " "``Cell('b10').value``. Subsequent improvements to the program require the " @@ -1005,7 +992,7 @@ msgstr "" "que accede al atributo directamente. La solución es envolver el acceso al " "valor del atributo en un descriptor de datos propiedad::" -#: ../Doc/howto/descriptor.rst:1094 +#: ../Doc/howto/descriptor.rst:1112 msgid "" "Either the built-in :func:`property` or our :func:`Property` equivalent " "would work in this example." @@ -1013,11 +1000,11 @@ msgstr "" "Tanto la función incorporada :func:`property` como nuestra equivalente :func:" "`Property` funcionarían en este ejemplo." -#: ../Doc/howto/descriptor.rst:1099 +#: ../Doc/howto/descriptor.rst:1117 msgid "Functions and methods" msgstr "Funciones y métodos" -#: ../Doc/howto/descriptor.rst:1101 +#: ../Doc/howto/descriptor.rst:1119 msgid "" "Python's object oriented features are built upon a function based " "environment. Using non-data descriptors, the two are merged seamlessly." @@ -1026,7 +1013,7 @@ msgstr "" "basado en funciones. Usando descriptores de no-datos, ambas se combinan " "perfectamente." -#: ../Doc/howto/descriptor.rst:1104 +#: ../Doc/howto/descriptor.rst:1122 msgid "" "Functions stored in class dictionaries get turned into methods when invoked. " "Methods only differ from regular functions in that the object instance is " @@ -1039,7 +1026,7 @@ msgstr "" "argumentos. Por convención, la instancia se llama *self*, pero podría ser " "llamada *this* o cualquier otro nombre de variable." -#: ../Doc/howto/descriptor.rst:1109 +#: ../Doc/howto/descriptor.rst:1127 msgid "" "Methods can be created manually with :class:`types.MethodType` which is " "roughly equivalent to:" @@ -1047,7 +1034,7 @@ msgstr "" "Los métodos se pueden crear manualmente con :class:`types.MethodType`, lo " "que es aproximadamente equivalente a:" -#: ../Doc/howto/descriptor.rst:1126 +#: ../Doc/howto/descriptor.rst:1144 msgid "" "To support automatic creation of methods, functions include the :meth:" "`__get__` method for binding methods during attribute access. This means " @@ -1060,7 +1047,7 @@ msgstr "" "métodos vinculados durante la búsqueda con puntos desde una instancia. Así " "es como funciona:" -#: ../Doc/howto/descriptor.rst:1142 +#: ../Doc/howto/descriptor.rst:1160 msgid "" "Running the following class in the interpreter shows how the function " "descriptor works in practice:" @@ -1068,14 +1055,14 @@ msgstr "" "Ejecutar la siguiente clase en el intérprete muestra cómo funciona el " "descriptor de función en la práctica:" -#: ../Doc/howto/descriptor.rst:1151 +#: ../Doc/howto/descriptor.rst:1169 msgid "" "The function has a :term:`qualified name` attribute to support introspection:" msgstr "" "La función tiene un atributo de :term:`nombre calificado ` " "para soportar introspección:" -#: ../Doc/howto/descriptor.rst:1158 +#: ../Doc/howto/descriptor.rst:1176 msgid "" "Accessing the function through the class dictionary does not invoke :meth:" "`__get__`. Instead, it just returns the underlying function object::" @@ -1083,7 +1070,7 @@ msgstr "" "Accediendo a la función a través del diccionario de clase no invoca :meth:" "`__get__`. En cambio, retorna el objeto función subyacente:" -#: ../Doc/howto/descriptor.rst:1164 +#: ../Doc/howto/descriptor.rst:1182 msgid "" "Dotted access from a class calls :meth:`__get__` which just returns the " "underlying function unchanged::" @@ -1091,7 +1078,7 @@ msgstr "" "Acceso con puntos desde una clase llama a :meth:`__get__`, lo cual sólo " "retorna la función subyacente sin cambiar::" -#: ../Doc/howto/descriptor.rst:1170 +#: ../Doc/howto/descriptor.rst:1188 msgid "" "The interesting behavior occurs during dotted access from an instance. The " "dotted lookup calls :meth:`__get__` which returns a bound method object::" @@ -1100,7 +1087,7 @@ msgstr "" "instancia. Las búsquedas con punto llaman a :meth:`__get__`, el cual retorna " "un objeto de método vinculado:" -#: ../Doc/howto/descriptor.rst:1177 +#: ../Doc/howto/descriptor.rst:1195 msgid "" "Internally, the bound method stores the underlying function and the bound " "instance::" @@ -1108,7 +1095,7 @@ msgstr "" "Internamente, el método vinculado guarda la función subyacente y la " "instancia vinculada:" -#: ../Doc/howto/descriptor.rst:1186 +#: ../Doc/howto/descriptor.rst:1204 msgid "" "If you have ever wondered where *self* comes from in regular methods or " "where *cls* comes from in class methods, this is it!" @@ -1116,11 +1103,11 @@ msgstr "" "Si alguna vez te preguntaste de dónde viene *self* en métodos regulares, o " "de dónde viene *cls* en métodos de clase, ¡es acá!" -#: ../Doc/howto/descriptor.rst:1191 +#: ../Doc/howto/descriptor.rst:1209 msgid "Kinds of methods" msgstr "Tipos de métodos" -#: ../Doc/howto/descriptor.rst:1193 +#: ../Doc/howto/descriptor.rst:1211 msgid "" "Non-data descriptors provide a simple mechanism for variations on the usual " "patterns of binding functions into methods." @@ -1128,7 +1115,7 @@ msgstr "" "Los descriptores de no-datos proporcionan un mecanismo simple para " "variaciones de los patrones habituales para vincular funciones en métodos." -#: ../Doc/howto/descriptor.rst:1196 +#: ../Doc/howto/descriptor.rst:1214 msgid "" "To recap, functions have a :meth:`__get__` method so that they can be " "converted to a method when accessed as attributes. The non-data descriptor " @@ -1140,56 +1127,56 @@ msgstr "" "descriptor de no-datos transforma una llamada a ``obj.f(*args)`` en ``f(obj, " "*args)``. Llamar a ``cls.f(*args)`` se convierte en ``f(*args)``." -#: ../Doc/howto/descriptor.rst:1201 +#: ../Doc/howto/descriptor.rst:1219 msgid "This chart summarizes the binding and its two most useful variants:" msgstr "" "Este cuadro resume el enlace (*binding*) y sus dos variantes más útiles:" -#: ../Doc/howto/descriptor.rst:1204 +#: ../Doc/howto/descriptor.rst:1222 msgid "Transformation" msgstr "Transformación" -#: ../Doc/howto/descriptor.rst:1204 +#: ../Doc/howto/descriptor.rst:1222 msgid "Called from an object" msgstr "Llamado desde un objeto" -#: ../Doc/howto/descriptor.rst:1204 +#: ../Doc/howto/descriptor.rst:1222 msgid "Called from a class" msgstr "Llamado desde una clase" -#: ../Doc/howto/descriptor.rst:1207 +#: ../Doc/howto/descriptor.rst:1225 msgid "function" msgstr "función" -#: ../Doc/howto/descriptor.rst:1207 +#: ../Doc/howto/descriptor.rst:1225 msgid "f(obj, \\*args)" msgstr "f(obj, \\*args)" -#: ../Doc/howto/descriptor.rst:1207 ../Doc/howto/descriptor.rst:1209 +#: ../Doc/howto/descriptor.rst:1225 ../Doc/howto/descriptor.rst:1227 msgid "f(\\*args)" msgstr "f(\\*args)" -#: ../Doc/howto/descriptor.rst:1209 +#: ../Doc/howto/descriptor.rst:1227 msgid "staticmethod" msgstr "método estático" -#: ../Doc/howto/descriptor.rst:1211 +#: ../Doc/howto/descriptor.rst:1229 msgid "classmethod" msgstr "método de clase" -#: ../Doc/howto/descriptor.rst:1211 +#: ../Doc/howto/descriptor.rst:1229 msgid "f(type(obj), \\*args)" msgstr "f(type(obj), \\*args)" -#: ../Doc/howto/descriptor.rst:1211 +#: ../Doc/howto/descriptor.rst:1229 msgid "f(cls, \\*args)" msgstr "f(cls, \\*args)" -#: ../Doc/howto/descriptor.rst:1216 +#: ../Doc/howto/descriptor.rst:1234 msgid "Static methods" msgstr "Métodos estáticos" -#: ../Doc/howto/descriptor.rst:1218 +#: ../Doc/howto/descriptor.rst:1236 msgid "" "Static methods return the underlying function without changes. Calling " "either ``c.f`` or ``C.f`` is the equivalent of a direct lookup into ``object." @@ -1203,7 +1190,7 @@ msgstr "" "Como resultado, la función se vuelve idénticamente accesible desde un objeto " "o una clase." -#: ../Doc/howto/descriptor.rst:1224 +#: ../Doc/howto/descriptor.rst:1242 msgid "" "Good candidates for static methods are methods that do not reference the " "``self`` variable." @@ -1211,7 +1198,7 @@ msgstr "" "Buenos candidatos para ser métodos estáticos son los métodos que no hacen " "referencia a la variable ``self``." -#: ../Doc/howto/descriptor.rst:1227 +#: ../Doc/howto/descriptor.rst:1245 msgid "" "For instance, a statistics package may include a container class for " "experimental data. The class provides normal methods for computing the " @@ -1232,7 +1219,7 @@ msgstr "" "en particular. Se puede llamar desde un objeto o la clase: ``s.erf(1.5) --" "> .9332`` o ``Sample.erf(1.5) --> .9332``." -#: ../Doc/howto/descriptor.rst:1236 +#: ../Doc/howto/descriptor.rst:1254 msgid "" "Since static methods return the underlying function with no changes, the " "example calls are unexciting:" @@ -1240,7 +1227,7 @@ msgstr "" "Dado que los métodos estáticos retornan la función subyacente sin cambios, " "las llamadas de ejemplo carecen de interés::" -#: ../Doc/howto/descriptor.rst:1253 +#: ../Doc/howto/descriptor.rst:1271 msgid "" "Using the non-data descriptor protocol, a pure Python version of :func:" "`staticmethod` would look like this:" @@ -1248,11 +1235,11 @@ msgstr "" "Usando el protocolo de descriptores de no-datos, una versión pura de Python " "de :func:`staticmethod` se vería así::" -#: ../Doc/howto/descriptor.rst:1285 +#: ../Doc/howto/descriptor.rst:1310 msgid "Class methods" msgstr "Métodos de clase" -#: ../Doc/howto/descriptor.rst:1287 +#: ../Doc/howto/descriptor.rst:1312 msgid "" "Unlike static methods, class methods prepend the class reference to the " "argument list before calling the function. This format is the same for " @@ -1262,7 +1249,7 @@ msgstr "" "referencia de clase a la lista de argumentos antes de llamar a la función. " "Este formato es el mismo si quien llama es un objeto o una clase::" -#: ../Doc/howto/descriptor.rst:1305 +#: ../Doc/howto/descriptor.rst:1330 msgid "" "This behavior is useful whenever the method only needs to have a class " "reference and does not rely on data stored in a specific instance. One use " @@ -1277,11 +1264,11 @@ msgstr "" "crea un nuevo diccionario a partir de una lista de claves. El equivalente " "puro de Python es:" -#: ../Doc/howto/descriptor.rst:1322 +#: ../Doc/howto/descriptor.rst:1347 msgid "Now a new dictionary of unique keys can be constructed like this:" msgstr "Ahora se puede construir un nuevo diccionario de claves únicas así:" -#: ../Doc/howto/descriptor.rst:1332 +#: ../Doc/howto/descriptor.rst:1357 msgid "" "Using the non-data descriptor protocol, a pure Python version of :func:" "`classmethod` would look like this:" @@ -1289,22 +1276,23 @@ msgstr "" "Usando el protocolo de descriptores de no-datos, una implementación pura en " "Python de :func:`classmethod` se vería así:" -#: ../Doc/howto/descriptor.rst:1381 +#: ../Doc/howto/descriptor.rst:1408 +#, fuzzy msgid "" "The code path for ``hasattr(type(self.f), '__get__')`` was added in Python " "3.9 and makes it possible for :func:`classmethod` to support chained " "decorators. For example, a classmethod and property could be chained " -"together:" +"together. In Python 3.11, this functionality was deprecated." msgstr "" "La ruta de código para ``hasattr(obj, '__get__')`` fue añadida en Python " "3.9, y hace posible que :func:`classmethod` soporte decoradores encadenados." "Por ejemplo, un classmethod y un property se puede encadenar:" -#: ../Doc/howto/descriptor.rst:1401 +#: ../Doc/howto/descriptor.rst:1428 msgid "Member objects and __slots__" msgstr "Objetos miembros y __slots__" -#: ../Doc/howto/descriptor.rst:1403 +#: ../Doc/howto/descriptor.rst:1430 msgid "" "When a class defines ``__slots__``, it replaces instance dictionaries with a " "fixed-length array of slot values. From a user point of view that has " @@ -1314,7 +1302,7 @@ msgstr "" "instancia por un arreglo de valores de ranura de largo fijo. Desde el punto " "de vista del usuario esto tiene varios efectos:" -#: ../Doc/howto/descriptor.rst:1407 +#: ../Doc/howto/descriptor.rst:1434 msgid "" "1. Provides immediate detection of bugs due to misspelled attribute " "assignments. Only attribute names specified in ``__slots__`` are allowed:" @@ -1323,7 +1311,7 @@ msgstr "" "atributos mal deletreados. Sólo se permiten nombres de atributos " "especificados en ``__slots__``:" -#: ../Doc/howto/descriptor.rst:1423 +#: ../Doc/howto/descriptor.rst:1450 msgid "" "2. Helps create immutable objects where descriptors manage access to private " "attributes stored in ``__slots__``:" @@ -1331,7 +1319,7 @@ msgstr "" "2. Ayuda a crear objetos inmutables donde descriptores manejar el acceso a " "atributos privados almacenados en ``__slots__``:" -#: ../Doc/howto/descriptor.rst:1458 +#: ../Doc/howto/descriptor.rst:1485 msgid "" "3. Saves memory. On a 64-bit Linux build, an instance with two attributes " "takes 48 bytes with ``__slots__`` and 152 bytes without. This `flyweight " @@ -1340,11 +1328,12 @@ msgid "" msgstr "" "3. Ahorra memoria. En una compilación de 64 bits en Linux, una instancia con " "dos atributos usa 48 bytes con ``__slots__`` y 152 bytes sin. Este `patrón " -"de diseño flyweight `_ probablemente sólo importa cuando una gran " -"cantidad de instancias será creada." +"de diseño flyweight `_ probablemente sólo importa cuando " +"una gran cantidad de instancias será creada." -#: ../Doc/howto/descriptor.rst:1463 +#: ../Doc/howto/descriptor.rst:1490 +#, python-format msgid "" "4. Improves speed. Reading instance variables is 35% faster with " "``__slots__`` (as measured with Python 3.10 on an Apple M1 processor)." @@ -1352,7 +1341,7 @@ msgstr "" "4. Mejora la velocidad. Leer variables de instancia es 35% más rápido con " "``__slots__`` (medido con Python 3.10 en un procesador Apple M1)." -#: ../Doc/howto/descriptor.rst:1466 +#: ../Doc/howto/descriptor.rst:1493 msgid "" "5. Blocks tools like :func:`functools.cached_property` which require an " "instance dictionary to function correctly:" @@ -1360,7 +1349,7 @@ msgstr "" "5. Bloquea a herramientas tales como :func:`functools.cached_property`, las " "que requieren un diccionario de instancia para funcionar correctamente:" -#: ../Doc/howto/descriptor.rst:1488 +#: ../Doc/howto/descriptor.rst:1515 msgid "" "It is not possible to create an exact drop-in pure Python version of " "``__slots__`` because it requires direct access to C structures and control " @@ -1376,7 +1365,7 @@ msgstr "" "con una lista privada ``_slotvalues``. Las lecturas y escrituras de esta " "estructura privada se manejan con descriptores miembros:" -#: ../Doc/howto/descriptor.rst:1531 +#: ../Doc/howto/descriptor.rst:1560 msgid "" "The :meth:`type.__new__` method takes care of adding member objects to class " "variables:" @@ -1384,7 +1373,7 @@ msgstr "" "El método :meth:`type.__new__` se hace cargo de añadir objetos miembros a " "variables de clase:" -#: ../Doc/howto/descriptor.rst:1547 +#: ../Doc/howto/descriptor.rst:1576 msgid "" "The :meth:`object.__new__` method takes care of creating instances that have " "slots instead of an instance dictionary. Here is a rough simulation in pure " @@ -1394,7 +1383,7 @@ msgstr "" "tienen ranuras en vez un diccionario de instancia. Acá hay una simulación " "aproximada en Python puro:" -#: ../Doc/howto/descriptor.rst:1582 +#: ../Doc/howto/descriptor.rst:1611 msgid "" "To use the simulation in a real class, just inherit from :class:`Object` and " "set the :term:`metaclass` to :class:`Type`:" @@ -1402,13 +1391,13 @@ msgstr "" "Para usar la simulación en una clase real, sólo hereda de :class:`Object` y " "establece :term:`metaclass` a :class:`Type`:" -#: ../Doc/howto/descriptor.rst:1596 +#: ../Doc/howto/descriptor.rst:1625 msgid "" "At this point, the metaclass has loaded member objects for *x* and *y*::" msgstr "" "En este punto, la metaclase ha cargado los objetos miembros para *x* e *y*::" -#: ../Doc/howto/descriptor.rst:1617 +#: ../Doc/howto/descriptor.rst:1646 msgid "" "When instances are created, they have a ``slot_values`` list where the " "attributes are stored:" @@ -1416,6 +1405,32 @@ msgstr "" "Cuando se crean instancias, éstas tienen una lista ``slot_values`` donde se " "almacenan los atributos:" -#: ../Doc/howto/descriptor.rst:1629 +#: ../Doc/howto/descriptor.rst:1658 msgid "Misspelled or unassigned attributes will raise an exception:" msgstr "Atributos mal deletreados o no asignados lazarán una excepción:" + +#~ msgid "" +#~ "Interestingly, attribute lookup doesn't call :meth:`object." +#~ "__getattribute__` directly. Instead, both the dot operator and the :func:" +#~ "`getattr` function perform attribute lookup by way of a helper function:" +#~ msgstr "" +#~ "Es Interesante que la búsqueda de atributos no llama directamente a :meth:" +#~ "`object.__getattribute__`. En cambio, tanto el operador punto como la " +#~ "función :func:`getattr` realizan la búsqueda de atributos a través de una " +#~ "función auxiliar:" + +#~ msgid "" +#~ "So if :meth:`__getattr__` exists, it is called whenever :meth:" +#~ "`__getattribute__` raises :exc:`AttributeError` (either directly or in " +#~ "one of the descriptor calls)." +#~ msgstr "" +#~ "De tal modo, si :meth:`__getattr__` existe, es llamada cada vez que :meth:" +#~ "`__getattribute__` lanza :exc:`AttributeError` (ya sea directamente o en " +#~ "una de las llamadas a un descriptor)." + +#~ msgid "" +#~ "Also, if a user calls :meth:`object.__getattribute__` directly, the :meth:" +#~ "`__getattr__` hook is bypassed entirely." +#~ msgstr "" +#~ "Además, si un usuario llama directamente a :meth:`object." +#~ "__getattribute__`, el gancho en :meth:`__getattr__` es totalmente evitado." diff --git a/howto/enum.po b/howto/enum.po new file mode 100644 index 0000000000..9aebdceddc --- /dev/null +++ b/howto/enum.po @@ -0,0 +1,1179 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2001-2022, Python Software Foundation +# This file is distributed under the same license as the Python en Español +# package. +# FIRST AUTHOR , 2022. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Python en Español 3.11\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-10-25 19:47+0200\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" +"Generated-By: Babel 2.10.3\n" + +#: ../Doc/howto/enum.rst:3 +msgid "Enum HOWTO" +msgstr "" + +#: ../Doc/howto/enum.rst:9 +msgid "" +"An :class:`Enum` is a set of symbolic names bound to unique values. They " +"are similar to global variables, but they offer a more useful :func:" +"`repr()`, grouping, type-safety, and a few other features." +msgstr "" + +#: ../Doc/howto/enum.rst:13 +msgid "" +"They are most useful when you have a variable that can take one of a limited " +"selection of values. For example, the days of the week::" +msgstr "" + +#: ../Doc/howto/enum.rst:26 +msgid "Or perhaps the RGB primary colors::" +msgstr "" + +#: ../Doc/howto/enum.rst:34 +msgid "" +"As you can see, creating an :class:`Enum` is as simple as writing a class " +"that inherits from :class:`Enum` itself." +msgstr "" + +#: ../Doc/howto/enum.rst:37 +msgid "Case of Enum Members" +msgstr "" + +#: ../Doc/howto/enum.rst:39 +msgid "" +"Because Enums are used to represent constants we recommend using UPPER_CASE " +"names for members, and will be using that style in our examples." +msgstr "" + +#: ../Doc/howto/enum.rst:42 +msgid "" +"Depending on the nature of the enum a member's value may or may not be " +"important, but either way that value can be used to get the corresponding " +"member::" +msgstr "" + +#: ../Doc/howto/enum.rst:49 +msgid "" +"As you can see, the ``repr()`` of a member shows the enum name, the member " +"name, and the value. The ``str()`` of a member shows only the enum name and " +"member name::" +msgstr "" + +#: ../Doc/howto/enum.rst:56 +msgid "The *type* of an enumeration member is the enum it belongs to::" +msgstr "" + +#: ../Doc/howto/enum.rst:63 +msgid "Enum members have an attribute that contains just their :attr:`name`::" +msgstr "" + +#: ../Doc/howto/enum.rst:68 +msgid "Likewise, they have an attribute for their :attr:`value`::" +msgstr "" + +#: ../Doc/howto/enum.rst:74 +msgid "" +"Unlike many languages that treat enumerations solely as name/value pairs, " +"Python Enums can have behavior added. For example, :class:`datetime.date` " +"has two methods for returning the weekday: :meth:`weekday` and :meth:" +"`isoweekday`. The difference is that one of them counts from 0-6 and the " +"other from 1-7. Rather than keep track of that ourselves we can add a method " +"to the :class:`Weekday` enum to extract the day from the :class:`date` " +"instance and return the matching enum member::" +msgstr "" + +#: ../Doc/howto/enum.rst:86 +msgid "The complete :class:`Weekday` enum now looks like this::" +msgstr "" + +#: ../Doc/howto/enum.rst:101 +msgid "Now we can find out what today is! Observe::" +msgstr "" + +#: ../Doc/howto/enum.rst:107 +msgid "" +"Of course, if you're reading this on some other day, you'll see that day " +"instead." +msgstr "" + +#: ../Doc/howto/enum.rst:109 +msgid "" +"This :class:`Weekday` enum is great if our variable only needs one day, but " +"what if we need several? Maybe we're writing a function to plot chores " +"during a week, and don't want to use a :class:`list` -- we could use a " +"different type of :class:`Enum`::" +msgstr "" + +#: ../Doc/howto/enum.rst:124 +msgid "" +"We've changed two things: we're inherited from :class:`Flag`, and the values " +"are all powers of 2." +msgstr "" + +#: ../Doc/howto/enum.rst:127 +msgid "" +"Just like the original :class:`Weekday` enum above, we can have a single " +"selection::" +msgstr "" + +#: ../Doc/howto/enum.rst:133 +msgid "" +"But :class:`Flag` also allows us to combine several members into a single " +"variable::" +msgstr "" + +#: ../Doc/howto/enum.rst:140 +msgid "You can even iterate over a :class:`Flag` variable::" +msgstr "" + +#: ../Doc/howto/enum.rst:147 +msgid "Okay, let's get some chores set up::" +msgstr "" + +#: ../Doc/howto/enum.rst:155 +msgid "And a function to display the chores for a given day::" +msgstr "" + +#: ../Doc/howto/enum.rst:164 +msgid "" +"In cases where the actual values of the members do not matter, you can save " +"yourself some work and use :func:`auto()` for the values::" +msgstr "" + +#: ../Doc/howto/enum.rst:182 +msgid "Programmatic access to enumeration members and their attributes" +msgstr "" + +#: ../Doc/howto/enum.rst:184 +msgid "" +"Sometimes it's useful to access members in enumerations programmatically (i." +"e. situations where ``Color.RED`` won't do because the exact color is not " +"known at program-writing time). ``Enum`` allows such access::" +msgstr "" + +#: ../Doc/howto/enum.rst:193 +msgid "If you want to access enum members by *name*, use item access::" +msgstr "" + +#: ../Doc/howto/enum.rst:200 +msgid "If you have an enum member and need its :attr:`name` or :attr:`value`::" +msgstr "" + +#: ../Doc/howto/enum.rst:210 +msgid "Duplicating enum members and values" +msgstr "" + +#: ../Doc/howto/enum.rst:212 +msgid "Having two enum members with the same name is invalid::" +msgstr "" + +#: ../Doc/howto/enum.rst:222 +msgid "" +"However, an enum member can have other names associated with it. Given two " +"entries ``A`` and ``B`` with the same value (and ``A`` defined first), ``B`` " +"is an alias for the member ``A``. By-value lookup of the value of ``A`` " +"will return the member ``A``. By-name lookup of ``A`` will return the " +"member ``A``. By-name lookup of ``B`` will also return the member ``A``::" +msgstr "" + +#: ../Doc/howto/enum.rst:243 +msgid "" +"Attempting to create a member with the same name as an already defined " +"attribute (another member, a method, etc.) or attempting to create an " +"attribute with the same name as a member is not allowed." +msgstr "" + +#: ../Doc/howto/enum.rst:249 +msgid "Ensuring unique enumeration values" +msgstr "" + +#: ../Doc/howto/enum.rst:251 +msgid "" +"By default, enumerations allow multiple names as aliases for the same value. " +"When this behavior isn't desired, you can use the :func:`unique` decorator::" +msgstr "" + +#: ../Doc/howto/enum.rst:268 +msgid "Using automatic values" +msgstr "" + +#: ../Doc/howto/enum.rst:270 +msgid "If the exact value is unimportant you can use :class:`auto`::" +msgstr "" + +#: ../Doc/howto/enum.rst:281 +msgid "" +"The values are chosen by :func:`_generate_next_value_`, which can be " +"overridden::" +msgstr "" + +#: ../Doc/howto/enum.rst:299 +msgid "" +"The :meth:`_generate_next_value_` method must be defined before any members." +msgstr "" + +#: ../Doc/howto/enum.rst:302 +msgid "Iteration" +msgstr "" + +#: ../Doc/howto/enum.rst:304 +msgid "Iterating over the members of an enum does not provide the aliases::" +msgstr "" + +#: ../Doc/howto/enum.rst:309 +msgid "" +"The special attribute ``__members__`` is a read-only ordered mapping of " +"names to members. It includes all names defined in the enumeration, " +"including the aliases::" +msgstr "" + +#: ../Doc/howto/enum.rst:321 +msgid "" +"The ``__members__`` attribute can be used for detailed programmatic access " +"to the enumeration members. For example, finding all the aliases::" +msgstr "" + +#: ../Doc/howto/enum.rst:329 +msgid "Comparisons" +msgstr "" + +#: ../Doc/howto/enum.rst:331 +msgid "Enumeration members are compared by identity::" +msgstr "" + +#: ../Doc/howto/enum.rst:340 +msgid "" +"Ordered comparisons between enumeration values are *not* supported. Enum " +"members are not integers (but see `IntEnum`_ below)::" +msgstr "" + +#: ../Doc/howto/enum.rst:348 +msgid "Equality comparisons are defined though::" +msgstr "" + +#: ../Doc/howto/enum.rst:357 +msgid "" +"Comparisons against non-enumeration values will always compare not equal " +"(again, :class:`IntEnum` was explicitly designed to behave differently, see " +"below)::" +msgstr "" + +#: ../Doc/howto/enum.rst:366 +msgid "Allowed members and attributes of enumerations" +msgstr "" + +#: ../Doc/howto/enum.rst:368 +msgid "" +"Most of the examples above use integers for enumeration values. Using " +"integers is short and handy (and provided by default by the `Functional " +"API`_), but not strictly enforced. In the vast majority of use-cases, one " +"doesn't care what the actual value of an enumeration is. But if the value " +"*is* important, enumerations can have arbitrary values." +msgstr "" + +#: ../Doc/howto/enum.rst:374 +msgid "" +"Enumerations are Python classes, and can have methods and special methods as " +"usual. If we have this enumeration::" +msgstr "" + +#: ../Doc/howto/enum.rst:394 +msgid "Then::" +msgstr "" + +#: ../Doc/howto/enum.rst:403 +msgid "" +"The rules for what is allowed are as follows: names that start and end with " +"a single underscore are reserved by enum and cannot be used; all other " +"attributes defined within an enumeration will become members of this " +"enumeration, with the exception of special methods (:meth:`__str__`, :meth:" +"`__add__`, etc.), descriptors (methods are also descriptors), and variable " +"names listed in :attr:`_ignore_`." +msgstr "" + +#: ../Doc/howto/enum.rst:410 +msgid "" +"Note: if your enumeration defines :meth:`__new__` and/or :meth:`__init__` " +"then any value(s) given to the enum member will be passed into those " +"methods. See `Planet`_ for an example." +msgstr "" + +#: ../Doc/howto/enum.rst:416 +msgid "Restricted Enum subclassing" +msgstr "" + +#: ../Doc/howto/enum.rst:418 +msgid "" +"A new :class:`Enum` class must have one base enum class, up to one concrete " +"data type, and as many :class:`object`-based mixin classes as needed. The " +"order of these base classes is::" +msgstr "" + +#: ../Doc/howto/enum.rst:425 +msgid "" +"Also, subclassing an enumeration is allowed only if the enumeration does not " +"define any members. So this is forbidden::" +msgstr "" + +#: ../Doc/howto/enum.rst:435 +msgid "But this is allowed::" +msgstr "" + +#: ../Doc/howto/enum.rst:446 +msgid "" +"Allowing subclassing of enums that define members would lead to a violation " +"of some important invariants of types and instances. On the other hand, it " +"makes sense to allow sharing some common behavior between a group of " +"enumerations. (See `OrderedEnum`_ for an example.)" +msgstr "" + +#: ../Doc/howto/enum.rst:453 +msgid "Pickling" +msgstr "" + +#: ../Doc/howto/enum.rst:455 +msgid "Enumerations can be pickled and unpickled::" +msgstr "" + +#: ../Doc/howto/enum.rst:462 +msgid "" +"The usual restrictions for pickling apply: picklable enums must be defined " +"in the top level of a module, since unpickling requires them to be " +"importable from that module." +msgstr "" + +#: ../Doc/howto/enum.rst:468 +msgid "" +"With pickle protocol version 4 it is possible to easily pickle enums nested " +"in other classes." +msgstr "" + +#: ../Doc/howto/enum.rst:471 +msgid "" +"It is possible to modify how enum members are pickled/unpickled by defining :" +"meth:`__reduce_ex__` in the enumeration class." +msgstr "" + +#: ../Doc/howto/enum.rst:476 +msgid "Functional API" +msgstr "" + +#: ../Doc/howto/enum.rst:478 +msgid "" +"The :class:`Enum` class is callable, providing the following functional API::" +msgstr "" + +#: ../Doc/howto/enum.rst:488 +msgid "" +"The semantics of this API resemble :class:`~collections.namedtuple`. The " +"first argument of the call to :class:`Enum` is the name of the enumeration." +msgstr "" + +#: ../Doc/howto/enum.rst:491 +msgid "" +"The second argument is the *source* of enumeration member names. It can be " +"a whitespace-separated string of names, a sequence of names, a sequence of 2-" +"tuples with key/value pairs, or a mapping (e.g. dictionary) of names to " +"values. The last two options enable assigning arbitrary values to " +"enumerations; the others auto-assign increasing integers starting with 1 " +"(use the ``start`` parameter to specify a different starting value). A new " +"class derived from :class:`Enum` is returned. In other words, the above " +"assignment to :class:`Animal` is equivalent to::" +msgstr "" + +#: ../Doc/howto/enum.rst:507 +msgid "" +"The reason for defaulting to ``1`` as the starting number and not ``0`` is " +"that ``0`` is ``False`` in a boolean sense, but by default enum members all " +"evaluate to ``True``." +msgstr "" + +#: ../Doc/howto/enum.rst:511 +msgid "" +"Pickling enums created with the functional API can be tricky as frame stack " +"implementation details are used to try and figure out which module the " +"enumeration is being created in (e.g. it will fail if you use a utility " +"function in a separate module, and also may not work on IronPython or " +"Jython). The solution is to specify the module name explicitly as follows::" +msgstr "" + +#: ../Doc/howto/enum.rst:521 +msgid "" +"If ``module`` is not supplied, and Enum cannot determine what it is, the new " +"Enum members will not be unpicklable; to keep errors closer to the source, " +"pickling will be disabled." +msgstr "" + +#: ../Doc/howto/enum.rst:525 +msgid "" +"The new pickle protocol 4 also, in some circumstances, relies on :attr:" +"`~definition.__qualname__` being set to the location where pickle will be " +"able to find the class. For example, if the class was made available in " +"class SomeData in the global scope::" +msgstr "" + +#: ../Doc/howto/enum.rst:532 +msgid "The complete signature is::" +msgstr "" + +#: ../Doc/howto/enum.rst +msgid "value" +msgstr "" + +#: ../Doc/howto/enum.rst:544 +msgid "What the new enum class will record as its name." +msgstr "" + +#: ../Doc/howto/enum.rst +msgid "names" +msgstr "" + +#: ../Doc/howto/enum.rst:546 +msgid "" +"The enum members. This can be a whitespace- or comma-separated string " +"(values will start at 1 unless otherwise specified)::" +msgstr "" + +#: ../Doc/howto/enum.rst:551 +msgid "or an iterator of names::" +msgstr "" + +#: ../Doc/howto/enum.rst:555 +msgid "or an iterator of (name, value) pairs::" +msgstr "" + +#: ../Doc/howto/enum.rst:559 +msgid "or a mapping::" +msgstr "" + +#: ../Doc/howto/enum.rst +msgid "module" +msgstr "" + +#: ../Doc/howto/enum.rst:563 +msgid "name of module where new enum class can be found." +msgstr "" + +#: ../Doc/howto/enum.rst +msgid "qualname" +msgstr "" + +#: ../Doc/howto/enum.rst:565 +msgid "where in module new enum class can be found." +msgstr "" + +#: ../Doc/howto/enum.rst +msgid "type" +msgstr "" + +#: ../Doc/howto/enum.rst:567 +msgid "type to mix in to new enum class." +msgstr "" + +#: ../Doc/howto/enum.rst +msgid "start" +msgstr "" + +#: ../Doc/howto/enum.rst:569 +msgid "number to start counting at if only names are passed in." +msgstr "" + +#: ../Doc/howto/enum.rst:571 +msgid "The *start* parameter was added." +msgstr "" + +#: ../Doc/howto/enum.rst:576 +msgid "Derived Enumerations" +msgstr "" + +#: ../Doc/howto/enum.rst:579 +msgid "IntEnum" +msgstr "" + +#: ../Doc/howto/enum.rst:581 +msgid "" +"The first variation of :class:`Enum` that is provided is also a subclass of :" +"class:`int`. Members of an :class:`IntEnum` can be compared to integers; by " +"extension, integer enumerations of different types can also be compared to " +"each other::" +msgstr "" + +#: ../Doc/howto/enum.rst:602 +msgid "" +"However, they still can't be compared to standard :class:`Enum` " +"enumerations::" +msgstr "" + +#: ../Doc/howto/enum.rst:615 +msgid "" +":class:`IntEnum` values behave like integers in other ways you'd expect::" +msgstr "" + +#: ../Doc/howto/enum.rst:626 +msgid "StrEnum" +msgstr "" + +#: ../Doc/howto/enum.rst:628 +msgid "" +"The second variation of :class:`Enum` that is provided is also a subclass " +"of :class:`str`. Members of a :class:`StrEnum` can be compared to strings; " +"by extension, string enumerations of different types can also be compared to " +"each other." +msgstr "" + +#: ../Doc/howto/enum.rst:637 +msgid "IntFlag" +msgstr "" + +#: ../Doc/howto/enum.rst:639 +msgid "" +"The next variation of :class:`Enum` provided, :class:`IntFlag`, is also " +"based on :class:`int`. The difference being :class:`IntFlag` members can be " +"combined using the bitwise operators (&, \\|, ^, ~) and the result is still " +"an :class:`IntFlag` member, if possible. Like :class:`IntEnum`, :class:" +"`IntFlag` members are also integers and can be used wherever an :class:`int` " +"is used." +msgstr "" + +#: ../Doc/howto/enum.rst:647 +msgid "" +"Any operation on an :class:`IntFlag` member besides the bit-wise operations " +"will lose the :class:`IntFlag` membership." +msgstr "" + +#: ../Doc/howto/enum.rst:650 +msgid "" +"Bit-wise operations that result in invalid :class:`IntFlag` values will lose " +"the :class:`IntFlag` membership. See :class:`FlagBoundary` for details." +msgstr "" + +#: ../Doc/howto/enum.rst:657 +msgid "Sample :class:`IntFlag` class::" +msgstr "" + +#: ../Doc/howto/enum.rst:673 +msgid "It is also possible to name the combinations::" +msgstr "" + +#: ../Doc/howto/enum.rst:689 +msgid "" +"Named combinations are considered aliases. Aliases do not show up during " +"iteration, but can be returned from by-value lookups." +msgstr "" + +#: ../Doc/howto/enum.rst:694 +msgid "" +"Another important difference between :class:`IntFlag` and :class:`Enum` is " +"that if no flags are set (the value is 0), its boolean evaluation is :data:" +"`False`::" +msgstr "" + +#: ../Doc/howto/enum.rst:702 +msgid "" +"Because :class:`IntFlag` members are also subclasses of :class:`int` they " +"can be combined with them (but may lose :class:`IntFlag` membership::" +msgstr "" + +#: ../Doc/howto/enum.rst:713 +msgid "" +"The negation operator, ``~``, always returns an :class:`IntFlag` member with " +"a positive value::" +msgstr "" + +#: ../Doc/howto/enum.rst:719 +msgid ":class:`IntFlag` members can also be iterated over::" +msgstr "" + +#: ../Doc/howto/enum.rst:728 +msgid "Flag" +msgstr "" + +#: ../Doc/howto/enum.rst:730 +msgid "" +"The last variation is :class:`Flag`. Like :class:`IntFlag`, :class:`Flag` " +"members can be combined using the bitwise operators (&, \\|, ^, ~). Unlike :" +"class:`IntFlag`, they cannot be combined with, nor compared against, any " +"other :class:`Flag` enumeration, nor :class:`int`. While it is possible to " +"specify the values directly it is recommended to use :class:`auto` as the " +"value and let :class:`Flag` select an appropriate value." +msgstr "" + +#: ../Doc/howto/enum.rst:739 +msgid "" +"Like :class:`IntFlag`, if a combination of :class:`Flag` members results in " +"no flags being set, the boolean evaluation is :data:`False`::" +msgstr "" + +#: ../Doc/howto/enum.rst:753 +msgid "" +"Individual flags should have values that are powers of two (1, 2, 4, " +"8, ...), while combinations of flags won't::" +msgstr "" + +#: ../Doc/howto/enum.rst:765 +msgid "" +"Giving a name to the \"no flags set\" condition does not change its boolean " +"value::" +msgstr "" + +#: ../Doc/howto/enum.rst:779 +msgid ":class:`Flag` members can also be iterated over::" +msgstr "" + +#: ../Doc/howto/enum.rst:789 +msgid "" +"For the majority of new code, :class:`Enum` and :class:`Flag` are strongly " +"recommended, since :class:`IntEnum` and :class:`IntFlag` break some semantic " +"promises of an enumeration (by being comparable to integers, and thus by " +"transitivity to other unrelated enumerations). :class:`IntEnum` and :class:" +"`IntFlag` should be used only in cases where :class:`Enum` and :class:`Flag` " +"will not do; for example, when integer constants are replaced with " +"enumerations, or for interoperability with other systems." +msgstr "" + +#: ../Doc/howto/enum.rst:799 +msgid "Others" +msgstr "" + +#: ../Doc/howto/enum.rst:801 +msgid "" +"While :class:`IntEnum` is part of the :mod:`enum` module, it would be very " +"simple to implement independently::" +msgstr "" + +#: ../Doc/howto/enum.rst:807 +msgid "" +"This demonstrates how similar derived enumerations can be defined; for " +"example a :class:`FloatEnum` that mixes in :class:`float` instead of :class:" +"`int`." +msgstr "" + +#: ../Doc/howto/enum.rst:810 +msgid "Some rules:" +msgstr "" + +#: ../Doc/howto/enum.rst:812 +msgid "" +"When subclassing :class:`Enum`, mix-in types must appear before :class:" +"`Enum` itself in the sequence of bases, as in the :class:`IntEnum` example " +"above." +msgstr "" + +#: ../Doc/howto/enum.rst:815 +msgid "" +"Mix-in types must be subclassable. For example, :class:`bool` and :class:" +"`range` are not subclassable and will throw an error during Enum creation if " +"used as the mix-in type." +msgstr "" + +#: ../Doc/howto/enum.rst:818 +msgid "" +"While :class:`Enum` can have members of any type, once you mix in an " +"additional type, all the members must have values of that type, e.g. :class:" +"`int` above. This restriction does not apply to mix-ins which only add " +"methods and don't specify another type." +msgstr "" + +#: ../Doc/howto/enum.rst:822 +msgid "" +"When another data type is mixed in, the :attr:`value` attribute is *not the " +"same* as the enum member itself, although it is equivalent and will compare " +"equal." +msgstr "" + +#: ../Doc/howto/enum.rst:825 +#, python-format +msgid "" +"%-style formatting: ``%s`` and ``%r`` call the :class:`Enum` class's :meth:" +"`__str__` and :meth:`__repr__` respectively; other codes (such as ``%i`` or " +"``%h`` for IntEnum) treat the enum member as its mixed-in type." +msgstr "" + +#: ../Doc/howto/enum.rst:828 +msgid "" +":ref:`Formatted string literals `, :meth:`str.format`, and :func:" +"`format` will use the enum's :meth:`__str__` method." +msgstr "" + +#: ../Doc/howto/enum.rst:833 +msgid "" +"Because :class:`IntEnum`, :class:`IntFlag`, and :class:`StrEnum` are " +"designed to be drop-in replacements for existing constants, their :meth:" +"`__str__` method has been reset to their data types :meth:`__str__` method." +msgstr "" + +#: ../Doc/howto/enum.rst:839 +msgid "When to use :meth:`__new__` vs. :meth:`__init__`" +msgstr "" + +#: ../Doc/howto/enum.rst:841 +msgid "" +":meth:`__new__` must be used whenever you want to customize the actual value " +"of the :class:`Enum` member. Any other modifications may go in either :meth:" +"`__new__` or :meth:`__init__`, with :meth:`__init__` being preferred." +msgstr "" + +#: ../Doc/howto/enum.rst:845 +msgid "" +"For example, if you want to pass several items to the constructor, but only " +"want one of them to be the value::" +msgstr "" + +#: ../Doc/howto/enum.rst:872 +msgid "Finer Points" +msgstr "" + +#: ../Doc/howto/enum.rst:875 +msgid "Supported ``__dunder__`` names" +msgstr "" + +#: ../Doc/howto/enum.rst:877 +msgid "" +":attr:`__members__` is a read-only ordered mapping of ``member_name``:" +"``member`` items. It is only available on the class." +msgstr "" + +#: ../Doc/howto/enum.rst:880 +msgid "" +":meth:`__new__`, if specified, must create and return the enum members; it " +"is also a very good idea to set the member's :attr:`_value_` appropriately. " +"Once all the members are created it is no longer used." +msgstr "" + +#: ../Doc/howto/enum.rst:886 +msgid "Supported ``_sunder_`` names" +msgstr "" + +#: ../Doc/howto/enum.rst:888 +msgid "``_name_`` -- name of the member" +msgstr "" + +#: ../Doc/howto/enum.rst:889 +msgid "" +"``_value_`` -- value of the member; can be set / modified in ``__new__``" +msgstr "" + +#: ../Doc/howto/enum.rst:891 +msgid "" +"``_missing_`` -- a lookup function used when a value is not found; may be " +"overridden" +msgstr "" + +#: ../Doc/howto/enum.rst:893 +msgid "" +"``_ignore_`` -- a list of names, either as a :class:`list` or a :class:" +"`str`, that will not be transformed into members, and will be removed from " +"the final class" +msgstr "" + +#: ../Doc/howto/enum.rst:896 +msgid "" +"``_order_`` -- used in Python 2/3 code to ensure member order is consistent " +"(class attribute, removed during class creation)" +msgstr "" + +#: ../Doc/howto/enum.rst:898 +msgid "" +"``_generate_next_value_`` -- used by the `Functional API`_ and by :class:" +"`auto` to get an appropriate value for an enum member; may be overridden" +msgstr "" + +#: ../Doc/howto/enum.rst:904 +msgid "" +"For standard :class:`Enum` classes the next value chosen is the last value " +"seen incremented by one." +msgstr "" + +#: ../Doc/howto/enum.rst:907 +msgid "" +"For :class:`Flag` classes the next value chosen will be the next highest " +"power-of-two, regardless of the last value seen." +msgstr "" + +#: ../Doc/howto/enum.rst:910 +msgid "``_missing_``, ``_order_``, ``_generate_next_value_``" +msgstr "" + +#: ../Doc/howto/enum.rst:911 +msgid "``_ignore_``" +msgstr "" + +#: ../Doc/howto/enum.rst:913 +msgid "" +"To help keep Python 2 / Python 3 code in sync an :attr:`_order_` attribute " +"can be provided. It will be checked against the actual order of the " +"enumeration and raise an error if the two do not match::" +msgstr "" + +#: ../Doc/howto/enum.rst:931 +msgid "" +"In Python 2 code the :attr:`_order_` attribute is necessary as definition " +"order is lost before it can be recorded." +msgstr "" + +#: ../Doc/howto/enum.rst:936 +msgid "_Private__names" +msgstr "" + +#: ../Doc/howto/enum.rst:938 +msgid "" +":ref:`Private names ` are not converted to enum " +"members, but remain normal attributes." +msgstr "" + +#: ../Doc/howto/enum.rst:945 +msgid "``Enum`` member type" +msgstr "" + +#: ../Doc/howto/enum.rst:947 +msgid "" +"Enum members are instances of their enum class, and are normally accessed as " +"``EnumClass.member``. In Python versions ``3.5`` to ``3.10`` you could " +"access members from other members -- this practice was discouraged, and in " +"``3.11`` :class:`Enum` returns to not allowing it::" +msgstr "" + +#: ../Doc/howto/enum.rst:968 +msgid "Creating members that are mixed with other data types" +msgstr "" + +#: ../Doc/howto/enum.rst:970 +msgid "" +"When subclassing other data types, such as :class:`int` or :class:`str`, " +"with an :class:`Enum`, all values after the ``=`` are passed to that data " +"type's constructor. For example::" +msgstr "" + +#: ../Doc/howto/enum.rst:982 +msgid "Boolean value of ``Enum`` classes and members" +msgstr "" + +#: ../Doc/howto/enum.rst:984 +msgid "" +"Enum classes that are mixed with non-:class:`Enum` types (such as :class:" +"`int`, :class:`str`, etc.) are evaluated according to the mixed-in type's " +"rules; otherwise, all members evaluate as :data:`True`. To make your own " +"enum's boolean evaluation depend on the member's value add the following to " +"your class::" +msgstr "" + +#: ../Doc/howto/enum.rst:993 +msgid "Plain :class:`Enum` classes always evaluate as :data:`True`." +msgstr "" + +#: ../Doc/howto/enum.rst:997 +msgid "``Enum`` classes with methods" +msgstr "" + +#: ../Doc/howto/enum.rst:999 +msgid "" +"If you give your enum subclass extra methods, like the `Planet`_ class " +"below, those methods will show up in a :func:`dir` of the member, but not of " +"the class::" +msgstr "" + +#: ../Doc/howto/enum.rst:1010 +msgid "Combining members of ``Flag``" +msgstr "" + +#: ../Doc/howto/enum.rst:1012 +msgid "" +"Iterating over a combination of :class:`Flag` members will only return the " +"members that are comprised of a single bit::" +msgstr "" + +#: ../Doc/howto/enum.rst:1030 +msgid "``Flag`` and ``IntFlag`` minutia" +msgstr "" + +#: ../Doc/howto/enum.rst:1032 +msgid "Using the following snippet for our examples::" +msgstr "" + +#: ../Doc/howto/enum.rst:1043 +msgid "the following are true:" +msgstr "" + +#: ../Doc/howto/enum.rst:1045 +msgid "single-bit flags are canonical" +msgstr "" + +#: ../Doc/howto/enum.rst:1046 +msgid "multi-bit and zero-bit flags are aliases" +msgstr "" + +#: ../Doc/howto/enum.rst:1047 +msgid "only canonical flags are returned during iteration::" +msgstr "" + +#: ../Doc/howto/enum.rst:1052 +msgid "" +"negating a flag or flag set returns a new flag/flag set with the " +"corresponding positive integer value::" +msgstr "" + +#: ../Doc/howto/enum.rst:1061 +msgid "names of pseudo-flags are constructed from their members' names::" +msgstr "" + +#: ../Doc/howto/enum.rst:1066 +msgid "multi-bit flags, aka aliases, can be returned from operations::" +msgstr "" + +#: ../Doc/howto/enum.rst:1077 +msgid "" +"membership / containment checking: zero-valued flags are always considered " +"to be contained::" +msgstr "" + +#: ../Doc/howto/enum.rst:1083 +msgid "" +"otherwise, only if all bits of one flag are in the other flag will True be " +"returned::" +msgstr "" + +#: ../Doc/howto/enum.rst:1092 +msgid "" +"There is a new boundary mechanism that controls how out-of-range / invalid " +"bits are handled: ``STRICT``, ``CONFORM``, ``EJECT``, and ``KEEP``:" +msgstr "" + +#: ../Doc/howto/enum.rst:1095 +msgid "STRICT --> raises an exception when presented with invalid values" +msgstr "" + +#: ../Doc/howto/enum.rst:1096 +msgid "CONFORM --> discards any invalid bits" +msgstr "" + +#: ../Doc/howto/enum.rst:1097 +msgid "EJECT --> lose Flag status and become a normal int with the given value" +msgstr "" + +#: ../Doc/howto/enum.rst:1101 +msgid "KEEP --> keep the extra bits" +msgstr "" + +#: ../Doc/howto/enum.rst:1099 +msgid "keeps Flag status and extra bits" +msgstr "" + +#: ../Doc/howto/enum.rst:1100 +msgid "extra bits do not show up in iteration" +msgstr "" + +#: ../Doc/howto/enum.rst:1101 +msgid "extra bits do show up in repr() and str()" +msgstr "" + +#: ../Doc/howto/enum.rst:1103 +msgid "" +"The default for Flag is ``STRICT``, the default for ``IntFlag`` is " +"``EJECT``, and the default for ``_convert_`` is ``KEEP`` (see ``ssl." +"Options`` for an example of when ``KEEP`` is needed)." +msgstr "" + +#: ../Doc/howto/enum.rst:1111 +msgid "How are Enums different?" +msgstr "" + +#: ../Doc/howto/enum.rst:1113 +msgid "" +"Enums have a custom metaclass that affects many aspects of both derived :" +"class:`Enum` classes and their instances (members)." +msgstr "" + +#: ../Doc/howto/enum.rst:1118 +msgid "Enum Classes" +msgstr "" + +#: ../Doc/howto/enum.rst:1120 +msgid "" +"The :class:`EnumType` metaclass is responsible for providing the :meth:" +"`__contains__`, :meth:`__dir__`, :meth:`__iter__` and other methods that " +"allow one to do things with an :class:`Enum` class that fail on a typical " +"class, such as ``list(Color)`` or ``some_enum_var in Color``. :class:" +"`EnumType` is responsible for ensuring that various other methods on the " +"final :class:`Enum` class are correct (such as :meth:`__new__`, :meth:" +"`__getnewargs__`, :meth:`__str__` and :meth:`__repr__`)." +msgstr "" + +#: ../Doc/howto/enum.rst:1130 +msgid "Enum Members (aka instances)" +msgstr "" + +#: ../Doc/howto/enum.rst:1132 +msgid "" +"The most interesting thing about enum members is that they are singletons. :" +"class:`EnumType` creates them all while it is creating the enum class " +"itself, and then puts a custom :meth:`__new__` in place to ensure that no " +"new ones are ever instantiated by returning only the existing member " +"instances." +msgstr "" + +#: ../Doc/howto/enum.rst:1141 +msgid "" +"While :class:`Enum`, :class:`IntEnum`, :class:`StrEnum`, :class:`Flag`, and :" +"class:`IntFlag` are expected to cover the majority of use-cases, they cannot " +"cover them all. Here are recipes for some different types of enumerations " +"that can be used directly, or as examples for creating one's own." +msgstr "" + +#: ../Doc/howto/enum.rst:1148 +msgid "Omitting values" +msgstr "" + +#: ../Doc/howto/enum.rst:1150 +msgid "" +"In many use-cases, one doesn't care what the actual value of an enumeration " +"is. There are several ways to define this type of simple enumeration:" +msgstr "" + +#: ../Doc/howto/enum.rst:1153 +msgid "use instances of :class:`auto` for the value" +msgstr "" + +#: ../Doc/howto/enum.rst:1154 +msgid "use instances of :class:`object` as the value" +msgstr "" + +#: ../Doc/howto/enum.rst:1155 +msgid "use a descriptive string as the value" +msgstr "" + +#: ../Doc/howto/enum.rst:1156 +msgid "" +"use a tuple as the value and a custom :meth:`__new__` to replace the tuple " +"with an :class:`int` value" +msgstr "" + +#: ../Doc/howto/enum.rst:1159 +msgid "" +"Using any of these methods signifies to the user that these values are not " +"important, and also enables one to add, remove, or reorder members without " +"having to renumber the remaining members." +msgstr "" + +#: ../Doc/howto/enum.rst:1165 +msgid "Using :class:`auto`" +msgstr "" + +#: ../Doc/howto/enum.rst:1167 +msgid "Using :class:`auto` would look like::" +msgstr "" + +#: ../Doc/howto/enum.rst:1179 +msgid "Using :class:`object`" +msgstr "" + +#: ../Doc/howto/enum.rst:1181 +msgid "Using :class:`object` would look like::" +msgstr "" + +#: ../Doc/howto/enum.rst:1191 +msgid "" +"This is also a good example of why you might want to write your own :meth:" +"`__repr__`::" +msgstr "" + +#: ../Doc/howto/enum.rst:1207 +msgid "Using a descriptive string" +msgstr "" + +#: ../Doc/howto/enum.rst:1209 +msgid "Using a string as the value would look like::" +msgstr "" + +#: ../Doc/howto/enum.rst:1221 +msgid "Using a custom :meth:`__new__`" +msgstr "" + +#: ../Doc/howto/enum.rst:1223 +msgid "Using an auto-numbering :meth:`__new__` would look like::" +msgstr "" + +#: ../Doc/howto/enum.rst:1240 +msgid "" +"To make a more general purpose ``AutoNumber``, add ``*args`` to the " +"signature::" +msgstr "" + +#: ../Doc/howto/enum.rst:1250 +msgid "" +"Then when you inherit from ``AutoNumber`` you can write your own " +"``__init__`` to handle any extra arguments::" +msgstr "" + +#: ../Doc/howto/enum.rst:1269 +msgid "" +"The :meth:`__new__` method, if defined, is used during creation of the Enum " +"members; it is then replaced by Enum's :meth:`__new__` which is used after " +"class creation for lookup of existing members." +msgstr "" + +#: ../Doc/howto/enum.rst:1275 +msgid "OrderedEnum" +msgstr "" + +#: ../Doc/howto/enum.rst:1277 +msgid "" +"An ordered enumeration that is not based on :class:`IntEnum` and so " +"maintains the normal :class:`Enum` invariants (such as not being comparable " +"to other enumerations)::" +msgstr "" + +#: ../Doc/howto/enum.rst:1311 +msgid "DuplicateFreeEnum" +msgstr "" + +#: ../Doc/howto/enum.rst:1313 +msgid "" +"Raises an error if a duplicate member name is found instead of creating an " +"alias::" +msgstr "" + +#: ../Doc/howto/enum.rst:1338 +msgid "" +"This is a useful example for subclassing Enum to add or change other " +"behaviors as well as disallowing aliases. If the only desired change is " +"disallowing aliases, the :func:`unique` decorator can be used instead." +msgstr "" + +#: ../Doc/howto/enum.rst:1344 +msgid "Planet" +msgstr "" + +#: ../Doc/howto/enum.rst:1346 +msgid "" +"If :meth:`__new__` or :meth:`__init__` is defined, the value of the enum " +"member will be passed to those methods::" +msgstr "" + +#: ../Doc/howto/enum.rst:1375 +msgid "TimePeriod" +msgstr "" + +#: ../Doc/howto/enum.rst:1377 +msgid "An example to show the :attr:`_ignore_` attribute in use::" +msgstr "" + +#: ../Doc/howto/enum.rst:1396 +msgid "Subclassing EnumType" +msgstr "" + +#: ../Doc/howto/enum.rst:1398 +msgid "" +"While most enum needs can be met by customizing :class:`Enum` subclasses, " +"either with class decorators or custom functions, :class:`EnumType` can be " +"subclassed to provide a different Enum experience." +msgstr "" diff --git a/howto/functional.po b/howto/functional.po index 1c08c80b0c..4113231ed9 100644 --- a/howto/functional.po +++ b/howto/functional.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-10-22 10:38-0500\n" "Last-Translator: Kevin Cajachuán \n" "Language: es\n" @@ -19,8 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/howto/functional.rst:3 msgid "Functional Programming HOWTO" @@ -511,8 +510,8 @@ msgstr "" #: ../Doc/howto/functional.rst:246 msgid "" "Built-in functions such as :func:`max` and :func:`min` can take a single " -"iterator argument and will return the largest or smallest element. The ``" -"\"in\"`` and ``\"not in\"`` operators also support iterators: ``X in " +"iterator argument and will return the largest or smallest element. The " +"``\"in\"`` and ``\"not in\"`` operators also support iterators: ``X in " "iterator`` is true if X is found in the stream returned by the iterator. " "You'll run into obvious problems if the iterator is infinite; :func:`max`, :" "func:`min` will never return, and if the element X never appears in the " @@ -617,11 +616,11 @@ msgstr "" "Los conjuntos pueden recibir sus contenidos de un iterable y le permiten " "iterar sobre los elementos del conjunto::" -#: ../Doc/howto/functional.rst:325 +#: ../Doc/howto/functional.rst:331 msgid "Generator expressions and list comprehensions" msgstr "Expresiones generadoras y listas por comprensión" -#: ../Doc/howto/functional.rst:327 +#: ../Doc/howto/functional.rst:333 msgid "" "Two common operations on an iterator's output are 1) performing some " "operation for every element, 2) selecting a subset of elements that meet " @@ -636,7 +635,7 @@ msgstr "" "extraer todas las cadenas de caracteres que contienen una subcadena de " "caracteres dada." -#: ../Doc/howto/functional.rst:333 +#: ../Doc/howto/functional.rst:339 msgid "" "List comprehensions and generator expressions (short form: \"listcomps\" and " "\"genexps\") are a concise notation for such operations, borrowed from the " @@ -649,13 +648,13 @@ msgstr "" "(https://www.haskell.org/). Puede remover todos los espacios de un flujo de " "cadena de caracteres con el siguiente código::" -#: ../Doc/howto/functional.rst:346 +#: ../Doc/howto/functional.rst:352 msgid "" "You can select only certain elements by adding an ``\"if\"`` condition::" msgstr "" "Puede seleccionar solo ciertos elementos agregando una condición ``\"if\"``::" -#: ../Doc/howto/functional.rst:351 +#: ../Doc/howto/functional.rst:357 msgid "" "With a list comprehension, you get back a Python list; ``stripped_list`` is " "a list containing the resulting lines, not an iterator. Generator " @@ -673,7 +672,7 @@ msgstr "" "trabajando con iteradores que retornan un flujo infinito o una gran cantidad " "de datos. En estas situaciones son preferibles las expresiones generadoras." -#: ../Doc/howto/functional.rst:358 +#: ../Doc/howto/functional.rst:364 msgid "" "Generator expressions are surrounded by parentheses (\"()\") and list " "comprehensions are surrounded by square brackets (\"[]\"). Generator " @@ -683,7 +682,7 @@ msgstr "" "listas por comprensión están rodeadas por corchetes (\"[]\"). Las " "expresiones generadoras tienen la forma::" -#: ../Doc/howto/functional.rst:371 +#: ../Doc/howto/functional.rst:378 msgid "" "Again, for a list comprehension only the outside brackets are different " "(square brackets instead of parentheses)." @@ -691,7 +690,7 @@ msgstr "" "Nuevamente, para una lista por comprensión solo los corchetes exteriores son " "diferentes (corchetes en lugar de paréntesis)." -#: ../Doc/howto/functional.rst:374 +#: ../Doc/howto/functional.rst:381 msgid "" "The elements of the generated output will be the successive values of " "``expression``. The ``if`` clauses are all optional; if present, " @@ -703,7 +702,7 @@ msgstr "" "``expression`` es solo evaluado y añadido al resultado cuando ``condition`` " "es verdadero." -#: ../Doc/howto/functional.rst:378 +#: ../Doc/howto/functional.rst:385 msgid "" "Generator expressions always have to be written inside parentheses, but the " "parentheses signalling a function call also count. If you want to create an " @@ -714,7 +713,7 @@ msgstr "" "cuentan. Si quiere crear un iterador que se pase inmediatamente a una " "función puede escribir::" -#: ../Doc/howto/functional.rst:384 +#: ../Doc/howto/functional.rst:391 msgid "" "The ``for...in`` clauses contain the sequences to be iterated over. The " "sequences do not have to be the same length, because they are iterated over " @@ -729,7 +728,7 @@ msgstr "" "se recorre ``sequence2`` desde el inicio. Luego se recorre ``sequence3`` por " "cada par de elementos resultante de ``sequence1`` y ``sequence2``." -#: ../Doc/howto/functional.rst:390 +#: ../Doc/howto/functional.rst:397 msgid "" "To put it another way, a list comprehension or generator expression is " "equivalent to the following Python code::" @@ -737,7 +736,7 @@ msgstr "" "Para ponerlo en otra forma, una lista por comprensión o expresión generadora " "es equivalente al siguiente código Python::" -#: ../Doc/howto/functional.rst:407 +#: ../Doc/howto/functional.rst:414 msgid "" "This means that when there are multiple ``for...in`` clauses but no ``if`` " "clauses, the length of the resulting output will be equal to the product of " @@ -749,7 +748,7 @@ msgstr "" "de las longitudes de todas las secuencias. Si tiene dos listas de longitud " "3, la lista de salida tendrá 9 elementos:" -#: ../Doc/howto/functional.rst:419 +#: ../Doc/howto/functional.rst:426 msgid "" "To avoid introducing an ambiguity into Python's grammar, if ``expression`` " "is creating a tuple, it must be surrounded with parentheses. The first list " @@ -760,11 +759,11 @@ msgstr "" "primera lista por comprensión de abajo tiene un error de sintaxis, mientras " "que la segunda es correcta::" -#: ../Doc/howto/functional.rst:430 +#: ../Doc/howto/functional.rst:437 msgid "Generators" msgstr "Generadores" -#: ../Doc/howto/functional.rst:432 +#: ../Doc/howto/functional.rst:439 msgid "" "Generators are a special class of functions that simplify the task of " "writing iterators. Regular functions compute a value and return it, but " @@ -775,7 +774,7 @@ msgstr "" "retornan, pero los generadores retornan un iterador que retorna un flujo de " "valores." -#: ../Doc/howto/functional.rst:436 +#: ../Doc/howto/functional.rst:443 msgid "" "You're doubtless familiar with how regular function calls work in Python or " "C. When you call a function, it gets a private namespace where its local " @@ -798,11 +797,11 @@ msgstr "" "desde donde quedó? Esto es lo que proveen los generadores; se pueden pensar " "como funciones que se reanudan." -#: ../Doc/howto/functional.rst:445 +#: ../Doc/howto/functional.rst:452 msgid "Here's the simplest example of a generator function:" msgstr "Este es el ejemplo más simple de una función generadora:" -#: ../Doc/howto/functional.rst:451 +#: ../Doc/howto/functional.rst:458 msgid "" "Any function containing a :keyword:`yield` keyword is a generator function; " "this is detected by Python's :term:`bytecode` compiler which compiles the " @@ -812,7 +811,7 @@ msgstr "" "función generadora; esto es detectado por el compilador :term:`bytecode` de " "Python que compila la función de forma especial como resultado." -#: ../Doc/howto/functional.rst:455 +#: ../Doc/howto/functional.rst:462 msgid "" "When you call a generator function, it doesn't return a single value; " "instead it returns a generator object that supports the iterator protocol. " @@ -832,11 +831,11 @@ msgstr "" "locales. En la próxima llamada al método :meth:`~generator.__next__` del " "generador, la función reanudará la ejecución." -#: ../Doc/howto/functional.rst:464 +#: ../Doc/howto/functional.rst:471 msgid "Here's a sample usage of the ``generate_ints()`` generator:" msgstr "Este es un ejemplo de uso del generador ``generate_ints()``:" -#: ../Doc/howto/functional.rst:481 +#: ../Doc/howto/functional.rst:488 msgid "" "You could equally write ``for i in generate_ints(5)``, or ``a, b, c = " "generate_ints(3)``." @@ -844,7 +843,7 @@ msgstr "" "De igual forma podría escribir ``for i in generate_ints(5)``, o ``a, b, c = " "generate_ints(3)``." -#: ../Doc/howto/functional.rst:484 +#: ../Doc/howto/functional.rst:491 msgid "" "Inside a generator function, ``return value`` causes " "``StopIteration(value)`` to be raised from the :meth:`~generator.__next__` " @@ -856,7 +855,7 @@ msgstr "" "que esto pase, o que se alcance el final de la función, termina la procesión " "de valores y el generador no puede producir más valores." -#: ../Doc/howto/functional.rst:489 +#: ../Doc/howto/functional.rst:496 msgid "" "You could achieve the effect of generators manually by writing your own " "class and storing all the local variables of the generator as instance " @@ -873,7 +872,7 @@ msgstr "" "generador moderadamente complicado, escribir una clase correspondiente puede " "ser mucho más confuso." -#: ../Doc/howto/functional.rst:497 +#: ../Doc/howto/functional.rst:504 msgid "" "The test suite included with Python's library, :source:`Lib/test/" "test_generators.py`, contains a number of more interesting examples. Here's " @@ -885,7 +884,7 @@ msgstr "" "es un generador que implementa un recorrido inorden de un árbol usando " "generadores recursivamente. ::" -#: ../Doc/howto/functional.rst:513 +#: ../Doc/howto/functional.rst:520 msgid "" "Two other examples in ``test_generators.py`` produce solutions for the N-" "Queens problem (placing N queens on an NxN chess board so that no queen " @@ -899,11 +898,11 @@ msgstr "" "que lleve a un caballo a cada cuadro de un tablero de ajedrez de NxN sin " "visitar ningún cuadro dos veces)." -#: ../Doc/howto/functional.rst:521 +#: ../Doc/howto/functional.rst:528 msgid "Passing values into a generator" msgstr "Pasar valores a un generador" -#: ../Doc/howto/functional.rst:523 +#: ../Doc/howto/functional.rst:530 msgid "" "In Python 2.4 and earlier, generators only produced output. Once a " "generator's code was invoked to create an iterator, there was no way to pass " @@ -919,7 +918,7 @@ msgstr "" "variable global o pasando en algún objeto mutable que el llamador luego " "modifica, pero estos enfoques son confusos." -#: ../Doc/howto/functional.rst:530 +#: ../Doc/howto/functional.rst:537 msgid "" "In Python 2.5 there's a simple way to pass values into a generator. :keyword:" "`yield` became an expression, returning a value that can be assigned to a " @@ -929,7 +928,7 @@ msgstr "" "keyword:`yield` se convirtió en una expresión, retornando un valor que se " "puede asignar a una variable o sobre el que se puede operar::" -#: ../Doc/howto/functional.rst:536 +#: ../Doc/howto/functional.rst:543 msgid "" "I recommend that you **always** put parentheses around a ``yield`` " "expression when you're doing something with the returned value, as in the " @@ -941,7 +940,7 @@ msgstr "" "ejemplo de arriba. Los paréntesis no siempre son necesarios, pero siempre es " "más fácil agregarlos en lugar de tener que recordar cuándo son necesarios." -#: ../Doc/howto/functional.rst:541 +#: ../Doc/howto/functional.rst:548 msgid "" "(:pep:`342` explains the exact rules, which are that a ``yield``-expression " "must always be parenthesized except when it occurs at the top-level " @@ -955,7 +954,7 @@ msgstr "" "significa que puede escribir ``val = yield i`` pero tiene que usar " "paréntesis cuando hay una operación, como en ``val = (yield i) + 12``.)" -#: ../Doc/howto/functional.rst:547 +#: ../Doc/howto/functional.rst:554 msgid "" "Values are sent into a generator by calling its :meth:`send(value) " "` method. This method resumes the generator's code and the " @@ -967,7 +966,7 @@ msgstr "" "y la expresión ``yield`` retorna el valor especificado. Si se llama al " "método regular :meth:`~generator.__next__`, ``yield`` retorna ``None``." -#: ../Doc/howto/functional.rst:552 +#: ../Doc/howto/functional.rst:559 msgid "" "Here's a simple counter that increments by 1 and allows changing the value " "of the internal counter." @@ -975,11 +974,11 @@ msgstr "" "Este es un simple contador que incrementa por 1 y permite cambiar los " "valores del contador interno." -#: ../Doc/howto/functional.rst:567 +#: ../Doc/howto/functional.rst:574 msgid "And here's an example of changing the counter:" msgstr "Y este es un ejemplo del cambio del contador:" -#: ../Doc/howto/functional.rst:584 +#: ../Doc/howto/functional.rst:591 msgid "" "Because ``yield`` will often be returning ``None``, you should always check " "for this case. Don't just use its value in expressions unless you're sure " @@ -991,7 +990,7 @@ msgstr "" "el método :meth:`~generator.send` será el único método utilizado para " "reanudar su función generadora." -#: ../Doc/howto/functional.rst:589 +#: ../Doc/howto/functional.rst:596 msgid "" "In addition to :meth:`~generator.send`, there are two other methods on " "generators:" @@ -999,17 +998,18 @@ msgstr "" "Además del método :meth:`~generator.send`, hay otros dos métodos para " "generadores:" -#: ../Doc/howto/functional.rst:592 +#: ../Doc/howto/functional.rst:599 +#, fuzzy msgid "" -":meth:`throw(type, value=None, traceback=None) ` is used to " -"raise an exception inside the generator; the exception is raised by the " -"``yield`` expression where the generator's execution is paused." +":meth:`throw(value) ` is used to raise an exception inside " +"the generator; the exception is raised by the ``yield`` expression where the " +"generator's execution is paused." msgstr "" ":meth:`throw(type, value=None, traceback=None) ` se usa " "para lanzar una excepción dentro del generador; la excepción se lanza en la " "expresión ``yield`` donde se pausa la ejecución del generador." -#: ../Doc/howto/functional.rst:596 +#: ../Doc/howto/functional.rst:603 msgid "" ":meth:`~generator.close` raises a :exc:`GeneratorExit` exception inside the " "generator to terminate the iteration. On receiving this exception, the " @@ -1026,7 +1026,7 @@ msgstr "" "exc:`RuntimeError`. :meth:`~generator.close` también se llamará por el " "recolector de basura de Python cuando se recolecte el generador." -#: ../Doc/howto/functional.rst:604 +#: ../Doc/howto/functional.rst:611 msgid "" "If you need to run cleanup code when a :exc:`GeneratorExit` occurs, I " "suggest using a ``try: ... finally:`` suite instead of catching :exc:" @@ -1036,7 +1036,7 @@ msgstr "" "`GeneratorExit`, sugiero usar un ``try: ... finally:`` en lugar de capturar :" "exc:`GeneratorExit`." -#: ../Doc/howto/functional.rst:607 +#: ../Doc/howto/functional.rst:614 msgid "" "The cumulative effect of these changes is to turn generators from one-way " "producers of information into both producers and consumers." @@ -1044,7 +1044,7 @@ msgstr "" "El efecto acumulativo de estos cambios es convertir a los generadores de " "productores de información unidireccionales en productores y consumidores." -#: ../Doc/howto/functional.rst:610 +#: ../Doc/howto/functional.rst:617 msgid "" "Generators also become **coroutines**, a more generalized form of " "subroutines. Subroutines are entered at one point and exited at another " @@ -1058,18 +1058,18 @@ msgstr "" "corrutinas pueden iniciar, salir, y reanudarse en muchos puntos diferentes " "(las sentencias ``yield``)." -#: ../Doc/howto/functional.rst:617 +#: ../Doc/howto/functional.rst:624 msgid "Built-in functions" msgstr "Funciones incorporadas" -#: ../Doc/howto/functional.rst:619 +#: ../Doc/howto/functional.rst:626 msgid "" "Let's look in more detail at built-in functions often used with iterators." msgstr "" "Veamos con más detalle las funciones incorporadas usadas a menudo con " "iteradores." -#: ../Doc/howto/functional.rst:621 +#: ../Doc/howto/functional.rst:628 msgid "" "Two of Python's built-in functions, :func:`map` and :func:`filter` duplicate " "the features of generator expressions:" @@ -1077,25 +1077,25 @@ msgstr "" "Dos de las funciones incorporadas de Python, :func:`map` y :func:`filter` " "duplican las características de las expresiones generadoras:" -#: ../Doc/howto/functional.rst:633 +#: ../Doc/howto/functional.rst:640 msgid "" ":func:`map(f, iterA, iterB, ...) ` returns an iterator over the sequence" msgstr "" ":func:`map(f, iterA, iterB, ...) ` retorna un iterador sobre la " "secuencia" -#: ../Doc/howto/functional.rst:625 +#: ../Doc/howto/functional.rst:632 msgid "" "``f(iterA[0], iterB[0]), f(iterA[1], iterB[1]), f(iterA[2], iterB[2]), ...``." msgstr "" "``f(iterA[0], iterB[0]), f(iterA[1], iterB[1]), f(iterA[2], iterB[2]), ...``." -#: ../Doc/howto/functional.rst:635 +#: ../Doc/howto/functional.rst:642 msgid "You can of course achieve the same effect with a list comprehension." msgstr "" "Por supuesto puede lograr el mismo efecto con una lista por comprensión." -#: ../Doc/howto/functional.rst:637 +#: ../Doc/howto/functional.rst:644 msgid "" ":func:`filter(predicate, iter) ` returns an iterator over all the " "sequence elements that meet a certain condition, and is similarly duplicated " @@ -1109,11 +1109,11 @@ msgstr "" "función que retorna un valor de verdad de alguna condición; para usarlo con :" "func:`filter`, el predicado debe recibir un solo valor." -#: ../Doc/howto/functional.rst:650 +#: ../Doc/howto/functional.rst:657 msgid "This can also be written as a list comprehension:" msgstr "Esto también se puede escribir como una lista por comprensión:" -#: ../Doc/howto/functional.rst:656 +#: ../Doc/howto/functional.rst:663 msgid "" ":func:`enumerate(iter, start=0) ` counts off the elements in the " "iterable returning 2-tuples containing the count (from *start*) and each " @@ -1123,7 +1123,7 @@ msgstr "" "iterable retornando 2-tuplas que contienen la enumeración (desde *start*) y " "cada elemento. ::" -#: ../Doc/howto/functional.rst:666 +#: ../Doc/howto/functional.rst:673 msgid "" ":func:`enumerate` is often used when looping through a list and recording " "the indexes at which certain conditions are met::" @@ -1131,7 +1131,7 @@ msgstr "" ":func:`enumerate` a menudo se usa cuando se recorre una lista y se registran " "los índices en los que se reúnen una cierta condición::" -#: ../Doc/howto/functional.rst:674 +#: ../Doc/howto/functional.rst:681 msgid "" ":func:`sorted(iterable, key=None, reverse=False) ` collects all the " "elements of the iterable into a list, sorts the list, and returns the sorted " @@ -1143,14 +1143,14 @@ msgstr "" "resultado ordenado. Los argumentos *key* y *reverse* se pasan a través del " "método :meth:`~list.sort` de la lista construida. ::" -#: ../Doc/howto/functional.rst:689 +#: ../Doc/howto/functional.rst:696 msgid "" "(For a more detailed discussion of sorting, see the :ref:`sortinghowto`.)" msgstr "" "(Para un tratamiento más detallado del ordenamiento, ver :ref:" "`sortinghowto`.)" -#: ../Doc/howto/functional.rst:692 +#: ../Doc/howto/functional.rst:699 msgid "" "The :func:`any(iter) ` and :func:`all(iter) ` built-ins look at " "the truth values of an iterable's contents. :func:`any` returns ``True`` if " @@ -1162,7 +1162,7 @@ msgstr "" "retorna ``True`` si algún elemento en el iterable es un valor verdadero, y :" "func:`all` retorna ``True`` si todos los elementos son valores verdaderos:" -#: ../Doc/howto/functional.rst:711 +#: ../Doc/howto/functional.rst:718 msgid "" ":func:`zip(iterA, iterB, ...) ` takes one element from each iterable " "and returns them in a tuple::" @@ -1170,7 +1170,7 @@ msgstr "" ":func:`zip(iterA, iterB, ...) ` toma un elemento de cada iterable y los " "retorna en una tupla::" -#: ../Doc/howto/functional.rst:717 +#: ../Doc/howto/functional.rst:724 msgid "" "It doesn't construct an in-memory list and exhaust all the input iterators " "before returning; instead tuples are constructed and returned only if " @@ -1183,7 +1183,7 @@ msgstr "" "comportamiento es `evaluación perezosa `__.)" -#: ../Doc/howto/functional.rst:722 +#: ../Doc/howto/functional.rst:729 msgid "" "This iterator is intended to be used with iterables that are all of the same " "length. If the iterables are of different lengths, the resulting stream " @@ -1193,7 +1193,7 @@ msgstr "" "longitud. Si los iterables son de diferentes longitudes, el flujo resultante " "tendrá la misma longitud que el iterable más corto. ::" -#: ../Doc/howto/functional.rst:729 +#: ../Doc/howto/functional.rst:736 msgid "" "You should avoid doing this, though, because an element may be taken from " "the longer iterators and discarded. This means you can't go on to use the " @@ -1204,13 +1204,14 @@ msgstr "" "seguir usando los iteradores porque corre el riesgo de saltarse un elemento " "descartado." -#: ../Doc/howto/functional.rst:735 +#: ../Doc/howto/functional.rst:742 msgid "The itertools module" msgstr "El módulo itertools" -#: ../Doc/howto/functional.rst:737 +#: ../Doc/howto/functional.rst:744 +#, fuzzy msgid "" -"The :mod:`itertools` module contains a number of commonly-used iterators as " +"The :mod:`itertools` module contains a number of commonly used iterators as " "well as functions for combining several iterators. This section will " "introduce the module's contents by showing small examples." msgstr "" @@ -1218,33 +1219,33 @@ msgstr "" "usados así como funciones para combinar varios iteradores. Esta sección " "presentará los contenidos del módulo mostrando pequeños ejemplos." -#: ../Doc/howto/functional.rst:741 +#: ../Doc/howto/functional.rst:748 msgid "The module's functions fall into a few broad classes:" msgstr "Las funciones del módulo caen en unas pocas clases generales:" -#: ../Doc/howto/functional.rst:743 +#: ../Doc/howto/functional.rst:750 msgid "Functions that create a new iterator based on an existing iterator." msgstr "Funciones que crean un nuevo iterador basado en un iterador existente." -#: ../Doc/howto/functional.rst:744 +#: ../Doc/howto/functional.rst:751 msgid "Functions for treating an iterator's elements as function arguments." msgstr "" "Funciones para tratar los elementos de un iterador como argumentos de " "función." -#: ../Doc/howto/functional.rst:745 +#: ../Doc/howto/functional.rst:752 msgid "Functions for selecting portions of an iterator's output." msgstr "Funciones para seleccionar porciones de la salida de un iterador." -#: ../Doc/howto/functional.rst:746 +#: ../Doc/howto/functional.rst:753 msgid "A function for grouping an iterator's output." msgstr "Una función para agrupar la salida de un iterador." -#: ../Doc/howto/functional.rst:749 +#: ../Doc/howto/functional.rst:756 msgid "Creating new iterators" msgstr "Crear nuevos iteradores" -#: ../Doc/howto/functional.rst:751 +#: ../Doc/howto/functional.rst:758 msgid "" ":func:`itertools.count(start, step) ` returns an infinite " "stream of evenly spaced values. You can optionally supply the starting " @@ -1256,7 +1257,7 @@ msgstr "" "número de inicio, que por defecto es 0, y el intervalo entre números, que " "por defecto es 1::" -#: ../Doc/howto/functional.rst:762 +#: ../Doc/howto/functional.rst:769 msgid "" ":func:`itertools.cycle(iter) ` saves a copy of the contents " "of a provided iterable and returns a new iterator that returns its elements " @@ -1268,7 +1269,7 @@ msgstr "" "sus elementos del primero al último. El nuevo iterador repetirá estos " "elementos infinitamente. ::" -#: ../Doc/howto/functional.rst:769 +#: ../Doc/howto/functional.rst:776 msgid "" ":func:`itertools.repeat(elem, [n]) ` returns the provided " "element *n* times, or returns the element endlessly if *n* is not " @@ -1278,7 +1279,7 @@ msgstr "" "provisto *n* veces, o retorna el elemento indefinidamente si no se provee " "*n*. ::" -#: ../Doc/howto/functional.rst:777 +#: ../Doc/howto/functional.rst:784 msgid "" ":func:`itertools.chain(iterA, iterB, ...) ` takes an " "arbitrary number of iterables as input, and returns all the elements of the " @@ -1290,7 +1291,7 @@ msgstr "" "del primer iterador, luego todos los elementos del segundo, y así " "sucesivamente, hasta que hayan sido agotados todos los iterables. ::" -#: ../Doc/howto/functional.rst:785 +#: ../Doc/howto/functional.rst:792 msgid "" ":func:`itertools.islice(iter, [start], stop, [step]) ` " "returns a stream that's a slice of the iterator. With a single *stop* " @@ -1308,7 +1309,7 @@ msgstr "" "segmentación de listas y cadenas de caracteres de Python, no puede usar " "valores negativos para *start*, *stop* o *step*. ::" -#: ../Doc/howto/functional.rst:799 +#: ../Doc/howto/functional.rst:806 msgid "" ":func:`itertools.tee(iter, [n]) ` replicates an iterator; it " "returns *n* independent iterators that will all return the contents of the " @@ -1324,11 +1325,11 @@ msgstr "" "fuente, esto puede consumir memoria significativa si el iterador es grande y " "uno de los nuevos iteradores se consume más que los otros. ::" -#: ../Doc/howto/functional.rst:818 +#: ../Doc/howto/functional.rst:825 msgid "Calling functions on elements" msgstr "Aplicar funciones a los elementos" -#: ../Doc/howto/functional.rst:820 +#: ../Doc/howto/functional.rst:827 msgid "" "The :mod:`operator` module contains a set of functions corresponding to " "Python's operators. Some examples are :func:`operator.add(a, b) ` (retorna un invocable que obtiene el atributo ``.id``)." -#: ../Doc/howto/functional.rst:826 +#: ../Doc/howto/functional.rst:833 msgid "" ":func:`itertools.starmap(func, iter) ` assumes that the " "iterable will return a stream of tuples, and calls *func* using these tuples " @@ -1352,11 +1353,11 @@ msgstr "" "iterable retornará un flujo de tuplas, y llama a *func* usando estas tuplas " "como los argumentos::" -#: ../Doc/howto/functional.rst:838 +#: ../Doc/howto/functional.rst:845 msgid "Selecting elements" msgstr "Seleccionar elementos" -#: ../Doc/howto/functional.rst:840 +#: ../Doc/howto/functional.rst:847 msgid "" "Another group of functions chooses a subset of an iterator's elements based " "on a predicate." @@ -1364,7 +1365,7 @@ msgstr "" "Otro grupo de funciones elige un subconjunto de elementos de un iterador " "basado en un predicado dado." -#: ../Doc/howto/functional.rst:843 +#: ../Doc/howto/functional.rst:850 msgid "" ":func:`itertools.filterfalse(predicate, iter) ` is " "the opposite of :func:`filter`, returning all elements for which the " @@ -1374,7 +1375,7 @@ msgstr "" "opuesto de :func:`filter`, retornando todos los elementos para los que el " "predicado retorna falso::" -#: ../Doc/howto/functional.rst:850 +#: ../Doc/howto/functional.rst:857 msgid "" ":func:`itertools.takewhile(predicate, iter) ` returns " "elements for as long as the predicate returns true. Once the predicate " @@ -1384,7 +1385,7 @@ msgstr "" "los elementos mientras el predicado retorne verdadero. Una vez que el " "predicado retorna falso, el iterador indicará el final de sus resultados. ::" -#: ../Doc/howto/functional.rst:863 +#: ../Doc/howto/functional.rst:870 msgid "" ":func:`itertools.dropwhile(predicate, iter) ` discards " "elements while the predicate returns true, and then returns the rest of the " @@ -1394,7 +1395,7 @@ msgstr "" "los elementos mientras el predicado retorne verdadero, y luego retorna el " "resto de los resultados del iterable. ::" -#: ../Doc/howto/functional.rst:873 +#: ../Doc/howto/functional.rst:880 msgid "" ":func:`itertools.compress(data, selectors) ` takes two " "iterators and returns only those elements of *data* for which the " @@ -1406,11 +1407,11 @@ msgstr "" "elemento correspondiente de *selectors* es verdadero, deteniéndose cuando " "alguno se termine::" -#: ../Doc/howto/functional.rst:882 +#: ../Doc/howto/functional.rst:889 msgid "Combinatoric functions" msgstr "Funciones combinatorias" -#: ../Doc/howto/functional.rst:884 +#: ../Doc/howto/functional.rst:891 msgid "" "The :func:`itertools.combinations(iterable, r) ` " "returns an iterator giving all possible *r*-tuple combinations of the " @@ -1420,7 +1421,7 @@ msgstr "" "combinations>` retorna un iterador proporcionando todas las combinaciones de " "*r*-tuplas de los elementos contenidos en *iterable*. ::" -#: ../Doc/howto/functional.rst:899 +#: ../Doc/howto/functional.rst:906 msgid "" "The elements within each tuple remain in the same order as *iterable* " "returned them. For example, the number 1 is always before 2, 3, 4, or 5 in " @@ -1435,7 +1436,7 @@ msgstr "" "restricción en el orden, retornando todas las disposiciones posibles de " "longitud *r*::" -#: ../Doc/howto/functional.rst:918 +#: ../Doc/howto/functional.rst:925 msgid "" "If you don't supply a value for *r* the length of the iterable is used, " "meaning that all the elements are permuted." @@ -1443,7 +1444,7 @@ msgstr "" "Si no suministra un valor para *r* se usa la longitud del iterable, lo que " "significa que se permutan todos los elementos." -#: ../Doc/howto/functional.rst:921 +#: ../Doc/howto/functional.rst:928 msgid "" "Note that these functions produce all of the possible combinations by " "position and don't require that the contents of *iterable* are unique::" @@ -1451,7 +1452,7 @@ msgstr "" "Note que estas funciones producen todas las combinaciones posibles por " "posición y no requieren que los contenidos de *iterable* sean únicos::" -#: ../Doc/howto/functional.rst:928 +#: ../Doc/howto/functional.rst:935 msgid "" "The identical tuple ``('a', 'a', 'b')`` occurs twice, but the two 'a' " "strings came from different positions." @@ -1459,7 +1460,7 @@ msgstr "" "La tupla idéntica ``('a', 'a', 'b')`` aparece dos veces, pero las dos " "cadenas de caracteres 'a' provienen de diferentes posiciones." -#: ../Doc/howto/functional.rst:931 +#: ../Doc/howto/functional.rst:938 msgid "" "The :func:`itertools.combinations_with_replacement(iterable, r) ` function relaxes a different constraint: " @@ -1473,11 +1474,11 @@ msgstr "" "un elemento se elige para la primera posición de cada tupla y luego se " "reemplaza antes de que se elija el segundo elemento. ::" -#: ../Doc/howto/functional.rst:946 +#: ../Doc/howto/functional.rst:953 msgid "Grouping elements" msgstr "Agrupar elementos" -#: ../Doc/howto/functional.rst:948 +#: ../Doc/howto/functional.rst:955 msgid "" "The last function I'll discuss, :func:`itertools.groupby(iter, " "key_func=None) `, is the most complicated. " @@ -1491,7 +1492,7 @@ msgstr "" "iterable. Si no suministra una función de clave, la clave será simplemente " "el elemento mismo." -#: ../Doc/howto/functional.rst:953 +#: ../Doc/howto/functional.rst:960 msgid "" ":func:`~itertools.groupby` collects all the consecutive elements from the " "underlying iterable that have the same key value, and returns a stream of 2-" @@ -1502,7 +1503,7 @@ msgstr "" "tuplas que contienen un valor clave y un iterador para los elementos con esa " "clave." -#: ../Doc/howto/functional.rst:981 +#: ../Doc/howto/functional.rst:988 msgid "" ":func:`~itertools.groupby` assumes that the underlying iterable's contents " "will already be sorted based on the key. Note that the returned iterators " @@ -1514,11 +1515,11 @@ msgstr "" "usan el iterable subyacente, así que tiene que consumir los resultados de " "iterador-1 antes de solicitar iterador-2 y su clave correspondiente." -#: ../Doc/howto/functional.rst:988 +#: ../Doc/howto/functional.rst:995 msgid "The functools module" msgstr "El módulo functools" -#: ../Doc/howto/functional.rst:990 +#: ../Doc/howto/functional.rst:997 msgid "" "The :mod:`functools` module in Python 2.5 contains some higher-order " "functions. A **higher-order function** takes one or more functions as input " @@ -1530,7 +1531,7 @@ msgstr "" "entrada y retorna una nueva función. La herramienta más útil en este módulo " "es la función :func:`functools.partial`." -#: ../Doc/howto/functional.rst:995 +#: ../Doc/howto/functional.rst:1002 msgid "" "For programs written in a functional style, you'll sometimes want to " "construct variants of existing functions that have some of the parameters " @@ -1546,7 +1547,7 @@ msgstr "" "está completando un valor para uno de los parámetros de ``f()``. Esto se " "llama \"aplicación parcial de funciones\"." -#: ../Doc/howto/functional.rst:1001 +#: ../Doc/howto/functional.rst:1008 msgid "" "The constructor for :func:`~functools.partial` takes the arguments " "``(function, arg1, arg2, ..., kwarg1=value1, kwarg2=value2)``. The " @@ -1558,11 +1559,11 @@ msgstr "" "resultante es invocable, por lo que puede invocar a ``function`` con los " "argumentos rellenados." -#: ../Doc/howto/functional.rst:1006 +#: ../Doc/howto/functional.rst:1013 msgid "Here's a small but realistic example::" msgstr "Aquí hay un ejemplo pequeño pero realista::" -#: ../Doc/howto/functional.rst:1018 +#: ../Doc/howto/functional.rst:1025 msgid "" ":func:`functools.reduce(func, iter, [initial_value]) ` " "cumulatively performs an operation on all the iterable's elements and, " @@ -1588,7 +1589,7 @@ msgstr "" "suministra el valor inicial, se usa como punto inicial y " "``func(initial_value, A)`` es el primer cálculo. ::" -#: ../Doc/howto/functional.rst:1042 +#: ../Doc/howto/functional.rst:1049 msgid "" "If you use :func:`operator.add` with :func:`functools.reduce`, you'll add up " "all the elements of the iterable. This case is so common that there's a " @@ -1598,7 +1599,7 @@ msgstr "" "elementos del iterable. Este caso es tan común que hay una función " "incorporada especial llamada :func:`sum` para calcularla:" -#: ../Doc/howto/functional.rst:1054 +#: ../Doc/howto/functional.rst:1061 msgid "" "For many uses of :func:`functools.reduce`, though, it can be clearer to just " "write the obvious :keyword:`for` loop::" @@ -1606,7 +1607,7 @@ msgstr "" "Sin embargo, para muchos usos de :func:`functools.reduce` puede ser mas " "claro simplemente escribir el ciclo :keyword:`for`::" -#: ../Doc/howto/functional.rst:1066 +#: ../Doc/howto/functional.rst:1073 msgid "" "A related function is :func:`itertools.accumulate(iterable, func=operator." "add) `. It performs the same calculation, but instead " @@ -1618,11 +1619,11 @@ msgstr "" "en lugar de retornar solo el resultado final, :func:`accumulate` retorna un " "iterador que también produce cada resultado parcial::" -#: ../Doc/howto/functional.rst:1079 +#: ../Doc/howto/functional.rst:1086 msgid "The operator module" msgstr "El módulo operator" -#: ../Doc/howto/functional.rst:1081 +#: ../Doc/howto/functional.rst:1088 msgid "" "The :mod:`operator` module was mentioned earlier. It contains a set of " "functions corresponding to Python's operators. These functions are often " @@ -1634,11 +1635,11 @@ msgstr "" "menudo son útiles en código en estilo funcional porque le salvan de escribir " "funciones triviales que realizan una sola operación." -#: ../Doc/howto/functional.rst:1086 +#: ../Doc/howto/functional.rst:1093 msgid "Some of the functions in this module are:" msgstr "Algunas de las funciones en este módulo son:" -#: ../Doc/howto/functional.rst:1088 +#: ../Doc/howto/functional.rst:1095 msgid "" "Math operations: ``add()``, ``sub()``, ``mul()``, ``floordiv()``, " "``abs()``, ..." @@ -1646,33 +1647,33 @@ msgstr "" "Operaciones matemáticas: ``add()``, ``sub()``, ``mul()``, ``floordiv()``, " "``abs()``, ..." -#: ../Doc/howto/functional.rst:1089 +#: ../Doc/howto/functional.rst:1096 msgid "Logical operations: ``not_()``, ``truth()``." msgstr "Operaciones lógicas: ``not_()``, ``truth()``." -#: ../Doc/howto/functional.rst:1090 +#: ../Doc/howto/functional.rst:1097 msgid "Bitwise operations: ``and_()``, ``or_()``, ``invert()``." msgstr "Operaciones bit a bit: ``and_()``, ``or_()``, ``invert()``." -#: ../Doc/howto/functional.rst:1091 +#: ../Doc/howto/functional.rst:1098 msgid "" "Comparisons: ``eq()``, ``ne()``, ``lt()``, ``le()``, ``gt()``, and ``ge()``." msgstr "" "Comparaciones: ``eq()``, ``ne()``, ``lt()``, ``le()``, ``gt()`` y ``ge()``." -#: ../Doc/howto/functional.rst:1092 +#: ../Doc/howto/functional.rst:1099 msgid "Object identity: ``is_()``, ``is_not()``." msgstr "Identidad de objeto: ``is_()``, ``is_not()``." -#: ../Doc/howto/functional.rst:1094 +#: ../Doc/howto/functional.rst:1101 msgid "Consult the operator module's documentation for a complete list." msgstr "Consulte la documentación del módulo operator para una lista completa." -#: ../Doc/howto/functional.rst:1098 +#: ../Doc/howto/functional.rst:1105 msgid "Small functions and the lambda expression" msgstr "Funciones pequeñas y la expresión lambda" -#: ../Doc/howto/functional.rst:1100 +#: ../Doc/howto/functional.rst:1107 msgid "" "When writing functional-style programs, you'll often need little functions " "that act as predicates or that combine elements in some way." @@ -1681,7 +1682,7 @@ msgstr "" "pequeñas funciones que actúen como predicados o que combinen elementos de " "alguna manera." -#: ../Doc/howto/functional.rst:1103 +#: ../Doc/howto/functional.rst:1110 msgid "" "If there's a Python built-in or a module function that's suitable, you don't " "need to define a new function at all::" @@ -1689,7 +1690,7 @@ msgstr "" "Si hay una función incorporada o un módulo de Python, no necesita definir " "una nueva función en absoluto::" -#: ../Doc/howto/functional.rst:1109 +#: ../Doc/howto/functional.rst:1116 msgid "" "If the function you need doesn't exist, you need to write it. One way to " "write small functions is to use the :keyword:`lambda` expression. " @@ -1702,7 +1703,7 @@ msgstr "" "``lambda`` recibe un número de parámetros y una expresión que combina estos " "parámetros, y crea una función anónima que retorna el valor de la expresión::" -#: ../Doc/howto/functional.rst:1118 +#: ../Doc/howto/functional.rst:1125 msgid "" "An alternative is to just use the ``def`` statement and define a function in " "the usual way::" @@ -1710,7 +1711,7 @@ msgstr "" "Una alternativa es simplemente usar la sentencia ``def`` y definir una " "función en la forma usual::" -#: ../Doc/howto/functional.rst:1127 +#: ../Doc/howto/functional.rst:1134 msgid "" "Which alternative is preferable? That's a style question; my usual course " "is to avoid using ``lambda``." @@ -1718,7 +1719,7 @@ msgstr "" "¿Qué alternativa es preferible? Esa es una pregunta de estilo; mi rumbo " "usual es evitar usar ``lambda``." -#: ../Doc/howto/functional.rst:1130 +#: ../Doc/howto/functional.rst:1137 msgid "" "One reason for my preference is that ``lambda`` is quite limited in the " "functions it can define. The result has to be computable as a single " @@ -1734,7 +1735,7 @@ msgstr "" "sentencia ``lambda``, terminará con una expresión demasiado complicada que " "es difícil de leer. Rápido, ¿qué hace el siguiente código? ::" -#: ../Doc/howto/functional.rst:1140 +#: ../Doc/howto/functional.rst:1147 msgid "" "You can figure it out, but it takes time to disentangle the expression to " "figure out what's going on. Using a short nested ``def`` statements makes " @@ -1744,16 +1745,16 @@ msgstr "" "que está pasando. Usar una corta sentencia ``def`` anidada hace las cosas un " "poco mejor::" -#: ../Doc/howto/functional.rst:1150 +#: ../Doc/howto/functional.rst:1157 msgid "But it would be best of all if I had simply used a ``for`` loop::" msgstr "" "Pero lo mejor de todo sería si simplemente hubiese usado un ciclo ``for``::" -#: ../Doc/howto/functional.rst:1156 +#: ../Doc/howto/functional.rst:1163 msgid "Or the :func:`sum` built-in and a generator expression::" msgstr "O la función incorporada :func:`sum` y una expresión generadora::" -#: ../Doc/howto/functional.rst:1160 +#: ../Doc/howto/functional.rst:1167 msgid "" "Many uses of :func:`functools.reduce` are clearer when written as ``for`` " "loops." @@ -1761,7 +1762,7 @@ msgstr "" "Muchos usos de :func:`functools.reduce` son más claros cuando se escriben " "como ciclos ``for``." -#: ../Doc/howto/functional.rst:1162 +#: ../Doc/howto/functional.rst:1169 msgid "" "Fredrik Lundh once suggested the following set of rules for refactoring uses " "of ``lambda``:" @@ -1769,15 +1770,15 @@ msgstr "" "Fredrik Lundh una vez sugirió el siguiente conjunto de reglas para " "refactorizar los usos de ``lambda``:" -#: ../Doc/howto/functional.rst:1165 +#: ../Doc/howto/functional.rst:1172 msgid "Write a lambda function." msgstr "Escribir una función lambda." -#: ../Doc/howto/functional.rst:1166 +#: ../Doc/howto/functional.rst:1173 msgid "Write a comment explaining what the heck that lambda does." msgstr "Escribir un comentario explicando qué demonios hace esa lambda." -#: ../Doc/howto/functional.rst:1167 +#: ../Doc/howto/functional.rst:1174 msgid "" "Study the comment for a while, and think of a name that captures the essence " "of the comment." @@ -1785,15 +1786,15 @@ msgstr "" "Estudiar el comentario por un momento, y pensar en un nombre que capture la " "esencia del comentario." -#: ../Doc/howto/functional.rst:1169 +#: ../Doc/howto/functional.rst:1176 msgid "Convert the lambda to a def statement, using that name." msgstr "Convertir la lambda a una sentencia def, usando ese nombre." -#: ../Doc/howto/functional.rst:1170 +#: ../Doc/howto/functional.rst:1177 msgid "Remove the comment." msgstr "Remover el comentario." -#: ../Doc/howto/functional.rst:1172 +#: ../Doc/howto/functional.rst:1179 msgid "" "I really like these rules, but you're free to disagree about whether this " "lambda-free style is better." @@ -1801,11 +1802,11 @@ msgstr "" "Me gustan mucho estas reglas, pero es libre de disentir acerca de si este " "estilo libre de lambda es mejor." -#: ../Doc/howto/functional.rst:1177 +#: ../Doc/howto/functional.rst:1184 msgid "Revision History and Acknowledgements" msgstr "Historia de revisiones y reconocimientos" -#: ../Doc/howto/functional.rst:1179 +#: ../Doc/howto/functional.rst:1186 msgid "" "The author would like to thank the following people for offering " "suggestions, corrections and assistance with various drafts of this article: " @@ -1818,17 +1819,17 @@ msgstr "" "Jewett, Mike Krell, Leandro Lameiro, Jussi Salmela, Collin Winter, Blake " "Winton." -#: ../Doc/howto/functional.rst:1184 +#: ../Doc/howto/functional.rst:1191 msgid "Version 0.1: posted June 30 2006." msgstr "Versión 0.1: publicada el 30 de junio de 2006." -#: ../Doc/howto/functional.rst:1186 +#: ../Doc/howto/functional.rst:1193 msgid "Version 0.11: posted July 1 2006. Typo fixes." msgstr "" "Versión 0.11: publicada el 1 de julio de 2006. Errores tipográficos " "arreglados." -#: ../Doc/howto/functional.rst:1188 +#: ../Doc/howto/functional.rst:1195 msgid "" "Version 0.2: posted July 10 2006. Merged genexp and listcomp sections into " "one. Typo fixes." @@ -1836,14 +1837,14 @@ msgstr "" "Versión 0.2: publicada el 10 de julio de 2006. Secciones genexp y listcomp " "unidas en una sola. Errores tipográficos arreglados." -#: ../Doc/howto/functional.rst:1191 +#: ../Doc/howto/functional.rst:1198 msgid "" "Version 0.21: Added more references suggested on the tutor mailing list." msgstr "" "Versión 0.21: Agregadas mas referencias sugeridas en la lista de correos " "tutor." -#: ../Doc/howto/functional.rst:1193 +#: ../Doc/howto/functional.rst:1200 msgid "" "Version 0.30: Adds a section on the ``functional`` module written by Collin " "Winter; adds short section on the operator module; a few other edits." @@ -1852,15 +1853,15 @@ msgstr "" "Collin Winter; agrega una sección corta sobre el módulo operator; y unas " "pocas otras ediciones." -#: ../Doc/howto/functional.rst:1198 +#: ../Doc/howto/functional.rst:1205 msgid "References" msgstr "Referencias" -#: ../Doc/howto/functional.rst:1201 +#: ../Doc/howto/functional.rst:1208 msgid "General" msgstr "Generales" -#: ../Doc/howto/functional.rst:1203 +#: ../Doc/howto/functional.rst:1210 msgid "" "**Structure and Interpretation of Computer Programs**, by Harold Abelson and " "Gerald Jay Sussman with Julie Sussman. Full text at https://mitpress.mit." @@ -1878,9 +1879,10 @@ msgstr "" "muchos de los enfoques de diseño descritos en estos capítulos son aplicables " "al código de Python en estilo funcional." -#: ../Doc/howto/functional.rst:1211 +#: ../Doc/howto/functional.rst:1218 +#, fuzzy msgid "" -"http://www.defmacro.org/ramblings/fp.html: A general introduction to " +"https://www.defmacro.org/ramblings/fp.html: A general introduction to " "functional programming that uses Java examples and has a lengthy historical " "introduction." msgstr "" @@ -1888,7 +1890,7 @@ msgstr "" "programación funcional que usa ejemplos en Java y tiene una introducción " "histórica extensa." -#: ../Doc/howto/functional.rst:1214 +#: ../Doc/howto/functional.rst:1221 msgid "" "https://en.wikipedia.org/wiki/Functional_programming: General Wikipedia " "entry describing functional programming." @@ -1896,24 +1898,25 @@ msgstr "" "https://es.wikipedia.org/wiki/Programaci%C3%B3n_funcional: Entrada general " "de Wikipedia que describe la programación funcional." -#: ../Doc/howto/functional.rst:1217 +#: ../Doc/howto/functional.rst:1224 msgid "https://en.wikipedia.org/wiki/Coroutine: Entry for coroutines." msgstr "https://es.wikipedia.org/wiki/Corrutina: Entrada para corrutinas." -#: ../Doc/howto/functional.rst:1219 +#: ../Doc/howto/functional.rst:1226 msgid "" "https://en.wikipedia.org/wiki/Currying: Entry for the concept of currying." msgstr "" "https://es.wikipedia.org/wiki/Currificaci%C3%B3n: Entrada para el concepto " "de currificación." -#: ../Doc/howto/functional.rst:1222 +#: ../Doc/howto/functional.rst:1229 msgid "Python-specific" msgstr "Específicas de Python" -#: ../Doc/howto/functional.rst:1224 +#: ../Doc/howto/functional.rst:1231 +#, fuzzy msgid "" -"http://gnosis.cx/TPiP/: The first chapter of David Mertz's book :title-" +"https://gnosis.cx/TPiP/: The first chapter of David Mertz's book :title-" "reference:`Text Processing in Python` discusses functional programming for " "text processing, in the section titled \"Utilizing Higher-Order Functions in " "Text Processing\"." @@ -1923,7 +1926,7 @@ msgstr "" "procesamiento de texto, en la sección titulada \"Utilizando funciones de " "orden superior en procesamiento de texto\"." -#: ../Doc/howto/functional.rst:1229 +#: ../Doc/howto/functional.rst:1236 msgid "" "Mertz also wrote a 3-part series of articles on functional programming for " "IBM's DeveloperWorks site; see `part 1 `__, y `parte 3 `__," -#: ../Doc/howto/functional.rst:1237 +#: ../Doc/howto/functional.rst:1244 msgid "Python documentation" msgstr "Documentación de Python" -#: ../Doc/howto/functional.rst:1239 +#: ../Doc/howto/functional.rst:1246 msgid "Documentation for the :mod:`itertools` module." msgstr "Documentación del módulo :mod:`itertools`." -#: ../Doc/howto/functional.rst:1241 +#: ../Doc/howto/functional.rst:1248 msgid "Documentation for the :mod:`functools` module." msgstr "Documentación del módulo :mod:`functools`." -#: ../Doc/howto/functional.rst:1243 +#: ../Doc/howto/functional.rst:1250 msgid "Documentation for the :mod:`operator` module." msgstr "Documentación del módulo :mod:`operator`." -#: ../Doc/howto/functional.rst:1245 +#: ../Doc/howto/functional.rst:1252 msgid ":pep:`289`: \"Generator Expressions\"" msgstr ":pep:`289`: \"Expresiones generadoras\"" -#: ../Doc/howto/functional.rst:1247 +#: ../Doc/howto/functional.rst:1254 msgid "" ":pep:`342`: \"Coroutines via Enhanced Generators\" describes the new " "generator features in Python 2.5." diff --git a/howto/instrumentation.po b/howto/instrumentation.po index afbab3afb1..e099c5d708 100644 --- a/howto/instrumentation.po +++ b/howto/instrumentation.po @@ -10,16 +10,16 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-08-04 17:42+0200\n" "Last-Translator: Cristián Maureira-Fredes \n" -"Language-Team: python-doc-es\n" "Language: es\n" +"Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" -"Generated-By: Babel 2.9.1\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/howto/instrumentation.rst:7 msgid "Instrumenting CPython with DTrace and SystemTap" @@ -150,9 +150,10 @@ msgstr "" "metadatos::" #: ../Doc/howto/instrumentation.rst:125 +#, fuzzy msgid "" "The above metadata contains information for SystemTap describing how it can " -"patch strategically-placed machine code instructions to enable the tracing " +"patch strategically placed machine code instructions to enable the tracing " "hooks used by a SystemTap script." msgstr "" "Los metadatos anteriores contienen información para SystemTap que describe " @@ -264,8 +265,8 @@ msgstr "" #: ../Doc/howto/instrumentation.rst:282 msgid "" "The filename, function name, and line number are provided back to the " -"tracing script as positional arguments, which must be accessed using ``" -"$arg1``, ``$arg2``, ``$arg3``:" +"tracing script as positional arguments, which must be accessed using " +"``$arg1``, ``$arg2``, ``$arg3``:" msgstr "" "El nombre del archivo, el nombre de la función y el número de línea se " "retornan al script de rastreo como argumentos posicionales, a los que se " @@ -369,9 +370,9 @@ msgstr "SystemTap Tapsets" #: ../Doc/howto/instrumentation.rst:347 msgid "" -"The higher-level way to use the SystemTap integration is to use a \"tapset" -"\": SystemTap's equivalent of a library, which hides some of the lower-level " -"details of the static markers." +"The higher-level way to use the SystemTap integration is to use a " +"\"tapset\": SystemTap's equivalent of a library, which hides some of the " +"lower-level details of the static markers." msgstr "" "La forma de nivel superior de utilizar la integración de SystemTap es " "utilizar un \"tapset\": el equivalente de SystemTap a una biblioteca, que " @@ -428,9 +429,10 @@ msgstr "" "estáticos:" #: ../Doc/howto/instrumentation.rst:412 +#, fuzzy msgid "" "The following script uses the tapset above to provide a top-like view of all " -"running CPython code, showing the top 20 most frequently-entered bytecode " +"running CPython code, showing the top 20 most frequently entered bytecode " "frames, each second, across the whole system:" msgstr "" "El siguiente script utiliza el tapset de arriba para proporcionar una vista " diff --git a/howto/isolating-extensions.po b/howto/isolating-extensions.po new file mode 100644 index 0000000000..f24ccfc428 --- /dev/null +++ b/howto/isolating-extensions.po @@ -0,0 +1,633 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2001-2022, Python Software Foundation +# This file is distributed under the same license as the Python en Español +# package. +# FIRST AUTHOR , 2022. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Python en Español 3.11\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-10-25 19:47+0200\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" +"Generated-By: Babel 2.10.3\n" + +#: ../Doc/howto/isolating-extensions.rst:5 +msgid "Isolating Extension Modules" +msgstr "" + +msgid "Abstract" +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:9 +msgid "" +"Traditionally, state belonging to Python extension modules was kept in C " +"``static`` variables, which have process-wide scope. This document describes " +"problems of such per-process state and shows a safer way: per-module state." +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:14 +msgid "" +"The document also describes how to switch to per-module state where " +"possible. This transition involves allocating space for that state, " +"potentially switching from static types to heap types, and—perhaps most " +"importantly—accessing per-module state from code." +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:21 +msgid "Who should read this" +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:23 +msgid "" +"This guide is written for maintainers of :ref:`C-API ` " +"extensions who would like to make that extension safer to use in " +"applications where Python itself is used as a library." +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:29 +msgid "Background" +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:31 +msgid "" +"An *interpreter* is the context in which Python code runs. It contains " +"configuration (e.g. the import path) and runtime state (e.g. the set of " +"imported modules)." +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:35 +msgid "" +"Python supports running multiple interpreters in one process. There are two " +"cases to think about—users may run interpreters:" +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:38 +msgid "" +"in sequence, with several :c:func:`Py_InitializeEx`/:c:func:`Py_FinalizeEx` " +"cycles, and" +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:40 +msgid "" +"in parallel, managing \"sub-interpreters\" using :c:func:" +"`Py_NewInterpreter`/:c:func:`Py_EndInterpreter`." +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:43 +msgid "" +"Both cases (and combinations of them) would be most useful when embedding " +"Python within a library. Libraries generally shouldn't make assumptions " +"about the application that uses them, which include assuming a process-wide " +"\"main Python interpreter\"." +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:48 +msgid "" +"Historically, Python extension modules don't handle this use case well. Many " +"extension modules (and even some stdlib modules) use *per-process* global " +"state, because C ``static`` variables are extremely easy to use. Thus, data " +"that should be specific to an interpreter ends up being shared between " +"interpreters. Unless the extension developer is careful, it is very easy to " +"introduce edge cases that lead to crashes when a module is loaded in more " +"than one interpreter in the same process." +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:56 +msgid "" +"Unfortunately, *per-interpreter* state is not easy to achieve. Extension " +"authors tend to not keep multiple interpreters in mind when developing, and " +"it is currently cumbersome to test the behavior." +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:61 +msgid "Enter Per-Module State" +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:63 +msgid "" +"Instead of focusing on per-interpreter state, Python's C API is evolving to " +"better support the more granular *per-module* state. This means that C-level " +"data is be attached to a *module object*. Each interpreter creates its own " +"module object, keeping the data separate. For testing the isolation, " +"multiple module objects corresponding to a single extension can even be " +"loaded in a single interpreter." +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:70 +msgid "" +"Per-module state provides an easy way to think about lifetime and resource " +"ownership: the extension module will initialize when a module object is " +"created, and clean up when it's freed. In this regard, a module is just like " +"any other :c:expr:`PyObject *`; there are no \"on interpreter shutdown\" " +"hooks to think—or forget—about." +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:76 +msgid "" +"Note that there are use cases for different kinds of \"globals\": per-" +"process, per-interpreter, per-thread or per-task state. With per-module " +"state as the default, these are still possible, but you should treat them as " +"exceptional cases: if you need them, you should give them additional care " +"and testing. (Note that this guide does not cover them.)" +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:85 +msgid "Isolated Module Objects" +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:87 +msgid "" +"The key point to keep in mind when developing an extension module is that " +"several module objects can be created from a single shared library. For " +"example:" +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:101 +msgid "" +"As a rule of thumb, the two modules should be completely independent. All " +"objects and state specific to the module should be encapsulated within the " +"module object, not shared with other module objects, and cleaned up when the " +"module object is deallocated. Since this just is a rule of thumb, exceptions " +"are possible (see `Managing Global State`_), but they will need more thought " +"and attention to edge cases." +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:109 +msgid "" +"While some modules could do with less stringent restrictions, isolated " +"modules make it easier to set clear expectations and guidelines that work " +"across a variety of use cases." +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:115 +msgid "Surprising Edge Cases" +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:117 +msgid "" +"Note that isolated modules do create some surprising edge cases. Most " +"notably, each module object will typically not share its classes and " +"exceptions with other similar modules. Continuing from the `example above " +"`__, note that ``old_binascii.Error`` and " +"``binascii.Error`` are separate objects. In the following code, the " +"exception is *not* caught:" +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:137 +msgid "" +"This is expected. Notice that pure-Python modules behave the same way: it is " +"a part of how Python works." +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:140 +msgid "" +"The goal is to make extension modules safe at the C level, not to make hacks " +"behave intuitively. Mutating ``sys.modules`` \"manually\" counts as a hack." +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:146 +msgid "Making Modules Safe with Multiple Interpreters" +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:150 +msgid "Managing Global State" +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:152 +msgid "" +"Sometimes, the state associated with a Python module is not specific to that " +"module, but to the entire process (or something else \"more global\" than a " +"module). For example:" +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:156 +msgid "The ``readline`` module manages *the* terminal." +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:157 +msgid "" +"A module running on a circuit board wants to control *the* on-board LED." +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:160 +msgid "" +"In these cases, the Python module should provide *access* to the global " +"state, rather than *own* it. If possible, write the module so that multiple " +"copies of it can access the state independently (along with other libraries, " +"whether for Python or other languages). If that is not possible, consider " +"explicit locking." +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:166 +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`_." +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:173 +msgid "Managing Per-Module State" +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:175 +msgid "" +"To use per-module state, use :ref:`multi-phase extension module " +"initialization `. This signals that your module " +"supports multiple interpreters correctly." +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:179 +msgid "" +"Set ``PyModuleDef.m_size`` to a positive number to request that many bytes " +"of storage local to the module. Usually, this will be set to the size of " +"some module-specific ``struct``, which can store all of the module's C-level " +"state. In particular, it is where you should put pointers to classes " +"(including exceptions, but excluding static types) and settings (e.g. " +"``csv``'s :py:data:`~csv.field_size_limit`) which the C code needs to " +"function." +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:188 +msgid "" +"Another option is to store state in the module's ``__dict__``, but you must " +"avoid crashing when users modify ``__dict__`` from Python code. This usually " +"means error- and type-checking at the C level, which is easy to get wrong " +"and hard to test sufficiently." +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:193 +msgid "" +"However, if module state is not needed in C code, storing it in ``__dict__`` " +"only is a good idea." +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:196 +msgid "" +"If the module state includes ``PyObject`` pointers, the module object must " +"hold references to those objects and implement the module-level hooks " +"``m_traverse``, ``m_clear`` and ``m_free``. These work like ``tp_traverse``, " +"``tp_clear`` and ``tp_free`` of a class. Adding them will require some work " +"and make the code longer; this is the price for modules which can be " +"unloaded cleanly." +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:203 +msgid "" +"An example of a module with per-module state is currently available as " +"`xxlimited `__; example module initialization shown at the bottom of the file." +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:209 +msgid "Opt-Out: Limiting to One Module Object per Process" +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:211 +msgid "" +"A non-negative ``PyModuleDef.m_size`` signals that a module supports " +"multiple interpreters correctly. If this is not yet the case for your " +"module, you can explicitly make your module loadable only once per process. " +"For example::" +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:232 +msgid "Module State Access from Functions" +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:234 +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 "" + +#: ../Doc/howto/isolating-extensions.rst:249 +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 "" + +#: ../Doc/howto/isolating-extensions.rst:256 +msgid "Heap Types" +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:258 +msgid "" +"Traditionally, types defined in C code are *static*; that is, ``static " +"PyTypeObject`` structures defined directly in code and initialized using " +"``PyType_Ready()``." +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:262 +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 " +"limit the possible issues, static types are immutable at the Python level: " +"for example, you can't set ``str.myattribute = 123``." +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:268 +msgid "" +"Sharing truly immutable objects between interpreters is fine, as long as " +"they don't provide access to mutable objects. However, in CPython, every " +"Python object has a mutable implementation detail: the reference count. " +"Changes to the refcount are guarded by the GIL. Thus, code that shares any " +"Python objects across interpreters implicitly depends on CPython's current, " +"process-wide GIL." +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:275 +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 " +"module state, the type must be converted to a *heap-allocated type*, or " +"*heap type* for short. These correspond more closely to classes created by " +"Python's ``class`` statement." +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:282 +msgid "For new modules, using heap types by default is a good rule of thumb." +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:286 +msgid "Changing Static Types to Heap Types" +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:288 +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, " +"creating a type that works exactly like a given static type. So, when " +"rewriting the class definition in a new API, you are likely to " +"unintentionally change a few details (e.g. pickleability or inherited " +"slots). Always test the details that are important to you." +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:297 +msgid "" +"Watch out for the following two points in particular (but note that this is " +"not a comprehensive list):" +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:300 +msgid "" +"Unlike static types, heap type objects are mutable by default. Use the :c:" +"data:`Py_TPFLAGS_IMMUTABLETYPE` flag to prevent mutability." +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:302 +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:data:`Py_TPFLAGS_DISALLOW_INSTANTIATION` flag." +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:308 +msgid "Defining Heap Types" +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:310 +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 "" + +#: ../Doc/howto/isolating-extensions.rst:315 +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 "" + +#: ../Doc/howto/isolating-extensions.rst:319 +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 "" + +#: ../Doc/howto/isolating-extensions.rst:325 +msgid "Garbage-Collection Protocol" +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:327 +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 "" + +#: ../Doc/howto/isolating-extensions.rst:332 +msgid "" +"To avoid memory leaks, instances of heap types must implement the garbage " +"collection protocol. That is, heap types should:" +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:336 +msgid "Have the :c:data:`Py_TPFLAGS_HAVE_GC` flag." +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:337 +msgid "" +"Define a traverse function using ``Py_tp_traverse``, which visits the type " +"(e.g. using :c:expr:`Py_VISIT(Py_TYPE(self))`)." +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:340 +msgid "" +"Please refer to the :ref:`the documentation ` of :c:data:" +"`Py_TPFLAGS_HAVE_GC` and :c:member:`~PyTypeObject.tp_traverse` for " +"additional considerations." +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:344 +msgid "" +"If your traverse function delegates to the ``tp_traverse`` of its base class " +"(or another type), ensure that ``Py_TYPE(self)`` is visited only once. Note " +"that only heap type are expected to visit the type in ``tp_traverse``." +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:348 +msgid "For example, if your traverse function includes::" +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:352 +msgid "...and ``base`` may be a static type, then it should also include::" +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:360 +msgid "" +"It is not necessary to handle the type's reference count in ``tp_new`` and " +"``tp_clear``." +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:365 +msgid "Module State Access from Classes" +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:367 +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 "" + +#: ../Doc/howto/isolating-extensions.rst:371 +msgid "" +"To save a some tedious error-handling boilerplate code, you can combine " +"these two steps with :c:func:`PyType_GetModuleState`, resulting in::" +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:381 +msgid "Module State Access from Regular Methods" +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:383 +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 " +"the state, you need to first get the *defining class*, and then get the " +"module state from it." +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:388 +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 "" + +#: ../Doc/howto/isolating-extensions.rst:392 +msgid "" +"Do not confuse the defining class with :c:expr:`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 "" + +#: ../Doc/howto/isolating-extensions.rst:397 +msgid "" +"The following Python code can illustrate the concept. ``Base." +"get_defining_class`` returns ``Base`` even if ``type(self) == Sub``:" +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:413 +msgid "" +"For a method to get its \"defining class\", it must use the :data:" +"`METH_METHOD | METH_FASTCALL | METH_KEYWORDS` :c:type:`calling convention " +"` and the corresponding :c:type:`PyCMethod` signature::" +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:425 +msgid "" +"Once you have the defining class, call :c:func:`PyType_GetModuleState` to " +"get the state of its associated module." +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:428 +msgid "For example::" +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:456 +msgid "Module State Access from Slot Methods, Getters and Setters" +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:460 +msgid "This is new in Python 3.11." +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:468 +msgid "" +"Slot methods—the fast C equivalents for special methods, such as :c:member:" +"`~PyNumberMethods.nb_add` for :py:attr:`~object.__add__` or :c:member:" +"`~PyType.tp_new` for initialization—have a very simple API that doesn't " +"allow passing in the defining class, unlike with :c:type:`PyCMethod`. The " +"same goes for getters and setters defined with :c:type:`PyGetSetDef`." +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:475 +msgid "" +"To access the module state in these cases, use the :c:func:" +"`PyType_GetModuleByDef` function, and pass in the module definition. Once " +"you have the module, call :c:func:`PyModule_GetState` to get the state::" +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:486 +msgid "" +"``PyType_GetModuleByDef`` works by searching the :term:`method resolution " +"order` (i.e. all superclasses) for the first superclass that has a " +"corresponding module." +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:492 +msgid "" +"In very exotic cases (inheritance chains spanning multiple modules created " +"from the same definition), ``PyType_GetModuleByDef`` might not return the " +"module of the true defining class. However, it will always return a module " +"with the same definition, ensuring a compatible C memory layout." +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:500 +msgid "Lifetime of the Module State" +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:502 +msgid "" +"When a module object is garbage-collected, its module state is freed. For " +"each pointer to (a part of) the module state, you must hold a reference to " +"the module object." +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:506 +msgid "" +"Usually this is not an issue, because types created with :c:func:" +"`PyType_FromModuleAndSpec`, and their instances, hold a reference to the " +"module. However, you must be careful in reference counting when you " +"reference module state from other places, such as callbacks for external " +"libraries." +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:515 +msgid "Open Issues" +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:517 +msgid "Several issues around per-module state and heap types are still open." +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:519 +msgid "" +"Discussions about improving the situation are best held on the `capi-sig " +"mailing list `__." +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:524 +msgid "Per-Class Scope" +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:526 +msgid "" +"It is currently (as of Python 3.11) not possible to attach state to " +"individual *types* without relying on CPython implementation details (which " +"may change in the future—perhaps, ironically, to allow a proper solution for " +"per-class scope)." +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:533 +msgid "Lossless Conversion to Heap Types" +msgstr "" + +#: ../Doc/howto/isolating-extensions.rst:535 +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." +msgstr "" diff --git a/howto/logging-cookbook.po b/howto/logging-cookbook.po index 3c0d165262..4b48b89b78 100644 --- a/howto/logging-cookbook.po +++ b/howto/logging-cookbook.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-11-26 15:32+0100\n" "Last-Translator: Cristián Maureira-Fredes \n" "Language: es\n" @@ -19,8 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/howto/logging-cookbook.rst:5 msgid "Logging Cookbook" @@ -35,18 +34,20 @@ msgid "Vinay Sajip " msgstr "Vinay Sajip " #: ../Doc/howto/logging-cookbook.rst:9 +#, fuzzy msgid "" "This page contains a number of recipes related to logging, which have been " -"found useful in the past." +"found useful in the past. For links to tutorial and reference information, " +"please see :ref:`cookbook-ref-links`." msgstr "" "Esta página contiene un número de recetas sobre *logging*, que han sido " "útiles en el pasado." -#: ../Doc/howto/logging-cookbook.rst:15 +#: ../Doc/howto/logging-cookbook.rst:16 msgid "Using logging in multiple modules" msgstr "Usar logging en múltiples módulos" -#: ../Doc/howto/logging-cookbook.rst:17 +#: ../Doc/howto/logging-cookbook.rst:18 msgid "" "Multiple calls to ``logging.getLogger('someLogger')`` return a reference to " "the same logger object. This is true not only within the same module, but " @@ -69,19 +70,19 @@ msgstr "" # Esto me confunde un poco. Cuando menciona módulo principal / auxiliar en los # ejemplos, ¿se refiere a principal y secundario que está en el cuerpo del # texto? ¿no convendría unificar? -#: ../Doc/howto/logging-cookbook.rst:55 +#: ../Doc/howto/logging-cookbook.rst:56 msgid "Here is the auxiliary module::" msgstr "Y aquí un módulo auxiliar::" -#: ../Doc/howto/logging-cookbook.rst:75 +#: ../Doc/howto/logging-cookbook.rst:76 msgid "The output looks like this:" msgstr "El resultado se ve así:" -#: ../Doc/howto/logging-cookbook.rst:101 +#: ../Doc/howto/logging-cookbook.rst:102 msgid "Logging from multiple threads" msgstr "Logging desde múltiples hilos" -#: ../Doc/howto/logging-cookbook.rst:103 +#: ../Doc/howto/logging-cookbook.rst:104 msgid "" "Logging from multiple threads requires no special effort. The following " "example shows logging from the main (initial) thread and another thread::" @@ -90,11 +91,11 @@ msgstr "" "esfuerzo especial. El siguiente ejemplo muestra el logging desde el hilo " "principal (inicial) y otro hilo::" -#: ../Doc/howto/logging-cookbook.rst:132 +#: ../Doc/howto/logging-cookbook.rst:133 msgid "When run, the script should print something like the following:" msgstr "Cuando se ejecuta, el script debe imprimir algo como lo siguiente:" -#: ../Doc/howto/logging-cookbook.rst:154 +#: ../Doc/howto/logging-cookbook.rst:155 msgid "" "This shows the logging output interspersed as one might expect. This " "approach works for more threads than shown here, of course." @@ -102,11 +103,11 @@ msgstr "" "Esto muestra la salida de logging intercalada como cabría esperar. Por " "supuesto, este enfoque funciona para más hilos de lo que se muestran aquí." -#: ../Doc/howto/logging-cookbook.rst:158 +#: ../Doc/howto/logging-cookbook.rst:159 msgid "Multiple handlers and formatters" msgstr "Múltiples gestores y formateadores" -#: ../Doc/howto/logging-cookbook.rst:160 +#: ../Doc/howto/logging-cookbook.rst:161 msgid "" "Loggers are plain Python objects. The :meth:`~Logger.addHandler` method has " "no minimum or maximum quota for the number of handlers you may add. " @@ -127,7 +128,7 @@ msgstr "" "una ligera modificación al ejemplo de configuración simple anterior basado " "en módulo::" -#: ../Doc/howto/logging-cookbook.rst:193 +#: ../Doc/howto/logging-cookbook.rst:194 msgid "" "Notice that the 'application' code does not care about multiple handlers. " "All that changed was the addition and configuration of a new handler named " @@ -137,7 +138,7 @@ msgstr "" "gestores múltiples. Todo lo que cambió fue la adición y configuración de un " "nuevo gestor llamado *fh*." -#: ../Doc/howto/logging-cookbook.rst:196 +#: ../Doc/howto/logging-cookbook.rst:197 msgid "" "The ability to create new handlers with higher- or lower-severity filters " "can be very helpful when writing and testing an application. Instead of " @@ -157,11 +158,11 @@ msgstr "" "nuevamente. En ese momento, el único cambio que debe realizar es modificar " "el nivel de prioridad del *logger* y/o gestor para depurar." -#: ../Doc/howto/logging-cookbook.rst:207 +#: ../Doc/howto/logging-cookbook.rst:208 msgid "Logging to multiple destinations" msgstr "Logging en múltiples destinos" -#: ../Doc/howto/logging-cookbook.rst:209 +#: ../Doc/howto/logging-cookbook.rst:210 msgid "" "Let's say you want to log to console and file with different message formats " "and in differing circumstances. Say you want to log messages with levels of " @@ -176,15 +177,15 @@ msgstr "" "grabar una marca de tiempo en el archivo y no imprimirlo en la consola. " "Puede lograr este comportamiento haciendo lo siguiente::" -#: ../Doc/howto/logging-cookbook.rst:247 +#: ../Doc/howto/logging-cookbook.rst:248 msgid "When you run this, on the console you will see" msgstr "Cuando ejecute esto, en la consola verá" -#: ../Doc/howto/logging-cookbook.rst:256 +#: ../Doc/howto/logging-cookbook.rst:257 msgid "and in the file you will see something like" msgstr "y en el archivo verá algo como" -#: ../Doc/howto/logging-cookbook.rst:266 +#: ../Doc/howto/logging-cookbook.rst:267 msgid "" "As you can see, the DEBUG message only shows up in the file. The other " "messages are sent to both destinations." @@ -192,7 +193,7 @@ msgstr "" "Como se puede ver, el mensaje DEBUG sólo se muestra en el archivo. Los otros " "mensajes se envían a los dos destinos." -#: ../Doc/howto/logging-cookbook.rst:269 +#: ../Doc/howto/logging-cookbook.rst:270 msgid "" "This example uses console and file handlers, but you can use any number and " "combination of handlers you choose." @@ -200,17 +201,96 @@ msgstr "" "Este ejemplo usa gestores de consola y archivos, pero puede usar cualquier " "número y combinación de los gestores que elija." -#: ../Doc/howto/logging-cookbook.rst:274 +#: ../Doc/howto/logging-cookbook.rst:273 +msgid "" +"Note that the above choice of log filename ``/tmp/myapp.log`` implies use of " +"a standard location for temporary files on POSIX systems. On Windows, you " +"may need to choose a different directory name for the log - just ensure that " +"the directory exists and that you have the permissions to create and update " +"files in it." +msgstr "" + +#: ../Doc/howto/logging-cookbook.rst:282 +msgid "Custom handling of levels" +msgstr "" + +#: ../Doc/howto/logging-cookbook.rst:284 +msgid "" +"Sometimes, you might want to do something slightly different from the " +"standard handling of levels in handlers, where all levels above a threshold " +"get processed by a handler. To do this, you need to use filters. Let's look " +"at a scenario where you want to arrange things as follows:" +msgstr "" + +#: ../Doc/howto/logging-cookbook.rst:289 +msgid "Send messages of severity ``INFO`` and ``WARNING`` to ``sys.stdout``" +msgstr "" + +#: ../Doc/howto/logging-cookbook.rst:290 +msgid "Send messages of severity ``ERROR`` and above to ``sys.stderr``" +msgstr "" + +#: ../Doc/howto/logging-cookbook.rst:291 +msgid "Send messages of severity ``DEBUG`` and above to file ``app.log``" +msgstr "" + +#: ../Doc/howto/logging-cookbook.rst:293 +msgid "Suppose you configure logging with the following JSON:" +msgstr "" + +#: ../Doc/howto/logging-cookbook.rst:335 +msgid "" +"This configuration does *almost* what we want, except that ``sys.stdout`` " +"would show messages of severity ``ERROR`` and above as well as ``INFO`` and " +"``WARNING`` messages. To prevent this, we can set up a filter which excludes " +"those messages and add it to the relevant handler. This can be configured by " +"adding a ``filters`` section parallel to ``formatters`` and ``handlers``:" +msgstr "" + +#: ../Doc/howto/logging-cookbook.rst:350 +msgid "and changing the section on the ``stdout`` handler to add it:" +msgstr "" + +#: ../Doc/howto/logging-cookbook.rst:362 +msgid "" +"A filter is just a function, so we can define the ``filter_maker`` (a " +"factory function) as follows:" +msgstr "" + +#: ../Doc/howto/logging-cookbook.rst:375 +msgid "" +"This converts the string argument passed in to a numeric level, and returns " +"a function which only returns ``True`` if the level of the passed in record " +"is at or below the specified level. Note that in this example I have defined " +"the ``filter_maker`` in a test script ``main.py`` that I run from the " +"command line, so its module will be ``__main__`` - hence the ``__main__." +"filter_maker`` in the filter configuration. You will need to change that if " +"you define it in a different module." +msgstr "" + +#: ../Doc/howto/logging-cookbook.rst:383 +msgid "With the filter added, we can run ``main.py``, which in full is:" +msgstr "" + +#: ../Doc/howto/logging-cookbook.rst:453 +msgid "And after running it like this:" +msgstr "" + +#: ../Doc/howto/logging-cookbook.rst:459 +msgid "We can see the results are as expected:" +msgstr "" + +#: ../Doc/howto/logging-cookbook.rst:485 msgid "Configuration server example" msgstr "Ejemplo de servidor de configuración" -#: ../Doc/howto/logging-cookbook.rst:276 +#: ../Doc/howto/logging-cookbook.rst:487 msgid "Here is an example of a module using the logging configuration server::" msgstr "" "Aquí hay un ejemplo de un módulo que usa el servidor de configuración " "logging::" -#: ../Doc/howto/logging-cookbook.rst:307 +#: ../Doc/howto/logging-cookbook.rst:518 msgid "" "And here is a script that takes a filename and sends that file to the " "server, properly preceded with the binary-encoded length, as the new logging " @@ -220,11 +300,11 @@ msgstr "" "servidor, precedido adecuadamente con la longitud codificada en binario, " "como la nueva configuración de logging::" -#: ../Doc/howto/logging-cookbook.rst:330 +#: ../Doc/howto/logging-cookbook.rst:543 msgid "Dealing with handlers that block" msgstr "Tratar con gestores que bloquean" -#: ../Doc/howto/logging-cookbook.rst:334 +#: ../Doc/howto/logging-cookbook.rst:547 msgid "" "Sometimes you have to get your logging handlers to do their work without " "blocking the thread you're logging from. This is common in web applications, " @@ -235,7 +315,7 @@ msgstr "" "aplicaciones web, aunque, por supuesto, también ocurre en otros escenarios." # -"under the hood": de bajo nivel? más técnicas? -#: ../Doc/howto/logging-cookbook.rst:338 +#: ../Doc/howto/logging-cookbook.rst:551 msgid "" "A common culprit which demonstrates sluggish behaviour is the :class:" "`SMTPHandler`: sending emails can take a long time, for a number of reasons " @@ -254,7 +334,7 @@ msgstr "" "demasiado lenta (y esta consulta puede estar en el código de la biblioteca " "de socket, debajo de la capa de Python, y fuera de su control)." -#: ../Doc/howto/logging-cookbook.rst:346 +#: ../Doc/howto/logging-cookbook.rst:559 msgid "" "One solution is to use a two-part approach. For the first part, attach only " "a :class:`QueueHandler` to those loggers which are accessed from performance-" @@ -279,7 +359,7 @@ msgstr "" "adjuntar solo ``QueueHandlers`` a sus loggers) para el beneficio de otros " "desarrolladores que usarán su código." -#: ../Doc/howto/logging-cookbook.rst:357 +#: ../Doc/howto/logging-cookbook.rst:570 msgid "" "The second part of the solution is :class:`QueueListener`, which has been " "designed as the counterpart to :class:`QueueHandler`. A :class:" @@ -296,7 +376,7 @@ msgstr "" "cualquier otra fuente de ``LogRecords``, para el caso). Los ``LogRecords`` " "se eliminan de la cola y se pasan a los gestores para su procesamiento." -#: ../Doc/howto/logging-cookbook.rst:365 +#: ../Doc/howto/logging-cookbook.rst:578 msgid "" "The advantage of having a separate :class:`QueueListener` class is that you " "can use the same instance to service multiple ``QueueHandlers``. This is " @@ -310,16 +390,27 @@ msgstr "" "enhebradas de las clases de gestores existentes, que consumirían un hilo por " "gestor sin ningún beneficio particular." -#: ../Doc/howto/logging-cookbook.rst:370 +#: ../Doc/howto/logging-cookbook.rst:583 msgid "An example of using these two classes follows (imports omitted)::" msgstr "" "Un ejemplo del uso de estas dos clases a continuación (se omiten *imports*)::" -#: ../Doc/howto/logging-cookbook.rst:388 +#: ../Doc/howto/logging-cookbook.rst:601 msgid "which, when run, will produce:" msgstr "que, cuando se ejecuta, producirá:" -#: ../Doc/howto/logging-cookbook.rst:394 +#: ../Doc/howto/logging-cookbook.rst:607 +msgid "" +"Although the earlier discussion wasn't specifically talking about async " +"code, but rather about slow logging handlers, it should be noted that when " +"logging from async code, network and even file handlers could lead to " +"problems (blocking the event loop) because some logging is done from :mod:" +"`asyncio` internals. It might be best, if any async code is used in an " +"application, to use the above approach for logging, so that any blocking " +"code runs only in the ``QueueListener`` thread." +msgstr "" + +#: ../Doc/howto/logging-cookbook.rst:615 msgid "" "Prior to Python 3.5, the :class:`QueueListener` always passed every message " "received from the queue to every handler it was initialized with. (This was " @@ -339,11 +430,11 @@ msgstr "" "de cada mensaje con el nivel del controlador y solo pasa un mensaje a un " "controlador si es apropiado hacerlo." -#: ../Doc/howto/logging-cookbook.rst:407 +#: ../Doc/howto/logging-cookbook.rst:628 msgid "Sending and receiving logging events across a network" msgstr "Enviar y recibir eventos logging a través de una red" -#: ../Doc/howto/logging-cookbook.rst:409 +#: ../Doc/howto/logging-cookbook.rst:630 msgid "" "Let's say you want to send logging events across a network, and handle them " "at the receiving end. A simple way of doing this is attaching a :class:" @@ -354,7 +445,7 @@ msgstr "" "adjuntar una instancia de :class:`SocketHandler` al registrador raíz en el " "extremo de envío::" -#: ../Doc/howto/logging-cookbook.rst:437 +#: ../Doc/howto/logging-cookbook.rst:658 msgid "" "At the receiving end, you can set up a receiver using the :mod:" "`socketserver` module. Here is a basic working example::" @@ -362,7 +453,7 @@ msgstr "" "En el extremo receptor, puede configurar un receptor usando el módulo :mod:" "`socketserver`. Aquí hay un ejemplo básico de trabajo:" -#: ../Doc/howto/logging-cookbook.rst:525 +#: ../Doc/howto/logging-cookbook.rst:746 msgid "" "First run the server, and then the client. On the client side, nothing is " "printed on the console; on the server side, you should see something like:" @@ -371,7 +462,7 @@ msgstr "" "se imprime en la consola; del lado del servidor, se debería ver algo como " "esto:" -#: ../Doc/howto/logging-cookbook.rst:537 +#: ../Doc/howto/logging-cookbook.rst:758 msgid "" "Note that there are some security issues with pickle in some scenarios. If " "these affect you, you can use an alternative serialization scheme by " @@ -385,14 +476,28 @@ msgstr "" "makePickle` e implementando su alternativa allí, así como adaptar el script " "anterior para usar su serialización alternativa." -#: ../Doc/howto/logging-cookbook.rst:547 +#: ../Doc/howto/logging-cookbook.rst:766 +msgid "Running a logging socket listener in production" +msgstr "" + +#: ../Doc/howto/logging-cookbook.rst:768 +msgid "" +"To run a logging listener in production, you may need to use a process-" +"management tool such as `Supervisor `_. `Here " +"`_ is a " +"Gist which provides the bare-bones files to run the above functionality " +"using Supervisor: you will need to change the ``/path/to/`` parts in the " +"Gist to reflect the actual paths you want to use." +msgstr "" + +#: ../Doc/howto/logging-cookbook.rst:779 msgid "Adding contextual information to your logging output" msgstr "Agregar información contextual a su salida de logging" # no estoy seguro de la parte "se liberan de memoria via recolector de # basura". En la wikipedia en español lo llaman así. "se liberan de memoria" # es una agregado mío. -#: ../Doc/howto/logging-cookbook.rst:549 +#: ../Doc/howto/logging-cookbook.rst:781 msgid "" "Sometimes you want logging output to contain contextual information in " "addition to the parameters passed to the logging call. For example, in a " @@ -421,12 +526,12 @@ msgstr "" "logging de una aplicación, podría ser difícil de administrar si el número de " "instancias :class:`Logger` se vuelven efectivamente ilimitadas." -#: ../Doc/howto/logging-cookbook.rst:564 +#: ../Doc/howto/logging-cookbook.rst:796 msgid "Using LoggerAdapters to impart contextual information" msgstr "Uso de LoggerAdapters para impartir información contextual" # "signatures" por "características"? -#: ../Doc/howto/logging-cookbook.rst:566 +#: ../Doc/howto/logging-cookbook.rst:798 msgid "" "An easy way in which you can pass contextual information to be output along " "with logging event information is to use the :class:`LoggerAdapter` class. " @@ -444,7 +549,7 @@ msgstr "" "tienen las mismas signaturas que sus contrapartes en :class:`Logger`, por lo " "que puede usar los dos tipos de instancias indistintamente." -#: ../Doc/howto/logging-cookbook.rst:574 +#: ../Doc/howto/logging-cookbook.rst:806 msgid "" "When you create an instance of :class:`LoggerAdapter`, you pass it a :class:" "`Logger` instance and a dict-like object which contains your contextual " @@ -462,7 +567,7 @@ msgstr "" "información contextual en la llamada delegada . Aquí hay un fragmento del " "código de :class:`LoggerAdapter`::" -#: ../Doc/howto/logging-cookbook.rst:590 +#: ../Doc/howto/logging-cookbook.rst:822 msgid "" "The :meth:`~LoggerAdapter.process` method of :class:`LoggerAdapter` is where " "the contextual information is added to the logging output. It's passed the " @@ -484,7 +589,7 @@ msgstr "" "si ha pasado un argumento de palabra clave 'extra' en la llamada al " "adaptador, se sobrescribirá silenciosamente." -#: ../Doc/howto/logging-cookbook.rst:599 +#: ../Doc/howto/logging-cookbook.rst:831 msgid "" "The advantage of using 'extra' is that the values in the dict-like object " "are merged into the :class:`LogRecord` instance's __dict__, allowing you to " @@ -502,11 +607,11 @@ msgstr "" "necesita la subclase :class:`LoggerAdapter` y anular :meth:`~LoggerAdapter." "process` para hacer lo que necesita. Aquí hay un ejemplo simple:" -#: ../Doc/howto/logging-cookbook.rst:615 +#: ../Doc/howto/logging-cookbook.rst:847 msgid "which you can use like this::" msgstr "que puede usar así::" -#: ../Doc/howto/logging-cookbook.rst:620 +#: ../Doc/howto/logging-cookbook.rst:852 msgid "" "Then any events that you log to the adapter will have the value of " "``some_conn_id`` prepended to the log messages." @@ -514,13 +619,13 @@ msgstr "" "Luego, cualquier evento que registre en el adaptador tendrá el valor de " "``some_conn_id`` antepuesto a los mensajes de logging." -#: ../Doc/howto/logging-cookbook.rst:624 +#: ../Doc/howto/logging-cookbook.rst:856 msgid "Using objects other than dicts to pass contextual information" msgstr "" "Usar objetos distintos a los diccionarios para transmitir información " "contextual" -#: ../Doc/howto/logging-cookbook.rst:626 +#: ../Doc/howto/logging-cookbook.rst:858 msgid "" "You don't need to pass an actual dict to a :class:`LoggerAdapter` - you " "could pass an instance of a class which implements ``__getitem__`` and " @@ -534,11 +639,11 @@ msgstr "" "útil si quieres generar valores dinámicamente (mientras que los valores en " "un diccionario son constantes)." -#: ../Doc/howto/logging-cookbook.rst:635 +#: ../Doc/howto/logging-cookbook.rst:867 msgid "Using Filters to impart contextual information" msgstr "Usar filtros para impartir información contextual" -#: ../Doc/howto/logging-cookbook.rst:637 +#: ../Doc/howto/logging-cookbook.rst:869 msgid "" "You can also add contextual information to log output using a user-defined :" "class:`Filter`. ``Filter`` instances are allowed to modify the " @@ -553,7 +658,7 @@ msgstr "" "caracteres con el formato adecuado, o si es necesario, un :class:`Formatter` " "personalizado." -#: ../Doc/howto/logging-cookbook.rst:642 +#: ../Doc/howto/logging-cookbook.rst:874 msgid "" "For example in a web application, the request being processed (or at least, " "the interesting parts of it) can be stored in a threadlocal (:class:" @@ -574,18 +679,78 @@ msgstr "" "caracteres para obtener un resultado similar al que se muestra arriba. Aquí " "hay un script de ejemplo::" -#: ../Doc/howto/logging-cookbook.rst:688 +#: ../Doc/howto/logging-cookbook.rst:920 msgid "which, when run, produces something like:" msgstr "que cuando se ejecuta, produce algo como:" -#: ../Doc/howto/logging-cookbook.rst:709 +#: ../Doc/howto/logging-cookbook.rst:938 +msgid "Use of ``contextvars``" +msgstr "" + +#: ../Doc/howto/logging-cookbook.rst:940 +msgid "" +"Since Python 3.7, the :mod:`contextvars` module has provided context-local " +"storage which works for both :mod:`threading` and :mod:`asyncio` processing " +"needs. This type of storage may thus be generally preferable to thread-" +"locals. The following example shows how, in a multi-threaded environment, " +"logs can populated with contextual information such as, for example, request " +"attributes handled by web applications." +msgstr "" + +#: ../Doc/howto/logging-cookbook.rst:946 +msgid "" +"For the purposes of illustration, say that you have different web " +"applications, each independent of the other but running in the same Python " +"process and using a library common to them. How can each of these " +"applications have their own log, where all logging messages from the library " +"(and other request processing code) are directed to the appropriate " +"application's log file, while including in the log additional contextual " +"information such as client IP, HTTP request method and client username?" +msgstr "" + +#: ../Doc/howto/logging-cookbook.rst:953 +msgid "Let's assume that the library can be simulated by the following code:" +msgstr "" + +#: ../Doc/howto/logging-cookbook.rst:969 +msgid "" +"We can simulate the multiple web applications by means of two simple " +"classes, ``Request`` and ``WebApp``. These simulate how real threaded web " +"applications work - each request is handled by a thread:" +msgstr "" + +#: ../Doc/howto/logging-cookbook.rst:1113 +msgid "" +"If you run the above, you should find that roughly half the requests go " +"into :file:`app1.log` and the rest into :file:`app2.log`, and the all the " +"requests are logged to :file:`app.log`. Each webapp-specific log will " +"contain only log entries for only that webapp, and the request information " +"will be displayed consistently in the log (i.e. the information in each " +"dummy request will always appear together in a log line). This is " +"illustrated by the following shell output:" +msgstr "" + +#: ../Doc/howto/logging-cookbook.rst:1160 +#, fuzzy +msgid "Imparting contextual information in handlers" +msgstr "Usar filtros para impartir información contextual" + +#: ../Doc/howto/logging-cookbook.rst:1162 +msgid "" +"Each :class:`~Handler` has its own chain of filters. If you want to add " +"contextual information to a :class:`LogRecord` without leaking it to other " +"handlers, you can use a filter that returns a new :class:`~LogRecord` " +"instead of modifying it in-place, as shown in the following script::" +msgstr "" + +#: ../Doc/howto/logging-cookbook.rst:1189 msgid "Logging to a single file from multiple processes" msgstr "Logging a un sólo archivo desde múltiples procesos" # Traté de refrasear las primeras oraciones para que no sea super repetitivo. # No tengo claro cómo es todo el tema de socket y si está bien traducido # "socket server", "working socket". -#: ../Doc/howto/logging-cookbook.rst:711 +#: ../Doc/howto/logging-cookbook.rst:1191 msgid "" "Although logging is thread-safe, and logging to a single file from multiple " "threads in a single process *is* supported, logging to a single file from " @@ -613,7 +778,7 @@ msgstr "" "más detalle e incluye un receptor socket que funciona que se puede utilizar " "como punto de partida para que se adapte a sus propias aplicaciones." -#: ../Doc/howto/logging-cookbook.rst:724 +#: ../Doc/howto/logging-cookbook.rst:1204 msgid "" "You could also write your own handler which uses the :class:" "`~multiprocessing.Lock` class from the :mod:`multiprocessing` module to " @@ -631,7 +796,7 @@ msgstr "" "el módulo :mod:`multiprocessing` no proporciona la funcionalidad de bloqueo " "de trabajo en todas las plataformas (ver https://bugs.python.org/issue3770)." -#: ../Doc/howto/logging-cookbook.rst:734 +#: ../Doc/howto/logging-cookbook.rst:1214 msgid "" "Alternatively, you can use a ``Queue`` and a :class:`QueueHandler` to send " "all logging events to one of the processes in your multi-process " @@ -657,7 +822,7 @@ msgstr "" "su aplicación. Y se puede utilizar como base para el código que cumpla con " "sus propios requisitos específicos::" -#: ../Doc/howto/logging-cookbook.rst:850 +#: ../Doc/howto/logging-cookbook.rst:1330 msgid "" "A variant of the above script keeps the logging in the main process, in a " "separate thread::" @@ -665,7 +830,7 @@ msgstr "" "Una variante del script anterior mantiene el logging en el proceso " "principal, en un hilo separado::" -#: ../Doc/howto/logging-cookbook.rst:945 +#: ../Doc/howto/logging-cookbook.rst:1425 msgid "" "This variant shows how you can e.g. apply configuration for particular " "loggers - e.g. the ``foo`` logger has a special handler which stores all " @@ -681,11 +846,11 @@ msgstr "" "principal (aunque los eventos logging se generen en los procesos de trabajo) " "para dirigir los mensajes a los destinos apropiados." -#: ../Doc/howto/logging-cookbook.rst:952 +#: ../Doc/howto/logging-cookbook.rst:1432 msgid "Using concurrent.futures.ProcessPoolExecutor" msgstr "Usando concurrent.futures.ProcessPoolExecutor" -#: ../Doc/howto/logging-cookbook.rst:954 +#: ../Doc/howto/logging-cookbook.rst:1434 msgid "" "If you want to use :class:`concurrent.futures.ProcessPoolExecutor` to start " "your worker processes, you need to create the queue slightly differently. " @@ -695,23 +860,39 @@ msgstr "" "iniciar sus procesos de trabajo, debe crear la cola de manera ligeramente " "diferente. En vez de" -#: ../Doc/howto/logging-cookbook.rst:962 +#: ../Doc/howto/logging-cookbook.rst:1442 msgid "you should use" msgstr "debería usar" -#: ../Doc/howto/logging-cookbook.rst:968 +#: ../Doc/howto/logging-cookbook.rst:1448 msgid "and you can then replace the worker creation from this::" msgstr "y luego puede reemplazar la creación del trabajador de esto::" -#: ../Doc/howto/logging-cookbook.rst:979 +#: ../Doc/howto/logging-cookbook.rst:1459 msgid "to this (remembering to first import :mod:`concurrent.futures`)::" msgstr "a esto (recuerda el primer *import* :mod:`concurrent.futures`)::" -#: ../Doc/howto/logging-cookbook.rst:987 +#: ../Doc/howto/logging-cookbook.rst:1466 +msgid "Deploying Web applications using Gunicorn and uWSGI" +msgstr "" + +#: ../Doc/howto/logging-cookbook.rst:1468 +msgid "" +"When deploying Web applications using `Gunicorn `_ or " +"`uWSGI `_ (or similar), " +"multiple worker processes are created to handle client requests. In such " +"environments, avoid creating file-based handlers directly in your web " +"application. Instead, use a :class:`SocketHandler` to log from the web " +"application to a listener in a separate process. This can be set up using a " +"process management tool such as Supervisor - see `Running a logging socket " +"listener in production`_ for more details." +msgstr "" + +#: ../Doc/howto/logging-cookbook.rst:1478 msgid "Using file rotation" msgstr "Usando rotación de archivos" -#: ../Doc/howto/logging-cookbook.rst:992 +#: ../Doc/howto/logging-cookbook.rst:1483 msgid "" "Sometimes you want to let a log file grow to a certain size, then open a new " "file and log to that. You may want to keep a certain number of these files, " @@ -727,7 +908,7 @@ msgstr "" "tamaño de los archivos permanezcan limitados. Para este patrón de uso, el " "paquete logging proporciona :class:`~handlers.RotatingFileHandler`::" -#: ../Doc/howto/logging-cookbook.rst:1024 +#: ../Doc/howto/logging-cookbook.rst:1515 msgid "" "The result should be 6 separate files, each with part of the log history for " "the application:" @@ -735,7 +916,7 @@ msgstr "" "El resultado debe ser 6 archivos separados, cada uno con parte del historial " "de log de la aplicación:" -#: ../Doc/howto/logging-cookbook.rst:1036 +#: ../Doc/howto/logging-cookbook.rst:1527 msgid "" "The most current file is always :file:`logging_rotatingfile_example.out`, " "and each time it reaches the size limit it is renamed with the suffix " @@ -748,7 +929,7 @@ msgstr "" "existentes para incrementar el sufijo (``.1`` se convierte en ``.2``, etc.) " "y se borra el archivo ``.6``." -#: ../Doc/howto/logging-cookbook.rst:1041 +#: ../Doc/howto/logging-cookbook.rst:1532 msgid "" "Obviously this example sets the log length much too small as an extreme " "example. You would want to set *maxBytes* to an appropriate value." @@ -757,11 +938,12 @@ msgstr "" "como un ejemplo extremo. Se querrá establecer *maxBytes* en un valor " "apropiado." -#: ../Doc/howto/logging-cookbook.rst:1047 +#: ../Doc/howto/logging-cookbook.rst:1538 msgid "Use of alternative formatting styles" msgstr "Uso de estilos de formato alternativos" -#: ../Doc/howto/logging-cookbook.rst:1049 +#: ../Doc/howto/logging-cookbook.rst:1540 +#, python-format msgid "" "When logging was added to the Python standard library, the only way of " "formatting messages with variable content was to use the %-formatting " @@ -775,7 +957,7 @@ msgstr "" "`string.Template` (agregado en Python 2.4) y :meth:`str.format` (agregado en " "Python 2.6)." -#: ../Doc/howto/logging-cookbook.rst:1055 +#: ../Doc/howto/logging-cookbook.rst:1546 msgid "" "Logging (as of 3.2) provides improved support for these two additional " "formatting styles. The :class:`Formatter` class been enhanced to take an " @@ -798,7 +980,8 @@ msgstr "" "que funcionan con :meth:`str.format` o :class:`string.Template`. Aquí hay " "una sesión de consola de ejemplo para mostrar las posibilidades:" -#: ../Doc/howto/logging-cookbook.rst:1089 +#: ../Doc/howto/logging-cookbook.rst:1580 +#, python-format msgid "" "Note that the formatting of logging messages for final output to logs is " "completely independent of how an individual logging message is constructed. " @@ -809,7 +992,8 @@ msgstr "" "individual. Para eso todavía puede usar el formateo \"%\", como se muestra " "aquí:" -#: ../Doc/howto/logging-cookbook.rst:1097 +#: ../Doc/howto/logging-cookbook.rst:1588 +#, python-format msgid "" "Logging calls (``logger.debug()``, ``logger.info()`` etc.) only take " "positional parameters for the actual logging message itself, with keyword " @@ -818,8 +1002,8 @@ msgid "" "traceback information should be logged, or the ``extra`` keyword parameter " "to indicate additional contextual information to be added to the log). So " "you cannot directly make logging calls using :meth:`str.format` or :class:" -"`string.Template` syntax, because internally the logging package uses %-" -"formatting to merge the format string and the variable arguments. There " +"`string.Template` syntax, because internally the logging package uses " +"%-formatting to merge the format string and the variable arguments. There " "would be no changing this while preserving backward compatibility, since all " "logging calls which are out there in existing code will be using %-format " "strings." @@ -838,7 +1022,7 @@ msgstr "" "compatibilidad con versiones anteriores, ya que todas las llamadas de " "logging que están en el código existente usarán cadenas de formato %." -#: ../Doc/howto/logging-cookbook.rst:1110 +#: ../Doc/howto/logging-cookbook.rst:1601 msgid "" "There is, however, a way that you can use {}- and $- formatting to construct " "your individual log messages. Recall that for a message you can use an " @@ -853,7 +1037,8 @@ msgstr "" "objeto para obtener la cadena de caracteres de formato real. Considere las " "siguientes dos clases::" -#: ../Doc/howto/logging-cookbook.rst:1134 +#: ../Doc/howto/logging-cookbook.rst:1625 +#, python-format msgid "" "Either of these can be used in place of a format string, to allow {}- or $-" "formatting to be used to build the actual \"message\" part which appears in " @@ -865,14 +1050,14 @@ msgid "" msgstr "" "Cualquiera de estos puede usarse en lugar de una cadena de formato, para " "permitir que se use el formato {} - o $ - para construir la parte del " -"\"mensaje\" real que aparece en la salida del log en lugar de \"%(message)s" -"\" o \"{message}\" o \"$message\". Es un poco difícil de manejar usar los " -"nombres de las clases siempre que quieras registrar algo, pero es bastante " -"aceptable si usas un alias como __ (doble subrayado --- no confundir con _, " -"el subrayado simple usado como sinónimo/alias para :func:`gettext.gettext` o " -"sus hermanos)." +"\"mensaje\" real que aparece en la salida del log en lugar de " +"\"%(message)s\" o \"{message}\" o \"$message\". Es un poco difícil de " +"manejar usar los nombres de las clases siempre que quieras registrar algo, " +"pero es bastante aceptable si usas un alias como __ (doble subrayado --- no " +"confundir con _, el subrayado simple usado como sinónimo/alias para :func:" +"`gettext.gettext` o sus hermanos)." -#: ../Doc/howto/logging-cookbook.rst:1142 +#: ../Doc/howto/logging-cookbook.rst:1633 msgid "" "The above classes are not included in Python, though they're easy enough to " "copy and paste into your own code. They can be used as follows (assuming " @@ -883,7 +1068,7 @@ msgstr "" "siguiente manera (asumiendo que están declaradas en un módulo llamado " "``wherever``):" -#: ../Doc/howto/logging-cookbook.rst:1164 +#: ../Doc/howto/logging-cookbook.rst:1655 msgid "" "While the above examples use ``print()`` to show how the formatting works, " "you would of course use ``logger.debug()`` or similar to actually log using " @@ -893,7 +1078,7 @@ msgstr "" "el formateo, por supuesto usaría ``logger.debug()`` o similar para realmente " "registrar usando este enfoque." -#: ../Doc/howto/logging-cookbook.rst:1168 +#: ../Doc/howto/logging-cookbook.rst:1659 msgid "" "One thing to note is that you pay no significant performance penalty with " "this approach: the actual formatting happens not when you make the logging " @@ -912,7 +1097,7 @@ msgstr "" "solo azúcar sintáctico para una llamada de constructor a una de las clases " "XXXMessage." -#: ../Doc/howto/logging-cookbook.rst:1176 +#: ../Doc/howto/logging-cookbook.rst:1667 msgid "" "If you prefer, you can use a :class:`LoggerAdapter` to achieve a similar " "effect to the above, as in the following example::" @@ -920,7 +1105,7 @@ msgstr "" "Si lo prefiere, puede usar :class:`LoggerAdapter` para lograr un efecto " "similar al anterior, como en el siguiente ejemplo::" -#: ../Doc/howto/logging-cookbook.rst:1207 +#: ../Doc/howto/logging-cookbook.rst:1698 msgid "" "The above script should log the message ``Hello, world!`` when run with " "Python 3.2 or later." @@ -928,11 +1113,11 @@ msgstr "" "El script anterior debería registrar el mensaje ``Hello, world!`` Cuando se " "ejecuta con Python 3.2 o posterior." -#: ../Doc/howto/logging-cookbook.rst:1216 +#: ../Doc/howto/logging-cookbook.rst:1707 msgid "Customizing ``LogRecord``" msgstr "Personalización de ``LogRecord``" -#: ../Doc/howto/logging-cookbook.rst:1218 +#: ../Doc/howto/logging-cookbook.rst:1709 msgid "" "Every logging event is represented by a :class:`LogRecord` instance. When an " "event is logged and not filtered out by a logger's level, a :class:" @@ -950,7 +1135,7 @@ msgstr "" "la jerarquía). Antes de Python 3.2, solo había dos lugares donde se " "realizaba esta creación:" -#: ../Doc/howto/logging-cookbook.rst:1225 +#: ../Doc/howto/logging-cookbook.rst:1716 msgid "" ":meth:`Logger.makeRecord`, which is called in the normal process of logging " "an event. This invoked :class:`LogRecord` directly to create an instance." @@ -959,7 +1144,7 @@ msgstr "" "un evento. Esto invoca :class:`LogRecord` directamente para crear una " "instancia." -#: ../Doc/howto/logging-cookbook.rst:1228 +#: ../Doc/howto/logging-cookbook.rst:1719 msgid "" ":func:`makeLogRecord`, which is called with a dictionary containing " "attributes to be added to the LogRecord. This is typically invoked when a " @@ -973,7 +1158,7 @@ msgstr "" "forma de *pickle* a través de :class:`~handlers.SocketHandler`, o en formato " "JSON a través de :class:`~handlers.HTTPHandler`)." -#: ../Doc/howto/logging-cookbook.rst:1234 +#: ../Doc/howto/logging-cookbook.rst:1725 msgid "" "This has usually meant that if you need to do anything special with a :class:" "`LogRecord`, you've had to do one of the following." @@ -981,7 +1166,7 @@ msgstr "" "Por lo general, esto significa que si necesita hacer algo especial con :" "class:`LogRecord`, debe hacer una de las siguientes cosas." -#: ../Doc/howto/logging-cookbook.rst:1237 +#: ../Doc/howto/logging-cookbook.rst:1728 msgid "" "Create your own :class:`Logger` subclass, which overrides :meth:`Logger." "makeRecord`, and set it using :func:`~logging.setLoggerClass` before any " @@ -991,7 +1176,7 @@ msgstr "" "makeRecord`, y configúrelo usando :func:`~logging.setLoggerClass` antes de " "que se creen instancias de los registradores que le interesan." -#: ../Doc/howto/logging-cookbook.rst:1240 +#: ../Doc/howto/logging-cookbook.rst:1731 msgid "" "Add a :class:`Filter` to a logger or handler, which does the necessary " "special manipulation you need when its :meth:`~Filter.filter` method is " @@ -1001,7 +1186,7 @@ msgstr "" "manipulación especial necesaria que necesita cuando se llama a su método :" "meth:`~Filter.filter`." -#: ../Doc/howto/logging-cookbook.rst:1244 +#: ../Doc/howto/logging-cookbook.rst:1735 msgid "" "The first approach would be a little unwieldy in the scenario where (say) " "several different libraries wanted to do different things. Each would " @@ -1013,7 +1198,7 @@ msgstr "" "Cada uno intentaría establecer su propia subclase :class:`Logger`, y el que " "hiciera esto último ganaría." -#: ../Doc/howto/logging-cookbook.rst:1249 +#: ../Doc/howto/logging-cookbook.rst:1740 msgid "" "The second approach works reasonably well for many cases, but does not allow " "you to e.g. use a specialized subclass of :class:`LogRecord`. Library " @@ -1028,7 +1213,7 @@ msgstr "" "introduzcan un nuevo registrador (lo que harían simplemente agregando nuevos " "paquetes o módulos y haciendo ::" -#: ../Doc/howto/logging-cookbook.rst:1257 +#: ../Doc/howto/logging-cookbook.rst:1748 msgid "" "at module level). It's probably one too many things to think about. " "Developers could also add the filter to a :class:`~logging.NullHandler` " @@ -1044,7 +1229,7 @@ msgstr "" "registrador de biblioteca de nivel inferior --- así que la salida de ese " "gestor no reflejaría las intenciones del desarrollador de la biblioteca." -#: ../Doc/howto/logging-cookbook.rst:1263 +#: ../Doc/howto/logging-cookbook.rst:1754 msgid "" "In Python 3.2 and later, :class:`~logging.LogRecord` creation is done " "through a factory, which you can specify. The factory is just a callable you " @@ -1061,7 +1246,7 @@ msgstr "" "LogRecord`, ya que :class:`LogRecord` es la configuración predeterminada de " "la fábrica." -#: ../Doc/howto/logging-cookbook.rst:1270 +#: ../Doc/howto/logging-cookbook.rst:1761 msgid "" "This approach allows a custom factory to control all aspects of LogRecord " "creation. For example, you could return a subclass, or just add some " @@ -1073,7 +1258,7 @@ msgstr "" "subclase, o simplemente agregar algunos atributos adicionales al registro " "una vez creado, usando un patrón similar a este::" -#: ../Doc/howto/logging-cookbook.rst:1283 +#: ../Doc/howto/logging-cookbook.rst:1774 msgid "" "This pattern allows different libraries to chain factories together, and as " "long as they don't overwrite each other's attributes or unintentionally " @@ -1090,11 +1275,11 @@ msgstr "" "de logging, y la técnica solo debe usarse cuando el uso de :class:`Filter` " "no proporciona el resultado deseado." -#: ../Doc/howto/logging-cookbook.rst:1294 +#: ../Doc/howto/logging-cookbook.rst:1785 msgid "Subclassing QueueHandler - a ZeroMQ example" msgstr "Subclasificación QueueHandler - un ejemplo de ZeroMQ" -#: ../Doc/howto/logging-cookbook.rst:1296 +#: ../Doc/howto/logging-cookbook.rst:1787 msgid "" "You can use a :class:`QueueHandler` subclass to send messages to other kinds " "of queues, for example a ZeroMQ 'publish' socket. In the example below,the " @@ -1105,7 +1290,7 @@ msgstr "" "siguiente ejemplo, el socket se crea por separado y se pasa al gestor (como " "su 'cola')::" -#: ../Doc/howto/logging-cookbook.rst:1315 +#: ../Doc/howto/logging-cookbook.rst:1806 msgid "" "Of course there are other ways of organizing this, for example passing in " "the data needed by the handler to create the socket::" @@ -1113,11 +1298,11 @@ msgstr "" "Por supuesto, hay otras formas de organizar esto, por ejemplo, pasando los " "datos que necesita el gestor para crear el socket::" -#: ../Doc/howto/logging-cookbook.rst:1333 +#: ../Doc/howto/logging-cookbook.rst:1824 msgid "Subclassing QueueListener - a ZeroMQ example" msgstr "Subclasificación QueueListener - un ejemplo de ZeroMQ" -#: ../Doc/howto/logging-cookbook.rst:1335 +#: ../Doc/howto/logging-cookbook.rst:1826 msgid "" "You can also subclass :class:`QueueListener` to get messages from other " "kinds of queues, for example a ZeroMQ 'subscribe' socket. Here's an example::" @@ -1126,43 +1311,49 @@ msgstr "" "otros tipos de colas, por ejemplo, un socket de 'suscripción' de ZeroMQ. " "Aquí tienes un ejemplo::" -#: ../Doc/howto/logging-cookbook.rst:1354 +#: ../Doc/howto/logging-cookbook.rst:1845 +#: ../Doc/howto/logging-cookbook.rst:3865 msgid "Module :mod:`logging`" msgstr "Módulo :mod:`logging`" -#: ../Doc/howto/logging-cookbook.rst:1354 +#: ../Doc/howto/logging-cookbook.rst:1845 +#: ../Doc/howto/logging-cookbook.rst:3865 msgid "API reference for the logging module." msgstr "Referencia de API para el módulo logging." -#: ../Doc/howto/logging-cookbook.rst:1357 +#: ../Doc/howto/logging-cookbook.rst:1848 +#: ../Doc/howto/logging-cookbook.rst:3868 msgid "Module :mod:`logging.config`" msgstr "Módulo :mod:`logging.config`" -#: ../Doc/howto/logging-cookbook.rst:1357 +#: ../Doc/howto/logging-cookbook.rst:1848 +#: ../Doc/howto/logging-cookbook.rst:3868 msgid "Configuration API for the logging module." msgstr "API de configuración para el módulo logging." -#: ../Doc/howto/logging-cookbook.rst:1360 +#: ../Doc/howto/logging-cookbook.rst:1851 +#: ../Doc/howto/logging-cookbook.rst:3871 msgid "Module :mod:`logging.handlers`" msgstr "Módulo :mod:`logging.handlers`" -#: ../Doc/howto/logging-cookbook.rst:1360 +#: ../Doc/howto/logging-cookbook.rst:1851 +#: ../Doc/howto/logging-cookbook.rst:3871 msgid "Useful handlers included with the logging module." msgstr "Gestores útiles incluidos con el módulo logging." -#: ../Doc/howto/logging-cookbook.rst:1362 +#: ../Doc/howto/logging-cookbook.rst:1853 msgid ":ref:`A basic logging tutorial `" msgstr ":ref:`Un tutorial básico de logging `" -#: ../Doc/howto/logging-cookbook.rst:1364 +#: ../Doc/howto/logging-cookbook.rst:1855 msgid ":ref:`A more advanced logging tutorial `" msgstr ":ref:`Un tutorial de logging más avanzado `" -#: ../Doc/howto/logging-cookbook.rst:1368 +#: ../Doc/howto/logging-cookbook.rst:1859 msgid "An example dictionary-based configuration" msgstr "Una configuración de ejemplo basada en diccionario" -#: ../Doc/howto/logging-cookbook.rst:1370 +#: ../Doc/howto/logging-cookbook.rst:1861 msgid "" "Below is an example of a logging configuration dictionary - it's taken from " "the `documentation on the Django project `_ de la documentación de Django." -#: ../Doc/howto/logging-cookbook.rst:1433 +#: ../Doc/howto/logging-cookbook.rst:1924 msgid "Using a rotator and namer to customize log rotation processing" msgstr "" "Usar un rotador y un nombre para personalizar el procesamiento de rotación " "de log" -#: ../Doc/howto/logging-cookbook.rst:1435 +#: ../Doc/howto/logging-cookbook.rst:1926 msgid "" "An example of how you can define a namer and rotator is given in the " "following snippet, which shows zlib-based compression of the log file::" @@ -1200,7 +1391,7 @@ msgstr "" "siguiente fragmento, que muestra la compresión basada en zlib del archivo de " "log::" -#: ../Doc/howto/logging-cookbook.rst:1453 +#: ../Doc/howto/logging-cookbook.rst:1944 msgid "" "These are not \"true\" .gz files, as they are bare compressed data, with no " "\"container\" such as you’d find in an actual gzip file. This snippet is " @@ -1210,11 +1401,11 @@ msgstr "" "ningún \"contenedor\" como el que encontraría en un archivo gzip real. Este " "fragmento es solo para fines ilustrativos." -#: ../Doc/howto/logging-cookbook.rst:1458 +#: ../Doc/howto/logging-cookbook.rst:1949 msgid "A more elaborate multiprocessing example" msgstr "Un ejemplo de multiprocesamiento más elaborado" -#: ../Doc/howto/logging-cookbook.rst:1460 +#: ../Doc/howto/logging-cookbook.rst:1951 msgid "" "The following working example shows how logging can be used with " "multiprocessing using configuration files. The configurations are fairly " @@ -1226,7 +1417,7 @@ msgstr "" "bastante simples, pero sirven para ilustrar cómo se podrían implementar las " "más complejas en un escenario real de multiprocesamiento." -#: ../Doc/howto/logging-cookbook.rst:1465 +#: ../Doc/howto/logging-cookbook.rst:1956 msgid "" "In the example, the main process spawns a listener process and some worker " "processes. Each of the main process, the listener and the workers have three " @@ -1249,7 +1440,7 @@ msgstr "" "configuraciones son puramente ilustrativas, pero debería poder adaptar este " "ejemplo a su propio escenario." -#: ../Doc/howto/logging-cookbook.rst:1475 +#: ../Doc/howto/logging-cookbook.rst:1966 msgid "" "Here's the script - the docstrings and the comments hopefully explain how it " "works::" @@ -1257,11 +1448,11 @@ msgstr "" "Aquí está el script, el docstrings y los comentarios, esperemos, expliquen " "cómo funciona::" -#: ../Doc/howto/logging-cookbook.rst:1687 +#: ../Doc/howto/logging-cookbook.rst:2178 msgid "Inserting a BOM into messages sent to a SysLogHandler" msgstr "Insertar BOM en mensajes enviados a SysLogHandler" -#: ../Doc/howto/logging-cookbook.rst:1689 +#: ../Doc/howto/logging-cookbook.rst:2180 msgid "" ":rfc:`5424` requires that a Unicode message be sent to a syslog daemon as a " "set of bytes which have the following structure: an optional pure-ASCII " @@ -1275,7 +1466,7 @@ msgstr "" "seguida de Codificado en Unicode usando UTF-8. (Ver sección relevante de la " "especificación :rfc:`5424#section-6`.)" -#: ../Doc/howto/logging-cookbook.rst:1695 +#: ../Doc/howto/logging-cookbook.rst:2186 msgid "" "In Python 3.1, code was added to :class:`~logging.handlers.SysLogHandler` to " "insert a BOM into the message, but unfortunately, it was implemented " @@ -1287,7 +1478,7 @@ msgstr "" "incorrectamente, BOM aparece al principio del mensaje y, por lo tanto, no " "permite ningún componente ASCII puro para que aparezca antes." -#: ../Doc/howto/logging-cookbook.rst:1701 +#: ../Doc/howto/logging-cookbook.rst:2192 msgid "" "As this behaviour is broken, the incorrect BOM insertion code is being " "removed from Python 3.2.4 and later. However, it is not being replaced, and " @@ -1302,7 +1493,7 @@ msgstr "" "arbitrario después, codificados usando UTF-8; entonces necesita hacer lo " "siguiente:" -#: ../Doc/howto/logging-cookbook.rst:1707 +#: ../Doc/howto/logging-cookbook.rst:2198 msgid "" "Attach a :class:`~logging.Formatter` instance to your :class:`~logging." "handlers.SysLogHandler` instance, with a format string such as::" @@ -1311,7 +1502,7 @@ msgstr "" "`~logging.handlers.SysLogHandler`, con una cadena de caracteres de formato " "como::" -#: ../Doc/howto/logging-cookbook.rst:1713 +#: ../Doc/howto/logging-cookbook.rst:2204 msgid "" "The Unicode code point U+FEFF, when encoded using UTF-8, will be encoded as " "a UTF-8 BOM -- the byte-string ``b'\\xef\\xbb\\xbf'``." @@ -1319,7 +1510,7 @@ msgstr "" "El punto de código Unicode U+ FEFF, cuando se codifica usando UTF-8, se " "codificará como una BOM UTF-8, la cadena de bytes ``b'\\xef\\xbb\\xbf'``." -#: ../Doc/howto/logging-cookbook.rst:1716 +#: ../Doc/howto/logging-cookbook.rst:2207 msgid "" "Replace the ASCII section with whatever placeholders you like, but make sure " "that the data that appears in there after substitution is always ASCII (that " @@ -1330,7 +1521,7 @@ msgstr "" "siempre ASCII (de esa manera, permanecerán sin cambios después de la " "codificación UTF-8)." -#: ../Doc/howto/logging-cookbook.rst:1720 +#: ../Doc/howto/logging-cookbook.rst:2211 msgid "" "Replace the Unicode section with whatever placeholders you like; if the data " "which appears there after substitution contains characters outside the ASCII " @@ -1340,7 +1531,7 @@ msgstr "" "los datos que aparecen allí después de la sustitución contienen caracteres " "fuera del rango ASCII, está bien: se codificarán usando UTF-8." -#: ../Doc/howto/logging-cookbook.rst:1724 +#: ../Doc/howto/logging-cookbook.rst:2215 msgid "" "The formatted message *will* be encoded using UTF-8 encoding by " "``SysLogHandler``. If you follow the above rules, you should be able to " @@ -1354,11 +1545,11 @@ msgstr "" "logging no se queje, pero sus mensajes no serán compatibles con RFC 5424 y " "su demonio syslog puede quejarse." -#: ../Doc/howto/logging-cookbook.rst:1731 +#: ../Doc/howto/logging-cookbook.rst:2222 msgid "Implementing structured logging" msgstr "Implementar logging estructurado" -#: ../Doc/howto/logging-cookbook.rst:1733 +#: ../Doc/howto/logging-cookbook.rst:2224 msgid "" "Although most logging messages are intended for reading by humans, and thus " "not readily machine-parseable, there might be circumstances where you want " @@ -1378,12 +1569,12 @@ msgstr "" "varias formas de lograr esto, pero el siguiente es un enfoque simple que usa " "JSON para serializar el evento de una manera analizable por máquina:" -#: ../Doc/howto/logging-cookbook.rst:1757 +#: ../Doc/howto/logging-cookbook.rst:2248 msgid "If the above script is run, it prints:" msgstr "Si se ejecuta el script anterior, se imprime:" -#: ../Doc/howto/logging-cookbook.rst:1763 -#: ../Doc/howto/logging-cookbook.rst:1812 +#: ../Doc/howto/logging-cookbook.rst:2254 +#: ../Doc/howto/logging-cookbook.rst:2296 msgid "" "Note that the order of items might be different according to the version of " "Python used." @@ -1391,7 +1582,7 @@ msgstr "" "Tenga en cuenta que el orden de los elementos puede ser diferente según la " "versión de Python utilizada." -#: ../Doc/howto/logging-cookbook.rst:1766 +#: ../Doc/howto/logging-cookbook.rst:2257 msgid "" "If you need more specialised processing, you can use a custom JSON encoder, " "as in the following complete example::" @@ -1399,15 +1590,15 @@ msgstr "" "Si necesita un procesamiento más especializado, puede utilizar un " "codificador JSON personalizado, como en el siguiente ejemplo completo::" -#: ../Doc/howto/logging-cookbook.rst:1806 +#: ../Doc/howto/logging-cookbook.rst:2290 msgid "When the above script is run, it prints:" msgstr "Cuando se ejecuta el script anterior, se imprime:" -#: ../Doc/howto/logging-cookbook.rst:1821 +#: ../Doc/howto/logging-cookbook.rst:2305 msgid "Customizing handlers with :func:`dictConfig`" msgstr "Personalización de gestores con :func:`dictConfig`" -#: ../Doc/howto/logging-cookbook.rst:1823 +#: ../Doc/howto/logging-cookbook.rst:2307 msgid "" "There are times when you want to customize logging handlers in particular " "ways, and if you use :func:`dictConfig` you may be able to do this without " @@ -1424,7 +1615,7 @@ msgstr "" "soporte integrado. Puede personalizar la creación de gestores usando una " "función simple como::" -#: ../Doc/howto/logging-cookbook.rst:1837 +#: ../Doc/howto/logging-cookbook.rst:2321 msgid "" "You can then specify, in a logging configuration passed to :func:" "`dictConfig`, that a logging handler be created by calling this function::" @@ -1432,7 +1623,7 @@ msgstr "" "Luego puede especificar, en una configuración de logging pasada a :func:" "`dictConfig`, que se cree un gestor de logging llamando a esta función::" -#: ../Doc/howto/logging-cookbook.rst:1870 +#: ../Doc/howto/logging-cookbook.rst:2354 msgid "" "In this example I am setting the ownership using the ``pulse`` user and " "group, just for the purposes of illustration. Putting it together into a " @@ -1442,12 +1633,12 @@ msgstr "" "``pulse``, solo con fines ilustrativos. Poniéndolo junto en un script de " "trabajo, ``chowntest.py``::" -#: ../Doc/howto/logging-cookbook.rst:1917 +#: ../Doc/howto/logging-cookbook.rst:2401 msgid "To run this, you will probably need to run as ``root``:" msgstr "" "Para ejecutar esto, probablemente se necesite ejecutarlo como ``root``:" -#: ../Doc/howto/logging-cookbook.rst:1927 +#: ../Doc/howto/logging-cookbook.rst:2411 msgid "" "Note that this example uses Python 3.3 because that's where :func:`shutil." "chown` makes an appearance. This approach should work with any Python " @@ -1461,7 +1652,7 @@ msgstr "" "posterior. Con las versiones anteriores a 3.3, necesitaría implementar el " "cambio de propiedad real usando, por ejemplo, :func:`os.chown`." -#: ../Doc/howto/logging-cookbook.rst:1933 +#: ../Doc/howto/logging-cookbook.rst:2417 msgid "" "In practice, the handler-creating function may be in a utility module " "somewhere in your project. Instead of the line in the configuration::" @@ -1470,11 +1661,11 @@ msgstr "" "de utilidad en algún lugar de su proyecto. En lugar de la línea en la " "configuración::" -#: ../Doc/howto/logging-cookbook.rst:1938 +#: ../Doc/howto/logging-cookbook.rst:2422 msgid "you could use e.g.::" msgstr "podrías usar, por ejemplo,::" -#: ../Doc/howto/logging-cookbook.rst:1942 +#: ../Doc/howto/logging-cookbook.rst:2426 msgid "" "where ``project.util`` can be replaced with the actual name of the package " "where the function resides. In the above working script, using ``'ext://" @@ -1487,7 +1678,7 @@ msgstr "" "invocable real se resuelve mediante :func:`dictConfig` de la especificación " "``ext://``." -#: ../Doc/howto/logging-cookbook.rst:1947 +#: ../Doc/howto/logging-cookbook.rst:2431 msgid "" "This example hopefully also points the way to how you could implement other " "types of file change - e.g. setting specific POSIX permission bits - in the " @@ -1497,7 +1688,7 @@ msgstr "" "implementar otros tipos de cambio de archivo, por ejemplo, configurando de " "la misma manera bits de permisos POSIX específicos, usando :func:`os.chmod`." -#: ../Doc/howto/logging-cookbook.rst:1951 +#: ../Doc/howto/logging-cookbook.rst:2435 msgid "" "Of course, the approach could also be extended to types of handler other " "than a :class:`~logging.FileHandler` - for example, one of the rotating file " @@ -1507,11 +1698,11 @@ msgstr "" "distintos a :class:`~logging.FileHandler` - por ejemplo, uno de los gestores " "de archivos rotativos, o un tipo diferente por completo." -#: ../Doc/howto/logging-cookbook.rst:1961 +#: ../Doc/howto/logging-cookbook.rst:2445 msgid "Using particular formatting styles throughout your application" msgstr "Usar estilos de formato particulares en toda su aplicación" -#: ../Doc/howto/logging-cookbook.rst:1963 +#: ../Doc/howto/logging-cookbook.rst:2447 msgid "" "In Python 3.2, the :class:`~logging.Formatter` gained a ``style`` keyword " "parameter which, while defaulting to ``%`` for backward compatibility, " @@ -1529,7 +1720,8 @@ msgstr "" "de logging para la salida final a los logging y es completamente ortogonal a " "cómo se construye un mensaje de logging individual." -#: ../Doc/howto/logging-cookbook.rst:1970 +#: ../Doc/howto/logging-cookbook.rst:2454 +#, python-format msgid "" "Logging calls (:meth:`~Logger.debug`, :meth:`~Logger.info` etc.) only take " "positional parameters for the actual logging message itself, with keyword " @@ -1558,19 +1750,20 @@ msgstr "" "logging que están en el código existente utilizarán cadenas de caracteres " "formato %." -#: ../Doc/howto/logging-cookbook.rst:1982 +#: ../Doc/howto/logging-cookbook.rst:2466 +#, python-format msgid "" "There have been suggestions to associate format styles with specific " "loggers, but that approach also runs into backward compatibility problems " -"because any existing code could be using a given logger name and using %-" -"formatting." +"because any existing code could be using a given logger name and using " +"%-formatting." msgstr "" "Ha habido sugerencias para asociar estilos de formato con *loggers* " "específicos, pero ese enfoque también tiene problemas de compatibilidad con " "versiones anteriores porque cualquier código existente podría estar usando " "un nombre de *logger* dado y usando formato %." -#: ../Doc/howto/logging-cookbook.rst:1986 +#: ../Doc/howto/logging-cookbook.rst:2470 msgid "" "For logging to work interoperably between any third-party libraries and your " "code, decisions about formatting need to be made at the level of the " @@ -1582,11 +1775,12 @@ msgstr "" "nivel de la llamada de logging individual. Esto abre un par de formas en las " "que se pueden acomodar estilos de formato alternativos." -#: ../Doc/howto/logging-cookbook.rst:1993 +#: ../Doc/howto/logging-cookbook.rst:2477 msgid "Using LogRecord factories" msgstr "Uso de fábricas de LogRecord" -#: ../Doc/howto/logging-cookbook.rst:1995 +#: ../Doc/howto/logging-cookbook.rst:2479 +#, python-format msgid "" "In Python 3.2, along with the :class:`~logging.Formatter` changes mentioned " "above, the logging package gained the ability to allow users to set their " @@ -1613,7 +1807,7 @@ msgstr "" "cuidado de llamar a ``str(self.msg)``, tal como lo hace la implementación " "base." -#: ../Doc/howto/logging-cookbook.rst:2006 +#: ../Doc/howto/logging-cookbook.rst:2490 msgid "" "Refer to the reference documentation on :func:`setLogRecordFactory` and :" "class:`LogRecord` for more information." @@ -1621,11 +1815,11 @@ msgstr "" "Consulte la documentación de referencia en :func:`setLogRecordFactory` y :" "class:`LogRecord` para obtener más información." -#: ../Doc/howto/logging-cookbook.rst:2011 +#: ../Doc/howto/logging-cookbook.rst:2495 msgid "Using custom message objects" msgstr "Usar objetos de mensaje personalizados" -#: ../Doc/howto/logging-cookbook.rst:2013 +#: ../Doc/howto/logging-cookbook.rst:2497 msgid "" "There is another, perhaps simpler way that you can use {}- and $- formatting " "to construct your individual log messages. You may recall (from :ref:" @@ -1642,7 +1836,8 @@ msgstr "" "de logging llamará :func:`str` en ese objeto para obtener el cadena de " "formato real. Considere las siguientes dos clases:" -#: ../Doc/howto/logging-cookbook.rst:2038 +#: ../Doc/howto/logging-cookbook.rst:2522 +#, python-format msgid "" "Either of these can be used in place of a format string, to allow {}- or $-" "formatting to be used to build the actual \"message\" part which appears in " @@ -1660,7 +1855,7 @@ msgstr "" "puede hacerlo más tolerable si usa un alias como ``M`` o ``_`` para el " "mensaje (o quizás ``__``, si está utilizando``_`` para localización)." -#: ../Doc/howto/logging-cookbook.rst:2046 +#: ../Doc/howto/logging-cookbook.rst:2530 msgid "" "Examples of this approach are given below. Firstly, formatting with :meth:" "`str.format`::" @@ -1668,11 +1863,11 @@ msgstr "" "A continuación se dan ejemplos de este enfoque. En primer lugar, formatear " "con :meth:`str.format`::" -#: ../Doc/howto/logging-cookbook.rst:2060 +#: ../Doc/howto/logging-cookbook.rst:2544 msgid "Secondly, formatting with :class:`string.Template`::" msgstr "En segundo lugar, formatear con :class:`string.Template`::" -#: ../Doc/howto/logging-cookbook.rst:2067 +#: ../Doc/howto/logging-cookbook.rst:2551 msgid "" "One thing to note is that you pay no significant performance penalty with " "this approach: the actual formatting happens not when you make the logging " @@ -1693,11 +1888,11 @@ msgstr "" "una llamada de constructor a una de las clases ``XXXMessage`` mostradas " "anteriormente." -#: ../Doc/howto/logging-cookbook.rst:2081 +#: ../Doc/howto/logging-cookbook.rst:2565 msgid "Configuring filters with :func:`dictConfig`" msgstr "Configurar filtros con :func:`dictConfig`" -#: ../Doc/howto/logging-cookbook.rst:2083 +#: ../Doc/howto/logging-cookbook.rst:2567 msgid "" "You *can* configure filters using :func:`~logging.config.dictConfig`, though " "it might not be obvious at first glance how to do it (hence this recipe). " @@ -1723,7 +1918,7 @@ msgstr "" "proporcionar cualquier invocable que retorne una instancia :class:`~logging." "Filter`). Aquí hay un ejemplo completo:" -#: ../Doc/howto/logging-cookbook.rst:2136 +#: ../Doc/howto/logging-cookbook.rst:2620 msgid "" "This example shows how you can pass configuration data to the callable which " "constructs the instance, in the form of keyword parameters. When run, the " @@ -1733,15 +1928,15 @@ msgstr "" "que construye la instancia, en forma de parámetros de palabras clave. Cuando " "se ejecuta, se imprimirá el script anterior:" -#: ../Doc/howto/logging-cookbook.rst:2144 +#: ../Doc/howto/logging-cookbook.rst:2628 msgid "which shows that the filter is working as configured." msgstr "que muestra que el filtro está funcionando según lo configurado." -#: ../Doc/howto/logging-cookbook.rst:2146 +#: ../Doc/howto/logging-cookbook.rst:2630 msgid "A couple of extra points to note:" msgstr "Un par de puntos adicionales a tener en cuenta:" -#: ../Doc/howto/logging-cookbook.rst:2148 +#: ../Doc/howto/logging-cookbook.rst:2632 msgid "" "If you can't refer to the callable directly in the configuration (e.g. if it " "lives in a different module, and you can't import it directly where the " @@ -1757,7 +1952,7 @@ msgstr "" "externalobj`. Por ejemplo, podría haber usado el texto ``'ext://__main__." "MyFilter'`` en lugar de ``MyFilter`` en el ejemplo anterior." -#: ../Doc/howto/logging-cookbook.rst:2155 +#: ../Doc/howto/logging-cookbook.rst:2639 msgid "" "As well as for filters, this technique can also be used to configure custom " "handlers and formatters. See :ref:`logging-config-dict-userdef` for more " @@ -1771,11 +1966,11 @@ msgstr "" "el uso de objetos definidos por el usuario en su configuración, y ver arriba " "la otra receta :ref:`custom-handlers`." -#: ../Doc/howto/logging-cookbook.rst:2164 +#: ../Doc/howto/logging-cookbook.rst:2648 msgid "Customized exception formatting" msgstr "Formato de excepción personalizado" -#: ../Doc/howto/logging-cookbook.rst:2166 +#: ../Doc/howto/logging-cookbook.rst:2650 msgid "" "There might be times when you want to do customized exception formatting - " "for argument's sake, let's say you want exactly one line per logged event, " @@ -1788,11 +1983,11 @@ msgstr "" "presente. Puede hacer esto con una clase de formateador personalizada, como " "se muestra en el siguiente ejemplo::" -#: ../Doc/howto/logging-cookbook.rst:2207 +#: ../Doc/howto/logging-cookbook.rst:2691 msgid "When run, this produces a file with exactly two lines:" msgstr "Cuando se ejecuta, esto produce un archivo con exactamente dos líneas:" -#: ../Doc/howto/logging-cookbook.rst:2214 +#: ../Doc/howto/logging-cookbook.rst:2698 msgid "" "While the above treatment is simplistic, it points the way to how exception " "information can be formatted to your liking. The :mod:`traceback` module may " @@ -1802,11 +1997,11 @@ msgstr "" "puede formatear la información de excepción a su gusto. El módulo :mod:" "`traceback` puede resultar útil para necesidades más especializadas." -#: ../Doc/howto/logging-cookbook.rst:2221 +#: ../Doc/howto/logging-cookbook.rst:2705 msgid "Speaking logging messages" msgstr "Mensajes de logging hablantes" -#: ../Doc/howto/logging-cookbook.rst:2223 +#: ../Doc/howto/logging-cookbook.rst:2707 msgid "" "There might be situations when it is desirable to have logging messages " "rendered in an audible rather than a visible format. This is easy to do if " @@ -1838,7 +2033,7 @@ msgstr "" "esperando. Aquí hay un breve ejemplo que muestra el enfoque, que asume que " "el paquete TTS ``espeak`` está disponible::" -#: ../Doc/howto/logging-cookbook.rst:2265 +#: ../Doc/howto/logging-cookbook.rst:2749 msgid "" "When run, this script should say \"Hello\" and then \"Goodbye\" in a female " "voice." @@ -1846,7 +2041,7 @@ msgstr "" "Cuando se ejecute, este script debería decir \"Hola\" y luego \"Adiós\" con " "voz femenina." -#: ../Doc/howto/logging-cookbook.rst:2267 +#: ../Doc/howto/logging-cookbook.rst:2751 msgid "" "The above approach can, of course, be adapted to other TTS systems and even " "other systems altogether which can process messages via external programs " @@ -1856,11 +2051,11 @@ msgstr "" "incluso a otros sistemas que pueden procesar mensajes a través de programas " "externos ejecutados desde una línea de comando." -#: ../Doc/howto/logging-cookbook.rst:2275 +#: ../Doc/howto/logging-cookbook.rst:2759 msgid "Buffering logging messages and outputting them conditionally" msgstr "Almacenamiento en búfer de mensajes de logging y su salida condicional" -#: ../Doc/howto/logging-cookbook.rst:2277 +#: ../Doc/howto/logging-cookbook.rst:2761 msgid "" "There might be situations where you want to log messages in a temporary area " "and only output them if a certain condition occurs. For example, you may " @@ -1876,7 +2071,7 @@ msgstr "" "log con la información de depuración recopilada; pero si hay un error, desea " "toda la información de depuración información así como el error." -#: ../Doc/howto/logging-cookbook.rst:2284 +#: ../Doc/howto/logging-cookbook.rst:2768 msgid "" "Here is an example which shows how you could do this using a decorator for " "your functions where you want logging to behave this way. It makes use of " @@ -1899,7 +2094,7 @@ msgstr "" "Puede usar esta receta con una subclase más especializada de " "``MemoryHandler`` si desea un comportamiento de descarga personalizado." -#: ../Doc/howto/logging-cookbook.rst:2294 +#: ../Doc/howto/logging-cookbook.rst:2778 msgid "" "The example script has a simple function, ``foo``, which just cycles through " "all the logging levels, writing to ``sys.stderr`` to say what level it's " @@ -1914,7 +2109,7 @@ msgstr "" "los niveles ERROR y CRITICAL; de lo contrario, solo registrará en los " "niveles DEBUG, INFO y WARNING." -#: ../Doc/howto/logging-cookbook.rst:2300 +#: ../Doc/howto/logging-cookbook.rst:2784 msgid "" "The script just arranges to decorate ``foo`` with a decorator which will do " "the conditional logging that's required. The decorator takes a logger as a " @@ -1934,16 +2129,16 @@ msgstr "" "Estos están predeterminados a :class:`~logging.StreamHandler` que escribe " "en``sys.stderr``, ``logging.ERROR`` y ``100`` respectivamente." -#: ../Doc/howto/logging-cookbook.rst:2308 +#: ../Doc/howto/logging-cookbook.rst:2792 msgid "Here's the script::" msgstr "Aquí está el script::" -#: ../Doc/howto/logging-cookbook.rst:2371 +#: ../Doc/howto/logging-cookbook.rst:2855 msgid "When this script is run, the following output should be observed:" msgstr "" "Cuando se ejecuta este script, se debe observar el siguiente resultado::" -#: ../Doc/howto/logging-cookbook.rst:2401 +#: ../Doc/howto/logging-cookbook.rst:2885 msgid "" "As you can see, actual logging output only occurs when an event is logged " "whose severity is ERROR or greater, but in that case, any previous events at " @@ -1953,23 +2148,47 @@ msgstr "" "evento cuya gravedad es ERROR o mayor, pero en ese caso, también se registra " "cualquier evento anterior con una gravedad menor." -#: ../Doc/howto/logging-cookbook.rst:2405 +#: ../Doc/howto/logging-cookbook.rst:2889 msgid "You can of course use the conventional means of decoration::" msgstr "Por supuesto, puede utilizar las formas de decoración convencionales::" -#: ../Doc/howto/logging-cookbook.rst:2415 +#: ../Doc/howto/logging-cookbook.rst:2899 +msgid "Sending logging messages to email, with buffering" +msgstr "" + +#: ../Doc/howto/logging-cookbook.rst:2901 +msgid "" +"To illustrate how you can send log messages via email, so that a set number " +"of messages are sent per email, you can subclass :class:`~logging.handlers." +"BufferingHandler`. In the following example, which you can adapt to suit " +"your specific needs, a simple test harness is provided which allows you to " +"run the script with command line arguments specifying what you typically " +"need to send things via SMTP. (Run the downloaded script with the ``-h`` " +"argument to see the required and optional arguments.)" +msgstr "" + +#: ../Doc/howto/logging-cookbook.rst:2973 +msgid "" +"If you run this script and your SMTP server is correctly set up, you should " +"find that it sends eleven emails to the addressee you specify. The first ten " +"emails will each have ten log messages, and the eleventh will have two " +"messages. That makes up 102 messages as specified in the script." +msgstr "" + +#: ../Doc/howto/logging-cookbook.rst:2981 msgid "Formatting times using UTC (GMT) via configuration" msgstr "Formateo de horas usando UTC (GMT) a través de la configuración" -#: ../Doc/howto/logging-cookbook.rst:2417 +#: ../Doc/howto/logging-cookbook.rst:2983 +#, fuzzy msgid "" "Sometimes you want to format times using UTC, which can be done using a " -"class such as `UTCFormatter`, shown below::" +"class such as ``UTCFormatter``, shown below::" msgstr "" "A veces desea formatear las horas usando UTC, lo que se puede hacer usando " "una clase como `UTCFormatter`, como se muestra a continuación::" -#: ../Doc/howto/logging-cookbook.rst:2426 +#: ../Doc/howto/logging-cookbook.rst:2992 msgid "" "and you can then use the ``UTCFormatter`` in your code instead of :class:" "`~logging.Formatter`. If you want to do that via configuration, you can use " @@ -1981,11 +2200,11 @@ msgstr "" "usar la API :func:`~logging.config.dictConfig` con un enfoque ilustrado por " "el siguiente ejemplo completo::" -#: ../Doc/howto/logging-cookbook.rst:2469 +#: ../Doc/howto/logging-cookbook.rst:3035 msgid "When this script is run, it should print something like:" msgstr "Cuando se ejecuta este script, debería imprimir algo como:" -#: ../Doc/howto/logging-cookbook.rst:2476 +#: ../Doc/howto/logging-cookbook.rst:3042 msgid "" "showing how the time is formatted both as local time and UTC, one for each " "handler." @@ -1993,11 +2212,11 @@ msgstr "" "mostrando cómo se formatea la hora como hora local y UTC, una para cada " "gestor." -#: ../Doc/howto/logging-cookbook.rst:2483 +#: ../Doc/howto/logging-cookbook.rst:3049 msgid "Using a context manager for selective logging" msgstr "Usar un administrador de contexto para logging selectivo" -#: ../Doc/howto/logging-cookbook.rst:2485 +#: ../Doc/howto/logging-cookbook.rst:3051 msgid "" "There are times when it would be useful to temporarily change the logging " "configuration and revert it back after doing something. For this, a context " @@ -2014,7 +2233,7 @@ msgstr "" "logging y agregar un gestor de logging exclusivamente en el alcance del " "administrador de contexto::" -#: ../Doc/howto/logging-cookbook.rst:2518 +#: ../Doc/howto/logging-cookbook.rst:3084 msgid "" "If you specify a level value, the logger's level is set to that value in the " "scope of the with block covered by the context manager. If you specify a " @@ -2029,7 +2248,7 @@ msgstr "" "administrador que cierre el gestor por usted al salir del bloque si ya no lo " "necesita." -#: ../Doc/howto/logging-cookbook.rst:2524 +#: ../Doc/howto/logging-cookbook.rst:3090 msgid "" "To illustrate how it works, we can add the following block of code to the " "above::" @@ -2037,7 +2256,7 @@ msgstr "" "Para ilustrar cómo funciona, podemos agregar el siguiente bloque de código " "al anterior::" -#: ../Doc/howto/logging-cookbook.rst:2542 +#: ../Doc/howto/logging-cookbook.rst:3108 msgid "" "We initially set the logger's level to ``INFO``, so message #1 appears and " "message #2 doesn't. We then change the level to ``DEBUG`` temporarily in the " @@ -2062,11 +2281,11 @@ msgstr "" "mensaje #6 (como el mensaje #1) mientras que el mensaje #7 no (como el " "mensaje #2)." -#: ../Doc/howto/logging-cookbook.rst:2552 +#: ../Doc/howto/logging-cookbook.rst:3118 msgid "If we run the resulting script, the result is as follows:" msgstr "Si ejecutamos el script resultante, el resultado es el siguiente:" -#: ../Doc/howto/logging-cookbook.rst:2563 +#: ../Doc/howto/logging-cookbook.rst:3129 msgid "" "If we run it again, but pipe ``stderr`` to ``/dev/null``, we see the " "following, which is the only message written to ``stdout``:" @@ -2074,11 +2293,11 @@ msgstr "" "Si lo ejecutamos de nuevo, pero dirigimos ``stderr`` a ``/dev/null``, vemos " "lo siguiente, que es el único mensaje escrito en ``stdout``:" -#: ../Doc/howto/logging-cookbook.rst:2571 +#: ../Doc/howto/logging-cookbook.rst:3137 msgid "Once again, but piping ``stdout`` to ``/dev/null``, we get:" msgstr "Una vez más, pero canalizando ``stdout`` a ``/dev/null``, obtenemos:" -#: ../Doc/howto/logging-cookbook.rst:2581 +#: ../Doc/howto/logging-cookbook.rst:3147 msgid "" "In this case, the message #5 printed to ``stdout`` doesn't appear, as " "expected." @@ -2086,7 +2305,7 @@ msgstr "" "En este caso, el mensaje #5 impreso en ``stdout`` no aparece, como se " "esperaba." -#: ../Doc/howto/logging-cookbook.rst:2583 +#: ../Doc/howto/logging-cookbook.rst:3149 msgid "" "Of course, the approach described here can be generalised, for example to " "attach logging filters temporarily. Note that the above code works in Python " @@ -2096,20 +2315,20 @@ msgstr "" "para adjuntar filtros de logging temporalmente. Tenga en cuenta que el " "código anterior funciona tanto en Python 2 como en Python 3." -#: ../Doc/howto/logging-cookbook.rst:2591 +#: ../Doc/howto/logging-cookbook.rst:3157 msgid "A CLI application starter template" msgstr "Una plantilla de inicio de aplicación CLI" -#: ../Doc/howto/logging-cookbook.rst:2593 +#: ../Doc/howto/logging-cookbook.rst:3159 msgid "Here's an example which shows how you can:" msgstr "Aquí hay un ejemplo que muestra cómo puede:" -#: ../Doc/howto/logging-cookbook.rst:2595 +#: ../Doc/howto/logging-cookbook.rst:3161 msgid "Use a logging level based on command-line arguments" msgstr "" "Utilizar un nivel de logging basado en argumentos de la línea de comandos" -#: ../Doc/howto/logging-cookbook.rst:2596 +#: ../Doc/howto/logging-cookbook.rst:3162 msgid "" "Dispatch to multiple subcommands in separate files, all logging at the same " "level in a consistent way" @@ -2117,11 +2336,11 @@ msgstr "" "Enviar a varios subcomandos en archivos separados, todos registrando en el " "mismo nivel de forma coherente" -#: ../Doc/howto/logging-cookbook.rst:2598 +#: ../Doc/howto/logging-cookbook.rst:3164 msgid "Make use of simple, minimal configuration" msgstr "Utilizar una configuración mínima y sencilla" -#: ../Doc/howto/logging-cookbook.rst:2600 +#: ../Doc/howto/logging-cookbook.rst:3166 msgid "" "Suppose we have a command-line application whose job is to stop, start or " "restart some services. This could be organised for the purposes of " @@ -2140,7 +2359,7 @@ msgstr "" "por defecto en ``logging.INFO``. Aquí hay una forma en que se podría " "escribir ``app.py``::" -#: ../Doc/howto/logging-cookbook.rst:2649 +#: ../Doc/howto/logging-cookbook.rst:3215 msgid "" "And the ``start``, ``stop`` and ``restart`` commands can be implemented in " "separate modules, like so for starting::" @@ -2148,15 +2367,15 @@ msgstr "" "Y los comandos ``start``, ``stop`` y ``reiniciar`` se pueden implementar en " "módulos separados, como para iniciar::" -#: ../Doc/howto/logging-cookbook.rst:2662 +#: ../Doc/howto/logging-cookbook.rst:3228 msgid "and thus for stopping::" msgstr "y así para detener::" -#: ../Doc/howto/logging-cookbook.rst:2683 +#: ../Doc/howto/logging-cookbook.rst:3249 msgid "and similarly for restarting::" msgstr "y de manera similar para reiniciar::" -#: ../Doc/howto/logging-cookbook.rst:2704 +#: ../Doc/howto/logging-cookbook.rst:3270 msgid "" "If we run this application with the default log level, we get output like " "this:" @@ -2164,7 +2383,7 @@ msgstr "" "Si ejecutamos esta aplicación con el nivel de log predeterminado, obtenemos " "un resultado como este:" -#: ../Doc/howto/logging-cookbook.rst:2717 +#: ../Doc/howto/logging-cookbook.rst:3283 msgid "" "The first word is the logging level, and the second word is the module or " "package name of the place where the event was logged." @@ -2172,7 +2391,7 @@ msgstr "" "La primera palabra es el nivel de logging y la segunda palabra es el nombre " "del módulo o paquete del lugar donde se registró el evento." -#: ../Doc/howto/logging-cookbook.rst:2720 +#: ../Doc/howto/logging-cookbook.rst:3286 msgid "" "If we change the logging level, then we can change the information sent to " "the log. For example, if we want more information:" @@ -2180,11 +2399,11 @@ msgstr "" "Si cambiamos el nivel de logging, podemos cambiar la información enviada al " "log. Por ejemplo, si queremos más información:" -#: ../Doc/howto/logging-cookbook.rst:2737 +#: ../Doc/howto/logging-cookbook.rst:3303 msgid "And if we want less:" msgstr "Y si queremos menos:" -#: ../Doc/howto/logging-cookbook.rst:2745 +#: ../Doc/howto/logging-cookbook.rst:3311 msgid "" "In this case, the commands don't print anything to the console, since " "nothing at ``WARNING`` level or above is logged by them." @@ -2192,11 +2411,11 @@ msgstr "" "En este caso, los comandos no imprimen nada en la consola, ya que no " "registran nada en el nivel de ``WARNING`` o superior." -#: ../Doc/howto/logging-cookbook.rst:2751 +#: ../Doc/howto/logging-cookbook.rst:3317 msgid "A Qt GUI for logging" msgstr "Una GUI de Qt para logging" -#: ../Doc/howto/logging-cookbook.rst:2753 +#: ../Doc/howto/logging-cookbook.rst:3319 msgid "" "A question that comes up from time to time is about how to log to a GUI " "application. The `Qt `_ framework is a popular cross-" @@ -2209,7 +2428,7 @@ msgstr "" "pypi.org/project/PySide2/>`_ o librerías `PyQt5 `_ ." -#: ../Doc/howto/logging-cookbook.rst:2759 +#: ../Doc/howto/logging-cookbook.rst:3325 msgid "" "The following example shows how to log to a Qt GUI. This introduces a simple " "``QtHandler`` class which takes a callable, which should be a slot in the " @@ -2227,7 +2446,7 @@ msgstr "" "plano (aquí, simplemente registrando mensajes en niveles aleatorios con " "aleatorio breves retrasos intermedios)." -#: ../Doc/howto/logging-cookbook.rst:2766 +#: ../Doc/howto/logging-cookbook.rst:3332 msgid "" "The worker thread is implemented using Qt's ``QThread`` class rather than " "the :mod:`threading` module, as there are circumstances where one has to use " @@ -2238,7 +2457,7 @@ msgstr "" "que usar ``QThread``, que ofrece una mejor integración con otros componentes " "``Qt``." -#: ../Doc/howto/logging-cookbook.rst:2770 +#: ../Doc/howto/logging-cookbook.rst:3336 msgid "" "The code should work with recent releases of either ``PySide2`` or " "``PyQt5``. You should be able to adapt the approach to earlier versions of " @@ -2250,11 +2469,106 @@ msgstr "" "Consulte los comentarios en el fragmento de código para obtener información " "más detallada." -#: ../Doc/howto/logging-cookbook.rst:2987 +#: ../Doc/howto/logging-cookbook.rst:3550 +msgid "Logging to syslog with RFC5424 support" +msgstr "" + +#: ../Doc/howto/logging-cookbook.rst:3552 +msgid "" +"Although :rfc:`5424` dates from 2009, most syslog servers are configured by " +"detault to use the older :rfc:`3164`, which hails from 2001. When " +"``logging`` was added to Python in 2003, it supported the earlier (and only " +"existing) protocol at the time. Since RFC5424 came out, as there has not " +"been widespread deployment of it in syslog servers, the :class:`~logging." +"handlers.SysLogHandler` functionality has not been updated." +msgstr "" + +#: ../Doc/howto/logging-cookbook.rst:3559 +msgid "" +"RFC 5424 contains some useful features such as support for structured data, " +"and if you need to be able to log to a syslog server with support for it, " +"you can do so with a subclassed handler which looks something like this::" +msgstr "" + +#: ../Doc/howto/logging-cookbook.rst:3625 +msgid "" +"You'll need to be familiar with RFC 5424 to fully understand the above code, " +"and it may be that you have slightly different needs (e.g. for how you pass " +"structural data to the log). Nevertheless, the above should be adaptable to " +"your speciric needs. With the above handler, you'd pass structured data " +"using something like this::" +msgstr "" + +#: ../Doc/howto/logging-cookbook.rst:3639 +msgid "How to treat a logger like an output stream" +msgstr "" + +#: ../Doc/howto/logging-cookbook.rst:3641 +msgid "" +"Sometimes, you need to interface to a third-party API which expects a file-" +"like object to write to, but you want to direct the API's output to a " +"logger. You can do this using a class which wraps a logger with a file-like " +"API. Here's a short script illustrating such a class:" +msgstr "" + +#: ../Doc/howto/logging-cookbook.rst:3681 +#, fuzzy +msgid "When this script is run, it prints" +msgstr "Cuando se ejecuta el script anterior, se imprime:" + +#: ../Doc/howto/logging-cookbook.rst:3688 +msgid "" +"You could also use ``LoggerWriter`` to redirect ``sys.stdout`` and ``sys." +"stderr`` by doing something like this:" +msgstr "" + +#: ../Doc/howto/logging-cookbook.rst:3698 +msgid "" +"You should do this *after* configuring logging for your needs. In the above " +"example, the :func:`~logging.basicConfig` call does this (using the ``sys." +"stderr`` value *before* it is overwritten by a ``LoggerWriter`` instance). " +"Then, you'd get this kind of result:" +msgstr "" + +#: ../Doc/howto/logging-cookbook.rst:3711 +msgid "" +"Of course, the examples above show output according to the format used by :" +"func:`~logging.basicConfig`, but you can use a different formatter when you " +"configure logging." +msgstr "" + +#: ../Doc/howto/logging-cookbook.rst:3715 +msgid "" +"Note that with the above scheme, you are somewhat at the mercy of buffering " +"and the sequence of write calls which you are intercepting. For example, " +"with the definition of ``LoggerWriter`` above, if you have the snippet" +msgstr "" + +#: ../Doc/howto/logging-cookbook.rst:3724 +msgid "then running the script results in" +msgstr "" + +#: ../Doc/howto/logging-cookbook.rst:3742 +msgid "" +"As you can see, this output isn't ideal. That's because the underlying code " +"which writes to ``sys.stderr`` makes mutiple writes, each of which results " +"in a separate logged line (for example, the last three lines above). To get " +"around this problem, you need to buffer things and only output log lines " +"when newlines are seen. Let's use a slghtly better implementation of " +"``LoggerWriter``:" +msgstr "" + +#: ../Doc/howto/logging-cookbook.rst:3767 +msgid "" +"This just buffers up stuff until a newline is seen, and then logs complete " +"lines. With this approach, you get better output:" +msgstr "" + +#: ../Doc/howto/logging-cookbook.rst:3783 msgid "Patterns to avoid" msgstr "Patrones para evitar" -#: ../Doc/howto/logging-cookbook.rst:2989 +#: ../Doc/howto/logging-cookbook.rst:3785 msgid "" "Although the preceding sections have described ways of doing things you " "might need to do or deal with, it is worth mentioning some usage patterns " @@ -2267,11 +2581,11 @@ msgstr "" "mayoría de los casos. Las siguientes secciones no están en ningún orden en " "particular." -#: ../Doc/howto/logging-cookbook.rst:2996 +#: ../Doc/howto/logging-cookbook.rst:3791 msgid "Opening the same log file multiple times" msgstr "Abrir el mismo archivo de registro varias veces" -#: ../Doc/howto/logging-cookbook.rst:2998 +#: ../Doc/howto/logging-cookbook.rst:3793 msgid "" "On Windows, you will generally not be able to open the same file multiple " "times as this will lead to a \"file is in use by another process\" error. " @@ -2283,7 +2597,7 @@ msgstr "" "embargo, en las plataformas POSIX no obtendrá ningún error si abre el mismo " "archivo varias veces. Esto podría hacerse accidentalmente, por ejemplo:" -#: ../Doc/howto/logging-cookbook.rst:3003 +#: ../Doc/howto/logging-cookbook.rst:3798 msgid "" "Adding a file handler more than once which references the same file (e.g. by " "a copy/paste/forget-to-change error)." @@ -2292,7 +2606,7 @@ msgstr "" "mismo archivo (por ejemplo, mediante un error de copiar/pegar/olvidar-" "cambiar)." -#: ../Doc/howto/logging-cookbook.rst:3006 +#: ../Doc/howto/logging-cookbook.rst:3801 msgid "" "Opening two files that look different, as they have different names, but are " "the same because one is a symbolic link to the other." @@ -2300,7 +2614,7 @@ msgstr "" "Abrir dos archivos que se ven diferentes, ya que tienen diferentes nombres, " "pero son iguales porque uno es un enlace simbólico al otro." -#: ../Doc/howto/logging-cookbook.rst:3009 +#: ../Doc/howto/logging-cookbook.rst:3804 msgid "" "Forking a process, following which both parent and child have a reference to " "the same file. This might be through use of the :mod:`multiprocessing` " @@ -2310,7 +2624,7 @@ msgstr "" "referencia al mismo archivo. Esto podría ser mediante el uso del módulo :mod:" "`multiprocessing`, por ejemplo." -#: ../Doc/howto/logging-cookbook.rst:3013 +#: ../Doc/howto/logging-cookbook.rst:3808 msgid "" "Opening a file multiple times might *appear* to work most of the time, but " "can lead to a number of problems in practice:" @@ -2318,7 +2632,7 @@ msgstr "" "Abrir un archivo varias veces puede *parecer* que funciona la mayor parte " "del tiempo, pero puede dar lugar a una serie de problemas en la práctica:" -#: ../Doc/howto/logging-cookbook.rst:3016 +#: ../Doc/howto/logging-cookbook.rst:3811 msgid "" "Logging output can be garbled because multiple threads or processes try to " "write to the same file. Although logging guards against concurrent use of " @@ -2333,12 +2647,15 @@ msgstr "" "escrituras simultáneas utilizando dos instancias de controlador diferentes " "que apunten al mismo archivo." -#: ../Doc/howto/logging-cookbook.rst:3022 +#: ../Doc/howto/logging-cookbook.rst:3817 +#, fuzzy msgid "" "An attempt to delete a file (e.g. during file rotation) silently fails, " "because there is another reference pointing to it. This can lead to " "confusion and wasted debugging time - log entries end up in unexpected " -"places, or are lost altogether." +"places, or are lost altogether. Or a file that was supposed to be moved " +"remains in place, and grows in size unexpectedly despite size-based rotation " +"being supposedly in place." msgstr "" "Un intento de eliminar un archivo (por ejemplo, durante la rotación de " "archivos) falla silenciosamente, porque hay otra referencia que apunta a él. " @@ -2346,7 +2663,7 @@ msgstr "" "entradas del registro terminan en lugares inesperados o se pierden por " "completo." -#: ../Doc/howto/logging-cookbook.rst:3027 +#: ../Doc/howto/logging-cookbook.rst:3824 msgid "" "Use the techniques outlined in :ref:`multiple-processes` to circumvent such " "issues." @@ -2354,12 +2671,12 @@ msgstr "" "Utilice las técnicas descritas en :ref:`multiple-processes` para evitar " "estos problemas." -#: ../Doc/howto/logging-cookbook.rst:3031 +#: ../Doc/howto/logging-cookbook.rst:3828 msgid "Using loggers as attributes in a class or passing them as parameters" msgstr "" "Usar registradores como atributos en una clase o pasarlos como parámetros" -#: ../Doc/howto/logging-cookbook.rst:3033 +#: ../Doc/howto/logging-cookbook.rst:3830 msgid "" "While there might be unusual cases where you'll need to do this, in general " "there is no point because loggers are singletons. Code can always access a " @@ -2378,14 +2695,14 @@ msgstr "" "estáticos. Sin embargo, este patrón no tiene sentido en Python, donde el " "módulo (y no la clase) es la unidad de descomposición del software." -#: ../Doc/howto/logging-cookbook.rst:3043 +#: ../Doc/howto/logging-cookbook.rst:3839 msgid "" "Adding handlers other than :class:`NullHandler` to a logger in a library" msgstr "" "Agregar controladores distintos de :class:`NullHandler` a un registrador en " "una biblioteca" -#: ../Doc/howto/logging-cookbook.rst:3045 +#: ../Doc/howto/logging-cookbook.rst:3841 msgid "" "Configuring logging by adding handlers, formatters and filters is the " "responsibility of the application developer, not the library developer. If " @@ -2398,11 +2715,11 @@ msgstr "" "agregar controladores a ninguno de sus registradores que no sean una " "instancia :class:`~logging.NullHandler`." -#: ../Doc/howto/logging-cookbook.rst:3052 +#: ../Doc/howto/logging-cookbook.rst:3847 msgid "Creating a lot of loggers" msgstr "Crear muchos registradores (*loggers*)" -#: ../Doc/howto/logging-cookbook.rst:3054 +#: ../Doc/howto/logging-cookbook.rst:3849 msgid "" "Loggers are singletons that are never freed during a script execution, and " "so creating lots of loggers will use up memory which can't then be freed. " @@ -2420,3 +2737,17 @@ msgstr "" "y restringir los registradores creados a aquellos que describen áreas dentro " "de su aplicación (generalmente módulos, pero ocasionalmente un poco más " "detallado que eso)." + +#: ../Doc/howto/logging-cookbook.rst:3860 +msgid "Other resources" +msgstr "" + +#: ../Doc/howto/logging-cookbook.rst:3873 +#, fuzzy +msgid ":ref:`Basic Tutorial `" +msgstr ":ref:`Un tutorial básico de logging `" + +#: ../Doc/howto/logging-cookbook.rst:3875 +#, fuzzy +msgid ":ref:`Advanced Tutorial `" +msgstr ":ref:`Un tutorial de logging más avanzado `" diff --git a/howto/logging.po b/howto/logging.po index b7f98f76c6..04509cd6e9 100644 --- a/howto/logging.po +++ b/howto/logging.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-11-26 15:09+0100\n" "Last-Translator: Cristián Maureira-Fredes \n" "Language: es_US\n" @@ -19,8 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/howto/logging.rst:3 msgid "Logging HOWTO" @@ -167,7 +166,7 @@ msgstr "" "eventos que se utilizan para rastrear. A continuación se describen los " "niveles estándar y su aplicabilidad (en orden creciente de gravedad):" -#: ../Doc/howto/logging.rst:69 ../Doc/howto/logging.rst:854 +#: ../Doc/howto/logging.rst:69 ../Doc/howto/logging.rst:862 msgid "Level" msgstr "Nivel" @@ -175,7 +174,7 @@ msgstr "Nivel" msgid "When it's used" msgstr "Cuando es usado" -#: ../Doc/howto/logging.rst:71 ../Doc/howto/logging.rst:864 +#: ../Doc/howto/logging.rst:71 ../Doc/howto/logging.rst:872 msgid "``DEBUG``" msgstr "``DEBUG``" @@ -186,7 +185,7 @@ msgstr "" "Información detallada, típicamente de interés sólo durante el diagnóstico de " "problemas." -#: ../Doc/howto/logging.rst:74 ../Doc/howto/logging.rst:862 +#: ../Doc/howto/logging.rst:74 ../Doc/howto/logging.rst:870 msgid "``INFO``" msgstr "``INFO``" @@ -194,7 +193,7 @@ msgstr "``INFO``" msgid "Confirmation that things are working as expected." msgstr "Confirmación de que las cosas están funcionando como se esperaba." -#: ../Doc/howto/logging.rst:77 ../Doc/howto/logging.rst:860 +#: ../Doc/howto/logging.rst:77 ../Doc/howto/logging.rst:868 msgid "``WARNING``" msgstr "``WARNING``" @@ -208,7 +207,7 @@ msgstr "" "el futuro cercano (por ejemplo, \"espacio de disco bajo\"). El software " "sigue funcionando como se esperaba." -#: ../Doc/howto/logging.rst:82 ../Doc/howto/logging.rst:858 +#: ../Doc/howto/logging.rst:82 ../Doc/howto/logging.rst:866 msgid "``ERROR``" msgstr "``ERROR``" @@ -220,7 +219,7 @@ msgstr "" "Debido a un problema más grave, el software no ha sido capaz de realizar " "alguna función." -#: ../Doc/howto/logging.rst:85 ../Doc/howto/logging.rst:856 +#: ../Doc/howto/logging.rst:85 ../Doc/howto/logging.rst:864 msgid "``CRITICAL``" msgstr "``CRITICAL``" @@ -286,9 +285,10 @@ msgid "Logging to a file" msgstr "Logging a un archivo" #: ../Doc/howto/logging.rst:126 +#, fuzzy msgid "" "A very common situation is that of recording logging events in a file, so " -"let's look at that next. Be sure to try the following in a newly-started " +"let's look at that next. Be sure to try the following in a newly started " "Python interpreter, and don't just continue from the session described " "above::" msgstr "" @@ -356,18 +356,20 @@ msgstr "" "de entrada del usuario, quizás como en el siguiente ejemplo::" #: ../Doc/howto/logging.rst:181 +#, fuzzy msgid "" "The call to :func:`basicConfig` should come *before* any calls to :func:" -"`debug`, :func:`info` etc. As it's intended as a one-off simple " -"configuration facility, only the first call will actually do anything: " -"subsequent calls are effectively no-ops." +"`debug`, :func:`info`, etc. Otherwise, those functions will call :func:" +"`basicConfig` for you with the default options. As it's intended as a one-" +"off simple configuration facility, only the first call will actually do " +"anything: subsequent calls are effectively no-ops." msgstr "" "La llamada a :func:`basicConfig` debería venir *antes* de cualquier llamada " "a :func:`debug`, :func:`info` etc. Como se pretende hacer una simple " "facilidad de configuración única, sólo la primera llamada hará realmente " "algo: las llamadas subsiguientes son efectivamente no-ops." -#: ../Doc/howto/logging.rst:186 +#: ../Doc/howto/logging.rst:187 msgid "" "If you run the above script several times, the messages from successive runs " "are appended to the file *example.log*. If you want each run to start " @@ -380,7 +382,7 @@ msgstr "" "puedes especificar el argumento *filemode*, cambiando la llamada en el " "ejemplo anterior a::" -#: ../Doc/howto/logging.rst:193 +#: ../Doc/howto/logging.rst:194 msgid "" "The output will be the same as before, but the log file is no longer " "appended to, so the messages from earlier runs are lost." @@ -388,11 +390,11 @@ msgstr "" "La impresión será la misma que antes, pero el archivo de registro ya no se " "adjunta, por lo que los mensajes de las ejecuciones anteriores se pierden." -#: ../Doc/howto/logging.rst:198 +#: ../Doc/howto/logging.rst:199 msgid "Logging from multiple modules" msgstr "*Logging* de múltiples módulos" -#: ../Doc/howto/logging.rst:200 +#: ../Doc/howto/logging.rst:201 msgid "" "If your program consists of multiple modules, here's an example of how you " "could organize logging in it::" @@ -400,11 +402,11 @@ msgstr "" "Si su programa consiste de múltiples módulos, aquí hay un ejemplo de cómo " "podría organizar el inicio de sesión en él::" -#: ../Doc/howto/logging.rst:224 +#: ../Doc/howto/logging.rst:225 msgid "If you run *myapp.py*, you should see this in *myapp.log*:" msgstr "Si ejecutas *myapp.py*, deberías ver esto en *myapp.log*:" -#: ../Doc/howto/logging.rst:232 +#: ../Doc/howto/logging.rst:233 msgid "" "which is hopefully what you were expecting to see. You can generalize this " "to multiple modules, using the pattern in *mylib.py*. Note that for this " @@ -422,11 +424,11 @@ msgstr "" "documentación más allá del nivel del tutorial -- ver :ref:`logging-advanced-" "tutorial`." -#: ../Doc/howto/logging.rst:242 +#: ../Doc/howto/logging.rst:243 msgid "Logging variable data" msgstr "Registrar datos de variables" -#: ../Doc/howto/logging.rst:244 +#: ../Doc/howto/logging.rst:245 msgid "" "To log variable data, use a format string for the event description message " "and append the variable data as arguments. For example::" @@ -435,11 +437,12 @@ msgstr "" "mensaje de descripción del evento y añada los datos variables como " "argumentos. Por ejemplo::" -#: ../Doc/howto/logging.rst:250 +#: ../Doc/howto/logging.rst:251 msgid "will display:" msgstr "se mostrará:" -#: ../Doc/howto/logging.rst:256 +#: ../Doc/howto/logging.rst:257 +#, python-format msgid "" "As you can see, merging of variable data into the event description message " "uses the old, %-style of string formatting. This is for backwards " @@ -456,11 +459,11 @@ msgstr "" "pero explorarlas está fuera del alcance de este tutorial: consulte :ref:" "`formatting-styles` para obtener más información." -#: ../Doc/howto/logging.rst:265 +#: ../Doc/howto/logging.rst:266 msgid "Changing the format of displayed messages" msgstr "Cambiar el formato de los mensajes mostrados" -#: ../Doc/howto/logging.rst:267 +#: ../Doc/howto/logging.rst:268 msgid "" "To change the format which is used to display messages, you need to specify " "the format you want to use::" @@ -468,11 +471,11 @@ msgstr "" "Para cambiar el formato que se utiliza para visualizar los mensajes, es " "necesario especificar el formato que se desea utilizar::" -#: ../Doc/howto/logging.rst:276 +#: ../Doc/howto/logging.rst:277 msgid "which would print:" msgstr "que se imprimirá:" -#: ../Doc/howto/logging.rst:284 +#: ../Doc/howto/logging.rst:285 msgid "" "Notice that the 'root' which appeared in earlier examples has disappeared. " "For a full set of things that can appear in format strings, you can refer to " @@ -488,11 +491,11 @@ msgstr "" "*message* (descripción del evento, incluyendo los datos variables) y tal vez " "mostrar cuándo ocurrió el evento. Esto se describe en la siguiente sección." -#: ../Doc/howto/logging.rst:293 +#: ../Doc/howto/logging.rst:294 msgid "Displaying the date/time in messages" msgstr "Visualización de la fecha/hora en los mensajes" -#: ../Doc/howto/logging.rst:295 +#: ../Doc/howto/logging.rst:296 #, python-format msgid "" "To display the date and time of an event, you would place '%(asctime)s' in " @@ -501,11 +504,11 @@ msgstr "" "Para mostrar la fecha y la hora de un evento, usted colocaría '%(asctime)s' " "en su cadena de formato::" -#: ../Doc/howto/logging.rst:302 +#: ../Doc/howto/logging.rst:303 msgid "which should print something like this:" msgstr "que debería imprimir algo como esto:" -#: ../Doc/howto/logging.rst:308 +#: ../Doc/howto/logging.rst:309 msgid "" "The default format for date/time display (shown above) is like ISO8601 or :" "rfc:`3339`. If you need more control over the formatting of the date/time, " @@ -516,11 +519,11 @@ msgstr "" "formato de la fecha/hora, proporcione un argumento *datefmt* a " "``basicConfig``, como en este ejemplo::" -#: ../Doc/howto/logging.rst:316 +#: ../Doc/howto/logging.rst:317 msgid "which would display something like this:" msgstr "que mostraría algo como esto:" -#: ../Doc/howto/logging.rst:322 +#: ../Doc/howto/logging.rst:323 msgid "" "The format of the *datefmt* argument is the same as supported by :func:`time." "strftime`." @@ -528,11 +531,11 @@ msgstr "" "El formato del argumento *datefmt* es el mismo que el soportado por :func:" "`time.strftime`." -#: ../Doc/howto/logging.rst:327 +#: ../Doc/howto/logging.rst:328 msgid "Next Steps" msgstr "Próximos pasos" -#: ../Doc/howto/logging.rst:329 +#: ../Doc/howto/logging.rst:330 msgid "" "That concludes the basic tutorial. It should be enough to get you up and " "running with logging. There's a lot more that the logging package offers, " @@ -546,7 +549,7 @@ msgstr "" "tiempo en la lectura de las siguientes secciones. Si estás listo para eso, " "toma un poco de tu bebida favorita y sigue adelante." -#: ../Doc/howto/logging.rst:335 +#: ../Doc/howto/logging.rst:336 msgid "" "If your logging needs are simple, then use the above examples to incorporate " "logging into your own scripts, and if you run into problems or don't " @@ -560,7 +563,7 @@ msgstr "" "lang.python (disponible en https://groups.google.com/forum/#!forum/comp.lang." "python) y debería recibir ayuda antes de que transcurra demasiado tiempo." -#: ../Doc/howto/logging.rst:341 +#: ../Doc/howto/logging.rst:342 msgid "" "Still here? You can carry on reading the next few sections, which provide a " "slightly more advanced/in-depth tutorial than the basic one above. After " @@ -570,11 +573,11 @@ msgstr "" "proporcionan un tutorial un poco más avanzado y profundo que el básico de " "arriba. Después de eso, puedes echar un vistazo al :ref:`logging-cookbook`." -#: ../Doc/howto/logging.rst:349 +#: ../Doc/howto/logging.rst:350 msgid "Advanced Logging Tutorial" msgstr "Tutorial de registro avanzado" -#: ../Doc/howto/logging.rst:351 +#: ../Doc/howto/logging.rst:352 msgid "" "The logging library takes a modular approach and offers several categories " "of components: loggers, handlers, filters, and formatters." @@ -582,13 +585,13 @@ msgstr "" "La biblioteca de logging adopta un enfoque modular y ofrece varias " "categorías de componentes: registradores, gestores, filtros y formateadores." -#: ../Doc/howto/logging.rst:354 +#: ../Doc/howto/logging.rst:355 msgid "Loggers expose the interface that application code directly uses." msgstr "" "Los registradores exponen la interfaz que el código de la aplicación utiliza " "directamente." -#: ../Doc/howto/logging.rst:355 +#: ../Doc/howto/logging.rst:356 msgid "" "Handlers send the log records (created by loggers) to the appropriate " "destination." @@ -596,7 +599,7 @@ msgstr "" "Los gestores envían los registros de log (creados por los registradores) al " "destino apropiado." -#: ../Doc/howto/logging.rst:357 +#: ../Doc/howto/logging.rst:358 msgid "" "Filters provide a finer grained facility for determining which log records " "to output." @@ -604,13 +607,13 @@ msgstr "" "Los filtros proporcionan una instalación de grano más fino para determinar " "qué registros de log se deben producir." -#: ../Doc/howto/logging.rst:359 +#: ../Doc/howto/logging.rst:360 msgid "Formatters specify the layout of log records in the final output." msgstr "" "Los formatos especifican la disposición de los archivos de log en el " "resultado final." -#: ../Doc/howto/logging.rst:361 +#: ../Doc/howto/logging.rst:362 msgid "" "Log event information is passed between loggers, handlers, filters and " "formatters in a :class:`LogRecord` instance." @@ -618,7 +621,7 @@ msgstr "" "La información de los eventos de registro se pasa entre los registradores, " "gestores, filtros y formateadores en una instancia :class:`LogRecord`." -#: ../Doc/howto/logging.rst:364 +#: ../Doc/howto/logging.rst:365 msgid "" "Logging is performed by calling methods on instances of the :class:`Logger` " "class (hereafter called :dfn:`loggers`). Each instance has a name, and they " @@ -637,7 +640,7 @@ msgstr "" "cualquier cosa que se desee, e indican el área de una aplicación en la que " "se origina un mensaje registrado." -#: ../Doc/howto/logging.rst:371 +#: ../Doc/howto/logging.rst:372 msgid "" "A good convention to use when naming loggers is to use a module-level " "logger, in each module which uses logging, named as follows::" @@ -646,7 +649,7 @@ msgstr "" "es utilizar un registrador a nivel de módulo, en cada módulo que utilice el " "registro, llamado de la siguiente manera::" -#: ../Doc/howto/logging.rst:376 +#: ../Doc/howto/logging.rst:377 msgid "" "This means that logger names track the package/module hierarchy, and it's " "intuitively obvious where events are logged just from the logger name." @@ -655,7 +658,7 @@ msgstr "" "paquetes/módulos, y es intuitivamente obvio donde se registran los eventos " "sólo a partir del nombre del registrador." -#: ../Doc/howto/logging.rst:379 +#: ../Doc/howto/logging.rst:380 msgid "" "The root of the hierarchy of loggers is called the root logger. That's the " "logger used by the functions :func:`debug`, :func:`info`, :func:`warning`, :" @@ -669,7 +672,7 @@ msgstr "" "del registrador raíz. Las funciones y los métodos tienen las mismas firmas. " "El nombre del root *logger* se imprime como ‘root’ en la salida registrada." -#: ../Doc/howto/logging.rst:385 +#: ../Doc/howto/logging.rst:386 msgid "" "It is, of course, possible to log messages to different destinations. " "Support is included in the package for writing log messages to files, HTTP " @@ -688,7 +691,7 @@ msgstr "" "de registro si tienes requisitos especiales que no se cumplen con ninguna de " "las clases de gestor incorporadas." -#: ../Doc/howto/logging.rst:392 +#: ../Doc/howto/logging.rst:393 msgid "" "By default, no destination is set for any logging messages. You can specify " "a destination (such as console or file) by using :func:`basicConfig` as in " @@ -708,13 +711,13 @@ msgstr "" "stderr``) y un formato por defecto para el mensaje mostrado antes de delegar " "en el registrador root para hacer la salida real del mensaje." -#: ../Doc/howto/logging.rst:400 +#: ../Doc/howto/logging.rst:401 msgid "The default format set by :func:`basicConfig` for messages is:" msgstr "" "El formato por defecto establecido por :func:`basicConfig` para los mensajes " "es:" -#: ../Doc/howto/logging.rst:406 +#: ../Doc/howto/logging.rst:407 msgid "" "You can change this by passing a format string to :func:`basicConfig` with " "the *format* keyword argument. For all options regarding how a format string " @@ -724,11 +727,11 @@ msgstr "" "el argumento de la palabra clave *format*. Para todas las opciones relativas " "a cómo se construye una cadena de formato, ver :ref:`formatter-objects`." -#: ../Doc/howto/logging.rst:411 +#: ../Doc/howto/logging.rst:412 msgid "Logging Flow" msgstr "Flujo de Registro" -#: ../Doc/howto/logging.rst:413 +#: ../Doc/howto/logging.rst:414 msgid "" "The flow of log event information in loggers and handlers is illustrated in " "the following diagram." @@ -736,11 +739,11 @@ msgstr "" "En el siguiente diagrama se ilustra el flujo de información de los eventos " "de registro en los registradores y gestores." -#: ../Doc/howto/logging.rst:419 +#: ../Doc/howto/logging.rst:420 msgid "Loggers" msgstr "Registradores" -#: ../Doc/howto/logging.rst:421 +#: ../Doc/howto/logging.rst:422 msgid "" ":class:`Logger` objects have a threefold job. First, they expose several " "methods to application code so that applications can log messages at " @@ -757,7 +760,7 @@ msgstr "" "objetos registradores pasan los mensajes de registro relevantes a todos los " "manejadores de registro interesados." -#: ../Doc/howto/logging.rst:427 +#: ../Doc/howto/logging.rst:428 msgid "" "The most widely used methods on logger objects fall into two categories: " "configuration and message sending." @@ -765,11 +768,11 @@ msgstr "" "Los métodos más utilizados en los objetos de registro se dividen en dos " "categorías: configuración y envío de mensajes." -#: ../Doc/howto/logging.rst:430 +#: ../Doc/howto/logging.rst:431 msgid "These are the most common configuration methods:" msgstr "Estos son los métodos de configuración más comunes:" -#: ../Doc/howto/logging.rst:432 +#: ../Doc/howto/logging.rst:433 msgid "" ":meth:`Logger.setLevel` specifies the lowest-severity log message a logger " "will handle, where debug is the lowest built-in severity level and critical " @@ -783,7 +786,7 @@ msgstr "" "el nivel de severidad es INFO, el registrador sólo manejará los mensajes " "INFO, WARNING, ERROR y CRITICAL e ignorará los mensajes DEBUG." -#: ../Doc/howto/logging.rst:438 +#: ../Doc/howto/logging.rst:439 msgid "" ":meth:`Logger.addHandler` and :meth:`Logger.removeHandler` add and remove " "handler objects from the logger object. Handlers are covered in more detail " @@ -793,7 +796,7 @@ msgstr "" "los objetos *handler* del objeto *logger*. Los manejadores (*handlers*) se " "tratan con más detalle en :ref:`handler-basic`." -#: ../Doc/howto/logging.rst:442 +#: ../Doc/howto/logging.rst:443 msgid "" ":meth:`Logger.addFilter` and :meth:`Logger.removeFilter` add and remove " "filter objects from the logger object. Filters are covered in more detail " @@ -803,7 +806,7 @@ msgstr "" "objetos de filtro del objeto logger. Los filtros se tratan con más detalle " "en :ref:`filter`." -#: ../Doc/howto/logging.rst:446 +#: ../Doc/howto/logging.rst:447 msgid "" "You don't need to always call these methods on every logger you create. See " "the last two paragraphs in this section." @@ -811,14 +814,14 @@ msgstr "" "No es necesario que siempre llames a estos métodos en cada registrador que " "crees. Vea los dos últimos párrafos de esta sección." -#: ../Doc/howto/logging.rst:449 +#: ../Doc/howto/logging.rst:450 msgid "" "With the logger object configured, the following methods create log messages:" msgstr "" "Con el objeto *logger* configurado, los siguientes métodos crean mensajes de " "log:" -#: ../Doc/howto/logging.rst:451 +#: ../Doc/howto/logging.rst:452 #, python-format msgid "" ":meth:`Logger.debug`, :meth:`Logger.info`, :meth:`Logger.warning`, :meth:" @@ -842,7 +845,7 @@ msgstr "" "clave de ``exc_info`` y la usan para determinar si registran información de " "excepción." -#: ../Doc/howto/logging.rst:461 +#: ../Doc/howto/logging.rst:462 msgid "" ":meth:`Logger.exception` creates a log message similar to :meth:`Logger." "error`. The difference is that :meth:`Logger.exception` dumps a stack trace " @@ -853,7 +856,7 @@ msgstr "" "pila junto con él. Llama a este método sólo desde un manejador de " "excepciones." -#: ../Doc/howto/logging.rst:465 +#: ../Doc/howto/logging.rst:466 msgid "" ":meth:`Logger.log` takes a log level as an explicit argument. This is a " "little more verbose for logging messages than using the log level " @@ -865,7 +868,7 @@ msgstr "" "conveniencia de nivel de registro listados arriba, pero así es como se " "registra en niveles de registro personalizados." -#: ../Doc/howto/logging.rst:469 +#: ../Doc/howto/logging.rst:470 msgid "" ":func:`getLogger` returns a reference to a logger instance with the " "specified name if it is provided, or ``root`` if not. The names are period-" @@ -885,7 +888,7 @@ msgstr "" "un *logger* con un nombre de ``foo``, los *loggers* con nombres de ``foo." "bar``, ``foo.bar.baz``, y ``foo.bam`` son todos descendientes de ``foo``." -#: ../Doc/howto/logging.rst:477 +#: ../Doc/howto/logging.rst:478 msgid "" "Loggers have a concept of *effective level*. If a level is not explicitly " "set on a logger, the level of its parent is used instead as its effective " @@ -906,7 +909,7 @@ msgstr "" "evento, el nivel efectivo del registrador se utiliza para determinar si el " "evento se pasa a los manejadores del registrador." -#: ../Doc/howto/logging.rst:485 +#: ../Doc/howto/logging.rst:486 msgid "" "Child loggers propagate messages up to the handlers associated with their " "ancestor loggers. Because of this, it is unnecessary to define and configure " @@ -923,11 +926,11 @@ msgstr "" "desactivar la propagación estableciendo el atributo *propagate* de un " "*logger* en ``False``.)" -#: ../Doc/howto/logging.rst:496 +#: ../Doc/howto/logging.rst:497 msgid "Handlers" msgstr "Gestores" -#: ../Doc/howto/logging.rst:498 +#: ../Doc/howto/logging.rst:499 msgid "" ":class:`~logging.Handler` objects are responsible for dispatching the " "appropriate log messages (based on the log messages' severity) to the " @@ -951,7 +954,7 @@ msgstr "" "responsable de enviar mensajes de una severidad específica a una ubicación " "específica." -#: ../Doc/howto/logging.rst:508 +#: ../Doc/howto/logging.rst:509 msgid "" "The standard library includes quite a few handler types (see :ref:`useful-" "handlers`); the tutorials use mainly :class:`StreamHandler` and :class:" @@ -961,7 +964,7 @@ msgstr "" "`useful-handlers`); los tutoriales usan principalmente :class:" "`StreamHandler` y :class:`FileHandler` en sus ejemplos." -#: ../Doc/howto/logging.rst:512 +#: ../Doc/howto/logging.rst:513 msgid "" "There are very few methods in a handler for application developers to " "concern themselves with. The only handler methods that seem relevant for " @@ -974,7 +977,7 @@ msgstr "" "de manejador incorporados (es decir, que no crean manejadores " "personalizados) son los siguientes métodos de configuración:" -#: ../Doc/howto/logging.rst:517 +#: ../Doc/howto/logging.rst:518 msgid "" "The :meth:`~Handler.setLevel` method, just as in logger objects, specifies " "the lowest severity that will be dispatched to the appropriate destination. " @@ -990,7 +993,7 @@ msgstr "" "manejadores. El nivel establecido en cada manejador determina qué mensajes " "enviará ese manejador." -#: ../Doc/howto/logging.rst:523 +#: ../Doc/howto/logging.rst:524 msgid "" ":meth:`~Handler.setFormatter` selects a Formatter object for this handler to " "use." @@ -998,7 +1001,7 @@ msgstr "" ":meth:`~Handler.setFormatter` selecciona un objeto *Formatter* para que este " "*handler* lo use." -#: ../Doc/howto/logging.rst:526 +#: ../Doc/howto/logging.rst:527 msgid "" ":meth:`~Handler.addFilter` and :meth:`~Handler.removeFilter` respectively " "configure and deconfigure filter objects on handlers." @@ -1006,7 +1009,7 @@ msgstr "" ":meth:`~Handler.addFilter` y :meth:`~Handler.removeFilter` respectivamente " "configuran y desconfiguran los objetos del filtro en los handlers." -#: ../Doc/howto/logging.rst:529 +#: ../Doc/howto/logging.rst:530 msgid "" "Application code should not directly instantiate and use instances of :class:" "`Handler`. Instead, the :class:`Handler` class is a base class that defines " @@ -1018,11 +1021,11 @@ msgstr "" "base que define la interfaz que todos los *handlers* deben tener y establece " "algún comportamiento por defecto que las clases hijas pueden usar (o anular)." -#: ../Doc/howto/logging.rst:536 +#: ../Doc/howto/logging.rst:537 msgid "Formatters" msgstr "Formateadores" -#: ../Doc/howto/logging.rst:538 +#: ../Doc/howto/logging.rst:539 msgid "" "Formatter objects configure the final order, structure, and contents of the " "log message. Unlike the base :class:`logging.Handler` class, application " @@ -1039,7 +1042,7 @@ msgstr "" "argumentos opcionales -- una cadena de formato de mensaje, una cadena de " "formato de fecha y un indicador de estilo." -#: ../Doc/howto/logging.rst:547 +#: ../Doc/howto/logging.rst:548 msgid "" "If there is no message format string, the default is to use the raw " "message. If there is no date format string, the default date format is:" @@ -1048,36 +1051,39 @@ msgstr "" "utilizar el mensaje en bruto. Si no hay una cadena de formato de fecha, el " "formato de fecha por defecto es:" -#: ../Doc/howto/logging.rst:554 +#: ../Doc/howto/logging.rst:555 +#, fuzzy msgid "" -"with the milliseconds tacked on at the end. The ``style`` is one of `%`, '{' " -"or '$'. If one of these is not specified, then '%' will be used." +"with the milliseconds tacked on at the end. The ``style`` is one of ``'%'``, " +"``'{'``, or ``'$'``. If one of these is not specified, then ``'%'`` will be " +"used." msgstr "" "con los milisegundos clavados al final. El ``style`` es uno de `%`, ‘{‘ o " "‘$’. Si uno de estos no se especifica, entonces se usará ‘%’." -#: ../Doc/howto/logging.rst:557 +#: ../Doc/howto/logging.rst:558 +#, fuzzy msgid "" -"If the ``style`` is '%', the message format string uses ``%()s`` styled string substitution; the possible keys are documented in :" -"ref:`logrecord-attributes`. If the style is '{', the message format string " -"is assumed to be compatible with :meth:`str.format` (using keyword " -"arguments), while if the style is '$' then the message format string should " -"conform to what is expected by :meth:`string.Template.substitute`." -msgstr "" -"Si el ``style`` es '%', la cadena del formato de mensaje utiliza ``" -"%()s`` estilo de sustitución de cadena; las posibles claves " -"están documentadas en :ref:`logrecord-attributes`. Si el estilo es '{', se " -"asume que la cadena del formato del mensaje es compatible con :meth:`str." -"format` (usando argumentos de palabras clave), mientras que si el estilo es " -"'$' entonces la cadena del formato del mensaje debe ajustarse a lo que se " -"espera de :meth:`string.Template.substitute`." - -#: ../Doc/howto/logging.rst:564 +"ref:`logrecord-attributes`. If the style is ``'{'``, the message format " +"string is assumed to be compatible with :meth:`str.format` (using keyword " +"arguments), while if the style is ``'$'`` then the message format string " +"should conform to what is expected by :meth:`string.Template.substitute`." +msgstr "" +"Si el ``style`` es '%', la cadena del formato de mensaje utiliza " +"``%()s`` estilo de sustitución de cadena; las posibles " +"claves están documentadas en :ref:`logrecord-attributes`. Si el estilo es " +"'{', se asume que la cadena del formato del mensaje es compatible con :meth:" +"`str.format` (usando argumentos de palabras clave), mientras que si el " +"estilo es '$' entonces la cadena del formato del mensaje debe ajustarse a lo " +"que se espera de :meth:`string.Template.substitute`." + +#: ../Doc/howto/logging.rst:565 msgid "Added the ``style`` parameter." msgstr "Añadió el parámetro ``style``." -#: ../Doc/howto/logging.rst:567 +#: ../Doc/howto/logging.rst:568 msgid "" "The following message format string will log the time in a human-readable " "format, the severity of the message, and the contents of the message, in " @@ -1087,7 +1093,7 @@ msgstr "" "legible para los humanos, la gravedad del mensaje y el contenido del " "mensaje, en ese orden::" -#: ../Doc/howto/logging.rst:573 +#: ../Doc/howto/logging.rst:574 msgid "" "Formatters use a user-configurable function to convert the creation time of " "a record to a tuple. By default, :func:`time.localtime` is used; to change " @@ -1106,15 +1112,15 @@ msgstr "" "que todas las horas de registro se muestren en GMT, establece el atributo " "``converter`` en la clase *Formatter* (a ``time.gmtime`` para mostrar GMT)." -#: ../Doc/howto/logging.rst:583 +#: ../Doc/howto/logging.rst:584 msgid "Configuring Logging" msgstr "Configuración del registro" -#: ../Doc/howto/logging.rst:587 +#: ../Doc/howto/logging.rst:588 msgid "Programmers can configure logging in three ways:" msgstr "Los programadores pueden configurar el registro en tres maneras:" -#: ../Doc/howto/logging.rst:589 +#: ../Doc/howto/logging.rst:590 msgid "" "Creating loggers, handlers, and formatters explicitly using Python code that " "calls the configuration methods listed above." @@ -1122,7 +1128,7 @@ msgstr "" "Creando registradores, manejadores y formateadores explícitamente usando " "código Python que llama a los métodos de configuración listados arriba." -#: ../Doc/howto/logging.rst:591 +#: ../Doc/howto/logging.rst:592 msgid "" "Creating a logging config file and reading it using the :func:`fileConfig` " "function." @@ -1130,7 +1136,7 @@ msgstr "" "Creando un archivo de configuración de registro y leyéndolo usando la " "función :func:`fileConfig`." -#: ../Doc/howto/logging.rst:593 +#: ../Doc/howto/logging.rst:594 msgid "" "Creating a dictionary of configuration information and passing it to the :" "func:`dictConfig` function." @@ -1138,7 +1144,7 @@ msgstr "" "Creando un diccionario de información de configuración y pasándolo a la " "función :func:`dictConfig`." -#: ../Doc/howto/logging.rst:596 +#: ../Doc/howto/logging.rst:597 msgid "" "For the reference documentation on the last two options, see :ref:`logging-" "config-api`. The following example configures a very simple logger, a " @@ -1149,13 +1155,13 @@ msgstr "" "simple, un manejador de consola, y un formateador simple usando código " "Python::" -#: ../Doc/howto/logging.rst:626 +#: ../Doc/howto/logging.rst:627 msgid "" "Running this module from the command line produces the following output:" msgstr "" "Ejecutar este módulo desde la línea de comandos produce la siguiente salida:" -#: ../Doc/howto/logging.rst:637 +#: ../Doc/howto/logging.rst:638 msgid "" "The following Python module creates a logger, handler, and formatter nearly " "identical to those in the example listed above, with the only difference " @@ -1165,18 +1171,18 @@ msgstr "" "casi idéntico a los del ejemplo anterior, con la única diferencia de los " "nombres de los objetos::" -#: ../Doc/howto/logging.rst:656 +#: ../Doc/howto/logging.rst:657 msgid "Here is the logging.conf file:" msgstr "Aquí está el archivo logging.conf:" -#: ../Doc/howto/logging.rst:688 +#: ../Doc/howto/logging.rst:689 msgid "" "The output is nearly identical to that of the non-config-file-based example:" msgstr "" "La salida es casi idéntica a la del ejemplo basado en un archivo no " "configurado:" -#: ../Doc/howto/logging.rst:699 +#: ../Doc/howto/logging.rst:700 msgid "" "You can see that the config file approach has a few advantages over the " "Python code approach, mainly separation of configuration and code and the " @@ -1187,7 +1193,7 @@ msgstr "" "la configuración y el código y la capacidad de los no codificadores de " "modificar fácilmente las propiedades de registro." -#: ../Doc/howto/logging.rst:703 +#: ../Doc/howto/logging.rst:704 msgid "" "The :func:`fileConfig` function takes a default parameter, " "``disable_existing_loggers``, which defaults to ``True`` for reasons of " @@ -1206,7 +1212,7 @@ msgstr "" "documentación de referencia para más información, y especifique ``False`` " "para este parámetro si lo desea." -#: ../Doc/howto/logging.rst:711 +#: ../Doc/howto/logging.rst:712 msgid "" "The dictionary passed to :func:`dictConfig` can also specify a Boolean value " "with key ``disable_existing_loggers``, which if not specified explicitly in " @@ -1222,7 +1228,7 @@ msgstr "" "desea - en cuyo caso, proporcione a la clave explícitamente un valor de " "``False``." -#: ../Doc/howto/logging.rst:721 +#: ../Doc/howto/logging.rst:722 msgid "" "Note that the class names referenced in config files need to be either " "relative to the logging module, or absolute values which can be resolved " @@ -1241,7 +1247,7 @@ msgstr "" "``mymodule``, donde ``mypackage`` está disponible en la ruta de importación " "de Python)." -#: ../Doc/howto/logging.rst:729 +#: ../Doc/howto/logging.rst:730 msgid "" "In Python 3.2, a new means of configuring logging has been introduced, using " "dictionaries to hold configuration information. This provides a superset of " @@ -1270,7 +1276,7 @@ msgstr "" "sobre un zócalo, o usar cualquier enfoque que tenga sentido para tu " "aplicación." -#: ../Doc/howto/logging.rst:741 +#: ../Doc/howto/logging.rst:742 msgid "" "Here's an example of the same configuration as above, in YAML format for the " "new dictionary-based approach:" @@ -1278,7 +1284,7 @@ msgstr "" "Aquí hay un ejemplo de la misma configuración que arriba, en formato YAML " "para el nuevo enfoque basado en el diccionario:" -#: ../Doc/howto/logging.rst:765 +#: ../Doc/howto/logging.rst:766 msgid "" "For more information about logging using a dictionary, see :ref:`logging-" "config-api`." @@ -1286,11 +1292,11 @@ msgstr "" "Para más información sobre el registro usando un diccionario, ver :ref:" "`logging-config-api`." -#: ../Doc/howto/logging.rst:769 +#: ../Doc/howto/logging.rst:770 msgid "What happens if no configuration is provided" msgstr "¿Qué pasa si no se proporciona ninguna configuración" -#: ../Doc/howto/logging.rst:771 +#: ../Doc/howto/logging.rst:772 msgid "" "If no logging configuration is provided, it is possible to have a situation " "where a logging event needs to be output, but no handlers can be found to " @@ -1303,13 +1309,13 @@ msgstr "" "suceso. El comportamiento del paquete de registro en estas circunstancias " "depende de la versión de Python." -#: ../Doc/howto/logging.rst:776 +#: ../Doc/howto/logging.rst:777 msgid "For versions of Python prior to 3.2, the behaviour is as follows:" msgstr "" "Para las versiones de Python anteriores a la 3.2, el comportamiento es el " "siguiente:" -#: ../Doc/howto/logging.rst:778 +#: ../Doc/howto/logging.rst:779 msgid "" "If *logging.raiseExceptions* is ``False`` (production mode), the event is " "silently dropped." @@ -1317,7 +1323,7 @@ msgstr "" "Si *logging.raiseExceptions* es ``Falso`` (modo de producción), el evento es " "abandonado silenciosamente." -#: ../Doc/howto/logging.rst:781 +#: ../Doc/howto/logging.rst:782 msgid "" "If *logging.raiseExceptions* is ``True`` (development mode), a message 'No " "handlers could be found for logger X.Y.Z' is printed once." @@ -1326,11 +1332,11 @@ msgstr "" "una vez un mensaje '*No handlers could be found for logger X.Y.Z*' ('No se " "pudo encontrar ningún manejador (*handler*) para el *logger* X.Y.Z')." -#: ../Doc/howto/logging.rst:784 +#: ../Doc/howto/logging.rst:785 msgid "In Python 3.2 and later, the behaviour is as follows:" msgstr "En Python 3.2 y posteriores, el comportamiento es el siguiente:" -#: ../Doc/howto/logging.rst:786 +#: ../Doc/howto/logging.rst:787 msgid "" "The event is output using a 'handler of last resort', stored in ``logging." "lastResort``. This internal handler is not associated with any logger, and " @@ -1350,7 +1356,7 @@ msgstr "" "descripción del evento. El nivel del manejador se establece en ``WARNING``, " "por lo que todos los eventos de esta y mayores severidades serán emitidos." -#: ../Doc/howto/logging.rst:795 +#: ../Doc/howto/logging.rst:796 msgid "" "To obtain the pre-3.2 behaviour, ``logging.lastResort`` can be set to " "``None``." @@ -1358,11 +1364,11 @@ msgstr "" "Para obtener el comportamiento anterior a la 3.2, ``logging.lastResort`` se " "puede configurar como ``None``." -#: ../Doc/howto/logging.rst:800 +#: ../Doc/howto/logging.rst:801 msgid "Configuring Logging for a Library" msgstr "Configurando Logging para una biblioteca" -#: ../Doc/howto/logging.rst:802 +#: ../Doc/howto/logging.rst:803 msgid "" "When developing a library which uses logging, you should take care to " "document how the library uses logging - for example, the names of loggers " @@ -1381,7 +1387,7 @@ msgstr "" "``WARNING`` y mayores se imprimirán en ``sys.stderr``. Esto se considera el " "mejor comportamiento por defecto." -#: ../Doc/howto/logging.rst:810 +#: ../Doc/howto/logging.rst:811 msgid "" "If for some reason you *don't* want these messages printed in the absence of " "any logging configuration, you can attach a do-nothing handler to the top-" @@ -1403,7 +1409,7 @@ msgstr "" "registro realizadas en el código de la biblioteca enviarán una salida a esos " "manejadores, como es normal." -#: ../Doc/howto/logging.rst:819 +#: ../Doc/howto/logging.rst:820 msgid "" "A do-nothing handler is included in the logging package: :class:`~logging." "NullHandler` (since Python 3.1). An instance of this handler could be added " @@ -1422,7 +1428,7 @@ msgstr "" "*foo* se hace usando registradores con nombres que coincidan con 'foo.x', " "'foo.x.y', etc. entonces el código::" -#: ../Doc/howto/logging.rst:830 +#: ../Doc/howto/logging.rst:831 msgid "" "should have the desired effect. If an organisation produces a number of " "libraries, then the logger name specified can be 'orgname.foo' rather than " @@ -1432,7 +1438,17 @@ msgstr "" "bibliotecas, el nombre del registrador especificado puede ser ‘orgname.foo’ " "en lugar de sólo ‘foo’." -#: ../Doc/howto/logging.rst:834 +#: ../Doc/howto/logging.rst:835 +msgid "" +"It is strongly advised that you *do not log to the root logger* in your " +"library. Instead, use a logger with a unique and easily identifiable name, " +"such as the ``__name__`` for your library's top-level package or module. " +"Logging to the root logger will make it difficult or impossible for the " +"application developer to configure the logging verbosity or handlers of your " +"library as they wish." +msgstr "" + +#: ../Doc/howto/logging.rst:842 msgid "" "It is strongly advised that you *do not add any handlers other than* :class:" "`~logging.NullHandler` *to your library's loggers*. This is because the " @@ -1451,11 +1467,11 @@ msgstr "" "interferir en su capacidad de realizar pruebas unitarias y entregar " "registros que se ajusten a sus necesidades." -#: ../Doc/howto/logging.rst:845 +#: ../Doc/howto/logging.rst:853 msgid "Logging Levels" msgstr "Niveles de registro" -#: ../Doc/howto/logging.rst:847 +#: ../Doc/howto/logging.rst:855 msgid "" "The numeric values of logging levels are given in the following table. These " "are primarily of interest if you want to define your own levels, and need " @@ -1469,39 +1485,39 @@ msgstr "" "niveles predefinidos. Si se define un nivel con el mismo valor numérico, " "éste sobrescribe el valor predefinido; el nombre predefinido se pierde." -#: ../Doc/howto/logging.rst:854 +#: ../Doc/howto/logging.rst:862 msgid "Numeric value" msgstr "Valor numérico" -#: ../Doc/howto/logging.rst:856 +#: ../Doc/howto/logging.rst:864 msgid "50" msgstr "50" -#: ../Doc/howto/logging.rst:858 +#: ../Doc/howto/logging.rst:866 msgid "40" msgstr "40" -#: ../Doc/howto/logging.rst:860 +#: ../Doc/howto/logging.rst:868 msgid "30" msgstr "30" -#: ../Doc/howto/logging.rst:862 +#: ../Doc/howto/logging.rst:870 msgid "20" msgstr "20" -#: ../Doc/howto/logging.rst:864 +#: ../Doc/howto/logging.rst:872 msgid "10" msgstr "10" -#: ../Doc/howto/logging.rst:866 +#: ../Doc/howto/logging.rst:874 msgid "``NOTSET``" msgstr "``NOTSET``" -#: ../Doc/howto/logging.rst:866 +#: ../Doc/howto/logging.rst:874 msgid "0" msgstr "0" -#: ../Doc/howto/logging.rst:869 +#: ../Doc/howto/logging.rst:877 msgid "" "Levels can also be associated with loggers, being set either by the " "developer or through loading a saved logging configuration. When a logging " @@ -1518,7 +1534,7 @@ msgstr "" "método, no se genera ningún mensaje de registro. Este es el mecanismo básico " "que controla la verbosidad de la salida del registro." -#: ../Doc/howto/logging.rst:876 +#: ../Doc/howto/logging.rst:884 msgid "" "Logging messages are encoded as instances of the :class:`~logging.LogRecord` " "class. When a logger decides to actually log an event, a :class:`~logging." @@ -1529,7 +1545,7 @@ msgstr "" "evento, se crea una instancia :class:`~logging.LogRecord` a partir del " "mensaje de registro." -#: ../Doc/howto/logging.rst:880 +#: ../Doc/howto/logging.rst:888 msgid "" "Logging messages are subjected to a dispatch mechanism through the use of :" "dfn:`handlers`, which are instances of subclasses of the :class:`Handler` " @@ -1561,7 +1577,7 @@ msgstr "" "establezca en un valor falso, en cuyo caso el paso a los *handlers* " "ancestrales se detiene)." -#: ../Doc/howto/logging.rst:894 +#: ../Doc/howto/logging.rst:902 msgid "" "Just as for loggers, handlers can have levels associated with them. A " "handler's level acts as a filter in the same way as a logger's level does. " @@ -1577,11 +1593,11 @@ msgstr "" "a su destino. La mayoría de las subclases definidas por el usuario de :class:" "`Handler` necesitarán anular este :meth:`~Handler.emit`." -#: ../Doc/howto/logging.rst:903 +#: ../Doc/howto/logging.rst:911 msgid "Custom Levels" msgstr "Niveles personalizados" -#: ../Doc/howto/logging.rst:905 +#: ../Doc/howto/logging.rst:913 msgid "" "Defining your own levels is possible, but should not be necessary, as the " "existing levels have been chosen on the basis of practical experience. " @@ -1605,11 +1621,11 @@ msgstr "" "usuario, porque un valor numérico dado podría significar cosas diferentes " "para diferentes bibliotecas." -#: ../Doc/howto/logging.rst:918 +#: ../Doc/howto/logging.rst:926 msgid "Useful Handlers" msgstr "Gestores útiles" -#: ../Doc/howto/logging.rst:920 +#: ../Doc/howto/logging.rst:928 msgid "" "In addition to the base :class:`Handler` class, many useful subclasses are " "provided:" @@ -1617,7 +1633,7 @@ msgstr "" "Además de la base :class:`Handler` class, se proporcionan muchas subclases " "útiles:" -#: ../Doc/howto/logging.rst:923 +#: ../Doc/howto/logging.rst:931 msgid "" ":class:`StreamHandler` instances send messages to streams (file-like " "objects)." @@ -1625,12 +1641,12 @@ msgstr "" ":class:`StreamHandler` instancias envían mensajes a los *streams* (objetos " "como de tipo archivo)." -#: ../Doc/howto/logging.rst:926 +#: ../Doc/howto/logging.rst:934 msgid ":class:`FileHandler` instances send messages to disk files." msgstr "" ":class:`FileHandler` instancias enviar mensajes a los archivos del disco." -#: ../Doc/howto/logging.rst:928 +#: ../Doc/howto/logging.rst:936 msgid "" ":class:`~handlers.BaseRotatingHandler` is the base class for handlers that " "rotate log files at a certain point. It is not meant to be instantiated " @@ -1643,7 +1659,7 @@ msgstr "" "`~handlers.RotatingFileHandler` o :class:`~handlers." "TimedRotatingFileHandler`." -#: ../Doc/howto/logging.rst:933 +#: ../Doc/howto/logging.rst:941 msgid "" ":class:`~handlers.RotatingFileHandler` instances send messages to disk " "files, with support for maximum log file sizes and log file rotation." @@ -1652,7 +1668,7 @@ msgstr "" "los archivos de disco, con soporte para el tamaño máximo de los archivos de " "registro y la rotación de los mismos." -#: ../Doc/howto/logging.rst:936 +#: ../Doc/howto/logging.rst:944 msgid "" ":class:`~handlers.TimedRotatingFileHandler` instances send messages to disk " "files, rotating the log file at certain timed intervals." @@ -1661,7 +1677,7 @@ msgstr "" "mensajes a los archivos de disco, rotando el archivo de registro a ciertos " "intervalos de tiempo." -#: ../Doc/howto/logging.rst:939 +#: ../Doc/howto/logging.rst:947 msgid "" ":class:`~handlers.SocketHandler` instances send messages to TCP/IP sockets. " "Since 3.4, Unix domain sockets are also supported." @@ -1670,7 +1686,7 @@ msgstr "" "sockets TCP/IP. Desde la versión 3.4, los sockets de dominio Unix también " "están soportados." -#: ../Doc/howto/logging.rst:942 +#: ../Doc/howto/logging.rst:950 msgid "" ":class:`~handlers.DatagramHandler` instances send messages to UDP sockets. " "Since 3.4, Unix domain sockets are also supported." @@ -1679,7 +1695,7 @@ msgstr "" "sockets UDP. Desde la versión 3.4, los sockets de dominio Unix también están " "soportados." -#: ../Doc/howto/logging.rst:945 +#: ../Doc/howto/logging.rst:953 msgid "" ":class:`~handlers.SMTPHandler` instances send messages to a designated email " "address." @@ -1687,7 +1703,7 @@ msgstr "" "Las instancias de :class:`~handlers.SMTPHandler` envían mensajes a una " "dirección de correo electrónico designada." -#: ../Doc/howto/logging.rst:948 +#: ../Doc/howto/logging.rst:956 msgid "" ":class:`~handlers.SysLogHandler` instances send messages to a Unix syslog " "daemon, possibly on a remote machine." @@ -1695,7 +1711,7 @@ msgstr "" "Las instancias de :class:`~handlers.SysLogHandler` envían mensajes a un " "demonio del syslog de Unix, posiblemente en una máquina remota." -#: ../Doc/howto/logging.rst:951 +#: ../Doc/howto/logging.rst:959 msgid "" ":class:`~handlers.NTEventLogHandler` instances send messages to a Windows " "NT/2000/XP event log." @@ -1703,7 +1719,7 @@ msgstr "" "Las instancias de :class:`~handlers.NTEventLogHandler` envían mensajes a un " "registro de eventos de Windows NT/2000/XP." -#: ../Doc/howto/logging.rst:954 +#: ../Doc/howto/logging.rst:962 msgid "" ":class:`~handlers.MemoryHandler` instances send messages to a buffer in " "memory, which is flushed whenever specific criteria are met." @@ -1711,7 +1727,7 @@ msgstr "" "Las instancias de :class:`~handlers.MemoryHandler` envían mensajes a un " "buffer en la memoria, que es limpiado cuando se cumplen ciertos criterios." -#: ../Doc/howto/logging.rst:957 +#: ../Doc/howto/logging.rst:965 msgid "" ":class:`~handlers.HTTPHandler` instances send messages to an HTTP server " "using either ``GET`` or ``POST`` semantics." @@ -1719,7 +1735,7 @@ msgstr "" "Las instancias de :class:`~handlers.HTTPHandler` envían mensajes a un " "servidor HTTP usando la semántica de \"GET\" o \"POST\"." -#: ../Doc/howto/logging.rst:960 +#: ../Doc/howto/logging.rst:968 msgid "" ":class:`~handlers.WatchedFileHandler` instances watch the file they are " "logging to. If the file changes, it is closed and reopened using the file " @@ -1731,7 +1747,7 @@ msgstr "" "usando el nombre del archivo. Este manejador sólo es útil en sistemas tipo " "Unix; Windows no soporta el mecanismo subyacente utilizado." -#: ../Doc/howto/logging.rst:965 +#: ../Doc/howto/logging.rst:973 msgid "" ":class:`~handlers.QueueHandler` instances send messages to a queue, such as " "those implemented in the :mod:`queue` or :mod:`multiprocessing` modules." @@ -1740,7 +1756,7 @@ msgstr "" "cola, como los implementados en los módulos :mod:`queue` or :mod:" "`multiprocessing`." -#: ../Doc/howto/logging.rst:968 +#: ../Doc/howto/logging.rst:976 msgid "" ":class:`NullHandler` instances do nothing with error messages. They are used " "by library developers who want to use logging, but want to avoid the 'No " @@ -1755,15 +1771,15 @@ msgstr "" "la biblioteca no ha configurado el registro. Vea :ref:`library-config` para " "más información." -#: ../Doc/howto/logging.rst:974 +#: ../Doc/howto/logging.rst:982 msgid "The :class:`NullHandler` class." msgstr "La clase :class:`NullHandler`." -#: ../Doc/howto/logging.rst:977 +#: ../Doc/howto/logging.rst:985 msgid "The :class:`~handlers.QueueHandler` class." msgstr "La :class:`~handlers.QueueHandler` (La clase de gestores de Cola)." -#: ../Doc/howto/logging.rst:980 +#: ../Doc/howto/logging.rst:988 msgid "" "The :class:`NullHandler`, :class:`StreamHandler` and :class:`FileHandler` " "classes are defined in the core logging package. The other handlers are " @@ -1776,7 +1792,7 @@ msgstr "" "(También hay otro submódulo, :mod:`logging.config`, para la funcionalidad de " "configuración)" -#: ../Doc/howto/logging.rst:985 +#: ../Doc/howto/logging.rst:993 #, python-format msgid "" "Logged messages are formatted for presentation through instances of the :" @@ -1787,7 +1803,7 @@ msgstr "" "instancias de la clase :class:`Formatter`. Se inicializan con una cadena de " "formato adecuada para su uso con el operador % y un diccionario." -#: ../Doc/howto/logging.rst:989 +#: ../Doc/howto/logging.rst:997 msgid "" "For formatting multiple messages in a batch, instances of :class:`~handlers." "BufferingFormatter` can be used. In addition to the format string (which is " @@ -1799,7 +1815,7 @@ msgstr "" "(que se aplica a cada mensaje del lote), hay una provisión para cadenas de " "formato de cabecera y de tráiler." -#: ../Doc/howto/logging.rst:994 +#: ../Doc/howto/logging.rst:1002 msgid "" "When filtering based on logger level and/or handler level is not enough, " "instances of :class:`Filter` can be added to both :class:`Logger` and :class:" @@ -1816,7 +1832,7 @@ msgstr "" "todos sus filtros para obtener permiso. Si algún filtro retorna un valor " "falso, el mensaje no se procesa más." -#: ../Doc/howto/logging.rst:1001 +#: ../Doc/howto/logging.rst:1009 msgid "" "The basic :class:`Filter` functionality allows filtering by specific logger " "name. If this feature is used, messages sent to the named logger and its " @@ -1827,11 +1843,11 @@ msgstr "" "registrador nombrado y a sus hijos se permiten a través del filtro, y todos " "los demás se eliminan." -#: ../Doc/howto/logging.rst:1009 +#: ../Doc/howto/logging.rst:1017 msgid "Exceptions raised during logging" msgstr "Excepciones lanzadas durante logging" -#: ../Doc/howto/logging.rst:1011 +#: ../Doc/howto/logging.rst:1019 msgid "" "The logging package is designed to swallow exceptions which occur while " "logging in production. This is so that errors which occur while handling " @@ -1844,7 +1860,7 @@ msgstr "" "configuración del registro, errores de red u otros errores similares - no " "causen que la aplicación que utiliza el registro termine prematuramente." -#: ../Doc/howto/logging.rst:1016 +#: ../Doc/howto/logging.rst:1024 msgid "" ":class:`SystemExit` and :class:`KeyboardInterrupt` exceptions are never " "swallowed. Other exceptions which occur during the :meth:`~Handler.emit` " @@ -1856,7 +1872,7 @@ msgstr "" "excepciones que ocurren durante el método :meth:`~Handler.emit` de una " "subclase :class:`Handler` se pasan a su método :meth:`~Handler.handleError` ." -#: ../Doc/howto/logging.rst:1021 +#: ../Doc/howto/logging.rst:1029 msgid "" "The default implementation of :meth:`~Handler.handleError` in :class:" "`Handler` checks to see if a module-level variable, :data:`raiseExceptions`, " @@ -1868,7 +1884,7 @@ msgstr "" "`raiseExceptions`, está establecida. Si se establece, se imprime una traza " "en :data:`sys.stderr`. Si no se establece, se traga la excepción." -#: ../Doc/howto/logging.rst:1026 +#: ../Doc/howto/logging.rst:1034 msgid "" "The default value of :data:`raiseExceptions` is ``True``. This is because " "during development, you typically want to be notified of any exceptions that " @@ -1880,11 +1896,11 @@ msgstr "" "notificado de cualquier excepción que ocurra. Se aconseja que establezca :" "data:`raiseExceptions` a ``False`` para el uso en producción." -#: ../Doc/howto/logging.rst:1036 +#: ../Doc/howto/logging.rst:1044 msgid "Using arbitrary objects as messages" msgstr "Usando objetos arbitrarios como mensajes" -#: ../Doc/howto/logging.rst:1038 +#: ../Doc/howto/logging.rst:1046 msgid "" "In the preceding sections and examples, it has been assumed that the message " "passed when logging the event is a string. However, this is not the only " @@ -1904,11 +1920,11 @@ msgstr "" "método :class:`~handlers.SocketHandler` emite un evento al *pickling* y " "enviarlo por el cable." -#: ../Doc/howto/logging.rst:1049 +#: ../Doc/howto/logging.rst:1057 msgid "Optimization" msgstr "Optimización" -#: ../Doc/howto/logging.rst:1051 +#: ../Doc/howto/logging.rst:1059 msgid "" "Formatting of message arguments is deferred until it cannot be avoided. " "However, computing the arguments passed to the logging method can also be " @@ -1926,7 +1942,7 @@ msgstr "" "y retorna true si el evento sería creado por el *Logger* para ese nivel de " "llamada. Puedes escribir código como este::" -#: ../Doc/howto/logging.rst:1063 +#: ../Doc/howto/logging.rst:1071 msgid "" "so that if the logger's threshold is set above ``DEBUG``, the calls to :func:" "`expensive_func1` and :func:`expensive_func2` are never made." @@ -1935,7 +1951,7 @@ msgstr "" "``DEBUG``, las llamadas a :func:`expensive_func1` y :func:`expensive_func2` " "nunca se hacen." -#: ../Doc/howto/logging.rst:1066 +#: ../Doc/howto/logging.rst:1074 msgid "" "In some cases, :meth:`~Logger.isEnabledFor` can itself be more expensive " "than you'd like (e.g. for deeply nested loggers where an explicit level is " @@ -1957,7 +1973,7 @@ msgstr "" "dinámicamente mientras la aplicación se está ejecutando (lo cual no es tan " "común)." -#: ../Doc/howto/logging.rst:1075 +#: ../Doc/howto/logging.rst:1083 msgid "" "There are other optimizations which can be made for specific applications " "which need more precise control over what logging information is collected. " @@ -1969,19 +1985,19 @@ msgstr "" "recoge. Aquí hay una lista de cosas que puede hacer para evitar el " "procesamiento durante el registro que no necesita:" -#: ../Doc/howto/logging.rst:1081 +#: ../Doc/howto/logging.rst:1089 msgid "What you don't want to collect" msgstr "Lo que no quieres colectar" -#: ../Doc/howto/logging.rst:1081 +#: ../Doc/howto/logging.rst:1089 msgid "How to avoid collecting it" msgstr "Cómo evitar coleccionarlo" -#: ../Doc/howto/logging.rst:1083 +#: ../Doc/howto/logging.rst:1091 msgid "Information about where calls were made from." msgstr "Información sobre dónde se hicieron las llamadas." -#: ../Doc/howto/logging.rst:1083 +#: ../Doc/howto/logging.rst:1091 msgid "" "Set ``logging._srcfile`` to ``None``. This avoids calling :func:`sys." "_getframe`, which may help to speed up your code in environments like PyPy " @@ -1991,23 +2007,23 @@ msgstr "" "_getframe`, que puede ayudar a acelerar su código en entornos como PyPy (que " "no puede acelerar el código que usa :func:`sys._getframe`)." -#: ../Doc/howto/logging.rst:1089 +#: ../Doc/howto/logging.rst:1097 msgid "Threading information." msgstr "Información sobre código con hilos." -#: ../Doc/howto/logging.rst:1089 +#: ../Doc/howto/logging.rst:1097 msgid "Set ``logging.logThreads`` to ``False``." msgstr "Establece ``logging.logThreads`` en ``False``." -#: ../Doc/howto/logging.rst:1091 +#: ../Doc/howto/logging.rst:1099 msgid "Current process ID (:func:`os.getpid`)" msgstr "ID del proceso actual (:func:`os.getpid`)" -#: ../Doc/howto/logging.rst:1091 +#: ../Doc/howto/logging.rst:1099 msgid "Set ``logging.logProcesses`` to ``False``." msgstr "Establece ``logging.logProcesses`` en ``False``." -#: ../Doc/howto/logging.rst:1093 +#: ../Doc/howto/logging.rst:1101 msgid "" "Current process name when using ``multiprocessing`` to manage multiple " "processes." @@ -2015,11 +2031,11 @@ msgstr "" "Nombre del proceso actual cuando se usa ``multiprocessing`` para administrar " "múltiples procesos." -#: ../Doc/howto/logging.rst:1093 +#: ../Doc/howto/logging.rst:1101 msgid "Set ``logging.logMultiprocessing`` to ``False``." msgstr "Establece ``logging.logMultiprocessing`` en ``False``." -#: ../Doc/howto/logging.rst:1097 +#: ../Doc/howto/logging.rst:1105 msgid "" "Also note that the core logging module only includes the basic handlers. If " "you don't import :mod:`logging.handlers` and :mod:`logging.config`, they " @@ -2029,30 +2045,30 @@ msgstr "" "gestores básicos. Si no importas :mod:`logging.handlers` y :mod:`logging." "config`, no ocuparán ninguna memoria." -#: ../Doc/howto/logging.rst:1104 +#: ../Doc/howto/logging.rst:1112 msgid "Module :mod:`logging`" msgstr "Módulo :mod:`logging`" -#: ../Doc/howto/logging.rst:1104 +#: ../Doc/howto/logging.rst:1112 msgid "API reference for the logging module." msgstr "Referencia API para el módulo de registro." -#: ../Doc/howto/logging.rst:1107 +#: ../Doc/howto/logging.rst:1115 msgid "Module :mod:`logging.config`" msgstr "Módulo :mod:`logging.config`" -#: ../Doc/howto/logging.rst:1107 +#: ../Doc/howto/logging.rst:1115 msgid "Configuration API for the logging module." msgstr "API de configuración para el módulo de registro." -#: ../Doc/howto/logging.rst:1110 +#: ../Doc/howto/logging.rst:1118 msgid "Module :mod:`logging.handlers`" msgstr "Módulo :mod:`logging.handlers`" -#: ../Doc/howto/logging.rst:1110 +#: ../Doc/howto/logging.rst:1118 msgid "Useful handlers included with the logging module." msgstr "Gestores útiles incluidos en el módulo de registro." -#: ../Doc/howto/logging.rst:1112 +#: ../Doc/howto/logging.rst:1120 msgid ":ref:`A logging cookbook `" msgstr ":ref:`Un libro de recetas `" diff --git a/howto/regex.po b/howto/regex.po index fbd7bb30de..e9972423cf 100644 --- a/howto/regex.po +++ b/howto/regex.po @@ -10,18 +10,16 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-05 12:54+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-08-04 17:34+0200\n" +"Last-Translator: Cristián Maureira-Fredes \n" +"Language: es\n" "Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" +"Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.8.0\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Last-Translator: Cristián Maureira-Fredes \n" -"Language: es\n" -"X-Generator: Poedit 3.0\n" -"X-Poedit-SourceCharset: UTF-8\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/howto/regex.rst:5 msgid "Regular Expression HOWTO" @@ -201,16 +199,17 @@ msgstr "" "coincidir solo letras minúsculas, su RE sería ``[a-c]``." #: ../Doc/howto/regex.rst:92 +#, fuzzy msgid "" -"Metacharacters are not active inside classes. For example, ``[akm$]`` will " -"match any of the characters ``'a'``, ``'k'``, ``'m'``, or ``'$'``; ``'$'`` " -"is usually a metacharacter, but inside a character class it's stripped of " -"its special nature." +"Metacharacters (except ``\\``) are not active inside classes. For example, " +"``[akm$]`` will match any of the characters ``'a'``, ``'k'``, ``'m'``, or " +"``'$'``; ``'$'`` is usually a metacharacter, but inside a character class " +"it's stripped of its special nature." msgstr "" -"Los metacarácteres no están activos dentro de las clases. Por ejemplo, ``[akm" -"$]`` coincidirá con cualquiera de los caracteres ``'a'``, ``'k'``, ``'m'``, " -"or ``'$'``; ``'$'`` suele ser un metacarácter, pero dentro de una clase de " -"carácter se le quita su naturaleza especial." +"Los metacarácteres no están activos dentro de las clases. Por ejemplo, " +"``[akm$]`` coincidirá con cualquiera de los caracteres ``'a'``, ``'k'``, " +"``'m'``, or ``'$'``; ``'$'`` suele ser un metacarácter, pero dentro de una " +"clase de carácter se le quita su naturaleza especial." #: ../Doc/howto/regex.rst:97 msgid "" @@ -317,8 +316,8 @@ msgstr "``\\s``" #: ../Doc/howto/regex.rst:137 msgid "" -"Matches any whitespace character; this is equivalent to the class ``[ \\t\\n" -"\\r\\f\\v]``." +"Matches any whitespace character; this is equivalent to the class " +"``[ \\t\\n\\r\\f\\v]``." msgstr "" "Coincide con cualquier carácter de espacio en blanco; esto es equivalente a " "la clase ``[ \\t\\n\\r\\f\\v]``." @@ -578,15 +577,16 @@ msgstr "" "Preste especial atención a la diferencia entre ``*`` and ``+``; coincide con " "*cero* o más veces, por lo que cualquier cosa que se repita puede no estar " "presente en absoluto, mientras que ``+`` requiere al menos *one* aparición. " -"Para usar un ejemplo similar, ``'cat'`` (1 ``'a'``), ``'caaat'`` (3 ``'a'``" -"\\ s), pero no coincidirá con ``'ct'``." +"Para usar un ejemplo similar, ``'cat'`` (1 ``'a'``), ``'caaat'`` (3 " +"``'a'``\\ s), pero no coincidirá con ``'ct'``." #: ../Doc/howto/regex.rst:233 +#, fuzzy msgid "" -"There are two more repeating qualifiers. The question mark character, ``?" -"``, matches either once or zero times; you can think of it as marking " -"something as being optional. For example, ``home-?brew`` matches either " -"``'homebrew'`` or ``'home-brew'``." +"There are two more repeating operators or quantifiers. The question mark " +"character, ``?``, matches either once or zero times; you can think of it as " +"marking something as being optional. For example, ``home-?brew`` matches " +"either ``'homebrew'`` or ``'home-brew'``." msgstr "" "Hay dos calificadores más que se repiten. El carácter de signo de " "interrogación, ``?``, Coincide una vez o cero veces; puede pensar en ello " @@ -594,12 +594,13 @@ msgstr "" "``'homebrew'`` o ``'home-brew'``." #: ../Doc/howto/regex.rst:238 +#, fuzzy msgid "" -"The most complicated repeated qualifier is ``{m,n}``, where *m* and *n* are " -"decimal integers. This qualifier means there must be at least *m* " -"repetitions, and at most *n*. For example, ``a/{1,3}b`` will match ``'a/" -"b'``, ``'a//b'``, and ``'a///b'``. It won't match ``'ab'``, which has no " -"slashes, or ``'a////b'``, which has four." +"The most complicated quantifier is ``{m,n}``, where *m* and *n* are decimal " +"integers. This quantifier means there must be at least *m* repetitions, and " +"at most *n*. For example, ``a/{1,3}b`` will match ``'a/b'``, ``'a//b'``, " +"and ``'a///b'``. It won't match ``'ab'``, which has no slashes, or ``'a////" +"b'``, which has four." msgstr "" "El calificador repetido más complicado es ``{m,n}``, donde *m* y *n* son " "enteros decimales. Este calificador significa que debe haber al menos *m* " @@ -618,8 +619,9 @@ msgstr "" "mientras que omitir *n* da como resultado un límite superior de infinito." #: ../Doc/howto/regex.rst:248 +#, fuzzy msgid "" -"Readers of a reductionist bent may notice that the three other qualifiers " +"Readers of a reductionist bent may notice that the three other quantifiers " "can all be expressed using this notation. ``{0,}`` is the same as ``*``, " "``{1,}`` is equivalent to ``+``, and ``{0,1}`` is the same as ``?``. It's " "better to use ``*``, ``+``, or ``?`` when you can, simply because they're " @@ -956,8 +958,8 @@ msgid "" "print the result of :meth:`!match` to make this clear. ::" msgstr "" "Ahora, puede intentar hacer coincidir varias cadenas con la RE ``[a-z]+``. " -"Una cadena de caracteres vacía no debería coincidir en absoluto, ya que ``" -"+`` significa que 'una o más repeticiones'. :meth:`~re.Pattern.match` " +"Una cadena de caracteres vacía no debería coincidir en absoluto, ya que " +"``+`` significa que 'una o más repeticiones'. :meth:`~re.Pattern.match` " "debería retornar ``None`` en este caso, lo que hará que el intérprete no " "imprima ningún resultado. Puede imprimir explícitamente el resultado de :" "meth:`!match` para aclarar esto. ::" @@ -1239,8 +1241,8 @@ msgid "" "z]`` or ``[A-Z]`` are used in combination with the :const:`IGNORECASE` flag, " "they will match the 52 ASCII letters and 4 additional non-ASCII letters: " "'İ' (U+0130, Latin capital letter I with dot above), 'ı' (U+0131, Latin " -"small letter dotless i), 'ſ' (U+017F, Latin small letter long s) and 'K' (U" -"+212A, Kelvin sign). ``Spam`` will match ``'Spam'``, ``'spam'``, " +"small letter dotless i), 'ſ' (U+017F, Latin small letter long s) and " +"'K' (U+212A, Kelvin sign). ``Spam`` will match ``'Spam'``, ``'spam'``, " "``'spAM'``, or ``'ſpam'`` (the latter is matched only in Unicode mode). This " "lowercasing doesn't take the current locale into account; it will if you " "also set the :const:`LOCALE` flag." @@ -1291,8 +1293,8 @@ msgstr "" "Las configuraciones regionales son una característica de la biblioteca C " "destinada a ayudar a escribir programas que tengan en cuenta las diferencias " "de idioma. Por ejemplo, si está procesando texto en francés codificado, " -"querrá poder escribir ``\\w+`` para que coincida con las palabras, pero ``" -"\\w`` solo coincide con la clase de caracteres ``[A-Za-z]`` en patrones de " +"querrá poder escribir ``\\w+`` para que coincida con las palabras, pero " +"``\\w`` solo coincide con la clase de caracteres ``[A-Za-z]`` en patrones de " "bytes; no coincidirá con los bytes correspondientes a ``é`` or ``ç``. Si su " "sistema está configurado correctamente y se selecciona una configuración " "regional francesa, ciertas funciones de C le dirán al programa que el byte " @@ -1575,8 +1577,8 @@ msgstr "" msgid "" "There are two subtleties you should remember when using this special " "sequence. First, this is the worst collision between Python's string " -"literals and regular expression sequences. In Python's string literals, ``" -"\\b`` is the backspace character, ASCII value 8. If you're not using raw " +"literals and regular expression sequences. In Python's string literals, " +"``\\b`` is the backspace character, ASCII value 8. If you're not using raw " "strings, then Python will convert the ``\\b`` to a backspace, and your RE " "won't match as you expect it to. The following example looks the same as our " "previous RE, but omits the ``'r'`` in front of the RE string. ::" @@ -1593,8 +1595,8 @@ msgstr "" #: ../Doc/howto/regex.rst:774 msgid "" -"Second, inside a character class, where there's no use for this assertion, ``" -"\\b`` represents the backspace character, for compatibility with Python's " +"Second, inside a character class, where there's no use for this assertion, " +"``\\b`` represents the backspace character, for compatibility with Python's " "string literals." msgstr "" "En segundo lugar, dentro de una clase de caracteres, donde no hay uso para " @@ -1643,12 +1645,13 @@ msgstr "" "del encabezado y otro grupo que coincida con el valor del encabezado." #: ../Doc/howto/regex.rst:803 +#, fuzzy msgid "" "Groups are marked by the ``'('``, ``')'`` metacharacters. ``'('`` and " "``')'`` have much the same meaning as they do in mathematical expressions; " "they group together the expressions contained inside them, and you can " -"repeat the contents of a group with a repeating qualifier, such as ``*``, ``" -"+``, ``?``, or ``{m,n}``. For example, ``(ab)*`` will match zero or more " +"repeat the contents of a group with a quantifier, such as ``*``, ``+``, ``?" +"``, or ``{m,n}``. For example, ``(ab)*`` will match zero or more " "repetitions of ``ab``. ::" msgstr "" "Los grupos están marcados por los ``'('``, ``')'`` metacarácteres. ``'('`` y " @@ -1767,8 +1770,8 @@ msgstr "" msgid "" "Perl 5 is well known for its powerful additions to standard regular " "expressions. For these new features the Perl developers couldn't choose new " -"single-keystroke metacharacters or new special sequences beginning with ``" -"\\`` without making Perl's regular expressions confusingly different from " +"single-keystroke metacharacters or new special sequences beginning with " +"``\\`` without making Perl's regular expressions confusingly different from " "standard REs. If they chose ``&`` as a new metacharacter, for example, old " "expressions would be assuming that ``&`` was a regular character and " "wouldn't have escaped it by writing ``\\&`` or ``[&]``." @@ -1893,8 +1896,9 @@ msgstr "" "Match.groupdict`::" #: ../Doc/howto/regex.rst:952 +#, fuzzy msgid "" -"Named groups are handy because they let you use easily-remembered names, " +"Named groups are handy because they let you use easily remembered names, " "instead of having to remember numbers. Here's an example RE from the :mod:" "`imaplib` module::" msgstr "" @@ -1917,8 +1921,8 @@ msgid "" "name instead of the number. This is another Python extension: ``(?P=name)`` " "indicates that the contents of the group called *name* should again be " "matched at the current point. The regular expression for finding doubled " -"words, ``\\b(\\w+)\\s+\\1\\b`` can also be written as ``\\b(?P\\w+)\\s" -"+(?P=word)\\b``::" +"words, ``\\b(\\w+)\\s+\\1\\b`` can also be written as ``\\b(?" +"P\\w+)\\s+(?P=word)\\b``::" msgstr "" "La sintaxis de las referencias inversas en una expresión como ``(...)\\1`` " "se refiere al número del grupo. Naturalmente, existe una variante que usa el " @@ -2085,11 +2089,11 @@ msgstr "Una mirada anticipada negativa atraviesa toda esta confusión:" #: ../Doc/howto/regex.rst:1042 msgid "" "``.*[.](?!bat$)[^.]*$`` The negative lookahead means: if the expression " -"``bat`` doesn't match at this point, try the rest of the pattern; if ``bat" -"$`` does match, the whole pattern will fail. The trailing ``$`` is required " -"to ensure that something like ``sample.batch``, where the extension only " -"starts with ``bat``, will be allowed. The ``[^.]*`` makes sure that the " -"pattern works when there are multiple dots in the filename." +"``bat`` doesn't match at this point, try the rest of the pattern; if " +"``bat$`` does match, the whole pattern will fail. The trailing ``$`` is " +"required to ensure that something like ``sample.batch``, where the extension " +"only starts with ``bat``, will be allowed. The ``[^.]*`` makes sure that " +"the pattern works when there are multiple dots in the filename." msgstr "" "``.*[.](?!bat$)[^.]*$`` La búsqueda anticipada negativa significa: si la " "expresión ``bat`` no coincide en este punto, pruebe el resto del patrón; si " @@ -2295,9 +2299,9 @@ msgstr "" msgid "" "If *replacement* is a string, any backslash escapes in it are processed. " "That is, ``\\n`` is converted to a single newline character, ``\\r`` is " -"converted to a carriage return, and so forth. Unknown escapes such as ``" -"\\&`` are left alone. Backreferences, such as ``\\6``, are replaced with the " -"substring matched by the corresponding group in the RE. This lets you " +"converted to a carriage return, and so forth. Unknown escapes such as " +"``\\&`` are left alone. Backreferences, such as ``\\6``, are replaced with " +"the substring matched by the corresponding group in the RE. This lets you " "incorporate portions of the original text in the resulting replacement " "string." msgstr "" @@ -2330,10 +2334,10 @@ msgid "" msgstr "" "También hay una sintaxis para hacer referencia a grupos con nombre según lo " "definido por la sintaxis ``(?P…)``syntax. ``\\g`` usará la " -"subcadena de caracteres que coincide con el grupo llamado ``name``, y ``" -"\\g`` usa el número de grupo correspondiente. ``\\g<2>`` es " -"equivalente a ``\\2``, pero no es ambiguo en una cadena de reemplazo como ``" -"\\g<2>0``. (``\\20`` se interpretaría como una referencia al grupo 20, no " +"subcadena de caracteres que coincide con el grupo llamado ``name``, y " +"``\\g`` usa el número de grupo correspondiente. ``\\g<2>`` es " +"equivalente a ``\\2``, pero no es ambiguo en una cadena de reemplazo como " +"``\\g<2>0``. (``\\20`` se interpretaría como una referencia al grupo 20, no " "como una referencia al grupo 2 seguido del carácter literal ``'0'``.) Las " "siguientes sustituciones son todas equivalentes, pero use las tres " "variaciones de la cadena de reemplazo. ::" @@ -2374,8 +2378,8 @@ msgstr "" "como primer argumento. El patrón puede proporcionarse como un objeto o como " "una cuerda; Si necesita especificar marcas de expresión regular, debe usar " "un objeto de patrón como primer parámetro o usar modificadores incrustados " -"en la cadena de patrón, por ejemplo ``sub(\"(?i)b+\", \"x\", \"bbbb BBBB" -"\")`` retorna ``'x x'``." +"en la cadena de patrón, por ejemplo ``sub(\"(?i)b+\", \"x\", \"bbbb " +"BBBB\")`` retorna ``'x x'``." #: ../Doc/howto/regex.rst:1232 msgid "Common Problems" @@ -2558,8 +2562,9 @@ msgstr "" "que queremos." #: ../Doc/howto/regex.rst:1329 +#, fuzzy msgid "" -"In this case, the solution is to use the non-greedy qualifiers ``*?``, ``+?" +"In this case, the solution is to use the non-greedy quantifiers ``*?``, ``+?" "``, ``??``, or ``{m,n}?``, which match as *little* text as possible. In the " "above example, the ``'>'`` is tried immediately after the first ``'<'`` " "matches, and when it fails, the engine advances a character at a time, " diff --git a/howto/sockets.po b/howto/sockets.po index 521c7a9e0f..e2355c45af 100644 --- a/howto/sockets.po +++ b/howto/sockets.po @@ -10,16 +10,16 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-08-04 20:37+0200\n" "Last-Translator: Cristián Maureira-Fredes \n" -"Language-Team: python-doc-es\n" "Language: es\n" +"Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" -"Generated-By: Babel 2.9.1\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/howto/sockets.rst:5 msgid "Socket Programming HOWTO" @@ -390,8 +390,8 @@ msgstr "" "mensajería - en Python envías cadenas y usas ``len()`` para determinar su " "longitud (incluso si tiene caracteres ``\\0`` incrustados). Es " "principalmente el código receptor el que se vuelve más complejo. (Y en C no " -"es mucho peor, excepto que no puedes usar ``strlen`` si el mensaje tiene ``" -"\\0`` incrustados)." +"es mucho peor, excepto que no puedes usar ``strlen`` si el mensaje tiene " +"``\\0`` incrustados)." #: ../Doc/howto/sockets.rst:223 msgid "" @@ -464,13 +464,22 @@ msgstr "Datos binarios" msgid "" "It is perfectly possible to send binary data over a socket. The major " "problem is that not all machines use the same formats for binary data. For " -"example, a Motorola chip will represent a 16 bit integer with the value 1 as " -"the two hex bytes 00 01. Intel and DEC, however, are byte-reversed - that " -"same 1 is 01 00. Socket libraries have calls for converting 16 and 32 bit " -"integers - ``ntohl, htonl, ntohs, htons`` where \"n\" means *network* and \"h" -"\" means *host*, \"s\" means *short* and \"l\" means *long*. Where network " -"order is host order, these do nothing, but where the machine is byte-" -"reversed, these swap the bytes around appropriately." +"example, `network byte order `_ is big-endian, with the most significant byte " +"first, so a 16 bit integer with the value ``1`` would be the two hex bytes " +"``00 01``. However, most common processors (x86/AMD64, ARM, RISC-V), are " +"little-endian, with the least significant byte first - that same ``1`` would " +"be ``01 00``." +msgstr "" + +#: ../Doc/howto/sockets.rst:262 +#, fuzzy +msgid "" +"Socket libraries have calls for converting 16 and 32 bit integers - ``ntohl, " +"htonl, ntohs, htons`` where \"n\" means *network* and \"h\" means *host*, " +"\"s\" means *short* and \"l\" means *long*. Where network order is host " +"order, these do nothing, but where the machine is byte-reversed, these swap " +"the bytes around appropriately." msgstr "" "Es perfectamente posible mandar datos binarios en un socket. El mayor " "problema es que no todas las máquinas usan el mismo formato para datos " @@ -484,13 +493,15 @@ msgstr "" "pero cuando la máquina es de \"bytes invertidos\", estas cambian los bytes " "apropiadamente." -#: ../Doc/howto/sockets.rst:264 +#: ../Doc/howto/sockets.rst:268 +#, fuzzy msgid "" -"In these days of 32 bit machines, the ascii representation of binary data is " +"In these days of 64-bit machines, the ASCII representation of binary data is " "frequently smaller than the binary representation. That's because a " -"surprising amount of the time, all those longs have the value 0, or maybe 1. " -"The string \"0\" would be two bytes, while binary is four. Of course, this " -"doesn't fit well with fixed-length messages. Decisions, decisions." +"surprising amount of the time, most integers have the value 0, or maybe 1. " +"The string ``\"0\"`` would be two bytes, while a full 64-bit integer would " +"be 8. Of course, this doesn't fit well with fixed-length messages. " +"Decisions, decisions." msgstr "" "En estos días de máquinas de 32 bit, la representación ascii de los datos " "binarios es con frecuencia más pequeña que la representación binaria. Esto " @@ -499,11 +510,11 @@ msgstr "" "cuatro. Por supuesto, esto no funciona bien con los mensajes de longitud " "fija. Decisiones, decisiones." -#: ../Doc/howto/sockets.rst:272 +#: ../Doc/howto/sockets.rst:277 msgid "Disconnecting" msgstr "Desconectando" -#: ../Doc/howto/sockets.rst:274 +#: ../Doc/howto/sockets.rst:279 msgid "" "Strictly speaking, you're supposed to use ``shutdown`` on a socket before " "you ``close`` it. The ``shutdown`` is an advisory to the socket at the " @@ -524,7 +535,7 @@ msgstr "" "la mayoría de las situaciones usar ``shutdown`` de manera explícita no es " "necesario." -#: ../Doc/howto/sockets.rst:282 +#: ../Doc/howto/sockets.rst:287 msgid "" "One way to use ``shutdown`` effectively is in an HTTP-like exchange. The " "client sends a request and then does a ``shutdown(1)``. This tells the " @@ -541,7 +552,7 @@ msgstr "" "servidor envía una respuesta. Si el ``send`` termina satisfactoriamente " "entonces, en efecto, el cliente todavía estaba recibiendo." -#: ../Doc/howto/sockets.rst:289 +#: ../Doc/howto/sockets.rst:294 msgid "" "Python takes the automatic shutdown a step further, and says that when a " "socket is garbage collected, it will automatically do a ``close`` if it's " @@ -557,11 +568,11 @@ msgstr "" "lado puede colgarse indefinidamente, pensando que solo estas siendo lento. " "*Por favor* cierra los sockets cuando termines." -#: ../Doc/howto/sockets.rst:297 +#: ../Doc/howto/sockets.rst:302 msgid "When Sockets Die" msgstr "Cuando los sockets mueren" -#: ../Doc/howto/sockets.rst:299 +#: ../Doc/howto/sockets.rst:304 msgid "" "Probably the worst thing about using blocking sockets is what happens when " "the other side comes down hard (without doing a ``close``). Your socket is " @@ -588,12 +599,12 @@ msgstr "" "otras palabras, si te las arreglas para matar el hilo, es muy probable que " "todo el proceso termine arruinado." -#: ../Doc/howto/sockets.rst:313 +#: ../Doc/howto/sockets.rst:318 msgid "Non-blocking Sockets" msgstr "*Sockets* no bloqueantes" # Como traduzco inside-out? -#: ../Doc/howto/sockets.rst:315 +#: ../Doc/howto/sockets.rst:320 msgid "" "If you've understood the preceding, you already know most of what you need " "to know about the mechanics of using sockets. You'll still use the same " @@ -605,7 +616,7 @@ msgstr "" "mismas llamadas, de la misma manera. Es solo eso, si lo haces correctamente, " "tu aplicación estará casi correcta." -#: ../Doc/howto/sockets.rst:320 +#: ../Doc/howto/sockets.rst:325 msgid "" "In Python, you use ``socket.setblocking(False)`` to make it non-blocking. In " "C, it's more complex, (for one thing, you'll need to choose between the BSD " @@ -621,7 +632,7 @@ msgstr "" "idea. Haz esto después de crear el socket, pero antes de usarlo. (En " "realidad, si estás loco, puedes cambiar de un lado a otro)." -#: ../Doc/howto/sockets.rst:327 +#: ../Doc/howto/sockets.rst:332 msgid "" "The major mechanical difference is that ``send``, ``recv``, ``connect`` and " "``accept`` can return without having done anything. You have (of course) a " @@ -637,11 +648,11 @@ msgstr "" "aplicación crecerá grande, con errores y consumirá todo el CPU. Así que " "vamos a saltarnos las soluciones descerebradas y hacerlo correctamente." -#: ../Doc/howto/sockets.rst:334 +#: ../Doc/howto/sockets.rst:339 msgid "Use ``select``." msgstr "Usando ``select``." -#: ../Doc/howto/sockets.rst:336 +#: ../Doc/howto/sockets.rst:341 msgid "" "In C, coding ``select`` is fairly complex. In Python, it's a piece of cake, " "but it's close enough to the C version that if you understand ``select`` in " @@ -651,7 +662,7 @@ msgstr "" "lo suficientemente cercano a la versión de C que si entiendes el ``select`` " "en Python tendrás pocos problemas con él el C:" -#: ../Doc/howto/sockets.rst:347 +#: ../Doc/howto/sockets.rst:352 msgid "" "You pass ``select`` three lists: the first contains all sockets that you " "might want to try reading; the second all the sockets you might want to try " @@ -670,7 +681,7 @@ msgstr "" "dale un tiempo de espera largo (un minuto por ejemplo) a menos que tengas " "una buena razón para no hacerlo." -#: ../Doc/howto/sockets.rst:355 +#: ../Doc/howto/sockets.rst:360 msgid "" "In return, you will get three lists. They contain the sockets that are " "actually readable, writable and in error. Each of these lists is a subset " @@ -680,7 +691,7 @@ msgstr "" "realmente legibles, escribibles y con error. Cada una de estas lista es un " "subconjunto (posiblemente vacío) de la lista correspondiente que pasaste." -#: ../Doc/howto/sockets.rst:359 +#: ../Doc/howto/sockets.rst:364 msgid "" "If a socket is in the output readable list, you can be as-close-to-certain-" "as-we-ever-get-in-this-business that a ``recv`` on that socket will return " @@ -697,7 +708,7 @@ msgstr "" "razonablemente saludable va a retornar como escribible - eso solo significa " "que el espacio de salida del buffer de red está disponible)" -#: ../Doc/howto/sockets.rst:366 +#: ../Doc/howto/sockets.rst:371 msgid "" "If you have a \"server\" socket, put it in the potential_readers list. If it " "comes out in the readable list, your ``accept`` will (almost certainly) " @@ -712,7 +723,7 @@ msgstr "" "retorna en la lista de escribibles, tienes una buena oportunidad de que esté " "conectado." -#: ../Doc/howto/sockets.rst:372 +#: ../Doc/howto/sockets.rst:377 msgid "" "Actually, ``select`` can be handy even with blocking sockets. It's one way " "of determining whether you will block - the socket returns as readable when " @@ -726,7 +737,7 @@ msgstr "" "problema de determinar si el otro extremo terminó, o solo está ocupado con " "otra cosa." -#: ../Doc/howto/sockets.rst:377 +#: ../Doc/howto/sockets.rst:382 msgid "" "**Portability alert**: On Unix, ``select`` works both with the sockets and " "files. Don't try this on Windows. On Windows, ``select`` works with sockets " diff --git a/howto/sorting.po b/howto/sorting.po index 5039d08f06..930719e5f0 100644 --- a/howto/sorting.po +++ b/howto/sorting.po @@ -10,16 +10,16 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-08-04 17:32+0200\n" "Last-Translator: Cristián Maureira-Fredes \n" -"Language-Team: python-doc-es\n" "Language: es\n" +"Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" -"Generated-By: Babel 2.9.1\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/howto/sorting.rst:4 msgid "Sorting HOW TO" @@ -235,7 +235,8 @@ msgstr "" "aprovechar cualquier orden ya presente en el conjunto de datos." #: ../Doc/howto/sorting.rst:190 -msgid "The Old Way Using Decorate-Sort-Undecorate" +#, fuzzy +msgid "Decorate-Sort-Undecorate" msgstr "El método tradicional utilizando *Decorate-Sort-Undecorate*" #: ../Doc/howto/sorting.rst:192 @@ -327,87 +328,57 @@ msgstr "" "Ahora que la clasificación de Python proporciona funciones clave, esta " "técnica ya no se usa con frecuencia." -#: ../Doc/howto/sorting.rst:231 -msgid "The Old Way Using the *cmp* Parameter" -msgstr "El método tradicional utilizando el Parámetro *cmp*" +#: ../Doc/howto/sorting.rst:230 +msgid "Comparison Functions" +msgstr "" -#: ../Doc/howto/sorting.rst:233 +#: ../Doc/howto/sorting.rst:232 msgid "" -"Many constructs given in this HOWTO assume Python 2.4 or later. Before that, " -"there was no :func:`sorted` builtin and :meth:`list.sort` took no keyword " -"arguments. Instead, all of the Py2.x versions supported a *cmp* parameter to " -"handle user specified comparison functions." +"Unlike key functions that return an absolute value for sorting, a comparison " +"function computes the relative ordering for two inputs." msgstr "" -"Muchos constructores presentados en este CÓMO asumen el uso de Python 2.4 o " -"superior. Antes de eso, no había una función :func:`sorted` incorporada y el " -"método :meth:`list.sort` no tomaba los argumentos nombrados. A pesar de " -"esto, todas las versiones de Py2.x admiten el parámetro *cmp* para manejar " -"la función de comparación especificada por el usuario." -#: ../Doc/howto/sorting.rst:238 +#: ../Doc/howto/sorting.rst:235 msgid "" -"In Py3.0, the *cmp* parameter was removed entirely (as part of a larger " -"effort to simplify and unify the language, eliminating the conflict between " -"rich comparisons and the :meth:`__cmp__` magic method)." +"For example, a `balance scale `_ compares two samples giving a " +"relative ordering: lighter, equal, or heavier. Likewise, a comparison " +"function such as ``cmp(a, b)`` will return a negative value for less-than, " +"zero if the inputs are equal, or a positive value for greater-than." msgstr "" -"En Py3.0, el parámetro *cmp* se eliminó por completo (como parte de un mayor " -"esfuerzo para simplificar y unificar el lenguaje, eliminando el conflicto " -"entre las comparaciones enriquecidas y el método mágico :meth:`__cmp__`)." #: ../Doc/howto/sorting.rst:242 msgid "" -"In Py2.x, sort allowed an optional function which can be called for doing " -"the comparisons. That function should take two arguments to be compared and " -"then return a negative value for less-than, return zero if they are equal, " -"or return a positive value for greater-than. For example, we can do:" +"It is common to encounter comparison functions when translating algorithms " +"from other languages. Also, some libraries provide comparison functions as " +"part of their API. For example, :func:`locale.strcoll` is a comparison " +"function." msgstr "" -"En Py2.x, se permitió una función opcional a la que se puede llamar para " -"hacer las comparaciones. Esa función debe tomar dos argumentos para comparar " -"y luego retornar un valor negativo para menor que, retornar cero si son " -"iguales o retornar un valor positivo para mayor que. Por ejemplo, podemos " -"hacer:" - -#: ../Doc/howto/sorting.rst:254 -msgid "Or you can reverse the order of comparison with:" -msgstr "O puede revertir el orden de comparación con:" -#: ../Doc/howto/sorting.rst:263 +#: ../Doc/howto/sorting.rst:246 msgid "" -"When porting code from Python 2.x to 3.x, the situation can arise when you " -"have the user supplying a comparison function and you need to convert that " -"to a key function. The following wrapper makes that easy to do:" +"To accommodate those situations, Python provides :class:`functools." +"cmp_to_key` to wrap the comparison function to make it usable as a key " +"function::" msgstr "" -"Al migrar código de Python 2.x a 3.x, puede surgir la situación de que el " -"usuario proporciona una función de comparación y necesita convertirla en una " -"función clave. La siguiente envoltura lo hace fácil de hacer:" -#: ../Doc/howto/sorting.rst:294 -msgid "To convert to a key function, just wrap the old comparison function:" -msgstr "" -"Para convertir a una función clave, simplemente ajuste la antigua función de " -"comparación:" - -#: ../Doc/howto/sorting.rst:305 -msgid "" -"In Python 3.2, the :func:`functools.cmp_to_key` function was added to the :" -"mod:`functools` module in the standard library." -msgstr "" -"En Python 3.2, la función :func:`functools.cmp_to_key` se agregó al módulo :" -"mod:`functools` en la biblioteca estándar." - -#: ../Doc/howto/sorting.rst:309 -msgid "Odd and Ends" +#: ../Doc/howto/sorting.rst:253 +#, fuzzy +msgid "Odds and Ends" msgstr "Comentarios finales" -#: ../Doc/howto/sorting.rst:311 +#: ../Doc/howto/sorting.rst:255 +#, fuzzy msgid "" "For locale aware sorting, use :func:`locale.strxfrm` for a key function or :" -"func:`locale.strcoll` for a comparison function." +"func:`locale.strcoll` for a comparison function. This is necessary because " +"\"alphabetical\" sort orderings can vary across cultures even if the " +"underlying alphabet is the same." msgstr "" "Para una ordenación local, use :func:`locale.strxfrm` para una función clave " "o :func:`locale.strcoll` para una función de comparación." -#: ../Doc/howto/sorting.rst:314 +#: ../Doc/howto/sorting.rst:260 msgid "" "The *reverse* parameter still maintains sort stability (so that records with " "equal keys retain the original order). Interestingly, that effect can be " @@ -419,18 +390,25 @@ msgstr "" "ese efecto se puede simular sin el parámetro utilizando la función " "incorporada :func:`reversed` dos veces:" -#: ../Doc/howto/sorting.rst:328 +#: ../Doc/howto/sorting.rst:274 +#, fuzzy msgid "" -"The sort routines are guaranteed to use :meth:`__lt__` when making " -"comparisons between two objects. So, it is easy to add a standard sort order " -"to a class by defining an :meth:`__lt__` method:" +"The sort routines use ``<`` when making comparisons between two objects. So, " +"it is easy to add a standard sort order to a class by defining an :meth:" +"`__lt__` method:" msgstr "" "Se garantiza que las rutinas de clasificación utilizarán :meth:`__lt__` al " "realizar comparaciones entre dos objetos. Por lo tanto, es fácil agregar un " "orden de clasificación estándar a una clase definiendo un método :meth:" "`__lt__`:" -#: ../Doc/howto/sorting.rst:338 +#: ../Doc/howto/sorting.rst:284 +msgid "" +"However, note that ``<`` can fall back to using :meth:`__gt__` if :meth:" +"`__lt__` is not implemented (see :func:`object.__lt__`)." +msgstr "" + +#: ../Doc/howto/sorting.rst:287 msgid "" "Key functions need not depend directly on the objects being sorted. A key " "function can also access external resources. For instance, if the student " @@ -442,3 +420,65 @@ msgstr "" "ejemplo, si las calificaciones de los estudiantes se almacenan en un " "diccionario, se pueden usar para ordenar una lista separada de nombres de " "estudiantes:" + +#~ msgid "The Old Way Using the *cmp* Parameter" +#~ msgstr "El método tradicional utilizando el Parámetro *cmp*" + +#~ msgid "" +#~ "Many constructs given in this HOWTO assume Python 2.4 or later. Before " +#~ "that, there was no :func:`sorted` builtin and :meth:`list.sort` took no " +#~ "keyword arguments. Instead, all of the Py2.x versions supported a *cmp* " +#~ "parameter to handle user specified comparison functions." +#~ msgstr "" +#~ "Muchos constructores presentados en este CÓMO asumen el uso de Python 2.4 " +#~ "o superior. Antes de eso, no había una función :func:`sorted` incorporada " +#~ "y el método :meth:`list.sort` no tomaba los argumentos nombrados. A pesar " +#~ "de esto, todas las versiones de Py2.x admiten el parámetro *cmp* para " +#~ "manejar la función de comparación especificada por el usuario." + +#~ msgid "" +#~ "In Py3.0, the *cmp* parameter was removed entirely (as part of a larger " +#~ "effort to simplify and unify the language, eliminating the conflict " +#~ "between rich comparisons and the :meth:`__cmp__` magic method)." +#~ msgstr "" +#~ "En Py3.0, el parámetro *cmp* se eliminó por completo (como parte de un " +#~ "mayor esfuerzo para simplificar y unificar el lenguaje, eliminando el " +#~ "conflicto entre las comparaciones enriquecidas y el método mágico :meth:" +#~ "`__cmp__`)." + +#~ msgid "" +#~ "In Py2.x, sort allowed an optional function which can be called for doing " +#~ "the comparisons. That function should take two arguments to be compared " +#~ "and then return a negative value for less-than, return zero if they are " +#~ "equal, or return a positive value for greater-than. For example, we can " +#~ "do:" +#~ msgstr "" +#~ "En Py2.x, se permitió una función opcional a la que se puede llamar para " +#~ "hacer las comparaciones. Esa función debe tomar dos argumentos para " +#~ "comparar y luego retornar un valor negativo para menor que, retornar cero " +#~ "si son iguales o retornar un valor positivo para mayor que. Por ejemplo, " +#~ "podemos hacer:" + +#~ msgid "Or you can reverse the order of comparison with:" +#~ msgstr "O puede revertir el orden de comparación con:" + +#~ msgid "" +#~ "When porting code from Python 2.x to 3.x, the situation can arise when " +#~ "you have the user supplying a comparison function and you need to convert " +#~ "that to a key function. The following wrapper makes that easy to do:" +#~ msgstr "" +#~ "Al migrar código de Python 2.x a 3.x, puede surgir la situación de que el " +#~ "usuario proporciona una función de comparación y necesita convertirla en " +#~ "una función clave. La siguiente envoltura lo hace fácil de hacer:" + +#~ msgid "To convert to a key function, just wrap the old comparison function:" +#~ msgstr "" +#~ "Para convertir a una función clave, simplemente ajuste la antigua función " +#~ "de comparación:" + +#~ msgid "" +#~ "In Python 3.2, the :func:`functools.cmp_to_key` function was added to " +#~ "the :mod:`functools` module in the standard library." +#~ msgstr "" +#~ "En Python 3.2, la función :func:`functools.cmp_to_key` se agregó al " +#~ "módulo :mod:`functools` en la biblioteca estándar." diff --git a/howto/unicode.po b/howto/unicode.po index d89c16c394..f4fb2d3429 100644 --- a/howto/unicode.po +++ b/howto/unicode.po @@ -10,17 +10,17 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-08-04 20:36+0200\n" "Last-Translator: Cristián Maureira-Fredes \n" +"Language: es\n" "Language-Team: python-doc-es (https://mail.python.org/mailman3/lists/docs-es." "python.org)\n" -"Language: es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" -"Generated-By: Babel 2.9.1\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/howto/unicode.rst:5 msgid "Unicode HOWTO" @@ -97,9 +97,10 @@ msgstr "" "Un **carácter** es el componente mas pequeño posible de un texto. 'A', 'B', " "'C', etc., son todos diferentes caracteres. También lo son *'È'* e *'Í'*. " "Los caracteres varían dependiendo del lenguaje o del contexto en el que " -"estás hablando. Por ejemplo, Existe un carácter para el \"Número Uno Romano" -"\", 'I', que es distinto de la letra 'I' mayúscula. Estos usualmente lucen " -"igual, pero son dos caracteres diferentes que tienen distintos significados." +"estás hablando. Por ejemplo, Existe un carácter para el \"Número Uno " +"Romano\", 'I', que es distinto de la letra 'I' mayúscula. Estos usualmente " +"lucen igual, pero son dos caracteres diferentes que tienen distintos " +"significados." #: ../Doc/howto/unicode.rst:42 msgid "" @@ -246,8 +247,8 @@ msgid "" "uses the following rules:" msgstr "" "UTF-8 es una de las codificaciones mas utilizadas, y Python generalmente la " -"usa de forma predeterminada. UTF significa *\"Unicode Transformation Format" -"\"*, y el \"8\" significa que se utilizan valores de 8 bits en la " +"usa de forma predeterminada. UTF significa *\"Unicode Transformation " +"Format\"*, y el \"8\" significa que se utilizan valores de 8 bits en la " "codificación. (También hay codificaciones UTF-16 y UTF-32, pero son menos " "frecuentes que UTF-8.) UTF-8 usa las siguientes reglas:" @@ -355,9 +356,10 @@ msgstr "" "(9 minutos 36 segundos)." #: ../Doc/howto/unicode.rst:169 +#, fuzzy msgid "" "To help understand the standard, Jukka Korpela has written `an introductory " -"guide `_ to reading the Unicode " +"guide `_ to reading the Unicode " "character tables." msgstr "" "Para ayudar a entender el estándar, *Jukka Korpela* escribió `una guía " @@ -385,9 +387,9 @@ msgid "" "`_, for example." msgstr "" "Artículos de *Wikipedia* son a menudo útiles. Mire los artículos para " -"\"`codificación de caracteres `_\" y `UTF-8 `_, " -"por ejemplo." +"\"`codificación de caracteres `_\" y `UTF-8 `_, por ejemplo." #: ../Doc/howto/unicode.rst:184 msgid "Python's Unicode Support" @@ -470,8 +472,8 @@ msgstr "" "valores para este argumento son ``'strict'`` (levanta una excepción :exc:" "`UnicodeDecodeError`), ``'replace'`` (use ``U+FFFD'', ``CARACTER DE " "REEMPLAZO} ``), ``'ignore'`` (solo deje el carácter fuera del resultado " -"Unicode), o ``'backslahsreplace'`` (inserta una secuencia de escape ``" -"\\xNN``). Los siguientes ejemplos muestran las diferencias ::" +"Unicode), o ``'backslahsreplace'`` (inserta una secuencia de escape " +"``\\xNN``). Los siguientes ejemplos muestran las diferencias ::" #: ../Doc/howto/unicode.rst:248 msgid "" @@ -825,8 +827,9 @@ msgstr "" "son:" #: ../Doc/howto/unicode.rst:520 +#, fuzzy msgid "" -"`Processing Text Files in Python 3 `_, by Nick Coghlan." msgstr "" "`Processing Text Files in Python 3 `_ en EuroPython 2002. Las diapositivas son una excelente " "descripción general del diseño de las características Unicode de Python 2 " "(donde el tipo de cadena Unicode se llama ``unicode`` y los literales " @@ -1216,14 +1219,15 @@ msgid "" "error handler is used to encode the data and write it back out." msgstr "" "El manejador de errores ``surrogateescape`` decodificará los bytes que no " -"sean ASCII como puntos de código en un rango especial que va desde U+DC80 a U" -"+DCFF. Estos puntos de código volverán a convertirse en los mismos bytes " +"sean ASCII como puntos de código en un rango especial que va desde U+DC80 a " +"U+DCFF. Estos puntos de código volverán a convertirse en los mismos bytes " "cuando se use el controlador de error ``subrogateescape`` para codificar los " "datos y volver a escribirlos." #: ../Doc/howto/unicode.rst:737 +#, fuzzy msgid "" -"One section of `Mastering Python 3 Input/Output `_, a PyCon 2010 talk by David " "Beazley, discusses text processing and binary data handling." msgstr "" @@ -1247,8 +1251,9 @@ msgstr "" "localizar una aplicación. Estas diapositivas cubren solo Python 2.x." #: ../Doc/howto/unicode.rst:747 +#, fuzzy msgid "" -"`The Guts of Unicode in Python `_ is a PyCon 2013 talk by Benjamin Peterson that " "discusses the internal Unicode representation in Python 3.3." msgstr "" diff --git a/howto/urllib2.po b/howto/urllib2.po index 7c582cdd50..9eaa5afd4e 100644 --- a/howto/urllib2.po +++ b/howto/urllib2.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-03-19 11:16+0100\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-08-04 17:27+0200\n" "Last-Translator: Cristián Maureira-Fredes \n" "Language: es_AR\n" @@ -19,8 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.8.0\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/howto/urllib2.rst:5 msgid "HOWTO Fetch Internet Resources Using The urllib Package" @@ -31,18 +30,16 @@ msgid "Author" msgstr "Autor" #: ../Doc/howto/urllib2.rst:7 -msgid "`Michael Foord `_" -msgstr "`Michael Foord `_" +msgid "`Michael Foord `_" +msgstr "" #: ../Doc/howto/urllib2.rst:11 msgid "" "There is a French translation of an earlier revision of this HOWTO, " -"available at `urllib2 - Le Manuel manquant `_." +"available at `urllib2 - Le Manuel manquant `_." msgstr "" -"Hay una traducción al francés de una revisión anterior de este HOWTO, " -"disponible en `urllib2 - Le Manuel manquant `_." #: ../Doc/howto/urllib2.rst:18 msgid "Introduction" @@ -57,9 +54,10 @@ msgstr "" "recursos web con Python:" #: ../Doc/howto/urllib2.rst:25 +#, fuzzy msgid "" -"`Basic Authentication `_" +"`Basic Authentication `_" msgstr "" "`Basic Authentication `_" @@ -182,8 +180,8 @@ msgid "" "In the case of HTTP, there are two extra things that Request objects allow " "you to do: First, you can pass data to be sent to the server. Second, you " "can pass extra information (\"metadata\") *about* the data or about the " -"request itself, to the server - this information is sent as HTTP \"headers" -"\". Let's look at each of these in turn." +"request itself, to the server - this information is sent as HTTP " +"\"headers\". Let's look at each of these in turn." msgstr "" "En el caso de HTTP, hay dos cosas adicionales que los objetos Request le " "permiten hacer: Primero, puede pasar datos para enviarlos al servidor. En " @@ -375,11 +373,11 @@ msgstr "" "Cada respuesta HTTP del servidor contiene un \"código de estado\" numérico. " "A veces el código de estado indica que el servidor es incapaz de satisfacer " "la petición. Los gestores predeterminados se encargarán de algunas de estas " -"respuestas automáticamente (por ejemplo, si la respuesta es una \"redirección" -"\" que solicita que el cliente obtenga el documento desde una URL diferente, " -"urllib se encargará de eso por ti). Para aquellas respuestas que no puede " -"manejar, urlopen lanzará un :exc:`HTTPError`. Los errores típicos incluyen " -"'404' (página no encontrada), '403' (petición prohibida), y " +"respuestas automáticamente (por ejemplo, si la respuesta es una " +"\"redirección\" que solicita que el cliente obtenga el documento desde una " +"URL diferente, urllib se encargará de eso por ti). Para aquellas respuestas " +"que no puede manejar, urlopen lanzará un :exc:`HTTPError`. Los errores " +"típicos incluyen '404' (página no encontrada), '403' (petición prohibida), y " "'401' (autenticación requerida)." #: ../Doc/howto/urllib2.rst:242 @@ -501,9 +499,10 @@ msgstr "" "Actualmente es una instancia :class:`http.client.HTTPMessage`." #: ../Doc/howto/urllib2.rst:413 +#, fuzzy msgid "" "Typical headers include 'Content-length', 'Content-type', and so on. See the " -"`Quick Reference to HTTP Headers `_ for a " +"`Quick Reference to HTTP Headers `_ for a " "useful listing of HTTP headers with brief explanations of their meaning and " "use." msgstr "" @@ -519,21 +518,13 @@ msgstr "Objetos de Apertura (Openers) y Gestores (Handlers)" #: ../Doc/howto/urllib2.rst:422 msgid "" "When you fetch a URL you use an opener (an instance of the perhaps " -"confusingly-named :class:`urllib.request.OpenerDirector`). Normally we have " +"confusingly named :class:`urllib.request.OpenerDirector`). Normally we have " "been using the default opener - via ``urlopen`` - but you can create custom " "openers. Openers use handlers. All the \"heavy lifting\" is done by the " "handlers. Each handler knows how to open URLs for a particular URL scheme " "(http, ftp, etc.), or how to handle an aspect of URL opening, for example " "HTTP redirections or HTTP cookies." msgstr "" -"Cuando buscas una URL usas un objeto de apertura (una instancia del quizás " -"confusamente llamado :class:`urllib.request.OpenerDirector`). Normalmente " -"hemos estado usando el objeto de apertura por defecto - a través de " -"``urlopen`` - pero puedes crear objetos de apertura personalizados. Los " -"objetos de apertura usan gestores. Todo el \"trabajo pesado\" es hecho por " -"los gestores. Cada gestor sabe cómo abrir URLs para un esquema particular de " -"URL (http, ftp, etc.), o cómo manejar un aspecto de la apertura de URLs, por " -"ejemplo redirecciones HTTP o cookies HTTP." #: ../Doc/howto/urllib2.rst:430 msgid "" @@ -592,8 +583,9 @@ msgid "" "call ``install_opener``, except as a convenience." msgstr "" "Los objetos de apertura tienen un método ``open``, que puede ser llamado " -"directamente para consultar urls de la misma manera que la función \"urlopen" -"\": no hay necesidad de llamar ``install_opener``, excepto por conveniencia." +"directamente para consultar urls de la misma manera que la función " +"\"urlopen\": no hay necesidad de llamar ``install_opener``, excepto por " +"conveniencia." #: ../Doc/howto/urllib2.rst:455 msgid "Basic Authentication" @@ -695,19 +687,19 @@ msgstr "" #: ../Doc/howto/urllib2.rst:522 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. ``" -"\"http://example.com/\"`` *or* an \"authority\" (i.e. the hostname, " -"optionally including the port number) e.g. ``\"example.com\"`` or ``" -"\"example.com:8080\"`` (the latter example includes a port number). The " +"scheme component and the hostname and optionally the port number) e.g. " +"``\"http://example.com/\"`` *or* an \"authority\" (i.e. the hostname, " +"optionally including the port number) e.g. ``\"example.com\"`` or " +"``\"example.com:8080\"`` (the latter example includes a port number). The " "authority, if present, must NOT contain the \"userinfo\" component - for " "example ``\"joe:password@example.com\"`` is not correct." msgstr "" "``top_level_url`` es de hecho *o* una URL completa (incluyendo el componente " "del esquema 'http:' y el nombre del host y opcionalmente el número de " "puerto) p.ej. ``\"http://example.com/\"`` *o* una \"autoridad\" (esto es, el " -"nombre del host, incluyendo opcionalmente el número de puerto) por ejemplo ``" -"\"example.com\"`` o ``\"example.com:8080\"`` (este último ejemplo incluye un " -"número de puerto). La autoridad, si está presente, NO debe contener el " +"nombre del host, incluyendo opcionalmente el número de puerto) por ejemplo " +"``\"example.com\"`` o ``\"example.com:8080\"`` (este último ejemplo incluye " +"un número de puerto). La autoridad, si está presente, NO debe contener el " "componente \"userinfo\" - por ejemplo ``\"joe:password@example.com\"`` no es " "correcto." @@ -840,3 +832,33 @@ msgid "" msgstr "" "objeto de apertura de urllib para proxy SSL (método CONNECT): `ASPN Cookbook " "Recipe `_." + +#~ msgid "`Michael Foord `_" +#~ msgstr "`Michael Foord `_" + +#~ msgid "" +#~ "There is a French translation of an earlier revision of this HOWTO, " +#~ "available at `urllib2 - Le Manuel manquant `_." +#~ msgstr "" +#~ "Hay una traducción al francés de una revisión anterior de este HOWTO, " +#~ "disponible en `urllib2 - Le Manuel manquant `_." + +#~ msgid "" +#~ "When you fetch a URL you use an opener (an instance of the perhaps " +#~ "confusingly-named :class:`urllib.request.OpenerDirector`). Normally we " +#~ "have been using the default opener - via ``urlopen`` - but you can create " +#~ "custom openers. Openers use handlers. All the \"heavy lifting\" is done " +#~ "by the handlers. Each handler knows how to open URLs for a particular URL " +#~ "scheme (http, ftp, etc.), or how to handle an aspect of URL opening, for " +#~ "example HTTP redirections or HTTP cookies." +#~ msgstr "" +#~ "Cuando buscas una URL usas un objeto de apertura (una instancia del " +#~ "quizás confusamente llamado :class:`urllib.request.OpenerDirector`). " +#~ "Normalmente hemos estado usando el objeto de apertura por defecto - a " +#~ "través de ``urlopen`` - pero puedes crear objetos de apertura " +#~ "personalizados. Los objetos de apertura usan gestores. Todo el \"trabajo " +#~ "pesado\" es hecho por los gestores. Cada gestor sabe cómo abrir URLs para " +#~ "un esquema particular de URL (http, ftp, etc.), o cómo manejar un aspecto " +#~ "de la apertura de URLs, por ejemplo redirecciones HTTP o cookies HTTP." diff --git a/includes/wasm-notavail.po b/includes/wasm-notavail.po new file mode 100644 index 0000000000..1adfc5e36e --- /dev/null +++ b/includes/wasm-notavail.po @@ -0,0 +1,29 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2001-2022, Python Software Foundation +# This file is distributed under the same license as the Python en Español +# package. +# FIRST AUTHOR , 2022. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Python en Español 3.11\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-10-25 19:47+0200\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" +"Generated-By: Babel 2.10.3\n" + +msgid ":ref:`Availability `: not Emscripten, not WASI." +msgstr "" + +#: ../Doc/includes/wasm-notavail.rst:5 +msgid "" +"This module does not work or is not available on WebAssembly platforms " +"``wasm32-emscripten`` and ``wasm32-wasi``. See :ref:`wasm-availability` for " +"more information." +msgstr "" diff --git a/install/index.po b/install/index.po index 214716abaa..7e954af7f5 100644 --- a/install/index.po +++ b/install/index.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-10-30 14:37-0300\n" "Last-Translator: Cristián Maureira-Fredes \n" "Language: es\n" @@ -19,8 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/install/index.rst:7 msgid "Installing Python Modules (Legacy version)" @@ -58,7 +57,7 @@ msgstr "" "La documentación actualizada de instalación de módulos. Para el uso regular " "de Python, es casi seguro que desee ese documento en lugar de este." -#: ../Doc/distutils/_setuptools_disclaimer.rst:3 +#: ../Doc/install/cpython/Doc/distutils/_setuptools_disclaimer.rst:3 msgid "" "This document is being retained solely until the ``setuptools`` " "documentation at https://setuptools.readthedocs.io/en/latest/setuptools.html " @@ -136,13 +135,14 @@ msgid "Distutils based source distributions" msgstr "Distutils basado la distribuciones de la fuente" #: ../Doc/install/index.rst:64 +#, fuzzy msgid "" "If you download a module source distribution, you can tell pretty quickly if " "it was packaged and distributed in the standard way, i.e. using the " "Distutils. First, the distribution's name and version number will be " "featured prominently in the name of the downloaded archive, e.g. :file:" "`foo-1.0.tar.gz` or :file:`widget-0.9.7.zip`. Next, the archive will unpack " -"into a similarly-named directory: :file:`foo-1.0` or :file:`widget-0.9.7`. " +"into a similarly named directory: :file:`foo-1.0` or :file:`widget-0.9.7`. " "Additionally, the distribution will contain a setup script :file:`setup.py`, " "and a file named :file:`README.txt` or possibly just :file:`README`, which " "should explain that building and installing the module distribution is a " @@ -470,8 +470,8 @@ msgstr "" #: ../Doc/install/index.rst:234 msgid "" -"The default installation directory on Windows was :file:`C:\\\\Program Files" -"\\\\Python` under Python 1.6a1, 1.5.2, and earlier." +"The default installation directory on Windows was :file:`C:\\\\Program " +"Files\\\\Python` under Python 1.6a1, 1.5.2, and earlier." msgstr "" "El directorio de instalación predeterminado en Windows era :file:`C:\\\\ " "Archivos de programa \\\\Python` en Python 1.6a1, 1.5.2 y versiones " @@ -1475,9 +1475,10 @@ msgid "\\(5)" msgstr "\\(5)" #: ../Doc/install/index.rst:763 +#, fuzzy msgid "" "On all platforms, the \"personal\" file can be temporarily disabled by " -"passing the `--no-user-cfg` option." +"passing the ``--no-user-cfg`` option." msgstr "" "En todas las plataformas, el archivo \"personal\" puede deshabilitarse " "temporalmente pasando la opción `--no-user-cfg`." @@ -1790,9 +1791,9 @@ msgid "" "appended to the proper command line, so in the above example the compiler " "will be passed the :option:`!-o32` option, and the linker will be passed :" "option:`!-shared`. If a compiler option requires an argument, you'll have " -"to supply multiple :option:`!-Xcompiler` options; for example, to pass ``-x c" -"++`` the :file:`Setup` file would have to contain ``-Xcompiler -x -Xcompiler " -"c++``." +"to supply multiple :option:`!-Xcompiler` options; for example, to pass ``-x " +"c++`` the :file:`Setup` file would have to contain ``-Xcompiler -x -" +"Xcompiler c++``." msgstr "" "La siguiente opción después de :option:`!-Xcompiler` y :option:`!-Xlinker` " "se agregará a la línea de comando adecuada, por lo que en el ejemplo " @@ -2037,9 +2038,10 @@ msgstr "" "directorios que las bibliotecas normales." #: ../Doc/install/index.rst:1065 +#, fuzzy msgid "" -"`Building Python modules on MS Windows platform with MinGW `_" +"`Building Python modules on MS Windows platform with MinGW `_" msgstr "" "`Construyendo modules Python en plataformas de Microsoft Windows con MinGW " "`_" diff --git a/installing/index.po b/installing/index.po index f7af26f630..6ef89607d7 100644 --- a/installing/index.po +++ b/installing/index.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-12-09 10:09+0800\n" "Last-Translator: Rodrigo Tobar \n" "Language: es_ES\n" @@ -19,8 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/installing/index.rst:7 msgid "Installing Python Modules" @@ -407,10 +406,11 @@ msgstr "" "Es posible que ``pip`` no se instale por defecto. Una posible solución es::" #: ../Doc/installing/index.rst:216 +#, fuzzy msgid "" "There are also additional resources for `installing pip. `__" +"python.org/en/latest/tutorials/installing-packages/#ensure-pip-setuptools-" +"and-wheel-are-up-to-date>`__" msgstr "" "Hay recursos adicionales para `instalar pip. `__" diff --git a/library/2to3.po b/library/2to3.po index cc02f0c8e3..9d12086740 100644 --- a/library/2to3.po +++ b/library/2to3.po @@ -10,19 +10,20 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-08-04 13:33+0200\n" "Last-Translator: Cristián Maureira-Fredes \n" -"Language-Team: python-doc-es\n" "Language: es\n" +"Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" -"Generated-By: Babel 2.9.1\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/library/2to3.rst:4 -msgid "2to3 - Automated Python 2 to 3 code translation" +#, fuzzy +msgid "2to3 --- Automated Python 2 to 3 code translation" msgstr "2to3 - Traducción de código Python 2 a 3" #: ../Doc/library/2to3.rst:8 @@ -40,11 +41,19 @@ msgstr "" "es, sin embargo, una biblioteca flexible y genérica, por lo que es posible " "escribir sus propios arreglos para 2to3." -#: ../Doc/library/2to3.rst:18 +#: ../Doc/library/2to3.rst:19 +msgid "" +"The ``lib2to3`` module was marked pending for deprecation in Python 3.9 " +"(raising :exc:`PendingDeprecationWarning` on import) and fully deprecated in " +"Python 3.11 (raising :exc:`DeprecationWarning`). The ``2to3`` tool is part " +"of that. It will be removed in Python 3.13." +msgstr "" + +#: ../Doc/library/2to3.rst:23 msgid "Using 2to3" msgstr "Usando 2to3" -#: ../Doc/library/2to3.rst:20 +#: ../Doc/library/2to3.rst:25 msgid "" "2to3 will usually be installed with the Python interpreter as a script. It " "is also located in the :file:`Tools/scripts` directory of the Python root." @@ -53,7 +62,7 @@ msgstr "" "*script*. También se encuentra ubicada en el directorio :file:`Tools/" "scripts` en la raíz de Python." -#: ../Doc/library/2to3.rst:23 +#: ../Doc/library/2to3.rst:28 msgid "" "2to3's basic arguments are a list of files or directories to transform. The " "directories are recursively traversed for Python sources." @@ -62,15 +71,15 @@ msgstr "" "convertir. Los directorios se recorren recursivamente en búsqueda de " "archivos en Python." -#: ../Doc/library/2to3.rst:26 +#: ../Doc/library/2to3.rst:31 msgid "Here is a sample Python 2.x source file, :file:`example.py`::" msgstr "Este es un ejemplo de un archivo en Python 2.x, :file:`example.py`::" -#: ../Doc/library/2to3.rst:34 +#: ../Doc/library/2to3.rst:39 msgid "It can be converted to Python 3.x code via 2to3 on the command line:" msgstr "Puede ser convertido a Python 3.x vía 2to3 desde la línea de comandos:" -#: ../Doc/library/2to3.rst:40 +#: ../Doc/library/2to3.rst:45 msgid "" "A diff against the original source file is printed. 2to3 can also write the " "needed modifications right back to the source file. (A backup of the " @@ -83,12 +92,12 @@ msgstr "" "proporcione :option:`!-n`.) La escritura de los cambios se habilita con la " "opción :option:`!-w`:" -#: ../Doc/library/2to3.rst:49 +#: ../Doc/library/2to3.rst:54 msgid "After transformation, :file:`example.py` looks like this::" msgstr "" "Después de la conversión, :file:`example.py` se ve de la siguiente manera::" -#: ../Doc/library/2to3.rst:57 +#: ../Doc/library/2to3.rst:62 msgid "" "Comments and exact indentation are preserved throughout the translation " "process." @@ -96,7 +105,7 @@ msgstr "" "Los comentarios y la identación exacta se conservan durante todo el proceso " "de conversión." -#: ../Doc/library/2to3.rst:59 +#: ../Doc/library/2to3.rst:64 msgid "" "By default, 2to3 runs a set of :ref:`predefined fixers <2to3-fixers>`. The :" "option:`!-l` flag lists all available fixers. An explicit set of fixers to " @@ -110,11 +119,11 @@ msgstr "" "Asimismo la opción :option:`!-x` deshabilita el *fixer* que se explicita. El " "siguiente ejemplo corre solo solo los *fixers* ``imports`` y ``has_key``:" -#: ../Doc/library/2to3.rst:68 +#: ../Doc/library/2to3.rst:73 msgid "This command runs every fixer except the ``apply`` fixer:" msgstr "Este comando corre todos los *fixers* excepto el ``apply`` *fixer*:" -#: ../Doc/library/2to3.rst:74 +#: ../Doc/library/2to3.rst:79 msgid "" "Some fixers are *explicit*, meaning they aren't run by default and must be " "listed on the command line to be run. Here, in addition to the default " @@ -124,12 +133,12 @@ msgstr "" "y deben ser listados en la línea de comando para que se ejecuten. Acá, " "además de los *fixers* por defectos, se ejecuta el *fixer* ``idioms``:" -#: ../Doc/library/2to3.rst:82 +#: ../Doc/library/2to3.rst:87 msgid "Notice how passing ``all`` enables all default fixers." msgstr "" "Puede observarse que pasar ``all`` habilita todos los *fixers* por defecto." -#: ../Doc/library/2to3.rst:84 +#: ../Doc/library/2to3.rst:89 msgid "" "Sometimes 2to3 will find a place in your source code that needs to be " "changed, but 2to3 cannot fix automatically. In this case, 2to3 will print a " @@ -141,7 +150,7 @@ msgstr "" "va a imprimir una advertencia debajo del *diff* del archivo. Deberá tomar " "nota de la advertencia para obtener un código compatible con 3.x." -#: ../Doc/library/2to3.rst:89 +#: ../Doc/library/2to3.rst:94 msgid "" "2to3 can also refactor doctests. To enable this mode, use the :option:`!-d` " "flag. Note that *only* doctests will be refactored. This also doesn't " @@ -154,7 +163,7 @@ msgstr "" "Por ejemplo, *doctest* de ejemplo en un documento reST también pueden ser " "refactorizados con esta opción." -#: ../Doc/library/2to3.rst:94 +#: ../Doc/library/2to3.rst:99 msgid "" "The :option:`!-v` option enables output of more information on the " "translation process." @@ -163,7 +172,7 @@ msgstr "" "de conversión." # No se si queda clara esta oración -#: ../Doc/library/2to3.rst:97 +#: ../Doc/library/2to3.rst:102 msgid "" "Since some print statements can be parsed as function calls or statements, " "2to3 cannot always read files containing the print function. When 2to3 " @@ -184,7 +193,7 @@ msgstr "" "sus declaraciones de impresión convertidas. También :option:`!-e` puede " "usarse para hacer :func:`exec` una función." -#: ../Doc/library/2to3.rst:105 +#: ../Doc/library/2to3.rst:110 msgid "" "The :option:`!-o` or :option:`!--output-dir` option allows specification of " "an alternate directory for processed output files to be written to. The :" @@ -197,11 +206,11 @@ msgstr "" "respaldo no tienen sentido cuando no se sobreescriben los archivos " "originales." -#: ../Doc/library/2to3.rst:110 +#: ../Doc/library/2to3.rst:115 msgid "The :option:`!-o` option was added." msgstr "Se agregó la opción :option:` !-o`." -#: ../Doc/library/2to3.rst:113 +#: ../Doc/library/2to3.rst:118 msgid "" "The :option:`!-W` or :option:`!--write-unchanged-files` flag tells 2to3 to " "always write output files even if no changes were required to the file. " @@ -216,11 +225,11 @@ msgstr "" "a otro. Esta opción incluye a la opción :option:`!-w` ya que no tendría " "sentido de otra manera." -#: ../Doc/library/2to3.rst:119 +#: ../Doc/library/2to3.rst:124 msgid "The :option:`!-W` flag was added." msgstr "Se agregó la opción :option:`!-W`." -#: ../Doc/library/2to3.rst:122 +#: ../Doc/library/2to3.rst:127 msgid "" "The :option:`!--add-suffix` option specifies a string to append to all " "output filenames. The :option:`!-n` flag is required when specifying this " @@ -231,25 +240,25 @@ msgstr "" "de respaldo no son necesarias cuando escribimos a un archivo con distinto " "nombre. Ejemplo:" -#: ../Doc/library/2to3.rst:130 +#: ../Doc/library/2to3.rst:135 msgid "Will cause a converted file named ``example.py3`` to be written." msgstr "" "Hará que se escriba una archivo convertido con el nombre ``example.py3``." -#: ../Doc/library/2to3.rst:132 +#: ../Doc/library/2to3.rst:137 msgid "The :option:`!--add-suffix` option was added." msgstr "Se agrega la opción :option:`!--add-suffix`." -#: ../Doc/library/2to3.rst:135 +#: ../Doc/library/2to3.rst:140 msgid "To translate an entire project from one directory tree to another use:" msgstr "" "Para convertir un proyecto entero de un árbol de directorios a otro use:" -#: ../Doc/library/2to3.rst:145 +#: ../Doc/library/2to3.rst:150 msgid "Fixers" msgstr "Fixers" -#: ../Doc/library/2to3.rst:147 +#: ../Doc/library/2to3.rst:152 msgid "" "Each step of transforming code is encapsulated in a fixer. The command " "``2to3 -l`` lists them. As :ref:`documented above <2to3-using>`, each can " @@ -260,7 +269,7 @@ msgstr "" "cada uno de estos puede habilitarse o deshabilitarse individualmente. En " "esta sección se los describe más detalladamente." -#: ../Doc/library/2to3.rst:154 +#: ../Doc/library/2to3.rst:159 msgid "" "Removes usage of :func:`apply`. For example ``apply(function, *args, " "**kwargs)`` is converted to ``function(*args, **kwargs)``." @@ -268,102 +277,102 @@ msgstr "" "Elimina el uso de :func:`apply`. Por ejemplo ``apply(function, *args, " "**kwargs)`` es convertido a ``function(*args, **kwargs)``." -#: ../Doc/library/2to3.rst:159 +#: ../Doc/library/2to3.rst:164 msgid "Replaces deprecated :mod:`unittest` method names with the correct ones." msgstr "" "Reemplaza los nombre de método :mod:`unittest` en desuso por los correctos." -#: ../Doc/library/2to3.rst:162 ../Doc/library/2to3.rst:350 +#: ../Doc/library/2to3.rst:167 ../Doc/library/2to3.rst:356 msgid "From" msgstr "De" -#: ../Doc/library/2to3.rst:162 ../Doc/library/2to3.rst:350 +#: ../Doc/library/2to3.rst:167 ../Doc/library/2to3.rst:356 msgid "To" msgstr "A" -#: ../Doc/library/2to3.rst:164 +#: ../Doc/library/2to3.rst:169 msgid "``failUnlessEqual(a, b)``" msgstr "``failUnlessEqual(a, b)``" -#: ../Doc/library/2to3.rst:164 ../Doc/library/2to3.rst:166 +#: ../Doc/library/2to3.rst:169 ../Doc/library/2to3.rst:171 msgid ":meth:`assertEqual(a, b) `" msgstr ":meth:`assertEqual(a, b) `" -#: ../Doc/library/2to3.rst:166 +#: ../Doc/library/2to3.rst:171 msgid "``assertEquals(a, b)``" msgstr "``assertEquals(a, b)``" -#: ../Doc/library/2to3.rst:168 +#: ../Doc/library/2to3.rst:173 msgid "``failIfEqual(a, b)``" msgstr "``failIfEqual(a, b)``" -#: ../Doc/library/2to3.rst:168 ../Doc/library/2to3.rst:170 +#: ../Doc/library/2to3.rst:173 ../Doc/library/2to3.rst:175 msgid ":meth:`assertNotEqual(a, b) `" msgstr ":meth:`assertNotEqual(a, b) `" -#: ../Doc/library/2to3.rst:170 +#: ../Doc/library/2to3.rst:175 msgid "``assertNotEquals(a, b)``" msgstr "``assertNotEquals(a, b)``" -#: ../Doc/library/2to3.rst:172 +#: ../Doc/library/2to3.rst:177 msgid "``failUnless(a)``" msgstr "``failUnless(a)``" -#: ../Doc/library/2to3.rst:172 ../Doc/library/2to3.rst:174 +#: ../Doc/library/2to3.rst:177 ../Doc/library/2to3.rst:179 msgid ":meth:`assertTrue(a) `" msgstr ":meth:`assertTrue(a) `" -#: ../Doc/library/2to3.rst:174 +#: ../Doc/library/2to3.rst:179 msgid "``assert_(a)``" msgstr "``assert_(a)``" -#: ../Doc/library/2to3.rst:176 +#: ../Doc/library/2to3.rst:181 msgid "``failIf(a)``" msgstr "``failIf(a)``" -#: ../Doc/library/2to3.rst:176 +#: ../Doc/library/2to3.rst:181 msgid ":meth:`assertFalse(a) `" msgstr ":meth:`assertFalse(a) `" -#: ../Doc/library/2to3.rst:178 +#: ../Doc/library/2to3.rst:183 msgid "``failUnlessRaises(exc, cal)``" msgstr "``failUnlessRaises(exc, cal)``" -#: ../Doc/library/2to3.rst:178 +#: ../Doc/library/2to3.rst:183 msgid ":meth:`assertRaises(exc, cal) `" msgstr ":meth:`assertRaises(exc, cal) `" -#: ../Doc/library/2to3.rst:180 +#: ../Doc/library/2to3.rst:185 msgid "``failUnlessAlmostEqual(a, b)``" msgstr "``failUnlessAlmostEqual(a, b)``" -#: ../Doc/library/2to3.rst:180 ../Doc/library/2to3.rst:182 +#: ../Doc/library/2to3.rst:185 ../Doc/library/2to3.rst:187 msgid ":meth:`assertAlmostEqual(a, b) `" msgstr ":meth:`assertAlmostEqual(a, b) `" -#: ../Doc/library/2to3.rst:182 +#: ../Doc/library/2to3.rst:187 msgid "``assertAlmostEquals(a, b)``" msgstr "``assertAlmostEquals(a, b)``" -#: ../Doc/library/2to3.rst:184 +#: ../Doc/library/2to3.rst:189 msgid "``failIfAlmostEqual(a, b)``" msgstr "``failIfAlmostEqual(a, b)``" -#: ../Doc/library/2to3.rst:184 ../Doc/library/2to3.rst:186 +#: ../Doc/library/2to3.rst:189 ../Doc/library/2to3.rst:191 msgid "" ":meth:`assertNotAlmostEqual(a, b) `" msgstr "" ":meth:`assertNotAlmostEqual(a, b) `" -#: ../Doc/library/2to3.rst:186 +#: ../Doc/library/2to3.rst:191 msgid "``assertNotAlmostEquals(a, b)``" msgstr "``assertNotAlmostEquals(a, b)``" -#: ../Doc/library/2to3.rst:192 +#: ../Doc/library/2to3.rst:197 msgid "Converts :class:`basestring` to :class:`str`." msgstr "Convierte :class:`basestring` a :class:`str`." -#: ../Doc/library/2to3.rst:196 +#: ../Doc/library/2to3.rst:201 msgid "" "Converts :class:`buffer` to :class:`memoryview`. This fixer is optional " "because the :class:`memoryview` API is similar but not exactly the same as " @@ -373,7 +382,7 @@ msgstr "" "porque la API :class:`memoryview` es similar pero no exactamente la misma " "que la del :class:`buffer`." -#: ../Doc/library/2to3.rst:202 +#: ../Doc/library/2to3.rst:207 msgid "" "Fixes dictionary iteration methods. :meth:`dict.iteritems` is converted to :" "meth:`dict.items`, :meth:`dict.iterkeys` to :meth:`dict.keys`, and :meth:" @@ -391,15 +400,15 @@ msgstr "" "values`. También incluye los usos existentes de :meth:`dict.items`, :meth:" "`dict.keys`, y :meth:`dict.values` en una llamada a :class:`list`." -#: ../Doc/library/2to3.rst:212 +#: ../Doc/library/2to3.rst:217 msgid "Converts ``except X, T`` to ``except X as T``." msgstr "Convierte ``except X, T`` a ``except X as T``." -#: ../Doc/library/2to3.rst:216 +#: ../Doc/library/2to3.rst:221 msgid "Converts the ``exec`` statement to the :func:`exec` function." msgstr "Convierte la declaración ``exec`` a la función :func:`exec`." -#: ../Doc/library/2to3.rst:220 +#: ../Doc/library/2to3.rst:225 msgid "" "Removes usage of :func:`execfile`. The argument to :func:`execfile` is " "wrapped in calls to :func:`open`, :func:`compile`, and :func:`exec`." @@ -408,7 +417,7 @@ msgstr "" "`execfile` es encapsulado para las funciones :func:`open`, :func:`compile`, " "y :func:`exec`." -#: ../Doc/library/2to3.rst:225 +#: ../Doc/library/2to3.rst:230 msgid "" "Changes assignment of :attr:`sys.exitfunc` to use of the :mod:`atexit` " "module." @@ -416,13 +425,13 @@ msgstr "" "Cambia la declaración de :attr:`sys.exitfunc` para usar el módulo :mod:" "`atexit`." -#: ../Doc/library/2to3.rst:230 +#: ../Doc/library/2to3.rst:235 msgid "Wraps :func:`filter` usage in a :class:`list` call." msgstr "" "Encapsula la función :func:`filter` usando una llamada para la clase :class:" "`list`." -#: ../Doc/library/2to3.rst:234 +#: ../Doc/library/2to3.rst:239 msgid "" "Fixes function attributes that have been renamed. For example, " "``my_function.func_closure`` is converted to ``my_function.__closure__``." @@ -430,19 +439,19 @@ msgstr "" "Corrige los atributos de la función que fueron renombrados. Por ejemplo, " "``my_function.func_closure`` es convertido a ``my_function.__closure__``." -#: ../Doc/library/2to3.rst:239 +#: ../Doc/library/2to3.rst:244 msgid "Removes ``from __future__ import new_feature`` statements." msgstr "Elimina la declaración ``from __future__ import new_feature``." -#: ../Doc/library/2to3.rst:243 +#: ../Doc/library/2to3.rst:248 msgid "Renames :func:`os.getcwdu` to :func:`os.getcwd`." msgstr "Renombra la función :func:`os.getcwdu` a :func:`os.getcwd`." -#: ../Doc/library/2to3.rst:247 +#: ../Doc/library/2to3.rst:252 msgid "Changes ``dict.has_key(key)`` to ``key in dict``." msgstr "Cambia ``dict.has_key(key)`` a ``key in dict``." -#: ../Doc/library/2to3.rst:251 +#: ../Doc/library/2to3.rst:256 msgid "" "This optional fixer performs several transformations that make Python code " "more idiomatic. Type comparisons like ``type(x) is SomeClass`` and " @@ -456,23 +465,23 @@ msgstr "" "``while 1`` cambia a ``while True``. Este *fixer* también intenta hacer uso " "de :func:`sorted` en los lugares apropiados. Por ejemplo, en este bloque::" -#: ../Doc/library/2to3.rst:260 +#: ../Doc/library/2to3.rst:265 msgid "is changed to ::" msgstr "es convertido a ::" # sibilings impor es traducido en protugues como importaciones de hermanos. No # se, no me agrada mucho eso de importaciones hermanas o entre hermanos. -#: ../Doc/library/2to3.rst:266 +#: ../Doc/library/2to3.rst:271 msgid "Detects sibling imports and converts them to relative imports." msgstr "" "Detecta las importaciones entre hermanos y las convierte en importaciones " "relativas." -#: ../Doc/library/2to3.rst:270 +#: ../Doc/library/2to3.rst:275 msgid "Handles module renames in the standard library." msgstr "Maneja los cambios de nombre de módulo en la librería estándar." -#: ../Doc/library/2to3.rst:274 +#: ../Doc/library/2to3.rst:279 msgid "" "Handles other modules renames in the standard library. It is separate from " "the :2to3fixer:`imports` fixer only because of technical limitations." @@ -481,15 +490,15 @@ msgstr "" "separada del *fixer* :2to3fixer:`imports` solo por motivos de limitaciones " "técnicas." -#: ../Doc/library/2to3.rst:279 +#: ../Doc/library/2to3.rst:284 msgid "Converts ``input(prompt)`` to ``eval(input(prompt))``." msgstr "Convierte ``input(prompt)`` a ``eval(input(prompt))``." -#: ../Doc/library/2to3.rst:283 +#: ../Doc/library/2to3.rst:288 msgid "Converts :func:`intern` to :func:`sys.intern`." msgstr "Convierte :func:`intern` a :func:`sys.intern`." -#: ../Doc/library/2to3.rst:287 +#: ../Doc/library/2to3.rst:292 msgid "" "Fixes duplicate types in the second argument of :func:`isinstance`. For " "example, ``isinstance(x, (int, int))`` is converted to ``isinstance(x, " @@ -501,7 +510,7 @@ msgstr "" "y ``isinstance(x, (int, float, int))`` es convertido a ``isinstance(x, (int, " "float))``." -#: ../Doc/library/2to3.rst:294 +#: ../Doc/library/2to3.rst:299 msgid "" "Removes imports of :func:`itertools.ifilter`, :func:`itertools.izip`, and :" "func:`itertools.imap`. Imports of :func:`itertools.ifilterfalse` are also " @@ -511,7 +520,7 @@ msgstr "" "y :func:`itertools.imap`. Importación de :func:`itertools.ifilterfalse` " "también se cambian a :func:`itertools.filterfalse`." -#: ../Doc/library/2to3.rst:300 +#: ../Doc/library/2to3.rst:305 msgid "" "Changes usage of :func:`itertools.ifilter`, :func:`itertools.izip`, and :" "func:`itertools.imap` to their built-in equivalents. :func:`itertools." @@ -521,11 +530,11 @@ msgstr "" "`itertools.imap` para sus equivalentes integrados :func:`itertools." "ifilterfalse` es cambiado a :func:`itertools.filterfalse`." -#: ../Doc/library/2to3.rst:306 +#: ../Doc/library/2to3.rst:311 msgid "Renames :class:`long` to :class:`int`." msgstr "Renombra :class:`long` a :class:`int`." -#: ../Doc/library/2to3.rst:310 +#: ../Doc/library/2to3.rst:315 msgid "" "Wraps :func:`map` in a :class:`list` call. It also changes ``map(None, x)`` " "to ``list(x)``. Using ``from future_builtins import map`` disables this " @@ -535,7 +544,7 @@ msgstr "" "``map(None, x)`` a ``list(x)``. Usando``from future_builtins import map`` se " "deshabilita este *fixer*." -#: ../Doc/library/2to3.rst:316 +#: ../Doc/library/2to3.rst:321 msgid "" "Converts the old metaclass syntax (``__metaclass__ = Meta`` in the class " "body) to the new (``class X(metaclass=Meta)``)." @@ -543,7 +552,7 @@ msgstr "" "Convierte la vieja sintaxis de metaclase (``__metaclass__ = Meta`` en el " "cuerpo de la clase) a la nueva sintaxis (``class X(metaclass=Meta)``)." -#: ../Doc/library/2to3.rst:321 +#: ../Doc/library/2to3.rst:326 msgid "" "Fixes old method attribute names. For example, ``meth.im_func`` is " "converted to ``meth.__func__``." @@ -551,11 +560,11 @@ msgstr "" "Corrige nombres de atributos de métodos antiguos. Por ejemplo, ``meth." "im_func`` is convertido a ``meth.__func__``." -#: ../Doc/library/2to3.rst:326 +#: ../Doc/library/2to3.rst:331 msgid "Converts the old not-equal syntax, ``<>``, to ``!=``." msgstr "Convierte la antigua sintaxis no-igual, ``<>``, a ``!=``." -#: ../Doc/library/2to3.rst:330 +#: ../Doc/library/2to3.rst:335 msgid "" "Converts the use of iterator's :meth:`~iterator.next` methods to the :func:" "`next` function. It also renames :meth:`next` methods to :meth:`~iterator." @@ -565,15 +574,18 @@ msgstr "" "función :func:`next`. También renombra métodos :meth:`next` a :meth:" "`~iterator.__next__`." -#: ../Doc/library/2to3.rst:336 -msgid "Renames :meth:`__nonzero__` to :meth:`~object.__bool__`." +#: ../Doc/library/2to3.rst:341 +#, fuzzy +msgid "" +"Renames definitions of methods called :meth:`__nonzero__` to :meth:`~object." +"__bool__`." msgstr "Renombra el método :meth:`__nonzero__` a :meth:`~object.__bool__`." -#: ../Doc/library/2to3.rst:340 +#: ../Doc/library/2to3.rst:346 msgid "Converts octal literals into the new syntax." msgstr "Convierte literales octales a la nueva sintaxis." -#: ../Doc/library/2to3.rst:344 +#: ../Doc/library/2to3.rst:350 msgid "" "Converts calls to various functions in the :mod:`operator` module to other, " "but equivalent, function calls. When needed, the appropriate ``import`` " @@ -585,65 +597,65 @@ msgstr "" "agregan las declaraciones ``import`` apropiadas, por ejemplo ``import " "collections.abc``. Se realizan los siguientes mapeos:" -#: ../Doc/library/2to3.rst:352 +#: ../Doc/library/2to3.rst:358 msgid "``operator.isCallable(obj)``" msgstr "``operator.isCallable(obj)``" -#: ../Doc/library/2to3.rst:352 +#: ../Doc/library/2to3.rst:358 msgid "``callable(obj)``" msgstr "``callable(obj)``" -#: ../Doc/library/2to3.rst:353 +#: ../Doc/library/2to3.rst:359 msgid "``operator.sequenceIncludes(obj)``" msgstr "``operator.sequenceIncludes(obj)``" -#: ../Doc/library/2to3.rst:353 +#: ../Doc/library/2to3.rst:359 msgid "``operator.contains(obj)``" msgstr "``operator.contains(obj)``" -#: ../Doc/library/2to3.rst:354 +#: ../Doc/library/2to3.rst:360 msgid "``operator.isSequenceType(obj)``" msgstr "``operator.isSequenceType(obj)``" -#: ../Doc/library/2to3.rst:354 +#: ../Doc/library/2to3.rst:360 msgid "``isinstance(obj, collections.abc.Sequence)``" msgstr "``isinstance(obj, collections.abc.Sequence)``" -#: ../Doc/library/2to3.rst:355 +#: ../Doc/library/2to3.rst:361 msgid "``operator.isMappingType(obj)``" msgstr "``operator.isMappingType(obj)``" -#: ../Doc/library/2to3.rst:355 +#: ../Doc/library/2to3.rst:361 msgid "``isinstance(obj, collections.abc.Mapping)``" msgstr "``isinstance(obj, collections.abc.Mapping)``" -#: ../Doc/library/2to3.rst:356 +#: ../Doc/library/2to3.rst:362 msgid "``operator.isNumberType(obj)``" msgstr "``operator.isNumberType(obj)``" -#: ../Doc/library/2to3.rst:356 +#: ../Doc/library/2to3.rst:362 msgid "``isinstance(obj, numbers.Number)``" msgstr "``isinstance(obj, numbers.Number)``" -#: ../Doc/library/2to3.rst:357 +#: ../Doc/library/2to3.rst:363 msgid "``operator.repeat(obj, n)``" msgstr "``operator.repeat(obj, n)``" -#: ../Doc/library/2to3.rst:357 +#: ../Doc/library/2to3.rst:363 msgid "``operator.mul(obj, n)``" msgstr "``operator.mul(obj, n)``" -#: ../Doc/library/2to3.rst:358 +#: ../Doc/library/2to3.rst:364 msgid "``operator.irepeat(obj, n)``" msgstr "``operator.irepeat(obj, n)``" -#: ../Doc/library/2to3.rst:358 +#: ../Doc/library/2to3.rst:364 msgid "``operator.imul(obj, n)``" msgstr "``operator.imul(obj, n)``" # No supe bien como traducir list comprehensions, en la traducción portuguesa # está como "em lista comprehensions." -#: ../Doc/library/2to3.rst:363 +#: ../Doc/library/2to3.rst:369 msgid "" "Add extra parenthesis where they are required in list comprehensions. For " "example, ``[x for x in 1, 2]`` becomes ``[x for x in (1, 2)]``." @@ -652,11 +664,11 @@ msgstr "" "comprensión. Por ejemplo ``[x for x in 1, 2]`` se convierte en ``[x for x in " "(1, 2)]``." -#: ../Doc/library/2to3.rst:368 +#: ../Doc/library/2to3.rst:374 msgid "Converts the ``print`` statement to the :func:`print` function." msgstr "Convierte la declaración ``print`` en la función :func:`print`." -#: ../Doc/library/2to3.rst:372 +#: ../Doc/library/2to3.rst:378 msgid "" "Converts ``raise E, V`` to ``raise E(V)``, and ``raise E, V, T`` to ``raise " "E(V).with_traceback(T)``. If ``E`` is a tuple, the translation will be " @@ -667,27 +679,27 @@ msgstr "" "incorrecta porque sustituir tuplas por excepciones fue eliminado en Python " "3.0." -#: ../Doc/library/2to3.rst:378 +#: ../Doc/library/2to3.rst:384 msgid "Converts :func:`raw_input` to :func:`input`." msgstr "Conviertes :func:`raw_input` to :func:`input`." -#: ../Doc/library/2to3.rst:382 +#: ../Doc/library/2to3.rst:388 msgid "Handles the move of :func:`reduce` to :func:`functools.reduce`." msgstr "Maneja el movimiento de :func:`reduce` a :func:`functools.reduce`." -#: ../Doc/library/2to3.rst:386 +#: ../Doc/library/2to3.rst:392 msgid "Converts :func:`reload` to :func:`importlib.reload`." msgstr "Convierte :func:`reload` a :func:`importlib.reload`." -#: ../Doc/library/2to3.rst:390 +#: ../Doc/library/2to3.rst:396 msgid "Changes :data:`sys.maxint` to :data:`sys.maxsize`." msgstr "Cambia :data:`sys.maxint` a :data:`sys.maxsize`." -#: ../Doc/library/2to3.rst:394 +#: ../Doc/library/2to3.rst:400 msgid "Replaces backtick repr with the :func:`repr` function." msgstr "Sustituye el *backtick* repr por la función :func:`repr`." -#: ../Doc/library/2to3.rst:398 +#: ../Doc/library/2to3.rst:404 msgid "" "Replaces use of the :class:`set` constructor with set literals. This fixer " "is optional." @@ -695,11 +707,11 @@ msgstr "" "Sustituye el uso de la clase constructora :class:`set` por su literal. Este " "*fixer* es opcional." -#: ../Doc/library/2to3.rst:403 +#: ../Doc/library/2to3.rst:409 msgid "Renames :exc:`StandardError` to :exc:`Exception`." msgstr "Renombra :exc:`StandardError` a :exc:`Exception`." -#: ../Doc/library/2to3.rst:407 +#: ../Doc/library/2to3.rst:413 msgid "" "Changes the deprecated :data:`sys.exc_value`, :data:`sys.exc_type`, :data:" "`sys.exc_traceback` to use :func:`sys.exc_info`." @@ -707,11 +719,11 @@ msgstr "" "Cambia los :data:`sys.exc_value`, :data:`sys.exc_type`, :data:`sys." "exc_traceback` en desuso para usar la función :func:`sys.exc_info`." -#: ../Doc/library/2to3.rst:412 +#: ../Doc/library/2to3.rst:418 msgid "Fixes the API change in generator's :meth:`throw` method." msgstr "Corrige el cambio de la API en el método generador :meth:`throw`." -#: ../Doc/library/2to3.rst:416 +#: ../Doc/library/2to3.rst:422 msgid "" "Removes implicit tuple parameter unpacking. This fixer inserts temporary " "variables." @@ -719,7 +731,7 @@ msgstr "" "Elimina el desempaquetamiento implícito del parámetro de tupla. Este *fixer* " "inserta variables temporarias." -#: ../Doc/library/2to3.rst:421 +#: ../Doc/library/2to3.rst:427 msgid "" "Fixes code broken from the removal of some members in the :mod:`types` " "module." @@ -727,11 +739,11 @@ msgstr "" "Corrige el código roto por la remoción de algunos miembros en el módulo :mod:" "`types`." -#: ../Doc/library/2to3.rst:426 +#: ../Doc/library/2to3.rst:432 msgid "Renames :class:`unicode` to :class:`str`." msgstr "Renombra :class:`unicode` a :class:`str`." -#: ../Doc/library/2to3.rst:430 +#: ../Doc/library/2to3.rst:436 msgid "" "Handles the rename of :mod:`urllib` and :mod:`urllib2` to the :mod:`urllib` " "package." @@ -739,7 +751,7 @@ msgstr "" "Maneja el renombramiento de los módulos :mod:`urllib` y :mod:`urllib2` para " "el paquete :mod:`urllib`." -#: ../Doc/library/2to3.rst:435 +#: ../Doc/library/2to3.rst:441 msgid "" "Removes excess whitespace from comma separated items. This fixer is " "optional." @@ -747,7 +759,7 @@ msgstr "" "Remueve el exceso de espacios blancos de los ítems separados por coma. Este " "*fixer* es opcional." -#: ../Doc/library/2to3.rst:440 +#: ../Doc/library/2to3.rst:446 msgid "" "Renames :func:`xrange` to :func:`range` and wraps existing :func:`range` " "calls with :class:`list`." @@ -755,11 +767,11 @@ msgstr "" "Renombra :func:`xrange` a :func:`range` y encapsula la llamada a la función " "existente :func:`range` con :class:`list`." -#: ../Doc/library/2to3.rst:445 +#: ../Doc/library/2to3.rst:451 msgid "Changes ``for x in file.xreadlines()`` to ``for x in file``." msgstr "Cambia ``for x in file.xreadlines()`` por ``for x in file``." -#: ../Doc/library/2to3.rst:449 +#: ../Doc/library/2to3.rst:455 msgid "" "Wraps :func:`zip` usage in a :class:`list` call. This is disabled when " "``from future_builtins import zip`` appears." @@ -768,15 +780,16 @@ msgstr "" "class:`list`. Esto está deshabilitado cuando ``from future_builtins import " "zip`` aparece." -#: ../Doc/library/2to3.rst:454 -msgid ":mod:`lib2to3` - 2to3's library" +#: ../Doc/library/2to3.rst:460 +#, fuzzy +msgid ":mod:`lib2to3` --- 2to3's library" msgstr ":mod:`lib2to3` - librería 2to3" -#: ../Doc/library/2to3.rst:463 +#: ../Doc/library/2to3.rst:469 msgid "**Source code:** :source:`Lib/lib2to3/`" msgstr "**Código fuente:** :source:`Lib/lib2to3/`" -#: ../Doc/library/2to3.rst:476 +#: ../Doc/library/2to3.rst:482 msgid "" "Python 3.9 switched to a PEG parser (see :pep:`617`) while lib2to3 is using " "a less flexible LL(1) parser. Python 3.10 includes new language syntax that " @@ -797,7 +810,7 @@ msgstr "" "biblioteca estándar en Python 3.13. Considere alternativas de terceros como " "`LibCST`_ o `parso`_." -#: ../Doc/library/2to3.rst:479 +#: ../Doc/library/2to3.rst:485 msgid "" "The :mod:`lib2to3` API should be considered unstable and may change " "drastically in the future." diff --git a/library/__future__.po b/library/__future__.po index 275ead665d..8588027f3e 100644 --- a/library/__future__.po +++ b/library/__future__.po @@ -10,16 +10,16 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-08-07 10:36+0200\n" "Last-Translator: Cristián Maureira-Fredes \n" "Language: es\n" "Language-Team: python-doc-es\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/library/__future__.rst:2 msgid ":mod:`__future__` --- Future statement definitions" @@ -279,17 +279,31 @@ msgid "3.7.0b1" msgstr "3.7.0b1" #: ../Doc/library/__future__.rst:93 -msgid "3.11" -msgstr "3.11" +msgid "TBD [1]_" +msgstr "" #: ../Doc/library/__future__.rst:93 msgid ":pep:`563`: *Postponed evaluation of annotations*" msgstr ":pep:`563`: *Evaluación pospuesta de anotaciones*" -#: ../Doc/library/__future__.rst:102 +#: ../Doc/library/__future__.rst:100 +msgid "" +"``from __future__ import annotations`` was previously scheduled to become " +"mandatory in Python 3.10, but the Python Steering Council twice decided to " +"delay the change (`announcement for Python 3.10 `__; `announcement for Python 3.11 `__). No " +"final decision has been made yet. See also :pep:`563` and :pep:`649`." +msgstr "" + +#: ../Doc/library/__future__.rst:110 msgid ":ref:`future`" msgstr ":ref:`future`" -#: ../Doc/library/__future__.rst:103 +#: ../Doc/library/__future__.rst:111 msgid "How the compiler treats future imports." msgstr "Cómo trata el compilador las importaciones futuras." + +#~ msgid "3.11" +#~ msgstr "3.11" diff --git a/library/__main__.po b/library/__main__.po index 707af31077..3b344d80b1 100644 --- a/library/__main__.po +++ b/library/__main__.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-10-28 21:47+0200\n" "Last-Translator: Juan C. Tello \n" "Language: es\n" @@ -19,8 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/library/__main__.rst:2 msgid ":mod:`__main__` --- Top-level code environment" @@ -171,11 +170,12 @@ msgid "Idiomatic Usage" msgstr "Uso Idiomático" #: ../Doc/library/__main__.rst:118 +#, fuzzy msgid "" "Some modules contain code that is intended for script use only, like parsing " -"command-line arguments or fetching data from standard input. When a module " -"like this were to be imported from a different module, for example to unit " -"test it, the script code would unintentionally execute as well." +"command-line arguments or fetching data from standard input. If a module " +"like this was imported from a different module, for example to unit test it, " +"the script code would unintentionally execute as well." msgstr "" "Algunos módulos contienen código que está pensado para uso de script " "solamente, como para interpretar argumentos de línea de comando u obtener " @@ -336,9 +336,10 @@ msgstr "" "estudiantes::" #: ../Doc/library/__main__.rst:233 +#, fuzzy msgid "" "Note that ``from .student import search_students`` is an example of a " -"relative import. This import style must be used when referencing modules " +"relative import. This import style can be used when referencing modules " "within a package. For more details, see :ref:`intra-package-references` in " "the :ref:`tut-modules` section of the tutorial." msgstr "" @@ -371,10 +372,11 @@ msgstr "" "atributo ``__name__`` incluirá la ruta del paquete si es importado::" #: ../Doc/library/__main__.rst:254 +#, fuzzy msgid "" "This won't work for ``__main__.py`` files in the root directory of a .zip " "file though. Hence, for consistency, minimal ``__main__.py`` like the :mod:" -"`venv` one mentioned above are preferred." +"`venv` one mentioned below are preferred." msgstr "" "Sin embargo, esto no funcionará para archivos ``__main__.py`` en el " "directorio base de un archivo .zip. Por lo tanto, por consistencia, es " diff --git a/library/_thread.po b/library/_thread.po index 20bc9bc3b3..dd8dc34bcc 100644 --- a/library/_thread.po +++ b/library/_thread.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-12-18 17:01-0300\n" "Last-Translator: \n" "Language: es\n" @@ -19,8 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/library/_thread.rst:2 msgid ":mod:`_thread` --- Low-level threading API" @@ -232,13 +231,16 @@ msgstr "" "el tamaño de pila es la estrategia sugerida si no se cuenta con información " "más específica)." -#: ../Doc/library/_thread.rst:143 -msgid "" -":ref:`Availability `: Windows, systems with POSIX threads." +#, fuzzy +msgid ":ref:`Availability `: Windows, pthreads." msgstr "" ":ref:`Disponibilidad `: Sistemas Windows, con hilos POSIX." -#: ../Doc/library/_thread.rst:148 +#: ../Doc/library/_thread.rst:145 +msgid "Unix platforms with POSIX threads support." +msgstr "" + +#: ../Doc/library/_thread.rst:150 msgid "" "The maximum value allowed for the *timeout* parameter of :meth:`Lock." "acquire`. Specifying a timeout greater than this value will raise an :exc:" @@ -248,11 +250,11 @@ msgstr "" "acquire`. Especificar un tiempo de espera (*timeout*) mayor que este valor " "lanzará una excepción :exc:`OverflowError`." -#: ../Doc/library/_thread.rst:155 +#: ../Doc/library/_thread.rst:157 msgid "Lock objects have the following methods:" msgstr "Los objetos candado (*lock objects*) tienen los siguientes métodos:" -#: ../Doc/library/_thread.rst:160 +#: ../Doc/library/_thread.rst:162 msgid "" "Without any optional argument, this method acquires the lock " "unconditionally, if necessary waiting until it is released by another thread " @@ -263,31 +265,33 @@ msgstr "" "incondicionalmente, si es necesario esperando que éste sea liberado por otro " "hilo (solamente un hilo por vez puede adquirir un candado; para eso existen)." -#: ../Doc/library/_thread.rst:164 +#: ../Doc/library/_thread.rst:166 +#, fuzzy msgid "" -"If the integer *waitflag* argument is present, the action depends on its " -"value: if it is zero, the lock is only acquired if it can be acquired " -"immediately without waiting, while if it is nonzero, the lock is acquired " -"unconditionally as above." +"If the *blocking* argument is present, the action depends on its value: if " +"it is False, the lock is only acquired if it can be acquired immediately " +"without waiting, while if it is True, the lock is acquired unconditionally " +"as above." msgstr "" "Si el argumento entero *waitflag* está presente, la acción depende de su " "valor: si es cero, el candado solamente es adquirido si está disponible de " "forma inmediata, sin esperas. Mientras que si es distinto de cero, el " "candado es adquirido sin condiciones, como en el caso anterior." -#: ../Doc/library/_thread.rst:169 +#: ../Doc/library/_thread.rst:171 +#, fuzzy msgid "" "If the floating-point *timeout* argument is present and positive, it " "specifies the maximum wait time in seconds before returning. A negative " "*timeout* argument specifies an unbounded wait. You cannot specify a " -"*timeout* if *waitflag* is zero." +"*timeout* if *blocking* is False." msgstr "" "Si el argumento de punto flotante *timeout* está presente y es positivo, " "especifica el tiempo máximo de espera en segundos antes de retornar. Un " "argumento *timeout* negativo, especifica una espera ilimitada. No se puede " "especificar un *timeout* si *waitflag* es cero." -#: ../Doc/library/_thread.rst:174 +#: ../Doc/library/_thread.rst:176 msgid "" "The return value is ``True`` if the lock is acquired successfully, ``False`` " "if not." @@ -295,16 +299,16 @@ msgstr "" "El valor de retorno es ``True`` si el candado (*lock*) se adquirió " "exitosamente, ``False`` de lo contrario." -#: ../Doc/library/_thread.rst:177 +#: ../Doc/library/_thread.rst:179 msgid "The *timeout* parameter is new." msgstr "El parámetro *timeout* es nuevo." -#: ../Doc/library/_thread.rst:180 +#: ../Doc/library/_thread.rst:182 msgid "Lock acquires can now be interrupted by signals on POSIX." msgstr "" "La adquisición de candados ahora puede ser interrumpida por señales en POSIX." -#: ../Doc/library/_thread.rst:186 +#: ../Doc/library/_thread.rst:188 msgid "" "Releases the lock. The lock must have been acquired earlier, but not " "necessarily by the same thread." @@ -312,7 +316,7 @@ msgstr "" "Libera el candado. El candado debe haber sido adquirido previamente, pero no " "necesariamente por el mismo hilo." -#: ../Doc/library/_thread.rst:192 +#: ../Doc/library/_thread.rst:194 msgid "" "Return the status of the lock: ``True`` if it has been acquired by some " "thread, ``False`` if not." @@ -320,7 +324,7 @@ msgstr "" "Retorna el estado del candado: ``True`` si ha sido adquirido por algún hilo, " "``False`` de lo contrario." -#: ../Doc/library/_thread.rst:195 +#: ../Doc/library/_thread.rst:197 msgid "" "In addition to these methods, lock objects can also be used via the :keyword:" "`with` statement, e.g.::" @@ -328,11 +332,11 @@ msgstr "" "Además de estos métodos, los objetos candado pueden ser utilizados mediante " "la declaración :keyword:`with`, por ejemplo::" -#: ../Doc/library/_thread.rst:205 +#: ../Doc/library/_thread.rst:207 msgid "**Caveats:**" msgstr "**Salvedades:**" -#: ../Doc/library/_thread.rst:209 +#: ../Doc/library/_thread.rst:211 msgid "" "Threads interact strangely with interrupts: the :exc:`KeyboardInterrupt` " "exception will be received by an arbitrary thread. (When the :mod:`signal` " @@ -343,7 +347,7 @@ msgstr "" "módulo :mod:`signal` está disponible, la interrupción siempre se dirige al " "hilo principal." -#: ../Doc/library/_thread.rst:213 +#: ../Doc/library/_thread.rst:215 msgid "" "Calling :func:`sys.exit` or raising the :exc:`SystemExit` exception is " "equivalent to calling :func:`_thread.exit`." @@ -351,7 +355,7 @@ msgstr "" "Invocar a :func:`sys.exit` o lanzar la excepción :exc:`SystemExit` equivale " "a invocar :func:`_thread.exit`." -#: ../Doc/library/_thread.rst:216 +#: ../Doc/library/_thread.rst:218 msgid "" "It is not possible to interrupt the :meth:`acquire` method on a lock --- " "the :exc:`KeyboardInterrupt` exception will happen after the lock has been " @@ -361,7 +365,7 @@ msgstr "" "excepción :exc:`KeyboardInterrupt` tendrá lugar después de que el candado " "haya sido adquirido." -#: ../Doc/library/_thread.rst:219 +#: ../Doc/library/_thread.rst:221 msgid "" "When the main thread exits, it is system defined whether the other threads " "survive. On most systems, they are killed without executing :keyword:" @@ -372,7 +376,7 @@ msgstr "" "cierran inmediatamente (*killed*), sin ejecutar las cláusulas :keyword:" "`try` ... :keyword:`finally` o los destructores del objeto." -#: ../Doc/library/_thread.rst:224 +#: ../Doc/library/_thread.rst:226 msgid "" "When the main thread exits, it does not do any of its usual cleanup (except " "that :keyword:`try` ... :keyword:`finally` clauses are honored), and the " diff --git a/library/aifc.po b/library/aifc.po index b6742a43e8..52a147eadf 100644 --- a/library/aifc.po +++ b/library/aifc.po @@ -1,33 +1,41 @@ # Copyright (C) 2001-2020, Python Software Foundation # This file is distributed under the same license as the Python package. # Maintained by the python-doc-es workteam. -# docs-es@python.org / https://mail.python.org/mailman3/lists/docs-es.python.org/ -# Check https://github.com/python/python-docs-es/blob/3.8/TRANSLATORS to get the list of volunteers +# docs-es@python.org / +# https://mail.python.org/mailman3/lists/docs-es.python.org/ +# Check https://github.com/python/python-docs-es/blob/3.8/TRANSLATORS to get +# the list of volunteers # msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-05-06 11:59-0400\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2020-12-20 21:43-0300\n" +"Last-Translator: \n" +"Language: es\n" "Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" +"Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Last-Translator: \n" -"Language: es\n" -"X-Generator: Poedit 2.4.2\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/library/aifc.rst:2 msgid ":mod:`aifc` --- Read and write AIFF and AIFC files" msgstr ":mod:`aifc` — Lee y escribe archivos AIFF y AIFC" -#: ../Doc/library/aifc.rst:7 +#: ../Doc/library/aifc.rst:8 msgid "**Source code:** :source:`Lib/aifc.py`" msgstr "**Código fuente:** :source:`Lib/aifc.py`" -#: ../Doc/library/aifc.rst:16 +#: ../Doc/library/aifc.rst:19 +msgid "" +"The :mod:`aifc` module is deprecated (see :pep:`PEP 594 <594#aifc>` for " +"details)." +msgstr "" + +#: ../Doc/library/aifc.rst:22 msgid "" "This module provides support for reading and writing AIFF and AIFF-C files. " "AIFF is Audio Interchange File Format, a format for storing digital audio " @@ -40,7 +48,7 @@ msgstr "" "audio digital en un archivo. AIFF-C es una nueva versión del formato que " "incluye la habilidad de comprimir los datos de audio." -#: ../Doc/library/aifc.rst:21 +#: ../Doc/library/aifc.rst:27 msgid "" "Audio files have a number of parameters that describe the audio data. The " "sampling rate or frame rate is the number of times per second the sound is " @@ -59,7 +67,7 @@ msgstr "" "``nchannels * samplesize`` bytes, y un segundo de audio está formado por " "``nchannels * samplesize * framerate`` bytes." -#: ../Doc/library/aifc.rst:29 +#: ../Doc/library/aifc.rst:35 msgid "" "For example, CD quality audio has a sample size of two bytes (16 bits), uses " "two channels (stereo) and has a frame rate of 44,100 frames/second. This " @@ -72,11 +80,11 @@ msgstr "" "4 bytes (2\\*2), y un segundo de audio en esta calidad ocupa 2\\*2\\*44.100 " "bytes (176.400 bytes)." -#: ../Doc/library/aifc.rst:34 +#: ../Doc/library/aifc.rst:40 msgid "Module :mod:`aifc` defines the following function:" msgstr "El módulo :mod:`aifc` define a la siguiente función:" -#: ../Doc/library/aifc.rst:39 +#: ../Doc/library/aifc.rst:45 msgid "" "Open an AIFF or AIFF-C file and return an object instance with methods that " "are described below. The argument *file* is either a string naming a file " @@ -102,11 +110,11 @@ msgstr "" "sentencia :keyword:`with`. Cuando el bloque :keyword:`!with` se complete, se " "invocará al método :meth:`~aifc.close`." -#: ../Doc/library/aifc.rst:50 +#: ../Doc/library/aifc.rst:56 msgid "Support for the :keyword:`with` statement was added." msgstr "Se agregó soporte para las sentencias :keyword:`with`." -#: ../Doc/library/aifc.rst:53 +#: ../Doc/library/aifc.rst:59 msgid "" "Objects returned by :func:`.open` when a file is opened for reading have the " "following methods:" @@ -114,24 +122,24 @@ msgstr "" "Los objetos que retorna :func:`.open` cuando un archivo es abierto para " "lectura contienen los siguientes métodos:" -#: ../Doc/library/aifc.rst:59 +#: ../Doc/library/aifc.rst:65 msgid "Return the number of audio channels (1 for mono, 2 for stereo)." msgstr "Retorna el número de canales de audio (1 para mono, 2 para estéreo)." -#: ../Doc/library/aifc.rst:64 +#: ../Doc/library/aifc.rst:70 msgid "Return the size in bytes of individual samples." msgstr "Retorna el tamaño en bytes de cada muestra." -#: ../Doc/library/aifc.rst:69 +#: ../Doc/library/aifc.rst:75 msgid "Return the sampling rate (number of audio frames per second)." msgstr "" "Retorna la tasa de muestreo (cantidad de fotogramas de audio por segundo)." -#: ../Doc/library/aifc.rst:74 +#: ../Doc/library/aifc.rst:80 msgid "Return the number of audio frames in the file." msgstr "Retorna el número de fotogramas de audio en el archivo." -#: ../Doc/library/aifc.rst:79 +#: ../Doc/library/aifc.rst:85 msgid "" "Return a bytes array of length 4 describing the type of compression used in " "the audio file. For AIFF files, the returned value is ``b'NONE'``." @@ -140,7 +148,7 @@ msgstr "" "usada en el archivo de audio. Para archivos AIFF, el valor que retorna es " "``b’NONE’``." -#: ../Doc/library/aifc.rst:86 +#: ../Doc/library/aifc.rst:92 msgid "" "Return a bytes array convertible to a human-readable description of the type " "of compression used in the audio file. For AIFF files, the returned value " @@ -151,7 +159,7 @@ msgstr "" "valor que retorna es ``b’not compressed’`` (no comprimido)." # ‘output’ lo traduje como ‘salida’. O corresponde usar ‘retorno’? -#: ../Doc/library/aifc.rst:93 +#: ../Doc/library/aifc.rst:99 msgid "" "Returns a :func:`~collections.namedtuple` ``(nchannels, sampwidth, " "framerate, nframes, comptype, compname)``, equivalent to output of the :meth:" @@ -161,7 +169,7 @@ msgstr "" "sampwidth, framerate, nframes, comptype, compname)``, equivalente a la " "salida de los métodos :meth:`get\\*`." -#: ../Doc/library/aifc.rst:100 +#: ../Doc/library/aifc.rst:106 msgid "" "Return a list of markers in the audio file. A marker consists of a tuple of " "three elements. The first is the mark ID (an integer), the second is the " @@ -174,7 +182,7 @@ msgstr "" "en fotogramas, desde el comienzo de los datos (un número entero); el tercero " "es el nombre de la marca (una cadena de caracteres)." -#: ../Doc/library/aifc.rst:108 +#: ../Doc/library/aifc.rst:114 msgid "" "Return the tuple as described in :meth:`getmarkers` for the mark with the " "given *id*." @@ -182,7 +190,7 @@ msgstr "" "Retorna una tupla tal como se describe en :meth:`getmarkers` para la marca " "con el *id* dado." -#: ../Doc/library/aifc.rst:114 +#: ../Doc/library/aifc.rst:120 msgid "" "Read and return the next *nframes* frames from the audio file. The returned " "data is a string containing for each frame the uncompressed samples of all " @@ -192,7 +200,7 @@ msgstr "" "datos los retorna como una cadena de caracteres que contiene, por cada " "fotograma, las muestras sin comprimir de todos los canales." -#: ../Doc/library/aifc.rst:121 +#: ../Doc/library/aifc.rst:127 msgid "" "Rewind the read pointer. The next :meth:`readframes` will start from the " "beginning." @@ -200,15 +208,15 @@ msgstr "" "Rebobina el puntero de lectura. La próxima ejecución de :meth:`readframes` " "comenzará desde el comienzo del archivo." -#: ../Doc/library/aifc.rst:127 +#: ../Doc/library/aifc.rst:133 msgid "Seek to the specified frame number." msgstr "Busca el número de fotograma especificado." -#: ../Doc/library/aifc.rst:132 +#: ../Doc/library/aifc.rst:138 msgid "Return the current frame number." msgstr "Retorna el número de fotograma actual." -#: ../Doc/library/aifc.rst:137 +#: ../Doc/library/aifc.rst:143 msgid "" "Close the AIFF file. After calling this method, the object can no longer be " "used." @@ -216,7 +224,7 @@ msgstr "" "Cierra el archivo AIFF. Después de invocar este método, el objeto no puede " "usarse más." -#: ../Doc/library/aifc.rst:140 +#: ../Doc/library/aifc.rst:146 msgid "" "Objects returned by :func:`.open` when a file is opened for writing have all " "the above methods, except for :meth:`readframes` and :meth:`setpos`. In " @@ -233,7 +241,7 @@ msgstr "" "por primera vez :meth:`writeframes` o :meth:`writeframesraw`, todos los " "parámetros -excepto el número de fotogramas- deben estar completos." -#: ../Doc/library/aifc.rst:150 +#: ../Doc/library/aifc.rst:156 msgid "" "Create an AIFF file. The default is that an AIFF-C file is created, unless " "the name of the file ends in ``'.aiff'`` in which case the default is an " @@ -243,7 +251,7 @@ msgstr "" "nombre del archivo termine en ``'.aiff'``, en cuyo caso se creará un archivo " "AIFF." -#: ../Doc/library/aifc.rst:156 +#: ../Doc/library/aifc.rst:162 msgid "" "Create an AIFF-C file. The default is that an AIFF-C file is created, " "unless the name of the file ends in ``'.aiff'`` in which case the default is " @@ -253,19 +261,19 @@ msgstr "" "excepto que el nombre del archivo termine en ``'.aiff'``, en cuyo caso se " "crea por defecto un archivo AIFF." -#: ../Doc/library/aifc.rst:163 +#: ../Doc/library/aifc.rst:169 msgid "Specify the number of channels in the audio file." msgstr "Especifica el número de canales en el archivo de audio." -#: ../Doc/library/aifc.rst:168 +#: ../Doc/library/aifc.rst:174 msgid "Specify the size in bytes of audio samples." msgstr "Especifica el tamaño en bytes de las muestras de audio." -#: ../Doc/library/aifc.rst:173 +#: ../Doc/library/aifc.rst:179 msgid "Specify the sampling frequency in frames per second." msgstr "Especifica la frecuencia de muestreo en fotogramas por segundo." -#: ../Doc/library/aifc.rst:178 +#: ../Doc/library/aifc.rst:184 msgid "" "Specify the number of frames that are to be written to the audio file. If " "this parameter is not set, or not set correctly, the file needs to support " @@ -275,7 +283,7 @@ msgstr "" "Si este parámetro no es definido, o si no se lo define correctamente, el " "archivo necesitará soporte de búsqueda (*seeking*)." -#: ../Doc/library/aifc.rst:189 +#: ../Doc/library/aifc.rst:195 msgid "" "Specify the compression type. If not specified, the audio data will not be " "compressed. In AIFF files, compression is not possible. The name parameter " @@ -292,7 +300,7 @@ msgstr "" "Actualmente se soportan los siguientes tipos de compresión: ``b'NONE'``, " "``b'ULAW'``, ``b'ALAW'``, ``b'G722'``." -#: ../Doc/library/aifc.rst:199 +#: ../Doc/library/aifc.rst:205 msgid "" "Set all the above parameters at once. The argument is a tuple consisting of " "the various parameters. This means that it is possible to use the result of " @@ -303,7 +311,7 @@ msgstr "" "usar el resultado de una llamada :meth:`getparams` como argumento para :meth:" "`setparams`." -#: ../Doc/library/aifc.rst:206 +#: ../Doc/library/aifc.rst:212 msgid "" "Add a mark with the given id (larger than 0), and the given name at the " "given position. This method can be called at any time before :meth:`close`." @@ -312,7 +320,7 @@ msgstr "" "*name* dado, en la posición *pos* dada. Este método se puede invocar en " "cualquier momento antes de :meth:`close`." -#: ../Doc/library/aifc.rst:212 +#: ../Doc/library/aifc.rst:219 msgid "" "Return the current write position in the output file. Useful in combination " "with :meth:`setmark`." @@ -320,7 +328,7 @@ msgstr "" "Retorna la posición de escritura actual en el archivo de salida. Es útil en " "combinación con :meth:`setmark`." -#: ../Doc/library/aifc.rst:218 +#: ../Doc/library/aifc.rst:225 msgid "" "Write data to the output file. This method can only be called after the " "audio file parameters have been set." @@ -328,11 +336,11 @@ msgstr "" "Escribe los datos al archivo de salida. Este método sólo se puede invocar " "una vez establecidos los parámetros del archivo de audio." -#: ../Doc/library/aifc.rst:221 ../Doc/library/aifc.rst:230 +#: ../Doc/library/aifc.rst:228 ../Doc/library/aifc.rst:237 msgid "Any :term:`bytes-like object` is now accepted." msgstr "Acepta cualquier :term:`bytes-like object`." -#: ../Doc/library/aifc.rst:227 +#: ../Doc/library/aifc.rst:234 msgid "" "Like :meth:`writeframes`, except that the header of the audio file is not " "updated." @@ -340,7 +348,7 @@ msgstr "" "Funciona igual que :meth:`writeframes`, excepto que el encabezado del " "archivo de audio no es actualizado." -#: ../Doc/library/aifc.rst:236 +#: ../Doc/library/aifc.rst:244 msgid "" "Close the AIFF file. The header of the file is updated to reflect the " "actual size of the audio data. After calling this method, the object can no " diff --git a/library/argparse.po b/library/argparse.po index 36e321284e..ed5acf84d7 100644 --- a/library/argparse.po +++ b/library/argparse.po @@ -10,16 +10,16 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-08-07 10:59+0200\n" "Last-Translator: Cristián Maureira-Fredes \n" -"Language-Team: python-doc-es\n" "Language: es\n" +"Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" -"Generated-By: Babel 2.9.1\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/library/argparse.rst:2 msgid "" @@ -47,12 +47,14 @@ msgstr "" "echa un vistazo al :ref:`argparse tutorial `." #: ../Doc/library/argparse.rst:22 +#, fuzzy msgid "" "The :mod:`argparse` module makes it easy to write user-friendly command-line " "interfaces. The program defines what arguments it requires, and :mod:" "`argparse` will figure out how to parse those out of :data:`sys.argv`. The :" -"mod:`argparse` module also automatically generates help and usage messages " -"and issues errors when users give the program invalid arguments." +"mod:`argparse` module also automatically generates help and usage messages. " +"The module will also issue errors when users give the program invalid " +"arguments." msgstr "" "El módulo :mod:`argparse` facilita la escritura de interfaces de línea de " "comandos amigables. El programa define qué argumentos requiere, y :mod:" @@ -61,10 +63,171 @@ msgstr "" "muestra errores cuando los usuarios dan parámetros incorrectos al programa." #: ../Doc/library/argparse.rst:30 +msgid "Core Functionality" +msgstr "" + +#: ../Doc/library/argparse.rst:32 +msgid "" +"The :mod:`argparse` module's support for command-line interfaces is built " +"around an instance of :class:`argparse.ArgumentParser`. It is a container " +"for argument specifications and has options that apply the parser as whole::" +msgstr "" + +#: ../Doc/library/argparse.rst:41 +msgid "" +"The :meth:`ArgumentParser.add_argument` method attaches individual argument " +"specifications to the parser. It supports positional arguments, options " +"that accept values, and on/off flags::" +msgstr "" + +#: ../Doc/library/argparse.rst:50 +msgid "" +"The :meth:`ArgumentParser.parse_args` method runs the parser and places the " +"extracted data in a :class:`argparse.Namespace` object::" +msgstr "" + +#: ../Doc/library/argparse.rst:58 +msgid "Quick Links for add_argument()" +msgstr "" + +#: ../Doc/library/argparse.rst:61 +msgid "Name" +msgstr "" + +#: ../Doc/library/argparse.rst:61 +#, fuzzy +msgid "Description" +msgstr "*description*" + +#: ../Doc/library/argparse.rst:61 +msgid "Values" +msgstr "" + +#: ../Doc/library/argparse.rst:63 +#, fuzzy +msgid "action_" +msgstr "*action*" + +#: ../Doc/library/argparse.rst:63 +msgid "Specify how an argument should be handled" +msgstr "" + +#: ../Doc/library/argparse.rst:63 +msgid "" +"``'store'``, ``'store_const'``, ``'store_true'``, ``'append'``, " +"``'append_const'``, ``'count'``, ``'help'``, ``'version'``" +msgstr "" + +#: ../Doc/library/argparse.rst:64 +#, fuzzy +msgid "choices_" +msgstr "*choices*" + +#: ../Doc/library/argparse.rst:64 +msgid "Limit values to a specific set of choices" +msgstr "" + +#: ../Doc/library/argparse.rst:64 +msgid "" +"``['foo', 'bar']``, ``range(1, 10)``, or :class:`~collections.abc.Container` " +"instance" +msgstr "" + +#: ../Doc/library/argparse.rst:65 +#, fuzzy +msgid "const_" +msgstr "*const*" + +#: ../Doc/library/argparse.rst:65 +msgid "Store a constant value" +msgstr "" + +#: ../Doc/library/argparse.rst:66 +#, fuzzy +msgid "default_" +msgstr "*default*" + +#: ../Doc/library/argparse.rst:66 +msgid "Default value used when an argument is not provided" +msgstr "" + +#: ../Doc/library/argparse.rst:66 +msgid "Defaults to *None*" +msgstr "" + +#: ../Doc/library/argparse.rst:67 +#, fuzzy +msgid "dest_" +msgstr "*dest*" + +#: ../Doc/library/argparse.rst:67 +msgid "Specify the attribute name used in the result namespace" +msgstr "" + +#: ../Doc/library/argparse.rst:68 +#, fuzzy +msgid "help_" +msgstr "*help*" + +#: ../Doc/library/argparse.rst:68 +msgid "Help message for an argument" +msgstr "" + +#: ../Doc/library/argparse.rst:69 +#, fuzzy +msgid "metavar_" +msgstr "*metavar*" + +#: ../Doc/library/argparse.rst:69 +msgid "Alternate display name for the argument as shown in help" +msgstr "" + +#: ../Doc/library/argparse.rst:70 +#, fuzzy +msgid "nargs_" +msgstr "*nargs*" + +#: ../Doc/library/argparse.rst:70 +msgid "Number of times the argument can be used" +msgstr "" + +#: ../Doc/library/argparse.rst:70 +msgid ":class:`int`, ``'?'``, ``'*'``, ``'+'``, or ``argparse.REMAINDER``" +msgstr "" + +#: ../Doc/library/argparse.rst:71 +#, fuzzy +msgid "required_" +msgstr "*required*" + +#: ../Doc/library/argparse.rst:71 +msgid "Indicate whether an argument is required or optional" +msgstr "" + +#: ../Doc/library/argparse.rst:71 +msgid "``True`` or ``False``" +msgstr "" + +#: ../Doc/library/argparse.rst:72 +#, fuzzy +msgid "type_" +msgstr "*type*" + +#: ../Doc/library/argparse.rst:72 +msgid "Automatically convert an argument to the given type" +msgstr "" + +#: ../Doc/library/argparse.rst:72 +msgid "" +":class:`int`, :class:`float`, ``argparse.FileType('w')``, or callable " +"function" +msgstr "" + +#: ../Doc/library/argparse.rst:77 msgid "Example" msgstr "Ejemplo" -#: ../Doc/library/argparse.rst:32 +#: ../Doc/library/argparse.rst:79 msgid "" "The following code is a Python program that takes a list of integers and " "produces either the sum or the max::" @@ -72,16 +235,17 @@ msgstr "" "El siguiente código es un programa Python que toma una lista de números " "enteros y obtiene la suma o el máximo::" -#: ../Doc/library/argparse.rst:47 +#: ../Doc/library/argparse.rst:94 +#, fuzzy msgid "" -"Assuming the Python code above is saved into a file called ``prog.py``, it " -"can be run at the command line and provides useful help messages:" +"Assuming the above Python code is saved into a file called ``prog.py``, it " +"can be run at the command line and it provides useful help messages:" msgstr "" "Asumiendo que el código Python anterior se guarda en un archivo llamado " "``prog.py``, se puede ejecutar en la línea de comandos y proporciona " "mensajes de ayuda útiles:" -#: ../Doc/library/argparse.rst:64 +#: ../Doc/library/argparse.rst:111 msgid "" "When run with the appropriate arguments, it prints either the sum or the max " "of the command-line integers:" @@ -89,19 +253,20 @@ msgstr "" "Cuando se ejecuta con los parámetros apropiados, muestra la suma o el máximo " "de los números enteros de la línea de comandos:" -#: ../Doc/library/argparse.rst:75 -msgid "If invalid arguments are passed in, it will issue an error:" +#: ../Doc/library/argparse.rst:122 +#, fuzzy +msgid "If invalid arguments are passed in, an error will be displayed:" msgstr "Si se pasan argumentos incorrectos, se mostrará un error:" -#: ../Doc/library/argparse.rst:83 +#: ../Doc/library/argparse.rst:130 msgid "The following sections walk you through this example." msgstr "Las siguientes secciones te guiarán a través de este ejemplo." -#: ../Doc/library/argparse.rst:87 +#: ../Doc/library/argparse.rst:134 msgid "Creating a parser" msgstr "Creando un analizador sintáctico (*parser*)" -#: ../Doc/library/argparse.rst:89 +#: ../Doc/library/argparse.rst:136 msgid "" "The first step in using the :mod:`argparse` is creating an :class:" "`ArgumentParser` object::" @@ -109,7 +274,7 @@ msgstr "" "El primer paso para usar :mod:`argparse` es crear un objeto :class:" "`ArgumentParser` ::" -#: ../Doc/library/argparse.rst:94 +#: ../Doc/library/argparse.rst:141 msgid "" "The :class:`ArgumentParser` object will hold all the information necessary " "to parse the command line into Python data types." @@ -117,11 +282,11 @@ msgstr "" "El objeto :class:`ArgumentParser` contendrá toda la información necesaria " "para analizar la línea de comandos con los tipos de datos de Python." -#: ../Doc/library/argparse.rst:99 +#: ../Doc/library/argparse.rst:146 msgid "Adding arguments" msgstr "Añadiendo argumentos" -#: ../Doc/library/argparse.rst:101 +#: ../Doc/library/argparse.rst:148 msgid "" "Filling an :class:`ArgumentParser` with information about program arguments " "is done by making calls to the :meth:`~ArgumentParser.add_argument` method. " @@ -137,13 +302,14 @@ msgstr "" "comandos y convertirlas en objetos. Esta información se almacena y se usa " "cuando se llama a :meth:`~ArgumentParser.parse_args`. Por ejemplo::" -#: ../Doc/library/argparse.rst:113 +#: ../Doc/library/argparse.rst:160 +#, fuzzy msgid "" "Later, calling :meth:`~ArgumentParser.parse_args` will return an object with " "two attributes, ``integers`` and ``accumulate``. The ``integers`` attribute " -"will be a list of one or more ints, and the ``accumulate`` attribute will be " -"either the :func:`sum` function, if ``--sum`` was specified at the command " -"line, or the :func:`max` function if it was not." +"will be a list of one or more integers, and the ``accumulate`` attribute " +"will be either the :func:`sum` function, if ``--sum`` was specified at the " +"command line, or the :func:`max` function if it was not." msgstr "" "Más tarde, llamando a :meth:`~ArgumentParser.parse_args` retornará un objeto " "con dos atributos, ``integers`` y ``accumulate``. El atributo ``integers`` " @@ -151,11 +317,11 @@ msgstr "" "función :func:`sum`, si se especificó ``--sum`` en la línea de comandos, o " "la función :func:`max` si no." -#: ../Doc/library/argparse.rst:121 +#: ../Doc/library/argparse.rst:168 msgid "Parsing arguments" msgstr "Analizando argumentos" -#: ../Doc/library/argparse.rst:123 +#: ../Doc/library/argparse.rst:170 msgid "" ":class:`ArgumentParser` parses arguments through the :meth:`~ArgumentParser." "parse_args` method. This will inspect the command line, convert each " @@ -170,7 +336,7 @@ msgstr "" "objeto :class:`Namespace` se construirá a partir de los atributos analizados " "en la línea de comandos::" -#: ../Doc/library/argparse.rst:132 +#: ../Doc/library/argparse.rst:179 msgid "" "In a script, :meth:`~ArgumentParser.parse_args` will typically be called " "with no arguments, and the :class:`ArgumentParser` will automatically " @@ -180,11 +346,11 @@ msgstr "" "sin argumentos, y la :class:`ArgumentParser` determinará automáticamente los " "argumentos de la línea de comandos de :data:`sys.argv`." -#: ../Doc/library/argparse.rst:138 +#: ../Doc/library/argparse.rst:185 msgid "ArgumentParser objects" msgstr "Objetos *ArgumentParser*" -#: ../Doc/library/argparse.rst:147 +#: ../Doc/library/argparse.rst:194 msgid "" "Create a new :class:`ArgumentParser` object. All parameters should be passed " "as keyword arguments. Each parameter has its own more detailed description " @@ -194,11 +360,13 @@ msgstr "" "pasarse como argumentos de palabra clave. Cada parámetro tiene su propia " "descripción más detallada a continuación, pero en resumen son:" -#: ../Doc/library/argparse.rst:151 -msgid "prog_ - The name of the program (default: ``sys.argv[0]``)" +#: ../Doc/library/argparse.rst:198 +#, fuzzy +msgid "" +"prog_ - The name of the program (default: ``os.path.basename(sys.argv[0])``)" msgstr "prog_ - El nombre del programa (default: ``sys.argv[0]``)" -#: ../Doc/library/argparse.rst:153 +#: ../Doc/library/argparse.rst:201 msgid "" "usage_ - The string describing the program usage (default: generated from " "arguments added to parser)" @@ -206,18 +374,18 @@ msgstr "" "usage_ - La cadena de caracteres que describe el uso del programa (por " "defecto: generado a partir de los argumentos añadidos al analizador)" -#: ../Doc/library/argparse.rst:156 +#: ../Doc/library/argparse.rst:204 msgid "description_ - Text to display before the argument help (default: none)" msgstr "" "description_ - Texto a mostrar antes del argumento ayuda (por defecto: " "ninguno)" -#: ../Doc/library/argparse.rst:158 +#: ../Doc/library/argparse.rst:206 msgid "epilog_ - Text to display after the argument help (default: none)" msgstr "" "epilog_ - Texto a mostrar después del argumento ayuda (por defecto: ninguno)" -#: ../Doc/library/argparse.rst:160 +#: ../Doc/library/argparse.rst:208 msgid "" "parents_ - A list of :class:`ArgumentParser` objects whose arguments should " "also be included" @@ -225,11 +393,11 @@ msgstr "" "parents_ - Una lista de objetos :class:`ArgumentParser` cuyos argumentos " "también deberían ser incluidos" -#: ../Doc/library/argparse.rst:163 +#: ../Doc/library/argparse.rst:211 msgid "formatter_class_ - A class for customizing the help output" msgstr "formatter_class_ - Una clase para personalizar la salida de la ayuda" -#: ../Doc/library/argparse.rst:165 +#: ../Doc/library/argparse.rst:213 msgid "" "prefix_chars_ - The set of characters that prefix optional arguments " "(default: '-')" @@ -237,7 +405,7 @@ msgstr "" "prefix_chars_ - El conjunto de caracteres que preceden a los argumentos " "opcionales (por defecto: ‘-‘)" -#: ../Doc/library/argparse.rst:168 +#: ../Doc/library/argparse.rst:216 msgid "" "fromfile_prefix_chars_ - The set of characters that prefix files from which " "additional arguments should be read (default: ``None``)" @@ -246,7 +414,7 @@ msgstr "" "archivos de los cuales se deberían leer los argumentos adicionales (por " "defecto: ``None``)" -#: ../Doc/library/argparse.rst:171 +#: ../Doc/library/argparse.rst:219 msgid "" "argument_default_ - The global default value for arguments (default: " "``None``)" @@ -254,7 +422,7 @@ msgstr "" "argument_default_ - El valor global por defecto de los argumentos (por " "defecto: ``None``)" -#: ../Doc/library/argparse.rst:174 +#: ../Doc/library/argparse.rst:222 msgid "" "conflict_handler_ - The strategy for resolving conflicting optionals " "(usually unnecessary)" @@ -262,14 +430,14 @@ msgstr "" "conflict_handler_ - La estrategia para resolver los opcionales conflictivos " "(normalmente es innecesaria)" -#: ../Doc/library/argparse.rst:177 +#: ../Doc/library/argparse.rst:225 msgid "" "add_help_ - Add a ``-h/--help`` option to the parser (default: ``True``)" msgstr "" "add_help_ - Añade una opción ``-h/--help`` al analizador (por defecto: " "``True``)" -#: ../Doc/library/argparse.rst:179 +#: ../Doc/library/argparse.rst:227 msgid "" "allow_abbrev_ - Allows long options to be abbreviated if the abbreviation is " "unambiguous. (default: ``True``)" @@ -277,7 +445,7 @@ msgstr "" "allow_abbrev_ - Permite abreviar las opciones largas si la abreviatura es " "inequívoca. (por defecto: ``True``)" -#: ../Doc/library/argparse.rst:182 +#: ../Doc/library/argparse.rst:230 msgid "" "exit_on_error_ - Determines whether or not ArgumentParser exits with error " "info when an error occurs. (default: ``True``)" @@ -285,11 +453,11 @@ msgstr "" "exit_on_error_ - Determina si ArgumentParser sale o no con información de " "error cuando se produce un error. (predeterminado: ``True``)" -#: ../Doc/library/argparse.rst:185 +#: ../Doc/library/argparse.rst:233 msgid "*allow_abbrev* parameter was added." msgstr "se añadió el parámetro *allow_abbrev*." -#: ../Doc/library/argparse.rst:188 +#: ../Doc/library/argparse.rst:236 msgid "" "In previous versions, *allow_abbrev* also disabled grouping of short flags " "such as ``-vv`` to mean ``-v -v``." @@ -297,20 +465,20 @@ msgstr "" "En versiones anteriores, *allow_abbrev* también deshabilitaba la agrupación " "de banderas (*flags*) cortas como ``-vv`` para que sea ``-v -v``." -#: ../Doc/library/argparse.rst:192 +#: ../Doc/library/argparse.rst:240 msgid "*exit_on_error* parameter was added." msgstr "Se agregó el parámetro *exit_on_error*." -#: ../Doc/library/argparse.rst:195 ../Doc/library/argparse.rst:715 +#: ../Doc/library/argparse.rst:243 ../Doc/library/argparse.rst:769 msgid "The following sections describe how each of these are used." msgstr "" "En las siguientes secciones se describe cómo se utiliza cada una de ellas." -#: ../Doc/library/argparse.rst:199 +#: ../Doc/library/argparse.rst:249 msgid "prog" msgstr "*prog*" -#: ../Doc/library/argparse.rst:201 +#: ../Doc/library/argparse.rst:251 msgid "" "By default, :class:`ArgumentParser` objects use ``sys.argv[0]`` to determine " "how to display the name of the program in help messages. This default is " @@ -325,7 +493,7 @@ msgstr "" "la línea de comandos. Por ejemplo, considera un archivo llamado ``myprogram." "py`` con el siguiente código::" -#: ../Doc/library/argparse.rst:212 +#: ../Doc/library/argparse.rst:262 msgid "" "The help for this program will display ``myprogram.py`` as the program name " "(regardless of where the program was invoked from):" @@ -333,7 +501,7 @@ msgstr "" "La ayuda para este programa mostrará ``myprogram.py`` como el nombre del " "programa (sin importar desde dónde se haya invocado el programa):" -#: ../Doc/library/argparse.rst:231 +#: ../Doc/library/argparse.rst:281 msgid "" "To change this default behavior, another value can be supplied using the " "``prog=`` argument to :class:`ArgumentParser`::" @@ -341,7 +509,7 @@ msgstr "" "Para cambiar este comportamiento por defecto, se puede proporcionar otro " "valor usando el argumento``prog=`` para :class:`ArgumentParser`::" -#: ../Doc/library/argparse.rst:241 +#: ../Doc/library/argparse.rst:291 #, python-format msgid "" "Note that the program name, whether determined from ``sys.argv[0]`` or from " @@ -352,11 +520,11 @@ msgstr "" "``sys.argv[0]`` o del argumento ``prog=`` , está disponible para los " "mensajes de ayuda usando el especificador de formato ``%(prog)s``." -#: ../Doc/library/argparse.rst:258 +#: ../Doc/library/argparse.rst:308 msgid "usage" msgstr "uso" -#: ../Doc/library/argparse.rst:260 +#: ../Doc/library/argparse.rst:310 msgid "" "By default, :class:`ArgumentParser` calculates the usage message from the " "arguments it contains::" @@ -364,14 +532,14 @@ msgstr "" "Por defecto, :class:`ArgumentParser` determina el mensaje de uso a partir de " "los argumentos que contiene::" -#: ../Doc/library/argparse.rst:276 +#: ../Doc/library/argparse.rst:326 msgid "" "The default message can be overridden with the ``usage=`` keyword argument::" msgstr "" "El mensaje por defecto puede ser sustituido con el argumento de palabra " "clave ``usage=``::" -#: ../Doc/library/argparse.rst:291 +#: ../Doc/library/argparse.rst:341 #, python-format msgid "" "The ``%(prog)s`` format specifier is available to fill in the program name " @@ -380,11 +548,11 @@ msgstr "" "El especificador de formato ``%(prog)s`` está preparado para introducir el " "nombre del programa en los mensajes de ayuda." -#: ../Doc/library/argparse.rst:296 +#: ../Doc/library/argparse.rst:348 msgid "description" msgstr "*description*" -#: ../Doc/library/argparse.rst:298 +#: ../Doc/library/argparse.rst:350 msgid "" "Most calls to the :class:`ArgumentParser` constructor will use the " "``description=`` keyword argument. This argument gives a brief description " @@ -399,7 +567,7 @@ msgstr "" "(*usage*) de la línea de comandos y los mensajes de ayuda para los distintos " "argumentos::" -#: ../Doc/library/argparse.rst:313 +#: ../Doc/library/argparse.rst:365 msgid "" "By default, the description will be line-wrapped so that it fits within the " "given space. To change this behavior, see the formatter_class_ argument." @@ -408,11 +576,11 @@ msgstr "" "espacio dado. Para cambiar este comportamiento, revisa el argumento " "formatter_class_." -#: ../Doc/library/argparse.rst:318 +#: ../Doc/library/argparse.rst:370 msgid "epilog" msgstr "*epilog*" -#: ../Doc/library/argparse.rst:320 +#: ../Doc/library/argparse.rst:372 msgid "" "Some programs like to display additional description of the program after " "the description of the arguments. Such text can be specified using the " @@ -422,7 +590,7 @@ msgstr "" "después de la descripción de los argumentos. Dicho texto puede ser " "especificado usando el argumento ``epilog=`` para :class:`ArgumentParser`::" -#: ../Doc/library/argparse.rst:337 +#: ../Doc/library/argparse.rst:389 msgid "" "As with the description_ argument, the ``epilog=`` text is by default line-" "wrapped, but this behavior can be adjusted with the formatter_class_ " @@ -432,11 +600,11 @@ msgstr "" "defecto ajustado a una línea, pero este comportamiento puede ser modificado " "con el argumento formatter_class_ para :class:`ArgumentParser`." -#: ../Doc/library/argparse.rst:343 +#: ../Doc/library/argparse.rst:395 msgid "parents" msgstr "*parents*" -#: ../Doc/library/argparse.rst:345 +#: ../Doc/library/argparse.rst:397 msgid "" "Sometimes, several parsers share a common set of arguments. Rather than " "repeating the definitions of these arguments, a single parser with all the " @@ -454,7 +622,7 @@ msgstr "" "de posición y de opción de éstos, y añade estas acciones al objeto :class:" "`ArgumentParser` que se está construyendo::" -#: ../Doc/library/argparse.rst:365 +#: ../Doc/library/argparse.rst:417 msgid "" "Note that most parent parsers will specify ``add_help=False``. Otherwise, " "the :class:`ArgumentParser` will see two ``-h/--help`` options (one in the " @@ -465,7 +633,7 @@ msgstr "" "opciones ``-h/—help`` (una para el padre y otra para el hijo) y generará un " "error." -#: ../Doc/library/argparse.rst:370 +#: ../Doc/library/argparse.rst:422 msgid "" "You must fully initialize the parsers before passing them via ``parents=``. " "If you change the parent parsers after the child parser, those changes will " @@ -475,11 +643,11 @@ msgstr "" "de ``parents=``. Si cambias los analizadores padre después del analizador " "hijo, esos cambios no se reflejarán en el hijo." -#: ../Doc/library/argparse.rst:376 +#: ../Doc/library/argparse.rst:430 msgid "formatter_class" msgstr "*formatter_class*" -#: ../Doc/library/argparse.rst:378 +#: ../Doc/library/argparse.rst:432 msgid "" ":class:`ArgumentParser` objects allow the help formatting to be customized " "by specifying an alternate formatting class. Currently, there are four such " @@ -489,7 +657,7 @@ msgstr "" "ayuda especificando una clase de formato alternativa. Actualmente, hay " "cuatro clases de este tipo:" -#: ../Doc/library/argparse.rst:387 +#: ../Doc/library/argparse.rst:441 msgid "" ":class:`RawDescriptionHelpFormatter` and :class:`RawTextHelpFormatter` give " "more control over how textual descriptions are displayed. By default, :class:" @@ -501,7 +669,7 @@ msgstr "" "objetos :class:`ArgumentParser` ajustan a la línea los textos de " "description_ y epilog_ en los mensajes de ayuda de la línea de comandos::" -#: ../Doc/library/argparse.rst:412 +#: ../Doc/library/argparse.rst:466 msgid "" "Passing :class:`RawDescriptionHelpFormatter` as ``formatter_class=`` " "indicates that description_ and epilog_ are already correctly formatted and " @@ -511,7 +679,7 @@ msgstr "" "que description_ y epilog_ ya tienen el formato correcto y no deben ser " "ajustados a la línea::" -#: ../Doc/library/argparse.rst:438 +#: ../Doc/library/argparse.rst:492 msgid "" ":class:`RawTextHelpFormatter` maintains whitespace for all sorts of help " "text, including argument descriptions. However, multiple new lines are " @@ -523,7 +691,7 @@ msgstr "" "líneas nuevas son reemplazadas por una sola. Si deseas conservar varias " "líneas en blanco, añade espacios entre las nuevas líneas." -#: ../Doc/library/argparse.rst:443 +#: ../Doc/library/argparse.rst:497 msgid "" ":class:`ArgumentDefaultsHelpFormatter` automatically adds information about " "default values to each of the argument help messages::" @@ -532,7 +700,7 @@ msgstr "" "sobre los valores por defecto a cada uno de los mensajes de ayuda de los " "argumentos::" -#: ../Doc/library/argparse.rst:461 +#: ../Doc/library/argparse.rst:515 msgid "" ":class:`MetavarTypeHelpFormatter` uses the name of the type_ argument for " "each argument as the display name for its values (rather than using the " @@ -542,11 +710,11 @@ msgstr "" "cada argumento como el nombre a mostrar para sus valores (en lugar de " "utilizar dest_ como lo hace el formato habitual)::" -#: ../Doc/library/argparse.rst:482 +#: ../Doc/library/argparse.rst:536 msgid "prefix_chars" msgstr "*prefix_chars*" -#: ../Doc/library/argparse.rst:484 +#: ../Doc/library/argparse.rst:538 msgid "" "Most command-line options will use ``-`` as the prefix, e.g. ``-f/--foo``. " "Parsers that need to support different or additional prefix characters, e.g. " @@ -559,7 +727,7 @@ msgstr "" "``+f`` o ``/foo``, pueden especificarlos usando el argumento " "``prefix_chars=`` para el constructor *ArgumentParser*::" -#: ../Doc/library/argparse.rst:496 +#: ../Doc/library/argparse.rst:550 msgid "" "The ``prefix_chars=`` argument defaults to ``'-'``. Supplying a set of " "characters that does not include ``-`` will cause ``-f/--foo`` options to be " @@ -569,18 +737,19 @@ msgstr "" "Proporcionar un conjunto de caracteres que no incluya ``-`` causará que las " "opciones ``-f/--foo`` no sean inhabilitadas." -#: ../Doc/library/argparse.rst:502 +#: ../Doc/library/argparse.rst:556 msgid "fromfile_prefix_chars" msgstr "*fromfile_prefix_chars*" -#: ../Doc/library/argparse.rst:504 +#: ../Doc/library/argparse.rst:558 +#, fuzzy msgid "" -"Sometimes, for example when dealing with a particularly long argument lists, " -"it may make sense to keep the list of arguments in a file rather than typing " -"it out at the command line. If the ``fromfile_prefix_chars=`` argument is " -"given to the :class:`ArgumentParser` constructor, then arguments that start " -"with any of the specified characters will be treated as files, and will be " -"replaced by the arguments they contain. For example::" +"Sometimes, when dealing with a particularly long argument list, it may make " +"sense to keep the list of arguments in a file rather than typing it out at " +"the command line. If the ``fromfile_prefix_chars=`` argument is given to " +"the :class:`ArgumentParser` constructor, then arguments that start with any " +"of the specified characters will be treated as files, and will be replaced " +"by the arguments they contain. For example::" msgstr "" "A veces, por ejemplo, cuando se trata de una lista de argumentos " "particularmente larga, puede tener sentido mantener la lista de argumentos " @@ -590,7 +759,7 @@ msgstr "" "caracteres especificados se tratarán como archivos, y serán reemplazados por " "los argumentos que contienen. Por ejemplo::" -#: ../Doc/library/argparse.rst:518 +#: ../Doc/library/argparse.rst:572 msgid "" "Arguments read from a file must by default be one per line (but see also :" "meth:`~ArgumentParser.convert_arg_line_to_args`) and are treated as if they " @@ -606,7 +775,7 @@ msgstr "" "la expresión ``[‘-f’, ‘foo’, ‘@args.txt’]`` se considera equivalente a la " "expresión ``[‘-f’, ‘foo’, ‘-f’, ‘bar’]``." -#: ../Doc/library/argparse.rst:524 +#: ../Doc/library/argparse.rst:578 msgid "" "The ``fromfile_prefix_chars=`` argument defaults to ``None``, meaning that " "arguments will never be treated as file references." @@ -615,11 +784,11 @@ msgstr "" "significa que los argumentos nunca serán tratados como referencias de " "archivos." -#: ../Doc/library/argparse.rst:529 +#: ../Doc/library/argparse.rst:583 msgid "argument_default" msgstr "*argument_default*" -#: ../Doc/library/argparse.rst:531 +#: ../Doc/library/argparse.rst:585 msgid "" "Generally, argument defaults are specified either by passing a default to :" "meth:`~ArgumentParser.add_argument` or by calling the :meth:`~ArgumentParser." @@ -641,11 +810,11 @@ msgstr "" "`~ArgumentParser.parse_args` , proporcionamos el argumento " "``argument_default=SUPPRESS``::" -#: ../Doc/library/argparse.rst:551 +#: ../Doc/library/argparse.rst:605 msgid "allow_abbrev" msgstr "*allow_abbrev*" -#: ../Doc/library/argparse.rst:553 +#: ../Doc/library/argparse.rst:607 msgid "" "Normally, when you pass an argument list to the :meth:`~ArgumentParser." "parse_args` method of an :class:`ArgumentParser`, it :ref:`recognizes " @@ -655,17 +824,17 @@ msgstr "" "`~ArgumentParser.parse_args` de un :class:`ArgumentParser`, :ref:`reconoce " "las abreviaturas ` de las opciones largas." -#: ../Doc/library/argparse.rst:557 +#: ../Doc/library/argparse.rst:611 msgid "This feature can be disabled by setting ``allow_abbrev`` to ``False``::" msgstr "" "Esta característica puede ser desactivada poniendo ``allow_abbrev`` a " "``False``::" -#: ../Doc/library/argparse.rst:570 +#: ../Doc/library/argparse.rst:624 msgid "conflict_handler" msgstr "*conflict_handler*" -#: ../Doc/library/argparse.rst:572 +#: ../Doc/library/argparse.rst:626 msgid "" ":class:`ArgumentParser` objects do not allow two actions with the same " "option string. By default, :class:`ArgumentParser` objects raise an " @@ -677,7 +846,7 @@ msgstr "" "`ArgumentParser` lanzan una excepción si se intenta crear un argumento con " "una cadena de caracteres de opción que ya está en uso::" -#: ../Doc/library/argparse.rst:584 +#: ../Doc/library/argparse.rst:638 msgid "" "Sometimes (e.g. when using parents_) it may be useful to simply override any " "older arguments with the same option string. To get this behavior, the " @@ -689,7 +858,7 @@ msgstr "" "opción. Para lograr este comportamiento, se puede suministrar el valor " "``'resolve'`` al argumento ``conflict_handler=`` de :class:`ArgumentParser`::" -#: ../Doc/library/argparse.rst:600 +#: ../Doc/library/argparse.rst:654 msgid "" "Note that :class:`ArgumentParser` objects only remove an action if all of " "its option strings are overridden. So, in the example above, the old ``-f/--" @@ -702,11 +871,11 @@ msgstr "" "acción``-f``, porque sólo la cadena de caracteres de opción ``--foo`` fue " "anulada." -#: ../Doc/library/argparse.rst:607 +#: ../Doc/library/argparse.rst:661 msgid "add_help" msgstr "*add_help*" -#: ../Doc/library/argparse.rst:609 +#: ../Doc/library/argparse.rst:663 msgid "" "By default, ArgumentParser objects add an option which simply displays the " "parser's help message. For example, consider a file named ``myprogram.py`` " @@ -716,7 +885,7 @@ msgstr "" "muestra el mensaje de ayuda del analizador. Por ejemplo, considera un " "archivo llamado ``myprogram.py`` que contiene el siguiente código::" -#: ../Doc/library/argparse.rst:618 +#: ../Doc/library/argparse.rst:672 msgid "" "If ``-h`` or ``--help`` is supplied at the command line, the ArgumentParser " "help will be printed:" @@ -724,7 +893,7 @@ msgstr "" "Si ``-h`` o ``--help`` se indica en la línea de comandos, se imprimirá la " "ayuda de *ArgumentParser*:" -#: ../Doc/library/argparse.rst:630 +#: ../Doc/library/argparse.rst:684 msgid "" "Occasionally, it may be useful to disable the addition of this help option. " "This can be achieved by passing ``False`` as the ``add_help=`` argument to :" @@ -734,7 +903,7 @@ msgstr "" "ayuda. Esto se puede lograr pasando ``False`` como argumento de " "``add_help=`` a :class:`ArgumentParser`::" -#: ../Doc/library/argparse.rst:642 +#: ../Doc/library/argparse.rst:696 msgid "" "The help option is typically ``-h/--help``. The exception to this is if the " "``prefix_chars=`` is specified and does not include ``-``, in which case ``-" @@ -746,11 +915,11 @@ msgstr "" "``--help`` no son opciones válidas. En este caso, el primer carácter en " "``prefix_chars`` se utiliza para preceder a las opciones de ayuda::" -#: ../Doc/library/argparse.rst:657 +#: ../Doc/library/argparse.rst:711 msgid "exit_on_error" msgstr "exit_on_error" -#: ../Doc/library/argparse.rst:659 +#: ../Doc/library/argparse.rst:713 msgid "" "Normally, when you pass an invalid argument list to the :meth:" "`~ArgumentParser.parse_args` method of an :class:`ArgumentParser`, it will " @@ -760,7 +929,7 @@ msgstr "" "`~ArgumentParser.parse_args` de un :class:`ArgumentParser`, saldrá con " "información de error." -#: ../Doc/library/argparse.rst:662 +#: ../Doc/library/argparse.rst:716 msgid "" "If the user would like to catch errors manually, the feature can be enabled " "by setting ``exit_on_error`` to ``False``::" @@ -768,11 +937,11 @@ msgstr "" "Si el usuario desea detectar errores manualmente, la función se puede " "habilitar configurando ``exit_on_error`` en ``False`` ::" -#: ../Doc/library/argparse.rst:679 +#: ../Doc/library/argparse.rst:733 msgid "The add_argument() method" msgstr "El método *add_argument()*" -#: ../Doc/library/argparse.rst:685 +#: ../Doc/library/argparse.rst:739 msgid "" "Define how a single command-line argument should be parsed. Each parameter " "has its own more detailed description below, but in short they are:" @@ -781,7 +950,7 @@ msgstr "" "comandos. Cada parámetro tiene su propia descripción más detallada a " "continuación, pero en resumen son::" -#: ../Doc/library/argparse.rst:688 +#: ../Doc/library/argparse.rst:742 msgid "" "`name or flags`_ - Either a name or a list of option strings, e.g. ``foo`` " "or ``-f, --foo``." @@ -789,7 +958,7 @@ msgstr "" "`name or flags`_ - Ya sea un nombre o una lista de cadena de caracteres de " "opción, e.g. ``foo`` o ``-f, --foo``." -#: ../Doc/library/argparse.rst:691 +#: ../Doc/library/argparse.rst:745 msgid "" "action_ - The basic type of action to be taken when this argument is " "encountered at the command line." @@ -797,19 +966,19 @@ msgstr "" "action_ - El tipo básico de acción a tomar cuando este argumento se " "encuentra en la línea de comandos." -#: ../Doc/library/argparse.rst:694 +#: ../Doc/library/argparse.rst:748 msgid "nargs_ - The number of command-line arguments that should be consumed." msgstr "" "nargs_ - El número de argumentos de la línea de comandos que deben ser " "consumidos." -#: ../Doc/library/argparse.rst:696 +#: ../Doc/library/argparse.rst:750 msgid "" "const_ - A constant value required by some action_ and nargs_ selections." msgstr "" "const_ - Un valor fijo requerido por algunas selecciones de action_ y nargs_." -#: ../Doc/library/argparse.rst:698 +#: ../Doc/library/argparse.rst:752 msgid "" "default_ - The value produced if the argument is absent from the command " "line and if it is absent from the namespace object." @@ -817,17 +986,17 @@ msgstr "" "default_ - El valor producido si el argumento está ausente en la línea de " "comando y si está ausente en el objeto de espacio de nombres." -#: ../Doc/library/argparse.rst:701 +#: ../Doc/library/argparse.rst:755 msgid "" "type_ - The type to which the command-line argument should be converted." msgstr "" "type_ - El tipo al que debe convertirse el argumento de la línea de comandos." -#: ../Doc/library/argparse.rst:703 +#: ../Doc/library/argparse.rst:757 msgid "choices_ - A container of the allowable values for the argument." msgstr "choices_ - Un contenedor con los valores permitidos para el argumento." -#: ../Doc/library/argparse.rst:705 +#: ../Doc/library/argparse.rst:759 msgid "" "required_ - Whether or not the command-line option may be omitted (optionals " "only)." @@ -835,15 +1004,15 @@ msgstr "" "required_ - Si se puede omitir o no la opción de la línea de comandos (sólo " "opcionales)." -#: ../Doc/library/argparse.rst:708 +#: ../Doc/library/argparse.rst:762 msgid "help_ - A brief description of what the argument does." msgstr "help_ - Una breve descripción de lo que hace el argumento." -#: ../Doc/library/argparse.rst:710 +#: ../Doc/library/argparse.rst:764 msgid "metavar_ - A name for the argument in usage messages." msgstr "metavar_ - Un nombre para el argumento en los mensajes de uso." -#: ../Doc/library/argparse.rst:712 +#: ../Doc/library/argparse.rst:766 msgid "" "dest_ - The name of the attribute to be added to the object returned by :" "meth:`parse_args`." @@ -851,18 +1020,18 @@ msgstr "" "dest_ - El nombre del atributo que será añadido al objeto retornado por :" "meth:`parse_args`." -#: ../Doc/library/argparse.rst:719 +#: ../Doc/library/argparse.rst:775 msgid "name or flags" msgstr "*name or flags*" -#: ../Doc/library/argparse.rst:721 +#: ../Doc/library/argparse.rst:777 +#, fuzzy msgid "" "The :meth:`~ArgumentParser.add_argument` method must know whether an " "optional argument, like ``-f`` or ``--foo``, or a positional argument, like " "a list of filenames, is expected. The first arguments passed to :meth:" "`~ArgumentParser.add_argument` must therefore be either a series of flags, " -"or a simple argument name. For example, an optional argument could be " -"created like::" +"or a simple argument name." msgstr "" "El método :meth:`~ArgumentParser.add_argument` debe saber si se espera un " "argumento opcional, como ``-f`` o ``--foo``, o un argumento posicional, como " @@ -871,11 +1040,16 @@ msgstr "" "indicadores (*flags*), o un simple nombre de argumento (*name*). Por " "ejemplo, se puede crear un argumento opcional como::" -#: ../Doc/library/argparse.rst:730 +#: ../Doc/library/argparse.rst:783 +#, fuzzy +msgid "For example, an optional argument could be created like::" +msgstr "mientras que un argumento posicional podría ser creado como::" + +#: ../Doc/library/argparse.rst:787 msgid "while a positional argument could be created like::" msgstr "mientras que un argumento posicional podría ser creado como::" -#: ../Doc/library/argparse.rst:734 +#: ../Doc/library/argparse.rst:791 msgid "" "When :meth:`~ArgumentParser.parse_args` is called, optional arguments will " "be identified by the ``-`` prefix, and the remaining arguments will be " @@ -885,11 +1059,11 @@ msgstr "" "opcionales serán identificados por el prefijo ``-``, y el resto de los " "argumentos serán asumidos como posicionales::" -#: ../Doc/library/argparse.rst:751 +#: ../Doc/library/argparse.rst:810 msgid "action" msgstr "*action*" -#: ../Doc/library/argparse.rst:753 +#: ../Doc/library/argparse.rst:812 msgid "" ":class:`ArgumentParser` objects associate command-line arguments with " "actions. These actions can do just about anything with the command-line " @@ -906,7 +1080,7 @@ msgstr "" "especifica cómo deben ser manejados los argumentos de la línea de comandos. " "Las acciones proporcionadas son:" -#: ../Doc/library/argparse.rst:759 +#: ../Doc/library/argparse.rst:818 msgid "" "``'store'`` - This just stores the argument's value. This is the default " "action. For example::" @@ -914,18 +1088,20 @@ msgstr "" "``'store'`` - Esta sólo almacena el valor del argumento. Esta es la acción " "por defecto. Por ejemplo::" -#: ../Doc/library/argparse.rst:767 +#: ../Doc/library/argparse.rst:826 +#, fuzzy msgid "" "``'store_const'`` - This stores the value specified by the const_ keyword " -"argument. The ``'store_const'`` action is most commonly used with optional " -"arguments that specify some sort of flag. For example::" +"argument; note that the const_ keyword argument defaults to ``None``. The " +"``'store_const'`` action is most commonly used with optional arguments that " +"specify some sort of flag. For example::" msgstr "" "``'store_const'`` - Esta almacena el valor especificado por el argumento de " "palabra clave const_ . La acción ``'store_const'`` se usa más comúnmente con " "argumentos opcionales que especifican algún tipo de indicador (*flag*). Por " "ejemplo::" -#: ../Doc/library/argparse.rst:776 +#: ../Doc/library/argparse.rst:836 msgid "" "``'store_true'`` and ``'store_false'`` - These are special cases of " "``'store_const'`` used for storing the values ``True`` and ``False`` " @@ -937,31 +1113,29 @@ msgstr "" "respectivamente. Además, crean valores por defecto de ``False`` y ``True`` " "respectivamente. Por ejemplo::" -#: ../Doc/library/argparse.rst:788 +#: ../Doc/library/argparse.rst:848 +#, fuzzy msgid "" "``'append'`` - This stores a list, and appends each argument value to the " -"list. This is useful to allow an option to be specified multiple times. " -"Example usage::" +"list. It is useful to allow an option to be specified multiple times. If the " +"default value is non-empty, the default elements will be present in the " +"parsed value for the option, with any values from the command line appended " +"after those default values. Example usage::" msgstr "" "``'append'`` - Esta almacena una lista, y añade cada valor del argumento a " "la lista. Esto es útil para permitir que una opción sea especificada varias " "veces. Ejemplo de uso::" -#: ../Doc/library/argparse.rst:797 +#: ../Doc/library/argparse.rst:859 msgid "" "``'append_const'`` - This stores a list, and appends the value specified by " -"the const_ keyword argument to the list. (Note that the const_ keyword " -"argument defaults to ``None``.) The ``'append_const'`` action is typically " +"the const_ keyword argument to the list; note that the const_ keyword " +"argument defaults to ``None``. The ``'append_const'`` action is typically " "useful when multiple arguments need to store constants to the same list. For " "example::" msgstr "" -"``'append_const'`` - Esta almacena una lista, y añade el valor especificado " -"por el argumento de palabra clave const_ a la lista. (Nótese que el " -"argumento de palabra clave const_ por defecto es ``None``.) La acción " -"``'append_const'`` es útil típicamente cuando múltiples argumentos necesitan " -"almacenar constantes a la misma lista. Por ejemplo::" -#: ../Doc/library/argparse.rst:809 +#: ../Doc/library/argparse.rst:871 msgid "" "``'count'`` - This counts the number of times a keyword argument occurs. For " "example, this is useful for increasing verbosity levels::" @@ -970,13 +1144,13 @@ msgstr "" "clave aparece. Por ejemplo, esto es útil para incrementar los niveles de " "detalle::" -#: ../Doc/library/argparse.rst:817 +#: ../Doc/library/argparse.rst:879 msgid "Note, the *default* will be ``None`` unless explicitly set to *0*." msgstr "" "Observa, *default* (el valor por defecto) será ``None`` a menos que " "explícitamente se establezca como *0*." -#: ../Doc/library/argparse.rst:819 +#: ../Doc/library/argparse.rst:881 msgid "" "``'help'`` - This prints a complete help message for all the options in the " "current parser and then exits. By default a help action is automatically " @@ -988,7 +1162,7 @@ msgstr "" "acción de ayuda automáticamente al analizador. Ver :class:`ArgumentParser` " "para detalles de cómo se genera la salida." -#: ../Doc/library/argparse.rst:824 +#: ../Doc/library/argparse.rst:886 msgid "" "``'version'`` - This expects a ``version=`` keyword argument in the :meth:" "`~ArgumentParser.add_argument` call, and prints version information and " @@ -998,7 +1172,7 @@ msgstr "" "llamada :meth:`~ArgumentParser.add_argument`, e imprime la información de la " "versión y finaliza cuando es invocada::" -#: ../Doc/library/argparse.rst:834 +#: ../Doc/library/argparse.rst:896 msgid "" "``'extend'`` - This stores a list, and extends each argument value to the " "list. Example usage::" @@ -1006,7 +1180,7 @@ msgstr "" "``’extend’`` - Esta almacena una lista, y extiende cada valor del argumento " "a la lista. Ejemplo de uso::" -#: ../Doc/library/argparse.rst:845 +#: ../Doc/library/argparse.rst:907 msgid "" "You may also specify an arbitrary action by passing an Action subclass or " "other object that implements the same interface. The " @@ -1018,7 +1192,7 @@ msgstr "" "``BooleanOptionalAction`` está disponible en ``argparse`` y agrega soporte " "para acciones booleanas como ``--foo`` y ``--no-foo``:" -#: ../Doc/library/argparse.rst:858 +#: ../Doc/library/argparse.rst:920 msgid "" "The recommended way to create a custom action is to extend :class:`Action`, " "overriding the ``__call__`` method and optionally the ``__init__`` and " @@ -1028,19 +1202,19 @@ msgstr "" "`Action`, anulando el método ``__call__`` y, opcionalmente, los métodos " "``__init__`` y ``format_usage``." -#: ../Doc/library/argparse.rst:862 +#: ../Doc/library/argparse.rst:924 msgid "An example of a custom action::" msgstr "Un ejemplo de una acción personalizada::" -#: ../Doc/library/argparse.rst:882 +#: ../Doc/library/argparse.rst:944 msgid "For more details, see :class:`Action`." msgstr "Para más detalles, ver :class:`Action`." -#: ../Doc/library/argparse.rst:885 +#: ../Doc/library/argparse.rst:950 msgid "nargs" msgstr "*nargs*" -#: ../Doc/library/argparse.rst:887 +#: ../Doc/library/argparse.rst:952 msgid "" "ArgumentParser objects usually associate a single command-line argument with " "a single action to be taken. The ``nargs`` keyword argument associates a " @@ -1052,7 +1226,7 @@ msgstr "" "``nargs`` asocia un número diferente de argumentos de línea de comandos con " "una sola acción. Los valores admitidos son:" -#: ../Doc/library/argparse.rst:892 +#: ../Doc/library/argparse.rst:957 msgid "" "``N`` (an integer). ``N`` arguments from the command line will be gathered " "together into a list. For example::" @@ -1060,7 +1234,7 @@ msgstr "" "``N`` (un entero). ``N`` argumentos de la línea de comandos se agruparán en " "una lista. Por ejemplo::" -#: ../Doc/library/argparse.rst:901 +#: ../Doc/library/argparse.rst:966 msgid "" "Note that ``nargs=1`` produces a list of one item. This is different from " "the default, in which the item is produced by itself." @@ -1069,7 +1243,7 @@ msgstr "" "diferente del valor por defecto, en el que el elemento se produce por sí " "mismo." -#: ../Doc/library/argparse.rst:906 +#: ../Doc/library/argparse.rst:971 msgid "" "``'?'``. One argument will be consumed from the command line if possible, " "and produced as a single item. If no command-line argument is present, the " @@ -1086,7 +1260,7 @@ msgstr "" "comandos. En este caso se obtendrá el valor de const_. Algunos ejemplos para " "ilustrar esto::" -#: ../Doc/library/argparse.rst:923 +#: ../Doc/library/argparse.rst:988 msgid "" "One of the more common uses of ``nargs='?'`` is to allow optional input and " "output files::" @@ -1094,7 +1268,7 @@ msgstr "" "Uno de los usos más comunes de ``nargs='?'`` es permitir archivos de entrada " "y salida opcionales::" -#: ../Doc/library/argparse.rst:940 +#: ../Doc/library/argparse.rst:1005 msgid "" "``'*'``. All command-line arguments present are gathered into a list. Note " "that it generally doesn't make much sense to have more than one positional " @@ -1106,7 +1280,7 @@ msgstr "" "más de un argumento posicional con ``nargs=‘*’``, pero es posible tener " "múltiples argumentos opcionales con ``nargs=‘*’``. Por ejemplo::" -#: ../Doc/library/argparse.rst:954 +#: ../Doc/library/argparse.rst:1019 msgid "" "``'+'``. Just like ``'*'``, all command-line args present are gathered into " "a list. Additionally, an error message will be generated if there wasn't at " @@ -1116,7 +1290,7 @@ msgstr "" "se recogen en una lista. Además, se generará un mensaje de error si no había " "al menos un argumento presente en la línea de comandos. Por ejemplo::" -#: ../Doc/library/argparse.rst:966 +#: ../Doc/library/argparse.rst:1031 msgid "" "If the ``nargs`` keyword argument is not provided, the number of arguments " "consumed is determined by the action_. Generally this means a single " @@ -1128,11 +1302,11 @@ msgstr "" "que se consumirá un único argumento de línea de comandos y se obtendrá un " "único elemento (no una lista)." -#: ../Doc/library/argparse.rst:972 +#: ../Doc/library/argparse.rst:1039 msgid "const" msgstr "*const*" -#: ../Doc/library/argparse.rst:974 +#: ../Doc/library/argparse.rst:1041 msgid "" "The ``const`` argument of :meth:`~ArgumentParser.add_argument` is used to " "hold constant values that are not read from the command line but are " @@ -1144,26 +1318,30 @@ msgstr "" "que son necesarios para las diversas acciones de :class:`ArgumentParser`. " "Los dos usos más comunes son:" -#: ../Doc/library/argparse.rst:978 +#: ../Doc/library/argparse.rst:1045 +#, fuzzy msgid "" "When :meth:`~ArgumentParser.add_argument` is called with " "``action='store_const'`` or ``action='append_const'``. These actions add " "the ``const`` value to one of the attributes of the object returned by :meth:" -"`~ArgumentParser.parse_args`. See the action_ description for examples." +"`~ArgumentParser.parse_args`. See the action_ description for examples. If " +"``const`` is not provided to :meth:`~ArgumentParser.add_argument`, it will " +"receive a default value of ``None``." msgstr "" "Cuando :meth:`~ArgumentParser.add_argument` se llama con " "``action='store_const'`` o ``action='append_const'``. Estas acciones añaden " "el valor ``const`` a uno de los atributos del objeto retornado por :meth:" "`~ArgumentParser.parse_args`. Mira la descripción action_ para ver ejemplos." -#: ../Doc/library/argparse.rst:983 +#: ../Doc/library/argparse.rst:1053 +#, fuzzy msgid "" "When :meth:`~ArgumentParser.add_argument` is called with option strings " "(like ``-f`` or ``--foo``) and ``nargs='?'``. This creates an optional " "argument that can be followed by zero or one command-line arguments. When " "parsing the command line, if the option string is encountered with no " "command-line argument following it, the value of ``const`` will be assumed " -"instead. See the nargs_ description for examples." +"to be ``None`` instead. See the nargs_ description for examples." msgstr "" "Cuando :meth:`~ArgumentParser.add_argument` se llama con cadenas de " "caracteres de opción (como ``-f`` o ``—foo``) y ``nargs=‘?’``. Esto crea un " @@ -1172,20 +1350,17 @@ msgstr "" "encuentra sin ningún argumento de línea de comandos que la siga, asumirá en " "su lugar el valor de ``const``. Mira la descripción nargs_ para ejemplos." -#: ../Doc/library/argparse.rst:990 +#: ../Doc/library/argparse.rst:1060 msgid "" -"With the ``'store_const'`` and ``'append_const'`` actions, the ``const`` " -"keyword argument must be given. For other actions, it defaults to ``None``." +"``const=None`` by default, including when ``action='append_const'`` or " +"``action='store_const'``." msgstr "" -"Con las acciones ``'store_const'`` y ``'append_const'``, se debe asignar el " -"argumento palabra clave ``const``. Para otras acciones, por defecto es " -"``None``." -#: ../Doc/library/argparse.rst:995 +#: ../Doc/library/argparse.rst:1067 msgid "default" msgstr "*default*" -#: ../Doc/library/argparse.rst:997 +#: ../Doc/library/argparse.rst:1069 msgid "" "All optional arguments and some positional arguments may be omitted at the " "command line. The ``default`` keyword argument of :meth:`~ArgumentParser." @@ -1202,7 +1377,7 @@ msgstr "" "cuando la cadena de caracteres de opción no está presente en la línea de " "comandos::" -#: ../Doc/library/argparse.rst:1011 +#: ../Doc/library/argparse.rst:1083 msgid "" "If the target namespace already has an attribute set, the action *default* " "will not over write it::" @@ -1210,7 +1385,7 @@ msgstr "" "Si el espacio de nombres de destino ya tiene un atributo establecido, la " "acción *default* no lo sobrescribirá:" -#: ../Doc/library/argparse.rst:1019 +#: ../Doc/library/argparse.rst:1091 msgid "" "If the ``default`` value is a string, the parser parses the value as if it " "were a command-line argument. In particular, the parser applies any type_ " @@ -1224,7 +1399,7 @@ msgstr "" "`Namespace`. En caso contrario, el analizador utiliza el valor tal y como " "es::" -#: ../Doc/library/argparse.rst:1030 +#: ../Doc/library/argparse.rst:1102 msgid "" "For positional arguments with nargs_ equal to ``?`` or ``*``, the " "``default`` value is used when no command-line argument was present::" @@ -1233,7 +1408,7 @@ msgstr "" "``default`` se utiliza cuando no hay ningún argumento de línea de comandos " "presente::" -#: ../Doc/library/argparse.rst:1041 +#: ../Doc/library/argparse.rst:1113 msgid "" "Providing ``default=argparse.SUPPRESS`` causes no attribute to be added if " "the command-line argument was not present::" @@ -1241,11 +1416,11 @@ msgstr "" "Proporcionar ``default=argparse.SUPPRESS`` causa que no se agregue ningún " "atributo si el argumento de la línea de comandos no está presente::" -#: ../Doc/library/argparse.rst:1053 +#: ../Doc/library/argparse.rst:1127 msgid "type" msgstr "*type*" -#: ../Doc/library/argparse.rst:1055 +#: ../Doc/library/argparse.rst:1129 msgid "" "By default, the parser reads command-line arguments in as simple strings. " "However, quite often the command-line string should instead be interpreted " @@ -1260,7 +1435,7 @@ msgstr "" "permite realizar cualquier verificación de tipo y conversión de tipo " "necesaria." -#: ../Doc/library/argparse.rst:1061 +#: ../Doc/library/argparse.rst:1135 msgid "" "If the type_ keyword is used with the default_ keyword, the type converter " "is only applied if the default is a string." @@ -1269,7 +1444,7 @@ msgstr "" "convertidor de tipos solo se aplica si el valor predeterminado es una cadena " "de caracteres." -#: ../Doc/library/argparse.rst:1064 +#: ../Doc/library/argparse.rst:1138 msgid "" "The argument to ``type`` can be any callable that accepts a single string. " "If the function raises :exc:`ArgumentTypeError`, :exc:`TypeError`, or :exc:" @@ -1282,17 +1457,17 @@ msgstr "" "mensaje de error con un formato agradable. No se manejan otros tipos de " "excepciones." -#: ../Doc/library/argparse.rst:1069 +#: ../Doc/library/argparse.rst:1143 msgid "Common built-in types and functions can be used as type converters:" msgstr "" "Los tipos y funciones incorporados comunes se pueden utilizar como " "convertidores de tipos:" -#: ../Doc/library/argparse.rst:1085 +#: ../Doc/library/argparse.rst:1159 msgid "User defined functions can be used as well:" msgstr "Las funciones definidas por el usuario también se pueden utilizar:" -#: ../Doc/library/argparse.rst:1097 +#: ../Doc/library/argparse.rst:1171 msgid "" "The :func:`bool` function is not recommended as a type converter. All it " "does is convert empty strings to ``False`` and non-empty strings to " @@ -1302,7 +1477,7 @@ msgstr "" "que hace es convertir cadenas de caracteres vacías en ``False`` y cadenas de " "caracteres no vacías en ``True``. Por lo general, esto no es lo que se desea." -#: ../Doc/library/argparse.rst:1101 +#: ../Doc/library/argparse.rst:1175 msgid "" "In general, the ``type`` keyword is a convenience that should only be used " "for simple conversions that can only raise one of the three supported " @@ -1315,7 +1490,7 @@ msgstr "" "más interesante debe hacerse en sentido descendente después de analizar los " "argumentos." -#: ../Doc/library/argparse.rst:1106 +#: ../Doc/library/argparse.rst:1180 msgid "" "For example, JSON or YAML conversions have complex error cases that require " "better reporting than can be given by the ``type`` keyword. A :exc:`~json." @@ -1327,7 +1502,7 @@ msgstr "" "clave ``type``. Un :exc:`~json.JSONDecodeError` no estaría bien formateado y " "una excepción :exc:`FileNotFound` no se manejaría en absoluto." -#: ../Doc/library/argparse.rst:1111 +#: ../Doc/library/argparse.rst:1185 msgid "" "Even :class:`~argparse.FileType` has its limitations for use with the " "``type`` keyword. If one argument uses *FileType* and then a subsequent " @@ -1342,7 +1517,7 @@ msgstr "" "ejecutado el analizador y luego usar la declaración :keyword:`with` para " "administrar los archivos." -#: ../Doc/library/argparse.rst:1117 +#: ../Doc/library/argparse.rst:1191 msgid "" "For type checkers that simply check against a fixed set of values, consider " "using the choices_ keyword instead." @@ -1350,11 +1525,11 @@ msgstr "" "Para los verificadores de tipo que simplemente verifican un conjunto fijo de " "valores, considere usar la palabra clave choice_ en su lugar." -#: ../Doc/library/argparse.rst:1122 +#: ../Doc/library/argparse.rst:1198 msgid "choices" msgstr "*choices*" -#: ../Doc/library/argparse.rst:1124 +#: ../Doc/library/argparse.rst:1200 msgid "" "Some command-line arguments should be selected from a restricted set of " "values. These can be handled by passing a container object as the *choices* " @@ -1369,7 +1544,7 @@ msgstr "" "comprueban los valores de los argumentos y se muestra un mensaje de error si " "el argumento no era uno de los valores aceptables::" -#: ../Doc/library/argparse.rst:1139 +#: ../Doc/library/argparse.rst:1215 msgid "" "Note that inclusion in the *choices* container is checked after any type_ " "conversions have been performed, so the type of the objects in the *choices* " @@ -1380,7 +1555,7 @@ msgstr "" "el tipo de los objetos del contenedor *choices* debe coincidir con el type_ " "especificado::" -#: ../Doc/library/argparse.rst:1151 +#: ../Doc/library/argparse.rst:1227 msgid "" "Any container can be passed as the *choices* value, so :class:`list` " "objects, :class:`set` objects, and custom containers are all supported." @@ -1389,7 +1564,7 @@ msgstr "" "los objetos :class:`list`, :class:`set` , y los contenedores personalizados " "están todos soportados." -#: ../Doc/library/argparse.rst:1154 +#: ../Doc/library/argparse.rst:1230 msgid "" "Use of :class:`enum.Enum` is not recommended because it is difficult to " "control its appearance in usage, help, and error messages." @@ -1397,9 +1572,10 @@ msgstr "" "No se recomienda el uso de :class:`enum.Enum` porque es difícil controlar su " "apariencia en el uso, la ayuda y los mensajes de error." -#: ../Doc/library/argparse.rst:1157 +#: ../Doc/library/argparse.rst:1233 +#, fuzzy msgid "" -"Formatted choices overrides the default *metavar* which is normally derived " +"Formatted choices override the default *metavar* which is normally derived " "from *dest*. This is usually what you want because the user never sees the " "*dest* parameter. If this display isn't desirable (perhaps because there " "are many choices), just specify an explicit metavar_." @@ -1409,11 +1585,11 @@ msgstr "" "el parámetro *dest*. Si esta visualización no es deseable (quizás porque hay " "muchas opciones), simplemente especifique un metavar_ explícito." -#: ../Doc/library/argparse.rst:1164 +#: ../Doc/library/argparse.rst:1242 msgid "required" msgstr "*required*" -#: ../Doc/library/argparse.rst:1166 +#: ../Doc/library/argparse.rst:1244 msgid "" "In general, the :mod:`argparse` module assumes that flags like ``-f`` and " "``--bar`` indicate *optional* arguments, which can always be omitted at the " @@ -1426,7 +1602,7 @@ msgstr "" "puede especificar``True`` para el argumento de palabra clave``required=`` " "en :meth:`~ArgumentParser.add_argument`::" -#: ../Doc/library/argparse.rst:1179 +#: ../Doc/library/argparse.rst:1257 msgid "" "As the example shows, if an option is marked as ``required``, :meth:" "`~ArgumentParser.parse_args` will report an error if that option is not " @@ -1436,7 +1612,7 @@ msgstr "" "`~ArgumentParser.parse_args` informará de un error si esa opción no está " "presente en la línea de comandos." -#: ../Doc/library/argparse.rst:1185 +#: ../Doc/library/argparse.rst:1263 msgid "" "Required options are generally considered bad form because users expect " "*options* to be *optional*, and thus they should be avoided when possible." @@ -1445,11 +1621,11 @@ msgstr "" "los usuarios esperan que las *opciones* sean *opcionales*, y por lo tanto " "deberían ser evitadas cuando sea posible." -#: ../Doc/library/argparse.rst:1190 +#: ../Doc/library/argparse.rst:1270 msgid "help" msgstr "*help*" -#: ../Doc/library/argparse.rst:1192 +#: ../Doc/library/argparse.rst:1272 msgid "" "The ``help`` value is a string containing a brief description of the " "argument. When a user requests help (usually by using ``-h`` or ``--help`` " @@ -1461,23 +1637,23 @@ msgstr "" "usando ``-h`` o ``--help`` en la línea de comandos), estas descripciones " "``help`` se mostrarán con cada argumento::" -#: ../Doc/library/argparse.rst:1212 +#: ../Doc/library/argparse.rst:1292 #, python-format msgid "" "The ``help`` strings can include various format specifiers to avoid " "repetition of things like the program name or the argument default_. The " "available specifiers include the program name, ``%(prog)s`` and most keyword " -"arguments to :meth:`~ArgumentParser.add_argument`, e.g. ``%(default)s``, ``" -"%(type)s``, etc.::" +"arguments to :meth:`~ArgumentParser.add_argument`, e.g. ``%(default)s``, " +"``%(type)s``, etc.::" msgstr "" "Las cadenas de texto ``help`` pueden incluir varios descriptores de formato " "para evitar la repetición de cosas como el nombre del programa o el " "argumento default_. Los descriptores disponibles incluyen el nombre del " "programa, ``%(prog)s`` y la mayoría de los argumentos de palabra clave de :" -"meth:`~ArgumentParser.add_argument`, por ejemplo ``%(default)s``, ``" -"%(type)s``, etc.::" +"meth:`~ArgumentParser.add_argument`, por ejemplo ``%(default)s``, " +"``%(type)s``, etc.::" -#: ../Doc/library/argparse.rst:1229 +#: ../Doc/library/argparse.rst:1309 #, python-format msgid "" "As the help string supports %-formatting, if you want a literal ``%`` to " @@ -1486,7 +1662,7 @@ msgstr "" "Como la cadena de caracteres de ayuda soporta el formato-%, si quieres que " "aparezca un ``%`` literal en la ayuda, debes escribirlo como ``%%``." -#: ../Doc/library/argparse.rst:1232 +#: ../Doc/library/argparse.rst:1312 msgid "" ":mod:`argparse` supports silencing the help entry for certain options, by " "setting the ``help`` value to ``argparse.SUPPRESS``::" @@ -1494,11 +1670,11 @@ msgstr "" ":mod:`argparse` soporta el silenciar la ayuda para ciertas opciones, " "ajustando el valor ``help`` a ``argparse.SUPPRESS``::" -#: ../Doc/library/argparse.rst:1245 +#: ../Doc/library/argparse.rst:1327 msgid "metavar" msgstr "*metavar*" -#: ../Doc/library/argparse.rst:1247 +#: ../Doc/library/argparse.rst:1329 msgid "" "When :class:`ArgumentParser` generates help messages, it needs some way to " "refer to each expected argument. By default, ArgumentParser objects use the " @@ -1519,11 +1695,11 @@ msgstr "" "que debería seguirse por un único argumento de línea de comandos se " "denominará ``FOO``. Un ejemplo::" -#: ../Doc/library/argparse.rst:1271 +#: ../Doc/library/argparse.rst:1353 msgid "An alternative name can be specified with ``metavar``::" msgstr "Un nombre alternativo se puede especificar con ``metavar``::" -#: ../Doc/library/argparse.rst:1288 +#: ../Doc/library/argparse.rst:1370 msgid "" "Note that ``metavar`` only changes the *displayed* name - the name of the " "attribute on the :meth:`~ArgumentParser.parse_args` object is still " @@ -1533,7 +1709,7 @@ msgstr "" "del atributo en el objeto :meth:`~ArgumentParser.parse_args` sigue estando " "determinado por el valor dest_." -#: ../Doc/library/argparse.rst:1292 +#: ../Doc/library/argparse.rst:1374 msgid "" "Different values of ``nargs`` may cause the metavar to be used multiple " "times. Providing a tuple to ``metavar`` specifies a different display for " @@ -1543,11 +1719,11 @@ msgstr "" "múltiples veces. Proporcionar una tupla a ``metavar`` especifica una " "visualización diferente para cada uno de los argumentos::" -#: ../Doc/library/argparse.rst:1309 +#: ../Doc/library/argparse.rst:1393 msgid "dest" msgstr "*dest*" -#: ../Doc/library/argparse.rst:1311 +#: ../Doc/library/argparse.rst:1395 msgid "" "Most :class:`ArgumentParser` actions add some value as an attribute of the " "object returned by :meth:`~ArgumentParser.parse_args`. The name of this " @@ -1563,7 +1739,7 @@ msgstr "" "posicional, se proporciona ``dest`` normalmente como primer argumento de :" "meth:`~ArgumentParser.add_argument`::" -#: ../Doc/library/argparse.rst:1323 +#: ../Doc/library/argparse.rst:1407 msgid "" "For optional argument actions, the value of ``dest`` is normally inferred " "from the option strings. :class:`ArgumentParser` generates the value of " @@ -1584,16 +1760,16 @@ msgstr "" "que la cadena de caracteres es un nombre de atributo válido. Los ejemplos " "siguientes ilustran este comportamiento::" -#: ../Doc/library/argparse.rst:1340 +#: ../Doc/library/argparse.rst:1424 msgid "``dest`` allows a custom attribute name to be provided::" msgstr "" "``dest`` permite que se proporcione un nombre de atributo personalizado::" -#: ../Doc/library/argparse.rst:1348 +#: ../Doc/library/argparse.rst:1432 msgid "Action classes" msgstr "Las clases *Action*" -#: ../Doc/library/argparse.rst:1350 +#: ../Doc/library/argparse.rst:1434 msgid "" "Action classes implement the Action API, a callable which returns a callable " "which processes arguments from the command-line. Any object which follows " @@ -1604,7 +1780,7 @@ msgstr "" "objeto que siga esta API puede ser pasado como el parámetro ``action`` a :" "meth:`add_argument`." -#: ../Doc/library/argparse.rst:1359 +#: ../Doc/library/argparse.rst:1443 msgid "" "Action objects are used by an ArgumentParser to represent the information " "needed to parse a single argument from one or more strings from the command " @@ -1619,7 +1795,7 @@ msgstr "" "clave pasado a :meth:`ArgumentParser.add_argument` excepto para la propia " "``action``." -#: ../Doc/library/argparse.rst:1365 +#: ../Doc/library/argparse.rst:1449 msgid "" "Instances of Action (or return value of any callable to the ``action`` " "parameter) should have attributes \"dest\", \"option_strings\", \"default\", " @@ -1632,7 +1808,7 @@ msgstr "" "forma más fácil de asegurar que estos atributos estén definidos es llamar a " "``Action.__init__``." -#: ../Doc/library/argparse.rst:1370 +#: ../Doc/library/argparse.rst:1454 msgid "" "Action instances should be callable, so subclasses must override the " "``__call__`` method, which should accept four parameters:" @@ -1640,11 +1816,11 @@ msgstr "" "Las instancias de *Action* deben ser invocables, por lo que las subclases " "deben anular el método ``__call__``, que debería aceptar cuatro parámetros:" -#: ../Doc/library/argparse.rst:1373 +#: ../Doc/library/argparse.rst:1457 msgid "``parser`` - The ArgumentParser object which contains this action." msgstr "``parser`` - El objeto *ArgumentParser* que contiene esta acción." -#: ../Doc/library/argparse.rst:1375 +#: ../Doc/library/argparse.rst:1459 msgid "" "``namespace`` - The :class:`Namespace` object that will be returned by :meth:" "`~ArgumentParser.parse_args`. Most actions add an attribute to this object " @@ -1654,7 +1830,7 @@ msgstr "" "`~ArgumentParser.parse_args`. La mayoría de las acciones añaden un atributo " "a este objeto usando :func:`setattr`." -#: ../Doc/library/argparse.rst:1379 +#: ../Doc/library/argparse.rst:1463 msgid "" "``values`` - The associated command-line arguments, with any type " "conversions applied. Type conversions are specified with the type_ keyword " @@ -1664,7 +1840,7 @@ msgstr "" "tipo de conversión aplicada. Las conversiones de tipos se especifican con el " "argumento de palabra clave type_ a :meth:`~ArgumentParser.add_argument`." -#: ../Doc/library/argparse.rst:1383 +#: ../Doc/library/argparse.rst:1467 msgid "" "``option_string`` - The option string that was used to invoke this action. " "The ``option_string`` argument is optional, and will be absent if the action " @@ -1674,7 +1850,7 @@ msgstr "" "invocar esta acción. El argumento ``option_string`` es opcional, y estará " "ausente si la acción está asociada a un argumento de posición." -#: ../Doc/library/argparse.rst:1387 +#: ../Doc/library/argparse.rst:1471 msgid "" "The ``__call__`` method may perform arbitrary actions, but will typically " "set attributes on the ``namespace`` based on ``dest`` and ``values``." @@ -1682,7 +1858,7 @@ msgstr "" "El método ``__call__`` puede realizar acciones arbitrarias, pero típicamente " "estable atributos en ``namespace`` basados en ``dest`` y ``values``." -#: ../Doc/library/argparse.rst:1390 +#: ../Doc/library/argparse.rst:1474 msgid "" "Action subclasses can define a ``format_usage`` method that takes no " "argument and return a string which will be used when printing the usage of " @@ -1693,11 +1869,11 @@ msgstr "" "uso del programa. Si no se proporciona dicho método, se utilizará un valor " "predeterminado razonable." -#: ../Doc/library/argparse.rst:1395 +#: ../Doc/library/argparse.rst:1479 msgid "The parse_args() method" msgstr "El método *parse_args()*" -#: ../Doc/library/argparse.rst:1399 +#: ../Doc/library/argparse.rst:1483 msgid "" "Convert argument strings to objects and assign them as attributes of the " "namespace. Return the populated namespace." @@ -1706,7 +1882,7 @@ msgstr "" "como atributos del espacio de nombres (*namespace*). Retorna el espacio de " "nombres (*namespace*) ocupado." -#: ../Doc/library/argparse.rst:1402 +#: ../Doc/library/argparse.rst:1486 msgid "" "Previous calls to :meth:`add_argument` determine exactly what objects are " "created and how they are assigned. See the documentation for :meth:" @@ -1716,7 +1892,7 @@ msgstr "" "objetos se crean y cómo se asignan. Mira la documentación de :meth:" "`add_argument` para más detalles." -#: ../Doc/library/argparse.rst:1406 +#: ../Doc/library/argparse.rst:1490 msgid "" "args_ - List of strings to parse. The default is taken from :data:`sys." "argv`." @@ -1724,7 +1900,7 @@ msgstr "" "args_ - Lista de cadenas de caracteres para analizar. El valor por defecto " "se toma de :data:`sys.argv`." -#: ../Doc/library/argparse.rst:1409 +#: ../Doc/library/argparse.rst:1493 msgid "" "namespace_ - An object to take the attributes. The default is a new empty :" "class:`Namespace` object." @@ -1732,11 +1908,11 @@ msgstr "" "namespace_ - Un objeto para obtener los atributos. Por defecto es un nuevo " "objeto vacío :class:`Namespace`." -#: ../Doc/library/argparse.rst:1414 +#: ../Doc/library/argparse.rst:1498 msgid "Option value syntax" msgstr "Sintaxis del valor de la opción" -#: ../Doc/library/argparse.rst:1416 +#: ../Doc/library/argparse.rst:1500 msgid "" "The :meth:`~ArgumentParser.parse_args` method supports several ways of " "specifying the value of an option (if it takes one). In the simplest case, " @@ -1746,7 +1922,7 @@ msgstr "" "especificar el valor de una opción (si requiere uno). En el caso más simple, " "la opción y su valor se pasan como dos argumentos separados::" -#: ../Doc/library/argparse.rst:1428 +#: ../Doc/library/argparse.rst:1512 msgid "" "For long options (options with names longer than a single character), the " "option and value can also be passed as a single command-line argument, using " @@ -1756,7 +1932,7 @@ msgstr "" "carácter), la opción y el valor también se pueden pasar como un sólo " "argumento de línea de comandos, utilizando ``=`` para separarlos::" -#: ../Doc/library/argparse.rst:1435 +#: ../Doc/library/argparse.rst:1519 msgid "" "For short options (options only one character long), the option and its " "value can be concatenated::" @@ -1764,7 +1940,7 @@ msgstr "" "Para las opciones cortas (opciones de un sólo carácter de largo), la opción " "y su valor pueden ser concatenados::" -#: ../Doc/library/argparse.rst:1441 +#: ../Doc/library/argparse.rst:1525 msgid "" "Several short options can be joined together, using only a single ``-`` " "prefix, as long as only the last option (or none of them) requires a value::" @@ -1772,11 +1948,11 @@ msgstr "" "Se pueden unir varias opciones cortas, usando un sólo prefijo ``-``, siempre " "y cuando sólo la última opción (o ninguna de ellas) requiera un valor::" -#: ../Doc/library/argparse.rst:1453 +#: ../Doc/library/argparse.rst:1537 msgid "Invalid arguments" msgstr "Argumentos no válidos" -#: ../Doc/library/argparse.rst:1455 +#: ../Doc/library/argparse.rst:1539 msgid "" "While parsing the command line, :meth:`~ArgumentParser.parse_args` checks " "for a variety of errors, including ambiguous options, invalid types, invalid " @@ -1789,11 +1965,11 @@ msgstr "" "etc. Cuando encuentra un error de este tipo, termina y muestra el error " "junto con un mensaje de uso::" -#: ../Doc/library/argparse.rst:1481 +#: ../Doc/library/argparse.rst:1565 msgid "Arguments containing ``-``" msgstr "Argumentos conteniendo ``-``" -#: ../Doc/library/argparse.rst:1483 +#: ../Doc/library/argparse.rst:1567 msgid "" "The :meth:`~ArgumentParser.parse_args` method attempts to give errors " "whenever the user has clearly made a mistake, but some situations are " @@ -1813,7 +1989,7 @@ msgstr "" "comenzar con ``-`` si se ven como números negativos y no hay opciones en el " "analizador que se puedan ver como números negativos ::" -#: ../Doc/library/argparse.rst:1521 +#: ../Doc/library/argparse.rst:1605 msgid "" "If you have positional arguments that must begin with ``-`` and don't look " "like negative numbers, you can insert the pseudo-argument ``'--'`` which " @@ -1825,11 +2001,11 @@ msgstr "" "a :meth:`~ArgumentParser.parse_args` que todo lo que sigue es un argumento " "de posición::" -#: ../Doc/library/argparse.rst:1532 +#: ../Doc/library/argparse.rst:1616 msgid "Argument abbreviations (prefix matching)" msgstr "Abreviaturas de los argumentos (coincidencia de prefijos)" -#: ../Doc/library/argparse.rst:1534 +#: ../Doc/library/argparse.rst:1618 msgid "" "The :meth:`~ArgumentParser.parse_args` method :ref:`by default " "` allows long options to be abbreviated to a prefix, if the " @@ -1839,7 +2015,7 @@ msgstr "" "` permite abreviar las opciones largas a un prefijo, si la " "abreviatura es inequívoca (el prefijo coincide con una opción única)::" -#: ../Doc/library/argparse.rst:1549 +#: ../Doc/library/argparse.rst:1633 msgid "" "An error is produced for arguments that could produce more than one options. " "This feature can be disabled by setting :ref:`allow_abbrev` to ``False``." @@ -1848,11 +2024,11 @@ msgstr "" "opción. Esta característica puede ser desactivada poniendo :ref:" "`allow_abbrev` a ``False``." -#: ../Doc/library/argparse.rst:1555 +#: ../Doc/library/argparse.rst:1639 msgid "Beyond ``sys.argv``" msgstr "Más allá de ``sys.argv``" -#: ../Doc/library/argparse.rst:1557 +#: ../Doc/library/argparse.rst:1641 msgid "" "Sometimes it may be useful to have an ArgumentParser parse arguments other " "than those of :data:`sys.argv`. This can be accomplished by passing a list " @@ -1864,11 +2040,11 @@ msgstr "" "cadenas de caracteres a :meth:`~ArgumentParser.parse_args`. Esto es útil " "para probar en el *prompt* interactivo::" -#: ../Doc/library/argparse.rst:1577 +#: ../Doc/library/argparse.rst:1661 msgid "The Namespace object" msgstr "El objeto *Namespace*" -#: ../Doc/library/argparse.rst:1581 +#: ../Doc/library/argparse.rst:1665 msgid "" "Simple class used by default by :meth:`~ArgumentParser.parse_args` to create " "an object holding attributes and return it." @@ -1876,7 +2052,7 @@ msgstr "" "Clase simple utilizada por defecto por :meth:`~ArgumentParser.parse_args` " "para crear un objeto que contenga atributos y retornarlo." -#: ../Doc/library/argparse.rst:1584 +#: ../Doc/library/argparse.rst:1668 msgid "" "This class is deliberately simple, just an :class:`object` subclass with a " "readable string representation. If you prefer to have dict-like view of the " @@ -1887,7 +2063,7 @@ msgstr "" "en forma de diccionario de los atributos, puedes usar el lenguaje estándar " "de Python, :func:`vars`::" -#: ../Doc/library/argparse.rst:1594 +#: ../Doc/library/argparse.rst:1678 msgid "" "It may also be useful to have an :class:`ArgumentParser` assign attributes " "to an already existing object, rather than a new :class:`Namespace` object. " @@ -1898,15 +2074,15 @@ msgstr "" "Esto se puede lograr especificando el argumento de palabra clave " "``namespace=``::" -#: ../Doc/library/argparse.rst:1610 +#: ../Doc/library/argparse.rst:1694 msgid "Other utilities" msgstr "Otras utilidades" -#: ../Doc/library/argparse.rst:1613 +#: ../Doc/library/argparse.rst:1697 msgid "Sub-commands" msgstr "Sub-comandos" -#: ../Doc/library/argparse.rst:1620 +#: ../Doc/library/argparse.rst:1704 msgid "" "Many programs split up their functionality into a number of sub-commands, " "for example, the ``svn`` program can invoke sub-commands like ``svn " @@ -1934,11 +2110,11 @@ msgstr "" "argumento de construcción :class:`ArgumentParser`, y retorna un objeto :" "class:`ArgumentParser` que puede ser modificado de la forma habitual." -#: ../Doc/library/argparse.rst:1632 +#: ../Doc/library/argparse.rst:1716 msgid "Description of parameters:" msgstr "Descripción de los parámetros:" -#: ../Doc/library/argparse.rst:1634 +#: ../Doc/library/argparse.rst:1718 msgid "" "title - title for the sub-parser group in help output; by default " "\"subcommands\" if description is provided, otherwise uses title for " @@ -1948,7 +2124,7 @@ msgstr "" "ayuda; por defecto *\"subcommands\"* si se proporciona la descripción, de lo " "contrario utiliza el título para los argumentos de posición" -#: ../Doc/library/argparse.rst:1638 +#: ../Doc/library/argparse.rst:1722 msgid "" "description - description for the sub-parser group in help output, by " "default ``None``" @@ -1956,7 +2132,7 @@ msgstr "" "*description* - descripción para el grupo del analizador secundario en la " "salida de la ayuda, por defecto ``None``" -#: ../Doc/library/argparse.rst:1641 +#: ../Doc/library/argparse.rst:1725 msgid "" "prog - usage information that will be displayed with sub-command help, by " "default the name of the program and any positional arguments before the " @@ -1966,7 +2142,7 @@ msgstr "" "comandos, por defecto el nombre del programa y cualquier argumento de " "posición antes del argumento del analizador secundario" -#: ../Doc/library/argparse.rst:1645 +#: ../Doc/library/argparse.rst:1729 msgid "" "parser_class - class which will be used to create sub-parser instances, by " "default the class of the current parser (e.g. ArgumentParser)" @@ -1975,7 +2151,7 @@ msgstr "" "secundario, por defecto la clase del analizador actual (por ejemplo, " "ArgumentParser)" -#: ../Doc/library/argparse.rst:1648 +#: ../Doc/library/argparse.rst:1732 msgid "" "action_ - the basic type of action to be taken when this argument is " "encountered at the command line" @@ -1983,7 +2159,7 @@ msgstr "" "action_ - el tipo básico de acción a tomar cuando este argumento se " "encuentre en la línea de comandos" -#: ../Doc/library/argparse.rst:1651 +#: ../Doc/library/argparse.rst:1735 msgid "" "dest_ - name of the attribute under which sub-command name will be stored; " "by default ``None`` and no value is stored" @@ -1991,7 +2167,7 @@ msgstr "" "dest_ - nombre del atributo en el que se almacenará el nombre del sub-" "comando; por defecto ``None`` y no se almacena ningún valor" -#: ../Doc/library/argparse.rst:1654 +#: ../Doc/library/argparse.rst:1738 msgid "" "required_ - Whether or not a subcommand must be provided, by default " "``False`` (added in 3.7)" @@ -1999,13 +2175,13 @@ msgstr "" "required_ - Si se debe proporcionar o no un sub-comando, por defecto " "``False`` (añadido en 3.7)" -#: ../Doc/library/argparse.rst:1657 +#: ../Doc/library/argparse.rst:1741 msgid "help_ - help for sub-parser group in help output, by default ``None``" msgstr "" "help_ - ayuda para el grupo de análisis secundario en la salida de la ayuda, " "por defecto ``None``" -#: ../Doc/library/argparse.rst:1659 +#: ../Doc/library/argparse.rst:1743 msgid "" "metavar_ - string presenting available sub-commands in help; by default it " "is ``None`` and presents sub-commands in form {cmd1, cmd2, ..}" @@ -2014,11 +2190,11 @@ msgstr "" "la ayuda; por defecto es ``None`` y presenta los sub-comandos de la forma " "{cmd1, cmd2, ..}" -#: ../Doc/library/argparse.rst:1662 +#: ../Doc/library/argparse.rst:1746 msgid "Some example usage::" msgstr "Algún ejemplo de uso::" -#: ../Doc/library/argparse.rst:1683 +#: ../Doc/library/argparse.rst:1767 msgid "" "Note that the object returned by :meth:`parse_args` will only contain " "attributes for the main parser and the subparser that was selected by the " @@ -2035,7 +2211,7 @@ msgstr "" "especifica el comando``b``, sólo están presentes los atributos ``foo`` y " "``baz``." -#: ../Doc/library/argparse.rst:1690 +#: ../Doc/library/argparse.rst:1774 msgid "" "Similarly, when a help message is requested from a subparser, only the help " "for that particular parser will be printed. The help message will not " @@ -2050,7 +2226,7 @@ msgstr "" "para cada comando del analizador secundario suministrando el argumento " "``help=`` a :meth:`add_parser` como se ha indicado anteriormente)." -#: ../Doc/library/argparse.rst:1726 +#: ../Doc/library/argparse.rst:1810 msgid "" "The :meth:`add_subparsers` method also supports ``title`` and " "``description`` keyword arguments. When either is present, the subparser's " @@ -2061,7 +2237,7 @@ msgstr "" "presente, los comandos del analizador secundario aparecerán en su propio " "grupo en la salida de la ayuda. Por ejemplo::" -#: ../Doc/library/argparse.rst:1747 +#: ../Doc/library/argparse.rst:1831 msgid "" "Furthermore, ``add_parser`` supports an additional ``aliases`` argument, " "which allows multiple strings to refer to the same subparser. This example, " @@ -2072,7 +2248,7 @@ msgstr "" "Este ejemplo, algo del estilo ``svn``, alias ``co`` como abreviatura para " "``checkout``::" -#: ../Doc/library/argparse.rst:1758 +#: ../Doc/library/argparse.rst:1842 msgid "" "One particularly effective way of handling sub-commands is to combine the " "use of the :meth:`add_subparsers` method with calls to :meth:`set_defaults` " @@ -2084,7 +2260,7 @@ msgstr "" "para que cada analizador secundario sepa qué función de Python debe " "ejecutar. Por ejemplo::" -#: ../Doc/library/argparse.rst:1795 +#: ../Doc/library/argparse.rst:1879 msgid "" "This way, you can let :meth:`parse_args` do the job of calling the " "appropriate function after argument parsing is complete. Associating " @@ -2101,15 +2277,15 @@ msgstr "" "del analizador secundario que se ha invocado, el argumento de palabra clave " "``dest`` a la llamada :meth:`add_subparsers` hará el trabajo::" -#: ../Doc/library/argparse.rst:1811 +#: ../Doc/library/argparse.rst:1895 msgid "New *required* keyword argument." msgstr "Nuevo argumento de palabra clave *required*." -#: ../Doc/library/argparse.rst:1816 +#: ../Doc/library/argparse.rst:1900 msgid "FileType objects" msgstr "Objetos *FileType*" -#: ../Doc/library/argparse.rst:1820 +#: ../Doc/library/argparse.rst:1904 msgid "" "The :class:`FileType` factory creates objects that can be passed to the type " "argument of :meth:`ArgumentParser.add_argument`. Arguments that have :class:" @@ -2124,7 +2300,7 @@ msgstr "" "codificaciones y manejo de errores solicitados (véase la función :func:" "`open` para más detalles)::" -#: ../Doc/library/argparse.rst:1832 +#: ../Doc/library/argparse.rst:1916 msgid "" "FileType objects understand the pseudo-argument ``'-'`` and automatically " "convert this into ``sys.stdin`` for readable :class:`FileType` objects and " @@ -2134,15 +2310,15 @@ msgstr "" "automáticamente en ``sys.stdin`` para objetos de lectura :class:`FileType` y " "``sys.stdout`` para objetos de escritura :class:`FileType`::" -#: ../Doc/library/argparse.rst:1841 +#: ../Doc/library/argparse.rst:1925 msgid "The *encodings* and *errors* keyword arguments." msgstr "Los argumentos de palabra clave *encodings* y *errors*." -#: ../Doc/library/argparse.rst:1846 +#: ../Doc/library/argparse.rst:1930 msgid "Argument groups" msgstr "Grupos de argumentos" -#: ../Doc/library/argparse.rst:1850 +#: ../Doc/library/argparse.rst:1934 msgid "" "By default, :class:`ArgumentParser` groups command-line arguments into " "\"positional arguments\" and \"optional arguments\" when displaying help " @@ -2156,7 +2332,7 @@ msgstr "" "argumentos que esta predeterminada, se pueden crear grupos apropiados usando " "el método :meth:`add_argument_group`::" -#: ../Doc/library/argparse.rst:1867 +#: ../Doc/library/argparse.rst:1951 msgid "" "The :meth:`add_argument_group` method returns an argument group object which " "has an :meth:`~ArgumentParser.add_argument` method just like a regular :" @@ -2174,7 +2350,7 @@ msgstr "" "`add_argument_group` acepta los argumentos *title* y *description* que " "pueden ser usados para personalizar esta presentación::" -#: ../Doc/library/argparse.rst:1893 +#: ../Doc/library/argparse.rst:1977 msgid "" "Note that any arguments not in your user-defined groups will end up back in " "the usual \"positional arguments\" and \"optional arguments\" sections." @@ -2183,11 +2359,19 @@ msgstr "" "por el usuario terminará en las secciones habituales de \"argumentos de " "posición\" y \"argumentos opcionales\"." -#: ../Doc/library/argparse.rst:1898 +#: ../Doc/library/argparse.rst:1980 +msgid "" +"Calling :meth:`add_argument_group` on an argument group is deprecated. This " +"feature was never supported and does not always work correctly. The function " +"exists on the API by accident through inheritance and will be removed in the " +"future." +msgstr "" + +#: ../Doc/library/argparse.rst:1988 msgid "Mutual exclusion" msgstr "Exclusión mutua" -#: ../Doc/library/argparse.rst:1902 +#: ../Doc/library/argparse.rst:1992 msgid "" "Create a mutually exclusive group. :mod:`argparse` will make sure that only " "one of the arguments in the mutually exclusive group was present on the " @@ -2197,7 +2381,7 @@ msgstr "" "sólo uno de los argumentos del grupo de exclusividad mutua esté presente en " "la línea de comandos::" -#: ../Doc/library/argparse.rst:1918 +#: ../Doc/library/argparse.rst:2008 msgid "" "The :meth:`add_mutually_exclusive_group` method also accepts a *required* " "argument, to indicate that at least one of the mutually exclusive arguments " @@ -2207,7 +2391,7 @@ msgstr "" "*required*, para indicar que se requiere al menos uno de los argumentos " "mutuamente exclusivos::" -#: ../Doc/library/argparse.rst:1930 +#: ../Doc/library/argparse.rst:2020 msgid "" "Note that currently mutually exclusive argument groups do not support the " "*title* and *description* arguments of :meth:`~ArgumentParser." @@ -2217,11 +2401,19 @@ msgstr "" "no admiten los argumentos *title* y *description* de :meth:`~ArgumentParser." "add_argument_group`." -#: ../Doc/library/argparse.rst:1936 +#: ../Doc/library/argparse.rst:2024 +msgid "" +"Calling :meth:`add_argument_group` or :meth:`add_mutually_exclusive_group` " +"on a mutually exclusive group is deprecated. These features were never " +"supported and do not always work correctly. The functions exist on the API " +"by accident through inheritance and will be removed in the future." +msgstr "" + +#: ../Doc/library/argparse.rst:2032 msgid "Parser defaults" msgstr "Valores por defecto del analizador" -#: ../Doc/library/argparse.rst:1940 +#: ../Doc/library/argparse.rst:2036 msgid "" "Most of the time, the attributes of the object returned by :meth:" "`parse_args` will be fully determined by inspecting the command-line " @@ -2235,14 +2427,14 @@ msgstr "" "permite que se añadan algunos atributos adicionales que se determinan sin " "ninguna inspección de la línea de comandos::" -#: ../Doc/library/argparse.rst:1952 +#: ../Doc/library/argparse.rst:2048 msgid "" "Note that parser-level defaults always override argument-level defaults::" msgstr "" "Ten en cuenta que los valores por defecto a nivel analizador siempre " "prevalecen sobre los valores por defecto a nivel argumento::" -#: ../Doc/library/argparse.rst:1960 +#: ../Doc/library/argparse.rst:2056 msgid "" "Parser-level defaults can be particularly useful when working with multiple " "parsers. See the :meth:`~ArgumentParser.add_subparsers` method for an " @@ -2252,7 +2444,7 @@ msgstr "" "trabaja con varios analizadores. Consulta el método :meth:`~ArgumentParser." "add_subparsers` para ver un ejemplo de este tipo." -#: ../Doc/library/argparse.rst:1966 +#: ../Doc/library/argparse.rst:2062 msgid "" "Get the default value for a namespace attribute, as set by either :meth:" "`~ArgumentParser.add_argument` or by :meth:`~ArgumentParser.set_defaults`::" @@ -2261,11 +2453,11 @@ msgstr "" "(*namespace*), establecido ya sea por :meth:`~ArgumentParser.add_argument` o " "por :meth:`~ArgumentParser.set_defaults`::" -#: ../Doc/library/argparse.rst:1977 +#: ../Doc/library/argparse.rst:2073 msgid "Printing help" msgstr "Mostrando la ayuda" -#: ../Doc/library/argparse.rst:1979 +#: ../Doc/library/argparse.rst:2075 msgid "" "In most typical applications, :meth:`~ArgumentParser.parse_args` will take " "care of formatting and printing any usage or error messages. However, " @@ -2275,7 +2467,7 @@ msgstr "" "parse_args` se encargará de dar formato y mostrar cualquier mensaje de uso o " "de error. Sin embargo, hay varios métodos para dar formato disponibles:" -#: ../Doc/library/argparse.rst:1985 +#: ../Doc/library/argparse.rst:2081 msgid "" "Print a brief description of how the :class:`ArgumentParser` should be " "invoked on the command line. If *file* is ``None``, :data:`sys.stdout` is " @@ -2285,7 +2477,7 @@ msgstr "" "`ArgumentParser` en la línea de comandos. Si *file* es ``None``, se asume :" "data:`sys.stdout`." -#: ../Doc/library/argparse.rst:1991 +#: ../Doc/library/argparse.rst:2087 msgid "" "Print a help message, including the program usage and information about the " "arguments registered with the :class:`ArgumentParser`. If *file* is " @@ -2295,7 +2487,7 @@ msgstr "" "sobre los argumentos registrados en el :class:`ArgumentParser`. Si *file* es " "``None``, se asume :data:`sys.stdout`." -#: ../Doc/library/argparse.rst:1995 +#: ../Doc/library/argparse.rst:2091 msgid "" "There are also variants of these methods that simply return a string instead " "of printing it:" @@ -2303,7 +2495,7 @@ msgstr "" "También hay variantes de estos métodos que simplemente retornan una cadena " "de caracteres en lugar de mostrarla:" -#: ../Doc/library/argparse.rst:2000 +#: ../Doc/library/argparse.rst:2096 msgid "" "Return a string containing a brief description of how the :class:" "`ArgumentParser` should be invoked on the command line." @@ -2311,7 +2503,7 @@ msgstr "" "Retorna una cadena de caracteres que contiene una breve descripción de cómo " "se debe invocar el :class:`ArgumentParser` en la línea de comandos." -#: ../Doc/library/argparse.rst:2005 +#: ../Doc/library/argparse.rst:2101 msgid "" "Return a string containing a help message, including the program usage and " "information about the arguments registered with the :class:`ArgumentParser`." @@ -2320,11 +2512,11 @@ msgstr "" "incluyendo el uso del programa e información sobre los argumentos " "registrados en el :class:`ArgumentParser`." -#: ../Doc/library/argparse.rst:2010 +#: ../Doc/library/argparse.rst:2106 msgid "Partial parsing" msgstr "Análisis parcial" -#: ../Doc/library/argparse.rst:2014 +#: ../Doc/library/argparse.rst:2110 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 " @@ -2343,7 +2535,7 @@ msgstr "" "elementos que contiene el espacio de nombres ocupado y la lista de " "argumentos de cadena de caracteres restantes." -#: ../Doc/library/argparse.rst:2030 +#: ../Doc/library/argparse.rst:2126 msgid "" ":ref:`Prefix matching ` rules apply to :meth:" "`parse_known_args`. The parser may consume an option even if it's just a " @@ -2355,11 +2547,11 @@ msgstr "" "sólo un prefijo de una de sus opciones conocidas, en lugar de dejarla en la " "lista de argumentos restantes." -#: ../Doc/library/argparse.rst:2037 +#: ../Doc/library/argparse.rst:2133 msgid "Customizing file parsing" msgstr "Personalizando el análisis de archivos" -#: ../Doc/library/argparse.rst:2041 +#: ../Doc/library/argparse.rst:2137 msgid "" "Arguments that are read from a file (see the *fromfile_prefix_chars* keyword " "argument to the :class:`ArgumentParser` constructor) are read one argument " @@ -2371,7 +2563,7 @@ msgstr "" "uno por línea. :meth:`convert_arg_line_to_args` puede ser invalidado para " "una lectura más elegante." -#: ../Doc/library/argparse.rst:2046 +#: ../Doc/library/argparse.rst:2142 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. " @@ -2382,7 +2574,7 @@ msgstr "" "argumentos analizados a partir de esta cadena de caracteres. El método se " "llama una vez por línea leída del fichero de argumentos, en orden." -#: ../Doc/library/argparse.rst:2050 +#: ../Doc/library/argparse.rst:2146 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::" @@ -2391,11 +2583,11 @@ msgstr "" "por un espacio como un argumento. El siguiente ejemplo demuestra cómo " "hacerlo::" -#: ../Doc/library/argparse.rst:2059 +#: ../Doc/library/argparse.rst:2155 msgid "Exiting methods" msgstr "Métodos de salida" -#: ../Doc/library/argparse.rst:2063 +#: ../Doc/library/argparse.rst:2159 msgid "" "This method terminates the program, exiting with the specified *status* and, " "if given, it prints a *message* before that. The user can override this " @@ -2405,7 +2597,7 @@ msgstr "" "si corresponde, muestra un *message* antes de eso. El usuario puede anular " "este método para manejar estos pasos de manera diferente::" -#: ../Doc/library/argparse.rst:2075 +#: ../Doc/library/argparse.rst:2171 msgid "" "This method prints a usage message including the *message* to the standard " "error and terminates the program with a status code of 2." @@ -2413,11 +2605,11 @@ msgstr "" "Este método imprime un mensaje de uso incluyendo el *message* para error " "estándar y finaliza el programa con código de estado 2." -#: ../Doc/library/argparse.rst:2080 +#: ../Doc/library/argparse.rst:2176 msgid "Intermixed parsing" msgstr "Análisis entremezclado" -#: ../Doc/library/argparse.rst:2085 +#: ../Doc/library/argparse.rst:2181 msgid "" "A number of Unix commands allow the user to intermix optional arguments with " "positional arguments. The :meth:`~ArgumentParser.parse_intermixed_args` " @@ -2429,7 +2621,7 @@ msgstr "" "parse_intermixed_args` y :meth:`~ArgumentParser.parse_known_intermixed_args` " "soportan este modo de análisis." -#: ../Doc/library/argparse.rst:2090 +#: ../Doc/library/argparse.rst:2186 msgid "" "These parsers do not support all the argparse features, and will raise " "exceptions if unsupported features are used. In particular, subparsers, " @@ -2442,7 +2634,7 @@ msgstr "" "grupos mutuamente exclusivos que incluyen tanto opcionales como de posición " "no están soportados." -#: ../Doc/library/argparse.rst:2095 +#: ../Doc/library/argparse.rst:2191 msgid "" "The following example shows the difference between :meth:`~ArgumentParser." "parse_known_args` and :meth:`~ArgumentParser.parse_intermixed_args`: the " @@ -2454,7 +2646,7 @@ msgstr "" "primero retorna ``['2', '3']`` como argumentos sin procesar, mientras que el " "segundo recoge todos los de posición en ``rest``. ::" -#: ../Doc/library/argparse.rst:2110 +#: ../Doc/library/argparse.rst:2206 msgid "" ":meth:`~ArgumentParser.parse_known_intermixed_args` returns a two item tuple " "containing the populated namespace and the list of remaining argument " @@ -2467,11 +2659,11 @@ msgstr "" "parse_intermixed_args` arroja un error si quedan argumentos de cadenas de " "caracteres sin procesar." -#: ../Doc/library/argparse.rst:2120 +#: ../Doc/library/argparse.rst:2216 msgid "Upgrading optparse code" msgstr "Actualizar el código de *optparse*" -#: ../Doc/library/argparse.rst:2122 +#: ../Doc/library/argparse.rst:2218 msgid "" "Originally, the :mod:`argparse` module had attempted to maintain " "compatibility with :mod:`optparse`. However, :mod:`optparse` was difficult " @@ -2489,7 +2681,7 @@ msgstr "" "copiado y pegado o *monkey-patched*, ya no parecía práctico tratar de " "mantener la retro-compatibilidad." -#: ../Doc/library/argparse.rst:2129 +#: ../Doc/library/argparse.rst:2225 msgid "" "The :mod:`argparse` module improves on the standard library :mod:`optparse` " "module in a number of ways including:" @@ -2497,38 +2689,38 @@ msgstr "" "El módulo :mod:`argparse` mejora la biblioteca estándar del módulo :mod:" "`optparse` de varias maneras, incluyendo:" -#: ../Doc/library/argparse.rst:2132 +#: ../Doc/library/argparse.rst:2228 msgid "Handling positional arguments." msgstr "Manejando argumentos de posición." -#: ../Doc/library/argparse.rst:2133 +#: ../Doc/library/argparse.rst:2229 msgid "Supporting sub-commands." msgstr "Soportando sub-comandos." -#: ../Doc/library/argparse.rst:2134 +#: ../Doc/library/argparse.rst:2230 msgid "Allowing alternative option prefixes like ``+`` and ``/``." msgstr "Permitiendo prefijos de opción alternativos como ``+`` y ``/``." -#: ../Doc/library/argparse.rst:2135 +#: ../Doc/library/argparse.rst:2231 msgid "Handling zero-or-more and one-or-more style arguments." msgstr "Manejando argumentos de estilo cero o más y uno o más." -#: ../Doc/library/argparse.rst:2136 +#: ../Doc/library/argparse.rst:2232 msgid "Producing more informative usage messages." msgstr "Generando mensajes de uso más informativos." -#: ../Doc/library/argparse.rst:2137 +#: ../Doc/library/argparse.rst:2233 msgid "Providing a much simpler interface for custom ``type`` and ``action``." msgstr "" "Proporcionando una interfaz mucho más simple para ``type`` y ``action`` " "personalizadas." -#: ../Doc/library/argparse.rst:2139 +#: ../Doc/library/argparse.rst:2235 msgid "A partial upgrade path from :mod:`optparse` to :mod:`argparse`:" msgstr "" "Una manera de actualizar parcialmente de :mod:`optparse` a :mod:`argparse`:" -#: ../Doc/library/argparse.rst:2141 +#: ../Doc/library/argparse.rst:2237 msgid "" "Replace all :meth:`optparse.OptionParser.add_option` calls with :meth:" "`ArgumentParser.add_argument` calls." @@ -2536,7 +2728,7 @@ msgstr "" "Reemplaza todas las llamadas :meth:`optparse.OptionParser.add_option` con " "llamadas :meth:`ArgumentParser.add_argument`." -#: ../Doc/library/argparse.rst:2144 +#: ../Doc/library/argparse.rst:2240 msgid "" "Replace ``(options, args) = parser.parse_args()`` with ``args = parser." "parse_args()`` and add additional :meth:`ArgumentParser.add_argument` calls " @@ -2549,7 +2741,7 @@ msgstr "" "antes se llamaba ``options``, ahora en el contexto :mod:`argparse` se llama " "``args``." -#: ../Doc/library/argparse.rst:2149 +#: ../Doc/library/argparse.rst:2245 msgid "" "Replace :meth:`optparse.OptionParser.disable_interspersed_args` by using :" "meth:`~ArgumentParser.parse_intermixed_args` instead of :meth:" @@ -2559,7 +2751,7 @@ msgstr "" "`~ArgumentParser.parse_intermixed_args` en lugar de :meth:`~ArgumentParser." "parse_args`." -#: ../Doc/library/argparse.rst:2153 +#: ../Doc/library/argparse.rst:2249 msgid "" "Replace callback actions and the ``callback_*`` keyword arguments with " "``type`` or ``action`` arguments." @@ -2567,7 +2759,7 @@ msgstr "" "Reemplaza las acciones de respuesta y los argumentos de palabra clave " "``callback_*`` con argumentos de ``type`` o ``action``." -#: ../Doc/library/argparse.rst:2156 +#: ../Doc/library/argparse.rst:2252 msgid "" "Replace string names for ``type`` keyword arguments with the corresponding " "type objects (e.g. int, float, complex, etc)." @@ -2576,7 +2768,7 @@ msgstr "" "clave ``type`` con los correspondientes objetos tipo (por ejemplo, *int*, " "*float*, *complex*, etc)." -#: ../Doc/library/argparse.rst:2159 +#: ../Doc/library/argparse.rst:2255 msgid "" "Replace :class:`optparse.Values` with :class:`Namespace` and :exc:`optparse." "OptionError` and :exc:`optparse.OptionValueError` with :exc:`ArgumentError`." @@ -2584,19 +2776,19 @@ msgstr "" "Reemplaza :class:`optparse.Values` por :class:`Namespace` y :exc:`optparse." "OptionError` y :exc:`optparse.OptionValueError` por :exc:`ArgumentError`." -#: ../Doc/library/argparse.rst:2163 +#: ../Doc/library/argparse.rst:2259 #, python-format msgid "" "Replace strings with implicit arguments such as ``%default`` or ``%prog`` " "with the standard Python syntax to use dictionaries to format strings, that " "is, ``%(default)s`` and ``%(prog)s``." msgstr "" -"Reemplaza las cadenas de caracteres con argumentos implícitos como ``" -"%default`` o ``%prog`` por la sintaxis estándar de Python y usa diccionarios " -"para dar formato a cadenas de caracteres, es decir, ``%(default)s`` y ``" -"%(prog)s``." +"Reemplaza las cadenas de caracteres con argumentos implícitos como " +"``%default`` o ``%prog`` por la sintaxis estándar de Python y usa " +"diccionarios para dar formato a cadenas de caracteres, es decir, " +"``%(default)s`` y ``%(prog)s``." -#: ../Doc/library/argparse.rst:2167 +#: ../Doc/library/argparse.rst:2263 msgid "" "Replace the OptionParser constructor ``version`` argument with a call to " "``parser.add_argument('--version', action='version', version='\n" -"Language-Team: python-doc-es\n" "Language: es_ES\n" +"Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" -"Generated-By: Babel 2.9.1\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/library/array.rst:2 msgid ":mod:`array` --- Efficient arrays of numeric values" @@ -210,9 +210,10 @@ msgid "It can be 16 bits or 32 bits depending on the platform." msgstr "Puede ser de 16 bits o 32 bits según la plataforma." #: ../Doc/library/array.rst:53 +#, fuzzy msgid "" "``array('u')`` now uses ``wchar_t`` as C type instead of deprecated " -"``Py_UNICODE``. This change doesn't affect to its behavior because " +"``Py_UNICODE``. This change doesn't affect its behavior because " "``Py_UNICODE`` is alias of ``wchar_t`` since Python 3.3." msgstr "" "``array('u')`` ahora usa ``wchar_t`` como tipo C en lugar de ``Py_UNICODE`` " diff --git a/library/ast.po b/library/ast.po index 5bf7cf9122..fab27b6eda 100644 --- a/library/ast.po +++ b/library/ast.po @@ -10,17 +10,16 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-11-02 09:14-0500\n" "Last-Translator: Cristián Maureira-Fredes \n" -"Language-Team: python-doc-es\n" "Language: es\n" +"Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Generated-By: Babel 2.9.1\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/library/ast.rst:2 msgid ":mod:`ast` --- Abstract Syntax Trees" @@ -71,10 +70,11 @@ msgid "Node classes" msgstr "Clases Nodo" #: ../Doc/library/ast.rst:46 +#, fuzzy msgid "" "This is the base of all AST node classes. The actual node classes are " "derived from the :file:`Parser/Python.asdl` file, which is reproduced :ref:" -"`below `. They are defined in the :mod:`_ast` C module " +"`above `. They are defined in the :mod:`_ast` C module " "and re-exported in :mod:`ast`." msgstr "" "Esta es la base de todas las clases de nodo AST. Las clases de nodo reales " @@ -625,7 +625,7 @@ msgstr "" "en ``targets``." #: ../Doc/library/ast.rst:751 ../Doc/library/ast.rst:1038 -#: ../Doc/library/ast.rst:1211 ../Doc/library/ast.rst:1632 +#: ../Doc/library/ast.rst:1242 ../Doc/library/ast.rst:1663 msgid "" "``type_comment`` is an optional string with the type annotation as a comment." msgstr "" @@ -802,6 +802,13 @@ msgstr "" #: ../Doc/library/ast.rst:1172 msgid "" +"``try`` blocks which are followed by ``except*`` clauses. The attributes are " +"the same as for :class:`Try` but the :class:`ExceptHandler` nodes in " +"``handlers`` are interpreted as ``except*`` blocks rather then ``except``." +msgstr "" + +#: ../Doc/library/ast.rst:1203 +msgid "" "A single ``except`` clause. ``type`` is the exception type it will match, " "typically a :class:`Name` node (or ``None`` for a catch-all ``except:`` " "clause). ``name`` is a raw string for the name to hold the exception, or " @@ -813,7 +820,7 @@ msgstr "" "nombre contenga la excepción, o ``None`` si la cláusula no tiene ``as foo``. " "``body`` es una lista de nodos." -#: ../Doc/library/ast.rst:1206 +#: ../Doc/library/ast.rst:1237 msgid "" "A ``with`` block. ``items`` is a list of :class:`withitem` nodes " "representing the context managers, and ``body`` is the indented block inside " @@ -823,7 +830,7 @@ msgstr "" "representan los administradores de contexto, y ``body`` es el bloque con " "sangría dentro del contexto." -#: ../Doc/library/ast.rst:1216 +#: ../Doc/library/ast.rst:1247 msgid "" "A single context manager in a ``with`` block. ``context_expr`` is the " "context manager, often a :class:`Call` node. ``optional_vars`` is a :class:" @@ -835,11 +842,11 @@ msgstr "" "``optional_vars`` es un :class:`Name`, :class:`Tuple` o :class:`List` para " "la parte ``as foo``, o ``None`` si no se usa." -#: ../Doc/library/ast.rst:1249 +#: ../Doc/library/ast.rst:1280 msgid "Pattern matching" msgstr "La coincidencia de patrones" -#: ../Doc/library/ast.rst:1254 +#: ../Doc/library/ast.rst:1285 msgid "" "A ``match`` statement. ``subject`` holds the subject of the match (the " "object that is being matched against the cases) and ``cases`` contains an " @@ -849,7 +856,7 @@ msgstr "" "(el objeto que se compara con los casos) y ``cases`` contiene un iterable de " "nodos :class:`match_case` con los diferentes casos." -#: ../Doc/library/ast.rst:1260 +#: ../Doc/library/ast.rst:1291 msgid "" "A single case pattern in a ``match`` statement. ``pattern`` contains the " "match pattern that the subject will be matched against. Note that the :class:" @@ -861,7 +868,7 @@ msgstr "" "que los nodos :class:`AST` producidos para patrones difieren de los " "producidos para expresiones, incluso cuando comparten la misma sintaxis." -#: ../Doc/library/ast.rst:1265 +#: ../Doc/library/ast.rst:1296 msgid "" "The ``guard`` attribute contains an expression that will be evaluated if the " "pattern matches the subject." @@ -869,7 +876,7 @@ msgstr "" "El atributo ``guard`` contiene una expresión que se evaluará si el patrón " "coincide con el sujeto." -#: ../Doc/library/ast.rst:1268 +#: ../Doc/library/ast.rst:1299 msgid "" "``body`` contains a list of nodes to execute if the pattern matches and the " "result of evaluating the guard expression is true." @@ -877,7 +884,7 @@ msgstr "" "``body`` contiene una lista de nodos para ejecutar si el patrón coincide y " "el resultado de evaluar la expresión de protección es verdadero." -#: ../Doc/library/ast.rst:1311 +#: ../Doc/library/ast.rst:1342 msgid "" "A match literal or value pattern that compares by equality. ``value`` is an " "expression node. Permitted value nodes are restricted as described in the " @@ -890,7 +897,7 @@ msgstr "" "coincidencia. Este patrón tiene éxito si el sujeto de la coincidencia es " "igual al valor evaluado." -#: ../Doc/library/ast.rst:1338 +#: ../Doc/library/ast.rst:1369 msgid "" "A match literal pattern that compares by identity. ``value`` is the " "singleton to be compared against: ``None``, ``True``, or ``False``. This " @@ -900,7 +907,7 @@ msgstr "" "el singleton que se va a comparar con: ``None``, ``True`` o ``False``. Este " "patrón tiene éxito si el sujeto de la coincidencia es la constante dada." -#: ../Doc/library/ast.rst:1363 +#: ../Doc/library/ast.rst:1394 msgid "" "A match sequence pattern. ``patterns`` contains the patterns to be matched " "against the subject elements if the subject is a sequence. Matches a " @@ -913,7 +920,7 @@ msgstr "" "subpatrones es un nodo ``MatchStar``; de lo contrario, coincide con una " "secuencia de longitud fija." -#: ../Doc/library/ast.rst:1394 +#: ../Doc/library/ast.rst:1425 msgid "" "Matches the rest of the sequence in a variable length match sequence " "pattern. If ``name`` is not ``None``, a list containing the remaining " @@ -925,7 +932,7 @@ msgstr "" "contiene los elementos de secuencia restantes está vinculada a ese nombre si " "el patrón de secuencia general es exitoso." -#: ../Doc/library/ast.rst:1434 +#: ../Doc/library/ast.rst:1465 msgid "" "A match mapping pattern. ``keys`` is a sequence of expression nodes. " "``patterns`` is a corresponding sequence of pattern nodes. ``rest`` is an " @@ -940,7 +947,7 @@ msgstr "" "restringidas como se describe en la documentación de la declaración de " "coincidencia." -#: ../Doc/library/ast.rst:1440 +#: ../Doc/library/ast.rst:1471 msgid "" "This pattern succeeds if the subject is a mapping, all evaluated key " "expressions are present in the mapping, and the value corresponding to each " @@ -954,7 +961,7 @@ msgstr "" "``None``, un dict que contiene los elementos de mapeo restantes se vincula a " "ese nombre si el patrón de mapeo general es exitoso." -#: ../Doc/library/ast.rst:1480 +#: ../Doc/library/ast.rst:1511 msgid "" "A match class pattern. ``cls`` is an expression giving the nominal class to " "be matched. ``patterns`` is a sequence of pattern nodes to be matched " @@ -973,7 +980,7 @@ msgstr "" "correspondientes (especificados como valores de palabras clave en el patrón " "de clase)." -#: ../Doc/library/ast.rst:1487 +#: ../Doc/library/ast.rst:1518 msgid "" "This pattern succeeds if the subject is an instance of the nominated class, " "all positional patterns match the corresponding class-defined attributes, " @@ -984,7 +991,7 @@ msgstr "" "clase correspondientes y cualquier atributo de palabra clave especificado " "coincide con su patrón correspondiente." -#: ../Doc/library/ast.rst:1491 +#: ../Doc/library/ast.rst:1522 msgid "" "Note: classes may define a property that returns self in order to match a " "pattern node against the instance being matched. Several builtin types are " @@ -995,7 +1002,7 @@ msgstr "" "tipos incorporados también se combinan de esa manera, como se describe en la " "documentación de la declaración de coincidencia." -#: ../Doc/library/ast.rst:1544 +#: ../Doc/library/ast.rst:1575 msgid "" "A match \"as-pattern\", capture pattern or wildcard pattern. ``pattern`` " "contains the match pattern that the subject will be matched against. If the " @@ -1007,7 +1014,7 @@ msgstr "" "sujeto. Si el patrón es ``None``, el nodo representa un patrón de captura " "(es decir, un nombre simple) y siempre tendrá éxito." -#: ../Doc/library/ast.rst:1549 +#: ../Doc/library/ast.rst:1580 msgid "" "The ``name`` attribute contains the name that will be bound if the pattern " "is successful. If ``name`` is ``None``, ``pattern`` must also be ``None`` " @@ -1017,7 +1024,7 @@ msgstr "" "éxito. Si ``name`` es ``None``, ``pattern`` también debe ser ``None`` y el " "nodo representa el patrón comodín." -#: ../Doc/library/ast.rst:1585 +#: ../Doc/library/ast.rst:1616 msgid "" "A match \"or-pattern\". An or-pattern matches each of its subpatterns in " "turn to the subject, until one succeeds. The or-pattern is then deemed to " @@ -1031,28 +1038,28 @@ msgstr "" "patrón o falla. El atributo ``patterns`` contiene una lista de nodos de " "patrones de coincidencia que se compararán con el sujeto." -#: ../Doc/library/ast.rst:1617 +#: ../Doc/library/ast.rst:1648 msgid "Function and class definitions" msgstr "Definiciones de función y clase" -#: ../Doc/library/ast.rst:1621 +#: ../Doc/library/ast.rst:1652 msgid "A function definition." msgstr "Una definición de función." -#: ../Doc/library/ast.rst:1623 +#: ../Doc/library/ast.rst:1654 msgid "``name`` is a raw string of the function name." msgstr "" "``name`` es una cadena de caracteres sin formato del nombre de la función." -#: ../Doc/library/ast.rst:1624 +#: ../Doc/library/ast.rst:1655 msgid "``args`` is an :class:`arguments` node." msgstr "``args`` es un nodo :class:`arguments`." -#: ../Doc/library/ast.rst:1625 +#: ../Doc/library/ast.rst:1656 msgid "``body`` is the list of nodes inside the function." msgstr "``body`` es la lista de nodos dentro de la función." -#: ../Doc/library/ast.rst:1626 +#: ../Doc/library/ast.rst:1657 msgid "" "``decorator_list`` is the list of decorators to be applied, stored outermost " "first (i.e. the first in the list will be applied last)." @@ -1061,11 +1068,11 @@ msgstr "" "en el exterior primero (es decir, el primero de la lista se aplicará al " "final)." -#: ../Doc/library/ast.rst:1628 +#: ../Doc/library/ast.rst:1659 msgid "``returns`` is the return annotation." msgstr "``returns`` es la anotación de retorno." -#: ../Doc/library/ast.rst:1637 +#: ../Doc/library/ast.rst:1668 msgid "" "``lambda`` is a minimal function definition that can be used inside an " "expression. Unlike :class:`FunctionDef`, ``body`` holds a single node." @@ -1074,17 +1081,17 @@ msgstr "" "de una expresión. A diferencia de :class:`FunctionDef`, ``body`` tiene un " "solo nodo." -#: ../Doc/library/ast.rst:1661 +#: ../Doc/library/ast.rst:1692 msgid "The arguments for a function." msgstr "Los argumentos para una función." -#: ../Doc/library/ast.rst:1663 +#: ../Doc/library/ast.rst:1694 msgid "" "``posonlyargs``, ``args`` and ``kwonlyargs`` are lists of :class:`arg` nodes." msgstr "" "``posonlyargs``, ``args`` y ``kwonlyargs`` son listas de nodos :class:`arg`." -#: ../Doc/library/ast.rst:1664 +#: ../Doc/library/ast.rst:1695 msgid "" "``vararg`` and ``kwarg`` are single :class:`arg` nodes, referring to the " "``*args, **kwargs`` parameters." @@ -1092,7 +1099,7 @@ msgstr "" "``vararg`` y ``kwarg`` son nodos :class:`arg` únicos, en referencia a los " "parámetros ``*args, **kwargs``." -#: ../Doc/library/ast.rst:1666 +#: ../Doc/library/ast.rst:1697 msgid "" "``kw_defaults`` is a list of default values for keyword-only arguments. If " "one is ``None``, the corresponding argument is required." @@ -1101,7 +1108,7 @@ msgstr "" "solo palabras clave. Si uno es ``None``, se requiere el argumento " "correspondiente." -#: ../Doc/library/ast.rst:1668 +#: ../Doc/library/ast.rst:1699 msgid "" "``defaults`` is a list of default values for arguments that can be passed " "positionally. If there are fewer defaults, they correspond to the last n " @@ -1111,7 +1118,7 @@ msgstr "" "pueden pasar posicionalmente. Si hay menos valores predeterminados, " "corresponden a los últimos n argumentos." -#: ../Doc/library/ast.rst:1675 +#: ../Doc/library/ast.rst:1706 msgid "" "A single argument in a list. ``arg`` is a raw string of the argument name, " "``annotation`` is its annotation, such as a :class:`Str` or :class:`Name` " @@ -1121,18 +1128,18 @@ msgstr "" "del argumento, ``annotation`` es su anotación, como un nodo :class:`Str` o :" "class:`Name`." -#: ../Doc/library/ast.rst:1681 +#: ../Doc/library/ast.rst:1712 msgid "" "``type_comment`` is an optional string with the type annotation as a comment" msgstr "" "``type_comment`` es una cadena opcional con la anotación de tipo como " "comentario" -#: ../Doc/library/ast.rst:1725 +#: ../Doc/library/ast.rst:1756 msgid "A ``return`` statement." msgstr "Una declaración ``return``." -#: ../Doc/library/ast.rst:1740 +#: ../Doc/library/ast.rst:1771 msgid "" "A ``yield`` or ``yield from`` expression. Because these are expressions, " "they must be wrapped in a :class:`Expr` node if the value sent back is not " @@ -1142,38 +1149,39 @@ msgstr "" "expresiones, deben incluirse en un nodo :class:`Expr` si no se utiliza el " "valor retornado." -#: ../Doc/library/ast.rst:1765 +#: ../Doc/library/ast.rst:1796 msgid "" "``global`` and ``nonlocal`` statements. ``names`` is a list of raw strings." msgstr "" "Declaraciones ``global`` y ``nonlocal``. ``names`` es una lista de cadenas " "sin formato." -#: ../Doc/library/ast.rst:1792 +#: ../Doc/library/ast.rst:1823 msgid "A class definition." msgstr "Una definición de clase." -#: ../Doc/library/ast.rst:1794 +#: ../Doc/library/ast.rst:1825 msgid "``name`` is a raw string for the class name" msgstr "``name`` es una cadena sin formato para el nombre de la clase" -#: ../Doc/library/ast.rst:1795 +#: ../Doc/library/ast.rst:1826 msgid "``bases`` is a list of nodes for explicitly specified base classes." msgstr "" "``bases`` es una lista de nodos para clases base especificadas " "explícitamente." -#: ../Doc/library/ast.rst:1796 +#: ../Doc/library/ast.rst:1827 +#, fuzzy msgid "" "``keywords`` is a list of :class:`keyword` nodes, principally for " "'metaclass'. Other keywords will be passed to the metaclass, as per " -"`PEP-3115 `_." +"`PEP-3115 `_." msgstr "" "``keywords`` es una lista de nodos :class:`keyword`, principalmente para " "'metaclase'. Otras palabras clave se pasarán a la metaclase, según `PEP-3115 " "`_." -#: ../Doc/library/ast.rst:1799 +#: ../Doc/library/ast.rst:1830 msgid "" "``starargs`` and ``kwargs`` are each a single node, as in a function call. " "starargs will be expanded to join the list of base classes, and kwargs will " @@ -1183,7 +1191,7 @@ msgstr "" "función. Los starargs se expandirán para unirse a la lista de clases base y " "los kwargs se pasarán a la metaclase." -#: ../Doc/library/ast.rst:1802 +#: ../Doc/library/ast.rst:1833 msgid "" "``body`` is a list of nodes representing the code within the class " "definition." @@ -1191,16 +1199,16 @@ msgstr "" "``body`` es una lista de nodos que representan el código dentro de la " "definición de clase." -#: ../Doc/library/ast.rst:1804 +#: ../Doc/library/ast.rst:1835 msgid "``decorator_list`` is a list of nodes, as in :class:`FunctionDef`." msgstr "" "``decorator_list`` es una lista de nodos, como en :class:`FunctionDef`." -#: ../Doc/library/ast.rst:1833 +#: ../Doc/library/ast.rst:1864 msgid "Async and await" msgstr "Async y await" -#: ../Doc/library/ast.rst:1837 +#: ../Doc/library/ast.rst:1868 msgid "" "An ``async def`` function definition. Has the same fields as :class:" "`FunctionDef`." @@ -1208,7 +1216,7 @@ msgstr "" "Una definición de función ``async def``. Tiene los mismos campos que :class:" "`FunctionDef`." -#: ../Doc/library/ast.rst:1843 +#: ../Doc/library/ast.rst:1874 msgid "" "An ``await`` expression. ``value`` is what it waits for. Only valid in the " "body of an :class:`AsyncFunctionDef`." @@ -1216,7 +1224,7 @@ msgstr "" "Una expresión ``await``. ``value`` es lo que espera. Solo válido en el " "cuerpo de un :class:`AsyncFunctionDef`." -#: ../Doc/library/ast.rst:1876 +#: ../Doc/library/ast.rst:1907 msgid "" "``async for`` loops and ``async with`` context managers. They have the same " "fields as :class:`For` and :class:`With`, respectively. Only valid in the " @@ -1226,7 +1234,7 @@ msgstr "" "los mismos campos que :class:`For` y :class:`With`, respectivamente. Solo " "válido en el cuerpo de un :class:`AsyncFunctionDef`." -#: ../Doc/library/ast.rst:1881 +#: ../Doc/library/ast.rst:1912 msgid "" "When a string is parsed by :func:`ast.parse`, operator nodes (subclasses of :" "class:`ast.operator`, :class:`ast.unaryop`, :class:`ast.cmpop`, :class:`ast." @@ -1240,11 +1248,11 @@ msgstr "" "retornado serán singletons. Los cambios en uno se reflejarán en todas las " "demás ocurrencias del mismo valor (por ejemplo, :class:`ast.Add`)." -#: ../Doc/library/ast.rst:1889 +#: ../Doc/library/ast.rst:1920 msgid ":mod:`ast` Helpers" msgstr "Ayudantes de :mod:`ast`" -#: ../Doc/library/ast.rst:1891 +#: ../Doc/library/ast.rst:1922 msgid "" "Apart from the node classes, the :mod:`ast` module defines these utility " "functions and classes for traversing abstract syntax trees:" @@ -1252,7 +1260,7 @@ msgstr "" "Además de las clases de nodo, el módulo :mod:`ast` define estas funciones y " "clases de utilidad para atravesar árboles de sintaxis abstracta:" -#: ../Doc/library/ast.rst:1896 +#: ../Doc/library/ast.rst:1927 msgid "" "Parse the source into an AST node. Equivalent to ``compile(source, " "filename, mode, ast.PyCF_ONLY_AST)``." @@ -1260,7 +1268,7 @@ msgstr "" "Analiza la fuente en un nodo AST. Equivalente a ``compile(source, filename, " "mode, ast.PyCF_ONLY_AST)``." -#: ../Doc/library/ast.rst:1899 +#: ../Doc/library/ast.rst:1930 msgid "" "If ``type_comments=True`` is given, the parser is modified to check and " "return type comments as specified by :pep:`484` and :pep:`526`. This is " @@ -1283,7 +1291,7 @@ msgstr "" "``type_ignores`` de :class:`Module` (de lo contrario, siempre es una lista " "vacía)." -#: ../Doc/library/ast.rst:1909 +#: ../Doc/library/ast.rst:1940 msgid "" "In addition, if ``mode`` is ``'func_type'``, the input syntax is modified to " "correspond to :pep:`484` \"signature type comments\", e.g. ``(str, int) -> " @@ -1293,7 +1301,7 @@ msgstr "" "para corresponder a :pep:`484` \"comentarios de tipo de firma\", por ejemplo " "``(str, int) -> List[str]``." -#: ../Doc/library/ast.rst:1913 +#: ../Doc/library/ast.rst:1944 msgid "" "Also, setting ``feature_version`` to a tuple ``(major, minor)`` will attempt " "to parse using that Python version's grammar. Currently ``major`` must equal " @@ -1308,13 +1316,13 @@ msgstr "" "nombres de variables. La versión más baja admitida es ``(3, 4)``; la más " "alto es ``sys.version_info[0:2]``." -#: ../Doc/library/ast.rst:1920 +#: ../Doc/library/ast.rst:1951 msgid "" "If source contains a null character ('\\0'), :exc:`ValueError` is raised." msgstr "" "Si la fuente contiene un carácter nulo ('\\ 0'), se lanza :exc:`ValueError`." -#: ../Doc/library/ast.rst:1923 +#: ../Doc/library/ast.rst:1954 msgid "" "Note that successfully parsing source code into an AST object doesn't " "guarantee that the source code provided is valid Python code that can be " @@ -1330,7 +1338,7 @@ msgstr "" "un nodo AST válido para una declaración de retorno, pero no se puede " "compilar solo (debe estar dentro de un nodo de función)." -#: ../Doc/library/ast.rst:1930 +#: ../Doc/library/ast.rst:1961 msgid "" "In particular, :func:`ast.parse` won't do any scoping checks, which the " "compilation step does." @@ -1338,7 +1346,7 @@ msgstr "" "En particular, :func:`ast.parse` no realizará ninguna verificación de " "alcance, lo que hace el paso de compilación." -#: ../Doc/library/ast.rst:1934 ../Doc/library/ast.rst:1973 +#: ../Doc/library/ast.rst:1965 msgid "" "It is possible to crash the Python interpreter with a sufficiently large/" "complex string due to stack depth limitations in Python's AST compiler." @@ -1347,12 +1355,12 @@ msgstr "" "suficientemente grande/compleja debido a las limitaciones de profundidad de " "pila en el compilador AST de Python." -#: ../Doc/library/ast.rst:1938 +#: ../Doc/library/ast.rst:1969 msgid "Added ``type_comments``, ``mode='func_type'`` and ``feature_version``." msgstr "" "Se agregaron ``type_comments``, ``mode='func_type'`` y ``feature_version``." -#: ../Doc/library/ast.rst:1944 +#: ../Doc/library/ast.rst:1975 msgid "" "Unparse an :class:`ast.AST` object and generate a string with code that " "would produce an equivalent :class:`ast.AST` object if parsed back with :" @@ -1362,7 +1370,7 @@ msgstr "" "produciría un objeto :class:`ast.AST` equivalente si se analiza con :func:" "`ast.parse`." -#: ../Doc/library/ast.rst:1949 +#: ../Doc/library/ast.rst:1980 msgid "" "The produced code string will not necessarily be equal to the original code " "that generated the :class:`ast.AST` object (without any compiler " @@ -1372,7 +1380,7 @@ msgstr "" "original que generó el objeto :class:`ast.AST` (sin ninguna optimización del " "compilador, como tuplas constantes / frozensets)." -#: ../Doc/library/ast.rst:1954 +#: ../Doc/library/ast.rst:1985 msgid "" "Trying to unparse a highly complex expression would result with :exc:" "`RecursionError`." @@ -1380,32 +1388,44 @@ msgstr "" "Intentar descomprimir una expresión muy compleja daría como resultado :exc:" "`RecursionError`." -#: ../Doc/library/ast.rst:1962 +#: ../Doc/library/ast.rst:1993 msgid "" -"Safely evaluate an expression node or a string containing a Python literal " -"or container display. The string or node provided may only consist of the " +"Evaluate an expression node or a string containing only a Python literal or " +"container display. The string or node provided may only consist of the " "following Python literal structures: strings, bytes, numbers, tuples, lists, " "dicts, sets, booleans, ``None`` and ``Ellipsis``." msgstr "" -"Evalúa de forma segura un nodo de expresión o una cadena de caracteres que " -"contenga un literal de Python o un visualizador de contenedor. La cadena o " -"nodo proporcionado solo puede consistir en las siguientes estructuras " -"literales de Python: cadenas de caracteres, bytes, números, tuplas, listas, " -"diccionarios, conjuntos, booleanos, ``None`` y ``Ellipsis``." -#: ../Doc/library/ast.rst:1967 +#: ../Doc/library/ast.rst:1998 msgid "" -"This can be used for safely evaluating strings containing Python values from " -"untrusted sources without the need to parse the values oneself. It is not " -"capable of evaluating arbitrarily complex expressions, for example involving " -"operators or indexing." +"This can be used for evaluating strings containing Python values without the " +"need to parse the values oneself. It is not capable of evaluating " +"arbitrarily complex expressions, for example involving operators or indexing." msgstr "" -"Esto se puede usar para evaluar de forma segura las cadenas de caracteres " -"que contienen valores de Python de fuentes no confiables sin la necesidad de " -"analizar los valores uno mismo. No es capaz de evaluar expresiones complejas " -"arbitrariamente, por ejemplo, que involucran operadores o indexación." -#: ../Doc/library/ast.rst:1977 +#: ../Doc/library/ast.rst:2003 +msgid "" +"This function had been documented as \"safe\" in the past without defining " +"what that meant. That was misleading. This is specifically designed not to " +"execute Python code, unlike the more general :func:`eval`. There is no " +"namespace, no name lookups, or ability to call out. But it is not free from " +"attack: A relatively small input can lead to memory exhaustion or to C stack " +"exhaustion, crashing the process. There is also the possibility for " +"excessive CPU consumption denial of service on some inputs. Calling it on " +"untrusted data is thus not recommended." +msgstr "" + +#: ../Doc/library/ast.rst:2013 +#, fuzzy +msgid "" +"It is possible to crash the Python interpreter due to stack depth " +"limitations in Python's AST compiler." +msgstr "" +"Es posible bloquear el intérprete de Python con una cadena de caracteres " +"suficientemente grande/compleja debido a las limitaciones de profundidad de " +"pila en el compilador AST de Python." + +#: ../Doc/library/ast.rst:2016 msgid "" "It can raise :exc:`ValueError`, :exc:`TypeError`, :exc:`SyntaxError`, :exc:" "`MemoryError` and :exc:`RecursionError` depending on the malformed input." @@ -1413,21 +1433,21 @@ msgstr "" "Puede generar :exc:`ValueError`, :exc:`TypeError`, :exc:`SyntaxError`, :exc:" "`MemoryError` y :exc:`RecursionError` dependiendo de la entrada mal formada." -#: ../Doc/library/ast.rst:1981 +#: ../Doc/library/ast.rst:2020 msgid "Now allows bytes and set literals." msgstr "Ahora permite bytes y establece literales." -#: ../Doc/library/ast.rst:1984 +#: ../Doc/library/ast.rst:2023 msgid "Now supports creating empty sets with ``'set()'``." msgstr "Ahora admite la creación de conjuntos vacíos con ``'set()'``." -#: ../Doc/library/ast.rst:1987 +#: ../Doc/library/ast.rst:2026 msgid "For string inputs, leading spaces and tabs are now stripped." msgstr "" "Para las entradas de cadena, los espacios iniciales y las tabulaciones ahora " "se eliminan." -#: ../Doc/library/ast.rst:1993 +#: ../Doc/library/ast.rst:2032 msgid "" "Return the docstring of the given *node* (which must be a :class:" "`FunctionDef`, :class:`AsyncFunctionDef`, :class:`ClassDef`, or :class:" @@ -1439,11 +1459,11 @@ msgstr "" "`ClassDef`, o :class:`Module`), o ``None`` si no tiene docstring. Si *clean* " "es verdadero, limpia la sangría del docstring con :func:`inspect.cleandoc`." -#: ../Doc/library/ast.rst:1999 +#: ../Doc/library/ast.rst:2038 msgid ":class:`AsyncFunctionDef` is now supported." msgstr ":class:`AsyncFunctionDef` ahora está soportada." -#: ../Doc/library/ast.rst:2005 +#: ../Doc/library/ast.rst:2044 msgid "" "Get source code segment of the *source* that generated *node*. If some " "location information (:attr:`lineno`, :attr:`end_lineno`, :attr:" @@ -1453,7 +1473,7 @@ msgstr "" "falta información de ubicación (:attr:`lineno`, :attr:`end_lineno`, :attr:" "`col_offset`, o :attr:`end_col_offset`), retorna ``None``." -#: ../Doc/library/ast.rst:2009 +#: ../Doc/library/ast.rst:2048 msgid "" "If *padded* is ``True``, the first line of a multi-line statement will be " "padded with spaces to match its original position." @@ -1461,7 +1481,7 @@ msgstr "" "Si *padded* es ``True``, la primera línea de una declaración de varias " "líneas se rellenará con espacios para que coincidan con su posición original." -#: ../Doc/library/ast.rst:2017 +#: ../Doc/library/ast.rst:2056 msgid "" "When you compile a node tree with :func:`compile`, the compiler expects :" "attr:`lineno` and :attr:`col_offset` attributes for every node that supports " @@ -1476,7 +1496,7 @@ msgstr "" "establecidos, configurándolos en los valores del nodo principal. Funciona de " "forma recursiva comenzando en *node*." -#: ../Doc/library/ast.rst:2026 +#: ../Doc/library/ast.rst:2065 msgid "" "Increment the line number and end line number of each node in the tree " "starting at *node* by *n*. This is useful to \"move code\" to a different " @@ -1486,7 +1506,7 @@ msgstr "" "árbol comenzando en *node* por *n*. Esto es útil para \"mover código\" a una " "ubicación diferente en un archivo." -#: ../Doc/library/ast.rst:2033 +#: ../Doc/library/ast.rst:2072 msgid "" "Copy source location (:attr:`lineno`, :attr:`col_offset`, :attr:" "`end_lineno`, and :attr:`end_col_offset`) from *old_node* to *new_node* if " @@ -1496,7 +1516,7 @@ msgstr "" "`end_lineno`, y :attr:`end_col_offset`) de *old_node* a *new_node* si es " "posible, y retorna *new_node*." -#: ../Doc/library/ast.rst:2040 +#: ../Doc/library/ast.rst:2079 msgid "" "Yield a tuple of ``(fieldname, value)`` for each field in ``node._fields`` " "that is present on *node*." @@ -1504,7 +1524,7 @@ msgstr "" "Produce (*yield*) una tupla de ``(fieldname, value)`` para cada campo en " "``node._fields`` que está presente en *node*." -#: ../Doc/library/ast.rst:2046 +#: ../Doc/library/ast.rst:2085 msgid "" "Yield all direct child nodes of *node*, that is, all fields that are nodes " "and all items of fields that are lists of nodes." @@ -1512,7 +1532,7 @@ msgstr "" "Cede todos los nodos secundarios directos de *node*, es decir, todos los " "campos que son nodos y todos los elementos de campos que son listas de nodos." -#: ../Doc/library/ast.rst:2052 +#: ../Doc/library/ast.rst:2091 msgid "" "Recursively yield all descendant nodes in the tree starting at *node* " "(including *node* itself), in no specified order. This is useful if you " @@ -1523,7 +1543,7 @@ msgstr "" "es útil si solo desea modificar los nodos en su lugar y no le importa el " "contexto." -#: ../Doc/library/ast.rst:2059 +#: ../Doc/library/ast.rst:2098 msgid "" "A node visitor base class that walks the abstract syntax tree and calls a " "visitor function for every node found. This function may return a value " @@ -1534,7 +1554,7 @@ msgstr "" "función puede retornar un valor que se reenvía mediante el método :meth:" "`visit`." -#: ../Doc/library/ast.rst:2063 +#: ../Doc/library/ast.rst:2102 msgid "" "This class is meant to be subclassed, with the subclass adding visitor " "methods." @@ -1542,7 +1562,7 @@ msgstr "" "Esta clase está destinada a ser subclase, con la subclase agregando métodos " "de visitante." -#: ../Doc/library/ast.rst:2068 +#: ../Doc/library/ast.rst:2107 msgid "" "Visit a node. The default implementation calls the method called :samp:" "`self.visit_{classname}` where *classname* is the name of the node class, " @@ -1552,11 +1572,11 @@ msgstr "" "samp:`self.visit_{classname}` donde *classname* es el nombre de la clase de " "nodo, o :meth:`generic_visit` si ese método no existe." -#: ../Doc/library/ast.rst:2074 +#: ../Doc/library/ast.rst:2113 msgid "This visitor calls :meth:`visit` on all children of the node." msgstr "Este visitante llama :meth:`visit` en todos los hijos del nodo." -#: ../Doc/library/ast.rst:2076 +#: ../Doc/library/ast.rst:2115 msgid "" "Note that child nodes of nodes that have a custom visitor method won't be " "visited unless the visitor calls :meth:`generic_visit` or visits them itself." @@ -1565,7 +1585,7 @@ msgstr "" "de visitante personalizado no se visitarán a menos que el visitante llame :" "meth:`generic_visit` o los visite a sí mismo." -#: ../Doc/library/ast.rst:2080 +#: ../Doc/library/ast.rst:2119 msgid "" "Don't use the :class:`NodeVisitor` if you want to apply changes to nodes " "during traversal. For this a special visitor exists (:class:" @@ -1575,7 +1595,7 @@ msgstr "" "recorrido. Para esto existe un visitante especial (:class:`NodeTransformer`) " "que permite modificaciones." -#: ../Doc/library/ast.rst:2086 +#: ../Doc/library/ast.rst:2125 msgid "" "Methods :meth:`visit_Num`, :meth:`visit_Str`, :meth:`visit_Bytes`, :meth:" "`visit_NameConstant` and :meth:`visit_Ellipsis` are deprecated now and will " @@ -1587,7 +1607,7 @@ msgstr "" "serán llamados en futuras versiones de Python. Agregue el método :meth:" "`visit_Constant` para manejar todos los nodos constantes." -#: ../Doc/library/ast.rst:2094 +#: ../Doc/library/ast.rst:2133 msgid "" "A :class:`NodeVisitor` subclass that walks the abstract syntax tree and " "allows modification of nodes." @@ -1595,7 +1615,7 @@ msgstr "" "Una subclase de :class:`NodeVisitor` que recorre el árbol de sintaxis " "abstracta y permite la modificación de nodos." -#: ../Doc/library/ast.rst:2097 +#: ../Doc/library/ast.rst:2136 msgid "" "The :class:`NodeTransformer` will walk the AST and use the return value of " "the visitor methods to replace or remove the old node. If the return value " @@ -1610,7 +1630,7 @@ msgstr "" "valor de retorno. El valor de retorno puede ser el nodo original, en cuyo " "caso no se realiza ningún reemplazo." -#: ../Doc/library/ast.rst:2103 +#: ../Doc/library/ast.rst:2142 msgid "" "Here is an example transformer that rewrites all occurrences of name lookups " "(``foo``) to ``data['foo']``::" @@ -1618,7 +1638,7 @@ msgstr "" "Aquí hay un transformador de ejemplo que reescribe todas las apariciones de " "búsquedas de nombres (``foo``) en ``data['foo']``::" -#: ../Doc/library/ast.rst:2115 +#: ../Doc/library/ast.rst:2154 msgid "" "Keep in mind that if the node you're operating on has child nodes you must " "either transform the child nodes yourself or call the :meth:`generic_visit` " @@ -1628,7 +1648,7 @@ msgstr "" "secundarios, debe transformar los nodos secundarios usted mismo o llamar " "primero al método :meth:`generic_visit` para el nodo." -#: ../Doc/library/ast.rst:2119 +#: ../Doc/library/ast.rst:2158 msgid "" "For nodes that were part of a collection of statements (that applies to all " "statement nodes), the visitor may also return a list of nodes rather than " @@ -1638,7 +1658,7 @@ msgstr "" "aplica a todos los nodos de declaración), el visitante también puede " "retornar una lista de nodos en lugar de solo un nodo." -#: ../Doc/library/ast.rst:2123 +#: ../Doc/library/ast.rst:2162 msgid "" "If :class:`NodeTransformer` introduces new nodes (that weren't part of " "original tree) without giving them location information (such as :attr:" @@ -1650,11 +1670,11 @@ msgstr "" "func:`fix_missing_locations` debería llamarse con el nuevo sub-árbol para " "recalcular la información de ubicación ::" -#: ../Doc/library/ast.rst:2131 +#: ../Doc/library/ast.rst:2170 msgid "Usually you use the transformer like this::" msgstr "Usualmente usas el transformador así:" -#: ../Doc/library/ast.rst:2138 +#: ../Doc/library/ast.rst:2177 msgid "" "Return a formatted dump of the tree in *node*. This is mainly useful for " "debugging purposes. If *annotate_fields* is true (by default), the returned " @@ -1673,13 +1693,13 @@ msgstr "" "vuelcan de forma predeterminada. Si esto se desea, *include_attributes* se " "puede establecer en verdadero." -#: ../Doc/library/ast.rst:2146 +#: ../Doc/library/ast.rst:2185 msgid "" "If *indent* is a non-negative integer or string, then the tree will be " -"pretty-printed with that indent level. An indent level of 0, negative, or ``" -"\"\"`` will only insert newlines. ``None`` (the default) selects the single " -"line representation. Using a positive integer indent indents that many " -"spaces per level. If *indent* is a string (such as ``\"\\t\"``), that " +"pretty-printed with that indent level. An indent level of 0, negative, or " +"``\"\"`` will only insert newlines. ``None`` (the default) selects the " +"single line representation. Using a positive integer indent indents that " +"many spaces per level. If *indent* is a string (such as ``\"\\t\"``), that " "string is used to indent each level." msgstr "" "Si *indent* es un entero no negativo o una cadena de caracteres, entonces el " @@ -1690,15 +1710,15 @@ msgstr "" "*indent* es una cadena de caracteres (como ``\"\\t\"``), esa cadena se usa " "para sangrar cada nivel." -#: ../Doc/library/ast.rst:2153 +#: ../Doc/library/ast.rst:2192 msgid "Added the *indent* option." msgstr "Añadida la opción *indent*." -#: ../Doc/library/ast.rst:2160 +#: ../Doc/library/ast.rst:2199 msgid "Compiler Flags" msgstr "Banderas del compilador" -#: ../Doc/library/ast.rst:2162 +#: ../Doc/library/ast.rst:2201 msgid "" "The following flags may be passed to :func:`compile` in order to change " "effects on the compilation of a program:" @@ -1706,7 +1726,7 @@ msgstr "" "Los siguientes indicadores pueden pasarse a :func:`compile` para cambiar los " "efectos en la compilación de un programa:" -#: ../Doc/library/ast.rst:2167 +#: ../Doc/library/ast.rst:2206 msgid "" "Enables support for top-level ``await``, ``async for``, ``async with`` and " "async comprehensions." @@ -1714,7 +1734,7 @@ msgstr "" "Habilita el soporte para ``await``, ``async for``, ``async with`` y " "comprensiones asíncronas de nivel superior." -#: ../Doc/library/ast.rst:2174 +#: ../Doc/library/ast.rst:2213 msgid "" "Generates and returns an abstract syntax tree instead of returning a " "compiled code object." @@ -1722,7 +1742,7 @@ msgstr "" "Genera y retorna un árbol de sintaxis abstracto en lugar de retornar un " "objeto de código compilado." -#: ../Doc/library/ast.rst:2179 +#: ../Doc/library/ast.rst:2218 msgid "" "Enables support for :pep:`484` and :pep:`526` style type comments (``# type: " "``, ``# type: ignore ``)." @@ -1730,11 +1750,11 @@ msgstr "" "Habilita el soporte para comentarios de tipo de estilo :pep:`484` y :pep:" "`526` (``# type: ``, ``# type: ignore ``)." -#: ../Doc/library/ast.rst:2188 +#: ../Doc/library/ast.rst:2227 msgid "Command-Line Usage" msgstr "Uso en línea de comandos" -#: ../Doc/library/ast.rst:2192 +#: ../Doc/library/ast.rst:2231 msgid "" "The :mod:`ast` module can be executed as a script from the command line. It " "is as simple as:" @@ -1742,15 +1762,15 @@ msgstr "" "El módulo :mod:`ast` puede ser ejecutado como un script desde la línea de " "comandos. Es tan simple como:" -#: ../Doc/library/ast.rst:2199 +#: ../Doc/library/ast.rst:2238 msgid "The following options are accepted:" msgstr "Las siguientes opciones son aceptadas:" -#: ../Doc/library/ast.rst:2205 +#: ../Doc/library/ast.rst:2244 msgid "Show the help message and exit." msgstr "Muestra el mensaje de ayuda y sale." -#: ../Doc/library/ast.rst:2210 +#: ../Doc/library/ast.rst:2249 msgid "" "Specify what kind of code must be compiled, like the *mode* argument in :" "func:`parse`." @@ -1758,19 +1778,19 @@ msgstr "" "Especifica qué tipo de código debe ser compilado, como el argumento *mode* " "en :func:`parse`." -#: ../Doc/library/ast.rst:2215 +#: ../Doc/library/ast.rst:2254 msgid "Don't parse type comments." msgstr "No analizar los comentarios de tipo." -#: ../Doc/library/ast.rst:2219 +#: ../Doc/library/ast.rst:2258 msgid "Include attributes such as line numbers and column offsets." msgstr "Incluye atributos como números de línea y sangrías." -#: ../Doc/library/ast.rst:2224 +#: ../Doc/library/ast.rst:2263 msgid "Indentation of nodes in AST (number of spaces)." msgstr "Sangría de nodos en AST (número de espacios)." -#: ../Doc/library/ast.rst:2226 +#: ../Doc/library/ast.rst:2265 msgid "" "If :file:`infile` is specified its contents are parsed to AST and dumped to " "stdout. Otherwise, the content is read from stdin." @@ -1778,7 +1798,7 @@ msgstr "" "Si :file:`infile` es especificado, su contenido es analizado a AST y " "mostrado en stdout. De otra forma, el contenido es leído desde stdin." -#: ../Doc/library/ast.rst:2232 +#: ../Doc/library/ast.rst:2271 msgid "" "`Green Tree Snakes `_, an external " "documentation resource, has good details on working with Python ASTs." @@ -1787,7 +1807,7 @@ msgstr "" "de documentación externo, tiene buenos detalles sobre cómo trabajar con " "Python AST." -#: ../Doc/library/ast.rst:2235 +#: ../Doc/library/ast.rst:2274 msgid "" "`ASTTokens `_ " "annotates Python ASTs with the positions of tokens and text in the source " @@ -1799,9 +1819,10 @@ msgstr "" "que los genera. Esto es de ayuda para herramientas que hacen " "transformaciones de código fuente." -#: ../Doc/library/ast.rst:2240 +#: ../Doc/library/ast.rst:2279 +#, fuzzy msgid "" -"`leoAst.py `_ unifies the " +"`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 "" @@ -1809,7 +1830,7 @@ msgstr "" "vistas basadas en tokens y en *parse-trees* de los programas de Python " "insertando vínculos de doble vía entre tokens y nodos AST." -#: ../Doc/library/ast.rst:2244 +#: ../Doc/library/ast.rst:2283 msgid "" "`LibCST `_ parses code as a Concrete Syntax " "Tree that looks like an ast tree and keeps all formatting details. It's " @@ -1820,7 +1841,7 @@ msgstr "" "formato. Es útil para construir herramientas de refactor automáticas y " "linters." -#: ../Doc/library/ast.rst:2249 +#: ../Doc/library/ast.rst:2288 msgid "" "`Parso `_ is a Python parser that supports " "error recovery and round-trip parsing for different Python versions (in " @@ -1832,3 +1853,28 @@ msgstr "" "las diferentes versiones de Python (en múltiples versiones de Python). Parso " "también es capaz de enlistar múltiples errores de sintaxis en tu archivo de " "Python." + +#~ msgid "" +#~ "Safely evaluate an expression node or a string containing a Python " +#~ "literal or container display. The string or node provided may only " +#~ "consist of the following Python literal structures: strings, bytes, " +#~ "numbers, tuples, lists, dicts, sets, booleans, ``None`` and ``Ellipsis``." +#~ msgstr "" +#~ "Evalúa de forma segura un nodo de expresión o una cadena de caracteres " +#~ "que contenga un literal de Python o un visualizador de contenedor. La " +#~ "cadena o nodo proporcionado solo puede consistir en las siguientes " +#~ "estructuras literales de Python: cadenas de caracteres, bytes, números, " +#~ "tuplas, listas, diccionarios, conjuntos, booleanos, ``None`` y " +#~ "``Ellipsis``." + +#~ msgid "" +#~ "This can be used for safely evaluating strings containing Python values " +#~ "from untrusted sources without the need to parse the values oneself. It " +#~ "is not capable of evaluating arbitrarily complex expressions, for example " +#~ "involving operators or indexing." +#~ msgstr "" +#~ "Esto se puede usar para evaluar de forma segura las cadenas de caracteres " +#~ "que contienen valores de Python de fuentes no confiables sin la necesidad " +#~ "de analizar los valores uno mismo. No es capaz de evaluar expresiones " +#~ "complejas arbitrariamente, por ejemplo, que involucran operadores o " +#~ "indexación." diff --git a/library/asynchat.po b/library/asynchat.po index bda1b9d78a..5b27d99346 100644 --- a/library/asynchat.po +++ b/library/asynchat.po @@ -1,38 +1,42 @@ # Copyright (C) 2001-2020, Python Software Foundation # This file is distributed under the same license as the Python package. # Maintained by the python-doc-es workteam. -# docs-es@python.org / https://mail.python.org/mailman3/lists/docs-es.python.org/ -# Check https://github.com/python/python-docs-es/blob/3.8/TRANSLATORS to get the list of volunteers +# docs-es@python.org / +# https://mail.python.org/mailman3/lists/docs-es.python.org/ +# Check https://github.com/python/python-docs-es/blob/3.8/TRANSLATORS to get +# the list of volunteers # msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-05-06 11:59-0400\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-08-04 13:58+0200\n" +"Last-Translator: Cristián Maureira-Fredes \n" +"Language: es\n" "Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" +"Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Last-Translator: Cristián Maureira-Fredes \n" -"Language: es\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/library/asynchat.rst:2 msgid ":mod:`asynchat` --- Asynchronous socket command/response handler" msgstr "" ":mod:`asynchat` --- Gestor de comandos/respuestas en *sockets* asíncronos" -#: ../Doc/library/asynchat.rst:10 +#: ../Doc/library/asynchat.rst:11 msgid "**Source code:** :source:`Lib/asynchat.py`" msgstr "**Código fuente:** :source:`Lib/asynchat.py`" -#: ../Doc/library/asynchat.rst:12 -msgid "Please use :mod:`asyncio` instead." -msgstr "Usar :mod:`asyncio` en su lugar." +#: ../Doc/library/asynchat.rst:17 +msgid "" +"The :mod:`asynchat` module is deprecated (see :pep:`PEP 594 <594#asynchat>` " +"for details). Please use :mod:`asyncio` instead." +msgstr "" -#: ../Doc/library/asynchat.rst:19 +#: ../Doc/library/asynchat.rst:22 msgid "" "This module exists for backwards compatibility only. For new code we " "recommend using :mod:`asyncio`." @@ -40,7 +44,7 @@ msgstr "" "Este módulo existe únicamente por motivos de retrocompatibilidad. Para nuevo " "código, es recomendable usar :mod:`asyncio`." -#: ../Doc/library/asynchat.rst:22 +#: ../Doc/library/asynchat.rst:25 msgid "" "This module builds on the :mod:`asyncore` infrastructure, simplifying " "asynchronous clients and servers and making it easier to handle protocols " @@ -66,7 +70,17 @@ msgstr "" "`asyncore.dispatcher` genera nuevos objetos de canal :class:`asynchat." "async_chat`, al recibir peticiones de conexión entrantes." -#: ../Doc/library/asynchat.rst:37 +msgid ":ref:`Availability `: not Emscripten, not WASI." +msgstr "" + +#: ../Doc/library/cpython/Doc/includes/wasm-notavail.rst:5 +msgid "" +"This module does not work or is not available on WebAssembly platforms " +"``wasm32-emscripten`` and ``wasm32-wasi``. See :ref:`wasm-availability` for " +"more information." +msgstr "" + +#: ../Doc/library/asynchat.rst:41 msgid "" "This class is an abstract subclass of :class:`asyncore.dispatcher`. To make " "practical use of the code you must subclass :class:`async_chat`, providing " @@ -80,7 +94,7 @@ msgstr "" "`found_terminator`. Los métodos de :class:`asyncore.dispatcher` se pueden " "utilizar, aunque no todos tienen sentido en un contexto de mensaje/respuesta." -#: ../Doc/library/asynchat.rst:44 +#: ../Doc/library/asynchat.rst:48 msgid "" "Like :class:`asyncore.dispatcher`, :class:`async_chat` defines a set of " "events that are generated by an analysis of socket conditions after a :c:" @@ -95,7 +109,7 @@ msgstr "" "son llamados por el _framework_ que procesa los eventos, sin que tengamos " "que programar ninguna acción a mayores." -#: ../Doc/library/asynchat.rst:50 +#: ../Doc/library/asynchat.rst:54 msgid "" "Two class attributes can be modified, to improve performance, or possibly " "even to conserve memory." @@ -103,15 +117,15 @@ msgstr "" "Se pueden modificar dos atributos de clase, para mejorar el rendimiento o " "incluso hasta para ahorrar memoria." -#: ../Doc/library/asynchat.rst:56 +#: ../Doc/library/asynchat.rst:60 msgid "The asynchronous input buffer size (default ``4096``)." msgstr "El tamaño del _buffer_ de entrada asíncrona (por defecto ``4096``)." -#: ../Doc/library/asynchat.rst:61 +#: ../Doc/library/asynchat.rst:65 msgid "The asynchronous output buffer size (default ``4096``)." msgstr "El tamaño del _buffer_ de salida asíncrona (por defecto ``4096``)." -#: ../Doc/library/asynchat.rst:63 +#: ../Doc/library/asynchat.rst:67 msgid "" "Unlike :class:`asyncore.dispatcher`, :class:`async_chat` allows you to " "define a :abbr:`FIFO (first-in, first-out)` queue of *producers*. A producer " @@ -138,7 +152,7 @@ msgstr "" "describir cómo reconocer, en una transmisión entrante desde el punto remoto, " "el final de esta transmisión o un punto de ruptura importante en la misma." -#: ../Doc/library/asynchat.rst:76 +#: ../Doc/library/asynchat.rst:80 msgid "" "To build a functioning :class:`async_chat` subclass your input methods :" "meth:`collect_incoming_data` and :meth:`found_terminator` must handle the " @@ -150,7 +164,7 @@ msgstr "" "tratar los datos que el canal recibe asíncronamente. Los métodos se " "describen a continuación." -#: ../Doc/library/asynchat.rst:84 +#: ../Doc/library/asynchat.rst:88 msgid "" "Pushes a ``None`` on to the producer queue. When this producer is popped off " "the queue it causes the channel to be closed." @@ -158,7 +172,7 @@ msgstr "" "Añade un ``None`` en la cola de productores. Cuando este productor se extrae " "de la cola, hace que el canal se cierre." -#: ../Doc/library/asynchat.rst:90 +#: ../Doc/library/asynchat.rst:94 msgid "" "Called with *data* holding an arbitrary amount of received data. The " "default method, which must be overridden, raises a :exc:" @@ -168,7 +182,7 @@ msgstr "" "El método por defecto, que debe ser reemplazado, lanza una excepción :exc:" "`NotImplementedError`." -#: ../Doc/library/asynchat.rst:97 +#: ../Doc/library/asynchat.rst:101 msgid "" "In emergencies this method will discard any data held in the input and/or " "output buffers and the producer queue." @@ -176,7 +190,7 @@ msgstr "" "En situaciones de emergencia, este método descarta cualquier dato albergado " "en los búfers de entrada y/o salida y en la cola del productor." -#: ../Doc/library/asynchat.rst:103 +#: ../Doc/library/asynchat.rst:107 msgid "" "Called when the incoming data stream matches the termination condition set " "by :meth:`set_terminator`. The default method, which must be overridden, " @@ -189,11 +203,11 @@ msgstr "" "Los datos de entrada en búfer deberían estar disponibles a través de un " "atributo de instancia." -#: ../Doc/library/asynchat.rst:111 +#: ../Doc/library/asynchat.rst:115 msgid "Returns the current terminator for the channel." msgstr "Retorna el terminador actual del canal." -#: ../Doc/library/asynchat.rst:116 +#: ../Doc/library/asynchat.rst:120 msgid "" "Pushes data on to the channel's queue to ensure its transmission. This is " "all you need to do to have the channel write the data out to the network, " @@ -205,10 +219,11 @@ msgstr "" "aunque es posible usar productores personalizados en esquemas más complejos " "para implementar características como encriptación o fragmentación." -#: ../Doc/library/asynchat.rst:124 +#: ../Doc/library/asynchat.rst:128 +#, fuzzy msgid "" "Takes a producer object and adds it to the producer queue associated with " -"the channel. When all currently-pushed producers have been exhausted the " +"the channel. When all currently pushed producers have been exhausted the " "channel will consume this producer's data by calling its :meth:`more` method " "and send the data to the remote endpoint." msgstr "" @@ -217,7 +232,7 @@ msgstr "" "el canal consumirá los datos de este productor llamando al método :meth:" "`more`, y enviando los datos al punto remoto." -#: ../Doc/library/asynchat.rst:132 +#: ../Doc/library/asynchat.rst:136 msgid "" "Sets the terminating condition to be recognized on the channel. ``term`` " "may be any of three types of value, corresponding to three different ways to " @@ -228,19 +243,19 @@ msgstr "" "correspondientes a tres formas diferentes de tratar los datos de protocolo " "entrantes." -#: ../Doc/library/asynchat.rst:137 +#: ../Doc/library/asynchat.rst:141 msgid "term" msgstr "término" -#: ../Doc/library/asynchat.rst:137 +#: ../Doc/library/asynchat.rst:141 msgid "Description" msgstr "Descripción" -#: ../Doc/library/asynchat.rst:139 +#: ../Doc/library/asynchat.rst:143 msgid "*string*" msgstr "*string*" -#: ../Doc/library/asynchat.rst:139 +#: ../Doc/library/asynchat.rst:143 msgid "" "Will call :meth:`found_terminator` when the string is found in the input " "stream" @@ -248,11 +263,11 @@ msgstr "" "Llamará a :meth:`found_terminator` cuando la cadena de caracteres se " "encuentre en el flujo de datos de entrada" -#: ../Doc/library/asynchat.rst:142 +#: ../Doc/library/asynchat.rst:146 msgid "*integer*" msgstr "*integer*" -#: ../Doc/library/asynchat.rst:142 +#: ../Doc/library/asynchat.rst:146 msgid "" "Will call :meth:`found_terminator` when the indicated number of characters " "have been received" @@ -260,15 +275,15 @@ msgstr "" "Llamará a :meth:`found_terminator` cuando el número de caracteres indicado " "se haya recibido" -#: ../Doc/library/asynchat.rst:146 +#: ../Doc/library/asynchat.rst:150 msgid "``None``" msgstr "``None``" -#: ../Doc/library/asynchat.rst:146 +#: ../Doc/library/asynchat.rst:150 msgid "The channel continues to collect data forever" msgstr "El canal continúa recopilando datos indefinidamente" -#: ../Doc/library/asynchat.rst:150 +#: ../Doc/library/asynchat.rst:154 msgid "" "Note that any data following the terminator will be available for reading by " "the channel after :meth:`found_terminator` is called." @@ -277,11 +292,11 @@ msgstr "" "disponible para ser leído por el canal después de llamar a :meth:" "`found_terminator`." -#: ../Doc/library/asynchat.rst:157 +#: ../Doc/library/asynchat.rst:161 msgid "asynchat Example" msgstr "Ejemplo de asynchat" -#: ../Doc/library/asynchat.rst:159 +#: ../Doc/library/asynchat.rst:163 msgid "" "The following partial example shows how HTTP requests can be read with :" "class:`async_chat`. A web server might create an :class:" @@ -297,7 +312,7 @@ msgstr "" "detectar la línea vacía presente al final de las cabeceras HTTP, y una " "bandera indica que las cabeceras se están leyendo." -#: ../Doc/library/asynchat.rst:166 +#: ../Doc/library/asynchat.rst:170 msgid "" "Once the headers have been read, if the request is of type POST (indicating " "that further data are present in the input stream) then the ``Content-Length:" @@ -309,7 +324,7 @@ msgstr "" "cabecera ``Content-Length:`` se utiliza para establecer un terminador " "numérico para leer la cantidad de datos correcta en el canal." -#: ../Doc/library/asynchat.rst:171 +#: ../Doc/library/asynchat.rst:175 msgid "" "The :meth:`handle_request` method is called once all relevant input has been " "marshalled, after setting the channel terminator to ``None`` to ensure that " @@ -319,3 +334,6 @@ msgstr "" "relevantes han sido serializadas (*marshalled*), tras establecer el " "terminador del canal a ``None`` para asegurarse de que cualquier dato " "extraño enviado por el cliente web es ignorado. ::" + +#~ msgid "Please use :mod:`asyncio` instead." +#~ msgstr "Usar :mod:`asyncio` en su lugar." diff --git a/library/asyncio-api-index.po b/library/asyncio-api-index.po index fa3bbd0da7..204287d24d 100644 --- a/library/asyncio-api-index.po +++ b/library/asyncio-api-index.po @@ -10,16 +10,16 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-08-04 13:57+0200\n" "Last-Translator: Cristián Maureira-Fredes \n" -"Language-Team: python-doc-es\n" "Language: es\n" +"Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" -"Generated-By: Babel 2.9.1\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/library/asyncio-api-index.rst:6 msgid "High-level API Index" @@ -51,113 +51,144 @@ msgid "Create event loop, run a coroutine, close the loop." msgstr "Crea un loop de eventos, ejecuta una corrutina, cierra el loop." #: ../Doc/library/asyncio-api-index.rst:24 +#, fuzzy +msgid ":class:`Runner`" +msgstr ":class:`Queue`" + +#: ../Doc/library/asyncio-api-index.rst:25 +msgid "A context manager that simplifies multiple async function calls." +msgstr "" + +#: ../Doc/library/asyncio-api-index.rst:27 +msgid ":class:`Task`" +msgstr ":class:`Task`" + +#: ../Doc/library/asyncio-api-index.rst:28 +msgid "Task object." +msgstr "Objeto Tarea." + +#: ../Doc/library/asyncio-api-index.rst:30 +#, fuzzy +msgid ":class:`TaskGroup`" +msgstr ":class:`Task`" + +#: ../Doc/library/asyncio-api-index.rst:31 +msgid "" +"A context manager that holds a group of tasks. Provides a convenient and " +"reliable way to wait for all tasks in the group to finish." +msgstr "" + +#: ../Doc/library/asyncio-api-index.rst:35 msgid ":func:`create_task`" msgstr ":func:`create_task`" -#: ../Doc/library/asyncio-api-index.rst:25 -msgid "Start an asyncio Task." +#: ../Doc/library/asyncio-api-index.rst:36 +#, fuzzy +msgid "Start an asyncio Task, then returns it." msgstr "Lanza una Tarea asyncio." -#: ../Doc/library/asyncio-api-index.rst:27 +#: ../Doc/library/asyncio-api-index.rst:38 +msgid ":func:`current_task`" +msgstr ":func:`current_task`" + +#: ../Doc/library/asyncio-api-index.rst:39 +msgid "Return the current Task." +msgstr "Retorna la Tarea actual." + +#: ../Doc/library/asyncio-api-index.rst:41 +msgid ":func:`all_tasks`" +msgstr ":func:`all_tasks`" + +#: ../Doc/library/asyncio-api-index.rst:42 +#, fuzzy +msgid "Return all tasks that are not yet finished for an event loop." +msgstr "Retorna todas las tareas para un loop de eventos." + +#: ../Doc/library/asyncio-api-index.rst:44 msgid "``await`` :func:`sleep`" msgstr "``await`` :func:`sleep`" -#: ../Doc/library/asyncio-api-index.rst:28 +#: ../Doc/library/asyncio-api-index.rst:45 msgid "Sleep for a number of seconds." msgstr "Duerme por un número de segundos." -#: ../Doc/library/asyncio-api-index.rst:30 +#: ../Doc/library/asyncio-api-index.rst:47 msgid "``await`` :func:`gather`" msgstr "``await`` :func:`gather`" -#: ../Doc/library/asyncio-api-index.rst:31 +#: ../Doc/library/asyncio-api-index.rst:48 msgid "Schedule and wait for things concurrently." msgstr "Programa y espera por cosas concurrentemente." -#: ../Doc/library/asyncio-api-index.rst:33 +#: ../Doc/library/asyncio-api-index.rst:50 msgid "``await`` :func:`wait_for`" msgstr "``await`` :func:`wait_for`" -#: ../Doc/library/asyncio-api-index.rst:34 +#: ../Doc/library/asyncio-api-index.rst:51 msgid "Run with a timeout." msgstr "Ejecuta con un tiempo de expiración." -#: ../Doc/library/asyncio-api-index.rst:36 +#: ../Doc/library/asyncio-api-index.rst:53 msgid "``await`` :func:`shield`" msgstr "``await`` :func:`shield`" -#: ../Doc/library/asyncio-api-index.rst:37 +#: ../Doc/library/asyncio-api-index.rst:54 msgid "Shield from cancellation." msgstr "Protege de la cancelación." -#: ../Doc/library/asyncio-api-index.rst:39 +#: ../Doc/library/asyncio-api-index.rst:56 msgid "``await`` :func:`wait`" msgstr "``await`` :func:`wait`" -#: ../Doc/library/asyncio-api-index.rst:40 +#: ../Doc/library/asyncio-api-index.rst:57 msgid "Monitor for completion." msgstr "Monitorea la completitud." -#: ../Doc/library/asyncio-api-index.rst:42 -msgid ":func:`current_task`" -msgstr ":func:`current_task`" - -#: ../Doc/library/asyncio-api-index.rst:43 -msgid "Return the current Task." -msgstr "Retorna la Tarea actual." - -#: ../Doc/library/asyncio-api-index.rst:45 -msgid ":func:`all_tasks`" -msgstr ":func:`all_tasks`" - -#: ../Doc/library/asyncio-api-index.rst:46 -msgid "Return all tasks for an event loop." -msgstr "Retorna todas las tareas para un loop de eventos." - -#: ../Doc/library/asyncio-api-index.rst:48 -msgid ":class:`Task`" -msgstr ":class:`Task`" +#: ../Doc/library/asyncio-api-index.rst:59 +#, fuzzy +msgid ":func:`timeout`" +msgstr ":func:`run`" -#: ../Doc/library/asyncio-api-index.rst:49 -msgid "Task object." -msgstr "Objeto Tarea." +#: ../Doc/library/asyncio-api-index.rst:60 +msgid "Run with a timeout. Useful in cases when ``wait_for`` is not suitable." +msgstr "" -#: ../Doc/library/asyncio-api-index.rst:51 +#: ../Doc/library/asyncio-api-index.rst:62 msgid ":func:`to_thread`" msgstr ":func:`to_thread`" -#: ../Doc/library/asyncio-api-index.rst:52 +#: ../Doc/library/asyncio-api-index.rst:63 msgid "Asynchronously run a function in a separate OS thread." msgstr "" "Ejecute de forma asincrónica una función en un subproceso del sistema " "operativo independiente." -#: ../Doc/library/asyncio-api-index.rst:54 +#: ../Doc/library/asyncio-api-index.rst:65 msgid ":func:`run_coroutine_threadsafe`" msgstr ":func:`run_coroutine_threadsafe`" -#: ../Doc/library/asyncio-api-index.rst:55 +#: ../Doc/library/asyncio-api-index.rst:66 msgid "Schedule a coroutine from another OS thread." msgstr "Programa una corrutina de desde otro hilo del sistema operativo." -#: ../Doc/library/asyncio-api-index.rst:57 +#: ../Doc/library/asyncio-api-index.rst:68 msgid "``for in`` :func:`as_completed`" msgstr "``for in`` :func:`as_completed`" -#: ../Doc/library/asyncio-api-index.rst:58 +#: ../Doc/library/asyncio-api-index.rst:69 msgid "Monitor for completion with a ``for`` loop." msgstr "Monitorea por completitud con un loop ``for``." -#: ../Doc/library/asyncio-api-index.rst:62 -#: ../Doc/library/asyncio-api-index.rst:98 -#: ../Doc/library/asyncio-api-index.rst:122 -#: ../Doc/library/asyncio-api-index.rst:158 -#: ../Doc/library/asyncio-api-index.rst:191 -#: ../Doc/library/asyncio-api-index.rst:216 +#: ../Doc/library/asyncio-api-index.rst:73 +#: ../Doc/library/asyncio-api-index.rst:109 +#: ../Doc/library/asyncio-api-index.rst:133 +#: ../Doc/library/asyncio-api-index.rst:169 +#: ../Doc/library/asyncio-api-index.rst:205 +#: ../Doc/library/asyncio-api-index.rst:230 msgid "Examples" msgstr "Ejemplos" -#: ../Doc/library/asyncio-api-index.rst:63 +#: ../Doc/library/asyncio-api-index.rst:74 msgid "" ":ref:`Using asyncio.gather() to run things in parallel " "`." @@ -165,7 +196,7 @@ msgstr "" ":ref:`Usando asyncio.gather() para ejecutar cosas en paralelo " "`." -#: ../Doc/library/asyncio-api-index.rst:66 +#: ../Doc/library/asyncio-api-index.rst:77 msgid "" ":ref:`Using asyncio.wait_for() to enforce a timeout " "`." @@ -173,25 +204,25 @@ msgstr "" ":ref:`Usando asyncio.wait_for() para forzar un tiempo de expiración " "`." -#: ../Doc/library/asyncio-api-index.rst:69 +#: ../Doc/library/asyncio-api-index.rst:80 msgid ":ref:`Cancellation `." msgstr ":ref:`Cancelación `." -#: ../Doc/library/asyncio-api-index.rst:71 +#: ../Doc/library/asyncio-api-index.rst:82 msgid ":ref:`Using asyncio.sleep() `." msgstr ":ref:`Usando asyncio.sleep() `." -#: ../Doc/library/asyncio-api-index.rst:73 +#: ../Doc/library/asyncio-api-index.rst:84 msgid "See also the main :ref:`Tasks documentation page `." msgstr "" "Ver también la :ref:`página principal de documentación de Tareas " "`." -#: ../Doc/library/asyncio-api-index.rst:77 +#: ../Doc/library/asyncio-api-index.rst:88 msgid "Queues" msgstr "Colas" -#: ../Doc/library/asyncio-api-index.rst:79 +#: ../Doc/library/asyncio-api-index.rst:90 msgid "" "Queues should be used to distribute work amongst multiple asyncio Tasks, " "implement connection pools, and pub/sub patterns." @@ -199,31 +230,31 @@ msgstr "" "Las colas deberían ser usadas para distribuir trabajo entre múltiples Tareas " "asyncio, implementar pools de conexiones y patrones pub/sub." -#: ../Doc/library/asyncio-api-index.rst:87 +#: ../Doc/library/asyncio-api-index.rst:98 msgid ":class:`Queue`" msgstr ":class:`Queue`" -#: ../Doc/library/asyncio-api-index.rst:88 +#: ../Doc/library/asyncio-api-index.rst:99 msgid "A FIFO queue." msgstr "Una cola FIFO." -#: ../Doc/library/asyncio-api-index.rst:90 +#: ../Doc/library/asyncio-api-index.rst:101 msgid ":class:`PriorityQueue`" msgstr ":class:`PriorityQueue`" -#: ../Doc/library/asyncio-api-index.rst:91 +#: ../Doc/library/asyncio-api-index.rst:102 msgid "A priority queue." msgstr "Una cola de prioridad." -#: ../Doc/library/asyncio-api-index.rst:93 +#: ../Doc/library/asyncio-api-index.rst:104 msgid ":class:`LifoQueue`" msgstr ":class:`LifoQueue`" -#: ../Doc/library/asyncio-api-index.rst:94 +#: ../Doc/library/asyncio-api-index.rst:105 msgid "A LIFO queue." msgstr "Una cola LIFO." -#: ../Doc/library/asyncio-api-index.rst:99 +#: ../Doc/library/asyncio-api-index.rst:110 msgid "" ":ref:`Using asyncio.Queue to distribute workload between several Tasks " "`." @@ -231,165 +262,180 @@ msgstr "" ":ref:`Usando asyncio.Queue para distribuir carga de trabajo entre varias " "Tareas `." -#: ../Doc/library/asyncio-api-index.rst:102 +#: ../Doc/library/asyncio-api-index.rst:113 msgid "See also the :ref:`Queues documentation page `." msgstr "" "Ver también la :ref:`página de documentación de Colas `." -#: ../Doc/library/asyncio-api-index.rst:106 +#: ../Doc/library/asyncio-api-index.rst:117 msgid "Subprocesses" msgstr "Subprocesos" -#: ../Doc/library/asyncio-api-index.rst:108 +#: ../Doc/library/asyncio-api-index.rst:119 msgid "Utilities to spawn subprocesses and run shell commands." msgstr "Utilidades para generar subprocesos y ejecutar comandos de consola." -#: ../Doc/library/asyncio-api-index.rst:114 +#: ../Doc/library/asyncio-api-index.rst:125 msgid "``await`` :func:`create_subprocess_exec`" msgstr "``await`` :func:`create_subprocess_exec`" -#: ../Doc/library/asyncio-api-index.rst:115 +#: ../Doc/library/asyncio-api-index.rst:126 msgid "Create a subprocess." msgstr "Crea un subproceso." -#: ../Doc/library/asyncio-api-index.rst:117 +#: ../Doc/library/asyncio-api-index.rst:128 msgid "``await`` :func:`create_subprocess_shell`" msgstr "``await`` :func:`create_subprocess_shell`" -#: ../Doc/library/asyncio-api-index.rst:118 +#: ../Doc/library/asyncio-api-index.rst:129 msgid "Run a shell command." msgstr "Ejecuta un comando de consola." -#: ../Doc/library/asyncio-api-index.rst:123 +#: ../Doc/library/asyncio-api-index.rst:134 msgid ":ref:`Executing a shell command `." msgstr "" ":ref:`Ejecutando un comando de consola `." -#: ../Doc/library/asyncio-api-index.rst:125 +#: ../Doc/library/asyncio-api-index.rst:136 msgid "See also the :ref:`subprocess APIs ` documentation." msgstr "" "Ver también la documentación de las :ref:`APIs de subprocesos `." -#: ../Doc/library/asyncio-api-index.rst:130 +#: ../Doc/library/asyncio-api-index.rst:141 msgid "Streams" msgstr "Flujos" -#: ../Doc/library/asyncio-api-index.rst:132 +#: ../Doc/library/asyncio-api-index.rst:143 msgid "High-level APIs to work with network IO." msgstr "APIs de alto nivel para trabajar con IO de red." -#: ../Doc/library/asyncio-api-index.rst:138 +#: ../Doc/library/asyncio-api-index.rst:149 msgid "``await`` :func:`open_connection`" msgstr "``await`` :func:`open_connection`" -#: ../Doc/library/asyncio-api-index.rst:139 +#: ../Doc/library/asyncio-api-index.rst:150 msgid "Establish a TCP connection." msgstr "Establece una conexión TCP." -#: ../Doc/library/asyncio-api-index.rst:141 +#: ../Doc/library/asyncio-api-index.rst:152 msgid "``await`` :func:`open_unix_connection`" msgstr "``await`` :func:`open_unix_connection`" -#: ../Doc/library/asyncio-api-index.rst:142 +#: ../Doc/library/asyncio-api-index.rst:153 msgid "Establish a Unix socket connection." msgstr "Establece una conexión de un socket Unix." -#: ../Doc/library/asyncio-api-index.rst:144 +#: ../Doc/library/asyncio-api-index.rst:155 msgid "``await`` :func:`start_server`" msgstr "``await`` :func:`start_server`" -#: ../Doc/library/asyncio-api-index.rst:145 +#: ../Doc/library/asyncio-api-index.rst:156 msgid "Start a TCP server." msgstr "Lanza un servidor TCP." -#: ../Doc/library/asyncio-api-index.rst:147 +#: ../Doc/library/asyncio-api-index.rst:158 msgid "``await`` :func:`start_unix_server`" msgstr "``await`` :func:`start_unix_server`" -#: ../Doc/library/asyncio-api-index.rst:148 +#: ../Doc/library/asyncio-api-index.rst:159 msgid "Start a Unix socket server." msgstr "Lanza un servidor de sockets Unix." -#: ../Doc/library/asyncio-api-index.rst:150 +#: ../Doc/library/asyncio-api-index.rst:161 msgid ":class:`StreamReader`" msgstr ":class:`StreamReader`" -#: ../Doc/library/asyncio-api-index.rst:151 +#: ../Doc/library/asyncio-api-index.rst:162 msgid "High-level async/await object to receive network data." msgstr "Objeto de alto nivel async/await para recibir datos de red." -#: ../Doc/library/asyncio-api-index.rst:153 +#: ../Doc/library/asyncio-api-index.rst:164 msgid ":class:`StreamWriter`" msgstr ":class:`StreamWriter`" -#: ../Doc/library/asyncio-api-index.rst:154 +#: ../Doc/library/asyncio-api-index.rst:165 msgid "High-level async/await object to send network data." msgstr "Objeto de alto nivel async/await para enviar datos de red." -#: ../Doc/library/asyncio-api-index.rst:159 +#: ../Doc/library/asyncio-api-index.rst:170 msgid ":ref:`Example TCP client `." msgstr ":ref:`Cliente TCP de ejemplo `." -#: ../Doc/library/asyncio-api-index.rst:161 +#: ../Doc/library/asyncio-api-index.rst:172 msgid "See also the :ref:`streams APIs ` documentation." msgstr "" "Ver también la documentación de :ref:`APIs de flujos `." -#: ../Doc/library/asyncio-api-index.rst:166 +#: ../Doc/library/asyncio-api-index.rst:177 msgid "Synchronization" msgstr "Sincronización" -#: ../Doc/library/asyncio-api-index.rst:168 +#: ../Doc/library/asyncio-api-index.rst:179 msgid "Threading-like synchronization primitives that can be used in Tasks." msgstr "" "Primitivas de sincronización al estilo hilos que pueden ser usadas en Tareas." -#: ../Doc/library/asyncio-api-index.rst:174 +#: ../Doc/library/asyncio-api-index.rst:185 msgid ":class:`Lock`" msgstr ":class:`Lock`" -#: ../Doc/library/asyncio-api-index.rst:175 +#: ../Doc/library/asyncio-api-index.rst:186 msgid "A mutex lock." msgstr "Un bloqueo mutex." -#: ../Doc/library/asyncio-api-index.rst:177 +#: ../Doc/library/asyncio-api-index.rst:188 msgid ":class:`Event`" msgstr ":class:`Event`" -#: ../Doc/library/asyncio-api-index.rst:178 +#: ../Doc/library/asyncio-api-index.rst:189 msgid "An event object." msgstr "Un objeto de evento." -#: ../Doc/library/asyncio-api-index.rst:180 +#: ../Doc/library/asyncio-api-index.rst:191 msgid ":class:`Condition`" msgstr ":class:`Condition`" -#: ../Doc/library/asyncio-api-index.rst:181 +#: ../Doc/library/asyncio-api-index.rst:192 msgid "A condition object." msgstr "Un objeto de condición." -#: ../Doc/library/asyncio-api-index.rst:183 +#: ../Doc/library/asyncio-api-index.rst:194 msgid ":class:`Semaphore`" msgstr ":class:`Semaphore`" -#: ../Doc/library/asyncio-api-index.rst:184 +#: ../Doc/library/asyncio-api-index.rst:195 msgid "A semaphore." msgstr "Un semáforo." -#: ../Doc/library/asyncio-api-index.rst:186 +#: ../Doc/library/asyncio-api-index.rst:197 msgid ":class:`BoundedSemaphore`" msgstr ":class:`BoundedSemaphore`" -#: ../Doc/library/asyncio-api-index.rst:187 +#: ../Doc/library/asyncio-api-index.rst:198 msgid "A bounded semaphore." msgstr "Un semáforo acotado." -#: ../Doc/library/asyncio-api-index.rst:192 +#: ../Doc/library/asyncio-api-index.rst:200 +#, fuzzy +msgid ":class:`Barrier`" +msgstr ":class:`StreamWriter`" + +#: ../Doc/library/asyncio-api-index.rst:201 +#, fuzzy +msgid "A barrier object." +msgstr "Objeto Tarea." + +#: ../Doc/library/asyncio-api-index.rst:206 msgid ":ref:`Using asyncio.Event `." msgstr ":ref:`Usando asyncio.Event `." -#: ../Doc/library/asyncio-api-index.rst:194 +#: ../Doc/library/asyncio-api-index.rst:208 +#, fuzzy +msgid ":ref:`Using asyncio.Barrier `." +msgstr ":ref:`Usando asyncio.sleep() `." + +#: ../Doc/library/asyncio-api-index.rst:210 msgid "" "See also the documentation of asyncio :ref:`synchronization primitives " "`." @@ -397,34 +443,31 @@ msgstr "" "Ver también la documentación de las :ref:`primitivas de sincronización " "` de asyncio." -#: ../Doc/library/asyncio-api-index.rst:199 +#: ../Doc/library/asyncio-api-index.rst:215 msgid "Exceptions" msgstr "Excepciones" -#: ../Doc/library/asyncio-api-index.rst:206 -msgid ":exc:`asyncio.TimeoutError`" -msgstr ":exc:`asyncio.TimeoutError`" +#: ../Doc/library/asyncio-api-index.rst:222 +msgid ":exc:`asyncio.CancelledError`" +msgstr ":exc:`asyncio.CancelledError`" -#: ../Doc/library/asyncio-api-index.rst:207 -msgid "" -"Raised on timeout by functions like :func:`wait_for`. Keep in mind that " -"``asyncio.TimeoutError`` is **unrelated** to the built-in :exc:" -"`TimeoutError` exception." +#: ../Doc/library/asyncio-api-index.rst:223 +msgid "Raised when a Task is cancelled. See also :meth:`Task.cancel`." msgstr "" -"Lanzado en tiempos de expiración por funciones como :func:`wait_for`. Ten en " -"mente que `asyncio.TimeoutError`` **no está relacionada** con la excepción " -"predefinida :exc:`TimeoutError`." +"Lanzada cuando una Tarea es cancelada. Ver también :meth:`Task.cancel`." -#: ../Doc/library/asyncio-api-index.rst:211 -msgid ":exc:`asyncio.CancelledError`" +#: ../Doc/library/asyncio-api-index.rst:225 +#, fuzzy +msgid ":exc:`asyncio.BrokenBarrierError`" msgstr ":exc:`asyncio.CancelledError`" -#: ../Doc/library/asyncio-api-index.rst:212 -msgid "Raised when a Task is cancelled. See also :meth:`Task.cancel`." +#: ../Doc/library/asyncio-api-index.rst:226 +#, fuzzy +msgid "Raised when a Barrier is broken. See also :meth:`Barrier.wait`." msgstr "" "Lanzada cuando una Tarea es cancelada. Ver también :meth:`Task.cancel`." -#: ../Doc/library/asyncio-api-index.rst:217 +#: ../Doc/library/asyncio-api-index.rst:231 msgid "" ":ref:`Handling CancelledError to run code on cancellation request " "`." @@ -432,10 +475,22 @@ msgstr "" ":ref:`Gestionando CancelledError para ejecutar código en petición de " "cancelación `." -#: ../Doc/library/asyncio-api-index.rst:220 +#: ../Doc/library/asyncio-api-index.rst:234 msgid "" "See also the full list of :ref:`asyncio-specific exceptions `." msgstr "" "Ver también la lista completa de :ref:`excepciones específicas de asyncio " "`." + +#~ msgid ":exc:`asyncio.TimeoutError`" +#~ msgstr ":exc:`asyncio.TimeoutError`" + +#~ msgid "" +#~ "Raised on timeout by functions like :func:`wait_for`. Keep in mind that " +#~ "``asyncio.TimeoutError`` is **unrelated** to the built-in :exc:" +#~ "`TimeoutError` exception." +#~ msgstr "" +#~ "Lanzado en tiempos de expiración por funciones como :func:`wait_for`. Ten " +#~ "en mente que `asyncio.TimeoutError`` **no está relacionada** con la " +#~ "excepción predefinida :exc:`TimeoutError`." diff --git a/library/asyncio-dev.po b/library/asyncio-dev.po index 2ded0f12c5..b7af37c13a 100644 --- a/library/asyncio-dev.po +++ b/library/asyncio-dev.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-03-19 11:16+0100\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-08-04 13:56+0200\n" "Last-Translator: Cristián Maureira-Fredes \n" "Language: es\n" @@ -19,8 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.8.0\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/library/asyncio-dev.rst:7 msgid "Developing with asyncio" @@ -130,8 +129,9 @@ msgstr "" "tiempo en realizar una operación E/S." #: ../Doc/library/asyncio-dev.rst:60 +#, fuzzy msgid "" -"Callbacks taking longer than 100ms are logged. The :attr:`loop." +"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 "" @@ -212,24 +212,14 @@ msgstr "" msgid "" "There is currently no way to schedule coroutines or callbacks directly from " "a different process (such as one started with :mod:`multiprocessing`). The :" -"ref:`Event Loop Methods ` section lists APIs that can " -"read from pipes and watch file descriptors without blocking the event loop. " -"In addition, asyncio's :ref:`Subprocess ` APIs provide a " -"way to start a process and communicate with it from the event loop. Lastly, " -"the aforementioned :meth:`loop.run_in_executor` method can also be used with " -"a :class:`concurrent.futures.ProcessPoolExecutor` to execute code in a " +"ref:`asyncio-event-loop-methods` section lists APIs that can read from pipes " +"and watch file descriptors without blocking the event loop. In addition, " +"asyncio's :ref:`Subprocess ` APIs provide a way to start " +"a process and communicate with it from the event loop. Lastly, the " +"aforementioned :meth:`loop.run_in_executor` method can also be used with a :" +"class:`concurrent.futures.ProcessPoolExecutor` to execute code in a " "different process." msgstr "" -"Actualmente no hay forma de programar corrutinas o devoluciones de llamada " -"directamente desde un proceso diferente (como uno que comenzó con :mod:" -"`multiprocessing`). La sección :ref:`Event Loop Methods ` enumera las APIs que pueden leer desde las tuberías y ver " -"descriptores de archivos sin bloquear el bucle de eventos. Además, las APIs " -"de asyncio :ref:`Subprocess ` proporcionan una forma de " -"iniciar un proceso y comunicarse con él desde el bucle de eventos. Por " -"último, el método :meth:`loop.run_in_executor` mencionado anteriormente " -"también se puede usar con un :class:`concurrent.futures.ProcessPoolExecutor` " -"para ejecutar código en un proceso diferente." #: ../Doc/library/asyncio-dev.rst:124 msgid "Running Blocking Code" @@ -277,11 +267,18 @@ msgstr "" "El nivel de log por defecto es :py:data:`logging.INFO`, el cual puede ser " "fácilmente ajustado::" -#: ../Doc/library/asyncio-dev.rst:154 +#: ../Doc/library/asyncio-dev.rst:151 +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 "" + +#: ../Doc/library/asyncio-dev.rst:159 msgid "Detect never-awaited coroutines" msgstr "Detectar corrutinas no esperadas" -#: ../Doc/library/asyncio-dev.rst:156 +#: ../Doc/library/asyncio-dev.rst:161 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:" @@ -291,15 +288,15 @@ msgstr "" "``coro()`` en lugar de ``await coro()``) o la corrutina no es programada " "con :meth:`asyncio.create_task`, asyncio emitirá una :exc:`RuntimeWarning`::" -#: ../Doc/library/asyncio-dev.rst:171 ../Doc/library/asyncio-dev.rst:216 +#: ../Doc/library/asyncio-dev.rst:176 ../Doc/library/asyncio-dev.rst:221 msgid "Output::" msgstr "Salida::" -#: ../Doc/library/asyncio-dev.rst:176 ../Doc/library/asyncio-dev.rst:232 +#: ../Doc/library/asyncio-dev.rst:181 ../Doc/library/asyncio-dev.rst:237 msgid "Output in debug mode::" msgstr "Salida en modo depuración::" -#: ../Doc/library/asyncio-dev.rst:189 +#: ../Doc/library/asyncio-dev.rst:194 msgid "" "The usual fix is to either await the coroutine or call the :meth:`asyncio." "create_task` function::" @@ -307,11 +304,11 @@ msgstr "" "La solución habitual es esperar la corrutina o llamar a la función :meth:" "`asyncio.create_task`::" -#: ../Doc/library/asyncio-dev.rst:197 +#: ../Doc/library/asyncio-dev.rst:202 msgid "Detect never-retrieved exceptions" msgstr "Detectar excepciones nunca recuperadas" -#: ../Doc/library/asyncio-dev.rst:199 +#: ../Doc/library/asyncio-dev.rst:204 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 " @@ -323,14 +320,36 @@ msgstr "" "este caso, asyncio emitiría un mensaje de registro cuando el objeto Futuro " "fuera recolectado como basura." -#: ../Doc/library/asyncio-dev.rst:204 +#: ../Doc/library/asyncio-dev.rst:209 msgid "Example of an unhandled exception::" msgstr "Ejemplo de una excepción no manejada::" -#: ../Doc/library/asyncio-dev.rst:227 +#: ../Doc/library/asyncio-dev.rst:232 msgid "" ":ref:`Enable the debug mode ` to get the traceback where " "the task was created::" msgstr "" ":ref:`Habilita el modo depuración ` para obtener el " "seguimiento de pila (*traceback*) donde la tarea fue creada::" + +#~ msgid "" +#~ "There is currently no way to schedule coroutines or callbacks directly " +#~ "from a different process (such as one started with :mod:" +#~ "`multiprocessing`). The :ref:`Event Loop Methods ` " +#~ "section lists APIs that can read from pipes and watch file descriptors " +#~ "without blocking the event loop. In addition, asyncio's :ref:`Subprocess " +#~ "` APIs provide a way to start a process and " +#~ "communicate with it from the event loop. Lastly, the aforementioned :meth:" +#~ "`loop.run_in_executor` method can also be used with a :class:`concurrent." +#~ "futures.ProcessPoolExecutor` to execute code in a different process." +#~ msgstr "" +#~ "Actualmente no hay forma de programar corrutinas o devoluciones de " +#~ "llamada directamente desde un proceso diferente (como uno que comenzó " +#~ "con :mod:`multiprocessing`). La sección :ref:`Event Loop Methods ` enumera las APIs que pueden leer desde las tuberías y ver " +#~ "descriptores de archivos sin bloquear el bucle de eventos. Además, las " +#~ "APIs de asyncio :ref:`Subprocess ` proporcionan una " +#~ "forma de iniciar un proceso y comunicarse con él desde el bucle de " +#~ "eventos. Por último, el método :meth:`loop.run_in_executor` mencionado " +#~ "anteriormente también se puede usar con un :class:`concurrent.futures." +#~ "ProcessPoolExecutor` para ejecutar código en un proceso diferente." diff --git a/library/asyncio-eventloop.po b/library/asyncio-eventloop.po index bddfb4bf71..07dbfae263 100644 --- a/library/asyncio-eventloop.po +++ b/library/asyncio-eventloop.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2022-01-05 17:06+0100\n" "Last-Translator: Marcos Medrano \n" "Language: es\n" @@ -19,14 +19,13 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" -#: ../Doc/library/asyncio-eventloop.rst:6 +#: ../Doc/library/asyncio-eventloop.rst:8 msgid "Event Loop" msgstr "Bucle de eventos" -#: ../Doc/library/asyncio-eventloop.rst:8 +#: ../Doc/library/asyncio-eventloop.rst:10 msgid "" "**Source code:** :source:`Lib/asyncio/events.py`, :source:`Lib/asyncio/" "base_events.py`" @@ -34,11 +33,11 @@ msgstr "" "**Código fuente:** :source:`Lib/asyncio/events.py`, :source:`Lib/asyncio/" "base_events.py`" -#: ../Doc/library/asyncio-eventloop.rst:14 +#: ../Doc/library/asyncio-eventloop.rst:16 msgid "Preface" msgstr "Prólogo" -#: ../Doc/library/asyncio-eventloop.rst:15 +#: ../Doc/library/asyncio-eventloop.rst:17 msgid "" "The event loop is the core of every asyncio application. Event loops run " "asynchronous tasks and callbacks, perform network IO operations, and run " @@ -48,7 +47,7 @@ msgstr "" "eventos ejecutan tareas asíncronas y llamadas de retorno, realizan " "operaciones de E/S de red y ejecutan subprocesos." -#: ../Doc/library/asyncio-eventloop.rst:19 +#: ../Doc/library/asyncio-eventloop.rst:21 msgid "" "Application developers should typically use the high-level asyncio " "functions, such as :func:`asyncio.run`, and should rarely need to reference " @@ -63,11 +62,11 @@ msgstr "" "bibliotecas y frameworks, quienes necesitan un control mas preciso sobre el " "comportamiento del bucle de eventos." -#: ../Doc/library/asyncio-eventloop.rst:26 +#: ../Doc/library/asyncio-eventloop.rst:28 msgid "Obtaining the Event Loop" msgstr "Obtención del bucle de eventos" -#: ../Doc/library/asyncio-eventloop.rst:27 +#: ../Doc/library/asyncio-eventloop.rst:29 msgid "" "The following low-level functions can be used to get, set, or create an " "event loop:" @@ -75,13 +74,13 @@ msgstr "" "Las siguientes funciones de bajo nivel se pueden utilizar para obtener, " "establecer o crear un bucle de eventos:" -#: ../Doc/library/asyncio-eventloop.rst:32 +#: ../Doc/library/asyncio-eventloop.rst:34 msgid "Return the running event loop in the current OS thread." msgstr "" "Retorna el bucle de eventos en ejecución en el hilo del sistema operativo " "actual." -#: ../Doc/library/asyncio-eventloop.rst:34 +#: ../Doc/library/asyncio-eventloop.rst:36 msgid "" "If there is no running event loop a :exc:`RuntimeError` is raised. This " "function can only be called from a coroutine or a callback." @@ -90,11 +89,11 @@ msgstr "" "Esta función únicamente puede ser llamada desde una corrutina o una llamada " "de retorno." -#: ../Doc/library/asyncio-eventloop.rst:41 +#: ../Doc/library/asyncio-eventloop.rst:43 msgid "Get the current event loop." msgstr "Obtiene bucle de eventos actual." -#: ../Doc/library/asyncio-eventloop.rst:43 +#: ../Doc/library/asyncio-eventloop.rst:45 msgid "" "If there is no current event loop set in the current OS thread, the OS " "thread is main, and :func:`set_event_loop` has not yet been called, asyncio " @@ -105,7 +104,7 @@ msgstr "" "`set_event_loop` aún no ha sido llamado, asyncio creará un nuevo bucle de " "eventos y lo establecerá como el actual." -#: ../Doc/library/asyncio-eventloop.rst:48 +#: ../Doc/library/asyncio-eventloop.rst:50 msgid "" "Because this function has rather complex behavior (especially when custom " "event loop policies are in use), using the :func:`get_running_loop` function " @@ -116,7 +115,7 @@ msgstr "" "personalizadas), usar la función :func:`get_running_loop` es preferible " "antes que :func:`get_event_loop` en corrutinas y llamadas de retorno." -#: ../Doc/library/asyncio-eventloop.rst:53 +#: ../Doc/library/asyncio-eventloop.rst:55 msgid "" "Consider also using the :func:`asyncio.run` function instead of using lower " "level functions to manually create and close an event loop." @@ -124,7 +123,7 @@ msgstr "" "Considere también usar la función :func:`asyncio.run` en lugar de usar " "funciones de bajo nivel para crear y cerrar manualmente un bucle de eventos." -#: ../Doc/library/asyncio-eventloop.rst:56 +#: ../Doc/library/asyncio-eventloop.rst:58 msgid "" "Deprecation warning is emitted if there is no running event loop. In future " "Python releases, this function will be an alias of :func:`get_running_loop`." @@ -133,17 +132,18 @@ msgstr "" "ejecución. En futuras versiones de Python, esta función será un alias de :" "func:`get_running_loop`." -#: ../Doc/library/asyncio-eventloop.rst:63 +#: ../Doc/library/asyncio-eventloop.rst:65 msgid "Set *loop* as a current event loop for the current OS thread." msgstr "" "Establece *loop* como el bucle de eventos actual para el hilo actual del " "sistema operativo." -#: ../Doc/library/asyncio-eventloop.rst:67 -msgid "Create a new event loop object." +#: ../Doc/library/asyncio-eventloop.rst:69 +#, fuzzy +msgid "Create and return a new event loop object." msgstr "Crea un nuevo objeto de bucle de eventos." -#: ../Doc/library/asyncio-eventloop.rst:69 +#: ../Doc/library/asyncio-eventloop.rst:71 msgid "" "Note that the behaviour of :func:`get_event_loop`, :func:`set_event_loop`, " "and :func:`new_event_loop` functions can be altered by :ref:`setting a " @@ -154,15 +154,15 @@ msgstr "" "modificado mediante :ref:`estableciendo una política de bucle de eventos " "personalizada `." -#: ../Doc/library/asyncio-eventloop.rst:75 +#: ../Doc/library/asyncio-eventloop.rst:77 msgid "Contents" msgstr "Contenidos" -#: ../Doc/library/asyncio-eventloop.rst:76 +#: ../Doc/library/asyncio-eventloop.rst:78 msgid "This documentation page contains the following sections:" msgstr "Esta página de documentación contiene las siguientes secciones:" -#: ../Doc/library/asyncio-eventloop.rst:78 +#: ../Doc/library/asyncio-eventloop.rst:80 msgid "" "The `Event Loop Methods`_ section is the reference documentation of the " "event loop APIs;" @@ -170,7 +170,7 @@ msgstr "" "La sección `Métodos del bucle de eventos`_ es la documentación de referencia " "de las APIs del bucle de eventos;" -#: ../Doc/library/asyncio-eventloop.rst:81 +#: ../Doc/library/asyncio-eventloop.rst:83 msgid "" "The `Callback Handles`_ section documents the :class:`Handle` and :class:" "`TimerHandle` instances which are returned from scheduling methods such as :" @@ -180,7 +180,7 @@ msgstr "" "class:`TimerHandle` las cuales son retornadas por métodos planificados como :" "meth:`loop.call_soon` y :meth:`loop.call_later`;" -#: ../Doc/library/asyncio-eventloop.rst:85 +#: ../Doc/library/asyncio-eventloop.rst:87 msgid "" "The `Server Objects`_ section documents types returned from event loop " "methods like :meth:`loop.create_server`;" @@ -188,7 +188,7 @@ msgstr "" "La sección `Objetos del servidor`_ documenta tipos retornados por los " "métodos del bucle de eventos como :meth:`loop.create_server`;" -#: ../Doc/library/asyncio-eventloop.rst:88 +#: ../Doc/library/asyncio-eventloop.rst:90 msgid "" "The `Event Loop Implementations`_ section documents the :class:" "`SelectorEventLoop` and :class:`ProactorEventLoop` classes;" @@ -196,32 +196,32 @@ msgstr "" "La sección `Implementaciones de bucle de eventos`_ documenta las clases :" "class:`SelectorEventLoop` y :class:`ProactorEventLoop`;" -#: ../Doc/library/asyncio-eventloop.rst:91 +#: ../Doc/library/asyncio-eventloop.rst:93 msgid "" "The `Examples`_ section showcases how to work with some event loop APIs." msgstr "" "La sección `Ejemplos`_ muestra como trabajar con algunas APIs de bucle de " "eventos." -#: ../Doc/library/asyncio-eventloop.rst:98 +#: ../Doc/library/asyncio-eventloop.rst:100 msgid "Event Loop Methods" msgstr "Métodos del bucle de eventos" -#: ../Doc/library/asyncio-eventloop.rst:100 +#: ../Doc/library/asyncio-eventloop.rst:102 msgid "Event loops have **low-level** APIs for the following:" msgstr "Los bucles de eventos tienen APIs de **bajo nivel** para lo siguiente:" -#: ../Doc/library/asyncio-eventloop.rst:108 +#: ../Doc/library/asyncio-eventloop.rst:110 msgid "Running and stopping the loop" msgstr "Iniciar y para el bucle" -#: ../Doc/library/asyncio-eventloop.rst:112 +#: ../Doc/library/asyncio-eventloop.rst:114 msgid "Run until the *future* (an instance of :class:`Future`) has completed." msgstr "" "Se ejecuta hasta que *future* (una instancia de :class:`Future`) se haya " "completado." -#: ../Doc/library/asyncio-eventloop.rst:115 +#: ../Doc/library/asyncio-eventloop.rst:117 msgid "" "If the argument is a :ref:`coroutine object ` it is implicitly " "scheduled to run as a :class:`asyncio.Task`." @@ -229,15 +229,15 @@ msgstr "" "Si el argumento es un :ref:`objeto corrutina ` está " "implícitamente planificado para ejecutarse como una :class:`asyncio.Task`." -#: ../Doc/library/asyncio-eventloop.rst:118 +#: ../Doc/library/asyncio-eventloop.rst:120 msgid "Return the Future's result or raise its exception." msgstr "Retorna el resultado del Futuro o genera una excepción." -#: ../Doc/library/asyncio-eventloop.rst:122 +#: ../Doc/library/asyncio-eventloop.rst:124 msgid "Run the event loop until :meth:`stop` is called." msgstr "Ejecuta el bucle de eventos hasta que :meth:`stop` es llamado." -#: ../Doc/library/asyncio-eventloop.rst:124 +#: ../Doc/library/asyncio-eventloop.rst:126 msgid "" "If :meth:`stop` is called before :meth:`run_forever()` is called, the loop " "will poll the I/O selector once with a timeout of zero, run all callbacks " @@ -249,7 +249,7 @@ msgstr "" "ejecuta todas las llamadas planificadas como respuesta a eventos E/S (y " "aquellas que ya hayan sido planificados), y entonces termina." -#: ../Doc/library/asyncio-eventloop.rst:129 +#: ../Doc/library/asyncio-eventloop.rst:131 msgid "" "If :meth:`stop` is called while :meth:`run_forever` is running, the loop " "will run the current batch of callbacks and then exit. Note that new " @@ -263,23 +263,23 @@ msgstr "" "caso; en su lugar, ellas correrán la próxima vez que :meth:`run_forever` o :" "meth:`run_until_complete` sean llamados." -#: ../Doc/library/asyncio-eventloop.rst:137 +#: ../Doc/library/asyncio-eventloop.rst:139 msgid "Stop the event loop." msgstr "Detener el bucle de eventos." -#: ../Doc/library/asyncio-eventloop.rst:141 +#: ../Doc/library/asyncio-eventloop.rst:143 msgid "Return ``True`` if the event loop is currently running." msgstr "Retorna ``True`` si el bucle de eventos esta en ejecución actualmente." -#: ../Doc/library/asyncio-eventloop.rst:145 +#: ../Doc/library/asyncio-eventloop.rst:147 msgid "Return ``True`` if the event loop was closed." msgstr "Retorna ``True`` si el bucle de eventos se cerró." -#: ../Doc/library/asyncio-eventloop.rst:149 +#: ../Doc/library/asyncio-eventloop.rst:151 msgid "Close the event loop." msgstr "Cierra el bucle de eventos." -#: ../Doc/library/asyncio-eventloop.rst:151 +#: ../Doc/library/asyncio-eventloop.rst:153 msgid "" "The loop must not be running when this function is called. Any pending " "callbacks will be discarded." @@ -287,7 +287,7 @@ msgstr "" "El bucle no debe estar en ejecución cuando se llama a esta función. " "Cualquier llamada de retorno pendiente será descartada." -#: ../Doc/library/asyncio-eventloop.rst:154 +#: ../Doc/library/asyncio-eventloop.rst:156 msgid "" "This method clears all queues and shuts down the executor, but does not wait " "for the executor to finish." @@ -295,7 +295,7 @@ msgstr "" "Este método limpia todas las colas y apaga el ejecutor, pero no espera a que " "el ejecutor termine." -#: ../Doc/library/asyncio-eventloop.rst:157 +#: ../Doc/library/asyncio-eventloop.rst:159 msgid "" "This method is idempotent and irreversible. No other methods should be " "called after the event loop is closed." @@ -303,7 +303,7 @@ msgstr "" "Este método es idempotente e irreversible. No se debe llamar ningún otro " "método después que el bucle de eventos es cerrado." -#: ../Doc/library/asyncio-eventloop.rst:162 +#: ../Doc/library/asyncio-eventloop.rst:164 msgid "" "Schedule all currently open :term:`asynchronous generator` objects to close " "with an :meth:`~agen.aclose()` call. After calling this method, the event " @@ -316,8 +316,8 @@ msgstr "" "nuevo generador asíncrono es iterado. Esto debe ser usado para finalizar de " "manera confiable todos los generadores asíncronos planificados." -#: ../Doc/library/asyncio-eventloop.rst:168 -#: ../Doc/library/asyncio-eventloop.rst:188 +#: ../Doc/library/asyncio-eventloop.rst:170 +#: ../Doc/library/asyncio-eventloop.rst:190 msgid "" "Note that there is no need to call this function when :func:`asyncio.run` is " "used." @@ -325,13 +325,13 @@ msgstr "" "Tenga en cuenta que no hay necesidad de llamar esta función cuando :func:" "`asyncio.run` es utilizado." -#: ../Doc/library/asyncio-eventloop.rst:171 -#: ../Doc/library/asyncio-eventloop.rst:1083 -#: ../Doc/library/asyncio-eventloop.rst:1468 +#: ../Doc/library/asyncio-eventloop.rst:173 +#: ../Doc/library/asyncio-eventloop.rst:1196 +#: ../Doc/library/asyncio-eventloop.rst:1584 msgid "Example::" msgstr "Ejemplo::" -#: ../Doc/library/asyncio-eventloop.rst:183 +#: ../Doc/library/asyncio-eventloop.rst:185 msgid "" "Schedule the closure of the default executor and wait for it to join all of " "the threads in the :class:`ThreadPoolExecutor`. After calling this method, " @@ -343,11 +343,11 @@ msgstr "" "método, se lanzará un :exc:`RuntimeError` si se llama a :meth:`loop." "run_in_executor` mientras se usa el ejecutor predeterminado." -#: ../Doc/library/asyncio-eventloop.rst:195 +#: ../Doc/library/asyncio-eventloop.rst:197 msgid "Scheduling callbacks" msgstr "Programación de llamadas de retorno" -#: ../Doc/library/asyncio-eventloop.rst:199 +#: ../Doc/library/asyncio-eventloop.rst:201 msgid "" "Schedule the *callback* :term:`callback` to be called with *args* arguments " "at the next iteration of the event loop." @@ -355,7 +355,7 @@ msgstr "" "Programa el *callback* (retrollamada) :term:`callback` para que se llame con " "argumentos *args* en la próxima iteración del ciclo de eventos." -#: ../Doc/library/asyncio-eventloop.rst:202 +#: ../Doc/library/asyncio-eventloop.rst:204 msgid "" "Callbacks are called in the order in which they are registered. Each " "callback will be called exactly once." @@ -363,8 +363,8 @@ msgstr "" "Llamadas que son ejecutadas en el orden en el que fueron registradas. Cada " "llamada será ejecutada exactamente una sola vez." -#: ../Doc/library/asyncio-eventloop.rst:205 -#: ../Doc/library/asyncio-eventloop.rst:272 +#: ../Doc/library/asyncio-eventloop.rst:207 +#: ../Doc/library/asyncio-eventloop.rst:274 msgid "" "An optional keyword-only *context* argument allows specifying a custom :" "class:`contextvars.Context` for the *callback* to run in. The current " @@ -375,7 +375,7 @@ msgstr "" "*callback* será ejecutada. Cuando no se provee *context* el contexto actual " "es utilizado." -#: ../Doc/library/asyncio-eventloop.rst:209 +#: ../Doc/library/asyncio-eventloop.rst:211 msgid "" "An instance of :class:`asyncio.Handle` is returned, which can be used later " "to cancel the callback." @@ -383,11 +383,11 @@ msgstr "" "Una instancia de :class:`asyncio.Handle` es retornada, que puede ser " "utilizada después para cancelar la llamada." -#: ../Doc/library/asyncio-eventloop.rst:212 +#: ../Doc/library/asyncio-eventloop.rst:214 msgid "This method is not thread-safe." msgstr "Este método no es seguro para subprocesos." -#: ../Doc/library/asyncio-eventloop.rst:216 +#: ../Doc/library/asyncio-eventloop.rst:218 msgid "" "A thread-safe variant of :meth:`call_soon`. Must be used to schedule " "callbacks *from another thread*." @@ -395,7 +395,7 @@ msgstr "" "Una variante de :meth:`call_soon` que es segura para subprocesos. Debe ser " "usada en llamadas planificadas *desde otro hilo*." -#: ../Doc/library/asyncio-eventloop.rst:219 +#: ../Doc/library/asyncio-eventloop.rst:221 msgid "" "Raises :exc:`RuntimeError` if called on a loop that's been closed. This can " "happen on a secondary thread when the main application is shutting down." @@ -404,7 +404,7 @@ msgstr "" "puede suceder en un hilo secundario cuando la aplicación principal se está " "apagando." -#: ../Doc/library/asyncio-eventloop.rst:223 +#: ../Doc/library/asyncio-eventloop.rst:225 msgid "" "See the :ref:`concurrency and multithreading ` " "section of the documentation." @@ -412,9 +412,9 @@ msgstr "" "Vea sección :ref:`concurrencia y multiproceso ` de " "la documentación." -#: ../Doc/library/asyncio-eventloop.rst:226 -#: ../Doc/library/asyncio-eventloop.rst:276 -#: ../Doc/library/asyncio-eventloop.rst:296 +#: ../Doc/library/asyncio-eventloop.rst:228 +#: ../Doc/library/asyncio-eventloop.rst:278 +#: ../Doc/library/asyncio-eventloop.rst:298 msgid "" "The *context* keyword-only parameter was added. See :pep:`567` for more " "details." @@ -422,7 +422,7 @@ msgstr "" "Fue agregado el parámetro solo de palabra clave *context*. Vea :pep:`567` " "para mas detalles." -#: ../Doc/library/asyncio-eventloop.rst:234 +#: ../Doc/library/asyncio-eventloop.rst:236 msgid "" "Most :mod:`asyncio` scheduling functions don't allow passing keyword " "arguments. To do that, use :func:`functools.partial`::" @@ -431,7 +431,7 @@ msgstr "" "argumentos de palabra clave. Para hacer eso utilice :func:`functools." "partial`::" -#: ../Doc/library/asyncio-eventloop.rst:241 +#: ../Doc/library/asyncio-eventloop.rst:243 msgid "" "Using partial objects is usually more convenient than using lambdas, as " "asyncio can render partial objects better in debug and error messages." @@ -440,11 +440,11 @@ msgstr "" "lambdas, ya que asyncio puede renderizar mejor objetos parciales en mensajes " "de depuración y error." -#: ../Doc/library/asyncio-eventloop.rst:249 +#: ../Doc/library/asyncio-eventloop.rst:251 msgid "Scheduling delayed callbacks" msgstr "Planificando llamadas retardadas" -#: ../Doc/library/asyncio-eventloop.rst:251 +#: ../Doc/library/asyncio-eventloop.rst:253 msgid "" "Event loop provides mechanisms to schedule callback functions to be called " "at some point in the future. Event loop uses monotonic clocks to track time." @@ -453,7 +453,7 @@ msgstr "" "que serán ejecutadas en algún punto en el futuro. El bucle de eventos usa " "relojes monotónicos para seguir el tiempo." -#: ../Doc/library/asyncio-eventloop.rst:258 +#: ../Doc/library/asyncio-eventloop.rst:260 msgid "" "Schedule *callback* to be called after the given *delay* number of seconds " "(can be either an int or a float)." @@ -461,8 +461,8 @@ msgstr "" "Planifica *callback* para ser ejecutada luego de *delay* número de segundos " "(puede ser tanto un entero como un flotante)." -#: ../Doc/library/asyncio-eventloop.rst:261 -#: ../Doc/library/asyncio-eventloop.rst:293 +#: ../Doc/library/asyncio-eventloop.rst:263 +#: ../Doc/library/asyncio-eventloop.rst:295 msgid "" "An instance of :class:`asyncio.TimerHandle` is returned which can be used to " "cancel the callback." @@ -470,7 +470,7 @@ msgstr "" "Una instancia de :class:`asyncio.TimerHandle` es retornada, la que puede ser " "utilizada para cancelar la ejecución." -#: ../Doc/library/asyncio-eventloop.rst:264 +#: ../Doc/library/asyncio-eventloop.rst:266 msgid "" "*callback* will be called exactly once. If two callbacks are scheduled for " "exactly the same time, the order in which they are called is undefined." @@ -479,7 +479,7 @@ msgstr "" "planificadas para el mismo momento exacto, el orden en el que son ejecutadas " "es indefinido." -#: ../Doc/library/asyncio-eventloop.rst:268 +#: ../Doc/library/asyncio-eventloop.rst:270 msgid "" "The optional positional *args* will be passed to the callback when it is " "called. If you want the callback to be called with keyword arguments use :" @@ -489,7 +489,7 @@ msgstr "" "sea ejecutada. Si quieres que la llamada sea ejecutada con argumentos de " "palabra clave usa :func:`functools.partial`." -#: ../Doc/library/asyncio-eventloop.rst:280 +#: ../Doc/library/asyncio-eventloop.rst:282 msgid "" "In Python 3.7 and earlier with the default event loop implementation, the " "*delay* could not exceed one day. This has been fixed in Python 3.8." @@ -498,7 +498,7 @@ msgstr "" "eventos predeterminada, el *delay* no puede exceder un día. Esto fue " "arreglado en Python 3.8." -#: ../Doc/library/asyncio-eventloop.rst:287 +#: ../Doc/library/asyncio-eventloop.rst:289 msgid "" "Schedule *callback* to be called at the given absolute timestamp *when* (an " "int or a float), using the same time reference as :meth:`loop.time`." @@ -507,11 +507,11 @@ msgstr "" "*when* (un entero o un flotante), usando la misma referencia de tiempo que :" "meth:`loop.time`." -#: ../Doc/library/asyncio-eventloop.rst:291 +#: ../Doc/library/asyncio-eventloop.rst:293 msgid "This method's behavior is the same as :meth:`call_later`." msgstr "El comportamiento de este método es el mismo que :meth:`call_later`." -#: ../Doc/library/asyncio-eventloop.rst:300 +#: ../Doc/library/asyncio-eventloop.rst:302 msgid "" "In Python 3.7 and earlier with the default event loop implementation, the " "difference between *when* and the current time could not exceed one day. " @@ -521,7 +521,7 @@ msgstr "" "eventos predeterminada, la diferencia entre *when* y el tiempo actual no " "puede exceder un día. Esto fue arreglado en Python 3.8." -#: ../Doc/library/asyncio-eventloop.rst:307 +#: ../Doc/library/asyncio-eventloop.rst:309 msgid "" "Return the current time, as a :class:`float` value, according to the event " "loop's internal monotonic clock." @@ -529,7 +529,7 @@ msgstr "" "Retorna el tiempo actual, como un :class:`float`, de acuerdo al reloj " "monotónico interno del bucle de evento." -#: ../Doc/library/asyncio-eventloop.rst:311 +#: ../Doc/library/asyncio-eventloop.rst:313 msgid "" "In Python 3.7 and earlier timeouts (relative *delay* or absolute *when*) " "should not exceed one day. This has been fixed in Python 3.8." @@ -537,19 +537,19 @@ msgstr "" "En Python 3.7 y versiones anteriores los tiempos de espera (*delay* relativo " "o *when* absoluto) no deben exceder un día. Esto fue arreglado en Python 3.8." -#: ../Doc/library/asyncio-eventloop.rst:317 +#: ../Doc/library/asyncio-eventloop.rst:319 msgid "The :func:`asyncio.sleep` function." msgstr "La función :func:`asyncio.sleep`." -#: ../Doc/library/asyncio-eventloop.rst:321 +#: ../Doc/library/asyncio-eventloop.rst:323 msgid "Creating Futures and Tasks" msgstr "Creando Futuros y Tareas" -#: ../Doc/library/asyncio-eventloop.rst:325 +#: ../Doc/library/asyncio-eventloop.rst:327 msgid "Create an :class:`asyncio.Future` object attached to the event loop." msgstr "Crea un objeto :class:`asyncio.Future` adjunto al bucle de eventos." -#: ../Doc/library/asyncio-eventloop.rst:327 +#: ../Doc/library/asyncio-eventloop.rst:329 msgid "" "This is the preferred way to create Futures in asyncio. This lets third-" "party event loops provide alternative implementations of the Future object " @@ -559,14 +559,16 @@ msgstr "" "bucles de eventos de terceros provean implementaciones alternativas del " "objeto Future (con mejor rendimiento o instrumentación)." -#: ../Doc/library/asyncio-eventloop.rst:335 +#: ../Doc/library/asyncio-eventloop.rst:337 +#, fuzzy msgid "" -"Schedule the execution of a :ref:`coroutine`. Return a :class:`Task` object." +"Schedule the execution of :ref:`coroutine ` *coro*. Return a :" +"class:`Task` object." msgstr "" "Planifica la ejecución de una :ref:`Coroutine`. Retorna un objeto :class:" "`Task`." -#: ../Doc/library/asyncio-eventloop.rst:338 +#: ../Doc/library/asyncio-eventloop.rst:340 msgid "" "Third-party event loops can use their own subclass of :class:`Task` for " "interoperability. In this case, the result type is a subclass of :class:" @@ -576,7 +578,7 @@ msgstr "" "`Task` por interoperabilidad. En este caso, el tipo de resultado es una " "subclase de :class:`Task`." -#: ../Doc/library/asyncio-eventloop.rst:342 +#: ../Doc/library/asyncio-eventloop.rst:344 msgid "" "If the *name* argument is provided and not ``None``, it is set as the name " "of the task using :meth:`Task.set_name`." @@ -584,23 +586,42 @@ msgstr "" "Si el argumento *name* es provisto y no ``None``, se establece como el " "nombre de la tarea usando :meth:`Task.set_name`." -#: ../Doc/library/asyncio-eventloop.rst:345 -msgid "Added the ``name`` parameter." +#: ../Doc/library/asyncio-eventloop.rst:347 +#, fuzzy +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 "" +"Un argumento *context* opcional y solo de palabra clave que permite " +"especificar una clase :class:`contextvars.Context` personalizada en la cual " +"*callback* será ejecutada. Cuando no se provee *context* el contexto actual " +"es utilizado." + +#: ../Doc/library/asyncio-eventloop.rst:351 +#, fuzzy +msgid "Added the *name* parameter." msgstr "Agregado el parámetro ``name``." -#: ../Doc/library/asyncio-eventloop.rst:350 +#: ../Doc/library/asyncio-eventloop.rst:354 +#, fuzzy +msgid "Added the *context* parameter." +msgstr "Agregado el parámetro ``name``." + +#: ../Doc/library/asyncio-eventloop.rst:359 msgid "Set a task factory that will be used by :meth:`loop.create_task`." msgstr "" "Establece una fábrica de tareas que será utilizada por :meth:`loop." "create_task`." -#: ../Doc/library/asyncio-eventloop.rst:353 +#: ../Doc/library/asyncio-eventloop.rst:362 +#, fuzzy msgid "" "If *factory* is ``None`` the default task factory will be set. Otherwise, " -"*factory* must be a *callable* with the signature matching ``(loop, coro)``, " -"where *loop* is a reference to the active event loop, and *coro* is a " -"coroutine object. The callable must return a :class:`asyncio.Future`-" -"compatible object." +"*factory* must be a *callable* with the signature matching ``(loop, coro, " +"context=None)``, where *loop* is a reference to the active event loop, and " +"*coro* is a coroutine object. The callable must return a :class:`asyncio." +"Future`-compatible object." msgstr "" "Si *factory* es ``None`` se establecerá la fábrica de tareas por defecto. En " "cualquier otro caso, *factory* debe ser un *callable* con la misma firma " @@ -608,16 +629,16 @@ msgstr "" "y *coro* es un objeto de corrutina. El ejecutable debe retornar una objeto :" "class:`asyncio.Future` compatible." -#: ../Doc/library/asyncio-eventloop.rst:361 +#: ../Doc/library/asyncio-eventloop.rst:370 msgid "Return a task factory or ``None`` if the default one is in use." msgstr "" "Retorna una fábrica de tareas o ``None`` si la predefinida está en uso." -#: ../Doc/library/asyncio-eventloop.rst:365 +#: ../Doc/library/asyncio-eventloop.rst:374 msgid "Opening network connections" msgstr "Abriendo conexiones de red" -#: ../Doc/library/asyncio-eventloop.rst:374 +#: ../Doc/library/asyncio-eventloop.rst:384 msgid "" "Open a streaming transport connection to a given address specified by *host* " "and *port*." @@ -625,7 +646,7 @@ msgstr "" "Abre una conexión de transmisión de transporte a una dirección especificada " "por *host* y *port*." -#: ../Doc/library/asyncio-eventloop.rst:377 +#: ../Doc/library/asyncio-eventloop.rst:387 msgid "" "The socket family can be either :py:data:`~socket.AF_INET` or :py:data:" "`~socket.AF_INET6` depending on *host* (or the *family* argument, if " @@ -635,13 +656,13 @@ msgstr "" "data:`~socket.AF_INET6` dependiendo de *host* (o del argumento *family* si " "es que fue provisto)." -#: ../Doc/library/asyncio-eventloop.rst:381 +#: ../Doc/library/asyncio-eventloop.rst:391 msgid "The socket type will be :py:data:`~socket.SOCK_STREAM`." msgstr "El tipo de socket será :py:data:`~socket.SOCK_STREAM`." -#: ../Doc/library/asyncio-eventloop.rst:383 -#: ../Doc/library/asyncio-eventloop.rst:999 -#: ../Doc/library/asyncio-eventloop.rst:1015 +#: ../Doc/library/asyncio-eventloop.rst:393 +#: ../Doc/library/asyncio-eventloop.rst:1112 +#: ../Doc/library/asyncio-eventloop.rst:1128 msgid "" "*protocol_factory* must be a callable returning an :ref:`asyncio protocol " "` implementation." @@ -649,7 +670,7 @@ msgstr "" "*protocol_factory* debe ser un ejecutable que retorna una implementación " "del :ref:`asyncio protocol `." -#: ../Doc/library/asyncio-eventloop.rst:386 +#: ../Doc/library/asyncio-eventloop.rst:396 msgid "" "This method will try to establish the connection in the background. When " "successful, it returns a ``(transport, protocol)`` pair." @@ -657,11 +678,11 @@ msgstr "" "Este método tratará de establecer la conexión en un segundo plano. Cuando es " "exitosa, retorna un par ``(transport, protocol)``." -#: ../Doc/library/asyncio-eventloop.rst:389 +#: ../Doc/library/asyncio-eventloop.rst:399 msgid "The chronological synopsis of the underlying operation is as follows:" msgstr "La sinopsis cronológica de las operaciones subyacentes es como sigue:" -#: ../Doc/library/asyncio-eventloop.rst:391 +#: ../Doc/library/asyncio-eventloop.rst:401 msgid "" "The connection is established and a :ref:`transport ` is " "created for it." @@ -669,7 +690,7 @@ msgstr "" "La conexión es establecida y un :ref:`transporte ` es " "creado para ello." -#: ../Doc/library/asyncio-eventloop.rst:394 +#: ../Doc/library/asyncio-eventloop.rst:404 msgid "" "*protocol_factory* is called without arguments and is expected to return a :" "ref:`protocol ` instance." @@ -677,7 +698,7 @@ msgstr "" "*protocol_factory* es llamado sin argumentos y se espera que retorne una " "instancia de :ref:`protocol `." -#: ../Doc/library/asyncio-eventloop.rst:397 +#: ../Doc/library/asyncio-eventloop.rst:407 msgid "" "The protocol instance is coupled with the transport by calling its :meth:" "`~BaseProtocol.connection_made` method." @@ -685,24 +706,24 @@ msgstr "" "La instancia del protocolo se acopla con el transporte mediante el llamado " "de su método :meth:`~BaseProtocol.connection_made`." -#: ../Doc/library/asyncio-eventloop.rst:400 +#: ../Doc/library/asyncio-eventloop.rst:410 msgid "A ``(transport, protocol)`` tuple is returned on success." msgstr "" "Una tupla ``(transport, protocol)`` es retornada cuando se tiene éxito." -#: ../Doc/library/asyncio-eventloop.rst:402 +#: ../Doc/library/asyncio-eventloop.rst:412 msgid "" "The created transport is an implementation-dependent bidirectional stream." msgstr "" "El transporte creado es una transmisión (*stream*) bidireccional que depende " "de la implementación." -#: ../Doc/library/asyncio-eventloop.rst:405 -#: ../Doc/library/asyncio-eventloop.rst:527 +#: ../Doc/library/asyncio-eventloop.rst:415 +#: ../Doc/library/asyncio-eventloop.rst:536 msgid "Other arguments:" msgstr "Otros argumentos:" -#: ../Doc/library/asyncio-eventloop.rst:407 +#: ../Doc/library/asyncio-eventloop.rst:417 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` " @@ -716,11 +737,11 @@ msgstr "" "transporte; si *ssl* es :const:`True`, se utiliza un contexto predeterminado " "retornado por :func:`ssl.create_default_context`." -#: ../Doc/library/asyncio-eventloop.rst:413 +#: ../Doc/library/asyncio-eventloop.rst:423 msgid ":ref:`SSL/TLS security considerations `" msgstr ":ref:`Consideraciones de seguridad SSL/TLS `" -#: ../Doc/library/asyncio-eventloop.rst:415 +#: ../Doc/library/asyncio-eventloop.rst:425 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 " @@ -740,7 +761,7 @@ msgstr "" "permitiendo potenciales ataques de hombre-en-el-medio, *man-in-the-middle " "attacks*)." -#: ../Doc/library/asyncio-eventloop.rst:423 +#: ../Doc/library/asyncio-eventloop.rst:433 msgid "" "*family*, *proto*, *flags* are the optional address family, protocol and " "flags to be passed through to getaddrinfo() for *host* resolution. If given, " @@ -752,14 +773,14 @@ msgstr "" "de *host*. Si están dados, todos ellos deberían ser enteros de las " "constantes del módulo :mod:`socket` correspondiente." -#: ../Doc/library/asyncio-eventloop.rst:428 +#: ../Doc/library/asyncio-eventloop.rst:438 msgid "" "*happy_eyeballs_delay*, if given, enables Happy Eyeballs for this " "connection. It should be a floating-point number representing the amount of " "time in seconds to wait for a connection attempt to complete, before " -"starting the next attempt in parallel. This is the \"Connection Attempt Delay" -"\" as defined in :rfc:`8305`. A sensible default value recommended by the " -"RFC is ``0.25`` (250 milliseconds)." +"starting the next attempt in parallel. This is the \"Connection Attempt " +"Delay\" as defined in :rfc:`8305`. A sensible default value recommended by " +"the RFC is ``0.25`` (250 milliseconds)." msgstr "" "*happy_eyeballs_delay*, si se proporciona, habilita Happy Eyeballs para esta " "conexión. Debe ser un número de punto flotante que represente la cantidad de " @@ -768,15 +789,15 @@ msgstr "" "intento de conexión\" como se define en :rfc:`8305`. Un valor predeterminado " "sensato recomendado por el RFC es ``0.25`` (250 milisegundos)." -#: ../Doc/library/asyncio-eventloop.rst:436 +#: ../Doc/library/asyncio-eventloop.rst:446 msgid "" "*interleave* controls address reordering when a host name resolves to " "multiple IP addresses. If ``0`` or unspecified, no reordering is done, and " "addresses are tried in the order returned by :meth:`getaddrinfo`. If a " "positive integer is specified, the addresses are interleaved by address " -"family, and the given integer is interpreted as \"First Address Family Count" -"\" as defined in :rfc:`8305`. The default is ``0`` if *happy_eyeballs_delay* " -"is not specified, and ``1`` if it is." +"family, and the given integer is interpreted as \"First Address Family " +"Count\" as defined in :rfc:`8305`. The default is ``0`` if " +"*happy_eyeballs_delay* is not specified, and ``1`` if it is." msgstr "" "*interleave* controla reordenamientos de dirección cuando un nombre de " "servidor resuelve a múltiples direcciones IP. Si es ``0`` o no es " @@ -788,7 +809,7 @@ msgstr "" "`8305`. El valor predefinido es ``0`` si *happy_eyeballs_delay* no es " "especificado, y ``1`` si lo es." -#: ../Doc/library/asyncio-eventloop.rst:445 +#: ../Doc/library/asyncio-eventloop.rst:455 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 " @@ -800,7 +821,16 @@ msgstr "" "ningún *host*, *port*, *family*, *proto*, *flags*, *happy_eyeballs_delay*, " "*interleave* o *local_addr* deben ser especificados." -#: ../Doc/library/asyncio-eventloop.rst:451 +#: ../Doc/library/asyncio-eventloop.rst:463 +#: ../Doc/library/asyncio-eventloop.rst:567 +#: ../Doc/library/asyncio-eventloop.rst:791 +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 "" + +#: ../Doc/library/asyncio-eventloop.rst:467 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 " @@ -810,8 +840,8 @@ msgstr "" "para enlazar el socket localmente. Los *local_host* y *local_port* son " "buscados usando ``getaddrinfo()``, de manera similar que con *host* y *port*." -#: ../Doc/library/asyncio-eventloop.rst:455 -#: ../Doc/library/asyncio-eventloop.rst:808 +#: ../Doc/library/asyncio-eventloop.rst:471 +#: ../Doc/library/asyncio-eventloop.rst:877 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. " @@ -821,11 +851,44 @@ msgstr "" "esperar que se complete el apretón de manos (*handshake*) TLS antes de " "abortar la conexión. ``60.0`` segundos si es ``None`` (predefinido)." -#: ../Doc/library/asyncio-eventloop.rst:461 +#: ../Doc/library/asyncio-eventloop.rst:475 +#: ../Doc/library/asyncio-eventloop.rst:708 +#: ../Doc/library/asyncio-eventloop.rst:802 +#: ../Doc/library/asyncio-eventloop.rst:881 +#, fuzzy +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 "" +"*ssl_handshake_timeout* es (para un servidor TLS) el tiempo en segundos a " +"esperar por el apretón de manos (*handshake*) TLS a ser completado antes de " +"abortar la conexión. ``60.0`` si es ``None`` (su valor predeterminado)." + +#: ../Doc/library/asyncio-eventloop.rst:481 +#: ../Doc/library/asyncio-eventloop.rst:720 +msgid "Added support for SSL/TLS in :class:`ProactorEventLoop`." +msgstr "Agregado el soporte para SSL/TLS en :class:`ProactorEventLoop`." + +#: ../Doc/library/asyncio-eventloop.rst:485 +msgid "" +"The socket option :py:data:`~socket.TCP_NODELAY` is set by default for all " +"TCP connections." +msgstr "" +"La opción del socket :py:data:`~socket.TCP_NODELAY` es establecida de manera " +"predeterminada para todas las conexiones TCP." + +#: ../Doc/library/asyncio-eventloop.rst:490 +#: ../Doc/library/asyncio-eventloop.rst:812 +#, fuzzy +msgid "Added the *ssl_handshake_timeout* parameter." +msgstr "El parámetro *ssl_handshake_timeout*." + +#: ../Doc/library/asyncio-eventloop.rst:494 msgid "Added the *happy_eyeballs_delay* and *interleave* parameters." msgstr "Agregados los parámetros *happy_eyeballs_delay* y *interleave*." -#: ../Doc/library/asyncio-eventloop.rst:463 +#: ../Doc/library/asyncio-eventloop.rst:496 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 " @@ -845,31 +908,21 @@ msgstr "" "para algoritmos que reducen esta demora visible por el usuario, y provee un " "algoritmo." -#: ../Doc/library/asyncio-eventloop.rst:472 +#: ../Doc/library/asyncio-eventloop.rst:505 msgid "For more information: https://tools.ietf.org/html/rfc6555" msgstr "Para mas información: https://tools.ietf.org/html/rfc6555" -#: ../Doc/library/asyncio-eventloop.rst:476 -#: ../Doc/library/asyncio-eventloop.rst:593 -#: ../Doc/library/asyncio-eventloop.rst:746 -msgid "The *ssl_handshake_timeout* parameter." +#: ../Doc/library/asyncio-eventloop.rst:509 +#: ../Doc/library/asyncio-eventloop.rst:628 +#: ../Doc/library/asyncio-eventloop.rst:734 +#: ../Doc/library/asyncio-eventloop.rst:769 +#: ../Doc/library/asyncio-eventloop.rst:816 +#: ../Doc/library/asyncio-eventloop.rst:889 +#, fuzzy +msgid "Added the *ssl_shutdown_timeout* parameter." msgstr "El parámetro *ssl_handshake_timeout*." -#: ../Doc/library/asyncio-eventloop.rst:480 -#: ../Doc/library/asyncio-eventloop.rst:676 -msgid "" -"The socket option :py:data:`~socket.TCP_NODELAY` is set by default for all " -"TCP connections." -msgstr "" -"La opción del socket :py:data:`~socket.TCP_NODELAY` es establecida de manera " -"predeterminada para todas las conexiones TCP." - -#: ../Doc/library/asyncio-eventloop.rst:485 -#: ../Doc/library/asyncio-eventloop.rst:681 -msgid "Added support for SSL/TLS in :class:`ProactorEventLoop`." -msgstr "Agregado el soporte para SSL/TLS en :class:`ProactorEventLoop`." - -#: ../Doc/library/asyncio-eventloop.rst:489 +#: ../Doc/library/asyncio-eventloop.rst:513 msgid "" "The :func:`open_connection` function is a high-level alternative API. It " "returns a pair of (:class:`StreamReader`, :class:`StreamWriter`) that can be " @@ -879,44 +932,11 @@ msgstr "" "Retorna un par de (:class:`StreamReader`, :class:`StreamWriter`) que puede " "ser usado directamente en código async/await." -#: ../Doc/library/asyncio-eventloop.rst:500 -msgid "" -"The parameter *reuse_address* is no longer supported, as using :py:data:" -"`~sockets.SO_REUSEADDR` poses a significant security concern for UDP. " -"Explicitly passing ``reuse_address=True`` will raise an exception." -msgstr "" -"El parámetro *reuse_address* ya no es soportado, como utiliza :py:data:" -"`~sockets.SO_REUSEADDR` plantea un problema de seguridad importante para " -"UDP. Pasando explícitamente ``reuse_address=True`` lanzará una excepción." - -#: ../Doc/library/asyncio-eventloop.rst:504 -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 "" -"Cuando múltiples procesos con UIDs diferentes asignan sockets a una misma " -"dirección socket UDP con ``SO_REUSEADDR``, los paquetes entrantes pueden " -"distribuirse aleatoriamente entre los sockets." - -#: ../Doc/library/asyncio-eventloop.rst:508 -msgid "" -"For supported platforms, *reuse_port* can be used as a replacement for " -"similar functionality. With *reuse_port*, :py:data:`~sockets.SO_REUSEPORT` " -"is used instead, which specifically prevents processes with differing UIDs " -"from assigning sockets to the same socket address." -msgstr "" -"Para plataformas soportadas, *reuse_port* puede ser utilizado como un " -"reemplazo para funcionalidades similares. Con *reuse_port*, :py:data:" -"`~sockets.SO_REUSEPORT` es usado en su lugar, que específicamente previene " -"que procesos con distintos UIDs asignen sockets a la misma dirección de " -"socket." - -#: ../Doc/library/asyncio-eventloop.rst:514 +#: ../Doc/library/asyncio-eventloop.rst:523 msgid "Create a datagram connection." msgstr "Crea un datagrama de conexión." -#: ../Doc/library/asyncio-eventloop.rst:516 +#: ../Doc/library/asyncio-eventloop.rst:525 msgid "" "The socket family can be either :py:data:`~socket.AF_INET`, :py:data:" "`~socket.AF_INET6`, or :py:data:`~socket.AF_UNIX`, depending on *host* (or " @@ -926,13 +946,13 @@ msgstr "" "`~socket.AF_INET6`, como :py:data:`~socket.AF_UNIX`, dependiendo de *host* " "(o del argumento *family*, si fue provisto)." -#: ../Doc/library/asyncio-eventloop.rst:520 +#: ../Doc/library/asyncio-eventloop.rst:529 msgid "The socket type will be :py:data:`~socket.SOCK_DGRAM`." msgstr "El tipo de socket será :py:data:`~socket.SOCK_DGRAM`." -#: ../Doc/library/asyncio-eventloop.rst:522 -#: ../Doc/library/asyncio-eventloop.rst:618 -#: ../Doc/library/asyncio-eventloop.rst:729 +#: ../Doc/library/asyncio-eventloop.rst:531 +#: ../Doc/library/asyncio-eventloop.rst:651 +#: ../Doc/library/asyncio-eventloop.rst:783 msgid "" "*protocol_factory* must be a callable returning a :ref:`protocol ` implementation." @@ -940,13 +960,13 @@ msgstr "" "*protocol_factory* debe ser un ejecutable que retorne una implementación de :" "ref:`protocol `." -#: ../Doc/library/asyncio-eventloop.rst:525 -#: ../Doc/library/asyncio-eventloop.rst:579 +#: ../Doc/library/asyncio-eventloop.rst:534 +#: ../Doc/library/asyncio-eventloop.rst:610 msgid "A tuple of ``(transport, protocol)`` is returned on success." msgstr "" "Una tupla de ``(transport, protocol)`` es retornada cuando se tiene éxito." -#: ../Doc/library/asyncio-eventloop.rst:529 +#: ../Doc/library/asyncio-eventloop.rst:538 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 :" @@ -956,7 +976,7 @@ msgstr "" "para enlazar el socket localmente. Los *local_host* y *local_port* son " "buscados utilizando :meth:`getaddrinfo`." -#: ../Doc/library/asyncio-eventloop.rst:533 +#: ../Doc/library/asyncio-eventloop.rst:542 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* " @@ -966,7 +986,7 @@ msgstr "" "utilizada para conectar el socket a una dirección remota. Los *remote_host* " "y *remote_port* son buscados utilizando :meth:`getaddrinfo`." -#: ../Doc/library/asyncio-eventloop.rst:537 +#: ../Doc/library/asyncio-eventloop.rst:546 msgid "" "*family*, *proto*, *flags* are the optional address family, protocol and " "flags to be passed through to :meth:`getaddrinfo` for *host* resolution. If " @@ -978,7 +998,7 @@ msgstr "" "resolución de *host*. Si está dado, estos deben ser todos enteros de las " "constantes del módulo :mod:`socket` correspondiente." -#: ../Doc/library/asyncio-eventloop.rst:542 +#: ../Doc/library/asyncio-eventloop.rst:551 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 " @@ -993,7 +1013,7 @@ msgstr "" "algunos sistemas Unix. Si la constante :py:data:`~socket.SO_REUSEPORT` no " "está definida entonces esta funcionalidad no es soportada." -#: ../Doc/library/asyncio-eventloop.rst:548 +#: ../Doc/library/asyncio-eventloop.rst:557 msgid "" "*allow_broadcast* tells the kernel to allow this endpoint to send messages " "to the broadcast address." @@ -1001,7 +1021,7 @@ msgstr "" "*allow_broadcast* dice al kernel que habilite este punto de conexión para " "enviar mensajes a la dirección de transmisión (*broadcast*)." -#: ../Doc/library/asyncio-eventloop.rst:551 +#: ../Doc/library/asyncio-eventloop.rst:560 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 " @@ -1013,7 +1033,7 @@ msgstr "" "transporte. Si están especificados, *local_addr* y *remote_addr* deben ser " "omitidos (tienen que ser :const:`None`)." -#: ../Doc/library/asyncio-eventloop.rst:556 +#: ../Doc/library/asyncio-eventloop.rst:571 msgid "" "See :ref:`UDP echo client protocol ` and :" "ref:`UDP echo server protocol ` examples." @@ -1022,31 +1042,64 @@ msgstr "" "client-protocol>` y :ref:`UDP echo server protocol `." -#: ../Doc/library/asyncio-eventloop.rst:559 +#: ../Doc/library/asyncio-eventloop.rst:574 +#, fuzzy msgid "" -"The *family*, *proto*, *flags*, *reuse_address*, *reuse_port, " +"The *family*, *proto*, *flags*, *reuse_address*, *reuse_port*, " "*allow_broadcast*, and *sock* parameters were added." msgstr "" "Los parámetros *family*, *proto*, *flags*, *reuse_address*, *reuse_port*, " "*allow_broadcast* y *sock* fueron agregados." -#: ../Doc/library/asyncio-eventloop.rst:563 +#: ../Doc/library/asyncio-eventloop.rst:578 +#, fuzzy msgid "" -"The *reuse_address* parameter is no longer supported due to security " -"concerns." +"The *reuse_address* parameter is no longer supported, as using :py:data:" +"`~sockets.SO_REUSEADDR` poses a significant security concern for UDP. " +"Explicitly passing ``reuse_address=True`` will raise an exception." msgstr "" -"El parámetro *reuse_address* ya no es soportado debido a problemas de " -"seguridad." +"El parámetro *reuse_address* ya no es soportado, como utiliza :py:data:" +"`~sockets.SO_REUSEADDR` plantea un problema de seguridad importante para " +"UDP. Pasando explícitamente ``reuse_address=True`` lanzará una excepción." -#: ../Doc/library/asyncio-eventloop.rst:567 +#: ../Doc/library/asyncio-eventloop.rst:583 +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 "" +"Cuando múltiples procesos con UIDs diferentes asignan sockets a una misma " +"dirección socket UDP con ``SO_REUSEADDR``, los paquetes entrantes pueden " +"distribuirse aleatoriamente entre los sockets." + +#: ../Doc/library/asyncio-eventloop.rst:587 +msgid "" +"For supported platforms, *reuse_port* can be used as a replacement for " +"similar functionality. With *reuse_port*, :py:data:`~sockets.SO_REUSEPORT` " +"is used instead, which specifically prevents processes with differing UIDs " +"from assigning sockets to the same socket address." +msgstr "" +"Para plataformas soportadas, *reuse_port* puede ser utilizado como un " +"reemplazo para funcionalidades similares. Con *reuse_port*, :py:data:" +"`~sockets.SO_REUSEPORT` es usado en su lugar, que específicamente previene " +"que procesos con distintos UIDs asignen sockets a la misma dirección de " +"socket." + +#: ../Doc/library/asyncio-eventloop.rst:593 msgid "Added support for Windows." msgstr "Se agregó soporte para Windows." -#: ../Doc/library/asyncio-eventloop.rst:574 +#: ../Doc/library/asyncio-eventloop.rst:596 +msgid "" +"The *reuse_address* parameter, disabled since Python 3.9.0, 3.8.1, 3.7.6 and " +"3.6.10, has been entirely removed." +msgstr "" + +#: ../Doc/library/asyncio-eventloop.rst:605 msgid "Create a Unix connection." msgstr "Crear una conexión Unix." -#: ../Doc/library/asyncio-eventloop.rst:576 +#: ../Doc/library/asyncio-eventloop.rst:607 msgid "" "The socket family will be :py:data:`~socket.AF_UNIX`; socket type will be :" "py:data:`~socket.SOCK_STREAM`." @@ -1054,7 +1107,7 @@ msgstr "" "La familia de sockets será :py:data:`~socket.AF_UNIX`; el tipo de socket " "será :py:data:`~socket.SOCK_STREAM`." -#: ../Doc/library/asyncio-eventloop.rst:581 +#: ../Doc/library/asyncio-eventloop.rst:612 msgid "" "*path* is the name of a Unix domain socket and is required, unless a *sock* " "parameter is specified. Abstract Unix sockets, :class:`str`, :class:" @@ -1064,7 +1117,7 @@ msgstr "" "que un parámetro *sock* sea especificado. Los socket Unix abstractos, :class:" "`str`, :class:`bytes`, y :class:`~pathlib.Path` son soportados." -#: ../Doc/library/asyncio-eventloop.rst:586 +#: ../Doc/library/asyncio-eventloop.rst:617 msgid "" "See the documentation of the :meth:`loop.create_connection` method for " "information about arguments to this method." @@ -1072,21 +1125,24 @@ msgstr "" "Vea la documentación del método :meth:`loop.create_connection` para " "información acerca de los argumentos de este método." -#: ../Doc/library/asyncio-eventloop.rst:590 -#: ../Doc/library/asyncio-eventloop.rst:710 -#: ../Doc/library/asyncio-eventloop.rst:1066 +#: ../Doc/library/asyncio-eventloop.rst:621 +#: ../Doc/library/asyncio-eventloop.rst:761 +#: ../Doc/library/asyncio-eventloop.rst:1179 msgid ":ref:`Availability `: Unix." msgstr ":ref:`Availability `: Unix." -#: ../Doc/library/asyncio-eventloop.rst:597 -msgid "The *path* parameter can now be a :term:`path-like object`." +#: ../Doc/library/asyncio-eventloop.rst:622 +#, fuzzy +msgid "" +"Added the *ssl_handshake_timeout* parameter. The *path* parameter can now be " +"a :term:`path-like object`." msgstr "El parámetro *path* ahora puede ser un :term:`path-like object`." -#: ../Doc/library/asyncio-eventloop.rst:601 +#: ../Doc/library/asyncio-eventloop.rst:632 msgid "Creating network servers" msgstr "Creando servidores de red" -#: ../Doc/library/asyncio-eventloop.rst:611 +#: ../Doc/library/asyncio-eventloop.rst:644 msgid "" "Create a TCP server (socket type :data:`~socket.SOCK_STREAM`) listening on " "*port* of the *host* address." @@ -1094,15 +1150,15 @@ msgstr "" "Crea un servidor TCP (tipo de socket :data:`~socket.SOCK_STREAM`) escuchando " "en *port* de la dirección *host*." -#: ../Doc/library/asyncio-eventloop.rst:614 +#: ../Doc/library/asyncio-eventloop.rst:647 msgid "Returns a :class:`Server` object." msgstr "Retorna un objeto :class:`Server`." -#: ../Doc/library/asyncio-eventloop.rst:616 +#: ../Doc/library/asyncio-eventloop.rst:649 msgid "Arguments:" msgstr "Argumentos:" -#: ../Doc/library/asyncio-eventloop.rst:621 +#: ../Doc/library/asyncio-eventloop.rst:654 msgid "" "The *host* parameter can be set to several types which determine where the " "server would be listening:" @@ -1110,7 +1166,7 @@ msgstr "" "El parámetro *host* puede ser establecido a distintos tipos que determinan " "donde el servidor estaría escuchando:" -#: ../Doc/library/asyncio-eventloop.rst:624 +#: ../Doc/library/asyncio-eventloop.rst:657 msgid "" "If *host* is a string, the TCP server is bound to a single network interface " "specified by *host*." @@ -1118,7 +1174,7 @@ msgstr "" "Si *host* es una cadena, el servidor TCP está enlazado a una sola interfaz " "de red especificada por *host*." -#: ../Doc/library/asyncio-eventloop.rst:627 +#: ../Doc/library/asyncio-eventloop.rst:660 msgid "" "If *host* is a sequence of strings, the TCP server is bound to all network " "interfaces specified by the sequence." @@ -1126,7 +1182,7 @@ msgstr "" "Si *host* es una secuencia de cadenas, el servidor TCP está enlazado a todas " "las interfaces de red especificadas por la secuencia." -#: ../Doc/library/asyncio-eventloop.rst:630 +#: ../Doc/library/asyncio-eventloop.rst:663 msgid "" "If *host* is an empty string or ``None``, all interfaces are assumed and a " "list of multiple sockets will be returned (most likely one for IPv4 and " @@ -1136,7 +1192,15 @@ msgstr "" "una lista con múltiples sockets será retornada (mas probablemente uno para " "IPv4 y otro para IPv6)." -#: ../Doc/library/asyncio-eventloop.rst:634 +#: ../Doc/library/asyncio-eventloop.rst:667 +msgid "" +"The *port* parameter can be set to specify which port the server should " +"listen on. If ``0`` or ``None`` (the default), a random unused port will be " +"selected (note that if *host* resolves to multiple network interfaces, a " +"different random port will be selected for each interface)." +msgstr "" + +#: ../Doc/library/asyncio-eventloop.rst:672 msgid "" "*family* can be set to either :data:`socket.AF_INET` or :data:`~socket." "AF_INET6` to force the socket to use IPv4 or IPv6. If not set, the *family* " @@ -1147,11 +1211,11 @@ msgstr "" "*family* será determinada por medio del nombre del host (por defecto será :" "data:`~socket.AF_UNSPEC`)." -#: ../Doc/library/asyncio-eventloop.rst:639 +#: ../Doc/library/asyncio-eventloop.rst:677 msgid "*flags* is a bitmask for :meth:`getaddrinfo`." msgstr "*flags* es una máscara de bits para :meth:`getaddrinfo`." -#: ../Doc/library/asyncio-eventloop.rst:641 +#: ../Doc/library/asyncio-eventloop.rst:679 msgid "" "*sock* can optionally be specified in order to use a preexisting socket " "object. If specified, *host* and *port* must not be specified." @@ -1160,7 +1224,13 @@ msgstr "" "preexistentes. Si se utiliza, entonces *host* y *port* no deben ser " "especificados." -#: ../Doc/library/asyncio-eventloop.rst:644 +#: ../Doc/library/asyncio-eventloop.rst:684 +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." +msgstr "" + +#: ../Doc/library/asyncio-eventloop.rst:688 msgid "" "*backlog* is the maximum number of queued connections passed to :meth:" "`~socket.socket.listen` (defaults to 100)." @@ -1168,7 +1238,7 @@ msgstr "" "*backlog* es el número máximo de conexiones encoladas pasadas a :meth:" "`~socket.socket.listen` (el valor predeterminado es 100)." -#: ../Doc/library/asyncio-eventloop.rst:647 +#: ../Doc/library/asyncio-eventloop.rst:691 msgid "" "*ssl* can be set to an :class:`~ssl.SSLContext` instance to enable TLS over " "the accepted connections." @@ -1176,7 +1246,7 @@ msgstr "" "*ssl* puede ser establecido como una instancia de :class:`~ssl.SSLContext` " "para habilitar TLS sobre las conexiones aceptadas." -#: ../Doc/library/asyncio-eventloop.rst:650 +#: ../Doc/library/asyncio-eventloop.rst:694 msgid "" "*reuse_address* tells the kernel to reuse a local socket in ``TIME_WAIT`` " "state, without waiting for its natural timeout to expire. If not specified " @@ -1186,7 +1256,7 @@ msgstr "" "``TIME_WAIT``, sin esperar que su plazo de ejecución expire. Si no es " "especificado será establecido automáticamente como ``True`` en Unix." -#: ../Doc/library/asyncio-eventloop.rst:655 +#: ../Doc/library/asyncio-eventloop.rst:699 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 " @@ -1197,7 +1267,7 @@ msgstr "" "existentes también están unidos, siempre y cuando todos ellos establezcan " "esta bandera al ser creados." -#: ../Doc/library/asyncio-eventloop.rst:660 +#: ../Doc/library/asyncio-eventloop.rst:704 msgid "" "*ssl_handshake_timeout* is (for a TLS server) the time in seconds to wait " "for the TLS handshake to complete before aborting the connection. ``60.0`` " @@ -1207,7 +1277,7 @@ msgstr "" "esperar por el apretón de manos (*handshake*) TLS a ser completado antes de " "abortar la conexión. ``60.0`` si es ``None`` (su valor predeterminado)." -#: ../Doc/library/asyncio-eventloop.rst:664 +#: ../Doc/library/asyncio-eventloop.rst:712 msgid "" "*start_serving* set to ``True`` (the default) causes the created server to " "start accepting connections immediately. When set to ``False``, the user " @@ -1220,15 +1290,21 @@ msgstr "" "start_serving` o :meth:`Server.serve_forever` para que el servidor comience " "a aceptar conexiones." -#: ../Doc/library/asyncio-eventloop.rst:672 -msgid "Added *ssl_handshake_timeout* and *start_serving* parameters." -msgstr "Agregados los parámetros *ssl_handshake_timeout* y *start_serving*." - -#: ../Doc/library/asyncio-eventloop.rst:685 +#: ../Doc/library/asyncio-eventloop.rst:724 msgid "The *host* parameter can be a sequence of strings." msgstr "El parámetro *host* puede ser una secuencia de cadenas." -#: ../Doc/library/asyncio-eventloop.rst:689 +#: ../Doc/library/asyncio-eventloop.rst:728 +#, fuzzy +msgid "" +"Added *ssl_handshake_timeout* and *start_serving* parameters. The socket " +"option :py:data:`~socket.TCP_NODELAY` is set by default for all TCP " +"connections." +msgstr "" +"La opción del socket :py:data:`~socket.TCP_NODELAY` es establecida de manera " +"predeterminada para todas las conexiones TCP." + +#: ../Doc/library/asyncio-eventloop.rst:738 msgid "" "The :func:`start_server` function is a higher-level alternative API that " "returns a pair of :class:`StreamReader` and :class:`StreamWriter` that can " @@ -1238,7 +1314,7 @@ msgstr "" "retorna un par de :class:`StreamReader` y :class:`StreamWriter` que pueden " "ser usados en código async/await." -#: ../Doc/library/asyncio-eventloop.rst:698 +#: ../Doc/library/asyncio-eventloop.rst:749 msgid "" "Similar to :meth:`loop.create_server` but works with the :py:data:`~socket." "AF_UNIX` socket family." @@ -1246,7 +1322,7 @@ msgstr "" "Similar a :meth:`loop.create_server` pero funciona con la familia de " "sockets :py:data:`~socket.AF_UNIX`." -#: ../Doc/library/asyncio-eventloop.rst:701 +#: ../Doc/library/asyncio-eventloop.rst:752 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`, " @@ -1256,7 +1332,7 @@ msgstr "" "el argumento *sock* sea provisto. Son soportados sockets unix abstractos, :" "class:`str`, :class:`bytes`, y rutas :class:`~pathlib.Path`." -#: ../Doc/library/asyncio-eventloop.rst:706 +#: ../Doc/library/asyncio-eventloop.rst:757 msgid "" "See the documentation of the :meth:`loop.create_server` method for " "information about arguments to this method." @@ -1264,19 +1340,18 @@ msgstr "" "Vea la documentación de el método :meth:`loop.create_server` para mas " "información acerca de los argumentos de este método." -#: ../Doc/library/asyncio-eventloop.rst:713 -msgid "The *ssl_handshake_timeout* and *start_serving* parameters." -msgstr "Los parámetros *ssl_handshake_timeout*y *start_serving*." - -#: ../Doc/library/asyncio-eventloop.rst:717 -msgid "The *path* parameter can now be a :class:`~pathlib.Path` object." +#: ../Doc/library/asyncio-eventloop.rst:764 +#, fuzzy +msgid "" +"Added the *ssl_handshake_timeout* and *start_serving* parameters. The *path* " +"parameter can now be a :class:`~pathlib.Path` object." msgstr "El parámetro *path* ahora puede ser un objeto :class:`~pathlib.Path`." -#: ../Doc/library/asyncio-eventloop.rst:722 +#: ../Doc/library/asyncio-eventloop.rst:776 msgid "Wrap an already accepted connection into a transport/protocol pair." msgstr "Envuelve una conexión ya aceptada en un par de transporte/protocolo." -#: ../Doc/library/asyncio-eventloop.rst:724 +#: ../Doc/library/asyncio-eventloop.rst:778 msgid "" "This method can be used by servers that accept connections outside of " "asyncio but that use asyncio to handle them." @@ -1284,12 +1359,12 @@ msgstr "" "Este método puede ser usado por servidores que acepten conexiones por fuera " "de asyncio, pero que usen asyncio para manejarlas." -#: ../Doc/library/asyncio-eventloop.rst:727 -#: ../Doc/library/asyncio-eventloop.rst:794 +#: ../Doc/library/asyncio-eventloop.rst:781 +#: ../Doc/library/asyncio-eventloop.rst:863 msgid "Parameters:" msgstr "Parámetros:" -#: ../Doc/library/asyncio-eventloop.rst:732 +#: ../Doc/library/asyncio-eventloop.rst:786 msgid "" "*sock* is a preexisting socket object returned from :meth:`socket.accept " "`." @@ -1297,7 +1372,7 @@ msgstr "" "*sock* es un objeto socket preexistente retornado por :meth:`socket.accept " "`." -#: ../Doc/library/asyncio-eventloop.rst:735 +#: ../Doc/library/asyncio-eventloop.rst:795 msgid "" "*ssl* can be set to an :class:`~ssl.SSLContext` to enable SSL over the " "accepted connections." @@ -1305,7 +1380,7 @@ msgstr "" "*ssl* puede ser establecido como un :class:`~ssl.SSLContext` para habilitar " "SSL sobre las conexiones aceptadas." -#: ../Doc/library/asyncio-eventloop.rst:738 +#: ../Doc/library/asyncio-eventloop.rst:798 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. " @@ -1315,32 +1390,32 @@ msgstr "" "se esperará para que se complete el apretón de manos (*handshake*) SSL antes " "de abortar la conexión. ``60.0`` si es ``None`` (su valor predeterminado)." -#: ../Doc/library/asyncio-eventloop.rst:742 +#: ../Doc/library/asyncio-eventloop.rst:806 msgid "Returns a ``(transport, protocol)`` pair." msgstr "Retorna un par ``(transport, protocol)``." -#: ../Doc/library/asyncio-eventloop.rst:752 +#: ../Doc/library/asyncio-eventloop.rst:820 msgid "Transferring files" msgstr "Transfiriendo archivos" -#: ../Doc/library/asyncio-eventloop.rst:757 +#: ../Doc/library/asyncio-eventloop.rst:825 msgid "" "Send a *file* over a *transport*. Return the total number of bytes sent." msgstr "" "Envía un *file* a través de un *transport*. Retorna el numero total de bytes " "enviados." -#: ../Doc/library/asyncio-eventloop.rst:760 +#: ../Doc/library/asyncio-eventloop.rst:828 msgid "The method uses high-performance :meth:`os.sendfile` if available." msgstr "" "El método usa :meth:`os.sendfile` de alto rendimiento si está disponible." -#: ../Doc/library/asyncio-eventloop.rst:762 +#: ../Doc/library/asyncio-eventloop.rst:830 msgid "*file* must be a regular file object opened in binary mode." msgstr "*file* debe ser un objeto de archivo regular abierto en modo binario." -#: ../Doc/library/asyncio-eventloop.rst:764 -#: ../Doc/library/asyncio-eventloop.rst:954 +#: ../Doc/library/asyncio-eventloop.rst:832 +#: ../Doc/library/asyncio-eventloop.rst:1067 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 " @@ -1355,7 +1430,7 @@ msgstr "" "error, y :meth:`file.tell() ` puede ser usado para obtener " "el número de bytes enviados hasta el momento." -#: ../Doc/library/asyncio-eventloop.rst:771 +#: ../Doc/library/asyncio-eventloop.rst:839 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 " @@ -1365,7 +1440,7 @@ msgstr "" "manualmente cuando la plataforma no soporta la llamada de envío de archivos " "del sistema (por ejemplo, Windows o sockets SSL en Unix)." -#: ../Doc/library/asyncio-eventloop.rst:775 +#: ../Doc/library/asyncio-eventloop.rst:843 msgid "" "Raise :exc:`SendfileNotAvailableError` if the system does not support the " "*sendfile* syscall and *fallback* is ``False``." @@ -1373,15 +1448,15 @@ msgstr "" "Lanza :exc:`SendfileNotAvailableError` si el sistema no soporta la llamada " "de envío de archivos del sistema y *fallback* es ``True``." -#: ../Doc/library/asyncio-eventloop.rst:782 +#: ../Doc/library/asyncio-eventloop.rst:850 msgid "TLS Upgrade" msgstr "Actualización de TLS" -#: ../Doc/library/asyncio-eventloop.rst:788 +#: ../Doc/library/asyncio-eventloop.rst:857 msgid "Upgrade an existing transport-based connection to TLS." msgstr "Actualiza una conexión basada en transporte ya existente a TLS." -#: ../Doc/library/asyncio-eventloop.rst:790 +#: ../Doc/library/asyncio-eventloop.rst:859 msgid "" "Return a new transport instance, that the *protocol* must start using " "immediately after the *await*. The *transport* instance passed to the " @@ -1391,7 +1466,7 @@ msgstr "" "usar inmediatamente después del *await*. La instancia *transport* pasada al " "método *start_tls* nunca debe ser usada de nuevo." -#: ../Doc/library/asyncio-eventloop.rst:796 +#: ../Doc/library/asyncio-eventloop.rst:865 msgid "" "*transport* and *protocol* instances that methods like :meth:`~loop." "create_server` and :meth:`~loop.create_connection` return." @@ -1399,11 +1474,11 @@ msgstr "" "Las instancias *transport* y *protocol* que retornan los métodos como :meth:" "`~loop.create_server` y :meth:`~loop.create_connection`." -#: ../Doc/library/asyncio-eventloop.rst:800 +#: ../Doc/library/asyncio-eventloop.rst:869 msgid "*sslcontext*: a configured instance of :class:`~ssl.SSLContext`." msgstr "*sslcontext*: una instancia configurada de :class:`~ssl.SSLContext`." -#: ../Doc/library/asyncio-eventloop.rst:802 +#: ../Doc/library/asyncio-eventloop.rst:871 msgid "" "*server_side* pass ``True`` when a server-side connection is being upgraded " "(like the one created by :meth:`~loop.create_server`)." @@ -1411,7 +1486,7 @@ msgstr "" "*server_side* pasa `True` cuando se actualiza una conexión del lado del " "servidor (como en el caso de una creada por :meth:`~loop.create_server`)." -#: ../Doc/library/asyncio-eventloop.rst:805 +#: ../Doc/library/asyncio-eventloop.rst:874 msgid "" "*server_hostname*: sets or overrides the host name that the target server's " "certificate will be matched against." @@ -1419,11 +1494,11 @@ msgstr "" "*server_hostname*: establece o reemplaza el nombre del host contra el cual " "se compara el certificado del servidor de destino." -#: ../Doc/library/asyncio-eventloop.rst:816 +#: ../Doc/library/asyncio-eventloop.rst:894 msgid "Watching file descriptors" msgstr "Viendo descriptores de archivos" -#: ../Doc/library/asyncio-eventloop.rst:820 +#: ../Doc/library/asyncio-eventloop.rst:898 msgid "" "Start monitoring the *fd* file descriptor for read availability and invoke " "*callback* with the specified arguments once *fd* is available for reading." @@ -1432,13 +1507,13 @@ msgstr "" "lectura e invoca *callback* con los argumentos especificados una vez que " "*fd* está habilitado para ser leído." -#: ../Doc/library/asyncio-eventloop.rst:826 +#: ../Doc/library/asyncio-eventloop.rst:904 msgid "Stop monitoring the *fd* file descriptor for read availability." msgstr "" "Deja de monitorear el descriptor de archivos *fd* para disponibilidad de " "lectura." -#: ../Doc/library/asyncio-eventloop.rst:830 +#: ../Doc/library/asyncio-eventloop.rst:908 msgid "" "Start monitoring the *fd* file descriptor for write availability and invoke " "*callback* with the specified arguments once *fd* is available for writing." @@ -1447,8 +1522,8 @@ msgstr "" "escritura e invoca *callback* con los argumentos especificados una vez que " "*fd* está habilitado para ser escrito." -#: ../Doc/library/asyncio-eventloop.rst:834 -#: ../Doc/library/asyncio-eventloop.rst:1053 +#: ../Doc/library/asyncio-eventloop.rst:912 +#: ../Doc/library/asyncio-eventloop.rst:1166 msgid "" "Use :func:`functools.partial` :ref:`to pass keyword arguments ` to *callback*." @@ -1456,13 +1531,13 @@ msgstr "" "Use :func:`functools.partial` :ref:`para pasar argumentos de palabra clave " "` a *callback*." -#: ../Doc/library/asyncio-eventloop.rst:839 +#: ../Doc/library/asyncio-eventloop.rst:917 msgid "Stop monitoring the *fd* file descriptor for write availability." msgstr "" "Deja de monitorear el descriptor de archivos *fd* para disponibilidad de " "escritura." -#: ../Doc/library/asyncio-eventloop.rst:841 +#: ../Doc/library/asyncio-eventloop.rst:919 msgid "" "See also :ref:`Platform Support ` section for some " "limitations of these methods." @@ -1470,11 +1545,11 @@ msgstr "" "Vea también la sección :ref:`Soporte de plataforma ` para algunas limitaciones de estos métodos." -#: ../Doc/library/asyncio-eventloop.rst:846 +#: ../Doc/library/asyncio-eventloop.rst:924 msgid "Working with socket objects directly" msgstr "Trabajar con objetos sockets directamente" -#: ../Doc/library/asyncio-eventloop.rst:848 +#: ../Doc/library/asyncio-eventloop.rst:926 msgid "" "In general, protocol implementations that use transport-based APIs such as :" "meth:`loop.create_connection` and :meth:`loop.create_server` are faster than " @@ -1489,7 +1564,7 @@ msgstr "" "rendimiento no es crítico, y trabajar directamente con objetos :class:" "`~socket.socket` es mas conveniente." -#: ../Doc/library/asyncio-eventloop.rst:857 +#: ../Doc/library/asyncio-eventloop.rst:935 msgid "" "Receive up to *nbytes* from *sock*. Asynchronous version of :meth:`socket." "recv() `." @@ -1497,20 +1572,23 @@ msgstr "" "Recibe hasta *nbytes* de *sock*. Versión asíncrona de :meth:`socket.recv() " "`." -#: ../Doc/library/asyncio-eventloop.rst:860 +#: ../Doc/library/asyncio-eventloop.rst:938 msgid "Return the received data as a bytes object." msgstr "Retorna los datos recibidos como un objeto bytes." -#: ../Doc/library/asyncio-eventloop.rst:862 -#: ../Doc/library/asyncio-eventloop.rst:876 -#: ../Doc/library/asyncio-eventloop.rst:891 -#: ../Doc/library/asyncio-eventloop.rst:904 -#: ../Doc/library/asyncio-eventloop.rst:930 -#: ../Doc/library/asyncio-eventloop.rst:968 +#: ../Doc/library/asyncio-eventloop.rst:940 +#: ../Doc/library/asyncio-eventloop.rst:954 +#: ../Doc/library/asyncio-eventloop.rst:965 +#: ../Doc/library/asyncio-eventloop.rst:977 +#: ../Doc/library/asyncio-eventloop.rst:992 +#: ../Doc/library/asyncio-eventloop.rst:1007 +#: ../Doc/library/asyncio-eventloop.rst:1017 +#: ../Doc/library/asyncio-eventloop.rst:1043 +#: ../Doc/library/asyncio-eventloop.rst:1081 msgid "*sock* must be a non-blocking socket." msgstr "*sock* debe ser un socket no bloqueante." -#: ../Doc/library/asyncio-eventloop.rst:864 +#: ../Doc/library/asyncio-eventloop.rst:942 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 " @@ -1520,7 +1598,7 @@ msgstr "" "corrutina, los lanzamientos previos a Python 3.7 retornaban un :class:" "`Future`. Desde Python 3.7 este es un método ``async def``." -#: ../Doc/library/asyncio-eventloop.rst:871 +#: ../Doc/library/asyncio-eventloop.rst:949 msgid "" "Receive data from *sock* into the *buf* buffer. Modeled after the blocking :" "meth:`socket.recv_into() ` method." @@ -1528,11 +1606,37 @@ msgstr "" "Recibe datos desde *sock* en el búfer *buf*. Modelado después del método " "bloqueante :meth:`socket.recv_into() `." -#: ../Doc/library/asyncio-eventloop.rst:874 +#: ../Doc/library/asyncio-eventloop.rst:952 msgid "Return the number of bytes written to the buffer." msgstr "Retorna el número de bytes escritos en el búfer." -#: ../Doc/library/asyncio-eventloop.rst:882 +#: ../Doc/library/asyncio-eventloop.rst:960 +#, fuzzy +msgid "" +"Receive a datagram of up to *bufsize* from *sock*. Asynchronous version of :" +"meth:`socket.recvfrom() `." +msgstr "" +"Recibe hasta *nbytes* de *sock*. Versión asíncrona de :meth:`socket.recv() " +"`." + +#: ../Doc/library/asyncio-eventloop.rst:963 +msgid "Return a tuple of (received data, remote address)." +msgstr "" + +#: ../Doc/library/asyncio-eventloop.rst:971 +#, fuzzy +msgid "" +"Receive a datagram of up to *nbytes* from *sock* into *buf*. Asynchronous " +"version of :meth:`socket.recvfrom_into() `." +msgstr "" +"Recibe hasta *nbytes* de *sock*. Versión asíncrona de :meth:`socket.recv() " +"`." + +#: ../Doc/library/asyncio-eventloop.rst:975 +msgid "Return a tuple of (number of bytes received, remote address)." +msgstr "" + +#: ../Doc/library/asyncio-eventloop.rst:983 msgid "" "Send *data* to the *sock* socket. Asynchronous version of :meth:`socket." "sendall() `." @@ -1540,7 +1644,7 @@ msgstr "" "Envía *data* al socket *sock*. Versión asíncrona de :meth:`socket.sendall() " "`." -#: ../Doc/library/asyncio-eventloop.rst:885 +#: ../Doc/library/asyncio-eventloop.rst:986 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 " @@ -1554,26 +1658,41 @@ msgstr "" "hay manera de determinar cuantos datos, si es que se hubo alguno, se " "procesaron correctamente por el extremo receptor de la conexión." -#: ../Doc/library/asyncio-eventloop.rst:893 +#: ../Doc/library/asyncio-eventloop.rst:994 +#: ../Doc/library/asyncio-eventloop.rst:1045 msgid "" "Even though the method was always documented as a coroutine method, before " -"Python 3.7 it returned an :class:`Future`. Since Python 3.7, this is an " +"Python 3.7 it returned a :class:`Future`. Since Python 3.7, this is an " "``async def`` method." msgstr "" "A pesar de que este método siempre fue documentado como un método de " "corrutina, antes de Python 3.7 retorna un :class:`Future`. Desde Python 3.7, " "este es un método ``async def``." -#: ../Doc/library/asyncio-eventloop.rst:900 +#: ../Doc/library/asyncio-eventloop.rst:1001 +#, fuzzy +msgid "" +"Send a datagram from *sock* to *address*. Asynchronous version of :meth:" +"`socket.sendto() `." +msgstr "" +"Envía *data* al socket *sock*. Versión asíncrona de :meth:`socket.sendall() " +"`." + +#: ../Doc/library/asyncio-eventloop.rst:1005 +#, fuzzy +msgid "Return the number of bytes sent." +msgstr "Retorna el número de bytes escritos en el búfer." + +#: ../Doc/library/asyncio-eventloop.rst:1013 msgid "Connect *sock* to a remote socket at *address*." msgstr "Conecta *sock* a un socket remoto en *address*." -#: ../Doc/library/asyncio-eventloop.rst:902 +#: ../Doc/library/asyncio-eventloop.rst:1015 msgid "" "Asynchronous version of :meth:`socket.connect() `." msgstr "Versión asíncrona de :meth:`socket.connect() `." -#: ../Doc/library/asyncio-eventloop.rst:906 +#: ../Doc/library/asyncio-eventloop.rst:1019 msgid "" "``address`` no longer needs to be resolved. ``sock_connect`` will try to " "check if the *address* is already resolved by calling :func:`socket." @@ -1585,7 +1704,7 @@ msgstr "" "inet_pton`. Si no lo fue, se utilizará :meth:`loop.getaddrinfo` ara resolver " "*address*." -#: ../Doc/library/asyncio-eventloop.rst:915 +#: ../Doc/library/asyncio-eventloop.rst:1028 msgid "" ":meth:`loop.create_connection` and :func:`asyncio.open_connection() " "`." @@ -1593,7 +1712,7 @@ msgstr "" ":meth:`loop.create_connection` y :func:`asyncio.open_connection() " "`." -#: ../Doc/library/asyncio-eventloop.rst:921 +#: ../Doc/library/asyncio-eventloop.rst:1034 msgid "" "Accept a connection. Modeled after the blocking :meth:`socket.accept() " "` method." @@ -1601,7 +1720,7 @@ msgstr "" "Acepta una conexión. Modelado después del método bloqueante :meth:`socket." "accept() `." -#: ../Doc/library/asyncio-eventloop.rst:924 +#: ../Doc/library/asyncio-eventloop.rst:1037 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 " @@ -1614,21 +1733,11 @@ msgstr "" "conexión, y *address*\n" " es la dirección enlazada al socket en el otro extremo de la conexión." -#: ../Doc/library/asyncio-eventloop.rst:932 -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 "" -"A pesar de que este método siempre fue documentado como un método de " -"corrutina, antes de Python 3.7 retorna un :class:`Future`. Desde Python 3.7, " -"este es un método ``async def``." - -#: ../Doc/library/asyncio-eventloop.rst:939 +#: ../Doc/library/asyncio-eventloop.rst:1052 msgid ":meth:`loop.create_server` and :func:`start_server`." msgstr ":meth:`loop.create_server` y :func:`start_server`." -#: ../Doc/library/asyncio-eventloop.rst:944 +#: ../Doc/library/asyncio-eventloop.rst:1057 msgid "" "Send a file using high-performance :mod:`os.sendfile` if possible. Return " "the total number of bytes sent." @@ -1636,13 +1745,13 @@ msgstr "" "Envía un archivo usando :mod:`os.sendfile` de alto rendimiento si es " "posible. Retorna el número total de bytes enviados." -#: ../Doc/library/asyncio-eventloop.rst:947 +#: ../Doc/library/asyncio-eventloop.rst:1060 msgid "" "Asynchronous version of :meth:`socket.sendfile() `." msgstr "" "Versión asíncrona de :meth:`socket.sendfile() `." -#: ../Doc/library/asyncio-eventloop.rst:949 +#: ../Doc/library/asyncio-eventloop.rst:1062 msgid "" "*sock* must be a non-blocking :const:`socket.SOCK_STREAM` :class:`~socket." "socket`." @@ -1650,11 +1759,11 @@ msgstr "" "*sock* debe ser un :const:`socket.SOCK_STREAM` :class:`~socket.socket` no " "bloqueante." -#: ../Doc/library/asyncio-eventloop.rst:952 +#: ../Doc/library/asyncio-eventloop.rst:1065 msgid "*file* must be a regular file object open in binary mode." msgstr "*file* debe ser un objeto de archivo regular abierto en modo binario." -#: ../Doc/library/asyncio-eventloop.rst:961 +#: ../Doc/library/asyncio-eventloop.rst:1074 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 " @@ -1664,7 +1773,7 @@ msgstr "" "escriba el archivo manualmente cuando el sistema no soporta la llamada de " "envío de archivos del sistema (por ejemplo, Windows o sockets SSL en Unix)." -#: ../Doc/library/asyncio-eventloop.rst:965 +#: ../Doc/library/asyncio-eventloop.rst:1078 msgid "" "Raise :exc:`SendfileNotAvailableError` if the system does not support " "*sendfile* syscall and *fallback* is ``False``." @@ -1672,19 +1781,19 @@ msgstr "" "Lanza :exc:`SendfileNotAvailableError` si el sistema no soporta la llamada " "de envío de archivos del sistema *sendfile* y *fallback* es ``False``." -#: ../Doc/library/asyncio-eventloop.rst:974 +#: ../Doc/library/asyncio-eventloop.rst:1087 msgid "DNS" msgstr "DNS" -#: ../Doc/library/asyncio-eventloop.rst:979 +#: ../Doc/library/asyncio-eventloop.rst:1092 msgid "Asynchronous version of :meth:`socket.getaddrinfo`." msgstr "Versión asíncrona de :meth:`socket.getaddrinfo`." -#: ../Doc/library/asyncio-eventloop.rst:983 +#: ../Doc/library/asyncio-eventloop.rst:1096 msgid "Asynchronous version of :meth:`socket.getnameinfo`." msgstr "Asynchronous version of :meth:`socket.getnameinfo`." -#: ../Doc/library/asyncio-eventloop.rst:985 +#: ../Doc/library/asyncio-eventloop.rst:1098 msgid "" "Both *getaddrinfo* and *getnameinfo* methods were always documented to " "return a coroutine, but prior to Python 3.7 they were, in fact, returning :" @@ -1696,19 +1805,19 @@ msgstr "" "objetos :class:`Future`. A partir de Python 3.7, ambos métodos son " "corrutinas." -#: ../Doc/library/asyncio-eventloop.rst:993 +#: ../Doc/library/asyncio-eventloop.rst:1106 msgid "Working with pipes" msgstr "Trabajando con tuberías" -#: ../Doc/library/asyncio-eventloop.rst:997 +#: ../Doc/library/asyncio-eventloop.rst:1110 msgid "Register the read end of *pipe* in the event loop." msgstr "Registra el fin de lectura de *pipe* en el bucle de eventos." -#: ../Doc/library/asyncio-eventloop.rst:1002 +#: ../Doc/library/asyncio-eventloop.rst:1115 msgid "*pipe* is a :term:`file-like object `." msgstr "*pipe* es un :term:`objeto de tipo archivo `." -#: ../Doc/library/asyncio-eventloop.rst:1004 +#: ../Doc/library/asyncio-eventloop.rst:1117 msgid "" "Return pair ``(transport, protocol)``, where *transport* supports the :class:" "`ReadTransport` interface and *protocol* is an object instantiated by the " @@ -1718,8 +1827,8 @@ msgstr "" "interface :class:`ReadTransport` y *protocol* es un objeto instanciado por " "*protocol_factory*." -#: ../Doc/library/asyncio-eventloop.rst:1008 -#: ../Doc/library/asyncio-eventloop.rst:1024 +#: ../Doc/library/asyncio-eventloop.rst:1121 +#: ../Doc/library/asyncio-eventloop.rst:1137 msgid "" "With :class:`SelectorEventLoop` event loop, the *pipe* is set to non-" "blocking mode." @@ -1727,15 +1836,15 @@ msgstr "" "Con el bucle de eventos :class:`SelectorEventLoop`, el *pipe* es establecido " "en modo no bloqueante." -#: ../Doc/library/asyncio-eventloop.rst:1013 +#: ../Doc/library/asyncio-eventloop.rst:1126 msgid "Register the write end of *pipe* in the event loop." msgstr "Registra el fin de escritura de *pipe* en el bucle de eventos." -#: ../Doc/library/asyncio-eventloop.rst:1018 +#: ../Doc/library/asyncio-eventloop.rst:1131 msgid "*pipe* is :term:`file-like object `." msgstr "*pipe* es un :term:`objeto de tipo archivo `." -#: ../Doc/library/asyncio-eventloop.rst:1020 +#: ../Doc/library/asyncio-eventloop.rst:1133 msgid "" "Return pair ``(transport, protocol)``, where *transport* supports :class:" "`WriteTransport` interface and *protocol* is an object instantiated by the " @@ -1745,7 +1854,7 @@ msgstr "" "interface :class:`WriteTransport` y *protocol* es un objeto inicializado por " "*protocol_factory*." -#: ../Doc/library/asyncio-eventloop.rst:1029 +#: ../Doc/library/asyncio-eventloop.rst:1142 msgid "" ":class:`SelectorEventLoop` does not support the above methods on Windows. " "Use :class:`ProactorEventLoop` instead for Windows." @@ -1753,21 +1862,21 @@ msgstr "" ":class:`SelectorEventLoop` no soporta los métodos anteriores en windows. En " "su lugar, use :class:`ProactorEventLoop` para Windows." -#: ../Doc/library/asyncio-eventloop.rst:1034 +#: ../Doc/library/asyncio-eventloop.rst:1147 msgid "" "The :meth:`loop.subprocess_exec` and :meth:`loop.subprocess_shell` methods." msgstr "" "Los métodos :meth:`loop.subprocess_exec` y :meth:`loop.subprocess_shell`." -#: ../Doc/library/asyncio-eventloop.rst:1039 +#: ../Doc/library/asyncio-eventloop.rst:1152 msgid "Unix signals" msgstr "Señales Unix" -#: ../Doc/library/asyncio-eventloop.rst:1043 +#: ../Doc/library/asyncio-eventloop.rst:1156 msgid "Set *callback* as the handler for the *signum* signal." msgstr "Establece *callback* como el gestor para la señal *signum*." -#: ../Doc/library/asyncio-eventloop.rst:1045 +#: ../Doc/library/asyncio-eventloop.rst:1158 msgid "" "The callback will be invoked by *loop*, along with other queued callbacks " "and runnable coroutines of that event loop. Unlike signal handlers " @@ -1779,7 +1888,7 @@ msgstr "" "señal la registren usando :func:`signal.signal`, una llamada registrada con " "esta función tiene permitido interactuar con el bucle de eventos." -#: ../Doc/library/asyncio-eventloop.rst:1050 +#: ../Doc/library/asyncio-eventloop.rst:1163 msgid "" "Raise :exc:`ValueError` if the signal number is invalid or uncatchable. " "Raise :exc:`RuntimeError` if there is a problem setting up the handler." @@ -1787,18 +1896,18 @@ msgstr "" "Lanza :exc:`ValueError` si el número de señal es invalido o inalcanzable. " "Lanza :exc:`RuntimeError` si hay algún problema preparando el gestor." -#: ../Doc/library/asyncio-eventloop.rst:1056 +#: ../Doc/library/asyncio-eventloop.rst:1169 msgid "" "Like :func:`signal.signal`, this function must be invoked in the main thread." msgstr "" "Como :func:`signal.signal`, esta función debe ser invocada en el hilo " "principal." -#: ../Doc/library/asyncio-eventloop.rst:1061 +#: ../Doc/library/asyncio-eventloop.rst:1174 msgid "Remove the handler for the *sig* signal." msgstr "Elimina el gestor para la señal *sig*." -#: ../Doc/library/asyncio-eventloop.rst:1063 +#: ../Doc/library/asyncio-eventloop.rst:1176 msgid "" "Return ``True`` if the signal handler was removed, or ``False`` if no " "handler was set for the given signal." @@ -1806,19 +1915,19 @@ msgstr "" "Retorna ``True`` si el gestor de señal fue eliminado, o ``False`` si no se " "estableció gestor para la señal dada." -#: ../Doc/library/asyncio-eventloop.rst:1070 +#: ../Doc/library/asyncio-eventloop.rst:1183 msgid "The :mod:`signal` module." msgstr "El módulo :mod:`signal`." -#: ../Doc/library/asyncio-eventloop.rst:1074 +#: ../Doc/library/asyncio-eventloop.rst:1187 msgid "Executing code in thread or process pools" msgstr "Ejecutando código en un hilos o grupos de procesos" -#: ../Doc/library/asyncio-eventloop.rst:1078 +#: ../Doc/library/asyncio-eventloop.rst:1191 msgid "Arrange for *func* to be called in the specified executor." msgstr "Hace arreglos para que *func* sea llamado en el ejecutor especificado." -#: ../Doc/library/asyncio-eventloop.rst:1080 +#: ../Doc/library/asyncio-eventloop.rst:1193 msgid "" "The *executor* argument should be an :class:`concurrent.futures.Executor` " "instance. The default executor is used if *executor* is ``None``." @@ -1826,11 +1935,19 @@ msgstr "" "El argumento *executor* debe ser una instancia de :class:`concurrent.futures." "Executor`. El ejecutor predeterminado es usado si *executor* es ``None``." -#: ../Doc/library/asyncio-eventloop.rst:1124 +#: ../Doc/library/asyncio-eventloop.rst:1238 +msgid "" +"Note that the entry point guard (``if __name__ == '__main__'``) is required " +"for option 3 due to the peculiarities of :mod:`multiprocessing`, which is " +"used by :class:`~concurrent.futures.ProcessPoolExecutor`. See :ref:`Safe " +"importing of main module `." +msgstr "" + +#: ../Doc/library/asyncio-eventloop.rst:1243 msgid "This method returns a :class:`asyncio.Future` object." msgstr "Este método retorna un objeto :class:`asyncio.Future`." -#: ../Doc/library/asyncio-eventloop.rst:1126 +#: ../Doc/library/asyncio-eventloop.rst:1245 msgid "" "Use :func:`functools.partial` :ref:`to pass keyword arguments ` to *func*." @@ -1838,7 +1955,7 @@ msgstr "" "Use :func:`functools.partial` :ref:`para pasar argumentos de palabra clave " "` a *func*." -#: ../Doc/library/asyncio-eventloop.rst:1129 +#: ../Doc/library/asyncio-eventloop.rst:1248 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 " @@ -1850,48 +1967,42 @@ msgstr "" "del grupo de subprocesos (:class:`~concurrent.futures.ThreadPoolExecutor`) " "para establecer el valor por defecto." -#: ../Doc/library/asyncio-eventloop.rst:1138 +#: ../Doc/library/asyncio-eventloop.rst:1257 +#, fuzzy msgid "" "Set *executor* as the default executor used by :meth:`run_in_executor`. " -"*executor* should be an instance of :class:`~concurrent.futures." +"*executor* must be an instance of :class:`~concurrent.futures." "ThreadPoolExecutor`." msgstr "" "Establece *executor* como el ejecutor predeterminado utilizado por :meth:" "`run_in_executor`. *executor* debe ser una instancia de :class:`~concurrent." "futures.ThreadPoolExecutor`." -#: ../Doc/library/asyncio-eventloop.rst:1142 -msgid "" -"Using an executor that is not an instance of :class:`~concurrent.futures." -"ThreadPoolExecutor` is deprecated and will trigger an error in Python 3.9." -msgstr "" -"Usar un ejecutor que no es una instancia de :class:`~concurrent.futures." -"ThreadPoolExecutor` es obsoleto y disparará un error en Python 3.9." - -#: ../Doc/library/asyncio-eventloop.rst:1147 +#: ../Doc/library/asyncio-eventloop.rst:1261 +#, fuzzy msgid "" -"*executor* must be an instance of :class:`concurrent.futures." +"*executor* must be an instance of :class:`~concurrent.futures." "ThreadPoolExecutor`." msgstr "" "*executor* debe ser una instancia de :class:`concurrent.futures." "ThreadPoolExecutor`." -#: ../Doc/library/asyncio-eventloop.rst:1152 +#: ../Doc/library/asyncio-eventloop.rst:1267 msgid "Error Handling API" msgstr "API para manejo de errores" -#: ../Doc/library/asyncio-eventloop.rst:1154 +#: ../Doc/library/asyncio-eventloop.rst:1269 msgid "Allows customizing how exceptions are handled in the event loop." msgstr "" "Permite personalizar como son manejadas las excepciones en el bucle de " "eventos." -#: ../Doc/library/asyncio-eventloop.rst:1158 +#: ../Doc/library/asyncio-eventloop.rst:1273 msgid "Set *handler* as the new event loop exception handler." msgstr "" "Establece *handler* como el nuevo gestor de excepciones del bucle de eventos." -#: ../Doc/library/asyncio-eventloop.rst:1160 +#: ../Doc/library/asyncio-eventloop.rst:1275 msgid "" "If *handler* is ``None``, the default exception handler will be set. " "Otherwise, *handler* must be a callable with the signature matching ``(loop, " @@ -1906,7 +2017,7 @@ msgstr "" "detalles de la excepción (vea la documentación de :meth:" "`call_exception_handler` para detalles acerca del contexto)." -#: ../Doc/library/asyncio-eventloop.rst:1170 +#: ../Doc/library/asyncio-eventloop.rst:1285 msgid "" "Return the current exception handler, or ``None`` if no custom exception " "handler was set." @@ -1914,11 +2025,11 @@ msgstr "" "Retorna el gesto de excepciones actual, o ``None`` si no fue establecido " "ningún gestor de excepciones personalizado." -#: ../Doc/library/asyncio-eventloop.rst:1177 +#: ../Doc/library/asyncio-eventloop.rst:1292 msgid "Default exception handler." msgstr "Gestor de excepciones por defecto." -#: ../Doc/library/asyncio-eventloop.rst:1179 +#: ../Doc/library/asyncio-eventloop.rst:1294 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 " @@ -1928,7 +2039,7 @@ msgstr "" "de excepciones. Esto puede ser llamado por un gestor de excepciones " "personalizado que quiera cambiar el comportamiento del gestor predeterminado." -#: ../Doc/library/asyncio-eventloop.rst:1183 +#: ../Doc/library/asyncio-eventloop.rst:1298 msgid "" "*context* parameter has the same meaning as in :meth:" "`call_exception_handler`." @@ -1936,11 +2047,11 @@ msgstr "" "El parámetro *context* tiene el mismo significado que en :meth:" "`call_exception_handler`." -#: ../Doc/library/asyncio-eventloop.rst:1188 +#: ../Doc/library/asyncio-eventloop.rst:1303 msgid "Call the current event loop exception handler." msgstr "Llama al gestor de excepciones del bucle de eventos actual." -#: ../Doc/library/asyncio-eventloop.rst:1190 +#: ../Doc/library/asyncio-eventloop.rst:1305 msgid "" "*context* is a ``dict`` object containing the following keys (new keys may " "be introduced in future Python versions):" @@ -1948,49 +2059,49 @@ msgstr "" "*context* es un objeto ``dict`` conteniendo las siguientes claves (en " "futuras versiones de Python podrían introducirse nuevas claves):" -#: ../Doc/library/asyncio-eventloop.rst:1193 +#: ../Doc/library/asyncio-eventloop.rst:1308 msgid "'message': Error message;" msgstr "'message': Mensaje de error;" -#: ../Doc/library/asyncio-eventloop.rst:1194 +#: ../Doc/library/asyncio-eventloop.rst:1309 msgid "'exception' (optional): Exception object;" msgstr "'exception' (opcional): Objeto de excepción;" -#: ../Doc/library/asyncio-eventloop.rst:1195 +#: ../Doc/library/asyncio-eventloop.rst:1310 msgid "'future' (optional): :class:`asyncio.Future` instance;" msgstr "'future' (opcional): instancia de :class:`asyncio.Future`;" -#: ../Doc/library/asyncio-eventloop.rst:1196 +#: ../Doc/library/asyncio-eventloop.rst:1311 msgid "'task' (optional): :class:`asyncio.Task` instance;" msgstr "'task' (opcional): instancia de :class:`asyncio.Task`;" -#: ../Doc/library/asyncio-eventloop.rst:1197 +#: ../Doc/library/asyncio-eventloop.rst:1312 msgid "'handle' (optional): :class:`asyncio.Handle` instance;" msgstr "'handle' (opcional): instancia de :class:`asyncio.Handle`;" -#: ../Doc/library/asyncio-eventloop.rst:1198 +#: ../Doc/library/asyncio-eventloop.rst:1313 msgid "'protocol' (optional): :ref:`Protocol ` instance;" msgstr "" "'protocol' (opcional): instancia de :ref:`Protocol `;" -#: ../Doc/library/asyncio-eventloop.rst:1199 +#: ../Doc/library/asyncio-eventloop.rst:1314 msgid "'transport' (optional): :ref:`Transport ` instance;" msgstr "" "'transport' (opcional): instancia de :ref:`Transport `;" -#: ../Doc/library/asyncio-eventloop.rst:1200 +#: ../Doc/library/asyncio-eventloop.rst:1315 msgid "'socket' (optional): :class:`socket.socket` instance;" msgstr "'socket' (opcional): instancia de :class:`socket.socket`;" -#: ../Doc/library/asyncio-eventloop.rst:1202 +#: ../Doc/library/asyncio-eventloop.rst:1317 msgid "'asyncgen' (optional): Asynchronous generator that caused" msgstr "'asyncgen' (opcional): Generador asíncrono que causó" -#: ../Doc/library/asyncio-eventloop.rst:1202 +#: ../Doc/library/asyncio-eventloop.rst:1317 msgid "the exception." msgstr "la excepción." -#: ../Doc/library/asyncio-eventloop.rst:1206 +#: ../Doc/library/asyncio-eventloop.rst:1321 msgid "" "This method should not be overloaded in subclassed event loops. For custom " "exception handling, use the :meth:`set_exception_handler()` method." @@ -1999,15 +2110,15 @@ msgstr "" "gestión de excepciones personalizadas, use el método :meth:" "`set_exception_handler()`." -#: ../Doc/library/asyncio-eventloop.rst:1211 +#: ../Doc/library/asyncio-eventloop.rst:1326 msgid "Enabling debug mode" msgstr "Habilitando el modo depuración" -#: ../Doc/library/asyncio-eventloop.rst:1215 +#: ../Doc/library/asyncio-eventloop.rst:1330 msgid "Get the debug mode (:class:`bool`) of the event loop." msgstr "Obtiene el modo depuración (:class:`bool`) del bucle de eventos." -#: ../Doc/library/asyncio-eventloop.rst:1217 +#: ../Doc/library/asyncio-eventloop.rst:1332 msgid "" "The default value is ``True`` if the environment variable :envvar:" "`PYTHONASYNCIODEBUG` is set to a non-empty string, ``False`` otherwise." @@ -2016,11 +2127,11 @@ msgstr "" "`PYTHONASYNCIODEBUG` es establecida a una cadena no vacía, de otro modo será " "``False``." -#: ../Doc/library/asyncio-eventloop.rst:1223 +#: ../Doc/library/asyncio-eventloop.rst:1338 msgid "Set the debug mode of the event loop." msgstr "Establece el modo de depuración del bucle de eventos." -#: ../Doc/library/asyncio-eventloop.rst:1227 +#: ../Doc/library/asyncio-eventloop.rst:1342 msgid "" "The new :ref:`Python Development Mode ` can now also be used to " "enable the debug mode." @@ -2028,15 +2139,15 @@ msgstr "" "El nuevo :ref:`Python Modo de Desarrollo ` ahora también se puede " "usar para habilitar el modo de depuración." -#: ../Doc/library/asyncio-eventloop.rst:1232 +#: ../Doc/library/asyncio-eventloop.rst:1347 msgid "The :ref:`debug mode of asyncio `." msgstr "El :ref:`modo depuración de asyncio `." -#: ../Doc/library/asyncio-eventloop.rst:1236 +#: ../Doc/library/asyncio-eventloop.rst:1351 msgid "Running Subprocesses" msgstr "Ejecutando Subprocesos" -#: ../Doc/library/asyncio-eventloop.rst:1238 +#: ../Doc/library/asyncio-eventloop.rst:1353 msgid "" "Methods described in this subsections are low-level. In regular async/await " "code consider using the high-level :func:`asyncio.create_subprocess_shell` " @@ -2046,32 +2157,29 @@ msgstr "" "await regular considere usar las convenientes funciones de alto nivel :func:" "`asyncio.create_subprocess_shell` y :func:`asyncio.create_subprocess_exec`." -#: ../Doc/library/asyncio-eventloop.rst:1245 +#: ../Doc/library/asyncio-eventloop.rst:1360 msgid "" -"The default asyncio event loop on **Windows** does not support subprocesses. " -"See :ref:`Subprocess Support on Windows ` for " -"details." +"On Windows, the default event loop :class:`ProactorEventLoop` supports " +"subprocesses, whereas :class:`SelectorEventLoop` does not. See :ref:" +"`Subprocess Support on Windows ` for details." msgstr "" -"El bucle de eventos predeterminado de asyncio en **Windows** no soporta " -"subprocesos. Vea :ref:`Soporte de subprocesos en Windows ` para mas detalles." -#: ../Doc/library/asyncio-eventloop.rst:1253 +#: ../Doc/library/asyncio-eventloop.rst:1369 msgid "" "Create a subprocess from one or more string arguments specified by *args*." msgstr "" "Crea un subproceso de uno o mas argumentos de cadena especificados por " "*args*." -#: ../Doc/library/asyncio-eventloop.rst:1256 +#: ../Doc/library/asyncio-eventloop.rst:1372 msgid "*args* must be a list of strings represented by:" msgstr "*args* debe ser una lista de cadenas representadas por:" -#: ../Doc/library/asyncio-eventloop.rst:1258 +#: ../Doc/library/asyncio-eventloop.rst:1374 msgid ":class:`str`;" msgstr ":class:`str`;" -#: ../Doc/library/asyncio-eventloop.rst:1259 +#: ../Doc/library/asyncio-eventloop.rst:1375 msgid "" "or :class:`bytes`, encoded to the :ref:`filesystem encoding `." @@ -2079,7 +2187,7 @@ msgstr "" "o :class:`bytes`, codificados a la :ref:`codificación del sistema de " "archivos `." -#: ../Doc/library/asyncio-eventloop.rst:1262 +#: ../Doc/library/asyncio-eventloop.rst:1378 msgid "" "The first string specifies the program executable, and the remaining strings " "specify the arguments. Together, string arguments form the ``argv`` of the " @@ -2089,7 +2197,7 @@ msgstr "" "especifican los argumentos. En conjunto, los argumentos de cadena forman el " "``argv`` del programa." -#: ../Doc/library/asyncio-eventloop.rst:1266 +#: ../Doc/library/asyncio-eventloop.rst:1382 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 " @@ -2102,7 +2210,7 @@ msgstr "" "sólo argumento que es una lista de cadenas, *subprocess_exec* toma múltiples " "cadenas como argumentos." -#: ../Doc/library/asyncio-eventloop.rst:1272 +#: ../Doc/library/asyncio-eventloop.rst:1388 msgid "" "The *protocol_factory* must be a callable returning a subclass of the :class:" "`asyncio.SubprocessProtocol` class." @@ -2110,15 +2218,15 @@ msgstr "" "El *protocol_factory* debe ser un ejecutable que retorne una subclase de la " "clase :class:`asyncio.SubprocessProtocol`." -#: ../Doc/library/asyncio-eventloop.rst:1275 +#: ../Doc/library/asyncio-eventloop.rst:1391 msgid "Other parameters:" msgstr "Otros parámetros:" -#: ../Doc/library/asyncio-eventloop.rst:1277 +#: ../Doc/library/asyncio-eventloop.rst:1393 msgid "*stdin* can be any of these:" msgstr "*stdin* puede ser cualquier de estos:" -#: ../Doc/library/asyncio-eventloop.rst:1279 +#: ../Doc/library/asyncio-eventloop.rst:1395 msgid "" "a file-like object representing a pipe to be connected to the subprocess's " "standard input stream using :meth:`~loop.connect_write_pipe`" @@ -2127,9 +2235,9 @@ msgstr "" "flujo de entrada estándar del subproceso utilizando :meth:`~loop." "connect_write_pipe`" -#: ../Doc/library/asyncio-eventloop.rst:1282 -#: ../Doc/library/asyncio-eventloop.rst:1294 -#: ../Doc/library/asyncio-eventloop.rst:1306 +#: ../Doc/library/asyncio-eventloop.rst:1398 +#: ../Doc/library/asyncio-eventloop.rst:1410 +#: ../Doc/library/asyncio-eventloop.rst:1422 msgid "" "the :const:`subprocess.PIPE` constant (default) which will create a new pipe " "and connect it," @@ -2137,9 +2245,9 @@ msgstr "" "la constante :const:`subprocess.PIPE` (predeterminado) que creará una " "tubería nueva y la conectará," -#: ../Doc/library/asyncio-eventloop.rst:1284 -#: ../Doc/library/asyncio-eventloop.rst:1296 -#: ../Doc/library/asyncio-eventloop.rst:1308 +#: ../Doc/library/asyncio-eventloop.rst:1400 +#: ../Doc/library/asyncio-eventloop.rst:1412 +#: ../Doc/library/asyncio-eventloop.rst:1424 msgid "" "the value ``None`` which will make the subprocess inherit the file " "descriptor from this process" @@ -2147,9 +2255,9 @@ msgstr "" "el valor ``None`` que hará que el subproceso herede el descriptor de archivo " "de este proceso" -#: ../Doc/library/asyncio-eventloop.rst:1286 -#: ../Doc/library/asyncio-eventloop.rst:1298 -#: ../Doc/library/asyncio-eventloop.rst:1310 +#: ../Doc/library/asyncio-eventloop.rst:1402 +#: ../Doc/library/asyncio-eventloop.rst:1414 +#: ../Doc/library/asyncio-eventloop.rst:1426 msgid "" "the :const:`subprocess.DEVNULL` constant which indicates that the special :" "data:`os.devnull` file will be used" @@ -2157,11 +2265,11 @@ msgstr "" "la constante :const:`subprocess.DEVNULL` que indica que el archivo especial :" "data:`os.devnull` será utilizado" -#: ../Doc/library/asyncio-eventloop.rst:1289 +#: ../Doc/library/asyncio-eventloop.rst:1405 msgid "*stdout* can be any of these:" msgstr "*stdout* puede ser cualquier de estos:" -#: ../Doc/library/asyncio-eventloop.rst:1291 +#: ../Doc/library/asyncio-eventloop.rst:1407 msgid "" "a file-like object representing a pipe to be connected to the subprocess's " "standard output stream using :meth:`~loop.connect_write_pipe`" @@ -2170,11 +2278,11 @@ msgstr "" "flujo de salida estándar del subproceso utilizando :meth:`~loop." "connect_write_pipe`" -#: ../Doc/library/asyncio-eventloop.rst:1301 +#: ../Doc/library/asyncio-eventloop.rst:1417 msgid "*stderr* can be any of these:" msgstr "*stderr* puede ser cualquier de estos:" -#: ../Doc/library/asyncio-eventloop.rst:1303 +#: ../Doc/library/asyncio-eventloop.rst:1419 msgid "" "a file-like object representing a pipe to be connected to the subprocess's " "standard error stream using :meth:`~loop.connect_write_pipe`" @@ -2183,7 +2291,7 @@ msgstr "" "flujo de error estándar del subproceso utilizando :meth:`~loop." "connect_write_pipe`" -#: ../Doc/library/asyncio-eventloop.rst:1312 +#: ../Doc/library/asyncio-eventloop.rst:1428 msgid "" "the :const:`subprocess.STDOUT` constant which will connect the standard " "error stream to the process' standard output stream" @@ -2191,7 +2299,7 @@ msgstr "" "la constante :const:`subprocess.STDOUT` que conectará el flujo de errores " "predeterminado al flujo de salida predeterminado del proceso" -#: ../Doc/library/asyncio-eventloop.rst:1315 +#: ../Doc/library/asyncio-eventloop.rst:1431 msgid "" "All other keyword arguments are passed to :class:`subprocess.Popen` without " "interpretation, except for *bufsize*, *universal_newlines*, *shell*, *text*, " @@ -2202,7 +2310,7 @@ msgstr "" "*shell*, *text*, *encoding* y *errors*, que no deben ser especificados en lo " "absoluto." -#: ../Doc/library/asyncio-eventloop.rst:1320 +#: ../Doc/library/asyncio-eventloop.rst:1436 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 " @@ -2212,7 +2320,7 @@ msgstr "" "func:`bytes.decode` puede ser usado para convertir a texto los bytes " "retornados por el flujo." -#: ../Doc/library/asyncio-eventloop.rst:1324 +#: ../Doc/library/asyncio-eventloop.rst:1440 msgid "" "See the constructor of the :class:`subprocess.Popen` class for documentation " "on other arguments." @@ -2220,7 +2328,7 @@ msgstr "" "Vea el constructor de la clase :class:`subprocess.Popen` para documentación " "acerca de otros argumentos." -#: ../Doc/library/asyncio-eventloop.rst:1327 +#: ../Doc/library/asyncio-eventloop.rst:1443 msgid "" "Returns a pair of ``(transport, protocol)``, where *transport* conforms to " "the :class:`asyncio.SubprocessTransport` base class and *protocol* is an " @@ -2230,7 +2338,7 @@ msgstr "" "la clase base :class:`asyncio.SubprocessTransport` y *protocol* es un objeto " "instanciado por *protocol_factory*." -#: ../Doc/library/asyncio-eventloop.rst:1335 +#: ../Doc/library/asyncio-eventloop.rst:1451 msgid "" "Create a subprocess from *cmd*, which can be a :class:`str` or a :class:" "`bytes` string encoded to the :ref:`filesystem encoding `, usando la sintaxis \"shell\" de la plataforma." -#: ../Doc/library/asyncio-eventloop.rst:1340 +#: ../Doc/library/asyncio-eventloop.rst:1456 msgid "" "This is similar to the standard library :class:`subprocess.Popen` class " "called with ``shell=True``." @@ -2248,7 +2356,7 @@ msgstr "" "Esto es similar a la clase de la librería estándar :class:`subprocess.Popen` " "llamada con ``shell=True``." -#: ../Doc/library/asyncio-eventloop.rst:1343 +#: ../Doc/library/asyncio-eventloop.rst:1459 msgid "" "The *protocol_factory* must be a callable returning a subclass of the :class:" "`SubprocessProtocol` class." @@ -2256,7 +2364,7 @@ msgstr "" "El *protocol_factory* debe ser un ejecutable que retorne una subclase de la " "clase :class:`asyncio.SubprocessProtocol`." -#: ../Doc/library/asyncio-eventloop.rst:1346 +#: ../Doc/library/asyncio-eventloop.rst:1462 msgid "" "See :meth:`~loop.subprocess_exec` for more details about the remaining " "arguments." @@ -2264,7 +2372,7 @@ msgstr "" "Vea :meth:`~loop.subprocess_exec` para mas detalles acerca de los argumentos " "restantes." -#: ../Doc/library/asyncio-eventloop.rst:1349 +#: ../Doc/library/asyncio-eventloop.rst:1465 msgid "" "Returns a pair of ``(transport, protocol)``, where *transport* conforms to " "the :class:`SubprocessTransport` base class and *protocol* is an object " @@ -2274,7 +2382,7 @@ msgstr "" "la clase base :class:`SubprocessTransport` y *protocol* es un objeto " "instanciado por *protocol_factory*." -#: ../Doc/library/asyncio-eventloop.rst:1354 +#: ../Doc/library/asyncio-eventloop.rst:1470 msgid "" "It is the application's responsibility to ensure that all whitespace and " "special characters are quoted appropriately to avoid `shell injection " @@ -2290,11 +2398,11 @@ msgstr "" "usada para escapar apropiadamente espacios en blanco y caracteres especiales " "en cadenas que van a ser usadas para construir comandos de consola." -#: ../Doc/library/asyncio-eventloop.rst:1363 +#: ../Doc/library/asyncio-eventloop.rst:1479 msgid "Callback Handles" msgstr "Gestores de llamadas" -#: ../Doc/library/asyncio-eventloop.rst:1367 +#: ../Doc/library/asyncio-eventloop.rst:1483 msgid "" "A callback wrapper object returned by :meth:`loop.call_soon`, :meth:`loop." "call_soon_threadsafe`." @@ -2302,7 +2410,7 @@ msgstr "" "Un objeto de contenedor de llamada retornado por :meth:`loop.call_soon`, :" "meth:`loop.call_soon_threadsafe`." -#: ../Doc/library/asyncio-eventloop.rst:1372 +#: ../Doc/library/asyncio-eventloop.rst:1488 msgid "" "Cancel the callback. If the callback has already been canceled or executed, " "this method has no effect." @@ -2310,11 +2418,11 @@ msgstr "" "Cancela la llamada. Si la llamada ya fue cancelada o ejecutada, este método " "no tiene efecto." -#: ../Doc/library/asyncio-eventloop.rst:1377 +#: ../Doc/library/asyncio-eventloop.rst:1493 msgid "Return ``True`` if the callback was cancelled." msgstr "Retorna ``True`` si la llamada fue cancelada." -#: ../Doc/library/asyncio-eventloop.rst:1383 +#: ../Doc/library/asyncio-eventloop.rst:1499 msgid "" "A callback wrapper object returned by :meth:`loop.call_later`, and :meth:" "`loop.call_at`." @@ -2322,16 +2430,16 @@ msgstr "" "Un objeto de contenedor de llamada retornado por :meth:`loop.call_later`, " "and :meth:`loop.call_at`." -#: ../Doc/library/asyncio-eventloop.rst:1386 +#: ../Doc/library/asyncio-eventloop.rst:1502 msgid "This class is a subclass of :class:`Handle`." msgstr "Esta clase es una subclase de :class:`Handle`." -#: ../Doc/library/asyncio-eventloop.rst:1390 +#: ../Doc/library/asyncio-eventloop.rst:1506 msgid "Return a scheduled callback time as :class:`float` seconds." msgstr "" "Retorna el tiempo de una llamada planificada como :class:`float` segundos." -#: ../Doc/library/asyncio-eventloop.rst:1392 +#: ../Doc/library/asyncio-eventloop.rst:1508 msgid "" "The time is an absolute timestamp, using the same time reference as :meth:" "`loop.time`." @@ -2339,11 +2447,11 @@ msgstr "" "El tiempo es una marca de tiempo absoluta, usando la misma referencia de " "tiempo que :meth:`loop.time`." -#: ../Doc/library/asyncio-eventloop.rst:1399 +#: ../Doc/library/asyncio-eventloop.rst:1515 msgid "Server Objects" msgstr "Objetos Servidor" -#: ../Doc/library/asyncio-eventloop.rst:1401 +#: ../Doc/library/asyncio-eventloop.rst:1517 msgid "" "Server objects are created by :meth:`loop.create_server`, :meth:`loop." "create_unix_server`, :func:`start_server`, and :func:`start_unix_server` " @@ -2353,11 +2461,11 @@ msgstr "" "create_server`, :meth:`loop.create_unix_server`, :func:`start_server`, y :" "func:`start_unix_server`." -#: ../Doc/library/asyncio-eventloop.rst:1405 +#: ../Doc/library/asyncio-eventloop.rst:1521 msgid "Do not instantiate the class directly." msgstr "No instanciar la clase directamente." -#: ../Doc/library/asyncio-eventloop.rst:1409 +#: ../Doc/library/asyncio-eventloop.rst:1525 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 " @@ -2368,12 +2476,12 @@ msgstr "" "Servidor está cerrado y no está aceptando nuevas conexiones cuando la " "declaración ``async with`` es completada::" -#: ../Doc/library/asyncio-eventloop.rst:1422 +#: ../Doc/library/asyncio-eventloop.rst:1538 msgid "Server object is an asynchronous context manager since Python 3.7." msgstr "" "El objeto Servidor es un gestor asíncrono de contexto desde Python 3.7." -#: ../Doc/library/asyncio-eventloop.rst:1427 +#: ../Doc/library/asyncio-eventloop.rst:1543 msgid "" "Stop serving: close listening sockets and set the :attr:`sockets` attribute " "to ``None``." @@ -2381,7 +2489,7 @@ msgstr "" "Deja de servir: deja de escuchar sockets y establece el atributo :attr:" "`sockets` a ``None``." -#: ../Doc/library/asyncio-eventloop.rst:1430 +#: ../Doc/library/asyncio-eventloop.rst:1546 msgid "" "The sockets that represent existing incoming client connections are left " "open." @@ -2389,7 +2497,7 @@ msgstr "" "Los sockets que representan conexiones entrantes existentes de clientes se " "dejan abiertas." -#: ../Doc/library/asyncio-eventloop.rst:1433 +#: ../Doc/library/asyncio-eventloop.rst:1549 msgid "" "The server is closed asynchronously, use the :meth:`wait_closed` coroutine " "to wait until the server is closed." @@ -2397,23 +2505,24 @@ msgstr "" "El servidor es cerrado de manera asíncrona, usa la corrutina :meth:" "`wait_closed` para esperar hasta que el servidor esté cerrado." -#: ../Doc/library/asyncio-eventloop.rst:1438 +#: ../Doc/library/asyncio-eventloop.rst:1554 msgid "Return the event loop associated with the server object." msgstr "Retorna el bucle de eventos asociado con el objeto Servidor." -#: ../Doc/library/asyncio-eventloop.rst:1444 +#: ../Doc/library/asyncio-eventloop.rst:1560 msgid "Start accepting connections." msgstr "Comienza a aceptar conexiones." -#: ../Doc/library/asyncio-eventloop.rst:1446 +#: ../Doc/library/asyncio-eventloop.rst:1562 +#, fuzzy msgid "" "This method is idempotent, so it can be called when the server is already " -"being serving." +"serving." msgstr "" "Este método es idempotente, así que puede ser llamado cuando el servidor ya " "está sirviendo." -#: ../Doc/library/asyncio-eventloop.rst:1449 +#: ../Doc/library/asyncio-eventloop.rst:1565 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 " @@ -2427,7 +2536,7 @@ msgstr "" "``Server.start_serving()``, o :meth:`Server.serve_forever` pueden ser usados " "para hacer que el servidor empiece a aceptar conexiones." -#: ../Doc/library/asyncio-eventloop.rst:1460 +#: ../Doc/library/asyncio-eventloop.rst:1576 msgid "" "Start accepting connections until the coroutine is cancelled. Cancellation " "of ``serve_forever`` task causes the server to be closed." @@ -2435,7 +2544,7 @@ msgstr "" "Comienza a aceptar conexiones hasta que la corrutina sea cancelada. La " "cancelación de la tarea ``serve_forever`` hace que el servidor sea cerrado." -#: ../Doc/library/asyncio-eventloop.rst:1464 +#: ../Doc/library/asyncio-eventloop.rst:1580 msgid "" "This method can be called if the server is already accepting connections. " "Only one ``serve_forever`` task can exist per one *Server* object." @@ -2443,21 +2552,21 @@ msgstr "" "Este método puede ser llamado si el servidor ya está aceptando conexiones. " "Solamente una tarea ``serve_forever`` puede existir para un objeto *Server*." -#: ../Doc/library/asyncio-eventloop.rst:1486 +#: ../Doc/library/asyncio-eventloop.rst:1602 msgid "Return ``True`` if the server is accepting new connections." msgstr "Retorna ``True`` si el servidor está aceptando nuevas conexiones." -#: ../Doc/library/asyncio-eventloop.rst:1492 +#: ../Doc/library/asyncio-eventloop.rst:1608 msgid "Wait until the :meth:`close` method completes." msgstr "Espera hasta que el método :meth:`close` se complete." -#: ../Doc/library/asyncio-eventloop.rst:1496 +#: ../Doc/library/asyncio-eventloop.rst:1612 msgid "List of :class:`socket.socket` objects the server is listening on." msgstr "" "Lista todos los objetos :class:`socket.socket` en los que el servidor está " "escuchando." -#: ../Doc/library/asyncio-eventloop.rst:1498 +#: ../Doc/library/asyncio-eventloop.rst:1614 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." @@ -2465,11 +2574,11 @@ msgstr "" "Antes de Python 3.7 ``Server.sockets`` solía retornar directamente una lista " "interna de servidores socket. En 3.7 se retorna una copia de esa lista." -#: ../Doc/library/asyncio-eventloop.rst:1507 +#: ../Doc/library/asyncio-eventloop.rst:1624 msgid "Event Loop Implementations" msgstr "Implementaciones del bucle de eventos" -#: ../Doc/library/asyncio-eventloop.rst:1509 +#: ../Doc/library/asyncio-eventloop.rst:1626 msgid "" "asyncio ships with two different event loop implementations: :class:" "`SelectorEventLoop` and :class:`ProactorEventLoop`." @@ -2477,7 +2586,7 @@ msgstr "" "asyncio viene con dos implementaciones diferentes del bucle de eventos: :" "class:`SelectorEventLoop` y :class:`ProactorEventLoop`." -#: ../Doc/library/asyncio-eventloop.rst:1512 +#: ../Doc/library/asyncio-eventloop.rst:1629 msgid "" "By default asyncio is configured to use :class:`SelectorEventLoop` on Unix " "and :class:`ProactorEventLoop` on Windows." @@ -2485,11 +2594,11 @@ msgstr "" "De manera predefinida asyncio está configurado para usar :class:" "`SelectorEventLoop` en Unix y :class:`ProactorEventLoop` en Windows." -#: ../Doc/library/asyncio-eventloop.rst:1518 +#: ../Doc/library/asyncio-eventloop.rst:1635 msgid "An event loop based on the :mod:`selectors` module." msgstr "Un bucle de eventos basado en el módulo :mod:`selectors`." -#: ../Doc/library/asyncio-eventloop.rst:1520 +#: ../Doc/library/asyncio-eventloop.rst:1637 msgid "" "Uses the most efficient *selector* available for the given platform. It is " "also possible to manually configure the exact selector implementation to be " @@ -2499,21 +2608,21 @@ msgstr "" "es posible configurar manualmente la implementación exacta del selector a " "utilizar::" -#: ../Doc/library/asyncio-eventloop.rst:1532 +#: ../Doc/library/asyncio-eventloop.rst:1652 msgid ":ref:`Availability `: Unix, Windows." msgstr ":ref:`Disponibilidad `: Unix, Windows." -#: ../Doc/library/asyncio-eventloop.rst:1537 +#: ../Doc/library/asyncio-eventloop.rst:1657 msgid "An event loop for Windows that uses \"I/O Completion Ports\" (IOCP)." msgstr "" -"Un bucle de eventos para Windows que usa \"E/S Puertos de Finalización" -"\" (IOCP)." +"Un bucle de eventos para Windows que usa \"E/S Puertos de " +"Finalización\" (IOCP)." -#: ../Doc/library/asyncio-eventloop.rst:1540 +#: ../Doc/library/asyncio-eventloop.rst:1660 msgid ":ref:`Availability `: Windows." msgstr ":ref:`Disponibilidad `: Windows." -#: ../Doc/library/asyncio-eventloop.rst:1543 +#: ../Doc/library/asyncio-eventloop.rst:1663 msgid "" "`MSDN documentation on I/O Completion Ports `_." @@ -2521,25 +2630,25 @@ msgstr "" "`Documentaci´on de MSDN sobre E/S Puertos de Finalización `_." -#: ../Doc/library/asyncio-eventloop.rst:1549 +#: ../Doc/library/asyncio-eventloop.rst:1669 msgid "Abstract base class for asyncio-compliant event loops." msgstr "Clase base abstracta para bucles de evento compatibles con asyncio." -#: ../Doc/library/asyncio-eventloop.rst:1551 +#: ../Doc/library/asyncio-eventloop.rst:1671 +#, fuzzy msgid "" -"The :ref:`Event Loop Methods ` section lists all methods " -"that an alternative implementation of ``AbstractEventLoop`` should have " -"defined." +"The :ref:`asyncio-event-loop-methods` section lists all methods that an " +"alternative implementation of ``AbstractEventLoop`` should have defined." msgstr "" "La sección :ref:`Métodos del bucle de eventos ` lista " "todos los métodos que como implementación alternativa de " "``AbstractEventLoop`` debería haber estado definido." -#: ../Doc/library/asyncio-eventloop.rst:1557 +#: ../Doc/library/asyncio-eventloop.rst:1677 msgid "Examples" msgstr "Examples" -#: ../Doc/library/asyncio-eventloop.rst:1559 +#: ../Doc/library/asyncio-eventloop.rst:1679 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." @@ -2552,11 +2661,11 @@ msgstr "" "raramente necesitan ser escritas de esta manera; considere utilizar " "funciones de alto nivel como :func:`asyncio.run`." -#: ../Doc/library/asyncio-eventloop.rst:1569 +#: ../Doc/library/asyncio-eventloop.rst:1689 msgid "Hello World with call_soon()" msgstr "Hola Mundo con call_soon()" -#: ../Doc/library/asyncio-eventloop.rst:1571 +#: ../Doc/library/asyncio-eventloop.rst:1691 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::" @@ -2565,7 +2674,7 @@ msgstr "" "llamada. La llamada muestra ``\"Hello World\"`` y luego para el bucle de " "eventos::" -#: ../Doc/library/asyncio-eventloop.rst:1595 +#: ../Doc/library/asyncio-eventloop.rst:1715 msgid "" "A similar :ref:`Hello World ` example created with a coroutine " "and the :func:`run` function." @@ -2573,11 +2682,11 @@ msgstr "" "Un ejemplo similar de :ref:`Hola Mundo ` creado con una corrutina " "y la función :func:`run`." -#: ../Doc/library/asyncio-eventloop.rst:1602 +#: ../Doc/library/asyncio-eventloop.rst:1722 msgid "Display the current date with call_later()" msgstr "Muestra la fecha actual con call_later()" -#: ../Doc/library/asyncio-eventloop.rst:1604 +#: ../Doc/library/asyncio-eventloop.rst:1724 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 " @@ -2587,7 +2696,7 @@ msgstr "" "usa el método :meth:`loop.call_later` para volver a planificarse después de " "5 segundos, y después para el bucle de eventos::" -#: ../Doc/library/asyncio-eventloop.rst:1632 +#: ../Doc/library/asyncio-eventloop.rst:1752 msgid "" "A similar :ref:`current date ` example created with a " "coroutine and the :func:`run` function." @@ -2595,11 +2704,11 @@ msgstr "" "Un ejemplo similar a :ref:`fecha actual ` creado con " "una corrutina y la función :func:`run`." -#: ../Doc/library/asyncio-eventloop.rst:1639 +#: ../Doc/library/asyncio-eventloop.rst:1759 msgid "Watch a file descriptor for read events" msgstr "Mirar un descriptor de archivo para leer eventos" -#: ../Doc/library/asyncio-eventloop.rst:1641 +#: ../Doc/library/asyncio-eventloop.rst:1761 msgid "" "Wait until a file descriptor received some data using the :meth:`loop." "add_reader` method and then close the event loop::" @@ -2607,7 +2716,7 @@ msgstr "" "Espera hasta que el descriptor de archivo reciba algún dato usando el " "método :meth:`loop.add_reader` y entonces cierra el bucle de eventos::" -#: ../Doc/library/asyncio-eventloop.rst:1679 +#: ../Doc/library/asyncio-eventloop.rst:1799 msgid "" "A similar :ref:`example ` using " "transports, protocols, and the :meth:`loop.create_connection` method." @@ -2615,7 +2724,7 @@ msgstr "" "Un :ref:`ejemplo ` similar usando " "transportes, protocolos y el método :meth:`loop.create_connection`." -#: ../Doc/library/asyncio-eventloop.rst:1683 +#: ../Doc/library/asyncio-eventloop.rst:1803 msgid "" "Another similar :ref:`example ` " "using the high-level :func:`asyncio.open_connection` function and streams." @@ -2624,18 +2733,56 @@ msgstr "" "usando la función de alto nivel :func:`asyncio.open_connection` y " "transmisiones." -#: ../Doc/library/asyncio-eventloop.rst:1691 +#: ../Doc/library/asyncio-eventloop.rst:1811 msgid "Set signal handlers for SIGINT and SIGTERM" msgstr "Establece los gestores de señal para SIGINT y SIGTERM" -#: ../Doc/library/asyncio-eventloop.rst:1693 +#: ../Doc/library/asyncio-eventloop.rst:1813 msgid "(This ``signals`` example only works on Unix.)" msgstr "(Este ejemplo de ``signals`` solamente funcionan en Unix.)" -#: ../Doc/library/asyncio-eventloop.rst:1695 +#: ../Doc/library/asyncio-eventloop.rst:1815 msgid "" "Register handlers for signals :py:data:`SIGINT` and :py:data:`SIGTERM` using " "the :meth:`loop.add_signal_handler` method::" msgstr "" "Registra gestores para las señales :py:data:`SIGINT` y :py:data:`SIGTERM` " "usando el método :meth:`loop.add_signal_handler`::" + +#~ msgid "" +#~ "The *reuse_address* parameter is no longer supported due to security " +#~ "concerns." +#~ msgstr "" +#~ "El parámetro *reuse_address* ya no es soportado debido a problemas de " +#~ "seguridad." + +#~ msgid "Added *ssl_handshake_timeout* and *start_serving* parameters." +#~ msgstr "Agregados los parámetros *ssl_handshake_timeout* y *start_serving*." + +#~ msgid "The *ssl_handshake_timeout* and *start_serving* parameters." +#~ msgstr "Los parámetros *ssl_handshake_timeout*y *start_serving*." + +#~ msgid "" +#~ "Even though the method was always documented as a coroutine method, " +#~ "before Python 3.7 it returned an :class:`Future`. Since Python 3.7, this " +#~ "is an ``async def`` method." +#~ msgstr "" +#~ "A pesar de que este método siempre fue documentado como un método de " +#~ "corrutina, antes de Python 3.7 retorna un :class:`Future`. Desde Python " +#~ "3.7, este es un método ``async def``." + +#~ msgid "" +#~ "Using an executor that is not an instance of :class:`~concurrent.futures." +#~ "ThreadPoolExecutor` is deprecated and will trigger an error in Python 3.9." +#~ msgstr "" +#~ "Usar un ejecutor que no es una instancia de :class:`~concurrent.futures." +#~ "ThreadPoolExecutor` es obsoleto y disparará un error en Python 3.9." + +#~ msgid "" +#~ "The default asyncio event loop on **Windows** does not support " +#~ "subprocesses. See :ref:`Subprocess Support on Windows ` for details." +#~ msgstr "" +#~ "El bucle de eventos predeterminado de asyncio en **Windows** no soporta " +#~ "subprocesos. Vea :ref:`Soporte de subprocesos en Windows ` para mas detalles." diff --git a/library/asyncio-exceptions.po b/library/asyncio-exceptions.po index 291996f2ba..b48b624a55 100644 --- a/library/asyncio-exceptions.po +++ b/library/asyncio-exceptions.po @@ -10,17 +10,16 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-05 12:54+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2020-10-09 05:04-0500\n" +"Last-Translator: \n" +"Language: es_EC\n" "Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" +"Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.8.0\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Last-Translator: \n" -"Language: es_EC\n" -"X-Generator: Poedit 2.4.1\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/library/asyncio-exceptions.rst:8 msgid "Exceptions" @@ -31,20 +30,22 @@ msgid "**Source code:** :source:`Lib/asyncio/exceptions.py`" msgstr "**Código Fuente** :source:`Lib/asyncio/exceptions.py`" #: ../Doc/library/asyncio-exceptions.rst:16 -msgid "The operation has exceeded the given deadline." +#, fuzzy +msgid "" +"A deprecated alias of :exc:`TimeoutError`, raised when the operation has " +"exceeded the given deadline." msgstr "La operación ha excedido el tiempo límite." -#: ../Doc/library/asyncio-exceptions.rst:19 -msgid "" -"This exception is different from the builtin :exc:`TimeoutError` exception." -msgstr "" -"Esta excepción es diferente a la excepción incorporada :exc:`TimeoutError`." +#: ../Doc/library/asyncio-exceptions.rst:21 +#, fuzzy +msgid "This class was made an alias of :exc:`TimeoutError`." +msgstr "Una subclase de :exc:`RuntimeError`." -#: ../Doc/library/asyncio-exceptions.rst:25 +#: ../Doc/library/asyncio-exceptions.rst:26 msgid "The operation has been cancelled." msgstr "La operación ha sido cancelada." -#: ../Doc/library/asyncio-exceptions.rst:27 +#: ../Doc/library/asyncio-exceptions.rst:28 msgid "" "This exception can be caught to perform custom operations when asyncio Tasks " "are cancelled. In almost all situations the exception must be re-raised." @@ -53,15 +54,15 @@ msgstr "" "cuando se cancelan las tareas de asyncio. En casi todas las situaciones, la " "excepción debe volver a lanzarse." -#: ../Doc/library/asyncio-exceptions.rst:33 +#: ../Doc/library/asyncio-exceptions.rst:34 msgid ":exc:`CancelledError` is now a subclass of :class:`BaseException`." msgstr ":exc:`CancelledError` es ahora una subclase de :class:`BaseException`." -#: ../Doc/library/asyncio-exceptions.rst:38 +#: ../Doc/library/asyncio-exceptions.rst:39 msgid "Invalid internal state of :class:`Task` or :class:`Future`." msgstr "Estado Interno no válido de :class:`Task` o :class:`Future`." -#: ../Doc/library/asyncio-exceptions.rst:40 +#: ../Doc/library/asyncio-exceptions.rst:41 msgid "" "Can be raised in situations like setting a result value for a *Future* " "object that already has a result value set." @@ -69,46 +70,53 @@ msgstr "" "Se puede lanzar en situaciones como establecer un valor de resultado para un " "objeto *Future* que ya tiene un valor de resultado establecido." -#: ../Doc/library/asyncio-exceptions.rst:46 +#: ../Doc/library/asyncio-exceptions.rst:47 msgid "" "The \"sendfile\" syscall is not available for the given socket or file type." msgstr "" "La llamada al sistema \"sendfile\" no esta disponible desde el *socket* o " "tipo de archivo dado." -#: ../Doc/library/asyncio-exceptions.rst:49 +#: ../Doc/library/asyncio-exceptions.rst:50 msgid "A subclass of :exc:`RuntimeError`." msgstr "Una subclase de :exc:`RuntimeError`." -#: ../Doc/library/asyncio-exceptions.rst:54 +#: ../Doc/library/asyncio-exceptions.rst:55 msgid "The requested read operation did not complete fully." msgstr "La operación de lectura solicitada no se completó completamente." -#: ../Doc/library/asyncio-exceptions.rst:56 +#: ../Doc/library/asyncio-exceptions.rst:57 msgid "Raised by the :ref:`asyncio stream APIs`." msgstr "Lanzado por la :ref:`asyncio stream APIs`." -#: ../Doc/library/asyncio-exceptions.rst:58 +#: ../Doc/library/asyncio-exceptions.rst:59 msgid "This exception is a subclass of :exc:`EOFError`." msgstr "La excepción es una subclase de :exc:`EOFError`." -#: ../Doc/library/asyncio-exceptions.rst:62 +#: ../Doc/library/asyncio-exceptions.rst:63 msgid "The total number (:class:`int`) of expected bytes." msgstr "El número total (:class:`int`) de bytes esperados." -#: ../Doc/library/asyncio-exceptions.rst:66 +#: ../Doc/library/asyncio-exceptions.rst:67 msgid "A string of :class:`bytes` read before the end of stream was reached." msgstr "" "Un cadena de :class:`bytes` leída antes de que alcance al final del flujo." -#: ../Doc/library/asyncio-exceptions.rst:71 +#: ../Doc/library/asyncio-exceptions.rst:72 msgid "Reached the buffer size limit while looking for a separator." msgstr "Alcanzó el límite de tamaño del búfer mientras buscaba un separador." -#: ../Doc/library/asyncio-exceptions.rst:73 +#: ../Doc/library/asyncio-exceptions.rst:74 msgid "Raised by the :ref:`asyncio stream APIs `." msgstr "Lanzado por :ref:`asyncio stream APIs `." -#: ../Doc/library/asyncio-exceptions.rst:77 +#: ../Doc/library/asyncio-exceptions.rst:78 msgid "The total number of to be consumed bytes." msgstr "El número total de bytes que se consumirán." + +#~ msgid "" +#~ "This exception is different from the builtin :exc:`TimeoutError` " +#~ "exception." +#~ msgstr "" +#~ "Esta excepción es diferente a la excepción incorporada :exc:" +#~ "`TimeoutError`." diff --git a/library/asyncio-extending.po b/library/asyncio-extending.po new file mode 100644 index 0000000000..cc4deb2fbc --- /dev/null +++ b/library/asyncio-extending.po @@ -0,0 +1,156 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2001-2022, Python Software Foundation +# This file is distributed under the same license as the Python en Español +# package. +# FIRST AUTHOR , 2022. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Python en Español 3.11\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-10-25 19:47+0200\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" +"Generated-By: Babel 2.10.3\n" + +#: ../Doc/library/asyncio-extending.rst:6 +msgid "Extending" +msgstr "" + +#: ../Doc/library/asyncio-extending.rst:8 +msgid "" +"The main direction for :mod:`asyncio` extending is writing custom *event " +"loop* classes. Asyncio has helpers that could be used to simplify this task." +msgstr "" + +#: ../Doc/library/asyncio-extending.rst:13 +msgid "" +"Third-parties should reuse existing asyncio code with caution, a new Python " +"version is free to break backward compatibility in *internal* part of API." +msgstr "" + +#: ../Doc/library/asyncio-extending.rst:19 +msgid "Writing a Custom Event Loop" +msgstr "" + +#: ../Doc/library/asyncio-extending.rst:21 +msgid "" +":class:`asyncio.AbstractEventLoop` declares very many methods. Implementing " +"all them from scratch is a tedious job." +msgstr "" + +#: ../Doc/library/asyncio-extending.rst:24 +msgid "" +"A loop can get many common methods implementation for free by inheriting " +"from :class:`asyncio.BaseEventLoop`." +msgstr "" + +#: ../Doc/library/asyncio-extending.rst:27 +msgid "" +"In turn, the successor should implement a bunch of *private* methods " +"declared but not implemented in :class:`asyncio.BaseEventLoop`." +msgstr "" + +#: ../Doc/library/asyncio-extending.rst:30 +msgid "" +"For example, ``loop.create_connection()`` checks arguments, resolves DNS " +"addresses, and calls ``loop._make_socket_transport()`` that should be " +"implemented by inherited class. The ``_make_socket_transport()`` method is " +"not documented and is considered as an *internal* API." +msgstr "" + +#: ../Doc/library/asyncio-extending.rst:38 +msgid "Future and Task private constructors" +msgstr "" + +#: ../Doc/library/asyncio-extending.rst:40 +msgid "" +":class:`asyncio.Future` and :class:`asyncio.Task` should be never created " +"directly, please use corresponding :meth:`loop.create_future` and :meth:" +"`loop.create_task`, or :func:`asyncio.create_task` factories instead." +msgstr "" + +#: ../Doc/library/asyncio-extending.rst:44 +msgid "" +"However, third-party *event loops* may *reuse* built-in future and task " +"implementations for the sake of getting a complex and highly optimized code " +"for free." +msgstr "" + +#: ../Doc/library/asyncio-extending.rst:47 +msgid "For this purpose the following, *private* constructors are listed:" +msgstr "" + +#: ../Doc/library/asyncio-extending.rst:51 +msgid "Create a built-in future instance." +msgstr "" + +#: ../Doc/library/asyncio-extending.rst:53 +msgid "*loop* is an optional event loop instance." +msgstr "" + +#: ../Doc/library/asyncio-extending.rst:57 +msgid "Create a built-in task instance." +msgstr "" + +#: ../Doc/library/asyncio-extending.rst:59 +msgid "" +"*loop* is an optional event loop instance. The rest of arguments are " +"described in :meth:`loop.create_task` description." +msgstr "" + +#: ../Doc/library/asyncio-extending.rst:64 +msgid "*context* argument is added." +msgstr "" + +#: ../Doc/library/asyncio-extending.rst:69 +msgid "Task lifetime support" +msgstr "" + +#: ../Doc/library/asyncio-extending.rst:71 +msgid "" +"A third party task implementation should call the following functions to " +"keep a task visible by :func:`asyncio.get_tasks` and :func:`asyncio." +"current_task`:" +msgstr "" + +#: ../Doc/library/asyncio-extending.rst:76 +msgid "Register a new *task* as managed by *asyncio*." +msgstr "" + +#: ../Doc/library/asyncio-extending.rst:78 +msgid "Call the function from a task constructor." +msgstr "" + +#: ../Doc/library/asyncio-extending.rst:82 +msgid "Unregister a *task* from *asyncio* internal structures." +msgstr "" + +#: ../Doc/library/asyncio-extending.rst:84 +msgid "The function should be called when a task is about to finish." +msgstr "" + +#: ../Doc/library/asyncio-extending.rst:88 +msgid "Switch the current task to the *task* argument." +msgstr "" + +#: ../Doc/library/asyncio-extending.rst:90 +msgid "" +"Call the function just before executing a portion of embedded *coroutine* (:" +"meth:`coroutine.send` or :meth:`coroutine.throw`)." +msgstr "" + +#: ../Doc/library/asyncio-extending.rst:95 +msgid "Switch the current task back from *task* to ``None``." +msgstr "" + +#: ../Doc/library/asyncio-extending.rst:97 +msgid "" +"Call the function just after :meth:`coroutine.send` or :meth:`coroutine." +"throw` execution." +msgstr "" diff --git a/library/asyncio-future.po b/library/asyncio-future.po index 8012c06874..ca72a46763 100644 --- a/library/asyncio-future.po +++ b/library/asyncio-future.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-11-05 11:32-0400\n" "Last-Translator: Cristián Maureira-Fredes \n" "Language: es\n" @@ -19,8 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/library/asyncio-future.rst:8 msgid "Futures" @@ -107,10 +106,16 @@ msgstr "" "crear nuevas *Tasks*." #: ../Doc/library/asyncio-future.rst:57 +msgid "" +"Save a reference to the result of this function, to avoid a task " +"disappearing mid-execution." +msgstr "" + +#: ../Doc/library/asyncio-future.rst:60 msgid "The function accepts any :term:`awaitable` object." msgstr "La función acepta cualquier objeto :term:`awaitable`." -#: ../Doc/library/asyncio-future.rst:60 +#: ../Doc/library/asyncio-future.rst:63 msgid "" "Deprecation warning is emitted if *obj* is not a Future-like object and " "*loop* is not specified and there is no running event loop." @@ -118,7 +123,7 @@ msgstr "" "Se emite una advertencia de desaprobación si *obj* no es un objeto tipo " "Future y no se especifica *loop* y no hay un bucle de eventos en ejecución." -#: ../Doc/library/asyncio-future.rst:67 +#: ../Doc/library/asyncio-future.rst:70 msgid "" "Wrap a :class:`concurrent.futures.Future` object in a :class:`asyncio." "Future` object." @@ -126,7 +131,7 @@ msgstr "" "Envuelve un objeto :class:`concurrent.futures.Future` en un objeto :class:" "`asyncio.Future`." -#: ../Doc/library/asyncio-future.rst:70 +#: ../Doc/library/asyncio-future.rst:73 msgid "" "Deprecation warning is emitted if *future* is not a Future-like object and " "*loop* is not specified and there is no running event loop." @@ -134,11 +139,11 @@ msgstr "" "Se emite una advertencia de desaprobación si *future* no es un objeto tipo " "Future y *loop* no se especifica y no hay un bucle de eventos en ejecución." -#: ../Doc/library/asyncio-future.rst:76 +#: ../Doc/library/asyncio-future.rst:79 msgid "Future Object" msgstr "Objeto Future" -#: ../Doc/library/asyncio-future.rst:80 +#: ../Doc/library/asyncio-future.rst:83 msgid "" "A Future represents an eventual result of an asynchronous operation. Not " "thread-safe." @@ -146,17 +151,18 @@ msgstr "" "Un Future representa un resultado eventual de una operación asíncrona. No es " "seguro en hilos (*thread-safe*)." -#: ../Doc/library/asyncio-future.rst:83 +#: ../Doc/library/asyncio-future.rst:86 +#, fuzzy msgid "" "Future is an :term:`awaitable` object. Coroutines can await on Future " "objects until they either have a result or an exception set, or until they " -"are cancelled." +"are cancelled. A Future can be awaited multiple times and the result is same." msgstr "" "Future es un objeto :term:`awaitable`. Las corrutinas pueden esperar " "(*await*) a objetos Future hasta que obtengan un resultado o excepción, o " "hasta que se cancelen." -#: ../Doc/library/asyncio-future.rst:87 +#: ../Doc/library/asyncio-future.rst:91 msgid "" "Typically Futures are used to enable low-level callback-based code (e.g. in " "protocols implemented using asyncio :ref:`transports `) interactúe con código *async/await* de alto nivel." -#: ../Doc/library/asyncio-future.rst:92 +#: ../Doc/library/asyncio-future.rst:96 msgid "" "The rule of thumb is to never expose Future objects in user-facing APIs, and " "the recommended way to create a Future object is to call :meth:`loop." @@ -180,11 +186,11 @@ msgstr "" "bucles de eventos (*event loop*) pueden inyectar sus propias " "implementaciones optimizadas de un objeto Future." -#: ../Doc/library/asyncio-future.rst:98 +#: ../Doc/library/asyncio-future.rst:102 msgid "Added support for the :mod:`contextvars` module." msgstr "Añadido soporte para el módulo :mod:`contextvars`." -#: ../Doc/library/asyncio-future.rst:101 +#: ../Doc/library/asyncio-future.rst:105 msgid "" "Deprecation warning is emitted if *loop* is not specified and there is no " "running event loop." @@ -192,11 +198,11 @@ msgstr "" "Se emite una advertencia de desaprobación si no se especifica *loop* y no " "hay un bucle de eventos en ejecución." -#: ../Doc/library/asyncio-future.rst:107 +#: ../Doc/library/asyncio-future.rst:111 msgid "Return the result of the Future." msgstr "Retorna el resultado del Future." -#: ../Doc/library/asyncio-future.rst:109 +#: ../Doc/library/asyncio-future.rst:113 msgid "" "If the Future is *done* and has a result set by the :meth:`set_result` " "method, the result value is returned." @@ -204,7 +210,7 @@ msgstr "" "Si el Future es *done* y tiene un resultado establecido por el método :meth:" "`set_result`, el valor resultante es retornado." -#: ../Doc/library/asyncio-future.rst:112 +#: ../Doc/library/asyncio-future.rst:116 msgid "" "If the Future is *done* and has an exception set by the :meth:" "`set_exception` method, this method raises the exception." @@ -212,7 +218,7 @@ msgstr "" "Si el Future es *done* y tiene una excepción establecida por el método :meth:" "`set_exception`, este método lanzará esta excepción." -#: ../Doc/library/asyncio-future.rst:115 ../Doc/library/asyncio-future.rst:203 +#: ../Doc/library/asyncio-future.rst:119 ../Doc/library/asyncio-future.rst:207 msgid "" "If the Future has been *cancelled*, this method raises a :exc:" "`CancelledError` exception." @@ -220,7 +226,7 @@ msgstr "" "Si un evento es *cancelled*, este método lanzará una excepción :exc:" "`CancelledError`." -#: ../Doc/library/asyncio-future.rst:118 +#: ../Doc/library/asyncio-future.rst:122 msgid "" "If the Future's result isn't yet available, this method raises a :exc:" "`InvalidStateError` exception." @@ -228,24 +234,24 @@ msgstr "" "Si el resultado del Future todavía no está disponible, este método lanzará " "una excepción :exc:`InvalidStateError`." -#: ../Doc/library/asyncio-future.rst:123 +#: ../Doc/library/asyncio-future.rst:127 msgid "Mark the Future as *done* and set its result." msgstr "Marca el Future como *done* y establece su resultado." -#: ../Doc/library/asyncio-future.rst:125 ../Doc/library/asyncio-future.rst:132 +#: ../Doc/library/asyncio-future.rst:129 ../Doc/library/asyncio-future.rst:136 msgid "" "Raises a :exc:`InvalidStateError` error if the Future is already *done*." msgstr "Lanza un error :exc:`InvalidStateError` si el Future ya está *done*." -#: ../Doc/library/asyncio-future.rst:130 +#: ../Doc/library/asyncio-future.rst:134 msgid "Mark the Future as *done* and set an exception." msgstr "Marca el Future como *done* y establece una excepción." -#: ../Doc/library/asyncio-future.rst:137 +#: ../Doc/library/asyncio-future.rst:141 msgid "Return ``True`` if the Future is *done*." msgstr "Retorna ``True`` si el Future está *done*." -#: ../Doc/library/asyncio-future.rst:139 +#: ../Doc/library/asyncio-future.rst:143 msgid "" "A Future is *done* if it was *cancelled* or if it has a result or an " "exception set with :meth:`set_result` or :meth:`set_exception` calls." @@ -254,11 +260,11 @@ msgstr "" "excepción establecidos mediante llamadas a :meth:`set_result` o :meth:" "`set_exception`." -#: ../Doc/library/asyncio-future.rst:145 +#: ../Doc/library/asyncio-future.rst:149 msgid "Return ``True`` if the Future was *cancelled*." msgstr "Retorna ``True`` si el Future fue *cancelled*." -#: ../Doc/library/asyncio-future.rst:147 +#: ../Doc/library/asyncio-future.rst:151 msgid "" "The method is usually used to check if a Future is not *cancelled* before " "setting a result or an exception for it::" @@ -266,19 +272,19 @@ msgstr "" "El método suele utilizarse para comprobar que un Future no es *cancelled* " "antes de establecer un resultado o excepción al mismo::" -#: ../Doc/library/asyncio-future.rst:155 +#: ../Doc/library/asyncio-future.rst:159 msgid "Add a callback to be run when the Future is *done*." msgstr "" "Añade una retrollamada (*callback*) a ser ejecutada cuando el Future es " "*done*." -#: ../Doc/library/asyncio-future.rst:157 +#: ../Doc/library/asyncio-future.rst:161 msgid "The *callback* is called with the Future object as its only argument." msgstr "" "La retrollamada (*callback*) es llamada con el objeto Future como su único " "argumento." -#: ../Doc/library/asyncio-future.rst:160 +#: ../Doc/library/asyncio-future.rst:164 msgid "" "If the Future is already *done* when this method is called, the callback is " "scheduled with :meth:`loop.call_soon`." @@ -286,7 +292,7 @@ msgstr "" "Si el Future ya es *done* cuando se llama a este método, la retrollamada " "(*callback*) es programada con :meth:`loop.call_soon`." -#: ../Doc/library/asyncio-future.rst:163 +#: ../Doc/library/asyncio-future.rst:167 msgid "" "An optional keyword-only *context* argument allows specifying a custom :" "class:`contextvars.Context` for the *callback* to run in. The current " @@ -297,7 +303,7 @@ msgstr "" "retrollamada (*callback*). El contexto actual se utiliza cuando no se provee " "un contexto (*context*)." -#: ../Doc/library/asyncio-future.rst:167 +#: ../Doc/library/asyncio-future.rst:171 msgid "" ":func:`functools.partial` can be used to pass parameters to the callback, e." "g.::" @@ -305,7 +311,7 @@ msgstr "" ":func:`functools.partial` se puede utilizar para dar parámetros a la " "retrollamada (*callback*), por ejemplo::" -#: ../Doc/library/asyncio-future.rst:174 +#: ../Doc/library/asyncio-future.rst:178 msgid "" "The *context* keyword-only parameter was added. See :pep:`567` for more " "details." @@ -313,11 +319,11 @@ msgstr "" "El parámetro de contexto (*context*) por palabra clave fue añadido. Ver :pep:" "`567` para más detalles." -#: ../Doc/library/asyncio-future.rst:180 +#: ../Doc/library/asyncio-future.rst:184 msgid "Remove *callback* from the callbacks list." msgstr "Elimina la retrollamada (*callback*) de la lista de retrollamadas." -#: ../Doc/library/asyncio-future.rst:182 +#: ../Doc/library/asyncio-future.rst:186 msgid "" "Returns the number of callbacks removed, which is typically 1, unless a " "callback was added more than once." @@ -325,11 +331,11 @@ msgstr "" "Retorna el número de retrollamadas (*callbacks*) eliminadas, que normalmente " "es 1, excepto si una retrollamada fue añadida más de una vez." -#: ../Doc/library/asyncio-future.rst:187 +#: ../Doc/library/asyncio-future.rst:191 msgid "Cancel the Future and schedule callbacks." msgstr "Cancela el Future y programa retrollamadas (*callbacks*)." -#: ../Doc/library/asyncio-future.rst:189 +#: ../Doc/library/asyncio-future.rst:193 msgid "" "If the Future is already *done* or *cancelled*, return ``False``. Otherwise, " "change the Future's state to *cancelled*, schedule the callbacks, and return " @@ -339,15 +345,16 @@ msgstr "" "contrario, cambia el estado del Future a *cancelled*, programa las " "retrollamadas, y retorna ``True``." -#: ../Doc/library/asyncio-future.rst:193 -msgid "Added the ``msg`` parameter." +#: ../Doc/library/asyncio-future.rst:197 +#, fuzzy +msgid "Added the *msg* parameter." msgstr "Se agregó el parámetro ``msg``." -#: ../Doc/library/asyncio-future.rst:198 +#: ../Doc/library/asyncio-future.rst:202 msgid "Return the exception that was set on this Future." msgstr "Retorna la excepción definida en este Future." -#: ../Doc/library/asyncio-future.rst:200 +#: ../Doc/library/asyncio-future.rst:204 msgid "" "The exception (or ``None`` if no exception was set) is returned only if the " "Future is *done*." @@ -355,7 +362,7 @@ msgstr "" "La excepción (o ``None`` si no se había establecido ninguna excepción) es " "retornada sólo si Future es *done*." -#: ../Doc/library/asyncio-future.rst:206 +#: ../Doc/library/asyncio-future.rst:210 msgid "" "If the Future isn't *done* yet, this method raises an :exc:" "`InvalidStateError` exception." @@ -363,13 +370,13 @@ msgstr "" "Si el Future todavía no es *done*, este método lanza una excepción :exc:" "`InvalidStateError`." -#: ../Doc/library/asyncio-future.rst:211 +#: ../Doc/library/asyncio-future.rst:215 msgid "Return the event loop the Future object is bound to." msgstr "" "Retorna el bucle de eventos (*event loop*) al cual el objeto Future está " "asociado." -#: ../Doc/library/asyncio-future.rst:218 +#: ../Doc/library/asyncio-future.rst:222 msgid "" "This example creates a Future object, creates and schedules an asynchronous " "Task to set result for the Future, and waits until the Future has a result::" @@ -378,7 +385,7 @@ msgstr "" "establecer el resultado para el Future, y espera hasta que el Future tenga " "un resultado::" -#: ../Doc/library/asyncio-future.rst:253 +#: ../Doc/library/asyncio-future.rst:257 msgid "" "The Future object was designed to mimic :class:`concurrent.futures.Future`. " "Key differences include:" @@ -386,7 +393,7 @@ msgstr "" "El objeto Future fue diseñado para imitar a :class:`concurrent.futures." "Future`. Entre las principales diferencias están:" -#: ../Doc/library/asyncio-future.rst:256 +#: ../Doc/library/asyncio-future.rst:260 msgid "" "unlike asyncio Futures, :class:`concurrent.futures.Future` instances cannot " "be awaited." @@ -394,7 +401,7 @@ msgstr "" "al contrario que Futures de *asyncio*, las instancias de :class:`concurrent." "futures.Future` no son aguardables (*await*)." -#: ../Doc/library/asyncio-future.rst:259 +#: ../Doc/library/asyncio-future.rst:263 msgid "" ":meth:`asyncio.Future.result` and :meth:`asyncio.Future.exception` do not " "accept the *timeout* argument." @@ -402,7 +409,7 @@ msgstr "" ":meth:`asyncio.Future.result` y :meth:`asyncio.Future.exception` no aceptan " "el argumento *timeout*." -#: ../Doc/library/asyncio-future.rst:262 +#: ../Doc/library/asyncio-future.rst:266 msgid "" ":meth:`asyncio.Future.result` and :meth:`asyncio.Future.exception` raise an :" "exc:`InvalidStateError` exception when the Future is not *done*." @@ -410,7 +417,7 @@ msgstr "" ":meth:`asyncio.Future.result` y :meth:`asyncio.Future.exception` lanzan una " "excepción :exc:`InvalidStateError` cuando el Future no es *done*." -#: ../Doc/library/asyncio-future.rst:266 +#: ../Doc/library/asyncio-future.rst:270 msgid "" "Callbacks registered with :meth:`asyncio.Future.add_done_callback` are not " "called immediately. They are scheduled with :meth:`loop.call_soon` instead." @@ -419,7 +426,7 @@ msgstr "" "add_done_callback` no son llamadas inmediatamente, sino que son programadas " "con :meth:`loop.call_soon`." -#: ../Doc/library/asyncio-future.rst:270 +#: ../Doc/library/asyncio-future.rst:274 msgid "" "asyncio Future is not compatible with the :func:`concurrent.futures.wait` " "and :func:`concurrent.futures.as_completed` functions." @@ -427,7 +434,7 @@ msgstr "" "*asyncio* Future no es compatible con las funciones :func:`concurrent." "futures.wait` ni :func:`concurrent.futures.as_completed`." -#: ../Doc/library/asyncio-future.rst:274 +#: ../Doc/library/asyncio-future.rst:278 msgid "" ":meth:`asyncio.Future.cancel` accepts an optional ``msg`` argument, but :" "func:`concurrent.futures.cancel` does not." diff --git a/library/asyncio-llapi-index.po b/library/asyncio-llapi-index.po index d3136c610f..a1b36c09fe 100644 --- a/library/asyncio-llapi-index.po +++ b/library/asyncio-llapi-index.po @@ -1,23 +1,25 @@ # Copyright (C) 2001-2020, Python Software Foundation # This file is distributed under the same license as the Python package. # Maintained by the python-doc-es workteam. -# docs-es@python.org / https://mail.python.org/mailman3/lists/docs-es.python.org/ -# Check https://github.com/python/python-docs-es/blob/3.8/TRANSLATORS to get the list of volunteers +# docs-es@python.org / +# https://mail.python.org/mailman3/lists/docs-es.python.org/ +# Check https://github.com/python/python-docs-es/blob/3.8/TRANSLATORS to get +# the list of volunteers # msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-05-06 11:59-0400\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2020-10-17 21:32-0300\n" +"Last-Translator: \n" +"Language: es\n" "Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" +"Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Last-Translator: \n" -"Language: es\n" -"X-Generator: Poedit 2.4.1\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/library/asyncio-llapi-index.rst:6 msgid "Low-level API Index" @@ -68,7 +70,7 @@ msgid "Create a new event loop." msgstr "Crea un nuevo bucle de eventos." #: ../Doc/library/asyncio-llapi-index.rst:32 -#: ../Doc/library/asyncio-llapi-index.rst:260 +#: ../Doc/library/asyncio-llapi-index.rst:269 msgid "Examples" msgstr "Ejemplos" @@ -81,9 +83,10 @@ msgid "Event Loop Methods" msgstr "Métodos del bucle de eventos" #: ../Doc/library/asyncio-llapi-index.rst:39 +#, fuzzy msgid "" -"See also the main documentation section about the :ref:`event loop methods " -"`." +"See also the main documentation section about the :ref:`asyncio-event-loop-" +"methods`." msgstr "" "Consulte también la sección de la documentación principal sobre los :ref:" "`métodos del bucle de eventos `." @@ -402,166 +405,197 @@ msgid "Receive data from the :class:`~socket.socket` into a buffer." msgstr "Recibe datos de :class:`~socket.socket` en un buffer." #: ../Doc/library/asyncio-llapi-index.rst:192 +#, fuzzy +msgid "``await`` :meth:`loop.sock_recvfrom`" +msgstr "``await`` :meth:`loop.sock_recv`" + +#: ../Doc/library/asyncio-llapi-index.rst:193 +#, fuzzy +msgid "Receive a datagram from the :class:`~socket.socket`." +msgstr "Recibe datos de :class:`~socket.socket`." + +#: ../Doc/library/asyncio-llapi-index.rst:195 +#, fuzzy +msgid "``await`` :meth:`loop.sock_recvfrom_into`" +msgstr "``await`` :meth:`loop.sock_recv_into`" + +#: ../Doc/library/asyncio-llapi-index.rst:196 +#, fuzzy +msgid "Receive a datagram from the :class:`~socket.socket` into a buffer." +msgstr "Recibe datos de :class:`~socket.socket` en un buffer." + +#: ../Doc/library/asyncio-llapi-index.rst:198 msgid "``await`` :meth:`loop.sock_sendall`" msgstr "``await`` :meth:`loop.sock_sendall`" -#: ../Doc/library/asyncio-llapi-index.rst:193 +#: ../Doc/library/asyncio-llapi-index.rst:199 msgid "Send data to the :class:`~socket.socket`." msgstr "Envía datos a :class:`~socket.socket`." -#: ../Doc/library/asyncio-llapi-index.rst:195 +#: ../Doc/library/asyncio-llapi-index.rst:201 +#, fuzzy +msgid "``await`` :meth:`loop.sock_sendto`" +msgstr "``await`` :meth:`loop.sock_sendall`" + +#: ../Doc/library/asyncio-llapi-index.rst:202 +#, fuzzy +msgid "Send a datagram via the :class:`~socket.socket` to the given address." +msgstr "Envía datos a :class:`~socket.socket`." + +#: ../Doc/library/asyncio-llapi-index.rst:204 msgid "``await`` :meth:`loop.sock_connect`" msgstr "``await`` :meth:`loop.sock_connect`" -#: ../Doc/library/asyncio-llapi-index.rst:196 +#: ../Doc/library/asyncio-llapi-index.rst:205 msgid "Connect the :class:`~socket.socket`." msgstr "Conecta con :class:`~socket.socket`." -#: ../Doc/library/asyncio-llapi-index.rst:198 +#: ../Doc/library/asyncio-llapi-index.rst:207 msgid "``await`` :meth:`loop.sock_accept`" msgstr "``await`` :meth:`loop.sock_accept`" -#: ../Doc/library/asyncio-llapi-index.rst:199 +#: ../Doc/library/asyncio-llapi-index.rst:208 msgid "Accept a :class:`~socket.socket` connection." msgstr "Acepta una conexión :class:`~socket.socket`." -#: ../Doc/library/asyncio-llapi-index.rst:201 +#: ../Doc/library/asyncio-llapi-index.rst:210 msgid "``await`` :meth:`loop.sock_sendfile`" msgstr "``await`` :meth:`loop.sock_sendfile`" -#: ../Doc/library/asyncio-llapi-index.rst:202 +#: ../Doc/library/asyncio-llapi-index.rst:211 msgid "Send a file over the :class:`~socket.socket`." msgstr "Envía un archivo a través de :class:`~socket.socket`." -#: ../Doc/library/asyncio-llapi-index.rst:204 +#: ../Doc/library/asyncio-llapi-index.rst:213 msgid ":meth:`loop.add_reader`" msgstr ":meth:`loop.add_reader`" -#: ../Doc/library/asyncio-llapi-index.rst:205 +#: ../Doc/library/asyncio-llapi-index.rst:214 msgid "Start watching a file descriptor for read availability." msgstr "" "Comienza a monitorear un descriptor de archivo para ver la disponibilidad de " "lectura." -#: ../Doc/library/asyncio-llapi-index.rst:207 +#: ../Doc/library/asyncio-llapi-index.rst:216 msgid ":meth:`loop.remove_reader`" msgstr ":meth:`loop.remove_reader`" -#: ../Doc/library/asyncio-llapi-index.rst:208 +#: ../Doc/library/asyncio-llapi-index.rst:217 msgid "Stop watching a file descriptor for read availability." msgstr "" "Detiene el monitoreo del descriptor de archivo para ver la disponibilidad de " "lectura." -#: ../Doc/library/asyncio-llapi-index.rst:210 +#: ../Doc/library/asyncio-llapi-index.rst:219 msgid ":meth:`loop.add_writer`" msgstr ":meth:`loop.add_writer`" -#: ../Doc/library/asyncio-llapi-index.rst:211 +#: ../Doc/library/asyncio-llapi-index.rst:220 msgid "Start watching a file descriptor for write availability." msgstr "" "Comienza a monitorear un descriptor de archivo para ver la disponibilidad de " "escritura." -#: ../Doc/library/asyncio-llapi-index.rst:213 +#: ../Doc/library/asyncio-llapi-index.rst:222 msgid ":meth:`loop.remove_writer`" msgstr ":meth:`loop.remove_writer`" -#: ../Doc/library/asyncio-llapi-index.rst:214 +#: ../Doc/library/asyncio-llapi-index.rst:223 msgid "Stop watching a file descriptor for write availability." msgstr "" "Detiene el monitoreo del descriptor de archivo para ver la disponibilidad de " "escritura." -#: ../Doc/library/asyncio-llapi-index.rst:217 +#: ../Doc/library/asyncio-llapi-index.rst:226 msgid "Unix Signals" msgstr "Señales Unix" -#: ../Doc/library/asyncio-llapi-index.rst:222 +#: ../Doc/library/asyncio-llapi-index.rst:231 msgid ":meth:`loop.add_signal_handler`" msgstr ":meth:`loop.add_signal_handler`" -#: ../Doc/library/asyncio-llapi-index.rst:223 +#: ../Doc/library/asyncio-llapi-index.rst:232 msgid "Add a handler for a :mod:`signal`." msgstr "Añade un gestor para :mod:`signal`." -#: ../Doc/library/asyncio-llapi-index.rst:225 +#: ../Doc/library/asyncio-llapi-index.rst:234 msgid ":meth:`loop.remove_signal_handler`" msgstr ":meth:`loop.remove_signal_handler`" -#: ../Doc/library/asyncio-llapi-index.rst:226 +#: ../Doc/library/asyncio-llapi-index.rst:235 msgid "Remove a handler for a :mod:`signal`." msgstr "Elimina un gestor para :mod:`signal`." -#: ../Doc/library/asyncio-llapi-index.rst:229 +#: ../Doc/library/asyncio-llapi-index.rst:238 msgid "Subprocesses" msgstr "Subprocesos" -#: ../Doc/library/asyncio-llapi-index.rst:234 +#: ../Doc/library/asyncio-llapi-index.rst:243 msgid ":meth:`loop.subprocess_exec`" msgstr ":meth:`loop.subprocess_exec`" -#: ../Doc/library/asyncio-llapi-index.rst:235 +#: ../Doc/library/asyncio-llapi-index.rst:244 msgid "Spawn a subprocess." msgstr "Genera un subproceso." -#: ../Doc/library/asyncio-llapi-index.rst:237 +#: ../Doc/library/asyncio-llapi-index.rst:246 msgid ":meth:`loop.subprocess_shell`" msgstr ":meth:`loop.subprocess_shell`" -#: ../Doc/library/asyncio-llapi-index.rst:238 +#: ../Doc/library/asyncio-llapi-index.rst:247 msgid "Spawn a subprocess from a shell command." msgstr "Genera un subproceso desde un comando de shell." -#: ../Doc/library/asyncio-llapi-index.rst:241 +#: ../Doc/library/asyncio-llapi-index.rst:250 msgid "Error Handling" msgstr "Gestor de errores" -#: ../Doc/library/asyncio-llapi-index.rst:246 +#: ../Doc/library/asyncio-llapi-index.rst:255 msgid ":meth:`loop.call_exception_handler`" msgstr ":meth:`loop.call_exception_handler`" -#: ../Doc/library/asyncio-llapi-index.rst:247 +#: ../Doc/library/asyncio-llapi-index.rst:256 msgid "Call the exception handler." msgstr "Invoca al gestor de excepciones." -#: ../Doc/library/asyncio-llapi-index.rst:249 +#: ../Doc/library/asyncio-llapi-index.rst:258 msgid ":meth:`loop.set_exception_handler`" msgstr ":meth:`loop.set_exception_handler`" -#: ../Doc/library/asyncio-llapi-index.rst:250 +#: ../Doc/library/asyncio-llapi-index.rst:259 msgid "Set a new exception handler." msgstr "Establece un nuevo gestor de excepciones." -#: ../Doc/library/asyncio-llapi-index.rst:252 +#: ../Doc/library/asyncio-llapi-index.rst:261 msgid ":meth:`loop.get_exception_handler`" msgstr ":meth:`loop.get_exception_handler`" -#: ../Doc/library/asyncio-llapi-index.rst:253 +#: ../Doc/library/asyncio-llapi-index.rst:262 msgid "Get the current exception handler." msgstr "Obtiene el gestor de excepciones actual." -#: ../Doc/library/asyncio-llapi-index.rst:255 +#: ../Doc/library/asyncio-llapi-index.rst:264 msgid ":meth:`loop.default_exception_handler`" msgstr ":meth:`loop.default_exception_handler`" -#: ../Doc/library/asyncio-llapi-index.rst:256 +#: ../Doc/library/asyncio-llapi-index.rst:265 msgid "The default exception handler implementation." msgstr "La implementación predetermina del gestor de excepciones." -#: ../Doc/library/asyncio-llapi-index.rst:261 +#: ../Doc/library/asyncio-llapi-index.rst:270 +#, fuzzy msgid "" -":ref:`Using asyncio.get_event_loop() and loop.run_forever() " +":ref:`Using asyncio.new_event_loop() and loop.run_forever() " "`." msgstr "" ":ref:`Usando asyncio.get_event_loop() y loop.run_forever() " "`." -#: ../Doc/library/asyncio-llapi-index.rst:264 +#: ../Doc/library/asyncio-llapi-index.rst:273 msgid ":ref:`Using loop.call_later() `." msgstr ":ref:`Usando loop.call_later() `." -#: ../Doc/library/asyncio-llapi-index.rst:266 +#: ../Doc/library/asyncio-llapi-index.rst:275 msgid "" "Using ``loop.create_connection()`` to implement :ref:`an echo-client " "`." @@ -569,7 +603,7 @@ msgstr "" "Usando ``loop.create_connection()`` para implementar :ref:`un cliente de eco " "`." -#: ../Doc/library/asyncio-llapi-index.rst:269 +#: ../Doc/library/asyncio-llapi-index.rst:278 msgid "" "Using ``loop.create_connection()`` to :ref:`connect a socket " "`." @@ -577,7 +611,7 @@ msgstr "" "Usando ``loop.create_connection()`` para :ref:`conectar a un socket " "`." -#: ../Doc/library/asyncio-llapi-index.rst:272 +#: ../Doc/library/asyncio-llapi-index.rst:281 msgid "" ":ref:`Using add_reader() to watch an FD for read events " "`." @@ -585,65 +619,65 @@ msgstr "" ":ref:`Usando add_reader() para mirar un FD y leer eventos " "`." -#: ../Doc/library/asyncio-llapi-index.rst:275 +#: ../Doc/library/asyncio-llapi-index.rst:284 msgid ":ref:`Using loop.add_signal_handler() `." msgstr "" ":ref:`Usando loop.add_signal_handler() `." -#: ../Doc/library/asyncio-llapi-index.rst:277 +#: ../Doc/library/asyncio-llapi-index.rst:286 msgid ":ref:`Using loop.subprocess_exec() `." msgstr "" ":ref:`Usando loop.subprocess_exec() `." -#: ../Doc/library/asyncio-llapi-index.rst:281 +#: ../Doc/library/asyncio-llapi-index.rst:290 msgid "Transports" msgstr "Transportes" -#: ../Doc/library/asyncio-llapi-index.rst:283 +#: ../Doc/library/asyncio-llapi-index.rst:292 msgid "All transports implement the following methods:" msgstr "Todos los transportes implementan los siguientes métodos:" -#: ../Doc/library/asyncio-llapi-index.rst:289 +#: ../Doc/library/asyncio-llapi-index.rst:298 msgid ":meth:`transport.close() `" msgstr ":meth:`transport.close() `" -#: ../Doc/library/asyncio-llapi-index.rst:290 +#: ../Doc/library/asyncio-llapi-index.rst:299 msgid "Close the transport." msgstr "Cierra el transporte." -#: ../Doc/library/asyncio-llapi-index.rst:292 +#: ../Doc/library/asyncio-llapi-index.rst:301 msgid ":meth:`transport.is_closing() `" msgstr ":meth:`transport.is_closing() `" -#: ../Doc/library/asyncio-llapi-index.rst:293 +#: ../Doc/library/asyncio-llapi-index.rst:302 msgid "Return ``True`` if the transport is closing or is closed." msgstr "Retorna ``True`` si el transporte está cerrado o se está cerrando." -#: ../Doc/library/asyncio-llapi-index.rst:295 +#: ../Doc/library/asyncio-llapi-index.rst:304 msgid ":meth:`transport.get_extra_info() `" msgstr ":meth:`transport.get_extra_info() `" -#: ../Doc/library/asyncio-llapi-index.rst:296 +#: ../Doc/library/asyncio-llapi-index.rst:305 msgid "Request for information about the transport." msgstr "Solicita información sobre el transporte." -#: ../Doc/library/asyncio-llapi-index.rst:298 +#: ../Doc/library/asyncio-llapi-index.rst:307 msgid ":meth:`transport.set_protocol() `" msgstr ":meth:`transport.set_protocol() `" -#: ../Doc/library/asyncio-llapi-index.rst:299 +#: ../Doc/library/asyncio-llapi-index.rst:308 msgid "Set a new protocol." msgstr "Establece un nuevo protocolo." -#: ../Doc/library/asyncio-llapi-index.rst:301 +#: ../Doc/library/asyncio-llapi-index.rst:310 msgid ":meth:`transport.get_protocol() `" msgstr ":meth:`transport.get_protocol() `" -#: ../Doc/library/asyncio-llapi-index.rst:302 +#: ../Doc/library/asyncio-llapi-index.rst:311 msgid "Return the current protocol." msgstr "Retorna el protocolo actual." -#: ../Doc/library/asyncio-llapi-index.rst:305 +#: ../Doc/library/asyncio-llapi-index.rst:314 msgid "" "Transports that can receive data (TCP and Unix connections, pipes, etc). " "Returned from methods like :meth:`loop.create_connection`, :meth:`loop." @@ -653,35 +687,35 @@ msgstr "" "Retornan de métodos como :meth:`loop.create_connection`, :meth:`loop." "create_unix_connection`, :meth:`loop.connect_read`, etc:" -#: ../Doc/library/asyncio-llapi-index.rst:310 +#: ../Doc/library/asyncio-llapi-index.rst:319 msgid "Read Transports" msgstr "Leer transportes" -#: ../Doc/library/asyncio-llapi-index.rst:315 +#: ../Doc/library/asyncio-llapi-index.rst:324 msgid ":meth:`transport.is_reading() `" msgstr ":meth:`transport.is_reading() `" -#: ../Doc/library/asyncio-llapi-index.rst:316 +#: ../Doc/library/asyncio-llapi-index.rst:325 msgid "Return ``True`` if the transport is receiving." msgstr "Retorna ``True`` si el transporte está recibiendo." -#: ../Doc/library/asyncio-llapi-index.rst:318 +#: ../Doc/library/asyncio-llapi-index.rst:327 msgid ":meth:`transport.pause_reading() `" msgstr ":meth:`transport.pause_reading() `" -#: ../Doc/library/asyncio-llapi-index.rst:319 +#: ../Doc/library/asyncio-llapi-index.rst:328 msgid "Pause receiving." msgstr "Pausa la recepción." -#: ../Doc/library/asyncio-llapi-index.rst:321 +#: ../Doc/library/asyncio-llapi-index.rst:330 msgid ":meth:`transport.resume_reading() `" msgstr ":meth:`transport.resume_reading() `" -#: ../Doc/library/asyncio-llapi-index.rst:322 +#: ../Doc/library/asyncio-llapi-index.rst:331 msgid "Resume receiving." msgstr "Reanuda la recepción." -#: ../Doc/library/asyncio-llapi-index.rst:325 +#: ../Doc/library/asyncio-llapi-index.rst:334 msgid "" "Transports that can Send data (TCP and Unix connections, pipes, etc). " "Returned from methods like :meth:`loop.create_connection`, :meth:`loop." @@ -691,52 +725,52 @@ msgstr "" "Retornan de métodos como :meth:`loop.create_connection`, :meth:`loop." "create_unix_connection`, :meth:`loop.connect_write_pipe`, etc:" -#: ../Doc/library/asyncio-llapi-index.rst:330 +#: ../Doc/library/asyncio-llapi-index.rst:339 msgid "Write Transports" msgstr "Escribir transportes" -#: ../Doc/library/asyncio-llapi-index.rst:335 +#: ../Doc/library/asyncio-llapi-index.rst:344 msgid ":meth:`transport.write() `" msgstr ":meth:`transport.write() `" -#: ../Doc/library/asyncio-llapi-index.rst:336 +#: ../Doc/library/asyncio-llapi-index.rst:345 msgid "Write data to the transport." msgstr "Escribe datos en el transporte." -#: ../Doc/library/asyncio-llapi-index.rst:338 +#: ../Doc/library/asyncio-llapi-index.rst:347 msgid ":meth:`transport.writelines() `" msgstr ":meth:`transport.writelines() `" -#: ../Doc/library/asyncio-llapi-index.rst:339 +#: ../Doc/library/asyncio-llapi-index.rst:348 msgid "Write buffers to the transport." msgstr "Escribe búferes en el transporte." -#: ../Doc/library/asyncio-llapi-index.rst:341 +#: ../Doc/library/asyncio-llapi-index.rst:350 msgid ":meth:`transport.can_write_eof() `" msgstr ":meth:`transport.can_write_eof() `" -#: ../Doc/library/asyncio-llapi-index.rst:342 +#: ../Doc/library/asyncio-llapi-index.rst:351 msgid "Return :const:`True` if the transport supports sending EOF." msgstr "Retorna :const:`True` si el transporte admite el envío de EOF." -#: ../Doc/library/asyncio-llapi-index.rst:344 +#: ../Doc/library/asyncio-llapi-index.rst:353 msgid ":meth:`transport.write_eof() `" msgstr ":meth:`transport.write_eof() `" -#: ../Doc/library/asyncio-llapi-index.rst:345 +#: ../Doc/library/asyncio-llapi-index.rst:354 msgid "Close and send EOF after flushing buffered data." msgstr "Cierra y envía EOF después de vaciar los datos almacenados en búfer." -#: ../Doc/library/asyncio-llapi-index.rst:347 +#: ../Doc/library/asyncio-llapi-index.rst:356 msgid ":meth:`transport.abort() `" msgstr ":meth:`transport.abort() `" -#: ../Doc/library/asyncio-llapi-index.rst:348 -#: ../Doc/library/asyncio-llapi-index.rst:370 +#: ../Doc/library/asyncio-llapi-index.rst:357 +#: ../Doc/library/asyncio-llapi-index.rst:383 msgid "Close the transport immediately." msgstr "Cierra el transporte inmediatamente." -#: ../Doc/library/asyncio-llapi-index.rst:350 +#: ../Doc/library/asyncio-llapi-index.rst:359 msgid "" ":meth:`transport.get_write_buffer_size() `" @@ -744,14 +778,30 @@ msgstr "" ":meth:`transport.get_write_buffer_size() `" -# water marks estrá traducido como "límite" en las páginas a la que apunta este archivo. Mantuve el mismo criterio. En caso de corregir deberíamos cambiar todo junto. -# Ver: https://docs.python.org/es/3.8/library/asyncio-protocol.html#asyncio.BaseProtocol.resume_writing -#: ../Doc/library/asyncio-llapi-index.rst:352 +#: ../Doc/library/asyncio-llapi-index.rst:361 +msgid "Return the current size of the output buffer." +msgstr "" + +#: ../Doc/library/asyncio-llapi-index.rst:363 +#, fuzzy +msgid "" +":meth:`transport.get_write_buffer_limits() `" +msgstr "" +":meth:`transport.set_write_buffer_limits() `" + +# water marks estrá traducido como "límite" en las páginas a la que apunta +# este archivo. Mantuve el mismo criterio. En caso de corregir deberíamos +# cambiar todo junto. +# Ver: +# https://docs.python.org/es/3.8/library/asyncio-protocol.html#asyncio.BaseProtocol.resume_writing +#: ../Doc/library/asyncio-llapi-index.rst:365 msgid "Return high and low water marks for write flow control." msgstr "" "Retorna los límites superior e inferior para controlar el flujo de escritura." -#: ../Doc/library/asyncio-llapi-index.rst:354 +#: ../Doc/library/asyncio-llapi-index.rst:367 msgid "" ":meth:`transport.set_write_buffer_limits() `" @@ -759,33 +809,33 @@ msgstr "" ":meth:`transport.set_write_buffer_limits() `" -#: ../Doc/library/asyncio-llapi-index.rst:356 +#: ../Doc/library/asyncio-llapi-index.rst:369 msgid "Set new high and low water marks for write flow control." msgstr "" "Establece nuevos límites superior e inferior para el control del flujo de " "escritura." -#: ../Doc/library/asyncio-llapi-index.rst:359 +#: ../Doc/library/asyncio-llapi-index.rst:372 msgid "Transports returned by :meth:`loop.create_datagram_endpoint`:" msgstr "Transportes retornados por :meth:`loop.create_datagram_endpoint`:" -#: ../Doc/library/asyncio-llapi-index.rst:361 +#: ../Doc/library/asyncio-llapi-index.rst:374 msgid "Datagram Transports" msgstr "Transportes de datagramas" -#: ../Doc/library/asyncio-llapi-index.rst:366 +#: ../Doc/library/asyncio-llapi-index.rst:379 msgid ":meth:`transport.sendto() `" msgstr ":meth:`transport.sendto() `" -#: ../Doc/library/asyncio-llapi-index.rst:367 +#: ../Doc/library/asyncio-llapi-index.rst:380 msgid "Send data to the remote peer." msgstr "Envía datos al par remoto." -#: ../Doc/library/asyncio-llapi-index.rst:369 +#: ../Doc/library/asyncio-llapi-index.rst:382 msgid ":meth:`transport.abort() `" msgstr ":meth:`transport.abort() `" -#: ../Doc/library/asyncio-llapi-index.rst:373 +#: ../Doc/library/asyncio-llapi-index.rst:386 msgid "" "Low-level transport abstraction over subprocesses. Returned by :meth:`loop." "subprocess_exec` and :meth:`loop.subprocess_shell`:" @@ -793,19 +843,19 @@ msgstr "" "Abstracción de transporte de bajo nivel sobre subprocesos. Retornado por :" "meth:`loop.subprocess_exec` y :meth:`loop.subprocess_shell`:" -#: ../Doc/library/asyncio-llapi-index.rst:377 +#: ../Doc/library/asyncio-llapi-index.rst:390 msgid "Subprocess Transports" msgstr "Transportes de subprocesos" -#: ../Doc/library/asyncio-llapi-index.rst:382 +#: ../Doc/library/asyncio-llapi-index.rst:395 msgid ":meth:`transport.get_pid() `" msgstr ":meth:`transport.get_pid() `" -#: ../Doc/library/asyncio-llapi-index.rst:383 +#: ../Doc/library/asyncio-llapi-index.rst:396 msgid "Return the subprocess process id." msgstr "Retorna el id de proceso del subproceso." -#: ../Doc/library/asyncio-llapi-index.rst:385 +#: ../Doc/library/asyncio-llapi-index.rst:398 msgid "" ":meth:`transport.get_pipe_transport() `" @@ -813,7 +863,7 @@ msgstr "" ":meth:`transport.get_pipe_transport() `" -#: ../Doc/library/asyncio-llapi-index.rst:387 +#: ../Doc/library/asyncio-llapi-index.rst:400 msgid "" "Return the transport for the requested communication pipe (*stdin*, " "*stdout*, or *stderr*)." @@ -821,168 +871,168 @@ msgstr "" "Retorna el transporte para la *pipe* de comunicación solicitada (*stdin*, " "*stdout* o *stderr*)." -#: ../Doc/library/asyncio-llapi-index.rst:390 +#: ../Doc/library/asyncio-llapi-index.rst:403 msgid ":meth:`transport.get_returncode() `" msgstr "" ":meth:`transport.get_returncode() `" -#: ../Doc/library/asyncio-llapi-index.rst:391 +#: ../Doc/library/asyncio-llapi-index.rst:404 msgid "Return the subprocess return code." msgstr "Retorna el código de retorno del subproceso." -#: ../Doc/library/asyncio-llapi-index.rst:393 +#: ../Doc/library/asyncio-llapi-index.rst:406 msgid ":meth:`transport.kill() `" msgstr ":meth:`transport.kill() `" -#: ../Doc/library/asyncio-llapi-index.rst:394 +#: ../Doc/library/asyncio-llapi-index.rst:407 msgid "Kill the subprocess." msgstr "Mata el subproceso." -#: ../Doc/library/asyncio-llapi-index.rst:396 +#: ../Doc/library/asyncio-llapi-index.rst:409 msgid ":meth:`transport.send_signal() `" msgstr ":meth:`transport.send_signal() `" -#: ../Doc/library/asyncio-llapi-index.rst:397 +#: ../Doc/library/asyncio-llapi-index.rst:410 msgid "Send a signal to the subprocess." msgstr "Envía una señal al subproceso." -#: ../Doc/library/asyncio-llapi-index.rst:399 +#: ../Doc/library/asyncio-llapi-index.rst:412 msgid ":meth:`transport.terminate() `" msgstr ":meth:`transport.terminate() `" -#: ../Doc/library/asyncio-llapi-index.rst:400 +#: ../Doc/library/asyncio-llapi-index.rst:413 msgid "Stop the subprocess." msgstr "Detiene el subproceso." -#: ../Doc/library/asyncio-llapi-index.rst:402 +#: ../Doc/library/asyncio-llapi-index.rst:415 msgid ":meth:`transport.close() `" msgstr ":meth:`transport.close() `" -#: ../Doc/library/asyncio-llapi-index.rst:403 +#: ../Doc/library/asyncio-llapi-index.rst:416 msgid "Kill the subprocess and close all pipes." msgstr "Mata el subproceso y cierra todas las *pipes*." -#: ../Doc/library/asyncio-llapi-index.rst:407 +#: ../Doc/library/asyncio-llapi-index.rst:420 msgid "Protocols" msgstr "Protocolos" -#: ../Doc/library/asyncio-llapi-index.rst:409 +#: ../Doc/library/asyncio-llapi-index.rst:422 msgid "Protocol classes can implement the following **callback methods**:" msgstr "" "Las clases de protocolo pueden implementar los siguientes **métodos de " "devolución de llamada**:" -#: ../Doc/library/asyncio-llapi-index.rst:415 +#: ../Doc/library/asyncio-llapi-index.rst:428 msgid "``callback`` :meth:`connection_made() `" msgstr "``callback`` :meth:`connection_made() `" -#: ../Doc/library/asyncio-llapi-index.rst:416 +#: ../Doc/library/asyncio-llapi-index.rst:429 msgid "Called when a connection is made." msgstr "Se llama cuando se establece una conexión." -#: ../Doc/library/asyncio-llapi-index.rst:418 +#: ../Doc/library/asyncio-llapi-index.rst:431 msgid "``callback`` :meth:`connection_lost() `" msgstr "``callback`` :meth:`connection_lost() `" -#: ../Doc/library/asyncio-llapi-index.rst:419 +#: ../Doc/library/asyncio-llapi-index.rst:432 msgid "Called when the connection is lost or closed." msgstr "Se llama cuando la conexión se pierde o cierra." -#: ../Doc/library/asyncio-llapi-index.rst:421 +#: ../Doc/library/asyncio-llapi-index.rst:434 msgid "``callback`` :meth:`pause_writing() `" msgstr "``callback`` :meth:`pause_writing() `" -#: ../Doc/library/asyncio-llapi-index.rst:422 +#: ../Doc/library/asyncio-llapi-index.rst:435 msgid "Called when the transport's buffer goes over the high water mark." msgstr "Se llama cuando el búfer del transporte excede el límite superior." -#: ../Doc/library/asyncio-llapi-index.rst:424 +#: ../Doc/library/asyncio-llapi-index.rst:437 msgid "``callback`` :meth:`resume_writing() `" msgstr "``callback`` :meth:`resume_writing() `" -#: ../Doc/library/asyncio-llapi-index.rst:425 +#: ../Doc/library/asyncio-llapi-index.rst:438 msgid "Called when the transport's buffer drains below the low water mark." msgstr "" "Se llama cuando el búfer del transporte se vacía por debajo del límite " "inferior." -#: ../Doc/library/asyncio-llapi-index.rst:428 +#: ../Doc/library/asyncio-llapi-index.rst:441 msgid "Streaming Protocols (TCP, Unix Sockets, Pipes)" msgstr "Protocolos de streaming (TCP, Unix Sockets, Pipes)" -#: ../Doc/library/asyncio-llapi-index.rst:433 +#: ../Doc/library/asyncio-llapi-index.rst:446 msgid "``callback`` :meth:`data_received() `" msgstr "``callback`` :meth:`data_received() `" -#: ../Doc/library/asyncio-llapi-index.rst:434 +#: ../Doc/library/asyncio-llapi-index.rst:447 msgid "Called when some data is received." msgstr "Se llama cuando se reciben algunos datos." -#: ../Doc/library/asyncio-llapi-index.rst:436 +#: ../Doc/library/asyncio-llapi-index.rst:449 msgid "``callback`` :meth:`eof_received() `" msgstr "``callback`` :meth:`eof_received() `" -#: ../Doc/library/asyncio-llapi-index.rst:437 -#: ../Doc/library/asyncio-llapi-index.rst:452 +#: ../Doc/library/asyncio-llapi-index.rst:450 +#: ../Doc/library/asyncio-llapi-index.rst:465 msgid "Called when an EOF is received." msgstr "Se llama cuando se recibe un EOF." -#: ../Doc/library/asyncio-llapi-index.rst:440 +#: ../Doc/library/asyncio-llapi-index.rst:453 msgid "Buffered Streaming Protocols" msgstr "Protocolos de streaming en búfer" -#: ../Doc/library/asyncio-llapi-index.rst:445 +#: ../Doc/library/asyncio-llapi-index.rst:458 msgid "``callback`` :meth:`get_buffer() `" msgstr "``callback`` :meth:`get_buffer() `" -#: ../Doc/library/asyncio-llapi-index.rst:446 +#: ../Doc/library/asyncio-llapi-index.rst:459 msgid "Called to allocate a new receive buffer." msgstr "Se llama para asignar un nuevo búfer de recepción." -#: ../Doc/library/asyncio-llapi-index.rst:448 +#: ../Doc/library/asyncio-llapi-index.rst:461 msgid "``callback`` :meth:`buffer_updated() `" msgstr "" "``callback`` :meth:`buffer_updated() `" -#: ../Doc/library/asyncio-llapi-index.rst:449 +#: ../Doc/library/asyncio-llapi-index.rst:462 msgid "Called when the buffer was updated with the received data." msgstr "Se llama cuando el búfer se actualizó con los datos recibidos." -#: ../Doc/library/asyncio-llapi-index.rst:451 +#: ../Doc/library/asyncio-llapi-index.rst:464 msgid "``callback`` :meth:`eof_received() `" msgstr "``callback`` :meth:`eof_received() `" -#: ../Doc/library/asyncio-llapi-index.rst:455 +#: ../Doc/library/asyncio-llapi-index.rst:468 msgid "Datagram Protocols" msgstr "Protocolos de datagramas" -#: ../Doc/library/asyncio-llapi-index.rst:460 +#: ../Doc/library/asyncio-llapi-index.rst:473 msgid "" "``callback`` :meth:`datagram_received() `" msgstr "" "``callback`` :meth:`datagram_received() `" -#: ../Doc/library/asyncio-llapi-index.rst:462 +#: ../Doc/library/asyncio-llapi-index.rst:475 msgid "Called when a datagram is received." msgstr "Se llama cuando se recibe un datagrama." -#: ../Doc/library/asyncio-llapi-index.rst:464 +#: ../Doc/library/asyncio-llapi-index.rst:477 msgid "``callback`` :meth:`error_received() `" msgstr "" "``callback`` :meth:`error_received() `" -#: ../Doc/library/asyncio-llapi-index.rst:465 +#: ../Doc/library/asyncio-llapi-index.rst:478 msgid "" "Called when a previous send or receive operation raises an :class:`OSError`." msgstr "" "Se llama cuando una operación de envío o recepción anterior genera un :class:" "`OSError`." -#: ../Doc/library/asyncio-llapi-index.rst:469 +#: ../Doc/library/asyncio-llapi-index.rst:482 msgid "Subprocess Protocols" msgstr "Protocolos de subprocesos" -#: ../Doc/library/asyncio-llapi-index.rst:474 +#: ../Doc/library/asyncio-llapi-index.rst:487 msgid "" "``callback`` :meth:`pipe_data_received() `" @@ -990,14 +1040,14 @@ msgstr "" "``callback`` :meth:`pipe_data_received() `" -#: ../Doc/library/asyncio-llapi-index.rst:476 +#: ../Doc/library/asyncio-llapi-index.rst:489 msgid "" "Called when the child process writes data into its *stdout* or *stderr* pipe." msgstr "" "Se llama cuando el proceso hijo escribe datos en su *pipe* *stdout* o " "*stderr*." -#: ../Doc/library/asyncio-llapi-index.rst:479 +#: ../Doc/library/asyncio-llapi-index.rst:492 msgid "" "``callback`` :meth:`pipe_connection_lost() `" @@ -1005,27 +1055,27 @@ msgstr "" "``callback`` :meth:`pipe_connection_lost() `" -#: ../Doc/library/asyncio-llapi-index.rst:481 +#: ../Doc/library/asyncio-llapi-index.rst:494 msgid "" "Called when one of the pipes communicating with the child process is closed." msgstr "" "Se llama cuando se cierra un *pipe* que se comunica con el proceso hijo." -#: ../Doc/library/asyncio-llapi-index.rst:484 +#: ../Doc/library/asyncio-llapi-index.rst:497 msgid "" "``callback`` :meth:`process_exited() `" msgstr "" "``callback`` :meth:`process_exited() `" -#: ../Doc/library/asyncio-llapi-index.rst:486 +#: ../Doc/library/asyncio-llapi-index.rst:499 msgid "Called when the child process has exited." msgstr "Se llama cuando el proceso hijo ha finalizado." -#: ../Doc/library/asyncio-llapi-index.rst:490 +#: ../Doc/library/asyncio-llapi-index.rst:503 msgid "Event Loop Policies" msgstr "Políticas de bucle de eventos" -#: ../Doc/library/asyncio-llapi-index.rst:492 +#: ../Doc/library/asyncio-llapi-index.rst:505 msgid "" "Policies is a low-level mechanism to alter the behavior of functions like :" "func:`asyncio.get_event_loop`. See also the main :ref:`policies section " @@ -1035,30 +1085,30 @@ msgstr "" "de funciones como :func:`asyncio.get_event_loop`. Vea también la sección " "principal :ref:`políticas ` para más detalles." -#: ../Doc/library/asyncio-llapi-index.rst:498 +#: ../Doc/library/asyncio-llapi-index.rst:511 msgid "Accessing Policies" msgstr "Acceso a políticas" -#: ../Doc/library/asyncio-llapi-index.rst:503 +#: ../Doc/library/asyncio-llapi-index.rst:516 msgid ":meth:`asyncio.get_event_loop_policy`" msgstr ":meth:`asyncio.get_event_loop_policy`" -#: ../Doc/library/asyncio-llapi-index.rst:504 +#: ../Doc/library/asyncio-llapi-index.rst:517 msgid "Return the current process-wide policy." msgstr "Retorna la política actual en todo el proceso." -#: ../Doc/library/asyncio-llapi-index.rst:506 +#: ../Doc/library/asyncio-llapi-index.rst:519 msgid ":meth:`asyncio.set_event_loop_policy`" msgstr ":meth:`asyncio.set_event_loop_policy`" -#: ../Doc/library/asyncio-llapi-index.rst:507 +#: ../Doc/library/asyncio-llapi-index.rst:520 msgid "Set a new process-wide policy." msgstr "Establece una nueva política para todo el proceso." -#: ../Doc/library/asyncio-llapi-index.rst:509 +#: ../Doc/library/asyncio-llapi-index.rst:522 msgid ":class:`AbstractEventLoopPolicy`" msgstr ":class:`AbstractEventLoopPolicy`" -#: ../Doc/library/asyncio-llapi-index.rst:510 +#: ../Doc/library/asyncio-llapi-index.rst:523 msgid "Base class for policy objects." msgstr "Clase base para objetos de política." diff --git a/library/asyncio-platforms.po b/library/asyncio-platforms.po index b443721d7f..ecfece6705 100644 --- a/library/asyncio-platforms.po +++ b/library/asyncio-platforms.po @@ -10,17 +10,16 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-05 12:54+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2020-10-18 13:28+0200\n" +"Last-Translator: \n" +"Language: es_ES\n" "Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" +"Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.8.0\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Last-Translator: \n" -"Language: es_ES\n" -"X-Generator: Poedit 2.4.1\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/library/asyncio-platforms.rst:9 msgid "Platform Support" @@ -140,11 +139,12 @@ msgstr "" "soportados." #: ../Doc/library/asyncio-platforms.rst:65 +#, fuzzy msgid "" "The resolution of the monotonic clock on Windows is usually around 15.6 " -"msec. The best resolution is 0.5 msec. The resolution depends on the " -"hardware (availability of `HPET `_) and on the Windows configuration." +"milliseconds. The best resolution is 0.5 milliseconds. The resolution " +"depends on the hardware (availability of `HPET `_) and on the Windows configuration." msgstr "" "La resolución del reloj monótono de Windows suele ser de unos 15,6 mseg. La " "mejor resolución es de 0,5 mseg. La resolución depende del hardware " diff --git a/library/asyncio-policy.po b/library/asyncio-policy.po index 7fc4aa98d3..29afc4fd9f 100644 --- a/library/asyncio-policy.po +++ b/library/asyncio-policy.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-03-19 11:16+0100\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-08-04 13:45+0200\n" "Last-Translator: Cristián Maureira-Fredes \n" "Language: es\n" @@ -19,8 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.8.0\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/library/asyncio-policy.rst:8 msgid "Policies" @@ -28,35 +27,32 @@ msgstr "Políticas" #: ../Doc/library/asyncio-policy.rst:10 msgid "" -"An event loop policy is a global per-process object that controls the " -"management of the event loop. Each event loop has a default policy, which " -"can be changed and customized using the policy API." +"An event loop policy is a global object used to get and set the current :ref:" +"`event loop `, as well as create new event loops. The " +"default policy can be :ref:`replaced ` with :ref:" +"`built-in alternatives ` to use different event loop " +"implementations, or substituted by a :ref:`custom policy ` that can override these behaviors." msgstr "" -"Una política del bucle de eventos es un objeto por proceso que controla la " -"administración del bucle de eventos. Cada bucle de eventos tiene una " -"política por defecto, que puede ser cambiada y editada usando la política de " -"API." -#: ../Doc/library/asyncio-policy.rst:14 +#: ../Doc/library/asyncio-policy.rst:19 msgid "" -"A policy defines the notion of *context* and manages a separate event loop " -"per context. The default policy defines *context* to be the current thread." +"The :ref:`policy object ` gets and sets a separate " +"event loop per *context*. This is per-thread by default, though custom " +"policies could define *context* differently." msgstr "" -"Una política define la noción de *contexto* y administra un bucle de eventos " -"separado por contexto. La política por defecto define un *contexto* como el " -"estado actual." -#: ../Doc/library/asyncio-policy.rst:18 +#: ../Doc/library/asyncio-policy.rst:24 +#, fuzzy msgid "" -"By using a custom event loop policy, the behavior of :func:" -"`get_event_loop`, :func:`set_event_loop`, and :func:`new_event_loop` " -"functions can be customized." +"Custom event loop policies can control the behavior of :func:" +"`get_event_loop`, :func:`set_event_loop`, and :func:`new_event_loop`." msgstr "" "Usando una política de bucle de eventos personalizada, la conducta de las " "funciones :func:`get_event_loop`, :func:`set_event_loop`, y :func:" "`new_event_loop` puede ser personalizada." -#: ../Doc/library/asyncio-policy.rst:22 +#: ../Doc/library/asyncio-policy.rst:27 msgid "" "Policy objects should implement the APIs defined in the :class:" "`AbstractEventLoopPolicy` abstract base class." @@ -64,11 +60,11 @@ msgstr "" "Los objetos de política deberían implementar las APIs definidas en la clase " "abstracta base :class:`AbstractEventLoopPolicy`." -#: ../Doc/library/asyncio-policy.rst:27 +#: ../Doc/library/asyncio-policy.rst:34 msgid "Getting and Setting the Policy" msgstr "Obteniendo y Configurando la Política" -#: ../Doc/library/asyncio-policy.rst:29 +#: ../Doc/library/asyncio-policy.rst:36 msgid "" "The following functions can be used to get and set the policy for the " "current process:" @@ -76,39 +72,39 @@ msgstr "" "Las siguientes funciones pueden ser usadas para obtener y configurar la " "política de los procesos actuales:" -#: ../Doc/library/asyncio-policy.rst:34 +#: ../Doc/library/asyncio-policy.rst:41 msgid "Return the current process-wide policy." msgstr "Retorna la política actual en todo el proceso." -#: ../Doc/library/asyncio-policy.rst:38 +#: ../Doc/library/asyncio-policy.rst:45 msgid "Set the current process-wide policy to *policy*." msgstr "Establece la política actual en todo el proceso a *policy*." -#: ../Doc/library/asyncio-policy.rst:40 +#: ../Doc/library/asyncio-policy.rst:47 msgid "If *policy* is set to ``None``, the default policy is restored." msgstr "" "Si *policy* está configurado a ``None``, la política por defecto se " "reestablece." -#: ../Doc/library/asyncio-policy.rst:44 +#: ../Doc/library/asyncio-policy.rst:53 msgid "Policy Objects" msgstr "Objetos de Política" -#: ../Doc/library/asyncio-policy.rst:46 +#: ../Doc/library/asyncio-policy.rst:55 msgid "The abstract event loop policy base class is defined as follows:" msgstr "" "La clase base de política de bucle de eventos abstractos se define de la " "siguiente manera:" -#: ../Doc/library/asyncio-policy.rst:50 +#: ../Doc/library/asyncio-policy.rst:59 msgid "An abstract base class for asyncio policies." msgstr "Una clase base abstracta para políticas asyncio." -#: ../Doc/library/asyncio-policy.rst:54 +#: ../Doc/library/asyncio-policy.rst:63 msgid "Get the event loop for the current context." msgstr "Retorna el bucle de eventos para el contexto actual." -#: ../Doc/library/asyncio-policy.rst:56 +#: ../Doc/library/asyncio-policy.rst:65 msgid "" "Return an event loop object implementing the :class:`AbstractEventLoop` " "interface." @@ -116,23 +112,23 @@ msgstr "" "Retorna un objeto bucle de eventos implementando la interfaz :class:" "`AbstractEventLoop`." -#: ../Doc/library/asyncio-policy.rst:59 ../Doc/library/asyncio-policy.rst:71 +#: ../Doc/library/asyncio-policy.rst:68 ../Doc/library/asyncio-policy.rst:80 msgid "This method should never return ``None``." msgstr "Este método nunca debería retornar ``None``." -#: ../Doc/library/asyncio-policy.rst:65 +#: ../Doc/library/asyncio-policy.rst:74 msgid "Set the event loop for the current context to *loop*." msgstr "Establece el bucle de eventos para el contexto a *loop*." -#: ../Doc/library/asyncio-policy.rst:69 +#: ../Doc/library/asyncio-policy.rst:78 msgid "Create and return a new event loop object." msgstr "Crea y retorna un nuevo objeto de bucle de eventos." -#: ../Doc/library/asyncio-policy.rst:75 +#: ../Doc/library/asyncio-policy.rst:84 msgid "Get a child process watcher object." msgstr "Retorna un objeto observador de procesos secundarios." -#: ../Doc/library/asyncio-policy.rst:77 +#: ../Doc/library/asyncio-policy.rst:86 msgid "" "Return a watcher object implementing the :class:`AbstractChildWatcher` " "interface." @@ -140,19 +136,19 @@ msgstr "" "Retorna un objeto observador implementando la interfaz :class:" "`AbstractChildWatcher`." -#: ../Doc/library/asyncio-policy.rst:80 ../Doc/library/asyncio-policy.rst:86 +#: ../Doc/library/asyncio-policy.rst:89 ../Doc/library/asyncio-policy.rst:95 msgid "This function is Unix specific." msgstr "Esta función es específica de Unix." -#: ../Doc/library/asyncio-policy.rst:84 +#: ../Doc/library/asyncio-policy.rst:93 msgid "Set the current child process watcher to *watcher*." msgstr "Establece el observador de procesos secundarios actuales a *watcher*." -#: ../Doc/library/asyncio-policy.rst:89 +#: ../Doc/library/asyncio-policy.rst:100 msgid "asyncio ships with the following built-in policies:" msgstr "asyncio se envía con las siguientes políticas integradas:" -#: ../Doc/library/asyncio-policy.rst:94 +#: ../Doc/library/asyncio-policy.rst:105 msgid "" "The default asyncio policy. Uses :class:`SelectorEventLoop` on Unix and :" "class:`ProactorEventLoop` on Windows." @@ -160,7 +156,7 @@ msgstr "" "La política por defecto asyncio. Usa :class:`SelectorEventLoop` en Unix y :" "class:`ProactorEventLoop` en Windows." -#: ../Doc/library/asyncio-policy.rst:97 +#: ../Doc/library/asyncio-policy.rst:108 msgid "" "There is no need to install the default policy manually. asyncio is " "configured to use the default policy automatically." @@ -168,11 +164,11 @@ msgstr "" "No hay necesidad de instalar la política por defecto manualmente. asyncio " "está configurado para usar la política por defecto automáticamente." -#: ../Doc/library/asyncio-policy.rst:102 +#: ../Doc/library/asyncio-policy.rst:113 msgid "On Windows, :class:`ProactorEventLoop` is now used by default." msgstr "En Windows, :class:`ProactorEventLoop` ahora se usa por defecto." -#: ../Doc/library/asyncio-policy.rst:107 +#: ../Doc/library/asyncio-policy.rst:118 msgid "" "An alternative event loop policy that uses the :class:`SelectorEventLoop` " "event loop implementation." @@ -180,11 +176,11 @@ msgstr "" "Una política de bucle de eventos alternativa que usa la implementación de " "bucle de eventos :class:`SelectorEventLoop`." -#: ../Doc/library/asyncio-policy.rst:110 ../Doc/library/asyncio-policy.rst:118 +#: ../Doc/library/asyncio-policy.rst:121 ../Doc/library/asyncio-policy.rst:129 msgid ":ref:`Availability `: Windows." msgstr ":ref:`Disponibilidad `: Windows." -#: ../Doc/library/asyncio-policy.rst:115 +#: ../Doc/library/asyncio-policy.rst:126 msgid "" "An alternative event loop policy that uses the :class:`ProactorEventLoop` " "event loop implementation." @@ -192,11 +188,11 @@ msgstr "" "Una política de bucle de eventos alternativa que usa la implementación de " "bucle de eventos :class:`ProactorEventLoop`." -#: ../Doc/library/asyncio-policy.rst:123 +#: ../Doc/library/asyncio-policy.rst:135 msgid "Process Watchers" msgstr "Observadores de procesos" -#: ../Doc/library/asyncio-policy.rst:125 +#: ../Doc/library/asyncio-policy.rst:137 msgid "" "A process watcher allows customization of how an event loop monitors child " "processes on Unix. Specifically, the event loop needs to know when a child " @@ -206,7 +202,7 @@ msgstr "" "monitorea procesos secundarios en Unix. Específicamente, un bucle de eventos " "necesita saber cuándo un proceso secundario ha terminado." -#: ../Doc/library/asyncio-policy.rst:129 +#: ../Doc/library/asyncio-policy.rst:141 msgid "" "In asyncio, child processes are created with :func:`create_subprocess_exec` " "and :meth:`loop.subprocess_exec` functions." @@ -214,7 +210,7 @@ msgstr "" "En asyncio, los procesos secundarios son creados con las funciones :func:" "`créate_subprocess_exec` y :meth:`loop.subprocess_exec`." -#: ../Doc/library/asyncio-policy.rst:133 +#: ../Doc/library/asyncio-policy.rst:145 msgid "" "asyncio defines the :class:`AbstractChildWatcher` abstract base class, which " "child watchers should implement, and has four different implementations: :" @@ -228,7 +224,7 @@ msgstr "" "ser usado por defecto), :class:`MultiLoopChildWatcher`, :class:" "`SaferChildWatcher`, y :class:`FastChildWatcher`." -#: ../Doc/library/asyncio-policy.rst:139 +#: ../Doc/library/asyncio-policy.rst:151 msgid "" "See also the :ref:`Subprocess and Threads ` " "section." @@ -236,7 +232,7 @@ msgstr "" "Mirar también la sección :ref:`Subprocesos e hilos `." -#: ../Doc/library/asyncio-policy.rst:142 +#: ../Doc/library/asyncio-policy.rst:154 msgid "" "The following two functions can be used to customize the child process " "watcher implementation used by the asyncio event loop:" @@ -245,11 +241,11 @@ msgstr "" "implementación de observadores de procesos secundarios usados por el bucle " "de eventos de asyncio:" -#: ../Doc/library/asyncio-policy.rst:147 +#: ../Doc/library/asyncio-policy.rst:159 msgid "Return the current child watcher for the current policy." msgstr "Retorna el observador de procesos secundarios para la política actual." -#: ../Doc/library/asyncio-policy.rst:151 +#: ../Doc/library/asyncio-policy.rst:163 msgid "" "Set the current child watcher to *watcher* for the current policy. " "*watcher* must implement methods defined in the :class:" @@ -259,7 +255,7 @@ msgstr "" "política actual. *watcher* debe implementar métodos definidos en la clase " "base :class:`AbstractChildWatcher`." -#: ../Doc/library/asyncio-policy.rst:156 +#: ../Doc/library/asyncio-policy.rst:168 msgid "" "Third-party event loops implementations might not support custom child " "watchers. For such event loops, using :func:`set_child_watcher` might be " @@ -270,11 +266,11 @@ msgstr "" "bucles de eventos, usando :func:`set_child_watcher` podría estar prohibido o " "no tener efecto." -#: ../Doc/library/asyncio-policy.rst:164 +#: ../Doc/library/asyncio-policy.rst:176 msgid "Register a new child handler." msgstr "Registra un nuevo gestor de proceso secundario." -#: ../Doc/library/asyncio-policy.rst:166 +#: ../Doc/library/asyncio-policy.rst:178 msgid "" "Arrange for ``callback(pid, returncode, *args)`` to be called when a process " "with PID equal to *pid* terminates. Specifying another callback for the " @@ -284,15 +280,15 @@ msgstr "" "proceso con PID igual a *pid* termina. Especificando otro retrollamada para " "el mismo proceso reemplaza el gestor previo." -#: ../Doc/library/asyncio-policy.rst:171 +#: ../Doc/library/asyncio-policy.rst:183 msgid "The *callback* callable must be thread-safe." msgstr "El *callback* invocable debe ser seguro para hilos." -#: ../Doc/library/asyncio-policy.rst:175 +#: ../Doc/library/asyncio-policy.rst:187 msgid "Removes the handler for process with PID equal to *pid*." msgstr "Remueve el gestor para el proceso con PID igual a *pid*." -#: ../Doc/library/asyncio-policy.rst:177 +#: ../Doc/library/asyncio-policy.rst:189 msgid "" "The function returns ``True`` if the handler was successfully removed, " "``False`` if there was nothing to remove." @@ -300,11 +296,11 @@ msgstr "" "La función retorna ``True`` si el gestor fue removido de forma exitosa, " "``False`` si no hubo nada que remover." -#: ../Doc/library/asyncio-policy.rst:182 +#: ../Doc/library/asyncio-policy.rst:194 msgid "Attach the watcher to an event loop." msgstr "Adjunta el observador a un bucle de eventos." -#: ../Doc/library/asyncio-policy.rst:184 +#: ../Doc/library/asyncio-policy.rst:196 msgid "" "If the watcher was previously attached to an event loop, then it is first " "detached before attaching to the new loop." @@ -312,15 +308,15 @@ msgstr "" "Si el observador estaba previamente adjuntado a un bucle de eventos, " "entonces primero es separado antes de adjuntar el nuevo bucle." -#: ../Doc/library/asyncio-policy.rst:187 +#: ../Doc/library/asyncio-policy.rst:199 msgid "Note: loop may be ``None``." msgstr "Nota: el bucle puede ser ``None``." -#: ../Doc/library/asyncio-policy.rst:191 +#: ../Doc/library/asyncio-policy.rst:203 msgid "Return ``True`` if the watcher is ready to use." msgstr "Retorna ``True`` si el observador está listo para usarse." -#: ../Doc/library/asyncio-policy.rst:193 +#: ../Doc/library/asyncio-policy.rst:205 msgid "" "Spawning a subprocess with *inactive* current child watcher raises :exc:" "`RuntimeError`." @@ -328,11 +324,11 @@ msgstr "" "Generar un nuevo subproceso con observador de procesos secundarios actual " "*inactive* lanza :exc:`RuntimeError`." -#: ../Doc/library/asyncio-policy.rst:200 +#: ../Doc/library/asyncio-policy.rst:212 msgid "Close the watcher." msgstr "Cierra el observador." -#: ../Doc/library/asyncio-policy.rst:202 +#: ../Doc/library/asyncio-policy.rst:214 msgid "" "This method has to be called to ensure that underlying resources are cleaned-" "up." @@ -340,14 +336,14 @@ msgstr "" "Este método tiene que ser invocado para asegurar que los objetos subyacentes " "están limpiados." -#: ../Doc/library/asyncio-policy.rst:207 +#: ../Doc/library/asyncio-policy.rst:219 msgid "" "This implementation starts a new waiting thread for every subprocess spawn." msgstr "" "Esta implementación inicia un nuevo hilo esperando para cada subproceso " "generado." -#: ../Doc/library/asyncio-policy.rst:209 +#: ../Doc/library/asyncio-policy.rst:221 msgid "" "It works reliably even when the asyncio event loop is run in a non-main OS " "thread." @@ -355,7 +351,7 @@ msgstr "" "Trabaja de manera confiable incluso cuando el bucle de eventos asyncio se " "ejecuta en un hilo de SO no principal." -#: ../Doc/library/asyncio-policy.rst:211 +#: ../Doc/library/asyncio-policy.rst:223 msgid "" "There is no noticeable overhead when handling a big number of children " "(*O(1)* each time a child terminates), but starting a thread per process " @@ -365,11 +361,11 @@ msgstr "" "secundarios (*O(1)* cada vez que un proceso secundario termina), pero " "iniciar un hilo por proceso requiere memoria extra." -#: ../Doc/library/asyncio-policy.rst:214 +#: ../Doc/library/asyncio-policy.rst:226 msgid "This watcher is used by default." msgstr "Este observador es usado por defecto." -#: ../Doc/library/asyncio-policy.rst:220 +#: ../Doc/library/asyncio-policy.rst:232 msgid "" "This implementation registers a :py:data:`SIGCHLD` signal handler on " "instantiation. That can break third-party code that installs a custom " @@ -379,7 +375,7 @@ msgstr "" "`SIGCHLD`. Eso puede romper código de terceras partes que instalen un gestor " "personalizado para la señal :py:data:`SIGCHLD`." -#: ../Doc/library/asyncio-policy.rst:224 ../Doc/library/asyncio-policy.rst:242 +#: ../Doc/library/asyncio-policy.rst:236 ../Doc/library/asyncio-policy.rst:254 msgid "" "The watcher avoids disrupting other code spawning processes by polling every " "process explicitly on a :py:data:`SIGCHLD` signal." @@ -387,7 +383,7 @@ msgstr "" "El observador evita interrumpir otro código generando procesos sondeando " "cada proceso explícitamente en una señal :py:data:`SIGCHLD`." -#: ../Doc/library/asyncio-policy.rst:227 +#: ../Doc/library/asyncio-policy.rst:239 msgid "" "There is no limitation for running subprocesses from different threads once " "the watcher is installed." @@ -395,7 +391,7 @@ msgstr "" "No hay limitación para ejecutar subprocesos de diferentes hilos una vez el " "observador es instalado." -#: ../Doc/library/asyncio-policy.rst:230 +#: ../Doc/library/asyncio-policy.rst:242 msgid "" "The solution is safe but it has a significant overhead when handling a big " "number of processes (*O(n)* each time a :py:data:`SIGCHLD` is received)." @@ -404,7 +400,7 @@ msgstr "" "gestiona un número grande de procesos (*O(n)* cada vez que un :py:data:" "`SIGCHLD` es recibido)." -#: ../Doc/library/asyncio-policy.rst:238 +#: ../Doc/library/asyncio-policy.rst:250 msgid "" "This implementation uses active event loop from the main thread to handle :" "py:data:`SIGCHLD` signal. If the main thread has no running event loop " @@ -415,7 +411,7 @@ msgstr "" "de eventos en ejecución otro hilo no puede generar un subproceso (:exc:" "`RuntimeError` es disparada)." -#: ../Doc/library/asyncio-policy.rst:245 +#: ../Doc/library/asyncio-policy.rst:257 msgid "" "This solution is as safe as :class:`MultiLoopChildWatcher` and has the same " "*O(N)* complexity but requires a running event loop in the main thread to " @@ -425,7 +421,7 @@ msgstr "" "misma complejidad *O(n)* pero requiere de un bucle de eventos ejecutándose " "en el hilo principal para trabajar." -#: ../Doc/library/asyncio-policy.rst:250 +#: ../Doc/library/asyncio-policy.rst:262 msgid "" "This implementation reaps every terminated processes by calling ``os." "waitpid(-1)`` directly, possibly breaking other code spawning processes and " @@ -435,7 +431,7 @@ msgstr "" "waitpad(-1)`` directamente, posiblemente rompiendo otro código generando " "procesos y esperando por su terminación." -#: ../Doc/library/asyncio-policy.rst:254 +#: ../Doc/library/asyncio-policy.rst:266 msgid "" "There is no noticeable overhead when handling a big number of children " "(*O(1)* each time a child terminates)." @@ -443,7 +439,7 @@ msgstr "" "No hay sobrecarga notable cuando se gestiona un número grande de procesos " "secundarios (*O(1)* cada vez que un proceso secundario termina)." -#: ../Doc/library/asyncio-policy.rst:257 +#: ../Doc/library/asyncio-policy.rst:269 msgid "" "This solution requires a running event loop in the main thread to work, as :" "class:`SafeChildWatcher`." @@ -451,7 +447,7 @@ msgstr "" "Esta solución requiere un bucle de eventos ejecutándose en el hilo principal " "para trabajar, como :class:`SafeChildWatcher`." -#: ../Doc/library/asyncio-policy.rst:262 +#: ../Doc/library/asyncio-policy.rst:274 msgid "" "This implementation polls process file descriptors (pidfds) to await child " "process termination. In some respects, :class:`PidfdChildWatcher` is a " @@ -463,17 +459,17 @@ msgid "" msgstr "" "Esta implementación sondea los descriptores de archivos de proceso (pidfds) " "para esperar la terminación del proceso hijo. En ciertos sentidos :class:" -"`PidfdChildWatcher` es una implementación de niño vigilante \"Ricitos de oro" -"\". No requiere señales o hilos, no interfiere con ningún proceso lanzado " +"`PidfdChildWatcher` es una implementación de niño vigilante \"Ricitos de " +"oro\". No requiere señales o hilos, no interfiere con ningún proceso lanzado " "fuera del bucle de eventos y escala linealmente con el número de subprocesos " "lanzados por el bucle de eventos. La principal desventaja es que los pidfds " "son específicos de Linux y solo funcionan en kernels recientes (5.3+)." -#: ../Doc/library/asyncio-policy.rst:274 +#: ../Doc/library/asyncio-policy.rst:288 msgid "Custom Policies" msgstr "Personalizar Políticas" -#: ../Doc/library/asyncio-policy.rst:276 +#: ../Doc/library/asyncio-policy.rst:290 msgid "" "To implement a new event loop policy, it is recommended to subclass :class:" "`DefaultEventLoopPolicy` and override the methods for which custom behavior " @@ -482,3 +478,22 @@ msgstr "" "Para implementar una nueva política de bucle de eventos, se recomienda " "heredar :class:`DefaultEventLoopPolicy` y sobreescribir los métodos para los " "cuales se desea una conducta personalizada, por ejemplo::" + +#~ msgid "" +#~ "An event loop policy is a global per-process object that controls the " +#~ "management of the event loop. Each event loop has a default policy, which " +#~ "can be changed and customized using the policy API." +#~ msgstr "" +#~ "Una política del bucle de eventos es un objeto por proceso que controla " +#~ "la administración del bucle de eventos. Cada bucle de eventos tiene una " +#~ "política por defecto, que puede ser cambiada y editada usando la política " +#~ "de API." + +#~ msgid "" +#~ "A policy defines the notion of *context* and manages a separate event " +#~ "loop per context. The default policy defines *context* to be the current " +#~ "thread." +#~ msgstr "" +#~ "Una política define la noción de *contexto* y administra un bucle de " +#~ "eventos separado por contexto. La política por defecto define un " +#~ "*contexto* como el estado actual." diff --git a/library/asyncio-protocol.po b/library/asyncio-protocol.po index 63a5f3a4ca..c10d689f27 100644 --- a/library/asyncio-protocol.po +++ b/library/asyncio-protocol.po @@ -10,16 +10,16 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-08-04 13:44+0200\n" "Last-Translator: Cristián Maureira-Fredes \n" -"Language-Team: python-doc-es\n" "Language: es\n" +"Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" -"Generated-By: Babel 2.9.1\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/library/asyncio-protocol.rst:9 msgid "Transports and Protocols" @@ -293,12 +293,13 @@ msgid "Close the transport." msgstr "Cierra el transporte." #: ../Doc/library/asyncio-protocol.rst:154 +#, fuzzy msgid "" "If the transport has a buffer for outgoing data, buffered data will be " "flushed asynchronously. No more data will be received. After all buffered " "data is flushed, the protocol's :meth:`protocol.connection_lost() " "` method will be called with :const:`None` as " -"its argument." +"its argument. The transport should not be used once it is closed." msgstr "" "Si el transporte tiene un búfer para datos de salida, los datos almacenados " "en el búfer se eliminarán de forma asincrónica. No se recibirán más datos. " @@ -306,17 +307,17 @@ msgstr "" "meth:`protocol.connection_lost() ` del " "protocolo se llamará con :const:`None` como argumento." -#: ../Doc/library/asyncio-protocol.rst:163 +#: ../Doc/library/asyncio-protocol.rst:164 msgid "Return ``True`` if the transport is closing or is closed." msgstr "Retorna ``True`` si el transporte se está cerrando o está ya cerrado." -#: ../Doc/library/asyncio-protocol.rst:167 +#: ../Doc/library/asyncio-protocol.rst:168 msgid "Return information about the transport or underlying resources it uses." msgstr "" "Retorna información sobre el transporte o los recursos subyacentes que " "utiliza." -#: ../Doc/library/asyncio-protocol.rst:170 +#: ../Doc/library/asyncio-protocol.rst:171 msgid "" "*name* is a string representing the piece of transport-specific information " "to get." @@ -324,7 +325,7 @@ msgstr "" "*name* es una cadena de caracteres que representa la información específica " "del transporte que se va a obtener." -#: ../Doc/library/asyncio-protocol.rst:173 +#: ../Doc/library/asyncio-protocol.rst:174 msgid "" "*default* is the value to return if the information is not available, or if " "the transport does not support querying it with the given third-party event " @@ -334,7 +335,7 @@ msgstr "" "o si el transporte no admite la consulta con la implementación del bucle de " "eventos de terceros dada o en la plataforma actual." -#: ../Doc/library/asyncio-protocol.rst:178 +#: ../Doc/library/asyncio-protocol.rst:179 msgid "" "For example, the following code attempts to get the underlying socket object " "of the transport::" @@ -342,16 +343,16 @@ msgstr "" "Por ejemplo, el siguiente código intenta obtener el objeto socket subyacente " "del transporte:" -#: ../Doc/library/asyncio-protocol.rst:185 +#: ../Doc/library/asyncio-protocol.rst:186 msgid "Categories of information that can be queried on some transports:" msgstr "" "Categorías de información que se pueden consultar sobre algunos transportes:" -#: ../Doc/library/asyncio-protocol.rst:187 +#: ../Doc/library/asyncio-protocol.rst:188 msgid "socket:" msgstr "socket:" -#: ../Doc/library/asyncio-protocol.rst:189 +#: ../Doc/library/asyncio-protocol.rst:190 msgid "" "``'peername'``: the remote address to which the socket is connected, result " "of :meth:`socket.socket.getpeername` (``None`` on error)" @@ -359,11 +360,11 @@ msgstr "" "``'peername'``: la dirección remota a la que está conectado el socket, " "resultado de :meth:`socket.socket.getpeername` (``None`` en caso de error)" -#: ../Doc/library/asyncio-protocol.rst:193 +#: ../Doc/library/asyncio-protocol.rst:194 msgid "``'socket'``: :class:`socket.socket` instance" msgstr "``'socket'``: instancia de :class:`socket.socket`" -#: ../Doc/library/asyncio-protocol.rst:195 +#: ../Doc/library/asyncio-protocol.rst:196 msgid "" "``'sockname'``: the socket's own address, result of :meth:`socket.socket." "getsockname`" @@ -371,11 +372,11 @@ msgstr "" "``'sockname'``: la dirección propia del socket, resultado de :meth:`socket." "socket.getsockname`" -#: ../Doc/library/asyncio-protocol.rst:198 +#: ../Doc/library/asyncio-protocol.rst:199 msgid "SSL socket:" msgstr "socket SSL:" -#: ../Doc/library/asyncio-protocol.rst:200 +#: ../Doc/library/asyncio-protocol.rst:201 msgid "" "``'compression'``: the compression algorithm being used as a string, or " "``None`` if the connection isn't compressed; result of :meth:`ssl.SSLSocket." @@ -385,7 +386,7 @@ msgstr "" "cadena de caracteres o ``None`` si la conexión no está comprimida; resultado " "de :meth:`ssl.SSLSocket.compression`" -#: ../Doc/library/asyncio-protocol.rst:204 +#: ../Doc/library/asyncio-protocol.rst:205 msgid "" "``'cipher'``: a three-value tuple containing the name of the cipher being " "used, the version of the SSL protocol that defines its use, and the number " @@ -396,45 +397,45 @@ msgstr "" "cantidad de bits de la clave secreta que se utilizan; resultado de :meth:" "`ssl.SSLSocket.cipher`" -#: ../Doc/library/asyncio-protocol.rst:209 +#: ../Doc/library/asyncio-protocol.rst:210 msgid "" "``'peercert'``: peer certificate; result of :meth:`ssl.SSLSocket.getpeercert`" msgstr "" "``'peercert'``: certificado de pares; resultado de :meth:`ssl.SSLSocket." "getpeercert`" -#: ../Doc/library/asyncio-protocol.rst:212 +#: ../Doc/library/asyncio-protocol.rst:213 msgid "``'sslcontext'``: :class:`ssl.SSLContext` instance" msgstr "``'sslcontext'``: instancia de :class:`ssl.SSLContext`" -#: ../Doc/library/asyncio-protocol.rst:214 +#: ../Doc/library/asyncio-protocol.rst:215 msgid "" "``'ssl_object'``: :class:`ssl.SSLObject` or :class:`ssl.SSLSocket` instance" msgstr "" "``'ssl_object'``: instancia de :class:`ssl.SSLObject` o :class:`ssl." "SSLSocket`" -#: ../Doc/library/asyncio-protocol.rst:217 +#: ../Doc/library/asyncio-protocol.rst:218 msgid "pipe:" msgstr "pipe:" -#: ../Doc/library/asyncio-protocol.rst:219 +#: ../Doc/library/asyncio-protocol.rst:220 msgid "``'pipe'``: pipe object" msgstr "``'pipe'``: objeto pipe" -#: ../Doc/library/asyncio-protocol.rst:221 +#: ../Doc/library/asyncio-protocol.rst:222 msgid "subprocess:" msgstr "subproceso:" -#: ../Doc/library/asyncio-protocol.rst:223 +#: ../Doc/library/asyncio-protocol.rst:224 msgid "``'subprocess'``: :class:`subprocess.Popen` instance" msgstr "``'subprocess'``: instancia de :class:`subprocess.Popen`" -#: ../Doc/library/asyncio-protocol.rst:227 +#: ../Doc/library/asyncio-protocol.rst:228 msgid "Set a new protocol." msgstr "Establece un nuevo protocolo." -#: ../Doc/library/asyncio-protocol.rst:229 +#: ../Doc/library/asyncio-protocol.rst:230 msgid "" "Switching protocol should only be done when both protocols are documented to " "support the switch." @@ -442,19 +443,19 @@ msgstr "" "El cambio de protocolo solo debe realizarse cuando esté documentado que " "ambos protocolos admiten el cambio." -#: ../Doc/library/asyncio-protocol.rst:234 +#: ../Doc/library/asyncio-protocol.rst:235 msgid "Return the current protocol." msgstr "Retorna el protocolo actual." -#: ../Doc/library/asyncio-protocol.rst:238 +#: ../Doc/library/asyncio-protocol.rst:239 msgid "Read-only Transports" msgstr "Transportes de solo lectura" -#: ../Doc/library/asyncio-protocol.rst:242 +#: ../Doc/library/asyncio-protocol.rst:243 msgid "Return ``True`` if the transport is receiving new data." msgstr "Retorna ``True`` si el transporte está recibiendo nuevos datos." -#: ../Doc/library/asyncio-protocol.rst:248 +#: ../Doc/library/asyncio-protocol.rst:249 msgid "" "Pause the receiving end of the transport. No data will be passed to the " "protocol's :meth:`protocol.data_received() ` method " @@ -464,7 +465,7 @@ msgstr "" "meth:`protocol.data_received() ` del protocolo hasta " "que se llame a :meth:`resume_reading`." -#: ../Doc/library/asyncio-protocol.rst:252 +#: ../Doc/library/asyncio-protocol.rst:253 msgid "" "The method is idempotent, i.e. it can be called when the transport is " "already paused or closed." @@ -472,7 +473,7 @@ msgstr "" "El método es idempotente, es decir, se puede llamar cuando el transporte ya " "está en pausa o cerrado." -#: ../Doc/library/asyncio-protocol.rst:258 +#: ../Doc/library/asyncio-protocol.rst:259 msgid "" "Resume the receiving end. The protocol's :meth:`protocol.data_received() " "` method will be called once again if some data is " @@ -482,7 +483,7 @@ msgstr "" "` del protocolo se llamará una vez más si hay " "algunos datos disponibles para su lectura." -#: ../Doc/library/asyncio-protocol.rst:262 +#: ../Doc/library/asyncio-protocol.rst:263 msgid "" "The method is idempotent, i.e. it can be called when the transport is " "already reading." @@ -490,11 +491,11 @@ msgstr "" "El método es idempotente, es decir, se puede llamar cuando el transporte " "está leyendo." -#: ../Doc/library/asyncio-protocol.rst:268 +#: ../Doc/library/asyncio-protocol.rst:269 msgid "Write-only Transports" msgstr "Transportes de solo escritura" -#: ../Doc/library/asyncio-protocol.rst:272 +#: ../Doc/library/asyncio-protocol.rst:273 msgid "" "Close the transport immediately, without waiting for pending operations to " "complete. Buffered data will be lost. No more data will be received. The " @@ -507,7 +508,7 @@ msgstr "" "` del protocolo será llamado eventualmente " "con :const:`None` como argumento." -#: ../Doc/library/asyncio-protocol.rst:280 +#: ../Doc/library/asyncio-protocol.rst:281 msgid "" "Return :const:`True` if the transport supports :meth:`~WriteTransport." "write_eof`, :const:`False` if not." @@ -515,12 +516,12 @@ msgstr "" "Retorna :const:`True` si el transporte admite :meth:`~WriteTransport." "write_eof`, en caso contrario :const:`False`." -#: ../Doc/library/asyncio-protocol.rst:285 +#: ../Doc/library/asyncio-protocol.rst:286 msgid "Return the current size of the output buffer used by the transport." msgstr "" "Retorna el tamaño actual del búfer de salida utilizado por el transporte." -#: ../Doc/library/asyncio-protocol.rst:289 +#: ../Doc/library/asyncio-protocol.rst:290 msgid "" "Get the *high* and *low* watermarks for write flow control. Return a tuple " "``(low, high)`` where *low* and *high* are positive number of bytes." @@ -529,17 +530,17 @@ msgstr "" "escritura. Retorna una tupla ``(low, high)`` donde *low* ('inferior') y " "*high* ('superior') son un número de bytes positivo." -#: ../Doc/library/asyncio-protocol.rst:293 +#: ../Doc/library/asyncio-protocol.rst:294 msgid "Use :meth:`set_write_buffer_limits` to set the limits." msgstr "Usa :meth:`set_write_buffer_limits` para establecer los límites." -#: ../Doc/library/asyncio-protocol.rst:299 +#: ../Doc/library/asyncio-protocol.rst:300 msgid "Set the *high* and *low* watermarks for write flow control." msgstr "" "Establece los límites *high* ('superior') y *low* ('inferior') para el " "control del flujo de escritura." -#: ../Doc/library/asyncio-protocol.rst:301 +#: ../Doc/library/asyncio-protocol.rst:302 msgid "" "These two values (measured in number of bytes) control when the protocol's :" "meth:`protocol.pause_writing() ` and :meth:" @@ -553,7 +554,7 @@ msgstr "" "protocolo . Si se especifica, el límite inferior debe ser menor o igual que " "el límite superior. Ni *high* ni *low* pueden ser negativos." -#: ../Doc/library/asyncio-protocol.rst:309 +#: ../Doc/library/asyncio-protocol.rst:310 msgid "" ":meth:`~BaseProtocol.pause_writing` is called when the buffer size becomes " "greater than or equal to the *high* value. If writing has been paused, :meth:" @@ -565,7 +566,7 @@ msgstr "" "escritura, se llama a :meth:`~BaseProtocol.resume_writing` cuando el tamaño " "del búfer es menor o igual que el valor *low* ('inferior')." -#: ../Doc/library/asyncio-protocol.rst:314 +#: ../Doc/library/asyncio-protocol.rst:315 msgid "" "The defaults are implementation-specific. If only the high watermark is " "given, the low watermark defaults to an implementation-specific value less " @@ -587,17 +588,17 @@ msgstr "" "cualquiera de los límites es generalmente subóptimo, ya que reduce las " "oportunidades para realizar E/S y cálculos simultáneamente." -#: ../Doc/library/asyncio-protocol.rst:325 +#: ../Doc/library/asyncio-protocol.rst:326 msgid "Use :meth:`~WriteTransport.get_write_buffer_limits` to get the limits." msgstr "" "Usa :meth:`~WriteTransport.get_write_buffer_limits` para obtener los límites." -#: ../Doc/library/asyncio-protocol.rst:330 +#: ../Doc/library/asyncio-protocol.rst:331 msgid "Write some *data* bytes to the transport." msgstr "Escribe los bytes de *data* en el transporte." -#: ../Doc/library/asyncio-protocol.rst:332 -#: ../Doc/library/asyncio-protocol.rst:361 +#: ../Doc/library/asyncio-protocol.rst:333 +#: ../Doc/library/asyncio-protocol.rst:362 msgid "" "This method does not block; it buffers the data and arranges for it to be " "sent out asynchronously." @@ -605,7 +606,7 @@ msgstr "" "Este método no bloquea; almacena los datos en el búfer y organiza que se " "envíen de forma asincrónica." -#: ../Doc/library/asyncio-protocol.rst:337 +#: ../Doc/library/asyncio-protocol.rst:338 msgid "" "Write a list (or any iterable) of data bytes to the transport. This is " "functionally equivalent to calling :meth:`write` on each element yielded by " @@ -616,7 +617,7 @@ msgstr "" "generado por el iterable, pero puede ser implementado de manera más " "eficiente." -#: ../Doc/library/asyncio-protocol.rst:344 +#: ../Doc/library/asyncio-protocol.rst:345 msgid "" "Close the write end of the transport after flushing all buffered data. Data " "may still be received." @@ -624,7 +625,7 @@ msgstr "" "Cierra el extremo de escritura del transporte después de vaciar todos los " "datos almacenados en el búfer. Aún es posible recibir datos." -#: ../Doc/library/asyncio-protocol.rst:347 +#: ../Doc/library/asyncio-protocol.rst:348 msgid "" "This method can raise :exc:`NotImplementedError` if the transport (e.g. SSL) " "doesn't support half-closed connections." @@ -632,11 +633,11 @@ msgstr "" "Este método puede lanzar una excepción :exc:`NotImplementedError` si el " "transporte (p. ej. SSL) no soporta conexiones semicerradas (*half-closed*)." -#: ../Doc/library/asyncio-protocol.rst:352 +#: ../Doc/library/asyncio-protocol.rst:353 msgid "Datagram Transports" msgstr "Transportes de datagramas" -#: ../Doc/library/asyncio-protocol.rst:356 +#: ../Doc/library/asyncio-protocol.rst:357 msgid "" "Send the *data* bytes to the remote peer given by *addr* (a transport-" "dependent target address). If *addr* is :const:`None`, the data is sent to " @@ -647,7 +648,7 @@ msgstr "" "datos se envían a la dirección de destino proporcionada en la creación del " "transporte." -#: ../Doc/library/asyncio-protocol.rst:366 +#: ../Doc/library/asyncio-protocol.rst:367 msgid "" "Close the transport immediately, without waiting for pending operations to " "complete. Buffered data will be lost. No more data will be received. The " @@ -660,15 +661,15 @@ msgstr "" "` del protocolo será llamado eventualmente " "con :const:`None` como argumento." -#: ../Doc/library/asyncio-protocol.rst:376 +#: ../Doc/library/asyncio-protocol.rst:377 msgid "Subprocess Transports" msgstr "Transportes de subprocesos" -#: ../Doc/library/asyncio-protocol.rst:380 +#: ../Doc/library/asyncio-protocol.rst:381 msgid "Return the subprocess process id as an integer." msgstr "Retorna la id del subproceso como un número entero." -#: ../Doc/library/asyncio-protocol.rst:384 +#: ../Doc/library/asyncio-protocol.rst:385 msgid "" "Return the transport for the communication pipe corresponding to the integer " "file descriptor *fd*:" @@ -676,7 +677,7 @@ msgstr "" "Retorna el transporte para la pipe de comunicación correspondiente al " "descriptor de archivo entero *fd*:" -#: ../Doc/library/asyncio-protocol.rst:387 +#: ../Doc/library/asyncio-protocol.rst:388 msgid "" "``0``: readable streaming transport of the standard input (*stdin*), or :" "const:`None` if the subprocess was not created with ``stdin=PIPE``" @@ -684,7 +685,7 @@ msgstr "" "``0``: transporte de *streaming* para lectura de la entrada estándar " "(*stdin*) o :const:`None` si el subproceso no se creó con ``stdin = PIPE``" -#: ../Doc/library/asyncio-protocol.rst:389 +#: ../Doc/library/asyncio-protocol.rst:390 msgid "" "``1``: writable streaming transport of the standard output (*stdout*), or :" "const:`None` if the subprocess was not created with ``stdout=PIPE``" @@ -692,7 +693,7 @@ msgstr "" "``1``: transporte de *streaming* para escritura de la salida estándar " "(*stdout*) o :const:`None` si el subproceso no se creó con ``stdout = PIPE``" -#: ../Doc/library/asyncio-protocol.rst:391 +#: ../Doc/library/asyncio-protocol.rst:392 msgid "" "``2``: writable streaming transport of the standard error (*stderr*), or :" "const:`None` if the subprocess was not created with ``stderr=PIPE``" @@ -700,11 +701,11 @@ msgstr "" "`2``: transporte de *streaming* para escritura del error estándar (*stderr*) " "o :const:`None` si el subproceso no se creó con ``stderr = PIPE``" -#: ../Doc/library/asyncio-protocol.rst:393 +#: ../Doc/library/asyncio-protocol.rst:394 msgid "other *fd*: :const:`None`" msgstr "otro *fd*: :const:`None`" -#: ../Doc/library/asyncio-protocol.rst:397 +#: ../Doc/library/asyncio-protocol.rst:398 msgid "" "Return the subprocess return code as an integer or :const:`None` if it " "hasn't returned, which is similar to the :attr:`subprocess.Popen.returncode` " @@ -714,11 +715,11 @@ msgstr "" "si no ha retornado aún, lo que es similar al atributo :attr:`subprocess." "Popen.returncode`." -#: ../Doc/library/asyncio-protocol.rst:403 +#: ../Doc/library/asyncio-protocol.rst:404 msgid "Kill the subprocess." msgstr "Mata al subproceso." -#: ../Doc/library/asyncio-protocol.rst:405 +#: ../Doc/library/asyncio-protocol.rst:406 msgid "" "On POSIX systems, the function sends SIGKILL to the subprocess. On Windows, " "this method is an alias for :meth:`terminate`." @@ -726,11 +727,11 @@ msgstr "" "En los sistemas POSIX, la función envía SIGKILL al subproceso. En Windows, " "este método es un alias para :meth:`terminate`." -#: ../Doc/library/asyncio-protocol.rst:408 +#: ../Doc/library/asyncio-protocol.rst:409 msgid "See also :meth:`subprocess.Popen.kill`." msgstr "Ver también :meth:`subprocess.Popen.kill`." -#: ../Doc/library/asyncio-protocol.rst:412 +#: ../Doc/library/asyncio-protocol.rst:413 msgid "" "Send the *signal* number to the subprocess, as in :meth:`subprocess.Popen." "send_signal`." @@ -738,11 +739,11 @@ msgstr "" "Envía el número de *señal* al subproceso, como en :meth:`subprocess.Popen." "send_signal`." -#: ../Doc/library/asyncio-protocol.rst:417 +#: ../Doc/library/asyncio-protocol.rst:418 msgid "Stop the subprocess." msgstr "Detiene el subproceso." -#: ../Doc/library/asyncio-protocol.rst:419 +#: ../Doc/library/asyncio-protocol.rst:420 msgid "" "On POSIX systems, this method sends SIGTERM to the subprocess. On Windows, " "the Windows API function TerminateProcess() is called to stop the subprocess." @@ -751,15 +752,15 @@ msgstr "" "se llama a la función de la API de Windows *TerminateProcess()* para detener " "el subproceso." -#: ../Doc/library/asyncio-protocol.rst:423 +#: ../Doc/library/asyncio-protocol.rst:424 msgid "See also :meth:`subprocess.Popen.terminate`." msgstr "Ver también :meth:`subprocess.Popen.terminate`." -#: ../Doc/library/asyncio-protocol.rst:427 +#: ../Doc/library/asyncio-protocol.rst:428 msgid "Kill the subprocess by calling the :meth:`kill` method." msgstr "Mata al subproceso llamando al método :meth:`kill`." -#: ../Doc/library/asyncio-protocol.rst:429 +#: ../Doc/library/asyncio-protocol.rst:430 msgid "" "If the subprocess hasn't returned yet, and close transports of *stdin*, " "*stdout*, and *stderr* pipes." @@ -767,15 +768,15 @@ msgstr "" "Si el subproceso aún no ha retornado, cierra los transportes de las pipes " "*stdin*, *stdout* y *stderr*." -#: ../Doc/library/asyncio-protocol.rst:436 +#: ../Doc/library/asyncio-protocol.rst:437 msgid "Protocols" msgstr "Protocolos" -#: ../Doc/library/asyncio-protocol.rst:438 +#: ../Doc/library/asyncio-protocol.rst:439 msgid "**Source code:** :source:`Lib/asyncio/protocols.py`" msgstr "**Código fuente:** :source:`Lib/asyncio/protocols.py`" -#: ../Doc/library/asyncio-protocol.rst:442 +#: ../Doc/library/asyncio-protocol.rst:443 msgid "" "asyncio provides a set of abstract base classes that should be used to " "implement network protocols. Those classes are meant to be used together " @@ -785,7 +786,7 @@ msgstr "" "para implementar protocolos de red. Estas clases están destinadas a ser " "utilizadas junto con los :ref:`transportes `." -#: ../Doc/library/asyncio-protocol.rst:446 +#: ../Doc/library/asyncio-protocol.rst:447 msgid "" "Subclasses of abstract base protocol classes may implement some or all " "methods. All these methods are callbacks: they are called by transports on " @@ -798,22 +799,22 @@ msgstr "" "reciben algunos datos. Un método del protocolo base debe ser llamado por el " "transporte correspondiente." -#: ../Doc/library/asyncio-protocol.rst:453 +#: ../Doc/library/asyncio-protocol.rst:454 msgid "Base Protocols" msgstr "Protocolos base" -#: ../Doc/library/asyncio-protocol.rst:457 +#: ../Doc/library/asyncio-protocol.rst:458 msgid "Base protocol with methods that all protocols share." msgstr "Protocolo base con métodos que comparten todos los demás protocolos." -#: ../Doc/library/asyncio-protocol.rst:461 +#: ../Doc/library/asyncio-protocol.rst:462 msgid "" "The base class for implementing streaming protocols (TCP, Unix sockets, etc)." msgstr "" "La clase base para implementar protocolos de *streaming* (TCP, sockets Unix, " "etc)." -#: ../Doc/library/asyncio-protocol.rst:466 +#: ../Doc/library/asyncio-protocol.rst:467 msgid "" "A base class for implementing streaming protocols with manual control of the " "receive buffer." @@ -821,11 +822,11 @@ msgstr "" "Una clase base para implementar protocolos de *streaming* con control manual " "del búfer de recepción." -#: ../Doc/library/asyncio-protocol.rst:471 +#: ../Doc/library/asyncio-protocol.rst:472 msgid "The base class for implementing datagram (UDP) protocols." msgstr "La clase base para implementar protocolos de datagramas (UDP)." -#: ../Doc/library/asyncio-protocol.rst:475 +#: ../Doc/library/asyncio-protocol.rst:476 msgid "" "The base class for implementing protocols communicating with child processes " "(unidirectional pipes)." @@ -833,21 +834,21 @@ msgstr "" "La clase base para implementar protocolos que se comunican con procesos " "secundarios (pipes unidireccionales)." -#: ../Doc/library/asyncio-protocol.rst:480 +#: ../Doc/library/asyncio-protocol.rst:481 msgid "Base Protocol" msgstr "Protocolo base" -#: ../Doc/library/asyncio-protocol.rst:482 +#: ../Doc/library/asyncio-protocol.rst:483 msgid "All asyncio protocols can implement Base Protocol callbacks." msgstr "" "Todos los protocolos asyncio pueden implementar las retrollamadas del " "protocolo base." -#: ../Doc/library/asyncio-protocol.rst:485 +#: ../Doc/library/asyncio-protocol.rst:486 msgid "Connection Callbacks" msgstr "Retrollamadas de conexión" -#: ../Doc/library/asyncio-protocol.rst:486 +#: ../Doc/library/asyncio-protocol.rst:487 msgid "" "Connection callbacks are called on all protocols, exactly once per a " "successful connection. All other protocol callbacks can only be called " @@ -857,11 +858,11 @@ msgstr "" "establecida en todos los protocolos. Todas las demás retrollamadas del " "protocolo solo pueden ser llamadas entre estos dos métodos." -#: ../Doc/library/asyncio-protocol.rst:492 +#: ../Doc/library/asyncio-protocol.rst:493 msgid "Called when a connection is made." msgstr "Se llama cuando se establece una conexión." -#: ../Doc/library/asyncio-protocol.rst:494 +#: ../Doc/library/asyncio-protocol.rst:495 msgid "" "The *transport* argument is the transport representing the connection. The " "protocol is responsible for storing the reference to its transport." @@ -869,11 +870,11 @@ msgstr "" "El argumento *transport* es el transporte que representa la conexión. El " "protocolo se encarga de almacenar la referencia a su propio transporte." -#: ../Doc/library/asyncio-protocol.rst:500 +#: ../Doc/library/asyncio-protocol.rst:501 msgid "Called when the connection is lost or closed." msgstr "Se llama cuando la conexión se pierde o se cierra." -#: ../Doc/library/asyncio-protocol.rst:502 +#: ../Doc/library/asyncio-protocol.rst:503 msgid "" "The argument is either an exception object or :const:`None`. The latter " "means a regular EOF is received, or the connection was aborted or closed by " @@ -883,11 +884,11 @@ msgstr "" "que se recibió un EOF regular o que la conexión fue cancelada o cerrada por " "este lado de la conexión." -#: ../Doc/library/asyncio-protocol.rst:508 +#: ../Doc/library/asyncio-protocol.rst:509 msgid "Flow Control Callbacks" msgstr "Retrollamadas de control de flujo" -#: ../Doc/library/asyncio-protocol.rst:509 +#: ../Doc/library/asyncio-protocol.rst:510 msgid "" "Flow control callbacks can be called by transports to pause or resume " "writing performed by the protocol." @@ -895,7 +896,7 @@ msgstr "" "Los transportes pueden llamar a las retrollamadas de control de flujo para " "pausar o reanudar la escritura llevada a cabo por el protocolo." -#: ../Doc/library/asyncio-protocol.rst:512 +#: ../Doc/library/asyncio-protocol.rst:513 msgid "" "See the documentation of the :meth:`~WriteTransport.set_write_buffer_limits` " "method for more details." @@ -903,17 +904,17 @@ msgstr "" "Consulta la documentación del método :meth:`~WriteTransport." "set_write_buffer_limits` para obtener más detalles." -#: ../Doc/library/asyncio-protocol.rst:517 +#: ../Doc/library/asyncio-protocol.rst:518 msgid "Called when the transport's buffer goes over the high watermark." msgstr "Se llama cuando el búfer del transporte supera el límite superior." -#: ../Doc/library/asyncio-protocol.rst:521 +#: ../Doc/library/asyncio-protocol.rst:522 msgid "Called when the transport's buffer drains below the low watermark." msgstr "" "Se llama cuando el búfer del transporte se vacía por debajo del límite " "inferior." -#: ../Doc/library/asyncio-protocol.rst:523 +#: ../Doc/library/asyncio-protocol.rst:524 msgid "" "If the buffer size equals the high watermark, :meth:`~BaseProtocol." "pause_writing` is not called: the buffer size must go strictly over." @@ -922,7 +923,7 @@ msgstr "" "pause_writing` no será llamado: el tamaño del búfer debe superarse " "estrictamente." -#: ../Doc/library/asyncio-protocol.rst:527 +#: ../Doc/library/asyncio-protocol.rst:528 msgid "" "Conversely, :meth:`~BaseProtocol.resume_writing` is called when the buffer " "size is equal or lower than the low watermark. These end conditions are " @@ -933,11 +934,11 @@ msgstr "" "finales son importantes para garantizar que todo salga como se espera cuando " "cualquiera de los dos límites sea cero." -#: ../Doc/library/asyncio-protocol.rst:534 +#: ../Doc/library/asyncio-protocol.rst:535 msgid "Streaming Protocols" msgstr "Protocolos de *streaming*" -#: ../Doc/library/asyncio-protocol.rst:536 +#: ../Doc/library/asyncio-protocol.rst:537 msgid "" "Event methods, such as :meth:`loop.create_server`, :meth:`loop." "create_unix_server`, :meth:`loop.create_connection`, :meth:`loop." @@ -951,7 +952,7 @@ msgstr "" "connect_read_pipe`, y :meth:`loop.connect_write_pipe` aceptan fábricas que " "retornan protocolos de *streaming*." -#: ../Doc/library/asyncio-protocol.rst:544 +#: ../Doc/library/asyncio-protocol.rst:545 msgid "" "Called when some data is received. *data* is a non-empty bytes object " "containing the incoming data." @@ -959,7 +960,7 @@ msgstr "" "Se llama cuando se reciben algunos datos. *data* es un objeto bytes no vacío " "que contiene los datos entrantes." -#: ../Doc/library/asyncio-protocol.rst:547 +#: ../Doc/library/asyncio-protocol.rst:548 msgid "" "Whether the data is buffered, chunked or reassembled depends on the " "transport. In general, you shouldn't rely on specific semantics and instead " @@ -971,7 +972,7 @@ msgstr "" "específicas y, en cambio, hacer que su análisis sea genérico y flexible. Sin " "embargo, los datos siempre se reciben en el orden correcto." -#: ../Doc/library/asyncio-protocol.rst:552 +#: ../Doc/library/asyncio-protocol.rst:553 msgid "" "The method can be called an arbitrary number of times while a connection is " "open." @@ -979,17 +980,18 @@ msgstr "" "El método se puede llamar un número arbitrario de veces mientras una " "conexión esté abierta." -#: ../Doc/library/asyncio-protocol.rst:555 +#: ../Doc/library/asyncio-protocol.rst:556 +#, fuzzy msgid "" "However, :meth:`protocol.eof_received() ` is called " -"at most once. Once `eof_received()` is called, ``data_received()`` is not " +"at most once. Once ``eof_received()`` is called, ``data_received()`` is not " "called anymore." msgstr "" "Sin embargo, :meth:`protocol.eof_received() ` se " "llama como máximo una vez. En el momento que se llama a `eof_received()`, ya " "no se llama a ``data_received()``." -#: ../Doc/library/asyncio-protocol.rst:561 +#: ../Doc/library/asyncio-protocol.rst:562 msgid "" "Called when the other end signals it won't send any more data (for example " "by calling :meth:`transport.write_eof() `, if the " @@ -999,7 +1001,7 @@ msgstr "" "ejemplo, llamando a :meth:`transport.write_eof() ` " "si el otro extremo también usa asyncio)." -#: ../Doc/library/asyncio-protocol.rst:566 +#: ../Doc/library/asyncio-protocol.rst:567 msgid "" "This method may return a false value (including ``None``), in which case the " "transport will close itself. Conversely, if this method returns a true " @@ -1013,7 +1015,7 @@ msgstr "" "transporte. Dado que la implementación por defecto retorna ``None``, en éste " "caso, se cierra implícitamente la conexión." -#: ../Doc/library/asyncio-protocol.rst:572 +#: ../Doc/library/asyncio-protocol.rst:573 msgid "" "Some transports, including SSL, don't support half-closed connections, in " "which case returning true from this method will result in the connection " @@ -1023,16 +1025,16 @@ msgstr "" "closed*), en cuyo caso retornar verdadero desde este método resultará en el " "cierre de la conexión." -#: ../Doc/library/asyncio-protocol.rst:577 -#: ../Doc/library/asyncio-protocol.rst:635 +#: ../Doc/library/asyncio-protocol.rst:578 +#: ../Doc/library/asyncio-protocol.rst:636 msgid "State machine:" msgstr "Máquina de estado:" -#: ../Doc/library/asyncio-protocol.rst:588 +#: ../Doc/library/asyncio-protocol.rst:589 msgid "Buffered Streaming Protocols" msgstr "Protocolos de *streaming* mediante búfer" -#: ../Doc/library/asyncio-protocol.rst:592 +#: ../Doc/library/asyncio-protocol.rst:593 msgid "" "Buffered Protocols can be used with any event loop method that supports " "`Streaming Protocols`_." @@ -1040,7 +1042,7 @@ msgstr "" "Los protocolos que hacen uso de un búfer se pueden utilizar con cualquier " "método del bucle de eventos que admita `Streaming Protocols`_." -#: ../Doc/library/asyncio-protocol.rst:595 +#: ../Doc/library/asyncio-protocol.rst:596 msgid "" "``BufferedProtocol`` implementations allow explicit manual allocation and " "control of the receive buffer. Event loops can then use the buffer provided " @@ -1057,18 +1059,18 @@ msgstr "" "de protocolos sofisticados pueden reducir significativamente la cantidad de " "asignaciones de búfer." -#: ../Doc/library/asyncio-protocol.rst:602 +#: ../Doc/library/asyncio-protocol.rst:603 msgid "" "The following callbacks are called on :class:`BufferedProtocol` instances:" msgstr "" "Las siguientes retrollamadas son llamadas en instancias :class:" "`BufferedProtocol`:" -#: ../Doc/library/asyncio-protocol.rst:607 +#: ../Doc/library/asyncio-protocol.rst:608 msgid "Called to allocate a new receive buffer." msgstr "Se llama para asignar un nuevo búfer de recepción." -#: ../Doc/library/asyncio-protocol.rst:609 +#: ../Doc/library/asyncio-protocol.rst:610 msgid "" "*sizehint* is the recommended minimum size for the returned buffer. It is " "acceptable to return smaller or larger buffers than what *sizehint* " @@ -1080,7 +1082,7 @@ msgstr "" "*sizehint*. Cuando se establece en -1, el tamaño del búfer puede ser " "arbitrario. Es un error retornar un búfer con tamaño cero." -#: ../Doc/library/asyncio-protocol.rst:614 +#: ../Doc/library/asyncio-protocol.rst:615 msgid "" "``get_buffer()`` must return an object implementing the :ref:`buffer " "protocol `." @@ -1088,15 +1090,15 @@ msgstr "" "``get_buffer()`` debe retornar un objeto que implemente el :ref:`protocolo " "de búfer `." -#: ../Doc/library/asyncio-protocol.rst:619 +#: ../Doc/library/asyncio-protocol.rst:620 msgid "Called when the buffer was updated with the received data." msgstr "Se llama cuando el búfer se ha actualizado con los datos recibidos." -#: ../Doc/library/asyncio-protocol.rst:621 +#: ../Doc/library/asyncio-protocol.rst:622 msgid "*nbytes* is the total number of bytes that were written to the buffer." msgstr "*nbytes* es el número total de bytes que se escribieron en el búfer." -#: ../Doc/library/asyncio-protocol.rst:625 +#: ../Doc/library/asyncio-protocol.rst:626 msgid "" "See the documentation of the :meth:`protocol.eof_received() ` method." @@ -1104,7 +1106,7 @@ msgstr "" "Consulte la documentación del método :meth:`protocol.eof_received() " "`." -#: ../Doc/library/asyncio-protocol.rst:629 +#: ../Doc/library/asyncio-protocol.rst:630 msgid "" ":meth:`~BufferedProtocol.get_buffer` can be called an arbitrary number of " "times during a connection. However, :meth:`protocol.eof_received() " @@ -1118,11 +1120,11 @@ msgstr "" "`~BufferedProtocol.get_buffer` y :meth:`~BufferedProtocol.buffer_updated` no " "serán llamados después de eso." -#: ../Doc/library/asyncio-protocol.rst:648 +#: ../Doc/library/asyncio-protocol.rst:649 msgid "Datagram Protocols" msgstr "Protocolos de datagramas" -#: ../Doc/library/asyncio-protocol.rst:650 +#: ../Doc/library/asyncio-protocol.rst:651 msgid "" "Datagram Protocol instances should be constructed by protocol factories " "passed to the :meth:`loop.create_datagram_endpoint` method." @@ -1131,7 +1133,7 @@ msgstr "" "fábricas de protocolos pasadas al método :meth:`loop." "create_datagram_endpoint`." -#: ../Doc/library/asyncio-protocol.rst:655 +#: ../Doc/library/asyncio-protocol.rst:656 msgid "" "Called when a datagram is received. *data* is a bytes object containing the " "incoming data. *addr* is the address of the peer sending the data; the " @@ -1141,7 +1143,7 @@ msgstr "" "contiene los datos entrantes. *addr* es la dirección del par que envía los " "datos; el formato exacto depende del transporte." -#: ../Doc/library/asyncio-protocol.rst:661 +#: ../Doc/library/asyncio-protocol.rst:662 msgid "" "Called when a previous send or receive operation raises an :class:" "`OSError`. *exc* is the :class:`OSError` instance." @@ -1149,7 +1151,7 @@ msgstr "" "Se llama cuando una operación de envío o recepción anterior genera una :" "class:`OSError`. *exc* es la instancia :class:`OSError`." -#: ../Doc/library/asyncio-protocol.rst:664 +#: ../Doc/library/asyncio-protocol.rst:665 msgid "" "This method is called in rare conditions, when the transport (e.g. UDP) " "detects that a datagram could not be delivered to its recipient. In many " @@ -1160,7 +1162,7 @@ msgstr "" "destinatario. Sin embargo, en la mayoría de casos, los datagramas que no se " "puedan entregar se eliminarán silenciosamente." -#: ../Doc/library/asyncio-protocol.rst:671 +#: ../Doc/library/asyncio-protocol.rst:672 msgid "" "On BSD systems (macOS, FreeBSD, etc.) flow control is not supported for " "datagram protocols, because there is no reliable way to detect send failures " @@ -1171,7 +1173,7 @@ msgstr "" "forma confiable de detectar fallos de envío causados por escribir demasiados " "paquetes." -#: ../Doc/library/asyncio-protocol.rst:675 +#: ../Doc/library/asyncio-protocol.rst:676 msgid "" "The socket always appears 'ready' and excess packets are dropped. An :class:" "`OSError` with ``errno`` set to :const:`errno.ENOBUFS` may or may not be " @@ -1183,11 +1185,11 @@ msgstr "" "const:`errno.ENOBUFS` puede o no ser generado; si se genera, se informará a :" "meth:`DatagramProtocol.error_received` pero en caso contrario se ignorará." -#: ../Doc/library/asyncio-protocol.rst:684 +#: ../Doc/library/asyncio-protocol.rst:685 msgid "Subprocess Protocols" msgstr "Protocolos de subprocesos" -#: ../Doc/library/asyncio-protocol.rst:686 +#: ../Doc/library/asyncio-protocol.rst:687 msgid "" "Subprocess Protocol instances should be constructed by protocol factories " "passed to the :meth:`loop.subprocess_exec` and :meth:`loop.subprocess_shell` " @@ -1197,44 +1199,44 @@ msgstr "" "de protocolos pasadas a los métodos :meth:`loop.subprocess_exec` y :meth:" "`loop.subprocess_shell`." -#: ../Doc/library/asyncio-protocol.rst:692 +#: ../Doc/library/asyncio-protocol.rst:693 msgid "" "Called when the child process writes data into its stdout or stderr pipe." msgstr "" "Se llama cuando el proceso hijo escribe datos en su pipe stdout o stderr." -#: ../Doc/library/asyncio-protocol.rst:695 +#: ../Doc/library/asyncio-protocol.rst:696 msgid "*fd* is the integer file descriptor of the pipe." msgstr "*fd* es el descriptor de archivo entero de la pipe." -#: ../Doc/library/asyncio-protocol.rst:697 +#: ../Doc/library/asyncio-protocol.rst:698 msgid "*data* is a non-empty bytes object containing the received data." msgstr "*data* es un objeto bytes no vacío que contiene los datos recibidos." -#: ../Doc/library/asyncio-protocol.rst:701 +#: ../Doc/library/asyncio-protocol.rst:702 msgid "" "Called when one of the pipes communicating with the child process is closed." msgstr "" "Se llama cuando se cierra una de las pipes que se comunican con el proceso " "hijo." -#: ../Doc/library/asyncio-protocol.rst:704 +#: ../Doc/library/asyncio-protocol.rst:705 msgid "*fd* is the integer file descriptor that was closed." msgstr "*fd* es el descriptor de archivo entero que se cerró." -#: ../Doc/library/asyncio-protocol.rst:708 +#: ../Doc/library/asyncio-protocol.rst:709 msgid "Called when the child process has exited." msgstr "Se llama cuando el proceso hijo ha finalizado." -#: ../Doc/library/asyncio-protocol.rst:712 +#: ../Doc/library/asyncio-protocol.rst:713 msgid "Examples" msgstr "Ejemplos" -#: ../Doc/library/asyncio-protocol.rst:717 +#: ../Doc/library/asyncio-protocol.rst:718 msgid "TCP Echo Server" msgstr "Servidor de eco TCP" -#: ../Doc/library/asyncio-protocol.rst:719 +#: ../Doc/library/asyncio-protocol.rst:720 msgid "" "Create a TCP echo server using the :meth:`loop.create_server` method, send " "back received data, and close the connection::" @@ -1242,7 +1244,7 @@ msgstr "" "Crear un servidor de eco TCP usando el método :meth:`loop.create_server`, " "enviar de vuelta los datos recibidos y cerrar la conexión::" -#: ../Doc/library/asyncio-protocol.rst:760 +#: ../Doc/library/asyncio-protocol.rst:761 msgid "" "The :ref:`TCP echo server using streams ` " "example uses the high-level :func:`asyncio.start_server` function." @@ -1250,11 +1252,11 @@ msgstr "" "El ejemplo :ref:`Servidor de eco TCP usando streams ` usa la función de alto nivel :func:`asyncio.start_server`." -#: ../Doc/library/asyncio-protocol.rst:766 +#: ../Doc/library/asyncio-protocol.rst:767 msgid "TCP Echo Client" msgstr "Cliente de eco TCP" -#: ../Doc/library/asyncio-protocol.rst:768 +#: ../Doc/library/asyncio-protocol.rst:769 msgid "" "A TCP echo client using the :meth:`loop.create_connection` method, sends " "data, and waits until the connection is closed::" @@ -1262,7 +1264,7 @@ msgstr "" "Un cliente de eco TCP usando el método :meth:`loop.create_connection`, envía " "datos y espera hasta que la conexión se cierre::" -#: ../Doc/library/asyncio-protocol.rst:816 +#: ../Doc/library/asyncio-protocol.rst:817 msgid "" "The :ref:`TCP echo client using streams ` " "example uses the high-level :func:`asyncio.open_connection` function." @@ -1270,11 +1272,11 @@ msgstr "" "El ejemplo :ref:`Cliente de eco TCP usando streams ` usa la función de alto nivel :func:`asyncio.open_connection`." -#: ../Doc/library/asyncio-protocol.rst:823 +#: ../Doc/library/asyncio-protocol.rst:824 msgid "UDP Echo Server" msgstr "Servidor de eco UDP" -#: ../Doc/library/asyncio-protocol.rst:825 +#: ../Doc/library/asyncio-protocol.rst:826 msgid "" "A UDP echo server, using the :meth:`loop.create_datagram_endpoint` method, " "sends back received data::" @@ -1282,11 +1284,11 @@ msgstr "" "Un servidor de eco UDP, usando el método :meth:`loop." "create_datagram_endpoint`, envía de vuelta los datos recibidos::" -#: ../Doc/library/asyncio-protocol.rst:867 +#: ../Doc/library/asyncio-protocol.rst:868 msgid "UDP Echo Client" msgstr "Cliente de eco UDP" -#: ../Doc/library/asyncio-protocol.rst:869 +#: ../Doc/library/asyncio-protocol.rst:870 msgid "" "A UDP echo client, using the :meth:`loop.create_datagram_endpoint` method, " "sends data and closes the transport when it receives the answer::" @@ -1295,11 +1297,11 @@ msgstr "" "create_datagram_endpoint`, envía datos y cierra el transporte cuando recibe " "la respuesta:" -#: ../Doc/library/asyncio-protocol.rst:924 +#: ../Doc/library/asyncio-protocol.rst:925 msgid "Connecting Existing Sockets" msgstr "Conectando sockets existentes" -#: ../Doc/library/asyncio-protocol.rst:926 +#: ../Doc/library/asyncio-protocol.rst:927 msgid "" "Wait until a socket receives data using the :meth:`loop.create_connection` " "method with a protocol::" @@ -1307,7 +1309,7 @@ msgstr "" "Espera hasta que un socket reciba datos usando el método :meth:`loop." "create_connection` mediante un protocolo::" -#: ../Doc/library/asyncio-protocol.rst:980 +#: ../Doc/library/asyncio-protocol.rst:981 msgid "" "The :ref:`watch a file descriptor for read events " "` example uses the low-level :meth:`loop." @@ -1317,7 +1319,7 @@ msgstr "" "` utiliza el método de bajo nivel :meth:`loop." "add_reader` para registrar un descriptor de archivo." -#: ../Doc/library/asyncio-protocol.rst:984 +#: ../Doc/library/asyncio-protocol.rst:985 msgid "" "The :ref:`register an open socket to wait for data using streams " "` example uses high-level streams " @@ -1327,11 +1329,11 @@ msgstr "" "streams ` usa *streams* de alto " "nivel creados por la función :func:`open_connection` en una corrutina." -#: ../Doc/library/asyncio-protocol.rst:991 +#: ../Doc/library/asyncio-protocol.rst:992 msgid "loop.subprocess_exec() and SubprocessProtocol" msgstr "*loop.subprocess_exec()* y *SubprocessProtocol*" -#: ../Doc/library/asyncio-protocol.rst:993 +#: ../Doc/library/asyncio-protocol.rst:994 msgid "" "An example of a subprocess protocol used to get the output of a subprocess " "and to wait for the subprocess exit." @@ -1339,11 +1341,11 @@ msgstr "" "Un ejemplo de un protocolo de subproceso que se utiliza para obtener la " "salida de un subproceso y esperar su terminación." -#: ../Doc/library/asyncio-protocol.rst:996 +#: ../Doc/library/asyncio-protocol.rst:997 msgid "The subprocess is created by the :meth:`loop.subprocess_exec` method::" msgstr "El subproceso es creado por el método :meth:`loop.subprocess_exec` ::" -#: ../Doc/library/asyncio-protocol.rst:1042 +#: ../Doc/library/asyncio-protocol.rst:1043 msgid "" "See also the :ref:`same example ` " "written using high-level APIs." diff --git a/library/asyncio-queue.po b/library/asyncio-queue.po index e713164b13..c389bc4048 100644 --- a/library/asyncio-queue.po +++ b/library/asyncio-queue.po @@ -10,16 +10,16 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2020-10-08 11:54+0200\n" "Last-Translator: \n" "Language: es\n" "Language-Team: python-doc-es\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/library/asyncio-queue.rst:7 msgid "Queues" @@ -81,23 +81,27 @@ msgstr "" "tamaño de la cola siempre es conocido y puede ser retornado llamando el " "método :meth:`qsize`." -#: ../Doc/library/asyncio-queue.rst:40 +#: ../Doc/library/asyncio-queue.rst:39 +msgid "Removed the *loop* parameter." +msgstr "" + +#: ../Doc/library/asyncio-queue.rst:43 msgid "This class is :ref:`not thread safe `." msgstr "Esta clase es :ref:`no segura para hilos `." -#: ../Doc/library/asyncio-queue.rst:44 +#: ../Doc/library/asyncio-queue.rst:47 msgid "Number of items allowed in the queue." msgstr "Número de ítems permitidos en la cola." -#: ../Doc/library/asyncio-queue.rst:48 +#: ../Doc/library/asyncio-queue.rst:51 msgid "Return ``True`` if the queue is empty, ``False`` otherwise." msgstr "Retorna ``True`` si la cola es vacía, o ``False`` en caso contrario." -#: ../Doc/library/asyncio-queue.rst:52 +#: ../Doc/library/asyncio-queue.rst:55 msgid "Return ``True`` if there are :attr:`maxsize` items in the queue." msgstr "Retorna ``True`` si hay :attr:`maxsize` ítems en la cola." -#: ../Doc/library/asyncio-queue.rst:54 +#: ../Doc/library/asyncio-queue.rst:57 msgid "" "If the queue was initialized with ``maxsize=0`` (the default), then :meth:" "`full()` never returns ``True``." @@ -105,7 +109,7 @@ msgstr "" "Si la cola fue inicializada con ``maxsize=0`` (el predeterminado), entonces :" "meth:`fill()` nunca retorna ``True``." -#: ../Doc/library/asyncio-queue.rst:59 +#: ../Doc/library/asyncio-queue.rst:62 msgid "" "Remove and return an item from the queue. If queue is empty, wait until an " "item is available." @@ -113,20 +117,20 @@ msgstr "" "Remueve y retorna un ítem de la cola. Si la cola es vacía, espera hasta que " "un ítem esté disponible." -#: ../Doc/library/asyncio-queue.rst:64 +#: ../Doc/library/asyncio-queue.rst:67 msgid "" "Return an item if one is immediately available, else raise :exc:`QueueEmpty`." msgstr "" "Retorna un ítem si uno está inmediatamente disponible, de otra manera " "levanta :exc:`QueueEmpty`." -#: ../Doc/library/asyncio-queue.rst:69 +#: ../Doc/library/asyncio-queue.rst:72 msgid "Block until all items in the queue have been received and processed." msgstr "" "Se bloquea hasta que todos los ítems en la cola han sido recibidos y " "procesados." -#: ../Doc/library/asyncio-queue.rst:71 +#: ../Doc/library/asyncio-queue.rst:74 msgid "" "The count of unfinished tasks goes up whenever an item is added to the " "queue. The count goes down whenever a consumer coroutine calls :meth:" @@ -140,7 +144,7 @@ msgstr "" "está completo. Cuando el conteo de tareas inacabadas llega a cero, :meth:" "`join` se desbloquea." -#: ../Doc/library/asyncio-queue.rst:79 +#: ../Doc/library/asyncio-queue.rst:82 msgid "" "Put an item into the queue. If the queue is full, wait until a free slot is " "available before adding the item." @@ -148,24 +152,24 @@ msgstr "" "Pone un ítem en la cola. Si la cola está completa, espera hasta que una " "entrada vacía esté disponible antes de agregar el ítem." -#: ../Doc/library/asyncio-queue.rst:84 +#: ../Doc/library/asyncio-queue.rst:87 msgid "Put an item into the queue without blocking." msgstr "Pone un ítem en la cola sin bloquearse." -#: ../Doc/library/asyncio-queue.rst:86 +#: ../Doc/library/asyncio-queue.rst:89 msgid "If no free slot is immediately available, raise :exc:`QueueFull`." msgstr "" "Si no hay inmediatamente disponibles entradas vacías, lanza :exc:`QueueFull`." -#: ../Doc/library/asyncio-queue.rst:90 +#: ../Doc/library/asyncio-queue.rst:93 msgid "Return the number of items in the queue." msgstr "Retorna el número de ítems en la cola." -#: ../Doc/library/asyncio-queue.rst:94 +#: ../Doc/library/asyncio-queue.rst:97 msgid "Indicate that a formerly enqueued task is complete." msgstr "Indica que una tarea formalmente en cola está completa." -#: ../Doc/library/asyncio-queue.rst:96 +#: ../Doc/library/asyncio-queue.rst:99 msgid "" "Used by queue consumers. For each :meth:`~Queue.get` used to fetch a task, a " "subsequent call to :meth:`task_done` tells the queue that the processing on " @@ -175,7 +179,7 @@ msgstr "" "buscar una tarea, una ejecución subsecuente a :meth:`task_done` dice a la " "cola que el procesamiento de la tarea está completo." -#: ../Doc/library/asyncio-queue.rst:100 +#: ../Doc/library/asyncio-queue.rst:103 msgid "" "If a :meth:`join` is currently blocking, it will resume when all items have " "been processed (meaning that a :meth:`task_done` call was received for every " @@ -186,28 +190,18 @@ msgstr "" "`task_done` fue recibido por cada ítem que ha sido :meth:`~Queue.put` en la " "cola." -#: ../Doc/library/asyncio-queue.rst:105 +#: ../Doc/library/asyncio-queue.rst:108 msgid "" "Raises :exc:`ValueError` if called more times than there were items placed " "in the queue." msgstr "" "Lanza :exc:`ValueError` si fue llamado más veces que los ítems en la cola." -#: ../Doc/library/asyncio-queue.rst:110 -msgid "" -"The ``loop`` parameter. This function has been implicitly getting the " -"current running loop since 3.7. See :ref:`What's New in 3.10's Removed " -"section ` for more information." -msgstr "" -"El parámetro ``loop``. Esta función ha estado obteniendo implícitamente el " -"bucle actual en ejecución desde 3.7. Consultar :ref:`la sección Eliminado en " -"¿Qué hay de nuevo en 3.10? ` para más información." - -#: ../Doc/library/asyncio-queue.rst:117 +#: ../Doc/library/asyncio-queue.rst:113 msgid "Priority Queue" msgstr "Cola de prioridad" -#: ../Doc/library/asyncio-queue.rst:121 +#: ../Doc/library/asyncio-queue.rst:117 msgid "" "A variant of :class:`Queue`; retrieves entries in priority order (lowest " "first)." @@ -215,16 +209,16 @@ msgstr "" "Una variante de :class:`Queue`; recupera entradas en su orden de prioridad " "(el más bajo primero)." -#: ../Doc/library/asyncio-queue.rst:124 +#: ../Doc/library/asyncio-queue.rst:120 msgid "Entries are typically tuples of the form ``(priority_number, data)``." msgstr "" "Las entradas son típicamente tuplas de la forma ``(priority_number, data)``." -#: ../Doc/library/asyncio-queue.rst:129 +#: ../Doc/library/asyncio-queue.rst:125 msgid "LIFO Queue" msgstr "Cola UEPA (o *LIFO* en inglés)" -#: ../Doc/library/asyncio-queue.rst:133 +#: ../Doc/library/asyncio-queue.rst:129 msgid "" "A variant of :class:`Queue` that retrieves most recently added entries first " "(last in, first out)." @@ -232,11 +226,11 @@ msgstr "" "Una variante de una :class:`Queue` que recupera primero el elemento agregado " "más reciente (último en entrar, primero en salir)." -#: ../Doc/library/asyncio-queue.rst:138 +#: ../Doc/library/asyncio-queue.rst:134 msgid "Exceptions" msgstr "Excepciones" -#: ../Doc/library/asyncio-queue.rst:142 +#: ../Doc/library/asyncio-queue.rst:138 msgid "" "This exception is raised when the :meth:`~Queue.get_nowait` method is called " "on an empty queue." @@ -244,7 +238,7 @@ msgstr "" "Esta excepción es lanzada cuando el método :meth:`~Queue.get_nowait` es " "ejecutado en una cola vacía." -#: ../Doc/library/asyncio-queue.rst:148 +#: ../Doc/library/asyncio-queue.rst:144 msgid "" "Exception raised when the :meth:`~Queue.put_nowait` method is called on a " "queue that has reached its *maxsize*." @@ -252,13 +246,23 @@ msgstr "" "Las excepciones son lanzadas cuando el método :meth:`~Queue.put_nowait` es " "lanzado en una cola que ha alcanzado su *maxsize*." -#: ../Doc/library/asyncio-queue.rst:153 +#: ../Doc/library/asyncio-queue.rst:149 msgid "Examples" msgstr "Ejemplos" -#: ../Doc/library/asyncio-queue.rst:157 +#: ../Doc/library/asyncio-queue.rst:153 msgid "" "Queues can be used to distribute workload between several concurrent tasks::" msgstr "" "Las colas pueden ser usadas para distribuir cargas de trabajo entre " "múltiples tareas concurrentes::" + +#~ msgid "" +#~ "The ``loop`` parameter. This function has been implicitly getting the " +#~ "current running loop since 3.7. See :ref:`What's New in 3.10's Removed " +#~ "section ` for more information." +#~ msgstr "" +#~ "El parámetro ``loop``. Esta función ha estado obteniendo implícitamente " +#~ "el bucle actual en ejecución desde 3.7. Consultar :ref:`la sección " +#~ "Eliminado en ¿Qué hay de nuevo en 3.10? ` para más " +#~ "información." diff --git a/library/asyncio-runner.po b/library/asyncio-runner.po new file mode 100644 index 0000000000..5307e208d5 --- /dev/null +++ b/library/asyncio-runner.po @@ -0,0 +1,205 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2001-2022, Python Software Foundation +# This file is distributed under the same license as the Python en Español +# package. +# FIRST AUTHOR , 2022. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Python en Español 3.11\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-10-25 19:47+0200\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" +"Generated-By: Babel 2.10.3\n" + +#: ../Doc/library/asyncio-runner.rst:6 +msgid "Runners" +msgstr "" + +#: ../Doc/library/asyncio-runner.rst:8 +msgid "**Source code:** :source:`Lib/asyncio/runners.py`" +msgstr "" + +#: ../Doc/library/asyncio-runner.rst:11 +msgid "" +"This section outlines high-level asyncio primitives to run asyncio code." +msgstr "" + +#: ../Doc/library/asyncio-runner.rst:13 +msgid "" +"They are built on top of an :ref:`event loop ` with the " +"aim to simplify async code usage for common wide-spread scenarios." +msgstr "" + +#: ../Doc/library/asyncio-runner.rst:23 +msgid "Running an asyncio Program" +msgstr "" + +#: ../Doc/library/asyncio-runner.rst:27 +msgid "Execute the :term:`coroutine` *coro* and return the result." +msgstr "" + +#: ../Doc/library/asyncio-runner.rst:29 +msgid "" +"This function runs the passed coroutine, taking care of managing the asyncio " +"event loop, *finalizing asynchronous generators*, and closing the threadpool." +msgstr "" + +#: ../Doc/library/asyncio-runner.rst:33 ../Doc/library/asyncio-runner.rst:103 +msgid "" +"This function cannot be called when another asyncio event loop is running in " +"the same thread." +msgstr "" + +#: ../Doc/library/asyncio-runner.rst:36 ../Doc/library/asyncio-runner.rst:73 +msgid "" +"If *debug* is ``True``, the event loop will be run in debug mode. ``False`` " +"disables debug mode explicitly. ``None`` is used to respect the global :ref:" +"`asyncio-debug-mode` settings." +msgstr "" + +#: ../Doc/library/asyncio-runner.rst:40 +msgid "" +"This function always creates a new event loop and closes it at the end. It " +"should be used as a main entry point for asyncio programs, and should " +"ideally only be called once." +msgstr "" + +#: ../Doc/library/asyncio-runner.rst:44 +msgid "Example::" +msgstr "" + +#: ../Doc/library/asyncio-runner.rst:54 +msgid "Updated to use :meth:`loop.shutdown_default_executor`." +msgstr "" + +#: ../Doc/library/asyncio-runner.rst:59 +msgid "" +"*debug* is ``None`` by default to respect the global debug mode settings." +msgstr "" + +#: ../Doc/library/asyncio-runner.rst:63 +msgid "Runner context manager" +msgstr "" + +#: ../Doc/library/asyncio-runner.rst:67 +msgid "" +"A context manager that simplifies *multiple* async function calls in the " +"same context." +msgstr "" + +#: ../Doc/library/asyncio-runner.rst:70 +msgid "" +"Sometimes several top-level async functions should be called in the same :" +"ref:`event loop ` and :class:`contextvars.Context`." +msgstr "" + +#: ../Doc/library/asyncio-runner.rst:77 +msgid "" +"*loop_factory* could be used for overriding the loop creation. It is the " +"responsibility of the *loop_factory* to set the created loop as the current " +"one. By default :func:`asyncio.new_event_loop` is used and set as current " +"event loop with :func:`asyncio.set_event_loop` if *loop_factory* is ``None``." +msgstr "" + +#: ../Doc/library/asyncio-runner.rst:82 +msgid "" +"Basically, :func:`asyncio.run()` example can be rewritten with the runner " +"usage::" +msgstr "" + +#: ../Doc/library/asyncio-runner.rst:95 +msgid "Run a :term:`coroutine ` *coro* in the embedded loop." +msgstr "" + +#: ../Doc/library/asyncio-runner.rst:97 +msgid "Return the coroutine's result or raise its exception." +msgstr "" + +#: ../Doc/library/asyncio-runner.rst:99 +msgid "" +"An optional keyword-only *context* argument allows specifying a custom :" +"class:`contextvars.Context` for the *coro* to run in. The runner's default " +"context is used if ``None``." +msgstr "" + +#: ../Doc/library/asyncio-runner.rst:108 +msgid "Close the runner." +msgstr "" + +#: ../Doc/library/asyncio-runner.rst:110 +msgid "" +"Finalize asynchronous generators, shutdown default executor, close the event " +"loop and release embedded :class:`contextvars.Context`." +msgstr "" + +#: ../Doc/library/asyncio-runner.rst:115 +msgid "Return the event loop associated with the runner instance." +msgstr "" + +#: ../Doc/library/asyncio-runner.rst:119 +msgid "" +":class:`Runner` uses the lazy initialization strategy, its constructor " +"doesn't initialize underlying low-level structures." +msgstr "" + +#: ../Doc/library/asyncio-runner.rst:122 +msgid "" +"Embedded *loop* and *context* are created at the :keyword:`with` body " +"entering or the first call of :meth:`run` or :meth:`get_loop`." +msgstr "" + +#: ../Doc/library/asyncio-runner.rst:127 +msgid "Handling Keyboard Interruption" +msgstr "" + +#: ../Doc/library/asyncio-runner.rst:131 +msgid "" +"When :const:`signal.SIGINT` is raised by :kbd:`Ctrl-C`, :exc:" +"`KeyboardInterrupt` exception is raised in the main thread by default. " +"However this doesn't work with :mod:`asyncio` because it can interrupt " +"asyncio internals and can hang the program from exiting." +msgstr "" + +#: ../Doc/library/asyncio-runner.rst:136 +msgid "" +"To mitigate this issue, :mod:`asyncio` handles :const:`signal.SIGINT` as " +"follows:" +msgstr "" + +#: ../Doc/library/asyncio-runner.rst:138 +msgid "" +":meth:`asyncio.Runner.run` installs a custom :const:`signal.SIGINT` handler " +"before any user code is executed and removes it when exiting from the " +"function." +msgstr "" + +#: ../Doc/library/asyncio-runner.rst:140 +msgid "" +"The :class:`~asyncio.Runner` creates the main task for the passed coroutine " +"for its execution." +msgstr "" + +#: ../Doc/library/asyncio-runner.rst:142 +msgid "" +"When :const:`signal.SIGINT` is raised by :kbd:`Ctrl-C`, the custom signal " +"handler cancels the main task by calling :meth:`asyncio.Task.cancel` which " +"raises :exc:`asyncio.CancelledError` inside the main task. This causes the " +"Python stack to unwind, ``try/except`` and ``try/finally`` blocks can be " +"used for resource cleanup. After the main task is cancelled, :meth:`asyncio." +"Runner.run` raises :exc:`KeyboardInterrupt`." +msgstr "" + +#: ../Doc/library/asyncio-runner.rst:148 +msgid "" +"A user could write a tight loop which cannot be interrupted by :meth:" +"`asyncio.Task.cancel`, in which case the second following :kbd:`Ctrl-C` " +"immediately raises the :exc:`KeyboardInterrupt` without cancelling the main " +"task." +msgstr "" diff --git a/library/asyncio-stream.po b/library/asyncio-stream.po index d392c67f41..c52c06f3ea 100644 --- a/library/asyncio-stream.po +++ b/library/asyncio-stream.po @@ -10,16 +10,16 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2020-08-18 09:17-0500\n" "Last-Translator: Gustavo Huarcaya \n" -"Language-Team: python-doc-es\n" "Language: es\n" +"Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" -"Generated-By: Babel 2.9.1\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/library/asyncio-stream.rst:7 msgid "Streams" @@ -61,7 +61,7 @@ msgstr "" "Las siguientes funciones asyncio de nivel superior se pueden utilizar para " "crear y trabajar con *streams*:" -#: ../Doc/library/asyncio-stream.rst:56 +#: ../Doc/library/asyncio-stream.rst:57 msgid "" "Establish a network connection and return a pair of ``(reader, writer)`` " "objects." @@ -69,7 +69,7 @@ msgstr "" "Establece una conexión de red y retorna un par de objetos ``(reader, " "writer)``." -#: ../Doc/library/asyncio-stream.rst:59 +#: ../Doc/library/asyncio-stream.rst:60 msgid "" "The returned *reader* and *writer* objects are instances of :class:" "`StreamReader` and :class:`StreamWriter` classes." @@ -77,7 +77,7 @@ msgstr "" "Los objetos retornados *reader* y *writer* son instancias de las clases :" "class:`StreamReader` y :class:`StreamWriter`." -#: ../Doc/library/asyncio-stream.rst:62 ../Doc/library/asyncio-stream.rst:100 +#: ../Doc/library/asyncio-stream.rst:63 ../Doc/library/asyncio-stream.rst:105 msgid "" "*limit* determines the buffer size limit used by the returned :class:" "`StreamReader` instance. By default the *limit* is set to 64 KiB." @@ -86,7 +86,7 @@ msgstr "" "de :class:`StreamReader` retornada. De forma predeterminada, *limit* está " "establecido en 64 KiB." -#: ../Doc/library/asyncio-stream.rst:66 +#: ../Doc/library/asyncio-stream.rst:67 msgid "" "The rest of the arguments are passed directly to :meth:`loop." "create_connection`." @@ -94,26 +94,32 @@ msgstr "" "El resto de los argumentos se pasan directamente a :meth:`loop." "create_connection`." -#: ../Doc/library/asyncio-stream.rst:71 ../Doc/library/asyncio-stream.rst:136 -msgid "The *ssl_handshake_timeout* parameter." +#: ../Doc/library/asyncio-stream.rst:72 ../Doc/library/asyncio-stream.rst:140 +msgid "" +"The *sock* argument transfers ownership of the socket to the :class:" +"`StreamWriter` created. To close the socket, call its :meth:`~asyncio." +"StreamWriter.close` method." +msgstr "" + +#: ../Doc/library/asyncio-stream.rst:76 +#, fuzzy +msgid "Added the *ssl_handshake_timeout* parameter." msgstr "El parámetro *ssl_handshake_timeout*." -#: ../Doc/library/asyncio-stream.rst:75 ../Doc/library/asyncio-stream.rst:113 -#: ../Doc/library/asyncio-stream.rst:144 ../Doc/library/asyncio-stream.rst:172 -msgid "" -"The ``loop`` parameter. This function has been implicitly getting the " -"current running loop since 3.7. See :ref:`What's New in 3.10's Removed " -"section ` for more information." +#: ../Doc/library/asyncio-stream.rst:79 +msgid "Added *happy_eyeballs_delay* and *interleave* parameters." msgstr "" -"El parámetro ``loop``. Esta función ha estado obteniendo implícitamente el " -"bucle en ejecución actual desde 3.7. Consulte :ref:`What's New in 3.10's " -"Removed section ` para obtener más información." -#: ../Doc/library/asyncio-stream.rst:89 +#: ../Doc/library/asyncio-stream.rst:82 ../Doc/library/asyncio-stream.rst:121 +#: ../Doc/library/asyncio-stream.rst:150 ../Doc/library/asyncio-stream.rst:176 +msgid "Removed the *loop* parameter." +msgstr "" + +#: ../Doc/library/asyncio-stream.rst:94 msgid "Start a socket server." msgstr "Inicia un servidor socket." -#: ../Doc/library/asyncio-stream.rst:91 +#: ../Doc/library/asyncio-stream.rst:96 msgid "" "The *client_connected_cb* callback is called whenever a new client " "connection is established. It receives a ``(reader, writer)`` pair as two " @@ -125,7 +131,7 @@ msgstr "" "argumentos, instancias de las clases :class:`StreamReader` y :class:" "`StreamWriter`." -#: ../Doc/library/asyncio-stream.rst:96 +#: ../Doc/library/asyncio-stream.rst:101 msgid "" "*client_connected_cb* can be a plain callable or a :ref:`coroutine function " "`; if it is a coroutine function, it will be automatically " @@ -135,70 +141,81 @@ msgstr "" "`corrutina `; si es una función de corrutina, se programará " "automáticamente como un :class:`Task`." -#: ../Doc/library/asyncio-stream.rst:104 +#: ../Doc/library/asyncio-stream.rst:109 msgid "" "The rest of the arguments are passed directly to :meth:`loop.create_server`." msgstr "" "El resto de los argumentos se pasan directamente a :meth:`loop." "create_server`." -#: ../Doc/library/asyncio-stream.rst:109 ../Doc/library/asyncio-stream.rst:164 -msgid "The *ssl_handshake_timeout* and *start_serving* parameters." +#: ../Doc/library/asyncio-stream.rst:114 ../Doc/library/asyncio-stream.rst:166 +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." +msgstr "" + +#: ../Doc/library/asyncio-stream.rst:118 +#, fuzzy +msgid "Added the *ssl_handshake_timeout* and *start_serving* parameters." msgstr "Los parámetros *ssl_handshake_timeout* y *start_serving*." -#: ../Doc/library/asyncio-stream.rst:120 +#: ../Doc/library/asyncio-stream.rst:126 msgid "Unix Sockets" msgstr "Sockets Unix" -#: ../Doc/library/asyncio-stream.rst:125 +#: ../Doc/library/asyncio-stream.rst:131 msgid "" "Establish a Unix socket connection and return a pair of ``(reader, writer)``." msgstr "" "Establece una conexión de socket Unix y retorna un par de ``(reader, " "writer)``." -#: ../Doc/library/asyncio-stream.rst:128 +#: ../Doc/library/asyncio-stream.rst:134 msgid "Similar to :func:`open_connection` but operates on Unix sockets." msgstr "Similar a :func:`open_connection` pero opera en sockets Unix." -#: ../Doc/library/asyncio-stream.rst:130 +#: ../Doc/library/asyncio-stream.rst:136 msgid "See also the documentation of :meth:`loop.create_unix_connection`." msgstr "" "Consulte también la documentación de :meth:`loop.create_unix_connection`." -#: ../Doc/library/asyncio-stream.rst:133 ../Doc/library/asyncio-stream.rst:161 +#: ../Doc/library/asyncio-stream.rst:145 ../Doc/library/asyncio-stream.rst:171 msgid ":ref:`Availability `: Unix." msgstr ":ref:`Disponibilidad `: Unix." -#: ../Doc/library/asyncio-stream.rst:140 -msgid "The *path* parameter can now be a :term:`path-like object`" +#: ../Doc/library/asyncio-stream.rst:146 +#, fuzzy +msgid "" +"Added the *ssl_handshake_timeout* parameter. The *path* parameter can now be " +"a :term:`path-like object`" msgstr "" "El parámetro *path* ahora puede ser un objeto similar a una ruta (:term:" "`path-like object`)" -#: ../Doc/library/asyncio-stream.rst:154 +#: ../Doc/library/asyncio-stream.rst:158 msgid "Start a Unix socket server." msgstr "Inicia un servidor socket Unix." -#: ../Doc/library/asyncio-stream.rst:156 +#: ../Doc/library/asyncio-stream.rst:160 msgid "Similar to :func:`start_server` but works with Unix sockets." msgstr "Similar a :func:`start_server` pero funciona con sockets Unix." -#: ../Doc/library/asyncio-stream.rst:158 +#: ../Doc/library/asyncio-stream.rst:162 msgid "See also the documentation of :meth:`loop.create_unix_server`." msgstr "Consulte también la documentación de :meth:`loop.create_unix_server`." -#: ../Doc/library/asyncio-stream.rst:168 -msgid "The *path* parameter can now be a :term:`path-like object`." -msgstr "" -"El parámetro *path* ahora puede ser un objeto similar a una ruta (:term:" -"`path-like object`)." +#: ../Doc/library/asyncio-stream.rst:172 +#, fuzzy +msgid "" +"Added the *ssl_handshake_timeout* and *start_serving* parameters. The *path* " +"parameter can now be a :term:`path-like object`." +msgstr "Los parámetros *ssl_handshake_timeout* y *start_serving*." -#: ../Doc/library/asyncio-stream.rst:179 +#: ../Doc/library/asyncio-stream.rst:181 msgid "StreamReader" msgstr "StreamReader" -#: ../Doc/library/asyncio-stream.rst:183 +#: ../Doc/library/asyncio-stream.rst:185 msgid "" "Represents a reader object that provides APIs to read data from the IO " "stream." @@ -206,7 +223,7 @@ msgstr "" "Representa un objeto lector que proporciona APIs para leer datos del flujo " "de E/S." -#: ../Doc/library/asyncio-stream.rst:186 +#: ../Doc/library/asyncio-stream.rst:188 msgid "" "It is not recommended to instantiate *StreamReader* objects directly; use :" "func:`open_connection` and :func:`start_server` instead." @@ -214,7 +231,7 @@ msgstr "" "No se recomienda crear instancias de objetos *StreamReader* directamente; " "utilice :func:`open_connection` y :func:`start_server` en su lugar." -#: ../Doc/library/asyncio-stream.rst:192 +#: ../Doc/library/asyncio-stream.rst:194 msgid "" "Read up to *n* bytes. If *n* is not provided, or set to ``-1``, read until " "EOF and return all read bytes." @@ -222,7 +239,7 @@ msgstr "" "Lee hasta *n* bytes. Si no se proporciona *n*, o se establece en ``-1``, lee " "hasta EOF (final del archivo) y retorna todos los bytes leídos." -#: ../Doc/library/asyncio-stream.rst:195 +#: ../Doc/library/asyncio-stream.rst:197 msgid "" "If EOF was received and the internal buffer is empty, return an empty " "``bytes`` object." @@ -230,14 +247,14 @@ msgstr "" "Si se recibió EOF (final del archivo) y el búfer interno está vacío, retorna " "un objeto de ``bytes`` vacío." -#: ../Doc/library/asyncio-stream.rst:200 +#: ../Doc/library/asyncio-stream.rst:202 msgid "" "Read one line, where \"line\" is a sequence of bytes ending with ``\\n``." msgstr "" -"Lea una línea, donde \"línea\" es una secuencia de bytes que termina en ``" -"\\n``." +"Lea una línea, donde \"línea\" es una secuencia de bytes que termina en " +"``\\n``." -#: ../Doc/library/asyncio-stream.rst:203 +#: ../Doc/library/asyncio-stream.rst:205 msgid "" "If EOF is received and ``\\n`` was not found, the method returns partially " "read data." @@ -245,7 +262,7 @@ msgstr "" "Si se recibe EOF (final del archivo) y no se encontró ``\\n``, el método " "retorna datos leídos parcialmente." -#: ../Doc/library/asyncio-stream.rst:206 +#: ../Doc/library/asyncio-stream.rst:208 msgid "" "If EOF is received and the internal buffer is empty, return an empty " "``bytes`` object." @@ -253,11 +270,11 @@ msgstr "" "Si se recibe EOF (final de archivo) y el búfer interno está vacío, retorna " "un objeto de ``bytes`` vacío." -#: ../Doc/library/asyncio-stream.rst:211 +#: ../Doc/library/asyncio-stream.rst:213 msgid "Read exactly *n* bytes." msgstr "Lee exactamente *n* bytes." -#: ../Doc/library/asyncio-stream.rst:213 +#: ../Doc/library/asyncio-stream.rst:215 msgid "" "Raise an :exc:`IncompleteReadError` if EOF is reached before *n* can be " "read. Use the :attr:`IncompleteReadError.partial` attribute to get the " @@ -267,12 +284,12 @@ msgstr "" "antes de que se pueda leer *n*. Utilice el atributo :attr:" "`IncompleteReadError.partial` para obtener los datos leídos parcialmente." -#: ../Doc/library/asyncio-stream.rst:219 +#: ../Doc/library/asyncio-stream.rst:221 msgid "Read data from the stream until *separator* is found." msgstr "" "Lee datos de la secuencia hasta que se encuentre el separador (*separator*)." -#: ../Doc/library/asyncio-stream.rst:221 +#: ../Doc/library/asyncio-stream.rst:223 msgid "" "On success, the data and separator will be removed from the internal buffer " "(consumed). Returned data will include the separator at the end." @@ -280,7 +297,7 @@ msgstr "" "En caso de éxito, los datos y el separador se eliminarán del búfer interno " "(consumido). Los datos retornados incluirán el separador al final." -#: ../Doc/library/asyncio-stream.rst:225 +#: ../Doc/library/asyncio-stream.rst:227 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 " @@ -290,7 +307,7 @@ msgstr "" "genera una excepción :exc:`LimitOverrunError` y los datos se dejan en el " "búfer interno y se pueden leer nuevamente." -#: ../Doc/library/asyncio-stream.rst:229 +#: ../Doc/library/asyncio-stream.rst:231 msgid "" "If EOF is reached before the complete separator is found, an :exc:" "`IncompleteReadError` exception is raised, and the internal buffer is " @@ -302,23 +319,23 @@ msgstr "" "el búfer interno. El atributo :attr:`IncompleteReadError.partial` puede " "contener una parte del separador." -#: ../Doc/library/asyncio-stream.rst:238 +#: ../Doc/library/asyncio-stream.rst:240 msgid "Return ``True`` if the buffer is empty and :meth:`feed_eof` was called." msgstr "" "Retorna ``True`` si el buffer está vacío y :meth:`feed_eof` fue llamado." -#: ../Doc/library/asyncio-stream.rst:243 +#: ../Doc/library/asyncio-stream.rst:245 msgid "StreamWriter" msgstr "StreamWriter" -#: ../Doc/library/asyncio-stream.rst:247 +#: ../Doc/library/asyncio-stream.rst:249 msgid "" "Represents a writer object that provides APIs to write data to the IO stream." msgstr "" "Representa un objeto de escritura que proporciona APIs para escribir datos " "en el flujo de E/S." -#: ../Doc/library/asyncio-stream.rst:250 +#: ../Doc/library/asyncio-stream.rst:252 msgid "" "It is not recommended to instantiate *StreamWriter* objects directly; use :" "func:`open_connection` and :func:`start_server` instead." @@ -326,7 +343,7 @@ msgstr "" "No se recomienda crear instancias de objetos *StreamWriter* directamente; " "use :func:`open_connection` y :func:`start_server` en su lugar." -#: ../Doc/library/asyncio-stream.rst:256 +#: ../Doc/library/asyncio-stream.rst:258 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 " @@ -336,11 +353,11 @@ msgstr "" "inmediatamente. Si eso falla, los datos se ponen en cola en un búfer de " "escritura interno hasta que se puedan enviar." -#: ../Doc/library/asyncio-stream.rst:260 ../Doc/library/asyncio-stream.rst:272 +#: ../Doc/library/asyncio-stream.rst:262 ../Doc/library/asyncio-stream.rst:274 msgid "The method should be used along with the ``drain()`` method::" msgstr "El método debe usarse junto con el método ``drain()``::" -#: ../Doc/library/asyncio-stream.rst:267 +#: ../Doc/library/asyncio-stream.rst:269 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 " @@ -350,15 +367,15 @@ msgstr "" "subyacente inmediatamente. Si eso falla, los datos se ponen en cola en un " "búfer de escritura interno hasta que se puedan enviar." -#: ../Doc/library/asyncio-stream.rst:279 +#: ../Doc/library/asyncio-stream.rst:281 msgid "The method closes the stream and the underlying socket." msgstr "El método cierra la secuencia y el socket subyacente." -#: ../Doc/library/asyncio-stream.rst:281 +#: ../Doc/library/asyncio-stream.rst:283 msgid "The method should be used along with the ``wait_closed()`` method::" msgstr "El método debe usarse junto con el método ``wait_closed()``::" -#: ../Doc/library/asyncio-stream.rst:288 +#: ../Doc/library/asyncio-stream.rst:290 msgid "" "Return ``True`` if the underlying transport supports the :meth:`write_eof` " "method, ``False`` otherwise." @@ -366,18 +383,18 @@ msgstr "" "Retorna ``True`` si el transporte subyacente admite el método :meth:" "`write_eof`, ``False`` en caso contrario." -#: ../Doc/library/asyncio-stream.rst:293 +#: ../Doc/library/asyncio-stream.rst:295 msgid "" "Close the write end of the stream after the buffered write data is flushed." msgstr "" "Cierra la escritura de la secuencia después de que se vacíen los datos de " "escritura almacenados en búfer." -#: ../Doc/library/asyncio-stream.rst:298 +#: ../Doc/library/asyncio-stream.rst:300 msgid "Return the underlying asyncio transport." msgstr "Retorna el transporte asyncio subyacente." -#: ../Doc/library/asyncio-stream.rst:302 +#: ../Doc/library/asyncio-stream.rst:304 msgid "" "Access optional transport information; see :meth:`BaseTransport." "get_extra_info` for details." @@ -385,13 +402,13 @@ msgstr "" "Accede a información de transporte opcional; consulte :meth:`BaseTransport." "get_extra_info` para obtener más detalles." -#: ../Doc/library/asyncio-stream.rst:307 +#: ../Doc/library/asyncio-stream.rst:309 msgid "Wait until it is appropriate to resume writing to the stream. Example::" msgstr "" "Espera hasta que sea apropiado reanudar la escritura en la transmisión. " "Ejemplo::" -#: ../Doc/library/asyncio-stream.rst:313 +#: ../Doc/library/asyncio-stream.rst:315 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()* " @@ -405,17 +422,42 @@ msgstr "" "marca de agua baja y se pueda reanudar la escritura. Cuando no hay nada que " "esperar, :meth:`drain` regresa inmediatamente." -#: ../Doc/library/asyncio-stream.rst:322 +#: ../Doc/library/asyncio-stream.rst:325 +msgid "Upgrade an existing stream-based connection to TLS." +msgstr "" + +#: ../Doc/library/asyncio-stream.rst:327 +msgid "Parameters:" +msgstr "" + +#: ../Doc/library/asyncio-stream.rst:329 +msgid "*sslcontext*: a configured instance of :class:`~ssl.SSLContext`." +msgstr "" + +#: ../Doc/library/asyncio-stream.rst:331 +msgid "" +"*server_hostname*: sets or overrides the host name that the target server's " +"certificate will be matched against." +msgstr "" + +#: ../Doc/library/asyncio-stream.rst:334 +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 "" + +#: ../Doc/library/asyncio-stream.rst:342 msgid "" "Return ``True`` if the stream is closed or in the process of being closed." msgstr "" "Retorna ``True`` si la secuencia está cerrada o en proceso de cerrarse." -#: ../Doc/library/asyncio-stream.rst:329 +#: ../Doc/library/asyncio-stream.rst:349 msgid "Wait until the stream is closed." msgstr "Espera hasta que se cierre la secuencia." -#: ../Doc/library/asyncio-stream.rst:331 +#: ../Doc/library/asyncio-stream.rst:351 msgid "" "Should be called after :meth:`close` to wait until the underlying connection " "is closed." @@ -423,19 +465,19 @@ msgstr "" "Debería llamarse después de :meth:`close` para esperar hasta que se cierre " "la conexión subyacente." -#: ../Doc/library/asyncio-stream.rst:338 +#: ../Doc/library/asyncio-stream.rst:358 msgid "Examples" msgstr "Ejemplos" -#: ../Doc/library/asyncio-stream.rst:343 +#: ../Doc/library/asyncio-stream.rst:363 msgid "TCP echo client using streams" msgstr "Cliente eco TCP usando *streams*" -#: ../Doc/library/asyncio-stream.rst:345 +#: ../Doc/library/asyncio-stream.rst:365 msgid "TCP echo client using the :func:`asyncio.open_connection` function::" msgstr "Cliente eco TCP usando la función :func:`asyncio.open_connection`::" -#: ../Doc/library/asyncio-stream.rst:367 +#: ../Doc/library/asyncio-stream.rst:388 msgid "" "The :ref:`TCP echo client protocol " "` example uses the low-level :meth:" @@ -445,15 +487,15 @@ msgstr "" "` utiliza el método :meth:`loop." "create_connection` de bajo nivel." -#: ../Doc/library/asyncio-stream.rst:374 +#: ../Doc/library/asyncio-stream.rst:395 msgid "TCP echo server using streams" msgstr "Servidor eco TCP usando *streams*" -#: ../Doc/library/asyncio-stream.rst:376 +#: ../Doc/library/asyncio-stream.rst:397 msgid "TCP echo server using the :func:`asyncio.start_server` function::" msgstr "Servidor eco TCP usando la función :func:`asyncio.start_server`::" -#: ../Doc/library/asyncio-stream.rst:409 +#: ../Doc/library/asyncio-stream.rst:430 msgid "" "The :ref:`TCP echo server protocol " "` example uses the :meth:`loop." @@ -463,30 +505,30 @@ msgstr "" "` utiliza el método :meth:`loop." "create_server`." -#: ../Doc/library/asyncio-stream.rst:414 +#: ../Doc/library/asyncio-stream.rst:435 msgid "Get HTTP headers" msgstr "Obtener encabezados HTTP" -#: ../Doc/library/asyncio-stream.rst:416 +#: ../Doc/library/asyncio-stream.rst:437 msgid "" "Simple example querying HTTP headers of the URL passed on the command line::" msgstr "" "Ejemplo simple de consulta de encabezados HTTP de la URL pasada en la línea " "de comando::" -#: ../Doc/library/asyncio-stream.rst:454 +#: ../Doc/library/asyncio-stream.rst:475 msgid "Usage::" msgstr "Uso::" -#: ../Doc/library/asyncio-stream.rst:458 +#: ../Doc/library/asyncio-stream.rst:479 msgid "or with HTTPS::" msgstr "o con HTTPS::" -#: ../Doc/library/asyncio-stream.rst:466 +#: ../Doc/library/asyncio-stream.rst:487 msgid "Register an open socket to wait for data using streams" msgstr "Registrar un socket abierto para esperar datos usando *streams*" -#: ../Doc/library/asyncio-stream.rst:468 +#: ../Doc/library/asyncio-stream.rst:489 msgid "" "Coroutine waiting until a socket receives data using the :func:" "`open_connection` function::" @@ -494,7 +536,7 @@ msgstr "" "Corutina esperando hasta que un socket reciba datos usando la función :func:" "`open_connection` function::" -#: ../Doc/library/asyncio-stream.rst:502 +#: ../Doc/library/asyncio-stream.rst:523 msgid "" "The :ref:`register an open socket to wait for data using a protocol " "` example uses a low-level protocol and " @@ -504,7 +546,7 @@ msgstr "" "un protocolo ` utiliza un protocolo de " "bajo nivel y el método :meth:`loop.create_connection`." -#: ../Doc/library/asyncio-stream.rst:506 +#: ../Doc/library/asyncio-stream.rst:527 msgid "" "The :ref:`watch a file descriptor for read events " "` example uses the low-level :meth:`loop." @@ -513,3 +555,18 @@ msgstr "" "El ejemplo de :ref:`observar un descriptor de archivo para leer eventos " "` utiliza el método :meth:`loop.add_reader` de " "bajo nivel para ver un descriptor de archivo." + +#~ msgid "" +#~ "The ``loop`` parameter. This function has been implicitly getting the " +#~ "current running loop since 3.7. See :ref:`What's New in 3.10's Removed " +#~ "section ` for more information." +#~ msgstr "" +#~ "El parámetro ``loop``. Esta función ha estado obteniendo implícitamente " +#~ "el bucle en ejecución actual desde 3.7. Consulte :ref:`What's New in " +#~ "3.10's Removed section ` para obtener más " +#~ "información." + +#~ msgid "The *path* parameter can now be a :term:`path-like object`." +#~ msgstr "" +#~ "El parámetro *path* ahora puede ser un objeto similar a una ruta (:term:" +#~ "`path-like object`)." diff --git a/library/asyncio-subprocess.po b/library/asyncio-subprocess.po index 14ba0a0443..cad8b4f6fb 100644 --- a/library/asyncio-subprocess.po +++ b/library/asyncio-subprocess.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-12-12 18:54-0300\n" "Last-Translator: Cristián Maureira-Fredes \n" "Language: es\n" @@ -19,8 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/library/asyncio-subprocess.rst:7 msgid "Subprocesses" @@ -80,7 +79,7 @@ msgid "Create a subprocess." msgstr "Crea un sub-proceso." #: ../Doc/library/asyncio-subprocess.rst:69 -#: ../Doc/library/asyncio-subprocess.rst:91 +#: ../Doc/library/asyncio-subprocess.rst:87 msgid "" "The *limit* argument sets the buffer limit for :class:`StreamReader` " "wrappers for :attr:`Process.stdout` and :attr:`Process.stderr` (if :attr:" @@ -91,7 +90,7 @@ msgstr "" "(si se pasa :attr:`subprocess.PIPE` a los argumentos *stdout* y *stderr*)." #: ../Doc/library/asyncio-subprocess.rst:73 -#: ../Doc/library/asyncio-subprocess.rst:95 +#: ../Doc/library/asyncio-subprocess.rst:91 msgid "Return a :class:`~asyncio.subprocess.Process` instance." msgstr "Retorna una instancia de :class:`~asyncio.subprocess.Process`." @@ -102,29 +101,23 @@ msgstr "" "Véase la documentación de :meth:`loop.subprocess_exec` para los otros " "parámetros." -#: ../Doc/library/asyncio-subprocess.rst:80 -#: ../Doc/library/asyncio-subprocess.rst:111 -msgid "" -"The ``loop`` parameter. This function has been implicitly getting the " -"current running loop since 3.7. See :ref:`What's New in 3.10's Removed " -"section ` for more information." +#: ../Doc/library/asyncio-subprocess.rst:78 +#: ../Doc/library/asyncio-subprocess.rst:105 +msgid "Removed the *loop* parameter." msgstr "" -"El parámetro ``loop``. Esta función ha estado obteniendo implícitamente el " -"bucle actual en ejecución desde 3.7. Consultar :ref:`la sección Eliminado en " -"¿Qué hay de nuevo en 3.10? ` para más información." -#: ../Doc/library/asyncio-subprocess.rst:89 +#: ../Doc/library/asyncio-subprocess.rst:85 msgid "Run the *cmd* shell command." msgstr "Ejecuta el comando de shell *cmd*." -#: ../Doc/library/asyncio-subprocess.rst:97 +#: ../Doc/library/asyncio-subprocess.rst:93 msgid "" "See the documentation of :meth:`loop.subprocess_shell` for other parameters." msgstr "" "Véase la documentación de :meth:`loop.subprocess_shell` para los otros " "parámetros." -#: ../Doc/library/asyncio-subprocess.rst:102 +#: ../Doc/library/asyncio-subprocess.rst:98 msgid "" "It is the application's responsibility to ensure that all whitespace and " "special characters are quoted appropriately to avoid `shell injection " @@ -141,7 +134,7 @@ msgstr "" "blanco y caracteres especiales de *shell* en cadenas de caracteres a ser " "usadas para construir comandos de *shell*." -#: ../Doc/library/asyncio-subprocess.rst:118 +#: ../Doc/library/asyncio-subprocess.rst:110 msgid "" "Subprocesses are available for Windows if a :class:`ProactorEventLoop` is " "used. See :ref:`Subprocess Support on Windows ` " @@ -151,7 +144,7 @@ msgstr "" "`ProactorEventLoop`. Consulte :ref:`Soporte de subprocesos en Windows " "` para obtener más detalles." -#: ../Doc/library/asyncio-subprocess.rst:124 +#: ../Doc/library/asyncio-subprocess.rst:116 msgid "" "asyncio also has the following *low-level* APIs to work with subprocesses: :" "meth:`loop.subprocess_exec`, :meth:`loop.subprocess_shell`, :meth:`loop." @@ -166,15 +159,15 @@ msgstr "" "transports>` y los :ref:`Sub-procesos de Protocolos `." -#: ../Doc/library/asyncio-subprocess.rst:132 +#: ../Doc/library/asyncio-subprocess.rst:124 msgid "Constants" msgstr "Constantes" -#: ../Doc/library/asyncio-subprocess.rst:136 +#: ../Doc/library/asyncio-subprocess.rst:129 msgid "Can be passed to the *stdin*, *stdout* or *stderr* parameters." msgstr "Se le puede pasar a los parámetros *stding*, *stdout* o *stderr*." -#: ../Doc/library/asyncio-subprocess.rst:138 +#: ../Doc/library/asyncio-subprocess.rst:131 msgid "" "If *PIPE* is passed to *stdin* argument, the :attr:`Process.stdin ` attribute will point to a :class:`StreamWriter` " @@ -184,7 +177,7 @@ msgstr "" "` apuntará a la instancia :class:" "`StreamWriter`." -#: ../Doc/library/asyncio-subprocess.rst:142 +#: ../Doc/library/asyncio-subprocess.rst:135 msgid "" "If *PIPE* is passed to *stdout* or *stderr* arguments, the :attr:`Process." "stdout ` and :attr:`Process.stderr " @@ -196,7 +189,7 @@ msgstr "" "` apuntarán a las instancias :class:" "`StreamReader`." -#: ../Doc/library/asyncio-subprocess.rst:149 +#: ../Doc/library/asyncio-subprocess.rst:143 msgid "" "Special value that can be used as the *stderr* argument and indicates that " "standard error should be redirected into standard output." @@ -204,7 +197,7 @@ msgstr "" "Un valor especial que puede ser usado como el argumento de *stderr* e indica " "que los errores estándar deben ser redireccionados en la salida estándar." -#: ../Doc/library/asyncio-subprocess.rst:154 +#: ../Doc/library/asyncio-subprocess.rst:149 msgid "" "Special value that can be used as the *stdin*, *stdout* or *stderr* argument " "to process creation functions. It indicates that the special file :data:`os." @@ -215,11 +208,11 @@ msgstr "" "archivo especial :data:`os.devnull` será usado para la correspondiente " "transmisión del sub-proceso." -#: ../Doc/library/asyncio-subprocess.rst:160 +#: ../Doc/library/asyncio-subprocess.rst:155 msgid "Interacting with Subprocesses" msgstr "Interactuando con Subprocesos" -#: ../Doc/library/asyncio-subprocess.rst:162 +#: ../Doc/library/asyncio-subprocess.rst:157 msgid "" "Both :func:`create_subprocess_exec` and :func:`create_subprocess_shell` " "functions return instances of the *Process* class. *Process* is a high-" @@ -231,7 +224,7 @@ msgstr "" "*Process* es un envoltorio de alto nivel que permite comunicarse con los " "subprocesos y estar atento a sus términos." -#: ../Doc/library/asyncio-subprocess.rst:169 +#: ../Doc/library/asyncio-subprocess.rst:165 msgid "" "An object that wraps OS processes created by the :func:" "`create_subprocess_exec` and :func:`create_subprocess_shell` functions." @@ -239,7 +232,7 @@ msgstr "" "Un objeto que envuelve procesos del SO creados por las funciones :func:" "`create_subprocess_exec` y :func:`create_subprocess_shell`." -#: ../Doc/library/asyncio-subprocess.rst:173 +#: ../Doc/library/asyncio-subprocess.rst:169 msgid "" "This class is designed to have a similar API to the :class:`subprocess." "Popen` class, but there are some notable differences:" @@ -247,7 +240,7 @@ msgstr "" "Esta clase está diseñada para tener un API similar a la clase :class:" "`subprocess.Popen`, pero hay algunas diferencias notables:" -#: ../Doc/library/asyncio-subprocess.rst:177 +#: ../Doc/library/asyncio-subprocess.rst:173 msgid "" "unlike Popen, Process instances do not have an equivalent to the :meth:" "`~subprocess.Popen.poll` method;" @@ -255,7 +248,7 @@ msgstr "" "a diferencia de Popen, las instancias de Process no tiene un equivalente del " "método :meth:`~subprocess.Popen.poll`;" -#: ../Doc/library/asyncio-subprocess.rst:180 +#: ../Doc/library/asyncio-subprocess.rst:176 msgid "" "the :meth:`~asyncio.subprocess.Process.communicate` and :meth:`~asyncio." "subprocess.Process.wait` methods don't have a *timeout* parameter: use the :" @@ -265,7 +258,7 @@ msgstr "" "`~asyncio.subprocess.Process.wait` no tienen un parámetro *timeout*: use la " "función :func:`wait_for`;" -#: ../Doc/library/asyncio-subprocess.rst:184 +#: ../Doc/library/asyncio-subprocess.rst:180 msgid "" "the :meth:`Process.wait() ` method is " "asynchronous, whereas :meth:`subprocess.Popen.wait` method is implemented as " @@ -275,17 +268,17 @@ msgstr "" "asíncrono, mientras que el método :meth:`subprocess.Popen.wait` es " "implementado como un bucle de espera activa;" -#: ../Doc/library/asyncio-subprocess.rst:188 +#: ../Doc/library/asyncio-subprocess.rst:184 msgid "the *universal_newlines* parameter is not supported." msgstr "el parámetro *universal_newlines* no es compatible." -#: ../Doc/library/asyncio-subprocess.rst:190 +#: ../Doc/library/asyncio-subprocess.rst:186 msgid "This class is :ref:`not thread safe `." msgstr "" "Esta clase no es segura para subprocesos (:ref:`not thread safe `)." -#: ../Doc/library/asyncio-subprocess.rst:192 +#: ../Doc/library/asyncio-subprocess.rst:188 msgid "" "See also the :ref:`Subprocess and Threads ` " "section." @@ -293,15 +286,15 @@ msgstr "" "Véase también la sección :ref:`Subprocesos e Hilos `." -#: ../Doc/library/asyncio-subprocess.rst:197 +#: ../Doc/library/asyncio-subprocess.rst:193 msgid "Wait for the child process to terminate." msgstr "Espera a que el proceso hijo termine." -#: ../Doc/library/asyncio-subprocess.rst:199 +#: ../Doc/library/asyncio-subprocess.rst:195 msgid "Set and return the :attr:`returncode` attribute." msgstr "Define y retorna el atributo :attr:`returncode`." -#: ../Doc/library/asyncio-subprocess.rst:203 +#: ../Doc/library/asyncio-subprocess.rst:199 msgid "" "This method can deadlock when using ``stdout=PIPE`` or ``stderr=PIPE`` and " "the child process generates so much output that it blocks waiting for the OS " @@ -313,23 +306,23 @@ msgstr "" "tubería de búfer del SO acepte más datos. Use el método :meth:`communicate` " "cuando use tuberías para evitar esta condición." -#: ../Doc/library/asyncio-subprocess.rst:211 +#: ../Doc/library/asyncio-subprocess.rst:207 msgid "Interact with process:" msgstr "Interactuar con el proceso:" -#: ../Doc/library/asyncio-subprocess.rst:213 +#: ../Doc/library/asyncio-subprocess.rst:209 msgid "send data to *stdin* (if *input* is not ``None``);" msgstr "envía datos a *stdin* (si *input* no es ``None``);" -#: ../Doc/library/asyncio-subprocess.rst:214 +#: ../Doc/library/asyncio-subprocess.rst:210 msgid "read data from *stdout* and *stderr*, until EOF is reached;" msgstr "lee datos desde *stdout* y *stderr*, hasta que el llegue al EOF;" -#: ../Doc/library/asyncio-subprocess.rst:215 +#: ../Doc/library/asyncio-subprocess.rst:211 msgid "wait for process to terminate." msgstr "espera a que el proceso termine." -#: ../Doc/library/asyncio-subprocess.rst:217 +#: ../Doc/library/asyncio-subprocess.rst:213 msgid "" "The optional *input* argument is the data (:class:`bytes` object) that will " "be sent to the child process." @@ -337,11 +330,11 @@ msgstr "" "El argumento opcional *input* son los datos (objetos :class:`bytes`) que " "serán enviados a los procesos hijos." -#: ../Doc/library/asyncio-subprocess.rst:220 +#: ../Doc/library/asyncio-subprocess.rst:216 msgid "Return a tuple ``(stdout_data, stderr_data)``." msgstr "Retorna una tupla ``(stdout_data, stderr_data)``." -#: ../Doc/library/asyncio-subprocess.rst:222 +#: ../Doc/library/asyncio-subprocess.rst:218 msgid "" "If either :exc:`BrokenPipeError` or :exc:`ConnectionResetError` exception is " "raised when writing *input* into *stdin*, the exception is ignored. This " @@ -353,7 +346,7 @@ msgstr "" "ignorada. Esta condición ocurre cuando el proceso finaliza antes de que " "todos los datos sean escritos en *stdin*." -#: ../Doc/library/asyncio-subprocess.rst:227 +#: ../Doc/library/asyncio-subprocess.rst:223 msgid "" "If it is desired to send data to the process' *stdin*, the process needs to " "be created with ``stdin=PIPE``. Similarly, to get anything other than " @@ -365,7 +358,7 @@ msgstr "" "excepto ``None`` en la tupla del resultado, el proceso tiene que ser creado " "con los argumentos ``stdout=PIPE`` y/o ``stderr=PIPE``." -#: ../Doc/library/asyncio-subprocess.rst:233 +#: ../Doc/library/asyncio-subprocess.rst:229 msgid "" "Note, that the data read is buffered in memory, so do not use this method if " "the data size is large or unlimited." @@ -373,11 +366,11 @@ msgstr "" "Tenga en cuenta que los datos leídos son almacenados en memoria, por lo que " "no utilice este método si el tamaño de los datos es más grande o ilimitado." -#: ../Doc/library/asyncio-subprocess.rst:238 +#: ../Doc/library/asyncio-subprocess.rst:234 msgid "Sends the signal *signal* to the child process." msgstr "Envíe la señal *signal* al proceso hijo." -#: ../Doc/library/asyncio-subprocess.rst:242 +#: ../Doc/library/asyncio-subprocess.rst:238 msgid "" "On Windows, :py:data:`SIGTERM` is an alias for :meth:`terminate`. " "``CTRL_C_EVENT`` and ``CTRL_BREAK_EVENT`` can be sent to processes started " @@ -387,11 +380,11 @@ msgstr "" "enviar ``CTRL_C_EVENT`` y ``CTRL_BREAK_EVENT`` a procesos iniciados con un " "parámetro *creationflags* que incluye ``CREATE_NEW_PROCESS_GROUP``." -#: ../Doc/library/asyncio-subprocess.rst:249 +#: ../Doc/library/asyncio-subprocess.rst:245 msgid "Stop the child process." msgstr "Para al proceso hijo." -#: ../Doc/library/asyncio-subprocess.rst:251 +#: ../Doc/library/asyncio-subprocess.rst:247 msgid "" "On POSIX systems this method sends :py:data:`signal.SIGTERM` to the child " "process." @@ -399,7 +392,7 @@ msgstr "" "En sistemas POSIX este método envía :py:data:`signal.SIGNTERM` al proceso " "hijo." -#: ../Doc/library/asyncio-subprocess.rst:254 +#: ../Doc/library/asyncio-subprocess.rst:250 msgid "" "On Windows the Win32 API function :c:func:`TerminateProcess` is called to " "stop the child process." @@ -407,21 +400,21 @@ msgstr "" "En Windows, la función de la API de Win32 :c:func:`TerminateProcess` es " "llamado para parar a los procesos hijos." -#: ../Doc/library/asyncio-subprocess.rst:259 +#: ../Doc/library/asyncio-subprocess.rst:255 msgid "Kill the child process." msgstr "Mata el proceso hijo." -#: ../Doc/library/asyncio-subprocess.rst:261 +#: ../Doc/library/asyncio-subprocess.rst:257 msgid "" "On POSIX systems this method sends :py:data:`SIGKILL` to the child process." msgstr "" "En sistemas POSIX, este método envía :py:data:`SIGKILL` al proceso hijo." -#: ../Doc/library/asyncio-subprocess.rst:264 +#: ../Doc/library/asyncio-subprocess.rst:260 msgid "On Windows this method is an alias for :meth:`terminate`." msgstr "En Windows este método es un alias para :meth:`terminate`." -#: ../Doc/library/asyncio-subprocess.rst:268 +#: ../Doc/library/asyncio-subprocess.rst:264 msgid "" "Standard input stream (:class:`StreamWriter`) or ``None`` if the process was " "created with ``stdin=None``." @@ -429,7 +422,7 @@ msgstr "" "Flujo de entrada estándar (:class:`StreamWriter`) o ``None`` si el proceso " "fue creado con ``stdin=None``." -#: ../Doc/library/asyncio-subprocess.rst:273 +#: ../Doc/library/asyncio-subprocess.rst:269 msgid "" "Standard output stream (:class:`StreamReader`) or ``None`` if the process " "was created with ``stdout=None``." @@ -437,7 +430,7 @@ msgstr "" "Flujo de salida estándar (:class:`SreamReader`) o ``None`` si el proceso fue " "creado con ``stdout=None``." -#: ../Doc/library/asyncio-subprocess.rst:278 +#: ../Doc/library/asyncio-subprocess.rst:274 msgid "" "Standard error stream (:class:`StreamReader`) or ``None`` if the process was " "created with ``stderr=None``." @@ -445,23 +438,24 @@ msgstr "" "Flujo de salida estándar (:class:`StreamReader`) o ``None`` si el proceso " "fue creado con ``stderr=None``." -#: ../Doc/library/asyncio-subprocess.rst:283 +#: ../Doc/library/asyncio-subprocess.rst:279 +#, fuzzy msgid "" "Use the :meth:`communicate` method rather than :attr:`process.stdin.write() " "`, :attr:`await process.stdout.read() ` or :attr:`await " -"process.stderr.read `. This avoids deadlocks due to streams pausing " -"reading or writing and blocking the child process." +"process.stderr.read() `. This avoids deadlocks due to streams " +"pausing reading or writing and blocking the child process." msgstr "" "Utilice el método :meth:`communicate` en vez de :attr:`process.stdin.write() " "`, :attr:`await process.stdout.read() ` o :attr:`await " "process.stderr.read `. Esto evita bloqueos debido a que los flujos " "pausan la lectura o escritura y bloqueando al proceso hijo." -#: ../Doc/library/asyncio-subprocess.rst:292 +#: ../Doc/library/asyncio-subprocess.rst:288 msgid "Process identification number (PID)." msgstr "Número de identificación del Proceso (PID por sus siglas en inglés)." -#: ../Doc/library/asyncio-subprocess.rst:294 +#: ../Doc/library/asyncio-subprocess.rst:290 msgid "" "Note that for processes created by the :func:`create_subprocess_shell` " "function, this attribute is the PID of the spawned shell." @@ -469,15 +463,15 @@ msgstr "" "Tenga en cuenta que para procesos creados por la función :func:`create­" "_subprocess_shell`, este atributo es el PID del shell generado." -#: ../Doc/library/asyncio-subprocess.rst:299 +#: ../Doc/library/asyncio-subprocess.rst:295 msgid "Return code of the process when it exits." msgstr "Código de retorno del proceso cuando finaliza." -#: ../Doc/library/asyncio-subprocess.rst:301 +#: ../Doc/library/asyncio-subprocess.rst:297 msgid "A ``None`` value indicates that the process has not terminated yet." msgstr "Un valor ``None`` indica que el proceso todavía no ha finalizado." -#: ../Doc/library/asyncio-subprocess.rst:303 +#: ../Doc/library/asyncio-subprocess.rst:299 msgid "" "A negative value ``-N`` indicates that the child was terminated by signal " "``N`` (POSIX only)." @@ -485,11 +479,11 @@ msgstr "" "Un valor negativo ``-N`` indica que el hijo ha finalizado por la señal ``N`` " "(sólo para POSIX)." -#: ../Doc/library/asyncio-subprocess.rst:310 +#: ../Doc/library/asyncio-subprocess.rst:306 msgid "Subprocess and Threads" msgstr "Subprocesos y Hilos" -#: ../Doc/library/asyncio-subprocess.rst:312 +#: ../Doc/library/asyncio-subprocess.rst:308 msgid "" "Standard asyncio event loop supports running subprocesses from different " "threads by default." @@ -497,7 +491,7 @@ msgstr "" "Por defecto el bucle de eventos de asyncio estándar permite correr " "subprocesos desde hilos diferentes." -#: ../Doc/library/asyncio-subprocess.rst:315 +#: ../Doc/library/asyncio-subprocess.rst:311 msgid "" "On Windows subprocesses are provided by :class:`ProactorEventLoop` only " "(default), :class:`SelectorEventLoop` has no subprocess support." @@ -505,7 +499,7 @@ msgstr "" "En Windows, sólo :class:`ProactorEventLoop` proporciona subprocesos (por " "defecto), :class:`SelectorEventLoop` no es compatible con subprocesos." -#: ../Doc/library/asyncio-subprocess.rst:318 +#: ../Doc/library/asyncio-subprocess.rst:314 msgid "" "On UNIX *child watchers* are used for subprocess finish waiting, see :ref:" "`asyncio-watchers` for more info." @@ -514,7 +508,7 @@ msgstr "" "finalización de subprocesos, véase :ref:`asyncio-watchers` para más " "información." -#: ../Doc/library/asyncio-subprocess.rst:324 +#: ../Doc/library/asyncio-subprocess.rst:320 msgid "" "UNIX switched to use :class:`ThreadedChildWatcher` for spawning subprocesses " "from different threads without any limitation." @@ -522,7 +516,7 @@ msgstr "" "UNIX cambió para usar :class:`ThreadedChildWatcher` para generar subprocesos " "de hilos diferentes sin ninguna limitación." -#: ../Doc/library/asyncio-subprocess.rst:327 +#: ../Doc/library/asyncio-subprocess.rst:323 msgid "" "Spawning a subprocess with *inactive* current child watcher raises :exc:" "`RuntimeError`." @@ -530,7 +524,7 @@ msgstr "" "Crear un subproceso con el observador del hijo *inactivo* lanza un :exc:" "`RuntimeError`." -#: ../Doc/library/asyncio-subprocess.rst:330 +#: ../Doc/library/asyncio-subprocess.rst:326 msgid "" "Note that alternative event loop implementations might have own limitations; " "please refer to their documentation." @@ -538,7 +532,7 @@ msgstr "" "Tenga en cuenta que implementaciones alternativas del bucle de eventos " "pueden tener limitaciones propias; por favor consulte su documentación." -#: ../Doc/library/asyncio-subprocess.rst:335 +#: ../Doc/library/asyncio-subprocess.rst:331 msgid "" "The :ref:`Concurrency and multithreading in asyncio ` section." @@ -546,11 +540,11 @@ msgstr "" "La sección :ref:`Concurrencia y multihilos en asyncio `." -#: ../Doc/library/asyncio-subprocess.rst:340 +#: ../Doc/library/asyncio-subprocess.rst:336 msgid "Examples" msgstr "Ejemplos" -#: ../Doc/library/asyncio-subprocess.rst:342 +#: ../Doc/library/asyncio-subprocess.rst:338 msgid "" "An example using the :class:`~asyncio.subprocess.Process` class to control a " "subprocess and the :class:`StreamReader` class to read from its standard " @@ -560,16 +554,26 @@ msgstr "" "controlar un subproceso y la clase :class:`StreamReader` para leer de su " "salida estándar." -#: ../Doc/library/asyncio-subprocess.rst:348 +#: ../Doc/library/asyncio-subprocess.rst:344 msgid "" "The subprocess is created by the :func:`create_subprocess_exec` function::" msgstr "" "El subproceso es creado por la función :func:`create_subprocess_exec`::" -#: ../Doc/library/asyncio-subprocess.rst:375 +#: ../Doc/library/asyncio-subprocess.rst:371 msgid "" "See also the :ref:`same example ` written " "using low-level APIs." msgstr "" "Véase también los :ref:`ejemplos de prueba " "` escritos usando APIs de bajo nivel." + +#~ msgid "" +#~ "The ``loop`` parameter. This function has been implicitly getting the " +#~ "current running loop since 3.7. See :ref:`What's New in 3.10's Removed " +#~ "section ` for more information." +#~ msgstr "" +#~ "El parámetro ``loop``. Esta función ha estado obteniendo implícitamente " +#~ "el bucle actual en ejecución desde 3.7. Consultar :ref:`la sección " +#~ "Eliminado en ¿Qué hay de nuevo en 3.10? ` para más " +#~ "información." diff --git a/library/asyncio-sync.po b/library/asyncio-sync.po index 8576950ab0..65b3cd4f62 100644 --- a/library/asyncio-sync.po +++ b/library/asyncio-sync.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-11-25 01:47+0800\n" "Last-Translator: Rodrigo Tobar \n" "Language: es\n" @@ -19,8 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/library/asyncio-sync.rst:7 msgid "Synchronization Primitives" @@ -82,17 +81,22 @@ msgstr ":class:`Semaphore`" msgid ":class:`BoundedSemaphore`" msgstr ":class:`BoundedSemaphore`" -#: ../Doc/library/asyncio-sync.rst:37 +#: ../Doc/library/asyncio-sync.rst:31 +#, fuzzy +msgid ":class:`Barrier`" +msgstr ":class:`Event`" + +#: ../Doc/library/asyncio-sync.rst:38 msgid "Lock" msgstr "Lock" -#: ../Doc/library/asyncio-sync.rst:41 +#: ../Doc/library/asyncio-sync.rst:42 msgid "Implements a mutex lock for asyncio tasks. Not thread-safe." msgstr "" "Implementa un cierre de exclusión mutua para tareas asyncio. No es seguro en " "hilos." -#: ../Doc/library/asyncio-sync.rst:43 +#: ../Doc/library/asyncio-sync.rst:44 msgid "" "An asyncio lock can be used to guarantee exclusive access to a shared " "resource." @@ -100,34 +104,28 @@ msgstr "" "Un cierre asyncio puede usarse para garantizar el acceso en exclusiva a un " "recurso compartido." -#: ../Doc/library/asyncio-sync.rst:46 +#: ../Doc/library/asyncio-sync.rst:47 msgid "The preferred way to use a Lock is an :keyword:`async with` statement::" msgstr "" "La forma preferida de usar un Lock es mediante una declaración :keyword:" "`async with`::" -#: ../Doc/library/asyncio-sync.rst:55 ../Doc/library/asyncio-sync.rst:207 -#: ../Doc/library/asyncio-sync.rst:309 +#: ../Doc/library/asyncio-sync.rst:56 ../Doc/library/asyncio-sync.rst:199 +#: ../Doc/library/asyncio-sync.rst:298 msgid "which is equivalent to::" msgstr "lo que es equivalente a::" -#: ../Doc/library/asyncio-sync.rst:71 ../Doc/library/asyncio-sync.rst:119 -#: ../Doc/library/asyncio-sync.rst:197 ../Doc/library/asyncio-sync.rst:299 -#: ../Doc/library/asyncio-sync.rst:354 -msgid "" -"The ``loop`` parameter. This class has been implicitly getting the current " -"running loop since 3.7. See :ref:`What's New in 3.10's Removed section " -"` for more information." +#: ../Doc/library/asyncio-sync.rst:67 ../Doc/library/asyncio-sync.rst:112 +#: ../Doc/library/asyncio-sync.rst:187 ../Doc/library/asyncio-sync.rst:286 +#: ../Doc/library/asyncio-sync.rst:341 +msgid "Removed the *loop* parameter." msgstr "" -"El parámetro ``loop``. Desde 3.7 esta clase ha obtenido implícitamente el " -"bucle de eventos en ejecución. Véase :ref:`la sección \"Removido\" de Qué " -"hay de nuevo en 3.10 ` para más información." -#: ../Doc/library/asyncio-sync.rst:74 +#: ../Doc/library/asyncio-sync.rst:72 msgid "Acquire the lock." msgstr "Adquiere el cierre." -#: ../Doc/library/asyncio-sync.rst:76 +#: ../Doc/library/asyncio-sync.rst:74 msgid "" "This method waits until the lock is *unlocked*, sets it to *locked* and " "returns ``True``." @@ -135,7 +133,7 @@ msgstr "" "Este método espera hasta que el cierre está *abierto*, lo establece como " "*cerrado* y retorna ``True``." -#: ../Doc/library/asyncio-sync.rst:79 +#: ../Doc/library/asyncio-sync.rst:77 msgid "" "When more than one coroutine is blocked in :meth:`acquire` waiting for the " "lock to be unlocked, only one coroutine eventually proceeds." @@ -143,7 +141,7 @@ msgstr "" "Cuando más de una corrutina está bloqueada en :meth:`acquire`, esperando a " "que el cierre se abra, solo una de las corrutinas proseguirá finalmente." -#: ../Doc/library/asyncio-sync.rst:83 +#: ../Doc/library/asyncio-sync.rst:81 msgid "" "Acquiring a lock is *fair*: the coroutine that proceeds will be the first " "coroutine that started waiting on the lock." @@ -151,33 +149,33 @@ msgstr "" "Adquirir un cierre es *justo*: la corrutina que prosigue será la primera " "corrutina que comenzó a esperarlo." -#: ../Doc/library/asyncio-sync.rst:88 +#: ../Doc/library/asyncio-sync.rst:86 msgid "Release the lock." msgstr "Libera el cierre." -#: ../Doc/library/asyncio-sync.rst:90 +#: ../Doc/library/asyncio-sync.rst:88 msgid "When the lock is *locked*, reset it to *unlocked* and return." msgstr "" "Cuando el cierre está *cerrado*, lo restablece al estado *abierto* y retorna." -#: ../Doc/library/asyncio-sync.rst:92 +#: ../Doc/library/asyncio-sync.rst:90 msgid "If the lock is *unlocked*, a :exc:`RuntimeError` is raised." msgstr "" "Si el cierre está *abierto*, se lanza una excepción :exc:`RuntimeError`." -#: ../Doc/library/asyncio-sync.rst:96 +#: ../Doc/library/asyncio-sync.rst:94 msgid "Return ``True`` if the lock is *locked*." msgstr "Retorna ``True`` si el cierre está *cerrado*." -#: ../Doc/library/asyncio-sync.rst:100 +#: ../Doc/library/asyncio-sync.rst:98 msgid "Event" msgstr "Event" -#: ../Doc/library/asyncio-sync.rst:104 +#: ../Doc/library/asyncio-sync.rst:102 msgid "An event object. Not thread-safe." msgstr "Un objeto de eventos. No es seguro en hilos." -#: ../Doc/library/asyncio-sync.rst:106 +#: ../Doc/library/asyncio-sync.rst:104 msgid "" "An asyncio event can be used to notify multiple asyncio tasks that some " "event has happened." @@ -185,7 +183,7 @@ msgstr "" "Un evento asyncio puede usarse para notificar a múltiples tareas asyncio que " "ha ocurrido algún evento." -#: ../Doc/library/asyncio-sync.rst:109 +#: ../Doc/library/asyncio-sync.rst:107 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:`clear` " @@ -197,15 +195,15 @@ msgstr "" "método :meth:`clear`. El método :meth:`~Event.wait` se bloquea hasta que la " "bandera se establece en *true*. El flag se establece en *false* inicialmente." -#: ../Doc/library/asyncio-sync.rst:122 +#: ../Doc/library/asyncio-sync.rst:117 ../Doc/library/asyncio-sync.rst:365 msgid "Example::" msgstr "Ejemplo:" -#: ../Doc/library/asyncio-sync.rst:147 +#: ../Doc/library/asyncio-sync.rst:142 msgid "Wait until the event is set." msgstr "Espera hasta que se establezca el evento." -#: ../Doc/library/asyncio-sync.rst:149 +#: ../Doc/library/asyncio-sync.rst:144 msgid "" "If the event is set, return ``True`` immediately. Otherwise block until " "another task calls :meth:`~Event.set`." @@ -213,21 +211,21 @@ msgstr "" "Si el evento está configurado, retorna ``True`` inmediatamente. De lo " "contrario, bloquea hasta que otra tarea llame a :meth:`~Event.set`." -#: ../Doc/library/asyncio-sync.rst:154 +#: ../Doc/library/asyncio-sync.rst:149 msgid "Set the event." msgstr "Establece el evento." -#: ../Doc/library/asyncio-sync.rst:156 +#: ../Doc/library/asyncio-sync.rst:151 msgid "All tasks waiting for event to be set will be immediately awakened." msgstr "" "Todas las tareas esperando a que el evento se establezca serán activadas " "inmediatamente." -#: ../Doc/library/asyncio-sync.rst:161 +#: ../Doc/library/asyncio-sync.rst:156 msgid "Clear (unset) the event." msgstr "Borra (restablece) el evento." -#: ../Doc/library/asyncio-sync.rst:163 +#: ../Doc/library/asyncio-sync.rst:158 msgid "" "Tasks awaiting on :meth:`~Event.wait` will now block until the :meth:`~Event." "set` method is called again." @@ -235,19 +233,19 @@ msgstr "" "Las tareas que esperan en :meth:`~Event.wait` ahora se bloquearán hasta que " "se vuelva a llamar al método :meth:`~Event.set`." -#: ../Doc/library/asyncio-sync.rst:168 +#: ../Doc/library/asyncio-sync.rst:163 msgid "Return ``True`` if the event is set." msgstr "Retorna ``True`` si el evento está establecido." -#: ../Doc/library/asyncio-sync.rst:172 +#: ../Doc/library/asyncio-sync.rst:167 msgid "Condition" msgstr "Condition" -#: ../Doc/library/asyncio-sync.rst:176 +#: ../Doc/library/asyncio-sync.rst:171 msgid "A Condition object. Not thread-safe." msgstr "Un objeto Condition. No seguro en hilos." -#: ../Doc/library/asyncio-sync.rst:178 +#: ../Doc/library/asyncio-sync.rst:173 msgid "" "An asyncio condition primitive can be used by a task to wait for some event " "to happen and then get exclusive access to a shared resource." @@ -255,7 +253,7 @@ msgstr "" "Una tarea puede usar una condición primitiva de asyncio para esperar a que " "suceda algún evento y luego obtener acceso exclusivo a un recurso compartido." -#: ../Doc/library/asyncio-sync.rst:182 +#: ../Doc/library/asyncio-sync.rst:177 msgid "" "In essence, a Condition object combines the functionality of an :class:" "`Event` and a :class:`Lock`. It is possible to have multiple Condition " @@ -269,7 +267,7 @@ msgstr "" "exclusivo a un recurso compartido entre diferentes tareas interesadas en " "estados particulares de ese recurso compartido." -#: ../Doc/library/asyncio-sync.rst:188 +#: ../Doc/library/asyncio-sync.rst:183 msgid "" "The optional *lock* argument must be a :class:`Lock` object or ``None``. In " "the latter case a new Lock object is created automatically." @@ -277,18 +275,18 @@ msgstr "" "El argumento opcional *lock* debe ser un objeto :class:`Lock` o ``None``. En " "este último caso, se crea automáticamente un nuevo objeto Lock." -#: ../Doc/library/asyncio-sync.rst:198 +#: ../Doc/library/asyncio-sync.rst:190 msgid "" "The preferred way to use a Condition is an :keyword:`async with` statement::" msgstr "" "La forma preferida de usar una condición es mediante una declaración :" "keyword:`async with`::" -#: ../Doc/library/asyncio-sync.rst:220 +#: ../Doc/library/asyncio-sync.rst:212 msgid "Acquire the underlying lock." msgstr "Adquiere el cierre (lock) subyacente." -#: ../Doc/library/asyncio-sync.rst:222 +#: ../Doc/library/asyncio-sync.rst:214 msgid "" "This method waits until the underlying lock is *unlocked*, sets it to " "*locked* and returns ``True``." @@ -296,7 +294,7 @@ msgstr "" "Este método espera hasta que el cierre subyacente esté *abierto*, lo " "establece en *cerrado* y retorna ``True``." -#: ../Doc/library/asyncio-sync.rst:227 +#: ../Doc/library/asyncio-sync.rst:219 msgid "" "Wake up at most *n* tasks (1 by default) waiting on this condition. The " "method is no-op if no tasks are waiting." @@ -304,7 +302,7 @@ msgstr "" "Despierta como máximo *n* tareas (1 por defecto) que estén esperando a esta " "condición. El método no es operativo si no hay tareas esperando." -#: ../Doc/library/asyncio-sync.rst:230 ../Doc/library/asyncio-sync.rst:245 +#: ../Doc/library/asyncio-sync.rst:222 ../Doc/library/asyncio-sync.rst:237 msgid "" "The lock must be acquired before this method is called and released shortly " "after. If called with an *unlocked* lock a :exc:`RuntimeError` error is " @@ -314,35 +312,35 @@ msgstr "" "después. Si se llama con un cierre *abierto*, se lanza una excepción :exc:" "`RuntimeError`." -#: ../Doc/library/asyncio-sync.rst:236 +#: ../Doc/library/asyncio-sync.rst:228 msgid "Return ``True`` if the underlying lock is acquired." msgstr "Retorna ``True`` si el cierre subyacente está adquirido." -#: ../Doc/library/asyncio-sync.rst:240 +#: ../Doc/library/asyncio-sync.rst:232 msgid "Wake up all tasks waiting on this condition." msgstr "Despierta todas las tareas que esperan a esta condición." -#: ../Doc/library/asyncio-sync.rst:242 +#: ../Doc/library/asyncio-sync.rst:234 msgid "This method acts like :meth:`notify`, but wakes up all waiting tasks." msgstr "" "Este método actúa como :meth:`notify`, pero despierta todas las tareas en " "espera." -#: ../Doc/library/asyncio-sync.rst:251 +#: ../Doc/library/asyncio-sync.rst:243 msgid "Release the underlying lock." msgstr "Libera el cierre subyacente." -#: ../Doc/library/asyncio-sync.rst:253 +#: ../Doc/library/asyncio-sync.rst:245 msgid "When invoked on an unlocked lock, a :exc:`RuntimeError` is raised." msgstr "" "Cuando se invoca en un cierre abierto, se lanza una excepción :exc:" "`RuntimeError`." -#: ../Doc/library/asyncio-sync.rst:258 +#: ../Doc/library/asyncio-sync.rst:250 msgid "Wait until notified." msgstr "Espera hasta que se le notifique." -#: ../Doc/library/asyncio-sync.rst:260 +#: ../Doc/library/asyncio-sync.rst:252 msgid "" "If the calling task has not acquired the lock when this method is called, a :" "exc:`RuntimeError` is raised." @@ -350,7 +348,7 @@ msgstr "" "Si la tarea que llama no ha adquirido el cierre cuando se llama a este " "método, se lanza una excepción :exc:`RuntimeError`." -#: ../Doc/library/asyncio-sync.rst:263 +#: ../Doc/library/asyncio-sync.rst:255 msgid "" "This method releases the underlying lock, and then blocks until it is " "awakened by a :meth:`notify` or :meth:`notify_all` call. Once awakened, the " @@ -361,11 +359,11 @@ msgstr "" "despertado, la condición vuelve a adquirir su cierre y este método " "retorna``True``." -#: ../Doc/library/asyncio-sync.rst:270 +#: ../Doc/library/asyncio-sync.rst:262 msgid "Wait until a predicate becomes *true*." msgstr "Espera hasta que un predicado se vuelva *verdadero*." -#: ../Doc/library/asyncio-sync.rst:272 +#: ../Doc/library/asyncio-sync.rst:264 msgid "" "The predicate must be a callable which result will be interpreted as a " "boolean value. The final value is the return value." @@ -373,15 +371,15 @@ msgstr "" "El predicado debe ser un objeto invocable cuyo resultado se interpretará " "como un valor booleano. El valor final es el valor de retorno." -#: ../Doc/library/asyncio-sync.rst:278 +#: ../Doc/library/asyncio-sync.rst:270 msgid "Semaphore" msgstr "Semaphore" -#: ../Doc/library/asyncio-sync.rst:282 +#: ../Doc/library/asyncio-sync.rst:274 msgid "A Semaphore object. Not thread-safe." msgstr "Un objeto Semaphore. No es seguro en hilos." -#: ../Doc/library/asyncio-sync.rst:284 +#: ../Doc/library/asyncio-sync.rst:276 msgid "" "A semaphore manages an internal counter which is decremented by each :meth:" "`acquire` call and incremented by each :meth:`release` call. The counter can " @@ -394,7 +392,7 @@ msgstr "" "encuentra que es cero, se bloquea, esperando hasta que alguna tarea llame a :" "meth:`release`." -#: ../Doc/library/asyncio-sync.rst:290 +#: ../Doc/library/asyncio-sync.rst:282 msgid "" "The optional *value* argument gives the initial value for the internal " "counter (``1`` by default). If the given value is less than ``0`` a :exc:" @@ -404,18 +402,18 @@ msgstr "" "interno (``1`` por defecto). Si el valor dado es menor que ``0`` se lanza " "una excepción :exc:`ValueError`." -#: ../Doc/library/asyncio-sync.rst:300 +#: ../Doc/library/asyncio-sync.rst:289 msgid "" "The preferred way to use a Semaphore is an :keyword:`async with` statement::" msgstr "" "La forma preferida de utilizar un semáforo es mediante una declaración :" "keyword:`async with`::" -#: ../Doc/library/asyncio-sync.rst:322 +#: ../Doc/library/asyncio-sync.rst:311 msgid "Acquire a semaphore." msgstr "Adquiere un semáforo." -#: ../Doc/library/asyncio-sync.rst:324 +#: ../Doc/library/asyncio-sync.rst:313 msgid "" "If the internal counter is greater than zero, decrement it by one and return " "``True`` immediately. If it is zero, wait until a :meth:`release` is called " @@ -425,11 +423,11 @@ msgstr "" "``True`` inmediatamente. Si es cero, espera hasta que se llame al método :" "meth:`release` y retorna ``True``." -#: ../Doc/library/asyncio-sync.rst:330 +#: ../Doc/library/asyncio-sync.rst:319 msgid "Returns ``True`` if semaphore can not be acquired immediately." msgstr "Retorna ``True`` si el semáforo no se puede adquirir de inmediato." -#: ../Doc/library/asyncio-sync.rst:334 +#: ../Doc/library/asyncio-sync.rst:323 msgid "" "Release a semaphore, incrementing the internal counter by one. Can wake up a " "task waiting to acquire the semaphore." @@ -437,7 +435,7 @@ msgstr "" "Libera un semáforo, incrementando el contador interno en uno. Puede " "despertar una tarea que esté a la espera para adquirir el semáforo." -#: ../Doc/library/asyncio-sync.rst:337 +#: ../Doc/library/asyncio-sync.rst:326 msgid "" "Unlike :class:`BoundedSemaphore`, :class:`Semaphore` allows making more " "``release()`` calls than ``acquire()`` calls." @@ -445,15 +443,15 @@ msgstr "" "A diferencia de :class:`BoundedSemaphore`, :class:`Semaphore` permite hacer " "más llamadas ``release()`` que llamadas ``acquire()``." -#: ../Doc/library/asyncio-sync.rst:342 +#: ../Doc/library/asyncio-sync.rst:331 msgid "BoundedSemaphore" msgstr "BoundedSemaphore" -#: ../Doc/library/asyncio-sync.rst:346 +#: ../Doc/library/asyncio-sync.rst:335 msgid "A bounded semaphore object. Not thread-safe." msgstr "Un objeto semáforo delimitado. No es seguro en hilos." -#: ../Doc/library/asyncio-sync.rst:348 +#: ../Doc/library/asyncio-sync.rst:337 msgid "" "Bounded Semaphore is a version of :class:`Semaphore` that raises a :exc:" "`ValueError` in :meth:`~Semaphore.release` if it increases the internal " @@ -463,7 +461,103 @@ msgstr "" "excepción :exc:`ValueError` en :meth:`~Semaphore.release` si aumenta el " "contador interno por encima del *valor* inicial." -#: ../Doc/library/asyncio-sync.rst:364 +#: ../Doc/library/asyncio-sync.rst:346 +msgid "Barrier" +msgstr "" + +#: ../Doc/library/asyncio-sync.rst:350 +#, fuzzy +msgid "A barrier object. Not thread-safe." +msgstr "Un objeto de eventos. No es seguro en hilos." + +#: ../Doc/library/asyncio-sync.rst:352 +msgid "" +"A barrier is a simple synchronization primitive that allows to block until " +"*parties* number of tasks are waiting on it. Tasks can wait on the :meth:" +"`~Barrier.wait` method and would be blocked until the specified number of " +"tasks end up waiting on :meth:`~Barrier.wait`. At that point all of the " +"waiting tasks would unblock simultaneously." +msgstr "" + +#: ../Doc/library/asyncio-sync.rst:358 +msgid "" +":keyword:`async with` can be used as an alternative to awaiting on :meth:" +"`~Barrier.wait`." +msgstr "" + +#: ../Doc/library/asyncio-sync.rst:361 +msgid "The barrier can be reused any number of times." +msgstr "" + +#: ../Doc/library/asyncio-sync.rst:388 +msgid "Result of this example is::" +msgstr "" + +#: ../Doc/library/asyncio-sync.rst:399 +msgid "" +"Pass the barrier. When all the tasks party to the barrier have called this " +"function, they are all unblocked simultaneously." +msgstr "" + +#: ../Doc/library/asyncio-sync.rst:402 +msgid "" +"When a waiting or blocked task in the barrier is cancelled, this task exits " +"the barrier which stays in the same state. If the state of the barrier is " +"\"filling\", the number of waiting task decreases by 1." +msgstr "" + +#: ../Doc/library/asyncio-sync.rst:407 +msgid "" +"The return value is an integer in the range of 0 to ``parties-1``, different " +"for each task. This can be used to select a task to do some special " +"housekeeping, e.g.::" +msgstr "" + +#: ../Doc/library/asyncio-sync.rst:417 +msgid "" +"This method may raise a :class:`BrokenBarrierError` exception if the barrier " +"is broken or reset while a task is waiting. It could raise a :exc:" +"`CancelledError` if a task is cancelled." +msgstr "" + +#: ../Doc/library/asyncio-sync.rst:423 +msgid "" +"Return the barrier to the default, empty state. Any tasks waiting on it " +"will receive the :class:`BrokenBarrierError` exception." +msgstr "" + +#: ../Doc/library/asyncio-sync.rst:426 +msgid "" +"If a barrier is broken it may be better to just leave it and create a new " +"one." +msgstr "" + +#: ../Doc/library/asyncio-sync.rst:430 +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 " +"example if one of the tasks needs to abort, to avoid infinite waiting tasks." +msgstr "" + +#: ../Doc/library/asyncio-sync.rst:437 +msgid "The number of tasks required to pass the barrier." +msgstr "" + +#: ../Doc/library/asyncio-sync.rst:441 +msgid "The number of tasks currently waiting in the barrier while filling." +msgstr "" + +#: ../Doc/library/asyncio-sync.rst:445 +msgid "A boolean that is ``True`` if the barrier is in the broken state." +msgstr "" + +#: ../Doc/library/asyncio-sync.rst:450 +msgid "" +"This exception, a subclass of :exc:`RuntimeError`, is raised when the :class:" +"`Barrier` object is reset or broken." +msgstr "" + +#: ../Doc/library/asyncio-sync.rst:458 msgid "" "Acquiring a lock using ``await lock`` or ``yield from lock`` and/or :keyword:" "`with` statement (``with await lock``, ``with (yield from lock)``) was " @@ -472,3 +566,12 @@ msgstr "" "Adquirir un bloqueo usando ``await lock`` o ``yield from lock`` o una " "declaración :keyword:`with` (``with await lock``, ``with (yield from " "lock)``) se eliminó . En su lugar, use ``async with lock``." + +#~ msgid "" +#~ "The ``loop`` parameter. This class has been implicitly getting the " +#~ "current running loop since 3.7. See :ref:`What's New in 3.10's Removed " +#~ "section ` for more information." +#~ msgstr "" +#~ "El parámetro ``loop``. Desde 3.7 esta clase ha obtenido implícitamente el " +#~ "bucle de eventos en ejecución. Véase :ref:`la sección \"Removido\" de Qué " +#~ "hay de nuevo en 3.10 ` para más información." diff --git a/library/asyncio-task.po b/library/asyncio-task.po index 2da1fee113..58414ee265 100644 --- a/library/asyncio-task.po +++ b/library/asyncio-task.po @@ -10,16 +10,16 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-16 21:42+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-08-04 13:41+0200\n" "Last-Translator: Cristián Maureira-Fredes \n" -"Language-Team: python-doc-es\n" "Language: es\n" +"Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" -"Generated-By: Babel 2.9.1\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/library/asyncio-task.rst:6 msgid "Coroutines and Tasks" @@ -33,16 +33,16 @@ msgstr "" "Esta sección describe las API de asyncio de alto nivel para trabajar con " "corrutinas y tareas." -#: ../Doc/library/asyncio-task.rst:19 ../Doc/library/asyncio-task.rst:121 +#: ../Doc/library/asyncio-task.rst:19 ../Doc/library/asyncio-task.rst:144 msgid "Coroutines" msgstr "Corrutinas" #: ../Doc/library/asyncio-task.rst:21 +#, fuzzy msgid "" ":term:`Coroutines ` declared with the async/await syntax is the " "preferred way of writing asyncio applications. For example, the following " -"snippet of code (requires Python 3.7+) prints \"hello\", waits 1 second, and " -"then prints \"world\"::" +"snippet of code prints \"hello\", waits 1 second, and then prints \"world\"::" msgstr "" ":term:`Coroutines ` declarado con la sintaxis async/await es la " "forma preferida de escribir aplicaciones asyncio. Por ejemplo, el siguiente " @@ -57,7 +57,8 @@ msgstr "" "que se ejecute::" #: ../Doc/library/asyncio-task.rst:43 -msgid "To actually run a coroutine, asyncio provides three main mechanisms:" +#, fuzzy +msgid "To actually run a coroutine, asyncio provides the following mechanisms:" msgstr "" "Para ejecutar realmente una corrutina, asyncio proporciona tres mecanismos " "principales:" @@ -76,8 +77,8 @@ msgid "" "after waiting for 1 second, and then print \"world\" after waiting for " "*another* 2 seconds::" msgstr "" -"Esperando en una corrutina. El siguiente fragmento de código imprimirá \"hola" -"\" después de esperar 1 segundo y luego imprimirá \"mundo\" después de " +"Esperando en una corrutina. El siguiente fragmento de código imprimirá " +"\"hola\" después de esperar 1 segundo y luego imprimirá \"mundo\" después de " "esperar *otros* 2 segundos::" #: ../Doc/library/asyncio-task.rst:69 @@ -108,11 +109,25 @@ msgstr "" "Tenga en cuenta que la salida esperada ahora muestra que el fragmento de " "código se ejecuta 1 segundo más rápido que antes::" -#: ../Doc/library/asyncio-task.rst:110 +#: ../Doc/library/asyncio-task.rst:106 +msgid "" +"The :class:`asyncio.TaskGroup` class provides a more modern alternative to :" +"func:`create_task`. Using this API, the last example becomes::" +msgstr "" + +#: ../Doc/library/asyncio-task.rst:124 +msgid "The timing and output should be the same as for the previous version." +msgstr "" + +#: ../Doc/library/asyncio-task.rst:126 +msgid ":class:`asyncio.TaskGroup`." +msgstr "" + +#: ../Doc/library/asyncio-task.rst:133 msgid "Awaitables" msgstr "Esperables" -#: ../Doc/library/asyncio-task.rst:112 +#: ../Doc/library/asyncio-task.rst:135 msgid "" "We say that an object is an **awaitable** object if it can be used in an :" "keyword:`await` expression. Many asyncio APIs are designed to accept " @@ -122,7 +137,7 @@ msgstr "" "expresión :keyword:`await`. Muchas API de asyncio están diseñadas para " "aceptar los valores esperables." -#: ../Doc/library/asyncio-task.rst:116 +#: ../Doc/library/asyncio-task.rst:139 msgid "" "There are three main types of *awaitable* objects: **coroutines**, " "**Tasks**, and **Futures**." @@ -130,7 +145,7 @@ msgstr "" "Hay tres tipos principales de objetos *esperables*: **corrutinas**, " "**Tareas** y **Futures**." -#: ../Doc/library/asyncio-task.rst:122 +#: ../Doc/library/asyncio-task.rst:145 msgid "" "Python coroutines are *awaitables* and therefore can be awaited from other " "coroutines::" @@ -138,7 +153,7 @@ msgstr "" "Las corrutinas de Python son *esperables* y por lo tanto se pueden esperar " "de otras corrutinas::" -#: ../Doc/library/asyncio-task.rst:143 +#: ../Doc/library/asyncio-task.rst:166 msgid "" "In this documentation the term \"coroutine\" can be used for two closely " "related concepts:" @@ -146,34 +161,26 @@ msgstr "" "En esta documentación se puede utilizar el término \"corrutina\" para dos " "conceptos estrechamente relacionados:" -#: ../Doc/library/asyncio-task.rst:146 +#: ../Doc/library/asyncio-task.rst:169 msgid "a *coroutine function*: an :keyword:`async def` function;" msgstr "una *función corrutina*: una función :keyword:`async def`;" -#: ../Doc/library/asyncio-task.rst:148 +#: ../Doc/library/asyncio-task.rst:171 msgid "" "a *coroutine object*: an object returned by calling a *coroutine function*." msgstr "" "un *objeto corrutina*: un objeto retornado llamando a una *función " "corrutina*." -#: ../Doc/library/asyncio-task.rst:151 -msgid "" -"asyncio also supports legacy :ref:`generator-based " -"` coroutines." -msgstr "" -"asyncio también es compatible con corrutinas heredadas :ref:`generator-based " -"`." - -#: ../Doc/library/asyncio-task.rst:156 +#: ../Doc/library/asyncio-task.rst:176 msgid "Tasks" msgstr "Tareas" -#: ../Doc/library/asyncio-task.rst:157 +#: ../Doc/library/asyncio-task.rst:177 msgid "*Tasks* are used to schedule coroutines *concurrently*." msgstr "*Las tareas* se utilizan para programar corrutinas *concurrentemente*." -#: ../Doc/library/asyncio-task.rst:159 +#: ../Doc/library/asyncio-task.rst:179 msgid "" "When a coroutine is wrapped into a *Task* with functions like :func:`asyncio." "create_task` the coroutine is automatically scheduled to run soon::" @@ -182,11 +189,11 @@ msgstr "" "`asyncio.create_task` la corrutina se programa automáticamente para " "ejecutarse pronto::" -#: ../Doc/library/asyncio-task.rst:181 +#: ../Doc/library/asyncio-task.rst:201 msgid "Futures" msgstr "Futures" -#: ../Doc/library/asyncio-task.rst:182 +#: ../Doc/library/asyncio-task.rst:202 msgid "" "A :class:`Future` is a special **low-level** awaitable object that " "represents an **eventual result** of an asynchronous operation." @@ -194,7 +201,7 @@ msgstr "" "Un :class:`Future` es un objeto esperable especial de **bajo-nivel** que " "representa un **resultado eventual** de una operación asíncrona." -#: ../Doc/library/asyncio-task.rst:185 +#: ../Doc/library/asyncio-task.rst:205 msgid "" "When a Future object is *awaited* it means that the coroutine will wait " "until the Future is resolved in some other place." @@ -202,7 +209,7 @@ msgstr "" "Cuando un objeto Future es *esperado* significa que la corrutina esperará " "hasta que el Future se resuelva en algún otro lugar." -#: ../Doc/library/asyncio-task.rst:188 +#: ../Doc/library/asyncio-task.rst:208 msgid "" "Future objects in asyncio are needed to allow callback-based code to be used " "with async/await." @@ -210,7 +217,7 @@ msgstr "" "Los objetos Future de asyncio son necesarios para permitir que el código " "basado en retro llamada se use con async/await." -#: ../Doc/library/asyncio-task.rst:191 +#: ../Doc/library/asyncio-task.rst:211 msgid "" "Normally **there is no need** to create Future objects at the application " "level code." @@ -218,7 +225,7 @@ msgstr "" "Normalmente , **no es necesario** crear objetos Future en el código de nivel " "de aplicación." -#: ../Doc/library/asyncio-task.rst:194 +#: ../Doc/library/asyncio-task.rst:214 msgid "" "Future objects, sometimes exposed by libraries and some asyncio APIs, can be " "awaited::" @@ -226,7 +233,7 @@ msgstr "" "Los objetos Future, a veces expuestos por bibliotecas y algunas API de " "asyncio, pueden ser esperados::" -#: ../Doc/library/asyncio-task.rst:206 +#: ../Doc/library/asyncio-task.rst:226 msgid "" "A good example of a low-level function that returns a Future object is :meth:" "`loop.run_in_executor`." @@ -234,114 +241,183 @@ msgstr "" "Un buen ejemplo de una función de bajo nivel que retorna un objeto Future " "es :meth:`loop.run_in_executor`." -#: ../Doc/library/asyncio-task.rst:211 -msgid "Running an asyncio Program" -msgstr "Ejecutando un programa asyncio" +#: ../Doc/library/asyncio-task.rst:231 +msgid "Creating Tasks" +msgstr "Creando Tareas" -#: ../Doc/library/asyncio-task.rst:215 -msgid "Execute the :term:`coroutine` *coro* and return the result." -msgstr "Ejecuta la :term:`coroutine` *coro* y retornando el resultado." +#: ../Doc/library/asyncio-task.rst:235 +msgid "" +"Wrap the *coro* :ref:`coroutine ` into a :class:`Task` and " +"schedule its execution. Return the Task object." +msgstr "" +"Envuelve una :ref:`coroutine ` *coro* en una :class:`Task` y " +"programa su ejecución. Retorna el objeto Tarea." -#: ../Doc/library/asyncio-task.rst:217 +#: ../Doc/library/asyncio-task.rst:238 msgid "" -"This function runs the passed coroutine, taking care of managing the asyncio " -"event loop, *finalizing asynchronous generators*, and closing the threadpool." +"If *name* is not ``None``, it is set as the name of the task using :meth:" +"`Task.set_name`." msgstr "" -"Esta función ejecuta la corrutina pasada, encargándose de administrar el " -"bucle de eventos asyncio, *finalizing asynchronous generators* y cerrando el " -"threadpool." +"Si *name* no es ``None``, se establece como el nombre de la tarea mediante :" +"meth:`Task.set_name`." -#: ../Doc/library/asyncio-task.rst:221 +#: ../Doc/library/asyncio-task.rst:241 msgid "" -"This function cannot be called when another asyncio event loop is running in " -"the same thread." +"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 "" -"Esta función no se puede llamar cuando otro bucle de eventos asyncio se está " -"ejecutando en el mismo hilo." -#: ../Doc/library/asyncio-task.rst:224 -msgid "If *debug* is ``True``, the event loop will be run in debug mode." +#: ../Doc/library/asyncio-task.rst:245 +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 "" -"Si *debug* es ``True``, el bucle de eventos se ejecutará en modo debug." +"La tarea se ejecuta en el bucle retornado por :func:`get_running_loop`, :exc:" +"`RuntimeError` se genera si no hay ningún bucle en ejecución en el " +"subproceso actual." -#: ../Doc/library/asyncio-task.rst:226 +#: ../Doc/library/asyncio-task.rst:251 msgid "" -"This function always creates a new event loop and closes it at the end. It " -"should be used as a main entry point for asyncio programs, and should " -"ideally only be called once." +":meth:`asyncio.TaskGroup.create_task` is a newer alternative that allows for " +"convenient waiting for a group of related tasks." msgstr "" -"Esta función siempre crea un nuevo ciclo de eventos y lo cierra al final. " -"Debe usarse como un punto de entrada principal para los programas asyncio, e " -"idealmente solo debe llamarse una vez." -#: ../Doc/library/asyncio-task.rst:230 ../Doc/library/asyncio-task.rst:374 -#: ../Doc/library/asyncio-task.rst:516 ../Doc/library/asyncio-task.rst:665 -msgid "Example::" -msgstr "Ejemplo::" +#: ../Doc/library/asyncio-task.rst:256 +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 " +"tasks. A task that isn't referenced elsewhere may get garbage collected at " +"any time, even before it's done. For reliable \"fire-and-forget\" background " +"tasks, gather them in a collection::" +msgstr "" -#: ../Doc/library/asyncio-task.rst:240 -msgid "Updated to use :meth:`loop.shutdown_default_executor`." -msgstr "Actualizado para usar :meth:`loop.shutdown_default_executor`." +#: ../Doc/library/asyncio-task.rst:278 ../Doc/library/asyncio-task.rst:1001 +#, fuzzy +msgid "Added the *name* parameter." +msgstr "Se ha añadido el parámetro ``name``." -#: ../Doc/library/asyncio-task.rst:244 +#: ../Doc/library/asyncio-task.rst:281 +#, fuzzy +msgid "Added the *context* parameter." +msgstr "Se ha añadido el parámetro ``name``." + +#: ../Doc/library/asyncio-task.rst:286 +msgid "Task Cancellation" +msgstr "" + +#: ../Doc/library/asyncio-task.rst:288 msgid "" -"The source code for ``asyncio.run()`` can be found in :source:`Lib/asyncio/" -"runners.py`." +"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 "" -"El código fuente para ``asyncio.run()`` se puede encontrar en :source:`Lib/" -"asyncio/runners.py`." -#: ../Doc/library/asyncio-task.rst:248 -msgid "Creating Tasks" -msgstr "Creando Tareas" +#: ../Doc/library/asyncio-task.rst:292 +msgid "" +"It is recommended that coroutines use ``try/finally`` blocks to robustly " +"perform clean-up logic. In case :exc:`asyncio.CancelledError` is explicitly " +"caught, it should generally be propagated when clean-up is complete. Most " +"code can safely ignore :exc:`asyncio.CancelledError`." +msgstr "" -#: ../Doc/library/asyncio-task.rst:252 +#: ../Doc/library/asyncio-task.rst:297 msgid "" -"Wrap the *coro* :ref:`coroutine ` into a :class:`Task` and " -"schedule its execution. Return the Task object." +"The asyncio components that enable structured concurrency, like :class:" +"`asyncio.TaskGroup` and :func:`asyncio.timeout`, are implemented using " +"cancellation internally and might misbehave if a coroutine swallows :exc:" +"`asyncio.CancelledError`. Similarly, user code should not call :meth:" +"`uncancel `." +msgstr "" + +#: ../Doc/library/asyncio-task.rst:306 +msgid "Task Groups" +msgstr "" + +#: ../Doc/library/asyncio-task.rst:308 +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 "" -"Envuelve una :ref:`coroutine ` *coro* en una :class:`Task` y " -"programa su ejecución. Retorna el objeto Tarea." -#: ../Doc/library/asyncio-task.rst:255 +#: ../Doc/library/asyncio-task.rst:313 msgid "" -"If *name* is not ``None``, it is set as the name of the task using :meth:" -"`Task.set_name`." +"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 "" -"Si *name* no es ``None``, se establece como el nombre de la tarea mediante :" -"meth:`Task.set_name`." -#: ../Doc/library/asyncio-task.rst:258 +#: ../Doc/library/asyncio-task.rst:322 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." +"Create a task in this task group. The signature matches that of :func:" +"`asyncio.create_task`." msgstr "" -"La tarea se ejecuta en el bucle retornado por :func:`get_running_loop`, :exc:" -"`RuntimeError` se genera si no hay ningún bucle en ejecución en el " -"subproceso actual." -#: ../Doc/library/asyncio-task.rst:262 +#: ../Doc/library/asyncio-task.rst:325 ../Doc/library/asyncio-task.rst:455 +#: ../Doc/library/asyncio-task.rst:583 ../Doc/library/asyncio-task.rst:647 +#: ../Doc/library/asyncio-task.rst:673 ../Doc/library/asyncio-task.rst:716 +#: ../Doc/library/asyncio-task.rst:812 +msgid "Example::" +msgstr "Ejemplo::" + +#: ../Doc/library/asyncio-task.rst:333 msgid "" -"This function has been **added in Python 3.7**. Prior to Python 3.7, the " -"low-level :func:`asyncio.ensure_future` function can be used instead::" +"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 " +"passing ``tg`` into one of the coroutines and calling ``tg.create_task()`` " +"in that coroutine). Once the last task has finished and the ``async with`` " +"block is exited, no new tasks may be added to the group." msgstr "" -"Esta función se ha **añadido en Python 3.7**. Antes de Python 3.7, la " -"función de bajo nivel :func:`asyncio.ensure_future` se puede utilizar en su " -"lugar::" -#: ../Doc/library/asyncio-task.rst:279 ../Doc/library/asyncio-task.rst:857 -msgid "Added the ``name`` parameter." -msgstr "Se ha añadido el parámetro ``name``." +#: ../Doc/library/asyncio-task.rst:340 +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 " +"the group are cancelled. No further tasks can then be added to the group. At " +"this point, if the body of the ``async with`` statement is still active (i." +"e., :meth:`~object.__aexit__` hasn't been called yet), the task directly " +"containing the ``async with`` statement is also cancelled. The resulting :" +"exc:`asyncio.CancelledError` will interrupt an ``await``, but it will not " +"bubble out of the containing ``async with`` statement." +msgstr "" -#: ../Doc/library/asyncio-task.rst:284 +#: ../Doc/library/asyncio-task.rst:350 +msgid "" +"Once all tasks have finished, if any tasks have failed with an exception " +"other than :exc:`asyncio.CancelledError`, those exceptions are combined in " +"an :exc:`ExceptionGroup` or :exc:`BaseExceptionGroup` (as appropriate; see " +"their documentation) which is then raised." +msgstr "" + +#: ../Doc/library/asyncio-task.rst:357 +msgid "" +"Two base exceptions are treated specially: If any task fails with :exc:" +"`KeyboardInterrupt` or :exc:`SystemExit`, the task group still cancels the " +"remaining tasks and waits for them, but then the initial :exc:" +"`KeyboardInterrupt` or :exc:`SystemExit` is re-raised instead of :exc:" +"`ExceptionGroup` or :exc:`BaseExceptionGroup`." +msgstr "" + +#: ../Doc/library/asyncio-task.rst:363 +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 " +"the same as if one of the tasks failed: the remaining tasks are cancelled " +"and then waited for, and non-cancellation exceptions are grouped into an " +"exception group and raised. The exception passed into :meth:`~object." +"__aexit__`, unless it is :exc:`asyncio.CancelledError`, is also included in " +"the exception group. The same special case is made for :exc:" +"`KeyboardInterrupt` and :exc:`SystemExit` as in the previous paragraph." +msgstr "" + +#: ../Doc/library/asyncio-task.rst:377 msgid "Sleeping" msgstr "Durmiendo" -#: ../Doc/library/asyncio-task.rst:288 +#: ../Doc/library/asyncio-task.rst:381 msgid "Block for *delay* seconds." msgstr "Bloquea por *delay* segundos." -#: ../Doc/library/asyncio-task.rst:290 +#: ../Doc/library/asyncio-task.rst:383 msgid "" "If *result* is provided, it is returned to the caller when the coroutine " "completes." @@ -349,14 +425,14 @@ msgstr "" "Si se proporciona *result*, se retorna al autor de la llamada cuando se " "completa la corrutina." -#: ../Doc/library/asyncio-task.rst:293 +#: ../Doc/library/asyncio-task.rst:386 msgid "" "``sleep()`` always suspends the current task, allowing other tasks to run." msgstr "" "``sleep()`` siempre suspende la tarea actual, permitiendo que se ejecuten " "otras tareas." -#: ../Doc/library/asyncio-task.rst:296 +#: ../Doc/library/asyncio-task.rst:389 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 " @@ -367,33 +443,26 @@ msgstr "" "ejecución prolongada para evitar bloquear el bucle de eventos durante toda " "la duración de la llamada a la función." -#: ../Doc/library/asyncio-task.rst:305 ../Doc/library/asyncio-task.rst:328 -#: ../Doc/library/asyncio-task.rst:371 ../Doc/library/asyncio-task.rst:428 -#: ../Doc/library/asyncio-task.rst:476 ../Doc/library/asyncio-task.rst:513 -#: ../Doc/library/asyncio-task.rst:545 ../Doc/library/asyncio-task.rst:608 -#: ../Doc/library/asyncio-task.rst:638 ../Doc/library/asyncio-task.rst:664 -#: ../Doc/library/asyncio-task.rst:676 -msgid "" -"The ``loop`` parameter. This function has been implicitly getting the " -"current running loop since 3.7. See :ref:`What's New in 3.10's Removed " -"section ` for more information." -msgstr "" -"El parámetro ``loop``. Esta función ha estado obteniendo implícitamente el " -"ciclo en ejecución actual desde 3.7. Consulte :ref:`What's New in 3.10's " -"Removed section ` para obtener más información." - -#: ../Doc/library/asyncio-task.rst:308 +#: ../Doc/library/asyncio-task.rst:395 msgid "" "Example of coroutine displaying the current date every second for 5 seconds::" msgstr "" "Ejemplo de una rutina que muestra la fecha actual cada segundo durante 5 " "segundos::" -#: ../Doc/library/asyncio-task.rst:335 +#: ../Doc/library/asyncio-task.rst:413 ../Doc/library/asyncio-task.rst:504 +#: ../Doc/library/asyncio-task.rst:558 ../Doc/library/asyncio-task.rst:711 +#: ../Doc/library/asyncio-task.rst:741 ../Doc/library/asyncio-task.rst:793 +#: ../Doc/library/asyncio-task.rst:809 ../Doc/library/asyncio-task.rst:818 +#, fuzzy +msgid "Removed the *loop* parameter." +msgstr "El parámetro *loop*." + +#: ../Doc/library/asyncio-task.rst:418 msgid "Running Tasks Concurrently" msgstr "Ejecutando Tareas Concurrentemente" -#: ../Doc/library/asyncio-task.rst:339 +#: ../Doc/library/asyncio-task.rst:422 msgid "" "Run :ref:`awaitable objects ` in the *aws* sequence " "*concurrently*." @@ -401,7 +470,7 @@ msgstr "" "Ejecute :ref:`objetos esperables ` en la secuencia *aws* " "de forma *concurrently*." -#: ../Doc/library/asyncio-task.rst:342 +#: ../Doc/library/asyncio-task.rst:425 msgid "" "If any awaitable in *aws* is a coroutine, it is automatically scheduled as a " "Task." @@ -409,7 +478,7 @@ msgstr "" "Si cualquier esperable en *aws* es una corrutina, se programa " "automáticamente como una Tarea." -#: ../Doc/library/asyncio-task.rst:345 +#: ../Doc/library/asyncio-task.rst:428 msgid "" "If all awaitables are completed successfully, the result is an aggregate " "list of returned values. The order of result values corresponds to the " @@ -419,7 +488,7 @@ msgstr "" "lista agregada de valores retornados. El orden de los valores de resultado " "corresponde al orden de esperables en *aws*." -#: ../Doc/library/asyncio-task.rst:349 +#: ../Doc/library/asyncio-task.rst:432 msgid "" "If *return_exceptions* is ``False`` (default), the first raised exception is " "immediately propagated to the task that awaits on ``gather()``. Other " @@ -431,7 +500,7 @@ msgstr "" "``gather()``. Otros esperables en la secuencia *aws* **no se cancelarán** y " "continuarán ejecutándose." -#: ../Doc/library/asyncio-task.rst:354 +#: ../Doc/library/asyncio-task.rst:437 msgid "" "If *return_exceptions* is ``True``, exceptions are treated the same as " "successful results, and aggregated in the result list." @@ -439,7 +508,7 @@ msgstr "" "Si *return_exceptions* es ``True``, las excepciones se tratan igual que los " "resultados correctos y se agregan en la lista de resultados." -#: ../Doc/library/asyncio-task.rst:357 +#: ../Doc/library/asyncio-task.rst:440 msgid "" "If ``gather()`` is *cancelled*, all submitted awaitables (that have not " "completed yet) are also *cancelled*." @@ -447,7 +516,7 @@ msgstr "" "Si ``gather()`` es *cancelado*, todos los esperables enviados (que aún no se " "han completado) también se *cancelan*." -#: ../Doc/library/asyncio-task.rst:360 +#: ../Doc/library/asyncio-task.rst:443 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** " @@ -459,7 +528,13 @@ msgstr "" "cancela en este caso. Esto es para evitar la cancelación de una Tarea/Future " "enviada para hacer que otras Tareas/Futures sean canceladas." -#: ../Doc/library/asyncio-task.rst:412 +#: ../Doc/library/asyncio-task.rst:450 +msgid "" +"A more modern way to create and run tasks concurrently and wait for their " +"completion is :class:`asyncio.TaskGroup`." +msgstr "" + +#: ../Doc/library/asyncio-task.rst:493 msgid "" "If *return_exceptions* is False, cancelling gather() after it has been " "marked done won't cancel any submitted awaitables. For instance, gather can " @@ -474,7 +549,7 @@ msgstr "" "detectar una excepción (generada por uno de los elementos pendientes) de " "recopilación no cancelará ningún otro elemento pendiente." -#: ../Doc/library/asyncio-task.rst:419 +#: ../Doc/library/asyncio-task.rst:500 msgid "" "If the *gather* itself is cancelled, the cancellation is propagated " "regardless of *return_exceptions*." @@ -482,7 +557,7 @@ msgstr "" "Si se cancela el propio *gather*, la cancelación se propaga " "independientemente de *return_exceptions*." -#: ../Doc/library/asyncio-task.rst:429 +#: ../Doc/library/asyncio-task.rst:507 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 " @@ -492,11 +567,11 @@ msgstr "" "posicionales o no todos los argumentos posicionales son objetos de tipo " "Future y no hay un bucle de eventos en ejecución." -#: ../Doc/library/asyncio-task.rst:436 +#: ../Doc/library/asyncio-task.rst:514 msgid "Shielding From Cancellation" msgstr "Protección contra Cancelación" -#: ../Doc/library/asyncio-task.rst:440 +#: ../Doc/library/asyncio-task.rst:518 msgid "" "Protect an :ref:`awaitable object ` from being :meth:" "`cancelled `." @@ -504,19 +579,19 @@ msgstr "" "Protege un :ref:`objeto esperable ` de ser :meth:" "`cancelado `." -#: ../Doc/library/asyncio-task.rst:443 ../Doc/library/asyncio-task.rst:490 +#: ../Doc/library/asyncio-task.rst:521 ../Doc/library/asyncio-task.rst:693 msgid "If *aw* is a coroutine it is automatically scheduled as a Task." msgstr "Si *aw* es una corrutina, se programa automáticamente como una Tarea." -#: ../Doc/library/asyncio-task.rst:445 +#: ../Doc/library/asyncio-task.rst:523 msgid "The statement::" msgstr "La declaración::" -#: ../Doc/library/asyncio-task.rst:449 +#: ../Doc/library/asyncio-task.rst:528 msgid "is equivalent to::" msgstr "es equivalente a::" -#: ../Doc/library/asyncio-task.rst:453 +#: ../Doc/library/asyncio-task.rst:532 msgid "" "*except* that if the coroutine containing it is cancelled, the Task running " "in ``something()`` is not cancelled. From the point of view of " @@ -530,7 +605,7 @@ msgstr "" "cancelado, por lo que la expresión \"await\" sigue generando un :exc:" "`CancelledError`." -#: ../Doc/library/asyncio-task.rst:459 +#: ../Doc/library/asyncio-task.rst:538 msgid "" "If ``something()`` is cancelled by other means (i.e. from within itself) " "that would also cancel ``shield()``." @@ -538,7 +613,7 @@ msgstr "" "Si ``something()`` se cancela por otros medios (es decir, desde dentro de sí " "mismo) eso también cancelaría ``shield()``." -#: ../Doc/library/asyncio-task.rst:462 +#: ../Doc/library/asyncio-task.rst:541 msgid "" "If it is desired to completely ignore cancellation (not recommended) the " "``shield()`` function should be combined with a try/except clause, as " @@ -548,7 +623,15 @@ msgstr "" "función ``shield()`` debe combinarse con una cláusula try/except, como se " "indica a continuación::" -#: ../Doc/library/asyncio-task.rst:477 +#: ../Doc/library/asyncio-task.rst:553 +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 " +"tasks. A task that isn't referenced elsewhere may get garbage collected at " +"any time, even before it's done." +msgstr "" + +#: ../Doc/library/asyncio-task.rst:561 msgid "" "Deprecation warning is emitted if *aw* is not Future-like object and there " "is no running event loop." @@ -556,11 +639,107 @@ msgstr "" "Se emite una advertencia de obsolescencia si *aw* no es un objeto similares " "a Futures y no hay un bucle de eventos en ejecución." -#: ../Doc/library/asyncio-task.rst:483 +#: ../Doc/library/asyncio-task.rst:567 msgid "Timeouts" msgstr "Tiempo agotado" -#: ../Doc/library/asyncio-task.rst:487 +#: ../Doc/library/asyncio-task.rst:571 +msgid "" +"An :ref:`asynchronous context manager ` that can be " +"used to limit the amount of time spent waiting on something." +msgstr "" + +#: ../Doc/library/asyncio-task.rst:575 +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 "" + +#: ../Doc/library/asyncio-task.rst:580 +msgid "" +"In either case, the context manager can be rescheduled after creation using :" +"meth:`Timeout.reschedule`." +msgstr "" + +#: ../Doc/library/asyncio-task.rst:589 +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." +"CancelledError` internally, transforming it into an :exc:`asyncio." +"TimeoutError` which can be caught and handled." +msgstr "" + +#: ../Doc/library/asyncio-task.rst:596 +msgid "" +"The :func:`asyncio.timeout` context manager is what transforms the :exc:" +"`asyncio.CancelledError` into an :exc:`asyncio.TimeoutError`, which means " +"the :exc:`asyncio.TimeoutError` can only be caught *outside* of the context " +"manager." +msgstr "" + +#: ../Doc/library/asyncio-task.rst:601 +msgid "Example of catching :exc:`asyncio.TimeoutError`::" +msgstr "" + +#: ../Doc/library/asyncio-task.rst:612 +msgid "" +"The context manager produced by :func:`asyncio.timeout` can be rescheduled " +"to a different deadline and inspected." +msgstr "" + +#: ../Doc/library/asyncio-task.rst:617 +msgid "" +"An :ref:`asynchronous context manager ` that limits " +"time spent inside of it." +msgstr "" + +#: ../Doc/library/asyncio-task.rst:624 +msgid "" +"Return the current deadline, or ``None`` if the current deadline is not set." +msgstr "" + +#: ../Doc/library/asyncio-task.rst:627 +msgid "" +"The deadline is a float, consistent with the time returned by :meth:`loop." +"time`." +msgstr "" + +#: ../Doc/library/asyncio-task.rst:632 +msgid "Change the time the timeout will trigger." +msgstr "" + +#: ../Doc/library/asyncio-task.rst:634 +msgid "" +"If *when* is ``None``, any current deadline will be removed, and the context " +"manager will wait indefinitely." +msgstr "" + +#: ../Doc/library/asyncio-task.rst:637 +msgid "If *when* is a float, it is set as the new deadline." +msgstr "" + +#: ../Doc/library/asyncio-task.rst:639 +msgid "" +"if *when* is in the past, the timeout will trigger on the next iteration of " +"the event loop." +msgstr "" + +#: ../Doc/library/asyncio-task.rst:644 +msgid "Return whether the context manager has exceeded its deadline (expired)." +msgstr "" + +#: ../Doc/library/asyncio-task.rst:664 +msgid "Timeout context managers can be safely nested." +msgstr "" + +#: ../Doc/library/asyncio-task.rst:670 +msgid "" +"Similar to :func:`asyncio.timeout`, except *when* is the absolute time to " +"stop waiting, or ``None``." +msgstr "" + +#: ../Doc/library/asyncio-task.rst:690 msgid "" "Wait for the *aw* :ref:`awaitable ` to complete with a " "timeout." @@ -568,7 +747,7 @@ msgstr "" "Espere a que el *aw* :ref:`esperable ` se complete con " "un tiempo agotado." -#: ../Doc/library/asyncio-task.rst:492 +#: ../Doc/library/asyncio-task.rst:695 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." @@ -576,15 +755,15 @@ msgstr "" "*timeout* puede ser ``None`` o punto flotante o un número entero de segundos " "a esperar. Si *timeout* es ``None``, se bloquea hasta que Future se completa." -#: ../Doc/library/asyncio-task.rst:496 +#: ../Doc/library/asyncio-task.rst:699 +#, fuzzy msgid "" -"If a timeout occurs, it cancels the task and raises :exc:`asyncio." -"TimeoutError`." +"If a timeout occurs, it cancels the task and raises :exc:`TimeoutError`." msgstr "" "Si se produce un agotamiento de tiempo, cancela la tarea y genera :exc:" "`asyncio.TimeoutError`." -#: ../Doc/library/asyncio-task.rst:499 +#: ../Doc/library/asyncio-task.rst:702 msgid "" "To avoid the task :meth:`cancellation `, wrap it in :func:" "`shield`." @@ -592,7 +771,7 @@ msgstr "" "Para evitar la :meth:`cancelación ` de la tarea , envuélvala " "en :func:`shield`." -#: ../Doc/library/asyncio-task.rst:502 +#: ../Doc/library/asyncio-task.rst:705 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 " @@ -602,44 +781,47 @@ msgstr "" "espera total puede exceder el *timeout*. Si ocurre una excepción durante la " "cancelación, se propaga." -#: ../Doc/library/asyncio-task.rst:506 +#: ../Doc/library/asyncio-task.rst:709 msgid "If the wait is cancelled, the future *aw* is also cancelled." msgstr "Si se cancela la espera, el Future *aw* también se cancela." -#: ../Doc/library/asyncio-task.rst:536 +#: ../Doc/library/asyncio-task.rst:736 +#, fuzzy msgid "" "When *aw* is cancelled due to a timeout, ``wait_for`` waits for *aw* to be " -"cancelled. Previously, it raised :exc:`asyncio.TimeoutError` immediately." +"cancelled. Previously, it raised :exc:`TimeoutError` immediately." msgstr "" "Cuando *aw* se cancela debido a un agotamiento de tiempo, ``wait_for`` " "espera a que se cancele *aw*. Anteriormente, se lanzó inmediatamente :exc:" "`asyncio.TimeoutError`." -#: ../Doc/library/asyncio-task.rst:549 +#: ../Doc/library/asyncio-task.rst:746 msgid "Waiting Primitives" msgstr "Esperando Primitivas" -#: ../Doc/library/asyncio-task.rst:553 +#: ../Doc/library/asyncio-task.rst:750 +#, fuzzy msgid "" -"Run :ref:`awaitable objects ` in the *aws* iterable " -"concurrently and block until the condition specified by *return_when*." +"Run :class:`~asyncio.Future` and :class:`~asyncio.Task` instances in the " +"*aws* iterable concurrently and block until the condition specified by " +"*return_when*." msgstr "" "Ejecuta :ref:`objetos en espera ` en el *aws* iterable " "simultáneamente y bloquee hasta la condición especificada por *return_when*." -#: ../Doc/library/asyncio-task.rst:557 +#: ../Doc/library/asyncio-task.rst:754 msgid "The *aws* iterable must not be empty." msgstr "El iterable *aws* no debe estar vacío." -#: ../Doc/library/asyncio-task.rst:559 +#: ../Doc/library/asyncio-task.rst:756 msgid "Returns two sets of Tasks/Futures: ``(done, pending)``." msgstr "Retorna dos conjuntos de Tareas/Futures: ``(done, pending)``." -#: ../Doc/library/asyncio-task.rst:561 +#: ../Doc/library/asyncio-task.rst:758 msgid "Usage::" msgstr "Uso::" -#: ../Doc/library/asyncio-task.rst:565 +#: ../Doc/library/asyncio-task.rst:762 msgid "" "*timeout* (a float or int), if specified, can be used to control the maximum " "number of seconds to wait before returning." @@ -648,17 +830,18 @@ msgstr "" "para controlar el número máximo de segundos que hay que esperar antes de " "retornar." -#: ../Doc/library/asyncio-task.rst:568 +#: ../Doc/library/asyncio-task.rst:765 +#, fuzzy msgid "" -"Note that this function does not raise :exc:`asyncio.TimeoutError`. Futures " -"or Tasks that aren't done when the timeout occurs are simply returned in the " -"second set." +"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 "" "Tenga en cuenta que esta función no lanza :exc:`asyncio.TimeoutError`. Los " "Futures o Tareas que no terminan cuando se agota el tiempo simplemente se " "retornan en el segundo conjunto." -#: ../Doc/library/asyncio-task.rst:572 +#: ../Doc/library/asyncio-task.rst:769 msgid "" "*return_when* indicates when this function should return. It must be one of " "the following constants:" @@ -666,27 +849,27 @@ msgstr "" "*return_when* indica cuándo debe retornar esta función. Debe ser una de las " "siguientes constantes:" -#: ../Doc/library/asyncio-task.rst:578 +#: ../Doc/library/asyncio-task.rst:775 msgid "Constant" msgstr "Constante" -#: ../Doc/library/asyncio-task.rst:578 +#: ../Doc/library/asyncio-task.rst:775 msgid "Description" msgstr "Descripción" -#: ../Doc/library/asyncio-task.rst:580 +#: ../Doc/library/asyncio-task.rst:777 msgid ":const:`FIRST_COMPLETED`" msgstr ":const:`FIRST_COMPLETED`" -#: ../Doc/library/asyncio-task.rst:580 +#: ../Doc/library/asyncio-task.rst:777 msgid "The function will return when any future finishes or is cancelled." msgstr "La función retornará cuando cualquier Future termine o se cancele." -#: ../Doc/library/asyncio-task.rst:583 +#: ../Doc/library/asyncio-task.rst:780 msgid ":const:`FIRST_EXCEPTION`" msgstr ":const:`FIRST_EXCEPTION`" -#: ../Doc/library/asyncio-task.rst:583 +#: ../Doc/library/asyncio-task.rst:780 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:" @@ -696,15 +879,15 @@ msgstr "" "excepción. Si ningún Future lanza una excepción, entonces es equivalente a :" "const:`ALL_COMPLETED`." -#: ../Doc/library/asyncio-task.rst:589 +#: ../Doc/library/asyncio-task.rst:786 msgid ":const:`ALL_COMPLETED`" msgstr ":const:`ALL_COMPLETED`" -#: ../Doc/library/asyncio-task.rst:589 +#: ../Doc/library/asyncio-task.rst:786 msgid "The function will return when all futures finish or are cancelled." msgstr "La función retornará cuando todos los Futures terminen o se cancelen." -#: ../Doc/library/asyncio-task.rst:593 +#: ../Doc/library/asyncio-task.rst:790 msgid "" "Unlike :func:`~asyncio.wait_for`, ``wait()`` does not cancel the futures " "when a timeout occurs." @@ -712,37 +895,12 @@ msgstr "" "A diferencia de :func:`~asyncio.wait_for`, ``wait()`` no cancela los Futures " "cuando se produce un agotamiento de tiempo." -#: ../Doc/library/asyncio-task.rst:598 -msgid "" -"If any awaitable in *aws* is a coroutine, it is automatically scheduled as a " -"Task. Passing coroutines objects to ``wait()`` directly is deprecated as it " -"leads to :ref:`confusing behavior `." -msgstr "" -"Si cualquier aguardable en *aws* es una corrutina, se programa " -"automáticamente como una Tarea. El paso de objetos corrutinas a ``wait()`` " -"directamente está en desuso, ya que conduce a :ref:`comportamiento confuso " -"`." - -#: ../Doc/library/asyncio-task.rst:612 -msgid "" -"``wait()`` schedules coroutines as Tasks automatically and later returns " -"those implicitly created Task objects in ``(done, pending)`` sets. " -"Therefore the following code won't work as expected::" -msgstr "" -"``wait()`` programa las corrutinas como Tareas automáticamente y " -"posteriormente retorna los objetos Tarea creados implícitamente en conjuntos " -"``(done, pending)``. Por lo tanto, el código siguiente no funcionará como se " -"esperaba::" - -#: ../Doc/library/asyncio-task.rst:625 -msgid "Here is how the above snippet can be fixed::" -msgstr "Aquí es cómo se puede arreglar el fragmento de código anterior::" - -#: ../Doc/library/asyncio-task.rst:645 -msgid "Passing coroutine objects to ``wait()`` directly is deprecated." +#: ../Doc/library/asyncio-task.rst:796 +#, fuzzy +msgid "Passing coroutine objects to ``wait()`` directly is forbidden." msgstr "El paso de objetos corrutina a ``wait()`` directamente está en desuso." -#: ../Doc/library/asyncio-task.rst:651 +#: ../Doc/library/asyncio-task.rst:801 msgid "" "Run :ref:`awaitable objects ` in the *aws* iterable " "concurrently. Return an iterator of coroutines. Each coroutine returned can " @@ -754,15 +912,15 @@ msgstr "" "corrutina devuelta para obtener el siguiente resultado más temprano del " "iterable de los esperables restantes." -#: ../Doc/library/asyncio-task.rst:656 +#: ../Doc/library/asyncio-task.rst:806 +#, fuzzy msgid "" -"Raises :exc:`asyncio.TimeoutError` if the timeout occurs before all Futures " -"are done." +"Raises :exc:`TimeoutError` if the timeout occurs before all Futures are done." msgstr "" "Lanza :exc:`asyncio.TimeoutError` si el agotamiento de tiempo ocurre antes " "que todos los Futures terminen." -#: ../Doc/library/asyncio-task.rst:677 +#: ../Doc/library/asyncio-task.rst:821 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." @@ -771,15 +929,15 @@ msgstr "" "en el iterable *aws* son objetos de tipo Future y no hay un bucle de eventos " "en ejecución." -#: ../Doc/library/asyncio-task.rst:683 +#: ../Doc/library/asyncio-task.rst:827 msgid "Running in Threads" msgstr "Ejecutando en Hilos" -#: ../Doc/library/asyncio-task.rst:687 +#: ../Doc/library/asyncio-task.rst:831 msgid "Asynchronously run function *func* in a separate thread." msgstr "Ejecutar asincrónicamente la función *func* en un hilo separado." -#: ../Doc/library/asyncio-task.rst:689 +#: ../Doc/library/asyncio-task.rst:833 msgid "" "Any \\*args and \\*\\*kwargs supplied for this function are directly passed " "to *func*. Also, the current :class:`contextvars.Context` is propagated, " @@ -791,41 +949,44 @@ msgstr "" "propaga, lo que permite acceder a las variables de contexto del subproceso " "del bucle de eventos en el subproceso separado." -#: ../Doc/library/asyncio-task.rst:694 +#: ../Doc/library/asyncio-task.rst:838 msgid "" "Return a coroutine that can be awaited to get the eventual result of *func*." msgstr "" "Retorna una corrutina que se puede esperar para obtener el resultado final " "de *func*." -#: ../Doc/library/asyncio-task.rst:696 +#: ../Doc/library/asyncio-task.rst:840 +#, fuzzy 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 ran in the main thread. For example::" +"were run in the main thread. For example::" msgstr "" "Esta función de corrutina está destinada principalmente a ser utilizada para " "ejecutar funciones/métodos vinculados a IO que de otro modo bloquearían el " "bucle de eventos si se ejecutaran en el hilo principal. Por ejemplo::" -#: ../Doc/library/asyncio-task.rst:726 +#: ../Doc/library/asyncio-task.rst:870 +#, fuzzy 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. Instead, " -"by using `asyncio.to_thread()`, we can run it in a separate thread without " -"blocking the event loop." +"Directly calling ``blocking_io()`` in any coroutine would block the event " +"loop for its duration, resulting in an additional 1 second of run time. " +"Instead, by using ``asyncio.to_thread()``, we can run it in a separate " +"thread without blocking the event loop." msgstr "" "Llamando directamente a `blocking_io()` en cualquier corrutina bloquearía el " "bucle de eventos por su duración, lo que daría como resultado 1 segundo " "adicional de tiempo de ejecución. En cambio, usando `asyncio.to_thread()`, " "podemos ejecutarlo en un hilo separado sin bloquear el bucle de eventos." -#: ../Doc/library/asyncio-task.rst:733 +#: ../Doc/library/asyncio-task.rst:877 +#, fuzzy 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 " +"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 " "release the GIL or alternative Python implementations that don't have one, " -"`asyncio.to_thread()` can also be used for CPU-bound functions." +"``asyncio.to_thread()`` can also be used for CPU-bound functions." msgstr "" "Debido al :term:`GIL`, `asyncio.to_thread()` normalmente solo se puede usar " "para hacer que las funciones vinculadas a IO no bloqueen. Sin embargo, para " @@ -833,16 +994,16 @@ msgstr "" "Python que no tienen una, `asyncio.to_thread()` también se puede usar para " "funciones vinculadas a la CPU." -#: ../Doc/library/asyncio-task.rst:742 +#: ../Doc/library/asyncio-task.rst:886 msgid "Scheduling From Other Threads" msgstr "Planificación Desde Otros Hilos" -#: ../Doc/library/asyncio-task.rst:746 +#: ../Doc/library/asyncio-task.rst:890 msgid "Submit a coroutine to the given event loop. Thread-safe." msgstr "" "Envía una corrutina al bucle de eventos especificado. Seguro para Hilos." -#: ../Doc/library/asyncio-task.rst:748 +#: ../Doc/library/asyncio-task.rst:892 msgid "" "Return a :class:`concurrent.futures.Future` to wait for the result from " "another OS thread." @@ -850,7 +1011,7 @@ msgstr "" "Retorna :class:`concurrent.futures.Future` para esperar el resultado de otro " "hilo del SO (Sistema Operativo)." -#: ../Doc/library/asyncio-task.rst:751 +#: ../Doc/library/asyncio-task.rst:895 msgid "" "This function is meant to be called from a different OS thread than the one " "where the event loop is running. Example::" @@ -858,7 +1019,7 @@ msgstr "" "Esta función está pensada para llamarse desde un hilo del SO diferente al " "que se ejecuta el bucle de eventos. Ejemplo::" -#: ../Doc/library/asyncio-task.rst:763 +#: ../Doc/library/asyncio-task.rst:907 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::" @@ -867,7 +1028,7 @@ msgstr "" "notificado. También se puede utilizar para cancelar la tarea en el bucle de " "eventos::" -#: ../Doc/library/asyncio-task.rst:777 +#: ../Doc/library/asyncio-task.rst:921 msgid "" "See the :ref:`concurrency and multithreading ` " "section of the documentation." @@ -875,7 +1036,7 @@ msgstr "" "Consulte la sección de la documentación :ref:`Concurrencia y multi hilos " "`." -#: ../Doc/library/asyncio-task.rst:780 +#: ../Doc/library/asyncio-task.rst:924 msgid "" "Unlike other asyncio functions this function requires the *loop* argument to " "be passed explicitly." @@ -883,11 +1044,11 @@ msgstr "" "A diferencia de otras funciones asyncio, esta función requiere que el " "argumento *loop* se pase explícitamente." -#: ../Doc/library/asyncio-task.rst:787 +#: ../Doc/library/asyncio-task.rst:931 msgid "Introspection" msgstr "Introspección" -#: ../Doc/library/asyncio-task.rst:792 +#: ../Doc/library/asyncio-task.rst:936 msgid "" "Return the currently running :class:`Task` instance, or ``None`` if no task " "is running." @@ -895,7 +1056,7 @@ msgstr "" "Retorna la instancia :class:`Task` actualmente en ejecución o ``None`` si no " "se está ejecutando ninguna tarea." -#: ../Doc/library/asyncio-task.rst:795 +#: ../Doc/library/asyncio-task.rst:939 msgid "" "If *loop* is ``None`` :func:`get_running_loop` is used to get the current " "loop." @@ -903,12 +1064,12 @@ msgstr "" "Si *loop* es ``None`` :func:`get_running_loop` se utiliza para obtener el " "bucle actual." -#: ../Doc/library/asyncio-task.rst:803 +#: ../Doc/library/asyncio-task.rst:947 msgid "Return a set of not yet finished :class:`Task` objects run by the loop." msgstr "" "Retorna un conjunto de objetos :class:`Task` que se ejecutan por el bucle." -#: ../Doc/library/asyncio-task.rst:806 +#: ../Doc/library/asyncio-task.rst:950 msgid "" "If *loop* is ``None``, :func:`get_running_loop` is used for getting current " "loop." @@ -916,11 +1077,11 @@ msgstr "" "Si *loop* es ``None``, :func:`get_running_loop` se utiliza para obtener el " "bucle actual." -#: ../Doc/library/asyncio-task.rst:813 +#: ../Doc/library/asyncio-task.rst:957 msgid "Task Object" msgstr "Objeto Task" -#: ../Doc/library/asyncio-task.rst:817 +#: ../Doc/library/asyncio-task.rst:961 msgid "" "A :class:`Future-like ` object that runs a Python :ref:`coroutine " "`. Not thread-safe." @@ -928,7 +1089,7 @@ msgstr "" "Un objeto :class:`similar a Future ` que ejecuta Python :ref:" "`coroutine `. No es seguro hilos." -#: ../Doc/library/asyncio-task.rst:820 +#: ../Doc/library/asyncio-task.rst:964 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 " @@ -940,7 +1101,7 @@ msgstr "" "corrutina y espera la finalización del Future. Cuando el Future *termina*, " "se reanuda la ejecución de la corrutina envuelta." -#: ../Doc/library/asyncio-task.rst:826 +#: ../Doc/library/asyncio-task.rst:970 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 " @@ -951,7 +1112,7 @@ msgstr "" "de un Future, el bucle de eventos ejecuta otras tareas, retorno de llamada o " "realiza operaciones de E/S." -#: ../Doc/library/asyncio-task.rst:831 +#: ../Doc/library/asyncio-task.rst:975 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. " @@ -961,7 +1122,7 @@ msgstr "" "Tareas, o las funciones de bajo nivel :meth:`loop.create_task` o :func:" "`ensure_future`. Se desaconseja la creación de instancias manuales de Tareas." -#: ../Doc/library/asyncio-task.rst:836 +#: ../Doc/library/asyncio-task.rst:980 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 " @@ -973,7 +1134,7 @@ msgstr "" "corrutina contenida. Si una corrutina está esperando en un objeto Future " "durante la cancelación, se cancelará el objeto Future." -#: ../Doc/library/asyncio-task.rst:841 +#: ../Doc/library/asyncio-task.rst:985 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:" @@ -983,7 +1144,7 @@ msgstr "" "cancelada. El método devuelve ``True`` si la corrutina contenida no suprimió " "la excepción :exc:`CancelledError` y se canceló realmente." -#: ../Doc/library/asyncio-task.rst:846 +#: ../Doc/library/asyncio-task.rst:990 msgid "" ":class:`asyncio.Task` inherits from :class:`Future` all of its APIs except :" "meth:`Future.set_result` and :meth:`Future.set_exception`." @@ -991,7 +1152,7 @@ msgstr "" ":class:`asyncio.Task` hereda de :class:`Future` todas sus API excepto :meth:" "`Future.set_result` y :meth:`Future.set_exception`." -#: ../Doc/library/asyncio-task.rst:850 +#: ../Doc/library/asyncio-task.rst:994 msgid "" "Tasks support the :mod:`contextvars` module. When a Task is created it " "copies the current context and later runs its coroutine in the copied " @@ -1001,15 +1162,11 @@ msgstr "" "copia el contexto actual y, posteriormente, ejecuta su corrutina en el " "contexto copiado." -#: ../Doc/library/asyncio-task.rst:854 +#: ../Doc/library/asyncio-task.rst:998 msgid "Added support for the :mod:`contextvars` module." msgstr "Agregado soporte para el módulo :mod:`contextvars`." -#: ../Doc/library/asyncio-task.rst:862 -msgid "The *loop* parameter." -msgstr "El parámetro *loop*." - -#: ../Doc/library/asyncio-task.rst:863 +#: ../Doc/library/asyncio-task.rst:1004 msgid "" "Deprecation warning is emitted if *loop* is not specified and there is no " "running event loop." @@ -1017,65 +1174,11 @@ msgstr "" "Se emite una advertencia de obsolescencia si no se especifica *loop* y no " "hay un bucle de eventos en ejecución." -#: ../Doc/library/asyncio-task.rst:869 -msgid "Request the Task to be cancelled." -msgstr "Solicita que se cancele la Tarea." - -#: ../Doc/library/asyncio-task.rst:871 -msgid "" -"This arranges for a :exc:`CancelledError` exception to be thrown into the " -"wrapped coroutine on the next cycle of the event loop." -msgstr "" -"Esto hace que una excepción :exc:`CancelledError` sea lanzada a la corrutina " -"contenida en el próximo ciclo del bucle de eventos." - -#: ../Doc/library/asyncio-task.rst:874 -msgid "" -"The coroutine then has a chance to clean up or even deny the request by " -"suppressing the exception with a :keyword:`try` ... ... ``except " -"CancelledError`` ... :keyword:`finally` block. Therefore, unlike :meth:" -"`Future.cancel`, :meth:`Task.cancel` does not guarantee that the Task will " -"be cancelled, although suppressing cancellation completely is not common and " -"is actively discouraged." -msgstr "" -"La corrutina entonces tiene la oportunidad de limpiar o incluso denegar la " -"solicitud suprimiendo la excepción con un bloque :keyword:`try` ... ..." -"``except CancelledError`` ... :keyword:`finally`. Por lo tanto, a diferencia " -"de :meth:`Future.cancel`, :meth:`Task.cancel` no garantiza que la tarea será " -"cancelada, aunque suprimir la cancelación por completo no es común y se " -"desalienta activamente." - -#: ../Doc/library/asyncio-task.rst:882 -msgid "Added the ``msg`` parameter." -msgstr "Se agregó el parámetro ``msg``." - -#: ../Doc/library/asyncio-task.rst:887 -msgid "" -"The following example illustrates how coroutines can intercept the " -"cancellation request::" -msgstr "" -"En el ejemplo siguiente se muestra cómo las corrutinas pueden interceptar la " -"solicitud de cancelación::" - -#: ../Doc/library/asyncio-task.rst:926 -msgid "Return ``True`` if the Task is *cancelled*." -msgstr "Retorna ``True`` si la Tarea se *cancela*." - -#: ../Doc/library/asyncio-task.rst:928 -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 "" -"La tarea se *cancela* cuando se solicitó la cancelación con :meth:`cancel` y " -"la corrutina contenida propagó la excepción :exc:`CancelledError` que se le " -"ha lanzado." - -#: ../Doc/library/asyncio-task.rst:934 +#: ../Doc/library/asyncio-task.rst:1010 msgid "Return ``True`` if the Task is *done*." msgstr "Retorna ``True`` si la Tarea está *finalizada*." -#: ../Doc/library/asyncio-task.rst:936 +#: ../Doc/library/asyncio-task.rst:1012 msgid "" "A Task is *done* when the wrapped coroutine either returned a value, raised " "an exception, or the Task was cancelled." @@ -1083,11 +1186,11 @@ msgstr "" "Una tarea está *finalizada* cuando la corrutina contenida retornó un valor, " "lanzó una excepción, o se canceló la Tarea." -#: ../Doc/library/asyncio-task.rst:941 +#: ../Doc/library/asyncio-task.rst:1017 msgid "Return the result of the Task." msgstr "Retorna el resultado de la Tarea." -#: ../Doc/library/asyncio-task.rst:943 +#: ../Doc/library/asyncio-task.rst:1019 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.)" @@ -1096,7 +1199,7 @@ msgstr "" "contenida (o si la corrutina lanzó una excepción, esa excepción se vuelve a " "relanzar.)" -#: ../Doc/library/asyncio-task.rst:947 ../Doc/library/asyncio-task.rst:961 +#: ../Doc/library/asyncio-task.rst:1023 ../Doc/library/asyncio-task.rst:1037 msgid "" "If the Task has been *cancelled*, this method raises a :exc:`CancelledError` " "exception." @@ -1104,7 +1207,7 @@ msgstr "" "Si la Tarea ha sido *cancelada*, este método lanza una excepción :exc:" "`CancelledError`." -#: ../Doc/library/asyncio-task.rst:950 +#: ../Doc/library/asyncio-task.rst:1026 msgid "" "If the Task's result isn't yet available, this method raises a :exc:" "`InvalidStateError` exception." @@ -1112,11 +1215,11 @@ msgstr "" "Si el resultado de la Tarea aún no está disponible, este método lanza una " "excepción :exc:`InvalidStateError`." -#: ../Doc/library/asyncio-task.rst:955 +#: ../Doc/library/asyncio-task.rst:1031 msgid "Return the exception of the Task." msgstr "Retorna la excepción de la Tarea." -#: ../Doc/library/asyncio-task.rst:957 +#: ../Doc/library/asyncio-task.rst:1033 msgid "" "If the wrapped coroutine raised an exception that exception is returned. If " "the wrapped coroutine returned normally this method returns ``None``." @@ -1124,7 +1227,7 @@ msgstr "" "Si la corrutina contenida lanzó una excepción, esa excepción es retornada. " "Si la corrutina contenida retorna normalmente, este método retorna ``None``." -#: ../Doc/library/asyncio-task.rst:964 +#: ../Doc/library/asyncio-task.rst:1040 msgid "" "If the Task isn't *done* yet, this method raises an :exc:`InvalidStateError` " "exception." @@ -1132,28 +1235,28 @@ msgstr "" "Si la Tarea aún no está *terminada*, este método lanza una excepción :exc:" "`InvalidStateError`." -#: ../Doc/library/asyncio-task.rst:969 +#: ../Doc/library/asyncio-task.rst:1045 msgid "Add a callback to be run when the Task is *done*." msgstr "" "Agrega una retro llamada que se ejecutará cuando la Tarea esté *terminada*." -#: ../Doc/library/asyncio-task.rst:971 ../Doc/library/asyncio-task.rst:980 +#: ../Doc/library/asyncio-task.rst:1047 ../Doc/library/asyncio-task.rst:1056 msgid "This method should only be used in low-level callback-based code." msgstr "" "Este método solo se debe usar en código basado en retrollamada de bajo nivel." -#: ../Doc/library/asyncio-task.rst:973 +#: ../Doc/library/asyncio-task.rst:1049 msgid "" "See the documentation of :meth:`Future.add_done_callback` for more details." msgstr "" "Consulte la documentación de :meth:`Future.add_done_callback` para obtener " "más detalles." -#: ../Doc/library/asyncio-task.rst:978 +#: ../Doc/library/asyncio-task.rst:1054 msgid "Remove *callback* from the callbacks list." msgstr "Remueve la *retrollamada* de la lista de retrollamadas." -#: ../Doc/library/asyncio-task.rst:982 +#: ../Doc/library/asyncio-task.rst:1058 msgid "" "See the documentation of :meth:`Future.remove_done_callback` for more " "details." @@ -1161,11 +1264,11 @@ msgstr "" "Consulte la documentación de :meth:`Future.remove_done_callback` para " "obtener más detalles." -#: ../Doc/library/asyncio-task.rst:987 +#: ../Doc/library/asyncio-task.rst:1063 msgid "Return the list of stack frames for this Task." msgstr "Retorna la lista de marcos de pila para esta tarea." -#: ../Doc/library/asyncio-task.rst:989 +#: ../Doc/library/asyncio-task.rst:1065 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, " @@ -1177,15 +1280,15 @@ msgstr "" "retorna una lista vacía. Si la corrutina terminó por una excepción, esto " "retorna la lista de marcos de seguimiento." -#: ../Doc/library/asyncio-task.rst:995 +#: ../Doc/library/asyncio-task.rst:1071 msgid "The frames are always ordered from oldest to newest." msgstr "Los marcos siempre se ordenan de más antiguo a más nuevo." -#: ../Doc/library/asyncio-task.rst:997 +#: ../Doc/library/asyncio-task.rst:1073 msgid "Only one stack frame is returned for a suspended coroutine." msgstr "Solo se retorna un marco de pila para una corrutina suspendida." -#: ../Doc/library/asyncio-task.rst:999 +#: ../Doc/library/asyncio-task.rst:1075 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 " @@ -1200,11 +1303,11 @@ msgstr "" "pila, pero se devuelven los marcos más antiguos de un *traceback*. (Esto " "coincide con el comportamiento del módulo traceback.)ss" -#: ../Doc/library/asyncio-task.rst:1008 +#: ../Doc/library/asyncio-task.rst:1084 msgid "Print the stack or traceback for this Task." msgstr "Imprime la pila o el seguimiento de esta tarea." -#: ../Doc/library/asyncio-task.rst:1010 +#: ../Doc/library/asyncio-task.rst:1086 msgid "" "This produces output similar to that of the traceback module for the frames " "retrieved by :meth:`get_stack`." @@ -1212,11 +1315,11 @@ msgstr "" "Esto produce una salida similar a la del módulo traceback para los marcos " "recuperados por :meth:`get_stack`." -#: ../Doc/library/asyncio-task.rst:1013 +#: ../Doc/library/asyncio-task.rst:1089 msgid "The *limit* argument is passed to :meth:`get_stack` directly." msgstr "El argumento *limit* se pasa directamente a :meth:`get_stack`." -#: ../Doc/library/asyncio-task.rst:1015 +#: ../Doc/library/asyncio-task.rst:1091 msgid "" "The *file* argument is an I/O stream to which the output is written; by " "default output is written to :data:`sys.stderr`." @@ -1224,15 +1327,15 @@ msgstr "" "El argumento *file* es un flujo de E/S en el que se escribe la salida; por " "defecto, la salida se escribe en :data:`sys.stderr`." -#: ../Doc/library/asyncio-task.rst:1020 +#: ../Doc/library/asyncio-task.rst:1096 msgid "Return the coroutine object wrapped by the :class:`Task`." msgstr "Retorna el objeto corrutina contenido por :class:`Task`." -#: ../Doc/library/asyncio-task.rst:1026 +#: ../Doc/library/asyncio-task.rst:1102 msgid "Return the name of the Task." msgstr "Retorna el nombre de la Tarea." -#: ../Doc/library/asyncio-task.rst:1028 +#: ../Doc/library/asyncio-task.rst:1104 msgid "" "If no name has been explicitly assigned to the Task, the default asyncio " "Task implementation generates a default name during instantiation." @@ -1241,18 +1344,18 @@ msgstr "" "implementación de Tarea asyncio predeterminada genera un nombre " "predeterminado durante la creación de instancias." -#: ../Doc/library/asyncio-task.rst:1036 +#: ../Doc/library/asyncio-task.rst:1112 msgid "Set the name of the Task." msgstr "Establece el nombre de la Tarea." -#: ../Doc/library/asyncio-task.rst:1038 +#: ../Doc/library/asyncio-task.rst:1114 msgid "" "The *value* argument can be any object, which is then converted to a string." msgstr "" "El argumento *value* puede ser cualquier objeto, que luego se convierte en " "una cadena." -#: ../Doc/library/asyncio-task.rst:1041 +#: ../Doc/library/asyncio-task.rst:1117 msgid "" "In the default Task implementation, the name will be visible in the :func:" "`repr` output of a task object." @@ -1260,80 +1363,278 @@ msgstr "" "En la implementación de Task predeterminada, el nombre será visible en la " "salida :func:`repr` de un objeto de tarea." -#: ../Doc/library/asyncio-task.rst:1050 -msgid "Generator-based Coroutines" -msgstr "Corrutinas basadas en generadores" +#: ../Doc/library/asyncio-task.rst:1124 +msgid "Request the Task to be cancelled." +msgstr "Solicita que se cancele la Tarea." -#: ../Doc/library/asyncio-task.rst:1054 +#: ../Doc/library/asyncio-task.rst:1126 msgid "" -"Support for generator-based coroutines is **deprecated** and is scheduled " -"for removal in Python 3.10." +"This arranges for a :exc:`CancelledError` exception to be thrown into the " +"wrapped coroutine on the next cycle of the event loop." msgstr "" -"La compatibilidad con corrutinas basadas en generadores está **en desuso** y " -"está programada para su eliminación en Python 3.10." +"Esto hace que una excepción :exc:`CancelledError` sea lanzada a la corrutina " +"contenida en el próximo ciclo del bucle de eventos." -#: ../Doc/library/asyncio-task.rst:1057 +#: ../Doc/library/asyncio-task.rst:1129 msgid "" -"Generator-based coroutines predate async/await syntax. They are Python " -"generators that use ``yield from`` expressions to await on Futures and other " -"coroutines." +"The coroutine then has a chance to clean up or even deny the request by " +"suppressing the exception with a :keyword:`try` ... ... ``except " +"CancelledError`` ... :keyword:`finally` block. Therefore, unlike :meth:" +"`Future.cancel`, :meth:`Task.cancel` does not guarantee that the Task will " +"be cancelled, although suppressing cancellation completely is not common and " +"is actively discouraged." +msgstr "" +"La corrutina entonces tiene la oportunidad de limpiar o incluso denegar la " +"solicitud suprimiendo la excepción con un bloque :keyword:`try` ... ..." +"``except CancelledError`` ... :keyword:`finally`. Por lo tanto, a diferencia " +"de :meth:`Future.cancel`, :meth:`Task.cancel` no garantiza que la tarea será " +"cancelada, aunque suprimir la cancelación por completo no es común y se " +"desalienta activamente." + +#: ../Doc/library/asyncio-task.rst:1137 +#, fuzzy +msgid "Added the *msg* parameter." +msgstr "Se agregó el parámetro ``msg``." + +#: ../Doc/library/asyncio-task.rst:1140 +msgid "The ``msg`` parameter is propagated from cancelled task to its awaiter." msgstr "" -"Las corrutinas basadas en generadores son anteriores a la sintaxis async/" -"await. Son generadores de Python que utilizan expresiones ``yield from`` " -"para esperar en Futures y otras corrutinas." -#: ../Doc/library/asyncio-task.rst:1061 +#: ../Doc/library/asyncio-task.rst:1145 msgid "" -"Generator-based coroutines should be decorated with :func:`@asyncio." -"coroutine `, although this is not enforced." +"The following example illustrates how coroutines can intercept the " +"cancellation request::" msgstr "" -"Las corrutinas basadas en generadores deben estar decoradas con :func:" -"`@asyncio.coroutine `, aunque esto no se aplica." +"En el ejemplo siguiente se muestra cómo las corrutinas pueden interceptar la " +"solicitud de cancelación::" -#: ../Doc/library/asyncio-task.rst:1068 -msgid "Decorator to mark generator-based coroutines." -msgstr "Decorador para marcar corrutinas basadas en generadores." +#: ../Doc/library/asyncio-task.rst:1184 +msgid "Return ``True`` if the Task is *cancelled*." +msgstr "Retorna ``True`` si la Tarea se *cancela*." -#: ../Doc/library/asyncio-task.rst:1070 +#: ../Doc/library/asyncio-task.rst:1186 msgid "" -"This decorator enables legacy generator-based coroutines to be compatible " -"with async/await code::" +"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 "" -"Este decorador permite que las corrutinas basadas en generadores de " -"versiones anteriores (*legacy*) sean compatibles con el código async/await::" +"La tarea se *cancela* cuando se solicitó la cancelación con :meth:`cancel` y " +"la corrutina contenida propagó la excepción :exc:`CancelledError` que se le " +"ha lanzado." -#: ../Doc/library/asyncio-task.rst:1080 -msgid "This decorator should not be used for :keyword:`async def` coroutines." +#: ../Doc/library/asyncio-task.rst:1192 +msgid "Decrement the count of cancellation requests to this Task." msgstr "" -"Este decorador no debe utilizarse para corrutinas :keyword:`async def`." -#: ../Doc/library/asyncio-task.rst:1085 -msgid "Use :keyword:`async def` instead." -msgstr "Usar :keyword:`async def` en su lugar." +#: ../Doc/library/asyncio-task.rst:1194 +msgid "Returns the remaining number of cancellation requests." +msgstr "" -#: ../Doc/library/asyncio-task.rst:1089 -msgid "Return ``True`` if *obj* is a :ref:`coroutine object `." -msgstr "Retorna ``True`` si *obj* es un :ref:`coroutine object `." +#: ../Doc/library/asyncio-task.rst:1196 +msgid "" +"Note that once execution of a cancelled task completed, further calls to :" +"meth:`uncancel` are ineffective." +msgstr "" -#: ../Doc/library/asyncio-task.rst:1091 +#: ../Doc/library/asyncio-task.rst:1201 msgid "" -"This method is different from :func:`inspect.iscoroutine` because it returns " -"``True`` for generator-based coroutines." +"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 " +"allows for elements of structured concurrency like :ref:`taskgroups` and :" +"func:`asyncio.timeout` to continue running, isolating cancellation to the " +"respective structured block. For example::" msgstr "" -"Este método es diferente de :func:`inspect.iscoroutine` porque retorna " -"``True`` para corrutinas basadas en generadores." -#: ../Doc/library/asyncio-task.rst:1096 -msgid "Return ``True`` if *func* is a :ref:`coroutine function `." +#: ../Doc/library/asyncio-task.rst:1219 +msgid "" +"While the block with ``make_request()`` and ``make_another_request()`` might " +"get cancelled due to the timeout, ``unrelated_code()`` should continue " +"running even in case of the timeout. This is implemented with :meth:" +"`uncancel`. :class:`TaskGroup` context managers use :func:`uncancel` in a " +"similar fashion." +msgstr "" + +#: ../Doc/library/asyncio-task.rst:1227 +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 "" -"Retorna ``True`` si *func* es una :ref:`coroutine function `." -#: ../Doc/library/asyncio-task.rst:1099 +#: ../Doc/library/asyncio-task.rst:1231 msgid "" -"This method is different from :func:`inspect.iscoroutinefunction` because it " -"returns ``True`` for generator-based coroutine functions decorated with :" -"func:`@coroutine `." +"Note that if this number is greater than zero but the Task is still " +"executing, :meth:`cancelled` will still return ``False``. This is because " +"this number can be lowered by calling :meth:`uncancel`, which can lead to " +"the task not being cancelled after all if the cancellation requests go down " +"to zero." msgstr "" -"Este método es diferente de :func:`inspect.iscoroutinefunction` porque " -"retorna ``True`` para funciones de corrutinas basadas en generadores " -"decoradas con :func:`@coroutine `." + +#: ../Doc/library/asyncio-task.rst:1237 +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." +msgstr "" + +#~ msgid "" +#~ "asyncio also supports legacy :ref:`generator-based " +#~ "` coroutines." +#~ msgstr "" +#~ "asyncio también es compatible con corrutinas heredadas :ref:`generator-" +#~ "based `." + +#~ msgid "Running an asyncio Program" +#~ msgstr "Ejecutando un programa asyncio" + +#~ msgid "Execute the :term:`coroutine` *coro* and return the result." +#~ msgstr "Ejecuta la :term:`coroutine` *coro* y retornando el resultado." + +#~ msgid "" +#~ "This function runs the passed coroutine, taking care of managing the " +#~ "asyncio event loop, *finalizing asynchronous generators*, and closing the " +#~ "threadpool." +#~ msgstr "" +#~ "Esta función ejecuta la corrutina pasada, encargándose de administrar el " +#~ "bucle de eventos asyncio, *finalizing asynchronous generators* y cerrando " +#~ "el threadpool." + +#~ msgid "" +#~ "This function cannot be called when another asyncio event loop is running " +#~ "in the same thread." +#~ msgstr "" +#~ "Esta función no se puede llamar cuando otro bucle de eventos asyncio se " +#~ "está ejecutando en el mismo hilo." + +#~ msgid "If *debug* is ``True``, the event loop will be run in debug mode." +#~ msgstr "" +#~ "Si *debug* es ``True``, el bucle de eventos se ejecutará en modo debug." + +#~ msgid "" +#~ "This function always creates a new event loop and closes it at the end. " +#~ "It should be used as a main entry point for asyncio programs, and should " +#~ "ideally only be called once." +#~ msgstr "" +#~ "Esta función siempre crea un nuevo ciclo de eventos y lo cierra al final. " +#~ "Debe usarse como un punto de entrada principal para los programas " +#~ "asyncio, e idealmente solo debe llamarse una vez." + +#~ msgid "Updated to use :meth:`loop.shutdown_default_executor`." +#~ msgstr "Actualizado para usar :meth:`loop.shutdown_default_executor`." + +#~ msgid "" +#~ "The source code for ``asyncio.run()`` can be found in :source:`Lib/" +#~ "asyncio/runners.py`." +#~ msgstr "" +#~ "El código fuente para ``asyncio.run()`` se puede encontrar en :source:" +#~ "`Lib/asyncio/runners.py`." + +#~ msgid "" +#~ "This function has been **added in Python 3.7**. Prior to Python 3.7, the " +#~ "low-level :func:`asyncio.ensure_future` function can be used instead::" +#~ msgstr "" +#~ "Esta función se ha **añadido en Python 3.7**. Antes de Python 3.7, la " +#~ "función de bajo nivel :func:`asyncio.ensure_future` se puede utilizar en " +#~ "su lugar::" + +#~ msgid "" +#~ "The ``loop`` parameter. This function has been implicitly getting the " +#~ "current running loop since 3.7. See :ref:`What's New in 3.10's Removed " +#~ "section ` for more information." +#~ msgstr "" +#~ "El parámetro ``loop``. Esta función ha estado obteniendo implícitamente " +#~ "el ciclo en ejecución actual desde 3.7. Consulte :ref:`What's New in " +#~ "3.10's Removed section ` para obtener más " +#~ "información." + +#~ msgid "" +#~ "If any awaitable in *aws* is a coroutine, it is automatically scheduled " +#~ "as a Task. Passing coroutines objects to ``wait()`` directly is " +#~ "deprecated as it leads to :ref:`confusing behavior " +#~ "`." +#~ msgstr "" +#~ "Si cualquier aguardable en *aws* es una corrutina, se programa " +#~ "automáticamente como una Tarea. El paso de objetos corrutinas a " +#~ "``wait()`` directamente está en desuso, ya que conduce a :ref:" +#~ "`comportamiento confuso `." + +#~ msgid "" +#~ "``wait()`` schedules coroutines as Tasks automatically and later returns " +#~ "those implicitly created Task objects in ``(done, pending)`` sets. " +#~ "Therefore the following code won't work as expected::" +#~ msgstr "" +#~ "``wait()`` programa las corrutinas como Tareas automáticamente y " +#~ "posteriormente retorna los objetos Tarea creados implícitamente en " +#~ "conjuntos ``(done, pending)``. Por lo tanto, el código siguiente no " +#~ "funcionará como se esperaba::" + +#~ msgid "Here is how the above snippet can be fixed::" +#~ msgstr "Aquí es cómo se puede arreglar el fragmento de código anterior::" + +#~ msgid "Generator-based Coroutines" +#~ msgstr "Corrutinas basadas en generadores" + +#~ msgid "" +#~ "Support for generator-based coroutines is **deprecated** and is scheduled " +#~ "for removal in Python 3.10." +#~ msgstr "" +#~ "La compatibilidad con corrutinas basadas en generadores está **en " +#~ "desuso** y está programada para su eliminación en Python 3.10." + +#~ msgid "" +#~ "Generator-based coroutines predate async/await syntax. They are Python " +#~ "generators that use ``yield from`` expressions to await on Futures and " +#~ "other coroutines." +#~ msgstr "" +#~ "Las corrutinas basadas en generadores son anteriores a la sintaxis async/" +#~ "await. Son generadores de Python que utilizan expresiones ``yield from`` " +#~ "para esperar en Futures y otras corrutinas." + +#~ msgid "" +#~ "Generator-based coroutines should be decorated with :func:`@asyncio." +#~ "coroutine `, although this is not enforced." +#~ msgstr "" +#~ "Las corrutinas basadas en generadores deben estar decoradas con :func:" +#~ "`@asyncio.coroutine `, aunque esto no se aplica." + +#~ msgid "Decorator to mark generator-based coroutines." +#~ msgstr "Decorador para marcar corrutinas basadas en generadores." + +#~ msgid "" +#~ "This decorator enables legacy generator-based coroutines to be compatible " +#~ "with async/await code::" +#~ msgstr "" +#~ "Este decorador permite que las corrutinas basadas en generadores de " +#~ "versiones anteriores (*legacy*) sean compatibles con el código async/" +#~ "await::" + +#~ msgid "" +#~ "This decorator should not be used for :keyword:`async def` coroutines." +#~ msgstr "" +#~ "Este decorador no debe utilizarse para corrutinas :keyword:`async def`." + +#~ msgid "Use :keyword:`async def` instead." +#~ msgstr "Usar :keyword:`async def` en su lugar." + +#~ msgid "Return ``True`` if *obj* is a :ref:`coroutine object `." +#~ msgstr "" +#~ "Retorna ``True`` si *obj* es un :ref:`coroutine object `." + +#~ msgid "" +#~ "This method is different from :func:`inspect.iscoroutine` because it " +#~ "returns ``True`` for generator-based coroutines." +#~ msgstr "" +#~ "Este método es diferente de :func:`inspect.iscoroutine` porque retorna " +#~ "``True`` para corrutinas basadas en generadores." + +#~ msgid "" +#~ "Return ``True`` if *func* is a :ref:`coroutine function `." +#~ msgstr "" +#~ "Retorna ``True`` si *func* es una :ref:`coroutine function `." + +#~ msgid "" +#~ "This method is different from :func:`inspect.iscoroutinefunction` because " +#~ "it returns ``True`` for generator-based coroutine functions decorated " +#~ "with :func:`@coroutine `." +#~ msgstr "" +#~ "Este método es diferente de :func:`inspect.iscoroutinefunction` porque " +#~ "retorna ``True`` para funciones de corrutinas basadas en generadores " +#~ "decoradas con :func:`@coroutine `." diff --git a/library/asyncio.po b/library/asyncio.po index a83952c5da..bc96893687 100644 --- a/library/asyncio.po +++ b/library/asyncio.po @@ -10,27 +10,26 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-05 12:54+0200\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2020-06-28 23:03+0200\n" +"Last-Translator: David Revillas \n" +"Language: es_ES\n" "Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" +"Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.8.0\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Last-Translator: David Revillas \n" -"Language: es_ES\n" -"X-Generator: Poedit 2.3\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/library/asyncio.rst:66 msgid "High-level APIs" msgstr "*APIs* de alto nivel" -#: ../Doc/library/asyncio.rst:77 +#: ../Doc/library/asyncio.rst:78 msgid "Low-level APIs" msgstr "*APIs* de bajo nivel" -#: ../Doc/library/asyncio.rst:87 +#: ../Doc/library/asyncio.rst:89 msgid "Guides and Tutorials" msgstr "Guías y tutoriales" @@ -41,7 +40,7 @@ msgstr ":mod:`asyncio` --- E/S Asíncrona" msgid "Hello World!" msgstr "¡Hola Mundo!" -#: ../Doc/library/asyncio.rst:23 +#: ../Doc/library/asyncio.rst:22 msgid "" "asyncio is a library to write **concurrent** code using the **async/await** " "syntax." @@ -49,7 +48,7 @@ msgstr "" "asyncio es una biblioteca para escribir código **concurrente** utilizando la " "sintaxis **async/await**." -#: ../Doc/library/asyncio.rst:26 +#: ../Doc/library/asyncio.rst:25 msgid "" "asyncio is used as a foundation for multiple Python asynchronous frameworks " "that provide high-performance network and web-servers, database connection " @@ -59,7 +58,7 @@ msgstr "" "Python y provee un alto rendimiento en redes y servidores web, bibliotecas " "de conexión de base de datos, colas de tareas distribuidas, etc." -#: ../Doc/library/asyncio.rst:30 +#: ../Doc/library/asyncio.rst:29 msgid "" "asyncio is often a perfect fit for IO-bound and high-level **structured** " "network code." @@ -67,11 +66,11 @@ msgstr "" "asyncio suele encajar perfectamente para operaciones con límite de E/S y " "código de red **estructurado** de alto nivel." -#: ../Doc/library/asyncio.rst:33 +#: ../Doc/library/asyncio.rst:32 msgid "asyncio provides a set of **high-level** APIs to:" msgstr "asyncio provee un conjunto de *APIs* de **alto nivel** para:" -#: ../Doc/library/asyncio.rst:35 +#: ../Doc/library/asyncio.rst:34 msgid "" ":ref:`run Python coroutines ` concurrently and have full control " "over their execution;" @@ -79,25 +78,25 @@ msgstr "" ":ref:`ejecutar corutinas de Python ` de manera concurrente y " "tener control total sobre su ejecución;" -#: ../Doc/library/asyncio.rst:38 +#: ../Doc/library/asyncio.rst:37 msgid "perform :ref:`network IO and IPC `;" msgstr "" "realizar :ref:`redes E/S y comunicación entre procesos(IPC) `;" -#: ../Doc/library/asyncio.rst:40 +#: ../Doc/library/asyncio.rst:39 msgid "control :ref:`subprocesses `;" msgstr "controlar :ref:`subprocesos `;" -#: ../Doc/library/asyncio.rst:42 +#: ../Doc/library/asyncio.rst:41 msgid "distribute tasks via :ref:`queues `;" msgstr "distribuir tareas a través de :ref:`colas `;" -#: ../Doc/library/asyncio.rst:44 +#: ../Doc/library/asyncio.rst:43 msgid ":ref:`synchronize ` concurrent code;" msgstr ":ref:`sincronizar ` código concurrente;" -#: ../Doc/library/asyncio.rst:46 +#: ../Doc/library/asyncio.rst:45 msgid "" "Additionally, there are **low-level** APIs for *library and framework " "developers* to:" @@ -105,7 +104,7 @@ msgstr "" "Adicionalmente, existen *APIs* de **bajo nivel** para *desarrolladores de " "bibliotecas y frameworks* para:" -#: ../Doc/library/asyncio.rst:49 +#: ../Doc/library/asyncio.rst:48 msgid "" "create and manage :ref:`event loops `, which provide " "asynchronous APIs for :meth:`networking `, running :meth:" @@ -117,7 +116,7 @@ msgstr "" "ejecutando :meth:`subprocesos `, gestionando :meth:" "`señales del sistema operativo `, etc;" -#: ../Doc/library/asyncio.rst:54 +#: ../Doc/library/asyncio.rst:53 msgid "" "implement efficient protocols using :ref:`transports `;" @@ -125,7 +124,7 @@ msgstr "" "implementar protocolos eficientes utilizando :ref:`transportes `;" -#: ../Doc/library/asyncio.rst:57 +#: ../Doc/library/asyncio.rst:56 msgid "" ":ref:`bridge ` callback-based libraries and code with async/" "await syntax." @@ -133,11 +132,21 @@ msgstr "" "Bibliotecas :ref:`puente ` basadas en retrollamadas y " "código con sintaxis *async/wait*." +msgid ":ref:`Availability `: not Emscripten, not WASI." +msgstr "" + +#: ../Doc/library/cpython/Doc/includes/wasm-notavail.rst:5 +msgid "" +"This module does not work or is not available on WebAssembly platforms " +"``wasm32-emscripten`` and ``wasm32-wasi``. See :ref:`wasm-availability` for " +"more information." +msgstr "" + #: ../Doc/library/asyncio.rst:65 msgid "Reference" msgstr "Referencias" -#: ../Doc/library/asyncio.rst:96 +#: ../Doc/library/asyncio.rst:98 msgid "The source code for asyncio can be found in :source:`Lib/asyncio/`." msgstr "" "El código fuente para asyncio puede encontrarse en :source:`Lib/asyncio/`." diff --git a/library/asyncore.po b/library/asyncore.po index a5df3bd4d0..9abe834e7e 100644 --- a/library/asyncore.po +++ b/library/asyncore.po @@ -1,36 +1,41 @@ # Copyright (C) 2001-2020, Python Software Foundation # This file is distributed under the same license as the Python package. # Maintained by the python-doc-es workteam. -# docs-es@python.org / https://mail.python.org/mailman3/lists/docs-es.python.org/ -# Check https://github.com/python/python-docs-es/blob/3.8/TRANSLATORS to get the list of volunteers +# docs-es@python.org / +# https://mail.python.org/mailman3/lists/docs-es.python.org/ +# Check https://github.com/python/python-docs-es/blob/3.8/TRANSLATORS to get +# the list of volunteers # msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-05-06 11:59-0400\n" +"POT-Creation-Date: 2022-10-25 19:47+0200\n" "PO-Revision-Date: 2021-08-04 13:36+0200\n" +"Last-Translator: Cristián Maureira-Fredes \n" +"Language: es\n" "Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" +"Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Last-Translator: Cristián Maureira-Fredes \n" -"Language: es\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.10.3\n" #: ../Doc/library/asyncore.rst:2 msgid ":mod:`asyncore` --- Asynchronous socket handler" msgstr ":mod:`asyncore` --- controlador de socket asincrónico" -#: ../Doc/library/asyncore.rst:13 +#: ../Doc/library/asyncore.rst:14 msgid "**Source code:** :source:`Lib/asyncore.py`" msgstr "**Código fuente:** :source:`Lib/asyncore.py`" -#: ../Doc/library/asyncore.rst:15 -msgid "Please use :mod:`asyncio` instead." -msgstr "Por favor, utilice :mod:`asyncio` en su lugar." +#: ../Doc/library/asyncore.rst:20 +msgid "" +"The :mod:`asyncore` module is deprecated (see :pep:`PEP 594 <594#asyncore>` " +"for details). Please use :mod:`asyncio` instead." +msgstr "" -#: ../Doc/library/asyncore.rst:22 +#: ../Doc/library/asyncore.rst:25 msgid "" "This module exists for backwards compatibility only. For new code we " "recommend using :mod:`asyncio`." @@ -38,7 +43,7 @@ msgstr "" "Este módulo solo existe para compatibilidad con versiones anteriores. Para " "el nuevo código recomendamos usar :mod:`asyncio`." -#: ../Doc/library/asyncore.rst:25 +#: ../Doc/library/asyncore.rst:28 msgid "" "This module provides the basic infrastructure for writing asynchronous " "socket service clients and servers." @@ -46,7 +51,18 @@ msgstr "" "Este módulo proporciona la infraestructura básica para escribir servicio de " "socket asincrónicos, clientes y servidores." -#: ../Doc/library/asyncore.rst:28 +#, fuzzy +msgid ":ref:`Availability `: not Emscripten, not WASI." +msgstr ":ref:`Disponibilidad `: Unix." + +#: ../Doc/library/cpython/Doc/includes/wasm-notavail.rst:5 +msgid "" +"This module does not work or is not available on WebAssembly platforms " +"``wasm32-emscripten`` and ``wasm32-wasi``. See :ref:`wasm-availability` for " +"more information." +msgstr "" + +#: ../Doc/library/asyncore.rst:33 msgid "" "There are only two ways to have a program on a single processor do \"more " "than one thing at a time.\" Multi-threaded programming is the simplest and " @@ -67,7 +83,7 @@ msgstr "" "necesita. Sin embargo, los servidores de red rara vez están limitado al " "procesador." -#: ../Doc/library/asyncore.rst:37 +#: ../Doc/library/asyncore.rst:42 msgid "" "If your operating system supports the :c:func:`select` system call in its I/" "O library (and nearly all do), then you can use it to juggle multiple " @@ -92,7 +108,7 @@ msgstr "" "aplicaciones y protocolos \"conversacionales\", el módulo complementario :" "mod:`asynchat` es invaluable." -#: ../Doc/library/asyncore.rst:48 +#: ../Doc/library/asyncore.rst:53 msgid "" "The basic idea behind both modules is to create one or more network " "*channels*, instances of class :class:`asyncore.dispatcher` and :class:" @@ -106,7 +122,7 @@ msgstr "" "utilizado por la función :func:`loop` si no lo proporciona con su propio " "*map*." -#: ../Doc/library/asyncore.rst:54 +#: ../Doc/library/asyncore.rst:59 msgid "" "Once the initial channel(s) is(are) created, calling the :func:`loop` " "function activates channel service, which continues until the last channel " @@ -118,7 +134,7 @@ msgstr "" "canal (incluido el que se ha agregado al mapa durante el servicio " "asincrónico)." -#: ../Doc/library/asyncore.rst:61 +#: ../Doc/library/asyncore.rst:66 msgid "" "Enter a polling loop that terminates after count passes or all open channels " "have been closed. All arguments are optional. The *count* parameter " @@ -140,7 +156,7 @@ msgstr "" "utilizarse en lugar de :func:`~select.select` (el valor predeterminado es " "``False``)." -#: ../Doc/library/asyncore.rst:70 +#: ../Doc/library/asyncore.rst:75 msgid "" "The *map* parameter is a dictionary whose items are the channels to watch. " "As channels are closed they are deleted from their map. If *map* is " @@ -154,7 +170,7 @@ msgstr "" "`asyncore.dispatcher`, :class:`asynchat.async_chat` y subclases de los " "mismos) se pueden mezclar libremente en el mapa." -#: ../Doc/library/asyncore.rst:79 +#: ../Doc/library/asyncore.rst:84 msgid "" "The :class:`dispatcher` class is a thin wrapper around a low-level socket " "object. To make it more useful, it has a few methods for event-handling " @@ -166,7 +182,7 @@ msgstr "" "control de eventos que se llaman desde el bucle asincrónico. De lo " "contrario, se puede tratar como un objeto de socket normal sin bloqueo." -#: ../Doc/library/asyncore.rst:84 +#: ../Doc/library/asyncore.rst:89 msgid "" "The firing of low-level events at certain times or in certain connection " "states tells the asynchronous loop that certain higher-level events have " @@ -184,39 +200,39 @@ msgstr "" "punto sabe que puede escribir a él con la expectativa de éxito). Los " "eventos de nivel superior implícitos son:" -#: ../Doc/library/asyncore.rst:93 +#: ../Doc/library/asyncore.rst:98 msgid "Event" msgstr "Evento" -#: ../Doc/library/asyncore.rst:93 +#: ../Doc/library/asyncore.rst:98 msgid "Description" msgstr "Descripción" -#: ../Doc/library/asyncore.rst:95 +#: ../Doc/library/asyncore.rst:100 msgid "``handle_connect()``" msgstr "``handle_connect()``" -#: ../Doc/library/asyncore.rst:95 +#: ../Doc/library/asyncore.rst:100 msgid "Implied by the first read or write event" msgstr "Implícito en el primer proceso de lectura o escritura" -#: ../Doc/library/asyncore.rst:98 +#: ../Doc/library/asyncore.rst:103 msgid "``handle_close()``" msgstr "``handle_close()``" -#: ../Doc/library/asyncore.rst:98 +#: ../Doc/library/asyncore.rst:103 msgid "Implied by a read event with no data available" msgstr "Implícito en un evento de lectura sin datos disponibles" -#: ../Doc/library/asyncore.rst:101 +#: ../Doc/library/asyncore.rst:106 msgid "``handle_accepted()``" msgstr "``handle_accepted()``" -#: ../Doc/library/asyncore.rst:101 +#: ../Doc/library/asyncore.rst:106 msgid "Implied by a read event on a listening socket" msgstr "Implícito en un evento de lectura en un socket de escucha" -#: ../Doc/library/asyncore.rst:105 +#: ../Doc/library/asyncore.rst:110 msgid "" "During asynchronous processing, each mapped channel's :meth:`readable` and :" "meth:`writable` methods are used to determine whether the channel's socket " @@ -229,7 +245,7 @@ msgstr "" "`seleccionados