diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 18016efc2c..9e34309dd9 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 @@ -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@v6 + with: + path: cpython/Doc/_build/html + name: documentación-html 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 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/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) 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" 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)" 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" diff --git a/conf.py b/conf.py index 9a9557ae0c..59aacc661f 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' @@ -92,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/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" 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