From f0126186d6df3eab3ad3a70adf3d8fe20d0e0257 Mon Sep 17 00:00:00 2001 From: Marcos Ferreto Estrada Date: Wed, 11 Dec 2024 19:27:47 -0600 Subject: [PATCH 01/78] Traducido archivo c-api/contextvars (#3348) closes #3281 --- TRANSLATORS | 1 + c-api/contextvars.po | 12 +++++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/TRANSLATORS b/TRANSLATORS index fe9b569dff..107807d0bb 100644 --- a/TRANSLATORS +++ b/TRANSLATORS @@ -172,6 +172,7 @@ Manuel Ramos (@manuelramos) Marcelo Elizeche Landó (@melizeche) Marco Moresi (@mrcmoresi) Marco Richetta (@marcorichetta) +Marcos Ferreto (@FerretoDev) Marcos Medrano (@mmmarcos) Marcos Moreno (@marcosmamg) Marcos Sánchez Provencio (@rapto) diff --git a/c-api/contextvars.po b/c-api/contextvars.po index 8d58c31077..1d02d39fd8 100644 --- a/c-api/contextvars.po +++ b/c-api/contextvars.po @@ -11,15 +11,16 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: 2021-12-09 10:23+0800\n" +"PO-Revision-Date: 2024-12-10 21:07-0600\n" "Last-Translator: Rodrigo Tobar \n" -"Language: es\n" "Language-Team: python-doc-es\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\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.16.0\n" +"X-Generator: Poedit 3.5\n" #: ../Doc/c-api/contextvars.rst:6 msgid "Context Variables Objects" @@ -44,6 +45,11 @@ msgid "" "// in 3.7.1+:\n" "PyObject *PyContext_New(void);" msgstr "" +"// en 3.7.0:\n" +"PyContext *PyContext_New(void);\n" +"\n" +"// en 3.7.1+:\n" +"PyObject *PyContext_New(void);" #: ../Doc/c-api/contextvars.rst:26 msgid "See :issue:`34762` for more details." From c93821ad823ac44e3bf7ac37a59fe937f0f22971 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sof=C3=ADa=20Denner?= Date: Thu, 12 Dec 2024 04:15:42 -0300 Subject: [PATCH 02/78] translate pending removal in 3.13 (#3347) closes #3297 --------- Co-authored-by: Marcos Medrano <786907+mmmarcos@users.noreply.github.com> --- deprecations/pending-removal-in-3.13.po | 94 +++++++++++++------------ 1 file changed, 49 insertions(+), 45 deletions(-) diff --git a/deprecations/pending-removal-in-3.13.po b/deprecations/pending-removal-in-3.13.po index 0341c82931..4ec72bc1f0 100644 --- a/deprecations/pending-removal-in-3.13.po +++ b/deprecations/pending-removal-in-3.13.po @@ -10,179 +10,180 @@ msgstr "" "Project-Id-Version: Python en Español 3.13\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language: es\n" +"PO-Revision-Date: 2024-12-09 20:45-0300\n" +"Last-Translator: Sofía Denner\n" "Language-Team: es \n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\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.16.0\n" +"X-Generator: Poedit 3.5\n" #: ../Doc/deprecations/pending-removal-in-3.13.rst:2 msgid "Pending Removal in Python 3.13" -msgstr "" +msgstr "Pendiente de eliminación en Python 3.13" #: ../Doc/deprecations/pending-removal-in-3.13.rst:4 msgid "Modules (see :pep:`594`):" -msgstr "" +msgstr "Módulos (ver :pep:`594`):" #: ../Doc/deprecations/pending-removal-in-3.13.rst:6 msgid ":mod:`!aifc`" -msgstr "" +msgstr ":mod:`!aifc`" #: ../Doc/deprecations/pending-removal-in-3.13.rst:7 msgid ":mod:`!audioop`" -msgstr "" +msgstr ":mod:`!audioop`" #: ../Doc/deprecations/pending-removal-in-3.13.rst:8 msgid ":mod:`!cgi`" -msgstr "" +msgstr ":mod:`!cgi`" #: ../Doc/deprecations/pending-removal-in-3.13.rst:9 msgid ":mod:`!cgitb`" -msgstr "" +msgstr ":mod:`!cgitb`" #: ../Doc/deprecations/pending-removal-in-3.13.rst:10 msgid ":mod:`!chunk`" -msgstr "" +msgstr ":mod:`!chunk`" #: ../Doc/deprecations/pending-removal-in-3.13.rst:11 msgid ":mod:`!crypt`" -msgstr "" +msgstr ":mod:`!crypt`" #: ../Doc/deprecations/pending-removal-in-3.13.rst:12 msgid ":mod:`!imghdr`" -msgstr "" +msgstr ":mod:`!imghdr`" #: ../Doc/deprecations/pending-removal-in-3.13.rst:13 msgid ":mod:`!mailcap`" -msgstr "" +msgstr ":mod:`!mailcap`" #: ../Doc/deprecations/pending-removal-in-3.13.rst:14 msgid ":mod:`!msilib`" -msgstr "" +msgstr ":mod:`!msilib`" #: ../Doc/deprecations/pending-removal-in-3.13.rst:15 msgid ":mod:`!nis`" -msgstr "" +msgstr ":mod:`!nis`" #: ../Doc/deprecations/pending-removal-in-3.13.rst:16 msgid ":mod:`!nntplib`" -msgstr "" +msgstr ":mod:`!nntplib`" #: ../Doc/deprecations/pending-removal-in-3.13.rst:17 msgid ":mod:`!ossaudiodev`" -msgstr "" +msgstr ":mod:`!ossaudiodev`" #: ../Doc/deprecations/pending-removal-in-3.13.rst:18 msgid ":mod:`!pipes`" -msgstr "" +msgstr ":mod:`!pipes`" #: ../Doc/deprecations/pending-removal-in-3.13.rst:19 msgid ":mod:`!sndhdr`" -msgstr "" +msgstr ":mod:`!sndhdr`" #: ../Doc/deprecations/pending-removal-in-3.13.rst:20 msgid ":mod:`!spwd`" -msgstr "" +msgstr ":mod:`!spwd`" #: ../Doc/deprecations/pending-removal-in-3.13.rst:21 msgid ":mod:`!sunau`" -msgstr "" +msgstr ":mod:`!sunau`" #: ../Doc/deprecations/pending-removal-in-3.13.rst:22 msgid ":mod:`!telnetlib`" -msgstr "" +msgstr ":mod:`!telnetlib`" #: ../Doc/deprecations/pending-removal-in-3.13.rst:23 msgid ":mod:`!uu`" -msgstr "" +msgstr ":mod:`!uu`" #: ../Doc/deprecations/pending-removal-in-3.13.rst:24 msgid ":mod:`!xdrlib`" -msgstr "" +msgstr ":mod:`!xdrlib`" #: ../Doc/deprecations/pending-removal-in-3.13.rst:26 msgid "Other modules:" -msgstr "" +msgstr "Otros módulos:" #: ../Doc/deprecations/pending-removal-in-3.13.rst:28 msgid ":mod:`!lib2to3`, and the :program:`2to3` program (:gh:`84540`)" -msgstr "" +msgstr ":mod:`!lib2to3`, y el programa :program:`2to3` (:gh:`84540`)" #: ../Doc/deprecations/pending-removal-in-3.13.rst:30 msgid "APIs:" -msgstr "" +msgstr "APIs:" #: ../Doc/deprecations/pending-removal-in-3.13.rst:32 msgid ":class:`!configparser.LegacyInterpolation` (:gh:`90765`)" -msgstr "" +msgstr ":class:`!configparser.LegacyInterpolation` (:gh:`90765`)" #: ../Doc/deprecations/pending-removal-in-3.13.rst:33 msgid "``locale.resetlocale()`` (:gh:`90817`)" -msgstr "" +msgstr "``locale.resetlocale()`` (:gh:`90817`)" #: ../Doc/deprecations/pending-removal-in-3.13.rst:34 msgid ":meth:`!turtle.RawTurtle.settiltangle` (:gh:`50096`)" -msgstr "" +msgstr ":meth:`!turtle.RawTurtle.settiltangle` (:gh:`50096`)" #: ../Doc/deprecations/pending-removal-in-3.13.rst:35 msgid ":func:`!unittest.findTestCases` (:gh:`50096`)" -msgstr "" +msgstr ":func:`!unittest.findTestCases` (:gh:`50096`)" #: ../Doc/deprecations/pending-removal-in-3.13.rst:36 msgid ":func:`!unittest.getTestCaseNames` (:gh:`50096`)" -msgstr "" +msgstr ":func:`!unittest.getTestCaseNames` (:gh:`50096`)" #: ../Doc/deprecations/pending-removal-in-3.13.rst:37 msgid ":func:`!unittest.makeSuite` (:gh:`50096`)" -msgstr "" +msgstr ":func:`!unittest.makeSuite` (:gh:`50096`)" #: ../Doc/deprecations/pending-removal-in-3.13.rst:38 msgid ":meth:`!unittest.TestProgram.usageExit` (:gh:`67048`)" -msgstr "" +msgstr ":meth:`!unittest.TestProgram.usageExit` (:gh:`67048`)" #: ../Doc/deprecations/pending-removal-in-3.13.rst:39 msgid ":class:`!webbrowser.MacOSX` (:gh:`86421`)" -msgstr "" +msgstr ":class:`!webbrowser.MacOSX` (:gh:`86421`)" #: ../Doc/deprecations/pending-removal-in-3.13.rst:40 msgid ":class:`classmethod` descriptor chaining (:gh:`89519`)" -msgstr "" +msgstr "Encadenamiento de descriptores :class:`classmethod` (:gh:`89519`)" #: ../Doc/deprecations/pending-removal-in-3.13.rst:41 msgid ":mod:`importlib.resources` deprecated methods:" -msgstr "" +msgstr "métodos obsoletos de :mod:`importlib.resources`:" #: ../Doc/deprecations/pending-removal-in-3.13.rst:43 msgid "``contents()``" -msgstr "" +msgstr "``contents()``" #: ../Doc/deprecations/pending-removal-in-3.13.rst:44 msgid "``is_resource()``" -msgstr "" +msgstr "``contents()``" #: ../Doc/deprecations/pending-removal-in-3.13.rst:45 msgid "``open_binary()``" -msgstr "" +msgstr "``open_binary()``" #: ../Doc/deprecations/pending-removal-in-3.13.rst:46 msgid "``open_text()``" -msgstr "" +msgstr "``open_text()``" #: ../Doc/deprecations/pending-removal-in-3.13.rst:47 msgid "``path()``" -msgstr "" +msgstr "``path()``" #: ../Doc/deprecations/pending-removal-in-3.13.rst:48 msgid "``read_binary()``" -msgstr "" +msgstr "``read_binary()``" #: ../Doc/deprecations/pending-removal-in-3.13.rst:49 msgid "``read_text()``" -msgstr "" +msgstr "``read_text()``" #: ../Doc/deprecations/pending-removal-in-3.13.rst:51 msgid "" @@ -190,3 +191,6 @@ msgid "" "resources: Migrating from Legacy `_ (:gh:`106531`)" msgstr "" +"Usar en su lugar :func:`importlib.resources.files`. Consultar `importlib-" +"resources: Migrating from Legacy `_ (:gh:`106531`)" From e7c0a34bd76cb406320c0be9fe9e4331b41298c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cristi=C3=A1n=20Maureira-Fredes?= Date: Sat, 21 Dec 2024 23:58:13 +0100 Subject: [PATCH 03/78] Translate whatsnew/3.3 (#3318) Closes #3184 --- dictionaries/whatsnew_3.3.txt | 6 + whatsnew/3.3.po | 2754 ++++++++++++++++++--------------- 2 files changed, 1483 insertions(+), 1277 deletions(-) diff --git a/dictionaries/whatsnew_3.3.txt b/dictionaries/whatsnew_3.3.txt index a52ad37f41..31a8bdfc1d 100644 --- a/dictionaries/whatsnew_3.3.txt +++ b/dictionaries/whatsnew_3.3.txt @@ -89,13 +89,17 @@ Winston Wundram Yamamoto Zbigniew +acc cast +committers decode desreferencian directory division +document editables encode +err factorizar filemode fopen @@ -126,6 +130,8 @@ subgeneradores subindices subiteradores symlink +tallies +tally tarfile target timezone diff --git a/whatsnew/3.3.po b/whatsnew/3.3.po index 12a3a2d1a2..01850ece9b 100644 --- a/whatsnew/3.3.po +++ b/whatsnew/3.3.po @@ -13,12 +13,12 @@ msgstr "" "POT-Creation-Date: 2024-11-21 16:38-0300\n" "PO-Revision-Date: 2021-10-29 22:00-0500\n" "Last-Translator: Pedro Aarón \n" -"Language: es\n" "Language-Team: python-doc-es\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\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.16.0\n" #: ../Doc/whatsnew/3.3.rst:3 @@ -33,8 +33,8 @@ msgid "" msgstr "" "Éste artículo explica las nuevas características en python 3.3, en " "comparación con la versión 3.2. Python 3.3 se lanzó el 29 de septiembre de " -"2012. Para más detalles, ver el log de cambios en la dirección ." +"2012. Para más detalles, ver el log de cambios en la dirección " +"." #: ../Doc/whatsnew/3.3.rst:51 msgid ":pep:`398` - Python 3.3 Release Schedule" @@ -89,8 +89,8 @@ msgstr "" #: ../Doc/whatsnew/3.3.rst:71 msgid "" -":mod:`venv` (Python :ref:`virtual environments `, as in the popular " -"``virtualenv`` package)" +":mod:`venv` (Python :ref:`virtual environments `, as in the popular" +" ``virtualenv`` package)" msgstr "" ":mod:`venv` (Python :ref:`entornos virtuales `, como en el paquete " "original Virtualenv)" @@ -111,8 +111,8 @@ msgstr "Mejoras de implementación:" msgid "" "Rewritten :ref:`import machinery ` based on :mod:`importlib`." msgstr "" -"Se reescribe :ref:`Maquinaria de importación ` con base en :mod:" -"`importlib`." +"Se reescribe :ref:`Maquinaria de importación ` con base en " +":mod:`importlib`." #: ../Doc/whatsnew/3.3.rst:81 msgid "More compact :ref:`unicode strings `." @@ -132,11 +132,11 @@ msgstr "Acelerador de C para el módulo :ref:`decimal ` ." #: ../Doc/whatsnew/3.3.rst:87 msgid "" -"Better unicode handling in the :ref:`email ` module (:term:" -"`provisional `)." +"Better unicode handling in the :ref:`email ` module " +"(:term:`provisional `)." msgstr "" -"Mejor gestión de *unicode* en el módulo :ref:`email ` (:term:" -"`provisional `)." +"Mejor gestión de *unicode* en el módulo :ref:`email ` " +"(:term:`provisional `)." #: ../Doc/whatsnew/3.3.rst:90 msgid "Security improvements:" @@ -149,8 +149,8 @@ msgstr "La aleatoriedad en los hash está habilitada de forma predeterminada." #: ../Doc/whatsnew/3.3.rst:94 msgid "Please read on for a comprehensive list of user-facing changes." msgstr "" -"Por favor continúa leyendo para obtener una lista completa de los cambios de " -"cara al usuario." +"Por favor continúa leyendo para obtener una lista completa de los cambios de" +" cara al usuario." #: ../Doc/whatsnew/3.3.rst:100 msgid "PEP 405: Virtual Environments" @@ -170,8 +170,8 @@ msgstr "" "mientras comparten una instalación base en todo el sistema, para facilitar " "el mantenimiento. Los entornos virtuales tienen su propio conjunto de " "paquetes de sitios privados (es decir, bibliotecas instaladas localmente) y " -"están opcionalmente segregados de los paquetes de sitios de todo el sistema. " -"Su concepto e implementación están inspirados en el popular paquete de " +"están opcionalmente segregados de los paquetes de sitios de todo el sistema." +" Su concepto e implementación están inspirados en el popular paquete de " "terceros ``virtualenv``, pero se benefician de una integración más estrecha " "con el núcleo del intérprete." @@ -193,7 +193,8 @@ msgid ":pep:`405` - Python Virtual Environments" msgstr ":pep:`405` - Entornos virtuales en python" #: ../Doc/whatsnew/3.3.rst:119 -msgid "PEP written by Carl Meyer; implementation by Carl Meyer and Vinay Sajip" +msgid "" +"PEP written by Carl Meyer; implementation by Carl Meyer and Vinay Sajip" msgstr "" "PEP escrito por Carl Meyer; implementación por Carl Meyer y Vinay Sajip" @@ -205,8 +206,8 @@ msgstr "PEP 420: Paquetes para espacios de nombres implícitos" msgid "" "Native support for package directories that don't require ``__init__.py`` " "marker files and can automatically span multiple path segments (inspired by " -"various third party approaches to namespace packages, as described in :pep:" -"`420`)" +"various third party approaches to namespace packages, as described in " +":pep:`420`)" msgstr "" "Soporte nativo para directorios de paquetes que no requieran el archivo " "``__init.py__`` y puedan abarcar automáticamente múltiples segmentos de " @@ -229,8 +230,8 @@ msgstr "" msgid "" "PEP 3118: New memoryview implementation and buffer protocol documentation" msgstr "" -"PEP 3118: Nueva implementación de vista de memoria y en la documentación del " -"protocolo del buffer" +"PEP 3118: Nueva implementación de vista de memoria y en la documentación del" +" protocolo del buffer" #: ../Doc/whatsnew/3.3.rst:142 msgid "The implementation of :pep:`3118` has been significantly improved." @@ -239,14 +240,14 @@ msgstr "La implementación del :pep:`3118` ha tenido mejoras significativas." #: ../Doc/whatsnew/3.3.rst:144 msgid "" "The new memoryview implementation comprehensively fixes all ownership and " -"lifetime issues of dynamically allocated fields in the Py_buffer struct that " -"led to multiple crash reports. Additionally, several functions that crashed " -"or returned incorrect results for non-contiguous or multi-dimensional input " -"have been fixed." -msgstr "" -"La nueva implementación de la vista de memoria corrige exhaustivamente todos " -"los problemas de propiedad y duración de los campos asignados dinámicamente " -"en la estructura de Py_buffer que ha dado lugar a varios informes de " +"lifetime issues of dynamically allocated fields in the Py_buffer struct that" +" led to multiple crash reports. Additionally, several functions that crashed" +" or returned incorrect results for non-contiguous or multi-dimensional input" +" have been fixed." +msgstr "" +"La nueva implementación de la vista de memoria corrige exhaustivamente todos" +" los problemas de propiedad y duración de los campos asignados dinámicamente" +" en la estructura de Py_buffer que ha dado lugar a varios informes de " "bloqueo. Además, se han corregido varias funciones que se bloquearon o " "retornaron resultados incorrectos para entradas no contigua o " "multidimensional." @@ -319,14 +320,13 @@ msgstr "" "`13411`.)" #: ../Doc/whatsnew/3.3.rst:176 -#, fuzzy msgid "" "Arbitrary slicing of any 1-D arrays type is supported. For example, it is " "now possible to reverse a memoryview in *O*\\ (1) by using a negative step." msgstr "" -"Se admite el corte arbitrario de cualquier tipo de array unidimensional. Por " -"ejemplo, ahora es posible revertir una vista de memoria en O(1) utilizando " -"un valor negativo para el índice STEP." +"Se admite la segmentación arbitraria de cualquier tipo de matriz 1-D. Por " +"ejemplo, ahora es posible invertir una vista de memoria en *O*\\ (1) " +"mediante un paso negativo." #: ../Doc/whatsnew/3.3.rst:180 ../Doc/whatsnew/3.3.rst:1135 msgid "API changes" @@ -341,8 +341,8 @@ msgid "" "The representation of empty shape, strides and suboffsets is now an empty " "tuple instead of ``None``." msgstr "" -"Las formas vacías, pasos, y subíndices ahora son representados por una tupla " -"vacía, en vez de ``None``." +"Las formas vacías, pasos, y subíndices ahora son representados por una tupla" +" vacía, en vez de ``None``." #: ../Doc/whatsnew/3.3.rst:187 msgid "" @@ -362,12 +362,12 @@ msgid "" "syntax are supported. Views with unrecognised format strings are still " "permitted, but will always compare as unequal, regardless of view contents." msgstr "" -"las comparaciones de la vista de memoria ahora utilizan la estructura lógica " -"de los operandos y comparan todos los elementos de array por valor. Se " +"las comparaciones de la vista de memoria ahora utilizan la estructura lógica" +" de los operandos y comparan todos los elementos de array por valor. Se " "admiten todos los formatos strings en la sintaxis del módulo de estructura. " "Aún se admiten las vistas con strings que tengan un formato no reconocido, " -"pero siempre se compararan como desiguales, independientemente del contenido " -"de la vista." +"pero siempre se compararan como desiguales, independientemente del contenido" +" de la vista." #: ../Doc/whatsnew/3.3.rst:197 msgid "" @@ -391,11 +391,11 @@ msgstr "PEP 393: Representación flexible de cadenas de caracteres" #: ../Doc/whatsnew/3.3.rst:211 msgid "" "The Unicode string type is changed to support multiple internal " -"representations, depending on the character with the largest Unicode ordinal " -"(1, 2, or 4 bytes) in the represented string. This allows a space-efficient " -"representation in common cases, but gives access to full UCS-4 on all " -"systems. For compatibility with existing APIs, several representations may " -"exist in parallel; over time, this compatibility should be phased out." +"representations, depending on the character with the largest Unicode ordinal" +" (1, 2, or 4 bytes) in the represented string. This allows a space-" +"efficient representation in common cases, but gives access to full UCS-4 on " +"all systems. For compatibility with existing APIs, several representations " +"may exist in parallel; over time, this compatibility should be phased out." msgstr "" "El tipo de cadena *Unicode* es modificado para admitir múltiples " "representaciones internas, dependiendo del caracter con el ordinal Unicode " @@ -420,9 +420,9 @@ msgstr "" "Por parte de la API de C, :pep:`393` es totalmente compatible con versiones " "anteriores. La API antigua debería quedar disponible al menos por cinco " "años. Las aplicaciones que usan la API antigua no saldrán beneficiadas por " -"la reducción de memoria, o -peor- podrían usar un bit más de memoria, debido " -"a que python necesitaría mantener dos versiones de cada cadena de caracteres " -"(en el formato antiguo y en el nuevo almacenamiento)" +"la reducción de memoria, o -peor- podrían usar un bit más de memoria, debido" +" a que python necesitaría mantener dos versiones de cada cadena de " +"caracteres (en el formato antiguo y en el nuevo almacenamiento)" #: ../Doc/whatsnew/3.3.rst:227 msgid "Functionality" @@ -432,7 +432,6 @@ msgstr "Funcionalidad" msgid "Changes introduced by :pep:`393` are the following:" msgstr "Los cambios introducidos en el :pep:`393` son los siguientes:" -# Poner en cursiva la palabra UNICODE, verdad? #: ../Doc/whatsnew/3.3.rst:231 msgid "" "Python now always supports the full range of Unicode code points, including " @@ -440,15 +439,15 @@ msgid "" "between narrow and wide builds no longer exists and Python now behaves like " "a wide build, even under Windows." msgstr "" -"Ahora python admite siempre el rango completo de códigos *Unicode*, " -"incluyendo los que no son BMP (es decir, ``U+0000`` to ``U+10FFFF``). La " -"distinción entre ancho y angosto ya no existe, y python se comporta ahora " -"como una compilación amplia, incluso en sistemas windows." +"Ahora python admite siempre el rango completo de códigos Unicode, incluyendo" +" los que no son BMP (es decir, ``U+0000`` to ``U+10FFFF``). La distinción " +"entre ancho y angosto ya no existe, y python se comporta ahora como una " +"compilación amplia, incluso en sistemas windows." #: ../Doc/whatsnew/3.3.rst:236 msgid "" -"With the death of narrow builds, the problems specific to narrow builds have " -"also been fixed, for example:" +"With the death of narrow builds, the problems specific to narrow builds have" +" also been fixed, for example:" msgstr "" "Con la eliminación de las construcciones estrechas, han sido solucionados " "también los problemas específicos referentes a este tipo de construcciones, " @@ -464,8 +463,8 @@ msgstr "" #: ../Doc/whatsnew/3.3.rst:242 msgid "" -"surrogate pairs are not recombined in string literals, so " -"``'\\uDBFF\\uDFFF' != '\\U0010FFFF'``;" +"surrogate pairs are not recombined in string literals, so ``'\\uDBFF\\uDFFF'" +" != '\\U0010FFFF'``;" msgstr "" "los pares sustitutos no se recombinan en cadenas literales, de modo que " "``'\\uDBFF\\uDFFF' != '\\U0010FFFF'``;" @@ -476,8 +475,8 @@ msgid "" "``'\\U0010FFFF'[0]`` now returns ``'\\U0010FFFF'`` and not ``'\\uDBFF'``;" msgstr "" "la indexación o el corte de caracteres que no son BMP, retorna el valor " -"esperado, de modo que ``'\\U0010FFFF'[0]`` ahora retorna ``'\\U0010FFFF'`` y " -"no ``'\\uDBFF'``;" +"esperado, de modo que ``'\\U0010FFFF'[0]`` ahora retorna ``'\\U0010FFFF'`` y" +" no ``'\\uDBFF'``;" #: ../Doc/whatsnew/3.3.rst:248 msgid "" @@ -497,14 +496,13 @@ msgstr "" "El valor de :data:`sys.maxunicode` ahora es siempre ``1114111`` " "(``0x10FFFF`` en hexadecimal). La función :c:func:`!PyUnicode_GetMax` aún " "devuelve ``0xFFFF`` o ``0x10FFFF`` por compatibilidad con versiones " -"anteriores y no debe usarse con la nueva API Unicode (consulte :issue:" -"`13054`)." +"anteriores y no debe usarse con la nueva API Unicode (consulte " +":issue:`13054`)." -# COMO TRADUCIR FLAG #: ../Doc/whatsnew/3.3.rst:256 msgid "The :file:`./configure` flag ``--with-wide-unicode`` has been removed." msgstr "" -"Se ha eliminado el indicador :file:`./configure` ``--with-wide-unicode``." +"Se ha eliminado la bandera :file:`./configure` ``--with-wide-unicode``." #: ../Doc/whatsnew/3.3.rst:259 msgid "Performance and resource usage" @@ -515,8 +513,8 @@ msgid "" "The storage of Unicode strings now depends on the highest code point in the " "string:" msgstr "" -"El almacenamiento de las cadenas *Unicode* ahora depende del punto de código " -"más alto en la cadena:" +"El almacenamiento de las cadenas *Unicode* ahora depende del punto de código" +" más alto en la cadena:" #: ../Doc/whatsnew/3.3.rst:263 msgid "" @@ -539,26 +537,26 @@ msgstr "" #: ../Doc/whatsnew/3.3.rst:269 msgid "" -"The net effect is that for most applications, memory usage of string storage " -"should decrease significantly - especially compared to former wide unicode " -"builds - as, in many cases, strings will be pure ASCII even in international " -"contexts (because many strings store non-human language data, such as XML " +"The net effect is that for most applications, memory usage of string storage" +" should decrease significantly - especially compared to former wide unicode " +"builds - as, in many cases, strings will be pure ASCII even in international" +" contexts (because many strings store non-human language data, such as XML " "fragments, HTTP headers, JSON-encoded data, etc.). We also hope that it " "will, for the same reasons, increase CPU cache efficiency on non-trivial " "applications. The memory usage of Python 3.3 is two to three times smaller " "than Python 3.2, and a little bit better than Python 2.7, on a Django " "benchmark (see the PEP for details)." msgstr "" -"El efecto neto es que para la mayoría de las aplicaciones, el uso de memoria " -"del almacenamiento de cadenas de caracteres debería disminuir " +"El efecto neto es que para la mayoría de las aplicaciones, el uso de memoria" +" del almacenamiento de cadenas de caracteres debería disminuir " "significativamente, especialmente en comparación con las construcciones " "*unicode* anchas, ya que, en muchos casos, las cadenas serán ASCII puro " "incluso en contextos internacionales (porque muchas cadenas almacenan datos " "en lenguaje no humano, tal como fragmentos XML, encabezados HTTP, datos " "codificados en JSON, etc.). También esperamos que, por las mismas razones, " -"aumente la eficiencia de la caché de la CPU en aplicaciones no triviales. El " -"uso de memoria de Python 3.3 es dos o tres veces más pequeño que Python 3.2, " -"y un poco mejor que Python 2.7, en un punto de referencia de Django " +"aumente la eficiencia de la caché de la CPU en aplicaciones no triviales. El" +" uso de memoria de Python 3.3 es dos o tres veces más pequeño que Python " +"3.2, y un poco mejor que Python 2.7, en un punto de referencia de Django " "(consulte el PEP para obtener más detalles)." #: ../Doc/whatsnew/3.3.rst:283 @@ -567,8 +565,8 @@ msgstr ":pep:`393` - Representación flexible de cadenas de caracteres" #: ../Doc/whatsnew/3.3.rst:283 msgid "" -"PEP written by Martin von Löwis; implementation by Torsten Becker and Martin " -"von Löwis." +"PEP written by Martin von Löwis; implementation by Torsten Becker and Martin" +" von Löwis." msgstr "" "PEP escrito por Martin von Lowis; implementado por Torsten Becker y Martin " "von Lowis." @@ -591,38 +589,38 @@ msgstr "" msgid "" "This launcher is invoked implicitly when double-clicking ``*.py`` files. If " "only a single Python version is installed on the system, that version will " -"be used to run the file. If multiple versions are installed, the most recent " -"version is used by default, but this can be overridden by including a Unix-" +"be used to run the file. If multiple versions are installed, the most recent" +" version is used by default, but this can be overridden by including a Unix-" "style \"shebang line\" in the Python script." msgstr "" "Este lanzador se invoca de forma implícita cuando haces doble click en " "archivos ``*.py``. Si el sistema tiene instalada una única versión de " "python, ésta versión será usada para ejecutar el archivo. Si hay múltiples " "versiones instaladas en el sistema, se utilizara por defecto la versión más " -"reciente pero ésto puede ser anulado incluyendo una \"línea shebang\" estilo " -"Unix en el *script* de Python." +"reciente pero ésto puede ser anulado incluyendo una \"línea shebang\" estilo" +" Unix en el *script* de Python." #: ../Doc/whatsnew/3.3.rst:302 msgid "" -"The launcher can also be used explicitly from the command line as the ``py`` " -"application. Running ``py`` follows the same version selection rules as " -"implicitly launching scripts, but a more specific version can be selected by " -"passing appropriate arguments (such as ``-3`` to request Python 3 when " +"The launcher can also be used explicitly from the command line as the ``py``" +" application. Running ``py`` follows the same version selection rules as " +"implicitly launching scripts, but a more specific version can be selected by" +" passing appropriate arguments (such as ``-3`` to request Python 3 when " "Python 2 is also installed, or ``-2.6`` to specifically request an earlier " "Python version when a more recent version is installed)." msgstr "" "El lanzador también se puede usar explícitamente desde la línea de comando " -"como la aplicación ``py``. La ejecución de ``py`` sigue las mismas reglas de " -"selección de versión que la ejecución implícita de scripts, pero se puede " +"como la aplicación ``py``. La ejecución de ``py`` sigue las mismas reglas de" +" selección de versión que la ejecución implícita de scripts, pero se puede " "seleccionar una versión más específica pasando los argumentos apropiados " -"(como ``-3`` para solicitar Python 3 cuando Python 2 también está instalado, " -"o ``-2.6`` para solicitar específicamente una versión anterior de Python " +"(como ``-3`` para solicitar Python 3 cuando Python 2 también está instalado," +" o ``-2.6`` para solicitar específicamente una versión anterior de Python " "cuando se instala una versión más reciente)." #: ../Doc/whatsnew/3.3.rst:309 msgid "" -"In addition to the launcher, the Windows installer now includes an option to " -"add the newly installed Python to the system PATH. (Contributed by Brian " +"In addition to the launcher, the Windows installer now includes an option to" +" add the newly installed Python to the system PATH. (Contributed by Brian " "Curtin in :issue:`3561`.)" msgstr "" "Además del lanzador, el instalador de Windows ahora incluye una opción para " @@ -638,7 +636,8 @@ msgid "" "PEP written by Mark Hammond and Martin v. Löwis; implementation by Vinay " "Sajip." msgstr "" -"PEP escrito por Mark Hammond y Martin v. Löwis; implementado por Vinay Sajip." +"PEP escrito por Mark Hammond y Martin v. Löwis; implementado por Vinay " +"Sajip." #: ../Doc/whatsnew/3.3.rst:319 msgid "Launcher documentation: :ref:`launcher`" @@ -657,34 +656,36 @@ msgid "" "The hierarchy of exceptions raised by operating system errors is now both " "simplified and finer-grained." msgstr "" -"La jerarquía de excepciones generada por errores del sistema operativo ahora " -"está simplificada y es más detallada." +"La jerarquía de excepciones generada por errores del sistema operativo ahora" +" está simplificada y es más detallada." #: ../Doc/whatsnew/3.3.rst:332 msgid "" "You don't have to worry anymore about choosing the appropriate exception " -"type between :exc:`OSError`, :exc:`IOError`, :exc:`EnvironmentError`, :exc:" -"`WindowsError`, :exc:`mmap.error`, :exc:`socket.error` or :exc:`select." -"error`. All these exception types are now only one: :exc:`OSError`. The " -"other names are kept as aliases for compatibility reasons." +"type between :exc:`OSError`, :exc:`IOError`, :exc:`EnvironmentError`, " +":exc:`WindowsError`, :exc:`mmap.error`, :exc:`socket.error` or " +":exc:`select.error`. All these exception types are now only one: " +":exc:`OSError`. The other names are kept as aliases for compatibility " +"reasons." msgstr "" "No tienes que preocuparte más por cómo elegir el tipo de excepción adecuado " -"entre :exc:`OSError`, :exc:`IOError`, :exc:`EnvironmentError`, :exc:" -"`WindowsError`, :exc:`mmap.error`, :exc:`socket.error` or :exc:`select." -"error`. Todos estos tipos de excepción son ahora una sola: :exc:`OSError`. " -"Los otros nombres se mantienen como alias por razones de compatibilidad." +"entre :exc:`OSError`, :exc:`IOError`, :exc:`EnvironmentError`, " +":exc:`WindowsError`, :exc:`mmap.error`, :exc:`socket.error` or " +":exc:`select.error`. Todos estos tipos de excepción son ahora una sola: " +":exc:`OSError`. Los otros nombres se mantienen como alias por razones de " +"compatibilidad." #: ../Doc/whatsnew/3.3.rst:339 msgid "" "Also, it is now easier to catch a specific error condition. Instead of " "inspecting the ``errno`` attribute (or ``args[0]``) for a particular " -"constant from the :mod:`errno` module, you can catch the adequate :exc:" -"`OSError` subclass. The available subclasses are the following:" +"constant from the :mod:`errno` module, you can catch the adequate " +":exc:`OSError` subclass. The available subclasses are the following:" msgstr "" "Además, ahora es más fácil detectar una condición de error específica. En " "lugar de inspeccionar el atributo ``errno`` (o ``args[0]``) para una " -"constante particular del módulo :mod:`errno`, puede seleccionar la subclase :" -"exc:`OSError` adecuada. Las subclases disponibles son las siguientes:" +"constante particular del módulo :mod:`errno`, puede seleccionar la subclase " +":exc:`OSError` adecuada. Las subclases disponibles son las siguientes:" #: ../Doc/whatsnew/3.3.rst:344 msgid ":exc:`BlockingIOError`" @@ -755,8 +756,8 @@ msgid "" "Thanks to the new exceptions, common usages of the :mod:`errno` can now be " "avoided. For example, the following code written for Python 3.2::" msgstr "" -"Gracias a las nuevas excepciones, los usos comunes de :mod:`errno` ahora se " -"pueden evitar. Por ejemplo, el siguiente código escrito para Python 3.2:" +"Gracias a las nuevas excepciones, los usos comunes de :mod:`errno` ahora se" +" pueden evitar. Por ejemplo, el siguiente código escrito para Python 3.2:" #: ../Doc/whatsnew/3.3.rst:366 msgid "" @@ -773,6 +774,18 @@ msgid "" " else:\n" " raise" msgstr "" +"from errno import ENOENT, EACCES, EPERM\n" +"\n" +"try:\n" +"with open(\"document.txt\") as f:\n" +"content = f.read()\n" +"except IOError as err:\n" +"if err.errno == ENOENT:\n" +"print(\"Falta el archivo document.txt\")\n" +"elif err.errno in (EACCES, EPERM):\n" +"print(\"No tiene permiso para leer document.txt\")\n" +"else:\n" +"raise" #: ../Doc/whatsnew/3.3.rst:379 msgid "" @@ -792,10 +805,18 @@ msgid "" "except PermissionError:\n" " print(\"You are not allowed to read document.txt\")" msgstr "" +"Intente:\n" +"con open(\"document.txt\") como f:\n" +"content = f.read()\n" +"except FileNotFoundError:\n" +"print(\"Falta el archivo document.txt\")\n" +"except PermissionError:\n" +"print(\"No tiene permiso para leer document.txt\")" #: ../Doc/whatsnew/3.3.rst:392 msgid ":pep:`3151` - Reworking the OS and IO Exception Hierarchy" -msgstr ":pep:`3151` - Re elaboración de la jerarquía de excepciones de IO y OS" +msgstr "" +":pep:`3151` - Re elaboración de la jerarquía de excepciones de IO y OS" #: ../Doc/whatsnew/3.3.rst:393 msgid "PEP written and implemented by Antoine Pitrou" @@ -809,16 +830,16 @@ msgstr "PEP 380: Sintaxis para delegar en un subgenerador" msgid "" "PEP 380 adds the ``yield from`` expression, allowing a :term:`generator` to " "delegate part of its operations to another generator. This allows a section " -"of code containing :keyword:`yield` to be factored out and placed in another " -"generator. Additionally, the subgenerator is allowed to return with a value, " -"and the value is made available to the delegating generator." +"of code containing :keyword:`yield` to be factored out and placed in another" +" generator. Additionally, the subgenerator is allowed to return with a " +"value, and the value is made available to the delegating generator." msgstr "" -"PEP 380 agrega la expresión ``yield from``, permitiendo que un :term:" -"`generator` delegue parte de sus operaciones a otro generador. Esto permite " -"tomar en consideración una sección de código que contenga la palabra :" -"keyword:`yield` y ubicarla en otro generador. Además, el subgenerador puede " -"regresar con un valor y el valor se pone a disposición del generador que " -"delega." +"PEP 380 agrega la expresión ``yield from``, permitiendo que un " +":term:`generator` delegue parte de sus operaciones a otro generador. Esto " +"permite tomar en consideración una sección de código que contenga la palabra" +" :keyword:`yield` y ubicarla en otro generador. Además, el subgenerador " +"puede regresar con un valor y el valor se pone a disposición del generador " +"que delega." #: ../Doc/whatsnew/3.3.rst:411 msgid "" @@ -847,16 +868,22 @@ msgid "" ">>> list(g(5))\n" "[5, 4, 3, 2, 1, 0, 1, 2, 3, 4]" msgstr "" +">>> def g(x):\n" +"... rendimiento de rango(x, 0, -1)\n" +"... rendimiento de rango(x)\n" +"...\n" +">>> lista(g(5))\n" +"[5, 4, 3, 2, 1, 0, 1, 2, 3, 4]" #: ../Doc/whatsnew/3.3.rst:424 msgid "" "However, unlike an ordinary loop, ``yield from`` allows subgenerators to " -"receive sent and thrown values directly from the calling scope, and return a " -"final value to the outer generator::" +"receive sent and thrown values directly from the calling scope, and return a" +" final value to the outer generator::" msgstr "" "Sin embargo, a diferencia de un ciclo ordinario, ``yield from`` permite que " -"los subgeneradores reciban valores enviados y lanzados directamente desde el " -"ámbito de la llamada y retornen un valor final al generador externo:" +"los subgeneradores reciban valores enviados y lanzados directamente desde el" +" ámbito de la llamada y retornen un valor final al generador externo:" #: ../Doc/whatsnew/3.3.rst:428 msgid "" @@ -887,16 +914,42 @@ msgid "" ">>> tallies\n" "[6, 10]" msgstr "" +">>> def accumulate():\n" +"... tally = 0\n" +"... while 1:\n" +"... next = yield\n" +"... if next is None:\n" +"... return tally\n" +"... tally += next\n" +"...\n" +">>> def gather_tallies(tallies):\n" +"... while 1:\n" +"... tally = yield from accumulate()\n" +"... tallies.append(tally)\n" +"...\n" +">>> tallies = []\n" +">>> acc = gather_tallies(tallies)\n" +">>> next(acc) # Asegura que acumulador esté listo y acepte valores\n" +">>> for i in range(4):\n" +"... acc.send(i)\n" +"...\n" +">>> acc.send(None) # Finaliza el primer recuento\n" +">>> for i in range(5):\n" +"... acc.send(i)\n" +"...\n" +">>> acc.send(None) # Finaliza el segundo recuento\n" +">>> tallies\n" +"[6, 10]" #: ../Doc/whatsnew/3.3.rst:455 msgid "" "The main principle driving this change is to allow even generators that are " -"designed to be used with the ``send`` and ``throw`` methods to be split into " -"multiple subgenerators as easily as a single large function can be split " +"designed to be used with the ``send`` and ``throw`` methods to be split into" +" multiple subgenerators as easily as a single large function can be split " "into multiple subfunctions." msgstr "" -"Lo más importante de éste cambio es permitir que incluso los generadores que " -"están diseñados para ser usados con los métodos ``send`` y ``throw`` sean " +"Lo más importante de éste cambio es permitir que incluso los generadores que" +" están diseñados para ser usados con los métodos ``send`` y ``throw`` sean " "separados en múltiples subgeneradores tan fácilmente como las funciones " "grandes se pueden dividir en varias subfunciones." @@ -906,8 +959,8 @@ msgstr ":pep:`380` - Sintaxis para delegar a un subgenerador" #: ../Doc/whatsnew/3.3.rst:463 msgid "" -"PEP written by Greg Ewing; implementation by Greg Ewing, integrated into 3.3 " -"by Renaud Blanch, Ryan Kelly and Nick Coghlan; documentation by Zbigniew " +"PEP written by Greg Ewing; implementation by Greg Ewing, integrated into 3.3" +" by Renaud Blanch, Ryan Kelly and Nick Coghlan; documentation by Zbigniew " "Jędrzejewski-Szmek and Nick Coghlan" msgstr "" "PEP escrito por Greg Ewing; implementación por Greg Ewing, integrado en 3.3 " @@ -925,8 +978,8 @@ msgid "" "applications that convert between exception types::" msgstr "" "PEP 409 introduce una nueva sintaxis que permite deshabilitar la " -"visualización del contexto de excepción encadenado. Esto permite mensajes de " -"error más limpios en aplicaciones que convierten entre tipos de excepción:" +"visualización del contexto de excepción encadenado. Esto permite mensajes de" +" error más limpios en aplicaciones que convierten entre tipos de excepción:" #: ../Doc/whatsnew/3.3.rst:475 msgid "" @@ -945,14 +998,28 @@ msgid "" " File \"\", line 8, in __getattr__\n" "AttributeError: x" msgstr "" +">>> class D:\n" +"... def __init__(self, extra):\n" +"... self._extra_attributes = extra\n" +"... def __getattr__(self, attr):\n" +"... try:\n" +"... return self._extra_attributes[attr]\n" +"... except KeyError:\n" +"... raise AttributeError(attr) from None\n" +"...\n" +">>> D({}).x\n" +"Traceback (most recent call last):\n" +" File \"\", line 1, in \n" +" File \"\", line 8, in __getattr__\n" +"AttributeError: x" #: ../Doc/whatsnew/3.3.rst:490 msgid "" "Without the ``from None`` suffix to suppress the cause, the original " "exception would be displayed by default::" msgstr "" -"Sin el sufijo ``from None`` para suprimir la causa, la excepción original se " -"mostraría de forma predeterminada:" +"Sin el sufijo ``from None`` para suprimir la causa, la excepción original se" +" mostraría de forma predeterminada:" #: ../Doc/whatsnew/3.3.rst:493 msgid "" @@ -977,6 +1044,26 @@ msgid "" " File \"\", line 8, in __getattr__\n" "AttributeError: x" msgstr "" +">>> class C:\n" +"... def __init__(self, extra):\n" +"... self._extra_attributes = extra\n" +"... def __getattr__(self, attr):\n" +"... try:\n" +"... return self._extra_attributes[attr]\n" +"... except KeyError:\n" +"... raise AttributeError(attr)\n" +"...\n" +">>> C({}).x\n" +"Traceback (most recent call last):\n" +" File \"\", line 6, in __getattr__\n" +"KeyError: 'x'\n" +"\n" +"During handling of the above exception, another exception occurred:\n" +"\n" +"Traceback (most recent call last):\n" +" File \"\", line 1, in \n" +" File \"\", line 8, in __getattr__\n" +"AttributeError: x" #: ../Doc/whatsnew/3.3.rst:514 msgid "" @@ -998,6 +1085,12 @@ msgid "" "...\n" "KeyError('x',)" msgstr "" +">>> try:\n" +"... D({}).x\n" +"... except AttributeError as exc:\n" +"... print(repr(exc.__context__))\n" +"...\n" +"KeyError('x',)" #: ../Doc/whatsnew/3.3.rst:528 msgid ":pep:`409` - Suppressing exception context" @@ -1023,14 +1116,14 @@ msgid "" "developers to focus on the more significant semantic changes (such as the " "stricter default separation of binary and text data)." msgstr "" -"Para facilitar la transición de Python 2 para las aplicaciones de Python que " -"reconocen *Unicode* y que hacen un uso intensivo de literales Unicode, " +"Para facilitar la transición de Python 2 para las aplicaciones de Python que" +" reconocen *Unicode* y que hacen un uso intensivo de literales Unicode, " "Python 3.3 una vez más admite el prefijo \"``u``\" para cadenas literales. " "Este prefijo no tiene importancia semántica en Python 3, se proporciona " "únicamente para reducir el número de cambios puramente mecánicos en la " -"migración a Python 3, lo que facilita a los desarrolladores centrarse en los " -"cambios semánticos más significativos (como la separación predeterminada más " -"estricta de binary y datos de texto)." +"migración a Python 3, lo que facilita a los desarrolladores centrarse en los" +" cambios semánticos más significativos (como la separación predeterminada " +"más estricta de binary y datos de texto)." #: ../Doc/whatsnew/3.3.rst:545 msgid ":pep:`414` - Explicit Unicode literals" @@ -1045,21 +1138,20 @@ msgid "PEP 3155: Qualified name for classes and functions" msgstr "PEP 3155: Nombres calificados para clases y funciones" #: ../Doc/whatsnew/3.3.rst:552 -#, fuzzy msgid "" "Functions and class objects have a new :attr:`~definition.__qualname__` " "attribute representing the \"path\" from the module top-level to their " -"definition. For global functions and classes, this is the same as :attr:" -"`~definition.__name__`. For other functions and classes, it provides better " -"information about where they were actually defined, and how they might be " -"accessible from the global scope." -msgstr "" -"Las funciones y objetos de clases tienen un nuevo atributo ``__qualname__``, " -"que representa la ruta desde el nivel superior del módulo hasta su " -"definición. Para funciones globales y clases, es lo mismo que ``__name__``. " -"Para otras funciones y clases, éste proporciona mejor información sobre " -"donde han sido definidos realmente y como podrían ser accesibles desde un " -"ámbito global." +"definition. For global functions and classes, this is the same as " +":attr:`~definition.__name__`. For other functions and classes, it provides " +"better information about where they were actually defined, and how they " +"might be accessible from the global scope." +msgstr "" +"Las funciones y los objetos de clase tienen un nuevo atributo " +":attr:`~definition.__qualname__` que representa la \"ruta\" desde el nivel " +"superior del módulo hasta su definición. Para las funciones y clases " +"globales, esto es lo mismo que :attr:`~definition.__name__`. Para otras " +"funciones y clases, proporciona mejor información sobre dónde se definieron " +"realmente y cómo se puede acceder a ellas desde el ámbito global." #: ../Doc/whatsnew/3.3.rst:560 msgid "Example with (non-bound) methods::" @@ -1076,6 +1168,14 @@ msgid "" ">>> C.meth.__qualname__\n" "'C.meth'" msgstr "" +">>> class C:\n" +"... def meth(self):\n" +"... pass\n" +"...\n" +">>> C.meth.__name__\n" +"'meth'\n" +">>> C.meth.__qualname__\n" +"'C.meth'" #: ../Doc/whatsnew/3.3.rst:571 msgid "Example with nested classes::" @@ -1097,6 +1197,19 @@ msgid "" ">>> C.D.meth.__qualname__\n" "'C.D.meth'" msgstr "" +">>> class C:\n" +"... class D:\n" +"... def meth(self):\n" +"... pass\n" +"...\n" +">>> C.D.__name__\n" +"'D'\n" +">>> C.D.__qualname__\n" +"'C.D'\n" +">>> C.D.meth.__name__\n" +"'meth'\n" +">>> C.D.meth.__qualname__\n" +"'C.D.meth'" #: ../Doc/whatsnew/3.3.rst:587 msgid "Example with nested functions::" @@ -1114,6 +1227,15 @@ msgid "" ">>> outer().__qualname__\n" "'outer..inner'" msgstr "" +">>> def outer():\n" +"... def inner():\n" +"... pass\n" +"... return inner\n" +"...\n" +">>> outer().__name__\n" +"'inner'\n" +">>> outer().__qualname__\n" +"'outer..inner'" #: ../Doc/whatsnew/3.3.rst:599 msgid "" @@ -1130,6 +1252,10 @@ msgid "" ">>> str(C.D.meth)\n" "''" msgstr "" +">>> str(C.D)\n" +"\"\"\n" +">>> str(C.D.meth)\n" +"''" #: ../Doc/whatsnew/3.3.rst:609 msgid ":pep:`3155` - Qualified name for classes and functions" @@ -1147,12 +1273,12 @@ msgstr "PEP 412: Diccionario de intercambio de claves" msgid "" "Dictionaries used for the storage of objects' attributes are now able to " "share part of their internal storage between each other (namely, the part " -"which stores the keys and their respective hashes). This reduces the memory " -"consumption of programs creating many instances of non-builtin types." +"which stores the keys and their respective hashes). This reduces the memory" +" consumption of programs creating many instances of non-builtin types." msgstr "" "Los diccionarios usados para almacenar atributos de objetos, ahora pueden " -"compartir parte de su almacenamiento interno entre sí (a saber, la parte que " -"almacena las claves y sus respectivos hashes). Esto reduce el consumo de " +"compartir parte de su almacenamiento interno entre sí (a saber, la parte que" +" almacena las claves y sus respectivos hashes). Esto reduce el consumo de " "memoria de programas creando varias instancias de tipos no integrados." #: ../Doc/whatsnew/3.3.rst:625 @@ -1171,22 +1297,23 @@ msgstr "PEP 362: Objeto de firma de función" msgid "" "A new function :func:`inspect.signature` makes introspection of python " "callables easy and straightforward. A broad range of callables is " -"supported: python functions, decorated or not, classes, and :func:`functools." -"partial` objects. New classes :class:`inspect.Signature`, :class:`inspect." -"Parameter` and :class:`inspect.BoundArguments` hold information about the " -"call signatures, such as, annotations, default values, parameters kinds, and " -"bound arguments, which considerably simplifies writing decorators and any " -"code that validates or amends calling signatures or arguments." -msgstr "" -"Una nueva función :func:`inspect.signature` hace que la introspección de las " -"llamadas de Python sea fácil y directa. Se admite una amplia gama de " -"invocables: funciones python, decoradas o no, clases y objetos :func:" -"`functools.partial`. Las Nuevas clases :class:`inspect.Signature`, :class:" -"`inspect.Parameter` y :class:`inspect.BoundArguments` contienen información " -"sobre las firmas de llamadas, tales como anotaciones, valores por defecto, " -"tipos de parámetros, y los argumentos vinculados, lo cual simplifica " -"considerablemente la escritura de decoradores y de cualquier código que " -"valide o modifique las firmas de llamadas o argumentos." +"supported: python functions, decorated or not, classes, and " +":func:`functools.partial` objects. New classes :class:`inspect.Signature`, " +":class:`inspect.Parameter` and :class:`inspect.BoundArguments` hold " +"information about the call signatures, such as, annotations, default values," +" parameters kinds, and bound arguments, which considerably simplifies " +"writing decorators and any code that validates or amends calling signatures " +"or arguments." +msgstr "" +"Una nueva función :func:`inspect.signature` hace que la introspección de las" +" llamadas de Python sea fácil y directa. Se admite una amplia gama de " +"invocables: funciones python, decoradas o no, clases y objetos " +":func:`functools.partial`. Las Nuevas clases :class:`inspect.Signature`, " +":class:`inspect.Parameter` y :class:`inspect.BoundArguments` contienen " +"información sobre las firmas de llamadas, tales como anotaciones, valores " +"por defecto, tipos de parámetros, y los argumentos vinculados, lo cual " +"simplifica considerablemente la escritura de decoradores y de cualquier " +"código que valide o modifique las firmas de llamadas o argumentos." #: ../Doc/whatsnew/3.3.rst:644 msgid ":pep:`362`: - Function Signature Object" @@ -1213,23 +1340,23 @@ msgid "" msgstr "" "Un nuevo atributo en el módulo :mod:`sys` expone detalles específicos de la " "implementación del intérprete que se ésta ejecutando en el momento actual. " -"El conjunto inicial de atributos en :data:`sys.implementation` son ``name``, " -"``version``, ``hexversion``, y ``cache_tag``." +"El conjunto inicial de atributos en :data:`sys.implementation` son ``name``," +" ``version``, ``hexversion``, y ``cache_tag``." #: ../Doc/whatsnew/3.3.rst:656 msgid "" -"The intention of ``sys.implementation`` is to consolidate into one namespace " -"the implementation-specific data used by the standard library. This allows " -"different Python implementations to share a single standard library code " +"The intention of ``sys.implementation`` is to consolidate into one namespace" +" the implementation-specific data used by the standard library. This allows" +" different Python implementations to share a single standard library code " "base much more easily. In its initial state, ``sys.implementation`` holds " "only a small portion of the implementation-specific data. Over time that " "ratio will shift in order to make the standard library more portable." msgstr "" -"La intención de ``sys.implementation`` es consolidar dentro de un espacio de " -"nombres, la implementación específica de datos usado por la biblioteca " +"La intención de ``sys.implementation`` es consolidar dentro de un espacio de" +" nombres, la implementación específica de datos usado por la biblioteca " "estándar. Esto permite que diferentes implementaciones de python puedan " -"compartir código de la biblioteca estándar de manera más fácil. En su estado " -"inicial, ``sys.implementation`` contiene solo una pequeña porción de los " +"compartir código de la biblioteca estándar de manera más fácil. En su estado" +" inicial, ``sys.implementation`` contiene solo una pequeña porción de los " "datos específicos de la implementación. Con el tiempo esta proporción " "cambiará para hacer que la biblioteca estándar sea más portable.." @@ -1241,9 +1368,9 @@ msgid "" "``importlib`` for its built-in import system may use ``cache_tag`` to " "control the caching behavior for modules." msgstr "" -"Un ejemplo de mejor portabilidad de la biblioteca estándar es ``cache_tag``. " -"A partir de Python 3.3, ``sys.implementation.cache_tag`` es utilizado por :" -"mod:`importlib` para admitir el cumplimiento :pep:`3147`. Cualquier " +"Un ejemplo de mejor portabilidad de la biblioteca estándar es ``cache_tag``." +" A partir de Python 3.3, ``sys.implementation.cache_tag`` es utilizado por " +":mod:`importlib` para admitir el cumplimiento :pep:`3147`. Cualquier " "implementación de Python que utilice ``importlib`` para su sistema de " "importación integrado puede usar ``cache_tag`` para controlar el " "comportamiento de almacenamiento en caché de los módulos." @@ -1256,10 +1383,10 @@ msgstr "SimpleNamespace" msgid "" "The implementation of ``sys.implementation`` also introduces a new type to " "Python: :class:`types.SimpleNamespace`. In contrast to a mapping-based " -"namespace, like :class:`dict`, ``SimpleNamespace`` is attribute-based, like :" -"class:`object`. However, unlike ``object``, ``SimpleNamespace`` instances " -"are writable. This means that you can add, remove, and modify the namespace " -"through normal attribute access." +"namespace, like :class:`dict`, ``SimpleNamespace`` is attribute-based, like " +":class:`object`. However, unlike ``object``, ``SimpleNamespace`` instances " +"are writable. This means that you can add, remove, and modify the namespace" +" through normal attribute access." msgstr "" "La implementación de ``sys.implementation`` también trae un nuevo tipo a " "Python: La clase :class:`types.SimpleNamespace`. En comparación con un " @@ -1289,30 +1416,30 @@ msgid "" "and __package__" msgstr "" ":issue:`2377`- Replace__import__w/ importlib.__import__ :issue:`13959` - Re-" -"implementar partes de :mod:`!imp` en Python puro :issue:`14605` - Hacer que " -"la maquinaria de importación sea explícita :issue:`14646` - Requerir que los " -"cargadores establezcan __loader__ y __package__" +"implementar partes de :mod:`!imp` en Python puro :issue:`14605` - Hacer que" +" la maquinaria de importación sea explícita :issue:`14646` - Requerir que " +"los cargadores establezcan __loader__ y __package__" #: ../Doc/whatsnew/3.3.rst:694 msgid "" -"The :func:`__import__` function is now powered by :func:`importlib." -"__import__`. This work leads to the completion of \"phase 2\" of :pep:`302`. " -"There are multiple benefits to this change. First, it has allowed for more " -"of the machinery powering import to be exposed instead of being implicit and " -"hidden within the C code. It also provides a single implementation for all " -"Python VMs supporting Python 3.3 to use, helping to end any VM-specific " -"deviations in import semantics. And finally it eases the maintenance of " -"import, allowing for future growth to occur." -msgstr "" -"La función :func:`__import__` ahora es potenciada por la función :func:" -"`importlib.__import__`. Este trabajo conduce a completar la \"fase 2\" de :" -"pep:`302`. Hay múltiples beneficios en éste cambio. En primer lugar, ha " -"permitido que la mayoría de la maquinaria que potencia las importaciones sea " -"expuesta, en vez de estar implícitas y ocultas en el código de C. También " -"proporciona una única implementación para todas las máquinas virtuales de " -"python que admitan el uso de Python 3.3 lo que ayuda a terminar con " -"cualquier desviación específica de VM en la semántica de importación. Y " -"finalmente facilita el mantenimiento de la importación, permitiendo que " +"The :func:`__import__` function is now powered by " +":func:`importlib.__import__`. This work leads to the completion of \"phase " +"2\" of :pep:`302`. There are multiple benefits to this change. First, it has" +" allowed for more of the machinery powering import to be exposed instead of " +"being implicit and hidden within the C code. It also provides a single " +"implementation for all Python VMs supporting Python 3.3 to use, helping to " +"end any VM-specific deviations in import semantics. And finally it eases the" +" maintenance of import, allowing for future growth to occur." +msgstr "" +"La función :func:`__import__` ahora es potenciada por la función " +":func:`importlib.__import__`. Este trabajo conduce a completar la \"fase 2\"" +" de :pep:`302`. Hay múltiples beneficios en éste cambio. En primer lugar, ha" +" permitido que la mayoría de la maquinaria que potencia las importaciones " +"sea expuesta, en vez de estar implícitas y ocultas en el código de C. " +"También proporciona una única implementación para todas las máquinas " +"virtuales de python que admitan el uso de Python 3.3 lo que ayuda a terminar" +" con cualquier desviación específica de VM en la semántica de importación. Y" +" finalmente facilita el mantenimiento de la importación, permitiendo que " "ocurra un crecimiento futuro." #: ../Doc/whatsnew/3.3.rst:703 @@ -1324,8 +1451,8 @@ msgid "" msgstr "" "Para el usuario común, no debería haber cambios visibles en la semántica. " "Para aquellos cuyo código realmente manipula la importación o las llamadas " -"de importación de forma programática, los cambios de código que posiblemente " -"sean necesarios, se tratan en la sección `Porting Python code`_ de éste " +"de importación de forma programática, los cambios de código que posiblemente" +" sean necesarios, se tratan en la sección `Porting Python code`_ de éste " "documento." #: ../Doc/whatsnew/3.3.rst:709 @@ -1335,8 +1462,9 @@ msgstr "Nuevas APIs" #: ../Doc/whatsnew/3.3.rst:710 msgid "" "One of the large benefits of this work is the exposure of what goes into " -"making the import statement work. That means the various importers that were " -"once implicit are now fully exposed as part of the :mod:`importlib` package." +"making the import statement work. That means the various importers that were" +" once implicit are now fully exposed as part of the :mod:`importlib` " +"package." msgstr "" "Uno de los grandes beneficios de éste trabajo es la exposición de lo que " "implica hacer que funcione la sentencia de importación. Esto significa que " @@ -1345,20 +1473,20 @@ msgstr "" #: ../Doc/whatsnew/3.3.rst:714 msgid "" -"The abstract base classes defined in :mod:`importlib.abc` have been expanded " -"to properly delineate between :term:`meta path finders ` " -"and :term:`path entry finders ` by introducing :class:" -"`importlib.abc.MetaPathFinder` and :class:`importlib.abc.PathEntryFinder`, " -"respectively. The old ABC of :class:`!importlib.abc.Finder` is now only " -"provided for backwards-compatibility and does not enforce any method " -"requirements." +"The abstract base classes defined in :mod:`importlib.abc` have been expanded" +" to properly delineate between :term:`meta path finders ` " +"and :term:`path entry finders ` by introducing " +":class:`importlib.abc.MetaPathFinder` and " +":class:`importlib.abc.PathEntryFinder`, respectively. The old ABC of " +":class:`!importlib.abc.Finder` is now only provided for backwards-" +"compatibility and does not enforce any method requirements." msgstr "" "Las clases base abstractas definidas en :mod:`importlib.abc` se han " -"expandido para delimitar adecuadamente entre :term:`buscadores de rutas meta " -"` y :term:`buscadores de entrada de rutas ` al introducir la clase :class:`importlib.abc.MetaPathFinder` y :" -"class:`importlib.abc.PathEntryFinder` respectivamente. El antiguo ABC de la " -"clase :class:`!importlib.abc.Finder` ahora solo se proporciona para " +"expandido para delimitar adecuadamente entre :term:`buscadores de rutas meta" +" ` y :term:`buscadores de entrada de rutas ` al introducir la clase :class:`importlib.abc.MetaPathFinder` y " +":class:`importlib.abc.PathEntryFinder` respectivamente. El antiguo ABC de la" +" clase :class:`!importlib.abc.Finder` ahora solo se proporciona para " "compatibilidad con versiones anteriores y no exige ningún requisito de " "método." @@ -1368,39 +1496,41 @@ msgid "" "mechanism used to search for source and bytecode files of a module. " "Previously this class was an implicit member of :data:`sys.path_hooks`." msgstr "" -"En términos de buscadores, :class:`importlib.machinery.FileFinder` expone el " -"mecanismo utilizado para buscar archivos fuente y de código de *bytes* de un " -"módulo. Anteriormente, ésta clase era un miembro implícito de :data:`sys." -"path_hooks`." +"En términos de buscadores, :class:`importlib.machinery.FileFinder` expone el" +" mecanismo utilizado para buscar archivos fuente y de código de *bytes* de " +"un módulo. Anteriormente, ésta clase era un miembro implícito de " +":data:`sys.path_hooks`." #: ../Doc/whatsnew/3.3.rst:726 msgid "" "For loaders, the new abstract base class :class:`importlib.abc.FileLoader` " "helps write a loader that uses the file system as the storage mechanism for " -"a module's code. The loader for source files (:class:`importlib.machinery." -"SourceFileLoader`), sourceless bytecode files (:class:`importlib.machinery." -"SourcelessFileLoader`), and extension modules (:class:`importlib.machinery." -"ExtensionFileLoader`) are now available for direct use." -msgstr "" -"Para los cargadores, la nueva clase base abstracta :class:`importlib.abc." -"FileLoader` ayuda a escribir un cargador que usa el sistema de archivos como " -"mecanismo de almacenamiento para el código de un módulo. El cargador de " -"archivos fuente (:class:`importlib.machinery.SourceFileLoader`), archivos de " -"código byte sin fuente (:class:`importlib.machinery.SourcelessFileLoader`) y " -"módulos de extensión (:class:`importlib.machinery.ExtensionFileLoader`) " -"ahora están disponibles para su uso directo." +"a module's code. The loader for source files " +"(:class:`importlib.machinery.SourceFileLoader`), sourceless bytecode files " +"(:class:`importlib.machinery.SourcelessFileLoader`), and extension modules " +"(:class:`importlib.machinery.ExtensionFileLoader`) are now available for " +"direct use." +msgstr "" +"Para los cargadores, la nueva clase base abstracta " +":class:`importlib.abc.FileLoader` ayuda a escribir un cargador que usa el " +"sistema de archivos como mecanismo de almacenamiento para el código de un " +"módulo. El cargador de archivos fuente " +"(:class:`importlib.machinery.SourceFileLoader`), archivos de código byte sin" +" fuente (:class:`importlib.machinery.SourcelessFileLoader`) y módulos de " +"extensión (:class:`importlib.machinery.ExtensionFileLoader`) ahora están " +"disponibles para su uso directo." #: ../Doc/whatsnew/3.3.rst:734 msgid "" ":exc:`ImportError` now has ``name`` and ``path`` attributes which are set " "when there is relevant data to provide. The message for failed imports will " -"also provide the full name of the module now instead of just the tail end of " -"the module's name." +"also provide the full name of the module now instead of just the tail end of" +" the module's name." msgstr "" ":exc:`ImportError` ahora tiene los atributos ``name`` y ``path`` que se " "establecen cuando hay datos relevantes para proporcionar. También, el " -"mensaje de importaciones fallidas ahora proporcionará el nombre completo del " -"módulo en lugar de solo el final del nombre del mismo." +"mensaje de importaciones fallidas ahora proporcionará el nombre completo del" +" módulo en lugar de solo el final del nombre del mismo." #: ../Doc/whatsnew/3.3.rst:739 msgid "" @@ -1409,9 +1539,9 @@ msgid "" "to help clean up any stored state as necessary." msgstr "" "La función :func:`importlib.invalidate_caches` ahora llamará al método con " -"el mismo nombre en todos los buscadores almacenados en :data:`sys." -"path_importer_cache` para ayudar a limpiar cualquier estado almacenado según " -"sea necesario." +"el mismo nombre en todos los buscadores almacenados en " +":data:`sys.path_importer_cache` para ayudar a limpiar cualquier estado " +"almacenado según sea necesario." #: ../Doc/whatsnew/3.3.rst:744 msgid "Visible Changes" @@ -1428,17 +1558,17 @@ msgstr "" #: ../Doc/whatsnew/3.3.rst:749 msgid "" "Beyond the expanse of what :mod:`importlib` now exposes, there are other " -"visible changes to import. The biggest is that :data:`sys.meta_path` and :" -"data:`sys.path_hooks` now store all of the meta path finders and path entry " -"hooks used by import. Previously the finders were implicit and hidden " +"visible changes to import. The biggest is that :data:`sys.meta_path` and " +":data:`sys.path_hooks` now store all of the meta path finders and path entry" +" hooks used by import. Previously the finders were implicit and hidden " "within the C code of import instead of being directly exposed. This means " -"that one can now easily remove or change the order of the various finders to " -"fit one's needs." +"that one can now easily remove or change the order of the various finders to" +" fit one's needs." msgstr "" "Más allá de la extensión de lo que ahora expone :mod:`importlib`, hay otros " -"cambios visibles para importar. El más grande es que :data:`sys.meta_path` " -"y :data:`sys.path_hooks` ahora almacenan todos los buscadores de rutas meta " -"y los ganchos de entrada de rutas usados por la importación. Anteriormente, " +"cambios visibles para importar. El más grande es que :data:`sys.meta_path` y" +" :data:`sys.path_hooks` ahora almacenan todos los buscadores de rutas meta y" +" los ganchos de entrada de rutas usados por la importación. Anteriormente, " "los buscadores estaban implícitos y ocultos dentro del código C de " "importación en lugar de estar expuestos directamente. Esto significa que " "ahora uno puede eliminar o cambiar fácilmente el orden de los diversos " @@ -1448,43 +1578,43 @@ msgstr "" msgid "" "Another change is that all modules have a ``__loader__`` attribute, storing " "the loader used to create the module. :pep:`302` has been updated to make " -"this attribute mandatory for loaders to implement, so in the future once 3rd-" -"party loaders have been updated people will be able to rely on the existence " -"of the attribute. Until such time, though, import is setting the module post-" -"load." +"this attribute mandatory for loaders to implement, so in the future once " +"3rd-party loaders have been updated people will be able to rely on the " +"existence of the attribute. Until such time, though, import is setting the " +"module post-load." msgstr "" "Otro cambio es que todos los módulos tienen un atributo ``__loader__`` que " "almacena el cargador usado para crear el módulo. La :pep:`302` se ha " "actualizado para hacer que este atributo sea obligatorio para implementar " "los cargadores, de manera que en el futuro, una vez que los cargadores de " "terceros hayan sido actualizados, las personas puedan confiar en la " -"existencia de éste atributo. Sin embargo, hasta entonces la importación está " -"configurando la post carga del módulo." +"existencia de éste atributo. Sin embargo, hasta entonces la importación está" +" configurando la post carga del módulo." #: ../Doc/whatsnew/3.3.rst:762 msgid "" -"Loaders are also now expected to set the ``__package__`` attribute from :pep:" -"`366`. Once again, import itself is already setting this on all loaders " -"from :mod:`importlib` and import itself is setting the attribute post-load." +"Loaders are also now expected to set the ``__package__`` attribute from " +":pep:`366`. Once again, import itself is already setting this on all loaders" +" from :mod:`importlib` and import itself is setting the attribute post-load." msgstr "" "También se espera que ahora los cargadores establezcan el atributo " "``__package__`` de :pep:`366`. Una vez más, la importación por sí misma ya " -"está configurando ésto en todos los cargadores del módulo :mod:`importlib` y " -"la importación misma está configurando la post carga del atributo." +"está configurando ésto en todos los cargadores del módulo :mod:`importlib` y" +" la importación misma está configurando la post carga del atributo." #: ../Doc/whatsnew/3.3.rst:766 msgid "" -"``None`` is now inserted into :data:`sys.path_importer_cache` when no finder " -"can be found on :data:`sys.path_hooks`. Since :class:`!imp.NullImporter` is " -"not directly exposed on :data:`sys.path_hooks` it could no longer be relied " -"upon to always be available to use as a value representing no finder found." +"``None`` is now inserted into :data:`sys.path_importer_cache` when no finder" +" can be found on :data:`sys.path_hooks`. Since :class:`!imp.NullImporter` is" +" not directly exposed on :data:`sys.path_hooks` it could no longer be relied" +" upon to always be available to use as a value representing no finder found." msgstr "" -"Ahora se incluye el atributo ``None`` dentro de :data:`sys." -"path_importer_cache` cuando no se encuentre ningún buscador en :data:`sys." -"path_hooks`. Dado que :class:`!imp.NullImporter` no está directamente " -"expuesto en :data:`sys.path_hooks`, podría no haber una certeza de que esté " -"disponible para su uso como un valor que represente que no se ha encontrado " -"ningún buscador." +"Ahora se incluye el atributo ``None`` dentro de " +":data:`sys.path_importer_cache` cuando no se encuentre ningún buscador en " +":data:`sys.path_hooks`. Dado que :class:`!imp.NullImporter` no está " +"directamente expuesto en :data:`sys.path_hooks`, podría no haber una certeza" +" de que esté disponible para su uso como un valor que represente que no se " +"ha encontrado ningún buscador." #: ../Doc/whatsnew/3.3.rst:771 msgid "" @@ -1492,9 +1622,9 @@ msgid "" "consideration when updating code for Python 3.3, and thus should be read " "about in the `Porting Python code`_ section of this document." msgstr "" -"Todos los demás cambios se relacionan con los cambios de semántica que deben " -"tomarse en cuenta al actualizar el código a python 3.3, por lo tanto, deben " -"leerse en la sección `Portar código Python`_ de este documento." +"Todos los demás cambios se relacionan con los cambios de semántica que deben" +" tomarse en cuenta al actualizar el código a python 3.3, por lo tanto, deben" +" leerse en la sección `Portar código Python`_ de este documento." #: ../Doc/whatsnew/3.3.rst:775 msgid "(Implementation by Brett Cannon)" @@ -1510,16 +1640,15 @@ msgstr "" "Algunos cambios más pequeños realizados en el lenguaje Python principal son:" #: ../Doc/whatsnew/3.3.rst:783 -#, fuzzy msgid "" -"Added support for Unicode name aliases and named sequences. Both :func:" -"`unicodedata.lookup` and ``'\\N{...}'`` now resolve name aliases, and :func:" -"`unicodedata.lookup` resolves named sequences too." +"Added support for Unicode name aliases and named sequences. Both " +":func:`unicodedata.lookup` and ``'\\N{...}'`` now resolve name aliases, and " +":func:`unicodedata.lookup` resolves named sequences too." msgstr "" -"Se ha añadido compatibilidad con alias de nombres *Unicode* y secuencias con " -"nombre. Tanto :func:`unicodedata.lookup()` como ``'N{...}'`` ahora resuelven " -"los alias de nombre, y :func:`unicodedata.lookup()` también resuelve las " -"secuencias con nombre." +"Se agregó compatibilidad con alias de nombres Unicode y secuencias con " +"nombre. Tanto :func:`unicodedata.lookup` como ``'\\N{...}'`` ahora resuelven" +" alias de nombres, y :func:`unicodedata.lookup` también resuelve secuencias " +"con nombre." #: ../Doc/whatsnew/3.3.rst:787 msgid "(Contributed by Ezio Melotti in :issue:`12753`.)" @@ -1531,12 +1660,12 @@ msgstr "Base de datos *Unicode* actualizada a la versión 6.1.0 de UCD" #: ../Doc/whatsnew/3.3.rst:791 msgid "" -"Equality comparisons on :func:`range` objects now return a result reflecting " -"the equality of the underlying sequences generated by those range objects. (:" -"issue:`13201`)" +"Equality comparisons on :func:`range` objects now return a result reflecting" +" the equality of the underlying sequences generated by those range objects. " +"(:issue:`13201`)" msgstr "" -"Las comparaciones de igualdad en los objetos :func:`range` ahora retornan un " -"resultado que refleja la igualdad de las secuencias subyacentes generadas " +"Las comparaciones de igualdad en los objetos :func:`range` ahora retornan un" +" resultado que refleja la igualdad de las secuencias subyacentes generadas " "por esos objetos de rango. (:issue:`13201`)" #: ../Doc/whatsnew/3.3.rst:795 @@ -1545,8 +1674,8 @@ msgid "" "methods of :class:`bytes` and :class:`bytearray` objects now accept an " "integer between 0 and 255 as their first argument." msgstr "" -"Los métodos ``count()``, ``find()``, ``rfind()``, ``index()`` y ``rindex()`` " -"de los objetos :class:`bytes` y :class:`bytearray` ahora aceptan un entero " +"Los métodos ``count()``, ``find()``, ``rfind()``, ``index()`` y ``rindex()``" +" de los objetos :class:`bytes` y :class:`bytearray` ahora aceptan un entero " "entre 0 y 255 como su primer argumento." #: ../Doc/whatsnew/3.3.rst:799 @@ -1555,29 +1684,28 @@ msgstr "(Contribución por Petri Lehtinen en :issue:`12170`.)" #: ../Doc/whatsnew/3.3.rst:801 msgid "" -"The ``rjust()``, ``ljust()``, and ``center()`` methods of :class:`bytes` " -"and :class:`bytearray` now accept a :class:`bytearray` for the ``fill`` " +"The ``rjust()``, ``ljust()``, and ``center()`` methods of :class:`bytes` and" +" :class:`bytearray` now accept a :class:`bytearray` for the ``fill`` " "argument. (Contributed by Petri Lehtinen in :issue:`12380`.)" msgstr "" -"Los métodos ``rjust()``, ``ljust()``, y ``center()`` de :class:`bytes` y :" -"class:`bytearray` ahora aceptan un :class:`bytearray` para el argumento " +"Los métodos ``rjust()``, ``ljust()``, y ``center()`` de :class:`bytes` y " +":class:`bytearray` ahora aceptan un :class:`bytearray` para el argumento " "``fill``. (Contribución de Petri Lehtinen en :issue:`12380`.)" #: ../Doc/whatsnew/3.3.rst:805 msgid "" "New methods have been added to :class:`list` and :class:`bytearray`: " -"``copy()`` and ``clear()`` (:issue:`10516`). Consequently, :class:" -"`~collections.abc.MutableSequence` now also defines a :meth:`~collections." -"abc.MutableSequence.clear` method (:issue:`11388`)." +"``copy()`` and ``clear()`` (:issue:`10516`). Consequently, " +":class:`~collections.abc.MutableSequence` now also defines a " +":meth:`~collections.abc.MutableSequence.clear` method (:issue:`11388`)." msgstr "" "Se han agregado nuevos métodos a :class:`list` y :class:`bytearray`: " -"``copy()`` y ``clear()`` (:issue:`10516`). En consecuencia, :class:" -"`~collections.abc.MutableSequence` ahora también definen un método :meth:" -"`~collections.abc.MutableSequence.clear` (:issue:`11388`)." +"``copy()`` y ``clear()`` (:issue:`10516`). En consecuencia, " +":class:`~collections.abc.MutableSequence` ahora también definen un método " +":meth:`~collections.abc.MutableSequence.clear` (:issue:`11388`)." #: ../Doc/whatsnew/3.3.rst:810 -msgid "" -"Raw bytes literals can now be written ``rb\"...\"`` as well as ``br\"...\"``." +msgid "Raw bytes literals can now be written ``rb\"...\"`` as well as ``br\"...\"``." msgstr "" "Los literales de *bytes* sin formato ahora se pueden escribir ``rb\"...\"`` " "así como ``br\"...\"``." @@ -1600,8 +1728,8 @@ msgstr "(Contribución de Filip Gruszczyński en :issue:`13521`.)" #: ../Doc/whatsnew/3.3.rst:819 msgid "" -"The error messages produced when a function call does not match the function " -"signature have been significantly improved." +"The error messages produced when a function call does not match the function" +" signature have been significantly improved." msgstr "" "Los mensajes de error producidos cuando la llamada de una función no " "coincide con la firma han sido mejorados significativamente." @@ -1617,16 +1745,16 @@ msgstr "Un bloqueo de importación más detallado" #: ../Doc/whatsnew/3.3.rst:828 msgid "" "Previous versions of CPython have always relied on a global import lock. " -"This led to unexpected annoyances, such as deadlocks when importing a module " -"would trigger code execution in a different thread as a side-effect. Clumsy " -"workarounds were sometimes employed, such as the :c:func:" -"`PyImport_ImportModuleNoBlock` C API function." +"This led to unexpected annoyances, such as deadlocks when importing a module" +" would trigger code execution in a different thread as a side-effect. Clumsy" +" workarounds were sometimes employed, such as the " +":c:func:`PyImport_ImportModuleNoBlock` C API function." msgstr "" "Las versiones anteriores de CPython siempre se han basado en un bloqueo de " -"importación global. Ésto conduce a problemas inesperados tales como bloqueos " -"cuando la importación un módulo debería disparar la ejecución de código en " -"un hilo diferente como un efecto secundario. A veces se empleaban soluciones " -"torpes, como la función de API C :c:func:`PyImport_ImportModuleNoBlock` ." +"importación global. Ésto conduce a problemas inesperados tales como bloqueos" +" cuando la importación un módulo debería disparar la ejecución de código en " +"un hilo diferente como un efecto secundario. A veces se empleaban soluciones" +" torpes, como la función de API C :c:func:`PyImport_ImportModuleNoBlock` ." #: ../Doc/whatsnew/3.3.rst:834 msgid "" @@ -1635,9 +1763,9 @@ msgid "" "the exposure of incompletely initialized modules), while eliminating the " "aforementioned annoyances." msgstr "" -"En Python 3.3, la importación de un módulo toma un bloqueo por módulo. Esto " -"serializa correctamente la importación de un módulo determinado a partir de " -"múltiples subprocesos (impidiendo la exposición de módulos inicializados " +"En Python 3.3, la importación de un módulo toma un bloqueo por módulo. Esto" +" serializa correctamente la importación de un módulo determinado a partir de" +" múltiples subprocesos (impidiendo la exposición de módulos inicializados " "incompletamente), mientras elimina las molestias antes mencionadas." #: ../Doc/whatsnew/3.3.rst:839 @@ -1653,8 +1781,8 @@ msgid "" ":func:`open` gets a new *opener* parameter: the underlying file descriptor " "for the file object is then obtained by calling *opener* with (*file*, " "*flags*). It can be used to use custom flags like :const:`os.O_CLOEXEC` for " -"example. The ``'x'`` mode was added: open for exclusive creation, failing if " -"the file already exists." +"example. The ``'x'`` mode was added: open for exclusive creation, failing if" +" the file already exists." msgstr "" ":func:`open` obtiene un nuevo parámetro *opener*: el descriptor de archivo " "subyacente para el objeto de archivo se obtiene llamando a *opener* con " @@ -1667,16 +1795,17 @@ msgid "" ":func:`print`: added the *flush* keyword argument. If the *flush* keyword " "argument is true, the stream is forcibly flushed." msgstr "" -":func:`print`: agregó el argumento de palabra clave *flush*. Si el argumento " -"de palabra clave *flush* es verdadero, la secuencia se vacía por la fuerza." +":func:`print`: agregó el argumento de palabra clave *flush*. Si el argumento" +" de palabra clave *flush* es verdadero, la secuencia se vacía por la fuerza." #: ../Doc/whatsnew/3.3.rst:852 msgid "" -":func:`hash`: hash randomization is enabled by default, see :meth:`object." -"__hash__` and :envvar:`PYTHONHASHSEED`." +":func:`hash`: hash randomization is enabled by default, see " +":meth:`object.__hash__` and :envvar:`PYTHONHASHSEED`." msgstr "" ":func:`hash`: la aleatorización de hash está habilitada de forma " -"predeterminada, consulte :meth:`object.__hash__` y :envvar:`PYTHONHASHSEED`." +"predeterminada, consulte :meth:`object.__hash__` y " +":envvar:`PYTHONHASHSEED`." #: ../Doc/whatsnew/3.3.rst:854 msgid "" @@ -1693,12 +1822,12 @@ msgstr "" msgid "" "The sequence documentation has been substantially rewritten to better " "explain the binary/text sequence distinction and to provide specific " -"documentation sections for the individual builtin sequence types (:issue:" -"`4966`)." +"documentation sections for the individual builtin sequence types " +"(:issue:`4966`)." msgstr "" "La documentación de secuencia se ha reescrito sustancialmente para explicar " -"mejor la distinción de secuencia binaria/texto y para proporcionar secciones " -"de documentación específicas para los tipos de secuencia individuales " +"mejor la distinción de secuencia binaria/texto y para proporcionar secciones" +" de documentación específicas para los tipos de secuencia individuales " "integrados(:issue:`4966`)." #: ../Doc/whatsnew/3.3.rst:864 @@ -1712,10 +1841,10 @@ msgstr "faulthandler" #: ../Doc/whatsnew/3.3.rst:869 msgid "" "This new debug module :mod:`faulthandler` contains functions to dump Python " -"tracebacks explicitly, on a fault (a crash like a segmentation fault), after " -"a timeout, or on a user signal. Call :func:`faulthandler.enable` to install " -"fault handlers for the :const:`SIGSEGV`, :const:`SIGFPE`, :const:`SIGABRT`, :" -"const:`SIGBUS`, and :const:`SIGILL` signals. You can also enable them at " +"tracebacks explicitly, on a fault (a crash like a segmentation fault), after" +" a timeout, or on a user signal. Call :func:`faulthandler.enable` to install" +" fault handlers for the :const:`SIGSEGV`, :const:`SIGFPE`, :const:`SIGABRT`," +" :const:`SIGBUS`, and :const:`SIGILL` signals. You can also enable them at " "startup by setting the :envvar:`PYTHONFAULTHANDLER` environment variable or " "by using :option:`-X` ``faulthandler`` command line option." msgstr "" @@ -1723,10 +1852,10 @@ msgstr "" "volcar los rastreos de Python explícitamente, en una falla (como una falla " "de segmentación), después de un tiempo de espera o en una señal de usuario. " "Llame a :func:`faulthandler.enable` para instalar controladores de fallas " -"para las señales :const:`SIGSEGV`, :const:`SIGFPE`, :const:`SIGABRT`, :const:" -"`SIGBUS`, y :const:`SIGILL` . También puede habilitarlos al inicio " -"configurando la variable de entorno :envvar:`PYTHONFAULTHANDLER` o usando la " -"opción de línea de comandos :option:`-X` ``faulthandler`` ." +"para las señales :const:`SIGSEGV`, :const:`SIGFPE`, :const:`SIGABRT`, " +":const:`SIGBUS`, y :const:`SIGILL` . También puede habilitarlos al inicio " +"configurando la variable de entorno :envvar:`PYTHONFAULTHANDLER` o usando la" +" opción de línea de comandos :option:`-X` ``faulthandler`` ." #: ../Doc/whatsnew/3.3.rst:877 msgid "Example of a segmentation fault on Linux:" @@ -1740,11 +1869,19 @@ msgid "" "Fatal Python error: Segmentation fault\n" "\n" "Current thread 0x00007fb899f39700:\n" -" File \"/home/python/cpython/Lib/ctypes/__init__.py\", line 486 in " -"string_at\n" +" File \"/home/python/cpython/Lib/ctypes/__init__.py\", line 486 in string_at\n" " File \"\", line 1 in \n" "Segmentation fault" msgstr "" +"$ python -q -X faulthandler\n" +">>> import ctypes\n" +">>> ctypes.string_at(0)\n" +"Fatal Python error: Segmentation fault\n" +"\n" +"Current thread 0x00007fb899f39700:\n" +" File \"/home/python/cpython/Lib/ctypes/__init__.py\", line 486 in string_at\n" +" File \"\", line 1 in \n" +"Segmentation fault" #: ../Doc/whatsnew/3.3.rst:893 msgid "ipaddress" @@ -1752,9 +1889,9 @@ msgstr "ipaddress" #: ../Doc/whatsnew/3.3.rst:895 msgid "" -"The new :mod:`ipaddress` module provides tools for creating and manipulating " -"objects representing IPv4 and IPv6 addresses, networks and interfaces (i.e. " -"an IP address associated with a specific IP subnet)." +"The new :mod:`ipaddress` module provides tools for creating and manipulating" +" objects representing IPv4 and IPv6 addresses, networks and interfaces (i.e." +" an IP address associated with a specific IP subnet)." msgstr "" "El nuevo módulo :mod:`ipaddress` proporciona herramientas para crear y " "manipular objetos que representen direcciones, redes e interfaces IPv4 e " @@ -1774,8 +1911,8 @@ msgid "" "decompression using the LZMA algorithm, including support for the ``.xz`` " "and ``.lzma`` file formats." msgstr "" -"El módulo :mod:`lzma` recién agregado proporciona compresión y descompresión " -"de datos utilizando el algoritmo LZMA, incluida la compatibilidad con los " +"El módulo :mod:`lzma` recién agregado proporciona compresión y descompresión" +" de datos utilizando el algoritmo LZMA, incluida la compatibilidad con los " "formatos de archivo ``.xz`` y ``.lzma``." #: ../Doc/whatsnew/3.3.rst:908 @@ -1813,19 +1950,19 @@ msgstr "" #: ../Doc/whatsnew/3.3.rst:924 ../Doc/whatsnew/3.3.rst:2250 msgid "" -":class:`abc.abstractclassmethod` has been deprecated, use :class:" -"`classmethod` with :func:`abc.abstractmethod` instead." +":class:`abc.abstractclassmethod` has been deprecated, use " +":class:`classmethod` with :func:`abc.abstractmethod` instead." msgstr "" "La clase :class:`abc.abstractclassmethod` ha quedado obsoleta. En su lugar " "use el método :class:`classmethod` with :func:`abc.abstractmethod`." #: ../Doc/whatsnew/3.3.rst:926 ../Doc/whatsnew/3.3.rst:2252 msgid "" -":class:`abc.abstractstaticmethod` has been deprecated, use :class:" -"`staticmethod` with :func:`abc.abstractmethod` instead." +":class:`abc.abstractstaticmethod` has been deprecated, use " +":class:`staticmethod` with :func:`abc.abstractmethod` instead." msgstr "" -":class:`abc.abstractstaticmethod` ha quedado obsoleta, use :class:" -"`staticmethod` with :func:`abc.abstractmethod`." +":class:`abc.abstractstaticmethod` ha quedado obsoleta, use " +":class:`staticmethod` with :func:`abc.abstractmethod`." #: ../Doc/whatsnew/3.3.rst:929 msgid "(Contributed by Darren Dale in :issue:`11610`.)" @@ -1853,8 +1990,10 @@ msgstr "" "códigos de tipo ``q`` y ``Q``." #: ../Doc/whatsnew/3.3.rst:941 -msgid "(Contributed by Oren Tirosh and Hirokazu Yamamoto in :issue:`1172711`.)" -msgstr "(Contribución de Oren Tirosh y Hirokazu Yamamoto en :issue:`1172711`.)" +msgid "" +"(Contributed by Oren Tirosh and Hirokazu Yamamoto in :issue:`1172711`.)" +msgstr "" +"(Contribución de Oren Tirosh y Hirokazu Yamamoto en :issue:`1172711`.)" #: ../Doc/whatsnew/3.3.rst:945 msgid "base64" @@ -1862,15 +2001,14 @@ msgstr "base64" #: ../Doc/whatsnew/3.3.rst:947 msgid "" -"ASCII-only Unicode strings are now accepted by the decoding functions of " -"the :mod:`base64` modern interface. For example, ``base64." -"b64decode('YWJj')`` returns ``b'abc'``. (Contributed by Catalin Iacob in :" -"issue:`13641`.)" +"ASCII-only Unicode strings are now accepted by the decoding functions of the" +" :mod:`base64` modern interface. For example, ``base64.b64decode('YWJj')`` " +"returns ``b'abc'``. (Contributed by Catalin Iacob in :issue:`13641`.)" msgstr "" -"Las cadenas *Unicode* de solo ASCII ahora son aceptadas por las funciones de " -"decodificación de la interfaz moderna :mod:`base64`. Por ejemplo, ``base64." -"b64decode ('YWJj')`` retorna ``b'abc'``. (Contribución por Catalin Iacob en: " -"número: `13641`.)" +"Las cadenas *Unicode* de solo ASCII ahora son aceptadas por las funciones de" +" decodificación de la interfaz moderna :mod:`base64`. Por ejemplo, " +"``base64.b64decode ('YWJj')`` retorna ``b'abc'``. (Contribución por Catalin " +"Iacob en: número: `13641`.)" #: ../Doc/whatsnew/3.3.rst:953 msgid "binascii" @@ -1921,9 +2059,9 @@ msgstr "(Contribución de Nadeem Vawda en :issue:`5863`.)" #: ../Doc/whatsnew/3.3.rst:974 msgid "" ":class:`bz2.BZ2File` and :func:`bz2.decompress` can now decompress multi-" -"stream inputs (such as those produced by the :program:`pbzip2` tool). :class:" -"`bz2.BZ2File` can now also be used to create this type of file, using the " -"``'a'`` (append) mode." +"stream inputs (such as those produced by the :program:`pbzip2` tool). " +":class:`bz2.BZ2File` can now also be used to create this type of file, using" +" the ``'a'`` (append) mode." msgstr "" "La clase :class:`bz2.BZ2File` y la función :func:`bz2.decompress` ahora " "descomprimen entradas de flujo múltiple (como las producidas por la " @@ -1940,8 +2078,9 @@ msgid "" ":class:`bz2.BZ2File` now implements all of the :class:`io.BufferedIOBase` " "API, except for the :meth:`detach` and :meth:`truncate` methods." msgstr "" -"La clase :class:`bz2.BZ2File` ahora implementa toda la API :class:`io." -"BufferedIOBase`, excepto los métodos :meth:`detach` y :meth:`truncate`." +"La clase :class:`bz2.BZ2File` ahora implementa toda la API " +":class:`io.BufferedIOBase`, excepto los métodos :meth:`detach` y " +":meth:`truncate`." #: ../Doc/whatsnew/3.3.rst:986 msgid "codecs" @@ -1950,40 +2089,40 @@ msgstr "códecs" #: ../Doc/whatsnew/3.3.rst:988 msgid "" "The :mod:`~encodings.mbcs` codec has been rewritten to handle correctly " -"``replace`` and ``ignore`` error handlers on all Windows versions. The :mod:" -"`~encodings.mbcs` codec now supports all error handlers, instead of only " -"``replace`` to encode and ``ignore`` to decode." +"``replace`` and ``ignore`` error handlers on all Windows versions. The " +":mod:`~encodings.mbcs` codec now supports all error handlers, instead of " +"only ``replace`` to encode and ``ignore`` to decode." msgstr "" -"El códec :mod:`~encodings.mbcs` ha sido reescrito para manejar correctamente " -"los controladores de error ``reemplazar`` e ``ignorar`` en todas las " +"El códec :mod:`~encodings.mbcs` ha sido reescrito para manejar correctamente" +" los controladores de error ``reemplazar`` e ``ignorar`` en todas las " "versiones Windows. El códec :mod:`~encodings.mbcs` ahora admite todos los " "controladores de error, en lugar de solo ``replace`` para codificar e " "``ignore`` para decodificar." #: ../Doc/whatsnew/3.3.rst:993 msgid "" -"A new Windows-only codec has been added: ``cp65001`` (:issue:`13216`). It is " -"the Windows code page 65001 (Windows UTF-8, ``CP_UTF8``). For example, it " +"A new Windows-only codec has been added: ``cp65001`` (:issue:`13216`). It is" +" the Windows code page 65001 (Windows UTF-8, ``CP_UTF8``). For example, it " "is used by ``sys.stdout`` if the console output code page is set to cp65001 " "(e.g., using ``chcp 65001`` command)." msgstr "" -"Ha sido agregado un nuevo códec únicamente para windows: ``cp65001`` (:issue:" -"`13216`). Es la página de códigos de Windows con el código 65001 (Windows " -"UTF-8, ``CP_UTF8``). Por ejemplo, es usado por ``sys.stdout`` si la página " -"de códigos de salida de la consola se establece en cp65001 (por ejemplo, " -"usando el comando ``chcp 65001``)." +"Ha sido agregado un nuevo códec únicamente para windows: ``cp65001`` " +"(:issue:`13216`). Es la página de códigos de Windows con el código 65001 " +"(Windows UTF-8, ``CP_UTF8``). Por ejemplo, es usado por ``sys.stdout`` si " +"la página de códigos de salida de la consola se establece en cp65001 (por " +"ejemplo, usando el comando ``chcp 65001``)." #: ../Doc/whatsnew/3.3.rst:998 msgid "" -"Multibyte CJK decoders now resynchronize faster. They only ignore the first " -"byte of an invalid byte sequence. For example, ``b'\\xff\\n'." -"decode('gb2312', 'replace')`` now returns a ``\\n`` after the replacement " -"character." +"Multibyte CJK decoders now resynchronize faster. They only ignore the first" +" byte of an invalid byte sequence. For example, " +"``b'\\xff\\n'.decode('gb2312', 'replace')`` now returns a ``\\n`` after the " +"replacement character." msgstr "" "Los decodificadores CJK multibyte ahora se re-sincronizan más rápido. Solo " "ignoran el primer byte de una secuencia de *bytes* no válida. Por ejemplo, " -"``b'\\xff\\n'.decode('gb2312', 'replace')`` ahora retorna un ``\\n`` después " -"del carácter de reemplazo." +"``b'\\xff\\n'.decode('gb2312', 'replace')`` ahora retorna un ``\\n`` después" +" del carácter de reemplazo." #: ../Doc/whatsnew/3.3.rst:1002 msgid "(:issue:`12016`)" @@ -2001,10 +2140,13 @@ msgstr "" msgid "" ">>> import codecs\n" ">>> encoder = codecs.getincrementalencoder('hz')('strict')\n" -">>> b''.join(encoder.encode(x) for x in '\\u52ff\\u65bd\\u65bc\\u4eba\\u3002 " -"Bye.')\n" +">>> b''.join(encoder.encode(x) for x in '\\u52ff\\u65bd\\u65bc\\u4eba\\u3002 Bye.')\n" "b'~{NpJ)l6HK!#~} Bye.'" msgstr "" +">>> import codecs\n" +">>> encoder = codecs.getincrementalencoder('hz')('strict')\n" +">>> b''.join(encoder.encode(x) for x in '\\u52ff\\u65bd\\u65bc\\u4eba\\u3002 Bye.')\n" +"b'~{NpJ)l6HK!#~} Bye.'" #: ../Doc/whatsnew/3.3.rst:1012 msgid "" @@ -2029,8 +2171,8 @@ msgstr "colecciones" #: ../Doc/whatsnew/3.3.rst:1023 msgid "" "Addition of a new :class:`~collections.ChainMap` class to allow treating a " -"number of mappings as a single unit. (Written by Raymond Hettinger for :" -"issue:`11089`, made public in :issue:`11297`.)" +"number of mappings as a single unit. (Written by Raymond Hettinger for " +":issue:`11089`, made public in :issue:`11297`.)" msgstr "" "Adición de una nueva :class:`~collections.ChainMap` para permitir el " "tratamiento de un número de asignaciones como una sola unidad. (Escrito por " @@ -2040,20 +2182,20 @@ msgstr "" msgid "" "The abstract base classes have been moved in a new :mod:`collections.abc` " "module, to better differentiate between the abstract and the concrete " -"collections classes. Aliases for ABCs are still present in the :mod:" -"`collections` module to preserve existing imports. (:issue:`11085`)" +"collections classes. Aliases for ABCs are still present in the " +":mod:`collections` module to preserve existing imports. (:issue:`11085`)" msgstr "" -"Las clases base abstractas se han movido en un nuevo módulo :mod:" -"`collections.abc`, para diferenciar mejor entre las clases de colecciones " -"abstractas y concretas. Los alias para ABC siguen presentes en el módulo :" -"mod:`collections` para preservar las importaciones existentes. (:issue:" -"`11085`)" +"Las clases base abstractas se han movido en un nuevo módulo " +":mod:`collections.abc`, para diferenciar mejor entre las clases de " +"colecciones abstractas y concretas. Los alias para ABC siguen presentes en " +"el módulo :mod:`collections` para preservar las importaciones existentes. " +"(:issue:`11085`)" #: ../Doc/whatsnew/3.3.rst:1034 msgid "" -"The :class:`~collections.Counter` class now supports the unary ``+`` and ``-" -"`` operators, as well as the in-place operators ``+=``, ``-=``, ``|=``, and " -"``&=``. (Contributed by Raymond Hettinger in :issue:`13121`.)" +"The :class:`~collections.Counter` class now supports the unary ``+`` and " +"``-`` operators, as well as the in-place operators ``+=``, ``-=``, ``|=``, " +"and ``&=``. (Contributed by Raymond Hettinger in :issue:`13121`.)" msgstr "" "La clase :class:`~collections.Counter` ahora admite los operadores ''+'' y " "''-'' unarios, así como los operadores in situ ``+=``, ``-=``, ``|=``, and " @@ -2077,11 +2219,11 @@ msgstr "" ":class:`~contextlib. ExitStack` ahora proporciona una base sólida para la " "manipulación programática de los administradores de contexto y una " "funcionalidad de limpieza similar. A diferencia de la API anterior " -"``contextlib.nested`` (que estaba en desuso y se eliminó), la nueva API está " -"diseñada para funcionar correctamente independientemente de si los " -"administradores de contexto adquieren sus recursos en su método ``__init__`` " -"(por ejemplo, objetos de archivo) o en su método ``__enter__`` (por ejemplo, " -"objetos de sincronización del módulo :mod:`threading`)." +"``contextlib.nested`` (que estaba en desuso y se eliminó), la nueva API está" +" diseñada para funcionar correctamente independientemente de si los " +"administradores de contexto adquieren sus recursos en su método ``__init__``" +" (por ejemplo, objetos de archivo) o en su método ``__enter__`` (por " +"ejemplo, objetos de sincronización del módulo :mod:`threading`)." #: ../Doc/whatsnew/3.3.rst:1051 msgid "(:issue:`13585`)" @@ -2092,13 +2234,12 @@ msgid "crypt" msgstr "crypt" #: ../Doc/whatsnew/3.3.rst:1057 -#, fuzzy msgid "" -"Addition of salt and modular crypt format (hashing method) and the :func:`!" -"mksalt` function to the :mod:`!crypt` module." +"Addition of salt and modular crypt format (hashing method) and the " +":func:`!mksalt` function to the :mod:`!crypt` module." msgstr "" -"Adición de sal y formato de cripta modular (método de hashing) y la función :" -"func:`~crypt.mksalt` al módulo :mod:`crypt`." +"Adición del formato de sal y criptografía modular (método hash) y la función" +" :func:`!mksalt` al módulo :mod:`!crypt`." #: ../Doc/whatsnew/3.3.rst:1060 msgid "(:issue:`10924`)" @@ -2111,8 +2252,8 @@ msgstr "curses" #: ../Doc/whatsnew/3.3.rst:1065 msgid "" "If the :mod:`curses` module is linked to the ncursesw library, use Unicode " -"functions when Unicode strings or characters are passed (e.g. :c:func:" -"`waddwstr`), and bytes functions otherwise (e.g. :c:func:`waddstr`)." +"functions when Unicode strings or characters are passed (e.g. " +":c:func:`waddwstr`), and bytes functions otherwise (e.g. :c:func:`waddstr`)." msgstr "" "Si el módulo :mod:`curses` es vinculado a la nueva librería ncursesw, se " "usan las funciones *Unicode* cuando se pasen cadenas o caracteres Unicode " @@ -2120,7 +2261,8 @@ msgstr "" "de *bytes* (e.g. :c:func:`waddstr`)." #: ../Doc/whatsnew/3.3.rst:1068 -msgid "Use the locale encoding instead of ``utf-8`` to encode Unicode strings." +msgid "" +"Use the locale encoding instead of ``utf-8`` to encode Unicode strings." msgstr "" "Usa la codificación local en vez de ``utf-8`` para codificar cadenas " "*Unicode*." @@ -2129,26 +2271,26 @@ msgstr "" msgid "" ":class:`curses.window` has a new :attr:`curses.window.encoding` attribute." msgstr "" -"La clase :class:`curses.window` tiene un nuevo atributo :attr:`curses.window." -"encoding`." +"La clase :class:`curses.window` tiene un nuevo atributo " +":attr:`curses.window.encoding`." #: ../Doc/whatsnew/3.3.rst:1070 msgid "" "The :class:`curses.window` class has a new :meth:`~curses.window.get_wch` " "method to get a wide character" msgstr "" -"La clase :class:`curses.window` tiene un nuevo método :meth:`~curses.window." -"get_wch` para obtener un caracter ancho" +"La clase :class:`curses.window` tiene un nuevo método " +":meth:`~curses.window.get_wch` para obtener un caracter ancho" #: ../Doc/whatsnew/3.3.rst:1072 msgid "" "The :mod:`curses` module has a new :meth:`~curses.unget_wch` function to " -"push a wide character so the next :meth:`~curses.window.get_wch` will return " -"it" +"push a wide character so the next :meth:`~curses.window.get_wch` will return" +" it" msgstr "" "El módulo :mod:`curses` tiene una nueva función :meth:`~curses.unget_wch` " -"para enviar un caracter ancho de manera que el próximo :meth:`~curses.window." -"get_wch` lo retorne" +"para enviar un caracter ancho de manera que el próximo " +":meth:`~curses.window.get_wch` lo retorne" #: ../Doc/whatsnew/3.3.rst:1076 msgid "(Contributed by Iñigo Serna in :issue:`6755`.)" @@ -2161,20 +2303,20 @@ msgstr "datetime" #: ../Doc/whatsnew/3.3.rst:1081 msgid "" "Equality comparisons between naive and aware :class:`~datetime.datetime` " -"instances now return :const:`False` instead of raising :exc:`TypeError` (:" -"issue:`15006`)." +"instances now return :const:`False` instead of raising :exc:`TypeError` " +"(:issue:`15006`)." msgstr "" -"Las comparaciones de igualdad entre instancias conscientes e ingenuas :class:" -"`~datetime.datetime` ahora retornan :const:`False` en lugar de generar :exc:" -"`TypeError` (:issue:`15006`)." +"Las comparaciones de igualdad entre instancias conscientes e ingenuas " +":class:`~datetime.datetime` ahora retornan :const:`False` en lugar de " +"generar :exc:`TypeError` (:issue:`15006`)." #: ../Doc/whatsnew/3.3.rst:1084 msgid "" "New :meth:`datetime.datetime.timestamp` method: Return POSIX timestamp " "corresponding to the :class:`~datetime.datetime` instance." msgstr "" -"Nuevo método :meth:`datetime.datetime.timestamp`: Retorna la marca de tiempo " -"POSIX correspondiente a la instancia :class:`~datetime.datetime`." +"Nuevo método :meth:`datetime.datetime.timestamp`: Retorna la marca de tiempo" +" POSIX correspondiente a la instancia :class:`~datetime.datetime`." #: ../Doc/whatsnew/3.3.rst:1086 msgid "" @@ -2206,20 +2348,18 @@ msgid "C-module and libmpdec written by Stefan Krah." msgstr "Módulo C y libmpdec escritos por Stefan Krah." #: ../Doc/whatsnew/3.3.rst:1101 -#, fuzzy msgid "" "The new C version of the decimal module integrates the high speed libmpdec " "library for arbitrary precision correctly rounded decimal floating-point " "arithmetic. libmpdec conforms to IBM's General Decimal Arithmetic " "Specification." msgstr "" -"La nueva versión C del módulo decimal integra la biblioteca libmpdec de alta " -"velocidad para aritmética de coma flotante decimal redondeada correctamente " -"con precisión arbitraria. libmpdec se ajusta a la especificación de " -"aritmética decimal general de IBM." +"La nueva versión C del módulo decimal integra la biblioteca libmpdec de alta" +" velocidad para aritmética de punto flotante decimal redondeada " +"correctamente con precisión arbitraria. libmpdec cumple con la " +"Especificación Aritmética Decimal General de IBM." #: ../Doc/whatsnew/3.3.rst:1105 -#, fuzzy msgid "" "Performance gains range from 10x for database applications to 100x for " "numerically intensive applications. These numbers are expected gains for " @@ -2227,22 +2367,22 @@ msgid "" "precision is user configurable, the exact figures may vary. For example, in " "integer bignum arithmetic the differences can be significantly higher." msgstr "" -"El rango de ganancias del rendimiento va de 10x para las aplicaciones de " -"base de datos, a 100x para aplicaciones numéricamente intensivas. Estos " -"números son ganancias esperadas para las precisiones estándar usadas en la " -"aritmética de punto flotante decimal. Dado que la precisión es configurable " -"por el usuario, las cifras exactas pueden variar. Por ejemplo, en la " -"aritmética de enteros bignum, las diferencias pueden ser significativamente " +"Las mejoras de rendimiento varían de 10x para aplicaciones de bases de datos" +" a 100x para aplicaciones con uso intensivo de números. Estas cifras son " +"ganancias esperadas para las precisiones estándar utilizadas en aritmética " +"de punto flotante decimal. Dado que la precisión es configurable por el " +"usuario, las cifras exactas pueden variar. Por ejemplo, en la aritmética de " +"números enteros grandes, las diferencias pueden ser significativamente " "mayores." #: ../Doc/whatsnew/3.3.rst:1111 msgid "" -"The following table is meant as an illustration. Benchmarks are available at " -"https://www.bytereef.org/mpdecimal/quickstart.html." +"The following table is meant as an illustration. Benchmarks are available at" +" https://www.bytereef.org/mpdecimal/quickstart.html." msgstr "" "La siguiente tabla está pensada como una ilustración. Los puntos de " -"referencia están disponibles en https://www.bytereef.org/mpdecimal/" -"quickstart.html." +"referencia están disponibles en " +"https://www.bytereef.org/mpdecimal/quickstart.html." #: ../Doc/whatsnew/3.3.rst:1115 msgid "decimal.py" @@ -2315,8 +2455,8 @@ msgstr "" #: ../Doc/whatsnew/3.3.rst:1130 msgid "" "If Python is compiled without threads, the C version automatically disables " -"the expensive thread local context machinery. In this case, the variable :" -"const:`~decimal.HAVE_THREADS` is set to ``False``." +"the expensive thread local context machinery. In this case, the variable " +":const:`~decimal.HAVE_THREADS` is set to ``False``." msgstr "" "Si python se compila sin subprocesos, la versión C deshabilita " "automáticamente la costosa maquinaria de contexto local de subprocesos. En " @@ -2369,82 +2509,84 @@ msgstr "``-999999999999999999``" #: ../Doc/whatsnew/3.3.rst:1150 msgid "" -"In the context templates (:class:`~decimal.DefaultContext`, :class:`~decimal." -"BasicContext` and :class:`~decimal.ExtendedContext`) the magnitude of :attr:" -"`~decimal.Context.Emax` and :attr:`~decimal.Context.Emin` has changed to " -"``999999``." +"In the context templates (:class:`~decimal.DefaultContext`, " +":class:`~decimal.BasicContext` and :class:`~decimal.ExtendedContext`) the " +"magnitude of :attr:`~decimal.Context.Emax` and :attr:`~decimal.Context.Emin`" +" has changed to ``999999``." msgstr "" -"En las plantillas de contexto (:class:`~decimal.DefaultContext`, :class:" -"`~decimal.BasicContext` and :class:`~decimal.ExtendedContext`) la magnitud " -"de :attr:`~decimal.Context.Emax` y :attr:`~decimal.Context.Emin` se ha " -"cambiado a ``999999``." +"En las plantillas de contexto (:class:`~decimal.DefaultContext`, " +":class:`~decimal.BasicContext` and :class:`~decimal.ExtendedContext`) la " +"magnitud de :attr:`~decimal.Context.Emax` y :attr:`~decimal.Context.Emin` se" +" ha cambiado a ``999999``." #: ../Doc/whatsnew/3.3.rst:1155 msgid "" -"The :class:`~decimal.Decimal` constructor in decimal.py does not observe the " -"context limits and converts values with arbitrary exponents or precision " +"The :class:`~decimal.Decimal` constructor in decimal.py does not observe the" +" context limits and converts values with arbitrary exponents or precision " "exactly. Since the C version has internal limits, the following scheme is " -"used: If possible, values are converted exactly, otherwise :exc:`~decimal." -"InvalidOperation` is raised and the result is NaN. In the latter case it is " -"always possible to use :meth:`~decimal.Context.create_decimal` in order to " -"obtain a rounded or inexact value." +"used: If possible, values are converted exactly, otherwise " +":exc:`~decimal.InvalidOperation` is raised and the result is NaN. In the " +"latter case it is always possible to use " +":meth:`~decimal.Context.create_decimal` in order to obtain a rounded or " +"inexact value." msgstr "" "El constructor :class:`~decimal.Decimal` en decimal.py no observa los " "límites de contexto y convierte valores con exponentes arbitrarios o " "precisión exacta. Dado que la versión C tiene límites internos, se usa el " "siguiente esquema: Si es posible, los valores son convertidos a valores " "exactos, de lo contrario se genera :exc:`~decimal.InvalidOperation` y el " -"resultado es NaN. En éste último caso siempre es posible usar :meth:" -"`~decimal.Context.create_decimal` para obtener un valor redondeado o " +"resultado es NaN. En éste último caso siempre es posible usar " +":meth:`~decimal.Context.create_decimal` para obtener un valor redondeado o " "inexacto." #: ../Doc/whatsnew/3.3.rst:1164 msgid "" "The power function in decimal.py is always correctly rounded. In the C " -"version, it is defined in terms of the correctly rounded :meth:`~decimal." -"Decimal.exp` and :meth:`~decimal.Decimal.ln` functions, but the final result " -"is only \"almost always correctly rounded\"." +"version, it is defined in terms of the correctly rounded " +":meth:`~decimal.Decimal.exp` and :meth:`~decimal.Decimal.ln` functions, but " +"the final result is only \"almost always correctly rounded\"." msgstr "" "La función de potencia en decimal.py siempre se redondea correctamente. En " -"la versión C, se define en términos de las funciones :meth:`~decimal.Decimal." -"exp` y :meth:`~decimal.Decimal.ln` correctamente redondeadas, pero el " -"resultado final es solo \"casi siempre correctamente redondeado\"." +"la versión C, se define en términos de las funciones " +":meth:`~decimal.Decimal.exp` y :meth:`~decimal.Decimal.ln` correctamente " +"redondeadas, pero el resultado final es solo \"casi siempre correctamente " +"redondeado\"." #: ../Doc/whatsnew/3.3.rst:1170 msgid "" -"In the C version, the context dictionary containing the signals is a :class:" -"`~collections.abc.MutableMapping`. For speed reasons, :attr:`~decimal." -"Context.flags` and :attr:`~decimal.Context.traps` always refer to the same :" -"class:`~collections.abc.MutableMapping` that the context was initialized " -"with. If a new signal dictionary is assigned, :attr:`~decimal.Context.flags` " -"and :attr:`~decimal.Context.traps` are updated with the new values, but they " -"do not reference the RHS dictionary." -msgstr "" -"En la versión C, el diccionario de contexto que contiene las señales, es " -"una :class:`~collections.abc.MutableMapping`. Por razones de velocidad, :" -"attr:`~decimal.Context.flags` y :attr:`~decimal.Context.traps` siempre se " +"In the C version, the context dictionary containing the signals is a " +":class:`~collections.abc.MutableMapping`. For speed reasons, " +":attr:`~decimal.Context.flags` and :attr:`~decimal.Context.traps` always " +"refer to the same :class:`~collections.abc.MutableMapping` that the context " +"was initialized with. If a new signal dictionary is assigned, " +":attr:`~decimal.Context.flags` and :attr:`~decimal.Context.traps` are " +"updated with the new values, but they do not reference the RHS dictionary." +msgstr "" +"En la versión C, el diccionario de contexto que contiene las señales, es una" +" :class:`~collections.abc.MutableMapping`. Por razones de velocidad, " +":attr:`~decimal.Context.flags` y :attr:`~decimal.Context.traps` siempre se " "refiere a la misma :class:`~collections.abc.MutableMapping` que el contexto " -"con el que se inicializó. Si se asigna un nuevo diccionario de señales, :" -"attr:`~decimal.Context.flags` y :attr:`~decimal.Context.traps` son " -"actualizados con los nuevos valores, pero no hacen referencia al diccionario " -"RHS." +"con el que se inicializó. Si se asigna un nuevo diccionario de señales, " +":attr:`~decimal.Context.flags` y :attr:`~decimal.Context.traps` son " +"actualizados con los nuevos valores, pero no hacen referencia al diccionario" +" RHS." #: ../Doc/whatsnew/3.3.rst:1180 msgid "" -"Pickling a :class:`~decimal.Context` produces a different output in order to " -"have a common interchange format for the Python and C versions." +"Pickling a :class:`~decimal.Context` produces a different output in order to" +" have a common interchange format for the Python and C versions." msgstr "" "Decapar a :class:`~decimal.Context` produce una salida diferente para tener " "un formato de intercambio común para las versiones de Python y C." #: ../Doc/whatsnew/3.3.rst:1184 msgid "" -"The order of arguments in the :class:`~decimal.Context` constructor has been " -"changed to match the order displayed by :func:`repr`." +"The order of arguments in the :class:`~decimal.Context` constructor has been" +" changed to match the order displayed by :func:`repr`." msgstr "" -"El orden de los argumentos en el constructor de la clase :class:`~decimal." -"Context`, ha sido cambiado para que coincida con el orden mostrado por la " -"función :func:`repr`." +"El orden de los argumentos en el constructor de la clase " +":class:`~decimal.Context`, ha sido cambiado para que coincida con el orden " +"mostrado por la función :func:`repr`." #: ../Doc/whatsnew/3.3.rst:1188 msgid "" @@ -2464,29 +2606,29 @@ msgstr "Marco de políticas" #: ../Doc/whatsnew/3.3.rst:1200 msgid "" -"The email package now has a :mod:`~email.policy` framework. A :class:" -"`~email.policy.Policy` is an object with several methods and properties that " -"control how the email package behaves. The primary policy for Python 3.3 is " -"the :class:`~email.policy.Compat32` policy, which provides backward " -"compatibility with the email package in Python 3.2. A ``policy`` can be " -"specified when an email message is parsed by a :mod:`~email.parser`, or when " -"a :class:`~email.message.Message` object is created, or when an email is " -"serialized using a :mod:`~email.generator`. Unless overridden, a policy " -"passed to a ``parser`` is inherited by all the ``Message`` object and sub-" -"objects created by the ``parser``. By default a ``generator`` will use the " -"policy of the ``Message`` object it is serializing. The default policy is :" -"data:`~email.policy.compat32`." -msgstr "" -"El paquete de correo electrónico ahora tiene un marco :mod:`~email.policy`. " -"Un :class:`~email.policy.Policy` es un objeto con varios métodos y " +"The email package now has a :mod:`~email.policy` framework. A " +":class:`~email.policy.Policy` is an object with several methods and " +"properties that control how the email package behaves. The primary policy " +"for Python 3.3 is the :class:`~email.policy.Compat32` policy, which provides" +" backward compatibility with the email package in Python 3.2. A ``policy`` " +"can be specified when an email message is parsed by a :mod:`~email.parser`, " +"or when a :class:`~email.message.Message` object is created, or when an " +"email is serialized using a :mod:`~email.generator`. Unless overridden, a " +"policy passed to a ``parser`` is inherited by all the ``Message`` object and" +" sub-objects created by the ``parser``. By default a ``generator`` will use" +" the policy of the ``Message`` object it is serializing. The default policy" +" is :data:`~email.policy.compat32`." +msgstr "" +"El paquete de correo electrónico ahora tiene un marco :mod:`~email.policy`." +" Un :class:`~email.policy.Policy` es un objeto con varios métodos y " "propiedades que controlan el comportamiento del paquete de correo " -"electrónico. La política principal de Python 3.3 es la política :class:" -"`~email.policy.Compat32`, que proporciona compatibilidad con versiones " -"anteriores del paquete de correo electrónico en Python 3.2. Se puede " -"especificar una ``policy`` cuando un mensaje de correo electrónico es " -"analizado por un :mod:`~email.parser`, o cuando se crea un objeto :class:" -"`~email.message.Message`, o cuando se serializa un correo electrónico " -"mediante un :mod:`~email.generator`. A menos que se invalide, una política " +"electrónico. La política principal de Python 3.3 es la política " +":class:`~email.policy.Compat32`, que proporciona compatibilidad con " +"versiones anteriores del paquete de correo electrónico en Python 3.2. Se " +"puede especificar una ``policy`` cuando un mensaje de correo electrónico es " +"analizado por un :mod:`~email.parser`, o cuando se crea un objeto " +":class:`~email.message.Message`, o cuando se serializa un correo electrónico" +" mediante un :mod:`~email.generator`. A menos que se invalide, una política " "pasada a un ``parser`` es heredada por todos los objetos ``Message`` y los " "subobjetos creados por el ``parser``. De forma predeterminada, un " "``generator`` utilizará la política del objeto ``Message`` que está " @@ -2504,8 +2646,8 @@ msgstr "max_line_length" #: ../Doc/whatsnew/3.3.rst:1218 msgid "" -"The maximum length, excluding the linesep character(s), individual lines may " -"have when a ``Message`` is serialized. Defaults to 78." +"The maximum length, excluding the linesep character(s), individual lines may" +" have when a ``Message`` is serialized. Defaults to 78." msgstr "" "La longitud máxima, excluyendo el(los) caracter(es) *linesep*, que las " "líneas individuales pueden tener cuando un ``Message`` se serializa es por " @@ -2530,8 +2672,8 @@ msgstr "cte_type" #: ../Doc/whatsnew/3.3.rst:1225 msgid "" "``7bit`` or ``8bit``. ``8bit`` applies only to a ``Bytes`` ``generator``, " -"and means that non-ASCII may be used where allowed by the protocol (or where " -"it exists in the original input)." +"and means that non-ASCII may be used where allowed by the protocol (or where" +" it exists in the original input)." msgstr "" "``7bit`` or ``8bit``. ``8bit`` sólo se aplica a un ``Bytes`` ``generator``, " "y significa que pueden utilizarse \"no ASCII\" cuando lo permita el " @@ -2551,11 +2693,11 @@ msgstr "" #: ../Doc/whatsnew/3.3.rst:1235 msgid "" -"A new policy instance, with new settings, is created using the :meth:`~email." -"policy.Policy.clone` method of policy objects. ``clone`` takes any of the " -"above controls as keyword arguments. Any control not specified in the call " -"retains its default value. Thus you can create a policy that uses " -"``\\r\\n`` linesep characters like this::" +"A new policy instance, with new settings, is created using the " +":meth:`~email.policy.Policy.clone` method of policy objects. ``clone`` " +"takes any of the above controls as keyword arguments. Any control not " +"specified in the call retains its default value. Thus you can create a " +"policy that uses ``\\r\\n`` linesep characters like this::" msgstr "" "Una nueva instancia de directiva, con nueva configuración, se crea mediante " "el método :meth:`~email.policy.Policy.clone` de objetos de política. " @@ -2566,22 +2708,22 @@ msgstr "" #: ../Doc/whatsnew/3.3.rst:1241 msgid "mypolicy = compat32.clone(linesep='\\r\\n')" -msgstr "" +msgstr "mypolicy = compat32.clone(linesep='\\r\\n')" #: ../Doc/whatsnew/3.3.rst:1243 msgid "" -"Policies can be used to make the generation of messages in the format needed " -"by your application simpler. Instead of having to remember to specify " +"Policies can be used to make the generation of messages in the format needed" +" by your application simpler. Instead of having to remember to specify " "``linesep='\\r\\n'`` in all the places you call a ``generator``, you can " "specify it once, when you set the policy used by the ``parser`` or the " "``Message``, whichever your program uses to create ``Message`` objects. On " "the other hand, if you need to generate messages in multiple forms, you can " "still specify the parameters in the appropriate ``generator`` call. Or you " -"can have custom policy instances for your different cases, and pass those in " -"when you create the ``generator``." +"can have custom policy instances for your different cases, and pass those in" +" when you create the ``generator``." msgstr "" -"Las directivas pueden ser usadas para facilitar la generación de mensajes en " -"el formato requerido por la aplicación. En vez de tener que recordar " +"Las directivas pueden ser usadas para facilitar la generación de mensajes en" +" el formato requerido por la aplicación. En vez de tener que recordar " "especificar ``linesep='\\r\\n'`` en todos los lugares en donde llamas a " "``generator``, puedes especificarlo una sola vez cuando estableces la " "política usada por el ``analizador`` o el ``Mensaje``, el que tu programa " @@ -2601,18 +2743,18 @@ msgid "" "for introducing it is to allow the creation of new policies that implement " "new features for the email package in a way that maintains backward " "compatibility for those who do not use the new policies. Because the new " -"policies introduce a new API, we are releasing them in Python 3.3 as a :term:" -"`provisional policy `. Backwards incompatible changes " -"(up to and including removal of the code) may occur if deemed necessary by " -"the core developers." +"policies introduce a new API, we are releasing them in Python 3.3 as a " +":term:`provisional policy `. Backwards incompatible " +"changes (up to and including removal of the code) may occur if deemed " +"necessary by the core developers." msgstr "" "Aunque el marco de políticas vale la pena por sí solo, la principal " "motivación para presentarlo es permitir la creación de nuevas políticas que " -"implementen nuevas características para el paquete de correo electrónico, de " -"modo que mantenga la compatibilidad con versiones anteriores para aquellos " +"implementen nuevas características para el paquete de correo electrónico, de" +" modo que mantenga la compatibilidad con versiones anteriores para aquellos " "quienes no usen las nuevas directivas. Dado que las nuevas políticas " -"introducen una nueva API, estamos lanzándolas en Python 3.3 como una :term:" -"`provisional policy `. Pueden producirse cambios " +"introducen una nueva API, estamos lanzándolas en Python 3.3 como una " +":term:`provisional policy `. Pueden producirse cambios " "incompatibles con versiones anteriores (hasta la eliminación del código) si " "los desarrolladores principales lo consideran necesario." @@ -2637,8 +2779,8 @@ msgid "" "get refolded, and ``all`` means that all lines get refolded." msgstr "" "Controla si los encabezados analizados por un :mod:`~email.parser` son " -"replegados por :mod:`~email.generator`. Éste puede ser ``none``, ``long``, o " -"``all``. El valor por defecto es ``long``, lo que significa que los " +"replegados por :mod:`~email.generator`. Éste puede ser ``none``, ``long``, o" +" ``all``. El valor por defecto es ``long``, lo que significa que los " "encabezados principales con una linea más larga que ``max_line_length`` se " "repliegan. ``none`` significa que no se repliega ninguna linea, y ``all`` " "significa que todas las lineas son replegadas." @@ -2658,11 +2800,11 @@ msgstr "" #: ../Doc/whatsnew/3.3.rst:1284 msgid "" "The ``header_factory`` is the key to the new features provided by the new " -"policies. When one of the new policies is used, any header retrieved from a " -"``Message`` object is an object produced by the ``header_factory``, and any " -"time you set a header on a ``Message`` it becomes an object produced by " -"``header_factory``. All such header objects have a ``name`` attribute equal " -"to the header name. Address and Date headers have additional attributes " +"policies. When one of the new policies is used, any header retrieved from a" +" ``Message`` object is an object produced by the ``header_factory``, and any" +" time you set a header on a ``Message`` it becomes an object produced by " +"``header_factory``. All such header objects have a ``name`` attribute equal" +" to the header name. Address and Date headers have additional attributes " "that give you access to the parsed data of the header. This means you can " "now do things like this::" msgstr "" @@ -2674,8 +2816,8 @@ msgstr "" "producido por ``header_factory``. Todos éstos objetos de encabezado tienen " "un atributo ``name`` igual al nombre del encabezado. Los encabezados de " "direcciones y fechas tienen atributos adicionales que te dan acceso a los " -"datos analizados del encabezado. Ésto significa que ahora puedes hacer cosas " -"como ésta:" +"datos analizados del encabezado. Ésto significa que ahora puedes hacer cosas" +" como ésta:" #: ../Doc/whatsnew/3.3.rst:1293 msgid "" @@ -2691,28 +2833,45 @@ msgid "" "'Éric'\n" ">>> m['Date'] = email.utils.localtime()\n" ">>> m['Date'].datetime\n" -"datetime.datetime(2012, 5, 25, 21, 39, 24, 465484, tzinfo=datetime." -"timezone(datetime.timedelta(-1, 72000), 'EDT'))\n" +"datetime.datetime(2012, 5, 25, 21, 39, 24, 465484, tzinfo=datetime.timezone(datetime.timedelta(-1, 72000), 'EDT'))\n" ">>> m['Date']\n" "'Fri, 25 May 2012 21:44:27 -0400'\n" ">>> print(m)\n" "To: =?utf-8?q?=C3=89ric?= \n" "Date: Fri, 25 May 2012 21:44:27 -0400" msgstr "" +">>> m = Message(policy=SMTP)\n" +">>> m['To'] = 'Éric '\n" +">>> m['to']\n" +"'Éric '\n" +">>> m['to'].addresses\n" +"(Address(display_name='Éric', username='foo', domain='example.com'),)\n" +">>> m['to'].addresses[0].username\n" +"'foo'\n" +">>> m['to'].addresses[0].display_name\n" +"'Éric'\n" +">>> m['Date'] = email.utils.localtime()\n" +">>> m['Date'].datetime\n" +"datetime.datetime(2012, 5, 25, 21, 39, 24, 465484, tzinfo=datetime.timezone(datetime.timedelta(-1, 72000), 'EDT'))\n" +">>> m['Date']\n" +"'Fri, 25 May 2012 21:44:27 -0400'\n" +">>> print(m)\n" +"To: =?utf-8?q?=C3=89ric?= \n" +"Date: Fri, 25 May 2012 21:44:27 -0400" #: ../Doc/whatsnew/3.3.rst:1312 msgid "" "You will note that the unicode display name is automatically encoded as " "``utf-8`` when the message is serialized, but that when the header is " -"accessed directly, you get the unicode version. This eliminates any need to " -"deal with the :mod:`email.header` :meth:`~email.header.decode_header` or :" -"meth:`~email.header.make_header` functions." +"accessed directly, you get the unicode version. This eliminates any need to" +" deal with the :mod:`email.header` :meth:`~email.header.decode_header` or " +":meth:`~email.header.make_header` functions." msgstr "" -"Notarás que el nombre de visualización *Unicode* se codifica automáticamente " -"como ``utf-8`` cuando se serializa el mensaje, pero que cuando se accede al " -"encabezado directamente, obtienes la versión unicode. Ésto elimina cualquier " -"necesidad de lidiar con las funciones :mod:`email.header` :meth:`~email." -"header.decode_header` or :meth:`~email.header.make_header`." +"Notarás que el nombre de visualización *Unicode* se codifica automáticamente" +" como ``utf-8`` cuando se serializa el mensaje, pero que cuando se accede al" +" encabezado directamente, obtienes la versión unicode. Ésto elimina " +"cualquier necesidad de lidiar con las funciones :mod:`email.header` " +":meth:`~email.header.decode_header` or :meth:`~email.header.make_header`." #: ../Doc/whatsnew/3.3.rst:1318 msgid "You can also create addresses from parts::" @@ -2726,9 +2885,15 @@ msgid "" ">>> print(m)\n" "To: =?utf-8?q?=C3=89ric?= \n" "Date: Fri, 25 May 2012 21:44:27 -0400\n" -"cc: pals: Bob , Sally ;, Bonzo " -"" +"cc: pals: Bob , Sally ;, Bonzo " msgstr "" +">>> m['cc'] = [Group('pals', [Address('Bob', 'bob', 'example.com'),\n" +"... Address('Sally', 'sally', 'example.com')]),\n" +"... Address('Bonzo', addr_spec='bonz@laugh.com')]\n" +">>> print(m)\n" +"To: =?utf-8?q?=C3=89ric?= \n" +"Date: Fri, 25 May 2012 21:44:27 -0400\n" +"cc: pals: Bob , Sally ;, Bonzo " #: ../Doc/whatsnew/3.3.rst:1328 msgid "Decoding to unicode is done automatically::" @@ -2740,6 +2905,9 @@ msgid "" ">>> m2['to']\n" "'Éric '" msgstr "" +">>> m2 = message_from_string(str(m))\n" +">>> m2['to']\n" +"'Éric '" #: ../Doc/whatsnew/3.3.rst:1334 msgid "" @@ -2754,16 +2922,14 @@ msgstr "" #: ../Doc/whatsnew/3.3.rst:1338 msgid "" ">>> m2['cc'].addresses\n" -"(Address(display_name='Bob', username='bob', domain='example.com'), " -"Address(display_name='Sally', username='sally', domain='example.com'), " -"Address(display_name='Bonzo', username='bonz', domain='laugh.com'))\n" +"(Address(display_name='Bob', username='bob', domain='example.com'), Address(display_name='Sally', username='sally', domain='example.com'), Address(display_name='Bonzo', username='bonz', domain='laugh.com'))\n" ">>> m2['cc'].groups\n" -"(Group(display_name='pals', addresses=(Address(display_name='Bob', " -"username='bob', domain='example.com'), Address(display_name='Sally', " -"username='sally', domain='example.com')), Group(display_name=None, " -"addresses=(Address(display_name='Bonzo', username='bonz', domain='laugh." -"com'),))" +"(Group(display_name='pals', addresses=(Address(display_name='Bob', username='bob', domain='example.com'), Address(display_name='Sally', username='sally', domain='example.com')), Group(display_name=None, addresses=(Address(display_name='Bonzo', username='bonz', domain='laugh.com'),))" msgstr "" +">>> m2['cc'].addresses\n" +"(Address(display_name='Bob', username='bob', domain='example.com'), Address(display_name='Sally', username='sally', domain='example.com'), Address(display_name='Bonzo', username='bonz', domain='laugh.com'))\n" +">>> m2['cc'].groups\n" +"(Group(display_name='pals', addresses=(Address(display_name='Bob', username='bob', domain='example.com'), Address(display_name='Sally', username='sally', domain='example.com')), Group(display_name=None, addresses=(Address(display_name='Bonzo', username='bonz', domain='laugh.com'),))" #: ../Doc/whatsnew/3.3.rst:1343 msgid "" @@ -2784,13 +2950,13 @@ msgstr "Otros cambios en la API" #: ../Doc/whatsnew/3.3.rst:1351 msgid "" -"New :class:`~email.parser.BytesHeaderParser`, added to the :mod:`~email." -"parser` module to complement :class:`~email.parser.HeaderParser` and " -"complete the Bytes API." +"New :class:`~email.parser.BytesHeaderParser`, added to the " +":mod:`~email.parser` module to complement " +":class:`~email.parser.HeaderParser` and complete the Bytes API." msgstr "" -"Nuevo :class:`~email.parser.BytesHeaderParser`, añadido al módulo :mod:" -"`~email.parser` para complementar :class:`~email.parser.HeaderParser` y " -"completar la API Bytes." +"Nuevo :class:`~email.parser.BytesHeaderParser`, añadido al módulo " +":mod:`~email.parser` para complementar :class:`~email.parser.HeaderParser` y" +" completar la API Bytes." #: ../Doc/whatsnew/3.3.rst:1355 msgid "New utility functions:" @@ -2812,23 +2978,23 @@ msgid "" "naive :class:`~datetime.datetime` if the offset is ``-0000``." msgstr "" ":func:`email.utils.parsedate_to_datetime`: dada una cadena de fecha de un " -"encabezado de correo electrónico, conviértela en un :class:`datetime." -"datetime`, o un ingenuo :class:`datetime.datetime` si el desplazamiento es " -"``-0000``." +"encabezado de correo electrónico, conviértela en un " +":class:`datetime.datetime`, o un ingenuo :class:`datetime.datetime` si el " +"desplazamiento es ``-0000``." #: ../Doc/whatsnew/3.3.rst:1364 msgid "" ":func:`~email.utils.localtime`: With no argument, returns the current local " -"time as an aware :class:`~datetime.datetime` using the local :class:" -"`~datetime.timezone`. Given an aware :class:`~datetime.datetime`, converts " -"it into an aware :class:`~datetime.datetime` using the local :class:" -"`~datetime.timezone`." +"time as an aware :class:`~datetime.datetime` using the local " +":class:`~datetime.timezone`. Given an aware :class:`~datetime.datetime`, " +"converts it into an aware :class:`~datetime.datetime` using the local " +":class:`~datetime.timezone`." msgstr "" ":func:`~email.utils.localtime`: Sin argumento, retorna la hora local actual " -"como un reconocimiento :class:`~datetime.datetime` utilizando el local :" -"class:`~datetime.timezone`. Teniendo en cuenta :class:`~datetime.datetime`, " -"lo convierte en un :class:`~datetime.datetime` con el valor local :class:" -"`~datetime.timezone`." +"como un reconocimiento :class:`~datetime.datetime` utilizando el local " +":class:`~datetime.timezone`. Teniendo en cuenta " +":class:`~datetime.datetime`, lo convierte en un :class:`~datetime.datetime` " +"con el valor local :class:`~datetime.timezone`." #: ../Doc/whatsnew/3.3.rst:1372 msgid "ftplib" @@ -2838,8 +3004,8 @@ msgstr "ftplib" msgid "" ":class:`ftplib.FTP` now accepts a ``source_address`` keyword argument to " "specify the ``(host, port)`` to use as the source address in the bind call " -"when creating the outgoing socket. (Contributed by Giampaolo Rodolà in :" -"issue:`8594`.)" +"when creating the outgoing socket. (Contributed by Giampaolo Rodolà in " +":issue:`8594`.)" msgstr "" ":class:`ftplib.FTP` ahora acepta un argumento de palabra clave " "``source_address`` para especificar el ``(host, port)`` que se usará como " @@ -2848,14 +3014,14 @@ msgstr "" #: ../Doc/whatsnew/3.3.rst:1379 msgid "" -"The :class:`~ftplib.FTP_TLS` class now provides a new :func:`~ftplib.FTP_TLS." -"ccc` function to revert control channel back to plaintext. This can be " -"useful to take advantage of firewalls that know how to handle NAT with non-" -"secure FTP without opening fixed ports. (Contributed by Giampaolo Rodolà " -"in :issue:`12139`.)" +"The :class:`~ftplib.FTP_TLS` class now provides a new " +":func:`~ftplib.FTP_TLS.ccc` function to revert control channel back to " +"plaintext. This can be useful to take advantage of firewalls that know how " +"to handle NAT with non-secure FTP without opening fixed ports. (Contributed" +" by Giampaolo Rodolà in :issue:`12139`.)" msgstr "" -"La clase :class:`~ftplib.FTP_TLS` ahora proporciona una nueva función :func:" -"`~ftplib.FTP_TLS.ccc` para revertir el canal de control a texto sin " +"La clase :class:`~ftplib.FTP_TLS` ahora proporciona una nueva función " +":func:`~ftplib.FTP_TLS.ccc` para revertir el canal de control a texto sin " "formato. Esto puede ser útil para aprovechar los firewalls que saben cómo " "manejar NAT con FTP no seguro sin abrir puertos fijos. (Contribución de " "Giampaolo Rodolà en :issue:`12139`.)" @@ -2863,13 +3029,14 @@ msgstr "" #: ../Doc/whatsnew/3.3.rst:1385 msgid "" "Added :meth:`ftplib.FTP.mlsd` method which provides a parsable directory " -"listing format and deprecates :meth:`ftplib.FTP.nlst` and :meth:`ftplib.FTP." -"dir`. (Contributed by Giampaolo Rodolà in :issue:`11072`.)" +"listing format and deprecates :meth:`ftplib.FTP.nlst` and " +":meth:`ftplib.FTP.dir`. (Contributed by Giampaolo Rodolà in " +":issue:`11072`.)" msgstr "" "Añadido el método :meth:`ftplib.FTP.mlsd` que proporciona un formato de " -"listado de directorios analizable y pone en desuso :meth:`ftplib.FTP.nlst` " -"y :meth:`ftplib.FTP.dir`. (Contribución de Giampaolo Rodolà en :issue:" -"`11072`.)" +"listado de directorios analizable y pone en desuso :meth:`ftplib.FTP.nlst` y" +" :meth:`ftplib.FTP.dir`. (Contribución de Giampaolo Rodolà en " +":issue:`11072`.)" #: ../Doc/whatsnew/3.3.rst:1391 msgid "functools" @@ -2879,14 +3046,14 @@ msgstr "functools" msgid "" "The :func:`functools.lru_cache` decorator now accepts a ``typed`` keyword " "argument (that defaults to ``False`` to ensure that it caches values of " -"different types that compare equal in separate cache slots. (Contributed by " -"Raymond Hettinger in :issue:`13227`.)" +"different types that compare equal in separate cache slots. (Contributed by" +" Raymond Hettinger in :issue:`13227`.)" msgstr "" "El decorador :func:`functools.lru_cache` ahora acepta un argumento de " "palabra clave ``typed`` (que por defecto tiene el valor ``False`` para " "asegurar que almacene en caché valores de diferentes tipos que se comparen " -"igual en ranuras separadas de caché. (Contribución de Raymond Hettinger en :" -"issue:`13227`.)" +"igual en ranuras separadas de caché. (Contribución de Raymond Hettinger en " +":issue:`13227`.)" #: ../Doc/whatsnew/3.3.rst:1400 msgid "gc" @@ -2913,7 +3080,8 @@ msgid "" msgstr "" "Se ha agregado una nueva función :func:`~hmac.compare_digest` para prevenir " "los ataques de canales adyacentes en resúmenes durante el análisis de " -"tiempos. (Contribución de Nick Coghlan y Christian Heimes en :issue:`15061`.)" +"tiempos. (Contribución de Nick Coghlan y Christian Heimes en " +":issue:`15061`.)" #: ../Doc/whatsnew/3.3.rst:1415 msgid "http" @@ -2922,18 +3090,18 @@ msgstr "http" #: ../Doc/whatsnew/3.3.rst:1417 msgid "" ":class:`http.server.BaseHTTPRequestHandler` now buffers the headers and " -"writes them all at once when :meth:`~http.server.BaseHTTPRequestHandler." -"end_headers` is called. A new method :meth:`~http.server." -"BaseHTTPRequestHandler.flush_headers` can be used to directly manage when " -"the accumulated headers are sent. (Contributed by Andrew Schaaf in :issue:" -"`3709`.)" +"writes them all at once when " +":meth:`~http.server.BaseHTTPRequestHandler.end_headers` is called. A new " +"method :meth:`~http.server.BaseHTTPRequestHandler.flush_headers` can be used" +" to directly manage when the accumulated headers are sent. (Contributed by " +"Andrew Schaaf in :issue:`3709`.)" msgstr "" ":class:`http.server.BaseHTTPRequestHandler` ahora almacena en buffer los " -"encabezados y los escribe todos a la vez cuando se llama a :meth:`~http." -"server.BaseHTTPRequestHandler.end_headers`. Se puede usar un nuevo método :" -"meth:`~ http.server.BaseHTTPRequestHandler.flush_headers` para administrar " -"directamente cuándo se envían los encabezados acumulados. (Contribución por " -"Andrew Schaaf en :issue:`3709`.)" +"encabezados y los escribe todos a la vez cuando se llama a " +":meth:`~http.server.BaseHTTPRequestHandler.end_headers`. Se puede usar un " +"nuevo método :meth:`~ http.server.BaseHTTPRequestHandler.flush_headers` para" +" administrar directamente cuándo se envían los encabezados acumulados. " +"(Contribución por Andrew Schaaf en :issue:`3709`.)" #: ../Doc/whatsnew/3.3.rst:1423 msgid "" @@ -2945,14 +3113,15 @@ msgstr "" #: ../Doc/whatsnew/3.3.rst:1426 msgid "" -":class:`http.client.HTTPResponse` now has a :meth:`~http.client.HTTPResponse." -"readinto` method, which means it can be used as an :class:`io.RawIOBase` " -"class. (Contributed by John Kuhn in :issue:`13464`.)" +":class:`http.client.HTTPResponse` now has a " +":meth:`~http.client.HTTPResponse.readinto` method, which means it can be " +"used as an :class:`io.RawIOBase` class. (Contributed by John Kuhn in " +":issue:`13464`.)" msgstr "" -"La clase :class:`http.client.HTTPResponse` ahora tiene un método :meth:" -"`~http.client.HTTPResponse.readinto`, lo que significa que puede ser usado " -"como una clase :class:`io.RawIOBase`. (Contribución de John Kuhn in :issue:" -"`13464`)" +"La clase :class:`http.client.HTTPResponse` ahora tiene un método " +":meth:`~http.client.HTTPResponse.readinto`, lo que significa que puede ser " +"usado como una clase :class:`io.RawIOBase`. (Contribución de John Kuhn in " +":issue:`13464`)" #: ../Doc/whatsnew/3.3.rst:1433 msgid "html" @@ -2961,14 +3130,14 @@ msgstr "html" #: ../Doc/whatsnew/3.3.rst:1435 msgid "" ":class:`html.parser.HTMLParser` is now able to parse broken markup without " -"raising errors, therefore the *strict* argument of the constructor and the :" -"exc:`~html.parser.HTMLParseError` exception are now deprecated. The ability " -"to parse broken markup is the result of a number of bug fixes that are also " -"available on the latest bug fix releases of Python 2.7/3.2. (Contributed by " -"Ezio Melotti in :issue:`15114`, and :issue:`14538`, :issue:`13993`, :issue:" -"`13960`, :issue:`13358`, :issue:`1745761`, :issue:`755670`, :issue:`13357`, :" -"issue:`12629`, :issue:`1200313`, :issue:`670664`, :issue:`13273`, :issue:" -"`12888`, :issue:`7311`.)" +"raising errors, therefore the *strict* argument of the constructor and the " +":exc:`~html.parser.HTMLParseError` exception are now deprecated. The ability" +" to parse broken markup is the result of a number of bug fixes that are also" +" available on the latest bug fix releases of Python 2.7/3.2. (Contributed by" +" Ezio Melotti in :issue:`15114`, and :issue:`14538`, :issue:`13993`, " +":issue:`13960`, :issue:`13358`, :issue:`1745761`, :issue:`755670`, " +":issue:`13357`, :issue:`12629`, :issue:`1200313`, :issue:`670664`, " +":issue:`13273`, :issue:`12888`, :issue:`7311`.)" msgstr "" ":class:`html.parser.HTMLParser` ahora puede analizar el marcado no válido " "sin generar errores, por lo tanto, el argumento *strict* del constructor y " @@ -2976,24 +3145,25 @@ msgstr "" "habilidad de analizar marcado inválido es el resultado de un número de " "correcciones que también están disponibles en la última versión de solución " "de bugs de Python 2.7/3.2. (Contribución de Ezio Melotti en :issue:`15114`, " -"y :issue:`14538`, :issue:`13993`, :issue:`13960`, :issue:`13358`, :issue:" -"`1745761`, :issue:`755670`, :issue:`13357`, :issue:`12629`, :issue:" -"`1200313`, :issue:`670664`, :issue:`13273`, :issue:`12888`, :issue:`7311`.)" +"y :issue:`14538`, :issue:`13993`, :issue:`13960`, :issue:`13358`, " +":issue:`1745761`, :issue:`755670`, :issue:`13357`, :issue:`12629`, " +":issue:`1200313`, :issue:`670664`, :issue:`13273`, :issue:`12888`, " +":issue:`7311`.)" #: ../Doc/whatsnew/3.3.rst:1445 msgid "" "A new :data:`~html.entities.html5` dictionary that maps HTML5 named " "character references to the equivalent Unicode character(s) (e.g. " -"``html5['gt;'] == '>'``) has been added to the :mod:`html.entities` module. " -"The dictionary is now also used by :class:`~html.parser.HTMLParser`. " +"``html5['gt;'] == '>'``) has been added to the :mod:`html.entities` module." +" The dictionary is now also used by :class:`~html.parser.HTMLParser`. " "(Contributed by Ezio Melotti in :issue:`11113` and :issue:`15156`.)" msgstr "" "Se ha agregado un nuevo diccionario :data:`~html.entities.html5` que asigna " "referencias de caracteres con nombre HTML5 a los caracteres *Unicode* " "equivalentes (por ejemplo, ``html5['gt;'] == '>'``) ha sido agregado al " -"módulo :mod:`html.entities`. El diccionario ahora también es utilizado por :" -"class:`~html.parser.HTMLParser`. (Contribución por Ezio Melotti en :issue:" -"`11113` y :issue:`15156`.)" +"módulo :mod:`html.entities`. El diccionario ahora también es utilizado por " +":class:`~html.parser.HTMLParser`. (Contribución por Ezio Melotti en " +":issue:`11113` y :issue:`15156`.)" #: ../Doc/whatsnew/3.3.rst:1453 msgid "imaplib" @@ -3017,8 +3187,8 @@ msgstr "inspect" #: ../Doc/whatsnew/3.3.rst:1464 msgid "" -"A new :func:`~inspect.getclosurevars` function has been added. This function " -"reports the current binding of all names referenced from the function body " +"A new :func:`~inspect.getclosurevars` function has been added. This function" +" reports the current binding of all names referenced from the function body " "and where those names were resolved, making it easier to verify correct " "internal state when testing code that relies on stateful closures." msgstr "" @@ -3059,9 +3229,9 @@ msgid "" "file already exists. It is based on the C11 'x' mode to fopen()." msgstr "" "La función :func:`~io.open` tiene un nuevo modo ``'x'`` que puede ser usado " -"exclusivamente para crear un nuevo archivo, y lanzar un :exc:" -"`FileExistsError` si el archivo ya existe. Este está basado en el modo C11 " -"'x' para fopen()." +"exclusivamente para crear un nuevo archivo, y lanzar un " +":exc:`FileExistsError` si el archivo ya existe. Este está basado en el modo " +"C11 'x' para fopen()." #: ../Doc/whatsnew/3.3.rst:1485 msgid "(Contributed by David Townshend in :issue:`12760`.)" @@ -3070,16 +3240,16 @@ msgstr "(Contribución de David Townsend en :issue:`12760`.)" #: ../Doc/whatsnew/3.3.rst:1487 msgid "" "The constructor of the :class:`~io.TextIOWrapper` class has a new " -"*write_through* optional argument. If *write_through* is ``True``, calls to :" -"meth:`~io.TextIOWrapper.write` are guaranteed not to be buffered: any data " +"*write_through* optional argument. If *write_through* is ``True``, calls to " +":meth:`~io.TextIOWrapper.write` are guaranteed not to be buffered: any data " "written on the :class:`~io.TextIOWrapper` object is immediately handled to " "its underlying binary buffer." msgstr "" "El constructor de la clase :class:`~io.TextIOWrapper` tiene un nuevo " "argumento opcional *write_through*. Si *write_through* es ``True``, se " "garantiza que las llamadas a :meth:`~ io.TextIOWrapper.write` no se " -"almacenarán en buffer: Cualquier dato escrito en el objeto :class:`~io." -"TextIOWrapper` es llevado inmediatamente a su buffer subyacente." +"almacenarán en buffer: Cualquier dato escrito en el objeto " +":class:`~io.TextIOWrapper` es llevado inmediatamente a su buffer subyacente." #: ../Doc/whatsnew/3.3.rst:1495 msgid "itertools" @@ -3090,8 +3260,8 @@ msgid "" ":func:`~itertools.accumulate` now takes an optional ``func`` argument for " "providing a user-supplied binary function." msgstr "" -":func:`~itertools.accumulate` ahora toma un argumento opcional ``func`` para " -"proporcionar una función binaria proporcionada por el usuario." +":func:`~itertools.accumulate` ahora toma un argumento opcional ``func`` para" +" proporcionar una función binaria proporcionada por el usuario." #: ../Doc/whatsnew/3.3.rst:1502 msgid "logging" @@ -3100,8 +3270,8 @@ msgstr "logging" #: ../Doc/whatsnew/3.3.rst:1504 msgid "" "The :func:`~logging.basicConfig` function now supports an optional " -"``handlers`` argument taking an iterable of handlers to be added to the root " -"logger." +"``handlers`` argument taking an iterable of handlers to be added to the root" +" logger." msgstr "" "La función :func:`~logging.basicConfig` ahora admite un argumento opcional " "``handlers`` tomando un iterable de manejadores para agregarlo en el " @@ -3112,14 +3282,15 @@ msgid "" "A class level attribute :attr:`~logging.handlers.SysLogHandler.append_nul` " "has been added to :class:`~logging.handlers.SysLogHandler` to allow control " "of the appending of the ``NUL`` (``\\000``) byte to syslog records, since " -"for some daemons it is required while for others it is passed through to the " -"log." +"for some daemons it is required while for others it is passed through to the" +" log." msgstr "" -"Un atributo de nivel de la clase :attr:`~logging.handlers.SysLogHandler." -"append_nul` ha sido agregado a la clase :class:`~logging.handlers." -"SysLogHandler` para permitir el control de la adición de ``NUL`` (``\\000``) " -"byte a los registros de syslog, dado que para algunos demonios es requerido " -"mientras que para otros se pasa al registro." +"Un atributo de nivel de la clase " +":attr:`~logging.handlers.SysLogHandler.append_nul` ha sido agregado a la " +"clase :class:`~logging.handlers.SysLogHandler` para permitir el control de " +"la adición de ``NUL`` (``\\000``) byte a los registros de syslog, dado que " +"para algunos demonios es requerido mientras que para otros se pasa al " +"registro." #: ../Doc/whatsnew/3.3.rst:1515 msgid "math" @@ -3141,17 +3312,16 @@ msgstr "(Escrito por Mark Dickinson en :issue:`11888`.)" msgid "mmap" msgstr "mmap" -# cursiva a Bytes #: ../Doc/whatsnew/3.3.rst:1526 msgid "" "The :meth:`~mmap.mmap.read` method is now more compatible with other file-" "like objects: if the argument is omitted or specified as ``None``, it " -"returns the bytes from the current file position to the end of the mapping. " -"(Contributed by Petri Lehtinen in :issue:`12021`.)" +"returns the bytes from the current file position to the end of the mapping." +" (Contributed by Petri Lehtinen in :issue:`12021`.)" msgstr "" "El método :meth:`~mmap.mmap.read` ahora es más compatible con otros objetos " "similares a archivos: Si se omite el argumento o se especifica como " -"``None``, retorna los *bytes* desde la posición actual hasta el final del " +"``None``, retorna los bytes desde la posición actual hasta el final del " "mapeo. (Contribución de Petri Lehtinen en :issue:`12021`.)" #: ../Doc/whatsnew/3.3.rst:1533 @@ -3171,12 +3341,12 @@ msgstr "" #: ../Doc/whatsnew/3.3.rst:1539 msgid "" ":class:`multiprocessing.Connection` objects can now be transferred over " -"multiprocessing connections. (Contributed by Richard Oudkerk in :issue:" -"`4892`.)" +"multiprocessing connections. (Contributed by Richard Oudkerk in " +":issue:`4892`.)" msgstr "" -"Los objetos :class:`multiprocessing.Connection` ahora se pueden transferir a " -"través de conexiones de multiprocesamiento. (Contribución de Richard Oudkerk " -"en :issue:`4892`.)" +"Los objetos :class:`multiprocessing.Connection` ahora se pueden transferir a" +" través de conexiones de multiprocesamiento. (Contribución de Richard " +"Oudkerk en :issue:`4892`.)" #: ../Doc/whatsnew/3.3.rst:1543 msgid "" @@ -3191,42 +3361,44 @@ msgstr "" #: ../Doc/whatsnew/3.3.rst:1547 msgid "" "New attribute :data:`multiprocessing.Process.sentinel` allows a program to " -"wait on multiple :class:`~multiprocessing.Process` objects at one time using " -"the appropriate OS primitives (for example, :mod:`select` on posix systems)." +"wait on multiple :class:`~multiprocessing.Process` objects at one time using" +" the appropriate OS primitives (for example, :mod:`select` on posix " +"systems)." msgstr "" "Nuevo atributo :data:`multiprocessing.Process.sentinel` permite que un " -"programa espere múltiples objetos :class:`~multiprocessing.Process` a la vez " -"utilizando las primitivas adecuadas del sistema operativo (por ejemplo, :mod:" -"`select` en sistemas posix)." +"programa espere múltiples objetos :class:`~multiprocessing.Process` a la vez" +" utilizando las primitivas adecuadas del sistema operativo (por ejemplo, " +":mod:`select` en sistemas posix)." #: ../Doc/whatsnew/3.3.rst:1552 msgid "" -"New methods :meth:`multiprocessing.pool.Pool.starmap` and :meth:" -"`~multiprocessing.pool.Pool.starmap_async` provide :func:`itertools.starmap` " -"equivalents to the existing :meth:`multiprocessing.pool.Pool.map` and :meth:" -"`~multiprocessing.pool.Pool.map_async` functions. (Contributed by Hynek " -"Schlawack in :issue:`12708`.)" +"New methods :meth:`multiprocessing.pool.Pool.starmap` and " +":meth:`~multiprocessing.pool.Pool.starmap_async` provide " +":func:`itertools.starmap` equivalents to the existing " +":meth:`multiprocessing.pool.Pool.map` and " +":meth:`~multiprocessing.pool.Pool.map_async` functions. (Contributed by " +"Hynek Schlawack in :issue:`12708`.)" msgstr "" -"Los nuevos métodos :meth:`multiprocessing.pool.Pool.starmap` y :meth:" -"`~multiprocessing.pool.Pool.starmap_async` proporcionan :func:`itertools." -"starmap` equivalentes a las funciones existentes :meth:`multiprocessing.pool." -"Pool.map` y :meth:`~multiprocessing.pool.Pool.map_async`. (Contribución de " -"Hynek Schlawack en :issue:`12708`.)" +"Los nuevos métodos :meth:`multiprocessing.pool.Pool.starmap` y " +":meth:`~multiprocessing.pool.Pool.starmap_async` proporcionan " +":func:`itertools.starmap` equivalentes a las funciones existentes " +":meth:`multiprocessing.pool.Pool.map` y " +":meth:`~multiprocessing.pool.Pool.map_async`. (Contribución de Hynek " +"Schlawack en :issue:`12708`.)" #: ../Doc/whatsnew/3.3.rst:1561 msgid "nntplib" msgstr "nntplib" #: ../Doc/whatsnew/3.3.rst:1563 -#, fuzzy msgid "" "The :class:`!nntplib.NNTP` class now supports the context management " "protocol to unconditionally consume :exc:`socket.error` exceptions and to " "close the NNTP connection when done::" msgstr "" -"La :class:`nntplib.NNTP` ahora admite el protocolo de administración de " -"contexto para consumir incondicionalmente las excepciones :exc:`socket." -"error` y cerrar la conexión NNTP cuando esté listo::" +"La clase :class:`!nntplib.NNTP` ahora admite el protocolo de administración " +"de contexto para consumir incondicionalmente las excepciones " +":exc:`socket.error` y cerrar la conexión NNTP cuando finalice:" #: ../Doc/whatsnew/3.3.rst:1567 msgid "" @@ -3234,10 +3406,14 @@ msgid "" ">>> with NNTP('news.gmane.org') as n:\n" "... n.group('gmane.comp.python.committers')\n" "...\n" -"('211 1755 1 1755 gmane.comp.python.committers', 1755, 1, 1755, 'gmane.comp." -"python.committers')\n" +"('211 1755 1 1755 gmane.comp.python.committers', 1755, 1, 1755, 'gmane.comp.python.committers')\n" ">>>" msgstr "" +">>> from nntplib import NNTP\n" +">>> with NNTP('news.gmane.org') as n:\n" +"... n.group('gmane.comp.python.committers')\n" +"...\n" +"('211 1755 1 1755 gmane.comp.python.committers', 1755, 1, 1755, 'gmane.comp.python.committers')\n" #: ../Doc/whatsnew/3.3.rst:1574 msgid "(Contributed by Giampaolo Rodolà in :issue:`9795`.)" @@ -3250,14 +3426,14 @@ msgstr "os" #: ../Doc/whatsnew/3.3.rst:1580 msgid "" "The :mod:`os` module has a new :func:`~os.pipe2` function that makes it " -"possible to create a pipe with :const:`~os.O_CLOEXEC` or :const:`~os." -"O_NONBLOCK` flags set atomically. This is especially useful to avoid race " -"conditions in multi-threaded programs." +"possible to create a pipe with :const:`~os.O_CLOEXEC` or " +":const:`~os.O_NONBLOCK` flags set atomically. This is especially useful to " +"avoid race conditions in multi-threaded programs." msgstr "" "El módulo :mod:`os` tiene una nueva función :func:`~os.pipe2` que hace " -"posible crear una tubería con banderas :const:`~os.O_CLOEXEC` o :const:`~os." -"O_NONBLOCK` establecida automáticamente. Esto es especialmente útil para " -"evitar las condiciones de carrera en programas multi-hilos." +"posible crear una tubería con banderas :const:`~os.O_CLOEXEC` o " +":const:`~os.O_NONBLOCK` establecida automáticamente. Esto es especialmente " +"útil para evitar las condiciones de carrera en programas multi-hilos." #: ../Doc/whatsnew/3.3.rst:1585 msgid "" @@ -3265,18 +3441,18 @@ msgid "" "an efficient \"zero-copy\" way for copying data from one file (or socket) " "descriptor to another. The phrase \"zero-copy\" refers to the fact that all " "of the copying of data between the two descriptors is done entirely by the " -"kernel, with no copying of data into userspace buffers. :func:`~os.sendfile` " -"can be used to efficiently copy data from a file on disk to a network " +"kernel, with no copying of data into userspace buffers. :func:`~os.sendfile`" +" can be used to efficiently copy data from a file on disk to a network " "socket, e.g. for downloading a file." msgstr "" "El módulo :mod:`os` tiene una nueva función :func:`~os.sendfile` que " "proporciona una forma eficiente de \"copia cero\" para copiar datos desde " "un descriptor de archivo (o socket) a otro. La frase \"copia cero\" se " "refiere al hecho de que la copia de los datos entre dos descriptores es " -"realizada en su totalidad por el kernel, sin copiar los datos en los búferes " -"del espacio de usuario. La función :func:`~os.sendfile` puede ser usada para " -"copiar datos de forma eficiente desde un archivo en el disco a un conector " -"de red, por ejemplo para descargar un archivo." +"realizada en su totalidad por el kernel, sin copiar los datos en los búferes" +" del espacio de usuario. La función :func:`~os.sendfile` puede ser usada " +"para copiar datos de forma eficiente desde un archivo en el disco a un " +"conector de red, por ejemplo para descargar un archivo." #: ../Doc/whatsnew/3.3.rst:1593 msgid "" @@ -3289,72 +3465,75 @@ msgid "" "To avoid race conditions like symlink attacks and issues with temporary " "files and directories, it is more reliable (and also faster) to manipulate " "file descriptors instead of file names. Python 3.3 enhances existing " -"functions and introduces new functions to work on file descriptors (:issue:" -"`4761`, :issue:`10755` and :issue:`14626`)." +"functions and introduces new functions to work on file descriptors " +"(:issue:`4761`, :issue:`10755` and :issue:`14626`)." msgstr "" "Para evitar las condiciones de carrera, como los ataques symlink, y errores " "con archivos temporales y directorios, es preferible (y más rápido) " "manipular los descriptores de archivos en vez de los nombres de archivos. " -"Python 3.3 mejora las funciones existentes e introduce nuevas funciones para " -"trabajar con los descriptores de archivos (:issue:`4761`, :issue:`10755` " +"Python 3.3 mejora las funciones existentes e introduce nuevas funciones para" +" trabajar con los descriptores de archivos (:issue:`4761`, :issue:`10755` " "and :issue:`14626`)." #: ../Doc/whatsnew/3.3.rst:1601 msgid "" -"The :mod:`os` module has a new :func:`~os.fwalk` function similar to :func:" -"`~os.walk` except that it also yields file descriptors referring to the " -"directories visited. This is especially useful to avoid symlink races." +"The :mod:`os` module has a new :func:`~os.fwalk` function similar to " +":func:`~os.walk` except that it also yields file descriptors referring to " +"the directories visited. This is especially useful to avoid symlink races." msgstr "" -"El módulo :mod:`os` tiene una nueva función :func:`~os.fwalk` similar a :" -"func:`~os.walk` excepto que también incluye descriptores de archivos que se " -"refieren a los directorios visitados. Esto es especialmente útil para " +"El módulo :mod:`os` tiene una nueva función :func:`~os.fwalk` similar a " +":func:`~os.walk` excepto que también incluye descriptores de archivos que se" +" refieren a los directorios visitados. Esto es especialmente útil para " "prevenir las carreras de enlaces simbólicos." #: ../Doc/whatsnew/3.3.rst:1605 msgid "" "The following functions get new optional *dir_fd* (:ref:`paths relative to " "directory descriptors `) and/or *follow_symlinks* (:ref:`not " -"following symlinks `): :func:`~os.access`, :func:`~os." -"chflags`, :func:`~os.chmod`, :func:`~os.chown`, :func:`~os.link`, :func:`~os." -"lstat`, :func:`~os.mkdir`, :func:`~os.mkfifo`, :func:`~os.mknod`, :func:`~os." -"open`, :func:`~os.readlink`, :func:`~os.remove`, :func:`~os.rename`, :func:" -"`~os.replace`, :func:`~os.rmdir`, :func:`~os.stat`, :func:`~os.symlink`, :" -"func:`~os.unlink`, :func:`~os.utime`. Platform support for using these " -"parameters can be checked via the sets :data:`os.supports_dir_fd` and :data:" -"`os.supports_follows_symlinks`." +"following symlinks `): :func:`~os.access`, " +":func:`~os.chflags`, :func:`~os.chmod`, :func:`~os.chown`, :func:`~os.link`," +" :func:`~os.lstat`, :func:`~os.mkdir`, :func:`~os.mkfifo`, " +":func:`~os.mknod`, :func:`~os.open`, :func:`~os.readlink`, " +":func:`~os.remove`, :func:`~os.rename`, :func:`~os.replace`, " +":func:`~os.rmdir`, :func:`~os.stat`, :func:`~os.symlink`, " +":func:`~os.unlink`, :func:`~os.utime`. Platform support for using these " +"parameters can be checked via the sets :data:`os.supports_dir_fd` and " +":data:`os.supports_follows_symlinks`." msgstr "" "Las siguientes funciones tienen las nuevas opciones *dir_fd* (:ref:`rutas " -"relativas a descriptores de archivos `) y/o *follow_symlinks* (:ref:" -"`not following symlinks `): :func:`~os.access`, :func:`~os." -"chflags`, :func:`~os.chmod`, :func:`~os.chown`, :func:`~os.link`, :func:`~os." -"lstat`, :func:`~os.mkdir`, :func:`~os.mkfifo`, :func:`~os.mknod`, :func:`~os." -"open`, :func:`~os.readlink`, :func:`~os.remove`, :func:`~os.rename`, :func:" -"`~os.replace`, :func:`~os.rmdir`, :func:`~os.stat`, :func:`~os.symlink`, :" -"func:`~os.unlink`, :func:`~os.utime`. El soporte de la plataforma para usar " -"éstos parámetros puede verificarse a través de los conjuntos :data:`os." -"supports_dir_fd` and :data:`os.supports_follows_symlinks`." +"relativas a descriptores de archivos `) y/o *follow_symlinks* " +"(:ref:`not following symlinks `): :func:`~os.access`, " +":func:`~os.chflags`, :func:`~os.chmod`, :func:`~os.chown`, :func:`~os.link`," +" :func:`~os.lstat`, :func:`~os.mkdir`, :func:`~os.mkfifo`, " +":func:`~os.mknod`, :func:`~os.open`, :func:`~os.readlink`, " +":func:`~os.remove`, :func:`~os.rename`, :func:`~os.replace`, " +":func:`~os.rmdir`, :func:`~os.stat`, :func:`~os.symlink`, " +":func:`~os.unlink`, :func:`~os.utime`. El soporte de la plataforma para usar" +" éstos parámetros puede verificarse a través de los conjuntos " +":data:`os.supports_dir_fd` and :data:`os.supports_follows_symlinks`." #: ../Doc/whatsnew/3.3.rst:1616 msgid "" "The following functions now support a file descriptor for their path " -"argument: :func:`~os.chdir`, :func:`~os.chmod`, :func:`~os.chown`, :func:" -"`~os.execve`, :func:`~os.listdir`, :func:`~os.pathconf`, :func:`~os.path." -"exists`, :func:`~os.stat`, :func:`~os.statvfs`, :func:`~os.utime`. Platform " -"support for this can be checked via the :data:`os.supports_fd` set." +"argument: :func:`~os.chdir`, :func:`~os.chmod`, :func:`~os.chown`, " +":func:`~os.execve`, :func:`~os.listdir`, :func:`~os.pathconf`, " +":func:`~os.path.exists`, :func:`~os.stat`, :func:`~os.statvfs`, " +":func:`~os.utime`. Platform support for this can be checked via the " +":data:`os.supports_fd` set." msgstr "" "Las siguientes funciones ahora admiten un descriptor de archivos para su " -"argumento de ruta: :func:`~os.chdir`, :func:`~os.chmod`, :func:`~os.chown`, :" -"func:`~os.execve`, :func:`~os.listdir`, :func:`~os.pathconf`, :func:`~os." -"path.exists`, :func:`~os.stat`, :func:`~os.statvfs`, :func:`~os.utime`. El " -"soporte de la plataforma para ésto puede ser verificado a través del " -"conjunto :data:`os.supports_fd`." +"argumento de ruta: :func:`~os.chdir`, :func:`~os.chmod`, :func:`~os.chown`, " +":func:`~os.execve`, :func:`~os.listdir`, :func:`~os.pathconf`, " +":func:`~os.path.exists`, :func:`~os.stat`, :func:`~os.statvfs`, " +":func:`~os.utime`. El soporte de la plataforma para ésto puede ser " +"verificado a través del conjunto :data:`os.supports_fd`." #: ../Doc/whatsnew/3.3.rst:1622 msgid "" ":func:`~os.access` accepts an ``effective_ids`` keyword argument to turn on " "using the effective uid/gid rather than the real uid/gid in the access " -"check. Platform support for this can be checked via the :data:`~os." -"supports_effective_ids` set." +"check. Platform support for this can be checked via the " +":data:`~os.supports_effective_ids` set." msgstr "" ":func:`~os.access` acepta un argumento de palabra clave ``effective_ids`` " "acepta el uso del uid/gid efectivo en lugar del uid/gid real en la " @@ -3363,15 +3542,15 @@ msgstr "" #: ../Doc/whatsnew/3.3.rst:1627 msgid "" -"The :mod:`os` module has two new functions: :func:`~os.getpriority` and :" -"func:`~os.setpriority`. They can be used to get or set process niceness/" -"priority in a fashion similar to :func:`os.nice` but extended to all " -"processes instead of just the current one." +"The :mod:`os` module has two new functions: :func:`~os.getpriority` and " +":func:`~os.setpriority`. They can be used to get or set process " +"niceness/priority in a fashion similar to :func:`os.nice` but extended to " +"all processes instead of just the current one." msgstr "" -"El módulo :mod:`os` tiene dos nuevas funciones :func:`~os.getpriority` y :" -"func:`~os.setpriority`. Estas pueden ser usadas para establecer o recuperar " -"la prioridad en una forma similar a :func:`os.nice` pero extendidos a todos " -"los procesos en vez de solo al proceso actual." +"El módulo :mod:`os` tiene dos nuevas funciones :func:`~os.getpriority` y " +":func:`~os.setpriority`. Estas pueden ser usadas para establecer o recuperar" +" la prioridad en una forma similar a :func:`os.nice` pero extendidos a todos" +" los procesos en vez de solo al proceso actual." #: ../Doc/whatsnew/3.3.rst:1632 msgid "(Patch submitted by Giampaolo Rodolà in :issue:`10784`.)" @@ -3379,8 +3558,8 @@ msgstr "(Revisión enviada por Giampaolo Rodolà en :issue:`10784`.)" #: ../Doc/whatsnew/3.3.rst:1634 msgid "" -"The new :func:`os.replace` function allows cross-platform renaming of a file " -"with overwriting the destination. With :func:`os.rename`, an existing " +"The new :func:`os.replace` function allows cross-platform renaming of a file" +" with overwriting the destination. With :func:`os.rename`, an existing " "destination file is overwritten under POSIX, but raises an error under " "Windows. (Contributed by Antoine Pitrou in :issue:`8828`.)" msgstr "" @@ -3391,57 +3570,58 @@ msgstr "" #: ../Doc/whatsnew/3.3.rst:1640 msgid "" -"The stat family of functions (:func:`~os.stat`, :func:`~os.fstat`, and :func:" -"`~os.lstat`) now support reading a file's timestamps with nanosecond " +"The stat family of functions (:func:`~os.stat`, :func:`~os.fstat`, and " +":func:`~os.lstat`) now support reading a file's timestamps with nanosecond " "precision. Symmetrically, :func:`~os.utime` can now write file timestamps " -"with nanosecond precision. (Contributed by Larry Hastings in :issue:" -"`14127`.)" +"with nanosecond precision. (Contributed by Larry Hastings in " +":issue:`14127`.)" msgstr "" -"La familia de estadísticas de funciones (:func:`~os.stat`, :func:`~os." -"fstat`, y :func:`~os.lstat`) ahora admite la lectura de marcas de tiempo de " -"un archivo con precisión de nanosegundos. Simétricamente, :func:`~os.utime` " -"ahora puede escribir marcas de tiempo de archivos con precisión de " -"nanosegundos. (Contribución de Larry Hastings en :issue:`14127`.)" +"La familia de estadísticas de funciones (:func:`~os.stat`, " +":func:`~os.fstat`, y :func:`~os.lstat`) ahora admite la lectura de marcas de" +" tiempo de un archivo con precisión de nanosegundos. Simétricamente, " +":func:`~os.utime` ahora puede escribir marcas de tiempo de archivos con " +"precisión de nanosegundos. (Contribución de Larry Hastings en " +":issue:`14127`.)" #: ../Doc/whatsnew/3.3.rst:1646 msgid "" "The new :func:`os.get_terminal_size` function queries the size of the " -"terminal attached to a file descriptor. See also :func:`shutil." -"get_terminal_size`. (Contributed by Zbigniew Jędrzejewski-Szmek in :issue:" -"`13609`.)" +"terminal attached to a file descriptor. See also " +":func:`shutil.get_terminal_size`. (Contributed by Zbigniew Jędrzejewski-" +"Szmek in :issue:`13609`.)" msgstr "" "La nueva función :func:`os.get_terminal_size` consulta el tamaño del " -"terminal adjunto al descriptor del archivo. Vea también :func:`shutil." -"get_terminal_size`. (Contribución de Zbigniew Jędrzejewski-Szmek en :issue:" -"`13609`. )" +"terminal adjunto al descriptor del archivo. Vea también " +":func:`shutil.get_terminal_size`. (Contribución de Zbigniew Jędrzejewski-" +"Szmek en :issue:`13609`. )" #: ../Doc/whatsnew/3.3.rst:1653 msgid "" -"New functions to support Linux extended attributes (:issue:`12720`): :func:" -"`~os.getxattr`, :func:`~os.listxattr`, :func:`~os.removexattr`, :func:`~os." -"setxattr`." +"New functions to support Linux extended attributes (:issue:`12720`): " +":func:`~os.getxattr`, :func:`~os.listxattr`, :func:`~os.removexattr`, " +":func:`~os.setxattr`." msgstr "" -"Nuevas funciones para admitir atributos extendidos de Linux. (:issue:" -"`12720`): :func:`~os.getxattr`, :func:`~os.listxattr`, :func:`~os." -"removexattr`, :func:`~os.setxattr`." +"Nuevas funciones para admitir atributos extendidos de Linux. " +"(:issue:`12720`): :func:`~os.getxattr`, :func:`~os.listxattr`, " +":func:`~os.removexattr`, :func:`~os.setxattr`." #: ../Doc/whatsnew/3.3.rst:1657 msgid "" "New interface to the scheduler. These functions control how a process is " -"allocated CPU time by the operating system. New functions: :func:`~os." -"sched_get_priority_max`, :func:`~os.sched_get_priority_min`, :func:`~os." -"sched_getaffinity`, :func:`~os.sched_getparam`, :func:`~os." -"sched_getscheduler`, :func:`~os.sched_rr_get_interval`, :func:`~os." -"sched_setaffinity`, :func:`~os.sched_setparam`, :func:`~os." -"sched_setscheduler`, :func:`~os.sched_yield`," +"allocated CPU time by the operating system. New functions: " +":func:`~os.sched_get_priority_max`, :func:`~os.sched_get_priority_min`, " +":func:`~os.sched_getaffinity`, :func:`~os.sched_getparam`, " +":func:`~os.sched_getscheduler`, :func:`~os.sched_rr_get_interval`, " +":func:`~os.sched_setaffinity`, :func:`~os.sched_setparam`, " +":func:`~os.sched_setscheduler`, :func:`~os.sched_yield`," msgstr "" "Nueva interfaz para el planificador. Estas funciones controlan como el " -"sistema operativo le asigna tiempo de CPU a un proceso. Nuevas funciones: :" -"func:`~os.sched_get_priority_max`, :func:`~os.sched_get_priority_min`, :func:" -"`~os.sched_getaffinity`, :func:`~os.sched_getparam`, :func:`~os." -"sched_getscheduler`, :func:`~os.sched_rr_get_interval`, :func:`~os." -"sched_setaffinity`, :func:`~os.sched_setparam`, :func:`~os." -"sched_setscheduler`, :func:`~os.sched_yield`," +"sistema operativo le asigna tiempo de CPU a un proceso. Nuevas funciones: " +":func:`~os.sched_get_priority_max`, :func:`~os.sched_get_priority_min`, " +":func:`~os.sched_getaffinity`, :func:`~os.sched_getparam`, " +":func:`~os.sched_getscheduler`, :func:`~os.sched_rr_get_interval`, " +":func:`~os.sched_setaffinity`, :func:`~os.sched_setparam`, " +":func:`~os.sched_setscheduler`, :func:`~os.sched_yield`," #: ../Doc/whatsnew/3.3.rst:1666 msgid "New functions to control the file system:" @@ -3457,11 +3637,11 @@ msgstr "" #: ../Doc/whatsnew/3.3.rst:1670 msgid "" -":func:`~os.posix_fallocate`: Ensures that enough disk space is allocated for " -"a file." +":func:`~os.posix_fallocate`: Ensures that enough disk space is allocated for" +" a file." msgstr "" -":func:`~os.posix_fallocate`: Garantiza que se asigne el espacio suficiente a " -"un archivo." +":func:`~os.posix_fallocate`: Garantiza que se asigne el espacio suficiente a" +" un archivo." #: ../Doc/whatsnew/3.3.rst:1672 msgid ":func:`~os.sync`: Force write of everything to disk." @@ -3481,11 +3661,11 @@ msgstr "" #: ../Doc/whatsnew/3.3.rst:1677 msgid "" -":func:`~os.pread`: Read from a file descriptor at an offset, the file offset " -"remains unchanged." +":func:`~os.pread`: Read from a file descriptor at an offset, the file offset" +" remains unchanged." msgstr "" -":func:`~os.pread`: Leer desde un descriptor de archivo en un desplazamiento, " -"el desplazamiento del archivo permanece sin cambios." +":func:`~os.pread`: Leer desde un descriptor de archivo en un desplazamiento," +" el desplazamiento del archivo permanece sin cambios." #: ../Doc/whatsnew/3.3.rst:1679 msgid "" @@ -3535,8 +3715,8 @@ msgstr "" #: ../Doc/whatsnew/3.3.rst:1690 msgid "" -":func:`~os.times` and :func:`~os.uname`: Return type changed from a tuple to " -"a tuple-like object with named attributes." +":func:`~os.times` and :func:`~os.uname`: Return type changed from a tuple to" +" a tuple-like object with named attributes." msgstr "" ":func:`~os.times` and :func:`~os.uname`: El tipo de retorno cambió de tupla " "a un objeto tipo tupla con atributos con nombre." @@ -3546,25 +3726,26 @@ msgid "" "Some platforms now support additional constants for the :func:`~os.lseek` " "function, such as ``os.SEEK_HOLE`` and ``os.SEEK_DATA``." msgstr "" -"Varias plataformas admiten constantes adicionales para la función :func:`~os." -"lseek`, tal como ``os.SEEK_HOLE`` y ``os.SEEK_DATA``." +"Varias plataformas admiten constantes adicionales para la función " +":func:`~os.lseek`, tal como ``os.SEEK_HOLE`` y ``os.SEEK_DATA``." #: ../Doc/whatsnew/3.3.rst:1696 msgid "" -"New constants :const:`~os.RTLD_LAZY`, :const:`~os.RTLD_NOW`, :const:`~os." -"RTLD_GLOBAL`, :const:`~os.RTLD_LOCAL`, :const:`~os.RTLD_NODELETE`, :const:" -"`~os.RTLD_NOLOAD`, and :const:`~os.RTLD_DEEPBIND` are available on platforms " -"that support them. These are for use with the :func:`sys.setdlopenflags` " -"function, and supersede the similar constants defined in :mod:`ctypes` and :" -"mod:`DLFCN`. (Contributed by Victor Stinner in :issue:`13226`.)" -msgstr "" -"Nuevas constantes :const:`~os.RTLD_LAZY`, :const:`~os.RTLD_NOW`, :const:`~os." -"RTLD_GLOBAL`, :const:`~os.RTLD_LOCAL`, :const:`~os.RTLD_NODELETE`, :const:" -"`~os.RTLD_NOLOAD`, and :const:`~os.RTLD_DEEPBIND` están disponibles en " -"plataformas que las soporten. Éstas son para uso con la función :func:`sys." -"setdlopenflags`, y reemplazan las constantes similares definidas en :mod:" -"`ctypes` and :mod:`DLFCN`. (Contribución de Victor Stinner en :issue:" -"`13226`.)" +"New constants :const:`~os.RTLD_LAZY`, :const:`~os.RTLD_NOW`, " +":const:`~os.RTLD_GLOBAL`, :const:`~os.RTLD_LOCAL`, " +":const:`~os.RTLD_NODELETE`, :const:`~os.RTLD_NOLOAD`, and " +":const:`~os.RTLD_DEEPBIND` are available on platforms that support them. " +"These are for use with the :func:`sys.setdlopenflags` function, and " +"supersede the similar constants defined in :mod:`ctypes` and :mod:`DLFCN`. " +"(Contributed by Victor Stinner in :issue:`13226`.)" +msgstr "" +"Nuevas constantes :const:`~os.RTLD_LAZY`, :const:`~os.RTLD_NOW`, " +":const:`~os.RTLD_GLOBAL`, :const:`~os.RTLD_LOCAL`, " +":const:`~os.RTLD_NODELETE`, :const:`~os.RTLD_NOLOAD`, and " +":const:`~os.RTLD_DEEPBIND` están disponibles en plataformas que las " +"soporten. Éstas son para uso con la función :func:`sys.setdlopenflags`, y " +"reemplazan las constantes similares definidas en :mod:`ctypes` and " +":mod:`DLFCN`. (Contribución de Victor Stinner en :issue:`13226`.)" #: ../Doc/whatsnew/3.3.rst:1704 msgid "" @@ -3586,8 +3767,8 @@ msgid "" "are completed." msgstr "" "La finalización de tabulaciones ahora está disponible no solo para los " -"nombres de los comandos, sino también para sus argumentos. Por ejemplo, para " -"el comando ``break``, se completan las funciones y los nombres de archivo." +"nombres de los comandos, sino también para sus argumentos. Por ejemplo, para" +" el comando ``break``, se completan las funciones y los nombres de archivo." #: ../Doc/whatsnew/3.3.rst:1715 msgid "(Contributed by Georg Brandl in :issue:`14210`)" @@ -3599,11 +3780,12 @@ msgstr "pickle" #: ../Doc/whatsnew/3.3.rst:1721 msgid "" -":class:`pickle.Pickler` objects now have an optional :attr:`~pickle.Pickler." -"dispatch_table` attribute allowing per-pickler reduction functions to be set." +":class:`pickle.Pickler` objects now have an optional " +":attr:`~pickle.Pickler.dispatch_table` attribute allowing per-pickler " +"reduction functions to be set." msgstr "" -"Los objetos :class:`pickle.Pickler` ahora tienen un atributo opcional :attr:" -"`~pickle.Pickler.dispatch_table` que permite establecer funciones de " +"Los objetos :class:`pickle.Pickler` ahora tienen un atributo opcional " +":attr:`~pickle.Pickler.dispatch_table` que permite establecer funciones de " "reducción por recolector." #: ../Doc/whatsnew/3.3.rst:1725 @@ -3616,12 +3798,12 @@ msgstr "pydoc" #: ../Doc/whatsnew/3.3.rst:1731 msgid "" -"The Tk GUI and the :func:`~pydoc.serve` function have been removed from the :" -"mod:`pydoc` module: ``pydoc -g`` and :func:`~pydoc.serve` have been " +"The Tk GUI and the :func:`~pydoc.serve` function have been removed from the " +":mod:`pydoc` module: ``pydoc -g`` and :func:`~pydoc.serve` have been " "deprecated in Python 3.2." msgstr "" -"La Tk GUI y la función :func:`~pydoc.serve` han sido eliminadas del módulo :" -"mod:`pydoc`: ``pydoc -g`` y :func:`~pydoc.serve` han quedado obsoletos en " +"La Tk GUI y la función :func:`~pydoc.serve` han sido eliminadas del módulo " +":mod:`pydoc`: ``pydoc -g`` y :func:`~pydoc.serve` han quedado obsoletos en " "Python 3.2." #: ../Doc/whatsnew/3.3.rst:1737 @@ -3629,8 +3811,7 @@ msgid "re" msgstr "re" #: ../Doc/whatsnew/3.3.rst:1739 -msgid "" -":class:`str` regular expressions now support ``\\u`` and ``\\U`` escapes." +msgid ":class:`str` regular expressions now support ``\\u`` and ``\\U`` escapes." msgstr "" "Las expresiones regulares de la clase :class:`str` ahora admiten escapes de " "``\\u`` and ``\\U`` ." @@ -3654,15 +3835,15 @@ msgstr "" ":meth:`~sched.scheduler.run` ahora acepta un parámetro *blocking* que al " "configurarse en false, hace que el método ejecute los eventos planificados " "debido a la pronta expiración (si corresponde) y luego responde " -"inmediatamente. Esto es útil en caso de que quieras usar la :class:`~sched." -"scheduler` en aplicaciones sin bloqueo. (Contribución de Giampaolo Rodolà " -"in :issue:`13449`.)" +"inmediatamente. Esto es útil en caso de que quieras usar la " +":class:`~sched.scheduler` en aplicaciones sin bloqueo. (Contribución de " +"Giampaolo Rodolà in :issue:`13449`.)" #: ../Doc/whatsnew/3.3.rst:1753 msgid "" ":class:`~sched.scheduler` class can now be safely used in multi-threaded " -"environments. (Contributed by Josiah Carlson and Giampaolo Rodolà in :issue:" -"`8684`.)" +"environments. (Contributed by Josiah Carlson and Giampaolo Rodolà in " +":issue:`8684`.)" msgstr "" "La clase :class:`~sched.scheduler` ahora se puede utilizar de forma segura " "en entornos multiproceso. (Contribución por Josiah Carlson y Giampaolo " @@ -3671,32 +3852,34 @@ msgstr "" #: ../Doc/whatsnew/3.3.rst:1757 msgid "" "*timefunc* and *delayfunct* parameters of :class:`~sched.scheduler` class " -"constructor are now optional and defaults to :func:`time.time` and :func:" -"`time.sleep` respectively. (Contributed by Chris Clark in :issue:`13245`.)" +"constructor are now optional and defaults to :func:`time.time` and " +":func:`time.sleep` respectively. (Contributed by Chris Clark in " +":issue:`13245`.)" msgstr "" -"Los parámetros *timefunc* y *delayfunct* del constructor de la clase :class:" -"`~sched.scheduler` ahora son opcionales y tienen el valor predeterminado :" -"func:`time.time` y :func:`time.sleep` respectivamente. (Contribución de " -"Chris Clark en :issue:`13245`.)" +"Los parámetros *timefunc* y *delayfunct* del constructor de la clase " +":class:`~sched.scheduler` ahora son opcionales y tienen el valor " +"predeterminado :func:`time.time` y :func:`time.sleep` respectivamente. " +"(Contribución de Chris Clark en :issue:`13245`.)" #: ../Doc/whatsnew/3.3.rst:1762 msgid "" ":meth:`~sched.scheduler.enter` and :meth:`~sched.scheduler.enterabs` " -"*argument* parameter is now optional. (Contributed by Chris Clark in :issue:" -"`13245`.)" +"*argument* parameter is now optional. (Contributed by Chris Clark in " +":issue:`13245`.)" msgstr "" -"El parámetro *argument* de :meth:`~sched.scheduler.enter` and :meth:`~sched." -"scheduler.enterabs` ahora es opcional. (Contribución de Chris Clark en :" -"issue:`13245`.)" +"El parámetro *argument* de :meth:`~sched.scheduler.enter` and " +":meth:`~sched.scheduler.enterabs` ahora es opcional. (Contribución de Chris" +" Clark en :issue:`13245`.)" #: ../Doc/whatsnew/3.3.rst:1766 msgid "" ":meth:`~sched.scheduler.enter` and :meth:`~sched.scheduler.enterabs` now " -"accept a *kwargs* parameter. (Contributed by Chris Clark in :issue:`13245`.)" +"accept a *kwargs* parameter. (Contributed by Chris Clark in " +":issue:`13245`.)" msgstr "" ":meth:`~sched.scheduler.enter` y :meth:`~sched.scheduler.enterabs` ahora " -"aceptan un parámetro *kwargs*. (Contribución de Chris Clark en :issue:" -"`13245`.)" +"aceptan un parámetro *kwargs*. (Contribución de Chris Clark en " +":issue:`13245`.)" #: ../Doc/whatsnew/3.3.rst:1772 msgid "select" @@ -3708,26 +3891,27 @@ msgid "" "for high performance asynchronous sockets via :file:`/dev/poll`. " "(Contributed by Jesús Cea Avión in :issue:`6397`.)" msgstr "" -"Solaris y plataformas derivadas tienen una nueva clase :class:`select." -"devpoll` para sockets asincrónicos de alto rendimiento a través de :file:`/" -"dev/poll`. (Contribución de Jesús Cea Avión en :issue:`6397`.)" +"Solaris y plataformas derivadas tienen una nueva clase " +":class:`select.devpoll` para sockets asincrónicos de alto rendimiento a " +"través de :file:`/dev/poll`. (Contribución de Jesús Cea Avión en " +":issue:`6397`.)" #: ../Doc/whatsnew/3.3.rst:1780 msgid "shlex" msgstr "shlex" #: ../Doc/whatsnew/3.3.rst:1782 -#, fuzzy msgid "" -"The previously undocumented helper function ``quote`` from the :mod:`!pipes` " -"modules has been moved to the :mod:`shlex` module and documented. :func:" -"`~shlex.quote` properly escapes all characters in a string that might be " -"otherwise given special meaning by the shell." +"The previously undocumented helper function ``quote`` from the :mod:`!pipes`" +" modules has been moved to the :mod:`shlex` module and documented. " +":func:`~shlex.quote` properly escapes all characters in a string that might " +"be otherwise given special meaning by the shell." msgstr "" -"La función auxiliar previamente indocumentada ``quote`` de los módulos :mod:" -"`pipes` se ha movido al módulo :mod:`shlex` y se ha documentado. :func:" -"`~shlex.quote` escapa correctamente a todos los caracteres de una cadena " -"que de otro modo podría tener un significado especial por el shell." +"La función auxiliar ``quote``, que anteriormente no estaba documentada, de " +"los módulos :mod:`!pipes` se ha trasladado al módulo :mod:`shlex` y se ha " +"documentado. :func:`~shlex.quote` escapa correctamente todos los caracteres " +"de una cadena a la que, de otro modo, el shell podría asignarle un " +"significado especial." #: ../Doc/whatsnew/3.3.rst:1789 msgid "shutil" @@ -3742,9 +3926,9 @@ msgid "" ":func:`~shutil.disk_usage`: provides total, used and free disk space " "statistics. (Contributed by Giampaolo Rodolà in :issue:`12442`.)" msgstr "" -":func:`~shutil.disk_usage`: Proporciona estadísticas sobre el espacio total, " -"usado, y libre en el disco. (Contribución de Giampaolo Rodolà in :issue:" -"`12442`.)" +":func:`~shutil.disk_usage`: Proporciona estadísticas sobre el espacio total," +" usado, y libre en el disco. (Contribución de Giampaolo Rodolà in " +":issue:`12442`.)" #: ../Doc/whatsnew/3.3.rst:1795 msgid "" @@ -3758,8 +3942,8 @@ msgstr "" #: ../Doc/whatsnew/3.3.rst:1798 msgid "" -":func:`shutil.get_terminal_size`: returns the size of the terminal window to " -"which the interpreter is attached. (Contributed by Zbigniew Jędrzejewski-" +":func:`shutil.get_terminal_size`: returns the size of the terminal window to" +" which the interpreter is attached. (Contributed by Zbigniew Jędrzejewski-" "Szmek in :issue:`13609`.)" msgstr "" ":func:`shutil.get_terminal_size`: Retorna el tamaño de la ventana del " @@ -3769,14 +3953,15 @@ msgstr "" #: ../Doc/whatsnew/3.3.rst:1802 msgid "" ":func:`~shutil.copy2` and :func:`~shutil.copystat` now preserve file " -"timestamps with nanosecond precision on platforms that support it. They also " -"preserve file \"extended attributes\" on Linux. (Contributed by Larry " +"timestamps with nanosecond precision on platforms that support it. They also" +" preserve file \"extended attributes\" on Linux. (Contributed by Larry " "Hastings in :issue:`14127` and :issue:`15238`.)" msgstr "" ":func:`~shutil.copy2` and :func:`~shutil.copystat` ahora conservan las " "marcas de tiempo de archivos con precisión de nanosegundos en plataformas " "que lo soporten. También conservan los \"atributos extendidos\" de archivo " -"en Linux (Contribución de Larry Hastings en :issue:`14127` y :issue:`15238`.)" +"en Linux (Contribución de Larry Hastings en :issue:`14127` y " +":issue:`15238`.)" #: ../Doc/whatsnew/3.3.rst:1807 msgid "" @@ -3786,9 +3971,9 @@ msgid "" "Hynek Schlawack in :issue:`12715`.)" msgstr "" "Algunas funciones ahora toman un argumento opcional de ``symlinks``: Cuando " -"ese parámetro es verdadero, los enlaces simbólicos no se desreferencian y la " -"operación actúa en el enlace simbólico en sí. (o crea uno, si es relevante). " -"(Contribución de Hynek Schlawack in :issue:`12715`.)" +"ese parámetro es verdadero, los enlaces simbólicos no se desreferencian y la" +" operación actúa en el enlace simbólico en sí. (o crea uno, si es " +"relevante). (Contribución de Hynek Schlawack in :issue:`12715`.)" #: ../Doc/whatsnew/3.3.rst:1812 msgid "" @@ -3800,22 +3985,22 @@ msgid "" msgstr "" "Al copiar archivos a un sistema de archivos diferente, :func:`~shutil.move` " "ahora gestiona los enlaces simbólicos de la forma que lo hace el comando " -"``mv`` de posix, recreando el enlace simbólico en vez de copiar el contenido " -"del archivo de destino. (Contribución de Jonathan Niehof en :issue:`9993`.) :" -"func:`~shutil.move` ahora también retorna el argumento ``dst`` como " +"``mv`` de posix, recreando el enlace simbólico en vez de copiar el contenido" +" del archivo de destino. (Contribución de Jonathan Niehof en :issue:`9993`.)" +" :func:`~shutil.move` ahora también retorna el argumento ``dst`` como " "resultado." #: ../Doc/whatsnew/3.3.rst:1818 msgid "" ":func:`~shutil.rmtree` is now resistant to symlink attacks on platforms " -"which support the new ``dir_fd`` parameter in :func:`os.open` and :func:`os." -"unlink`. (Contributed by Martin von Löwis and Hynek Schlawack in :issue:" -"`4489`.)" +"which support the new ``dir_fd`` parameter in :func:`os.open` and " +":func:`os.unlink`. (Contributed by Martin von Löwis and Hynek Schlawack in " +":issue:`4489`.)" msgstr "" ":func:`~shutil.rmtree` ahora es resistente a los ataques de enlaces " -"simbólicos en plataformas que admiten el nuevo parámetro ``dir_fd`` en :func:" -"`os.open` y :func:`os.unlink`. (Contribución de Martin von Löwis and Hynek " -"Schlawack in :issue:`4489`.)" +"simbólicos en plataformas que admiten el nuevo parámetro ``dir_fd`` en " +":func:`os.open` y :func:`os.unlink`. (Contribución de Martin von Löwis and " +"Hynek Schlawack in :issue:`4489`.)" #: ../Doc/whatsnew/3.3.rst:1825 msgid "signal" @@ -3885,21 +4070,21 @@ msgid "smtpd" msgstr "smtpd" #: ../Doc/whatsnew/3.3.rst:1850 -#, fuzzy msgid "" -"The :mod:`!smtpd` module now supports :rfc:`5321` (extended SMTP) and :rfc:" -"`1870` (size extension). Per the standard, these extensions are enabled if " -"and only if the client initiates the session with an ``EHLO`` command." +"The :mod:`!smtpd` module now supports :rfc:`5321` (extended SMTP) and " +":rfc:`1870` (size extension). Per the standard, these extensions are " +"enabled if and only if the client initiates the session with an ``EHLO`` " +"command." msgstr "" -"El módulo :mod:`smtpd` ahora admite :rfc:`5321` (SMTP extendido) y :rfc:" -"`1870` (Ampliación de tamaño). Por lo general, éstas extensiones están " -"habilitadas si y solo si el cliente inicia la sesión con un comando ``EHLO``." +"El módulo :mod:`!smtpd` ahora es compatible con :rfc:`5321` (SMTP extendido)" +" y :rfc:`1870` (extensión de tamaño). Según el estándar, estas extensiones " +"se habilitan solo si el cliente inicia la sesión con un comando ``EHLO``." #: ../Doc/whatsnew/3.3.rst:1854 msgid "" "(Initial ``ELHO`` support by Alberto Trevino. Size extension by Juhana " -"Jauhiainen. Substantial additional work on the patch contributed by Michele " -"Orrù and Dan Boswell. :issue:`8739`)" +"Jauhiainen. Substantial additional work on the patch contributed by Michele" +" Orrù and Dan Boswell. :issue:`8739`)" msgstr "" "Soporte inicial de ``ELHO`` de Alberto Treviño. Ampliación de tamaño por " "Juhana Jauhiainen. Trabajo adicional sustancial en la revisión aportada por " @@ -3911,14 +4096,14 @@ msgstr "smtplib" #: ../Doc/whatsnew/3.3.rst:1862 msgid "" -"The :class:`~smtplib.SMTP`, :class:`~smtplib.SMTP_SSL`, and :class:`~smtplib." -"LMTP` classes now accept a ``source_address`` keyword argument to specify " -"the ``(host, port)`` to use as the source address in the bind call when " -"creating the outgoing socket. (Contributed by Paulo Scardine in :issue:" -"`11281`.)" +"The :class:`~smtplib.SMTP`, :class:`~smtplib.SMTP_SSL`, and " +":class:`~smtplib.LMTP` classes now accept a ``source_address`` keyword " +"argument to specify the ``(host, port)`` to use as the source address in the" +" bind call when creating the outgoing socket. (Contributed by Paulo " +"Scardine in :issue:`11281`.)" msgstr "" -"Las clases :class:`~smtplib.SMTP`, :class:`~smtplib.SMTP_SSL`, y :class:" -"`~smtplib.LMTP` ahora aceptan un argumento de palabra clave " +"Las clases :class:`~smtplib.SMTP`, :class:`~smtplib.SMTP_SSL`, y " +":class:`~smtplib.LMTP` ahora aceptan un argumento de palabra clave " "``source_address``, para especificar el ``(host, port)`` a usar como " "dirección de origen en la llamada de enlace al crear el socket saliente. " "(Contribución de Paulo Scardine en :issue:`11281`.)" @@ -3935,14 +4120,15 @@ msgstr "" #: ../Doc/whatsnew/3.3.rst:1872 msgid "" -"The :class:`~smtplib.SMTP_SSL` constructor and the :meth:`~smtplib.SMTP." -"starttls` method now accept an SSLContext parameter to control parameters of " -"the secure channel. (Contributed by Kasun Herath in :issue:`8809`.)" +"The :class:`~smtplib.SMTP_SSL` constructor and the " +":meth:`~smtplib.SMTP.starttls` method now accept an SSLContext parameter to " +"control parameters of the secure channel. (Contributed by Kasun Herath in " +":issue:`8809`.)" msgstr "" -"El constructor :class:`~smtplib.SMTP_SSL` y el método :meth:`~smtplib.SMTP." -"starttls` ahora aceptan un parámetro SSLContext, para controlar los " -"parámetros del canal seguro. (Contribución por Kasun Herath en :issue:" -"`8809`.)" +"El constructor :class:`~smtplib.SMTP_SSL` y el método " +":meth:`~smtplib.SMTP.starttls` ahora aceptan un parámetro SSLContext, para " +"controlar los parámetros del canal seguro. (Contribución por Kasun Herath en" +" :issue:`8809`.)" #: ../Doc/whatsnew/3.3.rst:1878 msgid "socket" @@ -3980,32 +4166,32 @@ msgstr "" #: ../Doc/whatsnew/3.3.rst:1890 msgid "" "The :class:`~socket.socket` class now supports the PF_CAN protocol family " -"(https://en.wikipedia.org/wiki/Socketcan), on Linux (https://lwn.net/" -"Articles/253425)." +"(https://en.wikipedia.org/wiki/Socketcan), on Linux " +"(https://lwn.net/Articles/253425)." msgstr "" "La clase :class:`~socket.socket` ahora admite la familia del protocolo " -"PF_CAN (https://en.wikipedia.org/wiki/Socketcan), en Linux (https://lwn.net/" -"Articles/253425)." +"PF_CAN (https://en.wikipedia.org/wiki/Socketcan), en Linux " +"(https://lwn.net/Articles/253425)." #: ../Doc/whatsnew/3.3.rst:1894 msgid "" -"(Contributed by Matthias Fuchs, updated by Tiago Gonçalves in :issue:" -"`10141`.)" +"(Contributed by Matthias Fuchs, updated by Tiago Gonçalves in " +":issue:`10141`.)" msgstr "" -"(Contribución de Matthias Fuchs, actualizado por Tiago Gonçalves en :issue:" -"`10141`.)" +"(Contribución de Matthias Fuchs, actualizado por Tiago Gonçalves en " +":issue:`10141`.)" #: ../Doc/whatsnew/3.3.rst:1896 msgid "" "The :class:`~socket.socket` class now supports the PF_RDS protocol family " -"(https://en.wikipedia.org/wiki/Reliable_Datagram_Sockets and `https://oss." -"oracle.com/projects/rds `__)." +"(https://en.wikipedia.org/wiki/Reliable_Datagram_Sockets and " +"`https://oss.oracle.com/projects/rds " +"`__)." msgstr "" "La clase :class:`~socket.socket` ahora admite la familia de protocolos " -"PF_RDS (https://en.wikipedia.org/wiki/Reliable_Datagram_Sockets y `https://" -"oss.oracle.com/projects/rds `__)." +"PF_RDS (https://en.wikipedia.org/wiki/Reliable_Datagram_Sockets y " +"`https://oss.oracle.com/projects/rds " +"`__)." #: ../Doc/whatsnew/3.3.rst:1900 msgid "" @@ -4013,8 +4199,8 @@ msgid "" "family on OS X. (Contributed by Michael Goderbauer in :issue:`13777`.)" msgstr "" "La clase :class:`~socket.socket` ahora admite la familia del protocolo " -"``PF_SYSTEM`` en OS X. (Contribución de Michael Goderbauer en :issue:" -"`13777`.)" +"``PF_SYSTEM`` en OS X. (Contribución de Michael Goderbauer en " +":issue:`13777`.)" #: ../Doc/whatsnew/3.3.rst:1903 msgid "" @@ -4022,8 +4208,8 @@ msgid "" "Unix systems if the calling process has sufficient privileges. (Contributed " "by Ross Lagerwall in :issue:`10866`.)" msgstr "" -"La nueva función :func:`~socket.sethostname` permite establecer el nombre de " -"host en sistemas Unix si el proceso de llamada tiene suficientes " +"La nueva función :func:`~socket.sethostname` permite establecer el nombre de" +" host en sistemas Unix si el proceso de llamada tiene suficientes " "privilegios. (Aportado por Ross Lagerwall en :issue:`10866`.)" #: ../Doc/whatsnew/3.3.rst:1909 @@ -4032,17 +4218,18 @@ msgstr "socketserver" #: ../Doc/whatsnew/3.3.rst:1911 msgid "" -":class:`~socketserver.BaseServer` now has an overridable method :meth:" -"`~socketserver.BaseServer.service_actions` that is called by the :meth:" -"`~socketserver.BaseServer.serve_forever` method in the service loop. :class:" -"`~socketserver.ForkingMixIn` now uses this to clean up zombie child " +":class:`~socketserver.BaseServer` now has an overridable method " +":meth:`~socketserver.BaseServer.service_actions` that is called by the " +":meth:`~socketserver.BaseServer.serve_forever` method in the service loop. " +":class:`~socketserver.ForkingMixIn` now uses this to clean up zombie child " "processes. (Contributed by Justin Warkentin in :issue:`11109`.)" msgstr "" -":class:`~socketserver.BaseServer` ahora tiene un método reemplazable :meth:" -"`~socketserver.BaseServer.service_actions` que es llamado por el método :" -"meth:`~socketserver.BaseServer.serve_forever` en el ciclo del servicio. :" -"class:`~socketserver.ForkingMixIn` ahora usa ésto para limpiar procesos " -"secundarios zombies. (Contribución de Justin Warkentin en :issue:`11109`.)" +":class:`~socketserver.BaseServer` ahora tiene un método reemplazable " +":meth:`~socketserver.BaseServer.service_actions` que es llamado por el " +"método :meth:`~socketserver.BaseServer.serve_forever` en el ciclo del " +"servicio. :class:`~socketserver.ForkingMixIn` ahora usa ésto para limpiar " +"procesos secundarios zombies. (Contribución de Justin Warkentin en " +":issue:`11109`.)" #: ../Doc/whatsnew/3.3.rst:1919 msgid "sqlite3" @@ -4050,14 +4237,15 @@ msgstr "sqlite3" #: ../Doc/whatsnew/3.3.rst:1921 msgid "" -"New :class:`sqlite3.Connection` method :meth:`~sqlite3.Connection." -"set_trace_callback` can be used to capture a trace of all sql commands " -"processed by sqlite. (Contributed by Torsten Landschoff in :issue:`11688`.)" +"New :class:`sqlite3.Connection` method " +":meth:`~sqlite3.Connection.set_trace_callback` can be used to capture a " +"trace of all sql commands processed by sqlite. (Contributed by Torsten " +"Landschoff in :issue:`11688`.)" msgstr "" -"Nuevo método :class:`sqlite3.Connection` :meth:`~sqlite3.Connection." -"set_trace_callback` puede ser usado para capturar un rastro de todos los " -"comandos sql procesados por sqlite. (Contribución de Torsten Landschoff en :" -"issue:`11688`.)" +"Nuevo método :class:`sqlite3.Connection` " +":meth:`~sqlite3.Connection.set_trace_callback` puede ser usado para capturar" +" un rastro de todos los comandos sql procesados por sqlite. (Contribución de" +" Torsten Landschoff en :issue:`11688`.)" #: ../Doc/whatsnew/3.3.rst:1928 msgid "ssl" @@ -4086,34 +4274,34 @@ msgstr "(Contribución de Victor Stinner en :issue:`12049`.)" #: ../Doc/whatsnew/3.3.rst:1938 msgid "" "The :mod:`ssl` module now exposes a finer-grained exception hierarchy in " -"order to make it easier to inspect the various kinds of errors. (Contributed " -"by Antoine Pitrou in :issue:`11183`.)" +"order to make it easier to inspect the various kinds of errors. (Contributed" +" by Antoine Pitrou in :issue:`11183`.)" msgstr "" -"El módulo :mod:`ssl` ahora expone una jerarquía de excepciones más detallada " -"para facilitar la inspección de varias clases de errores. (Contribución de " +"El módulo :mod:`ssl` ahora expone una jerarquía de excepciones más detallada" +" para facilitar la inspección de varias clases de errores. (Contribución de " "Antoine Pitrou en :issue:`11183`.)" #: ../Doc/whatsnew/3.3.rst:1942 msgid "" -":meth:`~ssl.SSLContext.load_cert_chain` now accepts a *password* argument to " -"be used if the private key is encrypted. (Contributed by Adam Simpkins in :" -"issue:`12803`.)" +":meth:`~ssl.SSLContext.load_cert_chain` now accepts a *password* argument to" +" be used if the private key is encrypted. (Contributed by Adam Simpkins in " +":issue:`12803`.)" msgstr "" -":meth:`~ssl.SSLContext.load_cert_chain` ahora acepta un argumento *password* " -"que será usado si la clave privada es encriptada. (Contribución de Adam " +":meth:`~ssl.SSLContext.load_cert_chain` ahora acepta un argumento *password*" +" que será usado si la clave privada es encriptada. (Contribución de Adam " "Simpkins en :issue:`12803`.)" #: ../Doc/whatsnew/3.3.rst:1946 msgid "" "Diffie-Hellman key exchange, both regular and Elliptic Curve-based, is now " -"supported through the :meth:`~ssl.SSLContext.load_dh_params` and :meth:`~ssl." -"SSLContext.set_ecdh_curve` methods. (Contributed by Antoine Pitrou in :issue:" -"`13626` and :issue:`13627`.)" +"supported through the :meth:`~ssl.SSLContext.load_dh_params` and " +":meth:`~ssl.SSLContext.set_ecdh_curve` methods. (Contributed by Antoine " +"Pitrou in :issue:`13626` and :issue:`13627`.)" msgstr "" -"El intercambio de claves Diffie-Hellman, tanto regular como basado en curvas " -"elípticas, ahora se admite a través de los métodos :meth:`~ ssl.SSLContext." -"load_dh_params` y :meth:`~ssl.SSLContext.set_ecdh_curve`. (Contribución de " -"Antoine Pitrou en :issue:`13626` y :issue:`13627`.)" +"El intercambio de claves Diffie-Hellman, tanto regular como basado en curvas" +" elípticas, ahora se admite a través de los métodos :meth:`~ " +"ssl.SSLContext.load_dh_params` y :meth:`~ssl.SSLContext.set_ecdh_curve`. " +"(Contribución de Antoine Pitrou en :issue:`13626` y :issue:`13627`.)" #: ../Doc/whatsnew/3.3.rst:1951 msgid "" @@ -4121,17 +4309,17 @@ msgid "" "allowing the implementation of certain authentication mechanisms such as " "SCRAM-SHA-1-PLUS. (Contributed by Jacek Konieczny in :issue:`12551`.)" msgstr "" -"Los sockets SSL tienen un nuevo método :meth:`~ssl.SSLSocket." -"get_channel_binding` que permite la implementación de ciertos mecanismos de " -"autenticación tales como SCRAM-SHA-1-PLUS. (Contribución por Jacek Konieczny " -"en :issue:`12551`.)" +"Los sockets SSL tienen un nuevo método " +":meth:`~ssl.SSLSocket.get_channel_binding` que permite la implementación de " +"ciertos mecanismos de autenticación tales como SCRAM-SHA-1-PLUS. " +"(Contribución por Jacek Konieczny en :issue:`12551`.)" #: ../Doc/whatsnew/3.3.rst:1955 msgid "" -"You can query the SSL compression algorithm used by an SSL socket, thanks to " -"its new :meth:`~ssl.SSLSocket.compression` method. The new attribute :const:" -"`~ssl.OP_NO_COMPRESSION` can be used to disable compression. (Contributed by " -"Antoine Pitrou in :issue:`13634`.)" +"You can query the SSL compression algorithm used by an SSL socket, thanks to" +" its new :meth:`~ssl.SSLSocket.compression` method. The new attribute " +":const:`~ssl.OP_NO_COMPRESSION` can be used to disable compression. " +"(Contributed by Antoine Pitrou in :issue:`13634`.)" msgstr "" "Puedes consultar el algoritmo de compresión SSL usado por un socket SSL, " "gracias a su nuevo método :meth:`~ssl.SSLSocket.compression`. El nuevo " @@ -4141,9 +4329,9 @@ msgstr "" # traduzco next protocol negotution? 3860 #: ../Doc/whatsnew/3.3.rst:1960 msgid "" -"Support has been added for the Next Protocol Negotiation extension using " -"the :meth:`ssl.SSLContext.set_npn_protocols` method. (Contributed by Colin " -"Marc in :issue:`14204`.)" +"Support has been added for the Next Protocol Negotiation extension using the" +" :meth:`ssl.SSLContext.set_npn_protocols` method. (Contributed by Colin Marc" +" in :issue:`14204`.)" msgstr "" "Se ha agregado soporte para la extensión *Next Protocol Negotiation* usando " "el método :meth:`ssl.SSLContext.set_npn_protocols`. (Contribución por Colin " @@ -4151,9 +4339,9 @@ msgstr "" #: ../Doc/whatsnew/3.3.rst:1964 msgid "" -"SSL errors can now be introspected more easily thanks to :attr:`~ssl." -"SSLError.library` and :attr:`~ssl.SSLError.reason` attributes. (Contributed " -"by Antoine Pitrou in :issue:`14837`.)" +"SSL errors can now be introspected more easily thanks to " +":attr:`~ssl.SSLError.library` and :attr:`~ssl.SSLError.reason` attributes. " +"(Contributed by Antoine Pitrou in :issue:`14837`.)" msgstr "" "Los errores de SSL ahora pueden introspectarse más fácilmente gracias a los " "atributos :attr:`~ssl.SSLError.library` y :attr:`~ssl.SSLError.reason`. " @@ -4169,14 +4357,14 @@ msgstr "" #: ../Doc/whatsnew/3.3.rst:1971 msgid "" -"New attribute :const:`~ssl.OP_CIPHER_SERVER_PREFERENCE` allows setting SSLv3 " -"server sockets to use the server's cipher ordering preference rather than " +"New attribute :const:`~ssl.OP_CIPHER_SERVER_PREFERENCE` allows setting SSLv3" +" server sockets to use the server's cipher ordering preference rather than " "the client's (:issue:`13635`)." msgstr "" "El nuevo atributo :const:`~ssl.OP_CIPHER_SERVER_PREFERENCE` permite " "configurar los sockets del servidor SSLv3 para usar la preferencia de " -"ordenación de cifrado del servidor en lugar de la del cliente. (:issue:" -"`13635`)." +"ordenación de cifrado del servidor en lugar de la del cliente. " +"(:issue:`13635`)." #: ../Doc/whatsnew/3.3.rst:1977 msgid "stat" @@ -4184,13 +4372,13 @@ msgstr "stat" #: ../Doc/whatsnew/3.3.rst:1979 msgid "" -"The undocumented tarfile.filemode function has been moved to :func:`stat." -"filemode`. It can be used to convert a file's mode to a string of the form '-" -"rwxrwxrwx'." +"The undocumented tarfile.filemode function has been moved to " +":func:`stat.filemode`. It can be used to convert a file's mode to a string " +"of the form '-rwxrwxrwx'." msgstr "" -"La función indocumentada tarfile.filemode ha sido movida a :func:`stat." -"filemode`. Este puede ser usado para convertir el modo de un archivo a una " -"cadena de la forma '-rwxrwxrwx'." +"La función indocumentada tarfile.filemode ha sido movida a " +":func:`stat.filemode`. Este puede ser usado para convertir el modo de un " +"archivo a una cadena de la forma '-rwxrwxrwx'." #: ../Doc/whatsnew/3.3.rst:1983 msgid "(Contributed by Giampaolo Rodolà in :issue:`14807`.)" @@ -4202,13 +4390,13 @@ msgstr "struct" #: ../Doc/whatsnew/3.3.rst:1989 msgid "" -"The :mod:`struct` module now supports :c:type:`ssize_t` and :c:type:`size_t` " -"via the new codes ``n`` and ``N``, respectively. (Contributed by Antoine " +"The :mod:`struct` module now supports :c:type:`ssize_t` and :c:type:`size_t`" +" via the new codes ``n`` and ``N``, respectively. (Contributed by Antoine " "Pitrou in :issue:`3163`.)" msgstr "" "El módulo :mod:`struct` ahora admite :c:type:`ssize_t` y :c:type:`size_t` a " -"través de los nuevos códigos ``n`` and ``N``, respectivamente. (Contribución " -"de Antoine Pitrou en :issue:`3163`.)" +"través de los nuevos códigos ``n`` and ``N``, respectivamente. (Contribución" +" de Antoine Pitrou en :issue:`3163`.)" #: ../Doc/whatsnew/3.3.rst:1995 msgid "subprocess" @@ -4225,12 +4413,12 @@ msgstr "" #: ../Doc/whatsnew/3.3.rst:2000 msgid "" "A new constant :const:`~subprocess.DEVNULL` allows suppressing output in a " -"platform-independent fashion. (Contributed by Ross Lagerwall in :issue:" -"`5870`.)" +"platform-independent fashion. (Contributed by Ross Lagerwall in " +":issue:`5870`.)" msgstr "" "Una nueva constante :const:`~subprocess.DEVNULL` permite suprimir la salida " -"de forma independiente de la plataforma. (Contribución de Ross Lagerwall en :" -"issue:`5870`.)" +"de forma independiente de la plataforma. (Contribución de Ross Lagerwall en " +":issue:`5870`.)" #: ../Doc/whatsnew/3.3.rst:2006 msgid "sys" @@ -4238,12 +4426,12 @@ msgstr "sys" #: ../Doc/whatsnew/3.3.rst:2008 msgid "" -"The :mod:`sys` module has a new :data:`~sys.thread_info` :term:`named tuple` " -"holding information about the thread implementation (:issue:`11223`)." +"The :mod:`sys` module has a new :data:`~sys.thread_info` :term:`named tuple`" +" holding information about the thread implementation (:issue:`11223`)." msgstr "" "El módulo :mod:`sys` tiene un nuevo :data:`~sys.thread_info` :term:`named " -"tuple` que almacena información sobre la implementación del hilo (:issue:" -"`11223`)." +"tuple` que almacena información sobre la implementación del hilo " +"(:issue:`11223`)." #: ../Doc/whatsnew/3.3.rst:2014 msgid "tarfile" @@ -4254,8 +4442,8 @@ msgid "" ":mod:`tarfile` now supports ``lzma`` encoding via the :mod:`lzma` module. " "(Contributed by Lars Gustäbel in :issue:`5689`.)" msgstr "" -":mod:`tarfile` ahora admite la codificación ``lzma`` a través del módulo :" -"mod:`lzma`. (Contribución de Lars Gustäbel en :issue:`5689`.)" +":mod:`tarfile` ahora admite la codificación ``lzma`` a través del módulo " +":mod:`lzma`. (Contribución de Lars Gustäbel en :issue:`5689`.)" #: ../Doc/whatsnew/3.3.rst:2021 msgid "tempfile" @@ -4263,13 +4451,13 @@ msgstr "tempfile" #: ../Doc/whatsnew/3.3.rst:2023 msgid "" -":class:`tempfile.SpooledTemporaryFile`\\'s :meth:`~tempfile." -"SpooledTemporaryFile.truncate` method now accepts a ``size`` parameter. " -"(Contributed by Ryan Kelly in :issue:`9957`.)" +":class:`tempfile.SpooledTemporaryFile`\\'s " +":meth:`~tempfile.SpooledTemporaryFile.truncate` method now accepts a " +"``size`` parameter. (Contributed by Ryan Kelly in :issue:`9957`.)" msgstr "" -"El método :class:`tempfile.SpooledTemporaryFile`\\'s :meth:`~tempfile." -"SpooledTemporaryFile.truncate` ahora acepta un parámetro ``size``. " -"(Contribución de Ryan Kelly en :issue:`9957`.)" +"El método :class:`tempfile.SpooledTemporaryFile`\\'s " +":meth:`~tempfile.SpooledTemporaryFile.truncate` ahora acepta un parámetro " +"``size``. (Contribución de Ryan Kelly en :issue:`9957`.)" #: ../Doc/whatsnew/3.3.rst:2029 msgid "textwrap" @@ -4278,12 +4466,12 @@ msgstr "textwrap" #: ../Doc/whatsnew/3.3.rst:2031 msgid "" "The :mod:`textwrap` module has a new :func:`~textwrap.indent` that makes it " -"straightforward to add a common prefix to selected lines in a block of text " -"(:issue:`13857`)." +"straightforward to add a common prefix to selected lines in a block of text" +" (:issue:`13857`)." msgstr "" "El módulo :mod:`textwrap` tiene una nueva función :func:`~textwrap.indent` " -"que facilita la adición de un prefijo común para las lineas seleccionadas en " -"un bloque de texto (:issue:`13857`)." +"que facilita la adición de un prefijo común para las lineas seleccionadas en" +" un bloque de texto (:issue:`13857`)." #: ../Doc/whatsnew/3.3.rst:2037 msgid "threading" @@ -4291,16 +4479,16 @@ msgstr "threading" #: ../Doc/whatsnew/3.3.rst:2039 msgid "" -":class:`threading.Condition`, :class:`threading.Semaphore`, :class:" -"`threading.BoundedSemaphore`, :class:`threading.Event`, and :class:" -"`threading.Timer`, all of which used to be factory functions returning a " -"class instance, are now classes and may be subclassed. (Contributed by Éric " -"Araujo in :issue:`10968`.)" +":class:`threading.Condition`, :class:`threading.Semaphore`, " +":class:`threading.BoundedSemaphore`, :class:`threading.Event`, and " +":class:`threading.Timer`, all of which used to be factory functions " +"returning a class instance, are now classes and may be subclassed. " +"(Contributed by Éric Araujo in :issue:`10968`.)" msgstr "" -":class:`threading.Condition`, :class:`threading.Semaphore`, :class:" -"`threading.BoundedSemaphore`, :class:`threading.Event`, y :class:`threading." -"Timer`, todas las cuales son usadas para ser funciones de fábrica que " -"retornen una instancia de clase, ahora son clases y pueden ser " +":class:`threading.Condition`, :class:`threading.Semaphore`, " +":class:`threading.BoundedSemaphore`, :class:`threading.Event`, y " +":class:`threading.Timer`, todas las cuales son usadas para ser funciones de " +"fábrica que retornen una instancia de clase, ahora son clases y pueden ser " "subclasificadas (Contribución de Éric Araujo in :issue:`10968`.)" #: ../Doc/whatsnew/3.3.rst:2045 @@ -4322,10 +4510,10 @@ msgid "" "that used ``_thread.get_ident`` should likewise be changed to use the new " "public interface." msgstr "" -"La función anteriormente privada ``_thread.get_ident`` ahora está disponible " -"como función pública :func:`threading.get_ident`. Ésto elimina varios casos " -"de acceso directo al módulo ``_thread`` en el stdlib. El código de terceros " -"que usaba ``_thread.get_ident`` debería de igual forma ser cambiado para " +"La función anteriormente privada ``_thread.get_ident`` ahora está disponible" +" como función pública :func:`threading.get_ident`. Ésto elimina varios casos" +" de acceso directo al módulo ``_thread`` en el stdlib. El código de terceros" +" que usaba ``_thread.get_ident`` debería de igual forma ser cambiado para " "usar la nueva interfaz pública." #: ../Doc/whatsnew/3.3.rst:2057 @@ -4345,8 +4533,8 @@ msgid "" ":func:`~time.monotonic`: Monotonic clock (cannot go backward), not affected " "by system clock updates." msgstr "" -":func:`~time.monotonic`: Reloj monotónico (no se puede retroceder), no se ve " -"afectado por la actualización del reloj del sistema." +":func:`~time.monotonic`: Reloj monotónico (no se puede retroceder), no se ve" +" afectado por la actualización del reloj del sistema." #: ../Doc/whatsnew/3.3.rst:2064 msgid "" @@ -4361,8 +4549,8 @@ msgid "" ":func:`~time.process_time`: Sum of the system and user CPU time of the " "current process." msgstr "" -":func:`~time.process_time`: Suma del tiempo de CPU del sistema y del usuario " -"del proceso actual." +":func:`~time.process_time`: Suma del tiempo de CPU del sistema y del usuario" +" del proceso actual." #: ../Doc/whatsnew/3.3.rst:2069 msgid "Other new functions:" @@ -4370,24 +4558,24 @@ msgstr "Otras nuevas funciones:" #: ../Doc/whatsnew/3.3.rst:2071 msgid "" -":func:`~time.clock_getres`, :func:`~time.clock_gettime` and :func:`~time." -"clock_settime` functions with :samp:`CLOCK_{xxx}` constants. (Contributed by " -"Victor Stinner in :issue:`10278`.)" +":func:`~time.clock_getres`, :func:`~time.clock_gettime` and " +":func:`~time.clock_settime` functions with :samp:`CLOCK_{xxx}` constants. " +"(Contributed by Victor Stinner in :issue:`10278`.)" msgstr "" -"Las funciones :func:`~time.clock_getres`, :func:`~time.clock_gettime` y :" -"func:`~time.clock_settime` con constantes :samp:`CLOCK_{xxx}` (Contribución " -"de Victor Stinner in :issue:`10278`.)" +"Las funciones :func:`~time.clock_getres`, :func:`~time.clock_gettime` y " +":func:`~time.clock_settime` con constantes :samp:`CLOCK_{xxx}` (Contribución" +" de Victor Stinner in :issue:`10278`.)" #: ../Doc/whatsnew/3.3.rst:2075 msgid "" -"To improve cross platform consistency, :func:`~time.sleep` now raises a :exc:" -"`ValueError` when passed a negative sleep value. Previously this was an " -"error on posix, but produced an infinite sleep on Windows." +"To improve cross platform consistency, :func:`~time.sleep` now raises a " +":exc:`ValueError` when passed a negative sleep value. Previously this was " +"an error on posix, but produced an infinite sleep on Windows." msgstr "" -"Para mejorar la consistencia entre plataformas, la función :func:`~time." -"sleep` ahora lanza un :exc:`ValueError` cuando se le pasa un valor negativo. " -"Esto era anteriormente un error en posix, pero producía una suspensión " -"definitiva en windows." +"Para mejorar la consistencia entre plataformas, la función " +":func:`~time.sleep` ahora lanza un :exc:`ValueError` cuando se le pasa un " +"valor negativo. Esto era anteriormente un error en posix, pero producía una " +"suspensión definitiva en windows." #: ../Doc/whatsnew/3.3.rst:2081 msgid "types" @@ -4404,12 +4592,12 @@ msgstr "" #: ../Doc/whatsnew/3.3.rst:2087 msgid "" "The new functions :func:`types.new_class` and :func:`types.prepare_class` " -"provide support for :pep:`3115` compliant dynamic type creation. (:issue:" -"`14588`)" +"provide support for :pep:`3115` compliant dynamic type creation. " +"(:issue:`14588`)" msgstr "" "Las nuevas funciones :func:`types.new_class` y :func:`types.prepare_class` " -"proporcionan soporte para la creación de tipos dinámicos compatibles. (:" -"issue:`14588`)" +"proporcionan soporte para la creación de tipos dinámicos compatibles. " +"(:issue:`14588`)" #: ../Doc/whatsnew/3.3.rst:2092 msgid "unittest" @@ -4417,14 +4605,14 @@ msgstr "unittest" #: ../Doc/whatsnew/3.3.rst:2094 msgid "" -":meth:`.assertRaises`, :meth:`.assertRaisesRegex`, :meth:`.assertWarns`, " -"and :meth:`.assertWarnsRegex` now accept a keyword argument *msg* when used " -"as context managers. (Contributed by Ezio Melotti and Winston Ewert in :" -"issue:`10775`.)" +":meth:`.assertRaises`, :meth:`.assertRaisesRegex`, :meth:`.assertWarns`, and" +" :meth:`.assertWarnsRegex` now accept a keyword argument *msg* when used as " +"context managers. (Contributed by Ezio Melotti and Winston Ewert in " +":issue:`10775`.)" msgstr "" -"Los métodos :meth:`.assertRaises`, :meth:`.assertRaisesRegex`, :meth:`." -"assertWarns`, y :meth:`.assertWarnsRegex` ahora aceptan un argumento de " -"palabra clave *msg* cuando son usados como administradores de contexto. " +"Los métodos :meth:`.assertRaises`, :meth:`.assertRaisesRegex`, " +":meth:`.assertWarns`, y :meth:`.assertWarnsRegex` ahora aceptan un argumento" +" de palabra clave *msg* cuando son usados como administradores de contexto. " "(Contribución por Ezio Melotti y Winston Ewert en :issue:`10775`.)" #: ../Doc/whatsnew/3.3.rst:2099 @@ -4432,8 +4620,8 @@ msgid "" ":meth:`unittest.TestCase.run` now returns the :class:`~unittest.TestResult` " "object." msgstr "" -":meth:`unittest.TestCase.run` ahora retorna el objeto :class:`~unittest." -"TestResult`." +":meth:`unittest.TestCase.run` ahora retorna el objeto " +":class:`~unittest.TestResult`." #: ../Doc/whatsnew/3.3.rst:2104 msgid "urllib" @@ -4445,14 +4633,14 @@ msgid "" "used by :meth:`~urllib.request.Request.get_method` to determine what HTTP " "method should be used. For example, this will send a ``'HEAD'`` request::" msgstr "" -"La clase :class:`~urllib.request.Request` ahora acepta un argumento *method* " -"usado por :meth:`~urllib.request.Request.get_method` para determinar que " +"La clase :class:`~urllib.request.Request` ahora acepta un argumento *method*" +" usado por :meth:`~urllib.request.Request.get_method` para determinar que " "método HTTP debería usarse. Por ejemplo, esto enviará una solicitud " "``'HEAD'``::" #: ../Doc/whatsnew/3.3.rst:2110 msgid ">>> urlopen(Request('https://www.python.org', method='HEAD'))" -msgstr "" +msgstr ">>> urlopen(Solicitud('https://www.python.org', método='HEAD'))" #: ../Doc/whatsnew/3.3.rst:2112 msgid "(:issue:`1673007`)" @@ -4465,20 +4653,20 @@ msgstr "webbrowser" #: ../Doc/whatsnew/3.3.rst:2118 msgid "" "The :mod:`webbrowser` module supports more \"browsers\": Google Chrome " -"(named :program:`chrome`, :program:`chromium`, :program:`chrome-browser` or :" -"program:`chromium-browser` depending on the version and operating system), " +"(named :program:`chrome`, :program:`chromium`, :program:`chrome-browser` or " +":program:`chromium-browser` depending on the version and operating system), " "and the generic launchers :program:`xdg-open`, from the FreeDesktop.org " "project, and :program:`gvfs-open`, which is the default URI handler for " -"GNOME 3. (The former contributed by Arnaud Calmettes in :issue:`13620`, the " -"latter by Matthias Klose in :issue:`14493`.)" +"GNOME 3. (The former contributed by Arnaud Calmettes in :issue:`13620`, the" +" latter by Matthias Klose in :issue:`14493`.)" msgstr "" "El módulo :mod:`webbrowser` admite más \"navegadores\": Google Chrome " "(llamado :program:`chrome`, :program:`chromium`, :program:`chrome-browser` " "or :program:`chromium-browser` dependiendo de la versión y del sistema " "operativo), y los lanzadores genéricos :program:`xdg-open`, del proyecto " "FreeDesktop.org, y :program:`gvfs-open`, el cual es el controlador URI " -"predeterminado para GNOME3. (El primero agregado por Arnaud Calmettes en :" -"issue:`13620`, el segundo por Matthias Klose en :issue:`14493`.)" +"predeterminado para GNOME3. (El primero agregado por Arnaud Calmettes en " +":issue:`13620`, el segundo por Matthias Klose en :issue:`14493`.)" #: ../Doc/whatsnew/3.3.rst:2128 msgid "xml.etree.ElementTree" @@ -4487,20 +4675,20 @@ msgstr "xml.etree.ElementTree" #: ../Doc/whatsnew/3.3.rst:2130 msgid "" "The :mod:`xml.etree.ElementTree` module now imports its C accelerator by " -"default; there is no longer a need to explicitly import :mod:`xml.etree." -"cElementTree` (this module stays for backwards compatibility, but is now " -"deprecated). In addition, the ``iter`` family of methods of :class:`~xml." -"etree.ElementTree.Element` has been optimized (rewritten in C). The module's " -"documentation has also been greatly improved with added examples and a more " -"detailed reference." +"default; there is no longer a need to explicitly import " +":mod:`xml.etree.cElementTree` (this module stays for backwards " +"compatibility, but is now deprecated). In addition, the ``iter`` family of" +" methods of :class:`~xml.etree.ElementTree.Element` has been optimized " +"(rewritten in C). The module's documentation has also been greatly improved " +"with added examples and a more detailed reference." msgstr "" "El módulo :mod:`xml.etree.ElementTree` ahora importa su acelerador C " -"predeterminado, ya no es necesario importar explícitamente :mod:`xml.etree." -"cElementTree` (Éste módulo permanece para compatibilidad con versiones " -"anteriores, pero ya está obsoleto). Además, la familia de métodos ``iter`` " -"de :class:`~xml.etree.ElementTree.Element` se ha optimizado (Reescrito en " -"C). La documentación del módulo también se ha mejorado mucho, con ejemplos " -"agregados y una referencia más detallada." +"predeterminado, ya no es necesario importar explícitamente " +":mod:`xml.etree.cElementTree` (Éste módulo permanece para compatibilidad con" +" versiones anteriores, pero ya está obsoleto). Además, la familia de métodos" +" ``iter`` de :class:`~xml.etree.ElementTree.Element` se ha optimizado " +"(Reescrito en C). La documentación del módulo también se ha mejorado mucho, " +"con ejemplos agregados y una referencia más detallada." #: ../Doc/whatsnew/3.3.rst:2140 msgid "zlib" @@ -4536,7 +4724,8 @@ msgstr "Se han agregado importantes mejoras de rendimiento:" #: ../Doc/whatsnew/3.3.rst:2156 msgid "" -"Thanks to :pep:`393`, some operations on Unicode strings have been optimized:" +"Thanks to :pep:`393`, some operations on Unicode strings have been " +"optimized:" msgstr "" "Gracias a :pep:`393`, algunas operaciones en las cadenas *Unicode* han sido " "optimizadas:" @@ -4562,22 +4751,23 @@ msgid "" "repeating a single ASCII letter and getting a substring of an ASCII string " "is 4 times faster" msgstr "" -"repetir una única letra ASCII y obtener una subcadena de una cadena ASCII es " -"4 veces más rápido" +"repetir una única letra ASCII y obtener una subcadena de una cadena ASCII es" +" 4 veces más rápido" #: ../Doc/whatsnew/3.3.rst:2165 -msgid "UTF-8 is now 2x to 4x faster. UTF-16 encoding is now up to 10x faster." +msgid "" +"UTF-8 is now 2x to 4x faster. UTF-16 encoding is now up to 10x faster." msgstr "" "UTF-8 ahora es 2x a 4x más rápido. La codificación UTF-16 ahora es 10x más " "rápida." #: ../Doc/whatsnew/3.3.rst:2167 msgid "" -"(Contributed by Serhiy Storchaka, :issue:`14624`, :issue:`14738` and :issue:" -"`15026`.)" +"(Contributed by Serhiy Storchaka, :issue:`14624`, :issue:`14738` and " +":issue:`15026`.)" msgstr "" -"(Contribución de Serhiy Storchaka, :issue:`14624`, :issue:`14738` y :issue:" -"`15026`.)" +"(Contribución de Serhiy Storchaka, :issue:`14624`, :issue:`14738` y " +":issue:`15026`.)" #: ../Doc/whatsnew/3.3.rst:2172 msgid "Build and C API Changes" @@ -4586,7 +4776,8 @@ msgstr "Construcción y cambios en la API de C" #: ../Doc/whatsnew/3.3.rst:2174 msgid "Changes to Python's build process and to the C API include:" msgstr "" -"Los cambios en el proceso de compilación de Python y en la API de C incluyen:" +"Los cambios en el proceso de compilación de Python y en la API de C " +"incluyen:" #: ../Doc/whatsnew/3.3.rst:2176 msgid "New :pep:`3118` related function:" @@ -4637,8 +4828,10 @@ msgid ":c:type:`Py_UCS1`, :c:type:`Py_UCS2`, :c:type:`Py_UCS4` types" msgstr "Tipos :c:type:`Py_UCS1`, :c:type:`Py_UCS2`, :c:type:`Py_UCS4`" #: ../Doc/whatsnew/3.3.rst:2194 -msgid ":c:type:`PyASCIIObject` and :c:type:`PyCompactUnicodeObject` structures" -msgstr "Estructuras :c:type:`PyASCIIObject` y :c:type:`PyCompactUnicodeObject`" +msgid "" +":c:type:`PyASCIIObject` and :c:type:`PyCompactUnicodeObject` structures" +msgstr "" +"Estructuras :c:type:`PyASCIIObject` y :c:type:`PyCompactUnicodeObject`" #: ../Doc/whatsnew/3.3.rst:2195 msgid ":c:macro:`PyUnicode_READY`" @@ -4654,29 +4847,29 @@ msgstr ":c:func:`PyUnicode_AsUCS4`, :c:func:`PyUnicode_AsUCS4Copy`" #: ../Doc/whatsnew/3.3.rst:2198 msgid "" -":c:macro:`PyUnicode_DATA`, :c:macro:`PyUnicode_1BYTE_DATA`, :c:macro:" -"`PyUnicode_2BYTE_DATA`, :c:macro:`PyUnicode_4BYTE_DATA`" +":c:macro:`PyUnicode_DATA`, :c:macro:`PyUnicode_1BYTE_DATA`, " +":c:macro:`PyUnicode_2BYTE_DATA`, :c:macro:`PyUnicode_4BYTE_DATA`" msgstr "" -":c:macro:`PyUnicode_DATA`, :c:macro:`PyUnicode_1BYTE_DATA`, :c:macro:" -"`PyUnicode_2BYTE_DATA`, :c:macro:`PyUnicode_4BYTE_DATA`" +":c:macro:`PyUnicode_DATA`, :c:macro:`PyUnicode_1BYTE_DATA`, " +":c:macro:`PyUnicode_2BYTE_DATA`, :c:macro:`PyUnicode_4BYTE_DATA`" #: ../Doc/whatsnew/3.3.rst:2200 msgid "" -":c:macro:`PyUnicode_KIND` with :c:enum:`PyUnicode_Kind` enum: :c:data:`!" -"PyUnicode_WCHAR_KIND`, :c:data:`PyUnicode_1BYTE_KIND`, :c:data:" -"`PyUnicode_2BYTE_KIND`, :c:data:`PyUnicode_4BYTE_KIND`" +":c:macro:`PyUnicode_KIND` with :c:enum:`PyUnicode_Kind` enum: " +":c:data:`!PyUnicode_WCHAR_KIND`, :c:data:`PyUnicode_1BYTE_KIND`, " +":c:data:`PyUnicode_2BYTE_KIND`, :c:data:`PyUnicode_4BYTE_KIND`" msgstr "" -":c:macro:`PyUnicode_KIND` con :c:enum:`PyUnicode_Kind` enum: :c:data:`!" -"PyUnicode_WCHAR_KIND`, :c:data:`PyUnicode_1BYTE_KIND`, :c:data:" -"`PyUnicode_2BYTE_KIND`, :c:data:`PyUnicode_4BYTE_KIND`" +":c:macro:`PyUnicode_KIND` con :c:enum:`PyUnicode_Kind` enum: " +":c:data:`!PyUnicode_WCHAR_KIND`, :c:data:`PyUnicode_1BYTE_KIND`, " +":c:data:`PyUnicode_2BYTE_KIND`, :c:data:`PyUnicode_4BYTE_KIND`" #: ../Doc/whatsnew/3.3.rst:2203 msgid "" -":c:macro:`PyUnicode_READ`, :c:macro:`PyUnicode_READ_CHAR`, :c:macro:" -"`PyUnicode_WRITE`" +":c:macro:`PyUnicode_READ`, :c:macro:`PyUnicode_READ_CHAR`, " +":c:macro:`PyUnicode_WRITE`" msgstr "" -":c:macro:`PyUnicode_READ`, :c:macro:`PyUnicode_READ_CHAR`, :c:macro:" -"`PyUnicode_WRITE`" +":c:macro:`PyUnicode_READ`, :c:macro:`PyUnicode_READ_CHAR`, " +":c:macro:`PyUnicode_WRITE`" #: ../Doc/whatsnew/3.3.rst:2204 msgid ":c:macro:`PyUnicode_MAX_CHAR_VALUE`" @@ -4732,8 +4925,8 @@ msgstr "" #: ../Doc/whatsnew/3.3.rst:2230 msgid "" -"The ``unicode_internal`` codec has been deprecated because of the :pep:" -"`393`, use UTF-8, UTF-16 (``utf-16-le`` or ``utf-16-be``), or UTF-32 " +"The ``unicode_internal`` codec has been deprecated because of the " +":pep:`393`, use UTF-8, UTF-16 (``utf-16-le`` or ``utf-16-be``), or UTF-32 " "(``utf-32-le`` or ``utf-32-be``)" msgstr "" "El códec ``unicode_internal`` quedó obsoleto a causa del :pep:`393`, use " @@ -4742,10 +4935,11 @@ msgstr "" #: ../Doc/whatsnew/3.3.rst:2233 msgid "" -":meth:`ftplib.FTP.nlst` and :meth:`ftplib.FTP.dir`: use :meth:`ftplib.FTP." -"mlsd`" +":meth:`ftplib.FTP.nlst` and :meth:`ftplib.FTP.dir`: use " +":meth:`ftplib.FTP.mlsd`" msgstr "" -":meth:`ftplib.FTP.nlst` y :meth:`ftplib.FTP.dir`: use :meth:`ftplib.FTP.mlsd`" +":meth:`ftplib.FTP.nlst` y :meth:`ftplib.FTP.dir`: use " +":meth:`ftplib.FTP.mlsd`" #: ../Doc/whatsnew/3.3.rst:2235 msgid "" @@ -4768,20 +4962,20 @@ msgstr "" #: ../Doc/whatsnew/3.3.rst:2240 msgid "" -":issue:`13988`: The :mod:`xml.etree.cElementTree` module is deprecated. The " -"accelerator is used automatically whenever available." +":issue:`13988`: The :mod:`xml.etree.cElementTree` module is deprecated. The" +" accelerator is used automatically whenever available." msgstr "" -":issue:`13988`: El módulo :mod:`xml.etree.cElementTree` ha quedado obsoleto. " -"El acelerador se utiliza automáticamente siempre que esté disponible." +":issue:`13988`: El módulo :mod:`xml.etree.cElementTree` ha quedado obsoleto." +" El acelerador se utiliza automáticamente siempre que esté disponible." #: ../Doc/whatsnew/3.3.rst:2242 msgid "" -"The behaviour of :func:`time.clock` depends on the platform: use the new :" -"func:`time.perf_counter` or :func:`time.process_time` function instead, " +"The behaviour of :func:`time.clock` depends on the platform: use the new " +":func:`time.perf_counter` or :func:`time.process_time` function instead, " "depending on your requirements, to have a well defined behaviour." msgstr "" -"El comportamiento de :func:`time.clock` depende de la plataforma: utilice la " -"nueva función :func:`time.perf_counter` o :func:`time.process_time` en su " +"El comportamiento de :func:`time.clock` depende de la plataforma: utilice la" +" nueva función :func:`time.perf_counter` o :func:`time.process_time` en su " "lugar, dependiendo de sus requerimientos, para tener un comportamiento bien " "definido." @@ -4799,10 +4993,10 @@ msgstr "paquete :mod:`importlib`:" #: ../Doc/whatsnew/3.3.rst:2257 msgid "" -":meth:`importlib.abc.SourceLoader.path_mtime` is now deprecated in favour " -"of :meth:`importlib.abc.SourceLoader.path_stats` as bytecode files now store " -"both the modification time and size of the source file the bytecode file was " -"compiled from." +":meth:`importlib.abc.SourceLoader.path_mtime` is now deprecated in favour of" +" :meth:`importlib.abc.SourceLoader.path_stats` as bytecode files now store " +"both the modification time and size of the source file the bytecode file was" +" compiled from." msgstr "" ":meth:`importlib.abc.SourceLoader.path_mtime` ha quedado obsoleto, a favor " "de :meth:`importlib.abc.SourceLoader.path_stats` ya que los archivos de " @@ -4824,43 +5018,45 @@ msgstr "" #: ../Doc/whatsnew/3.3.rst:2272 msgid "" -"Unicode functions and methods using :c:type:`Py_UNICODE` and :c:expr:" -"`Py_UNICODE*` types:" +"Unicode functions and methods using :c:type:`Py_UNICODE` and " +":c:expr:`Py_UNICODE*` types:" msgstr "" -"Funciones y métodos Unicode que utilizan los tipos :c:type:`Py_UNICODE` y :c:" -"expr:`Py_UNICODE*`:" +"Funciones y métodos Unicode que utilizan los tipos :c:type:`Py_UNICODE` y " +":c:expr:`Py_UNICODE*`:" #: ../Doc/whatsnew/3.3.rst:2275 msgid "" -":c:macro:`!PyUnicode_FromUnicode`: use :c:func:`PyUnicode_FromWideChar` or :" -"c:func:`PyUnicode_FromKindAndData`" +":c:macro:`!PyUnicode_FromUnicode`: use :c:func:`PyUnicode_FromWideChar` or " +":c:func:`PyUnicode_FromKindAndData`" msgstr "" -":c:macro:`!PyUnicode_FromUnicode`: use :c:func:`PyUnicode_FromWideChar` o :c:" -"func:`PyUnicode_FromKindAndData`" +":c:macro:`!PyUnicode_FromUnicode`: use :c:func:`PyUnicode_FromWideChar` o " +":c:func:`PyUnicode_FromKindAndData`" #: ../Doc/whatsnew/3.3.rst:2277 msgid "" -":c:macro:`!PyUnicode_AS_UNICODE`, :c:func:`!PyUnicode_AsUnicode`, :c:func:`!" -"PyUnicode_AsUnicodeAndSize`: use :c:func:`PyUnicode_AsWideCharString`" +":c:macro:`!PyUnicode_AS_UNICODE`, :c:func:`!PyUnicode_AsUnicode`, " +":c:func:`!PyUnicode_AsUnicodeAndSize`: use " +":c:func:`PyUnicode_AsWideCharString`" msgstr "" -":c:macro:`!PyUnicode_AS_UNICODE`, :c:func:`!PyUnicode_AsUnicode`, :c:func:`!" -"PyUnicode_AsUnicodeAndSize`: use :c:func:`PyUnicode_AsWideCharString`" +":c:macro:`!PyUnicode_AS_UNICODE`, :c:func:`!PyUnicode_AsUnicode`, " +":c:func:`!PyUnicode_AsUnicodeAndSize`: use " +":c:func:`PyUnicode_AsWideCharString`" #: ../Doc/whatsnew/3.3.rst:2279 msgid "" -":c:macro:`!PyUnicode_AS_DATA`: use :c:macro:`PyUnicode_DATA` with :c:macro:" -"`PyUnicode_READ` and :c:macro:`PyUnicode_WRITE`" +":c:macro:`!PyUnicode_AS_DATA`: use :c:macro:`PyUnicode_DATA` with " +":c:macro:`PyUnicode_READ` and :c:macro:`PyUnicode_WRITE`" msgstr "" -":c:macro:`!PyUnicode_AS_DATA`: use :c:macro:`PyUnicode_DATA` con :c:macro:" -"`PyUnicode_READ` y :c:macro:`PyUnicode_WRITE`" +":c:macro:`!PyUnicode_AS_DATA`: use :c:macro:`PyUnicode_DATA` con " +":c:macro:`PyUnicode_READ` y :c:macro:`PyUnicode_WRITE`" #: ../Doc/whatsnew/3.3.rst:2281 msgid "" -":c:macro:`!PyUnicode_GET_SIZE`, :c:func:`!PyUnicode_GetSize`: use :c:macro:" -"`PyUnicode_GET_LENGTH` or :c:func:`PyUnicode_GetLength`" +":c:macro:`!PyUnicode_GET_SIZE`, :c:func:`!PyUnicode_GetSize`: use " +":c:macro:`PyUnicode_GET_LENGTH` or :c:func:`PyUnicode_GetLength`" msgstr "" -":c:macro:`!PyUnicode_GET_SIZE`, :c:func:`!PyUnicode_GetSize`: use :c:macro:" -"`PyUnicode_GET_LENGTH` o :c:func:`PyUnicode_GetLength`" +":c:macro:`!PyUnicode_GET_SIZE`, :c:func:`!PyUnicode_GetSize`: use " +":c:macro:`PyUnicode_GET_LENGTH` o :c:func:`PyUnicode_GetLength`" #: ../Doc/whatsnew/3.3.rst:2283 msgid "" @@ -4872,11 +5068,11 @@ msgstr "" #: ../Doc/whatsnew/3.3.rst:2286 msgid "" -":c:func:`!PyUnicode_AsUnicodeCopy`: use :c:func:`PyUnicode_AsUCS4Copy` or :c:" -"func:`PyUnicode_AsWideCharString`" +":c:func:`!PyUnicode_AsUnicodeCopy`: use :c:func:`PyUnicode_AsUCS4Copy` or " +":c:func:`PyUnicode_AsWideCharString`" msgstr "" -":c:func:`!PyUnicode_AsUnicodeCopy`: use :c:func:`PyUnicode_AsUCS4Copy` o :c:" -"func:`PyUnicode_AsWideCharString`" +":c:func:`!PyUnicode_AsUnicodeCopy`: use :c:func:`PyUnicode_AsUCS4Copy` o " +":c:func:`PyUnicode_AsWideCharString`" #: ../Doc/whatsnew/3.3.rst:2288 msgid ":c:func:`!PyUnicode_GetMax`" @@ -4888,29 +5084,29 @@ msgstr "Funciones y macros que manipulen cadenas de caracteres Py_UNICODE*:" #: ../Doc/whatsnew/3.3.rst:2293 msgid "" -":c:macro:`!Py_UNICODE_strlen()`: use :c:func:`PyUnicode_GetLength` or :c:" -"macro:`PyUnicode_GET_LENGTH`" +":c:macro:`!Py_UNICODE_strlen()`: use :c:func:`PyUnicode_GetLength` or " +":c:macro:`PyUnicode_GET_LENGTH`" msgstr "" -":c:macro:`!Py_UNICODE_strlen`: use :c:func:`PyUnicode_GetLength` o :c:macro:" -"`PyUnicode_GET_LENGTH`" +":c:macro:`!Py_UNICODE_strlen`: use :c:func:`PyUnicode_GetLength` o " +":c:macro:`PyUnicode_GET_LENGTH`" #: ../Doc/whatsnew/3.3.rst:2295 msgid "" -":c:macro:`!Py_UNICODE_strcat()`: use :c:func:`PyUnicode_CopyCharacters` or :" -"c:func:`PyUnicode_FromFormat`" +":c:macro:`!Py_UNICODE_strcat()`: use :c:func:`PyUnicode_CopyCharacters` or " +":c:func:`PyUnicode_FromFormat`" msgstr "" -":c:macro:`!Py_UNICODE_strcat`: use :c:func:`PyUnicode_CopyCharacters` o :c:" -"func:`PyUnicode_FromFormat`" +":c:macro:`!Py_UNICODE_strcat`: use :c:func:`PyUnicode_CopyCharacters` o " +":c:func:`PyUnicode_FromFormat`" #: ../Doc/whatsnew/3.3.rst:2297 msgid "" -":c:macro:`!Py_UNICODE_strcpy()`, :c:macro:`!Py_UNICODE_strncpy()`, :c:macro:" -"`!Py_UNICODE_COPY()`: use :c:func:`PyUnicode_CopyCharacters` or :c:func:" -"`PyUnicode_Substring`" +":c:macro:`!Py_UNICODE_strcpy()`, :c:macro:`!Py_UNICODE_strncpy()`, " +":c:macro:`!Py_UNICODE_COPY()`: use :c:func:`PyUnicode_CopyCharacters` or " +":c:func:`PyUnicode_Substring`" msgstr "" -":c:macro:`!Py_UNICODE_strcpy`, :c:macro:`!Py_UNICODE_strncpy`, :c:macro:`!" -"Py_UNICODE_COPY`: use :c:func:`PyUnicode_CopyCharacters` o :c:func:" -"`PyUnicode_Substring`" +":c:macro:`!Py_UNICODE_strcpy`, :c:macro:`!Py_UNICODE_strncpy`, " +":c:macro:`!Py_UNICODE_COPY`: use :c:func:`PyUnicode_CopyCharacters` o " +":c:func:`PyUnicode_Substring`" #: ../Doc/whatsnew/3.3.rst:2300 msgid ":c:macro:`!Py_UNICODE_strcmp()`: use :c:func:`PyUnicode_Compare`" @@ -4922,11 +5118,11 @@ msgstr ":c:macro:`!Py_UNICODE_strncmp()`: use :c:func:`PyUnicode_Tailmatch`" #: ../Doc/whatsnew/3.3.rst:2302 msgid "" -":c:macro:`!Py_UNICODE_strchr()`, :c:macro:`!Py_UNICODE_strrchr()`: use :c:" -"func:`PyUnicode_FindChar`" +":c:macro:`!Py_UNICODE_strchr()`, :c:macro:`!Py_UNICODE_strrchr()`: use " +":c:func:`PyUnicode_FindChar`" msgstr "" -":c:macro:`!Py_UNICODE_strchr()`, :c:macro:`!Py_UNICODE_strrchr()`: use :c:" -"func:`PyUnicode_FindChar`" +":c:macro:`!Py_UNICODE_strchr()`, :c:macro:`!Py_UNICODE_strrchr()`: use " +":c:func:`PyUnicode_FindChar`" #: ../Doc/whatsnew/3.3.rst:2304 msgid ":c:macro:`!Py_UNICODE_FILL()`: use :c:func:`PyUnicode_Fill`" @@ -4950,11 +5146,11 @@ msgstr ":c:func:`!PyUnicode_EncodeUTF7`" #: ../Doc/whatsnew/3.3.rst:2311 msgid "" -":c:func:`!PyUnicode_EncodeUTF8`: use :c:func:`PyUnicode_AsUTF8` or :c:func:" -"`PyUnicode_AsUTF8String`" +":c:func:`!PyUnicode_EncodeUTF8`: use :c:func:`PyUnicode_AsUTF8` or " +":c:func:`PyUnicode_AsUTF8String`" msgstr "" -":c:func:`!PyUnicode_EncodeUTF8`: use :c:func:`PyUnicode_AsUTF8` o :c:func:" -"`PyUnicode_AsUTF8String`" +":c:func:`!PyUnicode_EncodeUTF8`: use :c:func:`PyUnicode_AsUTF8` o " +":c:func:`PyUnicode_AsUTF8String`" #: ../Doc/whatsnew/3.3.rst:2313 msgid ":c:func:`!PyUnicode_EncodeUTF32`" @@ -4966,19 +5162,19 @@ msgstr ":c:func:`!PyUnicode_EncodeUTF16`" #: ../Doc/whatsnew/3.3.rst:2315 msgid "" -":c:func:`!PyUnicode_EncodeUnicodeEscape` use :c:func:" -"`PyUnicode_AsUnicodeEscapeString`" +":c:func:`!PyUnicode_EncodeUnicodeEscape` use " +":c:func:`PyUnicode_AsUnicodeEscapeString`" msgstr "" -":c:func:`!PyUnicode_EncodeUnicodeEscape` use :c:func:" -"`PyUnicode_AsUnicodeEscapeString`" +":c:func:`!PyUnicode_EncodeUnicodeEscape` use " +":c:func:`PyUnicode_AsUnicodeEscapeString`" #: ../Doc/whatsnew/3.3.rst:2317 msgid "" -":c:func:`!PyUnicode_EncodeRawUnicodeEscape` use :c:func:" -"`PyUnicode_AsRawUnicodeEscapeString`" +":c:func:`!PyUnicode_EncodeRawUnicodeEscape` use " +":c:func:`PyUnicode_AsRawUnicodeEscapeString`" msgstr "" -":c:func:`!PyUnicode_EncodeRawUnicodeEscape` use :c:func:" -"`PyUnicode_AsRawUnicodeEscapeString`" +":c:func:`!PyUnicode_EncodeRawUnicodeEscape` use " +":c:func:`PyUnicode_AsRawUnicodeEscapeString`" #: ../Doc/whatsnew/3.3.rst:2319 msgid "" @@ -4987,7 +5183,8 @@ msgstr "" ":c:func:`!PyUnicode_EncodeLatin1`: use :c:func:`PyUnicode_AsLatin1String`" #: ../Doc/whatsnew/3.3.rst:2320 -msgid ":c:func:`!PyUnicode_EncodeASCII`: use :c:func:`PyUnicode_AsASCIIString`" +msgid "" +":c:func:`!PyUnicode_EncodeASCII`: use :c:func:`PyUnicode_AsASCIIString`" msgstr "" ":c:func:`!PyUnicode_EncodeASCII`: use :c:func:`PyUnicode_AsASCIIString`" @@ -5001,19 +5198,19 @@ msgstr ":c:func:`!PyUnicode_TranslateCharmap`" #: ../Doc/whatsnew/3.3.rst:2323 msgid "" -":c:func:`!PyUnicode_EncodeMBCS`: use :c:func:`PyUnicode_AsMBCSString` or :c:" -"func:`PyUnicode_EncodeCodePage` (with ``CP_ACP`` code_page)" +":c:func:`!PyUnicode_EncodeMBCS`: use :c:func:`PyUnicode_AsMBCSString` or " +":c:func:`PyUnicode_EncodeCodePage` (with ``CP_ACP`` code_page)" msgstr "" -":c:func:`!PyUnicode_EncodeMBCS`: use :c:func:`PyUnicode_AsMBCSString` o :c:" -"func:`PyUnicode_EncodeCodePage` (con ``CP_ACP`` code_page)" +":c:func:`!PyUnicode_EncodeMBCS`: use :c:func:`PyUnicode_AsMBCSString` o " +":c:func:`PyUnicode_EncodeCodePage` (con ``CP_ACP`` code_page)" #: ../Doc/whatsnew/3.3.rst:2325 msgid "" -":c:func:`!PyUnicode_EncodeDecimal`, :c:func:`!" -"PyUnicode_TransformDecimalToASCII`" +":c:func:`!PyUnicode_EncodeDecimal`, " +":c:func:`!PyUnicode_TransformDecimalToASCII`" msgstr "" -":c:func:`!PyUnicode_EncodeDecimal`, :c:func:`!" -"PyUnicode_TransformDecimalToASCII`" +":c:func:`!PyUnicode_EncodeDecimal`, " +":c:func:`!PyUnicode_TransformDecimalToASCII`" #: ../Doc/whatsnew/3.3.rst:2330 msgid "Deprecated features" @@ -5022,11 +5219,12 @@ msgstr "Características obsoletas" #: ../Doc/whatsnew/3.3.rst:2332 msgid "" "The :mod:`array` module's ``'u'`` format code is now deprecated and will be " -"removed in Python 4 together with the rest of the (:c:type:`Py_UNICODE`) API." +"removed in Python 4 together with the rest of the (:c:type:`Py_UNICODE`) " +"API." msgstr "" "El código del formato ``'u'`` del módulo :mod:`array` ha quedado obsoleto y " -"será eliminado en Python 4, junto con el resto de la API (:c:type:" -"`Py_UNICODE`)." +"será eliminado en Python 4, junto con el resto de la API " +"(:c:type:`Py_UNICODE`)." #: ../Doc/whatsnew/3.3.rst:2337 msgid "Porting to Python 3.3" @@ -5047,20 +5245,20 @@ msgstr "Portando código Python" #: ../Doc/whatsnew/3.3.rst:2347 msgid "" "Hash randomization is enabled by default. Set the :envvar:`PYTHONHASHSEED` " -"environment variable to ``0`` to disable hash randomization. See also the :" -"meth:`object.__hash__` method." +"environment variable to ``0`` to disable hash randomization. See also the " +":meth:`object.__hash__` method." msgstr "" "La aleatoriedad de Hash ha sido habilitada de forma predeterminada. " "Establezca la variable de entorno :envvar:`PYTHONHASHSEED` a 0, para " -"deshabilitar la aleatoriedad de Hash. Vea también el método :meth:`object." -"__hash__` method." +"deshabilitar la aleatoriedad de Hash. Vea también el método " +":meth:`object.__hash__` method." #: ../Doc/whatsnew/3.3.rst:2351 msgid "" ":issue:`12326`: On Linux, sys.platform doesn't contain the major version " -"anymore. It is now always 'linux', instead of 'linux2' or 'linux3' depending " -"on the Linux version used to build Python. Replace sys.platform == 'linux2' " -"with sys.platform.startswith('linux'), or directly sys.platform == 'linux' " +"anymore. It is now always 'linux', instead of 'linux2' or 'linux3' depending" +" on the Linux version used to build Python. Replace sys.platform == 'linux2'" +" with sys.platform.startswith('linux'), or directly sys.platform == 'linux' " "if you don't need to support older Python versions." msgstr "" ":issue:`12326`: En Linux, sys.platform ya no contiene la versión principal. " @@ -5071,31 +5269,30 @@ msgstr "" #: ../Doc/whatsnew/3.3.rst:2357 msgid "" -":issue:`13847`, :issue:`14180`: :mod:`time` and :mod:`datetime`: :exc:" -"`OverflowError` is now raised instead of :exc:`ValueError` if a timestamp is " -"out of range. :exc:`OSError` is now raised if C functions :c:func:`gmtime` " -"or :c:func:`localtime` failed." +":issue:`13847`, :issue:`14180`: :mod:`time` and :mod:`datetime`: " +":exc:`OverflowError` is now raised instead of :exc:`ValueError` if a " +"timestamp is out of range. :exc:`OSError` is now raised if C functions " +":c:func:`gmtime` or :c:func:`localtime` failed." msgstr "" -":issue:`13847`, :issue:`14180`: :mod:`time` y :mod:`datetime`: :exc:" -"`OverflowError` ahora se lanza en lugar de :exc:`ValueError` si una marca de " -"tiempo está fuera de rango. :exc:`OSError` ahora se genera si fallaron las " -"funciones C :c:func:`gmtime` o :c:func:`localtime`." +":issue:`13847`, :issue:`14180`: :mod:`time` y :mod:`datetime`: " +":exc:`OverflowError` ahora se lanza en lugar de :exc:`ValueError` si una " +"marca de tiempo está fuera de rango. :exc:`OSError` ahora se genera si " +"fallaron las funciones C :c:func:`gmtime` o :c:func:`localtime`." #: ../Doc/whatsnew/3.3.rst:2362 msgid "" "The default finders used by import now utilize a cache of what is contained " "within a specific directory. If you create a Python source file or " -"sourceless bytecode file, make sure to call :func:`importlib." -"invalidate_caches` to clear out the cache for the finders to notice the new " -"file." +"sourceless bytecode file, make sure to call " +":func:`importlib.invalidate_caches` to clear out the cache for the finders " +"to notice the new file." msgstr "" -"Los buscadores predeterminados usados para las importaciones, ahora utilizan " -"un caché de lo que está contenido en un directorio específico. Si crea un " +"Los buscadores predeterminados usados para las importaciones, ahora utilizan" +" un caché de lo que está contenido en un directorio específico. Si crea un " "archivo fuente de Python o archivo de código de *bytes* sin fuente, " "asegúrese de llamar a :func:`importlib.invalidate_caches` para limpiar la " "caché para que los buscadores encuentren el nuevo archivo." -# coloque check en comillas #: ../Doc/whatsnew/3.3.rst:2367 msgid "" ":exc:`ImportError` now uses the full name of the module that was attempted " @@ -5104,9 +5301,9 @@ msgid "" "name." msgstr "" ":exc:`ImportError` ahora usa el nombre completo del módulo que se intentó " -"importar. Las pruebas de documentos que verifican el mensaje de " -"'ImportErrors' necesitaran ser actualizados para usar el nombre completo del " -"módulo en vez de sólo la terminación del nombre." +"importar. Las pruebas de documentos que verifican el mensaje de ImportErrors" +" necesitaran ser actualizados para usar el nombre completo del módulo en vez" +" de sólo la terminación del nombre." #: ../Doc/whatsnew/3.3.rst:2372 msgid "" @@ -5114,18 +5311,20 @@ msgid "" "and no longer support negative values. It was an oversight when :pep:`328` " "was implemented that the default value remained -1. If you need to continue " "to perform a relative import followed by an absolute import, then perform " -"the relative import using an index of 1, followed by another import using an " -"index of 0. It is preferred, though, that you use :func:`importlib." -"import_module` rather than call :func:`__import__` directly." -msgstr "" -"El argumento *index* para la función :func:`__import__` ahora tiene un valor " -"predeterminado de 0, en vez de -1, y ya no admite valores negativos. Ha sido " -"un descuido en la implementación de :pep:`328` que el valor predeterminado " -"permaneciera en -1. Si necesita continuar realizando una importación " -"relativa seguida por una importación absoluta, entonces realice la " -"importación relativa usando un índice de 1, seguida por otra importación que " -"use un índice de 0. Sin embargo, es preferible usar :func:`importlib." -"import_module` en vez de llamar a la función :func:`__import__` directamente." +"the relative import using an index of 1, followed by another import using an" +" index of 0. It is preferred, though, that you use " +":func:`importlib.import_module` rather than call :func:`__import__` " +"directly." +msgstr "" +"El argumento *index* para la función :func:`__import__` ahora tiene un valor" +" predeterminado de 0, en vez de -1, y ya no admite valores negativos. Ha " +"sido un descuido en la implementación de :pep:`328` que el valor " +"predeterminado permaneciera en -1. Si necesita continuar realizando una " +"importación relativa seguida por una importación absoluta, entonces realice " +"la importación relativa usando un índice de 1, seguida por otra importación " +"que use un índice de 0. Sin embargo, es preferible usar " +":func:`importlib.import_module` en vez de llamar a la función " +":func:`__import__` directamente." #: ../Doc/whatsnew/3.3.rst:2380 msgid "" @@ -5133,37 +5332,38 @@ msgid "" "for top-level modules. E.g. ``__import__('sys', level=1)`` is now an error." msgstr "" ":func:`__import__` ya no admite usar un valor de índice distinto de 0 para " -"los módulos de alto nivel. Por ejemplo, ``__import__('sys', level=1)`` ahora " -"es un error." +"los módulos de alto nivel. Por ejemplo, ``__import__('sys', level=1)`` ahora" +" es un error." #: ../Doc/whatsnew/3.3.rst:2383 msgid "" -"Because :data:`sys.meta_path` and :data:`sys.path_hooks` now have finders on " -"them by default, you will most likely want to use :meth:`list.insert` " +"Because :data:`sys.meta_path` and :data:`sys.path_hooks` now have finders on" +" them by default, you will most likely want to use :meth:`list.insert` " "instead of :meth:`list.append` to add to those lists." msgstr "" "Dado que :data:`sys.meta_path` y :data:`sys.path_hooks` ahora tienen " -"buscadores por defecto, lo más probable es que desee usar :meth:`list." -"insert` en vez de :meth:`list.append` para agregar a esas listas." +"buscadores por defecto, lo más probable es que desee usar " +":meth:`list.insert` en vez de :meth:`list.append` para agregar a esas " +"listas." #: ../Doc/whatsnew/3.3.rst:2387 msgid "" "Because ``None`` is now inserted into :data:`sys.path_importer_cache`, if " "you are clearing out entries in the dictionary of paths that do not have a " -"finder, you will need to remove keys paired with values of ``None`` **and** :" -"class:`!imp.NullImporter` to be backwards-compatible. This will lead to " -"extra overhead on older versions of Python that re-insert ``None`` into :" -"data:`sys.path_importer_cache` where it represents the use of implicit " +"finder, you will need to remove keys paired with values of ``None`` **and** " +":class:`!imp.NullImporter` to be backwards-compatible. This will lead to " +"extra overhead on older versions of Python that re-insert ``None`` into " +":data:`sys.path_importer_cache` where it represents the use of implicit " "finders, but semantically it should not change anything." msgstr "" -"Dado que ``None`` ahora ha sido insertado en :data:`sys." -"path_importer_cache`, si usted está borrando entradas en el diccionario de " -"rutas que no tienen un buscador, usted necesitará eliminar los pares con " -"valores de ``None`` **y** :class:`!imp.NullImporter` para ser compatible con " -"versiones anteriores. Esto conducirá a una sobrecarga adicional con las " -"versiones más antiguas de Python que re-inserten ``None`` dentro de :data:" -"`sys.path_importer_cache` donde éste represente el uso de buscadores " -"implícitos, pero semánticamente no debería cambiar nada." +"Dado que ``None`` ahora ha sido insertado en " +":data:`sys.path_importer_cache`, si usted está borrando entradas en el " +"diccionario de rutas que no tienen un buscador, usted necesitará eliminar " +"los pares con valores de ``None`` **y** :class:`!imp.NullImporter` para ser " +"compatible con versiones anteriores. Esto conducirá a una sobrecarga " +"adicional con las versiones más antiguas de Python que re-inserten ``None`` " +"dentro de :data:`sys.path_importer_cache` donde éste represente el uso de " +"buscadores implícitos, pero semánticamente no debería cambiar nada." #: ../Doc/whatsnew/3.3.rst:2395 msgid "" @@ -5185,10 +5385,10 @@ msgid "" ":mod:`pkgutil` has been converted to use :mod:`importlib` internally. This " "eliminates many edge cases where the old behaviour of the :pep:`302` import " "emulation failed to match the behaviour of the real import system. The " -"import emulation itself is still present, but is now deprecated. The :func:" -"`pkgutil.iter_importers` and :func:`pkgutil.walk_packages` functions special " -"case the standard import hooks so they are still supported even though they " -"do not provide the non-standard ``iter_modules()`` method." +"import emulation itself is still present, but is now deprecated. The " +":func:`pkgutil.iter_importers` and :func:`pkgutil.walk_packages` functions " +"special case the standard import hooks so they are still supported even " +"though they do not provide the non-standard ``iter_modules()`` method." msgstr "" ":mod:`pkgutil` ha sido convertido para usar :mod:`importlib` internamente. " "Esto elimina varios casos extremos donde el antiguo comportamiento de la " @@ -5201,35 +5401,35 @@ msgstr "" #: ../Doc/whatsnew/3.3.rst:2409 msgid "" -"A longstanding RFC-compliance bug (:issue:`1079`) in the parsing done by :" -"func:`email.header.decode_header` has been fixed. Code that uses the " +"A longstanding RFC-compliance bug (:issue:`1079`) in the parsing done by " +":func:`email.header.decode_header` has been fixed. Code that uses the " "standard idiom to convert encoded headers into unicode " "(``str(make_header(decode_header(h))``) will see no change, but code that " "looks at the individual tuples returned by decode_header will see that " "whitespace that precedes or follows ``ASCII`` sections is now included in " "the ``ASCII`` section. Code that builds headers using ``make_header`` " -"should also continue to work without change, since ``make_header`` continues " -"to add whitespace between ``ASCII`` and non-``ASCII`` sections if it is not " -"already present in the input strings." -msgstr "" -"Se ha corregido un error de larga data de cumplimiento de RFC (:issue:" -"`1079`) en el análisis realizado por :func:`email.header.decode_header`. El " -"código que usa el lenguaje estándar para convertir encabezados codificados " -"en *unicode* (``str (make_header (decode_header (h))``) no verá cambios, " -"pero el código que mira las tuplas individuales retornadas por decode_header " -"verá ese espacio en blanco que precede o sigue las secciones ``ASCII`` ahora " -"está incluido en la sección ``ASCII``. El código que crea encabezados usando " -"``make_header`` también debería continuar funcionando sin cambios, ya que " -"``make_header`` continúa agregando espacios en blanco entre ``Secciones " -"ASCII`` y no ``ASCII`` si aún no está presente en las cadenas de caracteres " -"entrantes." +"should also continue to work without change, since ``make_header`` continues" +" to add whitespace between ``ASCII`` and non-``ASCII`` sections if it is not" +" already present in the input strings." +msgstr "" +"Se ha corregido un error de larga data de cumplimiento de RFC " +"(:issue:`1079`) en el análisis realizado por " +":func:`email.header.decode_header`. El código que usa el lenguaje estándar " +"para convertir encabezados codificados en *unicode* (``str (make_header " +"(decode_header (h))``) no verá cambios, pero el código que mira las tuplas " +"individuales retornadas por decode_header verá ese espacio en blanco que " +"precede o sigue las secciones ``ASCII`` ahora está incluido en la sección " +"``ASCII``. El código que crea encabezados usando ``make_header`` también " +"debería continuar funcionando sin cambios, ya que ``make_header`` continúa " +"agregando espacios en blanco entre ``Secciones ASCII`` y no ``ASCII`` si aún" +" no está presente en las cadenas de caracteres entrantes." #: ../Doc/whatsnew/3.3.rst:2420 msgid "" ":func:`email.utils.formataddr` now does the correct content transfer " -"encoding when passed non-``ASCII`` display names. Any code that depended on " -"the previous buggy behavior that preserved the non-``ASCII`` unicode in the " -"formatted output string will need to be changed (:issue:`1690608`)." +"encoding when passed non-``ASCII`` display names. Any code that depended on" +" the previous buggy behavior that preserved the non-``ASCII`` unicode in the" +" formatted output string will need to be changed (:issue:`1690608`)." msgstr "" ":func:`email.utils.formataddr` ahora realiza la codificación de " "transferencia de contenido correcta, al pasar nombres para mostrar que no " @@ -5240,14 +5440,14 @@ msgstr "" #: ../Doc/whatsnew/3.3.rst:2425 msgid "" ":meth:`poplib.POP3.quit` may now raise protocol errors like all other " -"``poplib`` methods. Code that assumes ``quit`` does not raise :exc:`poplib." -"error_proto` errors may need to be changed if errors on ``quit`` are " -"encountered by a particular application (:issue:`11291`)." +"``poplib`` methods. Code that assumes ``quit`` does not raise " +":exc:`poplib.error_proto` errors may need to be changed if errors on " +"``quit`` are encountered by a particular application (:issue:`11291`)." msgstr "" ":meth:`poplib.POP3.quit` ahora puede generar errores de protocolos como " "todos los demás métodos ``poplib``. El código que asume que ``quit`` no " -"genera errores :exc:`poplib.error_proto` puede necesitar ser cambiado si una " -"aplicación en particular encuentran errores en ``quit`` (:issue:`11291`)." +"genera errores :exc:`poplib.error_proto` puede necesitar ser cambiado si una" +" aplicación en particular encuentran errores en ``quit`` (:issue:`11291`)." #: ../Doc/whatsnew/3.3.rst:2430 msgid "" @@ -5272,9 +5472,9 @@ msgstr "" #: ../Doc/whatsnew/3.3.rst:2438 msgid "" -"The deprecated ``Context._clamp`` attribute has been removed from the :mod:" -"`decimal` module. It was previously replaced by the public attribute :attr:" -"`~decimal.Context.clamp`. (See :issue:`8540`.)" +"The deprecated ``Context._clamp`` attribute has been removed from the " +":mod:`decimal` module. It was previously replaced by the public attribute " +":attr:`~decimal.Context.clamp`. (See :issue:`8540`.)" msgstr "" "El atributo ``Context._clamp`` que estaba obsoleto, ha sido eliminado del " "módulo :mod:`decimal`. Este se reemplazó anteriormente por el atributo " @@ -5282,9 +5482,9 @@ msgstr "" #: ../Doc/whatsnew/3.3.rst:2442 msgid "" -"The undocumented internal helper class ``SSLFakeFile`` has been removed " -"from :mod:`smtplib`, since its functionality has long been provided directly " -"by :meth:`socket.socket.makefile`." +"The undocumented internal helper class ``SSLFakeFile`` has been removed from" +" :mod:`smtplib`, since its functionality has long been provided directly by " +":meth:`socket.socket.makefile`." msgstr "" "La clase interna auxiliar indocumentada ``SSLFakeFile``, ha sido eliminada " "de :mod:`smtplib`, dado que su funcionalidad ha sido proporcionada " @@ -5311,9 +5511,9 @@ msgstr "" #: ../Doc/whatsnew/3.3.rst:2453 msgid "" -"Code that used to work around the fact that the :mod:`threading` module used " -"factory functions by subclassing the private classes will need to change to " -"subclass the now-public classes." +"Code that used to work around the fact that the :mod:`threading` module used" +" factory functions by subclassing the private classes will need to change to" +" subclass the now-public classes." msgstr "" "El código que solía solucionar el hecho de que el módulo :mod:`threading` " "utilizaba funciones de fábrica mediante la subclase de las clases privadas " @@ -5337,21 +5537,21 @@ msgstr "Portando código C" #: ../Doc/whatsnew/3.3.rst:2466 msgid "" -"In the course of changes to the buffer API the undocumented :c:member:`!" -"smalltable` member of the :c:type:`Py_buffer` structure has been removed and " -"the layout of the :c:type:`PyMemoryViewObject` has changed." +"In the course of changes to the buffer API the undocumented " +":c:member:`!smalltable` member of the :c:type:`Py_buffer` structure has been" +" removed and the layout of the :c:type:`PyMemoryViewObject` has changed." msgstr "" -"En el curso de los cambios en la API del búfer, se eliminó el miembro :c:" -"member:`!smalltable` no documentado de la estructura :c:type:`Py_buffer` y " -"se cambió el diseño del :c:type:`PyMemoryViewObject`." +"En el curso de los cambios en la API del búfer, se eliminó el miembro " +":c:member:`!smalltable` no documentado de la estructura :c:type:`Py_buffer` " +"y se cambió el diseño del :c:type:`PyMemoryViewObject`." #: ../Doc/whatsnew/3.3.rst:2471 msgid "" "All extensions relying on the relevant parts in ``memoryobject.h`` or " "``object.h`` must be rebuilt." msgstr "" -"Todas las extensiones que quedan en las partes relevantes de ``memoryobject." -"h`` o ``object.h`` deben ser reconstruídas." +"Todas las extensiones que quedan en las partes relevantes de " +"``memoryobject.h`` o ``object.h`` deben ser reconstruídas." #: ../Doc/whatsnew/3.3.rst:2474 msgid "" @@ -5359,8 +5559,8 @@ msgid "" "functions using this type are deprecated (but will stay available for at " "least five years). If you were using low-level Unicode APIs to construct " "and access unicode objects and you want to benefit of the memory footprint " -"reduction provided by :pep:`393`, you have to convert your code to the new :" -"doc:`Unicode API <../c-api/unicode>`." +"reduction provided by :pep:`393`, you have to convert your code to the new " +":doc:`Unicode API <../c-api/unicode>`." msgstr "" "Debido a :ref:`PEP 393 `, el tipo :c:type:`Py_UNICODE` y todas las " "funciones que lo utilicen han quedado obsoletas (pero seguirán estando " @@ -5371,15 +5571,15 @@ msgstr "" #: ../Doc/whatsnew/3.3.rst:2481 msgid "" -"However, if you only have been using high-level functions such as :c:func:" -"`PyUnicode_Concat()`, :c:func:`PyUnicode_Join` or :c:func:" -"`PyUnicode_FromFormat()`, your code will automatically take advantage of the " -"new unicode representations." +"However, if you only have been using high-level functions such as " +":c:func:`PyUnicode_Concat()`, :c:func:`PyUnicode_Join` or " +":c:func:`PyUnicode_FromFormat()`, your code will automatically take " +"advantage of the new unicode representations." msgstr "" -"Sin embargo, si sólo ha estado usando funciones de alto nivel como :c:func:" -"`PyUnicode_Concat()`, :c:func:`PyUnicode_Join` o :c:func:" -"`PyUnicode_FromFormat()`, automáticamente su código se beneficiará de las " -"nuevas representaciones *unicode*." +"Sin embargo, si sólo ha estado usando funciones de alto nivel como " +":c:func:`PyUnicode_Concat()`, :c:func:`PyUnicode_Join` o " +":c:func:`PyUnicode_FromFormat()`, automáticamente su código se beneficiará " +"de las nuevas representaciones *unicode*." #: ../Doc/whatsnew/3.3.rst:2486 msgid ":c:func:`PyImport_GetMagicNumber` now returns ``-1`` upon failure." @@ -5390,14 +5590,14 @@ msgstr "" msgid "" "As a negative value for the *level* argument to :func:`__import__` is no " "longer valid, the same now holds for :c:func:`PyImport_ImportModuleLevel`. " -"This also means that the value of *level* used by :c:func:" -"`PyImport_ImportModuleEx` is now ``0`` instead of ``-1``." +"This also means that the value of *level* used by " +":c:func:`PyImport_ImportModuleEx` is now ``0`` instead of ``-1``." msgstr "" -"Como valor negativo para el argumento *level* de la función :func:" -"`__import__` ya no es válido, y lo mismo ahora es válido para la función :c:" -"func:`PyImport_ImportModuleLevel`. Esto también significa que el valor de " -"*level* usado por la función :c:func:`PyImport_ImportModuleEx` ahora es " -"``0`` en vez de ``-1``." +"Como valor negativo para el argumento *level* de la función " +":func:`__import__` ya no es válido, y lo mismo ahora es válido para la " +"función :c:func:`PyImport_ImportModuleLevel`. Esto también significa que el " +"valor de *level* usado por la función :c:func:`PyImport_ImportModuleEx` " +"ahora es ``0`` en vez de ``-1``." #: ../Doc/whatsnew/3.3.rst:2495 msgid "Building C extensions" @@ -5414,11 +5614,11 @@ msgid "" msgstr "" "Se ha reducido el rango de nombres de archivo posibles para las extensiones " "C. Muy raramente se han suprimido las ortografías utilizadas: en POSIX, los " -"archivos denominados ``xxxmodule.so``, ``xxxmodule.abi3.so`` y ``xxxmodule." -"cpython-*.so`` ya no se reconocen como la implementación del módulo ``xxx``. " -"Si ha estado generando estos archivos, tiene que cambiar a las otras " -"ortografías (es decir, eliminar la cadena de caracteres ``módulo`` de los " -"nombres de archivo)." +"archivos denominados ``xxxmodule.so``, ``xxxmodule.abi3.so`` y " +"``xxxmodule.cpython-*.so`` ya no se reconocen como la implementación del " +"módulo ``xxx``. Si ha estado generando estos archivos, tiene que cambiar a " +"las otras ortografías (es decir, eliminar la cadena de caracteres ``módulo``" +" de los nombres de archivo)." #: ../Doc/whatsnew/3.3.rst:2505 msgid "(implemented in :issue:`14040`.)" @@ -5443,8 +5643,8 @@ msgstr "(:issue:`10998`, contribución de Éric Araujo.)" #: ../Doc/whatsnew/3.3.rst:2516 msgid "" -"When :program:`python` is started with :option:`-S`, ``import site`` will no " -"longer add site-specific paths to the module search paths. In previous " +"When :program:`python` is started with :option:`-S`, ``import site`` will no" +" longer add site-specific paths to the module search paths. In previous " "versions, it did." msgstr "" "Cuando se inicia :program:`python` con :option:`-S`, ``import site`` ya no " From cef2697716d3bfd80dcf5003cfe72cd39202f807 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cristi=C3=A1n=20Maureira-Fredes?= Date: Sun, 22 Dec 2024 00:13:44 +0100 Subject: [PATCH 04/78] Translate library/stdtypes (#3323) Closes #3119 --- dictionaries/library_stdtypes.txt | 36 +- library/stdtypes.po | 1848 +++++++++++++++++++---------- 2 files changed, 1271 insertions(+), 613 deletions(-) diff --git a/dictionaries/library_stdtypes.txt b/dictionaries/library_stdtypes.txt index 51aa7d252f..3711bb408b 100644 --- a/dictionaries/library_stdtypes.txt +++ b/dictionaries/library_stdtypes.txt @@ -1,13 +1,35 @@ -computacionalmente Cardinalidad +Exceeds +Illustrative +Kharosthi +Ll +Lm +Lu cardinalidad +ceil +computacionalmente +conjugate +conversion +digits +dishes +eggs +gt +increase +iteration +juice +languaje +limit +mappingproxy +most +precompilar +precompilarlibrary/stdtypes.po:8461:dishes +recent +sausage +sprintf +squared +subcuadrática subindicando superconjunto superíndices +this unaria -Ll -Lm -Lu -Kharosthi -subcuadrática -precompilar \ No newline at end of file diff --git a/library/stdtypes.po b/library/stdtypes.po index b9c65c09c4..4b53581bad 100755 --- a/library/stdtypes.po +++ b/library/stdtypes.po @@ -11,15 +11,16 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: 2024-01-27 18:16+0100\n" -"Last-Translator: José Luis Salgado Banda\n" -"Language: es\n" +"PO-Revision-Date: 2024-11-24 12:43+0100\n" +"Last-Translator: Cristián Maureira-Fredes \n" "Language-Team: python-doc-es\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\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.16.0\n" +"X-Generator: Poedit 3.4.2\n" #: ../Doc/library/stdtypes.rst:8 msgid "Built-in Types" @@ -83,21 +84,19 @@ msgstr "" "más adelante." #: ../Doc/library/stdtypes.rst:46 -#, fuzzy msgid "" "By default, an object is considered true unless its class defines either a :" "meth:`~object.__bool__` method that returns ``False`` or a :meth:`~object." "__len__` method that returns zero, when called with the object. [1]_ Here " "are most of the built-in objects considered false:" msgstr "" -"Por defecto, un objeto se considera verdadero a no ser que su clase defina o " -"bien un método :meth:`__bool__` que retorna ``False`` o un método :meth:" -"`__len__` que retorna cero, cuando se invoque desde ese objeto. [1]_ Aquí " -"están listados la mayoría de los objetos integrados que se evalúan como " -"falsos:" +"De manera predeterminada, un objeto se considera verdadero a menos que su " +"clase defina un método :meth:`~object.__bool__` que devuelva ``False`` o un " +"método :meth:`~object.__len__` que devuelva cero, cuando se llama con el " +"objeto. [1]_ Estos son la mayoría de los objetos integrados que se " +"consideran falsos:" #: ../Doc/library/stdtypes.rst:56 -#, fuzzy msgid "constants defined to be false: ``None`` and ``False``" msgstr "constantes definidas para tener valor falso: ``None`` y ``False``." @@ -165,9 +164,8 @@ msgid "``x or y``" msgstr "``x or y``" #: ../Doc/library/stdtypes.rst:88 -#, fuzzy msgid "if *x* is true, then *x*, else *y*" -msgstr "si *x* es falso, entonces *x*, si no, *y*" +msgstr "si *x* es verdad, entonces *x*, si no, *y*" #: ../Doc/library/stdtypes.rst:88 ../Doc/library/stdtypes.rst:967 #: ../Doc/library/stdtypes.rst:970 ../Doc/library/stdtypes.rst:1181 @@ -385,22 +383,20 @@ msgstr "" "nunca lanzar una excepción." #: ../Doc/library/stdtypes.rst:199 -#, fuzzy msgid "" "Two more operations with the same syntactic priority, :keyword:`in` and :" "keyword:`not in`, are supported by types that are :term:`iterable` or " "implement the :meth:`~object.__contains__` method." msgstr "" -"Hay otras dos operaciones con la misma prioridad sintáctica: :keyword:`in` " -"y :keyword:`not in`, que son soportadas por aquellos tipos de datos que son " -"de tipo :term:`iterable` o que implementen el método :meth:`__contains__`." +"Dos operaciones más con la misma prioridad sintáctica, :keyword:`in` y :" +"keyword:`not in`, son compatibles con tipos que son :term:`iterable` o " +"implementan el método :meth:`~object.__contains__`." #: ../Doc/library/stdtypes.rst:206 msgid "Numeric Types --- :class:`int`, :class:`float`, :class:`complex`" msgstr "Tipos numéricos --- :class:`int`, :class:`float`, :class:`complex`" #: ../Doc/library/stdtypes.rst:216 -#, fuzzy msgid "" "There are three distinct numeric types: :dfn:`integers`, :dfn:`floating-" "point numbers`, and :dfn:`complex numbers`. In addition, Booleans are a " @@ -414,22 +410,21 @@ msgid "" "numeric types :mod:`fractions.Fraction`, for rationals, and :mod:`decimal." "Decimal`, for floating-point numbers with user-definable precision.)" msgstr "" -"Hay tres tipos numéricos distintos: :dfn:`integers`, :dfn:`floating point " -"numbers` y :dfn:`complex numbers`. Además, los booleanos son un subtipo de " -"los enteros. Los enteros tiene precisión ilimitada. Los números en coma " -"flotante se implementan normalmente usando el tipo :c:expr:`double` de C; " -"hay más información sobre la precisión y la representación interna de los " -"números en coma flotante usadas por la máquina sobre la que se ejecuta tu " -"programa en :data:`sys.float_info`. Los números complejos tienen una parte " -"real y otra imaginaria, ambas representadas con números en coma flotante. " -"Para extraer estas partes del número complejo *z* se usan los métodos ``z." -"real`` y ``z.imag``. (La librería estándar incluye tipos numéricos " -"adicionales: :mod:`fractions.Fraction` para números racionales y :mod:" -"`decimal.Decimal` para números en coma flotante con precisión definida por " -"el usuario.)" +"Existen tres tipos numéricos distintos: :dfn:`números enteros`, :dfn:" +"`números de punto flotante` y :dfn:`números complejos`. Además, los " +"booleanos son un subtipo de los números enteros. Los números enteros tienen " +"una precisión ilimitada. Los números de punto flotante se implementan " +"normalmente utilizando :c:expr:`double` en C; la información sobre la " +"precisión y la representación interna de los números de punto flotante para " +"la máquina en la que se ejecuta el programa está disponible en :data:`sys." +"float_info`. Los números complejos tienen una parte real y una imaginaria, " +"que son cada una un número de punto flotante. Para extraer estas partes de " +"un número complejo *z*, utilice ``z.real`` y ``z.imag``. (La biblioteca " +"estándar incluye los tipos numéricos adicionales :mod:`fractions.Fraction`, " +"para números racionales, y :mod:`decimal.Decimal`, para números de punto " +"flotante con precisión definible por el usuario)." #: ../Doc/library/stdtypes.rst:238 -#, fuzzy msgid "" "Numbers are created by numeric literals or as the result of built-in " "functions and operators. Unadorned integer literals (including hex, octal " @@ -439,15 +434,14 @@ msgid "" "with a zero real part) which you can add to an integer or float to get a " "complex number with real and imaginary parts." msgstr "" -"Los números se crean a partir de literales numéricos, o como resultado de " -"una combinación de funciones integradas y operadores. Expresiones literales " -"de números (incluyendo números expresados en hexadecimal, octal o binario) " -"producen enteros. Si la expresión literal contiene un punto decimal o un " -"signo de exponente, se genera un número en coma flotante. Si se añade como " -"sufijo una ``'j'`` o una ``'J'`` a un literal numérico, se genera un número " -"imaginario puro (un número complejo con la parte real a cero), que se puede " -"sumar a un número entero o de coma flotante para obtener un número complejo " -"con parte real e imaginaria." +"Los números se crean mediante literales numéricos o como resultado de " +"funciones y operadores integrados. Los literales enteros sin adornos " +"(incluidos los números hexadecimales, octales y binarios) generan números " +"enteros. Los literales numéricos que contienen un punto decimal o un signo " +"de exponente generan números de punto flotante. Si se añade ``'j'`` o " +"``'J'`` a un literal numérico, se obtiene un número imaginario (un número " +"complejo con una parte real cero) que se puede sumar a un entero o un " +"flotante para obtener un número complejo con partes reales e imaginarias." #: ../Doc/library/stdtypes.rst:263 msgid "" @@ -528,9 +522,8 @@ msgid "floored quotient of *x* and *y*" msgstr "división entera a la baja de *x* entre *y*" #: ../Doc/library/stdtypes.rst:286 -#, fuzzy msgid "\\(1)\\(2)" -msgstr "(1)(2)" +msgstr "\\(1)\\(2)" #: ../Doc/library/stdtypes.rst:289 msgid "``x % y``" @@ -691,15 +684,14 @@ msgstr "" "coma flotante usando la función :func:`abs` si fuera apropiado." #: ../Doc/library/stdtypes.rst:342 -#, fuzzy msgid "" "Conversion from :class:`float` to :class:`int` truncates, discarding the " "fractional part. See functions :func:`math.floor` and :func:`math.ceil` for " "alternative conversions." msgstr "" -"Conversiones desde coma flotante a entero pueden redondearse o truncarse " -"como en C; véanse las funciones :func:`math.floor` y :func:`math.ceil` para " -"un mayor control." +"La conversión de :class:`float` a :class:`int` trunca y descarta la parte " +"fraccionaria. Consulte las funciones :func:`math.floor` y :func:`math.ceil` " +"para conocer conversiones alternativas." #: ../Doc/library/stdtypes.rst:347 msgid "" @@ -728,14 +720,14 @@ msgstr "" "con la propiedad ``Nd``)." #: ../Doc/library/stdtypes.rst:358 -#, fuzzy msgid "" "See `the Unicode Standard `_ for a complete list of code points with the ``Nd`` " "property." msgstr "" -"Véase https://www.unicode.org/Public/14.0.0/ucd/extracted/DerivedNumericType." -"txt para una lista completa de los puntos de código con la propiedad ``Nd``." +"Consulte `the Unicode Standard `_ para obtener una lista completa de puntos de " +"código con la propiedad ``Nd``." #: ../Doc/library/stdtypes.rst:362 msgid "" @@ -948,6 +940,11 @@ msgid "" ">>> n.bit_length()\n" "6" msgstr "" +">>> n = -37\n" +">>> bin(n)\n" +"'-0b100101'\n" +">>> n.bit_length()\n" +"6" #: ../Doc/library/stdtypes.rst:469 msgid "" @@ -976,6 +973,10 @@ msgid "" " s = s.lstrip('-0b') # remove leading zeros and minus sign\n" " return len(s) # len('100101') --> 6" msgstr "" +"def bit_length(self):\n" +" s = bin(self) # binary representation: bin(-37) --> '-0b100101'\n" +" s = s.lstrip('-0b') # remove leading zeros and minus sign\n" +" return len(s) # len('100101') --> 6" #: ../Doc/library/stdtypes.rst:486 msgid "" @@ -996,12 +997,21 @@ msgid "" ">>> (-n).bit_count()\n" "3" msgstr "" +">>> n = 19\n" +">>> bin(n)\n" +"'0b10011'\n" +">>> n.bit_count()\n" +"3\n" +">>> (-n).bit_count()\n" +"3" #: ../Doc/library/stdtypes.rst:500 msgid "" "def bit_count(self):\n" " return bin(self).count(\"1\")" msgstr "" +"def bit_count(self):\n" +" return bin(self).count(\"1\")" #: ../Doc/library/stdtypes.rst:507 msgid "Return an array of bytes representing an integer." @@ -1047,23 +1057,24 @@ msgid "" "The default values can be used to conveniently turn an integer into a single " "byte object::" msgstr "" +"Los valores predeterminados se pueden utilizar para convertir cómodamente un " +"entero en un objeto de un solo byte:" #: ../Doc/library/stdtypes.rst:537 msgid "" ">>> (65).to_bytes()\n" "b'A'" msgstr "" +">>> (65).to_bytes()\n" +"b'A'" #: ../Doc/library/stdtypes.rst:540 -#, fuzzy msgid "" "However, when using the default arguments, don't try to convert a value " "greater than 255 or you'll get an :exc:`OverflowError`." msgstr "" -"Los valores por defecto se pueden usar para convertir convenientemente un " -"número entero en un objeto de un solo byte. Sim embargo, cuando utilices los " -"argumentos predeterminados, no intentes convertir un valor mayor a 255 u " -"obtendrás una excepción :exc:`OverflowError`::" +"Sin embargo, al utilizar los argumentos predeterminados, no intente " +"convertir un valor mayor que 255 o obtendrá un :exc:`OverflowError`." #: ../Doc/library/stdtypes.rst:545 msgid "" @@ -1077,6 +1088,15 @@ msgid "" "\n" " return bytes((n >> i*8) & 0xff for i in order)" msgstr "" +"def to_bytes(n, length=1, byteorder='big', signed=False):\n" +" if byteorder == 'little':\n" +" order = range(length)\n" +" elif byteorder == 'big':\n" +" order = reversed(range(length))\n" +" else:\n" +" raise ValueError(\"byteorder must be either 'little' or 'big'\")\n" +"\n" +" return bytes((n >> i*8) & 0xff for i in order)" #: ../Doc/library/stdtypes.rst:556 msgid "Added default argument values for ``length`` and ``byteorder``." @@ -1137,21 +1157,33 @@ msgid "" "\n" " return n" msgstr "" +"def from_bytes(bytes, byteorder='big', signed=False):\n" +" if byteorder == 'little':\n" +" little_ordered = list(bytes)\n" +" elif byteorder == 'big':\n" +" little_ordered = list(reversed(bytes))\n" +" else:\n" +" raise ValueError(\"byteorder must be either 'little' or 'big'\")\n" +"\n" +" n = sum(b << i*8 for i, b in enumerate(little_ordered))\n" +" if signed and little_ordered and (little_ordered[-1] & 0x80):\n" +" n -= 1 << 8*len(little_ordered)\n" +"\n" +" return n" #: ../Doc/library/stdtypes.rst:604 msgid "Added default argument value for ``byteorder``." msgstr "Se agregó valor de argumento predeterminado para ``byteorder``." #: ../Doc/library/stdtypes.rst:609 -#, fuzzy msgid "" "Return a pair of integers whose ratio is equal to the original integer and " "has a positive denominator. The integer ratio of integers (whole numbers) " "is always the integer as the numerator and ``1`` as the denominator." msgstr "" -"Retorna una pareja de números enteros cuya proporción es igual a la del " -"numero entero original, y con un denominador positivo. En el caso de números " -"enteros, la proporción siempre es el entero en el numerador y ``1`` en el " +"Devuelve un par de números enteros cuyo cociente es igual al entero original " +"y tiene un denominador positivo. El cociente entero de los números enteros " +"(números naturales) es siempre el entero como numerador y ``1`` como " "denominador." #: ../Doc/library/stdtypes.rst:618 @@ -1159,6 +1191,8 @@ msgid "" "Returns ``True``. Exists for duck type compatibility with :meth:`float." "is_integer`." msgstr "" +"Devuelve ``True``. Existe para compatibilidad de tipo pato con :meth:`float." +"is_integer`." #: ../Doc/library/stdtypes.rst:623 msgid "Additional Methods on Float" @@ -1174,17 +1208,15 @@ msgstr "" "Real`. Los números float tienen además los siguientes métodos." #: ../Doc/library/stdtypes.rst:630 -#, fuzzy msgid "" "Return a pair of integers whose ratio is exactly equal to the original " "float. The ratio is in lowest terms and has a positive denominator. Raises :" "exc:`OverflowError` on infinities and a :exc:`ValueError` on NaNs." msgstr "" -"Retorna una pareja de números enteros cuya proporción es exactamente igual " -"que la del valor en punto flotante original, con un denominador positivo. Si " -"se llama con valores infinitos lanza una excepción de tipo :exc:" -"`OverflowError` y si se llama con *NaN* (*Not A Number*) lanza una excepción " -"de tipo :exc:`ValueError`." +"Devuelve un par de números enteros cuyo cociente es exactamente igual al " +"número flotante original. El cociente está en su mínima expresión y tiene un " +"denominador positivo. Genera :exc:`OverflowError` en los números infinitos " +"y :exc:`ValueError` en los números NaN." #: ../Doc/library/stdtypes.rst:637 msgid "" @@ -1201,6 +1233,10 @@ msgid "" ">>> (3.2).is_integer()\n" "False" msgstr "" +">>> (-2.0).is_integer()\n" +"True\n" +">>> (3.2).is_integer()\n" +"False" #: ../Doc/library/stdtypes.rst:645 msgid "" @@ -1252,7 +1288,7 @@ msgstr "Una cadena de caracteres en hexadecimal sigue este formato::" #: ../Doc/library/stdtypes.rst:674 msgid "[sign] ['0x'] integer ['.' fraction] ['p' exponent]" -msgstr "" +msgstr "[sign] ['0x'] integer ['.' fraction] ['p' exponent]" #: ../Doc/library/stdtypes.rst:676 msgid "" @@ -1297,6 +1333,8 @@ msgid "" ">>> float.fromhex('0x3.a7p10')\n" "3740.0" msgstr "" +">>> float.fromhex('0x3.a7p10')\n" +"3740.0" #: ../Doc/library/stdtypes.rst:699 msgid "" @@ -1311,13 +1349,14 @@ msgid "" ">>> float.hex(3740.0)\n" "'0x1.d380000000000p+11'" msgstr "" +">>> float.hex(3740.0)\n" +"'0x1.d380000000000p+11'" #: ../Doc/library/stdtypes.rst:709 msgid "Hashing of numeric types" msgstr "Calculo del *hash* de tipos numéricos" #: ../Doc/library/stdtypes.rst:711 -#, fuzzy msgid "" "For numbers ``x`` and ``y``, possibly of different types, it's a requirement " "that ``hash(x) == hash(y)`` whenever ``x == y`` (see the :meth:`~object." @@ -1332,20 +1371,19 @@ msgid "" "value of ``P`` is made available to Python as the :attr:`~sys.hash_info." "modulus` attribute of :data:`sys.hash_info`." msgstr "" -"Para dos números ``x`` e ``y``, posiblemente de tipos diferentes, se " -"requiere que ``hash(x) == hash(y)`` sea verdadero siempre que ``x == y`` " -"(véase la documentación sobre el método :meth:`~object.__hash__` para más " -"detalles). Por razones tanto de eficiencia como de facilidad de " -"implementación entre los tipos numéricos diferentes (incluyendo :class:" -"`int`, :class:`float`, :class:`decimal.Decimal` y :class:`fractions." -"Fraction`), el método de *hash* de Python se basa en una función matemática " -"sencilla que está definida para cualquier número racional, con lo cual se " -"puede aplicar a todas las instancias de :class:`int` y :class:`fractions." -"Fraction`, y a todas las instancias finitas de :class:`float` y :class:" -"`decimal.Decimal`. En esencia, lo que hace esta función es una reducción " -"módulo ``P`` para un valor fijo del número primo ``P``. El valor de ``P`` " -"está disponible en Python como atributo de :data:`sys.hash_info` con el " -"nombre de :attr:`modulus`." +"Para los números ``x`` y ``y``, posiblemente de tipos diferentes, es un " +"requisito que ``hash(x) == hash(y)`` siempre que ``x == y`` (consulte la " +"documentación del método :meth:`~object.__hash__` para obtener más " +"detalles). Para facilitar la implementación y la eficiencia en una variedad " +"de tipos numéricos (incluidos :class:`int`, :class:`float`, :class:`decimal." +"Decimal` y :class:`fractions.Fraction`), el hash de Python para tipos " +"numéricos se basa en una única función matemática que se define para " +"cualquier número racional y, por lo tanto, se aplica a todas las instancias " +"de :class:`int` y :class:`fractions.Fraction`, y a todas las instancias " +"finitas de :class:`float` y :class:`decimal.Decimal`. Esencialmente, esta " +"función se da por reducción módulo ``P`` para un primo fijo ``P``. El valor " +"de ``P`` se pone a disposición de Python como el atributo :attr:`~sys." +"hash_info.modulus` de :data:`sys.hash_info`." #: ../Doc/library/stdtypes.rst:726 msgid "" @@ -1476,23 +1514,75 @@ msgid "" " hash_value = -2\n" " return hash_value" msgstr "" +"import sys, math\n" +"\n" +"def hash_fraction(m, n):\n" +" \"\"\"Compute the hash of a rational number m / n.\n" +"\n" +" Assumes m and n are integers, with n positive.\n" +" Equivalent to hash(fractions.Fraction(m, n)).\n" +"\n" +" \"\"\"\n" +" P = sys.hash_info.modulus\n" +" # Remove common factors of P. (Unnecessary if m and n already " +"coprime.)\n" +" while m % P == n % P == 0:\n" +" m, n = m // P, n // P\n" +"\n" +" if n % P == 0:\n" +" hash_value = sys.hash_info.inf\n" +" else:\n" +" # Fermat's Little Theorem: pow(n, P-1, P) is 1, so\n" +" # pow(n, P-2, P) gives the inverse of n modulo P.\n" +" hash_value = (abs(m) % P) * pow(n, P - 2, P) % P\n" +" if m < 0:\n" +" hash_value = -hash_value\n" +" if hash_value == -1:\n" +" hash_value = -2\n" +" return hash_value\n" +"\n" +"def hash_float(x):\n" +" \"\"\"Compute the hash of a float x.\"\"\"\n" +"\n" +" if math.isnan(x):\n" +" return object.__hash__(x)\n" +" elif math.isinf(x):\n" +" return sys.hash_info.inf if x > 0 else -sys.hash_info.inf\n" +" else:\n" +" return hash_fraction(*x.as_integer_ratio())\n" +"\n" +"def hash_complex(z):\n" +" \"\"\"Compute the hash of a complex number z.\"\"\"\n" +"\n" +" hash_value = hash_float(z.real) + sys.hash_info.imag * hash_float(z." +"imag)\n" +" # do a signed reduction modulo 2**sys.hash_info.width\n" +" M = 2**(sys.hash_info.width - 1)\n" +" hash_value = (hash_value & (M - 1)) - (hash_value & M)\n" +" if hash_value == -1:\n" +" hash_value = -2\n" +" return hash_value" #: ../Doc/library/stdtypes.rst:812 -#, fuzzy msgid "Boolean Type - :class:`bool`" -msgstr "Tipos mapa --- :class:`dict`" +msgstr "Tipo Booleano --- :class:`bool`" #: ../Doc/library/stdtypes.rst:814 msgid "" "Booleans represent truth values. The :class:`bool` type has exactly two " "constant instances: ``True`` and ``False``." msgstr "" +"Los valores booleanos representan valores de verdad. El tipo :class:`bool` " +"tiene exactamente dos instancias constantes: ``True`` y ``False``." #: ../Doc/library/stdtypes.rst:822 msgid "" "The built-in function :func:`bool` converts any value to a boolean, if the " "value can be interpreted as a truth value (see section :ref:`truth` above)." msgstr "" +"La función incorporada :func:`bool` convierte cualquier valor en un " +"booleano, si el valor puede interpretarse como un valor de verdad (consulte " +"la sección :ref:`truth` más arriba)." #: ../Doc/library/stdtypes.rst:825 msgid "" @@ -1502,12 +1592,19 @@ msgid "" "\"and\", \"or\", \"xor\". However, the logical operators ``and``, ``or`` and " "``!=`` should be preferred over ``&``, ``|`` and ``^``." msgstr "" +"Para operaciones lógicas, utilice :ref:`boolean operators `, " +"``and``, ``or`` y ``not``. Al aplicar los operadores bit a bit ``&``, ``|``, " +"``^`` a dos booleanos, devuelven un booleano equivalente a las operaciones " +"lógicas \"y\", \"o\", \"xor\". Sin embargo, los operadores lógicos ``and``, " +"``or`` y ``!=`` deberían preferirse a ``&``, ``|`` y ``^``." #: ../Doc/library/stdtypes.rst:834 msgid "" "The use of the bitwise inversion operator ``~`` is deprecated and will raise " "an error in Python 3.16." msgstr "" +"El uso del operador de inversión bit a bit ``~`` está obsoleto y generará un " +"error en Python 3.16." #: ../Doc/library/stdtypes.rst:837 msgid "" @@ -1516,6 +1613,11 @@ msgid "" "1, respectively. However, relying on this is discouraged; explicitly convert " "using :func:`int` instead." msgstr "" +":class:`bool` es una subclase de :class:`int` (consulte :ref:" +"`typesnumeric`). En muchos contextos numéricos, ``False`` y ``True`` se " +"comportan como los números enteros 0 y 1, respectivamente. Sin embargo, no " +"se recomienda confiar en esto; realice la conversión explícitamente " +"utilizando :func:`int`." #: ../Doc/library/stdtypes.rst:845 msgid "Iterator Types" @@ -1622,7 +1724,6 @@ msgid "Generator Types" msgstr "Tipos generador" #: ../Doc/library/stdtypes.rst:909 -#, fuzzy msgid "" "Python's :term:`generator`\\s provide a convenient way to implement the " "iterator protocol. If a container object's :meth:`~iterator.__iter__` " @@ -1632,13 +1733,13 @@ msgid "" "generators can be found in :ref:`the documentation for the yield expression " "`." msgstr "" -"Los :term:`generator` de Python proporcionan una manera cómoda de " -"implementar el protocolo iterador. Si un objeto de tipo contenedor " -"implementa el método :meth:`__iter__` como un generador, de forma automática " -"este retornará un objeto iterador (técnicamente, un objeto generador) que " -"implementa los métodos :meth:`__iter__` y :meth:`~generator.__next__`. Se " -"puede obtener más información acerca de los generadores en :ref:`la " -"documentación de la expresión yield `." +"Los :term:`generator` de Python proporcionan una forma conveniente de " +"implementar el protocolo iterador. Si el método :meth:`~iterator.__iter__` " +"de un objeto contenedor se implementa como generador, devolverá " +"automáticamente un objeto iterador (técnicamente, un objeto generador) que " +"suministra los métodos :meth:`!__iter__` y :meth:`~generator.__next__`. " +"Puede encontrar más información sobre los generadores en :ref:`the " +"documentation for the yield expression `." #: ../Doc/library/stdtypes.rst:921 msgid "Sequence Types --- :class:`list`, :class:`tuple`, :class:`range`" @@ -1863,6 +1964,8 @@ msgid "" ">>> \"gg\" in \"eggs\"\n" "True" msgstr "" +">>> \"gg\" in \"eggs\"\n" +"True" #: ../Doc/library/stdtypes.rst:1028 msgid "" @@ -1885,6 +1988,12 @@ msgid "" ">>> lists\n" "[[3], [3], [3]]" msgstr "" +">>> lists = [[]] * 3\n" +">>> lists\n" +"[[], [], []]\n" +">>> lists[0].append(3)\n" +">>> lists\n" +"[[3], [3], [3]]" #: ../Doc/library/stdtypes.rst:1040 msgid "" @@ -1908,6 +2017,12 @@ msgid "" ">>> lists\n" "[[3], [5], [7]]" msgstr "" +">>> lists = [[] for i in range(3)]\n" +">>> lists[0].append(3)\n" +">>> lists[1].append(5)\n" +">>> lists[2].append(7)\n" +">>> lists\n" +"[[3], [5], [7]]" #: ../Doc/library/stdtypes.rst:1052 msgid "" @@ -2216,7 +2331,6 @@ msgid "``s.remove(x)``" msgstr "``s.remove(x)``" #: ../Doc/library/stdtypes.rst:1212 -#, fuzzy msgid "removes the first item from *s* where ``s[i]`` is equal to *x*" msgstr "elimina el primer elemento de *s* tal que ``s[i]`` sea igual a *x*" @@ -2230,13 +2344,12 @@ msgid "reverses the items of *s* in place" msgstr "invierte el orden de los elementos de *s*, a nivel interno" #: ../Doc/library/stdtypes.rst:1224 -#, fuzzy msgid "" "If *k* is not equal to ``1``, *t* must have the same length as the slice it " "is replacing." msgstr "" -"La secuencia *t* debe tener la misma longitud que el segmento a la que " -"reemplaza." +"Si *k* no es igual a ``1``, *t* debe tener la misma longitud que el segmento " +"a la que reemplaza." #: ../Doc/library/stdtypes.rst:1227 msgid "" @@ -2654,6 +2767,20 @@ msgid "" ">>> list(range(1, 0))\n" "[]" msgstr "" +">>> list(range(10))\n" +"[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n" +">>> list(range(1, 11))\n" +"[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]\n" +">>> list(range(0, 30, 5))\n" +"[0, 5, 10, 15, 20, 25]\n" +">>> list(range(0, 10, 3))\n" +"[0, 3, 6, 9]\n" +">>> list(range(0, -10, -1))\n" +"[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]\n" +">>> list(range(0))\n" +"[]\n" +">>> list(range(1, 0))\n" +"[]" #: ../Doc/library/stdtypes.rst:1432 msgid "" @@ -2748,24 +2875,22 @@ msgstr "" "identidad)." #: ../Doc/library/stdtypes.rst:1495 -#, fuzzy msgid "" "Added the :attr:`~range.start`, :attr:`~range.stop` and :attr:`~range.step` " "attributes." msgstr "" -"Los atributos :attr:`~range.start`, :attr:`~range.stop` y :attr:`~range." -"step`." +"Se agregan los atributos :attr:`~range.start`, :attr:`~range.stop` y :attr:" +"`~range.step`." #: ../Doc/library/stdtypes.rst:1500 -#, fuzzy msgid "" "The `linspace recipe `_ shows how to implement a lazy version of range " "suitable for floating-point applications." msgstr "" -"En `linspace recipe `_ se " -"muestra como implementar una versión *lazy* o perezosa de rango adecuada " -"para aplicaciones de coma flotante." +"El `linspace recipe `_ muestra cómo implementar una versión perezosa de " +"rango adecuada para aplicaciones de punto flotante." #: ../Doc/library/stdtypes.rst:1512 msgid "Text Sequence Type --- :class:`str`" @@ -2820,16 +2945,15 @@ msgstr "" "cadena. Esto es, ``(\"spam \" \"eggs\") == \"spam eggs\"``." #: ../Doc/library/stdtypes.rst:1530 -#, fuzzy msgid "" "See :ref:`strings` for more about the various forms of string literal, " "including supported :ref:`escape sequences `, and the " "``r`` (\"raw\") prefix that disables most escape sequence processing." msgstr "" -"Véase :ref:`strings` para más información acerca de las diferentes formas de " -"expresar cadenas de forma literal, incluidos los caracteres de escape, y del " -"prefijo ``r`` (\"*raw*\") que deshabilita el procesamiento de la mayoría de " -"dichas secuencias de escape." +"Consulte :ref:`strings` para obtener más información sobre las distintas " +"formas de literal de cadena, incluido :ref:`escape sequences ` compatible y el prefijo ``r`` (\"sin procesar\") que deshabilita " +"la mayoría del procesamiento de secuencias de escape." #: ../Doc/library/stdtypes.rst:1534 msgid "" @@ -2881,7 +3005,6 @@ msgstr "" "pasados en los parámetros *encoding* y *errors*, como veremos." #: ../Doc/library/stdtypes.rst:1563 -#, fuzzy msgid "" "If neither *encoding* nor *errors* is given, ``str(object)`` returns :meth:" "`type(object).__str__(object) `, which is the \"informal\" " @@ -2890,12 +3013,12 @@ msgid "" "__str__` method, then :func:`str` falls back to returning :func:" "`repr(object) `." msgstr "" -"Si no se especifica ni *encoding* ni *errors*, ``str(object)`` retorna :meth:" -"`type(object).__str__(object) `, que es la representación " -"\"informal\" o mas cómoda de usar, en forma de cadena de caracteres, del " -"valor de *object*. Para una cadena de caracteres, es la cadena en sí. Si " -"*object* no tiene un método :meth:`~object.__str__`, entonces :func:`str` " -"usará como reemplazo el método :meth:`repr(object) `." +"Si no se proporciona ni *encoding* ni *errors*, ``str(object)`` devuelve :" +"meth:`type(object).__str__(object) `, que es la " +"representación de cadena \"informal\" o fácilmente imprimible de *object*. " +"Para los objetos de cadena, se trata de la cadena en sí. Si *object* no " +"tiene un método :meth:`~object.__str__`, entonces :func:`str` vuelve a " +"devolver :func:`repr(object) `." #: ../Doc/library/stdtypes.rst:1575 msgid "" @@ -2937,6 +3060,8 @@ msgid "" ">>> str(b'Zoot!')\n" "\"b'Zoot!'\"" msgstr "" +">>> str(b'Zoot!')\n" +"\"b'Zoot!'\"" #: ../Doc/library/stdtypes.rst:1592 msgid "" @@ -3032,14 +3157,14 @@ msgstr "" "pero el método :meth:`casefold` lo convertirá a ``\"ss\"``." #: ../Doc/library/stdtypes.rst:1644 -#, fuzzy msgid "" "The casefolding algorithm is `described in section 3.13 'Default Case " "Folding' of the Unicode Standard `__." msgstr "" -"El algoritmo de normalización a minúsculas se describe en la sección 3.13 " -"del estándar Unicode." +"El algoritmo de plegado de mayúsculas y minúsculas es `described in section " +"3.13 'Default Case Folding' of the Unicode Standard `__." #: ../Doc/library/stdtypes.rst:1653 msgid "" @@ -3068,19 +3193,22 @@ msgid "" "If *sub* is empty, returns the number of empty strings between characters " "which is the length of the string plus one." msgstr "" +"Si *sub* está vacío, devuelve el número de cadenas vacías entre caracteres, " +"que es la longitud de la cadena más uno." #: ../Doc/library/stdtypes.rst:1671 msgid "Return the string encoded to :class:`bytes`." -msgstr "" +msgstr "Devuelve la cadena codificada a :class:`bytes`." #: ../Doc/library/stdtypes.rst:1673 ../Doc/library/stdtypes.rst:2824 msgid "" "*encoding* defaults to ``'utf-8'``; see :ref:`standard-encodings` for " "possible values." msgstr "" +"El valor predeterminado de *encoding* es ``'utf-8'``; consulte :ref:" +"`standard-encodings` para conocer los valores posibles." #: ../Doc/library/stdtypes.rst:1676 -#, fuzzy msgid "" "*errors* controls how encoding errors are handled. If ``'strict'`` (the " "default), a :exc:`UnicodeError` exception is raised. Other possible values " @@ -3088,16 +3216,12 @@ msgid "" "``'backslashreplace'`` and any other name registered via :func:`codecs." "register_error`. See :ref:`error-handlers` for details." msgstr "" -"Retorna una versión codificada en forma de bytes. La codificación por " -"defecto es ``'utf-8'``. El parámetro *errors* permite especificar diferentes " -"esquemas de gestión de errores. El valor por defecto de *errors* es " -"``'strict'``, que significa que cualquier error en la codificación lanza una " -"excepción de tipo :exc:`UnicodeError`. Otros valores posibles son " -"``'ignore'``, ``'replace'``, ``'xmlcharrefreplace'``, ``'backslashreplace'`` " -"y cualquier otro nombre que se haya registrado mediante la función :func:" -"`codecs.register_error`, véase la sección :ref:`error-handlers`. Para una " -"lista de los posibles sistemas de codificación, véase la sección :ref:" -"`standard-encodings`." +"*errors* controla cómo se manejan los errores de codificación. Si se usa " +"``'strict'`` (el valor predeterminado), se genera una excepción :exc:" +"`UnicodeError`. Otros valores posibles son ``'ignore'``, ``'replace'``, " +"``'xmlcharrefreplace'``, ``'backslashreplace'`` y cualquier otro nombre " +"registrado mediante :func:`codecs.register_error`. Consulte :ref:`error-" +"handlers` para obtener más detalles." #: ../Doc/library/stdtypes.rst:1683 msgid "" @@ -3105,19 +3229,21 @@ msgid "" "unless an encoding error actually occurs, :ref:`devmode` is enabled or a :" "ref:`debug build ` is used." msgstr "" +"Por razones de rendimiento, no se verifica la validez del valor de *errors* " +"a menos que realmente se produzca un error de codificación, se habilite :ref:" +"`devmode` o se utilice :ref:`debug build `." #: ../Doc/library/stdtypes.rst:1688 ../Doc/library/stdtypes.rst:2843 msgid "Added support for keyword arguments." msgstr "Añadido soporte para poder usar parámetros por nombre." #: ../Doc/library/stdtypes.rst:1691 ../Doc/library/stdtypes.rst:2846 -#, fuzzy msgid "" "The value of the *errors* argument is now checked in :ref:`devmode` and in :" "ref:`debug mode `." msgstr "" -"El argumento *errors* ahora se verifica en modo de desarrollo y en una :ref:" -"`compilación de depuración `." +"El valor del argumento *errors* ahora se comprueba en :ref:`devmode` y en :" +"ref:`debug mode `." #: ../Doc/library/stdtypes.rst:1698 msgid "" @@ -3187,6 +3313,8 @@ msgid "" ">>> 'Py' in 'Python'\n" "True" msgstr "" +">>> 'Py' in 'Python'\n" +"True" #: ../Doc/library/stdtypes.rst:1743 msgid "" @@ -3272,7 +3400,6 @@ msgstr "" "isdigit()`` o ``c.isnumeric()``." #: ../Doc/library/stdtypes.rst:1804 -#, fuzzy msgid "" "Return ``True`` if all characters in the string are alphabetic and there is " "at least one character, ``False`` otherwise. Alphabetic characters are " @@ -3283,12 +3410,14 @@ msgid "" "of the Unicode Standard `_." msgstr "" -"Retorna ``True`` si todos los caracteres de la cadena son alfabéticos y hay, " -"al menos, un carácter, en caso contrario, retorna ``False``. Los caracteres " -"alfabéticos son aquellos definidos en la base de datos de Unicode como " -"\"Letter\", es decir, aquellos cuya propiedad de categoría general es " -"\"Lm\", \"Lt\", \"Lu\", \"Ll\" o \"Lo\". Nótese que esta definición de " -"\"Alfabético\" es diferente de la que usa el estándar Unicode." +"Devuelve ``True`` si todos los caracteres de la cadena son alfabéticos y hay " +"al menos un carácter, ``False`` en caso contrario. Los caracteres " +"alfabéticos son aquellos caracteres definidos en la base de datos de " +"caracteres Unicode como \"Letra\", es decir, aquellos cuya propiedad de " +"categoría general es \"Lm\", \"Lt\", \"Lu\", \"Ll\" o \"Lo\". Tenga en " +"cuenta que esto es diferente de `Alphabetic property defined in the section " +"4.10 'Letters, Alphabetic, and Ideographic' of the Unicode Standard `_." #: ../Doc/library/stdtypes.rst:1815 msgid "" @@ -3342,14 +3471,12 @@ msgstr "" "acuerdo a la especificación del lenguaje, véase :ref:`identifiers`." #: ../Doc/library/stdtypes.rst:1847 -#, fuzzy msgid "" ":func:`keyword.iskeyword` can be used to test whether string ``s`` is a " "reserved identifier, such as :keyword:`def` and :keyword:`class`." msgstr "" -"Se puede usar la función :func:`keyword.iskeyword` para comprobar si la " -"cadena ``s`` es un identificador reservado, como :keyword:`def` o :keyword:" -"`class`." +":func:`keyword.iskeyword` se puede utilizar para probar si la cadena ``s`` " +"es un identificador reservado, como :keyword:`def` y :keyword:`class`." #: ../Doc/library/stdtypes.rst:1850 msgid "Example: ::" @@ -3364,6 +3491,12 @@ msgid "" ">>> 'def'.isidentifier(), iskeyword('def')\n" "(True, True)" msgstr "" +">>> from keyword import iskeyword\n" +"\n" +">>> 'hello'.isidentifier(), iskeyword('hello')\n" +"(True, False)\n" +">>> 'def'.isidentifier(), iskeyword('def')\n" +"(True, True)" #: ../Doc/library/stdtypes.rst:1863 msgid "" @@ -3486,14 +3619,14 @@ msgstr "" "minúsculas [4]_." #: ../Doc/library/stdtypes.rst:1944 -#, fuzzy msgid "" "The lowercasing algorithm used is `described in section 3.13 'Default Case " "Folding' of the Unicode Standard `__." msgstr "" -"El algoritmo usado para la conversión a minúsculas está descrito en la " -"sección 3.13 del estándar Unicode." +"El algoritmo de minúsculas utilizado es `described in section 3.13 'Default " +"Case Folding' of the Unicode Standard `__." #: ../Doc/library/stdtypes.rst:1951 msgid "" @@ -3516,6 +3649,10 @@ msgid "" ">>> 'www.example.com'.lstrip('cmowz.')\n" "'example.com'" msgstr "" +">>> ' spacious '.lstrip()\n" +"'spacious '\n" +">>> 'www.example.com'.lstrip('cmowz.')\n" +"'example.com'" #: ../Doc/library/stdtypes.rst:1961 msgid "" @@ -3533,6 +3670,10 @@ msgid "" ">>> 'Arthur: three!'.removeprefix('Arthur: ')\n" "'three!'" msgstr "" +">>> 'Arthur: three!'.lstrip('Arthur: ')\n" +"'ee!'\n" +">>> 'Arthur: three!'.removeprefix('Arthur: ')\n" +"'three!'" #: ../Doc/library/stdtypes.rst:1972 msgid "" @@ -3595,6 +3736,10 @@ msgid "" ">>> 'BaseTestCase'.removeprefix('Test')\n" "'BaseTestCase'" msgstr "" +">>> 'TestHook'.removeprefix('Test')\n" +"'Hook'\n" +">>> 'BaseTestCase'.removeprefix('Test')\n" +"'BaseTestCase'" #: ../Doc/library/stdtypes.rst:2009 msgid "" @@ -3613,23 +3758,26 @@ msgid "" ">>> 'TmpDirMixin'.removesuffix('Tests')\n" "'TmpDirMixin'" msgstr "" +">>> 'MiscTests'.removesuffix('Tests')\n" +"'Misc'\n" +">>> 'TmpDirMixin'.removesuffix('Tests')\n" +"'TmpDirMixin'" #: ../Doc/library/stdtypes.rst:2023 -#, fuzzy msgid "" "Return a copy of the string with all occurrences of substring *old* replaced " "by *new*. If *count* is given, only the first *count* occurrences are " "replaced. If *count* is not specified or ``-1``, then all occurrences are " "replaced." msgstr "" -"Retorna una copia de la cadena con todas las ocurrencias de la cadena *old* " -"sustituidas por *new*. Si se utiliza el parámetro *count*, solo se cambian " -"las primeras *count* ocurrencias." +"Devuelve una copia de la cadena con todas las ocurrencias de la subcadena " +"*old* reemplazadas por *new*. Si se proporciona *count*, solo se reemplazan " +"las primeras ocurrencias de *count*. Si no se especifica *count* o ``-1``, " +"se reemplazan todas las ocurrencias." #: ../Doc/library/stdtypes.rst:2027 -#, fuzzy msgid "*count* is now supported as a keyword argument." -msgstr "El parámetro *delete* se puede ahora especificar por nombre." +msgstr "*count* es ahora soportado como argumento de palabra clave." #: ../Doc/library/stdtypes.rst:2033 msgid "" @@ -3712,6 +3860,10 @@ msgid "" ">>> 'mississippi'.rstrip('ipz')\n" "'mississ'" msgstr "" +">>> ' spacious '.rstrip()\n" +"' spacious'\n" +">>> 'mississippi'.rstrip('ipz')\n" +"'mississ'" #: ../Doc/library/stdtypes.rst:2080 msgid "" @@ -3729,6 +3881,10 @@ msgid "" ">>> 'Monty Python'.removesuffix(' Python')\n" "'Monty'" msgstr "" +">>> 'Monty Python'.rstrip(' Python')\n" +"'M'\n" +">>> 'Monty Python'.removesuffix(' Python')\n" +"'Monty'" #: ../Doc/library/stdtypes.rst:2090 msgid "" @@ -3746,7 +3902,6 @@ msgstr "" "número de divisiones a realizar (se harán todas las que se puedan)." #: ../Doc/library/stdtypes.rst:2096 -#, fuzzy msgid "" "If *sep* is given, consecutive delimiters are not grouped together and are " "deemed to delimit empty strings (for example, ``'1,,2'.split(',')`` returns " @@ -3755,12 +3910,12 @@ msgid "" "split`). Splitting an empty string with a specified separator returns " "``['']``." msgstr "" -"Si se especifica *sep*, las repeticiones de caracteres delimitadores no se " -"agrupan juntos, sino que se considera que están delimitando cadenas vacías " -"(por ejemplo, ``'1,,2'.split(',')`` retorna ``['1', '', '2']``). El " -"parámetro *sep* puede contener más de un carácter (por ejemplo, ``'1<>2<>3'." -"split('<>')`` retorna ``['1', '2', '3']``). Dividir una cadena vacía con un " -"separador determinado retornará ``['']``." +"Si se proporciona *sep*, los delimitadores consecutivos no se agrupan y se " +"consideran que delimitan cadenas vacías (por ejemplo, ``'1,,2'.split(',')`` " +"devuelve ``['1', '', '2']``). El argumento *sep* puede constar de varios " +"caracteres como un único delimitador (para dividir con varios delimitadores, " +"utilice :func:`re.split`). Dividir una cadena vacía con un separador " +"especificado devuelve ``['']``." #: ../Doc/library/stdtypes.rst:2103 ../Doc/library/stdtypes.rst:2121 #: ../Doc/library/stdtypes.rst:2173 ../Doc/library/stdtypes.rst:2241 @@ -3786,6 +3941,14 @@ msgid "" ">>> '1<>2<>3<4'.split('<>')\n" "['1', '2', '3<4']" msgstr "" +">>> '1,2,3'.split(',')\n" +"['1', '2', '3']\n" +">>> '1,2,3'.split(',', maxsplit=1)\n" +"['1', '2,3']\n" +">>> '1,2,,3,'.split(',')\n" +"['1', '2', '', '3', '']\n" +">>> '1<>2<>3<4'.split('<>')\n" +"['1', '2', '3<4']" #: ../Doc/library/stdtypes.rst:2114 msgid "" @@ -3813,6 +3976,12 @@ msgid "" ">>> ' 1 2 3 '.split()\n" "['1', '2', '3']" msgstr "" +">>> '1 2 3'.split()\n" +"['1', '2', '3']\n" +">>> '1 2 3'.split(maxsplit=1)\n" +"['1', '2 3']\n" +">>> ' 1 2 3 '.split()\n" +"['1', '2', '3']" #: ../Doc/library/stdtypes.rst:2136 msgid "" @@ -3941,6 +4110,10 @@ msgid "" ">>> 'ab c\\n\\nde fg\\rkl\\r\\n'.splitlines(keepends=True)\n" "['ab c\\n', '\\n', 'de fg\\r', 'kl\\r\\n']" msgstr "" +">>> 'ab c\\n\\nde fg\\rkl\\r\\n'.splitlines()\n" +"['ab c', '', 'de fg', 'kl']\n" +">>> 'ab c\\n\\nde fg\\rkl\\r\\n'.splitlines(keepends=True)\n" +"['ab c\\n', '\\n', 'de fg\\r', 'kl\\r\\n']" #: ../Doc/library/stdtypes.rst:2180 msgid "" @@ -3959,6 +4132,10 @@ msgid "" ">>> \"One line\\n\".splitlines()\n" "['One line']" msgstr "" +">>> \"\".splitlines()\n" +"[]\n" +">>> \"One line\\n\".splitlines()\n" +"['One line']" #: ../Doc/library/stdtypes.rst:2189 msgid "For comparison, ``split('\\n')`` gives::" @@ -3971,6 +4148,10 @@ msgid "" ">>> 'Two lines\\n'.split('\\n')\n" "['Two lines', '']" msgstr "" +">>> ''.split('\\n')\n" +"['']\n" +">>> 'Two lines\\n'.split('\\n')\n" +"['Two lines', '']" #: ../Doc/library/stdtypes.rst:2199 msgid "" @@ -4007,6 +4188,10 @@ msgid "" ">>> 'www.example.com'.strip('cmowz.')\n" "'example'" msgstr "" +">>> ' spacious '.strip()\n" +"'spacious'\n" +">>> 'www.example.com'.strip('cmowz.')\n" +"'example'" #: ../Doc/library/stdtypes.rst:2218 msgid "" @@ -4027,6 +4212,9 @@ msgid "" ">>> comment_string.strip('.#! ')\n" "'Section 3.2.1 Issue #32'" msgstr "" +">>> comment_string = '#....... Section 3.2.1 Issue #32 .......'\n" +">>> comment_string.strip('.#! ')\n" +"'Section 3.2.1 Issue #32'" #: ../Doc/library/stdtypes.rst:2231 msgid "" @@ -4051,6 +4239,8 @@ msgid "" ">>> 'Hello world'.title()\n" "'Hello World'" msgstr "" +">>> 'Hello world'.title()\n" +"'Hello World'" #: ../Doc/library/stdtypes.rst:2246 ../Doc/library/stdtypes.rst:3472 msgid "" @@ -4071,6 +4261,8 @@ msgid "" ">>> \"they're bill's friends from the UK\".title()\n" "\"They'Re Bill'S Friends From The Uk\"" msgstr "" +">>> \"they're bill's friends from the UK\".title()\n" +"\"They'Re Bill'S Friends From The Uk\"" #: ../Doc/library/stdtypes.rst:2254 msgid "" @@ -4099,9 +4291,16 @@ msgid "" ">>> titlecase(\"they're bill's friends.\")\n" "\"They're Bill's Friends.\"" msgstr "" +">>> import re\n" +">>> def titlecase(s):\n" +"... return re.sub(r\"[A-Za-z]+('[A-Za-z]+)?\",\n" +"... lambda mo: mo.group(0).capitalize(),\n" +"... s)\n" +"...\n" +">>> titlecase(\"they're bill's friends.\")\n" +"\"They're Bill's Friends.\"" #: ../Doc/library/stdtypes.rst:2272 -#, fuzzy msgid "" "Return a copy of the string in which each character has been mapped through " "the given translation table. The table must be an object that implements " @@ -4112,17 +4311,15 @@ msgid "" "delete the character from the return string; or raise a :exc:`LookupError` " "exception, to map the character to itself." msgstr "" -"Retorna una copia de la cadena en la que cada carácter ha sido sustituido " -"por su equivalente definido en la tabla de traducción dada. La tabla puede " -"ser cualquier objeto que soporta el acceso mediante índices implementado en " -"método :meth:`__getitem__`, normalmente un objeto de tipo :term:" -"`mapa` o :term:`secuencia`. Cuando se accede como índice " -"con un código Unicode (un entero), el objeto tabla puede hacer una de las " -"siguientes cosas: retornar otro código Unicode o retornar una cadena de " -"caracteres, de forma que se usarán uno u otro como reemplazo en la cadena de " -"salida; retorna ``None`` para eliminar el carácter en la cadena de salida, o " -"lanza una excepción de tipo :exc:`LookupError`, que hará que el carácter se " -"copie igual en la cadena de salida." +"Devuelve una copia de la cadena en la que se ha asignado cada carácter a " +"través de la tabla de traducción dada. La tabla debe ser un objeto que " +"implemente la indexación mediante :meth:`~object.__getitem__`, normalmente :" +"term:`mapping` o :term:`sequence`. Cuando se indexa mediante un ordinal " +"Unicode (un entero), el objeto de tabla puede realizar cualquiera de las " +"siguientes acciones: devolver un ordinal Unicode o una cadena, para asignar " +"el carácter a uno o más caracteres; devolver ``None``, para eliminar el " +"carácter de la cadena de retorno; o generar una excepción :exc:" +"`LookupError`, para asignar el carácter a sí mismo." #: ../Doc/library/stdtypes.rst:2281 msgid "" @@ -4156,14 +4353,14 @@ msgstr "" "(Letra, Título)." #: ../Doc/library/stdtypes.rst:2296 -#, fuzzy msgid "" "The uppercasing algorithm used is `described in section 3.13 'Default Case " "Folding' of the Unicode Standard `__." msgstr "" -"El algoritmo de paso a mayúsculas es el descrito en la sección 3.13 del " -"estándar Unicode." +"El algoritmo de mayúsculas utilizado es `described in section 3.13 'Default " +"Case Folding' of the Unicode Standard `__." #: ../Doc/library/stdtypes.rst:2303 msgid "" @@ -4185,6 +4382,10 @@ msgid "" ">>> \"-42\".zfill(5)\n" "'-0042'" msgstr "" +">>> \"42\".zfill(5)\n" +"'00042'\n" +">>> \"-42\".zfill(5)\n" +"'-0042'" #: ../Doc/library/stdtypes.rst:2321 msgid "``printf``-style String Formatting" @@ -4210,7 +4411,6 @@ msgstr "" "extensión." #: ../Doc/library/stdtypes.rst:2342 -#, fuzzy msgid "" "String objects have one unique built-in operation: the ``%`` operator " "(modulo). This is also known as the string *formatting* or *interpolation* " @@ -4219,13 +4419,12 @@ msgid "" "elements of *values*. The effect is similar to using the :c:func:`sprintf` " "function in the C language. For example:" msgstr "" -"Las cadenas de caracteres tienen una operación básica: El operador ``%`` " -"(módulo). Esta operación se conoce también como *formateo* de cadenas y " -"operador de interpolación. Dada la expresión ``formato % valores`` (donde " -"*formato* es una cadena), las especificaciones de conversión indicadas en la " -"cadena con el símbolo ``%`` son reemplazadas por cero o más elementos de " -"*valores*. El efecto es similar a usar la función del lenguaje C :c:func:" -"`sprintf`." +"Los objetos de cadena tienen una única operación incorporada: el operador " +"``%`` (módulo). También se lo conoce como operador de cadena *formatting* o " +"*interpolation*. Dado ``format % values`` (donde *format* es una cadena), " +"las especificaciones de conversión ``%`` en *format* se reemplazan con cero " +"o más elementos de *values*. El efecto es similar al uso de la función :c:" +"func:`sprintf` en el lenguaje C. Por ejemplo:" #: ../Doc/library/stdtypes.rst:2349 #, python-format @@ -4233,6 +4432,8 @@ msgid "" ">>> print('%s has %d quote types.' % ('Python', 2))\n" "Python has 2 quote types." msgstr "" +">>> print('%s has %d quote types.' % ('Python', 2))\n" +"Python has 2 quote types." #: ../Doc/library/stdtypes.rst:2354 msgid "" @@ -4460,7 +4661,6 @@ msgid "``'e'``" msgstr "``'e'``" #: ../Doc/library/stdtypes.rst:2446 ../Doc/library/stdtypes.rst:3665 -#, fuzzy msgid "Floating-point exponential format (lowercase)." msgstr "Formato en coma flotante exponencial (en minúsculas)." @@ -4469,7 +4669,6 @@ msgid "``'E'``" msgstr "``'E'``" #: ../Doc/library/stdtypes.rst:2448 ../Doc/library/stdtypes.rst:3667 -#, fuzzy msgid "Floating-point exponential format (uppercase)." msgstr "Formato en coma flotante exponencial (en mayúsculas)." @@ -4479,7 +4678,6 @@ msgstr "``'f'``" #: ../Doc/library/stdtypes.rst:2450 ../Doc/library/stdtypes.rst:2452 #: ../Doc/library/stdtypes.rst:3669 ../Doc/library/stdtypes.rst:3671 -#, fuzzy msgid "Floating-point decimal format." msgstr "Formato en coma flotante decimal." @@ -4492,28 +4690,26 @@ msgid "``'g'``" msgstr "``'g'``" #: ../Doc/library/stdtypes.rst:2454 ../Doc/library/stdtypes.rst:3673 -#, fuzzy msgid "" "Floating-point format. Uses lowercase exponential format if exponent is less " "than -4 or not less than precision, decimal format otherwise." msgstr "" -"Formato en coma flotante. Usa formato exponencial con minúsculas si el " -"exponente es menor que -4 o no es menor que la precisión, en caso contrario " -"usa el formato decimal." +"Formato de punto flotante. Utiliza el formato exponencial en minúsculas si " +"el exponente es menor que -4 o igual que la precisión; en caso contrario, " +"utiliza el formato decimal." #: ../Doc/library/stdtypes.rst:2458 ../Doc/library/stdtypes.rst:3677 msgid "``'G'``" msgstr "``'G'``" #: ../Doc/library/stdtypes.rst:2458 ../Doc/library/stdtypes.rst:3677 -#, fuzzy msgid "" "Floating-point format. Uses uppercase exponential format if exponent is less " "than -4 or not less than precision, decimal format otherwise." msgstr "" -"Formato en coma flotante. Usa formato exponencial con mayúsculas si el " -"exponente es menor que -4 o no es menor que la precisión, en caso contrario " -"usa el formato decimal." +"Formato de punto flotante. Utiliza el formato exponencial en mayúsculas si " +"el exponente es menor que -4 o igual que la precisión; en caso contrario, " +"utiliza el formato decimal." #: ../Doc/library/stdtypes.rst:2462 ../Doc/library/stdtypes.rst:3681 msgid "``'c'``" @@ -5052,6 +5248,8 @@ msgid "" "a = \"abc\"\n" "b = a.replace(\"a\", \"f\")" msgstr "" +"a = \"abc\"\n" +"b = a.replace(\"a\", \"f\")" #: ../Doc/library/stdtypes.rst:2742 msgid "and::" @@ -5062,6 +5260,8 @@ msgid "" "a = b\"abc\"\n" "b = a.replace(b\"a\", b\"f\")" msgstr "" +"a = b\"abc\"\n" +"b = a.replace(b\"a\", b\"f\")" #: ../Doc/library/stdtypes.rst:2747 msgid "" @@ -5116,6 +5316,8 @@ msgid "" "If *sub* is empty, returns the number of empty slices between characters " "which is the length of the bytes object plus one." msgstr "" +"Si *sub* está vacío, devuelve el número de porciones vacías entre " +"caracteres, que es la longitud del objeto de bytes más uno." #: ../Doc/library/stdtypes.rst:2771 ../Doc/library/stdtypes.rst:2882 #: ../Doc/library/stdtypes.rst:2895 ../Doc/library/stdtypes.rst:2961 @@ -5140,6 +5342,10 @@ msgid "" ">>> b'BaseTestCase'.removeprefix(b'Test')\n" "b'BaseTestCase'" msgstr "" +">>> b'TestHook'.removeprefix(b'Test')\n" +"b'Hook'\n" +">>> b'BaseTestCase'.removeprefix(b'Test')\n" +"b'BaseTestCase'" #: ../Doc/library/stdtypes.rst:2787 msgid "The *prefix* may be any :term:`bytes-like object`." @@ -5181,6 +5387,10 @@ msgid "" ">>> b'TmpDirMixin'.removesuffix(b'Tests')\n" "b'TmpDirMixin'" msgstr "" +">>> b'MiscTests'.removesuffix(b'Tests')\n" +"b'Misc'\n" +">>> b'TmpDirMixin'.removesuffix(b'Tests')\n" +"b'TmpDirMixin'" #: ../Doc/library/stdtypes.rst:2809 msgid "The *suffix* may be any :term:`bytes-like object`." @@ -5190,7 +5400,7 @@ msgstr "" #: ../Doc/library/stdtypes.rst:2822 msgid "Return the bytes decoded to a :class:`str`." -msgstr "" +msgstr "Devuelve los bytes decodificados a un :class:`str`." #: ../Doc/library/stdtypes.rst:2827 msgid "" @@ -5199,6 +5409,11 @@ msgid "" "are ``'ignore'``, ``'replace'``, and any other name registered via :func:" "`codecs.register_error`. See :ref:`error-handlers` for details." msgstr "" +"*errors* controla cómo se manejan los errores de decodificación. Si se usa " +"``'strict'`` (el valor predeterminado), se genera una excepción :exc:" +"`UnicodeError`. Otros valores posibles son ``'ignore'``, ``'replace'`` y " +"cualquier otro nombre registrado mediante :func:`codecs.register_error`. " +"Consulte :ref:`error-handlers` para obtener más detalles." #: ../Doc/library/stdtypes.rst:2833 msgid "" @@ -5206,17 +5421,19 @@ msgid "" "unless a decoding error actually occurs, :ref:`devmode` is enabled or a :ref:" "`debug build ` is used." msgstr "" +"Por razones de rendimiento, no se verifica la validez del valor de *errors* " +"a menos que realmente se produzca un error de decodificación, se habilite :" +"ref:`devmode` o se utilice :ref:`debug build `." #: ../Doc/library/stdtypes.rst:2839 -#, fuzzy msgid "" "Passing the *encoding* argument to :class:`str` allows decoding any :term:" "`bytes-like object` directly, without needing to make a temporary :class:`!" "bytes` or :class:`!bytearray` object." msgstr "" -"Pasando el parámetro *encoding* a la clase :class:`str` permite decodificar " -"cualquier :term:`objeto tipo binario ` directamente, sin " -"necesidad de crear una objeto temporal de tipo *bytes* o *bytearray*." +"Pasar el argumento *encoding* a :class:`str` permite decodificar cualquier :" +"term:`bytes-like object` directamente, sin necesidad de crear un objeto " +"temporal :class:`!bytes` o :class:`!bytearray`." #: ../Doc/library/stdtypes.rst:2854 msgid "" @@ -5265,6 +5482,8 @@ msgid "" ">>> b'Py' in b'Python'\n" "True" msgstr "" +">>> b'Py' in b'Python'\n" +"True" #: ../Doc/library/stdtypes.rst:2889 msgid "" @@ -5428,6 +5647,8 @@ msgid "" ">>> b'read this short text'.translate(None, b'aeiou')\n" "b'rd ths shrt txt'" msgstr "" +">>> b'read this short text'.translate(None, b'aeiou')\n" +"b'rd ths shrt txt'" #: ../Doc/library/stdtypes.rst:3019 msgid "*delete* is now supported as a keyword argument." @@ -5498,6 +5719,10 @@ msgid "" ">>> b'www.example.com'.lstrip(b'cmowz.')\n" "b'example.com'" msgstr "" +">>> b' spacious '.lstrip()\n" +"b'spacious '\n" +">>> b'www.example.com'.lstrip(b'cmowz.')\n" +"b'example.com'" #: ../Doc/library/stdtypes.rst:3072 msgid "" @@ -5518,6 +5743,10 @@ msgid "" ">>> b'Arthur: three!'.removeprefix(b'Arthur: ')\n" "b'three!'" msgstr "" +">>> b'Arthur: three!'.lstrip(b'Arthur: ')\n" +"b'ee!'\n" +">>> b'Arthur: three!'.removeprefix(b'Arthur: ')\n" +"b'three!'" #: ../Doc/library/stdtypes.rst:3091 msgid "" @@ -5574,6 +5803,10 @@ msgid "" ">>> b'mississippi'.rstrip(b'ipz')\n" "b'mississ'" msgstr "" +">>> b' spacious '.rstrip()\n" +"b' spacious'\n" +">>> b'mississippi'.rstrip(b'ipz')\n" +"b'mississ'" #: ../Doc/library/stdtypes.rst:3128 msgid "" @@ -5594,6 +5827,10 @@ msgid "" ">>> b'Monty Python'.removesuffix(b' Python')\n" "b'Monty'" msgstr "" +">>> b'Monty Python'.rstrip(b' Python')\n" +"b'M'\n" +">>> b'Monty Python'.removesuffix(b' Python')\n" +"b'Monty'" #: ../Doc/library/stdtypes.rst:3147 msgid "" @@ -5611,7 +5848,6 @@ msgstr "" "divisiones (se hacen todas las posibles divisiones)." #: ../Doc/library/stdtypes.rst:3153 -#, fuzzy msgid "" "If *sep* is given, consecutive delimiters are not grouped together and are " "deemed to delimit empty subsequences (for example, ``b'1,,2'.split(b',')`` " @@ -5621,14 +5857,13 @@ msgid "" "the type of object being split. The *sep* argument may be any :term:`bytes-" "like object`." msgstr "" -"Si se especifica *sep*, las repeticiones de caracteres delimitadores no se " -"agrupan juntos, sino que se considera que están delimitando cadenas vacías " -"(por ejemplo, ``b'1,,2'.split(b',')`` retorna ``[b'1', b'', b'2']``). El " -"parámetro *sep* puede contener más de un carácter (por ejemplo, ``b'1<>2<>3'." -"split(b'<>')`` retorna ``[b'1', b'2', b'3']``). Dividir una cadena vacía con " -"un separador determinado retornará ``[b'']`` o ``[bytearray(b'')]`` " -"dependiendo del tipo de objeto dividido. El parámetro *sep* puede ser " -"cualquier :term:`objeto tipo binario `." +"Si se proporciona *sep*, los delimitadores consecutivos no se agrupan y se " +"consideran que delimitan subsecuencias vacías (por ejemplo, ``b'1,,2'." +"split(b',')`` devuelve ``[b'1', b'', b'2']``). El argumento *sep* puede " +"consistir en una secuencia multibyte como un único delimitador. Dividir una " +"secuencia vacía con un separador especificado devuelve ``[b'']`` o " +"``[bytearray(b'')]`` según el tipo de objeto que se esté dividiendo. El " +"argumento *sep* puede ser cualquier :term:`bytes-like object`." #: ../Doc/library/stdtypes.rst:3163 msgid "" @@ -5641,6 +5876,14 @@ msgid "" ">>> b'1<>2<>3<4'.split(b'<>')\n" "[b'1', b'2', b'3<4']" msgstr "" +">>> b'1,2,3'.split(b',')\n" +"[b'1', b'2', b'3']\n" +">>> b'1,2,3'.split(b',', maxsplit=1)\n" +"[b'1', b'2,3']\n" +">>> b'1,2,,3,'.split(b',')\n" +"[b'1', b'2', b'', b'3', b'']\n" +">>> b'1<>2<>3<4'.split(b'<>')\n" +"[b'1', b'2', b'3<4']" #: ../Doc/library/stdtypes.rst:3172 msgid "" @@ -5668,6 +5911,12 @@ msgid "" ">>> b' 1 2 3 '.split()\n" "[b'1', b'2', b'3']" msgstr "" +">>> b'1 2 3'.split()\n" +"[b'1', b'2', b'3']\n" +">>> b'1 2 3'.split(maxsplit=1)\n" +"[b'1', b'2 3']\n" +">>> b' 1 2 3 '.split()\n" +"[b'1', b'2', b'3']" #: ../Doc/library/stdtypes.rst:3193 msgid "" @@ -5694,6 +5943,10 @@ msgid "" ">>> b'www.example.com'.strip(b'cmowz.')\n" "b'example'" msgstr "" +">>> b' spacious '.strip()\n" +"b'spacious'\n" +">>> b'www.example.com'.strip(b'cmowz.')\n" +"b'example'" #: ../Doc/library/stdtypes.rst:3206 msgid "" @@ -5761,6 +6014,10 @@ msgid "" ">>> b'01\\t012\\t0123\\t01234'.expandtabs(4)\n" "b'01 012 0123 01234'" msgstr "" +">>> b'01\\t012\\t0123\\t01234'.expandtabs()\n" +"b'01 012 0123 01234'\n" +">>> b'01\\t012\\t0123\\t01234'.expandtabs(4)\n" +"b'01 012 0123 01234'" #: ../Doc/library/stdtypes.rst:3264 msgid "" @@ -5784,6 +6041,10 @@ msgid "" ">>> b'ABC abc1'.isalnum()\n" "False" msgstr "" +">>> b'ABCabc1'.isalnum()\n" +"True\n" +">>> b'ABC abc1'.isalnum()\n" +"False" #: ../Doc/library/stdtypes.rst:3281 msgid "" @@ -5804,6 +6065,10 @@ msgid "" ">>> b'ABCabc1'.isalpha()\n" "False" msgstr "" +">>> b'ABCabc'.isalpha()\n" +"True\n" +">>> b'ABCabc1'.isalpha()\n" +"False" #: ../Doc/library/stdtypes.rst:3297 msgid "" @@ -5832,6 +6097,10 @@ msgid "" ">>> b'1.23'.isdigit()\n" "False" msgstr "" +">>> b'1234'.isdigit()\n" +"True\n" +">>> b'1.23'.isdigit()\n" +"False" #: ../Doc/library/stdtypes.rst:3322 msgid "" @@ -5849,6 +6118,10 @@ msgid "" ">>> b'Hello world'.islower()\n" "False" msgstr "" +">>> b'hello world'.islower()\n" +"True\n" +">>> b'Hello world'.islower()\n" +"False" #: ../Doc/library/stdtypes.rst:3332 ../Doc/library/stdtypes.rst:3374 #: ../Doc/library/stdtypes.rst:3390 ../Doc/library/stdtypes.rst:3440 @@ -5893,6 +6166,10 @@ msgid "" ">>> b'Hello world'.istitle()\n" "False" msgstr "" +">>> b'Hello World'.istitle()\n" +"True\n" +">>> b'Hello world'.istitle()\n" +"False" #: ../Doc/library/stdtypes.rst:3364 msgid "" @@ -5911,6 +6188,10 @@ msgid "" ">>> b'Hello world'.isupper()\n" "False" msgstr "" +">>> b'HELLO WORLD'.isupper()\n" +"True\n" +">>> b'Hello world'.isupper()\n" +"False" #: ../Doc/library/stdtypes.rst:3382 msgid "" @@ -5925,6 +6206,8 @@ msgid "" ">>> b'Hello World'.lower()\n" "b'hello world'" msgstr "" +">>> b'Hello World'.lower()\n" +"b'hello world'" #: ../Doc/library/stdtypes.rst:3407 msgid "" @@ -5945,6 +6228,10 @@ msgid "" ">>> b'ab c\\n\\nde fg\\rkl\\r\\n'.splitlines(keepends=True)\n" "[b'ab c\\n', b'\\n', b'de fg\\r', b'kl\\r\\n']" msgstr "" +">>> b'ab c\\n\\nde fg\\rkl\\r\\n'.splitlines()\n" +"[b'ab c', b'', b'de fg', b'kl']\n" +">>> b'ab c\\n\\nde fg\\rkl\\r\\n'.splitlines(keepends=True)\n" +"[b'ab c\\n', b'\\n', b'de fg\\r', b'kl\\r\\n']" #: ../Doc/library/stdtypes.rst:3419 msgid "" @@ -5964,6 +6251,10 @@ msgid "" ">>> b\"\".splitlines(), b\"One line\\n\".splitlines()\n" "([], [b'One line'])" msgstr "" +">>> b\"\".split(b'\\n'), b\"Two lines\\n\".split(b'\\n')\n" +"([b''], [b'Two lines', b''])\n" +">>> b\"\".splitlines(), b\"One line\\n\".splitlines()\n" +"([], [b'One line'])" #: ../Doc/library/stdtypes.rst:3432 msgid "" @@ -5979,19 +6270,20 @@ msgid "" ">>> b'Hello World'.swapcase()\n" "b'hELLO wORLD'" msgstr "" +">>> b'Hello World'.swapcase()\n" +"b'hELLO wORLD'" #: ../Doc/library/stdtypes.rst:3444 -#, fuzzy msgid "" "Unlike :func:`str.swapcase`, it is always the case that ``bin.swapcase()." "swapcase() == bin`` for the binary versions. Case conversions are " "symmetrical in ASCII, even though that is not generally true for arbitrary " "Unicode code points." msgstr "" -"Al contrario que la función :func:`str.swapcase()`, en este caso siempre se " -"cumple que ``bin.swapcase().swapcase() == bin`` para las versiones binarias. " -"La conversión de mayúsculas a minúsculas son simétricas en ASCII, aunque " -"esto no es el caso general para códigos de punto Unicode." +"A diferencia de :func:`str.swapcase`, siempre ocurre lo mismo con ``bin." +"swapcase().swapcase() == bin`` para las versiones binarias. Las conversiones " +"de mayúsculas y minúsculas son simétricas en ASCII, aunque esto no suele ser " +"así para puntos de código Unicode arbitrarios." #: ../Doc/library/stdtypes.rst:3458 msgid "" @@ -6008,6 +6300,8 @@ msgid "" ">>> b'Hello world'.title()\n" "b'Hello World'" msgstr "" +">>> b'Hello world'.title()\n" +"b'Hello World'" #: ../Doc/library/stdtypes.rst:3467 msgid "" @@ -6026,6 +6320,8 @@ msgid "" ">>> b\"they're bill's friends from the UK\".title()\n" "b\"They'Re Bill'S Friends From The Uk\"" msgstr "" +">>> b\"they're bill's friends from the UK\".title()\n" +"b\"They'Re Bill'S Friends From The Uk\"" #: ../Doc/library/stdtypes.rst:3480 msgid "" @@ -6046,6 +6342,15 @@ msgid "" ">>> titlecase(b\"they're bill's friends.\")\n" "b\"They're Bill's Friends.\"" msgstr "" +">>> import re\n" +">>> def titlecase(s):\n" +"... return re.sub(rb\"[A-Za-z]+('[A-Za-z]+)?\",\n" +"... lambda mo: mo.group(0)[0:1].upper() +\n" +"... mo.group(0)[1:].lower(),\n" +"... s)\n" +"...\n" +">>> titlecase(b\"they're bill's friends.\")\n" +"b\"They're Bill's Friends.\"" #: ../Doc/library/stdtypes.rst:3501 msgid "" @@ -6060,6 +6365,8 @@ msgid "" ">>> b'Hello World'.upper()\n" "b'HELLO WORLD'" msgstr "" +">>> b'Hello World'.upper()\n" +"b'HELLO WORLD'" #: ../Doc/library/stdtypes.rst:3522 msgid "" @@ -6083,6 +6390,10 @@ msgid "" ">>> b\"-42\".zfill(5)\n" "b'-0042'" msgstr "" +">>> b\"42\".zfill(5)\n" +"b'00042'\n" +">>> b\"-42\".zfill(5)\n" +"b'-0042'" #: ../Doc/library/stdtypes.rst:3544 msgid "``printf``-style Bytes Formatting" @@ -6151,13 +6462,12 @@ msgid "``'b'``" msgstr "``'b'``" #: ../Doc/library/stdtypes.rst:3684 -#, fuzzy msgid "" "Bytes (any object that follows the :ref:`buffer protocol ` or " "has :meth:`~object.__bytes__`)." msgstr "" -"Bytes (cualquier objeto que siga el :ref:`protocolo búfer ` o " -"implemente el método :meth:`__bytes__`)." +"Bytes (cualquier objeto que siga al :ref:`buffer protocol ` o " +"tenga :meth:`~object.__bytes__`)." #: ../Doc/library/stdtypes.rst:3688 msgid "" @@ -6245,18 +6555,25 @@ msgid "" "is the nested list representation of the view. If ``view.ndim = 1``, this is " "equal to the number of elements in the view." msgstr "" +"``len(view)`` es igual a la longitud de :class:`~memoryview.tolist`, que es " +"la representación de lista anidada de la vista. Si es ``view.ndim = 1``, es " +"igual a la cantidad de elementos de la vista." #: ../Doc/library/stdtypes.rst:3772 msgid "" "If ``view.ndim == 0``, ``len(view)`` now raises :exc:`TypeError` instead of " "returning 1." msgstr "" +"Si es ``view.ndim == 0``, ``len(view)`` ahora genera :exc:`TypeError` en " +"lugar de devolver 1." #: ../Doc/library/stdtypes.rst:3775 msgid "" "The :class:`~memoryview.itemsize` attribute will give you the number of " "bytes in a single element." msgstr "" +"El atributo :class:`~memoryview.itemsize` le dará la cantidad de bytes en un " +"solo elemento." #: ../Doc/library/stdtypes.rst:3778 msgid "" @@ -6279,6 +6596,15 @@ msgid "" ">>> bytes(v[1:4])\n" "b'bce'" msgstr "" +">>> v = memoryview(b'abcefg')\n" +">>> v[1]\n" +"98\n" +">>> v[-1]\n" +"103\n" +">>> v[1:4]\n" +"\n" +">>> bytes(v[1:4])\n" +"b'bce'" #: ../Doc/library/stdtypes.rst:3791 msgid "" @@ -6315,6 +6641,15 @@ msgid "" ">>> m[::2].tolist()\n" "[-11111111, -33333333]" msgstr "" +">>> import array\n" +">>> a = array.array('l', [-11111111, 22222222, -33333333, 44444444])\n" +">>> m = memoryview(a)\n" +">>> m[0]\n" +"-11111111\n" +">>> m[-1]\n" +"44444444\n" +">>> m[::2].tolist()\n" +"[-11111111, -33333333]" #: ../Doc/library/stdtypes.rst:3812 msgid "" @@ -6346,17 +6681,34 @@ msgid "" ">>> data\n" "bytearray(b'z1spam')" msgstr "" +">>> data = bytearray(b'abcefg')\n" +">>> v = memoryview(data)\n" +">>> v.readonly\n" +"False\n" +">>> v[0] = ord(b'z')\n" +">>> data\n" +"bytearray(b'zbcefg')\n" +">>> v[1:4] = b'123'\n" +">>> data\n" +"bytearray(b'z123fg')\n" +">>> v[2:3] = b'spam'\n" +"Traceback (most recent call last):\n" +" File \"\", line 1, in \n" +"ValueError: memoryview assignment: lvalue and rvalue have different " +"structures\n" +">>> v[2:6] = b'spam'\n" +">>> data\n" +"bytearray(b'z1spam')" #: ../Doc/library/stdtypes.rst:3833 -#, fuzzy msgid "" "One-dimensional memoryviews of :term:`hashable` (read-only) types with " "formats 'B', 'b' or 'c' are also hashable. The hash is defined as ``hash(m) " "== hash(m.tobytes())``::" msgstr "" -"Los objetos *memoryviews* de una única dimensión que contienen tipos de " -"datos *hashables* (de solo lectura) con formatos 'B', 'b' o 'c' son también " -"*hashables*. El *hash* se define como ``hash(m) == hash(m.tobytes())``::" +"Las vistas de memoria unidimensionales de tipos :term:`hashable` (solo " +"lectura) con formatos 'B', 'b' o 'c' también se pueden codificar en hash. El " +"hash se define como ``hash(m) == hash(m.tobytes())``::" #: ../Doc/library/stdtypes.rst:3837 msgid "" @@ -6368,16 +6720,22 @@ msgid "" ">>> hash(v[::-2]) == hash(b'abcefg'[::-2])\n" "True" msgstr "" +">>> v = memoryview(b'abcefg')\n" +">>> hash(v) == hash(b'abcefg')\n" +"True\n" +">>> hash(v[2:4]) == hash(b'ce')\n" +"True\n" +">>> hash(v[::-2]) == hash(b'abcefg'[::-2])\n" +"True" #: ../Doc/library/stdtypes.rst:3845 -#, fuzzy msgid "" "One-dimensional memoryviews can now be sliced. One-dimensional memoryviews " "with formats 'B', 'b' or 'c' are now :term:`hashable`." msgstr "" -"Los objetos *memoryviews* de una única dimensión pueden ahora ser usados con " -"operaciones de segmentado. Los objetos *memoryviews* de una única dimensión " -"con formatos 'B', 'b' o 'c' son ahora *hashables*." +"Ahora es posible dividir las vistas de memoria unidimensionales. Las vistas " +"de memoria unidimensionales con formatos 'B', 'b' o 'c' ahora son :term:" +"`hashable`." #: ../Doc/library/stdtypes.rst:3849 msgid "" @@ -6434,6 +6792,21 @@ msgid "" ">>> z.tolist() == c.tolist()\n" "True" msgstr "" +">>> import array\n" +">>> a = array.array('I', [1, 2, 3, 4, 5])\n" +">>> b = array.array('d', [1.0, 2.0, 3.0, 4.0, 5.0])\n" +">>> c = array.array('b', [5, 3, 1])\n" +">>> x = memoryview(a)\n" +">>> y = memoryview(b)\n" +">>> x == a == y == b\n" +"True\n" +">>> x.tolist() == a.tolist() == y.tolist() == b.tolist()\n" +"True\n" +">>> z = y[::-2]\n" +">>> z == c\n" +"True\n" +">>> z.tolist() == c.tolist()\n" +"True" #: ../Doc/library/stdtypes.rst:3883 msgid "" @@ -6460,15 +6833,25 @@ msgid "" ">>> a == b\n" "False" msgstr "" +">>> from ctypes import BigEndianStructure, c_long\n" +">>> class BEPoint(BigEndianStructure):\n" +"... _fields_ = [(\"x\", c_long), (\"y\", c_long)]\n" +"...\n" +">>> point = BEPoint(100, 200)\n" +">>> a = memoryview(point)\n" +">>> b = memoryview(point)\n" +">>> a == point\n" +"False\n" +">>> a == b\n" +"False" #: ../Doc/library/stdtypes.rst:3899 -#, fuzzy msgid "" "Note that, as with floating-point numbers, ``v is w`` does *not* imply ``v " "== w`` for memoryview objects." msgstr "" -"Nótese que, al igual que con los números en coma flotante, ``v is w`` *no* " -"implica que ``v == w`` para objetos del tipo *memoryview*." +"Tenga en cuenta que, al igual que con los números de punto flotante, ``v is " +"w`` no implica *not* o ``v == w`` para los objetos de vista de memoria." #: ../Doc/library/stdtypes.rst:3902 msgid "" @@ -6494,6 +6877,11 @@ msgid "" ">>> bytes(m)\n" "b'abc'" msgstr "" +">>> m = memoryview(b\"abc\")\n" +">>> m.tobytes()\n" +"b'abc'\n" +">>> bytes(m)\n" +"b'abc'" #: ../Doc/library/stdtypes.rst:3917 msgid "" @@ -6537,6 +6925,9 @@ msgid "" ">>> m.hex()\n" "'616263'" msgstr "" +">>> m = memoryview(b\"abc\")\n" +">>> m.hex()\n" +"'616263'" #: ../Doc/library/stdtypes.rst:3940 msgid "" @@ -6562,6 +6953,13 @@ msgid "" ">>> m.tolist()\n" "[1.1, 2.2, 3.3]" msgstr "" +">>> memoryview(b'abc').tolist()\n" +"[97, 98, 99]\n" +">>> import array\n" +">>> a = array.array('d', [1.1, 2.2, 3.3])\n" +">>> m = memoryview(a)\n" +">>> m.tolist()\n" +"[1.1, 2.2, 3.3]" #: ../Doc/library/stdtypes.rst:3957 msgid "" @@ -6594,6 +6992,17 @@ msgid "" ">>> mm.tolist()\n" "[43, 98, 99]" msgstr "" +">>> m = memoryview(bytearray(b'abc'))\n" +">>> mm = m.toreadonly()\n" +">>> mm.tolist()\n" +"[97, 98, 99]\n" +">>> mm[0] = 42\n" +"Traceback (most recent call last):\n" +" File \"\", line 1, in \n" +"TypeError: cannot modify read-only memory\n" +">>> m[0] = 43\n" +">>> mm.tolist()\n" +"[43, 98, 99]" #: ../Doc/library/stdtypes.rst:3983 msgid "" @@ -6611,16 +7020,14 @@ msgstr "" "pronto posible." #: ../Doc/library/stdtypes.rst:3989 -#, fuzzy msgid "" "After this method has been called, any further operation on the view raises " "a :class:`ValueError` (except :meth:`release` itself which can be called " "multiple times)::" msgstr "" -"Después de que se ha llamado a este método, cualquier operación posterior " -"sobre la vista lanzará una excepción de tipo :class:`ValueError` (excepto " -"por el propio método :meth:`release()`, que puede ser llamado las veces que " -"se quiera)::" +"Después de llamar a este método, cualquier operación posterior en la vista " +"genera un :class:`ValueError` (excepto el propio :meth:`release`, que se " +"puede llamar varias veces):" #: ../Doc/library/stdtypes.rst:3993 msgid "" @@ -6631,6 +7038,12 @@ msgid "" " File \"\", line 1, in \n" "ValueError: operation forbidden on released memoryview object" msgstr "" +">>> m = memoryview(b'abc')\n" +">>> m.release()\n" +">>> m[0]\n" +"Traceback (most recent call last):\n" +" File \"\", line 1, in \n" +"ValueError: operation forbidden on released memoryview object" #: ../Doc/library/stdtypes.rst:4000 msgid "" @@ -6651,6 +7064,14 @@ msgid "" " File \"\", line 1, in \n" "ValueError: operation forbidden on released memoryview object" msgstr "" +">>> with memoryview(b'abc') as m:\n" +"... m[0]\n" +"...\n" +"97\n" +">>> m[0]\n" +"Traceback (most recent call last):\n" +" File \"\", line 1, in \n" +"ValueError: operation forbidden on released memoryview object" #: ../Doc/library/stdtypes.rst:4016 msgid "" @@ -6667,17 +7088,17 @@ msgstr "" "pueden ser 1D -> C-:term:`contiguo` y C-contiguo -> 1D." #: ../Doc/library/stdtypes.rst:4022 -#, fuzzy msgid "" "The destination format is restricted to a single element native format in :" "mod:`struct` syntax. One of the formats must be a byte format ('B', 'b' or " "'c'). The byte length of the result must be the same as the original length. " "Note that all byte lengths may depend on the operating system." msgstr "" -"El formato de destino está restringido a un único elemento de formato nativo " -"en la sintaxis de :mod:`struct`. Uno de los formatos debe ser un formato de " -"byte ('B', 'b' o 'c'). La longitud en bytes del resultado debe coincidir con " -"la longitud original." +"El formato de destino está restringido a un formato nativo de un solo " +"elemento en la sintaxis :mod:`struct`. Uno de los formatos debe ser un " +"formato de bytes ('B', 'b' o 'c'). La longitud en bytes del resultado debe " +"ser la misma que la longitud original. Tenga en cuenta que todas las " +"longitudes en bytes pueden depender del sistema operativo." #: ../Doc/library/stdtypes.rst:4028 msgid "Cast 1D/long to 1D/unsigned bytes::" @@ -6706,6 +7127,26 @@ msgid "" ">>> y.nbytes\n" "24" msgstr "" +">>> import array\n" +">>> a = array.array('l', [1,2,3])\n" +">>> x = memoryview(a)\n" +">>> x.format\n" +"'l'\n" +">>> x.itemsize\n" +"8\n" +">>> len(x)\n" +"3\n" +">>> x.nbytes\n" +"24\n" +">>> y = x.cast('B')\n" +">>> y.format\n" +"'B'\n" +">>> y.itemsize\n" +"1\n" +">>> len(y)\n" +"24\n" +">>> y.nbytes\n" +"24" #: ../Doc/library/stdtypes.rst:4051 msgid "Cast 1D/unsigned bytes to 1D/char::" @@ -6724,6 +7165,16 @@ msgid "" ">>> b\n" "bytearray(b'ayz')" msgstr "" +">>> b = bytearray(b'zyz')\n" +">>> x = memoryview(b)\n" +">>> x[0] = b'a'\n" +"Traceback (most recent call last):\n" +" ...\n" +"TypeError: memoryview: invalid type for format 'B'\n" +">>> y = x.cast('c')\n" +">>> y[0] = b'a'\n" +">>> b\n" +"bytearray(b'ayz')" #: ../Doc/library/stdtypes.rst:4064 msgid "Cast 1D/bytes to 3D/ints to 1D/signed char::" @@ -6755,6 +7206,29 @@ msgid "" ">>> z.nbytes\n" "48" msgstr "" +">>> import struct\n" +">>> buf = struct.pack(\"i\"*12, *list(range(12)))\n" +">>> x = memoryview(buf)\n" +">>> y = x.cast('i', shape=[2,2,3])\n" +">>> y.tolist()\n" +"[[[0, 1, 2], [3, 4, 5]], [[6, 7, 8], [9, 10, 11]]]\n" +">>> y.format\n" +"'i'\n" +">>> y.itemsize\n" +"4\n" +">>> len(y)\n" +"2\n" +">>> y.nbytes\n" +"48\n" +">>> z = y.cast('b')\n" +">>> z.format\n" +"'b'\n" +">>> z.itemsize\n" +"1\n" +">>> len(z)\n" +"48\n" +">>> z.nbytes\n" +"48" #: ../Doc/library/stdtypes.rst:4090 msgid "Cast 1D/unsigned long to 2D/unsigned long::" @@ -6772,6 +7246,15 @@ msgid "" ">>> y.tolist()\n" "[[0, 1, 2], [3, 4, 5]]" msgstr "" +">>> buf = struct.pack(\"L\"*6, *list(range(6)))\n" +">>> x = memoryview(buf)\n" +">>> y = x.cast('L', shape=[2,3])\n" +">>> len(y)\n" +"2\n" +">>> y.nbytes\n" +"48\n" +">>> y.tolist()\n" +"[[0, 1, 2], [3, 4, 5]]" #: ../Doc/library/stdtypes.rst:4104 msgid "The source format is no longer restricted when casting to a byte view." @@ -6794,6 +7277,10 @@ msgid "" ">>> m.obj is b\n" "True" msgstr "" +">>> b = bytearray(b'xyz')\n" +">>> m = memoryview(b)\n" +">>> m.obj is b\n" +"True" #: ../Doc/library/stdtypes.rst:4122 msgid "" @@ -6822,6 +7309,20 @@ msgid "" ">>> len(y.tobytes())\n" "12" msgstr "" +">>> import array\n" +">>> a = array.array('i', [1,2,3,4,5])\n" +">>> m = memoryview(a)\n" +">>> len(m)\n" +"5\n" +">>> m.nbytes\n" +"20\n" +">>> y = m[::2]\n" +">>> len(y)\n" +"3\n" +">>> y.nbytes\n" +"12\n" +">>> len(y.tobytes())\n" +"12" #: ../Doc/library/stdtypes.rst:4141 msgid "Multi-dimensional arrays::" @@ -6840,6 +7341,16 @@ msgid "" ">>> y.nbytes\n" "96" msgstr "" +">>> import struct\n" +">>> buf = struct.pack(\"d\"*12, *[1.5*x for x in range(12)])\n" +">>> x = memoryview(buf)\n" +">>> y = x.cast('d', shape=[3,4])\n" +">>> y.tolist()\n" +"[[0.0, 1.5, 3.0, 4.5], [6.0, 7.5, 9.0, 10.5], [12.0, 13.5, 15.0, 16.5]]\n" +">>> len(y)\n" +"3\n" +">>> y.nbytes\n" +"96" #: ../Doc/library/stdtypes.rst:4158 msgid "A bool indicating whether the memory is read only." @@ -6882,6 +7393,14 @@ msgid "" ">>> struct.calcsize('H') == m.itemsize\n" "True" msgstr "" +">>> import array, struct\n" +">>> m = memoryview(array.array('H', [32000, 32001, 32002]))\n" +">>> m.itemsize\n" +"2\n" +">>> m[0]\n" +"32000\n" +">>> struct.calcsize('H') == m.itemsize\n" +"True" #: ../Doc/library/stdtypes.rst:4186 msgid "" @@ -7278,15 +7797,15 @@ msgstr "" "`symmetric_difference_update` aceptan cualquier iterable como parámetro." #: ../Doc/library/stdtypes.rst:4424 -#, fuzzy msgid "" "Note, the *elem* argument to the :meth:`~object.__contains__`, :meth:" "`remove`, and :meth:`discard` methods may be a set. To support searching " "for an equivalent frozenset, a temporary one is created from *elem*." msgstr "" -"Nótese que el parámetro *elem* de los métodos :meth:`__contains__`, :meth:" -"`remove` y :meth:`discard` puede ser un conjunto. Para soportar la búsqueda " -"por un *frozenset* equivalente se crea uno temporal a partir de *elem*." +"Tenga en cuenta que el argumento *elem* de los métodos :meth:`~object." +"__contains__`, :meth:`remove` y :meth:`discard` puede ser un conjunto. Para " +"facilitar la búsqueda de un conjunto congelado equivalente, se crea uno " +"temporal a partir de *elem*." #: ../Doc/library/stdtypes.rst:4433 msgid "Mapping Types --- :class:`dict`" @@ -7308,7 +7827,6 @@ msgstr "" "`collections`)." #: ../Doc/library/stdtypes.rst:4449 -#, fuzzy msgid "" "A dictionary's keys are *almost* arbitrary values. Values that are not :" "term:`hashable`, that is, values containing lists, dictionaries or other " @@ -7316,16 +7834,12 @@ msgid "" "may not be used as keys. Values that compare equal (such as ``1``, ``1.0``, " "and ``True``) can be used interchangeably to index the same dictionary entry." msgstr "" -"Las claves de un diccionario pueden ser *casi* de cualquier tipo. Los " -"valores que no son :term:`hashable`, como por ejemplo valores que contengan " -"listas, diccionarios u otros tipo mutables (que son comparados por valor, no " -"por referencia) no se pueden usar como claves. Los tipos numéricos, cuando " -"se usan como claves siguen las reglas habituales de la comparación numérica: " -"si dos números se consideran iguales (como ``1`` y ``1.0``), ambos valores " -"pueden ser usados indistintamente para acceder al mismo valor. (Pero hay que " -"tener en cuenta que los ordenadores almacenan algunos números en coma " -"flotante como aproximaciones, por lo que normalmente no es recomendable " -"usarlos como claves)." +"Las claves de un diccionario son valores arbitrarios *almost*. Los valores " +"que no sean :term:`hashable`, es decir, los valores que contienen listas, " +"diccionarios u otros tipos mutables (que se comparan por valor en lugar de " +"por identidad de objeto) no se pueden utilizar como claves. Los valores que " +"se comparan como iguales (como ``1``, ``1.0`` y ``True``) se pueden utilizar " +"indistintamente para indexar la misma entrada de diccionario." #: ../Doc/library/stdtypes.rst:4460 msgid "" @@ -7412,6 +7926,14 @@ msgid "" ">>> a == b == c == d == e == f\n" "True" msgstr "" +">>> a = dict(one=1, two=2, three=3)\n" +">>> b = {'one': 1, 'two': 2, 'three': 3}\n" +">>> c = dict(zip(['one', 'two', 'three'], [1, 2, 3]))\n" +">>> d = dict([('two', 2), ('one', 1), ('three', 3)])\n" +">>> e = dict({'three': 3, 'one': 1, 'two': 2})\n" +">>> f = dict({'one': 1, 'three': 3}, two=2)\n" +">>> a == b == c == d == e == f\n" +"True" #: ../Doc/library/stdtypes.rst:4498 msgid "" @@ -7480,6 +8002,16 @@ msgid "" ">>> c['red']\n" "1" msgstr "" +">>> class Counter(dict):\n" +"... def __missing__(self, key):\n" +"... return 0\n" +"...\n" +">>> c = Counter()\n" +">>> c['red']\n" +"0\n" +">>> c['red'] += 1\n" +">>> c['red']\n" +"1" #: ../Doc/library/stdtypes.rst:4539 msgid "" @@ -7678,6 +8210,9 @@ msgid "" ">>> d.values() == d.values()\n" "False" msgstr "" +">>> d = {'a': 1}\n" +">>> d.values() == d.values()\n" +"False" #: ../Doc/library/stdtypes.rst:4656 msgid "" @@ -7737,6 +8272,20 @@ msgid "" ">>> d\n" "{'one': 42, 'three': 3, 'four': 4, 'two': None}" msgstr "" +">>> d = {\"one\": 1, \"two\": 2, \"three\": 3, \"four\": 4}\n" +">>> d\n" +"{'one': 1, 'two': 2, 'three': 3, 'four': 4}\n" +">>> list(d)\n" +"['one', 'two', 'three', 'four']\n" +">>> list(d.values())\n" +"[1, 2, 3, 4]\n" +">>> d[\"one\"] = 42\n" +">>> d\n" +"{'one': 42, 'two': 2, 'three': 3, 'four': 4}\n" +">>> del d[\"two\"]\n" +">>> d[\"two\"] = None\n" +">>> d\n" +"{'one': 42, 'three': 3, 'four': 4, 'two': None}" #: ../Doc/library/stdtypes.rst:4692 msgid "" @@ -7765,6 +8314,15 @@ msgid "" ">>> list(reversed(d.items()))\n" "[('four', 4), ('three', 3), ('two', 2), ('one', 1)]" msgstr "" +">>> d = {\"one\": 1, \"two\": 2, \"three\": 3, \"four\": 4}\n" +">>> d\n" +"{'one': 1, 'two': 2, 'three': 3, 'four': 4}\n" +">>> list(reversed(d))\n" +"['four', 'three', 'two', 'one']\n" +">>> list(reversed(d.values()))\n" +"[4, 3, 2, 1]\n" +">>> list(reversed(d.items()))\n" +"[('four', 4), ('three', 3), ('two', 2), ('one', 1)]" #: ../Doc/library/stdtypes.rst:4708 msgid "Dictionaries are now reversible." @@ -7869,7 +8427,6 @@ msgstr "" "original al que se refiere la vista." #: ../Doc/library/stdtypes.rst:4770 -#, fuzzy msgid "" "Keys views are set-like since their entries are unique and :term:`hashable`. " "Items views also have set-like operations since the (key, value) pairs are " @@ -7882,15 +8439,19 @@ msgid "" "any iterable as the other operand, unlike sets which only accept sets as the " "input." msgstr "" -"Las vistas de claves son similares a conjuntos, dado que todas las claves " -"deben ser únicas y *hashables*. Si todos los valores son también " -"*hashables*, de forma que las parejas ``(key, value)`` son también únicas y " -"*hashables*, entonces la vista *items* es también similar a un conjunto. (La " -"vista *values* no son consideradas similar a un conjunto porque las valores " -"almacenados en el diccionario no tiene que ser únicos). Las vistas similares " -"a conjuntos pueden usar todas las operaciones definidas en la clase " -"abstracta :class:`collections.abc.Set` (como por ejemplo ``==``, ``<`` o " -"``^``)." +"Las vistas de claves son similares a conjuntos, ya que sus entradas son " +"únicas y :term:`hashable`. Las vistas de elementos también tienen " +"operaciones similares a conjuntos, ya que los pares (clave, valor) son " +"únicos y las claves se pueden codificar en hash. Si todos los valores de una " +"vista de elementos también se pueden codificar en hash, la vista de " +"elementos puede interoperar con otros conjuntos. (Las vistas de valores no " +"se tratan como similares a conjuntos, ya que las entradas generalmente no " +"son únicas). Para las vistas similares a conjuntos, están disponibles todas " +"las operaciones definidas para la clase base abstracta :class:`collections." +"abc.Set` (por ejemplo, ``==``, ``<`` o ``^``). Al utilizar operadores de " +"conjunto, las vistas similares a conjuntos aceptan cualquier iterable como " +"el otro operando, a diferencia de los conjuntos que solo aceptan conjuntos " +"como entrada." #: ../Doc/library/stdtypes.rst:4782 msgid "An example of dictionary view usage::" @@ -7936,6 +8497,44 @@ msgid "" ">>> values.mapping['spam']\n" "500" msgstr "" +">>> dishes = {'eggs': 2, 'sausage': 1, 'bacon': 1, 'spam': 500}\n" +">>> keys = dishes.keys()\n" +">>> values = dishes.values()\n" +"\n" +">>> # iteration\n" +">>> n = 0\n" +">>> for val in values:\n" +"... n += val\n" +"...\n" +">>> print(n)\n" +"504\n" +"\n" +">>> # Las llaves y los valores se iteran en el mismo orden (orden de " +"inserción)\n" +">>> list(keys)\n" +"['eggs', 'sausage', 'bacon', 'spam']\n" +">>> list(values)\n" +"[2, 1, 1, 500]\n" +"\n" +">>> # Los objetos vista son dinámicos y reflejan cambios de diccionario.\n" +">>> del dishes['eggs']\n" +">>> del dishes['sausage']\n" +">>> list(keys)\n" +"['bacon', 'spam']\n" +"\n" +">>> # operaciones de conjunto\n" +">>> keys & {'eggs', 'bacon', 'salad'}\n" +"{'bacon'}\n" +">>> keys ^ {'sausage', 'juice'} == {'juice', 'sausage', 'bacon', 'spam'}\n" +"True\n" +">>> keys | ['juice', 'juice', 'juice'] == {'bacon', 'spam', 'juice'}\n" +"True\n" +"\n" +">>> # recuperar un proxy de solo lectura para el diccionario original\n" +">>> values.mapping\n" +"mappingproxy({'bacon': 1, 'spam': 500})\n" +">>> values.mapping['spam']\n" +"500" #: ../Doc/library/stdtypes.rst:4826 msgid "Context Manager Types" @@ -8028,7 +8627,6 @@ msgstr "" "el cuerpo del :keyword:`!with`." #: ../Doc/library/stdtypes.rst:4872 -#, fuzzy msgid "" "The exception passed in should never be reraised explicitly - instead, this " "method should return a false value to indicate that the method completed " @@ -8036,11 +8634,11 @@ msgid "" "context management code to easily detect whether or not an :meth:`~object." "__exit__` method has actually failed." msgstr "" -"La excepción pasada nunca debe volver a lanzarse explícitamente; en vez de " -"eso, el método debería retornar un valor falso para indicar que el método ha " -"terminado de ejecutarse sin problemas y que no se desea suprimir la " -"excepción. Esto permite a los gestores de contexto detectar fácilmente si el " -"método :meth:`__exit__` ha podido terminar o no." +"La excepción que se pasa nunca debe volver a generarse explícitamente; en su " +"lugar, este método debe devolver un valor falso para indicar que el método " +"se completó correctamente y no desea suprimir la excepción generada. Esto " +"permite que el código de administración de contexto detecte fácilmente si un " +"método :meth:`~object.__exit__` ha fallado o no." #: ../Doc/library/stdtypes.rst:4878 msgid "" @@ -8224,6 +8822,8 @@ msgid "" "def average(values: list[float]) -> float:\n" " return sum(values) / len(values)" msgstr "" +"def average(values: list[float]) -> float:\n" +" return sum(values) / len(values)" #: ../Doc/library/stdtypes.rst:4971 msgid "" @@ -8242,6 +8842,8 @@ msgid "" "def send_post_request(url: str, body: dict[str, int]) -> None:\n" " ..." msgstr "" +"def send_post_request(url: str, body: dict[str, int]) -> None:\n" +" ..." #: ../Doc/library/stdtypes.rst:4979 msgid "" @@ -8258,6 +8860,10 @@ msgid "" " File \"\", line 1, in \n" "TypeError: isinstance() argument 2 cannot be a parameterized generic" msgstr "" +">>> isinstance([1, 2], list[str])\n" +"Traceback (most recent call last):\n" +" File \"\", line 1, in \n" +"TypeError: isinstance() argument 2 cannot be a parameterized generic" #: ../Doc/library/stdtypes.rst:4987 msgid "" @@ -8279,6 +8885,9 @@ msgid "" ">>> t([1, 2, 3])\n" "[1, 2, 3]" msgstr "" +">>> t = list[str]\n" +">>> t([1, 2, 3])\n" +"[1, 2, 3]" #: ../Doc/library/stdtypes.rst:4997 msgid "" @@ -8298,6 +8907,13 @@ msgid "" ">>> type(l)\n" "" msgstr "" +">>> t = list[str]\n" +">>> type(t)\n" +"\n" +"\n" +">>> l = t()\n" +">>> type(l)\n" +"" #: ../Doc/library/stdtypes.rst:5008 msgid "" @@ -8315,6 +8931,11 @@ msgid "" ">>> str(list[int])\n" "'list[int]'" msgstr "" +">>> repr(list[int])\n" +"'list[int]'\n" +"\n" +">>> str(list[int])\n" +"'list[int]'" #: ../Doc/library/stdtypes.rst:5016 msgid "" @@ -8331,6 +8952,10 @@ msgid "" " ...\n" "TypeError: dict[str] is not a generic class" msgstr "" +">>> dict[str][str]\n" +"Traceback (most recent call last):\n" +" ...\n" +"TypeError: dict[str] is not a generic class" # Tipo u objeto 'type'? #: ../Doc/library/stdtypes.rst:5024 @@ -8351,6 +8976,10 @@ msgid "" ">>> dict[str, Y][int]\n" "dict[str, int]" msgstr "" +">>> from typing import TypeVar\n" +">>> Y = TypeVar('Y')\n" +">>> dict[str, Y][int]\n" +"dict[str, int]" #: ../Doc/library/stdtypes.rst:5035 msgid "Standard Generic Classes" @@ -8599,6 +9228,8 @@ msgid "" ">>> list[int].__origin__\n" "" msgstr "" +">>> list[int].__origin__\n" +"" #: ../Doc/library/stdtypes.rst:5112 msgid "" @@ -8615,6 +9246,8 @@ msgid "" ">>> dict[str, list[int]].__args__\n" "(, list[int])" msgstr "" +">>> dict[str, list[int]].__args__\n" +"(, list[int])" #: ../Doc/library/stdtypes.rst:5122 msgid "" @@ -8632,6 +9265,11 @@ msgid "" ">>> list[T].__parameters__\n" "(~T,)" msgstr "" +">>> from typing import TypeVar\n" +"\n" +">>> T = TypeVar('T')\n" +">>> list[T].__parameters__\n" +"(~T,)" #: ../Doc/library/stdtypes.rst:5133 msgid "" @@ -8725,7 +9363,9 @@ msgstr "" msgid "" "def square(number: int | float) -> int | float:\n" " return number ** 2" -msgstr "" +msgstr "" +"def square(number: int | float) -> int | float:\n" +" return number ** 2" #: ../Doc/library/stdtypes.rst:5189 msgid "" @@ -8735,6 +9375,12 @@ msgid "" "For unions which include forward references, present the whole expression as " "a string, e.g. ``\"int | Foo\"``." msgstr "" +"El operando ``|`` no se puede utilizar en tiempo de ejecución para definir " +"uniones en las que uno o más miembros sean una referencia hacia delante. Por " +"ejemplo, ``int | \"Foo\"``, donde ``\"Foo\"`` es una referencia a una clase " +"que aún no se ha definido, fallará en tiempo de ejecución. Para las uniones " +"que incluyen referencias hacia delante, presente la expresión completa como " +"una cadena, por ejemplo, ``\"int | Foo\"``." #: ../Doc/library/stdtypes.rst:5197 msgid "" @@ -8749,7 +9395,7 @@ msgstr "Las conversiones de conversión se aplanan::" #: ../Doc/library/stdtypes.rst:5201 msgid "(int | str) | float == int | str | float" -msgstr "" +msgstr "(int | str) | float == int | str | float" #: ../Doc/library/stdtypes.rst:5203 msgid "Redundant types are removed::" @@ -8757,7 +9403,7 @@ msgstr "Se eliminan los tipos redundantes::" #: ../Doc/library/stdtypes.rst:5205 msgid "int | str | int == int | str" -msgstr "" +msgstr "int | str | int == int | str" #: ../Doc/library/stdtypes.rst:5207 msgid "When comparing unions, the order is ignored::" @@ -8765,7 +9411,7 @@ msgstr "Al comparar conversiones, se ignora el orden::" #: ../Doc/library/stdtypes.rst:5209 msgid "int | str == str | int" -msgstr "" +msgstr "int | str == str | int" #: ../Doc/library/stdtypes.rst:5211 msgid "It is compatible with :data:`typing.Union`::" @@ -8773,7 +9419,7 @@ msgstr "Es compatible con :data:`typing.Union`::" #: ../Doc/library/stdtypes.rst:5213 msgid "int | str == typing.Union[int, str]" -msgstr "" +msgstr "int | str == typing.Union[int, str]" #: ../Doc/library/stdtypes.rst:5215 msgid "Optional types can be spelled as a union with ``None``::" @@ -8781,7 +9427,7 @@ msgstr "Los tipos opcionales se pueden escribir como una unión con ``None``::" #: ../Doc/library/stdtypes.rst:5217 msgid "str | None == typing.Optional[str]" -msgstr "" +msgstr "str | None == typing.Optional[str]" #: ../Doc/library/stdtypes.rst:5222 msgid "" @@ -8796,15 +9442,16 @@ msgid "" ">>> isinstance(\"\", int | str)\n" "True" msgstr "" +">>> isinstance(\"\", int | str)\n" +"True" #: ../Doc/library/stdtypes.rst:5228 -#, fuzzy msgid "" "However, :ref:`parameterized generics ` in union objects " "cannot be checked::" msgstr "" -"Sin embargo, los objetos de unión que contienen :ref:`genéricos " -"parametrizados ` no se pueden utilizar::" +"Sin embargo, no se puede comprobar :ref:`parameterized generics ` en objetos de unión:" #: ../Doc/library/stdtypes.rst:5231 msgid "" @@ -8815,6 +9462,12 @@ msgid "" " ...\n" "TypeError: isinstance() argument 2 cannot be a parameterized generic" msgstr "" +">>> isinstance(1, int | list[int]) # short-circuit evaluation\n" +"True\n" +">>> isinstance([1], int | list[int])\n" +"Traceback (most recent call last):\n" +" ...\n" +"TypeError: isinstance() argument 2 cannot be a parameterized generic" #: ../Doc/library/stdtypes.rst:5238 msgid "" @@ -8836,17 +9489,23 @@ msgid "" " File \"\", line 1, in \n" "TypeError: cannot create 'types.UnionType' instances" msgstr "" +">>> import types\n" +">>> isinstance(int | str, types.UnionType)\n" +"True\n" +">>> types.UnionType()\n" +"Traceback (most recent call last):\n" +" File \"\", line 1, in \n" +"TypeError: cannot create 'types.UnionType' instances" #: ../Doc/library/stdtypes.rst:5251 -#, fuzzy msgid "" "The :meth:`!__or__` method for type objects was added to support the syntax " "``X | Y``. If a metaclass implements :meth:`!__or__`, the Union may " "override it:" msgstr "" -"Se agregó el método :meth:`__or__` para objetos de tipo para admitir la " -"sintaxis ``X | Y``. Si una metaclase implementa :meth:`__or__`, la " -"Conversión puede anularlo::" +"Se agregó el método :meth:`!__or__` para objetos de tipo para admitir la " +"sintaxis ``X | Y``. Si una metaclase implementa :meth:`!__or__`, la Unión " +"puede anularlo:" #: ../Doc/library/stdtypes.rst:5255 msgid "" @@ -8862,6 +9521,17 @@ msgid "" ">>> int | C\n" "int | C" msgstr "" +">>> class M(type):\n" +"... def __or__(self, other):\n" +"... return \"Hello\"\n" +"...\n" +">>> class C(metaclass=M):\n" +"... pass\n" +"...\n" +">>> C | int\n" +"'Hello'\n" +">>> int | C\n" +"int | C" #: ../Doc/library/stdtypes.rst:5271 msgid ":pep:`604` -- PEP proposing the ``X | Y`` syntax and the Union type." @@ -8973,20 +9643,18 @@ msgid "Methods" msgstr "Métodos" #: ../Doc/library/stdtypes.rst:5340 -#, fuzzy msgid "" "Methods are functions that are called using the attribute notation. There " "are two flavors: :ref:`built-in methods ` (such as :meth:" "`append` on lists) and :ref:`class instance method `. " "Built-in methods are described with the types that support them." msgstr "" -"Los métodos son funciones que se llaman usando la notación de atributos. Hay " -"de dos tipos: métodos básicos o predefinidos (como el método :meth:`append` " -"en las listas) y métodos de instancia de clase. Los métodos básicos o " -"predefinidos se describen junto con los tipos que los soportan." +"Los métodos son funciones que se llaman mediante la notación de atributos. " +"Hay dos tipos: :ref:`built-in methods ` (como :meth:" +"`append` en listas) y :ref:`class instance method `. Los " +"métodos integrados se describen con los tipos que los admiten." #: ../Doc/library/stdtypes.rst:5345 -#, fuzzy msgid "" "If you access a method (a function defined in a class namespace) through an " "instance, you get a special object: a :dfn:`bound method` (also called :ref:" @@ -8998,18 +9666,18 @@ msgid "" "is completely equivalent to calling ``m.__func__(m.__self__, arg-1, " "arg-2, ..., arg-n)``." msgstr "" -"Si se accede a un método (una función definida dentro de un espacio de " -"nombres de una clase) a través de una instancia, se obtiene un objeto " -"especial, un :dfn:`bound method` (también llamado :dfn:`instance method`). " -"Cuando se llama, se añade automáticamente el parámetro ``self`` a la lista " -"de parámetros. Los métodos ligados tienen dos atributos especiales de solo " -"lectura: ``m.__self__`` es el objeto sobre el que está operando el método, y " -"``m.__func__`` es la función que implementa el método. Llamar ``m(arg-1, " -"arg-2, ..., arg-n)`` es completamente equivalente a llamar ``m.__func__(m." -"__self__, arg-1, arg-2, ..., arg-n)``." +"Si accede a un método (una función definida en un espacio de nombres de " +"clase) a través de una instancia, obtendrá un objeto especial: un objeto :" +"dfn:`método enlazado` (también llamado :ref:`instance method `). Cuando se lo llama, agregará el argumento ``self`` a la lista de " +"argumentos. Los métodos enlazados tienen dos atributos especiales de solo " +"lectura: :attr:`m.__self__ ` es el objeto en el que opera " +"el método y :attr:`m.__func__ ` es la función que " +"implementa el método. Llamar a ``m(arg-1, arg-2, ..., arg-n)`` es " +"completamente equivalente a llamar a ``m.__func__(m.__self__, arg-1, " +"arg-2, ..., arg-n)``." #: ../Doc/library/stdtypes.rst:5356 -#, fuzzy msgid "" "Like :ref:`function objects `, bound method objects " "support getting arbitrary attributes. However, since method attributes are " @@ -9019,13 +9687,14 @@ msgid "" "In order to set a method attribute, you need to explicitly set it on the " "underlying function object:" msgstr "" -"Al igual que los objetos de tipo función, los métodos ligados o de instancia " -"soportan asignación de atributos arbitrarios. Sin embargo, como los " -"atributos de los métodos se almacenan en la función subyacente (``meth." -"__func__``), definir cualquier atributo en métodos ligados está " -"desaconsejado. Intentar asignar un atributo a un método produce que se lance " -"una excepción de tipo :exc:`AttributeError`. Para poder definir un atributo " -"a un método, este debe ser definido explícitamente en la función subyacente::" +"Al igual que :ref:`function objects `, los objetos de " +"método enlazados admiten la obtención de atributos arbitrarios. Sin embargo, " +"dado que los atributos de método se almacenan en realidad en el objeto de " +"función subyacente (:attr:`method.__func__`), no se permite configurar " +"atributos de método en métodos enlazados. Intentar configurar un atributo en " +"un método da como resultado que se genere un :exc:`AttributeError`. Para " +"configurar un atributo de método, debe configurarlo explícitamente en el " +"objeto de función subyacente:" #: ../Doc/library/stdtypes.rst:5364 msgid "" @@ -9042,18 +9711,28 @@ msgid "" ">>> c.method.whoami\n" "'my name is method'" msgstr "" +">>> class C:\n" +"... def method(self):\n" +"... pass\n" +"...\n" +">>> c = C()\n" +">>> c.method.whoami = 'my name is method' # can't set on the method\n" +"Traceback (most recent call last):\n" +" File \"\", line 1, in \n" +"AttributeError: 'method' object has no attribute 'whoami'\n" +">>> c.method.__func__.whoami = 'my name is method'\n" +">>> c.method.whoami\n" +"'my name is method'" #: ../Doc/library/stdtypes.rst:5379 -#, fuzzy msgid "See :ref:`instance-methods` for more information." -msgstr "Véase :ref:`types` para más información." +msgstr "Véase :ref:`instance-methods` para más información." #: ../Doc/library/stdtypes.rst:5387 msgid "Code Objects" msgstr "Objetos código" #: ../Doc/library/stdtypes.rst:5393 -#, fuzzy msgid "" "Code objects are used by the implementation to represent \"pseudo-compiled\" " "executable Python code such as a function body. They differ from function " @@ -9062,23 +9741,22 @@ msgid "" "function and can be extracted from function objects through their :attr:" "`~function.__code__` attribute. See also the :mod:`code` module." msgstr "" -"Los objetos de tipo código son usados por la implementación del lenguaje " -"para representar código ejecutable \"pseudo-compilado\", como por ejemplo el " -"cuerpo de una función. A diferencia de los objetos de tipo función, no " -"contienen una referencia a un entorno global de ejecución. Los objetos de " -"tipo código se pueden obtener usando la función básica :func:`compile` o se " -"pueden extraer a partir de objetos de tipo función a través de su atributo :" -"attr:`__code__`. Para más detalle véase el módulo :mod:`code`." +"La implementación utiliza objetos de código para representar código Python " +"ejecutable \"pseudocompilado\", como el cuerpo de una función. Se " +"diferencian de los objetos de función porque no contienen una referencia a " +"su entorno de ejecución global. Los objetos de código son devueltos por la " +"función :func:`compile` incorporada y se pueden extraer de los objetos de " +"función a través de su atributo :attr:`~function.__code__`. Consulte también " +"el módulo :mod:`code`." #: ../Doc/library/stdtypes.rst:5400 -#, fuzzy msgid "" "Accessing :attr:`~function.__code__` raises an :ref:`auditing event " "` ``object.__getattr__`` with arguments ``obj`` and " "``\"__code__\"``." msgstr "" -"Al acceder a ``__code__`` se lanza un :ref:`evento de auditoría ` " -"``object.__getattr__`` con argumentos ``obj`` y ``\"__code__\"``." +"Al acceder a :attr:`~function.__code__` se genera un :ref:`auditing event " +"` ``object.__getattr__`` con argumentos ``obj`` y ``\"__code__\"``." #: ../Doc/library/stdtypes.rst:5407 msgid "" @@ -9160,38 +9838,35 @@ msgid "The NotImplemented Object" msgstr "El objeto *NotImplemented*" #: ../Doc/library/stdtypes.rst:5461 -#, fuzzy msgid "" "This object is returned from comparisons and binary operations when they are " "asked to operate on types they don't support. See :ref:`comparisons` for " "more information. There is exactly one :data:`NotImplemented` object. :code:" "`type(NotImplemented)()` produces the singleton instance." msgstr "" -"Este objeto se retorna en todas las operaciones binarias y comparaciones " -"cuando se intenta operar con tipos que no están soportados. Véase :ref:" -"`comparisons` para más información. Solo existe un objeto de tipo " -"``NotImplemented``. La expresión ``type(NotImplemented)()`` produce el mismo " -"objeto, esto se conoce como *Singleton*." +"Este objeto se devuelve a partir de comparaciones y operaciones binarias " +"cuando se les pide que operen en tipos que no admiten. Consulte :ref:" +"`comparisons` para obtener más información. Hay exactamente un objeto :data:" +"`NotImplemented`. :code:`type(NotImplemented)()` produce la instancia " +"singleton." #: ../Doc/library/stdtypes.rst:5466 -#, fuzzy msgid "It is written as :code:`NotImplemented`." -msgstr "Se escribe ``NotImplemented``." +msgstr "Se escribe como :code:`NotImplemented`." #: ../Doc/library/stdtypes.rst:5472 msgid "Internal Objects" msgstr "Objetos internos" #: ../Doc/library/stdtypes.rst:5474 -#, fuzzy msgid "" "See :ref:`types` for this information. It describes :ref:`stack frame " "objects `, :ref:`traceback objects `, and " "slice objects." msgstr "" -"Véase la sección :ref:`types` para saber más de estos objetos. Se describen " -"los objetos marco de pila, los objetos de traza de ejecución (*traceback*) y " -"los objetos de tipo segmento (*slice*)." +"Consulte :ref:`types` para obtener esta información. Describe :ref:`stack " +"frame objects `, :ref:`traceback objects ` " +"y los objetos de sector." #: ../Doc/library/stdtypes.rst:5482 msgid "Special Attributes" @@ -9223,12 +9898,14 @@ msgstr "" #: ../Doc/library/stdtypes.rst:5505 msgid "The name of the module in which a class or function was defined." -msgstr "" +msgstr "El nombre del módulo en el que se definió una clase o función." #: ../Doc/library/stdtypes.rst:5510 msgid "" "The documentation string of a class or function, or ``None`` if undefined." msgstr "" +"La cadena de documentación de una clase o función, o ``None`` si no está " +"definida." #: ../Doc/library/stdtypes.rst:5515 msgid "" @@ -9236,6 +9913,9 @@ msgid "" "ref:`type aliases `. For classes and functions that are not " "generic, this will be an empty tuple." msgstr "" +":ref:`type parameters ` de clases y funciones genéricas y :ref:" +"`type aliases `. Para clases y funciones que no sean " +"genéricas, será una tupla vacía." #: ../Doc/library/stdtypes.rst:5525 msgid "Integer string conversion length limitation" @@ -9255,7 +9935,6 @@ msgstr "" "configurar el límite." #: ../Doc/library/stdtypes.rst:5532 -#, fuzzy msgid "" "The :class:`int` type in CPython is an arbitrary length number stored in " "binary form (commonly known as a \"bignum\"). There exists no algorithm that " @@ -9264,23 +9943,20 @@ msgid "" "algorithms for base 10 have sub-quadratic complexity. Converting a large " "value such as ``int('1' * 500_000)`` can take over a second on a fast CPU." msgstr "" -"El tipo :class:`int` en CPython es un número con longitud arbitrario que se " -"almacena en forma binaria (se conoce comúnmente como \"bignum\"). No existe " -"ningún algoritmo que pueda convertir una cadena de caracteres a un entero " -"binario o un entero binario a una cadena de caracteres en tiempo lineal, *a " -"menos* que la base sea una potencia de 2. Incluso los algoritmos más " -"conocidos para la base a 10 tienen una complejidad subcuadrática. Convertir " -"un valor grande como ``int('1' * 500_000)`` puede tomar más de un segundo en " -"una CPU rápida." +"El tipo :class:`int` en CPython es un número de longitud arbitraria " +"almacenado en formato binario (comúnmente conocido como \"bignum\"). No " +"existe ningún algoritmo que pueda convertir una cadena en un entero binario " +"o un entero binario en una cadena en tiempo lineal; *unless* tiene como base " +"una potencia de 2. Incluso los algoritmos más conocidos para la base 10 " +"tienen una complejidad subcuadrática. Convertir un valor grande como " +"``int('1' * 500_000)`` puede llevar más de un segundo en una CPU rápida." #: ../Doc/library/stdtypes.rst:5539 -#, fuzzy msgid "" "Limiting conversion size offers a practical way to avoid :cve:`2020-10735`." msgstr "" -"Limitar el tamaño de la conversión ofrece una forma práctica para evitar " -"`CVE-2020-10735 `_." +"Limitar el tamaño de la conversión ofrece una forma práctica de evitar :cve:" +"`2020-10735`." #: ../Doc/library/stdtypes.rst:5541 msgid "" @@ -9322,6 +9998,27 @@ msgid "" "7144\n" ">>> assert int(hex(i_squared), base=16) == i*i # Hexadecimal is unlimited." msgstr "" +">>> import sys\n" +">>> sys.set_int_max_str_digits(4300) # Illustrative, this is the default.\n" +">>> _ = int('2' * 5432)\n" +"Traceback (most recent call last):\n" +"...\n" +"ValueError: Exceeds the limit (4300 digits) for integer string conversion: " +"value has 5432 digits; use sys.set_int_max_str_digits() to increase the " +"limit\n" +">>> i = int('2' * 4300)\n" +">>> len(str(i))\n" +"4300\n" +">>> i_squared = i*i\n" +">>> len(str(i_squared))\n" +"Traceback (most recent call last):\n" +"...\n" +"ValueError: Exceeds the limit (4300 digits) for integer string conversion; " +"use sys.set_int_max_str_digits() to increase the limit\n" +">>> len(hex(i_squared))\n" +"7144\n" +">>> assert int(hex(i_squared), base=16) == i*i # Hexadecimal no tiene " +"límite." #: ../Doc/library/stdtypes.rst:5567 msgid "" @@ -9349,6 +10046,13 @@ msgid "" "... '571186405732').to_bytes(53, 'big')\n" "..." msgstr "" +">>> import sys\n" +">>> assert sys.int_info.default_max_str_digits == 4300, sys.int_info\n" +">>> assert sys.int_info.str_digits_check_threshold == 640, sys.int_info\n" +">>> msg = int('578966293710682886880994035146873798396722250538762761564'\n" +"... '9252925514383915483333812743580549779436104706260696366600'\n" +"... '571186405732').to_bytes(53, 'big')\n" +"..." #: ../Doc/library/stdtypes.rst:5587 msgid "Affected APIs" @@ -9376,9 +10080,8 @@ msgid "``str(integer)``." msgstr "``str(integer)``." #: ../Doc/library/stdtypes.rst:5595 -#, fuzzy msgid "``repr(integer)``." -msgstr "``repr(integer)``" +msgstr "``repr(integer)``." #: ../Doc/library/stdtypes.rst:5596 #, python-format @@ -9448,7 +10151,6 @@ msgstr "" "int_max_str_digits=640``" #: ../Doc/library/stdtypes.rst:5619 -#, fuzzy msgid "" ":data:`sys.flags.int_max_str_digits` contains the value of :envvar:" "`PYTHONINTMAXSTRDIGITS` or :option:`-X int_max_str_digits <-X>`. If both the " @@ -9458,10 +10160,10 @@ msgid "" msgstr "" ":data:`sys.flags.int_max_str_digits` contiene el valor de :envvar:" "`PYTHONINTMAXSTRDIGITS` o :option:`-X int_max_str_digits <-X>`. Si tanto la " -"variable env como la opción ``-X`` están configuradas, la opción ``-X`` " -"tiene prioridad. Un valor de *-1* indica que ambos no están configurados, " -"por lo que se usó un valor de :data:`sys.int_info.default_max_str_digits` " -"durante la inicialización." +"variable de entorno como la opción ``-X`` están configuradas, la opción ``-" +"X`` tiene prioridad. Un valor de *-1* indica que ambas opciones no estaban " +"configuradas, por lo que se utilizó un valor de :data:`sys.int_info." +"default_max_str_digits` durante la inicialización." #: ../Doc/library/stdtypes.rst:5625 msgid "" @@ -9482,13 +10184,12 @@ msgstr "" "subintérpretes tienen su propio límite." #: ../Doc/library/stdtypes.rst:5632 -#, fuzzy msgid "" "Information about the default and minimum can be found in :data:`sys." "int_info`:" msgstr "" -"La información sobre el valor predeterminado y mínimo se puede encontrar en :" -"attr:`sys.int_info`:" +"La información sobre los valores predeterminados y mínimos se puede " +"encontrar en :data:`sys.int_info`:" #: ../Doc/library/stdtypes.rst:5634 msgid "" @@ -9545,7 +10246,6 @@ msgid "Recommended configuration" msgstr "Configuración recomendada" #: ../Doc/library/stdtypes.rst:5660 -#, fuzzy msgid "" "The default :data:`sys.int_info.default_max_str_digits` is expected to be " "reasonable for most applications. If your application requires a different " @@ -9554,10 +10254,10 @@ msgid "" msgstr "" "Se espera que el valor predeterminado :data:`sys.int_info." "default_max_str_digits` sea razonable para la mayoría de las aplicaciones. " -"Si tu aplicación requiere un límite diferente, configúralo desde el punto de " -"entrada principal utilizando el código independiente de la versión de " -"Python, ya que estas APIs se agregaron en versiones de parches de seguridad " -"en versiones anteriores a la 3.11." +"Si su aplicación requiere un límite diferente, configúrelo desde el punto de " +"entrada principal mediante un código independiente de la versión de Python, " +"ya que estas API se agregaron en versiones de parches de seguridad " +"anteriores a la 3.12." #: ../Doc/library/stdtypes.rst:5665 msgid "Example::" @@ -9575,6 +10275,15 @@ msgid "" "... elif current_limit < lower_bound:\n" "... sys.set_int_max_str_digits(lower_bound)" msgstr "" +">>> import sys\n" +">>> if hasattr(sys, \"set_int_max_str_digits\"):\n" +"... upper_bound = 68000\n" +"... lower_bound = 4004\n" +"... current_limit = sys.get_int_max_str_digits()\n" +"... if current_limit == 0 or current_limit > upper_bound:\n" +"... sys.set_int_max_str_digits(upper_bound)\n" +"... elif current_limit < lower_bound:\n" +"... sys.set_int_max_str_digits(lower_bound)" #: ../Doc/library/stdtypes.rst:5677 msgid "If you need to disable it entirely, set it to ``0``." @@ -9625,148 +10334,134 @@ msgstr "" "un único elemento, que sería la tupla a ser formateada." #: ../Doc/library/stdtypes.rst:13 -#, fuzzy msgid "built-in" -msgstr "Tipos integrados" +msgstr "integrados" #: ../Doc/library/stdtypes.rst:13 ../Doc/library/stdtypes.rst:316 #: ../Doc/library/stdtypes.rst:393 ../Doc/library/stdtypes.rst:950 #: ../Doc/library/stdtypes.rst:1117 ../Doc/library/stdtypes.rst:1139 #: ../Doc/library/stdtypes.rst:1154 ../Doc/library/stdtypes.rst:4435 #: ../Doc/library/stdtypes.rst:5418 -#, fuzzy msgid "types" -msgstr "Tuplas" +msgstr "tipos" #: ../Doc/library/stdtypes.rst:34 ../Doc/library/stdtypes.rst:1154 #: ../Doc/library/stdtypes.rst:4435 msgid "statement" -msgstr "" +msgstr "statement" #: ../Doc/library/stdtypes.rst:34 msgid "if" -msgstr "" +msgstr "if" #: ../Doc/library/stdtypes.rst:34 msgid "while" -msgstr "" +msgstr "while" #: ../Doc/library/stdtypes.rst:34 msgid "truth" -msgstr "" +msgstr "truth" #: ../Doc/library/stdtypes.rst:34 msgid "value" -msgstr "" +msgstr "value" #: ../Doc/library/stdtypes.rst:34 ../Doc/library/stdtypes.rst:81 #: ../Doc/library/stdtypes.rst:208 ../Doc/library/stdtypes.rst:817 -#, fuzzy msgid "Boolean" -msgstr "Valores booleanos" +msgstr "Boolean" #: ../Doc/library/stdtypes.rst:34 ../Doc/library/stdtypes.rst:81 #: ../Doc/library/stdtypes.rst:393 -#, fuzzy msgid "operations" -msgstr "Operación" +msgstr "operaciones" #: ../Doc/library/stdtypes.rst:34 msgid "false" -msgstr "" +msgstr "false" #: ../Doc/library/stdtypes.rst:44 -#, fuzzy msgid "true" -msgstr "Tuplas" +msgstr "verdad" #: ../Doc/library/stdtypes.rst:52 -#, fuzzy msgid "None (Built-in object)" -msgstr "Otros tipos predefinidos" +msgstr "None (objecto integrado)" #: ../Doc/library/stdtypes.rst:52 msgid "False (Built-in object)" -msgstr "" +msgstr "False (Built-in object)" #: ../Doc/library/stdtypes.rst:64 ../Doc/library/stdtypes.rst:98 #: ../Doc/library/stdtypes.rst:123 ../Doc/library/stdtypes.rst:195 #: ../Doc/library/stdtypes.rst:246 ../Doc/library/stdtypes.rst:393 #: ../Doc/library/stdtypes.rst:950 -#, fuzzy msgid "operator" -msgstr "Operación" +msgstr "operador" #: ../Doc/library/stdtypes.rst:64 ../Doc/library/stdtypes.rst:98 msgid "or" -msgstr "" +msgstr "or" #: ../Doc/library/stdtypes.rst:64 ../Doc/library/stdtypes.rst:98 -#, fuzzy msgid "and" -msgstr "y::" +msgstr "and" #: ../Doc/library/stdtypes.rst:64 ../Doc/library/stdtypes.rst:817 msgid "False" -msgstr "" +msgstr "False" #: ../Doc/library/stdtypes.rst:64 ../Doc/library/stdtypes.rst:817 -#, fuzzy msgid "True" -msgstr "Tuplas" +msgstr "True" #: ../Doc/library/stdtypes.rst:98 -#, fuzzy msgid "not" -msgstr "Notas" +msgstr "not" #: ../Doc/library/stdtypes.rst:123 -#, fuzzy msgid "chaining" -msgstr "Significado" +msgstr "encadenamiento" #: ../Doc/library/stdtypes.rst:123 -#, fuzzy msgid "comparisons" -msgstr "Comparaciones" +msgstr "comparaciones" #: ../Doc/library/stdtypes.rst:123 -#, fuzzy msgid "comparison" -msgstr "Comparaciones" +msgstr "comparación" #: ../Doc/library/stdtypes.rst:123 msgid "==" -msgstr "" +msgstr "==" #: ../Doc/library/stdtypes.rst:123 msgid "< (less)" -msgstr "" +msgstr "< (menor)" #: ../Doc/library/stdtypes.rst:123 msgid "<=" -msgstr "" +msgstr "<=" #: ../Doc/library/stdtypes.rst:123 msgid "> (greater)" -msgstr "" +msgstr "> (mayor)" #: ../Doc/library/stdtypes.rst:123 msgid ">=" -msgstr "" +msgstr ">=" #: ../Doc/library/stdtypes.rst:123 msgid "!=" -msgstr "" +msgstr "!=" #: ../Doc/library/stdtypes.rst:123 msgid "is" -msgstr "" +msgstr "is" #: ../Doc/library/stdtypes.rst:123 -#, fuzzy msgid "is not" -msgstr "``is not``" +msgstr "is not" #: ../Doc/library/stdtypes.rst:163 ../Doc/library/stdtypes.rst:208 #: ../Doc/library/stdtypes.rst:934 ../Doc/library/stdtypes.rst:1117 @@ -9778,668 +10473,609 @@ msgstr "``is not``" #: ../Doc/library/stdtypes.rst:4435 ../Doc/library/stdtypes.rst:4913 #: ../Doc/library/stdtypes.rst:5168 ../Doc/library/stdtypes.rst:5338 #: ../Doc/library/stdtypes.rst:5382 -#, fuzzy msgid "object" -msgstr "Objetos Tipo" +msgstr "object" #: ../Doc/library/stdtypes.rst:163 ../Doc/library/stdtypes.rst:208 #: ../Doc/library/stdtypes.rst:229 ../Doc/library/stdtypes.rst:316 #: ../Doc/library/stdtypes.rst:335 msgid "numeric" -msgstr "" +msgstr "numeric" #: ../Doc/library/stdtypes.rst:163 -#, fuzzy msgid "objects" -msgstr "Objetos Tipo" +msgstr "objectos" #: ../Doc/library/stdtypes.rst:163 -#, fuzzy msgid "comparing" -msgstr "Comparaciones" +msgstr "comparando" #: ../Doc/library/stdtypes.rst:173 msgid "__eq__() (instance method)" -msgstr "" +msgstr "__eq__() (método instancia)" #: ../Doc/library/stdtypes.rst:173 msgid "__ne__() (instance method)" -msgstr "" +msgstr "__ne__() (método instancia)" #: ../Doc/library/stdtypes.rst:173 msgid "__lt__() (instance method)" -msgstr "" +msgstr "__lt__() (método instancia)" #: ../Doc/library/stdtypes.rst:173 msgid "__le__() (instance method)" -msgstr "" +msgstr "__le__() (método instancia)" #: ../Doc/library/stdtypes.rst:173 msgid "__gt__() (instance method)" -msgstr "" +msgstr "__gt__() (método instancia)" #: ../Doc/library/stdtypes.rst:173 msgid "__ge__() (instance method)" -msgstr "" +msgstr "__ge__() (método instancia)" #: ../Doc/library/stdtypes.rst:195 ../Doc/library/stdtypes.rst:950 msgid "in" -msgstr "" +msgstr "in" #: ../Doc/library/stdtypes.rst:195 ../Doc/library/stdtypes.rst:950 -#, fuzzy msgid "not in" -msgstr "``x not in s``" +msgstr "not in" #: ../Doc/library/stdtypes.rst:208 ../Doc/library/stdtypes.rst:229 #: ../Doc/library/stdtypes.rst:393 msgid "integer" -msgstr "" +msgstr "integer" #: ../Doc/library/stdtypes.rst:208 ../Doc/library/stdtypes.rst:229 -#, fuzzy msgid "floating-point" -msgstr "Formato en coma flotante decimal." +msgstr "coma flotante" #: ../Doc/library/stdtypes.rst:208 ../Doc/library/stdtypes.rst:229 msgid "complex number" -msgstr "" +msgstr "complex number" #: ../Doc/library/stdtypes.rst:208 msgid "C" -msgstr "" +msgstr "C" #: ../Doc/library/stdtypes.rst:208 msgid "language" -msgstr "" +msgstr "languaje" #: ../Doc/library/stdtypes.rst:229 msgid "literals" -msgstr "" +msgstr "literales" #: ../Doc/library/stdtypes.rst:229 msgid "hexadecimal" -msgstr "" +msgstr "hexadecimal" #: ../Doc/library/stdtypes.rst:229 msgid "octal" -msgstr "" +msgstr "octal" #: ../Doc/library/stdtypes.rst:229 msgid "binary" -msgstr "" +msgstr "binario" #: ../Doc/library/stdtypes.rst:246 msgid "arithmetic" -msgstr "" +msgstr "aritmética" #: ../Doc/library/stdtypes.rst:246 ../Doc/library/stdtypes.rst:950 #: ../Doc/library/stdtypes.rst:1117 ../Doc/library/stdtypes.rst:4435 #: ../Doc/library/stdtypes.rst:5389 ../Doc/library/stdtypes.rst:5403 #: ../Doc/library/stdtypes.rst:5418 -#, fuzzy msgid "built-in function" -msgstr "Tipos integrados" +msgstr "función integrada" #: ../Doc/library/stdtypes.rst:246 msgid "int" -msgstr "" +msgstr "int" #: ../Doc/library/stdtypes.rst:246 -#, fuzzy msgid "float" -msgstr "Flag" +msgstr "float" #: ../Doc/library/stdtypes.rst:246 -#, fuzzy msgid "complex" -msgstr ":func:`complex`" +msgstr "complejo" #: ../Doc/library/stdtypes.rst:246 ../Doc/library/stdtypes.rst:2402 #: ../Doc/library/stdtypes.rst:3621 msgid "+ (plus)" -msgstr "" +msgstr "+ (más)" #: ../Doc/library/stdtypes.rst:246 -#, fuzzy msgid "unary operator" -msgstr "Separador de grupo" +msgstr "operador unario" #: ../Doc/library/stdtypes.rst:246 -#, fuzzy msgid "binary operator" -msgstr "Separador de grupo" +msgstr "operador binario" #: ../Doc/library/stdtypes.rst:246 ../Doc/library/stdtypes.rst:2402 #: ../Doc/library/stdtypes.rst:3621 msgid "- (minus)" -msgstr "" +msgstr "- (menos)" #: ../Doc/library/stdtypes.rst:246 ../Doc/library/stdtypes.rst:2359 #: ../Doc/library/stdtypes.rst:3578 msgid "* (asterisk)" -msgstr "" +msgstr "* (asterisco)" #: ../Doc/library/stdtypes.rst:246 msgid "/ (slash)" -msgstr "" +msgstr "/ (slash)" #: ../Doc/library/stdtypes.rst:246 msgid "//" -msgstr "" +msgstr "//" #: ../Doc/library/stdtypes.rst:246 ../Doc/library/stdtypes.rst:2323 #: ../Doc/library/stdtypes.rst:3546 msgid "% (percent)" -msgstr "" +msgstr "% (porcentaje)" #: ../Doc/library/stdtypes.rst:246 msgid "**" -msgstr "" +msgstr "**" #: ../Doc/library/stdtypes.rst:316 ../Doc/library/stdtypes.rst:393 #: ../Doc/library/stdtypes.rst:950 ../Doc/library/stdtypes.rst:1154 #: ../Doc/library/stdtypes.rst:4435 -#, fuzzy msgid "operations on" -msgstr "Operación" +msgstr "operaciones sobre" #: ../Doc/library/stdtypes.rst:316 -#, fuzzy msgid "conjugate() (complex number method)" -msgstr "conjugado del número complejo *c*" +msgstr "conjugate() (método número complejo)" #: ../Doc/library/stdtypes.rst:335 ../Doc/library/stdtypes.rst:1606 #: ../Doc/library/stdtypes.rst:2526 ../Doc/library/stdtypes.rst:5418 -#, fuzzy msgid "module" -msgstr "Módulos" +msgstr "módulo" #: ../Doc/library/stdtypes.rst:335 msgid "math" -msgstr "" +msgstr "math" #: ../Doc/library/stdtypes.rst:335 msgid "floor() (in module math)" -msgstr "" +msgstr "floor() (en el módulo math)" #: ../Doc/library/stdtypes.rst:335 msgid "ceil() (in module math)" -msgstr "" +msgstr "ceil() (en el módulo math)" #: ../Doc/library/stdtypes.rst:335 msgid "trunc() (in module math)" -msgstr "" +msgstr "trunc() (en el módulo math)" #: ../Doc/library/stdtypes.rst:335 -#, fuzzy msgid "conversions" -msgstr "Conversión" +msgstr "conversiones" #: ../Doc/library/stdtypes.rst:393 msgid "bitwise" -msgstr "" +msgstr "bitwise" #: ../Doc/library/stdtypes.rst:393 msgid "shifting" -msgstr "" +msgstr "deslizamiento" #: ../Doc/library/stdtypes.rst:393 -#, fuzzy msgid "masking" -msgstr "Significado" +msgstr "enmascaramiento" #: ../Doc/library/stdtypes.rst:393 msgid "| (vertical bar)" -msgstr "" +msgstr "| (barra vertical)" #: ../Doc/library/stdtypes.rst:393 msgid "^ (caret)" -msgstr "" +msgstr "^ (caret)" #: ../Doc/library/stdtypes.rst:393 msgid "& (ampersand)" -msgstr "" +msgstr "& (ampersand)" #: ../Doc/library/stdtypes.rst:393 msgid "<<" -msgstr "" +msgstr "<<" #: ../Doc/library/stdtypes.rst:393 msgid ">>" -msgstr "" +msgstr ">>" #: ../Doc/library/stdtypes.rst:393 msgid "~ (tilde)" -msgstr "" +msgstr "~ (tilde)" #: ../Doc/library/stdtypes.rst:817 -#, fuzzy msgid "values" -msgstr "Valores booleanos" +msgstr "valores" #: ../Doc/library/stdtypes.rst:847 -#, fuzzy msgid "iterator protocol" -msgstr "Tipos de iteradores" +msgstr "protocolo de iterador" #: ../Doc/library/stdtypes.rst:847 ../Doc/library/stdtypes.rst:4828 msgid "protocol" -msgstr "" +msgstr "protocolo" #: ../Doc/library/stdtypes.rst:847 -#, fuzzy msgid "iterator" -msgstr "Tipos de iteradores" +msgstr "iterador" #: ../Doc/library/stdtypes.rst:847 ../Doc/library/stdtypes.rst:934 #: ../Doc/library/stdtypes.rst:950 ../Doc/library/stdtypes.rst:1117 #: ../Doc/library/stdtypes.rst:1139 ../Doc/library/stdtypes.rst:1154 msgid "sequence" -msgstr "" +msgstr "sequence" #: ../Doc/library/stdtypes.rst:847 -#, fuzzy msgid "iteration" -msgstr "Operación" +msgstr "iteración" #: ../Doc/library/stdtypes.rst:847 msgid "container" -msgstr "" +msgstr "container" #: ../Doc/library/stdtypes.rst:847 -#, fuzzy msgid "iteration over" -msgstr "Operación" +msgstr "iteración sobre" #: ../Doc/library/stdtypes.rst:950 ../Doc/library/stdtypes.rst:4435 msgid "len" -msgstr "" +msgstr "len" #: ../Doc/library/stdtypes.rst:950 -#, fuzzy msgid "min" -msgstr "Significado" +msgstr "min" #: ../Doc/library/stdtypes.rst:950 msgid "max" -msgstr "" +msgstr "max" #: ../Doc/library/stdtypes.rst:950 -#, fuzzy msgid "concatenation" -msgstr "Operación" +msgstr "concatenación" #: ../Doc/library/stdtypes.rst:950 -#, fuzzy msgid "operation" -msgstr "Operación" +msgstr "operación" #: ../Doc/library/stdtypes.rst:950 -#, fuzzy msgid "repetition" -msgstr "Representación" +msgstr "repetición" #: ../Doc/library/stdtypes.rst:950 ../Doc/library/stdtypes.rst:1154 -#, fuzzy msgid "subscript" -msgstr "Descripción" +msgstr "subscript" #: ../Doc/library/stdtypes.rst:950 ../Doc/library/stdtypes.rst:1154 msgid "slice" -msgstr "" +msgstr "slice" #: ../Doc/library/stdtypes.rst:950 msgid "count() (sequence method)" -msgstr "" +msgstr "count() (sequence method)" #: ../Doc/library/stdtypes.rst:950 msgid "index() (sequence method)" -msgstr "" +msgstr "index() (sequence method)" #: ../Doc/library/stdtypes.rst:1006 msgid "loop" -msgstr "" +msgstr "loop" #: ../Doc/library/stdtypes.rst:1006 -#, fuzzy msgid "over mutable sequence" -msgstr "Tipos de secuencia mutables" +msgstr "sobre secuencia mutable" #: ../Doc/library/stdtypes.rst:1006 -#, fuzzy msgid "mutable sequence" -msgstr "Tipos de secuencia mutables" +msgstr "secuencia mutable" #: ../Doc/library/stdtypes.rst:1006 msgid "loop over" -msgstr "" +msgstr "loop over" #: ../Doc/library/stdtypes.rst:1117 msgid "immutable" -msgstr "" +msgstr "immutable" #: ../Doc/library/stdtypes.rst:1117 ../Doc/library/stdtypes.rst:1339 -#, fuzzy msgid "tuple" -msgstr "Tuplas" +msgstr "tuple" #: ../Doc/library/stdtypes.rst:1117 msgid "hash" -msgstr "" +msgstr "hash" #: ../Doc/library/stdtypes.rst:1139 msgid "mutable" -msgstr "" +msgstr "mutable" #: ../Doc/library/stdtypes.rst:1139 ../Doc/library/stdtypes.rst:1154 #: ../Doc/library/stdtypes.rst:1260 -#, fuzzy msgid "list" -msgstr "Listas" +msgstr "list" #: ../Doc/library/stdtypes.rst:1139 ../Doc/library/stdtypes.rst:2526 #: ../Doc/library/stdtypes.rst:2652 ../Doc/library/stdtypes.rst:2724 #: ../Doc/library/stdtypes.rst:3546 -#, fuzzy msgid "bytearray" -msgstr "Objetos de tipo *Bytearray*" +msgstr "bytearray" #: ../Doc/library/stdtypes.rst:1154 ../Doc/library/stdtypes.rst:4435 #: ../Doc/library/stdtypes.rst:5168 ../Doc/library/stdtypes.rst:5418 -#, fuzzy msgid "type" -msgstr "Tuplas" +msgstr "type" #: ../Doc/library/stdtypes.rst:1154 msgid "assignment" -msgstr "" +msgstr "asignación" #: ../Doc/library/stdtypes.rst:1154 ../Doc/library/stdtypes.rst:4435 msgid "del" -msgstr "" +msgstr "del" #: ../Doc/library/stdtypes.rst:1154 msgid "append() (sequence method)" -msgstr "" +msgstr "append() (sequence method)" #: ../Doc/library/stdtypes.rst:1154 msgid "clear() (sequence method)" -msgstr "" +msgstr "clear() (sequence method)" #: ../Doc/library/stdtypes.rst:1154 msgid "copy() (sequence method)" -msgstr "" +msgstr "copy() (sequence method)" #: ../Doc/library/stdtypes.rst:1154 msgid "extend() (sequence method)" -msgstr "" +msgstr "extend() (sequence method)" #: ../Doc/library/stdtypes.rst:1154 msgid "insert() (sequence method)" -msgstr "" +msgstr "insert() (sequence method)" #: ../Doc/library/stdtypes.rst:1154 msgid "pop() (sequence method)" -msgstr "" +msgstr "pop() (sequence method)" #: ../Doc/library/stdtypes.rst:1154 msgid "remove() (sequence method)" -msgstr "" +msgstr "remove() (sequence method)" #: ../Doc/library/stdtypes.rst:1154 msgid "reverse() (sequence method)" -msgstr "" +msgstr "reverse() (sequence method)" #: ../Doc/library/stdtypes.rst:1383 -#, fuzzy msgid "range" -msgstr "Rangos" +msgstr "range" #: ../Doc/library/stdtypes.rst:1504 ../Doc/library/stdtypes.rst:1553 #: ../Doc/library/stdtypes.rst:1598 ../Doc/library/stdtypes.rst:2323 -#, fuzzy msgid "string" -msgstr "Métodos de las cadenas de caracteres" +msgstr "string" #: ../Doc/library/stdtypes.rst:1504 -#, fuzzy msgid "text sequence type" -msgstr "Tipos de secuencia mutables" +msgstr "tipo de secuencia de texto" #: ../Doc/library/stdtypes.rst:1504 ../Doc/library/stdtypes.rst:1553 #: ../Doc/library/stdtypes.rst:1571 -#, fuzzy msgid "str (built-in class)" -msgstr "Otros tipos predefinidos" +msgstr "str (clase incorporada)" #: ../Doc/library/stdtypes.rst:1504 msgid "(see also string)" -msgstr "" +msgstr "(Vea también string)" #: ../Doc/library/stdtypes.rst:1540 msgid "io.StringIO" -msgstr "" +msgstr "io.StringIO" #: ../Doc/library/stdtypes.rst:1571 ../Doc/library/stdtypes.rst:2518 msgid "buffer protocol" -msgstr "" +msgstr "buffer protocol" #: ../Doc/library/stdtypes.rst:1571 ../Doc/library/stdtypes.rst:2526 #: ../Doc/library/stdtypes.rst:2545 ../Doc/library/stdtypes.rst:2724 #: ../Doc/library/stdtypes.rst:3546 -#, fuzzy msgid "bytes" -msgstr "Notas" +msgstr "bytes" #: ../Doc/library/stdtypes.rst:1598 ../Doc/library/stdtypes.rst:2724 -#, fuzzy msgid "methods" -msgstr "Métodos" +msgstr "métodos" #: ../Doc/library/stdtypes.rst:1606 msgid "re" -msgstr "" +msgstr "re" #: ../Doc/library/stdtypes.rst:2131 ../Doc/library/stdtypes.rst:3400 msgid "universal newlines" -msgstr "" +msgstr "universal newlines" #: ../Doc/library/stdtypes.rst:2131 -#, fuzzy msgid "str.splitlines method" -msgstr "Métodos de las cadenas de caracteres" +msgstr "método str.splitlines" #: ../Doc/library/stdtypes.rst:2323 msgid "formatting, string (%)" -msgstr "" +msgstr "formatting, string (%)" #: ../Doc/library/stdtypes.rst:2323 msgid "interpolation, string (%)" -msgstr "" +msgstr "interpolation, string (%)" #: ../Doc/library/stdtypes.rst:2323 msgid "formatting, printf" -msgstr "" +msgstr "formatting, printf" #: ../Doc/library/stdtypes.rst:2323 msgid "interpolation, printf" -msgstr "" +msgstr "interpolation, printf" #: ../Doc/library/stdtypes.rst:2323 ../Doc/library/stdtypes.rst:3546 -#, fuzzy msgid "printf-style formatting" -msgstr "Usando el formateo tipo ``printf`` con bytes" +msgstr "formateo estilo printf" #: ../Doc/library/stdtypes.rst:2323 ../Doc/library/stdtypes.rst:3546 -#, fuzzy msgid "sprintf-style formatting" -msgstr "Usando el formateo tipo ``printf`` con bytes" +msgstr "formateo con estilo sprintf" #: ../Doc/library/stdtypes.rst:2359 ../Doc/library/stdtypes.rst:3578 msgid "() (parentheses)" -msgstr "" +msgstr "() (paréntesis)" #: ../Doc/library/stdtypes.rst:2359 ../Doc/library/stdtypes.rst:2402 #: ../Doc/library/stdtypes.rst:3578 ../Doc/library/stdtypes.rst:3621 -#, fuzzy msgid "in printf-style formatting" -msgstr "Usando el formateo tipo ``printf`` con bytes" +msgstr "en formateo con estilo printf" #: ../Doc/library/stdtypes.rst:2359 ../Doc/library/stdtypes.rst:3578 msgid ". (dot)" -msgstr "" +msgstr ". (punto)" #: ../Doc/library/stdtypes.rst:2402 ../Doc/library/stdtypes.rst:3621 msgid "# (hash)" -msgstr "" +msgstr "# (hash)" #: ../Doc/library/stdtypes.rst:2402 ../Doc/library/stdtypes.rst:3621 msgid "space" -msgstr "" +msgstr "space" #: ../Doc/library/stdtypes.rst:2518 -#, fuzzy msgid "binary sequence types" -msgstr "Tipos de secuencia inmutables" +msgstr "tipo de secuencia binaria" #: ../Doc/library/stdtypes.rst:2526 -#, fuzzy msgid "memoryview" -msgstr "Vistas de memoria" +msgstr "memoryview" #: ../Doc/library/stdtypes.rst:2526 msgid "array" -msgstr "" +msgstr "array" #: ../Doc/library/stdtypes.rst:3400 msgid "bytes.splitlines method" -msgstr "" +msgstr "bytes.splitlines method" #: ../Doc/library/stdtypes.rst:3400 msgid "bytearray.splitlines method" -msgstr "" +msgstr "bytearray.splitlines method" #: ../Doc/library/stdtypes.rst:3546 -#, fuzzy msgid "formatting" -msgstr "Operación" +msgstr "formateado" #: ../Doc/library/stdtypes.rst:3546 msgid "bytes (%)" -msgstr "" +msgstr "bytes (%)" #: ../Doc/library/stdtypes.rst:3546 -#, fuzzy msgid "bytearray (%)" -msgstr "Objetos de tipo *Bytearray*" +msgstr "bytearray (%)" #: ../Doc/library/stdtypes.rst:3546 -#, fuzzy msgid "interpolation" -msgstr "Tabulación de línea" +msgstr "interpolación" #: ../Doc/library/stdtypes.rst:4233 msgid "set" -msgstr "" +msgstr "conjunto" #: ../Doc/library/stdtypes.rst:4435 -#, fuzzy msgid "mapping" -msgstr "Significado" +msgstr "mapeado" #: ../Doc/library/stdtypes.rst:4435 -#, fuzzy msgid "dictionary" -msgstr "Objetos tipos vista de diccionario" +msgstr "diccionario" #: ../Doc/library/stdtypes.rst:4518 msgid "__missing__()" -msgstr "" +msgstr "__missing__()" #: ../Doc/library/stdtypes.rst:4828 -#, fuzzy msgid "context manager" -msgstr "Tipos gestores de contexto" +msgstr "gestor de contexto" #: ../Doc/library/stdtypes.rst:4828 -#, fuzzy msgid "context management protocol" -msgstr "Tipos gestores de contexto" +msgstr "protocolo gestor de contexto" #: ../Doc/library/stdtypes.rst:4828 -#, fuzzy msgid "context management" -msgstr "Tipos gestores de contexto" +msgstr "gestión de contexto" #: ../Doc/library/stdtypes.rst:4901 -#, fuzzy msgid "annotation" -msgstr "Operación" +msgstr "anotación" #: ../Doc/library/stdtypes.rst:4901 msgid "type annotation; type hint" -msgstr "" +msgstr "type annotation; type hint" #: ../Doc/library/stdtypes.rst:4913 -#, fuzzy msgid "GenericAlias" -msgstr "Tipo Alias Genérico" +msgstr "GenericAlias" #: ../Doc/library/stdtypes.rst:4913 msgid "Generic" -msgstr "" +msgstr "Generic" #: ../Doc/library/stdtypes.rst:4913 -#, fuzzy msgid "Alias" -msgstr "Listas" +msgstr "Alias" #: ../Doc/library/stdtypes.rst:5168 -#, fuzzy msgid "Union" -msgstr "Funciones" +msgstr "Unión" #: ../Doc/library/stdtypes.rst:5168 -#, fuzzy msgid "union" -msgstr "Funciones" +msgstr "unión" #: ../Doc/library/stdtypes.rst:5338 -#, fuzzy msgid "method" -msgstr "Métodos" +msgstr "método" #: ../Doc/library/stdtypes.rst:5382 msgid "code" -msgstr "" +msgstr "code" #: ../Doc/library/stdtypes.rst:5382 -#, fuzzy msgid "code object" -msgstr "Objetos código" +msgstr "Objetos code" #: ../Doc/library/stdtypes.rst:5389 msgid "compile" -msgstr "" +msgstr "compile" #: ../Doc/library/stdtypes.rst:5389 msgid "__code__ (function object attribute)" -msgstr "" +msgstr "__code__ (function object attribute)" #: ../Doc/library/stdtypes.rst:5403 msgid "exec" -msgstr "" +msgstr "exec" #: ../Doc/library/stdtypes.rst:5403 -#, fuzzy msgid "eval" -msgstr "igual que" +msgstr "eval" #: ../Doc/library/stdtypes.rst:5442 msgid "..." -msgstr "" +msgstr "..." #: ../Doc/library/stdtypes.rst:5442 msgid "ellipsis literal" -msgstr "" +msgstr "ellipsis literal" From 1824fff966856e2c84fff0d7b8bcde18453e313f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cristi=C3=A1n=20Maureira-Fredes?= Date: Sun, 22 Dec 2024 00:19:41 +0100 Subject: [PATCH 05/78] Translate deprecations/index (#3326) Closes #3298 --- deprecations/index.po | 802 +++++++++++++++++++--------- dictionaries/deprecations_index.txt | 2 + 2 files changed, 565 insertions(+), 239 deletions(-) create mode 100644 dictionaries/deprecations_index.txt diff --git a/deprecations/index.po b/deprecations/index.po index 25962abe40..ffe19c620d 100644 --- a/deprecations/index.po +++ b/deprecations/index.po @@ -12,29 +12,32 @@ msgstr "" "POT-Creation-Date: 2024-11-21 16:38-0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" -"Language: es\n" "Language-Team: es \n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\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.16.0\n" #: ../Doc/deprecations/index.rst:2 msgid "Deprecations" -msgstr "" +msgstr "Desusos" #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:2 #: ../Doc/deprecations/pending-removal-in-3.14.rst:2 msgid "Pending Removal in Python 3.14" -msgstr "" +msgstr "Eliminación pendiente en Python 3.14" #: ../Doc/deprecations/pending-removal-in-3.14.rst:4 msgid "" -":mod:`argparse`: The *type*, *choices*, and *metavar* parameters of :class:`!" -"argparse.BooleanOptionalAction` are deprecated and will be removed in 3.14. " -"(Contributed by Nikita Sobolev in :gh:`92248`.)" +":mod:`argparse`: The *type*, *choices*, and *metavar* parameters of " +":class:`!argparse.BooleanOptionalAction` are deprecated and will be removed " +"in 3.14. (Contributed by Nikita Sobolev in :gh:`92248`.)" msgstr "" +":mod:`argparse`: Los parámetros *type*, *choices* y *metavar* de " +":class:`!argparse.BooleanOptionalAction` están obsoletos y se eliminarán en " +"la versión 3.14. (Contribuido por Nikita Sobolev en :gh:`92248`.)" #: ../Doc/deprecations/pending-removal-in-3.14.rst:9 msgid "" @@ -42,171 +45,229 @@ msgid "" "since Python 3.8, now cause a :exc:`DeprecationWarning` to be emitted at " "runtime when they are accessed or used, and will be removed in Python 3.14:" msgstr "" +":mod:`ast`: Las siguientes funciones han quedado obsoletas en la " +"documentación desde Python 3.8, ahora hacen que se emita un " +":exc:`DeprecationWarning` en tiempo de ejecución cuando se accede a ellas o " +"se las utiliza, y se eliminarán en Python 3.14:" #: ../Doc/deprecations/pending-removal-in-3.14.rst:13 msgid ":class:`!ast.Num`" -msgstr "" +msgstr ":class:`!ast.Num`" #: ../Doc/deprecations/pending-removal-in-3.14.rst:14 msgid ":class:`!ast.Str`" -msgstr "" +msgstr ":class:`!ast.Str`" #: ../Doc/deprecations/pending-removal-in-3.14.rst:15 msgid ":class:`!ast.Bytes`" -msgstr "" +msgstr ":class:`!ast.Bytes`" #: ../Doc/deprecations/pending-removal-in-3.14.rst:16 msgid ":class:`!ast.NameConstant`" -msgstr "" +msgstr ":class:`!ast.NameConstant`" #: ../Doc/deprecations/pending-removal-in-3.14.rst:17 msgid ":class:`!ast.Ellipsis`" -msgstr "" +msgstr ":class:`!ast.Ellipsis`" #: ../Doc/deprecations/pending-removal-in-3.14.rst:19 msgid "" -"Use :class:`ast.Constant` instead. (Contributed by Serhiy Storchaka in :gh:" -"`90953`.)" +"Use :class:`ast.Constant` instead. (Contributed by Serhiy Storchaka in " +":gh:`90953`.)" msgstr "" +"Utilice :class:`ast.Constant` en su lugar. (Contribuido por Serhiy Storchaka" +" en :gh:`90953`.)" #: ../Doc/deprecations/pending-removal-in-3.14.rst:22 msgid ":mod:`asyncio`:" -msgstr "" +msgstr ":mod:`asyncio`:" #: ../Doc/deprecations/pending-removal-in-3.14.rst:24 msgid "" -"The child watcher classes :class:`~asyncio.MultiLoopChildWatcher`, :class:" -"`~asyncio.FastChildWatcher`, :class:`~asyncio.AbstractChildWatcher` and :" -"class:`~asyncio.SafeChildWatcher` are deprecated and will be removed in " -"Python 3.14. (Contributed by Kumar Aditya in :gh:`94597`.)" +"The child watcher classes :class:`~asyncio.MultiLoopChildWatcher`, " +":class:`~asyncio.FastChildWatcher`, :class:`~asyncio.AbstractChildWatcher` " +"and :class:`~asyncio.SafeChildWatcher` are deprecated and will be removed in" +" Python 3.14. (Contributed by Kumar Aditya in :gh:`94597`.)" msgstr "" +"Las clases de supervisión secundaria " +":class:`~asyncio.MultiLoopChildWatcher`, :class:`~asyncio.FastChildWatcher`," +" :class:`~asyncio.AbstractChildWatcher` y :class:`~asyncio.SafeChildWatcher`" +" están obsoletas y se eliminarán en Python 3.14. (Contribuido por Kumar " +"Aditya en :gh:`94597`.)" #: ../Doc/deprecations/pending-removal-in-3.14.rst:30 msgid "" -":func:`asyncio.set_child_watcher`, :func:`asyncio.get_child_watcher`, :meth:" -"`asyncio.AbstractEventLoopPolicy.set_child_watcher` and :meth:`asyncio." -"AbstractEventLoopPolicy.get_child_watcher` are deprecated and will be " -"removed in Python 3.14. (Contributed by Kumar Aditya in :gh:`94597`.)" +":func:`asyncio.set_child_watcher`, :func:`asyncio.get_child_watcher`, " +":meth:`asyncio.AbstractEventLoopPolicy.set_child_watcher` and " +":meth:`asyncio.AbstractEventLoopPolicy.get_child_watcher` are deprecated and" +" will be removed in Python 3.14. (Contributed by Kumar Aditya in " +":gh:`94597`.)" msgstr "" +":func:`asyncio.set_child_watcher`, :func:`asyncio.get_child_watcher`, " +":meth:`asyncio.AbstractEventLoopPolicy.set_child_watcher` y " +":meth:`asyncio.AbstractEventLoopPolicy.get_child_watcher` están obsoletos y " +"se eliminarán en Python 3.14. (Contribuido por Kumar Aditya en :gh:`94597`.)" #: ../Doc/deprecations/pending-removal-in-3.14.rst:36 msgid "" "The :meth:`~asyncio.get_event_loop` method of the default event loop policy " "now emits a :exc:`DeprecationWarning` if there is no current event loop set " -"and it decides to create one. (Contributed by Serhiy Storchaka and Guido van " -"Rossum in :gh:`100160`.)" +"and it decides to create one. (Contributed by Serhiy Storchaka and Guido van" +" Rossum in :gh:`100160`.)" msgstr "" +"El método :meth:`~asyncio.get_event_loop` de la política de bucle de eventos" +" predeterminada ahora emite un :exc:`DeprecationWarning` si no hay ningún " +"bucle de eventos definido actualmente y decide crear uno. (Contribuido por " +"Serhiy Storchaka y Guido van Rossum en :gh:`100160`.)" #: ../Doc/deprecations/pending-removal-in-3.14.rst:41 msgid "" ":mod:`collections.abc`: Deprecated :class:`~collections.abc.ByteString`. " "Prefer :class:`!Sequence` or :class:`~collections.abc.Buffer`. For use in " -"typing, prefer a union, like ``bytes | bytearray``, or :class:`collections." -"abc.Buffer`. (Contributed by Shantanu Jain in :gh:`91896`.)" +"typing, prefer a union, like ``bytes | bytearray``, or " +":class:`collections.abc.Buffer`. (Contributed by Shantanu Jain in " +":gh:`91896`.)" msgstr "" +":mod:`collections.abc`: :class:`~collections.abc.ByteString` obsoleto. Se " +"prefiere :class:`!Sequence` o :class:`~collections.abc.Buffer`. Para uso en " +"tipificación, se prefiere una unión, como ``bytes | bytearray`` o " +":class:`collections.abc.Buffer`. (Contribuido por Shantanu Jain en " +":gh:`91896`.)" #: ../Doc/deprecations/pending-removal-in-3.14.rst:47 msgid "" -":mod:`email`: Deprecated the *isdst* parameter in :func:`email.utils." -"localtime`. (Contributed by Alan Williams in :gh:`72346`.)" +":mod:`email`: Deprecated the *isdst* parameter in " +":func:`email.utils.localtime`. (Contributed by Alan Williams in " +":gh:`72346`.)" msgstr "" +":mod:`email`: Se ha descontinuado el parámetro *isdst* en " +":func:`email.utils.localtime`. (Contribuido por Alan Williams en " +":gh:`72346`.)" #: ../Doc/deprecations/pending-removal-in-3.14.rst:50 msgid ":mod:`importlib.abc` deprecated classes:" -msgstr "" +msgstr "Clases obsoletas de :mod:`importlib.abc`:" #: ../Doc/deprecations/pending-removal-in-3.14.rst:52 msgid ":class:`!importlib.abc.ResourceReader`" -msgstr "" +msgstr ":class:`!importlib.abc.ResourceReader`" #: ../Doc/deprecations/pending-removal-in-3.14.rst:53 msgid ":class:`!importlib.abc.Traversable`" -msgstr "" +msgstr ":class:`!importlib.abc.Traversable`" #: ../Doc/deprecations/pending-removal-in-3.14.rst:54 msgid ":class:`!importlib.abc.TraversableResources`" -msgstr "" +msgstr ":class:`!importlib.abc.TraversableResources`" #: ../Doc/deprecations/pending-removal-in-3.14.rst:56 msgid "Use :mod:`importlib.resources.abc` classes instead:" -msgstr "" +msgstr "Utilice clases :mod:`importlib.resources.abc` en su lugar:" #: ../Doc/deprecations/pending-removal-in-3.14.rst:58 msgid ":class:`importlib.resources.abc.Traversable`" -msgstr "" +msgstr ":class:`importlib.resources.abc.Traversable`" #: ../Doc/deprecations/pending-removal-in-3.14.rst:59 msgid ":class:`importlib.resources.abc.TraversableResources`" -msgstr "" +msgstr ":class:`importlib.resources.abc.TraversableResources`" #: ../Doc/deprecations/pending-removal-in-3.14.rst:61 msgid "(Contributed by Jason R. Coombs and Hugo van Kemenade in :gh:`93963`.)" -msgstr "" +msgstr "(Contribuido por Jason R. Coombs y Hugo van Kemenade en :gh:`93963`.)" #: ../Doc/deprecations/pending-removal-in-3.14.rst:63 msgid "" ":mod:`itertools` had undocumented, inefficient, historically buggy, and " -"inconsistent support for copy, deepcopy, and pickle operations. This will be " -"removed in 3.14 for a significant reduction in code volume and maintenance " +"inconsistent support for copy, deepcopy, and pickle operations. This will be" +" removed in 3.14 for a significant reduction in code volume and maintenance " "burden. (Contributed by Raymond Hettinger in :gh:`101588`.)" msgstr "" +":mod:`itertools` tenía un soporte indocumentado, ineficiente, históricamente" +" lleno de errores e inconsistente para operaciones de copia, copia profunda " +"y pickle. Esto se eliminará en la versión 3.14 para lograr una reducción " +"significativa en el volumen de código y la carga de mantenimiento. " +"(Contribuido por Raymond Hettinger en :gh:`101588`.)" #: ../Doc/deprecations/pending-removal-in-3.14.rst:69 msgid "" ":mod:`multiprocessing`: The default start method will change to a safer one " "on Linux, BSDs, and other non-macOS POSIX platforms where ``'fork'`` is " -"currently the default (:gh:`84559`). Adding a runtime warning about this was " -"deemed too disruptive as the majority of code is not expected to care. Use " -"the :func:`~multiprocessing.get_context` or :func:`~multiprocessing." -"set_start_method` APIs to explicitly specify when your code *requires* " -"``'fork'``. See :ref:`multiprocessing-start-methods`." -msgstr "" +"currently the default (:gh:`84559`). Adding a runtime warning about this was" +" deemed too disruptive as the majority of code is not expected to care. Use " +"the :func:`~multiprocessing.get_context` or " +":func:`~multiprocessing.set_start_method` APIs to explicitly specify when " +"your code *requires* ``'fork'``. See :ref:`multiprocessing-start-methods`." +msgstr "" +":mod:`multiprocessing`: El método de inicio predeterminado cambiará a uno " +"más seguro en Linux, BSD y otras plataformas POSIX que no sean macOS donde " +"``'fork'`` es actualmente el predeterminado (:gh:`84559`). Agregar una " +"advertencia de tiempo de ejecución sobre esto se consideró demasiado " +"disruptivo ya que no se espera que la mayoría del código tenga en cuenta " +"esto. Use las API :func:`~multiprocessing.get_context` o " +":func:`~multiprocessing.set_start_method` para especificar explícitamente " +"cuándo su código *requires* ``'fork'``. Consulte :ref:`multiprocessing-" +"start-methods`." #: ../Doc/deprecations/pending-removal-in-3.14.rst:77 msgid "" -":mod:`pathlib`: :meth:`~pathlib.PurePath.is_relative_to` and :meth:`~pathlib." -"PurePath.relative_to`: passing additional arguments is deprecated." +":mod:`pathlib`: :meth:`~pathlib.PurePath.is_relative_to` and " +":meth:`~pathlib.PurePath.relative_to`: passing additional arguments is " +"deprecated." msgstr "" +":mod:`pathlib`: :meth:`~pathlib.PurePath.is_relative_to` y " +":meth:`~pathlib.PurePath.relative_to`: pasar argumentos adicionales está " +"obsoleto." #: ../Doc/deprecations/pending-removal-in-3.14.rst:81 msgid "" -":mod:`pkgutil`: :func:`~pkgutil.find_loader` and :func:`~pkgutil.get_loader` " -"now raise :exc:`DeprecationWarning`; use :func:`importlib.util.find_spec` " +":mod:`pkgutil`: :func:`~pkgutil.find_loader` and :func:`~pkgutil.get_loader`" +" now raise :exc:`DeprecationWarning`; use :func:`importlib.util.find_spec` " "instead. (Contributed by Nikita Sobolev in :gh:`97850`.)" msgstr "" +":mod:`pkgutil`: :func:`~pkgutil.find_loader` y :func:`~pkgutil.get_loader` " +"ahora generan :exc:`DeprecationWarning`; utilice " +":func:`importlib.util.find_spec` en su lugar. (Contribuido por Nikita " +"Sobolev en :gh:`97850`.)" #: ../Doc/deprecations/pending-removal-in-3.14.rst:86 msgid ":mod:`pty`:" -msgstr "" +msgstr ":mod:`pty`:" #: ../Doc/deprecations/pending-removal-in-3.14.rst:88 msgid "``master_open()``: use :func:`pty.openpty`." -msgstr "" +msgstr "``master_open()``: utilice :func:`pty.openpty`." #: ../Doc/deprecations/pending-removal-in-3.14.rst:89 msgid "``slave_open()``: use :func:`pty.openpty`." -msgstr "" +msgstr "``slave_open()``: utilice :func:`pty.openpty`." #: ../Doc/deprecations/pending-removal-in-3.14.rst:91 msgid ":mod:`sqlite3`:" -msgstr "" +msgstr ":mod:`sqlite3`:" #: ../Doc/deprecations/pending-removal-in-3.14.rst:93 msgid ":data:`~sqlite3.version` and :data:`~sqlite3.version_info`." -msgstr "" +msgstr ":data:`~sqlite3.version` y :data:`~sqlite3.version_info`." #: ../Doc/deprecations/pending-removal-in-3.14.rst:95 msgid "" -":meth:`~sqlite3.Cursor.execute` and :meth:`~sqlite3.Cursor.executemany` if :" -"ref:`named placeholders ` are used and *parameters* is " -"a sequence instead of a :class:`dict`." +":meth:`~sqlite3.Cursor.execute` and :meth:`~sqlite3.Cursor.executemany` if " +":ref:`named placeholders ` are used and *parameters* " +"is a sequence instead of a :class:`dict`." msgstr "" +":meth:`~sqlite3.Cursor.execute` y :meth:`~sqlite3.Cursor.executemany` si se " +"utilizan :ref:`named placeholders ` y *parameters* es " +"una secuencia en lugar de :class:`dict`." #: ../Doc/deprecations/pending-removal-in-3.14.rst:99 msgid "" -"date and datetime adapter, date and timestamp converter: see the :mod:" -"`sqlite3` documentation for suggested replacement recipes." +"date and datetime adapter, date and timestamp converter: see the " +":mod:`sqlite3` documentation for suggested replacement recipes." msgstr "" +"Adaptador de fecha y fecha y hora, convertidor de fecha y marca de tiempo: " +"consulte la documentación de :mod:`sqlite3` para obtener recetas de " +"reemplazo sugeridas." #: ../Doc/deprecations/pending-removal-in-3.14.rst:102 msgid "" @@ -215,84 +276,113 @@ msgid "" "but it only got a proper :exc:`DeprecationWarning` in 3.12. May be removed " "in 3.14. (Contributed by Nikita Sobolev in :gh:`101866`.)" msgstr "" +":class:`types.CodeType`: El acceso a :attr:`~codeobject.co_lnotab` quedó " +"obsoleto en :pep:`626` desde la versión 3.10 y se planeó eliminarlo en la " +"versión 3.12, pero recién se agregó un :exc:`DeprecationWarning` adecuado en" +" la versión 3.12. Es posible que se elimine en la versión 3.14. (Contribuido" +" por Nikita Sobolev en :gh:`101866`.)" #: ../Doc/deprecations/pending-removal-in-3.14.rst:109 msgid "" -":mod:`typing`: :class:`~typing.ByteString`, deprecated since Python 3.9, now " -"causes a :exc:`DeprecationWarning` to be emitted when it is used." +":mod:`typing`: :class:`~typing.ByteString`, deprecated since Python 3.9, now" +" causes a :exc:`DeprecationWarning` to be emitted when it is used." msgstr "" +":mod:`typing`: :class:`~typing.ByteString`, obsoleto desde Python 3.9, ahora" +" hace que se emita un :exc:`DeprecationWarning` cuando se utiliza." #: ../Doc/deprecations/pending-removal-in-3.14.rst:112 msgid "" ":mod:`urllib`: :class:`!urllib.parse.Quoter` is deprecated: it was not " -"intended to be a public API. (Contributed by Gregory P. Smith in :gh:" -"`88168`.)" +"intended to be a public API. (Contributed by Gregory P. Smith in " +":gh:`88168`.)" msgstr "" +":mod:`urllib`: :class:`!urllib.parse.Quoter` está obsoleto: no estaba " +"previsto que fuera una API pública. (Contribuido por Gregory P. Smith en " +":gh:`88168`.)" #: ../Doc/deprecations/c-api-pending-removal-in-3.15.rst:2 #: ../Doc/deprecations/pending-removal-in-3.15.rst:2 msgid "Pending Removal in Python 3.15" -msgstr "" +msgstr "Eliminación pendiente en Python 3.15" #: ../Doc/deprecations/pending-removal-in-3.15.rst:4 msgid ":mod:`ctypes`:" -msgstr "" +msgstr ":mod:`ctypes`:" #: ../Doc/deprecations/pending-removal-in-3.15.rst:6 msgid "" -"The undocumented :func:`!ctypes.SetPointerType` function has been deprecated " -"since Python 3.13." +"The undocumented :func:`!ctypes.SetPointerType` function has been deprecated" +" since Python 3.13." msgstr "" +"La función :func:`!ctypes.SetPointerType` no documentada ha quedado obsoleta" +" desde Python 3.13." #: ../Doc/deprecations/pending-removal-in-3.15.rst:9 msgid ":mod:`http.server`:" -msgstr "" +msgstr ":mod:`http.server`:" #: ../Doc/deprecations/pending-removal-in-3.15.rst:11 msgid "" -"The obsolete and rarely used :class:`~http.server.CGIHTTPRequestHandler` has " -"been deprecated since Python 3.13. No direct replacement exists. *Anything* " -"is better than CGI to interface a web server with a request handler." +"The obsolete and rarely used :class:`~http.server.CGIHTTPRequestHandler` has" +" been deprecated since Python 3.13. No direct replacement exists. *Anything*" +" is better than CGI to interface a web server with a request handler." msgstr "" +"El obsoleto y poco utilizado :class:`~http.server.CGIHTTPRequestHandler` ha " +"quedado obsoleto desde Python 3.13. No existe un reemplazo directo. " +"*Anything* es mejor que CGI para interconectar un servidor web con un " +"controlador de solicitudes." #: ../Doc/deprecations/pending-removal-in-3.15.rst:17 msgid "" "The :option:`!--cgi` flag to the :program:`python -m http.server` command-" "line interface has been deprecated since Python 3.13." msgstr "" +"La bandera :option:`!--cgi` de la interfaz de línea de comandos " +":program:`python -m http.server` ha quedado obsoleta desde Python 3.13." #: ../Doc/deprecations/pending-removal-in-3.15.rst:20 msgid "" -":mod:`importlib`: ``__package__`` and ``__cached__`` will cease to be set or " -"taken into consideration by the import system (:gh:`97879`)." +":mod:`importlib`: ``__package__`` and ``__cached__`` will cease to be set or" +" taken into consideration by the import system (:gh:`97879`)." msgstr "" +":mod:`importlib`: ``__package__`` y ``__cached__`` dejarán de configurarse o" +" tomarse en consideración por el sistema de importación (:gh:`97879`)." #: ../Doc/deprecations/pending-removal-in-3.15.rst:23 msgid ":class:`locale`:" -msgstr "" +msgstr ":class:`locale`:" #: ../Doc/deprecations/pending-removal-in-3.15.rst:25 msgid "" "The :func:`~locale.getdefaultlocale` function has been deprecated since " -"Python 3.11. Its removal was originally planned for Python 3.13 (:gh:" -"`90817`), but has been postponed to Python 3.15. Use :func:`~locale." -"getlocale`, :func:`~locale.setlocale`, and :func:`~locale.getencoding` " -"instead. (Contributed by Hugo van Kemenade in :gh:`111187`.)" -msgstr "" +"Python 3.11. Its removal was originally planned for Python 3.13 " +"(:gh:`90817`), but has been postponed to Python 3.15. Use " +":func:`~locale.getlocale`, :func:`~locale.setlocale`, and " +":func:`~locale.getencoding` instead. (Contributed by Hugo van Kemenade in " +":gh:`111187`.)" +msgstr "" +"La función :func:`~locale.getdefaultlocale` ha quedado obsoleta desde Python" +" 3.11. Su eliminación se había planeado originalmente para Python 3.13 " +"(:gh:`90817`), pero se pospuso hasta Python 3.15. Utilice " +":func:`~locale.getlocale`, :func:`~locale.setlocale` y " +":func:`~locale.getencoding` en su lugar. (Contribuido por Hugo van Kemenade " +"en :gh:`111187`.)" #: ../Doc/deprecations/pending-removal-in-3.15.rst:33 msgid ":mod:`pathlib`:" -msgstr "" +msgstr ":mod:`pathlib`:" #: ../Doc/deprecations/pending-removal-in-3.15.rst:35 msgid "" -":meth:`.PurePath.is_reserved` has been deprecated since Python 3.13. Use :" -"func:`os.path.isreserved` to detect reserved paths on Windows." +":meth:`.PurePath.is_reserved` has been deprecated since Python 3.13. Use " +":func:`os.path.isreserved` to detect reserved paths on Windows." msgstr "" +":meth:`.PurePath.is_reserved` ha quedado obsoleto desde Python 3.13. Utilice" +" :func:`os.path.isreserved` para detectar rutas reservadas en Windows." #: ../Doc/deprecations/pending-removal-in-3.15.rst:39 msgid ":mod:`platform`:" -msgstr "" +msgstr ":mod:`platform`:" #: ../Doc/deprecations/pending-removal-in-3.15.rst:41 msgid "" @@ -300,57 +390,76 @@ msgid "" "function is only useful for Jython support, has a confusing API, and is " "largely untested." msgstr "" +":func:`~platform.java_ver` ha quedado obsoleto desde Python 3.13. Esta " +"función solo es útil para la compatibilidad con Jython, tiene una API " +"confusa y, en gran medida, no se ha probado." #: ../Doc/deprecations/pending-removal-in-3.15.rst:45 msgid ":mod:`threading`:" -msgstr "" +msgstr ":mod:`threading`:" #: ../Doc/deprecations/pending-removal-in-3.15.rst:47 msgid "" ":func:`~threading.RLock` will take no arguments in Python 3.15. Passing any " -"arguments has been deprecated since Python 3.14, as the Python version does " -"not permit any arguments, but the C version allows any number of positional " -"or keyword arguments, ignoring every argument." +"arguments has been deprecated since Python 3.14, as the Python version does" +" not permit any arguments, but the C version allows any number of positional" +" or keyword arguments, ignoring every argument." msgstr "" +":func:`~threading.RLock` no acepta argumentos en Python 3.15. El paso de " +"cualquier argumento ha quedado obsoleto desde Python 3.14, ya que la versión" +" de Python no permite ningún argumento, pero la versión de C permite " +"cualquier cantidad de argumentos posicionales o de palabras clave, ignorando" +" todos los argumentos." #: ../Doc/deprecations/pending-removal-in-3.15.rst:53 msgid ":mod:`typing`:" -msgstr "" +msgstr ":mod:`typing`:" #: ../Doc/deprecations/pending-removal-in-3.15.rst:55 msgid "" -"The undocumented keyword argument syntax for creating :class:`~typing." -"NamedTuple` classes (e.g. ``Point = NamedTuple(\"Point\", x=int, y=int)``) " -"has been deprecated since Python 3.13. Use the class-based syntax or the " -"functional syntax instead." +"The undocumented keyword argument syntax for creating " +":class:`~typing.NamedTuple` classes (e.g. ``Point = NamedTuple(\"Point\", " +"x=int, y=int)``) has been deprecated since Python 3.13. Use the class-based " +"syntax or the functional syntax instead." msgstr "" +"La sintaxis de argumentos de palabras clave no documentada para crear clases" +" :class:`~typing.NamedTuple` (p. ej., ``Point = NamedTuple(\"Point\", x=int," +" y=int)``) ha quedado obsoleta desde Python 3.13. En su lugar, utilice la " +"sintaxis basada en clases o la sintaxis funcional." #: ../Doc/deprecations/pending-removal-in-3.15.rst:61 msgid "" "The :func:`typing.no_type_check_decorator` decorator function has been " -"deprecated since Python 3.13. After eight years in the :mod:`typing` module, " -"it has yet to be supported by any major type checker." +"deprecated since Python 3.13. After eight years in the :mod:`typing` module," +" it has yet to be supported by any major type checker." msgstr "" +"La función decoradora :func:`typing.no_type_check_decorator` ha quedado " +"obsoleta desde Python 3.13. Después de ocho años en el módulo :mod:`typing`," +" todavía no ha sido compatible con ningún verificador de tipos importante." #: ../Doc/deprecations/pending-removal-in-3.15.rst:66 msgid ":mod:`wave`:" -msgstr "" +msgstr ":mod:`wave`:" #: ../Doc/deprecations/pending-removal-in-3.15.rst:68 msgid "" -"The :meth:`~wave.Wave_read.getmark`, :meth:`!setmark`, and :meth:`~wave." -"Wave_read.getmarkers` methods of the :class:`~wave.Wave_read` and :class:" -"`~wave.Wave_write` classes have been deprecated since Python 3.13." +"The :meth:`~wave.Wave_read.getmark`, :meth:`!setmark`, and " +":meth:`~wave.Wave_read.getmarkers` methods of the :class:`~wave.Wave_read` " +"and :class:`~wave.Wave_write` classes have been deprecated since Python " +"3.13." msgstr "" +"Los métodos :meth:`~wave.Wave_read.getmark`, :meth:`!setmark` y " +":meth:`~wave.Wave_read.getmarkers` de las clases :class:`~wave.Wave_read` y " +":class:`~wave.Wave_write` han quedado obsoletos desde Python 3.13." #: ../Doc/deprecations/pending-removal-in-3.16.rst:2 msgid "Pending Removal in Python 3.16" -msgstr "" +msgstr "Eliminación pendiente en Python 3.16" #: ../Doc/deprecations/pending-removal-in-3.16.rst:4 #: ../Doc/deprecations/pending-removal-in-future.rst:12 msgid ":mod:`builtins`:" -msgstr "" +msgstr ":mod:`builtins`:" #: ../Doc/deprecations/pending-removal-in-3.16.rst:6 msgid "" @@ -360,10 +469,16 @@ msgid "" "of a Boolean. In the rare case that you need the bitwise inversion of the " "underlying integer, convert to ``int`` explicitly (``~int(x)``)." msgstr "" +"La inversión bit a bit en tipos booleanos, ``~True`` o ``~False``, ha " +"quedado obsoleta desde Python 3.12, ya que produce resultados sorprendentes " +"y poco intuitivos (``-2`` y ``-1``). En su lugar, utilice ``not x`` para la " +"negación lógica de un valor booleano. En el caso poco frecuente de que " +"necesite la inversión bit a bit del entero subyacente, convierta a ``int`` " +"explícitamente (``~int(x)``)." #: ../Doc/deprecations/pending-removal-in-3.16.rst:13 msgid ":mod:`array`:" -msgstr "" +msgstr ":mod:`array`:" #: ../Doc/deprecations/pending-removal-in-3.16.rst:15 msgid "" @@ -371,80 +486,101 @@ msgid "" "documentation since Python 3.3 and at runtime since Python 3.13. Use the " "``'w'`` format code (:c:type:`Py_UCS4`) for Unicode characters instead." msgstr "" +"El código de formato ``'u'`` (:c:type:`wchar_t`) ha quedado obsoleto en la " +"documentación desde Python 3.3 y en el entorno de ejecución desde Python " +"3.13. Utilice el código de formato ``'w'`` (:c:type:`Py_UCS4`) para " +"caracteres Unicode." #: ../Doc/deprecations/pending-removal-in-3.16.rst:21 msgid ":mod:`shutil`:" -msgstr "" +msgstr ":mod:`shutil`:" #: ../Doc/deprecations/pending-removal-in-3.16.rst:23 msgid "" "The :class:`!ExecError` exception has been deprecated since Python 3.14. It " -"has not been used by any function in :mod:`!shutil` since Python 3.4, and is " -"now an alias of :exc:`RuntimeError`." +"has not been used by any function in :mod:`!shutil` since Python 3.4, and is" +" now an alias of :exc:`RuntimeError`." msgstr "" +"La excepción :class:`!ExecError` ha quedado obsoleta desde Python 3.14. No " +"ha sido utilizada por ninguna función en :mod:`!shutil` desde Python 3.4 y " +"ahora es un alias de :exc:`RuntimeError`." #: ../Doc/deprecations/pending-removal-in-3.16.rst:28 msgid ":mod:`symtable`:" -msgstr "" +msgstr ":mod:`symtable`:" #: ../Doc/deprecations/pending-removal-in-3.16.rst:30 msgid "" "The :meth:`Class.get_methods ` method has been " "deprecated since Python 3.14." msgstr "" +"El método :meth:`Class.get_methods ` ha quedado " +"obsoleto desde Python 3.14." #: ../Doc/deprecations/pending-removal-in-3.16.rst:33 msgid ":mod:`sys`:" -msgstr "" +msgstr ":mod:`sys`:" #: ../Doc/deprecations/pending-removal-in-3.16.rst:35 msgid "" -"The :func:`~sys._enablelegacywindowsfsencoding` function has been deprecated " -"since Python 3.13. Use the :envvar:`PYTHONLEGACYWINDOWSFSENCODING` " +"The :func:`~sys._enablelegacywindowsfsencoding` function has been deprecated" +" since Python 3.13. Use the :envvar:`PYTHONLEGACYWINDOWSFSENCODING` " "environment variable instead." msgstr "" +"La función :func:`~sys._enablelegacywindowsfsencoding` ha quedado obsoleta " +"desde Python 3.13. En su lugar, utilice la variable de entorno " +":envvar:`PYTHONLEGACYWINDOWSFSENCODING`." #: ../Doc/deprecations/pending-removal-in-3.16.rst:39 msgid ":mod:`tarfile`:" -msgstr "" +msgstr ":mod:`tarfile`:" #: ../Doc/deprecations/pending-removal-in-3.16.rst:41 msgid "" "The undocumented and unused :attr:`!TarFile.tarfile` attribute has been " "deprecated since Python 3.13." msgstr "" +"El atributo :attr:`!TarFile.tarfile`, no documentado ni utilizado, ha " +"quedado obsoleto desde Python 3.13." #: ../Doc/deprecations/c-api-pending-removal-in-future.rst:2 #: ../Doc/deprecations/pending-removal-in-future.rst:2 msgid "Pending Removal in Future Versions" -msgstr "" +msgstr "Pendiente de eliminación en futuras versiones" #: ../Doc/deprecations/pending-removal-in-future.rst:4 msgid "" "The following APIs will be removed in the future, although there is " "currently no date scheduled for their removal." msgstr "" +"Las siguientes API se eliminarán en el futuro, aunque actualmente no hay una" +" fecha programada para su eliminación." #: ../Doc/deprecations/pending-removal-in-future.rst:7 msgid "" ":mod:`argparse`: Nesting argument groups and nesting mutually exclusive " "groups are deprecated." msgstr "" +":mod:`argparse`: Los grupos de argumentos anidados y los grupos mutuamente " +"excluyentes anidados están obsoletos." #: ../Doc/deprecations/pending-removal-in-future.rst:10 msgid ":mod:`array`'s ``'u'`` format code (:gh:`57281`)" -msgstr "" +msgstr "Código de formato :mod:`array` de ``'u'`` (:gh:`57281`)" #: ../Doc/deprecations/pending-removal-in-future.rst:14 msgid "``bool(NotImplemented)``." -msgstr "" +msgstr "``bool(NotImplemented)``." #: ../Doc/deprecations/pending-removal-in-future.rst:15 msgid "" -"Generators: ``throw(type, exc, tb)`` and ``athrow(type, exc, tb)`` signature " -"is deprecated: use ``throw(exc)`` and ``athrow(exc)`` instead, the single " +"Generators: ``throw(type, exc, tb)`` and ``athrow(type, exc, tb)`` signature" +" is deprecated: use ``throw(exc)`` and ``athrow(exc)`` instead, the single " "argument signature." msgstr "" +"Generadores: las firmas ``throw(type, exc, tb)`` y ``athrow(type, exc, tb)``" +" están obsoletas: utilice ``throw(exc)`` y ``athrow(exc)`` en su lugar, la " +"firma de argumento único." #: ../Doc/deprecations/pending-removal-in-future.rst:18 msgid "" @@ -452,661 +588,849 @@ msgid "" "for example ``0in x``, ``1or x``, ``0if 1else 2``. It allows confusing and " "ambiguous expressions like ``[0x1for x in y]`` (which can be interpreted as " "``[0x1 for x in y]`` or ``[0x1f or x in y]``). A syntax warning is raised " -"if the numeric literal is immediately followed by one of keywords :keyword:" -"`and`, :keyword:`else`, :keyword:`for`, :keyword:`if`, :keyword:`in`, :" -"keyword:`is` and :keyword:`or`. In a future release it will be changed to a " -"syntax error. (:gh:`87999`)" -msgstr "" +"if the numeric literal is immediately followed by one of keywords " +":keyword:`and`, :keyword:`else`, :keyword:`for`, :keyword:`if`, " +":keyword:`in`, :keyword:`is` and :keyword:`or`. In a future release it will" +" be changed to a syntax error. (:gh:`87999`)" +msgstr "" +"Actualmente, Python acepta literales numéricos seguidos inmediatamente de " +"palabras clave, por ejemplo, ``0in x``, ``1or x``, ``0if 1else 2``. Permite " +"expresiones confusas y ambiguas como ``[0x1for x in y]`` (que se puede " +"interpretar como ``[0x1 for x in y]`` o ``[0x1f or x in y]``). Se genera una" +" advertencia de sintaxis si el literal numérico va seguido inmediatamente de" +" una de las palabras clave :keyword:`and`, :keyword:`else`, :keyword:`for`, " +":keyword:`if`, :keyword:`in`, :keyword:`is` y :keyword:`or`. En una versión " +"futura, se cambiará a un error de sintaxis. (:gh:`87999`)" #: ../Doc/deprecations/pending-removal-in-future.rst:26 msgid "" -"Support for ``__index__()`` and ``__int__()`` method returning non-int type: " -"these methods will be required to return an instance of a strict subclass " +"Support for ``__index__()`` and ``__int__()`` method returning non-int type:" +" these methods will be required to return an instance of a strict subclass " "of :class:`int`." msgstr "" +"Compatibilidad con los métodos ``__index__()`` y ``__int__()`` que devuelven" +" un tipo que no es int: estos métodos serán necesarios para devolver una " +"instancia de una subclase estricta de :class:`int`." #: ../Doc/deprecations/pending-removal-in-future.rst:29 msgid "" -"Support for ``__float__()`` method returning a strict subclass of :class:" -"`float`: these methods will be required to return an instance of :class:" -"`float`." +"Support for ``__float__()`` method returning a strict subclass of " +":class:`float`: these methods will be required to return an instance of " +":class:`float`." msgstr "" +"Compatibilidad con el método ``__float__()`` que devuelve una subclase " +"estricta de :class:`float`: estos métodos serán necesarios para devolver una" +" instancia de :class:`float`." #: ../Doc/deprecations/pending-removal-in-future.rst:32 msgid "" -"Support for ``__complex__()`` method returning a strict subclass of :class:" -"`complex`: these methods will be required to return an instance of :class:" -"`complex`." +"Support for ``__complex__()`` method returning a strict subclass of " +":class:`complex`: these methods will be required to return an instance of " +":class:`complex`." msgstr "" +"Compatibilidad con el método ``__complex__()`` que devuelve una subclase " +"estricta de :class:`complex`: estos métodos serán necesarios para devolver " +"una instancia de :class:`complex`." #: ../Doc/deprecations/pending-removal-in-future.rst:35 msgid "Delegation of ``int()`` to ``__trunc__()`` method." -msgstr "" +msgstr "Delegación del método ``int()`` al ``__trunc__()``." #: ../Doc/deprecations/pending-removal-in-future.rst:36 msgid "" -"Passing a complex number as the *real* or *imag* argument in the :func:" -"`complex` constructor is now deprecated; it should only be passed as a " -"single positional argument. (Contributed by Serhiy Storchaka in :gh:" -"`109218`.)" +"Passing a complex number as the *real* or *imag* argument in the " +":func:`complex` constructor is now deprecated; it should only be passed as a" +" single positional argument. (Contributed by Serhiy Storchaka in " +":gh:`109218`.)" msgstr "" +"Ahora está obsoleto el paso de un número complejo como argumento *real* o " +"*imag* en el constructor :func:`complex`; solo debe pasarse como un único " +"argumento posicional. (Contribuido por Serhiy Storchaka en :gh:`109218`.)" #: ../Doc/deprecations/pending-removal-in-future.rst:41 msgid "" ":mod:`calendar`: ``calendar.January`` and ``calendar.February`` constants " -"are deprecated and replaced by :data:`calendar.JANUARY` and :data:`calendar." -"FEBRUARY`. (Contributed by Prince Roshan in :gh:`103636`.)" +"are deprecated and replaced by :data:`calendar.JANUARY` and " +":data:`calendar.FEBRUARY`. (Contributed by Prince Roshan in :gh:`103636`.)" msgstr "" +":mod:`calendar`: Las constantes ``calendar.January`` y ``calendar.February``" +" han quedado obsoletas y han sido reemplazadas por :data:`calendar.JANUARY` " +"y :data:`calendar.FEBRUARY`. (Contribuido por Prince Roshan en " +":gh:`103636`.)" #: ../Doc/deprecations/pending-removal-in-future.rst:46 msgid "" ":attr:`codeobject.co_lnotab`: use the :meth:`codeobject.co_lines` method " "instead." msgstr "" +":attr:`codeobject.co_lnotab`: utilice el método :meth:`codeobject.co_lines` " +"en su lugar." #: ../Doc/deprecations/pending-removal-in-future.rst:49 msgid ":mod:`datetime`:" -msgstr "" +msgstr ":mod:`datetime`:" #: ../Doc/deprecations/pending-removal-in-future.rst:51 msgid "" -":meth:`~datetime.datetime.utcnow`: use ``datetime.datetime.now(tz=datetime." -"UTC)``." +":meth:`~datetime.datetime.utcnow`: use " +"``datetime.datetime.now(tz=datetime.UTC)``." msgstr "" +":meth:`~datetime.datetime.utcnow`: utilice " +"``datetime.datetime.now(tz=datetime.UTC)``." #: ../Doc/deprecations/pending-removal-in-future.rst:53 msgid "" -":meth:`~datetime.datetime.utcfromtimestamp`: use ``datetime.datetime." -"fromtimestamp(timestamp, tz=datetime.UTC)``." +":meth:`~datetime.datetime.utcfromtimestamp`: use " +"``datetime.datetime.fromtimestamp(timestamp, tz=datetime.UTC)``." msgstr "" +":meth:`~datetime.datetime.utcfromtimestamp`: utilice " +"``datetime.datetime.fromtimestamp(timestamp, tz=datetime.UTC)``." #: ../Doc/deprecations/pending-removal-in-future.rst:56 msgid ":mod:`gettext`: Plural value must be an integer." -msgstr "" +msgstr ":mod:`gettext`: El valor plural debe ser un número entero." #: ../Doc/deprecations/pending-removal-in-future.rst:58 msgid ":mod:`importlib`:" -msgstr "" +msgstr ":mod:`importlib`:" #: ../Doc/deprecations/pending-removal-in-future.rst:60 msgid "``load_module()`` method: use ``exec_module()`` instead." -msgstr "" +msgstr "Método ``load_module()``: utilice ``exec_module()`` en su lugar." #: ../Doc/deprecations/pending-removal-in-future.rst:61 msgid "" ":func:`~importlib.util.cache_from_source` *debug_override* parameter is " "deprecated: use the *optimization* parameter instead." msgstr "" +":func:`~importlib.util.cache_from_source` El parámetro *debug_override* está" +" obsoleto: utilice el parámetro *optimization* en su lugar." #: ../Doc/deprecations/pending-removal-in-future.rst:64 msgid ":mod:`importlib.metadata`:" -msgstr "" +msgstr ":mod:`importlib.metadata`:" #: ../Doc/deprecations/pending-removal-in-future.rst:66 msgid "``EntryPoints`` tuple interface." -msgstr "" +msgstr "Interfaz de tupla ``EntryPoints``." #: ../Doc/deprecations/pending-removal-in-future.rst:67 msgid "Implicit ``None`` on return values." -msgstr "" +msgstr "``None`` implícito en los valores de retorno." #: ../Doc/deprecations/pending-removal-in-future.rst:69 msgid "" ":mod:`logging`: the ``warn()`` method has been deprecated since Python 3.3, " "use :meth:`~logging.warning` instead." msgstr "" +":mod:`logging`: el método ``warn()`` ha quedado obsoleto desde Python 3.3, " +"utilice :meth:`~logging.warning` en su lugar." #: ../Doc/deprecations/pending-removal-in-future.rst:72 msgid "" ":mod:`mailbox`: Use of StringIO input and text mode is deprecated, use " "BytesIO and binary mode instead." msgstr "" +":mod:`mailbox`: El uso del modo de entrada y texto StringIO está obsoleto; " +"en su lugar, utilice BytesIO y el modo binario." #: ../Doc/deprecations/pending-removal-in-future.rst:75 msgid "" ":mod:`os`: Calling :func:`os.register_at_fork` in multi-threaded process." msgstr "" +":mod:`os`: Llamada a :func:`os.register_at_fork` en un proceso multiproceso." #: ../Doc/deprecations/pending-removal-in-future.rst:77 msgid "" -":class:`!pydoc.ErrorDuringImport`: A tuple value for *exc_info* parameter is " -"deprecated, use an exception instance." +":class:`!pydoc.ErrorDuringImport`: A tuple value for *exc_info* parameter is" +" deprecated, use an exception instance." msgstr "" +":class:`!pydoc.ErrorDuringImport`: Un valor de tupla para el parámetro " +"*exc_info* está obsoleto, utilice una instancia de excepción." #: ../Doc/deprecations/pending-removal-in-future.rst:80 msgid "" ":mod:`re`: More strict rules are now applied for numerical group references " "and group names in regular expressions. Only sequence of ASCII digits is " -"now accepted as a numerical reference. The group name in bytes patterns and " -"replacement strings can now only contain ASCII letters and digits and " +"now accepted as a numerical reference. The group name in bytes patterns and" +" replacement strings can now only contain ASCII letters and digits and " "underscore. (Contributed by Serhiy Storchaka in :gh:`91760`.)" msgstr "" +":mod:`re`: Ahora se aplican reglas más estrictas para las referencias " +"numéricas de grupos y los nombres de grupos en expresiones regulares. Ahora " +"solo se aceptan secuencias de dígitos ASCII como referencia numérica. El " +"nombre de grupo en patrones de bytes y cadenas de reemplazo ahora solo puede" +" contener letras y dígitos ASCII y guiones bajos. (Contribuido por Serhiy " +"Storchaka en :gh:`91760`.)" #: ../Doc/deprecations/pending-removal-in-future.rst:87 msgid "" ":mod:`!sre_compile`, :mod:`!sre_constants` and :mod:`!sre_parse` modules." msgstr "" +"Módulos :mod:`!sre_compile`, :mod:`!sre_constants` y :mod:`!sre_parse`." #: ../Doc/deprecations/pending-removal-in-future.rst:89 msgid "" -":mod:`shutil`: :func:`~shutil.rmtree`'s *onerror* parameter is deprecated in " -"Python 3.12; use the *onexc* parameter instead." +":mod:`shutil`: :func:`~shutil.rmtree`'s *onerror* parameter is deprecated in" +" Python 3.12; use the *onexc* parameter instead." msgstr "" +":mod:`shutil`: El parámetro *onerror* de :func:`~shutil.rmtree` está " +"obsoleto en Python 3.12; utilice el parámetro *onexc* en su lugar." #: ../Doc/deprecations/pending-removal-in-future.rst:92 msgid ":mod:`ssl` options and protocols:" -msgstr "" +msgstr "Opciones y protocolos :mod:`ssl`:" #: ../Doc/deprecations/pending-removal-in-future.rst:94 msgid ":class:`ssl.SSLContext` without protocol argument is deprecated." -msgstr "" +msgstr ":class:`ssl.SSLContext` sin argumento de protocolo está obsoleto." #: ../Doc/deprecations/pending-removal-in-future.rst:95 msgid "" -":class:`ssl.SSLContext`: :meth:`~ssl.SSLContext.set_npn_protocols` and :meth:" -"`!selected_npn_protocol` are deprecated: use ALPN instead." +":class:`ssl.SSLContext`: :meth:`~ssl.SSLContext.set_npn_protocols` and " +":meth:`!selected_npn_protocol` are deprecated: use ALPN instead." msgstr "" +":class:`ssl.SSLContext`: :meth:`~ssl.SSLContext.set_npn_protocols` y " +":meth:`!selected_npn_protocol` están obsoletos: utilice ALPN en su lugar." #: ../Doc/deprecations/pending-removal-in-future.rst:98 msgid "``ssl.OP_NO_SSL*`` options" -msgstr "" +msgstr "Opciones de ``ssl.OP_NO_SSL*``" #: ../Doc/deprecations/pending-removal-in-future.rst:99 msgid "``ssl.OP_NO_TLS*`` options" -msgstr "" +msgstr "Opciones de ``ssl.OP_NO_TLS*``" #: ../Doc/deprecations/pending-removal-in-future.rst:100 msgid "``ssl.PROTOCOL_SSLv3``" -msgstr "" +msgstr "``ssl.PROTOCOL_SSLv3``" #: ../Doc/deprecations/pending-removal-in-future.rst:101 msgid "``ssl.PROTOCOL_TLS``" -msgstr "" +msgstr "``ssl.PROTOCOL_TLS``" #: ../Doc/deprecations/pending-removal-in-future.rst:102 msgid "``ssl.PROTOCOL_TLSv1``" -msgstr "" +msgstr "``ssl.PROTOCOL_TLSv1``" #: ../Doc/deprecations/pending-removal-in-future.rst:103 msgid "``ssl.PROTOCOL_TLSv1_1``" -msgstr "" +msgstr "``ssl.PROTOCOL_TLSv1_1``" #: ../Doc/deprecations/pending-removal-in-future.rst:104 msgid "``ssl.PROTOCOL_TLSv1_2``" -msgstr "" +msgstr "``ssl.PROTOCOL_TLSv1_2``" #: ../Doc/deprecations/pending-removal-in-future.rst:105 msgid "``ssl.TLSVersion.SSLv3``" -msgstr "" +msgstr "``ssl.TLSVersion.SSLv3``" #: ../Doc/deprecations/pending-removal-in-future.rst:106 msgid "``ssl.TLSVersion.TLSv1``" -msgstr "" +msgstr "``ssl.TLSVersion.TLSv1``" #: ../Doc/deprecations/pending-removal-in-future.rst:107 msgid "``ssl.TLSVersion.TLSv1_1``" -msgstr "" +msgstr "``ssl.TLSVersion.TLSv1_1``" #: ../Doc/deprecations/pending-removal-in-future.rst:109 msgid "" ":func:`sysconfig.is_python_build` *check_home* parameter is deprecated and " "ignored." msgstr "" +":func:`sysconfig.is_python_build` El parámetro *check_home* está obsoleto y " +"se ignora." #: ../Doc/deprecations/pending-removal-in-future.rst:112 msgid ":mod:`threading` methods:" -msgstr "" +msgstr "Métodos :mod:`threading`:" #: ../Doc/deprecations/pending-removal-in-future.rst:114 msgid "" -":meth:`!threading.Condition.notifyAll`: use :meth:`~threading.Condition." -"notify_all`." +":meth:`!threading.Condition.notifyAll`: use " +":meth:`~threading.Condition.notify_all`." msgstr "" +":meth:`!threading.Condition.notifyAll`: utilice " +":meth:`~threading.Condition.notify_all`." #: ../Doc/deprecations/pending-removal-in-future.rst:115 msgid ":meth:`!threading.Event.isSet`: use :meth:`~threading.Event.is_set`." msgstr "" +":meth:`!threading.Event.isSet`: utilice :meth:`~threading.Event.is_set`." #: ../Doc/deprecations/pending-removal-in-future.rst:116 msgid "" -":meth:`!threading.Thread.isDaemon`, :meth:`threading.Thread.setDaemon`: use :" -"attr:`threading.Thread.daemon` attribute." +":meth:`!threading.Thread.isDaemon`, :meth:`threading.Thread.setDaemon`: use " +":attr:`threading.Thread.daemon` attribute." msgstr "" +":meth:`!threading.Thread.isDaemon`, :meth:`threading.Thread.setDaemon`: " +"utilice el atributo :attr:`threading.Thread.daemon`." #: ../Doc/deprecations/pending-removal-in-future.rst:118 msgid "" -":meth:`!threading.Thread.getName`, :meth:`threading.Thread.setName`: use :" -"attr:`threading.Thread.name` attribute." +":meth:`!threading.Thread.getName`, :meth:`threading.Thread.setName`: use " +":attr:`threading.Thread.name` attribute." msgstr "" +":meth:`!threading.Thread.getName`, :meth:`threading.Thread.setName`: utilice" +" el atributo :attr:`threading.Thread.name`." #: ../Doc/deprecations/pending-removal-in-future.rst:120 -msgid ":meth:`!threading.currentThread`: use :meth:`threading.current_thread`." +msgid "" +":meth:`!threading.currentThread`: use :meth:`threading.current_thread`." msgstr "" +":meth:`!threading.currentThread`: utilice :meth:`threading.current_thread`." #: ../Doc/deprecations/pending-removal-in-future.rst:121 msgid ":meth:`!threading.activeCount`: use :meth:`threading.active_count`." msgstr "" +":meth:`!threading.activeCount`: utilice :meth:`threading.active_count`." #: ../Doc/deprecations/pending-removal-in-future.rst:123 msgid ":class:`typing.Text` (:gh:`92332`)." -msgstr "" +msgstr ":class:`typing.Text` (:gh:`92332`)." #: ../Doc/deprecations/pending-removal-in-future.rst:125 msgid "" ":class:`unittest.IsolatedAsyncioTestCase`: it is deprecated to return a " "value that is not ``None`` from a test case." msgstr "" +":class:`unittest.IsolatedAsyncioTestCase`: está obsoleto devolver un valor " +"que no sea ``None`` de un caso de prueba." #: ../Doc/deprecations/pending-removal-in-future.rst:128 msgid "" ":mod:`urllib.parse` deprecated functions: :func:`~urllib.parse.urlparse` " "instead" msgstr "" +"Funciones obsoletas de :mod:`urllib.parse`: :func:`~urllib.parse.urlparse` " +"en su lugar" #: ../Doc/deprecations/pending-removal-in-future.rst:130 msgid "``splitattr()``" -msgstr "" +msgstr "``splitattr()``" #: ../Doc/deprecations/pending-removal-in-future.rst:131 msgid "``splithost()``" -msgstr "" +msgstr "``splithost()``" #: ../Doc/deprecations/pending-removal-in-future.rst:132 msgid "``splitnport()``" -msgstr "" +msgstr "``splitnport()``" #: ../Doc/deprecations/pending-removal-in-future.rst:133 msgid "``splitpasswd()``" -msgstr "" +msgstr "``splitpasswd()``" #: ../Doc/deprecations/pending-removal-in-future.rst:134 msgid "``splitport()``" -msgstr "" +msgstr "``splitport()``" #: ../Doc/deprecations/pending-removal-in-future.rst:135 msgid "``splitquery()``" -msgstr "" +msgstr "``splitquery()``" #: ../Doc/deprecations/pending-removal-in-future.rst:136 msgid "``splittag()``" -msgstr "" +msgstr "``splittag()``" #: ../Doc/deprecations/pending-removal-in-future.rst:137 msgid "``splittype()``" -msgstr "" +msgstr "``splittype()``" #: ../Doc/deprecations/pending-removal-in-future.rst:138 msgid "``splituser()``" -msgstr "" +msgstr "``splituser()``" #: ../Doc/deprecations/pending-removal-in-future.rst:139 msgid "``splitvalue()``" -msgstr "" +msgstr "``splitvalue()``" #: ../Doc/deprecations/pending-removal-in-future.rst:140 msgid "``to_bytes()``" -msgstr "" +msgstr "``to_bytes()``" #: ../Doc/deprecations/pending-removal-in-future.rst:142 msgid "" -":mod:`urllib.request`: :class:`~urllib.request.URLopener` and :class:" -"`~urllib.request.FancyURLopener` style of invoking requests is deprecated. " -"Use newer :func:`~urllib.request.urlopen` functions and methods." +":mod:`urllib.request`: :class:`~urllib.request.URLopener` and " +":class:`~urllib.request.FancyURLopener` style of invoking requests is " +"deprecated. Use newer :func:`~urllib.request.urlopen` functions and methods." msgstr "" +":mod:`urllib.request`: el estilo :class:`~urllib.request.URLopener` y " +":class:`~urllib.request.FancyURLopener` de invocar solicitudes está " +"obsoleto. Utilice las funciones y métodos :func:`~urllib.request.urlopen` " +"más nuevos." #: ../Doc/deprecations/pending-removal-in-future.rst:146 msgid "" ":mod:`wsgiref`: ``SimpleHandler.stdout.write()`` should not do partial " "writes." msgstr "" +":mod:`wsgiref`: ``SimpleHandler.stdout.write()`` no debería realizar " +"escrituras parciales." #: ../Doc/deprecations/pending-removal-in-future.rst:149 msgid "" -":mod:`xml.etree.ElementTree`: Testing the truth value of an :class:`~xml." -"etree.ElementTree.Element` is deprecated. In a future release it will always " -"return ``True``. Prefer explicit ``len(elem)`` or ``elem is not None`` tests " -"instead." +":mod:`xml.etree.ElementTree`: Testing the truth value of an " +":class:`~xml.etree.ElementTree.Element` is deprecated. In a future release " +"it will always return ``True``. Prefer explicit ``len(elem)`` or ``elem is " +"not None`` tests instead." msgstr "" +":mod:`xml.etree.ElementTree`: La prueba del valor de verdad de un " +":class:`~xml.etree.ElementTree.Element` está obsoleta. En una versión " +"futura, siempre devolverá ``True``. En su lugar, es preferible realizar " +"pruebas explícitas ``len(elem)`` o ``elem is not None``." #: ../Doc/deprecations/pending-removal-in-future.rst:154 msgid "" -":meth:`zipimport.zipimporter.load_module` is deprecated: use :meth:" -"`~zipimport.zipimporter.exec_module` instead." +":meth:`zipimport.zipimporter.load_module` is deprecated: use " +":meth:`~zipimport.zipimporter.exec_module` instead." msgstr "" +":meth:`zipimport.zipimporter.load_module` está obsoleto: utilice " +":meth:`~zipimport.zipimporter.exec_module` en su lugar." #: ../Doc/deprecations/index.rst:13 msgid "C API Deprecations" -msgstr "" +msgstr "Desuso de la API C" #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:4 msgid "" -"The ``ma_version_tag`` field in :c:type:`PyDictObject` for extension modules " -"(:pep:`699`; :gh:`101193`)." +"The ``ma_version_tag`` field in :c:type:`PyDictObject` for extension modules" +" (:pep:`699`; :gh:`101193`)." msgstr "" +"El campo ``ma_version_tag`` en :c:type:`PyDictObject` para módulos de " +"extensión (:pep:`699`; :gh:`101193`)." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:7 msgid "" "Creating :c:data:`immutable types ` with mutable " "bases (:gh:`95388`)." msgstr "" +"Creando :c:data:`immutable types ` con bases " +"mutables (:gh:`95388`)." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:10 msgid "" "Functions to configure Python's initialization, deprecated in Python 3.11:" msgstr "" +"Funciones para configurar la inicialización de Python, obsoletas en Python " +"3.11:" #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:12 msgid ":c:func:`!PySys_SetArgvEx()`: Set :c:member:`PyConfig.argv` instead." msgstr "" +":c:func:`!PySys_SetArgvEx()`: Establezca :c:member:`PyConfig.argv` en su " +"lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:14 msgid ":c:func:`!PySys_SetArgv()`: Set :c:member:`PyConfig.argv` instead." msgstr "" +":c:func:`!PySys_SetArgv()`: Establezca :c:member:`PyConfig.argv` en su " +"lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:16 msgid "" ":c:func:`!Py_SetProgramName()`: Set :c:member:`PyConfig.program_name` " "instead." msgstr "" +":c:func:`!Py_SetProgramName()`: Establezca :c:member:`PyConfig.program_name`" +" en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:18 msgid ":c:func:`!Py_SetPythonHome()`: Set :c:member:`PyConfig.home` instead." msgstr "" +":c:func:`!Py_SetPythonHome()`: Establezca :c:member:`PyConfig.home` en su " +"lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:21 #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:71 msgid "" -"The :c:func:`Py_InitializeFromConfig` API should be used with :c:type:" -"`PyConfig` instead." +"The :c:func:`Py_InitializeFromConfig` API should be used with " +":c:type:`PyConfig` instead." msgstr "" +"La API :c:func:`Py_InitializeFromConfig` debe utilizarse con " +":c:type:`PyConfig`." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:24 msgid "Global configuration variables:" -msgstr "" +msgstr "Variables de configuración global:" #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:26 msgid ":c:var:`Py_DebugFlag`: Use :c:member:`PyConfig.parser_debug` instead." msgstr "" +":c:var:`Py_DebugFlag`: Utilice :c:member:`PyConfig.parser_debug` en su " +"lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:28 msgid ":c:var:`Py_VerboseFlag`: Use :c:member:`PyConfig.verbose` instead." msgstr "" +":c:var:`Py_VerboseFlag`: Utilice :c:member:`PyConfig.verbose` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:30 msgid ":c:var:`Py_QuietFlag`: Use :c:member:`PyConfig.quiet` instead." msgstr "" +":c:var:`Py_QuietFlag`: Utilice :c:member:`PyConfig.quiet` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:32 msgid "" ":c:var:`Py_InteractiveFlag`: Use :c:member:`PyConfig.interactive` instead." msgstr "" +":c:var:`Py_InteractiveFlag`: Utilice :c:member:`PyConfig.interactive` en su " +"lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:34 msgid ":c:var:`Py_InspectFlag`: Use :c:member:`PyConfig.inspect` instead." msgstr "" +":c:var:`Py_InspectFlag`: Utilice :c:member:`PyConfig.inspect` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:36 msgid "" ":c:var:`Py_OptimizeFlag`: Use :c:member:`PyConfig.optimization_level` " "instead." msgstr "" +":c:var:`Py_OptimizeFlag`: Utilice :c:member:`PyConfig.optimization_level` en" +" su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:38 msgid ":c:var:`Py_NoSiteFlag`: Use :c:member:`PyConfig.site_import` instead." msgstr "" +":c:var:`Py_NoSiteFlag`: Utilice :c:member:`PyConfig.site_import` en su " +"lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:40 msgid "" -":c:var:`Py_BytesWarningFlag`: Use :c:member:`PyConfig.bytes_warning` instead." +":c:var:`Py_BytesWarningFlag`: Use :c:member:`PyConfig.bytes_warning` " +"instead." msgstr "" +":c:var:`Py_BytesWarningFlag`: Utilice :c:member:`PyConfig.bytes_warning` en " +"su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:42 msgid "" -":c:var:`Py_FrozenFlag`: Use :c:member:`PyConfig.pathconfig_warnings` instead." +":c:var:`Py_FrozenFlag`: Use :c:member:`PyConfig.pathconfig_warnings` " +"instead." msgstr "" +":c:var:`Py_FrozenFlag`: Utilice :c:member:`PyConfig.pathconfig_warnings` en " +"su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:44 msgid "" ":c:var:`Py_IgnoreEnvironmentFlag`: Use :c:member:`PyConfig.use_environment` " "instead." msgstr "" +":c:var:`Py_IgnoreEnvironmentFlag`: Utilice " +":c:member:`PyConfig.use_environment` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:46 msgid "" ":c:var:`Py_DontWriteBytecodeFlag`: Use :c:member:`PyConfig.write_bytecode` " "instead." msgstr "" +":c:var:`Py_DontWriteBytecodeFlag`: Utilice " +":c:member:`PyConfig.write_bytecode` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:48 msgid "" -":c:var:`Py_NoUserSiteDirectory`: Use :c:member:`PyConfig." -"user_site_directory` instead." +":c:var:`Py_NoUserSiteDirectory`: Use " +":c:member:`PyConfig.user_site_directory` instead." msgstr "" +":c:var:`Py_NoUserSiteDirectory`: Utilice " +":c:member:`PyConfig.user_site_directory` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:50 msgid "" ":c:var:`Py_UnbufferedStdioFlag`: Use :c:member:`PyConfig.buffered_stdio` " "instead." msgstr "" +":c:var:`Py_UnbufferedStdioFlag`: Utilice :c:member:`PyConfig.buffered_stdio`" +" en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:52 msgid "" ":c:var:`Py_HashRandomizationFlag`: Use :c:member:`PyConfig.use_hash_seed` " "and :c:member:`PyConfig.hash_seed` instead." msgstr "" +":c:var:`Py_HashRandomizationFlag`: Utilice " +":c:member:`PyConfig.use_hash_seed` y :c:member:`PyConfig.hash_seed` en su " +"lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:55 msgid ":c:var:`Py_IsolatedFlag`: Use :c:member:`PyConfig.isolated` instead." msgstr "" +":c:var:`Py_IsolatedFlag`: Utilice :c:member:`PyConfig.isolated` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:57 msgid "" -":c:var:`Py_LegacyWindowsFSEncodingFlag`: Use :c:member:`PyPreConfig." -"legacy_windows_fs_encoding` instead." +":c:var:`Py_LegacyWindowsFSEncodingFlag`: Use " +":c:member:`PyPreConfig.legacy_windows_fs_encoding` instead." msgstr "" +":c:var:`Py_LegacyWindowsFSEncodingFlag`: Utilice " +":c:member:`PyPreConfig.legacy_windows_fs_encoding` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:59 msgid "" -":c:var:`Py_LegacyWindowsStdioFlag`: Use :c:member:`PyConfig." -"legacy_windows_stdio` instead." +":c:var:`Py_LegacyWindowsStdioFlag`: Use " +":c:member:`PyConfig.legacy_windows_stdio` instead." msgstr "" +":c:var:`Py_LegacyWindowsStdioFlag`: Utilice " +":c:member:`PyConfig.legacy_windows_stdio` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:61 msgid "" -":c:var:`!Py_FileSystemDefaultEncoding`: Use :c:member:`PyConfig." -"filesystem_encoding` instead." +":c:var:`!Py_FileSystemDefaultEncoding`: Use " +":c:member:`PyConfig.filesystem_encoding` instead." msgstr "" +":c:var:`!Py_FileSystemDefaultEncoding`: Utilice " +":c:member:`PyConfig.filesystem_encoding` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:63 msgid "" -":c:var:`!Py_HasFileSystemDefaultEncoding`: Use :c:member:`PyConfig." -"filesystem_encoding` instead." +":c:var:`!Py_HasFileSystemDefaultEncoding`: Use " +":c:member:`PyConfig.filesystem_encoding` instead." msgstr "" +":c:var:`!Py_HasFileSystemDefaultEncoding`: Utilice " +":c:member:`PyConfig.filesystem_encoding` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:65 msgid "" -":c:var:`!Py_FileSystemDefaultEncodeErrors`: Use :c:member:`PyConfig." -"filesystem_errors` instead." +":c:var:`!Py_FileSystemDefaultEncodeErrors`: Use " +":c:member:`PyConfig.filesystem_errors` instead." msgstr "" +":c:var:`!Py_FileSystemDefaultEncodeErrors`: Utilice " +":c:member:`PyConfig.filesystem_errors` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:67 msgid "" -":c:var:`!Py_UTF8Mode`: Use :c:member:`PyPreConfig.utf8_mode` instead. (see :" -"c:func:`Py_PreInitialize`)" +":c:var:`!Py_UTF8Mode`: Use :c:member:`PyPreConfig.utf8_mode` instead. (see " +":c:func:`Py_PreInitialize`)" msgstr "" +":c:var:`!Py_UTF8Mode`: Utilice :c:member:`PyPreConfig.utf8_mode` en su " +"lugar. (ver :c:func:`Py_PreInitialize`)" #: ../Doc/deprecations/c-api-pending-removal-in-3.15.rst:4 msgid "The bundled copy of ``libmpdecimal``." -msgstr "" +msgstr "La copia incluida de ``libmpdecimal``." #: ../Doc/deprecations/c-api-pending-removal-in-3.15.rst:5 msgid "" -"The :c:func:`PyImport_ImportModuleNoBlock`: Use :c:func:" -"`PyImport_ImportModule` instead." +"The :c:func:`PyImport_ImportModuleNoBlock`: Use " +":c:func:`PyImport_ImportModule` instead." msgstr "" +":c:func:`PyImport_ImportModuleNoBlock`: utilice " +":c:func:`PyImport_ImportModule` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.15.rst:7 msgid "" -":c:func:`PyWeakref_GetObject` and :c:func:`PyWeakref_GET_OBJECT`: Use :c:" -"func:`PyWeakref_GetRef` instead." +":c:func:`PyWeakref_GetObject` and :c:func:`PyWeakref_GET_OBJECT`: Use " +":c:func:`PyWeakref_GetRef` instead." msgstr "" +":c:func:`PyWeakref_GetObject` y :c:func:`PyWeakref_GET_OBJECT`: utilice " +":c:func:`PyWeakref_GetRef` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.15.rst:9 msgid "" -":c:type:`Py_UNICODE` type and the :c:macro:`!Py_UNICODE_WIDE` macro: Use :c:" -"type:`wchar_t` instead." +":c:type:`Py_UNICODE` type and the :c:macro:`!Py_UNICODE_WIDE` macro: Use " +":c:type:`wchar_t` instead." msgstr "" +"Tipo :c:type:`Py_UNICODE` y macro :c:macro:`!Py_UNICODE_WIDE`: utilice " +":c:type:`wchar_t` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.15.rst:11 msgid "Python initialization functions:" -msgstr "" +msgstr "Funciones de inicialización de Python:" #: ../Doc/deprecations/c-api-pending-removal-in-3.15.rst:13 msgid "" -":c:func:`PySys_ResetWarnOptions`: Clear :data:`sys.warnoptions` and :data:`!" -"warnings.filters` instead." +":c:func:`PySys_ResetWarnOptions`: Clear :data:`sys.warnoptions` and " +":data:`!warnings.filters` instead." msgstr "" +":c:func:`PySys_ResetWarnOptions`: borre :data:`sys.warnoptions` y " +":data:`!warnings.filters` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.15.rst:15 msgid ":c:func:`Py_GetExecPrefix`: Get :data:`sys.exec_prefix` instead." msgstr "" +":c:func:`Py_GetExecPrefix`: Obtenga :data:`sys.exec_prefix` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.15.rst:17 msgid ":c:func:`Py_GetPath`: Get :data:`sys.path` instead." -msgstr "" +msgstr ":c:func:`Py_GetPath`: Obtenga :data:`sys.path` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.15.rst:19 msgid ":c:func:`Py_GetPrefix`: Get :data:`sys.prefix` instead." -msgstr "" +msgstr ":c:func:`Py_GetPrefix`: Obtenga :data:`sys.prefix` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.15.rst:21 msgid ":c:func:`Py_GetProgramFullPath`: Get :data:`sys.executable` instead." msgstr "" +":c:func:`Py_GetProgramFullPath`: Obtenga :data:`sys.executable` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.15.rst:23 msgid ":c:func:`Py_GetProgramName`: Get :data:`sys.executable` instead." msgstr "" +":c:func:`Py_GetProgramName`: Obtenga :data:`sys.executable` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.15.rst:25 msgid "" -":c:func:`Py_GetPythonHome`: Get :c:member:`PyConfig.home` or the :envvar:" -"`PYTHONHOME` environment variable instead." +":c:func:`Py_GetPythonHome`: Get :c:member:`PyConfig.home` or the " +":envvar:`PYTHONHOME` environment variable instead." msgstr "" +":c:func:`Py_GetPythonHome`: Obtenga la variable de entorno " +":c:member:`PyConfig.home` o :envvar:`PYTHONHOME` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-future.rst:4 msgid "" "The following APIs are deprecated and will be removed, although there is " "currently no date scheduled for their removal." msgstr "" +"Las siguientes API están obsoletas y se eliminarán, aunque actualmente no " +"hay una fecha programada para su eliminación." #: ../Doc/deprecations/c-api-pending-removal-in-future.rst:7 msgid ":c:macro:`Py_TPFLAGS_HAVE_FINALIZE`: Unneeded since Python 3.8." -msgstr "" +msgstr ":c:macro:`Py_TPFLAGS_HAVE_FINALIZE`: Innecesario desde Python 3.8." #: ../Doc/deprecations/c-api-pending-removal-in-future.rst:9 msgid ":c:func:`PyErr_Fetch`: Use :c:func:`PyErr_GetRaisedException` instead." msgstr "" +":c:func:`PyErr_Fetch`: Utilice :c:func:`PyErr_GetRaisedException` en su " +"lugar." #: ../Doc/deprecations/c-api-pending-removal-in-future.rst:11 msgid "" ":c:func:`PyErr_NormalizeException`: Use :c:func:`PyErr_GetRaisedException` " "instead." msgstr "" +":c:func:`PyErr_NormalizeException`: Utilice " +":c:func:`PyErr_GetRaisedException` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-future.rst:13 msgid "" ":c:func:`PyErr_Restore`: Use :c:func:`PyErr_SetRaisedException` instead." msgstr "" +":c:func:`PyErr_Restore`: Utilice :c:func:`PyErr_SetRaisedException` en su " +"lugar." #: ../Doc/deprecations/c-api-pending-removal-in-future.rst:15 msgid "" ":c:func:`PyModule_GetFilename`: Use :c:func:`PyModule_GetFilenameObject` " "instead." msgstr "" +":c:func:`PyModule_GetFilename`: Utilice :c:func:`PyModule_GetFilenameObject`" +" en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-future.rst:17 msgid ":c:func:`PyOS_AfterFork`: Use :c:func:`PyOS_AfterFork_Child` instead." msgstr "" +":c:func:`PyOS_AfterFork`: Utilice :c:func:`PyOS_AfterFork_Child` en su " +"lugar." #: ../Doc/deprecations/c-api-pending-removal-in-future.rst:19 msgid "" -":c:func:`PySlice_GetIndicesEx`: Use :c:func:`PySlice_Unpack` and :c:func:" -"`PySlice_AdjustIndices` instead." +":c:func:`PySlice_GetIndicesEx`: Use :c:func:`PySlice_Unpack` and " +":c:func:`PySlice_AdjustIndices` instead." msgstr "" +":c:func:`PySlice_GetIndicesEx`: Utilice :c:func:`PySlice_Unpack` y " +":c:func:`PySlice_AdjustIndices` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-future.rst:21 msgid "" ":c:func:`!PyUnicode_AsDecodedObject`: Use :c:func:`PyCodec_Decode` instead." msgstr "" +":c:func:`!PyUnicode_AsDecodedObject`: Utilice :c:func:`PyCodec_Decode` en su" +" lugar." #: ../Doc/deprecations/c-api-pending-removal-in-future.rst:23 msgid "" ":c:func:`!PyUnicode_AsDecodedUnicode`: Use :c:func:`PyCodec_Decode` instead." msgstr "" +":c:func:`!PyUnicode_AsDecodedUnicode`: Utilice :c:func:`PyCodec_Decode` en " +"su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-future.rst:25 msgid "" ":c:func:`!PyUnicode_AsEncodedObject`: Use :c:func:`PyCodec_Encode` instead." msgstr "" +":c:func:`!PyUnicode_AsEncodedObject`: Utilice :c:func:`PyCodec_Encode` en su" +" lugar." #: ../Doc/deprecations/c-api-pending-removal-in-future.rst:27 msgid "" ":c:func:`!PyUnicode_AsEncodedUnicode`: Use :c:func:`PyCodec_Encode` instead." msgstr "" +":c:func:`!PyUnicode_AsEncodedUnicode`: Utilice :c:func:`PyCodec_Encode` en " +"su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-future.rst:29 msgid ":c:func:`PyUnicode_READY`: Unneeded since Python 3.12" -msgstr "" +msgstr ":c:func:`PyUnicode_READY`: Innecesario desde Python 3.12" #: ../Doc/deprecations/c-api-pending-removal-in-future.rst:31 -msgid ":c:func:`!PyErr_Display`: Use :c:func:`PyErr_DisplayException` instead." +msgid "" +":c:func:`!PyErr_Display`: Use :c:func:`PyErr_DisplayException` instead." msgstr "" +":c:func:`!PyErr_Display`: Utilice :c:func:`PyErr_DisplayException` en su " +"lugar." #: ../Doc/deprecations/c-api-pending-removal-in-future.rst:33 msgid "" ":c:func:`!_PyErr_ChainExceptions`: Use :c:func:`!_PyErr_ChainExceptions1` " "instead." msgstr "" +":c:func:`!_PyErr_ChainExceptions`: Utilice " +":c:func:`!_PyErr_ChainExceptions1` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-future.rst:35 msgid "" ":c:member:`!PyBytesObject.ob_shash` member: call :c:func:`PyObject_Hash` " "instead." msgstr "" +"Miembro de :c:member:`!PyBytesObject.ob_shash`: llame a " +":c:func:`PyObject_Hash` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-future.rst:37 msgid ":c:member:`!PyDictObject.ma_version_tag` member." -msgstr "" +msgstr "Miembro de :c:member:`!PyDictObject.ma_version_tag`." #: ../Doc/deprecations/c-api-pending-removal-in-future.rst:38 msgid "Thread Local Storage (TLS) API:" -msgstr "" +msgstr "API de almacenamiento local de subprocesos (TLS):" #: ../Doc/deprecations/c-api-pending-removal-in-future.rst:40 msgid "" ":c:func:`PyThread_create_key`: Use :c:func:`PyThread_tss_alloc` instead." msgstr "" +":c:func:`PyThread_create_key`: Utilice :c:func:`PyThread_tss_alloc` en su " +"lugar." #: ../Doc/deprecations/c-api-pending-removal-in-future.rst:42 -msgid ":c:func:`PyThread_delete_key`: Use :c:func:`PyThread_tss_free` instead." +msgid "" +":c:func:`PyThread_delete_key`: Use :c:func:`PyThread_tss_free` instead." msgstr "" +":c:func:`PyThread_delete_key`: Utilice :c:func:`PyThread_tss_free` en su " +"lugar." #: ../Doc/deprecations/c-api-pending-removal-in-future.rst:44 msgid "" ":c:func:`PyThread_set_key_value`: Use :c:func:`PyThread_tss_set` instead." msgstr "" +":c:func:`PyThread_set_key_value`: Utilice :c:func:`PyThread_tss_set` en su " +"lugar." #: ../Doc/deprecations/c-api-pending-removal-in-future.rst:46 msgid "" ":c:func:`PyThread_get_key_value`: Use :c:func:`PyThread_tss_get` instead." msgstr "" +":c:func:`PyThread_get_key_value`: Utilice :c:func:`PyThread_tss_get` en su " +"lugar." #: ../Doc/deprecations/c-api-pending-removal-in-future.rst:48 msgid "" ":c:func:`PyThread_delete_key_value`: Use :c:func:`PyThread_tss_delete` " "instead." msgstr "" +":c:func:`PyThread_delete_key_value`: Utilice :c:func:`PyThread_tss_delete` " +"en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-future.rst:50 msgid ":c:func:`PyThread_ReInitTLS`: Unneeded since Python 3.7." -msgstr "" +msgstr ":c:func:`PyThread_ReInitTLS`: Innecesario desde Python 3.7." diff --git a/dictionaries/deprecations_index.txt b/dictionaries/deprecations_index.txt new file mode 100644 index 0000000000..dfdbcd78ff --- /dev/null +++ b/dictionaries/deprecations_index.txt @@ -0,0 +1,2 @@ +Prince +interconectar From 1c21578964db2c6299bf3ff3c474b8edfbded8d3 Mon Sep 17 00:00:00 2001 From: kbiggers Date: Thu, 26 Dec 2024 21:04:00 -0500 Subject: [PATCH 06/78] Traducido archivo reference/lexical_analysis.po (#3350) closes #3284 --------- Co-authored-by: Kevin Biggers Co-authored-by: rtobar --- dictionaries/reference_lexical_analysis.txt | 22 +- reference/lexical_analysis.po | 1469 ++++++++++--------- 2 files changed, 765 insertions(+), 726 deletions(-) diff --git a/dictionaries/reference_lexical_analysis.txt b/dictionaries/reference_lexical_analysis.txt index 0a1c79424f..63f27b355e 100644 --- a/dictionaries/reference_lexical_analysis.txt +++ b/dictionaries/reference_lexical_analysis.txt @@ -1,2 +1,22 @@ Moolenaar -tokeniza \ No newline at end of file +tokeniza +Januari +Februari +Maart +April +Mei +Juni +Juli +Augustus +September +Oktober +November +December +month +year +day +mill +his +said +hour +second \ No newline at end of file diff --git a/reference/lexical_analysis.po b/reference/lexical_analysis.po index 2e58bcb521..b81bb63859 100644 --- a/reference/lexical_analysis.po +++ b/reference/lexical_analysis.po @@ -11,15 +11,16 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: 2021-10-30 14:13-0300\n" +"PO-Revision-Date: 2024-12-26 14:41-0500\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" +"Language: es\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.16.0\n" +"X-Generator: Poedit 3.5\n" #: ../Doc/reference/lexical_analysis.rst:6 msgid "Lexical analysis" @@ -28,25 +29,25 @@ msgstr "Análisis léxico" #: ../Doc/reference/lexical_analysis.rst:10 msgid "" "A Python program is read by a *parser*. Input to the parser is a stream of " -"*tokens*, generated by the *lexical analyzer*. This chapter describes how " -"the lexical analyzer breaks a file into tokens." +"*tokens*, generated by the *lexical analyzer*. This chapter describes how the " +"lexical analyzer breaks a file into tokens." msgstr "" "Un programa de Python es leído por un *parser* (analizador sintáctico). Los " -"datos introducidos en el analizador son un flujo de *tokens*, generados por " -"el *analizador léxico*. Este capítulo describe cómo el analizador léxico " -"desglosa un archivo en tokens." +"datos introducidos en el analizador son un flujo de *tokens*, generados por el " +"*analizador léxico*. Este capítulo describe cómo el analizador léxico desglosa " +"un archivo en tokens." #: ../Doc/reference/lexical_analysis.rst:14 msgid "" -"Python reads program text as Unicode code points; the encoding of a source " -"file can be given by an encoding declaration and defaults to UTF-8, see :pep:" -"`3120` for details. If the source file cannot be decoded, a :exc:" -"`SyntaxError` is raised." +"Python reads program text as Unicode code points; the encoding of a source file " +"can be given by an encoding declaration and defaults to UTF-8, see :pep:`3120` " +"for details. If the source file cannot be decoded, a :exc:`SyntaxError` is " +"raised." msgstr "" -"Python lee el texto del programa como puntos de código Unicode; la " -"codificación de un archivo fuente puede ser dada por una declaración de " -"codificación y por defecto es UTF-8, ver :pep:`3120` para más detalles. Si " -"el archivo fuente no puede ser decodificado, se genera un :exc:`SyntaxError`." +"Python lee el texto del programa como puntos de código Unicode; la codificación " +"de un archivo fuente puede ser dada por una declaración de codificación y por " +"defecto es UTF-8, ver :pep:`3120` para más detalles. Si el archivo fuente no " +"puede ser decodificado, se genera un :exc:`SyntaxError`." #: ../Doc/reference/lexical_analysis.rst:23 msgid "Line structure" @@ -71,9 +72,9 @@ msgstr "" "El final de una línea lógica está representado por el token NEWLINE (nueva " "línea). Las declaraciones no pueden cruzar los límites de la línea lógica, " "excepto cuando la sintaxis permite la utilización de NEWLINE (por ejemplo, " -"entre declaraciones en declaraciones compuestas). Una línea lógica se " -"construye a partir de una o más *líneas físicas* siguiendo las reglas " -"explícitas o implícitas de *unión de líneas*." +"entre declaraciones en declaraciones compuestas). Una línea lógica se construye " +"a partir de una o más *líneas físicas* siguiendo las reglas explícitas o " +"implícitas de *unión de líneas*." #: ../Doc/reference/lexical_analysis.rst:47 msgid "Physical lines" @@ -84,32 +85,31 @@ msgid "" "A physical line is a sequence of characters terminated by an end-of-line " "sequence. In source files and strings, any of the standard platform line " "termination sequences can be used - the Unix form using ASCII LF (linefeed), " -"the Windows form using the ASCII sequence CR LF (return followed by " -"linefeed), or the old Macintosh form using the ASCII CR (return) character. " -"All of these forms can be used equally, regardless of platform. The end of " -"input also serves as an implicit terminator for the final physical line." -msgstr "" -"Una línea física es una secuencia de caracteres terminada por una secuencia " -"de final de línea. En los archivos fuente y las cadenas, se puede utilizar " -"cualquiera de las secuencias de terminación de línea de la plataforma " -"estándar: el formulario Unix que utiliza ASCII LF (salto de línea, por el " -"inglés *linefeed*), el formulario Windows que utiliza la secuencia ASCII CR " -"LF (retorno seguido de salto de línea), o el antiguo formulario Macintosh " -"que utiliza el carácter ASCII CR (retorno). Todas estas formas pueden ser " +"the Windows form using the ASCII sequence CR LF (return followed by linefeed), " +"or the old Macintosh form using the ASCII CR (return) character. All of these " +"forms can be used equally, regardless of platform. The end of input also serves " +"as an implicit terminator for the final physical line." +msgstr "" +"Una línea física es una secuencia de caracteres terminada por una secuencia de " +"final de línea. En los archivos fuente y las cadenas, se puede utilizar " +"cualquiera de las secuencias de terminación de línea de la plataforma estándar: " +"el formulario Unix que utiliza ASCII LF (salto de línea, por el inglés " +"*linefeed*), el formulario Windows que utiliza la secuencia ASCII CR LF " +"(retorno seguido de salto de línea), o el antiguo formulario Macintosh que " +"utiliza el carácter ASCII CR (retorno). Todas estas formas pueden ser " "utilizadas por igual, independientemente de la plataforma. El final de la " -"introducción de datos también sirve como un terminador implícito para la " -"línea física final." +"introducción de datos también sirve como un terminador implícito para la línea " +"física final." #: ../Doc/reference/lexical_analysis.rst:57 msgid "" "When embedding Python, source code strings should be passed to Python APIs " -"using the standard C conventions for newline characters (the ``\\n`` " -"character, representing ASCII LF, is the line terminator)." +"using the standard C conventions for newline characters (the ``\\n`` character, " +"representing ASCII LF, is the line terminator)." msgstr "" -"Al incrustar Python, las cadenas de código fuente deben ser pasadas a las " -"APIs de Python usando las convenciones estándar de C para los caracteres de " -"nueva línea (el carácter ``\\n``, que representa ASCII LF, es el terminador " -"de línea)." +"Al incrustar Python, las cadenas de código fuente deben ser pasadas a las APIs " +"de Python usando las convenciones estándar de C para los caracteres de nueva " +"línea (el carácter ``\\n``, que representa ASCII LF, es el terminador de línea)." #: ../Doc/reference/lexical_analysis.rst:65 msgid "Comments" @@ -118,15 +118,14 @@ msgstr "Comentarios" #: ../Doc/reference/lexical_analysis.rst:70 msgid "" "A comment starts with a hash character (``#``) that is not part of a string " -"literal, and ends at the end of the physical line. A comment signifies the " -"end of the logical line unless the implicit line joining rules are invoked. " +"literal, and ends at the end of the physical line. A comment signifies the end " +"of the logical line unless the implicit line joining rules are invoked. " "Comments are ignored by the syntax." msgstr "" -"Un comentario comienza con un carácter de almohadilla (``#``) que no es " -"parte de un literal de cadena, y termina al final de la línea física. Un " -"comentario implica el final de la línea lógica, a menos que se invoque la " -"regla implícita de unión de líneas. Los comentarios son ignorados por la " -"sintaxis." +"Un comentario comienza con un carácter de almohadilla (``#``) que no es parte " +"de un literal de cadena, y termina al final de la línea física. Un comentario " +"implica el final de la línea lógica, a menos que se invoque la regla implícita " +"de unión de líneas. Los comentarios son ignorados por la sintaxis." #: ../Doc/reference/lexical_analysis.rst:79 msgid "Encoding declarations" @@ -135,24 +134,23 @@ msgstr "Declaración de Codificación" #: ../Doc/reference/lexical_analysis.rst:84 msgid "" "If a comment in the first or second line of the Python script matches the " -"regular expression ``coding[=:]\\s*([-\\w.]+)``, this comment is processed " -"as an encoding declaration; the first group of this expression names the " -"encoding of the source code file. The encoding declaration must appear on a " -"line of its own. If it is the second line, the first line must also be a " -"comment-only line. The recommended forms of an encoding expression are ::" +"regular expression ``coding[=:]\\s*([-\\w.]+)``, this comment is processed as " +"an encoding declaration; the first group of this expression names the encoding " +"of the source code file. The encoding declaration must appear on a line of its " +"own. If it is the second line, the first line must also be a comment-only line. " +"The recommended forms of an encoding expression are ::" msgstr "" "Si un comentario en la primera o segunda línea del script de Python coincide " "con la expresión regular ``coding[=:]\\s*([-\\w.]+)``, este comentario se " -"procesa como una declaración de codificación; el primer grupo de esta " -"expresión denomina la codificación del archivo de código fuente. La " -"declaración de codificación debe aparecer en una línea propia. Si se trata " -"de la segunda línea, la primera línea debe ser también una línea solamente " -"de comentario. Las formas recomendadas de una expresión de codificación " -"son ::" +"procesa como una declaración de codificación; el primer grupo de esta expresión " +"denomina la codificación del archivo de código fuente. La declaración de " +"codificación debe aparecer en una línea propia. Si se trata de la segunda " +"línea, la primera línea debe ser también una línea solamente de comentario. Las " +"formas recomendadas de una expresión de codificación son ::" #: ../Doc/reference/lexical_analysis.rst:91 msgid "# -*- coding: -*-" -msgstr "" +msgstr "# -*- coding: -*-" #: ../Doc/reference/lexical_analysis.rst:93 msgid "which is recognized also by GNU Emacs, and ::" @@ -160,35 +158,33 @@ msgstr "que también es reconocido por GNU Emacs y ::" #: ../Doc/reference/lexical_analysis.rst:95 msgid "# vim:fileencoding=" -msgstr "" +msgstr "# vim:fileencoding=" #: ../Doc/reference/lexical_analysis.rst:97 msgid "which is recognized by Bram Moolenaar's VIM." msgstr "que es reconocido por el VIM de Bram Moolenaar." #: ../Doc/reference/lexical_analysis.rst:99 -#, fuzzy msgid "" "If no encoding declaration is found, the default encoding is UTF-8. If the " -"implicit or explicit encoding of a file is UTF-8, an initial UTF-8 byte-" -"order mark (b'\\xef\\xbb\\xbf') is ignored rather than being a syntax error." +"implicit or explicit encoding of a file is UTF-8, an initial UTF-8 byte-order " +"mark (b'\\xef\\xbb\\xbf') is ignored rather than being a syntax error." msgstr "" -"Si no se encuentra una declaración de codificación, la codificación por " -"defecto es UTF-8. Además, si los primeros bytes del archivo son la marca de " -"orden de bytes UTF-8 (``b'\\xef\\xbb\\xbf'``), la codificación declarada del " -"archivo es UTF-8 (esto está soportado, entre otros, por el programa :program:" -"`notepad` de Microsoft)." +"Si no se encuentra una declaración de codificación, la codificación por defecto " +"es UTF-8. Si la codificación implícita o explicita de un archivo es UTF-8, una " +"marca de orden de bytes UTF-8 inicial (``b'\\xef\\xbb\\xbf'``), se ignora en " +"vez de ser un error de sintaxis." #: ../Doc/reference/lexical_analysis.rst:103 msgid "" "If an encoding is declared, the encoding name must be recognized by Python " -"(see :ref:`standard-encodings`). The encoding is used for all lexical " -"analysis, including string literals, comments and identifiers." +"(see :ref:`standard-encodings`). The encoding is used for all lexical analysis, " +"including string literals, comments and identifiers." msgstr "" "Si se declara una codificación, Python debe reconocer el nombre de la " -"codificación (ver :ref:`standard-encodings`). La codificación se utiliza " -"para todos los análisis léxicos, incluidos las cadenas literales, los " -"comentarios y los identificadores." +"codificación (ver :ref:`standard-encodings`). La codificación se utiliza para " +"todos los análisis léxicos, incluidos las cadenas literales, los comentarios y " +"los identificadores." #: ../Doc/reference/lexical_analysis.rst:112 msgid "Explicit line joining" @@ -197,17 +193,16 @@ msgstr "Unión explícita de líneas" #: ../Doc/reference/lexical_analysis.rst:116 msgid "" "Two or more physical lines may be joined into logical lines using backslash " -"characters (``\\``), as follows: when a physical line ends in a backslash " -"that is not part of a string literal or comment, it is joined with the " -"following forming a single logical line, deleting the backslash and the " -"following end-of-line character. For example::" -msgstr "" -"Dos o más líneas físicas pueden unirse en líneas lógicas utilizando " -"caracteres de barra invertida (``\\``), de la siguiente manera: cuando una " -"línea física termina en una barra invertida que no es parte de literal de " -"cadena o de un comentario, se une con la siguiente formando una sola línea " -"lógica, borrando la barra invertida y el siguiente carácter de fin de " -"línea. Por ejemplo::" +"characters (``\\``), as follows: when a physical line ends in a backslash that " +"is not part of a string literal or comment, it is joined with the following " +"forming a single logical line, deleting the backslash and the following end-of-" +"line character. For example::" +msgstr "" +"Dos o más líneas físicas pueden unirse en líneas lógicas utilizando caracteres " +"de barra invertida (``\\``), de la siguiente manera: cuando una línea física " +"termina en una barra invertida que no es parte de literal de cadena o de un " +"comentario, se une con la siguiente formando una sola línea lógica, borrando la " +"barra invertida y el siguiente carácter de fin de línea. Por ejemplo::" #: ../Doc/reference/lexical_analysis.rst:122 msgid "" @@ -216,21 +211,25 @@ msgid "" " and 0 <= minute < 60 and 0 <= second < 60: # Looks like a valid date\n" " return 1" msgstr "" +"if 1900 < year < 2100 and 1 <= month <= 12 \\\n" +" and 1 <= day <= 31 and 0 <= hour < 24 \\\n" +" and 0 <= minute < 60 and 0 <= second < 60: # Looks like a valid date\n" +" return 1" #: ../Doc/reference/lexical_analysis.rst:127 msgid "" "A line ending in a backslash cannot carry a comment. A backslash does not " "continue a comment. A backslash does not continue a token except for string " "literals (i.e., tokens other than string literals cannot be split across " -"physical lines using a backslash). A backslash is illegal elsewhere on a " -"line outside a string literal." +"physical lines using a backslash). A backslash is illegal elsewhere on a line " +"outside a string literal." msgstr "" "Una línea que termina en una barra invertida no puede llevar un comentario. " -"Una barra invertida no continúa un comentario. Una barra invertida no " -"continúa un token excepto para los literales de la cadena (es decir, los " -"tokens que no sean literales de la cadena no pueden ser divididos a través " -"de líneas físicas usando una barra invertida). La barra invertida es ilegal " -"en cualquier parte de una línea fuera del literal de la cadena." +"Una barra invertida no continúa un comentario. Una barra invertida no continúa " +"un token excepto para los literales de la cadena (es decir, los tokens que no " +"sean literales de la cadena no pueden ser divididos a través de líneas físicas " +"usando una barra invertida). La barra invertida es ilegal en cualquier parte " +"de una línea fuera del literal de la cadena." #: ../Doc/reference/lexical_analysis.rst:137 msgid "Implicit line joining" @@ -238,12 +237,11 @@ msgstr "Unión implícita de líneas" #: ../Doc/reference/lexical_analysis.rst:139 msgid "" -"Expressions in parentheses, square brackets or curly braces can be split " -"over more than one physical line without using backslashes. For example::" +"Expressions in parentheses, square brackets or curly braces can be split over " +"more than one physical line without using backslashes. For example::" msgstr "" "Las expresiones entre paréntesis, entre corchetes o entre rizos pueden " -"dividirse en más de una línea física sin usar barras invertidas. Por " -"ejemplo::" +"dividirse en más de una línea física sin usar barras invertidas. Por ejemplo::" #: ../Doc/reference/lexical_analysis.rst:142 msgid "" @@ -252,6 +250,10 @@ msgid "" " 'Juli', 'Augustus', 'September', # for the months\n" " 'Oktober', 'November', 'December'] # of the year" msgstr "" +"month_names = ['Januari', 'Februari', 'Maart', # Son los\n" +" 'April', 'Mei', 'Juni', # nombres holandeses\n" +" 'Juli', 'Augustus', 'September', # para los meses\n" +" 'Oktober', 'November', 'December'] # del año" #: ../Doc/reference/lexical_analysis.rst:147 msgid "" @@ -261,12 +263,12 @@ msgid "" "continued lines can also occur within triple-quoted strings (see below); in " "that case they cannot carry comments." msgstr "" -"Las líneas continuas implícitas pueden llevar comentarios. La sangría de " -"las líneas de continuación no es importante. Se permiten líneas de " -"continuación en blanco. No hay ningún token NEWLINE (nueva línea) entre las " -"líneas de continuación implícitas. Las líneas de continuación implícitas " -"también pueden aparecer dentro de cadenas de triple comilla ( ver más " -"adelante); en ese caso no pueden llevar comentarios." +"Las líneas continuas implícitas pueden llevar comentarios. La sangría de las " +"líneas de continuación no es importante. Se permiten líneas de continuación en " +"blanco. No hay ningún token NEWLINE (nueva línea) entre las líneas de " +"continuación implícitas. Las líneas de continuación implícitas también pueden " +"aparecer dentro de cadenas de triple comilla ( ver más adelante); en ese caso " +"no pueden llevar comentarios." #: ../Doc/reference/lexical_analysis.rst:157 msgid "Blank lines" @@ -275,21 +277,20 @@ msgstr "Líneas en blanco" #: ../Doc/reference/lexical_analysis.rst:161 msgid "" "A logical line that contains only spaces, tabs, formfeeds and possibly a " -"comment, is ignored (i.e., no NEWLINE token is generated). During " -"interactive input of statements, handling of a blank line may differ " -"depending on the implementation of the read-eval-print loop. In the " -"standard interactive interpreter, an entirely blank logical line (i.e. one " -"containing not even whitespace or a comment) terminates a multi-line " -"statement." -msgstr "" -"Una línea lógica que contiene sólo espacios, tabulaciones, saltos de página " -"y posiblemente un comentario, es ignorada (es decir, no se genera un símbolo " -"de NEWLINE). Durante la introducción interactiva de declaraciones, el " -"manejo de una línea en blanco puede variar dependiendo de la implementación " -"del bucle de *read-eval-print* (lectura-evaluación-impresión). En el " -"intérprete interactivo estándar, una línea lógica completamente en blanco " -"(es decir, una que no contiene ni siquiera un espacio en blanco o un " -"comentario) termina una declaración de varias líneas." +"comment, is ignored (i.e., no NEWLINE token is generated). During interactive " +"input of statements, handling of a blank line may differ depending on the " +"implementation of the read-eval-print loop. In the standard interactive " +"interpreter, an entirely blank logical line (i.e. one containing not even " +"whitespace or a comment) terminates a multi-line statement." +msgstr "" +"Una línea lógica que contiene sólo espacios, tabulaciones, saltos de página y " +"posiblemente un comentario, es ignorada (es decir, no se genera un símbolo de " +"NEWLINE). Durante la introducción interactiva de declaraciones, el manejo de " +"una línea en blanco puede variar dependiendo de la implementación del bucle de " +"*read-eval-print* (lectura-evaluación-impresión). En el intérprete interactivo " +"estándar, una línea lógica completamente en blanco (es decir, una que no " +"contiene ni siquiera un espacio en blanco o un comentario) termina una " +"declaración de varias líneas." #: ../Doc/reference/lexical_analysis.rst:172 msgid "Indentation" @@ -297,61 +298,61 @@ msgstr "Sangría" #: ../Doc/reference/lexical_analysis.rst:176 msgid "" -"Leading whitespace (spaces and tabs) at the beginning of a logical line is " -"used to compute the indentation level of the line, which in turn is used to " +"Leading whitespace (spaces and tabs) at the beginning of a logical line is used " +"to compute the indentation level of the line, which in turn is used to " "determine the grouping of statements." msgstr "" "El espacio en blanco ( espacios y tabulaciones) al principio de una línea " -"lógica se utiliza para calcular el nivel de sangría de la línea, que a su " -"vez se utiliza para determinar la agrupación de las declaraciones." +"lógica se utiliza para calcular el nivel de sangría de la línea, que a su vez " +"se utiliza para determinar la agrupación de las declaraciones." #: ../Doc/reference/lexical_analysis.rst:180 msgid "" "Tabs are replaced (from left to right) by one to eight spaces such that the " -"total number of characters up to and including the replacement is a multiple " -"of eight (this is intended to be the same rule as used by Unix). The total " -"number of spaces preceding the first non-blank character then determines the " -"line's indentation. Indentation cannot be split over multiple physical " -"lines using backslashes; the whitespace up to the first backslash determines " -"the indentation." -msgstr "" -"Los tabuladores se sustituyen (de izquierda a derecha) por uno a ocho " -"espacios, de manera que el número total de caracteres hasta el reemplazo " -"inclusive es un múltiplo de ocho (se pretende que sea la misma regla que la " -"utilizada por Unix). El número total de espacios que preceden al primer " -"carácter no en blanco determina entonces la sangría de la línea. La sangría " -"no puede dividirse en múltiples líneas físicas utilizando barras invertidas; " -"el espacio en blanco hasta la primera barra invertida determina la sangría." +"total number of characters up to and including the replacement is a multiple of " +"eight (this is intended to be the same rule as used by Unix). The total number " +"of spaces preceding the first non-blank character then determines the line's " +"indentation. Indentation cannot be split over multiple physical lines using " +"backslashes; the whitespace up to the first backslash determines the " +"indentation." +msgstr "" +"Los tabuladores se sustituyen (de izquierda a derecha) por uno a ocho espacios, " +"de manera que el número total de caracteres hasta el reemplazo inclusive es un " +"múltiplo de ocho (se pretende que sea la misma regla que la utilizada por " +"Unix). El número total de espacios que preceden al primer carácter no en " +"blanco determina entonces la sangría de la línea. La sangría no puede " +"dividirse en múltiples líneas físicas utilizando barras invertidas; el espacio " +"en blanco hasta la primera barra invertida determina la sangría." #: ../Doc/reference/lexical_analysis.rst:188 msgid "" -"Indentation is rejected as inconsistent if a source file mixes tabs and " -"spaces in a way that makes the meaning dependent on the worth of a tab in " -"spaces; a :exc:`TabError` is raised in that case." +"Indentation is rejected as inconsistent if a source file mixes tabs and spaces " +"in a way that makes the meaning dependent on the worth of a tab in spaces; a :" +"exc:`TabError` is raised in that case." msgstr "" "La indentación se rechaza como inconsistente si un archivo fuente mezcla " -"tabulaciones y espacios de manera que el significado depende del valor de " -"una tabulación en los espacios; un :exc:`TabError` se produce en ese caso." +"tabulaciones y espacios de manera que el significado depende del valor de una " +"tabulación en los espacios; un :exc:`TabError` se produce en ese caso." #: ../Doc/reference/lexical_analysis.rst:192 msgid "" -"**Cross-platform compatibility note:** because of the nature of text editors " -"on non-UNIX platforms, it is unwise to use a mixture of spaces and tabs for " -"the indentation in a single source file. It should also be noted that " -"different platforms may explicitly limit the maximum indentation level." +"**Cross-platform compatibility note:** because of the nature of text editors on " +"non-UNIX platforms, it is unwise to use a mixture of spaces and tabs for the " +"indentation in a single source file. It should also be noted that different " +"platforms may explicitly limit the maximum indentation level." msgstr "" "**Nota de compatibilidad entre plataformas:** debido a la naturaleza de los " -"editores de texto en plataformas que no sean UNIX, no es aconsejable " -"utilizar una mezcla de espacios y tabuladores para la sangría en un solo " -"archivo de origen. También debe tenerse en cuenta que las diferentes " -"plataformas pueden limitar explícitamente el nivel máximo de sangría." +"editores de texto en plataformas que no sean UNIX, no es aconsejable utilizar " +"una mezcla de espacios y tabuladores para la sangría en un solo archivo de " +"origen. También debe tenerse en cuenta que las diferentes plataformas pueden " +"limitar explícitamente el nivel máximo de sangría." #: ../Doc/reference/lexical_analysis.rst:197 msgid "" "A formfeed character may be present at the start of the line; it will be " -"ignored for the indentation calculations above. Formfeed characters " -"occurring elsewhere in the leading whitespace have an undefined effect (for " -"instance, they may reset the space count to zero)." +"ignored for the indentation calculations above. Formfeed characters occurring " +"elsewhere in the leading whitespace have an undefined effect (for instance, " +"they may reset the space count to zero)." msgstr "" "Un carácter *formfeed* puede estar presente al comienzo de la línea; será " "ignorado para los cálculos de sangría anteriores. Los caracteres *formfeed* " @@ -371,29 +372,28 @@ msgid "" "Before the first line of the file is read, a single zero is pushed on the " "stack; this will never be popped off again. The numbers pushed on the stack " "will always be strictly increasing from bottom to top. At the beginning of " -"each logical line, the line's indentation level is compared to the top of " -"the stack. If it is equal, nothing happens. If it is larger, it is pushed on " -"the stack, and one INDENT token is generated. If it is smaller, it *must* " -"be one of the numbers occurring on the stack; all numbers on the stack that " -"are larger are popped off, and for each number popped off a DEDENT token is " -"generated. At the end of the file, a DEDENT token is generated for each " -"number remaining on the stack that is larger than zero." -msgstr "" -"Antes de que se lea la primera línea del archivo, se empuja un solo cero en " -"la pila; esto no volverá a saltar. Los números empujados en la pila siempre " -"irán aumentando estrictamente de abajo hacia arriba. Al principio de cada " -"línea lógica, el nivel de sangría de la línea se compara con la parte " -"superior de la pila. Si es igual, no pasa nada. Si es mayor, se empuja en la " -"pila, y se genera un token INDENT. Si es más pequeño, *debe* ser uno de los " -"números de la pila; todos los números de la pila que son más grandes se " -"sacan, y por cada número sacado se genera un token DEDENT. Al final del " -"archivo, se genera un token DEDENT por cada número restante de la pila que " -"sea mayor que cero." +"each logical line, the line's indentation level is compared to the top of the " +"stack. If it is equal, nothing happens. If it is larger, it is pushed on the " +"stack, and one INDENT token is generated. If it is smaller, it *must* be one " +"of the numbers occurring on the stack; all numbers on the stack that are larger " +"are popped off, and for each number popped off a DEDENT token is generated. At " +"the end of the file, a DEDENT token is generated for each number remaining on " +"the stack that is larger than zero." +msgstr "" +"Antes de que se lea la primera línea del archivo, se empuja un solo cero en la " +"pila; esto no volverá a saltar. Los números empujados en la pila siempre irán " +"aumentando estrictamente de abajo hacia arriba. Al principio de cada línea " +"lógica, el nivel de sangría de la línea se compara con la parte superior de la " +"pila. Si es igual, no pasa nada. Si es mayor, se empuja en la pila, y se genera " +"un token INDENT. Si es más pequeño, *debe* ser uno de los números de la pila; " +"todos los números de la pila que son más grandes se sacan, y por cada número " +"sacado se genera un token DEDENT. Al final del archivo, se genera un token " +"DEDENT por cada número restante de la pila que sea mayor que cero." #: ../Doc/reference/lexical_analysis.rst:218 msgid "" -"Here is an example of a correctly (though confusingly) indented piece of " -"Python code::" +"Here is an example of a correctly (though confusingly) indented piece of Python " +"code::" msgstr "" "Aquí hay un ejemplo de un código de Python con una correcta (aunque no tan " "clara) sangría::" @@ -412,6 +412,17 @@ msgid "" " r.append(l[i:i+1] + x)\n" " return r" msgstr "" +"def perm(l):\n" +" # Calcular la lista de todas las permutaciones de l\n" +" if len(l) <= 1:\n" +" return [l]\n" +" r = []\n" +" for i in range(len(l)):\n" +" s = l[:i] + l[i+1:]\n" +" p = perm(s)\n" +" for x in p:\n" +" r.append(l[i:i+1] + x)\n" +" return r" #: ../Doc/reference/lexical_analysis.rst:233 msgid "The following example shows various indentation errors::" @@ -427,16 +438,24 @@ msgid "" " r.append(l[i:i+1] + x)\n" " return r # error: inconsistent dedent" msgstr "" +" def perm(l): # error: first line indented\n" +"for i in range(len(l)): # error: not indented\n" +" s = l[:i] + l[i+1:]\n" +" p = perm(l[:i] + l[i+1:]) # error: unexpected indent\n" +" for x in p:\n" +" r.append(l[i:i+1] + x)\n" +" return r # error: inconsistent dedent" +#: ../Doc/reference/lexical_analysis.rst:235 #: ../Doc/reference/lexical_analysis.rst:243 msgid "" "(Actually, the first three errors are detected by the parser; only the last " -"error is found by the lexical analyzer --- the indentation of ``return r`` " -"does not match a level popped off the stack.)" +"error is found by the lexical analyzer --- the indentation of ``return r`` does " +"not match a level popped off the stack.)" msgstr "" -"(En realidad, los tres primeros errores son detectados por el analizador; " -"sólo el último error es encontrado por el analizador léxico --- la sangría " -"de ``return r`` no coincide con un nivel sacado de la pila.)" +"(En realidad, los tres primeros errores son detectados por el analizador; sólo " +"el último error es encontrado por el analizador léxico --- la sangría de " +"``return r`` no coincide con un nivel sacado de la pila.)" #: ../Doc/reference/lexical_analysis.rst:251 msgid "Whitespace between tokens" @@ -444,18 +463,18 @@ msgstr "Espacios en blanco entre tokens" #: ../Doc/reference/lexical_analysis.rst:253 msgid "" -"Except at the beginning of a logical line or in string literals, the " -"whitespace characters space, tab and formfeed can be used interchangeably to " -"separate tokens. Whitespace is needed between two tokens only if their " -"concatenation could otherwise be interpreted as a different token (e.g., ab " -"is one token, but a b is two tokens)." +"Except at the beginning of a logical line or in string literals, the whitespace " +"characters space, tab and formfeed can be used interchangeably to separate " +"tokens. Whitespace is needed between two tokens only if their concatenation " +"could otherwise be interpreted as a different token (e.g., ab is one token, but " +"a b is two tokens)." msgstr "" -"A excepción del comienzo de una línea lógica o en los literales de cadenas, " -"los caracteres de espacio en blanco, tabulación y formfeed pueden utilizarse " -"indistintamente para separar tokens. Los espacios en blanco se necesitan " -"entre dos tokens sólo si su concatenación podría interpretarse de otra " -"manera como un token diferente (por ejemplo, ab es un token, pero a b " -"corresponde a dos tokens)." +"A excepción del comienzo de una línea lógica o en los literales de cadenas, los " +"caracteres de espacio en blanco, tabulación y formfeed pueden utilizarse " +"indistintamente para separar tokens. Los espacios en blanco se necesitan entre " +"dos tokens sólo si su concatenación podría interpretarse de otra manera como un " +"token diferente (por ejemplo, ab es un token, pero a b corresponde a dos " +"tokens)." #: ../Doc/reference/lexical_analysis.rst:263 msgid "Other tokens" @@ -463,21 +482,21 @@ msgstr "Otros tokens" #: ../Doc/reference/lexical_analysis.rst:265 msgid "" -"Besides NEWLINE, INDENT and DEDENT, the following categories of tokens " -"exist: *identifiers*, *keywords*, *literals*, *operators*, and *delimiters*. " -"Whitespace characters (other than line terminators, discussed earlier) are " -"not tokens, but serve to delimit tokens. Where ambiguity exists, a token " -"comprises the longest possible string that forms a legal token, when read " -"from left to right." +"Besides NEWLINE, INDENT and DEDENT, the following categories of tokens exist: " +"*identifiers*, *keywords*, *literals*, *operators*, and *delimiters*. " +"Whitespace characters (other than line terminators, discussed earlier) are not " +"tokens, but serve to delimit tokens. Where ambiguity exists, a token comprises " +"the longest possible string that forms a legal token, when read from left to " +"right." msgstr "" "Además de NEWLINE, INDENT y DEDENT, existen las siguientes categorías de " "fichas: *identifiers* (identificadores), *keywords* (palabras clave), " "*literals* (literales), *operators* (operadores) y *delimiters* " "(delimitadores). Los caracteres de espacio en blanco (distintos de los " "terminadores de línea, discutidos anteriormente) no son tokens, pero sirven " -"para delimitarlos. En los casos en que exista ambigüedad, un token comprende " -"la cadena más larga posible que forma un token legal cuando se lee de " -"izquierda a derecha." +"para delimitarlos. En los casos en que exista ambigüedad, un token comprende la " +"cadena más larga posible que forma un token legal cuando se lee de izquierda a " +"derecha." #: ../Doc/reference/lexical_analysis.rst:275 msgid "Identifiers and keywords" @@ -488,25 +507,25 @@ msgid "" "Identifiers (also referred to as *names*) are described by the following " "lexical definitions." msgstr "" -"Los identificadores (también denominados *nombres*) se describen mediante " -"las siguientes definiciones léxicas." +"Los identificadores (también denominados *nombres*) se describen mediante las " +"siguientes definiciones léxicas." #: ../Doc/reference/lexical_analysis.rst:282 msgid "" "The syntax of identifiers in Python is based on the Unicode standard annex " -"UAX-31, with elaboration and changes as defined below; see also :pep:`3131` " -"for further details." +"UAX-31, with elaboration and changes as defined below; see also :pep:`3131` for " +"further details." msgstr "" "La sintaxis de los identificadores en Python se basa en el anexo estándar de " -"Unicode UAX-31, con la elaboración y los cambios que se definen a " -"continuación; ver también :pep:`3131` para más detalles." +"Unicode UAX-31, con la elaboración y los cambios que se definen a continuación; " +"ver también :pep:`3131` para más detalles." #: ../Doc/reference/lexical_analysis.rst:286 msgid "" -"Within the ASCII range (U+0001..U+007F), the valid characters for " -"identifiers are the same as in Python 2.x: the uppercase and lowercase " -"letters ``A`` through ``Z``, the underscore ``_`` and, except for the first " -"character, the digits ``0`` through ``9``." +"Within the ASCII range (U+0001..U+007F), the valid characters for identifiers " +"are the same as in Python 2.x: the uppercase and lowercase letters ``A`` " +"through ``Z``, the underscore ``_`` and, except for the first character, the " +"digits ``0`` through ``9``." msgstr "" "Dentro del rango ASCII (U+0001..U+007F), los caracteres válidos para los " "identificadores son los mismos que en Python 2.x: las letras mayúsculas y " @@ -515,14 +534,13 @@ msgstr "" #: ../Doc/reference/lexical_analysis.rst:291 msgid "" -"Python 3.0 introduces additional characters from outside the ASCII range " -"(see :pep:`3131`). For these characters, the classification uses the " -"version of the Unicode Character Database as included in the :mod:" -"`unicodedata` module." +"Python 3.0 introduces additional characters from outside the ASCII range (see :" +"pep:`3131`). For these characters, the classification uses the version of the " +"Unicode Character Database as included in the :mod:`unicodedata` module." msgstr "" "Python 3.0 introduce caracteres adicionales fuera del rango ASCII (ver :pep:" -"`3131`). Para estos caracteres, la clasificación utiliza la versión de la " -"base de datos de caracteres Unicode incluida en el módulo :mod:`unicodedata`." +"`3131`). Para estos caracteres, la clasificación utiliza la versión de la base " +"de datos de caracteres Unicode incluida en el módulo :mod:`unicodedata`." #: ../Doc/reference/lexical_analysis.rst:295 msgid "Identifiers are unlimited in length. Case is significant." @@ -576,15 +594,13 @@ msgid "*Pc* - connector punctuations" msgstr "*Pc* - puntuaciones conectoras" #: ../Doc/reference/lexical_analysis.rst:316 -#, fuzzy msgid "" "*Other_ID_Start* - explicit list of characters in `PropList.txt `_ to support backwards " -"compatibility" +"unicode.org/Public/15.1.0/ucd/PropList.txt>`_ to support backwards compatibility" msgstr "" -"*Other_ID_Start*: lista explícita de caracteres en `PropList.txt `_ para admitir la " -"compatibilidad con versiones anteriores" +"*Other_ID_Start*: lista explícita de caracteres en `PropList.txt `_ para admitir la compatibilidad " +"con versiones anteriores" #: ../Doc/reference/lexical_analysis.rst:319 msgid "*Other_ID_Continue* - likewise" @@ -599,15 +615,14 @@ msgstr "" "analizan; la comparación de los identificadores se basa en NFKC." #: ../Doc/reference/lexical_analysis.rst:324 -#, fuzzy msgid "" -"A non-normative HTML file listing all valid identifier characters for " -"Unicode 15.1.0 can be found at https://www.unicode.org/Public/15.1.0/ucd/" +"A non-normative HTML file listing all valid identifier characters for Unicode " +"15.1.0 can be found at https://www.unicode.org/Public/15.1.0/ucd/" "DerivedCoreProperties.txt" msgstr "" -"Puede encontrar un archivo HTML no normativo que enumera todos los " -"caracteres de identificación válidos para Unicode 14.0.0 en https://www." -"unicode.org/Public/14.0.0/ucd/DerivedCoreProperties.txt" +"Puede encontrar un archivo HTML no normativo que enumera todos los caracteres " +"de identificación válidos para Unicode 15.1.0 en https://www.unicode.org/" +"Public/15.1.0/ucd/DerivedCoreProperties.txt" #: ../Doc/reference/lexical_analysis.rst:332 msgid "Keywords" @@ -633,46 +648,51 @@ msgid "" "assert del global not with\n" "async elif if or yield" msgstr "" +"False await else import pass\n" +"None break except in raise\n" +"True class finally is return\n" +"and continue for lambda try\n" +"as def from nonlocal while\n" +"assert del global not with\n" +"async elif if or yield" #: ../Doc/reference/lexical_analysis.rst:356 msgid "Soft Keywords" msgstr "Palabras clave suaves" #: ../Doc/reference/lexical_analysis.rst:362 -#, fuzzy msgid "" -"Some identifiers are only reserved under specific contexts. These are known " -"as *soft keywords*. The identifiers ``match``, ``case``, ``type`` and ``_`` " -"can syntactically act as keywords in certain contexts, but this distinction " -"is done at the parser level, not when tokenizing." +"Some identifiers are only reserved under specific contexts. These are known as " +"*soft keywords*. The identifiers ``match``, ``case``, ``type`` and ``_`` can " +"syntactically act as keywords in certain contexts, but this distinction is done " +"at the parser level, not when tokenizing." msgstr "" -"Algunos identificadores solo están reservados en contextos específicos. " -"Estos se conocen como *palabras clave suaves*. Los identificadores " -"``match``, ``case`` y ``_`` pueden actuar sintácticamente como palabras " -"clave en contextos relacionados con la declaración de coincidencia de " -"patrones, pero esta distinción se realiza en el nivel del analizador, no " -"cuando se tokeniza." +"Algunos identificadores solo están reservados en contextos específicos. Estos " +"se conocen como *palabras clave suaves*. Los identificadores ``match``, " +"``case``, ``type`` y ``_`` pueden actuar sintácticamente como palabras clave en " +"ciertos contextos, pero esta distinción se realiza en el nivel del analizador, " +"no cuando se tokeniza." #: ../Doc/reference/lexical_analysis.rst:367 -#, fuzzy msgid "" -"As soft keywords, their use in the grammar is possible while still " -"preserving compatibility with existing code that uses these names as " -"identifier names." +"As soft keywords, their use in the grammar is possible while still preserving " +"compatibility with existing code that uses these names as identifier names." msgstr "" -"Como palabras clave suaves, su uso con la coincidencia de patrones es " -"posible sin dejar de preservar la compatibilidad con el código existente que " -"usa ``match``, ``case`` y ``_`` como nombres de identificadores." +"Como palabras clave suaves, su uso en la gramática es posible sin dejar de " +"preservar la compatibilidad con el código existente que usa esos nombres como " +"nombres de identificadores." #: ../Doc/reference/lexical_analysis.rst:371 msgid "" "``match``, ``case``, and ``_`` are used in the :keyword:`match` statement. " "``type`` is used in the :keyword:`type` statement." msgstr "" +"``match``, ``case``, y ``_`` se usan en la declaración :keyword:`match`. " +"``type`` se usa en la declaración :keyword:`type`." #: ../Doc/reference/lexical_analysis.rst:374 msgid "``type`` is now a soft keyword." -msgstr "" +msgstr "``type`` ahora es un palabra clave suave." #: ../Doc/reference/lexical_analysis.rst:383 msgid "Reserved classes of identifiers" @@ -680,13 +700,13 @@ msgstr "Clases reservadas de identificadores" #: ../Doc/reference/lexical_analysis.rst:385 msgid "" -"Certain classes of identifiers (besides keywords) have special meanings. " -"These classes are identified by the patterns of leading and trailing " -"underscore characters:" +"Certain classes of identifiers (besides keywords) have special meanings. These " +"classes are identified by the patterns of leading and trailing underscore " +"characters:" msgstr "" "Ciertas clases de identificadores (además de las palabras clave) tienen " -"significados especiales. Estas clases se identifican por los patrones de " -"los caracteres de guión bajo que van delante y detrás:" +"significados especiales. Estas clases se identifican por los patrones de los " +"caracteres de guión bajo que van delante y detrás:" #: ../Doc/reference/lexical_analysis.rst:390 msgid "``_*``" @@ -706,33 +726,33 @@ msgid "" "`soft keyword ` that denotes a :ref:`wildcard `." msgstr "" -"En un patrón ``case`` dentro de una declaración :keyword:`match`, ``_`` es " -"una :ref:`palabra clave suave ` que denota un comodín :ref:" -"`wildcard `." +"En un patrón ``case`` dentro de una declaración :keyword:`match`, ``_`` es una :" +"ref:`palabra clave suave ` que denota un comodín :ref:`wildcard " +"`." #: ../Doc/reference/lexical_analysis.rst:397 msgid "" -"Separately, the interactive interpreter makes the result of the last " -"evaluation available in the variable ``_``. (It is stored in the :mod:" -"`builtins` module, alongside built-in functions like ``print``.)" +"Separately, the interactive interpreter makes the result of the last evaluation " +"available in the variable ``_``. (It is stored in the :mod:`builtins` module, " +"alongside built-in functions like ``print``.)" msgstr "" -"Por separado, el intérprete interactivo pone a disposición el resultado de " -"la última evaluación en la variable ``_``. (Se almacena en el módulo :mod:" +"Por separado, el intérprete interactivo pone a disposición el resultado de la " +"última evaluación en la variable ``_``. (Se almacena en el módulo :mod:" "`builtins`, junto con funciones incorporadas como ``print``)." #: ../Doc/reference/lexical_analysis.rst:402 msgid "" -"Elsewhere, ``_`` is a regular identifier. It is often used to name " -"\"special\" items, but it is not special to Python itself." +"Elsewhere, ``_`` is a regular identifier. It is often used to name \"special\" " +"items, but it is not special to Python itself." msgstr "" "En otros lugares, ``_`` es un identificador regular. A menudo se usa para " "nombrar elementos \"especiales\", pero no es especial para Python en sí." #: ../Doc/reference/lexical_analysis.rst:407 msgid "" -"The name ``_`` is often used in conjunction with internationalization; refer " -"to the documentation for the :mod:`gettext` module for more information on " -"this convention." +"The name ``_`` is often used in conjunction with internationalization; refer to " +"the documentation for the :mod:`gettext` module for more information on this " +"convention." msgstr "" "El nombre ``_`` se usa a menudo en conjunción con la internacionalización; " "consultar la documentación del módulo :mod:`gettext`` para más información " @@ -750,17 +770,17 @@ msgstr "``__*__``" msgid "" "System-defined names, informally known as \"dunder\" names. These names are " "defined by the interpreter and its implementation (including the standard " -"library). Current system names are discussed in the :ref:`specialnames` " -"section and elsewhere. More will likely be defined in future versions of " -"Python. *Any* use of ``__*__`` names, in any context, that does not follow " -"explicitly documented use, is subject to breakage without warning." +"library). Current system names are discussed in the :ref:`specialnames` section " +"and elsewhere. More will likely be defined in future versions of Python. *Any* " +"use of ``__*__`` names, in any context, that does not follow explicitly " +"documented use, is subject to breakage without warning." msgstr "" "Nombres definidos por el sistema, conocidos informalmente como nombres " "\"*dunder*\". Estos nombres son definidos por el intérprete y su aplicación " -"(incluida la biblioteca estándar). Los nombres actuales del sistema se " -"discuten en la sección :ref:`specialnames` y en otros lugares. Es probable " -"que se definan más en futuras versiones de Python. *Cualquier* uso de " -"nombres ``__*__``, en cualquier contexto, que no siga un uso explícitamente " +"(incluida la biblioteca estándar). Los nombres actuales del sistema se discuten " +"en la sección :ref:`specialnames` y en otros lugares. Es probable que se " +"definan más en futuras versiones de Python. *Cualquier* uso de nombres " +"``__*__``, en cualquier contexto, que no siga un uso explícitamente " "documentado, está sujeto a que se rompa sin previo aviso." #: ../Doc/reference/lexical_analysis.rst:426 @@ -769,16 +789,16 @@ msgstr "``__*``" #: ../Doc/reference/lexical_analysis.rst:422 msgid "" -"Class-private names. Names in this category, when used within the context " -"of a class definition, are re-written to use a mangled form to help avoid " -"name clashes between \"private\" attributes of base and derived classes. See " +"Class-private names. Names in this category, when used within the context of a " +"class definition, are re-written to use a mangled form to help avoid name " +"clashes between \"private\" attributes of base and derived classes. See " "section :ref:`atom-identifiers`." msgstr "" -"Nombres de clase privada. Los nombres de esta categoría, cuando se utilizan " -"en el contexto de una definición de clase, se reescriben para utilizar una " -"forma desfigurada que ayude a evitar conflictos de nombres entre los " -"atributos \"privados\" de las clases base y derivadas. Ver la sección :ref:" -"`atom-identifiers`." +"Nombres de clase privada. Los nombres de esta categoría, cuando se utilizan en " +"el contexto de una definición de clase, se reescriben para utilizar una forma " +"desfigurada que ayude a evitar conflictos de nombres entre los atributos " +"\"privados\" de las clases base y derivadas. Ver la sección :ref:`atom-" +"identifiers`." #: ../Doc/reference/lexical_analysis.rst:431 msgid "Literals" @@ -802,12 +822,11 @@ msgstr "" #: ../Doc/reference/lexical_analysis.rst:473 msgid "" -"One syntactic restriction not indicated by these productions is that " -"whitespace is not allowed between the :token:`~python-grammar:stringprefix` " -"or :token:`~python-grammar:bytesprefix` and the rest of the literal. The " -"source character set is defined by the encoding declaration; it is UTF-8 if " -"no encoding declaration is given in the source file; see section :ref:" -"`encodings`." +"One syntactic restriction not indicated by these productions is that whitespace " +"is not allowed between the :token:`~python-grammar:stringprefix` or :token:" +"`~python-grammar:bytesprefix` and the rest of the literal. The source character " +"set is defined by the encoding declaration; it is UTF-8 if no encoding " +"declaration is given in the source file; see section :ref:`encodings`." msgstr "" "Una restricción sintáctica no indicada por estas producciones es que no se " "permiten espacios en blanco entre :token:`~python-grammar:stringprefix` o :" @@ -817,54 +836,53 @@ msgstr "" "fuente; ver apartado :ref:`encodings`." #: ../Doc/reference/lexical_analysis.rst:483 -#, fuzzy msgid "" "In plain English: Both types of literals can be enclosed in matching single " "quotes (``'``) or double quotes (``\"``). They can also be enclosed in " -"matching groups of three single or double quotes (these are generally " -"referred to as *triple-quoted strings*). The backslash (``\\``) character is " -"used to give special meaning to otherwise ordinary characters like ``n``, " -"which means 'newline' when escaped (``\\n``). It can also be used to escape " -"characters that otherwise have a special meaning, such as newline, backslash " -"itself, or the quote character. See :ref:`escape sequences ` below for examples." -msgstr "" -"En lenguaje claro y sencillo: ambos tipos de literales pueden ser encerrados " +"matching groups of three single or double quotes (these are generally referred " +"to as *triple-quoted strings*). The backslash (``\\``) character is used to " +"give special meaning to otherwise ordinary characters like ``n``, which means " +"'newline' when escaped (``\\n``). It can also be used to escape characters that " +"otherwise have a special meaning, such as newline, backslash itself, or the " +"quote character. See :ref:`escape sequences ` below for " +"examples." +msgstr "" +"En lenguaje claro y sencillo: Ambos tipos de literales pueden ser encerrados " "entre comillas simples (``'``) o dobles (``\"``). También pueden estar " -"encerrados en grupos de tres comillas simples o dobles (a las que " -"generalmente se les llama *cadenas de tres comillas*). El carácter de la " -"barra inversa (``\\``) se utiliza para escapar de los caracteres que de otra " -"manera tienen un significado especial, como la línea nueva, la barra inversa " -"en sí misma, o el carácter de comillas." +"encerrados en grupos de tres comillas simples o dobles (a las que generalmente " +"se les llama *cadenas de tres comillas*). El carácter de la barra inversa " +"(``\\``) se utiliza para dar un significado especial a caracteres que de otra " +"manera son ordinarios, como ``n``, lo que significa 'línea nueva' cuando se " +"escapa (``\\n``). También se utiliza para escapar caracteres que de otra " +"manera tienen un significado especial como la linea nueva, la barra inversa en " +"sí misma, o el carácter de comillas. Consulte :ref:`escape sequences ` a continuación para más ejemplos." #: ../Doc/reference/lexical_analysis.rst:496 msgid "" "Bytes literals are always prefixed with ``'b'`` or ``'B'``; they produce an " -"instance of the :class:`bytes` type instead of the :class:`str` type. They " -"may only contain ASCII characters; bytes with a numeric value of 128 or " -"greater must be expressed with escapes." +"instance of the :class:`bytes` type instead of the :class:`str` type. They may " +"only contain ASCII characters; bytes with a numeric value of 128 or greater " +"must be expressed with escapes." msgstr "" -"Los literales de bytes siempre se prefijan con ``'b'`` o ``'B'``; producen " -"una instancia del tipo :class:`bytes` en lugar del tipo :class:`str`. Sólo " -"pueden contener caracteres ASCII; los bytes con un valor numérico de 128 o " -"mayor deben ser expresados con escapes." +"Los literales de bytes siempre se prefijan con ``'b'`` o ``'B'``; producen una " +"instancia del tipo :class:`bytes` en lugar del tipo :class:`str`. Sólo pueden " +"contener caracteres ASCII; los bytes con un valor numérico de 128 o mayor deben " +"ser expresados con escapes." #: ../Doc/reference/lexical_analysis.rst:505 -#, fuzzy -msgid "" -"Both string and bytes literals may optionally be prefixed with a letter " -"``'r'`` or ``'R'``; such constructs are called :dfn:`raw string literals` " -"and :dfn:`raw bytes literals` respectively and treat backslashes as literal " -"characters. As a result, in raw string literals, ``'\\U'`` and ``'\\u'`` " -"escapes are not treated specially." -msgstr "" -"Tanto los literales de cadena como de bytes pueden ser prefijados con una " -"letra ``'r'`` o ``'R'``; tales cadenas se llaman :dfn:`raw strings` y " -"consideran las barras inversas como caracteres literales. Como resultado, " -"en las cadenas literales, los escapes de ``'\\U'`` y ``'\\u'`` en las " -"cadenas sin procesar no son tratados de manera especial. Dado que los " -"literales *raw* de unicode de Python 2.x se comportan de manera diferente a " -"los de Python 3.x, la sintaxis de ``'ur'`` no está soportada." +msgid "" +"Both string and bytes literals may optionally be prefixed with a letter ``'r'`` " +"or ``'R'``; such constructs are called :dfn:`raw string literals` and :dfn:`raw " +"bytes literals` respectively and treat backslashes as literal characters. As a " +"result, in raw string literals, ``'\\U'`` and ``'\\u'`` escapes are not treated " +"specially." +msgstr "" +"Tanto los literales de cadena como de bytes pueden ser prefijados con una letra " +"``'r'`` o ``'R'``; tales cadenas se llaman :dfn:`raw string literals` y :dfn:" +"`raw bytes literals` respectivamente y consideran las barras inversas como " +"caracteres literales. Como resultado, en las cadenas literales sin formato, " +"los escapes de ``'\\U'`` y ``'\\u'`` no son tratados de manera especial." #: ../Doc/reference/lexical_analysis.rst:511 msgid "" @@ -877,52 +895,50 @@ msgstr "" #: ../Doc/reference/lexical_analysis.rst:515 msgid "" "Support for the unicode legacy literal (``u'value'``) was reintroduced to " -"simplify the maintenance of dual Python 2.x and 3.x codebases. See :pep:" -"`414` for more information." +"simplify the maintenance of dual Python 2.x and 3.x codebases. See :pep:`414` " +"for more information." msgstr "" "Se reintrodujo el soporte para el legado unicode literal (``u'value'``) para " -"simplificar el mantenimiento de las bases de código dual Python 2.x y 3.x. " -"Ver :pep:`414` para más información." +"simplificar el mantenimiento de las bases de código dual Python 2.x y 3.x. Ver :" +"pep:`414` para más información." #: ../Doc/reference/lexical_analysis.rst:523 msgid "" "A string literal with ``'f'`` or ``'F'`` in its prefix is a :dfn:`formatted " "string literal`; see :ref:`f-strings`. The ``'f'`` may be combined with " -"``'r'``, but not with ``'b'`` or ``'u'``, therefore raw formatted strings " -"are possible, but formatted bytes literals are not." +"``'r'``, but not with ``'b'`` or ``'u'``, therefore raw formatted strings are " +"possible, but formatted bytes literals are not." msgstr "" -"Un literal de cadena con ``'f'`` o ``'F'`` en su prefijo es un :dfn:" -"`formatted string literal`; ver :ref:`f-strings`. La ``'f'`` puede " -"combinarse con la ``'r'``, pero no con la ``'b'`` o ``'u'``, por lo que las " -"cadenas *raw* formateadas son posibles, pero los literales de bytes " -"formateados no lo son." +"Un literal de cadena con ``'f'`` o ``'F'`` en su prefijo es un :dfn:`formatted " +"string literal`; ver :ref:`f-strings`. La ``'f'`` puede combinarse con la " +"``'r'``, pero no con la ``'b'`` o ``'u'``, por lo que las cadenas *raw* " +"formateadas son posibles, pero los literales de bytes formateados no lo son." #: ../Doc/reference/lexical_analysis.rst:528 msgid "" -"In triple-quoted literals, unescaped newlines and quotes are allowed (and " -"are retained), except that three unescaped quotes in a row terminate the " -"literal. (A \"quote\" is the character used to open the literal, i.e. " -"either ``'`` or ``\"``.)" +"In triple-quoted literals, unescaped newlines and quotes are allowed (and are " +"retained), except that three unescaped quotes in a row terminate the literal. " +"(A \"quote\" is the character used to open the literal, i.e. either ``'`` or " +"``\"``.)" msgstr "" "En los literales de triple cita, se permiten (y se retienen) nuevas líneas y " -"citas no escapadas, excepto cuando tres citas no escapadas seguidas " -"finalizan el literal. (Una \"cita\" es el carácter utilizado para abrir el " -"literal, es decir, ya sea ``'`` o ``\"``.)" +"citas no escapadas, excepto cuando tres citas no escapadas seguidas finalizan " +"el literal. (Una \"cita\" es el carácter utilizado para abrir el literal, es " +"decir, ya sea ``'`` o ``\"``.)" #: ../Doc/reference/lexical_analysis.rst:551 -#, fuzzy msgid "Escape sequences" -msgstr "Secuencia de escape" +msgstr "Secuencias de escape" #: ../Doc/reference/lexical_analysis.rst:553 msgid "" -"Unless an ``'r'`` or ``'R'`` prefix is present, escape sequences in string " -"and bytes literals are interpreted according to rules similar to those used " -"by Standard C. The recognized escape sequences are:" +"Unless an ``'r'`` or ``'R'`` prefix is present, escape sequences in string and " +"bytes literals are interpreted according to rules similar to those used by " +"Standard C. The recognized escape sequences are:" msgstr "" "A menos que un prefijo ``'r'`` o ``'R'`` esté presente, las secuencias de " -"escape en literales de cadena y bytes se interpretan según reglas similares " -"a las usadas por C estándar. Las secuencias de escape reconocidas son:" +"escape en literales de cadena y bytes se interpretan según reglas similares a " +"las usadas por C estándar. Las secuencias de escape reconocidas son:" #: ../Doc/reference/lexical_analysis.rst:558 #: ../Doc/reference/lexical_analysis.rst:591 @@ -1033,7 +1049,7 @@ msgstr "ASCII Sangría vertical (VT)" #: ../Doc/reference/lexical_analysis.rst:582 msgid ":samp:`\\\\\\\\{ooo}`" -msgstr "" +msgstr ":samp:`\\\\\\\\{ooo}`" #: ../Doc/reference/lexical_analysis.rst:582 msgid "Character with octal value *ooo*" @@ -1045,7 +1061,7 @@ msgstr "(2,4)" #: ../Doc/reference/lexical_analysis.rst:585 msgid ":samp:`\\\\x{hh}`" -msgstr "" +msgstr ":samp:`\\\\x{hh}`" #: ../Doc/reference/lexical_analysis.rst:585 msgid "Character with hex value *hh*" @@ -1058,12 +1074,11 @@ msgstr "(3,4)" #: ../Doc/reference/lexical_analysis.rst:588 msgid "Escape sequences only recognized in string literals are:" msgstr "" -"Las secuencias de escape que sólo se reconocen en los literales de cadena " -"son:" +"Las secuencias de escape que sólo se reconocen en los literales de cadena son:" #: ../Doc/reference/lexical_analysis.rst:593 msgid ":samp:`\\\\N\\\\{{name}\\\\}`" -msgstr "" +msgstr ":samp:`\\\\N\\\\{{name}\\\\}`" #: ../Doc/reference/lexical_analysis.rst:593 msgid "Character named *name* in the Unicode database" @@ -1075,7 +1090,7 @@ msgstr "\\(5)" #: ../Doc/reference/lexical_analysis.rst:596 msgid ":samp:`\\\\u{xxxx}`" -msgstr "" +msgstr ":samp:`\\\\u{xxxx}`" #: ../Doc/reference/lexical_analysis.rst:596 msgid "Character with 16-bit hex value *xxxx*" @@ -1086,9 +1101,8 @@ msgid "\\(6)" msgstr "\\(6)" #: ../Doc/reference/lexical_analysis.rst:599 -#, fuzzy msgid ":samp:`\\\\U{xxxxxxxx}`" -msgstr "``\\Uxxxxxxxx``" +msgstr ":samp:`\\\\U{xxxxxxxx}`" #: ../Doc/reference/lexical_analysis.rst:599 msgid "Character with 32-bit hex value *xxxxxxxx*" @@ -1114,12 +1128,14 @@ msgid "" "... backslashes or newline characters.'\n" "'This string will not include backslashes or newline characters.'" msgstr "" +">>> 'Esta cadena no incluirá \\\n" +"... caracteres de barra invertida o nueva linea.'\n" +"'Esta cadena no incluirá caracteres de barra invertida o nueva linea.'" #: ../Doc/reference/lexical_analysis.rst:612 msgid "" -"The same result can be achieved using :ref:`triple-quoted strings " -"`, or parentheses and :ref:`string literal concatenation `." +"The same result can be achieved using :ref:`triple-quoted strings `, " +"or parentheses and :ref:`string literal concatenation `." msgstr "" "Se puede lograr el mismo resultado usando :ref:`triple-quoted strings " "`, o paréntesis y :ref:`string literal concatenation >> f\"abc{a # Es un comentario }\"\n" +"... + 3}\"\n" +"'abc5'" #: ../Doc/reference/lexical_analysis.rst:764 msgid "" @@ -1370,33 +1383,34 @@ msgid "" "formatted string literals due to a problem with the implementation." msgstr "" "Antes de Python 3.7, una expresión :keyword:`await` y comprensiones que " -"contenían una cláusula :keyword:`async for` eran ilegales en las expresiones " -"en literales de cadenas formateadas debido a un problema con la " -"implementación." +"contenían una cláusula :keyword:`async for` eran ilegales en las expresiones en " +"literales de cadenas formateadas debido a un problema con la implementación." #: ../Doc/reference/lexical_analysis.rst:769 msgid "" "Prior to Python 3.12, comments were not allowed inside f-string replacement " "fields." msgstr "" +"Antes de Python 3.12, comentarios no se permitieron dentro de campos de " +"reemplazo de f-string." #: ../Doc/reference/lexical_analysis.rst:773 msgid "" "When the equal sign ``'='`` is provided, the output will have the expression " "text, the ``'='`` and the evaluated value. Spaces after the opening brace " "``'{'``, within the expression and after the ``'='`` are all retained in the " -"output. By default, the ``'='`` causes the :func:`repr` of the expression to " -"be provided, unless there is a format specified. When a format is specified " -"it defaults to the :func:`str` of the expression unless a conversion ``'!" -"r'`` is declared." +"output. By default, the ``'='`` causes the :func:`repr` of the expression to be " +"provided, unless there is a format specified. When a format is specified it " +"defaults to the :func:`str` of the expression unless a conversion ``'!r'`` is " +"declared." msgstr "" "Cuando se proporciona el signo igual ``'='``, la salida tendrá el texto de " -"expresión, el ``'='`` y el valor evaluado. Los espacios después de la llave " -"de apertura ``'{'``, dentro de la expresión y después de ``'='`` se " -"conservan en la salida. Por defecto, el ``'='`` hace que se proporcione :" -"func:`repr` de la expresión, a menos que haya un formato especificado. " -"Cuando se especifica un formato, el valor predeterminado es :func:`str` de " -"la expresión a menos que se declare una conversión ``'!r'``." +"expresión, el ``'='`` y el valor evaluado. Los espacios después de la llave de " +"apertura ``'{'``, dentro de la expresión y después de ``'='`` se conservan en " +"la salida. Por defecto, el ``'='`` hace que se proporcione :func:`repr` de la " +"expresión, a menos que haya un formato especificado. Cuando se especifica un " +"formato, el valor predeterminado es :func:`str` de la expresión a menos que se " +"declare una conversión ``'!r'``." #: ../Doc/reference/lexical_analysis.rst:781 msgid "The equal sign ``'='``." @@ -1408,48 +1422,45 @@ msgid "" "converted before formatting. Conversion ``'!s'`` calls :func:`str` on the " "result, ``'!r'`` calls :func:`repr`, and ``'!a'`` calls :func:`ascii`." msgstr "" -"Si se especifica una conversión, el resultado de la evaluación de la " -"expresión se convierte antes del formateo. La conversión ```!s'`` llama :" -"func:`str` al resultado, ```!r'`` llama :func:`repr`, y ```!a'`` llama :func:" -"`ascii`." +"Si se especifica una conversión, el resultado de la evaluación de la expresión " +"se convierte antes del formateo. La conversión ```!s'`` llama :func:`str` al " +"resultado, ```!r'`` llama :func:`repr`, y ```!a'`` llama :func:`ascii`." #: ../Doc/reference/lexical_analysis.rst:788 -#, fuzzy msgid "" "The result is then formatted using the :func:`format` protocol. The format " -"specifier is passed to the :meth:`~object.__format__` method of the " -"expression or conversion result. An empty string is passed when the format " -"specifier is omitted. The formatted result is then included in the final " -"value of the whole string." +"specifier is passed to the :meth:`~object.__format__` method of the expression " +"or conversion result. An empty string is passed when the format specifier is " +"omitted. The formatted result is then included in the final value of the whole " +"string." msgstr "" -"El resultado es entonces formateado usando el protocolo :func:`format`. El " -"especificador de formato se pasa al método :meth:`__format__` del resultado " -"de la expresión o conversión. Se pasa una cadena vacía cuando se omite el " -"especificador de formato. El resultado formateado se incluye entonces en el " -"valor final de toda la cadena." +"El resultado es entonces formateado usando el protocolo :func:`format`. El " +"especificador de formato se pasa al método :meth:`__format__` del resultado de " +"la expresión o conversión. Se pasa una cadena de caracteres vacía cuando se " +"omite el especificador de formato. El resultado formateado se incluye entonces " +"en el valor final de toda la cadena de caracteres." #: ../Doc/reference/lexical_analysis.rst:794 msgid "" -"Top-level format specifiers may include nested replacement fields. These " -"nested fields may include their own conversion fields and :ref:`format " -"specifiers `, but may not include more deeply nested replacement " -"fields. The :ref:`format specifier mini-language ` is the same " -"as that used by the :meth:`str.format` method." +"Top-level format specifiers may include nested replacement fields. These nested " +"fields may include their own conversion fields and :ref:`format specifiers " +"`, but may not include more deeply nested replacement fields. The :" +"ref:`format specifier mini-language ` is the same as that used by " +"the :meth:`str.format` method." msgstr "" "Los especificadores de formato de nivel superior pueden incluir campos de " -"reemplazo anidados. Estos campos anidados pueden incluir sus propios campos " -"de conversión y :ref:`format specifiers `, pero no pueden " -"incluir campos de reemplazo anidados más profundos. El :ref:`format " -"specifier mini-language ` es el mismo que usa el método :meth:" -"`str.format`." +"reemplazo anidados. Estos campos anidados pueden incluir sus propios campos de " +"conversión y :ref:`format specifiers `, pero no pueden incluir " +"campos de reemplazo anidados más profundos. El :ref:`format specifier mini-" +"language ` es el mismo que usa el método :meth:`str.format`." #: ../Doc/reference/lexical_analysis.rst:800 msgid "" -"Formatted string literals may be concatenated, but replacement fields cannot " -"be split across literals." +"Formatted string literals may be concatenated, but replacement fields cannot be " +"split across literals." msgstr "" -"Los literales de cadena formateados pueden ser concatenados, pero los campos " -"de reemplazo no pueden ser divididos entre los literales." +"Los literales de cadena formateados pueden ser concatenados, pero los campos de " +"reemplazo no pueden ser divididos entre los literales." #: ../Doc/reference/lexical_analysis.rst:803 msgid "Some examples of formatted string literals::" @@ -1487,12 +1498,42 @@ msgid "" ">>> f\"{line = !r:20}\"\n" "'line = \"The mill\\'s closed\" '" msgstr "" +">>> name = \"Fred\"\n" +">>> f\"He said his name is {name!r}.\"\n" +"\"He said his name is 'Fred'.\"\n" +">>> f\"He said his name is {repr(name)}.\" # repr() es equivalente a !r\n" +"\"He said his name is 'Fred'.\"\n" +">>> width = 10\n" +">>> precision = 4\n" +">>> value = decimal.Decimal(\"12.34567\")\n" +">>> f\"result: {value:{width}.{precision}}\" # campos anidados\n" +"'result: 12.35'\n" +">>> today = datetime(year=2017, month=1, day=27)\n" +">>> f\"{today:%B %d, %Y}\" # utilizando el especificador de formato de fecha\n" +"'January 27, 2017'\n" +">>> f\"{today=:%B %d, %Y}\" # utilizando el especificador de formato de fecha y purificación\n" +"'today=January 27, 2017'\n" +">>> number = 1024\n" +">>> f\"{number:#0x}\" # utilizando el especificador de formato de números enteros\n" +"'0x400'\n" +">>> foo = \"bar\"\n" +">>> f\"{ foo = }\" # conserva espacios en blanco\n" +"\" foo = 'bar'\"\n" +">>> line = \"The mill's closed\"\n" +">>> f\"{line = }\"\n" +"'line = \"The mill\\'s closed\"'\n" +">>> f\"{line = :20}\"\n" +"\"line = The mill's closed \"\n" +">>> f\"{line = !r:20}\"\n" +"'line = \"The mill\\'s closed\" '" #: ../Doc/reference/lexical_analysis.rst:835 msgid "" "Reusing the outer f-string quoting type inside a replacement field is " "permitted::" msgstr "" +"Se puede reutilizar el tipo de comilla del f-string exterior dentro de un campo " +"de reemplazo::" #: ../Doc/reference/lexical_analysis.rst:838 msgid "" @@ -1500,18 +1541,25 @@ msgid "" ">>> f\"abc {a[\"x\"]} def\"\n" "'abc 2 def'" msgstr "" +">>> a = dict(x=2)\n" +">>> f\"abc {a[\"x\"]} def\"\n" +"'abc 2 def'" #: ../Doc/reference/lexical_analysis.rst:842 msgid "" "Prior to Python 3.12, reuse of the same quoting type of the outer f-string " "inside a replacement field was not possible." msgstr "" +"Antes de Python 3.12, no era posible reutilizar el mismo tipo de comilla del f-" +"string exterior dentro de un campo de reemplazo." #: ../Doc/reference/lexical_analysis.rst:846 msgid "" -"Backslashes are also allowed in replacement fields and are evaluated the " -"same way as in any other context::" +"Backslashes are also allowed in replacement fields and are evaluated the same " +"way as in any other context::" msgstr "" +"También se permiten barras invertidas en campos de reemplazo y se evalúan de la " +"misma manera que cualquier otro contexto::" #: ../Doc/reference/lexical_analysis.rst:849 msgid "" @@ -1522,12 +1570,20 @@ msgid "" "b\n" "c" msgstr "" +">>> a = [\"a\", \"b\", \"c\"]\n" +">>> print(f\"Lista a contiene:\\n{\"\\n\".join(a)}\")\n" +"Lista a contiene:\n" +"a\n" +"b\n" +"c" #: ../Doc/reference/lexical_analysis.rst:856 msgid "" "Prior to Python 3.12, backslashes were not permitted inside an f-string " "replacement field." msgstr "" +"Antes de Python 3.12, no se permitieron dentro de una campo de reemplazo f-" +"string." #: ../Doc/reference/lexical_analysis.rst:860 msgid "" @@ -1545,11 +1601,16 @@ msgid "" ">>> foo.__doc__ is None\n" "True" msgstr "" +">>> def foo():\n" +"... f\"Not a docstring\"\n" +"...\n" +">>> foo.__doc__ is None\n" +"True" #: ../Doc/reference/lexical_analysis.rst:871 msgid "" -"See also :pep:`498` for the proposal that added formatted string literals, " -"and :meth:`str.format`, which uses a related format string mechanism." +"See also :pep:`498` for the proposal that added formatted string literals, and :" +"meth:`str.format`, which uses a related format string mechanism." msgstr "" "Ver también :pep:`498` para la propuesta que añadió literales de cadenas " "formateados, y :meth:`str.format`, que utiliza un mecanismo de cadenas " @@ -1560,11 +1621,10 @@ msgid "Numeric literals" msgstr "Literales numéricos" #: ../Doc/reference/lexical_analysis.rst:884 -#, fuzzy msgid "" "There are three types of numeric literals: integers, floating-point numbers, " -"and imaginary numbers. There are no complex literals (complex numbers can " -"be formed by adding a real number and an imaginary number)." +"and imaginary numbers. There are no complex literals (complex numbers can be " +"formed by adding a real number and an imaginary number)." msgstr "" "Hay tres tipos de literales numéricos: números enteros, números de punto " "flotante y números imaginarios. No hay literales complejos (los números " @@ -1573,12 +1633,12 @@ msgstr "" #: ../Doc/reference/lexical_analysis.rst:888 msgid "" "Note that numeric literals do not include a sign; a phrase like ``-1`` is " -"actually an expression composed of the unary operator '``-``' and the " -"literal ``1``." +"actually an expression composed of the unary operator '``-``' and the literal " +"``1``." msgstr "" -"Nótese que los literales numéricos no incluyen un signo; una frase como " -"``-1`` es en realidad una expresión compuesta por el operador unario '``-``' " -"y el literal ``1``." +"Nótese que los literales numéricos no incluyen un signo; una frase como ``-1`` " +"es en realidad una expresión compuesta por el operador unario '``-``' y el " +"literal ``1``." #: ../Doc/reference/lexical_analysis.rst:902 msgid "Integer literals" @@ -1587,8 +1647,7 @@ msgstr "Literales enteros" #: ../Doc/reference/lexical_analysis.rst:904 msgid "Integer literals are described by the following lexical definitions:" msgstr "" -"Los literales enteros se describen mediante las siguientes definiciones " -"léxicas:" +"Los literales enteros se describen mediante las siguientes definiciones léxicas:" #: ../Doc/reference/lexical_analysis.rst:918 msgid "" @@ -1600,24 +1659,24 @@ msgstr "" #: ../Doc/reference/lexical_analysis.rst:921 msgid "" -"Underscores are ignored for determining the numeric value of the literal. " -"They can be used to group digits for enhanced readability. One underscore " -"can occur between digits, and after base specifiers like ``0x``." +"Underscores are ignored for determining the numeric value of the literal. They " +"can be used to group digits for enhanced readability. One underscore can occur " +"between digits, and after base specifiers like ``0x``." msgstr "" -"Los guiones bajos se ignoran para determinar el valor numérico del literal. " -"Se pueden utilizar para agrupar los dígitos para mejorar la legibilidad. Un " -"guión bajo puede ocurrir entre dígitos y después de especificadores de base " -"como ``0x``." +"Los guiones bajos se ignoran para determinar el valor numérico del literal. Se " +"pueden utilizar para agrupar los dígitos para mejorar la legibilidad. Un guión " +"bajo puede ocurrir entre dígitos y después de especificadores de base como " +"``0x``." #: ../Doc/reference/lexical_analysis.rst:925 msgid "" -"Note that leading zeros in a non-zero decimal number are not allowed. This " -"is for disambiguation with C-style octal literals, which Python used before " +"Note that leading zeros in a non-zero decimal number are not allowed. This is " +"for disambiguation with C-style octal literals, which Python used before " "version 3.0." msgstr "" -"Nótese que no se permiten los ceros a la izquierda en un número decimal que " -"no sea cero. Esto es para desambiguar con los literales octales de estilo C, " -"que Python usaba antes de la versión 3.0." +"Nótese que no se permiten los ceros a la izquierda en un número decimal que no " +"sea cero. Esto es para desambiguar con los literales octales de estilo C, que " +"Python usaba antes de la versión 3.0." #: ../Doc/reference/lexical_analysis.rst:929 msgid "Some examples of integer literals::" @@ -1629,6 +1688,9 @@ msgid "" "3 79228162514264337593543950336 0o377 0xdeadbeef\n" " 100_000_000_000 0b_1110_0101" msgstr "" +"7 2147483647 0o177 0b100110111\n" +"3 79228162514264337593543950336 0o377 0xdeadbeef\n" +" 100_000_000_000 0b_1110_0101" #: ../Doc/reference/lexical_analysis.rst:935 #: ../Doc/reference/lexical_analysis.rst:967 @@ -1636,12 +1698,10 @@ msgid "Underscores are now allowed for grouping purposes in literals." msgstr "Los guiones bajos están ahora permitidos para agrupar en literales." #: ../Doc/reference/lexical_analysis.rst:946 -#, fuzzy msgid "Floating-point literals" msgstr "Literales de punto flotante" #: ../Doc/reference/lexical_analysis.rst:948 -#, fuzzy msgid "" "Floating-point literals are described by the following lexical definitions:" msgstr "" @@ -1649,28 +1709,25 @@ msgstr "" "léxicas:" #: ../Doc/reference/lexical_analysis.rst:958 -#, fuzzy msgid "" -"Note that the integer and exponent parts are always interpreted using radix " -"10. For example, ``077e010`` is legal, and denotes the same number as " -"``77e10``. The allowed range of floating-point literals is implementation-" -"dependent. As in integer literals, underscores are supported for digit " -"grouping." +"Note that the integer and exponent parts are always interpreted using radix 10. " +"For example, ``077e010`` is legal, and denotes the same number as ``77e10``. " +"The allowed range of floating-point literals is implementation-dependent. As " +"in integer literals, underscores are supported for digit grouping." msgstr "" "Nótese que las partes enteras y exponentes siempre se interpretan usando el " "radix 10. Por ejemplo, ``077e010`` es legal, y denota el mismo número que " -"``77e10``. El rango permitido de los literales de punto flotante depende de " -"la implementación. Al igual que en los literales enteros, se admiten " -"guiones bajos para la agrupación de dígitos." +"``77e10``. El rango permitido de los literales de punto flotante depende de la " +"implementación. Al igual que en los literales enteros, se admiten guiones " +"bajos para la agrupación de dígitos." #: ../Doc/reference/lexical_analysis.rst:963 -#, fuzzy msgid "Some examples of floating-point literals::" msgstr "Algunos ejemplos de literales de punto flotante::" #: ../Doc/reference/lexical_analysis.rst:965 msgid "3.14 10. .001 1e100 3.14e-10 0e0 3.14_15_93" -msgstr "" +msgstr "3.14 10. .001 1e100 3.14e-10 0e0 3.14_15_93" #: ../Doc/reference/lexical_analysis.rst:976 msgid "Imaginary literals" @@ -1679,27 +1736,25 @@ msgstr "Literales imaginarios" #: ../Doc/reference/lexical_analysis.rst:978 msgid "Imaginary literals are described by the following lexical definitions:" msgstr "" -"Los literales imaginarios se describen en las siguientes definiciones " -"léxicas:" +"Los literales imaginarios se describen en las siguientes definiciones léxicas:" #: ../Doc/reference/lexical_analysis.rst:983 -#, fuzzy msgid "" -"An imaginary literal yields a complex number with a real part of 0.0. " -"Complex numbers are represented as a pair of floating-point numbers and have " -"the same restrictions on their range. To create a complex number with a " -"nonzero real part, add a floating-point number to it, e.g., ``(3+4j)``. " -"Some examples of imaginary literals::" +"An imaginary literal yields a complex number with a real part of 0.0. Complex " +"numbers are represented as a pair of floating-point numbers and have the same " +"restrictions on their range. To create a complex number with a nonzero real " +"part, add a floating-point number to it, e.g., ``(3+4j)``. Some examples of " +"imaginary literals::" msgstr "" "Un literal imaginario da un número complejo con una parte real de 0.0. Los " "números complejos se representan como un par de números de punto flotante y " -"tienen las mismas restricciones en su rango. Para crear un número complejo " -"con una parte real distinta de cero, añada un número de punto flotante, por " +"tienen las mismas restricciones en su rango. Para crear un número complejo con " +"una parte real distinta de cero, añada un número de punto flotante, por " "ejemplo, ``(3+4j)``. Algunos ejemplos de literales imaginarios::" #: ../Doc/reference/lexical_analysis.rst:989 msgid "3.14j 10.j 10j .001j 1e100j 3.14e-10j 3.14_15_93j" -msgstr "" +msgstr "3.14j 10.j 10j .001j 1e100j 3.14e-10j 3.14_15_93j" #: ../Doc/reference/lexical_analysis.rst:995 msgid "Operators" @@ -1715,6 +1770,9 @@ msgid "" "<< >> & | ^ ~ :=\n" "< > <= >= == !=" msgstr "" +"+ - * ** / // % @\n" +"<< >> & | ^ ~ :=\n" +"< > <= >= == !=" #: ../Doc/reference/lexical_analysis.rst:1012 msgid "Delimiters" @@ -1731,24 +1789,28 @@ msgid "" "-> += -= *= /= //= %=\n" "@= &= |= ^= >>= <<= **=" msgstr "" +"( ) [ ] { }\n" +", : ! . ; @ =\n" +"-> += -= *= /= //= %=\n" +"@= &= |= ^= >>= <<= **=" #: ../Doc/reference/lexical_analysis.rst:1025 msgid "" -"The period can also occur in floating-point and imaginary literals. A " -"sequence of three periods has a special meaning as an ellipsis literal. The " -"second half of the list, the augmented assignment operators, serve lexically " -"as delimiters, but also perform an operation." +"The period can also occur in floating-point and imaginary literals. A sequence " +"of three periods has a special meaning as an ellipsis literal. The second half " +"of the list, the augmented assignment operators, serve lexically as delimiters, " +"but also perform an operation." msgstr "" "El punto también puede ocurrir en los literales de punto flotante e " -"imaginarios. Una secuencia de tres períodos tiene un significado especial " -"como un literal de elipsis. La segunda mitad de la lista, los operadores de " +"imaginarios. Una secuencia de tres períodos tiene un significado especial como " +"un literal de elipsis. La segunda mitad de la lista, los operadores de " "asignación aumentada, sirven léxicamente como delimitadores, pero también " "realizan una operación." #: ../Doc/reference/lexical_analysis.rst:1030 msgid "" -"The following printing ASCII characters have special meaning as part of " -"other tokens or are otherwise significant to the lexical analyzer:" +"The following printing ASCII characters have special meaning as part of other " +"tokens or are otherwise significant to the lexical analyzer:" msgstr "" "Los siguientes caracteres ASCII de impresión tienen un significado especial " "como parte de otros tokens o son de alguna manera significativos para el " @@ -1756,7 +1818,7 @@ msgstr "" #: ../Doc/reference/lexical_analysis.rst:1033 msgid "' \" # \\" -msgstr "" +msgstr "' \" # \\" #: ../Doc/reference/lexical_analysis.rst:1037 msgid "" @@ -1769,479 +1831,436 @@ msgstr "" #: ../Doc/reference/lexical_analysis.rst:1040 msgid "$ ? `" -msgstr "" +msgstr "$ ? `" #: ../Doc/reference/lexical_analysis.rst:1046 msgid "Footnotes" msgstr "Notas al pie de página" #: ../Doc/reference/lexical_analysis.rst:1047 -#, fuzzy msgid "https://www.unicode.org/Public/15.1.0/ucd/NameAliases.txt" -msgstr "https://www.unicode.org/Public/11.0.0/ucd/NameAliases.txt" +msgstr "https://www.unicode.org/Public/15.1.0/ucd/NameAliases.txt" #: ../Doc/reference/lexical_analysis.rst:8 -#, fuzzy msgid "lexical analysis" -msgstr "Análisis léxico" +msgstr "análisis léxico" #: ../Doc/reference/lexical_analysis.rst:8 msgid "parser" -msgstr "" +msgstr "analizador" #: ../Doc/reference/lexical_analysis.rst:8 msgid "token" -msgstr "" +msgstr "token" #: ../Doc/reference/lexical_analysis.rst:25 -#, fuzzy msgid "line structure" -msgstr "Estructura de línea" +msgstr "estructura de línea" #: ../Doc/reference/lexical_analysis.rst:35 -#, fuzzy msgid "logical line" -msgstr "Líneas lógicas" +msgstr "líneas lógica" #: ../Doc/reference/lexical_analysis.rst:35 #: ../Doc/reference/lexical_analysis.rst:114 #: ../Doc/reference/lexical_analysis.rst:532 -#, fuzzy msgid "physical line" -msgstr "Líneas físicas" +msgstr "línea física" #: ../Doc/reference/lexical_analysis.rst:35 #: ../Doc/reference/lexical_analysis.rst:114 -#, fuzzy msgid "line joining" -msgstr "Unión implícita de líneas" +msgstr "unión de líneas" #: ../Doc/reference/lexical_analysis.rst:35 msgid "NEWLINE token" -msgstr "" +msgstr "NEWLINE token" #: ../Doc/reference/lexical_analysis.rst:67 -#, fuzzy msgid "comment" -msgstr "Comentarios" +msgstr "comentario" #: ../Doc/reference/lexical_analysis.rst:67 msgid "hash character" -msgstr "" +msgstr "carácter hash" #: ../Doc/reference/lexical_analysis.rst:67 #: ../Doc/reference/lexical_analysis.rst:81 msgid "# (hash)" -msgstr "" +msgstr "# (hash)" #: ../Doc/reference/lexical_analysis.rst:81 msgid "source character set" -msgstr "" +msgstr "conjuntos de caracteres fuente" #: ../Doc/reference/lexical_analysis.rst:81 -#, fuzzy msgid "encoding declarations (source file)" -msgstr "Declaración de Codificación" +msgstr "declaraciones de codificación (archivo de origen)" #: ../Doc/reference/lexical_analysis.rst:81 -#, fuzzy msgid "source encoding declaration" -msgstr "Declaración de Codificación" +msgstr "declaración de codificación de archivo de origen" #: ../Doc/reference/lexical_analysis.rst:114 -#, fuzzy msgid "line continuation" -msgstr "Sangría" +msgstr "continuación de linea" #: ../Doc/reference/lexical_analysis.rst:114 msgid "backslash character" -msgstr "" +msgstr "carácter barra invertida" #: ../Doc/reference/lexical_analysis.rst:159 -#, fuzzy msgid "blank line" -msgstr "Líneas en blanco" +msgstr "línea en blanco" #: ../Doc/reference/lexical_analysis.rst:174 -#, fuzzy msgid "indentation" -msgstr "Sangría" +msgstr "sangría" #: ../Doc/reference/lexical_analysis.rst:174 msgid "leading whitespace" -msgstr "" +msgstr "espacios en blanco del comienzo" #: ../Doc/reference/lexical_analysis.rst:174 msgid "space" -msgstr "" +msgstr "espacio" #: ../Doc/reference/lexical_analysis.rst:174 msgid "tab" -msgstr "" +msgstr "tabulador" #: ../Doc/reference/lexical_analysis.rst:174 msgid "grouping" -msgstr "" +msgstr "agrupación" #: ../Doc/reference/lexical_analysis.rst:174 msgid "statement grouping" -msgstr "" +msgstr "agrupación de declaraciones" #: ../Doc/reference/lexical_analysis.rst:202 -#, fuzzy msgid "INDENT token" -msgstr "Sangría" +msgstr "INDENT token" #: ../Doc/reference/lexical_analysis.rst:202 -#, fuzzy msgid "DEDENT token" -msgstr "Sangría" +msgstr "DEDENT token" #: ../Doc/reference/lexical_analysis.rst:277 -#, fuzzy msgid "identifier" -msgstr "Delimitadores" +msgstr "identificadores" #: ../Doc/reference/lexical_analysis.rst:277 msgid "name" -msgstr "" +msgstr "nombre" #: ../Doc/reference/lexical_analysis.rst:334 #: ../Doc/reference/lexical_analysis.rst:358 -#, fuzzy msgid "keyword" -msgstr "Palabras clave" +msgstr "palabra clave" #: ../Doc/reference/lexical_analysis.rst:334 msgid "reserved word" -msgstr "" +msgstr "palabra reservada" #: ../Doc/reference/lexical_analysis.rst:358 -#, fuzzy msgid "soft keyword" -msgstr "Palabras clave suaves" +msgstr "palabra clave suave" #: ../Doc/reference/lexical_analysis.rst:377 msgid "_, identifiers" -msgstr "" +msgstr "_, identificadores" #: ../Doc/reference/lexical_analysis.rst:377 msgid "__, identifiers" -msgstr "" +msgstr "__, identificadores" #: ../Doc/reference/lexical_analysis.rst:433 -#, fuzzy msgid "literal" -msgstr "Literales" +msgstr "literal" #: ../Doc/reference/lexical_analysis.rst:433 msgid "constant" -msgstr "" +msgstr "constante" #: ../Doc/reference/lexical_analysis.rst:438 #: ../Doc/reference/lexical_analysis.rst:479 -#, fuzzy msgid "string literal" -msgstr "Literales enteros" +msgstr "literal de cadena de caracteres" #: ../Doc/reference/lexical_analysis.rst:438 #: ../Doc/reference/lexical_analysis.rst:492 -#, fuzzy msgid "bytes literal" -msgstr "Literales enteros" +msgstr "literal bytes" #: ../Doc/reference/lexical_analysis.rst:438 msgid "ASCII" -msgstr "" +msgstr "ASCII" #: ../Doc/reference/lexical_analysis.rst:438 -#, fuzzy msgid "' (single quote)" -msgstr "Comilla simple (``'``)" +msgstr "' (comilla simple)" #: ../Doc/reference/lexical_analysis.rst:438 -#, fuzzy msgid "\" (double quote)" -msgstr "Comilla doble (``\"``)" +msgstr "\" (comilla doble)" #: ../Doc/reference/lexical_analysis.rst:438 msgid "u'" -msgstr "" +msgstr "u'" #: ../Doc/reference/lexical_analysis.rst:438 msgid "u\"" -msgstr "" +msgstr "u\"" #: ../Doc/reference/lexical_analysis.rst:479 msgid "triple-quoted string" -msgstr "" +msgstr "cadena de caracteres con tres comillas" #: ../Doc/reference/lexical_analysis.rst:479 msgid "Unicode Consortium" -msgstr "" +msgstr "Consorcio de Unicode" #: ../Doc/reference/lexical_analysis.rst:479 msgid "raw string" -msgstr "" +msgstr "cadena sin formato" #: ../Doc/reference/lexical_analysis.rst:479 msgid "\"\"\"" -msgstr "" +msgstr "\"\"\"" #: ../Doc/reference/lexical_analysis.rst:479 msgid "'''" -msgstr "" +msgstr "'''" #: ../Doc/reference/lexical_analysis.rst:492 msgid "b'" -msgstr "" +msgstr "b'" #: ../Doc/reference/lexical_analysis.rst:492 msgid "b\"" -msgstr "" +msgstr "b\"" #: ../Doc/reference/lexical_analysis.rst:501 msgid "r'" -msgstr "" +msgstr "r'" #: ../Doc/reference/lexical_analysis.rst:501 -#, fuzzy msgid "raw string literal" -msgstr "Literales de cadena formateados" +msgstr "literal de cadena de caracteres sin formato" #: ../Doc/reference/lexical_analysis.rst:501 msgid "r\"" -msgstr "" +msgstr "r\"" #: ../Doc/reference/lexical_analysis.rst:519 msgid "f'" -msgstr "" +msgstr "f'" #: ../Doc/reference/lexical_analysis.rst:519 #: ../Doc/reference/lexical_analysis.rst:697 -#, fuzzy msgid "formatted string literal" -msgstr "Literales de cadena formateados" +msgstr "literal de cadena de caracteres formateados" #: ../Doc/reference/lexical_analysis.rst:519 msgid "f\"" -msgstr "" +msgstr "f\"" #: ../Doc/reference/lexical_analysis.rst:532 -#, fuzzy msgid "escape sequence" -msgstr "Secuencia de escape" +msgstr "secuencia de escape" #: ../Doc/reference/lexical_analysis.rst:532 msgid "Standard C" -msgstr "" +msgstr "C Estándar" #: ../Doc/reference/lexical_analysis.rst:532 msgid "C" -msgstr "" +msgstr "C" #: ../Doc/reference/lexical_analysis.rst:532 -#, fuzzy msgid "\\ (backslash)" -msgstr "Barra inversa (``\\``)" +msgstr "\\ (barra inversa)" #: ../Doc/reference/lexical_analysis.rst:532 msgid "\\\\" -msgstr "" +msgstr "\\\\" #: ../Doc/reference/lexical_analysis.rst:532 msgid "\\a" -msgstr "" +msgstr "\\a" #: ../Doc/reference/lexical_analysis.rst:532 msgid "\\b" -msgstr "" +msgstr "\\b" #: ../Doc/reference/lexical_analysis.rst:532 msgid "\\f" -msgstr "" +msgstr "\\f" #: ../Doc/reference/lexical_analysis.rst:532 msgid "\\n" -msgstr "" +msgstr "\\n" #: ../Doc/reference/lexical_analysis.rst:532 msgid "\\r" -msgstr "" +msgstr "\\r" #: ../Doc/reference/lexical_analysis.rst:532 msgid "\\t" -msgstr "" +msgstr "\\t" #: ../Doc/reference/lexical_analysis.rst:532 msgid "\\v" -msgstr "" +msgstr "\\v" #: ../Doc/reference/lexical_analysis.rst:532 msgid "\\x" -msgstr "" +msgstr "\\x" #: ../Doc/reference/lexical_analysis.rst:532 msgid "\\N" -msgstr "" +msgstr "\\N" #: ../Doc/reference/lexical_analysis.rst:532 msgid "\\u" -msgstr "" +msgstr "\\u" #: ../Doc/reference/lexical_analysis.rst:532 msgid "\\U" -msgstr "" +msgstr "\\U" #: ../Doc/reference/lexical_analysis.rst:648 -#, fuzzy msgid "unrecognized escape sequence" -msgstr "Secuencia de escape" +msgstr "secuencia de escape no reconocido" #: ../Doc/reference/lexical_analysis.rst:697 -#, fuzzy msgid "interpolated string literal" -msgstr "Literales de cadena formateados" +msgstr "literal de cadena de caracteres interpolado" #: ../Doc/reference/lexical_analysis.rst:697 msgid "string" -msgstr "" +msgstr "cadena de caracteres" #: ../Doc/reference/lexical_analysis.rst:697 -#, fuzzy msgid "formatted literal" -msgstr "Literales de cadena formateados" +msgstr "literal formateado" #: ../Doc/reference/lexical_analysis.rst:697 -#, fuzzy msgid "interpolated literal" -msgstr "Literales enteros" +msgstr "literal interpolado" #: ../Doc/reference/lexical_analysis.rst:697 msgid "f-string" -msgstr "" +msgstr "f-string" #: ../Doc/reference/lexical_analysis.rst:697 msgid "fstring" -msgstr "" +msgstr "fstring" #: ../Doc/reference/lexical_analysis.rst:697 msgid "{} (curly brackets)" -msgstr "" +msgstr "{} (llaves)" #: ../Doc/reference/lexical_analysis.rst:697 -#, fuzzy msgid "in formatted string literal" -msgstr "Literales de cadena formateados" +msgstr "en literal de cadena de caracteres formateados" #: ../Doc/reference/lexical_analysis.rst:697 msgid "! (exclamation)" -msgstr "" +msgstr "! (exclamación)" #: ../Doc/reference/lexical_analysis.rst:697 msgid ": (colon)" -msgstr "" +msgstr ": (dos puntos)" #: ../Doc/reference/lexical_analysis.rst:697 msgid "= (equals)" -msgstr "" +msgstr "= (signo igual)" #: ../Doc/reference/lexical_analysis.rst:697 -#, fuzzy msgid "for help in debugging using string literals" -msgstr "Literales de cadena formateados" +msgstr "para ayuda en la depuración usando literales de cadena" #: ../Doc/reference/lexical_analysis.rst:880 msgid "number" -msgstr "" +msgstr "numero" #: ../Doc/reference/lexical_analysis.rst:880 -#, fuzzy msgid "numeric literal" -msgstr "Literales numéricos" +msgstr "literal numérico" #: ../Doc/reference/lexical_analysis.rst:880 #: ../Doc/reference/lexical_analysis.rst:893 -#, fuzzy msgid "integer literal" -msgstr "Literales enteros" +msgstr "literal numero entero" #: ../Doc/reference/lexical_analysis.rst:880 -#, fuzzy msgid "floating-point literal" -msgstr "Literales de punto flotante" +msgstr "literales de punto flotante" #: ../Doc/reference/lexical_analysis.rst:880 msgid "hexadecimal literal" -msgstr "" +msgstr "literal hexadecimal" #: ../Doc/reference/lexical_analysis.rst:880 -#, fuzzy msgid "octal literal" -msgstr "Literales" +msgstr "literal octal" #: ../Doc/reference/lexical_analysis.rst:880 -#, fuzzy msgid "binary literal" -msgstr "Literales imaginarios" +msgstr "literal binario" #: ../Doc/reference/lexical_analysis.rst:880 -#, fuzzy msgid "decimal literal" -msgstr "Literales imaginarios" +msgstr "literal decimal" #: ../Doc/reference/lexical_analysis.rst:880 -#, fuzzy msgid "imaginary literal" -msgstr "Literales imaginarios" +msgstr "literal imaginario" #: ../Doc/reference/lexical_analysis.rst:880 -#, fuzzy msgid "complex literal" -msgstr "Literales numéricos" +msgstr "literal complejo" #: ../Doc/reference/lexical_analysis.rst:893 msgid "0b" -msgstr "" +msgstr "0b" #: ../Doc/reference/lexical_analysis.rst:893 msgid "0o" -msgstr "" +msgstr "0o" #: ../Doc/reference/lexical_analysis.rst:893 msgid "0x" -msgstr "" +msgstr "0x" #: ../Doc/reference/lexical_analysis.rst:893 #: ../Doc/reference/lexical_analysis.rst:939 msgid "_ (underscore)" -msgstr "" +msgstr "_ (guión bajo)" #: ../Doc/reference/lexical_analysis.rst:893 #: ../Doc/reference/lexical_analysis.rst:939 #: ../Doc/reference/lexical_analysis.rst:971 -#, fuzzy msgid "in numeric literal" -msgstr "Literales numéricos" +msgstr "en literal numérico" #: ../Doc/reference/lexical_analysis.rst:939 msgid ". (dot)" -msgstr "" +msgstr ". (punto)" #: ../Doc/reference/lexical_analysis.rst:939 msgid "e" -msgstr "" +msgstr "e" #: ../Doc/reference/lexical_analysis.rst:971 msgid "j" -msgstr "" +msgstr "j" #: ../Doc/reference/lexical_analysis.rst:997 -#, fuzzy msgid "operators" -msgstr "Operadores" +msgstr "operadores" #: ../Doc/reference/lexical_analysis.rst:1014 -#, fuzzy msgid "delimiters" -msgstr "Delimitadores" +msgstr "delimitadores" From a3b014697e331a76a88b4d17cdc0c55d0f5704f5 Mon Sep 17 00:00:00 2001 From: rtobar Date: Thu, 2 Jan 2025 23:24:47 +0800 Subject: [PATCH 07/78] Actualiza a sphinx-autorun >= 2.0.0 (#3355) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Esta última versión incluye dos correcciones importantes: 1) la extensión ahora declara que sphinx puede llevar a cabo la lectura de los archivos .rst en paralelo (https://github.com/WhyNotHugo/sphinx-autorun/pull/63), y 2) elimina unos RuntimeWarnings producto de un mal uso de la opción bufsize al crear objetos Popen (https://github.com/WhyNotHugo/sphinx-autorun/pull/65). El primero de los problemas conllevaba a que nosotros tuviéramos que realizar manualmente el registro del plug-in, en vez de simplemente declararlo en "extensions". El segundo problema nos llevó a fijar un filtro con PYTHONWARNINGS con el cual se ignoraban todos los RuntimeWarning. Con esta última versión de sphinx-autorun, ambas soluciones parches ya no son necesarias. Signed-off-by: Rodrigo Tobar --- .github/workflows/main.yml | 3 +-- Makefile | 2 +- conf.py | 20 +------------------- requirements-own.txt | 2 +- 4 files changed, 4 insertions(+), 23 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 1093b11c6a..1c519fb344 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -91,5 +91,4 @@ jobs: # Construcción de la documentación - name: Construir documentación run: | - # Normal build - PYTHONWARNINGS=ignore::FutureWarning,ignore::RuntimeWarning sphinx-build -j auto -W --keep-going -b html -d cpython/Doc/_build/doctree -D language=es . cpython/Doc/_build/html + sphinx-build -j auto -W --keep-going -b html -d cpython/Doc/_build/doctree -D language=es . cpython/Doc/_build/html diff --git a/Makefile b/Makefile index f51cdfd31d..f6e011c7b4 100644 --- a/Makefile +++ b/Makefile @@ -44,7 +44,7 @@ build: setup do_build .PHONY: do_build do_build: # Normal build - PYTHONWARNINGS=ignore::FutureWarning,ignore::RuntimeWarning $(VENV)/bin/sphinx-build -j $(SPHINX_JOBS) -W --keep-going -b html -d $(OUTPUT_DOCTREE) -D language=$(LANGUAGE) . $(OUTPUT_HTML) && \ + $(VENV)/bin/sphinx-build -j $(SPHINX_JOBS) -W --keep-going -b html -d $(OUTPUT_DOCTREE) -D language=$(LANGUAGE) . $(OUTPUT_HTML) && \ echo "Success! Open file://`pwd`/$(OUTPUT_HTML)/index.html, " \ "or run 'make serve' to see them in http://localhost:8000"; diff --git a/conf.py b/conf.py index 0d39ed17d9..9a9557ae0c 100644 --- a/conf.py +++ b/conf.py @@ -54,6 +54,7 @@ exclude_patterns = _exclude_patterns _extensions = [ + 'sphinx_autorun', 'sphinx_tabs.tabs', 'sphinxemoji.sphinxemoji', ] @@ -126,22 +127,3 @@ def add_contributing_banner(app, doctree): app.srcdir = Path(os.getcwd() + '/cpython/Doc') app.connect('doctree-read', add_contributing_banner) - - # Import the sphinx-autorun manually to avoid this warning - # TODO: Remove this code and use just ``extensions.append('sphinx_autorun')`` when - # that issue gets fixed - # See https://github.com/WhyNotHugo/sphinx-autorun/issues/17 - - # WARNING: the sphinx_autorun extension does not declare if it is safe for - # parallel reading, assuming it isn't - please ask the extension author to - # check and make it explicit - # WARNING: doing serial read - from sphinx_autorun import RunBlock, AutoRun - app.add_directive('runblock', RunBlock) - app.connect('builder-inited', AutoRun.builder_init) - app.add_config_value('autorun_languages', AutoRun.config, 'env') - return { - 'version': '0.1', - 'parallel_read_safe': True, - 'parallel_write_safe': True, - } diff --git a/requirements-own.txt b/requirements-own.txt index 719d53f5ba..5f2e1c075a 100644 --- a/requirements-own.txt +++ b/requirements-own.txt @@ -8,7 +8,7 @@ pre-commit Pygments>=2.17.0 PyICU setuptools -sphinx-autorun +sphinx-autorun>=2.0.0 sphinxemoji sphinx-intl>=2.3.0 sphinx-lint==0.7.0 From afc440b11d406690b63c8eca6f705287bfe8e281 Mon Sep 17 00:00:00 2001 From: Tatiana Delgadillo Date: Mon, 6 Jan 2025 20:11:42 -0400 Subject: [PATCH 08/78] =?UTF-8?q?Traducci=C3=B3n=20archivo=20c-api/memoryv?= =?UTF-8?q?iew=20(#3356)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #3278 --- c-api/memoryview.po | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/c-api/memoryview.po b/c-api/memoryview.po index fa6e02a4eb..aefbdded34 100644 --- a/c-api/memoryview.po +++ b/c-api/memoryview.po @@ -11,15 +11,16 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: 2024-10-29 21:14-0400\n" +"PO-Revision-Date: 2025-01-06 16:11-0400\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" +"Language: es\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.16.0\n" +"X-Generator: Poedit 3.5\n" #: ../Doc/c-api/memoryview.rst:9 msgid "MemoryView objects" @@ -50,11 +51,11 @@ msgstr "" #: ../Doc/c-api/memoryview.rst:26 msgid "Flag to request a readonly buffer." -msgstr "" +msgstr "Indicador para solicitar un búfer de solo lectura." #: ../Doc/c-api/memoryview.rst:31 msgid "Flag to request a writable buffer." -msgstr "" +msgstr "Indicador para solicitar un búfer escribible." #: ../Doc/c-api/memoryview.rst:36 msgid "" @@ -89,12 +90,10 @@ msgstr "" "realiza una copia y la vista de memoria apunta a un nuevo objeto de bytes." #: ../Doc/c-api/memoryview.rst:55 -#, fuzzy msgid "" "*buffertype* can be one of :c:macro:`PyBUF_READ` or :c:macro:`PyBUF_WRITE`." msgstr "" -"Crea un objeto de vista de memoria usando *mem* como el búfer subyacente. " -"*flags* pueden ser uno de :c:macro:`PyBUF_READ` o :c:macro:`PyBUF_WRITE`." +"*buffertype* puede ser uno de :c:macro:`PyBUF_READ` o :c:macro:`PyBUF_WRITE`." #: ../Doc/c-api/memoryview.rst:60 msgid "" From f375648ed230f98adfb507e6cfc90b3fefe45825 Mon Sep 17 00:00:00 2001 From: Jonathan Villanueva Date: Wed, 15 Jan 2025 00:23:49 -0400 Subject: [PATCH 09/78] Traducido archivo faq/gui (#3357) Closes #2893 --- faq/gui.po | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/faq/gui.po b/faq/gui.po index d1ee2dbdb1..3e0f98460e 100644 --- a/faq/gui.po +++ b/faq/gui.po @@ -11,15 +11,16 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: 2021-11-09 22:34-0600\n" +"PO-Revision-Date: 2025-01-15 00:01-0400\n" "Last-Translator: Erick G. Islas Osuna \n" -"Language: es\n" "Language-Team: python-doc-es\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\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.16.0\n" +"X-Generator: Poedit 3.5\n" #: ../Doc/faq/gui.rst:5 msgid "Graphic User Interface FAQ" @@ -90,28 +91,28 @@ msgstr "" "y Tk." #: ../Doc/faq/gui.rst:45 -#, fuzzy msgid "" "One solution is to ship the application with the Tcl and Tk libraries, and " "point to them at run-time using the :envvar:`!TCL_LIBRARY` and :envvar:`!" "TK_LIBRARY` environment variables." msgstr "" "Una solución es enviar la aplicación con las bibliotecas Tcl y Tk, y " -"apuntarlas en tiempo de ejecución utilizando :envvar:`TCL_LIBRARY` y las " -"variables de entorno :envvar:`TK_LIBRARY`." +"apuntarlas en tiempo de ejecución utilizando las variables de entorno :" +"envvar:`!TCL_LIBRARY` y :envvar:`!TK_LIBRARY`." #: ../Doc/faq/gui.rst:49 msgid "" "Various third-party freeze libraries such as py2exe and cx_Freeze have " "handling for Tkinter applications built-in." msgstr "" +"Varias bibliotecas de terceros para congelar como py2exe y cx_Freeze tienen " +"soporte integrado para aplicaciones Tkinter." #: ../Doc/faq/gui.rst:54 msgid "Can I have Tk events handled while waiting for I/O?" msgstr "¿Puedo tener eventos Tk manejados mientras espero por *I/O*?" #: ../Doc/faq/gui.rst:56 -#, fuzzy msgid "" "On platforms other than Windows, yes, and you don't even need threads! But " "you'll have to restructure your I/O code a bit. Tk has the equivalent of " @@ -119,12 +120,12 @@ msgid "" "function which will be called from the Tk mainloop when I/O is possible on a " "file descriptor. See :ref:`tkinter-file-handlers`." msgstr "" -"En plataformas que no sean Windows, sí, ¡y ni siquiera necesita hilos! Pero " -"tendrá que reestructurar un poco su código de I/O. Tk tiene el equivalente " -"de la llamada Xt :c:func:`XtAddInput()`, que le permite registrar una " -"función de *callback* que se llamará desde el bucle principal de Tk cuando " -"sea posible I/O en un descriptor de archivo. Ver :ref:`tkinter-file-" -"handlers`." +"En plataformas que no sean Windows, sí, ¡y ni siquiera necesitas hilos! Pero " +"tendrá que reestructurar un poco su código de entrada/salida. Tk tiene un " +"equivalente de la llamada :c:func:`XtAddInput` de Xt, que permite registrar " +"una función de retorno que será llamada desde el bucle principal de Tk " +"cuando sea posible entrada/salida en un descriptor de archivo. Ver :ref:" +"`tkinter-file-handlers`." #: ../Doc/faq/gui.rst:64 msgid "I can't get key bindings to work in Tkinter: why?" @@ -132,15 +133,14 @@ msgstr "" "No puedo hacer que los atajos de teclado funcionen en Tkinter: ¿por qué?" #: ../Doc/faq/gui.rst:66 -#, fuzzy msgid "" "An often-heard complaint is that event handlers :ref:`bound ` to events with the :meth:`!bind` method don't get handled even when " "the appropriate key is pressed." msgstr "" -"Una queja que se escucha con frecuencia es que los controladores de eventos " -"vinculados a eventos con el método :meth:`bind` no se manejan incluso cuando " -"se presiona la tecla adecuada." +"Una queja frecuente que se escucha es que los controladores de eventos :ref:" +"`vinculados ` con el método :meth:`!bind` no se " +"ejecutan incluso cuando se presiona la tecla correspondiente." #: ../Doc/faq/gui.rst:70 msgid "" From be6f74f3dd25492cfee54391daa1a3e6ae4e7109 Mon Sep 17 00:00:00 2001 From: rtobar Date: Mon, 27 Jan 2025 10:10:10 +0800 Subject: [PATCH 10/78] Arregla faq/gui.po (#3361) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Al revisar #3357 la nueva interfaz experimental de GitHub no mostró el botón para aceptar y ejecutar los cambios en CI (dado que eran cambios de alguien que contribuía por primera vez). Al mismo tiempo todos los chequeos aparecían en verde, dando la sensación de que estaba todo bien. Hice el merge, pero había problemas, que este commit arregla. Signed-off-by: Rodrigo Tobar --- dictionaries/faq_gui.txt | 1 + faq/gui.po | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 dictionaries/faq_gui.txt diff --git a/dictionaries/faq_gui.txt b/dictionaries/faq_gui.txt new file mode 100644 index 0000000000..17f90afc2b --- /dev/null +++ b/dictionaries/faq_gui.txt @@ -0,0 +1 @@ +cx diff --git a/faq/gui.po b/faq/gui.po index 3e0f98460e..24c292c525 100644 --- a/faq/gui.po +++ b/faq/gui.po @@ -122,7 +122,7 @@ msgid "" msgstr "" "En plataformas que no sean Windows, sí, ¡y ni siquiera necesitas hilos! Pero " "tendrá que reestructurar un poco su código de entrada/salida. Tk tiene un " -"equivalente de la llamada :c:func:`XtAddInput` de Xt, que permite registrar " +"equivalente de la llamada :c:func:`!XtAddInput` de Xt, que permite registrar " "una función de retorno que será llamada desde el bucle principal de Tk " "cuando sea posible entrada/salida en un descriptor de archivo. Ver :ref:" "`tkinter-file-handlers`." From 335fa605308f1746bc3c509de5e39b18057c7059 Mon Sep 17 00:00:00 2001 From: Alberto Andrei Soria Gomez <44327209+AASG2003@users.noreply.github.com> Date: Sun, 26 Jan 2025 21:53:54 -0500 Subject: [PATCH 11/78] Traducido archivo c-api/datetime (#3359) Closes #3246 --------- Co-authored-by: andrei --- c-api/datetime.po | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/c-api/datetime.po b/c-api/datetime.po index 704a87a82d..100d1f7118 100644 --- a/c-api/datetime.po +++ b/c-api/datetime.po @@ -11,15 +11,16 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: 2024-11-10 19:13-0500\n" +"PO-Revision-Date: 2025-01-26 21:27-0500\n" "Last-Translator: Meta Louis-Kosmas \n" -"Language: es\n" "Language-Team: python-doc-es\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\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.16.0\n" +"X-Generator: Poedit 3.5\n" #: ../Doc/c-api/datetime.rst:6 msgid "DateTime Objects" @@ -73,8 +74,7 @@ msgid "" "is the same object as :class:`datetime.date` in the Python layer." msgstr "" "Esta instancia de :c:type:`PyTypeObject` representa el *date type* de " -"Python; es el mismo objecto que que :class:`datetime.date` en la capa de " -"Python." +"Python; es el mismo objeto que :class:`datetime.date` en la capa de Python." #: ../Doc/c-api/datetime.rst:39 msgid "" @@ -82,7 +82,7 @@ msgid "" "it is the same object as :class:`datetime.datetime` in the Python layer." msgstr "" "Esta instancia de :c:type:`PyTypeObject` representa el *datetime type* de " -"Python; es el mismo objecto que que :class:`datetime.datetime` en la capa de " +"Python; es el mismo objeto que :class:`datetime.datetime` en la capa de " "Python." #: ../Doc/c-api/datetime.rst:44 @@ -91,7 +91,7 @@ msgid "" "is the same object as :class:`datetime.time` in the Python layer." msgstr "" "Esta instancia de :c:type:`PyObject` representa el *time type* de Python; es " -"el mismo objecto que que :class:`datetime.time` en la capa de Python." +"el mismo objeto que :class:`datetime.time` en la capa de Python." #: ../Doc/c-api/datetime.rst:49 msgid "" @@ -384,19 +384,17 @@ 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:320 -#, fuzzy msgid "" "Create and return a new :class:`datetime.datetime` object given an argument " "tuple suitable for passing to :meth:`datetime.datetime.fromtimestamp`." msgstr "" "Crea y retorna un nuevo objeto :class:`datetime.datetime` dado una tupla de " -"argumentos adecuada para pasar a :meth:`datetime.datetime.fromtimestamp()`." +"argumentos adecuada para pasar a :meth:`datetime.datetime.fromtimestamp`." #: ../Doc/c-api/datetime.rst:326 -#, fuzzy msgid "" "Create and return a new :class:`datetime.date` object given an argument " "tuple suitable for passing to :meth:`datetime.date.fromtimestamp`." msgstr "" "Crea y retorna un nuevo objeto :class:`datetime.date` dado una tupla de " -"argumentos adecuada para pasar a :meth:`datetime.date.fromtimestamp()`." +"argumentos adecuada para pasar a :meth:`datetime.date.fromtimestamp`." From b16744908c001b066acb579d011399bc521700fb Mon Sep 17 00:00:00 2001 From: xDanna <159052616+xDanna@users.noreply.github.com> Date: Sun, 26 Jan 2025 22:55:53 -0400 Subject: [PATCH 12/78] Traducido archivo c-api/marshal (#3360) Closes #3255 Co-authored-by: rtobar --- c-api/marshal.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/c-api/marshal.po b/c-api/marshal.po index d1f8676833..0fb738f127 100644 --- a/c-api/marshal.po +++ b/c-api/marshal.po @@ -11,15 +11,16 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: 2024-10-28 21:01-0400\n" +"PO-Revision-Date: 2025-01-26 17:22-0400\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" +"Language: es\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.16.0\n" +"X-Generator: Poedit 3.5\n" #: ../Doc/c-api/marshal.rst:6 msgid "Data marshalling support" @@ -45,7 +46,6 @@ msgstr "" "Los valores numéricos se almacenan con el byte menos significativo primero." #: ../Doc/c-api/marshal.rst:16 -#, fuzzy msgid "" "The module supports two versions of the data format: version 0 is the " "historical version, version 1 shares interned strings in the file, and upon " From 8144640c9e3a70c5228b43b80ccddf53b9b5e61f Mon Sep 17 00:00:00 2001 From: kbiggers Date: Sun, 26 Jan 2025 21:57:33 -0500 Subject: [PATCH 13/78] =?UTF-8?q?Actualizar=20la=20documentaci=C3=B3n=20pa?= =?UTF-8?q?ra=20indicar=20que=20el=20clon=20debe=20ser=20recursivo=20(#335?= =?UTF-8?q?3)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Actualizar la documentación para indicar que el clon debe ser recursivo closes #3352 --------- Co-authored-by: rtobar --- .overrides/CONTRIBUTING.rst | 2 +- Makefile | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.overrides/CONTRIBUTING.rst b/.overrides/CONTRIBUTING.rst index 903fd6aa46..360b3f0957 100644 --- a/.overrides/CONTRIBUTING.rst +++ b/.overrides/CONTRIBUTING.rst @@ -60,7 +60,7 @@ podrás realizar todas las contribuciones que quieras. #. (Opcional) Instala los requerimientos del proyecto:: - pip install -r requirements.txt + pip install -r requirements-own.txt .. note:: diff --git a/Makefile b/Makefile index f6e011c7b4..75f0f9dd50 100644 --- a/Makefile +++ b/Makefile @@ -56,6 +56,9 @@ do_build: setup: venv git submodule sync git submodule update --init --force --depth 1 $(CPYTHON_PATH) + # Now that we've initialized the submodules, install all requirements necessary for the build + $(VENV)/bin/python -m pip install -q -r requirements.txt + # venv: create a virtual environment which will be used by almost every @@ -66,7 +69,7 @@ venv: $(PYTHON) -m venv --prompt $(LANGUAGE_TEAM) $(VENV); \ fi - $(VENV)/bin/python -m pip install -q -r requirements.txt + $(VENV)/bin/python -m pip install -q -r requirements-own.txt # serve: serve the documentation in a simple local web server, using cpython From d1b3567100348d90f43f575592024361a8ec6dae Mon Sep 17 00:00:00 2001 From: Francisco Mora <193986059+srmorita@users.noreply.github.com> Date: Mon, 27 Jan 2025 11:19:29 -0300 Subject: [PATCH 14/78] Traducido archivo c-api/concrete (#3358) Closes #3270 --- TRANSLATORS | 1 + c-api/concrete.po | 20 +++++++++----------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/TRANSLATORS b/TRANSLATORS index 107807d0bb..3686c2a25f 100644 --- a/TRANSLATORS +++ b/TRANSLATORS @@ -228,6 +228,7 @@ Sergio Infante (@neosergio) Silvina Tamburini (@silvinabt87) Sofia Carballo (@sofiacarballo) Sofía Denner +Srmorita (@srmorita) Stephanie Orellana Bello Sumit Kashyap Summerok diff --git a/c-api/concrete.po b/c-api/concrete.po index fe90ed851a..a787976028 100644 --- a/c-api/concrete.po +++ b/c-api/concrete.po @@ -11,15 +11,16 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-10-12 19:43+0200\n" -"PO-Revision-Date: 2020-05-09 18:24+0200\n" -"Last-Translator: \n" -"Language: es\n" +"PO-Revision-Date: 2025-01-27 08:51-0300\n" +"Last-Translator: srmorita \n" "Language-Team: python-doc-es\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\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.13.0\n" +"X-Generator: Poedit 3.5\n" #: ../Doc/c-api/concrete.rst:8 msgid "Concrete Objects Layer" @@ -99,20 +100,17 @@ msgstr "Otros objetos" #: ../Doc/c-api/concrete.rst:43 ../Doc/c-api/concrete.rst:58 #: ../Doc/c-api/concrete.rst:80 -#, fuzzy msgid "object" -msgstr "Otros objetos" +msgstr "object" #: ../Doc/c-api/concrete.rst:43 -#, fuzzy msgid "numeric" -msgstr "Objetos numéricos" +msgstr "numeric" #: ../Doc/c-api/concrete.rst:58 -#, fuzzy msgid "sequence" -msgstr "Objetos de secuencia" +msgstr "sequence" #: ../Doc/c-api/concrete.rst:80 msgid "mapping" -msgstr "" +msgstr "mapping" From 553c804f3d68f0866d6f86ad710cf31af45e77e6 Mon Sep 17 00:00:00 2001 From: Carlos Mena <50986837+carlosm00@users.noreply.github.com> Date: Tue, 28 Jan 2025 11:50:45 +0100 Subject: [PATCH 15/78] Traduccion deprecations/c-api-pending-removal-in-3.15.po (#3362) Closes #3294 --- deprecations/c-api-pending-removal-in-3.15.po | 32 +++++++++++++------ 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/deprecations/c-api-pending-removal-in-3.15.po b/deprecations/c-api-pending-removal-in-3.15.po index 8b11f9a0ea..b111679eed 100644 --- a/deprecations/c-api-pending-removal-in-3.15.po +++ b/deprecations/c-api-pending-removal-in-3.15.po @@ -10,74 +10,88 @@ msgstr "" "Project-Id-Version: Python en Español 3.13\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language: es\n" +"PO-Revision-Date: 2025-01-28 11:30+0100\n" +"Last-Translator: Carlos Mena Pérez <@carlosm00>\n" "Language-Team: es \n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\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.16.0\n" +"X-Generator: Poedit 3.5\n" #: ../Doc/deprecations/c-api-pending-removal-in-3.15.rst:2 msgid "Pending Removal in Python 3.15" -msgstr "" +msgstr "Pendiente de eliminación en Python 3.15" #: ../Doc/deprecations/c-api-pending-removal-in-3.15.rst:4 msgid "The bundled copy of ``libmpdecimal``." -msgstr "" +msgstr "La copia incluida de ``libmpdecimal``." #: ../Doc/deprecations/c-api-pending-removal-in-3.15.rst:5 msgid "" "The :c:func:`PyImport_ImportModuleNoBlock`: Use :c:func:" "`PyImport_ImportModule` instead." msgstr "" +"La función :c:func:`PyImport_ImportModuleNoBlock`: use :c:func:" +"`PyImport_ImportModule` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.15.rst:7 msgid "" ":c:func:`PyWeakref_GetObject` and :c:func:`PyWeakref_GET_OBJECT`: Use :c:" "func:`PyWeakref_GetRef` instead." msgstr "" +":c:func:`PyWeakref_GetObject` y :c:func:`PyWeakref_GET_OBJECT`: use :c:func:" +"`PyWeakref_GetRef` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.15.rst:9 msgid "" ":c:type:`Py_UNICODE` type and the :c:macro:`!Py_UNICODE_WIDE` macro: Use :c:" "type:`wchar_t` instead." msgstr "" +"El tipo :c:type:`Py_UNICODE` y macro :c:macro:`!Py_UNICODE_WIDE`: use :c:" +"type:`wchar_t` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.15.rst:11 msgid "Python initialization functions:" -msgstr "" +msgstr "Funciones de inicialización de Python:" #: ../Doc/deprecations/c-api-pending-removal-in-3.15.rst:13 msgid "" ":c:func:`PySys_ResetWarnOptions`: Clear :data:`sys.warnoptions` and :data:`!" "warnings.filters` instead." msgstr "" +":c:func:`PySys_ResetWarnOptions`: Borre :data:`sys.warnoptions` y :data:`!" +"warnings.filters` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.15.rst:15 msgid ":c:func:`Py_GetExecPrefix`: Get :data:`sys.exec_prefix` instead." msgstr "" +":c:func:`Py_GetExecPrefix`: obtenga :data:`sys.exec_prefix` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.15.rst:17 msgid ":c:func:`Py_GetPath`: Get :data:`sys.path` instead." -msgstr "" +msgstr ":c:func:`Py_GetPath`: obtenga :data:`sys.path` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.15.rst:19 msgid ":c:func:`Py_GetPrefix`: Get :data:`sys.prefix` instead." -msgstr "" +msgstr ":c:func:`Py_GetPrefix`: obtenga :data:`sys.prefix` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.15.rst:21 msgid ":c:func:`Py_GetProgramFullPath`: Get :data:`sys.executable` instead." msgstr "" +":c:func:`Py_GetProgramFullPath`: obtenga :data:`sys.executable` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.15.rst:23 msgid ":c:func:`Py_GetProgramName`: Get :data:`sys.executable` instead." msgstr "" +":c:func:`Py_GetProgramName`: obtenga :data:`sys.executable` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.15.rst:25 msgid "" ":c:func:`Py_GetPythonHome`: Get :c:member:`PyConfig.home` or the :envvar:" "`PYTHONHOME` environment variable instead." msgstr "" +":c:func:`Py_GetPythonHome`: obtenga :c:member:`PyConfig.home` o la variable " +"de entorno :envvar:`PYTHONHOME` en su lugar." From 05866b02143952c427a9b167183d568f5882e2fb Mon Sep 17 00:00:00 2001 From: Francisco Mora <193986059+srmorita@users.noreply.github.com> Date: Fri, 31 Jan 2025 10:28:15 -0300 Subject: [PATCH 16/78] Traducido archivo c-api/perfmaps (#3363) Closes #3276 --- c-api/perfmaps.po | 62 ++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 50 insertions(+), 12 deletions(-) diff --git a/c-api/perfmaps.po b/c-api/perfmaps.po index 233c0924f9..1bfd599da0 100644 --- a/c-api/perfmaps.po +++ b/c-api/perfmaps.po @@ -10,53 +10,74 @@ msgstr "" "Project-Id-Version: Python en Español 3.12\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language: es\n" +"PO-Revision-Date: 2025-01-31 10:04-0300\n" +"Last-Translator: srmorita \n" "Language-Team: es \n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\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.16.0\n" +"X-Generator: Poedit 3.5\n" #: ../Doc/c-api/perfmaps.rst:6 msgid "Support for Perf Maps" -msgstr "" +msgstr "Soporte para Mapeo Perf" #: ../Doc/c-api/perfmaps.rst:8 msgid "" "On supported platforms (as of this writing, only Linux), the runtime can " "take advantage of *perf map files* to make Python functions visible to an " -"external profiling tool (such as `perf `_). A running process may create a file in the ``/tmp`` " +"external profiling tool (such as `perf `_). A running process may create a file in the ``/tmp`` " "directory, which contains entries that can map a section of executable code " "to a name. This interface is described in the `documentation of the Linux " -"Perf tool `_." +"Perf tool `_." msgstr "" +"En las plataformas soportadas (en el momento de escribir esto, sólo Linux), " +"el tiempo de ejecución puede aprovechar *perf map files* para hacer que las " +"funciones de Python sean visibles para una herramienta externa de perfiles " +"(como `perf `_). Un " +"proceso en ejecución puede crear un fichero en el directorio ``/tmp``, que " +"contiene entradas que pueden asignar una sección de código ejecutable a un " +"nombre. Esta interfaz se describe en la `documentación de la herramienta " +"Perf de Linux `_." #: ../Doc/c-api/perfmaps.rst:16 msgid "" "In Python, these helper APIs can be used by libraries and features that rely " "on generating machine code on the fly." msgstr "" +"En Python, estas API auxiliares pueden ser utilizadas por bibliotecas y " +"funciones que dependen de la generación de código de máquina sobre la marcha." #: ../Doc/c-api/perfmaps.rst:19 msgid "" "Note that holding the Global Interpreter Lock (GIL) is not required for " "these APIs." msgstr "" +"Tenga en cuenta que para estas APIs no es necesario mantener el Bloqueo " +"Global del Intérprete (GIL)." #: ../Doc/c-api/perfmaps.rst:23 msgid "" "Open the ``/tmp/perf-$pid.map`` file, unless it's already opened, and create " "a lock to ensure thread-safe writes to the file (provided the writes are " "done through :c:func:`PyUnstable_WritePerfMapEntry`). Normally, there's no " -"need to call this explicitly; just use :c:func:" -"`PyUnstable_WritePerfMapEntry` and it will initialize the state on first " -"call." +"need to call this explicitly; just " +"use :c:func:`PyUnstable_WritePerfMapEntry` and it will initialize the state " +"on first call." msgstr "" +"Abre el archivo ``/tmp/perf-$pid.map``, a menos que ya esté abierto, y crea " +"un bloqueo para garantizar escrituras seguras para hilos en el archivo " +"(siempre que las escrituras se realicen " +"mediante :c:func:`PyUnstable_WritePerfMapEntry`). Normalmente, no es " +"necesario llamar a esto explícitamente; solo " +"use :c:func:`PyUnstable_WritePerfMapEntry` e inicializará el estado en la " +"primera llamada." #: ../Doc/c-api/perfmaps.rst:29 msgid "" @@ -64,18 +85,26 @@ msgid "" "file, or ``-2`` on failure to create a lock. Check ``errno`` for more " "information about the cause of a failure." msgstr "" +"Retorna ``0`` en caso de éxito, ``-1`` en caso de fallo al crear/abrir el " +"fichero perf map, o ``-2`` en caso de fallo al crear un bloqueo. Comprueba " +"``errno`` para más información sobre la causa de un fallo." #: ../Doc/c-api/perfmaps.rst:35 msgid "" "Write one single entry to the ``/tmp/perf-$pid.map`` file. This function is " "thread safe. Here is what an example entry looks like::" msgstr "" +"Escribe una única entrada en el fichero ``/tmp/perf-$pid.map``. Esta función " +"es segura para hilos. Aquí hay un ejemplo de entrada::" +# creo que esto debe quedar igual. Es solo código fuente. #: ../Doc/c-api/perfmaps.rst:38 msgid "" "# address size name\n" "7f3529fcf759 b py::bar:/run/t.py" msgstr "" +"# address size name\n" +"7f3529fcf759 b py::bar:/run/t.py" #: ../Doc/c-api/perfmaps.rst:41 msgid "" @@ -83,6 +112,10 @@ msgid "" "if the perf map file is not already opened. Returns ``0`` on success, or the " "same error codes as :c:func:`PyUnstable_PerfMapState_Init` on failure." msgstr "" +"Llamará a :c:func:`PyUnstable_PerfMapState_Init` antes de escribir la " +"entrada, si el fichero perf map no está ya abierto. Retorna ``0`` en caso de " +"éxito, o los mismos códigos de error " +"que :c:func:`PyUnstable_PerfMapState_Init` en caso de fallo." #: ../Doc/c-api/perfmaps.rst:47 msgid "" @@ -91,3 +124,8 @@ msgid "" "general, there shouldn't be a reason to explicitly call this, except to " "handle specific scenarios such as forking." msgstr "" +"Cierra el fichero perf map abierto " +"por :c:func:`PyUnstable_PerfMapState_Init`. Esto es llamado por el propio " +"tiempo de ejecución durante el cierre del intérprete. En general, no debería " +"haber una razón para llamar explícitamente a esto, excepto para manejar " +"escenarios específicos como la bifurcación." From 4682fd76371cf465e5c80154f6f71503df743bee Mon Sep 17 00:00:00 2001 From: kbiggers Date: Sat, 1 Feb 2025 23:15:45 -0500 Subject: [PATCH 17/78] Traducido reference/compound_stmts.po (#3354) closes #3288 --------- Co-authored-by: rtobar --- dictionaries/reference_compound_stmts.txt | 4 +- reference/compound_stmts.po | 465 +++++++++++++++++----- 2 files changed, 358 insertions(+), 111 deletions(-) diff --git a/dictionaries/reference_compound_stmts.txt b/dictionaries/reference_compound_stmts.txt index 2d866fb770..5c0b4f635d 100644 --- a/dictionaries/reference_compound_stmts.txt +++ b/dictionaries/reference_compound_stmts.txt @@ -1 +1,3 @@ -precalculado \ No newline at end of file +precalculado +anything +bound \ No newline at end of file diff --git a/reference/compound_stmts.po b/reference/compound_stmts.po index ac239c5b29..483661f484 100644 --- a/reference/compound_stmts.po +++ b/reference/compound_stmts.po @@ -11,15 +11,16 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: 2024-11-18 15:17-0300\n" +"PO-Revision-Date: 2025-01-01 17:41-0500\n" "Last-Translator: Carlos A. Crespo \n" -"Language: es_AR\n" "Language-Team: python-doc-es\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es_AR\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.16.0\n" +"X-Generator: Poedit 3.5\n" #: ../Doc/reference/compound_stmts.rst:5 msgid "Compound statements" @@ -84,7 +85,7 @@ msgstr "" #: ../Doc/reference/compound_stmts.rst:37 msgid "if test1: if test2: print(x)" -msgstr "" +msgstr "if test1: if test2: print(x)" #: ../Doc/reference/compound_stmts.rst:39 msgid "" @@ -98,7 +99,7 @@ msgstr "" #: ../Doc/reference/compound_stmts.rst:43 msgid "if x < y < z: print(x); print(y); print(z)" -msgstr "" +msgstr "if x < y < z: print(x); print(y); print(z)" #: ../Doc/reference/compound_stmts.rst:45 msgid "Summarizing:" @@ -243,6 +244,8 @@ msgstr "" "sobrescribe todas las asignaciones anteriores a esas variables, incluidas " "las realizadas en la suite del bucle ``for``::" +# No se pueden traducir los commentarios hasta que pospell tenga la habilidad +# de entender líneas de código. #: ../Doc/reference/compound_stmts.rst:183 msgid "" "for i in range(10):\n" @@ -251,6 +254,11 @@ msgid "" " # because i will be overwritten with the next\n" " # index in the range" msgstr "" +"for i in range(10):\n" +" print(i)\n" +" i = 5 # this will not affect the for-loop\n" +" # because i will be overwritten with the next\n" +" # index in the range" #: ../Doc/reference/compound_stmts.rst:193 msgid "" @@ -299,7 +307,6 @@ msgid ":keyword:`!except` clause" msgstr "Cláusula :keyword:`!except`" #: ../Doc/reference/compound_stmts.rst:241 -#, fuzzy msgid "" "The :keyword:`!except` clause(s) specify one or more exception handlers. " "When no exception occurs in the :keyword:`try` clause, no exception handler " @@ -316,13 +323,7 @@ msgstr "" "controlador de excepciones. Esta búsqueda inspecciona las cláusulas :keyword:" "`!except` a su vez hasta que se encuentra una que coincida con la excepción. " "Una cláusula :keyword:`!except` sin expresión, si está presente, debe ser la " -"última; coincide con cualquier excepción. Para una cláusula :keyword:`!" -"except` con una expresión, esa expresión se evalúa y la cláusula coincide " -"con la excepción si el objeto resultante es \"compatible\" con la excepción. " -"Un objeto es compatible con una excepción si el objeto es la clase o un :" -"term:`non-virtual base class ` del objeto de excepción, " -"o una tupla que contiene un elemento que es la clase o una clase base no " -"virtual del objeto de excepción." +"última; coincide con cualquier excepción." #: ../Doc/reference/compound_stmts.rst:249 msgid "" @@ -332,6 +333,11 @@ msgid "" "the class or a :term:`non-virtual base class ` of the " "exception object, or to a tuple that contains such a class." msgstr "" +"Para una cláusula de :keyword:`!except`con una expresión, la expresión debe " +"evaluar a un tipo de excepción o un tupla de tipos de excepciones. La " +"excepción generada coincide con una cláusula :keyword:`!except` cuya " +"expresión evaluá a la clase o una :term:`clase base no virtual ` del objeto excepción, o una tupla que contiene dicha clase." #: ../Doc/reference/compound_stmts.rst:255 msgid "" @@ -393,6 +399,8 @@ msgid "" "except E as N:\n" " foo" msgstr "" +"except E as N:\n" +" foo" #: ../Doc/reference/compound_stmts.rst:284 msgid "was translated to ::" @@ -406,6 +414,11 @@ msgid "" " finally:\n" " del N" msgstr "" +"except E as N:\n" +" try:\n" +" foo\n" +" finally:\n" +" del N" #: ../Doc/reference/compound_stmts.rst:292 msgid "" @@ -457,6 +470,23 @@ msgid "" ">>> print(sys.exception())\n" "None" msgstr "" +">>> print(sys.exception())\n" +"None\n" +">>> try:\n" +"... raise TypeError\n" +"... except:\n" +"... print(repr(sys.exception()))\n" +"... try:\n" +"... raise ValueError\n" +"... except:\n" +"... print(repr(sys.exception()))\n" +"... print(repr(sys.exception()))\n" +"...\n" +"TypeError()\n" +"ValueError()\n" +"TypeError()\n" +">>> print(sys.exception())\n" +"None" #: ../Doc/reference/compound_stmts.rst:333 msgid ":keyword:`!except*` clause" @@ -464,15 +494,15 @@ msgstr "Cláusula :keyword:`!except*`" #: ../Doc/reference/compound_stmts.rst:335 msgid "" -"The :keyword:`!except*` clause(s) are used for handling :exc:" -"`ExceptionGroup`\\s. The exception type for matching is interpreted as in " -"the case of :keyword:`except`, but in the case of exception groups we can " -"have partial matches when the type matches some of the exceptions in the " -"group. This means that multiple :keyword:`!except*` clauses can execute, " -"each handling part of the exception group. Each clause executes at most once " -"and handles an exception group of all matching exceptions. Each exception " -"in the group is handled by at most one :keyword:`!except*` clause, the first " -"that matches it. ::" +"The :keyword:`!except*` clause(s) are used for handling :exc:`ExceptionGroup`" +"\\s. The exception type for matching is interpreted as in the case of :" +"keyword:`except`, but in the case of exception groups we can have partial " +"matches when the type matches some of the exceptions in the group. This " +"means that multiple :keyword:`!except*` clauses can execute, each handling " +"part of the exception group. Each clause executes at most once and handles " +"an exception group of all matching exceptions. Each exception in the group " +"is handled by at most one :keyword:`!except*` clause, the first that matches " +"it. ::" msgstr "" "La(s) cláusula(s) :keyword:`!except*` se utilizan para manejar :exc:" "`ExceptionGroup`\\s. El tipo de excepción para la coincidencia se interpreta " @@ -504,6 +534,22 @@ msgid "" " | ValueError: 1\n" " +------------------------------------" msgstr "" +">>> try:\n" +"... raise ExceptionGroup(\"eg\",\n" +"... [ValueError(1), TypeError(2), OSError(3), OSError(4)])\n" +"... except* TypeError as e:\n" +"... print(f'caught {type(e)} with nested {e.exceptions}')\n" +"... except* OSError as e:\n" +"... print(f'caught {type(e)} with nested {e.exceptions}')\n" +"...\n" +"caught with nested (TypeError(2),)\n" +"caught with nested (OSError(3), OSError(4))\n" +" + Exception Group Traceback (most recent call last):\n" +" | File \"\", line 2, in \n" +" | ExceptionGroup: eg\n" +" +-+---------------- 1 ----------------\n" +" | ValueError: 1\n" +" +------------------------------------" #: ../Doc/reference/compound_stmts.rst:363 msgid "" @@ -537,6 +583,12 @@ msgid "" "...\n" "ExceptionGroup('', (BlockingIOError()))" msgstr "" +">>> try:\n" +"... raise BlockingIOError\n" +"... except* BlockingIOError as e:\n" +"... print(repr(e))\n" +"...\n" +"ExceptionGroup('', (BlockingIOError()))" #: ../Doc/reference/compound_stmts.rst:380 msgid "" @@ -544,19 +596,19 @@ msgid "" "``except*:``. Furthermore, this expression cannot contain exception group " "types, because that would have ambiguous semantics." msgstr "" +"Una cláusula :keyword:`!except*` debe tener una expresión coincidente; no " +"puede ser ``except*:``. Además, esta expresión no puede contener tipos de " +"excepción grupal. porque esto tendría semánticas ambiguas." #: ../Doc/reference/compound_stmts.rst:384 -#, fuzzy msgid "" "It is not possible to mix :keyword:`except` and :keyword:`!except*` in the " "same :keyword:`try`. :keyword:`break`, :keyword:`continue` and :keyword:" "`return` cannot appear in an :keyword:`!except*` clause." msgstr "" -"Una cláusula :keyword:`!except*` debe tener un tipo coincidente y este tipo " -"no puede ser una subclase de :exc:`BaseExceptionGroup`. No es posible " -"mezclar :keyword:`except` y :keyword:`!except*` en el mismo :keyword:`try`. :" -"keyword:`break`, :keyword:`continue` y :keyword:`return` no pueden aparecer " -"en una cláusula :keyword:`!except*`." +"No se puede mezclar :keyword:`except` y :keyword:`!except*` en el mismo " +":keyword:`try`. :keyword:`break`, :keyword:`continue` y :keyword:`return` no " +"puede aparecer en una cláusula :keyword:`!except*`." #: ../Doc/reference/compound_stmts.rst:399 msgid ":keyword:`!else` clause" @@ -615,6 +667,14 @@ msgid "" ">>> f()\n" "42" msgstr "" +">>> def f():\n" +"... try:\n" +"... 1/0\n" +"... finally:\n" +"... return 42\n" +"...\n" +">>> f()\n" +"42" #: ../Doc/reference/compound_stmts.rst:434 msgid "" @@ -659,6 +719,14 @@ msgid "" ">>> foo()\n" "'finally'" msgstr "" +">>> def foo():\n" +"... try:\n" +"... return 'try'\n" +"... finally:\n" +"... return 'finally'\n" +"...\n" +">>> foo()\n" +"'finally'" #: ../Doc/reference/compound_stmts.rst:460 msgid "" @@ -702,35 +770,30 @@ msgstr "" "with_item`) se evalúa para obtener un administrador de contexto." #: ../Doc/reference/compound_stmts.rst:493 -#, fuzzy msgid "" "The context manager's :meth:`~object.__enter__` is loaded for later use." msgstr "" -"El administrador de contexto :meth:`__enter__` se carga para su uso " +"El administrador de contexto :meth:`~object.__enter__` se carga para su uso " "posterior." #: ../Doc/reference/compound_stmts.rst:495 -#, fuzzy msgid "The context manager's :meth:`~object.__exit__` is loaded for later use." msgstr "" -"El administrador de contexto :meth:`__exit__` se carga para su uso posterior." +"El administrador de contexto :meth:`~object.__exit__` se carga para su uso posterior." #: ../Doc/reference/compound_stmts.rst:497 -#, fuzzy msgid "The context manager's :meth:`~object.__enter__` method is invoked." -msgstr "Se invoca el método del administrador de contexto :meth:`__enter__`." +msgstr "Se invoca el método :meth:`__enter__` del administrador de contexto." #: ../Doc/reference/compound_stmts.rst:499 -#, fuzzy msgid "" "If a target was included in the :keyword:`with` statement, the return value " "from :meth:`~object.__enter__` is assigned to it." msgstr "" -"Si se incluyó el destino en la sentencia :keyword:`with`, se le asigna el " -"valor de retorno de :meth:`__enter__`." +"Si se incluyó el destino en la declaración :keyword:`with`, se le asigna el " +"valor de retorno de :meth:`~object.__enter__`." #: ../Doc/reference/compound_stmts.rst:504 -#, fuzzy msgid "" "The :keyword:`with` statement guarantees that if the :meth:`~object." "__enter__` method returns without an error, then :meth:`~object.__exit__` " @@ -738,31 +801,29 @@ msgid "" "target list, it will be treated the same as an error occurring within the " "suite would be. See step 7 below." msgstr "" -"La sentencia :keyword:`with` garantiza que si el método :meth:`__enter__` " -"regresa sin error, entonces siempre se llamará a :meth:`__exit__`. Por lo " -"tanto, si se produce un error durante la asignación a la lista de destino, " -"se tratará de la misma manera que si el error ocurriera dentro del bloque de " -"instrucciones. Vea el paso 7 a continuación." +"La declaración :keyword:`with` garantiza que si el método :meth:`~object." +"__enter__` regresa sin error, entonces siempre se llamará a :meth:`~object." +"__exit__`. Por lo tanto, si se produce un error durante la asignación a la " +"lista de destino, se trataría de la misma manera que si el error ocurriera " +"dentro del suite. Consulte el paso 7 a continuación." #: ../Doc/reference/compound_stmts.rst:510 msgid "The suite is executed." msgstr "La suite se ejecuta." #: ../Doc/reference/compound_stmts.rst:512 -#, fuzzy msgid "" "The context manager's :meth:`~object.__exit__` method is invoked. If an " "exception caused the suite to be exited, its type, value, and traceback are " "passed as arguments to :meth:`~object.__exit__`. Otherwise, three :const:" "`None` arguments are supplied." msgstr "" -"Se invoca el método del administrador de contexto :meth:`__exit__`. Si una " -"excepción causó la salida de la suite, su tipo, valor y rastreo se pasan " -"como argumentos a :meth:`__exit__`. De lo contrario, se proporcionan tres " -"argumentos :const:`None`." +"Se invoca el método :meth:`~object.__exit__` del administrador de contexto. " +"Si una excepción causó la salida de la suite, su tipo, valor y rastreo se " +"pasan como argumentos a :meth:`~object.__exit__`. De lo contrario, se " +"proporcionan tres argumentos :const:`None`." #: ../Doc/reference/compound_stmts.rst:517 -#, fuzzy msgid "" "If the suite was exited due to an exception, and the return value from the :" "meth:`~object.__exit__` method was false, the exception is reraised. If the " @@ -770,20 +831,20 @@ msgid "" "with the statement following the :keyword:`with` statement." msgstr "" "Si se salió de la suite debido a una excepción, y el valor de retorno del " -"método :meth:`__exit__` fue falso, la excepción se vuelve a plantear. Si el " -"valor de retorno era verdadero, la excepción se suprime y la ejecución " -"continúa con la sentencia que sigue a la sentencia :keyword:`with`." +"método :meth:`~object.__exit__` fue falso, la excepción se vuelve a " +"plantear. Si el valor de retorno era verdadero, la excepción se suprime y la " +"ejecución continúa con la declaración que sigue a la declaración :keyword:" +"`with`." #: ../Doc/reference/compound_stmts.rst:522 -#, fuzzy msgid "" "If the suite was exited for any reason other than an exception, the return " "value from :meth:`~object.__exit__` is ignored, and execution proceeds at " "the normal location for the kind of exit that was taken." msgstr "" "Si se salió de la suite por cualquier motivo que no sea una excepción, el " -"valor de retorno de :meth:`__exit__` se ignora y la ejecución continúa en la " -"ubicación normal para el tipo de salida que se tomó." +"valor de retorno de :meth:`~object.__exit__` se ignora y la ejecución continúa en " +"la ubicación normal para el tipo de salida que se tomó." #: ../Doc/reference/compound_stmts.rst:526 #: ../Doc/reference/compound_stmts.rst:1547 @@ -796,6 +857,8 @@ msgid "" "with EXPRESSION as TARGET:\n" " SUITE" msgstr "" +"with EXPRESSION as TARGET:\n" +" SUITE" #: ../Doc/reference/compound_stmts.rst:531 #: ../Doc/reference/compound_stmts.rst:556 @@ -822,6 +885,22 @@ msgid "" " if not hit_except:\n" " exit(manager, None, None, None)" msgstr "" +"manager = (EXPRESSION)\n" +"enter = type(manager).__enter__\n" +"exit = type(manager).__exit__\n" +"value = enter(manager)\n" +"hit_except = False\n" +"\n" +"try:\n" +" TARGET = value\n" +" SUITE\n" +"except:\n" +" hit_except = True\n" +" if not exit(manager, *sys.exc_info()):\n" +" raise\n" +"finally:\n" +" if not hit_except:\n" +" exit(manager, None, None, None)" #: ../Doc/reference/compound_stmts.rst:550 msgid "" @@ -836,6 +915,8 @@ msgid "" "with A() as a, B() as b:\n" " SUITE" msgstr "" +"with A() as a, B() as b:\n" +" SUITE" #: ../Doc/reference/compound_stmts.rst:558 msgid "" @@ -843,6 +924,9 @@ msgid "" " with B() as b:\n" " SUITE" msgstr "" +"with A() as a:\n" +" with B() as b:\n" +" SUITE" #: ../Doc/reference/compound_stmts.rst:562 msgid "" @@ -860,6 +944,11 @@ msgid "" "):\n" " SUITE" msgstr "" +"with (\n" +" A() as a,\n" +" B() as b,\n" +"):\n" +" SUITE" #: ../Doc/reference/compound_stmts.rst:571 msgid "Support for multiple context expressions." @@ -1058,6 +1147,18 @@ msgid "" "...\n" "Case 3, y: 200" msgstr "" +">>> flag = False\n" +">>> match (100, 200):\n" +"... case (100, 300): # No coinciden: 200 != 300\n" +"... print('Case 1')\n" +"... case (100, 200) if flag: # Coinciden, pero la guardia falla\n" +"... print('Case 2')\n" +"... case (100, y): # Coinciden, y vincula `y` a 200\n" +"... print(f'Case 3, y: {y}')\n" +"... case _: # Patrón no se intentó\n" +"... print('Case 4, I match anything!')\n" +"...\n" +"Case 3, y: 200" #: ../Doc/reference/compound_stmts.rst:687 msgid "" @@ -1721,7 +1822,6 @@ msgstr "" "duplicados; o un :exc:`ValueError` para claves con nombre del mismo valor." #: ../Doc/reference/compound_stmts.rst:1059 -#, fuzzy msgid "" "Key-value pairs are matched using the two-argument form of the mapping " "subject's ``get()`` method. Matched key-value pairs must already be present " @@ -1729,9 +1829,10 @@ msgid "" "`~object.__getitem__`." msgstr "" "Los pares clave-valor se hacen coincidir utilizando la forma de dos " -"argumentos del método ``get()`` del sujeto de mapeo. Los pares clave-valor " -"coincidentes ya deben estar presentes en la asignación y no deben crearse " -"sobre la marcha a través de :meth:`__missing__` o :meth:`__getitem__`." +"argumentos del método ``get()`` del sujeto de asignación. Los pares clave-" +"valor coincidentes ya deben estar presentes en la asignación y no deben " +"crearse sobre la marcha a través de :meth:`__missing__` o :meth:" +"`~object.__getitem__`." #: ../Doc/reference/compound_stmts.rst:1064 msgid "" @@ -2082,6 +2183,9 @@ msgid "" "@f2\n" "def func(): pass" msgstr "" +"@f1(arg)\n" +"@f2\n" +"def func(): pass" #: ../Doc/reference/compound_stmts.rst:1251 #: ../Doc/reference/compound_stmts.rst:1446 @@ -2093,6 +2197,8 @@ msgid "" "def func(): pass\n" "func = f1(arg)(f2(func))" msgstr "" +"def func(): pass\n" +"func = f1(arg)(f2(func))" #: ../Doc/reference/compound_stmts.rst:1256 msgid "" @@ -2113,7 +2219,6 @@ msgstr "" "restrictiva; ver :pep:`614` para más detalles." #: ../Doc/reference/compound_stmts.rst:1263 -#, fuzzy msgid "" "A list of :ref:`type parameters ` may be given in square " "brackets between the function's name and the opening parenthesis for its " @@ -2122,12 +2227,12 @@ msgid "" "function's :attr:`~function.__type_params__` attribute. See :ref:`generic-" "functions` for more." msgstr "" -"Se puede dar una :ref:`type parameters ` entre corchetes entre " -"el nombre de la función y el paréntesis de apertura para su lista de " -"parámetros. Esto indica a los verificadores de tipo estático que la función " -"es genérica. En ejecución, los parámetros de tipo pueden recuperarse del " -"atributo ``__type_params__``. Mirar :ref:`generic-functions` para más " -"información." +"Una lista de :ref:`parámetros del tipo ` se puede dar entre " +"corchetes entre el nombre de la función y el paréntesis de apertura para su " +"lista de parámetros. Esto indica a los verificadores de tipo estático que la " +"función es genérica. En ejecución, los parámetros de tipo pueden recuperarse " +"del atributo :attr:`~function.__type_params__`. Consulte :ref:`generic-" +"functions` para más información." #: ../Doc/reference/compound_stmts.rst:1270 #: ../Doc/reference/compound_stmts.rst:1465 @@ -2185,6 +2290,11 @@ msgid "" " penguin.append(\"property of the zoo\")\n" " return penguin" msgstr "" +"def whats_on_the_telly(penguin=None):\n" +" if penguin is None:\n" +" penguin = []\n" +" penguin.append(\"property of the zoo\")\n" +" return penguin" #: ../Doc/reference/compound_stmts.rst:1307 msgid "" @@ -2210,9 +2320,9 @@ msgstr "" "por defecto en la tupla vacía. Si el formulario \"``**identifier``\" está " "presente, se inicializa a una nueva asignación ordenada que recibe cualquier " "exceso de argumentos por palabra clave, por defecto a una nueva asignación " -"vacía del mismo tipo. Los parámetros después de \"``*``\" o " -"\"``*identifier``\" son parámetros solo por palabra clave y solo pueden " -"pasarse con argumentos de palabras claves usadas." +"vacía del mismo tipo. Los parámetros después de \"``*``\" o \"``*identifier``" +"\" son parámetros solo por palabra clave y solo pueden pasarse con " +"argumentos de palabras claves usadas." #: ../Doc/reference/compound_stmts.rst:1319 msgid "" @@ -2224,7 +2334,6 @@ msgstr "" "detalles." #: ../Doc/reference/compound_stmts.rst:1328 -#, fuzzy msgid "" "Parameters may have an :term:`annotation ` of the form " "\"``: expression``\" following the parameter name. Any parameter may have " @@ -2245,12 +2354,14 @@ msgstr "" "Los parámetros pueden tener :term:`annotation ` de la " "forma \"``: expression``\" que sigue al nombre del parámetro. Cualquier " "parámetro puede tener una anotación, incluso las de la forma ``*identifier`` " -"o ``** identifier``. Las funciones pueden tener una anotación \"return\" de " -"la forma \"``-> expression``\" después de la lista de parámetros. Estas " -"anotaciones pueden ser cualquier expresión válida de Python. La presencia de " -"anotaciones no cambia la semántica de una función. Los valores de anotación " -"están disponibles como valores de un diccionario con los nombres de los " -"parámetros en el atributo :attr:`__annotations__` del objeto de la función. " +"o ``** identifier``. (Como caso especial, parámetros de la forma " +"``*identifier`` puede tener una anotación \"``: *expression``\".) Las " +"funciones pueden tener una anotación \"return\" de la forma \"``-> " +"expression``\" después de la lista de parámetros. Estas anotaciones pueden " +"ser cualquier expresión válida de Python. La presencia de anotaciones no " +"cambia la semántica de una función. Los valores de anotación están " +"disponibles como valores de un diccionario con los nombres de los parámetros " +"como claves en el atributo :attr:`__annotations__` del objeto de la función. " "Si se usa ``annotations`` importada desde :mod:`__future__`, las anotaciones " "se conservan como cadenas de caracteres en tiempo de ejecución que permiten " "la evaluación pospuesta. De lo contrario, se evalúan cuando se ejecuta la " @@ -2262,6 +2373,8 @@ msgid "" "Parameters of the form \"``*identifier``\" may have an annotation \"``: " "*expression``\". See :pep:`646`." msgstr "" +"Parámetros de la forma \"``*identifier``\" puede tener una anotación " +"\"``: *expression``\". Consulte :pep:`646`." #: ../Doc/reference/compound_stmts.rst:1348 msgid "" @@ -2320,13 +2433,12 @@ msgid ":pep:`526` - Syntax for Variable Annotations" msgstr ":pep:`526` - Sintaxis para anotaciones variables" #: ../Doc/reference/compound_stmts.rst:1371 -#, fuzzy msgid "" "Ability to type hint variable declarations, including class variables and " "instance variables." msgstr "" -"Capacidad para escribir declaraciones de variables indirectas, incluidas " -"variables de clase y variables de instancia" +"Capacidad para escribir anotaciones de tipo para declaraciones de variables, " +"incluidas variables de clase y variables de instancia." #: ../Doc/reference/compound_stmts.rst:1376 msgid ":pep:`563` - Postponed Evaluation of Annotations" @@ -2342,18 +2454,14 @@ msgstr "" "de una evaluación apresurada." #: ../Doc/reference/compound_stmts.rst:1379 -#, fuzzy msgid ":pep:`318` - Decorators for Functions and Methods" -msgstr ":pep:`3107` - Anotaciones de funciones" +msgstr ":pep:`318` - Decoradores para Funciones y Métodos" #: ../Doc/reference/compound_stmts.rst:1379 -#, fuzzy msgid "" "Function and method decorators were introduced. Class decorators were " "introduced in :pep:`3129`." -msgstr "" -"La propuesta que agregó decoradores de clase. Los decoradores de funciones y " -"métodos se introdujeron en :pep:`318`." +msgstr "Decoradores de función y método se introdujeron en :pep:`3129`." #: ../Doc/reference/compound_stmts.rst:1385 msgid "Class definitions" @@ -2384,6 +2492,8 @@ msgid "" "class Foo:\n" " pass" msgstr "" +"class Foo:\n" +" pass" #: ../Doc/reference/compound_stmts.rst:1416 msgid "is equivalent to ::" @@ -2394,6 +2504,8 @@ msgid "" "class Foo(object):\n" " pass" msgstr "" +"class Foo(object):\n" +" pass" #: ../Doc/reference/compound_stmts.rst:1421 msgid "" @@ -2417,7 +2529,6 @@ msgstr "" "de clase en el espacio de nombres local original." #: ../Doc/reference/compound_stmts.rst:1430 -#, fuzzy msgid "" "The order in which attributes are defined in the class body is preserved in " "the new class's :attr:`~type.__dict__`. Note that this is reliable only " @@ -2425,9 +2536,9 @@ msgid "" "using the definition syntax." msgstr "" "El orden en que se definen los atributos en el cuerpo de la clase se " -"conserva en el ``__dict__`` de la nueva clase. Tenga en cuenta que esto es " -"confiable solo justo después de crear la clase y solo para las clases que se " -"definieron utilizando la sintaxis de definición." +"conserva en el :attr:`~type.__dict__` de la nueva clase. Tenga en cuenta que " +"esto es confiable solo justo después de crear la clase y solo para las " +"clases que se definieron utilizando la sintaxis de definición." #: ../Doc/reference/compound_stmts.rst:1435 msgid "" @@ -2449,12 +2560,17 @@ msgid "" "@f2\n" "class Foo: pass" msgstr "" +"@f1(arg)\n" +"@f2\n" +"class Foo: pass" #: ../Doc/reference/compound_stmts.rst:1448 msgid "" "class Foo: pass\n" "Foo = f1(arg)(f2(Foo))" msgstr "" +"class Foo: pass\n" +"Foo = f1(arg)(f2(Foo))" #: ../Doc/reference/compound_stmts.rst:1451 msgid "" @@ -2476,7 +2592,6 @@ msgstr "" "restrictiva; ver :pep:`614` para más detalles." #: ../Doc/reference/compound_stmts.rst:1459 -#, fuzzy msgid "" "A list of :ref:`type parameters ` may be given in square " "brackets immediately after the class's name. This indicates to static type " @@ -2484,11 +2599,11 @@ msgid "" "retrieved from the class's :attr:`~type.__type_params__` attribute. See :ref:" "`generic-classes` for more." msgstr "" -"Una lista de :ref:`type parameters ` definida inmediatamente " +"Una lista de :ref:`parámetros del tipo ` definida inmediatamente " "después de un nombre de clase debe ir entre corchetes. Esto indica a los " "verificadores de tipo estático que la clase es genérica. En ejecución, el " -"tipo de parámetros puede retirarse de la clase ``__type_params__`` . Para " -"más información ver :ref:`generic-classes` ." +"tipo de parámetros puede retirarse del atributo de la clase :attr:`~type." +"__type_params__`. Para más información consulte :ref:`generic-classes`." #: ../Doc/reference/compound_stmts.rst:1468 msgid "" @@ -2583,6 +2698,9 @@ msgid "" " do_stuff()\n" " await some_coroutine()" msgstr "" +"async def func(param1, param2):\n" +" do_stuff()\n" +" await some_coroutine()" #: ../Doc/reference/compound_stmts.rst:1527 msgid "" @@ -2621,6 +2739,10 @@ msgid "" "else:\n" " SUITE2" msgstr "" +"async for TARGET in ITER:\n" +" SUITE\n" +"else:\n" +" SUITE2" #: ../Doc/reference/compound_stmts.rst:1554 msgid "Is semantically equivalent to::" @@ -2642,6 +2764,19 @@ msgid "" "else:\n" " SUITE2" msgstr "" +"iter = (ITER)\n" +"iter = type(iter).__aiter__(iter)\n" +"running = True\n" +"\n" +"while running:\n" +" try:\n" +" TARGET = await type(iter).__anext__(iter)\n" +" except StopAsyncIteration:\n" +" running = False\n" +" else:\n" +" SUITE\n" +"else:\n" +" SUITE2" #: ../Doc/reference/compound_stmts.rst:1570 msgid "" @@ -2675,6 +2810,8 @@ msgid "" "async with EXPRESSION as TARGET:\n" " SUITE" msgstr "" +"async with EXPRESSION as TARGET:\n" +" SUITE" #: ../Doc/reference/compound_stmts.rst:1595 msgid "" @@ -2695,6 +2832,22 @@ msgid "" " if not hit_except:\n" " await aexit(manager, None, None, None)" msgstr "" +"manager = (EXPRESSION)\n" +"aenter = type(manager).__aenter__\n" +"aexit = type(manager).__aexit__\n" +"value = await aenter(manager)\n" +"hit_except = False\n" +"\n" +"try:\n" +" TARGET = value\n" +" SUITE\n" +"except:\n" +" hit_except = True\n" +" if not await aexit(manager, *sys.exc_info()):\n" +" raise\n" +"finally:\n" +" if not hit_except:\n" +" await aexit(manager, None, None, None)" #: ../Doc/reference/compound_stmts.rst:1612 msgid "" @@ -2731,6 +2884,7 @@ msgstr "Listas de tipo parámetro" #: ../Doc/reference/compound_stmts.rst:1630 msgid "Support for default values was added (see :pep:`696`)." msgstr "" +"Compatibilidad para valores predeterminados se añadió (Consulte :pep:`696`)." #: ../Doc/reference/compound_stmts.rst:1643 msgid "" @@ -2759,6 +2913,20 @@ msgid "" "\n" "type ListOrSet[T] = list[T] | set[T]" msgstr "" +"def max[T](args: list[T]) -> T:\n" +" ...\n" +"\n" +"async def amax[T](args: list[T]) -> T:\n" +" ...\n" +"\n" +"class Bag[T]:\n" +" def __iter__(self) -> Iterator[T]:\n" +" ...\n" +"\n" +" def add(self, arg: T) -> None:\n" +" ...\n" +"\n" +"type ListOrSet[T] = list[T] | set[T]" #: ../Doc/reference/compound_stmts.rst:1662 msgid "" @@ -2790,16 +2958,15 @@ msgstr "" "``T`` no está disponible en el ámbito del módulo. A continuación, se " "describe con más precisión la semántica de los objetos genéricos. El ámbito " "de los parámetros de tipo se modela con una función especial (técnicamente, " -"una :ref:`annotation scope `) que envuelve la creación " +"una :ref:`ámbito de anotación `) que envuelve la creación " "del objeto genérico." #: ../Doc/reference/compound_stmts.rst:1676 -#, fuzzy msgid "" "Generic functions, classes, and type aliases have a :attr:`~definition." "__type_params__` attribute listing their type parameters." msgstr "" -"Las funciones genéricas, clases y alias de tipo tienen un atributo :attr:`!" +"Funciones genéricas, clases y aliases de tipo tienen un atributo ::attr:`~definition." "__type_params__` que lista sus parámetros de tipo." #: ../Doc/reference/compound_stmts.rst:1679 @@ -2891,6 +3058,16 @@ msgid "" "default value is specified for a type parameter, the ``__default__`` " "attribute is set to the special sentinel object :data:`typing.NoDefault`." msgstr "" +"Los tres sabores de parámetros de tipo también pueden tener un *valor " +"predeterminado*, lo que se usa cuando el parámetro de tipo no se proporciona " +"explícitamente. Esto se añade adjuntando un solo signo igual (``=``) seguido " +"por una expresión. Como los límites y restricciones del tipo variables, el " +"valor predeterminado no se evalúa cuando el objeto se crea, solamente " +"cuando se accede el atributo ``__default__`` del parámetro del tipo. Con " +"este fin, el valor predeterminado se evalúa en un :ref:`ámbito de anotación " +"` separado. Si no se especifica un valor predeterminado " +"para un parámetro de tipo, el atributo ``__default__`` se establece en el " +"objeto de centinela especial :data:`typing.NoDefault`." #: ../Doc/reference/compound_stmts.rst:1717 msgid "" @@ -2917,6 +3094,20 @@ msgid "" " *e: SimpleTypeVarTuple,\n" "): ..." msgstr "" +"def overly_generic[\n" +" SimpleTypeVar,\n" +" TypeVarWithDefault = int,\n" +" TypeVarWithBound: int,\n" +" TypeVarWithConstraints: (str, bytes),\n" +" *SimpleTypeVarTuple = (int, float),\n" +" **SimpleParamSpec = (str, bytearray),\n" +"](\n" +" a: SimpleTypeVar,\n" +" b: TypeVarWithDefault,\n" +" c: TypeVarWithBound,\n" +" d: Callable[SimpleParamSpec, TypeVarWithConstraints],\n" +" *e: SimpleTypeVarTuple,\n" +"): ..." #: ../Doc/reference/compound_stmts.rst:1737 msgid "Generic functions" @@ -2928,7 +3119,7 @@ msgstr "Las funciones genéricas son declaradas de la siguiente forma::" #: ../Doc/reference/compound_stmts.rst:1741 msgid "def func[T](arg: T): ..." -msgstr "" +msgstr "def func[T](arg: T): ..." #: ../Doc/reference/compound_stmts.rst:1743 #: ../Doc/reference/compound_stmts.rst:1803 @@ -2944,6 +3135,12 @@ msgid "" " return func\n" "func = TYPE_PARAMS_OF_func()" msgstr "" +"annotation-def TYPE_PARAMS_OF_func():\n" +" T = typing.TypeVar(\"T\")\n" +" def func(arg: T): ...\n" +" func.__type_params__ = (T,)\n" +" return func\n" +"func = TYPE_PARAMS_OF_func()" #: ../Doc/reference/compound_stmts.rst:1752 msgid "" @@ -2953,7 +3150,7 @@ msgid "" "attribute access on the :mod:`typing` module, but creates an instance of :" "data:`typing.TypeVar` directly.)" msgstr "" -"Aquí ``annotation-def`` indica un :ref:`annotation scope `, que en realidad no está vinculado a ningún nombre en tiempo de " "ejecución. (Se ha tomado otra libertad en la traducción: la sintaxis no pasa " "por el acceso a atributos en el módulo :mod:`typing`, sino que crea una " @@ -2983,6 +3180,9 @@ msgid "" "def func[T: int, *Ts, **P](*args: *Ts, arg: Callable[P, T] = some_default):\n" " ..." msgstr "" +"@decorator\n" +"def func[T: int, *Ts, **P](*args: *Ts, arg: Callable[P, T] = some_default):\n" +" ..." #: ../Doc/reference/compound_stmts.rst:1769 msgid "" @@ -2992,6 +3192,8 @@ msgstr "" "Excepto para la :ref:`lazy-evaluation ` del :class:`~typing." "TypeVar` vinculada, esto es equivalente a::" +# No se pueden traducir los commentarios hasta que pospell tenga la habilidad +# de entender líneas de código. #: ../Doc/reference/compound_stmts.rst:1772 msgid "" "DEFAULT_OF_arg = some_default\n" @@ -3013,6 +3215,24 @@ msgid "" " return func\n" "func = decorator(TYPE_PARAMS_OF_func())" msgstr "" +"DEFAULT_OF_arg = some_default\n" +"\n" +"annotation-def TYPE_PARAMS_OF_func():\n" +"\n" +" annotation-def BOUND_OF_T():\n" +" return int\n" +" # In reality, BOUND_OF_T() is evaluated only on demand.\n" +" T = typing.TypeVar(\"T\", bound=BOUND_OF_T())\n" +"\n" +" Ts = typing.TypeVarTuple(\"Ts\")\n" +" P = typing.ParamSpec(\"P\")\n" +"\n" +" def func(*args: *Ts, arg: Callable[P, T] = DEFAULT_OF_arg):\n" +" ...\n" +"\n" +" func.__type_params__ = (T, Ts, P)\n" +" return func\n" +"func = decorator(TYPE_PARAMS_OF_func())" #: ../Doc/reference/compound_stmts.rst:1791 msgid "" @@ -3032,7 +3252,7 @@ msgstr "Las clases genéricas son declaradas de la siguiente forma::" #: ../Doc/reference/compound_stmts.rst:1801 msgid "class Bag[T]: ..." -msgstr "" +msgstr "class Bag[T]: ..." #: ../Doc/reference/compound_stmts.rst:1805 msgid "" @@ -3044,6 +3264,13 @@ msgid "" " return Bag\n" "Bag = TYPE_PARAMS_OF_Bag()" msgstr "" +"annotation-def TYPE_PARAMS_OF_Bag():\n" +" T = typing.TypeVar(\"T\")\n" +" class Bag(typing.Generic[T]):\n" +" __type_params__ = (T,)\n" +" ...\n" +" return Bag\n" +"Bag = TYPE_PARAMS_OF_Bag()" #: ../Doc/reference/compound_stmts.rst:1813 msgid "" @@ -3052,7 +3279,7 @@ msgid "" "is not actually bound at runtime." msgstr "" "Aquí de nuevo ``annotation-def`` (no es una palabra clave real) indica un :" -"ref:`annotation scope `, y el nombre " +"ref:`ámbito de anotación `, y el nombre " "``TYPE_PARAMS_OF_Bag`` no está vinculado en tiempo de ejecución." #: ../Doc/reference/compound_stmts.rst:1817 @@ -3073,6 +3300,8 @@ msgid "" "@decorator\n" "class Bag(Base[T], arg=T): ..." msgstr "" +"@decorator\n" +"class Bag(Base[T], arg=T): ..." #: ../Doc/reference/compound_stmts.rst:1826 msgid "This is equivalent to::" @@ -3088,6 +3317,13 @@ msgid "" " return Bag\n" "Bag = decorator(TYPE_PARAMS_OF_Bag())" msgstr "" +"annotation-def TYPE_PARAMS_OF_Bag():\n" +" T = typing.TypeVar(\"T\")\n" +" class Bag(Base[T], typing.Generic[T], arg=T):\n" +" __type_params__ = (T,)\n" +" ...\n" +" return Bag\n" +"Bag = decorator(TYPE_PARAMS_OF_Bag())" #: ../Doc/reference/compound_stmts.rst:1839 msgid "Generic type aliases" @@ -3103,7 +3339,7 @@ msgstr "" #: ../Doc/reference/compound_stmts.rst:1843 msgid "type ListOrSet[T] = list[T] | set[T]" -msgstr "" +msgstr "type ListOrSet[T] = list[T] | set[T]" #: ../Doc/reference/compound_stmts.rst:1845 msgid "" @@ -3113,6 +3349,8 @@ msgstr "" "Excepto para la :ref:`evaluación perezosa ` del valor, esto " "es equivalente a::" +# No se pueden traducir los commentarios hasta que pospell tenga la habilidad +# de entender líneas de código. #: ../Doc/reference/compound_stmts.rst:1848 msgid "" "annotation-def TYPE_PARAMS_OF_ListOrSet():\n" @@ -3125,6 +3363,15 @@ msgid "" "type_params=(T,))\n" "ListOrSet = TYPE_PARAMS_OF_ListOrSet()" msgstr "" +"annotation-def TYPE_PARAMS_OF_ListOrSet():\n" +" T = typing.TypeVar(\"T\")\n" +"\n" +" annotation-def VALUE_OF_ListOrSet():\n" +" return list[T] | set[T]\n" +" # In reality, the value is lazily evaluated\n" +" return typing.TypeAliasType(\"ListOrSet\", VALUE_OF_ListOrSet(), " +"type_params=(T,))\n" +"ListOrSet = TYPE_PARAMS_OF_ListOrSet()" #: ../Doc/reference/compound_stmts.rst:1857 msgid "" @@ -3133,7 +3380,7 @@ msgid "" "``TYPE_PARAMS_OF_ListOrSet`` are not actually bound at runtime." msgstr "" "Aquí, ``annotation-def`` (no es una palabra clave real) indica un :ref:" -"`annotation scope `. Los nombres en mayúsculas como " +"`ámbito de anotación `. Los nombres en mayúsculas como " "``TYPE_PARAMS_OF_ListOrSet`` no están vinculados en tiempo de ejecución." #: ../Doc/reference/compound_stmts.rst:1862 @@ -3240,26 +3487,24 @@ msgstr "" "MappingProxyType` son asignaciones." #: ../Doc/reference/compound_stmts.rst:1896 -#, fuzzy msgid "" "A string literal appearing as the first statement in the function body is " "transformed into the function's :attr:`~function.__doc__` attribute and " "therefore the function's :term:`docstring`." msgstr "" -"Una cadena de caracteres literal que aparece como la primera sentencia en el " -"cuerpo de la función se transforma en el atributo ``__doc__`` de la función " -"y, por lo tanto, en funciones :term:`docstring`." +"Una cadena de caracteres literal que aparece como la primera declaración en " +"el cuerpo de la función se transforma en el atributo :attr:`~function." +"__doc__` y por lo tanto en :term:`docstring` de la función." #: ../Doc/reference/compound_stmts.rst:1900 -#, fuzzy msgid "" "A string literal appearing as the first statement in the class body is " "transformed into the namespace's :attr:`~type.__doc__` item and therefore " "the class's :term:`docstring`." msgstr "" -"Una cadena de caracteres literal que aparece como la primera sentencia en el " -"cuerpo de la clase se transforma en el elemento del espacio de nombre " -"``__doc__`` y, por lo tanto, de la clase :term:`docstring`." +"Una cadena de caracteres literal que aparece como la primera declaración en " +"el cuerpo de la clase se transforma en el elemento del espacio de nombre :" +"attr:`~type.__doc__` y, por lo tanto, de la clase :term:`docstring`." #: ../Doc/reference/compound_stmts.rst:7 msgid "compound" From 34166cd4e1337aa0a799c5d176ad5b4ecd0f150c Mon Sep 17 00:00:00 2001 From: Francisco Mora <193986059+srmorita@users.noreply.github.com> Date: Tue, 4 Feb 2025 12:42:10 -0300 Subject: [PATCH 18/78] Traducido archivo c-api/number (#3368) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #3275 Se corrigen fuzzy, traducciones faltantes se mantienen, ya que, son código. --------- Signed-off-by: Francisco Mora --- c-api/number.po | 85 ++++++++++++++++++++++++------------------------- 1 file changed, 41 insertions(+), 44 deletions(-) diff --git a/c-api/number.po b/c-api/number.po index 6ec7173f10..25cb1c4dd6 100644 --- a/c-api/number.po +++ b/c-api/number.po @@ -11,15 +11,16 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: 2024-01-27 17:24+0100\n" -"Last-Translator: Meta Louis-Kosmas \n" -"Language: es\n" +"PO-Revision-Date: 2025-02-03 17:14-0300\n" +"Last-Translator: srmorita \n" "Language-Team: python-doc-es\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\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.16.0\n" +"X-Generator: Poedit 3.5\n" #: ../Doc/c-api/number.rst:6 msgid "Number Protocol" @@ -80,7 +81,6 @@ msgstr "" "``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\" " @@ -92,7 +92,7 @@ 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\" " "porque los números binarios de punto flotante son aproximados; No es posible " -"representar todos los números reales en la base dos. Esta función puede " +"representar todos los números reales en base dos. Esta función puede " "retornar un valor de punto flotante cuando se pasan dos enteros. Es " "equivalente a la expresión de Python ``o1 / o2``." @@ -256,7 +256,6 @@ msgstr "" "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\" " @@ -269,7 +268,7 @@ 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\" " "porque los números binarios de coma flotante son aproximados; No es posible " -"representar todos los números reales en la base dos. Esta función puede " +"representar todos los números reales en base dos. Esta función puede " "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." @@ -296,9 +295,9 @@ msgstr "" "falla. La 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`` " "cuando *o3* es :c:data:`Py_None`, o una variante en su lugar (*in-place*) de " -"``pow (o1, o2, o3)`` de lo contrario. Si se ignora *o3*, pase :c:data:" -"`Py_None` en su lugar (pasar ``NULL`` para *o3* provocaría un acceso ilegal " -"a la memoria)." +"``pow (o1, o2, o3)`` de lo contrario. Si se ignora *o3*, " +"pase :c:data:`Py_None` en su lugar (pasar ``NULL`` para *o3* provocaría un " +"acceso ilegal a la memoria)." #: ../Doc/c-api/number.rst:206 msgid "" @@ -374,8 +373,8 @@ msgstr "" #: ../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." +"Returns the *o* converted to a Python int on success or ``NULL`` with " +"a :exc:`TypeError` exception raised on failure." 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." @@ -393,8 +392,8 @@ 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 " "string is prefixed with a base marker of ``'0b'``, ``'0o'``, or ``'0x'``, " -"respectively. If *n* is not a Python int, it is converted with :c:func:" -"`PyNumber_Index` first." +"respectively. If *n* is not a Python int, it is converted " +"with :c:func:`PyNumber_Index` first." msgstr "" "Retorna el entero *n* convertido a base *base* como una cadena de " "caracteres. El argumento *base* debe ser uno de 2, 8, 10 o 16. Para la base " @@ -403,66 +402,64 @@ msgstr "" "(*int*) Python, primero se convierte con :c:func:`PyNumber_Index`." #: ../Doc/c-api/number.rst:276 -#, fuzzy msgid "" "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``." +"Retorna *o* convertido a un valor :c:type:`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:279 -#, fuzzy -msgid "" -"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 " -"negative integer or ``PY_SSIZE_T_MAX`` for a positive integer." -msgstr "" -"Si *o* se puede convertir a un entero Python (*int*) pero el intento de " -"convertir a un valor ``Py_ssize_t`` lanzaría un :exc:`OverflowError`, " -"entonces el argumento *exc* es el tipo de excepción que se lanzará " -"(generalmente :exc:`IndexError` o :exc:`OverflowError`). Si *exc* es " -"``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." +msgid "" +"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 negative integer or ``PY_SSIZE_T_MAX`` for a positive integer." +msgstr "" +"Si *o* puede convertirse a un entero de Python pero el intento de " +"convertirlo a un valor :c:type:`Py_ssize_t` lanzaría " +"un :exc:`OverflowError`, entonces el argumento *exc* es el tipo de excepción " +"que se lanzará (normalmente :exc:`IndexError` o :exc:`OverflowError`). Si " +"*exc* es ``NULL``, la excepción se borra y el valor se recorta a " +"``PY_SSIZE_T_MIN`` para un entero negativo o a ``PY_SSIZE_T_MAX`` para un " +"entero positivo." #: ../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." 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." +"Retorna ``1`` si *o* es un entero índice (tiene la ranura ``nb_index`` de la " +"estructura ``tp_as_number`` rellenada), y ``0`` en caso contrario. Esta " +"función siempre finaliza con éxito." #: ../Doc/c-api/number.rst:67 ../Doc/c-api/number.rst:75 #: ../Doc/c-api/number.rst:97 ../Doc/c-api/number.rst:195 #: ../Doc/c-api/number.rst:241 ../Doc/c-api/number.rst:249 msgid "built-in function" -msgstr "" +msgstr "built-in function" #: ../Doc/c-api/number.rst:67 msgid "divmod" -msgstr "" +msgstr "divmod" #: ../Doc/c-api/number.rst:75 ../Doc/c-api/number.rst:195 msgid "pow" -msgstr "" +msgstr "pow" #: ../Doc/c-api/number.rst:97 msgid "abs" -msgstr "" +msgstr "abs" #: ../Doc/c-api/number.rst:241 msgid "int" -msgstr "" +msgstr "int" #: ../Doc/c-api/number.rst:249 msgid "float" -msgstr "" +msgstr "float" From 2a167a622b977dfad896ff1a55823f5713880915 Mon Sep 17 00:00:00 2001 From: Carlos Mena <50986837+carlosm00@users.noreply.github.com> Date: Thu, 6 Feb 2025 05:21:26 +0100 Subject: [PATCH 19/78] Traduccion deprecations/pending removal in 3.14.po (#3367) Closes #3295 --- deprecations/pending-removal-in-3.14.po | 112 +++++++++++++++++++----- 1 file changed, 88 insertions(+), 24 deletions(-) diff --git a/deprecations/pending-removal-in-3.14.po b/deprecations/pending-removal-in-3.14.po index b1ab292270..2b54cd1856 100644 --- a/deprecations/pending-removal-in-3.14.po +++ b/deprecations/pending-removal-in-3.14.po @@ -10,19 +10,20 @@ msgstr "" "Project-Id-Version: Python en Español 3.13\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language: es\n" +"PO-Revision-Date: 2025-02-03 22:46+0100\n" +"Last-Translator: Carlos Mena Pérez <@carlosm00>\n" "Language-Team: es \n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\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.16.0\n" +"X-Generator: Poedit 3.5\n" #: ../Doc/deprecations/pending-removal-in-3.14.rst:2 msgid "Pending Removal in Python 3.14" -msgstr "" +msgstr "Pendiente de eliminación en Python 3.13" #: ../Doc/deprecations/pending-removal-in-3.14.rst:4 msgid "" @@ -30,6 +31,9 @@ msgid "" "argparse.BooleanOptionalAction` are deprecated and will be removed in 3.14. " "(Contributed by Nikita Sobolev in :gh:`92248`.)" msgstr "" +":mod:`argparse`: Los parámetros de :class:`!argparse.BooleanOptionalAction`, " +"*type*, *choices*, y *metavar*, son obsoletos y serán eliminados en la " +"versión 3.14 (Contribución de Nikita Sobolev en :gh:`92248`.)" #: ../Doc/deprecations/pending-removal-in-3.14.rst:9 msgid "" @@ -37,36 +41,42 @@ msgid "" "since Python 3.8, now cause a :exc:`DeprecationWarning` to be emitted at " "runtime when they are accessed or used, and will be removed in Python 3.14:" msgstr "" +":mod:`ast`: Las siguientes capacidades han quedado obsoletas en la " +"documentación desde Python 3.8, ahora hacen que se emita una excepción :exc:" +"`DeprecationWarning` en tiempo de ejecución cuando se accede a ellas o se " +"utilizan, y se eliminarán en Python 3.14:" #: ../Doc/deprecations/pending-removal-in-3.14.rst:13 msgid ":class:`!ast.Num`" -msgstr "" +msgstr ":class:`!ast.Num`" #: ../Doc/deprecations/pending-removal-in-3.14.rst:14 msgid ":class:`!ast.Str`" -msgstr "" +msgstr ":class:`!ast.Str`" #: ../Doc/deprecations/pending-removal-in-3.14.rst:15 msgid ":class:`!ast.Bytes`" -msgstr "" +msgstr ":class:`!ast.Bytes`" #: ../Doc/deprecations/pending-removal-in-3.14.rst:16 msgid ":class:`!ast.NameConstant`" -msgstr "" +msgstr ":class:`!ast.NameConstant`" #: ../Doc/deprecations/pending-removal-in-3.14.rst:17 msgid ":class:`!ast.Ellipsis`" -msgstr "" +msgstr ":class:`!ast.Ellipsis`" #: ../Doc/deprecations/pending-removal-in-3.14.rst:19 msgid "" "Use :class:`ast.Constant` instead. (Contributed by Serhiy Storchaka in :gh:" "`90953`.)" msgstr "" +"Use :class:`ast.Constant` en su lugar. (Contribución de Serhiy Storchaka en :" +"gh:`90953`.)" #: ../Doc/deprecations/pending-removal-in-3.14.rst:22 msgid ":mod:`asyncio`:" -msgstr "" +msgstr ":mod:`asyncio`:" #: ../Doc/deprecations/pending-removal-in-3.14.rst:24 msgid "" @@ -75,6 +85,11 @@ msgid "" "class:`~asyncio.SafeChildWatcher` are deprecated and will be removed in " "Python 3.14. (Contributed by Kumar Aditya in :gh:`94597`.)" msgstr "" +"Las clases de observadores de procesos :class:`~asyncio." +"MultiLoopChildWatcher`, :class:`~asyncio.FastChildWatcher`, :class:`~asyncio." +"AbstractChildWatcher` y :class:`~asyncio.SafeChildWatcher` quedan obsoletos " +"y serán eliminadas en Python 3.14. (Contribución de Kumar Aditya en :gh:" +"`94597`.)" #: ../Doc/deprecations/pending-removal-in-3.14.rst:30 msgid "" @@ -83,6 +98,10 @@ msgid "" "AbstractEventLoopPolicy.get_child_watcher` are deprecated and will be " "removed in Python 3.14. (Contributed by Kumar Aditya in :gh:`94597`.)" msgstr "" +":func:`asyncio.set_child_watcher`, :func:`asyncio.get_child_watcher`, :meth:" +"`asyncio.AbstractEventLoopPolicy.set_child_watcher` y :meth:`asyncio." +"AbstractEventLoopPolicy.get_child_watcher` quedan obsoletos y serán " +"eliminadas en Python 3.14. (Contribución de Kumar Aditya en :gh:`94597`.)" #: ../Doc/deprecations/pending-removal-in-3.14.rst:36 msgid "" @@ -91,6 +110,10 @@ msgid "" "and it decides to create one. (Contributed by Serhiy Storchaka and Guido van " "Rossum in :gh:`100160`.)" msgstr "" +"El método :meth:`~asyncio.get_event_loop` de la política de bucle de eventos " +"predeterminada ahora emite un :exc:`DeprecationWarning` si no hay ningún " +"bucle de eventos definido actualmente y decide crear uno. (Contribución de " +"Serhiy Storchaka y Guido van Rossum en :gh:`100160`.)" #: ../Doc/deprecations/pending-removal-in-3.14.rst:41 msgid "" @@ -99,44 +122,50 @@ msgid "" "typing, prefer a union, like ``bytes | bytearray``, or :class:`collections." "abc.Buffer`. (Contributed by Shantanu Jain in :gh:`91896`.)" msgstr "" +":mod:`collections.abc`: :class:`~collections.abc.ByteString` queda obsoleto. " +"Se prefiere :class:`!Sequence` o :class:`~collections.abc.Buffer`. Para uso " +"en tipificación, se prefiere una unión, como ``bytes | bytearray`` o :class:" +"`collections.abc.Buffer`. (Contribución de Shantanu Jain en :gh:`91896`.)" #: ../Doc/deprecations/pending-removal-in-3.14.rst:47 msgid "" ":mod:`email`: Deprecated the *isdst* parameter in :func:`email.utils." "localtime`. (Contributed by Alan Williams in :gh:`72346`.)" msgstr "" +":mod:`email`: Se ha descontinuado el parámetro *isdst* en :func:`email.utils." +"localtime`. (Contribución de Alan Williams en :gh:`72346`.)" #: ../Doc/deprecations/pending-removal-in-3.14.rst:50 msgid ":mod:`importlib.abc` deprecated classes:" -msgstr "" +msgstr "Clases obsoletas de :mod:`importlib.abc`:" #: ../Doc/deprecations/pending-removal-in-3.14.rst:52 msgid ":class:`!importlib.abc.ResourceReader`" -msgstr "" +msgstr ":class:`!importlib.abc.ResourceReader`" #: ../Doc/deprecations/pending-removal-in-3.14.rst:53 msgid ":class:`!importlib.abc.Traversable`" -msgstr "" +msgstr ":class:`!importlib.abc.Traversable`" #: ../Doc/deprecations/pending-removal-in-3.14.rst:54 msgid ":class:`!importlib.abc.TraversableResources`" -msgstr "" +msgstr ":class:`!importlib.abc.TraversableResources`" #: ../Doc/deprecations/pending-removal-in-3.14.rst:56 msgid "Use :mod:`importlib.resources.abc` classes instead:" -msgstr "" +msgstr "Use las clases :mod:`importlib.resources.abc` en su lugar:" #: ../Doc/deprecations/pending-removal-in-3.14.rst:58 msgid ":class:`importlib.resources.abc.Traversable`" -msgstr "" +msgstr ":class:`importlib.resources.abc.Traversable`" #: ../Doc/deprecations/pending-removal-in-3.14.rst:59 msgid ":class:`importlib.resources.abc.TraversableResources`" -msgstr "" +msgstr ":class:`importlib.resources.abc.TraversableResources`" #: ../Doc/deprecations/pending-removal-in-3.14.rst:61 msgid "(Contributed by Jason R. Coombs and Hugo van Kemenade in :gh:`93963`.)" -msgstr "" +msgstr "(Contribución de Jason R. Coombs y Hugo van Kemenade en :gh:`93963`.)" #: ../Doc/deprecations/pending-removal-in-3.14.rst:63 msgid "" @@ -145,6 +174,11 @@ msgid "" "removed in 3.14 for a significant reduction in code volume and maintenance " "burden. (Contributed by Raymond Hettinger in :gh:`101588`.)" msgstr "" +":mod:`itertools` tenía un soporte indocumentado, ineficiente, históricamente " +"lleno de errores e inconsistente para operaciones de copia, copia profunda y " +"*pickle*. Esto se eliminará en la versión 3.14 para lograr una reducción " +"significativa en el volumen de código y la carga de mantenimiento. " +"(Contribución de Raymond Hettinger en :gh:`101588`.)" #: ../Doc/deprecations/pending-removal-in-3.14.rst:69 msgid "" @@ -156,12 +190,23 @@ msgid "" "set_start_method` APIs to explicitly specify when your code *requires* " "``'fork'``. See :ref:`multiprocessing-start-methods`." msgstr "" +":mod:`multiprocessing`: El método de inicio predeterminado cambiará a uno " +"más seguro en Linux, BSDs y otras plataformas POSIX que no sean macOS donde " +"``'fork'`` es actualmente el predeterminado (:gh:`84559`). Agregar una " +"advertencia de tiempo de ejecución sobre esto se consideró demasiado " +"disruptivo, ya que no se espera que la mayoría del código tenga en cuenta " +"esto. Use las APIs :func:`~multiprocessing.get_context` o :func:" +"`~multiprocessing.set_start_method` para especificar explícitamente cuándo " +"su código *requires* ``'fork'``. Consulte :ref:`multiprocessing-start-" +"methods`." #: ../Doc/deprecations/pending-removal-in-3.14.rst:77 msgid "" ":mod:`pathlib`: :meth:`~pathlib.PurePath.is_relative_to` and :meth:`~pathlib." "PurePath.relative_to`: passing additional arguments is deprecated." msgstr "" +":mod:`pathlib`: :meth:`~pathlib.PurePath.is_relative_to` y :meth:`~pathlib." +"PurePath.relative_to`: pasar argumentos adicionales está obsoleto." #: ../Doc/deprecations/pending-removal-in-3.14.rst:81 msgid "" @@ -169,26 +214,29 @@ msgid "" "now raise :exc:`DeprecationWarning`; use :func:`importlib.util.find_spec` " "instead. (Contributed by Nikita Sobolev in :gh:`97850`.)" msgstr "" +":mod:`pkgutil`: :func:`~pkgutil.find_loader` y :func:`~pkgutil.get_loader` " +"ahora generan :exc:`DeprecationWarning`; use :func:`importlib.util." +"find_spec` en su lugar. (Contribución de Nikita Sobolev en :gh:`97850`.)" #: ../Doc/deprecations/pending-removal-in-3.14.rst:86 msgid ":mod:`pty`:" -msgstr "" +msgstr ":mod:`pty`:" #: ../Doc/deprecations/pending-removal-in-3.14.rst:88 msgid "``master_open()``: use :func:`pty.openpty`." -msgstr "" +msgstr "``master_open()``: use :func:`pty.openpty`." #: ../Doc/deprecations/pending-removal-in-3.14.rst:89 msgid "``slave_open()``: use :func:`pty.openpty`." -msgstr "" +msgstr "``slave_open()``: use :func:`pty.openpty`." #: ../Doc/deprecations/pending-removal-in-3.14.rst:91 msgid ":mod:`sqlite3`:" -msgstr "" +msgstr ":mod:`sqlite3`:" #: ../Doc/deprecations/pending-removal-in-3.14.rst:93 msgid ":data:`~sqlite3.version` and :data:`~sqlite3.version_info`." -msgstr "" +msgstr ":data:`~sqlite3.version` y :data:`~sqlite3.version_info`." #: ../Doc/deprecations/pending-removal-in-3.14.rst:95 msgid "" @@ -196,12 +244,18 @@ msgid "" "ref:`named placeholders ` are used and *parameters* is " "a sequence instead of a :class:`dict`." msgstr "" +":meth:`~sqlite3.Cursor.execute` y :meth:`~sqlite3.Cursor.executemany` si se " +"utilizan :ref:`marcadores de posición con nombre ` y " +"*parameters* es una secuencia en lugar de :class:`dict`." #: ../Doc/deprecations/pending-removal-in-3.14.rst:99 msgid "" "date and datetime adapter, date and timestamp converter: see the :mod:" "`sqlite3` documentation for suggested replacement recipes." msgstr "" +"Adaptador de fecha y hora, convertidor de fecha y marca de tiempo: consulte " +"la documentación de :mod:`sqlite3` para obtener recetas de reemplazo " +"sugeridas." #: ../Doc/deprecations/pending-removal-in-3.14.rst:102 msgid "" @@ -210,12 +264,19 @@ msgid "" "but it only got a proper :exc:`DeprecationWarning` in 3.12. May be removed " "in 3.14. (Contributed by Nikita Sobolev in :gh:`101866`.)" msgstr "" +":class:`types.CodeType`: El acceso a :attr:`~codeobject.co_lnotab` quedó " +"obsoleto en :pep:`626` desde la versión 3.10, y se planeó eliminarlo en la " +"versión 3.12, pero recién se agregó un :exc:`DeprecationWarning` adecuado en " +"la versión 3.12. Es posible que se elimine en la versión 3.14. (Contribución " +"de Nikita Sobolev en :gh:`101866`.)" #: ../Doc/deprecations/pending-removal-in-3.14.rst:109 msgid "" ":mod:`typing`: :class:`~typing.ByteString`, deprecated since Python 3.9, now " "causes a :exc:`DeprecationWarning` to be emitted when it is used." msgstr "" +":mod:`typing`: :class:`~typing.ByteString`, obsoleto desde Python 3.9, ahora " +"hace que se emita un :exc:`DeprecationWarning` cuando se utiliza." #: ../Doc/deprecations/pending-removal-in-3.14.rst:112 msgid "" @@ -223,3 +284,6 @@ msgid "" "intended to be a public API. (Contributed by Gregory P. Smith in :gh:" "`88168`.)" msgstr "" +":mod:`urllib`: :class:`!urllib.parse.Quoter` está obsoleto: no estaba " +"destinado a ser una API pública. (Contribución de Gregory P. Smith en :gh:" +"`88168`.)" From c17edf6507f986746450663e995a617373a3d027 Mon Sep 17 00:00:00 2001 From: Francisco Mora <193986059+srmorita@users.noreply.github.com> Date: Tue, 11 Feb 2025 04:27:17 -0300 Subject: [PATCH 20/78] Traducido archivo c-api/weakref (#3369) Closes #3264 --------- Co-authored-by: rtobar --- c-api/number.po | 2 +- c-api/weakref.po | 74 +++++++++++++++++++++++++++++------------------- 2 files changed, 46 insertions(+), 30 deletions(-) diff --git a/c-api/number.po b/c-api/number.po index 25cb1c4dd6..aa3192b079 100644 --- a/c-api/number.po +++ b/c-api/number.po @@ -11,7 +11,7 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: 2025-02-03 17:14-0300\n" +"PO-Revision-Date: 2025-02-05 17:10-0300\n" "Last-Translator: srmorita \n" "Language-Team: python-doc-es\n" "Language: es\n" diff --git a/c-api/weakref.po b/c-api/weakref.po index 8084c69ade..93e696e785 100644 --- a/c-api/weakref.po +++ b/c-api/weakref.po @@ -11,16 +11,17 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: 2021-10-18 19:38+0200\n" -"Last-Translator: Diego Cristóbal Herreros \n" +"PO-Revision-Date: 2025-02-07 10:04-0300\n" +"Last-Translator: srmorita \n" +"Language-Team: python-doc-es (https://mail.python.org/mailman3/lists/docs-" +"es.python.org)\n" "Language: es\n" -"Language-Team: python-doc-es (https://mail.python.org/mailman3/lists/docs-es." -"python.org)\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.16.0\n" +"X-Generator: Poedit 3.5\n" #: ../Doc/c-api/weakref.rst:6 msgid "Weak Reference Objects" @@ -39,33 +40,29 @@ msgstr "" "como un proxy del objeto original tanto como pueda." #: ../Doc/c-api/weakref.rst:16 -#, fuzzy msgid "" "Return non-zero if *ob* is either a reference or proxy object. This " "function always succeeds." msgstr "" -"Retorna verdadero (true) si *ob* es una referencia o un objeto proxy. Esta " -"función siempre finaliza con éxito." +"Retorna un valor distinto de cero si *ob* es una referencia o un objeto " +"proxy. Esta función siempre finaliza con éxito." #: ../Doc/c-api/weakref.rst:22 -#, fuzzy msgid "" "Return non-zero if *ob* is a reference object. This function always " "succeeds." msgstr "" -"Retorna verdadero (true) si *ob* es un objeto de referencia. Esta función " -"siempre finaliza con éxito." +"Retorna un valor distinto de cero si *ob* es un objeto de referencia. Esta " +"función siempre finaliza con éxito." #: ../Doc/c-api/weakref.rst:27 -#, fuzzy msgid "" "Return non-zero if *ob* is a proxy object. This function always succeeds." msgstr "" -"Retorna verdadero (true) si *ob* es un objeto proxy. Esta función siempre " -"finaliza con éxito." +"Retorna un valor distinto de cero si *ob* es un objeto proxy. Esta función " +"siempre 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 " @@ -84,10 +81,9 @@ msgstr "" "parámetro, el cual será el mismo objeto de referencia débil. *callback* " "también puede ser ``None`` o ``NULL``. Si *ob* no es un objeto que puede ser " "referido de forma débil, o si *callback* no es invocable, ``None``, o " -"``NULL``, esto retornará ``NULL`` y causará un :exc:`TypeError`." +"``NULL``, esto retornará ``NULL`` y lanzará 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 " @@ -106,36 +102,41 @@ msgstr "" "aceptar un solo parámetro, el cual será el mismo objeto de referencia débil. " "*callback* también puede ser ``None`` o ``NULL``. Si *ob* no es un objeto " "que puede ser referido de forma débil, o si *callback* no es invocable, " -"``None``, o ``NULL``, esto retornará ``NULL`` y causará un :exc:`TypeError`." +"``None``, o ``NULL``, esto retornará ``NULL`` y lanzará un :exc:`TypeError`." #: ../Doc/c-api/weakref.rst:56 msgid "" "Get a :term:`strong reference` to the referenced object from a weak " "reference, *ref*, into *\\*pobj*." msgstr "" +"Obtiene un :term:`strong reference` al objeto referenciado desde una " +"referencia débil, *ref*, en *\\*pobj*." #: ../Doc/c-api/weakref.rst:59 msgid "" "On success, set *\\*pobj* to a new :term:`strong reference` to the " "referenced object and return 1." msgstr "" +"En caso de éxito, asigna *\\*pobj* en un nuevo :term:`strong reference` al " +"objeto referenciado y retorna 1." #: ../Doc/c-api/weakref.rst:61 msgid "If the reference is dead, set *\\*pobj* to ``NULL`` and return 0." msgstr "" +"Si la referencia está inactiva, asigna *\\*pobj* a ``NULL`` y retorna 0." #: ../Doc/c-api/weakref.rst:62 msgid "On error, raise an exception and return -1." -msgstr "" +msgstr "En caso de error, lanza una excepción y devuelve -1." #: ../Doc/c-api/weakref.rst:69 -#, fuzzy msgid "" "Return a :term:`borrowed reference` to the referenced object from a weak " "reference, *ref*. If the referent is no longer live, returns ``Py_None``." msgstr "" -"Retorna el objeto referenciado desde una referencia débil, *ref*. Si el " -"referente no está vivo, retornará :const:`Py_None`." +"Retorna un :term:`borrowed reference` del objeto referenciado desde una " +"referencia débil, *ref*. Si el referente ya no está activo, retorna " +"``Py_None``." #: ../Doc/c-api/weakref.rst:74 msgid "" @@ -146,25 +147,26 @@ msgid "" msgstr "" "Esta función retorna una referencia :term:`borrowed reference` al objeto " "referenciado. Esto significa que siempre debe llamar a :c:func:`Py_INCREF` " -"sobre el objeto, excepto cuando no pueda ser destruido antes del último uso " +"sobre el objeto excepto cuando no pueda ser destruido antes del último uso " "de la referencia prestada." #: ../Doc/c-api/weakref.rst:79 ../Doc/c-api/weakref.rst:87 msgid "Use :c:func:`PyWeakref_GetRef` instead." -msgstr "" +msgstr "Utiliza :c:func:`PyWeakref_GetRef` en su lugar." #: ../Doc/c-api/weakref.rst:85 -#, 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." +"Similar a :c:func:`PyWeakref_GetObject`, pero no realiza ninguna " +"comprobación de errores." #: ../Doc/c-api/weakref.rst:93 msgid "" "This function is called by the :c:member:`~PyTypeObject.tp_dealloc` handler " "to clear weak references." msgstr "" +"Esta función es invocada por el gestor :c:member:`~PyTypeObject.tp_dealloc` " +"para limpiar referencias débiles." #: ../Doc/c-api/weakref.rst:96 msgid "" @@ -172,10 +174,14 @@ msgid "" "for those references which have one. It returns when all callbacks have been " "attempted." msgstr "" +"Esto recorre las referencias débiles de *object* e invoca retrollamadas para " +"aquellas referencias que tengan una. Retorna cuando se han intentado todas " +"las retrollamadas." #: ../Doc/c-api/weakref.rst:103 msgid "Clears the weakrefs for *object* without calling the callbacks." msgstr "" +"Borra las referencias débiles para *object* sin llamar a las retrollamadas." #: ../Doc/c-api/weakref.rst:105 msgid "" @@ -185,9 +191,19 @@ msgid "" "and call their callbacks, then the finalizer, and finally this function to " "clear any weakrefs that may have been created by the finalizer." msgstr "" +"Esta función es invocada por el gestor :c:member:`~PyTypeObject.tp_dealloc` " +"para tipos con finalizadores (i.e., :meth:`~object.__del__`). El gestor de " +"esos objetos primero llama a :c:func:`PyObject_ClearWeakRefs` para borrar " +"las referencias débiles y llamar a sus callbacks, luego al finalizador, y " +"finalmente a esta función para borrar cualquier referencia débil que pueda " +"haber sido creada por el finalizador." #: ../Doc/c-api/weakref.rst:111 msgid "" -"In most circumstances, it's more appropriate to use :c:func:" -"`PyObject_ClearWeakRefs` to clear weakrefs instead of this function." +"In most circumstances, it's more appropriate to " +"use :c:func:`PyObject_ClearWeakRefs` to clear weakrefs instead of this " +"function." msgstr "" +"En la mayoría de los casos, es más apropiado " +"utilizar :c:func:`PyObject_ClearWeakRefs` para borrar las referencias " +"débiles en lugar de esta función." From 95cd34a1e1b5b8626a80e6eb0a6734b93b357460 Mon Sep 17 00:00:00 2001 From: kbiggers Date: Sat, 1 Mar 2025 21:31:34 -0500 Subject: [PATCH 21/78] Traducido reference/executionmodel.po (#3370) closes #3282 --------- Co-authored-by: rtobar --- reference/executionmodel.po | 73 ++++++++++++++++++++++++++----------- 1 file changed, 52 insertions(+), 21 deletions(-) diff --git a/reference/executionmodel.po b/reference/executionmodel.po index a5d272e08b..000b586018 100644 --- a/reference/executionmodel.po +++ b/reference/executionmodel.po @@ -11,15 +11,16 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: 2023-11-11 16:50-0300\n" +"PO-Revision-Date: 2025-02-17 16:37-0500\n" "Last-Translator: Francisco Mora \n" -"Language: es\n" "Language-Team: python-doc-es\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\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.16.0\n" +"X-Generator: Poedit 3.5\n" #: ../Doc/reference/executionmodel.rst:6 msgid "Execution model" @@ -258,7 +259,6 @@ msgstr "" "` para ejemplos." #: ../Doc/reference/executionmodel.rst:136 -#, fuzzy msgid "" "If the :keyword:`global` statement occurs within a block, all uses of the " "names specified in the statement refer to the bindings of those names in the " @@ -279,8 +279,10 @@ msgstr "" "nombres incorporado, el *namespace* del módulo :mod:`builtins`. La búsqueda " "se realiza primero en el espacio de nombres global. Si el nombre no se " "encuentra ahí, se busca en el espacio de nombres incorporado (*builtins " -"namespace*). La declaración :keyword:`!global` debe preceder a todos los " -"usos del nombre." +"namespace*) próximamente. Si tampoco se encuentran los nombres en el espacio " +"de nombres incorporado, se crean variables nuevas en el espacio de nombres " +"global. La declaración global debe preceder a todos los usos de los nombres " +"listados." #: ../Doc/reference/executionmodel.rst:146 msgid "" @@ -351,6 +353,9 @@ msgid "" " a = 42\n" " b = list(a + i for i in range(10))" msgstr "" +"class A:\n" +" a = 42\n" +" b = list(a + i for i in range(10))" #: ../Doc/reference/executionmodel.rst:180 msgid "However, the following will succeed::" @@ -364,6 +369,11 @@ msgid "" "\n" "print(A.Alias.__value__) # " msgstr "" +"class A:\n" +" type Alias = Nested\n" +" class Nested: pass\n" +"\n" +"print(A.Alias.__value__) # " #: ../Doc/reference/executionmodel.rst:191 msgid "Annotation scopes" @@ -416,13 +426,12 @@ msgstr "" "ejecutan dentro del ámbito de la anotación, pero sus decoradores no." #: ../Doc/reference/executionmodel.rst:208 -#, fuzzy msgid "" "The bounds, constraints, and default values for type parameters (:ref:" "`lazily evaluated `)." msgstr "" -"Los límites y restricciones de las variables de tipo (:ref:`lazily evaluated " -"`)." +"Los límites, restricciones y valores predeterminados para los parámetros de " +"tipo (:ref:`evaluados de forma diferida `)." #: ../Doc/reference/executionmodel.rst:210 msgid "The value of type aliases (:ref:`lazily evaluated `)." @@ -478,7 +487,6 @@ msgstr "" "aparecer dentro de ámbitos de anotación puede introducir nuevos nombres." #: ../Doc/reference/executionmodel.rst:227 -#, fuzzy msgid "" "While annotation scopes have an internal name, that name is not reflected in " "the :term:`qualified name` of objects defined within the scope. Instead, " @@ -486,8 +494,8 @@ msgid "" "were defined in the enclosing scope." msgstr "" "Aunque los ámbitos de anotación tienen un nombre interno, ese nombre no se " -"refleja en el :term:`__qualname__ ` de los objetos definidos " -"dentro del ámbito. En su lugar, el :attr:`!__qualname__` de dichos objetos " +"refleja en el :term:`qualified name` de los objetos definidos dentro del " +"ámbito. En su lugar, el :attr:`~definition.__qualname__` de dichos objetos " "es como si el objeto estuviera definido en el ámbito que lo encierra." #: ../Doc/reference/executionmodel.rst:232 @@ -501,13 +509,14 @@ msgid "" "Annotation scopes are also used for type parameter defaults, as introduced " "by :pep:`696`." msgstr "" +"También se usan ámbitos de anotación para parámetros de tipo " +"predeterminados, introducido por :pep:`696`." #: ../Doc/reference/executionmodel.rst:242 msgid "Lazy evaluation" msgstr "Evaluación perezosa" #: ../Doc/reference/executionmodel.rst:244 -#, fuzzy msgid "" "The values of type aliases created through the :keyword:`type` statement are " "*lazily evaluated*. The same applies to the bounds, constraints, and default " @@ -516,12 +525,13 @@ msgid "" "or type variable is created. Instead, they are only evaluated when doing so " "is necessary to resolve an attribute access." msgstr "" -"Los valores de los alias de tipo creados mediante la sentencia :keyword:" -"`type` se *evalúan rápidamente*. Lo mismo se aplica a los límites y " -"restricciones de las variables de tipo creadas mediante la sintaxis de " -"parámetros :ref:`type `. Esto significa que no se evalúan " -"cuando se crea el alias de tipo o la variable de tipo. En su lugar, sólo se " -"evalúan cuando es necesario para resolver el acceso a un atributo." +"Los valores de los alias de tipo creados mediante la declaración :keyword:" +"`type` *se evalúan de forma diferida*. Lo mismo se aplica a los límites, " +"restricciones y valores predeterminados de las variables de tipo creadas " +"mediante la :ref:`sintaxis de parámetros de tipo `. Esto " +"significa que no se evalúan cuando se crea el alias de tipo o la variable de " +"tipo. En su lugar, sólo se evalúan cuando es necesario para resolver el " +"acceso a un atributo." #: ../Doc/reference/executionmodel.rst:251 msgid "Example:" @@ -541,6 +551,17 @@ msgid "" " ...\n" "ZeroDivisionError: division by zero" msgstr "" +">>> type Alias = 1/0\n" +">>> Alias.__value__\n" +"Traceback (most recent call last):\n" +" ...\n" +"ZeroDivisionError: division by zero\n" +">>> def func[T: 1/0](): pass\n" +">>> T = func.__type_params__[0]\n" +">>> T.__bound__\n" +"Traceback (most recent call last):\n" +" ...\n" +"ZeroDivisionError: division by zero" #: ../Doc/reference/executionmodel.rst:267 msgid "" @@ -569,6 +590,11 @@ msgid "" "type Parenthesized = tuple[Literal[\"(\"], Expr, Literal[\")\"]]\n" "type Expr = SimpleExpr | tuple[SimpleExpr, Literal[\"+\", \"-\"], Expr]" msgstr "" +"from typing import Literal\n" +"\n" +"type SimpleExpr = int | Parenthesized\n" +"type Parenthesized = tuple[Literal[\"(\"], Expr, Literal[\")\"]]\n" +"type Expr = SimpleExpr | tuple[SimpleExpr, Literal[\"+\", \"-\"], Expr]" #: ../Doc/reference/executionmodel.rst:281 msgid "" @@ -637,6 +663,11 @@ msgid "" "i = 42\n" "f()" msgstr "" +"i = 10\n" +"def f():\n" +" print(i)\n" +"i = 42\n" +"f()" #: ../Doc/reference/executionmodel.rst:326 msgid "" @@ -703,8 +734,8 @@ msgid "" "but it cannot repair the cause of the error and retry the failing operation " "(except by re-entering the offending piece of code from the top)." msgstr "" -"Python usa el modelo de gestión de errores de \"terminación\" " -"(\"*termination*\"): un gestor de excepción puede descubrir qué sucedió y " +"Python usa el modelo de gestión de errores de \"terminación" +"\" (\"*termination*\"): un gestor de excepción puede descubrir qué sucedió y " "continuar la ejecución en un nivel exterior, pero no puede reparar la causa " "del error y reintentar la operación que ha fallado (excepto que se reingrese " "al trozo de código fallido desde su inicio)." From 01e2ca88e9bb3fa365e20e9f67ebc81a4e0825a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cristi=C3=A1n=20Maureira-Fredes?= Date: Sat, 15 Mar 2025 13:13:37 +0100 Subject: [PATCH 22/78] Pin hash to a previous version in order to avoid the exploit (#3374) This uses another version (v44) where I could find the hash (we currently used v45). In summary, the repo got compromised and all the tags versions point to a malicius commit that includes a function to expose the secrets on the github action logs, so people can fetch them. --- .github/workflows/main.yml | 2 +- .github/workflows/pr-comment.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 1c519fb344..f727f72190 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -52,7 +52,7 @@ jobs: - name: Obtiene la lista de archivos .po con cambios (sólo en PRs) if: github.event_name == 'pull_request' id: changed-po-files - uses: tj-actions/changed-files@v45 + uses: tj-actions/changed-files@9200e69727eb73eb060652b19946b8a2fdfb654b with: files: | **/*.po diff --git a/.github/workflows/pr-comment.yml b/.github/workflows/pr-comment.yml index f66cf799c9..659a83cf08 100644 --- a/.github/workflows/pr-comment.yml +++ b/.github/workflows/pr-comment.yml @@ -37,7 +37,7 @@ jobs: python -m pip install -r base-branch/requirements-own.txt - name: Obtiene lista de archivos con cambios id: changed-files - uses: tj-actions/changed-files@v45 + uses: tj-actions/changed-files@9200e69727eb73eb060652b19946b8a2fdfb654b with: files: | **/*.po From f57ac51a97ffa26106c1ad3b33d5718daed9544e Mon Sep 17 00:00:00 2001 From: Marco Richetta Date: Fri, 4 Apr 2025 10:15:43 +0200 Subject: [PATCH 23/78] Upgrade tj-actions to v46 per security recommendations. (#3378) Per discussion in issue https://github.com/python/python-docs-es/issues/3373, this PR update `tj-actions/changed-files` to its latest version [v46](https://github.com/tj-actions/changed-files/releases/tag/v46.0.3). Related PR: https://github.com/python/python-docs-es/pull/3374 Supersedes https://github.com/python/python-docs-es/pull/3377 --- .github/workflows/main.yml | 2 +- .github/workflows/pr-comment.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index f727f72190..7f375d29ff 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -52,7 +52,7 @@ jobs: - name: Obtiene la lista de archivos .po con cambios (sólo en PRs) if: github.event_name == 'pull_request' id: changed-po-files - uses: tj-actions/changed-files@9200e69727eb73eb060652b19946b8a2fdfb654b + uses: tj-actions/changed-files@v46 with: files: | **/*.po diff --git a/.github/workflows/pr-comment.yml b/.github/workflows/pr-comment.yml index 659a83cf08..41165bef7e 100644 --- a/.github/workflows/pr-comment.yml +++ b/.github/workflows/pr-comment.yml @@ -37,7 +37,7 @@ jobs: python -m pip install -r base-branch/requirements-own.txt - name: Obtiene lista de archivos con cambios id: changed-files - uses: tj-actions/changed-files@9200e69727eb73eb060652b19946b8a2fdfb654b + uses: tj-actions/changed-files@v46 with: files: | **/*.po From d55c6fec8fbf4c05c4aa1b7ae729b83f7161890b Mon Sep 17 00:00:00 2001 From: David Date: Wed, 9 Apr 2025 11:46:47 +0100 Subject: [PATCH 24/78] Traducido archivo c-api/bytearray (#3379) Closes #3263 --- TRANSLATORS | 1 + c-api/bytearray.po | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/TRANSLATORS b/TRANSLATORS index 3686c2a25f..4686fde202 100644 --- a/TRANSLATORS +++ b/TRANSLATORS @@ -62,6 +62,7 @@ David Jaimes (@henrzven) David Lorenzo (@David-Lor) David Revillas (@r3v1) David Silva (@dvidsilva) +David Spindola (@davidspindola) David Trigo Chávez (@dtrinf) Diego Cristóbal Herreros (@dcristobalh) Diego Mascialino (@dmascialino) diff --git a/c-api/bytearray.po b/c-api/bytearray.po index 20ed044e7f..a04bbe978a 100644 --- a/c-api/bytearray.po +++ b/c-api/bytearray.po @@ -11,15 +11,16 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: 2024-10-29 21:11-0400\n" -"Last-Translator: Sofía Denner \n" -"Language: es\n" +"PO-Revision-Date: 2025-04-09 09:25+0200\n" +"Last-Translator: David Spindola\n" "Language-Team: python-doc-es\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\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.16.0\n" +"X-Generator: Poedit 3.6\n" #: ../Doc/c-api/bytearray.rst:6 msgid "Byte Array Objects" @@ -68,8 +69,8 @@ msgstr "Funciones API directas" #: ../Doc/c-api/bytearray.rst:42 msgid "" -"Return a new bytearray object from any object, *o*, that implements the :ref:" -"`buffer protocol `." +"Return a new bytearray object from any object, *o*, that implements " +"the :ref:`buffer protocol `." msgstr "" "Retorna un nuevo objeto de arreglo de bytes de cualquier objeto, *o*, que " "implementa el :ref:`buffer protocol `." @@ -77,14 +78,13 @@ msgstr "" #: ../Doc/c-api/bytearray.rst:45 ../Doc/c-api/bytearray.rst:52 #: ../Doc/c-api/bytearray.rst:59 msgid "On failure, return ``NULL`` with an exception set." -msgstr "" +msgstr "Al fallar, retorna ``NULL`` con una excepción asignada." #: ../Doc/c-api/bytearray.rst:50 -#, fuzzy msgid "Create a new bytearray object from *string* and its length, *len*." msgstr "" "Crea un nuevo objeto de arreglo de bytes a partir de *string* y su longitud, " -"*len*. En caso de fallo, se retorna ``NULL``." +"*len*." #: ../Doc/c-api/bytearray.rst:57 msgid "" @@ -104,7 +104,7 @@ msgid "" "``NULL`` pointer. The returned array always has an extra null byte appended." msgstr "" "Retorna el contenido de *bytearray* como un arreglo de caracteres después de " -"verificar un puntero ``NULL``. La arreglo retornado siempre tiene un byte " +"verificar un puntero ``NULL``. El arreglo retornado siempre tiene un byte " "nulo adicional agregado." #: ../Doc/c-api/bytearray.rst:76 From 6071c2fbfdaa17e3556c550be2b5e2206a009daa Mon Sep 17 00:00:00 2001 From: David Date: Thu, 10 Apr 2025 04:50:43 +0100 Subject: [PATCH 25/78] Traducido archivo c-api/allocation (#3380) Closes #3230 --- c-api/allocation.po | 74 ++++++++++++++++++++++----------------------- 1 file changed, 36 insertions(+), 38 deletions(-) diff --git a/c-api/allocation.po b/c-api/allocation.po index f0908ad22b..dab388e66e 100644 --- a/c-api/allocation.po +++ b/c-api/allocation.po @@ -11,22 +11,22 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-10-12 19:43+0200\n" -"PO-Revision-Date: 2020-05-08 01:33+0200\n" -"Last-Translator: \n" -"Language: es\n" +"PO-Revision-Date: 2025-04-09 21:56+0200\n" +"Last-Translator: David Spindola\n" "Language-Team: python-doc-es\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\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.13.0\n" +"X-Generator: Poedit 3.6\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 " "reference. Returns the initialized object. If *type* indicates that the " @@ -34,10 +34,10 @@ msgid "" "detector's set of observed objects. Other fields of the object are not " "affected." msgstr "" -"Inicializa un objeto *op* recientemente asignado con su tipo y referencia " -"inicial. Retorna el objeto inicializado. Si *type* indica que el objeto " -"participa en el detector de basura cíclico, se agrega al conjunto de objetos " -"observados del detector. Otros campos del objeto no se ven afectados." +"Inicializa un objeto recién asignado *op* con su tipo y referencia inicial. " +"Retorna el objeto inicializado. Si *type* indica que el objeto participa en " +"el detector de basura cíclico, se agrega al conjunto de objetos observados " +"por el detector. Otros campos del objeto no se ven afectados." #: ../Doc/c-api/allocation.rst:26 msgid "" @@ -48,23 +48,22 @@ msgstr "" "información de longitud para un objeto de tamaño variable." #: ../Doc/c-api/allocation.rst:32 -#, fuzzy msgid "" "Allocate a new Python object using the C structure type *TYPE* and the " "Python type object *typeobj* (``PyTypeObject*``). Fields not defined by the " "Python object header are not initialized. The caller will own the only " "reference to the object (i.e. its reference count will be one). The size of " -"the memory allocation is determined from the :c:member:`~PyTypeObject." -"tp_basicsize` field of the type object." +"the memory allocation is determined from " +"the :c:member:`~PyTypeObject.tp_basicsize` field of the type object." msgstr "" -"Asigna un nuevo objeto Python usando el tipo de estructura de C *TYPE* y el " -"objeto tipo Python *type*. Los campos no definidos por el encabezado del " -"objeto Python no se inicializan;el conteo de referencias del objeto será " -"uno. El tamaño de la asignación de memoria se determina a partir del campo :" -"c:member:`~PyTypeObject.tp_basicsize` del tipo de objeto." +"Asigna un nuevo objeto de Python usando el tipo de estructura de C *TYPE* y " +"el objeto de tipo Python *typeobj* (``PyTypeObject*``). Los campos no " +"definidos por el encabezado del objeto Python no se inicializan. El llamador " +"será el propietario de la única referencia al objeto (es decir, su contador " +"de referencias será uno). El tamaño de la asignación de memoria se determina " +"a partir del campo :c:member:`~PyTypeObject.tp_basicsize` del objeto de tipo." #: ../Doc/c-api/allocation.rst:43 -#, fuzzy msgid "" "Allocate a new Python object using the C structure type *TYPE* and the " "Python type object *typeobj* (``PyTypeObject*``). Fields not defined by the " @@ -76,30 +75,29 @@ msgid "" "same allocation decreases the number of allocations, improving the memory " "management efficiency." msgstr "" -"Asigna un nuevo objeto Python usando el tipo de estructura de C *TYPE* y el " -"objeto tipo Python *type*. Los campos no definidos por el encabezado del " -"objeto Python no se inicializan. La memoria asignada permite los campos de " -"la estructura *TYPE* más los campos *size* del tamaño dado por el campo :c:" -"member:`~PyTypeObject.tp_itemsize` de *type*. Esto es útil para implementar " -"objetos como tuplas, que pueden determinar su tamaño en el momento de la " -"construcción. Incrustar el arreglo de campos en la misma asignación " -"disminuye el número de asignaciones, mejorando la eficiencia de la gestión " -"de memoria." +"Asigna un nuevo objeto de Python utilizando el tipo de estructura de C " +"*TYPE* y el objeto de tipo Python *typeobj* (``PyTypeObject*``). Los campos " +"no definidos por el encabezado del objeto Python no se inicializan. La " +"memoria asignada permite la estructura *TYPE* más *size* (``Py_ssize_t``) " +"campos del tamaño dado por el campo :c:member:`~PyTypeObject.tp_itemsize` de " +"*typeobj*. Esto es útil para implementar objetos como las tuplas, que pueden " +"determinar su tamaño en el momento de la construcción. Integrar el arreglo " +"de campos en la misma asignación disminuye el número de asignaciones, " +"mejorando la eficiencia de la gestión de memoria." #: ../Doc/c-api/allocation.rst:57 -#, fuzzy msgid "" -"Releases memory allocated to an object using :c:macro:`PyObject_New` or :c:" -"macro:`PyObject_NewVar`. This is normally called from the :c:member:" -"`~PyTypeObject.tp_dealloc` handler specified in the object's type. The " -"fields of the object should not be accessed after this call as the memory is " -"no longer a valid Python object." +"Releases memory allocated to an object using :c:macro:`PyObject_New` " +"or :c:macro:`PyObject_NewVar`. This is normally called from " +"the :c:member:`~PyTypeObject.tp_dealloc` handler specified in the object's " +"type. The fields of the object should not be accessed after this call as " +"the memory is no longer a valid Python object." msgstr "" -"Libera memoria asignada a un objeto usando :c:func:`PyObject_New` o :c:func:" -"`PyObject_NewVar`. Esto normalmente se llama desde el manejador :c:member:" -"`~PyTypeObject.tp_dealloc` especificado en el tipo de objeto. No se debe " -"acceder a los campos del objeto después de esta llamada, ya que la memoria " -"ya no es un objeto Python válido." +"Libera la memoria asignada a un objeto usando :c:macro:`PyObject_New` " +"o :c:macro:`PyObject_NewVar`. Esto normalmente se llama desde el " +"manejador :c:member:`~PyTypeObject.tp_dealloc` especificado en el tipo de " +"objeto. Los campos del objeto no deben ser accedidos después de esta " +"llamada, ya que la memoria ya no es un objeto de Python válido." #: ../Doc/c-api/allocation.rst:66 msgid "" From c98c7ee5961a856e1c7e322f1fd29ed574587556 Mon Sep 17 00:00:00 2001 From: David Date: Thu, 10 Apr 2025 04:52:49 +0100 Subject: [PATCH 26/78] Traducido archivo c-api/typehints (#3381) Closes #3244 --- c-api/typehints.po | 61 ++++++++++++++++++++++++++-------------------- 1 file changed, 34 insertions(+), 27 deletions(-) diff --git a/c-api/typehints.po b/c-api/typehints.po index 82e8b82881..6b0ed950a6 100644 --- a/c-api/typehints.po +++ b/c-api/typehints.po @@ -9,15 +9,16 @@ msgstr "" "Project-Id-Version: Python en Español 3.10\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: 2021-11-16 22:14-0600\n" -"Last-Translator: Erick G. Islas Osuna \n" -"Language: es\n" +"PO-Revision-Date: 2025-04-09 22:51+0200\n" +"Last-Translator: David Spindola\n" "Language-Team: \n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\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.16.0\n" +"X-Generator: Poedit 3.6\n" #: ../Doc/c-api/typehints.rst:6 msgid "Objects for Type Hinting" @@ -30,36 +31,35 @@ msgid "" "union>`. Only ``GenericAlias`` is exposed to C." msgstr "" "Se proporcionan varios tipos incorporados para indicaciones de tipado. " -"Actualmente existen dos tipos -- :ref:`GenericAlias ` y :" -"ref:`Union `. Solo ``GenericAlias`` es expuesto a C." +"Actualmente existen dos tipos -- :ref:`GenericAlias ` " +"y :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: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 " -"type. The ``GenericAlias``\\ 's ``__parameters__`` attribute is constructed " -"lazily from ``__args__``. On failure, an exception is raised and ``NULL`` " -"is returned." +"``__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 type. The ``GenericAlias``\\ 's ``__parameters__`` " +"attribute is constructed lazily from ``__args__``. On failure, an exception " +"is raised and ``NULL`` is returned." msgstr "" "Crea un objeto :ref:`GenericAlias `. Equivalente a " "llamar la clase de Python :class:`types.GenericAlias`. Los argumentos " -"*origin* y *args* configuran los atributos ``__origin__`` y ``__args__`` de " -"``GenericAlias`` respectivamente. *origin* debe ser un :c:type:" -"`PyTypeObject*`, y *args* puede ser un :c:type:`PyTupleObject*` o cualquier " -"``PyObject*``. Si el valor de *args* no es una tupla, un 1-tupla es " -"automáticamente construida y ``__args__`` es configurado como ``(args,)``. " -"Para los argumentos se realiza un chequeo mínimo, de esta manera la función " -"tendrá éxito incluso si *origin* no es un tipo. El atributo " -"``__parameters__`` de ``GenericAlias`` es construido de forma diferida a " -"partir de ``__args__``. Si existe una falla, se levantará una excepción y se " -"retornará ``NULL``." +"*origin* y *args* establecen los atributos ``__origin__`` y ``__args__`` de " +"``GenericAlias`` respectivamente. *origin* debe ser " +"un :c:expr:`PyTypeObject*`, y *args* puede ser un :c:expr:`PyTupleObject*` o " +"cualquier ``PyObject*``. Si *args* no es una tupla, se construye " +"automáticamente una tupla de un elemento y ``__args__`` se establece como " +"``(args,)``. Se realiza una verificación mínima para los argumentos, por lo " +"que la función tendrá éxito incluso si *origin* no es un tipo. El atributo " +"``__parameters__`` de ``GenericAlias`` se construye de manera perezosa a " +"partir de ``__args__``. En caso de falla, se levantará una excepción y " +"retorna ``NULL``." #: ../Doc/c-api/typehints.rst:28 msgid "Here's an example of how to make an extension type generic::" @@ -76,11 +76,18 @@ msgid "" " ...\n" "}" msgstr "" +"static PyMethodDef my_obj_methods[] = {\n" +" // Otros Métodos.\n" +" ...\n" +" {\"__class_getitem__\", Py_GenericAlias, METH_O|METH_CLASS, \"Ver PEP " +"585\"}\n" +" ...\n" +"\n" +"}" #: ../Doc/c-api/typehints.rst:38 -#, fuzzy msgid "The data model method :meth:`~object.__class_getitem__`." -msgstr "El método del modelo de datos :meth:`__class_getitem__`." +msgstr "El método del modelo de datos :meth:`~object.__class_getitem__`." #: ../Doc/c-api/typehints.rst:44 msgid "" From fde38513cf957b7eeeab3e0bc6c350ed41b56903 Mon Sep 17 00:00:00 2001 From: David Date: Fri, 11 Apr 2025 05:02:39 +0100 Subject: [PATCH 27/78] Traducido archivo c-api/iter (#3382) Closes #3252 --- c-api/iter.po | 63 +++++++++++++++++++++++++++++++++++---------------- 1 file changed, 43 insertions(+), 20 deletions(-) diff --git a/c-api/iter.po b/c-api/iter.po index e00cbf2466..5ebc364693 100644 --- a/c-api/iter.po +++ b/c-api/iter.po @@ -11,15 +11,16 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: 2021-08-16 13:04+0200\n" -"Last-Translator: Cristián Maureira-Fredes \n" -"Language: es\n" +"PO-Revision-Date: 2025-04-10 23:48+0200\n" +"Last-Translator: David Spindola\n" "Language-Team: python-doc-es\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\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.16.0\n" +"X-Generator: Poedit 3.6\n" #: ../Doc/c-api/iter.rst:6 msgid "Iterator Protocol" @@ -30,26 +31,25 @@ 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* can be safely passed to :c:func:" -"`PyIter_Next`, 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." +"Retorna un valor distinto de cero si el objeto *o* puede pasarse de manera " +"segura a :c:func:`PyIter_Next`, y ``0`` en caso contrario. Esta función " +"siempre tiene éxito." #: ../Doc/c-api/iter.rst:17 -#, fuzzy msgid "" "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." +"Retorna un valor distinto de cero si el objeto *o* proporciona el " +"protocolo :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 iterator *o*. The object must be an iterator " "according to :c:func:`PyIter_Check` (it is up to the caller to check this). " @@ -57,10 +57,11 @@ msgid "" "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." +"Retorna el siguiente valor del iterador *o*. El objeto debe ser un iterador " +"según :c:func:`PyIter_Check` (depende del llamador verificar esto). Si no " +"hay valores restantes, retorna ``NULL`` sin establecer una excepción. Si " +"ocurre un error al recuperar el elemento, devuelve ``NULL`` y envía la " +"excepción." #: ../Doc/c-api/iter.rst:30 msgid "" @@ -95,13 +96,35 @@ msgid "" " /* continue doing useful work */\n" "}" msgstr "" +"PyObject *iterator = PyObject_GetIter(obj);\n" +"PyObject *item;\n" +"\n" +"if (iterator == NULL) {\n" +" /* propagate error */\n" +"}\n" +"\n" +"while ((item = PyIter_Next(iterator))) {\n" +" /* do something with item */\n" +" ...\n" +" /* release reference when done */\n" +" Py_DECREF(item);\n" +"}\n" +"\n" +"Py_DECREF(iterator);\n" +"\n" +"if (PyErr_Occurred()) {\n" +" /* propagate error */\n" +"}\n" +"else {\n" +" /* continue doing useful work */\n" +"}" #: ../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`." +"El valor de enumeración utilizado para representar diferentes resultados " +"de :c:func:`PyIter_Send`." #: ../Doc/c-api/iter.rst:66 msgid "Sends the *arg* value into the iterator *iter*. Returns:" From bcc67d62b3c5b17574da4929daa0eb4431b7a5c5 Mon Sep 17 00:00:00 2001 From: David Date: Sat, 12 Apr 2025 02:31:20 +0100 Subject: [PATCH 28/78] Traduccion codec (#3384) Closes #3240 --- c-api/codec.po | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/c-api/codec.po b/c-api/codec.po index d1bfd9d8b4..45396dbae5 100644 --- a/c-api/codec.po +++ b/c-api/codec.po @@ -11,15 +11,16 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-10-12 19:43+0200\n" -"PO-Revision-Date: 2021-10-18 22:40-0300\n" -"Last-Translator: Cristián Maureira-Fredes \n" -"Language: es\n" +"PO-Revision-Date: 2025-04-12 00:04+0100\n" +"Last-Translator: David Spindola\n" "Language-Team: python-doc-es\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\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.13.0\n" +"X-Generator: Poedit 3.6\n" #: ../Doc/c-api/codec.rst:4 msgid "Codec registry and support functions" @@ -30,13 +31,12 @@ msgid "Register a new codec search function." msgstr "Registra una nueva función de búsqueda de códec." #: ../Doc/c-api/codec.rst:10 -#, fuzzy msgid "" "As side effect, this tries to load the :mod:`!encodings` package, if not yet " "done, to make sure that it is always first in the list of search functions." msgstr "" -"Como efecto secundario, intenta cargar el paquete :mod:`encodings`, si aún " -"no lo ha hecho, para asegurarse de que siempre esté primero en la lista de " +"Como efecto secundario, intenta cargar el paquete :mod:`!encodings`, si aún " +"no se ha hecho, para asegurarse de que siempre esté primero en la lista de " "funciones de búsqueda." #: ../Doc/c-api/codec.rst:15 @@ -66,8 +66,8 @@ msgstr "API de codificación genérica basada en códec." msgid "" "*object* is passed through the encoder function found for the given " "*encoding* using the error handling method defined by *errors*. *errors* " -"may be ``NULL`` to use the default method defined for the codec. Raises a :" -"exc:`LookupError` if no encoder can be found." +"may be ``NULL`` to use the default method defined for the codec. Raises " +"a :exc:`LookupError` if no encoder can be found." msgstr "" "*object* se pasa a través de la función de codificador encontrada por el " "*encoding* dado usando el método de manejo de errores definido por *errors*. " @@ -83,8 +83,8 @@ msgstr "API de decodificación basada en códec genérico." msgid "" "*object* is passed through the decoder function found for the given " "*encoding* using the error handling method defined by *errors*. *errors* " -"may be ``NULL`` to use the default method defined for the codec. Raises a :" -"exc:`LookupError` if no encoder can be found." +"may be ``NULL`` to use the default method defined for the codec. Raises " +"a :exc:`LookupError` if no encoder can be found." msgstr "" "*object* se pasa a través de la función de decodificador encontrada por el " "*encoding* dado usando el método de manejo de errores definido por *errors*. " @@ -100,14 +100,14 @@ msgstr "API de búsqueda de códec" msgid "" "In the following functions, the *encoding* string is looked up converted to " "all lower-case characters, which makes encodings looked up through this " -"mechanism effectively case-insensitive. If no codec is found, a :exc:" -"`KeyError` is set and ``NULL`` returned." +"mechanism effectively case-insensitive. If no codec is found, " +"a :exc:`KeyError` is set and ``NULL`` returned." msgstr "" "En las siguientes funciones, la cadena de caracteres *encoding* se busca " "convertida a todos los caracteres en minúscula, lo que hace que las " "codificaciones se busquen a través de este mecanismo sin distinción entre " -"mayúsculas y minúsculas. Si no se encuentra ningún códec, se establece un :" -"exc:`KeyError` y se retorna ``NULL``." +"mayúsculas y minúsculas. Si no se encuentra ningún códec, se establece " +"un :exc:`KeyError` y se retorna ``NULL``." #: ../Doc/c-api/codec.rst:55 msgid "Get an encoder function for the given *encoding*." @@ -166,9 +166,9 @@ msgstr "" #: ../Doc/c-api/codec.rst:88 msgid "" -"The callback gets a single argument, an instance of :exc:" -"`UnicodeEncodeError`, :exc:`UnicodeDecodeError` or :exc:" -"`UnicodeTranslateError` that holds information about the problematic " +"The callback gets a single argument, an instance " +"of :exc:`UnicodeEncodeError`, :exc:`UnicodeDecodeError` " +"or :exc:`UnicodeTranslateError` that holds information about the problematic " "sequence of characters or bytes and their offset in the original string " "(see :ref:`unicodeexceptions` for functions to extract this information). " "The callback must either raise the given exception, or return a two-item " @@ -176,9 +176,9 @@ msgid "" "integer giving the offset in the original string at which encoding/decoding " "should be resumed." msgstr "" -"La devolución de llamada obtiene un único argumento, una instancia de :exc:" -"`UnicodeEncodeError`, :exc:`UnicodeDecodeError` o :exc:" -"`UnicodeTranslateError` que contiene información sobre la secuencia " +"La devolución de llamada obtiene un único argumento, una instancia " +"de :exc:`UnicodeEncodeError`, :exc:`UnicodeDecodeError` " +"o :exc:`UnicodeTranslateError` que contiene información sobre la secuencia " "problemática de caracteres o bytes y su desplazamiento en la cadena original " "(consulte :ref:`unicodeexceptions` para funciones para extraer esta " "información). La devolución de llamada debe lanzar la excepción dada o " From 7aee5682609fa6456e4614416f1ca1f00c390811 Mon Sep 17 00:00:00 2001 From: David Date: Sat, 12 Apr 2025 02:34:03 +0100 Subject: [PATCH 29/78] Traducido archivo c-api/capsule (#3383) Closes #3259 capsule-html --- c-api/capsule.po | 65 ++++++++++++++++++++++++------------------------ 1 file changed, 32 insertions(+), 33 deletions(-) diff --git a/c-api/capsule.po b/c-api/capsule.po index ac8a29ca40..97a0afb310 100644 --- a/c-api/capsule.po +++ b/c-api/capsule.po @@ -11,15 +11,16 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: 2022-10-30 16:51-0300\n" -"Last-Translator: Sofía Denner \n" -"Language: es\n" +"PO-Revision-Date: 2025-04-11 20:18+0100\n" +"Last-Translator: David Spindola\n" "Language-Team: python-doc-es\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\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.16.0\n" +"X-Generator: Poedit 3.6\n" #: ../Doc/c-api/capsule.rst:6 msgid "Capsules" @@ -42,11 +43,12 @@ msgid "" "loaded modules." msgstr "" "Este subtipo de :c:type:`PyObject` representa un valor opaco, útil para los " -"módulos de extensión C que necesitan pasar un valor opaco (como un puntero :" -"c:expr:`void*`) a través del código Python a otro código C . A menudo se usa " -"para hacer que un puntero de función C definido en un módulo esté disponible " -"para otros módulos, por lo que el mecanismo de importación regular se puede " -"usar para acceder a las API C definidas en módulos cargados dinámicamente." +"módulos de extensión C que necesitan pasar un valor opaco (como un " +"puntero :c:expr:`void*`) a través del código Python a otro código C . A " +"menudo se usa para hacer que un puntero de función C definido en un módulo " +"esté disponible para otros módulos, por lo que el mecanismo de importación " +"regular se puede usar para acceder a las API C definidas en módulos cargados " +"dinámicamente." #: ../Doc/c-api/capsule.rst:27 msgid "The type of a destructor callback for a capsule. Defined as::" @@ -56,7 +58,7 @@ msgstr "" #: ../Doc/c-api/capsule.rst:29 msgid "typedef void (*PyCapsule_Destructor)(PyObject *);" -msgstr "" +msgstr "typedef void (*PyCapsule_Destructor)(PyObject *);" #: ../Doc/c-api/capsule.rst:31 msgid "" @@ -123,17 +125,16 @@ msgstr "" "una excepción y retorna ``NULL``." #: ../Doc/c-api/capsule.rst:65 -#, fuzzy msgid "" "The *name* parameter must compare exactly to the name stored in the capsule. " "If the name stored in the capsule is ``NULL``, the *name* passed in must " "also be ``NULL``. Python uses the C function :c:func:`!strcmp` to compare " "capsule names." msgstr "" -"El parámetro *name* debe compararse exactamente con el nombre almacenado en " +"El parámetro *name* debe coincidir exactamente con el nombre almacenado en " "la cápsula. Si el nombre almacenado en la cápsula es ``NULL``, el *name* " -"pasado también debe ser ``NULL``. Python usa la función C :c:func:`strcmp` " -"para comparar nombres de cápsulas." +"también debe ser ``NULL``. Python utiliza la función C :c:func:`!strcmp` " +"para comparar los nombres de las cápsulas." #: ../Doc/c-api/capsule.rst:73 msgid "" @@ -146,8 +147,8 @@ msgstr "" #: ../Doc/c-api/capsule.rst:76 msgid "" "It is legal for a capsule to have a ``NULL`` destructor. This makes a " -"``NULL`` return code somewhat ambiguous; use :c:func:`PyCapsule_IsValid` or :" -"c:func:`PyErr_Occurred` to disambiguate." +"``NULL`` return code somewhat ambiguous; use :c:func:`PyCapsule_IsValid` " +"or :c:func:`PyErr_Occurred` to disambiguate." msgstr "" "Es legal que una cápsula tenga un destructor ``NULL``. Esto hace que un " "código de retorno ``NULL`` sea algo ambiguo; use :c:func:`PyCapsule_IsValid` " @@ -164,12 +165,12 @@ msgstr "" #: ../Doc/c-api/capsule.rst:86 msgid "" "It is legal for a capsule to have a ``NULL`` context. This makes a ``NULL`` " -"return code somewhat ambiguous; use :c:func:`PyCapsule_IsValid` or :c:func:" -"`PyErr_Occurred` to disambiguate." +"return code somewhat ambiguous; use :c:func:`PyCapsule_IsValid` " +"or :c:func:`PyErr_Occurred` to disambiguate." msgstr "" "Es legal que una cápsula tenga un contexto ``NULL``. Esto hace que un código " -"de retorno ``NULL`` sea algo ambiguo; use :c:func:`PyCapsule_IsValid` o :c:" -"func:`PyErr_Occurred` para desambiguar." +"de retorno ``NULL`` sea algo ambiguo; use :c:func:`PyCapsule_IsValid` " +"o :c:func:`PyErr_Occurred` para desambiguar." #: ../Doc/c-api/capsule.rst:93 msgid "" @@ -182,12 +183,12 @@ msgstr "" #: ../Doc/c-api/capsule.rst:96 msgid "" "It is legal for a capsule to have a ``NULL`` name. This makes a ``NULL`` " -"return code somewhat ambiguous; use :c:func:`PyCapsule_IsValid` or :c:func:" -"`PyErr_Occurred` to disambiguate." +"return code somewhat ambiguous; use :c:func:`PyCapsule_IsValid` " +"or :c:func:`PyErr_Occurred` to disambiguate." msgstr "" "Es legal que una cápsula tenga un nombre ``NULL``. Esto hace que un código " -"de retorno ``NULL`` sea algo ambiguo; use :c:func:`PyCapsule_IsValid` o :c:" -"func:`PyErr_Occurred` para desambiguar." +"de retorno ``NULL`` sea algo ambiguo; use :c:func:`PyCapsule_IsValid` " +"o :c:func:`PyErr_Occurred` para desambiguar." #: ../Doc/c-api/capsule.rst:103 msgid "" @@ -223,20 +224,19 @@ msgid "" msgstr "" "Determina si *capsule* es o no una cápsula válida. Una cápsula válida no es " "``NULL``, pasa :c:func:`PyCapsule_CheckExact`, tiene un puntero no ``NULL`` " -"almacenado y su nombre interno coincide con el parámetro *name*. (Consulte :" -"c:func:`PyCapsule_GetPointer` para obtener información sobre cómo se " -"comparan los nombres de las cápsulas)." +"almacenado y su nombre interno coincide con el parámetro *name*. " +"(Consulte :c:func:`PyCapsule_GetPointer` para obtener información sobre cómo " +"se comparan los nombres de las cápsulas)." #: ../Doc/c-api/capsule.rst:123 -#, fuzzy msgid "" "In other words, if :c:func:`PyCapsule_IsValid` returns a true value, calls " "to any of the accessors (any function starting with ``PyCapsule_Get``) are " "guaranteed to succeed." msgstr "" "En otras palabras, si :c:func:`PyCapsule_IsValid` retorna un valor " -"verdadero, las llamadas a cualquiera de las funciones de acceso (cualquier " -"función que comience con :c:func:`PyCapsule_Get`) tienen éxito." +"verdadero, se garantiza que las llamadas a cualquiera de las funciones de " +"acceso (cualquier función que comience con ``PyCapsule_Get``) tendrán éxito." #: ../Doc/c-api/capsule.rst:127 msgid "" @@ -282,9 +282,8 @@ msgstr "" #: ../Doc/c-api/capsule.rst:8 msgid "object" -msgstr "" +msgstr "objeto" #: ../Doc/c-api/capsule.rst:8 -#, fuzzy msgid "Capsule" -msgstr "Cápsulas" +msgstr "Cápsula" From fabb83ce5e20391bcaa849b2a713ea2194a71dc4 Mon Sep 17 00:00:00 2001 From: David Pizarro <105984897+DavidPPizarro@users.noreply.github.com> Date: Sun, 13 Apr 2025 07:43:01 -0500 Subject: [PATCH 30/78] =?UTF-8?q?Traducido=20el=20archivo=20`c-api/iterato?= =?UTF-8?q?r.po`=20y=20a=C3=B1adido=20mi=20nombre=20a=20`TRANSLATORS`.=20(?= =?UTF-8?q?#3385)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #3225 --- TRANSLATORS | 3 ++- c-api/iterator.po | 28 ++++++++++++++-------------- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/TRANSLATORS b/TRANSLATORS index 4686fde202..be067fce8b 100644 --- a/TRANSLATORS +++ b/TRANSLATORS @@ -60,6 +60,7 @@ Daniela Zuluaga Ocampo (@Nany262) Darwing Medina Lacayo (@darwing1210) David Jaimes (@henrzven) David Lorenzo (@David-Lor) +David Pizarro (@davidppizarro) David Revillas (@r3v1) David Silva (@dvidsilva) David Spindola (@davidspindola) @@ -248,4 +249,4 @@ Xavi Rambla Centellas (@xavirambla) Yennifer Paola Herrera Ariza (@Yenniferh) Yohanna Padrino (@Yo-hanaPR) zejiran -Zodac (@zodacdev) +Zodac (@zodacdev) \ No newline at end of file diff --git a/c-api/iterator.po b/c-api/iterator.po index 0a504a7614..2338fd2848 100644 --- a/c-api/iterator.po +++ b/c-api/iterator.po @@ -11,34 +11,34 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-10-12 19:43+0200\n" -"PO-Revision-Date: 2021-08-01 20:11+0200\n" +"PO-Revision-Date: 2025-04-12 22:30-0500\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" +"Language: es\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.13.0\n" +"X-Generator: Poedit 3.6\n" #: ../Doc/c-api/iterator.rst:6 msgid "Iterator Objects" msgstr "Objetos iteradores" #: ../Doc/c-api/iterator.rst:8 -#, fuzzy msgid "" "Python provides two general-purpose iterator objects. The first, a sequence " -"iterator, works with an arbitrary sequence supporting the :meth:`~object." -"__getitem__` method. The second works with a callable object and a sentinel " -"value, calling the callable for each item in the sequence, and ending the " -"iteration when the sentinel value is returned." +"iterator, works with an arbitrary sequence supporting " +"the :meth:`~object.__getitem__` method. The second works with a callable " +"object and a sentinel value, calling the callable for each item in the " +"sequence, and ending the iteration when the sentinel value is returned." msgstr "" "Python proporciona dos objetos iteradores de propósito general. El primero, " "un iterador de secuencia, funciona con una secuencia arbitraria que admite " -"el método :meth:`__getitem__`. El segundo funciona con un objeto invocable y " -"un valor centinela, llamando al invocable para cada elemento de la secuencia " -"y finalizando la iteración cuando se retorna el valor centinela." +"el método :meth:`~object.__getitem__`. El segundo funciona con un objeto " +"invocable y un valor centinela, llamando al invocable para cada elemento en " +"la secuencia y finalizando la iteración cuando se retorna el valor centinela." #: ../Doc/c-api/iterator.rst:17 msgid "" @@ -73,9 +73,9 @@ msgid "" "Type object for iterator objects returned by :c:func:`PyCallIter_New` and " "the two-argument form of the :func:`iter` built-in function." msgstr "" -"Objeto tipo para los objetos iteradores retornados por :c:func:" -"`PyCallIter_New` y la forma de dos argumentos de la función incorporada :" -"func:`iter`." +"Objeto tipo para los objetos iteradores retornados " +"por :c:func:`PyCallIter_New` y la forma de dos argumentos de la función " +"incorporada :func:`iter`." #: ../Doc/c-api/iterator.rst:43 msgid "" From 3e8a1cbb7fbd39121dd14348a715cc3f0f330ef3 Mon Sep 17 00:00:00 2001 From: Carlos Mena <50986837+carlosm00@users.noreply.github.com> Date: Wed, 16 Apr 2025 03:13:01 +0200 Subject: [PATCH 31/78] Traduccion deprecations/pending-removal-in-future.po (#3372) Closes #3296 --- deprecations/pending-removal-in-future.po | 168 ++++++++++++++++------ 1 file changed, 125 insertions(+), 43 deletions(-) diff --git a/deprecations/pending-removal-in-future.po b/deprecations/pending-removal-in-future.po index 4879bf68bd..042d90b43e 100644 --- a/deprecations/pending-removal-in-future.po +++ b/deprecations/pending-removal-in-future.po @@ -10,43 +10,48 @@ msgstr "" "Project-Id-Version: Python en Español 3.13\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language: es\n" +"PO-Revision-Date: 2025-04-15 23:17+0360\n" +"Last-Translator: Carlos Mena Pérez <@carlosm00>\n" "Language-Team: es \n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\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.16.0\n" +"X-Generator: Poedit 3.5\n" #: ../Doc/deprecations/pending-removal-in-future.rst:2 msgid "Pending Removal in Future Versions" -msgstr "" +msgstr "Pendiente de eliminación en versiones futuras" #: ../Doc/deprecations/pending-removal-in-future.rst:4 msgid "" "The following APIs will be removed in the future, although there is " "currently no date scheduled for their removal." msgstr "" +"Las siguientes APIs serán eliminadas en el futuro, aunque no hay fecha de " +"planificación exacta para ello." #: ../Doc/deprecations/pending-removal-in-future.rst:7 msgid "" ":mod:`argparse`: Nesting argument groups and nesting mutually exclusive " "groups are deprecated." msgstr "" +":mod:`argparse`: Anidar grupos de argumentos y anidar grupos mutuamente " +"excluyentes queda deprecado." #: ../Doc/deprecations/pending-removal-in-future.rst:10 msgid ":mod:`array`'s ``'u'`` format code (:gh:`57281`)" -msgstr "" +msgstr "Código de formato ``'u'`` de :mod:`array` (:gh:`57281`)" #: ../Doc/deprecations/pending-removal-in-future.rst:12 msgid ":mod:`builtins`:" -msgstr "" +msgstr ":mod:`builtins`:" #: ../Doc/deprecations/pending-removal-in-future.rst:14 msgid "``bool(NotImplemented)``." -msgstr "" +msgstr "``bool(NotImplemented)``." #: ../Doc/deprecations/pending-removal-in-future.rst:15 msgid "" @@ -54,6 +59,9 @@ msgid "" "is deprecated: use ``throw(exc)`` and ``athrow(exc)`` instead, the single " "argument signature." msgstr "" +"Generadores: las firmas ``throw(type, exc, tb)`` y ``athrow(type, exc, tb)`` " +"están obsoletas: utilice ``throw(exc)`` y ``athrow(exc)`` en su lugar, la " +"firma de argumento único." #: ../Doc/deprecations/pending-removal-in-future.rst:18 msgid "" @@ -66,6 +74,14 @@ msgid "" "keyword:`is` and :keyword:`or`. In a future release it will be changed to a " "syntax error. (:gh:`87999`)" msgstr "" +"Actualmente Python acepta literales numéricos seguidos inmediatamente de " +"palabras clave, por ejemplo, ``0in x``, ``1or x``, ``0if 1else 2``. Permite " +"expresiones confusas y ambiguas como ``[0x1for x in y]`` (que se puede " +"interpretar como ``[0x1 for x in y]`` o ``[0x1f or x in y]``). Se genera una " +"advertencia de sintaxis si el literal numérico va seguido inmediatamente de " +"una de las palabras clave :keyword:`and`, :keyword:`else`, :keyword:`for`, :" +"keyword:`if`, :keyword:`in`, :keyword:`is` y :keyword:`or`. En una versión " +"futura, se cambiará a un error de sintaxis. (:gh:`87999`)" #: ../Doc/deprecations/pending-removal-in-future.rst:26 msgid "" @@ -73,6 +89,9 @@ msgid "" "these methods will be required to return an instance of a strict subclass " "of :class:`int`." msgstr "" +"Compatibilidad con los métodos ``__index__()`` e ``__int__()`` que retornan " +"un tipo que no es int: estos métodos serán necesarios para retornar una " +"instancia de una subclase estricta de :class:`int`." #: ../Doc/deprecations/pending-removal-in-future.rst:29 msgid "" @@ -80,6 +99,9 @@ msgid "" "`float`: these methods will be required to return an instance of :class:" "`float`." msgstr "" +"Compatibilidad con el método ``__float__()`` que retorna una subclase " +"estricta de :class:`float`: será necesario que estos métodos retornen " +"una instancia de :class:`float`." #: ../Doc/deprecations/pending-removal-in-future.rst:32 msgid "" @@ -87,10 +109,13 @@ msgid "" "`complex`: these methods will be required to return an instance of :class:" "`complex`." msgstr "" +"Compatibilidad con el método ``__complex__()`` que retorna una subclase " +"estricta de :class:`complex`: será necesario que estos métodos retornen una " +"instancia de :class:`complex`." #: ../Doc/deprecations/pending-removal-in-future.rst:35 msgid "Delegation of ``int()`` to ``__trunc__()`` method." -msgstr "" +msgstr "Delegación del método ``int()`` al ``__trunc__()``." #: ../Doc/deprecations/pending-removal-in-future.rst:36 msgid "" @@ -99,6 +124,9 @@ msgid "" "single positional argument. (Contributed by Serhiy Storchaka in :gh:" "`109218`.)" msgstr "" +"Ahora está obsoleto el paso de un número complejo como argumento *real* o " +"*imag* en el constructor :func:`complex`; solo debe pasarse como un único " +"argumento posicional. (Contribución de Serhiy Storchaka en :gh:`109218`.)" #: ../Doc/deprecations/pending-removal-in-future.rst:41 msgid "" @@ -106,81 +134,99 @@ msgid "" "are deprecated and replaced by :data:`calendar.JANUARY` and :data:`calendar." "FEBRUARY`. (Contributed by Prince Roshan in :gh:`103636`.)" msgstr "" +":mod:`calendar`: Las constantes ``calendar.January`` y ``calendar.February`` " +"han quedado obsoletas y han sido reemplazadas por :data:`calendar.JANUARY` " +"y :data:`calendar.FEBRUARY`. (Contribución de Prince Roshan en :gh:`103636`.)" #: ../Doc/deprecations/pending-removal-in-future.rst:46 msgid "" ":attr:`codeobject.co_lnotab`: use the :meth:`codeobject.co_lines` method " "instead." msgstr "" +":attr:`codeobject.co_lnotab`: use el método :meth:`codeobject.co_lines` en " +"su lugar." #: ../Doc/deprecations/pending-removal-in-future.rst:49 msgid ":mod:`datetime`:" -msgstr "" +msgstr ":mod:`datetime`:" #: ../Doc/deprecations/pending-removal-in-future.rst:51 msgid "" ":meth:`~datetime.datetime.utcnow`: use ``datetime.datetime.now(tz=datetime." "UTC)``." msgstr "" +":meth:`~datetime.datetime.utcnow`: use ``datetime.datetime.now(tz=datetime." +"UTC)``." #: ../Doc/deprecations/pending-removal-in-future.rst:53 msgid "" ":meth:`~datetime.datetime.utcfromtimestamp`: use ``datetime.datetime." "fromtimestamp(timestamp, tz=datetime.UTC)``." msgstr "" +":meth:`~datetime.datetime.utcfromtimestamp`: use ``datetime.datetime." +"fromtimestamp(timestamp, tz=datetime.UTC)``." #: ../Doc/deprecations/pending-removal-in-future.rst:56 msgid ":mod:`gettext`: Plural value must be an integer." -msgstr "" +msgstr ":mod:`gettext`: El valor plural tiene que ser un entero." #: ../Doc/deprecations/pending-removal-in-future.rst:58 msgid ":mod:`importlib`:" -msgstr "" +msgstr ":mod:`importlib`:" #: ../Doc/deprecations/pending-removal-in-future.rst:60 msgid "``load_module()`` method: use ``exec_module()`` instead." -msgstr "" +msgstr "Método ``load_module()``: use ``exec_module()`` en su lugar." #: ../Doc/deprecations/pending-removal-in-future.rst:61 msgid "" ":func:`~importlib.util.cache_from_source` *debug_override* parameter is " "deprecated: use the *optimization* parameter instead." msgstr "" +"El parámetro *debug_override* de :func:`~importlib.util.cache_from_source` " +"queda obsoleto: use el parámetro *optimization* en su lugar." #: ../Doc/deprecations/pending-removal-in-future.rst:64 msgid ":mod:`importlib.metadata`:" -msgstr "" +msgstr ":mod:`importlib.metadata`:" #: ../Doc/deprecations/pending-removal-in-future.rst:66 msgid "``EntryPoints`` tuple interface." -msgstr "" +msgstr "Interfaz de tupla ``EntryPoints``." #: ../Doc/deprecations/pending-removal-in-future.rst:67 msgid "Implicit ``None`` on return values." -msgstr "" +msgstr "``None`` implícito en valores retornados." #: ../Doc/deprecations/pending-removal-in-future.rst:69 msgid "" ":mod:`logging`: the ``warn()`` method has been deprecated since Python 3.3, " "use :meth:`~logging.warning` instead." msgstr "" +":mod:`logging`: el método ``warn()`` ha quedado obsoleto desde Python 3.3, " +"use :meth:`~logging.warning` en su lugar." #: ../Doc/deprecations/pending-removal-in-future.rst:72 msgid "" ":mod:`mailbox`: Use of StringIO input and text mode is deprecated, use " "BytesIO and binary mode instead." msgstr "" +":mod:`mailbox`: El uso del modo de entrada y texto StringIO está obsoleto, " +"use BytesIO y el modo binario en su lugar." #: ../Doc/deprecations/pending-removal-in-future.rst:75 msgid "" ":mod:`os`: Calling :func:`os.register_at_fork` in multi-threaded process." msgstr "" +":mod:`os`: Llamando a :func:`os.register_at_fork` en procesos multi-hilos." #: ../Doc/deprecations/pending-removal-in-future.rst:77 msgid "" ":class:`!pydoc.ErrorDuringImport`: A tuple value for *exc_info* parameter is " "deprecated, use an exception instance." msgstr "" +":class:`!pydoc.ErrorDuringImport`: El valor de tupla para el parámetro " +"*exc_info* queda obsoleto, use una excepción en su lugar." #: ../Doc/deprecations/pending-removal-in-future.rst:80 msgid "" @@ -190,171 +236,195 @@ msgid "" "replacement strings can now only contain ASCII letters and digits and " "underscore. (Contributed by Serhiy Storchaka in :gh:`91760`.)" msgstr "" +":mod:`re`: Ahora se aplican reglas más estrictas para las referencias " +"numéricas de grupos y los nombres de grupos en expresiones regulares. Ahora " +"solo se aceptan secuencias de dígitos ASCII como referencia numérica. El " +"nombre de grupo en patrones de bytes y cadenas de reemplazo ahora solo puede " +"contener letras y dígitos ASCII y guiones bajos. (Contribución de Serhiy " +"Storchaka en :gh:`91760`.)" #: ../Doc/deprecations/pending-removal-in-future.rst:87 msgid "" ":mod:`!sre_compile`, :mod:`!sre_constants` and :mod:`!sre_parse` modules." msgstr "" +"Módulos :mod:`!sre_compile`, :mod:`!sre_constants` y :mod:`!sre_parse`." #: ../Doc/deprecations/pending-removal-in-future.rst:89 msgid "" ":mod:`shutil`: :func:`~shutil.rmtree`'s *onerror* parameter is deprecated in " "Python 3.12; use the *onexc* parameter instead." msgstr "" +":mod:`shutil`: el parámetro *onerror* de :func:`~shutil.rmtree` queda " +"obsoleto en Python 3.12; use el parámetro *onexc* en su lugar." #: ../Doc/deprecations/pending-removal-in-future.rst:92 msgid ":mod:`ssl` options and protocols:" -msgstr "" +msgstr "Opciones y protocolos de :mod:`ssl`:" #: ../Doc/deprecations/pending-removal-in-future.rst:94 msgid ":class:`ssl.SSLContext` without protocol argument is deprecated." -msgstr "" +msgstr ":class:`ssl.SSLContext` sin argumento de protocolo queda obsoleto." #: ../Doc/deprecations/pending-removal-in-future.rst:95 msgid "" ":class:`ssl.SSLContext`: :meth:`~ssl.SSLContext.set_npn_protocols` and :meth:" "`!selected_npn_protocol` are deprecated: use ALPN instead." msgstr "" +":class:`ssl.SSLContext`: :meth:`~ssl.SSLContext.set_npn_protocols` y :meth:`!" +"selected_npn_protocol` quedan obsoletas: use ALPN en su lugar." #: ../Doc/deprecations/pending-removal-in-future.rst:98 msgid "``ssl.OP_NO_SSL*`` options" -msgstr "" +msgstr "Opciones ``ssl.OP_NO_SSL*``" #: ../Doc/deprecations/pending-removal-in-future.rst:99 msgid "``ssl.OP_NO_TLS*`` options" -msgstr "" +msgstr "Opciones ``ssl.OP_NO_TLS*``" #: ../Doc/deprecations/pending-removal-in-future.rst:100 msgid "``ssl.PROTOCOL_SSLv3``" -msgstr "" +msgstr "``ssl.PROTOCOL_SSLv3``" #: ../Doc/deprecations/pending-removal-in-future.rst:101 msgid "``ssl.PROTOCOL_TLS``" -msgstr "" +msgstr "``ssl.PROTOCOL_TLS``" #: ../Doc/deprecations/pending-removal-in-future.rst:102 msgid "``ssl.PROTOCOL_TLSv1``" -msgstr "" +msgstr "``ssl.PROTOCOL_TLSv1``" #: ../Doc/deprecations/pending-removal-in-future.rst:103 msgid "``ssl.PROTOCOL_TLSv1_1``" -msgstr "" +msgstr "``ssl.PROTOCOL_TLSv1_1``" #: ../Doc/deprecations/pending-removal-in-future.rst:104 msgid "``ssl.PROTOCOL_TLSv1_2``" -msgstr "" +msgstr "``ssl.PROTOCOL_TLSv1_2``" #: ../Doc/deprecations/pending-removal-in-future.rst:105 msgid "``ssl.TLSVersion.SSLv3``" -msgstr "" +msgstr "``ssl.TLSVersion.SSLv3``" #: ../Doc/deprecations/pending-removal-in-future.rst:106 msgid "``ssl.TLSVersion.TLSv1``" -msgstr "" +msgstr "``ssl.TLSVersion.TLSv1``" #: ../Doc/deprecations/pending-removal-in-future.rst:107 msgid "``ssl.TLSVersion.TLSv1_1``" -msgstr "" +msgstr "``ssl.TLSVersion.TLSv1_1``" #: ../Doc/deprecations/pending-removal-in-future.rst:109 msgid "" ":func:`sysconfig.is_python_build` *check_home* parameter is deprecated and " "ignored." msgstr "" +":func:`sysconfig.is_python_build` el parámetro *check_home* es obsoleto e " +"ignorado." #: ../Doc/deprecations/pending-removal-in-future.rst:112 msgid ":mod:`threading` methods:" -msgstr "" +msgstr "Métodos de :mod:`threading`:" #: ../Doc/deprecations/pending-removal-in-future.rst:114 msgid "" ":meth:`!threading.Condition.notifyAll`: use :meth:`~threading.Condition." "notify_all`." msgstr "" +":meth:`!threading.Condition.notifyAll`: use :meth:`~threading.Condition." +"notify_all`." #: ../Doc/deprecations/pending-removal-in-future.rst:115 msgid ":meth:`!threading.Event.isSet`: use :meth:`~threading.Event.is_set`." -msgstr "" +msgstr ":meth:`!threading.Event.isSet`: use :meth:`~threading.Event.is_set`." #: ../Doc/deprecations/pending-removal-in-future.rst:116 msgid "" ":meth:`!threading.Thread.isDaemon`, :meth:`threading.Thread.setDaemon`: use :" "attr:`threading.Thread.daemon` attribute." msgstr "" +":meth:`!threading.Thread.isDaemon`, :meth:`threading.Thread.setDaemon`: use " +"el atributo :attr:`threading.Thread.daemon`." #: ../Doc/deprecations/pending-removal-in-future.rst:118 msgid "" ":meth:`!threading.Thread.getName`, :meth:`threading.Thread.setName`: use :" "attr:`threading.Thread.name` attribute." msgstr "" +":meth:`!threading.Thread.getName`, :meth:`threading.Thread.setName`: use el " +"atributo :attr:`threading.Thread.name`." #: ../Doc/deprecations/pending-removal-in-future.rst:120 msgid ":meth:`!threading.currentThread`: use :meth:`threading.current_thread`." msgstr "" +":meth:`!threading.currentThread`: use :meth:`threading.current_thread`." #: ../Doc/deprecations/pending-removal-in-future.rst:121 msgid ":meth:`!threading.activeCount`: use :meth:`threading.active_count`." -msgstr "" +msgstr ":meth:`!threading.activeCount`: use :meth:`threading.active_count`." #: ../Doc/deprecations/pending-removal-in-future.rst:123 msgid ":class:`typing.Text` (:gh:`92332`)." -msgstr "" +msgstr ":class:`typing.Text` (:gh:`92332`)." #: ../Doc/deprecations/pending-removal-in-future.rst:125 msgid "" ":class:`unittest.IsolatedAsyncioTestCase`: it is deprecated to return a " "value that is not ``None`` from a test case." msgstr "" +":class:`unittest.IsolatedAsyncioTestCase`: queda deprecado retornar un valor " +"que no sea ``None`` en un caso de prueba." #: ../Doc/deprecations/pending-removal-in-future.rst:128 msgid "" ":mod:`urllib.parse` deprecated functions: :func:`~urllib.parse.urlparse` " "instead" msgstr "" +"Funciones deprecadas de :mod:`urllib.parse`: use :func:`~urllib.parse." +"urlparse` en su lugar" #: ../Doc/deprecations/pending-removal-in-future.rst:130 msgid "``splitattr()``" -msgstr "" +msgstr "``splitattr()``" #: ../Doc/deprecations/pending-removal-in-future.rst:131 msgid "``splithost()``" -msgstr "" +msgstr "``splithost()``" #: ../Doc/deprecations/pending-removal-in-future.rst:132 msgid "``splitnport()``" -msgstr "" +msgstr "``splitnport()``" #: ../Doc/deprecations/pending-removal-in-future.rst:133 msgid "``splitpasswd()``" -msgstr "" +msgstr "``splitpasswd()``" #: ../Doc/deprecations/pending-removal-in-future.rst:134 msgid "``splitport()``" -msgstr "" +msgstr "``splitport()``" #: ../Doc/deprecations/pending-removal-in-future.rst:135 msgid "``splitquery()``" -msgstr "" +msgstr "``splitquery()``" #: ../Doc/deprecations/pending-removal-in-future.rst:136 msgid "``splittag()``" -msgstr "" +msgstr "``splittag()``" #: ../Doc/deprecations/pending-removal-in-future.rst:137 msgid "``splittype()``" -msgstr "" +msgstr "``splittype()``" #: ../Doc/deprecations/pending-removal-in-future.rst:138 msgid "``splituser()``" -msgstr "" +msgstr "``splituser()``" #: ../Doc/deprecations/pending-removal-in-future.rst:139 msgid "``splitvalue()``" -msgstr "" +msgstr "``splitvalue()``" #: ../Doc/deprecations/pending-removal-in-future.rst:140 msgid "``to_bytes()``" -msgstr "" +msgstr "``to_bytes()``" #: ../Doc/deprecations/pending-removal-in-future.rst:142 msgid "" @@ -362,12 +432,18 @@ msgid "" "`~urllib.request.FancyURLopener` style of invoking requests is deprecated. " "Use newer :func:`~urllib.request.urlopen` functions and methods." msgstr "" +":mod:`urllib.request`: los estilos :class:`~urllib.request.URLopener` y :" +"class:`~urllib.request.FancyURLopener` para invocar solicitudes quedan " +"obsoletos. Use las nuevas funciones y métodos :func:`~urllib.request." +"urlopen`." #: ../Doc/deprecations/pending-removal-in-future.rst:146 msgid "" ":mod:`wsgiref`: ``SimpleHandler.stdout.write()`` should not do partial " "writes." msgstr "" +":mod:`wsgiref`: ``SimpleHandler.stdout.write()`` no debería hacer escrituras " +"parciales." #: ../Doc/deprecations/pending-removal-in-future.rst:149 msgid "" @@ -376,9 +452,15 @@ msgid "" "return ``True``. Prefer explicit ``len(elem)`` or ``elem is not None`` tests " "instead." msgstr "" +":mod:`xml.etree.ElementTree`: La prueba del valor de verdad de un :class:" +"`~xml.etree.ElementTree.Element` está obsoleta. En una versión futura, " +"siempre retornará ``True``. En su lugar, es preferible realizar pruebas " +"explícitas ``len(elem)`` o ``elem is not None``." #: ../Doc/deprecations/pending-removal-in-future.rst:154 msgid "" ":meth:`zipimport.zipimporter.load_module` is deprecated: use :meth:" "`~zipimport.zipimporter.exec_module` instead." msgstr "" +":meth:`zipimport.zipimporter.load_module` queda obsoleto: use :meth:" +"`~zipimport.zipimporter.exec_module` en su lugar." From a25fadad5fd8446600831b28b4cbafe84e193dec Mon Sep 17 00:00:00 2001 From: David Date: Thu, 17 Apr 2025 17:49:07 +0100 Subject: [PATCH 32/78] Actualizar paso 5 en archivo CONTRIBUTING (#3387) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Encontré una falla en el paso 5 (opcional) de la documentación para contribuir. El Makefile apunta al directorio **venv** y el comando de python crea un directorio nombrado **env**. Snip del código: ``` # # Makefile for Spanish Python Documentation # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ... # Internal variables VENV := $(shell realpath ./venv) PYTHON := $(shell which python3) ... ``` Probé la guia siguiendo los pasos actuales y resulta en un error, cambiando el comando y el _source path_ por **venv** se solucionan los errores. --- .overrides/CONTRIBUTING.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.overrides/CONTRIBUTING.rst b/.overrides/CONTRIBUTING.rst index 360b3f0957..c5081c8639 100644 --- a/.overrides/CONTRIBUTING.rst +++ b/.overrides/CONTRIBUTING.rst @@ -54,9 +54,9 @@ podrás realizar todas las contribuciones que quieras. #. (Opcional) Crea un entorno virtual y actívalo:: - python -m venv env - source env/bin/activate # macOS y Linux - env\Scripts\activate.bat # Windows + python -m venv venv + source venv/bin/activate # macOS y Linux + venv\Scripts\activate.bat # Windows #. (Opcional) Instala los requerimientos del proyecto:: From da743319d7dcc7ce4c4ece0a9d10b0454e86f035 Mon Sep 17 00:00:00 2001 From: David Pizarro <105984897+DavidPPizarro@users.noreply.github.com> Date: Sat, 26 Apr 2025 06:58:08 -0500 Subject: [PATCH 33/78] Traducido archivo howto/clinic (#3388) Closes #3222 --- howto/clinic.po | 3 +++ 1 file changed, 3 insertions(+) diff --git a/howto/clinic.po b/howto/clinic.po index 36454d3541..c6dd4b7702 100644 --- a/howto/clinic.po +++ b/howto/clinic.po @@ -30,3 +30,6 @@ msgid "" "The Argument Clinic How-TO has been moved to the `Python Developer's Guide " "`__." msgstr "" +"La documentación de *Cómo usar Argument Clinic* ha sido trasladado a la `Guía de Desarrolladores de Python " +"`__." + From 61015d4b248aa0c92b95d45f46e08fe576401f4f Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Wed, 7 May 2025 21:20:00 -0500 Subject: [PATCH 34/78] traduccion c-api/bool (#3390) Closes #3269 Co-authored-by: Luis Angel Gonzalez Pereira --- c-api/bool.po | 68 ++++++++++++++++++++++++++++++++++----------------- 1 file changed, 46 insertions(+), 22 deletions(-) diff --git a/c-api/bool.po b/c-api/bool.po index 3938dc07ae..ea41eda60a 100644 --- a/c-api/bool.po +++ b/c-api/bool.po @@ -10,23 +10,23 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: 2021-08-16 13:03+0200\n" +"POT-Creation-Date: 2023-10-12 19:43+0200\n" +"PO-Revision-Date: 2025-05-07 20:14-0500\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" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.16.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Generated-By: Babel 2.13.0\n" +"X-Generator: Poedit 3.6\n" #: ../Doc/c-api/bool.rst:6 msgid "Boolean Objects" msgstr "Objetos booleanos" #: ../Doc/c-api/bool.rst:8 -#, fuzzy msgid "" "Booleans in Python are implemented as a subclass of integers. There are " "only two booleans, :c:data:`Py_False` and :c:data:`Py_True`. As such, the " @@ -43,6 +43,8 @@ msgid "" "This instance of :c:type:`PyTypeObject` represents the Python boolean type; " "it is the same object as :class:`bool` in the Python layer." msgstr "" +"Esta instancia de :c:type:`PyTypeObject` representa el tipo booleano de " +"Python; es el mismo objeto que :class:`bool` en la capa de Python." #: ../Doc/c-api/bool.rst:22 msgid "" @@ -54,40 +56,62 @@ msgstr "" #: ../Doc/c-api/bool.rst:28 msgid "" -"The Python ``False`` object. This object has no methods and is :term:" -"`immortal`." +"The Python ``False`` object. This object has no methods and is `immortal " +"`_." msgstr "" +"El objeto ``False`` de Python. Este objeto no tiene métodos y es `inmortal " +"`_." #: ../Doc/c-api/bool.rst:31 -msgid ":c:data:`Py_False` is :term:`immortal`." -msgstr "" +msgid ":c:data:`Py_False` is immortal." +msgstr ":c:data:`Py_False` es inmortal." #: ../Doc/c-api/bool.rst:37 msgid "" -"The Python ``True`` object. This object has no methods and is :term:" -"`immortal`." +"The Python ``True`` object. This object has no methods and is `immortal " +"`_." msgstr "" +"El objeto ``True`` de Python. Este objeto no tiene métodos y es `inmortal " +"`_." #: ../Doc/c-api/bool.rst:40 -msgid ":c:data:`Py_True` is :term:`immortal`." -msgstr "" +msgid ":c:data:`Py_True` is immortal." +msgstr ":c:data:`Py_True` es inmortal." #: ../Doc/c-api/bool.rst:46 -#, fuzzy msgid "Return :c:data:`Py_False` from a function." -msgstr "" -"Retorna :const:`Py_False` de una función, incrementando adecuadamente su " -"recuento de referencia." +msgstr "Retorna :c:data:`Py_False` desde una función." #: ../Doc/c-api/bool.rst:51 msgid "Return :c:data:`Py_True` from a function." -msgstr "" +msgstr "Retorna :c:data:`Py_True` desde una función.." #: ../Doc/c-api/bool.rst:56 -#, fuzzy msgid "" "Return :c:data:`Py_True` or :c:data:`Py_False`, depending on the truth value " "of *v*." msgstr "" -"Retorna una nueva referencia a :const:`Py_True` o :const:`Py_False` " -"dependiendo del valor de verdad de *v*." +"Retorna :c:data:`Py_True` o :c:data:`Py_False`, dependiendo del valor " +"verdadero de *v*." + +#~ msgid "" +#~ "The Python ``False`` object. This object has no methods. It needs to be " +#~ "treated just like any other object with respect to reference counts." +#~ msgstr "" +#~ "El objeto ``False`` de Python. Este objeto no tiene métodos. Debe " +#~ "tratarse como cualquier otro objeto con respecto a los recuentos de " +#~ "referencia." + +#~ msgid "" +#~ "The Python ``True`` object. This object has no methods. It needs to be " +#~ "treated just like any other object with respect to reference counts." +#~ msgstr "" +#~ "El objeto ``True`` de Python. Este objeto no tiene métodos. Debe tratarse " +#~ "como cualquier otro objeto con respecto a los recuentos de referencia." + +#~ msgid "" +#~ "Return :const:`Py_True` from a function, properly incrementing its " +#~ "reference count." +#~ msgstr "" +#~ "Retorna :const:`Py_True` desde una función, incrementando adecuadamente " +#~ "su recuento de referencia." From 0ac8952987d63365a7575fedb96c296560c05be1 Mon Sep 17 00:00:00 2001 From: Carlos Mena <50986837+carlosm00@users.noreply.github.com> Date: Sun, 11 May 2025 00:58:15 +0200 Subject: [PATCH 35/78] Traduccion c api/conversion.po (#3391) Closes #3277 --------- Co-authored-by: Carlos Mena --- c-api/conversion.po | 55 ++++++++++++++++++++++++++++----------------- 1 file changed, 35 insertions(+), 20 deletions(-) diff --git a/c-api/conversion.po b/c-api/conversion.po index c7d3a5a401..76376b95c2 100644 --- a/c-api/conversion.po +++ b/c-api/conversion.po @@ -11,15 +11,16 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: 2021-12-09 10:24+0800\n" -"Last-Translator: Rodrigo Tobar \n" -"Language: es\n" +"PO-Revision-Date: 2025-05-09 19:20+0200\n" +"Last-Translator: Carlos Mena Pérez <@carlosm00>\n" "Language-Team: python-doc-es\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\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.16.0\n" +"X-Generator: Poedit 3.5\n" #: ../Doc/c-api/conversion.rst:6 msgid "String conversion and formatting" @@ -64,7 +65,6 @@ 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'``) " @@ -76,7 +76,9 @@ 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``." +"0``, ``format != NULL`` y ``size < INT_MAX``. Tenga en cuenta que esto " +"significa que no hay equivalente a la expresión ``n = snprintf(NULL, " +"0, ...)`` de C99, la cual determinaría el tamaño del búfer necesario." #: ../Doc/c-api/conversion.rst:34 msgid "" @@ -129,6 +131,9 @@ msgid "" "long` value according to the given ``base``, which must be between ``2`` and " "``36`` inclusive, or be the special value ``0``." msgstr "" +"Convierte la parte inicial de la cadena de caracteres en ``str`` a un valor :" +"c:expr:`unsigned long` según la ``base`` dada, que debe estar entre ``2`` y " +"``36`` inclusive, o ser el valor especial ``0``." #: ../Doc/c-api/conversion.rst:57 msgid "" @@ -138,6 +143,11 @@ msgid "" "(inclusive). If ``ptr`` is non-``NULL`` it will contain a pointer to the " "end of the scan." msgstr "" +"Se ignoran los espacios en blanco y las mayúsculas y minúsculas. Si " +"``base`` es cero se busca un prefijo ``0b``, ``0o`` o ``0x`` para indicar la " +"base. Si no están, por defecto es ``10``. La base debe ser 0 o entre 2 y " +"36 (ambos inclusive). Si ``ptr`` no es ``NULL``, contendrá un puntero al " +"final del escaneo." #: ../Doc/c-api/conversion.rst:63 msgid "" @@ -146,10 +156,14 @@ msgid "" "macro:`!ULONG_MAX` is returned. If no conversion can be performed, ``0`` is " "returned." msgstr "" +"Si el valor convertido queda fuera del rango del tipo de retorno " +"correspondiente, se produce un error de rango (:c:data:`errno` se establece " +"en :c:macro:`!ERANGE`) y se devuelve :c:macro:`!ULONG_MAX`. Si no se puede " +"realizar la conversión, se devuelve ``0``." #: ../Doc/c-api/conversion.rst:68 msgid "See also the Unix man page :manpage:`strtoul(3)`." -msgstr "" +msgstr "Vea también el manual Unix de :manpage:`strtoul(3)`." #: ../Doc/c-api/conversion.rst:75 msgid "" @@ -157,19 +171,23 @@ msgid "" "according to the given ``base``, which must be between ``2`` and ``36`` " "inclusive, or be the special value ``0``." msgstr "" +"Convierte la parte inicial de la cadena de caracteres en ``str`` a un valor :" +"c:expr:`long` según la ``base`` dada, que debe estar entre ``2`` y ``36`` " +"inclusive, o ser el valor especial ``0``." #: ../Doc/c-api/conversion.rst:79 msgid "" "Same as :c:func:`PyOS_strtoul`, but return a :c:expr:`long` value instead " "and :c:macro:`LONG_MAX` on overflows." msgstr "" +"Igual que :c:func:`PyOS_strtoul`, pero devuelve un valor :c:expr:`long` en " +"su lugar y :c:macro:`LONG_MAX` en desbordamientos." #: ../Doc/c-api/conversion.rst:82 msgid "See also the Unix man page :manpage:`strtol(3)`." -msgstr "" +msgstr "Vea también el manual Unix de :manpage:`strtol(3)`." #: ../Doc/c-api/conversion.rst:89 -#, fuzzy msgid "" "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 " @@ -177,9 +195,9 @@ msgid "" "have leading or trailing whitespace. The conversion is independent of the " "current locale." msgstr "" -"Convierte una cadena de caracteres ``s`` en un :c:type:`double`, generando " -"una excepción de Python en caso de falla. El conjunto de cadenas de " -"caracteres aceptadas corresponde al conjunto de cadenas aceptadas por el " +"Convierte una cadena de caracteres ``s`` a un valor :c:expr:`double`, " +"generando una excepción de Python en caso de fallo. El conjunto de cadenas " +"de caracteres aceptadas corresponde al conjunto de cadenas aceptadas por el " "constructor de Python :func:`float`, excepto que ``s`` no debe tener " "espacios en blanco iniciales o finales. La conversión es independiente de la " "configuración regional actual." @@ -239,12 +257,11 @@ msgstr "" "``-1.0``." #: ../Doc/c-api/conversion.rst:123 -#, fuzzy msgid "" "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 " +"Convierte un :c:expr:`double` *val* a una cadena de caracteres usando " "*format_code*, *precision* y *flags* suministrados." #: ../Doc/c-api/conversion.rst:126 @@ -315,21 +332,19 @@ msgstr "" "`PyMem_Free`." #: ../Doc/c-api/conversion.rst:157 -#, fuzzy msgid "" "Case insensitive comparison of strings. The function works almost " "identically to :c:func:`!strcmp` except that it ignores the case." msgstr "" "Comparación no sensible a mayúsculas y minúsculas en cadenas de caracteres. " -"La función se comporta casi de manera idéntica a :c:func:`strcmp`, excepto " -"que ignora el caso." +"La función se comporta casi de manera idéntica a :c:func:`!strcmp`, excepto " +"que ignora mayúsculas y minúsculas." #: ../Doc/c-api/conversion.rst:163 -#, fuzzy msgid "" "Case insensitive comparison of strings. The function works almost " "identically to :c:func:`!strncmp` except that it ignores the case." msgstr "" "Comparación no sensible a mayúsculas y minúsculas en cadenas de caracteres. " -"La función se comporta casi de manera idéntica a :c:func:`strncmp`, excepto " -"que ignora el caso." +"La función se comporta casi de manera idéntica a :c:func:`!strncmp`, excepto " +"que ignora mayúsculas y minúsculas." From 61f56025abeb379b97a8faec35ff5246cd553abb Mon Sep 17 00:00:00 2001 From: Stan Ulbrych <89152624+StanFromIreland@users.noreply.github.com> Date: Tue, 13 May 2025 01:31:39 +0100 Subject: [PATCH 36/78] Lint fixes (#3392) From [dashboard](https://python-docs-translations.github.io/dashboard/warnings-lint-es.txt) ``` clones/rebased_translations/python/python-docs-es/howto/enum.po:27: Unnecessary parentheses in ':func:`repr()`' (unnecessary-parentheses) clones/rebased_translations/python/python-docs-es/howto/enum.po:391: Unnecessary parentheses in ':func:`auto()`' (unnecessary-parentheses) ``` --- howto/enum.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/howto/enum.po b/howto/enum.po index e22a399000..54b709d01f 100644 --- a/howto/enum.po +++ b/howto/enum.po @@ -32,7 +32,7 @@ msgid "" msgstr "" "Un :class:`Enum` es un conjunto de nombres simbólicos vinculados a valores " "únicos. Son similares a las variables globales, pero ofrecen un :func:" -"`repr()` más útil, agrupación, seguridad de tipos y algunas otras " +"`repr` más útil, agrupación, seguridad de tipos y algunas otras " "características." #: ../Doc/howto/enum.rst:15 @@ -412,7 +412,7 @@ msgid "" "yourself some work and use :func:`auto` for the values::" msgstr "" "En los casos en que los valores reales de los miembros no importen, puede " -"ahorrarse algo de trabajo y usar :func:`auto()` para los valores:" +"ahorrarse algo de trabajo y usar :func:`auto` para los valores:" #: ../Doc/howto/enum.rst:172 msgid "" From cacb33991bfb740e0d1f82bda76d8deb3b3ec002 Mon Sep 17 00:00:00 2001 From: M-E-K-J-2102 Date: Wed, 14 May 2025 02:27:27 -0400 Subject: [PATCH 37/78] =?UTF-8?q?Traducci=C3=B3n=20c-api/refcounting.po=20?= =?UTF-8?q?(#3386)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #3260 --------- Co-authored-by: Marcos Medrano <786907+mmmarcos@users.noreply.github.com> --- TRANSLATORS | 1 + c-api/refcounting.po | 126 ++++++++++++++++++++++++------------------- 2 files changed, 73 insertions(+), 54 deletions(-) diff --git a/TRANSLATORS b/TRANSLATORS index be067fce8b..e46c181565 100644 --- a/TRANSLATORS +++ b/TRANSLATORS @@ -186,6 +186,7 @@ Martín Gaitán (@mgaitan) Martín Ramírez (@tinchoram) Mateo Cámara (@MateoCamara) Matias Bordese (@matiasb) +Matthew Ellis Kane Jiménez (@M-E-K-J-2102) Melissa Escobar Gutiérrez (@MelissaEscobar) Miguel Ángel Nahuel Ambrosini (@ambro17) diff --git a/c-api/refcounting.po b/c-api/refcounting.po index bac90a57c8..f3abd37805 100644 --- a/c-api/refcounting.po +++ b/c-api/refcounting.po @@ -26,18 +26,16 @@ msgid "Reference Counting" msgstr "Conteo de referencias" #: ../Doc/c-api/refcounting.rst:10 -#, fuzzy msgid "" "The functions and macros in this section are used for managing reference " "counts of Python objects." msgstr "" -"Los macros de esta sección se utilizan para administrar conteos de " -"referencia de objetos Python." +"Las funciónes y macros de esta sección se utilizan para administrar conteos " +"de referencia de objetos en Python." #: ../Doc/c-api/refcounting.rst:16 -#, fuzzy msgid "Get the reference count of the Python object *o*." -msgstr "Incrementar el recuento de referencia para el objeto *o*." +msgstr "Obtiene el recuento de referencias para el objeto de Python *o*." #: ../Doc/c-api/refcounting.rst:18 msgid "" @@ -47,46 +45,57 @@ msgid "" "number of references. Consequently, do not rely on the returned value to be " "accurate, other than a value of 0 or 1." msgstr "" +"Ten cuenta que el valor devuelto puede que no reflejar cúantas referencias " +"al objecto existen realmente. Por ejemplo, algunos objetos son :" +"term:'immortal' y tienen un refcount muy alto que no refleja el número " +"real de referencias. Por lo tanto, no confíes en que el valor devuelto sea " +"presciso, salvo cuando sea 0 o 1. " #: ../Doc/c-api/refcounting.rst:24 msgid "" "Use the :c:func:`Py_SET_REFCNT()` function to set an object reference count." msgstr "" +"Usa la función :c:func:`Py_SET_REFCNT()` para establecer la cuenta de " +"referencias de un objeto." #: ../Doc/c-api/refcounting.rst:26 msgid ":c:func:`Py_REFCNT()` is changed to the inline static function." -msgstr "" +msgstr ":c:func:`Py_REFCNT()` se convierte en una función estática en línea." #: ../Doc/c-api/refcounting.rst:29 msgid "The parameter type is no longer :c:expr:`const PyObject*`." -msgstr "" +msgstr "El tipo de parámetro ya no es :c:expr:`const PyObject*`." #: ../Doc/c-api/refcounting.rst:35 -#, fuzzy msgid "Set the object *o* reference counter to *refcnt*." -msgstr "Incrementar el recuento de referencia para el objeto *o*." +msgstr "Establece la cuenta de referencias del objeto *o* al valor *refcnt*." #: ../Doc/c-api/refcounting.rst:37 msgid "" "On :ref:`Python build with Free Threading `, if " "*refcnt* is larger than ``UINT32_MAX``, the object is made :term:`immortal`." msgstr "" +"En :ref:`compilación de Python con Free Threading `, " +"si *refcnt* es mas mayor que ``UINT32_MAX``, el objeto se convierte en :term:" +"`immortal`." #: ../Doc/c-api/refcounting.rst:40 ../Doc/c-api/refcounting.rst:53 #: ../Doc/c-api/refcounting.rst:119 msgid "This function has no effect on :term:`immortal` objects." -msgstr "" +msgstr "Esta función no afecta a los objetos :term:`immortal`." #: ../Doc/c-api/refcounting.rst:44 ../Doc/c-api/refcounting.rst:68 #: ../Doc/c-api/refcounting.rst:147 msgid "Immortal objects are not modified." -msgstr "" +msgstr "Los objetos inmortales no se modifican." #: ../Doc/c-api/refcounting.rst:50 msgid "" "Indicate taking a new :term:`strong reference` to object *o*, indicating it " "is in use and should not be destroyed." msgstr "" +"Indica tomar una nueva :term:`strong reference` al objeto *o*, lo que indica " +"que está en uso y no debe ser destruido. " #: ../Doc/c-api/refcounting.rst:55 msgid "" @@ -101,6 +110,8 @@ msgstr "" #: ../Doc/c-api/refcounting.rst:59 msgid "When done using the object, release is by calling :c:func:`Py_DECREF`." msgstr "" +"Cuando se termine de usar el objeto, se libera llamando a :c:func:" +"`Py_DECREF`." #: ../Doc/c-api/refcounting.rst:61 msgid "" @@ -117,33 +128,32 @@ msgid "" msgstr "" #: ../Doc/c-api/refcounting.rst:74 -#, fuzzy msgid "" "Similar to :c:func:`Py_INCREF`, but the object *o* can be ``NULL``, in which " "case this has no effect." -msgstr "Similar a :c:func:`Py_NewRef`, pero el objeto *o* puede ser NULL." +msgstr "" +"Similar a :c:func:`Py_INCREF`, pero el objeto *o* puede ser ``NULL``, en " +"cuyo caso esto no tiene efecto." #: ../Doc/c-api/refcounting.rst:77 msgid "See also :c:func:`Py_XNewRef`." msgstr "Ver también :c:func:`Py_XNewRef`." #: ../Doc/c-api/refcounting.rst:82 -#, fuzzy msgid "" "Create a new :term:`strong reference` to an object: call :c:func:`Py_INCREF` " "on *o* and return the object *o*." msgstr "" -"Crea un nuevo :term:`strong reference` a un objeto: incrementa el recuento " -"de referencias del objeto *o* y retorna el objeto *o*." +"Crea una nueva :term:`strong reference` a un objeto: llama a :c:func:" +"`Py_INCREF` sobre *o* y devuelve el objeto *o*." #: ../Doc/c-api/refcounting.rst:85 -#, fuzzy msgid "" "When the :term:`strong reference` is no longer needed, :c:func:`Py_DECREF` " "should be called on it to release the reference." msgstr "" -"Cuando el :term:`strong reference` ya no sea necesario :c:func:`Py_DECREF` " -"debe ser llamado para disminuir el recuento de referencias del objeto." +"Cuando la :term:`strong reference` ya no sea necesaria, se debe llamar a :c:" +"func:`Py_DECREF` para disminuir el recuento de referencias del objeto." #: ../Doc/c-api/refcounting.rst:88 msgid "" @@ -184,23 +194,22 @@ msgid "If the object *o* is ``NULL``, the function just returns ``NULL``." msgstr "Si el objeto *o* es ``NULL``, la función solo retorna ``NULL``." #: ../Doc/c-api/refcounting.rst:116 -#, fuzzy msgid "" "Release a :term:`strong reference` to object *o*, indicating the reference " "is no longer used." msgstr "" -"Crea un nuevo :term:`strong reference` a un objeto: incrementa el recuento " -"de referencias del objeto *o* y retorna el objeto *o*." +"Libera una :term:`strong reference` al objeto *o*, indicando que la " +"referencia ya no se usa." #: ../Doc/c-api/refcounting.rst:121 -#, fuzzy msgid "" "Once the last :term:`strong reference` is released (i.e. the object's " "reference count reaches 0), the object's type's deallocation function (which " "must not be ``NULL``) is invoked." msgstr "" -"Si el recuento de referencias llega a cero, se invoca la función de " -"desasignación del tipo de objeto (que no debe ser ``NULL``)." +"Una vez que la última :term:`strong reference` sea liberada (por ejemplo, " +"cuando la cuenta de referencias del objeto llegue a 0), se invoca la función " +"de desasignación del tipo de objeto (la cual no debe ser ``NULL``)." #: ../Doc/c-api/refcounting.rst:126 msgid "" @@ -225,7 +234,6 @@ msgid "" msgstr "" #: ../Doc/c-api/refcounting.rst:138 -#, fuzzy msgid "" "The deallocation function can cause arbitrary Python code to be invoked (e." "g. when a class instance with a :meth:`~object.__del__` method is " @@ -238,15 +246,15 @@ msgid "" "call :c:func:`Py_DECREF` for the temporary variable." msgstr "" "La función de desasignación puede hacer que se invoque un código arbitrario " -"de Python (por ejemplo, cuando se desasigna una instancia de clase con un " -"método :meth:`__del__`). Si bien las excepciones en dicho código no se " -"propagan, el código ejecutado tiene acceso libre a todas las variables " +"de Python (por ejemplo, cuando se desasigna una instancia de clase con el " +"método :meth:`~object.__del__`). Mientras las excepciones en dicho código no sean " +"propagadas, el código ejecutado tendrá acceso libre a todas las variables " "globales de Python. Esto significa que cualquier objeto al que se pueda " -"acceder desde una variable global debe estar en un estado coherente antes de " -"invocar :c:func:`Py_DECREF`. Por ejemplo, el código para eliminar un objeto " -"de una lista debe copiar una referencia al objeto eliminado en una variable " -"temporal, actualizar la estructura de datos de la lista y luego llamar a :c:" -"func:`Py_DECREF` para la variable temporal." +"acceder desde una variable global debería estar en un estado coherente antes " +"de invocar a :c:func:`Py_DECREF`. Por ejemplo, el código para eliminar un " +"objeto de una lista debe copiar una referencia al objeto eliminado en una " +"variable temporal, actualizar la estructura de datos de la lista y luego " +"llamar a :c:func:`Py_DECREF` para la variable temporal." #: ../Doc/c-api/refcounting.rst:153 msgid "" @@ -254,9 +262,11 @@ msgid "" "case this has no effect. The same warning from :c:func:`Py_DECREF` applies " "here as well." msgstr "" +"Similar a :c:func:`Py_DECREF`, pero el objeto *o* puede ser ``NULL``, en " +"cuyo caso esto no tendría efecto alguno. El mismo aviso de :c:func:" +"`Py_DECREF` aplica aqui también." #: ../Doc/c-api/refcounting.rst:160 -#, fuzzy msgid "" "Release a :term:`strong reference` for object *o*. The object may be " "``NULL``, in which case the macro has no effect; otherwise the effect is the " @@ -265,60 +275,60 @@ msgid "" "to the object passed because the macro carefully uses a temporary variable " "and sets the argument to ``NULL`` before releasing the reference." msgstr "" -"Disminuye el conteo de referencia para el objeto *o*. El objeto puede ser " +"Libera una :term:`strong reference` del objeto *o*. El objeto puede ser " "``NULL``, en cuyo caso el macro no tiene efecto; de lo contrario, el efecto " -"es el mismo que para :c:func:`Py_DECREF`, excepto que el argumento también " -"se establece en ``NULL``. La advertencia para :c:func:`Py_DECREF` no se " -"aplica con respecto al objeto pasado porque el macro usa cuidadosamente una " -"variable temporal y establece el argumento en ``NULL`` antes de disminuir su " -"conteo de referencia." +"es el mismo que el de :c:func:`Py_DECREF`, excepto que el argumento también " +"se establece en ``NULL``. La advertencia de :c:func:`Py_DECREF` no se aplica " +"en este caso, ya que el macro usa cuidadosamente una variable temporal y " +"asigna ``NULL`` al algumento antes de luberar la referencia " #: ../Doc/c-api/refcounting.rst:168 -#, fuzzy msgid "" "It is a good idea to use this macro whenever releasing a reference to an " "object that might be traversed during garbage collection." msgstr "" -"Es una buena idea usar este macro siempre que disminuya el conteo de " -"referencia de un objeto que pueda atravesarse durante la recolección de " -"basura." +"Es buena idea usar este macro al liberar una referencia de un objeto que " +"podría ser recorrido durante la recolección de basura." #: ../Doc/c-api/refcounting.rst:171 msgid "" "The macro argument is now only evaluated once. If the argument has side " "effects, these are no longer duplicated." msgstr "" +"Ahora, el macro argumento solo se evalua una vez. Si el argumento tiene " +"efectos secundarios, estos ya no se duplican." #: ../Doc/c-api/refcounting.rst:178 -#, fuzzy msgid "" "Indicate taking a new :term:`strong reference` to object *o*. A function " "version of :c:func:`Py_XINCREF`. It can be used for runtime dynamic " "embedding of Python." msgstr "" -"Incrementa el conteo de referencias para objeto *o*. Una versión de la " -"función :c:func:`Py_XINCREF`. Puede utilizarse para la integración dinámica " -"en tiempo de ejecución de Python." +"Indica la toma de una nueva :term:`strong reference` al objeto *o*. Es una " +"versión en forma de función de :c:func:`Py_XINCREF`. Puede utilizarse para " +"la integración dinámica de Python en tiempo de ejecución." #: ../Doc/c-api/refcounting.rst:185 -#, fuzzy msgid "" "Release a :term:`strong reference` to object *o*. A function version of :c:" "func:`Py_XDECREF`. It can be used for runtime dynamic embedding of Python." msgstr "" -"Disminuye el conteo de referencias del objeto *o*. Una versión de la " -"función :c:func:`Py_XDECREF`. Puede utilizarse para la integración dinámica " -"en tiempo de ejecución de Python." +"Libera una :term:`strong reference` al objeto *o*. Una versión en forma de " +"función de :c:func:`Py_XDECREF`. Puede utilizarse para la integración " +"dinámica de Python en tiempo de ejecución." #: ../Doc/c-api/refcounting.rst:192 msgid "" "Macro safely releasing a :term:`strong reference` to object *dst* and " "setting *dst* to *src*." msgstr "" +"Un macro que libera de forma segura un :term:`strong reference` al objeto " +"*dst* y establece *dst* al valor *src*." #: ../Doc/c-api/refcounting.rst:195 msgid "As in case of :c:func:`Py_CLEAR`, \"the obvious\" code can be deadly::" msgstr "" +"Como en el caso de :c:func:`Py_CLEAR`, el codigo \"obvio\" puede ser mortal::" #: ../Doc/c-api/refcounting.rst:197 msgid "" @@ -328,7 +338,7 @@ msgstr "" #: ../Doc/c-api/refcounting.rst:200 msgid "The safe way is::" -msgstr "" +msgstr "La forma segura es::" #: ../Doc/c-api/refcounting.rst:202 msgid "Py_SETREF(dst, src);" @@ -340,15 +350,23 @@ msgid "" "old value of *dst*, so that any code triggered as a side-effect of *dst* " "getting torn down no longer believes *dst* points to a valid object." msgstr "" +"Eso termina asignando *dst* al valor *src* _antes de_ liberar la referencia " +"al valor anterior de *dst*, para que cualquier código ejecutado como efecto " +"secundario de *dst* siendo destruido ya no crea que *dst* señala a un objeto " +"válido." #: ../Doc/c-api/refcounting.rst:211 ../Doc/c-api/refcounting.rst:223 msgid "" "The macro arguments are now only evaluated once. If an argument has side " "effects, these are no longer duplicated." msgstr "" +"Los macro argumentos ahora solo se evalúan una vez. Si algún argumento tiene " +"efectos secundarios, estos ya no se duplican." #: ../Doc/c-api/refcounting.rst:218 msgid "" "Variant of :c:macro:`Py_SETREF` macro that uses :c:func:`Py_XDECREF` instead " "of :c:func:`Py_DECREF`." msgstr "" +"Un variante del macro :c:macro:`Py_SETREF` que usa :c:func:`Py_XDECREF` en " +"lugar de :c:func:`Py_DECREF`." From 396cc135439d6c37da9cabb88757299f11205d39 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Mon, 19 May 2025 15:42:44 -0500 Subject: [PATCH 38/78] primera traduccion (#3396) Closes #3272 --------- Co-authored-by: rtobar --- c-api/reflection.po | 93 +++++++++++++++++++++++++++------------------ 1 file changed, 57 insertions(+), 36 deletions(-) diff --git a/c-api/reflection.po b/c-api/reflection.po index 00aac1c3c4..14714def82 100644 --- a/c-api/reflection.po +++ b/c-api/reflection.po @@ -11,44 +11,49 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: 2021-12-09 10:32+0800\n" +"PO-Revision-Date: 2025-05-15 13:52-0500\n" "Last-Translator: Rodrigo Tobar \n" -"Language: es\n" "Language-Team: python-doc-es\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\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.16.0\n" +"X-Generator: Poedit 3.6\n" #: ../Doc/c-api/reflection.rst:6 msgid "Reflection" msgstr "Reflexión" #: ../Doc/c-api/reflection.rst:12 -#, fuzzy msgid "Use :c:func:`PyEval_GetFrameBuiltins` instead." -msgstr "Vea también :c:func:`PyThreadState_GetFrame`." +msgstr "Utilice :c:func:`PyEval_GetFrameBuiltins` en su lugar." #: ../Doc/c-api/reflection.rst:14 ../Doc/c-api/reflection.rst:66 msgid "" "Return a dictionary of the builtins in the current execution frame, or the " "interpreter of the thread state if no frame is currently executing." msgstr "" -"Retorna un diccionario de las construcciones en el marco de ejecución " -"actual, o el intérprete del estado del hilo si no se está ejecutando ningún " -"marco actualmente." +"Retorna un diccionario de los builtins en el marco de ejecución actual, o " +"el intérprete del estado del hilo si no hay ningún marco en ejecución " +"actualmente." #: ../Doc/c-api/reflection.rst:22 msgid "" "Use either :c:func:`PyEval_GetFrameLocals` to obtain the same behaviour as " -"calling :func:`locals` in Python code, or else call :c:func:" -"`PyFrame_GetLocals` on the result of :c:func:`PyEval_GetFrame` to access " -"the :attr:`~frame.f_locals` attribute of the currently executing frame." +"calling :func:`locals` in Python code, or else " +"call :c:func:`PyFrame_GetLocals` on the result of :c:func:`PyEval_GetFrame` " +"to access the :attr:`~frame.f_locals` attribute of the currently executing " +"frame." msgstr "" +"Utilice :c:func:`PyEval_GetFrameLocals` para obtener el mismo comportamiento " +"que llamando a :func:`locals` en código Python, o bien llama " +"a :c:func:`PyFrame_GetLocals` sobre el resultado " +"de :c:func:`PyEval_GetFrame` para acceder al " +"atributo :attr:`~frame.f_locals` del frame actualmente en ejecución." #: ../Doc/c-api/reflection.rst:27 -#, fuzzy msgid "" "Return a mapping providing access to the local variables in the current " "execution frame, or ``NULL`` if no frame is currently executing." @@ -61,30 +66,42 @@ msgid "" "Refer to :func:`locals` for details of the mapping returned at different " "scopes." msgstr "" +"Consulte :func:`locals` para obtener más información sobre el mapeo " +"retornado en diferentes ámbitos." #: ../Doc/c-api/reflection.rst:32 msgid "" "As this function returns a :term:`borrowed reference`, the dictionary " "returned for :term:`optimized scopes ` is cached on the " -"frame object and will remain alive as long as the frame object does. Unlike :" -"c:func:`PyEval_GetFrameLocals` and :func:`locals`, subsequent calls to this " -"function in the same frame will update the contents of the cached dictionary " -"to reflect changes in the state of the local variables rather than returning " -"a new snapshot." +"frame object and will remain alive as long as the frame object does. " +"Unlike :c:func:`PyEval_GetFrameLocals` and :func:`locals`, subsequent calls " +"to this function in the same frame will update the contents of the cached " +"dictionary to reflect changes in the state of the local variables rather " +"than returning a new snapshot." msgstr "" +"Como esta función retorna una :term:`referencia prestada`, el diccionario " +"retornado para :term:`ámbitos optimizados ` se almacena en " +"caché en el objeto marco y permanecerá vivo mientras lo haga el marco del " +"objeto. A diferencia de :c:func:`PyEval_GetFrameLocals` y :func:`locals`, " +"las llamadas posteriores a esta función en el mismo marco actualizarán el " +"contenido del diccionario en caché para reflejar los cambios en el estado de " +"las variables locales en lugar de retornar una nueva instantánea." #: ../Doc/c-api/reflection.rst:39 msgid "" -"As part of :pep:`667`, :c:func:`PyFrame_GetLocals`, :func:`locals`, and :" -"attr:`FrameType.f_locals ` no longer make use of the shared " -"cache dictionary. Refer to the :ref:`What's New entry ` for additional details." +"As part of :pep:`667`, :c:func:`PyFrame_GetLocals`, :func:`locals`, " +"and :attr:`FrameType.f_locals ` no longer make use of the " +"shared cache dictionary. Refer to the :ref:`What's New entry ` for additional details." msgstr "" +"Como parte de :pep:`667`, :c:func:`PyFrame_GetLocals`, :func:`locals`, " +"y :attr:`FrameType.f_locals ` ya no utilizan el diccionario " +"de caché compartido. Consulte la entrada :ref:`What's New ` para más detalles." #: ../Doc/c-api/reflection.rst:50 -#, fuzzy msgid "Use :c:func:`PyEval_GetFrameGlobals` instead." -msgstr "Vea también :c:func:`PyThreadState_GetFrame`." +msgstr "Utilice :c:func:`PyEval_GetFrameGlobals` en su lugar." #: ../Doc/c-api/reflection.rst:52 msgid "" @@ -107,31 +124,35 @@ msgid "See also :c:func:`PyThreadState_GetFrame`." msgstr "Vea también :c:func:`PyThreadState_GetFrame`." #: ../Doc/c-api/reflection.rst:74 -#, fuzzy msgid "" "Return a dictionary of the local variables in the current execution frame, " -"or ``NULL`` if no frame is currently executing. Equivalent to calling :func:" -"`locals` in Python code." +"or ``NULL`` if no frame is currently executing. Equivalent to " +"calling :func:`locals` in Python code." msgstr "" "Retorna un diccionario de las variables locales en el marco de ejecución " -"actual, o ``NULL`` si actualmente no se está ejecutando ningún marco." +"actual, o ``NULL`` si no se está ejecutando ningún marco. Equivale a llamar " +"a :func:`locals` en código Python." #: ../Doc/c-api/reflection.rst:78 msgid "" "To access :attr:`~frame.f_locals` on the current frame without making an " -"independent snapshot in :term:`optimized scopes `, call :c:" -"func:`PyFrame_GetLocals` on the result of :c:func:`PyEval_GetFrame`." +"independent snapshot in :term:`optimized scopes `, " +"call :c:func:`PyFrame_GetLocals` on the result of :c:func:`PyEval_GetFrame`." msgstr "" +"Para acceder a :attr:`~frame.f_locals` en el marco actual sin hacer una " +"captura independiente en :term:`ámbitos optimizados `, llame " +"a :c:func:`PyFrame_GetLocals` sobre el resultado " +"de :c:func:`PyEval_GetFrame`." #: ../Doc/c-api/reflection.rst:87 -#, fuzzy msgid "" "Return a dictionary of the global variables in the current execution frame, " -"or ``NULL`` if no frame is currently executing. Equivalent to calling :func:" -"`globals` in Python code." +"or ``NULL`` if no frame is currently executing. Equivalent to " +"calling :func:`globals` in Python code." msgstr "" -"Retorna un diccionario de las variables globales en el marco de ejecución " -"actual, o ``NULL`` si actualmente no se está ejecutando ningún marco." +"Retorna un diccionario de las variables locales en el marco de ejecución " +"actual, o ``NULL`` si no se está ejecutando ningún marco. Equivale a llamar " +"a :func:`globals` en código Python." #: ../Doc/c-api/reflection.rst:96 msgid "" @@ -145,8 +166,8 @@ msgstr "" msgid "" "Return a description string, depending on the type of *func*. Return values " "include \"()\" for functions and methods, \" constructor\", \" instance\", " -"and \" object\". Concatenated with the result of :c:func:" -"`PyEval_GetFuncName`, the result will be a description of *func*." +"and \" object\". Concatenated with the result " +"of :c:func:`PyEval_GetFuncName`, the result will be a description of *func*." msgstr "" "Retorna una cadena de caracteres de descripción, según el tipo de *func*. " "Los valores de retorno incluyen \"()\" para funciones y métodos, " From 0f3bc36f8d8504ab9194dd71ca72c75ca4240b94 Mon Sep 17 00:00:00 2001 From: Carlos Mena <50986837+carlosm00@users.noreply.github.com> Date: Fri, 30 May 2025 01:02:40 +0200 Subject: [PATCH 39/78] =?UTF-8?q?Traducci=C3=B3n=20de=20deprecations/c-api?= =?UTF-8?q?-pending-removal-in-future.po=20(#3397)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #3291 --- .../c-api-pending-removal-in-future.po | 58 +++++++++++++++---- 1 file changed, 48 insertions(+), 10 deletions(-) diff --git a/deprecations/c-api-pending-removal-in-future.po b/deprecations/c-api-pending-removal-in-future.po index 1996da9be1..c12f53b674 100644 --- a/deprecations/c-api-pending-removal-in-future.po +++ b/deprecations/c-api-pending-removal-in-future.po @@ -10,134 +10,172 @@ msgstr "" "Project-Id-Version: Python en Español 3.13\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language: es\n" +"PO-Revision-Date: 2025-05-30 00:19+0200\n" +"Last-Translator: Carlos Mena Pérez <@carlosm00>\n" "Language-Team: es \n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\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.16.0\n" +"X-Generator: Poedit 3.5\n" #: ../Doc/deprecations/c-api-pending-removal-in-future.rst:2 msgid "Pending Removal in Future Versions" -msgstr "" +msgstr "Pendiente de eliminación en versiones futuras" #: ../Doc/deprecations/c-api-pending-removal-in-future.rst:4 msgid "" "The following APIs are deprecated and will be removed, although there is " "currently no date scheduled for their removal." msgstr "" +"Las siguientes APIs están obsoletas y serán eliminadas, aunque actualmente " +"no hay fecha prevista para su eliminación." #: ../Doc/deprecations/c-api-pending-removal-in-future.rst:7 msgid ":c:macro:`Py_TPFLAGS_HAVE_FINALIZE`: Unneeded since Python 3.8." -msgstr "" +msgstr ":c:macro:`Py_TPFLAGS_HAVE_FINALIZE`: Innecesaria desde Python 3.8." #: ../Doc/deprecations/c-api-pending-removal-in-future.rst:9 msgid ":c:func:`PyErr_Fetch`: Use :c:func:`PyErr_GetRaisedException` instead." msgstr "" +":c:func:`PyErr_Fetch`: Utilice :c:func:`PyErr_GetRaisedException` en su " +"lugar." #: ../Doc/deprecations/c-api-pending-removal-in-future.rst:11 msgid "" ":c:func:`PyErr_NormalizeException`: Use :c:func:`PyErr_GetRaisedException` " "instead." msgstr "" +":c:func:`PyErr_NormalizeException`: Utilice :c:func:" +"`PyErr_GetRaisedException` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-future.rst:13 msgid "" ":c:func:`PyErr_Restore`: Use :c:func:`PyErr_SetRaisedException` instead." msgstr "" +":c:func:`PyErr_Restore`: Utilice :c:func:`PyErr_SetRaisedException` en su " +"lugar." #: ../Doc/deprecations/c-api-pending-removal-in-future.rst:15 msgid "" ":c:func:`PyModule_GetFilename`: Use :c:func:`PyModule_GetFilenameObject` " "instead." msgstr "" +":c:func:`PyModule_GetFilename`: Utilice :c:func:`PyModule_GetFilenameObject` " +"en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-future.rst:17 msgid ":c:func:`PyOS_AfterFork`: Use :c:func:`PyOS_AfterFork_Child` instead." msgstr "" +":c:func:`PyOS_AfterFork`: Utilice :c:func:`PyOS_AfterFork_Child` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-future.rst:19 msgid "" ":c:func:`PySlice_GetIndicesEx`: Use :c:func:`PySlice_Unpack` and :c:func:" "`PySlice_AdjustIndices` instead." msgstr "" +":c:func:`PySlice_GetIndicesEx`: Utilice :c:func:`PySlice_Unpack` y :c:func:" +"`PySlice_AdjustIndices` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-future.rst:21 msgid "" ":c:func:`!PyUnicode_AsDecodedObject`: Use :c:func:`PyCodec_Decode` instead." msgstr "" +":c:func:`!PyUnicode_AsDecodedObject`: Utilice :c:func:`PyCodec_Decode` en su " +"lugar." #: ../Doc/deprecations/c-api-pending-removal-in-future.rst:23 msgid "" ":c:func:`!PyUnicode_AsDecodedUnicode`: Use :c:func:`PyCodec_Decode` instead." msgstr "" +":c:func:`!PyUnicode_AsDecodedUnicode`: Utilice :c:func:`PyCodec_Decode` en " +"su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-future.rst:25 msgid "" ":c:func:`!PyUnicode_AsEncodedObject`: Use :c:func:`PyCodec_Encode` instead." msgstr "" +":c:func:`!PyUnicode_AsEncodedObject`: Utilice :c:func:`PyCodec_Encode` en su " +"lugar." #: ../Doc/deprecations/c-api-pending-removal-in-future.rst:27 msgid "" ":c:func:`!PyUnicode_AsEncodedUnicode`: Use :c:func:`PyCodec_Encode` instead." msgstr "" +":c:func:`!PyUnicode_AsEncodedUnicode`: Utilice :c:func:`PyCodec_Encode` en " +"su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-future.rst:29 msgid ":c:func:`PyUnicode_READY`: Unneeded since Python 3.12" -msgstr "" +msgstr ":c:func:`PyUnicode_READY`: Innecesaria desde Python 3.12" #: ../Doc/deprecations/c-api-pending-removal-in-future.rst:31 msgid ":c:func:`!PyErr_Display`: Use :c:func:`PyErr_DisplayException` instead." msgstr "" +":c:func:`!PyErr_Display`: Utilice :c:func:`PyErr_DisplayException` en su " +"lugar." #: ../Doc/deprecations/c-api-pending-removal-in-future.rst:33 msgid "" ":c:func:`!_PyErr_ChainExceptions`: Use :c:func:`!_PyErr_ChainExceptions1` " "instead." msgstr "" +":c:func:`!_PyErr_ChainExceptions`: Utilice :c:func:`!" +"_PyErr_ChainExceptions1` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-future.rst:35 msgid "" ":c:member:`!PyBytesObject.ob_shash` member: call :c:func:`PyObject_Hash` " "instead." msgstr "" +"Miembro :c:member:`!PyBytesObject.ob_shash`: Llame a :c:func:`PyObject_Hash` " +"en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-future.rst:37 msgid ":c:member:`!PyDictObject.ma_version_tag` member." -msgstr "" +msgstr "Miembro :c:member:`!PyDictObject.ma_version_tag`." #: ../Doc/deprecations/c-api-pending-removal-in-future.rst:38 msgid "Thread Local Storage (TLS) API:" -msgstr "" +msgstr "API de almacenamiento local de hilos (TLS):" #: ../Doc/deprecations/c-api-pending-removal-in-future.rst:40 msgid "" ":c:func:`PyThread_create_key`: Use :c:func:`PyThread_tss_alloc` instead." msgstr "" +":c:func:`PyThread_create_key`: Utilice :c:func:`PyThread_tss_alloc` en su " +"lugar." #: ../Doc/deprecations/c-api-pending-removal-in-future.rst:42 msgid ":c:func:`PyThread_delete_key`: Use :c:func:`PyThread_tss_free` instead." msgstr "" +":c:func:`PyThread_delete_key`: Utilice :c:func:`PyThread_tss_free` en su " +"lugar." #: ../Doc/deprecations/c-api-pending-removal-in-future.rst:44 msgid "" ":c:func:`PyThread_set_key_value`: Use :c:func:`PyThread_tss_set` instead." msgstr "" +":c:func:`PyThread_set_key_value`: Utilice :c:func:`PyThread_tss_set` en su " +"lugar." #: ../Doc/deprecations/c-api-pending-removal-in-future.rst:46 msgid "" ":c:func:`PyThread_get_key_value`: Use :c:func:`PyThread_tss_get` instead." msgstr "" +":c:func:`PyThread_get_key_value`: Utilice :c:func:`PyThread_tss_get` en su " +"lugar." #: ../Doc/deprecations/c-api-pending-removal-in-future.rst:48 msgid "" ":c:func:`PyThread_delete_key_value`: Use :c:func:`PyThread_tss_delete` " "instead." msgstr "" +":c:func:`PyThread_delete_key_value`: Utilice :c:func:`PyThread_tss_delete` " +"en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-future.rst:50 msgid ":c:func:`PyThread_ReInitTLS`: Unneeded since Python 3.7." -msgstr "" +msgstr ":c:func:`PyThread_ReInitTLS`: Innecesaria desde Python 3.7." From 69f6a2b97351984ba38c320500a7a813a9f3a71d Mon Sep 17 00:00:00 2001 From: Marcos Medrano <786907+mmmarcos@users.noreply.github.com> Date: Sun, 1 Jun 2025 00:23:17 +0200 Subject: [PATCH 40/78] Traducido c-api/refcounting.po (#3399) Fix de algunas traducciones y problemas que quedaron sin resolver en #3386 --------- Co-authored-by: rtobar --- c-api/refcounting.po | 111 ++++++++++++++++++++++++------------------- 1 file changed, 61 insertions(+), 50 deletions(-) diff --git a/c-api/refcounting.po b/c-api/refcounting.po index f3abd37805..a76233eb0f 100644 --- a/c-api/refcounting.po +++ b/c-api/refcounting.po @@ -11,15 +11,16 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: 2022-11-04 09:05-0300\n" -"Last-Translator: Rodrigo Poblete \n" -"Language: es\n" +"PO-Revision-Date: 2025-05-16 20:01+0200\n" +"Last-Translator: Marcos Medrano \n" "Language-Team: python-doc-es\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\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.16.0\n" +"X-Generator: Poedit 3.6\n" #: ../Doc/c-api/refcounting.rst:8 msgid "Reference Counting" @@ -30,7 +31,7 @@ msgid "" "The functions and macros in this section are used for managing reference " "counts of Python objects." msgstr "" -"Las funciónes y macros de esta sección se utilizan para administrar conteos " +"Las funciones y macros de esta sección se utilizan para administrar conteos " "de referencia de objetos en Python." #: ../Doc/c-api/refcounting.rst:16 @@ -40,16 +41,16 @@ msgstr "Obtiene el recuento de referencias para el objeto de Python *o*." #: ../Doc/c-api/refcounting.rst:18 msgid "" "Note that the returned value may not actually reflect how many references to " -"the object are actually held. For example, some objects are :term:" -"`immortal` and have a very high refcount that does not reflect the actual " -"number of references. Consequently, do not rely on the returned value to be " -"accurate, other than a value of 0 or 1." -msgstr "" -"Ten cuenta que el valor devuelto puede que no reflejar cúantas referencias " -"al objecto existen realmente. Por ejemplo, algunos objetos son :" -"term:'immortal' y tienen un refcount muy alto que no refleja el número " +"the object are actually held. For example, some objects " +"are :term:`immortal` and have a very high refcount that does not reflect the " +"actual number of references. Consequently, do not rely on the returned " +"value to be accurate, other than a value of 0 or 1." +msgstr "" +"Ten cuenta que el valor devuelto puede que no reflejar cuantas referencias " +"al objecto existen realmente. Por ejemplo, algunos objetos " +"son :term:`immortal` y tienen un refcount muy alto que no refleja el número " "real de referencias. Por lo tanto, no confíes en que el valor devuelto sea " -"presciso, salvo cuando sea 0 o 1. " +"preciso, salvo cuando sea 0 o 1." #: ../Doc/c-api/refcounting.rst:24 msgid "" @@ -75,9 +76,9 @@ msgid "" "On :ref:`Python build with Free Threading `, if " "*refcnt* is larger than ``UINT32_MAX``, the object is made :term:`immortal`." msgstr "" -"En :ref:`compilación de Python con Free Threading `, " -"si *refcnt* es mas mayor que ``UINT32_MAX``, el objeto se convierte en :term:" -"`immortal`." +"En :ref:`compilación de Python con Free Threading `, " +"si *refcnt* es mas mayor que ``UINT32_MAX``, el objeto se convierte " +"en :term:`immortal`." #: ../Doc/c-api/refcounting.rst:40 ../Doc/c-api/refcounting.rst:53 #: ../Doc/c-api/refcounting.rst:119 @@ -95,23 +96,24 @@ msgid "" "is in use and should not be destroyed." msgstr "" "Indica tomar una nueva :term:`strong reference` al objeto *o*, lo que indica " -"que está en uso y no debe ser destruido. " +"que está en uso y no debe ser destruido." #: ../Doc/c-api/refcounting.rst:55 msgid "" -"This function is usually used to convert a :term:`borrowed reference` to a :" -"term:`strong reference` in-place. The :c:func:`Py_NewRef` function can be " +"This function is usually used to convert a :term:`borrowed reference` to " +"a :term:`strong reference` in-place. The :c:func:`Py_NewRef` function can be " "used to create a new :term:`strong reference`." msgstr "" "Esta función se usa generalmente para convertir un :term:`borrowed " -"reference` en un :term:`strong reference` en su lugar. La función :c:func:" -"`Py_NewRef` se puede utilizar para crear un nuevo :term:`strong reference`." +"reference` en un :term:`strong reference` en su lugar. La " +"función :c:func:`Py_NewRef` se puede utilizar para crear un " +"nuevo :term:`strong reference`." #: ../Doc/c-api/refcounting.rst:59 msgid "When done using the object, release is by calling :c:func:`Py_DECREF`." msgstr "" -"Cuando se termine de usar el objeto, se libera llamando a :c:func:" -"`Py_DECREF`." +"Cuando se termine de usar el objeto, se libera llamando " +"a :c:func:`Py_DECREF`." #: ../Doc/c-api/refcounting.rst:61 msgid "" @@ -123,9 +125,11 @@ msgstr "" #: ../Doc/c-api/refcounting.rst:64 msgid "" -"Do not expect this function to actually modify *o* in any way. For at least :" -"pep:`some objects <0683>`, this function has no effect." +"Do not expect this function to actually modify *o* in any way. For at " +"least :pep:`some objects <0683>`, this function has no effect." msgstr "" +"No esperes que esta función modifique realmente *o* de ninguna manera. Al " +"menos para :pep:`algunos objetos <0683>`, esta función no tiene ningún efecto." #: ../Doc/c-api/refcounting.rst:74 msgid "" @@ -144,16 +148,16 @@ msgid "" "Create a new :term:`strong reference` to an object: call :c:func:`Py_INCREF` " "on *o* and return the object *o*." msgstr "" -"Crea una nueva :term:`strong reference` a un objeto: llama a :c:func:" -"`Py_INCREF` sobre *o* y devuelve el objeto *o*." +"Crea una nueva :term:`strong reference` a un objeto: llama " +"a :c:func:`Py_INCREF` sobre *o* y devuelve el objeto *o*." #: ../Doc/c-api/refcounting.rst:85 msgid "" "When the :term:`strong reference` is no longer needed, :c:func:`Py_DECREF` " "should be called on it to release the reference." msgstr "" -"Cuando la :term:`strong reference` ya no sea necesaria, se debe llamar a :c:" -"func:`Py_DECREF` para disminuir el recuento de referencias del objeto." +"Cuando la :term:`strong reference` ya no sea necesaria, se debe llamar " +"a :c:func:`Py_DECREF` para disminuir el recuento de referencias del objeto." #: ../Doc/c-api/refcounting.rst:88 msgid "" @@ -172,6 +176,8 @@ msgid "" "Py_INCREF(obj);\n" "self->attr = obj;" msgstr "" +"Py_INCREF(obj);\n" +"self->attr = obj;" #: ../Doc/c-api/refcounting.rst:96 msgid "can be written as::" @@ -179,7 +185,7 @@ msgstr "puede ser escrito como::" #: ../Doc/c-api/refcounting.rst:98 msgid "self->attr = Py_NewRef(obj);" -msgstr "" +msgstr "self->attr = Py_NewRef(obj);" #: ../Doc/c-api/refcounting.rst:100 msgid "See also :c:func:`Py_INCREF`." @@ -229,14 +235,16 @@ msgstr "" #: ../Doc/c-api/refcounting.rst:132 msgid "" -"Do not expect this function to actually modify *o* in any way. For at least :" -"pep:`some objects <683>`, this function has no effect." +"Do not expect this function to actually modify *o* in any way. For at " +"least :pep:`some objects <683>`, this function has no effect." msgstr "" +"No esperes que esta función modifique realmente *o* de ninguna manera. Al " +"menos para :pep:`algunos objetos <683>`, esta función no tiene ningún efecto." #: ../Doc/c-api/refcounting.rst:138 msgid "" -"The deallocation function can cause arbitrary Python code to be invoked (e." -"g. when a class instance with a :meth:`~object.__del__` method is " +"The deallocation function can cause arbitrary Python code to be invoked " +"(e.g. when a class instance with a :meth:`~object.__del__` method is " "deallocated). While exceptions in such code are not propagated, the " "executed code has free access to all Python global variables. This means " "that any object that is reachable from a global variable should be in a " @@ -247,12 +255,12 @@ msgid "" msgstr "" "La función de desasignación puede hacer que se invoque un código arbitrario " "de Python (por ejemplo, cuando se desasigna una instancia de clase con el " -"método :meth:`~object.__del__`). Mientras las excepciones en dicho código no sean " -"propagadas, el código ejecutado tendrá acceso libre a todas las variables " -"globales de Python. Esto significa que cualquier objeto al que se pueda " -"acceder desde una variable global debería estar en un estado coherente antes " -"de invocar a :c:func:`Py_DECREF`. Por ejemplo, el código para eliminar un " -"objeto de una lista debe copiar una referencia al objeto eliminado en una " +"método :meth:`~object.__del__`). Mientras las excepciones en dicho código no " +"sean propagadas, el código ejecutado tendrá acceso libre a todas las " +"variables globales de Python. Esto significa que cualquier objeto al que se " +"pueda acceder desde una variable global debería estar en un estado coherente " +"antes de invocar a :c:func:`Py_DECREF`. Por ejemplo, el código para eliminar " +"un objeto de una lista debe copiar una referencia al objeto eliminado en una " "variable temporal, actualizar la estructura de datos de la lista y luego " "llamar a :c:func:`Py_DECREF` para la variable temporal." @@ -263,8 +271,8 @@ msgid "" "here as well." msgstr "" "Similar a :c:func:`Py_DECREF`, pero el objeto *o* puede ser ``NULL``, en " -"cuyo caso esto no tendría efecto alguno. El mismo aviso de :c:func:" -"`Py_DECREF` aplica aqui también." +"cuyo caso esto no tendría efecto alguno. El mismo aviso " +"de :c:func:`Py_DECREF` aplica aquí también." #: ../Doc/c-api/refcounting.rst:160 msgid "" @@ -280,7 +288,7 @@ msgstr "" "es el mismo que el de :c:func:`Py_DECREF`, excepto que el argumento también " "se establece en ``NULL``. La advertencia de :c:func:`Py_DECREF` no se aplica " "en este caso, ya que el macro usa cuidadosamente una variable temporal y " -"asigna ``NULL`` al algumento antes de luberar la referencia " +"asigna ``NULL`` al argumento antes de liberar la referencia." #: ../Doc/c-api/refcounting.rst:168 msgid "" @@ -295,7 +303,7 @@ msgid "" "The macro argument is now only evaluated once. If the argument has side " "effects, these are no longer duplicated." msgstr "" -"Ahora, el macro argumento solo se evalua una vez. Si el argumento tiene " +"Ahora, el macro argumento solo se evalúa una vez. Si el argumento tiene " "efectos secundarios, estos ya no se duplican." #: ../Doc/c-api/refcounting.rst:178 @@ -310,8 +318,9 @@ msgstr "" #: ../Doc/c-api/refcounting.rst:185 msgid "" -"Release a :term:`strong reference` to object *o*. A function version of :c:" -"func:`Py_XDECREF`. It can be used for runtime dynamic embedding of Python." +"Release a :term:`strong reference` to object *o*. A function version " +"of :c:func:`Py_XDECREF`. It can be used for runtime dynamic embedding of " +"Python." msgstr "" "Libera una :term:`strong reference` al objeto *o*. Una versión en forma de " "función de :c:func:`Py_XDECREF`. Puede utilizarse para la integración " @@ -328,13 +337,15 @@ msgstr "" #: ../Doc/c-api/refcounting.rst:195 msgid "As in case of :c:func:`Py_CLEAR`, \"the obvious\" code can be deadly::" msgstr "" -"Como en el caso de :c:func:`Py_CLEAR`, el codigo \"obvio\" puede ser mortal::" +"Como en el caso de :c:func:`Py_CLEAR`, el código \"obvio\" puede ser mortal::" #: ../Doc/c-api/refcounting.rst:197 msgid "" "Py_DECREF(dst);\n" "dst = src;" msgstr "" +"Py_DECREF(dst);\n" +"dst = src;" #: ../Doc/c-api/refcounting.rst:200 msgid "The safe way is::" @@ -342,7 +353,7 @@ msgstr "La forma segura es::" #: ../Doc/c-api/refcounting.rst:202 msgid "Py_SETREF(dst, src);" -msgstr "" +msgstr "Py_SETREF(dst, src);" #: ../Doc/c-api/refcounting.rst:204 msgid "" @@ -350,7 +361,7 @@ msgid "" "old value of *dst*, so that any code triggered as a side-effect of *dst* " "getting torn down no longer believes *dst* points to a valid object." msgstr "" -"Eso termina asignando *dst* al valor *src* _antes de_ liberar la referencia " +"Eso termina asignando *dst* al valor *src* _antes_ de liberar la referencia " "al valor anterior de *dst*, para que cualquier código ejecutado como efecto " "secundario de *dst* siendo destruido ya no crea que *dst* señala a un objeto " "válido." From f5a06a3b43fe0615c9dd17b4cdcbaa89ebb096ae Mon Sep 17 00:00:00 2001 From: Carlos Mena <50986837+carlosm00@users.noreply.github.com> Date: Mon, 2 Jun 2025 01:02:10 +0200 Subject: [PATCH 41/78] =?UTF-8?q?Traducci=C3=B3n=20de=20deprecations/c-api?= =?UTF-8?q?-pending-removal-in-3.14.po=20(#3398)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #3292 --------- Co-authored-by: rtobar --- deprecations/c-api-pending-removal-in-3.14.po | 65 +++++++++++++++++-- 1 file changed, 58 insertions(+), 7 deletions(-) diff --git a/deprecations/c-api-pending-removal-in-3.14.po b/deprecations/c-api-pending-removal-in-3.14.po index a78f57de03..8db17c276c 100644 --- a/deprecations/c-api-pending-removal-in-3.14.po +++ b/deprecations/c-api-pending-removal-in-3.14.po @@ -10,54 +10,68 @@ msgstr "" "Project-Id-Version: Python en Español 3.13\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language: es\n" +"PO-Revision-Date: 2025-06-01 20:43+0200\n" +"Last-Translator: Carlos Mena Pérez <@carlosm00>\n" "Language-Team: es \n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\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.16.0\n" +"X-Generator: Poedit 3.5\n" #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:2 msgid "Pending Removal in Python 3.14" -msgstr "" +msgstr "Pendiente de eliminación en Python 3.14" #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:4 msgid "" "The ``ma_version_tag`` field in :c:type:`PyDictObject` for extension modules " "(:pep:`699`; :gh:`101193`)." msgstr "" +"El campo ``ma_version_tag`` en :c:type:`PyDictObject` para módulos de " +"extensión (:pep:`699`; :gh:`101193`)." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:7 msgid "" "Creating :c:data:`immutable types ` with mutable " "bases (:gh:`95388`)." msgstr "" +"Crear :c:data:`tipos inmutables ` con bases " +"mutables (:gh:`95388`)." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:10 msgid "" "Functions to configure Python's initialization, deprecated in Python 3.11:" msgstr "" +"Funciones para configurar la inicialización de Python, obsoletas en Python " +"3.11:" #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:12 msgid ":c:func:`!PySys_SetArgvEx()`: Set :c:member:`PyConfig.argv` instead." msgstr "" +":c:func:`!PySys_SetArgvEx()`: Establezca :c:member:`PyConfig.argv` en su " +"lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:14 msgid ":c:func:`!PySys_SetArgv()`: Set :c:member:`PyConfig.argv` instead." msgstr "" +":c:func:`!PySys_SetArgv()`: Establezca :c:member:`PyConfig.argv` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:16 msgid "" ":c:func:`!Py_SetProgramName()`: Set :c:member:`PyConfig.program_name` " "instead." msgstr "" +":c:func:`!Py_SetProgramName()`: Establezca :c:member:`PyConfig.program_name` " +"en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:18 msgid ":c:func:`!Py_SetPythonHome()`: Set :c:member:`PyConfig.home` instead." msgstr "" +":c:func:`!Py_SetPythonHome()`: Establezca :c:member:`PyConfig.home` en su " +"lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:21 #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:71 @@ -65,118 +79,155 @@ msgid "" "The :c:func:`Py_InitializeFromConfig` API should be used with :c:type:" "`PyConfig` instead." msgstr "" +"La API :c:func:`Py_InitializeFromConfig` debería utilizarse con :c:type:" +"`PyConfig` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:24 msgid "Global configuration variables:" -msgstr "" +msgstr "Variables de configuración global:" #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:26 msgid ":c:var:`Py_DebugFlag`: Use :c:member:`PyConfig.parser_debug` instead." msgstr "" +":c:var:`Py_DebugFlag`: Utilice :c:member:`PyConfig.parser_debug` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:28 msgid ":c:var:`Py_VerboseFlag`: Use :c:member:`PyConfig.verbose` instead." msgstr "" +":c:var:`Py_VerboseFlag`: Utilice :c:member:`PyConfig.verbose` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:30 msgid ":c:var:`Py_QuietFlag`: Use :c:member:`PyConfig.quiet` instead." -msgstr "" +msgstr ":c:var:`Py_QuietFlag`: Utilice :c:member:`PyConfig.quiet` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:32 msgid "" ":c:var:`Py_InteractiveFlag`: Use :c:member:`PyConfig.interactive` instead." msgstr "" +":c:var:`Py_InteractiveFlag`: Utilice :c:member:`PyConfig.interactive` en su " +"lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:34 msgid ":c:var:`Py_InspectFlag`: Use :c:member:`PyConfig.inspect` instead." msgstr "" +":c:var:`Py_InspectFlag`: Utilice :c:member:`PyConfig.inspect` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:36 msgid "" ":c:var:`Py_OptimizeFlag`: Use :c:member:`PyConfig.optimization_level` " "instead." msgstr "" +":c:var:`Py_OptimizeFlag`: Utilice :c:member:`PyConfig.optimization_level` en " +"su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:38 msgid ":c:var:`Py_NoSiteFlag`: Use :c:member:`PyConfig.site_import` instead." msgstr "" +":c:var:`Py_NoSiteFlag`: Utilice :c:member:`PyConfig.site_import` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:40 msgid "" ":c:var:`Py_BytesWarningFlag`: Use :c:member:`PyConfig.bytes_warning` instead." msgstr "" +":c:var:`Py_BytesWarningFlag`: Utilice :c:member:`PyConfig.bytes_warning` en " +"su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:42 msgid "" ":c:var:`Py_FrozenFlag`: Use :c:member:`PyConfig.pathconfig_warnings` instead." msgstr "" +":c:var:`Py_FrozenFlag`: Utilice :c:member:`PyConfig.pathconfig_warnings` en " +"su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:44 msgid "" ":c:var:`Py_IgnoreEnvironmentFlag`: Use :c:member:`PyConfig.use_environment` " "instead." msgstr "" +":c:var:`Py_IgnoreEnvironmentFlag`: Utilice :c:member:`PyConfig." +"use_environment` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:46 msgid "" ":c:var:`Py_DontWriteBytecodeFlag`: Use :c:member:`PyConfig.write_bytecode` " "instead." msgstr "" +":c:var:`Py_DontWriteBytecodeFlag`: Utilice :c:member:`PyConfig." +"write_bytecode` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:48 msgid "" ":c:var:`Py_NoUserSiteDirectory`: Use :c:member:`PyConfig." "user_site_directory` instead." msgstr "" +":c:var:`Py_NoUserSiteDirectory`: Utilice :c:member:`PyConfig." +"user_site_directory` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:50 msgid "" ":c:var:`Py_UnbufferedStdioFlag`: Use :c:member:`PyConfig.buffered_stdio` " "instead." msgstr "" +":c:var:`Py_UnbufferedStdioFlag`: Utilice :c:member:`PyConfig.buffered_stdio` " +"en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:52 msgid "" ":c:var:`Py_HashRandomizationFlag`: Use :c:member:`PyConfig.use_hash_seed` " "and :c:member:`PyConfig.hash_seed` instead." msgstr "" +":c:var:`Py_HashRandomizationFlag`: Utilice :c:member:`PyConfig." +"use_hash_seed` y :c:member:`PyConfig.hash_seed` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:55 msgid ":c:var:`Py_IsolatedFlag`: Use :c:member:`PyConfig.isolated` instead." msgstr "" +":c:var:`Py_IsolatedFlag`: Utilice :c:member:`PyConfig.isolated` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:57 msgid "" ":c:var:`Py_LegacyWindowsFSEncodingFlag`: Use :c:member:`PyPreConfig." "legacy_windows_fs_encoding` instead." msgstr "" +":c:var:`Py_LegacyWindowsFSEncodingFlag`: Utilice :c:member:`PyPreConfig." +"legacy_windows_fs_encoding` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:59 msgid "" ":c:var:`Py_LegacyWindowsStdioFlag`: Use :c:member:`PyConfig." "legacy_windows_stdio` instead." msgstr "" +":c:var:`Py_LegacyWindowsStdioFlag`: Utilice :c:member:`PyConfig." +"legacy_windows_stdio` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:61 msgid "" ":c:var:`!Py_FileSystemDefaultEncoding`: Use :c:member:`PyConfig." "filesystem_encoding` instead." msgstr "" +":c:var:`!Py_FileSystemDefaultEncoding`: Utilice :c:member:`PyConfig." +"filesystem_encoding` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:63 msgid "" ":c:var:`!Py_HasFileSystemDefaultEncoding`: Use :c:member:`PyConfig." "filesystem_encoding` instead." msgstr "" +":c:var:`!Py_HasFileSystemDefaultEncoding`: Utilice :c:member:`PyConfig." +"filesystem_encoding` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:65 msgid "" ":c:var:`!Py_FileSystemDefaultEncodeErrors`: Use :c:member:`PyConfig." "filesystem_errors` instead." msgstr "" +":c:var:`!Py_FileSystemDefaultEncodeErrors`: Utilice :c:member:`PyConfig." +"filesystem_errors` en su lugar." #: ../Doc/deprecations/c-api-pending-removal-in-3.14.rst:67 msgid "" ":c:var:`!Py_UTF8Mode`: Use :c:member:`PyPreConfig.utf8_mode` instead. (see :" "c:func:`Py_PreInitialize`)" msgstr "" +":c:var:`!Py_UTF8Mode`: Utilice :c:member:`PyPreConfig.utf8_mode` en su " +"lugar. (Consulte :c:func:`Py_PreInitialize`)" From 0a5cf8f2e720a38301f2ce41e22e0ee7f3ae85e2 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Thu, 17 Jul 2025 11:29:09 -0500 Subject: [PATCH 42/78] primera de slice (#3401) closes #3262 --------- Co-authored-by: rtobar --- c-api/slice.po | 210 +++++++++++++++++------------------ dictionaries/c-api_slice.txt | 1 + 2 files changed, 102 insertions(+), 109 deletions(-) create mode 100644 dictionaries/c-api_slice.txt diff --git a/c-api/slice.po b/c-api/slice.po index 5c2f6fb8da..ce1caa9568 100644 --- a/c-api/slice.po +++ b/c-api/slice.po @@ -11,15 +11,16 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: 2021-08-16 13:05+0200\n" +"PO-Revision-Date: 2025-07-16 18:09-0500\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" +"Language: es\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.16.0\n" +"X-Generator: Poedit 3.6\n" #: ../Doc/c-api/slice.rst:6 msgid "Slice Objects" @@ -27,109 +28,103 @@ msgstr "Objetos rebanada (*slice*)" #: ../Doc/c-api/slice.rst:11 msgid "" -"The type object for slice objects. This is the same as :class:`slice` in " -"the Python layer." +"The type object for slice objects. This is the same as :class:`slice` in the Python " +"layer." msgstr "" -"El objeto tipo para objetos rebanadas. Esto es lo mismo que :class:`slice` " -"en la capa de Python." +"El objeto tipo para objetos rebanadas. Esto es lo mismo que :class:`slice` en la capa " +"de Python." #: ../Doc/c-api/slice.rst:17 msgid "" -"Return true if *ob* is a slice object; *ob* must not be ``NULL``. This " -"function always succeeds." +"Return true if *ob* is a slice object; *ob* must not be ``NULL``. This function " +"always succeeds." msgstr "" -"Retorna verdadero si *ob* es un objeto rebanada; *ob* no debe ser ``NULL``. " -"Esta función siempre finaliza con éxito." +"Retorna verdadero si *ob* es un objeto rebanada; *ob* no debe ser ``NULL``. Esta " +"función siempre funciona correctamente." #: ../Doc/c-api/slice.rst:23 -#, fuzzy msgid "" -"Return a new slice object with the given values. The *start*, *stop*, and " -"*step* parameters are used as the values of the slice object attributes of " -"the same names. Any of the values may be ``NULL``, in which case the " -"``None`` will be used for the corresponding attribute." +"Return a new slice object with the given values. The *start*, *stop*, and *step* " +"parameters are used as the values of the slice object attributes of the same names. " +"Any of the values may be ``NULL``, in which case the ``None`` will be used for the " +"corresponding attribute." msgstr "" -"Retorna un nuevo objeto rebanada con los valores dados. Los parámetros " -"*start*, *stop* y *step* se utilizan como los valores de los atributos del " -"objeto rebanada de los mismos nombres. Cualquiera de los valores puede ser " -"``NULL``, en cuyo caso se usará ``None`` para el atributo correspondiente. " -"Retorna ``NULL`` si no se puedo asignar el nuevo objeto." +"Retorna un nuevo objeto rebanada con los valores dados. Los parámetros *start*, " +"*stop* y *step* se utilizan como los valores de los atributos del objeto rebanada de " +"los mismos nombres. Cualquiera de los valores puede ser ``NULL``, en cuyo caso se " +"usará ``None`` para el atributo correspondiente." #: ../Doc/c-api/slice.rst:28 -msgid "" -"Return ``NULL`` with an exception set if the new object could not be " -"allocated." +msgid "Return ``NULL`` with an exception set if the new object could not be allocated." msgstr "" +"Retorna ``NULL`` con una excepción establecida si no se ha podido asignar el nuevo " +"objeto." #: ../Doc/c-api/slice.rst:34 msgid "" -"Retrieve the start, stop and step indices from the slice object *slice*, " -"assuming a sequence of length *length*. Treats indices greater than *length* " -"as errors." +"Retrieve the start, stop and step indices from the slice object *slice*, assuming a " +"sequence of length *length*. Treats indices greater than *length* as errors." msgstr "" -"Recupera los índices *start*, *stop* y *step* del objeto rebanada *slice*, " -"suponiendo una secuencia de longitud *length*. Trata los índices mayores que " -"*length* como errores." +"Recupera los índices *start*, *stop* y *step* del objeto rebanada *slice*, suponiendo " +"una secuencia de longitud *length*. Trata los índices mayores que *length* como " +"errores." #: ../Doc/c-api/slice.rst:38 msgid "" -"Returns ``0`` on success and ``-1`` on error with no exception set (unless " -"one of the indices was not ``None`` and failed to be converted to an " -"integer, in which case ``-1`` is returned with an exception set)." +"Returns ``0`` on success and ``-1`` on error with no exception set (unless one of the " +"indices was not ``None`` and failed to be converted to an integer, in which case " +"``-1`` is returned with an exception set)." msgstr "" -"Retorna ``0`` en caso de éxito y ``-1`` en caso de error sin excepción " -"establecida (a menos que uno de los índices no sea ``None`` y no se haya " -"convertido a un entero, en cuyo caso ``- 1`` se retorna con una excepción " -"establecida)." +"Retorna ``0`` en caso de éxito y ``-1`` en caso de error sin una excepción " +"establecida (a menos que uno de los índices no sea ``None`` y no se haya convertido a " +"un entero, en cuyo caso ``- 1`` se retorna con una excepción establecida)." #: ../Doc/c-api/slice.rst:42 msgid "You probably do not want to use this function." msgstr "Probablemente no quiera usar esta función." #: ../Doc/c-api/slice.rst:44 ../Doc/c-api/slice.rst:75 -msgid "" -"The parameter type for the *slice* parameter was ``PySliceObject*`` before." -msgstr "" -"El tipo de parámetro para el parámetro *slice* era ``PySliceObject*`` antes." +msgid "The parameter type for the *slice* parameter was ``PySliceObject*`` before." +msgstr "El tipo de parámetro para el parámetro *slice* era ``PySliceObject*`` antes." #: ../Doc/c-api/slice.rst:51 msgid "" -"Usable replacement for :c:func:`PySlice_GetIndices`. Retrieve the start, " -"stop, and step indices from the slice object *slice* assuming a sequence of " -"length *length*, and store the length of the slice in *slicelength*. Out of " -"bounds indices are clipped in a manner consistent with the handling of " -"normal slices." -msgstr "" -"Reemplazo utilizable para :c:func:`PySlice_GetIndices`. Recupera los índices " -"de *start*, *stop*, y *step* del objeto rebanada *slice* asumiendo una " -"secuencia de longitud *length*, y almacena la longitud de la rebanada en " -"*slicelength*. Los índices fuera de los límites se recortan de manera " -"coherente con el manejo de sectores normales." +"Usable replacement for :c:func:`PySlice_GetIndices`. Retrieve the start, stop, and " +"step indices from the slice object *slice* assuming a sequence of length *length*, " +"and store the length of the slice in *slicelength*. Out of bounds indices are " +"clipped in a manner consistent with the handling of normal slices." +msgstr "" +"Reemplazo utilizable para :c:func:`PySlice_GetIndices`. Recupera los índices de " +"*start*, *stop*, y *step* del objeto rebanada *slice* asumiendo una secuencia de " +"longitud *length*, y almacena la longitud de la rebanada en *slicelength*. Los " +"índices fuera de los límites se recortan de manera coherente con el manejo de " +"sectores normales." #: ../Doc/c-api/slice.rst:57 -#, fuzzy msgid "Return ``0`` on success and ``-1`` on error with an exception set." msgstr "" -"Retorna ``0`` en caso de éxito y ``-1`` en caso de error con excepción " +"Retorna ``0`` en caso de éxito y ``-1`` en caso de error con una excepción " "establecida." #: ../Doc/c-api/slice.rst:60 msgid "" -"This function is considered not safe for resizable sequences. Its invocation " -"should be replaced by a combination of :c:func:`PySlice_Unpack` and :c:func:" -"`PySlice_AdjustIndices` where ::" +"This function is considered not safe for resizable sequences. Its invocation should " +"be replaced by a combination of :c:func:`PySlice_Unpack` " +"and :c:func:`PySlice_AdjustIndices` where ::" msgstr "" -"Esta función se considera no segura para secuencias redimensionables. Su " -"invocación debe ser reemplazada por una combinación de :c:func:" -"`PySlice_Unpack` y :c:func:`PySlice_AdjustIndices` donde::" +"Esta función se considera no segura para secuencias redimensionables. Su invocación " +"debe ser reemplazada por una combinación de :c:func:`PySlice_Unpack` " +"y :c:func:`PySlice_AdjustIndices` donde::" #: ../Doc/c-api/slice.rst:64 msgid "" -"if (PySlice_GetIndicesEx(slice, length, &start, &stop, &step, &slicelength) " -"< 0) {\n" +"if (PySlice_GetIndicesEx(slice, length, &start, &stop, &step, &slicelength) < 0) {\n" " // return error\n" "}" msgstr "" +"if (PySlice_GetIndicesEx(slice, length, &start, &stop, &step, &slicelength) < 0) {\n" +" // retorna un error\n" +"}" #: ../Doc/c-api/slice.rst:68 msgid "is replaced by ::" @@ -142,82 +137,79 @@ msgid "" "}\n" "slicelength = PySlice_AdjustIndices(length, &start, &stop, step);" msgstr "" +"if (PySlice_Unpack(slice, &start, &stop, &step) < 0) {\n" +" // retorna un error\n" +"}\n" +"slicelength = PySlice_AdjustIndices(length, &start, &stop, step);" #: ../Doc/c-api/slice.rst:79 msgid "" -"If ``Py_LIMITED_API`` is not set or set to the value between ``0x03050400`` " -"and ``0x03060000`` (not including) or ``0x03060100`` or higher :c:func:`!" -"PySlice_GetIndicesEx` is implemented as a macro using :c:func:`!" -"PySlice_Unpack` and :c:func:`!PySlice_AdjustIndices`. Arguments *start*, " -"*stop* and *step* are evaluated more than once." -msgstr "" -"Si ``Py_LIMITED_API`` no se establece o establece el valor entre " -"``0x03050400`` y ``0x03060000`` (sin incluir) o ``0x03060100`` o un " -"superior :c:func:`!PySlice_GetIndicesEx` se implementa como un macro usando :" -"c:func:`! PySlice_Unpack` y :c:func:`!PySlice_AdjustIndices`. Los argumentos " -"*start*, *stop* y *step* se evalúan más de una vez." +"If ``Py_LIMITED_API`` is not set or set to the value between ``0x03050400`` and " +"``0x03060000`` (not including) or ``0x03060100`` or higher :c:func:`!" +"PySlice_GetIndicesEx` is implemented as a macro using :c:func:`!PySlice_Unpack` " +"and :c:func:`!PySlice_AdjustIndices`. Arguments *start*, *stop* and *step* are " +"evaluated more than once." +msgstr "" +"Si ``Py_LIMITED_API`` no se establece o se establece el valor entre ``0x03050400`` y " +"``0x03060000`` (sin incluir) o ``0x03060100`` o un superior :c:func:`!" +"PySlice_GetIndicesEx` se implementa como un macro usando :c:func:`! PySlice_Unpack` " +"y :c:func:`!PySlice_AdjustIndices`. Los argumentos *start*, *stop* y *step* se " +"evalúan más de una vez." #: ../Doc/c-api/slice.rst:86 msgid "" -"If ``Py_LIMITED_API`` is set to the value less than ``0x03050400`` or " -"between ``0x03060000`` and ``0x03060100`` (not including) :c:func:`!" -"PySlice_GetIndicesEx` is a deprecated function." +"If ``Py_LIMITED_API`` is set to the value less than ``0x03050400`` or between " +"``0x03060000`` and ``0x03060100`` (not including) :c:func:`!PySlice_GetIndicesEx` is " +"a deprecated function." msgstr "" -"Si ``Py_LIMITED_API`` se establece en un valor menor que ``0x03050400`` o " -"entre ``0x03060000`` y ``0x03060100`` (sin incluir) :c:func:`!" -"PySlice_GetIndicesEx` es una función obsoleta." +"Si ``Py_LIMITED_API`` se establece en un valor menor que ``0x03050400`` o entre " +"``0x03060000`` y ``0x03060100`` (sin incluir) :c:func:`!PySlice_GetIndicesEx` es una " +"función obsoleta." #: ../Doc/c-api/slice.rst:94 msgid "" -"Extract the start, stop and step data members from a slice object as C " -"integers. Silently reduce values larger than ``PY_SSIZE_T_MAX`` to " -"``PY_SSIZE_T_MAX``, silently boost the start and stop values less than " -"``PY_SSIZE_T_MIN`` to ``PY_SSIZE_T_MIN``, and silently boost the step values " -"less than ``-PY_SSIZE_T_MAX`` to ``-PY_SSIZE_T_MAX``." -msgstr "" -"Extrae los miembros de datos *start*, *stop*, y *step* de un objeto rebanada " -"como enteros en C. Reduce silenciosamente los valores mayores que " -"``PY_SSIZE_T_MAX`` a ``PY_SSIZE_T_MAX``, aumenta silenciosamente los valores " -"*start* y *stop* inferiores a ``PY_SSIZE_T_MIN`` a ``PY_SSIZE_T_MIN``, y " -"silenciosamente aumenta los valores de *step* a menos de ``-PY_SSE`` a ``-" +"Extract the start, stop and step data members from a slice object as C integers. " +"Silently reduce values larger than ``PY_SSIZE_T_MAX`` to ``PY_SSIZE_T_MAX``, silently " +"boost the start and stop values less than ``PY_SSIZE_T_MIN`` to ``PY_SSIZE_T_MIN``, " +"and silently boost the step values less than ``-PY_SSIZE_T_MAX`` to ``-" "PY_SSIZE_T_MAX``." +msgstr "" +"Extrae los miembros de datos *start*, *stop*, y *step* de un objeto rebanada como " +"enteros en C. Reduce silenciosamente los valores mayores que ``PY_SSIZE_T_MAX`` a " +"``PY_SSIZE_T_MAX``, aumenta silenciosamente los valores *start* y *stop* inferiores a " +"``PY_SSIZE_T_MIN`` a ``PY_SSIZE_T_MIN``, y silenciosamente aumenta los valores de " +"*step* a menos de ``-PY_SSE`` a ``-PY_SSIZE_T_MAX``." #: ../Doc/c-api/slice.rst:100 -#, fuzzy msgid "Return ``-1`` with an exception set on error, ``0`` on success." -msgstr "Retorna ``-1`` en caso de error, ``0`` en caso de éxito." +msgstr "" +"Retorna ``-1`` con una excepción establecida en caso de error, ``0`` en caso de éxito." #: ../Doc/c-api/slice.rst:107 msgid "" -"Adjust start/end slice indices assuming a sequence of the specified length. " -"Out of bounds indices are clipped in a manner consistent with the handling " -"of normal slices." +"Adjust start/end slice indices assuming a sequence of the specified length. Out of " +"bounds indices are clipped in a manner consistent with the handling of normal slices." msgstr "" -"Ajusta los índices de corte de inicio/fin asumiendo una secuencia de la " -"longitud especificada. Los índices fuera de los límites se recortan de " -"manera coherente con el manejo de sectores normales." +"Ajusta los índices de corte de inicio/fin asumiendo una secuencia de la longitud " +"especificada. Los índices fuera de los límites se recortan de manera coherente con el " +"manejo de sectores normales." #: ../Doc/c-api/slice.rst:111 -msgid "" -"Return the length of the slice. Always successful. Doesn't call Python " -"code." +msgid "Return the length of the slice. Always successful. Doesn't call Python code." msgstr "" -"Retorna la longitud de la rebanada. Siempre exitoso. No llama al código de " -"Python." +"Retorna la longitud de la rebanada. Siempre exitoso. No llama al código de Python." #: ../Doc/c-api/slice.rst:118 msgid "Ellipsis Object" msgstr "Objeto elipsis" #: ../Doc/c-api/slice.rst:123 -#, fuzzy msgid "" -"The Python ``Ellipsis`` object. This object has no methods. Like :c:data:" -"`Py_None`, it is an :term:`immortal` singleton object." +"The Python ``Ellipsis`` object. This object has no methods. Like :c:data:`Py_None`, " +"it is an :term:`immortal` singleton object." msgstr "" -"El objeto ``Elipsis`` de Python. Este objeto no tiene métodos. Al igual que :" -"c:data:`Py_None`, es un objeto singleton `inmortal `_." +"El objeto ``Ellipsis`` de Python. Este objeto no tiene métodos. Al igual " +"que :c:data:`Py_None`, es un objeto singleton :term:`immortal`." #: ../Doc/c-api/slice.rst:126 msgid ":c:data:`Py_Ellipsis` is immortal." diff --git a/dictionaries/c-api_slice.txt b/dictionaries/c-api_slice.txt new file mode 100644 index 0000000000..53bf17f379 --- /dev/null +++ b/dictionaries/c-api_slice.txt @@ -0,0 +1 @@ +slicelength \ No newline at end of file From 09a727236a5b79ce0765b7bb918c8bce280e939e Mon Sep 17 00:00:00 2001 From: Carlos Mena <50986837+carlosm00@users.noreply.github.com> Date: Sun, 20 Jul 2025 16:58:45 +0200 Subject: [PATCH 43/78] =?UTF-8?q?Traducci=C3=B3n=20reference/toplevel=5Fco?= =?UTF-8?q?mponents.po=20(#3402)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #3285 --- reference/toplevel_components.po | 39 ++++++++++++++++---------------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/reference/toplevel_components.po b/reference/toplevel_components.po index 22f043bbf6..5822f5d639 100644 --- a/reference/toplevel_components.po +++ b/reference/toplevel_components.po @@ -11,15 +11,16 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-10-12 19:43+0200\n" -"PO-Revision-Date: 2020-10-18 16:24-0500\n" -"Last-Translator: \n" -"Language: es\n" +"PO-Revision-Date: 2025-07-20 16:40+0200\n" +"Last-Translator: Carlos Mena Pérez <@carlosm00>\n" "Language-Team: python-doc-es\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\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.13.0\n" +"X-Generator: Poedit 3.5\n" #: ../Doc/reference/toplevel_components.rst:6 msgid "Top-level components" @@ -159,60 +160,58 @@ msgstr "" #: ../Doc/reference/toplevel_components.rst:8 msgid "interpreter" -msgstr "" +msgstr "interpreter" #: ../Doc/reference/toplevel_components.rst:21 msgid "program" -msgstr "" +msgstr "program" #: ../Doc/reference/toplevel_components.rst:23 #: ../Doc/reference/toplevel_components.rst:39 msgid "module" -msgstr "" +msgstr "module" #: ../Doc/reference/toplevel_components.rst:23 msgid "sys" -msgstr "" +msgstr "sys" #: ../Doc/reference/toplevel_components.rst:23 #: ../Doc/reference/toplevel_components.rst:39 msgid "__main__" -msgstr "" +msgstr "__main__" #: ../Doc/reference/toplevel_components.rst:23 msgid "builtins" -msgstr "" +msgstr "builtins" #: ../Doc/reference/toplevel_components.rst:39 -#, fuzzy msgid "interactive mode" -msgstr "Entrada interactiva" +msgstr "interactive mode" #: ../Doc/reference/toplevel_components.rst:49 msgid "UNIX" -msgstr "" +msgstr "UNIX" #: ../Doc/reference/toplevel_components.rst:49 msgid "Windows" -msgstr "" +msgstr "Windows" #: ../Doc/reference/toplevel_components.rst:49 msgid "command line" -msgstr "" +msgstr "command line" #: ../Doc/reference/toplevel_components.rst:49 msgid "standard input" -msgstr "" +msgstr "standard input" #: ../Doc/reference/toplevel_components.rst:100 -#, fuzzy msgid "input" -msgstr "Entrada de archivo" +msgstr "input" #: ../Doc/reference/toplevel_components.rst:101 msgid "built-in function" -msgstr "" +msgstr "built-in function" #: ../Doc/reference/toplevel_components.rst:101 msgid "eval" -msgstr "" +msgstr "eval" From 34190d973d2eeb679f0571378c8fcf361a9c3c31 Mon Sep 17 00:00:00 2001 From: v1ckxy Date: Mon, 11 Aug 2025 11:11:36 +0200 Subject: [PATCH 44/78] =?UTF-8?q?Fixed=20misstranslated=20word=20(removal?= =?UTF-8?q?=20=3D=3D=20eliminaci=C3=B3n=20for=20ES-ES)=20(#3403)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit "remoción" no se usa en Español. Eliminar sí. 🙃 --- library/2to3.po | 2 +- library/shutil.po | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/library/2to3.po b/library/2to3.po index 805d60e109..0d6d4e6542 100644 --- a/library/2to3.po +++ b/library/2to3.po @@ -741,7 +741,7 @@ msgid "" "Fixes code broken from the removal of some members in the :mod:`types` " "module." msgstr "" -"Corrige el código roto por la remoción de algunos miembros en el módulo :mod:" +"Corrige el código roto por la eliminación de algunos miembros en el módulo :mod:" "`types`." #: ../Doc/library/2to3.rst:432 diff --git a/library/shutil.po b/library/shutil.po index b37298b48e..5ae029f014 100644 --- a/library/shutil.po +++ b/library/shutil.po @@ -39,7 +39,7 @@ msgid "" msgstr "" "El módulo :mod:`shutil` ofrece varias operaciones de alto nivel en archivos " "y colecciones de archivos. En particular, provee funciones que dan soporte a " -"la copia y remoción de archivos. Para operaciones en archivos individuales, " +"la copia y eliminación de archivos. Para operaciones en archivos individuales, " "véase también el módulo :mod:`os`." #: ../Doc/library/shutil.rst:25 From fb4ae4e75ac573369f2c11aa8d9ed4dcd1f429b5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Aug 2025 14:11:44 +0800 Subject: [PATCH 45/78] Bump actions/checkout from 4 to 5 (#3404) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5.
Release notes

Sourced from actions/checkout's releases.

v5.0.0

What's Changed

⚠️ Minimum Compatible Runner Version

v2.327.1
Release Notes

Make sure your runner is updated to this version or newer to use this release.

Full Changelog: https://github.com/actions/checkout/compare/v4...v5.0.0

v4.3.0

What's Changed

New Contributors

Full Changelog: https://github.com/actions/checkout/compare/v4...v4.3.0

v4.2.2

What's Changed

Full Changelog: https://github.com/actions/checkout/compare/v4.2.1...v4.2.2

v4.2.1

What's Changed

New Contributors

Full Changelog: https://github.com/actions/checkout/compare/v4.2.0...v4.2.1

... (truncated)

Changelog

Sourced from actions/checkout's changelog.

Changelog

V5.0.0

V4.3.0

v4.2.2

v4.2.1

v4.2.0

v4.1.7

v4.1.6

v4.1.5

v4.1.4

v4.1.3

... (truncated)

Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/checkout&package-manager=github_actions&previous-version=4&new-version=5)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/main.yml | 2 +- .github/workflows/pr-comment.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 7f375d29ff..2d328968dc 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-22.04 steps: # Obtención del código - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: submodules: 'true' # Necesario para que tj-actions/changed-files se ejecute diff --git a/.github/workflows/pr-comment.yml b/.github/workflows/pr-comment.yml index 41165bef7e..d394bc810d 100644 --- a/.github/workflows/pr-comment.yml +++ b/.github/workflows/pr-comment.yml @@ -14,7 +14,7 @@ jobs: any_changed: ${{ steps.changed-files.outputs.any_changed }} comment: ${{ steps.create-pr-comment.outputs.comment }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: ref: ${{ github.event.pull_request.head.sha }} persist-credentials: false @@ -25,7 +25,7 @@ jobs: cache: "pip" # checkout these files from the base branch to guarantee they haven't been # modified by the PR - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: path: base-branch sparse-checkout-cone-mode: false From 7615055e7b07afd5ab2852d72c560a696ba475d7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 10 Sep 2025 20:29:50 -0300 Subject: [PATCH 46/78] Bump actions/setup-python from 5 to 6 (#3406) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [actions/setup-python](https://github.com/actions/setup-python) from 5 to 6.
Release notes

Sourced from actions/setup-python's releases.

v6.0.0

What's Changed

Breaking Changes

Make sure your runner is on version v2.327.1 or later to ensure compatibility with this release. See Release Notes

Enhancements:

Bug fixes:

Dependency updates:

New Contributors

Full Changelog: https://github.com/actions/setup-python/compare/v5...v6.0.0

v5.6.0

What's Changed

Full Changelog: https://github.com/actions/setup-python/compare/v5...v5.6.0

v5.5.0

What's Changed

Enhancements:

Bug fixes:

... (truncated)

Commits
  • e797f83 Upgrade to node 24 (#1164)
  • 3d1e2d2 Revert "Enhance cache-dependency-path handling to support files outside the w...
  • 65b0712 Clarify pythonLocation behavior for PyPy and GraalPy in environment variables...
  • 5b668cf Bump actions/checkout from 4 to 5 (#1181)
  • f62a0e2 Change missing cache directory error to warning (#1182)
  • 9322b3c Upgrade setuptools to 78.1.1 to fix path traversal vulnerability in PackageIn...
  • fbeb884 Bump form-data to fix critical vulnerabilities #182 & #183 (#1163)
  • 03bb615 Bump idna from 2.9 to 3.7 in /tests/data (#843)
  • 36da51d Add version parsing from Pipfile (#1067)
  • 3c6f142 update documentation (#1156)
  • Additional commits viewable in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/setup-python&package-manager=github_actions&previous-version=5&new-version=6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/main.yml | 2 +- .github/workflows/pr-comment.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 2d328968dc..346b0014d0 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -24,7 +24,7 @@ jobs: # Instalación de dependencias - name: Preparar Python v3.13 - uses: actions/setup-python@v5 + uses: actions/setup-python@v6 with: python-version: "3.13" cache: "pip" diff --git a/.github/workflows/pr-comment.yml b/.github/workflows/pr-comment.yml index d394bc810d..3491b1e972 100644 --- a/.github/workflows/pr-comment.yml +++ b/.github/workflows/pr-comment.yml @@ -19,7 +19,7 @@ jobs: ref: ${{ github.event.pull_request.head.sha }} persist-credentials: false - name: Preparar Python v3.13 - uses: actions/setup-python@v5 + uses: actions/setup-python@v6 with: python-version: "3.13" cache: "pip" From 28ade9d3c3365b5d840b9d895f15b09a6accabe6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 10 Sep 2025 20:32:27 -0300 Subject: [PATCH 47/78] Bump actions/stale from 9 to 10 (#3405) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [actions/stale](https://github.com/actions/stale) from 9 to 10.
Release notes

Sourced from actions/stale's releases.

v10.0.0

What's Changed

Breaking Changes

Enhancement

Dependency Upgrades

Documentation changes

New Contributors

Full Changelog: https://github.com/actions/stale/compare/v9...v10.0.0

v9.1.0

What's Changed

New Contributors

Full Changelog: https://github.com/actions/stale/compare/v9...v9.1.0

Changelog

Sourced from actions/stale's changelog.

Changelog

[9.1.0]

What's Changed

[9.0.0]

Breaking Changes

  1. Action is now stateful: If the action ends because of operations-per-run then the next run will start from the first unprocessed issue skipping the issues processed during the previous run(s). The state is reset when all the issues are processed. This should be considered for scheduling workflow runs.
  2. Version 9 of this action updated the runtime to Node.js 20. All scripts are now run with Node.js 20 instead of Node.js 16 and are affected by any breaking changes between Node.js 16 and 20.

What Else Changed

  1. Performance optimization that removes unnecessary API calls by @​dsame in #1033; fixes #792
  2. Logs displaying current GitHub API rate limit by @​dsame in #1032; addresses #1029

For more information, please read the action documentation and its section about statefulness

[4.1.1]

In scope of this release we updated actions/core to 1.10.0 for v4 and fixed issues operation count.

[8.0.0]

:warning: This version contains breaking changes :warning:

[7.0.0]

:warning: Breaking change :warning:

... (truncated)

Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/stale&package-manager=github_actions&previous-version=9&new-version=10)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/stale.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/stale.yaml b/.github/workflows/stale.yaml index 8c32a55525..546c96f445 100644 --- a/.github/workflows/stale.yaml +++ b/.github/workflows/stale.yaml @@ -13,7 +13,7 @@ jobs: issues: write pull-requests: write steps: - - uses: actions/stale@v9 + - uses: actions/stale@v10 with: stale-pr-label: 'needs decision' stale-issue-label: 'stale' From 630a61de795c81ecfab917cfc39b57793ae25975 Mon Sep 17 00:00:00 2001 From: "Erick G. Islas-Osuna" Date: Fri, 26 Sep 2025 10:48:10 -0600 Subject: [PATCH 48/78] =?UTF-8?q?Translate=20`c-api/list.po`=20?= =?UTF-8?q?=F0=9F=A4=96=20(#3414)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixed missing msgstr entries for c-api/list.po and cleaned up duplicated translations: - List object type descriptions - PyTypeObject instance descriptions - List type checking functions - Removed duplicate translation entries Updated Last-Translator field and Po-Revision-Date. Closes #3261 --------- Co-authored-by: rtobar --- c-api/list.po | 83 ++++++++++++++++++++++++++++++--------------------- 1 file changed, 49 insertions(+), 34 deletions(-) diff --git a/c-api/list.po b/c-api/list.po index f5d813fb2d..aef1ef9d76 100644 --- a/c-api/list.po +++ b/c-api/list.po @@ -12,7 +12,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" "PO-Revision-Date: 2021-08-01 20:11+0200\n" -"Last-Translator: Cristián Maureira-Fredes \n" +"Last-Translator: Erick G. Islas-Osuna \n" "Language: es\n" "Language-Team: python-doc-es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" @@ -35,15 +35,15 @@ msgid "" "This instance of :c:type:`PyTypeObject` represents the Python list type. " "This is the same object as :class:`list` in the Python layer." msgstr "" -"Esta instancia de :c:type:`PyTypeObject` representa el tipo de lista de " -"Python. Este es el mismo objeto que :class:`list` en la capa de Python." +"Esta instancia de :c:type:`PyTypeObject` representa el tipo lista de Python. " +"Este es el mismo objeto que :class:`list` en la capa de Python." #: ../Doc/c-api/list.rst:24 msgid "" "Return true if *p* is a list object or an instance of a subtype of the list " "type. This function always succeeds." msgstr "" -"Retorna verdadero si *p* es un objeto de lista o una instancia de un subtipo " +"Retorna verdadero si *p* es un objeto lista o una instancia de un subtipo " "del tipo lista. Esta función siempre finaliza con éxito." #: ../Doc/c-api/list.rst:30 @@ -61,21 +61,22 @@ msgstr "" "caso de error." #: ../Doc/c-api/list.rst:40 -#, fuzzy msgid "" "If *len* is greater than zero, the returned list object's items are set to " -"``NULL``. Thus you cannot use abstract API functions such as :c:func:" -"`PySequence_SetItem` or expose the object to Python code before setting all " -"items to a real object with :c:func:`PyList_SetItem` or :c:func:" -"`PyList_SET_ITEM()`. The following APIs are safe APIs before the list is " -"fully initialized: :c:func:`PyList_SetItem()` and :c:func:" -"`PyList_SET_ITEM()`." +"``NULL``. Thus you cannot use abstract API functions such " +"as :c:func:`PySequence_SetItem` or expose the object to Python code before " +"setting all items to a real object with :c:func:`PyList_SetItem` " +"or :c:func:`PyList_SET_ITEM()`. The following APIs are safe APIs before the " +"list is fully initialized: :c:func:`PyList_SetItem()` " +"and :c:func:`PyList_SET_ITEM()`." msgstr "" "Si *len* es mayor que cero, los elementos del objeto de la lista retornada " "se establecen en ``NULL``. Por lo tanto, no puede utilizar funciones API " "abstractas como :c:func:`PySequence_SetItem` o exponer el objeto al código " -"Python antes de configurar todos los elementos en un objeto real con :c:func:" -"`PyList_SetItem`." +"Python antes de configurar todos los elementos en un objeto real " +"con :c:func:`PyList_SetItem` o :c:func:`PyList_SET_ITEM()`. Las siguientes " +"APIs son APIs seguras antes de que la lista esté completamente " +"inicializada: :c:func:`PyList_SetItem()` y :c:func:`PyList_SET_ITEM()`." #: ../Doc/c-api/list.rst:53 msgid "" @@ -86,12 +87,10 @@ msgstr "" "``len(list)`` en un objeto lista." #: ../Doc/c-api/list.rst:59 -#, 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." +msgstr "Similar a :c:func:`PyList_Size`, pero sin comprobación de errores." #: ../Doc/c-api/list.rst:64 -#, fuzzy msgid "" "Return the object at position *index* in the list pointed to by *list*. The " "position must be non-negative; indexing from the end of the list is not " @@ -108,11 +107,12 @@ msgid "" "Like :c:func:`PyList_GetItemRef`, but returns a :term:`borrowed reference` " "instead of a :term:`strong reference`." msgstr "" +"Como :c:func:`PyList_GetItemRef`, pero retorna una :term:`referencia " +"prestada` en lugar de una :term:`referencia fuerte`." #: ../Doc/c-api/list.rst:80 -#, 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." +msgstr "Similar a :c:func:`PyList_GetItem`, pero sin comprobación de errores." #: ../Doc/c-api/list.rst:85 msgid "" @@ -143,19 +143,25 @@ msgstr "" #: ../Doc/c-api/list.rst:100 msgid "" -"Bounds checking is performed as an assertion if Python is built in :ref:" -"`debug mode ` or :option:`with assertions <--with-assertions>`." +"Bounds checking is performed as an assertion if Python is built " +"in :ref:`debug mode ` or :option:`with assertions <--with-" +"assertions>`." msgstr "" +"La verificación de límites se realiza como una aserción si Python se compila " +"en :ref:`modo de depuración ` o :option:`con aserciones <--" +"with-assertions>`." #: ../Doc/c-api/list.rst:106 msgid "" -"This macro \"steals\" a reference to *item*, and, unlike :c:func:" -"`PyList_SetItem`, does *not* discard a reference to any item that is being " -"replaced; any reference in *list* at position *i* will be leaked." +"This macro \"steals\" a reference to *item*, and, " +"unlike :c:func:`PyList_SetItem`, does *not* discard a reference to any item " +"that is being replaced; any reference in *list* at position *i* will be " +"leaked." msgstr "" -"Este macro \"roba\" una referencia a *item* y, a diferencia de :c:func:" -"`PyList_SetItem`, *no descarta* una referencia a ningún elemento que se está " -"reemplazando; cualquier referencia en *list* en la posición *i* se filtrará." +"Este macro \"roba\" una referencia a *item* y, a diferencia " +"de :c:func:`PyList_SetItem`, *no descarta* una referencia a ningún elemento " +"que se está reemplazando; cualquier referencia en *list* en la posición *i* " +"se filtrará." #: ../Doc/c-api/list.rst:114 msgid "" @@ -209,12 +215,17 @@ msgid "" "``PyList_SetSlice(list, PY_SSIZE_T_MAX, PY_SSIZE_T_MAX, iterable)`` and " "analogous to ``list.extend(iterable)`` or ``list += iterable``." msgstr "" +"Extiende *list* con los contenidos de *iterable*. Esto es lo mismo que " +"``PyList_SetSlice(list, PY_SSIZE_T_MAX, PY_SSIZE_T_MAX, iterable)`` y " +"análogo a ``list.extend(iterable)`` o ``list += iterable``." #: ../Doc/c-api/list.rst:148 msgid "" "Raise an exception and return ``-1`` if *list* is not a :class:`list` " "object. Return 0 on success." msgstr "" +"Lanza una excepción y retorna ``-1`` si *list* no es un " +"objeto :class:`list`. Retorna 0 en caso de éxito." #: ../Doc/c-api/list.rst:156 msgid "" @@ -222,12 +233,17 @@ msgid "" "0, PY_SSIZE_T_MAX, NULL)`` and analogous to ``list.clear()`` or ``del " "list[:]``." msgstr "" +"Elimina todos los elementos de *list*. Esto es lo mismo que " +"``PyList_SetSlice(list, 0, PY_SSIZE_T_MAX, NULL)`` y análogo a " +"``list.clear()`` o ``del list[:]``." #: ../Doc/c-api/list.rst:160 msgid "" "Raise an exception and return ``-1`` if *list* is not a :class:`list` " "object. Return 0 on success." msgstr "" +"Lanza una excepción y retorna ``-1`` si *list* no es un " +"objeto :class:`list`. Retorna 0 en caso de éxito." #: ../Doc/c-api/list.rst:168 msgid "" @@ -243,8 +259,8 @@ msgid "" "failure. This is the equivalent of ``list.reverse()``." msgstr "" "Invierte los elementos de la lista *list* en su lugar. Retorna ``0`` en caso " -"de éxito, ``-1`` en caso de error. Este es el equivalente de ``list." -"reverse()``." +"de éxito, ``-1`` en caso de error. Este es el equivalente de " +"``list.reverse()``." #: ../Doc/c-api/list.rst:182 msgid "" @@ -255,22 +271,21 @@ msgstr "" "equivalente a ``tuple(list)``." #: ../Doc/c-api/list.rst:8 -#, fuzzy msgid "object" -msgstr "Objetos lista" +msgstr "objeto" #: ../Doc/c-api/list.rst:8 msgid "list" -msgstr "" +msgstr "lista" #: ../Doc/c-api/list.rst:51 ../Doc/c-api/list.rst:180 msgid "built-in function" -msgstr "" +msgstr "función integrada" #: ../Doc/c-api/list.rst:51 msgid "len" -msgstr "" +msgstr "len" #: ../Doc/c-api/list.rst:180 msgid "tuple" -msgstr "" +msgstr "tupla" From 03e7b787ffee7f7d281895f22648d778ca4f5fad Mon Sep 17 00:00:00 2001 From: "Erick G. Islas-Osuna" Date: Sat, 4 Oct 2025 18:34:04 -0600 Subject: [PATCH 49/78] =?UTF-8?q?Translate=20`c-api/sys.po`=20=F0=9F=A4=96?= =?UTF-8?q?=20(#3408)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Updated header information for c-api/sys.po. File was largely translated already with only minor header updates needed. Updated Last-Translator field and Po-Revision-Date. Closes #3249 --- c-api/sys.po | 257 +++++++++++++++++++------------------ dictionaries/c-api_sys.txt | 2 + 2 files changed, 131 insertions(+), 128 deletions(-) create mode 100644 dictionaries/c-api_sys.txt diff --git a/c-api/sys.po b/c-api/sys.po index c6574e41a1..6f7d324c3c 100644 --- a/c-api/sys.po +++ b/c-api/sys.po @@ -11,8 +11,7 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: 2022-10-29 13:18-0500\n" -"Last-Translator: Rodrigo Tobar \n" +"Last-Translator: Erick G. Islas-Osuna \n" "Language: es\n" "Language-Team: python-doc-es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" @@ -26,24 +25,21 @@ msgid "Operating System Utilities" msgstr "Utilidades del sistema operativo" #: ../Doc/c-api/sys.rst:11 -#, fuzzy msgid "" -"Return the file system representation for *path*. If the object is a :class:" -"`str` or :class:`bytes` object, then a new :term:`strong reference` is " -"returned. If the object implements the :class:`os.PathLike` interface, then :" -"meth:`~os.PathLike.__fspath__` is returned as long as it is a :class:`str` " -"or :class:`bytes` object. Otherwise :exc:`TypeError` is raised and ``NULL`` " -"is returned." +"Return the file system representation for *path*. If the object is " +"a :class:`str` or :class:`bytes` object, then a new :term:`strong reference` " +"is returned. If the object implements the :class:`os.PathLike` interface, " +"then :meth:`~os.PathLike.__fspath__` is returned as long as it is " +"a :class:`str` or :class:`bytes` object. Otherwise :exc:`TypeError` is " +"raised and ``NULL`` is returned." msgstr "" "Retorna la representación del sistema de archivos para *path*. Si el objeto " -"es :class:`str` o :class:`bytes`, entonces su conteo de referencias se " -"incrementa. Si el objeto implementa la interfaz :class:`os.PathLike`, " -"entonces :meth:`~os.PathLike.__fspath__` se retorna siempre que sea un " -"objeto :class:`str` o :class:`bytes`. De lo contrario :exc:`TypeError` se " +"es :class:`str` o :class:`bytes`, entonces se retorna una nueva :term:`referencia fuerte`. " +"Si el objeto implementa la interfaz :class:`os.PathLike`, entonces :meth:`~os.PathLike.__fspath__` " +"se retorna siempre que sea un objeto :class:`str` o :class:`bytes`. De lo contrario :exc:`TypeError` se " "lanza y se retorna ``NULL``." #: ../Doc/c-api/sys.rst:24 -#, fuzzy msgid "" "Return true (nonzero) if the standard I/O file *fp* with name *filename* is " "deemed interactive. This is the case for files for which " @@ -54,14 +50,14 @@ msgid "" msgstr "" "Retorna verdadero (distinto de cero) si el archivo de E/S (*I/O*) estándar " "*fp* con nombre *filename* se considera interactivo. Este es el caso de los " -"archivos para los que ``isatty(fileno(fp))`` es verdadero. Si el indicador " -"global :c:data:`Py_InteractiveFlag` es verdadero, esta función también " -"retorna verdadero si el puntero *filename* es ``NULL`` o si el nombre es " -"igual a una de las cadenas de caracteres ``''`` o ``'???'``." +"archivos para los que ``isatty(fileno(fp))`` es verdadero. Si :c:member:`PyConfig.interactive` es " +"distinto de cero, esta función también retorna verdadero si el puntero *filename* es " +"``NULL`` o si el nombre es igual a una de las cadenas de caracteres ``''`` o " +"``'???'``." #: ../Doc/c-api/sys.rst:30 msgid "This function must not be called before Python is initialized." -msgstr "" +msgstr "Esta función no debe ser llamada antes de que Python sea inicializado." #: ../Doc/c-api/sys.rst:35 msgid "" @@ -71,9 +67,9 @@ msgid "" "defined." msgstr "" "Función para preparar algún estado interno antes de una bifurcación de " -"proceso (*process fork*). Esto debería llamarse antes de llamar a :c:func:" -"`fork` o cualquier función similar que clone el proceso actual. Solo " -"disponible en sistemas donde :c:func:`fork` está definido." +"proceso (*process fork*). Esto debería llamarse antes de llamar " +"a :c:func:`fork` o cualquier función similar que clone el proceso actual. " +"Solo disponible en sistemas donde :c:func:`fork` está definido." #: ../Doc/c-api/sys.rst:41 msgid "" @@ -94,8 +90,8 @@ msgid "" "defined." msgstr "" "Función para actualizar algún estado interno después de una bifurcación de " -"proceso. Se debe invocar desde el proceso principal después de llamar a :c:" -"func:`fork` o cualquier función similar que clone el proceso actual, " +"proceso. Se debe invocar desde el proceso principal después de llamar " +"a :c:func:`fork` o cualquier función similar que clone el proceso actual, " "independientemente de si la clonación del proceso fue exitosa. Solo " "disponible en sistemas donde :c:func:`fork` está definido." @@ -121,8 +117,8 @@ msgstr "" "bifurcación de proceso (*process fork*). Debe llamarse desde el proceso " "secundario después de llamar a :c:func:`fork`, o cualquier función similar " "que clone el proceso actual, si existe alguna posibilidad de que el proceso " -"vuelva a llamar al intérprete de Python. Solo disponible en sistemas donde :" -"c:func:`fork` está definido." +"vuelva a llamar al intérprete de Python. Solo disponible en sistemas " +"donde :c:func:`fork` está definido." #: ../Doc/c-api/sys.rst:75 msgid "" @@ -137,12 +133,13 @@ msgstr "" #: ../Doc/c-api/sys.rst:83 msgid "" ":func:`os.register_at_fork` allows registering custom Python functions to be " -"called by :c:func:`PyOS_BeforeFork()`, :c:func:`PyOS_AfterFork_Parent` and :" -"c:func:`PyOS_AfterFork_Child`." +"called by :c:func:`PyOS_BeforeFork()`, :c:func:`PyOS_AfterFork_Parent` " +"and :c:func:`PyOS_AfterFork_Child`." msgstr "" ":func:`os.register_at_fork` permite registrar funciones personalizadas de " -"Python a las que puede llamar :c:func:`PyOS_BeforeFork()`, :c:func:" -"`PyOS_AfterFork_Parent` y :c:func:`PyOS_AfterFork_Child`." +"Python a las que puede " +"llamar :c:func:`PyOS_BeforeFork()`, :c:func:`PyOS_AfterFork_Parent` " +"y :c:func:`PyOS_AfterFork_Child`." #: ../Doc/c-api/sys.rst:90 msgid "" @@ -161,7 +158,6 @@ 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:103 -#, fuzzy msgid "" "Return true when the interpreter runs out of stack space. This is a " "reliable check, but is only available when :c:macro:`!USE_STACKCHECK` is " @@ -171,51 +167,47 @@ msgid "" 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 " -"cuando :const:`USE_STACKCHECK` está definido (actualmente en algunas " -"versiones de Windows usando el compilador de *Microsoft Visual C++*). :const:" -"`USE_STACKCHECK` se definirá automáticamente; nunca debe cambiar la " -"definición en su propio código." +"cuando :c:macro:`!USE_STACKCHECK` está definido (actualmente en algunas " +"versiones de Windows usando el compilador de *Microsoft Visual C+" +"+*). :c:macro:`!USE_STACKCHECK` se definirá automáticamente; nunca debe cambiar " +"la definición en su propio código." #: ../Doc/c-api/sys.rst:115 -#, 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!" 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 " -"llame a esas funciones directamente! :c:type:`PyOS_sighandler_t` es un alias " -"*typedef* para :c:expr:`void (\\*)(int)`." +"pequeña envoltura alrededor de :c:func:`!sigaction` o :c:func:`!signal`. ¡No " +"llame a esas funciones directamente!" #: ../Doc/c-api/sys.rst:122 -#, 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!" +"handler. This is a thin wrapper around either :c:func:`!sigaction` " +"or :c:func:`!signal`. Do not call those functions directly!" msgstr "" "Configura el controlador de señal para la señal *i* como *h*; retorna el " -"antiguo controlador de señal. Esta es una pequeña envoltura alrededor de :c:" -"func:`sigaction` o :c:func:`signal`. ¡No llame a esas funciones " -"directamente! :c:type:`PyOS_sighandler_t` es un alias *typedef* para :c:expr:" -"`void (\\*)(int)`." +"antiguo controlador de señal. Esta es una pequeña envoltura alrededor " +"de :c:func:`!sigaction` o :c:func:`!signal`. ¡No llame a esas funciones " +"directamente!" #: ../Doc/c-api/sys.rst:129 msgid "" "This function should not be called directly: use the :c:type:`PyConfig` API " -"with the :c:func:`PyConfig_SetBytesString` function which ensures that :ref:" -"`Python is preinitialized `." +"with the :c:func:`PyConfig_SetBytesString` function which ensures " +"that :ref:`Python is preinitialized `." msgstr "" -"Esta función no debe llamarse directamente: utilice la API :c:type:" -"`PyConfig` con la función :c:func:`PyConfig_SetBytesString` que asegura que :" -"ref:`Python está preinicializado `." +"Esta función no debe llamarse directamente: utilice la " +"API :c:type:`PyConfig` con la función :c:func:`PyConfig_SetBytesString` que " +"asegura que :ref:`Python está preinicializado `." #: ../Doc/c-api/sys.rst:133 ../Doc/c-api/sys.rst:200 msgid "" "This function must not be called before :ref:`Python is preinitialized ` and so that the LC_CTYPE locale is properly configured: see the :c:" -"func:`Py_PreInitialize` function." +"preinit>` and so that the LC_CTYPE locale is properly configured: see " +"the :c:func:`Py_PreInitialize` function." msgstr "" "Esta función no debe llamarse antes de que :ref:`Python esté preinicializado " "` y para que la configuración local LC_CTYPE esté correctamente " @@ -240,9 +232,10 @@ msgstr "" #: ../Doc/c-api/sys.rst:144 msgid "" -"Return a pointer to a newly allocated wide character string, use :c:func:" -"`PyMem_RawFree` to free the memory. If size is not ``NULL``, write the " -"number of wide characters excluding the null character into ``*size``" +"Return a pointer to a newly allocated wide character string, " +"use :c:func:`PyMem_RawFree` to free the memory. If size is not ``NULL``, " +"write the number of wide characters excluding the null character into " +"``*size``" msgstr "" "Retorna un puntero a una cadena de caracteres anchos recientemente asignada, " "use :c:func:`PyMem_RawFree` para liberar la memoria. Si el tamaño no es " @@ -262,13 +255,14 @@ msgstr "" #: ../Doc/c-api/sys.rst:152 ../Doc/c-api/sys.rst:192 msgid "" -"The :term:`filesystem encoding and error handler` are selected by :c:func:" -"`PyConfig_Read`: see :c:member:`~PyConfig.filesystem_encoding` and :c:member:" -"`~PyConfig.filesystem_errors` members of :c:type:`PyConfig`." +"The :term:`filesystem encoding and error handler` are selected " +"by :c:func:`PyConfig_Read`: see :c:member:`~PyConfig.filesystem_encoding` " +"and :c:member:`~PyConfig.filesystem_errors` members of :c:type:`PyConfig`." msgstr "" -"El :term:`filesystem encoding and error handler` son seleccionados por :c:" -"func:`PyConfig_Read`: ver :c:member:`~PyConfig.filesystem_encoding` y :c:" -"member:`~PyConfig.filesystem_errors` que pertenecen a :c:type:`PyConfig`." +"El :term:`filesystem encoding and error handler` son seleccionados " +"por :c:func:`PyConfig_Read`: ver :c:member:`~PyConfig.filesystem_encoding` " +"y :c:member:`~PyConfig.filesystem_errors` que pertenecen " +"a :c:type:`PyConfig`." #: ../Doc/c-api/sys.rst:156 msgid "" @@ -287,11 +281,11 @@ msgstr "" #: ../Doc/c-api/sys.rst:164 msgid "" -"The :c:func:`PyUnicode_DecodeFSDefaultAndSize` and :c:func:" -"`PyUnicode_DecodeLocaleAndSize` functions." +"The :c:func:`PyUnicode_DecodeFSDefaultAndSize` " +"and :c:func:`PyUnicode_DecodeLocaleAndSize` functions." msgstr "" -"Las funciones :c:func:`PyUnicode_DecodeFSDefaultAndSize` y :c:func:" -"`PyUnicode_DecodeLocaleAndSize`." +"Las funciones :c:func:`PyUnicode_DecodeFSDefaultAndSize` " +"y :c:func:`PyUnicode_DecodeLocaleAndSize`." #: ../Doc/c-api/sys.rst:169 ../Doc/c-api/sys.rst:211 msgid "" @@ -302,13 +296,12 @@ msgstr "" "`." #: ../Doc/c-api/sys.rst:173 -#, fuzzy msgid "" -"The function now uses the UTF-8 encoding on Windows if :c:member:" -"`PyPreConfig.legacy_windows_fs_encoding` is zero;" +"The function now uses the UTF-8 encoding on Windows " +"if :c:member:`PyPreConfig.legacy_windows_fs_encoding` is zero;" msgstr "" -"La función ahora usa la codificación UTF-8 en Windows si :c:data:" -"`Py_LegacyWindowsFSEncodingFlag` es cero;" +"La función ahora usa la codificación UTF-8 en Windows " +"si :c:member:`PyPreConfig.legacy_windows_fs_encoding` es cero;" #: ../Doc/c-api/sys.rst:180 msgid "" @@ -318,8 +311,8 @@ msgid "" "converted to bytes 0x80..0xFF." msgstr "" "Codifica una cadena de caracteres amplios según el término :term:`filesystem " -"encoding and error handler`. Si el gestor de errores es :ref:" -"`surrogateescape error handler `, los caracteres " +"encoding and error handler`. Si el gestor de errores " +"es :ref:`surrogateescape error handler `, los caracteres " "sustituidos en el rango U+DC80..U+DCFF se convierten en bytes 0x80..0xFF." #: ../Doc/c-api/sys.rst:185 @@ -328,9 +321,9 @@ msgid "" "to free the memory. Return ``NULL`` on encoding error or memory allocation " "error." msgstr "" -"Retorna un puntero a una cadena de bytes recién asignada, usa :c:func:" -"`PyMem_Free` para liberar la memoria. Retorna ``NULL`` si se genera un error " -"de codificación o error de asignación de memoria." +"Retorna un puntero a una cadena de bytes recién asignada, " +"usa :c:func:`PyMem_Free` para liberar la memoria. Retorna ``NULL`` si se " +"genera un error de codificación o error de asignación de memoria." #: ../Doc/c-api/sys.rst:189 msgid "" @@ -354,17 +347,16 @@ msgid "" "The :c:func:`PyUnicode_EncodeFSDefault` and :c:func:`PyUnicode_EncodeLocale` " "functions." msgstr "" -"Las funciones :c:func:`PyUnicode_EncodeFSDefault` y :c:func:" -"`PyUnicode_EncodeLocale`." +"Las funciones :c:func:`PyUnicode_EncodeFSDefault` " +"y :c:func:`PyUnicode_EncodeLocale`." #: ../Doc/c-api/sys.rst:215 -#, fuzzy msgid "" -"The function now uses the UTF-8 encoding on Windows if :c:member:" -"`PyPreConfig.legacy_windows_fs_encoding` is zero." +"The function now uses the UTF-8 encoding on Windows " +"if :c:member:`PyPreConfig.legacy_windows_fs_encoding` is zero." msgstr "" -"La función ahora usa la codificación UTF-8 en Windows si :c:data:" -"`Py_LegacyWindowsFSEncodingFlag` es cero." +"La función ahora usa la codificación UTF-8 en Windows " +"si :c:member:`PyPreConfig.legacy_windows_fs_encoding` es cero." #: ../Doc/c-api/sys.rst:223 msgid "System Functions" @@ -377,10 +369,10 @@ msgid "" "thread's :mod:`sys` module's dict, which is contained in the internal thread " "state structure." msgstr "" -"Estas son funciones de utilidad que hacen que la funcionalidad del módulo :" -"mod:`sys` sea accesible para el código C. Todos funcionan con el diccionario " -"del módulo :mod:`sys` del subproceso actual del intérprete, que está " -"contenido en la estructura interna del estado del subproceso." +"Estas son funciones de utilidad que hacen que la funcionalidad del " +"módulo :mod:`sys` sea accesible para el código C. Todos funcionan con el " +"diccionario del módulo :mod:`sys` del subproceso actual del intérprete, que " +"está contenido en la estructura interna del estado del subproceso." #: ../Doc/c-api/sys.rst:231 msgid "" @@ -411,14 +403,15 @@ msgstr "" #: ../Doc/c-api/sys.rst:245 msgid "Clear :data:`sys.warnoptions` and :data:`!warnings.filters` instead." msgstr "" +"En su lugar, borra :data:`sys.warnoptions` y :data:`!warnings.filters`." #: ../Doc/c-api/sys.rst:250 msgid "" "Write the output string described by *format* to :data:`sys.stdout`. No " "exceptions are raised, even if truncation occurs (see below)." msgstr "" -"Escribe la cadena de caracteres de salida descrita por *format* en :data:" -"`sys.stdout`. No se lanzan excepciones, incluso si se produce el " +"Escribe la cadena de caracteres de salida descrita por *format* " +"en :data:`sys.stdout`. No se lanzan excepciones, incluso si se produce el " "truncamiento (ver más abajo)." #: ../Doc/c-api/sys.rst:253 @@ -459,12 +452,12 @@ msgstr "" #: ../Doc/c-api/sys.rst:271 msgid "" -"Function similar to PySys_WriteStdout() but format the message using :c:func:" -"`PyUnicode_FromFormatV` and don't truncate the message to an arbitrary " -"length." +"Function similar to PySys_WriteStdout() but format the message " +"using :c:func:`PyUnicode_FromFormatV` and don't truncate the message to an " +"arbitrary length." msgstr "" -"Función similar a ``PySys_WriteStdout()`` pero formatea el mensaje usando :c:" -"func:`PyUnicode_FromFormatV` y no trunca el mensaje a una longitud " +"Función similar a ``PySys_WriteStdout()`` pero formatea el mensaje " +"usando :c:func:`PyUnicode_FromFormatV` y no trunca el mensaje a una longitud " "arbitraria." #: ../Doc/c-api/sys.rst:279 @@ -477,12 +470,13 @@ msgstr "" #: ../Doc/c-api/sys.rst:286 msgid "" -"Return the current dictionary of :option:`-X` options, similarly to :data:" -"`sys._xoptions`. On error, ``NULL`` is returned and an exception is set." +"Return the current dictionary of :option:`-X` options, similarly " +"to :data:`sys._xoptions`. On error, ``NULL`` is returned and an exception " +"is set." msgstr "" -"Retorna el diccionario actual de opciones :option:`-X`, de manera similar a :" -"data:`sys._xoptions`. En caso de error, se retorna ``NULL`` y se establece " -"una excepción." +"Retorna el diccionario actual de opciones :option:`-X`, de manera similar " +"a :data:`sys._xoptions`. En caso de error, se retorna ``NULL`` y se " +"establece una excepción." #: ../Doc/c-api/sys.rst:295 msgid "" @@ -494,10 +488,9 @@ msgstr "" #: ../Doc/c-api/sys.rst:298 msgid "The *event* string argument must not be *NULL*." -msgstr "" +msgstr "El argumento de cadena *event* no debe ser *NULL*." #: ../Doc/c-api/sys.rst:300 -#, fuzzy 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 " @@ -508,9 +501,7 @@ msgstr "" "construir una tupla para pasar. Además de ``N``, están disponibles los " "mismos caracteres de formato que los utilizados en :c:func:`Py_BuildValue`. " "Si el valor generado no es una tupla, se agregará a una tupla de un solo " -"elemento. (La opción de formato ``N`` consume una referencia, pero dado que " -"no hay forma de saber si se consumirán argumentos para esta función, su uso " -"puede causar fugas de referencia)." +"elemento." #: ../Doc/c-api/sys.rst:305 msgid "" @@ -518,14 +509,19 @@ msgid "" "there is no way to know whether arguments to this function will be consumed, " "using it may cause reference leaks." msgstr "" +"La opción de formato ``N`` no debe usarse. Consume una referencia, pero dado que " +"no hay forma de saber si los argumentos de esta función serán consumidos, " +"usarla puede causar fugas de referencia." #: ../Doc/c-api/sys.rst:309 msgid "" -"Note that ``#`` format characters should always be treated as :c:type:" -"`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 ``#`` deben tratarse como :c:" -"type:`Py_ssize_t`, independientemente de si se definió ``PY_SSIZE_T_CLEAN``." +"Tenga en cuenta que los caracteres de formato ``#`` deben tratarse " +"como :c:type:`Py_ssize_t`, independientemente de si se definió " +"``PY_SSIZE_T_CLEAN``." #: ../Doc/c-api/sys.rst:312 msgid ":func:`sys.audit` performs the same function from Python code." @@ -533,7 +529,7 @@ msgstr ":func:`sys.audit` realiza la misma función del código Python." #: ../Doc/c-api/sys.rst:314 msgid "See also :c:func:`PySys_AuditTuple`." -msgstr "" +msgstr "Ver también :c:func:`PySys_AuditTuple`." #: ../Doc/c-api/sys.rst:320 msgid "" @@ -548,6 +544,8 @@ msgid "" "Similar to :c:func:`PySys_Audit`, but pass arguments as a Python object. " "*args* must be a :class:`tuple`. To pass no arguments, *args* can be *NULL*." msgstr "" +"Similar a :c:func:`PySys_Audit`, pero pasa argumentos como un objeto Python. " +"*args* debe ser una :class:`tuple`. Para no pasar argumentos, *args* puede ser *NULL*." #: ../Doc/c-api/sys.rst:334 msgid "" @@ -576,8 +574,8 @@ msgstr "" msgid "" "This function is safe to call before :c:func:`Py_Initialize`. When called " "after runtime initialization, existing audit hooks are notified and may " -"silently abort the operation by raising an error subclassed from :class:" -"`Exception` (other errors will not be silenced)." +"silently abort the operation by raising an error subclassed " +"from :class:`Exception` (other errors will not be silenced)." msgstr "" "Es seguro llamar a esta función antes de :c:func:`Py_Initialize`. Cuando se " "llama después de la inicialización del tiempo de ejecución, se notifican los " @@ -590,6 +588,8 @@ msgid "" "The hook function is always called with the GIL held by the Python " "interpreter that raised the event." msgstr "" +"La función gancho siempre es llamada con el GIL mantenido por el " +"intérprete de Python que lanzó el evento." #: ../Doc/c-api/sys.rst:352 msgid "" @@ -603,7 +603,6 @@ msgstr "" "detalles se encuentran en la documentación de cada función." #: ../Doc/c-api/sys.rst:357 ../Doc/c-api/sys.rst:359 -#, fuzzy msgid "" "If the interpreter is initialized, this function raises an auditing event " "``sys.addaudithook`` with no arguments. If any existing hooks raise an " @@ -612,7 +611,7 @@ msgid "" "hook has been added unless they control all existing hooks." msgstr "" "Si el intérprete se inicializa, esta función lanza un evento de auditoría " -"``sys.addaudithook`` sin argumentos. Si algún enlace existente lanza una " +"``sys.addaudithook`` sin argumentos. Si algún gancho existente lanza una " "excepción derivada de :class:`Exception`, el nuevo gancho no se agregará y " "la excepción se borrará. Como resultado, las personas que llaman no pueden " "asumir que su gancho ha sido agregado a menos que controlen todos los " @@ -625,26 +624,29 @@ msgid "" "to be a :c:type:`PyTupleObject`. *userData* is the argument passed to " "PySys_AddAuditHook()." msgstr "" +"El tipo de la función gancho. *event* es el argumento de cadena C de evento pasado " +"a :c:func:`PySys_Audit` o :c:func:`PySys_AuditTuple`. Se garantiza que *args* " +"es un :c:type:`PyTupleObject`. *userData* es el argumento pasado a " +"PySys_AddAuditHook()." #: ../Doc/c-api/sys.rst:380 msgid "Process Control" msgstr "Control de procesos" #: ../Doc/c-api/sys.rst:387 -#, fuzzy 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 " "make it dangerous to continue using the Python interpreter; e.g., when the " "object administration appears to be corrupted. On Unix, the standard C " -"library function :c:func:`!abort` is called which will attempt to produce a :" -"file:`core` file." +"library function :c:func:`!abort` is called which will attempt to produce " +"a :file:`core` file." msgstr "" "Imprime un mensaje de error fatal y elimina el proceso. No se realiza " "limpieza. Esta función solo debe invocarse cuando se detecta una condición " "que haría peligroso continuar usando el intérprete de Python; por ejemplo, " "cuando la administración del objeto parece estar dañada. En Unix, se llama a " -"la función de biblioteca C estándar :c:func:`abort` que intentará producir " +"la función de biblioteca C estándar :c:func:`!abort` que intentará producir " "un archivo :file:`core`." #: ../Doc/c-api/sys.rst:394 @@ -664,12 +666,13 @@ msgstr "Registra el nombre de la función automáticamente." #: ../Doc/c-api/sys.rst:408 msgid "" "Exit the current process. This calls :c:func:`Py_FinalizeEx` and then calls " -"the standard C library function ``exit(status)``. If :c:func:" -"`Py_FinalizeEx` indicates an error, the exit status is set to 120." +"the standard C library function ``exit(status)``. " +"If :c:func:`Py_FinalizeEx` indicates an error, the exit status is set to 120." msgstr "" "Sale del proceso actual. Esto llama :c:func:`Py_FinalizeEx` y luego llama a " -"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." +"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:412 msgid "Errors from finalization no longer ignored." @@ -697,22 +700,20 @@ msgstr "" #: ../Doc/c-api/sys.rst:101 msgid "USE_STACKCHECK (C macro)" -msgstr "" +msgstr "USE_STACKCHECK (macro de C)" #: ../Doc/c-api/sys.rst:385 msgid "abort (C function)" -msgstr "" +msgstr "abort (función de C)" #: ../Doc/c-api/sys.rst:404 ../Doc/c-api/sys.rst:418 msgid "Py_FinalizeEx (C function)" -msgstr "" +msgstr "Py_FinalizeEx (función de C)" #: ../Doc/c-api/sys.rst:404 -#, fuzzy msgid "exit (C function)" -msgstr "Funciones del Sistema" +msgstr "exit (función C)" #: ../Doc/c-api/sys.rst:418 -#, fuzzy msgid "cleanup functions" -msgstr "Funciones del Sistema" +msgstr "funciones de limpieza" diff --git a/dictionaries/c-api_sys.txt b/dictionaries/c-api_sys.txt new file mode 100644 index 0000000000..ea922641ef --- /dev/null +++ b/dictionaries/c-api_sys.txt @@ -0,0 +1,2 @@ +abort +exit From 53312f23e7c6565bd6fbb6e23690b13c825d2f70 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 5 Oct 2025 16:59:41 +0800 Subject: [PATCH 50/78] Bump tj-actions/changed-files from 46 to 47 (#3416) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 46 to 47.
Release notes

Sourced from tj-actions/changed-files's releases.

v47

Changes in v47.0.0

What's Changed

... (truncated)

Changelog

Sourced from tj-actions/changed-files's changelog.

Changelog

47.0.0 - (2025-09-13)

🚀 Features

➖ Remove

  • Commit and push step from build job (#2538) (be393a9) - (Tonye Jack)

🔄 Update

  • Updated README.md (#2592)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@​users.noreply.github.com> (3dbc1e1) - (github-actions[bot])

  • Updated README.md (#2591)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@​users.noreply.github.com> (b1ccff8) - (github-actions[bot])

  • Updated README.md (#2574)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@​users.noreply.github.com> (050a3d3) - (github-actions[bot])

📚 Documentation

  • Update link to glob patterns (#2590) (a892f50) - (Tonye Jack)
  • Add Jellyfrog as a contributor for code, and doc (#2573) (f000a9b) - (allcontributors[bot])

🧪 Testing

  • Manual triggered workflows (#2637) (c2ca249) - (Tonye Jack)

⚙️ Miscellaneous Tasks

  • deps-dev: Bump jest from 30.0.5 to 30.1.3 (#2655) (9a67555) - (dependabot[bot])
  • deps: Bump tj-actions/git-cliff from 2.1.0 to 2.2.0 (#2660) (b67e30d) - (dependabot[bot])
  • deps: Bump github/codeql-action from 3.30.2 to 3.30.3 (#2661) (62aef42) - (dependabot[bot])
  • deps: Bump github/codeql-action from 3.29.11 to 3.30.2 (#2659) (e874f3c) - (dependabot[bot])
  • deps: Bump actions/setup-node from 4.4.0 to 5.0.0 (#2656) (8c14441) - (dependabot[bot])
  • deps-dev: Bump @​types/node from 24.3.0 to 24.3.1 (#2657) (e995ac4) - (dependabot[bot])
  • deps-dev: Bump @​types/node from 24.2.1 to 24.3.0 (#2649) (3b04099) - (dependabot[bot])
  • deps: Bump github/codeql-action from 3.29.9 to 3.29.11 (#2651) (e7b6c97) - (dependabot[bot])
  • deps: Bump tj-actions/git-cliff from 2.0.2 to 2.1.0 (#2648) (765d62b) - (dependabot[bot])
  • deps: Bump github/codeql-action from 3.29.8 to 3.29.9 (#2647) (2036da1) - (dependabot[bot])
  • deps: Bump github/codeql-action from 3.29.7 to 3.29.8 (#2644) (239aef8) - (dependabot[bot])
  • deps-dev: Bump @​types/node from 24.2.0 to 24.2.1 (#2645) (a7d5f5f) - (dependabot[bot])
  • deps: Bump actions/checkout from 4.2.2 to 5.0.0 (#2646) (5107f3a) - (dependabot[bot])
  • deps-dev: Bump @​types/node from 24.1.0 to 24.2.0 (#2640) (f963b3f) - (dependabot[bot])
  • deps: Bump actions/download-artifact from 4.3.0 to 5.0.0 (#2641) (f956744) - (dependabot[bot])

... (truncated)

Commits
  • 24d32ff upgrade: to node24 (#2662)
  • 9a67555 chore(deps-dev): bump jest from 30.0.5 to 30.1.3 (#2655)
  • b67e30d chore(deps): bump tj-actions/git-cliff from 2.1.0 to 2.2.0 (#2660)
  • 62aef42 chore(deps): bump github/codeql-action from 3.30.2 to 3.30.3 (#2661)
  • e874f3c chore(deps): bump github/codeql-action from 3.29.11 to 3.30.2 (#2659)
  • 8c14441 chore(deps): bump actions/setup-node from 4.4.0 to 5.0.0 (#2656)
  • e995ac4 chore(deps-dev): bump @​types/node from 24.3.0 to 24.3.1 (#2657)
  • 3b04099 chore(deps-dev): bump @​types/node from 24.2.1 to 24.3.0 (#2649)
  • e7b6c97 chore(deps): bump github/codeql-action from 3.29.9 to 3.29.11 (#2651)
  • 765d62b chore(deps): bump tj-actions/git-cliff from 2.0.2 to 2.1.0 (#2648)
  • Additional commits viewable in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=tj-actions/changed-files&package-manager=github_actions&previous-version=46&new-version=47)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/main.yml | 2 +- .github/workflows/pr-comment.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 346b0014d0..18016efc2c 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -52,7 +52,7 @@ jobs: - name: Obtiene la lista de archivos .po con cambios (sólo en PRs) if: github.event_name == 'pull_request' id: changed-po-files - uses: tj-actions/changed-files@v46 + uses: tj-actions/changed-files@v47 with: files: | **/*.po diff --git a/.github/workflows/pr-comment.yml b/.github/workflows/pr-comment.yml index 3491b1e972..9e0971c7c8 100644 --- a/.github/workflows/pr-comment.yml +++ b/.github/workflows/pr-comment.yml @@ -37,7 +37,7 @@ jobs: python -m pip install -r base-branch/requirements-own.txt - name: Obtiene lista de archivos con cambios id: changed-files - uses: tj-actions/changed-files@v46 + uses: tj-actions/changed-files@v47 with: files: | **/*.po From 51d0fe7c0752abac7aee2ded444f61b09569e41e Mon Sep 17 00:00:00 2001 From: "Erick G. Islas-Osuna" Date: Sun, 5 Oct 2025 03:08:24 -0600 Subject: [PATCH 51/78] =?UTF-8?q?Translate=20`c-api/function.po`=20?= =?UTF-8?q?=F0=9F=A4=96=20(#3411)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Updated header information for c-api/function.po. File was largely translated already with only minor header updates needed. Updated Last-Translator field and Po-Revision-Date. Closes #3251 --- c-api/function.po | 145 ++++++++++++++++++++------------ dictionaries/c-api_function.txt | 1 + 2 files changed, 94 insertions(+), 52 deletions(-) create mode 100644 dictionaries/c-api_function.txt diff --git a/c-api/function.po b/c-api/function.po index 8cc916bc04..be33ef241d 100644 --- a/c-api/function.po +++ b/c-api/function.po @@ -12,7 +12,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" "PO-Revision-Date: 2021-12-09 10:29+0800\n" -"Last-Translator: Rodrigo Tobar \n" +"Last-Translator: Erick G. Islas-Osuna \n" "Language: es\n" "Language-Team: python-doc-es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" @@ -36,22 +36,22 @@ msgstr "La estructura C utilizada para las funciones." #: ../Doc/c-api/function.rst:22 msgid "" "This is an instance of :c:type:`PyTypeObject` and represents the Python " -"function type. It is exposed to Python programmers as ``types." -"FunctionType``." +"function type. It is exposed to Python programmers as " +"``types.FunctionType``." msgstr "" "Esta es una instancia de :c:type:`PyTypeObject` y representa el tipo función " -"de Python. Está expuesto a los programadores de Python como ``types." -"FunctionType``." +"de Python. Está expuesto a los programadores de Python como " +"``types.FunctionType``." #: ../Doc/c-api/function.rst:28 msgid "" -"Return true if *o* is a function object (has type :c:data:" -"`PyFunction_Type`). The parameter must not be ``NULL``. This function " -"always succeeds." +"Return true if *o* is a function object (has " +"type :c:data:`PyFunction_Type`). The parameter must not be ``NULL``. This " +"function always succeeds." msgstr "" -"Retorna verdadero si *o* es un objeto función (tiene tipo :c:data:" -"`PyFunction_Type`). El parámetro no debe ser ``NULL``. Esta función siempre " -"finaliza con éxito." +"Retorna verdadero si *o* es un objeto función (tiene " +"tipo :c:data:`PyFunction_Type`). El parámetro no debe ser ``NULL``. Esta " +"función siempre finaliza con éxito." #: ../Doc/c-api/function.rst:34 msgid "" @@ -64,31 +64,32 @@ msgstr "" "la función." #: ../Doc/c-api/function.rst:37 -#, fuzzy msgid "" -"The function's docstring and name are retrieved from the code object. :attr:" -"`~function.__module__` is retrieved from *globals*. The argument defaults, " -"annotations and closure are set to ``NULL``. :attr:`~function.__qualname__` " -"is set to the same value as the code object's :attr:`~codeobject." -"co_qualname` field." +"The function's docstring and name are retrieved from the code " +"object. :attr:`~function.__module__` is retrieved from *globals*. The " +"argument defaults, annotations and closure are set to " +"``NULL``. :attr:`~function.__qualname__` is set to the same value as the " +"code object's :attr:`~codeobject.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." +"El docstring y el nombre de la función se obtienen del objeto " +"código. :attr:`~function.__module__` se obtiene de *globals*. Los argumentos " +"por defecto, anotaciones y clausura se establecen en " +"``NULL``. :attr:`~function.__qualname__` se establece en el mismo valor que " +"el campo :attr:`~codeobject.co_qualname` del objeto código." #: ../Doc/c-api/function.rst:46 -#, fuzzy msgid "" -"As :c:func:`PyFunction_New`, but also allows setting the function object's :" -"attr:`~function.__qualname__` attribute. *qualname* should be a unicode " -"object or ``NULL``; if ``NULL``, the :attr:`!__qualname__` attribute is set " -"to the same value as the code object's :attr:`~codeobject.co_qualname` field." +"As :c:func:`PyFunction_New`, but also allows setting the function " +"object's :attr:`~function.__qualname__` attribute. *qualname* should be a " +"unicode object or ``NULL``; if ``NULL``, the :attr:`!__qualname__` attribute " +"is set to the same value as the code " +"object's :attr:`~codeobject.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__``." +"Como :c:func:`PyFunction_New`, pero también permite configurar el " +"atributo :attr:`~function.__qualname__` del objeto función. *qualname* debe " +"ser un objeto unicode o ``NULL``; si es ``NULL``, el atributo :attr:`!" +"__qualname__` se establece en el mismo valor que el " +"campo :attr:`~codeobject.co_qualname` del objeto código." #: ../Doc/c-api/function.rst:57 msgid "Return the code object associated with the function object *op*." @@ -99,24 +100,23 @@ 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:67 -#, fuzzy msgid "" "Return a :term:`borrowed reference` to the :attr:`~function.__module__` " "attribute of the :ref:`function object ` *op*. It can be " "*NULL*." msgstr "" -"Retorna una referencia tomada (:term:`borrowed reference`) al atributo " -"*__module__* del objeto función *op*. Puede ser *NULL*." +"Retorna una :term:`referencia prestada` al " +"atributo :attr:`~function.__module__` del :ref:`objeto función ` *op*. Puede ser *NULL*." #: ../Doc/c-api/function.rst:71 -#, fuzzy msgid "" "This is normally a :class:`string ` containing the module name, but can " "be set to any other object by Python code." msgstr "" -"Éste es normalmente una cadena de caracteres que contiene el nombre del " -"módulo, pero se puede establecer en cualquier otro objeto mediante código " -"Python." +"Esto es normalmente una :class:`cadena de caracteres ` que contiene el " +"nombre del módulo, pero se puede establecer en cualquier otro objeto " +"mediante código Python." #: ../Doc/c-api/function.rst:77 msgid "" @@ -141,13 +141,15 @@ msgstr "Lanza :exc:`SystemError` y retorna ``-1`` en caso de error." #: ../Doc/c-api/function.rst:91 msgid "Set the vectorcall field of a given function object *func*." -msgstr "" +msgstr "Establece el campo vectorcall de un objeto función dado *func*." #: ../Doc/c-api/function.rst:93 msgid "" "Warning: extensions using this API must preserve the behavior of the " "unaltered (default) vectorcall function!" msgstr "" +"Advertencia: ¡las extensiones que usan esta API deben preservar el " +"comportamiento de la función vectorcall inalterada (por defecto)!" #: ../Doc/c-api/function.rst:100 msgid "" @@ -188,14 +190,22 @@ msgid "" "case of error (e.g. no more watcher IDs available), return ``-1`` and set an " "exception." msgstr "" +"Registra *callback* como un observador de función para el intérprete actual. " +"Retorna un ID que puede pasarse a :c:func:`PyFunction_ClearWatcher`. En caso " +"de error (por ejemplo, no hay más IDs de observador disponibles), retorna " +"``-1`` y establece una excepción." #: ../Doc/c-api/function.rst:138 msgid "" -"Clear watcher identified by *watcher_id* previously returned from :c:func:" -"`PyFunction_AddWatcher` for the current interpreter. Return ``0`` on " -"success, or ``-1`` and set an exception on error (e.g. if the given " -"*watcher_id* was never registered.)" +"Clear watcher identified by *watcher_id* previously returned " +"from :c:func:`PyFunction_AddWatcher` for the current interpreter. Return " +"``0`` on success, or ``-1`` and set an exception on error (e.g. if the " +"given *watcher_id* was never registered.)" msgstr "" +"Limpia el observador identificado por *watcher_id* previamente retornado " +"de :c:func:`PyFunction_AddWatcher` para el intérprete actual. Retorna ``0`` " +"en caso de éxito, o ``-1`` y establece una excepción en caso de error (por " +"ejemplo, si el *watcher_id* dado nunca fue registrado)." #: ../Doc/c-api/function.rst:148 msgid "" @@ -204,24 +214,34 @@ msgid "" "``PyFunction_EVENT_MODIFY_CODE`` - ``PyFunction_EVENT_MODIFY_DEFAULTS`` - " "``PyFunction_EVENT_MODIFY_KWDEFAULTS``" msgstr "" +"Enumeración de posibles eventos de observador de función: - " +"``PyFunction_EVENT_CREATE`` - ``PyFunction_EVENT_DESTROY`` - " +"``PyFunction_EVENT_MODIFY_CODE`` - ``PyFunction_EVENT_MODIFY_DEFAULTS`` - " +"``PyFunction_EVENT_MODIFY_KWDEFAULTS``" #: ../Doc/c-api/function.rst:160 msgid "Type of a function watcher callback function." -msgstr "" +msgstr "Tipo de una función callback de observador de función." #: ../Doc/c-api/function.rst:162 msgid "" "If *event* is ``PyFunction_EVENT_CREATE`` or ``PyFunction_EVENT_DESTROY`` " -"then *new_value* will be ``NULL``. Otherwise, *new_value* will hold a :term:" -"`borrowed reference` to the new value that is about to be stored in *func* " -"for the attribute that is being modified." +"then *new_value* will be ``NULL``. Otherwise, *new_value* will hold " +"a :term:`borrowed reference` to the new value that is about to be stored in " +"*func* for the attribute that is being modified." msgstr "" +"Si *event* es ``PyFunction_EVENT_CREATE`` o ``PyFunction_EVENT_DESTROY`` " +"entonces *new_value* será ``NULL``. De lo contrario, *new_value* mantendrá " +"una :term:`referencia prestada` al nuevo valor que está a punto de " +"almacenarse en *func* para el atributo que se está modificando." #: ../Doc/c-api/function.rst:167 msgid "" "The callback may inspect but must not modify *func*; doing so could have " "unpredictable effects, including infinite recursion." msgstr "" +"El callback puede inspeccionar pero no debe modificar *func*; hacerlo podría " +"tener efectos impredecibles, incluyendo recursión infinita." #: ../Doc/c-api/function.rst:170 msgid "" @@ -234,6 +254,15 @@ msgid "" "behavior depending on optimization decisions, it does not change the " "semantics of the Python code being executed." msgstr "" +"Si *event* es ``PyFunction_EVENT_CREATE``, entonces el callback se invoca " +"después de que `func` haya sido completamente inicializada. De lo contrario, " +"el callback se invoca antes de que tenga lugar la modificación a *func*, por " +"lo que el estado previo de *func* puede ser inspeccionado. Se permite al " +"tiempo de ejecución optimizar la creación de objetos función cuando sea " +"posible. En tales casos no se emitirá ningún evento. Aunque esto crea la " +"posibilidad de una diferencia observable del comportamiento del tiempo de " +"ejecución dependiendo de las decisiones de optimización, no cambia la " +"semántica del código Python que se está ejecutando." #: ../Doc/c-api/function.rst:179 msgid "" @@ -242,13 +271,21 @@ msgid "" "it from being freed at this time. When the resurrected object is destroyed " "later, any watcher callbacks active at that time will be called again." msgstr "" +"Si *event* es ``PyFunction_EVENT_DESTROY``, tomar una referencia en el " +"callback a la función a punto de ser destruida la resucitará, evitando que " +"sea liberada en este momento. Cuando el objeto resucitado sea destruido más " +"tarde, cualquier callback observador activo en ese momento será llamado de " +"nuevo." #: ../Doc/c-api/function.rst:184 msgid "" "If the callback sets an exception, it must return ``-1``; this exception " -"will be printed as an unraisable exception using :c:func:" -"`PyErr_WriteUnraisable`. Otherwise it should return ``0``." +"will be printed as an unraisable exception " +"using :c:func:`PyErr_WriteUnraisable`. Otherwise it should return ``0``." msgstr "" +"Si el callback establece una excepción, debe retornar ``-1``; esta excepción " +"se imprimirá como una excepción no lanzable " +"usando :c:func:`PyErr_WriteUnraisable`. De lo contrario debe retornar ``0``." #: ../Doc/c-api/function.rst:188 msgid "" @@ -258,16 +295,20 @@ msgid "" "exception unless it saves and clears the exception state first, and restores " "it before returning." msgstr "" +"Puede haber ya una excepción pendiente establecida al entrar al callback. En " +"este caso, el callback debe retornar ``0`` con la misma excepción aún " +"establecida. Esto significa que el callback no puede llamar a ninguna otra " +"API que pueda establecer una excepción a menos que guarde y borre el estado " +"de la excepción primero, y lo restaure antes de retornar." #: ../Doc/c-api/function.rst:8 msgid "object" -msgstr "" +msgstr "objeto" #: ../Doc/c-api/function.rst:8 -#, fuzzy msgid "function" -msgstr "Objetos función" +msgstr "función" #: ../Doc/c-api/function.rst:20 msgid "MethodType (in module types)" -msgstr "" +msgstr "MethodType (en module types)" diff --git a/dictionaries/c-api_function.txt b/dictionaries/c-api_function.txt new file mode 100644 index 0000000000..0e1b59889c --- /dev/null +++ b/dictionaries/c-api_function.txt @@ -0,0 +1 @@ +lanzable From c8f6871f80c2034eecdde56788ffe577cfd010f5 Mon Sep 17 00:00:00 2001 From: "Erick G. Islas-Osuna" Date: Sun, 5 Oct 2025 03:22:48 -0600 Subject: [PATCH 52/78] =?UTF-8?q?Translate=20`c-api/tuple.po`=20?= =?UTF-8?q?=F0=9F=A4=96=20(#3409)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixed missing msgstr entries for c-api/tuple.po: - Tuple object type descriptions - PyTypeObject instance descriptions - Tuple type checking functions Updated Last-Translator field and Po-Revision-Date. Closes #3256 --- c-api/tuple.po | 136 +++++++++++++++++++++++++------------------------ 1 file changed, 69 insertions(+), 67 deletions(-) diff --git a/c-api/tuple.po b/c-api/tuple.po index 2d17c26756..53caecd921 100644 --- a/c-api/tuple.po +++ b/c-api/tuple.po @@ -11,8 +11,7 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: 2022-10-29 23:58-0400\n" -"Last-Translator: Rodrigo Tobar \n" +"Last-Translator: Erick G. Islas-Osuna \n" "Language: es\n" "Language-Team: python-doc-es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" @@ -55,43 +54,42 @@ msgstr "" "subtipo del tipo tupla. Esta función siempre finaliza con éxito." #: ../Doc/c-api/tuple.rst:36 -#, fuzzy msgid "" "Return a new tuple object of size *len*, or ``NULL`` with an exception set " "on failure." msgstr "" -"Retorna un nuevo objeto tupla de tamaño *len* o ``NULL`` en caso de falla." +"Retorna un nuevo objeto tupla de tamaño *len*, o ``NULL`` con una excepción establecida " +"en caso de falla." #: ../Doc/c-api/tuple.rst:42 -#, fuzzy msgid "" "Return a new tuple object of size *n*, or ``NULL`` with an exception set on " "failure. The tuple values are initialized to the subsequent *n* C arguments " "pointing to Python objects. ``PyTuple_Pack(2, a, b)`` is equivalent to " "``Py_BuildValue(\"(OO)\", a, b)``." msgstr "" -"Retorna un nuevo objeto tupla de tamaño *n*, o ``NULL`` en caso de falla. " -"Los valores de tupla se inicializan en los argumentos C posteriores *n* que " -"apuntan a objetos de Python. ``PyTuple_Pack (2, a, b)`` es equivalente a " +"Retorna un nuevo objeto tupla de tamaño *n*, o ``NULL`` con una excepción establecida en " +"caso de falla. Los valores de tupla se inicializan con los siguientes *n* argumentos C " +"que apuntan a objetos de Python. ``PyTuple_Pack(2, a, b)`` es equivalente a " "``Py_BuildValue(\"(OO)\", a, b)``." #: ../Doc/c-api/tuple.rst:50 -#, fuzzy msgid "" "Take a pointer to a tuple object, and return the size of that tuple. On " "error, return ``-1`` and with an exception set." -msgstr "Toma un puntero a un objeto de tupla y retorna el tamaño de esa tupla." +msgstr "" +"Toma un puntero a un objeto tupla y retorna el tamaño de esa tupla. En caso " +"de error, retorna ``-1`` con una excepción establecida." #: ../Doc/c-api/tuple.rst:56 -#, fuzzy msgid "Like :c:func:`PyTuple_Size`, but without error checking." -msgstr "Como :c:func:`PyTuple_GetItem`, pero no verifica sus argumentos." +msgstr "Como :c:func:`PyTuple_Size`, pero sin verificación de errores." #: ../Doc/c-api/tuple.rst:61 msgid "" "Return the object at position *pos* in the tuple pointed to by *p*. If " -"*pos* is negative or out of bounds, return ``NULL`` and set an :exc:" -"`IndexError` exception." +"*pos* is negative or out of bounds, return ``NULL`` and set " +"an :exc:`IndexError` exception." msgstr "" "Retorna el objeto en la posición *pos* en la tupla señalada por *p*. Si " "*pos* es negativo o está fuera de los límites, retorna ``NULL`` y establece " @@ -101,9 +99,13 @@ msgstr "" msgid "" "The returned reference is borrowed from the tuple *p* (that is: it is only " "valid as long as you hold a reference to *p*). To get a :term:`strong " -"reference`, use :c:func:`Py_NewRef(PyTuple_GetItem(...)) ` or :c:" -"func:`PySequence_GetItem`." +"reference`, use :c:func:`Py_NewRef(PyTuple_GetItem(...)) ` " +"or :c:func:`PySequence_GetItem`." msgstr "" +"La referencia retornada es prestada de la tupla *p* (es decir: solo es " +"válida mientras mantengas una referencia a *p*). Para obtener una :term:`referencia " +"fuerte`, usa :c:func:`Py_NewRef(PyTuple_GetItem(...)) ` " +"o :c:func:`PySequence_GetItem`." #: ../Doc/c-api/tuple.rst:73 msgid "Like :c:func:`PyTuple_GetItem`, but does no checking of its arguments." @@ -114,16 +116,16 @@ msgid "" "Return the slice of the tuple pointed to by *p* between *low* and *high*, or " "``NULL`` with an exception set on failure." msgstr "" +"Retorna la rebanada de la tupla apuntada por *p* entre *low* y *high*, o " +"``NULL`` con una excepción establecida en caso de falla." #: ../Doc/c-api/tuple.rst:81 -#, fuzzy msgid "" "This is the equivalent of the Python expression ``p[low:high]``. Indexing " "from the end of the tuple is not supported." msgstr "" -"Retorna la porción de la tupla señalada por *p* entre *low* y *high*, o " -"``NULL`` en caso de falla. Este es el equivalente de la expresión de Python " -"``p[low:high]``. La indexación desde el final de la tupla no es compatible." +"Esto es equivalente a la expresión de Python ``p[low:high]``. La indexación " +"desde el final de la tupla no es compatible." #: ../Doc/c-api/tuple.rst:87 msgid "" @@ -154,20 +156,25 @@ msgstr "" #: ../Doc/c-api/tuple.rst:102 ../Doc/c-api/tuple.rst:217 #: ../Doc/c-api/tuple.rst:235 msgid "" -"Bounds checking is performed as an assertion if Python is built in :ref:" -"`debug mode ` or :option:`with assertions <--with-assertions>`." +"Bounds checking is performed as an assertion if Python is built " +"in :ref:`debug mode ` or :option:`with assertions <--with-" +"assertions>`." msgstr "" +"La comprobación de límites se realiza como una aserción si Python se " +"construye en :ref:`modo de depuración ` o :option:`con " +"aserciones <--with-assertions>`." #: ../Doc/c-api/tuple.rst:107 msgid "" -"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." +"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 "" -"Esta función \"roba\" una referencia a *o* y, a diferencia de :c:func:" -"`PyTuple_SetItem`, *no* descarta una referencia a ningún elemento que se " -"está reemplazando; cualquier referencia en la tupla en la posición *pos* se " -"filtrará." +"Esta función \"roba\" una referencia a *o* y, a diferencia " +"de :c:func:`PyTuple_SetItem`, *no* descarta una referencia a ningún elemento " +"que se está reemplazando; cualquier referencia en la tupla en la posición " +"*pos* se filtrará." #: ../Doc/c-api/tuple.rst:115 msgid "" @@ -180,8 +187,8 @@ msgid "" "Client code should never assume that the resulting value of ``*p`` will be " "the same as before calling this function. If the object referenced by ``*p`` " "is replaced, the original ``*p`` is destroyed. On failure, returns ``-1`` " -"and sets ``*p`` to ``NULL``, and raises :exc:`MemoryError` or :exc:" -"`SystemError`." +"and sets ``*p`` to ``NULL``, and raises :exc:`MemoryError` " +"or :exc:`SystemError`." msgstr "" "Se puede usar para cambiar el tamaño de una tupla. *newsize* será el nuevo " "tamaño de la tupla. Debido a que se *supone* que las tuplas son inmutables, " @@ -201,10 +208,10 @@ msgstr "Objetos de secuencia de estructura" #: ../Doc/c-api/tuple.rst:132 msgid "" -"Struct sequence objects are the C equivalent of :func:`~collections." -"namedtuple` objects, i.e. a sequence whose items can also be accessed " -"through attributes. To create a struct sequence, you first have to create a " -"specific struct sequence type." +"Struct sequence objects are the C equivalent " +"of :func:`~collections.namedtuple` objects, i.e. a sequence whose items can " +"also be accessed through attributes. To create a struct sequence, you first " +"have to create a specific struct sequence type." msgstr "" "Los objetos de secuencia de estructura son el equivalente en C de los " "objetos :func:`~collections.namedtuple`, es decir, una secuencia a cuyos " @@ -215,8 +222,8 @@ msgstr "" #: ../Doc/c-api/tuple.rst:139 msgid "" "Create a new struct sequence type from the data in *desc*, described below. " -"Instances of the resulting type can be created with :c:func:" -"`PyStructSequence_New`." +"Instances of the resulting type can be created " +"with :c:func:`PyStructSequence_New`." msgstr "" "Crea un nuevo tipo de secuencia de estructura a partir de los datos en " "*desc*, que se describen a continuación. Las instancias del tipo resultante " @@ -224,7 +231,7 @@ msgstr "" #: ../Doc/c-api/tuple.rst:142 ../Doc/c-api/tuple.rst:210 msgid "Return ``NULL`` with an exception set on failure." -msgstr "" +msgstr "Retorna ``NULL`` con una excepción establecida en caso de falla." #: ../Doc/c-api/tuple.rst:147 msgid "Initializes a struct sequence type *type* from *desc* in place." @@ -232,13 +239,12 @@ msgstr "" "Inicializa una secuencia de estructura tipo *type* desde *desc* en su lugar." #: ../Doc/c-api/tuple.rst:152 -#, fuzzy msgid "" "Like :c:func:`PyStructSequence_InitType`, but returns ``0`` on success and " "``-1`` with an exception set on failure." msgstr "" -"Lo mismo que ``PyStructSequence_InitType``, pero retorna ``0`` en caso de " -"éxito y ``-1`` en caso de error." +"Como :c:func:`PyStructSequence_InitType`, pero retorna ``0`` en caso de " +"éxito y ``-1`` con una excepción establecida en caso de falla." #: ../Doc/c-api/tuple.rst:160 msgid "Contains the meta information of a struct sequence type to create." @@ -267,21 +273,22 @@ msgstr "" #: ../Doc/c-api/tuple.rst:181 msgid "" "Describes a field of a struct sequence. As a struct sequence is modeled as a " -"tuple, all fields are typed as :c:expr:`PyObject*`. The index in the :c:" -"member:`~PyStructSequence_Desc.fields` array of the :c:type:" -"`PyStructSequence_Desc` determines which field of the struct sequence is " -"described." +"tuple, all fields are typed as :c:expr:`PyObject*`. The index in " +"the :c:member:`~PyStructSequence_Desc.fields` array of " +"the :c:type:`PyStructSequence_Desc` determines which field of the struct " +"sequence is described." msgstr "" "Describe un campo de una secuencia de estructura. Como una secuencia de " -"estructura se modela como una tupla, todos los campos se escriben como :c:" -"expr:`PyObject*`. El índice en el arreglo :c:member:`~PyStructSequence_Desc." -"fields` de :c:type:`PyStructSequence_Desc` determina qué campo de la " -"secuencia de estructura se describe." +"estructura se modela como una tupla, todos los campos se escriben " +"como :c:expr:`PyObject*`. El índice en el " +"arreglo :c:member:`~PyStructSequence_Desc.fields` " +"de :c:type:`PyStructSequence_Desc` determina qué campo de la secuencia de " +"estructura se describe." #: ../Doc/c-api/tuple.rst:189 msgid "" -"Name for the field or ``NULL`` to end the list of named fields, set to :c:" -"data:`PyStructSequence_UnnamedField` to leave unnamed." +"Name for the field or ``NULL`` to end the list of named fields, set " +"to :c:data:`PyStructSequence_UnnamedField` to leave unnamed." msgstr "" "Nombre para el campo o ``NULL`` para finalizar la lista de campos con " "nombre, establece en :c:data:`PyStructSequence_UnnamedField` para dejar sin " @@ -301,29 +308,26 @@ msgstr "El tipo se cambió de ``char *``." #: ../Doc/c-api/tuple.rst:207 msgid "" -"Creates an instance of *type*, which must have been created with :c:func:" -"`PyStructSequence_NewType`." +"Creates an instance of *type*, which must have been created " +"with :c:func:`PyStructSequence_NewType`." msgstr "" -"Crea una instancia de *type*, que debe haberse creado con :c:func:" -"`PyStructSequence_NewType`." +"Crea una instancia de *type*, que debe haberse creado " +"con :c:func:`PyStructSequence_NewType`." #: ../Doc/c-api/tuple.rst:215 -#, fuzzy msgid "" "Return the object at position *pos* in the struct sequence pointed to by *p*." msgstr "" "Retorna el objeto en la posición *pos* en la secuencia de estructura " -"apuntada por *p*. No se realiza la comprobación de límites." +"apuntada por *p*." #: ../Doc/c-api/tuple.rst:223 -#, fuzzy msgid "Alias to :c:func:`PyStructSequence_GetItem`." -msgstr "Macro equivalente de :c:func:`PyStructSequence_GetItem`." +msgstr "Alias de :c:func:`PyStructSequence_GetItem`." #: ../Doc/c-api/tuple.rst:225 -#, fuzzy msgid "Now implemented as an alias to :c:func:`PyStructSequence_GetItem`." -msgstr "Macro equivalente de :c:func:`PyStructSequence_GetItem`." +msgstr "Ahora implementado como un alias de :c:func:`PyStructSequence_GetItem`." #: ../Doc/c-api/tuple.rst:231 msgid "" @@ -340,19 +344,17 @@ msgid "This function \"steals\" a reference to *o*." msgstr "Esta función \"roba\" una referencia a *o*." #: ../Doc/c-api/tuple.rst:245 -#, fuzzy msgid "Alias to :c:func:`PyStructSequence_SetItem`." -msgstr "Macro equivalente de :c:func:`PyStructSequence_GetItem`." +msgstr "Alias de :c:func:`PyStructSequence_SetItem`." #: ../Doc/c-api/tuple.rst:247 -#, fuzzy msgid "Now implemented as an alias to :c:func:`PyStructSequence_SetItem`." -msgstr "Macro equivalente de :c:func:`PyStructSequence_GetItem`." +msgstr "Ahora implementado como un alias de :c:func:`PyStructSequence_SetItem`." #: ../Doc/c-api/tuple.rst:8 msgid "object" -msgstr "object" +msgstr "objeto" #: ../Doc/c-api/tuple.rst:8 msgid "tuple" -msgstr "tuple" +msgstr "tupla" From a918cce799db7627f0c3673332a348ebd2f7b305 Mon Sep 17 00:00:00 2001 From: Joseph Salgado <49181840+xooseph@users.noreply.github.com> Date: Sun, 12 Oct 2025 20:13:36 -0600 Subject: [PATCH 53/78] Translate `c-api/complex` (#3417) Closes #3248 --- c-api/complex.po | 85 ++++++++++++++++++++++++------------------------ 1 file changed, 42 insertions(+), 43 deletions(-) diff --git a/c-api/complex.po b/c-api/complex.po index 08c7e38f6c..5dc96c0222 100644 --- a/c-api/complex.po +++ b/c-api/complex.po @@ -11,15 +11,16 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: 2021-12-09 10:18+0800\n" +"PO-Revision-Date: 2025-10-07 00:11-0600\n" "Last-Translator: Rodrigo Tobar \n" -"Language: es\n" "Language-Team: python-doc-es\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\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.16.0\n" +"X-Generator: Poedit 3.7\n" #: ../Doc/c-api/complex.rst:6 msgid "Complex Number Objects" @@ -53,7 +54,6 @@ msgstr "" "desreferenciarlas a través de punteros. Esto es consistente en toda la API." #: ../Doc/c-api/complex.rst:26 -#, fuzzy msgid "" "The C structure which corresponds to the value portion of a Python complex " "number object. Most of the functions for dealing with complex number " @@ -63,11 +63,11 @@ msgstr "" "La estructura C que corresponde a la porción de valor de un objeto de número " "complejo de Python. La mayoría de las funciones para tratar con objetos de " "números complejos utilizan estructuras de este tipo como valores de entrada " -"o salida, según corresponda. Se define como::" +"o salida, según corresponda." #: ../Doc/c-api/complex.rst:33 msgid "The structure is defined as::" -msgstr "" +msgstr "La estructura se define como::" #: ../Doc/c-api/complex.rst:35 msgid "" @@ -76,6 +76,10 @@ msgid "" " double imag;\n" "} Py_complex;" msgstr "" +"typedef struct {\n" +" double real;\n" +" double imag;\n" +"} Py_complex;" #: ../Doc/c-api/complex.rst:43 msgid "" @@ -118,13 +122,12 @@ msgstr "" "C :c:type:`Py_complex`." #: ../Doc/c-api/complex.rst:70 -#, fuzzy msgid "" "If *divisor* is null, this method returns zero and sets :c:data:`errno` to :" "c:macro:`!EDOM`." msgstr "" "Si *divisor* es nulo, este método retorna cero y establece :c:data:`errno` " -"en :c:data:`EDOM`." +"en :c:macro:`!EDOM`." #: ../Doc/c-api/complex.rst:76 msgid "" @@ -135,13 +138,12 @@ msgstr "" "C :c:type:`Py_complex`." #: ../Doc/c-api/complex.rst:79 -#, fuzzy msgid "" "If *num* is null and *exp* is not a positive real number, this method " "returns zero and sets :c:data:`errno` to :c:macro:`!EDOM`." msgstr "" "Si *num* es nulo y *exp* no es un número real positivo, este método retorna " -"cero y establece :c:data:`errno` a :c:data:`EDOM`." +"cero y establece :c:data:`errno` a :c:macro:`!EDOM`." #: ../Doc/c-api/complex.rst:84 msgid "Complex Numbers as Python Objects" @@ -182,28 +184,27 @@ msgstr "" "éxito." #: ../Doc/c-api/complex.rst:112 -#, fuzzy msgid "" "Create a new Python complex number object from a C :c:type:`Py_complex` " "value. Return ``NULL`` with an exception set on error." msgstr "" "Crea un nuevo objeto de número complejo de Python a partir de un valor C :c:" -"type:`Py_complex`." +"type:`Py_complex`. Retorna ``NULL`` con una excepción establecida en caso de " +"error." #: ../Doc/c-api/complex.rst:118 -#, fuzzy msgid "" "Return a new :c:type:`PyComplexObject` object from *real* and *imag*. Return " "``NULL`` with an exception set on error." -msgstr "Retorna un nuevo objeto :c:type:`PyComplexObject` de *real* e *imag*." +msgstr "" +"Retorna un nuevo objeto :c:type:`PyComplexObject` de *real* e *imag*. " +"Retorna ``NULL`` con una excepción establecida en caso de error." #: ../Doc/c-api/complex.rst:124 -#, 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." +msgstr "Retorna la parte real de *op* como :c:expr:`double` en C." #: ../Doc/c-api/complex.rst:126 -#, fuzzy msgid "" "If *op* is not a Python complex number object but has a :meth:`~object." "__complex__` method, this method will first be called to convert *op* to a " @@ -211,30 +212,29 @@ msgid "" "it falls back to call :c:func:`PyFloat_AsDouble` and returns its result." msgstr "" "Si *op* no es un objeto de número complejo de Python pero tiene un método :" -"meth:`__complex__`, primero se llamará a este método para convertir *op* en " -"un objeto de número complejo de Python. Si ``__complex__()`` no está " -"definido, vuelve a :meth:`__float__`. Si ``__float__()`` no está definido, " -"entonces recurre a :meth:`__index__`. En caso de falla, este método retorna " -"``-1.0`` como un valor real." +"meth:`~object.__complex__`, primero se llamará a este método para convertir " +"*op* en un objeto de número complejo de Python. Si :meth:`!__complex__` no " +"está definido, entonces recurre a :c:func:`PyFloat_AsDouble` y retorna su " +"resultado." #: ../Doc/c-api/complex.rst:132 ../Doc/c-api/complex.rst:148 msgid "" "Upon failure, this method returns ``-1.0`` with an exception set, so one " "should call :c:func:`PyErr_Occurred` to check for errors." msgstr "" +"En caso de falla, este método retorna ``-1.0`` con una excepción " +"establecida, por lo que se debe llamar :c:func:`PyErr_Occurred` para " +"verificar si hay errores." #: ../Doc/c-api/complex.rst:135 ../Doc/c-api/complex.rst:151 -#, fuzzy msgid "Use :meth:`~object.__complex__` if available." -msgstr "Use :meth:`__index__` si está disponible." +msgstr "Use :meth:`~object.__complex__` si está disponible." #: ../Doc/c-api/complex.rst:140 -#, 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." +msgstr "Retorna la parte imaginaria de *op* como un :c:expr:`double` de C." #: ../Doc/c-api/complex.rst:142 -#, fuzzy msgid "" "If *op* is not a Python complex number object but has a :meth:`~object." "__complex__` method, this method will first be called to convert *op* to a " @@ -243,18 +243,16 @@ msgid "" "success." msgstr "" "Si *op* no es un objeto de número complejo de Python pero tiene un método :" -"meth:`__complex__`, primero se llamará a este método para convertir *op* en " -"un objeto de número complejo de Python. Si ``__complex__()`` no está " -"definido, vuelve a :meth:`__float__`. Si ``__float__()`` no está definido, " -"entonces recurre a :meth:`__index__`. En caso de falla, este método retorna " -"``-1.0`` como un valor real." +"meth:`~object.__complex__`, primero se llamará a este método para convertir " +"*op* en un objeto de número complejo de Python. Si :meth:`!__complex__` no " +"está definido, entonces recurre a :c:func:`PyFloat_AsDouble` y retorna " +"``0.0`` en caso de éxito." #: ../Doc/c-api/complex.rst:156 msgid "Return the :c:type:`Py_complex` value of the complex number *op*." msgstr "Retorna el valor :c:type:`Py_complex` del número complejo *op*." #: ../Doc/c-api/complex.rst:158 -#, fuzzy msgid "" "If *op* is not a Python complex number object but has a :meth:`~object." "__complex__` method, this method will first be called to convert *op* to a " @@ -263,11 +261,10 @@ msgid "" "defined then it falls back to :meth:`~object.__index__`." msgstr "" "Si *op* no es un objeto de número complejo de Python pero tiene un método :" -"meth:`__complex__`, primero se llamará a este método para convertir *op* en " -"un objeto de número complejo de Python. Si ``__complex__()`` no está " -"definido, vuelve a :meth:`__float__`. Si ``__float__()`` no está definido, " -"entonces recurre a :meth:`__index__`. En caso de falla, este método retorna " -"``-1.0`` como un valor real." +"meth:`~object.__complex__`, primero se llamará a este método para convertir " +"*op* en un objeto de número complejo de Python. Si :meth:`!__complex__` no " +"está definido, entonces recurre a :meth:`~object.__float__`. Si :meth:`!" +"__float__` no está definido, entonces recurre a :meth:`~object.__index__`." #: ../Doc/c-api/complex.rst:164 msgid "" @@ -275,17 +272,19 @@ msgid "" "`~Py_complex.real` set to ``-1.0`` and with an exception set, so one should " "call :c:func:`PyErr_Occurred` to check for errors." msgstr "" +"En caso de falla, este método retorna :c:type:`Py_complex` con :c:member:" +"`~Py_complex.real` establecido en ``-1.0`` y con una excepción establecida, " +"por lo que se debe llamar a :c:func:`PyErr_Occurred` para verificar si hay " +"errores." #: ../Doc/c-api/complex.rst:168 -#, fuzzy msgid "Use :meth:`~object.__index__` if available." -msgstr "Use :meth:`__index__` si está disponible." +msgstr "Use :meth:`~object.__index__` si está disponible." #: ../Doc/c-api/complex.rst:8 msgid "object" -msgstr "" +msgstr "object" #: ../Doc/c-api/complex.rst:8 -#, fuzzy msgid "complex number" -msgstr "Objetos de números complejos" +msgstr "complex number" From eda657fe30e8ecb6e9545ec8b0b08ba8c1132e7f Mon Sep 17 00:00:00 2001 From: Joseph Salgado <49181840+xooseph@users.noreply.github.com> Date: Sun, 12 Oct 2025 23:45:47 -0600 Subject: [PATCH 54/78] Translate `c-api/gcsupport` (#3418) Closes #3247 --------- Co-authored-by: rtobar --- c-api/gcsupport.po | 94 +++++++++++++++++++++++++++++----------------- 1 file changed, 59 insertions(+), 35 deletions(-) diff --git a/c-api/gcsupport.po b/c-api/gcsupport.po index dc2b6536ef..0e2615e57a 100644 --- a/c-api/gcsupport.po +++ b/c-api/gcsupport.po @@ -11,15 +11,16 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: 2021-10-26 08:09+0200\n" +"PO-Revision-Date: 2025-10-07 00:51-0600\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" +"Language: es\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.16.0\n" +"X-Generator: Poedit 3.7\n" #: ../Doc/c-api/gcsupport.rst:6 msgid "Supporting Cyclic Garbage Collection" @@ -42,7 +43,6 @@ msgstr "" "proporcionar ningún soporte explícito para la recolección de basura." #: ../Doc/c-api/gcsupport.rst:15 -#, fuzzy msgid "" "To create a container type, the :c:member:`~PyTypeObject.tp_flags` field of " "the type object must include the :c:macro:`Py_TPFLAGS_HAVE_GC` and provide " @@ -51,14 +51,14 @@ msgid "" "implementation must also be provided." msgstr "" "Para crear un tipo de contenedor, el campo :c:member:`~PyTypeObject." -"tp_flags` del objeto tipo debe incluir :const:`Py_TPFLAGS_HAVE_GC` y " +"tp_flags` del objeto tipo debe incluir :c:macro:`Py_TPFLAGS_HAVE_GC` y " "proporcionar una implementación del manejador :c:member:`~PyTypeObject." -"tp_traverse` . Si las instancias del tipo son mutables, también se debe " +"tp_traverse`. Si las instancias del tipo son mutables, también se debe " "proporcionar una implementación a :c:member:`~PyTypeObject.tp_clear`." #: ../Doc/c-api/gcsupport.rst:24 msgid ":c:macro:`Py_TPFLAGS_HAVE_GC`" -msgstr "" +msgstr ":c:macro:`Py_TPFLAGS_HAVE_GC`" #: ../Doc/c-api/gcsupport.rst:22 msgid "" @@ -76,13 +76,12 @@ msgstr "" "Los constructores para tipos de contenedores deben cumplir con dos reglas:" #: ../Doc/c-api/gcsupport.rst:28 -#, fuzzy msgid "" "The memory for the object must be allocated using :c:macro:`PyObject_GC_New` " "or :c:macro:`PyObject_GC_NewVar`." msgstr "" -"La memoria para el objeto debe asignarse usando :c:func:`PyObject_GC_New` o :" -"c:func:`PyObject_GC_NewVar`." +"La memoria para el objeto debe asignarse usando :c:macro:`PyObject_GC_New` " +"o :c:macro:`PyObject_GC_NewVar`." #: ../Doc/c-api/gcsupport.rst:31 msgid "" @@ -126,7 +125,6 @@ msgstr "" "de su subclase o subclases." #: ../Doc/c-api/gcsupport.rst:47 -#, fuzzy msgid "" "When calling :c:func:`PyType_Ready` or some of the APIs that indirectly call " "it like :c:func:`PyType_FromSpecWithBases` or :c:func:`PyType_FromSpec` the " @@ -140,27 +138,25 @@ msgstr "" "lo llaman como :c:func:`PyType_FromSpecWithBases` o :c:func:" "`PyType_FromSpec` el intérprete automáticamente llenara los campos :c:member:" "`~PyTypeObject.tp_flags`, :c:member:`~PyTypeObject.tp_traverse` y :c:member:" -"`~PyTypeObject.tp_clear` si el tipo si el tipo hereda de una clase que " -"implementa el protocolo del recolector de basura y la clase secundaria *no* " -"incluye el *flag* :const:`Py_TPFLAGS_HAVE_GC`." +"`~PyTypeObject.tp_clear` si el tipo hereda de una clase que implementa el " +"protocolo del recolector de basura y la clase secundaria *no* incluye el " +"*flag* :c:macro:`Py_TPFLAGS_HAVE_GC`." #: ../Doc/c-api/gcsupport.rst:57 -#, fuzzy msgid "" "Analogous to :c:macro:`PyObject_New` but for container objects with the :c:" "macro:`Py_TPFLAGS_HAVE_GC` flag set." msgstr "" -"Análogo a :c:func:`PyObject_New` pero para objetos de contenedor con el " -"*flag* :const:`Py_TPFLAGS_HAVE_GC` establecido." +"Análogo a :c:macro:`PyObject_New` pero para objetos de contenedor con el " +"*flag* :c:macro:`Py_TPFLAGS_HAVE_GC` establecido." #: ../Doc/c-api/gcsupport.rst:62 -#, fuzzy msgid "" "Analogous to :c:macro:`PyObject_NewVar` but for container objects with the :" "c:macro:`Py_TPFLAGS_HAVE_GC` flag set." msgstr "" -"Análogo a :c:func:`PyObject_NewVar` pero para objetos de contenedor con el " -"*flag* :const:`Py_TPFLAGS_HAVE_GC` establecido." +"Análogo a :c:macro:`PyObject_NewVar` pero para objetos de contenedor con el " +"*flag* :c:macro:`Py_TPFLAGS_HAVE_GC` establecido." #: ../Doc/c-api/gcsupport.rst:67 msgid "" @@ -169,12 +165,18 @@ msgid "" "The allocated memory is initialized to zeros, except for the :c:type:`Python " "object header `." msgstr "" +"Análogo a :c:macro:`PyObject_GC_New` pero asigna *extra_size* bytes al " +"final del objeto (en el desplazamiento :c:member:`~PyTypeObject." +"tp_basicsize`). La memoria asignada se inicializa a ceros, excepto para el :" +"c:type:`encabezado del objeto Python `." #: ../Doc/c-api/gcsupport.rst:73 msgid "" "The extra data will be deallocated with the object, but otherwise it is not " "managed by Python." msgstr "" +"Los datos extras se desasignarán con el objeto, pero por lo demás no se " +"gestionan por Python." #: ../Doc/c-api/gcsupport.rst:77 msgid "" @@ -183,23 +185,28 @@ msgid "" "number of fields, prefer using :c:type:`PyVarObject` and :c:member:" "`~PyTypeObject.tp_itemsize` instead." msgstr "" +"La función está marcada como inestable porque aún no se ha decidido el " +"mecanismo final para reservar datos extra después de una instancia. Para " +"asignar un número variable de campos, se recomienda usar en su lugar :c:type:" +"`PyVarObject` y :c:member:`~PyTypeObject.tp_itemsize`." #: ../Doc/c-api/gcsupport.rst:88 -#, fuzzy msgid "" "Resize an object allocated by :c:macro:`PyObject_NewVar`. Returns the " "resized object of type ``TYPE*`` (refers to any C type) or ``NULL`` on " "failure." msgstr "" -"Cambia el tamaño de un objeto asignado por :c:func:`PyObject_NewVar`. " -"Retorna el objeto redimensionado o ``NULL`` en caso de falla. *op* aún no " -"debe ser rastreado por el recolector de basura." +"Cambia el tamaño de un objeto asignado por :c:macro:`PyObject_NewVar`. " +"Retorna el objeto redimensionado de tipo ``TYPE*`` (se refiere a cualquier " +"tipo de C) o ``NULL`` en caso de falla." #: ../Doc/c-api/gcsupport.rst:92 msgid "" "*op* must be of type :c:expr:`PyVarObject *` and must not be tracked by the " "collector yet. *newsize* must be of type :c:type:`Py_ssize_t`." msgstr "" +"*op* debe ser de tipo :c:expr:`PyVarObject *` y aún no debe ser rastreado " +"por el recolector. *newsize* debe ser de tipo :c:type:`Py_ssize_t`." #: ../Doc/c-api/gcsupport.rst:99 msgid "" @@ -257,13 +264,12 @@ msgid "This is analogous to the Python function :func:`gc.is_finalized`." msgstr "Esto es análogo a la función de Python :func:`gc.is_finalized`." #: ../Doc/c-api/gcsupport.rst:136 -#, fuzzy msgid "" "Releases memory allocated to an object using :c:macro:`PyObject_GC_New` or :" "c:macro:`PyObject_GC_NewVar`." msgstr "" -"Libera memoria asignada a un objeto usando :c:func:`PyObject_GC_New` o :c:" -"func:`PyObject_GC_NewVar`." +"Libera memoria asignada a un objeto usando :c:macro:`PyObject_GC_New` o :c:" +"macro:`PyObject_GC_NewVar`." #: ../Doc/c-api/gcsupport.rst:142 msgid "" @@ -283,13 +289,12 @@ msgstr "" "`~PyTypeObject.tp_traverse` no sea válido." #: ../Doc/c-api/gcsupport.rst:151 -#, fuzzy msgid "" "The :c:func:`!_PyObject_GC_TRACK` and :c:func:`!_PyObject_GC_UNTRACK` macros " "have been removed from the public C API." msgstr "" -"Los macros :c:func:`_PyObject_GC_TRACK` y :c:func:`_PyObject_GC_UNTRACK` se " -"han eliminado de la API pública de C." +"Los macros :c:func:`!_PyObject_GC_TRACK` y :c:func:`!_PyObject_GC_UNTRACK` " +"se han eliminado de la API pública de C." #: ../Doc/c-api/gcsupport.rst:154 msgid "" @@ -372,6 +377,13 @@ msgid "" " return 0;\n" "}" msgstr "" +"static int\n" +"my_traverse(Noddy *self, visitproc visit, void *arg)\n" +"{\n" +" Py_VISIT(self->foo);\n" +" Py_VISIT(self->bar);\n" +" return 0;\n" +"}" #: ../Doc/c-api/gcsupport.rst:198 msgid "" @@ -456,30 +468,32 @@ msgstr "" "Retorna el estado actual, 0 para deshabilitado y 1 para habilitado." #: ../Doc/c-api/gcsupport.rst:256 -#, fuzzy msgid "Querying Garbage Collector State" -msgstr "Controlar el estado del recolector de basura" +msgstr "Consultar el estado del recolector de basura" #: ../Doc/c-api/gcsupport.rst:258 -#, fuzzy msgid "" "The C-API provides the following interface for querying information about " "the garbage collector." msgstr "" -"La C-API proporciona las siguientes funciones para controlar las ejecuciones " -"de recolección de basura." +"La C-API proporciona la siguiente interfaz para consultar información sobre " +"el recolector de basura." #: ../Doc/c-api/gcsupport.rst:263 msgid "" "Run supplied *callback* on all live GC-capable objects. *arg* is passed " "through to all invocations of *callback*." msgstr "" +"Ejecuta la *callback* suministrada en todos los objetos activos con " +"capacidad para GC. *arg* se pasa a todas las invocaciones de *callback*." #: ../Doc/c-api/gcsupport.rst:267 msgid "" "If new objects are (de)allocated by the callback it is undefined if they " "will be visited." msgstr "" +"Si la devolución de llamada (des)asigna nuevos objetos, no está definido si " +"serán visitados." #: ../Doc/c-api/gcsupport.rst:270 msgid "" @@ -487,6 +501,10 @@ msgid "" "collection in the callback may lead to undefined behaviour e.g. visiting the " "same objects multiple times or not at all." msgstr "" +"La recolección de basura está deshabilitada durante la operación. Ejecutar " +"una recolección explícitamente en la devolución de llamada puede provocar un " +"comportamiento indefinido, por ejemplo, visitar los mismos objetos varias " +"veces o no visitarlos en absoluto." #: ../Doc/c-api/gcsupport.rst:278 msgid "" @@ -496,3 +514,9 @@ msgid "" "``1`` to stop iteration. Other return values are reserved for now so " "behavior on returning anything else is undefined." msgstr "" +"Tipo de la función de visitante que se pasará a :c:func:" +"`PyUnstable_GC_VisitObjects`. *arg* es el mismo que el *arg* pasado a " +"``PyUnstable_GC_VisitObjects``. Retorna ``0`` para continuar la iteración, " +"retorna ``1`` para detener la iteración. Los demás valores de retorno se " +"reservan por ahora, por lo que el comportamiento al retornar cualquier otro " +"valor no está definido." From 8c4a2258ff0359e0409faccb4429636bf17a7b49 Mon Sep 17 00:00:00 2001 From: Joseph Salgado <49181840+xooseph@users.noreply.github.com> Date: Mon, 13 Oct 2025 16:26:59 -0600 Subject: [PATCH 55/78] Translate `c-api/call.po` (#3422) Closes #3238 --------- Co-authored-by: rtobar --- c-api/call.po | 82 +++++++++++++++++++++++++-------------------------- 1 file changed, 40 insertions(+), 42 deletions(-) diff --git a/c-api/call.po b/c-api/call.po index b85e126d4d..02cf7974b8 100644 --- a/c-api/call.po +++ b/c-api/call.po @@ -9,15 +9,16 @@ msgstr "" "Project-Id-Version: Python en Español 3.9\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: 2021-12-09 10:27+0800\n" +"PO-Revision-Date: 2025-10-13 01:01-0600\n" "Last-Translator: Rodrigo Tobar \n" -"Language: es\n" "Language-Team: \n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\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.16.0\n" +"X-Generator: Poedit 3.7\n" #: ../Doc/c-api/call.rst:6 msgid "Call Protocol" @@ -45,6 +46,7 @@ msgstr "" msgid "" "PyObject *tp_call(PyObject *callable, PyObject *args, PyObject *kwargs);" msgstr "" +"PyObject *tp_call(PyObject *callable, PyObject *args, PyObject *kwargs);" #: ../Doc/c-api/call.rst:19 msgid "" @@ -69,13 +71,12 @@ msgstr "" "manera." #: ../Doc/c-api/call.rst:29 -#, fuzzy msgid "" "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 " -"`." +"Para llamar a un objeto, use :c:func:`PyObject_Call` u otra :ref:`llamada a " +"la API `." #: ../Doc/c-api/call.rst:36 msgid "The Vectorcall Protocol" @@ -127,6 +128,12 @@ msgid "" "versions, vectorcall should only be used with :c:macro:`immutable " "` or static types." msgstr "" +"Ahora el indicador :c:macro:`Py_TPFLAGS_HAVE_VECTORCALL` se elimina de una " +"clase cuando se reasigna el método de la clase :py:meth:`~object.__call__`. " +"(Esto configura internamente solo :c:member:`~PyTypeObject.tp_call` y, por " +"lo tanto, puede hacer que se comporte de forma diferente a la función " +"vectorcall.) En versiones anteriores de Python, vectorcall solo debería " +"usarse con tipos :c:macro:`immutables ` o estáticos." #: ../Doc/c-api/call.rst:69 msgid "" @@ -141,7 +148,6 @@ msgstr "" "tiene sentido implementar vectorcall." #: ../Doc/c-api/call.rst:74 -#, fuzzy msgid "" "Classes can implement the vectorcall protocol by enabling the :c:macro:" "`Py_TPFLAGS_HAVE_VECTORCALL` flag and setting :c:member:`~PyTypeObject." @@ -150,7 +156,7 @@ msgid "" "signature:" msgstr "" "Las clases pueden implementar el protocolo vectorcall habilitando el " -"indicador :const:`Py_TPFLAGS_HAVE_VECTORCALL` y la configuración :c:member:" +"indicador :c:macro:`Py_TPFLAGS_HAVE_VECTORCALL` y la configuración :c:member:" "`~PyTypeObject.tp_vectorcall_offset` al desplazamiento dentro de la " "estructura del objeto donde aparece un *vectorcallfunc*. Este es un puntero " "a una función con la siguiente firma:" @@ -179,13 +185,13 @@ msgid "*nargsf* is the number of positional arguments plus possibly the" msgstr "*nargsf* es el número de argumentos posicionales más posiblemente el" #: ../Doc/c-api/call.rst:87 -#, fuzzy msgid "" ":c:macro:`PY_VECTORCALL_ARGUMENTS_OFFSET` flag. To get the actual number of " "positional arguments from *nargsf*, use :c:func:`PyVectorcall_NARGS`." msgstr "" -"flag :const:`PY_VECTORCALL_ARGUMENTS_OFFSET`. Para obtener el número real de " -"argumentos posicionales de *nargsf*, use :c:func:`PyVectorcall_NARGS`." +"indicador :c:macro:`PY_VECTORCALL_ARGUMENTS_OFFSET`. Para obtener el número " +"real de argumentos posicionales de *nargsf*, use :c:func:" +"`PyVectorcall_NARGS`." #: ../Doc/c-api/call.rst:94 msgid "*kwnames* is a tuple containing the names of the keyword arguments;" @@ -210,7 +216,7 @@ msgid "" "argument 1 (not 0) in the allocated vector. The callee must restore the " "value of ``args[-1]`` before returning." msgstr "" -"Si este flag se establece en un argumento vectorcall *nargsf*, el " +"Si este indicador se establece en un argumento vectorcall *nargsf*, el " "destinatario de la llamada puede cambiar temporalmente ``args[-1]``. En " "otras palabras, *args* apunta al argumento 1 (no 0) en el vector asignado. " "El destinatario de la llamada debe restaurar el valor de ``args[-1]`` antes " @@ -221,11 +227,10 @@ msgid "" "For :c:func:`PyObject_VectorcallMethod`, this flag means instead that " "``args[0]`` may be changed." msgstr "" -"Para :c:func:`PyObject_VectorcallMethod`, este flag significa en cambio que " -"``args[0]`` puede cambiarse." +"Para :c:func:`PyObject_VectorcallMethod`, este indicador significa en cambio " +"que ``args[0]`` puede cambiarse." #: ../Doc/c-api/call.rst:106 -#, fuzzy msgid "" "Whenever they can do so cheaply (without additional allocation), callers are " "encouraged to use :c:macro:`PY_VECTORCALL_ARGUMENTS_OFFSET`. Doing so will " @@ -233,7 +238,7 @@ msgid "" "include a prepended *self* argument) very efficiently." msgstr "" "Siempre que puedan hacerlo de forma económica (sin asignación adicional), se " -"anima a las personas que llaman a utilizar :const:" +"anima a las personas que llaman a utilizar :c:macro:" "`PY_VECTORCALL_ARGUMENTS_OFFSET`. Si lo hace, permitirá que las personas que " "llaman, como los métodos enlazados, realicen sus llamadas posteriores (que " "incluyen un argumento *self* antepuesto) de manera muy eficiente." @@ -286,7 +291,7 @@ msgstr "" #: ../Doc/c-api/call.rst:140 msgid "(Py_ssize_t)(nargsf & ~PY_VECTORCALL_ARGUMENTS_OFFSET)" -msgstr "" +msgstr "(Py_ssize_t)(nargsf & ~PY_VECTORCALL_ARGUMENTS_OFFSET)" #: ../Doc/c-api/call.rst:142 msgid "" @@ -325,7 +330,6 @@ msgstr "" "posicionales y de palabras clave dados en una tupla y dict, respectivamente." #: ../Doc/c-api/call.rst:164 -#, fuzzy 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``. " @@ -334,8 +338,8 @@ msgid "" msgstr "" "Esta es una función especializada, destinada a colocarse en el slot :c:" "member:`~PyTypeObject.tp_call` o usarse en una implementación de " -"``tp_call``. No comprueba el flag :const:`Py_TPFLAGS_HAVE_VECTORCALL` y no " -"vuelve a ``tp_call``." +"``tp_call``. No comprueba el indicador :c:macro:`Py_TPFLAGS_HAVE_VECTORCALL` " +"y no vuelve a ``tp_call``." #: ../Doc/c-api/call.rst:175 msgid "Object Calling API" @@ -567,12 +571,11 @@ msgstr "" "ser *NULL*, lo que indica que no se proporcionan argumentos." #: ../Doc/c-api/call.rst:276 -#, fuzzy msgid "" "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:" +"Tenga en cuenta que si solo pasa :c:expr:`PyObject *` args, :c:func:" "`PyObject_CallFunctionObjArgs` es una alternativa más rápida." #: ../Doc/c-api/call.rst:279 @@ -603,12 +606,11 @@ msgstr "" "arg2, ...)``." #: ../Doc/c-api/call.rst:297 -#, fuzzy msgid "" "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:" +"Tenga en cuenta que si solo pasa :c:expr:`PyObject *` args, :c:func:" "`PyObject_CallMethodObjArgs` es una alternativa más rápida." #: ../Doc/c-api/call.rst:300 @@ -616,14 +618,13 @@ 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:306 -#, fuzzy msgid "" "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 "" -"Llame a un objeto de Python invocable *callable*, con un número variable de " -"argumentos :c:type:`PyObject *`. Los argumentos se proporcionan como un " +"Llama a un objeto de Python invocable *callable*, con un número variable de " +"argumentos :c:expr:`PyObject *`. Los argumentos se proporcionan como un " "número variable de parámetros seguidos de *NULL*." #: ../Doc/c-api/call.rst:313 @@ -635,7 +636,6 @@ msgstr "" "arg2, ...)``." #: ../Doc/c-api/call.rst:319 -#, 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 " @@ -644,7 +644,7 @@ msgid "" msgstr "" "Llama a un método del objeto de Python *obj*, donde el nombre del método se " "proporciona como un objeto de cadena de caracteres de Python en *name*. Se " -"llama con un número variable de argumentos :c:type:`PyObject *`. Los " +"llama con un número variable de argumentos :c:expr:`PyObject *`. Los " "argumentos se proporcionan como un número variable de parámetros seguidos de " "*NULL*." @@ -662,7 +662,7 @@ msgid "" "*arg*, where the name of the method is given as a Python string object in " "*name*." msgstr "" -"Llame a un método del objeto de Python *obj* con un único argumento " +"Llama a un método del objeto de Python *obj* con un único argumento " "posicional *arg*, donde el nombre del método se proporciona como un objeto " "de cadena de caracteres de Python en *name*." @@ -701,7 +701,6 @@ msgstr "" "posicionales." #: ../Doc/c-api/call.rst:379 -#, fuzzy 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 " @@ -713,23 +712,22 @@ msgid "" "`PyObject_Vectorcall`." msgstr "" "Llama a un método usando la convención de llamada vectorcall. El nombre del " -"método se proporciona como una cadena de Python *name*. El objeto cuyo " -"método se llama es *args[0]*, y el arreglo *args* que comienza en *args [1]* " -"representa los argumentos de la llamada. Debe haber al menos un argumento " -"posicional. *nargsf* es el número de argumentos posicionales que incluyen " -"*args [0]*, más :const:`PY_VECTORCALL_ARGUMENTS_OFFSET` si el valor de " -"``args[0]`` puede cambiarse temporalmente. Los argumentos de palabras clave " -"se pueden pasar como en :c:func:`PyObject_Vectorcall`." +"método se proporciona como una cadena de caracteres de Python *name*. El " +"objeto cuyo método se llama es *args[0]*, y el arreglo *args* que comienza " +"en *args [1]* representa los argumentos de la llamada. Debe haber al menos " +"un argumento posicional. *nargsf* es el número de argumentos posicionales " +"que incluyen *args [0]*, más :c:macro:`PY_VECTORCALL_ARGUMENTS_OFFSET` si el " +"valor de ``args[0]`` puede cambiarse temporalmente. Los argumentos de " +"palabras clave se pueden pasar como en :c:func:`PyObject_Vectorcall`." #: ../Doc/c-api/call.rst:388 -#, fuzzy msgid "" "If the object has the :c:macro:`Py_TPFLAGS_METHOD_DESCRIPTOR` feature, this " "will call the unbound method object with the full *args* vector as arguments." msgstr "" -"Si el objeto tiene la característica :const:`Py_TPFLAGS_METHOD_DESCRIPTOR`, " -"esto llamará al objeto de método independiente con el vector *args* completo " -"como argumentos." +"Si el objeto tiene la característica :c:macro:" +"`Py_TPFLAGS_METHOD_DESCRIPTOR`, esto llamará al objeto de método " +"independiente con el vector *args* completo como argumentos." #: ../Doc/c-api/call.rst:399 msgid "Call Support API" From fa544fe9f3ca26469b89913db1e532e538dfbdd5 Mon Sep 17 00:00:00 2001 From: Joseph Salgado <49181840+xooseph@users.noreply.github.com> Date: Tue, 14 Oct 2025 00:39:49 -0600 Subject: [PATCH 56/78] Translate `c-api/bytes.po` (#3423) Closes #3241 --------- Co-authored-by: rtobar --- c-api/bytes.po | 66 +++++++++++++++++------------------- dictionaries/c-api_bytes.txt | 1 + 2 files changed, 32 insertions(+), 35 deletions(-) create mode 100644 dictionaries/c-api_bytes.txt diff --git a/c-api/bytes.po b/c-api/bytes.po index f0501d4743..6af47b82a9 100644 --- a/c-api/bytes.po +++ b/c-api/bytes.po @@ -11,15 +11,16 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: 2022-11-01 11:48+0100\n" +"PO-Revision-Date: 2025-10-13 01:23-0600\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" +"Language: es\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.16.0\n" +"X-Generator: Poedit 3.7\n" #: ../Doc/c-api/bytes.rst:6 msgid "Bytes Objects" @@ -113,7 +114,7 @@ msgstr "Comentario" #: ../Doc/c-api/bytes.rst:67 #, python-format msgid "``%%``" -msgstr "" +msgstr "``%%``" #: ../Doc/c-api/bytes.rst:67 msgid "*n/a*" @@ -122,12 +123,12 @@ msgstr "*n/a*" #: ../Doc/c-api/bytes.rst:67 #, python-format msgid "The literal % character." -msgstr "El carácter literal *%*." +msgstr "El carácter literal %." #: ../Doc/c-api/bytes.rst:69 #, python-format msgid "``%c``" -msgstr "" +msgstr "``%c``" #: ../Doc/c-api/bytes.rst:69 ../Doc/c-api/bytes.rst:72 #: ../Doc/c-api/bytes.rst:90 ../Doc/c-api/bytes.rst:93 @@ -141,7 +142,7 @@ msgstr "Un solo byte, representado como un C int." #: ../Doc/c-api/bytes.rst:72 #, python-format msgid "``%d``" -msgstr "" +msgstr "``%d``" #: ../Doc/c-api/bytes.rst:72 #, python-format @@ -151,7 +152,7 @@ msgstr "Equivalente a ``printf(\"%d\")``. [1]_" #: ../Doc/c-api/bytes.rst:75 #, python-format msgid "``%u``" -msgstr "" +msgstr "``%u``" #: ../Doc/c-api/bytes.rst:75 msgid "unsigned int" @@ -165,7 +166,7 @@ msgstr "Equivalente a ``printf(\"%u\")``. [1]_" #: ../Doc/c-api/bytes.rst:78 #, python-format msgid "``%ld``" -msgstr "" +msgstr "``%ld``" #: ../Doc/c-api/bytes.rst:78 msgid "long" @@ -179,7 +180,7 @@ msgstr "Equivalente a ``printf(\"%ld\")``. [1]_" #: ../Doc/c-api/bytes.rst:81 #, python-format msgid "``%lu``" -msgstr "" +msgstr "``%lu``" #: ../Doc/c-api/bytes.rst:81 msgid "unsigned long" @@ -192,7 +193,7 @@ msgstr "Equivalente a ``printf(\"%lu\")``. [1]_" #: ../Doc/c-api/bytes.rst:84 msgid "``%zd``" -msgstr "" +msgstr "``%zd``" #: ../Doc/c-api/bytes.rst:84 msgid ":c:type:`\\ Py_ssize_t`" @@ -204,7 +205,7 @@ msgstr "Equivalente a ``printf(\"%zd\")``. [1]_" #: ../Doc/c-api/bytes.rst:87 msgid "``%zu``" -msgstr "" +msgstr "``%zu``" #: ../Doc/c-api/bytes.rst:87 msgid "size_t" @@ -217,7 +218,7 @@ msgstr "Equivalente a ``printf(\"%zu\")``. [1]_" #: ../Doc/c-api/bytes.rst:90 #, python-format msgid "``%i``" -msgstr "" +msgstr "``%i``" #: ../Doc/c-api/bytes.rst:90 #, python-format @@ -227,7 +228,7 @@ msgstr "Equivalente a ``printf(\"%i\")``. [1]_" #: ../Doc/c-api/bytes.rst:93 #, python-format msgid "``%x``" -msgstr "" +msgstr "``%x``" #: ../Doc/c-api/bytes.rst:93 #, python-format @@ -237,7 +238,7 @@ msgstr "Equivalente a ``printf(\"%x\")``. [1]_" #: ../Doc/c-api/bytes.rst:96 #, python-format msgid "``%s``" -msgstr "" +msgstr "``%s``" #: ../Doc/c-api/bytes.rst:96 msgid "const char\\*" @@ -249,7 +250,7 @@ msgstr "Un arreglo de caracteres C terminados en nulo." #: ../Doc/c-api/bytes.rst:99 msgid "``%p``" -msgstr "" +msgstr "``%p``" #: ../Doc/c-api/bytes.rst:99 msgid "const void\\*" @@ -331,13 +332,12 @@ msgstr "" "Forma macro de :c:func:`PyBytes_AsString` pero sin verificación de errores." #: ../Doc/c-api/bytes.rst:156 -#, fuzzy msgid "" "Return the null-terminated contents of the object *obj* through the output " "variables *buffer* and *length*. Returns ``0`` on success." msgstr "" "Retorna los contenidos terminados en nulo del objeto *obj* a través de las " -"variables de salida *buffer* y *length*." +"variables de salida *buffer* y *length*. Retorna ``0`` en caso de éxito." #: ../Doc/c-api/bytes.rst:160 msgid "" @@ -389,18 +389,16 @@ msgstr "" "establecerá la excepción apropiada." #: ../Doc/c-api/bytes.rst:187 -#, fuzzy msgid "" "Create a new bytes object in *\\*bytes* containing the contents of *newpart* " "appended to *bytes*. This version releases the :term:`strong reference` to " "*newpart* (i.e. decrements its reference count)." msgstr "" "Crea un nuevo objeto de bytes en *\\*bytes* que contenga el contenido de " -"*newpart* agregado a *bytes*. Esta versión disminuye el recuento de " -"referencias de *newpart*." +"*newpart* agregado a *bytes*. Esta versión libera la :term:`strong " +"reference` a *newpart* (es decir, disminuye su recuento de referencias)." #: ../Doc/c-api/bytes.rst:194 -#, fuzzy msgid "" "Resize a bytes object. *newsize* will be the new length of the bytes object. " "You can think of it as creating a new bytes object and destroying the old " @@ -411,22 +409,20 @@ msgid "" "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\". " -"Solo use esto para construir un nuevo objeto bytes; no use esto si los bytes " -"ya pueden ser conocidos en otras partes del código. Es un error llamar a " -"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`` ." +"Redimensiona un objeto bytes. *newsize* será la nueva longitud del objeto " +"bytes. Se puede considerar como crear un nuevo objeto bytes y destruir el " +"anterior, solo que de forma más eficiente. Pasa la dirección de un objeto " +"bytes existente como lvalue (se puede escribir en él) y el nuevo tamaño " +"deseado. En caso de éxito, *\\*bytes* contiene el objeto bytes " +"redimensionado y se retorna ``0``; la dirección en *\\*bytes* puede diferir " +"de su valor de entrada. Si la reasignación falla, el objeto bytes original " +"en *\\*bytes* se desasigna, *\\*bytes* se establece en ``NULL``, se " +"establece :exc:`MemoryError` y se retorna ``-1``." #: ../Doc/c-api/bytes.rst:11 -#, fuzzy msgid "object" -msgstr "Objetos bytes" +msgstr "object" #: ../Doc/c-api/bytes.rst:11 msgid "bytes" -msgstr "" +msgstr "bytes" diff --git a/dictionaries/c-api_bytes.txt b/dictionaries/c-api_bytes.txt new file mode 100644 index 0000000000..406d3ca16d --- /dev/null +++ b/dictionaries/c-api_bytes.txt @@ -0,0 +1 @@ +lvalue From e99246784983df5d60e1a44aca7bade6e8da440f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cristi=C3=A1n=20Maureira-Fredes?= Date: Tue, 14 Oct 2025 11:52:55 +0200 Subject: [PATCH 57/78] Translate whatsnew/2.6 (#3314) Closes #3185 --- whatsnew/2.6.po | 1078 +++++++++++++++++++++++++++++++++++------------ 1 file changed, 820 insertions(+), 258 deletions(-) diff --git a/whatsnew/2.6.po b/whatsnew/2.6.po index 852739d146..186b888cec 100644 --- a/whatsnew/2.6.po +++ b/whatsnew/2.6.po @@ -13,12 +13,12 @@ msgstr "" "POT-Creation-Date: 2024-11-21 16:38-0300\n" "PO-Revision-Date: 2024-01-21 18:29+0100\n" "Last-Translator: \n" -"Language: es\n" "Language-Team: python-doc-es\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\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.16.0\n" #: ../Doc/whatsnew/2.6.rst:5 @@ -170,7 +170,6 @@ msgstr "" "sea necesario." #: ../Doc/whatsnew/2.6.rst:117 -#, fuzzy msgid "" "A new command-line switch, :option:`!-3`, enables warnings about features " "that will be removed in Python 3.0. You can run code with this switch to " @@ -181,22 +180,22 @@ msgstr "" "Un nuevo modificador de línea de comandos, :option:`!-3`, habilita " "advertencias sobre características que se eliminarán en Python 3.0. Puede " "ejecutar código con este modificador para ver cuánto trabajo será necesario " -"para migrar el código a 3.0. El valor de este modificador está disponible " -"para el código Python como la variable booleana :data:`sys.py3kwarning`, y " -"para el código de extensión C como :c:data:`Py_Py3kWarningFlag`." +"para trasladar el código a la versión 3.0. El valor de este modificador está " +"disponible para el código Python como la variable booleana :data:`sys." +"py3kwarning` y para el código de extensión C como :c:data:`!" +"Py_Py3kWarningFlag`." #: ../Doc/whatsnew/2.6.rst:126 -#, fuzzy msgid "" "The 3\\ *xxx* series of PEPs, which contains proposals for Python 3.0. :pep:" "`3000` describes the development process for Python 3.0. Start with :pep:" "`3100` that describes the general goals for Python 3.0, and then explore the " "higher-numbered PEPs that propose specific features." msgstr "" -"Las series 3xxx de PEP, que contienen propuestas para Python 3.0. :pep:" -"`3000` describe el proceso de desarrollo de Python 3.0. Empiece con :pep:" -"`3100` que describe los objetivos generales de Python 3.0, y luego explore " -"los PEPS con números más altos que proponen características específicas." +"La serie 3\\ *xxx* de PEP, que contiene propuestas para Python 3.0. :pep:" +"`3000` describe el proceso de desarrollo para Python 3.0. Comience con :pep:" +"`3100`, que describe los objetivos generales para Python 3.0, y luego " +"explore los PEP de mayor número que proponen características específicas." #: ../Doc/whatsnew/2.6.rst:134 msgid "Changes to the Development Process" @@ -474,42 +473,41 @@ msgid "" "with expression [as variable]:\n" " with-block" msgstr "" +"with expression [as variable]:\n" +" with-block" #: ../Doc/whatsnew/2.6.rst:269 -#, fuzzy msgid "" "The expression is evaluated, and it should result in an object that supports " "the context management protocol (that is, has :meth:`~object.__enter__` and :" "meth:`~object.__exit__` methods)." msgstr "" -"La expresión se evalúa y debe dar como resultado un objeto que admita el " -"protocolo de administración de contexto (es decir, tiene los métodos :meth:" -"`__enter__` y :meth:`__exit__`)." +"Se evalúa la expresión y debería dar como resultado un objeto que admita el " +"protocolo de gestión de contexto (es decir, que tenga los métodos :meth:" +"`~object.__enter__` y :meth:`~object.__exit__`)." #: ../Doc/whatsnew/2.6.rst:273 -#, fuzzy msgid "" "The object's :meth:`~object.__enter__` is called before *with-block* is " "executed and therefore can run set-up code. It also may return a value that " "is bound to the name *variable*, if given. (Note carefully that *variable* " "is *not* assigned the result of *expression*.)" msgstr "" -"El objeto :meth:`__enter__` se llama antes de que se ejecute *with-block* y, " -"por lo tanto, se puede ejecutar código de configuración. También, si se " -"proporciona, puede retornar un valor que esté vinculado al nombre " -"*variable*. (Tenga en cuenta que a la *variable* *no* se le asigna el " -"resultado de la *expression*)." +"El objeto :meth:`~object.__enter__` se llama antes de que se ejecute *with-" +"block* y, por lo tanto, puede ejecutar el código de configuración. También " +"puede devolver un valor vinculado al nombre *variable*, si se proporciona. " +"(Tenga en cuenta que *variable* es *not* al que se le asigna el resultado de " +"*expression*)." #: ../Doc/whatsnew/2.6.rst:278 -#, fuzzy msgid "" "After execution of the *with-block* is finished, the object's :meth:`~object." "__exit__` method is called, even if the block raised an exception, and can " "therefore run clean-up code." msgstr "" "Una vez finalizada la ejecución de *with-block*, se llama al método :meth:" -"`__exit__` del objeto, incluso si el bloque generó una excepción y, por lo " -"tanto, puede ejecutar código de limpieza." +"`~object.__exit__` del objeto, incluso si el bloque generó una excepción y, " +"por lo tanto, puede ejecutar código de limpieza." #: ../Doc/whatsnew/2.6.rst:282 msgid "" @@ -528,6 +526,10 @@ msgid "" " print line\n" " ... more processing code ..." msgstr "" +"with open('/etc/passwd', 'r') as f:\n" +" for line in f:\n" +" print line\n" +" ... more processing code ..." #: ../Doc/whatsnew/2.6.rst:290 msgid "" @@ -540,13 +542,12 @@ msgstr "" "una excepción en la mitad del bloque." #: ../Doc/whatsnew/2.6.rst:296 -#, fuzzy msgid "" "In this case, *f* is the same object created by :func:`open`, because :meth:" "`~object.__enter__` returns *self*." msgstr "" "En este caso, *f* es el mismo objeto creado por :func:`open`, porque :meth:" -"`file.__enter__` retorna *self*." +"`~object.__enter__` retorna *self*." #: ../Doc/whatsnew/2.6.rst:299 msgid "" @@ -563,6 +564,10 @@ msgid "" " # Critical section of code\n" " ..." msgstr "" +"lock = threading.Lock()\n" +"with lock:\n" +" # Critical section of code\n" +" ..." #: ../Doc/whatsnew/2.6.rst:307 msgid "" @@ -595,6 +600,16 @@ msgid "" " # The original context is restored on exiting the block.\n" " print v.sqrt()" msgstr "" +"from decimal import Decimal, Context, localcontext\n" +"\n" +"# Displays with default precision of 28 digits\n" +"v = Decimal('578')\n" +"print v.sqrt()\n" +"\n" +"with localcontext(Context(prec=16)):\n" +" # All code in this block uses a precision of 16 digits.\n" +" # The original context is restored on exiting the block.\n" +" print v.sqrt()" #: ../Doc/whatsnew/2.6.rst:329 msgid "Writing Context Managers" @@ -620,7 +635,6 @@ msgid "A high-level explanation of the context management protocol is:" msgstr "Una explicación de alto nivel del protocolo de gestor de contexto es:" #: ../Doc/whatsnew/2.6.rst:339 -#, fuzzy msgid "" "The expression is evaluated and should result in an object called a " "\"context manager\". The context manager must have :meth:`~object." @@ -628,25 +642,23 @@ msgid "" msgstr "" "La expresión se evalúa y debería dar como resultado un objeto llamado " "\"gestor de contexto\". El gestor de contexto debe tener los métodos :meth:" -"`__enter__` y :meth:`__exit__`." +"`~object.__enter__` y :meth:`~object.__exit__`." #: ../Doc/whatsnew/2.6.rst:343 -#, fuzzy msgid "" "The context manager's :meth:`~object.__enter__` method is called. The value " "returned is assigned to *VAR*. If no ``as VAR`` clause is present, the " "value is simply discarded." msgstr "" -"Se llama al método :meth:`__enter__` del gestor de contexto. El valor " -"retornado se asigna a *VAR*. Si no hay una cláusula ``as VAR``, el valor " -"simplemente se descarta." +"Se llama al método :meth:`~object.__enter__` del gestor de contexto. El " +"valor retornado se asigna a *VAR*. Si no hay una cláusula ``as VAR``, el " +"valor simplemente se descarta." #: ../Doc/whatsnew/2.6.rst:347 msgid "The code in *BLOCK* is executed." msgstr "Se ejecuta el código en *BLOCK*." #: ../Doc/whatsnew/2.6.rst:349 -#, fuzzy msgid "" "If *BLOCK* raises an exception, the context manager's :meth:`~object." "__exit__` method is called with three arguments, the exception details " @@ -658,24 +670,23 @@ msgid "" "author of the code containing the ':keyword:`with`' statement will never " "realize anything went wrong." msgstr "" -"Si *BLOCK* lanza una excepción, se llama al método :meth:`__exit__` del " -"gestor de contexto con tres argumentos, los detalles de la excepción " -"(``type, value, traceback``, los mismos valores retornados por :func:`sys." -"exc_info`, que también puede ser ``None`` si no se produjo ninguna " -"excepción). El valor de retorno del método controla si se vuelve a generar " -"una excepción: cualquier valor *false* vuelve a lanzar la excepción, y " -"``True`` resultará en inhibirla. Rara vez querrá suprimir la excepción, " -"porque si lo hace, el autor del código que contenga la sentencia ':keyword:" -"`with`' nunca se dará cuenta de que algo salió mal." +"Si *BLOCK* genera una excepción, se llama al método :meth:`~object.__exit__` " +"del administrador de contexto con tres argumentos: los detalles de la " +"excepción (``type, value, traceback``, los mismos valores devueltos por :" +"func:`sys.exc_info`, que también pueden ser ``None`` si no se produjo " +"ninguna excepción). El valor de retorno del método controla si se vuelve a " +"generar una excepción: cualquier valor falso vuelve a generar la excepción y " +"``True`` provocará su supresión. Solo en raras ocasiones querrá suprimir la " +"excepción, porque si lo hace, el autor del código que contiene la " +"declaración ':keyword:`with`' nunca se dará cuenta de que algo salió mal." #: ../Doc/whatsnew/2.6.rst:358 -#, fuzzy msgid "" "If *BLOCK* didn't raise an exception, the :meth:`~object.__exit__` method " "is still called, but *type*, *value*, and *traceback* are all ``None``." msgstr "" -"Si *BLOCK* no lanzó una excepción, el método :meth:`__exit__` continúa " -"llamándose, pero *type*, *value* y *traceback* son todos ``None``." +"Si *BLOCK* no lanzó una excepción, el método :meth:`~object.__exit__` " +"continúa llamándose, pero *type*, *value* y *traceback* son todos ``None``." #: ../Doc/whatsnew/2.6.rst:361 msgid "" @@ -717,6 +728,11 @@ msgid "" " cursor.execute('delete from ...')\n" " # ... more operations ..." msgstr "" +"db_connection = DatabaseConnection()\n" +"with db_connection as cursor:\n" +" cursor.execute('insert into ...')\n" +" cursor.execute('delete from ...')\n" +" # ... more operations ..." #: ../Doc/whatsnew/2.6.rst:379 msgid "" @@ -739,9 +755,16 @@ msgid "" " def rollback(self):\n" " \"Rolls back current transaction\"" msgstr "" +"class DatabaseConnection:\n" +" # Database interface\n" +" def cursor(self):\n" +" \"Returns a cursor object and starts a new transaction\"\n" +" def commit(self):\n" +" \"Commits current transaction\"\n" +" def rollback(self):\n" +" \"Rolls back current transaction\"" #: ../Doc/whatsnew/2.6.rst:392 -#, fuzzy msgid "" "The :meth:`~object.__enter__` method is pretty easy, having only to start a " "new transaction. For this application the resulting cursor object would be " @@ -749,11 +772,11 @@ msgid "" "cursor`` to their ':keyword:`with`' statement to bind the cursor to a " "variable name. ::" msgstr "" -"El método :meth:`__enter__` es bastante fácil, ya que solo tiene que iniciar " -"una nueva transacción. Para esta aplicación, el objeto cursor resultante " -"sería un resultado útil, por lo que el método lo retornará. Luego, el " -"usuario puede agregar ``as cursor`` a su sentencia ':keyword:`with`' para " -"vincular el cursor a un nombre de variable. ::" +"El método :meth:`~object.__enter__` es bastante sencillo, ya que solo hay " +"que iniciar una nueva transacción. Para esta aplicación, el objeto cursor " +"resultante sería un resultado útil, por lo que el método lo devolverá. El " +"usuario puede entonces añadir ``as cursor`` a su declaración ':keyword:" +"`with`' para vincular el cursor a un nombre de variable. ::" #: ../Doc/whatsnew/2.6.rst:397 msgid "" @@ -764,19 +787,24 @@ msgid "" " cursor = self.cursor()\n" " return cursor" msgstr "" +"class DatabaseConnection:\n" +" ...\n" +" def __enter__(self):\n" +" # Code to start a new transaction\n" +" cursor = self.cursor()\n" +" return cursor" #: ../Doc/whatsnew/2.6.rst:404 -#, fuzzy msgid "" "The :meth:`~object.__exit__` method is the most complicated because it's " "where most of the work has to be done. The method has to check if an " "exception occurred. If there was no exception, the transaction is " "committed. The transaction is rolled back if there was an exception." msgstr "" -"El método :meth:`__exit__` es el más complicado porque es donde se debe " -"realizar la mayor parte del trabajo. El método debe verificar si ocurrió una " -"excepción. Si no hubo excepción, la transacción se confirma. La transacción " -"se revierte si hubo una excepción." +"El método :meth:`~object.__exit__` es el más complicado porque es donde se " +"debe realizar la mayor parte del trabajo. El método debe verificar si se " +"produjo una excepción. Si no hubo excepción, se confirma la transacción. Si " +"hubo una excepción, se revierte la transacción." #: ../Doc/whatsnew/2.6.rst:409 msgid "" @@ -804,6 +832,16 @@ msgid "" " self.rollback()\n" " # return False" msgstr "" +"class DatabaseConnection:\n" +" ...\n" +" def __exit__(self, type, value, tb):\n" +" if tb is None:\n" +" # No exception, so commit\n" +" self.commit()\n" +" else:\n" +" # Exception occurred, so rollback.\n" +" self.rollback()\n" +" # return False" #: ../Doc/whatsnew/2.6.rst:429 msgid "The contextlib module" @@ -818,7 +856,6 @@ msgstr "" "son útiles al escribir objetos para usar con la sentencia ':keyword:`with`'." #: ../Doc/whatsnew/2.6.rst:434 -#, fuzzy msgid "" "The decorator is called :func:`contextmanager`, and lets you write a single " "generator function instead of defining a new class. The generator should " @@ -830,14 +867,14 @@ msgid "" "method. Any exception raised in the block will be raised by the :keyword:`!" "yield` statement." msgstr "" -"El decorador se llama :func:`contextmanager`, y te permite escribir una " -"única función generadora en lugar de definir una clase nueva. El generador " -"debería producir exactamente un valor. El código hasta :keyword:`yield` se " -"ejecutará como el método :meth:`__enter__`, y el valor obtenido será el " -"valor de retorno del método que se vinculará a la variable en la clausula :" -"keyword:`!as` (si la hay) de la sentencia ':keyword:`with`'. El código " -"después de :keyword:`!yield` se ejecutará en el método :meth:`__exit__` . " -"Cualquier excepción lanzada en el bloque será generada por la sentencia :" +"El decorador se llama :func:`contextmanager` y le permite escribir una única " +"función generadora en lugar de definir una nueva clase. El generador debe " +"producir exactamente un valor. El código hasta :keyword:`yield` se ejecutará " +"como el método :meth:`~object.__enter__` y el valor producido será el valor " +"de retorno del método que se vinculará a la variable en la cláusula :keyword:" +"`!as` de la declaración ':keyword:`with`', si la hay. El código después de :" +"keyword:`!yield` se ejecutará en el método :meth:`~object.__exit__`. " +"Cualquier excepción generada en el bloque será generada por la declaración :" "keyword:`!yield`." #: ../Doc/whatsnew/2.6.rst:443 @@ -867,6 +904,22 @@ msgid "" "with db_transaction(db) as cursor:\n" " ..." msgstr "" +"from contextlib import contextmanager\n" +"\n" +"@contextmanager\n" +"def db_transaction(connection):\n" +" cursor = connection.cursor()\n" +" try:\n" +" yield cursor\n" +" except:\n" +" connection.rollback()\n" +" raise\n" +" else:\n" +" connection.commit()\n" +"\n" +"db = DatabaseConnection()\n" +"with db_transaction(db) as cursor:\n" +" ..." #: ../Doc/whatsnew/2.6.rst:463 msgid "" @@ -888,6 +941,9 @@ msgid "" "with nested (db_transaction(db), lock) as (cursor, locked):\n" " ..." msgstr "" +"lock = threading.Lock()\n" +"with nested (db_transaction(db), lock) as (cursor, locked):\n" +" ..." #: ../Doc/whatsnew/2.6.rst:472 msgid "" @@ -908,6 +964,12 @@ msgid "" " for line in f:\n" " sys.stdout.write(line)" msgstr "" +"importar urllib, sys\n" +"desde contextlib importar closing\n" +"\n" +"con closing(urllib.urlopen('http://www.yahoo.com')) como f:\n" +"para línea en f:\n" +"sys.stdout.write(line)" #: ../Doc/whatsnew/2.6.rst:490 msgid ":pep:`343` - The \"with\" statement" @@ -1124,6 +1186,35 @@ msgid "" " result = queue.get()\n" " print 'Factorial', N, '=', result" msgstr "" +"import time\n" +"from multiprocessing import Process, Queue\n" +"\n" +"\n" +"def factorial(queue, N):\n" +" \"Compute a factorial.\"\n" +" # If N is a multiple of 4, this function will take much longer.\n" +" if (N % 4) == 0:\n" +" time.sleep(.05 * N/4)\n" +"\n" +" # Calculate the result\n" +" fact = 1L\n" +" for i in range(1, N+1):\n" +" fact = fact * i\n" +"\n" +" # Put the result on the queue\n" +" queue.put(fact)\n" +"\n" +"if __name__ == '__main__':\n" +" queue = Queue()\n" +"\n" +" N = 5\n" +"\n" +" p = Process(target=factorial, args=(queue, N))\n" +" p.start()\n" +" p.join()\n" +"\n" +" result = queue.get()\n" +" print 'Factorial', N, '=', result" #: ../Doc/whatsnew/2.6.rst:614 msgid "" @@ -1171,6 +1262,15 @@ msgid "" "for v in result:\n" " print v" msgstr "" +"from multiprocessing import Pool\n" +"\n" +"def factorial(N, dictionary):\n" +" \"Compute a factorial.\"\n" +" ...\n" +"p = Pool(5)\n" +"result = p.map(factorial, range(1, 1000, 10))\n" +"for v in result:\n" +" print v" #: ../Doc/whatsnew/2.6.rst:640 msgid "This produces the following output::" @@ -1185,6 +1285,12 @@ msgid "" "33452526613163807108170062053440751665152000000000\n" "..." msgstr "" +"1\n" +"39916800\n" +"51090942171709440000\n" +"8222838654177922817725562880000000\n" +"33452526613163807108170062053440751665152000000000\n" +"..." #: ../Doc/whatsnew/2.6.rst:649 msgid "" @@ -1242,6 +1348,37 @@ msgid "" " for k, v in sorted(d.items()):\n" " print k, v" msgstr "" +"import time\n" +"from multiprocessing import Pool, Manager\n" +"\n" +"def factorial(N, dictionary):\n" +" \"Compute a factorial.\"\n" +" # Calculate the result\n" +" fact = 1L\n" +" for i in range(1, N+1):\n" +" fact = fact * i\n" +"\n" +" # Store result in dictionary\n" +" dictionary[N] = fact\n" +"\n" +"if __name__ == '__main__':\n" +" p = Pool(5)\n" +" mgr = Manager()\n" +" d = mgr.dict() # Create shared dictionary\n" +"\n" +" # Run tasks using the pool\n" +" for N in range(1, 1000, 10):\n" +" p.apply_async(factorial, (N, d))\n" +"\n" +" # Mark pool as closed -- no more tasks can be added.\n" +" p.close()\n" +"\n" +" # Wait for tasks to exit\n" +" p.join()\n" +"\n" +" # Output results\n" +" for k, v in sorted(d.items()):\n" +" print k, v" #: ../Doc/whatsnew/2.6.rst:693 msgid "This will produce the output::" @@ -1256,6 +1393,12 @@ msgid "" "41 33452526613163807108170062053440751665152000000000\n" "51 15511187532873822802242430164693032110632597200169861120000..." msgstr "" +"1 1\n" +"11 39916800\n" +"21 51090942171709440000\n" +"31 8222838654177922817725562880000000\n" +"41 33452526613163807108170062053440751665152000000000\n" +"51 15511187532873822802242430164693032110632597200169861120000..." #: ../Doc/whatsnew/2.6.rst:704 msgid "The documentation for the :mod:`multiprocessing` module." @@ -1310,6 +1453,14 @@ msgid "" "... last_login = \"5 Mar 2008 07:20\")\n" "'User ID: root Last seen: 5 Mar 2008 07:20'" msgstr "" +">>> # Substitute positional argument 0 into the string.\n" +">>> \"User ID: {0}\".format(\"root\")\n" +"'User ID: root'\n" +">>> # Use the named keyword arguments\n" +">>> \"User ID: {uid} Last seen: {last_login}\".format(\n" +"... uid=\"root\",\n" +"... last_login = \"5 Mar 2008 07:20\")\n" +"'User ID: root Last seen: 5 Mar 2008 07:20'" #: ../Doc/whatsnew/2.6.rst:735 msgid "Curly brackets can be escaped by doubling them::" @@ -1320,6 +1471,8 @@ msgid "" ">>> \"Empty dict: {{}}\".format()\n" "\"Empty dict: {}\"" msgstr "" +">>> \"Empty dict: {{}}\".format()\n" +"\"Empty dict: {}\"" #: ../Doc/whatsnew/2.6.rst:740 msgid "" @@ -1345,6 +1498,16 @@ msgid "" ">>> 'Content-type: {0[.mp4]}'.format(mimetypes.types_map)\n" "'Content-type: video/mp4'" msgstr "" +">>> import sys\n" +">>> print 'Platform: {0.platform}\\nPython version: {0.version}'." +"format(sys)\n" +"Platform: darwin\n" +"Python version: 2.6a1+ (trunk:61261M, Mar 5 2008, 20:29:41)\n" +"[GCC 4.0.1 (Apple Computer, Inc. build 5367)]'\n" +"\n" +">>> import mimetypes\n" +">>> 'Content-type: {0[.mp4]}'.format(mimetypes.types_map)\n" +"'Content-type: video/mp4'" #: ../Doc/whatsnew/2.6.rst:754 msgid "" @@ -1382,6 +1545,15 @@ msgid "" ">>> fmt.format('Banquet', 125)\n" "'Banquet $ 125'" msgstr "" +">>> # Field 0: left justify, pad to 15 characters\n" +">>> # Field 1: right justify, pad to 6 characters\n" +">>> fmt = '{0:15} ${1:>6}'\n" +">>> fmt.format('Registration', 35)\n" +"'Registration $ 35'\n" +">>> fmt.format('Tutorial', 50)\n" +"'Tutorial $ 50'\n" +">>> fmt.format('Banquet', 125)\n" +"'Banquet $ 125'" #: ../Doc/whatsnew/2.6.rst:774 msgid "Format specifiers can reference other fields through nesting::" @@ -1399,6 +1571,13 @@ msgid "" ">>> fmt.format('Invoice #1234', width)\n" "'Invoice #1234 '" msgstr "" +">>> fmt = '{0:{1}}'\n" +">>> width = 15\n" +">>> fmt.format('Invoice #1234', width)\n" +"'Invoice #1234 '\n" +">>> width = 35\n" +">>> fmt.format('Invoice #1234', width)\n" +"'Invoice #1234 '" #: ../Doc/whatsnew/2.6.rst:784 msgid "The alignment of a field within the desired width can be specified:" @@ -1463,6 +1642,10 @@ msgid "" ">>> '{0:e}'.format(3.75)\n" "'3.750000e+00'" msgstr "" +">>> '{0:g}'.format(3.75)\n" +"'3.75'\n" +">>> '{0:e}'.format(3.75)\n" +"'3.750000e+00'" #: ../Doc/whatsnew/2.6.rst:804 msgid "" @@ -1589,6 +1772,11 @@ msgid "" " else:\n" " return str(self)" msgstr "" +"def __format__(self, format_spec):\n" +" if isinstance(format_spec, unicode):\n" +" return unicode(str(self))\n" +" else:\n" +" return str(self)" #: ../Doc/whatsnew/2.6.rst:836 msgid "" @@ -1603,6 +1791,8 @@ msgid "" ">>> format(75.6564, '.2f')\n" "'75.66'" msgstr "" +">>> format(75.6564, '.2f')\n" +"'75.66'" #: ../Doc/whatsnew/2.6.rst:847 msgid ":ref:`formatstrings`" @@ -1648,6 +1838,8 @@ msgid "" ">>> from __future__ import print_function\n" ">>> print('# of entries', len(dictionary), file=sys.stderr)" msgstr "" +">>> from __future__ import print_function\n" +">>> print('# de entradas', len(diccionario), file=sys.stderr)" #: ../Doc/whatsnew/2.6.rst:869 msgid "The signature of the new function is::" @@ -1708,6 +1900,11 @@ msgid "" "except TypeError, ValueError: # Wrong!\n" " ..." msgstr "" +"La firma de la nueva función es::" +"try:\n" +" ...\n" +"except TypeError, ValueError: # ¡Incorrecto!\n" +" ..." #: ../Doc/whatsnew/2.6.rst:902 msgid "" @@ -1731,6 +1928,10 @@ msgid "" "except (TypeError, ValueError):\n" " ..." msgstr "" +"try:\n" +" ...\n" +"except (TypeError, ValueError):\n" +" ..." #: ../Doc/whatsnew/2.6.rst:914 msgid "" @@ -1759,6 +1960,10 @@ msgid "" "except TypeError as exc:\n" " ..." msgstr "" +"try:\n" +" ...\n" +"except TypeError as exc:\n" +" ..." #: ../Doc/whatsnew/2.6.rst:927 msgid "" @@ -1851,6 +2056,12 @@ msgid "" "\n" "print len(s) # 12 Unicode characters" msgstr "" +"from __future__ import unicode_literals\n" +"\n" +"s = ('\\u751f\\u3080\\u304e\\u3000\\u751f\\u3054'\n" +" '\\u3081\\u3000\\u751f\\u305f\\u307e\\u3054')\n" +"\n" +"print len(s) # 12 Unicode characters" #: ../Doc/whatsnew/2.6.rst:977 msgid "" @@ -1890,6 +2101,16 @@ msgid "" ">>> unicode(str(b), 'utf-8')\n" "u'\\u31ef \\u3244'" msgstr "" +">>> bytearray([65, 66, 67])\n" +"bytearray(b'ABC')\n" +">>> b = bytearray(u'\\u21ef\\u3244', 'utf-8')\n" +">>> b\n" +"bytearray(b'\\xe2\\x87\\xaf\\xe3\\x89\\x84')\n" +">>> b[0] = '\\xe3'\n" +">>> b\n" +"bytearray(b'\\xe3\\x87\\xaf\\xe3\\x89\\x84')\n" +">>> unicode(str(b), 'utf-8')\n" +"u'\\u31ef \\u3244'" #: ../Doc/whatsnew/2.6.rst:999 msgid "" @@ -1910,6 +2131,11 @@ msgid "" ">>> b\n" "bytearray(b'ABCde')" msgstr "" +">>> b = bytearray('ABC')\n" +">>> b.append('d')\n" +">>> b.append(ord('e'))\n" +">>> b\n" +"bytearray(b'ABCde')" #: ../Doc/whatsnew/2.6.rst:1012 msgid "" @@ -2043,7 +2269,6 @@ msgstr "" "nada en el disco." #: ../Doc/whatsnew/2.6.rst:1083 -#, fuzzy msgid "" "(In Python 2.6, :class:`io.StringIO` is implemented in pure Python, so it's " "pretty slow. You should therefore stick with the existing :mod:`!StringIO` " @@ -2051,12 +2276,11 @@ msgid "" "module will be rewritten into C for speed, and perhaps the C implementation " "will be backported to the 2.x releases.)" msgstr "" -"(En Python 2.6, :class:`io.StringIO` está implementado en Python puro, por " -"lo que es bastante lento. Por lo tanto, deberías seguir con el módulo :mod:" -"`StringIO` existente o con :mod:`cStringIO` por ahora. En algún momento el " -"módulo :mod:`io` de Python 3.0 será reescrito en C para aumentar la " -"velocidad, y quizás la implementación en C será retroalimentada a las " -"versiones 2.x)" +"(En Python 2.6, :class:`io.StringIO` se implementa en Python puro, por lo " +"que es bastante lento. Por lo tanto, debe quedarse con el módulo :mod:`!" +"StringIO` o :mod:`!cStringIO` existente por ahora. En algún momento, el " +"módulo :mod:`io` de Python 3.0 se reescribirá en C para mayor velocidad, y " +"tal vez la implementación de C se incorpore a las versiones 2.x)." #: ../Doc/whatsnew/2.6.rst:1089 msgid "" @@ -2267,6 +2491,10 @@ msgid "" "class Storage(collections.MutableMapping):\n" " ..." msgstr "" +"import collections\n" +"\n" +"class Storage(collections.MutableMapping):\n" +" ..." #: ../Doc/whatsnew/2.6.rst:1196 msgid "" @@ -2286,6 +2514,12 @@ msgid "" "\n" "collections.MutableMapping.register(Storage)" msgstr "" +"import collections\n" +"\n" +"class Storage:\n" +" ...\n" +"\n" +"collections.MutableMapping.register(Storage)" #: ../Doc/whatsnew/2.6.rst:1207 msgid "" @@ -2308,6 +2542,10 @@ msgid "" "PrintableType.register(float)\n" "PrintableType.register(str)" msgstr "" +"# Register Python's types\n" +"PrintableType.register(int)\n" +"PrintableType.register(float)\n" +"PrintableType.register(str)" #: ../Doc/whatsnew/2.6.rst:1219 msgid "" @@ -2334,6 +2572,9 @@ msgid "" " if not isinstance(d, collections.MutableMapping):\n" " raise ValueError(\"Mapping object expected, not %r\" % d)" msgstr "" +"def func(d):\n" +" if not isinstance(d, collections.MutableMapping):\n" +" raise ValueError(\"Mapping object expected, not %r\" % d)" #: ../Doc/whatsnew/2.6.rst:1230 msgid "" @@ -2378,6 +2619,22 @@ msgid "" " def draw(self, x, y, scale):\n" " ..." msgstr "" +"from abc import ABCMeta, abstractmethod\n" +"\n" +"class Drawable():\n" +" __metaclass__ = ABCMeta\n" +"\n" +" @abstractmethod\n" +" def draw(self, x, y, scale=1.0):\n" +" pass\n" +"\n" +" def draw_doubled(self, x, y):\n" +" self.draw(x, y, scale=2.0)\n" +"\n" +"\n" +"class Square(Drawable):\n" +" def draw(self, x, y, scale):\n" +" ..." #: ../Doc/whatsnew/2.6.rst:1258 msgid "" @@ -2421,6 +2678,15 @@ msgid "" "draw\n" ">>>" msgstr "" +">>> class Circle(Drawable):\n" +"... pass\n" +"...\n" +">>> c = Circle()\n" +"Traceback (most recent call last):\n" +" File \"\", line 1, in \n" +"TypeError: Can't instantiate abstract class Circle with abstract methods " +"draw\n" +">>>" #: ../Doc/whatsnew/2.6.rst:1281 msgid "" @@ -2439,6 +2705,12 @@ msgid "" "def readonly(self):\n" " return self._x" msgstr "" +"from abc import abstractproperty\n" +"...\n" +"\n" +"@abstractproperty\n" +"def readonly(self):\n" +" return self._x" #: ../Doc/whatsnew/2.6.rst:1291 msgid "Subclasses must then define a :meth:`readonly` property." @@ -2486,6 +2758,10 @@ msgid "" ">>> 0b101111\n" "47" msgstr "" +">>> 0o21, 2*8 + 1\n" +"(17, 17)\n" +">>> 0b101111\n" +"47" #: ../Doc/whatsnew/2.6.rst:1320 msgid "" @@ -2506,6 +2782,12 @@ msgid "" ">>> bin(173)\n" "'0b10101101'" msgstr "" +">>> oct(42)\n" +"'052'\n" +">>> future_builtins.oct(42)\n" +"'0o52'\n" +">>> bin(173)\n" +"'0b10101101'" #: ../Doc/whatsnew/2.6.rst:1331 msgid "" @@ -2530,6 +2812,14 @@ msgid "" ">>> int('0b1101', 0)\n" "13" msgstr "" +">>> int ('0o52', 0)\n" +"42\n" +">>> int('1101', 2)\n" +"13\n" +">>> int('0b1101', 2)\n" +"13\n" +">>> int('0b1101', 0)\n" +"13" #: ../Doc/whatsnew/2.6.rst:1349 msgid ":pep:`3127` - Integer Literal Support and Syntax" @@ -2558,6 +2848,10 @@ msgid "" "class A:\n" " pass" msgstr "" +"@foo\n" +"@bar\n" +"class A:\n" +" pass" #: ../Doc/whatsnew/2.6.rst:1367 msgid "This is equivalent to::" @@ -2570,6 +2864,10 @@ msgid "" "\n" "A = foo(bar(A))" msgstr "" +"class A:\n" +" pass\n" +"\n" +"A = foo(bar(A))" #: ../Doc/whatsnew/2.6.rst:1376 msgid ":pep:`3129` - Class Decorators" @@ -2731,17 +3029,25 @@ msgid "" ">>> a/b\n" "Fraction(5, 3)" msgstr "" +">>> from fractions import Fraction\n" +">>> a = Fraction(2, 3)\n" +">>> b = Fraction(2, 5)\n" +">>> float(a), float(b)\n" +"(0.66666666666666663, 0.40000000000000002)\n" +">>> a+b\n" +"Fraction(16, 15)\n" +">>> a/b\n" +"Fraction(5, 3)" #: ../Doc/whatsnew/2.6.rst:1455 -#, fuzzy msgid "" "For converting floating-point numbers to rationals, the float type now has " "an :meth:`as_integer_ratio` method that returns the numerator and " "denominator for a fraction that evaluates to the same floating-point value::" msgstr "" -"Para convertir números de punto flotante en racionales, el tipo float tiene " -"ahora un método :meth:`as_integer_ratio()` que devuelve el numerador y el " -"denominador de una fracción que se evalúa al mismo valor de punto flotante::" +"Para convertir números de punto flotante en racionales, el tipo float ahora " +"tiene un método :meth:`as_integer_ratio` que devuelve el numerador y el " +"denominador de una fracción que evalúa el mismo valor de punto flotante:" #: ../Doc/whatsnew/2.6.rst:1460 msgid "" @@ -2752,6 +3058,12 @@ msgid "" ">>> (1./3) .as_integer_ratio()\n" "(6004799503160661L, 18014398509481984L)" msgstr "" +">>> (2.5) .as_integer_ratio()\n" +"(5, 2)\n" +">>> (3.1415) .as_integer_ratio()\n" +"(7074029114692207L, 2251799813685248L)\n" +">>> (1./3) .as_integer_ratio()\n" +"(6004799503160661L, 18014398509481984L)" #: ../Doc/whatsnew/2.6.rst:1467 msgid "" @@ -2838,6 +3150,14 @@ msgid "" ">>> f(**ud)\n" "['a', 'b']" msgstr "" +">>> def f(**kw):\n" +"... print sorted(kw)\n" +"...\n" +">>> ud=UserDict.UserDict()\n" +">>> ud['a'] = 1\n" +">>> ud['b'] = 'string'\n" +">>> f(**ud)\n" +"['a', 'b']" #: ../Doc/whatsnew/2.6.rst:1511 msgid "(Contributed by Alexander Belopolsky; :issue:`1686487`.)" @@ -2858,7 +3178,12 @@ msgid "" "...\n" ">>> f(1,2,3, *(4,5,6), keyword=13)\n" "(1, 2, 3, 4, 5, 6) {'keyword': 13}" -msgstr "" +msgstr "" +">>> def f(*args, **kw):\n" +"... print args, kw\n" +"...\n" +">>> f(1,2,3, *(4,5,6), keyword=13)\n" +"(1, 2, 3, 4, 5, 6) {'keyword': 13}" #: ../Doc/whatsnew/2.6.rst:1522 msgid "" @@ -2897,6 +3222,11 @@ msgid "" ">>> t.count(0)\n" "2" msgstr "" +">>> t = (0,1,2,3,4,0,1,2)\n" +">>> t.index(3)\n" +"3\n" +">>> t.count(0)\n" +"2" #: ../Doc/whatsnew/2.6.rst:1540 msgid "(Contributed by Raymond Hettinger)" @@ -2950,6 +3280,27 @@ msgid "" " def x(self, value):\n" " self._x = value / 2" msgstr "" +"class C(object):\n" +" @property\n" +" def x(self):\n" +" return self._x\n" +"\n" +" @x.setter\n" +" def x(self, value):\n" +" self._x = value\n" +"\n" +" @x.deleter\n" +" def x(self):\n" +" del self._x\n" +"\n" +"class D(C):\n" +" @C.x.getter\n" +" def x(self):\n" +" return self._x * 2\n" +"\n" +" @x.setter\n" +" def x(self, value):\n" +" self._x = value / 2" #: ../Doc/whatsnew/2.6.rst:1576 msgid "" @@ -2969,6 +3320,11 @@ msgid "" ">>> s.difference('246', '789')\n" "set(['1', '0', '3', '5'])" msgstr "" +">>> s=set('1234567890')\n" +">>> s.intersection('abc123', 'cdf246') # Intersection between all inputs\n" +"set(['2'])\n" +">>> s.difference('246', '789')\n" +"set(['1', '0', '3', '5'])" #: ../Doc/whatsnew/2.6.rst:1590 ../Doc/whatsnew/2.6.rst:1875 #: ../Doc/whatsnew/2.6.rst:1896 @@ -3027,6 +3383,14 @@ msgid "" ">>> b.hex()\n" "'0x1.5555555555555p-2'" msgstr "" +">>> a = 3.75\n" +">>> a.hex()\n" +"'0x1.e000000000000p+1'\n" +">>> float.fromhex('0x1.e000000000000p+1')\n" +"3.75\n" +">>> b=1./3\n" +">>> b.hex()\n" +"'0x1.5555555555555p-2'" #: ../Doc/whatsnew/2.6.rst:1619 msgid "" @@ -3147,7 +3511,6 @@ msgstr "" "`1591665`)" #: ../Doc/whatsnew/2.6.rst:1673 -#, fuzzy msgid "" "Instance method objects have new attributes for the object and function " "comprising the method; the new synonym for :attr:`!im_self` is :attr:" @@ -3156,10 +3519,10 @@ msgid "" "3.0." msgstr "" "Los objetos de método de instancia tienen nuevos atributos para el objeto y " -"la función que comprende el método; el nuevo sinónimo de :attr:`im_self` es :" -"attr:`__self__`, y :attr:`im_func` también está disponible como :attr:" -"`__func__`. Los nombres antiguos todavía se soportan en Python 2.6, pero han " -"desaparecido en la 3.0." +"la función que componen el método; el nuevo sinónimo de :attr:`!im_self` es :" +"attr:`~method.__self__`, y :attr:`!im_func` también está disponible como :" +"attr:`~method.__func__`. Los nombres antiguos aún se admiten en Python 2.6, " +"pero ya no están disponibles en la versión 3.0." #: ../Doc/whatsnew/2.6.rst:1679 msgid "" @@ -3277,14 +3640,13 @@ msgstr "" "de la cadena Unicode." #: ../Doc/whatsnew/2.6.rst:1735 -#, fuzzy msgid "" "The ``with`` statement now stores the :meth:`~object.__exit__` method on the " "stack, producing a small speedup. (Implemented by Jeffrey Yasskin.)" msgstr "" -"La sentencia ``with`` ahora almacena el método :meth:`__exit__` en la pila, " -"produciendo un pequeño aumento de velocidad. (Implementado por Jeffrey " -"Yasskin)" +"La declaración ``with`` ahora almacena el método :meth:`~object.__exit__` en " +"la pila, lo que produce una pequeña mejora en la velocidad. (Implementado " +"por Jeffrey Yasskin)." #: ../Doc/whatsnew/2.6.rst:1738 msgid "" @@ -3378,16 +3740,15 @@ msgstr "" "detalles." #: ../Doc/whatsnew/2.6.rst:1786 -#, fuzzy msgid "" "The :mod:`!asyncore` and :mod:`!asynchat` modules are being actively " "maintained again, and a number of patches and bugfixes were applied. " "(Maintained by Josiah Carlson; see :issue:`1736190` for one patch.)" msgstr "" -"Los módulos :mod:`asyncore` y :mod:`asynchat` están siendo mantenidos " -"activamente de nuevo, y se han aplicado varios parches y correcciones de " -"errores. (Mantenido por Josiah Carlson; véase :issue:`1736190` para un " -"parche)" +"Los módulos :mod:`!asyncore` y :mod:`!asynchat` están recibiendo " +"mantenimiento activo nuevamente y se aplicaron varios parches y correcciones " +"de errores. (Mantenimiento a cargo de Josiah Carlson; consulte :issue:" +"`1736190` para obtener un parche)." #: ../Doc/whatsnew/2.6.rst:1791 msgid "" @@ -3416,30 +3777,28 @@ msgstr "" "Barnes.)" #: ../Doc/whatsnew/2.6.rst:1803 -#, fuzzy msgid "" "The :mod:`!cgi` module will now read variables from the query string of an " "HTTP POST request. This makes it possible to use form actions with URLs " "that include query strings such as \"/cgi-bin/add.py?category=1\". " "(Contributed by Alexandre Fiori and Nubis; :issue:`1817`.)" msgstr "" -"El módulo :mod:`cgi` leerá ahora las variables de la cadena de consulta de " -"una petición HTTP POST. Esto permite utilizar acciones de formulario con " -"URLs que incluyen cadenas de consulta como \"/cgi-bin/add.py?category=1\". " -"(Contribución de Alexandre Fiori y Nubis; :issue:`1817`.)" +"El módulo :mod:`!cgi` ahora leerá variables de la cadena de consulta de una " +"solicitud HTTP POST. Esto permite utilizar acciones de formulario con URL " +"que incluyen cadenas de consulta como \"/cgi-bin/add.py?category=1\". " +"(Contribuido por Alexandre Fiori y Nubis; :issue:`1817`)." #: ../Doc/whatsnew/2.6.rst:1809 -#, fuzzy msgid "" "The :func:`parse_qs` and :func:`parse_qsl` functions have been relocated " "from the :mod:`!cgi` module to the :mod:`urlparse ` module. " "The versions still available in the :mod:`!cgi` module will trigger :exc:" "`PendingDeprecationWarning` messages in 2.6 (:issue:`600362`)." msgstr "" -"Las funciones :func:`parse_qs` y :func:`parse_qsl` han sido reubicadas del " -"módulo :mod:`cgi` al módulo :mod:`urlparse`. Las versiones aún disponibles " -"en el módulo :mod:`cgi` activarán los mensajes :exc:" -"`PendingDeprecationWarning` en la versión 2.6 (:issue:`600362`)." +"Las funciones :func:`parse_qs` y :func:`parse_qsl` se han reubicado del " +"módulo :mod:`!cgi` al módulo :mod:`urlparse `. Las versiones " +"que aún están disponibles en el módulo :mod:`!cgi` activarán los mensajes :" +"exc:`PendingDeprecationWarning` en la versión 2.6 (:issue:`600362`)." #: ../Doc/whatsnew/2.6.rst:1815 msgid "" @@ -3554,6 +3913,23 @@ msgid "" ">>> v2\n" "variable(id=1, name='amplitude', type='int', size=4)" msgstr "" +">>> var_type = collections.namedtuple('variable',\n" +"... 'id name type size')\n" +">>> # Names are separated by spaces or commas.\n" +">>> # 'id, name, type, size' would also work.\n" +">>> var_type._fields\n" +"('id', 'name', 'type', 'size')\n" +"\n" +">>> var = var_type(1, 'frequency', 'int', 4)\n" +">>> print var[0], var.id # Equivalent\n" +"1 1\n" +">>> print var[2], var.type # Equivalent\n" +"int int\n" +">>> var._asdict()\n" +"{'size': 4, 'type': 'int', 'id': 1, 'name': 'frequency'}\n" +">>> v2 = var._replace(name='amplitude')\n" +">>> v2\n" +"variable(id=1, name='amplitude', type='int', size=4)" #: ../Doc/whatsnew/2.6.rst:1870 msgid "" @@ -3592,9 +3968,18 @@ msgid "" ">>> dq\n" "deque([2, 3, 4], maxlen=3)" msgstr "" +">>> from collections import deque\n" +">>> dq=deque(maxlen=3)\n" +">>> dq\n" +"deque([], maxlen=3)\n" +">>> dq.append(1); dq.append(2); dq.append(3)\n" +">>> dq\n" +"deque([1, 2, 3], maxlen=3)\n" +">>> dq.append(4)\n" +">>> dq\n" +"deque([2, 3, 4], maxlen=3)" #: ../Doc/whatsnew/2.6.rst:1898 -#, fuzzy msgid "" "The :mod:`Cookie ` module's :class:`~http.cookies.Morsel` " "objects now support an :attr:`~http.cookies.Morsel.httponly` attribute. In " @@ -3602,10 +3987,11 @@ msgid "" "manipulated by JavaScript code. (Contributed by Arvin Schnell; :issue:" "`1638033`.)" msgstr "" -"Los objetos :mod:`Cookie` del módulo :class:`Morsel` soportan ahora un " -"atributo :attr:`httponly`. En algunos navegadores, las cookies con este " -"atributo no pueden ser accedidas o manipuladas por el código JavaScript. " -"(Contribución de Arvin Schnell; :issue:`1638033`.)" +"Los objetos :class:`~http.cookies.Morsel` del módulo :mod:`Cookie ` ahora admiten un atributo :attr:`~http.cookies.Morsel.httponly`. " +"En algunos navegadores, el código JavaScript no puede acceder ni manipular " +"las cookies con este atributo establecido. (Contribuido por Arvin Schnell; :" +"issue:`1638033`)." #: ../Doc/whatsnew/2.6.rst:1903 msgid "" @@ -3623,6 +4009,9 @@ msgid "" "# and affecting the rest of the line.\n" "stdscr.chgat(0, 21, curses.A_BOLD)" msgstr "" +"# Boldface text starting at y=0,x=21\n" +"# and affecting the rest of the line.\n" +"stdscr.chgat(0, 21, curses.A_BOLD)" #: ../Doc/whatsnew/2.6.rst:1913 msgid "" @@ -3670,6 +4059,12 @@ msgid "" ">>> Decimal(1000).log10()\n" "Decimal(\"3\")" msgstr "" +">>> Decimal(1).exp()\n" +"Decimal(\"2.718281828459045235360287471\")\n" +">>> Decimal(\"2.7182818\").ln()\n" +"Decimal(\"0.9999999895305022877376682436\")\n" +">>> Decimal(1000).log10()\n" +"Decimal(\"3\")" #: ../Doc/whatsnew/2.6.rst:1935 msgid "" @@ -3770,6 +4165,8 @@ msgid "" ">>> list(heapq.merge([1, 3, 5, 9], [2, 8, 16]))\n" "[1, 2, 3, 5, 8, 9, 16]" msgstr "" +">>> list(heapq.merge([1, 3, 5, 9], [2, 8, 16]))\n" +"[1, 2, 3, 5, 8, 9, 16]" #: ../Doc/whatsnew/2.6.rst:1978 msgid "" @@ -3794,16 +4191,16 @@ msgstr "" "el método :meth:`list.sort`. (Contribución de Raymond Hettinger)" #: ../Doc/whatsnew/2.6.rst:1989 -#, fuzzy msgid "" "An optional ``timeout`` parameter, specifying a timeout measured in seconds, " "was added to the :class:`httplib.HTTPConnection ` and :class:`HTTPSConnection ` " "class constructors. (Added by Facundo Batista.)" msgstr "" -"Se ha añadido un parámetro opcional ``timeout``, que especifica un tiempo de " -"espera medido en segundos, a los constructores de las clases :class:`httplib." -"HTTPConnection` y :class:`HTTPSConnection`. (Añadido por Facundo Batista)" +"Se agregó un parámetro opcional ``timeout`` a los constructores de clases :" +"class:`httplib.HTTPConnection ` y :class:" +"`HTTPSConnection `, que especifica un tiempo de " +"espera medido en segundos. (Agregado por Facundo Batista)." #: ../Doc/whatsnew/2.6.rst:1994 msgid "" @@ -3844,6 +4241,8 @@ msgid "" ">>> tuple(itertools.izip_longest([1,2,3], [1,2,3,4,5]))\n" "((1, 1), (2, 2), (3, 3), (None, 4), (None, 5))" msgstr "" +">>> tuple(itertools.izip_longest([1,2,3], [1,2,3,4,5]))\n" +"((1, 1), (2, 2), (3, 3), (None, 4), (None, 5))" #: ../Doc/whatsnew/2.6.rst:2013 msgid "" @@ -3862,6 +4261,10 @@ msgid "" " (2, 4), (2, 5), (2, 6),\n" " (3, 4), (3, 5), (3, 6)]" msgstr "" +">>> list(itertools.product([1,2,3], [4,5,6]))\n" +"[(1, 4), (1, 5), (1, 6),\n" +" (2, 4), (2, 5), (2, 6),\n" +" (3, 4), (3, 5), (3, 6)]" #: ../Doc/whatsnew/2.6.rst:2022 msgid "" @@ -3880,6 +4283,9 @@ msgid "" "[(1, 1, 1), (1, 1, 2), (1, 2, 1), (1, 2, 2),\n" " (2, 1, 1), (2, 1, 2), (2, 2, 1), (2, 2, 2)]" msgstr "" +">>> list(itertools.product([1,2], repeat=3))\n" +"[(1, 1, 1), (1, 1, 2), (1, 2, 1), (1, 2, 2),\n" +" (2, 1, 1), (2, 1, 2), (2, 2, 1), (2, 2, 2)]" #: ../Doc/whatsnew/2.6.rst:2031 msgid "With two iterables, *2N*-tuples are returned. ::" @@ -3893,6 +4299,11 @@ msgid "" " (2, 3, 1, 3), (2, 3, 1, 4), (2, 3, 2, 3), (2, 3, 2, 4),\n" " (2, 4, 1, 3), (2, 4, 1, 4), (2, 4, 2, 3), (2, 4, 2, 4)]" msgstr "" +">>> list(itertools.product([1,2], [3,4], repeat=2))\n" +"[(1, 3, 1, 3), (1, 3, 1, 4), (1, 3, 2, 3), (1, 3, 2, 4),\n" +" (1, 4, 1, 3), (1, 4, 1, 4), (1, 4, 2, 3), (1, 4, 2, 4),\n" +" (2, 3, 1, 3), (2, 3, 1, 4), (2, 3, 2, 3), (2, 3, 2, 4),\n" +" (2, 4, 1, 3), (2, 4, 1, 4), (2, 4, 2, 3), (2, 4, 2, 4)]" #: ../Doc/whatsnew/2.6.rst:2039 msgid "" @@ -3912,6 +4323,13 @@ msgid "" "[('1', '2', '3'), ('1', '2', '4'),\n" " ('1', '3', '4'), ('2', '3', '4')]" msgstr "" +">>> list(itertools.combinations('123', 2))\n" +"[('1', '2'), ('1', '3'), ('2', '3')]\n" +">>> list(itertools.combinations('123', 3))\n" +"[('1', '2', '3')]\n" +">>> list(itertools.combinations('1234', 3))\n" +"[('1', '2', '3'), ('1', '2', '4'),\n" +" ('1', '3', '4'), ('2', '3', '4')]" #: ../Doc/whatsnew/2.6.rst:2050 msgid "" @@ -3931,6 +4349,11 @@ msgid "" " (3, 1), (3, 2), (3, 4),\n" " (4, 1), (4, 2), (4, 3)]" msgstr "" +">>> list(itertools.permutations([1,2,3,4], 2))\n" +"[(1, 2), (1, 3), (1, 4),\n" +" (2, 1), (2, 3), (2, 4),\n" +" (3, 1), (3, 2), (3, 4),\n" +" (4, 1), (4, 2), (4, 3)]" #: ../Doc/whatsnew/2.6.rst:2060 msgid "" @@ -3951,6 +4374,8 @@ msgid "" ">>> list(itertools.chain.from_iterable([[1,2,3], [4,5,6]]))\n" "[1, 2, 3, 4, 5, 6]" msgstr "" +">>> list(itertools.chain.from_iterable([[1,2,3], [4,5,6]]))\n" +"[1, 2, 3, 4, 5, 6]" #: ../Doc/whatsnew/2.6.rst:2070 msgid "(All contributed by Raymond Hettinger.)" @@ -4112,6 +4537,10 @@ msgid "" ">>> replacer('old wine in old bottles')\n" "'new wine in new bottles'" msgstr "" +">>> # Equivalent to lambda s: s.replace('old', 'new')\n" +">>> replacer = operator.methodcaller('replace', 'old', 'new')\n" +">>> replacer('old wine in old bottles')\n" +"'new wine in new bottles'" #: ../Doc/whatsnew/2.6.rst:2145 msgid "(Contributed by Georg Brandl, after a suggestion by Gregory Petrosyan.)" @@ -4135,6 +4564,12 @@ msgid "" ">>> inst_name(help)\n" "'_Helper'" msgstr "" +">>> inst_name = operator.attrgetter(\n" +"... '__class__.__name__')\n" +">>> inst_name('')\n" +"'str'\n" +">>> inst_name(help)\n" +"'_Helper'" #: ../Doc/whatsnew/2.6.rst:2157 msgid "(Contributed by Georg Brandl, after a suggestion by Barry Warsaw.)" @@ -4302,6 +4737,16 @@ msgid "" " +-- StandardError\n" " ..." msgstr "" +">>> import pkgutil\n" +">>> print pkgutil.get_data('test', 'exception_hierarchy.txt')\n" +"BaseException\n" +" +-- SystemExit\n" +" +-- KeyboardInterrupt\n" +" +-- GeneratorExit\n" +" +-- Exception\n" +" +-- StopIteration\n" +" +-- StandardError\n" +" ..." #: ../Doc/whatsnew/2.6.rst:2236 msgid "(Contributed by Paul Moore; :issue:`2439`.)" @@ -4389,15 +4834,14 @@ msgstr "" "`3487`.)" #: ../Doc/whatsnew/2.6.rst:2276 -#, fuzzy msgid "" "The :mod:`rlcompleter` module's :meth:`Completer.complete` method will now " "ignore exceptions triggered while evaluating a name. (Fixed by Lorenz " "Quack; :issue:`2250`.)" msgstr "" -"El método :meth:`Completer.complete()` del módulo :mod:`rlcompleter` ahora " -"ignorará las excepciones que se produzcan al evaluar un nombre. (Corregido " -"por Lorenz Quack; :issue:`2250`.)" +"El método :meth:`Completer.complete` del módulo :mod:`rlcompleter` ahora " +"ignorará las excepciones activadas al evaluar un nombre. (Corregido por " +"Lorenz Quack; :issue:`2250`)." #: ../Doc/whatsnew/2.6.rst:2280 msgid "" @@ -4462,6 +4906,8 @@ msgid "" "shutil.copytree('Doc/library', '/tmp/library',\n" " ignore=shutil.ignore_patterns('*~', '.svn'))" msgstr "" +"shutil.copytree('Doc/library', '/tmp/library',\n" +" ignore=shutil.ignore_patterns('*~', '.svn'))" #: ../Doc/whatsnew/2.6.rst:2310 msgid "(Contributed by Tarek Ziadé; :issue:`2663`.)" @@ -4602,7 +5048,6 @@ msgstr "" "funcione con IPv6." #: ../Doc/whatsnew/2.6.rst:2374 -#, fuzzy msgid "" "The base classes in the :mod:`SocketServer ` module now " "support calling a :meth:`~socketserver.BaseServer.handle_timeout` method " @@ -4613,13 +5058,15 @@ msgid "" "check for a shutdown request. (Contributed by Pedro Werneck and Jeffrey " "Yasskin; :issue:`742598`, :issue:`1193577`.)" msgstr "" -"Las clases base del módulo :mod:`SocketServer` ahora soportan la llamada a " -"un método :meth:`handle_timeout` después de un periodo de inactividad " -"especificado por el atributo :attr:`timeout` del servidor. (Contribuido por " -"Michael Pomraning.) El método :meth:`serve_forever` ahora toma un intervalo " -"de sondeo opcional medido en segundos, controlando la frecuencia con la que " -"el servidor comprobará si hay una solicitud de cierre. (Contribuido por " -"Pedro Werneck y Jeffrey Yasskin; :issue:`742598`, :issue:`1193577`.)" +"Las clases base del módulo :mod:`SocketServer ` ahora admiten " +"la llamada a un método :meth:`~socketserver.BaseServer.handle_timeout` " +"después de un período de inactividad especificado por el atributo :attr:" +"`~socketserver.BaseServer.timeout` del servidor. (Contribuido por Michael " +"Pomraning.) El método :meth:`~socketserver.BaseServer.serve_forever` ahora " +"utiliza un intervalo de sondeo opcional medido en segundos, que controla la " +"frecuencia con la que el servidor comprobará si hay una solicitud de " +"apagado. (Contribuido por Pedro Werneck y Jeffrey Yasskin; :issue:`742598`, :" +"issue:`1193577`.)" #: ../Doc/whatsnew/2.6.rst:2383 msgid "" @@ -4638,7 +5085,6 @@ msgstr "" "el carácter de formato ``'?'``. (Aportado por David Remahl.)" #: ../Doc/whatsnew/2.6.rst:2391 -#, fuzzy msgid "" "The :class:`~subprocess.Popen` objects provided by the :mod:`subprocess` " "module now have :meth:`~subprocess.Popen.terminate`, :meth:`~subprocess." @@ -4647,11 +5093,12 @@ msgid "" "and all these methods are aliases for the Win32 API function :c:func:`!" "TerminateProcess`. (Contributed by Christian Heimes.)" msgstr "" -"Los objetos :class:`Popen` proporcionados por el módulo :mod:`subprocess` " -"tienen ahora métodos :meth:`terminate`, :meth:`kill` y :meth:`send_signal`. " -"En Windows, :meth:`send_signal` sólo soporta la señal :const:`SIGTERM`, y " -"todos estos métodos son alias de la función de la API Win32 :c:func:" -"`TerminateProcess`. (Contribuido por Christian Heimes.)" +"Los objetos :class:`~subprocess.Popen` proporcionados por el módulo :mod:" +"`subprocess` ahora tienen los métodos :meth:`~subprocess.Popen.terminate`, :" +"meth:`~subprocess.Popen.kill` y :meth:`~subprocess.Popen.send_signal`. En " +"Windows, :meth:`!send_signal` solo admite la señal :py:const:`~signal." +"SIGTERM` y todos estos métodos son alias de la función API Win32 :c:func:`!" +"TerminateProcess`. (Contribuido por Christian Heimes)." #: ../Doc/whatsnew/2.6.rst:2398 msgid "" @@ -4748,6 +5195,8 @@ msgid "" "tar = tarfile.open(\"output.tar\", \"w\",\n" " format=tarfile.PAX_FORMAT)" msgstr "" +"tar = tarfile.open(\"output.tar\", \"w\",\n" +" format=tarfile.PAX_FORMAT)" #: ../Doc/whatsnew/2.6.rst:2444 msgid "" @@ -4787,15 +5236,14 @@ msgid "(All changes contributed by Lars Gustäbel)." msgstr "(Todos los cambios han sido aportados por Lars Gustäbel)." #: ../Doc/whatsnew/2.6.rst:2462 -#, fuzzy msgid "" "An optional ``timeout`` parameter was added to the :class:`!telnetlib." "Telnet` class constructor, specifying a timeout measured in seconds. (Added " "by Facundo Batista.)" msgstr "" "Se agregó un parámetro opcional ``timeout`` al constructor de la clase :" -"class:`telnetlib.Telnet`, especificando un tiempo de espera medido en " -"segundos. (Añadido por Facundo Batista)" +"class:`!telnetlib.Telnet`, que especifica un tiempo de espera medido en " +"segundos. (Agregado por Facundo Batista)." #: ../Doc/whatsnew/2.6.rst:2466 msgid "" @@ -4834,17 +5282,17 @@ msgstr "" "Belopolsky; :issue:`2021`.)" #: ../Doc/whatsnew/2.6.rst:2481 -#, fuzzy msgid "" "The :mod:`test.test_support ` module gained a number of " "context managers useful for writing tests. :func:`~test.support.os_helper." "EnvironmentVarGuard` is a context manager that temporarily changes " "environment variables and automatically restores them to their old values." msgstr "" -"El módulo :mod:`test.test_support` obtuvo una serie de gestores de contexto " -"útiles para escribir pruebas. :func:`EnvironmentVarGuard` es un gestor de " -"contexto que cambia temporalmente las variables de entorno y las restaura " -"automáticamente a sus valores anteriores." +"El módulo :mod:`test.test_support ` ha incorporado una serie " +"de administradores de contexto útiles para escribir pruebas. :func:`~test." +"support.os_helper.EnvironmentVarGuard` es un administrador de contexto que " +"cambia temporalmente las variables de entorno y las restaura automáticamente " +"a sus valores anteriores." #: ../Doc/whatsnew/2.6.rst:2487 msgid "" @@ -4865,6 +5313,10 @@ msgid "" " f = urllib.urlopen('https://sf.net')\n" " ..." msgstr "" +"with test_support.TransientResource(IOError,\n" +" errno=errno.ETIMEDOUT):\n" +" f = urllib.urlopen('https://sf.net')\n" +" ..." #: ../Doc/whatsnew/2.6.rst:2498 msgid "" @@ -4884,6 +5336,11 @@ msgid "" " assert str(wrec.message) == \"function is outdated\"\n" " assert len(wrec.warnings) == 1, \"Multiple warnings raised\"" msgstr "" +"with test_support.check_warnings() as wrec:\n" +" warnings.simplefilter(\"always\")\n" +" # ... code that triggers a warning ...\n" +" assert str(wrec.message) == \"function is outdated\"\n" +" assert len(wrec.warnings) == 1, \"Multiple warnings raised\"" #: ../Doc/whatsnew/2.6.rst:2508 msgid "(Contributed by Brett Cannon.)" @@ -4915,6 +5372,19 @@ msgid "" " whitespace.\n" ">>>" msgstr "" +">>> S = \"\"\"This sentence has a bunch of\n" +"... extra whitespace.\"\"\"\n" +">>> print textwrap.fill(S, width=15)\n" +"This sentence\n" +"has a bunch\n" +"of extra\n" +"whitespace.\n" +">>> print textwrap.fill(S, drop_whitespace=False, width=15)\n" +"This sentence\n" +" has a bunch\n" +" of extra\n" +" whitespace.\n" +">>>" #: ../Doc/whatsnew/2.6.rst:2529 msgid "(Contributed by Dwayne Bailey; :issue:`1581073`.)" @@ -5008,11 +5478,9 @@ msgstr "" "nuevo sistema de coordenadas." #: ../Doc/whatsnew/2.6.rst:2569 -#, fuzzy msgid "Turtles now have an :meth:`undo` method that can roll back actions." msgstr "" -"Las tortugas ahora tienen un método :meth:`undo()` que puede revertir las " -"acciones." +"Las tortugas ahora tienen un método :meth:`undo` que puede revertir acciones." #: ../Doc/whatsnew/2.6.rst:2570 msgid "" @@ -5043,7 +5511,6 @@ msgid "(:issue:`1513695`)" msgstr "(:issue:`1513695`)" #: ../Doc/whatsnew/2.6.rst:2579 -#, fuzzy msgid "" "An optional ``timeout`` parameter was added to the :func:`urllib.urlopen " "` function and the :class:`urllib.ftpwrapper` class " @@ -5051,10 +5518,11 @@ msgid "" "function. The parameter specifies a timeout measured in seconds. For " "example::" msgstr "" -"Se ha añadido un parámetro opcional ``timeout`` a la función :func:`urllib." -"urlopen` y al constructor de la clase :class:`urllib.ftpwrapper`, así como a " -"la función :func:`urllib2.urlopen`. El parámetro especifica un tiempo de " -"espera medido en segundos. Por ejemplo::" +"Se agregó un parámetro opcional ``timeout`` a la función :func:`urllib." +"urlopen ` y al constructor de la clase :class:" +"`urllib.ftpwrapper`, así como a la función :func:`urllib2.urlopen `. El parámetro especifica un tiempo de espera medido en " +"segundos. Por ejemplo:" #: ../Doc/whatsnew/2.6.rst:2585 msgid "" @@ -5065,6 +5533,12 @@ msgid "" "urllib2.URLError: \n" ">>>" msgstr "" +">>> u = urllib2.urlopen(\"http://slow.example.com\",\n" +" timeout=3)\n" +"Traceback (most recent call last):\n" +" ...\n" +"urllib2.URLError: \n" +">>>" #: ../Doc/whatsnew/2.6.rst:2592 msgid "(Added by Facundo Batista.)" @@ -5103,7 +5577,6 @@ msgstr "" "`3781`)." #: ../Doc/whatsnew/2.6.rst:2607 -#, fuzzy msgid "" "The XML-RPC :class:`SimpleXMLRPCServer ` and :class:" "`DocXMLRPCServer ` classes can now be prevented from " @@ -5114,13 +5587,14 @@ msgid "" "begin listening for connections. (Contributed by Peter Parente; :issue:" "`1599845`.)" msgstr "" -"Las clases XML-RPC :class:`SimpleXMLRPCServer` y :class:`DocXMLRPCServer` " -"pueden ahora evitar que se abran inmediatamente y se vinculen a su socket " -"pasando ``False`` como parámetro del constructor *bind_and_activate*. Esto " -"puede usarse para modificar el atributo :attr:`allow_reuse_address` de la " -"instancia antes de llamar a los métodos :meth:`server_bind` y :meth:" -"`server_activate` para abrir el socket y comenzar a escuchar conexiones. " -"(Contribuido por Peter Parente; :issue:`1599845`.)" +"Ahora es posible evitar que las clases XML-RPC :class:`SimpleXMLRPCServer " +"` y :class:`DocXMLRPCServer ` se abran y " +"enlacen inmediatamente con su socket al pasar ``False`` como parámetro del " +"constructor *bind_and_activate*. Esto se puede utilizar para modificar el " +"atributo :attr:`allow_reuse_address` de la instancia antes de llamar a los " +"métodos :meth:`server_bind` y :meth:`server_activate` para abrir el socket y " +"comenzar a escuchar conexiones. (Contribuido por Peter Parente; :issue:" +"`1599845`)." #: ../Doc/whatsnew/2.6.rst:2616 msgid "" @@ -5141,7 +5615,6 @@ msgstr "" "proyecto para el Summer of Code 2007 de Google)" #: ../Doc/whatsnew/2.6.rst:2624 -#, fuzzy msgid "" "The :mod:`xmlrpclib ` module no longer automatically " "converts :class:`datetime.date` and :class:`datetime.time` to the :class:" @@ -5153,15 +5626,15 @@ msgid "" "by using ```` in XML-RPC responses (contributed by Riku Lindblad; :issue:" "`2985`)." msgstr "" -"El módulo :mod:`xmlrpclib` ya no convierte automáticamente las instancias :" +"El módulo :mod:`xmlrpclib ` ya no convierte automáticamente :" "class:`datetime.date` y :class:`datetime.time` al tipo :class:`xmlrpclib." -"DateTime`; la semántica de conversión no era necesariamente correcta para " -"todas las aplicaciones. El código que utiliza :mod:`xmlrpclib` debe " -"convertir las instancias :class:`date` y :class:`~datetime.time`. (:issue:" -"`1330538`) El código también puede manejar fechas anteriores a 1900 " -"(contribución de Ralf Schmitt; :issue:`2014`) y enteros de 64 bits " -"representados mediante el uso de ```` en las respuestas XML-RPC " -"(contribución de Riku Lindblad; :issue:`2985`)." +"DateTime `; la semántica de conversión no era " +"necesariamente correcta para todas las aplicaciones. El código que utiliza :" +"mod:`!xmlrpclib` debería convertir las instancias :class:`date` y :class:" +"`~datetime.time`. (:issue:`1330538`) El código también puede manejar fechas " +"anteriores a 1900 (contribuido por Ralf Schmitt; :issue:`2014`) y números " +"enteros de 64 bits representados mediante el uso de ```` en respuestas " +"XML-RPC (contribuido por Riku Lindblad; :issue:`2985`)." #: ../Doc/whatsnew/2.6.rst:2634 msgid "" @@ -5185,6 +5658,14 @@ msgid "" "# Unpack all the files in the archive.\n" "z.extractall()" msgstr "" +"z = zipfile.ZipFile('python-251.zip')\n" +"\n" +"# Unpack a single file, writing it relative\n" +"# to the /tmp directory.\n" +"z.extract('Python/sysmodule.c', '/tmp')\n" +"\n" +"# Unpack all the files in the archive.\n" +"z.extractall()" #: ../Doc/whatsnew/2.6.rst:2648 msgid "(Contributed by Alan McIntyre; :issue:`467924`.)" @@ -5249,6 +5730,15 @@ msgid "" "\"\"\")\n" "print ast.dump(t)" msgstr "" +"import ast\n" +"\n" +"t = ast.parse(\"\"\"\n" +"d = {}\n" +"for i in 'abcdefghijklm':\n" +" d[i + i] = ord(i) - ord('a') + 1\n" +"print d\n" +"\"\"\")\n" +"print ast.dump(t)" #: ../Doc/whatsnew/2.6.rst:2685 msgid "This outputs a deeply nested tree::" @@ -5287,6 +5777,36 @@ msgid "" " ], nl=True)\n" " ])" msgstr "" +"Module(body=[\n" +" Assign(targets=[\n" +" Name(id='d', ctx=Store())\n" +" ], value=Dict(keys=[], values=[]))\n" +" For(target=Name(id='i', ctx=Store()),\n" +" iter=Str(s='abcdefghijklm'), body=[\n" +" Assign(targets=[\n" +" Subscript(value=\n" +" Name(id='d', ctx=Load()),\n" +" slice=\n" +" Index(value=\n" +" BinOp(left=Name(id='i', ctx=Load()), op=Add(),\n" +" right=Name(id='i', ctx=Load()))), ctx=Store())\n" +" ], value=\n" +" BinOp(left=\n" +" BinOp(left=\n" +" Call(func=\n" +" Name(id='ord', ctx=Load()), args=[\n" +" Name(id='i', ctx=Load())\n" +" ], keywords=[], starargs=None, kwargs=None),\n" +" op=Sub(), right=Call(func=\n" +" Name(id='ord', ctx=Load()), args=[\n" +" Str(s='a')\n" +" ], keywords=[], starargs=None, kwargs=None)),\n" +" op=Add(), right=Num(n=1)))\n" +" ], orelse=[])\n" +" Print(dest=None, values=[\n" +" Name(id='d', ctx=Load())\n" +" ], nl=True)\n" +" ])" #: ../Doc/whatsnew/2.6.rst:2718 msgid "" @@ -5315,6 +5835,13 @@ msgid "" " ...\n" "ValueError: malformed string" msgstr "" +">>> literal = '(\"a\", \"b\", {2:4, 3:8, 1:2})'\n" +">>> print ast.literal_eval(literal)\n" +"('a', 'b', {1: 2, 2: 4, 3: 8})\n" +">>> print ast.literal_eval('\"a\" + \"b\"')\n" +"Traceback (most recent call last):\n" +" ...\n" +"ValueError: malformed string" #: ../Doc/whatsnew/2.6.rst:2734 msgid "" @@ -5414,6 +5941,13 @@ msgid "" ">>> json.loads(in_json) # Decode into a Python object\n" "{\"spam\": \"foo\", \"parrot\": 42}" msgstr "" +">>> import json\n" +">>> data = {\"spam\": \"foo\", \"parrot\": 42}\n" +">>> in_json = json.dumps(data) # Encode the data\n" +">>> in_json\n" +"'{\"parrot\": 42, \"spam\": \"foo\"}'\n" +">>> json.loads(in_json) # Decode into a Python object\n" +"{\"spam\": \"foo\", \"parrot\": 42}" #: ../Doc/whatsnew/2.6.rst:2788 msgid "" @@ -5484,6 +6018,27 @@ msgid "" "# read/writePlist accepts file-like objects as well as paths.\n" "plistlib.writePlist(data_struct, sys.stdout)" msgstr "" +"import sys\n" +"import plistlib\n" +"import datetime\n" +"\n" +"# Create data structure\n" +"data_struct = dict(lastAccessed=datetime.datetime.now(),\n" +" version=1,\n" +" categories=('Personal','Shared','Private'))\n" +"\n" +"# Create string containing XML.\n" +"plist_str = plistlib.writePlistToString(data_struct)\n" +"new_struct = plistlib.readPlistFromString(plist_str)\n" +"print data_struct\n" +"print new_struct\n" +"\n" +"# Write data structure to a file and read it back.\n" +"plistlib.writePlist(data_struct, '/tmp/customizations.plist')\n" +"new_struct = plistlib.readPlist('/tmp/customizations.plist')\n" +"\n" +"# read/writePlist accepts file-like objects as well as paths.\n" +"plistlib.writePlist(data_struct, sys.stdout)" #: ../Doc/whatsnew/2.6.rst:2837 msgid "ctypes Enhancements" @@ -5624,15 +6179,14 @@ msgstr "" "produce un :exc:`TypeError`." #: ../Doc/whatsnew/2.6.rst:2911 -#, fuzzy msgid "" "Changes to the :class:`Exception` interface as dictated by :pep:`352` " "continue to be made. For 2.6, the :attr:`!message` attribute is being " "deprecated in favor of the :attr:`~BaseException.args` attribute." msgstr "" -"Los cambios en la interfaz :class:`Exception` dictados por :pep:`352` siguen " -"realizándose. En la versión 2.6, el atributo :attr:`message` queda obsoleto " -"en favor del atributo :attr:`args`." +"Se siguen realizando cambios en la interfaz :class:`Exception` según lo " +"dictado por :pep:`352`. En la versión 2.6, el atributo :attr:`!message` se " +"está reemplazando por el atributo :attr:`~BaseException.args`." #: ../Doc/whatsnew/2.6.rst:2916 msgid "" @@ -5646,7 +6200,6 @@ msgstr "" "se importen." #: ../Doc/whatsnew/2.6.rst:2921 -#, fuzzy msgid "" "The list of deprecated modules is: :mod:`!audiodev`, :mod:`!bgenlocations`, :" "mod:`!buildtools`, :mod:`!bundlebuilder`, :mod:`!Canvas`, :mod:`!compiler`, :" @@ -5656,76 +6209,68 @@ msgid "" "mod:`!statvfs`, :mod:`!sunaudiodev`, :mod:`!test.testall`, and :mod:`!" "toaiff`." msgstr "" -"La lista de módulos obsoletos es: :mod:`audiodev`, :mod:`bgenlocations`, :" -"mod:`buildtools`, :mod:`bundlebuilder`, :mod:`Canvas`, :mod:`compiler`, :mod:" -"`dircache`, :mod:`dl`, :mod:`fpformat`, :mod:`gensuitemodule`, :mod:" -"`ihooks`, :mod:`imageop`, :mod:`imgfile`, :mod:`linuxaudiodev`, :mod:" -"`mhlib`, :mod:`mimetools`, :mod:`multifile`, :mod:`new`, :mod:`pure`, :mod:" -"`statvfs`, :mod:`sunaudiodev`, :mod:`test.testall`, y :mod:`toaiff`." +"La lista de módulos obsoletos es: :mod:`!audiodev`, :mod:`!bgenlocations`, :" +"mod:`!buildtools`, :mod:`!bundlebuilder`, :mod:`!Canvas`, :mod:`!compiler`, :" +"mod:`!dircache`, :mod:`!dl`, :mod:`!fpformat`, :mod:`!gensuitemodule`, :mod:" +"`!ihooks`, :mod:`!imageop`, :mod:`!imgfile`, :mod:`!linuxaudiodev`, :mod:`!" +"mhlib`, :mod:`!mimetools`, :mod:`!multifile`, :mod:`!new`, :mod:`!pure`, :" +"mod:`!statvfs`, :mod:`!sunaudiodev`, :mod:`!test.testall` y :mod:`!toaiff`." #: ../Doc/whatsnew/2.6.rst:2946 -#, fuzzy msgid "The :mod:`!gopherlib` module has been removed." -msgstr "El módulo :mod:`gopherlib` ha sido eliminado." +msgstr "El módulo :mod:`!gopherlib` ha sido eliminado." #: ../Doc/whatsnew/2.6.rst:2948 -#, fuzzy msgid "" "The :mod:`!MimeWriter` module and :mod:`!mimify` module have been " "deprecated; use the :mod:`email` package instead." msgstr "" -"El módulo :mod:`MimeWriter` y el módulo :mod:`mimify` han quedado obsoletos; " -"utilice en su lugar el paquete :mod:`email`." +"El módulo :mod:`!MimeWriter` y el módulo :mod:`!mimify` han quedado " +"obsoletos; utilice en su lugar el paquete :mod:`email`." #: ../Doc/whatsnew/2.6.rst:2952 -#, fuzzy msgid "" "The :mod:`!md5` module has been deprecated; use the :mod:`hashlib` module " "instead." msgstr "" -"El módulo :mod:`md5` ha quedado obsoleto; utilice en su lugar el módulo :mod:" -"`hashlib`." +"El módulo :mod:`!md5` ha quedado obsoleto; utilice en su lugar el módulo :" +"mod:`hashlib`." #: ../Doc/whatsnew/2.6.rst:2955 -#, fuzzy msgid "" "The :mod:`!posixfile` module has been deprecated; :func:`fcntl.lockf` " "provides better locking." msgstr "" -"El módulo :mod:`posixfile` ha quedado obsoleto; :func:`fcntl.lockf` " +"El módulo :mod:`!posixfile` ha quedado obsoleto; :func:`fcntl.lockf` " "proporciona un mejor bloqueo." #: ../Doc/whatsnew/2.6.rst:2958 -#, fuzzy msgid "" "The :mod:`!popen2` module has been deprecated; use the :mod:`subprocess` " "module." msgstr "" -"El módulo :mod:`popen2` ha quedado obsoleto; utilice el módulo :mod:" +"El módulo :mod:`!popen2` ha quedado obsoleto; utilice el módulo :mod:" "`subprocess`." #: ../Doc/whatsnew/2.6.rst:2961 -#, fuzzy msgid "The :mod:`!rgbimg` module has been removed." -msgstr "Se ha eliminado el módulo :mod:`rgbimg`." +msgstr "Se ha eliminado el módulo :mod:`!rgbimg`." #: ../Doc/whatsnew/2.6.rst:2963 -#, fuzzy msgid "" "The :mod:`!sets` module has been deprecated; it's better to use the built-" "in :class:`set` and :class:`frozenset` types." msgstr "" -"El módulo :mod:`sets` ha quedado obsoleto; es mejor utilizar los tipos " +"El módulo :mod:`!sets` ha quedado obsoleto; es mejor utilizar los tipos " "incorporados :class:`set` y :class:`frozenset`." #: ../Doc/whatsnew/2.6.rst:2966 -#, fuzzy msgid "" "The :mod:`!sha` module has been deprecated; use the :mod:`hashlib` module " "instead." msgstr "" -"El módulo :mod:`sha` ha quedado obsoleto; utilice en su lugar el módulo :mod:" -"`hashlib`." +"El módulo :mod:`!sha` ha quedado obsoleto; utilice en su lugar el módulo :" +"mod:`hashlib`." #: ../Doc/whatsnew/2.6.rst:2974 msgid "Build and C API Changes" @@ -5781,6 +6326,10 @@ msgid "" "directory containing the script named by ``sys.argv[0]`` depending on the " "value of an *updatepath* parameter." msgstr "" +"Una nueva función agregada en Python 2.6.6, :c:func:`!PySys_SetArgvEx`, " +"establece el valor de ``sys.argv`` y opcionalmente puede actualizar ``sys." +"path`` para incluir el directorio que contiene el script nombrado por ``sys." +"argv[0]`` dependiendo del valor de un parámetro *updatepath*." #: ../Doc/whatsnew/2.6.rst:3000 msgid "" @@ -5792,6 +6341,14 @@ msgid "" "(say, a file named :file:`os.py`) that your application would then import " "and run." msgstr "" +"Esta función se agregó para cerrar un agujero de seguridad en las " +"aplicaciones que incorporan Python. La función anterior, :c:func:`!" +"PySys_SetArgv`, siempre actualizaba ``sys.path`` y, a veces, añadía el " +"directorio actual. Esto significaba que, si ejecutaba una aplicación que " +"incorporaba Python en un directorio controlado por otra persona, los " +"atacantes podían colocar un módulo troyano en el directorio (por ejemplo, un " +"archivo llamado :file:`os.py`) que su aplicación luego importaría y " +"ejecutaría." #: ../Doc/whatsnew/2.6.rst:3008 msgid "" @@ -5804,12 +6361,22 @@ msgid "" "and call ``PyRun_SimpleString(\"sys.path.pop(0)\\n\")`` afterwards to " "discard the first ``sys.path`` component." msgstr "" +"Si mantiene una aplicación C/C++ que incorpora Python, verifique si está " +"llamando a :c:func:`!PySys_SetArgv` y considere cuidadosamente si la " +"aplicación debería usar :c:func:`!PySys_SetArgvEx` con *updatepath* " +"configurado como falso. Tenga en cuenta que el uso de esta función romperá " +"la compatibilidad con las versiones 2.6.5 y anteriores de Python; si tiene " +"que continuar trabajando con versiones anteriores, puede dejar la llamada a :" +"c:func:`!PySys_SetArgv` y llamar a ``PyRun_SimpleString(\"sys.path." +"pop(0)\\n\")`` después para descartar el primer componente ``sys.path``." #: ../Doc/whatsnew/2.6.rst:3018 msgid "" "Security issue reported as :cve:`2008-5983`; discussed in :gh:`50003`, and " "fixed by Antoine Pitrou." msgstr "" +"Problema de seguridad informado como :cve:`2008-5983`; discutido en :gh:" +"`50003` y solucionado por Antoine Pitrou." #: ../Doc/whatsnew/2.6.rst:3021 msgid "" @@ -5876,7 +6443,6 @@ msgstr "" "genera un :exc:`ImportError`. (Contribuido por Christian Heimes.)" #: ../Doc/whatsnew/2.6.rst:3052 -#, fuzzy msgid "" "Several functions return information about the platform's floating-point " "support. :c:func:`PyFloat_GetMax` returns the maximum representable " @@ -5887,14 +6453,14 @@ msgid "" "and the next largest value representable), and several others. (Contributed " "by Christian Heimes; :issue:`1534`.)" msgstr "" -"Varias funciones devuelven información sobre el soporte de punto flotante de " -"la plataforma. :c:func:`PyFloat_GetMax` devuelve el máximo valor de punto " -"flotante representable, y :c:func:`PyFloat_GetMin` devuelve el mínimo valor " -"positivo. :c:func:`PyFloat_GetInfo` devuelve un objeto que contiene más " -"información del fichero :file:`float.h`, como ``\"mant_dig\"`` (número de " -"dígitos en la mantisa), ``\"epsilon\"`` (diferencia más pequeña entre 1.0 y " -"el siguiente valor más grande representable), y varios otros. (Contribución " -"de Christian Heimes; :issue:`1534`.)" +"Varias funciones devuelven información sobre la compatibilidad de punto " +"flotante de la plataforma. :c:func:`PyFloat_GetMax` devuelve el valor máximo " +"representable de punto flotante y :c:func:`PyFloat_GetMin` devuelve el valor " +"positivo mínimo. :c:func:`PyFloat_GetInfo` devuelve un objeto que contiene " +"más información del archivo :file:`float.h`, como ``\"mant_dig\"`` (número " +"de dígitos en la mantisa), ``\"epsilon\"`` (diferencia más pequeña entre 1.0 " +"y el siguiente valor más grande representable) y varios otros. (Contribuido " +"por Christian Heimes; :issue:`1534`.)" #: ../Doc/whatsnew/2.6.rst:3063 msgid "" @@ -6036,7 +6602,6 @@ msgstr "" "Christian Heimes con la ayuda de Amaury Forgeot d'Arc y Martin von Löwis)" #: ../Doc/whatsnew/2.6.rst:3131 -#, fuzzy msgid "" "The :mod:`msvcrt` module now supports both the normal and wide char variants " "of the console I/O API. The :func:`~msvcrt.getwch` function reads a " @@ -6044,11 +6609,11 @@ msgid "" "function. The :func:`~msvcrt.putwch` function takes a Unicode character and " "writes it to the console. (Contributed by Christian Heimes.)" msgstr "" -"El módulo :mod:`msvcrt` soporta ahora las variantes normal y wide char de la " -"API de E/S de la consola. La función :func:`getwch` lee una pulsación de " -"tecla y devuelve un valor Unicode, al igual que la función :func:`getwche`. " -"La función :func:`putwch` toma un carácter Unicode y lo escribe en la " -"consola. (Contribución de Christian Heimes)" +"El módulo :mod:`msvcrt` ahora admite las variantes de caracteres normales y " +"anchos de la API de E/S de la consola. La función :func:`~msvcrt.getwch` lee " +"una pulsación de tecla y devuelve un valor Unicode, al igual que la función :" +"func:`~msvcrt.getwche`. La función :func:`~msvcrt.putwch` toma un carácter " +"Unicode y lo escribe en la consola. (Contribuido por Christian Heimes)." #: ../Doc/whatsnew/2.6.rst:3138 msgid "" @@ -6061,18 +6626,16 @@ msgstr "" "del usuario. (Contribución de Josiah Carlson; :issue:`957650`.)" #: ../Doc/whatsnew/2.6.rst:3142 -#, fuzzy msgid "" "The :mod:`socket` module's socket objects now have an :meth:`~socket.socket." "ioctl` method that provides a limited interface to the :c:func:`WSAIoctl` " "system interface." msgstr "" -"Los objetos socket del módulo :mod:`socket` tienen ahora un método :meth:" -"`ioctl` que proporciona una interfaz limitada a la interfaz del sistema :c:" -"func:`WSAIoctl`." +"Los objetos de socket del módulo :mod:`socket` ahora tienen un método :meth:" +"`~socket.socket.ioctl` que proporciona una interfaz limitada a la interfaz " +"del sistema :c:func:`WSAIoctl`." #: ../Doc/whatsnew/2.6.rst:3146 -#, fuzzy msgid "" "The :mod:`_winreg ` module now has a function, :func:`~winreg." "ExpandEnvironmentStrings`, that expands environment variable references such " @@ -6080,15 +6643,14 @@ msgid "" "module now support the context protocol, so they can be used in :keyword:" "`with` statements. (Contributed by Christian Heimes.)" msgstr "" -"El módulo :mod:`_winreg` tiene ahora una función, :func:" -"`ExpandEnvironmentStrings`, que expande las referencias a variables de " -"entorno como ``%NAME%`` en una cadena de entrada. Los objetos handle " -"proporcionados por este módulo ahora soportan el protocolo de contexto, por " -"lo que pueden ser utilizados en sentencias :keyword:`with`. (Contribuido por " -"Christian Heimes.)" +"El módulo :mod:`_winreg ` ahora tiene una función, :func:`~winreg." +"ExpandEnvironmentStrings`, que expande las referencias de variables de " +"entorno como ``%NAME%`` en una cadena de entrada. Los objetos de control " +"proporcionados por este módulo ahora admiten el protocolo de contexto, por " +"lo que se pueden utilizar en instrucciones :keyword:`with`. (Contribuido por " +"Christian Heimes)." #: ../Doc/whatsnew/2.6.rst:3153 -#, fuzzy msgid "" ":mod:`_winreg ` also has better support for x64 systems, exposing " "the :func:`~winreg.DisableReflectionKey`, :func:`~winreg." @@ -6096,23 +6658,21 @@ msgid "" "which enable and disable registry reflection for 32-bit processes running on " "64-bit systems. (:issue:`1753245`)" msgstr "" -":mod:`_winreg` también tiene un mejor soporte para los sistemas x64, " -"exponiendo las funciones :func:`DisableReflectionKey`, :func:" -"`EnableReflectionKey`, y :func:`QueryReflectionKey`, que habilitan y " -"deshabilitan la reflexión del registro para los procesos de 32 bits que se " -"ejecutan en sistemas de 64 bits. (:issue:`1753245`)" +":mod:`_winreg ` también tiene un mejor soporte para sistemas x64, " +"exponiendo las funciones :func:`~winreg.DisableReflectionKey`, :func:" +"`~winreg.EnableReflectionKey` y :func:`~winreg.QueryReflectionKey`, que " +"habilitan y deshabilitan la reflexión del registro para procesos de 32 bits " +"que se ejecutan en sistemas de 64 bits. (:issue:`1753245`)" #: ../Doc/whatsnew/2.6.rst:3159 -#, fuzzy msgid "" "The :mod:`!msilib` module's :class:`!Record` object gained :meth:`!" "GetInteger` and :meth:`!GetString` methods that return field values as an " "integer or a string. (Contributed by Floris Bruynooghe; :issue:`2125`.)" msgstr "" -"El objeto :class:`Record` del módulo :mod:`msilib` ha ganado los métodos :" -"meth:`GetInteger` y :meth:`GetString` que devuelven los valores de los " -"campos como un entero o una cadena. (Contribución de Floris Bruynooghe; :" -"issue:`2125`.)" +"El objeto :class:`!Record` del módulo :mod:`!msilib` obtuvo los métodos :" +"meth:`!GetInteger` y :meth:`!GetString` que devuelven valores de campo como " +"un entero o una cadena. (Contribuido por Floris Bruynooghe; :issue:`2125`)." #: ../Doc/whatsnew/2.6.rst:3167 msgid "Port-Specific Changes: Mac OS X" @@ -6129,18 +6689,16 @@ msgstr "" "`!--with-framework-name=` al script :program:`configure`." #: ../Doc/whatsnew/2.6.rst:3174 -#, fuzzy msgid "" "The :mod:`!macfs` module has been removed. This in turn required the :func:" "`!macostools.touched` function to be removed because it depended on the :mod:" "`!macfs` module. (:issue:`1490190`)" msgstr "" -"Se ha eliminado el módulo :mod:`macfs`. Esto, a su vez, ha requerido la " -"eliminación de la función :func:`macostools.touched` porque dependía del " -"módulo :mod:`macfs`. (:issue:`1490190`)" +"Se ha eliminado el módulo :mod:`!macfs`. Esto a su vez requirió que se " +"eliminara la función :func:`!macostools.touched` porque dependía del módulo :" +"mod:`!macfs`. (:issue:`1490190`)" #: ../Doc/whatsnew/2.6.rst:3178 -#, fuzzy msgid "" "Many other Mac OS modules have been deprecated and will be removed in Python " "3.0: :mod:`!_builtinSuites`, :mod:`!aepack`, :mod:`!aetools`, :mod:`!" @@ -6154,23 +6712,23 @@ msgid "" "OSATerminology`, :mod:`!pimp`, :mod:`!PixMapWrapper`, :mod:`!StdSuites`, :" "mod:`!SystemEvents`, :mod:`!Terminal`, and :mod:`!terminalcommand`." msgstr "" -"Muchos otros módulos de Mac OS han quedado obsoletos y serán eliminados en " -"Python 3.0: :mod:`_builtinSuites`, :mod:`aepack`, :mod:`aetools`, :mod:" -"`aetypes`, :mod:`applesingle`, :mod:`appletrawmain`, :mod:`appletrunner`, :" -"mod:`argvemulator`, :mod:`Audio_mac`, :mod:`autoGIL`, :mod:`Carbon`, :mod:" -"`cfmfile`, :mod:`CodeWarrior`, :mod:`ColorPicker`, :mod:`EasyDialogs`, :mod:" -"`Explorer`, :mod:`Finder`, :mod:`FrameWork`, :mod:`findertools`, :mod:`ic`, :" -"mod:`icglue`, :mod:`icopen`, :mod:`macerrors`, :mod:`MacOS`, :mod:`macfs`, :" -"mod:`macostools`, :mod:`macresource`, :mod:`MiniAEFrame`, :mod:`Nav`, :mod:" -"`Netscape`, :mod:`OSATerminology`, :mod:`pimp`, :mod:`PixMapWrapper`, :mod:" -"`StdSuites`, :mod:`SystemEvents`, :mod:`Terminal`, y :mod:`terminalcommand`." +"Muchos otros módulos de Mac OS han quedado obsoletos y se eliminarán en " +"Python 3.0: :mod:`!_builtinSuites`, :mod:`!aepack`, :mod:`!aetools`, :mod:`!" +"aetypes`, :mod:`!applesingle`, :mod:`!appletrawmain`, :mod:`!appletrunner`, :" +"mod:`!argvemulator`, :mod:`!Audio_mac`, :mod:`!autoGIL`, :mod:`!Carbon`, :" +"mod:`!cfmfile`, :mod:`!CodeWarrior`, :mod:`!ColorPicker`, :mod:`!" +"EasyDialogs`, :mod:`!Explorer`, :mod:`!Finder`, :mod:`!FrameWork`, :mod:`!" +"findertools`, :mod:`!ic`, :mod:`!icglue`, :mod:`!icopen`, :mod:`!" +"macerrors`, :mod:`!MacOS`, :mod:`!macfs`, :mod:`!macostools`, :mod:`!" +"macresource`, :mod:`!MiniAEFrame`, :mod:`!Nav`, :mod:`!Netscape`, :mod:`!" +"OSATerminology`, :mod:`!pimp`, :mod:`!PixMapWrapper`, :mod:`!StdSuites`, :" +"mod:`!SystemEvents`, :mod:`!Terminal` y :mod:`!terminalcommand`." #: ../Doc/whatsnew/2.6.rst:3221 msgid "Port-Specific Changes: IRIX" msgstr "Cambios específicos en los puertos: IRIX" #: ../Doc/whatsnew/2.6.rst:3223 -#, fuzzy msgid "" "A number of old IRIX-specific modules were deprecated and will be removed in " "Python 3.0: :mod:`!al` and :mod:`!AL`, :mod:`!cd`, :mod:`!cddb`, :mod:`!" @@ -6180,13 +6738,13 @@ msgid "" "jpeg`, :mod:`!panelparser`, :mod:`!readcd`, :mod:`!SV` and :mod:`!sv`, :mod:" "`!torgb`, :mod:`!videoreader`, and :mod:`!WAIT`." msgstr "" -"Una serie de antiguos módulos específicos de IRIX fueron obsoletos y serán " -"eliminados en Python 3.0: :mod:`al` y :mod:`AL`, :mod:`cd`, :mod:`cddb`, :" -"mod:`cdplayer`, :mod:`CL` y :mod:`cl`, :mod:`DEVICE`, :mod:`ERRNO`, :mod:" -"`FILE`, :mod:`FL` y :mod:`fl`, :mod:`flp`, :mod:`fm`, :mod:`GET`, :mod:" -"`GLWS`, :mod:`GL` y :mod:`gl`, :mod:`IN`, :mod:`IOCTL`, :mod:`jpeg`, :mod:" -"`panelparser`, :mod:`readcd`, :mod:`SV` y :mod:`sv`, :mod:`torgb`, :mod:" -"`videoreader` y :mod:`WAIT`." +"Varios módulos antiguos específicos de IRIX quedaron obsoletos y se " +"eliminarán en Python 3.0: :mod:`!al` y :mod:`!AL`, :mod:`!cd`, :mod:`!" +"cddb`, :mod:`!cdplayer`, :mod:`!CL` y :mod:`!cl`, :mod:`!DEVICE`, :mod:`!" +"ERRNO`, :mod:`!FILE`, :mod:`!FL` y :mod:`!fl`, :mod:`!flp`, :mod:`!fm`, :mod:" +"`!GET`, :mod:`!GLWS`, :mod:`!GL` y :mod:`!gl`, :mod:`!IN`, :mod:`!IOCTL`, :" +"mod:`!jpeg`, :mod:`!panelparser`, :mod:`!readcd`, :mod:`!SV` y :mod:`!sv`, :" +"mod:`!torgb`, :mod:`!videoreader` y :mod:`!WAIT`." #: ../Doc/whatsnew/2.6.rst:3253 msgid "Porting to Python 2.6" @@ -6294,7 +6852,6 @@ msgstr "" "Smith; :issue:`1706815`.)" #: ../Doc/whatsnew/2.6.rst:3303 -#, fuzzy msgid "" "The :mod:`xmlrpclib ` module no longer automatically " "converts :class:`datetime.date` and :class:`datetime.time` to the :class:" @@ -6303,12 +6860,12 @@ msgid "" "xmlrpclib` should convert :class:`date` and :class:`~datetime.time` " "instances. (:issue:`1330538`)" msgstr "" -"El módulo :mod:`xmlrpclib` ya no convierte automáticamente las instancias :" +"El módulo :mod:`xmlrpclib ` ya no convierte automáticamente :" "class:`datetime.date` y :class:`datetime.time` al tipo :class:`xmlrpclib." -"DateTime`; la semántica de conversión no era necesariamente correcta para " -"todas las aplicaciones. El código que utiliza :mod:`xmlrpclib` debe " -"convertir las instancias :class:`date` y :class:`~datetime.time`. (:issue:" -"`1330538`)" +"DateTime `; la semántica de conversión no era " +"necesariamente correcta para todas las aplicaciones. El código que utiliza :" +"mod:`!xmlrpclib` debería convertir las instancias :class:`date` y :class:" +"`~datetime.time`. (:issue:`1330538`)" #: ../Doc/whatsnew/2.6.rst:3310 msgid "" @@ -6343,7 +6900,7 @@ msgstr "" #: ../Doc/whatsnew/2.6.rst:3323 msgid "For applications that embed Python:" -msgstr "" +msgstr "Para aplicaciones que incorporan Python:" #: ../Doc/whatsnew/2.6.rst:3325 msgid "" @@ -6353,6 +6910,11 @@ msgid "" "PySys_SetArgv` and carefully consider whether the application should be " "using :c:func:`!PySys_SetArgvEx` with *updatepath* set to false." msgstr "" +"La función :c:func:`!PySys_SetArgvEx` se agregó en Python 2.6.6, lo que " +"permite que las aplicaciones cierren un agujero de seguridad cuando se usa " +"la función :c:func:`!PySys_SetArgv` existente. Verifique si está llamando a :" +"c:func:`!PySys_SetArgv` y considere cuidadosamente si la aplicación debería " +"usar :c:func:`!PySys_SetArgvEx` con *updatepath* configurado como falso." #: ../Doc/whatsnew/2.6.rst:3338 msgid "Acknowledgements" From 9b1e0f5b5de1b636b50ac51c8b047c1445bbd5b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cristi=C3=A1n=20Maureira-Fredes?= Date: Tue, 14 Oct 2025 11:57:52 +0200 Subject: [PATCH 58/78] Translate library/dis (#3328) Closes #3070 --- dictionaries/library_dis.txt | 1 + library/dis.po | 953 +++++++++++++++++++++-------------- 2 files changed, 582 insertions(+), 372 deletions(-) diff --git a/dictionaries/library_dis.txt b/dictionaries/library_dis.txt index 3acc3aa3d8..297f805276 100644 --- a/dictionaries/library_dis.txt +++ b/dictionaries/library_dis.txt @@ -1 +1,2 @@ +especializarlo oparg diff --git a/library/dis.po b/library/dis.po index 86b5a6dd5e..efcbadac43 100644 --- a/library/dis.po +++ b/library/dis.po @@ -11,20 +11,20 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: 2021-11-05 23:34+0800\n" -"Last-Translator: Rodrigo Tobar \n" -"Language: es\n" +"PO-Revision-Date: 2024-11-24 19:55+0100\n" +"Last-Translator: Cristián Maureira-Fredes \n" "Language-Team: python-doc-es\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\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.16.0\n" +"X-Generator: Poedit 3.4.2\n" #: ../Doc/library/dis.rst:2 -#, fuzzy msgid ":mod:`!dis` --- Disassembler for Python bytecode" -msgstr ":mod:`dis` --- Desensamblador para bytecode de Python" +msgstr ":mod:`!dis` --- Desensamblador para bytecode de Python" #: ../Doc/library/dis.rst:7 msgid "**Source code:** :source:`Lib/dis.py`" @@ -72,7 +72,6 @@ msgstr "" "byte." #: ../Doc/library/dis.rst:37 -#, fuzzy msgid "" "Some instructions are accompanied by one or more inline cache entries, which " "take the form of :opcode:`CACHE` instructions. These instructions are hidden " @@ -81,10 +80,13 @@ msgid "" "specialize it for different runtime conditions. The adaptive bytecode can be " "shown by passing ``adaptive=True``." msgstr "" -"Algunas instrucciones van acompañadas de una o más entradas de caché en " -"línea, que adoptan la forma de instrucciones :opcode:`CACHE`. Estas " +"Algunas instrucciones están acompañadas de una o más entradas de caché en " +"línea, que toman la forma de instrucciones :opcode:`CACHE`. Estas " "instrucciones están ocultas de forma predeterminada, pero se pueden mostrar " -"pasando ``show_caches=True`` a cualquier utilidad :mod:`dis`." +"al pasar ``show_caches=True`` a cualquier utilidad :mod:`dis`. Además, el " +"intérprete ahora adapta el código de bytes para especializarlo en diferentes " +"condiciones de ejecución. El código de bytes adaptativo se puede mostrar al " +"pasar ``adaptive=True``." #: ../Doc/library/dis.rst:45 msgid "" @@ -92,6 +94,9 @@ msgid "" "the instruction that appears immediately after the jump instruction's :" "opcode:`CACHE` entries." msgstr "" +"El argumento de un salto es el desplazamiento de la instrucción de destino " +"en relación con la instrucción que aparece inmediatamente después de las " +"entradas :opcode:`CACHE` de la instrucción de salto." #: ../Doc/library/dis.rst:50 msgid "" @@ -99,6 +104,9 @@ msgid "" "transparent for forward jumps but needs to be taken into account when " "reasoning about backward jumps." msgstr "" +"Como consecuencia, la presencia de las instrucciones :opcode:`CACHE` es " +"transparente para los saltos hacia adelante, pero debe tenerse en cuenta al " +"razonar sobre los saltos hacia atrás." #: ../Doc/library/dis.rst:54 msgid "" @@ -106,26 +114,30 @@ msgid "" "targets and exception handlers. The ``-O`` command line option and the " "``show_offsets`` argument were added." msgstr "" +"La salida muestra etiquetas lógicas en lugar de desplazamientos de " +"instrucciones para destinos de salto y controladores de excepciones. Se " +"agregaron la opción de línea de comandos ``-O`` y el argumento " +"``show_offsets``." #: ../Doc/library/dis.rst:59 -#, fuzzy msgid "Example: Given the function :func:`!myfunc`::" -msgstr "Ejemplo: dada la función :func:`myfunc`::" +msgstr "Ejemplo: Dada la función :func:`!myfunc`::" #: ../Doc/library/dis.rst:61 msgid "" "def myfunc(alist):\n" " return len(alist)" msgstr "" +"def myfunc(alist):\n" +" return len(alist)" #: ../Doc/library/dis.rst:64 -#, fuzzy msgid "" "the following command can be used to display the disassembly of :func:`!" "myfunc`:" msgstr "" -"el siguiente comando se puede utilizar para mostrar el desmontaje de :func:" -"`myfunc`:" +"El siguiente comando se puede utilizar para mostrar el desmontaje de :func:`!" +"myfunc`:" #: ../Doc/library/dis.rst:67 msgid "" @@ -137,6 +149,13 @@ msgid "" " CALL 1\n" " RETURN_VALUE" msgstr "" +">>> dis.dis(myfunc)\n" +" 2 RESUME 0\n" +"\n" +" 3 LOAD_GLOBAL 1 (len + NULL)\n" +" LOAD_FAST 0 (alist)\n" +" CALL 1\n" +" RETURN_VALUE" #: ../Doc/library/dis.rst:77 msgid "(The \"2\" is a line number)." @@ -144,32 +163,33 @@ msgstr "(El \"2\" es un número de línea)." #: ../Doc/library/dis.rst:82 msgid "Command-line interface" -msgstr "" +msgstr "Interfaz de línea de comandos" #: ../Doc/library/dis.rst:84 msgid "The :mod:`dis` module can be invoked as a script from the command line:" msgstr "" +"El módulo :mod:`dis` se puede invocar como un script desde la línea de " +"comandos:" #: ../Doc/library/dis.rst:86 msgid "python -m dis [-h] [-C] [-O] [infile]" -msgstr "" +msgstr "python -m dis [-h] [-C] [-O] [infile]" #: ../Doc/library/dis.rst:90 msgid "The following options are accepted:" -msgstr "" +msgstr "Se aceptan las siguientes opciones:" #: ../Doc/library/dis.rst:96 msgid "Display usage and exit." -msgstr "" +msgstr "Mostrar uso y salir." #: ../Doc/library/dis.rst:100 msgid "Show inline caches." -msgstr "" +msgstr "Mostrar cachés en línea." #: ../Doc/library/dis.rst:104 -#, fuzzy msgid "Show offsets of instructions." -msgstr "Instrucciones bytecode de Python" +msgstr "Mostrar desplazamientos de instrucciones." #: ../Doc/library/dis.rst:106 msgid "" @@ -177,6 +197,9 @@ msgid "" "stdout. Otherwise, disassembly is performed on compiled source code received " "from stdin." msgstr "" +"Si se especifica :file:`infile`, su código desensamblado se escribirá en la " +"salida estándar. De lo contrario, el desensamblado se realiza en el código " +"fuente compilado recibido de la entrada estándar." #: ../Doc/library/dis.rst:110 msgid "Bytecode analysis" @@ -241,18 +264,24 @@ msgid "" "If *show_caches* is ``True``, :meth:`.dis` will display inline cache entries " "used by the interpreter to specialize the bytecode." msgstr "" +"Si *show_caches* es ``True``, :meth:`.dis` mostrará las entradas de caché en " +"línea utilizadas por el intérprete para especializar el código de bytes." #: ../Doc/library/dis.rst:141 msgid "" "If *adaptive* is ``True``, :meth:`.dis` will display specialized bytecode " "that may be different from the original bytecode." msgstr "" +"Si *adaptive* es ``True``, :meth:`.dis` mostrará un código de bytes " +"especializado que puede ser diferente del código de bytes original." #: ../Doc/library/dis.rst:144 msgid "" "If *show_offsets* is ``True``, :meth:`.dis` will include instruction offsets " "in the output." msgstr "" +"Si *show_offsets* es ``True``, :meth:`.dis` incluirá desplazamientos de " +"instrucciones en la salida." #: ../Doc/library/dis.rst:149 msgid "" @@ -296,9 +325,8 @@ msgstr "" #: ../Doc/library/dis.rst:173 ../Doc/library/dis.rst:265 #: ../Doc/library/dis.rst:282 ../Doc/library/dis.rst:312 #: ../Doc/library/dis.rst:335 -#, fuzzy msgid "Added the *show_caches* and *adaptive* parameters." -msgstr "Se agregó el parámetro ``show_caches``." +msgstr "Se agregaron los parámetros *show_caches* y *adaptive*." #: ../Doc/library/dis.rst:176 msgid "Example:" @@ -316,6 +344,15 @@ msgid "" "CALL\n" "RETURN_VALUE" msgstr "" +">>> bytecode = dis.Bytecode(myfunc)\n" +">>> for instr in bytecode:\n" +"... print(instr.opname)\n" +"...\n" +"RESUME\n" +"LOAD_GLOBAL\n" +"LOAD_FAST\n" +"CALL\n" +"RETURN_VALUE" #: ../Doc/library/dis.rst:192 msgid "Analysis functions" @@ -380,7 +417,6 @@ msgid "Added *file* parameter." msgstr "Agrega un parámetro *file*." #: ../Doc/library/dis.rst:231 -#, fuzzy msgid "" "Disassemble the *x* object. *x* can denote either a module, a class, a " "method, a function, a generator, an asynchronous generator, a coroutine, a " @@ -395,19 +431,20 @@ msgid "" "before being disassembled. If no object is provided, this function " "disassembles the last traceback." msgstr "" -"Desmontar el objeto *x*. *x* puede denotar un módulo, una clase, un método, " -"una función, un generador, un generador asíncrono, una corutina, un objeto " -"de código, una cadena de código fuente o una secuencia de bytes de código de " -"bytes sin procesar. Para un módulo, desmonta todas las funciones. Para una " -"clase, desmonta todos los métodos (incluidos los métodos de clase y " -"estáticos). Para un objeto de código o secuencia de bytecode sin procesar, " -"imprime una línea por instrucción de bytecode. También desmonta " -"recursivamente objetos de código anidados (el código de comprensiones, " -"expresiones generadoras y funciones anidadas, y el código utilizado para " -"construir clases anidadas). Las cadenas de caracteres se compilan primero en " +"Desensamblar el objeto *x*. *x* puede denotar un módulo, una clase, un " +"método, una función, un generador, un generador asincrónico, una corrutina, " +"un objeto de código, una cadena de código fuente o una secuencia de bytes de " +"código de bytes sin formato. Para un módulo, desensamblar todas las " +"funciones. Para una clase, desensamblar todos los métodos (incluidos los " +"métodos de clase y estáticos). Para un objeto de código o una secuencia de " +"código de bytes sin formato, imprime una línea por cada instrucción de " +"código de bytes. También desensamblar de forma recursiva objetos de código " +"anidados. Estos pueden incluir expresiones de generador, funciones anidadas, " +"los cuerpos de clases anidadas y los objetos de código utilizados para :ref:" +"`annotation scopes `. Las cadenas se compilan primero en " "objetos de código con la función incorporada :func:`compile` antes de " -"desmontarse. Si no se proporciona ningún objeto, esta función desmonta el " -"último rastreo." +"desensamblarse. Si no se proporciona ningún objeto, esta función " +"desensamblará el último seguimiento." #: ../Doc/library/dis.rst:244 ../Doc/library/dis.rst:276 #: ../Doc/library/dis.rst:306 @@ -431,12 +468,16 @@ msgid "" "If *show_caches* is ``True``, this function will display inline cache " "entries used by the interpreter to specialize the bytecode." msgstr "" +"Si *show_caches* es ``True``, esta función mostrará las entradas de caché en " +"línea utilizadas por el intérprete para especializar el código de bytes." #: ../Doc/library/dis.rst:253 msgid "" "If *adaptive* is ``True``, this function will display specialized bytecode " "that may be different from the original bytecode." msgstr "" +"Si *adaptive* es ``True``, esta función mostrará un código de bytes " +"especializado que puede ser diferente del código de bytes original." #: ../Doc/library/dis.rst:259 msgid "Implemented recursive disassembling and added *depth* parameter." @@ -453,9 +494,8 @@ msgstr "" "excepción." #: ../Doc/library/dis.rst:285 ../Doc/library/dis.rst:315 -#, fuzzy msgid "Added the *show_offsets* parameter." -msgstr "Agrega un parámetro *file*." +msgstr "Se agregó el parámetro *show_offsets*." #: ../Doc/library/dis.rst:292 msgid "" @@ -520,7 +560,7 @@ msgstr "" #: ../Doc/library/dis.rst:331 msgid "The *adaptive* parameter works as it does in :func:`dis`." -msgstr "" +msgstr "El parámetro *adaptive* funciona como lo hace en :func:`dis`." #: ../Doc/library/dis.rst:338 msgid "" @@ -529,18 +569,22 @@ msgid "" "populated (regardless of the value of *show_caches*) and it no longer " "generates separate items for the cache entries." msgstr "" +"El parámetro *show_caches* está obsoleto y no tiene efecto. El iterador " +"genera las instancias :class:`Instruction` con el campo *cache_info* " +"completado (independientemente del valor de *show_caches*) y ya no genera " +"elementos separados para las entradas de caché." #: ../Doc/library/dis.rst:346 -#, fuzzy msgid "" "This generator function uses the :meth:`~codeobject.co_lines` method of the :" "ref:`code object ` *code* to find the offsets which are starts " "of lines in the source code. They are generated as ``(offset, lineno)`` " "pairs." msgstr "" -"Esta función generadora utiliza el método ``co_lines`` del objeto de código " -"*code* para encontrar las compensaciones que son los comienzos de las líneas " -"en el código fuente. Se generan como pares ``(offset, lineno)``." +"Esta función generadora utiliza el método :meth:`~codeobject.co_lines` de :" +"ref:`code object ` y *code* para encontrar los desplazamientos " +"que son inicios de líneas en el código fuente. Se generan como pares " +"``(offset, lineno)``." #: ../Doc/library/dis.rst:351 msgid "Line numbers can be decreasing. Before, they were always increasing." @@ -549,19 +593,21 @@ msgstr "" "aumentando." #: ../Doc/library/dis.rst:354 -#, fuzzy msgid "" "The :pep:`626` :meth:`~codeobject.co_lines` method is used instead of the :" "attr:`~codeobject.co_firstlineno` and :attr:`~codeobject.co_lnotab` " "attributes of the :ref:`code object `." msgstr "" -"Se utiliza el método :pep:`626` ``co_lines`` en lugar de los atributos " -"``co_firstlineno`` y ``co_lnotab`` del objeto de código." +"Se utiliza el método :pep:`626` :meth:`~codeobject.co_lines` en lugar de los " +"atributos :attr:`~codeobject.co_firstlineno` y :attr:`~codeobject.co_lnotab` " +"del :ref:`code object `." #: ../Doc/library/dis.rst:359 msgid "" "Line numbers can be ``None`` for bytecode that does not map to source lines." msgstr "" +"Los números de línea pueden ser ``None`` para el código de bytes que no se " +"asigna a las líneas de origen." #: ../Doc/library/dis.rst:365 msgid "" @@ -600,6 +646,10 @@ msgid "" "is also no longer an error to pass an integer ``oparg`` when the ``opcode`` " "does not use it; the ``oparg`` in this case is ignored." msgstr "" +"Si se omite ``oparg`` (o ``None``), ahora se devuelve el efecto de pila para " +"``oparg=0``. Anteriormente, esto era un error para los códigos de operación " +"que usan su argumento. Tampoco es un error pasar un entero ``oparg`` cuando " +"``opcode`` no lo usa; en este caso, se ignora ``oparg``." #: ../Doc/library/dis.rst:393 msgid "Python Bytecode Instructions" @@ -635,12 +685,16 @@ msgid "" "numeric code for the base operation if operation is specialized; otherwise " "equal to :data:`opcode`" msgstr "" +"código numérico para la operación base si la operación es especializada; en " +"caso contrario, igual a :data:`opcode`" #: ../Doc/library/dis.rst:421 msgid "" "human readable name for the base operation if operation is specialized; " "otherwise equal to :data:`opname`" msgstr "" +"Nombre legible para humanos para la operación base si la operación es " +"especializada; de lo contrario, es igual a :data:`opname`" #: ../Doc/library/dis.rst:427 msgid "numeric argument to operation (if any), otherwise ``None``" @@ -649,7 +703,7 @@ msgstr "" #: ../Doc/library/dis.rst:431 msgid "alias for :data:`arg`" -msgstr "" +msgstr "alias para :data:`arg`" #: ../Doc/library/dis.rst:435 msgid "resolved arg value (if any), otherwise ``None``" @@ -672,27 +726,30 @@ msgid "" "start index of operation within bytecode sequence, including prefixed " "``EXTENDED_ARG`` operations if present; otherwise equal to :data:`offset`" msgstr "" +"índice de inicio de la operación dentro de la secuencia de bytecode, " +"incluidas las operaciones con prefijo ``EXTENDED_ARG`` si están presentes; " +"de lo contrario, igual a :data:`offset`" #: ../Doc/library/dis.rst:457 msgid "start index of the cache entries following the operation" -msgstr "" +msgstr "índice de inicio de las entradas de caché después de la operación" #: ../Doc/library/dis.rst:462 msgid "end index of the cache entries following the operation" -msgstr "" +msgstr "índice final de las entradas de caché después de la operación" #: ../Doc/library/dis.rst:467 -#, fuzzy msgid "``True`` if this opcode starts a source line, otherwise ``False``" -msgstr "``True`` si otro código salta aquí, de lo contrario, ``False``" +msgstr "" +"``True`` si este código de operación inicia una línea de origen, de lo " +"contrario ``False``" #: ../Doc/library/dis.rst:472 -#, fuzzy msgid "" "source line number associated with this opcode (if any), otherwise ``None``" msgstr "" -"línea iniciada por este código de operación (si existe), de lo contrario " -"``None``" +"número de línea de origen asociado con este código de operación (si lo hay), " +"de lo contrario ``None``" #: ../Doc/library/dis.rst:477 msgid "``True`` if other code jumps to here, otherwise ``False``" @@ -703,6 +760,8 @@ msgid "" "bytecode index of the jump target if this is a jump operation, otherwise " "``None``" msgstr "" +"índice de código de bytes del objetivo del salto si se trata de una " +"operación de salto, de lo contrario ``None``" #: ../Doc/library/dis.rst:488 msgid "" @@ -718,7 +777,7 @@ msgstr "Se agrega el campo ``positions``." #: ../Doc/library/dis.rst:507 msgid "Changed field ``starts_line``." -msgstr "" +msgstr "Se modificó el campo ``starts_line``." #: ../Doc/library/dis.rst:509 msgid "" @@ -726,6 +785,9 @@ msgid "" "``baseopname``, ``baseopcode``, ``jump_target``, ``oparg``, ``line_number`` " "and ``cache_info``." msgstr "" +"Se agregaron los campos ``start_offset``, ``cache_offset``, ``end_offset``, " +"``baseopname``, ``baseopcode``, ``jump_target``, ``oparg``, ``line_number`` " +"y ``cache_info``." #: ../Doc/library/dis.rst:516 msgid "" @@ -751,6 +813,9 @@ msgid "" "describe operations on it as if it was a Python list. The top of the stack " "corresponds to ``STACK[-1]`` in this language." msgstr "" +"A continuación, nos referiremos a la pila del intérprete como ``STACK`` y " +"describiremos las operaciones en ella como si fuera una lista de Python. La " +"parte superior de la pila corresponde a ``STACK[-1]`` en este lenguaje." #: ../Doc/library/dis.rst:537 msgid "" @@ -761,46 +826,50 @@ msgstr "" "optimizador de bytecode y para generar eventos de seguimiento de línea." #: ../Doc/library/dis.rst:543 -#, fuzzy msgid "Removes the top-of-stack item::" -msgstr "Elimina el elemento de la parte superior de la pila (TOS)." +msgstr "Elimina el elemento de la parte superior de la pila::" #: ../Doc/library/dis.rst:545 msgid "STACK.pop()" -msgstr "" +msgstr "STACK.pop()" #: ../Doc/library/dis.rst:550 msgid "" "Removes the top-of-stack item. Equivalent to ``POP_TOP``. Used to clean up " "at the end of loops, hence the name." msgstr "" +"Elimina el elemento superior de la pila. Equivale a ``POP_TOP``. Se utiliza " +"para limpiar al final de los bucles, de ahí el nombre." #: ../Doc/library/dis.rst:559 msgid "Implements ``del STACK[-2]``. Used to clean up when a generator exits." msgstr "" +"Implementa ``del STACK[-2]``. Se utiliza para limpiar cuando finaliza un " +"generador." #: ../Doc/library/dis.rst:567 -#, fuzzy msgid "" "Push the i-th item to the top of the stack without removing it from its " "original location::" msgstr "" -"Empuje el elemento *i*-th a la parte superior de la pila. El elemento no se " -"elimina de su ubicación original." +"Empuja el elemento i-ésimo hacia la parte superior de la pila sin quitarlo " +"de su ubicación original::" #: ../Doc/library/dis.rst:570 msgid "" "assert i > 0\n" "STACK.append(STACK[-i])" msgstr "" +"assert i > 0\n" +"STACK.append(STACK[-i])" #: ../Doc/library/dis.rst:578 msgid "Swap the top of the stack with the i-th element::" -msgstr "" +msgstr "Intercambia la parte superior de la pila con el elemento i-ésimo::" #: ../Doc/library/dis.rst:580 msgid "STACK[-i], STACK[-1] = STACK[-1], STACK[-i]" -msgstr "" +msgstr "STACK[-i], STACK[-1] = STACK[-1], STACK[-i]" #: ../Doc/library/dis.rst:587 msgid "" @@ -847,78 +916,69 @@ msgstr "" "operación y retornan el resultado a la pila." #: ../Doc/library/dis.rst:611 -#, fuzzy msgid "Implements ``STACK[-1] = -STACK[-1]``." -msgstr "Implementa ``TOS = -TOS``." +msgstr "Implementa ``STACK[-1] = -STACK[-1]``." #: ../Doc/library/dis.rst:616 -#, fuzzy msgid "Implements ``STACK[-1] = not STACK[-1]``." -msgstr "Implementa ``TOS = not TOS``." +msgstr "Implementa ``STACK[-1] = not STACK[-1]``." #: ../Doc/library/dis.rst:618 ../Doc/library/dis.rst:1313 #: ../Doc/library/dis.rst:1329 msgid "This instruction now requires an exact :class:`bool` operand." -msgstr "" +msgstr "Esta instrucción ahora requiere un operando :class:`bool` exacto." #: ../Doc/library/dis.rst:624 -#, fuzzy msgid "Implements ``STACK[-1] = ~STACK[-1]``." -msgstr "Implementa ``TOS = ~TOS``." +msgstr "Implementa ``STACK[-1] = ~STACK[-1]``." #: ../Doc/library/dis.rst:629 -#, fuzzy msgid "Implements ``STACK[-1] = iter(STACK[-1])``." -msgstr "Implementa ``TOS = iter(TOS)``." +msgstr "Implementa ``STACK[-1] = iter(STACK[-1])``." #: ../Doc/library/dis.rst:634 -#, fuzzy msgid "" "If ``STACK[-1]`` is a :term:`generator iterator` or :term:`coroutine` object " "it is left as is. Otherwise, implements ``STACK[-1] = iter(STACK[-1])``." msgstr "" -"Si ``TOS`` es un :term:`iterador generador ` o un " -"objeto :term:`corutina ` se deja como está. De lo contrario, " -"implementa ``TOS = iter(TOS)``." +"Si ``STACK[-1]`` es un objeto :term:`generator iterator` o :term:" +"`coroutine`, se deja como está. De lo contrario, se implementa ``STACK[-1] = " +"iter(STACK[-1])``." #: ../Doc/library/dis.rst:642 -#, fuzzy msgid "Implements ``STACK[-1] = bool(STACK[-1])``." -msgstr "Implementa ``TOS = ~TOS``." +msgstr "Implementa ``STACK[-1] = bool(STACK[-1])``." #: ../Doc/library/dis.rst:647 msgid "**Binary and in-place operations**" msgstr "**Operaciones binarias e in situ**" #: ../Doc/library/dis.rst:649 -#, fuzzy msgid "" "Binary operations remove the top two items from the stack (``STACK[-1]`` and " "``STACK[-2]``). They perform the operation, then put the result back on the " "stack." msgstr "" -"Las operaciones binarias eliminan el elemento superior de la pila (TOS) y el " -"segundo elemento de la pila superior (TOS1) de la pila. Realizan la " -"operación y retornan el resultado a la pila." +"Las operaciones binarias eliminan los dos elementos superiores de la pila " +"(``STACK[-1]`` y ``STACK[-2]``). Realizan la operación y luego vuelven a " +"colocar el resultado en la pila." #: ../Doc/library/dis.rst:652 -#, fuzzy msgid "" "In-place operations are like binary operations, but the operation is done in-" "place when ``STACK[-2]`` supports it, and the resulting ``STACK[-1]`` may be " "(but does not have to be) the original ``STACK[-2]``." msgstr "" -"Las operaciones en el lugar son como operaciones binarias, ya que eliminan " -"TOS y TOS1, y retornan el resultado a la pila, pero la operación se realiza " -"en el lugar cuando TOS1 lo admite, y el TOS resultante puede ser (pero no " -"tiene ser) el TOS1 original." +"Las operaciones en el lugar son como operaciones binarias, pero la operación " +"se realiza en el lugar cuando ``STACK[-2]`` la admite, y el ``STACK[-1]`` " +"resultante puede ser (pero no tiene que ser) el ``STACK[-2]`` original." #: ../Doc/library/dis.rst:659 -#, fuzzy msgid "" "Implements the binary and in-place operators (depending on the value of " "*op*)::" -msgstr "Implementa los operadores binarios e in situ (según el valor de *op*)." +msgstr "" +"Implementa los operadores binarios y locales (según el valor de *op*)::" #: ../Doc/library/dis.rst:662 msgid "" @@ -926,6 +986,9 @@ msgid "" "lhs = STACK.pop()\n" "STACK.append(lhs op rhs)" msgstr "" +"rhs = STACK.pop()\n" +"lhs = STACK.pop()\n" +"STACK.append(lhs op rhs)" #: ../Doc/library/dis.rst:671 ../Doc/library/dis.rst:680 #: ../Doc/library/dis.rst:690 ../Doc/library/dis.rst:698 @@ -935,7 +998,7 @@ msgstr "" #: ../Doc/library/dis.rst:1156 ../Doc/library/dis.rst:1168 #: ../Doc/library/dis.rst:1180 msgid "Implements::" -msgstr "" +msgstr "Implementos::" #: ../Doc/library/dis.rst:673 msgid "" @@ -943,6 +1006,9 @@ msgid "" "container = STACK.pop()\n" "STACK.append(container[key])" msgstr "" +"key = STACK.pop()\n" +"container = STACK.pop()\n" +"STACK.append(container[key])" #: ../Doc/library/dis.rst:682 msgid "" @@ -951,6 +1017,10 @@ msgid "" "value = STACK.pop()\n" "container[key] = value" msgstr "" +"key = STACK.pop()\n" +"container = STACK.pop()\n" +"value = STACK.pop()\n" +"container[key] = value" #: ../Doc/library/dis.rst:692 msgid "" @@ -958,6 +1028,9 @@ msgid "" "container = STACK.pop()\n" "del container[key]" msgstr "" +"key = STACK.pop()\n" +"container = STACK.pop()\n" +"del container[key]" #: ../Doc/library/dis.rst:700 msgid "" @@ -966,6 +1039,10 @@ msgid "" "container = STACK.pop()\n" "STACK.append(container[start:end])" msgstr "" +"end = STACK.pop()\n" +"start = STACK.pop()\n" +"container = STACK.pop()\n" +"STACK.append(container[start:end])" #: ../Doc/library/dis.rst:712 msgid "" @@ -975,22 +1052,27 @@ msgid "" "values = STACK.pop()\n" "container[start:end] = value" msgstr "" +"end = STACK.pop()\n" +"start = STACK.pop()\n" +"container = STACK.pop()\n" +"values = STACK.pop()\n" +"container[start:end] = value" #: ../Doc/library/dis.rst:721 msgid "**Coroutine opcodes**" msgstr "**Opcodes de corutinas**" #: ../Doc/library/dis.rst:725 -#, fuzzy msgid "" "Implements ``STACK[-1] = get_awaitable(STACK[-1])``, where " "``get_awaitable(o)`` returns ``o`` if ``o`` is a coroutine object or a " "generator object with the :data:`~inspect.CO_ITERABLE_COROUTINE` flag, or " "resolves ``o.__await__``." msgstr "" -"Implementa ``TOS = get_awaitable(TOS)``, donde ``get_awaitable(o)`` retorna " -"``o`` si ``o`` es un objeto de corutina o un objeto generador con el " -"indicador CO_ITERABLE_COROUTINE, o resuelve ``o.__await__``." +"Implementa ``STACK[-1] = get_awaitable(STACK[-1])``, donde " +"``get_awaitable(o)`` devuelve ``o`` si ``o`` es un objeto de corrutina o un " +"objeto generador con el indicador :data:`~inspect.CO_ITERABLE_COROUTINE`, o " +"resuelve ``o.__await__``." #: ../Doc/library/dis.rst:730 msgid "" @@ -1001,36 +1083,33 @@ msgstr "" "instrucción:" #: ../Doc/library/dis.rst:733 -#, fuzzy msgid "``1``: After a call to ``__aenter__``" -msgstr "``1`` Después de una llamada a ``__aenter__``" +msgstr "``1``: Después de una llamada a ``__aenter__``" #: ../Doc/library/dis.rst:734 -#, fuzzy msgid "``2``: After a call to ``__aexit__``" -msgstr "``2`` Después de una llamada a ``__aexit__``" +msgstr "``2``: Después de una llamada a ``__aexit__``" #: ../Doc/library/dis.rst:738 msgid "Previously, this instruction did not have an oparg." msgstr "Anteriormente, esta instrucción no tenía un oparg." #: ../Doc/library/dis.rst:744 -#, fuzzy msgid "Implements ``STACK[-1] = STACK[-1].__aiter__()``." -msgstr "Implementa ``TOS = TOS.__aiter__()``." +msgstr "Implementa ``STACK[-1] = STACK[-1].__aiter__()``." #: ../Doc/library/dis.rst:747 msgid "Returning awaitable objects from ``__aiter__`` is no longer supported." msgstr "Ya no se admite el retorno de objetos *awaitable* de ``__aiter__``." #: ../Doc/library/dis.rst:754 -#, fuzzy msgid "" "Implement ``STACK.append(get_awaitable(STACK[-1].__anext__()))`` to the " "stack. See ``GET_AWAITABLE`` for details about ``get_awaitable``." msgstr "" -"Agrega ``get_awaitable(TOS.__anext__())`` a la pila. Consulte " -"``GET_AWAITABLE`` para obtener detalles sobre ``get_awaitable``." +"Implemente ``STACK.append(get_awaitable(STACK[-1].__anext__()))`` en la " +"pila. Consulte ``GET_AWAITABLE`` para obtener más detalles sobre " +"``get_awaitable``." #: ../Doc/library/dis.rst:762 msgid "" @@ -1039,6 +1118,10 @@ msgid "" "and the raised exception in ``STACK[-1]``. Both are popped. If the exception " "is not :exc:`StopAsyncIteration`, it is re-raised." msgstr "" +"Finaliza un bucle :keyword:`async for`. Controla una excepción generada al " +"esperar un elemento siguiente. La pila contiene el iterable asincrónico en " +"``STACK[-2]`` y la excepción generada en ``STACK[-1]``. Ambos se eliminan. " +"Si la excepción no es :exc:`StopAsyncIteration`, se vuelve a generar." #: ../Doc/library/dis.rst:769 ../Doc/library/dis.rst:877 #: ../Doc/library/dis.rst:888 @@ -1055,19 +1138,22 @@ msgid "" "instance of :exc:`StopIteration`, pop three values from the stack and push " "its ``value`` member. Otherwise, re-raise ``STACK[-1]``." msgstr "" +"Maneja una excepción generada durante una llamada :meth:`~generator.throw` " +"o :meth:`~generator.close` a través del marco actual. Si ``STACK[-1]`` es " +"una instancia de :exc:`StopIteration`, extrae tres valores de la pila y " +"envía su miembro ``value``. De lo contrario, vuelve a generar ``STACK[-1]``." #: ../Doc/library/dis.rst:785 -#, fuzzy msgid "" "Resolves ``__aenter__`` and ``__aexit__`` from ``STACK[-1]``. Pushes " "``__aexit__`` and result of ``__aenter__()`` to the stack::" msgstr "" -"Resuelve ``__aenter__`` y ``__aexit__`` del objeto en la parte superior de " -"la pila. Apila ``__aexit__`` y el resultado de ``__aenter__()`` a la pila." +"Resuelve ``__aenter__`` y ``__aexit__`` a partir de ``STACK[-1]``. Envía " +"``__aexit__`` y el resultado de ``__aenter__()`` a la pila:" #: ../Doc/library/dis.rst:788 msgid "STACK.extend((__aexit__, __aenter__())" -msgstr "" +msgstr "STACK.extend((__aexit__, __aenter__())" #: ../Doc/library/dis.rst:794 msgid "**Miscellaneous opcodes**" @@ -1078,26 +1164,24 @@ msgid "" "item = STACK.pop()\n" "set.add(STACK[-i], item)" msgstr "" +"item = STACK.pop()\n" +"set.add(STACK[-i], item)" #: ../Doc/library/dis.rst:803 -#, fuzzy msgid "Used to implement set comprehensions." -msgstr "" -"Llama a ``set.add(TOS1[-i], TOS)``. Se utiliza para implementar " -"comprensiones de conjuntos." +msgstr "Se utiliza para implementar comprensiones de conjuntos." #: ../Doc/library/dis.rst:810 msgid "" "item = STACK.pop()\n" "list.append(STACK[-i], item)" msgstr "" +"item = STACK.pop()\n" +"list.append(STACK[-i], item)" #: ../Doc/library/dis.rst:813 -#, fuzzy msgid "Used to implement list comprehensions." -msgstr "" -"Llama a ``list.append(TOS1[-i], TOS)``. Se utiliza para implementar listas " -"por comprensión." +msgstr "Se utiliza para implementar listas por comprensión." #: ../Doc/library/dis.rst:820 msgid "" @@ -1105,22 +1189,21 @@ msgid "" "key = STACK.pop()\n" "dict.__setitem__(STACK[-i], key, value)" msgstr "" +"value = STACK.pop()\n" +"key = STACK.pop()\n" +"dict.__setitem__(STACK[-i], key, value)" #: ../Doc/library/dis.rst:824 -#, fuzzy msgid "Used to implement dict comprehensions." -msgstr "" -"Llama a ``set.add(TOS1[-i], TOS)``. Se utiliza para implementar " -"comprensiones de conjuntos." +msgstr "Se utiliza para implementar comprensiones de diccionarios." #: ../Doc/library/dis.rst:827 -#, fuzzy msgid "" "Map value is ``STACK[-1]`` and map key is ``STACK[-2]``. Before, those were " "reversed." msgstr "" -"El valor del mapa es TOS y la clave del mapa es TOS1. Antes, esos fueron " -"revertidos." +"El valor del mapa es ``STACK[-1]`` y la clave del mapa es ``STACK[-2]``. " +"Antes, estaban invertidos." #: ../Doc/library/dis.rst:831 msgid "" @@ -1135,35 +1218,36 @@ msgstr "" "futuras iteraciones del bucle." #: ../Doc/library/dis.rst:839 -#, fuzzy msgid "Returns with ``STACK[-1]`` to the caller of the function." -msgstr "Retorna con TOS a quien llama la función." +msgstr "Regresa con ``STACK[-1]`` al llamador de la función." #: ../Doc/library/dis.rst:844 -#, fuzzy msgid "Returns with ``co_consts[consti]`` to the caller of the function." -msgstr "Retorna con TOS a quien llama la función." +msgstr "Regresa con ``co_consts[consti]`` al llamador de la función." #: ../Doc/library/dis.rst:851 -#, fuzzy msgid "Yields ``STACK.pop()`` from a :term:`generator`." -msgstr "Desapila TOS y lo genera (*yield*) de un :term:`generator`." +msgstr "Produce ``STACK.pop()`` a partir de un :term:`generator`." #: ../Doc/library/dis.rst:853 msgid "oparg set to be the stack depth." -msgstr "" +msgstr "oparg establecido para ser la profundidad de la pila." #: ../Doc/library/dis.rst:856 msgid "" "oparg set to be the exception block depth, for efficient closing of " "generators." msgstr "" +"oparg está configurado para ser la profundidad del bloque de excepción, para " +"el cierre eficiente de los generadores." #: ../Doc/library/dis.rst:859 msgid "" "oparg is ``1`` if this instruction is part of a yield-from or await, and " "``0`` otherwise." msgstr "" +"oparg es ``1`` si esta instrucción es parte de un yield-from o await, y " +"``0`` en caso contrario." #: ../Doc/library/dis.rst:865 msgid "" @@ -1185,7 +1269,6 @@ msgstr "" "excepción." #: ../Doc/library/dis.rst:882 -#, fuzzy msgid "" "Re-raises the exception currently on top of the stack. If oparg is non-zero, " "pops an additional value from the stack which is used to set :attr:`~frame." @@ -1193,7 +1276,7 @@ msgid "" msgstr "" "Vuelve a generar la excepción que se encuentra actualmente en la parte " "superior de la pila. Si oparg no es cero, extrae un valor adicional de la " -"pila que se usa para establecer ``f_lasti`` del marco actual." +"pila que se utiliza para establecer :attr:`~frame.f_lasti` del marco actual." #: ../Doc/library/dis.rst:893 msgid "" @@ -1206,24 +1289,23 @@ msgstr "" "Se utiliza en los controladores de excepciones." #: ../Doc/library/dis.rst:901 -#, fuzzy msgid "" "Performs exception matching for ``except``. Tests whether the ``STACK[-2]`` " "is an exception matching ``STACK[-1]``. Pops ``STACK[-1]`` and pushes the " "boolean result of the test." msgstr "" -"Realiza coincidencias de excepciones para ``except``. Comprueba si TOS1 es " -"una excepción que coincide con TOS. Aparece TOS y agrega el resultado " -"booleano de la prueba." +"Realiza una comparación de excepciones para ``except``. Comprueba si " +"``STACK[-2]`` es una comparación de excepciones con ``STACK[-1]``. Extrae " +"``STACK[-1]`` y envía el resultado booleano de la prueba." #: ../Doc/library/dis.rst:909 -#, fuzzy msgid "" "Performs exception matching for ``except*``. Applies ``split(STACK[-1])`` on " "the exception group representing ``STACK[-2]``." msgstr "" -"Realiza coincidencias de excepciones para ``except*``. Aplica ``split(TOS)`` " -"en el grupo de excepción que representa TOS1." +"Realiza la coincidencia de excepciones para ``except*``. Aplica " +"``split(STACK[-1])`` en el grupo de excepciones que representa a " +"``STACK[-2]``." #: ../Doc/library/dis.rst:912 msgid "" @@ -1267,12 +1349,11 @@ msgstr "" "keyword:`assert`." #: ../Doc/library/dis.rst:943 -#, fuzzy msgid "" "Pushes :func:`!builtins.__build_class__` onto the stack. It is later called " "to construct a class." msgstr "" -"Agrega :func:`builtins.__build_class__` a la pila. Más tarde se llama para " +"Coloca :func:`!builtins.__build_class__` en la pila. Luego se lo llama para " "construir una clase." #: ../Doc/library/dis.rst:949 @@ -1291,23 +1372,21 @@ msgstr "" #: ../Doc/library/dis.rst:960 msgid "Perform ``STACK.append(len(STACK[-1]))``." -msgstr "" +msgstr "Ejecutar ``STACK.append(len(STACK[-1]))``." #: ../Doc/library/dis.rst:967 -#, fuzzy msgid "" "If ``STACK[-1]`` is an instance of :class:`collections.abc.Mapping` (or, " "more technically: if it has the :c:macro:`Py_TPFLAGS_MAPPING` flag set in " "its :c:member:`~PyTypeObject.tp_flags`), push ``True`` onto the stack. " "Otherwise, push ``False``." msgstr "" -"Si TOS es una instancia de :class:`collections.abc.Mapping` (o, más " -"técnicamente, si tiene el indicador :const:`Py_TPFLAGS_MAPPING` establecido " -"en su :c:member:`~PyTypeObject.tp_flags`), apila ``True`` en la pila. De lo " -"contrario apila ``False``." +"Si ``STACK[-1]`` es una instancia de :class:`collections.abc.Mapping` (o, " +"más técnicamente: si tiene el indicador :c:macro:`Py_TPFLAGS_MAPPING` " +"establecido en su :c:member:`~PyTypeObject.tp_flags`), inserte ``True`` en " +"la pila. De lo contrario, inserte ``False``." #: ../Doc/library/dis.rst:977 -#, fuzzy msgid "" "If ``STACK[-1]`` is an instance of :class:`collections.abc.Sequence` and is " "*not* an instance of :class:`str`/:class:`bytes`/:class:`bytearray` (or, " @@ -1315,22 +1394,22 @@ msgid "" "its :c:member:`~PyTypeObject.tp_flags`), push ``True`` onto the stack. " "Otherwise, push ``False``." msgstr "" -"Si TOS es una instancia de :class:`collections.abc.Sequence` y *no* es una " -"instancia de :class:`str`/:class:`bytes`/:class:`bytearray` (o, más " -"técnicamente, si tiene el indicador :const:`Py_TPFLAGS_SEQUENCE` " -"establecido en su :c:member:`~PyTypeObject.tp_flags`), apila ``True`` en la " -"pila. De lo contrario apila ``False``." +"Si ``STACK[-1]`` es una instancia de :class:`collections.abc.Sequence` y " +"*not* es una instancia de :class:`str`/:class:`bytes`/:class:`bytearray` (o, " +"más técnicamente: si tiene el indicador :c:macro:`Py_TPFLAGS_SEQUENCE` " +"establecido en su :c:member:`~PyTypeObject.tp_flags`), inserte ``True`` en " +"la pila. De lo contrario, inserte ``False``." #: ../Doc/library/dis.rst:987 -#, fuzzy msgid "" "``STACK[-1]`` is a tuple of mapping keys, and ``STACK[-2]`` is the match " "subject. If ``STACK[-2]`` contains all of the keys in ``STACK[-1]``, push a :" "class:`tuple` containing the corresponding values. Otherwise, push ``None``." msgstr "" -"TOS es una tupla de claves de mapeo y TOS1 es el sujeto de coincidencia. Si " -"TOS1 contiene todas las claves en TOS, agrega un :class:`tuple` que contenga " -"los valores correspondientes. De lo contrario, agrega ``None``." +"``STACK[-1]`` es una tupla de claves de mapeo y ``STACK[-2]`` es el sujeto " +"de la coincidencia. Si ``STACK[-2]`` contiene todas las claves de " +"``STACK[-1]``, inserte un :class:`tuple` que contenga los valores " +"correspondientes. De lo contrario, inserte ``None``." #: ../Doc/library/dis.rst:993 ../Doc/library/dis.rst:1664 msgid "" @@ -1341,57 +1420,59 @@ msgstr "" "indicaba éxito (``True``) o falla (``False``)." #: ../Doc/library/dis.rst:1000 -#, fuzzy msgid "" "Implements ``name = STACK.pop()``. *namei* is the index of *name* in the " "attribute :attr:`~codeobject.co_names` of the :ref:`code object `. The compiler tries to use :opcode:`STORE_FAST` or :opcode:" "`STORE_GLOBAL` if possible." msgstr "" -"Implementa ``name = TOS``. *namei* es el índice de *name* en el atributo :" -"attr:`co_names` del objeto de código. El compilador intenta usar :opcode:" -"`STORE_FAST` o :opcode:`STORE_GLOBAL` si es posible." +"Implementa ``name = STACK.pop()``. *namei* es el índice de *name* en el " +"atributo :attr:`~codeobject.co_names` de :ref:`code object `. " +"El compilador intenta utilizar :opcode:`STORE_FAST` o :opcode:`STORE_GLOBAL` " +"si es posible." #: ../Doc/library/dis.rst:1007 -#, fuzzy msgid "" "Implements ``del name``, where *namei* is the index into :attr:`~codeobject." "co_names` attribute of the :ref:`code object `." msgstr "" -"Implementa ``del name``, donde *namei* es el índice en atributo :attr:" -"`co_names` del objeto de código." +"Implementa ``del name``, donde *namei* es el índice en el atributo :attr:" +"`~codeobject.co_names` del :ref:`code object `." #: ../Doc/library/dis.rst:1013 -#, fuzzy msgid "" "Unpacks ``STACK[-1]`` into *count* individual values, which are put onto the " "stack right-to-left. Require there to be exactly *count* values.::" msgstr "" -"Descomprime TOS en *count* valores individuales, que se colocan en la pila " -"de derecha a izquierda." +"Descomprime ``STACK[-1]`` en valores individuales *count*, que se colocan en " +"la pila de derecha a izquierda. Requiere que haya exactamente valores " +"*count*.::" #: ../Doc/library/dis.rst:1016 msgid "" "assert(len(STACK[-1]) == count)\n" "STACK.extend(STACK.pop()[:-count-1:-1])" msgstr "" +"assert(len(STACK[-1]) == count)\n" +"STACK.extend(STACK.pop()[:-count-1:-1])" #: ../Doc/library/dis.rst:1022 -#, fuzzy msgid "" "Implements assignment with a starred target: Unpacks an iterable in " "``STACK[-1]`` into individual values, where the total number of values can " "be smaller than the number of items in the iterable: one of the new values " "will be a list of all leftover items." msgstr "" -"Implementa la asignación con un objetivo destacado: desempaqueta un iterable " -"en TOS en valores individuales, donde el número total de valores puede ser " -"menor que el número de elementos en el iterable: uno de los nuevos valores " -"será una lista de todos los elementos sobrantes." +"Implementa la asignación con un objetivo destacado: descomprime un iterable " +"en ``STACK[-1]`` en valores individuales, donde la cantidad total de valores " +"puede ser menor que la cantidad de elementos en el iterable: uno de los " +"nuevos valores será una lista de todos los elementos restantes." #: ../Doc/library/dis.rst:1027 msgid "The number of values before and after the list value is limited to 255." msgstr "" +"El número de valores antes y después del valor de la lista está limitado a " +"255." #: ../Doc/library/dis.rst:1029 msgid "" @@ -1401,12 +1482,21 @@ msgid "" "values where the low byte of *counts* is the number of values before the " "list value, the high byte of *counts* the number of values after it." msgstr "" +"La cantidad de valores antes del valor de la lista se codifica en el " +"argumento del código de operación. La cantidad de valores después de la " +"lista, si los hay, se codifica utilizando un ``EXTENDED_ARG``. Como " +"consecuencia, el argumento puede verse como valores de dos bytes, donde el " +"byte bajo de *counts* es la cantidad de valores antes del valor de la lista " +"y el byte alto de *counts*, la cantidad de valores después de este." #: ../Doc/library/dis.rst:1035 msgid "" "The extracted values are put onto the stack right-to-left, i.e. ``a, *b, c = " "d`` will be stored after execution as ``STACK.extend((a, b, c))``." msgstr "" +"Los valores extraídos se colocan en la pila de derecha a izquierda, es " +"decir, ``a, *b, c = d`` se almacenará después de la ejecución como ``STACK." +"extend((a, b, c))``." #: ../Doc/library/dis.rst:1043 msgid "" @@ -1414,30 +1504,33 @@ msgid "" "value = STACK.pop()\n" "obj.name = value" msgstr "" +"obj = STACK.pop()\n" +"value = STACK.pop()\n" +"obj.name = value" #: ../Doc/library/dis.rst:1047 -#, fuzzy msgid "" "where *namei* is the index of name in :attr:`~codeobject.co_names` of the :" "ref:`code object `." msgstr "" -"Implementa ``del name``, donde *namei* es el índice en atributo :attr:" -"`co_names` del objeto de código." +"donde *namei* es el índice del nombre en :attr:`~codeobject.co_names` del :" +"ref:`code object `." #: ../Doc/library/dis.rst:1054 msgid "" "obj = STACK.pop()\n" "del obj.name" msgstr "" +"obj = STACK.pop()\n" +"del obj.name" #: ../Doc/library/dis.rst:1057 -#, fuzzy msgid "" "where *namei* is the index of name into :attr:`~codeobject.co_names` of the :" "ref:`code object `." msgstr "" -"Implementa ``del name``, donde *namei* es el índice en atributo :attr:" -"`co_names` del objeto de código." +"donde *namei* es el índice del nombre en :attr:`~codeobject.co_names` del :" +"ref:`code object `." #: ../Doc/library/dis.rst:1063 msgid "Works as :opcode:`STORE_NAME`, but stores the name as a global." @@ -1453,11 +1546,13 @@ msgid "Pushes ``co_consts[consti]`` onto the stack." msgstr "Apila ``co_consts[consti]`` en la pila." #: ../Doc/library/dis.rst:1078 -#, fuzzy msgid "" "Pushes the value associated with ``co_names[namei]`` onto the stack. The " "name is looked up within the locals, then the globals, then the builtins." -msgstr "Apila el valor asociado con ``co_names [namei]`` en la pila." +msgstr "" +"Introduce el valor asociado con ``co_names[namei]`` en la pila. El nombre se " +"busca en las variables locales, luego en las variables globales y luego en " +"las integradas." #: ../Doc/library/dis.rst:1084 msgid "" @@ -1465,6 +1560,9 @@ msgid "" "prepare namespace dictionaries for :opcode:`LOAD_FROM_DICT_OR_DEREF` and :" "opcode:`LOAD_FROM_DICT_OR_GLOBALS`." msgstr "" +"Introduce una referencia al diccionario de variables locales en la pila. " +"Esto se utiliza para preparar diccionarios de espacios de nombres para :" +"opcode:`LOAD_FROM_DICT_OR_DEREF` y :opcode:`LOAD_FROM_DICT_OR_GLOBALS`." #: ../Doc/library/dis.rst:1093 msgid "" @@ -1474,15 +1572,19 @@ msgid "" "variables in :ref:`annotation scopes ` within class " "bodies." msgstr "" +"Extrae una asignación de la pila y busca el valor de ``co_names[namei]``. Si " +"no se encuentra el nombre allí, lo busca en las variables globales y luego " +"en las integradas, de forma similar a :opcode:`LOAD_GLOBAL`. Esto se utiliza " +"para cargar variables globales en :ref:`annotation scopes ` dentro de los cuerpos de clase." #: ../Doc/library/dis.rst:1104 -#, fuzzy msgid "" "Creates a tuple consuming *count* items from the stack, and pushes the " "resulting tuple onto the stack::" msgstr "" -"Crea una tupla que consume elementos *count* de la pila, y apila la tupla " -"resultante a la pila." +"Crea una tupla que consume elementos *count* de la pila y envía la tupla " +"resultante a la pila::" #: ../Doc/library/dis.rst:1107 msgid "" @@ -1494,6 +1596,13 @@ msgid "" "\n" "STACK.append(value)" msgstr "" +"if count == 0:\n" +" value = ()\n" +"else:\n" +" value = tuple(STACK[-count:])\n" +" STACK = STACK[:-count]\n" +"\n" +"STACK.append(value)" #: ../Doc/library/dis.rst:1118 msgid "Works as :opcode:`BUILD_TUPLE`, but creates a list." @@ -1504,15 +1613,14 @@ msgid "Works as :opcode:`BUILD_TUPLE`, but creates a set." msgstr "Funciona como :opcode:`BUILD_TUPLE`, pero crea un conjunto." #: ../Doc/library/dis.rst:1128 -#, fuzzy msgid "" "Pushes a new dictionary object onto the stack. Pops ``2 * count`` items so " "that the dictionary holds *count* entries: ``{..., STACK[-4]: STACK[-3], " "STACK[-2]: STACK[-1]}``." msgstr "" -"Apila un nuevo objeto de diccionario en la pila. Desapila ``2 * count`` " -"elementos para que el diccionario contenga *count* entradas: ``{..., TOS3: " -"TOS2, TOS1: TOS}``." +"Inserta un nuevo objeto de diccionario en la pila. Extrae elementos ``2 * " +"count`` para que el diccionario contenga entradas *count*: ``{..., " +"STACK[-4]: STACK[-3], STACK[-2]: STACK[-1]}``." #: ../Doc/library/dis.rst:1132 msgid "" @@ -1523,16 +1631,15 @@ msgstr "" "diccionario vacío dimensionado previamente para contener *count* elementos." #: ../Doc/library/dis.rst:1139 -#, fuzzy msgid "" "The version of :opcode:`BUILD_MAP` specialized for constant keys. Pops the " "top element on the stack which contains a tuple of keys, then starting from " "``STACK[-2]``, pops *count* values to form values in the built dictionary." msgstr "" "La versión de :opcode:`BUILD_MAP` especializada para claves constantes. " -"Desapila el elemento superior en la pila que contiene una tupla de claves, " -"luego, a partir de ``TOS1``, muestra los valores *count* para formar valores " -"en el diccionario incorporado." +"Extrae el elemento superior de la pila que contiene una tupla de claves y, a " +"partir de ``STACK[-2]``, extrae los valores de *count* para formar valores " +"en el diccionario creado." #: ../Doc/library/dis.rst:1148 msgid "" @@ -1547,30 +1654,36 @@ msgid "" "seq = STACK.pop()\n" "list.extend(STACK[-i], seq)" msgstr "" +"seq = STACK.pop()\n" +"list.extend(STACK[-i], seq)" #: ../Doc/library/dis.rst:1161 msgid "Used to build lists." -msgstr "" +msgstr "Se utiliza para crear listas." #: ../Doc/library/dis.rst:1170 msgid "" "seq = STACK.pop()\n" "set.update(STACK[-i], seq)" msgstr "" +"seq = STACK.pop()\n" +"set.update(STACK[-i], seq)" #: ../Doc/library/dis.rst:1173 msgid "Used to build sets." -msgstr "" +msgstr "Se utiliza para construir decorados." #: ../Doc/library/dis.rst:1182 msgid "" "map = STACK.pop()\n" "dict.update(STACK[-i], map)" msgstr "" +"map = STACK.pop()\n" +"dict.update(STACK[-i], map)" #: ../Doc/library/dis.rst:1185 msgid "Used to build dicts." -msgstr "" +msgstr "Se utiliza para crear diccionarios." #: ../Doc/library/dis.rst:1192 msgid "Like :opcode:`DICT_UPDATE` but raises an exception for duplicate keys." @@ -1582,9 +1695,10 @@ msgid "" "If the low bit of ``namei`` is not set, this replaces ``STACK[-1]`` with " "``getattr(STACK[-1], co_names[namei>>1])``." msgstr "" +"Si el bit bajo de ``namei`` no está configurado, esto reemplaza " +"``STACK[-1]`` con ``getattr(STACK[-1], co_names[namei>>1])``." #: ../Doc/library/dis.rst:1202 -#, fuzzy msgid "" "If the low bit of ``namei`` is set, this will attempt to load a method named " "``co_names[namei>>1]`` from the ``STACK[-1]`` object. ``STACK[-1]`` is " @@ -1595,21 +1709,23 @@ msgid "" "Otherwise, ``NULL`` and the object returned by the attribute lookup are " "pushed." msgstr "" -"Carga un método denominado ``co_names[namei]`` desde el objeto TOS. TOS es " -"retirado. Este código de bytes distingue dos casos: si TOS tiene un método " -"con el nombre correcto, el código de bytes agrega el método independiente y " -"TOS. :opcode:`CALL` utilizará TOS como primer argumento (``self``) al llamar " -"al método independiente. De lo contrario, se agregan ``NULL`` y el objeto " -"devuelto por la búsqueda de atributos." +"Si se establece el bit bajo de ``namei``, se intentará cargar un método " +"llamado ``co_names[namei>>1]`` desde el objeto ``STACK[-1]``. Se extrae " +"``STACK[-1]``. Este código de bytes distingue dos casos: si ``STACK[-1]`` " +"tiene un método con el nombre correcto, el código de bytes inserta el método " +"no vinculado y ``STACK[-1]``. :opcode:`CALL` o :opcode:`CALL_KW` utilizarán " +"``STACK[-1]`` como primer argumento (``self``) al llamar al método no " +"vinculado. De lo contrario, se insertan ``NULL`` y el objeto devuelto por la " +"búsqueda de atributos." #: ../Doc/library/dis.rst:1211 -#, fuzzy msgid "" "If the low bit of ``namei`` is set, then a ``NULL`` or ``self`` is pushed to " "the stack before the attribute or unbound method respectively." msgstr "" -"Si se establece el bit bajo de ``namei``, se agrega un ``NULL`` a la pila " -"antes de la variable global." +"Si se establece el bit bajo de ``namei``, entonces se inserta un ``NULL`` o " +"``self`` en la pila antes del atributo o el método no vinculado " +"respectivamente." #: ../Doc/library/dis.rst:1218 msgid "" @@ -1617,28 +1733,36 @@ msgid "" "argument forms (e.g. ``super().method()``, ``super().attr`` and ``super(cls, " "self).method()``, ``super(cls, self).attr``)." msgstr "" +"Este código de operación implementa :func:`super`, tanto en su forma de cero " +"argumentos como de dos argumentos (por ejemplo, ``super().method()``, " +"``super().attr`` y ``super(cls, self).method()``, ``super(cls, self).attr``)." #: ../Doc/library/dis.rst:1222 msgid "It pops three values from the stack (from top of stack down):" msgstr "" +"Extrae tres valores de la pila (desde la parte superior de la pila hacia " +"abajo):" #: ../Doc/library/dis.rst:1224 msgid "``self``: the first argument to the current method" -msgstr "" +msgstr "``self``: el primer argumento del método actual" #: ../Doc/library/dis.rst:1225 msgid "``cls``: the class within which the current method was defined" -msgstr "" +msgstr "``cls``: la clase dentro de la cual se definió el método actual" #: ../Doc/library/dis.rst:1226 msgid "the global ``super``" -msgstr "" +msgstr "El ``super`` global" #: ../Doc/library/dis.rst:1228 msgid "" "With respect to its argument, it works similarly to :opcode:`LOAD_ATTR`, " "except that ``namei`` is shifted left by 2 bits instead of 1." msgstr "" +"Con respecto a su argumento, funciona de manera similar a :opcode:" +"`LOAD_ATTR`, excepto que ``namei`` se desplaza hacia la izquierda 2 bits en " +"lugar de 1." #: ../Doc/library/dis.rst:1231 msgid "" @@ -1646,28 +1770,37 @@ msgid "" "`LOAD_ATTR`, which results in pushing ``NULL`` and the loaded method. When " "it is unset a single value is pushed to the stack." msgstr "" +"El bit bajo de ``namei`` indica que se debe intentar cargar un método, como " +"en el caso de :opcode:`LOAD_ATTR`, lo que da como resultado la inserción de " +"``NULL`` y el método cargado. Cuando no está configurado, se inserta un solo " +"valor en la pila." #: ../Doc/library/dis.rst:1235 msgid "" "The second-low bit of ``namei``, if set, means that this was a two-argument " "call to :func:`super` (unset means zero-argument)." msgstr "" +"El segundo bit bajo de ``namei``, si está configurado, significa que esta " +"fue una llamada de dos argumentos a :func:`super` (si no está configurado " +"significa cero argumentos)." #: ../Doc/library/dis.rst:1243 -#, fuzzy msgid "" "Performs a Boolean operation. The operation name can be found in " "``cmp_op[opname >> 5]``. If the fifth-lowest bit of ``opname`` is set " "(``opname & 16``), the result should be coerced to ``bool``." msgstr "" "Realiza una operación booleana. El nombre de la operación se puede encontrar " -"en ``cmp_op[opname]``." +"en ``cmp_op[opname >> 5]``. Si se establece el quinto bit más bajo de " +"``opname`` (``opname & 16``), el resultado se debe convertir a ``bool``." #: ../Doc/library/dis.rst:1247 msgid "" "The fifth-lowest bit of the oparg now indicates a forced conversion to :" "class:`bool`." msgstr "" +"El quinto bit más bajo del oparg ahora indica una conversión forzada a :" +"class:`bool`." #: ../Doc/library/dis.rst:1254 msgid "Performs ``is`` comparison, or ``is not`` if ``invert`` is 1." @@ -1678,7 +1811,6 @@ msgid "Performs ``in`` comparison, or ``not in`` if ``invert`` is 1." msgstr "Realiza una comparación ``in`` o ``not in`` si ``invert`` es 1." #: ../Doc/library/dis.rst:1268 -#, fuzzy msgid "" "Imports the module ``co_names[namei]``. ``STACK[-1]`` and ``STACK[-2]`` are " "popped and provide the *fromlist* and *level* arguments of :func:" @@ -1686,22 +1818,22 @@ msgid "" "namespace is not affected: for a proper import statement, a subsequent :" "opcode:`STORE_FAST` instruction modifies the namespace." msgstr "" -"Importa el módulo ``co_names[namei]``. TOS y TOS1 aparecen y proporcionan " -"los argumentos *fromlist* y *level* de :func:`__import__`. El objeto del " -"módulo se empuja a la pila. El espacio de nombres actual no se ve afectado: " -"para una instrucción de importación adecuada, una instrucción posterior :" -"opcode:`STORE_FAST` modifica el espacio de nombres." +"Importa el módulo ``co_names[namei]``. Se extraen ``STACK[-1]`` y " +"``STACK[-2]`` y proporcionan los argumentos *fromlist* y *level* de :func:" +"`__import__`. El objeto del módulo se coloca en la pila. El espacio de " +"nombres actual no se ve afectado: para una declaración de importación " +"adecuada, una instrucción :opcode:`STORE_FAST` posterior modifica el espacio " +"de nombres." #: ../Doc/library/dis.rst:1276 -#, fuzzy msgid "" "Loads the attribute ``co_names[namei]`` from the module found in " "``STACK[-1]``. The resulting object is pushed onto the stack, to be " "subsequently stored by a :opcode:`STORE_FAST` instruction." msgstr "" -"Carga el atributo ``co_names[namei]`` del módulo que se encuentra en TOS. El " -"objeto resultante se apila en la pila, para luego ser almacenado por la " -"instrucción :opcode:`STORE_FAST`." +"Carga el atributo ``co_names[namei]`` del módulo que se encuentra en " +"``STACK[-1]``. El objeto resultante se coloca en la pila para ser almacenado " +"posteriormente mediante una instrucción :opcode:`STORE_FAST`." #: ../Doc/library/dis.rst:1283 msgid "Increments bytecode counter by *delta*." @@ -1719,13 +1851,12 @@ msgstr "" "Decrementa el contador de bytecode en *delta*. No busca interrupciones." #: ../Doc/library/dis.rst:1302 -#, fuzzy msgid "" "If ``STACK[-1]`` is true, increments the bytecode counter by *delta*. " "``STACK[-1]`` is popped." msgstr "" -"Si TOS es verdadero, incrementa el contador de bytecode en *delta*. TOS es " -"retirado." +"Si ``STACK[-1]`` es verdadero, incrementa el contador de bytecode en " +"*delta*. Se elimina ``STACK[-1]``." #: ../Doc/library/dis.rst:1305 ../Doc/library/dis.rst:1321 msgid "" @@ -1733,61 +1864,62 @@ msgid "" "opcode is a pseudo-instruction, replaced in final bytecode by the directed " "versions (forward/backward)." msgstr "" +"El oparg ahora es un delta relativo en lugar de un objetivo absoluto. Este " +"código de operación es una pseudoinstrucción, reemplazada en el bytecode " +"final por las versiones dirigidas (hacia adelante/hacia atrás)." #: ../Doc/library/dis.rst:1310 ../Doc/library/dis.rst:1326 #: ../Doc/library/dis.rst:1342 ../Doc/library/dis.rst:1356 msgid "This is no longer a pseudo-instruction." -msgstr "" +msgstr "Esto ya no es una pseudoinstrucción." #: ../Doc/library/dis.rst:1318 -#, fuzzy msgid "" "If ``STACK[-1]`` is false, increments the bytecode counter by *delta*. " "``STACK[-1]`` is popped." msgstr "" -"Si TOS es falso, incrementa el contador de bytecode en *delta*. TOS es " -"retirado." +"Si ``STACK[-1]`` es falso, incrementa el contador de bytecode en *delta*. Se " +"elimina ``STACK[-1]``." #: ../Doc/library/dis.rst:1334 -#, fuzzy msgid "" "If ``STACK[-1]`` is not ``None``, increments the bytecode counter by " "*delta*. ``STACK[-1]`` is popped." msgstr "" -"Si TOS no es ``None``, incrementa el contador de bytecode en *delta*. TOS es " -"retirado." +"Si ``STACK[-1]`` no es ``None``, incrementa el contador de bytecode en " +"*delta*. Se elimina ``STACK[-1]``." #: ../Doc/library/dis.rst:1337 ../Doc/library/dis.rst:1351 msgid "" "This opcode is a pseudo-instruction, replaced in final bytecode by the " "directed versions (forward/backward)." msgstr "" +"Este código de operación es una pseudoinstrucción, reemplazada en el código " +"de bytes final por las versiones dirigidas (adelante/atrás)." #: ../Doc/library/dis.rst:1348 -#, fuzzy msgid "" "If ``STACK[-1]`` is ``None``, increments the bytecode counter by *delta*. " "``STACK[-1]`` is popped." msgstr "" -"Si TOS es ``None``, incrementa el contador de bytecode en *delta*. TOS es " -"retirado." +"Si ``STACK[-1]`` es ``None``, incrementa el contador de bytecode en *delta*. " +"Se elimina ``STACK[-1]``." #: ../Doc/library/dis.rst:1361 -#, fuzzy msgid "" "``STACK[-1]`` is an :term:`iterator`. Call its :meth:`~iterator.__next__` " "method. If this yields a new value, push it on the stack (leaving the " "iterator below it). If the iterator indicates it is exhausted then the byte " "code counter is incremented by *delta*." msgstr "" -"TOS es un :term:`iterador`. Llama a su método :meth:`~iterator.__next__`. Si " -"esto produce un nuevo valor, lo apila en la pila (dejando el iterador debajo " -"de él). Si el iterador indica que está agotado, se abre TOS y el contador de " -"código de bytes se incrementa en *delta*." +"``STACK[-1]`` es un :term:`iterator`. Llama a su método :meth:`~iterator." +"__next__`. Si esto produce un nuevo valor, colócalo en la pila (dejando el " +"iterador debajo de él). Si el iterador indica que está agotado, el contador " +"de código de bytes se incrementa en *delta*." #: ../Doc/library/dis.rst:1366 msgid "Up until 3.11 the iterator was popped when it was exhausted." -msgstr "" +msgstr "Hasta la versión 3.11, el iterador se activaba cuando se agotaba." #: ../Doc/library/dis.rst:1371 msgid "Loads the global named ``co_names[namei>>1]`` onto the stack." @@ -1811,14 +1943,18 @@ msgid "" "This opcode is now only used in situations where the local variable is " "guaranteed to be initialized. It cannot raise :exc:`UnboundLocalError`." msgstr "" +"Este código de operación ahora solo se utiliza en situaciones en las que se " +"garantiza que la variable local se inicializará. No puede generar :exc:" +"`UnboundLocalError`." #: ../Doc/library/dis.rst:1387 -#, fuzzy msgid "" "Pushes a reference to the local ``co_varnames[var_num]`` onto the stack, " "raising an :exc:`UnboundLocalError` if the local variable has not been " "initialized." -msgstr "Apila una referencia al local ``co_varnames[var_num]`` sobre la pila." +msgstr "" +"Inserta una referencia al ``co_varnames[var_num]`` local en la pila y genera " +"un :exc:`UnboundLocalError` si la variable local no se ha inicializado." #: ../Doc/library/dis.rst:1395 msgid "" @@ -1826,24 +1962,25 @@ msgid "" "pushes ``NULL`` onto the stack if the local variable has not been " "initialized) and sets ``co_varnames[var_num]`` to ``NULL``." msgstr "" +"Inserta una referencia al ``co_varnames[var_num]`` local en la pila (o " +"inserta ``NULL`` en la pila si la variable local no se ha inicializado) y " +"establece ``co_varnames[var_num]`` en ``NULL``." #: ../Doc/library/dis.rst:1403 -#, fuzzy msgid "Stores ``STACK.pop()`` into the local ``co_varnames[var_num]``." -msgstr "Almacena TOS en el local ``co_varnames[var_num]``." +msgstr "Almacena ``STACK.pop()`` en el ``co_varnames[var_num]`` local." #: ../Doc/library/dis.rst:1408 msgid "Deletes local ``co_varnames[var_num]``." msgstr "Elimina la ``co_varnames[var_num]`` local." #: ../Doc/library/dis.rst:1413 -#, fuzzy msgid "" "Creates a new cell in slot ``i``. If that slot is nonempty then that value " "is stored into the new cell." msgstr "" -"Crea una nueva celda en la ranura ``i``. Si esa ranura está vacía, ese valor " -"se almacena en la nueva celda." +"Crea una nueva celda en la ranura ``i``. Si esa ranura no está vacía, ese " +"valor se almacena en la nueva celda." #: ../Doc/library/dis.rst:1421 msgid "" @@ -1855,10 +1992,11 @@ msgstr "" #: ../Doc/library/dis.rst:1424 ../Doc/library/dis.rst:1446 #: ../Doc/library/dis.rst:1457 -#, fuzzy msgid "" "``i`` is no longer offset by the length of :attr:`~codeobject.co_varnames`." -msgstr "``i`` ya no se compensa con la longitud de ``co_varnames``." +msgstr "" +"``i`` ya no está compensado por la longitud de :attr:`~codeobject." +"co_varnames`." #: ../Doc/library/dis.rst:1430 msgid "" @@ -1869,15 +2007,21 @@ msgid "" "(which previously used :opcode:`!LOAD_CLASSDEREF`) and in :ref:`annotation " "scopes ` within class bodies." msgstr "" +"Extrae una asignación de la pila y busca el nombre asociado con la ranura " +"``i`` del almacenamiento de \"variables locales rápidas\" en esta " +"asignación. Si no se encuentra el nombre allí, lo carga desde la celda " +"contenida en la ranura ``i``, de manera similar a :opcode:`LOAD_DEREF`. Esto " +"se utiliza para cargar variables libres en cuerpos de clase (que " +"anteriormente utilizaban :opcode:`!LOAD_CLASSDEREF`) y en :ref:`annotation " +"scopes ` dentro de cuerpos de clase." #: ../Doc/library/dis.rst:1443 -#, fuzzy msgid "" "Stores ``STACK.pop()`` into the cell contained in slot ``i`` of the \"fast " "locals\" storage." msgstr "" -"Almacena TOS en la celda contenida en la ranura ``i`` del almacenamiento " -"\"locales rápidos\"." +"Almacena ``STACK.pop()`` en la celda contenida en la ranura ``i`` del " +"almacenamiento de \"locales rápidos\"." #: ../Doc/library/dis.rst:1452 msgid "" @@ -1908,30 +2052,27 @@ msgid "0: ``raise`` (re-raise previous exception)" msgstr "0: ``raise`` (vuelve a lanzar la excepción anterior)" #: ../Doc/library/dis.rst:1476 -#, fuzzy msgid "" "1: ``raise STACK[-1]`` (raise exception instance or type at ``STACK[-1]``)" -msgstr "1: ``raise TOS`` (lanza instancia de excepción o un tipo en ``TOS``)" +msgstr "" +"1: ``raise STACK[-1]`` (generar instancia o tipo de excepción en " +"``STACK[-1]``)" #: ../Doc/library/dis.rst:1477 -#, fuzzy msgid "" "2: ``raise STACK[-2] from STACK[-1]`` (raise exception instance or type at " "``STACK[-2]`` with ``__cause__`` set to ``STACK[-1]``)" msgstr "" -"2: ``raise TOS1 desde TOS`` (lanza una instancia de excepción o tipo en " -"``TOS1`` con ``__cause__`` establecida en ``TOS``)" +"2: ``raise STACK[-2] from STACK[-1]`` (generar una instancia o tipo de " +"excepción en ``STACK[-2]`` con ``__cause__`` establecido en ``STACK[-1]``)" #: ../Doc/library/dis.rst:1483 -#, fuzzy msgid "" "Calls a callable object with the number of arguments specified by ``argc``. " "On the stack are (in ascending order):" msgstr "" "Llama a un objeto invocable con la cantidad de argumentos especificados por " -"``argc``, incluidos los argumentos con nombre especificados por el :opcode:" -"`KW_NAMES` anterior, si los hay. En la pila están (en orden ascendente), ya " -"sea:" +"``argc``. En la pila se encuentran (en orden ascendente):" #: ../Doc/library/dis.rst:1486 ../Doc/library/dis.rst:1510 msgid "The callable" @@ -1939,18 +2080,16 @@ msgstr "El llamable" #: ../Doc/library/dis.rst:1487 ../Doc/library/dis.rst:1511 msgid "``self`` or ``NULL``" -msgstr "" +msgstr "``self`` o ``NULL``" #: ../Doc/library/dis.rst:1488 ../Doc/library/dis.rst:1512 msgid "The remaining positional arguments" msgstr "Los argumentos posicionales restantes" #: ../Doc/library/dis.rst:1490 -#, fuzzy msgid "``argc`` is the total of the positional arguments, excluding ``self``." msgstr "" -"``argc`` es el total de los argumentos posicionales y con nombre, excluyendo " -"``self`` cuando ``NULL`` no está presente." +"``argc`` es el total de los argumentos posicionales, excluyendo ``self``." #: ../Doc/library/dis.rst:1492 msgid "" @@ -1965,21 +2104,22 @@ msgstr "" #: ../Doc/library/dis.rst:1498 msgid "The callable now always appears at the same position on the stack." msgstr "" +"El objeto invocable ahora siempre aparece en la misma posición en la pila." #: ../Doc/library/dis.rst:1501 msgid "Calls with keyword arguments are now handled by :opcode:`CALL_KW`." msgstr "" +"Las llamadas con argumentos de palabras clave ahora son manejadas por :" +"opcode:`CALL_KW`." #: ../Doc/library/dis.rst:1507 -#, fuzzy msgid "" "Calls a callable object with the number of arguments specified by ``argc``, " "including one or more named arguments. On the stack are (in ascending order):" msgstr "" "Llama a un objeto invocable con la cantidad de argumentos especificados por " -"``argc``, incluidos los argumentos con nombre especificados por el :opcode:" -"`KW_NAMES` anterior, si los hay. En la pila están (en orden ascendente), ya " -"sea:" +"``argc``, incluidos uno o más argumentos nombrados. En la pila se encuentran " +"(en orden ascendente):" #: ../Doc/library/dis.rst:1513 msgid "The named arguments" @@ -1987,28 +2127,27 @@ msgstr "Los argumentos nombrados" #: ../Doc/library/dis.rst:1514 msgid "A :class:`tuple` of keyword argument names" -msgstr "" +msgstr "Un :class:`tuple` de nombres de argumentos de palabras clave" #: ../Doc/library/dis.rst:1516 -#, fuzzy msgid "" "``argc`` is the total of the positional and named arguments, excluding " "``self``. The length of the tuple of keyword argument names is the number of " "named arguments." msgstr "" -"``argc`` es el total de los argumentos posicionales y con nombre, excluyendo " -"``self`` cuando ``NULL`` no está presente." +"``argc`` es el total de argumentos posicionales y nombrados, excluido " +"``self``. La longitud de la tupla de nombres de argumentos de palabras clave " +"es la cantidad de argumentos nombrados." #: ../Doc/library/dis.rst:1519 -#, fuzzy msgid "" "``CALL_KW`` pops all arguments, the keyword names, and the callable object " "off the stack, calls the callable object with those arguments, and pushes " "the return value returned by the callable object." msgstr "" -"``CALL`` extrae todos los argumentos y el objeto invocable de la pila, llama " -"al objeto invocable con esos argumentos y agrega el valor retornado por el " -"objeto invocable." +"``CALL_KW`` extrae todos los argumentos, los nombres de palabras clave y el " +"objeto invocable de la pila, llama al objeto invocable con esos argumentos y " +"envía el valor de retorno devuelto por el objeto invocable." #: ../Doc/library/dis.rst:1528 msgid "" @@ -2045,6 +2184,8 @@ msgid "" "Pushes a new function object on the stack built from the code object at " "``STACK[1]``." msgstr "" +"Inserta un nuevo objeto de función en la pila creado a partir del objeto de " +"código en ``STACK[1]``." #: ../Doc/library/dis.rst:1554 msgid "Flag value ``0x04`` is a tuple of strings instead of dictionary" @@ -2054,13 +2195,15 @@ msgstr "" #: ../Doc/library/dis.rst:1557 msgid "Qualified name at ``STACK[-1]`` was removed." -msgstr "" +msgstr "Se eliminó el nombre calificado en ``STACK[-1]``." #: ../Doc/library/dis.rst:1560 msgid "" "Extra function attributes on the stack, signaled by oparg flags, were " "removed. They now use :opcode:`SET_FUNCTION_ATTRIBUTE`." msgstr "" +"Se eliminaron los atributos de funciones adicionales en la pila, señalados " +"por indicadores oparg. Ahora utilizan :opcode:`SET_FUNCTION_ATTRIBUTE`." #: ../Doc/library/dis.rst:1567 msgid "" @@ -2069,6 +2212,10 @@ msgid "" "and leaves the function at ``STACK[-1]``. The flag determines which " "attribute to set:" msgstr "" +"Establece un atributo en un objeto de función. Espera que la función esté en " +"``STACK[-1]`` y que el valor del atributo esté establecido en ``STACK[-2]``; " +"consume ambos y deja la función en ``STACK[-1]``. El indicador determina qué " +"atributo se debe establecer:" #: ../Doc/library/dis.rst:1571 msgid "" @@ -2100,6 +2247,8 @@ msgid "" "Pushes a slice object on the stack. *argc* must be 2 or 3. If it is 2, " "implements::" msgstr "" +"Coloca un objeto de segmento en la pila. *argc* debe ser 2 o 3. Si es 2, " +"implementa:" #: ../Doc/library/dis.rst:1586 msgid "" @@ -2107,10 +2256,13 @@ msgid "" "start = STACK.pop()\n" "STACK.append(slice(start, end))" msgstr "" +"end = STACK.pop()\n" +"start = STACK.pop()\n" +"STACK.append(slice(start, end))" #: ../Doc/library/dis.rst:1590 msgid "if it is 3, implements::" -msgstr "" +msgstr "Si es 3, implementa::" #: ../Doc/library/dis.rst:1592 msgid "" @@ -2119,10 +2271,15 @@ msgid "" "start = STACK.pop()\n" "STACK.append(slice(start, end, step))" msgstr "" +"step = STACK.pop()\n" +"end = STACK.pop()\n" +"start = STACK.pop()\n" +"STACK.append(slice(start, end, step))" #: ../Doc/library/dis.rst:1597 msgid "See the :func:`slice` built-in function for more information." msgstr "" +"Consulte la función incorporada :func:`slice` para obtener más información." #: ../Doc/library/dis.rst:1602 msgid "" @@ -2139,7 +2296,7 @@ msgstr "" #: ../Doc/library/dis.rst:1610 msgid "Convert value to a string, depending on ``oparg``::" -msgstr "" +msgstr "Convertir valor a cadena, dependiendo de ``oparg``::" #: ../Doc/library/dis.rst:1612 msgid "" @@ -2147,37 +2304,30 @@ msgid "" "result = func(value)\n" "STACK.append(result)" msgstr "" +"value = STACK.pop()\n" +"result = func(value)\n" +"STACK.append(result)" #: ../Doc/library/dis.rst:1616 -#, fuzzy msgid "``oparg == 1``: call :func:`str` on *value*" -msgstr "" -"``(flags & 0x03) == 0x01``: llama :func:`str` sobre *value* antes de " -"formatearlo." +msgstr "``oparg == 1``: llama :func:`str` con *value*" #: ../Doc/library/dis.rst:1617 -#, fuzzy msgid "``oparg == 2``: call :func:`repr` on *value*" -msgstr "" -"``(flags & 0x03) == 0x02``: llama :func:`repr` sobre *value* antes de " -"formatearlo." +msgstr "``oparg == 2``: llama :func:`repr` con *value*" #: ../Doc/library/dis.rst:1618 -#, fuzzy msgid "``oparg == 3``: call :func:`ascii` on *value*" -msgstr "" -"``(flags & 0x03) == 0x03``: llama :func:`ascii` sobre *value* antes de " -"formatearlo." +msgstr "``oparg == 3``: llama :func:`ascii` con *value*" #: ../Doc/library/dis.rst:1620 ../Doc/library/dis.rst:1633 #: ../Doc/library/dis.rst:1646 msgid "Used for implementing formatted literal strings (f-strings)." -msgstr "" +msgstr "Se utiliza para implementar cadenas literales formateadas (f-strings)." #: ../Doc/library/dis.rst:1627 -#, fuzzy msgid "Formats the value on top of stack::" -msgstr "Elimina el elemento de la parte superior de la pila (TOS)." +msgstr "Formatea el valor en la parte superior de la pila::" #: ../Doc/library/dis.rst:1629 msgid "" @@ -2185,10 +2335,13 @@ msgid "" "result = value.__format__(\"\")\n" "STACK.append(result)" msgstr "" +"value = STACK.pop()\n" +"result = value.__format__(\"\")\n" +"STACK.append(result)" #: ../Doc/library/dis.rst:1639 msgid "Formats the given value with the given format spec::" -msgstr "" +msgstr "Formatea el valor dado con la especificación de formato dada::" #: ../Doc/library/dis.rst:1641 msgid "" @@ -2197,29 +2350,33 @@ msgid "" "result = value.__format__(spec)\n" "STACK.append(result)" msgstr "" +"spec = STACK.pop()\n" +"value = STACK.pop()\n" +"result = value.__format__(spec)\n" +"STACK.append(result)" #: ../Doc/library/dis.rst:1653 -#, fuzzy msgid "" "``STACK[-1]`` is a tuple of keyword attribute names, ``STACK[-2]`` is the " "class being matched against, and ``STACK[-3]`` is the match subject. " "*count* is the number of positional sub-patterns." msgstr "" -"TOS es una tupla de nombres de atributos clave, TOS1 es la clase contra la " -"cual se hace la coincidencia, y TOS2 es el sujeto de la coincidencia. " -"*count* es el número de sub-patrones posicionales." +"``STACK[-1]`` es una tupla de nombres de atributos de palabras clave, " +"``STACK[-2]`` es la clase con la que se realiza la comparación y " +"``STACK[-3]`` es el sujeto de la comparación. *count* es la cantidad de " +"subpatrones posicionales." #: ../Doc/library/dis.rst:1657 -#, fuzzy msgid "" "Pop ``STACK[-1]``, ``STACK[-2]``, and ``STACK[-3]``. If ``STACK[-3]`` is an " "instance of ``STACK[-2]`` and has the positional and keyword attributes " "required by *count* and ``STACK[-1]``, push a tuple of extracted attributes. " "Otherwise, push ``None``." msgstr "" -"Retira TOS, TOS1 y TOS2. Si TOS2 es una instancia de TOS1 y tiene los " -"atributos posicionales y de palabra clave requeridos por *count* y TOS, " -"agrega una tupla de atributos extraídos. De lo contrario, agrega ``None``." +"Inserte ``STACK[-1]``, ``STACK[-2]`` y ``STACK[-3]``. Si ``STACK[-3]`` es " +"una instancia de ``STACK[-2]`` y tiene los atributos posicionales y de " +"palabras clave requeridos por *count* y ``STACK[-1]``, inserte una tupla de " +"atributos extraídos. De lo contrario, inserte ``None``." #: ../Doc/library/dis.rst:1671 msgid "A no-op. Performs internal tracing, debugging and optimization checks." @@ -2228,17 +2385,20 @@ msgstr "" "optimización." #: ../Doc/library/dis.rst:1673 -#, fuzzy msgid "" "The ``context`` oparand consists of two parts. The lowest two bits indicate " "where the ``RESUME`` occurs:" -msgstr "El operando ``where`` marca dónde ocurre el ``RESUME``:" +msgstr "" +"El operando ``context`` consta de dos partes. Los dos bits más bajos indican " +"dónde se encuentra el ``RESUME``:" #: ../Doc/library/dis.rst:1676 msgid "" "``0`` The start of a function, which is neither a generator, coroutine nor " "an async generator" msgstr "" +"``0`` El inicio de una función, que no es un generador, ni una corrutina ni " +"un generador asíncrono" #: ../Doc/library/dis.rst:1678 msgid "``1`` After a ``yield`` expression" @@ -2257,26 +2417,31 @@ msgid "" "The next bit is ``1`` if the RESUME is at except-depth ``1``, and ``0`` " "otherwise." msgstr "" +"El siguiente bit es ``1`` si RESUME está en la profundidad de excepción " +"``1``, y ``0`` en caso contrario." #: ../Doc/library/dis.rst:1687 msgid "The oparg value changed to include information about except-depth" -msgstr "" +msgstr "El valor de oparg cambió para incluir información sobre except-depth" #: ../Doc/library/dis.rst:1693 -#, fuzzy msgid "" "Create a generator, coroutine, or async generator from the current frame. " "Used as first opcode of in code object for the above mentioned callables. " "Clear the current frame and return the newly created generator." msgstr "" -"Crea un generador, corrutina o generador asíncrono a partir del marco " -"actual. Borra el marco actual y retorna el generador recién creado." +"Crea un generador, una corrutina o un generador asincrónico a partir del " +"marco actual. Se utiliza como primer código de operación del objeto de " +"código para los elementos invocables mencionados anteriormente. Borra el " +"marco actual y devuelve el generador recién creado." #: ../Doc/library/dis.rst:1702 msgid "" "Equivalent to ``STACK[-1] = STACK[-2].send(STACK[-1])``. Used in ``yield " "from`` and ``await`` statements." msgstr "" +"Equivalente a ``STACK[-1] = STACK[-2].send(STACK[-1])``. Se utiliza en las " +"instrucciones ``yield from`` y ``await``." #: ../Doc/library/dis.rst:1705 msgid "" @@ -2284,23 +2449,28 @@ msgid "" "push the exception's ``value`` attribute, and increment the bytecode counter " "by *delta*." msgstr "" +"Si la llamada genera :exc:`StopIteration`, extrae el valor superior de la " +"pila, inserta el atributo ``value`` de la excepción e incrementa el contador " +"de bytecode en *delta*." #: ../Doc/library/dis.rst:1714 -#, fuzzy msgid "" "This is not really an opcode. It identifies the dividing line between " "opcodes in the range [0,255] which don't use their argument and those that " "do (``< HAVE_ARGUMENT`` and ``>= HAVE_ARGUMENT``, respectively)." msgstr "" -"Esto no es realmente un opcode. Identifica la línea divisoria entre los " -"opcode que no usan su argumento y los que lo hacen (``< HAVE_ARGUMENT`` y " -"``>= HAVE_ARGUMENT``, respectivamente)." +"En realidad, no se trata de un código de operación. Identifica la línea " +"divisoria entre los códigos de operación en el rango [0,255] que no utilizan " +"su argumento y los que sí lo hacen (``< HAVE_ARGUMENT`` y ``>= " +"HAVE_ARGUMENT``, respectivamente)." #: ../Doc/library/dis.rst:1718 msgid "" "If your application uses pseudo instructions or specialized instructions, " "use the :data:`hasarg` collection instead." msgstr "" +"Si su aplicación utiliza pseudoinstrucciones o instrucciones especializadas, " +"utilice la colección :data:`hasarg` en su lugar." #: ../Doc/library/dis.rst:1721 msgid "" @@ -2317,10 +2487,12 @@ msgid "" "not true that comparison with ``HAVE_ARGUMENT`` indicates whether they use " "their arg." msgstr "" +"Se agregaron instrucciones pseudo al módulo :mod:`dis`, y para ellos no es " +"cierto que la comparación con ``HAVE_ARGUMENT`` indique si usan su argumento." #: ../Doc/library/dis.rst:1730 msgid "Use :data:`hasarg` instead." -msgstr "" +msgstr "Utilice :data:`hasarg` en su lugar." #: ../Doc/library/dis.rst:1735 msgid "" @@ -2328,110 +2500,113 @@ msgid "" "argument and sets ``STACK[-1]`` to the result. Used to implement " "functionality that is not performance critical." msgstr "" +"Llama a una función intrínseca con un argumento. Pasa ``STACK[-1]`` como " +"argumento y establece ``STACK[-1]`` como resultado. Se utiliza para " +"implementar una funcionalidad que no es crítica para el rendimiento." #: ../Doc/library/dis.rst:1739 ../Doc/library/dis.rst:1793 msgid "The operand determines which intrinsic function is called:" -msgstr "" +msgstr "El operando determina qué función intrínseca se llama:" #: ../Doc/library/dis.rst:1742 ../Doc/library/dis.rst:1796 msgid "Operand" -msgstr "" +msgstr "Operando" #: ../Doc/library/dis.rst:1742 ../Doc/library/dis.rst:1796 msgid "Description" -msgstr "" +msgstr "Descripción" #: ../Doc/library/dis.rst:1744 msgid "``INTRINSIC_1_INVALID``" -msgstr "" +msgstr "``INTRINSIC_1_INVALID``" #: ../Doc/library/dis.rst:1744 ../Doc/library/dis.rst:1798 msgid "Not valid" -msgstr "" +msgstr "No válido" #: ../Doc/library/dis.rst:1746 msgid "``INTRINSIC_PRINT``" -msgstr "" +msgstr "``INTRINSIC_PRINT``" #: ../Doc/library/dis.rst:1746 msgid "Prints the argument to standard out. Used in the REPL." -msgstr "" +msgstr "Imprime el argumento en la salida estándar. Se utiliza en REPL." #: ../Doc/library/dis.rst:1749 msgid "``INTRINSIC_IMPORT_STAR``" -msgstr "" +msgstr "``INTRINSIC_IMPORT_STAR``" #: ../Doc/library/dis.rst:1749 msgid "Performs ``import *`` for the named module." -msgstr "" +msgstr "Ejecuta ``import *`` para el módulo nombrado." #: ../Doc/library/dis.rst:1752 msgid "``INTRINSIC_STOPITERATION_ERROR``" -msgstr "" +msgstr "``INTRINSIC_STOPITERATION_ERROR``" #: ../Doc/library/dis.rst:1752 msgid "Extracts the return value from a ``StopIteration`` exception." -msgstr "" +msgstr "Extrae el valor de retorno de una excepción ``StopIteration``." #: ../Doc/library/dis.rst:1755 msgid "``INTRINSIC_ASYNC_GEN_WRAP``" -msgstr "" +msgstr "``INTRINSIC_ASYNC_GEN_WRAP``" #: ../Doc/library/dis.rst:1755 msgid "Wraps an async generator value" -msgstr "" +msgstr "Envuelve un valor de generador asincrónico" #: ../Doc/library/dis.rst:1757 msgid "``INTRINSIC_UNARY_POSITIVE``" -msgstr "" +msgstr "``INTRINSIC_UNARY_POSITIVE``" #: ../Doc/library/dis.rst:1757 msgid "Performs the unary ``+`` operation" -msgstr "" +msgstr "Realiza la operación unaria ``+``" #: ../Doc/library/dis.rst:1760 msgid "``INTRINSIC_LIST_TO_TUPLE``" -msgstr "" +msgstr "``INTRINSIC_LIST_TO_TUPLE``" #: ../Doc/library/dis.rst:1760 msgid "Converts a list to a tuple" -msgstr "" +msgstr "Convierte una lista en una tupla" #: ../Doc/library/dis.rst:1762 msgid "``INTRINSIC_TYPEVAR``" -msgstr "" +msgstr "``INTRINSIC_TYPEVAR``" #: ../Doc/library/dis.rst:1762 msgid "Creates a :class:`typing.TypeVar`" -msgstr "" +msgstr "Crea un :class:`typing.TypeVar`" #: ../Doc/library/dis.rst:1764 msgid "``INTRINSIC_PARAMSPEC``" -msgstr "" +msgstr "``INTRINSIC_PARAMSPEC``" #: ../Doc/library/dis.rst:1764 msgid "Creates a :class:`typing.ParamSpec`" -msgstr "" +msgstr "Crea un :class:`typing.ParamSpec`" #: ../Doc/library/dis.rst:1767 msgid "``INTRINSIC_TYPEVARTUPLE``" -msgstr "" +msgstr "``INTRINSIC_TYPEVARTUPLE``" #: ../Doc/library/dis.rst:1767 msgid "Creates a :class:`typing.TypeVarTuple`" -msgstr "" +msgstr "Crea un :class:`typing.TypeVarTuple`" #: ../Doc/library/dis.rst:1770 msgid "``INTRINSIC_SUBSCRIPT_GENERIC``" -msgstr "" +msgstr "``INTRINSIC_SUBSCRIPT_GENERIC``" #: ../Doc/library/dis.rst:1770 msgid "Returns :class:`typing.Generic` subscripted with the argument" -msgstr "" +msgstr "Devuelve :class:`typing.Generic` subíndice con el argumento" #: ../Doc/library/dis.rst:1773 msgid "``INTRINSIC_TYPEALIAS``" -msgstr "" +msgstr "``INTRINSIC_TYPEALIAS``" #: ../Doc/library/dis.rst:1773 msgid "" @@ -2439,12 +2614,17 @@ msgid "" "statement. The argument is a tuple of the type alias's name, type " "parameters, and value." msgstr "" +"Crea un :class:`typing.TypeAliasType`; se utiliza en la declaración :keyword:" +"`type`. El argumento es una tupla con el nombre del alias de tipo, los " +"parámetros de tipo y el valor." #: ../Doc/library/dis.rst:1785 msgid "" "Calls an intrinsic function with two arguments. Used to implement " "functionality that is not performance critical::" msgstr "" +"Llama a una función intrínseca con dos argumentos. Se utiliza para " +"implementar una funcionalidad que no es crítica para el rendimiento:" #: ../Doc/library/dis.rst:1788 msgid "" @@ -2453,47 +2633,52 @@ msgid "" "result = intrinsic2(arg1, arg2)\n" "STACK.append(result)" msgstr "" +"arg2 = STACK.pop()\n" +"arg1 = STACK.pop()\n" +"result = intrinsic2(arg1, arg2)\n" +"STACK.append(result)" #: ../Doc/library/dis.rst:1798 msgid "``INTRINSIC_2_INVALID``" -msgstr "" +msgstr "``INTRINSIC_2_INVALID``" #: ../Doc/library/dis.rst:1800 msgid "``INTRINSIC_PREP_RERAISE_STAR``" -msgstr "" +msgstr "``INTRINSIC_PREP_RERAISE_STAR``" #: ../Doc/library/dis.rst:1800 msgid "Calculates the :exc:`ExceptionGroup` to raise from a ``try-except*``." msgstr "" +"Calcula el :exc:`ExceptionGroup` que se debe aumentar desde un ``try-" +"except*``." #: ../Doc/library/dis.rst:1804 msgid "``INTRINSIC_TYPEVAR_WITH_BOUND``" -msgstr "" +msgstr "``INTRINSIC_TYPEVAR_WITH_BOUND``" #: ../Doc/library/dis.rst:1804 msgid "Creates a :class:`typing.TypeVar` with a bound." -msgstr "" +msgstr "Crea un :class:`typing.TypeVar` con un límite." #: ../Doc/library/dis.rst:1807 msgid "``INTRINSIC_TYPEVAR_WITH_CONSTRAINTS``" -msgstr "" +msgstr "``INTRINSIC_TYPEVAR_WITH_CONSTRAINTS``" #: ../Doc/library/dis.rst:1807 msgid "Creates a :class:`typing.TypeVar` with constraints." -msgstr "" +msgstr "Crea un :class:`typing.TypeVar` con restricciones." #: ../Doc/library/dis.rst:1811 msgid "``INTRINSIC_SET_FUNCTION_TYPE_PARAMS``" -msgstr "" +msgstr "``INTRINSIC_SET_FUNCTION_TYPE_PARAMS``" #: ../Doc/library/dis.rst:1811 msgid "Sets the ``__type_params__`` attribute of a function." -msgstr "" +msgstr "Establece el atributo ``__type_params__`` de una función." #: ../Doc/library/dis.rst:1818 -#, fuzzy msgid "**Pseudo-instructions**" -msgstr "**Instrucciones generales**" +msgstr "**Pseudo-instrucciones**" #: ../Doc/library/dis.rst:1820 msgid "" @@ -2501,6 +2686,9 @@ msgid "" "compiler but are replaced by real opcodes or removed before bytecode is " "generated." msgstr "" +"Estos códigos de operación no aparecen en el código de bytes de Python. El " +"compilador los utiliza, pero se reemplazan por códigos de operación reales o " +"se eliminan antes de que se genere el código de bytes." #: ../Doc/library/dis.rst:1825 msgid "" @@ -2508,6 +2696,10 @@ msgid "" "occurs, the value stack level is restored to its current state and control " "is transferred to the exception handler at ``target``." msgstr "" +"Configure un controlador de excepciones para el siguiente bloque de código. " +"Si se produce una excepción, el nivel de pila de valores se restaura a su " +"estado actual y el control se transfiere al controlador de excepciones en " +"``target``." #: ../Doc/library/dis.rst:1832 msgid "" @@ -2517,6 +2709,11 @@ msgid "" "frame are restored to their current state, and control is transferred to the " "exception handler at ``target``." msgstr "" +"Como ``SETUP_FINALLY``, pero en caso de excepción también envía la última " +"instrucción (``lasti``) a la pila para que ``RERAISE`` pueda restaurarla. Si " +"se produce una excepción, el nivel de pila de valores y la última " +"instrucción del marco se restauran a su estado actual y el control se " +"transfiere al controlador de excepciones en ``target``." #: ../Doc/library/dis.rst:1841 msgid "" @@ -2524,6 +2721,9 @@ msgid "" "from the stack before control is transferred to the exception handler at " "``target``." msgstr "" +"Como ``SETUP_CLEANUP``, pero en caso de una excepción, se extrae un elemento " +"más de la pila antes de que el control se transfiera al controlador de " +"excepciones en ``target``." #: ../Doc/library/dis.rst:1845 msgid "" @@ -2531,45 +2731,52 @@ msgid "" "constructs, which push the return value of the context manager's :meth:" "`~object.__enter__` or :meth:`~object.__aenter__` to the stack." msgstr "" +"Esta variante se utiliza en las construcciones :keyword:`with` y :keyword:" +"`async with`, que envían el valor de retorno de :meth:`~object.__enter__` o :" +"meth:`~object.__aenter__` del administrador de contexto a la pila." #: ../Doc/library/dis.rst:1852 msgid "" "Marks the end of the code block associated with the last ``SETUP_FINALLY``, " "``SETUP_CLEANUP`` or ``SETUP_WITH``." msgstr "" +"Marca el final del bloque de código asociado con el último " +"``SETUP_FINALLY``, ``SETUP_CLEANUP`` o ``SETUP_WITH``." #: ../Doc/library/dis.rst:1858 msgid "" "Undirected relative jump instructions which are replaced by their directed " "(forward/backward) counterparts by the assembler." msgstr "" +"Instrucciones de salto relativo no dirigido que son reemplazadas por sus " +"contrapartes dirigidas (hacia adelante/hacia atrás) por el ensamblador." #: ../Doc/library/dis.rst:1863 -#, fuzzy msgid "" "Pushes a reference to the cell contained in slot ``i`` of the \"fast " "locals\" storage." msgstr "" -"Almacena TOS en la celda contenida en la ranura ``i`` del almacenamiento " -"\"locales rápidos\"." +"Envía una referencia a la celda contenida en la ranura ``i`` del " +"almacenamiento de \"valores locales rápidos\"." #: ../Doc/library/dis.rst:1866 -#, fuzzy msgid "" "Note that ``LOAD_CLOSURE`` is replaced with ``LOAD_FAST`` in the assembler." msgstr "" -"Tenga en cuenta que ``LOAD_CLOSURE`` es efectivamente un alias para " -"``LOAD_FAST``. Existe para mantener el bytecode un poco más legible." +"Tenga en cuenta que ``LOAD_CLOSURE`` se reemplaza con ``LOAD_FAST`` en el " +"ensamblador." #: ../Doc/library/dis.rst:1868 msgid "This opcode is now a pseudo-instruction." -msgstr "" +msgstr "Este código de operación ahora es una pseudoinstrucción." #: ../Doc/library/dis.rst:1874 msgid "" "Optimized unbound method lookup. Emitted as a ``LOAD_ATTR`` opcode with a " "flag set in the arg." msgstr "" +"Búsqueda de método no enlazado optimizada. Se emite como un código de " +"operación ``LOAD_ATTR`` con un indicador establecido en el argumento." #: ../Doc/library/dis.rst:1881 msgid "Opcode collections" @@ -2589,6 +2796,9 @@ msgid "" "instructions as well. These are opcodes with values ``>= MIN_PSEUDO_OPCODE`` " "and ``>= MIN_INSTRUMENTED_OPCODE``." msgstr "" +"Las colecciones ahora también contienen pseudoinstrucciones e instrucciones " +"instrumentadas. Se trata de códigos de operación con valores ``>= " +"MIN_PSEUDO_OPCODE`` y ``>= MIN_INSTRUMENTED_OPCODE``." #: ../Doc/library/dis.rst:1893 msgid "Sequence of operation names, indexable using the bytecode." @@ -2603,36 +2813,35 @@ msgid "Sequence of all compare operation names." msgstr "Secuencia de todos los nombres de operaciones de comparación." #: ../Doc/library/dis.rst:1908 -#, fuzzy msgid "Sequence of bytecodes that use their argument." -msgstr "Secuencia de bytecodes que acceden a una constante." +msgstr "Secuencia de códigos de bytes que utilizan su argumento." #: ../Doc/library/dis.rst:1915 msgid "Sequence of bytecodes that access a constant." msgstr "Secuencia de bytecodes que acceden a una constante." #: ../Doc/library/dis.rst:1920 -#, fuzzy msgid "" "Sequence of bytecodes that access a free variable. 'free' in this context " "refers to names in the current scope that are referenced by inner scopes or " "names in outer scopes that are referenced from this scope. It does *not* " "include references to global or builtin scopes." msgstr "" -"Secuencia de bytecodes que acceden a una variable libre (tenga en cuenta que " -"'libre' en este contexto se refiere a nombres en el alcance actual a los que " -"hacen referencia los ámbitos internos o los nombres en los ámbitos externos " -"a los que se hace referencia desde este ámbito. **No** incluye referencias a " -"ámbitos globales o integrados)." +"Secuencia de códigos de bytes que acceden a una variable libre. \"libre\" en " +"este contexto se refiere a nombres en el ámbito actual a los que hacen " +"referencia los ámbitos internos o a nombres en ámbitos externos a los que " +"hace referencia este ámbito. *not* incluye referencias a ámbitos globales o " +"integrados." #: ../Doc/library/dis.rst:1928 msgid "Sequence of bytecodes that access an attribute by name." msgstr "Secuencia de bytecodes que acceden a un atributo por nombre." #: ../Doc/library/dis.rst:1933 -#, fuzzy msgid "Sequence of bytecodes that have a jump target. All jumps are relative." -msgstr "Secuencia de bytecodes que tienen un objetivo de salto relativo." +msgstr "" +"Secuencia de códigos de bytes que tienen un destino de salto. Todos los " +"saltos son relativos." #: ../Doc/library/dis.rst:1940 msgid "Sequence of bytecodes that access a local variable." @@ -2643,9 +2852,9 @@ msgid "Sequence of bytecodes of Boolean operations." msgstr "Secuencia de bytecodes de operaciones booleanas." #: ../Doc/library/dis.rst:1949 -#, fuzzy msgid "Sequence of bytecodes that set an exception handler." -msgstr "Secuencia de bytecodes que acceden a una constante." +msgstr "" +"Secuencia de códigos de bytes que establecen un controlador de excepciones." #: ../Doc/library/dis.rst:1956 msgid "Sequence of bytecodes that have a relative jump target." @@ -2653,7 +2862,7 @@ msgstr "Secuencia de bytecodes que tienen un objetivo de salto relativo." #: ../Doc/library/dis.rst:1958 msgid "All jumps are now relative. Use :data:`hasjump`." -msgstr "" +msgstr "Ahora todos los saltos son relativos. Utilice :data:`hasjump`." #: ../Doc/library/dis.rst:1964 msgid "Sequence of bytecodes that have an absolute jump target." @@ -2661,12 +2870,12 @@ msgstr "Secuencia de bytecodes que tienen un objetivo de salto absoluto." #: ../Doc/library/dis.rst:1966 msgid "All jumps are now relative. This list is empty." -msgstr "" +msgstr "Ahora todos los saltos son relativos. Esta lista está vacía." #: ../Doc/library/dis.rst:1582 msgid "built-in function" -msgstr "" +msgstr "función incorporada" #: ../Doc/library/dis.rst:1582 msgid "slice" -msgstr "" +msgstr "rebanada" From def22f86240b065957356c12e4d37d6f63cc5c3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cristi=C3=A1n=20Maureira-Fredes?= Date: Tue, 14 Oct 2025 11:58:06 +0200 Subject: [PATCH 59/78] Translate library/turtle (#3332) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #2910 --------- Co-authored-by: Charly Román --- dictionaries/library_turtle.txt | 8 + library/turtle.po | 948 ++++++++++++++++++++++++++------ 2 files changed, 799 insertions(+), 157 deletions(-) diff --git a/dictionaries/library_turtle.txt b/dictionaries/library_turtle.txt index 505a4abf23..7a74de7617 100644 --- a/dictionaries/library_turtle.txt +++ b/dictionaries/library_turtle.txt @@ -27,12 +27,15 @@ buffer call click clickear +cmode colormode descriptos docstringdict ej etnomatemáticas eventollamando +fill +gap gif gravitacional innombrado @@ -46,6 +49,7 @@ maxval mili milisegundos minimalista +minval mode mouse n @@ -68,8 +72,12 @@ speed stamp standard stretchfactor +stretchfactors subproceso t +teletransporta +teletransportarse +teletransporte tilt tiltangle trio diff --git a/library/turtle.po b/library/turtle.po index 5d232b84aa..2f0462678c 100644 --- a/library/turtle.po +++ b/library/turtle.po @@ -11,15 +11,16 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: 2021-08-04 22:07+0200\n" +"PO-Revision-Date: 2024-11-24 22:56+0100\n" "Last-Translator: Cristián Maureira-Fredes \n" -"Language: es_AR\n" "Language-Team: python-doc-es\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es_AR\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.16.0\n" +"X-Generator: Poedit 3.4.2\n" #: ../Doc/library/turtle.rst:3 msgid ":mod:`turtle` --- Turtle graphics" @@ -34,20 +35,19 @@ msgid "Introduction" msgstr "Introducción" #: ../Doc/library/turtle.rst:22 -#, fuzzy msgid "" "Turtle graphics is an implementation of `the popular geometric drawing tools " "introduced in Logo `_, " "developed by Wally Feurzeig, Seymour Papert and Cynthia Solomon in 1967." msgstr "" -"Gráficas Turtle es una forma muy habitual de introducción a la programación " -"para niñas y niños. Era parte original del lenguaje de programación Logo, " -"desarrollado por Wally Feurzeig, Seymour Papert y Cynthia Solomon en 1967." +"Los gráficos de tortuga son una implementación de `the popular geometric " +"drawing tools introduced in Logo `_, desarrollado por Wally Feurzeig, Seymour Papert y Cynthia " +"Solomon en 1967." #: ../Doc/library/turtle.rst:29 -#, fuzzy msgid "Get started" -msgstr "Estado de la Tortuga" +msgstr "Empezar" #: ../Doc/library/turtle.rst:31 msgid "" @@ -57,6 +57,12 @@ msgid "" "moves. Give it the command ``turtle.right(25)``, and it rotates in-place 25 " "degrees clockwise." msgstr "" +"Imagine una tortuga robótica que comienza en (0, 0) en el plano x-y. Después " +"de un ``import turtle``, dale el comando ``turtle.forward(15)`` y se moverá " +"(¡en la pantalla!) 15 píxeles en la dirección en la que está mirando, " +"dibujando una línea a medida que se mueve. Dale el comando ``turtle." +"right(25)`` y rotará en su lugar 25 grados en el sentido de las agujas del " +"reloj." #: ../Doc/library/turtle.rst:38 msgid "" @@ -71,6 +77,9 @@ msgid "" "\"turtle\" (a little robot with a pen) that draws on a sheet of paper on the " "floor." msgstr "" +"En Python, los gráficos de tortuga proporcionan una representación de una " +"\"tortuga\" física (un pequeño robot con un bolígrafo) que dibuja en una " +"hoja de papel en el suelo." #: ../Doc/library/turtle.rst:47 msgid "" @@ -78,6 +87,10 @@ msgid "" "concepts and interaction with software, as it provides instant, visible " "feedback. It also provides convenient access to graphical output in general." msgstr "" +"Es una forma eficaz y probada para que los estudiantes conozcan " +"los conceptos de programación y la interacción con el software, ya que " +"proporciona una retroalimentación instantánea y visible. También proporciona " +"un acceso cómodo a la salida gráfica en general." #: ../Doc/library/turtle.rst:52 msgid "" @@ -86,48 +99,56 @@ msgid "" "graphical output it can be a way to do that without the overhead of " "introducing more complex or external libraries into their work." msgstr "" +"El dibujo de tortugas se creó originalmente como una herramienta educativa " +"para que la utilizaran los profesores en el aula. Para el programador que " +"necesita producir algún resultado gráfico, puede ser una forma de hacerlo " +"sin la sobrecarga que supone introducir bibliotecas externas o más complejas " +"en su trabajo." #: ../Doc/library/turtle.rst:61 msgid "Tutorial" -msgstr "" +msgstr "Tutorial" #: ../Doc/library/turtle.rst:63 msgid "" "New users should start here. In this tutorial we'll explore some of the " "basics of turtle drawing." msgstr "" +"Los nuevos usuarios deberían empezar aquí. En este tutorial, exploraremos " +"algunos de los conceptos básicos del dibujo de tortugas." #: ../Doc/library/turtle.rst:68 -#, fuzzy msgid "Starting a turtle environment" -msgstr "Ajuste y unidades de medida" +msgstr "Iniciando un entorno para tortugas" #: ../Doc/library/turtle.rst:70 msgid "In a Python shell, import all the objects of the ``turtle`` module::" msgstr "" +"En un shell de Python, importe todos los objetos del módulo ``turtle``:" #: ../Doc/library/turtle.rst:72 -#, fuzzy msgid "from turtle import *" -msgstr "Movimiento de Turtle" +msgstr "from turtle import *" #: ../Doc/library/turtle.rst:74 msgid "" "If you run into a ``No module named '_tkinter'`` error, you'll have to " "install the :mod:`Tk interface package ` on your system." msgstr "" +"Si se encuentra con un error ``No module named '_tkinter'``, tendrá que " +"instalar :mod:`Tk interface package ` en su sistema." #: ../Doc/library/turtle.rst:79 msgid "Basic drawing" -msgstr "" +msgstr "Dibujo básico" #: ../Doc/library/turtle.rst:81 msgid "Send the turtle forward 100 steps::" -msgstr "" +msgstr "Envía la tortuga hacia adelante 100 pasos::" #: ../Doc/library/turtle.rst:83 msgid "forward(100)" -msgstr "" +msgstr "forward(100)" #: ../Doc/library/turtle.rst:85 msgid "" @@ -135,14 +156,18 @@ msgid "" "by the turtle, heading East. Change the direction of the turtle, so that it " "turns 120 degrees left (anti-clockwise)::" msgstr "" +"Deberías ver (probablemente en una nueva ventana de tu pantalla) una línea " +"dibujada por la tortuga, en dirección este. Cambia la dirección de la " +"tortuga para que gire 120 grados hacia la izquierda (en sentido contrario a " +"las agujas del reloj):" #: ../Doc/library/turtle.rst:89 msgid "left(120)" -msgstr "" +msgstr "left(120)" #: ../Doc/library/turtle.rst:91 msgid "Let's continue by drawing a triangle::" -msgstr "" +msgstr "Continuemos dibujando un triángulo::" #: ../Doc/library/turtle.rst:93 msgid "" @@ -150,17 +175,23 @@ msgid "" "left(120)\n" "forward(100)" msgstr "" +"forward(100)\n" +"left(120)\n" +"forward(100)" #: ../Doc/library/turtle.rst:97 msgid "" "Notice how the turtle, represented by an arrow, points in different " "directions as you steer it." msgstr "" +"Observa cómo la tortuga, representada por una flecha, apunta en diferentes " +"direcciones a medida que la diriges." #: ../Doc/library/turtle.rst:100 msgid "" "Experiment with those commands, and also with ``backward()`` and ``right()``." msgstr "" +"Experimente con esos comandos y también con ``backward()`` y ``right()``." #: ../Doc/library/turtle.rst:105 ../Doc/library/turtle.rst:355 #: ../Doc/library/turtle.rst:1024 @@ -172,60 +203,68 @@ msgid "" "Try changing the color - for example, ``color('blue')`` - and width of the " "line - for example, ``width(3)`` - and then drawing again." msgstr "" +"Intente cambiar el color (por ejemplo, ``color('blue')``) y el ancho de la " +"línea (por ejemplo, ``width(3)``) y luego vuelva a dibujar." #: ../Doc/library/turtle.rst:110 msgid "" "You can also move the turtle around without drawing, by lifting up the pen: " "``up()`` before moving. To start drawing again, use ``down()``." msgstr "" +"También puedes mover la tortuga sin dibujar, levantando el lápiz: ``up()`` " +"antes de moverla. Para comenzar a dibujar nuevamente, usa ``down()``." #: ../Doc/library/turtle.rst:115 -#, fuzzy msgid "The turtle's position" -msgstr "Movimiento de Turtle" +msgstr "La posición de la tortuga" #: ../Doc/library/turtle.rst:117 msgid "" "Send your turtle back to its starting-point (useful if it has disappeared " "off-screen)::" msgstr "" +"Envía a tu tortuga de regreso a su punto de partida (útil si ha desaparecido " +"de la pantalla):" #: ../Doc/library/turtle.rst:120 msgid "home()" -msgstr "" +msgstr "home()" #: ../Doc/library/turtle.rst:122 msgid "" "The home position is at the center of the turtle's screen. If you ever need " "to know them, get the turtle's x-y coordinates with::" msgstr "" +"La posición inicial está en el centro de la pantalla de la tortuga. Si " +"alguna vez necesitas saberlas, obtén las coordenadas x-y de la tortuga con:" #: ../Doc/library/turtle.rst:125 msgid "pos()" -msgstr "" +msgstr "pos()" #: ../Doc/library/turtle.rst:127 msgid "Home is at ``(0, 0)``." -msgstr "" +msgstr "El hogar está en ``(0, 0)``." #: ../Doc/library/turtle.rst:129 msgid "" "And after a while, it will probably help to clear the window so we can start " "anew::" msgstr "" +"Y después de un tiempo, probablemente ayudará a limpiar la ventana para que " +"podamos comenzar de nuevo::" #: ../Doc/library/turtle.rst:132 -#, fuzzy msgid "clearscreen()" -msgstr ":func:`clearscreen`" +msgstr "clearscreen()" #: ../Doc/library/turtle.rst:136 msgid "Making algorithmic patterns" -msgstr "" +msgstr "Creando patrones algorítmicos" #: ../Doc/library/turtle.rst:138 msgid "Using loops, it's possible to build up geometric patterns::" -msgstr "" +msgstr "Utilizando bucles, es posible construir patrones geométricos:" #: ../Doc/library/turtle.rst:140 msgid "" @@ -235,37 +274,48 @@ msgid "" " forward(steps)\n" " right(30)" msgstr "" +"for steps in range(100):\n" +" for c in ('blue', 'red', 'green'):\n" +" color(c)\n" +" forward(steps)\n" +" right(30)" #: ../Doc/library/turtle.rst:147 msgid "\\ - which of course, are limited only by the imagination!" msgstr "" +"\\ - ¡que, por supuesto, están limitadas únicamente por la imaginación!" #: ../Doc/library/turtle.rst:149 msgid "" "Let's draw the star shape at the top of this page. We want red lines, filled " "in with yellow::" msgstr "" +"Dibujemos la forma de estrella en la parte superior de esta página. Queremos " +"líneas rojas, rellenas con amarillo:" #: ../Doc/library/turtle.rst:152 msgid "" "color('red')\n" "fillcolor('yellow')" msgstr "" +"color('red')\n" +"fillcolor('yellow')" #: ../Doc/library/turtle.rst:155 msgid "" "Just as ``up()`` and ``down()`` determine whether lines will be drawn, " "filling can be turned on and off::" msgstr "" +"Así como ``up()`` y ``down()`` determinan si se dibujarán líneas, el relleno " +"se puede activar y desactivar:" #: ../Doc/library/turtle.rst:158 -#, fuzzy msgid "begin_fill()" -msgstr ":func:`begin_fill`" +msgstr "begin_fill()" #: ../Doc/library/turtle.rst:160 msgid "Next we'll create a loop::" -msgstr "" +msgstr "A continuación crearemos un bucle:" #: ../Doc/library/turtle.rst:162 msgid "" @@ -275,39 +325,48 @@ msgid "" " if abs(pos()) < 1:\n" " break" msgstr "" +"while True:\n" +" forward(200)\n" +" left(170)\n" +" if abs(pos()) < 1:\n" +" break" #: ../Doc/library/turtle.rst:168 msgid "" "``abs(pos()) < 1`` is a good way to know when the turtle is back at its home " "position." msgstr "" +"``abs(pos()) < 1`` es una buena manera de saber cuándo la tortuga ha " +"regresado a su posición original." #: ../Doc/library/turtle.rst:171 msgid "Finally, complete the filling::" -msgstr "" +msgstr "Por último, completa el relleno:" #: ../Doc/library/turtle.rst:173 -#, fuzzy msgid "end_fill()" -msgstr ":func:`end_fill`" +msgstr "end_fill()" #: ../Doc/library/turtle.rst:175 msgid "" "(Note that filling only actually takes place when you give the " "``end_fill()`` command.)" msgstr "" +"(Tenga en cuenta que el llenado solo se realiza cuando se da el comando " +"``end_fill()``)." #: ../Doc/library/turtle.rst:182 msgid "How to..." -msgstr "" +msgstr "Cómo..." #: ../Doc/library/turtle.rst:184 msgid "This section covers some typical turtle use-cases and approaches." msgstr "" +"Esta sección cubre algunos casos de uso y enfoques típicos de las tortugas." #: ../Doc/library/turtle.rst:188 msgid "Get started as quickly as possible" -msgstr "" +msgstr "Empiece lo antes posible" #: ../Doc/library/turtle.rst:190 msgid "" @@ -316,6 +375,10 @@ msgid "" "to programming ideas, with a minimum of overhead (not just children, of " "course)." msgstr "" +"Una de las ventajas de los gráficos de tortuga es la respuesta visual " +"inmediata que se obtiene con comandos simples: es una forma excelente de " +"introducir a los niños a las ideas de programación, con un mínimo de gastos " +"generales (no solo para los niños, por supuesto)." #: ../Doc/library/turtle.rst:195 msgid "" @@ -323,6 +386,9 @@ msgid "" "functionality as functions, available with ``from turtle import *``. The :" "ref:`turtle graphics tutorial ` covers this approach." msgstr "" +"El módulo Turtle hace posible esto al exponer toda su funcionalidad básica " +"como funciones, disponibles con ``from turtle import *``. :ref:`turtle " +"graphics tutorial ` cubre este enfoque." #: ../Doc/library/turtle.rst:199 msgid "" @@ -330,6 +396,10 @@ msgid "" "equivalents, such as ``fd()`` for :func:`forward`. These are especially " "useful when working with learners for whom typing is not a skill." msgstr "" +"Vale la pena señalar que muchos de los comandos de la tortuga también tienen " +"equivalentes aún más concisos, como ``fd()`` para :func:`forward`. Estos son " +"especialmente útiles cuando se trabaja con estudiantes para quienes escribir " +"a máquina no es una habilidad." #: ../Doc/library/turtle.rst:205 msgid "" @@ -338,10 +408,14 @@ msgid "" "straightforward, so check this in advance if you're planning to use turtle " "graphics with a learner." msgstr "" +"Necesitará tener instalado :mod:`Tk interface package ` en su " +"sistema para que funcionen los gráficos de Turtle. Tenga en cuenta que esto " +"no siempre es sencillo, por lo que debe verificar esto con anticipación si " +"planea usar gráficos de Turtle con un estudiante." #: ../Doc/library/turtle.rst:212 msgid "Use the ``turtle`` module namespace" -msgstr "" +msgstr "Utilice el espacio de nombres del módulo ``turtle``" #: ../Doc/library/turtle.rst:214 msgid "" @@ -351,6 +425,11 @@ msgid "" "an issue if you're using turtle graphics in a script where other modules " "might be imported)." msgstr "" +"Usar ``from turtle import *`` es conveniente, pero tenga cuidado, ya que " +"importa una colección bastante grande de objetos y, si está haciendo otra " +"cosa que no sean gráficos de tortuga, corre el riesgo de un conflicto de " +"nombres (esto se vuelve aún más problemático si está usando gráficos de " +"tortuga en un script donde se pueden importar otros módulos)." #: ../Doc/library/turtle.rst:220 msgid "" @@ -359,17 +438,22 @@ msgid "" "and over again becomes tedious, use for example ``import turtle as t`` " "instead.)" msgstr "" +"La solución es utilizar ``import turtle``: ``fd()`` se convierte en ``turtle." +"fd()``, ``width()`` se convierte en ``turtle.width()`` y así sucesivamente. " +"(Si escribir \"tortuga\" una y otra vez se vuelve tedioso, utilice, por " +"ejemplo, ``import turtle as t`` en su lugar)." #: ../Doc/library/turtle.rst:227 -#, fuzzy msgid "Use turtle graphics in a script" -msgstr "Apaga la ventana gráfica de la tortuga." +msgstr "Utilice gráficos de tortugas en un guión" #: ../Doc/library/turtle.rst:229 msgid "" "It's recommended to use the ``turtle`` module namespace as described " "immediately above, for example::" msgstr "" +"Se recomienda utilizar el espacio de nombres del módulo ``turtle`` como se " +"describe inmediatamente arriba, por ejemplo:" #: ../Doc/library/turtle.rst:232 msgid "" @@ -382,16 +466,26 @@ msgid "" " t.right(angle)\n" " t.fd(steps)" msgstr "" +"import turtle as t\n" +"from random import random\n" +"\n" +"for i in range(100):\n" +" steps = int(random() * 100)\n" +" angle = int(random() * 360)\n" +" t.right(angle)\n" +" t.fd(steps)" #: ../Doc/library/turtle.rst:241 msgid "" "Another step is also required though - as soon as the script ends, Python " "will also close the turtle's window. Add::" msgstr "" +"Sin embargo, también se requiere otro paso: tan pronto como finalice el " +"script, Python también cerrará la ventana de la tortuga. Agregar::" #: ../Doc/library/turtle.rst:244 msgid "t.mainloop()" -msgstr "" +msgstr "t.mainloop()" #: ../Doc/library/turtle.rst:246 msgid "" @@ -399,15 +493,19 @@ msgid "" "not exit until it is terminated, for example by closing the turtle graphics " "window." msgstr "" +"hasta el final del script. El script ahora esperará a que lo cierren y no " +"saldrá hasta que lo hagan, por ejemplo, cerrando la ventana de gráficos de " +"la tortuga." #: ../Doc/library/turtle.rst:252 msgid "Use object-oriented turtle graphics" -msgstr "" +msgstr "Utilice gráficos de tortuga orientados a objetos" #: ../Doc/library/turtle.rst:254 msgid "" ":ref:`Explanation of the object-oriented interface `" msgstr "" +":ref:`Explanation of the object-oriented interface `" #: ../Doc/library/turtle.rst:256 msgid "" @@ -416,6 +514,10 @@ msgid "" "object-oriented approach to turtle graphics. For example, this allows " "multiple turtles on screen at once." msgstr "" +"Aparte de para propósitos introductorios muy básicos o para probar cosas lo " +"más rápido posible, es más habitual y mucho más potente utilizar el enfoque " +"orientado a objetos para los gráficos de tortugas. Por ejemplo, esto permite " +"tener varias tortugas en la pantalla a la vez." #: ../Doc/library/turtle.rst:261 msgid "" @@ -423,10 +525,13 @@ msgid "" "of ``Turtle`` objects). You *can* use the object-oriented approach in the " "shell, but it would be more typical in a Python script." msgstr "" +"En este enfoque, los distintos comandos de la tortuga son métodos de objetos " +"(en su mayoría objetos ``Turtle``). *can* utiliza el enfoque orientado a " +"objetos en el shell, pero sería más típico en un script de Python." #: ../Doc/library/turtle.rst:265 msgid "The example above then becomes::" -msgstr "" +msgstr "El ejemplo anterior se convierte entonces en:" #: ../Doc/library/turtle.rst:267 msgid "" @@ -442,6 +547,17 @@ msgid "" "\n" "t.screen.mainloop()" msgstr "" +"from turtle import Turtle\n" +"from random import random\n" +"\n" +"t = Turtle()\n" +"for i in range(100):\n" +" steps = int(random() * 100)\n" +" angle = int(random() * 360)\n" +" t.right(angle)\n" +" t.fd(steps)\n" +"\n" +"t.screen.mainloop()" #: ../Doc/library/turtle.rst:279 msgid "" @@ -449,20 +565,25 @@ msgid "" "a Turtle instance exists on; it's created automatically along with the " "turtle." msgstr "" +"Tenga en cuenta la última línea. ``t.screen`` es una instancia de :class:" +"`Screen` en la que existe una instancia de Turtle; se crea automáticamente " +"junto con la tortuga." #: ../Doc/library/turtle.rst:283 msgid "The turtle's screen can be customised, for example::" -msgstr "" +msgstr "La pantalla de la tortuga se puede personalizar, por ejemplo:" #: ../Doc/library/turtle.rst:285 msgid "" "t.screen.title('Object-oriented turtle demo')\n" "t.screen.bgcolor(\"orange\")" msgstr "" +"t.screen.title('Object-oriented turtle demo')\n" +"t.screen.bgcolor(\"orange\")" #: ../Doc/library/turtle.rst:290 msgid "Turtle graphics reference" -msgstr "" +msgstr "Referencia gráficos de tortugas" #: ../Doc/library/turtle.rst:294 msgid "" @@ -507,9 +628,8 @@ msgid ":func:`goto` | :func:`setpos` | :func:`setposition`" msgstr ":func:`goto` | :func:`setpos` | :func:`setposition`" #: ../Doc/library/turtle.rst -#, fuzzy msgid ":func:`teleport`" -msgstr ":func:`tilt`" +msgstr ":func:`teleport`" #: ../Doc/library/turtle.rst msgid ":func:`setx`" @@ -960,6 +1080,14 @@ msgid "" ">>> turtle.position()\n" "(-50.00,0.00)" msgstr "" +">>> turtle.position()\n" +"(0.00,0.00)\n" +">>> turtle.forward(25)\n" +">>> turtle.position()\n" +"(25.00,0.00)\n" +">>> turtle.forward(-75)\n" +">>> turtle.position()\n" +"(-50.00,0.00)" #: ../Doc/library/turtle.rst:468 ../Doc/library/turtle.rst:710 #: ../Doc/library/turtle.rst:977 ../Doc/library/turtle.rst:1485 @@ -982,6 +1110,11 @@ msgid "" ">>> turtle.position()\n" "(-30.00,0.00)" msgstr "" +">>> turtle.position()\n" +"(0.00,0.00)\n" +">>> turtle.backward(30)\n" +">>> turtle.position()\n" +"(-30.00,0.00)" #: ../Doc/library/turtle.rst:493 msgid "" @@ -1002,6 +1135,11 @@ msgid "" ">>> turtle.heading()\n" "337.0" msgstr "" +">>> turtle.heading()\n" +"22.0\n" +">>> turtle.right(45)\n" +">>> turtle.heading()\n" +"337.0" #: ../Doc/library/turtle.rst:518 msgid "" @@ -1022,6 +1160,11 @@ msgid "" ">>> turtle.heading()\n" "67.0" msgstr "" +">>> turtle.heading()\n" +"22.0\n" +">>> turtle.left(45)\n" +">>> turtle.heading()\n" +"67.0" #: ../Doc/library/turtle.rst:542 msgid "a number or a pair/vector of numbers" @@ -1063,10 +1206,22 @@ msgid "" ">>> turtle.pos()\n" "(0.00,0.00)" msgstr "" +">>> tp = turtle.pos()\n" +">>> tp\n" +"(0.00,0.00)\n" +">>> turtle.setpos(60,30)\n" +">>> turtle.pos()\n" +"(60.00,30.00)\n" +">>> turtle.setpos((20,80))\n" +">>> turtle.pos()\n" +"(20.00,80.00)\n" +">>> turtle.setpos(tp)\n" +">>> turtle.pos()\n" +"(0.00,0.00)" #: ../Doc/library/turtle.rst:578 msgid "a boolean" -msgstr "" +msgstr "un booleano" #: ../Doc/library/turtle.rst:580 msgid "" @@ -1077,6 +1232,13 @@ msgid "" "which makes the imaginary line traveled during teleporting act as a fill " "barrier like in goto(x, y)." msgstr "" +"Mueve la tortuga a una posición absoluta. A diferencia de goto(x, y), no se " +"dibujará una línea. La orientación de la tortuga no cambia. Si se está " +"llenando, el polígono o polígonos desde los que se teletransporta se " +"llenarán después de salir y el llenado comenzará nuevamente después de " +"teletransportarse. Esto se puede desactivar con fill_gap=True, que hace que " +"la línea imaginaria recorrida durante el teletransporte actúe como una " +"barrera de relleno como en goto(x, y)." #: ../Doc/library/turtle.rst:593 msgid "" @@ -1093,6 +1255,18 @@ msgid "" ">>> turtle.pos()\n" "(20.00,30.00)" msgstr "" +">>> tp = turtle.pos()\n" +">>> tp\n" +"(0.00,0.00)\n" +">>> turtle.teleport(60)\n" +">>> turtle.pos()\n" +"(60.00,0.00)\n" +">>> turtle.teleport(y=10)\n" +">>> turtle.pos()\n" +"(60.00,10.00)\n" +">>> turtle.teleport(20, 30)\n" +">>> turtle.pos()\n" +"(20.00,30.00)" #: ../Doc/library/turtle.rst:616 msgid "" @@ -1109,6 +1283,11 @@ msgid "" ">>> turtle.position()\n" "(10.00,240.00)" msgstr "" +">>> turtle.position()\n" +"(0.00,240.00)\n" +">>> turtle.setx(10)\n" +">>> turtle.position()\n" +"(10.00,240.00)" #: ../Doc/library/turtle.rst:639 msgid "" @@ -1125,6 +1304,11 @@ msgid "" ">>> turtle.position()\n" "(0.00,-10.00)" msgstr "" +">>> turtle.position()\n" +"(0.00,40.00)\n" +">>> turtle.sety(-10)\n" +">>> turtle.position()\n" +"(0.00,-10.00)" #: ../Doc/library/turtle.rst:662 msgid "" @@ -1180,6 +1364,9 @@ msgid "" ">>> turtle.heading()\n" "90.0" msgstr "" +">>> turtle.setheading(90)\n" +">>> turtle.heading()\n" +"90.0" #: ../Doc/library/turtle.rst:684 msgid "" @@ -1202,6 +1389,15 @@ msgid "" ">>> turtle.heading()\n" "0.0" msgstr "" +">>> turtle.heading()\n" +"90.0\n" +">>> turtle.position()\n" +"(0.00,-10.00)\n" +">>> turtle.home()\n" +">>> turtle.position()\n" +"(0.00,0.00)\n" +">>> turtle.heading()\n" +"0.0" #: ../Doc/library/turtle.rst:711 msgid "a number (or ``None``)" @@ -1257,6 +1453,21 @@ msgid "" ">>> turtle.heading()\n" "180.0" msgstr "" +">>> turtle.home()\n" +">>> turtle.position()\n" +"(0.00,0.00)\n" +">>> turtle.heading()\n" +"0.0\n" +">>> turtle.circle(50)\n" +">>> turtle.position()\n" +"(-0.00,0.00)\n" +">>> turtle.heading()\n" +"0.0\n" +">>> turtle.circle(120, 180) # draw a semicircle\n" +">>> turtle.position()\n" +"(0.00,240.00)\n" +">>> turtle.heading()\n" +"180.0" #: ../Doc/library/turtle.rst:748 msgid "an integer >= 1 (if given)" @@ -1284,6 +1495,13 @@ msgid "" ">>> turtle.heading()\n" "0.0" msgstr "" +">>> turtle.home()\n" +">>> turtle.dot()\n" +">>> turtle.fd(50); turtle.dot(20, \"blue\"); turtle.fd(50)\n" +">>> turtle.position()\n" +"(100.00,-0.00)\n" +">>> turtle.heading()\n" +"0.0" #: ../Doc/library/turtle.rst:769 msgid "" @@ -1301,6 +1519,9 @@ msgid "" ">>> stamp_id = turtle.stamp()\n" ">>> turtle.fd(50)" msgstr "" +">>> turtle.color(\"blue\")\n" +">>> stamp_id = turtle.stamp()\n" +">>> turtle.fd(50)" #: ../Doc/library/turtle.rst:783 msgid "an integer, must be return value of previous :func:`stamp` call" @@ -1325,6 +1546,16 @@ msgid "" ">>> turtle.position()\n" "(200.00,-0.00)" msgstr "" +">>> turtle.position()\n" +"(150.00,-0.00)\n" +">>> turtle.color(\"blue\")\n" +">>> astamp = turtle.stamp()\n" +">>> turtle.fd(50)\n" +">>> turtle.position()\n" +"(200.00,-0.00)\n" +">>> turtle.clearstamp(astamp)\n" +">>> turtle.position()\n" +"(200.00,-0.00)" #: ../Doc/library/turtle.rst:807 msgid "" @@ -1345,6 +1576,12 @@ msgid "" ">>> turtle.clearstamps(-2)\n" ">>> turtle.clearstamps()" msgstr "" +">>> for i in range(8):\n" +"... unused_stamp_id = turtle.stamp()\n" +"... turtle.fd(30)\n" +">>> turtle.clearstamps(2)\n" +">>> turtle.clearstamps(-2)\n" +">>> turtle.clearstamps()" #: ../Doc/library/turtle.rst:823 msgid "" @@ -1362,6 +1599,11 @@ msgid "" ">>> for i in range(8):\n" "... turtle.undo()" msgstr "" +">>> for i in range(4):\n" +"... turtle.fd(50); turtle.lt(80)\n" +"...\n" +">>> for i in range(8):\n" +"... turtle.undo()" #: ../Doc/library/turtle.rst:838 msgid "an integer in the range 0..10 or a speedstring (see below)" @@ -1432,6 +1674,14 @@ msgid "" ">>> turtle.speed()\n" "9" msgstr "" +">>> turtle.speed()\n" +"3\n" +">>> turtle.speed('normal')\n" +">>> turtle.speed()\n" +"6\n" +">>> turtle.speed(9)\n" +">>> turtle.speed()\n" +"9" #: ../Doc/library/turtle.rst:878 msgid "" @@ -1445,6 +1695,8 @@ msgid "" ">>> turtle.pos()\n" "(440.00,-0.00)" msgstr "" +">>> turtle.pos()\n" +"(440.00,-0.00)" #: ../Doc/library/turtle.rst:889 ../Doc/library/turtle.rst:952 msgid "a number or a pair/vector of numbers or a turtle instance" @@ -1472,6 +1724,9 @@ msgid "" ">>> turtle.towards(0,0)\n" "225.0" msgstr "" +">>> turtle.goto(10, 10)\n" +">>> turtle.towards(0,0)\n" +"225.0" #: ../Doc/library/turtle.rst:906 msgid "Return the turtle's x coordinate." @@ -1487,6 +1742,13 @@ msgid "" ">>> print(round(turtle.xcor(), 5))\n" "64.27876" msgstr "" +">>> turtle.home()\n" +">>> turtle.left(50)\n" +">>> turtle.forward(100)\n" +">>> turtle.pos()\n" +"(64.28,76.60)\n" +">>> print(round(turtle.xcor(), 5))\n" +"64.27876" #: ../Doc/library/turtle.rst:922 msgid "Return the turtle's y coordinate." @@ -1502,6 +1764,13 @@ msgid "" ">>> print(round(turtle.ycor(), 5))\n" "86.60254" msgstr "" +">>> turtle.home()\n" +">>> turtle.left(60)\n" +">>> turtle.forward(100)\n" +">>> print(turtle.pos())\n" +"(50.00,86.60)\n" +">>> print(round(turtle.ycor(), 5))\n" +"86.60254" #: ../Doc/library/turtle.rst:938 msgid "" @@ -1518,6 +1787,10 @@ msgid "" ">>> turtle.heading()\n" "67.0" msgstr "" +">>> turtle.home()\n" +">>> turtle.left(67)\n" +">>> turtle.heading()\n" +"67.0" #: ../Doc/library/turtle.rst:955 msgid "" @@ -1539,6 +1812,15 @@ msgid "" ">>> turtle.distance(joe)\n" "77.0" msgstr "" +">>> turtle.home()\n" +">>> turtle.distance(30,40)\n" +"50.0\n" +">>> turtle.distance((30,40))\n" +"50.0\n" +">>> joe = Turtle()\n" +">>> joe.forward(77)\n" +">>> turtle.distance(joe)\n" +"77.0" #: ../Doc/library/turtle.rst:973 msgid "Settings for measurement" @@ -1568,6 +1850,19 @@ msgid "" ">>> turtle.heading()\n" "90.0" msgstr "" +">>> turtle.home()\n" +">>> turtle.left(90)\n" +">>> turtle.heading()\n" +"90.0\n" +"\n" +"Change angle measurement unit to grad (also known as gon,\n" +"grade, or gradian and equals 1/100-th of the right angle.)\n" +">>> turtle.degrees(400.0)\n" +">>> turtle.heading()\n" +"100.0\n" +">>> turtle.degrees(360)\n" +">>> turtle.heading()\n" +"90.0" #: ../Doc/library/turtle.rst:1002 msgid "" @@ -1587,6 +1882,13 @@ msgid "" ">>> turtle.heading()\n" "1.5707963267948966" msgstr "" +">>> turtle.home()\n" +">>> turtle.left(90)\n" +">>> turtle.heading()\n" +"90.0\n" +">>> turtle.radians()\n" +">>> turtle.heading()\n" +"1.5707963267948966" #: ../Doc/library/turtle.rst:1033 msgid "Pull the pen down -- drawing when moving." @@ -1617,6 +1919,10 @@ msgid "" "1\n" ">>> turtle.pensize(10) # from here on lines of width 10 are drawn" msgstr "" +">>> turtle.pensize()\n" +"1\n" +">>> turtle.pensize(10) # de aquí en adelante se dibujan líneas con " +"ancho 10" #: ../Doc/library/turtle.rst:1062 msgid "a dictionary with some or all of the below listed keys" @@ -1706,6 +2012,20 @@ msgid "" ">>> sorted(turtle.pen().items())[:3]\n" "[('fillcolor', 'green'), ('outline', 1), ('pencolor', 'red')]" msgstr "" +">>> turtle.pen(fillcolor=\"black\", pencolor=\"red\", pensize=10)\n" +">>> sorted(turtle.pen().items())\n" +"[('fillcolor', 'black'), ('outline', 1), ('pencolor', 'red'),\n" +" ('pendown', True), ('pensize', 10), ('resizemode', 'noresize'),\n" +" ('shearfactor', 0.0), ('shown', True), ('speed', 9),\n" +" ('stretchfactor', (1.0, 1.0)), ('tilt', 0.0)]\n" +">>> penstate=turtle.pen()\n" +">>> turtle.color(\"yellow\", \"\")\n" +">>> turtle.penup()\n" +">>> sorted(turtle.pen().items())[:3]\n" +"[('fillcolor', ''), ('outline', 1), ('pencolor', 'yellow')]\n" +">>> turtle.pen(penstate, fillcolor=\"green\")\n" +">>> sorted(turtle.pen().items())[:3]\n" +"[('fillcolor', 'green'), ('outline', 1), ('pencolor', 'red')]" #: ../Doc/library/turtle.rst:1105 msgid "Return ``True`` if pen is down, ``False`` if it's up." @@ -1720,6 +2040,12 @@ msgid "" ">>> turtle.isdown()\n" "True" msgstr "" +">>> turtle.penup()\n" +">>> turtle.isdown()\n" +"False\n" +">>> turtle.pendown()\n" +">>> turtle.isdown()\n" +"True" #: ../Doc/library/turtle.rst:1123 msgid "Return or set the pencolor." @@ -1809,6 +2135,23 @@ msgid "" ">>> turtle.pencolor()\n" "(50.0, 193.0, 143.0)" msgstr "" +">>> colormode()\n" +"1.0\n" +">>> turtle.pencolor()\n" +"'red'\n" +">>> turtle.pencolor(\"brown\")\n" +">>> turtle.pencolor()\n" +"'brown'\n" +">>> tup = (0.2, 0.8, 0.55)\n" +">>> turtle.pencolor(tup)\n" +">>> turtle.pencolor()\n" +"(0.2, 0.8, 0.5490196078431373)\n" +">>> colormode(255)\n" +">>> turtle.pencolor()\n" +"(51.0, 204.0, 140.0)\n" +">>> turtle.pencolor('#32c18f')\n" +">>> turtle.pencolor()\n" +"(50.0, 193.0, 143.0)" #: ../Doc/library/turtle.rst:1172 msgid "Return or set the fillcolor." @@ -1889,6 +2232,17 @@ msgid "" ">>> turtle.fillcolor()\n" "(255.0, 255.0, 255.0)" msgstr "" +">>> turtle.fillcolor(\"violet\")\n" +">>> turtle.fillcolor()\n" +"'violet'\n" +">>> turtle.pencolor()\n" +"(50.0, 193.0, 143.0)\n" +">>> turtle.fillcolor((50, 193, 143)) # Integers, not floats\n" +">>> turtle.fillcolor()\n" +"(50.0, 193.0, 143.0)\n" +">>> turtle.fillcolor('#ffffff')\n" +">>> turtle.fillcolor()\n" +"(255.0, 255.0, 255.0)" #: ../Doc/library/turtle.rst:1215 msgid "Return or set pencolor and fillcolor." @@ -1960,6 +2314,12 @@ msgid "" ">>> color()\n" "((40.0, 80.0, 120.0), (160.0, 200.0, 240.0))" msgstr "" +">>> turtle.color(\"red\", \"green\")\n" +">>> turtle.color()\n" +"('red', 'green')\n" +">>> color(\"#285078\", \"#a0c8f0\")\n" +">>> color()\n" +"((40.0, 80.0, 120.0), (160.0, 200.0, 240.0))" #: ../Doc/library/turtle.rst:1247 msgid "See also: Screen method :func:`colormode`." @@ -1977,6 +2337,11 @@ msgid "" "... else:\n" "... turtle.pensize(3)" msgstr "" +">>> turtle.begin_fill()\n" +">>> if turtle.filling():\n" +"... turtle.pensize(5)\n" +"... else:\n" +"... turtle.pensize(3)" #: ../Doc/library/turtle.rst:1276 msgid "To be called just before drawing a shape to be filled." @@ -2008,6 +2373,10 @@ msgid "" ">>> turtle.circle(80)\n" ">>> turtle.end_fill()" msgstr "" +">>> turtle.color(\"black\", \"red\")\n" +">>> turtle.begin_fill()\n" +">>> turtle.circle(80)\n" +">>> turtle.end_fill()" #: ../Doc/library/turtle.rst:1302 msgid "" @@ -2031,6 +2400,17 @@ msgid "" ">>> turtle.heading()\n" "0.0" msgstr "" +">>> turtle.goto(0,-22)\n" +">>> turtle.left(100)\n" +">>> turtle.position()\n" +"(0.00,-22.00)\n" +">>> turtle.heading()\n" +"100.0\n" +">>> turtle.reset()\n" +">>> turtle.position()\n" +"(0.00,0.00)\n" +">>> turtle.heading()\n" +"0.0" #: ../Doc/library/turtle.rst:1323 msgid "" @@ -2083,7 +2463,7 @@ msgstr "" #: ../Doc/library/turtle.rst:1356 msgid ">>> turtle.hideturtle()" -msgstr "" +msgstr ">>> turtle.hideturtle()" #: ../Doc/library/turtle.rst:1365 msgid "Make the turtle visible." @@ -2091,7 +2471,7 @@ msgstr "Hace visible la tortuga." #: ../Doc/library/turtle.rst:1367 msgid ">>> turtle.showturtle()" -msgstr "" +msgstr ">>> turtle.showturtle()" #: ../Doc/library/turtle.rst:1375 msgid "Return ``True`` if the Turtle is shown, ``False`` if it's hidden." @@ -2126,6 +2506,11 @@ msgid "" ">>> turtle.shape()\n" "'turtle'" msgstr "" +">>> turtle.shape()\n" +"'classic'\n" +">>> turtle.shape(\"turtle\")\n" +">>> turtle.shape()\n" +"'turtle'" #: ../Doc/library/turtle.rst:1410 msgid "one of the strings \"auto\", \"user\", \"noresize\"" @@ -2178,6 +2563,11 @@ msgid "" ">>> turtle.resizemode()\n" "'auto'" msgstr "" +">>> turtle.resizemode()\n" +"'noresize'\n" +">>> turtle.resizemode(\"auto\")\n" +">>> turtle.resizemode()\n" +"'auto'" #: ../Doc/library/turtle.rst:1437 ../Doc/library/turtle.rst:1438 #: ../Doc/library/turtle.rst:1439 @@ -2185,7 +2575,6 @@ msgid "positive number" msgstr "número positivo" #: ../Doc/library/turtle.rst:1441 -#, fuzzy msgid "" "Return or set the pen's attributes x/y-stretchfactors and/or outline. Set " "resizemode to \"user\". If and only if resizemode is set to \"user\", the " @@ -2194,16 +2583,25 @@ msgid "" "*stretch_len* is stretchfactor in direction of its orientation, *outline* " "determines the width of the shape's outline." msgstr "" -"Devuelve o establece los atributos del lápiz los factores x/y de " -"estiramiento y contorno. Establece *resizemode* a *\"user\"* si y solo si " -"*resizemode* está definido como *\"user\"*, la tortuga será verá estirada " -"acorde a sus factores de estiramiento: *stretch_wid* es el factor de " -"estiramiento perpendicular a su orientación, *stretch_len* es su factor de " -"estiramiento en dirección a su orientación, *outline* determina el grosor de " -"contorno de la forma." - -#: ../Doc/library/turtle.rst:1448 -msgid "" +"Devuelve o establece los atributos x/y-stretchfactors y/o outline del lápiz. " +"Establece resizemode en \"user\". Si y solo si resizemode está establecido " +"en \"user\", la tortuga se mostrará estirada de acuerdo con sus factores de " +"estiramiento: *stretch_wid* es el factor de estiramiento perpendicular a su " +"orientación, *stretch_len* es el factor de estiramiento en la dirección de " +"su orientación, *outline* determina el ancho del contorno de la forma." + +#: ../Doc/library/turtle.rst:1448 +msgid "" +">>> turtle.shapesize()\n" +"(1.0, 1.0, 1)\n" +">>> turtle.resizemode(\"user\")\n" +">>> turtle.shapesize(5, 5, 12)\n" +">>> turtle.shapesize()\n" +"(5, 5, 12)\n" +">>> turtle.shapesize(outline=8)\n" +">>> turtle.shapesize()\n" +"(5, 5, 8)" +msgstr "" ">>> turtle.shapesize()\n" "(1.0, 1.0, 1)\n" ">>> turtle.resizemode(\"user\")\n" @@ -2213,7 +2611,6 @@ msgid "" ">>> turtle.shapesize(outline=8)\n" ">>> turtle.shapesize()\n" "(5, 5, 8)" -msgstr "" #: ../Doc/library/turtle.rst:1464 ../Doc/library/turtle.rst:2101 #: ../Doc/library/turtle.rst:2102 ../Doc/library/turtle.rst:2103 @@ -2246,6 +2643,11 @@ msgid "" ">>> turtle.shearfactor()\n" "0.5" msgstr "" +">>> turtle.shape(\"circle\")\n" +">>> turtle.shapesize(5,2)\n" +">>> turtle.shearfactor(0.5)\n" +">>> turtle.shearfactor()\n" +"0.5" #: ../Doc/library/turtle.rst:1487 msgid "" @@ -2265,6 +2667,13 @@ msgid "" ">>> turtle.tilt(30)\n" ">>> turtle.fd(50)" msgstr "" +">>> turtle.reset()\n" +">>> turtle.shape(\"circle\")\n" +">>> turtle.shapesize(5,2)\n" +">>> turtle.tilt(30)\n" +">>> turtle.fd(50)\n" +">>> turtle.tilt(30)\n" +">>> turtle.fd(50)" #: ../Doc/library/turtle.rst:1504 ../Doc/library/turtle.rst:1527 #: ../Doc/library/turtle.rst:1528 ../Doc/library/turtle.rst:1529 @@ -2298,6 +2707,12 @@ msgid "" ">>> turtle.tiltangle()\n" "45.0" msgstr "" +">>> turtle.reset()\n" +">>> turtle.shape(\"circle\")\n" +">>> turtle.shapesize(5,2)\n" +">>> turtle.tilt(45)\n" +">>> turtle.tiltangle()\n" +"45.0" #: ../Doc/library/turtle.rst:1532 msgid "Set or return the current transformation matrix of the turtle shape." @@ -2331,6 +2746,12 @@ msgid "" ">>> turtle.shapetransform()\n" "(4.0, -1.0, -0.0, 2.0)" msgstr "" +">>> turtle = Turtle()\n" +">>> turtle.shape(\"square\")\n" +">>> turtle.shapesize(4,2)\n" +">>> turtle.shearfactor(-0.5)\n" +">>> turtle.shapetransform()\n" +"(4.0, -1.0, -0.0, 2.0)" #: ../Doc/library/turtle.rst:1556 msgid "" @@ -2348,6 +2769,10 @@ msgid "" ">>> turtle.get_shapepoly()\n" "((50, -20), (30, 20), (-50, 20), (-30, -20))" msgstr "" +">>> turtle.shape(\"square\")\n" +">>> turtle.shapetransform(4, -1, 0, 2)\n" +">>> turtle.get_shapepoly()\n" +"((50, -20), (30, 20), (-50, 20), (-30, -20))" #: ../Doc/library/turtle.rst:1574 ../Doc/library/turtle.rst:1596 #: ../Doc/library/turtle.rst:1621 ../Doc/library/turtle.rst:2025 @@ -2392,6 +2817,11 @@ msgid "" ">>> onclick(turn) # Now clicking into the turtle will turn it.\n" ">>> onclick(None) # event-binding will be removed" msgstr "" +">>> def turn(x, y):\n" +"... left(180)\n" +"...\n" +">>> onclick(turn) # Now clicking into the turtle will turn it.\n" +">>> onclick(None) # event-binding will be removed" #: ../Doc/library/turtle.rst:1602 msgid "" @@ -2414,6 +2844,16 @@ msgid "" "red,\n" ">>> turtle.onrelease(turtle.unglow) # releasing turns it to transparent." msgstr "" +">>> class MyTurtle(Turtle):\n" +"... def glow(self,x,y):\n" +"... self.fillcolor(\"red\")\n" +"... def unglow(self,x,y):\n" +"... self.fillcolor(\"\")\n" +"...\n" +">>> turtle = MyTurtle()\n" +">>> turtle.onclick(turtle.glow) # clicking on turtle turns fillcolor " +"red,\n" +">>> turtle.onrelease(turtle.unglow) # releasing turns it to transparent." #: ../Doc/library/turtle.rst:1627 msgid "" @@ -2433,7 +2873,7 @@ msgstr "" #: ../Doc/library/turtle.rst:1633 msgid ">>> turtle.ondrag(turtle.goto)" -msgstr "" +msgstr ">>> turtle.ondrag(turtle.goto)" #: ../Doc/library/turtle.rst:1638 msgid "" @@ -2476,6 +2916,16 @@ msgid "" ">>> p = turtle.get_poly()\n" ">>> register_shape(\"myFavouriteShape\", p)" msgstr "" +">>> turtle.home()\n" +">>> turtle.begin_poly()\n" +">>> turtle.fd(100)\n" +">>> turtle.left(20)\n" +">>> turtle.fd(30)\n" +">>> turtle.left(60)\n" +">>> turtle.fd(50)\n" +">>> turtle.end_poly()\n" +">>> p = turtle.get_poly()\n" +">>> register_shape(\"myFavouriteShape\", p)" #: ../Doc/library/turtle.rst:1678 msgid "" @@ -2490,6 +2940,8 @@ msgid "" ">>> mick = Turtle()\n" ">>> joe = mick.clone()" msgstr "" +">>> mick = Turtle()\n" +">>> joe = mick.clone()" #: ../Doc/library/turtle.rst:1691 msgid "" @@ -2506,6 +2958,10 @@ msgid "" ">>> pet\n" "" msgstr "" +">>> pet = getturtle()\n" +">>> pet.fd(50)\n" +">>> pet\n" +"" # Return the TurtleScreen object the turtle is drawing on. # no se si "sobre el cual" es la traducción adecuada. @@ -2525,6 +2981,10 @@ msgid "" "\n" ">>> ts.bgcolor(\"pink\")" msgstr "" +">>> ts = turtle.getscreen()\n" +">>> ts\n" +"\n" +">>> ts.bgcolor(\"pink\")" #: ../Doc/library/turtle.rst:1719 msgid "an integer or ``None``" @@ -2545,7 +3005,7 @@ msgstr "" #: ../Doc/library/turtle.rst:1726 msgid ">>> turtle.setundobuffer(42)" -msgstr "" +msgstr ">>> turtle.setundobuffer(42)" #: ../Doc/library/turtle.rst:1734 msgid "Return number of entries in the undobuffer." @@ -2556,6 +3016,8 @@ msgid "" ">>> while undobufferentries():\n" "... undo()" msgstr "" +">>> while undobufferentries():\n" +"... undo()" #: ../Doc/library/turtle.rst:1747 msgid "Compound shapes" @@ -2576,13 +3038,12 @@ msgid "Create an empty Shape object of type \"compound\"." msgstr "Crear una objeto de forma vacía del tipo *compound*." #: ../Doc/library/turtle.rst:1754 -#, fuzzy msgid "" "Add as many components to this object as desired, using the :meth:`~Shape." "addcomponent` method." msgstr "" -"Agregar todos los componentes deseados a este objeto, usando el método :meth:" -"`addcomponent`." +"Agregue tantos componentes a este objeto como desee, utilizando el método :" +"meth:`~Shape.addcomponent`." #: ../Doc/library/turtle.rst:1757 msgid "For example:" @@ -2596,6 +3057,11 @@ msgid "" ">>> poly2 = ((0,0),(10,-5),(-10,-5))\n" ">>> s.addcomponent(poly2, \"blue\", \"red\")" msgstr "" +">>> s = Shape(\"compound\")\n" +">>> poly1 = ((0,0),(10,-5),(0,10),(-10,-5))\n" +">>> s.addcomponent(poly1, \"red\", \"blue\")\n" +">>> poly2 = ((0,0),(10,-5),(-10,-5))\n" +">>> s.addcomponent(poly2, \"blue\", \"red\")" #: ../Doc/library/turtle.rst:1768 msgid "Now add the Shape to the Screen's shapelist and use it:" @@ -2606,6 +3072,8 @@ msgid "" ">>> register_shape(\"myshape\", s)\n" ">>> shape(\"myshape\")" msgstr "" +">>> register_shape(\"myshape\", s)\n" +">>> shape(\"myshape\")" #: ../Doc/library/turtle.rst:1779 msgid "" @@ -2651,6 +3119,12 @@ msgid "" ">>> screen.bgcolor()\n" "(128.0, 0.0, 128.0)" msgstr "" +">>> screen.bgcolor(\"orange\")\n" +">>> screen.bgcolor()\n" +"'orange'\n" +">>> screen.bgcolor(\"#800080\")\n" +">>> screen.bgcolor()\n" +"(128.0, 0.0, 128.0)" #: ../Doc/library/turtle.rst:1820 msgid "a string, name of a gif-file or ``\"nopic\"``, or ``None``" @@ -2677,6 +3151,11 @@ msgid "" ">>> screen.bgpic()\n" "\"landscape.gif\"" msgstr "" +">>> screen.bgpic()\n" +"'nopic'\n" +">>> screen.bgpic(\"landscape.gif\")\n" +">>> screen.bgpic()\n" +"\"landscape.gif\"" #: ../Doc/library/turtle.rst:1838 msgid "" @@ -2786,6 +3265,13 @@ msgid "" ">>> for _ in range(8):\n" "... left(45); fd(2) # a regular octagon" msgstr "" +">>> screen.reset()\n" +">>> screen.setworldcoordinates(-50,-7.5,50,7.5)\n" +">>> for _ in range(72):\n" +"... left(10)\n" +"...\n" +">>> for _ in range(8):\n" +"... left(45); fd(2) # a regular octagon" #: ../Doc/library/turtle.rst:1924 msgid "positive integer" @@ -2814,6 +3300,11 @@ msgid "" ">>> screen.delay()\n" "5" msgstr "" +">>> screen.delay()\n" +"10\n" +">>> screen.delay(5)\n" +">>> screen.delay()\n" +"5" #: ../Doc/library/turtle.rst:1944 ../Doc/library/turtle.rst:1945 msgid "nonnegative integer" @@ -2844,6 +3335,12 @@ msgid "" "... rt(90)\n" "... dist += 2" msgstr "" +">>> screen.tracer(8, 25)\n" +">>> dist = 2\n" +">>> for i in range(200):\n" +"... fd(dist)\n" +"... rt(90)\n" +"... dist += 2" #: ../Doc/library/turtle.rst:1967 msgid "Perform a TurtleScreen update. To be used when tracer is turned off." @@ -2895,6 +3392,12 @@ msgid "" ">>> screen.onkey(f, \"Up\")\n" ">>> screen.listen()" msgstr "" +">>> def f():\n" +"... fd(50)\n" +"... lt(60)\n" +"...\n" +">>> screen.onkey(f, \"Up\")\n" +">>> screen.listen()" #: ../Doc/library/turtle.rst:2007 msgid "" @@ -2915,6 +3418,11 @@ msgid "" ">>> screen.onkey(f, \"Up\")\n" ">>> screen.listen()" msgstr "" +">>> def f():\n" +"... fd(50)\n" +"...\n" +">>> screen.onkey(f, \"Up\")\n" +">>> screen.listen()" #: ../Doc/library/turtle.rst:2031 msgid "" @@ -2940,6 +3448,11 @@ msgid "" "point.\n" ">>> screen.onclick(None) # remove event binding again" msgstr "" +">>> screen.onclick(turtle.goto) # Subsequently clicking into the " +"TurtleScreen will\n" +">>> # make the turtle move to the clicked " +"point.\n" +">>> screen.onclick(None) # remove event binding again" #: ../Doc/library/turtle.rst:2045 msgid "" @@ -2974,6 +3487,14 @@ msgid "" ">>> f() ### makes the turtle march around\n" ">>> running = False" msgstr "" +">>> running = True\n" +">>> def f():\n" +"... if running:\n" +"... fd(50)\n" +"... lt(60)\n" +"... screen.ontimer(f, 250)\n" +">>> f() ### makes the turtle march around\n" +">>> running = False" #: ../Doc/library/turtle.rst:2073 msgid "" @@ -2989,7 +3510,7 @@ msgstr "" #: ../Doc/library/turtle.rst:2078 msgid ">>> screen.mainloop()" -msgstr "" +msgstr ">>> screen.mainloop()" #: ../Doc/library/turtle.rst:2086 ../Doc/library/turtle.rst:2087 #: ../Doc/library/turtle.rst:2099 ../Doc/library/turtle.rst:2100 @@ -3010,10 +3531,9 @@ msgstr "" #: ../Doc/library/turtle.rst:2094 msgid ">>> screen.textinput(\"NIM\", \"Name of first player:\")" -msgstr "" +msgstr ">>> screen.textinput(\"NIM\", \"Name of first player:\")" #: ../Doc/library/turtle.rst:2105 -#, fuzzy msgid "" "Pop up a dialog window for input of a number. title is the title of the " "dialog window, prompt is a text mostly describing what numerical information " @@ -3023,20 +3543,22 @@ msgid "" "open for correction. Return the number input. If the dialog is canceled, " "return ``None``. ::" msgstr "" -"Abre una ventana de diálogo para el ingreso de un número. *title* es el " -"título de la ventana de diálogo, *prompt* es un texto que usualmente " -"describe qué información numérica ingresar. *default*: valor por defecto, " -"*minval*: mínimo valor aceptado, *maxval*: máximo valor aceptado. Si se " -"aportan estos parámetros, el número a ingresar debe estar en el rango " -"*minval*..*maxval*. Si no, se da una pista y el diálogo permanece abierto " -"para su corrección. Devuelve el número ingresado. Si el diálogo es " -"cancelado, devuelve ``None``.::" +"Abre una ventana de diálogo para ingresar un número. El título es el título " +"de la ventana de diálogo, el mensaje es un texto que describe principalmente " +"qué información numérica ingresar. predeterminado: valor predeterminado, " +"minval: valor mínimo para la entrada, maxval: valor máximo para la entrada. " +"El número ingresado debe estar en el rango minval... maxval si se " +"proporcionan estos. Si no, se emite una pista y el diálogo permanece abierto " +"para su corrección. Devuelve el número ingresado. Si se cancela el diálogo, " +"devuelve ``None``. ::" #: ../Doc/library/turtle.rst:2114 msgid "" ">>> screen.numinput(\"Poker\", \"Your stakes:\", 1000, minval=10, " "maxval=10000)" msgstr "" +">>> screen.numinput(\"Poker\", \"Your stakes:\", 1000, minval=10, " +"maxval=10000)" #: ../Doc/library/turtle.rst:2122 msgid "one of the strings \"standard\", \"logo\" or \"world\"" @@ -3105,19 +3627,21 @@ msgid "" ">>> mode()\n" "'logo'" msgstr "" +">>> mode(\"logo\") # reinicia la tortuga hacia el norte\n" +">>> mode()\n" +"'logo'" #: ../Doc/library/turtle.rst:2149 msgid "one of the values 1.0 or 255" msgstr "uno de los valores 1.0 o 255" #: ../Doc/library/turtle.rst:2151 -#, fuzzy msgid "" "Return the colormode or set it to 1.0 or 255. Subsequently *r*, *g*, *b* " "values of color triples have to be in the range 0..*cmode*." msgstr "" -"Devuelve el *colormode* o lo establece a 1.0 o 255. Subsecuentemente, los " -"valores triples de color *r*, *g*, *b* tienen que estar en el rango 0..\\ " +"Devuelve el modo de color o configúrelo en 1.0 o 255. Posteriormente, los " +"valores *r*, *g*, *b* de los triples de color deben estar en el rango 0.." "*cmode*." #: ../Doc/library/turtle.rst:2154 @@ -3134,6 +3658,17 @@ msgid "" "255\n" ">>> turtle.pencolor(240,160,80)" msgstr "" +">>> screen.colormode(1)\n" +">>> turtle.pencolor(240, 160, 80)\n" +"Traceback (most recent call last):\n" +" ...\n" +"TurtleGraphicsError: bad color sequence: (240, 160, 80)\n" +">>> screen.colormode()\n" +"1.0\n" +">>> screen.colormode(255)\n" +">>> screen.colormode()\n" +"255\n" +">>> turtle.pencolor(240,160,80)" #: ../Doc/library/turtle.rst:2172 msgid "" @@ -3149,6 +3684,9 @@ msgid "" ">>> cv\n" "" msgstr "" +">>> cv = screen.getcanvas()\n" +">>> cv\n" +"" #: ../Doc/library/turtle.rst:2185 msgid "Return a list of names of all currently available turtle shapes." @@ -3161,6 +3699,8 @@ msgid "" ">>> screen.getshapes()\n" "['arrow', 'blank', 'circle', ..., 'turtle']" msgstr "" +">>> screen.getshapes()\n" +"['arrow', 'blank', 'circle', ..., 'turtle']" #: ../Doc/library/turtle.rst:2197 msgid "There are three different ways to call this function:" @@ -3176,7 +3716,7 @@ msgstr "" #: ../Doc/library/turtle.rst:2202 msgid ">>> screen.register_shape(\"turtle.gif\")" -msgstr "" +msgstr ">>> screen.register_shape(\"turtle.gif\")" #: ../Doc/library/turtle.rst:2205 msgid "" @@ -3196,16 +3736,15 @@ msgstr "" #: ../Doc/library/turtle.rst:2211 msgid ">>> screen.register_shape(\"triangle\", ((5,-3), (0,5), (-5,-3)))" -msgstr "" +msgstr ">>> screen.register_shape(\"triangle\", ((5,-3), (0,5), (-5,-3)))" #: ../Doc/library/turtle.rst:2216 -#, fuzzy msgid "" "*name* is an arbitrary string and *shape* is a (compound) :class:`Shape` " "object: Install the corresponding compound shape." msgstr "" -"*name* es una cadena de caracteres arbitraria y *shape* es un objeto :class:" -"`Shape` (compuesto): Instala la correspondiente forma compuesta." +"*name* es una cadena arbitraria y *shape* es un objeto :class:`Shape` " +"(compuesto): instala la forma compuesta correspondiente." #: ../Doc/library/turtle.rst:2219 msgid "" @@ -3225,6 +3764,8 @@ msgid "" ">>> for turtle in screen.turtles():\n" "... turtle.color(\"red\")" msgstr "" +">>> for turtle in screen.turtles():\n" +"... turtle.color(\"red\")" #: ../Doc/library/turtle.rst:2236 msgid "Return the height of the turtle window. ::" @@ -3235,6 +3776,8 @@ msgid "" ">>> screen.window_height()\n" "480" msgstr "" +">>> screen.window_height()\n" +"480" #: ../Doc/library/turtle.rst:2244 msgid "Return the width of the turtle window. ::" @@ -3245,6 +3788,8 @@ msgid "" ">>> screen.window_width()\n" "640" msgstr "" +">>> screen.window_width()\n" +"640" #: ../Doc/library/turtle.rst:2253 msgid "Methods specific to Screen, not inherited from TurtleScreen" @@ -3326,6 +3871,10 @@ msgid "" ">>> screen.setup(width=.75, height=0.5, startx=None, starty=None)\n" ">>> # sets window to 75% of screen by 50% of screen and centers" msgstr "" +">>> screen.setup (width=200, height=200, startx=0, starty=0)\n" +">>> # sets window to 200x200 pixels, in upper left of screen\n" +">>> screen.setup(width=.75, height=0.5, startx=None, starty=None)\n" +">>> # sets window to 75% of screen by 50% of screen and centers" #: ../Doc/library/turtle.rst:2300 msgid "a string that is shown in the titlebar of the turtle graphics window" @@ -3339,20 +3888,19 @@ msgstr "Establece el título de la ventana de la tortuga a *titlestring*." #: ../Doc/library/turtle.rst:2305 msgid ">>> screen.title(\"Welcome to the turtle zoo!\")" -msgstr "" +msgstr ">>> screen.title(\"Welcome to the turtle zoo!\")" #: ../Doc/library/turtle.rst:2312 msgid "Public classes" msgstr "Clases públicas" #: ../Doc/library/turtle.rst:2318 -#, fuzzy msgid "" "a :class:`!tkinter.Canvas`, a :class:`ScrolledCanvas` or a :class:" "`TurtleScreen`" msgstr "" -"una clase :class:`tkinter.Canvas`, una :class:`ScrolledCanvas` o una clase :" -"class:`TurtleScreen`" +"un :class:`!tkinter.Canvas`, un :class:`ScrolledCanvas` o un :class:" +"`TurtleScreen`" #: ../Doc/library/turtle.rst:2321 msgid "" @@ -3372,18 +3920,16 @@ msgstr "" "necesario por primera vez." #: ../Doc/library/turtle.rst:2333 -#, fuzzy msgid "a :class:`!tkinter.Canvas`" -msgstr "un :class:`tkinter.Canvas`" +msgstr "un :class:`!tkinter.Canvas`" #: ../Doc/library/turtle.rst:2335 -#, fuzzy msgid "" "Provides screen oriented methods like :func:`bgcolor` etc. that are " "described above." msgstr "" -"Provee métodos orientados a la pantalla como :func:`setbg` etc. descriptos " -"anteriormente." +"Proporciona métodos orientados a la pantalla como :func:`bgcolor`, etc., que " +"se describen anteriormente." #: ../Doc/library/turtle.rst:2340 msgid "" @@ -3481,6 +4027,10 @@ msgid "" ">>> s.addcomponent(poly, \"red\", \"blue\")\n" ">>> # ... add more components and then use register_shape()" msgstr "" +">>> poly = ((0,0),(10,-5),(0,10),(-10,-5))\n" +">>> s = Shape(\"compound\")\n" +">>> s.addcomponent(poly, \"red\", \"blue\")\n" +">>> # ... add more components and then use register_shape()" #: ../Doc/library/turtle.rst:2384 msgid "See :ref:`compoundshapes`." @@ -3527,7 +4077,7 @@ msgstr "``a.rotate(angle)`` rotación" #: ../Doc/library/turtle.rst:2406 msgid "Explanation" -msgstr "" +msgstr "Explicación" #: ../Doc/library/turtle.rst:2408 msgid "" @@ -3535,12 +4085,17 @@ msgid "" "in the turtle object-oriented interface that can be used to create them and " "relate them to each other." msgstr "" +"Un objeto tortuga se dibuja en un objeto de pantalla, y hay una serie de " +"clases clave en la interfaz orientada a objetos tortuga que se pueden usar " +"para crearlos y relacionarlos entre sí." #: ../Doc/library/turtle.rst:2412 msgid "" "A :class:`Turtle` instance will automatically create a :class:`Screen` " "instance if one is not already present." msgstr "" +"Una instancia :class:`Turtle` creará automáticamente una instancia :class:" +"`Screen` si aún no hay una presente." #: ../Doc/library/turtle.rst:2415 msgid "" @@ -3549,6 +4104,10 @@ msgid "" "or created for it. The *canvas* can be a :class:`!tkinter.Canvas`, :class:" "`ScrolledCanvas` or :class:`TurtleScreen`." msgstr "" +"``Turtle`` es una subclase de :class:`RawTurtle`, que crea automáticamente " +"una superficie de dibujo. Para ello, será necesario proporcionar o crear una " +"*canvas*. La *canvas* puede ser una :class:`!tkinter.Canvas`, una :class:" +"`ScrolledCanvas` o una :class:`TurtleScreen`." #: ../Doc/library/turtle.rst:2421 msgid "" @@ -3558,9 +4117,14 @@ msgid "" "size and title) and behaviour. ``TurtleScreen``'s constructor needs a :class:" "`!tkinter.Canvas` or a :class:`ScrolledCanvas` as an argument." msgstr "" +":class:`TurtleScreen` es la superficie de dibujo básica de una tortuga. :" +"class:`Screen` es una subclase de ``TurtleScreen`` e incluye :ref:`some " +"additional methods ` para gestionar su apariencia (incluido " +"el tamaño y el título) y su comportamiento. El constructor de " +"``TurtleScreen`` necesita un :class:`!tkinter.Canvas` o un :class:" +"`ScrolledCanvas` como argumento." #: ../Doc/library/turtle.rst:2428 -#, fuzzy msgid "" "The functional interface for turtle graphics uses the various methods of " "``Turtle`` and ``TurtleScreen``/``Screen``. Behind the scenes, a screen " @@ -3568,20 +4132,19 @@ msgid "" "``Screen`` method is called. Similarly, a turtle object is automatically " "created whenever any of the functions derived from a Turtle method is called." msgstr "" -"La interface procedimental provee funciones que son derivadas de los métodos " -"de las clases :class:`Screen` y :class:`Turtle`. Tienen los mismos nombres " -"que los métodos correspondientes. Un objeto *Screen* es creado " -"automáticamente cada vez que una función derivada de un método *Screen* es " -"llamado. Un objeto *Turtle* (innombrado) se crea automáticamente cada vez " -"que se llama a una función derivada de un método *Turtle*." +"La interfaz funcional para gráficos de tortugas utiliza los distintos " +"métodos de ``Turtle`` y ``TurtleScreen``/``Screen``. En segundo plano, se " +"crea automáticamente un objeto de pantalla cada vez que se llama a una " +"función derivada de un método ``Screen``. De manera similar, se crea " +"automáticamente un objeto de tortuga cada vez que se llama a cualquiera de " +"las funciones derivadas de un método de Turtle." #: ../Doc/library/turtle.rst:2434 -#, fuzzy msgid "" "To use multiple turtles on a screen, the object-oriented interface must be " "used." msgstr "" -"Para usar varias tortugas en una pantalla se tiene que usar la interface " +"Para utilizar varias tortugas en una pantalla, se debe utilizar la interfaz " "orientada a objetos." #: ../Doc/library/turtle.rst:2439 @@ -3647,6 +4210,34 @@ msgid "" "\n" " >>> turtle.penup()" msgstr "" +">>> help(Screen.bgcolor)\n" +"Help on method bgcolor in module turtle:\n" +"\n" +"bgcolor(self, *args) unbound turtle.Screen method\n" +" Set or return backgroundcolor of the TurtleScreen.\n" +"\n" +" Arguments (if given): a color string or three numbers\n" +" in the range 0..colormode or a 3-tuple of such numbers.\n" +"\n" +"\n" +" >>> screen.bgcolor(\"orange\")\n" +" >>> screen.bgcolor()\n" +" \"orange\"\n" +" >>> screen.bgcolor(0.5,0,0.5)\n" +" >>> screen.bgcolor()\n" +" \"#800080\"\n" +"\n" +">>> help(Turtle.penup)\n" +"Help on method penup in module turtle:\n" +"\n" +"penup(self) unbound turtle.Turtle method\n" +" Pull the pen up -- no drawing when moving.\n" +"\n" +" Aliases: penup | pu | up\n" +"\n" +" No argument\n" +"\n" +" >>> turtle.penup()" #: ../Doc/library/turtle.rst:2482 msgid "" @@ -3689,6 +4280,36 @@ msgid "" " Example:\n" " >>> penup()" msgstr "" +">>> help(bgcolor)\n" +"Help on function bgcolor in module turtle:\n" +"\n" +"bgcolor(*args)\n" +" Set or return backgroundcolor of the TurtleScreen.\n" +"\n" +" Arguments (if given): a color string or three numbers\n" +" in the range 0..colormode or a 3-tuple of such numbers.\n" +"\n" +" Example::\n" +"\n" +" >>> bgcolor(\"orange\")\n" +" >>> bgcolor()\n" +" \"orange\"\n" +" >>> bgcolor(0.5,0,0.5)\n" +" >>> bgcolor()\n" +" \"#800080\"\n" +"\n" +">>> help(penup)\n" +"Help on function penup in module turtle:\n" +"\n" +"penup()\n" +" Pull the pen up -- no drawing when moving.\n" +"\n" +" Aliases: penup | pu | up\n" +"\n" +" No argument\n" +"\n" +" Example:\n" +" >>> penup()" #: ../Doc/library/turtle.rst:2516 msgid "" @@ -3788,10 +4409,10 @@ msgstr "" "configuración de acuerdo con su configuración." #: ../Doc/library/turtle.rst:2560 -#, fuzzy msgid "" "The built in configuration would correspond to the following ``turtle.cfg``:" -msgstr "La configuración incorporada correspondería al siguiente turtle.cfg::" +msgstr "" +"La configuración incorporada correspondería al siguiente ``turtle.cfg``:" #: ../Doc/library/turtle.rst:2562 msgid "" @@ -3816,28 +4437,46 @@ msgid "" "title = Python Turtle Graphics\n" "using_IDLE = False" msgstr "" +"width = 0.5\n" +"height = 0.75\n" +"leftright = None\n" +"topbottom = None\n" +"canvwidth = 400\n" +"canvheight = 300\n" +"mode = standard\n" +"colormode = 1.0\n" +"delay = 10\n" +"undobuffersize = 1000\n" +"shape = classic\n" +"pencolor = black\n" +"fillcolor = black\n" +"resizemode = noresize\n" +"visible = True\n" +"language = english\n" +"exampleturtle = turtle\n" +"examplescreen = screen\n" +"title = Python Turtle Graphics\n" +"using_IDLE = False" #: ../Doc/library/turtle.rst:2585 msgid "Short explanation of selected entries:" msgstr "Breve explicación de las entradas seleccionadas:" #: ../Doc/library/turtle.rst:2587 -#, fuzzy msgid "" "The first four lines correspond to the arguments of the :func:`Screen.setup " "` method." msgstr "" -"Las primeras cuatro líneas corresponden a los argumentos del método :meth:" -"`Screen.setup`." +"Las primeras cuatro líneas corresponden a los argumentos del método :func:" +"`Screen.setup `." #: ../Doc/library/turtle.rst:2589 -#, fuzzy msgid "" "Line 5 and 6 correspond to the arguments of the method :func:`Screen." "screensize `." msgstr "" -"Las líneas 5 y 6 corresponden a los argumentos del método :meth:`Screen." -"screensize`." +"Las líneas 5 y 6 corresponden a los argumentos del método :func:`Screen." +"screensize `." #: ../Doc/library/turtle.rst:2591 msgid "" @@ -3848,15 +4487,14 @@ msgstr "" "turtle, etc. Para obtener más información, pruebe con ``help(shape)``." #: ../Doc/library/turtle.rst:2593 -#, fuzzy msgid "" "If you want to use no fill color (i.e. make the turtle transparent), you " "have to write ``fillcolor = \"\"`` (but all nonempty strings must not have " "quotes in the cfg file)." msgstr "" -"Si no desea usar color de relleno (es decir, hacer que la tortuga sea " -"transparente), debe escribir ``fillcolor = \"\"`` (pero todas las cadenas no " -"vacías no deben tener comillas en el archivo cfg)." +"Si no desea utilizar ningún color de relleno (es decir, hacer que la tortuga " +"sea transparente), debe escribir ``fillcolor = \"\"`` (pero todas las " +"cadenas no vacías no deben tener comillas en el archivo cfg)." #: ../Doc/library/turtle.rst:2596 msgid "" @@ -3866,16 +4504,15 @@ msgstr "" "Si desea reflejar el estado de la tortuga, debe usar ``resizemode = auto``." #: ../Doc/library/turtle.rst:2598 -#, fuzzy msgid "" "If you set e.g. ``language = italian`` the docstringdict :file:" "`turtle_docstringdict_italian.py` will be loaded at import time (if present " "on the import path, e.g. in the same directory as :mod:`turtle`)." msgstr "" -"Si establece, por ejemplo, ``language = italian`` el docstringdict :file:" +"Si configura, por ejemplo, ``language = italian``, el docstringdict :file:" "`turtle_docstringdict_italian.py` se cargará en el momento de la importación " "(si está presente en la ruta de importación, por ejemplo, en el mismo " -"directorio que :mod:`turtle`." +"directorio que :mod:`turtle`)." #: ../Doc/library/turtle.rst:2601 msgid "" @@ -3890,15 +4527,14 @@ msgstr "" "nombres de las docstrings." #: ../Doc/library/turtle.rst:2605 -#, fuzzy msgid "" "*using_IDLE*: Set this to ``True`` if you regularly work with IDLE and its " "``-n`` switch (\"no subprocess\"). This will prevent :func:`exitonclick` to " "enter the mainloop." msgstr "" -"*using_IDLE*: establezca esto en ``True`` si trabaja regularmente con IDLE y " -"su interruptor -n (\"sin subproceso\"). Esto evitará que :func:`exitonclick` " -"ingrese al bucle principal." +"*using_IDLE*: Establezca esta opción en ``True`` si trabaja habitualmente " +"con IDLE y su opción ``-n`` (\"sin subproceso\"). Esto evitará que :func:" +"`exitonclick` ingrese al bucle principal." #: ../Doc/library/turtle.rst:2609 msgid "" @@ -3935,7 +4571,7 @@ msgstr "" #: ../Doc/library/turtle.rst:2627 msgid "python -m turtledemo" -msgstr "" +msgstr "python -m turtledemo" #: ../Doc/library/turtle.rst:2629 msgid "" @@ -3946,7 +4582,7 @@ msgstr "" #: ../Doc/library/turtle.rst:2631 msgid "python -m turtledemo.bytedesign" -msgstr "" +msgstr "python -m turtledemo.bytedesign" #: ../Doc/library/turtle.rst:2633 msgid "The :mod:`turtledemo` package directory contains:" @@ -4147,7 +4783,7 @@ msgstr "formas compuestas, :class:`Vec2D`" #: ../Doc/library/turtle.rst:2693 msgid "rosette" -msgstr "" +msgstr "rosetón" #: ../Doc/library/turtle.rst:2693 msgid "a pattern from the wikipedia article on turtle graphics" @@ -4219,7 +4855,6 @@ msgid "Changes since Python 2.6" msgstr "Cambios desde Python 2.6" #: ../Doc/library/turtle.rst:2718 -#, fuzzy msgid "" "The methods :func:`Turtle.tracer `, :func:`Turtle.window_width " "` and :func:`Turtle.window_height ` have been " @@ -4229,43 +4864,41 @@ msgid "" "duplications of the corresponding :class:`TurtleScreen`/:class:`Screen` " "methods.)" msgstr "" -"Los métodos :meth:`Turtle.tracer`, :meth:`Turtle.window_width` y :meth:" -"`Turtle.window_height` han sido eliminados. Los métodos con estos nombres y " -"funciones ahora están disponibles solo como métodos de :class:`Screen`. Las " -"funciones derivadas de estos permanecen disponibles. (De hecho, ya en Python " -"2.6 estos métodos eran simplemente duplicaciones de los métodos " -"correspondientes :class:`TurtleScreen`/:class:`Screen`)." +"Se han eliminado los métodos :func:`Turtle.tracer `, :func:`Turtle." +"window_width ` y :func:`Turtle.window_height `. " +"Los métodos con estos nombres y funcionalidades ahora solo están disponibles " +"como métodos de :class:`Screen`. Las funciones derivadas de estos siguen " +"estando disponibles. (De hecho, ya en Python 2.6 estos métodos eran meras " +"duplicaciones de los métodos :class:`TurtleScreen`/:class:`Screen` " +"correspondientes)." #: ../Doc/library/turtle.rst:2726 -#, fuzzy msgid "" "The method :func:`!Turtle.fill` has been eliminated. The behaviour of :func:" "`begin_fill` and :func:`end_fill` have changed slightly: now every filling " "process must be completed with an ``end_fill()`` call." msgstr "" -"El método :meth:`Turtle.fill` ha sido eliminado. El comportamiento de :meth:" -"`begin_fill` y :meth:`end_fill` ha cambiado ligeramente: ahora cada proceso " -"de llenado debe completarse con una llamada ``end_fill()``." +"Se ha eliminado el método :func:`!Turtle.fill`. El comportamiento de :func:" +"`begin_fill` y :func:`end_fill` ha cambiado ligeramente: ahora cada proceso " +"de llenado debe completarse con una llamada a ``end_fill()``." #: ../Doc/library/turtle.rst:2731 -#, fuzzy msgid "" "A method :func:`Turtle.filling ` has been added. It returns a " "boolean value: ``True`` if a filling process is under way, ``False`` " "otherwise. This behaviour corresponds to a ``fill()`` call without arguments " "in Python 2.6." msgstr "" -"Se ha añadido un método :meth:`Turtle.filling`. Retorna un valor booleano: " -"``True`` si hay un proceso de llenado en curso, ``False`` en caso contrario. " -"Este comportamiento corresponde a una llamada ``fill()`` sin argumentos en " -"Python 2.6." +"Se ha añadido un método :func:`Turtle.filling `. Devuelve un valor " +"booleano: ``True`` si se está realizando un proceso de llenado, ``False`` en " +"caso contrario. Este comportamiento corresponde a una llamada ``fill()`` sin " +"argumentos en Python 2.6." #: ../Doc/library/turtle.rst:2737 msgid "Changes since Python 3.0" msgstr "Cambios desde Python 3.0" #: ../Doc/library/turtle.rst:2739 -#, fuzzy msgid "" "The :class:`Turtle` methods :func:`shearfactor`, :func:`shapetransform` and :" "func:`get_shapepoly` have been added. Thus the full range of regular linear " @@ -4273,23 +4906,22 @@ msgid "" "`tiltangle` has been enhanced in functionality: it now can be used to get or " "set the tilt angle." msgstr "" -"Se han añadido los métodos :meth:`Turtle.shearfactor`, :meth:`Turtle." -"shapetransform` y :meth:`Turtle.get_shapepoly`. Por lo tanto, ahora está " -"disponible la gama completa de transformaciones lineales regulares para " -"transformar formas de tortugas. :meth:`Turtle.tiltangle` se ha mejorado en " -"funcionalidad: ahora se puede usar para obtener o establecer el tiltangle. :" -"meth:`Turtle.settiltangle` ha quedado obsoleto." +"Se han añadido los métodos :func:`shearfactor`, :func:`shapetransform` y :" +"func:`get_shapepoly` de :class:`Turtle`. De esta forma, ahora está " +"disponible toda la gama de transformaciones lineales regulares para " +"transformar formas de tortugas. Se ha mejorado la funcionalidad de :func:" +"`tiltangle`: ahora se puede utilizar para obtener o establecer el ángulo de " +"inclinación." #: ../Doc/library/turtle.rst:2745 -#, fuzzy msgid "" "The :class:`Screen` method :func:`onkeypress` has been added as a complement " "to :func:`onkey`. As the latter binds actions to the key release event, an " "alias: :func:`onkeyrelease` was also added for it." msgstr "" -"El método :meth:`Screen.onkeypress` se ha agregado como complemento a :meth:" -"`Screen.onkey` que, de hecho, une las acciones al evento keyrelease. En " -"consecuencia, este último tiene un alias: :meth:`Screen.onkeyrelease`." +"Se ha añadido el método :class:`Screen` :func:`onkeypress` como complemento " +"de :func:`onkey`. Como este último vincula acciones al evento de liberación " +"de la tecla, también se le ha añadido un alias: :func:`onkeyrelease`." #: ../Doc/library/turtle.rst:2749 msgid "" @@ -4297,17 +4929,19 @@ msgid "" "longer a need to use the standalone :func:`mainloop` function when working " "with :class:`Screen` and :class:`Turtle` objects." msgstr "" +"Se ha agregado el método :func:`Screen.mainloop `, por lo que ya " +"no es necesario utilizar la función independiente :func:`mainloop` al " +"trabajar con objetos :class:`Screen` y :class:`Turtle`." #: ../Doc/library/turtle.rst:2753 -#, fuzzy msgid "" "Two input methods have been added: :func:`Screen.textinput ` and :" "func:`Screen.numinput `. These pop up input dialogs and return " "strings and numbers respectively." msgstr "" -"Se han añadido dos métodos de entrada :meth:`Screen.textinput` y :meth:" -"`Screen.numinput`. Estos cuadros de diálogo de entrada emergentes y retornan " -"cadenas y números respectivamente." +"Se han añadido dos métodos de entrada: :func:`Screen.textinput ` " +"y :func:`Screen.numinput `. Estos abren cuadros de diálogo de " +"entrada y devuelven cadenas y números respectivamente." #: ../Doc/library/turtle.rst:2757 msgid "" From bee6753114138e20a0fbd8729b3f04526adc67ea Mon Sep 17 00:00:00 2001 From: kbiggers Date: Tue, 14 Oct 2025 10:17:45 +0000 Subject: [PATCH 60/78] Traducido c-api/memory.po (#3366) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit closes #3267 --------- Co-authored-by: rtobar Co-authored-by: Cristián Maureira-Fredes --- c-api/memory.po | 200 ++++++++++++++++++++-------------- dictionaries/c-api_memory.txt | 5 + 2 files changed, 126 insertions(+), 79 deletions(-) diff --git a/c-api/memory.po b/c-api/memory.po index 629456430f..794934cfbe 100644 --- a/c-api/memory.po +++ b/c-api/memory.po @@ -11,15 +11,16 @@ msgstr "" "Project-Id-Version: Python 3.11\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: 2022-10-27 03:12-0300\n" +"PO-Revision-Date: 2025-02-10 12:41-0500\n" "Last-Translator: Marco Richetta \n" -"Language: es\n" "Language-Team: python-doc-es\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\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.16.0\n" +"X-Generator: Poedit 3.5\n" #: ../Doc/c-api/memory.rst:8 msgid "Memory Management" @@ -121,6 +122,15 @@ msgid "" "free(buf); /* malloc'ed */\n" "return res;" msgstr "" +"PyObject *res;\n" +"char *buf = (char *) malloc(BUFSIZ); /* para I/O */\n" +"\n" +"if (buf == NULL)\n" +" return PyErr_NoMemory();\n" +"...Hacer algunas operaciones I/O incluyendo buf...\n" +"res = PyBytes_FromString(buf);\n" +"free(buf); /* malloc'ed */\n" +"return res;" #: ../Doc/c-api/memory.rst:68 msgid "" @@ -189,7 +199,6 @@ msgid "Allocator Domains" msgstr "Dominios del asignador" #: ../Doc/c-api/memory.rst:100 -#, fuzzy msgid "" "All allocating functions belong to one of three different \"domains\" (see " "also :c:type:`PyMemAllocatorDomain`). These domains represent different " @@ -207,20 +216,16 @@ msgstr "" "diferentes propósitos. Los detalles específicos sobre cómo cada dominio " "asigna memoria o qué funciones internas llama cada dominio se considera un " "detalle de implementación, pero para fines de depuración, se puede encontrar " -"una tabla simplificada en :ref:`here `. No existe " -"un requisito estricto para usar la memoria retornada por las funciones de " -"asignación que pertenecen a un dominio dado solo para los propósitos " -"sugeridos por ese dominio (aunque esta es la práctica recomendada). Por " -"ejemplo, se podría usar la memoria retornada por :c:func:`PyMem_RawMalloc` " -"para asignar objetos Python o la memoria retornada por :c:func:" -"`PyObject_Malloc` para asignar memoria para búferes." +"una tabla simplificada :ref:`acá `. Los APIs " +"que se usan para designar y librar un bloque de memoria deben ser del mismo " +"dominio. Por ejemplo, se debe usar :c:func:`PyMem_Free` para librar memoria " +"usando :c:func:`PyMem_Malloc`." #: ../Doc/c-api/memory.rst:109 msgid "The three allocation domains are:" msgstr "Los tres dominios de asignación son:" #: ../Doc/c-api/memory.rst:111 -#, fuzzy msgid "" "Raw domain: intended for allocating memory for general-purpose memory " "buffers where the allocation *must* go to the system allocator or where the " @@ -231,10 +236,10 @@ msgstr "" "Dominio sin formato: destinado a asignar memoria para búferes de memoria de " "uso general donde la asignación *debe* ir al asignador del sistema o donde " "el asignador puede operar sin el :term:`GIL`. La memoria se solicita " -"directamente al sistema." +"directamente al sistema. Consulte :ref:`Interfaz de memoria sin formato `." #: ../Doc/c-api/memory.rst:116 -#, fuzzy msgid "" "\"Mem\" domain: intended for allocating memory for Python buffers and " "general-purpose memory buffers where the allocation must be performed with " @@ -244,17 +249,17 @@ msgstr "" "Dominio \"Mem\": destinado a asignar memoria para búferes de Python y " "búferes de memoria de propósito general donde la asignación debe realizarse " "con el :term:`GIL` retenido. La memoria se toma del montículo privado de " -"Python." +"Python. Consulte :ref:`Interfaz de Memoria `." #: ../Doc/c-api/memory.rst:121 -#, fuzzy msgid "" "Object domain: intended for allocating memory for Python objects. The memory " "is taken from the Python private heap. See :ref:`Object allocators " "`." msgstr "" "Dominio de objeto: destinado a asignar memoria perteneciente a objetos de " -"Python. La memoria se toma del montículo privado de Python." +"Python. La memoria se toma del montículo privado de Python. Consulte :ref:" +"`Asignadores de objetos `." #: ../Doc/c-api/memory.rst:126 msgid "" @@ -263,6 +268,10 @@ msgid "" "objects are allocated using that domain. This differs from the prior Python " "versions, where this was only a best practice and not a hard requirement." msgstr "" +"La compilación :term:`free-threaded ` requiere que solamente " +"objetos de Python se asignen usando el dominio de \"object\" y que todos los objetos " +"de Python se asignan usando ese dominio. Esto es diferente que los versiones " +"anteriores de Python, donde esto fue una práctica buena y no un requisito." #: ../Doc/c-api/memory.rst:130 msgid "" @@ -270,10 +279,15 @@ msgid "" "`PyMem_Malloc`, :c:func:`PyMem_RawMalloc`, or :c:func:`malloc`, but not :c:" "func:`PyObject_Malloc`." msgstr "" +"Por ejemplo, *buffers* (objetos que no son de Python) deben asignarse " +"usando :c:func:`PyMem_Malloc`, :c:func:`PyMem_RawMalloc`, o :c:func:" +"`malloc`, pero no :c:func:`PyObject_Malloc`." #: ../Doc/c-api/memory.rst:133 msgid "See :ref:`Memory Allocation APIs `." msgstr "" +"Consulte :ref:`APIs de Asignación de Memoria `." #: ../Doc/c-api/memory.rst:139 msgid "Raw Memory Interface" @@ -290,17 +304,16 @@ msgstr "" "mantener el :term:`GIL `." #: ../Doc/c-api/memory.rst:145 -#, fuzzy msgid "" "The :ref:`default raw memory allocator ` uses the " "following functions: :c:func:`malloc`, :c:func:`calloc`, :c:func:`realloc` " "and :c:func:`!free`; call ``malloc(1)`` (or ``calloc(1, 1)``) when " "requesting zero bytes." msgstr "" -"El :ref:`asignador de memoria sin procesar predeterminado ` usa las siguientes funciones: :c:func:`malloc`, :c:func:" -"`calloc`, :c:func:`realloc` y :c:func:`free`; llame a ``malloc(1)`` (o " -"``calloc(1, 1)``) cuando solicita cero bytes." +"El :ref:`asignador de memoria sin formato ` usa " +"las siguientes funciones: :c:func:`malloc`, :c:func:`calloc`, :c:func:" +"`realloc` y :c:func:`!free`; llame a ``malloc(1)`` (o ``calloc(1, 1)``) " +"cuando solicita cero bytes." #: ../Doc/c-api/memory.rst:154 ../Doc/c-api/memory.rst:225 #: ../Doc/c-api/memory.rst:335 @@ -502,18 +515,16 @@ msgstr "" "Tenga en cuenta que *TYPE* se refiere a cualquier tipo de C." #: ../Doc/c-api/memory.rst:277 -#, fuzzy msgid "" "Same as :c:func:`PyMem_Malloc`, but allocates ``(n * sizeof(TYPE))`` bytes " "of memory. Returns a pointer cast to ``TYPE*``. The memory will not have " "been initialized in any way." msgstr "" "Igual que :c:func:`PyMem_Malloc`, pero asigna ``(n * sizeof(TYPE))`` bytes " -"de memoria. Retorna una conversión de puntero a :c:expr:`TYPE*`. La memoria " -"no se habrá inicializado de ninguna manera." +"de memoria. Retorna una conversión de puntero a ``TYPE*``. La memoria no se " +"habrá inicializado de ninguna manera." #: ../Doc/c-api/memory.rst:284 -#, fuzzy msgid "" "Same as :c:func:`PyMem_Realloc`, but the memory block is resized to ``(n * " "sizeof(TYPE))`` bytes. Returns a pointer cast to ``TYPE*``. On return, *p* " @@ -521,9 +532,9 @@ msgid "" "failure." msgstr "" "Igual que :c:func:`PyMem_Realloc`, pero el bloque de memoria cambia de " -"tamaño a ``(n * sizeof(TYPE))`` bytes. Retorna una conversión de puntero a :" -"c:expr:`TYPE*`. Al retornar, *p* será un puntero a la nueva área de memoria, " -"o ``NULL`` en caso de falla." +"tamaño a ``(n * sizeof(TYPE))`` bytes. Retorna una conversión de puntero a " +"``TYPE*``. Al retornar, *p* será un puntero a la nueva área de memoria, o " +"``NULL`` en caso de falla." #: ../Doc/c-api/memory.rst:289 msgid "" @@ -760,6 +771,8 @@ msgid "" "``mimalloc``: :ref:`mimalloc memory allocator `. The pymalloc " "allocator will be used if mimalloc support isn't available." msgstr "" +"``mimalloc``: :ref:`asignador de memoria mimalloc `. El asignador " +"pymalloc se usará si no hay compatibilidad con mimalloc." # debug hooks se deja como enlaces de depuración ya que en traducciones # anteriores se dejó como enlaces @@ -838,12 +851,11 @@ msgid "free a memory block" msgstr "liberar un bloque de memoria" #: ../Doc/c-api/memory.rst:437 -#, fuzzy msgid "" "The :c:type:`!PyMemAllocator` structure was renamed to :c:type:" "`PyMemAllocatorEx` and a new ``calloc`` field was added." msgstr "" -"La estructura :c:type:`PyMemAllocator` se renombró a :c:type:" +"La estructura :c:type:`!PyMemAllocator` se renombró a :c:type:" "`PyMemAllocatorEx` y se agregó un nuevo campo ``calloc``." #: ../Doc/c-api/memory.rst:444 @@ -920,15 +932,14 @@ msgstr "" "cero bytes." #: ../Doc/c-api/memory.rst:487 -#, fuzzy msgid "" "For the :c:macro:`PYMEM_DOMAIN_RAW` domain, the allocator must be thread-" "safe: the :term:`GIL ` is not held when the " "allocator is called." msgstr "" -"Para el dominio :c:data:`PYMEM_DOMAIN_RAW`, el asignador debe ser seguro " -"para subprocesos: el :term:`GIL ` no se mantiene " -"cuando se llama al asignador." +"Para el dominio :c:macro:`PYMEM_DOMAIN_RAW`, el asignador debe ser seguro " +"para hilos: el :term:`GIL ` no se mantiene cuando " +"se llama al asignador." #: ../Doc/c-api/memory.rst:491 msgid "" @@ -936,6 +947,9 @@ msgid "" "allocator may be called in different interpreters that do not share a " "``GIL``." msgstr "" +"Para los dominios restantes, el asignador también debe ser seguro para los " +"hilos: el asignador se podría llamar desde intérpretes diferentes que no " +"comparten un ``GIL``." #: ../Doc/c-api/memory.rst:495 msgid "" @@ -957,7 +971,7 @@ msgstr "" #: ../Doc/c-api/memory.rst:504 msgid ":c:func:`PyMem_SetAllocator` does have the following contract:" -msgstr "" +msgstr ":c:func:`PyMem_SetAllocator` tiene el contrato siguiente:" #: ../Doc/c-api/memory.rst:506 msgid "" @@ -968,6 +982,12 @@ msgid "" "without the GIL held). See :ref:`the section on allocator domains ` for more information." msgstr "" +"Se puede llamar después de :c:func:`Py_PreInitialize` y antes de :c:func:" +"`Py_InitializeFromConfig` para instalar un asignador de memoria " +"personalizada. No hay restricciones para el asignador instalado aparte de " +"las que se interpone el dominio (por ejemplo, el Dominio Crudo permite que " +"se llame al asignador sin sostener el GIL). Consulte :ref:`la sección " +"sobre dominios de asignadores ` para más información." #: ../Doc/c-api/memory.rst:514 msgid "" @@ -976,10 +996,14 @@ msgid "" "existing allocator. Substituting the current allocator for some other " "arbitrary one is **not supported**." msgstr "" +"Si se llama después de que Python haya terminado inicializándose (después de " +"llamar :c:func:`Py_InitializeFromConfig`) el asignador **debe** envolver el " +"asignador existente. Substituyendo el asignador actual con otro arbitrario " +"**no es compatible**." #: ../Doc/c-api/memory.rst:519 msgid "All allocators must be thread-safe." -msgstr "" +msgstr "Todos los asignadores deben ser seguro para los hilos." #: ../Doc/c-api/memory.rst:525 msgid "" @@ -1066,7 +1090,6 @@ msgstr "" "Detectar escritura después del final del búfer (desbordamiento del búfer)" #: ../Doc/c-api/memory.rst:558 -#, fuzzy msgid "" "Check that the :term:`GIL ` is held when allocator " "functions of :c:macro:`PYMEM_DOMAIN_OBJ` (ex: :c:func:`PyObject_Malloc`) " @@ -1074,8 +1097,8 @@ msgid "" "called." msgstr "" "Comprueba que :term:`GIL ` se mantiene cuando las " -"funciones del asignador de :c:data:`PYMEM_DOMAIN_OBJ` (ej: :c:func:" -"`PyObject_Malloc`) y dominios :c:data:`PYMEM_DOMAIN_MEM` (por ejemplo: :c:" +"funciones del asignador de :c:macro:`PYMEM_DOMAIN_OBJ` (ej: :c:func:" +"`PyObject_Malloc`) y dominios :c:macro:`PYMEM_DOMAIN_MEM` (por ejemplo: :c:" "func:`PyMem_Malloc`) se llaman." #: ../Doc/c-api/memory.rst:563 @@ -1095,9 +1118,9 @@ 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 " @@ -1127,19 +1150,16 @@ msgid "API identifier (ASCII character):" msgstr "Identificador de API (carácter ASCII):" #: ../Doc/c-api/memory.rst:580 -#, fuzzy msgid "``'r'`` for :c:macro:`PYMEM_DOMAIN_RAW`." -msgstr "``'r'`` para :c:data:`PYMEM_DOMAIN_RAW`." +msgstr "``'r'`` para :c:macro:`PYMEM_DOMAIN_RAW`." #: ../Doc/c-api/memory.rst:581 -#, fuzzy msgid "``'m'`` for :c:macro:`PYMEM_DOMAIN_MEM`." -msgstr "``'m'`` para :c:data:`PYMEM_DOMAIN_MEM`." +msgstr "``'m'`` para :c:macro:`PYMEM_DOMAIN_MEM`." #: ../Doc/c-api/memory.rst:582 -#, fuzzy msgid "``'o'`` for :c:macro:`PYMEM_DOMAIN_OBJ`." -msgstr "``'o'`` para :c:data:`PYMEM_DOMAIN_OBJ`." +msgstr "``'o'`` para :c:macro:`PYMEM_DOMAIN_OBJ`." #: ../Doc/c-api/memory.rst:585 msgid "``p[-S+1:0]``" @@ -1197,7 +1217,6 @@ msgstr "" "definida por defecto)." #: ../Doc/c-api/memory.rst:603 -#, fuzzy msgid "" "A serial number, incremented by 1 on each call to a malloc-like or realloc-" "like function. Big-endian :c:type:`size_t`. If \"bad memory\" is detected " @@ -1207,11 +1226,11 @@ msgid "" "number is incremented, and exists so you can set such a breakpoint easily." msgstr "" "Un número de serie, incrementado en 1 en cada llamada a una función similar " -"a malloc o realloc. Big-endian ``size_t``. Si se detecta \"mala memoria\" " -"más tarde, el número de serie ofrece una excelente manera de establecer un " -"punto de interrupción en la siguiente ejecución, para capturar el instante " -"en el que se pasó este bloque. La función estática bumpserialno() en " -"obmalloc.c es el único lugar donde se incrementa el número de serie, y " +"a malloc o realloc. Big-endian :c:type:`size_t`. Si se detecta \"mala memoria" +"\" más tarde, el número de serie ofrece una excelente manera de establecer " +"un punto de interrupción en la siguiente ejecución, para capturar el " +"instante en el que se pasó este bloque. La función estática bumpserialno() " +"en 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:610 @@ -1237,7 +1256,6 @@ msgstr "" "(que significa que se está usando la memoria no inicializada)." #: ../Doc/c-api/memory.rst:619 -#, fuzzy msgid "" "The :c:func:`PyMem_SetupDebugHooks` function now also works on Python " "compiled in release mode. On error, the debug hooks now use :mod:" @@ -1248,9 +1266,9 @@ msgstr "" "La función :c:func:`PyMem_SetupDebugHooks` ahora también funciona en Python " "compilado en modo de lanzamiento. En caso de error, los enlaces de " "depuración ahora usan :mod:`tracemalloc` para obtener el rastreo donde se " -"asignó un bloque de memoria. Los enlaces de depuración ahora también " -"comprueban si el GIL se mantiene cuando se llaman las funciones de :c:data:" -"`PYMEM_DOMAIN_OBJ` y :c:data:`PYMEM_DOMAIN_MEM` dominios." +"asignó un bloque de memoria. Los ganchos de depuración ahora también " +"comprueban si el GIL se mantiene cuando se llaman las funciones de :c:macro:" +"`PYMEM_DOMAIN_OBJ` y :c:macro:`PYMEM_DOMAIN_MEM` dominios." #: ../Doc/c-api/memory.rst:627 msgid "" @@ -1269,7 +1287,6 @@ msgid "The pymalloc allocator" msgstr "El asignador pymalloc" #: ../Doc/c-api/memory.rst:639 -#, fuzzy 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 " @@ -1279,34 +1296,32 @@ msgid "" msgstr "" "Python tiene un asignador *pymalloc* optimizado para objetos pequeños (más " "pequeños o iguales a 512 bytes) con una vida útil corta. Utiliza " -"asignaciones de memoria llamadas \"arenas\" con un tamaño fijo de 256 KiB. " -"Vuelve a :c:func:`PyMem_RawMalloc` y :c:func:`PyMem_RawRealloc` para " -"asignaciones de más de 512 bytes." +"asignaciones de memoria llamadas \"arenas\" con un tamaño fijo de 256 KiB en " +"plataformas de 32 bits o 1 MiB en plataformas de 64 bits. Vuelve a :c:func:" +"`PyMem_RawMalloc` y :c:func:`PyMem_RawRealloc` para asignaciones de más de " +"512 bytes." #: ../Doc/c-api/memory.rst:645 -#, fuzzy msgid "" "*pymalloc* is the :ref:`default allocator ` of " "the :c:macro:`PYMEM_DOMAIN_MEM` (ex: :c:func:`PyMem_Malloc`) and :c:macro:" "`PYMEM_DOMAIN_OBJ` (ex: :c:func:`PyObject_Malloc`) domains." msgstr "" "*pymalloc* es el :ref:`asignador por defecto ` " -"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." +"de :c:macro:`PYMEM_DOMAIN_MEM` (por ejemplo: :c:func:`PyMem_Malloc`) y :c:" +"macro:`PYMEM_DOMAIN_OBJ` (por ejemplo: :c:func:`PyObject_Malloc`) dominios." #: ../Doc/c-api/memory.rst:649 msgid "The arena allocator uses the following functions:" msgstr "El asignador de arena utiliza las siguientes funciones:" #: ../Doc/c-api/memory.rst:651 -#, fuzzy msgid ":c:func:`!VirtualAlloc` and :c:func:`!VirtualFree` on Windows," -msgstr ":c:func:`VirtualAlloc` y :c:func:`VirtualFree` en Windows," +msgstr ":c:func:`!VirtualAlloc` y :c:func:`!VirtualFree` en Windows," #: ../Doc/c-api/memory.rst:652 -#, fuzzy msgid ":c:func:`!mmap` and :c:func:`!munmap` if available," -msgstr ":c:func:`mmap` y :c:func:`munmap` si está disponible," +msgstr ":c:func:`!mmap` y :c:func:`!munmap` si está disponible," #: ../Doc/c-api/memory.rst:653 msgid ":c:func:`malloc` and :c:func:`free` otherwise." @@ -1360,9 +1375,8 @@ msgid "Set the arena allocator." msgstr "Establecer el asignador de arena." #: ../Doc/c-api/memory.rst:690 -#, fuzzy msgid "The mimalloc allocator" -msgstr "El asignador pymalloc" +msgstr "El asignador mimalloc" #: ../Doc/c-api/memory.rst:694 msgid "" @@ -1371,6 +1385,10 @@ msgid "" "performance characteristics. Initially developed by Daan Leijen for the " "runtime systems of the Koka and Lean languages.\"" msgstr "" +"Python admite el asignador mimalloc cuando la plataforma subyacente lo " +"admite. mimalloc \"es un asignador de propósito general con excelentes " +"característicos de rendimiento. Desarrollado originalmente por Daan Leijen " +"para los sistemas de tiempo de ejecución de las lenguajes Koka y Lean\"" #: ../Doc/c-api/memory.rst:699 msgid "tracemalloc C API" @@ -1434,6 +1452,15 @@ msgid "" "PyMem_Free(buf); /* allocated with PyMem_Malloc */\n" "return res;" msgstr "" +"PyObject *res;\n" +"char *buf = (char *) PyMem_Malloc(BUFSIZ); /* para I/O */\n" +"\n" +"if (buf == NULL)\n" +" return PyErr_NoMemory();\n" +"/* ...Hacer algunas operaciones I/O incluyendo buf... */\n" +"res = PyBytes_FromString(buf);\n" +"PyMem_Free(buf); /* destinado con PyMem_Malloc */\n" +"return res;" #: ../Doc/c-api/memory.rst:738 msgid "The same code using the type-oriented function set::" @@ -1452,6 +1479,15 @@ msgid "" "PyMem_Del(buf); /* allocated with PyMem_New */\n" "return res;" msgstr "" +"PyObject *res;\n" +"char *buf = PyMem_New(char, BUFSIZ); /* para I/O */\n" +"\n" +"if (buf == NULL)\n" +" return PyErr_NoMemory();\n" +"/* ...Hacer algunas operaciones I/O incluyendo buf... */\n" +"res = PyBytes_FromString(buf);\n" +"PyMem_Del(buf); /* destinado con PyMem_New */\n" +"return res;" #: ../Doc/c-api/memory.rst:750 msgid "" @@ -1480,17 +1516,23 @@ msgid "" "free(buf2); /* Right -- allocated via malloc() */\n" "free(buf1); /* Fatal -- should be PyMem_Del() */" msgstr "" +"char *buf1 = PyMem_New(char, BUFSIZ);\n" +"char *buf2 = (char *) malloc(BUFSIZ);\n" +"char *buf3 = (char *) PyMem_Malloc(BUFSIZ);\n" +"...\n" +"PyMem_Del(buf3); /* Incorrecto -- debe ser PyMem_Free() */\n" +"free(buf2); /* Correcto -- asignado por malloc() */\n" +"free(buf1); /* Fatal -- debe ser PyMem_Del() */" #: ../Doc/c-api/memory.rst:765 -#, fuzzy msgid "" "In addition to the functions aimed at handling raw memory blocks from the " "Python heap, objects in Python are allocated and released with :c:macro:" "`PyObject_New`, :c:macro:`PyObject_NewVar` and :c:func:`PyObject_Del`." msgstr "" "Además de las funciones destinadas a manejar bloques de memoria sin procesar " -"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` ." +"del montón de Python, los objetos en Python se asignan y liberan con :c:" +"macro:`PyObject_New`, :c:macro:`PyObject_NewVar` y :c:func:`PyObject_Del` ." #: ../Doc/c-api/memory.rst:769 msgid "" @@ -1502,16 +1544,16 @@ msgstr "" #: ../Doc/c-api/memory.rst:43 msgid "malloc (C function)" -msgstr "" +msgstr "malloc (C function)" #: ../Doc/c-api/memory.rst:43 msgid "calloc (C function)" -msgstr "" +msgstr "calloc (Función de C)" #: ../Doc/c-api/memory.rst:43 msgid "realloc (C function)" -msgstr "" +msgstr "realloc (Función de C)" #: ../Doc/c-api/memory.rst:43 msgid "free (C function)" -msgstr "" +msgstr "free (Función de C)" diff --git a/dictionaries/c-api_memory.txt b/dictionaries/c-api_memory.txt index 899f87325a..3d4af9f707 100644 --- a/dictionaries/c-api_memory.txt +++ b/dictionaries/c-api_memory.txt @@ -2,3 +2,8 @@ Mem realloc sobrescrituras bumpserialno +mimalloc +calloc +Daan +Leijen +Koka From 8636bf802109d81396fea0bf4df5466a518a54e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cristi=C3=A1n=20Maureira-Fredes?= Date: Tue, 14 Oct 2025 12:20:22 +0200 Subject: [PATCH 61/78] Translate library/pathlib (#3329) Closes #3001 --- dictionaries/library_pathlib.txt | 3 + library/pathlib.po | 1211 ++++++++++++++++++++++-------- 2 files changed, 883 insertions(+), 331 deletions(-) diff --git a/dictionaries/library_pathlib.txt b/dictionaries/library_pathlib.txt index 82d64c5efe..d3c337c80f 100644 --- a/dictionaries/library_pathlib.txt +++ b/dictionaries/library_pathlib.txt @@ -1 +1,4 @@ +down +rmdir tripletas +unlink diff --git a/library/pathlib.po b/library/pathlib.po index 2a5865bfcf..b18498c1b3 100644 --- a/library/pathlib.po +++ b/library/pathlib.po @@ -11,25 +11,24 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: 2024-10-29 13:06-0600\n" -"Last-Translator: Carlos A. Crespo \n" -"Language: es\n" +"PO-Revision-Date: 2025-10-14 12:15+0200\n" +"Last-Translator: Cristián Maureira-Fredes \n" "Language-Team: python-doc-es\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\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.16.0\n" +"X-Generator: Poedit 3.6\n" #: ../Doc/library/pathlib.rst:2 -#, fuzzy msgid ":mod:`!pathlib` --- Object-oriented filesystem paths" -msgstr ":mod:`pathlib` --- Rutas de sistemas orientada a objetos" +msgstr ":mod:`!pathlib` --- Rutas de sistemas orientada a objetos" #: ../Doc/library/pathlib.rst:9 -#, fuzzy msgid "**Source code:** :source:`Lib/pathlib/`" -msgstr "**Código fuente:** :source:`Lib/pathlib.py`" +msgstr "**Código fuente:** :source:`Lib/pathlib/`" #: ../Doc/library/pathlib.rst:15 msgid "" @@ -55,6 +54,12 @@ msgid "" "PosixPath subclasses PurePosixPath and Path, and WindowsPath\n" "subclasses PureWindowsPath and Path." msgstr "" +"Diagrama de herencia que muestra las clases disponibles en pathlib. La\n" +"clase más básica es PurePath, que tiene tres subclases directas:\n" +"PurePosixPath, PureWindowsPath y Path. Además de estas cuatro\n" +"clases, hay dos clases que utilizan herencia múltiple:\n" +"subclases de PosixPath, PurePosixPath y Path, y\n" +"subclases de WindowsPath, PureWindowsPath y Path." #: ../Doc/library/pathlib.rst:31 msgid "" @@ -100,8 +105,8 @@ msgstr "" #: ../Doc/library/pathlib.rst:48 msgid "" -"For low-level path manipulation on strings, you can also use the :mod:`os." -"path` module." +"For low-level path manipulation on strings, you can also use " +"the :mod:`os.path` module." msgstr "" "Para la manipulación de rutas de bajo nivel en cadenas, también puede usar " "el módulo :mod:`os.path`." @@ -116,7 +121,7 @@ msgstr "Importar la clase principal::" #: ../Doc/library/pathlib.rst:57 msgid ">>> from pathlib import Path" -msgstr "" +msgstr ">>> from pathlib import Path" #: ../Doc/library/pathlib.rst:59 msgid "Listing subdirectories::" @@ -129,6 +134,10 @@ msgid "" "[PosixPath('.hg'), PosixPath('docs'), PosixPath('dist'),\n" " PosixPath('__pycache__'), PosixPath('build')]" msgstr "" +">>> p = Path('.')\n" +">>> [x for x in p.iterdir() if x.is_dir()]\n" +"[PosixPath('.hg'), PosixPath('docs'), PosixPath('dist'),\n" +" PosixPath('__pycache__'), PosixPath('build')]" #: ../Doc/library/pathlib.rst:66 msgid "Listing Python source files in this directory tree::" @@ -141,6 +150,10 @@ msgid "" " PosixPath('pathlib.py'), PosixPath('docs/conf.py'),\n" " PosixPath('build/lib/pathlib.py')]" msgstr "" +">>> list(p.glob('**/*.py'))\n" +"[PosixPath('test_pathlib.py'), PosixPath('setup.py'),\n" +" PosixPath('pathlib.py'), PosixPath('docs/conf.py'),\n" +" PosixPath('build/lib/pathlib.py')]" #: ../Doc/library/pathlib.rst:73 msgid "Navigating inside a directory tree::" @@ -155,6 +168,12 @@ msgid "" ">>> q.resolve()\n" "PosixPath('/etc/rc.d/init.d/halt')" msgstr "" +">>> p = Path('/etc')\n" +">>> q = p / 'init.d' / 'reboot'\n" +">>> q\n" +"PosixPath('/etc/init.d/reboot')\n" +">>> q.resolve()\n" +"PosixPath('/etc/rc.d/init.d/halt')" #: ../Doc/library/pathlib.rst:82 msgid "Querying path properties::" @@ -167,6 +186,10 @@ msgid "" ">>> q.is_dir()\n" "False" msgstr "" +">>> q.exists()\n" +"True\n" +">>> q.is_dir()\n" +"False" #: ../Doc/library/pathlib.rst:89 msgid "Opening a file::" @@ -178,17 +201,21 @@ msgid "" "...\n" "'#!/bin/bash\\n'" msgstr "" +">>> with q.open() as f: f.readline()\n" +"...\n" +"'#!/bin/bash\\n'" #: ../Doc/library/pathlib.rst:97 -#, fuzzy msgid "Exceptions" -msgstr "operations" +msgstr "Excepciones" #: ../Doc/library/pathlib.rst:101 msgid "" "An exception inheriting :exc:`NotImplementedError` that is raised when an " "unsupported operation is called on a path object." msgstr "" +"Una excepción que hereda :exc:`NotImplementedError` y que se genera cuando " +"se llama a una operación no compatible en un objeto de ruta." #: ../Doc/library/pathlib.rst:110 msgid "Pure paths" @@ -217,6 +244,8 @@ msgid "" ">>> PurePath('setup.py') # Running on a Unix machine\n" "PurePosixPath('setup.py')" msgstr "" +">>> PurePath('setup.py') # Ejecutándose en una máquina Unix\n" +"PurePosixPath('setup.py')" #: ../Doc/library/pathlib.rst:124 msgid "" @@ -237,6 +266,10 @@ msgid "" ">>> PurePath(Path('foo'), Path('bar'))\n" "PurePosixPath('foo/bar')" msgstr "" +">>> PurePath('foo', 'some/path', 'bar')\n" +"PurePosixPath('foo/some/path/bar')\n" +">>> PurePath(Path('foo'), Path('bar'))\n" +"PurePosixPath('foo/bar')" #: ../Doc/library/pathlib.rst:134 msgid "When *pathsegments* is empty, the current directory is assumed::" @@ -247,11 +280,13 @@ msgid "" ">>> PurePath()\n" "PurePosixPath('.')" msgstr "" +">>> PurePath()\n" +"PurePosixPath('.')" #: ../Doc/library/pathlib.rst:139 msgid "" -"If a segment is an absolute path, all previous segments are ignored (like :" -"func:`os.path.join`)::" +"If a segment is an absolute path, all previous segments are ignored " +"(like :func:`os.path.join`)::" msgstr "" "Si un segmento es una ruta absoluta, se ignoran todos los segmentos " "anteriores (como :func:`os.path.join`)::" @@ -263,11 +298,15 @@ msgid "" ">>> PureWindowsPath('c:/Windows', 'd:bar')\n" "PureWindowsPath('d:bar')" msgstr "" +">>> PurePath('/etc', '/usr', 'lib64')\n" +"PurePosixPath('/usr/lib64')\n" +">>> PureWindowsPath('c:/Windows', 'd:bar')\n" +"PureWindowsPath('d:bar')" #: ../Doc/library/pathlib.rst:147 msgid "" -"On Windows, the drive is not reset when a rooted relative path segment (e." -"g., ``r'\\foo'``) is encountered::" +"On Windows, the drive is not reset when a rooted relative path segment " +"(e.g., ``r'\\foo'``) is encountered::" msgstr "" "En Windows, la unidad no se restablece cuando se encuentra un segmento de " "ruta relativa en la raíz (por ejemplo, ``r'\\foo'``)::" @@ -277,6 +316,8 @@ msgid "" ">>> PureWindowsPath('c:/Windows', '/Program Files')\n" "PureWindowsPath('c:/Program Files')" msgstr "" +">>> PureWindowsPath('c:/Windows', '/Program Files')\n" +"PureWindowsPath('c:/Program Files')" #: ../Doc/library/pathlib.rst:153 msgid "" @@ -300,6 +341,14 @@ msgid "" ">>> PurePath('foo/../bar')\n" "PurePosixPath('foo/../bar')" msgstr "" +">>> PurePath('foo//bar')\n" +"PurePosixPath('foo/bar')\n" +">>> PurePath('//foo/bar')\n" +"PurePosixPath('//foo/bar')\n" +">>> PurePath('foo/./bar')\n" +"PurePosixPath('foo/bar')\n" +">>> PurePath('foo/../bar')\n" +"PurePosixPath('foo/../bar')" #: ../Doc/library/pathlib.rst:166 msgid "" @@ -336,6 +385,8 @@ msgid "" ">>> PurePosixPath('/etc/hosts')\n" "PurePosixPath('/etc/hosts')" msgstr "" +">>> PurePosixPath('/etc/hosts')\n" +"PurePosixPath('/etc/hosts')" #: ../Doc/library/pathlib.rst:184 ../Doc/library/pathlib.rst:196 #: ../Doc/library/pathlib.rst:766 ../Doc/library/pathlib.rst:776 @@ -358,6 +409,10 @@ msgid "" ">>> PureWindowsPath('//server/share/file')\n" "PureWindowsPath('//server/share/file')" msgstr "" +">>> PureWindowsPath('c:/', 'Users', 'Ximénez')\n" +"PureWindowsPath('c:/Users/Ximénez')\n" +">>> PureWindowsPath('//server/share/file')\n" +"PureWindowsPath('//server/share/file')" #: ../Doc/library/pathlib.rst:200 msgid "" @@ -393,6 +448,14 @@ msgid "" ">>> PureWindowsPath('C:') < PureWindowsPath('d:')\n" "True" msgstr "" +">>> PurePosixPath('foo') == PurePosixPath('FOO')\n" +"False\n" +">>> PureWindowsPath('foo') == PureWindowsPath('FOO')\n" +"True\n" +">>> PureWindowsPath('FOO') in { PureWindowsPath('foo') }\n" +"True\n" +">>> PureWindowsPath('C:') < PureWindowsPath('d:')\n" +"True" #: ../Doc/library/pathlib.rst:220 msgid "Paths of a different flavour compare unequal and cannot be ordered::" @@ -408,6 +471,13 @@ msgid "" "TypeError: '<' not supported between instances of 'PureWindowsPath' and " "'PurePosixPath'" msgstr "" +">>> PureWindowsPath('foo') == PurePosixPath('foo')\n" +"False\n" +">>> PureWindowsPath('foo') < PurePosixPath('foo')\n" +"Traceback (most recent call last):\n" +" File \"\", line 1, in \n" +"TypeError: '<' not supported between instances of 'PureWindowsPath' and " +"'PurePosixPath'" #: ../Doc/library/pathlib.rst:231 msgid "Operators" @@ -420,10 +490,10 @@ msgid "" "the drive is not reset when the argument is a rooted relative path (e.g., " "``r'\\foo'``)::" msgstr "" -"El operador de barra inclinada ayuda a crear rutas hijas, como :func:`os." -"path.join`. Si el argumento es una ruta absoluta, se ignora la ruta " -"anterior. En Windows, la unidad no se restablece cuando el argumento es una " -"ruta relativa en la raíz (por ejemplo, ``r'\\foo'``)::" +"El operador de barra inclinada ayuda a crear rutas hijas, " +"como :func:`os.path.join`. Si el argumento es una ruta absoluta, se ignora " +"la ruta anterior. En Windows, la unidad no se restablece cuando el argumento " +"es una ruta relativa en la raíz (por ejemplo, ``r'\\foo'``)::" #: ../Doc/library/pathlib.rst:238 msgid "" @@ -440,11 +510,23 @@ msgid "" ">>> PureWindowsPath('c:/Windows', '/Program Files')\n" "PureWindowsPath('c:/Program Files')" msgstr "" +">>> p = PurePath('/etc')\n" +">>> p\n" +"PurePosixPath('/etc')\n" +">>> p / 'init.d' / 'apache2'\n" +"PurePosixPath('/etc/init.d/apache2')\n" +">>> q = PurePath('bin')\n" +">>> '/usr' / q\n" +"PurePosixPath('/usr/bin')\n" +">>> p / '/an_absolute_path'\n" +"PurePosixPath('/an_absolute_path')\n" +">>> PureWindowsPath('c:/Windows', '/Program Files')\n" +"PureWindowsPath('c:/Program Files')" #: ../Doc/library/pathlib.rst:251 msgid "" -"A path object can be used anywhere an object implementing :class:`os." -"PathLike` is accepted::" +"A path object can be used anywhere an object " +"implementing :class:`os.PathLike` is accepted::" msgstr "" "Se puede usar un objeto ruta en cualquier lugar donde se acepte un objeto " "que implemente :class:`os.PathLike`::" @@ -456,6 +538,10 @@ msgid "" ">>> os.fspath(p)\n" "'/etc'" msgstr "" +">>> import os\n" +">>> p = PurePath('/etc')\n" +">>> os.fspath(p)\n" +"'/etc'" #: ../Doc/library/pathlib.rst:259 msgid "" @@ -477,6 +563,12 @@ msgid "" ">>> str(p)\n" "'c:\\\\Program Files'" msgstr "" +">>> p = PurePath('/etc')\n" +">>> str(p)\n" +"'/etc'\n" +">>> p = PureWindowsPath('c:/Program Files')\n" +">>> str(p)\n" +"'c:\\\\Program Files'" #: ../Doc/library/pathlib.rst:270 msgid "" @@ -484,14 +576,16 @@ msgid "" "a bytes object, as encoded by :func:`os.fsencode`::" msgstr "" "Del mismo modo, llamar a :class:`bytes` en una ruta proporciona la ruta " -"cruda del sistema de archivos como un objeto bytes, codificado por :func:`os." -"fsencode`::" +"cruda del sistema de archivos como un objeto bytes, codificado " +"por :func:`os.fsencode`::" #: ../Doc/library/pathlib.rst:273 msgid "" ">>> bytes(p)\n" "b'/etc'" msgstr "" +">>> bytes(p)\n" +"b'/etc'" #: ../Doc/library/pathlib.rst:277 msgid "" @@ -527,6 +621,13 @@ msgid "" ">>> p.parts\n" "('c:\\\\', 'Program Files', 'PSF')" msgstr "" +">>> p = PurePath('/usr/bin/python3')\n" +">>> p.parts\n" +"('/', 'usr', 'bin', 'python3')\n" +"\n" +">>> p = PureWindowsPath('c:/Program Files/PSF')\n" +">>> p.parts\n" +"('c:\\\\', 'Program Files', 'PSF')" #: ../Doc/library/pathlib.rst:299 msgid "(note how the drive and local root are regrouped in a single part)" @@ -546,6 +647,8 @@ msgid "" "The implementation of the :mod:`os.path` module used for low-level path " "parsing and joining: either :mod:`posixpath` or :mod:`ntpath`." msgstr "" +"La implementación del módulo :mod:`os.path` utilizado para el análisis y " +"unión de rutas de bajo nivel: :mod:`posixpath` o :mod:`ntpath`." #: ../Doc/library/pathlib.rst:320 msgid "A string representing the drive letter or name, if any::" @@ -561,6 +664,12 @@ msgid "" ">>> PurePosixPath('/etc').drive\n" "''" msgstr "" +">>> PureWindowsPath('c:/Program Files/').drive\n" +"'c:'\n" +">>> PureWindowsPath('/Program Files/').drive\n" +"''\n" +">>> PurePosixPath('/etc').drive\n" +"''" #: ../Doc/library/pathlib.rst:329 msgid "UNC shares are also considered drives::" @@ -571,6 +680,8 @@ msgid "" ">>> PureWindowsPath('//host/share/foo.txt').drive\n" "'\\\\\\\\host\\\\share'" msgstr "" +">>> PureWindowsPath('//host/share/foo.txt').drive\n" +"'\\\\\\\\host\\\\share'" #: ../Doc/library/pathlib.rst:336 msgid "A string representing the (local or global) root, if any::" @@ -585,6 +696,12 @@ msgid "" ">>> PurePosixPath('/etc').root\n" "'/'" msgstr "" +">>> PureWindowsPath('c:/Program Files/').root\n" +"'\\\\'\n" +">>> PureWindowsPath('c:Program Files/').root\n" +"''\n" +">>> PurePosixPath('/etc').root\n" +"'/'" #: ../Doc/library/pathlib.rst:345 msgid "UNC shares always have a root::" @@ -595,14 +712,16 @@ msgid "" ">>> PureWindowsPath('//host/share').root\n" "'\\\\'" msgstr "" +">>> PureWindowsPath('//host/share').root\n" +"'\\\\'" #: ../Doc/library/pathlib.rst:350 msgid "" -"If the path starts with more than two successive slashes, :class:`~pathlib." -"PurePosixPath` collapses them::" +"If the path starts with more than two successive " +"slashes, :class:`~pathlib.PurePosixPath` collapses them::" msgstr "" -"Si la ruta comienza con más de dos barras diagonales sucesivas, :class:" -"`~pathlib.PurePosixPath` las contrae:" +"Si la ruta comienza con más de dos barras diagonales " +"sucesivas, :class:`~pathlib.PurePosixPath` las contrae:" #: ../Doc/library/pathlib.rst:353 msgid "" @@ -613,16 +732,22 @@ msgid "" ">>> PurePosixPath('////etc').root\n" "'/'" msgstr "" +">>> PurePosixPath('//etc').root\n" +"'//'\n" +">>> PurePosixPath('///etc').root\n" +"'/'\n" +">>> PurePosixPath('////etc').root\n" +"'/'" #: ../Doc/library/pathlib.rst:362 msgid "" "This behavior conforms to *The Open Group Base Specifications Issue 6*, " -"paragraph `4.11 Pathname Resolution `_:" +"paragraph `4.11 Pathname Resolution `_:" msgstr "" "Este comportamiento se ajusta a *The Open Group Base Specifications Issue " -"6*, párrafo `4.11 Pathname Resolution `_:" +"6*, párrafo `4.11 Pathname Resolution `_:" #: ../Doc/library/pathlib.rst:366 msgid "" @@ -649,6 +774,14 @@ msgid "" ">>> PureWindowsPath('//host/share').anchor\n" "'\\\\\\\\host\\\\share\\\\'" msgstr "" +">>> PureWindowsPath('c:/Program Files/').anchor\n" +"'c:\\\\'\n" +">>> PureWindowsPath('c:Program Files/').anchor\n" +"'c:'\n" +">>> PurePosixPath('/etc').anchor\n" +"'/'\n" +">>> PureWindowsPath('//host/share').anchor\n" +"'\\\\\\\\host\\\\share\\\\'" #: ../Doc/library/pathlib.rst:386 msgid "" @@ -667,6 +800,13 @@ msgid "" ">>> p.parents[2]\n" "PureWindowsPath('c:/')" msgstr "" +">>> p = PureWindowsPath('c:/foo/bar/setup.py')\n" +">>> p.parents[0]\n" +"PureWindowsPath('c:/foo/bar')\n" +">>> p.parents[1]\n" +"PureWindowsPath('c:/foo')\n" +">>> p.parents[2]\n" +"PureWindowsPath('c:/')" #: ../Doc/library/pathlib.rst:397 msgid "" @@ -686,6 +826,9 @@ msgid "" ">>> p.parent\n" "PurePosixPath('/a/b/c')" msgstr "" +">>> p = PurePosixPath('/a/b/c/d')\n" +">>> p.parent\n" +"PurePosixPath('/a/b/c')" #: ../Doc/library/pathlib.rst:408 msgid "You cannot go past an anchor, or empty path::" @@ -700,6 +843,12 @@ msgid "" ">>> p.parent\n" "PurePosixPath('.')" msgstr "" +">>> p = PurePosixPath('/')\n" +">>> p.parent\n" +"PurePosixPath('/')\n" +">>> p = PurePosixPath('.')\n" +">>> p.parent\n" +"PurePosixPath('.')" #: ../Doc/library/pathlib.rst:418 msgid "This is a purely lexical operation, hence the following behaviour::" @@ -712,6 +861,9 @@ msgid "" ">>> p.parent\n" "PurePosixPath('foo')" msgstr "" +">>> p = PurePosixPath('foo/..')\n" +">>> p.parent\n" +"PurePosixPath('foo')" #: ../Doc/library/pathlib.rst:424 msgid "" @@ -736,6 +888,8 @@ msgid "" ">>> PurePosixPath('my/library/setup.py').name\n" "'setup.py'" msgstr "" +">>> PurePosixPath('my/library/setup.py').name\n" +"'setup.py'" #: ../Doc/library/pathlib.rst:437 msgid "UNC drive names are not considered::" @@ -748,11 +902,14 @@ msgid "" ">>> PureWindowsPath('//some/share').name\n" "''" msgstr "" +">>> PureWindowsPath('//some/share/setup.py').name\n" +"'setup.py'\n" +">>> PureWindowsPath('//some/share').name\n" +"''" #: ../Doc/library/pathlib.rst:447 -#, fuzzy msgid "The last dot-separated portion of the final component, if any::" -msgstr "La extensión del archivo del componente final, si lo hay::" +msgstr "La última porción separada por puntos del componente final, si la hay:" #: ../Doc/library/pathlib.rst:449 msgid "" @@ -763,15 +920,22 @@ msgid "" ">>> PurePosixPath('my/library').suffix\n" "''" msgstr "" +">>> PurePosixPath('my/library/setup.py').suffix\n" +"'.py'\n" +">>> PurePosixPath('my/library.tar.gz').suffix\n" +"'.gz'\n" +">>> PurePosixPath('my/library').suffix\n" +"''" #: ../Doc/library/pathlib.rst:456 msgid "This is commonly called the file extension." -msgstr "" +msgstr "Esto comúnmente se llama extensión de archivo." #: ../Doc/library/pathlib.rst:460 -#, fuzzy msgid "A list of the path's suffixes, often called file extensions::" -msgstr "Una lista de las extensiones de archivo de la ruta::" +msgstr "" +"Una lista de los sufijos de la ruta, a menudo llamados extensiones de " +"archivo:" #: ../Doc/library/pathlib.rst:462 msgid "" @@ -782,6 +946,12 @@ msgid "" ">>> PurePosixPath('my/library').suffixes\n" "[]" msgstr "" +">>> PurePosixPath('my/library.tar.gar').suffixes\n" +"['.tar', '.gar']\n" +">>> PurePosixPath('my/library.tar.gz').suffixes\n" +"['.tar', '.gz']\n" +">>> PurePosixPath('my/library').suffixes\n" +"[]" #: ../Doc/library/pathlib.rst:472 msgid "The final path component, without its suffix::" @@ -796,6 +966,12 @@ msgid "" ">>> PurePosixPath('my/library').stem\n" "'library'" msgstr "" +">>> PurePosixPath('my/library.tar.gz').stem\n" +"'library.tar'\n" +">>> PurePosixPath('my/library.tar').stem\n" +"'library'\n" +">>> PurePosixPath('my/library').stem\n" +"'library'" #: ../Doc/library/pathlib.rst:484 msgid "" @@ -811,6 +987,11 @@ msgid "" ">>> p.as_posix()\n" "'c:/windows'" msgstr "" +">>> p = PureWindowsPath('c:\\\\windows')\n" +">>> str(p)\n" +"'c:\\\\windows'\n" +">>> p.as_posix()\n" +"'c:/windows'" #: ../Doc/library/pathlib.rst:495 msgid "" @@ -836,6 +1017,19 @@ msgid "" ">>> PureWindowsPath('//some/share').is_absolute()\n" "True" msgstr "" +">>> PurePosixPath('/a/b').is_absolute()\n" +"True\n" +">>> PurePosixPath('a/b').is_absolute()\n" +"False\n" +"\n" +">>> PureWindowsPath('c:/a/b').is_absolute()\n" +"True\n" +">>> PureWindowsPath('/a/b').is_absolute()\n" +"False\n" +">>> PureWindowsPath('c:').is_absolute()\n" +"False\n" +">>> PureWindowsPath('//some/share').is_absolute()\n" +"True" #: ../Doc/library/pathlib.rst:515 msgid "Return whether or not this path is relative to the *other* path." @@ -846,6 +1040,9 @@ msgid "" "This method is string-based; it neither accesses the filesystem nor treats " "\"``..``\" segments specially. The following code is equivalent:" msgstr "" +"Este método se basa en cadenas; no accede al sistema de archivos ni trata " +"los segmentos \"``..``\" de manera especial. El siguiente código es " +"equivalente:" #: ../Doc/library/pathlib.rst:534 msgid "" @@ -862,20 +1059,25 @@ msgid "" "``False`` is always returned." msgstr "" "Con :class:`PureWindowsPath`, retorna ``True`` si la ruta se considera " -"reservada en Windows, ``False`` en caso contrario. Con :class:" -"`PurePosixPath`, siempre retorna ``False``." +"reservada en Windows, ``False`` en caso contrario. " +"Con :class:`PurePosixPath`, siempre retorna ``False``." #: ../Doc/library/pathlib.rst:543 msgid "" "Windows path names that contain a colon, or end with a dot or a space, are " "considered reserved. UNC paths may be reserved." msgstr "" +"Los nombres de ruta de Windows que contienen dos puntos o terminan con un " +"punto o un espacio se consideran reservados. Las rutas UNC pueden estar " +"reservadas." #: ../Doc/library/pathlib.rst:547 msgid "" "This method is deprecated; use :func:`os.path.isreserved` to detect reserved " "paths on Windows." msgstr "" +"Este método está obsoleto; utilice :func:`os.path.isreserved` para detectar " +"rutas reservadas en Windows." #: ../Doc/library/pathlib.rst:553 msgid "" @@ -896,15 +1098,23 @@ msgid "" ">>> PureWindowsPath('c:').joinpath('/Program Files')\n" "PureWindowsPath('c:/Program Files')" msgstr "" +">>> PurePosixPath('/etc').joinpath('passwd')\n" +"PurePosixPath('/etc/passwd')\n" +">>> PurePosixPath('/etc').joinpath(PurePosixPath('passwd'))\n" +"PurePosixPath('/etc/passwd')\n" +">>> PurePosixPath('/etc').joinpath('init.d', 'apache2')\n" +"PurePosixPath('/etc/init.d/apache2')\n" +">>> PureWindowsPath('c:').joinpath('/Program Files')\n" +"PureWindowsPath('c:/Program Files')" #: ../Doc/library/pathlib.rst:568 -#, fuzzy msgid "" "Match this path against the provided glob-style pattern. Return ``True`` if " "matching is successful, ``False`` otherwise. For example::" msgstr "" -"Haga coincidir esta ruta con el *pattern* global proporcionado. Retorna " -"``True`` si la coincidencia es exitosa, ``False`` en caso contrario." +"Compare esta ruta con el patrón de estilo glob proporcionado. Devuelva " +"``True`` si la coincidencia es exitosa, ``False`` en caso contrario. Por " +"ejemplo:" #: ../Doc/library/pathlib.rst:571 msgid "" @@ -917,10 +1127,18 @@ msgid "" ">>> PurePath('/a/b/c.py').full_match('**/*.py')\n" "True" msgstr "" +">>> PurePath('a/b.py').full_match('a/*.py')\n" +"True\n" +">>> PurePath('a/b.py').full_match('*.py')\n" +"False\n" +">>> PurePath('/a/b/c.py').full_match('/a/**')\n" +"True\n" +">>> PurePath('/a/b/c.py').full_match('**/*.py')\n" +"True" #: ../Doc/library/pathlib.rst:581 ../Doc/library/pathlib.rst:1291 msgid ":ref:`pathlib-pattern-language` documentation." -msgstr "" +msgstr "Documentación :ref:`pathlib-pattern-language`." #: ../Doc/library/pathlib.rst:583 msgid "As with other methods, case-sensitivity follows platform defaults::" @@ -935,6 +1153,10 @@ msgid "" ">>> PureWindowsPath('b.py').full_match('*.PY')\n" "True" msgstr "" +">>> PurePosixPath('b.py').full_match('*.PY')\n" +"False\n" +">>> PureWindowsPath('b.py').full_match('*.PY')\n" +"True" #: ../Doc/library/pathlib.rst:590 msgid "" @@ -944,13 +1166,12 @@ msgstr "" "comportamiento." #: ../Doc/library/pathlib.rst:597 -#, fuzzy msgid "" "Match this path against the provided non-recursive glob-style pattern. " "Return ``True`` if matching is successful, ``False`` otherwise." msgstr "" -"Haga coincidir esta ruta con el *pattern* global proporcionado. Retorna " -"``True`` si la coincidencia es exitosa, ``False`` en caso contrario." +"Compare esta ruta con el patrón de estilo glob no recursivo proporcionado. " +"Devuelva ``True`` si la coincidencia es exitosa, ``False`` en caso contrario." #: ../Doc/library/pathlib.rst:600 msgid "" @@ -959,6 +1180,10 @@ msgid "" "\"``**``\" isn't supported (it acts like non-recursive \"``*``\"), and if a " "relative pattern is provided, then matching is done from the right::" msgstr "" +"Este método es similar a :meth:`~PurePath.full_match`, pero no se permiten " +"patrones vacíos (se genera :exc:`ValueError`), no se admite el comodín " +"recursivo \"``**``\" (actúa como \"``*``\" no recursivo) y, si se " +"proporciona un patrón relativo, la coincidencia se realiza desde la derecha:" #: ../Doc/library/pathlib.rst:605 msgid "" @@ -969,11 +1194,19 @@ msgid "" ">>> PurePath('/a/b/c.py').match('a/*.py')\n" "False" msgstr "" +">>> PurePath('a/b.py').full_match('a/*.py')\n" +"True\n" +">>> PurePath('a/b.py').full_match('*.py')\n" +"False\n" +">>> PurePath('/a/b/c.py').full_match('/a/**')\n" +"True\n" +">>> PurePath('/a/b/c.py').full_match('**/*.py')\n" +"True" #: ../Doc/library/pathlib.rst:612 ../Doc/library/pathlib.rst:1310 #: ../Doc/library/pathlib.rst:1335 msgid "The *pattern* parameter accepts a :term:`path-like object`." -msgstr "" +msgstr "El parámetro *pattern* acepta un :term:`path-like object`." #: ../Doc/library/pathlib.rst:615 ../Doc/library/pathlib.rst:1304 #: ../Doc/library/pathlib.rst:1329 @@ -1003,19 +1236,31 @@ msgid "" "ValueError: '/etc/passwd' is not in the subpath of '/usr' OR one path is " "relative and the other is absolute." msgstr "" +">>> p = PurePosixPath('/etc/passwd')\n" +">>> p.relative_to('/')\n" +"PurePosixPath('etc/passwd')\n" +">>> p.relative_to('/etc')\n" +"PurePosixPath('passwd')\n" +">>> p.relative_to('/usr')\n" +"Traceback (most recent call last):\n" +" File \"\", line 1, in \n" +" File \"pathlib.py\", line 941, in relative_to\n" +" raise ValueError(error_message.format(str(self), str(formatted)))\n" +"ValueError: '/etc/passwd' is not in the subpath of '/usr' OR one path is " +"relative and the other is absolute." #: ../Doc/library/pathlib.rst:636 -#, fuzzy msgid "" "When *walk_up* is false (the default), the path must start with *other*. " "When the argument is true, ``..`` entries may be added to form the relative " -"path. In all other cases, such as the paths referencing different drives, :" -"exc:`ValueError` is raised.::" +"path. In all other cases, such as the paths referencing different " +"drives, :exc:`ValueError` is raised.::" msgstr "" -"Cuando *walk_up* es False (por defecto), la ruta debe empezar con *other*. " -"Cuando el argumento es True, se pueden agregar entradas ``..`` para formar " -"la ruta relativa. En todos los demás casos, como las rutas que hacen " -"referencia a diferentes unidades, se lanza :exc:`ValueError`.::" +"Cuando *walk_up* es falso (el valor predeterminado), la ruta debe comenzar " +"con *other*. Cuando el argumento es verdadero, se pueden agregar entradas " +"``..`` para formar la ruta relativa. En todos los demás casos, como las " +"rutas que hacen referencia a diferentes unidades, se " +"genera :exc:`ValueError`.::" #: ../Doc/library/pathlib.rst:641 msgid "" @@ -1029,6 +1274,15 @@ msgid "" "ValueError: '/etc/passwd' is not on the same drive as 'foo' OR one path is " "relative and the other is absolute." msgstr "" +">>> p.relative_to('/usr', walk_up=True)\n" +"PurePosixPath('../etc/passwd')\n" +">>> p.relative_to('foo', walk_up=True)\n" +"Traceback (most recent call last):\n" +" File \"\", line 1, in \n" +" File \"pathlib.py\", line 941, in relative_to\n" +" raise ValueError(error_message.format(str(self), str(formatted)))\n" +"ValueError: '/etc/passwd' is not on the same drive as 'foo' OR one path is " +"relative and the other is absolute." #: ../Doc/library/pathlib.rst:651 msgid "" @@ -1082,6 +1336,17 @@ msgid "" " raise ValueError(\"%r has an empty name\" % (self,))\n" "ValueError: PureWindowsPath('c:/') has an empty name" msgstr "" +">>> p = PureWindowsPath('c:/Downloads/pathlib.tar.gz')\n" +">>> p.with_name('setup.py')\n" +"PureWindowsPath('c:/Downloads/setup.py')\n" +">>> p = PureWindowsPath('c:/')\n" +">>> p.with_name('setup.py')\n" +"Traceback (most recent call last):\n" +" File \"\", line 1, in \n" +" File \"/home/antoine/cpython/default/Lib/pathlib.py\", line 751, in " +"with_name\n" +" raise ValueError(\"%r has an empty name\" % (self,))\n" +"ValueError: PureWindowsPath('c:/') has an empty name" #: ../Doc/library/pathlib.rst:684 msgid "" @@ -1112,6 +1377,23 @@ msgid "" " raise ValueError(\"%r has an empty name\" % (self,))\n" "ValueError: PureWindowsPath('c:/') has an empty name" msgstr "" +">>> p = PureWindowsPath('c:/Downloads/draft.txt')\n" +">>> p.with_stem('final')\n" +"PureWindowsPath('c:/Downloads/final.txt')\n" +">>> p = PureWindowsPath('c:/Downloads/pathlib.tar.gz')\n" +">>> p.with_stem('lib')\n" +"PureWindowsPath('c:/Downloads/lib.gz')\n" +">>> p = PureWindowsPath('c:/')\n" +">>> p.with_stem('')\n" +"Traceback (most recent call last):\n" +" File \"\", line 1, in \n" +" File \"/home/antoine/cpython/default/Lib/pathlib.py\", line 861, in " +"with_stem\n" +" return self.with_name(stem + self.suffix)\n" +" File \"/home/antoine/cpython/default/Lib/pathlib.py\", line 851, in " +"with_name\n" +" raise ValueError(\"%r has an empty name\" % (self,))\n" +"ValueError: PureWindowsPath('c:/') has an empty name" #: ../Doc/library/pathlib.rst:708 msgid "" @@ -1135,6 +1417,15 @@ msgid "" ">>> p.with_suffix('')\n" "PureWindowsPath('README')" msgstr "" +">>> p = PureWindowsPath('c:/Downloads/pathlib.tar.gz')\n" +">>> p.with_suffix('.bz2')\n" +"PureWindowsPath('c:/Downloads/pathlib.tar.bz2')\n" +">>> p = PureWindowsPath('README')\n" +">>> p.with_suffix('.txt')\n" +"PureWindowsPath('README.txt')\n" +">>> p = PureWindowsPath('README.txt')\n" +">>> p.with_suffix('')\n" +"PureWindowsPath('README')" #: ../Doc/library/pathlib.rst:725 msgid "" @@ -1144,9 +1435,9 @@ msgid "" "this method to pass information to derivative paths, for example::" msgstr "" "Crea un nuevo objeto de ruta del mismo tipo combinando los *pathsegments* " -"dados. Este método se llama siempre que se crea una ruta derivada, como :" -"attr:`parent` y :meth:`relative_to`. Las subclases pueden anular este método " -"para pasar información a las rutas derivadas, por ejemplo::" +"dados. Este método se llama siempre que se crea una ruta derivada, " +"como :attr:`parent` y :meth:`relative_to`. Las subclases pueden anular este " +"método para pasar información a las rutas derivadas, por ejemplo::" #: ../Doc/library/pathlib.rst:730 msgid "" @@ -1164,6 +1455,19 @@ msgid "" "hosts = etc / 'hosts'\n" "print(hosts.session_id) # 42" msgstr "" +"from pathlib import PurePosixPath\n" +"\n" +"class MyPath(PurePosixPath):\n" +" def __init__(self, *pathsegments, session_id):\n" +" super().__init__(*pathsegments)\n" +" self.session_id = session_id\n" +"\n" +" def with_segments(self, *pathsegments):\n" +" return type(self)(*pathsegments, session_id=self.session_id)\n" +"\n" +"etc = MyPath('/etc', session_id=42)\n" +"hosts = etc / 'hosts'\n" +"print(hosts.session_id) # 42" #: ../Doc/library/pathlib.rst:751 msgid "Concrete paths" @@ -1187,14 +1491,16 @@ msgid "" "or a :class:`WindowsPath`)::" msgstr "" "Una subclase de :class:`PurePath`, esta clase representa rutas concretas de " -"la *familia* ruta del sistema (al crear una instancia crea ya sea :class:" -"`PosixPath` o :class:`WindowsPath`)::" +"la *familia* ruta del sistema (al crear una instancia crea ya " +"sea :class:`PosixPath` o :class:`WindowsPath`)::" #: ../Doc/library/pathlib.rst:763 msgid "" ">>> Path('setup.py')\n" "PosixPath('setup.py')" msgstr "" +">>> Path('setup.py')\n" +"PosixPath('setup.py')" #: ../Doc/library/pathlib.rst:770 msgid "" @@ -1209,12 +1515,16 @@ msgid "" ">>> PosixPath('/etc/hosts')\n" "PosixPath('/etc/hosts')" msgstr "" +">>> PosixPath('/etc/hosts')\n" +"PosixPath('/etc/hosts')" #: ../Doc/library/pathlib.rst:778 msgid "" -"Raises :exc:`UnsupportedOperation` on Windows. In previous versions, :exc:" -"`NotImplementedError` was raised instead." +"Raises :exc:`UnsupportedOperation` on Windows. In previous " +"versions, :exc:`NotImplementedError` was raised instead." msgstr "" +"Genera el error :exc:`UnsupportedOperation` en Windows. En versiones " +"anteriores, se generaba el error :exc:`NotImplementedError`." #: ../Doc/library/pathlib.rst:785 msgid "" @@ -1229,12 +1539,17 @@ msgid "" ">>> WindowsPath('c:/', 'Users', 'Ximénez')\n" "WindowsPath('c:/Users/Ximénez')" msgstr "" +">>> WindowsPath('c:/', 'Users', 'Ximénez')\n" +"WindowsPath('c:/Users/Ximénez')" #: ../Doc/library/pathlib.rst:793 msgid "" "Raises :exc:`UnsupportedOperation` on non-Windows platforms. In previous " "versions, :exc:`NotImplementedError` was raised instead." msgstr "" +"Genera el error :exc:`UnsupportedOperation` en plataformas que no sean " +"Windows. En versiones anteriores, se generaba el " +"error :exc:`NotImplementedError`." #: ../Doc/library/pathlib.rst:798 msgid "" @@ -1262,47 +1577,67 @@ msgid "" " % (cls.__name__,))\n" "UnsupportedOperation: cannot instantiate 'WindowsPath' on your system" msgstr "" +">>> import os\n" +">>> os.name\n" +"'posix'\n" +">>> Path('setup.py')\n" +"PosixPath('setup.py')\n" +">>> PosixPath('setup.py')\n" +"PosixPath('setup.py')\n" +">>> WindowsPath('setup.py')\n" +"Traceback (most recent call last):\n" +" File \"\", line 1, in \n" +" File \"pathlib.py\", line 798, in __new__\n" +" % (cls.__name__,))\n" +"UnsupportedOperation: cannot instantiate 'WindowsPath' on your system" #: ../Doc/library/pathlib.rst:816 -#, fuzzy msgid "" "Some concrete path methods can raise an :exc:`OSError` if a system call " "fails (for example because the path doesn't exist)." msgstr "" -"Las rutas concretas proporcionan los siguientes métodos -además de los " -"métodos de ruta puros-. Muchos de estos métodos pueden generar un :exc:" -"`OSError` si falla una llamada al sistema (por ejemplo, porque la ruta no " -"existe)." +"Algunos métodos de ruta concretos pueden generar un :exc:`OSError` si falla " +"una llamada del sistema (por ejemplo, porque la ruta no existe)." #: ../Doc/library/pathlib.rst:821 msgid "Parsing and generating URIs" -msgstr "" +msgstr "Análisis y generación de URI" #: ../Doc/library/pathlib.rst:823 msgid "" "Concrete path objects can be created from, and represented as, 'file' URIs " "conforming to :rfc:`8089`." msgstr "" +"Los objetos de ruta concretos se pueden crear y representar como URI de " +"\"archivo\" que cumplan con :rfc:`8089`." #: ../Doc/library/pathlib.rst:828 msgid "" "File URIs are not portable across machines with different :ref:`filesystem " "encodings `." msgstr "" +"Los URI de archivos no son portables entre máquinas con " +"diferentes :ref:`filesystem encodings `." #: ../Doc/library/pathlib.rst:833 msgid "Return a new path object from parsing a 'file' URI. For example::" msgstr "" +"Devuelve un nuevo objeto de ruta a partir del análisis de una URL de " +"\"archivo\". Por ejemplo:" #: ../Doc/library/pathlib.rst:835 msgid "" ">>> p = Path.from_uri('file:///etc/hosts')\n" "PosixPath('/etc/hosts')" msgstr "" +">>> p = Path.from_uri('file:///etc/hosts')\n" +"PosixPath('/etc/hosts')" #: ../Doc/library/pathlib.rst:838 msgid "On Windows, DOS device and UNC paths may be parsed from URIs::" msgstr "" +"En Windows, los dispositivos DOS y las rutas UNC se pueden analizar desde " +"las URI:" #: ../Doc/library/pathlib.rst:840 msgid "" @@ -1311,10 +1646,14 @@ msgid "" ">>> p = Path.from_uri('file://server/share')\n" "WindowsPath('//server/share')" msgstr "" +">>> p = Path.from_uri('file:///c:/windows')\n" +"WindowsPath('c:/windows')\n" +">>> p = Path.from_uri('file://server/share')\n" +"WindowsPath('//server/share')" #: ../Doc/library/pathlib.rst:845 msgid "Several variant forms are supported::" -msgstr "" +msgstr "Se admiten varias formas variantes:" #: ../Doc/library/pathlib.rst:847 msgid "" @@ -1327,21 +1666,30 @@ msgid "" ">>> p = Path.from_uri('file:/c|/windows')\n" "WindowsPath('c:/windows')" msgstr "" +">>> p = Path.from_uri('file:////server/share')\n" +"WindowsPath('//server/share')\n" +">>> p = Path.from_uri('file://///server/share')\n" +"WindowsPath('//server/share')\n" +">>> p = Path.from_uri('file:c:/windows')\n" +"WindowsPath('c:/windows')\n" +">>> p = Path.from_uri('file:/c|/windows')\n" +"WindowsPath('c:/windows')" #: ../Doc/library/pathlib.rst:856 msgid "" ":exc:`ValueError` is raised if the URI does not start with ``file:``, or the " "parsed path isn't absolute." msgstr "" +"Se genera :exc:`ValueError` si la URI no comienza con ``file:`` o la ruta " +"analizada no es absoluta." #: ../Doc/library/pathlib.rst:864 -#, fuzzy msgid "" "Represent the path as a 'file' URI. :exc:`ValueError` is raised if the path " "isn't absolute." msgstr "" -"Representa la ruta como un ``file`` URI. :exc:`ValueError` se genera si la " -"ruta no es absoluta." +"Representa la ruta como una URL de \"archivo\". Se genera :exc:`ValueError` " +"si la ruta no es absoluta." #: ../Doc/library/pathlib.rst:867 msgid "" @@ -1352,16 +1700,25 @@ msgid "" ">>> p.as_uri()\n" "'file:///c:/Windows'" msgstr "" +">>> p = PosixPath('/etc/passwd')\n" +">>> p.as_uri()\n" +"'file:///etc/passwd'\n" +">>> p = WindowsPath('c:/Windows')\n" +">>> p.as_uri()\n" +"'file:///c:/Windows'" #: ../Doc/library/pathlib.rst:876 msgid "" "For historical reasons, this method is also available from :class:`PurePath` " "objects. However, its use of :func:`os.fsencode` makes it strictly impure." msgstr "" +"Por razones históricas, este método también está disponible para " +"objetos :class:`PurePath`. Sin embargo, su uso en :func:`os.fsencode` lo " +"hace estrictamente impuro." #: ../Doc/library/pathlib.rst:882 msgid "Expanding and resolving paths" -msgstr "" +msgstr "Ampliando y resolviendo caminos" #: ../Doc/library/pathlib.rst:886 msgid "" @@ -1371,20 +1728,22 @@ msgid "" msgstr "" "Retorna un nuevo objeto ruta que representa el directorio de inicio del " "usuario (como lo retorna :func:`os.path.expanduser` con el agregado ``~``). " -"Si el directorio de inicio no se puede resolver, se lanza :exc:" -"`RuntimeError`." +"Si el directorio de inicio no se puede resolver, se " +"lanza :exc:`RuntimeError`." #: ../Doc/library/pathlib.rst:892 msgid "" ">>> Path.home()\n" "PosixPath('/home/antoine')" msgstr "" +">>> Path.home()\n" +"PosixPath('/home/antoine')" #: ../Doc/library/pathlib.rst:900 msgid "" "Return a new path with expanded ``~`` and ``~user`` constructs, as returned " -"by :meth:`os.path.expanduser`. If a home directory can't be resolved, :exc:" -"`RuntimeError` is raised." +"by :meth:`os.path.expanduser`. If a home directory can't be " +"resolved, :exc:`RuntimeError` is raised." msgstr "" "Retorna una nueva ruta con las construcciones ``~`` y ``~user`` expandidas, " "como lo retorna :meth:`os.path.expanduser`. Si el directorio de inicio no se " @@ -1396,11 +1755,14 @@ msgid "" ">>> p.expanduser()\n" "PosixPath('/home/eric/films/Monty Python')" msgstr "" +">>> p = PosixPath('~/films/Monty Python')\n" +">>> p.expanduser()\n" +"PosixPath('/home/eric/films/Monty Python')" #: ../Doc/library/pathlib.rst:915 msgid "" -"Return a new path object representing the current directory (as returned by :" -"func:`os.getcwd`)::" +"Return a new path object representing the current directory (as returned " +"by :func:`os.getcwd`)::" msgstr "" "Retorna un nuevo objeto ruta que representa el directorio actual (como lo " "retorna :func:`os.getcwd`)::" @@ -1410,6 +1772,8 @@ msgid "" ">>> Path.cwd()\n" "PosixPath('/home/antoine/pathlib')" msgstr "" +">>> Path.cwd()\n" +"PosixPath('/home/antoine/pathlib')" #: ../Doc/library/pathlib.rst:924 msgid "" @@ -1427,6 +1791,11 @@ msgid "" ">>> p.absolute()\n" "PosixPath('/home/antoine/pathlib/tests')" msgstr "" +">>> p = Path('tests')\n" +">>> p\n" +"PosixPath('tests')\n" +">>> p.absolute()\n" +"PosixPath('/home/antoine/pathlib/tests')" #: ../Doc/library/pathlib.rst:936 msgid "" @@ -1444,6 +1813,11 @@ msgid "" ">>> p.resolve()\n" "PosixPath('/home/antoine/pathlib')" msgstr "" +">>> p = Path()\n" +">>> p\n" +"PosixPath('.')\n" +">>> p.resolve()\n" +"PosixPath('/home/antoine/pathlib')" #: ../Doc/library/pathlib.rst:945 msgid "" @@ -1459,20 +1833,21 @@ msgid "" ">>> p.resolve()\n" "PosixPath('/home/antoine/pathlib/setup.py')" msgstr "" +">>> p = Path('docs/../setup.py')\n" +">>> p.resolve()\n" +"PosixPath('/home/antoine/pathlib/setup.py')" #: ../Doc/library/pathlib.rst:951 -#, fuzzy msgid "" "If a path doesn't exist or a symlink loop is encountered, and *strict* is " "``True``, :exc:`OSError` is raised. If *strict* is ``False``, the path is " "resolved as far as possible and any remainder is appended without checking " "whether it exists." msgstr "" -"Si la ruta no existe y *strict* es ``True``, se genera :exc:" -"`FileNotFoundError`. Si *strict* es ``False``, la ruta se resuelve en la " -"medida de lo posible y se agrega el resto sin verificar si existe. Si se " -"encuentra un bucle infinito en la resolución de la ruta se genera :exc:" -"`RuntimeError`." +"Si no existe una ruta o se encuentra un bucle de enlace simbólico y *strict* " +"es ``True``, se genera :exc:`OSError`. Si *strict* es ``False``, la ruta se " +"resuelve en la medida de lo posible y cualquier resto se agrega sin " +"verificar si existe." #: ../Doc/library/pathlib.rst:956 msgid "The *strict* parameter was added (pre-3.6 behavior is strict)." @@ -1485,14 +1860,18 @@ msgid "" "strict mode, and no exception is raised in non-strict mode. In previous " "versions, :exc:`RuntimeError` is raised no matter the value of *strict*." msgstr "" +"Los bucles de enlaces simbólicos se tratan como otros " +"errores: :exc:`OSError` se genera en modo estricto y no se genera ninguna " +"excepción en modo no estricto. En versiones anteriores, :exc:`RuntimeError` " +"se genera sin importar el valor de *strict*." #: ../Doc/library/pathlib.rst:967 msgid "" -"Return the path to which the symbolic link points (as returned by :func:`os." -"readlink`)::" +"Return the path to which the symbolic link points (as returned " +"by :func:`os.readlink`)::" msgstr "" -"Retorna la ruta a la que apunta el vínculo simbólico (como lo retorna :func:" -"`os.readlink`)::" +"Retorna la ruta a la que apunta el vínculo simbólico (como lo " +"retorna :func:`os.readlink`)::" #: ../Doc/library/pathlib.rst:970 msgid "" @@ -1501,43 +1880,42 @@ msgid "" ">>> p.readlink()\n" "PosixPath('setup.py')" msgstr "" +">>> p = Path('mylink')\n" +">>> p.symlink_to('setup.py')\n" +">>> p.readlink()\n" +"PosixPath('setup.py')" #: ../Doc/library/pathlib.rst:977 msgid "" "Raises :exc:`UnsupportedOperation` if :func:`os.readlink` is not available. " "In previous versions, :exc:`NotImplementedError` was raised." msgstr "" +"Genera :exc:`UnsupportedOperation` si :func:`os.readlink` no está " +"disponible. En versiones anteriores, se generaba :exc:`NotImplementedError`." #: ../Doc/library/pathlib.rst:983 msgid "Querying file type and status" -msgstr "" +msgstr "Consulta de tipo de archivo y estado" #: ../Doc/library/pathlib.rst:987 -#, fuzzy msgid "" -":meth:`~Path.exists`, :meth:`~Path.is_dir`, :meth:`~Path.is_file`, :meth:" -"`~Path.is_mount`, :meth:`~Path.is_symlink`, :meth:`~Path.is_block_device`, :" -"meth:`~Path.is_char_device`, :meth:`~Path.is_fifo`, :meth:`~Path.is_socket` " +":meth:`~Path.exists`, :meth:`~Path.is_dir`, :meth:`~Path.is_file`, :meth:`~Path.is_mount`, :meth:`~Path.is_symlink`, :meth:`~Path.is_block_device`, :meth:`~Path.is_char_device`, :meth:`~Path.is_fifo`, :meth:`~Path.is_socket` " "now return ``False`` instead of raising an exception for paths that contain " "characters unrepresentable at the OS level." msgstr "" -":meth:`~Path.exists()`, :meth:`~Path.is_dir()`, :meth:`~Path.is_file()`, :" -"meth:`~Path.is_mount()`, :meth:`~Path.is_symlink()`, :meth:`~Path." -"is_block_device()`, :meth:`~Path.is_char_device()`, :meth:`~Path." -"is_fifo()`, :meth:`~Path.is_socket()` ahora retorna ``False`` en lugar de " -"generar una excepción para las rutas que contienen caracteres que no se " -"pueden representar a nivel del sistema operativo." +":meth:`~Path.exists`, :meth:`~Path.is_dir`, :meth:`~Path.is_file`, :meth:`~Path.is_mount`, :meth:`~Path.is_symlink`, :meth:`~Path.is_block_device`, :meth:`~Path.is_char_device`, :meth:`~Path.is_fifo`, :meth:`~Path.is_socket` " +"ahora devuelven ``False`` en lugar de generar una excepción para las rutas " +"que contienen caracteres no representables en el nivel del sistema operativo." #: ../Doc/library/pathlib.rst:997 -#, fuzzy msgid "" "Return an :class:`os.stat_result` object containing information about this " "path, like :func:`os.stat`. The result is looked up at each call to this " "method." msgstr "" -"Retorna un objeto :class:`os.stat_result` que contiene información sobre " -"esta ruta, del mismo modo que :func:`os.stat`. El resultado se consulta en " -"cada llamada a este método." +"Devuelve un objeto :class:`os.stat_result` que contiene información sobre " +"esta ruta, como :func:`os.stat`. El resultado se consulta en cada llamada a " +"este método." #: ../Doc/library/pathlib.rst:1000 msgid "" @@ -1556,6 +1934,11 @@ msgid "" ">>> p.stat().st_mtime\n" "1327883547.852554" msgstr "" +">>> p = Path('setup.py')\n" +">>> p.stat().st_size\n" +"956\n" +">>> p.stat().st_mtime\n" +"1327883547.852554" #: ../Doc/library/pathlib.rst:1011 ../Doc/library/pathlib.rst:1039 #: ../Doc/library/pathlib.rst:1054 ../Doc/library/pathlib.rst:1069 @@ -1597,16 +1980,22 @@ msgid "" ">>> Path('nonexistentfile').exists()\n" "False" msgstr "" +">>> Path('.').exists()\n" +"True\n" +">>> Path('setup.py').exists()\n" +"True\n" +">>> Path('/etc').exists()\n" +"True\n" +">>> Path('nonexistentfile').exists()\n" +"False" #: ../Doc/library/pathlib.rst:1045 -#, fuzzy msgid "" "Return ``True`` if the path points to a regular file, ``False`` if it points " "to another kind of file." msgstr "" -"Retorna ``True`` si la ruta apunta a un archivo normal (o un enlace " -"simbólico que apunta a un archivo normal), ``Falso`` si apunta a otro tipo " -"de archivo." +"Devuelve ``True`` si la ruta apunta a un archivo normal, ``False`` si apunta " +"a otro tipo de archivo." #: ../Doc/library/pathlib.rst:1048 ../Doc/library/pathlib.rst:1063 #: ../Doc/library/pathlib.rst:1111 ../Doc/library/pathlib.rst:1120 @@ -1619,31 +2008,29 @@ msgstr "" "roto; se propagan otros errores (como errores de permiso)." #: ../Doc/library/pathlib.rst:1051 -#, fuzzy msgid "" "This method normally follows symlinks; to exclude symlinks, add the argument " "``follow_symlinks=False``." msgstr "" -"Este método normalmente sigue enlaces simbólicos; para comprobar si existe " -"un enlace simbólico, agregue el argumento ``follow_symlinks=False``." +"Este método normalmente sigue los enlaces simbólicos; para excluirlos, " +"agregue el argumento ``follow_symlinks=False``." #: ../Doc/library/pathlib.rst:1060 -#, fuzzy msgid "" "Return ``True`` if the path points to a directory, ``False`` if it points to " "another kind of file." msgstr "" -"Retorna ``True`` si la ruta apunta a un directorio (o un enlace simbólico " -"que apunta a un directorio), ``False`` si apunta a otro tipo de archivo." +"Devuelve ``True`` si la ruta apunta a un directorio, ``False`` si apunta a " +"otro tipo de archivo." #: ../Doc/library/pathlib.rst:1066 -#, fuzzy msgid "" "This method normally follows symlinks; to exclude symlinks to directories, " "add the argument ``follow_symlinks=False``." msgstr "" -"Este método normalmente sigue enlaces simbólicos; para comprobar si existe " -"un enlace simbólico, agregue el argumento ``follow_symlinks=False``." +"Este método normalmente sigue los enlaces simbólicos; para excluir los " +"enlaces simbólicos a directorios, agregue el argumento " +"``follow_symlinks=False``." #: ../Doc/library/pathlib.rst:1075 msgid "" @@ -1730,12 +2117,12 @@ msgstr "" #: ../Doc/library/pathlib.rst:1144 msgid "" "Return whether this path points to the same file as *other_path*, which can " -"be either a Path object, or a string. The semantics are similar to :func:" -"`os.path.samefile` and :func:`os.path.samestat`." +"be either a Path object, or a string. The semantics are similar " +"to :func:`os.path.samefile` and :func:`os.path.samestat`." msgstr "" "Retorna si la ruta apunta al mismo archivo que *other_path*, que puede ser " -"un objeto *Path* o una cadena. La semántica es similar a :func:`os.path." -"samefile` y :func:`os.path.samestat`." +"un objeto *Path* o una cadena. La semántica es similar " +"a :func:`os.path.samefile` y :func:`os.path.samestat`." #: ../Doc/library/pathlib.rst:1148 msgid "" @@ -1754,18 +2141,24 @@ msgid "" ">>> p.samefile('spam')\n" "True" msgstr "" +">>> p = Path('spam')\n" +">>> q = Path('eggs')\n" +">>> p.samefile(q)\n" +"False\n" +">>> p.samefile('spam')\n" +"True" #: ../Doc/library/pathlib.rst:1164 msgid "Reading and writing files" -msgstr "" +msgstr "Lectura y escritura de archivos" #: ../Doc/library/pathlib.rst:1169 msgid "" "Open the file pointed to by the path, like the built-in :func:`open` " "function does::" msgstr "" -"Abre el archivo señalado por la ruta, como lo hace la función incorporada :" -"func:`open`::" +"Abre el archivo señalado por la ruta, como lo hace la función " +"incorporada :func:`open`::" #: ../Doc/library/pathlib.rst:1172 msgid "" @@ -1775,6 +2168,11 @@ msgid "" "...\n" "'#!/usr/bin/env python3\\n'" msgstr "" +">>> p = Path('setup.py')\n" +">>> with p.open() as f:\n" +"... f.readline()\n" +"...\n" +"'#!/usr/bin/env python3\\n'" #: ../Doc/library/pathlib.rst:1181 msgid "Return the decoded contents of the pointed-to file as a string::" @@ -1789,6 +2187,11 @@ msgid "" ">>> p.read_text()\n" "'Text file contents'" msgstr "" +">>> p = Path('my_text_file')\n" +">>> p.write_text('Text file contents')\n" +"18\n" +">>> p.read_text()\n" +"'Text file contents'" #: ../Doc/library/pathlib.rst:1189 msgid "" @@ -1815,6 +2218,11 @@ msgid "" ">>> p.read_bytes()\n" "b'Binary file contents'" msgstr "" +">>> p = Path('my_binary_file')\n" +">>> p.write_bytes(b'Binary file contents')\n" +"20\n" +">>> p.read_bytes()\n" +"b'Binary file contents'" #: ../Doc/library/pathlib.rst:1213 msgid "" @@ -1843,9 +2251,8 @@ msgid "An existing file of the same name is overwritten." msgstr "Se sobrescribe un archivo existente con el mismo nombre." #: ../Doc/library/pathlib.rst:1248 -#, fuzzy msgid "Reading directories" -msgstr "Listado de subdirectorios::" +msgstr "Directorios de lectura" #: ../Doc/library/pathlib.rst:1252 msgid "" @@ -1868,25 +2275,36 @@ msgid "" "PosixPath('docs/_static')\n" "PosixPath('docs/Makefile')" msgstr "" +">>> p = Path('docs')\n" +">>> for child in p.iterdir(): child\n" +"...\n" +"PosixPath('docs/conf.py')\n" +"PosixPath('docs/_templates')\n" +"PosixPath('docs/make.bat')\n" +"PosixPath('docs/index.rst')\n" +"PosixPath('docs/_build')\n" +"PosixPath('docs/_static')\n" +"PosixPath('docs/Makefile')" #: ../Doc/library/pathlib.rst:1266 -#, fuzzy msgid "" "The children are yielded in arbitrary order, and the special entries ``'.'`` " "and ``'..'`` are not included. If a file is removed from or added to the " "directory after creating the iterator, it is unspecified whether a path " "object for that file is included." msgstr "" -"Los hijos se generan en orden arbitrario y las entradas especiales ``'.'`` y " -"``'..'`` no están incluidas. Si un archivo se elimina o se agrega al " -"directorio después de crear el iterador, no se especifica si se incluirá un " -"objeto de ruta para ese archivo." +"Los elementos secundarios se obtienen en un orden arbitrario y no se " +"incluyen las entradas especiales ``'.'`` y ``'..'``. Si se elimina o se " +"agrega un archivo al directorio después de crear el iterador, no se " +"especifica si se incluye un objeto de ruta para ese archivo." #: ../Doc/library/pathlib.rst:1271 msgid "" "If the path is not a directory or otherwise inaccessible, :exc:`OSError` is " "raised." msgstr "" +"Si la ruta no es un directorio o es inaccesible por algún motivo, se " +"genera :exc:`OSError`." #: ../Doc/library/pathlib.rst:1276 msgid "" @@ -1899,8 +2317,8 @@ msgstr "" #: ../Doc/library/pathlib.rst:1279 msgid "" ">>> sorted(Path('.').glob('*.py'))\n" -"[PosixPath('pathlib.py'), PosixPath('setup.py'), PosixPath('test_pathlib." -"py')]\n" +"[PosixPath('pathlib.py'), PosixPath('setup.py'), " +"PosixPath('test_pathlib.py')]\n" ">>> sorted(Path('.').glob('*/*.py'))\n" "[PosixPath('docs/conf.py')]\n" ">>> sorted(Path('.').glob('**/*.py'))\n" @@ -1910,6 +2328,17 @@ msgid "" " PosixPath('setup.py'),\n" " PosixPath('test_pathlib.py')]" msgstr "" +">>> sorted(Path('.').glob('*.py'))\n" +"[PosixPath('pathlib.py'), PosixPath('setup.py'), " +"PosixPath('test_pathlib.py')]\n" +">>> sorted(Path('.').glob('*/*.py'))\n" +"[PosixPath('docs/conf.py')]\n" +">>> sorted(Path('.').glob('**/*.py'))\n" +"[PosixPath('build/lib/pathlib.py'),\n" +" PosixPath('docs/conf.py'),\n" +" PosixPath('pathlib.py'),\n" +" PosixPath('setup.py'),\n" +" PosixPath('test_pathlib.py')]" #: ../Doc/library/pathlib.rst:1293 msgid "" @@ -1931,6 +2360,10 @@ msgid "" "``False``, this method follows symlinks except when expanding \"``**``\" " "wildcards. Set *recurse_symlinks* to ``True`` to always follow symlinks." msgstr "" +"De forma predeterminada, o cuando el argumento de palabra clave " +"*recurse_symlinks* se establece en ``False``, este método sigue los enlaces " +"simbólicos excepto cuando se expanden los comodines \"``**``\". Establezca " +"*recurse_symlinks* en ``True`` para seguir siempre los enlaces simbólicos." #: ../Doc/library/pathlib.rst:1302 msgid "" @@ -1941,9 +2374,8 @@ msgstr "" "argumentos ``self``, ``pattern``." #: ../Doc/library/pathlib.rst:1307 ../Doc/library/pathlib.rst:1332 -#, fuzzy msgid "The *recurse_symlinks* parameter was added." -msgstr "Se agregó el parámetro *follow_symlinks*." +msgstr "Se agregó el parámetro *recurse_symlinks*." #: ../Doc/library/pathlib.rst:1313 msgid "" @@ -1951,20 +2383,21 @@ msgid "" "suppressed. In previous versions, such exceptions are suppressed in many " "cases, but not all." msgstr "" +"Se suprimen todas las excepciones :exc:`OSError` generadas al escanear el " +"sistema de archivos. En versiones anteriores, dichas excepciones se " +"suprimían en muchos casos, pero no en todos." #: ../Doc/library/pathlib.rst:1321 -#, fuzzy msgid "" -"Glob the given relative *pattern* recursively. This is like calling :func:" -"`Path.glob` with \"``**/``\" added in front of the *pattern*." +"Glob the given relative *pattern* recursively. This is like " +"calling :func:`Path.glob` with \"``**/``\" added in front of the *pattern*." msgstr "" -"Agrupa el *pattern* relativo dado de forma recursiva. Esto es como llamar a :" -"func:`Path.glob` con \"``**/``\" agregado antes del *pattern*, donde los " -"*patterns* son los mismos que para :mod:`fnmatch`::" +"Incorpore de forma recursiva el *pattern* relativo dado. Es como llamar " +"a :func:`Path.glob` con \"``**/``\" agregado delante de *pattern*." #: ../Doc/library/pathlib.rst:1325 msgid ":ref:`pathlib-pattern-language` and :meth:`Path.glob` documentation." -msgstr "" +msgstr "Documentación :ref:`pathlib-pattern-language` y :meth:`Path.glob`." #: ../Doc/library/pathlib.rst:1327 msgid "" @@ -2029,28 +2462,29 @@ msgstr "" "las tripletas del directorio y sus subdirectorios." #: ../Doc/library/pathlib.rst:1364 -#, fuzzy msgid "" "When *top_down* is true, the caller can modify the *dirnames* list in-place " -"(for example, using :keyword:`del` or slice assignment), and :meth:`Path." -"walk` will only recurse into the subdirectories whose names remain in " -"*dirnames*. This can be used to prune the search, or to impose a specific " -"order of visiting, or even to inform :meth:`Path.walk` about directories the " -"caller creates or renames before it resumes :meth:`Path.walk` again. " -"Modifying *dirnames* when *top_down* is false has no effect on the behavior " -"of :meth:`Path.walk` since the directories in *dirnames* have already been " -"generated by the time *dirnames* is yielded to the caller." +"(for example, using :keyword:`del` or slice assignment), " +"and :meth:`Path.walk` will only recurse into the subdirectories whose names " +"remain in *dirnames*. This can be used to prune the search, or to impose a " +"specific order of visiting, or even to inform :meth:`Path.walk` about " +"directories the caller creates or renames before it " +"resumes :meth:`Path.walk` again. Modifying *dirnames* when *top_down* is " +"false has no effect on the behavior of :meth:`Path.walk` since the " +"directories in *dirnames* have already been generated by the time *dirnames* " +"is yielded to the caller." msgstr "" "Cuando *top_down* es verdadero, el llamador puede modificar la lista " -"*dirnames* en el lugar (por ejemplo, al usar :keyword:`del` o la asignación " -"de segmentos), y :meth:`Path.walk` solo recurrirá a los subdirectorios cuyos " -"nombres permanezcan en *dirnames*. Esto se puede usar para reducir la " -"búsqueda, o para imponer un orden específico de visita, o incluso para " -"informar a :meth:`Path.walk` sobre los directorios que el llamador crea o " -"renombra antes de que reanude :meth:`Path.walk` nuevamente. Modificar " -"*dirnames* cuando *top_down* es falso no tiene efecto en el comportamiento " -"de :meth:`Path.walk()` ya que los directorios en *dirnames* ya se han " -"generado en el momento en que *dirnames* se entrega al llamador." +"*dirnames* en el lugar (por ejemplo, utilizando :keyword:`del` o la " +"asignación de sectores), y :meth:`Path.walk` solo recurrirá a los " +"subdirectorios cuyos nombres permanezcan en *dirnames*. Esto se puede " +"utilizar para podar la búsqueda, o para imponer un orden específico de " +"visita, o incluso para informar a :meth:`Path.walk` sobre los directorios " +"que el llamador crea o renombra antes de reanudar :meth:`Path.walk` " +"nuevamente. Modificar *dirnames* cuando *top_down* es falso no tiene ningún " +"efecto sobre el comportamiento de :meth:`Path.walk` ya que los directorios " +"en *dirnames* ya se han generado en el momento en que *dirnames* se cede al " +"llamador." #: ../Doc/library/pathlib.rst:1374 msgid "" @@ -2085,8 +2519,9 @@ msgstr "" #: ../Doc/library/pathlib.rst:1387 msgid "" "Be aware that setting *follow_symlinks* to true can lead to infinite " -"recursion if a link points to a parent directory of itself. :meth:`Path." -"walk` does not keep track of the directories it has already visited." +"recursion if a link points to a parent directory of " +"itself. :meth:`Path.walk` does not keep track of the directories it has " +"already visited." msgstr "" "Tener en cuenta que establecer *follow_symlinks* como verdadero puede " "generar una recursión infinita si un enlace apunta a un directorio principal " @@ -2103,9 +2538,9 @@ msgid "" msgstr "" ":meth:`Path.walk` asume que los directorios que recorre no se modifican " "durante la ejecución. Por ejemplo, si un directorio de *dirnames* ha sido " -"reemplazado por un enlace simbólico y *follow_symlinks* es falso, :meth:" -"`Path.walk` intentará descender a él. Para evitar este comportamiento, " -"elimine los directorios de *dirnames* según corresponda." +"reemplazado por un enlace simbólico y *follow_symlinks* es " +"falso, :meth:`Path.walk` intentará descender a él. Para evitar este " +"comportamiento, elimine los directorios de *dirnames* según corresponda." #: ../Doc/library/pathlib.rst:1400 msgid "" @@ -2126,8 +2561,8 @@ msgstr "" #: ../Doc/library/pathlib.rst:1406 msgid "" "from pathlib import Path\n" -"for root, dirs, files in Path(\"cpython/Lib/concurrent\")." -"walk(on_error=print):\n" +"for root, dirs, files in Path(\"cpython/Lib/" +"concurrent\").walk(on_error=print):\n" " print(\n" " root,\n" " \"consumes\",\n" @@ -2139,6 +2574,19 @@ msgid "" " if '__pycache__' in dirs:\n" " dirs.remove('__pycache__')" msgstr "" +"from pathlib import Path\n" +"for root, dirs, files in Path(\"cpython/Lib/" +"concurrent\").walk(on_error=print):\n" +" print(\n" +" root,\n" +" \"consumes\",\n" +" sum((root / file).stat().st_size for file in files),\n" +" \"bytes in\",\n" +" len(files),\n" +" \"non-directory files\"\n" +" )\n" +" if '__pycache__' in dirs:\n" +" dirs.remove('__pycache__')" #: ../Doc/library/pathlib.rst:1419 msgid "" @@ -2161,44 +2609,52 @@ msgid "" " for name in dirs:\n" " (root / name).rmdir()" msgstr "" +"# Delete everything reachable from the directory \"top\".\n" +"# CAUTION: This is dangerous! For example, if top == Path('/'),\n" +"# it could delete all of your files.\n" +"for root, dirs, files in top.walk(top_down=False):\n" +" for name in files:\n" +" (root / name).unlink()\n" +" for name in dirs:\n" +" (root / name).rmdir()" #: ../Doc/library/pathlib.rst:1436 -#, fuzzy msgid "Creating files and directories" -msgstr "Listado de subdirectorios::" +msgstr "Creando archivos y directorios" #: ../Doc/library/pathlib.rst:1440 -#, fuzzy msgid "" "Create a file at this given path. If *mode* is given, it is combined with " "the process's ``umask`` value to determine the file mode and access flags. " "If the file already exists, the function succeeds when *exist_ok* is true " -"(and its modification time is updated to the current time), otherwise :exc:" -"`FileExistsError` is raised." +"(and its modification time is updated to the current time), " +"otherwise :exc:`FileExistsError` is raised." msgstr "" -"Crea un archivo en la ruta dada. Si se proporciona *mode*, se combina con el " -"valor del proceso ``umask`` para determinar el modo de archivo y los " -"indicadores de acceso. Si el archivo ya existe, la función tiene éxito si " -"*exist_ok* es verdadero (y su hora de modificación se actualiza a la hora " -"actual), de lo contrario se genera :exc:`FileExistsError`." +"Crea un archivo en esta ruta dada. Si se proporciona *mode*, se combina con " +"el valor ``umask`` del proceso para determinar el modo de archivo y los " +"indicadores de acceso. Si el archivo ya existe, la función se ejecuta " +"correctamente cuando *exist_ok* es verdadero (y su hora de modificación se " +"actualiza a la hora actual); de lo contrario, se " +"genera :exc:`FileExistsError`." #: ../Doc/library/pathlib.rst:1447 msgid "" -"The :meth:`~Path.open`, :meth:`~Path.write_text` and :meth:`~Path." -"write_bytes` methods are often used to create files." +"The :meth:`~Path.open`, :meth:`~Path.write_text` " +"and :meth:`~Path.write_bytes` methods are often used to create files." msgstr "" +"Los métodos :meth:`~Path.open`, :meth:`~Path.write_text` " +"y :meth:`~Path.write_bytes` se utilizan a menudo para crear archivos." #: ../Doc/library/pathlib.rst:1453 -#, fuzzy msgid "" "Create a new directory at this given path. If *mode* is given, it is " "combined with the process's ``umask`` value to determine the file mode and " "access flags. If the path already exists, :exc:`FileExistsError` is raised." msgstr "" -"Crea un nuevo directorio en la ruta dada. Si se proporciona *mode*, se " -"combina con el valor del proceso ``umask`` para determinar el modo de " -"archivo y los derechos de acceso. Si la ruta ya existe, se genera :exc:" -"`FileExistsError`." +"Crea un nuevo directorio en esta ruta indicada. Si se proporciona *mode*, se " +"combina con el valor ``umask`` del proceso para determinar el modo de " +"archivo y los indicadores de acceso. Si la ruta ya existe, se " +"genera :exc:`FileExistsError`." #: ../Doc/library/pathlib.rst:1458 msgid "" @@ -2212,8 +2668,8 @@ msgstr "" #: ../Doc/library/pathlib.rst:1462 msgid "" -"If *parents* is false (the default), a missing parent raises :exc:" -"`FileNotFoundError`." +"If *parents* is false (the default), a missing parent " +"raises :exc:`FileNotFoundError`." msgstr "" "Si *parents* es falso (el valor predeterminado), se genera un padre que " "falta :exc:`FileNotFoundError`." @@ -2223,28 +2679,26 @@ msgid "" "If *exist_ok* is false (the default), :exc:`FileExistsError` is raised if " "the target directory already exists." msgstr "" -"Si *exist_ok* es falso (el valor predeterminado), se genera :exc:" -"`FileExistsError` si el directorio de destino ya existe." +"Si *exist_ok* es falso (el valor predeterminado), se " +"genera :exc:`FileExistsError` si el directorio de destino ya existe." #: ../Doc/library/pathlib.rst:1468 -#, fuzzy msgid "" "If *exist_ok* is true, :exc:`FileExistsError` will not be raised unless the " "given path already exists in the file system and is not a directory (same " "behavior as the POSIX ``mkdir -p`` command)." msgstr "" -"Si *missing_ok* es verdadero, las excepciones :exc:`FileNotFoundError` serán " -"ignoradas (el mismo comportamiento que el comando POSIX ``rm -f``)." +"Si *exist_ok* es verdadero, no se generará :exc:`FileExistsError` a menos " +"que la ruta dada ya exista en el sistema de archivos y no sea un directorio " +"(el mismo comportamiento que el comando POSIX ``mkdir -p``)." #: ../Doc/library/pathlib.rst:1472 msgid "The *exist_ok* parameter was added." msgstr "Se agregó el parámetro *exist_ok*." #: ../Doc/library/pathlib.rst:1478 -#, fuzzy msgid "Make this path a symbolic link pointing to *target*." -msgstr "" -"Hace de esta ruta un enlace fijo que apunta al mismo archivo que *target*." +msgstr "Convierte esta ruta en un enlace simbólico que apunte a *target*." #: ../Doc/library/pathlib.rst:1480 msgid "" @@ -2254,6 +2708,13 @@ msgid "" "a directory if *target_is_directory* is true or a file symlink (the default) " "otherwise. On non-Windows platforms, *target_is_directory* is ignored." msgstr "" +"En Windows, un enlace simbólico representa un archivo o un directorio y no " +"se transforma en el destino de forma dinámica. Si el destino está presente, " +"se creará el tipo de enlace simbólico para que coincida. De lo contrario, el " +"enlace simbólico se creará como un directorio si *target_is_directory* es " +"verdadero o como un enlace simbólico de archivo (el valor predeterminado) en " +"caso contrario. En plataformas que no sean Windows, se ignora " +"*target_is_directory*." #: ../Doc/library/pathlib.rst:1488 msgid "" @@ -2266,19 +2727,29 @@ msgid "" ">>> p.lstat().st_size\n" "8" msgstr "" +">>> p = Path('mylink')\n" +">>> p.symlink_to('setup.py')\n" +">>> p.resolve()\n" +"PosixPath('/home/antoine/pathlib/setup.py')\n" +">>> p.stat().st_size\n" +"956\n" +">>> p.lstat().st_size\n" +"8" #: ../Doc/library/pathlib.rst:1498 msgid "" "The order of arguments (link, target) is the reverse of :func:`os.symlink`'s." msgstr "" -"El orden de los argumentos (*link*, *target*) es el reverso de :func:`os." -"symlink`'s." +"El orden de los argumentos (*link*, *target*) es el reverso " +"de :func:`os.symlink`'s." #: ../Doc/library/pathlib.rst:1501 msgid "" "Raises :exc:`UnsupportedOperation` if :func:`os.symlink` is not available. " "In previous versions, :exc:`NotImplementedError` was raised." msgstr "" +"Genera :exc:`UnsupportedOperation` si :func:`os.symlink` no está disponible. " +"En versiones anteriores, se generaba :exc:`NotImplementedError`." #: ../Doc/library/pathlib.rst:1508 msgid "Make this path a hard link to the same file as *target*." @@ -2296,25 +2767,27 @@ msgid "" "Raises :exc:`UnsupportedOperation` if :func:`os.link` is not available. In " "previous versions, :exc:`NotImplementedError` was raised." msgstr "" +"Genera :exc:`UnsupportedOperation` si :func:`os.link` no está disponible. En " +"versiones anteriores, se generaba :exc:`NotImplementedError`." #: ../Doc/library/pathlib.rst:1522 msgid "Renaming and deleting" -msgstr "" +msgstr "Cambiar nombre y eliminar" #: ../Doc/library/pathlib.rst:1526 -#, fuzzy msgid "" -"Rename this file or directory to the given *target*, and return a new :class:" -"`!Path` instance pointing to *target*. On Unix, if *target* exists and is a " -"file, it will be replaced silently if the user has permission. On Windows, " -"if *target* exists, :exc:`FileExistsError` will be raised. *target* can be " -"either a string or another path object::" +"Rename this file or directory to the given *target*, and return a " +"new :class:`!Path` instance pointing to *target*. On Unix, if *target* " +"exists and is a file, it will be replaced silently if the user has " +"permission. On Windows, if *target* exists, :exc:`FileExistsError` will be " +"raised. *target* can be either a string or another path object::" msgstr "" -"Cambia el nombre de este archivo o directorio al *target* dado y retorna una " -"nueva instancia de *Path* apuntando al *target*. En Unix, si el *target* " -"existe y es un archivo, se reemplazará silenciosamente si el usuario tiene " -"permiso. En Windows, si el *target* existe, se lanzará una excepción :exc:" -"`FileExistsError`. El *target* puede ser una cadena u otro objeto de ruta:" +"Cambie el nombre de este archivo o directorio al *target* indicado y " +"devuelva una nueva instancia de :class:`!Path` que apunte a *target*. En " +"Unix, si *target* existe y es un archivo, se reemplazará de forma silenciosa " +"si el usuario tiene permiso. En Windows, si *target* existe, se " +"generará :exc:`FileExistsError`. *target* puede ser una cadena u otro objeto " +"de ruta:" #: ../Doc/library/pathlib.rst:1532 msgid "" @@ -2327,17 +2800,24 @@ msgid "" ">>> target.open().read()\n" "'some text'" msgstr "" +">>> p = Path('foo')\n" +">>> p.open('w').write('some text')\n" +"9\n" +">>> target = Path('bar')\n" +">>> p.rename(target)\n" +"PosixPath('bar')\n" +">>> target.open().read()\n" +"'some text'" #: ../Doc/library/pathlib.rst:1541 ../Doc/library/pathlib.rst:1557 -#, fuzzy msgid "" "The target path may be absolute or relative. Relative paths are interpreted " -"relative to the current working directory, *not* the directory of the :class:" -"`!Path` object." +"relative to the current working directory, *not* the directory of " +"the :class:`!Path` object." msgstr "" -"La ruta de destino puede ser absoluta o relativa. Las rutas de acceso " -"relativas se interpretan en relación con el directorio de trabajo actual, " -"*no* el directorio del objeto Path." +"La ruta de destino puede ser absoluta o relativa. Las rutas relativas se " +"interpretan en relación con el directorio de trabajo actual, *not* el " +"directorio del objeto :class:`!Path`." #: ../Doc/library/pathlib.rst:1545 msgid "" @@ -2347,25 +2827,25 @@ msgstr "" "Se implementa en términos de :func:`os.rename` y ofrece las mismas garantías." #: ../Doc/library/pathlib.rst:1547 ../Doc/library/pathlib.rst:1561 -#, fuzzy msgid "Added return value, return the new :class:`!Path` instance." -msgstr "Valor de retorno agregado, retorna la nueva instancia de *Path*." +msgstr "" +"Se agregó valor de retorno, devuelve la nueva instancia :class:`!Path`." #: ../Doc/library/pathlib.rst:1553 -#, fuzzy msgid "" -"Rename this file or directory to the given *target*, and return a new :class:" -"`!Path` instance pointing to *target*. If *target* points to an existing " -"file or empty directory, it will be unconditionally replaced." +"Rename this file or directory to the given *target*, and return a " +"new :class:`!Path` instance pointing to *target*. If *target* points to an " +"existing file or empty directory, it will be unconditionally replaced." msgstr "" -"Cambia el nombre de este archivo o directorio al *target* dado y retorna una " -"nueva instancia de *Path* que apunte a *target*. Si *target* apunta a un " -"archivo existente o a un directorio vacío, se reemplazará incondicionalmente." +"Cambie el nombre de este archivo o directorio por el *target* indicado y " +"devuelva una nueva instancia de :class:`!Path` que apunte a *target*. Si " +"*target* apunta a un archivo existente o a un directorio vacío, se " +"reemplazará sin condiciones." #: ../Doc/library/pathlib.rst:1567 msgid "" -"Remove this file or symbolic link. If the path points to a directory, use :" -"func:`Path.rmdir` instead." +"Remove this file or symbolic link. If the path points to a directory, " +"use :func:`Path.rmdir` instead." msgstr "" "Elimine el archivo o enlace simbólico. Si la ruta apunta a un directorio, " "use :func:`Path.rmdir` en su lugar." @@ -2375,8 +2855,8 @@ msgid "" "If *missing_ok* is false (the default), :exc:`FileNotFoundError` is raised " "if the path does not exist." msgstr "" -"Si *missing_ok* es falso (el valor predeterminado), se genera :exc:" -"`FileNotFoundError` si la ruta no existe." +"Si *missing_ok* es falso (el valor predeterminado), se " +"genera :exc:`FileNotFoundError` si la ruta no existe." #: ../Doc/library/pathlib.rst:1573 msgid "" @@ -2396,57 +2876,58 @@ msgstr "Elimina el directorio. El directorio debe estar vacío." #: ../Doc/library/pathlib.rst:1586 msgid "Permissions and ownership" -msgstr "" +msgstr "Permisos y propiedad" #: ../Doc/library/pathlib.rst:1590 -#, fuzzy msgid "" "Return the name of the user owning the file. :exc:`KeyError` is raised if " "the file's user identifier (UID) isn't found in the system database." msgstr "" -"Retorna el nombre del usuario propietario del archivo. :exc:`KeyError` se " -"genera si el *uid* del archivo no se encuentra en la base de datos del " -"sistema." +"Devuelve el nombre del usuario propietario del archivo. Se genera el " +"error :exc:`KeyError` si el identificador de usuario (UID) del archivo no se " +"encuentra en la base de datos del sistema." #: ../Doc/library/pathlib.rst:1593 -#, fuzzy msgid "" "This method normally follows symlinks; to get the owner of the symlink, add " "the argument ``follow_symlinks=False``." msgstr "" -"Este método normalmente sigue enlaces simbólicos; para comprobar si existe " -"un enlace simbólico, agregue el argumento ``follow_symlinks=False``." +"Este método normalmente sigue enlaces simbólicos; para obtener el " +"propietario del enlace simbólico, agregue el argumento " +"``follow_symlinks=False``." #: ../Doc/library/pathlib.rst:1596 msgid "" "Raises :exc:`UnsupportedOperation` if the :mod:`pwd` module is not " "available. In earlier versions, :exc:`NotImplementedError` was raised." msgstr "" +"Genera :exc:`UnsupportedOperation` si el módulo :mod:`pwd` no está " +"disponible. En versiones anteriores, se generaba :exc:`NotImplementedError`." #: ../Doc/library/pathlib.rst:1606 -#, fuzzy msgid "" "Return the name of the group owning the file. :exc:`KeyError` is raised if " "the file's group identifier (GID) isn't found in the system database." msgstr "" -"Retorna el nombre del grupo propietario del archivo. :exc:`KeyError` se " -"genera si el *gid* del archivo no se encuentra en la base de datos del " -"sistema." +"Devuelve el nombre del grupo propietario del archivo. Se " +"genera :exc:`KeyError` si no se encuentra el identificador de grupo (GID) " +"del archivo en la base de datos del sistema." #: ../Doc/library/pathlib.rst:1609 -#, fuzzy msgid "" "This method normally follows symlinks; to get the group of the symlink, add " "the argument ``follow_symlinks=False``." msgstr "" -"Este método normalmente sigue enlaces simbólicos; para comprobar si existe " -"un enlace simbólico, agregue el argumento ``follow_symlinks=False``." +"Este método normalmente sigue enlaces simbólicos; para obtener el grupo del " +"enlace simbólico, agregue el argumento ``follow_symlinks=False``." #: ../Doc/library/pathlib.rst:1612 msgid "" "Raises :exc:`UnsupportedOperation` if the :mod:`grp` module is not " "available. In earlier versions, :exc:`NotImplementedError` was raised." msgstr "" +"Genera :exc:`UnsupportedOperation` si el módulo :mod:`grp` no está " +"disponible. En versiones anteriores, se generaba :exc:`NotImplementedError`." #: ../Doc/library/pathlib.rst:1622 msgid "Change the file mode and permissions, like :func:`os.chmod`." @@ -2460,8 +2941,8 @@ msgid "" msgstr "" "Este método normalmente sigue enlaces simbólicos. Algunas versiones de Unix " "admiten el cambio de permisos en el enlace simbólico en sí; en estas " -"plataformas puede agregar el argumento ``follow_symlinks=False``, o usar :" -"meth:`~Path.lchmod`." +"plataformas puede agregar el argumento ``follow_symlinks=False``, o " +"usar :meth:`~Path.lchmod`." #: ../Doc/library/pathlib.rst:1630 msgid "" @@ -2472,6 +2953,12 @@ msgid "" ">>> p.stat().st_mode\n" "33060" msgstr "" +">>> p = Path('setup.py')\n" +">>> p.stat().st_mode\n" +"33277\n" +">>> p.chmod(0o444)\n" +">>> p.stat().st_mode\n" +"33060" #: ../Doc/library/pathlib.rst:1643 msgid "" @@ -2483,162 +2970,184 @@ msgstr "" #: ../Doc/library/pathlib.rst:1650 msgid "Pattern language" -msgstr "" +msgstr "Lenguaje de patrones" #: ../Doc/library/pathlib.rst:1652 msgid "" -"The following wildcards are supported in patterns for :meth:`~PurePath." -"full_match`, :meth:`~Path.glob` and :meth:`~Path.rglob`:" +"The following wildcards are supported in patterns " +"for :meth:`~PurePath.full_match`, :meth:`~Path.glob` and :meth:`~Path.rglob`:" msgstr "" +"Los siguientes comodines son compatibles con los patrones " +"para :meth:`~PurePath.full_match`, :meth:`~Path.glob` y :meth:`~Path.rglob`:" #: ../Doc/library/pathlib.rst:1655 msgid "``**`` (entire segment)" -msgstr "" +msgstr "``**`` (segmento completo)" #: ../Doc/library/pathlib.rst:1656 msgid "Matches any number of file or directory segments, including zero." msgstr "" +"Coincide con cualquier número de segmentos de archivo o directorio, incluido " +"cero." #: ../Doc/library/pathlib.rst:1657 msgid "``*`` (entire segment)" -msgstr "" +msgstr "``*`` (segmento completo)" #: ../Doc/library/pathlib.rst:1658 msgid "Matches one file or directory segment." -msgstr "" +msgstr "Coincide con un segmento de archivo o directorio." #: ../Doc/library/pathlib.rst:1659 msgid "``*`` (part of a segment)" -msgstr "" +msgstr "``*`` (parte de un segmento)" #: ../Doc/library/pathlib.rst:1660 msgid "Matches any number of non-separator characters, including zero." msgstr "" +"Coincide con cualquier número de caracteres no separadores, incluido el cero." #: ../Doc/library/pathlib.rst:1661 msgid "``?``" -msgstr "" +msgstr "``?``" #: ../Doc/library/pathlib.rst:1662 msgid "Matches one non-separator character." -msgstr "" +msgstr "Coincide con un carácter no separador." #: ../Doc/library/pathlib.rst:1663 msgid "``[seq]``" -msgstr "" +msgstr "``[seq]``" #: ../Doc/library/pathlib.rst:1664 msgid "Matches one character in *seq*." -msgstr "" +msgstr "Coincide con un carácter en *seq*." #: ../Doc/library/pathlib.rst:1666 msgid "``[!seq]``" -msgstr "" +msgstr "``[!seq]``" #: ../Doc/library/pathlib.rst:1666 msgid "Matches one character not in *seq*." -msgstr "" +msgstr "Coincide con un carácter que no está en *seq*." #: ../Doc/library/pathlib.rst:1668 msgid "" "For a literal match, wrap the meta-characters in brackets. For example, " "``\"[?]\"`` matches the character ``\"?\"``." msgstr "" +"Para una coincidencia literal, encierre los metacaracteres entre corchetes. " +"Por ejemplo, ``\"[?]\"`` coincide con el carácter ``\"?\"``." #: ../Doc/library/pathlib.rst:1671 msgid "The \"``**``\" wildcard enables recursive globbing. A few examples:" msgstr "" +"El comodín \"``**``\" permite la codificación recursiva. Algunos ejemplos:" #: ../Doc/library/pathlib.rst:1674 msgid "Pattern" -msgstr "" +msgstr "Patrón" #: ../Doc/library/pathlib.rst:1674 msgid "Meaning" -msgstr "" +msgstr "Significado" #: ../Doc/library/pathlib.rst:1676 msgid "\"``**/*``\"" -msgstr "" +msgstr "\"``**/*``\"" #: ../Doc/library/pathlib.rst:1676 msgid "Any path with at least one segment." -msgstr "" +msgstr "Cualquier camino con al menos un segmento." #: ../Doc/library/pathlib.rst:1677 msgid "\"``**/*.py``\"" -msgstr "" +msgstr "\"``**/*.py``\"" #: ../Doc/library/pathlib.rst:1677 msgid "Any path with a final segment ending \"``.py``\"." -msgstr "" +msgstr "Cualquier ruta con un segmento final que termine \"``.py``\"." #: ../Doc/library/pathlib.rst:1678 msgid "\"``assets/**``\"" -msgstr "" +msgstr "\"``assets/**``\"" #: ../Doc/library/pathlib.rst:1678 msgid "Any path starting with \"``assets/``\"." -msgstr "" +msgstr "Cualquier ruta que comience con \"``assets/``\"." #: ../Doc/library/pathlib.rst:1679 msgid "\"``assets/**/*``\"" -msgstr "" +msgstr "\"``assets/**/*``\"" #: ../Doc/library/pathlib.rst:1679 msgid "" "Any path starting with \"``assets/``\", excluding \"``assets/``\" itself." msgstr "" +"Cualquier ruta que comience con \"``assets/``\", excluyendo \"``assets/``\" " +"en sí." #: ../Doc/library/pathlib.rst:1683 msgid "" "Globbing with the \"``**``\" wildcard visits every directory in the tree. " "Large directory trees may take a long time to search." msgstr "" +"Al utilizar el comodín \"``**``\", se visitan todos los directorios del " +"árbol. Las búsquedas en árboles de directorios grandes pueden llevar mucho " +"tiempo." #: ../Doc/library/pathlib.rst:1686 msgid "" "Globbing with a pattern that ends with \"``**``\" returns both files and " "directories. In previous versions, only directories were returned." msgstr "" +"La codificación con un patrón que termina en \"``**``\" devuelve tanto " +"archivos como directorios. En versiones anteriores, solo se devolvían " +"directorios." #: ../Doc/library/pathlib.rst:1690 msgid "" "In :meth:`Path.glob` and :meth:`~Path.rglob`, a trailing slash may be added " "to the pattern to match only directories." msgstr "" +"En :meth:`Path.glob` y :meth:`~Path.rglob`, se puede agregar una barra " +"diagonal final al patrón para que coincida solo con directorios." #: ../Doc/library/pathlib.rst:1693 -#, fuzzy msgid "" -"Globbing with a pattern that ends with a pathname components separator (:" -"data:`~os.sep` or :data:`~os.altsep`) returns only directories." +"Globbing with a pattern that ends with a pathname components separator " +"(:data:`~os.sep` or :data:`~os.altsep`) returns only directories." msgstr "" -"Retorna solo directorios si *pattern* termina con un separador de " -"componentes de nombre de ruta (:data:`~os.sep` o :data:`~os.altsep`)." +"El uso de un patrón que termina con un separador de componentes de ruta de " +"acceso (:data:`~os.sep` o :data:`~os.altsep`) solo devuelve directorios." #: ../Doc/library/pathlib.rst:1699 -#, fuzzy msgid "Comparison to the :mod:`glob` module" -msgstr "Correspondencia a herramientas en el módulo :mod:`os`" +msgstr "Comparación con el módulo :mod:`glob`" #: ../Doc/library/pathlib.rst:1701 msgid "" -"The patterns accepted and results generated by :meth:`Path.glob` and :meth:" -"`Path.rglob` differ slightly from those by the :mod:`glob` module:" +"The patterns accepted and results generated by :meth:`Path.glob` " +"and :meth:`Path.rglob` differ slightly from those by the :mod:`glob` module:" msgstr "" +"Los patrones aceptados y los resultados generados por :meth:`Path.glob` " +"y :meth:`Path.rglob` difieren ligeramente de los del módulo :mod:`glob`:" #: ../Doc/library/pathlib.rst:1704 msgid "" "Files beginning with a dot are not special in pathlib. This is like passing " "``include_hidden=True`` to :func:`glob.glob`." msgstr "" +"Los archivos que comienzan con un punto no son especiales en pathlib. Es " +"como pasar ``include_hidden=True`` a :func:`glob.glob`." #: ../Doc/library/pathlib.rst:1706 msgid "" "\"``**``\" pattern components are always recursive in pathlib. This is like " "passing ``recursive=True`` to :func:`glob.glob`." msgstr "" +"Los componentes del patrón \"``**``\" siempre son recursivos en pathlib. " +"Esto es como pasar ``recursive=True`` a :func:`glob.glob`." #: ../Doc/library/pathlib.rst:1708 msgid "" @@ -2646,19 +3155,29 @@ msgid "" "This behaviour has no equivalent in :func:`glob.glob`, but you can pass " "``recurse_symlinks=True`` to :meth:`Path.glob` for compatible behaviour." msgstr "" +"Los componentes del patrón \"``**``\" no siguen los enlaces simbólicos de " +"forma predeterminada en pathlib. Este comportamiento no tiene equivalente " +"en :func:`glob.glob`, pero puede pasar ``recurse_symlinks=True`` " +"a :meth:`Path.glob` para lograr un comportamiento compatible." #: ../Doc/library/pathlib.rst:1711 msgid "" "Like all :class:`PurePath` and :class:`Path` objects, the values returned " "from :meth:`Path.glob` and :meth:`Path.rglob` don't include trailing slashes." msgstr "" +"Al igual que todos los objetos :class:`PurePath` y :class:`Path`, los " +"valores devueltos por :meth:`Path.glob` y :meth:`Path.rglob` no incluyen " +"barras diagonales finales." #: ../Doc/library/pathlib.rst:1714 msgid "" "The values returned from pathlib's ``path.glob()`` and ``path.rglob()`` " -"include the *path* as a prefix, unlike the results of ``glob." -"glob(root_dir=path)``." +"include the *path* as a prefix, unlike the results of " +"``glob.glob(root_dir=path)``." msgstr "" +"Los valores devueltos de ``path.glob()`` y ``path.rglob()`` de pathlib " +"incluyen *path* como prefijo, a diferencia de los resultados de " +"``glob.glob(root_dir=path)``." #: ../Doc/library/pathlib.rst:1717 msgid "" @@ -2667,34 +3186,50 @@ msgid "" "results of ``glob.glob(root_dir=path)`` never include an empty string that " "would correspond to *path*." msgstr "" +"Los valores devueltos de ``path.glob()`` y ``path.rglob()`` de pathlib " +"pueden incluir el propio *path*, por ejemplo, al incluir \"``**``\", " +"mientras que los resultados de ``glob.glob(root_dir=path)`` nunca incluyen " +"una cadena vacía que corresponda a *path*." #: ../Doc/library/pathlib.rst:1724 -#, fuzzy msgid "Comparison to the :mod:`os` and :mod:`os.path` modules" -msgstr ":mod:`os` y :mod:`os.path`" +msgstr "Comparación con los módulos :mod:`os` y :mod:`os.path`" #: ../Doc/library/pathlib.rst:1726 msgid "" "pathlib implements path operations using :class:`PurePath` and :class:`Path` " -"objects, and so it's said to be *object-oriented*. On the other hand, the :" -"mod:`os` and :mod:`os.path` modules supply functions that work with low-" +"objects, and so it's said to be *object-oriented*. On the other hand, " +"the :mod:`os` and :mod:`os.path` modules supply functions that work with low-" "level ``str`` and ``bytes`` objects, which is a more *procedural* approach. " "Some users consider the object-oriented style to be more readable." msgstr "" +"pathlib implementa operaciones de ruta utilizando objetos :class:`PurePath` " +"y :class:`Path`, por lo que se dice que es *object-oriented*. Por otro lado, " +"los módulos :mod:`os` y :mod:`os.path` proporcionan funciones que funcionan " +"con objetos ``str`` y ``bytes`` de bajo nivel, lo que es un enfoque más " +"propio de *procedural*. Algunos usuarios consideran que el estilo orientado " +"a objetos es más legible." #: ../Doc/library/pathlib.rst:1732 msgid "" -"Many functions in :mod:`os` and :mod:`os.path` support ``bytes`` paths and :" -"ref:`paths relative to directory descriptors `. These features " +"Many functions in :mod:`os` and :mod:`os.path` support ``bytes`` paths " +"and :ref:`paths relative to directory descriptors `. These features " "aren't available in pathlib." msgstr "" +"Muchas funciones de :mod:`os` y :mod:`os.path` admiten rutas ``bytes`` " +"y :ref:`paths relative to directory descriptors `. Estas funciones " +"no están disponibles en pathlib." #: ../Doc/library/pathlib.rst:1736 msgid "" -"Python's ``str`` and ``bytes`` types, and portions of the :mod:`os` and :mod:" -"`os.path` modules, are written in C and are very speedy. pathlib is written " -"in pure Python and is often slower, but rarely slow enough to matter." +"Python's ``str`` and ``bytes`` types, and portions of the :mod:`os` " +"and :mod:`os.path` modules, are written in C and are very speedy. pathlib is " +"written in pure Python and is often slower, but rarely slow enough to matter." msgstr "" +"Los tipos ``str`` y ``bytes`` de Python, y partes de los módulos :mod:`os` " +"y :mod:`os.path`, están escritos en C y son muy rápidos. pathlib está " +"escrito en Python puro y a menudo es más lento, pero rara vez lo " +"suficientemente lento como para ser importante." #: ../Doc/library/pathlib.rst:1740 msgid "" @@ -2704,11 +3239,19 @@ msgid "" "are involved, :meth:`Path.absolute` preserves these segments for greater " "safety." msgstr "" +"la normalización de rutas de pathlib es ligeramente más estricta y " +"consistente que la de :mod:`os.path`. Por ejemplo, mientras " +"que :func:`os.path.abspath` elimina los segmentos \"``..``\" de una ruta, " +"que pueden cambiar su significado si hay enlaces simbólicos " +"involucrados, :meth:`Path.absolute` conserva estos segmentos para mayor " +"seguridad." #: ../Doc/library/pathlib.rst:1745 msgid "" "pathlib's path normalization may render it unsuitable for some applications:" msgstr "" +"la normalización de rutas de pathlib puede hacer que no sea adecuado para " +"algunas aplicaciones:" #: ../Doc/library/pathlib.rst:1747 msgid "" @@ -2718,6 +3261,11 @@ msgid "" "separator may allow the path to be resolved as either a file or directory, " "rather than a directory only." msgstr "" +"pathlib normaliza ``Path(\"my_folder/\")`` a ``Path(\"my_folder\")``, lo que " +"cambia el significado de una ruta cuando se proporciona a varias API del " +"sistema operativo y utilidades de línea de comandos. En concreto, la " +"ausencia de un separador final puede permitir que la ruta se resuelva como " +"un archivo o directorio, en lugar de solo como un directorio." #: ../Doc/library/pathlib.rst:1752 msgid "" @@ -2727,21 +3275,28 @@ msgid "" "a separator in the path may force it to be looked up in :envvar:`PATH` " "rather than the current directory." msgstr "" +"pathlib normaliza ``Path(\"./my_program\")`` a ``Path(\"my_program\")``, lo " +"que cambia el significado de una ruta cuando se utiliza como ruta de " +"búsqueda ejecutable, como en un shell o al generar un proceso secundario. En " +"concreto, la ausencia de un separador en la ruta puede obligar a que se " +"busque en :envvar:`PATH` en lugar de en el directorio actual." #: ../Doc/library/pathlib.rst:1758 msgid "" "As a consequence of these differences, pathlib is not a drop-in replacement " "for :mod:`os.path`." msgstr "" +"Como consecuencia de estas diferencias, pathlib no es un reemplazo directo " +"para :mod:`os.path`." #: ../Doc/library/pathlib.rst:1763 msgid "Corresponding tools" -msgstr "" +msgstr "Herramientas correspondientes" #: ../Doc/library/pathlib.rst:1765 msgid "" -"Below is a table mapping various :mod:`os` functions to their corresponding :" -"class:`PurePath`/:class:`Path` equivalent." +"Below is a table mapping various :mod:`os` functions to their " +"corresponding :class:`PurePath`/:class:`Path` equivalent." msgstr "" "A continuación se muestra una tabla que asigna varias funciones :mod:`os` a " "sus equivalentes en :class:`PurePath`/:class:`Path`." @@ -2775,18 +3330,16 @@ msgid ":func:`os.path.splitext`" msgstr ":func:`os.path.splitext`" #: ../Doc/library/pathlib.rst:1773 -#, fuzzy msgid ":attr:`PurePath.stem`, :attr:`PurePath.suffix`" -msgstr ":attr:`PurePath.stem` y :attr:`PurePath.suffix`" +msgstr ":attr:`PurePath.stem`, :attr:`PurePath.suffix`" #: ../Doc/library/pathlib.rst:1774 msgid ":func:`os.path.join`" msgstr ":func:`os.path.join`" #: ../Doc/library/pathlib.rst:1774 -#, fuzzy msgid ":meth:`PurePath.joinpath`" -msgstr ":func:`PurePath.joinpath`" +msgstr ":meth:`PurePath.joinpath`" #: ../Doc/library/pathlib.rst:1775 msgid ":func:`os.path.isabs`" @@ -2801,18 +3354,16 @@ msgid ":func:`os.path.relpath`" msgstr ":func:`os.path.relpath`" #: ../Doc/library/pathlib.rst:1776 -#, fuzzy msgid ":meth:`PurePath.relative_to` [1]_" -msgstr ":meth:`PurePath.relative_to` [#]_" +msgstr ":meth:`PurePath.relative_to` [1]_" #: ../Doc/library/pathlib.rst:1777 msgid ":func:`os.path.expanduser`" msgstr ":func:`os.path.expanduser`" #: ../Doc/library/pathlib.rst:1777 -#, fuzzy msgid ":meth:`Path.expanduser` [2]_" -msgstr ":meth:`Path.absolute` [#]_" +msgstr ":meth:`Path.expanduser` [2]_" #: ../Doc/library/pathlib.rst:1778 msgid ":func:`os.path.realpath`" @@ -2827,9 +3378,8 @@ msgid ":func:`os.path.abspath`" msgstr ":func:`os.path.abspath`" #: ../Doc/library/pathlib.rst:1779 -#, fuzzy msgid ":meth:`Path.absolute` [3]_" -msgstr ":meth:`Path.absolute` [#]_" +msgstr ":meth:`Path.absolute` [3]_" #: ../Doc/library/pathlib.rst:1780 msgid ":func:`os.path.exists`" @@ -2864,24 +3414,20 @@ msgid ":meth:`Path.is_symlink`" msgstr ":meth:`Path.is_symlink`" #: ../Doc/library/pathlib.rst:1784 -#, fuzzy msgid ":func:`os.path.isjunction`" -msgstr ":func:`os.path.islink`" +msgstr ":func:`os.path.isjunction`" #: ../Doc/library/pathlib.rst:1784 -#, fuzzy msgid ":meth:`Path.is_junction`" -msgstr ":meth:`Path.unlink`" +msgstr ":meth:`Path.is_junction`" #: ../Doc/library/pathlib.rst:1785 -#, fuzzy msgid ":func:`os.path.ismount`" -msgstr ":func:`os.path.islink`" +msgstr ":func:`os.path.ismount`" #: ../Doc/library/pathlib.rst:1785 -#, fuzzy msgid ":meth:`Path.is_mount`" -msgstr ":meth:`Path.is_symlink`" +msgstr ":meth:`Path.is_mount`" #: ../Doc/library/pathlib.rst:1786 msgid ":func:`os.path.samefile`" @@ -2896,28 +3442,24 @@ msgid ":func:`os.getcwd`" msgstr ":func:`os.getcwd`" #: ../Doc/library/pathlib.rst:1787 -#, fuzzy msgid ":meth:`Path.cwd`" -msgstr ":meth:`Path.chmod`" +msgstr ":meth:`Path.cwd`" #: ../Doc/library/pathlib.rst:1788 msgid ":func:`os.stat`" msgstr ":func:`os.stat`" #: ../Doc/library/pathlib.rst:1788 -#, fuzzy msgid ":meth:`Path.stat`" -msgstr ":meth:`Path.exists`" +msgstr ":meth:`Path.stat`" #: ../Doc/library/pathlib.rst:1789 -#, fuzzy msgid ":func:`os.lstat`" -msgstr ":func:`os.stat`" +msgstr ":func:`os.lstat`" #: ../Doc/library/pathlib.rst:1789 -#, fuzzy msgid ":meth:`Path.lstat`" -msgstr ":meth:`Path.exists`" +msgstr ":meth:`Path.lstat`" #: ../Doc/library/pathlib.rst:1790 msgid ":func:`os.listdir`" @@ -2932,14 +3474,12 @@ msgid ":func:`os.walk`" msgstr ":func:`os.walk`" #: ../Doc/library/pathlib.rst:1791 -#, fuzzy msgid ":meth:`Path.walk` [4]_" -msgstr ":meth:`Path.walk`" +msgstr ":meth:`Path.walk` [4]_" #: ../Doc/library/pathlib.rst:1792 -#, fuzzy msgid ":func:`os.mkdir`, :func:`os.makedirs`" -msgstr ":func:`os.remove`, :func:`os.unlink`" +msgstr ":func:`os.mkdir`, :func:`os.makedirs`" #: ../Doc/library/pathlib.rst:1792 msgid ":meth:`Path.mkdir`" @@ -3010,14 +3550,12 @@ msgid ":meth:`Path.chmod`" msgstr ":meth:`Path.chmod`" #: ../Doc/library/pathlib.rst:1801 -#, fuzzy msgid ":func:`os.lchmod`" -msgstr ":func:`os.chmod`" +msgstr ":func:`os.lchmod`" #: ../Doc/library/pathlib.rst:1801 -#, fuzzy msgid ":meth:`Path.lchmod`" -msgstr ":meth:`Path.chmod`" +msgstr ":meth:`Path.lchmod`" #: ../Doc/library/pathlib.rst:1805 msgid "Footnotes" @@ -3030,24 +3568,31 @@ msgid "" "is a lexical operation that raises :exc:`ValueError` when its inputs' " "anchors differ (e.g. if one path is absolute and the other relative.)" msgstr "" +":func:`os.path.relpath` llama a :func:`~os.path.abspath` para hacer que las " +"rutas sean absolutas y eliminar partes \"``..``\", mientras " +"que :meth:`PurePath.relative_to` es una operación léxica que " +"genera :exc:`ValueError` cuando los anclajes de sus entradas difieren (por " +"ejemplo, si una ruta es absoluta y la otra relativa)." #: ../Doc/library/pathlib.rst:1810 msgid "" ":func:`os.path.expanduser` returns the path unchanged if the home directory " -"can't be resolved, whereas :meth:`Path.expanduser` raises :exc:" -"`RuntimeError`." +"can't be resolved, whereas :meth:`Path.expanduser` " +"raises :exc:`RuntimeError`." msgstr "" +":func:`os.path.expanduser` devuelve la ruta sin cambios si no se puede " +"resolver el directorio de inicio, mientras que :meth:`Path.expanduser` " +"genera :exc:`RuntimeError`." #: ../Doc/library/pathlib.rst:1813 -#, fuzzy msgid "" ":func:`os.path.abspath` removes \"``..``\" components without resolving " -"symlinks, which may change the meaning of the path, whereas :meth:`Path." -"absolute` leaves any \"``..``\" components in the path." +"symlinks, which may change the meaning of the path, " +"whereas :meth:`Path.absolute` leaves any \"``..``\" components in the path." msgstr "" -":func:`os.path.abspath` normaliza la ruta resultante, lo cual puede cambiar " -"su significado en presencia de enlaces simbólicos, mientras que :meth:`Path." -"absolute` no lo hace." +":func:`os.path.abspath` elimina los componentes \"``..``\" sin resolver los " +"enlaces simbólicos, lo que puede cambiar el significado de la ruta, mientras " +"que :meth:`Path.absolute` deja cualquier componente \"``..``\" en la ruta." #: ../Doc/library/pathlib.rst:1816 msgid "" @@ -3055,6 +3600,10 @@ msgid "" "*dirnames* and *filenames*, whereas :meth:`Path.walk` categorizes all " "symlinks into *filenames* when *follow_symlinks* is false (the default.)" msgstr "" +":func:`os.walk` siempre sigue los enlaces simbólicos al categorizar rutas en " +"*dirnames* y *filenames*, mientras que :meth:`Path.walk` categoriza todos " +"los enlaces simbólicos en *filenames* cuando *follow_symlinks* es falso (el " +"valor predeterminado)." # Es parte del índice? #: ../Doc/library/pathlib.rst:11 From 15afcb459c1610bfb226676d4a73e490a10c367c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cristi=C3=A1n=20Maureira-Fredes?= Date: Tue, 14 Oct 2025 12:20:34 +0200 Subject: [PATCH 62/78] Translate library/os (#3327) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #2994 --------- Co-authored-by: Sofía Denner --- dictionaries/library_os.txt | 26 +- library/os.po | 1557 ++++++++++++++++++++--------------- 2 files changed, 929 insertions(+), 654 deletions(-) diff --git a/dictionaries/library_os.txt b/dictionaries/library_os.txt index 97081ad219..25895a01fc 100644 --- a/dictionaries/library_os.txt +++ b/dictionaries/library_os.txt @@ -1,28 +1,43 @@ -configurarlos -ctime Cygwin +Desasociar Desestablece +Reasociar +TerminateProcess +cancelable +configurarlos +ctime +decodificables +effective egid ejecutabilidad entropía errno euid +eventfd execv fork +gethostname glibc group initgroups inodo +inodos interactividad merge misceláneas nanosegundos +procfs +pseudoarchivo +pseudoterminal pty putenv quantum +reasocia reescritura rgid +rmdir robin +rootfd round ruid setgid @@ -36,7 +51,12 @@ stdio subcapa subshell suid +supports syscall -TerminateProcess +sysfs +timerfd +topdown umask +unlink urandom +work diff --git a/library/os.po b/library/os.po index d2d585562f..9f89adb3e9 100644 --- a/library/os.po +++ b/library/os.po @@ -11,20 +11,20 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: 2021-08-19 21:45-0500\n" +"PO-Revision-Date: 2024-11-24 19:12+0100\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" +"Language: es\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.16.0\n" +"X-Generator: Poedit 3.4.2\n" #: ../Doc/library/os.rst:2 -#, fuzzy msgid ":mod:`!os` --- Miscellaneous operating system interfaces" -msgstr ":mod:`os` --- Interfaces misceláneas del sistema operativo" +msgstr ":mod:`!os` --- Interfaces misceláneas del sistema operativo" #: ../Doc/library/os.rst:7 msgid "**Source code:** :source:`Lib/os.py`" @@ -93,7 +93,6 @@ msgstr "" "En VxWorks, os.popen, os.fork, os.execv y os.spawn*p* no son compatibles." #: ../Doc/library/os.rst:37 -#, fuzzy msgid "" "On WebAssembly platforms, Android and iOS, large parts of the :mod:`os` " "module are not available or behave differently. APIs related to processes (e." @@ -102,12 +101,13 @@ msgid "" "getpid` are emulated or stubs. WebAssembly platforms also lack support for " "signals (e.g. :func:`~os.kill`, :func:`~os.wait`)." msgstr "" -"En las plataformas WebAssembly ``wasm32-emscripten`` y ``wasm32-wasi``, gran " -"parte del módulo :mod:`os` no está disponible o se comporta de manera " -"diferente. La API relacionada con procesos (por ejemplo, :func:`~os.fork`, :" -"func:`~os.execve`), señales (por ejemplo, :func:`~os.kill`, :func:`~os." -"wait`) y recursos (por ejemplo, :func:`~os.nice`) no están disponibles. " -"Otros como :func:`~os.getuid` y :func:`~os.getpid` son emulados o stubs." +"En las plataformas WebAssembly, Android e iOS, gran parte del módulo :mod:" +"`os` no está disponible o se comporta de forma diferente. Las API " +"relacionadas con los procesos (p. ej., :func:`~os.fork`, :func:`~os.execve`) " +"y los recursos (p. ej., :func:`~os.nice`) no están disponibles. Otras, como :" +"func:`~os.getuid` y :func:`~os.getpid`, se emulan o son stubs. Las " +"plataformas WebAssembly también carecen de compatibilidad con señales (p. " +"ej., :func:`~os.kill`, :func:`~os.wait`)." #: ../Doc/library/os.rst:47 msgid "" @@ -132,13 +132,12 @@ msgstr "" "siguientes nombres están registrados: ``'posix'``, ``'nt'``, ``'java'``." #: ../Doc/library/os.rst:63 -#, fuzzy msgid "" ":data:`sys.platform` has a finer granularity. :func:`os.uname` gives system-" "dependent version information." msgstr "" -":attr:`sys.platform` tiene un mayor nivel de detalle. :func:`os.uname` " -"proporciona información de la versión dependiendo del sistema operativo." +":data:`sys.platform` tiene una granularidad más fina. :func:`os.uname` " +"proporciona información de versión dependiente del sistema." #: ../Doc/library/os.rst:66 msgid "" @@ -184,7 +183,6 @@ msgstr "" "de :c:type:`PyConfig`." #: ../Doc/library/os.rst:87 -#, fuzzy msgid "" "On some systems, conversion using the file system encoding may fail. In this " "case, Python uses the :ref:`surrogateescape encoding error handler " @@ -192,12 +190,12 @@ msgid "" "Unicode character U+DC\\ *xx* on decoding, and these are again translated to " "the original byte on encoding." msgstr "" -"En algunos sistemas, la conversión usando la codificación del sistema de " -"archivos puede fallar. En este caso, Python usa el :ref:`controlador de " -"error de codificación de *subrogateescape* `, lo que " -"significa que los *bytes* no codificables se reemplazan por un carácter " -"Unicode U + DCxx en la decodificación, y estos se traducen nuevamente al " -"byte original en la codificación." +"En algunos sistemas, la conversión mediante la codificación del sistema de " +"archivos puede fallar. En este caso, Python utiliza :ref:`surrogateescape " +"encoding error handler `, lo que significa que los bytes no " +"decodificables se reemplazan por un carácter Unicode U+DC\\ *xx* durante la " +"decodificación y estos se traducen nuevamente al byte original durante la " +"codificación." #: ../Doc/library/os.rst:95 msgid "" @@ -243,17 +241,15 @@ msgstr "" "de errores `." #: ../Doc/library/os.rst:116 -#, fuzzy msgid ":func:`sys.getfilesystemencoding` returns ``'utf-8'``." -msgstr ":func:`sys.getfilesystemencoding()` retorna ``'utf-8'``." +msgstr ":func:`sys.getfilesystemencoding` retorna ``'utf-8'``." #: ../Doc/library/os.rst:117 -#, fuzzy msgid "" ":func:`locale.getpreferredencoding` returns ``'utf-8'`` (the *do_setlocale* " "argument has no effect)." msgstr "" -":func:`locale.getpreferredencoding()` retorna ``'utf-8'`` (el argumento " +":func:`locale.getpreferredencoding` retorna ``'utf-8'`` (el argumento " "*do_setlocale* no tiene ningún efecto)." #: ../Doc/library/os.rst:119 @@ -305,24 +301,22 @@ msgstr "" "nombres de archivo se decodifican en texto utilizando la codificación UTF-8." #: ../Doc/library/os.rst:136 -#, fuzzy msgid ":func:`os.fsdecode` and :func:`os.fsencode` use the UTF-8 encoding." msgstr "" -":func:`os.fsdecode()` y :func:`os.fsencode()` utilizan la codificación UTF-8." +":func:`os.fsdecode` y :func:`os.fsencode` utilizan la codificación UTF-8." #: ../Doc/library/os.rst:137 -#, fuzzy msgid "" ":func:`open`, :func:`io.open`, and :func:`codecs.open` use the UTF-8 " "encoding by default. However, they still use the strict error handler by " "default so that attempting to open a binary file in text mode is likely to " "raise an exception rather than producing nonsense data." msgstr "" -":func:`open()`, :func:`io.open()` y :func:`codecs.open()` utilizan la " -"codificación UTF-8 de forma predeterminada. Sin embargo, todavía usan el " -"controlador de errores estricto de forma predeterminada, por lo que es " -"probable que intentar abrir un archivo binario en modo texto genere una " -"excepción en lugar de producir datos sin sentido." +":func:`open`, :func:`io.open` y :func:`codecs.open` utilizan la codificación " +"UTF-8 de forma predeterminada. Sin embargo, todavía usan el controlador de " +"errores estricto de forma predeterminada, por lo que es probable que " +"intentar abrir un archivo binario en modo texto genere una excepción en " +"lugar de producir datos sin sentido." #: ../Doc/library/os.rst:142 msgid "" @@ -430,7 +424,6 @@ msgstr "" #: ../Doc/library/os.rst:4411 ../Doc/library/os.rst:4419 #: ../Doc/library/os.rst:4427 ../Doc/library/os.rst:4434 #: ../Doc/library/os.rst:4441 ../Doc/library/os.rst:4564 -#, fuzzy msgid ":ref:`Availability `: Unix, not WASI." msgstr ":ref:`Disponibilidad `: Unix, no WASI." @@ -486,6 +479,9 @@ msgid "" "getting, setting, or deleting an item. For example, ``environ['monty'] = " "'python'`` maps the key ``'MONTY'`` to the value ``'python'``." msgstr "" +"En Windows, las claves se convierten a mayúsculas. Esto también se aplica al " +"obtener, configurar o eliminar un elemento. Por ejemplo, ``environ['monty'] " +"= 'python'`` asigna a la clave ``'MONTY'`` el valor ``'python'``." #: ../Doc/library/os.rst:211 msgid "" @@ -496,14 +492,13 @@ msgstr "" "que es mejor modificar :data:`os.environ`." #: ../Doc/library/os.rst:216 -#, fuzzy msgid "" "On some platforms, including FreeBSD and macOS, setting ``environ`` may " "cause memory leaks. Refer to the system documentation for :c:func:`!putenv`." msgstr "" "En algunas plataformas, incluidas FreeBSD y macOS, configurar ``environ`` " "puede provocar pérdidas de memoria. Consulte la documentación del sistema " -"para :c:func:`putenv`." +"para :c:func:`!putenv`." #: ../Doc/library/os.rst:220 msgid "" @@ -537,13 +532,12 @@ msgstr "" "(modificando :data:`environb` actualiza :data:`environ`, y viceversa)." #: ../Doc/library/os.rst:236 -#, fuzzy msgid "" ":data:`environb` is only available if :const:`supports_bytes_environ` is " "``True``." msgstr "" -":data:`environb` está disponible sólo si :data:`supports_bytes_environ` está " -"establecido en ``True``." +":data:`environb` está disponible sólo si :const:`supports_bytes_environ` " +"está establecido en ``True``." #: ../Doc/library/os.rst:250 msgid "These functions are described in :ref:`os-file-dir`." @@ -651,7 +645,6 @@ msgstr "" #: ../Doc/library/os.rst:3456 ../Doc/library/os.rst:3493 #: ../Doc/library/os.rst:4322 ../Doc/library/os.rst:4871 #: ../Doc/library/os.rst:4882 ../Doc/library/os.rst:4999 -#, fuzzy msgid ":ref:`Availability `: Unix, Windows." msgstr ":ref:`Disponibilidad `: Unix, Windows." @@ -670,12 +663,11 @@ msgstr "" "función no refleje futuros cambios en el entorno." #: ../Doc/library/os.rst:334 -#, fuzzy msgid "" ":func:`getenvb` is only available if :const:`supports_bytes_environ` is " "``True``." msgstr "" -":func:`getenvb` está disponible sólo si :data:`supports_bytes_environ` está " +":func:`getenvb` está disponible sólo si :const:`supports_bytes_environ` está " "establecido en ``True``." #: ../Doc/library/os.rst:337 ../Doc/library/os.rst:376 @@ -694,7 +686,6 @@ msgstr "" #: ../Doc/library/os.rst:5496 ../Doc/library/os.rst:5505 #: ../Doc/library/os.rst:5529 ../Doc/library/os.rst:5556 #: ../Doc/library/os.rst:5565 -#, fuzzy msgid ":ref:`Availability `: Unix." msgstr ":ref:`Disponibilidad `: Unix." @@ -733,13 +724,12 @@ msgstr "" #: ../Doc/library/os.rst:378 ../Doc/library/os.rst:451 #: ../Doc/library/os.rst:535 ../Doc/library/os.rst:758 -#, fuzzy msgid "" "The function is a stub on WASI, see :ref:`wasm-availability` for more " "information." msgstr "" -"La función es un código auxiliar en Emscripten y WASI, consulte :ref:`wasm-" -"availability` para obtener más información." +"La función es un \"stub\" de WASI, consulte :ref:`wasm-availability` para " +"obtener más información." #: ../Doc/library/os.rst:384 msgid "" @@ -761,7 +751,6 @@ msgstr "" "actual." #: ../Doc/library/os.rst:402 -#, fuzzy msgid "" "On macOS, :func:`getgroups` behavior differs somewhat from other Unix " "platforms. If the Python interpreter was built with a deployment target of " @@ -777,20 +766,20 @@ msgid "" "`MACOSX_DEPLOYMENT_TARGET`, can be obtained with :func:`sysconfig." "get_config_var`." msgstr "" -"En macOS, el comportamiento de :func:`getgroups` difiere algo del de otras " -"plataformas Unix. Si el intérprete de Python se creó con un destino de " -"implementación de :const:`10.5` o anterior, :func:`getgroups` retorna la " -"lista de identificadores de grupo efectivos asociados con el proceso de " -"usuario actual; esta lista está limitada a un número de entradas definido " -"por el sistema, normalmente 16, y puede modificarse mediante llamadas a :" -"func:`setgroups` si tiene los privilegios adecuados. Si se construyó con un " -"objetivo de implementación mayor que :const:`10.5`, :func:`getgroups` " -"retorna la lista de acceso de grupo actual para el usuario asociado con el " -"ID de usuario efectivo del proceso; la lista de acceso de grupo puede " -"cambiar durante la vida útil del proceso, no se ve afectada por las llamadas " -"a :func:`setgroups` y su longitud no está limitada a 16. El valor de destino " -"de implementación, :const:`MACOSX_DEPLOYMENT_TARGET`, se puede obtener con :" -"func:`sysconfig.get_config_var`." +"En macOS, el comportamiento de :func:`getgroups` difiere un poco del de " +"otras plataformas Unix. Si el intérprete de Python se creó con un objetivo " +"de implementación ``10.5`` o anterior, :func:`getgroups` devuelve la lista " +"de identificadores de grupo efectivos asociados con el proceso de usuario " +"actual; esta lista está limitada a una cantidad de entradas definida por el " +"sistema, normalmente 16, y puede modificarse mediante llamadas a :func:" +"`setgroups` si se cuenta con los privilegios adecuados. Si se creó con un " +"objetivo de implementación mayor que ``10.5``, :func:`getgroups` devuelve la " +"lista de acceso de grupo actual para el usuario asociado con el " +"identificador de usuario efectivo del proceso; la lista de acceso de grupo " +"puede cambiar durante la vida útil del proceso, no se ve afectada por las " +"llamadas a :func:`setgroups` y su longitud no está limitada a 16. El valor " +"del objetivo de implementación, :const:`MACOSX_DEPLOYMENT_TARGET`, se puede " +"obtener con :func:`sysconfig.get_config_var`." #: ../Doc/library/os.rst:419 msgid "" @@ -808,10 +797,8 @@ msgstr "" "sesión del ID de usuario real actual." #: ../Doc/library/os.rst:426 ../Doc/library/os.rst:462 -#, fuzzy msgid ":ref:`Availability `: Unix, Windows, not WASI." -msgstr "" -":ref:`Disponibilidad `: Unix, Windows, no Emscripten, no WASI." +msgstr ":ref:`Disponibilidad `: Unix, Windows, no WASI." #: ../Doc/library/os.rst:431 msgid "" @@ -870,9 +857,8 @@ msgstr "" "Parámetros para las funciones :func:`getpriority` y :func:`setpriority`." #: ../Doc/library/os.rst:503 -#, fuzzy msgid ":ref:`Availability `: macOS" -msgstr ":ref:`Disponibilidad `: Windows." +msgstr ":ref:`Disponibilidad `: macOS" #: ../Doc/library/os.rst:509 msgid "" @@ -909,9 +895,8 @@ msgstr "" #: ../Doc/library/os.rst:687 ../Doc/library/os.rst:694 #: ../Doc/library/os.rst:703 ../Doc/library/os.rst:712 #: ../Doc/library/os.rst:735 ../Doc/library/os.rst:2181 -#, fuzzy msgid ":ref:`Availability `: Unix, not WASI, not Android." -msgstr ":ref:`Disponibilidad `: Unix, no WASI." +msgstr ":ref:`Disponibilidad `: Unix, no WASI, no Android." #: ../Doc/library/os.rst:554 msgid "" @@ -941,14 +926,13 @@ msgstr "" "implementaciones." #: ../Doc/library/os.rst:566 -#, fuzzy msgid "" "On some platforms, including FreeBSD and macOS, setting ``environ`` may " "cause memory leaks. Refer to the system documentation for :c:func:`!putenv`." msgstr "" -"En algunas plataformas, incluidas FreeBSD y macOS, configurar ``environ`` " -"puede provocar pérdidas de memoria. Consulte la documentación del sistema " -"para :c:func:`putenv`." +"En algunas plataformas, incluidas FreeBSD y macOS, la configuración de " +"``environ`` puede provocar pérdidas de memoria. Consulta la documentación " +"del sistema para obtener información sobre :c:func:`!putenv`." #: ../Doc/library/os.rst:569 msgid "" @@ -1003,6 +987,9 @@ msgid "" "Reassociate the current thread with a Linux namespace. See the :manpage:" "`setns(2)` and :manpage:`namespaces(7)` man pages for more details." msgstr "" +"Reasociar el hilo actual con un espacio de nombres de Linux. Consulta las " +"páginas del manual :manpage:`setns(2)` y :manpage:`namespaces(7)` para " +"obtener más detalles." #: ../Doc/library/os.rst:615 msgid "" @@ -1012,6 +999,11 @@ msgid "" "clone-flags>` to impose constraints on the operation (``0`` means no " "constraints)." msgstr "" +"Si *fd* hace referencia a un enlace :file:`/proc/{pid}/ns/`, ``setns()`` " +"reasocia el hilo que llama con el espacio de nombres asociado con ese " +"enlace, y *nstype* puede configurarse en uno de los :ref:`CLONE_NEW* " +"constants ` para imponer restricciones a la " +"operación (``0`` significa sin restricciones)." #: ../Doc/library/os.rst:622 msgid "" @@ -1023,18 +1015,31 @@ msgid "" "flags>`, e.g. ``setns(fd, os.CLONE_NEWUTS | os.CLONE_NEWPID)``. The caller's " "memberships in unspecified namespaces are left unchanged." msgstr "" +"Desde Linux 5.8, *fd* puede hacer referencia a un descriptor de archivo PID " +"obtenido de :func:`~os.pidfd_open`. En este caso, ``setns()`` reasocia el " +"subproceso que realiza la llamada en uno o más de los mismos espacios de " +"nombres que el subproceso al que hace referencia *fd*. Esto está sujeto a " +"las restricciones impuestas por *nstype*, que es una máscara de bits que " +"combina uno o más de los :ref:`CLONE_NEW* constants `, por ejemplo, ``setns(fd, os.CLONE_NEWUTS | os.CLONE_NEWPID)``. Las " +"pertenencias del autor de la llamada a espacios de nombres no especificados " +"no se modifican." #: ../Doc/library/os.rst:631 msgid "" "*fd* can be any object with a :meth:`~io.IOBase.fileno` method, or a raw " "file descriptor." msgstr "" +"*fd* puede ser cualquier objeto con un método :meth:`~io.IOBase.fileno` o un " +"descriptor de archivo sin formato." #: ../Doc/library/os.rst:633 msgid "" "This example reassociates the thread with the ``init`` process's network " "namespace::" msgstr "" +"Este ejemplo reasocia el hilo con el espacio de nombres de red del proceso " +"``init``:" #: ../Doc/library/os.rst:635 msgid "" @@ -1042,38 +1047,37 @@ msgid "" "os.setns(fd, os.CLONE_NEWNET)\n" "os.close(fd)" msgstr "" +"fd = os.open(\"/proc/1/ns/net\", os.O_RDONLY)\n" +"os.setns(fd, os.CLONE_NEWNET)\n" +"os.close(fd)" #: ../Doc/library/os.rst:639 -#, fuzzy msgid ":ref:`Availability `: Linux >= 3.0 with glibc >= 2.14." -msgstr ":ref:`Disponibilidad `: Linux >= 3.17 con glibc >= 2.27." +msgstr ":ref:`Disponibilidad `: Linux >= 3.0 con glibc >= 2.14." #: ../Doc/library/os.rst:645 -#, fuzzy msgid "The :func:`~os.unshare` function." -msgstr "La función :func:`.stat`." +msgstr "La función :func:`~os.unshare`." #: ../Doc/library/os.rst:649 -#, fuzzy msgid "" "Call the system call :c:func:`!setpgrp` or ``setpgrp(0, 0)`` depending on " "which version is implemented (if any). See the Unix manual for the " "semantics." msgstr "" -"Invoca a la llamada de sistema :c:func:`setpgrp` o ``setpgrp(0, 0)`` " -"dependiendo de la versión que se implemente (si la hay). Vea el manual de " -"Unix para la semántica." +"Llama a la llamada del sistema :c:func:`!setpgrp` o ``setpgrp(0, 0)`` según " +"la versión implementada (si hay alguna). Consulte el manual de Unix para " +"conocer la semántica." #: ../Doc/library/os.rst:657 -#, fuzzy msgid "" "Call the system call :c:func:`!setpgid` to set the process group id of the " "process with id *pid* to the process group with id *pgrp*. See the Unix " "manual for the semantics." msgstr "" -"Invoca a la llamada de sistema :c:func:`setpgid` para establecer la " -"identificación del grupo de procesos del *id* del proceso como *pid* al " -"grupo de procesos con id *pgrp*. Vea el manual de Unix para la semántica." +"Llama a la llamada del sistema :c:func:`!setpgid` para establecer el ID del " +"grupo de procesos del proceso con el ID *pid* en el grupo de procesos con el " +"ID *pgrp*. Consulte el manual de Unix para conocer la semántica." #: ../Doc/library/os.rst:668 msgid "" @@ -1118,37 +1122,34 @@ msgid "Set the current process's real and effective user ids." msgstr "Establece los *ids* de usuario reales y efectivos del proceso actual." #: ../Doc/library/os.rst:717 -#, fuzzy msgid "" "Call the system call :c:func:`!getsid`. See the Unix manual for the " "semantics." msgstr "" -"Invoca a la llamada de sistema :c:func:`getsid`. Vea el manual de Unix para " -"la semántica." +"Llamar a la llamada del sistema :c:func:`!getsid`. Consultar el manual de " +"Unix para conocer la semántica." #: ../Doc/library/os.rst:724 -#, fuzzy msgid "" "Call the system call :c:func:`!setsid`. See the Unix manual for the " "semantics." msgstr "" -"Invoca a la llamada de sistema :c:func:`setsid`. Vea el manual de Unix para " -"la semántica." +"Llamar a la llamada del sistema :c:func:`!setsid`. Consultar el manual de " +"Unix para conocer la semántica." #: ../Doc/library/os.rst:733 msgid "Set the current process's user id." msgstr "Establece *id* del usuario del proceso actual." #: ../Doc/library/os.rst:741 -#, fuzzy msgid "" "Return the error message corresponding to the error code in *code*. On " "platforms where :c:func:`!strerror` returns ``NULL`` when given an unknown " "error number, :exc:`ValueError` is raised." msgstr "" -"Retorna el mensaje de error correspondiente al código de error en *code*. En " -"plataformas donde :c:func:`strerror` retorna ``NULL`` cuando se le da un " -"número de error desconocido lanza un :exc:`ValueError`." +"Devuelve el mensaje de error correspondiente al código de error en *code*. " +"En las plataformas donde :c:func:`!strerror` devuelve ``NULL`` cuando se le " +"asigna un número de error desconocido, se genera :exc:`ValueError`." #: ../Doc/library/os.rst:748 msgid "" @@ -1220,6 +1221,10 @@ msgid "" "uname` can be used to get the user-facing operating system name and version " "on iOS and Android." msgstr "" +"En macOS, iOS y Android, esto devuelve el nombre y la versión de *kernel* " +"(es decir, ``'Darwin'`` en macOS e iOS; ``'Linux'`` en Android). :func:" +"`platform.uname` se puede utilizar para obtener el nombre y la versión del " +"sistema operativo que ven los usuarios en iOS y Android." #: ../Doc/library/os.rst:794 ../Doc/library/os.rst:5001 msgid "" @@ -1263,7 +1268,7 @@ msgstr "" msgid "The function is now always available and is also available on Windows." msgstr "" "Estas funciones se encuentra ahora siempre disponible y también esta " -"disponible en Windows" +"disponible en Windows." #: ../Doc/library/os.rst:820 msgid "" @@ -1275,16 +1280,22 @@ msgid "" "and moved to a new namespace. If the *flags* argument is ``0``, no changes " "are made to the calling process's execution context." msgstr "" +"Desasociar partes del contexto de ejecución del proceso y moverlas a un " +"nuevo espacio de nombres creado. Consulte la página del manual :manpage:" +"`unshare(2)` para obtener más detalles. El argumento *flags* es una máscara " +"de bits que combina cero o más de los :ref:`CLONE_* constants ` y que especifica qué partes del contexto de ejecución deben " +"dejar de compartirse de sus asociaciones existentes y moverse a un nuevo " +"espacio de nombres. Si el argumento *flags* es ``0``, no se realizan cambios " +"en el contexto de ejecución del proceso que realiza la llamada." #: ../Doc/library/os.rst:831 -#, fuzzy msgid ":ref:`Availability `: Linux >= 2.6.16." -msgstr ":ref:`Disponibilidad `: Linux >= 4.16." +msgstr ":ref:`Disponibilidad `: Linux >=2.6.16." #: ../Doc/library/os.rst:837 -#, fuzzy msgid "The :func:`~os.setns` function." -msgstr "La función :func:`.stat`." +msgstr "La función :func:`~os.setns`." #: ../Doc/library/os.rst:841 msgid "" @@ -1292,6 +1303,9 @@ msgid "" "See :manpage:`unshare(2)` in the Linux manual for their exact effect and " "availability." msgstr "" +"Indicadores de la función :func:`unshare`, si la implementación los admite. " +"Consulte :manpage:`unshare(2)` en el manual de Linux para conocer su efecto " +"exacto y su disponibilidad." #: ../Doc/library/os.rst:864 msgid "File Object Creation" @@ -1392,22 +1406,23 @@ msgid "" " except OSError:\n" " pass" msgstr "" +"for fd in range(fd_low, fd_high):\n" +" try:\n" +" os.close(fd)\n" +" except OSError:\n" +" pass" #: ../Doc/library/os.rst:924 -#, fuzzy msgid "" "Copy *count* bytes from file descriptor *src*, starting from offset " "*offset_src*, to file descriptor *dst*, starting from offset *offset_dst*. " "If *offset_src* is ``None``, then *src* is read from the current position; " "respectively for *offset_dst*." msgstr "" -"Copia *count* bytes del descriptor de archivo *src*, comenzando desde offset " -"*offset_src*, al descriptor de archivo *dst*, comenzando desde offset " -"*offset_dst*. Si *offset_src* es None, entonces *src* se lee desde la " -"posición actual; respectivamente para *offset_dst*. Los archivos señalados " -"por *src* y *dst* deben estar en el mismo sistema de archivos; de lo " -"contrario, se genera una :exc:`OSError` con :attr:`~OSError.errno` " -"establecido en :data:`errno.EXDEV`." +"Copiar bytes *count* desde el descriptor de archivo *src*, comenzando desde " +"el desplazamiento *offset_src*, al descriptor de archivo *dst*, comenzando " +"desde el desplazamiento *offset_dst*. Si *offset_src* es ``None``, entonces " +"*src* se lee desde la posición actual; respectivamente para *offset_dst*." #: ../Doc/library/os.rst:929 msgid "" @@ -1415,9 +1430,12 @@ msgid "" "reside in the same filesystem, otherwise an :exc:`OSError` is raised with :" "attr:`~OSError.errno` set to :const:`errno.EXDEV`." msgstr "" +"En un kernel de Linux anterior a 5.3, los archivos a los que apuntan *src* y " +"*dst* deben residir en el mismo sistema de archivos; de lo contrario, se " +"genera un :exc:`OSError` con :attr:`~OSError.errno` establecido en :const:" +"`errno.EXDEV`." #: ../Doc/library/os.rst:933 -#, fuzzy msgid "" "This copy is done without the additional cost of transferring data from the " "kernel to user space and then back into the kernel. Additionally, some " @@ -1427,15 +1445,20 @@ msgid "" "(in the case of NFS)." msgstr "" "Esta copia se realiza sin el costo adicional de transferir datos desde el " -"kernel al espacio del usuario y luego nuevamente al kernel. También, algunos " -"sistemas de archivos podrían implementar optimizaciones adicionales. La " -"copia se realiza como si ambos archivos se abrieran como binarios." +"núcleo al espacio de usuario y luego de vuelta al núcleo. Además, algunos " +"sistemas de archivos podrían implementar optimizaciones adicionales, como el " +"uso de enlaces de referencia (es decir, dos o más inodos que comparten " +"punteros a los mismos bloques de disco de copia en escritura; los sistemas " +"de archivos compatibles incluyen btrfs y XFS) y copia del lado del servidor " +"(en el caso de NFS)." #: ../Doc/library/os.rst:940 msgid "" "The function copies bytes between two file descriptors. Text options, like " "the encoding and the line ending, are ignored." msgstr "" +"La función copia bytes entre dos descriptores de archivo. Las opciones de " +"texto, como la codificación y el final de línea, se ignoran." #: ../Doc/library/os.rst:943 msgid "" @@ -1452,9 +1475,12 @@ msgid "" "always copy no bytes and return 0 as if the file was empty because of a " "known Linux kernel issue." msgstr "" +"En Linux, no se debe utilizar :func:`os.copy_file_range` para copiar un " +"rango de un pseudoarchivo desde un sistema de archivos especial como procfs " +"y sysfs. Siempre no copiará ningún byte y devolverá 0 como si el archivo " +"estuviera vacío debido a un problema conocido del kernel de Linux." #: ../Doc/library/os.rst:953 -#, fuzzy msgid ":ref:`Availability `: Linux >= 4.5 with glibc >= 2.27." msgstr ":ref:`Disponibilidad `: Linux >= 4.5 con glibc >= 2.27." @@ -1495,7 +1521,6 @@ msgstr "" "el nuevo descriptor de archivo es :ref:`heredable `." #: ../Doc/library/os.rst:979 ../Doc/library/os.rst:992 -#, fuzzy msgid ":ref:`Availability `: not WASI." msgstr ":ref:`Disponibilidad `: no WASI." @@ -1546,18 +1571,16 @@ msgstr "" #: ../Doc/library/os.rst:1120 ../Doc/library/os.rst:1705 #: ../Doc/library/os.rst:2133 ../Doc/library/os.rst:2166 #: ../Doc/library/os.rst:3458 -#, fuzzy msgid "" "The function is limited on WASI, see :ref:`wasm-availability` for more " "information." msgstr "" -"La función está limitada en Emscripten y WASI, consulte :ref:`wasm-" -"availability` para obtener más información." +"La función está limitada en WASI, consulte :ref:`wasm-availability` para " +"obtener más información." #: ../Doc/library/os.rst:1014 ../Doc/library/os.rst:2244 -#, fuzzy msgid "Added support on Windows." -msgstr "Se agregó soporte para Windows." +msgstr "Se agregó soporte en Windows." #: ../Doc/library/os.rst:1020 msgid "" @@ -1654,15 +1677,14 @@ msgstr "" "de Python 3.3, esto es equivalente a ``os.statvfs(fd)``." #: ../Doc/library/os.rst:1087 -#, fuzzy msgid "" "Force write of file with filedescriptor *fd* to disk. On Unix, this calls " "the native :c:func:`!fsync` function; on Windows, the MS :c:func:`!_commit` " "function." msgstr "" -"Fuerza la escritura del archivo con el descriptor de archivo *fd* en el " -"disco. En Unix, esto llama a la función nativa :c:func:`fsync`; en Windows, " -"la función MS :c:func:`_commit`." +"Fuerza la escritura de un archivo con el descriptor de archivo *fd* en el " +"disco. En Unix, esto llama a la función :c:func:`!fsync` nativa; en Windows, " +"a la función :c:func:`!_commit` de MS." #: ../Doc/library/os.rst:1090 msgid "" @@ -1712,12 +1734,11 @@ msgstr "" #: ../Doc/library/os.rst:1123 ../Doc/library/os.rst:1708 msgid "On Windows, this function is limited to pipes." -msgstr "" +msgstr "En Windows, esta función está limitada a las tuberías." #: ../Doc/library/os.rst:1127 ../Doc/library/os.rst:1712 -#, fuzzy msgid "Added support for pipes on Windows." -msgstr "Se agregó soporte para Windows." +msgstr "Se agregó soporte para pipes en Windows." #: ../Doc/library/os.rst:1133 msgid "" @@ -1725,10 +1746,13 @@ msgid "" "pseudo-terminal device to which the file descriptor *fd* refers. The file " "descriptor *fd* is not closed upon failure." msgstr "" +"Otorgar acceso al dispositivo pseudoterminal esclavo asociado con el " +"dispositivo pseudoterminal maestro al que hace referencia el descriptor de " +"archivo *fd*. El descriptor de archivo *fd* no se cierra en caso de falla." #: ../Doc/library/os.rst:1137 msgid "Calls the C standard library function :c:func:`grantpt`." -msgstr "" +msgstr "Llama a la función de la biblioteca estándar C :c:func:`grantpt`." #: ../Doc/library/os.rst:1146 msgid "" @@ -1779,34 +1803,47 @@ msgid "" "by *whence*, and return the new position in bytes relative to the start of " "the file. Valid values for *whence* are:" msgstr "" +"Establece la posición actual del descriptor de archivo *fd* en la posición " +"*pos*, modificada por *whence*, y devuelve la nueva posición en bytes con " +"respecto al inicio del archivo. Los valores válidos para *whence* son:" #: ../Doc/library/os.rst:1195 msgid "" ":const:`SEEK_SET` or ``0`` -- set *pos* relative to the beginning of the file" msgstr "" +":const:`SEEK_SET` o ``0``: establece *pos* en relación con el comienzo del " +"archivo" #: ../Doc/library/os.rst:1196 msgid "" ":const:`SEEK_CUR` or ``1`` -- set *pos* relative to the current file position" msgstr "" +":const:`SEEK_CUR` o ``1``: establece *pos* en relación con la posición " +"actual del archivo" #: ../Doc/library/os.rst:1197 msgid ":const:`SEEK_END` or ``2`` -- set *pos* relative to the end of the file" msgstr "" +":const:`SEEK_END` o ``2``: establece *pos* en relación con el final del " +"archivo" #: ../Doc/library/os.rst:1198 msgid "" ":const:`SEEK_HOLE` -- set *pos* to the next data location, relative to *pos*" msgstr "" +":const:`SEEK_HOLE`: establece *pos* en la siguiente ubicación de datos, " +"relativa a *pos*" #: ../Doc/library/os.rst:1199 msgid "" ":const:`SEEK_DATA` -- set *pos* to the next data hole, relative to *pos*" msgstr "" +":const:`SEEK_DATA`: establece *pos* en el siguiente agujero de datos, " +"relativo a *pos*" #: ../Doc/library/os.rst:1203 msgid "Add support for :const:`!SEEK_HOLE` and :const:`!SEEK_DATA`." -msgstr "" +msgstr "Añadir soporte para :const:`!SEEK_HOLE` y :const:`!SEEK_DATA`." #: ../Doc/library/os.rst:1210 msgid "" @@ -1814,37 +1851,40 @@ msgid "" "method on :term:`file-like objects `, for whence to adjust the " "file position indicator." msgstr "" +"Parámetros de la función :func:`lseek` y del método :meth:`~io.IOBase.seek` " +"en :term:`file-like objects `, para desde donde ajustar el " +"indicador de posición del archivo." #: ../Doc/library/os.rst:1214 msgid ":const:`SEEK_SET`" -msgstr "" +msgstr ":const:`SEEK_SET`" #: ../Doc/library/os.rst:1215 msgid "Adjust the file position relative to the beginning of the file." msgstr "" +"Ajuste la posición del archivo en relación con el comienzo del archivo." #: ../Doc/library/os.rst:1216 msgid ":const:`SEEK_CUR`" -msgstr "" +msgstr ":const:`SEEK_CUR`" #: ../Doc/library/os.rst:1217 msgid "Adjust the file position relative to the current file position." msgstr "" +"Ajuste la posición del archivo en relación con la posición del archivo " +"actual." #: ../Doc/library/os.rst:1219 msgid ":const:`SEEK_END`" -msgstr "" +msgstr ":const:`SEEK_END`" #: ../Doc/library/os.rst:1219 msgid "Adjust the file position relative to the end of the file." -msgstr "" +msgstr "Ajuste la posición del archivo en relación con el final del archivo." #: ../Doc/library/os.rst:1221 -#, fuzzy msgid "Their values are 0, 1, and 2, respectively." -msgstr "" -"Parámetros para la función :func:`lseek`. Sus valores son 0, 1 y 2, " -"respectivamente." +msgstr "Sus valores son 0, 1 y 2, respectivamente." #: ../Doc/library/os.rst:1227 msgid "" @@ -1852,37 +1892,44 @@ msgid "" "method on :term:`file-like objects `, for seeking file data and " "holes on sparsely allocated files." msgstr "" +"Parámetros de la función :func:`lseek` y del método :meth:`~io.IOBase.seek` " +"en :term:`file-like objects `, para buscar datos de archivos y " +"agujeros en archivos escasamente asignados." #: ../Doc/library/os.rst:1233 -#, fuzzy msgid ":data:`!SEEK_DATA`" -msgstr ":data:`RWF_NOWAIT`" +msgstr ":data:`!SEEK_DATA`" #: ../Doc/library/os.rst:1232 msgid "" "Adjust the file offset to the next location containing data, relative to the " "seek position." msgstr "" +"Ajuste el desplazamiento del archivo a la siguiente ubicación que contenga " +"datos, en relación con la posición de búsqueda." #: ../Doc/library/os.rst:1238 -#, fuzzy msgid ":data:`!SEEK_HOLE`" -msgstr ":data:`stat.UF_OPAQUE`" +msgstr ":data:`!SEEK_HOLE`" #: ../Doc/library/os.rst:1236 msgid "" "Adjust the file offset to the next location containing a hole, relative to " "the seek position. A hole is defined as a sequence of zeros." msgstr "" +"Ajuste el desplazamiento del archivo a la siguiente ubicación que contenga " +"un agujero, en relación con la posición de búsqueda. Un agujero se define " +"como una secuencia de ceros." #: ../Doc/library/os.rst:1242 msgid "These operations only make sense for filesystems that support them." msgstr "" +"Estas operaciones sólo tienen sentido para los sistemas de archivos que las " +"admiten." #: ../Doc/library/os.rst:1244 -#, fuzzy msgid ":ref:`Availability `: Linux >= 3.1, macOS, Unix" -msgstr ":ref:`Disponibilidad `: Linux >= 3.17." +msgstr ":ref:`Disponibilidad `: Linux >= 3.1, macOS, Unix" #: ../Doc/library/os.rst:1251 msgid "" @@ -2130,6 +2177,8 @@ msgstr "" #: ../Doc/library/os.rst:1453 msgid "Open and return a file descriptor for a master pseudo-terminal device." msgstr "" +"Abrir y devolver un descriptor de archivo para un dispositivo pseudo-" +"terminal maestro." #: ../Doc/library/os.rst:1455 msgid "" @@ -2137,6 +2186,10 @@ msgid "" "argument is used to set file status flags and file access modes as specified " "in the manual page of :c:func:`posix_openpt` of your system." msgstr "" +"Llama a la función de la biblioteca estándar de C :c:func:`posix_openpt`. El " +"argumento *oflag* se utiliza para establecer indicadores de estado de " +"archivo y modos de acceso a archivos, tal como se especifica en la página " +"del manual de :c:func:`posix_openpt` de su sistema." #: ../Doc/library/os.rst:1459 msgid "" @@ -2144,6 +2197,9 @@ msgid "" "the value :data:`O_CLOEXEC` is available on the system, it is added to " "*oflag*." msgstr "" +"El descriptor de archivo devuelto es :ref:`non-inheritable " +"`. Si el valor :data:`O_CLOEXEC` está disponible en el " +"sistema, se agrega a *oflag*." #: ../Doc/library/os.rst:1470 msgid "" @@ -2196,7 +2252,6 @@ msgid "Combine the functionality of :func:`os.readv` and :func:`os.pread`." msgstr "Combina la funcionalidad de :func:`os.readv` y :func:`os.pread`." #: ../Doc/library/os.rst:1489 ../Doc/library/os.rst:1574 -#, fuzzy msgid "" ":ref:`Availability `: Linux >= 2.6.30, FreeBSD >= 6.0, OpenBSD " ">= 2.7, AIX >= 7.1." @@ -2219,18 +2274,16 @@ msgstr "" "leer datos del almacenamiento de respaldo o esperar por un bloqueo." #: ../Doc/library/os.rst:1502 -#, fuzzy msgid "" "If some data was successfully read, it will return the number of bytes read. " "If no bytes were read, it will return ``-1`` and set errno to :const:`errno." "EAGAIN`." msgstr "" -"Si algunos datos se leyeron con éxito, retornará el número de bytes leídos. " -"Si no se leyeron bytes, retornará ``-1`` y establecerá errno en :data:`errno." -"EAGAIN`." +"Si se leyeron correctamente algunos datos, devolverá la cantidad de bytes " +"leídos. Si no se leyeron bytes, devolverá ``-1`` y establecerá errno en :" +"const:`errno.EAGAIN`." #: ../Doc/library/os.rst:1506 -#, fuzzy msgid ":ref:`Availability `: Linux >= 4.14." msgstr ":ref:`Disponibilidad `: Linux >= 4.14." @@ -2252,7 +2305,6 @@ msgstr "" "archivo abierto con el indicador :data:`O_DIRECT`." #: ../Doc/library/os.rst:1520 -#, fuzzy msgid ":ref:`Availability `: Linux >= 4.6." msgstr ":ref:`Disponibilidad `: Linux >= 4.6." @@ -2262,6 +2314,9 @@ msgid "" "master pseudo-terminal device to which the file descriptor *fd* refers. The " "file descriptor *fd* is not closed upon failure." msgstr "" +"Devuelve el nombre del dispositivo pseudoterminal esclavo asociado con el " +"dispositivo pseudoterminal maestro al que hace referencia el descriptor de " +"archivo *fd*. El descriptor de archivo *fd* no se cierra en caso de error." #: ../Doc/library/os.rst:1531 msgid "" @@ -2269,6 +2324,10 @@ msgid "" "available; otherwise, the C standard library function :c:func:`ptsname`, " "which is not guaranteed to be thread-safe, is called." msgstr "" +"Llama a la función de biblioteca estándar reentrante C :c:func:`ptsname_r` " +"si está disponible; de ​​lo contrario, se llama a la función de biblioteca " +"estándar C :c:func:`ptsname`, que no se garantiza que sea segura para " +"subprocesos." #: ../Doc/library/os.rst:1542 msgid "" @@ -2283,7 +2342,6 @@ msgid "Return the number of bytes actually written." msgstr "Retorna el número de bytes realmente escritos." #: ../Doc/library/os.rst:1554 -#, fuzzy msgid "" "Write the *buffers* contents to file descriptor *fd* at an offset *offset*, " "leaving the file offset unchanged. *buffers* must be a sequence of :term:" @@ -2291,12 +2349,11 @@ msgid "" "order. Entire contents of the first buffer is written before proceeding to " "the second, and so on." msgstr "" -"Escribe los contenidos de los *buffers* en el descriptor de archivo *fd* en " -"un desplazamiento *offset*, dejando el desplazamiento del archivo sin " -"cambios. *buffers* deben ser una secuencia de :term:`objetos tipo bytes " -"`. Los búferes se procesan en orden secuencial. Se " -"escribe todo el contenido del primer búfer antes de pasar al segundo, y así " -"sucesivamente." +"Escribe el contenido de *buffers* en el descriptor de archivo *fd* en un " +"desplazamiento *offset*, sin modificar el desplazamiento del archivo. " +"*buffers* debe ser una secuencia de :term:`bytes-like objects `. Los búferes se procesan en orden de matriz. Se escribe todo el " +"contenido del primer búfer antes de pasar al segundo, y así sucesivamente." #: ../Doc/library/os.rst:1563 msgid ":data:`RWF_DSYNC`" @@ -2328,9 +2385,8 @@ msgstr "" "por la llamada al sistema." #: ../Doc/library/os.rst:1586 ../Doc/library/os.rst:1596 -#, fuzzy msgid ":ref:`Availability `: Linux >= 4.7." -msgstr ":ref:`Disponibilidad `: Linux > 4.7." +msgstr ":ref:`Disponibilidad `: Linux >= 4.7." #: ../Doc/library/os.rst:1593 msgid "" @@ -2358,7 +2414,6 @@ msgstr "" "*offset* es ``-1``, se actualiza el *offset* actual del archivo." #: ../Doc/library/os.rst:1610 -#, fuzzy msgid ":ref:`Availability `: Linux >= 4.16." msgstr ":ref:`Disponibilidad `: Linux >= 4.16." @@ -2487,7 +2542,6 @@ msgstr "" "Consulte también :func:`get_blocking` y :meth:`socket.socket.setblocking`." #: ../Doc/library/os.rst:1718 -#, fuzzy msgid "" "Transfer *count* bytes from file descriptor *src*, starting from offset " "*offset_src*, to file descriptor *dst*, starting from offset *offset_dst*. " @@ -2498,16 +2552,16 @@ msgid "" "in the same filesystem, otherwise an :exc:`OSError` is raised with :attr:" "`~OSError.errno` set to :const:`errno.EXDEV`." msgstr "" -"Transfiera *count* bytes desde el descriptor de archivo *src*, comenzando " -"desde el desplazamiento *offset_src*, al descriptor de archivo *dst*, " -"comenzando desde el desplazamiento *offset_dst*. Al menos uno de los " +"Transfiere los bytes *count* desde el descriptor de archivo *src*, " +"comenzando desde el desplazamiento *offset_src*, al descriptor de archivo " +"*dst*, comenzando desde el desplazamiento *offset_dst*. Al menos uno de los " "descriptores de archivo debe hacer referencia a una tubería. Si *offset_src* " -"es None, entonces *src* se lee desde la posición actual; respectivamente " +"es ``None``, entonces *src* se lee desde la posición actual; respectivamente " "para *offset_dst*. El desplazamiento asociado al descriptor de archivo que " -"hace referencia a una tubería debe ser ``None``. Los archivos señalados por " -"*src* y *dst* deben residir en el mismo sistema de archivos; de lo " +"hace referencia a una tubería debe ser ``None``. Los archivos a los que " +"apuntan *src* y *dst* deben residir en el mismo sistema de archivos; de lo " "contrario, se genera un :exc:`OSError` con :attr:`~OSError.errno` " -"configurado en :data:`errno.EXDEV`." +"establecido en :const:`errno.EXDEV`." #: ../Doc/library/os.rst:1727 msgid "" @@ -2536,10 +2590,8 @@ msgstr "" "al extremo de escritura de la tubería." #: ../Doc/library/os.rst:1738 -#, fuzzy msgid ":ref:`Availability `: Linux >= 2.6.17 with glibc >= 2.5" -msgstr "" -":ref:`Disponibilidad `: Linux >= 2.6.17 con glibc >= 2.5." +msgstr ":ref:`Disponibilidad `: Linux >= 2.6.17 con glibc >= 2.5" #: ../Doc/library/os.rst:1751 msgid "" @@ -2585,10 +2637,13 @@ msgid "" "terminal device to which the file descriptor *fd* refers. The file " "descriptor *fd* is not closed upon failure." msgstr "" +"Desbloquee el dispositivo pseudoterminal esclavo asociado con el dispositivo " +"pseudoterminal maestro al que hace referencia el descriptor de archivo *fd*. " +"El descriptor de archivo *fd* no se cierra en caso de falla." #: ../Doc/library/os.rst:1798 msgid "Calls the C standard library function :c:func:`unlockpt`." -msgstr "" +msgstr "Llama a la función de la biblioteca estándar C :c:func:`unlockpt`." #: ../Doc/library/os.rst:1807 msgid "Write the bytestring in *str* to file descriptor *fd*." @@ -2720,11 +2775,10 @@ msgstr "" "heredables sólo se heredan si el parámetro *close_fds* es ``False``." #: ../Doc/library/os.rst:1901 -#, fuzzy msgid "On WebAssembly platforms, the file descriptor cannot be modified." msgstr "" -"En las plataformas WebAssembly ``wasm32-emscripten`` y ``wasm32-wasi``, el " -"descriptor de archivo no se puede modificar." +"En las plataformas WebAssembly, el descriptor de archivo no se puede " +"modificar." #: ../Doc/library/os.rst:1905 msgid "" @@ -2926,6 +2980,10 @@ msgid "" " return fp.read()\n" "return \"some default data\"" msgstr "" +"if os.access(\"myfile\", os.R_OK):\n" +" with open(\"myfile\") as fp:\n" +" return fp.read()\n" +"return \"some default data\"" #: ../Doc/library/os.rst:2010 msgid "is better written as::" @@ -2941,6 +2999,13 @@ msgid "" " with fp:\n" " return fp.read()" msgstr "" +"try:\n" +" fp = open(\"myfile\")\n" +"except PermissionError:\n" +" return \"some default data\"\n" +"else:\n" +" with fp:\n" +" return fp.read()" #: ../Doc/library/os.rst:2022 msgid "" @@ -3015,64 +3080,52 @@ msgstr "" "el módulo :mod:`stat`):" #: ../Doc/library/os.rst:2070 -#, fuzzy msgid ":const:`stat.UF_NODUMP`" -msgstr ":data:`stat.UF_NODUMP`" +msgstr ":const:`stat.UF_NODUMP`" #: ../Doc/library/os.rst:2071 -#, fuzzy msgid ":const:`stat.UF_IMMUTABLE`" -msgstr ":data:`stat.UF_IMMUTABLE`" +msgstr ":const:`stat.UF_IMMUTABLE`" #: ../Doc/library/os.rst:2072 -#, fuzzy msgid ":const:`stat.UF_APPEND`" -msgstr ":data:`stat.UF_APPEND`" +msgstr ":const:`stat.UF_APPEND`" #: ../Doc/library/os.rst:2073 -#, fuzzy msgid ":const:`stat.UF_OPAQUE`" -msgstr ":data:`stat.UF_OPAQUE`" +msgstr ":const:`stat.UF_OPAQUE`" #: ../Doc/library/os.rst:2074 -#, fuzzy msgid ":const:`stat.UF_NOUNLINK`" -msgstr ":data:`stat.UF_NOUNLINK`" +msgstr ":const:`stat.UF_NOUNLINK`" #: ../Doc/library/os.rst:2075 -#, fuzzy msgid ":const:`stat.UF_COMPRESSED`" -msgstr ":data:`stat.UF_COMPRESSED`" +msgstr ":const:`stat.UF_COMPRESSED`" #: ../Doc/library/os.rst:2076 -#, fuzzy msgid ":const:`stat.UF_HIDDEN`" -msgstr ":data:`stat.UF_HIDDEN`" +msgstr ":const:`stat.UF_HIDDEN`" #: ../Doc/library/os.rst:2077 -#, fuzzy msgid ":const:`stat.SF_ARCHIVED`" -msgstr ":data:`stat.SF_ARCHIVED`" +msgstr ":const:`stat.SF_ARCHIVED`" #: ../Doc/library/os.rst:2078 -#, fuzzy msgid ":const:`stat.SF_IMMUTABLE`" -msgstr ":data:`stat.SF_IMMUTABLE`" +msgstr ":const:`stat.SF_IMMUTABLE`" #: ../Doc/library/os.rst:2079 -#, fuzzy msgid ":const:`stat.SF_APPEND`" -msgstr ":data:`stat.SF_APPEND`" +msgstr ":const:`stat.SF_APPEND`" #: ../Doc/library/os.rst:2080 -#, fuzzy msgid ":const:`stat.SF_NOUNLINK`" -msgstr ":data:`stat.SF_NOUNLINK`" +msgstr ":const:`stat.SF_NOUNLINK`" #: ../Doc/library/os.rst:2081 -#, fuzzy msgid ":const:`stat.SF_SNAPSHOT`" -msgstr ":data:`stat.SF_SNAPSHOT`" +msgstr ":const:`stat.SF_SNAPSHOT`" #: ../Doc/library/os.rst:2083 msgid "" @@ -3090,9 +3143,8 @@ msgstr "" "``path``, ``flags``." #: ../Doc/library/os.rst:2089 -#, fuzzy msgid "Added the *follow_symlinks* parameter." -msgstr "El argumento *follow_symlinks*." +msgstr "Se agregó el argumento *follow_symlinks*." #: ../Doc/library/os.rst:2098 msgid "" @@ -3105,99 +3157,80 @@ msgstr "" "combinaciones OR de bit a bit de ellos:" #: ../Doc/library/os.rst:2102 -#, fuzzy msgid ":const:`stat.S_ISUID`" -msgstr ":data:`stat.S_ISUID`" +msgstr ":const:`stat.S_ISUID`" #: ../Doc/library/os.rst:2103 -#, fuzzy msgid ":const:`stat.S_ISGID`" -msgstr ":data:`stat.S_ISGID`" +msgstr ":const:`stat.S_ISGID`" #: ../Doc/library/os.rst:2104 -#, fuzzy msgid ":const:`stat.S_ENFMT`" -msgstr ":data:`stat.S_ENFMT`" +msgstr ":const:`stat.S_ENFMT`" #: ../Doc/library/os.rst:2105 -#, fuzzy msgid ":const:`stat.S_ISVTX`" -msgstr ":data:`stat.S_ISVTX`" +msgstr ":const:`stat.S_ISVTX`" #: ../Doc/library/os.rst:2106 -#, fuzzy msgid ":const:`stat.S_IREAD`" -msgstr ":data:`stat.S_IREAD`" +msgstr ":const:`stat.S_IREAD`" #: ../Doc/library/os.rst:2107 -#, fuzzy msgid ":const:`stat.S_IWRITE`" -msgstr ":data:`stat.S_IWRITE`" +msgstr ":const:`stat.S_IWRITE`" #: ../Doc/library/os.rst:2108 -#, fuzzy msgid ":const:`stat.S_IEXEC`" -msgstr ":data:`stat.S_IEXEC`" +msgstr ":const:`stat.S_IEXEC`" #: ../Doc/library/os.rst:2109 -#, fuzzy msgid ":const:`stat.S_IRWXU`" -msgstr ":data:`stat.S_IRWXU`" +msgstr ":const:`stat.S_IRWXU`" #: ../Doc/library/os.rst:2110 -#, fuzzy msgid ":const:`stat.S_IRUSR`" -msgstr ":data:`stat.S_IRUSR`" +msgstr ":const:`stat.S_IRUSR`" #: ../Doc/library/os.rst:2111 -#, fuzzy msgid ":const:`stat.S_IWUSR`" -msgstr ":data:`stat.S_IWUSR`" +msgstr ":const:`stat.S_IWUSR`" #: ../Doc/library/os.rst:2112 -#, fuzzy msgid ":const:`stat.S_IXUSR`" -msgstr ":data:`stat.S_IXUSR`" +msgstr ":const:`stat.S_IXUSR`" #: ../Doc/library/os.rst:2113 -#, fuzzy msgid ":const:`stat.S_IRWXG`" -msgstr ":data:`stat.S_IRWXG`" +msgstr ":const:`stat.S_IRWXG`" #: ../Doc/library/os.rst:2114 -#, fuzzy msgid ":const:`stat.S_IRGRP`" -msgstr ":data:`stat.S_IRGRP`" +msgstr ":const:`stat.S_IRGRP`" #: ../Doc/library/os.rst:2115 -#, fuzzy msgid ":const:`stat.S_IWGRP`" -msgstr ":data:`stat.S_IWGRP`" +msgstr ":const:`stat.S_IWGRP`" #: ../Doc/library/os.rst:2116 -#, fuzzy msgid ":const:`stat.S_IXGRP`" -msgstr ":data:`stat.S_IXGRP`" +msgstr ":const:`stat.S_IXGRP`" #: ../Doc/library/os.rst:2117 -#, fuzzy msgid ":const:`stat.S_IRWXO`" -msgstr ":data:`stat.S_IRWXO`" +msgstr ":const:`stat.S_IRWXO`" #: ../Doc/library/os.rst:2118 -#, fuzzy msgid ":const:`stat.S_IROTH`" -msgstr ":data:`stat.S_IROTH`" +msgstr ":const:`stat.S_IROTH`" #: ../Doc/library/os.rst:2119 -#, fuzzy msgid ":const:`stat.S_IWOTH`" -msgstr ":data:`stat.S_IWOTH`" +msgstr ":const:`stat.S_IWOTH`" #: ../Doc/library/os.rst:2120 -#, fuzzy msgid ":const:`stat.S_IXOTH`" -msgstr ":data:`stat.S_IXOTH`" +msgstr ":const:`stat.S_IXOTH`" #: ../Doc/library/os.rst:2122 ../Doc/library/os.rst:2155 #: ../Doc/library/os.rst:3546 @@ -3211,17 +3244,17 @@ msgstr "" "y :ref:`no seguir enlaces simbólicos `." #: ../Doc/library/os.rst:2128 -#, fuzzy msgid "" "Although Windows supports :func:`chmod`, you can only set the file's read-" "only flag with it (via the ``stat.S_IWRITE`` and ``stat.S_IREAD`` constants " "or a corresponding integer value). All other bits are ignored. The default " "value of *follow_symlinks* is ``False`` on Windows." msgstr "" -"Aunque Windows admite :func:`chmod`, sólo puede establecer el indicador de " -"sólo lectura del archivo (a través de las constantes ``stat.S_IWRITE`` y " -"``stat.S_IREAD`` o un valor entero correspondiente). Todos los demás bits " -"son ignorados." +"Aunque Windows admite :func:`chmod`, solo se puede configurar el indicador " +"de solo lectura del archivo con él (a través de las constantes ``stat." +"S_IWRITE`` y ``stat.S_IREAD`` o un valor entero correspondiente). Se ignoran " +"todos los demás bits. El valor predeterminado de *follow_symlinks* es " +"``False`` en Windows." #: ../Doc/library/os.rst:2138 ../Doc/library/os.rst:2169 msgid "" @@ -3232,13 +3265,12 @@ msgstr "" "abierto, y los argumentos *dir_fd* y *follow_symlinks*." #: ../Doc/library/os.rst:2145 -#, fuzzy msgid "" "Added support for a file descriptor and the *follow_symlinks* argument on " "Windows." msgstr "" -"Se agregó soporte para especificar *path* como un descriptor de archivo " -"abierto, y los argumentos *dir_fd* y *follow_symlinks*." +"Se agregó soporte para un descriptor de archivo y el argumento " +"*follow_symlinks* en Windows." #: ../Doc/library/os.rst:2152 msgid "" @@ -3322,14 +3354,16 @@ msgid "" "``lchmod()`` is not part of POSIX, but Unix implementations may have it if " "changing the mode of symbolic links is supported." msgstr "" +"``lchmod()`` no es parte de POSIX, pero las implementaciones de Unix pueden " +"tenerlo si se admite el cambio del modo de enlaces simbólicos." #: ../Doc/library/os.rst:2239 -#, fuzzy msgid "" ":ref:`Availability `: Unix, Windows, not Linux, FreeBSD >= " "1.3, NetBSD >= 1.3, not OpenBSD" msgstr "" -":ref:`Disponibilidad `: Unix, Windows, no Emscripten, no WASI." +":ref:`Disponibilidad `: Unix, Windows, no Linux, FreeBSD >= " +"1.3, NetBSD >= 1.3, no OpenBSD" #: ../Doc/library/os.rst:2249 msgid "" @@ -3369,10 +3403,9 @@ msgid "Added Windows support." msgstr "Se agregó soporte para Windows." #: ../Doc/library/os.rst:2276 -#, fuzzy msgid "Added the *src_dir_fd*, *dst_dir_fd*, and *follow_symlinks* parameters." msgstr "" -"Se agregaron los argumentos *src_dir_fd*, *dst_dir_fd* y *follow_symlinks*." +"Se agregaron los parámetros *src_dir_fd*, *dst_dir_fd* y *follow_symlinks*." #: ../Doc/library/os.rst:2279 ../Doc/library/os.rst:2703 #: ../Doc/library/os.rst:2740 ../Doc/library/os.rst:3468 @@ -3451,6 +3484,8 @@ msgstr "" #: ../Doc/library/os.rst:2322 msgid "Return a list containing the names of drives on a Windows system." msgstr "" +"Devuelve una lista que contiene los nombres de las unidades en un sistema " +"Windows." #: ../Doc/library/os.rst:2324 msgid "" @@ -3459,29 +3494,35 @@ msgid "" "reasons, including permissions, network connectivity or missing media. This " "function does not test for access." msgstr "" +"El nombre de una unidad suele ser ``'C:\\\\'``. No todos los nombres de " +"unidades se asociarán a un volumen y es posible que algunas sean " +"inaccesibles por diversos motivos, incluidos permisos, conectividad de red o " +"medios faltantes. Esta función no prueba el acceso." #: ../Doc/library/os.rst:2329 msgid "May raise :exc:`OSError` if an error occurs collecting the drive names." msgstr "" +"Puede generar :exc:`OSError` si ocurre un error al recopilar los nombres de " +"las unidades." #: ../Doc/library/os.rst:2332 -#, fuzzy msgid "" "Raises an :ref:`auditing event ` ``os.listdrives`` with no " "arguments." msgstr "" -"Lanza un :ref:`evento de auditoría ` ``os.fork`` sin argumentos." +"Genera un :ref:`auditing event ` ``os.listdrives`` sin argumentos." #: ../Doc/library/os.rst:2334 ../Doc/library/os.rst:2358 #: ../Doc/library/os.rst:2378 -#, fuzzy msgid ":ref:`Availability `: Windows" -msgstr ":ref:`Disponibilidad `: Windows." +msgstr ":ref:`Disponibilidad `: Windows" #: ../Doc/library/os.rst:2341 msgid "" "Return a list containing the mount points for a volume on a Windows system." msgstr "" +"Devuelve una lista que contiene los puntos de montaje de un volumen en un " +"sistema Windows." #: ../Doc/library/os.rst:2344 msgid "" @@ -3490,31 +3531,39 @@ msgid "" "all. In the latter case, the list will be empty. Mount points that are not " "associated with a volume will not be returned by this function." msgstr "" +"*volume* debe representarse como una ruta GUID, como las que devuelve :func:" +"`os.listvolumes`. Los volúmenes pueden montarse en varias ubicaciones o no " +"montarse en ninguna. En este último caso, la lista estará vacía. Esta " +"función no devolverá los puntos de montaje que no estén asociados a un " +"volumen." #: ../Doc/library/os.rst:2350 msgid "" "The mount points return by this function will be absolute paths, and may be " "longer than the drive name." msgstr "" +"Los puntos de montaje devueltos por esta función serán rutas absolutas y " +"pueden ser más largos que el nombre de la unidad." #: ../Doc/library/os.rst:2353 msgid "" "Raises :exc:`OSError` if the volume is not recognized or if an error occurs " "collecting the paths." msgstr "" +"Genera :exc:`OSError` si no se reconoce el volumen o si se produce un error " +"al recopilar las rutas." #: ../Doc/library/os.rst:2356 -#, fuzzy msgid "" "Raises an :ref:`auditing event ` ``os.listmounts`` with argument " "``volume``." msgstr "" -"Lanza un :ref:`evento de auditoría ` ``os.system`` con argumento " -"``command``." +"Genera un :ref:`auditing event ` ``os.listmounts`` con el " +"argumento ``volume``." #: ../Doc/library/os.rst:2365 msgid "Return a list containing the volumes in the system." -msgstr "" +msgstr "Devuelve una lista que contiene los volúmenes del sistema." #: ../Doc/library/os.rst:2367 msgid "" @@ -3524,29 +3573,34 @@ msgid "" "generally not familiar with them, and so the recommended use of this " "function is to retrieve mount points using :func:`os.listmounts`." msgstr "" +"Los volúmenes se representan normalmente como una ruta GUID similar a ``\\\\?" +"\\Volume{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}\\``. Normalmente, se puede " +"acceder a los archivos a través de una ruta GUID, si los permisos lo " +"permiten. Sin embargo, los usuarios no suelen estar familiarizados con " +"ellos, por lo que el uso recomendado de esta función es recuperar los puntos " +"de montaje mediante :func:`os.listmounts`." #: ../Doc/library/os.rst:2374 msgid "May raise :exc:`OSError` if an error occurs collecting the volumes." msgstr "" +"Puede generar :exc:`OSError` si ocurre un error al recopilar los volúmenes." #: ../Doc/library/os.rst:2376 -#, fuzzy msgid "" "Raises an :ref:`auditing event ` ``os.listvolumes`` with no " "arguments." msgstr "" -"Lanza un :ref:`evento de auditoría ` ``os.fork`` sin argumentos." +"Genera un :ref:`auditing event ` ``os.listvolumes`` sin argumentos." #: ../Doc/library/os.rst:2385 -#, fuzzy msgid "" "Perform the equivalent of an :c:func:`!lstat` system call on the given path. " "Similar to :func:`~os.stat`, but does not follow symbolic links. Return a :" "class:`stat_result` object." msgstr "" -"Realice el equivalente de una llamada al sistema :c:func:`lstat` en la ruta " -"dada. Similar a :func:`~os.stat`, pero no sigue enlaces simbólicos. Retorna " -"un objeto :class:`stat_result`." +"Realiza el equivalente de una llamada al sistema :c:func:`!lstat` en la ruta " +"indicada. Similar a :func:`~os.stat`, pero no sigue enlaces simbólicos. " +"Devuelve un objeto :class:`stat_result`." #: ../Doc/library/os.rst:2389 msgid "" @@ -3624,6 +3678,9 @@ msgid "" "control to the new directory such that only the current user and " "administrators have access. Other values of *mode* are ignored." msgstr "" +"En Windows, se maneja específicamente un *mode* o ``0o700`` para aplicar el " +"control de acceso al nuevo directorio de modo que solo el usuario actual y " +"los administradores tengan acceso. Se ignoran otros valores de *mode*." #: ../Doc/library/os.rst:2440 msgid "" @@ -3643,7 +3700,7 @@ msgstr "" #: ../Doc/library/os.rst:2451 msgid "Windows now handles a *mode* of ``0o700``." -msgstr "" +msgstr "Windows ahora maneja un *mode* o ``0o700``." #: ../Doc/library/os.rst:2461 msgid "" @@ -3690,9 +3747,8 @@ msgid "This function handles UNC paths correctly." msgstr "Esta función maneja las rutas UNC correctamente." #: ../Doc/library/os.rst:2482 -#, fuzzy msgid "Added the *exist_ok* parameter." -msgstr "El parámetro *exist_ok*." +msgstr "Se agregó el parámetro *exist_ok*." #: ../Doc/library/os.rst:2487 msgid "" @@ -3758,24 +3814,22 @@ msgstr "" "`os.makedev`), de lo contrario se ignora." #: ../Doc/library/os.rst:2547 -#, fuzzy msgid "" "Extract the device major number from a raw device number (usually the :attr:" "`st_dev` or :attr:`st_rdev` field from :c:struct:`stat`)." msgstr "" "Extrae el número principal del dispositivo de un número de dispositivo sin " -"formato (generalmente el campo :attr:`st_dev` o :attr:`st_rdev` de :c:type:" -"`stat`)." +"procesar (generalmente el campo :attr:`st_dev` o :attr:`st_rdev` de :c:" +"struct:`stat`)." #: ../Doc/library/os.rst:2553 -#, fuzzy msgid "" "Extract the device minor number from a raw device number (usually the :attr:" "`st_dev` or :attr:`st_rdev` field from :c:struct:`stat`)." msgstr "" "Extrae el número menor del dispositivo de un número de dispositivo sin " -"formato (generalmente el campo :attr:`st_dev` o :attr:`st_rdev` de :c:type:" -"`stat`)." +"procesar (generalmente el campo :attr:`st_dev` o :attr:`st_rdev` de :c:" +"struct:`stat`)." #: ../Doc/library/os.rst:2559 msgid "Compose a raw device number from the major and minor device numbers." @@ -3875,15 +3929,14 @@ msgstr "" "anteriormente." #: ../Doc/library/os.rst:2634 -#, fuzzy msgid "" "Remove (delete) the file *path*. If *path* is a directory, an :exc:" "`OSError` is raised. Use :func:`rmdir` to remove directories. If the file " "does not exist, a :exc:`FileNotFoundError` is raised." msgstr "" -"Quite (elimine) el archivo *path*. Si *path* es un directorio, se genera un :" -"exc:`IsADirectoryError`. Utilice :func:`rmdir` para eliminar directorios. Si " -"el archivo no existe, se lanza un :exc:`FileNotFoundError`." +"Eliminar (borrar) el archivo *path*. Si *path* es un directorio, se genera " +"un error :exc:`OSError`. Utilice :func:`rmdir` para eliminar directorios. Si " +"el archivo no existe, se genera un error :exc:`FileNotFoundError`." #: ../Doc/library/os.rst:2638 ../Doc/library/os.rst:2751 #: ../Doc/library/os.rst:3440 @@ -3953,6 +4006,10 @@ msgid "" "operation may fail if *src* and *dst* are on different filesystems. Use :" "func:`shutil.move` to support moves to a different filesystem." msgstr "" +"En Windows, si existe *dst*, siempre se genera un :exc:`FileExistsError`. La " +"operación puede fallar si *src* y *dst* están en sistemas de archivos " +"diferentes. Utilice :func:`shutil.move` para admitir movimientos a un " +"sistema de archivos diferente." #: ../Doc/library/os.rst:2684 msgid "" @@ -4001,9 +4058,8 @@ msgstr "" "``src``, ``dst``, ``src_dir_fd``, ``dst_dir_fd``." #: ../Doc/library/os.rst:2700 -#, fuzzy msgid "Added the *src_dir_fd* and *dst_dir_fd* parameters." -msgstr "Los argumentos *src_dir_fd* y *dst_dir_fd*." +msgstr "Se agregaron los parámetros *src_dir_fd* y *dst_dir_fd*." #: ../Doc/library/os.rst:2709 msgid "" @@ -4169,6 +4225,10 @@ msgid "" " if not entry.name.startswith('.') and entry.is_file():\n" " print(entry.name)" msgstr "" +"with os.scandir(path) as it:\n" +" for entry in it:\n" +" if not entry.name.startswith('.') and entry.is_file():\n" +" print(entry.name)" #: ../Doc/library/os.rst:2819 msgid "" @@ -4190,16 +4250,16 @@ msgstr "" "aspx>`_." #: ../Doc/library/os.rst:2831 -#, fuzzy msgid "" "Added support for the :term:`context manager` protocol and the :func:" "`~scandir.close` method. If a :func:`scandir` iterator is neither exhausted " "nor explicitly closed a :exc:`ResourceWarning` will be emitted in its " "destructor." msgstr "" -"Se agregó soporte para el protocolo :term:`context manager` y el método :" -"func:`~scandir.close()`. Si un iterador :func:`scandir` no está agotado ni " -"cerrado explícitamente, se emitirá a :exc:`ResourceWarning` en su destructor." +"Se agregó compatibilidad con el protocolo :term:`context manager` y el " +"método :func:`~scandir.close`. Si un iterador :func:`scandir` no se agota ni " +"se cierra explícitamente, se emitirá un :exc:`ResourceWarning` en su " +"destructor." #: ../Doc/library/os.rst:2837 msgid "The function accepts a :term:`path-like object`." @@ -4449,24 +4509,22 @@ msgstr "" "DT_UNKNOWN``." #: ../Doc/library/os.rst:2956 -#, fuzzy msgid "" "Return ``True`` if this entry is a junction (even if broken); return " "``False`` if the entry points to a regular directory, any kind of file, a " "symlink, or if it doesn't exist anymore." msgstr "" -"Retorna ``True`` si esta entrada es un enlace simbólico (incluso si está " -"roto); retorna ``False`` si la entrada apunta a un directorio o cualquier " -"tipo de archivo, o si ya no existe." +"Devuelve ``True`` si esta entrada es una unión (incluso si está rota); " +"devuelve ``False`` si la entrada apunta a un directorio normal, cualquier " +"tipo de archivo, un enlace simbólico o si ya no existe." #: ../Doc/library/os.rst:2960 -#, fuzzy msgid "" "The result is cached on the ``os.DirEntry`` object. Call :func:`os.path." "isjunction` to fetch up-to-date information." msgstr "" "El resultado se almacena en caché en el objeto ``os.DirEntry``. Llame a :" -"func:`os.path.islink` para obtener información actualizada." +"func:`os.path.isjunction` para obtener información actualizada." #: ../Doc/library/os.rst:2967 msgid "" @@ -4510,7 +4568,6 @@ msgstr "" "stat` para obtener información actualizada." #: ../Doc/library/os.rst:2984 -#, fuzzy msgid "" "Note that there is a nice correspondence between several attributes and " "methods of ``os.DirEntry`` and of :class:`pathlib.Path`. In particular, the " @@ -4518,9 +4575,10 @@ msgid "" "``is_file()``, ``is_symlink()``, ``is_junction()``, and ``stat()`` methods." msgstr "" "Tenga en cuenta que existe una buena correspondencia entre varios atributos " -"y métodos de ``os.DirEntry`` y de :class:`pathlib.Path`. En particular, el " +"y métodos de ``os.DirEntry`` y :class:`pathlib.Path`. En particular, el " "atributo ``name`` tiene el mismo significado, al igual que los métodos " -"``is_dir()``, ``is_file()``, ``is_symlink()`` y ``stat()``." +"``is_dir()``, ``is_file()``, ``is_symlink()``, ``is_junction()`` y " +"``stat()``." #: ../Doc/library/os.rst:2992 msgid "" @@ -4537,6 +4595,10 @@ msgid "" "future ``st_ctime`` may be changed to return zero or the metadata change " "time, if available." msgstr "" +"El atributo ``st_ctime`` de un resultado estadístico está obsoleto en " +"Windows. La hora de creación del archivo está disponible correctamente como " +"``st_birthtime`` y, en el futuro, ``st_ctime`` puede cambiarse para que " +"devuelva cero o la hora de cambio de metadatos, si está disponible." #: ../Doc/library/os.rst:3005 msgid "" @@ -4598,12 +4660,7 @@ msgstr "" #: ../Doc/library/os.rst:3030 ../Doc/library/os.rst:3799 msgid "Example::" -msgstr "" -"El diseño de todos los módulos incorporados de Python dependientes del " -"sistema operativo es tal que, mientras funcionalidad esté disponible, usará " -"la misma interfaz; por ejemplo, la función ``os.stat(path)`` retorna " -"estadísticas sobre la ruta (*path*) en el mismo formato (lo que sucede " -"originalmente con la interfaz POSIX)." +msgstr "Ejemplo::" #: ../Doc/library/os.rst:3032 msgid "" @@ -4616,18 +4673,25 @@ msgid "" ">>> statinfo.st_size\n" "264" msgstr "" +">>> import os\n" +">>> statinfo = os.stat('somefile.txt')\n" +">>> statinfo\n" +"os.stat_result(st_mode=33188, st_ino=7876932, st_dev=234881026,\n" +"st_nlink=1, st_uid=501, st_gid=501, st_size=264, st_atime=1297230295,\n" +"st_mtime=1297230027, st_ctime=1297230027)\n" +">>> statinfo.st_size\n" +"264" #: ../Doc/library/os.rst:3043 msgid ":func:`fstat` and :func:`lstat` functions." msgstr ":func:`fstat` y funciones :func:`lstat`." #: ../Doc/library/os.rst:3045 -#, fuzzy msgid "" "Added the *dir_fd* and *follow_symlinks* parameters, specifying a file " "descriptor instead of a path." msgstr "" -"Se agregaron los argumentos *dir_fd* y *follow_symlinks*, especificando un " +"Se agregaron los parámetros *dir_fd* y *follow_symlinks*, especificando un " "descriptor de archivo en lugar de una ruta." #: ../Doc/library/os.rst:3052 @@ -4647,15 +4711,14 @@ msgstr "" "``follow_symlinks=False`` en lugar de generar un error." #: ../Doc/library/os.rst:3063 -#, fuzzy msgid "" "Object whose attributes correspond roughly to the members of the :c:struct:" "`stat` structure. It is used for the result of :func:`os.stat`, :func:`os." "fstat` and :func:`os.lstat`." msgstr "" "Objeto cuyos atributos corresponden aproximadamente a los miembros de la " -"estructura :c:type:`stat`. Se utiliza para el resultado de :func:`os.stat`, :" -"func:`os.fstat` y :func:`os.lstat`." +"estructura :c:struct:`stat`. Se utiliza para el resultado de :func:`os." +"stat`, :func:`os.fstat` y :func:`os.lstat`." #: ../Doc/library/os.rst:3067 msgid "Attributes:" @@ -4725,9 +4788,8 @@ msgstr "" "Tiempo de modificación de contenido más reciente expresado en segundos." #: ../Doc/library/os.rst:3117 -#, fuzzy msgid "Time of most recent metadata change expressed in seconds." -msgstr "Tiempo de acceso más reciente expresado en segundos." +msgstr "Hora del cambio de metadatos más reciente expresado en segundos." #: ../Doc/library/os.rst:3119 msgid "" @@ -4735,6 +4797,9 @@ msgid "" "creation time. In the future, ``st_ctime`` will contain the time of the most " "recent metadata change, as for other platforms." msgstr "" +"``st_ctime`` está obsoleto en Windows. Utilice ``st_birthtime`` para indicar " +"la hora de creación del archivo. En el futuro, ``st_ctime`` contendrá la " +"hora del cambio de metadatos más reciente, como en otras plataformas." #: ../Doc/library/os.rst:3126 msgid "Time of most recent access expressed in nanoseconds as an integer." @@ -4750,11 +4815,11 @@ msgstr "" "como un entero." #: ../Doc/library/os.rst:3139 -#, fuzzy msgid "" "Time of most recent metadata change expressed in nanoseconds as an integer." msgstr "" -"Tiempo de acceso más reciente expresado en nanosegundos como un entero." +"Hora del cambio de metadatos más reciente expresado en nanosegundos como un " +"número entero." #: ../Doc/library/os.rst:3144 msgid "" @@ -4762,26 +4827,33 @@ msgid "" "file creation time. In the future, ``st_ctime`` will contain the time of the " "most recent metadata change, as for other platforms." msgstr "" +"``st_ctime_ns`` está obsoleto en Windows. Utilice ``st_birthtime_ns`` para " +"indicar la hora de creación del archivo. En el futuro, ``st_ctime`` " +"contendrá la hora del cambio de metadatos más reciente, como en otras " +"plataformas." #: ../Doc/library/os.rst:3151 msgid "" "Time of file creation expressed in seconds. This attribute is not always " "available, and may raise :exc:`AttributeError`." msgstr "" +"Hora de creación del archivo expresada en segundos. Este atributo no siempre " +"está disponible y puede generar el error :exc:`AttributeError`." #: ../Doc/library/os.rst:3154 -#, fuzzy msgid "``st_birthtime`` is now available on Windows." -msgstr "Esta función no está disponible en MacOS." +msgstr "``st_birthtime`` ahora está disponible en Windows." #: ../Doc/library/os.rst:3159 msgid "" "Time of file creation expressed in nanoseconds as an integer. This attribute " "is not always available, and may raise :exc:`AttributeError`." msgstr "" +"Hora de creación del archivo expresada en nanosegundos como un número " +"entero. Este atributo no siempre está disponible y puede generar el error :" +"exc:`AttributeError`." #: ../Doc/library/os.rst:3167 -#, fuzzy msgid "" "The exact meaning and resolution of the :attr:`st_atime`, :attr:`st_mtime`, :" "attr:`st_ctime` and :attr:`st_birthtime` attributes depend on the operating " @@ -4790,15 +4862,15 @@ msgid "" "has only 1-day resolution. See your operating system documentation for " "details." msgstr "" -"El significado exacto y la resolución de los atributos :attr:`st_atime`, :" -"attr:`st_mtime` y :attr:`st_ctime` dependen del sistema operativo y del " -"sistema de archivos. Por ejemplo, en sistemas Windows que utilizan los " -"sistemas de archivos FAT o FAT32, :attr:`st_mtime` tiene una resolución de 2 " -"segundos y :attr:`st_atime` tiene una resolución de solo 1 día. Consulte la " -"documentación de su sistema operativo para más detalles." +"El significado y la resolución exactos de los atributos :attr:`st_atime`, :" +"attr:`st_mtime`, :attr:`st_ctime` y :attr:`st_birthtime` dependen del " +"sistema operativo y del sistema de archivos. Por ejemplo, en los sistemas " +"Windows que utilizan sistemas de archivos FAT32, :attr:`st_mtime` tiene una " +"resolución de 2 segundos y :attr:`st_atime` tiene una resolución de solo 1 " +"día. Consulte la documentación de su sistema operativo para obtener más " +"detalles." #: ../Doc/library/os.rst:3174 -#, fuzzy msgid "" "Similarly, although :attr:`st_atime_ns`, :attr:`st_mtime_ns`, :attr:" "`st_ctime_ns` and :attr:`st_birthtime_ns` are always expressed in " @@ -4810,14 +4882,15 @@ msgid "" "`st_atime_ns`, :attr:`st_mtime_ns`, :attr:`st_ctime_ns` and :attr:" "`st_birthtime_ns`." msgstr "" -"De manera similar, aunque :attr:`st_atime_ns`, :attr:`st_mtime_ns` y :attr:" -"`st_ctime_ns` siempre se expresan en nanosegundos, muchos sistemas no " -"proporcionan precisión en nanosegundos. En los sistemas que proporcionan " -"precisión en nanosegundos, el objeto de punto flotante utilizado para " -"almacenar :attr:`st_atime`, :attr:`st_mtime`, y :attr:`st_ctime` no puede " -"preservarlo todo, y como tal será ligeramente inexacto . Si necesita las " -"marcas de tiempo exactas, siempre debe usar :attr:`st_atime_ns`, :attr:" -"`st_mtime_ns` y :attr:`st_ctime_ns`." +"De manera similar, aunque :attr:`st_atime_ns`, :attr:`st_mtime_ns`, :attr:" +"`st_ctime_ns` y :attr:`st_birthtime_ns` siempre se expresan en nanosegundos, " +"muchos sistemas no proporcionan precisión en nanosegundos. En los sistemas " +"que sí proporcionan precisión en nanosegundos, el objeto de punto flotante " +"utilizado para almacenar :attr:`st_atime`, :attr:`st_mtime`, :attr:" +"`st_ctime` y :attr:`st_birthtime` no puede conservarlo todo y, por lo tanto, " +"será ligeramente inexacto. Si necesita las marcas de tiempo exactas, siempre " +"debe utilizar :attr:`st_atime_ns`, :attr:`st_mtime_ns`, :attr:`st_ctime_ns` " +"y :attr:`st_birthtime_ns`." #: ../Doc/library/os.rst:3184 msgid "" @@ -4903,44 +4976,40 @@ msgstr "" "En los sistemas Windows, los siguientes atributos también están disponibles:" #: ../Doc/library/os.rst:3238 -#, fuzzy msgid "" "Windows file attributes: ``dwFileAttributes`` member of the " "``BY_HANDLE_FILE_INFORMATION`` structure returned by :c:func:`!" "GetFileInformationByHandle`. See the :const:`!FILE_ATTRIBUTE_* ` constants in the :mod:`stat` module." msgstr "" -"Atributos del archivo de Windows: miembro ``dwFileAttributes`` de la " -"estructura ``BY_HANDLE_FILE_INFORMATION`` retornado por :c:func:" -"`GetFileInformationByHandle`. Vea las constantes ``FILE_ATTRIBUTE_*`` en el " -"módulo :mod:`stat`." +"Atributos de archivo de Windows: ``dwFileAttributes`` miembro de la " +"estructura ``BY_HANDLE_FILE_INFORMATION`` devuelta por :c:func:`!" +"GetFileInformationByHandle`. Consulte las constantes :const:`!" +"FILE_ATTRIBUTE_* ` en el módulo :mod:`stat`." #: ../Doc/library/os.rst:3248 -#, fuzzy msgid "" "When :attr:`st_file_attributes` has the :const:`~stat." "FILE_ATTRIBUTE_REPARSE_POINT` set, this field contains the tag identifying " "the type of reparse point. See the :const:`IO_REPARSE_TAG_* ` constants in the :mod:`stat` module." msgstr "" -"Cuando :attr:`st_file_attributes` tiene el conjunto " -"``FILE_ATTRIBUTE_REPARSE_POINT``, este campo contiene la etiqueta que " -"identifica el tipo de punto de análisis. Vea las constantes " -"``IO_REPARSE_TAG_*`` en el módulo :mod:`stat`." +"Cuando :attr:`st_file_attributes` tiene :const:`~stat." +"FILE_ATTRIBUTE_REPARSE_POINT` configurado, este campo contiene la etiqueta " +"que identifica el tipo de punto de análisis. Consulte las constantes :const:" +"`IO_REPARSE_TAG_* ` en el módulo :mod:`stat`." #: ../Doc/library/os.rst:3253 -#, fuzzy msgid "" "The standard module :mod:`stat` defines functions and constants that are " "useful for extracting information from a :c:struct:`stat` structure. (On " "Windows, some items are filled with dummy values.)" msgstr "" "El módulo estándar :mod:`stat` define funciones y constantes que son útiles " -"para extraer información de la estructura a :c:type:`stat`. (En Windows, " -"algunos elementos están llenos de valores ficticios)." +"para extraer información de una estructura :c:struct:`stat`. (En Windows, " +"algunos elementos se rellenan con valores ficticios)." #: ../Doc/library/os.rst:3257 -#, fuzzy msgid "" "For backward compatibility, a :class:`stat_result` instance is also " "accessible as a tuple of at least 10 integers giving the most important (and " @@ -4951,15 +5020,15 @@ msgid "" "implementations. For compatibility with older Python versions, accessing :" "class:`stat_result` as a tuple always returns integers." msgstr "" -"Para compatibilidad con versiones anteriores, una instancia de :class:" -"`stat_result` también es accesible como una tupla de al menos 10 enteros que " -"dan los miembros más importantes (y portátiles) de la estructura :c:type:" -"`stat`, en el orden :attr:`st_mode`, :attr:`st_ino`, :attr:`st_dev`, :attr:" -"`st_nlink`, :attr:`st_uid`, :attr:`st_gid`, :attr:`st_size`, :attr:" +"Para compatibilidad con versiones anteriores, también se puede acceder a una " +"instancia :class:`stat_result` como una tupla de al menos 10 números enteros " +"que den los miembros más importantes (y portables) de la estructura :c:" +"struct:`stat`, en el orden :attr:`st_mode`, :attr:`st_ino`, :attr:`st_dev`, :" +"attr:`st_nlink`, :attr:`st_uid`, :attr:`st_gid`, :attr:`st_size`, :attr:" "`st_atime`, :attr:`st_mtime`, :attr:`st_ctime`. Algunas implementaciones " "pueden agregar más elementos al final. Para compatibilidad con versiones " "anteriores de Python, acceder a :class:`stat_result` como una tupla siempre " -"retorna enteros." +"devuelve números enteros." #: ../Doc/library/os.rst:3266 msgid "Windows now returns the file index as :attr:`st_ino` when available." @@ -4989,6 +5058,10 @@ msgid "" "last metadata change time, for consistency with other platforms, but for now " "still contains creation time. Use :attr:`st_birthtime` for the creation time." msgstr "" +"En Windows, :attr:`st_ctime` está obsoleto. Con el tiempo, contendrá la " +"última hora de cambio de metadatos, para mantener la coherencia con otras " +"plataformas, pero por ahora aún contiene la hora de creación. Utilice :attr:" +"`st_birthtime` para la hora de creación." #: ../Doc/library/os.rst:3287 msgid "" @@ -4996,20 +5069,23 @@ msgid "" "system. Previously it would not be above 64 bits, and larger file " "identifiers would be arbitrarily packed." msgstr "" +"En Windows, :attr:`st_ino` puede tener hasta 128 bits, según el sistema de " +"archivos. Antes no superaba los 64 bits y los identificadores de archivos " +"más grandes se empaquetaban de forma arbitraria." #: ../Doc/library/os.rst:3291 msgid "" "On Windows, :attr:`st_rdev` no longer returns a value. Previously it would " "contain the same as :attr:`st_dev`, which was incorrect." msgstr "" +"En Windows, :attr:`st_rdev` ya no devuelve un valor. Antes contenía el mismo " +"valor que :attr:`st_dev`, lo cual era incorrecto." #: ../Doc/library/os.rst:3294 -#, fuzzy msgid "Added the :attr:`st_birthtime` member on Windows." -msgstr "Se agregó el miembro :attr:`st_reparse_tag` en Windows." +msgstr "Se agregó el miembro :attr:`st_birthtime` en Windows." #: ../Doc/library/os.rst:3299 -#, fuzzy msgid "" "Perform a :c:func:`!statvfs` system call on the given path. The return " "value is an object whose attributes describe the filesystem on the given " @@ -5018,12 +5094,13 @@ msgid "" "`f_bfree`, :attr:`f_bavail`, :attr:`f_files`, :attr:`f_ffree`, :attr:" "`f_favail`, :attr:`f_flag`, :attr:`f_namemax`, :attr:`f_fsid`." msgstr "" -"Realice una llamada al sistema a :c:func:`statvfs` en la ruta dada. El valor " -"de retorno es un objeto cuyos atributos describen el sistema de archivos en " -"la ruta dada y corresponden a los miembros de la estructura :c:type:" -"`statvfs`, a saber: :attr:`f_bsize`, :attr:`f_frsize`, :attr:`f_blocks`, :" -"attr:`f_bfree`, :attr:`f_bavail`, :attr:`f_files`, :attr:`f_ffree`, :attr:" -"`f_favail`, :attr:`f_flag`, :attr:`f_namemax`, :attr:`f_fsid`." +"Realizar una llamada al sistema :c:func:`!statvfs` en la ruta indicada. El " +"valor de retorno es un objeto cuyos atributos describen el sistema de " +"archivos en la ruta indicada y corresponden a los miembros de la estructura :" +"c:struct:`statvfs`, a saber: :attr:`f_bsize`, :attr:`f_frsize`, :attr:" +"`f_blocks`, :attr:`f_bfree`, :attr:`f_bavail`, :attr:`f_files`, :attr:" +"`f_ffree`, :attr:`f_favail`, :attr:`f_flag`, :attr:`f_namemax`, :attr:" +"`f_fsid`." #: ../Doc/library/os.rst:3306 msgid "" @@ -5079,9 +5156,8 @@ msgstr "" "`ST_RELATIME` se agregaron constantes." #: ../Doc/library/os.rst:3339 -#, fuzzy msgid "Added the :attr:`f_fsid` attribute." -msgstr "Agregado :attr:`f_fsid`." +msgstr "Se agrega el atributo :attr:`f_fsid`." #: ../Doc/library/os.rst:3345 msgid "" @@ -5119,7 +5195,7 @@ msgstr "" #: ../Doc/library/os.rst:3360 msgid "os.stat in os.supports_dir_fd" -msgstr "" +msgstr "os.stat en os.supports_dir_fd" #: ../Doc/library/os.rst:3362 msgid "" @@ -5153,7 +5229,7 @@ msgstr "" #: ../Doc/library/os.rst:3379 msgid "os.access in os.supports_effective_ids" -msgstr "" +msgstr "os.access en os.supports_effective_ids" #: ../Doc/library/os.rst:3381 msgid "" @@ -5194,7 +5270,7 @@ msgstr "" #: ../Doc/library/os.rst:3402 msgid "os.chdir in os.supports_fd" -msgstr "" +msgstr "os.chdir en os.supports_fd" #: ../Doc/library/os.rst:3409 msgid "" @@ -5235,7 +5311,7 @@ msgstr "" #: ../Doc/library/os.rst:3425 msgid "os.stat in os.supports_follow_symlinks" -msgstr "" +msgstr "os.stat en os.supports_follow_symlinks" #: ../Doc/library/os.rst:3432 msgid "Create a symbolic link pointing to *src* named *dst*." @@ -5286,13 +5362,12 @@ msgstr "" "``src``, ``dst``, ``dir_fd``." #: ../Doc/library/os.rst:3464 -#, fuzzy msgid "" "Added the *dir_fd* parameter, and now allow *target_is_directory* on non-" "Windows platforms." msgstr "" -"Se agregó el argumento *dir_fd* y ahora permite *target_is_directory* en " -"plataformas que no son de Windows." +"Se agregó el parámetro *dir_fd* y ahora se permite *target_is_directory* en " +"plataformas que no sean Windows." #: ../Doc/library/os.rst:3471 msgid "Added support for unelevated symlinks on Windows with Developer Mode." @@ -5553,6 +5628,14 @@ msgid "" " if 'CVS' in dirs:\n" " dirs.remove('CVS') # don't visit CVS directories" msgstr "" +"import os\n" +"from os.path import join, getsize\n" +"for root, dirs, files in os.walk('python/Lib/email'):\n" +"print(root, \"consumes\", end=\" \")\n" +"print(sum(getsize(join(root, name)) for name in files), end=\" \")\n" +"print(\"bytes in\", len(files), \"non-directory files\")\n" +"if 'CVS' in dirs:\n" +"dirs.remove('CVS') # no visitar directorios CVS" #: ../Doc/library/os.rst:3634 msgid "" @@ -5577,6 +5660,17 @@ msgid "" " for name in dirs:\n" " os.rmdir(os.path.join(root, name))" msgstr "" +"# Borra todo lo que se pueda alcanzar desde el directorio nombrado en " +"\"top\",\n" +"# asumiendo que no hay enlaces simbólicos.\n" +"# PRECAUCIÓN: ¡Esto es peligroso! Por ejemplo, si top == '/',\n" +"# podría borrar todos los archivos de tu disco.\n" +"import os\n" +"for root, dirs, files in os.walk(top, topdown=False):\n" +"for name in files:\n" +"os.remove(os.path.join(root, name))\n" +"for name in dirs:\n" +"os.rmdir(os.path.join(root, name))" #: ../Doc/library/os.rst:3649 msgid "" @@ -5644,6 +5738,14 @@ msgid "" " if 'CVS' in dirs:\n" " dirs.remove('CVS') # don't visit CVS directories" msgstr "" +"import os\n" +"for root, dirs, files, rootfd in os.fwalk('python/Lib/email'):\n" +" print(root, \"consumes\", end=\"\")\n" +" print(sum([os.stat(name, dir_fd=rootfd).st_size for name in files]),\n" +" end=\"\")\n" +" print(\"bytes in\", len(files), \"non-directory files\")\n" +" if 'CVS' in dirs:\n" +" dirs.remove('CVS') # don't visit CVS directories" #: ../Doc/library/os.rst:3695 msgid "" @@ -5667,6 +5769,16 @@ msgid "" " for name in dirs:\n" " os.rmdir(name, dir_fd=rootfd)" msgstr "" +"# Borre todo lo que sea accesible desde el directorio nombrado en \"top\",\n" +"# asumiendo que no hay enlaces simbólicos.\n" +"# PRECAUCIÓN: ¡Esto es peligroso! Por ejemplo, si top == '/',\n" +"# podría borrar todos los archivos de su disco.\n" +"import os\n" +"for root, dirs, files, rootfd in os.fwalk(top, topdown=False):\n" +"for name in files:\n" +"os.unlink(name, dir_fd=rootfd)\n" +"for name in dirs:\n" +"os.rmdir(name, dir_fd=rootfd)" #: ../Doc/library/os.rst:3710 msgid "" @@ -5709,7 +5821,6 @@ msgstr "" "archivos pueden tener el mismo nombre sin efectos secundarios." #: ../Doc/library/os.rst:3737 -#, fuzzy msgid ":ref:`Availability `: Linux >= 3.17 with glibc >= 2.27." msgstr ":ref:`Disponibilidad `: Linux >= 3.17 con glibc >= 2.27." @@ -5718,9 +5829,8 @@ msgid "These flags can be passed to :func:`memfd_create`." msgstr "Estas flags se pueden pasar a :func:`memfd_create`." #: ../Doc/library/os.rst:3762 -#, fuzzy msgid ":ref:`Availability `: Linux >= 3.17 with glibc >= 2.27" -msgstr ":ref:`Disponibilidad `: Linux >= 3.17 con glibc >= 2.27." +msgstr ":ref:`Disponibilidad `: Linux >= 3.17 con glibc >= 2.27" #: ../Doc/library/os.rst:3764 msgid "The ``MFD_HUGE*`` flags are only available since Linux 4.14." @@ -5742,7 +5852,6 @@ msgstr "" "`no es heredable `." #: ../Doc/library/os.rst:3777 -#, fuzzy msgid "" "*initval* is the initial value of the event counter. The initial value must " "be a 32 bit unsigned integer. Please note that the initial value is limited " @@ -5752,7 +5861,7 @@ msgstr "" "*initval* es el valor inicial del contador de eventos. El valor inicial debe " "ser un entero sin signo de 32 bits. Tenga en cuenta que el valor inicial " "está limitado a un entero sin signo de 32 bits, aunque el contador de " -"eventos es un entero de 64 bits sin signo con un valor máximo de 2 \\ :sup:" +"eventos es un entero sin signo de 64 bits con un valor máximo de 2\\ :sup:" "`64`\\ -\\ 2." #: ../Doc/library/os.rst:3782 @@ -5816,16 +5925,28 @@ msgid "" "finally:\n" " os.close(fd)" msgstr "" +"import os\n" +"\n" +"# semáforo con valor inicial '1'\n" +"fd = os.eventfd(1, os.EFD_SEMAPHORE | os.EFC_CLOEXEC)\n" +"try:\n" +"# adquirir semáforo\n" +"v = os.eventfd_read(fd)\n" +"try:\n" +"do_work()\n" +"finally:\n" +"# liberar semáforo\n" +"os.eventfd_write(fd, v)\n" +"finally:\n" +"os.close(fd)" #: ../Doc/library/os.rst:3816 ../Doc/library/os.rst:3932 #: ../Doc/library/os.rst:3995 ../Doc/library/os.rst:4005 #: ../Doc/library/os.rst:4023 ../Doc/library/os.rst:4032 #: ../Doc/library/os.rst:4042 ../Doc/library/os.rst:4052 #: ../Doc/library/os.rst:4062 ../Doc/library/os.rst:4073 -#, fuzzy msgid ":ref:`Availability `: Linux >= 2.6.27 with glibc >= 2.8" -msgstr "" -":ref:`Disponibilidad `: Linux >= 2.6.27 con glibc >= 2.8." +msgstr ":ref:`Disponibilidad `: Linux >= 2.6.27 con glibc >= 2.8" #: ../Doc/library/os.rst:3822 msgid "" @@ -5837,7 +5958,6 @@ msgstr "" #: ../Doc/library/os.rst:3825 ../Doc/library/os.rst:3834 #: ../Doc/library/os.rst:3842 ../Doc/library/os.rst:3851 -#, fuzzy msgid ":ref:`Availability `: Linux >= 2.6.27" msgstr ":ref:`Disponibilidad `: Linux >= 2.6.27" @@ -5864,51 +5984,49 @@ msgstr "" "descriptor de archivo :func:`eventfd`." #: ../Doc/library/os.rst:3857 -#, fuzzy msgid "" "Provide semaphore-like semantics for reads from an :func:`eventfd` file " "descriptor. On read the internal counter is decremented by one." msgstr "" -"Proporcione semántica similar a un semáforo para las lecturas de un " -"descriptor de archivo :func:`eventfd`. Al leer, el contador interno se " +"Proporcionar semántica similar a la de un semáforo para las lecturas desde " +"un descriptor de archivo :func:`eventfd`. Al leer, el contador interno se " "reduce en uno." #: ../Doc/library/os.rst:3860 -#, fuzzy msgid ":ref:`Availability `: Linux >= 2.6.30" msgstr ":ref:`Disponibilidad `: Linux >= 2.6.30" #: ../Doc/library/os.rst:3868 -#, fuzzy msgid "Timer File Descriptors" -msgstr "Herencia de los descriptores de archivos" +msgstr "Descriptores de archivos del temporizador" #: ../Doc/library/os.rst:3872 msgid "" "These functions provide support for Linux's *timer file descriptor* API. " "Naturally, they are all only available on Linux." msgstr "" +"Estas funciones brindan soporte para la API *timer file descriptor* de " +"Linux. Naturalmente, todas ellas solo están disponibles en Linux." #: ../Doc/library/os.rst:3877 -#, fuzzy msgid "Create and return a timer file descriptor (*timerfd*)." -msgstr "Lee como máximo *n* bytes del descriptor de archivo *fd*." +msgstr "Crea y devuelve un descriptor de archivo de temporizador (*timerfd*)." #: ../Doc/library/os.rst:3879 msgid "The file descriptor returned by :func:`timerfd_create` supports:" -msgstr "" +msgstr "El descriptor de archivo devuelto por :func:`timerfd_create` admite:" #: ../Doc/library/os.rst:3881 msgid ":func:`read`" -msgstr "" +msgstr ":func:`read`" #: ../Doc/library/os.rst:3882 msgid ":func:`~select.select`" -msgstr "" +msgstr ":func:`~select.select`" #: ../Doc/library/os.rst:3883 msgid ":func:`~select.poll`" -msgstr "" +msgstr ":func:`~select.poll`" #: ../Doc/library/os.rst:3885 msgid "" @@ -5918,31 +6036,39 @@ msgid "" "converted to an :class:`int` by ``int.from_bytes(x, byteorder=sys." "byteorder)``." msgstr "" +"El método :func:`read` del descriptor de archivo se puede llamar con un " +"tamaño de búfer de 8. Si el temporizador ya ha expirado una o más veces, :" +"func:`read` devuelve la cantidad de expiraciones con el orden de bytes del " +"host, que se puede convertir a :class:`int` mediante ``int.from_bytes(x, " +"byteorder=sys.byteorder)``." #: ../Doc/library/os.rst:3890 msgid "" ":func:`~select.select` and :func:`~select.poll` can be used to wait until " "timer expires and the file descriptor is readable." msgstr "" +"Se pueden usar :func:`~select.select` y :func:`~select.poll` para esperar " +"hasta que el temporizador expire y el descriptor de archivo sea legible." #: ../Doc/library/os.rst:3893 msgid "" "*clockid* must be a valid :ref:`clock ID `, as " "defined in the :py:mod:`time` module:" msgstr "" +"*clockid* debe ser un :ref:`clock ID ` válido, como " +"se define en el módulo :py:mod:`time`:" #: ../Doc/library/os.rst:3896 -#, fuzzy msgid ":const:`time.CLOCK_REALTIME`" -msgstr ":data:`stat.S_IREAD`" +msgstr ":const:`time.CLOCK_REALTIME`" #: ../Doc/library/os.rst:3897 msgid ":const:`time.CLOCK_MONOTONIC`" -msgstr "" +msgstr ":const:`time.CLOCK_MONOTONIC`" #: ../Doc/library/os.rst:3898 msgid ":const:`time.CLOCK_BOOTTIME` (Since Linux 3.15 for timerfd_create)" -msgstr "" +msgstr ":const:`time.CLOCK_BOOTTIME` (desde Linux 3.15 para timerfd_create)" #: ../Doc/library/os.rst:3900 msgid "" @@ -5951,6 +6077,11 @@ msgid "" "updated. To cancel timer when system clock is changed, see :const:" "`TFD_TIMER_CANCEL_ON_SET`." msgstr "" +"Si *clockid* es :const:`time.CLOCK_REALTIME`, se utiliza un reloj de tiempo " +"real configurable para todo el sistema. Si se modifica el reloj del sistema, " +"es necesario actualizar la configuración del temporizador. Para cancelar el " +"temporizador cuando se modifica el reloj del sistema, consulte :const:" +"`TFD_TIMER_CANCEL_ON_SET`." #: ../Doc/library/os.rst:3905 msgid "" @@ -5958,12 +6089,18 @@ msgid "" "increasing clock is used. Even if the system clock is changed, the timer " "setting will not be affected." msgstr "" +"Si *clockid* es :const:`time.CLOCK_MONOTONIC`, se utiliza un reloj que " +"aumenta de forma monótona y no se puede configurar. Incluso si se cambia el " +"reloj del sistema, la configuración del temporizador no se verá afectada." #: ../Doc/library/os.rst:3909 msgid "" "If *clockid* is :const:`time.CLOCK_BOOTTIME`, same as :const:`time." "CLOCK_MONOTONIC` except it includes any time that the system is suspended." msgstr "" +"Si *clockid* es :const:`time.CLOCK_BOOTTIME`, igual que :const:`time." +"CLOCK_MONOTONIC` excepto que incluye cualquier momento en que el sistema " +"esté suspendido." #: ../Doc/library/os.rst:3912 msgid "" @@ -5971,16 +6108,17 @@ msgid "" "value. Any of the following variables may used, combined using bitwise OR " "(the ``|`` operator):" msgstr "" +"El comportamiento del descriptor de archivo se puede modificar especificando " +"un valor *flags*. Se puede utilizar cualquiera de las siguientes variables, " +"combinadas mediante OR bit a bit (el operador ``|``):" #: ../Doc/library/os.rst:3916 -#, fuzzy msgid ":const:`TFD_NONBLOCK`" -msgstr ":data:`stat.UF_NOUNLINK`" +msgstr ":const:`TFD_NONBLOCK`" #: ../Doc/library/os.rst:3917 -#, fuzzy msgid ":const:`TFD_CLOEXEC`" -msgstr ":data:`stat.S_IEXEC`" +msgstr ":const:`TFD_CLOEXEC`" #: ../Doc/library/os.rst:3919 msgid "" @@ -5989,31 +6127,40 @@ msgid "" "there hasn't been an expiration since the last call to read, :func:`read` " "raises :class:`OSError` with ``errno`` is set to :const:`errno.EAGAIN`." msgstr "" +"Si :const:`TFD_NONBLOCK` no está configurado como indicador, :func:`read` se " +"bloquea hasta que el temporizador expire. Si está configurado como " +"indicador, :func:`read` no se bloquea, pero si no ha habido una expiración " +"desde la última llamada para leer, :func:`read` genera :class:`OSError` y " +"``errno`` se configura como :const:`errno.EAGAIN`." #: ../Doc/library/os.rst:3925 msgid ":const:`TFD_CLOEXEC` is always set by Python automatically." -msgstr "" +msgstr "Python siempre establece :const:`TFD_CLOEXEC` automáticamente." #: ../Doc/library/os.rst:3927 msgid "" "The file descriptor must be closed with :func:`os.close` when it is no " "longer needed, or else the file descriptor will be leaked." msgstr "" +"El descriptor de archivo debe cerrarse con :func:`os.close` cuando ya no sea " +"necesario, de lo contrario se filtrará." #: ../Doc/library/os.rst:3930 -#, fuzzy msgid "The :manpage:`timerfd_create(2)` man page." -msgstr "Ver la página manual de :manpage:`pidfd_open(2)` para mas detalles." +msgstr "La página del manual :manpage:`timerfd_create(2)`." #: ../Doc/library/os.rst:3939 msgid "" "Alter a timer file descriptor's internal timer. This function operates the " "same interval timer as :func:`timerfd_settime_ns`." msgstr "" +"Modificar el temporizador interno de un descriptor de archivo de " +"temporizador. Esta función opera con el mismo temporizador de intervalos " +"que :func:`timerfd_settime_ns`." #: ../Doc/library/os.rst:3942 msgid "*fd* must be a valid timer file descriptor." -msgstr "" +msgstr "*fd* debe ser un descriptor de archivo de temporizador válido." #: ../Doc/library/os.rst:3944 msgid "" @@ -6021,14 +6168,17 @@ msgid "" "the following variables may used, combined using bitwise OR (the ``|`` " "operator):" msgstr "" +"El comportamiento del temporizador se puede modificar especificando un valor " +"*flags*. Se puede utilizar cualquiera de las siguientes variables, " +"combinadas mediante OR bit a bit (el operador ``|``):" #: ../Doc/library/os.rst:3948 msgid ":const:`TFD_TIMER_ABSTIME`" -msgstr "" +msgstr ":const:`TFD_TIMER_ABSTIME`" #: ../Doc/library/os.rst:3949 msgid ":const:`TFD_TIMER_CANCEL_ON_SET`" -msgstr "" +msgstr ":const:`TFD_TIMER_CANCEL_ON_SET`" #: ../Doc/library/os.rst:3951 msgid "" @@ -6037,12 +6187,19 @@ msgid "" "than zero, it raises an :class:`OSError` exception with ``errno`` set to :" "const:`errno.EINVAL`" msgstr "" +"El temporizador se desactiva al configurar *initial* en cero (``0``). Si " +"*initial* es igual o mayor que cero, el temporizador se activa. Si *initial* " +"es menor que cero, genera una excepción :class:`OSError` con ``errno`` " +"configurado en :const:`errno.EINVAL`" #: ../Doc/library/os.rst:3956 msgid "" "By default the timer will fire when *initial* seconds have elapsed. (If " "*initial* is zero, timer will fire immediately.)" msgstr "" +"De forma predeterminada, el temporizador se activará cuando transcurran " +"*initial* segundos. (Si *initial* es cero, el temporizador se activará " +"inmediatamente)." #: ../Doc/library/os.rst:3959 msgid "" @@ -6050,6 +6207,9 @@ msgid "" "when the timer's clock (set by *clockid* in :func:`timerfd_create`) reaches " "*initial* seconds." msgstr "" +"Sin embargo, si se establece el indicador :const:`TFD_TIMER_ABSTIME`, el " +"temporizador se activará cuando el reloj del temporizador (establecido por " +"*clockid* en :func:`timerfd_create`) alcance los *initial* segundos." #: ../Doc/library/os.rst:3963 msgid "" @@ -6060,6 +6220,12 @@ msgid "" "than zero, it raises :class:`OSError` with ``errno`` set to :const:`errno." "EINVAL`" msgstr "" +"El intervalo del temporizador se establece mediante *interval* :py:class:" +"`float`. Si *interval* es cero, el temporizador solo se activa una vez, en " +"la expiración inicial. Si *interval* es mayor que cero, el temporizador se " +"activa cada vez que transcurren *interval* segundos desde la expiración " +"anterior. Si *interval* es menor que cero, genera :class:`OSError` con " +"``errno`` establecido en :const:`errno.EINVAL`" #: ../Doc/library/os.rst:3970 msgid "" @@ -6069,6 +6235,11 @@ msgid "" "changed discontinuously. Reading the descriptor is aborted with the error " "ECANCELED." msgstr "" +"Si el indicador :const:`TFD_TIMER_CANCEL_ON_SET` se configura junto con :" +"const:`TFD_TIMER_ABSTIME` y el reloj de este temporizador es :const:`time." +"CLOCK_REALTIME`, el temporizador se marca como cancelable si el reloj de " +"tiempo real se modifica de manera discontinua. La lectura del descriptor se " +"cancela con el error ECANCELED." #: ../Doc/library/os.rst:3976 msgid "" @@ -6076,65 +6247,86 @@ msgid "" "done by changing time offset only and doesn't cause discontinuous system " "clock change." msgstr "" +"Linux administra el reloj del sistema como UTC. La transición al horario de " +"verano se realiza modificando únicamente la diferencia horaria y no provoca " +"cambios discontinuos en el reloj del sistema." #: ../Doc/library/os.rst:3980 msgid "" "Discontinuous system clock change will be caused by the following events:" msgstr "" +"El cambio discontinuo del reloj del sistema será causado por los siguientes " +"eventos:" #: ../Doc/library/os.rst:3982 msgid "``settimeofday``" -msgstr "" +msgstr "``settimeofday``" #: ../Doc/library/os.rst:3983 msgid "``clock_settime``" -msgstr "" +msgstr "``clock_settime``" #: ../Doc/library/os.rst:3984 msgid "set the system date and time by ``date`` command" -msgstr "" +msgstr "Establezca la fecha y la hora del sistema mediante el comando ``date``" #: ../Doc/library/os.rst:3986 msgid "" "Return a two-item tuple of (``next_expiration``, ``interval``) from the " "previous timer state, before this function executed." msgstr "" +"Devuelve una tupla de dos elementos de (``next_expiration``, ``interval``) " +"del estado del temporizador anterior, antes de que se ejecutara esta función." #: ../Doc/library/os.rst:3991 msgid "" ":manpage:`timerfd_create(2)`, :manpage:`timerfd_settime(2)`, :manpage:" "`settimeofday(2)`, :manpage:`clock_settime(2)`, and :manpage:`date(1)`." msgstr "" +":manpage:`timerfd_create(2)`, :manpage:`timerfd_settime(2)`, :manpage:" +"`settimeofday(2)`, :manpage:`clock_settime(2)`, y :manpage:`date(1)`." #: ../Doc/library/os.rst:4002 msgid "" "Similar to :func:`timerfd_settime`, but use time as nanoseconds. This " "function operates the same interval timer as :func:`timerfd_settime`." msgstr "" +"Similar a :func:`timerfd_settime`, pero utiliza el tiempo en nanosegundos. " +"Esta función opera con el mismo temporizador de intervalos que :func:" +"`timerfd_settime`." #: ../Doc/library/os.rst:4012 msgid "Return a two-item tuple of floats (``next_expiration``, ``interval``)." msgstr "" +"Devuelve una tupla de dos elementos de flotantes (``next_expiration``, " +"``interval``)." #: ../Doc/library/os.rst:4014 msgid "" "``next_expiration`` denotes the relative time until next the timer next " "fires, regardless of if the :const:`TFD_TIMER_ABSTIME` flag is set." msgstr "" +"``next_expiration`` indica el tiempo relativo hasta que el temporizador se " +"vuelva a activar, independientemente de si el indicador :const:" +"`TFD_TIMER_ABSTIME` está configurado." #: ../Doc/library/os.rst:4017 msgid "" "``interval`` denotes the timer's interval. If zero, the timer will only fire " "once, after ``next_expiration`` seconds have elapsed." msgstr "" +"``interval`` indica el intervalo del temporizador. Si es cero, el " +"temporizador se activará solo una vez, después de que transcurran " +"``next_expiration`` segundos." #: ../Doc/library/os.rst:4021 msgid ":manpage:`timerfd_gettime(2)`" -msgstr "" +msgstr ":manpage:`timerfd_gettime(2)`" #: ../Doc/library/os.rst:4030 msgid "Similar to :func:`timerfd_gettime`, but return time as nanoseconds." msgstr "" +"Similar a :func:`timerfd_gettime`, pero devuelve el tiempo en nanosegundos." #: ../Doc/library/os.rst:4038 msgid "" @@ -6142,12 +6334,19 @@ msgid "" "`O_NONBLOCK` status flag for the new timer file descriptor. If :const:" "`TFD_NONBLOCK` is not set as a flag, :func:`read` blocks." msgstr "" +"Un indicador para la función :func:`timerfd_create`, que establece el " +"indicador de estado :const:`O_NONBLOCK` para el nuevo descriptor de archivo " +"del temporizador. Si :const:`TFD_NONBLOCK` no está establecido como " +"indicador, :func:`read` se bloquea." #: ../Doc/library/os.rst:4048 msgid "" "A flag for the :func:`timerfd_create` function, If :const:`TFD_CLOEXEC` is " "set as a flag, set close-on-exec flag for new file descriptor." msgstr "" +"Una bandera para la función :func:`timerfd_create`. Si :const:`TFD_CLOEXEC` " +"está configurado como bandera, establece la bandera de cierre al ejecutar " +"para el nuevo descriptor de archivo." #: ../Doc/library/os.rst:4058 msgid "" @@ -6156,6 +6355,10 @@ msgid "" "value on the timer's clock (in UTC seconds or nanoseconds since the Unix " "Epoch)." msgstr "" +"Indicador para las funciones :func:`timerfd_settime` y :func:" +"`timerfd_settime_ns`. Si se establece este indicador, *initial* se " +"interpreta como un valor absoluto en el reloj del temporizador (en segundos " +"UTC o nanosegundos desde la época Unix)." #: ../Doc/library/os.rst:4068 msgid "" @@ -6163,6 +6366,9 @@ msgid "" "functions along with :const:`TFD_TIMER_ABSTIME`. The timer is cancelled when " "the time of the underlying clock changes discontinuously." msgstr "" +"Una bandera para las funciones :func:`timerfd_settime` y :func:" +"`timerfd_settime_ns` junto con :const:`TFD_TIMER_ABSTIME`. El temporizador " +"se cancela cuando la hora del reloj subyacente cambia de manera discontinua." #: ../Doc/library/os.rst:4079 msgid "Linux extended attributes" @@ -6427,7 +6633,6 @@ msgstr "" "función." #: ../Doc/library/os.rst:4253 -#, fuzzy msgid "" "The \"l\" and \"v\" variants of the :func:`exec\\* ` functions differ " "in how command-line arguments are passed. The \"l\" variants are perhaps " @@ -6440,17 +6645,17 @@ msgid "" "is not enforced." msgstr "" "Las variantes \"l\" y \"v\" de las funciones :func:`exec\\* ` " -"difieren en cómo se pasan los argumentos de la línea de comandos. Las " -"variantes \"l\" son quizás las más fáciles de trabajar si el número de " -"parámetros se fija cuando se escribe el código; los parámetros individuales " -"simplemente se convierten en parámetros adicionales a las funciones :func:" -"`execl\\*`. Las variantes \"v\" son buenas cuando el número de parámetros es " -"variable, y los argumentos se pasan en una lista o tupla como parámetro " -"*args*. En cualquier caso, los argumentos del proceso secundario deben " -"comenzar con el nombre del comando que se ejecuta, pero esto no se aplica." +"difieren en la forma en que se pasan los argumentos de la línea de comandos. " +"Las variantes \"l\" son quizás las más fáciles de usar si el número de " +"parámetros es fijo cuando se escribe el código; los parámetros individuales " +"simplemente se convierten en parámetros adicionales para las funciones :func:" +"`!execl\\*`. Las variantes \"v\" son buenas cuando el número de parámetros " +"es variable, y los argumentos se pasan en una lista o tupla como el " +"parámetro *args*. En cualquier caso, los argumentos del proceso secundario " +"deben comenzar con el nombre del comando que se está ejecutando, pero esto " +"no se aplica." #: ../Doc/library/os.rst:4262 -#, fuzzy msgid "" "The variants which include a \"p\" near the end (:func:`execlp`, :func:" "`execlpe`, :func:`execvp`, and :func:`execvpe`) will use the :envvar:`PATH` " @@ -6464,14 +6669,16 @@ msgid "" "even on Windows, as plain names will not be resolved." msgstr "" "Las variantes que incluyen una \"p\" cerca del final (:func:`execlp`, :func:" -"`execlpe`, :func:`execvp`, y :func:`execvpe`) usarán :envvar:`PATH` variable " -"de entorno para ubicar el programa *file*. Cuando se reemplaza el entorno " -"(utilizando uno de los siguientes variantes :func:`exec\\*e ` " -"variantes, discutidas en el siguiente párrafo), el nuevo entorno se utiliza " -"como fuente de la variable :envvar:`PATH`. Las otras variantes, :func:" -"`execl`, :func:`execle`, :func:`execv`, y :func:`execve`, no utilizarán la " -"variable :envvar:`PATH` para localizar el ejecutable; *path* debe contener " -"una ruta absoluta o relativa apropiada." +"`execlpe`, :func:`execvp` y :func:`execvpe`) utilizarán la variable de " +"entorno :envvar:`PATH` para localizar el programa *file*. Cuando se " +"reemplaza el entorno (utilizando una de las variantes :func:`exec\\*e " +"`, que se analizan en el párrafo siguiente), el nuevo entorno se " +"utiliza como fuente de la variable :envvar:`PATH`. Las otras variantes, :" +"func:`execl`, :func:`execle`, :func:`execv` y :func:`execve`, no utilizarán " +"la variable :envvar:`PATH` para localizar el ejecutable; *path* debe " +"contener una ruta absoluta o relativa adecuada. Las rutas relativas deben " +"incluir al menos una barra, incluso en Windows, ya que los nombres simples " +"no se resolverán." #: ../Doc/library/os.rst:4273 msgid "" @@ -6514,12 +6721,12 @@ msgstr "" #: ../Doc/library/os.rst:4287 ../Doc/library/os.rst:4852 #: ../Doc/library/os.rst:4976 ../Doc/library/os.rst:5095 #: ../Doc/library/os.rst:5264 -#, fuzzy msgid "" ":ref:`Availability `: Unix, Windows, not WASI, not Android, " "not iOS." msgstr "" -":ref:`Disponibilidad `: Unix, Windows, no Emscripten, no WASI." +":ref:`Disponibilidad `: Unix, Windows, no WASI, no Android, no " +"iOS." #: ../Doc/library/os.rst:4289 msgid "" @@ -6538,13 +6745,13 @@ msgstr "" "limpieza, vaciar los buffers stdio, etc." #: ../Doc/library/os.rst:4303 -#, fuzzy msgid "" "The standard way to exit is :func:`sys.exit(n) `. :func:`!_exit` " "should normally only be used in the child process after a :func:`fork`." msgstr "" -"La forma estándar de salir es ``sys.exit(n)``. :func:`_exit` normalmente " -"solo debe usarse en el proceso secundario después de :func:`fork`." +"La forma estándar de salir es :func:`sys.exit(n) `. Normalmente, :" +"func:`!_exit` solo se debe utilizar en el proceso secundario después de :" +"func:`fork`." #: ../Doc/library/os.rst:4306 msgid "" @@ -6708,12 +6915,17 @@ msgid "" "If you use TLS sockets in an application calling ``fork()``, see the warning " "in the :mod:`ssl` documentation." msgstr "" +"Si utiliza sockets TLS en una aplicación que llama a ``fork()``, consulte la " +"advertencia en la documentación de :mod:`ssl`." #: ../Doc/library/os.rst:4461 ../Doc/library/os.rst:4505 msgid "" "On macOS the use of this function is unsafe when mixed with using higher-" "level system APIs, and that includes using :mod:`urllib.request`." msgstr "" +"En macOS, el uso de esta función no es seguro cuando se combina con el uso " +"de API de sistema de nivel superior, incluido el uso de :mod:`urllib." +"request`." #: ../Doc/library/os.rst:4464 msgid "" @@ -6728,6 +6940,8 @@ msgid "" "If Python is able to detect that your process has multiple threads, :func:" "`os.fork` now raises a :exc:`DeprecationWarning`." msgstr "" +"Si Python puede detectar que su proceso tiene varios subprocesos, :func:`os." +"fork` ahora genera un :exc:`DeprecationWarning`." #: ../Doc/library/os.rst:4472 msgid "" @@ -6739,6 +6953,14 @@ msgid "" "child process when threads existed in the parent (such as ``malloc`` and " "``free``)." msgstr "" +"Elegimos mostrar esto como una advertencia, cuando sea detectable, para " +"informar mejor a los desarrolladores sobre un problema de diseño que la " +"plataforma POSIX señala específicamente como no compatible. Incluso en el " +"código en el que *appears* funciona, nunca ha sido seguro mezclar " +"subprocesos con :func:`os.fork` en plataformas POSIX. El entorno de " +"ejecución de CPython en sí siempre ha realizado llamadas a la API que no son " +"seguras para su uso en el proceso secundario cuando existían subprocesos en " +"el primario (como ``malloc`` y ``free``)." #: ../Doc/library/os.rst:4481 msgid "" @@ -6746,6 +6968,10 @@ msgid "" "typically found in glibc to date are among those already more likely to " "experience deadlocks running such code." msgstr "" +"Los usuarios de macOS o los usuarios de implementaciones de libc o malloc " +"distintas de las que se encuentran habitualmente en glibc hasta la fecha se " +"encuentran entre los que tienen más probabilidades de experimentar bloqueos " +"al ejecutar dicho código." #: ../Doc/library/os.rst:4485 msgid "" @@ -6753,12 +6979,16 @@ msgid "" "discuss.python.org/t/33555>`_ for technical details of why we're surfacing " "this longstanding platform compatibility problem to developers." msgstr "" +"Consulte `this discussion on fork being incompatible with threads `_ para obtener detalles técnicos sobre el motivo " +"por el cual estamos informando a los desarrolladores de este problema de " +"compatibilidad de plataformas de larga data." #: ../Doc/library/os.rst:4490 ../Doc/library/os.rst:4750 -#, fuzzy msgid "" ":ref:`Availability `: POSIX, not WASI, not Android, not iOS." -msgstr ":ref:`Disponibilidad `: POSIX, no Emscripten, no WASI." +msgstr "" +":ref:`Disponibilidad `: POSIX, no WASI, no Android, no iOS." #: ../Doc/library/os.rst:4495 msgid "" @@ -6795,6 +7025,9 @@ msgid "" "raises a :exc:`DeprecationWarning`. See the longer explanation on :func:`os." "fork`." msgstr "" +"Si Python puede detectar que su proceso tiene varios subprocesos, esto ahora " +"genera un error :exc:`DeprecationWarning`. Consulte la explicación más " +"extensa sobre :func:`os.fork`." #: ../Doc/library/os.rst:4517 ../Doc/library/os.rst:4734 #: ../Doc/library/os.rst:4783 ../Doc/library/os.rst:5020 @@ -6808,10 +7041,10 @@ msgstr "" #: ../Doc/library/os.rst:5310 ../Doc/library/os.rst:5319 #: ../Doc/library/os.rst:5328 ../Doc/library/os.rst:5337 #: ../Doc/library/os.rst:5346 -#, fuzzy msgid "" ":ref:`Availability `: Unix, not WASI, not Android, not iOS." -msgstr ":ref:`Disponibilidad `: Unix, no WASI." +msgstr "" +":ref:`Disponibilidad `: Unix, no WASI, no Android, no iOS." #: ../Doc/library/os.rst:4526 msgid "" @@ -6823,7 +7056,6 @@ msgstr "" "`signal`." #: ../Doc/library/os.rst:4529 -#, fuzzy msgid "" "Windows: The :const:`signal.CTRL_C_EVENT` and :const:`signal." "CTRL_BREAK_EVENT` signals are special signals which can only be sent to " @@ -6833,13 +7065,13 @@ msgid "" "be set to *sig*. The Windows version of :func:`kill` additionally takes " "process handles to be killed." msgstr "" -"Windows: Las señales :data:`signal.CTRL_C_EVENT` y :data:`signal." -"CTRL_BREAK_EVENT` son señales especiales que solo pueden enviarse a procesos " -"de consola que comparten una ventana de consola común, por ejemplo, algunos " -"subprocesos. Cualquier otro valor para *sig* hará que la API " -"TerminateProcess elimine el proceso incondicionalmente, y el código de " +"Windows: Las señales :const:`signal.CTRL_C_EVENT` y :const:`signal." +"CTRL_BREAK_EVENT` son señales especiales que solo se pueden enviar a " +"procesos de consola que comparten una ventana de consola común, por ejemplo, " +"algunos subprocesos. Cualquier otro valor para *sig* hará que la API " +"TerminateProcess finalice el proceso de forma incondicional y el código de " "salida se establecerá en *sig*. La versión de Windows de :func:`kill` " -"también requiere que los identificadores de proceso sean eliminados." +"también toma los identificadores de procesos que se van a finalizar." #: ../Doc/library/os.rst:4537 msgid "See also :func:`signal.pthread_kill`." @@ -6854,10 +7086,8 @@ msgstr "" "``pid``, ``sig``." #: ../Doc/library/os.rst:4541 -#, fuzzy msgid ":ref:`Availability `: Unix, Windows, not WASI, not iOS." -msgstr "" -":ref:`Disponibilidad `: Unix, Windows, no Emscripten, no WASI." +msgstr ":ref:`Disponibilidad `: Unix, Windows, no WASI, no iOS." #: ../Doc/library/os.rst:4553 msgid "Send the signal *sig* to the process group *pgid*." @@ -6872,9 +7102,8 @@ msgstr "" "``pgid``, ``sig``." #: ../Doc/library/os.rst:4557 ../Doc/library/os.rst:4594 -#, fuzzy msgid ":ref:`Availability `: Unix, not WASI, not iOS." -msgstr ":ref:`Disponibilidad `: Unix, no WASI." +msgstr ":ref:`Disponibilidad `:Unix, no WASI, no iOS." #: ../Doc/library/os.rst:4562 msgid "" @@ -6884,30 +7113,26 @@ msgstr "" "amabilidad." #: ../Doc/library/os.rst:4569 -#, fuzzy msgid "" "Return a file descriptor referring to the process *pid* with *flags* set. " "This descriptor can be used to perform process management without races and " "signals." msgstr "" -"Retorna un descriptor de archivo referente al *pid* del proceso. Este " -"descriptor puede ser usado para realizar gestión de procesos sin necesidad " -"de señales y carreras. El argumento *flags* es proporcionado para " -"extensiones futuras; ningún valor se encuentra definido en las banderas " -"actualmente." +"Devuelve un descriptor de archivo que hace referencia al proceso *pid* con " +"*flags* configurado. Este descriptor se puede utilizar para realizar la " +"gestión de procesos sin carreras ni señales." #: ../Doc/library/os.rst:4573 msgid "See the :manpage:`pidfd_open(2)` man page for more details." msgstr "Ver la página manual de :manpage:`pidfd_open(2)` para mas detalles." #: ../Doc/library/os.rst:4575 -#, fuzzy msgid "" ":ref:`Availability `: Linux >= 5.3, Android >= :func:`build-" "time ` API level 31" msgstr "" -":ref:`Disponibilidad `: Linux >= 2.6.30, FreeBSD >= 6.0, " -"OpenBSD >= 2.7, AIX >= 7.1." +":ref:`Disponibilidad `: Linux >= 5.3, Android >= :func:`build-" +"time ` API level 31" #: ../Doc/library/os.rst:4580 msgid "" @@ -6916,11 +7141,15 @@ msgid "" "attempt to wait on the file descriptor using :manpage:`waitid(2)` will " "immediately return the error :const:`~errno.EAGAIN` rather than blocking." msgstr "" +"Esta bandera indica que el descriptor de archivo no será bloqueante. Si el " +"proceso al que hace referencia el descriptor de archivo aún no ha " +"finalizado, entonces un intento de esperar en el descriptor de archivo " +"utilizando :manpage:`waitid(2)` devolverá inmediatamente el error :const:" +"`~errno.EAGAIN` en lugar de bloquearse." #: ../Doc/library/os.rst:4585 -#, fuzzy msgid ":ref:`Availability `: Linux >= 5.10" -msgstr ":ref:`Disponibilidad `: Linux >= 5.4" +msgstr ":ref:`Disponibilidad `: Linux >= 5.10" #: ../Doc/library/os.rst:4591 msgid "" @@ -6989,9 +7218,8 @@ msgstr "" "comunicarse con subprocesos." #: ../Doc/library/os.rst:4626 -#, fuzzy msgid ":ref:`Availability `: not WASI, not Android, not iOS." -msgstr ":ref:`Disponibilidad `: no WASI." +msgstr ":ref:`Disponibilidad `: no WASI, no Android, no iOS." #: ../Doc/library/os.rst:4629 msgid "" @@ -7012,10 +7240,9 @@ msgstr "" "controlar opciones como codificaciones." #: ../Doc/library/os.rst:4641 -#, fuzzy msgid "Wraps the :c:func:`!posix_spawn` C library API for use from Python." msgstr "" -"Envuelve la API de la biblioteca C :c:func:`posix_spawn` para usar desde " +"Envuelve la API de la biblioteca C :c:func:`!posix_spawn` para su uso desde " "Python." #: ../Doc/library/os.rst:4643 @@ -7026,14 +7253,14 @@ msgstr "" "func:`posix_spawn`." #: ../Doc/library/os.rst:4645 -#, fuzzy msgid "" "The positional-only arguments *path*, *args*, and *env* are similar to :func:" "`execve`. *env* is allowed to be ``None``, in which case current process' " "environment is used." msgstr "" -"Los argumentos de solo posición *path*, *args* y *env* son similares a :func:" -"`execve`." +"Los argumentos posicionales *path*, *args* y *env* son similares a :func:" +"`execve`. Se permite que *env* sea ``None``, en cuyo caso se utiliza el " +"entorno del proceso actual." #: ../Doc/library/os.rst:4649 msgid "" @@ -7085,17 +7312,14 @@ msgid "Performs ``os.dup2(fd, new_fd)``." msgstr "Realiza ``os.dup2(fd, new_fd)``." #: ../Doc/library/os.rst:4679 -#, fuzzy msgid "(``os.POSIX_SPAWN_CLOSEFROM``, *fd*)" -msgstr "(``os.POSIX_SPAWN_CLOSE``, *fd*)" +msgstr "(``os.POSIX_SPAWN_CLOSEFROM``, *fd*)" #: ../Doc/library/os.rst:4681 -#, fuzzy msgid "Performs ``os.closerange(fd, INF)``." -msgstr "Realiza ``os.close(fd)``." +msgstr "Ejecuta ``os.closerange(fd, INF)``." #: ../Doc/library/os.rst:4683 -#, fuzzy msgid "" "These tuples correspond to the C library :c:func:`!" "posix_spawn_file_actions_addopen`, :c:func:`!" @@ -7104,14 +7328,14 @@ msgid "" "posix_spawn_file_actions_addclosefrom_np` API calls used to prepare for the :" "c:func:`!posix_spawn` call itself." msgstr "" -"Estas tuplas corresponden a la biblioteca C :c:func:" -"`posix_spawn_file_actions_addopen`, :c:func:" -"`posix_spawn_file_actions_addclose`, y :c:func:" -"`posix_spawn_file_actions_adddup2` Llamadas API utilizadas para prepararse " -"para :c:func:`posix_spawn` se llame a sí mismo." +"Estas tuplas corresponden a las llamadas API de la biblioteca C :c:func:`!" +"posix_spawn_file_actions_addopen`, :c:func:`!" +"posix_spawn_file_actions_addclose`, :c:func:`!" +"posix_spawn_file_actions_adddup2` y :c:func:`!" +"posix_spawn_file_actions_addclosefrom_np` utilizadas para preparar la propia " +"llamada :c:func:`!posix_spawn`." #: ../Doc/library/os.rst:4690 -#, fuzzy msgid "" "The *setpgroup* argument will set the process group of the child to the " "value specified. If the value specified is 0, the child's process group ID " @@ -7119,15 +7343,14 @@ msgid "" "set, the child will inherit the parent's process group ID. This argument " "corresponds to the C library :c:macro:`!POSIX_SPAWN_SETPGROUP` flag." msgstr "" -"El argumento *setpgroup* establecerá el grupo de proceso del elemento " -"secundario en el valor especificado. Si el valor especificado es 0, la ID " -"del grupo de procesos del niño se hará igual que su ID de proceso. Si el " -"valor de *setpgroup* no está establecido, el elemento secundario heredará la " -"ID del grupo de proceso del elemento primario. Este argumento corresponde al " -"flag :c:data:`POSIX_SPAWN_SETPGROUP` de la biblioteca de C." +"El argumento *setpgroup* establecerá el grupo de procesos del hijo en el " +"valor especificado. Si el valor especificado es 0, el ID del grupo de " +"procesos del hijo será el mismo que el ID de su proceso. Si el valor de " +"*setpgroup* no está establecido, el hijo heredará el ID del grupo de " +"procesos del padre. Este argumento corresponde al indicador :c:macro:`!" +"POSIX_SPAWN_SETPGROUP` de la biblioteca C." #: ../Doc/library/os.rst:4696 -#, fuzzy msgid "" "If the *resetids* argument is ``True`` it will reset the effective UID and " "GID of the child to the real UID and GID of the parent process. If the " @@ -7137,29 +7360,27 @@ msgid "" "setting of the effective UID and GID. This argument corresponds to the C " "library :c:macro:`!POSIX_SPAWN_RESETIDS` flag." msgstr "" -"Si el argumento *resetids* es ``True``, restablecerá el UID y el GID " -"efectivos del niño al UID y GID reales del proceso padre. Si el argumento es " -"``False``, el niño conserva el UID y el GID efectivos del padre. En " -"cualquier caso, si los bits de permiso set-user-ID y set-group-ID están " -"habilitados en el archivo ejecutable, su efecto anulará la configuración del " -"UID y GID efectivos. Este argumento corresponde a la flag de la biblioteca " -"C :c:data:`POSIX_SPAWN_RESETIDS`." +"Si el argumento *resetids* es ``True``, restablecerá el UID y GID efectivos " +"del hijo al UID y GID reales del proceso padre. Si el argumento es " +"``False``, el hijo conserva el UID y GID efectivos del padre. En cualquier " +"caso, si los bits de permiso set-user-ID y set-group-ID están habilitados en " +"el archivo ejecutable, su efecto anulará la configuración del UID y GID " +"efectivos. Este argumento corresponde al indicador :c:macro:`!" +"POSIX_SPAWN_RESETIDS` de la biblioteca C." #: ../Doc/library/os.rst:4704 -#, fuzzy msgid "" "If the *setsid* argument is ``True``, it will create a new session ID for " "``posix_spawn``. *setsid* requires :c:macro:`!POSIX_SPAWN_SETSID` or :c:" "macro:`!POSIX_SPAWN_SETSID_NP` flag. Otherwise, :exc:`NotImplementedError` " "is raised." msgstr "" -"Si el argumento *setsid* es ``True``, creará una nueva ID de sesión para " -"``posix_spawn``. *setsid* requiere el indicador :c:data:`POSIX_SPAWN_SETSID` " -"o :c:data:`POSIX_SPAWN_SETSID_NP`. De lo contrario, se genera :exc:" -"`NotImplementedError`." +"Si el argumento *setsid* es ``True``, se creará un nuevo ID de sesión para " +"``posix_spawn``. *setsid* requiere el indicador :c:macro:`!" +"POSIX_SPAWN_SETSID` o :c:macro:`!POSIX_SPAWN_SETSID_NP`. De lo contrario, se " +"activa :exc:`NotImplementedError`." #: ../Doc/library/os.rst:4709 -#, fuzzy msgid "" "The *setsigmask* argument will set the signal mask to the signal set " "specified. If the parameter is not used, then the child inherits the " @@ -7167,23 +7388,22 @@ msgid "" "POSIX_SPAWN_SETSIGMASK` flag." msgstr "" "El argumento *setsigmask* establecerá la máscara de señal en el conjunto de " -"señal especificado. Si no se usa el parámetro, el niño hereda la máscara de " -"señal del padre. Este argumento corresponde al flag :c:data:" -"`POSIX_SPAWN_SETSIGMASK` de la biblioteca en C." +"señales especificado. Si no se utiliza el parámetro, el elemento secundario " +"hereda la máscara de señal del elemento principal. Este argumento " +"corresponde al indicador :c:macro:`!POSIX_SPAWN_SETSIGMASK` de la biblioteca " +"C." #: ../Doc/library/os.rst:4714 -#, fuzzy msgid "" "The *sigdef* argument will reset the disposition of all signals in the set " "specified. This argument corresponds to the C library :c:macro:`!" "POSIX_SPAWN_SETSIGDEF` flag." msgstr "" "El argumento *sigdef* restablecerá la disposición de todas las señales en el " -"conjunto especificado. Este argumento corresponde al flag :c:data:" -"`POSIX_SPAWN_SETSIGDEF` de la biblioteca de C." +"conjunto especificado. Este argumento corresponde al indicador :c:macro:`!" +"POSIX_SPAWN_SETSIGDEF` de la biblioteca C." #: ../Doc/library/os.rst:4718 -#, fuzzy msgid "" "The *scheduler* argument must be a tuple containing the (optional) scheduler " "policy and an instance of :class:`sched_param` with the scheduler " @@ -7193,11 +7413,11 @@ msgid "" "POSIX_SPAWN_SETSCHEDULER` flags." msgstr "" "El argumento *scheduler* debe ser una tupla que contenga la política del " -"planificador (opcional) y una instancia de :class:`sched_param` con los " -"parámetros del planificador. Un valor de ``None`` en el lugar de la política " -"del planificador indica que no se proporciona. Este argumento es una " -"combinación de la biblioteca C :c:data:`POSIX_SPAWN_SETSCHEDPARAM` y flags :" -"c:data:`POSIX_SPAWN_SETSCHEDULER`." +"programador (opcional) y una instancia de :class:`sched_param` con los " +"parámetros del programador. Un valor de ``None`` en lugar de la política del " +"programador indica que no se proporciona. Este argumento es una combinación " +"de los indicadores :c:macro:`!POSIX_SPAWN_SETSCHEDPARAM` y :c:macro:`!" +"POSIX_SPAWN_SETSCHEDULER` de la biblioteca C." #: ../Doc/library/os.rst:4725 ../Doc/library/os.rst:4746 msgid "" @@ -7213,12 +7433,14 @@ msgid "" "on platforms where :c:func:`!posix_spawn_file_actions_addclosefrom_np` " "exists." msgstr "" +"El parámetro *env* acepta ``None``. ``os.POSIX_SPAWN_CLOSEFROM`` está " +"disponible en plataformas donde existe :c:func:`!" +"posix_spawn_file_actions_addclosefrom_np`." #: ../Doc/library/os.rst:4740 -#, fuzzy msgid "Wraps the :c:func:`!posix_spawnp` C library API for use from Python." msgstr "" -"Envuelve la API de la biblioteca :c:func:`posix_spawnp` C para usar desde " +"Envuelve la API de la biblioteca C :c:func:`!posix_spawnp` para su uso desde " "Python." #: ../Doc/library/os.rst:4742 @@ -7338,7 +7560,6 @@ msgstr "" "nuevo proceso. En su lugar, genera una excepción OSError." #: ../Doc/library/os.rst:4813 -#, fuzzy msgid "" "The \"l\" and \"v\" variants of the :func:`spawn\\* ` functions " "differ in how command-line arguments are passed. The \"l\" variants are " @@ -7350,13 +7571,13 @@ msgid "" "to the child process must start with the name of the command being run." msgstr "" "Las variantes \"l\" y \"v\" de las funciones :func:`spawn\\* ` " -"difieren en cómo se pasan los argumentos de la línea de comandos. Las " -"variantes \"l\" son quizás las más fáciles de trabajar si el número de " -"parámetros se fija cuando se escribe el código; los parámetros individuales " -"simplemente se convierten en parámetros adicionales a las funciones :func:" -"`spawnl\\*`. Las variantes \"v\" son buenas cuando el número de parámetros " -"es variable, y los argumentos se pasan en una lista o tupla como parámetro " -"*args*. En cualquier caso, los argumentos del proceso secundario deben " +"difieren en la forma en que se pasan los argumentos de la línea de comandos. " +"Las variantes \"l\" son quizás las más fáciles de usar si el número de " +"parámetros es fijo cuando se escribe el código; los parámetros individuales " +"simplemente se convierten en parámetros adicionales para las funciones :func:" +"`!spawnl\\*`. Las variantes \"v\" son buenas cuando el número de parámetros " +"es variable, y los argumentos se pasan en una lista o tupla como el " +"parámetro *args*. En cualquier caso, los argumentos del proceso hijo deben " "comenzar con el nombre del comando que se está ejecutando." #: ../Doc/library/os.rst:4822 @@ -7418,6 +7639,11 @@ msgid "" "L = ['cp', 'index.html', '/dev/null']\n" "os.spawnvpe(os.P_WAIT, 'cp', L, os.environ)" msgstr "" +"import os\n" +"os.spawnlp(os.P_WAIT, 'cp', 'cp', 'index.html', '/dev/null')\n" +"\n" +"L = ['cp', 'index.html', '/dev/null']\n" +"os.spawnvpe(os.P_WAIT, 'cp', L, os.environ)" #: ../Doc/library/os.rst:4850 msgid "" @@ -7440,20 +7666,19 @@ msgstr "" "mod:`subprocess` en su lugar." #: ../Doc/library/os.rst:4866 -#, fuzzy msgid "" "Possible values for the *mode* parameter to the :func:`spawn\\* ` " "family of functions. If either of these values is given, the :func:" "`spawn\\* ` functions will return as soon as the new process has " "been created, with the process id as the return value." msgstr "" -"Valores posibles para el parámetro *mode* para :func:`spawn\\* ` " -"familia de funciones. Si se da alguno de estos valores, las funciones :func:" -"`spawn\\*` volverán tan pronto como se haya creado el nuevo proceso, con la " -"identificación del proceso como valor de retorno." +"Valores posibles para el parámetro *mode* de la familia de funciones :func:" +"`spawn\\* `. Si se proporciona cualquiera de estos valores, las " +"funciones :func:`spawn\\* ` retornarán tan pronto como se haya " +"creado el nuevo proceso, con el identificador del proceso como valor de " +"retorno." #: ../Doc/library/os.rst:4876 -#, fuzzy msgid "" "Possible value for the *mode* parameter to the :func:`spawn\\* ` " "family of functions. If this is given as *mode*, the :func:`spawn\\* " @@ -7461,11 +7686,12 @@ msgid "" "completion and will return the exit code of the process the run is " "successful, or ``-signal`` if a signal kills the process." msgstr "" -"Posible valor para el parámetro *mode* para :func:`spawn\\* ` " -"familia de funciones. Si esto se da como *mode*, las funciones :func:" -"`spawn\\*` no volverán hasta que el nuevo proceso se haya completado y " -"retornará el código de salida del proceso, la ejecución es exitosa, o ``-" -"signal`` si una señal mata el proceso." +"Valor posible para el parámetro *mode* de la familia de funciones :func:" +"`spawn\\* `. Si se proporciona como *mode*, las funciones :func:" +"`spawn\\* ` no regresarán hasta que el nuevo proceso se haya " +"ejecutado por completo y devolverán el código de salida del proceso cuya " +"ejecución se realizó correctamente, o ``-signal`` si una señal finaliza el " +"proceso." #: ../Doc/library/os.rst:4888 msgid "" @@ -7488,31 +7714,30 @@ msgid "Start a file with its associated application." msgstr "Inicie un archivo con su aplicación asociada." #: ../Doc/library/os.rst:4901 -#, fuzzy msgid "" "When *operation* is not specified, this acts like double-clicking the file " "in Windows Explorer, or giving the file name as an argument to the :program:" "`start` command from the interactive command shell: the file is opened with " "whatever application (if any) its extension is associated." msgstr "" -"Cuando *operation* no se especifica o ``'abre'``, esto actúa como hacer " -"doble clic en el archivo en el Explorador de Windows, o dar el nombre del " -"archivo como argumento para el comando :program:`start` desde el shell de " -"comandos interactivo: el archivo se abre con cualquier aplicación (si la " -"hay) a la que está asociada su extensión." +"Cuando no se especifica *operation*, esto actúa como hacer doble clic en el " +"archivo en el Explorador de Windows o dar el nombre del archivo como " +"argumento al comando :program:`start` desde el shell de comandos " +"interactivo: el archivo se abre con cualquier aplicación (si hay alguna) con " +"la que esté asociada su extensión." #: ../Doc/library/os.rst:4906 -#, fuzzy msgid "" "When another *operation* is given, it must be a \"command verb\" that " "specifies what should be done with the file. Common verbs documented by " "Microsoft are ``'open'``, ``'print'`` and ``'edit'`` (to be used on files) " "as well as ``'explore'`` and ``'find'`` (to be used on directories)." msgstr "" -"Cuando se da otra *operation*, debe ser un \"verbo de comando\" que " -"especifica qué se debe hacer con el archivo. Los verbos comunes documentados " -"por Microsoft son ``'print'`` y ``'edit'`` (para usar en archivos), así como " -"``'explore'`` y ``'find'`` (para usar en directorios)." +"Cuando se proporciona otro *operation*, debe ser un \"verbo de comando\" que " +"especifique qué se debe hacer con el archivo. Los verbos comunes " +"documentados por Microsoft son ``'open'``, ``'print'`` y ``'edit'`` (para " +"usar en archivos), así como ``'explore'`` y ``'find'`` (para usar en " +"directorios)." #: ../Doc/library/os.rst:4911 msgid "" @@ -7535,16 +7760,15 @@ msgstr "" "resolverá contra este argumento." #: ../Doc/library/os.rst:4919 -#, fuzzy msgid "" "Use *show_cmd* to override the default window style. Whether this has any " "effect will depend on the application being launched. Values are integers as " "supported by the Win32 :c:func:`!ShellExecute` function." msgstr "" -"Utilice *show_cmd* para anular el estilo de ventana predeterminado. Si esto " -"tiene algún efecto dependerá de la aplicación que se esté iniciando. Los " -"valores son números enteros admitidos por la función Win32 :c:func:" -"`ShellExecute`." +"Utilice *show_cmd* para anular el estilo de ventana predeterminado. El " +"efecto que esto tenga dependerá de la aplicación que se esté ejecutando. Los " +"valores son números enteros, tal como lo admite la función :c:func:`!" +"ShellExecute` de Win32." #: ../Doc/library/os.rst:4923 msgid "" @@ -7565,16 +7789,14 @@ msgstr "" "rutas estén codificadas correctamente para Win32." #: ../Doc/library/os.rst:4931 -#, fuzzy msgid "" "To reduce interpreter startup overhead, the Win32 :c:func:`!ShellExecute` " "function is not resolved until this function is first called. If the " "function cannot be resolved, :exc:`NotImplementedError` will be raised." msgstr "" "Para reducir la sobrecarga de inicio del intérprete, la función Win32 :c:" -"func:`ShellExecute` no se resuelve hasta que esta función se llama por " -"primera vez. Si la función no se puede resolver, se lanzará :exc:" -"`NotImplementedError`." +"func:`!ShellExecute` no se resuelve hasta que se la llama por primera vez. " +"Si no se puede resolver la función, se generará :exc:`NotImplementedError`." #: ../Doc/library/os.rst:4935 msgid "" @@ -7713,7 +7935,6 @@ msgstr "" "children_user`, :attr:`!children_system` y :attr:`!elapsed` en ese orden." #: ../Doc/library/os.rst:4994 -#, fuzzy msgid "" "See the Unix manual page :manpage:`times(2)` and `times(3) `_ manual page on Unix or `the " @@ -7722,11 +7943,11 @@ msgid "" "Windows, only :attr:`!user` and :attr:`!system` are known; the other " "attributes are zero." msgstr "" -"Consulte la página del manual de Unix :manpage:`times(2)` y la página del " -"manual de `times(3) `_ en Unix " -"o `the GetProcessTimes MSDN `_ en Unix o `the " +"GetProcessTimes MSDN `_ en Windows. En " -"Windows, solo se conocen :attr:`!user` y :attr:`!system`; los otros " +"Windows, solo se conocen :attr:`!user` y :attr:`!system`; los demás " "atributos son cero." #: ../Doc/library/os.rst:5008 @@ -7747,7 +7968,7 @@ msgstr "" msgid "" "If there are no children that could be waited for, :exc:`ChildProcessError` " "is raised." -msgstr "" +msgstr "Si no hay niños a los que esperar, se genera :exc:`ChildProcessError`." #: ../Doc/library/os.rst:5017 ../Doc/library/os.rst:5092 msgid "" @@ -7758,18 +7979,19 @@ msgstr "" "salida en el código de salida." #: ../Doc/library/os.rst:5024 -#, fuzzy msgid "" "The other :func:`!wait*` functions documented below can be used to wait for " "the completion of a specific child process and have more options. :func:" "`waitpid` is the only one also available on Windows." msgstr "" -":func:`waitpid` puede ser usado para esperar a la terminación de algún " -"proceso hijo en específico y tiene más opciones." +"Las demás funciones :func:`!wait*` documentadas a continuación se pueden " +"utilizar para esperar a que se complete un proceso secundario específico y " +"tener más opciones. :func:`waitpid` es la única que también está disponible " +"en Windows." #: ../Doc/library/os.rst:5031 msgid "Wait for the completion of a child process." -msgstr "" +msgstr "Esperar a que se complete un proceso secundario." #: ../Doc/library/os.rst:5033 msgid "" @@ -7777,6 +7999,9 @@ msgid "" "data:`P_PIDFD`. The interpretation of *id* depends on it; see their " "individual descriptions." msgstr "" +"*idtype* puede ser :data:`P_PID`, :data:`P_PGID`, :data:`P_ALL` o (en " +"Linux) :data:`P_PIDFD`. La interpretación de *id* depende de ello; consulte " +"sus descripciones individuales." #: ../Doc/library/os.rst:5036 msgid "" @@ -7784,34 +8009,43 @@ msgid "" "data:`WSTOPPED` or :data:`WCONTINUED` is required; :data:`WNOHANG` and :data:" "`WNOWAIT` are additional optional flags." msgstr "" +"*options* es una combinación OR de indicadores. Se requiere al menos uno de :" +"data:`WEXITED`, :data:`WSTOPPED` o :data:`WCONTINUED`; :data:`WNOHANG` y :" +"data:`WNOWAIT` son indicadores opcionales adicionales." #: ../Doc/library/os.rst:5040 msgid "" "The return value is an object representing the data contained in the :c:type:" "`siginfo_t` structure with the following attributes:" msgstr "" +"El valor de retorno es un objeto que representa los datos contenidos en la " +"estructura :c:type:`siginfo_t` con los siguientes atributos:" #: ../Doc/library/os.rst:5043 msgid ":attr:`!si_pid` (process ID)" -msgstr "" +msgstr ":attr:`!si_pid` (identificación del proceso)" #: ../Doc/library/os.rst:5044 msgid ":attr:`!si_uid` (real user ID of the child)" -msgstr "" +msgstr ":attr:`!si_uid` (ID de usuario real del niño)" #: ../Doc/library/os.rst:5045 msgid ":attr:`!si_signo` (always :const:`~signal.SIGCHLD`)" -msgstr "" +msgstr ":attr:`!si_signo` (siempre :const:`~signal.SIGCHLD`)" #: ../Doc/library/os.rst:5046 msgid "" ":attr:`!si_status` (the exit status or signal number, depending on :attr:`!" "si_code`)" msgstr "" +":attr:`!si_status` (el estado de salida o el número de señal, según :attr:`!" +"si_code`)" #: ../Doc/library/os.rst:5047 msgid ":attr:`!si_code` (see :data:`CLD_EXITED` for possible values)" msgstr "" +":attr:`!si_code` (consulte :data:`CLD_EXITED` para conocer los posibles " +"valores)" #: ../Doc/library/os.rst:5049 msgid "" @@ -7819,11 +8053,14 @@ msgid "" "requested state, ``None`` is returned. Otherwise, if there are no matching " "children that could be waited for, :exc:`ChildProcessError` is raised." msgstr "" +"Si se especifica :data:`WNOHANG` y no hay elementos secundarios coincidentes " +"en el estado solicitado, se devuelve ``None``. De lo contrario, si no hay " +"elementos secundarios coincidentes que se puedan esperar, se genera :exc:" +"`ChildProcessError`." #: ../Doc/library/os.rst:5058 -#, fuzzy msgid "This function is now available on macOS as well." -msgstr "Esta función no está disponible en MacOS." +msgstr "Esta función ahora también está disponible en macOS." #: ../Doc/library/os.rst:5064 msgid "The details of this function differ on Unix and Windows." @@ -7869,6 +8106,11 @@ msgid "" "for, :exc:`ChildProcessError` is raised. Other options that can be used " "are :data:`WUNTRACED` and :data:`WCONTINUED`." msgstr "" +"*options* es una combinación OR de indicadores. Si contiene :data:`WNOHANG` " +"y no hay hijos coincidentes en el estado solicitado, se devuelve ``(0, 0)``. " +"De lo contrario, si no hay hijos coincidentes que se puedan esperar, se " +"genera :exc:`ChildProcessError`. Otras opciones que se pueden utilizar son :" +"data:`WUNTRACED` y :data:`WCONTINUED`." #: ../Doc/library/os.rst:5084 msgid "" @@ -7892,7 +8134,6 @@ msgstr "" "manejadores de proceso adecuados." #: ../Doc/library/os.rst:5105 -#, fuzzy msgid "" "Similar to :func:`waitpid`, except no process id argument is given and a 3-" "element tuple containing the child's process id, exit status indication, and " @@ -7901,12 +8142,12 @@ msgid "" "same as that provided to :func:`waitpid` and :func:`wait4`." msgstr "" "Similar a :func:`waitpid`, excepto que no se proporciona ningún argumento de " -"identificación de proceso y se retorna una tupla de 3 elementos que contiene " -"la identificación de proceso del niño, la indicación del estado de salida y " -"la información de uso de recursos. Consulte :mod:`resource`. \\ :func:" -"`~resource.getrusage` para obtener detalles sobre la información de uso de " -"recursos. El argumento de la opción es el mismo que se proporciona a :func:" -"`waitpid` y :func:`wait4`." +"identificación de proceso y se devuelve una tupla de 3 elementos que " +"contiene la identificación del proceso del hijo, la indicación del estado de " +"salida y la información de uso de recursos. Consulte :func:`resource." +"getrusage` para obtener detalles sobre la información de uso de recursos. El " +"argumento *options* es el mismo que se proporciona a :func:`waitpid` y :func:" +"`wait4`." #: ../Doc/library/os.rst:5112 ../Doc/library/os.rst:5126 msgid "" @@ -7917,7 +8158,6 @@ msgstr "" "salida al código de salida." #: ../Doc/library/os.rst:5120 -#, fuzzy msgid "" "Similar to :func:`waitpid`, except a 3-element tuple, containing the child's " "process id, exit status indication, and resource usage information is " @@ -7925,97 +8165,104 @@ msgid "" "information. The arguments to :func:`wait4` are the same as those provided " "to :func:`waitpid`." msgstr "" -"Similar a :func:`waitpid`, excepto una tupla de 3 elementos, que contiene la " -"identificación del proceso del niño, la indicación del estado de salida y la " -"información de uso de recursos. Consulte :mod:`resource`.\\ :func:`~resource." -"getrusage` para obtener detalles sobre la información de uso de recursos. " -"Los argumentos para :func:`wait4` son los mismos que los proporcionados " -"para :func:`waitpid`." +"Similar a :func:`waitpid`, excepto que se devuelve una tupla de 3 elementos " +"que contiene el identificador del proceso secundario, la indicación del " +"estado de salida y la información de uso de recursos. Consulte :func:" +"`resource.getrusage` para obtener detalles sobre la información de uso de " +"recursos. Los argumentos de :func:`wait4` son los mismos que los " +"proporcionados a :func:`waitpid`." #: ../Doc/library/os.rst:5137 -#, fuzzy msgid "" "These are the possible values for *idtype* in :func:`waitid`. They affect " "how *id* is interpreted:" msgstr "" -"Estos son los valores posibles para *idtype* en :func:`waitid`. Afectan cómo " -"se interpreta *id*." +"Estos son los valores posibles para *idtype* en :func:`waitid`. Afectan a la " +"interpretación de *id*:" #: ../Doc/library/os.rst:5140 msgid ":data:`!P_PID` - wait for the child whose PID is *id*." -msgstr "" +msgstr ":data:`!P_PID`: espera al niño cuyo PID es *id*." #: ../Doc/library/os.rst:5141 msgid ":data:`!P_PGID` - wait for any child whose progress group ID is *id*." msgstr "" +":data:`!P_PGID`: espera a cualquier niño cuyo ID de grupo de progreso sea " +"*id*." #: ../Doc/library/os.rst:5142 msgid ":data:`!P_ALL` - wait for any child; *id* is ignored." -msgstr "" +msgstr ":data:`!P_ALL` - espera a cualquier hijo; *id* se ignora." #: ../Doc/library/os.rst:5143 msgid "" ":data:`!P_PIDFD` - wait for the child identified by the file descriptor *id* " "(a process file descriptor created with :func:`pidfd_open`)." msgstr "" +":data:`!P_PIDFD`: espera al niño identificado por el descriptor de archivo " +"*id* (un descriptor de archivo de proceso creado con :func:`pidfd_open`)." #: ../Doc/library/os.rst:5148 msgid ":data:`!P_PIDFD` is only available on Linux >= 5.4." -msgstr "" +msgstr ":data:`!P_PIDFD` solo está disponible en Linux >= 5.4." #: ../Doc/library/os.rst:5151 -#, fuzzy msgid "The :data:`!P_PIDFD` constant." -msgstr "Se agregó la constante :data:`O_CLOEXEC`." +msgstr "La constante :data:`!P_PIDFD`." #: ../Doc/library/os.rst:5157 -#, fuzzy msgid "" "This *options* flag for :func:`waitpid`, :func:`wait3`, :func:`wait4`, and :" "func:`waitid` causes child processes to be reported if they have been " "continued from a job control stop since they were last reported." msgstr "" -"Esta opción hace que se informen los procesos secundarios si se han " -"continuado desde una parada de control de trabajo desde la última vez que se " -"informó su estado." +"Esta bandera *options* para :func:`waitpid`, :func:`wait3`, :func:`wait4` y :" +"func:`waitid` hace que se informe sobre los procesos secundarios si han " +"continuado desde una detención del control de trabajo desde que se " +"informaron por última vez." #: ../Doc/library/os.rst:5166 msgid "" "This *options* flag for :func:`waitid` causes child processes that have " "terminated to be reported." msgstr "" +"Esta bandera *options* para :func:`waitid` hace que se informen los procesos " +"secundarios que han finalizado." #: ../Doc/library/os.rst:5169 msgid "" "The other ``wait*`` functions always report children that have terminated, " "so this option is not available for them." msgstr "" +"Las demás funciones ``wait*`` siempre informan sobre los hijos que han " +"finalizado, por lo que esta opción no está disponible para ellos." #: ../Doc/library/os.rst:5179 msgid "" "This *options* flag for :func:`waitid` causes child processes that have been " "stopped by the delivery of a signal to be reported." msgstr "" +"Esta bandera *options* para :func:`waitid` hace que se informen los procesos " +"secundarios que se han detenido por la entrega de una señal." #: ../Doc/library/os.rst:5182 ../Doc/library/os.rst:5214 -#, fuzzy msgid "This option is not available for the other ``wait*`` functions." -msgstr "Esta función no está disponible en MacOS." +msgstr "Esta opción no está disponible para las demás funciones ``wait*``." #: ../Doc/library/os.rst:5191 -#, fuzzy msgid "" "This *options* flag for :func:`waitpid`, :func:`wait3`, and :func:`wait4` " "causes child processes to also be reported if they have been stopped but " "their current state has not been reported since they were stopped." msgstr "" -"Esta opción hace que se informen los procesos secundarios si se han detenido " -"pero su estado actual no se ha informado desde que se detuvieron." +"Esta bandera *options* para :func:`waitpid`, :func:`wait3` y :func:`wait4` " +"hace que también se informe sobre los procesos secundarios si se han " +"detenido pero no se ha informado sobre su estado actual desde que se " +"detuvieron." #: ../Doc/library/os.rst:5195 -#, fuzzy msgid "This option is not available for :func:`waitid`." -msgstr "Esta función no está disponible en MacOS." +msgstr "Esta opción no está disponible para :func:`waitid`." #: ../Doc/library/os.rst:5202 msgid "" @@ -8023,6 +8270,9 @@ msgid "" "and :func:`waitid` to return right away if no child process status is " "available immediately." msgstr "" +"Esta bandera *options* hace que :func:`waitpid`, :func:`wait3`, :func:" +"`wait4` y :func:`waitid` regresen inmediatamente si no hay ningún estado de " +"proceso secundario disponible inmediatamente." #: ../Doc/library/os.rst:5211 msgid "" @@ -8030,15 +8280,17 @@ msgid "" "state, so that a later :func:`!wait*` call can be used to retrieve the child " "status information again." msgstr "" +"Esta bandera *options* hace que :func:`waitid` deje al niño en un estado de " +"espera, de modo que se pueda usar una llamada :func:`!wait*` posterior para " +"recuperar nuevamente la información del estado del niño." #: ../Doc/library/os.rst:5226 -#, fuzzy msgid "" "These are the possible values for :attr:`!si_code` in the result returned " "by :func:`waitid`." msgstr "" -"Estos son los valores posibles para :attr:`si_code` en el resultado " -"retornado por :func:`waitid`." +"Estos son los valores posibles para :attr:`!si_code` en el resultado " +"devuelto por :func:`waitid`." #: ../Doc/library/os.rst:5233 msgid "Added :data:`CLD_KILLED` and :data:`CLD_STOPPED` values." @@ -8124,15 +8376,14 @@ msgid "This function should be employed only if :func:`WIFSIGNALED` is true." msgstr "Esta función debe emplearse solo si :func:`WIFSIGNALED` es verdadero." #: ../Doc/library/os.rst:5285 -#, fuzzy msgid "" "Return ``True`` if a stopped child has been resumed by delivery of :const:" "`~signal.SIGCONT` (if the process has been continued from a job control " "stop), otherwise return ``False``." msgstr "" -"Retorna ``True`` si un niño detenido se ha reanudado mediante la entrega de :" -"data:`~signal.SIGCONT` (si el proceso se ha continuado desde una parada de " -"control de trabajo), de lo contrario, retorna ``False``." +"Devuelve ``True`` si un hijo detenido se ha reanudado mediante la entrega " +"de :const:`~signal.SIGCONT` (si el proceso ha continuado desde una detención " +"del control de trabajo); de lo contrario, devuelve ``False``." #: ../Doc/library/os.rst:5289 msgid "See :data:`WCONTINUED` option." @@ -8353,25 +8604,22 @@ msgstr "" "CPU a las que se debe restringir el proceso." #: ../Doc/library/os.rst:5464 -#, fuzzy msgid "Return the set of CPUs the process with PID *pid* is restricted to." msgstr "" -"Retorna el conjunto de CPU al proceso con PID *pid* (o el proceso actual si " -"es cero) está restringido." +"Devuelve el conjunto de CPU a las que está restringido el proceso con PID " +"*pid*." #: ../Doc/library/os.rst:5466 -#, fuzzy msgid "" "If *pid* is zero, return the set of CPUs the calling thread of the current " "process is restricted to." msgstr "" -"Retorna el conjunto de CPU al proceso con PID *pid* (o el proceso actual si " -"es cero) está restringido." +"Si *pid* es cero, devuelve el conjunto de CPU a las que está restringido el " +"hilo de llamada del proceso actual." #: ../Doc/library/os.rst:5469 -#, fuzzy msgid "See also the :func:`process_cpu_count` function." -msgstr "La función :func:`.stat`." +msgstr "Véase también la función :func:`process_cpu_count`." #: ../Doc/library/os.rst:5475 msgid "Miscellaneous System Information" @@ -8427,25 +8675,29 @@ msgstr "" "puede usar para determinar el conjunto de nombres conocidos por el sistema." #: ../Doc/library/os.rst:5510 -#, fuzzy msgid "" "Return the number of logical CPUs in the **system**. Returns ``None`` if " "undetermined." msgstr "" -"Retorna el número de CPU en el sistema. Retorna ``None`` si no está " -"determinado." +"Devuelve la cantidad de CPU lógicas en **system**. Devuelve ``None`` si no " +"se determina." #: ../Doc/library/os.rst:5513 msgid "" "The :func:`process_cpu_count` function can be used to get the number of " "logical CPUs usable by the calling thread of the **current process**." msgstr "" +"La función :func:`process_cpu_count` se puede utilizar para obtener la " +"cantidad de CPU lógicas que puede utilizar el hilo que llama a **current " +"process**." #: ../Doc/library/os.rst:5518 msgid "" "If :option:`-X cpu_count <-X>` is given or :envvar:`PYTHON_CPU_COUNT` is " "set, :func:`cpu_count` returns the overridden value *n*." msgstr "" +"Si se proporciona :option:`-X cpu_count <-X>` o se establece :envvar:" +"`PYTHON_CPU_COUNT`, :func:`cpu_count` devuelve el valor anulado *n*." #: ../Doc/library/os.rst:5525 msgid "" @@ -8463,23 +8715,29 @@ msgid "" "process**. Returns ``None`` if undetermined. It can be less than :func:" "`cpu_count` depending on the CPU affinity." msgstr "" +"Obtiene la cantidad de CPU lógicas que puede utilizar el subproceso que " +"realiza la llamada a **current process**. Devuelve ``None`` si no se " +"determina. Puede ser menor que :func:`cpu_count` según la afinidad de la CPU." #: ../Doc/library/os.rst:5538 msgid "" "The :func:`cpu_count` function can be used to get the number of logical CPUs " "in the **system**." msgstr "" +"La función :func:`cpu_count` se puede utilizar para obtener la cantidad de " +"CPU lógicas en **system**." #: ../Doc/library/os.rst:5541 msgid "" "If :option:`-X cpu_count <-X>` is given or :envvar:`PYTHON_CPU_COUNT` is " "set, :func:`process_cpu_count` returns the overridden value *n*." msgstr "" +"Si se proporciona :option:`-X cpu_count <-X>` o se establece :envvar:" +"`PYTHON_CPU_COUNT`, :func:`process_cpu_count` devuelve el valor anulado *n*." #: ../Doc/library/os.rst:5544 -#, fuzzy msgid "See also the :func:`sched_getaffinity` functions." -msgstr "La función :func:`.stat`." +msgstr "Vea también las funciones :func:`sched_getaffinity`." #: ../Doc/library/os.rst:5551 msgid "" @@ -8670,15 +8928,14 @@ msgstr "" "los dispositivos ``/dev/random`` y ``/dev/urandom``." #: ../Doc/library/os.rst:5681 -#, fuzzy msgid "" "The flags argument is a bit mask that can contain zero or more of the " "following values ORed together: :py:const:`os.GRND_RANDOM` and :py:data:" "`GRND_NONBLOCK`." msgstr "" -"El argumento de las flags es una máscara de bits que puede contener cero o " -"más de los siguientes valores OR juntos:: py :data:`os.GRND_RANDOM` y :py:" -"data:`GRND_NONBLOCK`." +"El argumento de banderas es una máscara de bits que puede contener cero o " +"más de los siguientes valores unidos mediante OR: :py:const:`os.GRND_RANDOM` " +"y :py:data:`GRND_NONBLOCK`." #: ../Doc/library/os.rst:5685 msgid "" @@ -8689,7 +8946,6 @@ msgstr "" "pages/man2/getrandom.2.html>`_." #: ../Doc/library/os.rst:5688 -#, fuzzy msgid ":ref:`Availability `: Linux >= 3.17." msgstr ":ref:`Disponibilidad `: Linux >= 3.17." @@ -8817,144 +9073,143 @@ msgstr "" #: ../Doc/library/os.rst:363 ../Doc/library/os.rst:529 #: ../Doc/library/os.rst:731 msgid "user" -msgstr "" +msgstr "usuario" #: ../Doc/library/os.rst:363 msgid "effective id" -msgstr "" +msgstr "identificación efectiva" #: ../Doc/library/os.rst:372 ../Doc/library/os.rst:438 #: ../Doc/library/os.rst:447 ../Doc/library/os.rst:456 #: ../Doc/library/os.rst:470 ../Doc/library/os.rst:666 #: ../Doc/library/os.rst:4522 ../Doc/library/os.rst:4549 msgid "process" -msgstr "" +msgstr "proceso" #: ../Doc/library/os.rst:372 ../Doc/library/os.rst:438 msgid "group" -msgstr "" +msgstr "grupo" #: ../Doc/library/os.rst:447 ../Doc/library/os.rst:529 msgid "id" -msgstr "" +msgstr "id" #: ../Doc/library/os.rst:456 msgid "id of parent" -msgstr "" +msgstr "identificación del padre" #: ../Doc/library/os.rst:470 ../Doc/library/os.rst:666 -#, fuzzy msgid "scheduling priority" -msgstr "La política de programación predeterminada." +msgstr "prioridad de programación" #: ../Doc/library/os.rst:552 ../Doc/library/os.rst:801 msgid "environment variables" -msgstr "" +msgstr "variables de entorno" #: ../Doc/library/os.rst:552 msgid "setting" -msgstr "" +msgstr "configuración" #: ../Doc/library/os.rst:731 msgid "id, setting" -msgstr "" +msgstr "identificación, configuración" #: ../Doc/library/os.rst:764 msgid "gethostname() (in module socket)" -msgstr "" +msgstr "gethostname() (en el socket del módulo)" #: ../Doc/library/os.rst:764 msgid "gethostbyaddr() (in module socket)" -msgstr "" +msgstr "gethostbyaddr() (en el socket del módulo)" #: ../Doc/library/os.rst:801 ../Doc/library/os.rst:2658 msgid "deleting" -msgstr "" +msgstr "borrando" #: ../Doc/library/os.rst:1360 ../Doc/library/os.rst:3028 msgid "module" -msgstr "" +msgstr "módulo" #: ../Doc/library/os.rst:1360 msgid "pty" -msgstr "" +msgstr "pty" #: ../Doc/library/os.rst:2045 ../Doc/library/os.rst:2457 #: ../Doc/library/os.rst:2658 ../Doc/library/os.rst:3562 #: ../Doc/library/os.rst:3661 msgid "directory" -msgstr "" +msgstr "directorio" #: ../Doc/library/os.rst:2045 msgid "changing" -msgstr "" +msgstr "cambio" #: ../Doc/library/os.rst:2457 msgid "creating" -msgstr "" +msgstr "creando" #: ../Doc/library/os.rst:2457 msgid "UNC paths" -msgstr "" +msgstr "rutas UNC" #: ../Doc/library/os.rst:2457 msgid "and os.makedirs()" -msgstr "" +msgstr "y os.makedirs()" #: ../Doc/library/os.rst:3028 msgid "stat" -msgstr "" +msgstr "estadística" #: ../Doc/library/os.rst:3562 ../Doc/library/os.rst:3661 msgid "walking" -msgstr "" +msgstr "caminando" #: ../Doc/library/os.rst:3562 ../Doc/library/os.rst:3661 msgid "traversal" -msgstr "" +msgstr "Travesía" #: ../Doc/library/os.rst:4522 ../Doc/library/os.rst:4549 msgid "killing" -msgstr "" +msgstr "asesinato" #: ../Doc/library/os.rst:4522 ../Doc/library/os.rst:4549 msgid "signalling" -msgstr "" +msgstr "señalización" #: ../Doc/library/os.rst:5576 ../Doc/library/os.rst:5612 msgid ". (dot)" -msgstr "" +msgstr ". (punto)" #: ../Doc/library/os.rst:5576 ../Doc/library/os.rst:5584 #: ../Doc/library/os.rst:5592 ../Doc/library/os.rst:5603 #: ../Doc/library/os.rst:5612 msgid "in pathnames" -msgstr "" +msgstr "en nombres de ruta" #: ../Doc/library/os.rst:5584 msgid ".." -msgstr "" +msgstr ".." #: ../Doc/library/os.rst:5592 ../Doc/library/os.rst:5603 msgid "/ (slash)" -msgstr "" +msgstr "/ (barra)" #: ../Doc/library/os.rst:5593 msgid "\\ (backslash)" -msgstr "" +msgstr "\\ (barra inversa)" #: ../Doc/library/os.rst:5593 msgid "in pathnames (Windows)" -msgstr "" +msgstr "en nombres de ruta (Windows)" #: ../Doc/library/os.rst:5619 msgid ": (colon)" -msgstr "" +msgstr ": (dos puntos)" #: ../Doc/library/os.rst:5619 msgid "path separator (POSIX)" -msgstr "" +msgstr "separador de ruta (POSIX)" #: ../Doc/library/os.rst:5619 msgid "; (semicolon)" -msgstr "" +msgstr "; (punto y coma)" From 45d3b05f3c3eb0524552590830d26341d543747d Mon Sep 17 00:00:00 2001 From: kbiggers Date: Tue, 14 Oct 2025 10:21:24 +0000 Subject: [PATCH 63/78] Traducido deprecations/pending-removal-in-3.15.po (#3365) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit closes #3293 --------- Co-authored-by: Cristián Maureira-Fredes Co-authored-by: rtobar --- deprecations/pending-removal-in-3.15.po | 62 +++++++++++++++++++------ 1 file changed, 49 insertions(+), 13 deletions(-) diff --git a/deprecations/pending-removal-in-3.15.po b/deprecations/pending-removal-in-3.15.po index bc243d2a66..bd13b4dd98 100644 --- a/deprecations/pending-removal-in-3.15.po +++ b/deprecations/pending-removal-in-3.15.po @@ -10,33 +10,36 @@ msgstr "" "Project-Id-Version: Python en Español 3.13\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language: es\n" +"PO-Revision-Date: 2025-01-31 23:04-0500\n" +"Last-Translator: \n" "Language-Team: es \n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\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.16.0\n" +"X-Generator: Poedit 3.5\n" #: ../Doc/deprecations/pending-removal-in-3.15.rst:2 msgid "Pending Removal in Python 3.15" -msgstr "" +msgstr "Eliminación pendiente en Python 3.15" #: ../Doc/deprecations/pending-removal-in-3.15.rst:4 msgid ":mod:`ctypes`:" -msgstr "" +msgstr ":mod:`ctypes`:" #: ../Doc/deprecations/pending-removal-in-3.15.rst:6 msgid "" "The undocumented :func:`!ctypes.SetPointerType` function has been deprecated " "since Python 3.13." msgstr "" +"La función indocumentada :func:`!ctypes.SetPointerType` ha quedado obsoleta " +"desde Python 3.13." #: ../Doc/deprecations/pending-removal-in-3.15.rst:9 msgid ":mod:`http.server`:" -msgstr "" +msgstr ":mod:`http.server`:" #: ../Doc/deprecations/pending-removal-in-3.15.rst:11 msgid "" @@ -44,22 +47,30 @@ msgid "" "been deprecated since Python 3.13. No direct replacement exists. *Anything* " "is better than CGI to interface a web server with a request handler." msgstr "" +"La clase obsoleta y raramente usada :class:`~http.server." +"CGIHTTPRequestHandler` ha quedado obsoleta desde Python 3.13. No existe un " +"reemplazo directo. *Cualquier cosa* es mejor que CGI para interconectar un " +"servidor web con un controlador de solicitudes." #: ../Doc/deprecations/pending-removal-in-3.15.rst:17 msgid "" "The :option:`!--cgi` flag to the :program:`python -m http.server` command-" "line interface has been deprecated since Python 3.13." msgstr "" +"El indicador :option:`!--cgi` a la interfaz de línea de comandos :program:" +"`python -m http.server` ha quedado obsoleto desde Python 3.13." #: ../Doc/deprecations/pending-removal-in-3.15.rst:20 msgid "" ":mod:`importlib`: ``__package__`` and ``__cached__`` will cease to be set or " "taken into consideration by the import system (:gh:`97879`)." msgstr "" +":mod:`importlib`: ``__package__`` y ``__cached__`` dejarán de configurarse o " +"tomarse en consideración por el sistema de importación (:gh:`97879`)." #: ../Doc/deprecations/pending-removal-in-3.15.rst:23 msgid ":class:`locale`:" -msgstr "" +msgstr ":class:`locale`:" #: ../Doc/deprecations/pending-removal-in-3.15.rst:25 msgid "" @@ -69,20 +80,27 @@ msgid "" "getlocale`, :func:`~locale.setlocale`, and :func:`~locale.getencoding` " "instead. (Contributed by Hugo van Kemenade in :gh:`111187`.)" msgstr "" +"La función :func:`~locale.getdefaultlocale` ha quedado obsoleta desde Python " +"3.11. La eliminación se programó originalmente para Python 3.13 (:gh:" +"`90817`), pero ha sido pospuesto hasta Python 3.15. En su lugar, utilice :" +"func:`~locale.getlocale`, :func:`~locale.setlocale`, y :func:`~locale." +"getencoding`. (Contribuido por Hugo van Kemenade in :gh:`111187`.)" #: ../Doc/deprecations/pending-removal-in-3.15.rst:33 msgid ":mod:`pathlib`:" -msgstr "" +msgstr ":mod:`pathlib`:" #: ../Doc/deprecations/pending-removal-in-3.15.rst:35 msgid "" ":meth:`.PurePath.is_reserved` has been deprecated since Python 3.13. Use :" "func:`os.path.isreserved` to detect reserved paths on Windows." msgstr "" +":meth:`.PurePath.is_reserved` ha quedado obsoleto desde Python 3.13. Utilice :" +"func:`os.path.isreserved` para detectar rutas reservadas en Windows." #: ../Doc/deprecations/pending-removal-in-3.15.rst:39 msgid ":mod:`platform`:" -msgstr "" +msgstr ":mod:`platform`:" #: ../Doc/deprecations/pending-removal-in-3.15.rst:41 msgid "" @@ -90,10 +108,13 @@ msgid "" "function is only useful for Jython support, has a confusing API, and is " "largely untested." msgstr "" +":func:`~platform.java_ver` ha quedado obsoleta desde Python 3.13. Esta " +"función es útil solo para la compatibilidad con Jython, tiene una API " +"confusa y, en gran parte, falta pruebas." #: ../Doc/deprecations/pending-removal-in-3.15.rst:45 msgid ":mod:`threading`:" -msgstr "" +msgstr ":mod:`threading`:" #: ../Doc/deprecations/pending-removal-in-3.15.rst:47 msgid "" @@ -102,10 +123,15 @@ msgid "" "not permit any arguments, but the C version allows any number of positional " "or keyword arguments, ignoring every argument." msgstr "" +":func:`~threading.RLock` no aceptará argumentos en Python 3.15. Pasar " +"cualquier argumento ha quedado obsoleto desde Python 3.14, ya que la versión " +"de Python no permite ningún argumento, pero la versión de C permite " +"cualquier cantidad de argumentos posicionales o de palabras clave por " +"palabra llave o posicional, ignorando todos los argumentos." #: ../Doc/deprecations/pending-removal-in-3.15.rst:53 msgid ":mod:`typing`:" -msgstr "" +msgstr ":mod:`typing`:" #: ../Doc/deprecations/pending-removal-in-3.15.rst:55 msgid "" @@ -114,6 +140,10 @@ msgid "" "has been deprecated since Python 3.13. Use the class-based syntax or the " "functional syntax instead." msgstr "" +"La sintaxis de argumentos de palabras clave indocumentada para crear clases " +"de :class:`~typing.NamedTuple` (p. ej. ``Point = NamedTuple(\"Point\", " +"x=int, y=int)``) ha quedado obsoleta desde Python 3.13. Use la sintaxis " +"basada en clases o la sintaxis funcional en su lugar." #: ../Doc/deprecations/pending-removal-in-3.15.rst:61 msgid "" @@ -121,10 +151,13 @@ msgid "" "deprecated since Python 3.13. After eight years in the :mod:`typing` module, " "it has yet to be supported by any major type checker." msgstr "" +"La función decoradora :func:`typing.no_type_check_decorator` ha quedado " +"obsoleta desde Python 3.13. Después de ocho años en el módulo :mod:`typing`, " +"todavía no es compatible con ningún verificador de tipos importante." #: ../Doc/deprecations/pending-removal-in-3.15.rst:66 msgid ":mod:`wave`:" -msgstr "" +msgstr ":mod:`wave`:" #: ../Doc/deprecations/pending-removal-in-3.15.rst:68 msgid "" @@ -132,3 +165,6 @@ msgid "" "Wave_read.getmarkers` methods of the :class:`~wave.Wave_read` and :class:" "`~wave.Wave_write` classes have been deprecated since Python 3.13." msgstr "" +"Los métodos :meth:`~wave.Wave_read.getmark`, :meth:`!setmark`, y :meth:" +"`~wave.Wave_read.getmarkers` de las clases :class:`~wave.Wave_read` y :class:" +"`~wave.Wave_write` han quedado obsoletos desde Python 3.13." From 3754a90b254c0fc1bc6cbff00d726b228a7ed720 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cristi=C3=A1n=20Maureira-Fredes?= Date: Tue, 14 Oct 2025 12:22:45 +0200 Subject: [PATCH 64/78] Translate library/sqlite3 (#3333) Closes #2998 --- dictionaries/library_sqlite3.txt | 39 +- library/sqlite3.po | 1102 +++++++++++++++++++++++------- 2 files changed, 895 insertions(+), 246 deletions(-) diff --git a/dictionaries/library_sqlite3.txt b/dictionaries/library_sqlite3.txt index 8705a87a1f..53e0083c94 100644 --- a/dictionaries/library_sqlite3.txt +++ b/dictionaries/library_sqlite3.txt @@ -1,25 +1,28 @@ -prototipar +André Configurarla +Establézcalo +Expiration +Lemburg +aggregate +arraysize +asígnelo autorizador -desconexión -commit -collation backend -sobrecoste -arraysize -rowid +bytestrings +collation +commit datetime -André -Lemburg -mytype -Expiration depurarlas -bytestrings -temp -qmark -timestamps -rollback -loadable +desconexión fetchone +loadable +mytype nativamente -aggregate +proporcionándolos +prototipar +qmark +rollback +rowid +sobrecoste +temp +timestamps diff --git a/library/sqlite3.po b/library/sqlite3.po index 858cc9512b..1316275677 100644 --- a/library/sqlite3.po +++ b/library/sqlite3.po @@ -11,20 +11,20 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: 2023-01-04 10:09-0300\n" -"Last-Translator: Alfonso Areiza Guerra \n" -"Language: es\n" +"PO-Revision-Date: 2024-11-24 23:09+0100\n" +"Last-Translator: Cristián Maureira-Fredes \n" "Language-Team: python-doc-es\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\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.16.0\n" +"X-Generator: Poedit 3.4.2\n" #: ../Doc/library/sqlite3.rst:2 -#, fuzzy msgid ":mod:`!sqlite3` --- DB-API 2.0 interface for SQLite databases" -msgstr ":mod:`sqlite3` --- DB-API 2.0 interfaz para bases de datos SQLite" +msgstr ":mod:`!sqlite3` --- DB-API 2.0 interfaz para bases de datos SQLite" #: ../Doc/library/sqlite3.rst:9 msgid "**Source code:** :source:`Lib/sqlite3/`" @@ -47,7 +47,6 @@ msgstr "" "código a una base de datos más grande como PostgreSQL u Oracle." #: ../Doc/library/sqlite3.rst:32 -#, fuzzy msgid "" "The :mod:`!sqlite3` module was written by Gerhard Häring. It provides an " "SQL interface compliant with the DB-API 2.0 specification described by :pep:" @@ -55,7 +54,7 @@ msgid "" msgstr "" "El módulo :mod:`!sqlite3` fue escrito por Gerhard Häring. Proporciona una " "interfaz SQL compatible con la especificación DB-API 2.0 descrita por :pep:" -"`249` y requiere SQLite 3.7.15 o posterior." +"`249` y requiere SQLite 3.15.2 o una versión más reciente." #: ../Doc/library/sqlite3.rst:36 msgid "This document includes four main sections:" @@ -130,23 +129,25 @@ msgstr "" "`transactions`_." #: ../Doc/library/sqlite3.rst:75 -#, fuzzy msgid "" "First, we need to create a new database and open a database connection to " "allow :mod:`!sqlite3` to work with it. Call :func:`sqlite3.connect` to " "create a connection to the database :file:`tutorial.db` in the current " "working directory, implicitly creating it if it does not exist:" msgstr "" -"Primero, necesitamos crear una nueva base de datos y abrir una conexión para " -"que :mod:`!sqlite3` trabaje con ella. Llamando :func:`sqlite3.connect` se " -"creará una conexión con la base de datos :file:`tutorial.db` en el " -"directorio actual, y de no existir, se creará automáticamente:" +"Primero, necesitamos crear una nueva base de datos y abrir una conexión de " +"base de datos para permitir que :mod:`!sqlite3` trabaje con ella. Llamamos " +"a :func:`sqlite3.connect` para crear una conexión a la base de datos :file:" +"`tutorial.db` en el directorio de trabajo actual, creándola implícitamente " +"si no existe:" #: ../Doc/library/sqlite3.rst:81 msgid "" "import sqlite3\n" "con = sqlite3.connect(\"tutorial.db\")" msgstr "" +"import sqlite3\n" +"con = sqlite3.connect(\"tutorial.db\")" #: ../Doc/library/sqlite3.rst:86 msgid "" @@ -168,7 +169,7 @@ msgstr "" #: ../Doc/library/sqlite3.rst:93 msgid "cur = con.cursor()" -msgstr "" +msgstr "cur = con.cursor()" #: ../Doc/library/sqlite3.rst:97 msgid "" @@ -188,7 +189,7 @@ msgstr "" #: ../Doc/library/sqlite3.rst:106 msgid "cur.execute(\"CREATE TABLE movie(title, year, score)\")" -msgstr "" +msgstr "cur.execute(\"CREATE TABLE movie(title, year, score)\")" #: ../Doc/library/sqlite3.rst:113 msgid "" @@ -212,18 +213,20 @@ msgid "" ">>> res.fetchone()\n" "('movie',)" msgstr "" +">>> res = cur.execute(\"SELECT name FROM sqlite_master\")\n" +">>> res.fetchone()\n" +"('movie',)" #: ../Doc/library/sqlite3.rst:127 -#, fuzzy msgid "" "We can see that the table has been created, as the query returns a :class:" "`tuple` containing the table's name. If we query ``sqlite_master`` for a non-" "existent table ``spam``, :meth:`!res.fetchone` will return ``None``:" msgstr "" -"Podemos observar que la tabla ha sido creada, ya que la consulta retorna " -"una :class:`tuple` conteniendo los nombres de la tabla. Si consultamos " -"``sqlite_master`` para una tabla no existente ``spam``, :meth:`!res." -"fetchone()` retornará ``None``:" +"Podemos ver que la tabla ha sido creada, ya que la consulta devuelve un :" +"class:`tuple` que contiene el nombre de la tabla. Si consultamos " +"``sqlite_master`` para una tabla inexistente ``spam``, :meth:`!res.fetchone` " +"devolverá ``None``:" #: ../Doc/library/sqlite3.rst:132 msgid "" @@ -231,6 +234,9 @@ msgid "" ">>> res.fetchone() is None\n" "True" msgstr "" +">>> res = cur.execute(\"SELECT name FROM sqlite_master WHERE name='spam'\")\n" +">>> res.fetchone() is None\n" +"True" #: ../Doc/library/sqlite3.rst:138 msgid "" @@ -250,6 +256,11 @@ msgid "" " ('And Now for Something Completely Different', 1971, 7.5)\n" "\"\"\")" msgstr "" +"cur.execute(\"\"\"\n" +" INSERT INTO movie VALUES\n" +" ('Monty Python and the Holy Grail', 1975, 8.2),\n" +" ('And Now for Something Completely Different', 1971, 7.5)\n" +"\"\"\")" #: ../Doc/library/sqlite3.rst:150 msgid "" @@ -266,7 +277,7 @@ msgstr "" #: ../Doc/library/sqlite3.rst:156 msgid "con.commit()" -msgstr "" +msgstr "con.commit()" #: ../Doc/library/sqlite3.rst:160 msgid "" @@ -287,6 +298,9 @@ msgid "" ">>> res.fetchall()\n" "[(8.2,), (7.5,)]" msgstr "" +">>> res = cur.execute(\"SELECT score FROM movie\")\n" +">>> res.fetchall()\n" +"[(8.2,), (7.5,)]" #: ../Doc/library/sqlite3.rst:172 msgid "" @@ -314,6 +328,13 @@ msgid "" "cur.executemany(\"INSERT INTO movie VALUES(?, ?, ?)\", data)\n" "con.commit() # Remember to commit the transaction after executing INSERT." msgstr "" +"data = [\n" +" (\"Monty Python Live at the Hollywood Bowl\", 1982, 7.9),\n" +" (\"Monty Python's The Meaning of Life\", 1983, 7.5),\n" +" (\"Monty Python's Life of Brian\", 1979, 8.0),\n" +"]\n" +"cur.executemany(\"INSERT INTO movie VALUES(?, ?, ?)\", data)\n" +"con.commit() # Remember to commit the transaction after executing INSERT." #: ../Doc/library/sqlite3.rst:188 msgid "" @@ -347,6 +368,14 @@ msgid "" "(1982, 'Monty Python Live at the Hollywood Bowl')\n" "(1983, \"Monty Python's The Meaning of Life\")" msgstr "" +">>> for row in cur.execute(\"SELECT year, title FROM movie ORDER BY " +"year\"):\n" +"... print(row)\n" +"(1971, 'And Now for Something Completely Different')\n" +"(1975, 'Monty Python and the Holy Grail')\n" +"(1979, \"Monty Python's Life of Brian\")\n" +"(1982, 'Monty Python Live at the Hollywood Bowl')\n" +"(1983, \"Monty Python's The Meaning of Life\")" #: ../Doc/library/sqlite3.rst:208 msgid "" @@ -381,6 +410,17 @@ msgid "" "released in 1975\n" ">>> new_con.close()" msgstr "" +">>> con.close()\n" +">>> new_con = sqlite3.connect(\"tutorial.db\")\n" +">>> new_cur = new_con.cursor()\n" +">>> res = new_cur.execute(\"SELECT title, year FROM movie ORDER BY score " +"DESC\")\n" +">>> title, year = res.fetchone()\n" +">>> print(f'The highest scoring Monty Python movie is {title!r}, released in " +"{year}')\n" +"The highest scoring Monty Python movie is 'Monty Python and the Holy Grail', " +"released in 1975\n" +">>> new_con.close()" #: ../Doc/library/sqlite3.rst:227 msgid "" @@ -411,9 +451,8 @@ msgid ":ref:`sqlite3-connection-context-manager`" msgstr ":ref:`sqlite3-connection-context-manager`" #: ../Doc/library/sqlite3.rst:245 -#, fuzzy msgid ":ref:`sqlite3-howto-row-factory`" -msgstr ":ref:`sqlite3-adapters`" +msgstr ":ref:`sqlite3-howto-row-factory`" #: ../Doc/library/sqlite3.rst:247 msgid "" @@ -444,19 +483,21 @@ msgid "" "create an `SQLite database existing only in memory `_, and open a connection to it." msgstr "" +"La ruta al archivo de base de datos que se va a abrir. Puede pasar ``\":" +"memory:\"`` para crear un `SQLite database existing only in memory `_ y abrir una conexión con él." #: ../Doc/library/sqlite3.rst:277 -#, fuzzy msgid "" "How many seconds the connection should wait before raising an :exc:" "`OperationalError` when a table is locked. If another connection opens a " "transaction to modify a table, that table will be locked until the " "transaction is committed. Default five seconds." msgstr "" -"Cuántos segundos la conexión debe esperar antes de lanzar una excepción si " -"la base de datos está bloqueada por otra conexión. Si otra conexión abre una " -"transacción para alterar la base de datos, será bloqueada antes que la " -"transacción sea confirmada. Por defecto son 5 segundos." +"Cuántos segundos debe esperar la conexión antes de generar un :exc:" +"`OperationalError` cuando una tabla está bloqueada. Si otra conexión abre " +"una transacción para modificar una tabla, esa tabla se bloqueará hasta que " +"se confirme la transacción. El valor predeterminado es cinco segundos." #: ../Doc/library/sqlite3.rst:284 msgid "" @@ -482,7 +523,6 @@ msgstr "" "la detección de tipos está deshabilitada." #: ../Doc/library/sqlite3.rst:298 -#, fuzzy msgid "" "Control legacy transaction handling behaviour. See :attr:`Connection." "isolation_level` and :ref:`sqlite3-transaction-control-isolation-level` for " @@ -491,14 +531,15 @@ msgid "" "Has no effect unless :attr:`Connection.autocommit` is set to :const:" "`~sqlite3.LEGACY_TRANSACTION_CONTROL` (the default)." msgstr "" -"El :attr:`~Connection.isolation_level` de la conexión, controla si y cómo " -"las transacciones son implícitamente abiertas. Puede ser ``\"DEFERRED\"`` " -"(por defecto), ``\"EXCLUSIVE\"`` o ``\"IMMEDIATE\"``; o ``None`` para " -"deshabilitar transacciones abiertas implícitamente. Consulte :ref:`sqlite3-" -"controlling-transactions` para más información." +"Controla el comportamiento de manejo de transacciones heredadas. Consulta :" +"attr:`Connection.isolation_level` y :ref:`sqlite3-transaction-control-" +"isolation-level` para obtener más información. Puede ser ``\"DEFERRED\"`` " +"(predeterminado), ``\"EXCLUSIVE\"`` o ``\"IMMEDIATE\"``; o ``None`` para " +"deshabilitar la apertura de transacciones de manera implícita. No tiene " +"efecto a menos que :attr:`Connection.autocommit` se configure en :const:" +"`~sqlite3.LEGACY_TRANSACTION_CONTROL` (predeterminado)." #: ../Doc/library/sqlite3.rst:308 -#, fuzzy msgid "" "If ``True`` (default), :exc:`ProgrammingError` will be raised if the " "database connection is used by a thread other than the one that created it. " @@ -506,10 +547,12 @@ msgid "" "operations may need to be serialized by the user to avoid data corruption. " "See :attr:`threadsafety` for more information." msgstr "" -"Si es ``True`` (por defecto), sólo el hilo creador puede utilizar la " -"conexión. Si es ``False``, la conexión se puede compartir entre varios " -"hilos; de ser así, las operaciones de escritura deben ser serializadas por " -"el usuario para evitar daños en los datos." +"Si es ``True`` (predeterminado), se generará :exc:`ProgrammingError` si la " +"conexión de la base de datos la utiliza un subproceso distinto del que la " +"creó. Si es ``False``, se puede acceder a la conexión en varios subprocesos; " +"es posible que el usuario deba serializar las operaciones de escritura para " +"evitar la corrupción de datos. Consulte :attr:`threadsafety` para obtener " +"más información." #: ../Doc/library/sqlite3.rst:317 msgid "" @@ -550,6 +593,11 @@ msgid "" "LEGACY_TRANSACTION_CONTROL`. The default will change to ``False`` in a " "future Python release." msgstr "" +"Controla el comportamiento de manejo de transacciones de :pep:`249`. " +"Consulta :attr:`Connection.autocommit` y :ref:`sqlite3-transaction-control-" +"autocommit` para obtener más información. *autocommit* tiene como valor " +"predeterminado :const:`~sqlite3.LEGACY_TRANSACTION_CONTROL`. El valor " +"predeterminado cambiará a ``False`` en una futura versión de Python." #: ../Doc/library/sqlite3.rst msgid "Return type" @@ -572,9 +620,8 @@ msgstr "" "argumento ``connection_handle``." #: ../Doc/library/sqlite3.rst:349 -#, fuzzy msgid "Added the *uri* parameter." -msgstr "Parámetro *uri*." +msgstr "Se agregó el parámetro *uri*." #: ../Doc/library/sqlite3.rst:352 msgid "" @@ -584,14 +631,12 @@ msgstr "" "cadena de caracteres." #: ../Doc/library/sqlite3.rst:355 -#, fuzzy msgid "Added the ``sqlite3.connect/handle`` auditing event." -msgstr "El evento de auditoría ``sqlite3.connect/handle``." +msgstr "Se agregó el evento de auditoría ``sqlite3.connect/handle``." #: ../Doc/library/sqlite3.rst:358 -#, fuzzy msgid "Added the *autocommit* parameter." -msgstr "Parámetro *uri*." +msgstr "Se agregó el parámetro *autocommit*." #: ../Doc/library/sqlite3.rst:361 msgid "" @@ -599,6 +644,10 @@ msgid "" "*isolation_level*, *check_same_thread*, *factory*, *cached_statements*, and " "*uri* is deprecated. They will become keyword-only parameters in Python 3.15." msgstr "" +"El uso posicional de los parámetros *timeout*, *detect_types*, " +"*isolation_level*, *check_same_thread*, *factory*, *cached_statements* y " +"*uri* está obsoleto. Se convertirán en parámetros de solo palabras clave en " +"Python 3.15." #: ../Doc/library/sqlite3.rst:369 msgid "" @@ -624,6 +673,10 @@ msgid "" ">>> sqlite3.complete_statement(\"SELECT foo\")\n" "False" msgstr "" +">>> sqlite3.complete_statement(\"SELECT foo FROM bar;\")\n" +"True\n" +">>> sqlite3.complete_statement(\"SELECT foo\")\n" +"False" #: ../Doc/library/sqlite3.rst:384 msgid "" @@ -640,6 +693,8 @@ msgid "" "See :func:`!runsource` in :source:`Lib/sqlite3/__main__.py` for real-world " "use." msgstr "" +"Consulte :func:`!runsource` en :source:`Lib/sqlite3/__main__.py` para uso en " +"el mundo real." #: ../Doc/library/sqlite3.rst:393 msgid "" @@ -662,22 +717,24 @@ msgid "" "exceptions. Use an :func:`unraisable hook handler ` for " "introspection of the failed callback." msgstr "" +"Los errores en las devoluciones de llamadas de funciones definidas por el " +"usuario se registran como excepciones que no se pueden generar. Utilice un :" +"func:`unraisable hook handler ` para la introspección de " +"la devolución de llamada fallida." #: ../Doc/library/sqlite3.rst:408 -#, fuzzy msgid "" "Register an *adapter* :term:`callable` to adapt the Python type *type* into " "an SQLite type. The adapter is called with a Python object of type *type* as " "its sole argument, and must return a value of a :ref:`type that SQLite " "natively understands `." msgstr "" -"Registra un *adapter* invocable para adaptar el tipo de Python *type* en un " -"tipo SQLite. El adaptador se llama con un objeto python de tipo *type* como " -"único argumento, y debe retornar un valor de un :ref:`tipo que SQLite " -"entiende de forma nativa `." +"Registre un *adapter* :term:`callable` para adaptar el tipo Python *type* a " +"un tipo SQLite. El adaptador se llama con un objeto Python de tipo *type* " +"como único argumento y debe devolver un valor :ref:`type that SQLite " +"natively understands `." #: ../Doc/library/sqlite3.rst:416 -#, fuzzy msgid "" "Register the *converter* :term:`callable` to convert SQLite objects of type " "*typename* into a Python object of a specific type. The converter is invoked " @@ -686,12 +743,12 @@ msgid "" "parameter *detect_types* of :func:`connect` for information regarding how " "type detection works." msgstr "" -"Registra el *converter* invocable para convertir objetos SQLite de tipo " -"*typename* en objetos Python de un tipo en específico. El *converter* se " -"invoca por todos los valores SQLite que sean de tipo *typename*; es pasado " -"un objeto de :class:`bytes` y debería retornar un objeto Python del tipo " -"deseado. Consulte el parámetro *detect_types* de :func:`connect` para más " -"información en cuanto a cómo funciona la detección de tipos." +"Registre *converter* :term:`callable` para convertir objetos SQLite de tipo " +"*typename* en un objeto Python de un tipo específico. El convertidor se " +"invoca para todos los valores SQLite de tipo *typename*; se le pasa un " +"objeto :class:`bytes` y debe devolver un objeto del tipo Python deseado. " +"Consulte el parámetro *detect_types* de :func:`connect` para obtener " +"información sobre cómo funciona la detección de tipos." #: ../Doc/library/sqlite3.rst:424 msgid "" @@ -711,6 +768,10 @@ msgid "" "Python 3.12) transaction control behaviour. See :ref:`sqlite3-transaction-" "control-isolation-level` for more information." msgstr "" +"Establezca :attr:`~Connection.autocommit` en esta constante para seleccionar " +"el comportamiento de control de transacciones de estilo antiguo (anterior a " +"Python 3.12). Consulte :ref:`sqlite3-transaction-control-isolation-level` " +"para obtener más información." #: ../Doc/library/sqlite3.rst:441 msgid "" @@ -728,6 +789,7 @@ msgstr "" msgid "" "SELECT p as \"p [point]\" FROM test; ! will look up converter \"point\"" msgstr "" +"SELECCIONE p como \"p [punto]\" DE prueba; ! buscará el convertidor \"punto\"" #: ../Doc/library/sqlite3.rst:451 msgid "" @@ -760,6 +822,11 @@ msgid "" " n number(10) ! will look up a converter named \"number\"\n" " )" msgstr "" +"CREATE TABLE test(\n" +" i integer primary key, ! will look up a converter named \"integer\"\n" +" p point, ! will look up a converter named \"point\"\n" +" n number(10) ! will look up a converter named \"number\"\n" +" )" #: ../Doc/library/sqlite3.rst:472 msgid "" @@ -770,13 +837,12 @@ msgstr "" "`` (*bitwise or*)." #: ../Doc/library/sqlite3.rst:479 -#, fuzzy msgid "" "Flags that should be returned by the *authorizer_callback* :term:`callable` " "passed to :meth:`Connection.set_authorizer`, to indicate whether:" msgstr "" -"Flags que deben ser retornadas por el invocable *authorizer_callback* que se " -"le pasa a :meth:`Connection.set_authorizer`, para indicar lo siguiente:" +"Banderas que debe devolver el *authorizer_callback* que :term:`callable` " +"pasa a :meth:`Connection.set_authorizer`, para indicar si:" #: ../Doc/library/sqlite3.rst:482 msgid "Access is allowed (:const:`!SQLITE_OK`)," @@ -815,7 +881,7 @@ msgstr "" #: ../Doc/library/sqlite3.rst:499 msgid "The ``named`` DB-API parameter style is also supported." -msgstr "" +msgstr "También se admite el estilo de parámetro ``named`` DB-API." #: ../Doc/library/sqlite3.rst:503 msgid "" @@ -885,7 +951,7 @@ msgstr "Modo de subprocesamiento SQLite" #: ../Doc/library/sqlite3.rst:529 msgid ":pep:`threadsafety <0249#threadsafety>`" -msgstr "" +msgstr ":pep:`threadsafety <0249#threadsafety>`" #: ../Doc/library/sqlite3.rst:529 msgid "`SQLITE_THREADSAFE`_" @@ -955,6 +1021,9 @@ msgid "" "package, a third-party library which used to upstream changes to :mod:`!" "sqlite3`. Today, it carries no meaning or practical value." msgstr "" +"Esta constante solía reflejar el número de versión del paquete ``pysqlite``, " +"una biblioteca de terceros que solía incluir cambios en :mod:`!sqlite3`. Hoy " +"en día, no tiene significado ni valor práctico." #: ../Doc/library/sqlite3.rst:559 msgid "" @@ -969,20 +1038,26 @@ msgid "" "These constants are used for the :meth:`Connection.setconfig` and :meth:" "`~Connection.getconfig` methods." msgstr "" +"Estas constantes se utilizan para los métodos :meth:`Connection.setconfig` " +"y :meth:`~Connection.getconfig`." #: ../Doc/library/sqlite3.rst:589 msgid "" "The availability of these constants varies depending on the version of " "SQLite Python was compiled with." msgstr "" +"La disponibilidad de estas constantes varía según la versión de SQLite con " +"la que se compiló Python." #: ../Doc/library/sqlite3.rst:596 msgid "https://www.sqlite.org/c3ref/c_dbconfig_defensive.html" -msgstr "" +msgstr "https://www.sqlite.org/c3ref/c_dbconfig_defensive.html" #: ../Doc/library/sqlite3.rst:597 msgid "SQLite docs: Database Connection Configuration Options" msgstr "" +"Documentación de SQLite: Opciones de configuración de la conexión a la base " +"de datos" #: ../Doc/library/sqlite3.rst:603 msgid "Connection objects" @@ -1008,6 +1083,8 @@ msgid "" "A :exc:`ResourceWarning` is emitted if :meth:`close` is not called before a :" "class:`!Connection` object is deleted." msgstr "" +"Se emite un :exc:`ResourceWarning` si no se llama a :meth:`close` antes de " +"eliminar un objeto :class:`!Connection`." #: ../Doc/library/sqlite3.rst:623 msgid "An SQLite database connection has the following attributes and methods:" @@ -1016,15 +1093,14 @@ msgstr "" "métodos:" #: ../Doc/library/sqlite3.rst:627 -#, fuzzy msgid "" "Create and return a :class:`Cursor` object. The cursor method accepts a " "single optional parameter *factory*. If supplied, this must be a :term:" "`callable` returning an instance of :class:`Cursor` or its subclasses." msgstr "" -"Crea y retorna un objeto :class:`Cursor`. El método cursor acepta un único " -"parámetro opcional *factory*. Si es agregado, éste debe ser un invocable que " -"retorna una instancia de :class:`Cursor` o sus subclases." +"Crea y devuelve un objeto :class:`Cursor`. El método del cursor acepta un " +"único parámetro opcional, *factory*. Si se proporciona, debe ser un :term:" +"`callable` que devuelva una instancia de :class:`Cursor` o sus subclases." #: ../Doc/library/sqlite3.rst:634 msgid "" @@ -1084,6 +1160,11 @@ msgid "" "attr:`!autocommit` is ``False``, a new transaction is implicitly opened if a " "pending transaction was committed by this method." msgstr "" +"Confirma cualquier transacción pendiente en la base de datos. Si :attr:" +"`autocommit` es ``True`` o no hay ninguna transacción abierta, este método " +"no hace nada. Si :attr:`!autocommit` es ``False``, se abre implícitamente " +"una nueva transacción si se confirmó una transacción pendiente con este " +"método." #: ../Doc/library/sqlite3.rst:677 msgid "" @@ -1092,9 +1173,12 @@ msgid "" "attr:`!autocommit` is ``False``, a new transaction is implicitly opened if a " "pending transaction was rolled back by this method." msgstr "" +"Revertir al inicio de cualquier transacción pendiente. Si :attr:`autocommit` " +"es ``True`` o no hay ninguna transacción abierta, este método no hace nada. " +"Si :attr:`!autocommit` es ``False``, se abre implícitamente una nueva " +"transacción si se revirtió una transacción pendiente con este método." #: ../Doc/library/sqlite3.rst:685 -#, fuzzy msgid "" "Close the database connection. If :attr:`autocommit` is ``False``, any " "pending transaction is implicitly rolled back. If :attr:`!autocommit` is " @@ -1102,9 +1186,11 @@ msgid "" "control is executed. Make sure to :meth:`commit` before closing to avoid " "losing pending changes." msgstr "" -"Cierra la conexión con la base de datos, y si hay alguna transacción " -"pendiente, esta no será guardada; asegúrese de :meth:`commit` antes de " -"cerrar la conexión, para evitar perder los cambios realizados." +"Cierre la conexión a la base de datos. Si :attr:`autocommit` es ``False``, " +"cualquier transacción pendiente se revierte implícitamente. Si :attr:`!" +"autocommit` es ``True`` o :data:`LEGACY_TRANSACTION_CONTROL`, no se ejecuta " +"ningún control de transacción implícito. Asegúrese de ejecutar :meth:" +"`commit` antes de cerrar para evitar perder los cambios pendientes." #: ../Doc/library/sqlite3.rst:695 msgid "" @@ -1147,16 +1233,14 @@ msgstr "" "podrá entonces recibir cualquier cantidad de argumentos." #: ../Doc/library/sqlite3.rst:722 -#, fuzzy msgid "" "A :term:`callable` that is called when the SQL function is invoked. The " "callable must return :ref:`a type natively supported by SQLite `. Set to ``None`` to remove an existing SQL function." msgstr "" -"Un invocable que es llamado cuando la función SQL se invoca. El invocable " -"debe retornar una :ref:`un tipo soportado de forma nativa por SQLite " -"`. Se establece como ``None`` para eliminar una función SQL " -"existente." +"Un :term:`callable` que se llama cuando se invoca la función SQL. El " +"invocable debe devolver :ref:`a type natively supported by SQLite `. Establézcalo en ``None`` para eliminar una función SQL existente." #: ../Doc/library/sqlite3.rst:729 msgid "" @@ -1169,9 +1253,8 @@ msgstr "" "SQLite realizar optimizaciones adicionales." #: ../Doc/library/sqlite3.rst:734 -#, fuzzy msgid "Added the *deterministic* parameter." -msgstr "El parámetro *deterministic*." +msgstr "Se agregó el parámetro *deterministic*." #: ../Doc/library/sqlite3.rst:737 ../Doc/library/sqlite3.rst:781 #: ../Doc/library/sqlite3.rst:849 ../Doc/library/sqlite3.rst:1128 @@ -1191,12 +1274,24 @@ msgid "" "('acbd18db4cc2f85cedef654fccc4a4d8',)\n" ">>> con.close()" msgstr "" +">>> import hashlib\n" +">>> def md5sum(t):\n" +"... return hashlib.md5(t).hexdigest()\n" +">>> con = sqlite3.connect(\":memory:\")\n" +">>> con.create_function(\"md5\", 1, md5sum)\n" +">>> for row in con.execute(\"SELECT md5(?)\", (b\"foo\",)):\n" +"... print(row)\n" +"('acbd18db4cc2f85cedef654fccc4a4d8',)\n" +">>> con.close()" #: ../Doc/library/sqlite3.rst:753 msgid "" "Passing *name*, *narg*, and *func* as keyword arguments is deprecated. These " "parameters will become positional-only in Python 3.15." msgstr "" +"El uso de *name*, *narg* y *func* como argumentos de palabras clave ya no es " +"recomendable. Estos parámetros pasarán a ser solo posicionales en Python " +"3.15." #: ../Doc/library/sqlite3.rst:759 msgid "Create or remove a user-defined SQL aggregate function." @@ -1279,12 +1374,34 @@ msgid "" "\n" "con.close()" msgstr "" +"class MySum:\n" +" def __init__(self):\n" +" self.count = 0\n" +"\n" +" def step(self, value):\n" +" self.count += value\n" +"\n" +" def finalize(self):\n" +" return self.count\n" +"\n" +"con = sqlite3.connect(\":memory:\")\n" +"con.create_aggregate(\"mysum\", 1, MySum)\n" +"cur = con.execute(\"CREATE TABLE test(i)\")\n" +"cur.execute(\"INSERT INTO test(i) VALUES(1)\")\n" +"cur.execute(\"INSERT INTO test(i) VALUES(2)\")\n" +"cur.execute(\"SELECT mysum(i) FROM test\")\n" +"print(cur.fetchone()[0])\n" +"\n" +"con.close()" #: ../Doc/library/sqlite3.rst:812 msgid "" "Passing *name*, *n_arg*, and *aggregate_class* as keyword arguments is " "deprecated. These parameters will become positional-only in Python 3.15." msgstr "" +"El uso de *name*, *n_arg* y *aggregate_class* como argumentos de palabras " +"clave ya no es recomendable. Estos parámetros pasarán a ser solo " +"posicionales en Python 3.15." #: ../Doc/library/sqlite3.rst:818 msgid "Create or remove a user-defined aggregate window function." @@ -1408,6 +1525,50 @@ msgid "" "print(cur.fetchall())\n" "con.close()" msgstr "" +"# Example taken from https://www.sqlite.org/windowfunctions.html#udfwinfunc\n" +"class WindowSumInt:\n" +" def __init__(self):\n" +" self.count = 0\n" +"\n" +" def step(self, value):\n" +" \"\"\"Add a row to the current window.\"\"\"\n" +" self.count += value\n" +"\n" +" def value(self):\n" +" \"\"\"Return the current value of the aggregate.\"\"\"\n" +" return self.count\n" +"\n" +" def inverse(self, value):\n" +" \"\"\"Remove a row from the current window.\"\"\"\n" +" self.count -= value\n" +"\n" +" def finalize(self):\n" +" \"\"\"Return the final value of the aggregate.\n" +"\n" +" Any clean-up actions should be placed here.\n" +" \"\"\"\n" +" return self.count\n" +"\n" +"\n" +"con = sqlite3.connect(\":memory:\")\n" +"cur = con.execute(\"CREATE TABLE test(x, y)\")\n" +"values = [\n" +" (\"a\", 4),\n" +" (\"b\", 5),\n" +" (\"c\", 3),\n" +" (\"d\", 8),\n" +" (\"e\", 1),\n" +"]\n" +"cur.executemany(\"INSERT INTO test VALUES(?, ?)\", values)\n" +"con.create_window_function(\"sumint\", 1, WindowSumInt)\n" +"cur.execute(\"\"\"\n" +" SELECT x, sumint(y) OVER (\n" +" ORDER BY x ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING\n" +" ) AS sum_y\n" +" FROM test ORDER BY x\n" +"\"\"\")\n" +"print(cur.fetchall())\n" +"con.close()" #: ../Doc/library/sqlite3.rst:905 msgid "" @@ -1455,6 +1616,23 @@ msgid "" " print(row)\n" "con.close()" msgstr "" +"def collate_reverse(string1, string2):\n" +" if string1 == string2:\n" +" return 0\n" +" elif string1 < string2:\n" +" return 1\n" +" else:\n" +" return -1\n" +"\n" +"con = sqlite3.connect(\":memory:\")\n" +"con.create_collation(\"reverse\", collate_reverse)\n" +"\n" +"cur = con.execute(\"CREATE TABLE test(x)\")\n" +"cur.executemany(\"INSERT INTO test(x) VALUES(?)\", [(\"a\",), (\"b\",)])\n" +"cur.execute(\"SELECT x FROM test ORDER BY x COLLATE reverse\")\n" +"for row in cur:\n" +" print(row)\n" +"con.close()" #: ../Doc/library/sqlite3.rst:941 msgid "Remove a collation function by setting *callable* to ``None``." @@ -1470,18 +1648,16 @@ msgstr "" "Anteriormente, solamente caracteres ASCII eran permitidos." #: ../Doc/library/sqlite3.rst:950 -#, fuzzy msgid "" "Call this method from a different thread to abort any queries that might be " "executing on the connection. Aborted queries will raise an :exc:" "`OperationalError`." msgstr "" -"Se puede llamar este método desde un hilo diferente para abortar cualquier " -"consulta que pueda estar ejecutándose en la conexión. Consultas abortadas " -"lanzaran una excepción." +"Llame a este método desde un subproceso diferente para cancelar cualquier " +"consulta que pueda estar ejecutándose en la conexión. Las consultas " +"canceladas generarán un error :exc:`OperationalError`." #: ../Doc/library/sqlite3.rst:957 -#, fuzzy msgid "" "Register :term:`callable` *authorizer_callback* to be invoked for each " "attempt to access a column of a table in the database. The callback should " @@ -1489,11 +1665,11 @@ msgid "" "`SQLITE_IGNORE` to signal how access to the column should be handled by the " "underlying SQLite library." msgstr "" -"Registra un invocable *authorizer_callback* que será invocado por cada " -"intento de acceso a la columna de la tabla en la base de datos. La " -"retrollamada podría retornar una :const:`SQLITE_OK`, :const:`SQLITE_DENY`, o " -"un :const:`SQLITE_IGNORE` para indicar cómo el acceso a la columna deberá " -"ser manipulado por las capas inferiores de la biblioteca SQLite." +"Registre :term:`callable` *authorizer_callback* para que se invoque cada vez " +"que se intente acceder a una columna de una tabla en la base de datos. La " +"devolución de llamada debe devolver uno de los siguientes: :const:" +"`SQLITE_OK`, :const:`SQLITE_DENY` o :const:`SQLITE_IGNORE` para indicar cómo " +"debe gestionar la biblioteca SQLite subyacente el acceso a la columna." #: ../Doc/library/sqlite3.rst:964 msgid "" @@ -1538,19 +1714,20 @@ msgid "" "Passing *authorizer_callback* as a keyword argument is deprecated. The " "parameter will become positional-only in Python 3.15." msgstr "" +"El uso de *authorizer_callback* como argumento de palabra clave ya no es " +"recomendable. El parámetro pasará a ser solo posicional en Python 3.15." #: ../Doc/library/sqlite3.rst:987 -#, fuzzy msgid "" "Register :term:`callable` *progress_handler* to be invoked for every *n* " "instructions of the SQLite virtual machine. This is useful if you want to " "get called from SQLite during long-running operations, for example to update " "a GUI." msgstr "" -"Registra un invocable *progress_handler* que será invocado por cada *n* " -"instrucciones de la máquina virtual de SQLite. Esto es útil si quieres " -"recibir llamados de SQLite durante una operación de larga duración, como por " -"ejemplo la actualización de una GUI." +"Registre :term:`callable` *progress_handler* para que se invoque para cada " +"instrucción *n* de la máquina virtual SQLite. Esto es útil si desea recibir " +"llamadas de SQLite durante operaciones de larga duración, por ejemplo, para " +"actualizar una GUI." #: ../Doc/library/sqlite3.rst:992 msgid "" @@ -1561,29 +1738,30 @@ msgstr "" "llame el método con ``None`` para *progress_handler*." #: ../Doc/library/sqlite3.rst:995 -#, fuzzy msgid "" "Returning a non-zero value from the handler function will terminate the " "currently executing query and cause it to raise a :exc:`DatabaseError` " "exception." msgstr "" -"Retornando un valor diferente a 0 de la función gestora terminará la actual " -"consulta en ejecución y causará lanzar una excepción :exc:`OperationalError`." +"Si se devuelve un valor distinto de cero desde la función del controlador, " +"se finalizará la consulta que se está ejecutando actualmente y se generará " +"una excepción :exc:`DatabaseError`." #: ../Doc/library/sqlite3.rst:999 msgid "" "Passing *progress_handler* as a keyword argument is deprecated. The " "parameter will become positional-only in Python 3.15." msgstr "" +"El uso de *progress_handler* como argumento de palabra clave ya no es " +"recomendable. El parámetro pasará a ser solo posicional en Python 3.15." #: ../Doc/library/sqlite3.rst:1006 -#, fuzzy msgid "" "Register :term:`callable` *trace_callback* to be invoked for each SQL " "statement that is actually executed by the SQLite backend." msgstr "" -"Registra un invocable *trace_callback* que será llamado por cada sentencia " -"SQL que sea de hecho ejecutada por el *backend* de SQLite." +"Registre :term:`callable` *trace_callback* para que se invoque para cada " +"declaración SQL que realmente ejecute el backend de SQLite." #: ../Doc/library/sqlite3.rst:1009 msgid "" @@ -1623,6 +1801,8 @@ msgid "" "Passing *trace_callback* as a keyword argument is deprecated. The parameter " "will become positional-only in Python 3.15." msgstr "" +"El uso de *trace_callback* como argumento de palabra clave ya no es " +"recomendable. El parámetro pasará a ser solo posicional en Python 3.15." #: ../Doc/library/sqlite3.rst:1034 msgid "" @@ -1694,21 +1874,45 @@ msgid "" "name MATCH 'pie'\"):\n" " print(row)" msgstr "" +"con.enable_load_extension(True)\n" +"\n" +"# Load the fulltext search extension\n" +"con.execute(\"select load_extension('./fts3.so')\")\n" +"\n" +"# alternatively you can load the extension using an API call:\n" +"# con.load_extension(\"./fts3.so\")\n" +"\n" +"# disable extension loading again\n" +"con.enable_load_extension(False)\n" +"\n" +"# example from SQLite wiki\n" +"con.execute(\"CREATE VIRTUAL TABLE recipe USING fts3(name, ingredients)\")\n" +"con.executescript(\"\"\"\n" +" INSERT INTO recipe (name, ingredients) VALUES('broccoli stew', 'broccoli " +"peppers cheese tomatoes');\n" +" INSERT INTO recipe (name, ingredients) VALUES('pumpkin stew', 'pumpkin " +"onions garlic celery');\n" +" INSERT INTO recipe (name, ingredients) VALUES('broccoli pie', 'broccoli " +"cheese onions flour');\n" +" INSERT INTO recipe (name, ingredients) VALUES('pumpkin pie', 'pumpkin " +"sugar flour butter');\n" +" \"\"\")\n" +"for row in con.execute(\"SELECT rowid, name, ingredients FROM recipe WHERE " +"name MATCH 'pie'\"):\n" +" print(row)" #: ../Doc/library/sqlite3.rst:1086 -#, fuzzy msgid "" "Load an SQLite extension from a shared library. Enable extension loading " "with :meth:`enable_load_extension` before calling this method." msgstr "" -"Carga una extensión SQLite de una biblioteca compartida ubicada en *path*. " -"Se debe habilitar la carga de extensiones con :meth:`enable_load_extension` " -"antes de llamar este método." +"Cargue una extensión SQLite desde una biblioteca compartida. Habilite la " +"carga de extensiones con :meth:`enable_load_extension` antes de llamar a " +"este método." #: ../Doc/library/sqlite3.rst:1090 -#, fuzzy msgid "The path to the SQLite extension." -msgstr "El nombre de la función SQL." +msgstr "La ruta a la extensión SQLite." #: ../Doc/library/sqlite3.rst:1094 msgid "" @@ -1716,6 +1920,9 @@ msgid "" "entry point name of its own; see the SQLite docs `Loading an Extension`_ for " "details." msgstr "" +"Nombre del punto de entrada. Si es ``None`` (el valor predeterminado), " +"SQLite creará un nombre de punto de entrada propio; consulte la " +"documentación de SQLite `Loading an Extension`_ para obtener más detalles." #: ../Doc/library/sqlite3.rst:1103 msgid "" @@ -1730,9 +1937,8 @@ msgid "Added the ``sqlite3.load_extension`` auditing event." msgstr "Agregado el evento de auditoría ``sqlite3.load_extension``." #: ../Doc/library/sqlite3.rst:1110 -#, fuzzy msgid "Added the *entrypoint* parameter." -msgstr "Parámetro *uri*." +msgstr "Se agregó el parámetro *entrypoint*." #: ../Doc/library/sqlite3.rst:1117 msgid "" @@ -1751,6 +1957,9 @@ msgid "" "``prefix_%``. If ``None`` (the default), all database objects will be " "included." msgstr "" +"Un patrón ``LIKE`` opcional para volcar objetos de la base de datos, p. ej., " +"``prefix_%``. Si se usa ``None`` (el valor predeterminado), se incluirán " +"todos los objetos de la base de datos." #: ../Doc/library/sqlite3.rst:1130 #, python-format @@ -1762,16 +1971,20 @@ msgid "" " f.write('%s\\n' % line)\n" "con.close()" msgstr "" +"# Convert file example.db to SQL dump file dump.sql\n" +"con = sqlite3.connect('example.db')\n" +"with open('dump.sql', 'w') as f:\n" +" for line in con.iterdump():\n" +" f.write('%s\\n' % line)\n" +"con.close()" #: ../Doc/library/sqlite3.rst:1141 ../Doc/library/sqlite3.rst:1215 -#, fuzzy msgid ":ref:`sqlite3-howto-encoding`" -msgstr ":ref:`sqlite3-adapters`" +msgstr ":ref:`sqlite3-howto-encoding`" #: ../Doc/library/sqlite3.rst:1143 -#, fuzzy msgid "Added the *filter* parameter." -msgstr "Parámetro *uri*." +msgstr "Se agregó el parámetro *filter*." #: ../Doc/library/sqlite3.rst:1148 msgid "Create a backup of an SQLite database." @@ -1799,18 +2012,16 @@ msgstr "" "defecto es ``-1``." #: ../Doc/library/sqlite3.rst:1162 -#, fuzzy msgid "" "If set to a :term:`callable`, it is invoked with three integer arguments for " "every backup iteration: the *status* of the last iteration, the *remaining* " "number of pages still to be copied, and the *total* number of pages. " "Defaults to ``None``." msgstr "" -"Si se establece un invocable, este será invocado con 3 argumentos enteros " -"para cada iteración sobre la copia de seguridad: el *status* de la última " -"iteración, el *remaining*, que indica el número de páginas pendientes a ser " -"copiadas, y el *total* que indica le número total de páginas. El valor por " -"defecto es ``None``." +"Si se configura en :term:`callable`, se invoca con tres argumentos enteros " +"para cada iteración de copia de seguridad: el *status* de la última " +"iteración, el *remaining* número de páginas que aún se deben copiar y el " +"*total* número de páginas. El valor predeterminado es ``None``." #: ../Doc/library/sqlite3.rst:1171 msgid "" @@ -1847,6 +2058,15 @@ msgid "" "dst.close()\n" "src.close()" msgstr "" +"def progress(status, remaining, total):\n" +" print(f'Copied {total-remaining} of {total} pages...')\n" +"\n" +"src = sqlite3.connect('example.db')\n" +"dst = sqlite3.connect('backup.db')\n" +"with dst:\n" +" src.backup(dst, pages=1, progress=progress)\n" +"dst.close()\n" +"src.close()" #: ../Doc/library/sqlite3.rst:1201 msgid "Example 2, copy an existing database into a transient copy:" @@ -1861,6 +2081,11 @@ msgid "" "dst.close()\n" "src.close()" msgstr "" +"src = sqlite3.connect('example.db')\n" +"dst = sqlite3.connect(':memory:')\n" +"src.backup(dst)\n" +"dst.close()\n" +"src.close()" #: ../Doc/library/sqlite3.rst:1219 msgid "Get a connection runtime limit." @@ -1889,19 +2114,20 @@ msgid "" ">>> con.getlimit(sqlite3.SQLITE_LIMIT_SQL_LENGTH)\n" "1000000000" msgstr "" +">>> con.getlimit(sqlite3.SQLITE_LIMIT_SQL_LENGTH)\n" +"1000000000" #: ../Doc/library/sqlite3.rst:1249 -#, fuzzy msgid "" "Set a connection runtime limit. Attempts to increase a limit above its hard " "upper bound are silently truncated to the hard upper bound. Regardless of " "whether or not the limit was changed, the prior value of the limit is " "returned." msgstr "" -"Establece un límite para el tiempo de ejecución. Los intentos de aumentar un " -"límite por encima de su límite superior duro se truncan silenciosamente al " -"límite superior duro. Independientemente de si se cambió o no el límite, se " -"retorna el valor anterior del límite." +"Establezca un límite de tiempo de ejecución de la conexión. Los intentos de " +"aumentar un límite por encima de su límite superior estricto se truncan de " +"forma silenciosa hasta el límite superior estricto. Independientemente de si " +"se modificó o no el límite, se devuelve el valor anterior del límite." #: ../Doc/library/sqlite3.rst:1254 msgid "The `SQLite limit category`_ to be set." @@ -1927,24 +2153,30 @@ msgid "" ">>> con.getlimit(sqlite3.SQLITE_LIMIT_ATTACHED)\n" "1" msgstr "" +">>> con.setlimit(sqlite3.SQLITE_LIMIT_ATTACHED, 1)\n" +"10\n" +">>> con.getlimit(sqlite3.SQLITE_LIMIT_ATTACHED)\n" +"1" #: ../Doc/library/sqlite3.rst:1287 msgid "Query a boolean connection configuration option." -msgstr "" +msgstr "Consultar una opción de configuración de conexión booleana." #: ../Doc/library/sqlite3.rst:1289 ../Doc/library/sqlite3.rst:1300 msgid "A :ref:`SQLITE_DBCONFIG code `." -msgstr "" +msgstr "Un :ref:`SQLITE_DBCONFIG code `." #: ../Doc/library/sqlite3.rst:1298 msgid "Set a boolean connection configuration option." -msgstr "" +msgstr "Establezca una opción de configuración de conexión booleana." #: ../Doc/library/sqlite3.rst:1303 msgid "" "``True`` if the configuration option should be enabled (default); ``False`` " "if it should be disabled." msgstr "" +"``True`` si la opción de configuración debe estar habilitada " +"(predeterminado); ``False`` si debe estar deshabilitada." #: ../Doc/library/sqlite3.rst:1311 msgid "" @@ -2026,6 +2258,8 @@ msgid "" "This attribute controls :pep:`249`-compliant transaction behaviour. :attr:`!" "autocommit` has three allowed values:" msgstr "" +"Este atributo controla el comportamiento de las transacciones conforme a :" +"pep:`249`. :attr:`!autocommit` tiene tres valores permitidos:" #: ../Doc/library/sqlite3.rst:1368 msgid "" @@ -2033,42 +2267,57 @@ msgid "" "mod:`!sqlite3` ensures a transaction is always open. Use :meth:`commit` and :" "meth:`rollback` to close transactions." msgstr "" +"``False``: Seleccione un comportamiento de transacción compatible con :pep:" +"`249`, lo que implica que :mod:`!sqlite3` garantiza que una transacción esté " +"siempre abierta. Utilice :meth:`commit` y :meth:`rollback` para cerrar " +"transacciones." #: ../Doc/library/sqlite3.rst:1372 msgid "This is the recommended value of :attr:`!autocommit`." -msgstr "" +msgstr "Este es el valor recomendado de :attr:`!autocommit`." #: ../Doc/library/sqlite3.rst:1374 msgid "" "``True``: Use SQLite's `autocommit mode`_. :meth:`commit` and :meth:" "`rollback` have no effect in this mode." msgstr "" +"``True``: Utilice `autocommit mode`_ de SQLite. :meth:`commit` y :meth:" +"`rollback` no tienen efecto en este modo." #: ../Doc/library/sqlite3.rst:1377 msgid "" ":data:`LEGACY_TRANSACTION_CONTROL`: Pre-Python 3.12 (non-:pep:`249`-" "compliant) transaction control. See :attr:`isolation_level` for more details." msgstr "" +":data:`LEGACY_TRANSACTION_CONTROL`: Control de transacciones anterior a " +"Python 3.12 (no compatible con :pep:`249`). Consulte :attr:`isolation_level` " +"para obtener más detalles." #: ../Doc/library/sqlite3.rst:1381 msgid "This is currently the default value of :attr:`!autocommit`." -msgstr "" +msgstr "Este es actualmente el valor predeterminado de :attr:`!autocommit`." #: ../Doc/library/sqlite3.rst:1383 msgid "" "Changing :attr:`!autocommit` to ``False`` will open a new transaction, and " "changing it to ``True`` will commit any pending transaction." msgstr "" +"Cambiar :attr:`!autocommit` a ``False`` abrirá una nueva transacción y " +"cambiarlo a ``True`` confirmará cualquier transacción pendiente." #: ../Doc/library/sqlite3.rst:1386 msgid "See :ref:`sqlite3-transaction-control-autocommit` for more details." msgstr "" +"Consulte :ref:`sqlite3-transaction-control-autocommit` para obtener más " +"detalles." #: ../Doc/library/sqlite3.rst:1390 msgid "" "The :attr:`isolation_level` attribute has no effect unless :attr:" "`autocommit` is :data:`LEGACY_TRANSACTION_CONTROL`." msgstr "" +"El atributo :attr:`isolation_level` no tiene efecto a menos que :attr:" +"`autocommit` sea :data:`LEGACY_TRANSACTION_CONTROL`." #: ../Doc/library/sqlite3.rst:1397 msgid "" @@ -2087,7 +2336,6 @@ msgstr "" "``False`` en caso contrario." #: ../Doc/library/sqlite3.rst:1407 -#, fuzzy msgid "" "Controls the :ref:`legacy transaction handling mode ` of :mod:`!sqlite3`. If set to ``None``, " @@ -2096,12 +2344,13 @@ msgid "" "`SQLite transaction behaviour`_, :ref:`implicit transaction management " "` is performed." msgstr "" -"Este atributo controla la :ref:`transaction handling ` realizado por :mod:`!sqlite3`. Si se establece como ``None``, " -"las transacciones nunca se abrirán implícitamente. Si se establece " -"``\"DEFERRED\"``, ``\"IMMEDIATE\"``, o ``\"EXCLUSIVE\"``, correspondientes " -"al `SQLite transaction behaviour`_, de las capas inferiores, implícitamente " -"se realiza :ref:`transaction management `." +"Controla el :ref:`legacy transaction handling mode ` de :mod:`!sqlite3`. Si se configura en ``None``, " +"las transacciones nunca se abren de forma implícita. Si se configura en uno " +"de los valores ``\"DEFERRED\"``, ``\"IMMEDIATE\"`` o ``\"EXCLUSIVE\"``, " +"correspondiente al `SQLite transaction behaviour`_ subyacente, se ejecuta :" +"ref:`implicit transaction management `." #: ../Doc/library/sqlite3.rst:1415 msgid "" @@ -2118,6 +2367,10 @@ msgid "" "unless :attr:`autocommit` is set to :data:`LEGACY_TRANSACTION_CONTROL` (the " "default)." msgstr "" +"Se recomienda utilizar :attr:`autocommit` para controlar el manejo de " +"transacciones en lugar de :attr:`!isolation_level`. :attr:`!isolation_level` " +"no tiene efecto a menos que :attr:`autocommit` se configure en :data:" +"`LEGACY_TRANSACTION_CONTROL` (el valor predeterminado)." #: ../Doc/library/sqlite3.rst:1427 msgid "" @@ -2127,30 +2380,31 @@ msgid "" "ones. Is ``None`` by default, meaning each row is returned as a :class:" "`tuple`." msgstr "" +"El :attr:`~Cursor.row_factory` inicial para los objetos :class:`Cursor` " +"creados a partir de esta conexión. La asignación a este atributo no afecta " +"al :attr:`!row_factory` de los cursores existentes que pertenecen a esta " +"conexión, solo a los nuevos. Es ``None`` de forma predeterminada, lo que " +"significa que cada fila se devuelve como :class:`tuple`." #: ../Doc/library/sqlite3.rst:1434 ../Doc/library/sqlite3.rst:1720 #: ../Doc/library/sqlite3.rst:1743 -#, fuzzy msgid "See :ref:`sqlite3-howto-row-factory` for more details." -msgstr ":ref:`sqlite3-howtos` para lecturas de interés:" +msgstr "Consulte :ref:`sqlite3-howto-row-factory` para obtener más detalles." #: ../Doc/library/sqlite3.rst:1438 -#, fuzzy msgid "" "A :term:`callable` that accepts a :class:`bytes` parameter and returns a " "text representation of it. The callable is invoked for SQLite values with " "the ``TEXT`` data type. By default, this attribute is set to :class:`str`." msgstr "" -"A invocable que acepta una :class:`bytes`como parámetro y retorna una " -"representación del texto de el. El invocable es llamado por valores SQLite " -"con el tipo de datos ``TEXT``. Por defecto, este atributo se configura como " -"una :class:`str`. Si quieres retornar en su lugar, ``bytes``, entonces se " -"establece *text_factory* como ``bytes``." +"Un :term:`callable` que acepta un parámetro :class:`bytes` y devuelve una " +"representación de texto del mismo. El objeto invocable se invoca para " +"valores SQLite con el tipo de datos ``TEXT``. De manera predeterminada, este " +"atributo está configurado en :class:`str`." #: ../Doc/library/sqlite3.rst:1443 -#, fuzzy msgid "See :ref:`sqlite3-howto-encoding` for more details." -msgstr ":ref:`sqlite3-howtos` para lecturas de interés:" +msgstr "Consulte :ref:`sqlite3-howto-encoding` para obtener más detalles." #: ../Doc/library/sqlite3.rst:1447 msgid "" @@ -2193,6 +2447,8 @@ msgid "" "for row in cur.execute(\"SELECT t FROM data\"):\n" " print(row)" msgstr "" +"for row in cur.execute(\"SELECT t FROM data\"):\n" +" print(row)" #: ../Doc/library/sqlite3.rst:1488 msgid "A :class:`Cursor` instance has the following attributes and methods." @@ -2204,10 +2460,12 @@ msgid "" "Execute a single SQL statement, optionally binding Python values using :ref:" "`placeholders `." msgstr "" +"Ejecuta una única declaración SQL, vinculando opcionalmente valores de " +"Python mediante :ref:`placeholders `." #: ../Doc/library/sqlite3.rst:1499 msgid "A single SQL statement." -msgstr "" +msgstr "Una sola declaración SQL." #: ../Doc/library/sqlite3.rst:1502 msgid "" @@ -2215,23 +2473,27 @@ msgid "" "placeholders are used. A :term:`!sequence` if unnamed placeholders are used. " "See :ref:`sqlite3-placeholders`." msgstr "" +"Valores de Python para vincular a marcadores de posición en *sql*. Un :class:" +"`!dict` si se utilizan marcadores de posición con nombre. Un :term:`!" +"sequence` si se utilizan marcadores de posición sin nombre. Consulte :ref:" +"`sqlite3-placeholders`." #: ../Doc/library/sqlite3.rst:1509 msgid "If *sql* contains more than one SQL statement." -msgstr "" +msgstr "Si *sql* contiene más de una declaración SQL." #: ../Doc/library/sqlite3.rst:1512 -#, fuzzy msgid "" "If :attr:`~Connection.autocommit` is :data:`LEGACY_TRANSACTION_CONTROL`, :" "attr:`~Connection.isolation_level` is not ``None``, *sql* is an ``INSERT``, " "``UPDATE``, ``DELETE``, or ``REPLACE`` statement, and there is no open " "transaction, a transaction is implicitly opened before executing *sql*." msgstr "" -"Si el :attr:`~Connection.isolation_level` no es ``None``, y *sql* es una " -"sentencia ``INSERT``, ``UPDATE``, ``DELETE``, o ``REPLACE``, y no hay " -"transacciones abierta, entonces una transacción se abre implícitamente antes " -"de ejecutar el *sql*." +"Si :attr:`~Connection.autocommit` es :data:`LEGACY_TRANSACTION_CONTROL`, :" +"attr:`~Connection.isolation_level` no es ``None``, *sql* es una declaración " +"``INSERT``, ``UPDATE``, ``DELETE`` o ``REPLACE`` y no hay ninguna " +"transacción abierta, se abre implícitamente una transacción antes de " +"ejecutar *sql*." #: ../Doc/library/sqlite3.rst:1521 msgid "" @@ -2240,10 +2502,15 @@ msgid "" "`dict`. Starting with Python 3.14, :exc:`ProgrammingError` will be raised " "instead." msgstr "" +"Se emite :exc:`DeprecationWarning` si se utilizan :ref:`named placeholders " +"` y *parameters* es una secuencia en lugar de :class:" +"`dict`. A partir de Python 3.14, se emitirá :exc:`ProgrammingError` en su " +"lugar." #: ../Doc/library/sqlite3.rst:1527 msgid "Use :meth:`executescript` to execute multiple SQL statements." msgstr "" +"Utilice :meth:`executescript` para ejecutar múltiples declaraciones SQL." #: ../Doc/library/sqlite3.rst:1531 msgid "" @@ -2251,25 +2518,33 @@ msgid "" "` :abbr:`DML (Data Manipulation Language)` SQL " "statement *sql*." msgstr "" +"Para cada elemento en *parameters*, ejecute repetidamente la instrucción " +"SQL :ref:`parameterized ` :abbr:`DML (lenguaje de " +"manipulación de datos)` *sql*." #: ../Doc/library/sqlite3.rst:1535 msgid "Uses the same implicit transaction handling as :meth:`~Cursor.execute`." msgstr "" +"Utiliza el mismo manejo de transacciones implícitas que :meth:`~Cursor." +"execute`." #: ../Doc/library/sqlite3.rst:1537 msgid "A single SQL DML statement." -msgstr "" +msgstr "Una sola declaración DML de SQL." #: ../Doc/library/sqlite3.rst:1540 msgid "" "An :term:`!iterable` of parameters to bind with the placeholders in *sql*. " "See :ref:`sqlite3-placeholders`." msgstr "" +"Un :term:`!iterable` de parámetros para vincular con los marcadores de " +"posición en *sql*. Consulte :ref:`sqlite3-placeholders`." #: ../Doc/library/sqlite3.rst:1546 msgid "" "If *sql* contains more than one SQL statement, or is not a DML statement." msgstr "" +"Si *sql* contiene más de una declaración SQL o no es una declaración DML." #: ../Doc/library/sqlite3.rst:1552 msgid "" @@ -2280,12 +2555,20 @@ msgid "" "# cur is an sqlite3.Cursor object\n" "cur.executemany(\"INSERT INTO data VALUES(?)\", rows)" msgstr "" +"rows = [\n" +" (\"row1\",),\n" +" (\"row2\",),\n" +"]\n" +"# cur is an sqlite3.Cursor object\n" +"cur.executemany(\"INSERT INTO data VALUES(?)\", rows)" #: ../Doc/library/sqlite3.rst:1567 msgid "" "Any resulting rows are discarded, including DML statements with `RETURNING " "clauses`_." msgstr "" +"Se descartan todas las filas resultantes, incluidas las declaraciones DML " +"con `RETURNING clauses`_." #: ../Doc/library/sqlite3.rst:1574 msgid "" @@ -2294,9 +2577,12 @@ msgid "" "of :class:`dict`\\s. Starting with Python 3.14, :exc:`ProgrammingError` will " "be raised instead." msgstr "" +"Se emite :exc:`DeprecationWarning` si se utilizan :ref:`named placeholders " +"` y los elementos en *parameters* son secuencias en " +"lugar de :class:`dict`. A partir de Python 3.14, se emitirá :exc:" +"`ProgrammingError` en su lugar." #: ../Doc/library/sqlite3.rst:1583 -#, fuzzy msgid "" "Execute the SQL statements in *sql_script*. If the :attr:`~Connection." "autocommit` is :data:`LEGACY_TRANSACTION_CONTROL` and there is a pending " @@ -2304,10 +2590,11 @@ msgid "" "implicit transaction control is performed; any transaction control must be " "added to *sql_script*." msgstr "" -"Ejecuta las sentencias SQL en *sql_script*. Si hay una transacción " -"pendiente, primero se ejecuta una instrucción ``COMMIT`` implícitamente. No " -"se realiza ningún otro control de transacción implícito; Cualquier control " -"de transacción debe agregarse a *sql_script*." +"Ejecute las sentencias SQL en *sql_script*. Si :attr:`~Connection." +"autocommit` es :data:`LEGACY_TRANSACTION_CONTROL` y hay una transacción " +"pendiente, primero se ejecuta una sentencia ``COMMIT`` implícita. No se " +"realiza ningún otro control de transacción implícito; cualquier control de " +"transacción debe agregarse a *sql_script*." #: ../Doc/library/sqlite3.rst:1591 msgid "*sql_script* must be a :class:`string `." @@ -2324,18 +2611,25 @@ msgid "" " COMMIT;\n" "\"\"\")" msgstr "" +"# cur is an sqlite3.Cursor object\n" +"cur.executescript(\"\"\"\n" +" BEGIN;\n" +" CREATE TABLE person(firstname, lastname, age);\n" +" CREATE TABLE book(title, author, published);\n" +" CREATE TABLE publisher(name, address);\n" +" COMMIT;\n" +"\"\"\")" #: ../Doc/library/sqlite3.rst:1608 -#, fuzzy msgid "" "If :attr:`~Cursor.row_factory` is ``None``, return the next row query result " "set as a :class:`tuple`. Else, pass it to the row factory and return its " "result. Return ``None`` if no more data is available." msgstr "" -"Si el :attr:`~Connection.row_factory` es ``None``, retorna el conjunto de " -"resultados de la consulta de la siguiente fila como un :class:`tuple`. De lo " -"contrario, páselo a la fábrica de filas y retorne su resultado. Retorna " -"``None`` si no hay más datos disponibles." +"Si :attr:`~Cursor.row_factory` es ``None``, devuelve el siguiente conjunto " +"de resultados de consulta de fila como :class:`tuple`. De lo contrario, " +"páselo a la fábrica de filas y devuelve su resultado. Devuelve ``None`` si " +"no hay más datos disponibles." #: ../Doc/library/sqlite3.rst:1616 msgid "" @@ -2429,6 +2723,11 @@ msgid "" "True\n" ">>> con.close()" msgstr "" +">>> con = sqlite3.connect(\":memory:\")\n" +">>> cur = con.cursor()\n" +">>> cur.connection == con\n" +"True\n" +">>> con.close()" #: ../Doc/library/sqlite3.rst:1674 msgid "" @@ -2472,7 +2771,6 @@ msgid "Added support for the ``REPLACE`` statement." msgstr "Se agregó soporte para sentencias ``REPLACE``." #: ../Doc/library/sqlite3.rst:1697 -#, fuzzy msgid "" "Read-only attribute that provides the number of modified rows for " "``INSERT``, ``UPDATE``, ``DELETE``, and ``REPLACE`` statements; is ``-1`` " @@ -2481,11 +2779,13 @@ msgid "" "methods, after the statement has run to completion. This means that any " "resulting rows must be fetched in order for :attr:`!rowcount` to be updated." msgstr "" -"Atributo de solo lectura que proporciona el número de filas modificadas para " -"las sentencias ``INSERT``, ``UPDATE``, ``DELETE`` y ``REPLACE``; se usa " -"``-1`` para otras sentencias, incluidas las consultas :abbr:`CTE (Common " -"Table Expression)`. Sólo se actualiza mediante los métodos :meth:`execute` " -"y :meth:`executemany`." +"Atributo de solo lectura que proporciona la cantidad de filas modificadas " +"para las instrucciones ``INSERT``, ``UPDATE``, ``DELETE`` y ``REPLACE``; es " +"``-1`` para otras instrucciones, incluidas las consultas CTE (Common Table " +"Expression) . Solo se actualiza mediante los métodos :meth:`execute` y :meth:" +"`executemany`, después de que la instrucción se haya ejecutado hasta su " +"finalización. Esto significa que se deben obtener todas las filas " +"resultantes para que se actualice :attr:`!rowcount`." #: ../Doc/library/sqlite3.rst:1708 msgid "" @@ -2495,6 +2795,11 @@ msgid "" "arguments, a :class:`Cursor` object and the :class:`!tuple` of row values, " "and returns a custom object representing an SQLite row." msgstr "" +"Controla cómo se representa una fila obtenida de este :class:`!Cursor`. Si " +"es ``None``, una fila se representa como :class:`tuple`. Se puede configurar " +"como :class:`sqlite3.Row` incluido; o como :term:`callable` que acepta dos " +"argumentos, un objeto :class:`Cursor` y el :class:`!tuple` de valores de " +"fila, y devuelve un objeto personalizado que representa una fila de SQLite." #: ../Doc/library/sqlite3.rst:1715 msgid "" @@ -2502,6 +2807,9 @@ msgid "" "Cursor` was created. Assigning to this attribute does not affect :attr:" "`Connection.row_factory` of the parent connection." msgstr "" +"El valor predeterminado es el valor que se estableció en :attr:`Connection." +"row_factory` cuando se creó :class:`!Cursor`. La asignación a este atributo " +"no afecta a :attr:`Connection.row_factory` de la conexión principal." #: ../Doc/library/sqlite3.rst:1731 msgid "Row objects" @@ -2520,13 +2828,12 @@ msgstr "" "nombre de columna e índice." #: ../Doc/library/sqlite3.rst:1740 -#, fuzzy msgid "" "Two :class:`!Row` objects compare equal if they have identical column names " "and values." msgstr "" -"Dos objetos de fila comparan iguales si tienen columnas iguales y miembros " -"iguales." +"Dos objetos :class:`!Row` se consideran iguales si tienen nombres de columna " +"y valores idénticos." #: ../Doc/library/sqlite3.rst:1747 msgid "" @@ -2588,6 +2895,24 @@ msgid "" "print(greeting) # outputs \"b'Hello, world!'\"\n" "con.close()" msgstr "" +"con = sqlite3.connect(\":memory:\")\n" +"con.execute(\"CREATE TABLE test(blob_col blob)\")\n" +"con.execute(\"INSERT INTO test(blob_col) VALUES(zeroblob(13))\")\n" +"\n" +"# Write to our blob, using two write operations:\n" +"with con.blobopen(\"test\", \"blob_col\", 1) as blob:\n" +" blob.write(b\"hello, \")\n" +" blob.write(b\"world.\")\n" +" # Modify the first and last bytes of our blob\n" +" blob[0] = ord(\"H\")\n" +" blob[-1] = ord(\"!\")\n" +"\n" +"# Read the contents of our blob\n" +"with con.blobopen(\"test\", \"blob_col\", 1) as blob:\n" +" greeting = blob.read()\n" +"\n" +"print(greeting) # outputs \"b'Hello, world!'\"\n" +"con.close()" #: ../Doc/library/sqlite3.rst:1800 msgid "Close the blob." @@ -2630,18 +2955,17 @@ msgid "Return the current access position of the blob." msgstr "Devolver la posición de acceso actual del blob." #: ../Doc/library/sqlite3.rst:1826 -#, fuzzy msgid "" "Set the current access position of the blob to *offset*. The *origin* " "argument defaults to :const:`os.SEEK_SET` (absolute blob positioning). Other " "values for *origin* are :const:`os.SEEK_CUR` (seek relative to the current " "position) and :const:`os.SEEK_END` (seek relative to the blob’s end)." msgstr "" -"Establezca la posición de acceso actual del blob en *offset*. El valor " -"predeterminado del argumento *origin* es :data:`os. SEEK_SET` " -"(posicionamiento absoluto de blobs). Otros valores para *origin* son :data:" -"`os. SEEK_CUR` (busca en relación con la posición actual) y :data:`os. " -"SEEK_END` (buscar en relación con el final del blob)." +"Establezca la posición de acceso actual del blob en *offset*. El argumento " +"*origin* tiene como valor predeterminado :const:`os.SEEK_SET` (posición " +"absoluta del blob). Otros valores para *origin* son :const:`os.SEEK_CUR` " +"(búsqueda relativa a la posición actual) y :const:`os.SEEK_END` (búsqueda " +"relativa al final del blob)." #: ../Doc/library/sqlite3.rst:1834 msgid "PrepareProtocol objects" @@ -2894,9 +3218,8 @@ msgstr "" "ref:`converters `." #: ../Doc/library/sqlite3.rst:1988 -#, fuzzy msgid "Default adapters and converters (deprecated)" -msgstr "Adaptadores y convertidores por defecto" +msgstr "Adaptadores y convertidores predeterminados (en desuso)" #: ../Doc/library/sqlite3.rst:1992 msgid "" @@ -2904,29 +3227,38 @@ msgid "" "Instead, use the :ref:`sqlite3-adapter-converter-recipes` and tailor them to " "your needs." msgstr "" +"Los adaptadores y convertidores predeterminados están obsoletos a partir de " +"Python 3.12. En su lugar, utilice :ref:`sqlite3-adapter-converter-recipes` y " +"adáptelos a sus necesidades." #: ../Doc/library/sqlite3.rst:1996 -#, fuzzy msgid "The deprecated default adapters and converters consist of:" -msgstr "Adaptadores y convertidores por defecto" +msgstr "" +"Los adaptadores y convertidores predeterminados obsoletos consisten en:" #: ../Doc/library/sqlite3.rst:1998 msgid "" "An adapter for :class:`datetime.date` objects to :class:`strings ` in " "`ISO 8601`_ format." msgstr "" +"Un adaptador para objetos :class:`datetime.date` a :class:`strings ` en " +"formato `ISO 8601`_." #: ../Doc/library/sqlite3.rst:2000 msgid "" "An adapter for :class:`datetime.datetime` objects to strings in ISO 8601 " "format." msgstr "" +"Un adaptador para objetos :class:`datetime.datetime` a cadenas en formato " +"ISO 8601." #: ../Doc/library/sqlite3.rst:2002 msgid "" "A converter for :ref:`declared ` \"date\" types to :" "class:`datetime.date` objects." msgstr "" +"Un convertidor de tipos \"fecha\" :ref:`declared ` a " +"objetos :class:`datetime.date`." #: ../Doc/library/sqlite3.rst:2004 msgid "" @@ -2934,6 +3266,9 @@ msgid "" "objects. Fractional parts will be truncated to 6 digits (microsecond " "precision)." msgstr "" +"Un convertidor de tipos de \"marca de tiempo\" declarados a objetos :class:" +"`datetime.datetime`. Las partes fraccionarias se truncarán a 6 dígitos " +"(precisión de microsegundos)." #: ../Doc/library/sqlite3.rst:2010 msgid "" @@ -2950,7 +3285,7 @@ msgstr "" #: ../Doc/library/sqlite3.rst:2023 msgid "Command-line interface" -msgstr "" +msgstr "Interfaz de línea de comandos" #: ../Doc/library/sqlite3.rst:2025 msgid "" @@ -2958,22 +3293,25 @@ msgid "" "interpreter's :option:`-m` switch, in order to provide a simple SQLite " "shell. The argument signature is as follows::" msgstr "" +"El módulo :mod:`!sqlite3` se puede invocar como un script, utilizando el " +"modificador :option:`-m` del intérprete, para proporcionar un shell SQLite " +"simple. La firma del argumento es la siguiente:" #: ../Doc/library/sqlite3.rst:2030 msgid "python -m sqlite3 [-h] [-v] [filename] [sql]" -msgstr "" +msgstr "python -m sqlite3 [-h] [-v] [filename] [sql]" #: ../Doc/library/sqlite3.rst:2032 msgid "Type ``.quit`` or CTRL-D to exit the shell." -msgstr "" +msgstr "Escriba ``.quit`` o CTRL-D para salir del shell." #: ../Doc/library/sqlite3.rst:2038 msgid "Print CLI help." -msgstr "" +msgstr "Ayuda de la CLI de impresión." #: ../Doc/library/sqlite3.rst:2042 msgid "Print underlying SQLite library version." -msgstr "" +msgstr "Imprima la versión de la biblioteca SQLite subyacente." #: ../Doc/library/sqlite3.rst:2050 msgid "How-to guides" @@ -2985,18 +3323,17 @@ msgstr "" "Cómo usar marcadores de posición para vincular valores en consultas SQL" #: ../Doc/library/sqlite3.rst:2057 -#, fuzzy msgid "" "SQL operations usually need to use values from Python variables. However, " "beware of using Python's string operations to assemble queries, as they are " "vulnerable to `SQL injection attacks`_. For example, an attacker can simply " "close the single quote and inject ``OR TRUE`` to select all rows::" msgstr "" -"Las operaciones de SQL generalmente necesitan usar valores de variables de " -"Python. Sin embargo, tenga cuidado con el uso de las operaciones de cadena " -"de caracteres de Python para ensamblar consultas, ya que son vulnerables a " -"los `SQL injection attacks`_ (see the `xkcd webcomic `_ para ver un ejemplo gracioso de lo que puede ir mal)::" +"Las operaciones SQL suelen necesitar utilizar valores de variables de " +"Python. Sin embargo, tenga cuidado al utilizar las operaciones de cadena de " +"Python para ensamblar consultas, ya que son vulnerables a `SQL injection " +"attacks`_. Por ejemplo, un atacante puede simplemente cerrar la comilla " +"simple e inyectar ``OR TRUE`` para seleccionar todas las filas:" #: ../Doc/library/sqlite3.rst:2062 #, python-format @@ -3009,6 +3346,13 @@ msgid "" "SELECT * FROM stocks WHERE symbol = '' OR TRUE; --'\n" ">>> cur.execute(sql)" msgstr "" +">>> # Never do this -- insecure!\n" +">>> symbol = input()\n" +"' OR TRUE; --\n" +">>> sql = \"SELECT * FROM stocks WHERE symbol = '%s'\" % symbol\n" +">>> print(sql)\n" +"SELECT * FROM stocks WHERE symbol = '' OR TRUE; --'\n" +">>> cur.execute(sql)" #: ../Doc/library/sqlite3.rst:2070 msgid "" @@ -3017,9 +3361,13 @@ msgid "" "values into the query by providing them as a :class:`tuple` of values to the " "second argument of the cursor's :meth:`~Cursor.execute` method." msgstr "" +"En su lugar, utilice la sustitución de parámetros de DB-API. Para insertar " +"una variable en una cadena de consulta, utilice un marcador de posición en " +"la cadena y sustituya los valores reales en la consulta proporcionándolos " +"como un :class:`tuple` de valores al segundo argumento del método :meth:" +"`~Cursor.execute` del cursor." #: ../Doc/library/sqlite3.rst:2075 -#, fuzzy msgid "" "An SQL statement may use one of two kinds of placeholders: question marks " "(qmark style) or named placeholders (named style). For the qmark style, " @@ -3029,19 +3377,15 @@ msgid "" "which must contain keys for all named parameters; any extra items are " "ignored. Here's an example of both styles:" msgstr "" -"En su lugar, utilice la sustitución de parámetros de la DB-API. Para " -"insertar una variable en una consulta, use un marcador de posición en la " -"consulta y sustituya los valores reales en la consulta como una :class:" -"`tuple` de valores al segundo argumento de :meth:`~Cursor.execute`. Una " -"sentencia SQL puede utilizar uno de dos tipos de marcadores de posición: " +"Una sentencia SQL puede utilizar uno de dos tipos de marcadores de posición: " "signos de interrogación (estilo qmark) o marcadores de posición con nombre " -"(estilo con nombre). Para el estilo qmark, ``parameters`` debe ser un :term:" -"`sequence `. Para el estilo nombrado, puede ser una instancia :" -"term:`sequence ` o :class:`dict`. La longitud de :term:`sequence " -"` debe coincidir con el número de marcadores de posición, o se " -"lanzará un :exc:`ProgrammingError`. Si se proporciona un :class:`dict`, debe " -"contener claves para todos los parámetros nombrados. Cualquier item " -"adicional se ignorará. Aquí un ejemplo de ambos estilos:" +"(estilo con nombre). Para el estilo qmark, *parameters* debe ser un :term:" +"`sequence` cuya longitud debe coincidir con el número de marcadores de " +"posición, o se genera un :exc:`ProgrammingError`. Para el estilo con nombre, " +"*parameters* debe ser una instancia de un :class:`dict` (o una subclase), " +"que debe contener claves para todos los parámetros con nombre; se ignoran " +"todos los elementos adicionales. A continuación, se muestra un ejemplo de " +"ambos estilos:" #: ../Doc/library/sqlite3.rst:2086 msgid "" @@ -3063,12 +3407,31 @@ msgid "" "print(cur.fetchall())\n" "con.close()" msgstr "" +"con = sqlite3.connect(\":memory:\")\n" +"cur = con.execute(\"CREATE TABLE lang(name, first_appeared)\")\n" +"\n" +"# This is the named style used with executemany():\n" +"data = (\n" +" {\"name\": \"C\", \"year\": 1972},\n" +" {\"name\": \"Fortran\", \"year\": 1957},\n" +" {\"name\": \"Python\", \"year\": 1991},\n" +" {\"name\": \"Go\", \"year\": 2009},\n" +")\n" +"cur.executemany(\"INSERT INTO lang VALUES(:name, :year)\", data)\n" +"\n" +"# This is the qmark style used in a SELECT query:\n" +"params = (1972,)\n" +"cur.execute(\"SELECT * FROM lang WHERE first_appeared = ?\", params)\n" +"print(cur.fetchall())\n" +"con.close()" #: ../Doc/library/sqlite3.rst:2113 msgid "" ":pep:`249` numeric placeholders are *not* supported. If used, they will be " "interpreted as named placeholders." msgstr "" +"Los marcadores de posición numéricos :pep:`249` son compatibles con *not*. " +"Si se utilizan, se interpretarán como marcadores de posición con nombre." #: ../Doc/library/sqlite3.rst:2120 msgid "How to adapt custom Python types to SQLite values" @@ -3139,6 +3502,20 @@ msgid "" "print(cur.fetchone()[0])\n" "con.close()" msgstr "" +"class Point:\n" +" def __init__(self, x, y):\n" +" self.x, self.y = x, y\n" +"\n" +" def __conform__(self, protocol):\n" +" if protocol is sqlite3.PrepareProtocol:\n" +" return f\"{self.x};{self.y}\"\n" +"\n" +"con = sqlite3.connect(\":memory:\")\n" +"cur = con.cursor()\n" +"\n" +"cur.execute(\"SELECT ?\", (Point(4.0, -3.2),))\n" +"print(cur.fetchone()[0])\n" +"con.close()" #: ../Doc/library/sqlite3.rst:2172 msgid "How to register adapter callables" @@ -3172,6 +3549,21 @@ msgid "" "print(cur.fetchone()[0])\n" "con.close()" msgstr "" +"class Point:\n" +" def __init__(self, x, y):\n" +" self.x, self.y = x, y\n" +"\n" +"def adapt_point(point):\n" +" return f\"{point.x};{point.y}\"\n" +"\n" +"sqlite3.register_adapter(Point, adapt_point)\n" +"\n" +"con = sqlite3.connect(\":memory:\")\n" +"cur = con.cursor()\n" +"\n" +"cur.execute(\"SELECT ?\", (Point(1.0, 2.5),))\n" +"print(cur.fetchone()[0])\n" +"con.close()" #: ../Doc/library/sqlite3.rst:2205 msgid "How to convert SQLite values to custom Python types" @@ -3217,6 +3609,9 @@ msgid "" " x, y = map(float, s.split(b\";\"))\n" " return Point(x, y)" msgstr "" +"def convert_point(s):\n" +" x, y = map(float, s.split(b\";\"))\n" +" return Point(x, y)" #: ../Doc/library/sqlite3.rst:2229 msgid "" @@ -3290,6 +3685,44 @@ msgid "" "cur.close()\n" "con.close()" msgstr "" +"class Point:\n" +" def __init__(self, x, y):\n" +" self.x, self.y = x, y\n" +"\n" +" def __repr__(self):\n" +" return f\"Point({self.x}, {self.y})\"\n" +"\n" +"def adapt_point(point):\n" +" return f\"{point.x};{point.y}\"\n" +"\n" +"def convert_point(s):\n" +" x, y = list(map(float, s.split(b\";\")))\n" +" return Point(x, y)\n" +"\n" +"# Register the adapter and converter\n" +"sqlite3.register_adapter(Point, adapt_point)\n" +"sqlite3.register_converter(\"point\", convert_point)\n" +"\n" +"# 1) Parse using declared types\n" +"p = Point(4.0, -3.2)\n" +"con = sqlite3.connect(\":memory:\", detect_types=sqlite3.PARSE_DECLTYPES)\n" +"cur = con.execute(\"CREATE TABLE test(p point)\")\n" +"\n" +"cur.execute(\"INSERT INTO test(p) VALUES(?)\", (p,))\n" +"cur.execute(\"SELECT p FROM test\")\n" +"print(\"with declared types:\", cur.fetchone()[0])\n" +"cur.close()\n" +"con.close()\n" +"\n" +"# 2) Parse using column names\n" +"con = sqlite3.connect(\":memory:\", detect_types=sqlite3.PARSE_COLNAMES)\n" +"cur = con.execute(\"CREATE TABLE test(p)\")\n" +"\n" +"cur.execute(\"INSERT INTO test(p) VALUES(?)\", (p,))\n" +"cur.execute('SELECT p AS \"p [point]\" FROM test')\n" +"print(\"with column names:\", cur.fetchone()[0])\n" +"cur.close()\n" +"con.close()" #: ../Doc/library/sqlite3.rst:2292 msgid "Adapter and converter recipes" @@ -3338,6 +3771,40 @@ msgid "" "sqlite3.register_converter(\"datetime\", convert_datetime)\n" "sqlite3.register_converter(\"timestamp\", convert_timestamp)" msgstr "" +"import datetime\n" +"import sqlite3\n" +"\n" +"def adapt_date_iso(val):\n" +" \"\"\"Adapt datetime.date to ISO 8601 date.\"\"\"\n" +" return val.isoformat()\n" +"\n" +"def adapt_datetime_iso(val):\n" +" \"\"\"Adapt datetime.datetime to timezone-naive ISO 8601 date.\"\"\"\n" +" return val.isoformat()\n" +"\n" +"def adapt_datetime_epoch(val):\n" +" \"\"\"Adapt datetime.datetime to Unix timestamp.\"\"\"\n" +" return int(val.timestamp())\n" +"\n" +"sqlite3.register_adapter(datetime.date, adapt_date_iso)\n" +"sqlite3.register_adapter(datetime.datetime, adapt_datetime_iso)\n" +"sqlite3.register_adapter(datetime.datetime, adapt_datetime_epoch)\n" +"\n" +"def convert_date(val):\n" +" \"\"\"Convert ISO 8601 date to datetime.date object.\"\"\"\n" +" return datetime.date.fromisoformat(val.decode())\n" +"\n" +"def convert_datetime(val):\n" +" \"\"\"Convert ISO 8601 datetime to datetime.datetime object.\"\"\"\n" +" return datetime.datetime.fromisoformat(val.decode())\n" +"\n" +"def convert_timestamp(val):\n" +" \"\"\"Convert Unix epoch timestamp to datetime.datetime object.\"\"\"\n" +" return datetime.datetime.fromtimestamp(int(val))\n" +"\n" +"sqlite3.register_converter(\"date\", convert_date)\n" +"sqlite3.register_converter(\"datetime\", convert_datetime)\n" +"sqlite3.register_converter(\"timestamp\", convert_timestamp)" #: ../Doc/library/sqlite3.rst:2356 msgid "How to use connection shortcut methods" @@ -3387,13 +3854,32 @@ msgid "" "# the connection object should be closed manually\n" "con.close()" msgstr "" +"# Create and fill the table.\n" +"con = sqlite3.connect(\":memory:\")\n" +"con.execute(\"CREATE TABLE lang(name, first_appeared)\")\n" +"data = [\n" +" (\"C++\", 1985),\n" +" (\"Objective-C\", 1984),\n" +"]\n" +"con.executemany(\"INSERT INTO lang(name, first_appeared) VALUES(?, ?)\", " +"data)\n" +"\n" +"# Print the table contents\n" +"for row in con.execute(\"SELECT name, first_appeared FROM lang\"):\n" +" print(row)\n" +"\n" +"print(\"I just deleted\", con.execute(\"DELETE FROM lang\").rowcount, " +"\"rows\")\n" +"\n" +"# close() is not a shortcut method and it's not called automatically;\n" +"# the connection object should be closed manually\n" +"con.close()" #: ../Doc/library/sqlite3.rst:2399 msgid "How to use the connection context manager" msgstr "Como usar la conexión con un administrador de contexto" #: ../Doc/library/sqlite3.rst:2401 -#, fuzzy msgid "" "A :class:`Connection` object can be used as a context manager that " "automatically commits or rolls back open transactions when leaving the body " @@ -3406,30 +3892,32 @@ msgid "" msgstr "" "Un objeto :class:`Connection` se puede utilizar como un administrador de " "contexto que confirma o revierte automáticamente las transacciones abiertas " -"al salir del administrador de contexto. Si el cuerpo de :keyword:`with` " -"termina con una excepción, la transacción es confirmada. Si la confirmación " -"falla, o si el cuerpo del ``with`` lanza una excepción que no es capturada, " -"la transacción se revierte." +"al salir del cuerpo del administrador de contexto. Si el cuerpo de la " +"instrucción :keyword:`with` finaliza sin excepciones, la transacción se " +"confirma. Si esta confirmación falla, o si el cuerpo de la instrucción " +"``with`` genera una excepción no detectada, la transacción se revierte. Si :" +"attr:`~Connection.autocommit` es ``False``, se abre implícitamente una nueva " +"transacción después de confirmar o revertir." #: ../Doc/library/sqlite3.rst:2412 -#, fuzzy msgid "" "If there is no open transaction upon leaving the body of the ``with`` " "statement, or if :attr:`~Connection.autocommit` is ``True``, the context " "manager does nothing." msgstr "" -"Si no hay una transacción abierta al salir del cuerpo de la declaración " -"``with``, el administrador de contexto no funciona." +"Si no hay ninguna transacción abierta al salir del cuerpo de la declaración " +"``with``, o si :attr:`~Connection.autocommit` es ``True``, el administrador " +"de contexto no hace nada." #: ../Doc/library/sqlite3.rst:2417 -#, fuzzy msgid "" "The context manager neither implicitly opens a new transaction nor closes " "the connection. If you need a closing context manager, consider using :meth:" "`contextlib.closing`." msgstr "" "El administrador de contexto no abre implícitamente una nueva transacción ni " -"cierra la conexión." +"cierra la conexión. Si necesita un administrador de contexto de cierre, " +"considere usar :meth:`contextlib.closing`." #: ../Doc/library/sqlite3.rst:2421 msgid "" @@ -3454,6 +3942,26 @@ msgid "" "# so the connection object should be closed manually\n" "con.close()" msgstr "" +"con = sqlite3.connect(\":memory:\")\n" +"con.execute(\"CREATE TABLE lang(id INTEGER PRIMARY KEY, name VARCHAR " +"UNIQUE)\")\n" +"\n" +"# Successful, con.commit() is called automatically afterwards\n" +"with con:\n" +" con.execute(\"INSERT INTO lang(name) VALUES(?)\", (\"Python\",))\n" +"\n" +"# con.rollback() is called after the with block finishes with an exception,\n" +"# the exception is still raised and must be caught\n" +"try:\n" +" with con:\n" +" con.execute(\"INSERT INTO lang(name) VALUES(?)\", (\"Python\",))\n" +"except sqlite3.IntegrityError:\n" +" print(\"couldn't add Python twice\")\n" +"\n" +"# Connection object used as context manager only commits or rollbacks " +"transactions,\n" +"# so the connection object should be closed manually\n" +"con.close()" #: ../Doc/library/sqlite3.rst:2451 msgid "How to work with SQLite URIs" @@ -3474,6 +3982,10 @@ msgid "" "Traceback (most recent call last):\n" "OperationalError: attempt to write a readonly database" msgstr "" +">>> con = sqlite3.connect(\"file:tutorial.db?mode=ro\", uri=True)\n" +">>> con.execute(\"CREATE TABLE readonly(data)\")\n" +"Traceback (most recent call last):\n" +"OperationalError: attempt to write a readonly database" #: ../Doc/library/sqlite3.rst:2464 msgid "" @@ -3490,6 +4002,9 @@ msgid "" "Traceback (most recent call last):\n" "OperationalError: unable to open database file" msgstr "" +">>> con = sqlite3.connect(\"file:nosuchdb.db?mode=rw\", uri=True)\n" +"Traceback (most recent call last):\n" +"OperationalError: unable to open database file" #: ../Doc/library/sqlite3.rst:2474 msgid "Create a shared named in-memory database:" @@ -3509,6 +4024,17 @@ msgid "" "con1.close()\n" "con2.close()" msgstr "" +"db = \"file:mem1?mode=memory&cache=shared\"\n" +"con1 = sqlite3.connect(db, uri=True)\n" +"con2 = sqlite3.connect(db, uri=True)\n" +"with con1:\n" +" con1.execute(\"CREATE TABLE shared(data)\")\n" +" con1.execute(\"INSERT INTO shared VALUES(28)\")\n" +"res = con2.execute(\"SELECT data FROM shared\")\n" +"assert res.fetchone() == (28,)\n" +"\n" +"con1.close()\n" +"con2.close()" #: ../Doc/library/sqlite3.rst:2490 msgid "" @@ -3520,7 +4046,7 @@ msgstr "" #: ../Doc/library/sqlite3.rst:2499 msgid "How to create and use row factories" -msgstr "" +msgstr "Cómo crear y utilizar fábricas de filas" #: ../Doc/library/sqlite3.rst:2501 msgid "" @@ -3528,6 +4054,10 @@ msgid "" "class:`!tuple` does not suit your needs, you can use the :class:`sqlite3." "Row` class or a custom :attr:`~Cursor.row_factory`." msgstr "" +"De forma predeterminada, :mod:`!sqlite3` representa cada fila como :class:" +"`tuple`. Si :class:`!tuple` no se adapta a sus necesidades, puede utilizar " +"la clase :class:`sqlite3.Row` o una :attr:`~Cursor.row_factory` " +"personalizada." #: ../Doc/library/sqlite3.rst:2506 msgid "" @@ -3536,6 +4066,10 @@ msgid "" "`Connection.row_factory`, so all cursors created from the connection will " "use the same row factory." msgstr "" +"Si bien :attr:`!row_factory` existe como atributo tanto en :class:`Cursor` " +"como en :class:`Connection`, se recomienda configurar :class:`Connection." +"row_factory`, de modo que todos los cursores creados a partir de la conexión " +"utilicen la misma fábrica de filas." #: ../Doc/library/sqlite3.rst:2511 msgid "" @@ -3544,16 +4078,23 @@ msgid "" "To use :class:`!Row` as a row factory, assign it to the :attr:`!row_factory` " "attribute:" msgstr "" +":class:`!Row` proporciona acceso indexado y sin distinción entre mayúsculas " +"y minúsculas a las columnas, con una sobrecarga de memoria y un impacto en " +"el rendimiento mínimos en comparación con :class:`!tuple`. Para utilizar :" +"class:`!Row` como una fábrica de filas, asígnelo al atributo :attr:`!" +"row_factory`:" #: ../Doc/library/sqlite3.rst:2516 msgid "" ">>> con = sqlite3.connect(\":memory:\")\n" ">>> con.row_factory = sqlite3.Row" msgstr "" +">>> con = sqlite3.connect(\":memory:\")\n" +">>> con.row_factory = sqlite3.Row" #: ../Doc/library/sqlite3.rst:2521 msgid "Queries now return :class:`!Row` objects:" -msgstr "" +msgstr "Las consultas ahora devuelven objetos :class:`!Row`:" #: ../Doc/library/sqlite3.rst:2523 msgid "" @@ -3569,6 +4110,17 @@ msgid "" "6378\n" ">>> con.close()" msgstr "" +">>> res = con.execute(\"SELECT 'Earth' AS name, 6378 AS radius\")\n" +">>> row = res.fetchone()\n" +">>> row.keys()\n" +"['name', 'radius']\n" +">>> row[0] # Access by index.\n" +"'Earth'\n" +">>> row[\"name\"] # Access by name.\n" +"'Earth'\n" +">>> row[\"RADIUS\"] # Column names are case-insensitive.\n" +"6378\n" +">>> con.close()" #: ../Doc/library/sqlite3.rst:2539 msgid "" @@ -3577,12 +4129,18 @@ msgid "" "defined by expressions, e.g. literals, with the given aliases ``expr AS " "alias``." msgstr "" +"La cláusula ``FROM`` se puede omitir en la declaración ``SELECT``, como en " +"el ejemplo anterior. En tales casos, SQLite devuelve una sola fila con " +"columnas definidas por expresiones, por ejemplo, literales, con los alias " +"indicados ``expr AS alias``." #: ../Doc/library/sqlite3.rst:2544 msgid "" "You can create a custom :attr:`~Cursor.row_factory` that returns each row as " "a :class:`dict`, with column names mapped to values:" msgstr "" +"Puede crear un :attr:`~Cursor.row_factory` personalizado que devuelva cada " +"fila como un :class:`dict`, con nombres de columnas asignados a valores:" #: ../Doc/library/sqlite3.rst:2547 msgid "" @@ -3590,11 +4148,16 @@ msgid "" " fields = [column[0] for column in cursor.description]\n" " return {key: value for key, value in zip(fields, row)}" msgstr "" +"def dict_factory(cursor, row):\n" +" fields = [column[0] for column in cursor.description]\n" +" return {key: value for key, value in zip(fields, row)}" #: ../Doc/library/sqlite3.rst:2553 msgid "" "Using it, queries now return a :class:`!dict` instead of a :class:`!tuple`:" msgstr "" +"Al usarlo, las consultas ahora devuelven un :class:`!dict` en lugar de un :" +"class:`!tuple`:" #: ../Doc/library/sqlite3.rst:2555 msgid "" @@ -3605,10 +4168,16 @@ msgid "" "{'a': 1, 'b': 2}\n" ">>> con.close()" msgstr "" +">>> con = sqlite3.connect(\":memory:\")\n" +">>> con.row_factory = dict_factory\n" +">>> for row in con.execute(\"SELECT 1 AS a, 2 AS b\"):\n" +"... print(row)\n" +"{'a': 1, 'b': 2}\n" +">>> con.close()" #: ../Doc/library/sqlite3.rst:2564 msgid "The following row factory returns a :term:`named tuple`:" -msgstr "" +msgstr "La siguiente fábrica de filas devuelve un :term:`named tuple`:" #: ../Doc/library/sqlite3.rst:2566 msgid "" @@ -3619,10 +4188,16 @@ msgid "" " cls = namedtuple(\"Row\", fields)\n" " return cls._make(row)" msgstr "" +"from collections import namedtuple\n" +"\n" +"def namedtuple_factory(cursor, row):\n" +" fields = [column[0] for column in cursor.description]\n" +" cls = namedtuple(\"Row\", fields)\n" +" return cls._make(row)" #: ../Doc/library/sqlite3.rst:2575 msgid ":func:`!namedtuple_factory` can be used as follows:" -msgstr "" +msgstr ":func:`!namedtuple_factory` se puede utilizar de la siguiente manera:" #: ../Doc/library/sqlite3.rst:2577 msgid "" @@ -3638,6 +4213,17 @@ msgid "" "2\n" ">>> con.close()" msgstr "" +">>> con = sqlite3.connect(\":memory:\")\n" +">>> con.row_factory = namedtuple_factory\n" +">>> cur = con.execute(\"SELECT 1 AS a, 2 AS b\")\n" +">>> row = cur.fetchone()\n" +">>> row\n" +"Row(a=1, b=2)\n" +">>> row[0] # Indexed access.\n" +"1\n" +">>> row.b # Attribute access.\n" +"2\n" +">>> con.close()" #: ../Doc/library/sqlite3.rst:2591 msgid "" @@ -3645,10 +4231,13 @@ msgid "" "`~dataclasses.dataclass`, or any other custom class, instead of a :class:" "`~collections.namedtuple`." msgstr "" +"Con algunos ajustes, la receta anterior se puede adaptar para utilizar un :" +"class:`~dataclasses.dataclass`, o cualquier otra clase personalizada, en " +"lugar de un :class:`~collections.namedtuple`." #: ../Doc/library/sqlite3.rst:2599 msgid "How to handle non-UTF-8 text encodings" -msgstr "" +msgstr "Cómo manejar codificaciones de texto que no sean UTF-8" #: ../Doc/library/sqlite3.rst:2601 msgid "" @@ -3657,6 +4246,11 @@ msgid "" "fail for other encodings and invalid UTF-8. You can use a custom :attr:" "`~Connection.text_factory` to handle such cases." msgstr "" +"De forma predeterminada, :mod:`!sqlite3` utiliza :class:`str` para adaptar " +"los valores de SQLite con el tipo de datos ``TEXT``. Esto funciona bien para " +"texto codificado en UTF-8, pero puede fallar para otras codificaciones y " +"UTF-8 no válido. Puede utilizar un :attr:`~Connection.text_factory` " +"personalizado para manejar estos casos." #: ../Doc/library/sqlite3.rst:2607 msgid "" @@ -3668,30 +4262,42 @@ msgid "" "data:`!con` connected to this database, we can decode the Latin-2 encoded " "text using this :attr:`~Connection.text_factory`:" msgstr "" +"Debido a `flexible typing`_ de SQLite, no es raro encontrar columnas de " +"tabla con el tipo de datos ``TEXT`` que contienen codificaciones que no son " +"UTF-8, o incluso datos arbitrarios. Para demostrarlo, supongamos que tenemos " +"una base de datos con texto codificado en ISO-8859-2 (Latin-2), por ejemplo, " +"una tabla de entradas de diccionario checo-inglés. Suponiendo que ahora " +"tenemos una instancia :class:`Connection` :py:data:`!con` conectada a esta " +"base de datos, podemos decodificar el texto codificado en Latin-2 utilizando " +"este :attr:`~Connection.text_factory`:" #: ../Doc/library/sqlite3.rst:2616 msgid "con.text_factory = lambda data: str(data, encoding=\"latin2\")" -msgstr "" +msgstr "con.text_factory = lambda data: str(data, encoding=\"latin2\")" #: ../Doc/library/sqlite3.rst:2620 msgid "" "For invalid UTF-8 or arbitrary data in stored in ``TEXT`` table columns, you " "can use the following technique, borrowed from the :ref:`unicode-howto`:" msgstr "" +"Para datos UTF-8 no válidos o arbitrarios almacenados en las columnas de la " +"tabla ``TEXT``, puede utilizar la siguiente técnica, tomada prestada de :ref:" +"`unicode-howto`:" #: ../Doc/library/sqlite3.rst:2623 msgid "con.text_factory = lambda data: str(data, errors=\"surrogateescape\")" -msgstr "" +msgstr "con.text_factory = lambda data: str(data, errors=\"surrogateescape\")" #: ../Doc/library/sqlite3.rst:2629 msgid "" "The :mod:`!sqlite3` module API does not support strings containing " "surrogates." msgstr "" +"La API del módulo :mod:`!sqlite3` no admite cadenas que contengan sustitutos." #: ../Doc/library/sqlite3.rst:2634 msgid ":ref:`unicode-howto`" -msgstr "" +msgstr ":ref:`unicode-howto`" #: ../Doc/library/sqlite3.rst:2640 msgid "Explanation" @@ -3708,10 +4314,15 @@ msgid "" "control-autocommit` is recommended, while :ref:`sqlite3-transaction-control-" "isolation-level` retains the pre-Python 3.12 behaviour." msgstr "" +":mod:`!sqlite3` ofrece múltiples métodos para controlar si se abren y " +"cierran las transacciones de la base de datos, cuándo y cómo. Se recomienda :" +"ref:`sqlite3-transaction-control-autocommit`, mientras que :ref:`sqlite3-" +"transaction-control-isolation-level` conserva el comportamiento anterior a " +"Python 3.12." #: ../Doc/library/sqlite3.rst:2657 msgid "Transaction control via the ``autocommit`` attribute" -msgstr "" +msgstr "Control de transacciones mediante el atributo ``autocommit``" #: ../Doc/library/sqlite3.rst:2659 msgid "" @@ -3719,12 +4330,17 @@ msgid "" "attr:`Connection.autocommit` attribute, which should preferably be set using " "the *autocommit* parameter of :func:`connect`." msgstr "" +"La forma recomendada de controlar el comportamiento de las transacciones es " +"a través del atributo :attr:`Connection.autocommit`, que preferiblemente " +"debe configurarse utilizando el parámetro *autocommit* de :func:`connect`." #: ../Doc/library/sqlite3.rst:2664 msgid "" "It is suggested to set *autocommit* to ``False``, which implies :pep:`249`-" "compliant transaction control. This means:" msgstr "" +"Se recomienda configurar *autocommit* en ``False``, lo que implica un " +"control de transacciones compatible con :pep:`249`. Esto significa:" #: ../Doc/library/sqlite3.rst:2668 msgid "" @@ -3734,20 +4350,30 @@ msgid "" "one, for the latter two). :mod:`!sqlite3` uses ``BEGIN DEFERRED`` statements " "when opening transactions." msgstr "" +":mod:`!sqlite3` garantiza que una transacción esté siempre abierta, por lo " +"que :func:`connect`, :meth:`Connection.commit` y :meth:`Connection.rollback` " +"abrirán implícitamente una nueva transacción (inmediatamente después de " +"cerrar la pendiente, en el caso de las dos últimas). :mod:`!sqlite3` utiliza " +"instrucciones ``BEGIN DEFERRED`` al abrir transacciones." #: ../Doc/library/sqlite3.rst:2673 msgid "Transactions should be committed explicitly using :meth:`!commit`." msgstr "" +"Las transacciones deben confirmarse explícitamente mediante :meth:`!commit`." #: ../Doc/library/sqlite3.rst:2674 msgid "Transactions should be rolled back explicitly using :meth:`!rollback`." msgstr "" +"Las transacciones deben revertirse explícitamente utilizando :meth:`!" +"rollback`." #: ../Doc/library/sqlite3.rst:2675 msgid "" "An implicit rollback is performed if the database is :meth:`~Connection." "close`-ed with pending changes." msgstr "" +"Se realiza una reversión implícita si la base de datos está modificada como :" +"meth:`~Connection.close` con cambios pendientes." #: ../Doc/library/sqlite3.rst:2678 msgid "" @@ -3757,6 +4383,12 @@ msgid "" "compliant :attr:`Connection.autocommit` attribute; use :attr:`Connection." "in_transaction` to query the low-level SQLite autocommit mode." msgstr "" +"Establezca *autocommit* en ``True`` para habilitar `autocommit mode`_ de " +"SQLite. En este modo, :meth:`Connection.commit` y :meth:`Connection." +"rollback` no tienen efecto. Tenga en cuenta que el modo de confirmación " +"automática de SQLite es distinto del atributo :attr:`Connection.autocommit` " +"compatible con :pep:`249`; utilice :attr:`Connection.in_transaction` para " +"consultar el modo de confirmación automática de bajo nivel de SQLite." #: ../Doc/library/sqlite3.rst:2686 msgid "" @@ -3764,10 +4396,14 @@ msgid "" "control behaviour to the :attr:`Connection.isolation_level` attribute. See :" "ref:`sqlite3-transaction-control-isolation-level` for more information." msgstr "" +"Establezca *autocommit* en :data:`LEGACY_TRANSACTION_CONTROL` para dejar el " +"comportamiento de control de transacciones al atributo :attr:`Connection." +"isolation_level`. Consulte :ref:`sqlite3-transaction-control-isolation-" +"level` para obtener más información." #: ../Doc/library/sqlite3.rst:2695 msgid "Transaction control via the ``isolation_level`` attribute" -msgstr "" +msgstr "Control de transacciones mediante el atributo ``isolation_level``" #: ../Doc/library/sqlite3.rst:2699 msgid "" @@ -3775,6 +4411,9 @@ msgid "" "`~Connection.autocommit` attribute. See :ref:`sqlite3-transaction-control-" "autocommit`." msgstr "" +"La forma recomendada de controlar las transacciones es mediante el atributo :" +"attr:`~Connection.autocommit`. Consulte :ref:`sqlite3-transaction-control-" +"autocommit`." #: ../Doc/library/sqlite3.rst:2703 msgid "" @@ -3783,6 +4422,11 @@ msgid "" "controlled using the :attr:`Connection.isolation_level` attribute. " "Otherwise, :attr:`!isolation_level` has no effect." msgstr "" +"Si :attr:`Connection.autocommit` se configura en :data:" +"`LEGACY_TRANSACTION_CONTROL` (el valor predeterminado), el comportamiento de " +"la transacción se controla mediante el atributo :attr:`Connection." +"isolation_level`. De lo contrario, :attr:`!isolation_level` no tiene ningún " +"efecto." #: ../Doc/library/sqlite3.rst:2709 msgid "" @@ -3848,15 +4492,17 @@ msgid "" "The recommended way of controlling transactions is now via the :attr:" "`~Connection.autocommit` attribute." msgstr "" +"La forma recomendada de controlar las transacciones ahora es a través del " +"atributo :attr:`~Connection.autocommit`." #: ../Doc/library/sqlite3.rst:1490 msgid "? (question mark)" -msgstr "" +msgstr "? (signo de interrogación)" #: ../Doc/library/sqlite3.rst:1490 ../Doc/library/sqlite3.rst:1491 msgid "in SQL statements" -msgstr "" +msgstr "en sentencias SQL" #: ../Doc/library/sqlite3.rst:1491 msgid ": (colon)" -msgstr "" +msgstr ": (dos puntos)" From 9448c5d2935fd3b3caa00375d1ddbd4e644e8542 Mon Sep 17 00:00:00 2001 From: "Carlos A. Crespo" Date: Tue, 14 Oct 2025 07:49:24 -0300 Subject: [PATCH 65/78] Workaround to fix code snippets issues on pospell (#3346) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Related to #3324. Co-authored-by: Cristián Maureira-Fredes --- scripts/check_spell.py | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/scripts/check_spell.py b/scripts/check_spell.py index daf5feb3b6..d915d23849 100644 --- a/scripts/check_spell.py +++ b/scripts/check_spell.py @@ -7,6 +7,7 @@ import sys import tempfile +import polib import pospell @@ -44,7 +45,29 @@ def check_spell(po_files=None): if not po_files: po_files = Path(".").glob("*/*.po") - detected_errors = pospell.spell_check(po_files, personal_dict=output_filename, language="es_ES") + # Workaround issue #3324 FIXME + # It seems that all code snippets have line breaks '\n'. This causes the + # currently indentation issues. + + # Create temporary copies of the original files. + po_files_tmp = [] + for po_file in po_files: + with open(tempfile.mktemp(), "w") as temp_file: + # Copy content of the .po file + with open(po_file, "r", encoding="utf-8") as f: + temp_file.write(f.read()) + po_files_tmp.append(temp_file.name) + + # Don't translate probably code entries + polib_temp_file = polib.pofile(temp_file.name) + for entry in polib_temp_file: + if "\n" in entry.msgid: + entry.msgstr = "" + polib_temp_file.save() + + detected_errors = pospell.spell_check(po_files_tmp, personal_dict=output_filename, language="es_ES") + for tmp, orig in zip(po_files_tmp, po_files): + print(tmp, " == ", orig) return detected_errors From 9d4cdb66376c4cfd026943fbc60a8021a0fdc3b4 Mon Sep 17 00:00:00 2001 From: AlfonsoAreizaG <63620799+Alfareiza@users.noreply.github.com> Date: Tue, 14 Oct 2025 07:50:29 -0300 Subject: [PATCH 66/78] =?UTF-8?q?Tradduci=C3=B3n=20de=20library/importlib?= =?UTF-8?q?=20(#3364)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit close #2928 --------- Co-authored-by: Cristián Maureira-Fredes --- library/importlib.po | 492 ++++++++++++++++++++++++++++++++----------- 1 file changed, 366 insertions(+), 126 deletions(-) diff --git a/library/importlib.po b/library/importlib.po index e8d7508952..c02df966c1 100644 --- a/library/importlib.po +++ b/library/importlib.po @@ -11,15 +11,16 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: 2022-11-25 00:29+0800\n" -"Last-Translator: Rodrigo Tobar \n" -"Language: es\n" +"PO-Revision-Date: 2025-01-29 10:47-0300\n" +"Last-Translator: Alfonso Areiza \n" "Language-Team: python-doc-es\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\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.16.0\n" +"X-Generator: Poedit 3.5\n" #: ../Doc/library/importlib.rst:2 msgid ":mod:`!importlib` --- The implementation of :keyword:`!import`" @@ -35,7 +36,7 @@ msgstr "Introducción" #: ../Doc/library/importlib.rst:20 msgid "The purpose of the :mod:`importlib` package is three-fold." -msgstr "El propósito del paquete :mod:`importlib` es triple:" +msgstr "El propósito del paquete :mod:`importlib` es triple." #: ../Doc/library/importlib.rst:22 msgid "" @@ -409,6 +410,10 @@ msgid "" "except NameError:\n" " cache = {}" msgstr "" +"try:\n" +" cache\n" +"except NameError:\n" +" cache = {}" #: ../Doc/library/importlib.rst:187 msgid "" @@ -495,15 +500,23 @@ msgid "" " +-- FileLoader\n" " +-- SourceLoader" msgstr "" +"object\n" +" +-- MetaPathFinder\n" +" +-- PathEntryFinder\n" +" +-- Loader\n" +" +-- ResourceLoader --------+\n" +" +-- InspectLoader |\n" +" +-- ExecutionLoader --+\n" +" +-- FileLoader\n" +" +-- SourceLoader" #: ../Doc/library/importlib.rst:240 msgid "An abstract base class representing a :term:`meta path finder`." msgstr "Una clase base abstracta que representa :term:`meta path finder`." #: ../Doc/library/importlib.rst:244 ../Doc/library/importlib.rst:280 -#, fuzzy msgid "No longer a subclass of :class:`!Finder`." -msgstr "Ya no hereda de :class:`Finder`." +msgstr "Ya no hereda de :class:`!Finder`." #: ../Doc/library/importlib.rst:249 msgid "" @@ -538,9 +551,8 @@ msgstr "" "`sys.meta_path`." #: ../Doc/library/importlib.rst:267 -#, fuzzy msgid "Returns ``None`` when called instead of :data:`NotImplemented`." -msgstr "Retorna ``None`` cuando se llama en lugar de ``NotImplemented``." +msgstr "Retorna ``None`` cuando se llama en lugar de :data:`NotImplemented`." #: ../Doc/library/importlib.rst:273 msgid "" @@ -645,7 +657,6 @@ msgstr "" "se lanza :exc:`ImportError`; de lo contrario, se retorna el módulo cargado." #: ../Doc/library/importlib.rst:345 -#, fuzzy msgid "" "If the requested module already exists in :data:`sys.modules`, that module " "should be used and reloaded. Otherwise the loader should create a new module " @@ -660,9 +671,8 @@ msgstr "" "e insertarlo en :data:`sys.modules` antes de que comience la carga, para " "evitar la recursividad de la importación. Si el cargador insertó un módulo y " "la carga falla, el cargador debe eliminarlo de :data:`sys.modules`; los " -"módulos que ya están en :data:`sys.modules` antes de que el cargador " -"comenzara a ejecutarse deben dejarse en paz (ver :func:`importlib.util." -"module_for_loader`)." +"módulos que ya estaban en :data:`sys.modules` antes de que el cargador " +"comenzara a ejecutarse deben dejarse intactos." #: ../Doc/library/importlib.rst:354 msgid "" @@ -715,7 +725,6 @@ msgid ":attr:`__path__`" msgstr ":attr:`__path__`" #: ../Doc/library/importlib.rst:372 -#, fuzzy msgid "" "The list of locations where the package's submodules will be found. Most of " "the time this is a single directory. The import system passes this attribute " @@ -726,7 +735,7 @@ msgstr "" "La lista de ubicaciones donde los sub-módulos del paquete pueden ser " "encontrados. La mayoría de las veces es un solo directorio. El sistema de " "importación pasa este atributo a ``__import__()`` y a buscadores de la misma " -"forma que :attr:`sys.path` pero sólo para el paquete. No está establecido en " +"forma que :data:`sys.path` pero sólo para el paquete. No está establecido en " "módulos que no son paquetes, por lo que puede ser usado como un indicador si " "el módulo es un paquete." @@ -863,10 +872,10 @@ msgid "" msgstr "" "Un método abstracto para retornar la fuente de un módulo. Se retorna como " "una cadena de caracteres de texto usando :term:`universal newlines`, " -"traduciendo todos los separadores de línea reconocidos en caracteres ``'\n" -"'``. Retorna ``None`` si no hay una fuente disponible (por ejemplo, un " -"módulo integrado). Lanza :exc:`ImportError` si el cargador no puede " -"encontrar el módulo especificado." +"traduciendo todos los separadores de línea reconocidos en caracteres " +"``'\\n'``. Retorna ``None`` si no hay una fuente disponible (por ejemplo, un " +"módulo integrado). Lanza la excepción :exc:`ImportError` si el cargador no " +"puede encontrar el módulo especificado." #: ../Doc/library/importlib.rst:457 ../Doc/library/importlib.rst:466 #: ../Doc/library/importlib.rst:516 @@ -991,7 +1000,7 @@ msgstr "Retorna :attr:`path`." #: ../Doc/library/importlib.rst:552 msgid "Reads *path* as a binary file and returns the bytes from it." -msgstr "Lee *path* como un archivo binario y devuelve los bytes de él." +msgstr "Lee *path* como un archivo binario y retorna los bytes de él." #: ../Doc/library/importlib.rst:557 msgid "" @@ -1045,7 +1054,7 @@ msgid "" "Optional abstract method which returns a :class:`dict` containing metadata " "about the specified path. Supported dictionary keys are:" msgstr "" -"Método abstracto opcional que devuelve un :class:`dict` que contiene " +"Método abstracto opcional que retorna un :class:`dict` que contiene " "metadatos sobre la ruta especificada. Las claves de diccionario admitidas " "son:" @@ -1102,13 +1111,12 @@ msgstr "" "automáticamente." #: ../Doc/library/importlib.rst:611 -#, fuzzy msgid "" "When writing to the path fails because the path is read-only (:const:`errno." "EACCES`/:exc:`PermissionError`), do not propagate the exception." msgstr "" "Cuando la escritura en la ruta falla porque la ruta es de solo lectura (:" -"attr:`errno.EACCES`/:exc:`PermissionError`), no propague la excepción." +"const:`errno.EACCES`/:exc:`PermissionError`), no propague la excepción." #: ../Doc/library/importlib.rst:615 msgid "No longer raises :exc:`NotImplementedError` when called." @@ -1150,12 +1158,14 @@ msgstr "" #: ../Doc/library/importlib.rst:650 msgid "*Superseded by TraversableResources*" -msgstr "" +msgstr "*Reemplazado por TraversableResources*" #: ../Doc/library/importlib.rst:652 msgid "" "An :term:`abstract base class` to provide the ability to read *resources*." msgstr "" +"Una :term:`abstract base class` para proporcionar la capacidad de leer " +"*recursos*." #: ../Doc/library/importlib.rst:655 msgid "" @@ -1166,6 +1176,12 @@ msgid "" "does not matter if the package and its data file(s) are stored e.g. in a zip " "file versus on the file system." msgstr "" +"Desde la perspectiva de este ABC, un *recurso* es un artefacto binario que " +"se envía dentro de un paquete. Normalmente, es algo así como un archivo de " +"datos que se encuentra junto al archivo ``__init__.py`` del paquete. El " +"propósito de esta clase es ayudar a abstraer el acceso a dichos archivos de " +"datos de modo que no importe si el paquete y sus archivos de datos se " +"almacenan, por ejemplo, en un archivo zip o en el sistema de archivos." #: ../Doc/library/importlib.rst:663 msgid "" @@ -1178,6 +1194,16 @@ msgid "" "class are expected to directly correlate to a specific package (instead of " "potentially representing multiple packages or a module)." msgstr "" +"Para cualquiera de los métodos de esta clase, se espera que un argumento " +"*recurso* sea un :term:`path-like object` que conceptualmente, representa " +"solo un nombre de archivo. Esto significa que no se deben incluir rutas de " +"subdirectorio en el argumento *recurso*. Esto se debe a que la ubicación del " +"paquete al que se dirige el lector actúa como el “directorio”. Por lo tanto, " +"la metáfora para los directorios y los nombres de archivo es paquetes y " +"recursos, respectivamente. Esta es también la razón por la que se espera que " +"las instancias de esta clase se correlacionen directamente con un paquete " +"específico (en lugar de representar potencialmente varios paquetes o un " +"módulo)." #: ../Doc/library/importlib.rst:674 msgid "" @@ -1187,38 +1213,51 @@ msgid "" "not a package, this method should return :const:`None`. An object compatible " "with this ABC should only be returned when the specified module is a package." msgstr "" +"Se espera que los cargadores que deseen admitir la lectura de recursos " +"proporcionen un método llamado ``get_resource_reader(fullname)`` que retorna " +"un objeto que implemente la interfaz de este ABC. Si el módulo especificado " +"por fullname no es un paquete, este método debe retornar un :const:`None`. " +"Un objeto compatible con este ABC solo debe devolverse cuando el módulo " +"especificado sea un paquete." #: ../Doc/library/importlib.rst:683 ../Doc/library/importlib.rst:793 -#, fuzzy msgid "Use :class:`importlib.resources.abc.TraversableResources` instead." -msgstr "Utilice :meth:`importlib.abc.Loader.exec_module` en su lugar." +msgstr "" +"Utilice :class:`importlib.resources.abc.TraversableResources` en su lugar." #: ../Doc/library/importlib.rst:688 msgid "" "Returns an opened, :term:`file-like object` for binary reading of the " "*resource*." msgstr "" +"Retorna un objeto abierto, :term:`file-like object`, para la lectura binaria " +"del *recurso*." #: ../Doc/library/importlib.rst:691 msgid "If the resource cannot be found, :exc:`FileNotFoundError` is raised." msgstr "" +"Si no se puede encontrar el recurso, se lanza una excepción :exc:" +"`FileNotFoundError`." #: ../Doc/library/importlib.rst:696 -#, fuzzy msgid "Returns the file system path to the *resource*." -msgstr "La ruta al archivo de origen." +msgstr "Retorna la ruta del sistema de archivos al *recurso*." #: ../Doc/library/importlib.rst:698 msgid "" "If the resource does not concretely exist on the file system, raise :exc:" "`FileNotFoundError`." msgstr "" +"Si el recurso no existe concretamente en el sistema de archivos, lanza una " +"excepción :exc:`FileNotFoundError`." #: ../Doc/library/importlib.rst:703 msgid "" "Returns ``True`` if the named *name* is considered a resource. :exc:" "`FileNotFoundError` is raised if *name* does not exist." msgstr "" +"Retorna ``True`` si el nombre *name* se considera un recurso. La excepción :" +"exc:`FileNotFoundError` se lanza si *name* no existe." #: ../Doc/library/importlib.rst:708 msgid "" @@ -1227,6 +1266,10 @@ msgid "" "actual resources, e.g. it is acceptable to return names for which :meth:" "`is_resource` would be false." msgstr "" +"Retorna un :term:`iterable` de cadenas de caracteres sobre el contenido del " +"paquete. Tenga en cuenta que no es necesario que todos los nombres devueltos " +"por el iterador sean recursos reales, por ejemplo, es aceptable devolver " +"nombres para los cuales :meth:`is_resource` sería falso." #: ../Doc/library/importlib.rst:714 msgid "" @@ -1236,71 +1279,85 @@ msgid "" "is allowed so that when it is known that the package and resources are " "stored on the file system then those subdirectory names can be used directly." msgstr "" +"Permitir que se retornen nombres que no sean recursos es permitir " +"situaciones en las que se conoce a priori cómo se almacenan un paquete y sus " +"recursos y los nombres que no son recursos serían útiles. Por ejemplo, se " +"permite retornar nombres de subdirectorios para que, cuando se sepa que el " +"paquete y los recursos están almacenados en el sistema de archivos, esos " +"nombres de subdirectorios se puedan usar directamente." #: ../Doc/library/importlib.rst:722 msgid "The abstract method returns an iterable of no items." -msgstr "" +msgstr "El método abstracto retorna un iterable sin elementos." #: ../Doc/library/importlib.rst:727 msgid "" "An object with a subset of :class:`pathlib.Path` methods suitable for " "traversing directories and opening files." msgstr "" +"Un objeto con un subconjunto de métodos de :class:`pathlib.Path` adecuados " +"para recorrer directorios y abrir archivos." #: ../Doc/library/importlib.rst:730 msgid "" "For a representation of the object on the file-system, use :meth:`importlib." "resources.as_file`." msgstr "" +"Para obtener una representación del objeto en el sistema de archivos, " +"utilice :meth:`importlib.resources.as_file`." #: ../Doc/library/importlib.rst:735 -#, fuzzy msgid "Use :class:`importlib.resources.abc.Traversable` instead." -msgstr "Utilice :meth:`importlib.abc.Loader.exec_module` en su lugar." +msgstr "Utilice :class:`importlib.resources.abc.Traversable` en su lugar." #: ../Doc/library/importlib.rst:740 msgid "Abstract. The base name of this object without any parent references." msgstr "" +"Abstracto. El nombre base de este objeto sin ninguna referencia principal." #: ../Doc/library/importlib.rst:744 msgid "Yield ``Traversable`` objects in ``self``." -msgstr "" +msgstr "Produce objetos ``Traversable`` en ``self``." #: ../Doc/library/importlib.rst:748 msgid "Return ``True`` if ``self`` is a directory." -msgstr "" +msgstr "Retorna ``True`` si ``self`` es un directorio." #: ../Doc/library/importlib.rst:752 msgid "Return ``True`` if ``self`` is a file." -msgstr "" +msgstr "Retorna ``True`` si ``self`` es un archivo." #: ../Doc/library/importlib.rst:756 msgid "Return Traversable child in ``self``." -msgstr "" +msgstr "Retorna un Traversable secundario en ``self``." #: ../Doc/library/importlib.rst:760 msgid "Return ``Traversable`` child in ``self``." -msgstr "" +msgstr "Retorna un ``Traversable`` secundario en ``self``." #: ../Doc/library/importlib.rst:764 msgid "" "*mode* may be 'r' or 'rb' to open as text or binary. Return a handle " "suitable for reading (same as :attr:`pathlib.Path.open`)." msgstr "" +"*mode* puede ser 'r' o 'rb' para abrir como texto o binario. Retorna un " +"identificador adecuado para su lectura (igual que :attr:`pathlib.Path.open`)." #: ../Doc/library/importlib.rst:767 msgid "" "When opening as text, accepts encoding parameters such as those accepted by :" "attr:`io.TextIOWrapper`." msgstr "" +"Al abrir como texto, acepta parámetros de codificación como los aceptados " +"por :attr:`io.TextIOWrapper`." #: ../Doc/library/importlib.rst:772 msgid "Read contents of ``self`` as bytes." -msgstr "" +msgstr "Lee el contenido de ``self`` como bytes." #: ../Doc/library/importlib.rst:776 msgid "Read contents of ``self`` as text." -msgstr "" +msgstr "Lee el contenido de ``self`` como texto." #: ../Doc/library/importlib.rst:781 msgid "" @@ -1311,18 +1368,28 @@ msgid "" "Therefore, any loader supplying :class:`importlib.abc.TraversableResources` " "also supplies ResourceReader." msgstr "" +"Una clase base abstracta para lectores de recursos capaces de servir a la " +"interfaz :meth:`importlib.resources.files`. Subclases :class:`importlib." +"resources.abc.ResourceReader` y proporciona implementaciones concretas de " +"los métodos abstractos de :class:`importlib.resources.abc.ResourceReader`. " +"Por lo tanto, cualquier cargador que proporcione :class:`importlib.abc." +"TraversableResources` también proporciona ResourceReader." #: ../Doc/library/importlib.rst:788 msgid "" "Loaders that wish to support resource reading are expected to implement this " "interface." msgstr "" +"Se espera que los cargadores que deseen admitir la lectura de recursos " +"implementen esta interfaz." #: ../Doc/library/importlib.rst:798 msgid "" "Returns a :class:`importlib.resources.abc.Traversable` object for the loaded " "package." msgstr "" +"Retorna un objeto :class:`importlib.resources.abc.Traversable` para el " +"paquete cargado." #: ../Doc/library/importlib.rst:804 msgid ":mod:`importlib.machinery` -- Importers and path hooks" @@ -1598,16 +1665,15 @@ msgid "Clear out the internal cache." msgstr "Borrar el caché interno." #: ../Doc/library/importlib.rst:1000 -#, fuzzy msgid "" "A class method which returns a closure for use on :data:`sys.path_hooks`. An " "instance of :class:`FileFinder` is returned by the closure using the path " "argument given to the closure directly and *loader_details* indirectly." msgstr "" -"Un método de clase que devuelve un cierre para su uso en :attr:`sys." -"path_hooks`. Una instancia de :class:`FileFinder` es retornada por el cierre " -"usando el argumento de ruta dado al cierre directamente y *loader_details* " -"indirectamente." +"Un método de clase que retorna un cierre para su uso en :data:`sys." +"path_hooks`. El cierre retorna una instancia de :class:`FileFinder` " +"utilizando el argumento de ruta proporcionado al cierre directamente y " +"*loader_details* indirectamente." #: ../Doc/library/importlib.rst:1005 msgid "" @@ -1637,7 +1703,7 @@ msgstr "La ruta al archivo de origen." #: ../Doc/library/importlib.rst:1027 msgid "Return ``True`` if :attr:`path` appears to be for a package." -msgstr "Devuelve ``True`` si :attr:`path` parece ser para un paquete." +msgstr "Retorna ``True`` si :attr:`path` parece ser para un paquete." #: ../Doc/library/importlib.rst:1031 msgid "" @@ -1704,7 +1770,7 @@ msgstr "" msgid "" "Returns ``None`` as bytecode files have no source when this loader is used." msgstr "" -"Devuelve ``None`` ya que los archivos de código de bytes no tienen fuente " +"Retorna ``None`` ya que los archivos de código de bytes no tienen fuente " "cuando se usa este cargador." #: ../Doc/library/importlib.rst:1092 @@ -1729,10 +1795,15 @@ msgid "" "subinterpreters if it doesn't implement multi-phase init (see :pep:`489`), " "even if it would otherwise import successfully." msgstr "" +"Tenga en cuenta que, de manera predeterminada, la importación de un módulo " +"de extensión fallará en los subintérpretes si no implementa la " +"inicialización multifase (ver :pep:`489`), incluso si de lo contrario se " +"importaría correctamente." #: ../Doc/library/importlib.rst:1104 msgid "Multi-phase init is now required for use in subinterpreters." msgstr "" +"Ahora se requiere inicialización multifase para el uso en subintérpretes." #: ../Doc/library/importlib.rst:1109 ../Doc/library/importlib.rst:1293 msgid "Name of the module the loader supports." @@ -1794,9 +1865,15 @@ msgid "" ">>> isinstance(my_namespace.__loader__, importlib.abc.Loader)\n" "True" msgstr "" +">>> from importlib.machinery import NamespaceLoader\n" +">>> import my_namespace\n" +">>> isinstance(my_namespace.__loader__, NamespaceLoader)\n" +"True\n" +">>> import importlib.abc\n" +">>> isinstance(my_namespace.__loader__, importlib.abc.Loader)\n" +"True" #: ../Doc/library/importlib.rst:1168 -#, fuzzy msgid "" "A specification for a module's import-system-related state. This is " "typically exposed as the module's :attr:`__spec__` attribute. Many of these " @@ -1809,37 +1886,35 @@ msgid "" "versa." msgstr "" "Una especificación para el estado relacionado con el sistema de importación " -"de un módulo. Esto generalmente se expone como el atributo :attr:`__spec__`` " -"del módulo. En las descripciones siguientes, los nombres entre paréntesis " -"dan el atributo correspondiente disponible directamente en el objeto del " -"módulo, por ejemplo, ``module.__spec__.origin == module.__file__``. Sin " -"embargo, tenga en cuenta que, si bien los *valores* suelen ser equivalentes, " -"pueden diferir ya que no hay sincronización entre los dos objetos. Por " -"ejemplo, es posible actualizar el :attr:`__path__` del módulo en tiempo de " -"ejecución, y esto no se reflejará automáticamente en el :attr:`__spec__." -"origin` del módulo, y viceversa." +"de un módulo. Esto se expone típicamente como el atributo :attr:`__spec__` " +"del módulo. Muchos de estos atributos también están disponibles directamente " +"en un módulo: por ejemplo, ``module.__spec__.origin == module.__file__``. " +"Sin embargo, tenga en cuenta que si bien los *values* suelen ser " +"equivalentes, pueden diferir ya que no hay sincronización entre los dos " +"objetos. Por ejemplo, es posible actualizar el :attr:`__file__` del módulo " +"en tiempo de ejecución y esto no se reflejará automáticamente en el :attr:" +"`__spec__.origin` del módulo, y viceversa." #: ../Doc/library/importlib.rst:1181 -#, fuzzy msgid "" "The module's fully qualified name (see :attr:`__name__` attributes on " "modules). The :term:`finder` should always set this attribute to a non-empty " "string." msgstr "" -"El nombre completo del módulo. El :term:`buscador ` debe siempre " -"establecer este atributo a una cadena de caracteres no vacía." +"El nombre completo del módulo (consulte los atributos :attr:`__name__` en " +"los módulos). El :term:`finder` siempre debe establecer este atributo en una " +"cadena de caracteres que no esté vacía." #: ../Doc/library/importlib.rst:1187 -#, fuzzy msgid "" "The :term:`loader` used to load the module (see :attr:`__loader__` " "attributes on modules). The :term:`finder` should always set this attribute." msgstr "" -"El :term:`Cargador ` que debe usarse para cargar el módulo. El :term:" -"`Buscador ` siempre debe establecer este atributo." +"El :term:`loader` utilizado para cargar el módulo (ver atributos :attr:" +"`__loader__` en módulos). El :term:`finder` siempre debe establecer este " +"atributo." #: ../Doc/library/importlib.rst:1193 -#, fuzzy msgid "" "The location the :term:`loader` should use to load the module (see :attr:" "`__file__` attributes on modules). For example, for modules loaded from a ." @@ -1848,15 +1923,15 @@ msgid "" "uncommon case that there is not one (like for namespace packages), it should " "be set to ``None``." msgstr "" -"La ubicación que el :term:`cargador ` debe usar para cargar el " -"módulo. Por ejemplo, para módulos cargados de archivos .py éste es el nombre " -"del archivo. El :term:`buscador ` debe siempre establecer este " -"atributo a un valor significativo para que el :term:`cargador ` lo " -"use. El en caso poco común de que no hay uno (como para paquetes de nombre " -"de espacio), debe estar establecido en ``None``." +"La ubicación que el :term:`loader` debe usar para cargar el módulo (vea los " +"atributos :attr:`__file__` en los módulos). Por ejemplo, para los módulos " +"cargados desde un archivo .py, este es el nombre del archivo. El :term:" +"`finder` siempre debe establecer este atributo en un valor significativo " +"para que lo use el :term:`loader`. En el caso poco común de que no haya uno " +"(como para los paquetes de espacios de nombres), se debe establecer en " +"``None``." #: ../Doc/library/importlib.rst:1202 -#, fuzzy msgid "" "The list of locations where the package's submodules will be found (see :" "attr:`__path__` attributes on modules). Most of the time this is a single " @@ -1865,12 +1940,13 @@ msgid "" "It should be set to ``None`` for non-package modules. It is set " "automatically later to a special object for namespace packages." msgstr "" -"La lista de ubicaciones donde los sub-módulos del paquete serán encontrados. " -"La mayoría de las veces es un solo directorio. El :term:`buscador ` " -"debe establecer este atributo a una lista, incluso una vacía, para indicar " -"al sistema de importación que el módulo es un paquete. Debe ser establecido " -"en ``None`` para módulos que no son paquetes. Es establecido automáticamente " -"más tarde a un objeto especial para paquetes de espacio de nombres." +"La lista de ubicaciones donde se encontrarán los submódulos del paquete " +"(consulte los atributos :attr:`__path__` en los módulos). La mayoría de las " +"veces, se trata de un solo directorio. El :term:`finder` debe establecer " +"este atributo en una lista, incluso una vacía, para indicar al sistema de " +"importación que el módulo es un paquete. Debe establecerse en ``None`` para " +"módulos que no sean paquetes. Se establece automáticamente más tarde en un " +"objeto especial para paquetes de espacio de nombres." #: ../Doc/library/importlib.rst:1212 msgid "" @@ -1883,46 +1959,46 @@ msgstr "" "carga el módulo.. De lo contrario, debe establecerse en ``None``." #: ../Doc/library/importlib.rst:1218 -#, fuzzy msgid "" "The filename of a compiled version of the module's code (see :attr:" "`__cached__` attributes on modules). The :term:`finder` should always set " "this attribute but it may be ``None`` for modules that do not need compiled " "code stored." msgstr "" -"El nombre de archivo de una versión compilada del código de el módulo. El :" -"term:`buscador ` siempre debe establecer este atributo pero puede " -"ser ``None`` para módulos que no necesitan guardar código compilado." +"El nombre de archivo de una versión compilada del código del módulo " +"(consulte los atributos :attr:`__cached__` en los módulos). El :term:" +"`finder` siempre debe establecer este atributo, pero puede ser ``None`` para " +"los módulos que no necesitan almacenar el código compilado." #: ../Doc/library/importlib.rst:1225 -#, fuzzy msgid "" "(Read-only) The fully qualified name of the package the module is in (or the " "empty string for a top-level module). See :attr:`__package__` attributes on " "modules. If the module is a package then this is the same as :attr:`name`." msgstr "" -"(Solo lectura) El nombre completo del paquete bajo el cual está este módulo " -"(o la cadena de caracteres vacía para los módulos de nivel superior). Si el " -"módulo es un paquete es lo mismo que :attr:`__name__`." +"(Solo lectura) El nombre completo del paquete en el que se encuentra el " +"módulo (o la cadena de caracteres vacía para un módulo de nivel superior). " +"Consulte los atributos :attr:`__package__` en los módulos. Si el módulo es " +"un paquete, esto es lo mismo que :attr:`name`." #: ../Doc/library/importlib.rst:1232 -#, fuzzy msgid "" "``True`` if the spec's :attr:`origin` refers to a loadable location, " "``False`` otherwise. This value impacts how :attr:`origin` is interpreted " "and how the module's :attr:`__file__` is populated." msgstr "" -"``False`` en caso contrario. Este valor impacta en cómo :attr:`origin` es " -"interpretado y cómo el atributo :attr:`__file__` del módulo es poblado." +"``True`` si el :attr:`origin` de la especificación hace referencia a una " +"ubicación cargable, ``Falso`` en caso contrario. Este valor afecta la forma " +"en que se interpreta el :attr:`origin` y cómo se completa el :attr:" +"`__file__` del módulo." #: ../Doc/library/importlib.rst:1239 -#, fuzzy msgid "" "A specialization of :class:`importlib.machinery.ExtensionFileLoader` that is " "able to load extension modules in Framework format." msgstr "" -"Una implementación concreta de :class:`importlib.abc.ExecutionLoader` para " -"módulos de extensión." +"Una especialización de :class:`importlib.machinery.ExtensionFileLoader` que " +"puede cargar módulos de extensión en formato Framework." #: ../Doc/library/importlib.rst:1242 msgid "" @@ -1932,6 +2008,12 @@ msgid "" "be only a single binary per framework, and there can be no executable binary " "material outside the Frameworks folder." msgstr "" +"Para que sea compatible con la App Store de iOS, *todos* los módulos " +"binarios de una aplicación de iOS deben ser bibliotecas dinámicas, " +"contenidas en un marco con metadatos apropiados, almacenados en la carpeta " +"``Frameworks`` de la aplicación empaquetada. Solo puede haber un único " +"binario por marco y no puede haber material binario ejecutable fuera de la " +"carpeta Frameworks." #: ../Doc/library/importlib.rst:1248 msgid "" @@ -1946,6 +2028,18 @@ msgid "" "expected to contain a ``.origin`` file that contains the location of the ``." "fwork`` file, relative to the app bundle." msgstr "" +"Para cumplir con este requisito, cuando se ejecuta en iOS, los binarios del " +"módulo de extensión *no* se empaquetan como archivos ``.so`` en ``sys." +"path``, sino como marcos independientes individuales. Para descubrir esos " +"marcos, este cargador se debe registrar con la extensión de archivo ``." +"fwork``, con un archivo ``.fwork`` que actúa como marcador de posición en la " +"ubicación original del binario en ``sys.path``. El archivo ``.fwork`` " +"contiene la ruta del binario real en la carpeta ``Frameworks``, en relación " +"con el paquete de la aplicación. Para permitir la resolución de un binario " +"empaquetado en el marco de trabajo en la ubicación original, se espera que " +"el marco de trabajo contenga un archivo ``.origin`` que contenga la " +"ubicación del archivo ``.fwork``, en relación con el paquete de la " +"aplicación." #: ../Doc/library/importlib.rst:1259 msgid "" @@ -1962,6 +2056,18 @@ msgid "" "framework would also contain ``Frameworks/foo.bar._whiz.framework/foo.bar." "_whiz.origin``, containing the path to the ``.fwork`` file." msgstr "" +"Por ejemplo, considere el caso de una importación ``from foo.bar import " +"_whiz``, donde ``_whiz`` se implementa con el módulo binario ``sources/foo/" +"bar/_whiz.abi3.so``, donde ``sources`` es la ubicación registrada en ``sys." +"path``, relativa al paquete de la aplicación. Este módulo *debe* " +"distribuirse como ``Frameworks/foo.bar._whiz.framework/foo.bar._whiz`` " +"(creando el nombre del marco a partir de la ruta de importación completa del " +"módulo), con un archivo ``Info.plist`` en el directorio ``.framework`` que " +"identifica el binario como un marco. El módulo ``foo.bar._whiz`` se " +"representaría en la ubicación original con un archivo marcador ``sources/foo/" +"bar/_whiz.abi3.fwork``, que contiene la ruta ``Frameworks/foo.bar._whiz/foo." +"bar._whiz``. El framework también contendría ``Frameworks/foo.bar._whiz." +"framework/foo.bar._whiz.origin``, que contiene la ruta al archivo ``.fwork``." #: ../Doc/library/importlib.rst:1273 msgid "" @@ -1971,6 +2077,11 @@ msgid "" "However, the spec origin will reference the location of the *actual* binary " "in the ``.framework`` folder." msgstr "" +"Cuando se carga un módulo con este cargador, el ``__file__`` del módulo se " +"indicará como la ubicación del archivo ``.fwork``. Esto permite que el " +"código utilice el ``__file__`` de un módulo como ancla para recorrer el " +"sistema de archivos. Sin embargo, el origen de la especificación hará " +"referencia a la ubicación del binario *real* en la carpeta ``.framework``." #: ../Doc/library/importlib.rst:1279 msgid "" @@ -1982,15 +2093,21 @@ msgid "" "with a build step in the Xcode project; see the iOS documentation for " "details on how to construct this build step." msgstr "" +"El proyecto Xcode que crea la aplicación es responsable de convertir los " +"archivos ``.so`` desde donde se encuentren en ``PYTHONPATH`` en marcos en la " +"carpeta ``Frameworks`` (lo que incluye quitar las extensiones del archivo " +"del módulo, agregar metadatos del marco y firmar el marco resultante), y " +"crear los archivos ``.fwork`` y ``.origin``. Esto generalmente se hará con " +"un paso de compilación en el proyecto Xcode; consulte la documentación de " +"iOS para obtener detalles sobre cómo construir este paso de compilación." #: ../Doc/library/importlib.rst:1289 msgid ":ref:`Availability `: iOS." -msgstr "" +msgstr ":ref:`Availability `: iOS." #: ../Doc/library/importlib.rst:1297 -#, fuzzy msgid "Path to the ``.fwork`` file for the extension module." -msgstr "Ruta al archivo del módulo." +msgstr "Ruta al archivo ``.fwork`` para el módulo de extensión." #: ../Doc/library/importlib.rst:1301 msgid ":mod:`importlib.util` -- Utility code for importers" @@ -2150,7 +2267,6 @@ msgstr "" "relativa no válidos." #: ../Doc/library/importlib.rst:1403 -#, fuzzy msgid "" "Find the :term:`spec ` for a module, optionally relative to the " "specified **package** name. If the module is in :data:`sys.modules`, then " @@ -2159,13 +2275,13 @@ msgid "" "Otherwise a search using :data:`sys.meta_path` is done. ``None`` is returned " "if no spec is found." msgstr "" -"Busca el :term:`spec ` para un módulo, opcionalmente relativo " -"al nombre del **package** especificado. Si el módulo está en :attr:`sys." +"Busque el :term:`spec ` de un módulo, opcionalmente relativa al " +"nombre del **paquete** especificado. Si el módulo está en :data:`sys." "modules`, se retorna ``sys.modules[name].__spec__`` (a menos que la " -"especificación sea ``None`` o no esté establecida, en cuyo caso se lanza :" -"exc:`ValueError`). De lo contrario, se realiza una búsqueda utilizando :attr:" -"`sys.meta_path`. Se retorna ``None`` si no se encuentra ninguna " -"especificación." +"especificación sea ``None`` o no esté configurada, en cuyo caso se lanza una " +"excepción :exc:`ValueError`). De lo contrario, se realiza una búsqueda " +"utilizando :data:`sys.meta_path`. Se retorna ``None`` si no se encuentra " +"ninguna especificación." #: ../Doc/library/importlib.rst:1410 msgid "" @@ -2263,6 +2379,12 @@ msgid "" "for a multi-phase init module that doesn't explicitly support a per-" "interpreter GIL, when imported in an interpreter with its own GIL." msgstr "" +"Un administrador de contexto que puede omitir temporalmente la comprobación " +"de compatibilidad para módulos de extensión. De manera predeterminada, la " +"comprobación está habilitada y fallará cuando se importe un módulo de " +"inicialización de una sola fase en un subintérprete. También fallará para un " +"módulo de inicialización de varias fases que no admita explícitamente una " +"GIL por intérprete, cuando se importe en un intérprete con su propia GIL." #: ../Doc/library/importlib.rst:1477 msgid "" @@ -2270,6 +2392,9 @@ msgid "" "is likely to eventually go away. There's is a pretty good chance this is " "not what you were looking for." msgstr "" +"Tenga en cuenta que esta función está pensada para dar cabida a un caso " +"inusual, que probablemente desaparecerá en algún momento. Es muy probable " +"que esto no sea lo que estaba buscando." #: ../Doc/library/importlib.rst:1481 msgid "" @@ -2277,12 +2402,18 @@ msgid "" "interface of multi-phase init (:pep:`489`) and lying about support for " "multiple interpreters (or per-interpreter GIL)." msgstr "" +"Puede obtener el mismo efecto que esta función implementando la interfaz " +"básica de init multifase (:pep:`489`) y mintiendo acerca del soporte para " +"múltiples intérpretes (o por intérprete GIL)." #: ../Doc/library/importlib.rst:1486 msgid "" "Using this function to disable the check can lead to unexpected behavior and " "even crashes. It should only be used during extension module development." msgstr "" +"El uso de esta función para desactivar la comprobación puede provocar un " +"comportamiento inesperado e incluso fallos. Solo debe utilizarse durante el " +"desarrollo de módulos de extensión." #: ../Doc/library/importlib.rst:1494 msgid "" @@ -2293,7 +2424,6 @@ msgstr "" "módulo tiene acceso a un atributo." #: ../Doc/library/importlib.rst:1497 -#, fuzzy msgid "" "This class **only** works with loaders that define :meth:`~importlib.abc." "Loader.exec_module` as control over what module type is used for the module " @@ -2306,14 +2436,14 @@ msgid "" "raised if such a substitution is detected." msgstr "" "Esta clase **solo** funciona con cargadores que definen :meth:`~importlib." -"abc.Loader.exec_module` ya que se requiere control sobre qué tipo de módulo " -"se usa para el módulo. Por esas mismas razones, el método del cargador :meth:" -"`~importlib.abc.Loader.create_module` debe retornar ``None`` o un tipo para " -"el cual su atributo ``__class__`` se puede mutar junto con no usar :term:" +"abc.Loader.exec_module`, ya que se requiere control sobre qué tipo de módulo " +"se usa para el módulo. Por esas mismas razones, el método :meth:`~importlib." +"abc.Loader.create_module` del cargador debe retornar ``None`` o un tipo para " +"el cual se pueda mutar su atributo ``__class__`` junto con no usar :term:" "`slots <__slots__>`. Finalmente, los módulos que sustituyen el objeto " -"colocado en :attr:`sys.modules` no funcionarán ya que no hay forma de " +"colocado en :data:`sys.modules` no funcionarán ya que no hay forma de " "reemplazar correctamente las referencias del módulo en todo el intérprete de " -"forma segura; :exc:`ValueError` se genera si se detecta tal sustitución." +"manera segura; :exc:`ValueError` se lanza si se detecta dicha sustitución." #: ../Doc/library/importlib.rst:1508 msgid "" @@ -2341,14 +2471,13 @@ msgstr "" "BuiltinImporter` y :class:`importlib.machinery.ExtensionFileLoader`." #: ../Doc/library/importlib.rst:1523 -#, fuzzy msgid "" "A class method which returns a callable that creates a lazy loader. This is " "meant to be used in situations where the loader is passed by class instead " "of by instance. ::" msgstr "" -"Un método estático que devuelve un invocable que crea un cargador diferido. " -"Esto está destinado a utilizarse en situaciones en las que el cargador se " +"Un método de clase que retorna un elemento invocable que crea un cargador " +"diferido. Está pensado para usarse en situaciones en las que el cargador se " "pasa por clase en lugar de por instancia. ::" #: ../Doc/library/importlib.rst:1528 @@ -2358,6 +2487,10 @@ msgid "" "lazy_loader = importlib.util.LazyLoader.factory(loader)\n" "finder = importlib.machinery.FileFinder(path, (lazy_loader, suffixes))" msgstr "" +"suffixes = importlib.machinery.SOURCE_SUFFIXES\n" +"loader = importlib.machinery.SourceFileLoader\n" +"lazy_loader = importlib.util.LazyLoader.factory(loader)\n" +"finder = importlib.machinery.FileFinder(path, (lazy_loader, suffixes))" #: ../Doc/library/importlib.rst:1536 msgid "Examples" @@ -2380,6 +2513,9 @@ msgid "" "\n" "itertools = importlib.import_module('itertools')" msgstr "" +"import importlib\n" +"\n" +"itertools = importlib.import_module('itertools')" #: ../Doc/library/importlib.rst:1550 msgid "Checking if a module can be imported" @@ -2420,6 +2556,22 @@ msgid "" "else:\n" " print(f\"can't find the {name!r} module\")" msgstr "" +"import importlib.util\n" +"import sys\n" +"\n" +"# Con fines ilustrativos.\n" +"name = 'itertools'\n" +"\n" +"if name in sys.modules:\n" +" print(f\"{name!r} already in sys.modules\")\n" +"elif (spec := importlib.util.find_spec(name)) is not None:\n" +"# Si eligió realizar la importación real ...\n" +"module = importlib.util.module_from_spec(spec)\n" +"sys.modules[name] = module\n" +"spec.loader.exec_module(module)\n" +"print(f\"{name!r} ha sido importado\")\n" +"else:\n" +" print(f\"no puede ser encontrado el módulo {name!r}\")" #: ../Doc/library/importlib.rst:1578 msgid "Importing a source file directly" @@ -2434,15 +2586,20 @@ msgid "" "`runpy.run_path` when the global namespace resulting from running a Python " "file is appropriate." msgstr "" +"Esta receta debe usarse con precaución: es una aproximación de una " +"declaración de importación donde se especifica directamente la ruta del " +"archivo, en lugar de buscar :data:`sys.path`. Primero se deben considerar " +"alternativas, como modificar :data:`sys.path` cuando se requiere un módulo " +"adecuado o usar :func:`runpy.run_path` cuando el espacio de nombres global " +"resultante de la ejecución de un archivo Python es apropiado." #: ../Doc/library/importlib.rst:1587 -#, fuzzy msgid "" "To import a Python source file directly from a path, use the following " "recipe::" msgstr "" -"Para importar un archivo fuente de Python directamente, use la siguiente " -"receta::" +"Para importar un archivo fuente de Python directamente desde una ruta, use " +"la siguiente receta:" #: ../Doc/library/importlib.rst:1589 msgid "" @@ -2466,6 +2623,25 @@ msgid "" "# Similar outcome as `import json`.\n" "json = import_from_path(module_name, file_path)" msgstr "" +"import importlib.util\n" +"import sys\n" +"\n" +"\n" +"def import_from_path(module_name, file_path):\n" +" spec = importlib.util.spec_from_file_location(module_name, file_path)\n" +" module = importlib.util.module_from_spec(spec)\n" +" sys.modules[module_name] = module\n" +" spec.loader.exec_module(module)\n" +" return module\n" +"\n" +"\n" +"# Sólo con fines ilustrativos. (el uso de `json` es arbitrario).\n" +"import json\n" +"file_path = json.__file__\n" +"module_name = json.__name__\n" +"\n" +"# Resultado similar a `import json`.\n" +"json = import_from_path(module_name, file_path)" #: ../Doc/library/importlib.rst:1611 msgid "Implementing lazy imports" @@ -2494,13 +2670,28 @@ msgid "" ">>> lazy_typing.TYPE_CHECKING\n" "False" msgstr "" +">>> import importlib.util\n" +">>> import sys\n" +">>> def lazy_import(name):\n" +"... spec = importlib.util.find_spec(name)\n" +"... loader = importlib.util.LazyLoader(spec.loader)\n" +"... spec.loader = loader\n" +"... module = importlib.util.module_from_spec(spec)\n" +"... sys.modules[name] = module\n" +"... loader.exec_module(module)\n" +"... return module\n" +"...\n" +">>> lazy_typing = lazy_import(\"typing\")\n" +">>> #lazy_typing es un objeto de módulo real,\n" +">>> #pero aún no está cargado en la memoria.\n" +">>> lazy_typing.TYPE_CHECKING\n" +"False" #: ../Doc/library/importlib.rst:1634 msgid "Setting up an importer" msgstr "Configurar un importador" #: ../Doc/library/importlib.rst:1636 -#, fuzzy msgid "" "For deep customizations of import, you typically want to implement an :term:" "`importer`. This means managing both the :term:`finder` and :term:`loader` " @@ -2513,17 +2704,17 @@ msgid "" "will use them (for creating an importer for yourself, read the documentation " "for the appropriate classes defined within this package)::" msgstr "" -"Para personalizaciones profundas de la importación, normalmente desea " -"implementar un :term:`importador`. Esto significa administrar tanto el lado :" -"term:`finder` como :term:`loader` de las cosas. Para los buscadores, hay dos " -"sabores para elegir según sus necesidades: un :term:`meta path finder` o un :" -"term:`path entry finder`. El primero es lo que pondrías en :attr:`sys." -"meta_path` mientras que el segundo es lo que creas usando un :term:`path " -"entry hook` en :attr:`sys.path_hooks` que funciona con :attr:`sys .path` " -"entradas para crear potencialmente un buscador. Este ejemplo le mostrará " -"cómo registrar sus propios importadores para que import los utilice (para " -"crear un importador para usted, lea la documentación de las clases " -"apropiadas definidas dentro de este paquete):" +"Para personalizaciones profundas de importación, normalmente querrá " +"implementar un :term:`importador`. Esto significa gestionar tanto el :term:" +"`buscador` como el :term:`cargador`. Para los buscadores hay dos opciones " +"para elegir según sus necesidades: un :term:`meta path finder` o un :term:" +"`path entry finder`. El primero es lo que pondría en :data:`sys.meta_path` " +"mientras que el segundo es lo que crea utilizando un :term:`path entry hook` " +"en :data:`sys.path_hooks` que funciona con entradas :data:`sys.path` para " +"crear potencialmente un buscador. Este ejemplo le mostrará cómo registrar " +"sus propios importadores para que la importación los utilice (para crear un " +"importador para usted, lea la documentación de las clases apropiadas " +"definidas dentro de este paquete)::" #: ../Doc/library/importlib.rst:1647 msgid "" @@ -2548,6 +2739,26 @@ msgid "" "# of priority.\n" "sys.path_hooks.append(SpamPathEntryFinder.path_hook(loader_details))" msgstr "" +"import importlib.machinery\n" +"import sys\n" +"\n" +"# Sólo con fines ilustrativos.\n" +"SpamMetaPathFinder = importlib.machinery.PathFinder\n" +"SpamPathEntryFinder = importlib.machinery.FileFinder\n" +"detalles_del_cargador = (importlib.machinery.SourceFileLoader,\n" +" importlib.machinery.SOURCE_SUFFIXES)\n" +"\n" +"# Configuración de un meta buscador de rutas.\n" +"# Asegúrese de colocar el buscador en la ubicación adecuada en la lista en términos " +"de\n" +"# prioridad.\n" +"sys.meta_path.append(SpamMetaPathFinder)\n" +"\n" +"# Configuración de un buscador de entradas de ruta.\n" +"# Asegúrese de colocar el gancho de ruta en la ubicación adecuada en la lista en " +"términos\n" +"# de prioridad.\n" +"sys.path_hooks.append(SpamPathEntryFinder.path_hook(detalles_del_cargador))" #: ../Doc/library/importlib.rst:1668 msgid "Approximating :func:`importlib.import_module`" @@ -2598,11 +2809,40 @@ msgid "" " setattr(parent_module, child_name, module)\n" " return module" msgstr "" +"import importlib.util\n" +"import sys\n" +"\n" +"def import_module(name, package=None):\n" +" \"\"\"An approximate implementation of import.\"\"\"\n" +" absolute_name = importlib.util.resolve_name(name, package)\n" +" try:\n" +" return sys.modules[absolute_name]\n" +" except KeyError:\n" +" pass\n" +"\n" +" path = None\n" +" if '.' in absolute_name:\n" +" parent_name, _, child_name = absolute_name.rpartition('.')\n" +" parent_module = import_module(parent_name)\n" +" path = parent_module.__spec__.submodule_search_locations\n" +" for finder in sys.meta_path:\n" +" spec = finder.find_spec(absolute_name, path)\n" +" if spec is not None:\n" +" break\n" +" else:\n" +" msg = f'No module named {absolute_name!r}'\n" +" raise ModuleNotFoundError(msg, name=absolute_name)\n" +" module = importlib.util.module_from_spec(spec)\n" +" sys.modules[absolute_name] = module\n" +" spec.loader.exec_module(module)\n" +" if path is not None:\n" +" setattr(parent_module, child_name, module)\n" +" return module" #: ../Doc/library/importlib.rst:443 msgid "universal newlines" -msgstr "" +msgstr "nuevas líneas universales" #: ../Doc/library/importlib.rst:443 msgid "importlib.abc.InspectLoader.get_source method" -msgstr "" +msgstr "importlib.abc.InspectLoader.get_source method" From 42bbcc62996c4757abbecebb6eed480e1ce7d9a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cristi=C3=A1n=20Maureira-Fredes?= Date: Tue, 14 Oct 2025 12:56:37 +0200 Subject: [PATCH 67/78] Translate library/typing (#3325) Closes #2994 --- dictionaries/library_typing.txt | 85 +- library/typing.po | 2449 +++++++++++++++++++++++-------- 2 files changed, 1920 insertions(+), 614 deletions(-) diff --git a/dictionaries/library_typing.txt b/dictionaries/library_typing.txt index 3ce8cbcca5..8a9980ad1f 100644 --- a/dictionaries/library_typing.txt +++ b/dictionaries/library_typing.txt @@ -1,8 +1,85 @@ +Absolute +Ann +Annotated +Bucket +Combiner +Concatenate +Employee +Generic +Matrix +Movie +Never +Okay +Proto +Revealed +Sip +Starship +Tambien +Ts +Unrelated +Variadic +Vec +Yup +abs +allowed +another +asignacin +backports +bad +bound +broadcast +capitalized +cb +comprobadores +concat +concatenate +cualificador +damage +despues +employees +enterprise +exhaustividad +greet +greetings +hi +inner interdependientes +kind +manner +maxitems +maxlen +movie +mutate +my +never +numbers +overrides +predicate +prints +proper +provides +raises +reasignaciones +results +retroadaptación +retroportaciones +reveal +revealed +scalar +second +servers +status +team +there tipificación +together +tup +two +typeddict +typo +usuarie variádico variádicos -cualificador -usuarie -exhaustividad -backports +veficiación +way +year diff --git a/library/typing.po b/library/typing.po index 37e33faa92..3a3a7c0590 100644 --- a/library/typing.po +++ b/library/typing.po @@ -11,15 +11,16 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: 2024-11-21 11:04-0500\n" -"Last-Translator: Alfonso Areiza Guerra \n" -"Language: es\n" +"PO-Revision-Date: 2025-10-14 12:43+0200\n" +"Last-Translator: Cristián Maureira-Fredes \n" "Language-Team: python-doc-es\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\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.16.0\n" +"X-Generator: Poedit 3.6\n" #: ../Doc/library/typing.rst:3 msgid ":mod:`typing` --- Support for type hints" @@ -30,38 +31,44 @@ msgid "**Source code:** :source:`Lib/typing.py`" msgstr "**Source code:** :source:`Lib/typing.py`" #: ../Doc/library/typing.rst:20 -#, fuzzy msgid "" "The Python runtime does not enforce function and variable type annotations. " "They can be used by third party tools such as :term:`type checkers `, IDEs, linters, etc." msgstr "" -"En tiempo de ejecución, Python no impone las anotaciones de tipado en " -"funciones y variables. Pueden ser utilizadas por herramientas de terceros " -"como validadores de tipado, IDEs, linters, etc." +"El entorno de ejecución de Python no exige anotaciones de tipos de funciones " +"y variables. Pueden ser utilizadas por herramientas de terceros " +"como :term:`type checkers `, IDE, linters, etc." #: ../Doc/library/typing.rst:26 -#, fuzzy msgid "This module provides runtime support for type hints." -msgstr ":mod:`typing` --- Soporte para *type hints*" +msgstr "" +"Este módulo proporciona soporte en tiempo de ejecución para sugerencias de " +"tipo." #: ../Doc/library/typing.rst:28 msgid "Consider the function below::" -msgstr "" +msgstr "Considere la función a continuación::" #: ../Doc/library/typing.rst:30 msgid "" "def surface_area_of_cube(edge_length: float) -> str:\n" " return f\"The surface area of the cube is {6 * edge_length ** 2}.\"" msgstr "" +"def surface_area_of_cube(edge_length: float) -> str:\n" +" return f\"The surface area of the cube is {6 * edge_length ** 2}.\"" #: ../Doc/library/typing.rst:33 msgid "" "The function ``surface_area_of_cube`` takes an argument expected to be an " "instance of :class:`float`, as indicated by the :term:`type hint` " -"``edge_length: float``. The function is expected to return an instance of :" -"class:`str`, as indicated by the ``-> str`` hint." +"``edge_length: float``. The function is expected to return an instance " +"of :class:`str`, as indicated by the ``-> str`` hint." msgstr "" +"La función ``surface_area_of_cube`` toma un argumento que se espera que sea " +"una instancia de :class:`float`, como lo indica :term:`type hint` " +"``edge_length: float``. Se espera que la función devuelva una instancia " +"de :class:`str`, como lo indica la sugerencia ``-> str``." #: ../Doc/library/typing.rst:38 msgid "" @@ -69,18 +76,20 @@ msgid "" "they can also be more complex. The :mod:`typing` module provides a " "vocabulary of more advanced type hints." msgstr "" +"Si bien las sugerencias de tipos pueden ser clases simples " +"como :class:`float` o :class:`str`, también pueden ser más complejas. El " +"módulo :mod:`typing` proporciona un vocabulario de sugerencias de tipos más " +"avanzadas." #: ../Doc/library/typing.rst:42 -#, fuzzy msgid "" -"New features are frequently added to the ``typing`` module. The :pypi:" -"`typing_extensions` package provides backports of these new features to " -"older versions of Python." +"New features are frequently added to the ``typing`` module. " +"The :pypi:`typing_extensions` package provides backports of these new " +"features to older versions of Python." msgstr "" -"Frecuentemente se agregan nuevas funcionalidades al módulo ``typing``. El " -"paquete `typing_extensions `_ " -"provee backports de estas nuevas funcionalidades para versiones más antiguas " -"de Python." +"Con frecuencia se agregan nuevas funciones al módulo ``typing``. El " +"paquete :pypi:`typing_extensions` proporciona versiones anteriores de estas " +"nuevas funciones para versiones anteriores de Python." #: ../Doc/library/typing.rst:49 msgid "" @@ -98,11 +107,11 @@ msgstr "" #: ../Doc/library/typing.rst:54 msgid "" -"\"Type System Reference\" section of `the mypy docs `_" +"\"Type System Reference\" section of `the mypy docs `_" msgstr "" -"Sección “Referencia sobre sistema de tipo” de `the mypy docs `_" +"Sección “Referencia sobre sistema de tipo” de `the mypy docs `_" #: ../Doc/library/typing.rst:52 msgid "" @@ -131,14 +140,17 @@ msgstr "" #: ../Doc/library/typing.rst:64 msgid "Specification for the Python Type System" -msgstr "" +msgstr "Especificación del sistema de tipos de Python" #: ../Doc/library/typing.rst:66 msgid "" "The canonical, up-to-date specification of the Python type system can be " -"found at `\"Specification for the Python type system\" `_." +"found at `\"Specification for the Python type system\" `_." msgstr "" +"La especificación canónica y actualizada del sistema de tipos Python se " +"puede encontrar en `\"Specification for the Python type system\" `_." #: ../Doc/library/typing.rst:72 msgid "Type aliases" @@ -165,6 +177,13 @@ msgid "" "# passes type checking; a list of floats qualifies as a Vector.\n" "new_vector = scale(2.0, [1.0, -4.2, 5.4])" msgstr "" +"type Vector = list[float]\n" +"\n" +"def scale(scalar: float, vector: Vector) -> Vector:\n" +" return [scalar * num for num in vector]\n" +"\n" +"# pasa las verificaciones de tipo; una lista de float califica como Vector.\n" +"new_vector = scale(2.0, [1.0, -4.2, 5.4])" #: ../Doc/library/typing.rst:87 msgid "" @@ -193,6 +212,22 @@ msgid "" ") -> None:\n" " ..." msgstr "" +"from collections.abc import Sequence\n" +"\n" +"type ConnectionOptions = dict[str, str]\n" +"type Address = tuple[str, int]\n" +"type Server = tuple[Address, ConnectionOptions]\n" +"\n" +"def broadcast_message(message: str, servers: Sequence[Server]) -> None:\n" +" ...\n" +"\n" +"# El verificador de tipos estáticos tratará la firma de tipo anterior como\n" +"# exactamente equivalente a esta.\n" +"def broadcast_message(\n" +" message: str,\n" +" servers: Sequence[tuple[tuple[str, int], dict[str, str]]]\n" +") -> None:\n" +" ..." #: ../Doc/library/typing.rst:106 msgid "" @@ -205,7 +240,7 @@ msgstr "" #: ../Doc/library/typing.rst:109 msgid "Vector = list[float]" -msgstr "" +msgstr "Vector = list[float]" #: ../Doc/library/typing.rst:111 msgid "" @@ -221,6 +256,9 @@ msgid "" "\n" "Vector: TypeAlias = list[float]" msgstr "" +"from typing import TypeAlias\n" +"\n" +"Vector: TypeAlias = list[float]" #: ../Doc/library/typing.rst:121 msgid "NewType" @@ -237,6 +275,10 @@ msgid "" "UserId = NewType('UserId', int)\n" "some_id = UserId(524313)" msgstr "" +"from typing import NewType\n" +"\n" +"UserId = NewType('UserId', int)\n" +"some_id = UserId(524313)" #: ../Doc/library/typing.rst:130 msgid "" @@ -257,6 +299,14 @@ msgid "" "# fails type checking; an int is not a UserId\n" "user_b = get_user_name(-1)" msgstr "" +"def get_user_name(user_id: UserId) -> str:\n" +" ...\n" +"\n" +"# pasa la verificación de tipos\n" +"user_a = get_user_name(UserId(42351))\n" +"\n" +"# falla la verificación de tipos; un int no es un UserId\n" +"user_b = get_user_name(-1)" #: ../Doc/library/typing.rst:142 msgid "" @@ -275,6 +325,8 @@ msgid "" "# 'output' is of type 'int', not 'UserId'\n" "output = UserId(23413) + UserId(54341)" msgstr "" +"# 'output' es del tipo 'int', no 'UserId'\n" +"output = UserId(23413) + UserId(54341)" #: ../Doc/library/typing.rst:150 msgid "" @@ -312,6 +364,12 @@ msgid "" "# Fails at runtime and does not pass type checking\n" "class AdminUserId(UserId): pass" msgstr "" +"from typing import NewType\n" +"\n" +"UserId = NewType('UserId', int)\n" +"\n" +"# Falla en runtime y no pasa la verificación de tipos\n" +"class AdminUserId(UserId): pass" #: ../Doc/library/typing.rst:168 msgid "" @@ -329,6 +387,11 @@ msgid "" "\n" "ProUserId = NewType('ProUserId', UserId)" msgstr "" +"from typing import NewType\n" +"\n" +"UserId = NewType('UserId', int)\n" +"\n" +"ProUserId = NewType('ProUserId', UserId)" #: ../Doc/library/typing.rst:176 msgid "and typechecking for ``ProUserId`` will work as expected." @@ -391,17 +454,18 @@ msgid "Annotating callable objects" msgstr "Anotaciones en objetos invocables" #: ../Doc/library/typing.rst:210 -#, fuzzy msgid "" -"Functions -- or other :term:`callable` objects -- can be annotated using :" -"class:`collections.abc.Callable` or deprecated :data:`typing.Callable`. " -"``Callable[[int], str]`` signifies a function that takes a single parameter " -"of type :class:`int` and returns a :class:`str`." +"Functions -- or other :term:`callable` objects -- can be annotated " +"using :class:`collections.abc.Callable` or " +"deprecated :data:`typing.Callable`. ``Callable[[int], str]`` signifies a " +"function that takes a single parameter of type :class:`int` and returns " +"a :class:`str`." msgstr "" -"Las funciones -- u otro objeto invocable :term:`callable` se pueden anotar " -"utilizando :class:`collections.abc.Callable` o :data:`typing.Callable`. " -"``Callable[[int], str]`` se refiere a una función que toma un solo parámetro " -"de tipo :class:`int` y retorna un :class:`str`." +"Las funciones (u otros objetos :term:`callable`) se pueden anotar " +"utilizando :class:`collections.abc.Callable` o el " +"obsoleto :data:`typing.Callable`. ``Callable[[int], str]`` significa una " +"función que toma un único parámetro de tipo :class:`int` y devuelve " +"un :class:`str`." #: ../Doc/library/typing.rst:215 ../Doc/library/typing.rst:3128 #: ../Doc/library/typing.rst:3308 @@ -424,6 +488,19 @@ msgid "" "\n" "callback: Callable[[str], Awaitable[None]] = on_update" msgstr "" +"from collections.abc import Callable, Awaitable\n" +"\n" +"def feeder(get_next_item: Callable[[], str]) -> None:\n" +" ... # Body\n" +"\n" +"def async_query(on_success: Callable[[int], None],\n" +" on_error: Callable[[int, Exception], None]) -> None:\n" +" ... # Body\n" +"\n" +"async def on_update(value: str) -> None:\n" +" ... # Body\n" +"\n" +"callback: Callable[[str], Awaitable[None]] = on_update" #: ../Doc/library/typing.rst:233 msgid "" @@ -434,8 +511,9 @@ msgid "" msgstr "" "La sintaxis de suscripción siempre debe utilizarse con exactamente dos " "valores: una lista de argumentos y el tipo de retorno. La lista de " -"argumentos debe ser una lista de tipos, un :class:`ParamSpec`, :data:" -"`Concatenate` o una elipsis. El tipo de retorno debe ser un único tipo." +"argumentos debe ser una lista de tipos, " +"un :class:`ParamSpec`, :data:`Concatenate` o una elipsis. El tipo de retorno " +"debe ser un único tipo." #: ../Doc/library/typing.rst:238 msgid "" @@ -454,21 +532,26 @@ msgid "" "x = str # OK\n" "x = concat # Also OK" msgstr "" +"def concat(x: str, y: str) -> str:\n" +" return x + y\n" +"\n" +"x: Callable[..., str]\n" +"x = str # OK\n" +"x = concat # Also OK" #: ../Doc/library/typing.rst:250 -#, fuzzy msgid "" "``Callable`` cannot express complex signatures such as functions that take a " "variadic number of arguments, :ref:`overloaded functions `, or " "functions that have keyword-only parameters. However, these signatures can " -"be expressed by defining a :class:`Protocol` class with a :meth:`~object." -"__call__` method:" +"be expressed by defining a :class:`Protocol` class with " +"a :meth:`~object.__call__` method:" msgstr "" -"``Callable`` no puede representar firmas complejas como funciones que toman " -"un número variado de argumentos, :func:`funciones sobrecargadas ` " -"o funciones que reciben parámetros de solo palabras clave. Sin embargo, " -"estas firmas se pueden definir al definir una clase :class:`Protocol` con un " -"método :meth:`~object.__call__` method:" +"``Callable`` no puede expresar firmas complejas, como funciones que toman un " +"número variádico de argumentos, :ref:`overloaded functions ` o " +"funciones que tienen parámetros que solo contienen palabras clave. Sin " +"embargo, estas firmas se pueden expresar definiendo una " +"clase :class:`Protocol` con un método :meth:`~object.__call__`:" #: ../Doc/library/typing.rst:256 msgid "" @@ -493,6 +576,27 @@ msgid "" "of\n" " # different name and kind in the callback" msgstr "" +"from collections.abc import Iterable\n" +"from typing import Protocol\n" +"\n" +"class Combiner(Protocol):\n" +" def __call__(self, *vals: bytes, maxlen: int | None = None) -> " +"list[bytes]: ...\n" +"\n" +"def batch_proc(data: Iterable[bytes], cb_results: Combiner) -> bytes:\n" +" for item in data:\n" +" ...\n" +"\n" +"def good_cb(*vals: bytes, maxlen: int | None = None) -> list[bytes]:\n" +" ...\n" +"def bad_cb(*vals: bytes, maxitems: int | None) -> list[bytes]:\n" +" ...\n" +"\n" +"batch_proc([], good_cb) # OK\n" +"batch_proc([], bad_cb) # Error! El argumento 2 tiene un tipo incompatible " +"debido a\n" +" # nombre y tipo diferentes en la devolución de " +"llamada" #: ../Doc/library/typing.rst:277 msgid "" @@ -505,20 +609,20 @@ msgid "" "ReturnType]`` respectively." msgstr "" "Los invocables que toman otros invocables como argumentos pueden indicar que " -"sus tipos de parámetros dependen unos de otros utilizando :class:" -"`ParamSpec`. Además, si ese invocable agrega o elimina argumentos de otros " -"invocables, se puede utilizar el operador :data:`Concatenate`. Toman la " -"forma ``Callable[ParamSpecVariable, ReturnType]`` y " -"``Callable[Concatenate[Arg1Type, Arg2Type, ..., ParamSpecVariable], " -"ReturnType]`` respectivamente." +"sus tipos de parámetros dependen unos de otros " +"utilizando :class:`ParamSpec`. Además, si ese invocable agrega o elimina " +"argumentos de otros invocables, se puede utilizar el " +"operador :data:`Concatenate`. Toman la forma ``Callable[ParamSpecVariable, " +"ReturnType]`` y ``Callable[Concatenate[Arg1Type, Arg2Type, ..., " +"ParamSpecVariable], ReturnType]`` respectivamente." #: ../Doc/library/typing.rst:285 ../Doc/library/typing.rst:3798 msgid "" -"``Callable`` now supports :class:`ParamSpec` and :data:`Concatenate`. See :" -"pep:`612` for more details." +"``Callable`` now supports :class:`ParamSpec` and :data:`Concatenate`. " +"See :pep:`612` for more details." msgstr "" -"``Callable`` ahora es compatible con :class:`ParamSpec` y :data:" -"`Concatenate`. Consulte :pep:`612` para obtener más información." +"``Callable`` ahora es compatible con :class:`ParamSpec` " +"y :data:`Concatenate`. Consulte :pep:`612` para obtener más información." #: ../Doc/library/typing.rst:290 msgid "" @@ -556,6 +660,17 @@ msgid "" "def notify_by_email(employees: Sequence[Employee],\n" " overrides: Mapping[str, str]) -> None: ..." msgstr "" +"from collections.abc import Mapping, Sequence\n" +"\n" +"class Employee: ...\n" +"\n" +"# Sequence[Employee] indica que todos los elementos de la secuencia\n" +"# deben ser instancias de \"Employee\".\n" +"# Mapping[str, str] indica que todas las claves y todos los valores de la " +"asignación\n" +"# deben ser cadenas.\n" +"def notify_by_email(employees: Sequence[Employee],\n" +" overrides: Mapping[str, str]) -> None: ..." #: ../Doc/library/typing.rst:315 msgid "" @@ -573,6 +688,11 @@ msgid "" "\"T\"\n" " return l[0]" msgstr "" +"from collections.abc import Sequence\n" +"\n" +"def first[T](l: Sequence[T]) -> T: # La función es genérica sobre el " +"TypeVar \"T\"\n" +" return l[0]" #: ../Doc/library/typing.rst:323 msgid "Or by using the :class:`TypeVar` factory directly::" @@ -589,6 +709,14 @@ msgid "" "\"U\"\n" " return l[1]" msgstr "" +"from collections.abc import Sequence\n" +"from typing import TypeVar\n" +"\n" +"U = TypeVar('U') # Declara variable tipo \"U\"\n" +"\n" +"def second(l: Sequence[U]) -> U: # La función es genérica sobre TypeVar " +"\"U\"\n" +" return l[1]" #: ../Doc/library/typing.rst:333 msgid "Syntactic support for generics is new in Python 3.12." @@ -620,26 +748,41 @@ msgid "" "# and that all values in ``z`` are meant to be either strings or ints\n" "z: Mapping[str, str | int] = {}" msgstr "" +"from collections.abc import Mapping\n" +"\n" +"# El verificador de tipos inferirá que todos los elementos en ``x`` deben " +"ser ints\n" +"x: list[int] = []\n" +"\n" +"#Error del verificador de tipo: ``list`` solo acepta un único argumento de " +"tipo:\n" +"y: list[int, str] = [1, 'foo']\n" +"\n" +"# El verificador de tipos inferirá que todas las claves en ``z`` deben ser " +"strings,\n" +"# y que todos los valores en ``z`` deben ser strings o ints\n" +"z: Mapping[str, str | int] = {}" #: ../Doc/library/typing.rst:356 msgid "" ":class:`list` only accepts one type argument, so a type checker would emit " -"an error on the ``y`` assignment above. Similarly, :class:`~collections.abc." -"Mapping` only accepts two type arguments: the first indicates the type of " -"the keys, and the second indicates the type of the values." +"an error on the ``y`` assignment above. " +"Similarly, :class:`~collections.abc.Mapping` only accepts two type " +"arguments: the first indicates the type of the keys, and the second " +"indicates the type of the values." msgstr "" ":class:`list` solo acepta un argumento de tipo, por lo que un validador de " -"tipos emitiría un error en la asignación ``y`` anterior. De manera similar, :" -"class:`~collections.abc.Mapping` solo acepta dos argumentos de tipo: el " -"primero indica el tipo de las claves y el segundo indica el tipo de los " -"valores." +"tipos emitiría un error en la asignación ``y`` anterior. De manera " +"similar, :class:`~collections.abc.Mapping` solo acepta dos argumentos de " +"tipo: el primero indica el tipo de las claves y el segundo indica el tipo de " +"los valores." #: ../Doc/library/typing.rst:362 msgid "" "Unlike most other Python containers, however, it is common in idiomatic " "Python code for tuples to have elements which are not all of the same type. " -"For this reason, tuples are special-cased in Python's typing system. :class:" -"`tuple` accepts *any number* of type arguments::" +"For this reason, tuples are special-cased in Python's typing " +"system. :class:`tuple` accepts *any number* of type arguments::" msgstr "" "Sin embargo, a diferencia de la mayoría de los demás contenedores de Python, " "es común en el código idiomático de Python que las tuplas tengan elementos " @@ -661,6 +804,17 @@ msgid "" "# but ``z`` has been assigned to a tuple of length 3\n" "z: tuple[int] = (1, 2, 3)" msgstr "" +"# OK: ``x`` se asigna a una tupla de longitud 1 donde el único elemento es " +"un int\n" +"x: tuple[int] = (5,)\n" +"\n" +"# OK: ``y`` se asigna a una tupla de longitud 2;\n" +"# el elemento 1 es un int, el elemento 2 es una cadena\n" +"y: tuple[int, str] = (5, \"foo\")\n" +"\n" +"# Error: la anotación de tipo indica una tupla de longitud 1,\n" +"# pero ``z`` se ha asignado a una tupla de longitud 3\n" +"z: tuple[int] = (1, 2, 3)" #: ../Doc/library/typing.rst:378 msgid "" @@ -693,23 +847,40 @@ msgid "" "z = (1, 2, 3)\n" "z = ()" msgstr "" +"x: tuple[int, ...] = (1, 2)\n" +"# Estas reasignaciones están bien: ``tuple[int, ...]`` indica que x puede " +"tener cualquier longitud\n" +"x = (1, 2, 3)\n" +"x = ()\n" +"# Esta reasignación es un error: todos los elementos en ``x`` deben ser " +"enteros\n" +"x = (\"foo\", \"bar\")\n" +"\n" +"# ``y`` solo se puede asignar a una tupla vacía\n" +"y: tuple[()] = ()\n" +"\n" +"z: tuple = (\"foo\", \"bar\")\n" +"# Estas reasignaciones están bien: una ``tupla`` simple es equivalente a " +"``tuple[Any, ...]``\n" +"z = (1, 2, 3)\n" +"z = ()" #: ../Doc/library/typing.rst:401 msgid "The type of class objects" msgstr "El tipo de objetos de clase" #: ../Doc/library/typing.rst:403 -#, fuzzy msgid "" "A variable annotated with ``C`` may accept a value of type ``C``. In " -"contrast, a variable annotated with ``type[C]`` (or deprecated :class:" -"`typing.Type[C] `) may accept values that are classes themselves -- " -"specifically, it will accept the *class object* of ``C``. For example::" +"contrast, a variable annotated with ``type[C]`` (or " +"deprecated :class:`typing.Type[C] `) may accept values that are " +"classes themselves -- specifically, it will accept the *class object* of " +"``C``. For example::" msgstr "" "Una variable anotada con ``C`` puede aceptar un valor de tipo ``C``. Por el " "contrario, una variable anotada con ``type[C]`` (o :class:`typing.Type[C] " -"`) puede aceptar valores que sean clases en sí mismas; " -"específicamente, aceptará el *objeto de clase* de ``C``. Por ejemplo:" +"` en desuso) puede aceptar valores que sean clases en sí mismos; " +"específicamente, aceptará el *class object* de ``C``. Por ejemplo:" #: ../Doc/library/typing.rst:409 msgid "" @@ -717,6 +888,9 @@ msgid "" "b = int # Has type ``type[int]``\n" "c = type(a) # Also has type ``type[int]``" msgstr "" +"a = 3 # Tiene tipo ``int``\n" +"b = int # Tiene tipo ``type[int]``\n" +"c = type(a) # Tambien tiene tipo ``type[int]``" #: ../Doc/library/typing.rst:413 msgid "Note that ``type[C]`` is covariant::" @@ -740,15 +914,32 @@ msgid "" "make_new_user(int) # Error: ``type[int]`` is not a subtype of " "``type[User]``" msgstr "" +"class User: ...\n" +"class ProUser(User): ...\n" +"class TeamUser(User): ...\n" +"\n" +"def make_new_user(user_class: type[User]) -> User:\n" +" # ...\n" +" return user_class()\n" +"\n" +"make_new_user(User) # OK\n" +"make_new_user(ProUser) # También OK: ``type[ProUser]`` es un subtipo de " +"``type[User]``\n" +"make_new_user(TeamUser) # aún está bien\n" +"make_new_user(User()) # Error: se espera ``type[User]`` pero se usó " +"``User``\n" +"make_new_user(int) # Error: ``type[int]`` no es un subtipo de " +"``type[User]``" #: ../Doc/library/typing.rst:429 msgid "" -"The only legal parameters for :class:`type` are classes, :data:`Any`, :ref:" -"`type variables `, and unions of any of these types. For example::" +"The only legal parameters for :class:`type` are " +"classes, :data:`Any`, :ref:`type variables `, and unions of any of " +"these types. For example::" msgstr "" -"Los únicos parámetros legales para :class:`type` son las clases, :data:" -"`Any`, :ref:`variables de tipo ` y uniones de cualquiera de estos " -"tipos. Por ejemplo::" +"Los únicos parámetros legales para :class:`type` son las " +"clases, :data:`Any`, :ref:`variables de tipo ` y uniones de " +"cualquiera de estos tipos. Por ejemplo::" #: ../Doc/library/typing.rst:433 msgid "" @@ -760,28 +951,35 @@ msgid "" " # of ``type[BasicUser | ProUser]``\n" "new_non_team_user(User) # Also an error" msgstr "" +"def new_non_team_user(user_class: type[BasicUser | ProUser]): ...\n" +"\n" +"new_non_team_user(BasicUser) # OK\n" +"new_non_team_user(ProUser) # OK\n" +"new_non_team_user(TeamUser) # Error: ``type[TeamUser]`` no es un subtipo\n" +" # de ``type[BasicUser | ProUser]``\n" +"new_non_team_user(User) # También un error" #: ../Doc/library/typing.rst:441 msgid "" -"``type[Any]`` is equivalent to :class:`type`, which is the root of Python's :" -"ref:`metaclass hierarchy `." +"``type[Any]`` is equivalent to :class:`type`, which is the root of " +"Python's :ref:`metaclass hierarchy `." msgstr "" -"``type[Any]`` es equivalente a :class:`type`, que es la raíz de la :ref:" -"`jerarquía de metaclases ` de Python." +"``type[Any]`` es equivalente a :class:`type`, que es la raíz de " +"la :ref:`jerarquía de metaclases ` de Python." #: ../Doc/library/typing.rst:448 msgid "Annotating generators and coroutines" -msgstr "" +msgstr "Anotación de generadores y corrutinas" #: ../Doc/library/typing.rst:450 -#, fuzzy msgid "" -"A generator can be annotated using the generic type :class:" -"`Generator[YieldType, SendType, ReturnType] `. " -"For example::" +"A generator can be annotated using the generic " +"type :class:`Generator[YieldType, SendType, ReturnType] " +"`. For example::" msgstr "" -"Un generador puede ser anotado con el tipo genérico ``Generator[YieldType, " -"SendType, ReturnType]``. Por ejemplo::" +"Se puede anotar un generador utilizando el tipo " +"genérico :class:`Generator[YieldType, SendType, ReturnType] " +"`. Por ejemplo:" #: ../Doc/library/typing.rst:454 msgid "" @@ -791,22 +989,28 @@ msgid "" " sent = yield round(sent)\n" " return 'Done'" msgstr "" +"def echo_round() -> Generator[int, float, str]:\n" +" sent = yield 0\n" +" while sent >= 0:\n" +" sent = yield round(sent)\n" +" return 'Done'" #: ../Doc/library/typing.rst:460 -#, fuzzy msgid "" "Note that unlike many other generic classes in the standard library, the " "``SendType`` of :class:`~collections.abc.Generator` behaves contravariantly, " "not covariantly or invariantly." msgstr "" -"Nótese que en contraste con muchos otros genéricos en el módulo *typing*, el " -"``SendType`` de :class:`Generator` se comporta como contravariante, no " -"covariante ni invariante." +"Tenga en cuenta que, a diferencia de muchas otras clases genéricas en la " +"biblioteca estándar, ``SendType`` de :class:`~collections.abc.Generator` se " +"comporta de manera contravariante, no covariante o invariante." #: ../Doc/library/typing.rst:464 msgid "" "The ``SendType`` and ``ReturnType`` parameters default to :const:`!None`::" msgstr "" +"Los parámetros ``SendType`` y ``ReturnType`` tienen como valor " +"predeterminado :const:`!None`::" #: ../Doc/library/typing.rst:466 msgid "" @@ -815,10 +1019,14 @@ msgid "" " yield start\n" " start += 1" msgstr "" +"def infinite_stream(start: int) -> Generator[int]:\n" +" while True:\n" +" yield start\n" +" start += 1" #: ../Doc/library/typing.rst:471 msgid "It is also possible to set these types explicitly::" -msgstr "" +msgstr "También es posible configurar estos tipos explícitamente:" #: ../Doc/library/typing.rst:473 msgid "" @@ -827,13 +1035,22 @@ msgid "" " yield start\n" " start += 1" msgstr "" +"def infinite_stream(start: int) -> Generator[int, None, None]:\n" +" while True:\n" +" yield start\n" +" start += 1" #: ../Doc/library/typing.rst:478 msgid "" "Simple generators that only ever yield values can also be annotated as " -"having a return type of either :class:`Iterable[YieldType] ` or :class:`Iterator[YieldType] `::" +"having a return type of either :class:`Iterable[YieldType] " +"` or :class:`Iterator[YieldType] " +"`::" msgstr "" +"Los generadores simples que solo producen valores también se pueden anotar " +"como que tienen un tipo de retorno de :class:`Iterable[YieldType] " +"` o :class:`Iterator[YieldType] " +"`::" #: ../Doc/library/typing.rst:483 msgid "" @@ -842,14 +1059,23 @@ msgid "" " yield start\n" " start += 1" msgstr "" +"def infinite_stream(start: int) -> Iterator[int]:\n" +" while True:\n" +" yield start\n" +" start += 1" #: ../Doc/library/typing.rst:488 msgid "" "Async generators are handled in a similar fashion, but don't expect a " "``ReturnType`` type argument (:class:`AsyncGenerator[YieldType, SendType] " -"`). The ``SendType`` argument defaults to :" -"const:`!None`, so the following definitions are equivalent::" +"`). The ``SendType`` argument defaults " +"to :const:`!None`, so the following definitions are equivalent::" msgstr "" +"Los generadores asincrónicos se manejan de manera similar, pero no espere un " +"argumento de tipo ``ReturnType`` (:class:`AsyncGenerator[YieldType, " +"SendType] `). El argumento ``SendType`` " +"tiene como valor predeterminado :const:`!None`, por lo que las siguientes " +"definiciones son equivalentes:" #: ../Doc/library/typing.rst:494 msgid "" @@ -863,13 +1089,26 @@ msgid "" " yield start\n" " start = await increment(start)" msgstr "" +"async def infinite_stream(start: int) -> AsyncGenerator[int]:\n" +" while True:\n" +" yield start\n" +" start = await increment(start)\n" +"\n" +"async def infinite_stream(start: int) -> AsyncGenerator[int, None]:\n" +" while True:\n" +" yield start\n" +" start = await increment(start)" #: ../Doc/library/typing.rst:504 msgid "" -"As in the synchronous case, :class:`AsyncIterable[YieldType] ` and :class:`AsyncIterator[YieldType] ` are available as well::" +"As in the synchronous case, :class:`AsyncIterable[YieldType] " +"` and :class:`AsyncIterator[YieldType] " +"` are available as well::" msgstr "" +"Al igual que en el caso sincrónico, también están " +"disponibles :class:`AsyncIterable[YieldType] " +"` y :class:`AsyncIterator[YieldType] " +"`:" #: ../Doc/library/typing.rst:509 msgid "" @@ -878,6 +1117,10 @@ msgid "" " yield start\n" " start = await increment(start)" msgstr "" +"async def infinite_stream(start: int) -> AsyncIterator[int]:\n" +" while True:\n" +" yield start\n" +" start = await increment(start)" #: ../Doc/library/typing.rst:514 msgid "" @@ -885,6 +1128,9 @@ msgid "" "ReturnType] `. Generic arguments correspond to " "those of :class:`~collections.abc.Generator`, for example::" msgstr "" +"Las corrutinas se pueden anotar utilizando :class:`Coroutine[YieldType, " +"SendType, ReturnType] `. Los argumentos genéricos " +"corresponden a los de :class:`~collections.abc.Generator`, por ejemplo:" #: ../Doc/library/typing.rst:519 msgid "" @@ -894,6 +1140,12 @@ msgid "" "async def bar() -> None:\n" " y = await c # Inferred type of 'y' is int" msgstr "" +"from collections.abc import Coroutine\n" +"c: Coroutine[list[str], str, int] # Algunas corrutinas definidas en otro " +"lugar\n" +"x = c.send('hi') # El tipo inferido de 'x' es list[str]\n" +"async def bar() -> None:\n" +" y = await c # El tipo inferido de 'y' es int" #: ../Doc/library/typing.rst:528 msgid "User-defined generic types" @@ -926,23 +1178,40 @@ msgid "" " def log(self, message: str) -> None:\n" " self.logger.info('%s: %s', self.name, message)" msgstr "" +"from logging import Logger\n" +"\n" +"class LoggedVar[T]:\n" +" def __init__(self, value: T, name: str, logger: Logger) -> None:\n" +" self.name = name\n" +" self.logger = logger\n" +" self.value = value\n" +"\n" +" def set(self, new: T) -> None:\n" +" self.log('Set ' + repr(self.value))\n" +" self.value = new\n" +"\n" +" def get(self) -> T:\n" +" self.log('Get ' + repr(self.value))\n" +" return self.value\n" +"\n" +" def log(self, message: str) -> None:\n" +" self.logger.info('%s: %s', self.name, message)" #: ../Doc/library/typing.rst:553 -#, fuzzy msgid "" "This syntax indicates that the class ``LoggedVar`` is parameterised around a " "single :ref:`type variable ` ``T`` . This also makes ``T`` valid as " "a type within the class body." msgstr "" "Esta sintaxis indica que la clase ``LoggedVar`` está parametrizada en torno " -"a una única variable de tipo :class:`` ``T`` . Esto también hace " -"que ``T`` sea válida como tipo dentro del cuerpo de la clase." +"a un único :ref:`type variable ` ``T`` . Esto también hace que " +"``T`` sea válido como tipo dentro del cuerpo de la clase." #: ../Doc/library/typing.rst:557 msgid "" "Generic classes implicitly inherit from :class:`Generic`. For compatibility " -"with Python 3.11 and lower, it is also possible to inherit explicitly from :" -"class:`Generic` to indicate a generic class::" +"with Python 3.11 and lower, it is also possible to inherit explicitly " +"from :class:`Generic` to indicate a generic class::" msgstr "" "Las clases genéricas heredan implícitamente de :class:`Generic`. Para " "compatibilidad con Python 3.11 y versiones anteriores, también es posible " @@ -957,6 +1226,12 @@ msgid "" "class LoggedVar(Generic[T]):\n" " ..." msgstr "" +"from typing import TypeVar, Generic\n" +"\n" +"T = TypeVar('T')\n" +"\n" +"class LoggedVar(Generic[T]):\n" +" ..." #: ../Doc/library/typing.rst:568 msgid "" @@ -975,11 +1250,16 @@ msgid "" " for var in vars:\n" " var.set(0)" msgstr "" +"from collections.abc import Iterable\n" +"\n" +"def zero_all_vars(vars: Iterable[LoggedVar[int]]) -> None:\n" +" for var in vars:\n" +" var.set(0)" #: ../Doc/library/typing.rst:577 msgid "" -"A generic type can have any number of type variables. All varieties of :" -"class:`TypeVar` are permissible as parameters for a generic type::" +"A generic type can have any number of type variables. All varieties " +"of :class:`TypeVar` are permissible as parameters for a generic type::" msgstr "" "Un tipo genérico puede tener un numero cualquiera de variables de tipo. Se " "permiten todas las variaciones de :class:`TypeVar` para ser usadas como " @@ -999,6 +1279,17 @@ msgid "" "class OldWeirdTrio(Generic[OldT, OldB, OldS]):\n" " ..." msgstr "" +"from typing import TypeVar, Generic, Sequence\n" +"\n" +"class WeirdTrio[T, B: Sequence[bytes], S: (int, str)]:\n" +" ...\n" +"\n" +"OldT = TypeVar('OldT', contravariant=True)\n" +"OldB = TypeVar('OldB', bound=Sequence[bytes], covariant=True)\n" +"OldS = TypeVar('OldS', int, str)\n" +"\n" +"class OldWeirdTrio(Generic[OldT, OldB, OldS]):\n" +" ..." #: ../Doc/library/typing.rst:592 msgid "" @@ -1021,6 +1312,16 @@ msgid "" "class Pair(Generic[T, T]): # INVALID\n" " ..." msgstr "" +"from typing import TypeVar, Generic\n" +"...\n" +"\n" +"class Pair[M, M]: # SyntaxError\n" +" ...\n" +"\n" +"T = TypeVar('T')\n" +"\n" +"class Pair(Generic[T, T]): # INVALID\n" +" ..." #: ../Doc/library/typing.rst:606 msgid "Generic classes can also inherit from other classes::" @@ -1033,6 +1334,10 @@ msgid "" "class LinkedList[T](Sized):\n" " ..." msgstr "" +"from collections.abc import Sized\n" +"\n" +"class LinkedList[T](Sized):\n" +" ..." #: ../Doc/library/typing.rst:613 msgid "" @@ -1047,6 +1352,10 @@ msgid "" "class MyDict[T](Mapping[str, T]):\n" " ..." msgstr "" +"from collections.abc import Mapping\n" +"\n" +"class MyDict[T](Mapping[str, T]):\n" +" ..." #: ../Doc/library/typing.rst:620 msgid "In this case ``MyDict`` has a single parameter, ``T``." @@ -1058,9 +1367,10 @@ msgid "" "for each position. In the following example, ``MyIterable`` is not generic " "but implicitly inherits from ``Iterable[Any]``:" msgstr "" -"El uso de una clase genérica sin especificar parámetros de tipo supone :data:" -"`Any` para cada posición. En el siguiente ejemplo, ``MyIterable`` no es " -"genérico, sino que hereda implícitamente de ``Iterable[Any]``:" +"El uso de una clase genérica sin especificar parámetros de tipo " +"supone :data:`Any` para cada posición. En el siguiente ejemplo, " +"``MyIterable`` no es genérico, sino que hereda implícitamente de " +"``Iterable[Any]``:" #: ../Doc/library/typing.rst:626 msgid "" @@ -1069,6 +1379,10 @@ msgid "" "class MyIterable(Iterable): # Same as Iterable[Any]\n" " ..." msgstr "" +"from collections.abc import Iterable\n" +"\n" +"class MyIterable(Iterable): # Igual que Iterable[Any]\n" +" ..." #: ../Doc/library/typing.rst:633 msgid "User-defined generic type aliases are also supported. Examples::" @@ -1092,6 +1406,19 @@ msgid "" "Iterable[tuple[T, T]]\n" " return sum(x*y for x, y in v)" msgstr "" +"from collections.abc import Iterable\n" +"\n" +"type Response[S] = Iterable[S] | int\n" +"\n" +"# Return type here is same as Iterable[str] | int\n" +"def response(query: str) -> Response[str]:\n" +" ...\n" +"\n" +"type Vec[T] = Iterable[tuple[T, T]]\n" +"\n" +"def inproduct[T: (int, float, complex)](v: Vec[T]) -> T: # Same as " +"Iterable[tuple[T, T]]\n" +" return sum(x*y for x, y in v)" #: ../Doc/library/typing.rst:648 msgid "" @@ -1109,6 +1436,11 @@ msgid "" "S = TypeVar(\"S\")\n" "Response = Iterable[S] | int" msgstr "" +"from collections.abc import Iterable\n" +"from typing import TypeVar\n" +"\n" +"S = TypeVar(\"S\")\n" +"Response = Iterable[S] | int" #: ../Doc/library/typing.rst:657 msgid ":class:`Generic` no longer has a custom metaclass." @@ -1148,6 +1480,10 @@ msgid "" ">>> Z[int, [dict, float]]\n" "__main__.Z[int, [dict, float]]" msgstr "" +">>> class Z[T, **P]: ... # T es un TypeVar; P es un ParamSpec\n" +"...\n" +">>> Z[int, [dict, float]]\n" +"__main__.Z[int, [dict, float]]" #: ../Doc/library/typing.rst:676 msgid "" @@ -1166,6 +1502,12 @@ msgid "" "class Z(Generic[P]):\n" " ..." msgstr "" +"from typing import ParamSpec, Generic\n" +"\n" +"P = ParamSpec('P')\n" +"\n" +"class Z(Generic[P]):\n" +" ..." #: ../Doc/library/typing.rst:686 msgid "" @@ -1190,6 +1532,12 @@ msgid "" ">>> X[[int, str]]\n" "__main__.X[[int, str]]" msgstr "" +">>> class X[**P]: ...\n" +"...\n" +">>> X[int, str]\n" +"__main__.X[[int, str]]\n" +">>> X[[int, str]]\n" +"__main__.X[[int, str]]" #: ../Doc/library/typing.rst:699 msgid "" @@ -1203,8 +1551,8 @@ msgstr "" #: ../Doc/library/typing.rst:703 msgid "" -":class:`Generic` can now be parameterized over parameter expressions. See :" -"class:`ParamSpec` and :pep:`612` for more details." +":class:`Generic` can now be parameterized over parameter expressions. " +"See :class:`ParamSpec` and :pep:`612` for more details." msgstr "" ":class:`Generic` ahora se puede parametrizar sobre expresiones de " "parámetros. Consulte :class:`ParamSpec` y :pep:`612` para obtener más " @@ -1214,8 +1562,8 @@ msgstr "" msgid "" "A user-defined generic class can have ABCs as base classes without a " "metaclass conflict. Generic metaclasses are not supported. The outcome of " -"parameterizing generics is cached, and most types in the typing module are :" -"term:`hashable` and comparable for equality." +"parameterizing generics is cached, and most types in the typing module " +"are :term:`hashable` and comparable for equality." msgstr "" "Una clase genérica definida por el usuario puede tener clases ABC sin que se " "produzca un conflicto de metaclases. No se admiten metaclases genéricas. El " @@ -1262,14 +1610,28 @@ msgid "" " item.bar()\n" " ..." msgstr "" +"from typing import Any\n" +"\n" +"a: Any = None\n" +"a = [] # OK\n" +"a = 2 # OK\n" +"\n" +"s: str = ''\n" +"s = a # OK\n" +"\n" +"def foo(item: Any) -> int:\n" +" # Pasa la verificación de tipos; 'item' puede ser de cualquier tipo,\n" +" # y ese tipo puede tener el método 'bar'\n" +" item.bar()\n" +" ..." #: ../Doc/library/typing.rst:738 msgid "" -"Notice that no type checking is performed when assigning a value of type :" -"data:`Any` to a more precise type. For example, the static type checker did " -"not report an error when assigning ``a`` to ``s`` even though ``s`` was " -"declared to be of type :class:`str` and receives an :class:`int` value at " -"runtime!" +"Notice that no type checking is performed when assigning a value of " +"type :data:`Any` to a more precise type. For example, the static type " +"checker did not report an error when assigning ``a`` to ``s`` even though " +"``s`` was declared to be of type :class:`str` and receives an :class:`int` " +"value at runtime!" msgstr "" "Nótese que no se realiza comprobación de tipo cuando se asigna un valor de " "tipo :data:`Any` a un tipo más preciso. Por ejemplo, el Validador estático " @@ -1297,6 +1659,15 @@ msgid "" " ...\n" " return data" msgstr "" +"def legacy_parser(text):\n" +" ...\n" +" return data\n" +"\n" +"# Un verificador de tipos estáticos tratará\n" +"# lo anterior como si tuviera la misma firma que:\n" +"def legacy_parser(text: Any) -> Any:\n" +" ...\n" +" return data" #: ../Doc/library/typing.rst:757 msgid "" @@ -1315,8 +1686,8 @@ msgid "" msgstr "" "Compárese el comportamiento de :data:`Any` con el de :class:`object`. De " "manera similar a :data:`Any`, todo tipo es un subtipo de :class:`object`. " -"Sin embargo, en oposición a :data:`Any`, lo contrario no es cierto: :class:" -"`object` *no* es un subtipo de ningún otro tipo." +"Sin embargo, en oposición a :data:`Any`, lo contrario no es " +"cierto: :class:`object` *no* es un subtipo de ningún otro tipo." #: ../Doc/library/typing.rst:765 msgid "" @@ -1350,6 +1721,26 @@ msgid "" "hash_b(42)\n" "hash_b(\"foo\")" msgstr "" +"def hash_a(item: object) -> int:\n" +" # No pasa la comprobación de tipos; un objeto no tiene un método " +"\"mágico\".\n" +" item.magic()\n" +" ...\n" +"\n" +"def hash_b(item: Any) -> int:\n" +" # Pasa la veficiación de tipos\n" +" item.magic()\n" +" ...\n" +"\n" +"# Pasa la verificación de tipo, ya que los ints y str son subclases de " +"objeto\n" +"hash_a(42)\n" +"hash_a(\"foo\")\n" +"\n" +"# Pasa la verificación de tipo, ya que Any es compatible con todos los " +"tipos\n" +"hash_b(42)\n" +"hash_b(\"foo\")" #: ../Doc/library/typing.rst:787 msgid "" @@ -1378,11 +1769,11 @@ msgstr "" # Frase ultracompleja, necesitar una revisión fuerte #: ../Doc/library/typing.rst:798 msgid "" -"This requirement previously also applied to abstract base classes, such as :" -"class:`~collections.abc.Iterable`. The problem with this approach is that a " -"class had to be explicitly marked to support them, which is unpythonic and " -"unlike what one would normally do in idiomatic dynamically typed Python " -"code. For example, this conforms to :pep:`484`::" +"This requirement previously also applied to abstract base classes, such " +"as :class:`~collections.abc.Iterable`. The problem with this approach is " +"that a class had to be explicitly marked to support them, which is " +"unpythonic and unlike what one would normally do in idiomatic dynamically " +"typed Python code. For example, this conforms to :pep:`484`::" msgstr "" "Este requisito también se aplicaba anteriormente a clases base abstractas " "(ABC), tales como :class:`~collections.abc.Iterable`. El problema con esta " @@ -1400,6 +1791,12 @@ msgid "" " def __len__(self) -> int: ...\n" " def __iter__(self) -> Iterator[int]: ..." msgstr "" +"from collections.abc import Sized, Iterable, Iterator\n" +"\n" +"class Bucket(Sized, Iterable[int]):\n" +" ...\n" +" def __len__(self) -> int: ...\n" +" def __iter__(self) -> Iterator[int]: ..." #: ../Doc/library/typing.rst:811 msgid "" @@ -1427,6 +1824,15 @@ msgid "" "def collect(items: Iterable[int]) -> int: ...\n" "result = collect(Bucket()) # Passes type check" msgstr "" +"from collections.abc import Iterator, Iterable\n" +"\n" +"class Bucket: # Nota: sin clases base\n" +" ...\n" +" def __len__(self) -> int: ...\n" +" def __iter__(self) -> Iterator[int]: ...\n" +"\n" +"def collect(items: Iterable[int]) -> int: ...\n" +"result = collect(Bucket()) # Pasa la verificación de tipos" #: ../Doc/library/typing.rst:827 msgid "" @@ -1498,7 +1904,7 @@ msgstr "Definición::" #: ../Doc/library/typing.rst:863 msgid "AnyStr = TypeVar('AnyStr', str, bytes)" -msgstr "" +msgstr "AnyStr = TypeVar('AnyStr', str, bytes)" #: ../Doc/library/typing.rst:865 msgid "" @@ -1526,12 +1932,19 @@ msgid "" "concat(b\"foo\", b\"bar\") # OK, output has type 'bytes'\n" "concat(\"foo\", b\"bar\") # Error, cannot mix str and bytes" msgstr "" +"def concat(a: AnyStr, b: AnyStr) -> AnyStr:\n" +" return a + b\n" +"\n" +"concat(\"foo\", \"bar\") # OK, output tiene tipo 'str'\n" +"concat(b\"foo\", b\"bar\") # OK, output tiene tipo 'bytes'\n" +"concat(\"foo\", b\"bar\") # Error, no se puede mezclar str y bytes" #: ../Doc/library/typing.rst:877 msgid "" -"Note that, despite its name, ``AnyStr`` has nothing to do with the :class:" -"`Any` type, nor does it mean \"any string\". In particular, ``AnyStr`` and " -"``str | bytes`` are different from each other and have different use cases::" +"Note that, despite its name, ``AnyStr`` has nothing to do with " +"the :class:`Any` type, nor does it mean \"any string\". In particular, " +"``AnyStr`` and ``str | bytes`` are different from each other and have " +"different use cases::" msgstr "" "Tenga en cuenta que, a pesar de su nombre, ``AnyStr`` no tiene nada que ver " "con el tipo :class:`Any`, ni significa “cualquier cadena de caracteres”. En " @@ -1550,13 +1963,25 @@ msgid "" "def greet_proper(cond: bool) -> str | bytes:\n" " return \"hi there!\" if cond else b\"greetings!\"" msgstr "" +"# Uso inválido de AnyStr:\n" +"# La variable de tipo se usa solo una vez en la firma de la función,\n" +"# por lo que el verificador de tipos no puede resolverla.\n" +"def greet_bad(cond: bool) -> AnyStr:\n" +" return \"hi there!\" if cond else b\"greetings!\"\n" +"\n" +"# La mejor manera de anotar esta función:\n" +"def greet_proper(cond: bool) -> str | bytes:\n" +" return \"hi there!\" if cond else b\"greetings!\"" #: ../Doc/library/typing.rst:892 msgid "" "Deprecated in favor of the new :ref:`type parameter syntax `. " -"Use ``class A[T: (str, bytes)]: ...`` instead of importing ``AnyStr``. See :" -"pep:`695` for more details." +"Use ``class A[T: (str, bytes)]: ...`` instead of importing ``AnyStr``. " +"See :pep:`695` for more details." msgstr "" +"Obsoleto en favor del nuevo :ref:`type parameter syntax `. " +"Utilice ``class A[T: (str, bytes)]: ...`` en lugar de importar ``AnyStr``. " +"Consulte :pep:`695` para obtener más detalles." #: ../Doc/library/typing.rst:897 msgid "" @@ -1565,6 +1990,10 @@ msgid "" "imported from ``typing``. ``AnyStr`` will be removed from ``typing`` in " "Python 3.18." msgstr "" +"En Python 3.16, ``AnyStr`` se eliminará de ``typing.__all__`` y se emitirán " +"advertencias de desuso en tiempo de ejecución cuando se acceda a él o se " +"importe desde ``typing``. ``AnyStr`` se eliminará de ``typing`` en Python " +"3.18." #: ../Doc/library/typing.rst:904 msgid "Special type that includes only literal strings." @@ -1601,6 +2030,17 @@ msgid "" " f\"SELECT * FROM students WHERE name = {arbitrary_string}\"\n" " )" msgstr "" +"def run_query(sql: LiteralString) -> None:\n" +" ...\n" +"\n" +"def caller(arbitrary_string: str, literal_string: LiteralString) -> None:\n" +" run_query(\"SELECT * FROM students\") # OK\n" +" run_query(literal_string) # OK\n" +" run_query(\"SELECT * FROM \" + literal_string) # OK\n" +" run_query(arbitrary_string) # type checker error\n" +" run_query( # type checker error\n" +" f\"SELECT * FROM students WHERE name = {arbitrary_string}\"\n" +" )" #: ../Doc/library/typing.rst:928 msgid "" @@ -1620,22 +2060,20 @@ msgstr "Véase :pep:`675` para más detalle." # bottom type? #: ../Doc/library/typing.rst:940 -#, fuzzy msgid "" -":data:`!Never` and :data:`!NoReturn` represent the `bottom type `_, a type that has no members." +":data:`!Never` and :data:`!NoReturn` represent the `bottom type `_, a type that has no members." msgstr "" -"El `bottom type `_ (tipo vacío), " -"es un tipo que no tiene miembros." +":data:`!Never` y :data:`!NoReturn` representan `bottom type `_, un tipo que no tiene miembros." -# se añade valor para matizar que la funcion retorna (retorna el control) pero -# no de manera normal. En el ejemplo lanza una excepción. #: ../Doc/library/typing.rst:944 -#, fuzzy msgid "" -"They can be used to indicate that a function never returns, such as :func:" -"`sys.exit`::" -msgstr "Tipo especial que indica que una función nunca retorna un valor." +"They can be used to indicate that a function never returns, such " +"as :func:`sys.exit`::" +msgstr "" +"Se pueden utilizar para indicar que una función nunca retorna, " +"como :func:`sys.exit`::" #: ../Doc/library/typing.rst:947 msgid "" @@ -1644,15 +2082,18 @@ msgid "" "def stop() -> Never:\n" " raise RuntimeError('no way')" msgstr "" +"from typing import Never # o NoReturn\n" +"\n" +"def stop() -> Never:\n" +" raise RuntimeError('no way')" #: ../Doc/library/typing.rst:952 -#, fuzzy msgid "" "Or to define a function that should never be called, as there are no valid " "arguments, such as :func:`assert_never`::" msgstr "" -"Puede ser utilizado para definir una función que nunca debe ser llamada, o " -"una función que nunca retorna::" +"O definir una función que nunca debe llamarse, ya que no hay argumentos " +"válidos, como :func:`assert_never`::" #: ../Doc/library/typing.rst:956 msgid "" @@ -1671,20 +2112,37 @@ msgid "" " case _:\n" " never_call_me(arg) # OK, arg is of type Never (or NoReturn)" msgstr "" +"from typing import Never # o NoReturn\n" +"\n" +"def never_call_me(arg: Never) -> None:\n" +" pass\n" +"\n" +"def int_or_str(arg: int | str) -> None:\n" +" never_call_me(arg) # error del verificador de tipos\n" +" match arg:\n" +" case int():\n" +" print(\"It's an int\")\n" +" case str():\n" +" print(\"It's a str\")\n" +" case _:\n" +" never_call_me(arg) # OK, arg es del tipo Never (o NoReturn)" #: ../Doc/library/typing.rst:971 msgid "" ":data:`!Never` and :data:`!NoReturn` have the same meaning in the type " "system and static type checkers treat both equivalently." msgstr "" +":data:`!Never` y :data:`!NoReturn` tienen el mismo significado en el sistema " +"de tipos y los verificadores de tipos estáticos los tratan a ambos de manera " +"equivalente." #: ../Doc/library/typing.rst:976 msgid "Added :data:`NoReturn`." -msgstr "" +msgstr "Se agregó :data:`NoReturn`." #: ../Doc/library/typing.rst:980 msgid "Added :data:`Never`." -msgstr "" +msgstr "Se agregó :data:`Never`." # ¿cómo se le llama en español a una variable "capturada" en una clausura? #: ../Doc/library/typing.rst:984 @@ -1706,6 +2164,18 @@ msgid "" "reveal_type(SubclassOfFoo().return_self()) # Revealed type is " "\"SubclassOfFoo\"" msgstr "" +"from typing import Self, reveal_type\n" +"\n" +"class Foo:\n" +" def return_self(self) -> Self:\n" +" ...\n" +" return self\n" +"\n" +"class SubclassOfFoo(Foo): pass\n" +"\n" +"reveal_type(Foo().return_self()) # Revealed type is \"Foo\"\n" +"reveal_type(SubclassOfFoo().return_self()) # Tipo revelado es " +"\"SubclassOfFoo\"" #: ../Doc/library/typing.rst:1000 msgid "" @@ -1726,6 +2196,14 @@ msgid "" " ...\n" " return self" msgstr "" +"from typing import TypeVar\n" +"\n" +"Self = TypeVar(\"Self\", bound=\"Foo\")\n" +"\n" +"class Foo:\n" +" def return_self(self: Self) -> Self:\n" +" ...\n" +" return self" #: ../Doc/library/typing.rst:1012 msgid "" @@ -1775,6 +2253,12 @@ msgid "" " def returns_eggs(self) -> \"Eggs\":\n" " return Eggs()" msgstr "" +"class Eggs:\n" +" # Self would be an incorrect return annotation here,\n" +" # as the object returned is always an instance of Eggs,\n" +" # even in subclasses\n" +" def returns_eggs(self) -> \"Eggs\":\n" +" return Eggs()" #: ../Doc/library/typing.rst:1035 msgid "See :pep:`673` for more details." @@ -1794,6 +2278,9 @@ msgid "" "\n" "Factors: TypeAlias = list[int]" msgstr "" +"from typing import TypeAlias\n" +"\n" +"Factors: TypeAlias = list[int]" #: ../Doc/library/typing.rst:1049 msgid "" @@ -1823,6 +2310,21 @@ msgid "" " @classmethod\n" " def make_box_of_strings(cls) -> BoxOfStrings: ..." msgstr "" +"from typing import Generic, TypeAlias, TypeVar\n" +"\n" +"T = TypeVar(\"T\")\n" +"\n" +"# \"Box\" aún no existe,\n" +"# entonces tenemos que usar comillas para la referencia adelantada en Python " +"<3.12.\n" +"# Usando ``TypeAlias`` le dice al verificador de tipos que es una " +"declaración de tipo alias,\n" +"# no una asignacin de variable a un string.\n" +"BoxOfStrings: TypeAlias = \"Box[str]\"\n" +"\n" +"class Box(Generic[T]):\n" +" @classmethod\n" +" def make_box_of_strings(cls) -> BoxOfStrings: ..." #: ../Doc/library/typing.rst:1069 msgid "See :pep:`613` for more details." @@ -1832,19 +2334,20 @@ msgstr "Ver :pep:`613` para más detalle." msgid "" ":data:`TypeAlias` is deprecated in favor of the :keyword:`type` statement, " "which creates instances of :class:`TypeAliasType` and which natively " -"supports forward references. Note that while :data:`TypeAlias` and :class:" -"`TypeAliasType` serve similar purposes and have similar names, they are " -"distinct and the latter is not the type of the former. Removal of :data:" -"`TypeAlias` is not currently planned, but users are encouraged to migrate " -"to :keyword:`type` statements." -msgstr "" -":data:`TypeAlias` ha sido descontinuado en favor de la declaración :keyword:" -"`type`, la cual crea instancias de :class:`TypeAliasType` y que admite de " -"forma nativa referencias de versiones posteriores de Python. Tenga en cuenta " -"que, si bien :data:`TypeAlias` y :class:`TypeAliasType` tienen propósitos " -"similares y tienen nombres similares, son distintos y el último no es el " -"tipo del primero. La eliminación de :data:`TypeAlias` no está prevista " -"actualmente, pero se recomienda a los usuarios que migren a las " +"supports forward references. Note that while :data:`TypeAlias` " +"and :class:`TypeAliasType` serve similar purposes and have similar names, " +"they are distinct and the latter is not the type of the former. Removal " +"of :data:`TypeAlias` is not currently planned, but users are encouraged to " +"migrate to :keyword:`type` statements." +msgstr "" +":data:`TypeAlias` ha sido descontinuado en favor de la " +"declaración :keyword:`type`, la cual crea instancias " +"de :class:`TypeAliasType` y que admite de forma nativa referencias de " +"versiones posteriores de Python. Tenga en cuenta que, si " +"bien :data:`TypeAlias` y :class:`TypeAliasType` tienen propósitos similares " +"y tienen nombres similares, son distintos y el último no es el tipo del " +"primero. La eliminación de :data:`TypeAlias` no está prevista actualmente, " +"pero se recomienda a los usuarios que migren a las " "declaraciones :keyword:`type`." #: ../Doc/library/typing.rst:1084 @@ -1884,7 +2387,7 @@ msgstr "Las uniones de uniones se simplifican (se aplanan), p. ej.::" #: ../Doc/library/typing.rst:1099 msgid "Union[Union[int, str], float] == Union[int, str, float]" -msgstr "" +msgstr "Union[Union[int, str], float] == Union[int, str, float]" #: ../Doc/library/typing.rst:1101 msgid "Unions of a single argument vanish, e.g.::" @@ -1892,7 +2395,7 @@ msgstr "Las uniones con un solo argumento se eliminan, p. ej.::" #: ../Doc/library/typing.rst:1103 msgid "Union[int] == int # The constructor actually returns int" -msgstr "" +msgstr "Union[int] == int # El constructor de hecho retorna int" #: ../Doc/library/typing.rst:1105 msgid "Redundant arguments are skipped, e.g.::" @@ -1900,7 +2403,7 @@ msgstr "Argumentos repetidos se omiten, p. ej.::" #: ../Doc/library/typing.rst:1107 msgid "Union[int, str, int] == Union[int, str] == int | str" -msgstr "" +msgstr "Union[int, str, int] == Union[int, str] == int | str" #: ../Doc/library/typing.rst:1109 msgid "When comparing unions, the argument order is ignored, e.g.::" @@ -1909,7 +2412,7 @@ msgstr "" #: ../Doc/library/typing.rst:1111 msgid "Union[int, str] == Union[str, int]" -msgstr "" +msgstr "Union[int, str] == Union[str, int]" #: ../Doc/library/typing.rst:1113 msgid "You cannot subclass or instantiate a ``Union``." @@ -1952,6 +2455,8 @@ msgid "" "def foo(arg: int = 0) -> None:\n" " ..." msgstr "" +"def foo(arg: int = 0) -> None:\n" +" ..." #: ../Doc/library/typing.rst:1136 msgid "" @@ -1967,6 +2472,8 @@ msgid "" "def foo(arg: Optional[int] = None) -> None:\n" " ..." msgstr "" +"def foo(arg: Optional[int] = None) -> None:\n" +" ..." #: ../Doc/library/typing.rst:1143 msgid "" @@ -1996,26 +2503,26 @@ msgstr "" "invocable. El uso se realiza en el formato ``Concatenate[Arg1Type, " "Arg2Type, ..., ParamSpecVariable]``. ``Concatenate`` actualmente solo es " "válido cuando se utiliza como primer argumento de un :ref:`Callable " -"`. El último parámetro de ``Concatenate`` debe ser un :" -"class:`ParamSpec` o elipsis." +"`. El último parámetro de ``Concatenate`` debe ser " +"un :class:`ParamSpec` o elipsis." #: ../Doc/library/typing.rst:1160 msgid "" -"For example, to annotate a decorator ``with_lock`` which provides a :class:" -"`threading.Lock` to the decorated function, ``Concatenate`` can be used to " -"indicate that ``with_lock`` expects a callable which takes in a ``Lock`` as " -"the first argument, and returns a callable with a different type signature. " -"In this case, the :class:`ParamSpec` indicates that the returned callable's " -"parameter types are dependent on the parameter types of the callable being " -"passed in::" -msgstr "" -"Por ejemplo, para anotar un decorador ``with_lock`` que proporciona un :" -"class:`threading.Lock` a la función decorada, ``Concatenate`` puede usarse " -"para indicar que ``with_lock`` espera un invocable que toma un ``Lock`` como " -"primer argumento y retorna un invocable con un tipo de firma diferente. En " -"este caso, el :class:`ParamSpec` indica que los tipos de parámetros de los " -"invocables retornados dependen de los tipos de parámetros de los invocables " -"que se pasan en ::" +"For example, to annotate a decorator ``with_lock`` which provides " +"a :class:`threading.Lock` to the decorated function, ``Concatenate`` can be " +"used to indicate that ``with_lock`` expects a callable which takes in a " +"``Lock`` as the first argument, and returns a callable with a different type " +"signature. In this case, the :class:`ParamSpec` indicates that the returned " +"callable's parameter types are dependent on the parameter types of the " +"callable being passed in::" +msgstr "" +"Por ejemplo, para anotar un decorador ``with_lock`` que proporciona " +"un :class:`threading.Lock` a la función decorada, ``Concatenate`` puede " +"usarse para indicar que ``with_lock`` espera un invocable que toma un " +"``Lock`` como primer argumento y retorna un invocable con un tipo de firma " +"diferente. En este caso, el :class:`ParamSpec` indica que los tipos de " +"parámetros de los invocables retornados dependen de los tipos de parámetros " +"de los invocables que se pasan en ::" #: ../Doc/library/typing.rst:1168 msgid "" @@ -2044,6 +2551,32 @@ msgid "" "# We don't need to pass in the lock ourselves thanks to the decorator.\n" "sum_threadsafe([1.1, 2.2, 3.3])" msgstr "" +"from collections.abc import Callable\n" +"from threading import Lock\n" +"from typing import Concatenate\n" +"\n" +"# Utilice este bloqueo para garantizar que solo un hilo esté ejecutando una " +"función\n" +"# en cualquier momento.\n" +"my_lock = Lock()\n" +"\n" +"def with_lock[**P, R](f: Callable[Concatenate[Lock, P], R]) -> Callable[P, " +"R]:\n" +" '''A type-safe decorator which provides a lock.'''\n" +" def inner(*args: P.args, **kwargs: P.kwargs) -> R:\n" +" # Proporcione el bloqueo como primer argumento.\n" +" return f(my_lock, *args, **kwargs)\n" +" return inner\n" +"\n" +"@with_lock\n" +"def sum_threadsafe(lock: Lock, numbers: list[float]) -> float:\n" +" '''Add a list of numbers together in a thread-safe manner.'''\n" +" with lock:\n" +" return sum(numbers)\n" +"\n" +"# No necesitamos pasar por la cerradura nosotros mismos gracias al " +"decorador.\n" +"sum_threadsafe([1.1, 2.2, 3.3])" #: ../Doc/library/typing.rst:1196 ../Doc/library/typing.rst:2127 msgid "" @@ -2086,6 +2619,15 @@ msgid "" "open_helper('/some/path', 'r') # Passes type check\n" "open_helper('/other/path', 'typo') # Error in type checker" msgstr "" +"def validate_simple(data: Any) -> Literal[True]: # siempre retorna True\n" +" ...\n" +"\n" +"type Mode = Literal['r', 'rb', 'w', 'wb']\n" +"def open_helper(file: str, mode: Mode) -> str:\n" +" ...\n" +"\n" +"open_helper('/some/path', 'r') # Pasa el verificador de tipos\n" +"open_helper('/other/path', 'typo') # Error en el verificador de tipos" #: ../Doc/library/typing.rst:1221 msgid "" @@ -2132,6 +2674,9 @@ msgid "" " stats: ClassVar[dict[str, int]] = {} # class variable\n" " damage: int = 10 # instance variable" msgstr "" +"class Starship:\n" +" stats: ClassVar[dict[str, int]] = {} # variable de clase\n" +" damage: int = 10 # variable de instancia" # subscribed se substituye por niveles de subindice #: ../Doc/library/typing.rst:1245 @@ -2141,13 +2686,14 @@ msgstr "" #: ../Doc/library/typing.rst:1247 msgid "" -":data:`ClassVar` is not a class itself, and should not be used with :func:" -"`isinstance` or :func:`issubclass`. :data:`ClassVar` does not change Python " -"runtime behavior, but it can be used by third-party type checkers. For " -"example, a type checker might flag the following code as an error::" +":data:`ClassVar` is not a class itself, and should not be used " +"with :func:`isinstance` or :func:`issubclass`. :data:`ClassVar` does not " +"change Python runtime behavior, but it can be used by third-party type " +"checkers. For example, a type checker might flag the following code as an " +"error::" msgstr "" -":data:`ClassVar` no es un clase en sí misma, y no debe ser usado con :func:" -"`isinstance` o :func:`issubclass`. :data:`ClassVar` no modifica el " +":data:`ClassVar` no es un clase en sí misma, y no debe ser usado " +"con :func:`isinstance` o :func:`issubclass`. :data:`ClassVar` no modifica el " "comportamiento de Python en tiempo de ejecución pero puede ser utilizado por " "validadores de terceros. Por ejemplo, un validador de tipos puede marcar el " "siguiente código como erróneo::" @@ -2158,10 +2704,14 @@ msgid "" "enterprise_d.stats = {} # Error, setting class variable on instance\n" "Starship.stats = {} # This is OK" msgstr "" +"enterprise_d = Starship(3000)\n" +"enterprise_d.stats = {} # Error, establece variable de clase en la " +"instancia\n" +"Starship.stats = {} # Ésto está OK" #: ../Doc/library/typing.rst:1261 msgid ":data:`ClassVar` can now be nested in :data:`Final` and vice versa." -msgstr "" +msgstr "Ahora :data:`ClassVar` se puede anidar en :data:`Final` y viceversa." #: ../Doc/library/typing.rst:1265 msgid "Special typing construct to indicate final names to type checkers." @@ -2188,18 +2738,26 @@ msgid "" "class FastConnector(Connection):\n" " TIMEOUT = 1 # Error reported by type checker" msgstr "" +"MAX_SIZE: Final = 9000\n" +"MAX_SIZE += 1 # Error reportado por un verificador de tipos\n" +"\n" +"class Connection:\n" +" TIMEOUT: Final[int] = 10\n" +"\n" +"class FastConnector(Connection):\n" +" TIMEOUT = 1 # Error reportado por un verificador de tipos" #: ../Doc/library/typing.rst:1281 ../Doc/library/typing.rst:3081 msgid "" "There is no runtime checking of these properties. See :pep:`591` for more " "details." msgstr "" -"No hay comprobación en tiempo de ejecución para estas propiedades. Véase :" -"pep:`591` para más detalles." +"No hay comprobación en tiempo de ejecución para estas propiedades. " +"Véase :pep:`591` para más detalles." #: ../Doc/library/typing.rst:1288 msgid ":data:`Final` can now be nested in :data:`ClassVar` and vice versa." -msgstr "" +msgstr "Ahora :data:`Final` se puede anidar en :data:`ClassVar` y viceversa." #: ../Doc/library/typing.rst:1292 msgid "Special typing construct to mark a :class:`TypedDict` key as required." @@ -2212,8 +2770,8 @@ msgid "" "This is mainly useful for ``total=False`` TypedDicts. See :class:`TypedDict` " "and :pep:`655` for more details." msgstr "" -"Esto es útil principalmente para TypedDicts ``total=False``. Vea :class:" -"`TypedDict` y :pep:`655` para obtener más detalles." +"Esto es útil principalmente para TypedDicts ``total=False``. " +"Vea :class:`TypedDict` y :pep:`655` para obtener más detalles." #: ../Doc/library/typing.rst:1301 msgid "" @@ -2228,13 +2786,12 @@ msgid "See :class:`TypedDict` and :pep:`655` for more details." msgstr "Véase :class:`TypedDict` y :pep:`655` para más detalle." #: ../Doc/library/typing.rst:1310 -#, fuzzy msgid "" "A special typing construct to mark an item of a :class:`TypedDict` as read-" "only." msgstr "" -"Construcción de tipado especial para marcar una clave :class:`TypedDict` " -"como requerida." +"Una construcción de tipificación especial para marcar un elemento de " +"un :class:`TypedDict` como de solo lectura." #: ../Doc/library/typing.rst:1314 msgid "" @@ -2246,16 +2803,22 @@ msgid "" " m[\"year\"] = 1999 # allowed\n" " m[\"title\"] = \"The Matrix\" # typechecker error" msgstr "" +"class Movie(TypedDict):\n" +" title: ReadOnly[str]\n" +" year: int\n" +"\n" +"def mutate_movie(m: Movie) -> None:\n" +" m[\"year\"] = 1999 # allowed\n" +" m[\"title\"] = \"The Matrix\" # error del verificador de tipos" #: ../Doc/library/typing.rst:1322 -#, fuzzy msgid "There is no runtime checking for this property." -msgstr "No hay ninguna comprobación en tiempo de ejecución de esta propiedad." +msgstr "" +"No hay ninguna comprobación en tiempo de ejecución para esta propiedad." #: ../Doc/library/typing.rst:1324 -#, fuzzy msgid "See :class:`TypedDict` and :pep:`705` for more details." -msgstr "Véase :class:`TypedDict` y :pep:`655` para más detalle." +msgstr "Vea :class:`TypedDict` y :pep:`705` para más detalle." #: ../Doc/library/typing.rst:1330 msgid "Special typing form to add context-specific metadata to an annotation." @@ -2307,18 +2870,17 @@ msgstr "" "deshabilita por completo la verificación de tipos para una función o clase." #: ../Doc/library/typing.rst:1350 -#, fuzzy msgid "" "The responsibility of how to interpret the metadata lies with the tool or " "library encountering an ``Annotated`` annotation. A tool or library " "encountering an ``Annotated`` type can scan through the metadata elements to " "determine if they are of interest (e.g., using :func:`isinstance`)." msgstr "" -"La responsabilidad de cómo interpretar los metadatos recae en la herramienta " -"o biblioteca que encuentre la anotación ``Annotated``. Una herramienta o " +"La responsabilidad de interpretar los metadatos recae en la herramienta o " +"biblioteca que encuentra una anotación ``Annotated``. Una herramienta o " "biblioteca que encuentra un tipo ``Annotated`` puede examinar los elementos " -"de metadatos para determinar si son de interés (por ejemplo, utilizando :" -"func:`isinstance`)." +"de metadatos para determinar si son de interés (por ejemplo, " +"utilizando :func:`isinstance`)." #: ../Doc/library/typing.rst:1358 msgid "" @@ -2339,6 +2901,13 @@ msgid "" "T1 = Annotated[int, ValueRange(-10, 5)]\n" "T2 = Annotated[T1, ValueRange(-20, 3)]" msgstr "" +"@dataclass\n" +"class ValueRange:\n" +" lo: int\n" +" hi: int\n" +"\n" +"T1 = Annotated[int, ValueRange(-10, 5)]\n" +"T2 = Annotated[T1, ValueRange(-20, 3)]" #: ../Doc/library/typing.rst:1371 msgid "Details of the syntax:" @@ -2364,6 +2933,11 @@ msgid "" "\n" "Annotated[int, ValueRange(3, 10), ctype(\"char\")]" msgstr "" +"@dataclass\n" +"class ctype:\n" +" kind: str\n" +"\n" +"Annotated[int, ValueRange(3, 10), ctype(\"char\")]" #: ../Doc/library/typing.rst:1384 msgid "" @@ -2397,6 +2971,9 @@ msgid "" " int, ctype(\"char\"), ValueRange(3, 10)\n" "]" msgstr "" +"assert Annotated[int, ValueRange(3, 10), ctype(\"char\")] != Annotated[\n" +" int, ctype(\"char\"), ValueRange(3, 10)\n" +"]" #: ../Doc/library/typing.rst:1398 msgid "" @@ -2413,6 +2990,10 @@ msgid "" " int, ValueRange(3, 10), ctype(\"char\")\n" "]" msgstr "" +"assert Annotated[Annotated[int, ValueRange(3, 10)], ctype(\"char\")] == " +"Annotated[\n" +" int, ValueRange(3, 10), ctype(\"char\")\n" +"]" #: ../Doc/library/typing.rst:1405 msgid "Duplicated metadata elements are not removed::" @@ -2424,6 +3005,9 @@ msgid "" " int, ValueRange(3, 10), ValueRange(3, 10)\n" "]" msgstr "" +"assert Annotated[int, ValueRange(3, 10)] != Annotated[\n" +" int, ValueRange(3, 10), ValueRange(3, 10)\n" +"]" #: ../Doc/library/typing.rst:1411 msgid "``Annotated`` can be used with nested and generic aliases:" @@ -2442,6 +3026,16 @@ msgid "" "# ``Annotated[list[tuple[int, int]], MaxLen(10)]``:\n" "type V = Vec[int]" msgstr "" +"@dataclass\n" +"class MaxLen:\n" +" value: int\n" +"\n" +"type Vec[T] = Annotated[list[tuple[T, T]], MaxLen(10)]\n" +"\n" +"# Cuando se utiliza en una anotación de tipo, un verificador de tipo tratará " +"\"V\" de la misma manera que\n" +"# ``Annotated[list[tuple[int, int]], MaxLen(10)]``:\n" +"type V = Vec[int]" #: ../Doc/library/typing.rst:1425 msgid "``Annotated`` cannot be used with an unpacked :class:`TypeVarTuple`::" @@ -2450,8 +3044,8 @@ msgstr "" "descomprimido::" #: ../Doc/library/typing.rst:1427 -msgid "type Variadic[*Ts] = Annotated[*Ts, Ann1] # NOT valid" -msgstr "" +msgid "type Variadic[\*Ts] = Annotated[\*Ts, Ann1] # NOT valid" +msgstr "type Variadic[\*Ts] = Annotated[\*Ts, Ann1] # NO válido" #: ../Doc/library/typing.rst:1429 msgid "This would be equivalent to::" @@ -2459,7 +3053,7 @@ msgstr "Esto sería equivalente a:" #: ../Doc/library/typing.rst:1431 msgid "Annotated[T1, T2, T3, ..., Ann1]" -msgstr "" +msgstr "Annotated[T1, T2, T3, ..., Ann1]" #: ../Doc/library/typing.rst:1433 msgid "" @@ -2487,6 +3081,13 @@ msgid "" ">>> get_type_hints(func, include_extras=True)\n" "{'x': typing.Annotated[int, 'metadata'], 'return': }" msgstr "" +">>> from typing import Annotated, get_type_hints\n" +">>> def func(x: Annotated[int, \"metadata\"]) -> None: pass\n" +"...\n" +">>> get_type_hints(func)\n" +"{'x': , 'return': }\n" +">>> get_type_hints(func, include_extras=True)\n" +"{'x': typing.Annotated[int, 'metadata'], 'return': }" #: ../Doc/library/typing.rst:1449 msgid "" @@ -2505,12 +3106,20 @@ msgid "" ">>> X.__metadata__\n" "('very', 'important', 'metadata')" msgstr "" +">>> from typing import Annotated\n" +">>> X = Annotated[int, \"very\", \"important\", \"metadata\"]\n" +">>> X\n" +"typing.Annotated[int, 'very', 'important', 'metadata']\n" +">>> X.__metadata__\n" +"('very', 'important', 'metadata')" #: ../Doc/library/typing.rst:1461 msgid "" "At runtime, if you want to retrieve the original type wrapped by " "``Annotated``, use the :attr:`!__origin__` attribute:" msgstr "" +"En tiempo de ejecución, si desea recuperar el tipo original envuelto por " +"``Annotated``, utilice el atributo :attr:`!__origin__`:" #: ../Doc/library/typing.rst:1464 msgid "" @@ -2519,16 +3128,24 @@ msgid "" ">>> Password.__origin__\n" "" msgstr "" +">>> from typing import Annotated, get_origin\n" +">>> Password = Annotated[str, \"secret\"]\n" +">>> Password.__origin__\n" +"" #: ../Doc/library/typing.rst:1471 msgid "Note that using :func:`get_origin` will return ``Annotated`` itself:" msgstr "" +"Tenga en cuenta que el uso de :func:`get_origin` devolverá el mismo " +"``Annotated``:" #: ../Doc/library/typing.rst:1473 msgid "" ">>> get_origin(Password)\n" "typing.Annotated" msgstr "" +">>> get_origin(Password)\n" +"typing.Annotated" #: ../Doc/library/typing.rst:1480 msgid ":pep:`593` - Flexible function and variable annotations" @@ -2539,28 +3156,26 @@ msgid "The PEP introducing ``Annotated`` to the standard library." msgstr "El PEP introduce ``Annotated`` en la biblioteca estándar." #: ../Doc/library/typing.rst:1488 ../Doc/library/typing.rst:1572 -#, fuzzy msgid "" "Special typing construct for marking user-defined type predicate functions." msgstr "" -"Construcción de tipado especial para marcar funciones de protección de tipo " -"definidas por el usuario." +"Construcción de tipificación especial para marcar funciones de predicado de " +"tipo definido por el usuario." #: ../Doc/library/typing.rst:1490 -#, fuzzy msgid "" "``TypeIs`` can be used to annotate the return type of a user-defined type " "predicate function. ``TypeIs`` only accepts a single type argument. At " "runtime, functions marked this way should return a boolean and take at least " "one positional argument." msgstr "" -"``TypeGuard`` se puede utilizar para anotar el tipo de retorno de una " -"función de protección de tipo definida por el usuario. ``TypeGuard`` solo " -"acepta un único argumento de tipo. En tiempo de ejecución, las funciones " -"marcadas de esta manera deben devolver un valor booleano." +"``TypeIs`` se puede utilizar para anotar el tipo de retorno de una función " +"de predicado de tipo definida por el usuario. ``TypeIs`` solo acepta un " +"único argumento de tipo. En tiempo de ejecución, las funciones marcadas de " +"esta manera deben devolver un valor booleano y tomar al menos un argumento " +"posicional." #: ../Doc/library/typing.rst:1495 -#, fuzzy msgid "" "``TypeIs`` aims to benefit *type narrowing* -- a technique used by static " "type checkers to determine a more precise type of an expression within a " @@ -2569,12 +3184,12 @@ msgid "" "conditional expression here is sometimes referred to as a \"type " "predicate\"::" msgstr "" -"``TypeGuard`` tiene como objetivo beneficiar a *type narrowing*, una técnica " -"utilizada por los validadores de tipo estático para determinar un tipo más " -"preciso de una expresión dentro del flujo de código de un programa. Por lo " -"general, el estrechamiento de tipos se realiza analizando el flujo de código " -"condicional y aplicando el estrechamiento a un bloque de código. La " -"expresión condicional aquí a veces se denomina \"protección de tipo\":" +"``TypeIs`` tiene como objetivo beneficiar a *type narrowing*, una técnica " +"utilizada por los verificadores de tipos estáticos para determinar un tipo " +"más preciso de una expresión dentro del flujo de código de un programa. Por " +"lo general, la restricción de tipos se realiza analizando el flujo de código " +"condicional y aplicando la restricción a un bloque de código. La expresión " +"condicional aquí a veces se denomina \"predicado de tipo\":" #: ../Doc/library/typing.rst:1501 msgid "" @@ -2587,48 +3202,61 @@ msgid "" " # Else, type of ``val`` is narrowed to ``float``.\n" " ..." msgstr "" +"def is_str(val: str | float):\n" +" # \"isinstance\" predicado de tipo\n" +" if isinstance(val, str):\n" +" # Tipo de ``val`` se reduce a ``str``\n" +" ...\n" +" else:\n" +" # De lo contrario, el tipo de ``val`` se limita a ``float``.\n" +" ..." #: ../Doc/library/typing.rst:1510 msgid "" "Sometimes it would be convenient to use a user-defined boolean function as a " -"type predicate. Such a function should use ``TypeIs[...]`` or :data:" -"`TypeGuard` as its return type to alert static type checkers to this " -"intention. ``TypeIs`` usually has more intuitive behavior than " +"type predicate. Such a function should use ``TypeIs[...]`` " +"or :data:`TypeGuard` as its return type to alert static type checkers to " +"this intention. ``TypeIs`` usually has more intuitive behavior than " "``TypeGuard``, but it cannot be used when the input and output types are " "incompatible (e.g., ``list[object]`` to ``list[int]``) or when the function " "does not return ``True`` for all instances of the narrowed type." msgstr "" +"A veces sería conveniente utilizar una función booleana definida por el " +"usuario como predicado de tipo. Dicha función debería utilizar " +"``TypeIs[...]`` o :data:`TypeGuard` como su tipo de retorno para alertar a " +"los verificadores de tipos estáticos sobre esta intención. ``TypeIs`` suele " +"tener un comportamiento más intuitivo que ``TypeGuard``, pero no se puede " +"utilizar cuando los tipos de entrada y salida son incompatibles (por " +"ejemplo, ``list[object]`` a ``list[int]``) o cuando la función no devuelve " +"``True`` para todas las instancias del tipo restringido." #: ../Doc/library/typing.rst:1518 -#, fuzzy msgid "" "Using ``-> TypeIs[NarrowedType]`` tells the static type checker that for a " "given function:" msgstr "" -"El uso de ``-> TypeGuard`` le dice al validador de tipo estático que para " -"una función determinada:" +"El uso de ``-> TypeIs[NarrowedType]`` le indica al verificador de tipo " +"estático que para una función determinada:" #: ../Doc/library/typing.rst:1521 ../Doc/library/typing.rst:1582 msgid "The return value is a boolean." msgstr "El valor de retorno es un booleano." #: ../Doc/library/typing.rst:1522 -#, fuzzy msgid "" "If the return value is ``True``, the type of its argument is the " "intersection of the argument's original type and ``NarrowedType``." msgstr "" -"Si el valor de retorno es ``True``, el tipo de su argumento es el tipo " -"dentro de ``TypeGuard``." +"Si el valor de retorno es ``True``, el tipo de su argumento es la " +"intersección del tipo original del argumento y ``NarrowedType``." #: ../Doc/library/typing.rst:1524 -#, fuzzy msgid "" "If the return value is ``False``, the type of its argument is narrowed to " "exclude ``NarrowedType``." msgstr "" -"Si el valor de retorno es ``True``, el tipo de su argumento es el tipo " -"dentro de ``TypeGuard``." +"Si el valor de retorno es ``False``, el tipo de su argumento se limita para " +"excluir ``NarrowedType``." #: ../Doc/library/typing.rst:1529 msgid "" @@ -2653,6 +3281,26 @@ msgid "" " # so only ``Unrelated`` is left.\n" " assert_type(arg, Unrelated)" msgstr "" +"from typing import assert_type, final, TypeIs\n" +"\n" +"class Parent: pass\n" +"class Child(Parent): pass\n" +"@final\n" +"class Unrelated: pass\n" +"\n" +"def is_parent(val: object) -> TypeIs[Parent]:\n" +" return isinstance(val, Parent)\n" +"\n" +"def run(arg: Child | Unrelated):\n" +" if is_parent(arg):\n" +" # El tipo de ``arg`` es reducido a la intersección\n" +" # de ``Parent`` y ``Child``, lo cual es equivalente a\n" +" # ``Child``.\n" +" assert_type(arg, Child)\n" +" else:\n" +" # El tipo de ``arg`` es reducido para excluir ``Parent``,\n" +" # para que solo quede ``Unrelated``.\n" +" assert_type(arg, Unrelated)" #: ../Doc/library/typing.rst:1550 msgid "" @@ -2662,37 +3310,40 @@ msgid "" "behavior in the type system; it is the user's responsibility to write such " "functions in a type-safe manner." msgstr "" +"El tipo dentro de ``TypeIs`` debe ser coherente con el tipo del argumento de " +"la función; si no lo es, los comprobadores de tipos estáticos generarán un " +"error. Una función ``TypeIs`` escrita incorrectamente puede provocar un " +"comportamiento incorrecto en el sistema de tipos; es responsabilidad del " +"usuario escribir dichas funciones de manera segura." #: ../Doc/library/typing.rst:1556 -#, fuzzy msgid "" "If a ``TypeIs`` function is a class or instance method, then the type in " "``TypeIs`` maps to the type of the second parameter (after ``cls`` or " "``self``)." msgstr "" -"Si ``is_str_list`` es un método de clase o instancia, entonces el tipo en " -"``TypeGuard`` se asigna al tipo del segundo parámetro después de ``cls`` o " -"``self``." +"Si una función ``TypeIs`` es un método de clase o instancia, entonces el " +"tipo en ``TypeIs`` se asigna al tipo del segundo parámetro (después de " +"``cls`` o ``self``)." #: ../Doc/library/typing.rst:1560 -#, fuzzy msgid "" "In short, the form ``def foo(arg: TypeA) -> TypeIs[TypeB]: ...``, means that " "if ``foo(arg)`` returns ``True``, then ``arg`` is an instance of ``TypeB``, " "and if it returns ``False``, it is not an instance of ``TypeB``." msgstr "" -"En resumen, la forma ``def foo(arg: TypeA) -> TypeGuard[TypeB]: ...`` " -"significa que si ``foo(arg)`` retorna ``True``, entonces ``arg`` se estrecha " -"de ``TypeA`` a ``TypeB``." +"En resumen, la forma ``def foo(arg: TypeA) -> TypeIs[TypeB]: ...``, " +"significa que si ``foo(arg)`` devuelve ``True``, entonces ``arg`` es una " +"instancia de ``TypeB``, y si devuelve ``False``, no es una instancia de " +"``TypeB``." #: ../Doc/library/typing.rst:1564 -#, fuzzy msgid "" -"``TypeIs`` also works with type variables. For more information, see :pep:" -"`742` (Narrowing types with ``TypeIs``)." +"``TypeIs`` also works with type variables. For more information, " +"see :pep:`742` (Narrowing types with ``TypeIs``)." msgstr "" -"``TypeGuard`` también funciona con variables de tipo. Véase :pep:`647` para " -"más detalles." +"``TypeIs`` también funciona con variables de tipo. Para obtener más " +"información, consulte :pep:`742` (Restringir tipos con ``TypeIs``)." #: ../Doc/library/typing.rst:1574 msgid "" @@ -2701,6 +3352,11 @@ msgid "" "similarly to :data:`TypeIs`, but has subtly different effects on type " "checking behavior (see below)." msgstr "" +"Las funciones de predicado de tipo son funciones definidas por el usuario " +"que indican si su argumento es una instancia de un tipo en particular. " +"``TypeGuard`` funciona de manera similar a :data:`TypeIs`, pero tiene " +"efectos ligeramente diferentes en el comportamiento de verificación de tipo " +"(ver a continuación)." #: ../Doc/library/typing.rst:1579 msgid "" @@ -2740,24 +3396,33 @@ msgid "" " # Type of ``val`` remains as ``list[object]``.\n" " print(\"Not a list of strings!\")" msgstr "" +"def is_str_list(val: list[object]) -> TypeGuard[list[str]]:\n" +" '''Determines whether all objects in the list are strings'''\n" +" return all(isinstance(x, str) for x in val)\n" +"\n" +"def func1(val: list[object]):\n" +" if is_str_list(val):\n" +" # El tipo de ``val`` es reducido a ``list[str]``.\n" +" print(\" \".join(val))\n" +" else:\n" +" # El tipo de ``val`` se mantiene como ``list[object]``.\n" +" print(\"Not a list of strings!\")" #: ../Doc/library/typing.rst:1602 msgid "``TypeIs`` and ``TypeGuard`` differ in the following ways:" -msgstr "" +msgstr "``TypeIs`` y ``TypeGuard`` se diferencian en los siguientes aspectos:" #: ../Doc/library/typing.rst:1604 -#, fuzzy msgid "" "``TypeIs`` requires the narrowed type to be a subtype of the input type, " "while ``TypeGuard`` does not. The main reason is to allow for things like " "narrowing ``list[object]`` to ``list[str]`` even though the latter is not a " "subtype of the former, since ``list`` is invariant." msgstr "" -"No es necesario que ``TypeB`` sea una forma más estrecha de ``TypeA``; " -"incluso puede ser una forma más amplia. La razón principal es permitir cosas " -"como reducir ``List[object]`` a ``List[str]`` aunque este último no sea un " -"subtipo del primero, ya que ``List`` es invariante. La responsabilidad de " -"escribir protecciones de tipo seguras se deja al usuario." +"``TypeIs`` requiere que el tipo restringido sea un subtipo del tipo de " +"entrada, mientras que ``TypeGuard`` no lo requiere. La razón principal es " +"permitir cosas como restringir ``list[object]`` a ``list[str]``, aunque este " +"último no sea un subtipo del primero, ya que ``list`` es invariante." #: ../Doc/library/typing.rst:1608 msgid "" @@ -2767,6 +3432,12 @@ msgid "" "combining the previously known type of the variable with the ``TypeIs`` " "type. (Technically, this is known as an intersection type.)" msgstr "" +"Cuando una función ``TypeGuard`` devuelve ``True``, los verificadores de " +"tipo limitan el tipo de la variable exactamente al tipo ``TypeGuard``. " +"Cuando una función ``TypeIs`` devuelve ``True``, los verificadores de tipo " +"pueden inferir un tipo más preciso combinando el tipo conocido previamente " +"de la variable con el tipo ``TypeIs``. (Técnicamente, esto se conoce como un " +"tipo de intersección)." #: ../Doc/library/typing.rst:1612 msgid "" @@ -2775,6 +3446,10 @@ msgid "" "``False``, type checkers can narrow the type of the variable to exclude the " "``TypeIs`` type." msgstr "" +"Cuando una función ``TypeGuard`` devuelve ``False``, los verificadores de " +"tipo no pueden limitar el tipo de la variable en absoluto. Cuando una " +"función ``TypeIs`` devuelve ``False``, los verificadores de tipo pueden " +"limitar el tipo de la variable para excluir el tipo ``TypeIs``." #: ../Doc/library/typing.rst:1621 msgid "Typing operator to conceptually mark an object as having been unpacked." @@ -2783,15 +3458,14 @@ msgstr "" "desempaquetado." #: ../Doc/library/typing.rst:1623 -#, fuzzy msgid "" "For example, using the unpack operator ``*`` on a :ref:`type variable tuple " "` is equivalent to using ``Unpack`` to mark the type variable " "tuple as having been unpacked::" msgstr "" -"Por ejemplo, usar el operador de desempaquetamiento ``*`` en una :class:" -"`tupla de variable de tipo ` es equivalente a usar ``Unpack`` " -"para marcar la tupla de variable de tipo como desempaquetada::" +"Por ejemplo, usar el operador de descompresión ``*`` en un :ref:`type " +"variable tuple ` es equivalente a usar ``Unpack`` para marcar " +"la tupla de variable de tipo como descomprimida:" #: ../Doc/library/typing.rst:1627 msgid "" @@ -2800,6 +3474,10 @@ msgid "" "# Effectively does:\n" "tup: tuple[Unpack[Ts]]" msgstr "" +"Ts = TypeVarTuple('Ts')\n" +"tup: tuple[*Ts]\n" +"# Effectively does:\n" +"tup: tuple[Unpack[Ts]]" #: ../Doc/library/typing.rst:1632 msgid "" @@ -2809,10 +3487,10 @@ msgid "" "versions of Python, where ``*`` couldn't be used in certain places::" msgstr "" "De hecho, ``Unpack`` se puede usar indistintamente con ``*`` en el contexto " -"de los tipos :class:`typing.TypeVarTuple ` y :class:`builtins." -"tuple `. Es posible que veas que ``Unpack`` se usa explícitamente en " -"versiones anteriores de Python, donde ``*`` no se podía usar en ciertos " -"lugares::" +"de los tipos :class:`typing.TypeVarTuple ` " +"y :class:`builtins.tuple `. Es posible que veas que ``Unpack`` se usa " +"explícitamente en versiones anteriores de Python, donde ``*`` no se podía " +"usar en ciertos lugares::" #: ../Doc/library/typing.rst:1638 msgid "" @@ -2824,6 +3502,14 @@ msgid "" "tup: tuple[*Ts] # Syntax error on Python <= 3.10!\n" "tup: tuple[Unpack[Ts]] # Semantically equivalent, and backwards-compatible" msgstr "" +"# En versiones anteriores de Python, TypeVarTuple y Unpack\n" +"# se encuentran en el paquete de retroadaptación `typing_extensions`.\n" +"from typing_extensions import TypeVarTuple, Unpack\n" +"\n" +"Ts = TypeVarTuple('Ts')\n" +"tup: tuple[*Ts] # Error de sintaxis en Python <= 3.10!\n" +"tup: tuple[Unpack[Ts]] # Equivalente semánticamente, y compatible con " +"versiones anteriores" #: ../Doc/library/typing.rst:1646 msgid "" @@ -2845,6 +3531,16 @@ msgid "" "# and `year` of type `int`.\n" "def foo(**kwargs: Unpack[Movie]): ..." msgstr "" +"from typing import TypedDict, Unpack\n" +"\n" +"class Movie(TypedDict):\n" +" name: str\n" +" year: int\n" +"\n" +"# Esta función espera dos argumentos de palabras clave: `name` de tipo " +"`str`\n" +"# y `year` de tipo `int`.\n" +"def foo(**kwargs: Unpack[Movie]): ..." #: ../Doc/library/typing.rst:1659 msgid "" @@ -2898,6 +3594,10 @@ msgid "" " ...\n" " # Etc." msgstr "" +"class Mapping[KT, VT]:\n" +" def __getitem__(self, key: KT) -> VT:\n" +" ...\n" +" # Etc." #: ../Doc/library/typing.rst:1687 msgid "" @@ -2920,14 +3620,19 @@ msgid "" " except KeyError:\n" " return default" msgstr "" +"def lookup_name[X, Y](mapping: Mapping[X, Y], key: X, default: Y) -> Y:\n" +" try:\n" +" return mapping[key]\n" +" except KeyError:\n" +" return default" #: ../Doc/library/typing.rst:1699 msgid "" "Here the brackets after the function name indicate a :ref:`generic function " "`." msgstr "" -"Aquí los corchetes después del nombre de la función indican una :ref:" -"`función genérica `." +"Aquí los corchetes después del nombre de la función indican " +"una :ref:`función genérica `." #: ../Doc/library/typing.rst:1702 msgid "" @@ -2949,6 +3654,13 @@ msgid "" " ...\n" " # Etc." msgstr "" +"KT = TypeVar('KT')\n" +"VT = TypeVar('VT')\n" +"\n" +"class Mapping(Generic[KT, VT]):\n" +" def __getitem__(self, key: KT) -> VT:\n" +" ...\n" +" # Etc." #: ../Doc/library/typing.rst:1719 msgid "Type variable." @@ -2961,15 +3673,17 @@ msgid "" "`, and :ref:`generic type aliases `::" msgstr "" "La forma preferida de construir una variable de tipo es a través de la " -"sintaxis dedicada para :ref:`funciones genéricas `, :ref:" -"`clases genéricas ` y :ref:`alias de tipo genérico `::" +"sintaxis dedicada para :ref:`funciones genéricas `, :ref:`clases genéricas ` y :ref:`alias de tipo " +"genérico `::" #: ../Doc/library/typing.rst:1726 msgid "" "class Sequence[T]: # T is a TypeVar\n" " ..." msgstr "" +"class Sequence[T]: # T is a TypeVar\n" +" ..." #: ../Doc/library/typing.rst:1729 msgid "" @@ -2988,6 +3702,13 @@ msgid "" "str or bytes\n" " ..." msgstr "" +"class StrSequence[S: str]: # S es un TypeVar ligado a str\n" +" ...\n" +"\n" +"\n" +"class StrOrBytesSequence[A: (str, bytes)]: # A es un TypeVar limitado a str " +"o bytes\n" +" ..." #: ../Doc/library/typing.rst:1739 msgid "" @@ -3003,6 +3724,9 @@ msgid "" "S = TypeVar('S', bound=str) # Can be any subtype of str\n" "A = TypeVar('A', str, bytes) # Must be exactly str or bytes" msgstr "" +"T = TypeVar('T') # Puede ser cualquier cosa\n" +"S = TypeVar('S', bound=str) # Puede ser cualquier subtipo de str\n" +"A = TypeVar('A', str, bytes) # Tiene que ser exactamente str o bytes" #: ../Doc/library/typing.rst:1745 msgid "" @@ -3013,9 +3737,9 @@ msgid "" msgstr "" "Las variables de tipo existen principalmente para el beneficio de los " "validadores de tipos estáticos. Sirven como parámetros para tipos genéricos, " -"así como para definiciones de alias de tipo y funciones genéricas. Consulte :" -"class:`Generic` para obtener más información sobre tipos genéricos. Las " -"funciones genéricas funcionan de la siguiente manera::" +"así como para definiciones de alias de tipo y funciones genéricas. " +"Consulte :class:`Generic` para obtener más información sobre tipos " +"genéricos. Las funciones genéricas funcionan de la siguiente manera::" #: ../Doc/library/typing.rst:1751 msgid "" @@ -3034,6 +3758,20 @@ msgid "" " \"\"\"Add two strings or bytes objects together.\"\"\"\n" " return x + y" msgstr "" +"def repeat[T](x: T, n: int) -> Sequence[T]:\n" +" \"\"\"Return a list containing n references to x.\"\"\"\n" +" return [x]*n\n" +"\n" +"\n" +"def print_capitalized[S: str](x: S) -> S:\n" +" \"\"\"Print x capitalized, and return x.\"\"\"\n" +" print(x.capitalize())\n" +" return x\n" +"\n" +"\n" +"def concatenate[A: (str, bytes)](x: A, y: A) -> A:\n" +" \"\"\"Add two strings or bytes objects together.\"\"\"\n" +" return x + y" #: ../Doc/library/typing.rst:1766 msgid "" @@ -3085,6 +3823,16 @@ msgid "" "\n" "z = print_capitalized(45) # error: int is not a subtype of str" msgstr "" +"x = print_capitalized('a string')\n" +"reveal_type(x) # el tipo revelado es str\n" +"\n" +"class StringSubclass(str):\n" +" pass\n" +"\n" +"y = print_capitalized(StringSubclass('another string'))\n" +"reveal_type(y) # revealed type is StringSubclass\n" +"\n" +"z = print_capitalized(45) # error: int no es un subtipo de str" #: ../Doc/library/typing.rst:1792 msgid "" @@ -3104,6 +3852,14 @@ msgid "" "bytes\n" "V = TypeVar('V', bound=SupportsAbs) # Can be anything with an __abs__ method" msgstr "" +"# Puede ser cualquier cosa con un método __abs__\n" +"def print_abs[T: SupportsAbs](arg: T) -> None:\n" +" print(\"Absolute value:\", abs(arg))\n" +"\n" +"U = TypeVar('U', bound=str|bytes) # Puede ser cualquier subtipo de la unión " +"str|bytes\n" +"V = TypeVar('V', bound=SupportsAbs) # Puede ser cualquier cosa con un " +"método __abs__" #: ../Doc/library/typing.rst:1804 msgid "" @@ -3126,6 +3882,14 @@ msgid "" "c = concatenate('one', b'two') # error: type variable 'A' can be either str " "or bytes in a function call, but not both" msgstr "" +"a = concatenate('one', 'two')\n" +"reveal_type(a) # tipo revelado es str\n" +"\n" +"b = concatenate(StringSubclass('one'), StringSubclass('two'))\n" +"reveal_type(b) # tipo revelado es str, a pesar que se pasa StringSubclass\n" +"\n" +"c = concatenate('one', b'two') # error: la variable de tipo 'A' puede ser " +"str o bytes en una llamada a función, pero no ambas" #: ../Doc/library/typing.rst:1815 msgid "At runtime, ``isinstance(x, T)`` will raise :exc:`TypeError`." @@ -3177,22 +3941,28 @@ msgid "" msgstr "" "Para las variables de tipo creadas a través de la :ref:`sintáxis de " "parámetros de tipo `, las restricciones se evalúan solo cuando " -"se accede al atributo, no cuando se crea la variable de tipo (consulte :ref:" -"`lazy-evaluation`)." +"se accede al atributo, no cuando se crea la variable de tipo " +"(consulte :ref:`lazy-evaluation`)." #: ../Doc/library/typing.rst:1857 msgid "" "The default value of the type variable, or :data:`typing.NoDefault` if it " "has no default." msgstr "" +"El valor predeterminado de la variable de tipo, o :data:`typing.NoDefault` " +"si no tiene valor predeterminado." #: ../Doc/library/typing.rst:1864 msgid "" "Return whether or not the type variable has a default value. This is " -"equivalent to checking whether :attr:`__default__` is not the :data:`typing." -"NoDefault` singleton, except that it does not force evaluation of the :ref:" -"`lazily evaluated ` default value." +"equivalent to checking whether :attr:`__default__` is not " +"the :data:`typing.NoDefault` singleton, except that it does not force " +"evaluation of the :ref:`lazily evaluated ` default value." msgstr "" +"Devuelve si la variable de tipo tiene o no un valor predeterminado. Esto es " +"equivalente a verificar si :attr:`__default__` no es el " +"singleton :data:`typing.NoDefault`, excepto que no fuerza la evaluación del " +"valor predeterminado :ref:`lazily evaluated `." #: ../Doc/library/typing.rst:1873 msgid "" @@ -3200,24 +3970,22 @@ msgid "" "params>` syntax introduced by :pep:`695`. The ``infer_variance`` parameter " "was added." msgstr "" -"Ahora es posible declarar variables de tipo utilizando la sintaxis de :ref:" -"`parámetros de tipo ` introducida por :pep:`695`. Se agregó el " -"parámetro ``infer_variance``." +"Ahora es posible declarar variables de tipo utilizando la sintaxis " +"de :ref:`parámetros de tipo ` introducida por :pep:`695`. Se " +"agregó el parámetro ``infer_variance``." #: ../Doc/library/typing.rst:1879 ../Doc/library/typing.rst:2018 #: ../Doc/library/typing.rst:2120 -#, fuzzy msgid "Support for default values was added." -msgstr "Soporte añadido para valores por defecto, métodos y *docstrings*." +msgstr "Se agregó soporte para valores predeterminados." #: ../Doc/library/typing.rst:1885 -#, fuzzy msgid "" "Type variable tuple. A specialized form of :ref:`type variable ` " "that enables *variadic* generics." msgstr "" -"Tupla de variables de tipo. Una versión especializada de :class:`type " -"variables ` que permite genéricos *variádicos*." +"Tupla de variable de tipo. Forma especializada de :ref:`type variable " +"` que habilita genéricos de *variadic*." #: ../Doc/library/typing.rst:1888 msgid "" @@ -3234,6 +4002,9 @@ msgid "" "T]:\n" " return (*tup[1:], tup[0])" msgstr "" +"def move_first_element_to_last[T, *Ts](tup: tuple[T, *Ts]) -> tuple[*Ts, " +"T]:\n" +" return (*tup[1:], tup[0])" #: ../Doc/library/typing.rst:1894 msgid "Or by explicitly invoking the ``TypeVarTuple`` constructor::" @@ -3247,6 +4018,11 @@ msgid "" "def move_first_element_to_last(tup: tuple[T, *Ts]) -> tuple[*Ts, T]:\n" " return (*tup[1:], tup[0])" msgstr "" +"T = TypeVar(\"T\")\n" +"Ts = TypeVarTuple(\"Ts\")\n" +"\n" +"def move_first_element_to_last(tup: tuple[T, *Ts]) -> tuple[*Ts, T]:\n" +" return (*tup[1:], tup[0])" #: ../Doc/library/typing.rst:1902 msgid "" @@ -3279,6 +4055,23 @@ msgid "" "# (at least one element is required)\n" "move_first_element_to_last(tup=())" msgstr "" +"# T está ligado a int, Ts está ligado a ()\n" +"# El valor de retorno es (1,), que tiene tipo tuple[int]\n" +"move_first_element_to_last(tup=(1,))\n" +"\n" +"# T está ligado a int, Ts está ligado a (str,)\n" +"# El valor de retorno es ('spam', 1), que tiene tipo tuple[str, int]\n" +"move_first_element_to_last(tup=(1, 'spam'))\n" +"\n" +"# T está ligado a int, Ts está ligado a (str, float)\n" +"# El valor de retorno es ('spam', 3.0, 1), que tiene tipo tuple[str, float, " +"int]\n" +"move_first_element_to_last(tup=(1, 'spam', 3.0))\n" +"\n" +"# Esto falla al verificar el tipo (y falla en tiempo de ejecución)\n" +"# porque tuple[()] no es compatible con tuple[T, *Ts]\n" +"# (se requiere al menos un elemento)\n" +"move_first_element_to_last(tup=())" #: ../Doc/library/typing.rst:1924 msgid "" @@ -3311,6 +4104,9 @@ msgid "" "x: tuple[Ts] # Not valid\n" "x: tuple[*Ts] # The correct way to do it" msgstr "" +"x: Ts # No válido\n" +"x: tuple[Ts] # No válido\n" +"x: tuple[*Ts] # La forma correcta de hacerlo" #: ../Doc/library/typing.rst:1939 msgid "" @@ -3328,6 +4124,10 @@ msgid "" " def __abs__(self) -> \"Array[*Shape]\": ...\n" " def get_shape(self) -> tuple[*Shape]: ..." msgstr "" +"class Array[*Shape]:\n" +" def __getitem__(self, key: tuple[*Shape]) -> float: ...\n" +" def __abs__(self) -> \"Array[*Shape]\": ...\n" +" def get_shape(self) -> tuple[*Shape]: ..." #: ../Doc/library/typing.rst:1947 msgid "" @@ -3350,6 +4150,17 @@ msgid "" "float_array_1d: Array[float, Height] = Array() # Totally fine\n" "int_array_2d: Array[int, Height, Width] = Array() # Yup, fine too" msgstr "" +"class Array[DType, *Shape]: # Esto está bien\n" +" pass\n" +"\n" +"class Array2[*Shape, DType]: # Esto también está bien\n" +" pass\n" +"\n" +"class Height: ...\n" +"class Width: ...\n" +"\n" +"float_array_1d: Array[float, Height] = Array() # Totalmente bien\n" +"int_array_2d: Array[int, Height, Width] = Array() # Sip, también está bien" #: ../Doc/library/typing.rst:1963 msgid "" @@ -3365,6 +4176,9 @@ msgid "" "class Array[*Shape, *Shape]: # Not valid\n" " pass" msgstr "" +"x: tuple[*Ts, *Ts] # Not valid\n" +"class Array[*Shape, *Shape]: # Not valid\n" +" pass" #: ../Doc/library/typing.rst:1970 msgid "" @@ -3383,6 +4197,12 @@ msgid "" " ...\n" " callback(*args)" msgstr "" +"def call_soon[*Ts](\n" +" callback: Callable[[*Ts], None],\n" +" *args: *Ts\n" +") -> None:\n" +" ...\n" +" callback(*args)" #: ../Doc/library/typing.rst:1980 msgid "" @@ -3414,14 +4234,20 @@ msgid "" "The default value of the type variable tuple, or :data:`typing.NoDefault` if " "it has no default." msgstr "" +"El valor predeterminado de la variable de tipo tupla, " +"o :data:`typing.NoDefault` si no tiene valor predeterminado." #: ../Doc/library/typing.rst:2002 msgid "" "Return whether or not the type variable tuple has a default value. This is " -"equivalent to checking whether :attr:`__default__` is not the :data:`typing." -"NoDefault` singleton, except that it does not force evaluation of the :ref:" -"`lazily evaluated ` default value." +"equivalent to checking whether :attr:`__default__` is not " +"the :data:`typing.NoDefault` singleton, except that it does not force " +"evaluation of the :ref:`lazily evaluated ` default value." msgstr "" +"Devuelve si la variable de tipo tupla tiene o no un valor predeterminado. " +"Esto es equivalente a verificar si :attr:`__default__` no es el " +"singleton :data:`typing.NoDefault`, excepto que no fuerza la evaluación del " +"valor predeterminado :ref:`lazily evaluated `." #: ../Doc/library/typing.rst:2013 msgid "" @@ -3432,13 +4258,12 @@ msgstr "" "de :ref:`parámetros de tipo ` introducida por :pep:`695`." #: ../Doc/library/typing.rst:2022 -#, fuzzy msgid "" "Parameter specification variable. A specialized version of :ref:`type " "variables `." msgstr "" -"Variable de especificación de parámetros. Una versión especializada de :" -"class:`type variables `." +"Variable de especificación de parámetros. Versión especializada " +"de :ref:`type variables `." #: ../Doc/library/typing.rst:2025 msgid "" @@ -3451,7 +4276,7 @@ msgstr "" #: ../Doc/library/typing.rst:2028 msgid "type IntFunc[**P] = Callable[P, int]" -msgstr "" +msgstr "type IntFunc[**P] = Callable[P, int]" #: ../Doc/library/typing.rst:2030 msgid "" @@ -3463,7 +4288,7 @@ msgstr "" #: ../Doc/library/typing.rst:2033 msgid "P = ParamSpec('P')" -msgstr "" +msgstr "P = ParamSpec('P')" #: ../Doc/library/typing.rst:2035 msgid "" @@ -3512,6 +4337,20 @@ msgid "" " '''Add two numbers together.'''\n" " return x + y" msgstr "" +"from collections.abc import Callable\n" +"import logging\n" +"\n" +"def add_logging[T, **P](f: Callable[P, T]) -> Callable[P, T]:\n" +" '''A type-safe decorator to add logging to a function.'''\n" +" def inner(*args: P.args, **kwargs: P.kwargs) -> T:\n" +" logging.info(f'{f.__name__} was called')\n" +" return f(*args, **kwargs)\n" +" return inner\n" +"\n" +"@add_logging\n" +"def add_two(x: float, y: float) -> float:\n" +" '''Add two numbers together.'''\n" +" return x + y" #: ../Doc/library/typing.rst:2062 msgid "" @@ -3543,15 +4382,15 @@ msgstr "" #: ../Doc/library/typing.rst:2075 msgid "" -"Since ``ParamSpec`` captures both positional and keyword parameters, ``P." -"args`` and ``P.kwargs`` can be used to split a ``ParamSpec`` into its " +"Since ``ParamSpec`` captures both positional and keyword parameters, " +"``P.args`` and ``P.kwargs`` can be used to split a ``ParamSpec`` into its " "components. ``P.args`` represents the tuple of positional parameters in a " "given call and should only be used to annotate ``*args``. ``P.kwargs`` " "represents the mapping of keyword parameters to their values in a given " "call, and should be only be used to annotate ``**kwargs``. Both attributes " "require the annotated parameter to be in scope. At runtime, ``P.args`` and " -"``P.kwargs`` are instances respectively of :class:`ParamSpecArgs` and :class:" -"`ParamSpecKwargs`." +"``P.kwargs`` are instances respectively of :class:`ParamSpecArgs` " +"and :class:`ParamSpecKwargs`." msgstr "" "Dado que ``ParamSpec`` captura tanto parámetros posicionales como de " "palabras clave, ``P.args`` y ``P.kwargs`` se pueden utilizar para dividir un " @@ -3561,8 +4400,8 @@ msgstr "" "palabras clave a sus valores en una llamada determinada y solo debe usarse " "para anotar ``**kwargs``. Ambos atributos requieren que el parámetro anotado " "esté dentro del alcance. En tiempo de ejecución, ``P.args`` y ``P.kwargs`` " -"son instancias respectivamente de :class:`ParamSpecArgs` y :class:" -"`ParamSpecKwargs`." +"son instancias respectivamente de :class:`ParamSpecArgs` " +"y :class:`ParamSpecKwargs`." #: ../Doc/library/typing.rst:2087 msgid "The name of the parameter specification." @@ -3570,25 +4409,31 @@ msgstr "El nombre de la especificación del parámetro." #: ../Doc/library/typing.rst:2091 msgid "" -"The default value of the parameter specification, or :data:`typing." -"NoDefault` if it has no default." +"The default value of the parameter specification, " +"or :data:`typing.NoDefault` if it has no default." msgstr "" +"El valor predeterminado de la especificación del parámetro, " +"o :data:`typing.NoDefault` si no tiene valor predeterminado." #: ../Doc/library/typing.rst:2098 msgid "" "Return whether or not the parameter specification has a default value. This " -"is equivalent to checking whether :attr:`__default__` is not the :data:" -"`typing.NoDefault` singleton, except that it does not force evaluation of " -"the :ref:`lazily evaluated ` default value." +"is equivalent to checking whether :attr:`__default__` is not " +"the :data:`typing.NoDefault` singleton, except that it does not force " +"evaluation of the :ref:`lazily evaluated ` default value." msgstr "" +"Devuelve si la especificación del parámetro tiene o no un valor " +"predeterminado. Esto es equivalente a verificar si :attr:`__default__` no es " +"el singleton :data:`typing.NoDefault`, excepto que no fuerza la evaluación " +"del valor predeterminado :ref:`lazily evaluated `." #: ../Doc/library/typing.rst:2105 msgid "" "Parameter specification variables created with ``covariant=True`` or " "``contravariant=True`` can be used to declare covariant or contravariant " -"generic types. The ``bound`` argument is also accepted, similar to :class:" -"`TypeVar`. However the actual semantics of these keywords are yet to be " -"decided." +"generic types. The ``bound`` argument is also accepted, similar " +"to :class:`TypeVar`. However the actual semantics of these keywords are yet " +"to be decided." msgstr "" "Las variables de especificación de parámetros creadas con ``covariant=True`` " "o ``contravariant=True`` se pueden utilizar para declarar tipos genéricos " @@ -3602,8 +4447,8 @@ msgid "" "` syntax introduced by :pep:`695`." msgstr "" "Las especificaciones de parámetros ahora se pueden declarar utilizando la " -"sintaxis de :ref:`parámetros de tipo ` introducida por :pep:" -"`695`." +"sintaxis de :ref:`parámetros de tipo ` introducida " +"por :pep:`695`." #: ../Doc/library/typing.rst:2123 msgid "" @@ -3619,16 +4464,18 @@ msgstr ":data:`Concatenate`" #: ../Doc/library/typing.rst:2135 msgid "" -"Arguments and keyword arguments attributes of a :class:`ParamSpec`. The ``P." -"args`` attribute of a ``ParamSpec`` is an instance of ``ParamSpecArgs``, and " -"``P.kwargs`` is an instance of ``ParamSpecKwargs``. They are intended for " -"runtime introspection and have no special meaning to static type checkers." +"Arguments and keyword arguments attributes of a :class:`ParamSpec`. The " +"``P.args`` attribute of a ``ParamSpec`` is an instance of ``ParamSpecArgs``, " +"and ``P.kwargs`` is an instance of ``ParamSpecKwargs``. They are intended " +"for runtime introspection and have no special meaning to static type " +"checkers." msgstr "" -"Argumentos y atributos de argumentos de palabras clave de un :class:" -"`ParamSpec`. El atributo ``P.args`` de un ``ParamSpec`` es una instancia de " -"``ParamSpecArgs`` y ``P.kwargs`` es una instancia de ``ParamSpecKwargs``. " -"Están pensados para la introspección en tiempo de ejecución y no tienen un " -"significado especial para los validadores de tipo estático." +"Argumentos y atributos de argumentos de palabras clave de " +"un :class:`ParamSpec`. El atributo ``P.args`` de un ``ParamSpec`` es una " +"instancia de ``ParamSpecArgs`` y ``P.kwargs`` es una instancia de " +"``ParamSpecKwargs``. Están pensados para la introspección en tiempo de " +"ejecución y no tienen un significado especial para los validadores de tipo " +"estático." #: ../Doc/library/typing.rst:2140 msgid "" @@ -3647,6 +4494,12 @@ msgid "" ">>> get_origin(P.kwargs) is P\n" "True" msgstr "" +">>> from typing import ParamSpec, get_origin\n" +">>> P = ParamSpec(\"P\")\n" +">>> get_origin(P.args) is P\n" +"True\n" +">>> get_origin(P.kwargs) is P\n" +"True" #: ../Doc/library/typing.rst:2157 msgid "The type of type aliases created through the :keyword:`type` statement." @@ -3659,6 +4512,9 @@ msgid "" ">>> type(Alias)\n" "" msgstr "" +">>> type Alias = int\n" +">>> type(Alias)\n" +"" #: ../Doc/library/typing.rst:2171 msgid "The name of the type alias:" @@ -3670,6 +4526,9 @@ msgid "" ">>> Alias.__name__\n" "'Alias'" msgstr "" +">>> type Alias = int\n" +">>> Alias.__name__\n" +"'Alias'" #: ../Doc/library/typing.rst:2181 msgid "The module in which the type alias was defined::" @@ -3681,6 +4540,9 @@ msgid "" ">>> Alias.__module__\n" "'__main__'" msgstr "" +">>> type Alias = int\n" +">>> Alias.__module__\n" +"'__main__'" #: ../Doc/library/typing.rst:2189 msgid "" @@ -3699,6 +4561,12 @@ msgid "" ">>> NotGeneric.__type_params__\n" "()" msgstr "" +">>> type ListOrSet[T] = list[T] | set[T]\n" +">>> ListOrSet.__type_params__\n" +"(T,)\n" +">>> type NotGeneric = int\n" +">>> NotGeneric.__type_params__\n" +"()" #: ../Doc/library/typing.rst:2203 msgid "" @@ -3723,6 +4591,16 @@ msgid "" ">>> Recursive.__value__\n" "Mutually" msgstr "" +">>> type Mutually = Recursive\n" +">>> type Recursive = Mutually\n" +">>> Mutually\n" +"Mutually\n" +">>> Recursive\n" +"Recursive\n" +">>> Mutually.__value__\n" +"Recursive\n" +">>> Recursive.__value__\n" +"Mutually" #: ../Doc/library/typing.rst:2221 msgid "Other special directives" @@ -3753,6 +4631,9 @@ msgid "" " name: str\n" " id: int" msgstr "" +"class Employee(NamedTuple):\n" +" name: str\n" +" id: int" #: ../Doc/library/typing.rst:2237 msgid "This is equivalent to::" @@ -3760,7 +4641,7 @@ msgstr "Esto es equivalente a::" #: ../Doc/library/typing.rst:2239 msgid "Employee = collections.namedtuple('Employee', ['name', 'id'])" -msgstr "" +msgstr "Employee = collections.namedtuple('Employee', ['name', 'id'])" #: ../Doc/library/typing.rst:2241 msgid "" @@ -3778,6 +4659,12 @@ msgid "" "employee = Employee('Guido')\n" "assert employee.id == 3" msgstr "" +"class Employee(NamedTuple):\n" +" name: str\n" +" id: int = 3\n" +"\n" +"employee = Employee('Guido')\n" +"assert employee.id == 3" #: ../Doc/library/typing.rst:2250 msgid "" @@ -3815,6 +4702,13 @@ msgid "" " def __repr__(self) -> str:\n" " return f''" msgstr "" +"class Employee(NamedTuple):\n" +" \"\"\"Represents an employee.\"\"\"\n" +" name: str\n" +" id: int = 3\n" +"\n" +" def __repr__(self) -> str:\n" +" return f''" #: ../Doc/library/typing.rst:2268 msgid "``NamedTuple`` subclasses can be generic::" @@ -3826,6 +4720,9 @@ msgid "" " key: T\n" " group: list[T]" msgstr "" +"class Group[T](NamedTuple):\n" +" key: T\n" +" group: list[T]" #: ../Doc/library/typing.rst:2274 msgid "Backward-compatible usage::" @@ -3843,12 +4740,21 @@ msgid "" "# A functional syntax is also supported\n" "Employee = NamedTuple('Employee', [('name', str), ('id', int)])" msgstr "" +"# Para crear un NamedTuple genérico en Python 3.11\n" +"T = TypeVar(\"T\")\n" +"\n" +"class Group(NamedTuple, Generic[T]):\n" +" key: T\n" +" group: list[T]\n" +"\n" +"# También se admite una sintaxis funcional\n" +"Employee = NamedTuple('Employee', [('name', str), ('id', int)])" #: ../Doc/library/typing.rst:2286 msgid "Added support for :pep:`526` variable annotation syntax." msgstr "" -"Soporte añadido para la sintaxis de anotación de variables propuesto en :pep:" -"`526`." +"Soporte añadido para la sintaxis de anotación de variables propuesto " +"en :pep:`526`." #: ../Doc/library/typing.rst:2289 msgid "Added support for default values, methods, and docstrings." @@ -3880,6 +4786,10 @@ msgid "" "(``NT = NamedTuple(\"NT\", x=int)``) is deprecated, and will be disallowed " "in 3.15. Use the class-based syntax or the functional syntax instead." msgstr "" +"La sintaxis de argumentos de palabras clave no documentada para crear clases " +"NamedTuple (``NT = NamedTuple(\"NT\", x=int)``) está obsoleta y no se " +"permitirá en la versión 3.15. En su lugar, utilice la sintaxis basada en " +"clases o la sintaxis funcional." #: ../Doc/library/typing.rst:2308 msgid "" @@ -3890,6 +4800,12 @@ msgid "" "Python 3.15. To create a NamedTuple class with 0 fields, use ``class " "NT(NamedTuple): pass`` or ``NT = NamedTuple(\"NT\", [])``." msgstr "" +"Al utilizar la sintaxis funcional para crear una clase NamedTuple, no se " +"permite pasar un valor al parámetro 'campos' (``NT = NamedTuple(\"NT\")``). " +"También se permite pasar ``None`` al parámetro 'campos' (``NT = " +"NamedTuple(\"NT\", None)``). Ambos métodos no estarán permitidos en Python " +"3.15. Para crear una clase NamedTuple con 0 campos, utilice ``class " +"NT(NamedTuple): pass`` o ``NT = NamedTuple(\"NT\", [])``." #: ../Doc/library/typing.rst:2318 msgid "Helper class to create low-overhead :ref:`distinct types `." @@ -3912,6 +4828,9 @@ msgid "" "first_user = UserId(1) # \"UserId\" returns the argument unchanged at " "runtime" msgstr "" +"UserId = NewType('UserId', int) # Declara el NewType \"UserId\"\n" +"first_user = UserId(1) # \"UserId\" retorna el argumento sin cambios en " +"runtime" #: ../Doc/library/typing.rst:2330 msgid "The module in which the new type is defined." @@ -3943,6 +4862,9 @@ msgid "" " def meth(self) -> int:\n" " ..." msgstr "" +"class Proto(Protocol):\n" +" def meth(self) -> int:\n" +" ..." #: ../Doc/library/typing.rst:2355 msgid "" @@ -3963,18 +4885,26 @@ msgid "" "\n" "func(C()) # Passes static type check" msgstr "" +"class C:\n" +" def meth(self) -> int:\n" +" return 0\n" +"\n" +"def func(x: Proto) -> int:\n" +" return x.meth()\n" +"\n" +"func(C()) # Pasa la verificación de tipos estática" #: ../Doc/library/typing.rst:2367 msgid "" -"See :pep:`544` for more details. Protocol classes decorated with :func:" -"`runtime_checkable` (described later) act as simple-minded runtime protocols " -"that check only the presence of given attributes, ignoring their type " -"signatures." +"See :pep:`544` for more details. Protocol classes decorated " +"with :func:`runtime_checkable` (described later) act as simple-minded " +"runtime protocols that check only the presence of given attributes, ignoring " +"their type signatures." msgstr "" -"Véase :pep:`544` para más detalles. Las clases protocolo decoradas con :func:" -"`runtime_checkable` (descrito más adelante) se comportan como protocolos " -"simplistas en tiempo de ejecución que solo comprueban la presencia de " -"atributos dados, ignorando su firma de tipo." +"Véase :pep:`544` para más detalles. Las clases protocolo decoradas " +"con :func:`runtime_checkable` (descrito más adelante) se comportan como " +"protocolos simplistas en tiempo de ejecución que solo comprueban la " +"presencia de atributos dados, ignorando su firma de tipo." #: ../Doc/library/typing.rst:2372 msgid "Protocol classes can be generic, for example::" @@ -3986,6 +4916,9 @@ msgid "" " def meth(self) -> T:\n" " ..." msgstr "" +"class GenProto[T](Protocol):\n" +" def meth(self) -> T:\n" +" ..." #: ../Doc/library/typing.rst:2378 msgid "" @@ -4003,6 +4936,11 @@ msgid "" " def meth(self) -> T:\n" " ..." msgstr "" +"T = TypeVar(\"T\")\n" +"\n" +"class GenProto(Protocol[T]):\n" +" def meth(self) -> T:\n" +" ..." #: ../Doc/library/typing.rst:2391 msgid "Mark a protocol class as a runtime protocol." @@ -4015,14 +4953,14 @@ msgid "" "Such a protocol can be used with :func:`isinstance` and :func:`issubclass`. " "This raises :exc:`TypeError` when applied to a non-protocol class. This " "allows a simple-minded structural check, very similar to \"one trick " -"ponies\" in :mod:`collections.abc` such as :class:`~collections.abc." -"Iterable`. For example::" +"ponies\" in :mod:`collections.abc` such " +"as :class:`~collections.abc.Iterable`. For example::" msgstr "" "Tal protocolo se puede usar con :func:`isinstance` y :func:`issubclass`. " "Esto lanzará una excepción :exc:`TypeError` cuando se aplique a una clase " "que no es un protocolo. Esto permite una comprobación estructural simple, " -"muy semejante a \"one trick ponies\" en :mod:`collections.abc` con :class:" -"`Iterable`. Por ejemplo::" +"muy semejante a \"one trick ponies\" en :mod:`collections.abc` " +"con :class:`Iterable`. Por ejemplo::" #: ../Doc/library/typing.rst:2398 msgid "" @@ -4039,24 +4977,36 @@ msgid "" "import threading\n" "assert isinstance(threading.Thread(name='Bob'), Named)" msgstr "" +"@runtime_checkable\n" +"class Closable(Protocol):\n" +" def close(self): ...\n" +"\n" +"assert isinstance(open('/some/file'), Closable)\n" +"\n" +"@runtime_checkable\n" +"class Named(Protocol):\n" +" name: str\n" +"\n" +"import threading\n" +"assert isinstance(threading.Thread(name='Bob'), Named)" #: ../Doc/library/typing.rst:2413 msgid "" ":func:`!runtime_checkable` will check only the presence of the required " -"methods or attributes, not their type signatures or types. For example, :" -"class:`ssl.SSLObject` is a class, therefore it passes an :func:`issubclass` " -"check against :ref:`Callable `. However, the ``ssl." -"SSLObject.__init__`` method exists only to raise a :exc:`TypeError` with a " -"more informative message, therefore making it impossible to call " -"(instantiate) :class:`ssl.SSLObject`." +"methods or attributes, not their type signatures or types. For " +"example, :class:`ssl.SSLObject` is a class, therefore it passes " +"an :func:`issubclass` check against :ref:`Callable `. " +"However, the ``ssl.SSLObject.__init__`` method exists only to raise " +"a :exc:`TypeError` with a more informative message, therefore making it " +"impossible to call (instantiate) :class:`ssl.SSLObject`." msgstr "" ":func:`!runtime_checkable` comprobará únicamente la presencia de los métodos " -"o atributos requeridos, no sus firmas de tipo o tipos. Por ejemplo, :class:" -"`ssl.SSLObject` es una clase, por lo tanto, pasa una comprobación :func:" -"`issubclass` contra :ref:`Callable `. Sin embargo, el " -"método ``ssl.SSLObject.__init__`` existe únicamente para generar un :exc:" -"`TypeError` con un mensaje más informativo, por lo que es imposible llamar " -"(instanciar) :class:`ssl.SSLObject`." +"o atributos requeridos, no sus firmas de tipo o tipos. Por " +"ejemplo, :class:`ssl.SSLObject` es una clase, por lo tanto, pasa una " +"comprobación :func:`issubclass` contra :ref:`Callable `. Sin embargo, el método ``ssl.SSLObject.__init__`` existe " +"únicamente para generar un :exc:`TypeError` con un mensaje más informativo, " +"por lo que es imposible llamar (instanciar) :class:`ssl.SSLObject`." #: ../Doc/library/typing.rst:2424 msgid "" @@ -4081,9 +5031,9 @@ msgid "" "versa. Most users are unlikely to be affected by this change." msgstr "" "La implementación interna de las comprobaciones de :func:`isinstance` con " -"protocolos que se pueden comprobar en tiempo de ejecución ahora utiliza :" -"func:`inspect.getattr_static` para buscar atributos (anteriormente, se " -"utilizaba :func:`hasattr`). Como resultado, algunos objetos que solían " +"protocolos que se pueden comprobar en tiempo de ejecución ahora " +"utiliza :func:`inspect.getattr_static` para buscar atributos (anteriormente, " +"se utilizaba :func:`hasattr`). Como resultado, algunos objetos que solían " "considerarse instancias de un protocolo que se podía comprobar en tiempo de " "ejecución ya no se consideran instancias de ese protocolo en Python 3.12+, y " "viceversa. Es poco probable que la mayoría de los usuarios se vean afectados " @@ -4094,8 +5044,9 @@ msgid "" "The members of a runtime-checkable protocol are now considered \"frozen\" at " "runtime as soon as the class has been created. Monkey-patching attributes " "onto a runtime-checkable protocol will still work, but will have no impact " -"on :func:`isinstance` checks comparing objects to the protocol. See :ref:" -"`\"What's new in Python 3.12\" ` for more details." +"on :func:`isinstance` checks comparing objects to the protocol. " +"See :ref:`\"What's new in Python 3.12\" ` for more " +"details." msgstr "" "Los miembros de un protocolo que se pueden comprobar en tiempo de ejecución " "ahora se consideran \"congelados\" en tiempo de ejecución tan pronto como se " @@ -4138,27 +5089,38 @@ msgid "" "\n" "assert Point2D(x=1, y=2, label='first') == dict(x=1, y=2, label='first')" msgstr "" +"class Point2D(TypedDict):\n" +" x: int\n" +" y: int\n" +" label: str\n" +"\n" +"a: Point2D = {'x': 1, 'y': 2, 'label': 'good'} # OK\n" +"b: Point2D = {'z': 3, 'label': 'bad'} # Falla la verificación de " +"tipos\n" +"\n" +"assert Point2D(x=1, y=2, label='first') == dict(x=1, y=2, label='first')" #: ../Doc/library/typing.rst:2471 msgid "" "An alternative way to create a ``TypedDict`` is by using function-call " "syntax. The second argument must be a literal :class:`dict`::" msgstr "" +"Una forma alternativa de crear un ``TypedDict`` es mediante la sintaxis de " +"llamada de función. El segundo argumento debe ser un :class:`dict` literal::" #: ../Doc/library/typing.rst:2474 msgid "Point2D = TypedDict('Point2D', {'x': int, 'y': int, 'label': str})" -msgstr "" +msgstr "Punto2D = TypedDict('Punto2D', {'x': int, 'y': int, 'etiqueta': str})" #: ../Doc/library/typing.rst:2476 -#, fuzzy msgid "" -"This functional syntax allows defining keys which are not valid :ref:" -"`identifiers `, for example because they are keywords or " -"contain hyphens::" +"This functional syntax allows defining keys which are not " +"valid :ref:`identifiers `, for example because they are " +"keywords or contain hyphens::" msgstr "" -"También es preferible el uso de la sintaxis funcional cuando cualquiera de " -"las llaves no sean :ref:`identifiers` válidos, por ejemplo " -"porque son palabras clave o contienen guiones. Ejemplo::" +"Esta sintaxis funcional permite definir claves que no son " +"válidas :ref:`identifiers `, por ejemplo porque son palabras " +"clave o contienen guiones:" #: ../Doc/library/typing.rst:2480 msgid "" @@ -4170,6 +5132,13 @@ msgid "" "# OK, functional syntax\n" "Point2D = TypedDict('Point2D', {'in': int, 'x-y': int})" msgstr "" +"# lanza SyntaxError\n" +"class Point2D(TypedDict):\n" +" in: int # 'in' es una palabra clave\n" +" x-y: int # nombre con guiones\n" +"\n" +"# OK, sintaxis funcional\n" +"Point2D = TypedDict('Point2D', {'in': int, 'x-y': int})" #: ../Doc/library/typing.rst:2488 msgid "" @@ -4187,10 +5156,18 @@ msgid "" " y: int\n" " label: NotRequired[str]\n" "\n" -"# Alternative syntax\n" +"# Alternative syntax\n" +"Point2D = TypedDict('Point2D', {'x': int, 'y': int, 'label': " +"NotRequired[str]})" +msgstr "" +"class Point2D(TypedDict):\n" +" x: int\n" +" y: int\n" +" label: NotRequired[str]\n" +"\n" +"# Sintaxis alternativa\n" "Point2D = TypedDict('Point2D', {'x': int, 'y': int, 'label': " "NotRequired[str]})" -msgstr "" #: ../Doc/library/typing.rst:2499 msgid "" @@ -4217,6 +5194,12 @@ msgid "" "# Alternative syntax\n" "Point2D = TypedDict('Point2D', {'x': int, 'y': int}, total=False)" msgstr "" +"class Point2D(TypedDict, total=False):\n" +" x: int\n" +" y: int\n" +"\n" +"# Sintaxis alternativa\n" +"Point2D = TypedDict('Point2D', {'x': int, 'y': int}, total=False)" #: ../Doc/library/typing.rst:2512 msgid "" @@ -4253,6 +5236,17 @@ msgid "" " 'label': str\n" "}, total=False)" msgstr "" +"class Point2D(TypedDict, total=False):\n" +" x: Required[int]\n" +" y: Required[int]\n" +" label: str\n" +"\n" +"# Sintaxis alternativa\n" +"Point2D = TypedDict('Point2D', {\n" +" 'x': Required[int],\n" +" 'y': Required[int],\n" +" 'label': str\n" +"}, total=False)" #: ../Doc/library/typing.rst:2532 msgid "" @@ -4267,6 +5261,8 @@ msgid "" "class Point3D(Point2D):\n" " z: int" msgstr "" +"class Point3D(Point2D):\n" +" z: int" #: ../Doc/library/typing.rst:2539 msgid "" @@ -4283,6 +5279,10 @@ msgid "" " y: int\n" " z: int" msgstr "" +"class Point3D(TypedDict):\n" +" x: int\n" +" y: int\n" +" z: int" #: ../Doc/library/typing.rst:2547 msgid "" @@ -4306,6 +5306,17 @@ msgid "" "\n" "class XZ(X, Z): pass # raises TypeError" msgstr "" +"class X(TypedDict):\n" +" x: int\n" +"\n" +"class Y(TypedDict):\n" +" y: int\n" +"\n" +"class Z(object): pass # Una clase no-TypedDict\n" +"\n" +"class XY(X, Y): pass # OK\n" +"\n" +"class XZ(X, Z): pass # lanza TypeError" #: ../Doc/library/typing.rst:2562 msgid "A ``TypedDict`` can be generic::" @@ -4317,6 +5328,9 @@ msgid "" " key: T\n" " group: list[T]" msgstr "" +"class Group[T](TypedDict):\n" +" key: T\n" +" group: list[T]" #: ../Doc/library/typing.rst:2568 msgid "" @@ -4334,18 +5348,24 @@ msgid "" " key: T\n" " group: list[T]" msgstr "" +"T = TypeVar(\"T\")\n" +"\n" +"class Group(TypedDict, Generic[T]):\n" +" key: T\n" +" group: list[T]" #: ../Doc/library/typing.rst:2579 msgid "" -"A ``TypedDict`` can be introspected via annotations dicts (see :ref:" -"`annotations-howto` for more information on annotations best practices), :" -"attr:`__total__`, :attr:`__required_keys__`, and :attr:`__optional_keys__`." +"A ``TypedDict`` can be introspected via annotations dicts " +"(see :ref:`annotations-howto` for more information on annotations best " +"practices), :attr:`__total__`, :attr:`__required_keys__`, " +"and :attr:`__optional_keys__`." msgstr "" "Es posible introspectar un ``TypedDict`` a través de diccionarios de " "anotaciones (véase\n" " :ref:`annotations-howto` para más información acerca de mejores prácticas " -"de anotaciones), :attr:`__total__`, :attr:`__required_keys__`, y :attr:" -"`__optional_keys__`." +"de anotaciones), :attr:`__total__`, :attr:`__required_keys__`, " +"y :attr:`__optional_keys__`." #: ../Doc/library/typing.rst:2585 msgid "" @@ -4366,6 +5386,16 @@ msgid "" ">>> Point3D.__total__\n" "True" msgstr "" +">>> from typing import TypedDict\n" +">>> class Point2D(TypedDict): pass\n" +">>> Point2D.__total__\n" +"True\n" +">>> class Point2D(TypedDict, total=False): pass\n" +">>> Point2D.__total__\n" +"False\n" +">>> class Point3D(Point2D): pass\n" +">>> Point3D.__total__\n" +"True" #: ../Doc/library/typing.rst:2601 msgid "" @@ -4377,11 +5407,18 @@ msgid "" "use :attr:`__required_keys__` and :attr:`__optional_keys__` for " "introspection." msgstr "" +"Este atributo refleja el valor del argumento ``total`` de la clase " +"``TypedDict`` actual, no si la clase es semánticamente total. Por ejemplo, " +"una ``TypedDict`` con ``__total__`` establecida en ``True`` puede tener " +"claves marcadas con :data:`NotRequired`, o puede heredar de otra " +"``TypedDict`` con ``total=False``. Por lo tanto, generalmente es mejor " +"usar :attr:`__required_keys__` y :attr:`__optional_keys__` para la " +"introspección." #: ../Doc/library/typing.rst:2614 msgid "" -"``Point2D.__required_keys__`` and ``Point2D.__optional_keys__`` return :" -"class:`frozenset` objects containing required and non-required keys, " +"``Point2D.__required_keys__`` and ``Point2D.__optional_keys__`` " +"return :class:`frozenset` objects containing required and non-required keys, " "respectively." msgstr "" "``Point2D.__required_keys__`` y ``Point2D.__optional_keys__`` retornan " @@ -4426,6 +5463,17 @@ msgid "" ">>> Point3D.__optional_keys__ == frozenset({'x', 'y'})\n" "True" msgstr "" +">>> class Point2D(TypedDict, total=False):\n" +"... x: int\n" +"... y: int\n" +"...\n" +">>> class Point3D(Point2D):\n" +"... z: int\n" +"...\n" +">>> Point3D.__required_keys__ == frozenset({'z'})\n" +"True\n" +">>> Point3D.__optional_keys__ == frozenset({'x', 'y'})\n" +"True" #: ../Doc/library/typing.rst:2645 msgid "" @@ -4435,22 +5483,35 @@ msgid "" "``__optional_keys__`` rely on may not work properly, and the values of the " "attributes may be incorrect." msgstr "" +"Si se utiliza ``from __future__ import annotations`` o si las anotaciones se " +"proporcionan como cadenas, las anotaciones no se evalúan cuando se define " +"``TypedDict``. Por lo tanto, la introspección en tiempo de ejecución de la " +"que dependen ``__required_keys__`` y ``__optional_keys__`` puede no " +"funcionar correctamente y los valores de los atributos pueden ser " +"incorrectos." #: ../Doc/library/typing.rst:2651 msgid "Support for :data:`ReadOnly` is reflected in the following attributes:" msgstr "" +"La compatibilidad con :data:`ReadOnly` se refleja en los siguientes " +"atributos:" #: ../Doc/library/typing.rst:2655 msgid "" "A :class:`frozenset` containing the names of all read-only keys. Keys are " "read-only if they carry the :data:`ReadOnly` qualifier." msgstr "" +"Un :class:`frozenset` que contiene los nombres de todas las claves de solo " +"lectura. Las claves son de solo lectura si llevan el " +"calificador :data:`ReadOnly`." #: ../Doc/library/typing.rst:2662 msgid "" "A :class:`frozenset` containing the names of all mutable keys. Keys are " "mutable if they do not carry the :data:`ReadOnly` qualifier." msgstr "" +"Un :class:`frozenset` que contiene los nombres de todas las claves mutables. " +"Las claves son mutables si no llevan el calificador :data:`ReadOnly`." #: ../Doc/library/typing.rst:2667 msgid "" @@ -4461,26 +5522,27 @@ msgstr "" #: ../Doc/library/typing.rst:2671 msgid "" -"Added support for marking individual keys as :data:`Required` or :data:" -"`NotRequired`. See :pep:`655`." +"Added support for marking individual keys as :data:`Required` " +"or :data:`NotRequired`. See :pep:`655`." msgstr "" -"Se agrega soporte para marcar llaves individuales como :data:`Required` o :" -"data:`NotRequired`. Véase :pep:`655`." +"Se agrega soporte para marcar llaves individuales como :data:`Required` " +"o :data:`NotRequired`. Véase :pep:`655`." #: ../Doc/library/typing.rst:2675 msgid "Added support for generic ``TypedDict``\\ s." msgstr "Se agrega soporte para ``TypedDict`` genéricos." #: ../Doc/library/typing.rst:2678 -#, fuzzy msgid "" "Removed support for the keyword-argument method of creating ``TypedDict``\\ " "s." -msgstr "Se agrega soporte para ``TypedDict`` genéricos." +msgstr "" +"Se eliminó la compatibilidad con el método de argumento de palabra clave " +"para crear ``TypedDict``\\ s." #: ../Doc/library/typing.rst:2681 msgid "Support for the :data:`ReadOnly` qualifier was added." -msgstr "" +msgstr "Se agregó soporte para el calificador :data:`ReadOnly`." #: ../Doc/library/typing.rst:2684 msgid "" @@ -4491,6 +5553,12 @@ msgid "" "Python 3.15. To create a TypedDict class with 0 fields, use ``class " "TD(TypedDict): pass`` or ``TD = TypedDict(\"TD\", {})``." msgstr "" +"Al utilizar la sintaxis funcional para crear una clase TypedDict, no se " +"permite pasar un valor al parámetro 'campos' (``TD = TypedDict(\"TD\")``). " +"También se permite pasar ``None`` al parámetro 'campos' (``TD = " +"TypedDict(\"TD\", None)``). Ambos métodos no estarán permitidos en Python " +"3.15. Para crear una clase TypedDict con 0 campos, utilice ``class " +"TD(TypedDict): pass`` o ``TD = TypedDict(\"TD\", {})``." #: ../Doc/library/typing.rst:2693 msgid "Protocols" @@ -4603,6 +5671,9 @@ msgid "" " assert_type(name, str) # OK, inferred type of `name` is `str`\n" " assert_type(name, int) # type checker error" msgstr "" +"def greet(name: str) -> None:\n" +" assert_type(name, str) # OK, tipo inferido de `name` es `str`\n" +" assert_type(name, int) # error del verificador de tipos" #: ../Doc/library/typing.rst:2768 msgid "" @@ -4622,6 +5693,13 @@ msgid "" " # Test whether the type checker correctly understands our function\n" " assert_type(arg, int)" msgstr "" +"def complex_function(arg: object):\n" +" # Haz alguna lógica compleja de reducción de tipo,\n" +" # despues de la cual esperamos que el tipo inferido sea `int`\n" +" ...\n" +" # Probar si el verificador de tipos entiende correctamente nuestra " +"función\n" +" assert_type(arg, int)" #: ../Doc/library/typing.rst:2782 msgid "" @@ -4645,6 +5723,14 @@ msgid "" " case _ as unreachable:\n" " assert_never(unreachable)" msgstr "" +"def int_or_str(arg: int | str) -> None:\n" +" match arg:\n" +" case int():\n" +" print(\"It's an int\")\n" +" case str():\n" +" print(\"It's a str\")\n" +" case _ as unreachable:\n" +" assert_never(unreachable)" #: ../Doc/library/typing.rst:2795 msgid "" @@ -4653,8 +5739,8 @@ msgid "" "and both options are covered by earlier cases." msgstr "" "Aquí, las anotaciones permiten al validador de tipos inferir que el último " -"caso nunca puede ejecutarse, porque ``arg`` es un :class:`int` o un :class:" -"`str`, y ambas opciones están cubiertas por los casos anteriores." +"caso nunca puede ejecutarse, porque ``arg`` es un :class:`int` o " +"un :class:`str`, y ambas opciones están cubiertas por los casos anteriores." #: ../Doc/library/typing.rst:2800 msgid "" @@ -4668,47 +5754,47 @@ msgstr "" "Si un validador de tipos encuentra que una llamada a ``assert_never()`` es " "alcanzable, emitirá un error. Por ejemplo, si la anotación de tipo para " "``arg`` fuese en cambio ``int | str | float``, el validador de tipos " -"emitiría un error que indicaría que ``unreachable`` es de tipo :class:" -"`float`. Para que una llamada a ``assert_never`` pase la verificación de " -"tipos, el tipo inferido del argumento pasado debe ser el tipo inferior, :" -"data:`Never`, y nada más." +"emitiría un error que indicaría que ``unreachable`` es de " +"tipo :class:`float`. Para que una llamada a ``assert_never`` pase la " +"verificación de tipos, el tipo inferido del argumento pasado debe ser el " +"tipo inferior, :data:`Never`, y nada más." #: ../Doc/library/typing.rst:2808 msgid "At runtime, this throws an exception when called." msgstr "En tiempo de ejecución, ésto lanza una excepción cuando es llamado." #: ../Doc/library/typing.rst:2811 -#, fuzzy msgid "" "`Unreachable Code and Exhaustiveness Checking `__ has more information about " "exhaustiveness checking with static typing." msgstr "" "`Unreachable Code and Exhaustiveness Checking `__ contiene más información acerca de la " -"verificación de exhaustividad con tipado estático." +"en/latest/guides/unreachable.html>`__ tiene más información sobre la " +"comprobación de exhaustividad con tipado estático." #: ../Doc/library/typing.rst:2819 -#, fuzzy msgid "Ask a static type checker to reveal the inferred type of an expression." msgstr "" -"Solicitar a un validador de tipos que confirme que *val* tiene *typ* por " -"tipo inferido." +"Pídale a un verificador de tipos estáticos que revele el tipo inferido de " +"una expresión." #: ../Doc/library/typing.rst:2821 -#, fuzzy msgid "" "When a static type checker encounters a call to this function, it emits a " "diagnostic with the inferred type of the argument. For example::" msgstr "" -"Cuando un validador estático de tipos se encuentra con una invocación a esta " -"función, emite un diagnostico con el tipo del argumento. Por ejemplo::" +"Cuando un verificador de tipos estáticos encuentra una llamada a esta " +"función, emite un diagnóstico con el tipo inferido del argumento. Por " +"ejemplo:" #: ../Doc/library/typing.rst:2824 msgid "" "x: int = 1\n" "reveal_type(x) # Revealed type is \"builtins.int\"" msgstr "" +"x: int = 1\n" +"reveal_type(x) # Tipo revelado es \"builtins.int\"" #: ../Doc/library/typing.rst:2827 msgid "" @@ -4719,44 +5805,49 @@ msgstr "" "tipos maneja una pieza particular de código." #: ../Doc/library/typing.rst:2830 -#, fuzzy msgid "" -"At runtime, this function prints the runtime type of its argument to :data:" -"`sys.stderr` and returns the argument unchanged (allowing the call to be " -"used within an expression)::" +"At runtime, this function prints the runtime type of its argument " +"to :data:`sys.stderr` and returns the argument unchanged (allowing the call " +"to be used within an expression)::" msgstr "" -"En tiempo de ejecución, esta función imprime al *stderr* el tipo en tiempo " -"de ejecución de su argumento y lo retorna in cambios::" +"En tiempo de ejecución, esta función imprime el tipo de tiempo de ejecución " +"de su argumento en :data:`sys.stderr` y devuelve el argumento sin cambios " +"(lo que permite que la llamada se use dentro de una expresión):" #: ../Doc/library/typing.rst:2834 msgid "" "x = reveal_type(1) # prints \"Runtime type is int\"\n" "print(x) # prints \"1\"" msgstr "" +"x = reveal_type(1) # imprime \"Runtime type is int\"\n" +"print(x) # prints \"1\"" #: ../Doc/library/typing.rst:2837 msgid "" "Note that the runtime type may be different from (more or less specific " "than) the type statically inferred by a type checker." msgstr "" +"Tenga en cuenta que el tipo de tiempo de ejecución puede ser diferente (más " +"o menos específico) del tipo inferido estáticamente por un verificador de " +"tipos." #: ../Doc/library/typing.rst:2840 -#, fuzzy msgid "" "Most type checkers support ``reveal_type()`` anywhere, even if the name is " "not imported from ``typing``. Importing the name from ``typing``, however, " "allows your code to run without runtime errors and communicates intent more " "clearly." msgstr "" -"La mayoría de los validadores de tipos soportan ``reveal_type()`` en " -"cualquier lugar, incluso si el nombre no ha sido importado desde ``typing``. " -"Importar el nombre desde ``typing`` permite que el código corra sin errores " -"en tiempo de ejecución y comunica la intención de forma más clara." +"La mayoría de los verificadores de tipos admiten ``reveal_type()`` en " +"cualquier lugar, incluso si el nombre no se importa desde ``typing``. Sin " +"embargo, importar el nombre desde ``typing`` permite que el código se " +"ejecute sin errores de tiempo de ejecución y comunica la intención con mayor " +"claridad." #: ../Doc/library/typing.rst:2851 msgid "" -"Decorator to mark an object as providing :func:`dataclass `-like behavior." +"Decorator to mark an object as providing :func:`dataclass " +"`-like behavior." msgstr "" "Decorador para marcar un objeto como si proporcionara un comportamiento " "similar a :func:`dataclass `." @@ -4773,8 +5864,8 @@ msgstr "" "o una función que sea en sí misma un decorador. La presencia de " "``@dataclass_transform()`` le indica al validador de tipos estáticos que el " "objeto decorado realiza una \"magia\" en tiempo de ejecución que transforma " -"una clase de manera similar a :func:`@dataclasses.dataclass `." +"una clase de manera similar a :func:`@dataclasses.dataclass " +"`." #: ../Doc/library/typing.rst:2861 msgid "Example usage with a decorator function:" @@ -4792,6 +5883,15 @@ msgid "" " id: int\n" " name: str" msgstr "" +"@dataclass_transform()\n" +"def create_model[T](cls: type[T]) -> type[T]:\n" +" ...\n" +" return cls\n" +"\n" +"@create_model\n" +"class CustomerModel:\n" +" id: int\n" +" name: str" #: ../Doc/library/typing.rst:2875 msgid "On a base class::" @@ -4806,6 +5906,12 @@ msgid "" " id: int\n" " name: str" msgstr "" +"@dataclass_transform()\n" +"class ModelBase: ...\n" +"\n" +"class CustomerModel(ModelBase):\n" +" id: int\n" +" name: str" #: ../Doc/library/typing.rst:2884 msgid "On a metaclass::" @@ -4822,19 +5928,27 @@ msgid "" " id: int\n" " name: str" msgstr "" +"@dataclass_transform()\n" +"class ModelMeta(type): ...\n" +"\n" +"class ModelBase(metaclass=ModelMeta): ...\n" +"\n" +"class CustomerModel(ModelBase):\n" +" id: int\n" +" name: str" #: ../Doc/library/typing.rst:2895 msgid "" "The ``CustomerModel`` classes defined above will be treated by type checkers " -"similarly to classes created with :func:`@dataclasses.dataclass `. For example, type checkers will assume these classes have " -"``__init__`` methods that accept ``id`` and ``name``." +"similarly to classes created with :func:`@dataclasses.dataclass " +"`. For example, type checkers will assume these " +"classes have ``__init__`` methods that accept ``id`` and ``name``." msgstr "" "Las clases ``CustomerModel`` definidas arribe serán tratadas por los " -"validadores de tipo de forma similar a las clases que sean creadas con :" -"func:`@dataclasses.dataclass `. Por ejemplo, los " -"validadores de tipo asumirán que estas clases tienen métodos ``__init__`` " -"que aceptan ``id`` y ``name``." +"validadores de tipo de forma similar a las clases que sean creadas " +"con :func:`@dataclasses.dataclass `. Por ejemplo, " +"los validadores de tipo asumirán que estas clases tienen métodos " +"``__init__`` que aceptan ``id`` y ``name``." #: ../Doc/library/typing.rst:2901 msgid "" @@ -4847,11 +5961,11 @@ msgid "" msgstr "" "La clase, metaclase o función decorada puede aceptar los siguientes " "argumentos booleanos, de los cuales los validadores de tipos asumirán que " -"tienen el mismo efecto que tendrían en el decorador :func:`@dataclasses." -"dataclass`: ``init``, ``eq``, ``order``, " -"``unsafe_hash``, ``frozen``, ``match_args``, ``kw_only``, y ``slots``. Debe " -"ser posible evaluar estáticamente el valor de estos argumentos (``True`` o " -"``False``)." +"tienen el mismo efecto que tendrían en el " +"decorador :func:`@dataclasses.dataclass`: ``init``, " +"``eq``, ``order``, ``unsafe_hash``, ``frozen``, ``match_args``, ``kw_only``, " +"y ``slots``. Debe ser posible evaluar estáticamente el valor de estos " +"argumentos (``True`` o ``False``)." #: ../Doc/library/typing.rst:2909 msgid "" @@ -5064,8 +6178,8 @@ msgid "" "only, since they will be overwritten by the non-``@overload``-decorated " "definition. The non-``@overload``-decorated definition, meanwhile, will be " "used at runtime but should be ignored by a type checker. At runtime, " -"calling an ``@overload``-decorated function directly will raise :exc:" -"`NotImplementedError`." +"calling an ``@overload``-decorated function directly will " +"raise :exc:`NotImplementedError`." msgstr "" "Las definiciones decoradas con ``@overload`` son solo para beneficio del " "validador de tipos, ya que serán sobrescritas por la definición no decorada " @@ -5096,6 +6210,17 @@ msgid "" "def process(response):\n" " ... # actual implementation goes here" msgstr "" +"@overload\n" +"def process(response: None) -> None:\n" +" ...\n" +"@overload\n" +"def process(response: int) -> tuple[int, str]:\n" +" ...\n" +"@overload\n" +"def process(response: bytes) -> str:\n" +" ...\n" +"def process(response):\n" +" ... # actual implementation goes here" #: ../Doc/library/typing.rst:3023 msgid "" @@ -5106,8 +6231,8 @@ msgstr "" #: ../Doc/library/typing.rst:3025 msgid "" -"Overloaded functions can now be introspected at runtime using :func:" -"`get_overloads`." +"Overloaded functions can now be introspected at runtime " +"using :func:`get_overloads`." msgstr "" "Ahora es posible introspectar en tiempo de ejecución las funciones " "sobrecargadas utilizando :func:`get_overloads`." @@ -5183,6 +6308,19 @@ msgid "" "class Other(Leaf): # Error reported by type checker\n" " ..." msgstr "" +"class Base:\n" +" @final\n" +" def done(self) -> None:\n" +" ...\n" +"class Sub(Base):\n" +" def done(self) -> None: # Error informado por el verificador de tipos\n" +" ...\n" +"\n" +"@final\n" +"class Leaf:\n" +" ...\n" +"class Other(Leaf): # Error informado por el verificador de tipos\n" +" ..." #: ../Doc/library/typing.rst:3086 msgid "" @@ -5243,6 +6381,9 @@ msgid "" "No type checker ever added support for ``@no_type_check_decorator``. It is " "therefore deprecated, and will be removed in Python 3.15." msgstr "" +"Ningún verificador de tipos agregó compatibilidad con " +"``@no_type_check_decorator``. Por lo tanto, está obsoleto y se eliminará en " +"Python 3.15." #: ../Doc/library/typing.rst:3120 msgid "" @@ -5278,6 +6419,18 @@ msgid "" " def done(self) -> None: # Error reported by type checker\n" " ..." msgstr "" +"class Base:\n" +" def log_status(self) -> None:\n" +" ...\n" +"\n" +"class Sub(Base):\n" +" @override\n" +" def log_status(self) -> None: # Okay: sobreescribe Base.log_status\n" +" ...\n" +"\n" +" @override\n" +" def done(self) -> None: # Error reportado por el verificador de tipos\n" +" ..." #: ../Doc/library/typing.rst:3145 msgid "There is no runtime checking of this property." @@ -5328,6 +6481,12 @@ msgid "" "\n" "def fetch_response() -> Response: ..." msgstr "" +"@type_check_only\n" +"class Response: # privado o no disponible en tiempo de ejecución\n" +" code: int\n" +" def get_header(self, name: str) -> str: ...\n" +"\n" +"def fetch_response() -> Response: ..." #: ../Doc/library/typing.rst:3174 msgid "" @@ -5354,6 +6513,8 @@ msgid "" "This is often the same as ``obj.__annotations__``, but this function makes " "the following changes to the annotations dictionary:" msgstr "" +"A menudo es lo mismo que ``obj.__annotations__``, pero esta función realiza " +"los siguientes cambios en el diccionario de anotaciones:" #: ../Doc/library/typing.rst:3188 msgid "" @@ -5363,16 +6524,23 @@ msgid "" "*globalns* or *localns* is not given, appropriate namespace dictionaries are " "inferred from *obj*." msgstr "" +"Las referencias futuras codificadas como literales de cadena u " +"objetos :class:`ForwardRef` se manejan evaluándolas en el espacio de nombres " +"*globalns*, *localns* y (cuando corresponda) el espacio de nombre :ref:`type " +"parameter ` *obj*. Si no se proporciona *globalns* o *localns*, " +"los diccionarios de espacios de nombres apropiados se infieren de *obj*." #: ../Doc/library/typing.rst:3193 msgid "``None`` is replaced with :class:`types.NoneType`." -msgstr "" +msgstr "``None`` se reemplaza por :class:`types.NoneType`." #: ../Doc/library/typing.rst:3194 msgid "" "If :func:`@no_type_check ` has been applied to *obj*, an " "empty dictionary is returned." msgstr "" +"Si se ha aplicado :func:`@no_type_check ` a *obj*, se " +"devuelve un diccionario vacío." #: ../Doc/library/typing.rst:3196 msgid "" @@ -5383,32 +6551,45 @@ msgid "" "earlier in the :term:`method resolution order` always take precedence over " "annotations on classes appearing later in the method resolution order." msgstr "" +"Si *obj* es una clase ``C``, la función devuelve un diccionario que fusiona " +"las anotaciones de las clases base de ``C`` con las de ``C`` directamente. " +"Esto se hace recorriendo :attr:`C.__mro__ ` y combinando " +"iterativamente los diccionarios ``__annotations__``. Las anotaciones sobre " +"las clases que aparecen antes en :term:`method resolution order` siempre " +"tienen prioridad sobre las anotaciones sobre las clases que aparecen después " +"en el orden de resolución del método." #: ../Doc/library/typing.rst:3203 -#, fuzzy msgid "" "The function recursively replaces all occurrences of ``Annotated[T, ...]`` " -"with ``T``, unless *include_extras* is set to ``True`` (see :class:" -"`Annotated` for more information)." +"with ``T``, unless *include_extras* is set to ``True`` " +"(see :class:`Annotated` for more information)." msgstr "" -"La función reemplaza recursivamente todos los ``Annotated[T, ...]`` con " -"``T``, a menos que ``include_extras`` esté configurado como ``True`` " -"(consulte :class:`Annotated` para obtener más información). Por ejemplo:" +"La función reemplaza recursivamente todas las apariciones de " +"``Annotated[T, ...]`` con ``T``, a menos que *include_extras* se configure " +"en ``True`` (consulte :class:`Annotated` para obtener más información)." #: ../Doc/library/typing.rst:3207 msgid "" "See also :func:`inspect.get_annotations`, a lower-level function that " "returns annotations more directly." msgstr "" +"Consulte también :func:`inspect.get_annotations`, una función de nivel " +"inferior que devuelve anotaciones de forma más directa." #: ../Doc/library/typing.rst:3212 msgid "" "If any forward references in the annotations of *obj* are not resolvable or " -"are not valid Python code, this function will raise an exception such as :" -"exc:`NameError`. For example, this can happen with imported :ref:`type " +"are not valid Python code, this function will raise an exception such " +"as :exc:`NameError`. For example, this can happen with imported :ref:`type " "aliases ` that include forward references, or with names " "imported under :data:`if TYPE_CHECKING `." msgstr "" +"Si alguna referencia hacia adelante en las anotaciones de *obj* no se puede " +"resolver o no es código Python válido, esta función generará una excepción " +"como :exc:`NameError`. Por ejemplo, esto puede suceder con :ref:`type " +"aliases ` importado que incluye referencias hacia adelante o " +"con nombres importados bajo :data:`if TYPE_CHECKING `." #: ../Doc/library/typing.rst:3218 msgid "" @@ -5439,14 +6620,15 @@ msgstr "" #: ../Doc/library/typing.rst:3232 msgid "" "If ``X`` is a typing-module alias for a builtin or :mod:`collections` class, " -"it will be normalized to the original class. If ``X`` is an instance of :" -"class:`ParamSpecArgs` or :class:`ParamSpecKwargs`, return the underlying :" -"class:`ParamSpec`. Return ``None`` for unsupported objects." +"it will be normalized to the original class. If ``X`` is an instance " +"of :class:`ParamSpecArgs` or :class:`ParamSpecKwargs`, return the " +"underlying :class:`ParamSpec`. Return ``None`` for unsupported objects." msgstr "" -"Si ``X`` es un alias de módulo de tipado para una clase incorporada o :mod:" -"`collections`, se normalizará a la clase original. Si ``X`` es una instancia " -"de :class:`ParamSpecArgs` o :class:`ParamSpecKwargs`, devuelve la :class:" -"`ParamSpec` subyacente. Devuelve ``None`` para objetos no soportados." +"Si ``X`` es un alias de módulo de tipado para una clase incorporada " +"o :mod:`collections`, se normalizará a la clase original. Si ``X`` es una " +"instancia de :class:`ParamSpecArgs` o :class:`ParamSpecKwargs`, devuelve " +"la :class:`ParamSpec` subyacente. Devuelve ``None`` para objetos no " +"soportados." #: ../Doc/library/typing.rst:3238 ../Doc/library/typing.rst:3262 msgid "Examples:" @@ -5462,6 +6644,13 @@ msgid "" "assert get_origin(P.args) is P\n" "assert get_origin(P.kwargs) is P" msgstr "" +"assert get_origin(str) is None\n" +"assert get_origin(Dict[str, int]) is dict\n" +"assert get_origin(Union[int, str]) is Union\n" +"assert get_origin(Annotated[str, \"metadata\"]) is Annotated\n" +"P = ParamSpec('P')\n" +"assert get_origin(P.args) is P\n" +"assert get_origin(P.kwargs) is P" #: ../Doc/library/typing.rst:3254 msgid "" @@ -5489,10 +6678,13 @@ msgid "" "assert get_args(Dict[int, str]) == (int, str)\n" "assert get_args(Union[int, str]) == (int, str)" msgstr "" +"assert get_args(int) == ()\n" +"assert get_args(Dict[int, str]) == (int, str)\n" +"assert get_args(Union[int, str]) == (int, str)" #: ../Doc/library/typing.rst:3274 msgid "Return the set of members defined in a :class:`Protocol`." -msgstr "" +msgstr "Devuelve el conjunto de miembros definidos en un :class:`Protocol`." #: ../Doc/library/typing.rst:3276 msgid "" @@ -5503,13 +6695,18 @@ msgid "" ">>> get_protocol_members(P) == frozenset({'a', 'b'})\n" "True" msgstr "" +">>> from typing import Protocol, get_protocol_members\n" +">>> class P(Protocol):\n" +"... def a(self) -> str: ...\n" +"... b: int\n" +">>> get_protocol_members(P) == frozenset({'a', 'b'})\n" +"True" #: ../Doc/library/typing.rst:3285 msgid "Raise :exc:`TypeError` for arguments that are not Protocols." -msgstr "" +msgstr "Genera :exc:`TypeError` para argumentos que no sean protocolos." #: ../Doc/library/typing.rst:3291 -#, fuzzy msgid "Determine if a type is a :class:`Protocol`." msgstr "Compruebe si un tipo es :class:`TypedDict`." @@ -5522,6 +6719,12 @@ msgid "" "is_protocol(P) # => True\n" "is_protocol(int) # => False" msgstr "" +"class P(Protocol):\n" +" def a(self) -> str: ...\n" +" b: int\n" +"\n" +"is_protocol(P) # => True\n" +"is_protocol(int) # => False" #: ../Doc/library/typing.rst:3306 msgid "Check if a type is a :class:`TypedDict`." @@ -5540,6 +6743,16 @@ msgid "" "# not a typed dict itself\n" "assert not is_typeddict(TypedDict)" msgstr "" +"class Film(TypedDict):\n" +" title: str\n" +" year: int\n" +"\n" +"assert is_typeddict(Film)\n" +"assert not is_typeddict(list | str)\n" +"\n" +"# TypedDict es una fábrica para crear diccionarios tipados,\n" +"# no un diccionario tipado en si mismo\n" +"assert not is_typeddict(TypedDict)" #: ../Doc/library/typing.rst:3327 msgid "" @@ -5573,6 +6786,8 @@ msgid "" "A sentinel object used to indicate that a type parameter has no default " "value. For example:" msgstr "" +"Un objeto centinela que se utiliza para indicar que un parámetro de tipo no " +"tiene un valor predeterminado. Por ejemplo:" #: ../Doc/library/typing.rst:3345 msgid "" @@ -5583,6 +6798,12 @@ msgid "" ">>> S.__default__ is None\n" "True" msgstr "" +">>> T = TypeVar(\"T\")\n" +">>> T.__default__ is typing.NoDefault\n" +"True\n" +">>> S = TypeVar(\"S\", default=None)\n" +">>> S.__default__ is None\n" +"True" #: ../Doc/library/typing.rst:3357 msgid "Constant" @@ -5604,6 +6825,11 @@ msgid "" "def fun(arg: 'expensive_mod.SomeType') -> None:\n" " local_var: expensive_mod.AnotherType = other_fun()" msgstr "" +"if TYPE_CHECKING:\n" +" import expensive_mod\n" +"\n" +"def fun(arg: 'expensive_mod.SomeType') -> None:\n" +" local_var: expensive_mod.AnotherType = other_fun()" #: ../Doc/library/typing.rst:3372 msgid "" @@ -5646,8 +6872,8 @@ msgstr "" "preexistentes. Originalmente, se incluyeron en el módulo de tipado para " "admitir la parametrización de estas clases genéricas mediante ``[]``. Sin " "embargo, los alias se volvieron redundantes en Python 3.9 cuando las clases " -"preexistentes correspondientes se mejoraron para admitir ``[]`` (vea :pep:" -"`585`)." +"preexistentes correspondientes se mejoraron para admitir ``[]`` " +"(vea :pep:`585`)." #: ../Doc/library/typing.rst:3400 msgid "" @@ -5691,70 +6917,68 @@ msgid "Deprecated alias to :class:`dict`." msgstr "Alias obsoleto de :class:`dict`." #: ../Doc/library/typing.rst:3422 -#, fuzzy msgid "" "Note that to annotate arguments, it is preferred to use an abstract " "collection type such as :class:`~collections.abc.Mapping` rather than to " "use :class:`dict` or :class:`!typing.Dict`." msgstr "" -"Tenga en cuenta que para anotar argumentos, es preferible utilizar un tipo " -"de colección abstracto como :class:`Mapping` en lugar de utilizar :class:" -"`dict` o :class:`!typing.Dict`." +"Tenga en cuenta que para anotar argumentos, se prefiere utilizar un tipo de " +"colección abstracto como :class:`~collections.abc.Mapping` en lugar de " +"utilizar :class:`dict` o :class:`!typing.Dict`." #: ../Doc/library/typing.rst:3426 msgid "" -":class:`builtins.dict ` now supports subscripting (``[]``). See :pep:" -"`585` and :ref:`types-genericalias`." +":class:`builtins.dict ` now supports subscripting (``[]``). " +"See :pep:`585` and :ref:`types-genericalias`." msgstr "" -":class:`builtins.dict ` ahora soporta subíndices (``[]``). Véase :pep:" -"`585` y :ref:`types-genericalias`." +":class:`builtins.dict ` ahora soporta subíndices (``[]``). " +"Véase :pep:`585` y :ref:`types-genericalias`." #: ../Doc/library/typing.rst:3432 msgid "Deprecated alias to :class:`list`." msgstr "Alias obsoleto de :class:`list`." #: ../Doc/library/typing.rst:3434 -#, fuzzy msgid "" "Note that to annotate arguments, it is preferred to use an abstract " -"collection type such as :class:`~collections.abc.Sequence` or :class:" -"`~collections.abc.Iterable` rather than to use :class:`list` or :class:`!" -"typing.List`." +"collection type such as :class:`~collections.abc.Sequence` " +"or :class:`~collections.abc.Iterable` rather than to use :class:`list` " +"or :class:`!typing.List`." msgstr "" -"Tenga en cuenta que para anotar argumentos, es preferible utilizar un tipo " -"de colección abstracto como :class:`Sequence` o :class:`Iterable` en lugar " -"de utilizar :class:`list` o :class:`!typing.List`." +"Tenga en cuenta que para anotar argumentos, se prefiere utilizar un tipo de " +"colección abstracto como :class:`~collections.abc.Sequence` " +"o :class:`~collections.abc.Iterable` en lugar de utilizar :class:`list` " +"o :class:`!typing.List`." #: ../Doc/library/typing.rst:3439 msgid "" -":class:`builtins.list ` now supports subscripting (``[]``). See :pep:" -"`585` and :ref:`types-genericalias`." +":class:`builtins.list ` now supports subscripting (``[]``). " +"See :pep:`585` and :ref:`types-genericalias`." msgstr "" -":class:`builtins.list ` ahora soporta subíndices (``[]``). Véase :pep:" -"`585` y :ref:`types-genericalias`." +":class:`builtins.list ` ahora soporta subíndices (``[]``). " +"Véase :pep:`585` y :ref:`types-genericalias`." #: ../Doc/library/typing.rst:3445 msgid "Deprecated alias to :class:`builtins.set `." msgstr "Alias obsoleto de :class:`builtins.set `." #: ../Doc/library/typing.rst:3447 -#, fuzzy msgid "" "Note that to annotate arguments, it is preferred to use an abstract " -"collection type such as :class:`collections.abc.Set` rather than to use :" -"class:`set` or :class:`typing.Set`." +"collection type such as :class:`collections.abc.Set` rather than to " +"use :class:`set` or :class:`typing.Set`." msgstr "" -"Tenga en cuenta que para anotar argumentos, es preferible utilizar un tipo " -"de colección abstracto como :class:`AbstractSet` en lugar de utilizar :class:" -"`set` o :class:`!typing.Set`." +"Tenga en cuenta que para anotar argumentos, se prefiere utilizar un tipo de " +"colección abstracto como :class:`collections.abc.Set` en lugar de " +"utilizar :class:`set` o :class:`typing.Set`." #: ../Doc/library/typing.rst:3451 msgid "" -":class:`builtins.set ` now supports subscripting (``[]``). See :pep:" -"`585` and :ref:`types-genericalias`." +":class:`builtins.set ` now supports subscripting (``[]``). " +"See :pep:`585` and :ref:`types-genericalias`." msgstr "" -":class:`builtins.set ` ahora soporta subíndices (``[]``). Véase :pep:" -"`585` y :ref:`types-genericalias`." +":class:`builtins.set ` ahora soporta subíndices (``[]``). " +"Véase :pep:`585` y :ref:`types-genericalias`." #: ../Doc/library/typing.rst:3457 msgid "Deprecated alias to :class:`builtins.frozenset `." @@ -5774,16 +6998,16 @@ msgstr "Alias obsoleto de :class:`tuple`." #: ../Doc/library/typing.rst:3468 msgid "" -":class:`tuple` and ``Tuple`` are special-cased in the type system; see :ref:" -"`annotating-tuples` for more details." +":class:`tuple` and ``Tuple`` are special-cased in the type system; " +"see :ref:`annotating-tuples` for more details." msgstr "" ":class:`tuple` y ``Tuple`` son casos especiales en el sistema de tipos; " "consulte :ref:`annotating-tuples` para más detalles." #: ../Doc/library/typing.rst:3471 msgid "" -":class:`builtins.tuple ` now supports subscripting (``[]``). See :pep:" -"`585` and :ref:`types-genericalias`." +":class:`builtins.tuple ` now supports subscripting (``[]``). " +"See :pep:`585` and :ref:`types-genericalias`." msgstr "" ":class:`builtins.tuple ` ahora soporta el uso de subíndices (``[]``). " "Véase :pep:`585` y :ref:`types-genericalias`." @@ -5797,13 +7021,13 @@ msgid "" "See :ref:`type-of-class-objects` for details on using :class:`type` or " "``typing.Type`` in type annotations." msgstr "" -"Vea :ref:`type-of-class-objects` para obtener detalles sobre el uso de :" -"class:`type` o ``typing.Type`` en anotaciones de tipo." +"Vea :ref:`type-of-class-objects` para obtener detalles sobre el uso " +"de :class:`type` o ``typing.Type`` en anotaciones de tipo." #: ../Doc/library/typing.rst:3484 msgid "" -":class:`builtins.type ` now supports subscripting (``[]``). See :pep:" -"`585` and :ref:`types-genericalias`." +":class:`builtins.type ` now supports subscripting (``[]``). " +"See :pep:`585` and :ref:`types-genericalias`." msgstr "" ":class:`builtins.type ` ahora soporta el uso de subíndices (``[]``). " "Véase :pep:`585` y :ref:`types-genericalias`." @@ -5818,11 +7042,11 @@ msgstr "Alias obsoleto de :class:`collections.defaultdict`." #: ../Doc/library/typing.rst:3499 msgid "" -":class:`collections.defaultdict` now supports subscripting (``[]``). See :" -"pep:`585` and :ref:`types-genericalias`." +":class:`collections.defaultdict` now supports subscripting (``[]``). " +"See :pep:`585` and :ref:`types-genericalias`." msgstr "" -":class:`collections.defaultdict` ahora soporta subíndices (``[]``). Véase :" -"pep:`585` y :ref:`types-genericalias`." +":class:`collections.defaultdict` ahora soporta subíndices (``[]``). " +"Véase :pep:`585` y :ref:`types-genericalias`." #: ../Doc/library/typing.rst:3505 msgid "Deprecated alias to :class:`collections.OrderedDict`." @@ -5830,11 +7054,11 @@ msgstr "Alias obsoleto de :class:`collections.OrderedDict`." #: ../Doc/library/typing.rst:3509 msgid "" -":class:`collections.OrderedDict` now supports subscripting (``[]``). See :" -"pep:`585` and :ref:`types-genericalias`." +":class:`collections.OrderedDict` now supports subscripting (``[]``). " +"See :pep:`585` and :ref:`types-genericalias`." msgstr "" -":class:`collections.OrderedDict` ahora soporta subíndices (``[]``). Véase :" -"pep:`585` y :ref:`types-genericalias`." +":class:`collections.OrderedDict` ahora soporta subíndices (``[]``). " +"Véase :pep:`585` y :ref:`types-genericalias`." #: ../Doc/library/typing.rst:3515 msgid "Deprecated alias to :class:`collections.ChainMap`." @@ -5842,11 +7066,11 @@ msgstr "Alias obsoleto de :class:`collections.ChainMap`." #: ../Doc/library/typing.rst:3519 msgid "" -":class:`collections.ChainMap` now supports subscripting (``[]``). See :pep:" -"`585` and :ref:`types-genericalias`." +":class:`collections.ChainMap` now supports subscripting (``[]``). " +"See :pep:`585` and :ref:`types-genericalias`." msgstr "" -":class:`collections.ChainMap` ahora soporta subíndices (``[]``). Véase :pep:" -"`585` y :ref:`types-genericalias`." +":class:`collections.ChainMap` ahora soporta subíndices (``[]``). " +"Véase :pep:`585` y :ref:`types-genericalias`." #: ../Doc/library/typing.rst:3525 msgid "Deprecated alias to :class:`collections.Counter`." @@ -5854,11 +7078,11 @@ msgstr "Alias obsoleto de :class:`collections.Counter`." #: ../Doc/library/typing.rst:3529 msgid "" -":class:`collections.Counter` now supports subscripting (``[]``). See :pep:" -"`585` and :ref:`types-genericalias`." +":class:`collections.Counter` now supports subscripting (``[]``). " +"See :pep:`585` and :ref:`types-genericalias`." msgstr "" -":class:`collections.Counter` ahora soporta subíndices (``[]``)`. Véase :pep:" -"`585` y :ref:`types-genericalias`." +":class:`collections.Counter` ahora soporta subíndices (``[]``)`. " +"Véase :pep:`585` y :ref:`types-genericalias`." #: ../Doc/library/typing.rst:3535 msgid "Deprecated alias to :class:`collections.deque`." @@ -5866,11 +7090,11 @@ msgstr "Alias obsoleto de :class:`collections.deque`." #: ../Doc/library/typing.rst:3539 msgid "" -":class:`collections.deque` now supports subscripting (``[]``). See :pep:" -"`585` and :ref:`types-genericalias`." +":class:`collections.deque` now supports subscripting (``[]``). " +"See :pep:`585` and :ref:`types-genericalias`." msgstr "" -":class:`collections.deque` ahora soporta subíndices (``[]``). Véase :pep:" -"`585` y :ref:`types-genericalias`." +":class:`collections.deque` ahora soporta subíndices (``[]``). " +"Véase :pep:`585` y :ref:`types-genericalias`." #: ../Doc/library/typing.rst:3546 msgid "Aliases to other concrete types" @@ -5886,20 +7110,20 @@ msgstr "" #: ../Doc/library/typing.rst:3554 msgid "" -"These types (and the corresponding functions) are generic over :data:" -"`AnyStr`. ``Pattern`` can be specialised as ``Pattern[str]`` or " +"These types (and the corresponding functions) are generic " +"over :data:`AnyStr`. ``Pattern`` can be specialised as ``Pattern[str]`` or " "``Pattern[bytes]``; ``Match`` can be specialised as ``Match[str]`` or " "``Match[bytes]``." msgstr "" -"Estos tipos (y las funciones correspondientes) son genéricos sobre :data:" -"`AnyStr`. ``Pattern`` se puede especializar como ``Pattern[str]`` o " -"``Pattern[bytes]``; ``Match`` se puede especializar como ``Match[str]`` o " -"``Match[bytes]``." +"Estos tipos (y las funciones correspondientes) son genéricos " +"sobre :data:`AnyStr`. ``Pattern`` se puede especializar como " +"``Pattern[str]`` o ``Pattern[bytes]``; ``Match`` se puede especializar como " +"``Match[str]`` o ``Match[bytes]``." #: ../Doc/library/typing.rst:3559 msgid "" -"Classes ``Pattern`` and ``Match`` from :mod:`re` now support ``[]``. See :" -"pep:`585` and :ref:`types-genericalias`." +"Classes ``Pattern`` and ``Match`` from :mod:`re` now support ``[]``. " +"See :pep:`585` and :ref:`types-genericalias`." msgstr "" "Las clases ``Pattern`` y ``Match`` de :mod:`re` ahora soportan ``[]``. " "Véase :pep:`585` y :ref:`types-genericalias`." @@ -5929,6 +7153,8 @@ msgid "" "def add_unicode_checkmark(text: Text) -> Text:\n" " return text + u' \\u2713'" msgstr "" +"def add_unicode_checkmark(text: Text) -> Text:\n" +" return text + u' \\u2713'" #: ../Doc/library/typing.rst:3579 msgid "" @@ -5951,19 +7177,19 @@ msgstr "Alias obsoleto de :class:`collections.abc.Set`." #: ../Doc/library/typing.rst:3595 msgid "" -":class:`collections.abc.Set` now supports subscripting (``[]``). See :pep:" -"`585` and :ref:`types-genericalias`." +":class:`collections.abc.Set` now supports subscripting (``[]``). " +"See :pep:`585` and :ref:`types-genericalias`." msgstr "" -":class:`collections.abc.Set` ahora soporta subíndices (``[]``). Véase :pep:" -"`585` y :ref:`types-genericalias`." +":class:`collections.abc.Set` ahora soporta subíndices (``[]``). " +"Véase :pep:`585` y :ref:`types-genericalias`." #: ../Doc/library/typing.rst:3601 msgid "" -"This type represents the types :class:`bytes`, :class:`bytearray`, and :" -"class:`memoryview` of byte sequences." +"This type represents the types :class:`bytes`, :class:`bytearray`, " +"and :class:`memoryview` of byte sequences." msgstr "" -"Este tipo representa a los tipos :class:`bytes`, :class:`bytearray`, y :" -"class:`memoryview` de secuencias de bytes." +"Este tipo representa a los tipos :class:`bytes`, :class:`bytearray`, " +"y :class:`memoryview` de secuencias de bytes." #: ../Doc/library/typing.rst:3604 msgid "" @@ -5979,8 +7205,8 @@ msgstr "Alias obsoleto de :class:`collections.abc.Collection`." #: ../Doc/library/typing.rst:3613 msgid "" -":class:`collections.abc.Collection` now supports subscripting (``[]``). See :" -"pep:`585` and :ref:`types-genericalias`." +":class:`collections.abc.Collection` now supports subscripting (``[]``). " +"See :pep:`585` and :ref:`types-genericalias`." msgstr "" ":class:`collections.abc.Collection` ahora soporta la sintaxis de subíndice " "(``[]``). Véase :pep:`585` y :ref:`types-genericalias`." @@ -5991,11 +7217,11 @@ msgstr "Alias obsoleto de :class:`collections.abc.Container`." #: ../Doc/library/typing.rst:3621 msgid "" -":class:`collections.abc.Container` now supports subscripting (``[]``). See :" -"pep:`585` and :ref:`types-genericalias`." +":class:`collections.abc.Container` now supports subscripting (``[]``). " +"See :pep:`585` and :ref:`types-genericalias`." msgstr "" -":class:`collections.abc.Container` ahora soporta subíndices (``[]``). Véase :" -"pep:`585` y :ref:`types-genericalias`." +":class:`collections.abc.Container` ahora soporta subíndices (``[]``). " +"Véase :pep:`585` y :ref:`types-genericalias`." #: ../Doc/library/typing.rst:3627 msgid "Deprecated alias to :class:`collections.abc.ItemsView`." @@ -6003,11 +7229,11 @@ msgstr "Alias obsoleto de :class:`collections.abc.ItemsView`." #: ../Doc/library/typing.rst:3629 msgid "" -":class:`collections.abc.ItemsView` now supports subscripting (``[]``). See :" -"pep:`585` and :ref:`types-genericalias`." +":class:`collections.abc.ItemsView` now supports subscripting (``[]``). " +"See :pep:`585` and :ref:`types-genericalias`." msgstr "" -":class:`collections.abc.ItemsView` ahora soporta subíndices (``[]``). Véase :" -"pep:`585` y :ref:`types-genericalias`." +":class:`collections.abc.ItemsView` ahora soporta subíndices (``[]``). " +"Véase :pep:`585` y :ref:`types-genericalias`." #: ../Doc/library/typing.rst:3635 msgid "Deprecated alias to :class:`collections.abc.KeysView`." @@ -6015,11 +7241,11 @@ msgstr "Alias obsoleto de :class:`collections.abc.KeysView`." #: ../Doc/library/typing.rst:3637 msgid "" -":class:`collections.abc.KeysView` now supports subscripting (``[]``). See :" -"pep:`585` and :ref:`types-genericalias`." +":class:`collections.abc.KeysView` now supports subscripting (``[]``). " +"See :pep:`585` and :ref:`types-genericalias`." msgstr "" -":class:`collections.abc.KeysView` ahora soporta subíndices (``[]``). Véase :" -"pep:`585` y :ref:`types-genericalias`." +":class:`collections.abc.KeysView` ahora soporta subíndices (``[]``). " +"Véase :pep:`585` y :ref:`types-genericalias`." #: ../Doc/library/typing.rst:3643 msgid "Deprecated alias to :class:`collections.abc.Mapping`." @@ -6027,11 +7253,11 @@ msgstr "Alias obsoleto de :class:`collections.abc.Mapping`." #: ../Doc/library/typing.rst:3645 msgid "" -":class:`collections.abc.Mapping` now supports subscripting (``[]``). See :" -"pep:`585` and :ref:`types-genericalias`." +":class:`collections.abc.Mapping` now supports subscripting (``[]``). " +"See :pep:`585` and :ref:`types-genericalias`." msgstr "" -":class:`collections.abc.Mapping` ahora soporta subíndices (``[]``). Véase :" -"pep:`585` y :ref:`types-genericalias`." +":class:`collections.abc.Mapping` ahora soporta subíndices (``[]``). " +"Véase :pep:`585` y :ref:`types-genericalias`." #: ../Doc/library/typing.rst:3651 msgid "Deprecated alias to :class:`collections.abc.MappingView`." @@ -6075,8 +7301,8 @@ msgstr "Alias obsoleto de :class:`collections.abc.MutableSet`." #: ../Doc/library/typing.rst:3679 msgid "" -":class:`collections.abc.MutableSet` now supports subscripting (``[]``). See :" -"pep:`585` and :ref:`types-genericalias`." +":class:`collections.abc.MutableSet` now supports subscripting (``[]``). " +"See :pep:`585` and :ref:`types-genericalias`." msgstr "" ":class:`collections.abc.MutableSet` ahora soporta subíndices (``[]``). " "Véase :pep:`585` y :ref:`types-genericalias`." @@ -6087,11 +7313,11 @@ msgstr "Alias obsoleto de :class:`collections.abc.Sequence`." #: ../Doc/library/typing.rst:3687 msgid "" -":class:`collections.abc.Sequence` now supports subscripting (``[]``). See :" -"pep:`585` and :ref:`types-genericalias`." +":class:`collections.abc.Sequence` now supports subscripting (``[]``). " +"See :pep:`585` and :ref:`types-genericalias`." msgstr "" -":class:`collections.abc.Sequence` ahora soporta subíndices (``[]``). Véase :" -"pep:`585` y :ref:`types-genericalias`." +":class:`collections.abc.Sequence` ahora soporta subíndices (``[]``). " +"Véase :pep:`585` y :ref:`types-genericalias`." #: ../Doc/library/typing.rst:3693 msgid "Deprecated alias to :class:`collections.abc.ValuesView`." @@ -6099,8 +7325,8 @@ msgstr "Alias obsoleto de :class:`collections.abc.ValuesView`." #: ../Doc/library/typing.rst:3695 msgid "" -":class:`collections.abc.ValuesView` now supports subscripting (``[]``). See :" -"pep:`585` and :ref:`types-genericalias`." +":class:`collections.abc.ValuesView` now supports subscripting (``[]``). " +"See :pep:`585` and :ref:`types-genericalias`." msgstr "" ":class:`collections.abc.ValuesView` ahora soporta subíndices (``[]``). " "Véase :pep:`585` y :ref:`types-genericalias`." @@ -6114,37 +7340,36 @@ msgid "Deprecated alias to :class:`collections.abc.Coroutine`." msgstr "Alias obsoleto de :class:`collections.abc.Coroutine`." #: ../Doc/library/typing.rst:3708 -#, fuzzy msgid "" -"See :ref:`annotating-generators-and-coroutines` for details on using :class:" -"`collections.abc.Coroutine` and ``typing.Coroutine`` in type annotations." +"See :ref:`annotating-generators-and-coroutines` for details on " +"using :class:`collections.abc.Coroutine` and ``typing.Coroutine`` in type " +"annotations." msgstr "" -"Vea :ref:`annotating-callables` para información detallada de cómo usar :" -"class:`collections.abc.Callable` y ``typing.Callable`` en anotaciones de " -"tipo." +"Consulte :ref:`annotating-generators-and-coroutines` para obtener detalles " +"sobre el uso de :class:`collections.abc.Coroutine` y ``typing.Coroutine`` en " +"anotaciones de tipo." #: ../Doc/library/typing.rst:3714 msgid "" -":class:`collections.abc.Coroutine` now supports subscripting (``[]``). See :" -"pep:`585` and :ref:`types-genericalias`." +":class:`collections.abc.Coroutine` now supports subscripting (``[]``). " +"See :pep:`585` and :ref:`types-genericalias`." msgstr "" -":class:`collections.abc.Coroutine` ahora soporta subíndices (``[]``). Véase :" -"pep:`585` y :ref:`types-genericalias`." +":class:`collections.abc.Coroutine` ahora soporta subíndices (``[]``). " +"Véase :pep:`585` y :ref:`types-genericalias`." #: ../Doc/library/typing.rst:3720 msgid "Deprecated alias to :class:`collections.abc.AsyncGenerator`." msgstr "Alias obsoleto de :class:`collections.abc.AsyncGenerator`." #: ../Doc/library/typing.rst:3722 -#, fuzzy msgid "" -"See :ref:`annotating-generators-and-coroutines` for details on using :class:" -"`collections.abc.AsyncGenerator` and ``typing.AsyncGenerator`` in type " -"annotations." +"See :ref:`annotating-generators-and-coroutines` for details on " +"using :class:`collections.abc.AsyncGenerator` and ``typing.AsyncGenerator`` " +"in type annotations." msgstr "" -"Vea :ref:`annotating-callables` para información detallada de cómo usar :" -"class:`collections.abc.Callable` y ``typing.Callable`` en anotaciones de " -"tipo." +"Consulte :ref:`annotating-generators-and-coroutines` para obtener detalles " +"sobre el uso de :class:`collections.abc.AsyncGenerator` y " +"``typing.AsyncGenerator`` en anotaciones de tipo." #: ../Doc/library/typing.rst:3728 msgid "" @@ -6156,7 +7381,7 @@ msgstr "" #: ../Doc/library/typing.rst:3733 msgid "The ``SendType`` parameter now has a default." -msgstr "" +msgstr "El parámetro ``SendType`` ahora tiene un valor predeterminado." #: ../Doc/library/typing.rst:3738 msgid "Deprecated alias to :class:`collections.abc.AsyncIterable`." @@ -6188,11 +7413,11 @@ msgstr "Alias obsoleto de :class:`collections.abc.Awaitable`." #: ../Doc/library/typing.rst:3762 msgid "" -":class:`collections.abc.Awaitable` now supports subscripting (``[]``). See :" -"pep:`585` and :ref:`types-genericalias`." +":class:`collections.abc.Awaitable` now supports subscripting (``[]``). " +"See :pep:`585` and :ref:`types-genericalias`." msgstr "" -":class:`collections.abc.Awaitable` ahora soporta subíndices (``[]``). Véase :" -"pep:`585` y :ref:`types-genericalias`." +":class:`collections.abc.Awaitable` ahora soporta subíndices (``[]``). " +"Véase :pep:`585` y :ref:`types-genericalias`." #: ../Doc/library/typing.rst:3769 msgid "Aliases to other ABCs in :mod:`collections.abc`" @@ -6204,11 +7429,11 @@ msgstr "Alias obsoleto de :class:`collections.abc.Iterable`." #: ../Doc/library/typing.rst:3775 msgid "" -":class:`collections.abc.Iterable` now supports subscripting (``[]``). See :" -"pep:`585` and :ref:`types-genericalias`." +":class:`collections.abc.Iterable` now supports subscripting (``[]``). " +"See :pep:`585` and :ref:`types-genericalias`." msgstr "" -":class:`collections.abc.Iterable` ahora soporta subíndices (``[]``). Véase :" -"pep:`585` y :ref:`types-genericalias`." +":class:`collections.abc.Iterable` ahora soporta subíndices (``[]``). " +"Véase :pep:`585` y :ref:`types-genericalias`." #: ../Doc/library/typing.rst:3781 msgid "Deprecated alias to :class:`collections.abc.Iterator`." @@ -6216,11 +7441,11 @@ msgstr "Alias obsoleto de :class:`collections.abc.Iterator`." #: ../Doc/library/typing.rst:3783 msgid "" -":class:`collections.abc.Iterator` now supports subscripting (``[]``). See :" -"pep:`585` and :ref:`types-genericalias`." +":class:`collections.abc.Iterator` now supports subscripting (``[]``). " +"See :pep:`585` and :ref:`types-genericalias`." msgstr "" -":class:`collections.abc.Iterator` ahora soporta subíndices (``[]``). Véase :" -"pep:`585` y :ref:`types-genericalias`." +":class:`collections.abc.Iterator` ahora soporta subíndices (``[]``). " +"Véase :pep:`585` y :ref:`types-genericalias`." #: ../Doc/library/typing.rst:3789 msgid "Deprecated alias to :class:`collections.abc.Callable`." @@ -6228,46 +7453,47 @@ msgstr "Alias obsoleto de :class:`collections.abc.Callable`." #: ../Doc/library/typing.rst:3791 msgid "" -"See :ref:`annotating-callables` for details on how to use :class:" -"`collections.abc.Callable` and ``typing.Callable`` in type annotations." +"See :ref:`annotating-callables` for details on how to " +"use :class:`collections.abc.Callable` and ``typing.Callable`` in type " +"annotations." msgstr "" -"Vea :ref:`annotating-callables` para información detallada de cómo usar :" -"class:`collections.abc.Callable` y ``typing.Callable`` en anotaciones de " -"tipo." +"Vea :ref:`annotating-callables` para información detallada de cómo " +"usar :class:`collections.abc.Callable` y ``typing.Callable`` en anotaciones " +"de tipo." #: ../Doc/library/typing.rst:3794 msgid "" -":class:`collections.abc.Callable` now supports subscripting (``[]``). See :" -"pep:`585` and :ref:`types-genericalias`." +":class:`collections.abc.Callable` now supports subscripting (``[]``). " +"See :pep:`585` and :ref:`types-genericalias`." msgstr "" -":class:`collections.abc.Callable` ahora soporta subíndices (``[]``). Véase :" -"pep:`585` y :ref:`types-genericalias`." +":class:`collections.abc.Callable` ahora soporta subíndices (``[]``). " +"Véase :pep:`585` y :ref:`types-genericalias`." #: ../Doc/library/typing.rst:3804 msgid "Deprecated alias to :class:`collections.abc.Generator`." msgstr "Alias obsoleto de :class:`collections.abc.Generator`." #: ../Doc/library/typing.rst:3806 -#, fuzzy msgid "" -"See :ref:`annotating-generators-and-coroutines` for details on using :class:" -"`collections.abc.Generator` and ``typing.Generator`` in type annotations." +"See :ref:`annotating-generators-and-coroutines` for details on " +"using :class:`collections.abc.Generator` and ``typing.Generator`` in type " +"annotations." msgstr "" -"Vea :ref:`annotating-callables` para información detallada de cómo usar :" -"class:`collections.abc.Callable` y ``typing.Callable`` en anotaciones de " -"tipo." +"Consulte :ref:`annotating-generators-and-coroutines` para obtener detalles " +"sobre el uso de :class:`collections.abc.Generator` y ``typing.Generator`` en " +"anotaciones de tipo." #: ../Doc/library/typing.rst:3810 msgid "" -":class:`collections.abc.Generator` now supports subscripting (``[]``). See :" -"pep:`585` and :ref:`types-genericalias`." +":class:`collections.abc.Generator` now supports subscripting (``[]``). " +"See :pep:`585` and :ref:`types-genericalias`." msgstr "" -":class:`collections.abc.Generator` ahora soporta subíndices (``[]``). Véase :" -"pep:`585` y :ref:`types-genericalias`." +":class:`collections.abc.Generator` ahora soporta subíndices (``[]``). " +"Véase :pep:`585` y :ref:`types-genericalias`." #: ../Doc/library/typing.rst:3814 msgid "Default values for the send and return types were added." -msgstr "" +msgstr "Valores por defecto para los tipos send y return fueron agregados." #: ../Doc/library/typing.rst:3819 msgid "Deprecated alias to :class:`collections.abc.Hashable`." @@ -6283,8 +7509,8 @@ msgstr "Alias obsoleto de :class:`collections.abc.Reversible`." #: ../Doc/library/typing.rst:3828 msgid "" -":class:`collections.abc.Reversible` now supports subscripting (``[]``). See :" -"pep:`585` and :ref:`types-genericalias`." +":class:`collections.abc.Reversible` now supports subscripting (``[]``). " +"See :pep:`585` and :ref:`types-genericalias`." msgstr "" ":class:`collections.abc.Reversible` ahora soporta subíndices (``[]``). " "Véase :pep:`585` y :ref:`types-genericalias`." @@ -6307,11 +7533,15 @@ msgstr "Alias obsoleto de :class:`contextlib.AbstractContextManager`." #: ../Doc/library/typing.rst:3848 msgid "" -"The first type parameter, ``T_co``, represents the type returned by the :" -"meth:`~object.__enter__` method. The optional second type parameter, " +"The first type parameter, ``T_co``, represents the type returned by " +"the :meth:`~object.__enter__` method. The optional second type parameter, " "``ExitT_co``, which defaults to ``bool | None``, represents the type " "returned by the :meth:`~object.__exit__` method." msgstr "" +"El primer parámetro de tipo, ``T_co``, representa el tipo devuelto por el " +"método :meth:`~object.__enter__`. El segundo parámetro de tipo opcional, " +"``ExitT_co``, cuyo valor predeterminado es ``bool | None``, representa el " +"tipo devuelto por el método :meth:`~object.__exit__`." #: ../Doc/library/typing.rst:3855 msgid "" @@ -6323,7 +7553,7 @@ msgstr "" #: ../Doc/library/typing.rst:3860 msgid "Added the optional second type parameter, ``ExitT_co``." -msgstr "" +msgstr "Se agregó el segundo parámetro de tipo opcional, ``ExitT_co``." #: ../Doc/library/typing.rst:3865 msgid "Deprecated alias to :class:`contextlib.AbstractAsyncContextManager`." @@ -6331,11 +7561,15 @@ msgstr "Alias obsoleto de :class:`contextlib.AbstractAsyncContextManager`." #: ../Doc/library/typing.rst:3867 msgid "" -"The first type parameter, ``T_co``, represents the type returned by the :" -"meth:`~object.__aenter__` method. The optional second type parameter, " +"The first type parameter, ``T_co``, represents the type returned by " +"the :meth:`~object.__aenter__` method. The optional second type parameter, " "``AExitT_co``, which defaults to ``bool | None``, represents the type " "returned by the :meth:`~object.__aexit__` method." msgstr "" +"El primer parámetro de tipo, ``T_co``, representa el tipo devuelto por el " +"método :meth:`~object.__aenter__`. El segundo parámetro de tipo opcional, " +"``AExitT_co``, cuyo valor predeterminado es ``bool | None``, representa el " +"tipo devuelto por el método :meth:`~object.__aexit__`." #: ../Doc/library/typing.rst:3874 msgid "" @@ -6347,7 +7581,7 @@ msgstr "" #: ../Doc/library/typing.rst:3879 msgid "Added the optional second type parameter, ``AExitT_co``." -msgstr "" +msgstr "Se agregó el segundo parámetro de tipo opcional, ``AExitT_co``." #: ../Doc/library/typing.rst:3883 msgid "Deprecation Timeline of Major Features" @@ -6448,33 +7682,28 @@ msgstr ":pep:`695`" #: ../Doc/library/typing.rst:3916 msgid ":func:`@typing.no_type_check_decorator `" -msgstr "" +msgstr ":func:`@typing.no_type_check_decorator `" #: ../Doc/library/typing.rst:3917 ../Doc/library/typing.rst:3921 msgid "3.13" msgstr "3.13" #: ../Doc/library/typing.rst:3918 -#, fuzzy msgid "3.15" -msgstr "3.14" +msgstr "3.15" #: ../Doc/library/typing.rst:3919 -#, fuzzy msgid ":gh:`106309`" -msgstr ":gh:`94309`" +msgstr ":gh:`106309`" #: ../Doc/library/typing.rst:3920 -#, fuzzy msgid ":data:`typing.AnyStr`" -msgstr ":data:`typing.Text`" +msgstr ":data:`typing.AnyStr`" #: ../Doc/library/typing.rst:3922 -#, fuzzy msgid "3.18" -msgstr "3.8" +msgstr "3.18" #: ../Doc/library/typing.rst:3923 -#, fuzzy msgid ":gh:`105578`" -msgstr ":gh:`91896`" +msgstr ":gh:`105578`" From 589239ed07bef3838bd1b142a3641c941045d1f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cristi=C3=A1n=20Maureira-Fredes?= Date: Tue, 14 Oct 2025 13:21:25 +0200 Subject: [PATCH 68/78] Translate c-api/init (#3331) Closes #3242 --- c-api/init.po | 1854 +++++++++++++++++++---------------- dictionaries/c-api_init.txt | 7 +- 2 files changed, 1028 insertions(+), 833 deletions(-) diff --git a/c-api/init.po b/c-api/init.po index 49129398b0..297d52deb6 100644 --- a/c-api/init.po +++ b/c-api/init.po @@ -11,15 +11,16 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: 2023-01-14 14:22-0500\n" -"Last-Translator: CatalinaArrey \n" -"Language: es\n" +"PO-Revision-Date: 2025-10-14 13:14+0200\n" +"Last-Translator: Cristián Maureira-Fredes \n" "Language-Team: python-doc-es\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\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.16.0\n" +"X-Generator: Poedit 3.6\n" #: ../Doc/c-api/init.rst:8 msgid "Initialization, Finalization, and Threads" @@ -42,10 +43,10 @@ msgid "" "exception of a few functions and the :ref:`global configuration variables " "`." msgstr "" -"En una aplicación que incorpora Python, se debe llamar a la función :c:func:" -"`Py_Initialize` antes de usar cualquier otra función de API Python/C; con la " -"excepción de algunas funciones y :ref:`variables de configuración global " -"`." +"En una aplicación que incorpora Python, se debe llamar a la " +"función :c:func:`Py_Initialize` antes de usar cualquier otra función de API " +"Python/C; con la excepción de algunas funciones y :ref:`variables de " +"configuración global `." #: ../Doc/c-api/init.rst:22 msgid "" @@ -67,9 +68,8 @@ msgid ":c:func:`PyImport_ExtendInittab`" msgstr ":c:func:`PyImport_ExtendInittab`" #: ../Doc/c-api/init.rst:28 -#, fuzzy msgid ":c:func:`!PyInitFrozenExtensions`" -msgstr ":c:func:`PyInitFrozenExtensions`" +msgstr ":c:func:`!PyInitFrozenExtensions`" #: ../Doc/c-api/init.rst:29 msgid ":c:func:`PyMem_SetAllocator`" @@ -160,33 +160,26 @@ msgid ":c:func:`PyMem_RawFree`" msgstr ":c:func:`PyMem_RawFree`" #: ../Doc/c-api/init.rst:58 -#, fuzzy msgid "Synchronization:" -msgstr "Notificaciones asincrónicas" +msgstr "Sincronización:" #: ../Doc/c-api/init.rst:60 -#, fuzzy msgid ":c:func:`PyMutex_Lock`" -msgstr ":c:func:`PyMem_RawMalloc`" +msgstr ":c:func:`PyMutex_Lock`" #: ../Doc/c-api/init.rst:61 -#, fuzzy msgid ":c:func:`PyMutex_Unlock`" -msgstr ":c:func:`PyMem_RawMalloc`" +msgstr ":c:func:`PyMutex_Unlock`" #: ../Doc/c-api/init.rst:65 msgid "" -"The following functions **should not be called** before :c:func:" -"`Py_Initialize`: :c:func:`Py_EncodeLocale`, :c:func:`Py_GetPath`, :c:func:" -"`Py_GetPrefix`, :c:func:`Py_GetExecPrefix`, :c:func:" -"`Py_GetProgramFullPath`, :c:func:`Py_GetPythonHome`, :c:func:" -"`Py_GetProgramName` and :c:func:`PyEval_InitThreads`." +"The following functions **should not be called** " +"before :c:func:`Py_Initialize`: :c:func:`Py_EncodeLocale`, :c:func:`Py_GetPath`, :c:func:`Py_GetPrefix`, :c:func:`Py_GetExecPrefix`, :c:func:`Py_GetProgramFullPath`, :c:func:`Py_GetPythonHome`, :c:func:`Py_GetProgramName` " +"and :c:func:`PyEval_InitThreads`." msgstr "" -"Las siguientes funciones **no deben llamarse** antes de :c:func:" -"`Py_Initialize`: :c:func:`Py_EncodeLocale`, :c:func:`Py_GetPath`, :c:func:" -"`Py_GetPrefix`, :c:func:`Py_GetExecPrefix`, :c:func:" -"`Py_GetProgramFullPath`, :c:func:`Py_GetPythonHome`, :c:func:" -"`Py_GetProgramName` y :c:func:`PyEval_InitThreads`." +"Las siguientes funciones **no deben llamarse** antes " +"de :c:func:`Py_Initialize`: :c:func:`Py_EncodeLocale`, :c:func:`Py_GetPath`, :c:func:`Py_GetPrefix`, :c:func:`Py_GetExecPrefix`, :c:func:`Py_GetProgramFullPath`, :c:func:`Py_GetPythonHome`, :c:func:`Py_GetProgramName` " +"y :c:func:`PyEval_InitThreads`." #: ../Doc/c-api/init.rst:75 msgid "Global configuration variables" @@ -195,8 +188,8 @@ msgstr "Variables de configuración global" #: ../Doc/c-api/init.rst:77 msgid "" "Python has variables for the global configuration to control different " -"features and options. By default, these flags are controlled by :ref:" -"`command line options `." +"features and options. By default, these flags are controlled " +"by :ref:`command line options `." msgstr "" "Python tiene variables para la configuración global para controlar " "diferentes características y opciones. De forma predeterminada, estos " @@ -206,50 +199,48 @@ msgstr "" #: ../Doc/c-api/init.rst:81 msgid "" "When a flag is set by an option, the value of the flag is the number of " -"times that the option was set. For example, ``-b`` sets :c:data:" -"`Py_BytesWarningFlag` to 1 and ``-bb`` sets :c:data:`Py_BytesWarningFlag` to " -"2." +"times that the option was set. For example, ``-b`` " +"sets :c:data:`Py_BytesWarningFlag` to 1 and ``-bb`` " +"sets :c:data:`Py_BytesWarningFlag` to 2." msgstr "" "Cuando una opción establece un indicador, el valor del indicador es la " -"cantidad de veces que se configuró la opción. Por ejemplo, ``-b`` establece :" -"c:data:`Py_BytesWarningFlag` en 1 y ``-bb`` establece :c:data:" -"`Py_BytesWarningFlag` en 2." +"cantidad de veces que se configuró la opción. Por ejemplo, ``-b`` " +"establece :c:data:`Py_BytesWarningFlag` en 1 y ``-bb`` " +"establece :c:data:`Py_BytesWarningFlag` en 2." #: ../Doc/c-api/init.rst:87 -#, fuzzy msgid "" -"This API is kept for backward compatibility: setting :c:member:`PyConfig." -"bytes_warning` should be used instead, see :ref:`Python Initialization " -"Configuration `." +"This API is kept for backward compatibility: " +"setting :c:member:`PyConfig.bytes_warning` should be used instead, " +"see :ref:`Python Initialization Configuration `." msgstr "" -"Esta API se mantiene para la compatibilidad con versiones anteriores: en su " -"lugar, se debe usar la configuración de :c:member:`PyConfig.home`, consulta :" -"ref:`Configuración de inicialización de Python `." +"Esta API se mantiene por compatibilidad con versiones anteriores: se debe " +"utilizar la configuración :c:member:`PyConfig.bytes_warning` en su lugar, " +"consulte :ref:`Python Initialization Configuration `." #: ../Doc/c-api/init.rst:91 msgid "" -"Issue a warning when comparing :class:`bytes` or :class:`bytearray` with :" -"class:`str` or :class:`bytes` with :class:`int`. Issue an error if greater " -"or equal to ``2``." +"Issue a warning when comparing :class:`bytes` or :class:`bytearray` " +"with :class:`str` or :class:`bytes` with :class:`int`. Issue an error if " +"greater or equal to ``2``." msgstr "" -"Emite una advertencia al comparar :class:`bytes` o :class:`bytearray` con :" -"class:`str` o :class:`bytes` con :class:`int`. Emite un error si es mayor o " -"igual a ``2``." +"Emite una advertencia al comparar :class:`bytes` o :class:`bytearray` " +"con :class:`str` o :class:`bytes` con :class:`int`. Emite un error si es " +"mayor o igual a ``2``." #: ../Doc/c-api/init.rst:95 msgid "Set by the :option:`-b` option." msgstr "Establecido por la opción :option:`-b`." #: ../Doc/c-api/init.rst:101 -#, fuzzy msgid "" -"This API is kept for backward compatibility: setting :c:member:`PyConfig." -"parser_debug` should be used instead, see :ref:`Python Initialization " -"Configuration `." +"This API is kept for backward compatibility: " +"setting :c:member:`PyConfig.parser_debug` should be used instead, " +"see :ref:`Python Initialization Configuration `." msgstr "" -"Esta API se mantiene para la compatibilidad con versiones anteriores: en su " -"lugar, se debe usar la configuración de :c:member:`PyConfig.home`, consulta :" -"ref:`Configuración de inicialización de Python `." +"Esta API se mantiene por compatibilidad con versiones anteriores: se debe " +"utilizar la configuración :c:member:`PyConfig.parser_debug` en su lugar, " +"consulte :ref:`Python Initialization Configuration `." #: ../Doc/c-api/init.rst:105 msgid "" @@ -264,19 +255,18 @@ msgid "" "Set by the :option:`-d` option and the :envvar:`PYTHONDEBUG` environment " "variable." msgstr "" -"Establecido por la opción :option:`-d` y la variable de entorno :envvar:" -"`PYTHONDEBUG`." +"Establecido por la opción :option:`-d` y la variable de " +"entorno :envvar:`PYTHONDEBUG`." #: ../Doc/c-api/init.rst:115 -#, fuzzy msgid "" -"This API is kept for backward compatibility: setting :c:member:`PyConfig." -"write_bytecode` should be used instead, see :ref:`Python Initialization " -"Configuration `." +"This API is kept for backward compatibility: " +"setting :c:member:`PyConfig.write_bytecode` should be used instead, " +"see :ref:`Python Initialization Configuration `." msgstr "" -"Esta API se mantiene para la compatibilidad con versiones anteriores: en su " -"lugar, se debe usar la configuración de :c:member:`PyConfig.home`, consulta :" -"ref:`Configuración de inicialización de Python `." +"Esta API se mantiene por compatibilidad con versiones anteriores: se debe " +"utilizar la configuración :c:member:`PyConfig.write_bytecode` en su lugar, " +"consulte :ref:`Python Initialization Configuration `." #: ../Doc/c-api/init.rst:119 msgid "" @@ -291,27 +281,26 @@ msgid "" "Set by the :option:`-B` option and the :envvar:`PYTHONDONTWRITEBYTECODE` " "environment variable." msgstr "" -"Establecido por la opción :option:`-B` y la variable de entorno :envvar:" -"`PYTHONDONTWRITEBYTECODE`." +"Establecido por la opción :option:`-B` y la variable de " +"entorno :envvar:`PYTHONDONTWRITEBYTECODE`." #: ../Doc/c-api/init.rst:129 -#, fuzzy msgid "" -"This API is kept for backward compatibility: setting :c:member:`PyConfig." -"pathconfig_warnings` should be used instead, see :ref:`Python Initialization " -"Configuration `." +"This API is kept for backward compatibility: " +"setting :c:member:`PyConfig.pathconfig_warnings` should be used instead, " +"see :ref:`Python Initialization Configuration `." msgstr "" -"Esta API se mantiene para la compatibilidad con versiones anteriores: en su " -"lugar, se debe usar la configuración de :c:member:`PyConfig.home`, consulta :" -"ref:`Configuración de inicialización de Python `." +"Esta API se mantiene por compatibilidad con versiones anteriores: se debe " +"utilizar la configuración :c:member:`PyConfig.pathconfig_warnings` en su " +"lugar, consulte :ref:`Python Initialization Configuration `." #: ../Doc/c-api/init.rst:133 msgid "" -"Suppress error messages when calculating the module search path in :c:func:" -"`Py_GetPath`." +"Suppress error messages when calculating the module search path " +"in :c:func:`Py_GetPath`." msgstr "" -"Suprime los mensajes de error al calcular la ruta de búsqueda del módulo en :" -"c:func:`Py_GetPath`." +"Suprime los mensajes de error al calcular la ruta de búsqueda del módulo " +"en :c:func:`Py_GetPath`." #: ../Doc/c-api/init.rst:136 msgid "Private flag used by ``_freeze_module`` and ``frozenmain`` programs." @@ -320,16 +309,16 @@ msgstr "" "``frozenmain``." #: ../Doc/c-api/init.rst:142 -#, fuzzy msgid "" -"This API is kept for backward compatibility: setting :c:member:`PyConfig." -"hash_seed` and :c:member:`PyConfig.use_hash_seed` should be used instead, " +"This API is kept for backward compatibility: " +"setting :c:member:`PyConfig.hash_seed` " +"and :c:member:`PyConfig.use_hash_seed` should be used instead, " "see :ref:`Python Initialization Configuration `." msgstr "" -"Esta API se mantiene para la compatibilidad con versiones anteriores: en su " -"lugar, se debe usar la configuración de :c:member:`PyConfig.argv` y :c:" -"member:`PyConfig.parse_argv`, consulta :ref:`Configuración de inicialización " -"de Python `." +"Esta API se mantiene por compatibilidad con versiones anteriores: se deben " +"utilizar las configuraciones :c:member:`PyConfig.hash_seed` " +"y :c:member:`PyConfig.use_hash_seed` en su lugar, consulte :ref:`Python " +"Initialization Configuration `." #: ../Doc/c-api/init.rst:147 msgid "" @@ -344,43 +333,42 @@ msgid "" "If the flag is non-zero, read the :envvar:`PYTHONHASHSEED` environment " "variable to initialize the secret hash seed." msgstr "" -"Si el indicador no es cero, lee la variable de entorno :envvar:" -"`PYTHONHASHSEED` para inicializar la semilla de *hash* secreta." +"Si el indicador no es cero, lee la variable de " +"entorno :envvar:`PYTHONHASHSEED` para inicializar la semilla de *hash* " +"secreta." #: ../Doc/c-api/init.rst:157 -#, fuzzy msgid "" -"This API is kept for backward compatibility: setting :c:member:`PyConfig." -"use_environment` should be used instead, see :ref:`Python Initialization " -"Configuration `." +"This API is kept for backward compatibility: " +"setting :c:member:`PyConfig.use_environment` should be used instead, " +"see :ref:`Python Initialization Configuration `." msgstr "" -"Esta API se mantiene para la compatibilidad con versiones anteriores: en su " -"lugar, se debe usar la configuración de :c:member:`PyConfig.home`, consulta :" -"ref:`Configuración de inicialización de Python `." +"Esta API se mantiene por compatibilidad con versiones anteriores: se debe " +"utilizar la configuración :c:member:`PyConfig.use_environment` en su lugar, " +"consulte :ref:`Python Initialization Configuration `." #: ../Doc/c-api/init.rst:161 -#, fuzzy msgid "" -"Ignore all :envvar:`!PYTHON*` environment variables, e.g. :envvar:" -"`PYTHONPATH` and :envvar:`PYTHONHOME`, that might be set." +"Ignore all :envvar:`!PYTHON*` environment variables, " +"e.g. :envvar:`PYTHONPATH` and :envvar:`PYTHONHOME`, that might be set." msgstr "" -"Ignorar todas las variables de entorno :envvar:`PYTHON*`, por ejemplo :" -"envvar:`PYTHONPATH` y :envvar:`PYTHONHOME`, eso podría establecerse." +"Ignore todas las variables de entorno :envvar:`!PYTHON*`, por " +"ejemplo, :envvar:`PYTHONPATH` y :envvar:`PYTHONHOME`, que puedan estar " +"configuradas." #: ../Doc/c-api/init.rst:164 msgid "Set by the :option:`-E` and :option:`-I` options." msgstr "Establecido por las opciones :option:`-E` y :option:`-I`." #: ../Doc/c-api/init.rst:170 -#, fuzzy msgid "" -"This API is kept for backward compatibility: setting :c:member:`PyConfig." -"inspect` should be used instead, see :ref:`Python Initialization " -"Configuration `." +"This API is kept for backward compatibility: " +"setting :c:member:`PyConfig.inspect` should be used instead, " +"see :ref:`Python Initialization Configuration `." msgstr "" -"Esta API se mantiene para la compatibilidad con versiones anteriores: en su " -"lugar, se debe usar la configuración de :c:member:`PyConfig.home`, consulta :" -"ref:`Configuración de inicialización de Python `." +"Esta API se mantiene por compatibilidad con versiones anteriores: se debe " +"utilizar la configuración :c:member:`PyConfig.inspect` en su lugar, " +"consulte :ref:`Python Initialization Configuration `." #: ../Doc/c-api/init.rst:174 msgid "" @@ -390,42 +378,40 @@ msgid "" msgstr "" "Cuando se pasa una secuencia de comandos (*script*) como primer argumento o " "se usa la opción :option:`-c`, ingresa al modo interactivo después de " -"ejecutar la secuencia de comandos o el comando, incluso cuando :data:`sys." -"stdin` no parece ser un terminal." +"ejecutar la secuencia de comandos o el comando, incluso " +"cuando :data:`sys.stdin` no parece ser un terminal." #: ../Doc/c-api/init.rst:178 msgid "" "Set by the :option:`-i` option and the :envvar:`PYTHONINSPECT` environment " "variable." msgstr "" -"Establecido por la opción :option:`-i` y la variable de entorno :envvar:" -"`PYTHONINSPECT`." +"Establecido por la opción :option:`-i` y la variable de " +"entorno :envvar:`PYTHONINSPECT`." #: ../Doc/c-api/init.rst:185 -#, fuzzy msgid "" -"This API is kept for backward compatibility: setting :c:member:`PyConfig." -"interactive` should be used instead, see :ref:`Python Initialization " -"Configuration `." +"This API is kept for backward compatibility: " +"setting :c:member:`PyConfig.interactive` should be used instead, " +"see :ref:`Python Initialization Configuration `." msgstr "" -"Esta API se mantiene para la compatibilidad con versiones anteriores: en su " -"lugar, se debe usar la configuración de :c:member:`PyConfig.home`, consulta :" -"ref:`Configuración de inicialización de Python `." +"Esta API se mantiene por compatibilidad con versiones anteriores: se debe " +"utilizar la configuración :c:member:`PyConfig.interactive` en su lugar, " +"consulte :ref:`Python Initialization Configuration `." #: ../Doc/c-api/init.rst:189 msgid "Set by the :option:`-i` option." msgstr "Establecido por la opción :option:`-i`." #: ../Doc/c-api/init.rst:195 -#, fuzzy msgid "" -"This API is kept for backward compatibility: setting :c:member:`PyConfig." -"isolated` should be used instead, see :ref:`Python Initialization " -"Configuration `." +"This API is kept for backward compatibility: " +"setting :c:member:`PyConfig.isolated` should be used instead, " +"see :ref:`Python Initialization Configuration `." msgstr "" -"Esta API se mantiene para la compatibilidad con versiones anteriores: en su " -"lugar, se debe usar la configuración de :c:member:`PyConfig.home`, consulta :" -"ref:`Configuración de inicialización de Python `." +"Esta API se mantiene por compatibilidad con versiones anteriores: se debe " +"utilizar la configuración :c:member:`PyConfig.isolated` en su lugar, " +"consulte :ref:`Python Initialization Configuration `." #: ../Doc/c-api/init.rst:199 msgid "" @@ -441,15 +427,15 @@ msgid "Set by the :option:`-I` option." msgstr "Establecido por la opción :option:`-I`." #: ../Doc/c-api/init.rst:210 -#, fuzzy msgid "" -"This API is kept for backward compatibility: setting :c:member:`PyPreConfig." -"legacy_windows_fs_encoding` should be used instead, see :ref:`Python " -"Initialization Configuration `." +"This API is kept for backward compatibility: " +"setting :c:member:`PyPreConfig.legacy_windows_fs_encoding` should be used " +"instead, see :ref:`Python Initialization Configuration `." msgstr "" -"Esta API se mantiene para la compatibilidad con versiones anteriores: en su " -"lugar, se debe usar la configuración de :c:member:`PyConfig.home`, consulta :" -"ref:`Configuración de inicialización de Python `." +"Esta API se mantiene por compatibilidad con versiones anteriores: se debe " +"utilizar la configuración :c:member:`PyPreConfig.legacy_windows_fs_encoding` " +"en su lugar, consulte :ref:`Python Initialization Configuration `." #: ../Doc/c-api/init.rst:214 msgid "" @@ -467,9 +453,9 @@ msgid "" "Set to ``1`` if the :envvar:`PYTHONLEGACYWINDOWSFSENCODING` environment " "variable is set to a non-empty string." msgstr "" -"Establece en ``1`` si la variable de entorno :envvar:" -"`PYTHONLEGACYWINDOWSFSENCODING` está configurada en una cadena de caracteres " -"no vacía." +"Establece en ``1`` si la variable de " +"entorno :envvar:`PYTHONLEGACYWINDOWSFSENCODING` está configurada en una " +"cadena de caracteres no vacía." #: ../Doc/c-api/init.rst:221 msgid "See :pep:`529` for more details." @@ -480,55 +466,52 @@ msgid ":ref:`Availability `: Windows." msgstr ":ref:`Disponibilidad `: Windows." #: ../Doc/c-api/init.rst:229 -#, fuzzy msgid "" -"This API is kept for backward compatibility: setting :c:member:`PyConfig." -"legacy_windows_stdio` should be used instead, see :ref:`Python " -"Initialization Configuration `." +"This API is kept for backward compatibility: " +"setting :c:member:`PyConfig.legacy_windows_stdio` should be used instead, " +"see :ref:`Python Initialization Configuration `." msgstr "" -"Esta API se mantiene para la compatibilidad con versiones anteriores: en su " -"lugar, se debe usar la configuración de :c:member:`PyConfig.home`, consulta :" -"ref:`Configuración de inicialización de Python `." +"Esta API se mantiene por compatibilidad con versiones anteriores: se debe " +"utilizar la configuración :c:member:`PyConfig.legacy_windows_stdio` en su " +"lugar, consulte :ref:`Python Initialization Configuration `." #: ../Doc/c-api/init.rst:233 -#, fuzzy msgid "" -"If the flag is non-zero, use :class:`io.FileIO` instead of :class:`!io." -"_WindowsConsoleIO` for :mod:`sys` standard streams." +"If the flag is non-zero, use :class:`io.FileIO` instead of :class:`!" +"io._WindowsConsoleIO` for :mod:`sys` standard streams." msgstr "" -"Si el indicador no es cero, use :class:`io.FileIO` en lugar de :class:" -"`WindowsConsoleIO` para secuencias estándar :mod:`sys`." +"Si el indicador no es cero, utilice :class:`io.FileIO` en lugar de :class:`!" +"io._WindowsConsoleIO` para las transmisiones estándar :mod:`sys`." #: ../Doc/c-api/init.rst:236 msgid "" "Set to ``1`` if the :envvar:`PYTHONLEGACYWINDOWSSTDIO` environment variable " "is set to a non-empty string." msgstr "" -"Establece en ``1`` si la variable de entorno :envvar:" -"`PYTHONLEGACYWINDOWSSTDIO` está configurada en una cadena de caracteres no " -"vacía." +"Establece en ``1`` si la variable de " +"entorno :envvar:`PYTHONLEGACYWINDOWSSTDIO` está configurada en una cadena de " +"caracteres no vacía." #: ../Doc/c-api/init.rst:239 msgid "See :pep:`528` for more details." msgstr "Ver :pep:`528` para más detalles." #: ../Doc/c-api/init.rst:247 -#, fuzzy msgid "" -"This API is kept for backward compatibility: setting :c:member:`PyConfig." -"site_import` should be used instead, see :ref:`Python Initialization " -"Configuration `." +"This API is kept for backward compatibility: " +"setting :c:member:`PyConfig.site_import` should be used instead, " +"see :ref:`Python Initialization Configuration `." msgstr "" -"Esta API se mantiene para la compatibilidad con versiones anteriores: en su " -"lugar, se debe usar la configuración de :c:member:`PyConfig.home`, consulta :" -"ref:`Configuración de inicialización de Python `." +"Esta API se mantiene por compatibilidad con versiones anteriores: se debe " +"utilizar la configuración :c:member:`PyConfig.site_import` en su lugar, " +"consulte :ref:`Python Initialization Configuration `." #: ../Doc/c-api/init.rst:251 msgid "" "Disable the import of the module :mod:`site` and the site-dependent " "manipulations of :data:`sys.path` that it entails. Also disable these " -"manipulations if :mod:`site` is explicitly imported later (call :func:`site." -"main` if you want them to be triggered)." +"manipulations if :mod:`site` is explicitly imported later " +"(call :func:`site.main` if you want them to be triggered)." msgstr "" "Deshabilita la importación del módulo :mod:`site` y las manipulaciones " "dependientes del sitio de :data:`sys.path` que conlleva. También deshabilita " @@ -540,61 +523,59 @@ msgid "Set by the :option:`-S` option." msgstr "Establecido por la opción :option:`-S`." #: ../Doc/c-api/init.rst:262 -#, fuzzy msgid "" -"This API is kept for backward compatibility: setting :c:member:`PyConfig." -"user_site_directory` should be used instead, see :ref:`Python Initialization " -"Configuration `." +"This API is kept for backward compatibility: " +"setting :c:member:`PyConfig.user_site_directory` should be used instead, " +"see :ref:`Python Initialization Configuration `." msgstr "" -"Esta API se mantiene para la compatibilidad con versiones anteriores: en su " -"lugar, se debe usar la configuración de :c:member:`PyConfig.home`, consulta :" -"ref:`Configuración de inicialización de Python `." +"Esta API se mantiene por compatibilidad con versiones anteriores: se debe " +"utilizar la configuración :c:member:`PyConfig.user_site_directory` en su " +"lugar, consulte :ref:`Configuración de inicialización de Python `." #: ../Doc/c-api/init.rst:266 msgid "" -"Don't add the :data:`user site-packages directory ` to :data:" -"`sys.path`." +"Don't add the :data:`user site-packages directory ` " +"to :data:`sys.path`." msgstr "" -"No agregue el :data:`directorio de paquetes de sitio del usuario ` (*site-packages*) a :data:`sys.path`." +"No agregue el :data:`directorio de paquetes de sitio del usuario " +"` (*site-packages*) a :data:`sys.path`." #: ../Doc/c-api/init.rst:269 msgid "" -"Set by the :option:`-s` and :option:`-I` options, and the :envvar:" -"`PYTHONNOUSERSITE` environment variable." +"Set by the :option:`-s` and :option:`-I` options, and " +"the :envvar:`PYTHONNOUSERSITE` environment variable." msgstr "" "Establecido por las opciones :option:`-s` y :option:`-I`, y la variable de " "entorno :envvar:`PYTHONNOUSERSITE`." #: ../Doc/c-api/init.rst:276 -#, fuzzy msgid "" -"This API is kept for backward compatibility: setting :c:member:`PyConfig." -"optimization_level` should be used instead, see :ref:`Python Initialization " -"Configuration `." +"This API is kept for backward compatibility: " +"setting :c:member:`PyConfig.optimization_level` should be used instead, " +"see :ref:`Python Initialization Configuration `." msgstr "" -"Esta API se mantiene para la compatibilidad con versiones anteriores: en su " -"lugar, se debe usar la configuración de :c:member:`PyConfig.home`, consulta :" -"ref:`Configuración de inicialización de Python `." +"Esta API se mantiene por compatibilidad con versiones anteriores: se debe " +"utilizar la configuración :c:member:`PyConfig.optimization_level` en su " +"lugar, consulte :ref:`Python Initialization Configuration `." #: ../Doc/c-api/init.rst:280 msgid "" "Set by the :option:`-O` option and the :envvar:`PYTHONOPTIMIZE` environment " "variable." msgstr "" -"Establecido por la opción :option:`-O` y la variable de entorno :envvar:" -"`PYTHONOPTIMIZE`." +"Establecido por la opción :option:`-O` y la variable de " +"entorno :envvar:`PYTHONOPTIMIZE`." #: ../Doc/c-api/init.rst:287 -#, fuzzy msgid "" -"This API is kept for backward compatibility: setting :c:member:`PyConfig." -"quiet` should be used instead, see :ref:`Python Initialization Configuration " -"`." +"This API is kept for backward compatibility: " +"setting :c:member:`PyConfig.quiet` should be used instead, see :ref:`Python " +"Initialization Configuration `." msgstr "" -"Esta API se mantiene para la compatibilidad con versiones anteriores: en su " -"lugar, se debe usar la configuración de :c:member:`PyConfig.home`, consulta :" -"ref:`Configuración de inicialización de Python `." +"Esta API se mantiene por compatibilidad con versiones anteriores: se debe " +"utilizar la configuración :c:member:`PyConfig.quiet` en su lugar, " +"consulte :ref:`Python Initialization Configuration `." #: ../Doc/c-api/init.rst:291 msgid "" @@ -608,15 +589,14 @@ msgid "Set by the :option:`-q` option." msgstr "Establecido por la opción :option:`-q`." #: ../Doc/c-api/init.rst:301 -#, fuzzy msgid "" -"This API is kept for backward compatibility: setting :c:member:`PyConfig." -"buffered_stdio` should be used instead, see :ref:`Python Initialization " -"Configuration `." +"This API is kept for backward compatibility: " +"setting :c:member:`PyConfig.buffered_stdio` should be used instead, " +"see :ref:`Python Initialization Configuration `." msgstr "" -"Esta API se mantiene para la compatibilidad con versiones anteriores: en su " -"lugar, se debe usar la configuración de :c:member:`PyConfig.home`, consulta :" -"ref:`Configuración de inicialización de Python `." +"Esta API se mantiene por compatibilidad con versiones anteriores: se debe " +"utilizar la configuración :c:member:`PyConfig.buffered_stdio` en su lugar, " +"consulte :ref:`Python Initialization Configuration `." #: ../Doc/c-api/init.rst:305 msgid "Force the stdout and stderr streams to be unbuffered." @@ -627,19 +607,18 @@ msgid "" "Set by the :option:`-u` option and the :envvar:`PYTHONUNBUFFERED` " "environment variable." msgstr "" -"Establecido por la opción :option:`-u` y la variable de entorno :envvar:" -"`PYTHONUNBUFFERED`." +"Establecido por la opción :option:`-u` y la variable de " +"entorno :envvar:`PYTHONUNBUFFERED`." #: ../Doc/c-api/init.rst:314 -#, fuzzy msgid "" -"This API is kept for backward compatibility: setting :c:member:`PyConfig." -"verbose` should be used instead, see :ref:`Python Initialization " -"Configuration `." +"This API is kept for backward compatibility: " +"setting :c:member:`PyConfig.verbose` should be used instead, " +"see :ref:`Python Initialization Configuration `." msgstr "" -"Esta API se mantiene para la compatibilidad con versiones anteriores: en su " -"lugar, se debe usar la configuración de :c:member:`PyConfig.home`, consulta :" -"ref:`Configuración de inicialización de Python `." +"Esta API se mantiene por compatibilidad con versiones anteriores: se debe " +"utilizar la configuración :c:member:`PyConfig.verbose` en su lugar, " +"consulte :ref:`Python Initialization Configuration `." #: ../Doc/c-api/init.rst:318 msgid "" @@ -659,8 +638,8 @@ msgid "" "Set by the :option:`-v` option and the :envvar:`PYTHONVERBOSE` environment " "variable." msgstr "" -"Establecido por la opción :option:`-v` y la variable de entorno :envvar:" -"`PYTHONVERBOSE`." +"Establecido por la opción :option:`-v` y la variable de " +"entorno :envvar:`PYTHONVERBOSE`." #: ../Doc/c-api/init.rst:330 msgid "Initializing and finalizing the interpreter" @@ -669,16 +648,16 @@ msgstr "Inicializando y finalizando el intérprete" #: ../Doc/c-api/init.rst:345 msgid "" "Initialize the Python interpreter. In an application embedding Python, " -"this should be called before using any other Python/C API functions; see :" -"ref:`Before Python Initialization ` for the few exceptions." +"this should be called before using any other Python/C API functions; " +"see :ref:`Before Python Initialization ` for the few " +"exceptions." msgstr "" "Inicializa el intérprete de Python. En una aplicación que incorpora Python, " -"se debe llamar antes de usar cualquier otra función de API Python/C; vea :" -"ref:`Antes de la inicialización de Python ` para ver algunas " -"excepciones." +"se debe llamar antes de usar cualquier otra función de API Python/C; " +"vea :ref:`Antes de la inicialización de Python ` para ver " +"algunas excepciones." #: ../Doc/c-api/init.rst:349 -#, fuzzy msgid "" "This initializes the table of loaded modules (``sys.modules``), and creates " "the fundamental modules :mod:`builtins`, :mod:`__main__` and :mod:`sys`. It " @@ -690,19 +669,20 @@ msgid "" msgstr "" "Esto inicializa la tabla de módulos cargados (``sys.modules``) y crea los " "módulos fundamentales :mod:`builtins`, :mod:`__main__` y :mod:`sys`. También " -"inicializa la ruta de búsqueda del módulo (``sys.path``). No establece ``sys." -"argv``; use :c:func:`PySys_SetArgvEx` para eso. Este es un *no-op* cuando se " -"llama por segunda vez (sin llamar primero a :c:func:`Py_FinalizeEx`). No hay " -"valor de retorno; es un error fatal si falla la inicialización." +"inicializa la ruta de búsqueda de módulos (``sys.path``). No establece " +"``sys.argv``; utilice la nueva API :c:type:`PyConfig` de :ref:`Python " +"Initialization Configuration ` para ello. Esta es una operación " +"sin efecto cuando se llama por segunda vez (sin llamar primero " +"a :c:func:`Py_FinalizeEx`). No hay ningún valor de retorno; es un error " +"fatal si falla la inicialización." #: ../Doc/c-api/init.rst:359 ../Doc/c-api/init.rst:373 -#, fuzzy msgid "" -"Use the :c:func:`Py_InitializeFromConfig` function to customize the :ref:" -"`Python Initialization Configuration `." +"Use the :c:func:`Py_InitializeFromConfig` function to customize " +"the :ref:`Python Initialization Configuration `." msgstr "" -"Consulte también :ref:`Configuración de inicialización de Python `." +"Utilice la función :c:func:`Py_InitializeFromConfig` para " +"personalizar :ref:`Python Initialization Configuration `." #: ../Doc/c-api/init.rst:363 msgid "" @@ -730,49 +710,57 @@ msgid "" "false until :c:func:`Py_Initialize` is called again." msgstr "" "Retorna verdadero (distinto de cero) cuando el intérprete de Python se ha " -"inicializado, falso (cero) si no. Después de que se llama a :c:func:" -"`Py_FinalizeEx`, esto retorna falso hasta que :c:func:`Py_Initialize` se " -"llama de nuevo." +"inicializado, falso (cero) si no. Después de que se llama " +"a :c:func:`Py_FinalizeEx`, esto retorna falso hasta " +"que :c:func:`Py_Initialize` se llama de nuevo." #: ../Doc/c-api/init.rst:386 msgid "" "Return true (non-zero) if the main Python interpreter is :term:`shutting " "down `. Return false (zero) otherwise." msgstr "" +"Devuelve verdadero (distinto de cero) si el intérprete principal de Python " +"es :term:`shutting down `. Devuelve falso (cero) en " +"caso contrario." #: ../Doc/c-api/init.rst:394 -#, fuzzy msgid "" "Undo all initializations made by :c:func:`Py_Initialize` and subsequent use " -"of Python/C API functions, and destroy all sub-interpreters (see :c:func:" -"`Py_NewInterpreter` below) that were created and not yet destroyed since the " -"last call to :c:func:`Py_Initialize`. Ideally, this frees all memory " -"allocated by the Python interpreter. This is a no-op when called for a " -"second time (without calling :c:func:`Py_Initialize` again first)." -msgstr "" -"Deshace todas las inicializaciones realizadas por :c:func:`Py_Initialize` y " -"el uso posterior de las funciones de Python/C API, y destruye todos los sub-" -"intérpretes (ver :c:func:`Py_NewInterpreter` a continuación) que se crearon " -"y aún no se destruyeron desde el última llamada a :c:func:`Py_Initialize`. " -"Idealmente, esto libera toda la memoria asignada por el intérprete de " -"Python. Este es un *no-op* cuando se llama por segunda vez (sin llamar a :c:" -"func:`Py_Initialize` nuevamente primero). Normalmente el valor de retorno es " -"``0``. Si hubo errores durante la finalización (lavado de datos almacenados " -"en el búfer), se retorna ``-1``." +"of Python/C API functions, and destroy all sub-interpreters " +"(see :c:func:`Py_NewInterpreter` below) that were created and not yet " +"destroyed since the last call to :c:func:`Py_Initialize`. Ideally, this " +"frees all memory allocated by the Python interpreter. This is a no-op when " +"called for a second time (without calling :c:func:`Py_Initialize` again " +"first)." +msgstr "" +"Deshaga todas las inicializaciones realizadas por :c:func:`Py_Initialize` y " +"el uso posterior de las funciones de la API de Python/C, y destruya todos " +"los subintérpretes (consulte :c:func:`Py_NewInterpreter` a continuación) que " +"se crearon y aún no se destruyeron desde la última llamada " +"a :c:func:`Py_Initialize`. Idealmente, esto libera toda la memoria asignada " +"por el intérprete de Python. Esta es una operación sin efecto cuando se " +"llama por segunda vez (sin llamar a :c:func:`Py_Initialize` nuevamente " +"primero)." #: ../Doc/c-api/init.rst:401 msgid "" "Since this is the reverse of :c:func:`Py_Initialize`, it should be called in " "the same thread with the same interpreter active. That means the main " -"thread and the main interpreter. This should never be called while :c:func:" -"`Py_RunMain` is running." +"thread and the main interpreter. This should never be called " +"while :c:func:`Py_RunMain` is running." msgstr "" +"Dado que se trata del proceso inverso de :c:func:`Py_Initialize`, se debe " +"llamar en el mismo subproceso con el mismo intérprete activo, es decir, el " +"subproceso principal y el intérprete principal. Nunca se debe llamar " +"mientras se esté ejecutando :c:func:`Py_RunMain`." #: ../Doc/c-api/init.rst:406 msgid "" "Normally the return value is ``0``. If there were errors during finalization " "(flushing buffered data), ``-1`` is returned." msgstr "" +"Normalmente, el valor de retorno es ``0``. Si se produjeron errores durante " +"la finalización (limpieza de datos almacenados en búfer), se devuelve ``-1``." #: ../Doc/c-api/init.rst:410 msgid "" @@ -794,7 +782,6 @@ msgstr "" "aplicación." #: ../Doc/c-api/init.rst:418 -#, fuzzy msgid "" "**Bugs and caveats:** The destruction of modules and objects in modules is " "done in random order; this may cause destructors (:meth:`~object.__del__` " @@ -808,34 +795,34 @@ msgid "" "an application calls :c:func:`Py_Initialize` and :c:func:`Py_FinalizeEx` " "more than once." msgstr "" -"**Errores y advertencias:** La destrucción de módulos y objetos en módulos " -"se realiza en orden aleatorio; esto puede causar que los destructores " -"(métodos :meth:`__del__`) fallen cuando dependen de otros objetos (incluso " -"funciones) o módulos. Los módulos de extensión cargados dinámicamente " -"cargados por Python no se descargan. Es posible que no se liberen pequeñas " -"cantidades de memoria asignadas por el intérprete de Python (si encuentra " -"una fuga, informe por favor). La memoria atada en referencias circulares " -"entre objetos no se libera. Es posible que parte de la memoria asignada por " -"los módulos de extensión no se libere. Algunas extensiones pueden no " -"funcionar correctamente si su rutina de inicialización se llama más de una " -"vez; Esto puede suceder si una aplicación llama a :c:func:`Py_Initialize` y :" -"c:func:`Py_FinalizeEx` más de una vez." +"**Bugs and caveats:** La destrucción de módulos y objetos en módulos se " +"realiza en orden aleatorio; esto puede provocar que los destructores " +"(métodos :meth:`~object.__del__`) fallen cuando dependen de otros objetos " +"(incluso funciones) o módulos. Los módulos de extensión cargados " +"dinámicamente por Python no se descargan. Es posible que pequeñas cantidades " +"de memoria asignadas por el intérprete de Python no se liberen (si encuentra " +"una fuga, infórmelo). La memoria atada en referencias circulares entre " +"objetos no se libera. Es posible que no se libere parte de la memoria " +"asignada por los módulos de extensión. Es posible que algunas extensiones no " +"funcionen correctamente si su rutina de inicialización se llama más de una " +"vez; esto puede suceder si una aplicación llama a :c:func:`Py_Initialize` " +"y :c:func:`Py_FinalizeEx` más de una vez." #: ../Doc/c-api/init.rst:429 msgid "" -"Raises an :ref:`auditing event ` ``cpython." -"_PySys_ClearAuditHooks`` with no arguments." +"Raises an :ref:`auditing event ` " +"``cpython._PySys_ClearAuditHooks`` with no arguments." msgstr "" -"Genera un :ref:`evento de auditoría ` ``cpython." -"_PySys_ClearAuditHooks`` sin argumentos." +"Genera un :ref:`evento de auditoría ` " +"``cpython._PySys_ClearAuditHooks`` sin argumentos." #: ../Doc/c-api/init.rst:435 msgid "" "This is a backwards-compatible version of :c:func:`Py_FinalizeEx` that " "disregards the return value." msgstr "" -"Esta es una versión compatible con versiones anteriores de :c:func:" -"`Py_FinalizeEx` que ignora el valor de retorno." +"Esta es una versión compatible con versiones anteriores " +"de :c:func:`Py_FinalizeEx` que ignora el valor de retorno." #: ../Doc/c-api/init.rst:440 msgid "Process-wide parameters" @@ -843,9 +830,9 @@ msgstr "Parámetros de todo el proceso" #: ../Doc/c-api/init.rst:450 msgid "" -"This API is kept for backward compatibility: setting :c:member:`PyConfig." -"program_name` should be used instead, see :ref:`Python Initialization " -"Configuration `." +"This API is kept for backward compatibility: " +"setting :c:member:`PyConfig.program_name` should be used instead, " +"see :ref:`Python Initialization Configuration `." msgstr "" "Esta API se mantiene para la compatibilidad con versiones anteriores: en su " "lugar, se debe usar la configuración de :c:member:`PyConfig.program_name`, " @@ -878,22 +865,22 @@ msgstr "" #: ../Doc/c-api/init.rst:465 ../Doc/c-api/init.rst:704 #: ../Doc/c-api/init.rst:740 ../Doc/c-api/init.rst:766 msgid "" -"Use :c:func:`Py_DecodeLocale` to decode a bytes string to get a :c:expr:" -"`wchar_*` string." +"Use :c:func:`Py_DecodeLocale` to decode a bytes string to get " +"a :c:expr:`wchar_*` string." msgstr "" "Utilice :c:func:`Py_DecodeLocale` para decodificar una cadena de bytes para " "obtener una cadena de tipo :c:expr:`wchar_*`." #: ../Doc/c-api/init.rst:473 -#, fuzzy msgid "" "Return the program name set with :c:member:`PyConfig.program_name`, or the " "default. The returned string points into static storage; the caller should " "not modify its value." msgstr "" -"Retorna el nombre del programa establecido con :c:func:`Py_SetProgramName`, " -"o el valor predeterminado. La cadena de caracteres retornada apunta al " -"almacenamiento estático; la persona que llama no debe modificar su valor." +"Devuelve el nombre del programa establecido " +"con :c:member:`PyConfig.program_name` o el valor predeterminado. La cadena " +"devuelta apunta a un almacenamiento estático; el llamador no debe modificar " +"su valor." #: ../Doc/c-api/init.rst:477 ../Doc/c-api/init.rst:499 #: ../Doc/c-api/init.rst:543 ../Doc/c-api/init.rst:564 @@ -910,15 +897,14 @@ msgstr "" #: ../Doc/c-api/init.rst:595 ../Doc/c-api/init.rst:781 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``." +"Todas las siguientes funciones deben llamarse después " +"de :c:func:`Py_Initialize`, de lo contrario retornará ``NULL``." #: ../Doc/c-api/init.rst:483 ../Doc/c-api/init.rst:570 msgid "Get :data:`sys.executable` instead." -msgstr "" +msgstr "Obtenga :data:`sys.executable` en su lugar." #: ../Doc/c-api/init.rst:489 -#, fuzzy msgid "" "Return the *prefix* for installed platform-independent files. This is " "derived through a number of complicated rules from the program name set " @@ -931,47 +917,46 @@ msgid "" "available to Python code as ``sys.prefix``. It is only useful on Unix. See " "also the next function." msgstr "" -"Retorna el prefijo *prefix* para los archivos instalados independientes de " -"la plataforma. Esto se deriva a través de una serie de reglas complicadas " -"del nombre del programa establecido con :c:func:`Py_SetProgramName` y " +"Devuelve el *prefix* para los archivos instalados independientes de la " +"plataforma. Esto se deriva a través de una serie de reglas complicadas del " +"nombre del programa establecido con :c:member:`PyConfig.program_name` y " "algunas variables de entorno; por ejemplo, si el nombre del programa es ``'/" -"usr/local/bin/python'``, el prefijo es ``'/usr/local'``. La cadena de " -"caracteres retornada apunta al almacenamiento estático; la persona que llama " -"no debe modificar su valor. Esto corresponde a la variable :makevar:`prefix` " -"en el archivo de nivel superior :file:`Makefile` y el argumento ``--prefix`` " -"a la secuencia de comandos (*script*) :program:`configure` en tiempo de " -"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." +"usr/local/bin/python'``, el prefijo es ``'/usr/local'``. La cadena devuelta " +"apunta a un almacenamiento estático; el llamador no debe modificar su valor. " +"Esto corresponde a la variable :makevar:`prefix` en el :file:`Makefile` de " +"nivel superior y al argumento :option:`--prefix` del " +"script :program:`configure` en el momento de la compilación. El valor está " +"disponible para el código Python como ``sys.prefix``. Solo es útil en Unix. " +"Consulte también la siguiente función." #: ../Doc/c-api/init.rst:505 msgid "Get :data:`sys.prefix` instead." -msgstr "" +msgstr "Obtenga :data:`sys.prefix` en su lugar." #: ../Doc/c-api/init.rst:511 -#, fuzzy msgid "" "Return the *exec-prefix* for installed platform-*dependent* files. This is " "derived through a number of complicated rules from the program name set " "with :c:member:`PyConfig.program_name` and some environment variables; for " "example, if the program name is ``'/usr/local/bin/python'``, the exec-prefix " "is ``'/usr/local'``. The returned string points into static storage; the " -"caller should not modify its value. This corresponds to the :makevar:" -"`exec_prefix` variable in the top-level :file:`Makefile` and the ``--exec-" -"prefix`` argument to the :program:`configure` script at build time. The " -"value is available to Python code as ``sys.exec_prefix``. It is only useful " -"on Unix." -msgstr "" -"Retorna el *exec-prefix* para los archivos instalados *dependientes* de la " -"plataforma. Esto se deriva a través de una serie de reglas complicadas del " -"nombre del programa establecido con :c:func:`Py_SetProgramName` y algunas " -"variables de entorno; por ejemplo, si el nombre del programa es ``'/usr/" -"local/bin/python'``, el prefijo `exec` es ``'/usr/local'``. La cadena de " -"caracteres retornada apunta al almacenamiento estático; la persona que llama " -"no debe modificar su valor. Esto corresponde a la variable :makevar:" -"`exec_prefix` en el archivo de nivel superior :file:`Makefile` y el " -"argumento ``--exec-prefix`` a la secuencia de comandos (*script*) :program:" -"`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." +"caller should not modify its value. This corresponds to " +"the :makevar:`exec_prefix` variable in the top-level :file:`Makefile` and " +"the ``--exec-prefix`` argument to the :program:`configure` script at build " +"time. The value is available to Python code as ``sys.exec_prefix``. It is " +"only useful on Unix." +msgstr "" +"Devuelve el *exec-prefix* para los archivos instalados de la plataforma " +"*dependent*. Esto se deriva a través de una serie de reglas complicadas del " +"nombre del programa establecido con :c:member:`PyConfig.program_name` y " +"algunas variables de entorno; por ejemplo, si el nombre del programa es ``'/" +"usr/local/bin/python'``, el prefijo de ejecución es ``'/usr/local'``. La " +"cadena devuelta apunta a un almacenamiento estático; el llamador no debe " +"modificar su valor. Esto corresponde a la variable :makevar:`exec_prefix` en " +"el :file:`Makefile` de nivel superior y al argumento ``--exec-prefix`` del " +"script :program:`configure` en el momento de la compilación. El valor está " +"disponible para el código Python como ``sys.exec_prefix``. Solo es útil en " +"Unix." #: ../Doc/c-api/init.rst:521 msgid "" @@ -984,9 +969,9 @@ msgstr "" "Antecedentes: el prefijo *exec* difiere del prefijo cuando los archivos " "dependientes de la plataforma (como ejecutables y bibliotecas compartidas) " "se instalan en un árbol de directorios diferente. En una instalación típica, " -"los archivos dependientes de la plataforma pueden instalarse en el subárbol :" -"file:`/usr/local/plat` mientras que la plataforma independiente puede " -"instalarse en :file:`/usr/local`." +"los archivos dependientes de la plataforma pueden instalarse en el " +"subárbol :file:`/usr/local/plat` mientras que la plataforma independiente " +"puede instalarse en :file:`/usr/local`." #: ../Doc/c-api/init.rst:527 msgid "" @@ -1016,22 +1001,21 @@ msgstr "" #: ../Doc/c-api/init.rst:538 msgid "" -"System administrators will know how to configure the :program:`mount` or :" -"program:`automount` programs to share :file:`/usr/local` between platforms " -"while having :file:`/usr/local/plat` be a different filesystem for each " -"platform." +"System administrators will know how to configure the :program:`mount` " +"or :program:`automount` programs to share :file:`/usr/local` between " +"platforms while having :file:`/usr/local/plat` be a different filesystem for " +"each platform." msgstr "" -"Los administradores de sistemas sabrán cómo configurar los programas :" -"program:`mount` o :program:`automount` para compartir :file:`/usr/local` " -"entre plataformas mientras que :file:`/usr/local/plat` sea un sistema de " -"archivos diferente para cada plataforma." +"Los administradores de sistemas sabrán cómo configurar los " +"programas :program:`mount` o :program:`automount` para compartir :file:`/usr/" +"local` entre plataformas mientras que :file:`/usr/local/plat` sea un sistema " +"de archivos diferente para cada plataforma." #: ../Doc/c-api/init.rst:549 msgid "Get :data:`sys.exec_prefix` instead." -msgstr "" +msgstr "Obtenga :data:`sys.exec_prefix` en su lugar." #: ../Doc/c-api/init.rst:558 -#, fuzzy 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 " @@ -1039,15 +1023,14 @@ msgid "" "into static storage; the caller should not modify its value. The value is " "available to Python code as ``sys.executable``." msgstr "" -"Retorna el nombre completo del programa del ejecutable de Python; esto se " -"calcula como un efecto secundario de derivar la ruta de búsqueda " -"predeterminada del módulo del nombre del programa (establecido por :c:func:" -"`Py_SetProgramName` arriba). La cadena de caracteres retornada apunta al " -"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``." +"Devuelve el nombre completo del programa ejecutable de Python; esto se " +"calcula como un efecto secundario de derivar la ruta de búsqueda del módulo " +"predeterminado a partir del nombre del programa (establecido " +"por :c:member:`PyConfig.program_name`). La cadena devuelta apunta a un " +"almacenamiento estático; el llamador no debe modificar su valor. El valor " +"está disponible para el código Python como ``sys.executable``." #: ../Doc/c-api/init.rst:580 -#, fuzzy msgid "" "Return the default module search path; this is computed from the program " "name (set by :c:member:`PyConfig.program_name`) and some environment " @@ -1059,20 +1042,20 @@ msgid "" "startup; it can be (and usually is) modified later to change the search path " "for loading modules." msgstr "" -"Retorna la ruta de búsqueda del módulo predeterminado; esto se calcula a " -"partir del nombre del programa (establecido por :c:func:`Py_SetProgramName` " -"antes mencionado) y algunas variables de entorno. La cadena de caracteres " -"retornada consiste en una serie de nombres de directorio separados por un " -"carácter delimitador dependiente de la plataforma. El carácter delimitador " -"es ``':'`` en Unix y macOS, ``';'`` en Windows. La cadena de caracteres " -"retornada apunta al almacenamiento estático; la persona que llama no debe " -"modificar su valor. La lista :data:`sys.path` se inicializa con este valor " -"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." +"Devuelve la ruta de búsqueda del módulo predeterminada; esto se calcula a " +"partir del nombre del programa (establecido " +"por :c:member:`PyConfig.program_name`) y algunas variables de entorno. La " +"cadena devuelta consta de una serie de nombres de directorio separados por " +"un carácter delimitador dependiente de la plataforma. El carácter " +"delimitador es ``':'`` en Unix y macOS, ``';'`` en Windows. La cadena " +"devuelta apunta a un almacenamiento estático; el llamador no debe modificar " +"su valor. La lista :data:`sys.path` se inicializa con este valor al iniciar " +"el intérprete; se puede modificar (y generalmente se modifica) más tarde " +"para cambiar la ruta de búsqueda para cargar módulos." #: ../Doc/c-api/init.rst:598 msgid "Get :data:`sys.path` instead." -msgstr "" +msgstr "Obtenga :data:`sys.path` en su lugar." #: ../Doc/c-api/init.rst:604 msgid "" @@ -1084,15 +1067,15 @@ msgstr "" #: ../Doc/c-api/init.rst:607 msgid "\"3.0a5+ (py3k:63103M, May 12 2008, 00:53:55) \\n[GCC 4.2.3]\"" -msgstr "" +msgstr "\"3.0a5+ (py3k:63103M, May 12 2008, 00:53:55) \\n[GCC 4.2.3]\"" #: ../Doc/c-api/init.rst:611 msgid "" "The first word (up to the first space character) is the current Python " "version; the first characters are the major and minor version separated by a " "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`." +"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 " @@ -1154,7 +1137,7 @@ msgstr "" #: ../Doc/c-api/init.rst:649 msgid "\"[GCC 2.7.2.2]\"" -msgstr "" +msgstr "\"[GCC 2.7.2.2]\"" #: ../Doc/c-api/init.rst:653 ../Doc/c-api/init.rst:667 msgid "" @@ -1176,19 +1159,20 @@ msgstr "" #: ../Doc/c-api/init.rst:663 msgid "\"#67, Aug 1 1997, 22:34:28\"" -msgstr "" +msgstr "\"#67, Aug 1 1997, 22:34:28\"" #: ../Doc/c-api/init.rst:679 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 `." +"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 "" "Esta API se mantiene para la compatibilidad con versiones anteriores: en su " -"lugar, se debe usar la configuración de :c:member:`PyConfig.argv`, :c:member:" -"`PyConfig.parse_argv` y :c:member:`PyConfig.safe_path`, consulta :ref:" -"`Configuración de inicialización de Python `." +"lugar, se debe usar la configuración " +"de :c:member:`PyConfig.argv`, :c:member:`PyConfig.parse_argv` " +"y :c:member:`PyConfig.safe_path`, consulta :ref:`Configuración de " +"inicialización de Python `." #: ../Doc/c-api/init.rst:684 msgid "" @@ -1222,8 +1206,8 @@ msgstr "" #: ../Doc/c-api/init.rst:696 msgid "" "If the name of an existing script is passed in ``argv[0]``, the absolute " -"path of the directory where the script is located is prepended to :data:`sys." -"path`." +"path of the directory where the script is located is prepended " +"to :data:`sys.path`." msgstr "" "Si el nombre de una secuencia de comandos (*script*) existente se pasa en " "``argv[0]``, la ruta absoluta del directorio donde se encuentra el *script* " @@ -1236,8 +1220,8 @@ msgid "" "is the same as prepending the current working directory (``\".\"``)." msgstr "" "De lo contrario (es decir, si *argc* es ``0`` o ``argv[0]`` no apunta a un " -"nombre de archivo existente), una cadena de caracteres vacía se antepone a :" -"data:`sys.path`, que es lo mismo que anteponer el directorio de trabajo " +"nombre de archivo existente), una cadena de caracteres vacía se antepone " +"a :data:`sys.path`, que es lo mismo que anteponer el directorio de trabajo " "actual (``\".\"``)." #: ../Doc/c-api/init.rst:707 ../Doc/c-api/init.rst:743 @@ -1245,27 +1229,26 @@ msgid "" "See also :c:member:`PyConfig.orig_argv` and :c:member:`PyConfig.argv` " "members of the :ref:`Python Initialization Configuration `." msgstr "" -"Consulta también los miembros de :c:member:`PyConfig.orig_argv` y :c:member:" -"`PyConfig.argv` de :ref:`Python Initialization Configuration `." +"Consulta también los miembros de :c:member:`PyConfig.orig_argv` " +"y :c:member:`PyConfig.argv` de :ref:`Python Initialization Configuration " +"`." #: ../Doc/c-api/init.rst:711 -#, fuzzy msgid "" "It is recommended that applications embedding the Python interpreter for " "purposes other than executing a single script pass ``0`` as *updatepath*, " "and update :data:`sys.path` themselves if desired. See :cve:`2008-5983`." msgstr "" "Se recomienda que las aplicaciones que incorporan el intérprete de Python " -"para otros fines que no sean ejecutar una sola secuencia de comandos " -"(*script*) pasen ``0`` como *updatepath* y actualicen :data:`sys.path` si lo " -"desean. Ver `CVE-2008-5983 `_." +"para fines distintos a la ejecución de un único script pasen ``0`` como " +"*updatepath* y actualicen :data:`sys.path` por sí mismas si así lo desean. " +"Consulte :cve:`2008-5983`." #: ../Doc/c-api/init.rst:716 msgid "" "On versions before 3.1.3, you can achieve the same effect by manually " -"popping the first :data:`sys.path` element after having called :c:func:" -"`PySys_SetArgv`, for example using::" +"popping the first :data:`sys.path` element after having " +"called :c:func:`PySys_SetArgv`, for example using::" msgstr "" "En las versiones anteriores a 3.1.3, puede lograr el mismo efecto quitando " "manualmente el primer elemento (*popping*) :data:`sys.path` después de haber " @@ -1273,24 +1256,25 @@ msgstr "" #: ../Doc/c-api/init.rst:720 msgid "PyRun_SimpleString(\"import sys; sys.path.pop(0)\\n\");" -msgstr "" +msgstr "PyRun_SimpleString(\"import sys; sys.path.pop(0)\\n\");" #: ../Doc/c-api/init.rst:732 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 `." +"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 "" "Esta API se mantiene para la compatibilidad con versiones anteriores: en su " -"lugar, se debe usar la configuración de :c:member:`PyConfig.argv` y :c:" -"member:`PyConfig.parse_argv`, consulta :ref:`Configuración de inicialización " -"de Python `." +"lugar, se debe usar la configuración de :c:member:`PyConfig.argv` " +"y :c:member:`PyConfig.parse_argv`, consulta :ref:`Configuración de " +"inicialización de Python `." #: ../Doc/c-api/init.rst:736 msgid "" "This function works like :c:func:`PySys_SetArgvEx` with *updatepath* set to " -"``1`` unless the :program:`python` interpreter was started with the :option:" -"`-I`." +"``1`` unless the :program:`python` interpreter was started with " +"the :option:`-I`." msgstr "" "Esta función funciona como :c:func:`PySys_SetArgvEx` con *updatepath* " "establecido en ``1`` a menos que el intérprete :program:`python` se haya " @@ -1302,13 +1286,13 @@ msgstr "El valor *updatepath* depende de la opción :option:`-I`." #: ../Doc/c-api/init.rst:753 msgid "" -"This API is kept for backward compatibility: setting :c:member:`PyConfig." -"home` should be used instead, see :ref:`Python Initialization Configuration " -"`." +"This API is kept for backward compatibility: " +"setting :c:member:`PyConfig.home` should be used instead, see :ref:`Python " +"Initialization Configuration `." msgstr "" "Esta API se mantiene para la compatibilidad con versiones anteriores: en su " -"lugar, se debe usar la configuración de :c:member:`PyConfig.home`, consulta :" -"ref:`Configuración de inicialización de Python `." +"lugar, se debe usar la configuración de :c:member:`PyConfig.home`, " +"consulta :ref:`Configuración de inicialización de Python `." #: ../Doc/c-api/init.rst:757 msgid "" @@ -1333,24 +1317,22 @@ msgstr "" "contenido de este almacenamiento." #: ../Doc/c-api/init.rst:774 -#, fuzzy msgid "" -"Return the default \"home\", that is, the value set by :c:member:`PyConfig." -"home`, or the value of the :envvar:`PYTHONHOME` environment variable if it " -"is set." +"Return the default \"home\", that is, the value set " +"by :c:member:`PyConfig.home`, or the value of the :envvar:`PYTHONHOME` " +"environment variable if it is set." msgstr "" -"Retorna el \"inicio\" (*home*) predeterminado, es decir, el valor " -"establecido por una llamada anterior a :c:func:`Py_SetPythonHome`, o el " -"valor de la variable de entorno :envvar:`PYTHONHOME` si está configurado." +"Devuelve el \"inicio\" predeterminado, es decir, el valor establecido " +"por :c:member:`PyConfig.home`, o el valor de la variable de " +"entorno :envvar:`PYTHONHOME` si está establecida." #: ../Doc/c-api/init.rst:784 -#, fuzzy msgid "" "Get :c:member:`PyConfig.home` or :envvar:`PYTHONHOME` environment variable " "instead." msgstr "" -"Establecido por la opción :option:`-O` y la variable de entorno :envvar:" -"`PYTHONOPTIMIZE`." +"Obtenga la variable de entorno :c:member:`PyConfig.home` " +"o :envvar:`PYTHONHOME` en su lugar." #: ../Doc/c-api/init.rst:792 msgid "Thread State and the Global Interpreter Lock" @@ -1379,20 +1361,21 @@ msgstr "" #: ../Doc/c-api/init.rst:809 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 " -"to emulate concurrency of execution, the interpreter regularly tries to " -"switch threads (see :func:`sys.setswitchinterval`). The lock is also " -"released around potentially blocking I/O operations like reading or writing " -"a file, so that other Python threads can run in the meantime." -msgstr "" -"Por lo tanto, existe la regla de que solo el hilo que ha adquirido :term:" -"`GIL` puede operar en objetos Python o llamar a funciones API Python/C. Para " -"emular la concurrencia de ejecución, el intérprete regularmente intenta " -"cambiar los hilos (ver :func:`sys.setswitchinterval`). El bloqueo también se " -"libera para bloquear potencialmente las operaciones de E/S, como leer o " -"escribir un archivo, para que otros hilos de Python puedan ejecutarse " -"mientras tanto." +"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 to emulate concurrency of execution, the interpreter " +"regularly tries to switch threads (see :func:`sys.setswitchinterval`). The " +"lock is also released around potentially blocking I/O operations like " +"reading or writing a file, so that other Python threads can run in the " +"meantime." +msgstr "" +"Por lo tanto, existe la regla de que solo el hilo que ha " +"adquirido :term:`GIL` puede operar en objetos Python o llamar a funciones " +"API Python/C. Para emular la concurrencia de ejecución, el intérprete " +"regularmente intenta cambiar los hilos (ver :func:`sys.setswitchinterval`). " +"El bloqueo también se libera para bloquear potencialmente las operaciones de " +"E/S, como leer o escribir un archivo, para que otros hilos de Python puedan " +"ejecutarse mientras tanto." #: ../Doc/c-api/init.rst:819 msgid "" @@ -1402,9 +1385,10 @@ msgid "" "retrieved using :c:func:`PyThreadState_Get`." msgstr "" "El intérprete de Python mantiene cierta información de contabilidad " -"específica de hilos dentro de una estructura de datos llamada :c:type:" -"`PyThreadState`. También hay una variable global que apunta a la actual :c:" -"type:`PyThreadState`: se puede recuperar usando :c:func:`PyThreadState_Get`." +"específica de hilos dentro de una estructura de datos " +"llamada :c:type:`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:825 msgid "Releasing the GIL from extension code" @@ -1426,6 +1410,11 @@ msgid "" "Reacquire the global interpreter lock.\n" "Restore the thread state from the local variable." msgstr "" +"Guarde el estado del subproceso en una variable local.\n" +"Libere el bloqueo del intérprete global.\n" +"... Realice alguna operación de E/S de bloqueo...\n" +"Recupere el bloqueo del intérprete global.\n" +"Restaure el estado del subproceso desde la variable local." #: ../Doc/c-api/init.rst:836 msgid "This is so common that a pair of macros exists to simplify it::" @@ -1437,6 +1426,9 @@ msgid "" "... Do some blocking I/O operation ...\n" "Py_END_ALLOW_THREADS" msgstr "" +"Py_BEGIN_ALLOW_THREADS\n" +"... Hace alguna operación bloqueante en I/O ...\n" +"Py_END_ALLOW_THREADS" #: ../Doc/c-api/init.rst:846 msgid "" @@ -1460,6 +1452,11 @@ msgid "" "... Do some blocking I/O operation ...\n" "PyEval_RestoreThread(_save);" msgstr "" +"PyThreadState *_save;\n" +"\n" +"_save = PyEval_SaveThread();\n" +"... Realizar alguna operación de bloqueo de E/S...\n" +"PyEval_RestoreThread(_save);" #: ../Doc/c-api/init.rst:862 msgid "" @@ -1502,10 +1499,10 @@ msgstr "Hilos creados sin Python" #: ../Doc/c-api/init.rst:884 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 " -"the code showed above is therefore correct. However, when threads are " -"created from C (for example by a third-party library with its own thread " +"When threads are created using the dedicated Python APIs (such as " +"the :mod:`threading` module), a thread state is automatically associated to " +"them and the code showed above is therefore correct. However, when threads " +"are created from C (for example by a third-party library with its own thread " "management), they don't hold the GIL, nor is there a thread state structure " "for them." msgstr "" @@ -1558,20 +1555,30 @@ msgid "" "/* Release the thread. No Python API allowed beyond this point. */\n" "PyGILState_Release(gstate);" msgstr "" +"PyGILState_STATE gstate;\n" +"gstate = PyGILState_Ensure();\n" +"\n" +"/* Realizar acciones de Python aquí. */\n" +"result = CallSomeFunction();\n" +"/* evaluar el resultado o manejar la excepción */\n" +"\n" +"/* Liberar el hilo. No se permite ninguna API de Python más allá de este " +"punto. */\n" +"PyGILState_Release(gstate);" #: ../Doc/c-api/init.rst:913 msgid "" "Note that the ``PyGILState_*`` functions assume there is only one global " "interpreter (created automatically by :c:func:`Py_Initialize`). Python " -"supports the creation of additional interpreters (using :c:func:" -"`Py_NewInterpreter`), but mixing multiple interpreters and the " -"``PyGILState_*`` API is unsupported." +"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 ``PyGILState_*`` asumen 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 varios intérpretes y la API " -"``PyGILState_*`` no está soportada." +"Python admite la creación de intérpretes adicionales " +"(usando :c:func:`Py_NewInterpreter`), pero la mezcla de varios intérpretes y " +"la API ``PyGILState_*`` no está soportada." #: ../Doc/c-api/init.rst:923 msgid "Cautions about fork()" @@ -1586,14 +1593,13 @@ msgid "" "CPython's runtime." msgstr "" "Otra cosa importante a tener en cuenta sobre los hilos es su comportamiento " -"frente a la llamada C :c:func:`fork`. En la mayoría de los sistemas con :c:" -"func:`fork`, después de que un proceso se bifurca, solo existirá el hilo que " -"emitió el *fork*. Esto tiene un impacto concreto tanto en cómo se deben " -"manejar las cerraduras como en todo el estado almacenado en el tiempo de " -"ejecución de CPython." +"frente a la llamada C :c:func:`fork`. En la mayoría de los sistemas " +"con :c:func:`fork`, después de que un proceso se bifurca, solo existirá el " +"hilo que emitió el *fork*. Esto tiene un impacto concreto tanto en cómo se " +"deben manejar las cerraduras como en todo el estado almacenado en el tiempo " +"de ejecución de CPython." #: ../Doc/c-api/init.rst:931 -#, fuzzy 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` " @@ -1603,27 +1609,27 @@ msgid "" "of additional (non-Python) locks that need to be acquired before or reset " "after a fork. OS facilities such as :c:func:`!pthread_atfork` would need to " "be used to accomplish the same thing. Additionally, when extending or " -"embedding Python, calling :c:func:`fork` directly rather than through :func:" -"`os.fork` (and returning to or calling into Python) may result in a deadlock " -"by one of Python's internal locks being held by a thread that is defunct " -"after the fork. :c:func:`PyOS_AfterFork_Child` tries to reset the necessary " -"locks, but is not always able to." -msgstr "" -"El hecho de que solo permanezca al hilo \"actual\" significa que ningún " -"bloqueo retenido por otros hilos nunca se liberará. Python resuelve esto " +"embedding Python, calling :c:func:`fork` directly rather than " +"through :func:`os.fork` (and returning to or calling into Python) may result " +"in a deadlock by one of Python's internal locks being held by a thread that " +"is defunct after the fork. :c:func:`PyOS_AfterFork_Child` tries to reset the " +"necessary locks, but is not always able to." +msgstr "" +"El hecho de que solo permanezca el hilo \"actual\" significa que los " +"bloqueos mantenidos por otros hilos nunca se liberarán. Python resuelve esto " "para :func:`os.fork` adquiriendo los bloqueos que usa internamente antes de " -"la bifurcación (*fork*) y soltándolos después. Además, restablece cualquier :" -"ref:`lock-objects` en el elemento secundario. Al extender o incrustar " -"Python, no hay forma de informar a Python de bloqueos adicionales (que no " -"sean Python) que deben adquirirse antes o restablecerse después de una " -"bifurcación. Las instalaciones del sistema operativo como :c:func:" -"`pthread_atfork` tendrían que usarse para lograr lo mismo. Además, al " -"extender o incrustar Python, llamando :c:func:`fork` directamente en lugar " -"de a través de :func:`os.fork` (y retornar o llamar a Python) puede resultar " -"en un punto muerto (*deadlock*) por uno de los bloqueos internos de Python. " -"sostenido por un hilo que no funciona después del *fork*. :c:func:" -"`PyOS_AfterFork_Child` intenta restablecer los bloqueos necesarios, pero no " -"siempre puede hacerlo." +"la bifurcación y liberándolos después. Además, restablece " +"cualquier :ref:`lock-objects` en el hijo. Al extender o incrustar Python, no " +"hay forma de informar a Python de bloqueos adicionales (que no sean de " +"Python) que deben adquirirse antes o restablecerse después de una " +"bifurcación. Se necesitarían usar recursos del sistema operativo " +"como :c:func:`!pthread_atfork` para lograr lo mismo. Además, al extender o " +"incrustar Python, llamar a :c:func:`fork` directamente en lugar de a través " +"de :func:`os.fork` (y regresar a Python o llamar a Python) puede resultar en " +"un bloqueo por uno de los bloqueos internos de Python que está retenido por " +"un hilo que está inactivo después de la " +"bifurcación. :c:func:`PyOS_AfterFork_Child` intenta restablecer los bloqueos " +"necesarios, pero no siempre puede hacerlo." #: ../Doc/c-api/init.rst:946 msgid "" @@ -1638,13 +1644,13 @@ msgid "" "called immediately after." msgstr "" "El hecho de que todos los otros hilos desaparezcan también significa que el " -"estado de ejecución de CPython debe limpiarse correctamente, lo que :func:" -"`os.fork` lo hace. Esto significa finalizar todos los demás objetos :c:type:" -"`PyThreadState` que pertenecen al intérprete actual y todos los demás " -"objetos :c:type:`PyInterpreterState`. Debido a esto y a la naturaleza " -"especial del :ref:`intérprete \"principal\" `, :c:" -"func:`fork` solo debería llamarse en el hilo \"principal\" de ese " -"intérprete, donde el CPython global el tiempo de ejecución se inicializó " +"estado de ejecución de CPython debe limpiarse correctamente, lo " +"que :func:`os.fork` lo hace. Esto significa finalizar todos los demás " +"objetos :c:type:`PyThreadState` que pertenecen al intérprete actual y todos " +"los demás objetos :c:type:`PyInterpreterState`. Debido a esto y a la " +"naturaleza especial del :ref:`intérprete \"principal\" `, :c:func:`fork` solo debería llamarse en el hilo \"principal\" de " +"ese intérprete, donde el CPython global el tiempo de ejecución se inicializó " "originalmente. La única excepción es si :c:func:`exec` se llamará " "inmediatamente después." @@ -1686,19 +1692,16 @@ msgstr "" "pertenezcan." #: ../Doc/c-api/init.rst:979 -#, fuzzy msgid "" "This data structure represents the state of a single thread. The only " "public data member is:" msgstr "" -"Esta estructura de datos representa el estado de un solo hilo. El único " -"miembro de datos públicos es :attr:`interp` (:c:expr:`PyInterpreterState " -"*`), que apunta al estado del intérprete de este hilo." +"Esta estructura de datos representa el estado de un único subproceso. El " +"único miembro de datos público es:" #: ../Doc/c-api/init.rst:984 -#, fuzzy msgid "This thread's interpreter state." -msgstr "Retorna el objeto de estado del intérprete principal." +msgstr "Estado del intérprete de este hilo." #: ../Doc/c-api/init.rst:995 msgid "Deprecated function which does nothing." @@ -1754,7 +1757,6 @@ msgstr "" #: ../Doc/c-api/init.rst:1030 ../Doc/c-api/init.rst:1089 #: ../Doc/c-api/init.rst:1371 -#, fuzzy 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 " @@ -1762,11 +1764,11 @@ msgid "" "interpreter is in process of being finalized before calling this function to " "avoid unwanted termination." msgstr "" -"Llamar a esta función desde un hilo cuando finalice el tiempo de ejecución " -"terminará el hilo, incluso si Python no creó el hilo. Puede usar :c:func:" -"`_Py_IsFinalizing` o :func:`sys.is_finalizing` para verificar si el " -"intérprete está en proceso de finalización antes de llamar a esta función " -"para evitar una terminación no deseada." +"Si se llama a esta función desde un subproceso cuando el entorno de " +"ejecución está finalizando, se terminará el subproceso, incluso si Python no " +"lo creó. Puede usar :c:func:`Py_IsFinalizing` o :func:`sys.is_finalizing` " +"para verificar si el intérprete está en proceso de finalización antes de " +"llamar a esta función para evitar una finalización no deseada." #: ../Doc/c-api/init.rst:1038 msgid "" @@ -1779,9 +1781,8 @@ msgstr "" "error fatal (por lo que la persona que llama no necesita verificar ``NULL``)." #: ../Doc/c-api/init.rst:1042 -#, fuzzy msgid "See also :c:func:`PyThreadState_GetUnchecked`." -msgstr "Vea también :c:func:`PyEval_GetFrame`." +msgstr "Véase también :c:func:`PyThreadState_GetUnchecked`." #: ../Doc/c-api/init.rst:1047 msgid "" @@ -1789,12 +1790,17 @@ msgid "" "fatal error if it is NULL. The caller is responsible to check if the result " "is NULL." msgstr "" +"Similar a :c:func:`PyThreadState_Get`, pero no mata el proceso con un error " +"fatal si es NULL. El llamador es responsable de verificar si el resultado es " +"NULL." #: ../Doc/c-api/init.rst:1051 msgid "" "In Python 3.5 to 3.12, the function was private and known as " "``_PyThreadState_UncheckedGet()``." msgstr "" +"En Python 3.5 a 3.12, la función era privada y se conocía como " +"``_PyThreadState_UncheckedGet()``." #: ../Doc/c-api/init.rst:1058 msgid "" @@ -1820,38 +1826,39 @@ msgid "" "of the current state of Python, or of the global interpreter lock. This may " "be called as many times as desired by a thread as long as each call is " "matched with a call to :c:func:`PyGILState_Release`. In general, other " -"thread-related APIs may be used between :c:func:`PyGILState_Ensure` and :c:" -"func:`PyGILState_Release` calls as long as the thread state is restored to " -"its previous state before the Release(). For example, normal usage of the :" -"c:macro:`Py_BEGIN_ALLOW_THREADS` and :c:macro:`Py_END_ALLOW_THREADS` macros " -"is acceptable." +"thread-related APIs may be used between :c:func:`PyGILState_Ensure` " +"and :c:func:`PyGILState_Release` calls as long as the thread state is " +"restored to its previous state before the Release(). For example, normal " +"usage of the :c:macro:`Py_BEGIN_ALLOW_THREADS` " +"and :c:macro:`Py_END_ALLOW_THREADS` macros is acceptable." msgstr "" "Asegúrese de que el subproceso actual esté listo para llamar a la API de " "Python C, independientemente del estado actual de Python o del bloqueo " "global del intérprete. Esto se puede invocar tantas veces como lo desee un " -"subproceso siempre que cada llamada coincida con una llamada a :c:func:" -"`PyGILState_Release`. En general, se pueden usar otras API relacionadas con " -"subprocesos entre :c:func:`PyGILState_Ensure` y :c:func:`PyGILState_Release` " -"invoca siempre que el estado del subproceso se restablezca a su estado " -"anterior antes del *Release()*. Por ejemplo, el uso normal de las macros :c:" -"macro:`Py_BEGIN_ALLOW_THREADS` y :c:macro:`Py_END_ALLOW_THREADS` es " -"aceptable." +"subproceso siempre que cada llamada coincida con una llamada " +"a :c:func:`PyGILState_Release`. En general, se pueden usar otras API " +"relacionadas con subprocesos entre :c:func:`PyGILState_Ensure` " +"y :c:func:`PyGILState_Release` invoca siempre que el estado del subproceso " +"se restablezca a su estado anterior antes del *Release()*. Por ejemplo, el " +"uso normal de las macros :c:macro:`Py_BEGIN_ALLOW_THREADS` " +"y :c:macro:`Py_END_ALLOW_THREADS` es aceptable." #: ../Doc/c-api/init.rst:1078 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:" -"`PyGILState_Release` to ensure Python is left in the same state. Even though " -"recursive calls are allowed, these handles *cannot* be shared - each unique " -"call to :c:func:`PyGILState_Ensure` must save the handle for its call to :c:" -"func:`PyGILState_Release`." -msgstr "" -"El valor de retorno es un \"identificador\" opaco al estado del hilo cuando :" -"c:func:`PyGILState_Ensure` fue llamado, y debe pasarse a :c:func:" -"`PyGILState_Release` para asegurar que Python se deje en el mismo estado. " -"Aunque las llamadas recursivas están permitidas, estos identificadores *no* " -"pueden compartirse; cada llamada única a :c:func:`PyGILState_Ensure` debe " -"guardar el identificador para su llamada a :c:func:`PyGILState_Release`." +"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:`PyGILState_Release` to ensure Python is left in the same state. " +"Even though recursive calls are allowed, these handles *cannot* be shared - " +"each unique call to :c:func:`PyGILState_Ensure` must save the handle for its " +"call to :c:func:`PyGILState_Release`." +msgstr "" +"El valor de retorno es un \"identificador\" opaco al estado del hilo " +"cuando :c:func:`PyGILState_Ensure` fue llamado, y debe pasarse " +"a :c:func:`PyGILState_Release` para asegurar que Python se deje en el mismo " +"estado. Aunque las llamadas recursivas están permitidas, estos " +"identificadores *no* 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:1085 msgid "" @@ -1864,22 +1871,23 @@ msgstr "" #: ../Doc/c-api/init.rst:1097 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:" -"`PyGILState_Ensure` call (but generally this state will be unknown to the " -"caller, hence the use of the GILState API)." +"will be the same as it was prior to the " +"corresponding :c:func:`PyGILState_Ensure` call (but generally this state " +"will be unknown to the caller, hence the use of the GILState API)." msgstr "" "Libera cualquier recurso previamente adquirido. Después de esta llamada, el " -"estado de Python será el mismo que antes de la llamada correspondiente :c:" -"func:`PyGILState_Ensure` (pero en general este estado será desconocido para " -"la persona que llama, de ahí el uso de la API ``GILState``)." +"estado de Python será el mismo que antes de la llamada " +"correspondiente :c: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:1102 msgid "" -"Every call to :c:func:`PyGILState_Ensure` must be matched by a call to :c:" -"func:`PyGILState_Release` on the same thread." +"Every call to :c:func:`PyGILState_Ensure` must be matched by a call " +"to :c:func:`PyGILState_Release` on the same thread." msgstr "" -"Cada llamada a :c:func:`PyGILState_Ensure` debe coincidir con una llamada a :" -"c:func:`PyGILState_Release` en el mismo hilo." +"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:1108 msgid "" @@ -1924,45 +1932,45 @@ msgstr "" #: ../Doc/c-api/init.rst:1134 msgid "" -"This macro expands to ``{ PyThreadState *_save; _save = PyEval_SaveThread();" -"``. Note that it contains an opening brace; it must be matched with a " -"following :c:macro:`Py_END_ALLOW_THREADS` macro. See above for further " -"discussion of this macro." +"This macro expands to ``{ PyThreadState *_save; _save = " +"PyEval_SaveThread();``. Note that it contains an opening brace; it must be " +"matched with a following :c:macro:`Py_END_ALLOW_THREADS` macro. See above " +"for further discussion of this macro." msgstr "" -"Esta macro se expande a ``{PyThreadState *_save; _save = PyEval_SaveThread();" -"``. Tenga en cuenta que contiene una llave de apertura; debe coincidir con " -"la siguiente macro :c:macro:`Py_END_ALLOW_THREADS`. Ver arriba para una " -"discusión más detallada de esta macro." +"Esta macro se expande a ``{PyThreadState *_save; _save = " +"PyEval_SaveThread();``. Tenga en cuenta que contiene una llave de apertura; " +"debe coincidir con 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:1142 msgid "" "This macro expands to ``PyEval_RestoreThread(_save); }``. Note that it " -"contains a closing brace; it must be matched with an earlier :c:macro:" -"`Py_BEGIN_ALLOW_THREADS` macro. See above for further discussion of this " -"macro." +"contains a closing brace; it must be matched with an " +"earlier :c:macro:`Py_BEGIN_ALLOW_THREADS` macro. See above for further " +"discussion of this macro." msgstr "" "Esta macro se expande a ``PyEval_RestoreThread(_save); }``. Tenga en cuenta " -"que contiene una llave de cierre; debe coincidir con una macro anterior :c:" -"macro:`Py_BEGIN_ALLOW_THREADS`. Ver arriba para una discusión más detallada " -"de esta macro." +"que contiene una llave de cierre; debe coincidir con una macro " +"anterior :c:macro:`Py_BEGIN_ALLOW_THREADS`. Ver arriba para una discusión " +"más detallada de esta macro." #: ../Doc/c-api/init.rst:1150 msgid "" -"This macro expands to ``PyEval_RestoreThread(_save);``: it is equivalent to :" -"c:macro:`Py_END_ALLOW_THREADS` without the closing brace." +"This macro expands to ``PyEval_RestoreThread(_save);``: it is equivalent " +"to :c:macro:`Py_END_ALLOW_THREADS` without the closing brace." msgstr "" -"Esta macro se expande a ``PyEval_RestoreThread(_save);``: es equivalente a :" -"c:macro:`Py_END_ALLOW_THREADS` sin la llave de cierre." +"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:1156 msgid "" -"This macro expands to ``_save = PyEval_SaveThread();``: it is equivalent to :" -"c:macro:`Py_BEGIN_ALLOW_THREADS` without the opening brace and variable " +"This macro expands to ``_save = PyEval_SaveThread();``: it is equivalent " +"to :c:macro:`Py_BEGIN_ALLOW_THREADS` without the opening brace and variable " "declaration." msgstr "" -"Esta macro se expande a ``_save = PyEval_SaveThread();``: es equivalente a :" -"c:macro:`Py_BEGIN_ALLOW_THREADS` sin la llave de apertura y la declaración " -"de variable." +"Esta macro se expande a ``_save = PyEval_SaveThread();``: es equivalente " +"a :c:macro:`Py_BEGIN_ALLOW_THREADS` sin la llave de apertura y la " +"declaración de variable." #: ../Doc/c-api/init.rst:1162 msgid "Low-level API" @@ -1972,8 +1980,8 @@ msgstr "API de bajo nivel" 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`." +"Todas las siguientes funciones deben llamarse después " +"de :c:func:`Py_Initialize`." #: ../Doc/c-api/init.rst:1166 msgid ":c:func:`Py_Initialize()` now initializes the :term:`GIL`." @@ -1991,11 +1999,11 @@ msgstr "" #: ../Doc/c-api/init.rst:1176 msgid "" -"Raises an :ref:`auditing event ` ``cpython." -"PyInterpreterState_New`` with no arguments." +"Raises an :ref:`auditing event ` " +"``cpython.PyInterpreterState_New`` with no arguments." msgstr "" -"Genera un :ref:`evento de auditoría ` ``python." -"PyInterpreterState_New`` sin argumentos." +"Genera un :ref:`evento de auditoría ` " +"``python.PyInterpreterState_New`` sin argumentos." #: ../Doc/c-api/init.rst:1181 msgid "" @@ -2007,8 +2015,8 @@ msgstr "" #: ../Doc/c-api/init.rst:1184 msgid "" -"Raises an :ref:`auditing event ` ``cpython." -"PyInterpreterState_Clear`` with no arguments." +"Raises an :ref:`auditing event ` " +"``cpython.PyInterpreterState_Clear`` with no arguments." msgstr "" "Lanza una :ref:`eventos de auditoría ` ``python.PyInterpreterState " "Clear`` sin argumentos." @@ -2046,31 +2054,31 @@ msgid "" "This function now calls the :c:member:`PyThreadState.on_delete` callback. " "Previously, that happened in :c:func:`PyThreadState_Delete`." msgstr "" -"Esta función ahora llama a la retrollamada :c:member:`PyThreadState." -"on_delete`. Anteriormente, eso sucedía en :c:func:`PyThreadState_Delete`." +"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:1213 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:" -"`PyThreadState_Clear`." +"held. The thread state must have been reset with a previous call " +"to :c:func:`PyThreadState_Clear`." msgstr "" "Destruye un objeto de estado de hilo. No es necesario mantener el bloqueo " "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:1220 -#, fuzzy msgid "" "Destroy the current thread state and release the global interpreter lock. " "Like :c:func:`PyThreadState_Delete`, the global interpreter lock must be " -"held. The thread state must have been reset with a previous call to :c:func:" -"`PyThreadState_Clear`." +"held. The thread state must have been reset with a previous call " +"to :c:func:`PyThreadState_Clear`." msgstr "" -"Destruye un objeto de estado de hilo y suelta el bloqueo del intérprete " -"global. Como :c:func:`PyThreadState_Delete`, no es necesario mantener el " -"bloqueo del intérprete global. El estado del hilo debe haberse restablecido " -"con una llamada anterior a :c:func:`PyThreadState_Clear`." +"Destruye el estado actual del subproceso y libera el bloqueo global del " +"intérprete. Al igual que en :c:func:`PyThreadState_Delete`, el bloqueo " +"global del intérprete debe mantenerse. El estado del subproceso debe haberse " +"restablecido con una llamada anterior a :c:func:`PyThreadState_Clear`." #: ../Doc/c-api/init.rst:1228 msgid "Get the current frame of the Python thread state *tstate*." @@ -2128,8 +2136,8 @@ msgstr "" msgid "" "See also :c:func:`PyEval_SetTrace` and :c:func:`PyEval_SetProfile` functions." msgstr "" -"Consulte también las funciones :c:func:`PyEval_SetTrace` y :c:func:" -"`PyEval_SetProfile`." +"Consulte también las funciones :c:func:`PyEval_SetTrace` " +"y :c:func:`PyEval_SetProfile`." #: ../Doc/c-api/init.rst:1280 msgid "Get the current interpreter." @@ -2226,7 +2234,6 @@ msgstr "" "que llama debe asumir que no hay disponible ningún estado del hilo actual." #: ../Doc/c-api/init.rst:1352 -#, fuzzy 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. " @@ -2237,19 +2244,20 @@ msgid "" "``NULL``, the pending exception (if any) for the thread is cleared. This " "raises no exceptions." msgstr "" -"Asincrónicamente lanza una excepción en un hilo. El argumento *id* es el id " -"del hilo del hilo de destino; *exc* es el objeto de excepción que se debe " -"generar. Esta función no roba ninguna referencia a *exc*. Para evitar el uso " -"indebido ingenuo, debe escribir su propia extensión C para llamar a esto. " -"Debe llamarse con el GIL retenido. Retorna el número de estados de hilo " -"modificados; normalmente es uno, pero será cero si no se encuentra la " -"identificación del hilo. Si *exc* es :const:`NULL`, se borra la excepción " -"pendiente (si existe) para el hilo. Esto no lanza excepciones." +"Generar una excepción de forma asincrónica en un subproceso. El argumento " +"*id* es el identificador del subproceso de destino; *exc* es el objeto de " +"excepción que se va a generar. Esta función no roba ninguna referencia a " +"*exc*. Para evitar un uso indebido ingenuo, debe escribir su propia " +"extensión C para llamarla. Debe llamarse con el GIL en su poder. Devuelve la " +"cantidad de estados de subproceso modificados; normalmente es uno, pero será " +"cero si no se encuentra el identificador del subproceso. Si *exc* es " +"``NULL``, se borra la excepción pendiente (si la hay) para el subproceso. " +"Esto no genera excepciones." #: ../Doc/c-api/init.rst:1360 msgid "" -"The type of the *id* parameter changed from :c:expr:`long` to :c:expr:" -"`unsigned long`." +"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:expr:`long` a :c:expr:`unsigned " "long`." @@ -2267,13 +2275,15 @@ msgstr "" #: ../Doc/c-api/init.rst:1377 msgid "" -"Updated to be consistent with :c:func:`PyEval_RestoreThread`, :c:func:" -"`Py_END_ALLOW_THREADS`, and :c:func:`PyGILState_Ensure`, and terminate the " -"current thread if called while the interpreter is finalizing." +"Updated to be consistent " +"with :c:func:`PyEval_RestoreThread`, :c:func:`Py_END_ALLOW_THREADS`, " +"and :c:func:`PyGILState_Ensure`, and terminate the current thread if called " +"while the interpreter is finalizing." msgstr "" -"Actualiza para ser coherente con :c:func:`PyEval_RestoreThread`, :c:func:" -"`Py_END_ALLOW_THREADS`, y :c:func:`PyGILState_Ensure`, y termina el hilo " -"actual si se llama mientras el intérprete está finalizando." +"Actualiza para ser coherente " +"con :c:func:`PyEval_RestoreThread`, :c:func:`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:1382 msgid "" @@ -2342,13 +2352,13 @@ msgstr "" #: ../Doc/c-api/init.rst:1415 msgid "" -"You can switch between sub-interpreters using the :c:func:" -"`PyThreadState_Swap` function. You can create and destroy them using the " -"following functions:" +"You can switch between sub-interpreters using " +"the :c:func:`PyThreadState_Swap` function. You can create and destroy them " +"using the following functions:" msgstr "" -"Puede cambiar entre subinterpretes utilizando la función :c:func:" -"`PyThreadState_Swap`. Puede crearlos y destruirlos utilizando las siguientes " -"funciones:" +"Puede cambiar entre subinterpretes utilizando la " +"función :c:func:`PyThreadState_Swap`. Puede crearlos y destruirlos " +"utilizando las siguientes funciones:" #: ../Doc/c-api/init.rst:1421 msgid "" @@ -2356,24 +2366,36 @@ msgid "" "values are used only in :c:func:`Py_NewInterpreterFromConfig` and never " "modified by the runtime." msgstr "" +"Estructura que contiene la mayoría de los parámetros para configurar un " +"subintérprete. Sus valores se utilizan únicamente " +"en :c:func:`Py_NewInterpreterFromConfig` y nunca son modificados por el " +"entorno de ejecución." #: ../Doc/c-api/init.rst:1427 msgid "Structure fields:" -msgstr "" +msgstr "Campos de estructura:" #: ../Doc/c-api/init.rst:1431 msgid "" "If this is ``0`` then the sub-interpreter will use its own \"object\" " "allocator state. Otherwise it will use (share) the main interpreter's." msgstr "" +"Si se trata de ``0``, el subintérprete utilizará su propio estado de " +"asignador de \"objetos\". De lo contrario, utilizará (compartirá) el del " +"intérprete principal." #: ../Doc/c-api/init.rst:1435 msgid "" -"If this is ``0`` then :c:member:`~PyInterpreterConfig." -"check_multi_interp_extensions` must be ``1`` (non-zero). If this is ``1`` " -"then :c:member:`~PyInterpreterConfig.gil` must not be :c:macro:" -"`PyInterpreterConfig_OWN_GIL`." +"If this is ``0`` " +"then :c:member:`~PyInterpreterConfig.check_multi_interp_extensions` must be " +"``1`` (non-zero). If this is ``1`` then :c:member:`~PyInterpreterConfig.gil` " +"must not be :c:macro:`PyInterpreterConfig_OWN_GIL`." msgstr "" +"Si es ``0``, " +"entonces :c:member:`~PyInterpreterConfig.check_multi_interp_extensions` debe " +"ser ``1`` (distinto de cero). Si es ``1``, " +"entonces :c:member:`~PyInterpreterConfig.gil` no debe " +"ser :c:macro:`PyInterpreterConfig_OWN_GIL`." #: ../Doc/c-api/init.rst:1443 msgid "" @@ -2381,11 +2403,16 @@ msgid "" "any thread where the sub-interpreter is currently active. Otherwise fork is " "unrestricted." msgstr "" +"Si es ``0``, el entorno de ejecución no admitirá la bifurcación del proceso " +"en ningún subproceso en el que el subintérprete esté activo en ese momento. " +"De lo contrario, la bifurcación no tendrá restricciones." #: ../Doc/c-api/init.rst:1447 msgid "" "Note that the :mod:`subprocess` module still works when fork is disallowed." msgstr "" +"Tenga en cuenta que el módulo :mod:`subprocess` aún funciona cuando no se " +"permite la bifurcación." #: ../Doc/c-api/init.rst:1452 msgid "" @@ -2393,96 +2420,120 @@ msgid "" "process via exec (e.g. :func:`os.execv`) in any thread where the sub-" "interpreter is currently active. Otherwise exec is unrestricted." msgstr "" +"Si se trata de ``0``, el entorno de ejecución no admitirá la sustitución del " +"proceso actual mediante exec (por ejemplo, :func:`os.execv`) en ningún " +"subproceso en el que el subintérprete esté activo en ese momento. De lo " +"contrario, exec no tendrá restricciones." #: ../Doc/c-api/init.rst:1457 msgid "" "Note that the :mod:`subprocess` module still works when exec is disallowed." msgstr "" +"Tenga en cuenta que el módulo :mod:`subprocess` aún funciona cuando la " +"ejecución no está permitida." #: ../Doc/c-api/init.rst:1462 msgid "" "If this is ``0`` then the sub-interpreter's :mod:`threading` module won't " "create threads. Otherwise threads are allowed." msgstr "" +"Si se trata de ``0``, el módulo :mod:`threading` del subintérprete no creará " +"subprocesos. De lo contrario, se permiten los subprocesos." #: ../Doc/c-api/init.rst:1468 msgid "" "If this is ``0`` then the sub-interpreter's :mod:`threading` module won't " -"create daemon threads. Otherwise daemon threads are allowed (as long as :c:" -"member:`~PyInterpreterConfig.allow_threads` is non-zero)." +"create daemon threads. Otherwise daemon threads are allowed (as long " +"as :c:member:`~PyInterpreterConfig.allow_threads` is non-zero)." msgstr "" +"Si se trata de ``0``, el módulo :mod:`threading` del subintérprete no creará " +"subprocesos de demonio. De lo contrario, se permiten subprocesos de demonio " +"(siempre que :c:member:`~PyInterpreterConfig.allow_threads` no sea cero)." #: ../Doc/c-api/init.rst:1475 msgid "" "If this is ``0`` then all extension modules may be imported, including " "legacy (single-phase init) modules, in any thread where the sub-interpreter " -"is currently active. Otherwise only multi-phase init extension modules (see :" -"pep:`489`) may be imported. (Also see :c:macro:" -"`Py_mod_multiple_interpreters`.)" +"is currently active. Otherwise only multi-phase init extension modules " +"(see :pep:`489`) may be imported. (Also " +"see :c:macro:`Py_mod_multiple_interpreters`.)" msgstr "" +"Si se trata de ``0``, se podrán importar todos los módulos de extensión, " +"incluidos los módulos heredados (inicio monofásico), en cualquier subproceso " +"en el que el subintérprete esté activo en ese momento. De lo contrario, solo " +"se podrán importar los módulos de extensión de inicio multifásico " +"(consulte :pep:`489`). (Consulte " +"también :c:macro:`Py_mod_multiple_interpreters`)." #: ../Doc/c-api/init.rst:1482 msgid "" -"This must be ``1`` (non-zero) if :c:member:`~PyInterpreterConfig." -"use_main_obmalloc` is ``0``." +"This must be ``1`` (non-zero) " +"if :c:member:`~PyInterpreterConfig.use_main_obmalloc` is ``0``." msgstr "" +"Debe ser ``1`` (distinto de cero) " +"si :c:member:`~PyInterpreterConfig.use_main_obmalloc` es ``0``." #: ../Doc/c-api/init.rst:1487 msgid "" "This determines the operation of the GIL for the sub-interpreter. It may be " "one of the following:" msgstr "" +"Esto determina el funcionamiento del GIL para el subintérprete. Puede ser " +"uno de los siguientes:" #: ../Doc/c-api/init.rst:1494 msgid "Use the default selection (:c:macro:`PyInterpreterConfig_SHARED_GIL`)." msgstr "" +"Utilice la selección predeterminada " +"(:c:macro:`PyInterpreterConfig_SHARED_GIL`)." #: ../Doc/c-api/init.rst:1498 -#, fuzzy msgid "Use (share) the main interpreter's GIL." -msgstr "Retorna el objeto de estado del intérprete principal." +msgstr "Utilice (comparta) el GIL del intérprete principal." #: ../Doc/c-api/init.rst:1502 -#, fuzzy msgid "Use the sub-interpreter's own GIL." -msgstr "Obtiene el intérprete actual." +msgstr "Utilice el GIL propio del subintérprete." #: ../Doc/c-api/init.rst:1504 msgid "" -"If this is :c:macro:`PyInterpreterConfig_OWN_GIL` then :c:member:" -"`PyInterpreterConfig.use_main_obmalloc` must be ``0``." +"If this is :c:macro:`PyInterpreterConfig_OWN_GIL` " +"then :c:member:`PyInterpreterConfig.use_main_obmalloc` must be ``0``." msgstr "" +"Si es :c:macro:`PyInterpreterConfig_OWN_GIL`, " +"entonces :c:member:`PyInterpreterConfig.use_main_obmalloc` debe ser ``0``." #: ../Doc/c-api/init.rst:1518 msgid "" "Create a new sub-interpreter. This is an (almost) totally separate " "environment for the execution of Python code. In particular, the new " "interpreter has separate, independent versions of all imported modules, " -"including the fundamental modules :mod:`builtins`, :mod:`__main__` and :mod:" -"`sys`. The table of loaded modules (``sys.modules``) and the module search " -"path (``sys.path``) are also separate. The new environment has no ``sys." -"argv`` variable. It has new standard I/O stream file objects ``sys.stdin``, " -"``sys.stdout`` and ``sys.stderr`` (however these refer to the same " -"underlying file descriptors)." +"including the fundamental modules :mod:`builtins`, :mod:`__main__` " +"and :mod:`sys`. The table of loaded modules (``sys.modules``) and the " +"module search path (``sys.path``) are also separate. The new environment " +"has no ``sys.argv`` variable. It has new standard I/O stream file objects " +"``sys.stdin``, ``sys.stdout`` and ``sys.stderr`` (however these refer to the " +"same underlying file descriptors)." msgstr "" "Crea un nuevo subinterprete. Este es un entorno (casi) totalmente separado " "para la ejecución de código Python. En particular, el nuevo intérprete tiene " "versiones separadas e independientes de todos los módulos importados, " -"incluidos los módulos fundamentales :mod:`builtins`, :mod:`__main__` y :mod:" -"`sys`. La tabla de módulos cargados (``sys.modules``) y la ruta de búsqueda " -"del módulo (``sys.path``) también están separados. El nuevo entorno no tiene " -"variable ``sys.argv``. Tiene nuevos objetos de archivo de flujo de E/S " -"estándar ``sys.stdin``, ``sys.stdout`` y ``sys.stderr`` (sin embargo, estos " -"se refieren a los mismos descriptores de archivo subyacentes)." +"incluidos los módulos fundamentales :mod:`builtins`, :mod:`__main__` " +"y :mod:`sys`. La tabla de módulos cargados (``sys.modules``) y la ruta de " +"búsqueda del módulo (``sys.path``) también están separados. El nuevo entorno " +"no tiene variable ``sys.argv``. Tiene nuevos objetos de archivo de flujo de " +"E/S 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:1528 msgid "" "The given *config* controls the options with which the interpreter is " "initialized." msgstr "" +"El *config* dado controla las opciones con las que se inicializa el " +"intérprete." #: ../Doc/c-api/init.rst:1531 -#, fuzzy msgid "" "Upon success, *tstate_p* will be set to the first thread state created in " "the new sub-interpreter. This thread state is made in the current thread " @@ -2492,17 +2543,14 @@ msgid "" "is stored in the current thread state and there may not be a current thread " "state." msgstr "" -"El valor de retorno apunta al primer estado del hilo creado en el nuevo " -"subinterprete. Este estado de hilo se realiza en el estado de hilo actual. " -"Tenga en cuenta que no se crea ningún hilo real; vea la discusión de los " -"estados del hilo a continuación. Si la creación del nuevo intérprete no " -"tiene éxito, se retorna ``NULL``; no se establece ninguna excepción, ya que " -"el estado de excepción se almacena en el estado actual del hilo y es posible " -"que no haya un estado actual del hilo. (Al igual que todas las otras " -"funciones de Python/C API, el bloqueo global del intérprete debe mantenerse " -"antes de llamar a esta función y aún se mantiene cuando regresa; sin " -"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.)" +"Si la creación del nuevo intérprete es exitosa, *tstate_p* se establecerá en " +"el primer estado de subproceso creado en el nuevo subintérprete. Este estado " +"de subproceso se crea en el estado de subproceso actual. Tenga en cuenta que " +"no se crea ningún subproceso real; consulte la explicación de los estados de " +"subprocesos a continuación. Si la creación del nuevo intérprete no es " +"exitosa, *tstate_p* se establece en ``NULL``; no se establece ninguna " +"excepción ya que el estado de excepción se almacena en el estado de " +"subproceso actual y es posible que no haya un estado de subproceso actual." #: ../Doc/c-api/init.rst:1540 msgid "" @@ -2515,12 +2563,22 @@ msgid "" "by the current thread and the previously interpreter's GIL will remain " "released here." msgstr "" +"Al igual que todas las demás funciones de la API de Python/C, el bloqueo del " +"intérprete global debe mantenerse antes de llamar a esta función y aún se " +"mantiene cuando regresa. Asimismo, se debe establecer un estado de " +"subproceso actual en la entrada. En caso de éxito, el estado de subproceso " +"devuelto se establecerá como actual. Si el subintérprete se crea con su " +"propio GIL, se liberará el GIL del intérprete que realiza la llamada. Cuando " +"la función regresa, el GIL del nuevo intérprete será retenido por el " +"subproceso actual y el GIL del intérprete anterior permanecerá liberado aquí." #: ../Doc/c-api/init.rst:1551 msgid "" "Sub-interpreters are most effective when isolated from each other, with " "certain functionality restricted::" msgstr "" +"Los subintérpretes son más eficaces cuando están aislados unos de otros y " +"con ciertas funciones restringidas:" #: ../Doc/c-api/init.rst:1554 msgid "" @@ -2535,14 +2593,29 @@ msgid "" "};\n" "PyThreadState *tstate = Py_NewInterpreterFromConfig(&config);" msgstr "" +"PyInterpreterConfig config = {\n" +" .use_main_obmalloc = 0,\n" +" .allow_fork = 0,\n" +" .allow_exec = 0,\n" +" .allow_threads = 1,\n" +" .allow_daemon_threads = 0,\n" +" .check_multi_interp_extensions = 1,\n" +" .gil = PyInterpreterConfig_OWN_GIL,\n" +"};\n" +"PyThreadState *tstate = Py_NewInterpreterFromConfig(&config);" #: ../Doc/c-api/init.rst:1565 msgid "" "Note that the config is used only briefly and does not get modified. During " -"initialization the config's values are converted into various :c:type:" -"`PyInterpreterState` values. A read-only copy of the config may be stored " -"internally on the :c:type:`PyInterpreterState`." +"initialization the config's values are converted into " +"various :c:type:`PyInterpreterState` values. A read-only copy of the config " +"may be stored internally on the :c:type:`PyInterpreterState`." msgstr "" +"Tenga en cuenta que la configuración se utiliza solo brevemente y no se " +"modifica. Durante la inicialización, los valores de la configuración se " +"convierten en varios valores :c:type:`PyInterpreterState`. Es posible que se " +"almacene una copia de solo lectura de la configuración internamente en " +"el :c:type:`PyInterpreterState`." #: ../Doc/c-api/init.rst:1574 msgid "Extension modules are shared between (sub-)interpreters as follows:" @@ -2552,45 +2625,46 @@ msgstr "" #: ../Doc/c-api/init.rst:1576 msgid "" -"For modules using multi-phase initialization, e.g. :c:func:" -"`PyModule_FromDefAndSpec`, a separate module object is created and " -"initialized for each interpreter. Only C-level static and global variables " -"are shared between these module objects." +"For modules using multi-phase initialization, " +"e.g. :c:func:`PyModule_FromDefAndSpec`, a separate module object is created " +"and initialized for each interpreter. Only C-level static and global " +"variables are shared between these module objects." msgstr "" -"Para módulos que usan inicialización multifase, por ejemplo :c:func:" -"`PyModule_FromDefAndSpec`, se crea e inicializa un objeto de módulo separado " -"para cada intérprete. Solo las variables estáticas y globales de nivel C se " -"comparten entre estos objetos de módulo." +"Para módulos que usan inicialización multifase, por " +"ejemplo :c:func:`PyModule_FromDefAndSpec`, se crea e inicializa un objeto de " +"módulo separado 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:1582 msgid "" -"For modules using single-phase initialization, e.g. :c:func:" -"`PyModule_Create`, the first time a particular extension is imported, it is " -"initialized normally, and a (shallow) copy of its module's dictionary is " -"squirreled away. When the same extension is imported by another " -"(sub-)interpreter, a new module is initialized and filled with the contents " -"of this copy; the extension's ``init`` function is not called. Objects in " -"the module's dictionary thus end up shared across (sub-)interpreters, which " -"might cause unwanted behavior (see `Bugs and caveats`_ below)." -msgstr "" -"Para módulos que utilizan inicialización monofásica, por ejemplo :c:func:" -"`PyModule_Create`, la primera vez que se importa una extensión en " -"particular, se inicializa normalmente y una copia (superficial) del " -"diccionario de su módulo se guarda. Cuando otro (sub) intérprete importa la " -"misma extensión, se inicializa un nuevo módulo y se llena con el contenido " -"de esta copia; no se llama a la función ``init`` de la extensión. Los " -"objetos en el diccionario del módulo terminan compartidos entre (sub) " +"For modules using single-phase initialization, " +"e.g. :c:func:`PyModule_Create`, the first time a particular extension is " +"imported, it is initialized normally, and a (shallow) copy of its module's " +"dictionary is squirreled away. When the same extension is imported by " +"another (sub-)interpreter, a new module is initialized and filled with the " +"contents of this copy; the extension's ``init`` function is not called. " +"Objects in the module's dictionary thus end up shared across " +"(sub-)interpreters, which might cause unwanted behavior (see `Bugs and " +"caveats`_ below)." +msgstr "" +"Para módulos que utilizan inicialización monofásica, por " +"ejemplo :c:func:`PyModule_Create`, la primera vez que se importa una " +"extensión en particular, se inicializa normalmente y una copia (superficial) " +"del diccionario de su módulo se guarda. Cuando otro (sub) intérprete importa " +"la misma extensión, se inicializa un nuevo módulo y se llena con el " +"contenido de esta copia; no se llama a la función ``init`` de la extensión. " +"Los objetos en el diccionario del módulo terminan compartidos entre (sub) " "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:1593 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:" -"`Py_FinalizeEx` and :c:func:`Py_Initialize`; in that case, the extension's " -"``initmodule`` function *is* called again. As with multi-phase " -"initialization, this means that only C-level static and global variables are " -"shared between these modules." +"after the interpreter has been completely re-initialized by " +"calling :c:func:`Py_FinalizeEx` and :c:func:`Py_Initialize`; in that case, " +"the extension's ``initmodule`` function *is* called again. As with multi-" +"phase initialization, this means that only C-level static and global " +"variables are shared between these modules." msgstr "" "Tenga en cuenta que esto es diferente de lo que sucede cuando se importa una " "extensión después de que el intérprete se haya reiniciado por completo " @@ -2601,15 +2675,19 @@ msgstr "" #: ../Doc/c-api/init.rst:1613 msgid "" -"Create a new sub-interpreter. This is essentially just a wrapper around :c:" -"func:`Py_NewInterpreterFromConfig` with a config that preserves the existing " -"behavior. The result is an unisolated sub-interpreter that shares the main " -"interpreter's GIL, allows fork/exec, allows daemon threads, and allows " -"single-phase init modules." +"Create a new sub-interpreter. This is essentially just a wrapper " +"around :c:func:`Py_NewInterpreterFromConfig` with a config that preserves " +"the existing behavior. The result is an unisolated sub-interpreter that " +"shares the main interpreter's GIL, allows fork/exec, allows daemon threads, " +"and allows single-phase init modules." msgstr "" +"Cree un nuevo subintérprete. Básicamente, se trata de un envoltorio " +"de :c:func:`Py_NewInterpreterFromConfig` con una configuración que conserva " +"el comportamiento existente. El resultado es un subintérprete no aislado que " +"comparte el GIL del intérprete principal, permite fork/exec, permite " +"subprocesos de demonio y permite módulos de inicialización monofásicos." #: ../Doc/c-api/init.rst:1625 -#, fuzzy 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 " @@ -2618,24 +2696,26 @@ msgid "" "destroyed. The global interpreter lock used by the target interpreter must " "be held before calling this function. No GIL is held when it returns." msgstr "" -"Destruye el (sub) intérprete representado por el estado del hilo dado. El " -"estado del hilo dado debe ser el estado del hilo actual. Vea la discusión de " -"los estados del hilo a continuación. Cuando la llamada regresa, el estado " -"actual del hilo es ``NULL``. Todos los estados de hilo asociados con este " -"intérprete se destruyen. (El bloqueo global del intérprete debe mantenerse " -"antes de llamar a esta función y aún se mantiene cuando vuelve). :c:func:" -"`Py_FinalizeEx` destruirá todos los subinterpretes que no se hayan destruido " -"explícitamente en ese punto." +"Destruye el (sub)intérprete representado por el estado del subproceso " +"indicado. El estado del subproceso indicado debe ser el estado actual del " +"subproceso. Consulta la explicación de los estados del subproceso a " +"continuación. Cuando la llamada retorna, el estado actual del subproceso es " +"``NULL``. Se destruyen todos los estados del subproceso asociados con este " +"intérprete. El bloqueo del intérprete global utilizado por el intérprete de " +"destino debe mantenerse antes de llamar a esta función. No se mantiene " +"ningún GIL cuando retorna." #: ../Doc/c-api/init.rst:1633 msgid "" ":c:func:`Py_FinalizeEx` will destroy all sub-interpreters that haven't been " "explicitly destroyed at that point." msgstr "" +":c:func:`Py_FinalizeEx` destruirá todos los subintérpretes que no hayan sido " +"destruidos explícitamente en ese momento." #: ../Doc/c-api/init.rst:1638 msgid "A Per-Interpreter GIL" -msgstr "" +msgstr "Un GIL por intérprete" #: ../Doc/c-api/init.rst:1640 msgid "" @@ -2648,6 +2728,14 @@ msgid "" "isolation also encourages a different approach to concurrency than that of " "just using threads. (See :pep:`554`.)" msgstr "" +"Con :c:func:`Py_NewInterpreterFromConfig` se puede crear un subintérprete " +"que esté completamente aislado de otros intérpretes, incluso con su propio " +"GIL. El beneficio más importante de este aislamiento es que un intérprete de " +"este tipo puede ejecutar código Python sin que otros intérpretes lo bloqueen " +"ni bloqueen a ningún otro. Por lo tanto, un único proceso Python puede " +"aprovechar realmente los múltiples núcleos de CPU al ejecutar código Python. " +"El aislamiento también fomenta un enfoque diferente de la concurrencia que " +"el de simplemente usar subprocesos. (Consulte :pep:`554`)." #: ../Doc/c-api/init.rst:1650 msgid "" @@ -2662,6 +2750,18 @@ msgid "" "been done for the builtin singletons, small integers, and a number of other " "builtin objects." msgstr "" +"El uso de un intérprete aislado requiere vigilancia para preservar ese " +"aislamiento. Esto significa especialmente no compartir ningún objeto o " +"estado mutable sin garantías sobre la seguridad de los subprocesos. Incluso " +"los objetos que de otro modo serían inmutables (por ejemplo, ``None``, ``(1, " +"5)``) normalmente no se pueden compartir debido al recuento de referencias. " +"Un enfoque simple pero menos eficiente para evitar esto es usar un bloqueo " +"global alrededor de todo uso de algún estado (u objeto). Alternativamente, " +"los objetos efectivamente inmutables (como números enteros o cadenas) se " +"pueden hacer seguros a pesar de sus recuentos de referencias al convertirlos " +"en :term:`immortal`. De hecho, esto se ha hecho para los singletons " +"integrados, los números enteros pequeños y una serie de otros objetos " +"integrados." #: ../Doc/c-api/init.rst:1661 msgid "" @@ -2670,6 +2770,11 @@ msgid "" "to preserve isolation will expose you to the full consequences of free-" "threading, including races and hard-to-debug crashes." msgstr "" +"Si preserva el aislamiento, tendrá acceso a una computación multinúcleo " +"adecuada sin las complicaciones que conlleva el uso de subprocesos libres. " +"Si no preserva el aislamiento, se expondrá a todas las consecuencias del uso " +"de subprocesos libres, incluidas las carreras y los fallos difíciles de " +"depurar." #: ../Doc/c-api/init.rst:1666 msgid "" @@ -2680,6 +2785,13 @@ msgid "" "of preserving isolation and expose effective tools for communicating (and " "sharing) data between interpreters." msgstr "" +"Aparte de eso, uno de los principales desafíos de usar varios intérpretes " +"aislados es cómo comunicarse entre ellos de forma segura (sin romper el " +"aislamiento) y eficiente. El entorno de ejecución y la biblioteca estándar " +"aún no ofrecen ningún enfoque estándar para esto. Un futuro módulo de la " +"biblioteca estándar ayudaría a mitigar el esfuerzo de preservar el " +"aislamiento y expondría herramientas efectivas para comunicar (y compartir) " +"datos entre intérpretes." #: ../Doc/c-api/init.rst:1677 msgid "Bugs and caveats" @@ -2729,10 +2841,10 @@ msgid "" "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 " -"created threads will probably be broken when using sub-interpreters." +"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 created threads will probably be broken when using sub-interpreters." msgstr "" "También tenga en cuenta que la combinación de esta funcionalidad con " "``PyGILState_*`` APIs es delicada, porque estas APIs suponen una biyección " @@ -2829,8 +2941,8 @@ msgid "" "no guarantee that *func* will be called as quick as possible. If the main " "thread is busy executing a system call, *func* won't be called before the " "system call returns. This function is generally **not** suitable for " -"calling Python code from arbitrary C threads. Instead, use the :ref:" -"`PyGILState API`." +"calling Python code from arbitrary C threads. Instead, use " +"the :ref:`PyGILState API`." msgstr "" "Esta es una función de bajo nivel, solo útil para casos muy especiales. No " "hay garantía de que *func* se llame lo más rápido posible. Si el hilo " @@ -2883,25 +2995,20 @@ msgstr "" "rastreo a nivel de Python en versiones anteriores." #: ../Doc/c-api/init.rst:1778 -#, fuzzy 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 " "the registration function as *obj*, *frame* is the frame object to which the " -"event pertains, *what* is one of the constants :c:data:`PyTrace_CALL`, :c:" -"data:`PyTrace_EXCEPTION`, :c:data:`PyTrace_LINE`, :c:data:`PyTrace_RETURN`, :" -"c:data:`PyTrace_C_CALL`, :c:data:`PyTrace_C_EXCEPTION`, :c:data:" -"`PyTrace_C_RETURN`, or :c:data:`PyTrace_OPCODE`, and *arg* depends on the " -"value of *what*:" -msgstr "" -"El tipo de la función de rastreo registrada usando :c:func:" -"`PyEval_SetProfile` y :c:func:`PyEval_SetTrace`. El primer parámetro es el " -"objeto pasado a la función de registro como *obj*, *frame* es el objeto de " -"marco al que pertenece el evento, *what* es una de las constantes :const:" -"`PyTrace_CALL`, :const:`PyTrace_EXCEPTION` , :const:`PyTrace_LINE`, :const:" -"`PyTrace_RETURN`, :const:`PyTrace_C_CALL`, :const:`PyTrace_C_EXCEPTION`, :" -"const:`PyTrace_C_RETURN`, o :const:`PyTrace_OPCODE`, y *arg* depende de el " -"valor de *what*:" +"event pertains, *what* is one of the " +"constants :c:data:`PyTrace_CALL`, :c:data:`PyTrace_EXCEPTION`, :c:data:`PyTrace_LINE`, :c:data:`PyTrace_RETURN`, :c:data:`PyTrace_C_CALL`, :c:data:`PyTrace_C_EXCEPTION`, :c:data:`PyTrace_C_RETURN`, " +"or :c:data:`PyTrace_OPCODE`, and *arg* depends on the value of *what*:" +msgstr "" +"El tipo de la función de seguimiento registrada " +"mediante :c:func:`PyEval_SetProfile` y :c:func:`PyEval_SetTrace`. El primer " +"parámetro es el objeto pasado a la función de registro como *obj*, *frame* " +"es el objeto de marco al que pertenece el evento, *what* es una de las " +"constantes :c:data:`PyTrace_CALL`, :c:data:`PyTrace_EXCEPTION`, :c:data:`PyTrace_LINE`, :c:data:`PyTrace_RETURN`, :c:data:`PyTrace_C_CALL`, :c:data:`PyTrace_C_EXCEPTION`, :c:data:`PyTrace_C_RETURN` " +"o :c:data:`PyTrace_OPCODE`, y *arg* depende del valor de *what*:" #: ../Doc/c-api/init.rst:1787 msgid "Value of *what*" @@ -2912,9 +3019,8 @@ msgid "Meaning of *arg*" msgstr "Significado de *arg*" #: ../Doc/c-api/init.rst:1789 -#, fuzzy msgid ":c:data:`PyTrace_CALL`" -msgstr ":const:`PyTrace_CALL`" +msgstr ":c:data:`PyTrace_CALL`" #: ../Doc/c-api/init.rst:1789 ../Doc/c-api/init.rst:1794 #: ../Doc/c-api/init.rst:1805 @@ -2922,23 +3028,20 @@ msgid "Always :c:data:`Py_None`." msgstr "Siempre :c:data:`Py_None`." #: ../Doc/c-api/init.rst:1791 -#, fuzzy msgid ":c:data:`PyTrace_EXCEPTION`" -msgstr ":const:`PyTrace_EXCEPTION`" +msgstr ":c:data:`PyTrace_EXCEPTION`" #: ../Doc/c-api/init.rst:1791 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:1794 -#, fuzzy msgid ":c:data:`PyTrace_LINE`" -msgstr ":const:`PyTrace_LINE`" +msgstr ":c:data:`PyTrace_LINE`" #: ../Doc/c-api/init.rst:1796 -#, fuzzy msgid ":c:data:`PyTrace_RETURN`" -msgstr ":const:`PyTrace_RETURN`" +msgstr ":c:data:`PyTrace_RETURN`" #: ../Doc/c-api/init.rst:1796 msgid "" @@ -2947,9 +3050,8 @@ msgstr "" "Valor retornado al que llama, o ``NULL`` si es causado por una excepción." #: ../Doc/c-api/init.rst:1799 -#, fuzzy msgid ":c:data:`PyTrace_C_CALL`" -msgstr ":const:`PyTrace_C_CALL`" +msgstr ":c:data:`PyTrace_C_CALL`" #: ../Doc/c-api/init.rst:1799 ../Doc/c-api/init.rst:1801 #: ../Doc/c-api/init.rst:1803 @@ -2957,19 +3059,16 @@ msgid "Function object being called." msgstr "Objeto función que se llaman." #: ../Doc/c-api/init.rst:1801 -#, fuzzy msgid ":c:data:`PyTrace_C_EXCEPTION`" -msgstr ":const:`PyTrace_C_EXCEPTION`" +msgstr ":c:data:`PyTrace_C_EXCEPTION`" #: ../Doc/c-api/init.rst:1803 -#, fuzzy msgid ":c:data:`PyTrace_C_RETURN`" -msgstr ":const:`PyTrace_C_RETURN`" +msgstr ":c:data:`PyTrace_C_RETURN`" #: ../Doc/c-api/init.rst:1805 -#, fuzzy msgid ":c:data:`PyTrace_OPCODE`" -msgstr ":const:`PyTrace_OPCODE`" +msgstr ":c:data:`PyTrace_OPCODE`" #: ../Doc/c-api/init.rst:1810 msgid "" @@ -3007,17 +3106,17 @@ msgstr "" "no los necesita." #: ../Doc/c-api/init.rst:1830 -#, fuzzy 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 " -"reported. It may be disabled for a frame by setting :attr:`~frame." -"f_trace_lines` to *0* on that frame." +"reported. It may be disabled for a frame by " +"setting :attr:`~frame.f_trace_lines` to *0* on that frame." msgstr "" -"El valor pasado como parámetro *what* a una función :c:type:`Py_tracefunc` " -"(pero no una función de creación de perfiles) cuando se informa un evento de " -"número de línea. Puede deshabilitarse para un marco configurando :attr:" -"`f_trace_lines` en *0* en ese marco." +"El valor que se pasa como parámetro *what* a una " +"función :c:type:`Py_tracefunc` (pero no a una función de creación de " +"perfiles) cuando se informa un evento de número de línea. Se puede " +"desactivar para un marco configurando :attr:`~frame.f_trace_lines` en *0* en " +"ese marco." #: ../Doc/c-api/init.rst:1838 msgid "" @@ -3052,36 +3151,36 @@ msgstr "" "una función C ha retornado." #: ../Doc/c-api/init.rst:1862 -#, fuzzy 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 " -"event is not emitted by default: it must be explicitly requested by setting :" -"attr:`~frame.f_trace_opcodes` to *1* on the frame." +"event is not emitted by default: it must be explicitly requested by " +"setting :attr:`~frame.f_trace_opcodes` to *1* on the frame." msgstr "" -"El valor del parámetro *what* para funciones :c:type:`Py_tracefunc` (pero no " -"funciones de creación de perfiles) cuando un nuevo código de operación está " -"a punto de ejecutarse. Este evento no se emite de forma predeterminada: debe " -"solicitarse explícitamente estableciendo :attr:`f_trace_opcodes` en *1* en " -"el marco." +"El valor del parámetro *what* para las funciones :c:type:`Py_tracefunc` " +"(pero no para las funciones de creación de perfiles) cuando está a punto de " +"ejecutarse un nuevo código de operación. Este evento no se emite de forma " +"predeterminada: debe solicitarse explícitamente " +"configurando :attr:`~frame.f_trace_opcodes` en *1* en el marco." #: ../Doc/c-api/init.rst:1870 -#, fuzzy 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``. " "If the profile function needs to maintain state, using a different value for " "*obj* for each thread provides a convenient and thread-safe place to store " -"it. The profile function is called for all monitored events except :c:data:" -"`PyTrace_LINE` :c:data:`PyTrace_OPCODE` and :c:data:`PyTrace_EXCEPTION`." -msgstr "" -"Establece la función del generador de perfiles en *func*. El parámetro *obj* " -"se pasa a la función como su primer parámetro, y puede ser cualquier objeto " -"de Python o ``NULL``. Si la función de perfilado necesita mantener el " -"estado, el uso de un valor diferente para *obj* para cada hilo proporciona " -"un lugar conveniente y seguro para guardarlo. Se llama a la función de " -"perfilado para todos los eventos supervisados, excepto :const:" -"`PyTrace_LINE` :const:`PyTrace_OPCODE` y :const:`PyTrace_EXCEPTION`." +"it. The profile function is called for all monitored events " +"except :c:data:`PyTrace_LINE` :c:data:`PyTrace_OPCODE` " +"and :c:data:`PyTrace_EXCEPTION`." +msgstr "" +"Establezca la función de perfilador en *func*. El parámetro *obj* se pasa a " +"la función como su primer parámetro y puede ser cualquier objeto Python o " +"``NULL``. Si la función de perfilador necesita mantener el estado, el uso de " +"un valor diferente para *obj* para cada subproceso proporciona un lugar " +"conveniente y seguro para subprocesos donde almacenarlo. La función de " +"perfilador se llama para todos los eventos monitoreados " +"excepto :c:data:`PyTrace_LINE`, :c:data:`PyTrace_OPCODE` " +"y :c:data:`PyTrace_EXCEPTION`." #: ../Doc/c-api/init.rst:1877 msgid "See also the :func:`sys.setprofile` function." @@ -3098,31 +3197,37 @@ msgid "" "running threads belonging to the current interpreter instead of the setting " "it only on the current thread." msgstr "" +"Como :c:func:`PyEval_SetProfile`, pero establece la función de perfil en " +"todos los subprocesos en ejecución que pertenecen al intérprete actual en " +"lugar de configurarla solo en el subproceso actual." #: ../Doc/c-api/init.rst:1888 msgid "" "As :c:func:`PyEval_SetProfile`, this function ignores any exceptions raised " "while setting the profile functions in all threads." msgstr "" +"Al igual que :c:func:`PyEval_SetProfile`, esta función ignora cualquier " +"excepción generada al configurar las funciones de perfil en todos los " +"subprocesos." #: ../Doc/c-api/init.rst:1896 -#, fuzzy -msgid "" -"Set the tracing function to *func*. This is similar to :c:func:" -"`PyEval_SetProfile`, except the tracing function does receive line-number " -"events and per-opcode events, but does not receive any event related to C " -"function objects being called. Any trace function registered using :c:func:" -"`PyEval_SetTrace` will not receive :c:data:`PyTrace_C_CALL`, :c:data:" -"`PyTrace_C_EXCEPTION` or :c:data:`PyTrace_C_RETURN` as a value for the " -"*what* parameter." -msgstr "" -"Establece la función de rastreo en *func*. Esto es similar a :c:func:" -"`PyEval_SetProfile`, excepto que la función de rastreo recibe eventos de " -"número de línea y eventos por código de operación, pero no recibe ningún " -"evento relacionado con los objetos de la función C. Cualquier función de " -"rastreo registrada con :c:func:`PyEval_SetTrace` no recibirá :const:" -"`PyTrace_C_CALL`, :const:`PyTrace_C_EXCEPTION` o :const:`PyTrace_C_RETURN` " -"como valor para el parámetro *what*." +msgid "" +"Set the tracing function to *func*. This is similar " +"to :c:func:`PyEval_SetProfile`, except the tracing function does receive " +"line-number events and per-opcode events, but does not receive any event " +"related to C function objects being called. Any trace function registered " +"using :c:func:`PyEval_SetTrace` will not " +"receive :c:data:`PyTrace_C_CALL`, :c:data:`PyTrace_C_EXCEPTION` " +"or :c:data:`PyTrace_C_RETURN` as a value for the *what* parameter." +msgstr "" +"Establezca la función de seguimiento en *func*. Es similar " +"a :c:func:`PyEval_SetProfile`, excepto que la función de seguimiento recibe " +"eventos de número de línea y eventos por código de operación, pero no recibe " +"ningún evento relacionado con los objetos de función C que se están " +"llamando. Cualquier función de seguimiento registrada " +"con :c:func:`PyEval_SetTrace` no " +"recibirá :c:data:`PyTrace_C_CALL`, :c:data:`PyTrace_C_EXCEPTION` " +"o :c:data:`PyTrace_C_RETURN` como valor para el parámetro *what*." #: ../Doc/c-api/init.rst:1903 msgid "See also the :func:`sys.settrace` function." @@ -3134,44 +3239,55 @@ msgid "" "threads belonging to the current interpreter instead of the setting it only " "on the current thread." msgstr "" +"Como :c:func:`PyEval_SetTrace`, pero establece la función de seguimiento en " +"todos los subprocesos en ejecución que pertenecen al intérprete actual en " +"lugar de configurarla solo en el subproceso actual." #: ../Doc/c-api/init.rst:1914 msgid "" "As :c:func:`PyEval_SetTrace`, this function ignores any exceptions raised " "while setting the trace functions in all threads." msgstr "" +"Al igual que :c:func:`PyEval_SetTrace`, esta función ignora cualquier " +"excepción generada al configurar las funciones de seguimiento en todos los " +"subprocesos." #: ../Doc/c-api/init.rst:1920 msgid "Reference tracing" -msgstr "" +msgstr "Rastreo de referencia" #: ../Doc/c-api/init.rst:1926 msgid "" -"The type of the trace function registered using :c:func:" -"`PyRefTracer_SetTracer`. The first parameter is a Python object that has " -"been just created (when **event** is set to :c:data:`PyRefTracer_CREATE`) or " -"about to be destroyed (when **event** is set to :c:data:" -"`PyRefTracer_DESTROY`). The **data** argument is the opaque pointer that was " -"provided when :c:func:`PyRefTracer_SetTracer` was called." -msgstr "" +"The type of the trace function registered " +"using :c:func:`PyRefTracer_SetTracer`. The first parameter is a Python " +"object that has been just created (when **event** is set " +"to :c:data:`PyRefTracer_CREATE`) or about to be destroyed (when **event** is " +"set to :c:data:`PyRefTracer_DESTROY`). The **data** argument is the opaque " +"pointer that was provided when :c:func:`PyRefTracer_SetTracer` was called." +msgstr "" +"El tipo de la función de seguimiento registrada " +"mediante :c:func:`PyRefTracer_SetTracer`. El primer parámetro es un objeto " +"Python que se acaba de crear (cuando **event** se establece " +"en :c:data:`PyRefTracer_CREATE`) o que está a punto de destruirse (cuando " +"**event** se establece en :c:data:`PyRefTracer_DESTROY`). El argumento " +"**data** es el puntero opaco que se proporcionó cuando se llamó " +"a :c:func:`PyRefTracer_SetTracer`." #: ../Doc/c-api/init.rst:1936 -#, fuzzy msgid "" "The value for the *event* parameter to :c:type:`PyRefTracer` functions when " "a Python object has been created." msgstr "" -"El valor del parámetro *what* para :c:type:`Py_tracefunc` funciona cuando " -"una función C ha retornado." +"El valor del parámetro *event* a :c:type:`PyRefTracer` funciona cuando se ha " +"creado un objeto Python." #: ../Doc/c-api/init.rst:1941 -#, fuzzy msgid "" "The value for the *event* parameter to :c:type:`PyRefTracer` functions when " "a Python object has been destroyed." msgstr "" -"El valor del parámetro *what* para :c:type:`Py_tracefunc` funciona cuando " -"una función C ha retornado." +"El valor del parámetro *event* a :c:type:`PyRefTracer` funciona cuando se ha " +"destruido un objeto Python." #: ../Doc/c-api/init.rst:1946 msgid "" @@ -3181,6 +3297,11 @@ msgid "" "the tracer function is called. Return ``0`` on success. Set an exception and " "return ``-1`` on error." msgstr "" +"Registra una función de rastreo de referencia. La función se llamará cuando " +"se haya creado un nuevo Python o cuando se vaya a destruir un objeto. Si se " +"proporciona **data**, debe ser un puntero opaco que se proporcionará cuando " +"se llame a la función de rastreo. Devuelve ``0`` en caso de éxito. Establece " +"una excepción y devuelve ``-1`` en caso de error." #: ../Doc/c-api/init.rst:1952 msgid "" @@ -3189,13 +3310,15 @@ msgid "" "any existing exception or set an exception. The GIL will be held every time " "the tracer function is called." msgstr "" +"No es que las funciones de seguimiento **must not** creen objetos Python en " +"su interior, de lo contrario la llamada será reentrante. El seguimiento " +"también **must not** borra cualquier excepción existente o establece una " +"excepción. El GIL se mantendrá cada vez que se llame a la función de " +"seguimiento." #: ../Doc/c-api/init.rst:1957 ../Doc/c-api/init.rst:1968 -#, fuzzy msgid "The GIL must be held when calling this function." -msgstr "" -"El GIL *no* necesita ser retenido al llamar a estas funciones; proporcionan " -"su propio bloqueo." +msgstr "El GIL debe mantenerse al llamar a esta función." #: ../Doc/c-api/init.rst:1963 msgid "" @@ -3204,6 +3327,10 @@ msgid "" "called. If no tracer was registered this function will return NULL and will " "set the **data** pointer to NULL." msgstr "" +"Obtenga la función de trazador de referencia registrada y el valor del " +"puntero de datos opacos que se registró cuando se llamó " +"a :c:func:`PyRefTracer_SetTracer`. Si no se registró ningún trazador, esta " +"función devolverá NULL y establecerá el puntero **data** en NULL." #: ../Doc/c-api/init.rst:1975 msgid "Advanced Debugger Support" @@ -3250,8 +3377,8 @@ msgid "" "objects belonging to the same :c:type:`PyInterpreterState` object." msgstr "" "Retorna el siguiente objeto de estado del hilo después de *tstate* de la " -"lista de todos los objetos que pertenecen al mismo objeto :c:type:" -"`PyInterpreterState`." +"lista de todos los objetos que pertenecen al mismo " +"objeto :c:type:`PyInterpreterState`." #: ../Doc/c-api/init.rst:2014 msgid "Thread Local Storage Support" @@ -3292,10 +3419,10 @@ msgstr "" #: ../Doc/c-api/init.rst:2032 msgid "" -"None of these API functions handle memory management on behalf of the :c:" -"expr:`void*` values. You need to allocate and deallocate them yourself. If " -"the :c:expr:`void*` values happen to be :c:expr:`PyObject*`, these functions " -"don't do refcount operations on them either." +"None of these API functions handle memory management on behalf of " +"the :c:expr:`void*` values. You need to allocate and deallocate them " +"yourself. If 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 " "de los valores :c:expr:`void*`. Debe asignarlos y desasignarlos usted mismo. " @@ -3314,8 +3441,9 @@ msgid "" "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:expr:`int` para representar las claves del hilo." +"dentro del intérprete de CPython. Esta API utiliza un nuevo " +"tipo :c:type:`Py_tss_t` en lugar de :c:expr:`int` para representar las " +"claves del hilo." #: ../Doc/c-api/init.rst:2048 msgid "\"A New C-API for Thread-Local Storage in CPython\" (:pep:`539`)" @@ -3368,11 +3496,12 @@ msgstr "" #: ../Doc/c-api/init.rst:2078 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." +"Return a value which is the same state as a value initialized " +"with :c:macro:`Py_tss_NEEDS_INIT`, or ``NULL`` in the case of dynamic " +"allocation failure." msgstr "" -"Retorna un valor que es el mismo estado que un valor inicializado con :c:" -"macro:`Py_tss_NEEDS_INIT`, o ``NULL`` en caso de falla de asignación " +"Retorna un valor que es el mismo estado que un valor inicializado " +"con :c:macro:`Py_tss_NEEDS_INIT`, o ``NULL`` en caso de falla de asignación " "dinámica." #: ../Doc/c-api/init.rst:2085 @@ -3401,8 +3530,8 @@ msgstr "Métodos" 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 " -"undefined if the given :c:type:`Py_tss_t` has not been initialized by :c:" -"func:`PyThread_tss_create`." +"undefined if the given :c:type:`Py_tss_t` has not been initialized " +"by :c:func:`PyThread_tss_create`." msgstr "" "El parámetro *key* de estas funciones no debe ser ``NULL``. Además, los " "comportamientos de :c:func:`PyThread_tss_set` y :c:func:`PyThread_tss_get` " @@ -3435,15 +3564,16 @@ msgstr "" 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 " -"destroyed key is able to be initialized again by :c:func:" -"`PyThread_tss_create`. This function can be called repeatedly on the same " -"key -- calling it on an already destroyed key is a no-op." +"destroyed key is able to be initialized again " +"by :c:func:`PyThread_tss_create`. This function can be called repeatedly on " +"the same key -- calling it on an already destroyed key is a no-op." msgstr "" "Destruye una clave TSS para olvidar los valores asociados con la clave en " "todos los hilos y cambie el estado de inicialización de la clave a no " -"inicializado. Una clave destruida se puede inicializar nuevamente mediante :" -"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*." +"inicializado. Una clave destruida se puede inicializar nuevamente " +"mediante :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:2130 msgid "" @@ -3451,9 +3581,9 @@ msgid "" "value with a TSS key in the current thread. Each thread has a distinct " "mapping of the key to a :c:expr:`void*` value." msgstr "" -"Retorna un valor cero para indicar la asociación exitosa de un valor a :c:" -"expr:`void*` con una clave TSS en el hilo actual. Cada hilo tiene un mapeo " -"distinto de la clave a un valor :c:expr:`void*`." +"Retorna un valor cero para indicar la asociación exitosa de un valor " +"a :c:expr:`void*` con una clave TSS en el hilo actual. Cada hilo tiene un " +"mapeo distinto de la clave a un valor :c:expr:`void*`." #: ../Doc/c-api/init.rst:2137 msgid "" @@ -3502,21 +3632,23 @@ msgstr "" #: ../Doc/c-api/init.rst:2168 msgid "Synchronization Primitives" -msgstr "" +msgstr "Primitivas de sincronización" #: ../Doc/c-api/init.rst:2170 msgid "The C-API provides a basic mutual exclusion lock." -msgstr "" +msgstr "La C-API proporciona un bloqueo de exclusión mutua básico." #: ../Doc/c-api/init.rst:2174 msgid "" "A mutual exclusion lock. The :c:type:`!PyMutex` should be initialized to " "zero to represent the unlocked state. For example::" msgstr "" +"Un bloqueo de exclusión mutua. El :c:type:`!PyMutex` debe inicializarse a " +"cero para representar el estado desbloqueado. Por ejemplo:" #: ../Doc/c-api/init.rst:2177 msgid "PyMutex mutex = {0};" -msgstr "" +msgstr "PyMutex mutex = {0};" #: ../Doc/c-api/init.rst:2179 msgid "" @@ -3524,6 +3656,9 @@ msgid "" "contents and address of a :c:type:`!PyMutex` are meaningful, and it must " "remain at a fixed, writable location in memory." msgstr "" +"Las instancias de :c:type:`!PyMutex` no se deben copiar ni mover. Tanto el " +"contenido como la dirección de un :c:type:`!PyMutex` son significativos y " +"deben permanecer en una ubicación fija y escribible en la memoria." #: ../Doc/c-api/init.rst:2185 msgid "" @@ -3531,6 +3666,9 @@ msgid "" "considered unstable. The size may change in future Python releases without " "a deprecation period." msgstr "" +"Actualmente, un :c:type:`!PyMutex` ocupa un byte, pero el tamaño debe " +"considerarse inestable. El tamaño puede cambiar en futuras versiones de " +"Python sin un período de desuso." #: ../Doc/c-api/init.rst:2193 msgid "" @@ -3538,16 +3676,22 @@ msgid "" "will block until the mutex is unlocked. While blocked, the thread will " "temporarily release the :term:`GIL` if it is held." msgstr "" +"Bloqueo del mutex *m*. Si otro subproceso ya lo ha bloqueado, el subproceso " +"que realiza la llamada se bloqueará hasta que se desbloquee el mutex. " +"Mientras esté bloqueado, el subproceso liberará temporalmente el :term:`GIL` " +"si está retenido." #: ../Doc/c-api/init.rst:2201 msgid "" "Unlock mutex *m*. The mutex must be locked --- otherwise, the function will " "issue a fatal error." msgstr "" +"Desbloquee el mutex *m*. El mutex debe estar bloqueado; de lo contrario, la " +"función emitirá un error fatal." #: ../Doc/c-api/init.rst:2209 msgid "Python Critical Section API" -msgstr "" +msgstr "API de sección crítica de Python" #: ../Doc/c-api/init.rst:2211 msgid "" @@ -3556,16 +3700,29 @@ msgid "" "intended to replace reliance on the :term:`global interpreter lock`, and are " "no-ops in versions of Python with the global interpreter lock." msgstr "" +"La API de sección crítica proporciona una capa de prevención de bloqueos " +"sobre los bloqueos por objeto para :term:`free-threaded ` " +"CPython. Su objetivo es reemplazar la dependencia de :term:`global " +"interpreter lock` y no se pueden realizar operaciones en versiones de Python " +"con el bloqueo del intérprete global." #: ../Doc/c-api/init.rst:2216 msgid "" "Critical sections avoid deadlocks by implicitly suspending active critical " -"sections and releasing the locks during calls to :c:func:" -"`PyEval_SaveThread`. When :c:func:`PyEval_RestoreThread` is called, the most " -"recent critical section is resumed, and its locks reacquired. This means " -"the critical section API provides weaker guarantees than traditional locks " -"-- they are useful because their behavior is similar to the :term:`GIL`." -msgstr "" +"sections and releasing the locks during calls " +"to :c:func:`PyEval_SaveThread`. When :c:func:`PyEval_RestoreThread` is " +"called, the most recent critical section is resumed, and its locks " +"reacquired. This means the critical section API provides weaker guarantees " +"than traditional locks -- they are useful because their behavior is similar " +"to the :term:`GIL`." +msgstr "" +"Las secciones críticas evitan los bloqueos al suspender implícitamente las " +"secciones críticas activas y liberar los bloqueos durante las llamadas " +"a :c:func:`PyEval_SaveThread`. Cuando se llama " +"a :c:func:`PyEval_RestoreThread`, se reanuda la sección crítica más reciente " +"y se vuelven a adquirir sus bloqueos. Esto significa que la API de la " +"sección crítica ofrece garantías más débiles que los bloqueos tradicionales; " +"son útiles porque su comportamiento es similar al de :term:`GIL`." #: ../Doc/c-api/init.rst:2223 msgid "" @@ -3574,19 +3731,29 @@ msgid "" "expansions. Note that the sizes and contents of the structures may change in " "future Python versions." msgstr "" +"Las funciones y estructuras que utilizan las macros se exponen para los " +"casos en los que las macros de C no están disponibles. Solo se deben " +"utilizar como en las expansiones de macros indicadas. Tenga en cuenta que " +"los tamaños y contenidos de las estructuras pueden cambiar en futuras " +"versiones de Python." #: ../Doc/c-api/init.rst:2230 msgid "" -"Operations that need to lock two objects at once must use :c:macro:" -"`Py_BEGIN_CRITICAL_SECTION2`. You *cannot* use nested critical sections to " -"lock more than one object at once, because the inner critical section may " -"suspend the outer critical sections. This API does not provide a way to " -"lock more than two objects at once." +"Operations that need to lock two objects at once must " +"use :c:macro:`Py_BEGIN_CRITICAL_SECTION2`. You *cannot* use nested critical " +"sections to lock more than one object at once, because the inner critical " +"section may suspend the outer critical sections. This API does not provide " +"a way to lock more than two objects at once." msgstr "" +"Las operaciones que necesitan bloquear dos objetos a la vez deben " +"utilizar :c:macro:`Py_BEGIN_CRITICAL_SECTION2`. *cannot* utiliza secciones " +"críticas anidadas para bloquear más de un objeto a la vez, ya que la sección " +"crítica interna puede suspender las secciones críticas externas. Esta API no " +"proporciona una manera de bloquear más de dos objetos a la vez." #: ../Doc/c-api/init.rst:2236 msgid "Example usage::" -msgstr "" +msgstr "Ejemplo de uso::" #: ../Doc/c-api/init.rst:2238 msgid "" @@ -3599,6 +3766,14 @@ msgid "" " Py_RETURN_NONE;\n" "}" msgstr "" +"static PyObject *\n" +"set_field(MyObject *self, PyObject *value)\n" +"{\n" +" Py_BEGIN_CRITICAL_SECTION(self);\n" +" Py_SETREF(self->field, Py_XNewRef(value));\n" +" Py_END_CRITICAL_SECTION();\n" +" Py_RETURN_NONE;\n" +"}" #: ../Doc/c-api/init.rst:2247 msgid "" @@ -3606,20 +3781,28 @@ msgid "" "can call arbitrary code through an object's deallocation function. The " "critical section API avoids potentital deadlocks due to reentrancy and lock " "ordering by allowing the runtime to temporarily suspend the critical section " -"if the code triggered by the finalizer blocks and calls :c:func:" -"`PyEval_SaveThread`." +"if the code triggered by the finalizer blocks and " +"calls :c:func:`PyEval_SaveThread`." msgstr "" +"En el ejemplo anterior, :c:macro:`Py_SETREF` llama a :c:macro:`Py_DECREF`, " +"que puede llamar a código arbitrario a través de la función de desasignación " +"de un objeto. La API de sección crítica evita posibles bloqueos debido a la " +"reentrada y al orden de bloqueo al permitir que el entorno de ejecución " +"suspenda temporalmente la sección crítica si el código activado por el " +"finalizador se bloquea y llama a :c:func:`PyEval_SaveThread`." #: ../Doc/c-api/init.rst:2255 msgid "" "Acquires the per-object lock for the object *op* and begins a critical " "section." msgstr "" +"Adquiere el bloqueo por objeto para el objeto *op* y comienza una sección " +"crítica." #: ../Doc/c-api/init.rst:2258 ../Doc/c-api/init.rst:2272 #: ../Doc/c-api/init.rst:2287 ../Doc/c-api/init.rst:2301 msgid "In the free-threaded build, this macro expands to::" -msgstr "" +msgstr "En la compilación de subprocesos libres, esta macro se expande a:" #: ../Doc/c-api/init.rst:2260 msgid "" @@ -3627,24 +3810,29 @@ msgid "" " PyCriticalSection _py_cs;\n" " PyCriticalSection_Begin(&_py_cs, (PyObject*)(op))" msgstr "" +"{\n" +" PyCriticalSection _py_cs;\n" +" PyCriticalSection_Begin(&_py_cs, (PyObject*)(op))" #: ../Doc/c-api/init.rst:2264 ../Doc/c-api/init.rst:2293 msgid "In the default build, this macro expands to ``{``." -msgstr "" +msgstr "En la compilación predeterminada, esta macro se expande a ``{``." #: ../Doc/c-api/init.rst:2270 msgid "Ends the critical section and releases the per-object lock." -msgstr "" +msgstr "Finaliza la sección crítica y libera el bloqueo por objeto." #: ../Doc/c-api/init.rst:2274 msgid "" " PyCriticalSection_End(&_py_cs);\n" "}" msgstr "" +" PyCriticalSection_End(&_py_cs);\n" +"}" #: ../Doc/c-api/init.rst:2277 ../Doc/c-api/init.rst:2306 msgid "In the default build, this macro expands to ``}``." -msgstr "" +msgstr "En la compilación predeterminada, esta macro se expande a ``}``." #: ../Doc/c-api/init.rst:2283 msgid "" @@ -3652,6 +3840,9 @@ msgid "" "critical section. The locks are acquired in a consistent order (lowest " "address first) to avoid lock ordering deadlocks." msgstr "" +"Adquiere los bloqueos por objeto para los objetos *a* y *b* y comienza una " +"sección crítica. Los bloqueos se adquieren en un orden coherente (la " +"dirección más baja primero) para evitar bloqueos en el orden de bloqueo." #: ../Doc/c-api/init.rst:2289 msgid "" @@ -3659,176 +3850,177 @@ msgid "" " PyCriticalSection2 _py_cs2;\n" " PyCriticalSection_Begin2(&_py_cs2, (PyObject*)(a), (PyObject*)(b))" msgstr "" +"{\n" +" PyCriticalSection2 _py_cs2;\n" +" PyCriticalSection_Begin2(&_py_cs2, (PyObject*)(a), (PyObject*)(b))" #: ../Doc/c-api/init.rst:2299 msgid "Ends the critical section and releases the per-object locks." -msgstr "" +msgstr "Finaliza la sección crítica y libera los bloqueos por objeto." #: ../Doc/c-api/init.rst:2303 msgid "" " PyCriticalSection_End2(&_py_cs2);\n" "}" msgstr "" +" PyCriticalSection_End2(&_py_cs2);\n" +"}" #: ../Doc/c-api/init.rst:335 msgid "PyEval_InitThreads()" -msgstr "" +msgstr "PyEval_InitThreads()" #: ../Doc/c-api/init.rst:335 msgid "modules (in module sys)" -msgstr "" +msgstr "módulos (en el módulo sys)" #: ../Doc/c-api/init.rst:335 ../Doc/c-api/init.rst:576 msgid "path (in module sys)" -msgstr "" +msgstr "path (en el módulo sys)" #: ../Doc/c-api/init.rst:335 ../Doc/c-api/init.rst:576 #: ../Doc/c-api/init.rst:1011 ../Doc/c-api/init.rst:1510 #: ../Doc/c-api/init.rst:1605 msgid "module" -msgstr "" +msgstr "modulo" #: ../Doc/c-api/init.rst:335 ../Doc/c-api/init.rst:1510 #: ../Doc/c-api/init.rst:1605 msgid "builtins" -msgstr "" +msgstr "elementos incorporados" #: ../Doc/c-api/init.rst:335 ../Doc/c-api/init.rst:1510 #: ../Doc/c-api/init.rst:1605 msgid "__main__" -msgstr "" +msgstr "__main__" #: ../Doc/c-api/init.rst:335 ../Doc/c-api/init.rst:1510 #: ../Doc/c-api/init.rst:1605 msgid "sys" -msgstr "" +msgstr "sys" #: ../Doc/c-api/init.rst:335 ../Doc/c-api/init.rst:576 msgid "search" -msgstr "" +msgstr "buscar" #: ../Doc/c-api/init.rst:335 ../Doc/c-api/init.rst:576 msgid "path" -msgstr "" +msgstr "path" #: ../Doc/c-api/init.rst:335 ../Doc/c-api/init.rst:1570 #: ../Doc/c-api/init.rst:1623 msgid "Py_FinalizeEx (C function)" -msgstr "" +msgstr "Py_FinalizeEx (C function)" #: ../Doc/c-api/init.rst:445 -#, fuzzy msgid "Py_Initialize()" -msgstr ":c:func:`Py_IsInitialized`" +msgstr "Py_Initialize()" #: ../Doc/c-api/init.rst:445 ../Doc/c-api/init.rst:674 msgid "main()" -msgstr "" +msgstr "main()" #: ../Doc/c-api/init.rst:445 msgid "Py_GetPath()" -msgstr "" +msgstr "Py_GetPath()" #: ../Doc/c-api/init.rst:555 msgid "executable (in module sys)" -msgstr "" +msgstr "ejecutable (en el módulo sys)" #: ../Doc/c-api/init.rst:609 ../Doc/c-api/init.rst:651 #: ../Doc/c-api/init.rst:665 msgid "version (in module sys)" -msgstr "" +msgstr "version (in module sys)" #: ../Doc/c-api/init.rst:621 msgid "platform (in module sys)" -msgstr "" +msgstr "platform (en el módulo sys)" #: ../Doc/c-api/init.rst:638 msgid "copyright (in module sys)" -msgstr "" +msgstr "derechos de autor (en el módulo sys)" #: ../Doc/c-api/init.rst:674 msgid "Py_FatalError()" -msgstr "" +msgstr "Py_FatalError()" #: ../Doc/c-api/init.rst:674 msgid "argv (in module sys)" -msgstr "" +msgstr "argv (en el módulo sys)" #: ../Doc/c-api/init.rst:794 -#, fuzzy msgid "global interpreter lock" -msgstr "Estado del hilo y el bloqueo global del intérprete" +msgstr "bloqueo global del intérprete" #: ../Doc/c-api/init.rst:794 -#, fuzzy msgid "interpreter lock" -msgstr "Soporte de subinterprete" +msgstr "bloqueo de intérprete" #: ../Doc/c-api/init.rst:794 msgid "lock, interpreter" -msgstr "" +msgstr "bloqueo, interprete" #: ../Doc/c-api/init.rst:807 msgid "setswitchinterval (in module sys)" -msgstr "" +msgstr "setswitchinterval (in module sys)" #: ../Doc/c-api/init.rst:816 msgid "PyThreadState (C type)" -msgstr "" +msgstr "PyThreadState (C type)" #: ../Doc/c-api/init.rst:842 msgid "Py_BEGIN_ALLOW_THREADS (C macro)" -msgstr "" +msgstr "Py_BEGIN_ALLOW_THREADS (C macro)" #: ../Doc/c-api/init.rst:842 msgid "Py_END_ALLOW_THREADS (C macro)" -msgstr "" +msgstr "Py_END_ALLOW_THREADS (C macro)" #: ../Doc/c-api/init.rst:858 msgid "PyEval_RestoreThread (C function)" -msgstr "" +msgstr "PyEval_RestoreThread (C function)" #: ../Doc/c-api/init.rst:858 msgid "PyEval_SaveThread (C function)" -msgstr "" +msgstr "PyEval_SaveThread (C function)" #: ../Doc/c-api/init.rst:989 msgid "PyEval_AcquireThread()" -msgstr "" +msgstr "PyEval_AcquireThread()" #: ../Doc/c-api/init.rst:989 msgid "PyEval_ReleaseThread()" -msgstr "" +msgstr "PyEval_ReleaseThread()" #: ../Doc/c-api/init.rst:989 msgid "PyEval_SaveThread()" -msgstr "" +msgstr "PyEval_SaveThread()" #: ../Doc/c-api/init.rst:989 msgid "PyEval_RestoreThread()" -msgstr "" +msgstr "PyEval_RestoreThread()" #: ../Doc/c-api/init.rst:1011 msgid "_thread" -msgstr "" +msgstr "_thread" #: ../Doc/c-api/init.rst:1510 ../Doc/c-api/init.rst:1605 msgid "stdout (in module sys)" -msgstr "" +msgstr "stdout (in module sys)" #: ../Doc/c-api/init.rst:1510 ../Doc/c-api/init.rst:1605 msgid "stderr (in module sys)" -msgstr "" +msgstr "stderr (in module sys)" #: ../Doc/c-api/init.rst:1510 ../Doc/c-api/init.rst:1605 msgid "stdin (in module sys)" -msgstr "" +msgstr "stdin (in module sys)" #: ../Doc/c-api/init.rst:1570 -#, fuzzy msgid "Py_Initialize (C function)" -msgstr ":c:func:`Py_IsInitialized`" +msgstr "Py_Initialize (C function)" #: ../Doc/c-api/init.rst:1600 msgid "close (in module os)" -msgstr "" +msgstr "cerrar (en el módulo os)" diff --git a/dictionaries/c-api_init.txt b/dictionaries/c-api_init.txt index 512f5c6fbe..86d469745a 100644 --- a/dictionaries/c-api_init.txt +++ b/dictionaries/c-api_init.txt @@ -1,3 +1,6 @@ -pthreads -deadlock Reanudelos +deadlock +monofásico +monofásicos +multifásico +pthreads From c9f98af20e4af6c844ed04217e43bca30dd4e1cb Mon Sep 17 00:00:00 2001 From: Joseph Salgado <49181840+xooseph@users.noreply.github.com> Date: Tue, 14 Oct 2025 17:37:55 -0600 Subject: [PATCH 69/78] Translate `c-api/long.po` (#3424) Closes #3239 --------- Co-authored-by: rtobar --- c-api/long.po | 294 ++++++++++++++++++++++++++++++++++---------------- 1 file changed, 204 insertions(+), 90 deletions(-) diff --git a/c-api/long.po b/c-api/long.po index 4550eb3602..f7a23ef9c6 100644 --- a/c-api/long.po +++ b/c-api/long.po @@ -11,15 +11,16 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: 2021-08-02 01:24+0200\n" +"PO-Revision-Date: 2025-10-14 01:44-0600\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" +"Language: es\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.16.0\n" +"X-Generator: Poedit 3.7\n" #: ../Doc/c-api/long.rst:6 msgid "Integer Objects" @@ -79,23 +80,21 @@ 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 " "you actually just get back a reference to the existing object." msgstr "" "La implementación actual mantiene un arreglo de objetos enteros para todos " -"los enteros entre ``-5`` y ``256``, cuando crea un *int* en ese rango, en " +"los enteros entre ``-5`` y ``256``. Cuando crea un *int* en ese rango, en " "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:expr:`unsigned long`, " "or ``NULL`` on failure." msgstr "" -"Retorna un objeto :c:type:`PyLongObject` nuevo desde un C :c:type:`unsigned " +"Retorna un objeto :c:type:`PyLongObject` nuevo desde un C :c:expr:`unsigned " "long`, o ``NULL`` en caso de error." #: ../Doc/c-api/long.rst:56 @@ -115,21 +114,19 @@ 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:expr:`long long`, or " "``NULL`` on failure." msgstr "" -"Retorna un objeto :c:type:`PyLongObject` nuevo desde un C :c:type:`long " +"Retorna un objeto :c:type:`PyLongObject` nuevo desde un C :c:expr:`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:expr:`unsigned long " "long`, or ``NULL`` on failure." msgstr "" -"Retorna un objeto :c:type:`PyLongObject` nuevo desde un C :c:type:`unsigned " +"Retorna un objeto :c:type:`PyLongObject` nuevo desde un C :c:expr:`unsigned " "long long`, o ``NULL`` en caso de error." #: ../Doc/c-api/long.rst:80 @@ -141,7 +138,6 @@ msgstr "" "``NULL`` en caso de error." #: ../Doc/c-api/long.rst:86 -#, fuzzy msgid "" "Return a new :c:type:`PyLongObject` based on the string value in *str*, " "which is interpreted according to the radix in *base*, or ``NULL`` on " @@ -156,15 +152,17 @@ msgid "" "whitespace, :exc:`ValueError` will be raised." msgstr "" "Retorna un nuevo :c:type:`PyLongObject` basado en el valor de cadena de " -"caracteres en *str*, que se interpreta de acuerdo con la raíz en *base*. Si " -"*pend* no es ``NULL``, *\\* pend* apuntará al primer carácter en *str* que " -"sigue a la representación del número. Si *base* es ``0``, *str* se " -"interpreta utilizando la definición :ref:`integers`; en este caso, los ceros " -"a la izquierda en un número decimal distinto de cero lanzan un :exc:" -"`ValueError`. Si *base* no es ``0``, debe estar entre ``2`` y ``36``, " -"inclusive. Se ignoran los espacios iniciales y los guiones bajos " -"individuales después de un especificador base y entre dígitos. Si no hay " -"dígitos, se lanzará :exc:`ValueError`." +"caracteres en *str*, que se interpreta de acuerdo con la raíz en *base*, o " +"``NULL`` en caso de error. Si *pend* no es ``NULL``, *\\*pend* apuntará al " +"final de *str* en caso de éxito o al primer carácter que no se pudo procesar " +"en caso de error. Si *base* es ``0``, *str* se interpreta utilizando la " +"definición :ref:`integers`; en este caso, los ceros a la izquierda en un " +"número decimal distinto de cero lanzan un :exc:`ValueError`. Si *base* no es " +"``0``, debe estar entre ``2`` y ``36``, inclusive. Se ignoran los espacios " +"iniciales y finales y los guiones bajos individuales después de un " +"especificador base y entre dígitos. Si no hay dígitos o *str* no termina en " +"NULL después de los dígitos y los espacios finales, se lanzará :exc:" +"`ValueError`." #: ../Doc/c-api/long.rst:97 msgid "" @@ -172,6 +170,9 @@ msgid "" "c:type:`PyLongObject` to/from an array of bytes in base ``256``. You can " "call those from C using :c:func:`PyObject_CallMethod`." msgstr "" +"Los métodos de Python :meth:`int.to_bytes` y :meth:`int.from_bytes` para " +"convertir un :c:type:`PyLongObject` a/desde un arreglo de bytes en base " +"``256``. Se pueden llamar desde C al utilizar :c:func:`PyObject_CallMethod`." #: ../Doc/c-api/long.rst:104 msgid "" @@ -194,6 +195,8 @@ msgid "" "Create a Python integer from the value contained in the first *n_bytes* of " "*buffer*, interpreted as a two's-complement signed number." msgstr "" +"Crea un entero de Python desde el valor contenido en los primeros *n_bytes* " +"de *buffer*, interpretado como un número con signo del complemento a dos." #: ../Doc/c-api/long.rst:121 msgid "" @@ -203,12 +206,19 @@ msgid "" "``Py_ASNATIVEBYTES_UNSIGNED_BUFFER`` will produce the same result as " "calling :c:func:`PyLong_FromUnsignedNativeBytes`. Other flags are ignored." msgstr "" +"*flags* son los mismos que para :c:func:`PyLong_AsNativeBytes`. Al pasar " +"``-1`` seleccionará el endian nativo con el que CPython fue compilado y " +"asumirá que el bit más significativo es un bit de signo. Al pasar " +"``Py_ASNATIVEBYTES_UNSIGNED_BUFFER`` producirá el mismo resultado que llamar " +"a :c:func:`PyLong_FromUnsignedNativeBytes`. Otros indicadores se ignoran." #: ../Doc/c-api/long.rst:132 msgid "" "Create a Python integer from the value contained in the first *n_bytes* of " "*buffer*, interpreted as an unsigned number." msgstr "" +"Crea un entero de Python desde el valor contenido en los primeros *n_bytes* " +"de *buffer*, interpretado como un número sin signo." #: ../Doc/c-api/long.rst:135 msgid "" @@ -216,26 +226,29 @@ msgid "" "select the native endian that CPython was compiled with and assume that the " "most-significant bit is not a sign bit. Flags other than endian are ignored." msgstr "" +"*flags* son los mismos que para :c:func:`PyLong_AsNativeBytes`. Al pasar " +"``-1`` seleccionará el endian nativo con el que CPython fue compilado y " +"asumirá que el bit más significativo no es un bit con signo. Los indicadores " +"que no sean endian se ignoran." #: ../Doc/c-api/long.rst:148 ../Doc/c-api/long.rst:184 -#, fuzzy msgid "" "Return a C :c:expr:`long` representation of *obj*. If *obj* is not an " "instance of :c:type:`PyLongObject`, first call its :meth:`~object.__index__` " "method (if present) to convert it to a :c:type:`PyLongObject`." msgstr "" -"Retorna una representación C :c:type:`long` de *obj*. Si *obj* no es una " +"Retorna una representación C :c:expr:`long` de *obj*. Si *obj* no es una " "instancia de :c:type:`PyLongObject`, primero llama a su método :meth:" -"`__index__` (si está presente) para convertirlo en un :c:type:`PyLongObject`." +"`~object.__index__` (si está presente) para convertirlo en un :c:type:" +"`PyLongObject`." #: ../Doc/c-api/long.rst:152 -#, fuzzy msgid "" "Raise :exc:`OverflowError` if the value of *obj* is out of range for a :c:" "expr:`long`." msgstr "" "Lanza :exc:`OverflowError` si el valor de *obj* está fuera de rango para un :" -"c:type:`long`." +"c:expr:`long`." #: ../Doc/c-api/long.rst:155 ../Doc/c-api/long.rst:193 #: ../Doc/c-api/long.rst:214 ../Doc/c-api/long.rst:234 @@ -248,16 +261,14 @@ msgstr "" #: ../Doc/c-api/long.rst:157 ../Doc/c-api/long.rst:195 #: ../Doc/c-api/long.rst:216 ../Doc/c-api/long.rst:238 #: ../Doc/c-api/long.rst:322 ../Doc/c-api/long.rst:342 -#, fuzzy msgid "Use :meth:`~object.__index__` if available." -msgstr "Use :meth:`__index__` si está disponible." +msgstr "Use :meth:`~object.__index__` si está disponible." #: ../Doc/c-api/long.rst:160 ../Doc/c-api/long.rst:198 #: ../Doc/c-api/long.rst:219 ../Doc/c-api/long.rst:241 #: ../Doc/c-api/long.rst:325 ../Doc/c-api/long.rst:345 -#, fuzzy msgid "This function will no longer use :meth:`~object.__int__`." -msgstr "Esta función no usará más :meth:`__int__`." +msgstr "Esta función no usará más :meth:`~object.__int__`." #: ../Doc/c-api/long.rst:167 msgid "" @@ -265,60 +276,62 @@ msgid "" "``PyLong_AsLong``. In particular, it can fail with :exc:`OverflowError` or " "another exception." msgstr "" +"Un alias :term:`soft deprecated`. Equivalente exacto al ``PyLong_AsLong`` " +"preferido. En particular, puede fallar con :exc:`OverflowError` u otra " +"excepción." #: ../Doc/c-api/long.rst:171 msgid "The function is soft deprecated." -msgstr "" +msgstr "La función está deprecada de forma suave." #: ../Doc/c-api/long.rst:176 msgid "" "Similar to :c:func:`PyLong_AsLong`, but store the result in a C :c:expr:" "`int` instead of a C :c:expr:`long`." msgstr "" +"Similar a :c:func:`PyLong_AsLong`, pero almacena el resultado en un C :c:" +"expr:`int` en lugar de un C :c:expr:`long`." #: ../Doc/c-api/long.rst:188 -#, fuzzy msgid "" "If the value of *obj* is greater than :c:macro:`LONG_MAX` or less than :c:" "macro:`LONG_MIN`, set *\\*overflow* to ``1`` or ``-1``, respectively, and " "return ``-1``; otherwise, set *\\*overflow* to ``0``. If any other " "exception occurs set *\\*overflow* to ``0`` and return ``-1`` as usual." msgstr "" -"Si el valor de *obj* es mayor que :const:`LONG_MAX` o menor que :const:" -"`LONG_MIN`, establece *\\*overflow * en ``1`` o ``-1``, respectivamente, y " +"Si el valor de *obj* es mayor que :c:macro:`LONG_MAX` o menor que :c:macro:" +"`LONG_MIN`, establece *\\*overflow* en ``1`` o ``-1``, respectivamente, y " "retorna ``-1``; de lo contrario, establece *\\*overflow* en ``0``. Si se " "produce alguna otra excepción, configura *\\*overflow* en ``0`` y retorna " "``-1`` como de costumbre." #: ../Doc/c-api/long.rst:207 ../Doc/c-api/long.rst:225 -#, fuzzy msgid "" "Return a C :c:expr:`long long` representation of *obj*. If *obj* is not an " "instance of :c:type:`PyLongObject`, first call its :meth:`~object.__index__` " "method (if present) to convert it to a :c:type:`PyLongObject`." msgstr "" -"Retorna una representación C :c:type:`long long` de *obj*. Si *obj* no es " +"Retorna una representación C :c:expr:`long long` de *obj*. Si *obj* no es " "una instancia de :c:type:`PyLongObject`, primero llame a su método :meth:" -"`__index__` (si está presente) para convertirlo en un :c:type:`PyLongObject`." +"`~object.__index__` (si está presente) para convertirlo en un :c:type:" +"`PyLongObject`." #: ../Doc/c-api/long.rst:211 -#, fuzzy msgid "" "Raise :exc:`OverflowError` if the value of *obj* is out of range for a :c:" "expr:`long long`." msgstr "" "Lanza :exc:`OverflowError` si el valor de *obj* está fuera de rango para un :" -"c:type:`long long`." +"c:expr:`long long`." #: ../Doc/c-api/long.rst:229 -#, fuzzy msgid "" "If the value of *obj* is greater than :c:macro:`LLONG_MAX` or less than :c:" "macro:`LLONG_MIN`, set *\\*overflow* to ``1`` or ``-1``, respectively, and " "return ``-1``; otherwise, set *\\*overflow* to ``0``. If any other " "exception occurs set *\\*overflow* to ``0`` and return ``-1`` as usual." msgstr "" -"Si el valor de *obj* es mayor que :const:`LLONG_MAX` o menor que :const:" +"Si el valor de *obj* es mayor que :c:macro:`LLONG_MAX` o menor que :c:macro:" "`LLONG_MIN`, establece *\\*overflow* en ``1`` o ``-1``, respectivamente, y " "retorna ``-1``; de lo contrario, establece *\\*overflow* en ``0``. Si se " "produce alguna otra excepción, configura *\\*overflow* en ``0`` y retorna " @@ -341,22 +354,20 @@ msgstr "" "un :c:type:`Py_ssize_t`." #: ../Doc/c-api/long.rst:266 -#, fuzzy msgid "" "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*. " +"Retorna una representación de C :c:expr:`unsigned long` de *pylong*. " "*pylong* debe ser una instancia de :c:type:`PyLongObject`." #: ../Doc/c-api/long.rst:269 -#, fuzzy msgid "" "Raise :exc:`OverflowError` if the value of *pylong* is out of range for a :c:" "expr:`unsigned long`." msgstr "" "Lanza :exc:`OverflowError` si el valor de *pylong* está fuera de rango para " -"un :c:type:`unsigned long`." +"un :c:expr:`unsigned long`." #: ../Doc/c-api/long.rst:272 msgid "" @@ -391,22 +402,20 @@ msgstr "" "desambiguar." #: ../Doc/c-api/long.rst:297 -#, fuzzy msgid "" "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*. " +"Retorna una representación de C :c:expr:`unsigned long long` de *pylong*. " "*pylong* debe ser una instancia de :c:type:`PyLongObject`." #: ../Doc/c-api/long.rst:300 -#, fuzzy msgid "" "Raise :exc:`OverflowError` if the value of *pylong* is out of range for an :" "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`." +"un :c:expr:`unsigned long long`." #: ../Doc/c-api/long.rst:303 msgid "" @@ -424,23 +433,22 @@ msgstr "" "`TypeError`." #: ../Doc/c-api/long.rst:312 -#, fuzzy msgid "" "Return a C :c:expr:`unsigned long` representation of *obj*. If *obj* is not " "an instance of :c:type:`PyLongObject`, first call its :meth:`~object." "__index__` method (if present) to convert it to a :c:type:`PyLongObject`." msgstr "" -"Retorna una representación C :c:type:`unsigned long` de *obj*. Si *obj* no " +"Retorna una representación C :c:expr:`unsigned long` de *obj*. Si *obj* no " "es una instancia de :c:type:`PyLongObject`, primero llame a su método :meth:" -"`__index__` (si está presente) para convertirlo en un :c:type:`PyLongObject`." +"`~object.__index__` (si está presente) para convertirlo en un :c:type:" +"`PyLongObject`." #: ../Doc/c-api/long.rst:316 -#, fuzzy msgid "" "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`, " +"Si el valor de *obj* está fuera del rango para :c:expr:`unsigned long`, " "retorna la reducción de ese valor módulo ``ULONG_MAX + 1``." #: ../Doc/c-api/long.rst:319 @@ -452,24 +460,22 @@ msgstr "" "para desambiguar." #: ../Doc/c-api/long.rst:331 -#, fuzzy msgid "" "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:`~object." "__index__` method (if present) to convert it to a :c:type:`PyLongObject`." msgstr "" -"Retorna una representación C :c:type:`unsigned long long` de *obj*. Si *obj* " +"Retorna una representación C :c:expr:`unsigned long long` de *obj*. Si *obj* " "no es una instancia de :c:type:`PyLongObject`, primero llame a su método :" -"meth:`__index__` (si está presente) para convertirlo en un :c:type:" +"meth:`~object.__index__` (si está presente) para convertirlo en un :c:type:" "`PyLongObject`." #: ../Doc/c-api/long.rst:336 -#, fuzzy msgid "" "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`, " +"Si el valor de *obj* está fuera del rango para :c:expr:`unsigned long long`, " "retorna la reducción de ese valor módulo ``ULLONG_MAX + 1``." #: ../Doc/c-api/long.rst:339 @@ -481,22 +487,20 @@ msgstr "" "para desambiguar." #: ../Doc/c-api/long.rst:351 -#, fuzzy msgid "" "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 " +"Retorna una representación de C :c:expr:`double` de *pylong*. *pylong* debe " "ser una instancia de :c:type:`PyLongObject`." #: ../Doc/c-api/long.rst:354 -#, fuzzy msgid "" "Raise :exc:`OverflowError` if the value of *pylong* is out of range for a :c:" "expr:`double`." msgstr "" "Lanza :exc:`OverflowError` si el valor de *pylong* está fuera de rango para " -"un :c:type:`double`." +"un :c:expr:`double`." #: ../Doc/c-api/long.rst:357 msgid "" @@ -506,16 +510,15 @@ msgstr "" "desambiguar." #: ../Doc/c-api/long.rst:362 -#, fuzzy msgid "" "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: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 " +"Convierte un entero Python *pylong* en un puntero C :c:expr:`void`. Si " "*pylong* no se puede convertir, se lanzará un :exc:`OverflowError`. Esto " -"solo se garantiza para producir un puntero utilizable :c:type:`void` para " +"solo se garantiza para producir un puntero utilizable :c:expr:`void` para " "valores creados con :c:func:`PyLong_FromVoidPtr`." #: ../Doc/c-api/long.rst:367 @@ -531,6 +534,10 @@ msgid "" "*n_bytes*. The *flags* can be set to ``-1`` to behave similarly to a C cast, " "or to values documented below to control the behavior." msgstr "" +"Copia el valor entero de Python *pylong* a un *buffer* nativo de tamaño " +"*n_bytes*. Los *flags* pueden establecerse en ``-1`` para un comportamiento " +"similar a una conversión de C, o en los valores documentados a continuación " +"para controlar el comportamiento." #: ../Doc/c-api/long.rst:376 msgid "" @@ -538,6 +545,10 @@ msgid "" "*pylong* cannot be interpreted as an integer, or if *pylong* was negative " "and the ``Py_ASNATIVEBYTES_REJECT_NEGATIVE`` flag was set." msgstr "" +"Retorna ``-1`` con una excepción lanzada en caso de error. Esto puede " +"ocurrir si *pylong* no se puede interpretar como un entero, o si *pylong* " +"era negativo y se configuró el indicador " +"``Py_ASNATIVEBYTES_REJECT_NEGATIVE``." #: ../Doc/c-api/long.rst:380 msgid "" @@ -545,6 +556,10 @@ msgid "" "is equal to or less than *n_bytes*, the entire value was copied. All " "*n_bytes* of the buffer are written: large buffers are padded with zeroes." msgstr "" +"De lo contrario, retorna el número de bytes necesarios para almacenar el " +"valor. Si es igual o menor que *n_bytes*, se copió el valor completo. Se " +"escriben todos los *n_bytes* del búfer: los búferes grandes se rellenan con " +"ceros." #: ../Doc/c-api/long.rst:385 msgid "" @@ -553,24 +568,30 @@ msgid "" "and the higher bits are ignored. This matches the typical behavior of a C-" "style downcast." msgstr "" +"Si el valor que se retorna es mayor que *n_bytes*, se trunca el valor: se " +"escriben todos los bits más bajos que quepan y se ignoran los bits más " +"altos. Esto coincide con el comportamiento típico de una conversión " +"descendente de estilo C." #: ../Doc/c-api/long.rst:392 msgid "" "Overflow is not considered an error. If the returned value is larger than " "*n_bytes*, most significant bits were discarded." msgstr "" +"El desbordamiento no se considera un error. Si el valor que se retorna es " +"mayor que *n_bytes*, se descartan los bits más significativos." #: ../Doc/c-api/long.rst:395 msgid "``0`` will never be returned." -msgstr "" +msgstr "``0`` nunca será retornado." #: ../Doc/c-api/long.rst:397 msgid "Values are always copied as two's-complement." -msgstr "" +msgstr "Los valores siempre se copian como complemento a dos." #: ../Doc/c-api/long.rst:399 msgid "Usage example::" -msgstr "" +msgstr "Ejemplo de uso::" #: ../Doc/c-api/long.rst:401 msgid "" @@ -588,6 +609,19 @@ msgid "" " // lowest bits of pylong.\n" "}" msgstr "" +"int32_t value;\n" +"Py_ssize_t bytes = PyLong_AsNativeBytes(pylong, &value, sizeof(value), -1);\n" +"if (bytes < 0) {\n" +" // Error. Se estableció una excepción de Python con el motivo.\n" +" return NULL;\n" +"}\n" +"else if (bytes <= (Py_ssize_t)sizeof(value)) {\n" +" // ¡Éxito!\n" +"}\n" +"else {\n" +" // Se produjo un desbordamiento, pero 'value' contiene\n" +" // los bits más bajos truncados de pylong.\n" +"}" #: ../Doc/c-api/long.rst:415 msgid "" @@ -595,18 +629,27 @@ msgid "" "large enough to hold the value. This may be larger than technically " "necessary, but not unreasonably so. If *n_bytes=0*, *buffer* may be ``NULL``." msgstr "" +"Al pasar cero a *n_bytes* retornará el tamaño de un búfer lo suficientemente " +"grande como para contener el valor. Este tamaño puede ser mayor de lo " +"técnicamente necesario, pero no excesivamente grande. Si *n_bytes=0*, " +"*buffer* puede ser ``NULL``." #: ../Doc/c-api/long.rst:422 msgid "" "Passing *n_bytes=0* to this function is not an accurate way to determine the " "bit length of the value." msgstr "" +"Al pasar *n_bytes=0* a esta función no es una forma precisa de determinar la " +"longitud en bits del valor." #: ../Doc/c-api/long.rst:425 msgid "" "To get at the entire Python value of an unknown size, the function can be " "called twice: first to determine the buffer size, then to fill it::" msgstr "" +"Para obtener el valor completo de Python de un tamaño desconocido, la " +"función se puede llamar dos veces: primero para determinar el tamaño del " +"búfer y luego para llenarlo::" #: ../Doc/c-api/long.rst:428 msgid "" @@ -638,6 +681,33 @@ msgid "" "// ... use bignum ...\n" "free(bignum);" msgstr "" +"// Pide cuánto espacio necesitamos.\n" +"Py_ssize_t expected = PyLong_AsNativeBytes(pylong, NULL, 0, -1);\n" +"if (expected < 0) {\n" +" // Error. Se estableció una excepción de Python con el motivo.\n" +" return NULL;\n" +"}\n" +"assert(expected != 0); // Imposible según la definición de la API.\n" +"uint8_t *bignum = malloc(expected);\n" +"if (!bignum) {\n" +" PyErr_SetString(PyExc_MemoryError, \"bignum malloc failed.\");\n" +" return NULL;\n" +"}\n" +"// Obtiene el valor completo de forma segura.\n" +"Py_ssize_t bytes = PyLong_AsNativeBytes(pylong, bignum, expected, -1);\n" +"if (bytes < 0) { // Se configuró una excepción.\n" +" free(bignum);\n" +" return NULL;\n" +"}\n" +"else if (bytes > expected) { // Esto no debería ser posible.\n" +" PyErr_SetString(PyExc_RuntimeError,\n" +" \"Unexpected bignum truncation after a size check.\");\n" +" free(bignum);\n" +" return NULL;\n" +"}\n" +"// El éxito esperado dada la comprobación previa.\n" +"// ... use bignum ...\n" +"free(bignum);" #: ../Doc/c-api/long.rst:456 msgid "" @@ -645,54 +715,62 @@ msgid "" "that behave most like a C cast, or a combintation of the other flags in the " "table below. Note that ``-1`` cannot be combined with other flags." msgstr "" +"*flags* es ``-1`` (``Py_ASNATIVEBYTES_DEFAULTS``) para seleccionar valores " +"predeterminados que se comportan de forma similar a una conversión de C, o " +"una combinación de los demás indicadores de la tabla a continuación. Tenga " +"en cuenta que ``-1`` no se puede combinar con otros indicadores." #: ../Doc/c-api/long.rst:461 msgid "" "Currently, ``-1`` corresponds to ``Py_ASNATIVEBYTES_NATIVE_ENDIAN | " "Py_ASNATIVEBYTES_UNSIGNED_BUFFER``." msgstr "" +"Actualmente, ``-1`` corresponde a ``Py_ASNATIVEBYTES_NATIVE_ENDIAN | " +"Py_ASNATIVEBYTES_UNSIGNED_BUFFER``." #: ../Doc/c-api/long.rst:467 msgid "Flag" -msgstr "" +msgstr "Indicador" #: ../Doc/c-api/long.rst:467 msgid "Value" -msgstr "" +msgstr "Valor" #: ../Doc/c-api/long.rst:469 msgid "``-1``" -msgstr "" +msgstr "``-1``" #: ../Doc/c-api/long.rst:470 msgid "``0``" -msgstr "" +msgstr "``0``" #: ../Doc/c-api/long.rst:471 msgid "``1``" -msgstr "" +msgstr "``1``" #: ../Doc/c-api/long.rst:472 msgid "``3``" -msgstr "" +msgstr "``3``" #: ../Doc/c-api/long.rst:473 msgid "``4``" -msgstr "" +msgstr "``4``" #: ../Doc/c-api/long.rst:474 msgid "``8``" -msgstr "" +msgstr "``8``" #: ../Doc/c-api/long.rst:475 msgid "``16``" -msgstr "" +msgstr "``16``" #: ../Doc/c-api/long.rst:478 msgid "" "Specifying ``Py_ASNATIVEBYTES_NATIVE_ENDIAN`` will override any other endian " "flags. Passing ``2`` is reserved." msgstr "" +"Especificar ``Py_ASNATIVEBYTES_NATIVE_ENDIAN`` redefinirá cualquier otro " +"indicador endian. Pasar ``2`` está reservado." #: ../Doc/c-api/long.rst:481 msgid "" @@ -700,6 +778,9 @@ msgid "" "example, when converting 128 with *n_bytes=1*, the function will return 2 " "(or more) in order to store a zero sign bit." msgstr "" +"Por defecto, se solicitará búfer suficiente para incluir un bit de signo. " +"Por ejemplo, al convertir 128 con *n_bytes=1*, la función retornará 2 (o " +"más) para almacenar un bit de signo cero." #: ../Doc/c-api/long.rst:485 msgid "" @@ -710,6 +791,12 @@ msgid "" "handling of negative values: for those, space for a sign bit is always " "requested." msgstr "" +"Si se especifica ``Py_ASNATIVEBYTES_UNSIGNED_BUFFER``, se omitirá el bit de " +"signo cero en los cálculos de tamaño. Esto permite, por ejemplo, que quepa " +"128 en un búfer de un solo byte. Si el búfer de destino se trata " +"posteriormente como con signo, un valor de entrada positivo puede volverse " +"negativo. Tenga en cuenta que este indicador no afecta el manejo de valores " +"negativos: para ellos, siempre se solicita espacio para un bit de signo." #: ../Doc/c-api/long.rst:492 msgid "" @@ -718,6 +805,10 @@ msgid "" "copied provided there is enough space for at least one sign bit, regardless " "of whether ``Py_ASNATIVEBYTES_UNSIGNED_BUFFER`` was specified." msgstr "" +"Especificar ``Py_ASNATIVEBYTES_REJECT_NEGATIVE``, se establece una excepción " +"si *pylong* es negativo. Sin este indicador, se copiarán los valores " +"negativos siempre que haya suficiente espacio para al menos un bit de signo, " +"independientemente de si se especificó ``Py_ASNATIVEBYTES_UNSIGNED_BUFFER``." #: ../Doc/c-api/long.rst:497 msgid "" @@ -728,6 +819,12 @@ msgid "" "``-1``, this option is not set, and non-integer values will raise :exc:" "`TypeError`." msgstr "" +"Si se especifica ``Py_ASNATIVEBYTES_ALLOW_INDEX`` y se pasa un valor " +"distinto de un entero, se llamará primero a su método :meth:`~object." +"__index__`. Esto puede resultar la ejecución de código Python y la ejecución " +"de otros subprocesos, lo que podría causar cambios en otros objetos o " +"valores en uso. Cuando *flags* es ``-1``, esta opción no se establece y los " +"valores distintos de un entero lanzarán :exc:`TypeError`." #: ../Doc/c-api/long.rst:506 msgid "" @@ -736,6 +833,11 @@ msgid "" "without overflow. For example, both ``255`` and ``-1`` fit a single-byte " "buffer and set all its bits. This matches typical C cast behavior." msgstr "" +"Con los *flags* predeterminados (``-1`` o *UNSIGNED_BUFFER* sin " +"*REJECT_NEGATIVE*), varios enteros de Python pueden asignarse a un único " +"valor sin desbordamiento. Por ejemplo, tanto ``255`` como ``-1`` se ajustan " +"a un búfer de un solo byte y configuran todos sus bits. Esto coincide con el " +"comportamiento típico de conversión de C." #: ../Doc/c-api/long.rst:517 msgid "" @@ -743,14 +845,17 @@ msgid "" "about Python's internal representation of integers. See :data:`sys.int_info` " "for description of individual fields." msgstr "" +"En caso de éxito, retorna una :term:`named tuple` de solo lectura, que " +"contiene información sobre la representación interna de enteros en Python. " +"Consulte :data:`sys.int_info` para obtener una descripción de cada campo." #: ../Doc/c-api/long.rst:521 msgid "On failure, return ``NULL`` with an exception set." -msgstr "" +msgstr "En caso de error, retorna ``NULL`` con una excepción configurada." #: ../Doc/c-api/long.rst:528 msgid "Return 1 if *op* is compact, 0 otherwise." -msgstr "" +msgstr "Retorna 1 si *op* es compacto, 0 en caso contrario." #: ../Doc/c-api/long.rst:530 msgid "" @@ -759,58 +864,67 @@ msgid "" "`PyUnstable_Long_CompactValue`; for others fall back to a :c:func:" "`PyLong_As* ` function or :c:func:`PyLong_AsNativeBytes`." msgstr "" +"Esta función permite que el código de rendimiento crítico implemente una " +"“ruta rápida” para enteros pequeños. Para valores compactos, utilice :c:func:" +"`PyUnstable_Long_CompactValue`; para otros, utilice una función :c:func:" +"`PyLong_As* ` o :c:func:`PyLong_AsNativeBytes`." #: ../Doc/c-api/long.rst:536 msgid "The speedup is expected to be negligible for most users." msgstr "" +"Se espera que la aceleración sea insignificante para la mayoría de los " +"usuarios." #: ../Doc/c-api/long.rst:538 msgid "" "Exactly what values are considered compact is an implementation detail and " "is subject to change." msgstr "" +"Exactamente qué valores se consideran compactos es un detalle de " +"implementación y está sujeto a cambios." #: ../Doc/c-api/long.rst:543 msgid "" "If *op* is compact, as determined by :c:func:`PyUnstable_Long_IsCompact`, " "return its value." msgstr "" +"Si *op* es compacto, se determina por :c:func:`PyUnstable_Long_IsCompact`, " +"retorna su valor." #: ../Doc/c-api/long.rst:546 msgid "Otherwise, the return value is undefined." -msgstr "" +msgstr "De lo contrario, el valor que retorna está indefinido." #: ../Doc/c-api/long.rst:8 msgid "object" -msgstr "" +msgstr "object" #: ../Doc/c-api/long.rst:8 msgid "long integer" -msgstr "" +msgstr "long integer" #: ../Doc/c-api/long.rst:8 -#, fuzzy msgid "integer" -msgstr "Objetos enteros" +msgstr "integer" #: ../Doc/c-api/long.rst:144 msgid "LONG_MAX (C macro)" -msgstr "" +msgstr "LONG_MAX (C macro)" #: ../Doc/c-api/long.rst:144 ../Doc/c-api/long.rst:204 #: ../Doc/c-api/long.rst:247 ../Doc/c-api/long.rst:262 #: ../Doc/c-api/long.rst:278 ../Doc/c-api/long.rst:294 msgid "OverflowError (built-in exception)" -msgstr "" +msgstr "OverflowError (built-in exception)" #: ../Doc/c-api/long.rst:247 msgid "PY_SSIZE_T_MAX (C macro)" -msgstr "" +msgstr "PY_SSIZE_T_MAX (C macro)" #: ../Doc/c-api/long.rst:262 msgid "ULONG_MAX (C macro)" -msgstr "" +msgstr "ULONG_MAX (C macro)" #: ../Doc/c-api/long.rst:278 msgid "SIZE_MAX (C macro)" -msgstr "" +msgstr "SIZE_MAX (C macro)" From b9de17deef9d8886c388266ba1b5db8304c63edd Mon Sep 17 00:00:00 2001 From: Joseph Salgado <49181840+xooseph@users.noreply.github.com> Date: Thu, 16 Oct 2025 23:45:13 -0600 Subject: [PATCH 70/78] Translate `c-api/set.po` (#3421) Closes #3245 --- c-api/set.po | 60 ++++++++++++++++++++++++++-------------------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/c-api/set.po b/c-api/set.po index 83ca70dcbc..6cf381cd4f 100644 --- a/c-api/set.po +++ b/c-api/set.po @@ -11,15 +11,16 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: 2022-11-10 21:17+0100\n" +"PO-Revision-Date: 2025-10-15 00:17-0600\n" "Last-Translator: Rodrigo Tobar \n" -"Language: es\n" "Language-Team: python-doc-es\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\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.16.0\n" +"X-Generator: Poedit 3.8\n" #: ../Doc/c-api/set.rst:6 msgid "Set Objects" @@ -167,9 +168,9 @@ msgid "" "`TypeError` if *iterable* is not actually iterable." msgstr "" "Retorna un nuevo :class:`frozenset` que contiene objetos retornados por " -"*iterable*. El *iterable* puede ser ``NULL`` para crear un nuevo conjunto " -"congelado vacío. Retorna el nuevo conjunto en caso de éxito o ``NULL`` en " -"caso de error. Lanza :exc:`TypeError` si *iterable* no es realmente iterable." +"*iterable*. El *iterable* puede ser ``NULL`` para crear un nuevo frozenset " +"vacío. Retorna el nuevo conjunto en caso de éxito o ``NULL`` en caso de " +"error. Lanza :exc:`TypeError` si *iterable* no es realmente iterable." #: ../Doc/c-api/set.rst:104 msgid "" @@ -180,22 +181,20 @@ msgstr "" "class:`set` o :class:`frozenset` o instancias de sus subtipos." #: ../Doc/c-api/set.rst:112 -#, fuzzy msgid "" "Return the length of a :class:`set` or :class:`frozenset` object. Equivalent " "to ``len(anyset)``. Raises a :exc:`SystemError` if *anyset* is not a :class:" "`set`, :class:`frozenset`, or an instance of a subtype." msgstr "" "Retorna la longitud de un objeto :class:`set` o :class:`frozenset`. " -"Equivalente a ``len(anyset)``. Lanza un :exc:`PyExc_SystemError` si *anyset* " -"no es :class:`set`, :class:`frozenset`, o una instancia de un subtipo." +"Equivalente a ``len(anyset)``. Lanza un :exc:`SystemError` si *anyset* no " +"es :class:`set`, :class:`frozenset`, o una instancia de un subtipo." #: ../Doc/c-api/set.rst:119 msgid "Macro form of :c:func:`PySet_Size` without error checking." msgstr "Forma macro de :c:func:`PySet_Size` sin comprobación de errores." #: ../Doc/c-api/set.rst:124 -#, fuzzy msgid "" "Return ``1`` if found, ``0`` if not found, and ``-1`` if an error is " "encountered. Unlike the Python :meth:`~object.__contains__` method, this " @@ -205,11 +204,11 @@ msgid "" "instance of a subtype." msgstr "" "Retorna ``1`` si se encuentra, ``0`` si no se encuentra y ``-1`` si se " -"encuentra un error. A diferencia del método Python :meth:`__contains__`, " -"esta función no convierte automáticamente conjuntos no compartibles en " -"congelados temporales. Lanza un :exc:`TypeError` si la *key* no se puede " -"compartir. Lanza :exc:`PyExc_SystemError` si *anyset* no es un :class:" -"`set`, :class:`frozenset`, o una instancia de un subtipo." +"encuentra un error. A diferencia del método Python :meth:`~object." +"__contains__`, esta función no convierte automáticamente conjuntos que no " +"son hashable en frozensets temporales. Lanza un :exc:`TypeError` si la *key* " +"no es hashable. Lanza :exc:`SystemError` si *anyset* no es un :class:`set`, :" +"class:`frozenset`, o una instancia de un subtipo." #: ../Doc/c-api/set.rst:133 msgid "" @@ -225,9 +224,9 @@ msgstr "" "de :class:`frozenset` (al igual que :c:func:`PyTuple_SetItem` puede usarse " "para rellenar los valores de nuevos frozensets antes de que sean expuestos a " "otro código). Retorna ``0`` en caso de éxito o ``-1`` en caso de fallo. " -"Lanza un error :exc:`TypeError` si la *key* no se puede intercambiar. Lanza " -"un :exc:`MemoryError` si no hay espacio para crecer. Lanza un :exc:" -"`SystemError` si *set* no es una instancia de :class:`set` o su subtipo." +"Lanza un error :exc:`TypeError` si la *key* no es hashable. Lanza un :exc:" +"`MemoryError` si no hay espacio para crecer. Lanza un :exc:`SystemError` si " +"*set* no es una instancia de :class:`set` o su subtipo." #: ../Doc/c-api/set.rst:142 msgid "" @@ -238,7 +237,6 @@ msgstr "" "sus subtipos, pero no para instancias de :class:`frozenset` o sus subtipos." #: ../Doc/c-api/set.rst:148 -#, fuzzy msgid "" "Return ``1`` if found and removed, ``0`` if not found (no action taken), and " "``-1`` if an error is encountered. Does not raise :exc:`KeyError` for " @@ -249,11 +247,11 @@ msgid "" msgstr "" "Retorna ``1`` si se encuentra y se elimina, ``0`` si no se encuentra (no se " "realiza ninguna acción) y ``-1`` si se encuentra un error. No lanza :exc:" -"`KeyError` por faltar claves. Lanza un :exc:`TypeError` si la *key* no se " -"puede compartir. A diferencia del método Python :meth:`~set.discard`, esta " -"función no convierte automáticamente conjuntos no compartibles en congelados " -"temporales. Lanza :exc:`PyExc_SystemError` si *set* no es una instancia de :" -"class:`set` o su subtipo." +"`KeyError` por faltar claves. Lanza un :exc:`TypeError` si la *key* no es " +"hashable. A diferencia del método Python :meth:`~frozenset.discard`, esta " +"función no convierte automáticamente conjuntos que no son hashable en " +"frozensets temporales. Lanza :exc:`SystemError` si *set* no es una instancia " +"de :class:`set` o su subtipo." #: ../Doc/c-api/set.rst:158 msgid "" @@ -273,24 +271,26 @@ msgid "" "``-1`` and raise :exc:`SystemError` if *set* is not an instance of :class:" "`set` or its subtype." msgstr "" +"Vacía todos los elementos de un conjunto existente. Retorna ``0`` en caso de " +"éxito. Retorna ``-1`` y lanza :exc:`SystemError` si *set* no es una " +"instancia de :class:`set` o su subtipo." #: ../Doc/c-api/set.rst:11 -#, fuzzy msgid "object" -msgstr "Objetos conjunto" +msgstr "object" #: ../Doc/c-api/set.rst:11 msgid "set" -msgstr "" +msgstr "set" #: ../Doc/c-api/set.rst:11 msgid "frozenset" -msgstr "" +msgstr "frozenset" #: ../Doc/c-api/set.rst:110 msgid "built-in function" -msgstr "" +msgstr "built-in function" #: ../Doc/c-api/set.rst:110 msgid "len" -msgstr "" +msgstr "len" From d7e5cbf82c197d978e50f4669deff4975067de82 Mon Sep 17 00:00:00 2001 From: rtobar Date: Sat, 18 Oct 2025 21:04:14 +0800 Subject: [PATCH 71/78] =?UTF-8?q?Ejecuta=20configuraci=C3=B3n=20de=20Sphin?= =?UTF-8?q?x=20de=20CPython=20de=20forma=20correcta=20(#3425)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Si bien la forma en que se ejecutaba e importaban la configuración de Sphinx de CPython funciona, no es la mejor manera de hacerlo. Esto dado que Sphinx inyecta algunos nombres globales al cual pueden acceder los archivos conf.py, y que nuestro método no toma en cuenta. Este commit cambia la forma en que se importa y ejecuta el archivo conf.py de la documentación de CPython. En vez de añadirlo al path e importarlo via "import" ahora se compilan los contenidos del archivo, y se ejecutan directamente con eval(). A este último se le entrega como contexto el diccionario globals(), con lo que se logra el objetivo de que éste sea modificado por el código siendo ejecutado. Asimismo el uso de globals() también logra hacer llegar cualquier valor que Sphinx haya inyectado en nuestro conf.py al conf.py de CPython. --------- Signed-off-by: Rodrigo Tobar Co-authored-by: Cristián Maureira-Fredes --- conf.py | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/conf.py b/conf.py index 9a9557ae0c..a267d02a07 100644 --- a/conf.py +++ b/conf.py @@ -21,13 +21,11 @@ sys.path.append(os.path.abspath('cpython/Doc/tools/extensions')) sys.path.append(os.path.abspath('cpython/Doc/includes')) -# Import all the Sphinx settings from cpython -# This import will trigger warnings on the 'Include/patchlevel.h' -# not being found, because it execute the content of the whole file, -# and there there is a local call to 'get_header_version' like the one -# we have in a few lines. -sys.path.insert(0, os.path.abspath('cpython/Doc')) -from conf import * +# Import all the Sphinx settings from cpython. +# Warning: calling 'eval' and 'compile' is usually not recommended, but in this case +# we are relying on the official sphinx configuration from cpython. +cpython_sphinx_conf = Path(os.path.abspath('cpython/Doc/conf.py')) +eval(compile(cpython_sphinx_conf.read_bytes(), str(cpython_sphinx_conf), "exec"), globals()) project = 'Python en Español' From 696776b65ae5b58c5e21a5e64cd6e8d898731e16 Mon Sep 17 00:00:00 2001 From: Carlos Mena <50986837+carlosm00@users.noreply.github.com> Date: Sat, 25 Oct 2025 02:42:01 +0200 Subject: [PATCH 72/78] =?UTF-8?q?Traducci=C3=B3n=20de=20library/exceptions?= =?UTF-8?q?.po=20(#3420)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #2966 --- library/exceptions.po | 341 ++++++++++++++++++++++++++++-------------- 1 file changed, 227 insertions(+), 114 deletions(-) diff --git a/library/exceptions.po b/library/exceptions.po index 79d24555ad..5b28a1dfb9 100644 --- a/library/exceptions.po +++ b/library/exceptions.po @@ -11,15 +11,16 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: 2024-11-05 23:29+0100\n" +"PO-Revision-Date: 2025-10-24 19:09+0200\n" "Last-Translator: Carlos Mena Pérez <@carlosm00>\n" -"Language: es\n" "Language-Team: python-doc-es\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\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.16.0\n" +"X-Generator: Poedit 3.7\n" #: ../Doc/library/exceptions.rst:4 msgid "Built-in Exceptions" @@ -38,12 +39,11 @@ msgstr "" "derive de :class:`BaseException`. En una instrucción :keyword:`try` con una " "cláusula :keyword:`except` que menciona una clase determinada, esa cláusula " "también controla las clases de excepción derivadas de esa clase (excepto las " -"clases de excepción de las que se deriva *it*). Dos clases de excepción que " +"clases de excepción de las que esta se deriva). Dos clases de excepción que " "no están relacionadas mediante subclases nunca son equivalentes, incluso si " "tienen el mismo nombre." #: ../Doc/library/exceptions.rst:19 -#, fuzzy msgid "" "The built-in exceptions listed in this chapter can be generated by the " "interpreter or built-in functions. Except where mentioned, they have an " @@ -52,13 +52,13 @@ msgid "" "and a string explaining the code). The associated value is usually passed " "as arguments to the exception class's constructor." msgstr "" -"Las excepciones predefinidas enumeradas a continuación pueden ser generadas " -"por el intérprete o funciones predefinidas. Excepto donde se mencione lo " -"contrario, tienen un *associated value* que indica la causa detallada del " -"error. Esto podría una cadena de caracteres o una tupla elementos con " -"grandes elementos de información (por ejemplo, un código de error y una " -"cadena que explica el código). El valor asociado generalmente se pasa como " -"argumentos al constructor de la clase de excepción." +"Las excepciones incorporadas enumeradas en este apartado pueden ser lanzadas " +"por el intérprete o funciones integradas. Excepto donde se mencione lo " +"contrario, tienen un \"valor asociado\" que indica la causa detallada " +"del error. Esto podría una cadena de caracteres o una tupla de varios " +"elementos de información (por ejemplo, un código de error y una cadena que " +"explica el código). El valor asociado generalmente se pasa como argumentos " +"al constructor de la clase de excepción." #: ../Doc/library/exceptions.rst:26 msgid "" @@ -98,9 +98,10 @@ msgid "" "Three attributes on exception objects provide information about the context " "in which the exception was raised:" msgstr "" +"Tres atributos en los objetos de excepción ofrecen información sobre el " +"contexto en el cual la excepción fue lanzada:" #: ../Doc/library/exceptions.rst:53 -#, fuzzy msgid "" "When raising a new exception while another exception is already being " "handled, the new exception's :attr:`!__context__` attribute is automatically " @@ -109,7 +110,7 @@ msgid "" "used." msgstr "" "Al lanzar una nueva excepción mientras otra excepción está siendo manejada, " -"el atributo :attr:`__context__` de la nueva excepción es automáticamente " +"el atributo :attr:`!__context__` de la nueva excepción es automáticamente " "asignado a la excepción manejada. Una excepción puede ser manejada cuando " "se utiliza la cláusula :keyword:`except` o :keyword:`finally`, o con la " "sentencia :keyword:`with`." @@ -124,10 +125,9 @@ msgstr "" #: ../Doc/library/exceptions.rst:63 msgid "raise new_exc from original_exc" -msgstr "" +msgstr "raise new_exc from original_exc" #: ../Doc/library/exceptions.rst:65 -#, fuzzy msgid "" "The expression following :keyword:`from` must be an exception or " "``None``. It will be set as :attr:`!__cause__` on the raised exception. " @@ -139,16 +139,15 @@ msgid "" "introspection when debugging." msgstr "" "La expresión que sigue a :keyword:`from` debe ser una excepción o " -"``None``. Se establecerá como :attr:`__cause__` en la excepción generada. La " -"configuración de :attr:`__cause__` también establece implícitamente el " -"atributo :attr:`__suppress_context__` en ``True``, de modo que el uso de " +"``None``. Se establecerá como :attr:`!__cause__` en la excepción lanzada. La " +"configuración de :attr:`!__cause__` también establece implícitamente el " +"atributo :attr:`!__suppress_context__` a ``True``, de modo que el uso de " "``raise new_exc from None`` reemplaza efectivamente la excepción anterior " "con la nueva para fines de visualización (por ejemplo, conversión de :exc:" "`KeyError` a :exc:`AttributeError`), dejando la excepción anterior " -"disponible en :attr:`__context__` para introspección durante la depuración." +"disponible en :attr:`!__context__` para introspección durante la depuración." #: ../Doc/library/exceptions.rst:74 -#, fuzzy msgid "" "The default traceback display code shows these chained exceptions in " "addition to the traceback for the exception itself. An explicitly chained " @@ -156,12 +155,12 @@ msgid "" "chained exception in :attr:`!__context__` is shown only if :attr:`!" "__cause__` is :const:`None` and :attr:`!__suppress_context__` is false." msgstr "" -"La visualización por defecto de la traza de error muestra estas excepciones " -"encadenadas además de la traza de la propia excepción. Siempre se muestra " -"una excepción encadenada explícitamente en :attr:`__cause__` cuando está " -"presente. Una excepción implícitamente encadenada en :attr:`__context__` " -"solo se muestra si :attr:`__cause__` es :const:`None` y :attr:" -"`__suppress_context__` es falso." +"La visualización por defecto de la traza de seguimiento muestra estas " +"excepciones encadenadas además de la traza de la propia excepción. Siempre " +"se muestra una excepción encadenada explícitamente en :attr:`!__cause__` " +"cuando está presente. Una excepción implícitamente encadenada en :attr:`!" +"__context__` solo se muestra si :attr:`!__cause__` es :const:`None` y :attr:" +"`!__suppress_context__` es falso." #: ../Doc/library/exceptions.rst:80 msgid "" @@ -262,10 +261,10 @@ msgstr "" "características de encadenamiento de excepciones de :pep:`3134` estuvieran " "disponibles. El siguiente ejemplo muestra cómo podemos convertir una " "instancia de ``SomeException`` en una instancia de ``OtherException`` " -"mientras se conserva el rastreo. Una vez generado, el marco actual se " -"inserta en el rastreo del ``OtherException``, como habría sucedido con el " -"rastreo del ``SomeException`` original si hubiéramos permitido que se " -"propagara al llamador. ::" +"mientras se conserva el rastreo. Una vez lanzada, el marco actual se inserta " +"en el rastreo del ``OtherException``, como habría sucedido con el rastreo " +"del ``SomeException`` original si hubiéramos permitido que se propagara al " +"llamador. ::" #: ../Doc/library/exceptions.rst:135 msgid "" @@ -275,12 +274,20 @@ msgid "" " tb = sys.exception().__traceback__\n" " raise OtherException(...).with_traceback(tb)" msgstr "" +"try:\n" +" ...\n" +"except SomeException:\n" +" tb = sys.exception().__traceback__\n" +" raise OtherException(...).with_traceback(tb)" #: ../Doc/library/exceptions.rst:143 msgid "" "A writable field that holds the :ref:`traceback object ` " "associated with this exception. See also: :ref:`raise`." msgstr "" +"Un campo escribible que mantenga los :ref:`objetos de seguimiento de pila " +"(traceback) ` asociados con esta excepción. Consulte :ref:" +"`raise` para más información." #: ../Doc/library/exceptions.rst:149 msgid "" @@ -316,7 +323,7 @@ msgid "" "arithmetic errors: :exc:`OverflowError`, :exc:`ZeroDivisionError`, :exc:" "`FloatingPointError`." msgstr "" -"La clase base para las excepciones predefinidas que se generan para varios " +"La clase base para las excepciones predefinidas que se lanzan para varios " "errores aritméticos: :exc:`OverflowError`, :exc:`ZeroDivisionError`, :exc:" "`FloatingPointError`." @@ -325,7 +332,7 @@ msgid "" "Raised when a :ref:`buffer ` related operation cannot be " "performed." msgstr "" -"Se genera cuando :ref:`buffer ` no se puede realizar una " +"Se lanza cuando :ref:`buffer ` no se puede realizar una " "operación relacionada." #: ../Doc/library/exceptions.rst:184 @@ -334,7 +341,7 @@ msgid "" "on a mapping or sequence is invalid: :exc:`IndexError`, :exc:`KeyError`. " "This can be raised directly by :func:`codecs.lookup`." msgstr "" -"La clase base para las excepciones que se generan cuando una clave o índice " +"La clase base para las excepciones que se lanzan cuando una clave o índice " "utilizado en un mapa o secuencia que no es válido: :exc:`IndexError`, :exc:" "`KeyError`. Esto se puede lanzar directamente por :func:`codecs.lookup`." @@ -345,12 +352,12 @@ msgstr "Excepciones específicas" #: ../Doc/library/exceptions.rst:192 msgid "The following exceptions are the exceptions that are usually raised." msgstr "" -"Las siguientes excepciones son las excepciones que normalmente se generan." +"Las siguientes excepciones son las excepciones que normalmente se lanzan." #: ../Doc/library/exceptions.rst:198 msgid "Raised when an :keyword:`assert` statement fails." msgstr "" -"Se genera cuando se produce un error en una instrucción :keyword:`assert`." +"Se lanza cuando se produce un error en una instrucción :keyword:`assert`." #: ../Doc/library/exceptions.rst:203 msgid "" @@ -358,9 +365,9 @@ msgid "" "assignment fails. (When an object does not support attribute references or " "attribute assignments at all, :exc:`TypeError` is raised.)" msgstr "" -"Se genera cuando se produce un error en una referencia de atributo (ver :ref:" +"Se lanza cuando se produce un error en una referencia de atributo (ver :ref:" "`attribute-references`) o la asignación falla. (Cuando un objeto no admite " -"referencias de atributos o asignaciones de atributos en absoluto, se genera :" +"referencias de atributos o asignaciones de atributos en absoluto, se lanza :" "exc:`TypeError`.)" #: ../Doc/library/exceptions.rst:207 @@ -385,7 +392,7 @@ msgid "" "without reading any data. (N.B.: the :meth:`io.IOBase.read` and :meth:`io." "IOBase.readline` methods return an empty string when they hit EOF.)" msgstr "" -"Se genera cuando la función :func:`input` alcanza una condición de fin de " +"Se lanza cuando la función :func:`input` alcanza una condición de fin de " "archivo (EOF) sin leer ningún dato. (Note que el :meth:`io. IOBase.read` y :" "meth:`io.IOBase.readline` retornan una cadena vacía cuando llegan a EOF.)" @@ -400,7 +407,7 @@ msgid "" "exc:`BaseException` instead of :exc:`Exception` since it is technically not " "an error." msgstr "" -"Se genera cuando un :term:`generator` o :term:`coroutine` está cerrado; ver :" +"Se lanza cuando un :term:`generator` o :term:`coroutine` está cerrado; ver :" "meth:`generator.close` y :meth:`coroutine.close`. Hereda directamente de :" "exc:`BaseException` en lugar de :exc:`Exception` ya que técnicamente no es " "un error." @@ -411,9 +418,9 @@ msgid "" "module. Also raised when the \"from list\" in ``from ... import`` has a " "name that cannot be found." msgstr "" -"Se genera cuando la instrucción :keyword:`import` tiene problemas al " -"intentar cargar un módulo. También se produce cuando la *from list* en " -"``from ... import`` tiene un nombre que no se puede encontrar." +"Se lanza cuando la instrucción :keyword:`import` tiene problemas al intentar " +"cargar un módulo. También se produce cuando la *from list* en ``from ... " +"import`` tiene un nombre que no se puede encontrar." #: ../Doc/library/exceptions.rst:241 msgid "" @@ -441,8 +448,8 @@ msgid "" "module could not be located. It is also raised when ``None`` is found in :" "data:`sys.modules`." msgstr "" -"Una subclase de :exc:`ImportError` que se genera mediante :keyword:`import` " -"cuando no se pudo encontrar un módulo. También se genera cuando ``None`` se " +"Una subclase de :exc:`ImportError` que se lanza mediante :keyword:`import` " +"cuando no se pudo encontrar un módulo. También se lanza cuando ``None`` se " "encuentra en :data:`sys.modules`." #: ../Doc/library/exceptions.rst:266 @@ -451,17 +458,16 @@ msgid "" "silently truncated to fall in the allowed range; if an index is not an " "integer, :exc:`TypeError` is raised.)" msgstr "" -"Se genera cuando un subíndice de secuencia está fuera del rango. (Los " -"índices de la rebanada son truncados silenciosamente para caer en el " -"intervalo permitido; si un índice no es un entero, se genera :exc:" -"`TypeError`.)" +"Se lanza cuando un subíndice de secuencia está fuera del rango. (Los índices " +"de la rebanada son truncados silenciosamente para caer en el intervalo " +"permitido; si un índice no es un entero, se lanza :exc:`TypeError`.)" #: ../Doc/library/exceptions.rst:275 msgid "" "Raised when a mapping (dictionary) key is not found in the set of existing " "keys." msgstr "" -"Se genera cuando no se encuentra una clave de asignación (diccionario) en el " +"Se lanza cuando no se encuentra una clave de asignación (diccionario) en el " "conjunto de claves existentes (mapa)." #: ../Doc/library/exceptions.rst:282 @@ -472,7 +478,7 @@ msgid "" "accidentally caught by code that catches :exc:`Exception` and thus prevent " "the interpreter from exiting." msgstr "" -"Se genera cuando el usuario pulsa la tecla de interrupción (normalmente :kbd:" +"Se lanza cuando el usuario pulsa la tecla de interrupción (normalmente :kbd:" "`Control-C` o :kbd:`Delete`). Durante la ejecución, se realiza una " "comprobación de interrupciones con regularidad. La excepción hereda de :exc:" "`BaseException` para no ser detectada de forma accidental por :exc:" @@ -503,7 +509,7 @@ msgid "" "recover from this situation; it nevertheless raises an exception so that a " "stack traceback can be printed, in case a run-away program was the cause." msgstr "" -"Se genera cuando una operación se queda sin memoria pero la situación aún " +"Se lanza cuando una operación se queda sin memoria pero la situación aún " "puede ser recuperada (eliminando algunos objetos). El valor asociado es una " "cadena que indica que tipo de operación (interna) se quedó sin memoria. " "Tenga en cuenta que debido a la arquitectura de administración de memoria " @@ -518,7 +524,7 @@ msgid "" "unqualified names. The associated value is an error message that includes " "the name that could not be found." msgstr "" -"Se genera cuando no se encuentra un nombre local o global. Esto se aplica " +"Se lanza cuando no se encuentra un nombre local o global. Esto se aplica " "solo a nombres no calificados. El valor asociado es un mensaje de error que " "incluye el nombre que no se pudo encontrar." @@ -560,21 +566,20 @@ msgstr "" "subclase, se establece en :data:`None`." #: ../Doc/library/exceptions.rst:338 -#, fuzzy msgid "" "``NotImplementedError`` and :data:`NotImplemented` are not interchangeable, " "even though they have similar names and purposes. See :data:`!" "NotImplemented` for details on when to use it." msgstr "" -"``NotImplementedError`` y ``NotImplemented`` no son intercambiables, a pesar " -"de que tienen nombres y propósitos similares. Consulte :data:" -"`NotImplemented` para obtener detalles sobre cuándo usarlo." +"``NotImplementedError`` y :data:`NotImplemented` no son intercambiables, a " +"pesar de que tienen nombres y propósitos similares. Consulte :data:`!" +"NotImplemented` para obtener detalles sobre cuándo usarlo." #: ../Doc/library/exceptions.rst:347 msgid "" "This exception is raised when a system function returns a system-related " -"error, including I/O failures such as \"file not found\" or \"disk full\" " -"(not for illegal argument types or other incidental errors)." +"error, including I/O failures such as \"file not found\" or \"disk " +"full\" (not for illegal argument types or other incidental errors)." msgstr "" "Esta excepción se produce cuando una función del sistema retorna un error " "relacionado con el sistema, que incluye fallas de E/S como ``file not " @@ -682,7 +687,6 @@ msgstr "" "atributo del constructor *filename2*." #: ../Doc/library/exceptions.rst:411 -#, fuzzy msgid "" "Raised when the result of an arithmetic operation is too large to be " "represented. This cannot occur for integers (which would rather raise :exc:" @@ -691,13 +695,13 @@ msgid "" "Because of the lack of standardization of floating-point exception handling " "in C, most floating-point operations are not checked." msgstr "" -"Se genera cuando el resultado de una operación aritmética es demasiado " -"grande para ser representado. Esto no puede ocurrir para los enteros (para " -"lo cual es mejor lanzar :exc:`MemoryError` que darse por vencido). Sin " -"embargo, por razones históricas, ``OverflowError`` a veces se genera para " -"enteros que están fuera del rango requerido. Debido a la falta de " -"estandarización del manejo de excepciones de coma flotante en C, la mayoría " -"de las operaciones de coma flotante no se verifican." +"Se lanza cuando el resultado de una operación aritmética es demasiado grande " +"para ser representado. Esto no puede ocurrir para los enteros (para lo cual " +"lanza un :exc:`MemoryError` en vez de darse por vencido). Sin embargo, por " +"razones históricas, ``OverflowError`` a veces se lanza para enteros que " +"están fuera del rango requerido. Debido a la falta de estandarización del " +"manejo de excepciones de coma flotante en C, la mayoría de las operaciones " +"de coma flotante no se verifican." #: ../Doc/library/exceptions.rst:421 msgid "" @@ -705,24 +709,29 @@ msgid "" "operation is blocked during interpreter shutdown also known as :term:`Python " "finalization `." msgstr "" +"Esta excepción es derivada de :exc:`RuntimeError`. Se lanza cuando una " +"operación es bloqueada durante el apagado del intérprete, también conocido " +"como :term:`finalización de Python `." #: ../Doc/library/exceptions.rst:425 msgid "" "Examples of operations which can be blocked with a :exc:" "`PythonFinalizationError` during the Python finalization:" msgstr "" +"Ejemplos de operaciones que pueden ser bloqueadas con un :exc:" +"`PythonFinalizationError` durante la finalización de Python:" #: ../Doc/library/exceptions.rst:428 msgid "Creating a new Python thread." -msgstr "" +msgstr "Creación de nuevos hilos de Python." #: ../Doc/library/exceptions.rst:429 msgid ":func:`os.fork`." -msgstr "" +msgstr ":func:`os.fork`." #: ../Doc/library/exceptions.rst:431 msgid "See also the :func:`sys.is_finalizing` function." -msgstr "" +msgstr "Revise también la función :func:`sys.is_finalizing`." #: ../Doc/library/exceptions.rst:433 ../Doc/library/exceptions.rst:443 msgid "Previously, a plain :exc:`RuntimeError` was raised." @@ -756,7 +765,7 @@ msgid "" "categories. The associated value is a string indicating what precisely went " "wrong." msgstr "" -"Se genera cuando se detecta un error que no corresponde a ninguna de las " +"Se lanza cuando se detecta un error que no corresponde a ninguna de las " "otras categorías. El valor asociado es una cadena que indica exactamente qué " "salió mal." @@ -766,18 +775,17 @@ msgid "" "`~iterator.__next__` method to signal that there are no further items " "produced by the iterator." msgstr "" -"Generado por la función incorporada :func:`next` y un :term:`iterator`\\'s :" +"Lanzado por la función incorporada :func:`next` y un :term:`iterator`\\'s :" "meth:`~iterator.__next__` para indicar que no hay más elementos producidos " "por el iterador." #: ../Doc/library/exceptions.rst:470 -#, fuzzy msgid "" "The exception object has a single attribute :attr:`!value`, which is given " "as an argument when constructing the exception, and defaults to :const:" "`None`." msgstr "" -"El objeto de excepción tiene un solo atributo :attr:`value`, que se " +"El objeto de excepción tiene un solo atributo :attr:`!value`, que se " "proporciona como argumento al construir la excepción, y por defecto es :" "const:`None`." @@ -788,7 +796,7 @@ msgid "" "is used as the :attr:`value` parameter to the constructor of the exception." msgstr "" "Cuando se retorna una función :term:`generator` o :term:`coroutine`, se " -"genera una nueva instancia :exc:`StopIteration`, y el valor retornado por la " +"lanza una nueva instancia :exc:`StopIteration`, y el valor retornado por la " "función se utiliza como parámetro :attr:`value` para constructor de la " "excepción." @@ -824,7 +832,7 @@ msgid "" "raised in a generator is transformed into a :exc:`RuntimeError`." msgstr "" "Habilitar :pep:`479` para todo el código por defecto: a :exc:`StopIteration` " -"generado en un generador se transforma en :exc:`RuntimeError`." +"lanzado en un generador se transforma en :exc:`RuntimeError`." #: ../Doc/library/exceptions.rst:497 msgid "" @@ -841,7 +849,7 @@ msgid "" "`compile`, :func:`exec`, or :func:`eval`, or when reading the initial script " "or standard input (also interactively)." msgstr "" -"Se genera cuando el analizador encuentra un error de sintaxis. Esto puede " +"Se lanza cuando el analizador encuentra un error de sintaxis. Esto puede " "ocurrir en una instrucción :keyword:`import`, en una llamada a las funciones " "integradas :func:`compile`, :func:`exec` o :func:`eval`, o al leer el script " "inicial o la entrada estándar (también de forma interactiva)." @@ -925,7 +933,7 @@ msgid "" "Raised when indentation contains an inconsistent use of tabs and spaces. " "This is a subclass of :exc:`IndentationError`." msgstr "" -"Se genera cuando la sangría contiene un uso inconsistente de pestañas y " +"Se lanza cuando la sangría contiene un uso inconsistente de pestañas y " "espacios. Esta es una subclase de :exc:`IndentationError`." #: ../Doc/library/exceptions.rst:563 @@ -934,7 +942,7 @@ msgid "" "not look so serious to cause it to abandon all hope. The associated value is " "a string indicating what went wrong (in low-level terms)." msgstr "" -"Se genera cuando el intérprete encuentra un error interno, pero la situación " +"Se lanza cuando el intérprete encuentra un error interno, pero la situación " "no parece tan grave como para abandonar toda esperanza. El valor asociado es " "una cadena que indica qué salió mal (a bajo nivel)." @@ -1006,7 +1014,7 @@ msgid "" "inappropriate type. The associated value is a string giving details about " "the type mismatch." msgstr "" -"Se genera cuando una operación o función se aplica a un objeto de tipo " +"Se lanza cuando una operación o función se aplica a un objeto de tipo " "inapropiado. El valor asociado es una cadena que proporciona detalles sobre " "la falta de coincidencia de tipos." @@ -1041,7 +1049,7 @@ msgid "" "but no value has been bound to that variable. This is a subclass of :exc:" "`NameError`." msgstr "" -"Se genera cuando se hace referencia a una variable local en una función o " +"Se lanza cuando se hace referencia a una variable local en una función o " "método, pero no se ha vinculado ningún valor a esa variable. Esta es una " "subclase de :exc:`NameError`." @@ -1050,7 +1058,7 @@ msgid "" "Raised when a Unicode-related encoding or decoding error occurs. It is a " "subclass of :exc:`ValueError`." msgstr "" -"Se genera cuando se produce un error de codificación o decodificación " +"Se lanza cuando se produce un error de codificación o decodificación " "relacionado con Unicode. Es una subclase de :exc:`ValueError`." #: ../Doc/library/exceptions.rst:627 @@ -1088,7 +1096,7 @@ msgid "" "Raised when a Unicode-related error occurs during encoding. It is a " "subclass of :exc:`UnicodeError`." msgstr "" -"Se genera cuando se produce un error relacionado con Unicode durante la " +"Se lanza cuando se produce un error relacionado con Unicode durante la " "codificación. Es una subclase de :exc:`UnicodeError`." #: ../Doc/library/exceptions.rst:660 @@ -1096,7 +1104,7 @@ msgid "" "Raised when a Unicode-related error occurs during decoding. It is a " "subclass of :exc:`UnicodeError`." msgstr "" -"Se genera cuando se produce un error relacionado con Unicode durante la " +"Se lanza cuando se produce un error relacionado con Unicode durante la " "codificación. Es una subclase de :exc:`UnicodeError`." #: ../Doc/library/exceptions.rst:666 @@ -1104,7 +1112,7 @@ msgid "" "Raised when a Unicode-related error occurs during translating. It is a " "subclass of :exc:`UnicodeError`." msgstr "" -"Se genera cuando se produce un error relacionado con Unicode durante la " +"Se lanza cuando se produce un error relacionado con Unicode durante la " "codificación. Es una subclase de :exc:`UnicodeError`." #: ../Doc/library/exceptions.rst:672 @@ -1113,7 +1121,7 @@ msgid "" "type but an inappropriate value, and the situation is not described by a " "more precise exception such as :exc:`IndexError`." msgstr "" -"Se genera cuando una operación o función recibe un argumento que tiene el " +"Se lanza cuando una operación o función recibe un argumento que tiene el " "tipo correcto pero un valor inapropiado, y la situación no se describe con " "una excepción más precisa como :exc:`IndexError`." @@ -1123,7 +1131,7 @@ msgid "" "The associated value is a string indicating the type of the operands and the " "operation." msgstr "" -"Se genera cuando el segundo argumento de una operación de división o módulo " +"Se lanza cuando el segundo argumento de una operación de división o módulo " "es cero. El valor asociado es una cadena que indica el tipo de operandos y " "la operación." @@ -1148,7 +1156,7 @@ msgid "" "The following exceptions are subclasses of :exc:`OSError`, they get raised " "depending on the system error code." msgstr "" -"Las siguientes excepciones son subclases de :exc:`OSError`, se generan según " +"Las siguientes excepciones son subclases de :exc:`OSError`, se lanzan según " "el código de error del sistema." #: ../Doc/library/exceptions.rst:704 @@ -1501,7 +1509,7 @@ msgstr "" "`BaseException` y puede envolver cualquier excepción, mientras que :exc:" "`ExceptionGroup` extiende a :exc:`Exception` y solo puede envolver subclases " "de :exc:`Exception`. Este diseño está pensado para que ``except Exception`` " -"capture un :exc:`ExceptionGroup` pero no :exc:`BaseExceptionGroup`" +"capture un :exc:`ExceptionGroup` pero no :exc:`BaseExceptionGroup`." #: ../Doc/library/exceptions.rst:940 msgid "" @@ -1547,9 +1555,14 @@ msgid "" "type object) that accepts an exception as its single argument and returns " "true for the exceptions that should be in the subgroup." msgstr "" +"La condición puede ser un tipo de excepción o una tupla de tipos de " +"excepción, en cuyo caso cada excepción se verifica para comprobar si " +"coincide utilizando la misma verificación que es usada en una cláusula " +"*except*. La condición también puede ser un invocable (distinto de un tipo " +"objeto) que acepte una excepción como su único argumento, y retorne *true* " +"para las excepciones que deban estar en el subgrupo." #: ../Doc/library/exceptions.rst:967 -#, fuzzy msgid "" "The nesting structure of the current exception is preserved in the result, " "as are the values of its :attr:`message`, :attr:`~BaseException." @@ -1559,8 +1572,9 @@ msgid "" msgstr "" "La estructura de anidamiento de la excepción actual se conserva en el " "resultado, así como también los valores de sus campos :attr:`message`, :attr:" -"`__traceback__`, :attr:`__cause__`, :attr:`__context__` y :attr:`__notes__`. " -"Los grupos anidados vacíos son omitidos del resultado." +"`~BaseException.__traceback__`, :attr:`~BaseException.__cause__`, :attr:" +"`~BaseException.__context__` y :attr:`~BaseException.__notes__` . Los grupos " +"anidados vacíos son omitidos del resultado." #: ../Doc/library/exceptions.rst:974 msgid "" @@ -1575,7 +1589,7 @@ msgstr "" #: ../Doc/library/exceptions.rst:978 msgid "``condition`` can be any callable which is not a type object." -msgstr "" +msgstr "``condition`` puede ser cualquier invocable que no sea un objeto tipo." #: ../Doc/library/exceptions.rst:983 msgid "" @@ -1596,19 +1610,18 @@ msgstr "" "envuelve las excepciones en ``excs``." #: ../Doc/library/exceptions.rst:992 -#, fuzzy msgid "" "This method is used by :meth:`subgroup` and :meth:`split`, which are used in " "various contexts to break up an exception group. A subclass needs to " "override it in order to make :meth:`subgroup` and :meth:`split` return " "instances of the subclass rather than :exc:`ExceptionGroup`." msgstr "" -"Este método es usado por :meth:`subgroup` y :meth:`split`. Se necesita una " +"Este método es usado por :meth:`subgroup` y :meth:`split`, los cuales se " +"usan en varios contextos para romper un grupo de excepción. Se necesita una " "subclase que lo sobrescriba para que :meth:`subgroup` y :meth:`split` " -"retornan instancias de la subclase en lugar de :exc:`ExceptionGroup`." +"retornen instancias de la subclase en lugar de :exc:`ExceptionGroup`." #: ../Doc/library/exceptions.rst:998 -#, fuzzy msgid "" ":meth:`subgroup` and :meth:`split` copy the :attr:`~BaseException." "__traceback__`, :attr:`~BaseException.__cause__`, :attr:`~BaseException." @@ -1616,10 +1629,11 @@ msgid "" "exception group to the one returned by :meth:`derive`, so these fields do " "not need to be updated by :meth:`derive`." msgstr "" -":meth:`subgroup` y :meth:`split` copian los campos :attr:`__traceback__`, :" -"attr:`__cause__`, :attr:`__context__` y :attr:`__notes__` del grupo de " -"excepción original al devuelto por :meth:`derive`, por lo que estos campos " -"no necesitan ser actualizados por :meth:`derive`. ::" +":meth:`subgroup` y :meth:`split` copian los campos :attr:`~BaseException." +"__traceback__`, :attr:`~BaseException.__cause__`, :attr:`~BaseException." +"__context__` y :attr:`~BaseException.__notes__` del grupo de excepción " +"original al retornado por :meth:`derive`, por lo que estos campos no " +"necesitan ser actualizados por :meth:`derive`." #: ../Doc/library/exceptions.rst:1005 msgid "" @@ -1649,9 +1663,33 @@ msgid "" ">>> exc.__traceback__ is match.__traceback__ is rest.__traceback__\n" "True" msgstr "" +">>> class MyGroup(ExceptionGroup):\n" +"... def derive(self, excs):\n" +"... return MyGroup(self.message, excs)\n" +"...\n" +">>> e = MyGroup(\"eg\", [ValueError(1), TypeError(2)])\n" +">>> e.add_note(\"a note\")\n" +">>> e.__context__ = Exception(\"context\")\n" +">>> e.__cause__ = Exception(\"cause\")\n" +">>> try:\n" +"... raise e\n" +"... except Exception as e:\n" +"... exc = e\n" +"...\n" +">>> match, rest = exc.split(ValueError)\n" +">>> exc, exc.__context__, exc.__cause__, exc.__notes__\n" +"(MyGroup('eg', [ValueError(1), TypeError(2)]), Exception('context'), " +"Exception('cause'), ['a note'])\n" +">>> match, match.__context__, match.__cause__, match.__notes__\n" +"(MyGroup('eg', [ValueError(1)]), Exception('context'), Exception('cause'), " +"['a note'])\n" +">>> rest, rest.__context__, rest.__cause__, rest.__notes__\n" +"(MyGroup('eg', [TypeError(2)]), Exception('context'), Exception('cause'), " +"['a note'])\n" +">>> exc.__traceback__ is match.__traceback__ is rest.__traceback__\n" +"True" #: ../Doc/library/exceptions.rst:1031 -#, fuzzy msgid "" "Note that :exc:`BaseExceptionGroup` defines :meth:`~object.__new__`, so " "subclasses that need a different constructor signature need to override that " @@ -1659,11 +1697,12 @@ msgid "" "exception group subclass which accepts an exit_code and and constructs the " "group's message from it. ::" msgstr "" -"Tenga en cuenta que :exc:`BaseExceptionGroup` define :meth:`__new__`, por lo " -"que las subclases que necesiten una firma de constructor diferente deben " -"sobrescribir ese método en lugar de :meth:`__init__`. Por ejemplo, a " -"continuación se define una subclase de grupo de excepción que acepta un " -"*exit_code* y construye el mensaje del grupo a partir del mismo. ::" +"Tenga en cuenta que :exc:`BaseExceptionGroup` define :meth:`~object." +"__new__`, por lo que las subclases que necesiten una firma de constructor " +"diferente deben sobrescribir ese método en lugar de :meth:`~object." +"__init__`. Por ejemplo, a continuación se define una subclase de grupo de " +"excepción que acepta un *exit_code* y construye el mensaje del grupo a " +"partir del mismo. ::" #: ../Doc/library/exceptions.rst:1037 msgid "" @@ -1676,6 +1715,14 @@ msgid "" " def derive(self, excs):\n" " return Errors(excs, self.exit_code)" msgstr "" +"class Errors(ExceptionGroup):\n" +" def __new__(cls, errors, exit_code):\n" +" self = super().__new__(Errors, f\"exit code: {exit_code}\", errors)\n" +" self.exit_code = exit_code\n" +" return self\n" +"\n" +" def derive(self, excs):\n" +" return Errors(excs, self.exit_code)" #: ../Doc/library/exceptions.rst:1046 msgid "" @@ -1766,6 +1813,74 @@ msgid "" " ├── UnicodeWarning\n" " └── UserWarning\n" msgstr "" +"BaseException\n" +" ├── BaseExceptionGroup\n" +" ├── GeneratorExit\n" +" ├── KeyboardInterrupt\n" +" ├── SystemExit\n" +" └── Exception\n" +" ├── ArithmeticError\n" +" │ ├── FloatingPointError\n" +" │ ├── OverflowError\n" +" │ └── ZeroDivisionError\n" +" ├── AssertionError\n" +" ├── AttributeError\n" +" ├── BufferError\n" +" ├── EOFError\n" +" ├── ExceptionGroup [BaseExceptionGroup]\n" +" ├── ImportError\n" +" │ └── ModuleNotFoundError\n" +" ├── LookupError\n" +" │ ├── IndexError\n" +" │ └── KeyError\n" +" ├── MemoryError\n" +" ├── NameError\n" +" │ └── UnboundLocalError\n" +" ├── OSError\n" +" │ ├── BlockingIOError\n" +" │ ├── ChildProcessError\n" +" │ ├── ConnectionError\n" +" │ │ ├── BrokenPipeError\n" +" │ │ ├── ConnectionAbortedError\n" +" │ │ ├── ConnectionRefusedError\n" +" │ │ └── ConnectionResetError\n" +" │ ├── FileExistsError\n" +" │ ├── FileNotFoundError\n" +" │ ├── InterruptedError\n" +" │ ├── IsADirectoryError\n" +" │ ├── NotADirectoryError\n" +" │ ├── PermissionError\n" +" │ ├── ProcessLookupError\n" +" │ └── TimeoutError\n" +" ├── ReferenceError\n" +" ├── RuntimeError\n" +" │ ├── NotImplementedError\n" +" │ ├── PythonFinalizationError\n" +" │ └── RecursionError\n" +" ├── StopAsyncIteration\n" +" ├── StopIteration\n" +" ├── SyntaxError\n" +" │ └── IndentationError\n" +" │ └── TabError\n" +" ├── SystemError\n" +" ├── TypeError\n" +" ├── ValueError\n" +" │ └── UnicodeError\n" +" │ ├── UnicodeDecodeError\n" +" │ ├── UnicodeEncodeError\n" +" │ └── UnicodeTranslateError\n" +" └── Warning\n" +" ├── BytesWarning\n" +" ├── DeprecationWarning\n" +" ├── EncodingWarning\n" +" ├── FutureWarning\n" +" ├── ImportWarning\n" +" ├── PendingDeprecationWarning\n" +" ├── ResourceWarning\n" +" ├── RuntimeWarning\n" +" ├── SyntaxWarning\n" +" ├── UnicodeWarning\n" +" └── UserWarning\n" #: ../Doc/library/exceptions.rst:6 ../Doc/library/exceptions.rst:17 #: ../Doc/library/exceptions.rst:196 @@ -1785,26 +1900,24 @@ msgid "raise" msgstr "raise" #: ../Doc/library/exceptions.rst:41 -#, fuzzy msgid "exception" -msgstr "Excepciones del sistema operativo" +msgstr "exception" #: ../Doc/library/exceptions.rst:41 -#, fuzzy msgid "chaining" -msgstr "Advertencias" +msgstr "chaining" #: ../Doc/library/exceptions.rst:41 msgid "__cause__ (exception attribute)" -msgstr "" +msgstr "__cause__ (exception attribute)" #: ../Doc/library/exceptions.rst:41 msgid "__context__ (exception attribute)" -msgstr "" +msgstr "__context__ (exception attribute)" #: ../Doc/library/exceptions.rst:41 msgid "__suppress_context__ (exception attribute)" -msgstr "" +msgstr "__suppress_context__ (exception attribute)" #: ../Doc/library/exceptions.rst:196 msgid "assert" From 2f1667c07b560ad0a21c447e54bdff007106b2b2 Mon Sep 17 00:00:00 2001 From: rtobar Date: Thu, 30 Oct 2025 13:36:06 +0800 Subject: [PATCH 73/78] =?UTF-8?q?Arregla=20ortograf=C3=ADa,=20CI=20y=20pot?= =?UTF-8?q?odo=20(#3426)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit El step de chequeo de ortografía comenzó a fallar desde que incluímos #3346. Mi intuición es que ahora que parchamos ciertos archivos .po antes de traducirlos estamos "accidentalmente" arreglando algunas entradas que antes quizás fallaban al ser parseadas, ya sea por pospell or por msgcat, y que cuya ortografía por lo tanto nunca fue chequeada. Aprovecho la oportunidad también de arreglar o mejorar un par de detalles en nuestro script de chequeo de ortografía. En el proceso también ocurrió que, por coincidencia, apareció publicada la nueva versión de potodo, la cual depreca el flag -p/--path que usábamos. Esto provocó una serie de errores que llevó a que: * Actualizara nuestra versión de potodo a la última publicada, * Removiera el flag --path * Añadiera un nuevo step en el job de CI para que la documentación construida se pueda descargar Además envié un pequeño PR a potodo: https://git.afpy.org/AFPy/potodo/pulls/30 --------- Signed-off-by: Rodrigo Tobar --- .github/workflows/main.yml | 6 ++++++ .overrides/progress.rst | 2 +- conf.py | 8 ++++++++ dictionaries/library_io.txt | 1 + dictionaries/whatsnew_2.7.txt | 1 + reference/compound_stmts.po | 2 +- requirements-own.txt | 2 +- scripts/check_spell.py | 15 ++++++++------- 8 files changed, 27 insertions(+), 10 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 18016efc2c..8b3427d1db 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -92,3 +92,9 @@ jobs: - name: Construir documentación run: | sphinx-build -j auto -W --keep-going -b html -d cpython/Doc/_build/doctree -D language=es . cpython/Doc/_build/html + + # Publica la documentación recién construida para poder descargarla de ser necesario + - uses: actions/upload-artifact@v4 + with: + path: cpython/Doc/_build/html + name: documentación-html diff --git a/.overrides/progress.rst b/.overrides/progress.rst index 7fead69417..1a6e7284cf 100644 --- a/.overrides/progress.rst +++ b/.overrides/progress.rst @@ -20,7 +20,7 @@ Muestra los porcentajes completados por directorio y solo los archivos que no es .. runblock:: console - $ potodo --path . + $ potodo . Completados diff --git a/conf.py b/conf.py index a267d02a07..59aacc661f 100644 --- a/conf.py +++ b/conf.py @@ -90,6 +90,14 @@ ] +# autorun is used, among other things, to run potodo, which generates non-ascii output +# starting with 0.30. autorun OTOH defaults to use ascii to decode console/python output. +# Let's switch to utf-8 instead. +autorun_languages = { + "console_output_encoding": "utf-8", + "pycon_output_encoding": "utf-8", +} + def setup(app): def add_contributing_banner(app, doctree): diff --git a/dictionaries/library_io.txt b/dictionaries/library_io.txt index 0a93b4a395..9da6128ac4 100644 --- a/dictionaries/library_io.txt +++ b/dictionaries/library_io.txt @@ -8,3 +8,4 @@ Reconfigura similarmente subclasifica subclasificaciones +Markdown diff --git a/dictionaries/whatsnew_2.7.txt b/dictionaries/whatsnew_2.7.txt index dab9202ed2..87a2cf05a6 100644 --- a/dictionaries/whatsnew_2.7.txt +++ b/dictionaries/whatsnew_2.7.txt @@ -103,3 +103,4 @@ values viewkeys warnings whatever +Light diff --git a/reference/compound_stmts.po b/reference/compound_stmts.po index 483661f484..5a06c0ed61 100644 --- a/reference/compound_stmts.po +++ b/reference/compound_stmts.po @@ -336,7 +336,7 @@ msgstr "" "Para una cláusula de :keyword:`!except`con una expresión, la expresión debe " "evaluar a un tipo de excepción o un tupla de tipos de excepciones. La " "excepción generada coincide con una cláusula :keyword:`!except` cuya " -"expresión evaluá a la clase o una :term:`clase base no virtual ` del objeto excepción, o una tupla que contiene dicha clase." #: ../Doc/reference/compound_stmts.rst:255 diff --git a/requirements-own.txt b/requirements-own.txt index 5f2e1c075a..cac697fa5b 100644 --- a/requirements-own.txt +++ b/requirements-own.txt @@ -2,7 +2,7 @@ pip polib pospell>=1.1 -potodo +potodo>=0.30 powrap>=1.0.2 pre-commit Pygments>=2.17.0 diff --git a/scripts/check_spell.py b/scripts/check_spell.py index d915d23849..da8738366e 100644 --- a/scripts/check_spell.py +++ b/scripts/check_spell.py @@ -4,6 +4,7 @@ """ from pathlib import Path +import shutil import sys import tempfile @@ -43,7 +44,7 @@ def check_spell(po_files=None): # Run pospell either against all files or the file given on the command line if not po_files: - po_files = Path(".").glob("*/*.po") + po_files = list(Path(".").glob("*/*.po")) # Workaround issue #3324 FIXME # It seems that all code snippets have line breaks '\n'. This causes the @@ -52,10 +53,9 @@ def check_spell(po_files=None): # Create temporary copies of the original files. po_files_tmp = [] for po_file in po_files: - with open(tempfile.mktemp(), "w") as temp_file: - # Copy content of the .po file - with open(po_file, "r", encoding="utf-8") as f: - temp_file.write(f.read()) + with open(tempfile.mktemp(), "wb") as temp_file: + with open(po_file, "rb") as original_file: + shutil.copyfileobj(original_file, temp_file) po_files_tmp.append(temp_file.name) # Don't translate probably code entries @@ -66,8 +66,9 @@ def check_spell(po_files=None): polib_temp_file.save() detected_errors = pospell.spell_check(po_files_tmp, personal_dict=output_filename, language="es_ES") - for tmp, orig in zip(po_files_tmp, po_files): - print(tmp, " == ", orig) + if detected_errors: + for tmp, orig in zip(po_files_tmp, po_files): + print(tmp, " == ", orig) return detected_errors From 2f9920ac7b8ec99105f2d06ca0b6ad3fa7dece28 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 4 Nov 2025 06:22:02 +0800 Subject: [PATCH 74/78] Bump actions/upload-artifact from 4 to 5 (#3427) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 5.
Release notes

Sourced from actions/upload-artifact's releases.

v5.0.0

What's Changed

BREAKING CHANGE: this update supports Node v24.x. This is not a breaking change per-se but we're treating it as such.

New Contributors

Full Changelog: https://github.com/actions/upload-artifact/compare/v4...v5.0.0

v4.6.2

What's Changed

New Contributors

Full Changelog: https://github.com/actions/upload-artifact/compare/v4...v4.6.2

v4.6.1

What's Changed

Full Changelog: https://github.com/actions/upload-artifact/compare/v4...v4.6.1

v4.6.0

What's Changed

Full Changelog: https://github.com/actions/upload-artifact/compare/v4...v4.6.0

v4.5.0

What's Changed

New Contributors

... (truncated)

Commits
  • 330a01c Merge pull request #734 from actions/danwkennedy/prepare-5.0.0
  • 03f2824 Update github.dep.yml
  • 905a1ec Prepare v5.0.0
  • 2d9f9cd Merge pull request #725 from patrikpolyak/patch-1
  • 9687587 Merge branch 'main' into patch-1
  • 2848b2c Merge pull request #727 from danwkennedy/patch-1
  • 9b51177 Spell out the first use of GHES
  • cd231ca Update GHES guidance to include reference to Node 20 version
  • de65e23 Merge pull request #712 from actions/nebuk89-patch-1
  • 8747d8c Update README.md
  • Additional commits viewable in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/upload-artifact&package-manager=github_actions&previous-version=4&new-version=5)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 8b3427d1db..5e1d56aed3 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -94,7 +94,7 @@ jobs: sphinx-build -j auto -W --keep-going -b html -d cpython/Doc/_build/doctree -D language=es . cpython/Doc/_build/html # Publica la documentación recién construida para poder descargarla de ser necesario - - uses: actions/upload-artifact@v4 + - uses: actions/upload-artifact@v5 with: path: cpython/Doc/_build/html name: documentación-html From a0892dffdc2e985db7dfe0e87fe21e5f66a1fd03 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 25 Nov 2025 06:39:13 +0800 Subject: [PATCH 75/78] Bump actions/checkout from 5 to 6 (#3429) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6.
Release notes

Sourced from actions/checkout's releases.

v6.0.0

What's Changed

Full Changelog: https://github.com/actions/checkout/compare/v5.0.0...v6.0.0

v6-beta

What's Changed

Updated persist-credentials to store the credentials under $RUNNER_TEMP instead of directly in the local git config.

This requires a minimum Actions Runner version of v2.329.0 to access the persisted credentials for Docker container action scenarios.

v5.0.1

What's Changed

Full Changelog: https://github.com/actions/checkout/compare/v5...v5.0.1

Changelog

Sourced from actions/checkout's changelog.

Changelog

V6.0.0

V5.0.1

V5.0.0

V4.3.1

V4.3.0

v4.2.2

v4.2.1

v4.2.0

v4.1.7

v4.1.6

v4.1.5

... (truncated)

Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/checkout&package-manager=github_actions&previous-version=5&new-version=6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/main.yml | 2 +- .github/workflows/pr-comment.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 5e1d56aed3..941885234a 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-22.04 steps: # Obtención del código - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 with: submodules: 'true' # Necesario para que tj-actions/changed-files se ejecute diff --git a/.github/workflows/pr-comment.yml b/.github/workflows/pr-comment.yml index 9e0971c7c8..5cc4c780d4 100644 --- a/.github/workflows/pr-comment.yml +++ b/.github/workflows/pr-comment.yml @@ -14,7 +14,7 @@ jobs: any_changed: ${{ steps.changed-files.outputs.any_changed }} comment: ${{ steps.create-pr-comment.outputs.comment }} steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 with: ref: ${{ github.event.pull_request.head.sha }} persist-credentials: false @@ -25,7 +25,7 @@ jobs: cache: "pip" # checkout these files from the base branch to guarantee they haven't been # modified by the PR - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 with: path: base-branch sparse-checkout-cone-mode: false From 5c8626f9686dd689051b86eef4855c892d1d78bc Mon Sep 17 00:00:00 2001 From: Melvin Pineda Miguel <156713664+TAPMelvin@users.noreply.github.com> Date: Thu, 4 Dec 2025 20:30:19 -0500 Subject: [PATCH 76/78] Translate 7 untranslated entries in c-api/arg.po (#3430) - Translate PY_SSIZE_T_CLEAN macro documentation - Translate string/buffer conversion methods introduction - Translate memory allocation note for es/es#/et/et# formats - Translate borrowed buffer explanation - Translate bf_releasebuffer requirement - Translate immutability check note - Translate removed format types (u, u#, Z, Z#) --- c-api/arg.po | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/c-api/arg.po b/c-api/arg.po index 5e3a772073..a3c968b094 100644 --- a/c-api/arg.po +++ b/c-api/arg.po @@ -85,6 +85,10 @@ msgid "" "formats (``s#``, ``y#``, etc.) explained below. This is not necessary on " "Python 3.13 and later." msgstr "" +"En Python 3.12 y versiones anteriores, la macro :c:macro:`!PY_SSIZE_T_CLEAN` " +"debe estar definida antes de incluir :file:`Python.h` para usar todas las " +"variantes ``#`` de formatos (``s#``, ``y#``, etc.) explicadas a continuación. " +"Esto no es necesario en Python 3.13 y versiones posteriores." #: ../Doc/c-api/arg.rst:42 msgid "" @@ -103,7 +107,7 @@ msgstr "" #: ../Doc/c-api/arg.rst:48 msgid "There are three ways strings and buffers can be converted to C:" -msgstr "" +msgstr "Hay tres formas en que las cadenas de caracteres y los búferes pueden convertirse a C:" #: ../Doc/c-api/arg.rst:50 #, fuzzy @@ -129,6 +133,9 @@ msgid "" "**You have to call** :c:func:`PyMem_Free` after you have finished processing " "the data (or in any early abort case)." msgstr "" +"Los formatos ``es``, ``es#``, ``et`` y ``et#`` asignan el búfer de resultado. " +"**Debe llamar** :c:func:`PyMem_Free` después de haber terminado de procesar " +"los datos (o en cualquier caso de aborto temprano)." #: ../Doc/c-api/arg.rst:63 msgid "" @@ -138,6 +145,12 @@ msgid "" "corresponding Python object, and shares the lifetime of this object. You " "won't have to release any memory yourself." msgstr "" +"Otros formatos toman un :class:`str` o un :term:`objeto de tipo bytes ` de solo lectura, como :class:`bytes`, y proporcionan un " +"puntero ``const char *`` a su búfer. En este caso el búfer es \"prestado\" " +"(*borrowed*): es gestionado por el objeto Python correspondiente y comparte " +"el tiempo de vida de este objeto. No tendrá que liberar ninguna memoria " +"usted mismo." #: ../Doc/c-api/arg.rst:70 msgid "" @@ -146,6 +159,11 @@ msgid "" "disallows common mutable objects such as :class:`bytearray`, but also some " "read-only objects such as :class:`memoryview` of :class:`bytes`." msgstr "" +"Para asegurar que el búfer subyacente pueda ser prestado de forma segura, el " +"campo :c:member:`PyBufferProcs.bf_releasebuffer` del objeto debe ser ``NULL``. " +"Esto desautoriza objetos mutables comunes como :class:`bytearray`, pero " +"también algunos objetos de solo lectura como :class:`memoryview` de :class:" +"`bytes`." #: ../Doc/c-api/arg.rst:76 msgid "" @@ -153,6 +171,9 @@ msgid "" "whether the input object is immutable (e.g. whether it would honor a request " "for a writable buffer, or whether another thread can mutate the data)." msgstr "" +"Además de este requisito de ``bf_releasebuffer``, no hay verificación para " +"comprobar si el objeto de entrada es inmutable (por ejemplo, si respetaría " +"una solicitud de un búfer escribible, o si otro hilo puede mutar los datos)." #: ../Doc/c-api/arg.rst:98 msgid "``s`` (:class:`str`) [const char \\*]" @@ -564,6 +585,8 @@ msgid "" "``u``, ``u#``, ``Z``, and ``Z#`` are removed because they used a legacy " "``Py_UNICODE*`` representation." msgstr "" +"``u``, ``u#``, ``Z`` y ``Z#`` fueron eliminados porque usaban una " +"representación heredada ``Py_UNICODE*``." #: ../Doc/c-api/arg.rst:230 msgid "Numbers" From 4c90822d82e9e57e7c86dcc7ce7c04ee58b2d276 Mon Sep 17 00:00:00 2001 From: Melvin Pineda Miguel <156713664+TAPMelvin@users.noreply.github.com> Date: Fri, 5 Dec 2025 23:10:37 -0500 Subject: [PATCH 77/78] Anadir Melvin Pineda Miguel a TRANSLATORS (#3433) Por el PR https://github.com/python/python-docs-es/pull/3430#event-21374229658 --- TRANSLATORS | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/TRANSLATORS b/TRANSLATORS index e46c181565..70c581a0bb 100644 --- a/TRANSLATORS +++ b/TRANSLATORS @@ -188,6 +188,7 @@ Mateo Cámara (@MateoCamara) Matias Bordese (@matiasb) Matthew Ellis Kane Jiménez (@M-E-K-J-2102) Melissa Escobar Gutiérrez (@MelissaEscobar) +Melvin Pineda Miguel (@TAPMelvin) Miguel Ángel Nahuel Ambrosini (@ambro17) Nahuel Espinosa (@nahueespinosa) @@ -250,4 +251,4 @@ Xavi Rambla Centellas (@xavirambla) Yennifer Paola Herrera Ariza (@Yenniferh) Yohanna Padrino (@Yo-hanaPR) zejiran -Zodac (@zodacdev) \ No newline at end of file +Zodac (@zodacdev) From cc86e77d8fbfada59a0e831f3d054c895c6658ee Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 16 Dec 2025 07:02:07 +0800 Subject: [PATCH 78/78] Bump actions/upload-artifact from 5 to 6 (#3434) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 5 to 6.
Release notes

Sourced from actions/upload-artifact's releases.

v6.0.0

v6 - What's new

[!IMPORTANT] actions/upload-artifact@v6 now runs on Node.js 24 (runs.using: node24) and requires a minimum Actions Runner version of 2.327.1. If you are using self-hosted runners, ensure they are updated before upgrading.

Node.js 24

This release updates the runtime to Node.js 24. v5 had preliminary support for Node.js 24, however this action was by default still running on Node.js 20. Now this action by default will run on Node.js 24.

What's Changed

Full Changelog: https://github.com/actions/upload-artifact/compare/v5.0.0...v6.0.0

Commits
  • b7c566a Merge pull request #745 from actions/upload-artifact-v6-release
  • e516bc8 docs: correct description of Node.js 24 support in README
  • ddc45ed docs: update README to correct action name for Node.js 24 support
  • 615b319 chore: release v6.0.0 for Node.js 24 support
  • 017748b Merge pull request #744 from actions/fix-storage-blob
  • 38d4c79 chore: rebuild dist
  • 7d27270 chore: add missing license cache files for @​actions/core, @​actions/io, and mi...
  • 5f643d3 chore: update license files for @​actions/artifact@​5.0.1 dependencies
  • 1df1684 chore: update package-lock.json with @​actions/artifact@​5.0.1
  • b5b1a91 fix: update @​actions/artifact to ^5.0.0 for Node.js 24 punycode fix
  • Additional commits viewable in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/upload-artifact&package-manager=github_actions&previous-version=5&new-version=6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 941885234a..9e34309dd9 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -94,7 +94,7 @@ jobs: sphinx-build -j auto -W --keep-going -b html -d cpython/Doc/_build/doctree -D language=es . cpython/Doc/_build/html # Publica la documentación recién construida para poder descargarla de ser necesario - - uses: actions/upload-artifact@v5 + - uses: actions/upload-artifact@v6 with: path: cpython/Doc/_build/html name: documentación-html