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/.overrides/upgrade-python-version.rst b/.overrides/upgrade-python-version.rst index 3234c29920..553b6ea5d3 100644 --- a/.overrides/upgrade-python-version.rst +++ b/.overrides/upgrade-python-version.rst @@ -1,27 +1,27 @@ :orphan: -How to update to a new Python version -===================================== +How to upgrade to a new Python version +====================================== -We are currently in branch 3.12, and we want to update the strings from 3.13. +We are currently in branch 3.13, and we want to update the strings from 3.14. -#. Make sure you are in a clean state of the branch 3.12 +#. Make sure you are in a clean state of the branch 3.13 -#. Create a new branch called ``3.13`` +#. Create a new branch called ``3.14`` #. Initialize the submodules:: git submodule init git submodule update -#. Fetch the `latest release tag of 3.12 `_:: +#. Fetch the `latest release tag of 3.14 `_:: cd cpython/ - git fetch --depth 1 origin tags/v3.13.0 + git fetch --depth 1 origin refs/tags/v3.14.0:refs/tags/v3.14.0 #. Checkout that commit locally:: - git checkout tags/v3.13.0 -b 3.13.0 + git checkout tags/v3.14.0 -b 3.14.0 #. Update the branch on the ``Makefile`` @@ -71,13 +71,13 @@ We are currently in branch 3.12, and we want to update the strings from 3.13. in the next step. It's included here because it might be a leftover from previous attempts on your machine. -#. Create the .po files from the new source code. This will generate all the .po files for version 3.11:: +#. Create the .po files from the new source code. This will generate all the .po files for version 3.14:: SPHINX_GETTEXT=True sphinx-build -j auto -b gettext -d _build/doctrees . cpython/python-docs-es-pot .. note:: - In ``cpython/python-docs-es-pot`` directory, we will have the new .pot files with new strings from 3.13 branch. + In ``cpython/python-docs-es-pot`` directory, we will have the new .pot files with new strings from 3.14 branch. All these strings will be *untranslated* at this point. #. Now, we update our translated files form the source language (English) with new strings:: @@ -104,14 +104,14 @@ We are currently in branch 3.12, and we want to update the strings from 3.13. **Once the process is completely and you are happy with the results, there are a few extra steps to finish the process** -#. Upgrade GitHub Actions to use Python 3.13, by updating Python version to 3.13 in the ``.github/workflows/main.yml`` file. +#. Upgrade GitHub Actions to use Python 3.14, by updating Python version to 3.14 in the ``.github/workflows/main.yml`` file. -#. Update the *Read the Docs* project to use 3.13 in the build and also as default branch/version. +#. Update the *Read the Docs* project to use 3.14 in the build and also as default branch/version. #. Commit all the newly created files locally. -#. Create branch 3.13 in the repository in order to merge changes there. +#. Create branch 3.14 in the repository in order to merge changes there. -#. Inside the github project settings, set 3.13 branch as the default branch for the repository. +#. Inside the github project settings, set 3.14 branch as the default branch for the repository. #. Create GitHub issues with [the script](../scripts/create_issue.py) 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/import.po b/c-api/import.po index ffe25df208..85c5000025 100644 --- a/c-api/import.po +++ b/c-api/import.po @@ -12,7 +12,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" "PO-Revision-Date: 2022-10-28 17:44+0200\n" -"Last-Translator: Santiago Puerta \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" @@ -27,9 +27,11 @@ msgstr "Importando módulos" #: ../Doc/c-api/import.rst:16 msgid "" -"This is a wrapper around :c:func:`PyImport_Import()` which takes a :c:expr:" -"`const char *` as an argument instead of a :c:expr:`PyObject *`." +"This is a wrapper around :c:func:`PyImport_Import()` which takes " +"a :c:expr:`const char *` as an argument instead of a :c:expr:`PyObject *`." msgstr "" +"Esta es una envoltura alrededor de :c:func:`PyImport_Import()` que toma " +"un :c:expr:`const char *` como argumento en lugar de un :c:expr:`PyObject *`." #: ../Doc/c-api/import.rst:21 msgid "This function is a deprecated alias of :c:func:`PyImport_ImportModule`." @@ -48,35 +50,35 @@ msgstr "" "lo que el comportamiento especial de esta función ya no es necesario." #: ../Doc/c-api/import.rst:29 -#, fuzzy msgid "Use :c:func:`PyImport_ImportModule` instead." -msgstr "Ver también :c:func:`PyImport_ExecCodeModuleWithPathnames`." +msgstr "Usa :c:func:`PyImport_ImportModule` en su lugar." #: ../Doc/c-api/import.rst:37 msgid "" "Import a module. This is best described by referring to the built-in Python " "function :func:`__import__`." msgstr "" -"Importa un módulo. Esto se describe mejor haciendo referencia a la función " -"Python incorporada :func:`__import__`." +"Importa un módulo. Esto se describe mejor refiriéndose a la función " +"incorporada de Python :func:`__import__`." #: ../Doc/c-api/import.rst:40 ../Doc/c-api/import.rst:56 msgid "" "The return value is a new reference to the imported module or top-level " -"package, or ``NULL`` with an exception set on failure. Like for :func:" -"`__import__`, the return value when a submodule of a package was requested " -"is normally the top-level package, unless a non-empty *fromlist* was given." +"package, or ``NULL`` with an exception set on failure. Like " +"for :func:`__import__`, the return value when a submodule of a package was " +"requested is normally the top-level package, unless a non-empty *fromlist* " +"was given." msgstr "" "El valor de retorno es una nueva referencia al módulo importado o paquete de " "nivel superior, o ``NULL`` con una excepción establecida en caso de error. " -"Al igual que para :func:`__import__`, el valor de retorno cuando se solicitó " -"un submódulo de un paquete normalmente es el paquete de nivel superior, a " -"menos que se proporcione un *fromlist* no vacío." +"Como para :func:`__import__`, el valor de retorno cuando se solicita un " +"submódulo de un paquete es normalmente el paquete de nivel superior, a menos " +"que se proporcione una *fromlist* no vacía." #: ../Doc/c-api/import.rst:46 msgid "" -"Failing imports remove incomplete module objects, like with :c:func:" -"`PyImport_ImportModule`." +"Failing imports remove incomplete module objects, like " +"with :c:func:`PyImport_ImportModule`." msgstr "" "Las importaciones que fallan eliminan objetos de módulo incompletos, como " "con :c:func:`PyImport_ImportModule`." @@ -88,8 +90,8 @@ msgid "" "calls this function directly." msgstr "" "Importa un módulo. Esto se describe mejor haciendo referencia a la función " -"Python incorporada :func:`__import__`, ya que la función estándar :func:" -"`__import__` llama a esta función directamente." +"Python incorporada :func:`__import__`, ya que la función " +"estándar :func:`__import__` llama a esta función directamente." #: ../Doc/c-api/import.rst:66 msgid "" @@ -133,123 +135,116 @@ msgstr "" #: ../Doc/c-api/import.rst:91 msgid "Return the module object corresponding to a module name." -msgstr "" +msgstr "Retorna el objeto módulo correspondiente a un nombre de módulo." #: ../Doc/c-api/import.rst:93 -#, fuzzy msgid "" "The *name* argument may be of the form ``package.module``. First check the " "modules dictionary if there's one there, and if not, create a new one and " "insert it in the modules dictionary." msgstr "" -"Retorna el objeto módulo correspondiente a un nombre de módulo. El argumento " -"*name* puede tener la forma ``package.module``. Primero revise el " -"diccionario de módulos si hay uno allí, y si no, crea uno nuevo y lo agrega " -"al diccionario de módulos. Retorna ``NULL`` con una excepción establecida en " -"caso de error." +"El argumento *name* puede tener la forma ``package.module``. Primero " +"verifica el diccionario de módulos si hay uno allí, y si no, crea uno nuevo " +"y lo inserta en el diccionario de módulos." #: ../Doc/c-api/import.rst:97 -#, fuzzy msgid "" "Return a :term:`strong reference` to the module on success. Return ``NULL`` " "with an exception set on failure." msgstr "" -"Recarga un módulo. Retorna una nueva referencia al módulo recargado, o " -"``NULL`` con una excepción establecida en caso de error (el módulo todavía " -"existe en este caso)." +"Retorna una :term:`referencia fuerte` al módulo en caso de éxito. Retorna " +"``NULL`` con una excepción establecida en caso de error." #: ../Doc/c-api/import.rst:100 msgid "The module name *name* is decoded from UTF-8." -msgstr "" +msgstr "El nombre del módulo *name* se decodifica desde UTF-8." #: ../Doc/c-api/import.rst:102 -#, fuzzy msgid "" "This function does not load or import the module; if the module wasn't " -"already loaded, you will get an empty module object. Use :c:func:" -"`PyImport_ImportModule` or one of its variants to import a module. Package " -"structures implied by a dotted name for *name* are not created if not " -"already present." +"already loaded, you will get an empty module object. " +"Use :c:func:`PyImport_ImportModule` or one of its variants to import a " +"module. Package structures implied by a dotted name for *name* are not " +"created if not already present." msgstr "" "Esta función no carga ni importa el módulo; si el módulo no estaba cargado, " -"obtendrá un objeto de módulo vacío. Utilice :c:func:`PyImport_ImportModule` " +"obtendrás un objeto de módulo vacío. Utiliza :c:func:`PyImport_ImportModule` " "o una de sus variantes para importar un módulo. Las estructuras de paquete " "implicadas por un nombre punteado para *name* no se crean si aún no están " "presentes." #: ../Doc/c-api/import.rst:113 -#, fuzzy msgid "" "Similar to :c:func:`PyImport_AddModuleRef`, but return a :term:`borrowed " "reference` and *name* is a Python :class:`str` object." msgstr "" -"Similar a :c:func:`PyImport_AddModuleObject`, pero el nombre es una cadena " -"de caracteres codificada UTF-8 en lugar de un objeto Unicode." +"Similar a :c:func:`PyImport_AddModuleRef`, pero retorna " +"una :term:`referencia prestada` y *name* es un objeto Python :class:`str`." #: ../Doc/c-api/import.rst:121 msgid "" "Similar to :c:func:`PyImport_AddModuleRef`, but return a :term:`borrowed " "reference`." msgstr "" +"Similar a :c:func:`PyImport_AddModuleRef`, pero retorna " +"una :term:`referencia prestada`." #: ../Doc/c-api/import.rst:129 -#, fuzzy msgid "" "Given a module name (possibly of the form ``package.module``) and a code " "object read from a Python bytecode file or obtained from the built-in " "function :func:`compile`, load the module. Return a new reference to the " "module object, or ``NULL`` with an exception set if an error occurred. " "*name* is removed from :data:`sys.modules` in error cases, even if *name* " -"was already in :data:`sys.modules` on entry to :c:func:" -"`PyImport_ExecCodeModule`. Leaving incompletely initialized modules in :" -"data:`sys.modules` is dangerous, as imports of such modules have no way to " -"know that the module object is an unknown (and probably damaged with respect " -"to the module author's intents) state." +"was already in :data:`sys.modules` on entry " +"to :c:func:`PyImport_ExecCodeModule`. Leaving incompletely initialized " +"modules in :data:`sys.modules` is dangerous, as imports of such modules have " +"no way to know that the module object is an unknown (and probably damaged " +"with respect to the module author's intents) state." msgstr "" "Dado un nombre de módulo (posiblemente de la forma ``package.module``) y un " "objeto código leído desde un archivo de *bytecode* de Python u obtenido de " "la función incorporada :func:`compile`, carga el módulo. Retorna una nueva " "referencia al objeto módulo, o ``NULL`` con una excepción establecida si se " -"produjo un error. *name* se elimina de :attr:`sys.modules` en casos de " -"error, incluso si *name* ya estaba en :attr:`sys.modules` en la entrada a :c:" -"func:`PyImport_ExecCodeModule`. Dejar módulos inicializados de forma " -"incompleta en :attr:`sys.modules` es peligroso, ya que las importaciones de " +"produjo un error. *name* se elimina de :data:`sys.modules` en casos de " +"error, incluso si *name* ya estaba en :data:`sys.modules` en la entrada " +"a :c:func:`PyImport_ExecCodeModule`. Dejar módulos inicializados de forma " +"incompleta en :data:`sys.modules` es peligroso, ya que las importaciones de " "dichos módulos no tienen forma de saber que el objeto del módulo es un " "estado desconocido (y probablemente dañado con respecto a las intenciones " "del autor del módulo)." #: ../Doc/c-api/import.rst:139 -#, fuzzy msgid "" "The module's :attr:`__spec__` and :attr:`__loader__` will be set, if not set " "already, with the appropriate values. The spec's loader will be set to the " -"module's ``__loader__`` (if set) and to an instance of :class:`~importlib." -"machinery.SourceFileLoader` otherwise." +"module's ``__loader__`` (if set) and to an instance " +"of :class:`~importlib.machinery.SourceFileLoader` otherwise." msgstr "" -"Los módulos :attr:`__spec__` y :attr:`__loader__` se establecerán, si no se " -"han configurado ya, con los valores apropiados. El cargador de la " -"especificación se establecerá en el módulo ``__loader__`` (si está " -"configurado) y en una instancia de :class:`SourceFileLoader` de lo contrario." +"Los :attr:`__spec__` y :attr:`__loader__` del módulo se establecerán, si no " +"se han configurado ya, con los valores apropiados. El cargador de la " +"especificación se establecerá en el ``__loader__`` del módulo (si está " +"configurado) y en una instancia " +"de :class:`~importlib.machinery.SourceFileLoader` de lo contrario." #: ../Doc/c-api/import.rst:144 -#, fuzzy msgid "" -"The module's :attr:`__file__` attribute will be set to the code object's :" -"attr:`~codeobject.co_filename`. If applicable, :attr:`__cached__` will also " -"be set." +"The module's :attr:`__file__` attribute will be set to the code " +"object's :attr:`~codeobject.co_filename`. If applicable, :attr:`__cached__` " +"will also be set." msgstr "" -"El atributo del módulo :attr:`__file__` se establecerá en el objeto código :" -"c:member:`co_filename`. Si corresponde, también se establecerá :attr:" -"`__cached__`." +"El atributo :attr:`__file__` del módulo se establecerá " +"al :attr:`~codeobject.co_filename` del objeto código. Si corresponde, " +"también se establecerá :attr:`__cached__`." #: ../Doc/c-api/import.rst:148 msgid "" -"This function will reload the module if it was already imported. See :c:" -"func:`PyImport_ReloadModule` for the intended way to reload a module." +"This function will reload the module if it was already imported. " +"See :c:func:`PyImport_ReloadModule` for the intended way to reload a module." msgstr "" -"Esta función volverá a cargar el módulo si ya se importó. Consulte :c:func:" -"`PyImport_ReloadModule` para conocer la forma prevista de volver a cargar un " -"módulo." +"Esta función volverá a cargar el módulo si ya se importó. " +"Consulte :c:func:`PyImport_ReloadModule` para conocer la forma prevista de " +"volver a cargar un módulo." #: ../Doc/c-api/import.rst:151 msgid "" @@ -261,17 +256,19 @@ msgstr "" #: ../Doc/c-api/import.rst:154 msgid "" -"See also :c:func:`PyImport_ExecCodeModuleEx` and :c:func:" -"`PyImport_ExecCodeModuleWithPathnames`." +"See also :c:func:`PyImport_ExecCodeModuleEx` " +"and :c:func:`PyImport_ExecCodeModuleWithPathnames`." msgstr "" -"Ver también :c:func:`PyImport_ExecCodeModuleEx` y :c:func:" -"`PyImport_ExecCodeModuleWithPathnames`." +"Ver también :c:func:`PyImport_ExecCodeModuleEx` " +"y :c:func:`PyImport_ExecCodeModuleWithPathnames`." #: ../Doc/c-api/import.rst:157 msgid "" -"The setting of :attr:`__cached__` and :attr:`__loader__` is deprecated. See :" -"class:`~importlib.machinery.ModuleSpec` for alternatives." +"The setting of :attr:`__cached__` and :attr:`__loader__` is deprecated. " +"See :class:`~importlib.machinery.ModuleSpec` for alternatives." msgstr "" +"El establecimiento de :attr:`__cached__` y :attr:`__loader__` está obsoleto. " +"Ver :class:`~importlib.machinery.ModuleSpec` para alternativas." #: ../Doc/c-api/import.rst:165 msgid "" @@ -291,15 +288,17 @@ msgid "" "attribute of the module object is set to *cpathname* if it is non-``NULL``. " "Of the three functions, this is the preferred one to use." msgstr "" -"Como :c:func:`PyImport_ExecCodeModuleEx`, pero el atributo :attr:" -"`__cached__` del objeto módulo se establece en *cpathname* si no es " -"``NULL``. De las tres funciones, esta es la recomendada para usar." +"Como :c:func:`PyImport_ExecCodeModuleEx`, pero el " +"atributo :attr:`__cached__` del objeto módulo se establece en *cpathname* si " +"no es ``NULL``. De las tres funciones, esta es la recomendada para usar." #: ../Doc/c-api/import.rst:179 msgid "" -"Setting :attr:`__cached__` is deprecated. See :class:`~importlib.machinery." -"ModuleSpec` for alternatives." +"Setting :attr:`__cached__` is deprecated. " +"See :class:`~importlib.machinery.ModuleSpec` for alternatives." msgstr "" +"El establecimiento de :attr:`__cached__` está obsoleto. " +"Ver :class:`~importlib.machinery.ModuleSpec` para alternativas." #: ../Doc/c-api/import.rst:186 msgid "" @@ -309,22 +308,21 @@ msgid "" "set to ``NULL``." msgstr "" "Como :c:func:`PyImport_ExecCodeModuleObject`, pero *name*, *pathname* y " -"*cpathname* son cadenas de caracteres codificadas UTF-8. También se intenta " -"averiguar cuál debe ser el valor de *pathname* de *cpathname* si el primero " -"se establece en ``NULL``." +"*cpathname* son cadenas codificadas UTF-8. También se hacen intentos de " +"averiguar cuál debería ser el valor para *pathname* desde *cpathname* si el " +"primero se establece en ``NULL``." #: ../Doc/c-api/import.rst:192 -#, fuzzy msgid "" "Uses :func:`!imp.source_from_cache` in calculating the source path if only " "the bytecode path is provided." msgstr "" -"Utiliza :func:`imp.source_from_cache()` para calcular la ruta de origen si " +"Utiliza :func:`!imp.source_from_cache` para calcular la ruta de origen si " "solo se proporciona la ruta del *bytecode*." #: ../Doc/c-api/import.rst:195 msgid "No longer uses the removed :mod:`!imp` module." -msgstr "" +msgstr "Ya no usa el módulo :mod:`!imp` eliminado." #: ../Doc/c-api/import.rst:201 msgid "" @@ -332,10 +330,10 @@ msgid "" "file). The magic number should be present in the first four bytes of the " "bytecode file, in little-endian byte order. Returns ``-1`` on error." msgstr "" -"Retorna el número mágico para los archivos de *bytecode* de Python (también " -"conocido como archivos :file:`.pyc`). El número mágico debe estar presente " -"en los primeros cuatro bytes del archivo de código de bytes, en orden de " -"bytes *little-endian*. Retorna ``-1`` en caso de error." +"Retorna el número mágico para archivos de bytecode de Python (también " +"conocidos como archivos :file:`.pyc`). El número mágico debería estar " +"presente en los primeros cuatro bytes del archivo bytecode, en orden de " +"bytes little-endian. Retorna ``-1`` en caso de error." #: ../Doc/c-api/import.rst:205 msgid "Return value of ``-1`` upon failure." @@ -354,8 +352,8 @@ msgstr "" #: ../Doc/c-api/import.rst:219 msgid "" -"Return the dictionary used for the module administration (a.k.a. ``sys." -"modules``). Note that this is a per-interpreter variable." +"Return the dictionary used for the module administration (a.k.a. " +"``sys.modules``). Note that this is a per-interpreter variable." msgstr "" "Retorna el diccionario utilizado para la administración del módulo (también " "conocido como ``sys.modules``). Tenga en cuenta que esta es una variable por " @@ -372,33 +370,33 @@ msgstr "" "establece un error si falla la búsqueda." #: ../Doc/c-api/import.rst:232 -#, fuzzy msgid "" "Return a finder object for a :data:`sys.path`/:attr:`!pkg.__path__` item " "*path*, possibly by fetching it from the :data:`sys.path_importer_cache` " "dict. If it wasn't yet cached, traverse :data:`sys.path_hooks` until a hook " "is found that can handle the path item. Return ``None`` if no hook could; " "this tells our caller that the :term:`path based finder` could not find a " -"finder for this path item. Cache the result in :data:`sys." -"path_importer_cache`. Return a new reference to the finder object." -msgstr "" -"Retorna un objeto buscador para un elemento *path* :data:`sys.path`/:attr:" -"`pkg.__path__`, posiblemente obteniéndolo del diccionario :data:`sys." -"path_importer_cache`. Si aún no estaba en caché, atraviesa :data:`sys." -"path_hooks` hasta que se encuentre un gancho (*hook*) que pueda manejar el " -"elemento de ruta. Retorna ``None`` si ningún gancho podría; esto le dice a " -"la persona que llama que :term:`path based finder` no pudo encontrar un " -"buscador para este elemento de ruta. Guarda en el resultado (caché) en :data:" -"`sys.path_importer_cache`. Retorna una nueva referencia al objeto del " -"buscador." +"finder for this path item. Cache the result " +"in :data:`sys.path_importer_cache`. Return a new reference to the finder " +"object." +msgstr "" +"Retorna un objeto buscador para un elemento *path* :data:`sys.path`/:attr:`!" +"pkg.__path__`, posiblemente obteniéndolo del " +"diccionario :data:`sys.path_importer_cache`. Si aún no estaba en caché, " +"atraviesa :data:`sys.path_hooks` hasta que se encuentre un gancho (*hook*) " +"que pueda manejar el elemento de ruta. Retorna ``None`` si ningún gancho " +"(*hook*) podría; esto le dice a la persona que llama que :term:`path based " +"finder` no pudo encontrar un buscador para este elemento de ruta. Guarda en " +"el resultado (caché) en :data:`sys.path_importer_cache`. Retorna una nueva " +"referencia al objeto del buscador." #: ../Doc/c-api/import.rst:243 msgid "" "Load a frozen module named *name*. Return ``1`` for success, ``0`` if the " "module is not found, and ``-1`` with an exception set if the initialization " -"failed. To access the imported module on a successful load, use :c:func:" -"`PyImport_ImportModule`. (Note the misnomer --- this function would reload " -"the module if it was already imported.)" +"failed. To access the imported module on a successful load, " +"use :c:func:`PyImport_ImportModule`. (Note the misnomer --- this function " +"would reload the module if it was already imported.)" msgstr "" "Carga un módulo congelado llamado *name*. Retorna ``1`` para el éxito, ``0`` " "si no se encuentra el módulo y ``-1`` con una excepción establecida si falla " @@ -422,8 +420,8 @@ msgstr "" msgid "" "This is the structure type definition for frozen module descriptors, as " "generated by the :program:`freeze` utility (see :file:`Tools/freeze/` in the " -"Python source distribution). Its definition, found in :file:`Include/import." -"h`, is::" +"Python source distribution). Its definition, found in :file:`Include/" +"import.h`, is::" msgstr "" "Esta es la definición del tipo de estructura para los descriptores de " "módulos congelados, según lo generado con la herramienta :program:`freeze` " @@ -439,6 +437,12 @@ msgid "" " bool is_package;\n" "};" msgstr "" +"struct _frozen {\n" +" const char *name;\n" +" const unsigned char *code;\n" +" int size;\n" +" bool is_package;\n" +"};" #: ../Doc/c-api/import.rst:277 msgid "" @@ -456,11 +460,11 @@ msgid "" "could play tricks with this to provide a dynamically created collection of " "frozen modules." msgstr "" -"Este puntero se inicializa para apuntar a un arreglo de registros :c:struct:" -"`_frozen`, terminado por uno cuyos registros son todos ``NULL`` o cero. " -"Cuando se importa un módulo congelado, se busca en esta tabla. El código de " -"terceros podría jugar con esto para proporcionar una colección de módulos " -"congelados creada dinámicamente." +"Este puntero se inicializa para apuntar a un arreglo de " +"registros :c:struct:`_frozen`, terminado por uno cuyos registros son todos " +"``NULL`` o cero. Cuando se importa un módulo congelado, se busca en esta " +"tabla. El código de terceros podría jugar con esto para proporcionar una " +"colección de módulos congelados creada dinámicamente." #: ../Doc/c-api/import.rst:291 msgid "" @@ -479,7 +483,6 @@ msgstr "" "llamarse antes de :c:func:`Py_Initialize`." #: ../Doc/c-api/import.rst:301 -#, fuzzy msgid "" "Structure describing a single entry in the list of built-in modules. " "Programs which embed Python may use an array of these structures in " @@ -490,28 +493,27 @@ msgstr "" "incorporados. Cada una de estas estructuras proporciona el nombre y la " "función de inicialización de un módulo incorporado en el intérprete. El " "nombre es una cadena de caracteres codificada ASCII. Los programas que " -"incorporan Python pueden usar una matriz de estas estructuras junto con :c:" -"func:`PyImport_ExtendInittab` para proporcionar módulos integrados " +"incorporan Python pueden usar una matriz de estas estructuras junto " +"con :c:func:`PyImport_ExtendInittab` para proporcionar módulos integrados " "adicionales. La estructura se define en :file:`Include/import.h` como::" #: ../Doc/c-api/import.rst:309 msgid "The module name, as an ASCII encoded string." -msgstr "" +msgstr "El nombre del módulo, como una cadena codificada ASCII." #: ../Doc/c-api/import.rst:313 msgid "Initialization function for a module built into the interpreter." -msgstr "" +msgstr "Función de inicialización para un módulo incorporado en el intérprete." #: ../Doc/c-api/import.rst:318 -#, fuzzy msgid "" "Add a collection of modules to the table of built-in modules. The *newtab* " -"array must end with a sentinel entry which contains ``NULL`` for the :c:" -"member:`~_inittab.name` field; failure to provide the sentinel value can " -"result in a memory fault. Returns ``0`` on success or ``-1`` if insufficient " -"memory could be allocated to extend the internal table. In the event of " -"failure, no modules are added to the internal table. This must be called " -"before :c:func:`Py_Initialize`." +"array must end with a sentinel entry which contains ``NULL`` for " +"the :c:member:`~_inittab.name` field; failure to provide the sentinel value " +"can result in a memory fault. Returns ``0`` on success or ``-1`` if " +"insufficient memory could be allocated to extend the internal table. In the " +"event of failure, no modules are added to the internal table. This must be " +"called before :c:func:`Py_Initialize`." msgstr "" "Agrega una colección de módulos a la tabla de módulos integrados. El arreglo " "*newtab* debe terminar con una entrada centinela que contiene ``NULL`` para " @@ -527,39 +529,38 @@ msgid "" "or :c:func:`PyImport_ExtendInittab` must be called before each Python " "initialization." msgstr "" -"Si Python es inicializado múltiples veces, se debe llamar :c:func:" -"`PyImport_AppendInittab` o :c:func:`PyImport_ExtendInittab` antes de cada " -"inicialización de Python." +"Si Python es inicializado múltiples veces, se debe " +"llamar :c:func:`PyImport_AppendInittab` o :c:func:`PyImport_ExtendInittab` " +"antes de cada inicialización de Python." #: ../Doc/c-api/import.rst:11 msgid "package variable" -msgstr "" +msgstr "variable de paquete" #: ../Doc/c-api/import.rst:11 msgid "__all__" -msgstr "" +msgstr "__all__" #: ../Doc/c-api/import.rst:11 msgid "__all__ (package variable)" -msgstr "" +msgstr "__all__ (variable de paquete)" #: ../Doc/c-api/import.rst:11 -#, fuzzy msgid "modules (in module sys)" -msgstr "Importando módulos" +msgstr "modules (en el módulo sys)" #: ../Doc/c-api/import.rst:35 ../Doc/c-api/import.rst:127 msgid "built-in function" -msgstr "" +msgstr "función incorporada" #: ../Doc/c-api/import.rst:35 msgid "__import__" -msgstr "" +msgstr "__import__" #: ../Doc/c-api/import.rst:127 msgid "compile" -msgstr "" +msgstr "compile" #: ../Doc/c-api/import.rst:263 msgid "freeze utility" -msgstr "" +msgstr "utilidad freeze" diff --git a/c-api/init_config.po b/c-api/init_config.po index a55e00040d..3ac022b9ed 100644 --- a/c-api/init_config.po +++ b/c-api/init_config.po @@ -9,15 +9,16 @@ msgstr "" "Project-Id-Version: Python en Español 3.7\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: 2022-10-31 20:56-0300\n" -"Last-Translator: Cristián Maureira-Fredes \n" -"Language: es\n" +"PO-Revision-Date: 2026-02-13 23:38-0300\n" +"Last-Translator: Carlos A. Crespo \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.0.1\n" #: ../Doc/c-api/init_config.rst:7 msgid "Python Initialization Configuration" @@ -25,58 +26,45 @@ msgstr "Configuración de inicialización de Python" #: ../Doc/c-api/init_config.rst:11 msgid "" -"Python can be initialized with :c:func:`Py_InitializeFromConfig` and the :c:" -"type:`PyConfig` structure. It can be preinitialized with :c:func:" -"`Py_PreInitialize` and the :c:type:`PyPreConfig` structure." +"Python can be initialized with :c:func:`Py_InitializeFromConfig` and the :c:type:`PyConfig` " +"structure. It can be preinitialized with :c:func:`Py_PreInitialize` and the :c:type:`PyPreConfig` " +"structure." msgstr "" -"Python se puede inicializar con :c:func:`Py_InitializeFromConfig` y la " -"estructura :c:type:`PyConfig`. Se puede preinicializar con :c:func:" -"`Py_PreInitialize` y la estructura :c:type:`PyPreConfig`." +"Python se puede inicializar con :c:func:`Py_InitializeFromConfig` y la estructura :c:type:`PyConfig`. " +"Se puede preinicializar con :c:func:`Py_PreInitialize` y la estructura :c:type:`PyPreConfig`." #: ../Doc/c-api/init_config.rst:15 msgid "There are two kinds of configuration:" msgstr "Hay dos tipos de configuración:" #: ../Doc/c-api/init_config.rst:17 -#, fuzzy msgid "" -"The :ref:`Python Configuration ` can be used to build a " -"customized Python which behaves as the regular Python. For example, " -"environment variables and command line arguments are used to configure " -"Python." +"The :ref:`Python Configuration ` can be used to build a customized Python which " +"behaves as the regular Python. For example, environment variables and command line arguments are used " +"to configure Python." msgstr "" -"La :ref:`Configuración de Python ` se puede utilizar " -"para crear un Python personalizado que se comporte como el Python normal. " -"Por ejemplo, las variables de entorno y los argumentos de la línea de " -"comandos se utilizan para configurar Python." +"La :ref:`Configuración de Python ` se puede utilizar para crear un Python " +"personalizado que se comporte como el Python normal. Por ejemplo, las variables de entorno y los " +"argumentos de la línea de comandos se utilizan para configurar Python." #: ../Doc/c-api/init_config.rst:22 -#, fuzzy msgid "" -"The :ref:`Isolated Configuration ` can be used to embed " -"Python into an application. It isolates Python from the system. For example, " -"environment variables are ignored, the LC_CTYPE locale is left unchanged and " -"no signal handler is registered." +"The :ref:`Isolated Configuration ` can be used to embed Python into an " +"application. It isolates Python from the system. For example, environment variables are ignored, the " +"LC_CTYPE locale is left unchanged and no signal handler is registered." msgstr "" -"La :ref:`Configuración Aislada ` se puede utilizar para " -"incrustar Python en una aplicación. Aísla a Python del sistema. Por ejemplo, " -"las variables de entorno se ignoran, la configuración regional LC_CTYPE se " -"deja sin cambios y no se registra ningún manejador de señales." +"La :ref:`Configuración Aislada ` se puede utilizar para incrustar Python en una " +"aplicación. Aísla a Python del sistema. Por ejemplo, las variables de entorno se ignoran, la " +"configuración regional LC_CTYPE se deja sin cambios y no se registra ningún manejador de señales." #: ../Doc/c-api/init_config.rst:27 -msgid "" -"The :c:func:`Py_RunMain` function can be used to write a customized Python " -"program." +msgid "The :c:func:`Py_RunMain` function can be used to write a customized Python program." msgstr "" -"La función :c:func:`Py_RunMain` se puede utilizar para escribir un programa " -"Python personalizado." +"La función :c:func:`Py_RunMain` se puede utilizar para escribir un programa Python personalizado." #: ../Doc/c-api/init_config.rst:30 -msgid "" -"See also :ref:`Initialization, Finalization, and Threads `." -msgstr "" -"Consulte también :ref:`Inicialización, finalización y subprocesos " -"`." +msgid "See also :ref:`Initialization, Finalization, and Threads `." +msgstr "Consulte también :ref:`Inicialización, finalización y subprocesos `." #: ../Doc/c-api/init_config.rst:33 msgid ":pep:`587` \"Python Initialization Configuration\"." @@ -88,8 +76,7 @@ msgstr "Ejemplo" #: ../Doc/c-api/init_config.rst:39 msgid "Example of customized Python always running in isolated mode::" -msgstr "" -"Ejemplo de Python personalizado que siempre se ejecuta en modo aislado::" +msgstr "Ejemplo de Python personalizado que siempre se ejecuta en modo aislado::" #: ../Doc/c-api/init_config.rst:41 msgid "" @@ -126,6 +113,38 @@ msgid "" " Py_ExitStatusException(status);\n" "}" msgstr "" +"int main(int argc, char **argv)\n" +"{\n" +" PyStatus status;\n" +"\n" +" PyConfig config;\n" +" PyConfig_InitPythonConfig(&config);\n" +" config.isolated = 1;\n" +"\n" +" /* Decode command line arguments.\n" +" Implicitly preinitialize Python (in isolated mode). */\n" +" status = PyConfig_SetBytesArgv(&config, argc, argv);\n" +" if (PyStatus_Exception(status)) {\n" +" goto exception;\n" +" }\n" +"\n" +" status = Py_InitializeFromConfig(&config);\n" +" if (PyStatus_Exception(status)) {\n" +" goto exception;\n" +" }\n" +" PyConfig_Clear(&config);\n" +"\n" +" return Py_RunMain();\n" +"\n" +"exception:\n" +" PyConfig_Clear(&config);\n" +" if (PyStatus_IsExit(status)) {\n" +" return status.exitcode;\n" +" }\n" +" /* Display the error message and exit the process with\n" +" non-zero exit code */\n" +" Py_ExitStatusException(status);\n" +"}" #: ../Doc/c-api/init_config.rst:76 msgid "PyWideStringList" @@ -136,12 +155,10 @@ msgid "List of ``wchar_t*`` strings." msgstr "Lista de cadenas de caracteres ``wchar_t*``." #: ../Doc/c-api/init_config.rst:82 -msgid "" -"If *length* is non-zero, *items* must be non-``NULL`` and all strings must " -"be non-``NULL``." +msgid "If *length* is non-zero, *items* must be non-``NULL`` and all strings must be non-``NULL``." msgstr "" -"Si *length* no es cero, *items* no deben ser ``NULL`` y todas las cadenas de " -"caracteres deben ser no ``NULL``." +"Si *length* no es cero, *items* no deben ser ``NULL`` y todas las cadenas de caracteres deben ser no " +"``NULL``." #: ../Doc/c-api/init_config.rst:87 msgid "Methods:" @@ -160,19 +177,15 @@ msgid "Insert *item* into *list* at *index*." msgstr "Inserta *item* en *list* en *index*." #: ../Doc/c-api/init_config.rst:99 -msgid "" -"If *index* is greater than or equal to *list* length, append *item* to " -"*list*." -msgstr "" -"Si *index* es mayor o igual que el largo de *list*, agrega *item* a *list*." +msgid "If *index* is greater than or equal to *list* length, append *item* to *list*." +msgstr "Si *index* es mayor o igual que el largo de *list*, agrega *item* a *list*." #: ../Doc/c-api/init_config.rst:102 -#, fuzzy msgid "*index* must be greater than or equal to ``0``." -msgstr "*index* debe ser mayor o igual que 0." +msgstr "*index* debe ser mayor o igual que ``0``." -#: ../Doc/c-api/init_config.rst:108 ../Doc/c-api/init_config.rst:128 -#: ../Doc/c-api/init_config.rst:235 ../Doc/c-api/init_config.rst:554 +#: ../Doc/c-api/init_config.rst:108 ../Doc/c-api/init_config.rst:128 ../Doc/c-api/init_config.rst:235 +#: ../Doc/c-api/init_config.rst:554 msgid "Structure fields:" msgstr "Campos de estructura:" @@ -189,16 +202,12 @@ msgid "PyStatus" msgstr "PyStatus" #: ../Doc/c-api/init_config.rst:123 -msgid "" -"Structure to store an initialization function status: success, error or exit." -msgstr "" -"Estructura para almacenar el estado de una función de inicialización: éxito, " -"error o salida." +msgid "Structure to store an initialization function status: success, error or exit." +msgstr "Estructura para almacenar el estado de una función de inicialización: éxito, error o salida." #: ../Doc/c-api/init_config.rst:126 msgid "For an error, it can store the C function name which created the error." -msgstr "" -"Para un error, puede almacenar el nombre de la función C que creó el error." +msgstr "Para un error, puede almacenar el nombre de la función C que creó el error." #: ../Doc/c-api/init_config.rst:132 msgid "Exit code. Argument passed to ``exit()``." @@ -242,11 +251,11 @@ msgstr "Funciones para manejar un estado:" #: ../Doc/c-api/init_config.rst:168 msgid "" -"Is the status an error or an exit? If true, the exception must be handled; " -"by calling :c:func:`Py_ExitStatusException` for example." +"Is the status an error or an exit? If true, the exception must be handled; by calling :c:func:" +"`Py_ExitStatusException` for example." msgstr "" -"¿Es el estado un error o una salida? Si es verdadero, la excepción debe ser " -"manejada; por ejemplo llamando a :c:func:`Py_ExitStatusException`." +"¿Es el estado un error o una salida? Si es verdadero, la excepción debe ser manejada; por ejemplo " +"llamando a :c:func:`Py_ExitStatusException`." #: ../Doc/c-api/init_config.rst:173 msgid "Is the result an error?" @@ -258,21 +267,20 @@ msgstr "¿El resultado es una salida?" #: ../Doc/c-api/init_config.rst:181 msgid "" -"Call ``exit(exitcode)`` if *status* is an exit. Print the error message and " -"exit with a non-zero exit code if *status* is an error. Must only be called " -"if ``PyStatus_Exception(status)`` is non-zero." +"Call ``exit(exitcode)`` if *status* is an exit. Print the error message and exit with a non-zero exit " +"code if *status* is an error. Must only be called if ``PyStatus_Exception(status)`` is non-zero." msgstr "" -"Llama a ``exit(exitcode)`` si *status* es una salida. Imprime el mensaje de " -"error y sale con un código de salida distinto de cero si *status* es un " -"error. Solo se debe llamar si ``PyStatus_Exception(status)`` no es cero." +"Llama a ``exit(exitcode)`` si *status* es una salida. Imprime el mensaje de error y sale con un " +"código de salida distinto de cero si *status* es un error. Solo se debe llamar si " +"``PyStatus_Exception(status)`` no es cero." #: ../Doc/c-api/init_config.rst:186 msgid "" -"Internally, Python uses macros which set ``PyStatus.func``, whereas " -"functions to create a status set ``func`` to ``NULL``." +"Internally, Python uses macros which set ``PyStatus.func``, whereas functions to create a status set " +"``func`` to ``NULL``." msgstr "" -"Internamente, Python usa macros que establecen ``PyStatus.func``, mientras " -"que las funciones para crear un estado establecen ``func`` en ``NULL``." +"Internamente, Python usa macros que establecen ``PyStatus.func``, mientras que las funciones para " +"crear un estado establecen ``func`` en ``NULL``." #: ../Doc/c-api/init_config.rst:189 msgid "Example::" @@ -300,6 +308,25 @@ msgid "" " return 0;\n" "}" msgstr "" +"PyStatus alloc(void **ptr, size_t size)\n" +"{\n" +" *ptr = PyMem_RawMalloc(size);\n" +" if (*ptr == NULL) {\n" +" return PyStatus_NoMemory();\n" +" }\n" +" return PyStatus_Ok();\n" +"}\n" +"\n" +"int main(int argc, char **argv)\n" +"{\n" +" void *ptr;\n" +" PyStatus status = alloc(&ptr, 16);\n" +" if (PyStatus_Exception(status)) {\n" +" Py_ExitStatusException(status);\n" +" }\n" +" PyMem_Free(ptr);\n" +" return 0;\n" +"}" #: ../Doc/c-api/init_config.rst:213 msgid "PyPreConfig" @@ -314,117 +341,92 @@ msgid "Function to initialize a preconfiguration:" msgstr "Función para inicializar una preconfiguración:" #: ../Doc/c-api/init_config.rst:225 -msgid "" -"Initialize the preconfiguration with :ref:`Python Configuration `." -msgstr "" -"Inicializa la preconfiguración con :ref:`Configuración de Python `." +msgid "Initialize the preconfiguration with :ref:`Python Configuration `." +msgstr "Inicializa la preconfiguración con :ref:`Configuración de Python `." #: ../Doc/c-api/init_config.rst:230 -msgid "" -"Initialize the preconfiguration with :ref:`Isolated Configuration `." -msgstr "" -"Inicializa la preconfiguración con :ref:`Configuración aislada `." +msgid "Initialize the preconfiguration with :ref:`Isolated Configuration `." +msgstr "Inicializa la preconfiguración con :ref:`Configuración aislada `." #: ../Doc/c-api/init_config.rst:239 msgid "Name of the Python memory allocators:" msgstr "Nombre de los asignadores de memoria de Python:" #: ../Doc/c-api/init_config.rst:241 -msgid "" -"``PYMEM_ALLOCATOR_NOT_SET`` (``0``): don't change memory allocators (use " -"defaults)." +msgid "``PYMEM_ALLOCATOR_NOT_SET`` (``0``): don't change memory allocators (use defaults)." msgstr "" -"``PYMEM_ALLOCATOR_NOT_SET`` (``0``): no cambia asignadores de memoria (usa " -"los valores predeterminados)" +"``PYMEM_ALLOCATOR_NOT_SET`` (``0``): no cambia asignadores de memoria (usa los valores " +"predeterminados)" #: ../Doc/c-api/init_config.rst:243 msgid "" -"``PYMEM_ALLOCATOR_DEFAULT`` (``1``): :ref:`default memory allocators " -"`." +"``PYMEM_ALLOCATOR_DEFAULT`` (``1``): :ref:`default memory allocators `." msgstr "" -"``PYMEM_ALLOCATOR_DEFAULT`` (``1``): :ref:`asignadores de memoria " -"predeterminados `." +"``PYMEM_ALLOCATOR_DEFAULT`` (``1``): :ref:`asignadores de memoria predeterminados `." #: ../Doc/c-api/init_config.rst:245 msgid "" -"``PYMEM_ALLOCATOR_DEBUG`` (``2``): :ref:`default memory allocators ` with :ref:`debug hooks `." +"``PYMEM_ALLOCATOR_DEBUG`` (``2``): :ref:`default memory allocators ` with :" +"ref:`debug hooks `." msgstr "" -"``PYMEM_ALLOCATOR_DEBUG`` (``2``): :ref:`asignadores de memoria " -"predeterminados ` con :ref:`ganchos de depuración " -"`." +"``PYMEM_ALLOCATOR_DEBUG`` (``2``): :ref:`asignadores de memoria predeterminados ` con :ref:`ganchos de depuración `." #: ../Doc/c-api/init_config.rst:248 msgid "``PYMEM_ALLOCATOR_MALLOC`` (``3``): use ``malloc()`` of the C library." -msgstr "" -"``PYMEM_ALLOCATOR_MALLOC`` (``3``): usa ``malloc()`` de la biblioteca C." +msgstr "``PYMEM_ALLOCATOR_MALLOC`` (``3``): usa ``malloc()`` de la biblioteca C." #: ../Doc/c-api/init_config.rst:249 msgid "" -"``PYMEM_ALLOCATOR_MALLOC_DEBUG`` (``4``): force usage of ``malloc()`` with :" -"ref:`debug hooks `." +"``PYMEM_ALLOCATOR_MALLOC_DEBUG`` (``4``): force usage of ``malloc()`` with :ref:`debug hooks `." msgstr "" -"``PYMEM_ALLOCATOR_MALLOC_DEBUG`` (``4``): fuerza el uso de ``malloc()`` con :" -"ref:`ganchos de depuración `." +"``PYMEM_ALLOCATOR_MALLOC_DEBUG`` (``4``): fuerza el uso de ``malloc()`` con :ref:`ganchos de " +"depuración `." #: ../Doc/c-api/init_config.rst:251 -msgid "" -"``PYMEM_ALLOCATOR_PYMALLOC`` (``5``): :ref:`Python pymalloc memory allocator " -"`." +msgid "``PYMEM_ALLOCATOR_PYMALLOC`` (``5``): :ref:`Python pymalloc memory allocator `." msgstr "" -"``PYMEM_ALLOCATOR_PYMALLOC`` (``5``): :ref:`asignador de memoria pymalloc de " -"Python `" +"``PYMEM_ALLOCATOR_PYMALLOC`` (``5``): :ref:`asignador de memoria pymalloc de Python `." #: ../Doc/c-api/init_config.rst:253 msgid "" -"``PYMEM_ALLOCATOR_PYMALLOC_DEBUG`` (``6``): :ref:`Python pymalloc memory " -"allocator ` with :ref:`debug hooks `." +"``PYMEM_ALLOCATOR_PYMALLOC_DEBUG`` (``6``): :ref:`Python pymalloc memory allocator ` with :" +"ref:`debug hooks `." msgstr "" -"``PYMEM_ALLOCATOR_PYMALLOC_DEBUG`` (``6``): :ref:`asignador de memoria " -"pymalloc de Python ` con :ref:`ganchos de depuración `." +"``PYMEM_ALLOCATOR_PYMALLOC_DEBUG`` (``6``): :ref:`asignador de memoria pymalloc de Python ` " +"con :ref:`ganchos de depuración `." #: ../Doc/c-api/init_config.rst:256 -#, fuzzy -msgid "" -"``PYMEM_ALLOCATOR_MIMALLOC`` (``6``): use ``mimalloc``, a fast malloc " -"replacement." -msgstr "" -"``PYMEM_ALLOCATOR_MALLOC`` (``3``): usa ``malloc()`` de la biblioteca C." +msgid "``PYMEM_ALLOCATOR_MIMALLOC`` (``6``): use ``mimalloc``, a fast malloc replacement." +msgstr "``PYMEM_ALLOCATOR_MIMALLOC`` (``6``): usa ``mimalloc``, un reemplazo rápido de malloc." #: ../Doc/c-api/init_config.rst:258 -#, fuzzy msgid "" -"``PYMEM_ALLOCATOR_MIMALLOC_DEBUG`` (``7``): use ``mimalloc``, a fast malloc " -"replacement with :ref:`debug hooks `." +"``PYMEM_ALLOCATOR_MIMALLOC_DEBUG`` (``7``): use ``mimalloc``, a fast malloc replacement with :ref:" +"`debug hooks `." msgstr "" -"``PYMEM_ALLOCATOR_MALLOC_DEBUG`` (``4``): fuerza el uso de ``malloc()`` con :" -"ref:`ganchos de depuración `." +"``PYMEM_ALLOCATOR_MIMALLOC_DEBUG`` (``7``): usa ``mimalloc``, un reemplazo rápido de malloc con :ref:" +"`ganchos de depuración `." #: ../Doc/c-api/init_config.rst:262 msgid "" -"``PYMEM_ALLOCATOR_PYMALLOC`` and ``PYMEM_ALLOCATOR_PYMALLOC_DEBUG`` are not " -"supported if Python is :option:`configured using --without-pymalloc <--" -"without-pymalloc>`." +"``PYMEM_ALLOCATOR_PYMALLOC`` and ``PYMEM_ALLOCATOR_PYMALLOC_DEBUG`` are not supported if Python is :" +"option:`configured using --without-pymalloc <--without-pymalloc>`." msgstr "" -"``PYMEM_ALLOCATOR_PYMALLOC`` y ``PYMEM_ALLOCATOR_PYMALLOC_DEBUG`` no son " -"compatibles si Python es :option:`configurado usando --without-pymalloc <--" -"without-pymalloc>`." +"``PYMEM_ALLOCATOR_PYMALLOC`` y ``PYMEM_ALLOCATOR_PYMALLOC_DEBUG`` no son compatibles si Python es :" +"option:`configurado usando --without-pymalloc <--without-pymalloc>`." #: ../Doc/c-api/init_config.rst:266 -#, fuzzy msgid "" -"``PYMEM_ALLOCATOR_MIMALLOC`` and ``PYMEM_ALLOCATOR_MIMALLOC_DEBUG`` are not " -"supported if Python is :option:`configured using --without-mimalloc <--" -"without-mimalloc>` or if the underlying atomic support isn't available." +"``PYMEM_ALLOCATOR_MIMALLOC`` and ``PYMEM_ALLOCATOR_MIMALLOC_DEBUG`` are not supported if Python is :" +"option:`configured using --without-mimalloc <--without-mimalloc>` or if the underlying atomic support " +"isn't available." msgstr "" -"``PYMEM_ALLOCATOR_PYMALLOC`` y ``PYMEM_ALLOCATOR_PYMALLOC_DEBUG`` no son " -"compatibles si Python es :option:`configurado usando --without-pymalloc <--" -"without-pymalloc>`." +"``PYMEM_ALLOCATOR_MIMALLOC`` y ``PYMEM_ALLOCATOR_MIMALLOC_DEBUG`` no son compatibles si Python es :" +"option:`configurado usando --without-mimalloc <--without-mimalloc>` o si el soporte atómico " +"subyacente no está disponible." #: ../Doc/c-api/init_config.rst:271 msgid "See :ref:`Memory Management `." @@ -435,68 +437,47 @@ msgid "Default: ``PYMEM_ALLOCATOR_NOT_SET``." msgstr "Predeterminado: ``PYMEM_ALLOCATOR_NOT_SET``." #: ../Doc/c-api/init_config.rst:277 -#, fuzzy msgid "Set the LC_CTYPE locale to the user preferred locale." -msgstr "" -"¿Establecer la configuración regional LC_CTYPE en la configuración regional " -"preferida del usuario?" +msgstr "Establece la configuración regional LC_CTYPE a la configuración regional preferida del usuario." #: ../Doc/c-api/init_config.rst:279 -#, fuzzy msgid "" -"If equals to ``0``, set :c:member:`~PyPreConfig.coerce_c_locale` and :c:" -"member:`~PyPreConfig.coerce_c_locale_warn` members to ``0``." +"If equals to ``0``, set :c:member:`~PyPreConfig.coerce_c_locale` and :c:member:`~PyPreConfig." +"coerce_c_locale_warn` members to ``0``." msgstr "" -"Si es igual a 0, establezca los miembros :c:member:`~PyPreConfig." -"coerce_c_locale` y :c:member:`~PyPreConfig.coerce_c_locale_warn` en 0." +"Si es igual a ``0``, establece los miembros :c:member:`~PyPreConfig.coerce_c_locale` y :c:member:" +"`~PyPreConfig.coerce_c_locale_warn` a ``0``." #: ../Doc/c-api/init_config.rst:282 ../Doc/c-api/init_config.rst:293 msgid "See the :term:`locale encoding`." msgstr "Vea el :term:`locale encoding`." -#: ../Doc/c-api/init_config.rst:284 ../Doc/c-api/init_config.rst:339 -#: ../Doc/c-api/init_config.rst:710 +#: ../Doc/c-api/init_config.rst:284 ../Doc/c-api/init_config.rst:339 ../Doc/c-api/init_config.rst:710 msgid "Default: ``1`` in Python config, ``0`` in isolated config." -msgstr "" -"Predeterminado: ``1`` en la configuración de Python, ``0`` en la " -"configuración aislada." +msgstr "Predeterminado: ``1`` en la configuración de Python, ``0`` en la configuración aislada." #: ../Doc/c-api/init_config.rst:288 -#, fuzzy msgid "If equals to ``2``, coerce the C locale." -msgstr "Si es igual a 2, imponga la configuración regional C." +msgstr "Si es igual a ``2``, imponga la configuración regional C." #: ../Doc/c-api/init_config.rst:290 -#, fuzzy -msgid "" -"If equals to ``1``, read the LC_CTYPE locale to decide if it should be " -"coerced." -msgstr "" -"Si es igual a 1, lea la configuración regional LC_CTYPE para decidir si debe " -"ser coaccionado." +msgid "If equals to ``1``, read the LC_CTYPE locale to decide if it should be coerced." +msgstr "Si es igual a ``1``, lee la configuración regional LC_CTYPE para decidir si debe ser forzada." #: ../Doc/c-api/init_config.rst:295 ../Doc/c-api/init_config.rst:301 msgid "Default: ``-1`` in Python config, ``0`` in isolated config." -msgstr "" -"Predeterminado: ``-1`` en la configuración de Python, ``0`` en la " -"configuración aislada." +msgstr "Predeterminado: ``-1`` en la configuración de Python, ``0`` en la configuración aislada." #: ../Doc/c-api/init_config.rst:299 msgid "If non-zero, emit a warning if the C locale is coerced." -msgstr "" -"Si no es cero, emita una advertencia si la configuración regional C está " -"coaccionada." +msgstr "Si no es cero, emita una advertencia si la configuración regional C está coaccionada." #: ../Doc/c-api/init_config.rst:305 -#, fuzzy -msgid "" -":ref:`Python Development Mode `: see :c:member:`PyConfig.dev_mode`." -msgstr "" -"Si es distinto de cero, habilita el :ref:`Modo de desarrollo de Python " -"`: consulte :c:member:`PyConfig.dev_mode`." +msgid ":ref:`Python Development Mode `: see :c:member:`PyConfig.dev_mode`." +msgstr ":ref:`Modo de desarrollo de Python `: consulte :c:member:`PyConfig.dev_mode`." -#: ../Doc/c-api/init_config.rst:308 ../Doc/c-api/init_config.rst:719 -#: ../Doc/c-api/init_config.rst:765 ../Doc/c-api/init_config.rst:1244 +#: ../Doc/c-api/init_config.rst:308 ../Doc/c-api/init_config.rst:719 ../Doc/c-api/init_config.rst:765 +#: ../Doc/c-api/init_config.rst:1244 msgid "Default: ``-1`` in Python mode, ``0`` in isolated mode." msgstr "Por defecto: ``-1`` en modo Python, ``0`` en modo aislado." @@ -525,83 +506,62 @@ msgid "Set :c:member:`PyConfig.filesystem_errors` to ``\"replace\"``." msgstr "Establezca :c:member:`PyConfig.filesystem_errors` en ``\"replace\"``." #: ../Doc/c-api/init_config.rst:324 -#, fuzzy -msgid "" -"Initialized from the :envvar:`PYTHONLEGACYWINDOWSFSENCODING` environment " -"variable value." -msgstr "" -"Inicializado desde valor de variable de entorno :envvar:" -"`PYTHONLEGACYWINDOWSFSENCODING`." +msgid "Initialized from the :envvar:`PYTHONLEGACYWINDOWSFSENCODING` environment variable value." +msgstr "Inicializado desde el valor de la variable de entorno :envvar:`PYTHONLEGACYWINDOWSFSENCODING`." #: ../Doc/c-api/init_config.rst:327 ../Doc/c-api/init_config.rst:935 -msgid "" -"Only available on Windows. ``#ifdef MS_WINDOWS`` macro can be used for " -"Windows specific code." +msgid "Only available on Windows. ``#ifdef MS_WINDOWS`` macro can be used for Windows specific code." msgstr "" -"Solo disponible en Windows. La macro ``#ifdef MS_WINDOWS`` se puede usar " -"para el código específico de Windows." +"Solo disponible en Windows. La macro ``#ifdef MS_WINDOWS`` se puede usar para el código específico de " +"Windows." -#: ../Doc/c-api/init_config.rst:330 ../Doc/c-api/init_config.rst:658 -#: ../Doc/c-api/init_config.rst:665 ../Doc/c-api/init_config.rst:732 -#: ../Doc/c-api/init_config.rst:843 ../Doc/c-api/init_config.rst:857 -#: ../Doc/c-api/init_config.rst:871 ../Doc/c-api/init_config.rst:938 -#: ../Doc/c-api/init_config.rst:952 ../Doc/c-api/init_config.rst:1012 -#: ../Doc/c-api/init_config.rst:1064 ../Doc/c-api/init_config.rst:1126 -#: ../Doc/c-api/init_config.rst:1180 ../Doc/c-api/init_config.rst:1209 -#: ../Doc/c-api/init_config.rst:1298 +#: ../Doc/c-api/init_config.rst:330 ../Doc/c-api/init_config.rst:658 ../Doc/c-api/init_config.rst:665 +#: ../Doc/c-api/init_config.rst:732 ../Doc/c-api/init_config.rst:843 ../Doc/c-api/init_config.rst:857 +#: ../Doc/c-api/init_config.rst:871 ../Doc/c-api/init_config.rst:938 ../Doc/c-api/init_config.rst:952 +#: ../Doc/c-api/init_config.rst:1012 ../Doc/c-api/init_config.rst:1064 ../Doc/c-api/init_config.rst:1126 +#: ../Doc/c-api/init_config.rst:1180 ../Doc/c-api/init_config.rst:1209 ../Doc/c-api/init_config.rst:1298 msgid "Default: ``0``." msgstr "Predeterminado: ``0``." #: ../Doc/c-api/init_config.rst:334 msgid "" -"If non-zero, :c:func:`Py_PreInitializeFromArgs` and :c:func:" -"`Py_PreInitializeFromBytesArgs` parse their ``argv`` argument the same way " -"the regular Python parses command line arguments: see :ref:`Command Line " -"Arguments `." +"If non-zero, :c:func:`Py_PreInitializeFromArgs` and :c:func:`Py_PreInitializeFromBytesArgs` parse " +"their ``argv`` argument the same way the regular Python parses command line arguments: see :ref:" +"`Command Line Arguments `." msgstr "" -"Si no es cero, :c:func:`Py_PreInitializeFromArgs` y :c:func:" -"`Py_PreInitializeFromBytesArgs` analizan su argumento ``argv`` de la misma " -"manera que Python analiza los argumentos de la línea de comandos: ver :ref:" -"`Argumentos de línea de comandos `." +"Si no es cero, :c:func:`Py_PreInitializeFromArgs` y :c:func:`Py_PreInitializeFromBytesArgs` analizan " +"su argumento ``argv`` de la misma manera que Python analiza los argumentos de la línea de comandos: " +"ver :ref:`Argumentos de línea de comandos `." #: ../Doc/c-api/init_config.rst:343 -msgid "" -"Use :ref:`environment variables `? See :c:member:`PyConfig." -"use_environment`." +msgid "Use :ref:`environment variables `? See :c:member:`PyConfig.use_environment`." msgstr "" -"¿Utiliza :ref:`variables de entorno `? Consulte :c:member:" -"`PyConfig.use_environment`." +"¿Utiliza :ref:`variables de entorno `? Consulte :c:member:`PyConfig." +"use_environment`." #: ../Doc/c-api/init_config.rst:346 ../Doc/c-api/init_config.rst:1272 msgid "Default: ``1`` in Python config and ``0`` in isolated config." -msgstr "" -"Predeterminado: ``1`` en la configuración de Python y ``0`` en la " -"configuración aislada." +msgstr "Predeterminado: ``1`` en la configuración de Python y ``0`` en la configuración aislada." #: ../Doc/c-api/init_config.rst:350 msgid "If non-zero, enable the :ref:`Python UTF-8 Mode `." msgstr "Si es distinto de cero, habilite :ref:`Python UTF-8 Mode `." #: ../Doc/c-api/init_config.rst:352 -#, fuzzy msgid "" -"Set to ``0`` or ``1`` by the :option:`-X utf8 <-X>` command line option and " -"the :envvar:`PYTHONUTF8` environment variable." +"Set to ``0`` or ``1`` by the :option:`-X utf8 <-X>` command line option and the :envvar:`PYTHONUTF8` " +"environment variable." msgstr "" -"Establecido por la opción de línea de comando :option:`-X utf8 <-X>` y la " -"variable de entorno :envvar:`PYTHONUTF8`." +"Establecido a ``0`` o ``1`` por la opción de línea de comandos :option:`-X utf8 <-X>` y la variable " +"de entorno :envvar:`PYTHONUTF8`." #: ../Doc/c-api/init_config.rst:355 msgid "Also set to ``1`` if the ``LC_CTYPE`` locale is ``C`` or ``POSIX``." -msgstr "" -"También se pone a ``1`` si la configuración regional ``LC_CTYPE`` es ``C`` o " -"``POSIX``." +msgstr "También se pone a ``1`` si la configuración regional ``LC_CTYPE`` es ``C`` o ``POSIX``." #: ../Doc/c-api/init_config.rst:357 msgid "Default: ``-1`` in Python config and ``0`` in isolated config." -msgstr "" -"Predeterminado: ``-1`` en la configuración de Python y ``0`` en la " -"configuración aislada." +msgstr "Predeterminado: ``-1`` en la configuración de Python y ``0`` en la configuración aislada." #: ../Doc/c-api/init_config.rst:363 msgid "Preinitialize Python with PyPreConfig" @@ -613,120 +573,94 @@ msgstr "La preinicialización de Python:" #: ../Doc/c-api/init_config.rst:367 msgid "Set the Python memory allocators (:c:member:`PyPreConfig.allocator`)" -msgstr "" -"Establecer los asignadores de memoria de Python (:c:member:`PyPreConfig." -"allocator`)" +msgstr "Establecer los asignadores de memoria de Python (:c:member:`PyPreConfig.allocator`)" #: ../Doc/c-api/init_config.rst:368 msgid "Configure the LC_CTYPE locale (:term:`locale encoding`)" -msgstr "" -"Configurar la configuración regional LC_CTYPE (:term:`locale encoding`)" +msgstr "Configurar la configuración regional LC_CTYPE (:term:`locale encoding`)" #: ../Doc/c-api/init_config.rst:369 -msgid "" -"Set the :ref:`Python UTF-8 Mode ` (:c:member:`PyPreConfig." -"utf8_mode`)" -msgstr "" -"Establecer el :ref:`Python UTF-8 Mode ` (:c:member:`PyPreConfig." -"utf8_mode`)" +msgid "Set the :ref:`Python UTF-8 Mode ` (:c:member:`PyPreConfig.utf8_mode`)" +msgstr "Establecer el :ref:`Python UTF-8 Mode ` (:c:member:`PyPreConfig.utf8_mode`)" #: ../Doc/c-api/init_config.rst:372 -msgid "" -"The current preconfiguration (``PyPreConfig`` type) is stored in " -"``_PyRuntime.preconfig``." -msgstr "" -"La preconfiguración actual (tipo ``PyPreConfig``) se almacena en " -"``_PyRuntime.preconfig``." +msgid "The current preconfiguration (``PyPreConfig`` type) is stored in ``_PyRuntime.preconfig``." +msgstr "La preconfiguración actual (tipo ``PyPreConfig``) se almacena en ``_PyRuntime.preconfig``." #: ../Doc/c-api/init_config.rst:375 msgid "Functions to preinitialize Python:" msgstr "Funciones para preinicializar Python:" -#: ../Doc/c-api/init_config.rst:379 ../Doc/c-api/init_config.rst:385 -#: ../Doc/c-api/init_config.rst:394 +#: ../Doc/c-api/init_config.rst:379 ../Doc/c-api/init_config.rst:385 ../Doc/c-api/init_config.rst:394 msgid "Preinitialize Python from *preconfig* preconfiguration." msgstr "Preinicializa Python desde la preconfiguración *preconfig*." -#: ../Doc/c-api/init_config.rst:381 ../Doc/c-api/init_config.rst:390 -#: ../Doc/c-api/init_config.rst:399 +#: ../Doc/c-api/init_config.rst:381 ../Doc/c-api/init_config.rst:390 ../Doc/c-api/init_config.rst:399 msgid "*preconfig* must not be ``NULL``." msgstr "*preconfig* no debe ser ``NULL``." #: ../Doc/c-api/init_config.rst:387 msgid "" -"Parse *argv* command line arguments (bytes strings) if :c:member:" -"`~PyPreConfig.parse_argv` of *preconfig* is non-zero." +"Parse *argv* command line arguments (bytes strings) if :c:member:`~PyPreConfig.parse_argv` of " +"*preconfig* is non-zero." msgstr "" -"Analice los argumentos de la línea de comando *argv* (cadenas de bytes) si :" -"c:member:`~PyPreConfig.parse_argv` de *preconfig* no es cero." +"Analice los argumentos de la línea de comando *argv* (cadenas de bytes) si :c:member:`~PyPreConfig." +"parse_argv` de *preconfig* no es cero." #: ../Doc/c-api/init_config.rst:396 msgid "" -"Parse *argv* command line arguments (wide strings) if :c:member:" -"`~PyPreConfig.parse_argv` of *preconfig* is non-zero." +"Parse *argv* command line arguments (wide strings) if :c:member:`~PyPreConfig.parse_argv` of " +"*preconfig* is non-zero." msgstr "" -"Analice los argumentos de la línea de comando *argv* (cadenas anchas) si :c:" -"member:`~PyPreConfig.parse_argv` de *preconfig* no es cero." +"Analice los argumentos de la línea de comando *argv* (cadenas anchas) si :c:member:`~PyPreConfig." +"parse_argv` de *preconfig* no es cero." #: ../Doc/c-api/init_config.rst:401 ../Doc/c-api/init_config.rst:1360 msgid "" -"The caller is responsible to handle exceptions (error or exit) using :c:func:" -"`PyStatus_Exception` and :c:func:`Py_ExitStatusException`." +"The caller is responsible to handle exceptions (error or exit) using :c:func:`PyStatus_Exception` " +"and :c:func:`Py_ExitStatusException`." msgstr "" -"La persona que llama es responsable de manejar las excepciones (error o " -"salida) usando :c:func:`PyStatus_Exception` y :c:func:" -"`Py_ExitStatusException`." +"La persona que llama es responsable de manejar las excepciones (error o salida) usando :c:func:" +"`PyStatus_Exception` y :c:func:`Py_ExitStatusException`." #: ../Doc/c-api/init_config.rst:404 msgid "" -"For :ref:`Python Configuration ` (:c:func:" -"`PyPreConfig_InitPythonConfig`), if Python is initialized with command line " -"arguments, the command line arguments must also be passed to preinitialize " -"Python, since they have an effect on the pre-configuration like encodings. " -"For example, the :option:`-X utf8 <-X>` command line option enables the :ref:" -"`Python UTF-8 Mode `." +"For :ref:`Python Configuration ` (:c:func:`PyPreConfig_InitPythonConfig`), if " +"Python is initialized with command line arguments, the command line arguments must also be passed to " +"preinitialize Python, since they have an effect on the pre-configuration like encodings. For example, " +"the :option:`-X utf8 <-X>` command line option enables the :ref:`Python UTF-8 Mode `." msgstr "" -"Para :ref:`Configuración de Python ` (:c:func:" -"`PyPreConfig_InitPythonConfig`), si Python se inicializa con argumentos de " -"línea de comando, los argumentos de la línea de comando también deben " -"pasarse para preinicializar Python, ya que tienen un efecto en la " -"preconfiguración como codificaciones. Por ejemplo, la opción de línea de " -"comando :option:`-X utf8 <-X>` habilita el :ref:`Python UTF-8 Mode `." +"Para :ref:`Configuración de Python ` (:c:func:`PyPreConfig_InitPythonConfig`), si " +"Python se inicializa con argumentos de línea de comando, los argumentos de la línea de comando " +"también deben pasarse para preinicializar Python, ya que tienen un efecto en la preconfiguración como " +"codificaciones. Por ejemplo, la opción de línea de comando :option:`-X utf8 <-X>` habilita el :ref:" +"`Python UTF-8 Mode `." #: ../Doc/c-api/init_config.rst:411 msgid "" -"``PyMem_SetAllocator()`` can be called after :c:func:`Py_PreInitialize` and " -"before :c:func:`Py_InitializeFromConfig` to install a custom memory " -"allocator. It can be called before :c:func:`Py_PreInitialize` if :c:member:" -"`PyPreConfig.allocator` is set to ``PYMEM_ALLOCATOR_NOT_SET``." +"``PyMem_SetAllocator()`` can be called after :c:func:`Py_PreInitialize` and before :c:func:" +"`Py_InitializeFromConfig` to install a custom memory allocator. It can be called before :c:func:" +"`Py_PreInitialize` if :c:member:`PyPreConfig.allocator` is set to ``PYMEM_ALLOCATOR_NOT_SET``." msgstr "" -"``PyMem_SetAllocator()`` se puede llamar después de :c:func:" -"`Py_PreInitialize` y antes :c:func:`Py_InitializeFromConfig` para instalar " -"un asignador de memoria personalizado. Se puede llamar antes :c:func:" -"`Py_PreInitialize` si :c:member:`PyPreConfig.allocator` está configurado en " +"``PyMem_SetAllocator()`` se puede llamar después de :c:func:`Py_PreInitialize` y antes :c:func:" +"`Py_InitializeFromConfig` para instalar un asignador de memoria personalizado. Se puede llamar antes :" +"c:func:`Py_PreInitialize` si :c:member:`PyPreConfig.allocator` está configurado en " "``PYMEM_ALLOCATOR_NOT_SET``." #: ../Doc/c-api/init_config.rst:416 msgid "" -"Python memory allocation functions like :c:func:`PyMem_RawMalloc` must not " -"be used before the Python preinitialization, whereas calling directly " -"``malloc()`` and ``free()`` is always safe. :c:func:`Py_DecodeLocale` must " -"not be called before the Python preinitialization." +"Python memory allocation functions like :c:func:`PyMem_RawMalloc` must not be used before the Python " +"preinitialization, whereas calling directly ``malloc()`` and ``free()`` is always safe. :c:func:" +"`Py_DecodeLocale` must not be called before the Python preinitialization." msgstr "" -"Las funciones de asignación de memoria de Python como :c:func:" -"`PyMem_RawMalloc` no deben usarse antes de la preinicialización de Python, " -"mientras que llamar directamente a ``malloc()`` y ``free()`` siempre es " -"seguro. No se debe llamar a :c:func:`Py_DecodeLocale` antes de la " -"preinicialización de Python." +"Las funciones de asignación de memoria de Python como :c:func:`PyMem_RawMalloc` no deben usarse antes " +"de la preinicialización de Python, mientras que llamar directamente a ``malloc()`` y ``free()`` " +"siempre es seguro. No se debe llamar a :c:func:`Py_DecodeLocale` antes de la preinicialización de " +"Python." #: ../Doc/c-api/init_config.rst:421 -msgid "" -"Example using the preinitialization to enable the :ref:`Python UTF-8 Mode " -"`::" -msgstr "" -"Ejemplo usando la preinicialización para habilitar el :ref:`Python UTF-8 " -"Mode ` ::" +msgid "Example using the preinitialization to enable the :ref:`Python UTF-8 Mode `::" +msgstr "Ejemplo usando la preinicialización para habilitar el :ref:`Python UTF-8 Mode ` ::" #: ../Doc/c-api/init_config.rst:424 msgid "" @@ -747,6 +681,22 @@ msgid "" "/* ... use Python API here ... */\n" "Py_Finalize();" msgstr "" +"PyStatus status;\n" +"PyPreConfig preconfig;\n" +"PyPreConfig_InitPythonConfig(&preconfig);\n" +"\n" +"preconfig.utf8_mode = 1;\n" +"\n" +"status = Py_PreInitialize(&preconfig);\n" +"if (PyStatus_Exception(status)) {\n" +" Py_ExitStatusException(status);\n" +"}\n" +"\n" +"/* at this point, Python speaks UTF-8 */\n" +"\n" +"Py_Initialize();\n" +"/* ... use Python API here ... */\n" +"Py_Finalize();" #: ../Doc/c-api/init_config.rst:443 msgid "PyConfig" @@ -754,79 +704,60 @@ msgstr "PyConfig" #: ../Doc/c-api/init_config.rst:447 msgid "Structure containing most parameters to configure Python." -msgstr "" -"Estructura que contiene la mayoría de los parámetros para configurar Python." +msgstr "Estructura que contiene la mayoría de los parámetros para configurar Python." #: ../Doc/c-api/init_config.rst:449 msgid "" -"When done, the :c:func:`PyConfig_Clear` function must be used to release the " -"configuration memory." +"When done, the :c:func:`PyConfig_Clear` function must be used to release the configuration memory." msgstr "" -"Cuando termine, se debe utilizar la función :c:func:`PyConfig_Clear` para " -"liberar la memoria de configuración." +"Cuando termine, se debe utilizar la función :c:func:`PyConfig_Clear` para liberar la memoria de " +"configuración." #: ../Doc/c-api/init_config.rst:454 msgid "Structure methods:" msgstr "Métodos de estructura:" #: ../Doc/c-api/init_config.rst:458 -msgid "" -"Initialize configuration with the :ref:`Python Configuration `." -msgstr "" -"Inicialice la configuración con la :ref:`Configuración de Python `." +msgid "Initialize configuration with the :ref:`Python Configuration `." +msgstr "Inicialice la configuración con la :ref:`Configuración de Python `." #: ../Doc/c-api/init_config.rst:463 -msgid "" -"Initialize configuration with the :ref:`Isolated Configuration `." -msgstr "" -"Inicialice la configuración con la :ref:`Configuración Aislada `." +msgid "Initialize configuration with the :ref:`Isolated Configuration `." +msgstr "Inicialice la configuración con la :ref:`Configuración Aislada `." #: ../Doc/c-api/init_config.rst:468 msgid "Copy the wide character string *str* into ``*config_str``." msgstr "Copia la cadena de caracteres anchos *str* en ``*config_str``." -#: ../Doc/c-api/init_config.rst:470 ../Doc/c-api/init_config.rst:477 -#: ../Doc/c-api/init_config.rst:484 ../Doc/c-api/init_config.rst:492 -#: ../Doc/c-api/init_config.rst:498 ../Doc/c-api/init_config.rst:515 +#: ../Doc/c-api/init_config.rst:470 ../Doc/c-api/init_config.rst:477 ../Doc/c-api/init_config.rst:484 +#: ../Doc/c-api/init_config.rst:492 ../Doc/c-api/init_config.rst:498 ../Doc/c-api/init_config.rst:515 msgid ":ref:`Preinitialize Python ` if needed." msgstr ":ref:`Preinicializa Python ` si es necesario." #: ../Doc/c-api/init_config.rst:474 -msgid "" -"Decode *str* using :c:func:`Py_DecodeLocale` and set the result into " -"``*config_str``." +msgid "Decode *str* using :c:func:`Py_DecodeLocale` and set the result into ``*config_str``." msgstr "" -"Decodifique *str* usando :c:func:`Py_DecodeLocale` y establezca el resultado " -"en ``*config_str``." +"Decodifique *str* usando :c:func:`Py_DecodeLocale` y establezca el resultado en ``*config_str``." #: ../Doc/c-api/init_config.rst:481 msgid "" -"Set command line arguments (:c:member:`~PyConfig.argv` member of *config*) " -"from the *argv* list of wide character strings." +"Set command line arguments (:c:member:`~PyConfig.argv` member of *config*) from the *argv* list of " +"wide character strings." msgstr "" -"Configure los argumentos de la línea de comando (miembro :c:member:" -"`~PyConfig.argv` de *config*) de la lista *argv* de cadenas de caracteres " -"anchas." +"Configure los argumentos de la línea de comando (miembro :c:member:`~PyConfig.argv` de *config*) de " +"la lista *argv* de cadenas de caracteres anchas." #: ../Doc/c-api/init_config.rst:488 msgid "" -"Set command line arguments (:c:member:`~PyConfig.argv` member of *config*) " -"from the *argv* list of bytes strings. Decode bytes using :c:func:" -"`Py_DecodeLocale`." +"Set command line arguments (:c:member:`~PyConfig.argv` member of *config*) from the *argv* list of " +"bytes strings. Decode bytes using :c:func:`Py_DecodeLocale`." msgstr "" -"Establezca argumentos de línea de comando (miembro :c:member:`~PyConfig." -"argv` de *config*) de la lista *argv* de cadenas de bytes. Decodifica bytes " -"usando :c:func:`Py_DecodeLocale`." +"Establezca argumentos de línea de comando (miembro :c:member:`~PyConfig.argv` de *config*) de la " +"lista *argv* de cadenas de bytes. Decodifica bytes usando :c:func:`Py_DecodeLocale`." #: ../Doc/c-api/init_config.rst:496 msgid "Set the list of wide strings *list* to *length* and *items*." -msgstr "" -"Establece la lista de cadenas de caracteres anchas *list* a *length* y " -"*items*." +msgstr "Establece la lista de cadenas de caracteres anchas *list* a *length* y *items*." #: ../Doc/c-api/init_config.rst:502 msgid "Read all Python configuration." @@ -838,47 +769,43 @@ msgstr "Los campos que ya están inicializados no se modifican." #: ../Doc/c-api/init_config.rst:506 msgid "" -"Fields for :ref:`path configuration ` are no longer " -"calculated or modified when calling this function, as of Python 3.11." +"Fields for :ref:`path configuration ` are no longer calculated or modified when " +"calling this function, as of Python 3.11." msgstr "" -"Los campos para la :ref:`configuración de ruta ` ya no se " -"calculan ni modifican al llamar a esta función, a partir de Python 3.11." +"Los campos para la :ref:`configuración de ruta ` ya no se calculan ni modifican al " +"llamar a esta función, a partir de Python 3.11." #: ../Doc/c-api/init_config.rst:509 ../Doc/c-api/init_config.rst:1041 -#, fuzzy -msgid "" -"The :c:func:`PyConfig_Read` function only parses :c:member:`PyConfig.argv` " -"arguments once: :c:member:`PyConfig.parse_argv` is set to ``2`` after " -"arguments are parsed. Since Python arguments are stripped from :c:member:" -"`PyConfig.argv`, parsing arguments twice would parse the application options " -"as Python options." -msgstr "" -"La función :c:func:`PyConfig_Read` solo analiza los argumentos :c:member:" -"`PyConfig.argv` una vez: :c:member:`PyConfig.parse_argv` se establece en " -"``2`` después de analizar los argumentos. Dado que los argumentos de Python " -"se eliminan de :c:member:`PyConfig.argv`, analizar los argumentos dos veces " +msgid "" +"The :c:func:`PyConfig_Read` function only parses :c:member:`PyConfig.argv` arguments once: :c:member:" +"`PyConfig.parse_argv` is set to ``2`` after arguments are parsed. Since Python arguments are stripped " +"from :c:member:`PyConfig.argv`, parsing arguments twice would parse the application options as Python " +"options." +msgstr "" +"La función :c:func:`PyConfig_Read` solo analiza los argumentos :c:member:`PyConfig.argv` una vez: :c:" +"member:`PyConfig.parse_argv` se establece en ``2`` después de que se analizan los argumentos. Como " +"los argumentos de Python se eliminan de :c:member:`PyConfig.argv`, analizar los argumentos dos veces " "analizaría las opciones de la aplicación como opciones de Python." #: ../Doc/c-api/init_config.rst:517 msgid "" -"The :c:member:`PyConfig.argv` arguments are now only parsed once, :c:member:" -"`PyConfig.parse_argv` is set to ``2`` after arguments are parsed, and " -"arguments are only parsed if :c:member:`PyConfig.parse_argv` equals ``1``." +"The :c:member:`PyConfig.argv` arguments are now only parsed once, :c:member:`PyConfig.parse_argv` is " +"set to ``2`` after arguments are parsed, and arguments are only parsed if :c:member:`PyConfig." +"parse_argv` equals ``1``." msgstr "" -"Los argumentos :c:member:`PyConfig.argv` ahora solo se analizan una vez, :c:" -"member:`PyConfig.parse_argv` se establece en ``2`` después de analizar los " -"argumentos y los argumentos solo se analizan si :c:member:`PyConfig." -"parse_argv` es igual a ``1``." +"Los argumentos :c:member:`PyConfig.argv` ahora solo se analizan una vez, :c:member:`PyConfig." +"parse_argv` se establece en ``2`` después de analizar los argumentos y los argumentos solo se " +"analizan si :c:member:`PyConfig.parse_argv` es igual a ``1``." #: ../Doc/c-api/init_config.rst:523 msgid "" -":c:func:`PyConfig_Read` no longer calculates all paths, and so fields listed " -"under :ref:`Python Path Configuration ` may no longer be " -"updated until :c:func:`Py_InitializeFromConfig` is called." +":c:func:`PyConfig_Read` no longer calculates all paths, and so fields listed under :ref:`Python Path " +"Configuration ` may no longer be updated until :c:func:`Py_InitializeFromConfig` is " +"called." msgstr "" -":c:func:`PyConfig_Read` ya no calcula todas las rutas, por lo que los campos " -"listados en :ref:`Python Path Configuration ` ya no pueden " -"ser actualizados hasta que se llame a :c:func:`Py_InitializeFromConfig`." +":c:func:`PyConfig_Read` ya no calcula todas las rutas, por lo que los campos listados en :ref:`Python " +"Path Configuration ` ya no pueden ser actualizados hasta que se llame a :c:func:" +"`Py_InitializeFromConfig`." #: ../Doc/c-api/init_config.rst:531 msgid "Release configuration memory." @@ -886,18 +813,15 @@ msgstr "Libera memoria de configuración." #: ../Doc/c-api/init_config.rst:533 msgid "" -"Most ``PyConfig`` methods :ref:`preinitialize Python ` if needed. " -"In that case, the Python preinitialization configuration (:c:type:" -"`PyPreConfig`) in based on the :c:type:`PyConfig`. If configuration fields " -"which are in common with :c:type:`PyPreConfig` are tuned, they must be set " +"Most ``PyConfig`` methods :ref:`preinitialize Python ` if needed. In that case, the Python " +"preinitialization configuration (:c:type:`PyPreConfig`) in based on the :c:type:`PyConfig`. If " +"configuration fields which are in common with :c:type:`PyPreConfig` are tuned, they must be set " "before calling a :c:type:`PyConfig` method:" msgstr "" -"La mayoría de los método ``PyConfig`` :ref:`preinitializan Python ` si es necesario. En ese caso, la configuración de " -"preinicialización de Python (:c:type:`PyPreConfig`) se basa en :c:type:" -"`PyConfig`. Si se ajustan los campos de configuración que son comunes con :c:" -"type:`PyPreConfig`, deben establecerse antes de llamar a un método :c:type:" -"`PyConfig`:" +"La mayoría de los método ``PyConfig`` :ref:`preinitializan Python ` si es necesario. En " +"ese caso, la configuración de preinicialización de Python (:c:type:`PyPreConfig`) se basa en :c:type:" +"`PyConfig`. Si se ajustan los campos de configuración que son comunes con :c:type:`PyPreConfig`, " +"deben establecerse antes de llamar a un método :c:type:`PyConfig`:" #: ../Doc/c-api/init_config.rst:539 msgid ":c:member:`PyConfig.dev_mode`" @@ -916,64 +840,60 @@ msgid ":c:member:`PyConfig.use_environment`" msgstr ":c:member:`PyConfig.use_environment`" #: ../Doc/c-api/init_config.rst:544 -#, fuzzy msgid "" -"Moreover, if :c:func:`PyConfig_SetArgv` or :c:func:`PyConfig_SetBytesArgv` " -"is used, this method must be called before other methods, since the " -"preinitialization configuration depends on command line arguments (if :c:" -"member:`~PyConfig.parse_argv` is non-zero)." +"Moreover, if :c:func:`PyConfig_SetArgv` or :c:func:`PyConfig_SetBytesArgv` is used, this method must " +"be called before other methods, since the preinitialization configuration depends on command line " +"arguments (if :c:member:`~PyConfig.parse_argv` is non-zero)." msgstr "" -"Además, si se usa :c:func:`PyConfig_SetArgv` o :c:func:" -"`PyConfig_SetBytesArgv`, este método debe llamarse antes que otros métodos, " -"ya que la configuración de preinicialización depende de los argumentos de la " -"línea de comando (si :c:member:`parse_argv` no es cero)." +"Además, si se usa :c:func:`PyConfig_SetArgv` o :c:func:`PyConfig_SetBytesArgv`, este método debe " +"llamarse antes que otros métodos, ya que la configuración de preinicialización depende de los " +"argumentos de la línea de comando (si :c:member:`~PyConfig.parse_argv` no es cero)." #: ../Doc/c-api/init_config.rst:549 msgid "" -"The caller of these methods is responsible to handle exceptions (error or " -"exit) using ``PyStatus_Exception()`` and ``Py_ExitStatusException()``." +"The caller of these methods is responsible to handle exceptions (error or exit) using " +"``PyStatus_Exception()`` and ``Py_ExitStatusException()``." msgstr "" -"Quien llama de estos métodos es responsable de manejar las excepciones " -"(error o salida) usando ``PyStatus_Exception()`` y " -"``Py_ExitStatusException()``." +"Quien llama de estos métodos es responsable de manejar las excepciones (error o salida) usando " +"``PyStatus_Exception()`` y ``Py_ExitStatusException()``." #: ../Doc/c-api/init_config.rst:562 msgid "" -"Set :data:`sys.argv` command line arguments based on :c:member:`~PyConfig." -"argv`. These parameters are similar to those passed to the program's :c:" -"func:`main` function with the difference that the first entry should refer " -"to the script file to be executed rather than the executable hosting the " -"Python interpreter. If there isn't a script that will be run, the first " -"entry in :c:member:`~PyConfig.argv` can be an empty string." +"Set :data:`sys.argv` command line arguments based on :c:member:`~PyConfig.argv`. These parameters " +"are similar to those passed to the program's :c:func:`main` function with the difference that the " +"first entry should refer to the script file to be executed rather than the executable hosting the " +"Python interpreter. If there isn't a script that will be run, the first entry in :c:member:" +"`~PyConfig.argv` can be an empty string." msgstr "" +"Establece los argumentos de la línea de comandos :data:`sys.argv` basados en :c:member:`~PyConfig." +"argv`. Estos parámetros son similares a los pasados a la función :c:func:`main` del programa con la " +"diferencia de que la primera entrada debe referirse al archivo de script a ejecutar en lugar del " +"ejecutable que aloja al intérprete de Python. Si no hay un script que se vaya a ejecutar, la primera " +"entrada en :c:member:`~PyConfig.argv` puede ser una cadena vacía." #: ../Doc/c-api/init_config.rst:570 msgid "" -"Set :c:member:`~PyConfig.parse_argv` to ``1`` to parse :c:member:`~PyConfig." -"argv` the same way the regular Python parses Python command line arguments " -"and then to strip Python arguments from :c:member:`~PyConfig.argv`." +"Set :c:member:`~PyConfig.parse_argv` to ``1`` to parse :c:member:`~PyConfig.argv` the same way the " +"regular Python parses Python command line arguments and then to strip Python arguments from :c:member:" +"`~PyConfig.argv`." msgstr "" -"Configure :c:member:`~PyConfig.parse_argv` en ``1`` para analizar :c:member:" -"`~PyConfig.argv` de la misma manera que Python normal analiza los argumentos " -"de la línea de comandos de Python y luego quita los argumentos de Python de :" -"c:member:`~PyConfig.argv`." +"Configure :c:member:`~PyConfig.parse_argv` en ``1`` para analizar :c:member:`~PyConfig.argv` de la " +"misma manera que Python normal analiza los argumentos de la línea de comandos de Python y luego quita " +"los argumentos de Python de :c:member:`~PyConfig.argv`." #: ../Doc/c-api/init_config.rst:575 msgid "" -"If :c:member:`~PyConfig.argv` is empty, an empty string is added to ensure " -"that :data:`sys.argv` always exists and is never empty." +"If :c:member:`~PyConfig.argv` is empty, an empty string is added to ensure that :data:`sys.argv` " +"always exists and is never empty." msgstr "" -"Si :c:member:`~PyConfig.argv` está vacío, se agrega una cadena vacía para " -"garantizar que :data:`sys.argv` siempre exista y nunca esté vacío." +"Si :c:member:`~PyConfig.argv` está vacío, se agrega una cadena vacía para garantizar que :data:`sys." +"argv` siempre exista y nunca esté vacío." -#: ../Doc/c-api/init_config.rst:578 ../Doc/c-api/init_config.rst:605 -#: ../Doc/c-api/init_config.rst:619 ../Doc/c-api/init_config.rst:629 -#: ../Doc/c-api/init_config.rst:739 ../Doc/c-api/init_config.rst:750 -#: ../Doc/c-api/init_config.rst:832 ../Doc/c-api/init_config.rst:982 -#: ../Doc/c-api/init_config.rst:1083 ../Doc/c-api/init_config.rst:1102 -#: ../Doc/c-api/init_config.rst:1117 ../Doc/c-api/init_config.rst:1134 -#: ../Doc/c-api/init_config.rst:1147 ../Doc/c-api/init_config.rst:1155 -#: ../Doc/c-api/init_config.rst:1169 +#: ../Doc/c-api/init_config.rst:578 ../Doc/c-api/init_config.rst:605 ../Doc/c-api/init_config.rst:619 +#: ../Doc/c-api/init_config.rst:629 ../Doc/c-api/init_config.rst:739 ../Doc/c-api/init_config.rst:750 +#: ../Doc/c-api/init_config.rst:832 ../Doc/c-api/init_config.rst:982 ../Doc/c-api/init_config.rst:1083 +#: ../Doc/c-api/init_config.rst:1102 ../Doc/c-api/init_config.rst:1117 ../Doc/c-api/init_config.rst:1134 +#: ../Doc/c-api/init_config.rst:1147 ../Doc/c-api/init_config.rst:1155 ../Doc/c-api/init_config.rst:1169 msgid "Default: ``NULL``." msgstr "Valor predeterminado: ``NULL``." @@ -983,69 +903,60 @@ msgstr "Consulte también el miembro :c:member:`~PyConfig.orig_argv`." #: ../Doc/c-api/init_config.rst:584 msgid "" -"If equals to zero, ``Py_RunMain()`` prepends a potentially unsafe path to :" -"data:`sys.path` at startup:" +"If equals to zero, ``Py_RunMain()`` prepends a potentially unsafe path to :data:`sys.path` at startup:" msgstr "" -"Si es igual a cero, ``Py_RunMain()`` agrega una ruta potencialmente insegura " -"a :data:`sys.path` al inicio:" +"Si es igual a cero, ``Py_RunMain()`` agrega una ruta potencialmente insegura a :data:`sys.path` al " +"inicio:" #: ../Doc/c-api/init_config.rst:587 msgid "" -"If :c:member:`argv[0] ` is equal to ``L\"-m\"`` (``python -m " -"module``), prepend the current working directory." +"If :c:member:`argv[0] ` is equal to ``L\"-m\"`` (``python -m module``), prepend the " +"current working directory." msgstr "" -"Si :c:member:`argv[0] ` es igual a ``L\"-m\"`` (``python -m " -"module``), añade el directorio de trabajo actual." +"Si :c:member:`argv[0] ` es igual a ``L\"-m\"`` (``python -m module``), añade el " +"directorio de trabajo actual." #: ../Doc/c-api/init_config.rst:589 -#, fuzzy msgid "" -"If running a script (``python script.py``), prepend the script's directory. " -"If it's a symbolic link, resolve symbolic links." +"If running a script (``python script.py``), prepend the script's directory. If it's a symbolic link, " +"resolve symbolic links." msgstr "" -"Si se ejecuta el script (``python script.py``), añade el directorio del " -"script. Si es un enlace simbólico, resuelve los enlaces simbólicos." +"Si se ejecuta un script (``python script.py``), anteponer el directorio del script. Si es un enlace " +"simbólico, resuelve los enlaces simbólicos." #: ../Doc/c-api/init_config.rst:591 msgid "" -"Otherwise (``python -c code`` and ``python``), prepend an empty string, " -"which means the current working directory." +"Otherwise (``python -c code`` and ``python``), prepend an empty string, which means the current " +"working directory." msgstr "" -"En caso contrario (``python -c code`` and ``python``), añade una cadena " -"vacía, que significa el directorio de trabajo actual." +"En caso contrario (``python -c code`` and ``python``), añade una cadena vacía, que significa el " +"directorio de trabajo actual." #: ../Doc/c-api/init_config.rst:594 -#, fuzzy msgid "" -"Set to ``1`` by the :option:`-P` command line option and the :envvar:" -"`PYTHONSAFEPATH` environment variable." +"Set to ``1`` by the :option:`-P` command line option and the :envvar:`PYTHONSAFEPATH` environment " +"variable." msgstr "" -"Establecido en 0 por la opción de línea de comando :option:`-u` y la " -"variable de entorno :envvar:`PYTHONUNBUFFERED`." +"Establecido en ``1`` por la opción de la línea de comandos :option:`-P` y la variable de entorno :" +"envvar:`PYTHONSAFEPATH`." #: ../Doc/c-api/init_config.rst:597 -#, fuzzy msgid "Default: ``0`` in Python config, ``1`` in isolated config." -msgstr "" -"Predeterminado: ``1`` en la configuración de Python, ``0`` en la " -"configuración aislada." +msgstr "Predeterminado: ``0`` en la configuración de Python, ``1`` en la configuración aislada." #: ../Doc/c-api/init_config.rst:603 msgid ":data:`sys.base_exec_prefix`." msgstr ":data:`sys.base_exec_prefix`." -#: ../Doc/c-api/init_config.rst:607 ../Doc/c-api/init_config.rst:621 -#: ../Doc/c-api/init_config.rst:631 ../Doc/c-api/init_config.rst:741 -#: ../Doc/c-api/init_config.rst:752 ../Doc/c-api/init_config.rst:999 +#: ../Doc/c-api/init_config.rst:607 ../Doc/c-api/init_config.rst:621 ../Doc/c-api/init_config.rst:631 +#: ../Doc/c-api/init_config.rst:741 ../Doc/c-api/init_config.rst:752 ../Doc/c-api/init_config.rst:999 #: ../Doc/c-api/init_config.rst:1085 msgid "Part of the :ref:`Python Path Configuration ` output." -msgstr "" -"Parte de la salida :ref:`Python Path Configuration `." +msgstr "Parte de la salida :ref:`Python Path Configuration `." #: ../Doc/c-api/init_config.rst:609 -#, fuzzy msgid "See also :c:member:`PyConfig.exec_prefix`." -msgstr ":c:member:`PyConfig.exec_prefix`" +msgstr "Consulte también :c:member:`PyConfig.exec_prefix`." #: ../Doc/c-api/init_config.rst:613 msgid "Python base executable: :data:`sys._base_executable`." @@ -1060,63 +971,53 @@ msgid "Set from :c:member:`PyConfig.executable` if ``NULL``." msgstr "Establecido desde :c:member:`PyConfig.executable` si ``NULL``." #: ../Doc/c-api/init_config.rst:623 -#, fuzzy msgid "See also :c:member:`PyConfig.executable`." -msgstr ":c:member:`PyConfig.executable`" +msgstr "Consulte también :c:member:`PyConfig.executable`." #: ../Doc/c-api/init_config.rst:627 msgid ":data:`sys.base_prefix`." msgstr ":data:`sys.base_prefix`." #: ../Doc/c-api/init_config.rst:633 -#, fuzzy msgid "See also :c:member:`PyConfig.prefix`." -msgstr ":c:member:`PyConfig.prefix`" +msgstr "Consulte también :c:member:`PyConfig.prefix`." #: ../Doc/c-api/init_config.rst:637 -#, fuzzy msgid "" -"If equals to ``0`` and :c:member:`~PyConfig.configure_c_stdio` is non-zero, " -"disable buffering on the C streams stdout and stderr." +"If equals to ``0`` and :c:member:`~PyConfig.configure_c_stdio` is non-zero, disable buffering on the " +"C streams stdout and stderr." msgstr "" -"Si es igual a 0 y :c:member:`~PyConfig.configure_c_stdio` no es cero, " -"deshabilite el almacenamiento en búfer en las secuencias C stdout y stderr." +"Si es igual a ``0`` y :c:member:`~PyConfig.configure_c_stdio` no es cero, deshabilite el " +"almacenamiento en búfer en las secuencias C stdout y stderr." #: ../Doc/c-api/init_config.rst:640 -#, fuzzy msgid "" -"Set to ``0`` by the :option:`-u` command line option and the :envvar:" -"`PYTHONUNBUFFERED` environment variable." +"Set to ``0`` by the :option:`-u` command line option and the :envvar:`PYTHONUNBUFFERED` environment " +"variable." msgstr "" -"Establecido en 0 por la opción de línea de comando :option:`-u` y la " -"variable de entorno :envvar:`PYTHONUNBUFFERED`." +"Establecido en ``0`` por la opción de línea de comando :option:`-u` y la variable de entorno :envvar:" +"`PYTHONUNBUFFERED`." #: ../Doc/c-api/init_config.rst:643 msgid "stdin is always opened in buffered mode." msgstr "stdin siempre se abre en modo de búfer." -#: ../Doc/c-api/init_config.rst:645 ../Doc/c-api/init_config.rst:678 -#: ../Doc/c-api/init_config.rst:1197 ../Doc/c-api/init_config.rst:1330 +#: ../Doc/c-api/init_config.rst:645 ../Doc/c-api/init_config.rst:678 ../Doc/c-api/init_config.rst:1197 +#: ../Doc/c-api/init_config.rst:1330 msgid "Default: ``1``." msgstr "Predeterminado: ``1``." #: ../Doc/c-api/init_config.rst:649 -#, fuzzy msgid "" -"If equals to ``1``, issue a warning when comparing :class:`bytes` or :class:" -"`bytearray` with :class:`str`, or comparing :class:`bytes` with :class:`int`." +"If equals to ``1``, issue a warning when comparing :class:`bytes` or :class:`bytearray` with :class:" +"`str`, or comparing :class:`bytes` with :class:`int`." msgstr "" -"Si es igual a 1, emite una advertencia al comparar :class:`bytes` o :class:" -"`bytearray` con :class:`str`, o al comparar :class:`bytes` con :class:`int`." +"Si es igual a ``1``, emite una advertencia al comparar :class:`bytes` o :class:`bytearray` con :class:" +"`str`, o al comparar :class:`bytes` con :class:`int`." #: ../Doc/c-api/init_config.rst:653 -#, fuzzy -msgid "" -"If equal or greater to ``2``, raise a :exc:`BytesWarning` exception in these " -"cases." -msgstr "" -"Si es igual o mayor a 2, lanza una excepción :exc:`BytesWarning` en estos " -"casos." +msgid "If equal or greater to ``2``, raise a :exc:`BytesWarning` exception in these cases." +msgstr "Si es igual o mayor a ``2``, lanza una excepción :exc:`BytesWarning` en estos casos." #: ../Doc/c-api/init_config.rst:656 msgid "Incremented by the :option:`-b` command line option." @@ -1124,42 +1025,36 @@ msgstr "Incrementado por la opción de línea de comando :option:`-b`." #: ../Doc/c-api/init_config.rst:662 msgid "" -"If non-zero, emit a :exc:`EncodingWarning` warning when :class:`io." -"TextIOWrapper` uses its default encoding. See :ref:`io-encoding-warning` for " -"details." +"If non-zero, emit a :exc:`EncodingWarning` warning when :class:`io.TextIOWrapper` uses its default " +"encoding. See :ref:`io-encoding-warning` for details." msgstr "" -"Si no es cero, emite una advertencia :exc:`EncodingWarning` cuando :class:" -"`io.TextIOWrapper` usa su codificación predeterminada. Consulte :ref:`io-" -"encoding-warning` para obtener más detalles." +"Si no es cero, emite una advertencia :exc:`EncodingWarning` cuando :class:`io.TextIOWrapper` usa su " +"codificación predeterminada. Consulte :ref:`io-encoding-warning` para obtener más detalles." #: ../Doc/c-api/init_config.rst:671 -#, fuzzy msgid "" -"If equals to ``0``, disables the inclusion of the end line and column " -"mappings in code objects. Also disables traceback printing carets to " -"specific error locations." +"If equals to ``0``, disables the inclusion of the end line and column mappings in code objects. Also " +"disables traceback printing carets to specific error locations." msgstr "" -"Si es igual a ``0``, desactiva la inclusión de fin de línea y los mapeos de " -"columna en los objetos de código. También desactiva la impresión de caretas " -"(*^*) de rastreo en lugares de error específicos." +"Si es igual a ``0``, desactiva la inclusión de la línea final y las asignaciones de columna en los " +"objetos de código. También desactiva la impresión de indicadores de rastreo a ubicaciones de error " +"específicas." #: ../Doc/c-api/init_config.rst:675 -#, fuzzy msgid "" -"Set to ``0`` by the :envvar:`PYTHONNODEBUGRANGES` environment variable and " -"by the :option:`-X no_debug_ranges <-X>` command line option." +"Set to ``0`` by the :envvar:`PYTHONNODEBUGRANGES` environment variable and by the :option:`-X " +"no_debug_ranges <-X>` command line option." msgstr "" -"Establecido en ``0`` por las opciones de línea de comando :option:`-s` y :" -"option:`-I`." +"Establecido en ``0`` por la variable de entorno :envvar:`PYTHONNODEBUGRANGES` y por la opción de " +"línea de comando :option:`-X no_debug_ranges <-X>`." #: ../Doc/c-api/init_config.rst:684 msgid "" -"Control the validation behavior of hash-based ``.pyc`` files: value of the :" -"option:`--check-hash-based-pycs` command line option." +"Control the validation behavior of hash-based ``.pyc`` files: value of the :option:`--check-hash-" +"based-pycs` command line option." msgstr "" -"Controla el comportamiento de validación de archivos ``.pyc`` basados en " -"hash: valor de la opción de línea de comando :option:`--check-hash-based-" -"pycs`." +"Controla el comportamiento de validación de archivos ``.pyc`` basados en hash: valor de la opción de " +"línea de comando :option:`--check-hash-based-pycs`." #: ../Doc/c-api/init_config.rst:687 msgid "Valid values:" @@ -1167,24 +1062,19 @@ msgstr "Valores válidos:" #: ../Doc/c-api/init_config.rst:689 msgid "" -"``L\"always\"``: Hash the source file for invalidation regardless of value " -"of the 'check_source' flag." +"``L\"always\"``: Hash the source file for invalidation regardless of value of the 'check_source' flag." msgstr "" -"``L\"always\"``: Calcula el hash el archivo fuente para invalidación " -"independientemente del valor de la marca 'check_source'." +"``L\"always\"``: Calcula el hash el archivo fuente para invalidación independientemente del valor de " +"la marca 'check_source'." #: ../Doc/c-api/init_config.rst:691 msgid "``L\"never\"``: Assume that hash-based pycs always are valid." -msgstr "" -"``L\"never\"``: suponga que los pycs basados en hash siempre son válidos." +msgstr "``L\"never\"``: suponga que los pycs basados en hash siempre son válidos." #: ../Doc/c-api/init_config.rst:692 -msgid "" -"``L\"default\"``: The 'check_source' flag in hash-based pycs determines " -"invalidation." +msgid "``L\"default\"``: The 'check_source' flag in hash-based pycs determines invalidation." msgstr "" -"``L\"default\"``: El indicador 'check_source' en pycs basados en hash " -"determina la invalidación." +"``L\"default\"``: El indicador 'check_source' en pycs basados en hash determina la invalidación." #: ../Doc/c-api/init_config.rst:695 msgid "Default: ``L\"default\"``." @@ -1199,93 +1089,75 @@ msgid "If non-zero, configure C standard streams:" msgstr "Si es distinto de cero, configure los flujos estándar de C:" #: ../Doc/c-api/init_config.rst:703 -msgid "" -"On Windows, set the binary mode (``O_BINARY``) on stdin, stdout and stderr." -msgstr "" -"En Windows, configure el modo binario (``O_BINARY``) en stdin, stdout y " -"stderr." +msgid "On Windows, set the binary mode (``O_BINARY``) on stdin, stdout and stderr." +msgstr "En Windows, configure el modo binario (``O_BINARY``) en stdin, stdout y stderr." #: ../Doc/c-api/init_config.rst:705 msgid "" -"If :c:member:`~PyConfig.buffered_stdio` equals zero, disable buffering of " -"stdin, stdout and stderr streams." +"If :c:member:`~PyConfig.buffered_stdio` equals zero, disable buffering of stdin, stdout and stderr " +"streams." msgstr "" -"Si :c:member:`~PyConfig.buffered_stdio` es igual a cero, deshabilite el " -"almacenamiento en búfer de los flujos stdin, stdout y stderr." +"Si :c:member:`~PyConfig.buffered_stdio` es igual a cero, deshabilite el almacenamiento en búfer de " +"los flujos stdin, stdout y stderr." #: ../Doc/c-api/init_config.rst:707 msgid "" -"If :c:member:`~PyConfig.interactive` is non-zero, enable stream buffering on " -"stdin and stdout (only stdout on Windows)." +"If :c:member:`~PyConfig.interactive` is non-zero, enable stream buffering on stdin and stdout (only " +"stdout on Windows)." msgstr "" -"Si :c:member:`~PyConfig.interactive` no es cero, habilite el almacenamiento " -"en búfer de flujo en stdin y stdout (solo stdout en Windows)." +"Si :c:member:`~PyConfig.interactive` no es cero, habilite el almacenamiento en búfer de flujo en " +"stdin y stdout (solo stdout en Windows)." #: ../Doc/c-api/init_config.rst:714 msgid "If non-zero, enable the :ref:`Python Development Mode `." -msgstr "" -"Si es distinto de cero, habilita :ref:`Modo de desarrollo de Python " -"`." +msgstr "Si es distinto de cero, habilita :ref:`Modo de desarrollo de Python `." #: ../Doc/c-api/init_config.rst:716 -#, fuzzy msgid "" -"Set to ``1`` by the :option:`-X dev <-X>` option and the :envvar:" -"`PYTHONDEVMODE` environment variable." +"Set to ``1`` by the :option:`-X dev <-X>` option and the :envvar:`PYTHONDEVMODE` environment variable." msgstr "" -"Configure el ``1`` mediante la opción :option:`-X importtime <-X>` y la " -"variable de entorno :envvar:`PYTHONPROFILEIMPORTTIME`." +"Establecido en ``1`` por la opción :option:`-X dev <-X>` y la variable de entorno :envvar:" +"`PYTHONDEVMODE`." #: ../Doc/c-api/init_config.rst:723 -#, fuzzy msgid "Dump Python references?" msgstr "¿Volcar referencias de Python?" #: ../Doc/c-api/init_config.rst:725 msgid "If non-zero, dump all objects which are still alive at exit." -msgstr "" -"Si no es cero, volcar todos los objetos que aún están vivos en la salida." +msgstr "Si no es cero, volcar todos los objetos que aún están vivos en la salida." #: ../Doc/c-api/init_config.rst:727 msgid "Set to ``1`` by the :envvar:`PYTHONDUMPREFS` environment variable." -msgstr "" -"Establecido en ``1`` por la variable de entorno :envvar:`PYTHONDUMPREFS`." +msgstr "Establecido en ``1`` por la variable de entorno :envvar:`PYTHONDUMPREFS`." #: ../Doc/c-api/init_config.rst:729 -#, fuzzy msgid "" -"Needs a special build of Python with the ``Py_TRACE_REFS`` macro defined: " -"see the :option:`configure --with-trace-refs option <--with-trace-refs>`." +"Needs a special build of Python with the ``Py_TRACE_REFS`` macro defined: see the :option:`configure " +"--with-trace-refs option <--with-trace-refs>`." msgstr "" -"Necesita una compilación especial de Python con la macro ``Py_TRACE_REFS`` " -"definida: consulte la :option:`opción de configure --with-trace-refs option " -"<--with-trace-refs>`." +"Necesita una compilación especial de Python con la macro ``Py_TRACE_REFS`` definida: consulte la " +"opción :option:`configure --with-trace-refs <--with-trace-refs>`." #: ../Doc/c-api/init_config.rst:736 msgid "" -"The site-specific directory prefix where the platform-dependent Python files " -"are installed: :data:`sys.exec_prefix`." +"The site-specific directory prefix where the platform-dependent Python files are installed: :data:" +"`sys.exec_prefix`." msgstr "" -"El prefijo de directorio específico del sitio donde se instalan los archivos " -"Python dependientes de la plataforma: :data:`sys.exec_prefix`." +"El prefijo de directorio específico del sitio donde se instalan los archivos Python dependientes de " +"la plataforma: :data:`sys.exec_prefix`." #: ../Doc/c-api/init_config.rst:743 -#, fuzzy msgid "See also :c:member:`PyConfig.base_exec_prefix`." -msgstr ":c:member:`PyConfig.base_exec_prefix`" +msgstr "Consulte también :c:member:`PyConfig.base_exec_prefix`." #: ../Doc/c-api/init_config.rst:747 -msgid "" -"The absolute path of the executable binary for the Python interpreter: :data:" -"`sys.executable`." -msgstr "" -"La ruta absoluta del binario ejecutable para el intérprete de Python: :data:" -"`sys.executable`." +msgid "The absolute path of the executable binary for the Python interpreter: :data:`sys.executable`." +msgstr "La ruta absoluta del binario ejecutable para el intérprete de Python: :data:`sys.executable`." #: ../Doc/c-api/init_config.rst:754 -#, fuzzy msgid "See also :c:member:`PyConfig.base_executable`." -msgstr ":c:member:`PyConfig.base_executable`" +msgstr "Consulte también :c:member:`PyConfig.base_executable`." #: ../Doc/c-api/init_config.rst:758 msgid "Enable faulthandler?" @@ -1297,34 +1169,31 @@ msgstr "Si no es cero, llama a :func:`faulthandler.enable` al inicio." #: ../Doc/c-api/init_config.rst:762 msgid "" -"Set to ``1`` by :option:`-X faulthandler <-X>` and the :envvar:" -"`PYTHONFAULTHANDLER` environment variable." +"Set to ``1`` by :option:`-X faulthandler <-X>` and the :envvar:`PYTHONFAULTHANDLER` environment " +"variable." msgstr "" -"Establecido en ``1`` por :option:`-X faulthandler <-X>` y la variable de " -"entorno :envvar:`PYTHONFAULTHANDLER`." +"Establecido en ``1`` por :option:`-X faulthandler <-X>` y la variable de entorno :envvar:" +"`PYTHONFAULTHANDLER`." #: ../Doc/c-api/init_config.rst:769 msgid "" -":term:`Filesystem encoding `: :func:" -"`sys.getfilesystemencoding`." +":term:`Filesystem encoding `: :func:`sys." +"getfilesystemencoding`." msgstr "" -":term:`Codificación del sistema de archvios `: :func:`sys.getfilesystemencoding`." +":term:`Codificación del sistema de archvios `: :func:`sys." +"getfilesystemencoding`." #: ../Doc/c-api/init_config.rst:772 msgid "On macOS, Android and VxWorks: use ``\"utf-8\"`` by default." -msgstr "" -"En macOS, Android y VxWorks: use ``\"utf-8\"`` de forma predeterminada." +msgstr "En macOS, Android y VxWorks: use ``\"utf-8\"`` de forma predeterminada." #: ../Doc/c-api/init_config.rst:774 msgid "" -"On Windows: use ``\"utf-8\"`` by default, or ``\"mbcs\"`` if :c:member:" -"`~PyPreConfig.legacy_windows_fs_encoding` of :c:type:`PyPreConfig` is non-" -"zero." +"On Windows: use ``\"utf-8\"`` by default, or ``\"mbcs\"`` if :c:member:`~PyPreConfig." +"legacy_windows_fs_encoding` of :c:type:`PyPreConfig` is non-zero." msgstr "" -"En Windows: utilice ``\"utf-8\"`` de forma predeterminada o ``\"mbcs\"`` si :" -"c:member:`~PyPreConfig.legacy_windows_fs_encoding` de :c:type:`PyPreConfig` " -"no es cero." +"En Windows: utilice ``\"utf-8\"`` de forma predeterminada o ``\"mbcs\"`` si :c:member:`~PyPreConfig." +"legacy_windows_fs_encoding` de :c:type:`PyPreConfig` no es cero." #: ../Doc/c-api/init_config.rst:778 msgid "Default encoding on other platforms:" @@ -1332,40 +1201,31 @@ msgstr "Codificación predeterminada en otras plataformas:" #: ../Doc/c-api/init_config.rst:780 msgid "``\"utf-8\"`` if :c:member:`PyPreConfig.utf8_mode` is non-zero." -msgstr "" -"``\"utf-8\"`` si :c:member:`PyPreConfig.utf8_mode` es distinto de cero." +msgstr "``\"utf-8\"`` si :c:member:`PyPreConfig.utf8_mode` es distinto de cero." #: ../Doc/c-api/init_config.rst:781 -#, fuzzy msgid "" -"``\"ascii\"`` if Python detects that ``nl_langinfo(CODESET)`` announces the " -"ASCII encoding, whereas the ``mbstowcs()`` function decodes from a different " -"encoding (usually Latin1)." +"``\"ascii\"`` if Python detects that ``nl_langinfo(CODESET)`` announces the ASCII encoding, whereas " +"the ``mbstowcs()`` function decodes from a different encoding (usually Latin1)." msgstr "" -"``\"ascii\"`` si Python detecta que ``nl_langinfo(CODESET)`` anuncia la " -"codificación ASCII (o la codificación Roman8 en HP-UX), mientras que la " -"función ``mbstowcs()`` descodifica a partir de una codificación diferente " -"(generalmente Latin1)." +"``\"ascii\"`` si Python detecta que ``nl_langinfo(CODESET)`` anuncia la codificación ASCII, mientras " +"que la función ``mbstowcs()`` decodifica desde una codificación diferente (usualmente Latin1)." #: ../Doc/c-api/init_config.rst:784 msgid "``\"utf-8\"`` if ``nl_langinfo(CODESET)`` returns an empty string." msgstr "``\"utf-8\"`` si ``nl_langinfo(CODESET)`` retorna una cadena vacía." #: ../Doc/c-api/init_config.rst:785 -msgid "" -"Otherwise, use the :term:`locale encoding`: ``nl_langinfo(CODESET)`` result." -msgstr "" -"De lo contrario, utilice el resultado :term:`locale encoding`: " -"``nl_langinfo(CODESET)``." +msgid "Otherwise, use the :term:`locale encoding`: ``nl_langinfo(CODESET)`` result." +msgstr "De lo contrario, utilice el resultado :term:`locale encoding`: ``nl_langinfo(CODESET)``." #: ../Doc/c-api/init_config.rst:788 msgid "" -"At Python startup, the encoding name is normalized to the Python codec name. " -"For example, ``\"ANSI_X3.4-1968\"`` is replaced with ``\"ascii\"``." +"At Python startup, the encoding name is normalized to the Python codec name. For example, " +"``\"ANSI_X3.4-1968\"`` is replaced with ``\"ascii\"``." msgstr "" -"Al inicio de Python, el nombre de codificación se normaliza al nombre del " -"códec de Python. Por ejemplo, ``\"ANSI_X3.4-1968\"`` se reemplaza por " -"``\"ascii\"``." +"Al inicio de Python, el nombre de codificación se normaliza al nombre del códec de Python. Por " +"ejemplo, ``\"ANSI_X3.4-1968\"`` se reemplaza por ``\"ascii\"``." #: ../Doc/c-api/init_config.rst:791 msgid "See also the :c:member:`~PyConfig.filesystem_errors` member." @@ -1373,27 +1233,23 @@ msgstr "Consulte también el miembro :c:member:`~PyConfig.filesystem_errors`." #: ../Doc/c-api/init_config.rst:795 msgid "" -":term:`Filesystem error handler `: :" -"func:`sys.getfilesystemencodeerrors`." +":term:`Filesystem error handler `: :func:`sys." +"getfilesystemencodeerrors`." msgstr "" -":term:`Manejador de errores del sistema de archivos `: :func:`sys.getfilesystemencodeerrors`." +":term:`Manejador de errores del sistema de archivos `: :func:" +"`sys.getfilesystemencodeerrors`." #: ../Doc/c-api/init_config.rst:798 msgid "" -"On Windows: use ``\"surrogatepass\"`` by default, or ``\"replace\"`` if :c:" -"member:`~PyPreConfig.legacy_windows_fs_encoding` of :c:type:`PyPreConfig` is " -"non-zero." +"On Windows: use ``\"surrogatepass\"`` by default, or ``\"replace\"`` if :c:member:`~PyPreConfig." +"legacy_windows_fs_encoding` of :c:type:`PyPreConfig` is non-zero." msgstr "" -"En Windows: utilice ``\"surrogatepass\"`` de forma predeterminada o " -"``\"replace\"`` si :c:member:`~PyPreConfig.legacy_windows_fs_encoding` de :c:" -"type:`PyPreConfig` no es cero." +"En Windows: utilice ``\"surrogatepass\"`` de forma predeterminada o ``\"replace\"`` si :c:member:" +"`~PyPreConfig.legacy_windows_fs_encoding` de :c:type:`PyPreConfig` no es cero." #: ../Doc/c-api/init_config.rst:802 msgid "On other platforms: use ``\"surrogateescape\"`` by default." -msgstr "" -"En otras plataformas: utilice ``\"surrogateescape\"`` de forma " -"predeterminada." +msgstr "En otras plataformas: utilice ``\"surrogateescape\"`` de forma predeterminada." #: ../Doc/c-api/init_config.rst:804 msgid "Supported error handlers:" @@ -1421,39 +1277,36 @@ msgstr "Funciones de semillas aleatorias hash." #: ../Doc/c-api/init_config.rst:817 msgid "" -"If :c:member:`~PyConfig.use_hash_seed` is zero, a seed is chosen randomly at " -"Python startup, and :c:member:`~PyConfig.hash_seed` is ignored." +"If :c:member:`~PyConfig.use_hash_seed` is zero, a seed is chosen randomly at Python startup, and :c:" +"member:`~PyConfig.hash_seed` is ignored." msgstr "" -"Si :c:member:`~PyConfig.use_hash_seed` es cero, se elige una semilla al azar " -"en el inicio de Python y se ignora :c:member:`~PyConfig.hash_seed`." +"Si :c:member:`~PyConfig.use_hash_seed` es cero, se elige una semilla al azar en el inicio de Python y " +"se ignora :c:member:`~PyConfig.hash_seed`." #: ../Doc/c-api/init_config.rst:820 msgid "Set by the :envvar:`PYTHONHASHSEED` environment variable." msgstr "Establecido por la variable de entorno :envvar:`PYTHONHASHSEED`." #: ../Doc/c-api/init_config.rst:822 -msgid "" -"Default *use_hash_seed* value: ``-1`` in Python mode, ``0`` in isolated mode." -msgstr "" -"Valor predeterminado de *use_hash_seed*: ``-1`` en modo Python, ``0`` en " -"modo aislado." +msgid "Default *use_hash_seed* value: ``-1`` in Python mode, ``0`` in isolated mode." +msgstr "Valor predeterminado de *use_hash_seed*: ``-1`` en modo Python, ``0`` en modo aislado." #: ../Doc/c-api/init_config.rst:827 msgid "" -"Set the default Python \"home\" directory, that is, the location of the " -"standard Python libraries (see :envvar:`PYTHONHOME`)." +"Set the default Python \"home\" directory, that is, the location of the standard Python libraries " +"(see :envvar:`PYTHONHOME`)." msgstr "" +"Establece el directorio \"home\" de Python por defecto, es decir, la ubicación de las bibliotecas " +"estándar de Python (ver :envvar:`PYTHONHOME`)." #: ../Doc/c-api/init_config.rst:830 msgid "Set by the :envvar:`PYTHONHOME` environment variable." msgstr "Establecido por la variable de entorno :envvar:`PYTHONHOME`." -#: ../Doc/c-api/init_config.rst:834 ../Doc/c-api/init_config.rst:964 -#: ../Doc/c-api/init_config.rst:984 ../Doc/c-api/init_config.rst:1073 -#: ../Doc/c-api/init_config.rst:1104 +#: ../Doc/c-api/init_config.rst:834 ../Doc/c-api/init_config.rst:964 ../Doc/c-api/init_config.rst:984 +#: ../Doc/c-api/init_config.rst:1073 ../Doc/c-api/init_config.rst:1104 msgid "Part of the :ref:`Python Path Configuration ` input." -msgstr "" -"Parte de la entrada :ref:`Python Path Configuration `." +msgstr "Parte de la entrada :ref:`Python Path Configuration `." #: ../Doc/c-api/init_config.rst:838 msgid "If non-zero, profile import time." @@ -1461,51 +1314,46 @@ msgstr "Si no es cero, el tiempo de importación del perfil." #: ../Doc/c-api/init_config.rst:840 msgid "" -"Set the ``1`` by the :option:`-X importtime <-X>` option and the :envvar:" -"`PYTHONPROFILEIMPORTTIME` environment variable." +"Set the ``1`` by the :option:`-X importtime <-X>` option and the :envvar:`PYTHONPROFILEIMPORTTIME` " +"environment variable." msgstr "" -"Configure el ``1`` mediante la opción :option:`-X importtime <-X>` y la " -"variable de entorno :envvar:`PYTHONPROFILEIMPORTTIME`." +"Configure el ``1`` mediante la opción :option:`-X importtime <-X>` y la variable de entorno :envvar:" +"`PYTHONPROFILEIMPORTTIME`." #: ../Doc/c-api/init_config.rst:847 msgid "Enter interactive mode after executing a script or a command." -msgstr "" -"Ingresa al modo interactivo después de ejecutar un script o un comando." +msgstr "Ingresa al modo interactivo después de ejecutar un script o un comando." #: ../Doc/c-api/init_config.rst:849 -#, fuzzy msgid "" -"If greater than ``0``, enable inspect: when a script is passed as first " -"argument or the -c option is used, enter interactive mode after executing " -"the script or the command, even when :data:`sys.stdin` does not appear to be " -"a terminal." +"If greater than ``0``, enable inspect: when a script is passed as first argument or the -c option is " +"used, enter interactive mode after executing the script or the command, even when :data:`sys.stdin` " +"does not appear to be a terminal." msgstr "" -"Si es mayor que 0, habilite inspeccionar: cuando se pasa una secuencia de " -"comandos como primer argumento o se usa la opción -c, ingrese al modo " -"interactivo después de ejecutar la secuencia de comandos o el comando, " -"incluso cuando :data:`sys.stdin` no parezca ser una terminal." +"Si es mayor que ``0``, habilite la inspección: cuando se pasa un script como primer argumento o se " +"usa la opción -c, ingrese al modo interactivo después de ejecutar el script o el comando, incluso " +"cuando :data:`sys.stdin` no parezca ser una terminal." #: ../Doc/c-api/init_config.rst:854 msgid "" -"Incremented by the :option:`-i` command line option. Set to ``1`` if the :" -"envvar:`PYTHONINSPECT` environment variable is non-empty." +"Incremented by the :option:`-i` command line option. Set to ``1`` if the :envvar:`PYTHONINSPECT` " +"environment variable is non-empty." msgstr "" -"Incrementado por la opción de línea de comando :option:`-i`. Establecido en " -"``1`` si la variable de entorno :envvar:`PYTHONINSPECT` no está vacía." +"Incrementado por la opción de línea de comando :option:`-i`. Establecido en ``1`` si la variable de " +"entorno :envvar:`PYTHONINSPECT` no está vacía." #: ../Doc/c-api/init_config.rst:861 msgid "Install Python signal handlers?" msgstr "¿Instalar controladores de señales de Python?" -#: ../Doc/c-api/init_config.rst:863 ../Doc/c-api/init_config.rst:1047 -#: ../Doc/c-api/init_config.rst:1071 ../Doc/c-api/init_config.rst:1282 +#: ../Doc/c-api/init_config.rst:863 ../Doc/c-api/init_config.rst:1047 ../Doc/c-api/init_config.rst:1071 +#: ../Doc/c-api/init_config.rst:1282 msgid "Default: ``1`` in Python mode, ``0`` in isolated mode." msgstr "Por defecto: ``1`` en modo Python, ``0`` en modo aislado." #: ../Doc/c-api/init_config.rst:867 -#, fuzzy msgid "If greater than ``0``, enable the interactive mode (REPL)." -msgstr "Si es mayor que 0, habilita el modo interactivo (REPL)." +msgstr "Si es mayor que ``0``, habilita el modo interactivo (REPL)." #: ../Doc/c-api/init_config.rst:869 msgid "Incremented by the :option:`-i` command line option." @@ -1513,195 +1361,169 @@ msgstr "Incrementado por la opción de línea de comando :option:`-i`." #: ../Doc/c-api/init_config.rst:875 msgid "" -"Configures the :ref:`integer string conversion length limitation " -"`. An initial value of ``-1`` means the value will be " -"taken from the command line or environment or otherwise default to 4300 (:" -"data:`sys.int_info.default_max_str_digits`). A value of ``0`` disables the " +"Configures the :ref:`integer string conversion length limitation `. An initial " +"value of ``-1`` means the value will be taken from the command line or environment or otherwise " +"default to 4300 (:data:`sys.int_info.default_max_str_digits`). A value of ``0`` disables the " "limitation. Values greater than zero but less than 640 (:data:`sys.int_info." "str_digits_check_threshold`) are unsupported and will produce an error." msgstr "" +"Configura la :ref:`limitación de la longitud de conversión de entero a cadena `. " +"Un valor inicial de ``-1`` significa que el valor se tomará de la línea de comandos o del entorno o, " +"de lo contrario, será por defecto 4300 (:data:`sys.int_info.default_max_str_digits`). Un valor de " +"``0`` deshabilita la limitación. Los valores mayores que cero pero menores que 640 (:data:`sys." +"int_info.str_digits_check_threshold`) no son compatibles y producirán un error." #: ../Doc/c-api/init_config.rst:883 -#, fuzzy msgid "" -"Configured by the :option:`-X int_max_str_digits <-X>` command line flag or " -"the :envvar:`PYTHONINTMAXSTRDIGITS` environment variable." +"Configured by the :option:`-X int_max_str_digits <-X>` command line flag or the :envvar:" +"`PYTHONINTMAXSTRDIGITS` environment variable." msgstr "" -"Establecido por la opción de línea de comando :option:`-X " -"pycache_prefix=PATH <-X>` y la variable de entorno :envvar:" -"`PYTHONPYCACHEPREFIX`." +"Configurado por la bandera de línea de comandos :option:`-X int_max_str_digits <-X>` o la variable de " +"entorno :envvar:`PYTHONINTMAXSTRDIGITS`." #: ../Doc/c-api/init_config.rst:886 -#, fuzzy msgid "" -"Default: ``-1`` in Python mode. 4300 (:data:`sys.int_info." -"default_max_str_digits`) in isolated mode." -msgstr "Por defecto: ``-1`` en modo Python, ``0`` en modo aislado." +"Default: ``-1`` in Python mode. 4300 (:data:`sys.int_info.default_max_str_digits`) in isolated mode." +msgstr "" +"Predeterminado: ``-1`` en modo Python. 4300 (:data:`sys.int_info.default_max_str_digits`) en modo " +"aislado." #: ../Doc/c-api/init_config.rst:893 msgid "" -"If the value of :c:member:`~PyConfig.cpu_count` is not ``-1`` then it will " -"override the return values of :func:`os.cpu_count`, :func:`os." -"process_cpu_count`, and :func:`multiprocessing.cpu_count`." +"If the value of :c:member:`~PyConfig.cpu_count` is not ``-1`` then it will override the return values " +"of :func:`os.cpu_count`, :func:`os.process_cpu_count`, and :func:`multiprocessing.cpu_count`." msgstr "" +"Si el valor de :c:member:`~PyConfig.cpu_count` no es ``-1``, entonces anulará los valores de retorno " +"de :func:`os.cpu_count`, :func:`os.process_cpu_count` y :func:`multiprocessing.cpu_count`." #: ../Doc/c-api/init_config.rst:897 -#, fuzzy msgid "" -"Configured by the :samp:`-X cpu_count={n|default}` command line flag or the :" -"envvar:`PYTHON_CPU_COUNT` environment variable." +"Configured by the :samp:`-X cpu_count={n|default}` command line flag or the :envvar:" +"`PYTHON_CPU_COUNT` environment variable." msgstr "" -"Establecido por la opción de línea de comando :option:`-X " -"pycache_prefix=PATH <-X>` y la variable de entorno :envvar:" -"`PYTHONPYCACHEPREFIX`." +"Configurado por la bandera de línea de comandos :samp:`-X cpu_count={n|default}` o la variable de " +"entorno :envvar:`PYTHON_CPU_COUNT`." #: ../Doc/c-api/init_config.rst:900 ../Doc/c-api/init_config.rst:1259 -#, fuzzy msgid "Default: ``-1``." -msgstr "Predeterminado: ``1``." +msgstr "Predeterminado: ``-1``." #: ../Doc/c-api/init_config.rst:906 -#, fuzzy msgid "If greater than ``0``, enable isolated mode:" -msgstr "Si es mayor que 0, habilite el modo aislado:" +msgstr "Si es mayor que ``0``, habilite el modo aislado:" #: ../Doc/c-api/init_config.rst:908 -#, fuzzy msgid "" -"Set :c:member:`~PyConfig.safe_path` to ``1``: don't prepend a potentially " -"unsafe path to :data:`sys.path` at Python startup, such as the current " -"directory, the script's directory or an empty string." +"Set :c:member:`~PyConfig.safe_path` to ``1``: don't prepend a potentially unsafe path to :data:`sys." +"path` at Python startup, such as the current directory, the script's directory or an empty string." msgstr "" -"Poner :c:member:`~PyConfig.safe_path` to ``1``: no anteponer una ruta " -"potencialmente insegura a :data:`sys.path` al inicio de Python." +"Establezca :c:member:`~PyConfig.safe_path` en ``1``: no anteponga una ruta potencialmente insegura a :" +"data:`sys.path` al inicio de Python, como el directorio actual, el directorio del script o una cadena " +"vacía." #: ../Doc/c-api/init_config.rst:912 -#, fuzzy -msgid "" -"Set :c:member:`~PyConfig.use_environment` to ``0``: ignore ``PYTHON`` " -"environment variables." -msgstr ":c:member:`PyConfig.use_environment`" +msgid "Set :c:member:`~PyConfig.use_environment` to ``0``: ignore ``PYTHON`` environment variables." +msgstr "" +"Establezca :c:member:`~PyConfig.use_environment` en ``0``: ignore las variables de entorno ``PYTHON``." #: ../Doc/c-api/init_config.rst:914 -#, fuzzy msgid "" -"Set :c:member:`~PyConfig.user_site_directory` to ``0``: don't add the user " -"site directory to :data:`sys.path`." -msgstr "" -"Si es distinto de cero, agregue el directorio del sitio del usuario a :data:" +"Set :c:member:`~PyConfig.user_site_directory` to ``0``: don't add the user site directory to :data:" "`sys.path`." +msgstr "" +"Establezca :c:member:`~PyConfig.user_site_directory` en ``0``: no agregue el directorio del sitio del " +"usuario a :data:`sys.path`." #: ../Doc/c-api/init_config.rst:916 msgid "" -"Python REPL doesn't import :mod:`readline` nor enable default readline " -"configuration on interactive prompts." +"Python REPL doesn't import :mod:`readline` nor enable default readline configuration on interactive " +"prompts." msgstr "" -"Python REPL no importa :mod:`readline` ni habilita la configuración " -"predeterminada de readline en mensajes interactivos." +"Python REPL no importa :mod:`readline` ni habilita la configuración predeterminada de readline en " +"mensajes interactivos." #: ../Doc/c-api/init_config.rst:919 -#, fuzzy msgid "Set to ``1`` by the :option:`-I` command line option." -msgstr "" -"Establecido en ``1`` mediante la opción de línea de comando :option:`-x`." +msgstr "Establecido en ``1`` por la opción de línea de comando :option:`-I`." #: ../Doc/c-api/init_config.rst:923 -#, fuzzy msgid "" -"See also the :ref:`Isolated Configuration ` and :c:" -"member:`PyPreConfig.isolated`." +"See also the :ref:`Isolated Configuration ` and :c:member:`PyPreConfig.isolated`." msgstr "" -"Inicialice la configuración con la :ref:`Configuración Aislada `." +"Consulte también la :ref:`Configuración Aislada ` y :c:member:`PyPreConfig." +"isolated`." #: ../Doc/c-api/init_config.rst:928 -#, fuzzy msgid "" -"If non-zero, use :class:`io.FileIO` instead of :class:`!io." -"_WindowsConsoleIO` for :data:`sys.stdin`, :data:`sys.stdout` and :data:`sys." -"stderr`." +"If non-zero, use :class:`io.FileIO` instead of :class:`!io._WindowsConsoleIO` for :data:`sys.stdin`, :" +"data:`sys.stdout` and :data:`sys.stderr`." msgstr "" -"Si no es cero, usa :class:`io.FileIO` en lugar de :class:`io." -"WindowsConsoleIO` para :data:`sys.stdin`, :data:`sys.stdout` y :data:`sys." -"stderr`." +"Si no es cero, use :class:`io.FileIO` en lugar de :class:`!io._WindowsConsoleIO` para :data:`sys." +"stdin`, :data:`sys.stdout` y :data:`sys.stderr`." #: ../Doc/c-api/init_config.rst:932 msgid "" -"Set to ``1`` if the :envvar:`PYTHONLEGACYWINDOWSSTDIO` environment variable " -"is set to a non-empty string." +"Set to ``1`` if the :envvar:`PYTHONLEGACYWINDOWSSTDIO` environment variable is set to a non-empty " +"string." msgstr "" -"Establecido en ``1`` si la variable de entorno :envvar:" -"`PYTHONLEGACYWINDOWSSTDIO` está establecida en una cadena no vacía." +"Establecido en ``1`` si la variable de entorno :envvar:`PYTHONLEGACYWINDOWSSTDIO` está establecida en " +"una cadena no vacía." #: ../Doc/c-api/init_config.rst:940 msgid "See also the :pep:`528` (Change Windows console encoding to UTF-8)." -msgstr "" -"Consulte también :pep:`528` (Cambiar la codificación de la consola de " -"Windows a UTF-8)." +msgstr "Consulte también :pep:`528` (Cambiar la codificación de la consola de Windows a UTF-8)." #: ../Doc/c-api/init_config.rst:944 -msgid "" -"If non-zero, dump statistics on :ref:`Python pymalloc memory allocator " -"` at exit." +msgid "If non-zero, dump statistics on :ref:`Python pymalloc memory allocator ` at exit." msgstr "" -"Si no es cero, volcar las estadísticas en :ref:`Asignador de memoria Python " -"pymalloc ` en la salida." +"Si no es cero, volcar las estadísticas en :ref:`Asignador de memoria Python pymalloc ` en " +"la salida." #: ../Doc/c-api/init_config.rst:947 msgid "Set to ``1`` by the :envvar:`PYTHONMALLOCSTATS` environment variable." -msgstr "" -"Establecido en ``1`` por la variable de entorno :envvar:`PYTHONMALLOCSTATS`." +msgstr "Establecido en ``1`` por la variable de entorno :envvar:`PYTHONMALLOCSTATS`." #: ../Doc/c-api/init_config.rst:949 msgid "" -"The option is ignored if Python is :option:`configured using the --without-" -"pymalloc option <--without-pymalloc>`." +"The option is ignored if Python is :option:`configured using the --without-pymalloc option <--without-" +"pymalloc>`." msgstr "" -"La opción se ignora si Python es :option:`configurado usando la opción --" -"without-pymalloc <--without-pymalloc>`." +"La opción se ignora si Python es :option:`configurado usando la opción --without-pymalloc <--without-" +"pymalloc>`." #: ../Doc/c-api/init_config.rst:956 msgid "Platform library directory name: :data:`sys.platlibdir`." -msgstr "" -"Nombre del directorio de la biblioteca de la plataforma: :data:`sys." -"platlibdir`." +msgstr "Nombre del directorio de la biblioteca de la plataforma: :data:`sys.platlibdir`." #: ../Doc/c-api/init_config.rst:958 msgid "Set by the :envvar:`PYTHONPLATLIBDIR` environment variable." msgstr "Establecido por la variable de entorno :envvar:`PYTHONPLATLIBDIR`." #: ../Doc/c-api/init_config.rst:960 -#, fuzzy msgid "" -"Default: value of the ``PLATLIBDIR`` macro which is set by the :option:" -"`configure --with-platlibdir option <--with-platlibdir>` (default: " -"``\"lib\"``, or ``\"DLLs\"`` on Windows)." +"Default: value of the ``PLATLIBDIR`` macro which is set by the :option:`configure --with-platlibdir " +"option <--with-platlibdir>` (default: ``\"lib\"``, or ``\"DLLs\"`` on Windows)." msgstr "" -"Predeterminado: valor de la macro ``PLATLIBDIR`` que establece la :option:" -"`opción configure --with-platlibdir <--with-platlibdir>` (predeterminado: " -"``\"lib\"``)." +"Predeterminado: valor de la macro ``PLATLIBDIR`` que se establece mediante la opción :option:" +"`configure --with-platlibdir <--with-platlibdir>` (predeterminado: ``\"lib\"``, o ``\"DLLs\"`` en " +"Windows)." #: ../Doc/c-api/init_config.rst:968 msgid "" -"This macro is now used on Windows to locate the standard library extension " -"modules, typically under ``DLLs``. However, for compatibility, note that " -"this value is ignored for any non-standard layouts, including in-tree builds " -"and virtual environments." +"This macro is now used on Windows to locate the standard library extension modules, typically under " +"``DLLs``. However, for compatibility, note that this value is ignored for any non-standard layouts, " +"including in-tree builds and virtual environments." msgstr "" -"Esta macro se utiliza ahora en Windows para localizar los módulos de " -"extensión de la biblioteca estándar, normalmente en ``DLLs``. Sin embargo, " -"por compatibilidad, tenga en cuenta que este valor se ignora para cualquier " -"disposición no estándar, incluyendo las construcciones dentro del árbol y " -"los entornos virtuales." +"Esta macro se utiliza ahora en Windows para localizar los módulos de extensión de la biblioteca " +"estándar, normalmente en ``DLLs``. Sin embargo, por compatibilidad, tenga en cuenta que este valor se " +"ignora para cualquier disposición no estándar, incluyendo las construcciones dentro del árbol y los " +"entornos virtuales." #: ../Doc/c-api/init_config.rst:977 -#, fuzzy -msgid "" -"Module search paths (:data:`sys.path`) as a string separated by ``DELIM`` (:" -"data:`os.pathsep`)." +msgid "Module search paths (:data:`sys.path`) as a string separated by ``DELIM`` (:data:`os.pathsep`)." msgstr "" -"Rutas de búsqueda de módulos (:data:`sys.path`) como una cadena separada por " -"``DELIM`` (:data:`os.path.pathsep`)." +"Rutas de búsqueda de módulos (:data:`sys.path`) como una cadena separada por ``DELIM`` (:data:`os." +"pathsep`)." #: ../Doc/c-api/init_config.rst:980 msgid "Set by the :envvar:`PYTHONPATH` environment variable." @@ -1712,25 +1534,18 @@ msgid "Module search paths: :data:`sys.path`." msgstr "Rutas de búsqueda del módulo: :data:`sys.path`." #: ../Doc/c-api/init_config.rst:991 -#, fuzzy msgid "" -"If :c:member:`~PyConfig.module_search_paths_set` is equal to ``0``, :c:func:" -"`Py_InitializeFromConfig` will replace :c:member:`~PyConfig." -"module_search_paths` and sets :c:member:`~PyConfig.module_search_paths_set` " -"to ``1``." +"If :c:member:`~PyConfig.module_search_paths_set` is equal to ``0``, :c:func:`Py_InitializeFromConfig` " +"will replace :c:member:`~PyConfig.module_search_paths` and sets :c:member:`~PyConfig." +"module_search_paths_set` to ``1``." msgstr "" -"Si :c:member:`~PyConfig.module_search_paths_set` es igual a 0, la función " -"que calcula :ref:`Python Path Configuration ` anula :c:" -"member:`~PyConfig.module_search_paths` y establece :c:member:`~PyConfig." +"Si :c:member:`~PyConfig.module_search_paths_set` es igual a ``0``, :c:func:`Py_InitializeFromConfig` " +"reemplazará :c:member:`~PyConfig.module_search_paths` y establecerá :c:member:`~PyConfig." "module_search_paths_set` en ``1``." #: ../Doc/c-api/init_config.rst:996 -msgid "" -"Default: empty list (``module_search_paths``) and ``0`` " -"(``module_search_paths_set``)." -msgstr "" -"Por defecto: lista vacía (``module_search_paths``) y ``0`` " -"(``module_search_paths_set``)." +msgid "Default: empty list (``module_search_paths``) and ``0`` (``module_search_paths_set``)." +msgstr "Por defecto: lista vacía (``module_search_paths``) y ``0`` (``module_search_paths_set``)." #: ../Doc/c-api/init_config.rst:1003 msgid "Compilation optimization level:" @@ -1742,8 +1557,7 @@ msgstr "``0``: Optimizador de mirilla, configure ``__debug__`` en ``True``." #: ../Doc/c-api/init_config.rst:1006 msgid "``1``: Level 0, remove assertions, set ``__debug__`` to ``False``." -msgstr "" -"``1``: Nivel 0, elimina las aserciones, establece ``__debug__`` en ``False``." +msgstr "``1``: Nivel 0, elimina las aserciones, establece ``__debug__`` en ``False``." #: ../Doc/c-api/init_config.rst:1007 msgid "``2``: Level 1, strip docstrings." @@ -1751,44 +1565,37 @@ msgstr "``2``: Nivel 1, elimina docstrings." #: ../Doc/c-api/init_config.rst:1009 msgid "" -"Incremented by the :option:`-O` command line option. Set to the :envvar:" -"`PYTHONOPTIMIZE` environment variable value." +"Incremented by the :option:`-O` command line option. Set to the :envvar:`PYTHONOPTIMIZE` environment " +"variable value." msgstr "" -"Incrementado por la opción de línea de comando :option:`-O`. Establecido en " -"el valor de la variable de entorno :envvar:`PYTHONOPTIMIZE`." +"Incrementado por la opción de línea de comando :option:`-O`. Establecido en el valor de la variable " +"de entorno :envvar:`PYTHONOPTIMIZE`." #: ../Doc/c-api/init_config.rst:1016 msgid "" -"The list of the original command line arguments passed to the Python " -"executable: :data:`sys.orig_argv`." +"The list of the original command line arguments passed to the Python executable: :data:`sys." +"orig_argv`." msgstr "" -"La lista de los argumentos originales de la línea de comandos pasados al " -"ejecutable de Python: :data:`sys.orig_argv`." +"La lista de los argumentos originales de la línea de comandos pasados al ejecutable de Python: :data:" +"`sys.orig_argv`." #: ../Doc/c-api/init_config.rst:1019 msgid "" -"If :c:member:`~PyConfig.orig_argv` list is empty and :c:member:`~PyConfig." -"argv` is not a list only containing an empty string, :c:func:`PyConfig_Read` " -"copies :c:member:`~PyConfig.argv` into :c:member:`~PyConfig.orig_argv` " -"before modifying :c:member:`~PyConfig.argv` (if :c:member:`~PyConfig." +"If :c:member:`~PyConfig.orig_argv` list is empty and :c:member:`~PyConfig.argv` is not a list only " +"containing an empty string, :c:func:`PyConfig_Read` copies :c:member:`~PyConfig.argv` into :c:member:" +"`~PyConfig.orig_argv` before modifying :c:member:`~PyConfig.argv` (if :c:member:`~PyConfig." "parse_argv` is non-zero)." msgstr "" -"Si la lista :c:member:`~PyConfig.orig_argv` está vacía y :c:member:" -"`~PyConfig.argv` no es una lista que solo contiene una cadena vacía, :c:func:" -"`PyConfig_Read` copia :c:member:`~PyConfig.argv` en :c:member:`~PyConfig." -"orig_argv` antes de modificar :c:member:`~PyConfig.argv` (si :c:member:" -"`~PyConfig.parse_argv` no es cero)." +"Si la lista :c:member:`~PyConfig.orig_argv` está vacía y :c:member:`~PyConfig.argv` no es una lista " +"que solo contiene una cadena vacía, :c:func:`PyConfig_Read` copia :c:member:`~PyConfig.argv` en :c:" +"member:`~PyConfig.orig_argv` antes de modificar :c:member:`~PyConfig.argv` (si :c:member:`~PyConfig." +"parse_argv` no es cero)." #: ../Doc/c-api/init_config.rst:1026 -msgid "" -"See also the :c:member:`~PyConfig.argv` member and the :c:func:" -"`Py_GetArgcArgv` function." -msgstr "" -"Consulte también el miembro :c:member:`~PyConfig.argv` y la función :c:func:" -"`Py_GetArgcArgv`." +msgid "See also the :c:member:`~PyConfig.argv` member and the :c:func:`Py_GetArgcArgv` function." +msgstr "Consulte también el miembro :c:member:`~PyConfig.argv` y la función :c:func:`Py_GetArgcArgv`." -#: ../Doc/c-api/init_config.rst:1029 ../Doc/c-api/init_config.rst:1317 -#: ../Doc/c-api/init_config.rst:1336 +#: ../Doc/c-api/init_config.rst:1029 ../Doc/c-api/init_config.rst:1317 ../Doc/c-api/init_config.rst:1336 msgid "Default: empty list." msgstr "Predeterminado: lista vacía." @@ -1798,58 +1605,51 @@ msgstr "¿Analizar los argumentos de la línea de comando?" #: ../Doc/c-api/init_config.rst:1037 msgid "" -"If equals to ``1``, parse :c:member:`~PyConfig.argv` the same way the " -"regular Python parses :ref:`command line arguments `, and " -"strip Python arguments from :c:member:`~PyConfig.argv`." +"If equals to ``1``, parse :c:member:`~PyConfig.argv` the same way the regular Python parses :ref:" +"`command line arguments `, and strip Python arguments from :c:member:`~PyConfig." +"argv`." msgstr "" -"Si es igual a ``1``, analiza :c:member:`~PyConfig.argv` de la misma forma " -"que Python normal analiza :ref:`argumentos de línea de comando ` y elimina los argumentos de Python de :c:member:`~PyConfig.argv`." +"Si es igual a ``1``, analiza :c:member:`~PyConfig.argv` de la misma forma que Python normal analiza :" +"ref:`argumentos de línea de comando ` y elimina los argumentos de Python de :c:" +"member:`~PyConfig.argv`." #: ../Doc/c-api/init_config.rst:1049 msgid "" -"The :c:member:`PyConfig.argv` arguments are now only parsed if :c:member:" -"`PyConfig.parse_argv` equals to ``1``." +"The :c:member:`PyConfig.argv` arguments are now only parsed if :c:member:`PyConfig.parse_argv` equals " +"to ``1``." msgstr "" -"Los argumentos :c:member:`PyConfig.argv` ahora solo se analizan si :c:member:" -"`PyConfig.parse_argv` es igual a ``1``." +"Los argumentos :c:member:`PyConfig.argv` ahora solo se analizan si :c:member:`PyConfig.parse_argv` es " +"igual a ``1``." #: ../Doc/c-api/init_config.rst:1055 -#, fuzzy msgid "" -"Parser debug mode. If greater than ``0``, turn on parser debugging output " -"(for expert only, depending on compilation options)." +"Parser debug mode. If greater than ``0``, turn on parser debugging output (for expert only, depending " +"on compilation options)." msgstr "" -"Modo de depuración del analizador. Si es mayor que 0, active la salida de " -"depuración del analizador (solo para expertos, según las opciones de " -"compilación)." +"Modo de depuración del analizador. Si es mayor que ``0``, active la salida de depuración del " +"analizador (solo para expertos, dependiendo de las opciones de compilación)." #: ../Doc/c-api/init_config.rst:1058 msgid "" -"Incremented by the :option:`-d` command line option. Set to the :envvar:" -"`PYTHONDEBUG` environment variable value." +"Incremented by the :option:`-d` command line option. Set to the :envvar:`PYTHONDEBUG` environment " +"variable value." msgstr "" -"Incrementado por la opción de línea de comando :option:`-d`. Establecido en " -"el valor de la variable de entorno :envvar:`PYTHONDEBUG`." +"Incrementado por la opción de línea de comando :option:`-d`. Establecido en el valor de la variable " +"de entorno :envvar:`PYTHONDEBUG`." #: ../Doc/c-api/init_config.rst:1061 ../Doc/c-api/init_config.rst:1166 -#, fuzzy -msgid "" -"Needs a :ref:`debug build of Python ` (the ``Py_DEBUG`` macro " -"must be defined)." +msgid "Needs a :ref:`debug build of Python ` (the ``Py_DEBUG`` macro must be defined)." msgstr "" -"Necesita una :ref:`compilación de depuración de Python ` (se " -"debe definir la macro ``Py_REF_DEBUG``)." +"Necesita una :ref:`compilación de depuración de Python ` (se debe definir la macro " +"``Py_DEBUG``)." #: ../Doc/c-api/init_config.rst:1068 -#, fuzzy msgid "" -"If non-zero, calculation of path configuration is allowed to log warnings " -"into ``stderr``. If equals to ``0``, suppress these warnings." +"If non-zero, calculation of path configuration is allowed to log warnings into ``stderr``. If equals " +"to ``0``, suppress these warnings." msgstr "" -"En Unix, si es distinto de cero, el cálculo de :ref:`Python Path " -"Configuration ` puede registrar advertencias en " -"``stderr``. Si es igual a 0, suprima estas advertencias." +"Si no es cero, se permite que el cálculo de la configuración de ruta registre advertencias en " +"``stderr``. Si es igual a ``0``, suprima estas advertencias." #: ../Doc/c-api/init_config.rst:1075 msgid "Now also applies on Windows." @@ -1857,86 +1657,68 @@ msgstr "Ahora también se aplica en Windows." #: ../Doc/c-api/init_config.rst:1080 msgid "" -"The site-specific directory prefix where the platform independent Python " -"files are installed: :data:`sys.prefix`." +"The site-specific directory prefix where the platform independent Python files are installed: :data:" +"`sys.prefix`." msgstr "" -"El prefijo de directorio específico del sitio donde se instalan los archivos " -"Python independientes de la plataforma: :data:`sys.prefix`." +"El prefijo de directorio específico del sitio donde se instalan los archivos Python independientes de " +"la plataforma: :data:`sys.prefix`." #: ../Doc/c-api/init_config.rst:1087 -#, fuzzy msgid "See also :c:member:`PyConfig.base_prefix`." -msgstr ":c:member:`PyConfig.base_prefix`" +msgstr "Consulte también :c:member:`PyConfig.base_prefix`." #: ../Doc/c-api/init_config.rst:1091 msgid "" -"Program name used to initialize :c:member:`~PyConfig.executable` and in " -"early error messages during Python initialization." +"Program name used to initialize :c:member:`~PyConfig.executable` and in early error messages during " +"Python initialization." msgstr "" -"Nombre del programa utilizado para inicializar :c:member:`~PyConfig." -"executable` y en los primeros mensajes de error durante la inicialización de " -"Python." +"Nombre del programa utilizado para inicializar :c:member:`~PyConfig.executable` y en los primeros " +"mensajes de error durante la inicialización de Python." #: ../Doc/c-api/init_config.rst:1094 msgid "On macOS, use :envvar:`PYTHONEXECUTABLE` environment variable if set." -msgstr "" -"En macOS, usa la variable de entorno :envvar:`PYTHONEXECUTABLE` si está " -"configurada." +msgstr "En macOS, usa la variable de entorno :envvar:`PYTHONEXECUTABLE` si está configurada." #: ../Doc/c-api/init_config.rst:1095 msgid "" -"If the ``WITH_NEXT_FRAMEWORK`` macro is defined, use :envvar:" -"`__PYVENV_LAUNCHER__` environment variable if set." +"If the ``WITH_NEXT_FRAMEWORK`` macro is defined, use :envvar:`__PYVENV_LAUNCHER__` environment " +"variable if set." msgstr "" -"Si se define la macro ``WITH_NEXT_FRAMEWORK``, utiliza la variable de " -"entorno :envvar:`__PYVENV_LAUNCHER__` si está configurada." +"Si se define la macro ``WITH_NEXT_FRAMEWORK``, utiliza la variable de entorno :envvar:" +"`__PYVENV_LAUNCHER__` si está configurada." #: ../Doc/c-api/init_config.rst:1097 -msgid "" -"Use ``argv[0]`` of :c:member:`~PyConfig.argv` if available and non-empty." -msgstr "" -"Utiliza ``argv[0]`` de :c:member:`~PyConfig.argv` si está disponible y no " -"está vacío." +msgid "Use ``argv[0]`` of :c:member:`~PyConfig.argv` if available and non-empty." +msgstr "Utiliza ``argv[0]`` de :c:member:`~PyConfig.argv` si está disponible y no está vacío." #: ../Doc/c-api/init_config.rst:1099 -msgid "" -"Otherwise, use ``L\"python\"`` on Windows, or ``L\"python3\"`` on other " -"platforms." -msgstr "" -"De lo contrario, utiliza ``L\"python\"`` en Windows o ``L\"python3\"`` en " -"otras plataformas." +msgid "Otherwise, use ``L\"python\"`` on Windows, or ``L\"python3\"`` on other platforms." +msgstr "De lo contrario, utiliza ``L\"python\"`` en Windows o ``L\"python3\"`` en otras plataformas." #: ../Doc/c-api/init_config.rst:1108 -msgid "" -"Directory where cached ``.pyc`` files are written: :data:`sys." -"pycache_prefix`." +msgid "Directory where cached ``.pyc`` files are written: :data:`sys.pycache_prefix`." msgstr "" -"Directorio donde se escriben los archivos ``.pyc`` almacenados en caché: :" -"data:`sys.pycache_prefix`." +"Directorio donde se escriben los archivos ``.pyc`` almacenados en caché: :data:`sys.pycache_prefix`." #: ../Doc/c-api/init_config.rst:1111 -#, fuzzy msgid "" -"Set by the :option:`-X pycache_prefix=PATH <-X>` command line option and " -"the :envvar:`PYTHONPYCACHEPREFIX` environment variable. The command-line " -"option takes precedence." +"Set by the :option:`-X pycache_prefix=PATH <-X>` command line option and the :envvar:" +"`PYTHONPYCACHEPREFIX` environment variable. The command-line option takes precedence." msgstr "" -"Establecido por la opción de línea de comando :option:`-X " -"pycache_prefix=PATH <-X>` y la variable de entorno :envvar:" -"`PYTHONPYCACHEPREFIX`." +"Establecido por la opción de línea de comando :option:`-X pycache_prefix=PATH <-X>` y la variable de " +"entorno :envvar:`PYTHONPYCACHEPREFIX`. La opción de línea de comandos tiene prioridad." #: ../Doc/c-api/init_config.rst:1115 msgid "If ``NULL``, :data:`sys.pycache_prefix` is set to ``None``." msgstr "Si ``NULL``, :data:`sys.pycache_prefix` es establecido a ``None``." #: ../Doc/c-api/init_config.rst:1121 -#, fuzzy msgid "" -"Quiet mode. If greater than ``0``, don't display the copyright and version " -"at Python startup in interactive mode." +"Quiet mode. If greater than ``0``, don't display the copyright and version at Python startup in " +"interactive mode." msgstr "" -"Modo silencioso. Si es mayor que 0, no muestre los derechos de autor y la " -"versión al inicio de Python en modo interactivo." +"Modo silencioso. Si es mayor que ``0``, no muestre los derechos de autor y la versión al inicio de " +"Python en modo interactivo." #: ../Doc/c-api/init_config.rst:1124 msgid "Incremented by the :option:`-q` command line option." @@ -1951,70 +1733,51 @@ msgid "Used by :c:func:`Py_RunMain`." msgstr "Usado por :c:func:`Py_RunMain`." #: ../Doc/c-api/init_config.rst:1138 -#, fuzzy msgid "" -"Filename passed on the command line: trailing command line argument without :" -"option:`-c` or :option:`-m`. It is used by the :c:func:`Py_RunMain` function." +"Filename passed on the command line: trailing command line argument without :option:`-c` or :option:`-" +"m`. It is used by the :c:func:`Py_RunMain` function." msgstr "" -"Nombre de archivo pasado en la línea de comando: argumento de línea de " -"comando final sin :option:`-c` o :option:`-m`." +"Nombre de archivo pasado en la línea de comandos: argumento final de la línea de comandos sin :option:" +"`-c` o :option:`-m`. Es utilizado por la función :c:func:`Py_RunMain`." #: ../Doc/c-api/init_config.rst:1142 -#, fuzzy -msgid "" -"For example, it is set to ``script.py`` by the ``python3 script.py arg`` " -"command line." +msgid "For example, it is set to ``script.py`` by the ``python3 script.py arg`` command line." msgstr "" -"Por ejemplo, el comando ``python3 script.py arg`` lo establece en ``script." -"py``." +"Por ejemplo, se establece en ``script.py`` mediante la línea de comandos ``python3 script.py arg``." #: ../Doc/c-api/init_config.rst:1145 -#, fuzzy msgid "See also the :c:member:`PyConfig.skip_source_first_line` option." -msgstr "Consulte también el miembro :c:member:`~PyConfig.orig_argv`." +msgstr "Consulte también la opción :c:member:`PyConfig.skip_source_first_line`." #: ../Doc/c-api/init_config.rst:1151 msgid "Value of the :option:`-m` command line option." msgstr "Valor de la opción de línea de comando :option:`-m`." #: ../Doc/c-api/init_config.rst:1159 -msgid "" -"``package.module`` path to module that should be imported before ``site.py`` " -"is run." -msgstr "" +msgid "``package.module`` path to module that should be imported before ``site.py`` is run." +msgstr "Ruta ``package.module`` al módulo que debe ser importado antes de que se ejecute ``site.py``." #: ../Doc/c-api/init_config.rst:1162 -#, fuzzy msgid "" -"Set by the :option:`-X presite=package.module <-X>` command-line option and " -"the :envvar:`PYTHON_PRESITE` environment variable. The command-line option " -"takes precedence." +"Set by the :option:`-X presite=package.module <-X>` command-line option and the :envvar:" +"`PYTHON_PRESITE` environment variable. The command-line option takes precedence." msgstr "" -"Establecido por la opción de línea de comando :option:`-X " -"pycache_prefix=PATH <-X>` y la variable de entorno :envvar:" -"`PYTHONPYCACHEPREFIX`." +"Establecido por la opción de línea de comandos :option:`-X presite=package.module <-X>` y la variable " +"de entorno :envvar:`PYTHON_PRESITE`. La opción de línea de comandos tiene precedencia." #: ../Doc/c-api/init_config.rst:1173 -#, fuzzy -msgid "" -"Show total reference count at exit (excluding :term:`immortal` objects)?" -msgstr "¿Mostrar el recuento de referencia total en la salida?" +msgid "Show total reference count at exit (excluding :term:`immortal` objects)?" +msgstr "¿Mostrar el recuento total de referencias al salir (excluyendo objetos :term:`immortal`)?" #: ../Doc/c-api/init_config.rst:1175 -#, fuzzy msgid "Set to ``1`` by :option:`-X showrefcount <-X>` command line option." -msgstr "" -"Establecido en 1 por la opción de línea de comandos :option:`-X showrefcount " -"<-X>`." +msgstr "Establecido en ``1`` por la opción de línea de comando :option:`-X showrefcount <-X>`." #: ../Doc/c-api/init_config.rst:1177 -#, fuzzy -msgid "" -"Needs a :ref:`debug build of Python ` (the ``Py_REF_DEBUG`` " -"macro must be defined)." +msgid "Needs a :ref:`debug build of Python ` (the ``Py_REF_DEBUG`` macro must be defined)." msgstr "" -"Necesita una :ref:`compilación de depuración de Python ` (se " -"debe definir la macro ``Py_REF_DEBUG``)." +"Necesita una :ref:`compilación de depuración de Python ` (la macro ``Py_REF_DEBUG`` debe " +"estar definida)." #: ../Doc/c-api/init_config.rst:1184 msgid "Import the :mod:`site` module at startup?" @@ -2022,70 +1785,58 @@ msgstr "¿Importar el módulo :mod:`site` al inicio?" #: ../Doc/c-api/init_config.rst:1186 msgid "" -"If equal to zero, disable the import of the module site and the site-" -"dependent manipulations of :data:`sys.path` that it entails." +"If equal to zero, disable the import of the module site and the site-dependent manipulations of :data:" +"`sys.path` that it entails." msgstr "" -"Si es igual a cero, desactive la importación del sitio del módulo y las " -"manipulaciones dependientes del sitio de :data:`sys.path` que conlleva." +"Si es igual a cero, desactive la importación del sitio del módulo y las manipulaciones dependientes " +"del sitio de :data:`sys.path` que conlleva." #: ../Doc/c-api/init_config.rst:1189 msgid "" -"Also disable these manipulations if the :mod:`site` module is explicitly " -"imported later (call :func:`site.main` if you want them to be triggered)." +"Also disable these manipulations if the :mod:`site` module is explicitly imported later (call :func:" +"`site.main` if you want them to be triggered)." msgstr "" -"También deshabilite estas manipulaciones si el módulo :mod:`site` se importa " -"explícitamente más tarde (llame a :func:`site.main` si desea que se activen)." +"También deshabilite estas manipulaciones si el módulo :mod:`site` se importa explícitamente más tarde " +"(llame a :func:`site.main` si desea que se activen)." #: ../Doc/c-api/init_config.rst:1192 msgid "Set to ``0`` by the :option:`-S` command line option." -msgstr "" -"Establecido en ``0`` mediante la opción de línea de comando :option:`-S`." +msgstr "Establecido en ``0`` mediante la opción de línea de comando :option:`-S`." #: ../Doc/c-api/init_config.rst:1194 -#, fuzzy msgid "" -":data:`sys.flags.no_site ` is set to the inverted value of :c:" -"member:`~PyConfig.site_import`." +":data:`sys.flags.no_site ` is set to the inverted value of :c:member:`~PyConfig." +"site_import`." msgstr "" -":data:`sys.flags.no_site` se establece en el valor invertido de :c:member:" -"`~PyConfig.site_import`." +":data:`sys.flags.no_site ` se establece en el valor invertido de :c:member:`~PyConfig." +"site_import`." #: ../Doc/c-api/init_config.rst:1201 -msgid "" -"If non-zero, skip the first line of the :c:member:`PyConfig.run_filename` " -"source." -msgstr "" -"Si no es cero, omita la primera línea de la fuente :c:member:`PyConfig." -"run_filename`." +msgid "If non-zero, skip the first line of the :c:member:`PyConfig.run_filename` source." +msgstr "Si no es cero, omita la primera línea de la fuente :c:member:`PyConfig.run_filename`." #: ../Doc/c-api/init_config.rst:1204 msgid "" -"It allows the usage of non-Unix forms of ``#!cmd``. This is intended for a " -"DOS specific hack only." +"It allows the usage of non-Unix forms of ``#!cmd``. This is intended for a DOS specific hack only." msgstr "" -"Permite el uso de formas de ``#!cmd`` que no son Unix. Esto está destinado " -"únicamente a un truco específico de DOS." +"Permite el uso de formas de ``#!cmd`` que no son Unix. Esto está destinado únicamente a un truco " +"específico de DOS." #: ../Doc/c-api/init_config.rst:1207 msgid "Set to ``1`` by the :option:`-x` command line option." -msgstr "" -"Establecido en ``1`` mediante la opción de línea de comando :option:`-x`." +msgstr "Establecido en ``1`` mediante la opción de línea de comando :option:`-x`." #: ../Doc/c-api/init_config.rst:1214 msgid "" -"Encoding and encoding errors of :data:`sys.stdin`, :data:`sys.stdout` and :" -"data:`sys.stderr` (but :data:`sys.stderr` always uses " -"``\"backslashreplace\"`` error handler)." +"Encoding and encoding errors of :data:`sys.stdin`, :data:`sys.stdout` and :data:`sys.stderr` (but :" +"data:`sys.stderr` always uses ``\"backslashreplace\"`` error handler)." msgstr "" -"Codificación y errores de codificación de :data:`sys.stdin`, :data:`sys." -"stdout` y :data:`sys.stderr` (pero :data:`sys.stderr` siempre usa el " -"controlador de errores ``\"backslashreplace\"``)." +"Codificación y errores de codificación de :data:`sys.stdin`, :data:`sys.stdout` y :data:`sys.stderr` " +"(pero :data:`sys.stderr` siempre usa el controlador de errores ``\"backslashreplace\"``)." #: ../Doc/c-api/init_config.rst:1218 -msgid "" -"Use the :envvar:`PYTHONIOENCODING` environment variable if it is non-empty." -msgstr "" -"Utilice la variable de entorno :envvar:`PYTHONIOENCODING` si no está vacía." +msgid "Use the :envvar:`PYTHONIOENCODING` environment variable if it is non-empty." +msgstr "Utilice la variable de entorno :envvar:`PYTHONIOENCODING` si no está vacía." #: ../Doc/c-api/init_config.rst:1221 msgid "Default encoding:" @@ -2093,8 +1844,7 @@ msgstr "Codificación predeterminada:" #: ../Doc/c-api/init_config.rst:1223 msgid "``\"UTF-8\"`` if :c:member:`PyPreConfig.utf8_mode` is non-zero." -msgstr "" -"``\"UTF-8\"`` si :c:member:`PyPreConfig.utf8_mode` es distinto de cero." +msgstr "``\"UTF-8\"`` si :c:member:`PyPreConfig.utf8_mode` es distinto de cero." #: ../Doc/c-api/init_config.rst:1224 msgid "Otherwise, use the :term:`locale encoding`." @@ -2110,20 +1860,19 @@ msgstr "En Windows: use ``\"surrogateescape\"``." #: ../Doc/c-api/init_config.rst:1229 msgid "" -"``\"surrogateescape\"`` if :c:member:`PyPreConfig.utf8_mode` is non-zero, or " -"if the LC_CTYPE locale is \"C\" or \"POSIX\"." +"``\"surrogateescape\"`` if :c:member:`PyPreConfig.utf8_mode` is non-zero, or if the LC_CTYPE locale " +"is \"C\" or \"POSIX\"." msgstr "" -"``\"surrogateescape\"`` si :c:member:`PyPreConfig.utf8_mode` no es cero o si " -"la configuración regional LC_CTYPE es \"C\" o \"POSIX\"." +"``\"surrogateescape\"`` si :c:member:`PyPreConfig.utf8_mode` no es cero o si la configuración " +"regional LC_CTYPE es \"C\" o \"POSIX\"." #: ../Doc/c-api/init_config.rst:1231 msgid "``\"strict\"`` otherwise." msgstr "``\"strict\"`` de lo contrario." #: ../Doc/c-api/init_config.rst:1233 -#, fuzzy msgid "See also :c:member:`PyConfig.legacy_windows_stdio`." -msgstr "Ver también el miembro :c:member:`PyConfig.orig_argv`." +msgstr "Consulte también :c:member:`PyConfig.legacy_windows_stdio`." #: ../Doc/c-api/init_config.rst:1237 msgid "Enable tracemalloc?" @@ -2135,185 +1884,157 @@ msgstr "Si no es cero, llama a :func:`tracemalloc.start` al inicio." #: ../Doc/c-api/init_config.rst:1241 msgid "" -"Set by :option:`-X tracemalloc=N <-X>` command line option and by the :" -"envvar:`PYTHONTRACEMALLOC` environment variable." +"Set by :option:`-X tracemalloc=N <-X>` command line option and by the :envvar:`PYTHONTRACEMALLOC` " +"environment variable." msgstr "" -"Establecido por la opción de línea de comando :option:`-X tracemalloc=N <-" -"X>` y por la variable de entorno :envvar:`PYTHONTRACEMALLOC`." +"Establecido por la opción de línea de comando :option:`-X tracemalloc=N <-X>` y por la variable de " +"entorno :envvar:`PYTHONTRACEMALLOC`." #: ../Doc/c-api/init_config.rst:1248 msgid "Enable compatibility mode with the perf profiler?" -msgstr "" +msgstr "¿Activar el modo de compatibilidad con el generador de perfiles perf?" #: ../Doc/c-api/init_config.rst:1250 -msgid "" -"If non-zero, initialize the perf trampoline. See :ref:`perf_profiling` for " -"more information." +msgid "If non-zero, initialize the perf trampoline. See :ref:`perf_profiling` for more information." msgstr "" +"Si no es cero, inicializa el trampolín de perf. Consulte :ref:`perf_profiling` para obtener más " +"información." #: ../Doc/c-api/init_config.rst:1253 msgid "" -"Set by :option:`-X perf <-X>` command-line option and by the :envvar:" -"`PYTHON_PERF_JIT_SUPPORT` environment variable for perf support with stack " -"pointers and :option:`-X perf_jit <-X>` command-line option and by the :" -"envvar:`PYTHON_PERF_JIT_SUPPORT` environment variable for perf support with " -"DWARF JIT information." +"Set by :option:`-X perf <-X>` command-line option and by the :envvar:`PYTHON_PERF_JIT_SUPPORT` " +"environment variable for perf support with stack pointers and :option:`-X perf_jit <-X>` command-line " +"option and by the :envvar:`PYTHON_PERF_JIT_SUPPORT` environment variable for perf support with DWARF " +"JIT information." msgstr "" +"Establecido por la opción de línea de comandos :option:`-X perf <-X>` y por la variable de entorno :" +"envvar:`PYTHON_PERF_JIT_SUPPORT` para el soporte de perf con punteros de pila y la opción de línea de " +"comandos :option:`-X perf_jit <-X>` y por la variable de entorno :envvar:`PYTHON_PERF_JIT_SUPPORT` " +"para el soporte de perf con información DWARF JIT." #: ../Doc/c-api/init_config.rst:1265 msgid "Use :ref:`environment variables `?" msgstr "¿Utiliza :ref:`variables de entorno `?" #: ../Doc/c-api/init_config.rst:1267 -msgid "" -"If equals to zero, ignore the :ref:`environment variables `." -msgstr "" -"Si es igual a cero, ignora las :ref:`variables de entorno `." +msgid "If equals to zero, ignore the :ref:`environment variables `." +msgstr "Si es igual a cero, ignora las :ref:`variables de entorno `." #: ../Doc/c-api/init_config.rst:1270 -#, fuzzy msgid "Set to ``0`` by the :option:`-E` environment variable." -msgstr "" -"Establecido en ``0`` por la variable de entorno :envvar:`PYTHONNOUSERSITE`." +msgstr "Establecido en ``0`` por la variable de entorno :option:`-E`." #: ../Doc/c-api/init_config.rst:1276 msgid "If non-zero, add the user site directory to :data:`sys.path`." -msgstr "" -"Si es distinto de cero, agregue el directorio del sitio del usuario a :data:" -"`sys.path`." +msgstr "Si es distinto de cero, agregue el directorio del sitio del usuario a :data:`sys.path`." #: ../Doc/c-api/init_config.rst:1278 msgid "Set to ``0`` by the :option:`-s` and :option:`-I` command line options." -msgstr "" -"Establecido en ``0`` por las opciones de línea de comando :option:`-s` y :" -"option:`-I`." +msgstr "Establecido en ``0`` por las opciones de línea de comando :option:`-s` y :option:`-I`." #: ../Doc/c-api/init_config.rst:1280 msgid "Set to ``0`` by the :envvar:`PYTHONNOUSERSITE` environment variable." -msgstr "" -"Establecido en ``0`` por la variable de entorno :envvar:`PYTHONNOUSERSITE`." +msgstr "Establecido en ``0`` por la variable de entorno :envvar:`PYTHONNOUSERSITE`." #: ../Doc/c-api/init_config.rst:1286 -#, fuzzy msgid "" -"Verbose mode. If greater than ``0``, print a message each time a module is " -"imported, showing the place (filename or built-in module) from which it is " -"loaded." +"Verbose mode. If greater than ``0``, print a message each time a module is imported, showing the " +"place (filename or built-in module) from which it is loaded." msgstr "" -"Modo detallado. Si es mayor que 0, imprima un mensaje cada vez que se " -"importe un módulo, mostrando el lugar (nombre de archivo o módulo integrado) " -"desde el que se carga." +"Modo detallado. Si es mayor que ``0``, imprime un mensaje cada vez que se importa un módulo, " +"mostrando el lugar (nombre de archivo o módulo incorporado) desde el que se carga." #: ../Doc/c-api/init_config.rst:1290 -#, fuzzy msgid "" -"If greater than or equal to ``2``, print a message for each file that is " -"checked for when searching for a module. Also provides information on module " -"cleanup at exit." +"If greater than or equal to ``2``, print a message for each file that is checked for when searching " +"for a module. Also provides information on module cleanup at exit." msgstr "" -"Si es mayor o igual a 2, imprima un mensaje para cada archivo que se " -"compruebe al buscar un módulo. También proporciona información sobre la " -"limpieza del módulo al salir." +"Si es mayor o igual a ``2``, imprime un mensaje para cada archivo que se verifica al buscar un " +"módulo. También proporciona información sobre la limpieza del módulo al salir." #: ../Doc/c-api/init_config.rst:1294 msgid "Incremented by the :option:`-v` command line option." msgstr "Incrementado por la opción de línea de comando :option:`-v`." #: ../Doc/c-api/init_config.rst:1296 -#, fuzzy msgid "Set by the :envvar:`PYTHONVERBOSE` environment variable value." -msgstr "" -"Establecido en el valor de la variable de entorno :envvar:`PYTHONVERBOSE`." +msgstr "Establecido por el valor de la variable de entorno :envvar:`PYTHONVERBOSE`." #: ../Doc/c-api/init_config.rst:1302 msgid "" -"Options of the :mod:`warnings` module to build warnings filters, lowest to " -"highest priority: :data:`sys.warnoptions`." +"Options of the :mod:`warnings` module to build warnings filters, lowest to highest priority: :data:" +"`sys.warnoptions`." msgstr "" -"Opciones del módulo :mod:`warnings` para crear filtros de advertencias, de " -"menor a mayor prioridad: :data:`sys.warnoptions`." +"Opciones del módulo :mod:`warnings` para crear filtros de advertencias, de menor a mayor prioridad: :" +"data:`sys.warnoptions`." #: ../Doc/c-api/init_config.rst:1305 msgid "" -"The :mod:`warnings` module adds :data:`sys.warnoptions` in the reverse " -"order: the last :c:member:`PyConfig.warnoptions` item becomes the first item " -"of :data:`warnings.filters` which is checked first (highest priority)." +"The :mod:`warnings` module adds :data:`sys.warnoptions` in the reverse order: the last :c:member:" +"`PyConfig.warnoptions` item becomes the first item of :data:`warnings.filters` which is checked first " +"(highest priority)." msgstr "" -"El módulo :mod:`warnings` agrega :data:`sys.warnoptions` en el orden " -"inverso: el último elemento :c:member:`PyConfig.warnoptions` se convierte en " -"el primer elemento de :data:`warnings.filters` que es verificado primero " -"(máxima prioridad)." +"El módulo :mod:`warnings` agrega :data:`sys.warnoptions` en el orden inverso: el último elemento :c:" +"member:`PyConfig.warnoptions` se convierte en el primer elemento de :data:`warnings.filters` que es " +"verificado primero (máxima prioridad)." #: ../Doc/c-api/init_config.rst:1310 msgid "" -"The :option:`-W` command line options adds its value to :c:member:`~PyConfig." -"warnoptions`, it can be used multiple times." +"The :option:`-W` command line options adds its value to :c:member:`~PyConfig.warnoptions`, it can be " +"used multiple times." msgstr "" -"Las opciones de la línea de comando :option:`-W` agregan su valor a :c:" -"member:`~PyConfig.warnoptions`, se puede usar varias veces." +"Las opciones de la línea de comando :option:`-W` agregan su valor a :c:member:`~PyConfig." +"warnoptions`, se puede usar varias veces." #: ../Doc/c-api/init_config.rst:1313 msgid "" -"The :envvar:`PYTHONWARNINGS` environment variable can also be used to add " -"warning options. Multiple options can be specified, separated by commas (``," -"``)." +"The :envvar:`PYTHONWARNINGS` environment variable can also be used to add warning options. Multiple " +"options can be specified, separated by commas (``,``)." msgstr "" -"La variable de entorno :envvar:`PYTHONWARNINGS` también se puede utilizar " -"para agregar opciones de advertencia. Se pueden especificar varias opciones, " -"separadas por comas (``,``)." +"La variable de entorno :envvar:`PYTHONWARNINGS` también se puede utilizar para agregar opciones de " +"advertencia. Se pueden especificar varias opciones, separadas por comas (``,``)." #: ../Doc/c-api/init_config.rst:1321 -#, fuzzy -msgid "" -"If equal to ``0``, Python won't try to write ``.pyc`` files on the import of " -"source modules." -msgstr "" -"Si es igual a 0, Python no intentará escribir archivos ``.pyc`` en la " -"importación de módulos fuente." +msgid "If equal to ``0``, Python won't try to write ``.pyc`` files on the import of source modules." +msgstr "Si es igual a ``0``, Python no intentará escribir archivos ``.pyc`` al importar módulos fuente." #: ../Doc/c-api/init_config.rst:1324 msgid "" -"Set to ``0`` by the :option:`-B` command line option and the :envvar:" -"`PYTHONDONTWRITEBYTECODE` environment variable." +"Set to ``0`` by the :option:`-B` command line option and the :envvar:`PYTHONDONTWRITEBYTECODE` " +"environment variable." msgstr "" -"Establecido en ``0`` por la opción de línea de comando :option:`-B` y la " -"variable de entorno :envvar:`PYTHONDONTWRITEBYTECODE`." +"Establecido en ``0`` por la opción de línea de comando :option:`-B` y la variable de entorno :envvar:" +"`PYTHONDONTWRITEBYTECODE`." #: ../Doc/c-api/init_config.rst:1327 msgid "" -":data:`sys.dont_write_bytecode` is initialized to the inverted value of :c:" -"member:`~PyConfig.write_bytecode`." +":data:`sys.dont_write_bytecode` is initialized to the inverted value of :c:member:`~PyConfig." +"write_bytecode`." msgstr "" -":data:`sys.dont_write_bytecode` se inicializa al valor invertido de :c:" -"member:`~PyConfig.write_bytecode`." +":data:`sys.dont_write_bytecode` se inicializa al valor invertido de :c:member:`~PyConfig." +"write_bytecode`." #: ../Doc/c-api/init_config.rst:1334 msgid "Values of the :option:`-X` command line options: :data:`sys._xoptions`." -msgstr "" -"Valores de las opciones de la línea de comando :option:`-X`: :data:`sys." -"_xoptions`." +msgstr "Valores de las opciones de la línea de comando :option:`-X`: :data:`sys._xoptions`." #: ../Doc/c-api/init_config.rst:1338 msgid "" -"If :c:member:`~PyConfig.parse_argv` is non-zero, :c:member:`~PyConfig.argv` " -"arguments are parsed the same way the regular Python parses :ref:`command " -"line arguments `, and Python arguments are stripped from :" -"c:member:`~PyConfig.argv`." +"If :c:member:`~PyConfig.parse_argv` is non-zero, :c:member:`~PyConfig.argv` arguments are parsed the " +"same way the regular Python parses :ref:`command line arguments `, and Python " +"arguments are stripped from :c:member:`~PyConfig.argv`." msgstr "" -"Si :c:member:`~PyConfig.parse_argv` no es cero, los argumentos de :c:member:" -"`~PyConfig.argv` se analizan de la misma forma que Python normal analiza :" -"ref:`argumentos de línea de comando `, y los argumentos de " -"Python se eliminan de :c:member:`~PyConfig.argv`." +"Si :c:member:`~PyConfig.parse_argv` no es cero, los argumentos de :c:member:`~PyConfig.argv` se " +"analizan de la misma forma que Python normal analiza :ref:`argumentos de línea de comando `, y los argumentos de Python se eliminan de :c:member:`~PyConfig.argv`." #: ../Doc/c-api/init_config.rst:1343 msgid "" -"The :c:member:`~PyConfig.xoptions` options are parsed to set other options: " -"see the :option:`-X` command line option." +"The :c:member:`~PyConfig.xoptions` options are parsed to set other options: see the :option:`-X` " +"command line option." msgstr "" -"Las opciones de :c:member:`~PyConfig.xoptions` se analizan para establecer " -"otras opciones: consulte la opción de línea de comando :option:`-X`." +"Las opciones de :c:member:`~PyConfig.xoptions` se analizan para establecer otras opciones: consulte " +"la opción de línea de comando :option:`-X`." #: ../Doc/c-api/init_config.rst:1348 msgid "The ``show_alloc_count`` field has been removed." @@ -2333,26 +2054,20 @@ msgstr "Inicializa Python desde la configuración *config*." #: ../Doc/c-api/init_config.rst:1363 msgid "" -"If :c:func:`PyImport_FrozenModules`, :c:func:`PyImport_AppendInittab` or :c:" -"func:`PyImport_ExtendInittab` are used, they must be set or called after " -"Python preinitialization and before the Python initialization. If Python is " -"initialized multiple times, :c:func:`PyImport_AppendInittab` or :c:func:" -"`PyImport_ExtendInittab` must be called before each Python initialization." +"If :c:func:`PyImport_FrozenModules`, :c:func:`PyImport_AppendInittab` or :c:func:" +"`PyImport_ExtendInittab` are used, they must be set or called after Python preinitialization and " +"before the Python initialization. If Python is initialized multiple times, :c:func:" +"`PyImport_AppendInittab` or :c:func:`PyImport_ExtendInittab` must be called before each Python " +"initialization." msgstr "" -"Si se utilizan :c:func:`PyImport_FrozenModules`, :c:func:" -"`PyImport_AppendInittab` o :c:func:`PyImport_ExtendInittab`, deben " -"establecerse o llamarse después de la preinicialización de Python y antes de " -"la inicialización de Python. Si Python se inicializa varias veces, se debe " -"llamar a :c:func:`PyImport_AppendInittab` o :c:func:`PyImport_ExtendInittab` " -"antes de cada inicialización de Python." +"Si se utilizan :c:func:`PyImport_FrozenModules`, :c:func:`PyImport_AppendInittab` o :c:func:" +"`PyImport_ExtendInittab`, deben establecerse o llamarse después de la preinicialización de Python y " +"antes de la inicialización de Python. Si Python se inicializa varias veces, se debe llamar a :c:func:" +"`PyImport_AppendInittab` o :c:func:`PyImport_ExtendInittab` antes de cada inicialización de Python." #: ../Doc/c-api/init_config.rst:1370 -msgid "" -"The current configuration (``PyConfig`` type) is stored in " -"``PyInterpreterState.config``." -msgstr "" -"La configuración actual (tipo ``PyConfig``) se almacena en " -"``PyInterpreterState.config``." +msgid "The current configuration (``PyConfig`` type) is stored in ``PyInterpreterState.config``." +msgstr "La configuración actual (tipo ``PyConfig``) se almacena en ``PyInterpreterState.config``." #: ../Doc/c-api/init_config.rst:1373 msgid "Example setting the program name::" @@ -2386,22 +2101,44 @@ msgid "" " Py_ExitStatusException(status);\n" "}" msgstr "" +"void init_python(void)\n" +"{\n" +" PyStatus status;\n" +"\n" +" PyConfig config;\n" +" PyConfig_InitPythonConfig(&config);\n" +"\n" +" /* Set the program name. Implicitly preinitialize Python. */\n" +" status = PyConfig_SetString(&config, &config.program_name,\n" +" L\"/path/to/my_program\");\n" +" if (PyStatus_Exception(status)) {\n" +" goto exception;\n" +" }\n" +"\n" +" status = Py_InitializeFromConfig(&config);\n" +" if (PyStatus_Exception(status)) {\n" +" goto exception;\n" +" }\n" +" PyConfig_Clear(&config);\n" +" return;\n" +"\n" +"exception:\n" +" PyConfig_Clear(&config);\n" +" Py_ExitStatusException(status);\n" +"}" #: ../Doc/c-api/init_config.rst:1401 -#, fuzzy msgid "" -"More complete example modifying the default configuration, read the " -"configuration, and then override some parameters. Note that since 3.11, many " -"parameters are not calculated until initialization, and so values cannot be " -"read from the configuration structure. Any values set before initialize is " -"called will be left unchanged by initialization::" +"More complete example modifying the default configuration, read the configuration, and then override " +"some parameters. Note that since 3.11, many parameters are not calculated until initialization, and " +"so values cannot be read from the configuration structure. Any values set before initialize is called " +"will be left unchanged by initialization::" msgstr "" -"Ejemplo más completo modificando la configuración por defecto, leer la " -"configuración, y luego anular algunos parámetros. Tenga en cuenta que desde " -"la versión 3.11, muchos parámetros no se calculan hasta la inicialización, " -"por lo que los valores no pueden ser leídos desde la estructura de " -"configuración. Cualquier valor establecido antes de llamar a la " -"inicialización se dejará sin modificar por initialization::" +"Ejemplo más completo modificando la configuración predeterminada, lee la configuración y luego anula " +"algunos parámetros. Ten en cuenta que, desde la versión 3.11, muchos parámetros no se calculan hasta " +"la inicialización, por lo que los valores no se pueden leer desde la estructura de configuración. " +"Cualquier valor establecido antes de llamar a la inicialización se dejará sin cambios por la " +"inicialización::" #: ../Doc/c-api/init_config.rst:1408 msgid "" @@ -2457,6 +2194,57 @@ msgid "" " return status;\n" "}" msgstr "" +"PyStatus init_python(const char *program_name)\n" +"{\n" +" PyStatus status;\n" +"\n" +" PyConfig config;\n" +" PyConfig_InitPythonConfig(&config);\n" +"\n" +" /* Set the program name before reading the configuration\n" +" (decode byte string from the locale encoding).\n" +"\n" +" Implicitly preinitialize Python. */\n" +" status = PyConfig_SetBytesString(&config, &config.program_name,\n" +" program_name);\n" +" if (PyStatus_Exception(status)) {\n" +" goto done;\n" +" }\n" +"\n" +" /* Read all configuration at once */\n" +" status = PyConfig_Read(&config);\n" +" if (PyStatus_Exception(status)) {\n" +" goto done;\n" +" }\n" +"\n" +" /* Specify sys.path explicitly */\n" +" /* If you want to modify the default set of paths, finish\n" +" initialization first and then use PySys_GetObject(\"path\") */\n" +" config.module_search_paths_set = 1;\n" +" status = PyWideStringList_Append(&config.module_search_paths,\n" +" L\"/path/to/stdlib\");\n" +" if (PyStatus_Exception(status)) {\n" +" goto done;\n" +" }\n" +" status = PyWideStringList_Append(&config.module_search_paths,\n" +" L\"/path/to/more/modules\");\n" +" if (PyStatus_Exception(status)) {\n" +" goto done;\n" +" }\n" +"\n" +" /* Override executable computed by PyConfig_Read() */\n" +" status = PyConfig_SetString(&config, &config.executable,\n" +" L\"/path/to/my_executable\");\n" +" if (PyStatus_Exception(status)) {\n" +" goto done;\n" +" }\n" +"\n" +" status = Py_InitializeFromConfig(&config);\n" +"\n" +"done:\n" +" PyConfig_Clear(&config);\n" +" return status;\n" +"}" #: ../Doc/c-api/init_config.rst:1464 msgid "Isolated Configuration" @@ -2464,38 +2252,32 @@ msgstr "Configuración aislada" #: ../Doc/c-api/init_config.rst:1466 msgid "" -":c:func:`PyPreConfig_InitIsolatedConfig` and :c:func:" -"`PyConfig_InitIsolatedConfig` functions create a configuration to isolate " -"Python from the system. For example, to embed Python into an application." +":c:func:`PyPreConfig_InitIsolatedConfig` and :c:func:`PyConfig_InitIsolatedConfig` functions create a " +"configuration to isolate Python from the system. For example, to embed Python into an application." msgstr "" -":c:func:`PyPreConfig_InitIsolatedConfig` y las funciones :c:func:" -"`PyConfig_InitIsolatedConfig` crean una configuración para aislar Python del " -"sistema. Por ejemplo, para incrustar Python en una aplicación." +":c:func:`PyPreConfig_InitIsolatedConfig` y las funciones :c:func:`PyConfig_InitIsolatedConfig` crean " +"una configuración para aislar Python del sistema. Por ejemplo, para incrustar Python en una " +"aplicación." #: ../Doc/c-api/init_config.rst:1471 -#, fuzzy msgid "" -"This configuration ignores global configuration variables, environment " -"variables, command line arguments (:c:member:`PyConfig.argv` is not parsed) " -"and user site directory. The C standard streams (ex: ``stdout``) and the " -"LC_CTYPE locale are left unchanged. Signal handlers are not installed." +"This configuration ignores global configuration variables, environment variables, command line " +"arguments (:c:member:`PyConfig.argv` is not parsed) and user site directory. The C standard streams " +"(ex: ``stdout``) and the LC_CTYPE locale are left unchanged. Signal handlers are not installed." msgstr "" -"Esta configuración ignora las variables de configuración global, las " -"variables de entorno, los argumentos de la línea de comandos (:c:member:" -"`PyConfig.argv` no se analiza) y el directorio del sitio del usuario. Las " -"transmisiones estándar C (por ejemplo, ``stdout``) y el entorno local " -"LC_CTYPE no se modifican. Los manejadores de señal no están instalados." +"Esta configuración ignora las variables de configuración global, las variables de entorno, los " +"argumentos de la línea de comandos (:c:member:`PyConfig.argv` no se analizan) y el directorio del " +"sitio del usuario. Los flujos estándar de C (por ejemplo, ``stdout``) y la configuración regional " +"LC_CTYPE no se modifican. Los manejadores de señales no están instalados." #: ../Doc/c-api/init_config.rst:1476 msgid "" -"Configuration files are still used with this configuration to determine " -"paths that are unspecified. Ensure :c:member:`PyConfig.home` is specified to " -"avoid computing the default path configuration." +"Configuration files are still used with this configuration to determine paths that are unspecified. " +"Ensure :c:member:`PyConfig.home` is specified to avoid computing the default path configuration." msgstr "" -"Los archivos de configuración se siguen utilizando con esta configuración " -"para determinar las rutas que no se especifican. Asegúrese de que se " -"especifica :c:member:`PyConfig.home` para evitar que se calcule la " -"configuración de la ruta por defecto." +"Los archivos de configuración se siguen utilizando con esta configuración para determinar las rutas " +"que no se especifican. Asegúrese de que se especifica :c:member:`PyConfig.home` para evitar que se " +"calcule la configuración de la ruta por defecto." #: ../Doc/c-api/init_config.rst:1484 msgid "Python Configuration" @@ -2503,33 +2285,29 @@ msgstr "Configuración de Python" #: ../Doc/c-api/init_config.rst:1486 msgid "" -":c:func:`PyPreConfig_InitPythonConfig` and :c:func:" -"`PyConfig_InitPythonConfig` functions create a configuration to build a " -"customized Python which behaves as the regular Python." +":c:func:`PyPreConfig_InitPythonConfig` and :c:func:`PyConfig_InitPythonConfig` functions create a " +"configuration to build a customized Python which behaves as the regular Python." msgstr "" -":c:func:`PyPreConfig_InitPythonConfig` y las funciones :c:func:" -"`PyConfig_InitPythonConfig` crean una configuración para construir un Python " -"personalizado que se comporta como el Python normal." +":c:func:`PyPreConfig_InitPythonConfig` y las funciones :c:func:`PyConfig_InitPythonConfig` crean una " +"configuración para construir un Python personalizado que se comporta como el Python normal." #: ../Doc/c-api/init_config.rst:1490 msgid "" -"Environments variables and command line arguments are used to configure " -"Python, whereas global configuration variables are ignored." +"Environments variables and command line arguments are used to configure Python, whereas global " +"configuration variables are ignored." msgstr "" -"Las variables de entorno y los argumentos de la línea de comandos se " -"utilizan para configurar Python, mientras que las variables de configuración " -"global se ignoran." +"Las variables de entorno y los argumentos de la línea de comandos se utilizan para configurar Python, " +"mientras que las variables de configuración global se ignoran." #: ../Doc/c-api/init_config.rst:1493 msgid "" -"This function enables C locale coercion (:pep:`538`) and :ref:`Python UTF-8 " -"Mode ` (:pep:`540`) depending on the LC_CTYPE locale, :envvar:" -"`PYTHONUTF8` and :envvar:`PYTHONCOERCECLOCALE` environment variables." +"This function enables C locale coercion (:pep:`538`) and :ref:`Python UTF-8 Mode ` (:pep:" +"`540`) depending on the LC_CTYPE locale, :envvar:`PYTHONUTF8` and :envvar:`PYTHONCOERCECLOCALE` " +"environment variables." msgstr "" -"Esta función habilita la coerción de configuración regional C (:pep:`538`) " -"y :ref:`Python UTF-8 Mode ` (:pep:`540`) según la configuración " -"regional LC_CTYPE, las variables de entorno :envvar:`PYTHONUTF8` y :envvar:" -"`PYTHONCOERCECLOCALE`." +"Esta función habilita la coerción de configuración regional C (:pep:`538`) y :ref:`Python UTF-8 Mode " +"` (:pep:`540`) según la configuración regional LC_CTYPE, las variables de entorno :envvar:" +"`PYTHONUTF8` y :envvar:`PYTHONCOERCECLOCALE`." #: ../Doc/c-api/init_config.rst:1502 msgid "Python Path Configuration" @@ -2537,8 +2315,7 @@ msgstr "Configuración de la ruta de Python" #: ../Doc/c-api/init_config.rst:1504 msgid ":c:type:`PyConfig` contains multiple fields for the path configuration:" -msgstr "" -":c:type:`PyConfig` contiene múltiples campos para la configuración de ruta:" +msgstr ":c:type:`PyConfig` contiene múltiples campos para la configuración de ruta:" #: ../Doc/c-api/init_config.rst:1506 msgid "Path configuration inputs:" @@ -2570,11 +2347,10 @@ msgstr "directorio de trabajo actual: para obtener rutas absolutas" #: ../Doc/c-api/init_config.rst:1514 msgid "" -"``PATH`` environment variable to get the program full path (from :c:member:" -"`PyConfig.program_name`)" +"``PATH`` environment variable to get the program full path (from :c:member:`PyConfig.program_name`)" msgstr "" -"Variable de entorno ``PATH`` para obtener la ruta completa del programa (de :" -"c:member:`PyConfig.program_name`)" +"Variable de entorno ``PATH`` para obtener la ruta completa del programa (de :c:member:`PyConfig." +"program_name`)" #: ../Doc/c-api/init_config.rst:1516 msgid "``__PYVENV_LAUNCHER__`` environment variable" @@ -2582,13 +2358,11 @@ msgstr "Variable de entorno ``__PYVENV_LAUNCHER__``" #: ../Doc/c-api/init_config.rst:1517 msgid "" -"(Windows only) Application paths in the registry under " -"\"Software\\Python\\PythonCore\\X.Y\\PythonPath\" of HKEY_CURRENT_USER and " -"HKEY_LOCAL_MACHINE (where X.Y is the Python version)." +"(Windows only) Application paths in the registry under \"Software\\Python\\PythonCore\\X." +"Y\\PythonPath\" of HKEY_CURRENT_USER and HKEY_LOCAL_MACHINE (where X.Y is the Python version)." msgstr "" -"(Solo Windows) Rutas de aplicación en el registro en " -"\"Software\\Python\\PythonCore\\X.Y\\PythonPath\" de HKEY_CURRENT_USER y " -"HKEY_LOCAL_MACHINE (donde X.Y es la versión de Python)." +"(Solo Windows) Rutas de aplicación en el registro en \"Software\\Python\\PythonCore\\X." +"Y\\PythonPath\" de HKEY_CURRENT_USER y HKEY_LOCAL_MACHINE (donde X.Y es la versión de Python)." #: ../Doc/c-api/init_config.rst:1521 msgid "Path configuration output fields:" @@ -2615,12 +2389,8 @@ msgid ":c:member:`PyConfig.executable`" msgstr ":c:member:`PyConfig.executable`" #: ../Doc/c-api/init_config.rst:1528 -msgid "" -":c:member:`PyConfig.module_search_paths_set`, :c:member:`PyConfig." -"module_search_paths`" -msgstr "" -":c:member:`PyConfig.module_search_paths_set`, :c:member:`PyConfig." -"module_search_paths`" +msgid ":c:member:`PyConfig.module_search_paths_set`, :c:member:`PyConfig.module_search_paths`" +msgstr ":c:member:`PyConfig.module_search_paths_set`, :c:member:`PyConfig.module_search_paths`" #: ../Doc/c-api/init_config.rst:1530 msgid ":c:member:`PyConfig.prefix`" @@ -2628,56 +2398,45 @@ msgstr ":c:member:`PyConfig.prefix`" #: ../Doc/c-api/init_config.rst:1532 msgid "" -"If at least one \"output field\" is not set, Python calculates the path " -"configuration to fill unset fields. If :c:member:`~PyConfig." -"module_search_paths_set` is equal to ``0``, :c:member:`~PyConfig." -"module_search_paths` is overridden and :c:member:`~PyConfig." -"module_search_paths_set` is set to ``1``." +"If at least one \"output field\" is not set, Python calculates the path configuration to fill unset " +"fields. If :c:member:`~PyConfig.module_search_paths_set` is equal to ``0``, :c:member:`~PyConfig." +"module_search_paths` is overridden and :c:member:`~PyConfig.module_search_paths_set` is set to ``1``." msgstr "" -"Si al menos un \"campo de salida\" no está establecido, Python calcula la " -"configuración de la ruta para rellenar los campos no establecidos. Si :c:" -"member:`~PyConfig.module_search_paths_set` es igual a ``0``, :c:member:" -"`~PyConfig.module_search_paths` se anula y :c:member:`~PyConfig." +"Si al menos un \"campo de salida\" no está establecido, Python calcula la configuración de la ruta " +"para rellenar los campos no establecidos. Si :c:member:`~PyConfig.module_search_paths_set` es igual a " +"``0``, :c:member:`~PyConfig.module_search_paths` se anula y :c:member:`~PyConfig." "module_search_paths_set` se establece en ``1``." #: ../Doc/c-api/init_config.rst:1538 -#, fuzzy -msgid "" -"It is possible to completely ignore the function calculating the default " -"path configuration by setting explicitly all path configuration output " -"fields listed above. A string is considered as set even if it is non-empty. " -"``module_search_paths`` is considered as set if ``module_search_paths_set`` " -"is set to ``1``. In this case, ``module_search_paths`` will be used without " -"modification." -msgstr "" -"Es posible ignorar por completo la función que calcula la configuración de " -"ruta predeterminada al establecer explícitamente todos los campos de salida " -"de configuración de ruta enumerados anteriormente. Una cadena de caracteres " -"se considera como un conjunto, incluso si no está vacía. " -"``module_search_paths`` se considera como establecido si " -"``module_search_paths_set`` se establece en 1. En este caso, los campos de " -"entrada de configuración de ruta también se ignoran." +msgid "" +"It is possible to completely ignore the function calculating the default path configuration by " +"setting explicitly all path configuration output fields listed above. A string is considered as set " +"even if it is non-empty. ``module_search_paths`` is considered as set if ``module_search_paths_set`` " +"is set to ``1``. In this case, ``module_search_paths`` will be used without modification." +msgstr "" +"Es posible ignorar completamente la función que calcula la configuración de ruta predeterminada " +"estableciendo explícitamente todos los campos de salida de configuración de ruta mencionados " +"anteriormente. Una cadena se considera establecida incluso si no está vacía. ``module_search_paths`` " +"se considera establecido si ``module_search_paths_set`` se establece en ``1``. En este caso, " +"``module_search_paths`` se utilizará sin modificaciones." #: ../Doc/c-api/init_config.rst:1545 -#, fuzzy msgid "" -"Set :c:member:`~PyConfig.pathconfig_warnings` to ``0`` to suppress warnings " -"when calculating the path configuration (Unix only, Windows does not log any " -"warning)." +"Set :c:member:`~PyConfig.pathconfig_warnings` to ``0`` to suppress warnings when calculating the path " +"configuration (Unix only, Windows does not log any warning)." msgstr "" -"Establezca :c:member:`~PyConfig.pathconfig_warnings` en 0 para suprimir las " -"advertencias al calcular la configuración de la ruta (solo Unix, Windows no " -"registra ninguna advertencia)." +"Establezca :c:member:`~PyConfig.pathconfig_warnings` en ``0`` para suprimir las advertencias al " +"calcular la configuración de la ruta (solo Unix, Windows no registra ninguna advertencia)." #: ../Doc/c-api/init_config.rst:1548 msgid "" -"If :c:member:`~PyConfig.base_prefix` or :c:member:`~PyConfig." -"base_exec_prefix` fields are not set, they inherit their value from :c:" -"member:`~PyConfig.prefix` and :c:member:`~PyConfig.exec_prefix` respectively." +"If :c:member:`~PyConfig.base_prefix` or :c:member:`~PyConfig.base_exec_prefix` fields are not set, " +"they inherit their value from :c:member:`~PyConfig.prefix` and :c:member:`~PyConfig.exec_prefix` " +"respectively." msgstr "" -"Si :c:member:`~PyConfig.base_prefix` o los campos :c:member:`~PyConfig." -"base_exec_prefix` no están establecidos, heredan su valor de :c:member:" -"`~PyConfig.prefix` y :c:member:`~PyConfig.exec_prefix` respectivamente." +"Si :c:member:`~PyConfig.base_prefix` o los campos :c:member:`~PyConfig.base_exec_prefix` no están " +"establecidos, heredan su valor de :c:member:`~PyConfig.prefix` y :c:member:`~PyConfig.exec_prefix` " +"respectivamente." #: ../Doc/c-api/init_config.rst:1552 msgid ":c:func:`Py_RunMain` and :c:func:`Py_Main` modify :data:`sys.path`:" @@ -2685,13 +2444,11 @@ msgstr ":c:func:`Py_RunMain` y :c:func:`Py_Main` modifican :data:`sys.path`:" #: ../Doc/c-api/init_config.rst:1554 msgid "" -"If :c:member:`~PyConfig.run_filename` is set and is a directory which " -"contains a ``__main__.py`` script, prepend :c:member:`~PyConfig." -"run_filename` to :data:`sys.path`." +"If :c:member:`~PyConfig.run_filename` is set and is a directory which contains a ``__main__.py`` " +"script, prepend :c:member:`~PyConfig.run_filename` to :data:`sys.path`." msgstr "" -"Si :c:member:`~PyConfig.run_filename` está configurado y es un directorio " -"que contiene un script ``__main__.py``, anteponga :c:member:`~PyConfig." -"run_filename` a :data:`sys.path`." +"Si :c:member:`~PyConfig.run_filename` está configurado y es un directorio que contiene un script " +"``__main__.py``, anteponga :c:member:`~PyConfig.run_filename` a :data:`sys.path`." #: ../Doc/c-api/init_config.rst:1557 msgid "If :c:member:`~PyConfig.isolated` is zero:" @@ -2699,44 +2456,39 @@ msgstr "Si :c:member:`~PyConfig.isolated` es cero:" #: ../Doc/c-api/init_config.rst:1559 msgid "" -"If :c:member:`~PyConfig.run_module` is set, prepend the current directory " -"to :data:`sys.path`. Do nothing if the current directory cannot be read." +"If :c:member:`~PyConfig.run_module` is set, prepend the current directory to :data:`sys.path`. Do " +"nothing if the current directory cannot be read." msgstr "" -"Si :c:member:`~PyConfig.run_module` está configurado, anteponga el " -"directorio actual a :data:`sys.path`. No haga nada si el directorio actual " -"no se puede leer." +"Si :c:member:`~PyConfig.run_module` está configurado, anteponga el directorio actual a :data:`sys." +"path`. No haga nada si el directorio actual no se puede leer." #: ../Doc/c-api/init_config.rst:1561 msgid "" -"If :c:member:`~PyConfig.run_filename` is set, prepend the directory of the " -"filename to :data:`sys.path`." +"If :c:member:`~PyConfig.run_filename` is set, prepend the directory of the filename to :data:`sys." +"path`." msgstr "" -"Si :c:member:`~PyConfig.run_filename` está configurado, anteponga el " -"directorio del nombre del archivo a :data:`sys.path`." +"Si :c:member:`~PyConfig.run_filename` está configurado, anteponga el directorio del nombre del " +"archivo a :data:`sys.path`." #: ../Doc/c-api/init_config.rst:1563 msgid "Otherwise, prepend an empty string to :data:`sys.path`." -msgstr "" -"De lo contrario, anteponga una cadena de caracteres vacía a :data:`sys.path`." +msgstr "De lo contrario, anteponga una cadena de caracteres vacía a :data:`sys.path`." #: ../Doc/c-api/init_config.rst:1565 msgid "" -"If :c:member:`~PyConfig.site_import` is non-zero, :data:`sys.path` can be " -"modified by the :mod:`site` module. If :c:member:`~PyConfig." -"user_site_directory` is non-zero and the user's site-package directory " -"exists, the :mod:`site` module appends the user's site-package directory to :" -"data:`sys.path`." +"If :c:member:`~PyConfig.site_import` is non-zero, :data:`sys.path` can be modified by the :mod:`site` " +"module. If :c:member:`~PyConfig.user_site_directory` is non-zero and the user's site-package " +"directory exists, the :mod:`site` module appends the user's site-package directory to :data:`sys." +"path`." msgstr "" -"Si :c:member:`~PyConfig.site_import` no es cero, :data:`sys.path` puede ser " -"modificado por el módulo :mod:`site`. Si :c:member:`~PyConfig." -"user_site_directory` no es cero y el directorio del paquete del sitio del " -"usuario existe, el módulo :mod:`site` agrega el directorio del paquete del " -"sitio del usuario a :data:`sys.path`." +"Si :c:member:`~PyConfig.site_import` no es cero, :data:`sys.path` puede ser modificado por el módulo :" +"mod:`site`. Si :c:member:`~PyConfig.user_site_directory` no es cero y el directorio del paquete del " +"sitio del usuario existe, el módulo :mod:`site` agrega el directorio del paquete del sitio del " +"usuario a :data:`sys.path`." #: ../Doc/c-api/init_config.rst:1571 msgid "The following configuration files are used by the path configuration:" -msgstr "" -"La configuración de ruta utiliza los siguientes archivos de configuración:" +msgstr "La configuración de ruta utiliza los siguientes archivos de configuración:" #: ../Doc/c-api/init_config.rst:1573 msgid "``pyvenv.cfg``" @@ -2755,33 +2507,27 @@ msgid "If a ``._pth`` file is present:" msgstr "Si un archivo ``._pth`` está presente:" #: ../Doc/c-api/init_config.rst:1579 -#, fuzzy msgid "Set :c:member:`~PyConfig.isolated` to ``1``." -msgstr ":c:member:`PyConfig.isolated`" +msgstr "Establezca :c:member:`~PyConfig.isolated` en ``1``." #: ../Doc/c-api/init_config.rst:1580 -#, fuzzy msgid "Set :c:member:`~PyConfig.use_environment` to ``0``." -msgstr ":c:member:`PyConfig.use_environment`" +msgstr "Establezca :c:member:`~PyConfig.use_environment` en ``0``." #: ../Doc/c-api/init_config.rst:1581 -#, fuzzy msgid "Set :c:member:`~PyConfig.site_import` to ``0``." -msgstr "Establezca :c:member:`PyPreConfig.utf8_mode` en ``0``," +msgstr "Establezca :c:member:`~PyConfig.site_import` en ``0``." #: ../Doc/c-api/init_config.rst:1582 -#, fuzzy msgid "Set :c:member:`~PyConfig.safe_path` to ``1``." -msgstr "Establezca :c:member:`PyPreConfig.utf8_mode` en ``0``," +msgstr "Establezca :c:member:`~PyConfig.safe_path` en ``1``." #: ../Doc/c-api/init_config.rst:1584 -#, fuzzy msgid "" -"The ``__PYVENV_LAUNCHER__`` environment variable is used to set :c:member:" -"`PyConfig.base_executable`." +"The ``__PYVENV_LAUNCHER__`` environment variable is used to set :c:member:`PyConfig.base_executable`." msgstr "" -"La variable de entorno ``__PYVENV_LAUNCHER__`` se usa para establecer :c:" -"member:`PyConfig.base_executable`" +"La variable de entorno ``__PYVENV_LAUNCHER__`` se usa para establecer :c:member:`PyConfig." +"base_executable`." #: ../Doc/c-api/init_config.rst:1589 msgid "Py_RunMain()" @@ -2789,13 +2535,13 @@ msgstr "Py_RunMain()" #: ../Doc/c-api/init_config.rst:1593 msgid "" -"Execute the command (:c:member:`PyConfig.run_command`), the script (:c:" -"member:`PyConfig.run_filename`) or the module (:c:member:`PyConfig." -"run_module`) specified on the command line or in the configuration." +"Execute the command (:c:member:`PyConfig.run_command`), the script (:c:member:`PyConfig." +"run_filename`) or the module (:c:member:`PyConfig.run_module`) specified on the command line or in " +"the configuration." msgstr "" -"Ejecuta el comando (:c:member:`PyConfig.run_command`), el script (:c:member:" -"`PyConfig.run_filename`) o el módulo (:c:member:`PyConfig.run_module`) " -"especificado en la línea de comando o en la configuración." +"Ejecuta el comando (:c:member:`PyConfig.run_command`), el script (:c:member:`PyConfig.run_filename`) " +"o el módulo (:c:member:`PyConfig.run_module`) especificado en la línea de comando o en la " +"configuración." #: ../Doc/c-api/init_config.rst:1598 msgid "By default and when if :option:`-i` option is used, run the REPL." @@ -2803,20 +2549,17 @@ msgstr "Por defecto y cuando se usa la opción :option:`-i`, ejecuta el REPL." #: ../Doc/c-api/init_config.rst:1600 msgid "" -"Finally, finalizes Python and returns an exit status that can be passed to " -"the ``exit()`` function." +"Finally, finalizes Python and returns an exit status that can be passed to the ``exit()`` function." msgstr "" -"Finalmente, finaliza Python y retorna un estado de salida que se puede pasar " -"a la función ``exit()``." +"Finalmente, finaliza Python y retorna un estado de salida que se puede pasar a la función ``exit()``." #: ../Doc/c-api/init_config.rst:1603 msgid "" -"See :ref:`Python Configuration ` for an example of " -"customized Python always running in isolated mode using :c:func:`Py_RunMain`." +"See :ref:`Python Configuration ` for an example of customized Python always " +"running in isolated mode using :c:func:`Py_RunMain`." msgstr "" -"Consulte :ref:`Configuración de Python ` para ver un " -"ejemplo de Python personalizado que siempre se ejecuta en modo aislado " -"usando :c:func:`Py_RunMain`." +"Consulte :ref:`Configuración de Python ` para ver un ejemplo de Python " +"personalizado que siempre se ejecuta en modo aislado usando :c:func:`Py_RunMain`." #: ../Doc/c-api/init_config.rst:1609 msgid "Py_GetArgcArgv()" @@ -2824,9 +2567,7 @@ msgstr "Py_GetArgcArgv()" #: ../Doc/c-api/init_config.rst:1613 msgid "Get the original command line arguments, before Python modified them." -msgstr "" -"Obtiene los argumentos originales de la línea de comandos, antes de que " -"Python los modificara." +msgstr "Obtiene los argumentos originales de la línea de comandos, antes de que Python los modificara." #: ../Doc/c-api/init_config.rst:1615 msgid "See also :c:member:`PyConfig.orig_argv` member." @@ -2837,13 +2578,12 @@ msgid "Multi-Phase Initialization Private Provisional API" msgstr "API Provisional Privada de Inicialización Multifásica" #: ../Doc/c-api/init_config.rst:1621 -#, fuzzy msgid "" -"This section is a private provisional API introducing multi-phase " -"initialization, the core feature of :pep:`432`:" +"This section is a private provisional API introducing multi-phase initialization, the core feature " +"of :pep:`432`:" msgstr "" -"Esta sección es una API provisional privada que presenta la inicialización " -"de múltiples fases, la característica principal de :pep:`432`:" +"Esta sección es una API provisional privada que introduce la inicialización multifase, la " +"característica principal de :pep:`432`:" #: ../Doc/c-api/init_config.rst:1624 msgid "\"Core\" initialization phase, \"bare minimum Python\":" @@ -2862,17 +2602,13 @@ msgid "Builtin and frozen modules;" msgstr "Módulos incorporados y congelados;" #: ../Doc/c-api/init_config.rst:1629 -msgid "" -"The :mod:`sys` module is only partially initialized (ex: :data:`sys.path` " -"doesn't exist yet)." +msgid "The :mod:`sys` module is only partially initialized (ex: :data:`sys.path` doesn't exist yet)." msgstr "" -"El módulo :mod:`sys` solo se inicializa parcialmente (por ejemplo :data:`sys." -"path` aún no existe)." +"El módulo :mod:`sys` solo se inicializa parcialmente (por ejemplo :data:`sys.path` aún no existe)." #: ../Doc/c-api/init_config.rst:1632 msgid "\"Main\" initialization phase, Python is fully initialized:" -msgstr "" -"Fase de inicialización \"principal\", Python está completamente inicializado:" +msgstr "Fase de inicialización \"principal\", Python está completamente inicializado:" #: ../Doc/c-api/init_config.rst:1634 msgid "Install and configure :mod:`importlib`;" @@ -2887,19 +2623,14 @@ msgid "Install signal handlers;" msgstr "Instala manejadores de señal;" #: ../Doc/c-api/init_config.rst:1637 -msgid "" -"Finish :mod:`sys` module initialization (ex: create :data:`sys.stdout` and :" -"data:`sys.path`);" +msgid "Finish :mod:`sys` module initialization (ex: create :data:`sys.stdout` and :data:`sys.path`);" msgstr "" -"Finaliza la inicialización del módulo :mod:`sys` (por ejemplo: crea :data:" -"`sys.stdout` y :data:`sys.path`);" +"Finaliza la inicialización del módulo :mod:`sys` (por ejemplo: crea :data:`sys.stdout` y :data:`sys." +"path`);" #: ../Doc/c-api/init_config.rst:1639 -msgid "" -"Enable optional features like :mod:`faulthandler` and :mod:`tracemalloc`;" -msgstr "" -"Habilita características opcionales como :mod:`faulthandler` y :mod:" -"`tracemalloc`;" +msgid "Enable optional features like :mod:`faulthandler` and :mod:`tracemalloc`;" +msgstr "Habilita características opcionales como :mod:`faulthandler` y :mod:`tracemalloc`;" #: ../Doc/c-api/init_config.rst:1640 msgid "Import the :mod:`site` module;" @@ -2914,67 +2645,52 @@ msgid "Private provisional API:" msgstr "API provisional privada:" #: ../Doc/c-api/init_config.rst:1645 -#, fuzzy msgid "" -":c:member:`PyConfig._init_main`: if set to ``0``, :c:func:" -"`Py_InitializeFromConfig` stops at the \"Core\" initialization phase." +":c:member:`PyConfig._init_main`: if set to ``0``, :c:func:`Py_InitializeFromConfig` stops at the " +"\"Core\" initialization phase." msgstr "" -":c:member:`PyConfig._init_main`: si se establece en 0, :c:func:" -"`Py_InitializeFromConfig` se detiene en la fase de inicialización \"Core\"." +":c:member:`PyConfig._init_main`: si se establece en ``0``, :c:func:`Py_InitializeFromConfig` se " +"detiene en la fase de inicialización \"Core\"." #: ../Doc/c-api/init_config.rst:1650 -msgid "" -"Move to the \"Main\" initialization phase, finish the Python initialization." -msgstr "" -"Vaya a la fase de inicialización \"Principal\", finalice la inicialización " -"de Python." +msgid "Move to the \"Main\" initialization phase, finish the Python initialization." +msgstr "Vaya a la fase de inicialización \"Principal\", finalice la inicialización de Python." #: ../Doc/c-api/init_config.rst:1652 msgid "" -"No module is imported during the \"Core\" phase and the ``importlib`` module " -"is not configured: the :ref:`Path Configuration ` is only " -"applied during the \"Main\" phase. It may allow to customize Python in " -"Python to override or tune the :ref:`Path Configuration `, " +"No module is imported during the \"Core\" phase and the ``importlib`` module is not configured: the :" +"ref:`Path Configuration ` is only applied during the \"Main\" phase. It may allow " +"to customize Python in Python to override or tune the :ref:`Path Configuration `, " "maybe install a custom :data:`sys.meta_path` importer or an import hook, etc." msgstr "" -"No se importa ningún módulo durante la fase \"Core\" y el módulo " -"``importlib`` no está configurado: la :ref:`Configuración de ruta ` solo se aplica durante la fase \"Principal\". Puede permitir " -"personalizar Python en Python para anular o ajustar :ref:`Configuración de " -"ruta `, tal vez instale un importador personalizado :data:" -"`sys.meta_path` o un enlace de importación, etc." +"No se importa ningún módulo durante la fase \"Core\" y el módulo ``importlib`` no está configurado: " +"la :ref:`Configuración de ruta ` solo se aplica durante la fase \"Principal\". " +"Puede permitir personalizar Python en Python para anular o ajustar :ref:`Configuración de ruta `, tal vez instale un importador personalizado :data:`sys.meta_path` o un enlace de " +"importación, etc." #: ../Doc/c-api/init_config.rst:1658 -#, fuzzy msgid "" -"It may become possible to calculate the :ref:`Path Configuration ` in Python, after the Core phase and before the Main phase, which is " -"one of the :pep:`432` motivation." +"It may become possible to calculate the :ref:`Path Configuration ` in Python, after " +"the Core phase and before the Main phase, which is one of the :pep:`432` motivation." msgstr "" -"Puede ser posible calcular :ref:`Configuración de ruta ` " -"en Python, después de la fase Core y antes de la fase Main, que es una de " -"las motivaciones :pep:`432`." +"Puede ser posible calcular la :ref:`Configuración de ruta ` en Python, después de " +"la fase Core y antes de la fase Main, lo cual es una de las motivaciones de :pep:`432`." #: ../Doc/c-api/init_config.rst:1662 msgid "" -"The \"Core\" phase is not properly defined: what should be and what should " -"not be available at this phase is not specified yet. The API is marked as " -"private and provisional: the API can be modified or even be removed anytime " -"until a proper public API is designed." +"The \"Core\" phase is not properly defined: what should be and what should not be available at this " +"phase is not specified yet. The API is marked as private and provisional: the API can be modified or " +"even be removed anytime until a proper public API is designed." msgstr "" -"La fase \"Núcleo\" no está definida correctamente: lo que debería estar y lo " -"que no debería estar disponible en esta fase aún no se ha especificado. La " -"API está marcada como privada y provisional: la API se puede modificar o " -"incluso eliminar en cualquier momento hasta que se diseñe una API pública " +"La fase \"Núcleo\" no está definida correctamente: lo que debería estar y lo que no debería estar " +"disponible en esta fase aún no se ha especificado. La API está marcada como privada y provisional: la " +"API se puede modificar o incluso eliminar en cualquier momento hasta que se diseñe una API pública " "adecuada." #: ../Doc/c-api/init_config.rst:1667 -msgid "" -"Example running Python code between \"Core\" and \"Main\" initialization " -"phases::" -msgstr "" -"Ejemplo de ejecución de código Python entre las fases de inicialización " -"\"Core\" y \"Main\"::" +msgid "Example running Python code between \"Core\" and \"Main\" initialization phases::" +msgstr "Ejemplo de ejecución de código Python entre las fases de inicialización \"Core\" y \"Main\"::" #: ../Doc/c-api/init_config.rst:1670 msgid "" @@ -3012,12 +2728,44 @@ msgid "" " }\n" "}" msgstr "" +"void init_python(void)\n" +"{\n" +" PyStatus status;\n" +"\n" +" PyConfig config;\n" +" PyConfig_InitPythonConfig(&config);\n" +" config._init_main = 0;\n" +"\n" +" /* ... customize 'config' configuration ... */\n" +"\n" +" status = Py_InitializeFromConfig(&config);\n" +" PyConfig_Clear(&config);\n" +" if (PyStatus_Exception(status)) {\n" +" Py_ExitStatusException(status);\n" +" }\n" +"\n" +" /* Use sys.stderr because sys.stdout is only created\n" +" by _Py_InitializeMain() */\n" +" int res = PyRun_SimpleString(\n" +" \"import sys; \"\n" +" \"print('Run Python code before _Py_InitializeMain', \"\n" +" \"file=sys.stderr)\");\n" +" if (res < 0) {\n" +" exit(1);\n" +" }\n" +"\n" +" /* ... put more configuration code here ... */\n" +"\n" +" status = _Py_InitializeMain();\n" +" if (PyStatus_Exception(status)) {\n" +" Py_ExitStatusException(status);\n" +" }\n" +"}" #: ../Doc/c-api/init_config.rst:558 -#, fuzzy msgid "main()" -msgstr "Py_RunMain()" +msgstr "main()" #: ../Doc/c-api/init_config.rst:558 msgid "argv (in module sys)" -msgstr "" +msgstr "argv (en el módulo sys)" diff --git a/c-api/none.po b/c-api/none.po index 84718efc28..e186bc1255 100644 --- a/c-api/none.po +++ b/c-api/none.po @@ -11,51 +11,53 @@ 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: 2020-05-09 03:15+0200\n" -"Last-Translator: \n" -"Language: es\n" +"PO-Revision-Date: 2026-02-15 15:48-0300\n" +"Last-Translator: Carlos A. Crespo \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.0.1\n" #: ../Doc/c-api/none.rst:6 msgid "The ``None`` Object" msgstr "El objeto ``None``" #: ../Doc/c-api/none.rst:10 -#, fuzzy msgid "" "Note that the :c:type:`PyTypeObject` for ``None`` is not directly exposed in " "the Python/C API. Since ``None`` is a singleton, testing for object " "identity (using ``==`` in C) is sufficient. There is no :c:func:`!" "PyNone_Check` function for the same reason." msgstr "" -"Tenga en cuenta que :c:type:`PyTypeObject` para ``None`` no está expuesto " -"directamente en la API de Python/C. Como ``None`` es un singleton, es " -"suficiente probar la identidad del objeto (usando ``==`` en C). No existe la " -"función :c:func:`PyNone_Check` por la misma razón." +"Ten en cuenta que el :c:type:`PyTypeObject` para ``None`` no está expuesto " +"directamente en la API de Python/C. Dado que ``None`` es un singleton, " +"basta con comprobar la identidad del objeto (usando ``==`` en C). No existe " +"una función :c:func:`!PyNone_Check` por la misma razón." #: ../Doc/c-api/none.rst:18 msgid "" "The Python ``None`` object, denoting lack of value. This object has no " "methods and is :term:`immortal`." msgstr "" +"El objeto Python ``None``, que denota falta de valor. Este objeto no tiene " +"métodos y es :term:`immortal`." #: ../Doc/c-api/none.rst:21 msgid ":c:data:`Py_None` is :term:`immortal`." -msgstr "" +msgstr ":c:data:`Py_None` es :term:`immortal`." #: ../Doc/c-api/none.rst:26 msgid "Return :c:data:`Py_None` from a function." -msgstr "" +msgstr "Retorna :c:data:`Py_None` desde una función." #: ../Doc/c-api/none.rst:8 msgid "object" -msgstr "" +msgstr "object" #: ../Doc/c-api/none.rst:8 msgid "None" -msgstr "" +msgstr "None" diff --git a/c-api/object.po b/c-api/object.po index 3b827803d3..8315a0bf9a 100644 --- a/c-api/object.po +++ b/c-api/object.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-31 19:22-0300\n" -"Last-Translator: Sofía Denner \n" -"Language: es\n" +"PO-Revision-Date: 2026-02-13 21:04-0300\n" +"Last-Translator: Carlos A. Crespo \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.0.1\n" #: ../Doc/c-api/object.rst:6 msgid "Object Protocol" @@ -27,408 +28,454 @@ msgstr "Protocolo de objeto" #: ../Doc/c-api/object.rst:11 msgid "Get a :term:`strong reference` to a constant." -msgstr "" +msgstr "Obtiene una :term:`referencia fuerte` a una constante." #: ../Doc/c-api/object.rst:13 msgid "Set an exception and return ``NULL`` if *constant_id* is invalid." -msgstr "" +msgstr "Establece una excepción y retorna ``NULL`` si *constant_id* es inválido." #: ../Doc/c-api/object.rst:15 msgid "*constant_id* must be one of these constant identifiers:" -msgstr "" +msgstr "*constant_id* debe ser uno de estos identificadores constantes:" #: ../Doc/c-api/object.rst:20 msgid "Constant Identifier" -msgstr "" +msgstr "Identificador de constante" #: ../Doc/c-api/object.rst:20 msgid "Value" -msgstr "" +msgstr "Valor" #: ../Doc/c-api/object.rst:20 msgid "Returned object" -msgstr "" +msgstr "Objeto retornado" #: ../Doc/c-api/object.rst:22 ../Doc/c-api/object.rst:27 msgid "``0``" -msgstr "" +msgstr "``0``" #: ../Doc/c-api/object.rst:22 msgid ":py:data:`None`" -msgstr "" +msgstr ":py:data:`None`" #: ../Doc/c-api/object.rst:23 ../Doc/c-api/object.rst:28 msgid "``1``" -msgstr "" +msgstr "``1``" #: ../Doc/c-api/object.rst:23 msgid ":py:data:`False`" -msgstr "" +msgstr ":py:data:`False`" #: ../Doc/c-api/object.rst:24 msgid "``2``" -msgstr "" +msgstr "``2``" #: ../Doc/c-api/object.rst:24 msgid ":py:data:`True`" -msgstr "" +msgstr ":py:data:`True`" #: ../Doc/c-api/object.rst:25 msgid "``3``" -msgstr "" +msgstr "``3``" #: ../Doc/c-api/object.rst:25 msgid ":py:data:`Ellipsis`" -msgstr "" +msgstr ":py:data:`Ellipsis`" #: ../Doc/c-api/object.rst:26 msgid "``4``" -msgstr "" +msgstr "``4``" #: ../Doc/c-api/object.rst:26 msgid ":py:data:`NotImplemented`" -msgstr "" +msgstr ":py:data:`NotImplemented`" #: ../Doc/c-api/object.rst:27 msgid "``5``" -msgstr "" +msgstr "``5``" #: ../Doc/c-api/object.rst:28 msgid "``6``" -msgstr "" +msgstr "``6``" #: ../Doc/c-api/object.rst:29 msgid "``7``" -msgstr "" +msgstr "``7``" #: ../Doc/c-api/object.rst:29 msgid "``''``" -msgstr "" +msgstr "``''``" #: ../Doc/c-api/object.rst:30 msgid "``8``" -msgstr "" +msgstr "``8``" #: ../Doc/c-api/object.rst:30 msgid "``b''``" -msgstr "" +msgstr "``b''``" #: ../Doc/c-api/object.rst:31 msgid "``9``" -msgstr "" +msgstr "``9``" #: ../Doc/c-api/object.rst:31 msgid "``()``" -msgstr "" +msgstr "``()``" #: ../Doc/c-api/object.rst:34 msgid "" "Numeric values are only given for projects which cannot use the constant " "identifiers." msgstr "" +"Los valores numéricos solo se proporcionan para proyectos que no pueden usar los " +"identificadores constantes." #: ../Doc/c-api/object.rst:42 msgid "In CPython, all of these constants are :term:`immortal`." -msgstr "" +msgstr "En CPython, todas estas constantes son :term:`inmortales `." #: ../Doc/c-api/object.rst:47 msgid "" "Similar to :c:func:`Py_GetConstant`, but return a :term:`borrowed reference`." msgstr "" +"Similar a :c:func:`Py_GetConstant`, pero retorna una :term:`referencia prestada`." #: ../Doc/c-api/object.rst:50 msgid "" -"This function is primarily intended for backwards compatibility: using :c:" -"func:`Py_GetConstant` is recommended for new code." +"This function is primarily intended for backwards compatibility: using :c:func:" +"`Py_GetConstant` is recommended for new code." msgstr "" +"Esta función está destinada principalmente para compatibilidad hacia atrás: se " +"recomienda usar :c:func:`Py_GetConstant` para código nuevo." #: ../Doc/c-api/object.rst:53 msgid "" "The reference is borrowed from the interpreter, and is valid until the " "interpreter finalization." msgstr "" +"La referencia es prestada del intérprete, y es válida hasta la finalización del " +"intérprete." #: ../Doc/c-api/object.rst:61 msgid "" "The ``NotImplemented`` singleton, used to signal that an operation is not " "implemented for the given type combination." msgstr "" -"El singleton ``NotImplemented``, se usa para indicar que una operación no " -"está implementada para la combinación de tipos dada." +"El singleton ``NotImplemented``, se usa para indicar que una operación no está " +"implementada para la combinación de tipos dada." #: ../Doc/c-api/object.rst:67 -#, fuzzy msgid "" -"Properly handle returning :c:data:`Py_NotImplemented` from within a C " -"function (that is, create a new :term:`strong reference` to :const:" -"`NotImplemented` and return it)." +"Properly handle returning :c:data:`Py_NotImplemented` from within a C function " +"(that is, create a new :term:`strong reference` to :const:`NotImplemented` and " +"return it)." msgstr "" -"Maneja adecuadamente el retorno :c:data:`Py_NotImplemented` desde una " -"función C (es decir, incremente el recuento de referencias de " -"*NotImplemented* y lo retorna)." +"Maneja adecuadamente el retorno de :c:data:`Py_NotImplemented` desde una función " +"C (es decir, crea una nueva :term:`referencia fuerte` a :const:`NotImplemented` " +"y lo retorna)." #: ../Doc/c-api/object.rst:74 msgid "" "Flag to be used with multiple functions that print the object (like :c:func:" -"`PyObject_Print` and :c:func:`PyFile_WriteObject`). If passed, these " -"function would use the :func:`str` of the object instead of the :func:`repr`." +"`PyObject_Print` and :c:func:`PyFile_WriteObject`). If passed, these function " +"would use the :func:`str` of the object instead of the :func:`repr`." msgstr "" +"Bandera (*flag*) para usar con múltiples funciones que imprimen el objeto (como :" +"c:func:`PyObject_Print` y :c:func:`PyFile_WriteObject`). Si se pasa, estas " +"funciones usarían el :func:`str` del objeto en lugar del :func:`repr`." #: ../Doc/c-api/object.rst:82 -#, fuzzy msgid "" -"Print an object *o*, on file *fp*. Returns ``-1`` on error. The flags " -"argument is used to enable certain printing options. The only option " -"currently supported is :c:macro:`Py_PRINT_RAW`; if given, the :func:`str` of " -"the object is written instead of the :func:`repr`." +"Print an object *o*, on file *fp*. Returns ``-1`` on error. The flags argument " +"is used to enable certain printing options. The only option currently supported " +"is :c:macro:`Py_PRINT_RAW`; if given, the :func:`str` of the object is written " +"instead of the :func:`repr`." msgstr "" -"Imprime un objeto *o*, en el archivo *fp*. Retorna ``-1`` en caso de error. " -"El argumento de las banderas se usa para habilitar ciertas opciones de " -"impresión. La única opción actualmente admitida es :const:`Py_PRINT_RAW`; si " -"se proporciona, se escribe :func:`str` del objeto en lugar de :func:`repr`." +"Imprime un objeto *o*, en el archivo *fp*. Retorna ``-1`` en caso de error. El " +"argumento de las banderas se usa para habilitar ciertas opciones de impresión. " +"La única opción actualmente admitida es :c:macro:`Py_PRINT_RAW`; si se " +"proporciona, se escribe :func:`str` del objeto en lugar de :func:`repr`." #: ../Doc/c-api/object.rst:90 -#, fuzzy msgid "" -"Returns ``1`` if *o* has the attribute *attr_name*, and ``0`` otherwise. " -"This is equivalent to the Python expression ``hasattr(o, attr_name)``. On " -"failure, return ``-1``." +"Returns ``1`` if *o* has the attribute *attr_name*, and ``0`` otherwise. This is " +"equivalent to the Python expression ``hasattr(o, attr_name)``. On failure, " +"return ``-1``." msgstr "" -"Retorna ``1`` si *o* tiene el atributo *attr_name*, y ``0`` en caso " -"contrario. Esto es equivalente a la expresión de Python ``hasattr(o, " -"attr_name)``. Esta función siempre finaliza exitosamente." +"Retorna ``1`` si *o* tiene el atributo *attr_name*, y ``0`` en caso contrario. " +"Esto es equivalente a la expresión de Python ``hasattr(o, attr_name)``. En caso " +"de error, retorna ``-1``." #: ../Doc/c-api/object.rst:99 msgid "" "This is the same as :c:func:`PyObject_HasAttrWithError`, but *attr_name* is " -"specified as a :c:expr:`const char*` UTF-8 encoded bytes string, rather than " -"a :c:expr:`PyObject*`." +"specified as a :c:expr:`const char*` UTF-8 encoded bytes string, rather than a :" +"c:expr:`PyObject*`." msgstr "" +"Esto es lo mismo que :c:func:`PyObject_HasAttrWithError`, pero *attr_name* se " +"especifica como una cadena de bytes codificada en UTF-8 :c:expr:`const char*`, " +"en lugar de un :c:expr:`PyObject*`." #: ../Doc/c-api/object.rst:108 -#, fuzzy msgid "" -"Returns ``1`` if *o* has the attribute *attr_name*, and ``0`` otherwise. " -"This function always succeeds." +"Returns ``1`` if *o* has the attribute *attr_name*, and ``0`` otherwise. This " +"function always succeeds." msgstr "" -"Retorna ``1`` si *o* tiene el atributo *attr_name*, y ``0`` en caso " -"contrario. Esto es equivalente a la expresión de Python ``hasattr(o, " -"attr_name)``. Esta función siempre finaliza exitosamente." +"Retorna ``1`` si *o* tiene el atributo *attr_name*, y ``0`` en caso contrario. " +"Esta función siempre tiene éxito." #: ../Doc/c-api/object.rst:113 -#, fuzzy msgid "" "Exceptions that occur when this calls :meth:`~object.__getattr__` and :meth:" "`~object.__getattribute__` methods are silently ignored. For proper error " "handling, use :c:func:`PyObject_HasAttrWithError`, :c:func:" "`PyObject_GetOptionalAttr` or :c:func:`PyObject_GetAttr` instead." msgstr "" -"Tenga en cuenta que las excepciones que se producen al llamar a los métodos " -"a :meth:`__getattr__` y :meth:`__getattribute__` se suprimirán. Para obtener " -"informe de errores, utilice :c:func:`PyObject_GetAttr()` alternativamente." +"Las excepciones que ocurren cuando esto llama a los métodos :meth:`~object." +"__getattr__` y :meth:`~object.__getattribute__` se ignoran silenciosamente. Para " +"un manejo adecuado de errores, use :c:func:`PyObject_HasAttrWithError`, :c:func:" +"`PyObject_GetOptionalAttr` o :c:func:`PyObject_GetAttr` en su lugar." #: ../Doc/c-api/object.rst:121 msgid "" -"This is the same as :c:func:`PyObject_HasAttr`, but *attr_name* is specified " -"as a :c:expr:`const char*` UTF-8 encoded bytes string, rather than a :c:expr:" +"This is the same as :c:func:`PyObject_HasAttr`, but *attr_name* is specified as " +"a :c:expr:`const char*` UTF-8 encoded bytes string, rather than a :c:expr:" "`PyObject*`." msgstr "" +"Esto es lo mismo que :c:func:`PyObject_HasAttr`, pero *attr_name* se especifica " +"como una cadena de bytes codificada en UTF-8 :c:expr:`const char*`, en lugar de " +"un :c:expr:`PyObject*`." #: ../Doc/c-api/object.rst:127 -#, fuzzy msgid "" "Exceptions that occur when this calls :meth:`~object.__getattr__` and :meth:" -"`~object.__getattribute__` methods or while creating the temporary :class:" -"`str` object are silently ignored. For proper error handling, use :c:func:" -"`PyObject_HasAttrStringWithError`, :c:func:`PyObject_GetOptionalAttrString` " -"or :c:func:`PyObject_GetAttrString` instead." +"`~object.__getattribute__` methods or while creating the temporary :class:`str` " +"object are silently ignored. For proper error handling, use :c:func:" +"`PyObject_HasAttrStringWithError`, :c:func:`PyObject_GetOptionalAttrString` or :" +"c:func:`PyObject_GetAttrString` instead." msgstr "" -"Tenga en cuenta que las excepciones que se producen al llamar a :meth:" -"`__getattr__` y :meth:`__getattribute__` y al crear un objeto de cadena " -"temporal se suprimirán. Para obtener informes de errores, utilice :c:func:" -"`PyObject_GetAttrString()` en su lugar." +"Las excepciones que ocurren cuando esto llama a los métodos :meth:`~object." +"__getattr__` y :meth:`~object.__getattribute__` o mientras se crea el objeto :" +"class:`str` temporal se ignoran silenciosamente. Para un manejo adecuado de " +"errores, usa :c:func:`PyObject_HasAttrStringWithError`, :c:func:" +"`PyObject_GetOptionalAttrString` o :c:func:`PyObject_GetAttrString` en su lugar." #: ../Doc/c-api/object.rst:137 msgid "" -"Retrieve an attribute named *attr_name* from object *o*. Returns the " -"attribute value on success, or ``NULL`` on failure. This is the equivalent " -"of the Python expression ``o.attr_name``." +"Retrieve an attribute named *attr_name* from object *o*. Returns the attribute " +"value on success, or ``NULL`` on failure. This is the equivalent of the Python " +"expression ``o.attr_name``." msgstr "" -"Recupera un atributo llamado *attr_name* del objeto *o*. Retorna el valor " -"del atributo en caso de éxito o ``NULL`` en caso de error. Este es el " -"equivalente de la expresión de Python ``o.attr_name``." +"Recupera un atributo llamado *attr_name* del objeto *o*. Retorna el valor del " +"atributo en caso de éxito o ``NULL`` en caso de error. Este es el equivalente de " +"la expresión de Python ``o.attr_name``." #: ../Doc/c-api/object.rst:141 msgid "" -"If the missing attribute should not be treated as a failure, you can use :c:" -"func:`PyObject_GetOptionalAttr` instead." +"If the missing attribute should not be treated as a failure, you can use :c:func:" +"`PyObject_GetOptionalAttr` instead." msgstr "" +"Si el atributo faltante no debe tratarse como un error, puedes usar :c:func:" +"`PyObject_GetOptionalAttr` en su lugar." #: ../Doc/c-api/object.rst:147 msgid "" -"This is the same as :c:func:`PyObject_GetAttr`, but *attr_name* is specified " -"as a :c:expr:`const char*` UTF-8 encoded bytes string, rather than a :c:expr:" +"This is the same as :c:func:`PyObject_GetAttr`, but *attr_name* is specified as " +"a :c:expr:`const char*` UTF-8 encoded bytes string, rather than a :c:expr:" "`PyObject*`." msgstr "" +"Esto es lo mismo que :c:func:`PyObject_GetAttr`, pero *attr_name* se especifica " +"como una cadena de bytes codificada en UTF-8 :c:expr:`const char*`, en lugar de " +"un :c:expr:`PyObject*`." #: ../Doc/c-api/object.rst:151 msgid "" -"If the missing attribute should not be treated as a failure, you can use :c:" -"func:`PyObject_GetOptionalAttrString` instead." +"If the missing attribute should not be treated as a failure, you can use :c:func:" +"`PyObject_GetOptionalAttrString` instead." msgstr "" +"Si el atributo faltante no debe tratarse como un error, puedes usar :c:func:" +"`PyObject_GetOptionalAttrString` en su lugar." #: ../Doc/c-api/object.rst:157 msgid "" -"Variant of :c:func:`PyObject_GetAttr` which doesn't raise :exc:" -"`AttributeError` if the attribute is not found." +"Variant of :c:func:`PyObject_GetAttr` which doesn't raise :exc:`AttributeError` " +"if the attribute is not found." msgstr "" +"Variante de :c:func:`PyObject_GetAttr` que no lanza :exc:`AttributeError` si el " +"atributo no se encuentra." #: ../Doc/c-api/object.rst:160 msgid "" "If the attribute is found, return ``1`` and set *\\*result* to a new :term:" -"`strong reference` to the attribute. If the attribute is not found, return " -"``0`` and set *\\*result* to ``NULL``; the :exc:`AttributeError` is " -"silenced. If an error other than :exc:`AttributeError` is raised, return " -"``-1`` and set *\\*result* to ``NULL``." +"`strong reference` to the attribute. If the attribute is not found, return ``0`` " +"and set *\\*result* to ``NULL``; the :exc:`AttributeError` is silenced. If an " +"error other than :exc:`AttributeError` is raised, return ``-1`` and set " +"*\\*result* to ``NULL``." msgstr "" +"Si se encuentra el atributo, retorna ``1`` y establece *\\*result* a una nueva :" +"term:`referencia fuerte` al atributo. Si no se encuentra el atributo, retorna " +"``0`` y establece *\\*result* a ``NULL``; el :exc:`AttributeError` se silencia. " +"Si se lanza un error distinto de :exc:`AttributeError`, retorna ``-1`` y " +"establece *\\*result* a ``NULL``." #: ../Doc/c-api/object.rst:172 msgid "" "This is the same as :c:func:`PyObject_GetOptionalAttr`, but *attr_name* is " -"specified as a :c:expr:`const char*` UTF-8 encoded bytes string, rather than " -"a :c:expr:`PyObject*`." +"specified as a :c:expr:`const char*` UTF-8 encoded bytes string, rather than a :" +"c:expr:`PyObject*`." msgstr "" +"Esto es lo mismo que :c:func:`PyObject_GetOptionalAttr`, pero *attr_name* se " +"especifica como una cadena de bytes codificada en UTF-8 :c:expr:`const char*`, " +"en lugar de un :c:expr:`PyObject*`." #: ../Doc/c-api/object.rst:180 msgid "" -"Generic attribute getter function that is meant to be put into a type " -"object's ``tp_getattro`` slot. It looks for a descriptor in the dictionary " -"of classes in the object's MRO as well as an attribute in the object's :attr:" -"`~object.__dict__` (if present). As outlined in :ref:`descriptors`, data " -"descriptors take preference over instance attributes, while non-data " -"descriptors don't. Otherwise, an :exc:`AttributeError` is raised." +"Generic attribute getter function that is meant to be put into a type object's " +"``tp_getattro`` slot. It looks for a descriptor in the dictionary of classes in " +"the object's MRO as well as an attribute in the object's :attr:`~object." +"__dict__` (if present). As outlined in :ref:`descriptors`, data descriptors " +"take preference over instance attributes, while non-data descriptors don't. " +"Otherwise, an :exc:`AttributeError` is raised." msgstr "" "Función *getter* de atributo genérico que debe colocarse en la ranura " "``tp_getattro`` de un objeto tipo. Busca un descriptor en el diccionario de " -"clases en el MRO del objeto, así como un atributo en el objeto :attr:" -"`~object.__ dict__` (si está presente). Como se describe en :ref:" -"`descriptors`, los descriptores de datos tienen preferencia sobre los " -"atributos de instancia, mientras que los descriptores que no son de datos no " -"lo hacen. De lo contrario, se lanza un :exc:`AttributeError`." +"clases en el MRO del objeto, así como un atributo en el objeto :attr:`~object." +"__dict__` (si está presente). Como se describe en :ref:`descriptors`, los " +"descriptores de datos tienen preferencia sobre los atributos de instancia, " +"mientras que los descriptores que no son de datos no lo hacen. De lo contrario, " +"se lanza un :exc:`AttributeError`." #: ../Doc/c-api/object.rst:190 msgid "" -"Set the value of the attribute named *attr_name*, for object *o*, to the " -"value *v*. Raise an exception and return ``-1`` on failure; return ``0`` on " -"success. This is the equivalent of the Python statement ``o.attr_name = v``." +"Set the value of the attribute named *attr_name*, for object *o*, to the value " +"*v*. Raise an exception and return ``-1`` on failure; return ``0`` on success. " +"This is the equivalent of the Python statement ``o.attr_name = v``." msgstr "" -"Establece el valor del atributo llamado *attr_name*, para el objeto *o*, en " -"el valor *v*. Lanza una excepción y retorna ``-1`` en caso de falla; retorna " -"``0`` en caso de éxito. Este es el equivalente de la declaración de Python " -"``o.attr_name = v``." +"Establece el valor del atributo llamado *attr_name*, para el objeto *o*, en el " +"valor *v*. Lanza una excepción y retorna ``-1`` en caso de falla; retorna ``0`` " +"en caso de éxito. Este es el equivalente de la declaración de Python ``o." +"attr_name = v``." #: ../Doc/c-api/object.rst:195 msgid "" -"If *v* is ``NULL``, the attribute is deleted. This behaviour is deprecated " -"in favour of using :c:func:`PyObject_DelAttr`, but there are currently no " -"plans to remove it." +"If *v* is ``NULL``, the attribute is deleted. This behaviour is deprecated in " +"favour of using :c:func:`PyObject_DelAttr`, but there are currently no plans to " +"remove it." msgstr "" -"Si *v* es ``NULL``, el atributo se elimina. Este comportamiento está " -"deprecado en favor de usar :c:func:`PyObject_DelAttr`, pero por el momento " -"no hay planes de quitarlo." +"Si *v* es ``NULL``, el atributo se elimina. Este comportamiento está deprecado " +"en favor de usar :c:func:`PyObject_DelAttr`, pero por el momento no hay planes " +"de quitarlo." #: ../Doc/c-api/object.rst:202 msgid "" -"This is the same as :c:func:`PyObject_SetAttr`, but *attr_name* is specified " -"as a :c:expr:`const char*` UTF-8 encoded bytes string, rather than a :c:expr:" +"This is the same as :c:func:`PyObject_SetAttr`, but *attr_name* is specified as " +"a :c:expr:`const char*` UTF-8 encoded bytes string, rather than a :c:expr:" "`PyObject*`." msgstr "" +"Esto es lo mismo que :c:func:`PyObject_SetAttr`, pero *attr_name* se especifica " +"como una cadena de bytes codificada en UTF-8 :c:expr:`const char*`, en lugar de " +"un :c:expr:`PyObject*`." #: ../Doc/c-api/object.rst:206 msgid "" -"If *v* is ``NULL``, the attribute is deleted, but this feature is deprecated " -"in favour of using :c:func:`PyObject_DelAttrString`." +"If *v* is ``NULL``, the attribute is deleted, but this feature is deprecated in " +"favour of using :c:func:`PyObject_DelAttrString`." msgstr "" "Si *v* es ``NULL``, el atributo se elimina, sin embargo, esta característica " "está deprecada en favor de usar :c:func:`PyObject_DelAttrString`." #: ../Doc/c-api/object.rst:209 msgid "" -"The number of different attribute names passed to this function should be " -"kept small, usually by using a statically allocated string as *attr_name*. " -"For attribute names that aren't known at compile time, prefer calling :c:" -"func:`PyUnicode_FromString` and :c:func:`PyObject_SetAttr` directly. For " -"more details, see :c:func:`PyUnicode_InternFromString`, which may be used " -"internally to create a key object." -msgstr "" +"The number of different attribute names passed to this function should be kept " +"small, usually by using a statically allocated string as *attr_name*. For " +"attribute names that aren't known at compile time, prefer calling :c:func:" +"`PyUnicode_FromString` and :c:func:`PyObject_SetAttr` directly. For more " +"details, see :c:func:`PyUnicode_InternFromString`, which may be used internally " +"to create a key object." +msgstr "" +"El número de diferentes nombres de atributos pasados a esta función debe " +"mantenerse pequeño, generalmente usando una cadena asignada estáticamente como " +"*attr_name*. Para nombres de atributos que no se conocen en tiempo de " +"compilación, prefiere llamar directamente a :c:func:`PyUnicode_FromString` y :c:" +"func:`PyObject_SetAttr`. Para más detalles, consulta :c:func:" +"`PyUnicode_InternFromString`, que puede usarse internamente para crear un objeto " +"clave." #: ../Doc/c-api/object.rst:219 msgid "" "Generic attribute setter and deleter function that is meant to be put into a " -"type object's :c:member:`~PyTypeObject.tp_setattro` slot. It looks for a " -"data descriptor in the dictionary of classes in the object's MRO, and if " -"found it takes preference over setting or deleting the attribute in the " -"instance dictionary. Otherwise, the attribute is set or deleted in the " -"object's :attr:`~object.__dict__` (if present). On success, ``0`` is " -"returned, otherwise an :exc:`AttributeError` is raised and ``-1`` is " -"returned." -msgstr "" -"Establecimiento de atributo genérico y función de eliminación que está " -"destinada a colocarse en la ranura de un objeto tipo :c:member:" -"`~PyTypeObject.tp_setattro`. Busca un descriptor de datos en el diccionario " -"de clases en el MRO del objeto y, si se encuentra, tiene preferencia sobre " -"la configuración o eliminación del atributo en el diccionario de instancias. " -"De lo contrario, el atributo se establece o elimina en el objeto :attr:" -"`~object.__dict__` (si está presente). En caso de éxito, se retorna ``0``; " -"de lo contrario, se lanza un :exc:`AttributeError` y se retorna ``-1``." +"type object's :c:member:`~PyTypeObject.tp_setattro` slot. It looks for a data " +"descriptor in the dictionary of classes in the object's MRO, and if found it " +"takes preference over setting or deleting the attribute in the instance " +"dictionary. Otherwise, the attribute is set or deleted in the object's :attr:" +"`~object.__dict__` (if present). On success, ``0`` is returned, otherwise an :" +"exc:`AttributeError` is raised and ``-1`` is returned." +msgstr "" +"Establecimiento de atributo genérico y función de eliminación que está destinada " +"a colocarse en la ranura de un objeto tipo :c:member:`~PyTypeObject." +"tp_setattro`. Busca un descriptor de datos en el diccionario de clases en el MRO " +"del objeto y, si se encuentra, tiene preferencia sobre la configuración o " +"eliminación del atributo en el diccionario de instancias. De lo contrario, el " +"atributo se establece o elimina en el objeto :attr:`~object.__dict__` (si está " +"presente). En caso de éxito, se retorna ``0``; de lo contrario, se lanza un :exc:" +"`AttributeError` y se retorna ``-1``." #: ../Doc/c-api/object.rst:231 msgid "" -"Delete attribute named *attr_name*, for object *o*. Returns ``-1`` on " -"failure. This is the equivalent of the Python statement ``del o.attr_name``." +"Delete attribute named *attr_name*, for object *o*. Returns ``-1`` on failure. " +"This is the equivalent of the Python statement ``del o.attr_name``." msgstr "" -"Elimina el atributo llamado *attr_name*, para el objeto *o*. Retorna ``-1`` " -"en caso de falla. Este es el equivalente de la declaración de Python ``del o." +"Elimina el atributo llamado *attr_name*, para el objeto *o*. Retorna ``-1`` en " +"caso de falla. Este es el equivalente de la declaración de Python ``del o." "attr_name``." #: ../Doc/c-api/object.rst:237 msgid "" -"This is the same as :c:func:`PyObject_DelAttr`, but *attr_name* is specified " -"as a :c:expr:`const char*` UTF-8 encoded bytes string, rather than a :c:expr:" +"This is the same as :c:func:`PyObject_DelAttr`, but *attr_name* is specified as " +"a :c:expr:`const char*` UTF-8 encoded bytes string, rather than a :c:expr:" "`PyObject*`." msgstr "" +"Esto es lo mismo que :c:func:`PyObject_DelAttr`, pero *attr_name* se especifica " +"como una cadena de bytes codificada en UTF-8 :c:expr:`const char*`, en lugar de " +"un :c:expr:`PyObject*`." #: ../Doc/c-api/object.rst:241 msgid "" -"The number of different attribute names passed to this function should be " -"kept small, usually by using a statically allocated string as *attr_name*. " -"For attribute names that aren't known at compile time, prefer calling :c:" -"func:`PyUnicode_FromString` and :c:func:`PyObject_DelAttr` directly. For " -"more details, see :c:func:`PyUnicode_InternFromString`, which may be used " -"internally to create a key object for lookup." -msgstr "" +"The number of different attribute names passed to this function should be kept " +"small, usually by using a statically allocated string as *attr_name*. For " +"attribute names that aren't known at compile time, prefer calling :c:func:" +"`PyUnicode_FromString` and :c:func:`PyObject_DelAttr` directly. For more " +"details, see :c:func:`PyUnicode_InternFromString`, which may be used internally " +"to create a key object for lookup." +msgstr "" +"El número de diferentes nombres de atributos pasados a esta función debe " +"mantenerse pequeño, generalmente usando una cadena asignada estáticamente como " +"*attr_name*. Para nombres de atributos que no se conocen en tiempo de " +"compilación, prefiere llamar directamente a :c:func:`PyUnicode_FromString` y :c:" +"func:`PyObject_DelAttr`. Para más detalles, consulta :c:func:" +"`PyUnicode_InternFromString`, que puede usarse internamente para crear un objeto " +"clave para la búsqueda." #: ../Doc/c-api/object.rst:252 msgid "" -"A generic implementation for the getter of a ``__dict__`` descriptor. It " -"creates the dictionary if necessary." +"A generic implementation for the getter of a ``__dict__`` descriptor. It creates " +"the dictionary if necessary." msgstr "" "Una implementación genérica para obtener un descriptor ``__dict__``. Crea el " "diccionario si es necesario." #: ../Doc/c-api/object.rst:255 msgid "" -"This function may also be called to get the :py:attr:`~object.__dict__` of " -"the object *o*. Pass ``NULL`` for *context* when calling it. Since this " -"function may need to allocate memory for the dictionary, it may be more " -"efficient to call :c:func:`PyObject_GetAttr` when accessing an attribute on " -"the object." +"This function may also be called to get the :py:attr:`~object.__dict__` of the " +"object *o*. Pass ``NULL`` for *context* when calling it. Since this function may " +"need to allocate memory for the dictionary, it may be more efficient to call :c:" +"func:`PyObject_GetAttr` when accessing an attribute on the object." msgstr "" "Esta función también puede ser llamada para obtener el :py:attr:`~object." -"__dict__` del objeto *o*. Se pasa *context* igual a ``NULL`` cuando se lo " -"llama. Dado que esta función puede necesitar asignar memoria para el " -"diccionario, puede ser más eficiente llamar a :c:func:`PyObject_GetAttr` " -"para acceder a un atributo del objeto." +"__dict__` del objeto *o*. Se pasa *context* igual a ``NULL`` cuando se lo llama. " +"Dado que esta función puede necesitar asignar memoria para el diccionario, puede " +"ser más eficiente llamar a :c:func:`PyObject_GetAttr` para acceder a un atributo " +"del objeto." #: ../Doc/c-api/object.rst:261 msgid "On failure, returns ``NULL`` with an exception set." @@ -439,327 +486,317 @@ msgid "" "A generic implementation for the setter of a ``__dict__`` descriptor. This " "implementation does not allow the dictionary to be deleted." msgstr "" -"Una implementación genérica para el creador de un descriptor ``__dict__``. " -"Esta implementación no permite que se elimine el diccionario." +"Una implementación genérica para el creador de un descriptor ``__dict__``. Esta " +"implementación no permite que se elimine el diccionario." #: ../Doc/c-api/object.rst:276 msgid "" -"Return a pointer to :py:attr:`~object.__dict__` of the object *obj*. If " -"there is no ``__dict__``, return ``NULL`` without setting an exception." +"Return a pointer to :py:attr:`~object.__dict__` of the object *obj*. If there is " +"no ``__dict__``, return ``NULL`` without setting an exception." msgstr "" -"Retorna un puntero al :py:attr:`~object.__dict__` del objeto *obj*. Si no " -"hay ``__dict__``, retorna ``NULL`` sin establecer una excepción." +"Retorna un puntero al :py:attr:`~object.__dict__` del objeto *obj*. Si no hay " +"``__dict__``, retorna ``NULL`` sin establecer una excepción." #: ../Doc/c-api/object.rst:279 msgid "" -"This function may need to allocate memory for the dictionary, so it may be " -"more efficient to call :c:func:`PyObject_GetAttr` when accessing an " -"attribute on the object." +"This function may need to allocate memory for the dictionary, so it may be more " +"efficient to call :c:func:`PyObject_GetAttr` when accessing an attribute on the " +"object." msgstr "" "Esta función puede necesitar asignar memoria para el diccionario, por lo que " -"puede ser más eficiente llamar a :c:func:`PyObject_GetAttr` para acceder a " -"un atributo del objeto." +"puede ser más eficiente llamar a :c:func:`PyObject_GetAttr` para acceder a un " +"atributo del objeto." #: ../Doc/c-api/object.rst:286 -#, fuzzy msgid "" "Compare the values of *o1* and *o2* using the operation specified by *opid*, " -"which must be one of :c:macro:`Py_LT`, :c:macro:`Py_LE`, :c:macro:`Py_EQ`, :" -"c:macro:`Py_NE`, :c:macro:`Py_GT`, or :c:macro:`Py_GE`, corresponding to " -"``<``, ``<=``, ``==``, ``!=``, ``>``, or ``>=`` respectively. This is the " -"equivalent of the Python expression ``o1 op o2``, where ``op`` is the " -"operator corresponding to *opid*. Returns the value of the comparison on " -"success, or ``NULL`` on failure." +"which must be one of :c:macro:`Py_LT`, :c:macro:`Py_LE`, :c:macro:`Py_EQ`, :c:" +"macro:`Py_NE`, :c:macro:`Py_GT`, or :c:macro:`Py_GE`, corresponding to ``<``, " +"``<=``, ``==``, ``!=``, ``>``, or ``>=`` respectively. This is the equivalent of " +"the Python expression ``o1 op o2``, where ``op`` is the operator corresponding " +"to *opid*. Returns the value of the comparison on success, or ``NULL`` on " +"failure." msgstr "" "Compara los valores de *o1* y *o2* utilizando la operación especificada por " -"*opid*, que debe ser uno de los siguientes :const:`Py_LT`, :const:`Py_LE`, :" -"const:`Py_EQ`, :const:`Py_NE`, :const:`Py_GT`, o :const:`Py_GE`, " -"correspondiente a ``<``, ``<=``, ``==``, ``!=``, ``>`` o ``>=`` " -"respectivamente. Este es el equivalente de la expresión de Python ``o1 op " -"o2``, donde ``op`` es el operador correspondiente a *opid*. Retorna el valor " -"de la comparación en caso de éxito o ``NULL`` en caso de error." +"*opid*, que debe ser uno de :c:macro:`Py_LT`, :c:macro:`Py_LE`, :c:macro:" +"`Py_EQ`, :c:macro:`Py_NE`, :c:macro:`Py_GT`, o :c:macro:`Py_GE`, correspondiente " +"a ``<``, ``<=``, ``==``, ``!=``, ``>`` o ``>=`` respectivamente. Este es el " +"equivalente de la expresión de Python ``o1 op o2``, donde ``op`` es el operador " +"correspondiente a *opid*. Retorna el valor de la comparación en caso de éxito o " +"``NULL`` en caso de error." #: ../Doc/c-api/object.rst:296 msgid "" "Compare the values of *o1* and *o2* using the operation specified by *opid*, " -"like :c:func:`PyObject_RichCompare`, but returns ``-1`` on error, ``0`` if " -"the result is false, ``1`` otherwise." +"like :c:func:`PyObject_RichCompare`, but returns ``-1`` on error, ``0`` if the " +"result is false, ``1`` otherwise." msgstr "" +"Compara los valores de *o1* y *o2* usando la operación especificada por *opid*, " +"como :c:func:`PyObject_RichCompare`, pero retorna ``-1`` en caso de error, ``0`` " +"si el resultado es falso, ``1`` en caso contrario." #: ../Doc/c-api/object.rst:301 -#, fuzzy msgid "" -"If *o1* and *o2* are the same object, :c:func:`PyObject_RichCompareBool` " -"will always return ``1`` for :c:macro:`Py_EQ` and ``0`` for :c:macro:`Py_NE`." +"If *o1* and *o2* are the same object, :c:func:`PyObject_RichCompareBool` will " +"always return ``1`` for :c:macro:`Py_EQ` and ``0`` for :c:macro:`Py_NE`." msgstr "" -"Si *o1* y *o2* son el mismo objeto, :c:func:`PyObject_RichCompareBool` " -"siempre retornará ``1`` para :const:`Py_EQ` y ``0`` para :const:`Py_NE`." +"Si *o1* y *o2* son el mismo objeto, :c:func:`PyObject_RichCompareBool` siempre " +"retornará ``1`` para :c:macro:`Py_EQ` y ``0`` para :c:macro:`Py_NE`." #: ../Doc/c-api/object.rst:306 msgid "" -"Format *obj* using *format_spec*. This is equivalent to the Python " -"expression ``format(obj, format_spec)``." +"Format *obj* using *format_spec*. This is equivalent to the Python expression " +"``format(obj, format_spec)``." msgstr "" +"Formatea *obj* usando *format_spec*. Esto es equivalente a la expresión de " +"Python ``format(obj, format_spec)``." #: ../Doc/c-api/object.rst:309 msgid "" "*format_spec* may be ``NULL``. In this case the call is equivalent to " -"``format(obj)``. Returns the formatted string on success, ``NULL`` on " -"failure." +"``format(obj)``. Returns the formatted string on success, ``NULL`` on failure." msgstr "" +"*format_spec* puede ser ``NULL``. En este caso, la llamada es equivalente a " +"``format(obj)``. Retorna la cadena formateada en caso de éxito, ``NULL`` en caso " +"de fallo." #: ../Doc/c-api/object.rst:317 msgid "" "Compute a string representation of object *o*. Returns the string " -"representation on success, ``NULL`` on failure. This is the equivalent of " -"the Python expression ``repr(o)``. Called by the :func:`repr` built-in " -"function." +"representation on success, ``NULL`` on failure. This is the equivalent of the " +"Python expression ``repr(o)``. Called by the :func:`repr` built-in function." msgstr "" -"Calcula una representación de cadena de caracteres del objeto *o*. Retorna " -"la representación de cadena de caracteres en caso de éxito, ``NULL`` en caso " -"de error. Este es el equivalente de la expresión de Python ``repr(o)``. " -"Llamado por la función incorporada :func:`repr`." +"Calcula una representación de cadena de caracteres del objeto *o*. Retorna la " +"representación de cadena de caracteres en caso de éxito, ``NULL`` en caso de " +"error. Este es el equivalente de la expresión de Python ``repr(o)``. Llamado por " +"la función incorporada :func:`repr`." #: ../Doc/c-api/object.rst:321 ../Doc/c-api/object.rst:345 msgid "" "This function now includes a debug assertion to help ensure that it does not " "silently discard an active exception." msgstr "" -"Esta función ahora incluye una afirmación de depuración para ayudar a " -"garantizar que no descarte silenciosamente una excepción activa." +"Esta función ahora incluye una afirmación de depuración para ayudar a garantizar " +"que no descarte silenciosamente una excepción activa." #: ../Doc/c-api/object.rst:329 msgid "" -"As :c:func:`PyObject_Repr`, compute a string representation of object *o*, " -"but escape the non-ASCII characters in the string returned by :c:func:" +"As :c:func:`PyObject_Repr`, compute a string representation of object *o*, but " +"escape the non-ASCII characters in the string returned by :c:func:" "`PyObject_Repr` with ``\\x``, ``\\u`` or ``\\U`` escapes. This generates a " -"string similar to that returned by :c:func:`PyObject_Repr` in Python 2. " -"Called by the :func:`ascii` built-in function." +"string similar to that returned by :c:func:`PyObject_Repr` in Python 2. Called " +"by the :func:`ascii` built-in function." msgstr "" -"Como :c:func:`PyObject_Repr`, calcula una representación de cadena de " -"caracteres del objeto *o*, pero escapa los caracteres no ASCII en la cadena " -"de caracteres retornada por :c:func:`PyObject_Repr` con ``\\x``, ``\\u`` o " -"``\\U`` escapa. Esto genera una cadena de caracteres similar a la que " -"retorna :c:func:`PyObject_Repr` en Python 2. Llamado por la función " -"incorporada :func:`ascii`." +"Como :c:func:`PyObject_Repr`, calcula una representación de cadena de caracteres " +"del objeto *o*, pero escapa los caracteres no ASCII en la cadena de caracteres " +"retornada por :c:func:`PyObject_Repr` con ``\\x``, ``\\u`` o ``\\U`` escapa. " +"Esto genera una cadena de caracteres similar a la que retorna :c:func:" +"`PyObject_Repr` en Python 2. Llamado por la función incorporada :func:`ascii`." #: ../Doc/c-api/object.rst:340 msgid "" "Compute a string representation of object *o*. Returns the string " -"representation on success, ``NULL`` on failure. This is the equivalent of " -"the Python expression ``str(o)``. Called by the :func:`str` built-in " -"function and, therefore, by the :func:`print` function." +"representation on success, ``NULL`` on failure. This is the equivalent of the " +"Python expression ``str(o)``. Called by the :func:`str` built-in function and, " +"therefore, by the :func:`print` function." msgstr "" -"Calcula una representación de cadena de caracteres del objeto *o*. Retorna " -"la representación de cadena de caracteres en caso de éxito, ``NULL`` en caso " -"de error. Llamado por la función incorporada :func:`str` y, por lo tanto, " -"por la función :func:`print`." +"Calcula una representación de cadena de caracteres del objeto *o*. Retorna la " +"representación de cadena de caracteres en caso de éxito, ``NULL`` en caso de " +"error. Llamado por la función incorporada :func:`str` y, por lo tanto, por la " +"función :func:`print`." #: ../Doc/c-api/object.rst:354 msgid "" -"Compute a bytes representation of object *o*. ``NULL`` is returned on " -"failure and a bytes object on success. This is equivalent to the Python " -"expression ``bytes(o)``, when *o* is not an integer. Unlike ``bytes(o)``, a " -"TypeError is raised when *o* is an integer instead of a zero-initialized " -"bytes object." +"Compute a bytes representation of object *o*. ``NULL`` is returned on failure " +"and a bytes object on success. This is equivalent to the Python expression " +"``bytes(o)``, when *o* is not an integer. Unlike ``bytes(o)``, a TypeError is " +"raised when *o* is an integer instead of a zero-initialized bytes object." msgstr "" -"Calcula una representación de bytes del objeto *o*. ``NULL`` se retorna en " -"caso de error y un objeto de bytes en caso de éxito. Esto es equivalente a " -"la expresión de Python ``bytes(o)``, cuando *o* no es un número entero. A " +"Calcula una representación de bytes del objeto *o*. ``NULL`` se retorna en caso " +"de error y un objeto de bytes en caso de éxito. Esto es equivalente a la " +"expresión de Python ``bytes(o)``, cuando *o* no es un número entero. A " "diferencia de ``bytes(o)``, se lanza un TypeError cuando *o* es un entero en " "lugar de un objeto de bytes con inicialización cero." #: ../Doc/c-api/object.rst:363 msgid "" -"Return ``1`` if the class *derived* is identical to or derived from the " -"class *cls*, otherwise return ``0``. In case of an error, return ``-1``." +"Return ``1`` if the class *derived* is identical to or derived from the class " +"*cls*, otherwise return ``0``. In case of an error, return ``-1``." msgstr "" -"Retorna ``1`` si la clase *derived* es idéntica o derivada de la clase " -"*cls*; de lo contrario, retorna ``0``. En caso de error, retorna ``-1``." +"Retorna ``1`` si la clase *derived* es idéntica o derivada de la clase *cls*; de " +"lo contrario, retorna ``0``. En caso de error, retorna ``-1``." #: ../Doc/c-api/object.rst:366 ../Doc/c-api/object.rst:385 msgid "" -"If *cls* is a tuple, the check will be done against every entry in *cls*. " -"The result will be ``1`` when at least one of the checks returns ``1``, " -"otherwise it will be ``0``." +"If *cls* is a tuple, the check will be done against every entry in *cls*. The " +"result will be ``1`` when at least one of the checks returns ``1``, otherwise it " +"will be ``0``." msgstr "" -"Si *cls* es una tupla, la verificación se realizará con cada entrada en " -"*cls*. El resultado será ``1`` cuando al menos una de las verificaciones " -"retorne ``1``, de lo contrario será ``0``." +"Si *cls* es una tupla, la verificación se realizará con cada entrada en *cls*. " +"El resultado será ``1`` cuando al menos una de las verificaciones retorne ``1``, " +"de lo contrario será ``0``." #: ../Doc/c-api/object.rst:370 -#, fuzzy msgid "" "If *cls* has a :meth:`~type.__subclasscheck__` method, it will be called to " -"determine the subclass status as described in :pep:`3119`. Otherwise, " -"*derived* is a subclass of *cls* if it is a direct or indirect subclass, i." -"e. contained in :attr:`cls.__mro__ `." +"determine the subclass status as described in :pep:`3119`. Otherwise, *derived* " +"is a subclass of *cls* if it is a direct or indirect subclass, i.e. contained " +"in :attr:`cls.__mro__ `." msgstr "" -"Si *cls* tiene un método :meth:`~class.__subclasscheck__`, se llamará para " +"Si *cls* tiene un método :meth:`~type.__subclasscheck__`, se llamará para " "determinar el estado de la subclase como se describe en :pep:`3119`. De lo " "contrario, *derived* es una subclase de *cls* si es una subclase directa o " -"indirecta, es decir, contenida en ``cls.__ mro__``." +"indirecta, es decir, contenida en :attr:`cls.__mro__ `." #: ../Doc/c-api/object.rst:375 -#, fuzzy msgid "" -"Normally only class objects, i.e. instances of :class:`type` or a derived " -"class, are considered classes. However, objects can override this by having " -"a :attr:`~type.__bases__` attribute (which must be a tuple of base classes)." +"Normally only class objects, i.e. instances of :class:`type` or a derived class, " +"are considered classes. However, objects can override this by having a :attr:" +"`~type.__bases__` attribute (which must be a tuple of base classes)." msgstr "" -"Normalmente, solo los objetos clase, es decir, las instancias de :class:" -"`type` o una clase derivada, se consideran clases. Sin embargo, los objetos " -"pueden anular esto al tener un atributo :attr:`__bases__` (que debe ser una " -"tupla de clases base)." +"Normalmente, solo los objetos de clase, es decir, instancias de :class:`type` o " +"una clase derivada, se consideran clases. Sin embargo, los objetos pueden anular " +"esto al tener un atributo :attr:`~type.__bases__` (que debe ser una tupla de " +"clases base)." #: ../Doc/c-api/object.rst:382 msgid "" -"Return ``1`` if *inst* is an instance of the class *cls* or a subclass of " -"*cls*, or ``0`` if not. On error, returns ``-1`` and sets an exception." +"Return ``1`` if *inst* is an instance of the class *cls* or a subclass of *cls*, " +"or ``0`` if not. On error, returns ``-1`` and sets an exception." msgstr "" "Retorna ``1`` si *inst* es una instancia de la clase *cls* o una subclase de " -"*cls*, o ``0`` si no. En caso de error, retorna ``-1`` y establece una " -"excepción." +"*cls*, o ``0`` si no. En caso de error, retorna ``-1`` y establece una excepción." #: ../Doc/c-api/object.rst:389 -#, fuzzy msgid "" "If *cls* has a :meth:`~type.__instancecheck__` method, it will be called to " -"determine the subclass status as described in :pep:`3119`. Otherwise, " -"*inst* is an instance of *cls* if its class is a subclass of *cls*." +"determine the subclass status as described in :pep:`3119`. Otherwise, *inst* is " +"an instance of *cls* if its class is a subclass of *cls*." msgstr "" -"Si *cls* tiene un método :meth:`~class.__instancecheck__`, se llamará para " +"Si *cls* tiene un método :meth:`~type.__instancecheck__`, se llamará para " "determinar el estado de la subclase como se describe en :pep:`3119`. De lo " -"contrario, *inst* es una instancia de *cls* si su clase es una subclase de " -"*cls*." +"contrario, *inst* es una instancia de *cls* si su clase es una subclase de *cls*." #: ../Doc/c-api/object.rst:393 -#, fuzzy msgid "" -"An instance *inst* can override what is considered its class by having a :" -"attr:`~object.__class__` attribute." +"An instance *inst* can override what is considered its class by having a :attr:" +"`~object.__class__` attribute." msgstr "" "Una instancia *inst* puede anular lo que se considera su clase al tener un " -"atributo :attr:`__class__`." +"atributo :attr:`~object.__class__`." #: ../Doc/c-api/object.rst:396 -#, fuzzy msgid "" "An object *cls* can override if it is considered a class, and what its base " "classes are, by having a :attr:`~type.__bases__` attribute (which must be a " "tuple of base classes)." msgstr "" -"Un objeto *cls* puede anular si se considera una clase y cuáles son sus " -"clases base, al tener un atributo :attr:`__bases__` (que debe ser una tupla " -"de clases base)." +"Un objeto *cls* puede anular si se considera una clase, y cuáles son sus clases " +"base, al tener un atributo :attr:`~type.__bases__` (que debe ser una tupla de " +"clases base)." #: ../Doc/c-api/object.rst:405 msgid "" -"Compute and return the hash value of an object *o*. On failure, return " -"``-1``. This is the equivalent of the Python expression ``hash(o)``." +"Compute and return the hash value of an object *o*. On failure, return ``-1``. " +"This is the equivalent of the Python expression ``hash(o)``." msgstr "" "Calcula y retorna el valor hash de un objeto *o*. En caso de fallo, retorna " "``-1``. Este es el equivalente de la expresión de Python ``hash(o)``." #: ../Doc/c-api/object.rst:408 msgid "" -"The return type is now Py_hash_t. This is a signed integer the same size " -"as :c:type:`Py_ssize_t`." +"The return type is now Py_hash_t. This is a signed integer the same size as :c:" +"type:`Py_ssize_t`." msgstr "" -"El tipo de retorno ahora es *Py_hash_t*. Este es un entero con signo del " -"mismo tamaño que :c:type:`Py_ssize_t`." +"El tipo de retorno ahora es *Py_hash_t*. Este es un entero con signo del mismo " +"tamaño que :c:type:`Py_ssize_t`." #: ../Doc/c-api/object.rst:415 -#, fuzzy msgid "" -"Set a :exc:`TypeError` indicating that ``type(o)`` is not :term:`hashable` " -"and return ``-1``. This function receives special treatment when stored in a " -"``tp_hash`` slot, allowing a type to explicitly indicate to the interpreter " -"that it is not hashable." +"Set a :exc:`TypeError` indicating that ``type(o)`` is not :term:`hashable` and " +"return ``-1``. This function receives special treatment when stored in a " +"``tp_hash`` slot, allowing a type to explicitly indicate to the interpreter that " +"it is not hashable." msgstr "" -"Establece un :exc:`TypeError` indicando que ``type(o)`` no es *hashable* y " -"retorna ``-1``. Esta función recibe un tratamiento especial cuando se " -"almacena en una ranura ``tp_hash``, lo que permite que un tipo indique " -"explícitamente al intérprete que no es *hashable*." +"Establece un :exc:`TypeError` indicando que ``type(o)`` no es :term:`hashable` y " +"retorna ``-1``. Esta función recibe un tratamiento especial cuando se almacena " +"en una ranura ``tp_hash``, lo que permite que un tipo indique explícitamente al " +"intérprete que no es hashable." #: ../Doc/c-api/object.rst:423 msgid "" -"Returns ``1`` if the object *o* is considered to be true, and ``0`` " -"otherwise. This is equivalent to the Python expression ``not not o``. On " -"failure, return ``-1``." +"Returns ``1`` if the object *o* is considered to be true, and ``0`` otherwise. " +"This is equivalent to the Python expression ``not not o``. On failure, return " +"``-1``." msgstr "" -"Retorna ``1`` si el objeto *o* se considera verdadero y ``0`` en caso " -"contrario. Esto es equivalente a la expresión de Python ``not not o``. En " -"caso de error, retorna ``-1``." +"Retorna ``1`` si el objeto *o* se considera verdadero y ``0`` en caso contrario. " +"Esto es equivalente a la expresión de Python ``not not o``. En caso de error, " +"retorna ``-1``." #: ../Doc/c-api/object.rst:430 msgid "" -"Returns ``0`` if the object *o* is considered to be true, and ``1`` " -"otherwise. This is equivalent to the Python expression ``not o``. On " -"failure, return ``-1``." +"Returns ``0`` if the object *o* is considered to be true, and ``1`` otherwise. " +"This is equivalent to the Python expression ``not o``. On failure, return " +"``-1``." msgstr "" -"Retorna ``0`` si el objeto *o* se considera verdadero, y ``1`` de lo " -"contrario. Esto es equivalente a la expresión de Python ``not o``. En caso " -"de error, retorna ``-1``." +"Retorna ``0`` si el objeto *o* se considera verdadero, y ``1`` de lo contrario. " +"Esto es equivalente a la expresión de Python ``not o``. En caso de error, " +"retorna ``-1``." #: ../Doc/c-api/object.rst:439 -#, fuzzy -msgid "" -"When *o* is non-``NULL``, returns a type object corresponding to the object " -"type of object *o*. On failure, raises :exc:`SystemError` and returns " -"``NULL``. This is equivalent to the Python expression ``type(o)``. This " -"function creates a new :term:`strong reference` to the return value. There's " -"really no reason to use this function instead of the :c:func:`Py_TYPE()` " -"function, which returns a pointer of type :c:expr:`PyTypeObject*`, except " -"when a new :term:`strong reference` is needed." -msgstr "" -"Cuando *o* no es ``NULL``, retorna un tipo de objeto correspondiente al tipo " -"de objeto del objeto *o*. En caso de falla, lanza :exc:`SystemError` y " -"retorna ``NULL``. Esto es equivalente a la expresión de Python ``type(o)``. " -"Esta función incrementa el recuento de referencia del valor de retorno. " -"Realmente no hay razón para usar esta función en lugar de la función :c:func:" -"`Py_TYPE()`, que retorna un puntero de tipo :c:expr:`PyTypeObject*`, excepto " -"cuando se necesita el recuento de referencias incrementado." +msgid "" +"When *o* is non-``NULL``, returns a type object corresponding to the object type " +"of object *o*. On failure, raises :exc:`SystemError` and returns ``NULL``. This " +"is equivalent to the Python expression ``type(o)``. This function creates a new :" +"term:`strong reference` to the return value. There's really no reason to use " +"this function instead of the :c:func:`Py_TYPE()` function, which returns a " +"pointer of type :c:expr:`PyTypeObject*`, except when a new :term:`strong " +"reference` is needed." +msgstr "" +"Cuando *o* es non-``NULL``, retorna un objeto de tipo correspondiente al tipo de " +"objeto del objeto *o*. En caso de fallo, lanza :exc:`SystemError` y retorna " +"``NULL``. Esto es equivalente a la expresión de Python ``type(o)``. Esta función " +"crea una nueva :term:`referencia fuerte` al valor de retorno. Realmente no hay " +"razón para usar esta función en lugar de la función :c:func:`Py_TYPE()`, que " +"retorna un puntero de tipo :c:expr:`PyTypeObject*`, excepto cuando se necesita " +"una nueva :term:`referencia fuerte`." #: ../Doc/c-api/object.rst:451 msgid "" -"Return non-zero if the object *o* is of type *type* or a subtype of *type*, " -"and ``0`` otherwise. Both parameters must be non-``NULL``." +"Return non-zero if the object *o* is of type *type* or a subtype of *type*, and " +"``0`` otherwise. Both parameters must be non-``NULL``." msgstr "" "Retorna un valor no-nulo si el objeto *o* es de tipo *type* o un subtipo de " -"*type*, y ``0`` en cualquier otro caso. Ninguno de los dos parámetros debe " -"ser ``NULL``." +"*type*, y ``0`` en cualquier otro caso. Ninguno de los dos parámetros debe ser " +"``NULL``." #: ../Doc/c-api/object.rst:460 msgid "" -"Return the length of object *o*. If the object *o* provides either the " -"sequence and mapping protocols, the sequence length is returned. On error, " -"``-1`` is returned. This is the equivalent to the Python expression " -"``len(o)``." +"Return the length of object *o*. If the object *o* provides either the sequence " +"and mapping protocols, the sequence length is returned. On error, ``-1`` is " +"returned. This is the equivalent to the Python expression ``len(o)``." msgstr "" -"Retorna la longitud del objeto *o*. Si el objeto *o* proporciona los " -"protocolos de secuencia y mapeo, se retorna la longitud de la secuencia. En " -"caso de error, se retorna ``-1``. Este es el equivalente a la expresión de " -"Python ``len(o)``." +"Retorna la longitud del objeto *o*. Si el objeto *o* proporciona los protocolos " +"de secuencia y mapeo, se retorna la longitud de la secuencia. En caso de error, " +"se retorna ``-1``. Este es el equivalente a la expresión de Python ``len(o)``." #: ../Doc/c-api/object.rst:467 msgid "" -"Return an estimated length for the object *o*. First try to return its " -"actual length, then an estimate using :meth:`~object.__length_hint__`, and " -"finally return the default value. On error return ``-1``. This is the " -"equivalent to the Python expression ``operator.length_hint(o, " -"defaultvalue)``." +"Return an estimated length for the object *o*. First try to return its actual " +"length, then an estimate using :meth:`~object.__length_hint__`, and finally " +"return the default value. On error return ``-1``. This is the equivalent to the " +"Python expression ``operator.length_hint(o, defaultvalue)``." msgstr "" -"Retorna una longitud estimada para el objeto *o*. Primero intenta retornar " -"su longitud real, luego una estimación usando :meth:`~object." -"__length_hint__`, y finalmente retorna el valor predeterminado. En caso de " -"error, retorna ``-1``. Este es el equivalente a la expresión de Python " -"``operator.length_hint(o, defaultvalue)``." +"Retorna una longitud estimada para el objeto *o*. Primero intenta retornar su " +"longitud real, luego una estimación usando :meth:`~object.__length_hint__`, y " +"finalmente retorna el valor predeterminado. En caso de error, retorna ``-1``. " +"Este es el equivalente a la expresión de Python ``operator.length_hint(o, " +"defaultvalue)``." #: ../Doc/c-api/object.rst:477 msgid "" -"Return element of *o* corresponding to the object *key* or ``NULL`` on " -"failure. This is the equivalent of the Python expression ``o[key]``." +"Return element of *o* corresponding to the object *key* or ``NULL`` on failure. " +"This is the equivalent of the Python expression ``o[key]``." msgstr "" "Retorna el elemento de *o* correspondiente a la clave *key* del objeto o " "``NULL`` en caso de error. Este es el equivalente de la expresión de Python " @@ -767,163 +804,177 @@ msgstr "" #: ../Doc/c-api/object.rst:483 msgid "" -"Map the object *key* to the value *v*. Raise an exception and return ``-1`` " -"on failure; return ``0`` on success. This is the equivalent of the Python " +"Map the object *key* to the value *v*. Raise an exception and return ``-1`` on " +"failure; return ``0`` on success. This is the equivalent of the Python " "statement ``o[key] = v``. This function *does not* steal a reference to *v*." msgstr "" "Asigna el objeto *key* al valor *v*. Lanza una excepción y retorna ``-1`` en " "caso de error; retorna ``0`` en caso de éxito. Este es el equivalente de la " -"declaración de Python ``o[key] = v``. Esta función *no* roba una referencia " -"a *v*." +"declaración de Python ``o[key] = v``. Esta función *no* roba una referencia a " +"*v*." #: ../Doc/c-api/object.rst:491 msgid "" -"Remove the mapping for the object *key* from the object *o*. Return ``-1`` " -"on failure. This is equivalent to the Python statement ``del o[key]``." +"Remove the mapping for the object *key* from the object *o*. Return ``-1`` on " +"failure. This is equivalent to the Python statement ``del o[key]``." msgstr "" "Elimina la asignación para el objeto *key* del objeto *o*. Retorna ``-1`` en " "caso de falla. Esto es equivalente a la declaración de Python ``del o[key]``." #: ../Doc/c-api/object.rst:497 msgid "" -"This is equivalent to the Python expression ``dir(o)``, returning a " +"This is the equivalent to the Python expression ``dir(o)``, returning a " "(possibly empty) list of strings appropriate for the object argument, or " -"``NULL`` if there was an error. If the argument is ``NULL``, this is like " -"the Python ``dir()``, returning the names of the current locals; in this " -"case, if no execution frame is active then ``NULL`` is returned but :c:func:" -"`PyErr_Occurred` will return false." -msgstr "" -"Esto es equivalente a la expresión de Python ``dir(o)``, que retorna una " -"lista (posiblemente vacía) de cadenas de caracteres apropiadas para el " -"argumento del objeto, o ``NULL`` si hubo un error. Si el argumento es " -"``NULL``, es como el Python ``dir()``, que retorna los nombres de los " -"locales actuales; en este caso, si no hay un marco de ejecución activo, se " -"retorna ``NULL`` pero :c:func:`PyErr_Occurred` retornará falso." +"``NULL`` if there was an error. If the argument is ``NULL``, this is like the " +"Python ``dir()``, returning the names of the current locals; in this case, if no " +"execution frame is active then ``NULL`` is returned but :c:func:`PyErr_Occurred` " +"will return false." +msgstr "" +"Esto es equivalente a la expresión de Python ``dir(o)``, que retorna una lista " +"(posiblemente vacía) de cadenas de caracteres apropiadas para el argumento del " +"objeto, o ``NULL`` si hubo un error. Si el argumento es ``NULL``, es como el " +"Python ``dir()``, que retorna los nombres de los locales actuales; en este caso, " +"si no hay un marco de ejecución activo, se retorna ``NULL`` pero :c:func:" +"`PyErr_Occurred` retornará falso." #: ../Doc/c-api/object.rst:506 msgid "" -"This is equivalent to the Python expression ``iter(o)``. It returns a new " -"iterator for the object argument, or the object itself if the object is " -"already an iterator. Raises :exc:`TypeError` and returns ``NULL`` if the " -"object cannot be iterated." +"This is the equivalent to the Python expression ``iter(o)``. It returns a new " +"iterator for the object argument, or the object itself if the object is already " +"an iterator. Raises :exc:`TypeError` and returns ``NULL`` if the object cannot " +"be iterated." msgstr "" "Esto es equivalente a la expresión de Python ``iter(o)``. Retorna un nuevo " -"iterador para el argumento del objeto, o el propio objeto si el objeto ya es " -"un iterador. Lanza :exc:`TypeError` y retorna ``NULL`` si el objeto no puede " +"iterador para el argumento del objeto, o el propio objeto si el objeto ya es un " +"iterador. Lanza :exc:`TypeError` y retorna ``NULL`` si el objeto no puede " "iterarse." #: ../Doc/c-api/object.rst:514 msgid "" -"This is the equivalent to the Python expression ``aiter(o)``. Takes an :" -"class:`AsyncIterable` object and returns an :class:`AsyncIterator` for it. " -"This is typically a new iterator but if the argument is an :class:" -"`AsyncIterator`, this returns itself. Raises :exc:`TypeError` and returns " -"``NULL`` if the object cannot be iterated." +"This is the equivalent to the Python expression ``aiter(o)``. Takes an :class:" +"`AsyncIterable` object and returns an :class:`AsyncIterator` for it. This is " +"typically a new iterator but if the argument is an :class:`AsyncIterator`, this " +"returns itself. Raises :exc:`TypeError` and returns ``NULL`` if the object " +"cannot be iterated." msgstr "" -"Esto es equivalente a la expresión de Python ``aiter(o)``. Toma un objeto :" -"class:`AsyncIterable` y retorna :class:`AsyncIterator`. Este es típicamente " -"un nuevo iterador, pero si el argumento es :class:`AsyncIterator`, se " -"retornará a sí mismo. Lanza :exc:`TypeError` y retorna ``NULL`` si el objeto " -"no puede ser iterado." +"Esto es equivalente a la expresión de Python ``aiter(o)``. Toma un objeto :class:" +"`AsyncIterable` y retorna un :class:`AsyncIterator`. Este es típicamente un " +"nuevo iterador, pero si el argumento es un :class:`AsyncIterator`, se retornará " +"a sí mismo. Lanza :exc:`TypeError` y retorna ``NULL`` si el objeto no puede ser " +"iterado." #: ../Doc/c-api/object.rst:524 msgid "Get a pointer to subclass-specific data reserved for *cls*." -msgstr "" +msgstr "Obtiene un puntero a datos específicos de subclase reservados para *cls*." #: ../Doc/c-api/object.rst:526 msgid "" -"The object *o* must be an instance of *cls*, and *cls* must have been " -"created using negative :c:member:`PyType_Spec.basicsize`. Python does not " -"check this." +"The object *o* must be an instance of *cls*, and *cls* must have been created " +"using negative :c:member:`PyType_Spec.basicsize`. Python does not check this." msgstr "" +"El objeto *o* debe ser una instancia de *cls*, y *cls* debe haberse creado " +"usando :c:member:`PyType_Spec.basicsize` negativo. Python no verifica esto." #: ../Doc/c-api/object.rst:530 msgid "On error, set an exception and return ``NULL``." -msgstr "" +msgstr "En caso de error, establece una excepción y retorna ``NULL``." #: ../Doc/c-api/object.rst:536 msgid "" -"Return the size of the instance memory space reserved for *cls*, i.e. the " -"size of the memory :c:func:`PyObject_GetTypeData` returns." +"Return the size of the instance memory space reserved for *cls*, i.e. the size " +"of the memory :c:func:`PyObject_GetTypeData` returns." msgstr "" +"Retorna el tamaño del espacio de memoria de instancia reservado para *cls*, es " +"decir, el tamaño de la memoria que retorna :c:func:`PyObject_GetTypeData`." #: ../Doc/c-api/object.rst:539 msgid "" "This may be larger than requested using :c:member:`-PyType_Spec.basicsize " -"`; it is safe to use this larger size (e.g. with :c:" -"func:`!memset`)." +"`; it is safe to use this larger size (e.g. with :c:func:" +"`!memset`)." msgstr "" +"Esto puede ser mayor de lo solicitado usando :c:member:`-PyType_Spec.basicsize " +"`; es seguro usar este tamaño mayor (por ejemplo, con :c:" +"func:`!memset`)." #: ../Doc/c-api/object.rst:542 msgid "" -"The type *cls* **must** have been created using negative :c:member:" -"`PyType_Spec.basicsize`. Python does not check this." +"The type *cls* **must** have been created using negative :c:member:`PyType_Spec." +"basicsize`. Python does not check this." msgstr "" +"El tipo *cls* **debe** haberse creado usando :c:member:`PyType_Spec.basicsize` " +"negativo. Python no verifica esto." #: ../Doc/c-api/object.rst:546 msgid "On error, set an exception and return a negative value." -msgstr "" +msgstr "En caso de error, establece una excepción y retorna un valor negativo." #: ../Doc/c-api/object.rst:552 msgid "" "Get a pointer to per-item data for a class with :c:macro:" "`Py_TPFLAGS_ITEMS_AT_END`." msgstr "" +"Obtiene un puntero a datos por elemento para una clase con :c:macro:" +"`Py_TPFLAGS_ITEMS_AT_END`." #: ../Doc/c-api/object.rst:555 msgid "" -"On error, set an exception and return ``NULL``. :py:exc:`TypeError` is " -"raised if *o* does not have :c:macro:`Py_TPFLAGS_ITEMS_AT_END` set." +"On error, set an exception and return ``NULL``. :py:exc:`TypeError` is raised if " +"*o* does not have :c:macro:`Py_TPFLAGS_ITEMS_AT_END` set." msgstr "" +"En caso de error, establece una excepción y retorna ``NULL``. Se lanza :py:exc:" +"`TypeError` si *o* no tiene establecido :c:macro:`Py_TPFLAGS_ITEMS_AT_END`." #: ../Doc/c-api/object.rst:563 msgid "Visit the managed dictionary of *obj*." -msgstr "" +msgstr "Visita el diccionario gestionado de *obj*." #: ../Doc/c-api/object.rst:565 ../Doc/c-api/object.rst:574 msgid "" -"This function must only be called in a traverse function of the type which " -"has the :c:macro:`Py_TPFLAGS_MANAGED_DICT` flag set." +"This function must only be called in a traverse function of the type which has " +"the :c:macro:`Py_TPFLAGS_MANAGED_DICT` flag set." msgstr "" +"Esta función solo debe llamarse en una función de recorrido del tipo que tiene " +"la bandera :c:macro:`Py_TPFLAGS_MANAGED_DICT` establecida." #: ../Doc/c-api/object.rst:572 msgid "Clear the managed dictionary of *obj*." -msgstr "" +msgstr "Limpia el diccionario gestionado de *obj*." #: ../Doc/c-api/object.rst:315 ../Doc/c-api/object.rst:327 #: ../Doc/c-api/object.rst:352 ../Doc/c-api/object.rst:403 #: ../Doc/c-api/object.rst:437 ../Doc/c-api/object.rst:458 msgid "built-in function" -msgstr "" +msgstr "función incorporada" #: ../Doc/c-api/object.rst:315 msgid "repr" -msgstr "" +msgstr "repr" #: ../Doc/c-api/object.rst:327 msgid "ascii" -msgstr "" +msgstr "ascii" #: ../Doc/c-api/object.rst:335 msgid "string" -msgstr "" +msgstr "cadena" #: ../Doc/c-api/object.rst:335 msgid "PyObject_Str (C function)" -msgstr "" +msgstr "PyObject_Str (función C)" #: ../Doc/c-api/object.rst:352 msgid "bytes" -msgstr "" +msgstr "bytes" #: ../Doc/c-api/object.rst:403 msgid "hash" -msgstr "" +msgstr "hash" #: ../Doc/c-api/object.rst:437 msgid "type" -msgstr "" +msgstr "type" #: ../Doc/c-api/object.rst:458 msgid "len" -msgstr "" +msgstr "len" diff --git a/c-api/type.po b/c-api/type.po index 8553a71723..b211121373 100644 --- a/c-api/type.po +++ b/c-api/type.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-04-12 00:54-0600\n" -"Last-Translator: Gonzalo Martinez \n" -"Language: es\n" +"PO-Revision-Date: 2026-02-15 15:18-0300\n" +"Last-Translator: Carlos A. Crespo \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.0.1\n" #: ../Doc/c-api/type.rst:6 msgid "Type Objects" @@ -27,58 +28,41 @@ msgstr "Objetos tipo" #: ../Doc/c-api/type.rst:13 msgid "The C structure of the objects used to describe built-in types." -msgstr "" -"La estructura C de los objetos utilizados para describir los tipos " -"incorporados." +msgstr "La estructura C de los objetos utilizados para describir los tipos incorporados." #: ../Doc/c-api/type.rst:18 -msgid "" -"This is the type object for type objects; it is the same object as :class:" -"`type` in the Python layer." -msgstr "" -"Este es el objeto tipo para objetos tipo; es el mismo objeto que :class:" -"`type` en la capa Python." +msgid "This is the type object for type objects; it is the same object as :class:`type` in the Python layer." +msgstr "Este es el objeto tipo para objetos tipo; es el mismo objeto que :class:`type` en la capa Python." #: ../Doc/c-api/type.rst:24 msgid "" -"Return non-zero if the object *o* is a type object, including instances of " -"types derived from the standard type object. Return 0 in all other cases. " -"This function always succeeds." +"Return non-zero if the object *o* is a type object, including instances of types derived from the standard type object. Return 0 in all other cases. This " +"function always succeeds." msgstr "" -"Retorna un valor distinto de cero si el objeto *o* es un objeto tipo, " -"incluidas las instancias de tipos derivados del objeto de tipo estándar. " -"Retorna 0 en todos los demás casos. Esta función siempre finaliza con éxito." +"Retorna un valor distinto de cero si el objeto *o* es un objeto tipo, incluidas las instancias de tipos derivados del objeto de tipo estándar. Retorna 0 en " +"todos los demás casos. Esta función siempre finaliza con éxito." #: ../Doc/c-api/type.rst:31 msgid "" -"Return non-zero if the object *o* is a type object, but not a subtype of the " -"standard type object. Return 0 in all other cases. This function always " +"Return non-zero if the object *o* is a type object, but not a subtype of the standard type object. Return 0 in all other cases. This function always " "succeeds." msgstr "" -"Retorna un valor distinto de cero si el objeto *o* es un objeto tipo, pero " -"no un subtipo del objeto tipo estándar. Retorna 0 en todos los demás casos. " -"Esta función siempre finaliza con éxito." +"Retorna un valor distinto de cero si el objeto *o* es un objeto tipo, pero no un subtipo del objeto tipo estándar. Retorna 0 en todos los demás casos. Esta " +"función siempre finaliza con éxito." #: ../Doc/c-api/type.rst:38 msgid "Clear the internal lookup cache. Return the current version tag." -msgstr "" -"Borra la caché de búsqueda interna. Retorna la etiqueta (*tag*) de la " -"versión actual." +msgstr "Borra la caché de búsqueda interna. Retorna la etiqueta (*tag*) de la versión actual." #: ../Doc/c-api/type.rst:42 -#, fuzzy msgid "" -"Return the :c:member:`~PyTypeObject.tp_flags` member of *type*. This " -"function is primarily meant for use with ``Py_LIMITED_API``; the individual " -"flag bits are guaranteed to be stable across Python releases, but access to :" -"c:member:`~PyTypeObject.tp_flags` itself is not part of the :ref:`limited " -"API `." +"Return the :c:member:`~PyTypeObject.tp_flags` member of *type*. This function is primarily meant for use with ``Py_LIMITED_API``; the individual flag bits " +"are guaranteed to be stable across Python releases, but access to :c:member:`~PyTypeObject.tp_flags` itself is not part of the :ref:`limited API `." msgstr "" -"Retorna el miembro :c:member:`~PyTypeObject.tp_flags` de *type*. Esta " -"función está destinada principalmente para su uso con `Py_LIMITED_API`; se " -"garantiza que los bits de bandera individuales serán estables en las " -"versiones de Python, pero el acceso a :c:member:`~PyTypeObject.tp_flags` en " -"sí mismo no forma parte de la API limitada." +"Retorna el miembro :c:member:`~PyTypeObject.tp_flags` de *type*. Esta función está destinada principalmente para su uso con ``Py_LIMITED_API``; se " +"garantiza que los bits de bandera individuales serán estables en las versiones de Python, pero el acceso a :c:member:`~PyTypeObject.tp_flags` en sí mismo " +"no forma parte de la :ref:`API limitada `." #: ../Doc/c-api/type.rst:49 msgid "The return type is now ``unsigned long`` rather than ``long``." @@ -86,387 +70,279 @@ msgstr "El tipo de retorno es ahora ``unsigned long`` en vez de ``long``." #: ../Doc/c-api/type.rst:55 msgid "" -"Return the type object's internal namespace, which is otherwise only exposed " -"via a read-only proxy (:attr:`cls.__dict__ `). This is a " -"replacement for accessing :c:member:`~PyTypeObject.tp_dict` directly. The " -"returned dictionary must be treated as read-only." +"Return the type object's internal namespace, which is otherwise only exposed via a read-only proxy (:attr:`cls.__dict__ `). This is a " +"replacement for accessing :c:member:`~PyTypeObject.tp_dict` directly. The returned dictionary must be treated as read-only." msgstr "" +"Retorna el espacio de nombres interno del objeto tipo, que de otra manera solo está expuesto a través de un *proxy* de solo lectura (:attr:`cls.__dict__ " +"`). Esto es un reemplazo para acceder a :c:member:`~PyTypeObject.tp_dict` directamente. El diccionario retornado debe tratarse como de solo " +"lectura." #: ../Doc/c-api/type.rst:61 msgid "" -"This function is meant for specific embedding and language-binding cases, " -"where direct access to the dict is necessary and indirect access (e.g. via " -"the proxy or :c:func:`PyObject_GetAttr`) isn't adequate." +"This function is meant for specific embedding and language-binding cases, where direct access to the dict is necessary and indirect access (e.g. via the " +"proxy or :c:func:`PyObject_GetAttr`) isn't adequate." msgstr "" +"Esta función está destinada a casos específicos de incrustación y vinculación de lenguajes, donde el acceso directo al diccionario es necesario y el acceso " +"indirecto (por ejemplo, a través del *proxy* o :c:func:`PyObject_GetAttr`) no es adecuado." #: ../Doc/c-api/type.rst:65 -msgid "" -"Extension modules should continue to use ``tp_dict``, directly or " -"indirectly, when setting up their own types." -msgstr "" +msgid "Extension modules should continue to use ``tp_dict``, directly or indirectly, when setting up their own types." +msgstr "Los módulos de extensión deben continuar usando ``tp_dict``, directa o indirectamente, al configurar sus propios tipos." #: ../Doc/c-api/type.rst:73 msgid "" -"Invalidate the internal lookup cache for the type and all of its subtypes. " -"This function must be called after any manual modification of the attributes " -"or base classes of the type." +"Invalidate the internal lookup cache for the type and all of its subtypes. This function must be called after any manual modification of the attributes or " +"base classes of the type." msgstr "" -"Invalida la memoria caché de búsqueda interna para el tipo y todos sus " -"subtipos. Esta función debe llamarse después de cualquier modificación " -"manual de los atributos o clases base del tipo." +"Invalida la memoria caché de búsqueda interna para el tipo y todos sus subtipos. Esta función debe llamarse después de cualquier modificación manual de los " +"atributos o clases base del tipo." #: ../Doc/c-api/type.rst:80 msgid "" -"Register *callback* as a type watcher. Return a non-negative integer ID " -"which must be passed to future calls to :c:func:`PyType_Watch`. In case of " -"error (e.g. no more watcher IDs available), return ``-1`` and set an " -"exception." +"Register *callback* as a type watcher. Return a non-negative integer ID which must be passed to future calls to :c:func:`PyType_Watch`. In case of error (e." +"g. no more watcher IDs available), return ``-1`` and set an exception." msgstr "" +"Registra *callback* como un observador de tipo. Retorna un ID entero no negativo que debe pasarse a llamadas futuras a :c:func:`PyType_Watch`. En caso de " +"error (por ejemplo, no hay más IDs de observador disponibles), retorna ``-1`` y establece una excepción." #: ../Doc/c-api/type.rst:90 msgid "" -"Clear watcher identified by *watcher_id* (previously returned from :c:func:" -"`PyType_AddWatcher`). Return ``0`` on success, ``-1`` on error (e.g. if " +"Clear watcher identified by *watcher_id* (previously returned from :c:func:`PyType_AddWatcher`). Return ``0`` on success, ``-1`` on error (e.g. if " "*watcher_id* was never registered.)" msgstr "" +"Borra el observador identificado por *watcher_id* (previamente retornado de :c:func:`PyType_AddWatcher`). Retorna ``0`` en caso de éxito, ``-1`` en caso de " +"error (por ejemplo, si *watcher_id* nunca fue registrado)." #: ../Doc/c-api/type.rst:94 msgid "" -"An extension should never call ``PyType_ClearWatcher`` with a *watcher_id* " -"that was not returned to it by a previous call to :c:func:" -"`PyType_AddWatcher`." +"An extension should never call ``PyType_ClearWatcher`` with a *watcher_id* that was not returned to it by a previous call to :c:func:`PyType_AddWatcher`." msgstr "" +"Una extensión nunca debe llamar a ``PyType_ClearWatcher`` con un *watcher_id* que no le fue retornado por una llamada previa a :c:func:`PyType_AddWatcher`." #: ../Doc/c-api/type.rst:103 msgid "" -"Mark *type* as watched. The callback granted *watcher_id* by :c:func:" -"`PyType_AddWatcher` will be called whenever :c:func:`PyType_Modified` " -"reports a change to *type*. (The callback may be called only once for a " -"series of consecutive modifications to *type*, if :c:func:`!_PyType_Lookup` " -"is not called on *type* between the modifications; this is an implementation " -"detail and subject to change.)" +"Mark *type* as watched. The callback granted *watcher_id* by :c:func:`PyType_AddWatcher` will be called whenever :c:func:`PyType_Modified` reports a change " +"to *type*. (The callback may be called only once for a series of consecutive modifications to *type*, if :c:func:`!_PyType_Lookup` is not called on *type* " +"between the modifications; this is an implementation detail and subject to change.)" msgstr "" +"Marca *type* como observado. El retrollamada (*callback*) otorgado *watcher_id* por :c:func:`PyType_AddWatcher` será llamado cada vez que :c:func:" +"`PyType_Modified` reporte un cambio a *type*. (El *callback* puede ser llamado solo una vez para una serie de modificaciones consecutivas a *type*, si :c:" +"func:`!_PyType_Lookup` no es llamado en *type* entre las modificaciones; esto es un detalle de implementación y sujeto a cambios)." #: ../Doc/c-api/type.rst:110 -msgid "" -"An extension should never call ``PyType_Watch`` with a *watcher_id* that was " -"not returned to it by a previous call to :c:func:`PyType_AddWatcher`." -msgstr "" +msgid "An extension should never call ``PyType_Watch`` with a *watcher_id* that was not returned to it by a previous call to :c:func:`PyType_AddWatcher`." +msgstr "Una extensión nunca debe llamar a ``PyType_Watch`` con un *watcher_id* que no le fue retornado por una llamada previa a :c:func:`PyType_AddWatcher`." #: ../Doc/c-api/type.rst:118 msgid "Type of a type-watcher callback function." -msgstr "" +msgstr "Tipo de una función de retrollamada (*callback*) de observador de tipo." #: ../Doc/c-api/type.rst:120 msgid "" -"The callback must not modify *type* or cause :c:func:`PyType_Modified` to be " -"called on *type* or any type in its MRO; violating this rule could cause " +"The callback must not modify *type* or cause :c:func:`PyType_Modified` to be called on *type* or any type in its MRO; violating this rule could cause " "infinite recursion." msgstr "" +"El retrollamada (*callback*) no debe modificar *type* o causar que :c:func:`PyType_Modified` sea llamado en *type* o cualquier tipo en su MRO; violar esta " +"regla podría causar recursión infinita." #: ../Doc/c-api/type.rst:129 -msgid "" -"Return non-zero if the type object *o* sets the feature *feature*. Type " -"features are denoted by single bit flags." +msgid "Return non-zero if the type object *o* sets the feature *feature*. Type features are denoted by single bit flags." msgstr "" -"Retorna un valor distinto de cero si el tipo objeto *o* establece la " -"característica *feature*. Las características de tipo se indican mediante " -"flags de un solo bit." +"Retorna un valor distinto de cero si el tipo objeto *o* establece la característica *feature*. Las características de tipo se indican mediante flags de un " +"solo bit." #: ../Doc/c-api/type.rst:135 -#, fuzzy -msgid "" -"Return true if the type object includes support for the cycle detector; this " -"tests the type flag :c:macro:`Py_TPFLAGS_HAVE_GC`." -msgstr "" -"Retorna verdadero si el objeto tipo incluye soporte para el detector de " -"ciclo; Esto prueba el indicador de tipo :const:`Py_TPFLAGS_HAVE_GC`." +msgid "Return true if the type object includes support for the cycle detector; this tests the type flag :c:macro:`Py_TPFLAGS_HAVE_GC`." +msgstr "Retorna verdadero si el objeto tipo incluye soporte para el detector de ciclos; esto prueba el indicador de tipo :c:macro:`Py_TPFLAGS_HAVE_GC`." #: ../Doc/c-api/type.rst:141 msgid "Return true if *a* is a subtype of *b*." msgstr "Retorna verdadero si *a* es un subtipo de *b*." #: ../Doc/c-api/type.rst:143 -#, fuzzy msgid "" -"This function only checks for actual subtypes, which means that :meth:`~type." -"__subclasscheck__` is not called on *b*. Call :c:func:`PyObject_IsSubclass` " +"This function only checks for actual subtypes, which means that :meth:`~type.__subclasscheck__` is not called on *b*. Call :c:func:`PyObject_IsSubclass` " "to do the same check that :func:`issubclass` would do." msgstr "" -"Esta función solo busca subtipos reales, lo que significa que :meth:`~class." -"__subclasscheck__` no se llama en *b*. Llama :c:func:`PyObject_IsSubclass` " -"para hacer el mismo chequeo que :func:`issubclass` haría." +"Esta función solo busca subtipos reales, lo que significa que :meth:`~type.__subclasscheck__` no se llama en *b*. Llama :c:func:`PyObject_IsSubclass` para " +"hacer la misma verificación que :func:`issubclass` haría." #: ../Doc/c-api/type.rst:151 msgid "" -"Generic handler for the :c:member:`~PyTypeObject.tp_alloc` slot of a type " -"object. Use Python's default memory allocation mechanism to allocate a new " +"Generic handler for the :c:member:`~PyTypeObject.tp_alloc` slot of a type object. Use Python's default memory allocation mechanism to allocate a new " "instance and initialize all its contents to ``NULL``." msgstr "" -"Controlador genérico para la ranura :c:member:`~PyTypeObject.tp_alloc` de un " -"objeto tipo. Usa el mecanismo de asignación de memoria predeterminado de " -"Python para asignar una nueva instancia e inicializar todo su contenido a " -"``NULL``." +"Controlador genérico para la ranura :c:member:`~PyTypeObject.tp_alloc` de un objeto tipo. Usa el mecanismo de asignación de memoria predeterminado de " +"Python para asignar una nueva instancia e inicializar todo su contenido a ``NULL``." #: ../Doc/c-api/type.rst:157 msgid "" -"Generic handler for the :c:member:`~PyTypeObject.tp_new` slot of a type " -"object. Create a new instance using the type's :c:member:`~PyTypeObject." -"tp_alloc` slot." +"Generic handler for the :c:member:`~PyTypeObject.tp_new` slot of a type object. Create a new instance using the type's :c:member:`~PyTypeObject.tp_alloc` " +"slot." msgstr "" -"Controlador genérico para la ranura :c:member:`~PyTypeObject.tp_new` de un " -"objeto tipo. Crea una nueva instancia utilizando la ranura del tipo :c:" -"member:`~PyTypeObject.tp_alloc`." +"Controlador genérico para la ranura :c:member:`~PyTypeObject.tp_new` de un objeto tipo. Crea una nueva instancia utilizando la ranura del tipo :c:member:" +"`~PyTypeObject.tp_alloc`." #: ../Doc/c-api/type.rst:162 msgid "" -"Finalize a type object. This should be called on all type objects to finish " -"their initialization. This function is responsible for adding inherited " -"slots from a type's base class. Return ``0`` on success, or return ``-1`` " -"and sets an exception on error." +"Finalize a type object. This should be called on all type objects to finish their initialization. This function is responsible for adding inherited slots " +"from a type's base class. Return ``0`` on success, or return ``-1`` and sets an exception on error." msgstr "" -"Finalizar un objeto tipo. Se debe llamar a todos los objetos tipo para " -"finalizar su inicialización. Esta función es responsable de agregar ranuras " -"heredadas de la clase base de un tipo. Retorna ``0`` en caso de éxito o " -"retorna ``-1`` y establece una excepción en caso de error." +"Finalizar un objeto tipo. Se debe llamar a todos los objetos tipo para finalizar su inicialización. Esta función es responsable de agregar ranuras " +"heredadas de la clase base de un tipo. Retorna ``0`` en caso de éxito o retorna ``-1`` y establece una excepción en caso de error." #: ../Doc/c-api/type.rst:168 -#, fuzzy -msgid "" -"If some of the base classes implements the GC protocol and the provided type " -"does not include the :c:macro:`Py_TPFLAGS_HAVE_GC` in its flags, then the GC " -"protocol will be automatically implemented from its parents. On the " -"contrary, if the type being created does include :c:macro:" -"`Py_TPFLAGS_HAVE_GC` in its flags then it **must** implement the GC protocol " -"itself by at least implementing the :c:member:`~PyTypeObject.tp_traverse` " -"handle." -msgstr "" -"Si algunas de las clases base implementan el protocolo GC y el tipo " -"proporcionado no incluye el :const:`Py_TPFLAGS_HAVE_GC` en sus banderas, " -"entonces el protocolo GC se implementará automáticamente desde sus padres. " -"Por el contrario, si el tipo que se está creando incluye :const:" -"`Py_TPFLAGS_HAVE_GC` en sus banderas, entonces **debe** implementar el " -"protocolo GC por sí mismo al implementar al menos el identificador :c:member:" -"`~PyTypeObject.tp_traverse`." - -#: ../Doc/c-api/type.rst:178 -#, fuzzy msgid "" -"Return the type's name. Equivalent to getting the type's :attr:`~type." -"__name__` attribute." +"If some of the base classes implements the GC protocol and the provided type does not include the :c:macro:`Py_TPFLAGS_HAVE_GC` in its flags, then the GC " +"protocol will be automatically implemented from its parents. On the contrary, if the type being created does include :c:macro:`Py_TPFLAGS_HAVE_GC` in its " +"flags then it **must** implement the GC protocol itself by at least implementing the :c:member:`~PyTypeObject.tp_traverse` handle." msgstr "" -"Retorna el nombre del tipo. Equivalente a obtener el atributo ``__name__`` " -"del tipo." +"Si algunas de las clases base implementan el protocolo GC y el tipo proporcionado no incluye :c:macro:`Py_TPFLAGS_HAVE_GC` en sus banderas, entonces el " +"protocolo GC se implementará automáticamente desde sus padres. Por el contrario, si el tipo que se está creando incluye :c:macro:`Py_TPFLAGS_HAVE_GC` en " +"sus banderas, entonces **debe** implementar el protocolo GC por sí mismo implementando al menos el manejador :c:member:`~PyTypeObject.tp_traverse`." + +#: ../Doc/c-api/type.rst:178 +msgid "Return the type's name. Equivalent to getting the type's :attr:`~type.__name__` attribute." +msgstr "Retorna el nombre del tipo. Equivalente a obtener el atributo :attr:`~type.__name__` del tipo." #: ../Doc/c-api/type.rst:185 -#, fuzzy -msgid "" -"Return the type's qualified name. Equivalent to getting the type's :attr:" -"`~type.__qualname__` attribute." -msgstr "" -"Retorna el nombre adecuado del tipo de objeto. Equivalente a obtener el " -"atributo ``__qualname__`` del objeto tipo." +msgid "Return the type's qualified name. Equivalent to getting the type's :attr:`~type.__qualname__` attribute." +msgstr "Retorna el nombre calificado del tipo. Equivalente a obtener el atributo :attr:`~type.__qualname__` del tipo." #: ../Doc/c-api/type.rst:192 msgid "" -"Return the type's fully qualified name. Equivalent to ``f\"{type.__module__}." -"{type.__qualname__}\"``, or :attr:`type.__qualname__` if :attr:`type." +"Return the type's fully qualified name. Equivalent to ``f\"{type.__module__}.{type.__qualname__}\"``, or :attr:`type.__qualname__` if :attr:`type." "__module__` is not a string or is equal to ``\"builtins\"``." msgstr "" +"Retorna el nombre completamente calificado del tipo. Equivalente a ``f\"{type.__module__}.{type.__qualname__}\"``, o :attr:`type.__qualname__` si :attr:" +"`type.__module__` no es una cadena de caracteres o es igual a ``\"builtins\"``." #: ../Doc/c-api/type.rst:200 -#, fuzzy -msgid "" -"Return the type's module name. Equivalent to getting the :attr:`type." -"__module__` attribute." -msgstr "" -"Retorna el nombre del tipo. Equivalente a obtener el atributo ``__name__`` " -"del tipo." +msgid "Return the type's module name. Equivalent to getting the :attr:`type.__module__` attribute." +msgstr "Retorna el nombre del módulo del tipo. Equivalente a obtener el atributo :attr:`type.__module__`." #: ../Doc/c-api/type.rst:207 msgid "" -"Return the function pointer stored in the given slot. If the result is " -"``NULL``, this indicates that either the slot is ``NULL``, or that the " -"function was called with invalid parameters. Callers will typically cast the " -"result pointer into the appropriate function type." +"Return the function pointer stored in the given slot. If the result is ``NULL``, this indicates that either the slot is ``NULL``, or that the function was " +"called with invalid parameters. Callers will typically cast the result pointer into the appropriate function type." msgstr "" -"Retorna el puntero de función almacenado en la ranura dada. Si el resultado " -"es ``NULL``, esto indica que la ranura es ``NULL`` o que la función se llamó " -"con parámetros no válidos. Las personas que llaman suelen convertir el " -"puntero de resultado en el tipo de función apropiado." +"Retorna el puntero de función almacenado en la ranura dada. Si el resultado es ``NULL``, esto indica que la ranura es ``NULL`` o que la función se llamó " +"con parámetros no válidos. Las personas que llaman suelen convertir el puntero de resultado en el tipo de función apropiado." #: ../Doc/c-api/type.rst:213 -msgid "" -"See :c:member:`PyType_Slot.slot` for possible values of the *slot* argument." -msgstr "" -"Consulte :c:member:`PyType_Slot.slot` para conocer los posibles valores del " -"argumento *slot*." +msgid "See :c:member:`PyType_Slot.slot` for possible values of the *slot* argument." +msgstr "Consulte :c:member:`PyType_Slot.slot` para conocer los posibles valores del argumento *slot*." #: ../Doc/c-api/type.rst:217 -msgid "" -":c:func:`PyType_GetSlot` can now accept all types. Previously, it was " -"limited to :ref:`heap types `." -msgstr "" -":c:func:`PyType_GetSlot` ahora puede aceptar todos los tipos. Anteriormente, " -"estaba limitado a :ref:`heap types `." +msgid ":c:func:`PyType_GetSlot` can now accept all types. Previously, it was limited to :ref:`heap types `." +msgstr ":c:func:`PyType_GetSlot` ahora puede aceptar todos los tipos. Anteriormente, estaba limitado a :ref:`heap types `." #: ../Doc/c-api/type.rst:223 -msgid "" -"Return the module object associated with the given type when the type was " -"created using :c:func:`PyType_FromModuleAndSpec`." -msgstr "" -"Retorna el objeto módulo asociado con el tipo dado cuando se creó el tipo " -"usando :c:func:`PyType_FromModuleAndSpec`." +msgid "Return the module object associated with the given type when the type was created using :c:func:`PyType_FromModuleAndSpec`." +msgstr "Retorna el objeto módulo asociado con el tipo dado cuando se creó el tipo usando :c:func:`PyType_FromModuleAndSpec`." #: ../Doc/c-api/type.rst:226 ../Doc/c-api/type.rst:246 -msgid "" -"If no module is associated with the given type, sets :py:class:`TypeError` " -"and returns ``NULL``." -msgstr "" -"Si no hay ningún módulo asociado con el tipo dado, establece :py:class:" -"`TypeError` y retorna ``NULL``." +msgid "If no module is associated with the given type, sets :py:class:`TypeError` and returns ``NULL``." +msgstr "Si no hay ningún módulo asociado con el tipo dado, establece :py:class:`TypeError` y retorna ``NULL``." #: ../Doc/c-api/type.rst:229 -#, fuzzy -msgid "" -"This function is usually used to get the module in which a method is " -"defined. Note that in such a method, ``PyType_GetModule(Py_TYPE(self))`` may " -"not return the intended result. ``Py_TYPE(self)`` may be a *subclass* of the " -"intended class, and subclasses are not necessarily defined in the same " -"module as their superclass. See :c:type:`PyCMethod` to get the class that " -"defines the method. See :c:func:`PyType_GetModuleByDef` for cases when :c:" -"type:`!PyCMethod` cannot be used." -msgstr "" -"Esta función se suele utilizar para obtener el módulo en el que se define un " -"método. Tenga en cuenta que en un método de este tipo, es posible que " -"``PyType_GetModule(Py_TYPE(self))`` no retorne el resultado deseado. " -"``Py_TYPE(self)`` puede ser una *subclass* de la clase deseada, y las " -"subclases no están necesariamente definidas en el mismo módulo que su " -"superclase. Consulte :c:func:`PyCMethod` para obtener la clase que define el " -"método. Ver ::c:func:`PyType_GetModuleByDef` para los casos en los que no se " -"puede usar ``PyCMethod``." +msgid "" +"This function is usually used to get the module in which a method is defined. Note that in such a method, ``PyType_GetModule(Py_TYPE(self))`` may not " +"return the intended result. ``Py_TYPE(self)`` may be a *subclass* of the intended class, and subclasses are not necessarily defined in the same module as " +"their superclass. See :c:type:`PyCMethod` to get the class that defines the method. See :c:func:`PyType_GetModuleByDef` for cases when :c:type:`!PyCMethod` " +"cannot be used." +msgstr "" +"Esta función se suele utilizar para obtener el módulo en el que se define un método. Tenga en cuenta que en un método de este tipo, es posible que " +"``PyType_GetModule(Py_TYPE(self))`` no retorne el resultado deseado. ``Py_TYPE(self)`` puede ser una *subclass* de la clase deseada, y las subclases no " +"están necesariamente definidas en el mismo módulo que su superclase. Consulte :c:type:`PyCMethod` para obtener la clase que define el método. Consulte :c:" +"func:`PyType_GetModuleByDef` para los casos en los que no se puede usar :c:type:`!PyCMethod`." #: ../Doc/c-api/type.rst:242 msgid "" -"Return the state of the module object associated with the given type. This " -"is a shortcut for calling :c:func:`PyModule_GetState()` on the result of :c:" -"func:`PyType_GetModule`." +"Return the state of the module object associated with the given type. This is a shortcut for calling :c:func:`PyModule_GetState()` on the result of :c:func:" +"`PyType_GetModule`." msgstr "" -"Retorna el estado del objeto de módulo asociado con el tipo dado. Este es un " -"atajo para llamar :c:func:`PyModule_GetState()` en el resultado de :c:func:" +"Retorna el estado del objeto de módulo asociado con el tipo dado. Este es un atajo para llamar :c:func:`PyModule_GetState()` en el resultado de :c:func:" "`PyType_GetModule`." #: ../Doc/c-api/type.rst:249 -msgid "" -"If the *type* has an associated module but its state is ``NULL``, returns " -"``NULL`` without setting an exception." -msgstr "" -"Si el tipo *type* tiene un módulo asociado pero su estado es ``NULL``, " -"retorna ``NULL`` sin establecer una excepción." +msgid "If the *type* has an associated module but its state is ``NULL``, returns ``NULL`` without setting an exception." +msgstr "Si el tipo *type* tiene un módulo asociado pero su estado es ``NULL``, retorna ``NULL`` sin establecer una excepción." #: ../Doc/c-api/type.rst:256 -msgid "" -"Find the first superclass whose module was created from the given :c:type:" -"`PyModuleDef` *def*, and return that module." -msgstr "" -"Encuentra la primer superclase cuyo módulo fue creado a partir del :c:type:" -"`PyModuleDef` *def* dado, y retorna ese módulo." +msgid "Find the first superclass whose module was created from the given :c:type:`PyModuleDef` *def*, and return that module." +msgstr "Encuentra la primer superclase cuyo módulo fue creado a partir del :c:type:`PyModuleDef` *def* dado, y retorna ese módulo." #: ../Doc/c-api/type.rst:259 -msgid "" -"If no module is found, raises a :py:class:`TypeError` and returns ``NULL``." -msgstr "" -"Si no se encuentra ningún módulo, lanza :py:class:`TypeError` y retorna " -"``NULL``." +msgid "If no module is found, raises a :py:class:`TypeError` and returns ``NULL``." +msgstr "Si no se encuentra ningún módulo, lanza :py:class:`TypeError` y retorna ``NULL``." #: ../Doc/c-api/type.rst:261 msgid "" -"This function is intended to be used together with :c:func:" -"`PyModule_GetState()` to get module state from slot methods (such as :c:" -"member:`~PyTypeObject.tp_init` or :c:member:`~PyNumberMethods.nb_add`) and " -"other places where a method's defining class cannot be passed using the :c:" -"type:`PyCMethod` calling convention." +"This function is intended to be used together with :c:func:`PyModule_GetState()` to get module state from slot methods (such as :c:member:`~PyTypeObject." +"tp_init` or :c:member:`~PyNumberMethods.nb_add`) and other places where a method's defining class cannot be passed using the :c:type:`PyCMethod` calling " +"convention." msgstr "" -"Esta función está pensada para ser utilizada junto con :c:func:" -"`PyModule_GetState()` para obtener el estado del módulo de los métodos de " -"ranura (como :c:member:`~PyTypeObject.tp_init` o :c:member:`~PyNumberMethods." -"nb_add`) y en otros lugares donde la clase que define a un método no se " -"puede pasar utilizando la convención de llamada :c:type:`PyCMethod`." +"Esta función está pensada para ser utilizada junto con :c:func:`PyModule_GetState()` para obtener el estado del módulo de los métodos de ranura (como :c:" +"member:`~PyTypeObject.tp_init` o :c:member:`~PyNumberMethods.nb_add`) y en otros lugares donde la clase que define a un método no se puede pasar utilizando " +"la convención de llamada :c:type:`PyCMethod`." #: ../Doc/c-api/type.rst:271 msgid "Attempt to assign a version tag to the given type." -msgstr "" +msgstr "Intenta asignar una etiqueta (*tag*) de versión al tipo dado." #: ../Doc/c-api/type.rst:273 -msgid "" -"Returns 1 if the type already had a valid version tag or a new one was " -"assigned, or 0 if a new tag could not be assigned." -msgstr "" +msgid "Returns 1 if the type already had a valid version tag or a new one was assigned, or 0 if a new tag could not be assigned." +msgstr "Retorna 1 si el tipo ya tenía una etiqueta (*tag*) de versión válida o se asignó una nueva, o 0 si no se pudo asignar una nueva etiqueta." #: ../Doc/c-api/type.rst:280 msgid "Creating Heap-Allocated Types" msgstr "Crear tipos asignados en montículo (*heap*)" #: ../Doc/c-api/type.rst:282 -msgid "" -"The following functions and structs are used to create :ref:`heap types " -"`." -msgstr "" -"Las siguientes funciones y estructuras se utilizan para crear :ref:`heap " -"types `." +msgid "The following functions and structs are used to create :ref:`heap types `." +msgstr "Las siguientes funciones y estructuras se utilizan para crear :ref:`heap types `." #: ../Doc/c-api/type.rst:287 -#, fuzzy -msgid "" -"Create and return a :ref:`heap type ` from the *spec* (see :c:" -"macro:`Py_TPFLAGS_HEAPTYPE`)." -msgstr "" -"Crea y retorna un :ref:`tipo heap ` a partir del *spec* (:const:" -"`Py_TPFLAGS_HEAPTYPE`)." +msgid "Create and return a :ref:`heap type ` from the *spec* (see :c:macro:`Py_TPFLAGS_HEAPTYPE`)." +msgstr "Crea y retorna un :ref:`tipo heap ` a partir del *spec* (ver :c:macro:`Py_TPFLAGS_HEAPTYPE`)." #: ../Doc/c-api/type.rst:290 msgid "" -"The metaclass *metaclass* is used to construct the resulting type object. " -"When *metaclass* is ``NULL``, the metaclass is derived from *bases* (or " +"The metaclass *metaclass* is used to construct the resulting type object. When *metaclass* is ``NULL``, the metaclass is derived from *bases* (or " "*Py_tp_base[s]* slots if *bases* is ``NULL``, see below)." msgstr "" +"La metaclase *metaclass* se usa para construir el objeto tipo resultante. Cuando *metaclass* es ``NULL``, la metaclase se deriva de *bases* (o ranuras " +"*Py_tp_base[s]* si *bases* es ``NULL``, ver abajo)." #: ../Doc/c-api/type.rst:294 msgid "" -"Metaclasses that override :c:member:`~PyTypeObject.tp_new` are not " -"supported, except if ``tp_new`` is ``NULL``. (For backwards compatibility, " -"other ``PyType_From*`` functions allow such metaclasses. They ignore " -"``tp_new``, which may result in incomplete initialization. This is " -"deprecated and in Python 3.14+ such metaclasses will not be supported.)" +"Metaclasses that override :c:member:`~PyTypeObject.tp_new` are not supported, except if ``tp_new`` is ``NULL``. (For backwards compatibility, other " +"``PyType_From*`` functions allow such metaclasses. They ignore ``tp_new``, which may result in incomplete initialization. This is deprecated and in Python " +"3.14+ such metaclasses will not be supported.)" msgstr "" +"Las metaclases que sobreescriben :c:member:`~PyTypeObject.tp_new` no están soportadas, excepto si ``tp_new`` es ``NULL``. (Para compatibilidad hacia atrás, " +"otras funciones ``PyType_From*`` permiten tales metaclases. Ignoran ``tp_new``, lo que puede resultar en inicialización incompleta. Esto está obsoleto y en " +"Python 3.14+ tales metaclases no estarán soportadas.)" #: ../Doc/c-api/type.rst:301 msgid "" -"The *bases* argument can be used to specify base classes; it can either be " -"only one class or a tuple of classes. If *bases* is ``NULL``, the " -"*Py_tp_bases* slot is used instead. If that also is ``NULL``, the " -"*Py_tp_base* slot is used instead. If that also is ``NULL``, the new type " -"derives from :class:`object`." +"The *bases* argument can be used to specify base classes; it can either be only one class or a tuple of classes. If *bases* is ``NULL``, the *Py_tp_bases* " +"slot is used instead. If that also is ``NULL``, the *Py_tp_base* slot is used instead. If that also is ``NULL``, the new type derives from :class:`object`." msgstr "" -"El argumento *bases* se puede utilizar para especificar clases base; puede " -"ser solo una clase o una tupla de clases. Si *bases* es ``NULL``, en su " -"lugar se utiliza la ranura *Py_tp_bases*. Si esa también es ``NULL``, se usa " -"la ranura *Py_tp_base* en su lugar. Si también es ``NULL``, el nuevo tipo se " -"deriva de :class:`object`." +"El argumento *bases* se puede utilizar para especificar clases base; puede ser solo una clase o una tupla de clases. Si *bases* es ``NULL``, en su lugar se " +"utiliza la ranura *Py_tp_bases*. Si esa también es ``NULL``, se usa la ranura *Py_tp_base* en su lugar. Si también es ``NULL``, el nuevo tipo se deriva de :" +"class:`object`." #: ../Doc/c-api/type.rst:307 msgid "" -"The *module* argument can be used to record the module in which the new " -"class is defined. It must be a module object or ``NULL``. If not ``NULL``, " -"the module is associated with the new type and can later be retrieved with :" -"c:func:`PyType_GetModule`. The associated module is not inherited by " -"subclasses; it must be specified for each class individually." +"The *module* argument can be used to record the module in which the new class is defined. It must be a module object or ``NULL``. If not ``NULL``, the " +"module is associated with the new type and can later be retrieved with :c:func:`PyType_GetModule`. The associated module is not inherited by subclasses; it " +"must be specified for each class individually." msgstr "" -"El argumento *module* se puede utilizar para registrar el módulo en el que " -"se define la nueva clase. Debe ser un objeto de módulo o ``NULL``. Si no es " -"``NULL``, el módulo se asocia con el nuevo tipo y luego se puede recuperar " -"con :c:func:`PyType_GetModule`. El módulo asociado no es heredado por " -"subclases; debe especificarse para cada clase individualmente." +"El argumento *module* se puede utilizar para registrar el módulo en el que se define la nueva clase. Debe ser un objeto de módulo o ``NULL``. Si no es " +"``NULL``, el módulo se asocia con el nuevo tipo y luego se puede recuperar con :c:func:`PyType_GetModule`. El módulo asociado no es heredado por subclases; " +"debe especificarse para cada clase individualmente." #: ../Doc/c-api/type.rst:314 msgid "This function calls :c:func:`PyType_Ready` on the new type." @@ -474,75 +350,66 @@ msgstr "Esta función llama :c:func:`PyType_Ready` en el tipo nuevo." #: ../Doc/c-api/type.rst:316 msgid "" -"Note that this function does *not* fully match the behavior of calling :py:" -"class:`type() ` or using the :keyword:`class` statement. With user-" -"provided base types or metaclasses, prefer :ref:`calling ` :py:" -"class:`type` (or the metaclass) over ``PyType_From*`` functions. " -"Specifically:" +"Note that this function does *not* fully match the behavior of calling :py:class:`type() ` or using the :keyword:`class` statement. With user-" +"provided base types or metaclasses, prefer :ref:`calling ` :py:class:`type` (or the metaclass) over ``PyType_From*`` functions. Specifically:" msgstr "" +"Nota que esta función *no* coincide completamente con el comportamiento de llamar :py:class:`type() ` o usar la sentencia :keyword:`class`. Con tipos " +"base o metaclases proporcionados por el usuario, prefiera :ref:`llamar ` :py:class:`type` (o la metaclase) sobre las funciones ``PyType_From*``. " +"Específicamente:" #: ../Doc/c-api/type.rst:323 -msgid "" -":py:meth:`~object.__new__` is not called on the new class (and it must be " -"set to ``type.__new__``)." -msgstr "" +msgid ":py:meth:`~object.__new__` is not called on the new class (and it must be set to ``type.__new__``)." +msgstr ":py:meth:`~object.__new__` no es llamado en la nueva clase (y debe ser establecido a ``type.__new__``)." #: ../Doc/c-api/type.rst:325 msgid ":py:meth:`~object.__init__` is not called on the new class." -msgstr "" +msgstr ":py:meth:`~object.__init__` no es llamado en la nueva clase." #: ../Doc/c-api/type.rst:326 msgid ":py:meth:`~object.__init_subclass__` is not called on any bases." -msgstr "" +msgstr ":py:meth:`~object.__init_subclass__` no es llamado en ninguna base." #: ../Doc/c-api/type.rst:327 msgid ":py:meth:`~object.__set_name__` is not called on new descriptors." -msgstr "" +msgstr ":py:meth:`~object.__set_name__` no es llamado en nuevos descriptores." #: ../Doc/c-api/type.rst:333 -#, fuzzy msgid "Equivalent to ``PyType_FromMetaclass(NULL, module, spec, bases)``." -msgstr "Equivalente a ``PyType_FromModuleAndSpec(NULL, spec, bases)``." +msgstr "Equivalente a ``PyType_FromMetaclass(NULL, module, spec, bases)``." #: ../Doc/c-api/type.rst:339 -msgid "" -"The function now accepts a single class as the *bases* argument and ``NULL`` " -"as the ``tp_doc`` slot." -msgstr "" -"La función ahora acepta una sola clase como argumento *bases* y ``NULL`` " -"como ranura ``tp_doc``." +msgid "The function now accepts a single class as the *bases* argument and ``NULL`` as the ``tp_doc`` slot." +msgstr "La función ahora acepta una sola clase como argumento *bases* y ``NULL`` como ranura ``tp_doc``." #: ../Doc/c-api/type.rst:344 ../Doc/c-api/type.rst:361 -msgid "" -"The function now finds and uses a metaclass corresponding to the provided " -"base classes. Previously, only :class:`type` instances were returned." +msgid "The function now finds and uses a metaclass corresponding to the provided base classes. Previously, only :class:`type` instances were returned." msgstr "" +"La función ahora encuentra y usa una metaclase correspondiente a las clases base proporcionadas. Anteriormente, sólo se retornaban instancias de :class:" +"`type`." -#: ../Doc/c-api/type.rst:347 ../Doc/c-api/type.rst:364 -#: ../Doc/c-api/type.rst:380 +#: ../Doc/c-api/type.rst:347 ../Doc/c-api/type.rst:364 ../Doc/c-api/type.rst:380 msgid "" -"The :c:member:`~PyTypeObject.tp_new` of the metaclass is *ignored*. which " -"may result in incomplete initialization. Creating classes whose metaclass " -"overrides :c:member:`~PyTypeObject.tp_new` is deprecated and in Python 3.14+ " -"it will be no longer allowed." +"The :c:member:`~PyTypeObject.tp_new` of the metaclass is *ignored*. which may result in incomplete initialization. Creating classes whose metaclass " +"overrides :c:member:`~PyTypeObject.tp_new` is deprecated and in Python 3.14+ it will be no longer allowed." msgstr "" +"El :c:member:`~PyTypeObject.tp_new` de la metaclase es *ignorado*. lo que puede resultar en una inicialización incompleta. La creación de clases cuya " +"metaclase sobrescribe :c:member:`~PyTypeObject.tp_new` está obsoleta y en Python 3.14+ ya no será permitida." #: ../Doc/c-api/type.rst:355 -#, fuzzy msgid "Equivalent to ``PyType_FromMetaclass(NULL, NULL, spec, bases)``." -msgstr "Equivalente a ``PyType_FromModuleAndSpec(NULL, spec, bases)``." +msgstr "Equivalente a ``PyType_FromMetaclass(NULL, NULL, spec, bases)``." #: ../Doc/c-api/type.rst:372 -#, fuzzy msgid "Equivalent to ``PyType_FromMetaclass(NULL, NULL, spec, NULL)``." -msgstr "Equivalente a ``PyType_FromSpecWithBases(spec, NULL)``." +msgstr "Equivalente a ``PyType_FromMetaclass(NULL, NULL, spec, NULL)``." #: ../Doc/c-api/type.rst:376 msgid "" -"The function now finds and uses a metaclass corresponding to the base " -"classes provided in *Py_tp_base[s]* slots. Previously, only :class:`type` " -"instances were returned." +"The function now finds and uses a metaclass corresponding to the base classes provided in *Py_tp_base[s]* slots. Previously, only :class:`type` instances " +"were returned." msgstr "" +"La función ahora encuentra y usa una metaclase correspondiente a las clases base proporcionadas en las ranuras *Py_tp_base[s]*. Anteriormente, sólo se " +"retornaban instancias de :class:`type`." #: ../Doc/c-api/type.rst:397 msgid "Structure defining a type's behavior." @@ -550,110 +417,80 @@ msgstr "Estructura que define el comportamiento de un tipo." #: ../Doc/c-api/type.rst:401 msgid "Name of the type, used to set :c:member:`PyTypeObject.tp_name`." -msgstr "" -"Nombre del tipo, utilizado para establecer :c:member:`PyTypeObject.tp_name`." +msgstr "Nombre del tipo, utilizado para establecer :c:member:`PyTypeObject.tp_name`." #: ../Doc/c-api/type.rst:405 -#, fuzzy -msgid "" -"If positive, specifies the size of the instance in bytes. It is used to set :" -"c:member:`PyTypeObject.tp_basicsize`." -msgstr "" -"Tamaño de la instancia en bytes, utilizado para establecer :c:member:" -"`PyTypeObject.tp_basicsize` y :c:member:`PyTypeObject.tp_itemsize`." +msgid "If positive, specifies the size of the instance in bytes. It is used to set :c:member:`PyTypeObject.tp_basicsize`." +msgstr "Si es positivo, especifica el tamaño de la instancia en bytes. Se utiliza para establecer :c:member:`PyTypeObject.tp_basicsize`." #: ../Doc/c-api/type.rst:408 -msgid "" -"If zero, specifies that :c:member:`~PyTypeObject.tp_basicsize` should be " -"inherited." -msgstr "" +msgid "If zero, specifies that :c:member:`~PyTypeObject.tp_basicsize` should be inherited." +msgstr "Si es cero, especifica que :c:member:`~PyTypeObject.tp_basicsize` debe ser heredado." #: ../Doc/c-api/type.rst:411 msgid "" -"If negative, the absolute value specifies how much space instances of the " -"class need *in addition* to the superclass. Use :c:func:" -"`PyObject_GetTypeData` to get a pointer to subclass-specific memory reserved " -"this way." +"If negative, the absolute value specifies how much space instances of the class need *in addition* to the superclass. Use :c:func:`PyObject_GetTypeData` to " +"get a pointer to subclass-specific memory reserved this way." msgstr "" +"Si es negativo, el valor absoluto especifica cuánto espacio necesitan las instancias de la clase *además* de la superclase. Use :c:func:" +"`PyObject_GetTypeData` para obtener un puntero a la memoria específica de la subclase reservada de esta manera." #: ../Doc/c-api/type.rst:418 msgid "Previously, this field could not be negative." -msgstr "" +msgstr "Anteriormente, este campo no podía ser negativo." #: ../Doc/c-api/type.rst:422 -#, fuzzy msgid "" -"Size of one element of a variable-size type, in bytes. Used to set :c:member:" -"`PyTypeObject.tp_itemsize`. See ``tp_itemsize`` documentation for caveats." +"Size of one element of a variable-size type, in bytes. Used to set :c:member:`PyTypeObject.tp_itemsize`. See ``tp_itemsize`` documentation for caveats." msgstr "" -"Tamaño de la instancia en bytes, utilizado para establecer :c:member:" -"`PyTypeObject.tp_basicsize` y :c:member:`PyTypeObject.tp_itemsize`." +"Tamaño de un elemento de un tipo de tamaño variable, en bytes. Utilizado para establecer :c:member:`PyTypeObject.tp_itemsize`. Consulte la documentación de " +"``tp_itemsize`` para conocer las advertencias." #: ../Doc/c-api/type.rst:426 msgid "" -"If zero, :c:member:`~PyTypeObject.tp_itemsize` is inherited. Extending " -"arbitrary variable-sized classes is dangerous, since some types use a fixed " -"offset for variable-sized memory, which can then overlap fixed-sized memory " -"used by a subclass. To help prevent mistakes, inheriting ``itemsize`` is " -"only possible in the following situations:" +"If zero, :c:member:`~PyTypeObject.tp_itemsize` is inherited. Extending arbitrary variable-sized classes is dangerous, since some types use a fixed offset " +"for variable-sized memory, which can then overlap fixed-sized memory used by a subclass. To help prevent mistakes, inheriting ``itemsize`` is only possible " +"in the following situations:" msgstr "" +"Si es cero, :c:member:`~PyTypeObject.tp_itemsize` se hereda. Extender clases de tamaño variable arbitrario es peligroso, ya que algunos tipos usan un " +"desplazamiento fijo para memoria de tamaño variable, que puede entonces superponerse con memoria de tamaño fijo usada por una subclase. Para ayudar a " +"prevenir errores, heredar ``itemsize`` sólo es posible en las siguientes situaciones:" #: ../Doc/c-api/type.rst:433 -#, fuzzy -msgid "" -"The base is not variable-sized (its :c:member:`~PyTypeObject.tp_itemsize`)." -msgstr "" -"Nombre del tipo, utilizado para establecer :c:member:`PyTypeObject.tp_name`." +msgid "The base is not variable-sized (its :c:member:`~PyTypeObject.tp_itemsize`)." +msgstr "La base no es de tamaño variable (su :c:member:`~PyTypeObject.tp_itemsize`)." #: ../Doc/c-api/type.rst:435 -msgid "" -"The requested :c:member:`PyType_Spec.basicsize` is positive, suggesting that " -"the memory layout of the base class is known." -msgstr "" +msgid "The requested :c:member:`PyType_Spec.basicsize` is positive, suggesting that the memory layout of the base class is known." +msgstr "El :c:member:`PyType_Spec.basicsize` solicitado es positivo, sugiriendo que la distribución de memoria de la clase base es conocida." #: ../Doc/c-api/type.rst:437 -msgid "" -"The requested :c:member:`PyType_Spec.basicsize` is zero, suggesting that the " -"subclass does not access the instance's memory directly." -msgstr "" +msgid "The requested :c:member:`PyType_Spec.basicsize` is zero, suggesting that the subclass does not access the instance's memory directly." +msgstr "El :c:member:`PyType_Spec.basicsize` solicitado es cero, sugiriendo que la subclase no accede a la memoria de la instancia directamente." #: ../Doc/c-api/type.rst:440 msgid "With the :c:macro:`Py_TPFLAGS_ITEMS_AT_END` flag." -msgstr "" +msgstr "Con la bandera :c:macro:`Py_TPFLAGS_ITEMS_AT_END`." #: ../Doc/c-api/type.rst:444 msgid "Type flags, used to set :c:member:`PyTypeObject.tp_flags`." -msgstr "" -"Banderas (*flags*) del tipo, que se usan para establecer :c:member:" -"`PyTypeObject.tp_flags`." +msgstr "Banderas (*flags*) del tipo, que se usan para establecer :c:member:`PyTypeObject.tp_flags`." #: ../Doc/c-api/type.rst:446 -msgid "" -"If the ``Py_TPFLAGS_HEAPTYPE`` flag is not set, :c:func:" -"`PyType_FromSpecWithBases` sets it automatically." -msgstr "" -"Si el indicador ``Py_TPFLAGS_HEAPTYPE`` no está establecido, :c:func:" -"`PyType_FromSpecWithBases` lo establece automáticamente." +msgid "If the ``Py_TPFLAGS_HEAPTYPE`` flag is not set, :c:func:`PyType_FromSpecWithBases` sets it automatically." +msgstr "Si el indicador ``Py_TPFLAGS_HEAPTYPE`` no está establecido, :c:func:`PyType_FromSpecWithBases` lo establece automáticamente." #: ../Doc/c-api/type.rst:451 -msgid "" -"Array of :c:type:`PyType_Slot` structures. Terminated by the special slot " -"value ``{0, NULL}``." -msgstr "" -"Arreglo de estructuras :c:type:`PyType_Slot`. Terminado por el valor de " -"ranura especial ``{0, NULL}``." +msgid "Array of :c:type:`PyType_Slot` structures. Terminated by the special slot value ``{0, NULL}``." +msgstr "Arreglo de estructuras :c:type:`PyType_Slot`. Terminado por el valor de ranura especial ``{0, NULL}``." #: ../Doc/c-api/type.rst:454 msgid "Each slot ID should be specified at most once." -msgstr "" +msgstr "Cada ID de ranura debe especificarse como máximo una vez." #: ../Doc/c-api/type.rst:464 -msgid "" -"Structure defining optional functionality of a type, containing a slot ID " -"and a value pointer." -msgstr "" -"Estructura que define la funcionalidad opcional de un tipo, que contiene una " -"ranura ID y un puntero de valor." +msgid "Structure defining optional functionality of a type, containing a slot ID and a value pointer." +msgstr "Estructura que define la funcionalidad opcional de un tipo, que contiene una ranura ID y un puntero de valor." #: ../Doc/c-api/type.rst:469 msgid "A slot ID." @@ -661,15 +498,11 @@ msgstr "Una ranura ID." #: ../Doc/c-api/type.rst:471 msgid "" -"Slot IDs are named like the field names of the structures :c:type:" -"`PyTypeObject`, :c:type:`PyNumberMethods`, :c:type:`PySequenceMethods`, :c:" -"type:`PyMappingMethods` and :c:type:`PyAsyncMethods` with an added ``Py_`` " -"prefix. For example, use:" +"Slot IDs are named like the field names of the structures :c:type:`PyTypeObject`, :c:type:`PyNumberMethods`, :c:type:`PySequenceMethods`, :c:type:" +"`PyMappingMethods` and :c:type:`PyAsyncMethods` with an added ``Py_`` prefix. For example, use:" msgstr "" -"Las ranuras IDs se nombran como los nombres de campo de las estructuras :c:" -"type:`PyTypeObject`, :c:type:`PyNumberMethods`, :c:type:" -"`PySequenceMethods`, :c:type:`PyMappingMethods` y :c:type:`PyAsyncMethods` " -"con un prefijo ``Py_`` agregado. Por ejemplo, use:" +"Las ranuras IDs se nombran como los nombres de campo de las estructuras :c:type:`PyTypeObject`, :c:type:`PyNumberMethods`, :c:type:`PySequenceMethods`, :c:" +"type:`PyMappingMethods` y :c:type:`PyAsyncMethods` con un prefijo ``Py_`` agregado. Por ejemplo, use:" #: ../Doc/c-api/type.rst:477 msgid "``Py_tp_dealloc`` to set :c:member:`PyTypeObject.tp_dealloc`" @@ -681,119 +514,78 @@ msgstr "``Py_nb_add`` para establecer :c:member:`PyNumberMethods.nb_add`" #: ../Doc/c-api/type.rst:479 msgid "``Py_sq_length`` to set :c:member:`PySequenceMethods.sq_length`" -msgstr "" -"``Py_sq_length`` para establecer :c:member:`PySequenceMethods.sq_length`" +msgstr "``Py_sq_length`` para establecer :c:member:`PySequenceMethods.sq_length`" #: ../Doc/c-api/type.rst:481 -#, fuzzy -msgid "" -"The following “offset” fields cannot be set using :c:type:`PyType_Slot`:" -msgstr "" -"Los siguientes campos no se pueden configurar en absoluto usando :c:type:" -"`PyType_Spec` y :c:type:`PyType_Slot`:" +msgid "The following \"offset\" fields cannot be set using :c:type:`PyType_Slot`:" +msgstr "Los siguientes campos de desplazamiento no se pueden configurar usando :c:type:`PyType_Slot`:" #: ../Doc/c-api/type.rst:483 -#, fuzzy -msgid "" -":c:member:`~PyTypeObject.tp_weaklistoffset` (use :c:macro:" -"`Py_TPFLAGS_MANAGED_WEAKREF` instead if possible)" -msgstr "" -":c:member:`~PyTypeObject.tp_weaklistoffset` (vea :ref:`PyMemberDef " -"`)" +msgid ":c:member:`~PyTypeObject.tp_weaklistoffset` (use :c:macro:`Py_TPFLAGS_MANAGED_WEAKREF` instead if possible)" +msgstr ":c:member:`~PyTypeObject.tp_weaklistoffset` (use :c:macro:`Py_TPFLAGS_MANAGED_WEAKREF` en su lugar si es posible)" #: ../Doc/c-api/type.rst:485 -#, fuzzy -msgid "" -":c:member:`~PyTypeObject.tp_dictoffset` (use :c:macro:" -"`Py_TPFLAGS_MANAGED_DICT` instead if possible)" -msgstr "" -":c:member:`~PyTypeObject.tp_dictoffset` (vea :ref:`PyMemberDef `)" +msgid ":c:member:`~PyTypeObject.tp_dictoffset` (use :c:macro:`Py_TPFLAGS_MANAGED_DICT` instead if possible)" +msgstr ":c:member:`~PyTypeObject.tp_dictoffset` (use :c:macro:`Py_TPFLAGS_MANAGED_DICT` en su lugar si es posible)" #: ../Doc/c-api/type.rst:487 -#, fuzzy -msgid "" -":c:member:`~PyTypeObject.tp_vectorcall_offset` (use " -"``\"__vectorcalloffset__\"`` in :ref:`PyMemberDef `)" -msgstr "" -":c:member:`~PyTypeObject.tp_vectorcall_offset` (vea :ref:`PyMemberDef " -"`)" +msgid ":c:member:`~PyTypeObject.tp_vectorcall_offset` (use ``\"__vectorcalloffset__\"`` in :ref:`PyMemberDef `)" +msgstr ":c:member:`~PyTypeObject.tp_vectorcall_offset` (use ``\"__vectorcalloffset__\"`` en :ref:`PyMemberDef `)" #: ../Doc/c-api/type.rst:491 msgid "" -"If it is not possible to switch to a ``MANAGED`` flag (for example, for " -"vectorcall or to support Python older than 3.12), specify the offset in :c:" -"member:`Py_tp_members `. See :ref:`PyMemberDef " -"documentation ` for details." +"If it is not possible to switch to a ``MANAGED`` flag (for example, for vectorcall or to support Python older than 3.12), specify the offset in :c:member:" +"`Py_tp_members `. See :ref:`PyMemberDef documentation ` for details." msgstr "" +"Si no es posible cambiar a una bandera ``MANAGED`` (por ejemplo, para vectorcall o para soportar Python anteriores a 3.12), especifique el desplazamiento " +"en :c:member:`Py_tp_members `. Vea :ref:`documentación PyMemberDef ` para detalles." #: ../Doc/c-api/type.rst:497 -#, fuzzy msgid "The following fields cannot be set at all when creating a heap type:" -msgstr "" -"Los siguientes campos no se pueden configurar en absoluto usando :c:type:" -"`PyType_Spec` y :c:type:`PyType_Slot`:" +msgstr "Los siguientes campos no se pueden configurar en absoluto al crear un tipo heap:" #: ../Doc/c-api/type.rst:499 -#, fuzzy -msgid "" -":c:member:`~PyTypeObject.tp_vectorcall` (use :c:member:`~PyTypeObject." -"tp_new` and/or :c:member:`~PyTypeObject.tp_init`)" -msgstr "" -":c:member:`~PyTypeObject.tp_vectorcall_offset` (vea :ref:`PyMemberDef " -"`)" +msgid ":c:member:`~PyTypeObject.tp_vectorcall` (use :c:member:`~PyTypeObject.tp_new` and/or :c:member:`~PyTypeObject.tp_init`)" +msgstr ":c:member:`~PyTypeObject.tp_vectorcall` (use :c:member:`~PyTypeObject.tp_new` y/o :c:member:`~PyTypeObject.tp_init`)" #: ../Doc/c-api/type.rst:503 msgid "" -"Internal fields: :c:member:`~PyTypeObject.tp_dict`, :c:member:`~PyTypeObject." -"tp_mro`, :c:member:`~PyTypeObject.tp_cache`, :c:member:`~PyTypeObject." +"Internal fields: :c:member:`~PyTypeObject.tp_dict`, :c:member:`~PyTypeObject.tp_mro`, :c:member:`~PyTypeObject.tp_cache`, :c:member:`~PyTypeObject." "tp_subclasses`, and :c:member:`~PyTypeObject.tp_weaklist`." msgstr "" +"Campos internos: :c:member:`~PyTypeObject.tp_dict`, :c:member:`~PyTypeObject.tp_mro`, :c:member:`~PyTypeObject.tp_cache`, :c:member:`~PyTypeObject." +"tp_subclasses`, y :c:member:`~PyTypeObject.tp_weaklist`." #: ../Doc/c-api/type.rst:510 -#, fuzzy msgid "" -"Setting :c:data:`Py_tp_bases` or :c:data:`Py_tp_base` may be problematic on " -"some platforms. To avoid issues, use the *bases* argument of :c:func:" +"Setting :c:data:`Py_tp_bases` or :c:data:`Py_tp_base` may be problematic on some platforms. To avoid issues, use the *bases* argument of :c:func:" "`PyType_FromSpecWithBases` instead." msgstr "" -"Estableciendo :c:data:`Py_tp_bases` o :c:data:`Py_tp_base` puede ser " -"problemático en algunas plataformas. Para evitar problemas, use el argumento " -"*bases* de :py:func:`PyType_FromSpecWithBases` en su lugar." +"Establecer :c:data:`Py_tp_bases` o :c:data:`Py_tp_base` puede ser problemático en algunas plataformas. Para evitar problemas, use el argumento *bases* de :" +"c:func:`PyType_FromSpecWithBases` en su lugar." #: ../Doc/c-api/type.rst:517 msgid "Slots in :c:type:`PyBufferProcs` may be set in the unlimited API." -msgstr "" -"Las ranuras en :c:type:`PyBufferProcs` se pueden configurar en la API " -"ilimitada." +msgstr "Las ranuras en :c:type:`PyBufferProcs` se pueden configurar en la API ilimitada." #: ../Doc/c-api/type.rst:519 -#, fuzzy msgid "" -":c:member:`~PyBufferProcs.bf_getbuffer` and :c:member:`~PyBufferProcs." -"bf_releasebuffer` are now available under the :ref:`limited API `." +":c:member:`~PyBufferProcs.bf_getbuffer` and :c:member:`~PyBufferProcs.bf_releasebuffer` are now available under the :ref:`limited API `." msgstr "" -":c:member:`~PyBufferProcs.bf_getbuffer` and :c:member:`~PyBufferProcs." -"bf_releasebuffer` ahora están disponibles en la API limitada." +":c:member:`~PyBufferProcs.bf_getbuffer` y :c:member:`~PyBufferProcs.bf_releasebuffer` ahora están disponibles bajo la :ref:`API limitada `." #: ../Doc/c-api/type.rst:526 -msgid "" -"The desired value of the slot. In most cases, this is a pointer to a " -"function." -msgstr "" -"El valor deseado de la ranura. En la mayoría de los casos, este es un " -"puntero a una función." +msgid "The desired value of the slot. In most cases, this is a pointer to a function." +msgstr "El valor deseado de la ranura. En la mayoría de los casos, este es un puntero a una función." #: ../Doc/c-api/type.rst:529 msgid "Slots other than ``Py_tp_doc`` may not be ``NULL``." msgstr "Las ranuras que no sean ``Py_tp_doc`` pueden no ser ``NULL``." #: ../Doc/c-api/type.rst:8 -#, fuzzy msgid "object" -msgstr "Objetos tipo" +msgstr "object" #: ../Doc/c-api/type.rst:8 msgid "type" -msgstr "" +msgstr "type" diff --git a/c-api/unicode.po b/c-api/unicode.po index d6e33187a3..d5fb13424d 100644 --- a/c-api/unicode.po +++ b/c-api/unicode.po @@ -6,21 +6,25 @@ # Check https://github.com/python/python-docs-es/blob/3.8/TRANSLATORS to # get the list of volunteers # +# WIP: This file has ~151 translation issues identified by GitHub Actions bot +# and requires extensive work. Marked as [WIP] until resources are available +# for comprehensive translation effort. +# 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: 2022-11-03 03:56-0400\n" -"Last-Translator: Cristián Maureira-Fredes \n" +"PO-Revision-Date: 2026-02-08 19:12-0300\n" +"Last-Translator: Carlos A. Crespo \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.0.1\n" #: ../Doc/c-api/unicode.rst:6 msgid "Unicode Objects and Codecs" @@ -32,34 +36,27 @@ msgstr "Objetos unicode" #: ../Doc/c-api/unicode.rst:14 msgid "" -"Since the implementation of :pep:`393` in Python 3.3, Unicode objects " -"internally use a variety of representations, in order to allow handling the " -"complete range of Unicode characters while staying memory efficient. There " -"are special cases for strings where all code points are below 128, 256, or " -"65536; otherwise, code points must be below 1114112 (which is the full " -"Unicode range)." -msgstr "" -"Desde la implementación del :pep:`393` en Python 3.3, los objetos Unicode " -"utilizan internamente una variedad de representaciones, para permitir el " -"manejo del rango completo de caracteres Unicode mientras se mantiene la " -"eficiencia de memoria. Hay casos especiales para cadenas de caracteres donde " -"todos los puntos de código están por debajo de 128, 256 o 65536; de lo " -"contrario, los puntos de código deben estar por debajo de 1114112 (que es el " -"rango completo de Unicode)." +"Since the implementation of :pep:`393` in Python 3.3, Unicode objects internally use a variety of " +"representations, in order to allow handling the complete range of Unicode characters while staying " +"memory efficient. There are special cases for strings where all code points are below 128, 256, or " +"65536; otherwise, code points must be below 1114112 (which is the full Unicode range)." +msgstr "" +"Desde la implementación del :pep:`393` en Python 3.3, los objetos Unicode utilizan internamente una " +"variedad de representaciones, para permitir el manejo del rango completo de caracteres Unicode " +"mientras se mantiene la eficiencia de memoria. Hay casos especiales para cadenas de caracteres " +"donde todos los puntos de código están por debajo de 128, 256 o 65536; de lo contrario, los puntos " +"de código deben estar por debajo de 1114112 (que es el rango completo de Unicode)." #: ../Doc/c-api/unicode.rst:20 -msgid "" -"UTF-8 representation is created on demand and cached in the Unicode object." -msgstr "" +msgid "UTF-8 representation is created on demand and cached in the Unicode object." +msgstr "La representación UTF-8 se crea bajo demanda y se almacena en caché en el objeto Unicode." #: ../Doc/c-api/unicode.rst:23 -#, fuzzy msgid "" -"The :c:type:`Py_UNICODE` representation has been removed since Python 3.12 " -"with deprecated APIs. See :pep:`623` for more information." +"The :c:type:`Py_UNICODE` representation has been removed since Python 3.12 with deprecated APIs. " +"See :pep:`623` for more information." msgstr "" -"El objeto Unicode \"heredado\" se eliminará en Python 3.12 con APIs " -"obsoletas. Todos los objetos Unicode serán \"canónicos\" desde entonces. " +"La representación :c:type:`Py_UNICODE` ha sido eliminada desde Python 3.12 con APIs obsoletas. " "Consulte :pep:`623` para obtener más información." #: ../Doc/c-api/unicode.rst:29 @@ -67,221 +64,184 @@ msgid "Unicode Type" msgstr "Tipo unicode" #: ../Doc/c-api/unicode.rst:31 -msgid "" -"These are the basic Unicode object types used for the Unicode implementation " -"in Python:" +msgid "These are the basic Unicode object types used for the Unicode implementation in Python:" msgstr "" -"Estos son los tipos básicos de objetos Unicode utilizados para la " -"implementación de Unicode en Python:" +"Estos son los tipos básicos de objetos Unicode utilizados para la implementación de Unicode en " +"Python:" #: ../Doc/c-api/unicode.rst:38 msgid "" -"These types are typedefs for unsigned integer types wide enough to contain " -"characters of 32 bits, 16 bits and 8 bits, respectively. When dealing with " -"single Unicode characters, use :c:type:`Py_UCS4`." +"These types are typedefs for unsigned integer types wide enough to contain characters of 32 bits, " +"16 bits and 8 bits, respectively. When dealing with single Unicode characters, use :c:type:" +"`Py_UCS4`." msgstr "" -"Estos tipos son definiciones de tipo (*typedefs*) para los tipos 'enteros " -"sin signo' (*unsigned int*) lo suficientemente anchos como para contener " -"caracteres de 32 bits, 16 bits y 8 bits, respectivamente. Cuando se trate " -"con caracteres Unicode individuales, use :c:type:`Py_UCS4`." +"Estos tipos son definiciones de tipo (*typedefs*) para los tipos 'enteros sin signo' (*unsigned " +"int*) lo suficientemente anchos como para contener caracteres de 32 bits, 16 bits y 8 bits, " +"respectivamente. Cuando se trate con caracteres Unicode individuales, use :c:type:`Py_UCS4`." #: ../Doc/c-api/unicode.rst:47 -#, fuzzy msgid "" -"This is a typedef of :c:type:`wchar_t`, which is a 16-bit type or 32-bit " -"type depending on the platform." +"This is a typedef of :c:type:`wchar_t`, which is a 16-bit type or 32-bit type depending on the " +"platform." msgstr "" -"Este es una definición de tipo (*typedef*) de :c:type:`wchar_t`, que es un " -"tipo de 16 bits o de 32 bits dependiendo de la plataforma." +"Este es una definición de tipo (*typedef*) de :c:type:`wchar_t`, que es un tipo de 16 bits o de 32 " +"bits dependiendo de la plataforma." #: ../Doc/c-api/unicode.rst:50 msgid "" -"In previous versions, this was a 16-bit type or a 32-bit type depending on " -"whether you selected a \"narrow\" or \"wide\" Unicode version of Python at " -"build time." +"In previous versions, this was a 16-bit type or a 32-bit type depending on whether you selected a " +"\"narrow\" or \"wide\" Unicode version of Python at build time." msgstr "" -"En versiones anteriores, este era un tipo de 16 bits o de 32 bits, " -"dependiendo de si seleccionó una versión Unicode \"estrecha\" o \"amplia\" " -"de Python en el momento de la compilación." +"En versiones anteriores, este era un tipo de 16 bits o de 32 bits, dependiendo de si seleccionó una " +"versión Unicode \"estrecha\" o \"amplia\" de Python en el momento de la compilación." #: ../Doc/c-api/unicode.rst:62 msgid "" -"These subtypes of :c:type:`PyObject` represent a Python Unicode object. In " -"almost all cases, they shouldn't be used directly, since all API functions " -"that deal with Unicode objects take and return :c:type:`PyObject` pointers." +"These subtypes of :c:type:`PyObject` represent a Python Unicode object. In almost all cases, they " +"shouldn't be used directly, since all API functions that deal with Unicode objects take and return :" +"c:type:`PyObject` pointers." msgstr "" -"Estos subtipos de :c:type:`PyObject` representan un objeto Python Unicode. " -"En casi todos los casos, no deben usarse directamente, ya que todas las " -"funciones API que se ocupan de objetos Unicode toman y retornan punteros :c:" -"type:`PyObject`." +"Estos subtipos de :c:type:`PyObject` representan un objeto Python Unicode. En casi todos los casos, " +"no deben usarse directamente, ya que todas las funciones API que se ocupan de objetos Unicode toman " +"y retornan punteros :c:type:`PyObject`." #: ../Doc/c-api/unicode.rst:71 msgid "" -"This instance of :c:type:`PyTypeObject` represents the Python Unicode type. " -"It is exposed to Python code as ``str``." +"This instance of :c:type:`PyTypeObject` represents the Python Unicode type. It is exposed to " +"Python code as ``str``." msgstr "" -"Esta instancia de :c:type:`PyTypeObject` representa el tipo Python Unicode. " -"Está expuesto al código de Python como ``str``." +"Esta instancia de :c:type:`PyTypeObject` representa el tipo Python Unicode. Está expuesto al código " +"de Python como ``str``." #: ../Doc/c-api/unicode.rst:75 -#, fuzzy msgid "" -"The following APIs are C macros and static inlined functions for fast checks " -"and access to internal read-only data of Unicode objects:" +"The following APIs are C macros and static inlined functions for fast checks and access to internal " +"read-only data of Unicode objects:" msgstr "" -"Las siguientes API son realmente macros de C y se pueden utilizar para " -"realizar comprobaciones rápidas y acceder a datos internos de solo lectura " -"de objetos Unicode:" +"Las siguientes API son realmente macros de C y se pueden utilizar para realizar comprobaciones " +"rápidas y acceder a datos internos de solo lectura de objetos Unicode:" #: ../Doc/c-api/unicode.rst:80 -#, fuzzy msgid "" -"Return true if the object *obj* is a Unicode object or an instance of a " -"Unicode subtype. This function always succeeds." +"Return true if the object *obj* is a Unicode object or an instance of a Unicode subtype. This " +"function always succeeds." msgstr "" -"Retorna verdadero si el objeto *o* es un objeto Unicode o una instancia de " -"un subtipo Unicode." +"Retorna verdadero si el objeto *obj* es un objeto Unicode o una instancia de un subtipo Unicode. " +"Esta función siempre tiene éxito." #: ../Doc/c-api/unicode.rst:86 -#, fuzzy msgid "" -"Return true if the object *obj* is a Unicode object, but not an instance of " -"a subtype. This function always succeeds." +"Return true if the object *obj* is a Unicode object, but not an instance of a subtype. This " +"function always succeeds." msgstr "" -"Retorna verdadero (*True*) si el objeto *o* es un objeto Unicode, pero no " -"una instancia de un subtipo." +"Retorna verdadero si el objeto *obj* es un objeto Unicode, pero no una instancia de un subtipo. " +"Esta función siempre tiene éxito." #: ../Doc/c-api/unicode.rst:92 msgid "Returns ``0``. This API is kept only for backward compatibility." -msgstr "" +msgstr "Retorna ``0``. Esta API se mantiene solo por compatibilidad con versiones anteriores." #: ../Doc/c-api/unicode.rst:96 -#, fuzzy msgid "This API does nothing since Python 3.12." -msgstr "Esta función no lanza excepciones." +msgstr "Esta API no hace nada desde Python 3.12." #: ../Doc/c-api/unicode.rst:102 -#, fuzzy msgid "" -"Return the length of the Unicode string, in code points. *unicode* has to " -"be a Unicode object in the \"canonical\" representation (not checked)." +"Return the length of the Unicode string, in code points. *unicode* has to be a Unicode object in " +"the \"canonical\" representation (not checked)." msgstr "" -"Retorna la longitud de la cadena de caracteres Unicode, en puntos de código. " -"*o* tiene que ser un objeto Unicode en la representación \"canónica\" (no " -"marcada)." +"Retorna la longitud de la cadena de caracteres Unicode, en puntos de código. *unicode* tiene que " +"ser un objeto Unicode en la representación \"canónica\" (no marcada)." #: ../Doc/c-api/unicode.rst:112 -#, fuzzy msgid "" -"Return a pointer to the canonical representation cast to UCS1, UCS2 or UCS4 " -"integer types for direct character access. No checks are performed if the " -"canonical representation has the correct character size; use :c:func:" -"`PyUnicode_KIND` to select the right function." +"Return a pointer to the canonical representation cast to UCS1, UCS2 or UCS4 integer types for " +"direct character access. No checks are performed if the canonical representation has the correct " +"character size; use :c:func:`PyUnicode_KIND` to select the right function." msgstr "" -"Retorna un puntero a la representación canónica emitida a los tipos enteros " -"UCS1, UCS2 o UCS4 para el acceso directo a los caracteres. No se realizan " -"verificaciones si la representación canónica tiene el tamaño de carácter " -"correcto; use :c:func:`PyUnicode_KIND` para seleccionar el macro correcto. " -"Asegúrese de que se haya llamado a :c:func:`PyUnicode_READY` antes de " -"acceder a esto." +"Retorna un puntero a la representación canónica emitida a los tipos enteros UCS1, UCS2 o UCS4 para " +"el acceso directo a los caracteres. No se realizan verificaciones si la representación canónica " +"tiene el tamaño de carácter correcto; use :c:func:`PyUnicode_KIND` para seleccionar la función " +"correcta." #: ../Doc/c-api/unicode.rst:124 msgid "Return values of the :c:func:`PyUnicode_KIND` macro." msgstr "Retorna los valores de la macro :c:func:`PyUnicode_KIND`." #: ../Doc/c-api/unicode.rst:128 -#, fuzzy msgid "``PyUnicode_WCHAR_KIND`` has been removed." -msgstr "``PyUnicode_WCHAR_KIND`` está deprecada." +msgstr "``PyUnicode_WCHAR_KIND`` ha sido eliminada." #: ../Doc/c-api/unicode.rst:134 -#, fuzzy msgid "" -"Return one of the PyUnicode kind constants (see above) that indicate how " -"many bytes per character this Unicode object uses to store its data. " -"*unicode* has to be a Unicode object in the \"canonical\" representation " -"(not checked)." +"Return one of the PyUnicode kind constants (see above) that indicate how many bytes per character " +"this Unicode object uses to store its data. *unicode* has to be a Unicode object in the " +"\"canonical\" representation (not checked)." msgstr "" -"Retorna una de las constantes de tipo ``PyUnicode`` (ver arriba) que indican " -"cuántos bytes por carácter utiliza este objeto Unicode para almacenar sus " -"datos. *o* tiene que ser un objeto Unicode en la representación \"canónica\" " -"(no verificada)." +"Retorna una de las constantes de tipo ``PyUnicode`` (ver arriba) que indican cuántos bytes por " +"carácter utiliza este objeto Unicode para almacenar sus datos. *unicode* tiene que ser un objeto " +"Unicode en la representación \"canónica\" (no verificada)." #: ../Doc/c-api/unicode.rst:143 -#, fuzzy msgid "" -"Return a void pointer to the raw Unicode buffer. *unicode* has to be a " -"Unicode object in the \"canonical\" representation (not checked)." +"Return a void pointer to the raw Unicode buffer. *unicode* has to be a Unicode object in the " +"\"canonical\" representation (not checked)." msgstr "" -"Retorna un puntero vacío al búfer Unicode sin formato. *o* tiene que ser un " -"objeto Unicode en la representación \"canónica\" (no marcada)." +"Retorna un puntero vacío al búfer Unicode sin formato. *unicode* tiene que ser un objeto Unicode en " +"la representación \"canónica\" (no marcada)." #: ../Doc/c-api/unicode.rst:152 -#, fuzzy -msgid "" -"Write into a canonical representation *data* (as obtained with :c:func:" -"`PyUnicode_DATA`). This function performs no sanity checks, and is intended " -"for usage in loops. The caller should cache the *kind* value and *data* " -"pointer as obtained from other calls. *index* is the index in the string " -"(starts at 0) and *value* is the new code point value which should be " -"written to that location." -msgstr "" -"Escribe en una representación canónica *data* (como se obtiene con :c:func:" -"`PyUnicode_DATA`). Esta macro no realiza ninguna comprobación de cordura y " -"está diseñado para su uso en bucles. La persona que llama debe almacenar en " -"caché el valor *kind* y el puntero *data* como se obtiene de otras llamadas " -"de la macro. *index* es el índice en la cadena de caracteres (comienza en 0) " -"y *value* es el nuevo valor del punto de código que debe escribirse en esa " -"ubicación." +msgid "" +"Write into a canonical representation *data* (as obtained with :c:func:`PyUnicode_DATA`). This " +"function performs no sanity checks, and is intended for usage in loops. The caller should cache " +"the *kind* value and *data* pointer as obtained from other calls. *index* is the index in the " +"string (starts at 0) and *value* is the new code point value which should be written to that " +"location." +msgstr "" +"Escribe en una representación canónica *data* (como se obtiene con :c:func:`PyUnicode_DATA`). Esta " +"función no realiza ninguna comprobación de cordura y está destinada a ser utilizada en bucles. El " +"llamador debe almacenar en caché el valor *kind* y el puntero *data* como se obtienen de otras " +"llamadas. *index* es el índice en la cadena (comienza en 0) y *value* es el nuevo valor del punto " +"de código que debe escribirse en esa ubicación." #: ../Doc/c-api/unicode.rst:165 msgid "" -"Read a code point from a canonical representation *data* (as obtained with :" -"c:func:`PyUnicode_DATA`). No checks or ready calls are performed." +"Read a code point from a canonical representation *data* (as obtained with :c:func:" +"`PyUnicode_DATA`). No checks or ready calls are performed." msgstr "" -"Lee un punto de código de una representación canónica *data* (obtenido con :" -"c:func:`PyUnicode_DATA`). No se realizan verificaciones ni llamadas " -"preparadas." +"Lee un punto de código de una representación canónica *data* (obtenido con :c:func:" +"`PyUnicode_DATA`). No se realizan verificaciones ni llamadas preparadas." #: ../Doc/c-api/unicode.rst:173 -#, fuzzy msgid "" -"Read a character from a Unicode object *unicode*, which must be in the " -"\"canonical\" representation. This is less efficient than :c:func:" -"`PyUnicode_READ` if you do multiple consecutive reads." +"Read a character from a Unicode object *unicode*, which must be in the \"canonical\" " +"representation. This is less efficient than :c:func:`PyUnicode_READ` if you do multiple " +"consecutive reads." msgstr "" -"Lee un carácter de un objeto Unicode *o*, que debe estar en la " -"representación \"canónica\". Esto es menos eficiente que :c:func:" -"`PyUnicode_READ` si realiza varias lecturas consecutivas." +"Lee un carácter de un objeto Unicode *unicode*, que debe estar en la representación \"canónica\". " +"Esto es menos eficiente que :c:func:`PyUnicode_READ` si realiza varias lecturas consecutivas." #: ../Doc/c-api/unicode.rst:182 -#, fuzzy msgid "" -"Return the maximum code point that is suitable for creating another string " -"based on *unicode*, which must be in the \"canonical\" representation. This " -"is always an approximation but more efficient than iterating over the string." +"Return the maximum code point that is suitable for creating another string based on *unicode*, " +"which must be in the \"canonical\" representation. This is always an approximation but more " +"efficient than iterating over the string." msgstr "" -"Retorna el punto de código máximo adecuado para crear otra cadena de " -"caracteres basada en *o*, que debe estar en la representación \"canónica\". " -"Esto siempre es una aproximación pero más eficiente que iterar sobre la " -"cadena." +"Retorna el punto de código máximo adecuado para crear otra cadena basada en *unicode*, que debe " +"estar en la representación \"canónica\". Esto siempre es una aproximación pero más eficiente que " +"iterar sobre la cadena." #: ../Doc/c-api/unicode.rst:191 msgid "" -"Return ``1`` if the string is a valid identifier according to the language " -"definition, section :ref:`identifiers`. Return ``0`` otherwise." +"Return ``1`` if the string is a valid identifier according to the language definition, section :ref:" +"`identifiers`. Return ``0`` otherwise." msgstr "" -"Retorna ``1`` si la cadena de caracteres es un identificador válido de " -"acuerdo con la definición del lenguaje, sección :ref:`identifiers`. Retorna " -"``0`` de lo contrario." +"Retorna ``1`` si la cadena de caracteres es un identificador válido de acuerdo con la definición " +"del lenguaje, sección :ref:`identifiers`. Retorna ``0`` de lo contrario." #: ../Doc/c-api/unicode.rst:194 -msgid "" -"The function does not call :c:func:`Py_FatalError` anymore if the string is " -"not ready." -msgstr "" -"La función ya no llama a :c:func:`Py_FatalError` si la cadena de caracteres " -"no está lista." +msgid "The function does not call :c:func:`Py_FatalError` anymore if the string is not ready." +msgstr "La función ya no llama a :c:func:`Py_FatalError` si la cadena de caracteres no está lista." #: ../Doc/c-api/unicode.rst:200 msgid "Unicode Character Properties" @@ -289,96 +249,71 @@ msgstr "Propiedades de caracteres Unicode" #: ../Doc/c-api/unicode.rst:202 msgid "" -"Unicode provides many different character properties. The most often needed " -"ones are available through these macros which are mapped to C functions " -"depending on the Python configuration." +"Unicode provides many different character properties. The most often needed ones are available " +"through these macros which are mapped to C functions depending on the Python configuration." msgstr "" -"Unicode proporciona muchas propiedades de caracteres diferentes. Los que se " -"necesitan con mayor frecuencia están disponibles a través de estas macros " -"que se asignan a las funciones de C según la configuración de Python." +"Unicode proporciona muchas propiedades de caracteres diferentes. Los que se necesitan con mayor " +"frecuencia están disponibles a través de estas macros que se asignan a las funciones de C según la " +"configuración de Python." #: ../Doc/c-api/unicode.rst:209 -msgid "" -"Return ``1`` or ``0`` depending on whether *ch* is a whitespace character." -msgstr "" -"Retorna ``1`` o ``0`` dependiendo de si *ch* es un carácter de espacio en " -"blanco." +msgid "Return ``1`` or ``0`` depending on whether *ch* is a whitespace character." +msgstr "Retorna ``1`` o ``0`` dependiendo de si *ch* es un carácter de espacio en blanco." #: ../Doc/c-api/unicode.rst:214 -msgid "" -"Return ``1`` or ``0`` depending on whether *ch* is a lowercase character." -msgstr "" -"Retorna ``1`` o ``0`` dependiendo de si *ch* es un carácter en minúscula." +msgid "Return ``1`` or ``0`` depending on whether *ch* is a lowercase character." +msgstr "Retorna ``1`` o ``0`` dependiendo de si *ch* es un carácter en minúscula." #: ../Doc/c-api/unicode.rst:219 -msgid "" -"Return ``1`` or ``0`` depending on whether *ch* is an uppercase character." -msgstr "" -"Retorna ``1`` o ``0`` dependiendo de si *ch* es un carácter en mayúscula." +msgid "Return ``1`` or ``0`` depending on whether *ch* is an uppercase character." +msgstr "Retorna ``1`` o ``0`` dependiendo de si *ch* es un carácter en mayúscula." #: ../Doc/c-api/unicode.rst:224 -msgid "" -"Return ``1`` or ``0`` depending on whether *ch* is a titlecase character." -msgstr "" -"Retorna ``1`` o ``0`` dependiendo de si *ch* es un carácter en caso de " -"título (*titlecase*)." +msgid "Return ``1`` or ``0`` depending on whether *ch* is a titlecase character." +msgstr "Retorna ``1`` o ``0`` dependiendo de si *ch* es un carácter en caso de título (*titlecase*)." #: ../Doc/c-api/unicode.rst:229 -msgid "" -"Return ``1`` or ``0`` depending on whether *ch* is a linebreak character." -msgstr "" -"Retorna ``1`` o ``0`` dependiendo de si *ch* es un carácter de salto de " -"línea." +msgid "Return ``1`` or ``0`` depending on whether *ch* is a linebreak character." +msgstr "Retorna ``1`` o ``0`` dependiendo de si *ch* es un carácter de salto de línea." #: ../Doc/c-api/unicode.rst:234 msgid "Return ``1`` or ``0`` depending on whether *ch* is a decimal character." -msgstr "" -"Retorna ``1`` o ``0`` dependiendo de si *ch* es un carácter decimal o no." +msgstr "Retorna ``1`` o ``0`` dependiendo de si *ch* es un carácter decimal o no." #: ../Doc/c-api/unicode.rst:239 msgid "Return ``1`` or ``0`` depending on whether *ch* is a digit character." -msgstr "" -"Retorna ``1`` o ``0`` dependiendo de si *ch* es un carácter de dígitos." +msgstr "Retorna ``1`` o ``0`` dependiendo de si *ch* es un carácter de dígitos." #: ../Doc/c-api/unicode.rst:244 msgid "Return ``1`` or ``0`` depending on whether *ch* is a numeric character." msgstr "Retorna ``1`` o ``0`` dependiendo de si *ch* es un carácter numérico." #: ../Doc/c-api/unicode.rst:249 -msgid "" -"Return ``1`` or ``0`` depending on whether *ch* is an alphabetic character." -msgstr "" -"Retorna ``1`` o ``0`` dependiendo de si *ch* es un carácter alfabético." +msgid "Return ``1`` or ``0`` depending on whether *ch* is an alphabetic character." +msgstr "Retorna ``1`` o ``0`` dependiendo de si *ch* es un carácter alfabético." #: ../Doc/c-api/unicode.rst:254 -msgid "" -"Return ``1`` or ``0`` depending on whether *ch* is an alphanumeric character." -msgstr "" -"Retorna ``1`` o ``0`` dependiendo de si *ch* es un carácter alfanumérico." +msgid "Return ``1`` or ``0`` depending on whether *ch* is an alphanumeric character." +msgstr "Retorna ``1`` o ``0`` dependiendo de si *ch* es un carácter alfanumérico." #: ../Doc/c-api/unicode.rst:259 msgid "" -"Return ``1`` or ``0`` depending on whether *ch* is a printable character. " -"Nonprintable characters are those characters defined in the Unicode " -"character database as \"Other\" or \"Separator\", excepting the ASCII space " -"(0x20) which is considered printable. (Note that printable characters in " -"this context are those which should not be escaped when :func:`repr` is " -"invoked on a string. It has no bearing on the handling of strings written " -"to :data:`sys.stdout` or :data:`sys.stderr`.)" -msgstr "" -"Retorna ``1`` o ``0`` dependiendo de si *ch* es un carácter imprimible. Los " -"caracteres no imprimibles son aquellos definidos en la base de datos de " -"caracteres Unicode como \"Otro\" o \"Separador\", excepto el espacio ASCII " -"(0x20) que se considera imprimible. (Tenga en cuenta que los caracteres " -"imprimibles en este contexto son aquellos a los que no se debe escapar " -"cuando :func:`repr` se invoca en una cadena de caracteres. No tiene relación " -"con el manejo de cadenas de caracteres escritas en :data:`sys.stdout` o :" -"data:`sys.stderr`.)" +"Return ``1`` or ``0`` depending on whether *ch* is a printable character. Nonprintable characters " +"are those characters defined in the Unicode character database as \"Other\" or \"Separator\", " +"excepting the ASCII space (0x20) which is considered printable. (Note that printable characters in " +"this context are those which should not be escaped when :func:`repr` is invoked on a string. It has " +"no bearing on the handling of strings written to :data:`sys.stdout` or :data:`sys.stderr`.)" +msgstr "" +"Retorna ``1`` o ``0`` dependiendo de si *ch* es un carácter imprimible. Los caracteres no " +"imprimibles son aquellos definidos en la base de datos de caracteres Unicode como \"Otro\" o " +"\"Separador\", excepto el espacio ASCII (0x20) que se considera imprimible. (Tenga en cuenta que " +"los caracteres imprimibles en este contexto son aquellos a los que no se debe escapar cuando :func:" +"`repr` se invoca en una cadena de caracteres. No tiene relación con el manejo de cadenas de " +"caracteres escritas en :data:`sys.stdout` o :data:`sys.stderr`.)" #: ../Doc/c-api/unicode.rst:268 msgid "These APIs can be used for fast direct character conversions:" -msgstr "" -"Estas API se pueden usar para conversiones caracteres rápidas y directos:" +msgstr "Estas API se pueden usar para conversiones caracteres rápidas y directos:" #: ../Doc/c-api/unicode.rst:273 msgid "Return the character *ch* converted to lower case." @@ -393,31 +328,28 @@ msgid "Return the character *ch* converted to title case." msgstr "Retorna el carácter *ch* convertido a formato de título (*titlecase*)." #: ../Doc/c-api/unicode.rst:288 -#, fuzzy msgid "" -"Return the character *ch* converted to a decimal positive integer. Return " -"``-1`` if this is not possible. This function does not raise exceptions." +"Return the character *ch* converted to a decimal positive integer. Return ``-1`` if this is not " +"possible. This function does not raise exceptions." msgstr "" -"Retorna el carácter *ch* convertido a un entero positivo decimal. Retorna " -"``-1`` si esto no es posible. Esta macro no lanza excepciones." +"Retorna el carácter *ch* convertido a un entero positivo decimal. Retorna ``-1`` si esto no es " +"posible. Esta función no lanza excepciones." #: ../Doc/c-api/unicode.rst:294 -#, fuzzy msgid "" -"Return the character *ch* converted to a single digit integer. Return ``-1`` " -"if this is not possible. This function does not raise exceptions." +"Return the character *ch* converted to a single digit integer. Return ``-1`` if this is not " +"possible. This function does not raise exceptions." msgstr "" -"Retorna el carácter *ch* convertido a un entero de un solo dígito. Retorna " -"``-1`` si esto no es posible. Esta macro no lanza excepciones." +"Retorna el carácter *ch* convertido a un entero de un solo dígito. Retorna ``-1`` si esto no es " +"posible. Esta función no lanza excepciones." #: ../Doc/c-api/unicode.rst:300 -#, fuzzy msgid "" -"Return the character *ch* converted to a double. Return ``-1.0`` if this is " -"not possible. This function does not raise exceptions." +"Return the character *ch* converted to a double. Return ``-1.0`` if this is not possible. This " +"function does not raise exceptions." msgstr "" -"Retorna el carácter *ch* convertido a doble. retorne ``-1.0`` si esto no es " -"posible. Esta macro no lanza excepciones." +"Retorna el carácter *ch* convertido a doble. Retorna ``-1.0`` si esto no es posible. Esta función " +"no lanza excepciones." #: ../Doc/c-api/unicode.rst:304 msgid "These APIs can be used to work with surrogates:" @@ -436,273 +368,255 @@ msgid "Check if *ch* is a low surrogate (``0xDC00 <= ch <= 0xDFFF``)." msgstr "Comprueba si *ch* es un sustituto bajo (``0xD800 <= ch <= 0xDFFF``)." #: ../Doc/c-api/unicode.rst:320 -#, fuzzy msgid "" -"Join two surrogate code points and return a single :c:type:`Py_UCS4` value. " -"*high* and *low* are respectively the leading and trailing surrogates in a " -"surrogate pair. *high* must be in the range [0xD800; 0xDBFF] and *low* must " -"be in the range [0xDC00; 0xDFFF]." +"Join two surrogate code points and return a single :c:type:`Py_UCS4` value. *high* and *low* are " +"respectively the leading and trailing surrogates in a surrogate pair. *high* must be in the range " +"[0xD800; 0xDBFF] and *low* must be in the range [0xDC00; 0xDFFF]." msgstr "" -"Une dos caracteres sustitutos y retorna un solo valor Py_UCS4. *high* y " -"*low* son respectivamente los sustitutos iniciales y finales en un par " -"sustituto." +"Une dos puntos de código subrogados y retorna un solo valor :c:type:`Py_UCS4`. *high* y *low* son " +"respectivamente los subrogados iniciales y finales en un par subrogado. *high* debe estar en el " +"rango [0xD800; 0xDBFF] y *low* debe estar en el rango [0xDC00; 0xDFFF]." #: ../Doc/c-api/unicode.rst:327 msgid "Creating and accessing Unicode strings" msgstr "Creando y accediendo a cadenas de caracteres Unicode" #: ../Doc/c-api/unicode.rst:329 -msgid "" -"To create Unicode objects and access their basic sequence properties, use " -"these APIs:" -msgstr "" -"Para crear objetos Unicode y acceder a sus propiedades de secuencia básicas, " -"use estas API:" +msgid "To create Unicode objects and access their basic sequence properties, use these APIs:" +msgstr "Para crear objetos Unicode y acceder a sus propiedades de secuencia básicas, use estas API:" #: ../Doc/c-api/unicode.rst:334 msgid "" -"Create a new Unicode object. *maxchar* should be the true maximum code " -"point to be placed in the string. As an approximation, it can be rounded up " -"to the nearest value in the sequence 127, 255, 65535, 1114111." +"Create a new Unicode object. *maxchar* should be the true maximum code point to be placed in the " +"string. As an approximation, it can be rounded up to the nearest value in the sequence 127, 255, " +"65535, 1114111." msgstr "" -"Crea un nuevo objeto Unicode. *maxchar* debe ser el punto de código máximo " -"que se colocará en la cadena de caracteres. Como una aproximación, se puede " -"redondear al valor más cercano en la secuencia 127, 255, 65535, 1114111." +"Crea un nuevo objeto Unicode. *maxchar* debe ser el punto de código máximo que se colocará en la " +"cadena de caracteres. Como una aproximación, se puede redondear al valor más cercano en la " +"secuencia 127, 255, 65535, 1114111." #: ../Doc/c-api/unicode.rst:338 msgid "" -"This is the recommended way to allocate a new Unicode object. Objects " -"created using this function are not resizable." +"This is the recommended way to allocate a new Unicode object. Objects created using this function " +"are not resizable." msgstr "" -"Esta es la forma recomendada de asignar un nuevo objeto Unicode. Los objetos " -"creados con esta función no se pueden redimensionar." +"Esta es la forma recomendada de asignar un nuevo objeto Unicode. Los objetos creados con esta " +"función no se pueden redimensionar." #: ../Doc/c-api/unicode.rst:341 msgid "On error, set an exception and return ``NULL``." -msgstr "" +msgstr "En caso de error, establecer una excepción y devolver ``NULL``." #: ../Doc/c-api/unicode.rst:349 msgid "" -"Create a new Unicode object with the given *kind* (possible values are :c:" -"macro:`PyUnicode_1BYTE_KIND` etc., as returned by :c:func:" -"`PyUnicode_KIND`). The *buffer* must point to an array of *size* units of " -"1, 2 or 4 bytes per character, as given by the kind." +"Create a new Unicode object with the given *kind* (possible values are :c:macro:" +"`PyUnicode_1BYTE_KIND` etc., as returned by :c:func:`PyUnicode_KIND`). The *buffer* must point to " +"an array of *size* units of 1, 2 or 4 bytes per character, as given by the kind." msgstr "" -"Crea un nuevo objeto Unicode con el tipo *kind* dado (los valores posibles " -"son :c:macro:`PyUnicode_1BYTE_KIND` etc., según lo retornado por :c:func:" -"`PyUnicode_KIND`). El *búfer* debe apuntar a un vector (*array*) de *tamaño* " -"unidades de 1, 2 o 4 bytes por carácter, según el tipo." +"Crea un nuevo objeto Unicode con el tipo *kind* dado (los valores posibles son :c:macro:" +"`PyUnicode_1BYTE_KIND` etc., según lo retornado por :c:func:`PyUnicode_KIND`). El *búfer* debe " +"apuntar a un vector (*array*) de *tamaño* unidades de 1, 2 o 4 bytes por carácter, según el tipo." #: ../Doc/c-api/unicode.rst:354 msgid "" -"If necessary, the input *buffer* is copied and transformed into the " -"canonical representation. For example, if the *buffer* is a UCS4 string (:c:" -"macro:`PyUnicode_4BYTE_KIND`) and it consists only of codepoints in the UCS1 " -"range, it will be transformed into UCS1 (:c:macro:`PyUnicode_1BYTE_KIND`)." +"If necessary, the input *buffer* is copied and transformed into the canonical representation. For " +"example, if the *buffer* is a UCS4 string (:c:macro:`PyUnicode_4BYTE_KIND`) and it consists only of " +"codepoints in the UCS1 range, it will be transformed into UCS1 (:c:macro:`PyUnicode_1BYTE_KIND`)." msgstr "" -"Si es necesario, la entrada *buffer* se copia y se transforma en la " -"representación canónica. Por ejemplo, si el *buffer* es una cadena de " -"caracteres UCS4 (:c:macro:`PyUnicode_4BYTE_KIND`) y consta solo de puntos de " -"código en el rango UCS1, se transformará en UCS1 (:c:macro:" +"Si es necesario, la entrada *buffer* se copia y se transforma en la representación canónica. Por " +"ejemplo, si el *buffer* es una cadena de caracteres UCS4 (:c:macro:`PyUnicode_4BYTE_KIND`) y consta " +"solo de puntos de código en el rango UCS1, se transformará en UCS1 (:c:macro:" "`PyUnicode_1BYTE_KIND`)." #: ../Doc/c-api/unicode.rst:365 -#, fuzzy msgid "" -"Create a Unicode object from the char buffer *str*. The bytes will be " -"interpreted as being UTF-8 encoded. The buffer is copied into the new " -"object. The return value might be a shared object, i.e. modification of the " -"data is not allowed." +"Create a Unicode object from the char buffer *str*. The bytes will be interpreted as being UTF-8 " +"encoded. The buffer is copied into the new object. The return value might be a shared object, i.e. " +"modification of the data is not allowed." msgstr "" -"Crea un objeto Unicode desde el búfer de caracteres *u*. Los bytes se " -"interpretarán como codificados en UTF-8. El búfer se copia en el nuevo " -"objeto. Si el búfer no es ``NULL``, el valor de retorno podría ser un objeto " -"compartido, es decir, no se permite la modificación de los datos." +"Crea un objeto Unicode desde el búfer de caracteres *str*. Los bytes se interpretarán como " +"codificados en UTF-8. El búfer se copia en el nuevo objeto. El valor de retorno podría ser un " +"objeto compartido, es decir, no se permite la modificación de los datos." #: ../Doc/c-api/unicode.rst:371 -#, fuzzy msgid "This function raises :exc:`SystemError` when:" -msgstr "Esta función no lanza excepciones." +msgstr "Esta función lanza :exc:`SystemError` cuando:" #: ../Doc/c-api/unicode.rst:373 msgid "*size* < 0," -msgstr "" +msgstr "*size* < 0," #: ../Doc/c-api/unicode.rst:374 msgid "*str* is ``NULL`` and *size* > 0" -msgstr "" +msgstr "*str* es ``NULL`` y *size* > 0" #: ../Doc/c-api/unicode.rst:376 msgid "*str* == ``NULL`` with *size* > 0 is not allowed anymore." -msgstr "" +msgstr "*str* == ``NULL`` con *size* > 0 ya no está permitido." #: ../Doc/c-api/unicode.rst:382 -#, fuzzy -msgid "" -"Create a Unicode object from a UTF-8 encoded null-terminated char buffer " -"*str*." +msgid "Create a Unicode object from a UTF-8 encoded null-terminated char buffer *str*." msgstr "" -"Crea un objeto Unicode a partir de un búfer *u* de caracteres terminado en " -"nulo y codificado en UTF-8." +"Crea un objeto Unicode a partir de un búfer *str* de caracteres terminado en nulo y codificado en " +"UTF-8." #: ../Doc/c-api/unicode.rst:388 -#, fuzzy -msgid "" -"Take a C :c:func:`printf`\\ -style *format* string and a variable number of " -"arguments, calculate the size of the resulting Python Unicode string and " -"return a string with the values formatted into it. The variable arguments " -"must be C types and must correspond exactly to the format characters in the " -"*format* ASCII-encoded string." -msgstr "" -"Toma una cadena de caracteres *format* con el estilo de :c:func:`printf` en " -"C y un número variable de argumentos, calcula el tamaño de la cadena Python " -"Unicode resultante y retorna una cadena de caracteres con los valores " -"formateados. Los argumentos variables deben ser tipos de C y deben " -"corresponder exactamente a los caracteres de formato en la cadena de " -"caracteres *format* codificada en ASCII. Se permiten los siguientes " -"caracteres de formato:" +msgid "" +"Take a C :c:func:`printf`\\ -style *format* string and a variable number of arguments, calculate " +"the size of the resulting Python Unicode string and return a string with the values formatted into " +"it. The variable arguments must be C types and must correspond exactly to the format characters in " +"the *format* ASCII-encoded string." +msgstr "" +"Toma una cadena de caracteres *format* con el estilo de :c:func:`printf` en C y un número variable " +"de argumentos, calcula el tamaño de la cadena Python Unicode resultante y retorna una cadena de " +"caracteres con los valores formateados. Los argumentos variables deben ser tipos de C y deben " +"corresponder exactamente a los caracteres de formato en la cadena de caracteres *format* codificada " +"en ASCII." #: ../Doc/c-api/unicode.rst:394 msgid "" -"A conversion specifier contains two or more characters and has the following " -"components, which must occur in this order:" +"A conversion specifier contains two or more characters and has the following components, which must " +"occur in this order:" msgstr "" +"Un especificador de conversión contiene dos o más caracteres y tiene los siguientes componentes, " +"que deben aparecer en este orden:" #: ../Doc/c-api/unicode.rst:397 msgid "The ``'%'`` character, which marks the start of the specifier." -msgstr "" +msgstr "El carácter ``'%'``, que marca el inicio del especificador." #: ../Doc/c-api/unicode.rst:399 -msgid "" -"Conversion flags (optional), which affect the result of some conversion " -"types." +msgid "Conversion flags (optional), which affect the result of some conversion types." msgstr "" +"Indicadores de conversión (opcional), que afectan el resultado de algunos tipos de conversión." #: ../Doc/c-api/unicode.rst:402 msgid "" -"Minimum field width (optional). If specified as an ``'*'`` (asterisk), the " -"actual width is given in the next argument, which must be of type :c:expr:" -"`int`, and the object to convert comes after the minimum field width and " -"optional precision." +"Minimum field width (optional). If specified as an ``'*'`` (asterisk), the actual width is given in " +"the next argument, which must be of type :c:expr:`int`, and the object to convert comes after the " +"minimum field width and optional precision." msgstr "" +"Ancho de campo mínimo (opcional). Si se especifica como un ``'*'`` (asterisco), el ancho real se " +"proporciona en el siguiente argumento, que debe ser de tipo :c:expr:`int`, y el objeto a convertir " +"viene después del ancho de campo mínimo y la precisión opcional." #: ../Doc/c-api/unicode.rst:407 msgid "" -"Precision (optional), given as a ``'.'`` (dot) followed by the precision. If " -"specified as ``'*'`` (an asterisk), the actual precision is given in the " -"next argument, which must be of type :c:expr:`int`, and the value to convert " -"comes after the precision." +"Precision (optional), given as a ``'.'`` (dot) followed by the precision. If specified as ``'*'`` " +"(an asterisk), the actual precision is given in the next argument, which must be of type :c:expr:" +"`int`, and the value to convert comes after the precision." msgstr "" +"Precisión (opcional), dada como un ``'.'`` (punto) seguido de la precisión. Si se especifica como " +"``'*'`` (un asterisco), la precisión real se proporciona en el siguiente argumento, que debe ser de " +"tipo :c:expr:`int`, y el valor a convertir viene después de la precisión." #: ../Doc/c-api/unicode.rst:412 msgid "Length modifier (optional)." -msgstr "" +msgstr "Modificador de longitud (opcional)." #: ../Doc/c-api/unicode.rst:414 msgid "Conversion type." -msgstr "" +msgstr "Tipo de conversión." #: ../Doc/c-api/unicode.rst:416 msgid "The conversion flag characters are:" -msgstr "" +msgstr "Los caracteres de los indicadores de conversión son:" #: ../Doc/c-api/unicode.rst:421 msgid "Flag" -msgstr "" +msgstr "Indicador" #: ../Doc/c-api/unicode.rst:421 msgid "Meaning" -msgstr "" +msgstr "Significado" #: ../Doc/c-api/unicode.rst:423 msgid "``0``" -msgstr "" +msgstr "``0``" #: ../Doc/c-api/unicode.rst:423 msgid "The conversion will be zero padded for numeric values." -msgstr "" +msgstr "La conversión se rellenará con ceros para valores numéricos." #: ../Doc/c-api/unicode.rst:425 msgid "``-``" -msgstr "" +msgstr "``-``" #: ../Doc/c-api/unicode.rst:425 -msgid "" -"The converted value is left adjusted (overrides the ``0`` flag if both are " -"given)." -msgstr "" +msgid "The converted value is left adjusted (overrides the ``0`` flag if both are given)." +msgstr "El valor convertido se ajusta a la izquierda (anula el indicador ``0`` si ambos están dados)." #: ../Doc/c-api/unicode.rst:429 msgid "" -"The length modifiers for following integer conversions (``d``, ``i``, ``o``, " -"``u``, ``x``, or ``X``) specify the type of the argument (:c:expr:`int` by " -"default):" +"The length modifiers for following integer conversions (``d``, ``i``, ``o``, ``u``, ``x``, or " +"``X``) specify the type of the argument (:c:expr:`int` by default):" msgstr "" +"Los modificadores de longitud para las siguientes conversiones de enteros (``d``, ``i``, ``o``, " +"``u``, ``x`` o ``X``) especifican el tipo del argumento (:c:expr:`int` por defecto):" #: ../Doc/c-api/unicode.rst:436 msgid "Modifier" -msgstr "" +msgstr "Modificador" #: ../Doc/c-api/unicode.rst:436 -#, fuzzy msgid "Types" -msgstr "Tipo" +msgstr "Tipos" #: ../Doc/c-api/unicode.rst:438 msgid "``l``" -msgstr "" +msgstr "``l``" #: ../Doc/c-api/unicode.rst:438 msgid ":c:expr:`long` or :c:expr:`unsigned long`" -msgstr "" +msgstr ":c:expr:`long` o :c:expr:`unsigned long`" #: ../Doc/c-api/unicode.rst:440 msgid "``ll``" -msgstr "" +msgstr "``ll``" #: ../Doc/c-api/unicode.rst:440 msgid ":c:expr:`long long` or :c:expr:`unsigned long long`" -msgstr "" +msgstr ":c:expr:`long long` o :c:expr:`unsigned long long`" #: ../Doc/c-api/unicode.rst:442 msgid "``j``" -msgstr "" +msgstr "``j``" #: ../Doc/c-api/unicode.rst:442 msgid ":c:type:`intmax_t` or :c:type:`uintmax_t`" -msgstr "" +msgstr ":c:type:`intmax_t` o :c:type:`uintmax_t`" #: ../Doc/c-api/unicode.rst:444 msgid "``z``" -msgstr "" +msgstr "``z``" #: ../Doc/c-api/unicode.rst:444 -#, fuzzy msgid ":c:type:`size_t` or :c:type:`ssize_t`" -msgstr ":c:type:`\\ Py_ssize_t`" +msgstr ":c:type:`size_t` o :c:type:`ssize_t`" #: ../Doc/c-api/unicode.rst:446 msgid "``t``" -msgstr "" +msgstr "``t``" #: ../Doc/c-api/unicode.rst:446 -#, fuzzy msgid ":c:type:`ptrdiff_t`" -msgstr ":c:type:`\\ Py_ssize_t`" +msgstr ":c:type:`ptrdiff_t`" #: ../Doc/c-api/unicode.rst:449 msgid "" -"The length modifier ``l`` for following conversions ``s`` or ``V`` specify " -"that the type of the argument is :c:expr:`const wchar_t*`." +"The length modifier ``l`` for following conversions ``s`` or ``V`` specify that the type of the " +"argument is :c:expr:`const wchar_t*`." msgstr "" +"El modificador de longitud ``l`` para las siguientes conversiones ``s`` o ``V`` especifica que el " +"tipo del argumento es :c:expr:`const wchar_t*`." #: ../Doc/c-api/unicode.rst:452 msgid "The conversion specifiers are:" -msgstr "" +msgstr "Los especificadores de conversión son:" #: ../Doc/c-api/unicode.rst:458 msgid "Conversion Specifier" -msgstr "" +msgstr "Especificador de conversión" #: ../Doc/c-api/unicode.rst:459 msgid "Type" @@ -714,83 +628,80 @@ msgstr "Comentario" #: ../Doc/c-api/unicode.rst:462 msgid "``%``" -msgstr "" +msgstr "``%``" #: ../Doc/c-api/unicode.rst:463 msgid "*n/a*" msgstr "*n/a*" #: ../Doc/c-api/unicode.rst:464 -#, fuzzy msgid "The literal ``%`` character." -msgstr "El carácter literal %." +msgstr "El carácter literal ``%``." #: ../Doc/c-api/unicode.rst:466 msgid "``d``, ``i``" -msgstr "" +msgstr "``d``, ``i``" -#: ../Doc/c-api/unicode.rst:467 ../Doc/c-api/unicode.rst:471 -#: ../Doc/c-api/unicode.rst:475 ../Doc/c-api/unicode.rst:479 -#: ../Doc/c-api/unicode.rst:483 +#: ../Doc/c-api/unicode.rst:467 ../Doc/c-api/unicode.rst:471 ../Doc/c-api/unicode.rst:475 +#: ../Doc/c-api/unicode.rst:479 ../Doc/c-api/unicode.rst:483 msgid "Specified by the length modifier" -msgstr "" +msgstr "Especificado por el modificador de longitud" #: ../Doc/c-api/unicode.rst:468 msgid "The decimal representation of a signed C integer." -msgstr "" +msgstr "La representación decimal de un entero C con signo." #: ../Doc/c-api/unicode.rst:470 msgid "``u``" -msgstr "" +msgstr "``u``" #: ../Doc/c-api/unicode.rst:472 msgid "The decimal representation of an unsigned C integer." -msgstr "" +msgstr "La representación decimal de un entero C sin signo." #: ../Doc/c-api/unicode.rst:474 msgid "``o``" -msgstr "" +msgstr "``o``" #: ../Doc/c-api/unicode.rst:476 msgid "The octal representation of an unsigned C integer." -msgstr "" +msgstr "La representación octal de un entero C sin signo." #: ../Doc/c-api/unicode.rst:478 msgid "``x``" -msgstr "" +msgstr "``x``" #: ../Doc/c-api/unicode.rst:480 msgid "The hexadecimal representation of an unsigned C integer (lowercase)." -msgstr "" +msgstr "La representación hexadecimal de un entero C sin signo (minúsculas)." #: ../Doc/c-api/unicode.rst:482 msgid "``X``" -msgstr "" +msgstr "``X``" #: ../Doc/c-api/unicode.rst:484 msgid "The hexadecimal representation of an unsigned C integer (uppercase)." -msgstr "" +msgstr "La representación hexadecimal de un entero C sin signo (mayúsculas)." #: ../Doc/c-api/unicode.rst:486 msgid "``c``" -msgstr "" +msgstr "``c``" #: ../Doc/c-api/unicode.rst:487 msgid ":c:expr:`int`" -msgstr "" +msgstr ":c:expr:`int`" #: ../Doc/c-api/unicode.rst:488 -#, fuzzy msgid "A single character." -msgstr "Un solo carácter, representado como un entero (*int*) de C." +msgstr "Un solo carácter." #: ../Doc/c-api/unicode.rst:490 msgid "``s``" -msgstr "" +msgstr "``s``" #: ../Doc/c-api/unicode.rst:491 msgid ":c:expr:`const char*` or :c:expr:`const wchar_t*`" -msgstr "" +msgstr ":c:expr:`const char*` o :c:expr:`const wchar_t*`" #: ../Doc/c-api/unicode.rst:492 msgid "A null-terminated C character array." @@ -798,34 +709,29 @@ msgstr "Un arreglo de caracteres de C terminada en nulo." #: ../Doc/c-api/unicode.rst:494 msgid "``p``" -msgstr "" +msgstr "``p``" #: ../Doc/c-api/unicode.rst:495 -#, fuzzy msgid ":c:expr:`const void*`" -msgstr "const void\\*" +msgstr ":c:expr:`const void*`" #: ../Doc/c-api/unicode.rst:496 -#, fuzzy msgid "" -"The hex representation of a C pointer. Mostly equivalent to " -"``printf(\"%p\")`` except that it is guaranteed to start with the literal " -"``0x`` regardless of what the platform's ``printf`` yields." +"The hex representation of a C pointer. Mostly equivalent to ``printf(\"%p\")`` except that it is " +"guaranteed to start with the literal ``0x`` regardless of what the platform's ``printf`` yields." msgstr "" -"La representación hexadecimal de un puntero en C. Principalmente equivalente " -"a ``printf(\"%p\")`` excepto que se garantiza que comience con el literal " -"``0x``, independiente de lo que produzca el ``printf`` de la plataforma." +"La representación hexadecimal de un puntero en C. Principalmente equivalente a ``printf(\"%p\")`` " +"excepto que se garantiza que comience con el literal ``0x``, independientemente de lo que produzca " +"el ``printf`` de la plataforma." #: ../Doc/c-api/unicode.rst:501 msgid "``A``" -msgstr "" +msgstr "``A``" -#: ../Doc/c-api/unicode.rst:502 ../Doc/c-api/unicode.rst:506 -#: ../Doc/c-api/unicode.rst:516 ../Doc/c-api/unicode.rst:520 -#: ../Doc/c-api/unicode.rst:524 ../Doc/c-api/unicode.rst:529 -#, fuzzy +#: ../Doc/c-api/unicode.rst:502 ../Doc/c-api/unicode.rst:506 ../Doc/c-api/unicode.rst:516 +#: ../Doc/c-api/unicode.rst:520 ../Doc/c-api/unicode.rst:524 ../Doc/c-api/unicode.rst:529 msgid ":c:expr:`PyObject*`" -msgstr "PyObject\\*" +msgstr ":c:expr:`PyObject*`" #: ../Doc/c-api/unicode.rst:503 msgid "The result of calling :func:`ascii`." @@ -833,7 +739,7 @@ msgstr "El resultado de llamar :func:`ascii`." #: ../Doc/c-api/unicode.rst:505 msgid "``U``" -msgstr "" +msgstr "``U``" #: ../Doc/c-api/unicode.rst:507 msgid "A Unicode object." @@ -841,25 +747,25 @@ msgstr "Un objeto unicode." #: ../Doc/c-api/unicode.rst:509 msgid "``V``" -msgstr "" +msgstr "``V``" #: ../Doc/c-api/unicode.rst:510 msgid ":c:expr:`PyObject*`, :c:expr:`const char*` or :c:expr:`const wchar_t*`" -msgstr "" +msgstr ":c:expr:`PyObject*`, :c:expr:`const char*` o :c:expr:`const wchar_t*`" #: ../Doc/c-api/unicode.rst:511 msgid "" -"A Unicode object (which may be ``NULL``) and a null-terminated C character " -"array as a second parameter (which will be used, if the first parameter is " -"``NULL``)." +"A Unicode object (which may be ``NULL``) and a null-terminated C character array as a second " +"parameter (which will be used, if the first parameter is ``NULL``)." msgstr "" -"Un objeto Unicode (que puede ser ``NULL``) y un arreglo de caracteres de C " -"terminada en nulo como segundo parámetro (que se utilizará, si el primer " -"parámetro es ``NULL``)." +"Un objeto Unicode (que puede ser ``NULL``) y un arreglo de caracteres C terminado en nulo como " +"segundo parámetro (que se utilizará, si el primer parámetro es ``NULL``).Un objeto Unicode (que " +"puede ser ``NULL``) y un arreglo de caracteres de C terminada en nulo como segundo parámetro (que " +"se utilizará, si el primer parámetro es ``NULL``)." #: ../Doc/c-api/unicode.rst:515 msgid "``S``" -msgstr "" +msgstr "``S``" #: ../Doc/c-api/unicode.rst:517 msgid "The result of calling :c:func:`PyObject_Str`." @@ -867,7 +773,7 @@ msgstr "El resultado de llamar :c:func:`PyObject_Str`." #: ../Doc/c-api/unicode.rst:519 msgid "``R``" -msgstr "" +msgstr "``R``" #: ../Doc/c-api/unicode.rst:521 msgid "The result of calling :c:func:`PyObject_Repr`." @@ -875,71 +781,74 @@ msgstr "El resultado de llamar :c:func:`PyObject_Repr`." #: ../Doc/c-api/unicode.rst:523 msgid "``T``" -msgstr "" +msgstr "``T``" #: ../Doc/c-api/unicode.rst:525 -msgid "" -"Get the fully qualified name of an object type; call :c:func:" -"`PyType_GetFullyQualifiedName`." +msgid "Get the fully qualified name of an object type; call :c:func:`PyType_GetFullyQualifiedName`." msgstr "" +"Obtener el nombre completamente cualificado de un tipo de objeto; llamar a :c:func:" +"`PyType_GetFullyQualifiedName`." #: ../Doc/c-api/unicode.rst:528 msgid "``#T``" -msgstr "" +msgstr "``#T``" #: ../Doc/c-api/unicode.rst:530 msgid "" -"Similar to ``T`` format, but use a colon (``:``) as separator between the " -"module name and the qualified name." +"Similar to ``T`` format, but use a colon (``:``) as separator between the module name and the " +"qualified name." msgstr "" +"Similar al formato ``T``, pero usa dos puntos (``:``) como separador entre el nombre del módulo y " +"el nombre cualificado." #: ../Doc/c-api/unicode.rst:533 msgid "``N``" -msgstr "" +msgstr "``N``" #: ../Doc/c-api/unicode.rst:534 ../Doc/c-api/unicode.rst:539 -#, fuzzy msgid ":c:expr:`PyTypeObject*`" -msgstr "PyObject\\*" +msgstr ":c:expr:`PyTypeObject*`" #: ../Doc/c-api/unicode.rst:535 -msgid "" -"Get the fully qualified name of a type; call :c:func:" -"`PyType_GetFullyQualifiedName`." +msgid "Get the fully qualified name of a type; call :c:func:`PyType_GetFullyQualifiedName`." msgstr "" +"Obtener el nombre completamente cualificado de un tipo; llamar a :c:func:" +"`PyType_GetFullyQualifiedName`." #: ../Doc/c-api/unicode.rst:538 msgid "``#N``" -msgstr "" +msgstr "``#N``" #: ../Doc/c-api/unicode.rst:540 msgid "" -"Similar to ``N`` format, but use a colon (``:``) as separator between the " -"module name and the qualified name." +"Similar to ``N`` format, but use a colon (``:``) as separator between the module name and the " +"qualified name." msgstr "" +"Similar al formato ``N``, pero usa dos puntos (``:``) como separador entre el nombre del módulo y " +"el nombre cualificado." #: ../Doc/c-api/unicode.rst:544 -#, fuzzy, python-format -msgid "" -"The width formatter unit is number of characters rather than bytes. The " -"precision formatter unit is number of bytes or :c:type:`wchar_t` items (if " -"the length modifier ``l`` is used) for ``\"%s\"`` and ``\"%V\"`` (if the " -"``PyObject*`` argument is ``NULL``), and a number of characters for " -"``\"%A\"``, ``\"%U\"``, ``\"%S\"``, ``\"%R\"`` and ``\"%V\"`` (if the " -"``PyObject*`` argument is not ``NULL``)." -msgstr "" -"La unidad del formateador de ancho es el número de caracteres en lugar de " -"bytes. La unidad del formateador de precisión es la cantidad de bytes para " -"``\"%s\"`` y ``\"%V\"`` (si el argumento ``PyObject*`` es ``NULL``), y una " -"cantidad de caracteres para ``\"%A\"``, ``\"%U\"``, ``\"%S\"``, ``\"%R\"`` y " +#, python-format +msgid "" +"The width formatter unit is number of characters rather than bytes. The precision formatter unit is " +"number of bytes or :c:type:`wchar_t` items (if the length modifier ``l`` is used) for ``\"%s\"`` " +"and ``\"%V\"`` (if the ``PyObject*`` argument is ``NULL``), and a number of characters for " +"``\"%A\"``, ``\"%U\"``, ``\"%S\"``, ``\"%R\"`` and ``\"%V\"`` (if the ``PyObject*`` argument is not " +"``NULL``)." +msgstr "" +"La unidad del formateador de ancho es el número de caracteres en lugar de bytes. La unidad del " +"formateador de precisión es la cantidad de bytes o elementos :c:type:`wchar_t` (si se usa el " +"modificador de longitud ``l``) para ``\"%s\"`` y ``\"%V\"`` (si el argumento ``PyObject*`` es " +"``NULL``), y una cantidad de caracteres para ``\"%A\"``, ``\"%U\"``, ``\"%S\"``, ``\"%R\"`` y " "``\"%V\"`` (si el argumento ``PyObject*`` no es ``NULL``)." #: ../Doc/c-api/unicode.rst:552 msgid "" -"Unlike to C :c:func:`printf` the ``0`` flag has effect even when a precision " -"is given for integer conversions (``d``, ``i``, ``u``, ``o``, ``x``, or " -"``X``)." +"Unlike to C :c:func:`printf` the ``0`` flag has effect even when a precision is given for integer " +"conversions (``d``, ``i``, ``u``, ``o``, ``x``, or ``X``)." msgstr "" +"A diferencia de :c:func:`printf` de C, el indicador ``0`` tiene efecto incluso cuando se " +"proporciona una precisión para conversiones de enteros (``d``, ``i``, ``u``, ``o``, ``x`` o ``X``)." #: ../Doc/c-api/unicode.rst:556 msgid "Support for ``\"%lld\"`` and ``\"%llu\"`` added." @@ -953,61 +862,55 @@ msgstr "Soporte agregado para ``\"%li\"``, ``\"%lli\"`` y ``\"%zi\"``." #: ../Doc/c-api/unicode.rst:562 #, python-format msgid "" -"Support width and precision formatter for ``\"%s\"``, ``\"%A\"``, " -"``\"%U\"``, ``\"%V\"``, ``\"%S\"``, ``\"%R\"`` added." +"Support width and precision formatter for ``\"%s\"``, ``\"%A\"``, ``\"%U\"``, ``\"%V\"``, " +"``\"%S\"``, ``\"%R\"`` added." msgstr "" -"Soporte agregado para formateadores de anchura y precisión para ``\"%s\"``, " -"``\"%A\"``, ``\"%U\"``, ``\"%V\"``, ``\"%S\"``, ``\"%R\"``." +"Soporte agregado para formateadores de anchura y precisión para ``\"%s\"``, ``\"%A\"``, ``\"%U\"``, " +"``\"%V\"``, ``\"%S\"``, ``\"%R\"``." #: ../Doc/c-api/unicode.rst:566 msgid "" -"Support for conversion specifiers ``o`` and ``X``. Support for length " -"modifiers ``j`` and ``t``. Length modifiers are now applied to all integer " -"conversions. Length modifier ``l`` is now applied to conversion specifiers " -"``s`` and ``V``. Support for variable width and precision ``*``. Support for " -"flag ``-``." +"Support for conversion specifiers ``o`` and ``X``. Support for length modifiers ``j`` and ``t``. " +"Length modifiers are now applied to all integer conversions. Length modifier ``l`` is now applied " +"to conversion specifiers ``s`` and ``V``. Support for variable width and precision ``*``. Support " +"for flag ``-``." msgstr "" +"Soporte para los especificadores de conversión ``o`` y ``X``. Soporte para los modificadores de " +"longitud ``j`` y ``t``. Los modificadores de longitud ahora se aplican a todas las conversiones de " +"enteros. El modificador de longitud ``l`` ahora se aplica a los especificadores de conversión ``s`` " +"y ``V``. Soporte para ancho y precisión variables ``*``. Soporte para el indicador ``-``." #: ../Doc/c-api/unicode.rst:574 -#, fuzzy msgid "" -"An unrecognized format character now sets a :exc:`SystemError`. In previous " -"versions it caused all the rest of the format string to be copied as-is to " -"the result string, and any extra arguments discarded." +"An unrecognized format character now sets a :exc:`SystemError`. In previous versions it caused all " +"the rest of the format string to be copied as-is to the result string, and any extra arguments " +"discarded." msgstr "" -"Un carácter de formato no reconocido hace que todo el resto de la cadena de " -"formato se copie tal cual a la cadena de resultado y se descartan los " -"argumentos adicionales." +"Un carácter de formato no reconocido ahora establece un :exc:`SystemError`. En versiones " +"anteriores, hacía que el resto de la cadena de formato se copiara tal cual a la cadena resultante, " +"y cualquier argumento extra se descartaba." #: ../Doc/c-api/unicode.rst:578 -#, fuzzy, python-format +#, python-format msgid "Support for ``%T``, ``%#T``, ``%N`` and ``%#N`` formats added." -msgstr "Soporte agregado para ``\"%li\"``, ``\"%lli\"`` y ``\"%zi\"``." +msgstr "Soporte agregado para los formatos ``%T``, ``%#T``, ``%N`` y ``%#N``." #: ../Doc/c-api/unicode.rst:584 -msgid "" -"Identical to :c:func:`PyUnicode_FromFormat` except that it takes exactly two " -"arguments." -msgstr "" -"Idéntico a :c:func:`PyUnicode_FromFormat` excepto que toma exactamente dos " -"argumentos." +msgid "Identical to :c:func:`PyUnicode_FromFormat` except that it takes exactly two arguments." +msgstr "Idéntico a :c:func:`PyUnicode_FromFormat` excepto que toma exactamente dos argumentos." #: ../Doc/c-api/unicode.rst:590 -#, fuzzy msgid "" -"Copy an instance of a Unicode subtype to a new true Unicode object if " -"necessary. If *obj* is already a true Unicode object (not a subtype), return " -"a new :term:`strong reference` to the object." +"Copy an instance of a Unicode subtype to a new true Unicode object if necessary. If *obj* is " +"already a true Unicode object (not a subtype), return a new :term:`strong reference` to the object." msgstr "" -"Copia una instancia de un subtipo Unicode a un nuevo objeto Unicode " -"verdadero si es necesario. Si *obj* ya es un verdadero objeto Unicode (no un " -"subtipo), retorna la referencia con un recuento incrementado." +"Copia una instancia de un subtipo Unicode a un nuevo objeto Unicode verdadero si es necesario. Si " +"*obj* ya es un verdadero objeto Unicode (no un subtipo), retorna una nueva :term:`referencia " +"fuerte` al objeto." #: ../Doc/c-api/unicode.rst:594 -msgid "" -"Objects other than Unicode or its subtypes will cause a :exc:`TypeError`." -msgstr "" -"Los objetos que no sean Unicode o sus subtipos causarán un :exc:`TypeError`." +msgid "Objects other than Unicode or its subtypes will cause a :exc:`TypeError`." +msgstr "Los objetos que no sean Unicode o sus subtipos causarán un :exc:`TypeError`." #: ../Doc/c-api/unicode.rst:600 msgid "Decode an encoded object *obj* to a Unicode object." @@ -1015,32 +918,27 @@ msgstr "Decodifica un objeto codificado *obj* en un objeto Unicode." #: ../Doc/c-api/unicode.rst:602 msgid "" -":class:`bytes`, :class:`bytearray` and other :term:`bytes-like objects " -"` are decoded according to the given *encoding* and using " -"the error handling defined by *errors*. Both can be ``NULL`` to have the " -"interface use the default values (see :ref:`builtincodecs` for details)." +":class:`bytes`, :class:`bytearray` and other :term:`bytes-like objects ` are " +"decoded according to the given *encoding* and using the error handling defined by *errors*. Both " +"can be ``NULL`` to have the interface use the default values (see :ref:`builtincodecs` for details)." msgstr "" -":class:`bytes`, :class:`bytearray` y otros :term:`los objetos similares a " -"bytes ` se decodifican de acuerdo con el *encoding* dado " -"y utilizan el manejo de errores definido por *errors*. Ambos pueden ser " -"``NULL`` para que la interfaz use los valores predeterminados (ver :ref:" -"`builtincodecs` para más detalles)." +":class:`bytes`, :class:`bytearray` y otros :term:`los objetos similares a bytes ` se decodifican de acuerdo con el *encoding* dado y utilizan el manejo de errores definido " +"por *errors*. Ambos pueden ser ``NULL`` para que la interfaz use los valores predeterminados (ver :" +"ref:`builtincodecs` para más detalles)." #: ../Doc/c-api/unicode.rst:608 -msgid "" -"All other objects, including Unicode objects, cause a :exc:`TypeError` to be " -"set." +msgid "All other objects, including Unicode objects, cause a :exc:`TypeError` to be set." msgstr "" -"Todos los demás objetos, incluidos los objetos Unicode, hacen que se " -"establezca un :exc:`TypeError`." +"Todos los demás objetos, incluidos los objetos Unicode, hacen que se establezca un :exc:`TypeError`." #: ../Doc/c-api/unicode.rst:611 msgid "" -"The API returns ``NULL`` if there was an error. The caller is responsible " -"for decref'ing the returned objects." +"The API returns ``NULL`` if there was an error. The caller is responsible for decref'ing the " +"returned objects." msgstr "" -"La API retorna ``NULL`` si hubo un error. La entidad que hace la llamadas es " -"la responsable de desreferenciar los objetos retornados." +"La API retorna ``NULL`` si hubo un error. La entidad que hace la llamadas es la responsable de " +"desreferenciar los objetos retornados." #: ../Doc/c-api/unicode.rst:617 msgid "Return the length of the Unicode object, in code points." @@ -1048,161 +946,132 @@ msgstr "Retorna la longitud del objeto Unicode, en puntos de código." #: ../Doc/c-api/unicode.rst:619 msgid "On error, set an exception and return ``-1``." -msgstr "" +msgstr "En caso de error, establece una excepción y retorna ``-1``." #: ../Doc/c-api/unicode.rst:630 -#, fuzzy msgid "" -"Copy characters from one Unicode object into another. This function " -"performs character conversion when necessary and falls back to :c:func:`!" -"memcpy` if possible. Returns ``-1`` and sets an exception on error, " -"otherwise returns the number of copied characters." +"Copy characters from one Unicode object into another. This function performs character conversion " +"when necessary and falls back to :c:func:`!memcpy` if possible. Returns ``-1`` and sets an " +"exception on error, otherwise returns the number of copied characters." msgstr "" -"Copia caracteres de un objeto Unicode en otro. Esta función realiza la " -"conversión de caracteres cuando es necesario y recurre a :c:func:`memcpy` si " -"es posible. Retorna ``-1`` y establece una excepción en caso de error; de lo " -"contrario, retorna el número de caracteres copiados." +"Copia caracteres de un objeto Unicode en otro. Esta función realiza la conversión de caracteres " +"cuando es necesario y recurre a :c:func:`!memcpy` si es posible. Retorna ``-1`` y establece una " +"excepción en caso de error; de lo contrario, retorna el número de caracteres copiados." #: ../Doc/c-api/unicode.rst:641 -msgid "" -"Fill a string with a character: write *fill_char* into ``unicode[start:" -"start+length]``." +msgid "Fill a string with a character: write *fill_char* into ``unicode[start:start+length]``." msgstr "" -"Rellena una cadena con un carácter: escriba *fill_char* en ``unicode[inicio:" -"inicio+longitud]``." +"Rellena una cadena con un carácter: escriba *fill_char* en ``unicode[inicio:inicio+longitud]``." #: ../Doc/c-api/unicode.rst:644 msgid "" -"Fail if *fill_char* is bigger than the string maximum character, or if the " -"string has more than 1 reference." +"Fail if *fill_char* is bigger than the string maximum character, or if the string has more than 1 " +"reference." msgstr "" -"Falla si *fill_char* es más grande que el carácter máximo de la cadena, o si " -"la cadena tiene más de 1 referencia." +"Falla si *fill_char* es más grande que el carácter máximo de la cadena, o si la cadena tiene más de " +"1 referencia." #: ../Doc/c-api/unicode.rst:647 -msgid "" -"Return the number of written character, or return ``-1`` and raise an " -"exception on error." +msgid "Return the number of written character, or return ``-1`` and raise an exception on error." msgstr "" -"Retorna el número de caracteres escritos o retorna ``-1`` y lanza una " -"excepción en caso de error." +"Retorna el número de caracteres escritos, o retorna ``-1`` y lanza una excepción en caso de error." +"Retorna el número de caracteres escritos o retorna ``-1`` y lanza una excepción en caso de error." #: ../Doc/c-api/unicode.rst:656 msgid "" -"Write a character to a string. The string must have been created through :c:" -"func:`PyUnicode_New`. Since Unicode strings are supposed to be immutable, " -"the string must not be shared, or have been hashed yet." +"Write a character to a string. The string must have been created through :c:func:`PyUnicode_New`. " +"Since Unicode strings are supposed to be immutable, the string must not be shared, or have been " +"hashed yet." msgstr "" -"Escribe un carácter en una cadena de caracteres. La cadena debe haberse " -"creado a través de :c:func:`PyUnicode_New`. Dado que se supone que las " -"cadenas de caracteres Unicode son inmutables, la cadena no debe compartirse " -"o no se ha cifrado todavía." +"Escribe un carácter en una cadena de caracteres. La cadena debe haberse creado a través de :c:func:" +"`PyUnicode_New`. Dado que se supone que las cadenas de caracteres Unicode son inmutables, la cadena " +"no debe compartirse o no se ha cifrado todavía." #: ../Doc/c-api/unicode.rst:660 msgid "" -"This function checks that *unicode* is a Unicode object, that the index is " -"not out of bounds, and that the object can be modified safely (i.e. that it " -"its reference count is one)." +"This function checks that *unicode* is a Unicode object, that the index is not out of bounds, and " +"that the object can be modified safely (i.e. that it its reference count is one)." msgstr "" -"Esta función comprueba que *unicode* es un objeto Unicode, que el índice no " -"está fuera de los límites y que el objeto se puede modificar de forma segura " -"(es decir, si su número de referencia es uno)." +"Esta función comprueba que *unicode* es un objeto Unicode, que el índice no está fuera de los " +"límites y que el objeto se puede modificar de forma segura (es decir, si su número de referencia es " +"uno)." #: ../Doc/c-api/unicode.rst:664 -#, fuzzy msgid "Return ``0`` on success, ``-1`` on error with an exception set." -msgstr "Todos retornan ``NULL`` o ``-1`` si ocurre una excepción." +msgstr "Retorna ``0`` en caso de éxito, ``-1`` en caso de error con una excepción establecida." #: ../Doc/c-api/unicode.rst:671 -#, fuzzy msgid "" -"Read a character from a string. This function checks that *unicode* is a " -"Unicode object and the index is not out of bounds, in contrast to :c:func:" -"`PyUnicode_READ_CHAR`, which performs no error checking." +"Read a character from a string. This function checks that *unicode* is a Unicode object and the " +"index is not out of bounds, in contrast to :c:func:`PyUnicode_READ_CHAR`, which performs no error " +"checking." msgstr "" -"Lee un carácter de una cadena de caracteres. Esta función verifica que " -"*unicode* es un objeto Unicode y que el índice no está fuera de límites, en " -"contraste con la versión de macro :c:func:`PyUnicode_READ_CHAR`." +"Lee un carácter de una cadena. Esta función verifica que *unicode* es un objeto Unicode y que el " +"índice no está fuera de límites, en contraste con la macro :c:func:`PyUnicode_READ_CHAR`, que no " +"realiza ninguna comprobación de errores." #: ../Doc/c-api/unicode.rst:675 -#, fuzzy msgid "Return character on success, ``-1`` on error with an exception set." -msgstr "" -"Retorna el número de caracteres escritos o retorna ``-1`` y lanza una " -"excepción en caso de error." +msgstr "Retorna el carácter en caso de éxito, ``-1`` en caso de error con una excepción establecida." #: ../Doc/c-api/unicode.rst:683 -#, fuzzy msgid "" -"Return a substring of *unicode*, from character index *start* (included) to " -"character index *end* (excluded). Negative indices are not supported. On " -"error, set an exception and return ``NULL``." +"Return a substring of *unicode*, from character index *start* (included) to character index *end* " +"(excluded). Negative indices are not supported. On error, set an exception and return ``NULL``." msgstr "" -"Retorna una subcadena de caracteres de *str*, desde el índice de caracteres " -"*start* (incluido) al índice de caracteres *end* (excluido). Los índices " -"negativos no son compatibles." +"Retorna una subcadena de *unicode*, desde el índice de caracteres *start* (incluido) hasta el " +"índice de caracteres *end* (excluido). Los índices negativos no son compatibles. En caso de error, " +"establece una excepción y retorna ``NULL``." #: ../Doc/c-api/unicode.rst:693 -#, fuzzy msgid "" -"Copy the string *unicode* into a UCS4 buffer, including a null character, if " -"*copy_null* is set. Returns ``NULL`` and sets an exception on error (in " -"particular, a :exc:`SystemError` if *buflen* is smaller than the length of " -"*unicode*). *buffer* is returned on success." +"Copy the string *unicode* into a UCS4 buffer, including a null character, if *copy_null* is set. " +"Returns ``NULL`` and sets an exception on error (in particular, a :exc:`SystemError` if *buflen* is " +"smaller than the length of *unicode*). *buffer* is returned on success." msgstr "" -"Copia la cadena de caracteres *u* en un búfer UCS4, incluido un carácter " -"nulo, si *copy_null* está configurado. Retorna ``NULL`` y establece una " -"excepción en caso de error (en particular, a :exc:`SystemError` si *buflen* " -"es menor que la longitud de *u*). *buffer* se retorna en caso de éxito." +"Copia la cadena *unicode* en un búfer UCS4, incluyendo un carácter nulo, si *copy_null* está " +"configurado. Retorna ``NULL`` y establece una excepción en caso de error (en particular, un :exc:" +"`SystemError` si *buflen* es menor que la longitud de *unicode*). Se retorna *buffer* en caso de " +"éxito." #: ../Doc/c-api/unicode.rst:703 -#, fuzzy msgid "" -"Copy the string *unicode* into a new UCS4 buffer that is allocated using :c:" -"func:`PyMem_Malloc`. If this fails, ``NULL`` is returned with a :exc:" -"`MemoryError` set. The returned buffer always has an extra null code point " -"appended." +"Copy the string *unicode* into a new UCS4 buffer that is allocated using :c:func:`PyMem_Malloc`. " +"If this fails, ``NULL`` is returned with a :exc:`MemoryError` set. The returned buffer always has " +"an extra null code point appended." msgstr "" -"Copia la cadena de caracteres *u* en un nuevo búfer UCS4 que se asigna " -"usando :c:func:`PyMem_Malloc`. Si esto falla, se retorna ``NULL`` con un :" -"exc:`MemoryError` establecido. El búfer retornado siempre tiene un punto de " -"código nulo adicional agregado." +"Copia la cadena *unicode* en un nuevo búfer UCS4 que se asigna usando :c:func:`PyMem_Malloc`. Si " +"esto falla, retorna ``NULL`` con un :exc:`MemoryError` establecido. El búfer retornado siempre " +"tiene un punto de código nulo adicional agregado." #: ../Doc/c-api/unicode.rst:712 msgid "Locale Encoding" msgstr "Codificación regional" #: ../Doc/c-api/unicode.rst:714 -msgid "" -"The current locale encoding can be used to decode text from the operating " -"system." -msgstr "" -"La codificación local actual se puede utilizar para decodificar texto del " -"sistema operativo." +msgid "The current locale encoding can be used to decode text from the operating system." +msgstr "La codificación local actual se puede utilizar para decodificar texto del sistema operativo." #: ../Doc/c-api/unicode.rst:721 msgid "" -"Decode a string from UTF-8 on Android and VxWorks, or from the current " -"locale encoding on other platforms. The supported error handlers are " -"``\"strict\"`` and ``\"surrogateescape\"`` (:pep:`383`). The decoder uses " -"``\"strict\"`` error handler if *errors* is ``NULL``. *str* must end with a " -"null character but cannot contain embedded null characters." +"Decode a string from UTF-8 on Android and VxWorks, or from the current locale encoding on other " +"platforms. The supported error handlers are ``\"strict\"`` and ``\"surrogateescape\"`` (:pep:" +"`383`). The decoder uses ``\"strict\"`` error handler if *errors* is ``NULL``. *str* must end with " +"a null character but cannot contain embedded null characters." msgstr "" -"Decodifica una cadena de caracteres UTF-8 en Android y VxWorks, o de la " -"codificación de configuración regional actual en otras plataformas. Los " -"manejadores de errores admitidos son ``\"estricto\"`` y " -"``\"subrogateescape\"`` (:pep:`383`). El decodificador usa el controlador de " -"errores ``\"estricto\"`` si *errors* es ``NULL``. *str* debe terminar con un " -"carácter nulo pero no puede contener caracteres nulos incrustados." +"Decodifica una cadena de caracteres UTF-8 en Android y VxWorks, o de la codificación de " +"configuración regional actual en otras plataformas. Los manejadores de errores admitidos son " +"``\"estricto\"`` y ``\"subrogateescape\"`` (:pep:`383`). El decodificador usa el controlador de " +"errores ``\"estricto\"`` si *errors* es ``NULL``. *str* debe terminar con un carácter nulo pero no " +"puede contener caracteres nulos incrustados." #: ../Doc/c-api/unicode.rst:728 -#, fuzzy msgid "" -"Use :c:func:`PyUnicode_DecodeFSDefaultAndSize` to decode a string from the :" -"term:`filesystem encoding and error handler`." +"Use :c:func:`PyUnicode_DecodeFSDefaultAndSize` to decode a string from the :term:`filesystem " +"encoding and error handler`." msgstr "" -"Decodifica una cadena desde el :term:`codificador de sistema de archivos y " -"gestor de errores `." +"Use :c:func:`PyUnicode_DecodeFSDefaultAndSize` para decodificar una cadena desde el :term:" +"`codificador de sistema de archivos y gestor de errores `." #: ../Doc/c-api/unicode.rst:731 ../Doc/c-api/unicode.rst:766 msgid "This function ignores the :ref:`Python UTF-8 Mode `." @@ -1214,49 +1083,42 @@ msgstr "La función :c:func:`Py_DecodeLocale`." #: ../Doc/c-api/unicode.rst:739 msgid "" -"The function now also uses the current locale encoding for the " -"``surrogateescape`` error handler, except on Android. Previously, :c:func:" -"`Py_DecodeLocale` was used for the ``surrogateescape``, and the current " -"locale encoding was used for ``strict``." +"The function now also uses the current locale encoding for the ``surrogateescape`` error handler, " +"except on Android. Previously, :c:func:`Py_DecodeLocale` was used for the ``surrogateescape``, and " +"the current locale encoding was used for ``strict``." msgstr "" -"La función ahora también usa la codificación de configuración regional " -"actual para el controlador de errores ``subrogateescape``, excepto en " -"Android. Anteriormente, :c:func:`Py_DecodeLocale` se usaba para el " -"``subrogateescape``, y la codificación local actual se usaba para " -"``estricto``." +"La función ahora también usa la codificación de configuración regional actual para el controlador " +"de errores ``subrogateescape``, excepto en Android. Anteriormente, :c:func:`Py_DecodeLocale` se " +"usaba para el ``subrogateescape``, y la codificación local actual se usaba para ``estricto``." #: ../Doc/c-api/unicode.rst:748 -#, fuzzy msgid "" -"Similar to :c:func:`PyUnicode_DecodeLocaleAndSize`, but compute the string " -"length using :c:func:`!strlen`." +"Similar to :c:func:`PyUnicode_DecodeLocaleAndSize`, but compute the string length using :c:func:`!" +"strlen`." msgstr "" -"Similar a :c:func:`PyUnicode_DecodeLocaleAndSize`, pero calcula la longitud " -"de la cadena de caracteres usando :c:func:`strlen`." +"Similar a :c:func:`PyUnicode_DecodeLocaleAndSize`, pero calcula la longitud de la cadena usando :c:" +"func:`!strlen`." #: ../Doc/c-api/unicode.rst:756 msgid "" -"Encode a Unicode object to UTF-8 on Android and VxWorks, or to the current " -"locale encoding on other platforms. The supported error handlers are " -"``\"strict\"`` and ``\"surrogateescape\"`` (:pep:`383`). The encoder uses " -"``\"strict\"`` error handler if *errors* is ``NULL``. Return a :class:" +"Encode a Unicode object to UTF-8 on Android and VxWorks, or to the current locale encoding on other " +"platforms. The supported error handlers are ``\"strict\"`` and ``\"surrogateescape\"`` (:pep:" +"`383`). The encoder uses ``\"strict\"`` error handler if *errors* is ``NULL``. Return a :class:" "`bytes` object. *unicode* cannot contain embedded null characters." msgstr "" -"Codifica un objeto Unicode UTF-8 en Android y VxWorks, o en la codificación " -"local actual en otras plataformas. Los manejadores de errores admitidos son " -"``\"estricto\"`` y ``\"subrogateescape\"`` (:pep:`383`). El codificador " -"utiliza el controlador de errores ``\"estricto\"`` si *errors* es ``NULL``. " -"Retorna un objeto :class:`bytes`. *unicode* no puede contener caracteres " -"nulos incrustados." +"Codifica un objeto Unicode UTF-8 en Android y VxWorks, o en la codificación local actual en otras " +"plataformas. Los manejadores de errores admitidos son ``\"estricto\"`` y ``\"subrogateescape\"`` (:" +"pep:`383`). El codificador utiliza el controlador de errores ``\"estricto\"`` si *errors* es " +"``NULL``. Retorna un objeto :class:`bytes`. *unicode* no puede contener caracteres nulos " +"incrustados." #: ../Doc/c-api/unicode.rst:763 -#, fuzzy msgid "" -"Use :c:func:`PyUnicode_EncodeFSDefault` to encode a string to the :term:" -"`filesystem encoding and error handler`." +"Use :c:func:`PyUnicode_EncodeFSDefault` to encode a string to the :term:`filesystem encoding and " +"error handler`." msgstr "" -"Decodifica una cadena desde el :term:`codificador de sistema de archivos y " -"gestor de errores `." +"Use :c:func:`PyUnicode_EncodeFSDefault` para codificar una cadena al :term:`codificador de sistema " +"de archivos y gestor de errores `." #: ../Doc/c-api/unicode.rst:770 ../Doc/c-api/unicode.rst:863 msgid "The :c:func:`Py_EncodeLocale` function." @@ -1264,54 +1126,44 @@ msgstr "La función :c:func:`Py_EncodeLocale`." #: ../Doc/c-api/unicode.rst:774 msgid "" -"The function now also uses the current locale encoding for the " -"``surrogateescape`` error handler, except on Android. Previously, :c:func:" -"`Py_EncodeLocale` was used for the ``surrogateescape``, and the current " -"locale encoding was used for ``strict``." +"The function now also uses the current locale encoding for the ``surrogateescape`` error handler, " +"except on Android. Previously, :c:func:`Py_EncodeLocale` was used for the ``surrogateescape``, and " +"the current locale encoding was used for ``strict``." msgstr "" -"La función ahora también usa la codificación de configuración regional " -"actual para el controlador de errores ``subrogateescape``, excepto en " -"Android. Anteriormente, :c:func:`Py_EncodeLocale` se usaba para el " -"``subrogateescape``, y la codificación local actual se usaba para " -"``estricto``." +"La función ahora también usa la codificación de configuración regional actual para el controlador " +"de errores ``subrogateescape``, excepto en Android. Anteriormente, :c:func:`Py_EncodeLocale` se " +"usaba para el ``subrogateescape``, y la codificación local actual se usaba para ``estricto``." #: ../Doc/c-api/unicode.rst:783 msgid "File System Encoding" msgstr "Codificación del sistema de archivos" #: ../Doc/c-api/unicode.rst:785 -#, fuzzy msgid "" -"Functions encoding to and decoding from the :term:`filesystem encoding and " -"error handler` (:pep:`383` and :pep:`529`)." +"Functions encoding to and decoding from the :term:`filesystem encoding and error handler` (:pep:" +"`383` and :pep:`529`)." msgstr "" -"Decodifica una cadena desde el :term:`codificador de sistema de archivos y " -"gestor de errores `." +"Funciones que codifican y decodifican desde el :term:`codificador de sistema de archivos y gestor " +"de errores ` (:pep:`383` y :pep:`529`)." #: ../Doc/c-api/unicode.rst:788 -#, fuzzy msgid "" -"To encode file names to :class:`bytes` during argument parsing, the " -"``\"O&\"`` converter should be used, passing :c:func:`PyUnicode_FSConverter` " -"as the conversion function:" +"To encode file names to :class:`bytes` during argument parsing, the ``\"O&\"`` converter should be " +"used, passing :c:func:`PyUnicode_FSConverter` as the conversion function:" msgstr "" -"Para decodificar nombres de archivo a :class:`str` durante el análisis de " -"argumentos, se debe usar el convertidor ``\"O&\"``, pasando :c:func:" -"`PyUnicode_FSDecoder` como la función de conversión:" +"Para codificar nombres de archivo a :class:`bytes` durante el análisis de argumentos, se debe usar " +"el convertidor ``\"O&\"``, pasando :c:func:`PyUnicode_FSConverter` como la función de conversión:" #: ../Doc/c-api/unicode.rst:794 -#, fuzzy -msgid "" -"ParseTuple converter: encode :class:`str` objects -- obtained directly or " -"through the :class:`os.PathLike` interface -- to :class:`bytes` using :c:" -"func:`PyUnicode_EncodeFSDefault`; :class:`bytes` objects are output as-is. " -"*result* must be a :c:expr:`PyBytesObject*` which must be released when it " -"is no longer used." -msgstr "" -"Convertidor *ParseTuple* : codificar objetos :class:`str` -- obtenidos " -"directamente o mediante la interfaz :class:`os.PathLike` -- a :class:`bytes` " -"usando :c:func:`PyUnicode_EncodeFSDefault`; los objetos :class:`bytes` se " -"emiten tal cual. *result* debe ser un :c:type:`PyBytesObject*` que debe " +msgid "" +"ParseTuple converter: encode :class:`str` objects -- obtained directly or through the :class:`os." +"PathLike` interface -- to :class:`bytes` using :c:func:`PyUnicode_EncodeFSDefault`; :class:`bytes` " +"objects are output as-is. *result* must be a :c:expr:`PyBytesObject*` which must be released when " +"it is no longer used." +msgstr "" +"Convertidor *ParseTuple*: codifica objetos :class:`str` -- obtenidos directamente o mediante la " +"interfaz :class:`os.PathLike` -- a :class:`bytes` usando :c:func:`PyUnicode_EncodeFSDefault`; los " +"objetos :class:`bytes` se emiten tal cual. *result* debe ser un :c:expr:`PyBytesObject*` que debe " "liberarse cuando ya no se use." #: ../Doc/c-api/unicode.rst:802 ../Doc/c-api/unicode.rst:819 @@ -1320,193 +1172,153 @@ msgstr "Acepta un objeto similar a una ruta (:term:`path-like object`)." #: ../Doc/c-api/unicode.rst:805 msgid "" -"To decode file names to :class:`str` during argument parsing, the ``\"O&\"`` " -"converter should be used, passing :c:func:`PyUnicode_FSDecoder` as the " -"conversion function:" +"To decode file names to :class:`str` during argument parsing, the ``\"O&\"`` converter should be " +"used, passing :c:func:`PyUnicode_FSDecoder` as the conversion function:" msgstr "" -"Para decodificar nombres de archivo a :class:`str` durante el análisis de " -"argumentos, se debe usar el convertidor ``\"O&\"``, pasando :c:func:" -"`PyUnicode_FSDecoder` como la función de conversión:" +"Para decodificar nombres de archivo a :class:`str` durante el análisis de argumentos, se debe usar " +"el convertidor ``\"O&\"``, pasando :c:func:`PyUnicode_FSDecoder` como la función de conversión:" #: ../Doc/c-api/unicode.rst:811 -#, fuzzy msgid "" -"ParseTuple converter: decode :class:`bytes` objects -- obtained either " -"directly or indirectly through the :class:`os.PathLike` interface -- to :" -"class:`str` using :c:func:`PyUnicode_DecodeFSDefaultAndSize`; :class:`str` " -"objects are output as-is. *result* must be a :c:expr:`PyUnicodeObject*` " -"which must be released when it is no longer used." +"ParseTuple converter: decode :class:`bytes` objects -- obtained either directly or indirectly " +"through the :class:`os.PathLike` interface -- to :class:`str` using :c:func:" +"`PyUnicode_DecodeFSDefaultAndSize`; :class:`str` objects are output as-is. *result* must be a :c:" +"expr:`PyUnicodeObject*` which must be released when it is no longer used." msgstr "" -"Conversor ``ParseTuple``: decodifica objetos :class:`bytes` -- obtenidos " -"directa o indirectamente a través de la interfaz :class:`os.PathLike` -- a :" -"class:`str` usando :c:func:`PyUnicode_DecodeFSDefaultAndSize`; los objetos :" -"class:`str` se generan tal cual. *result* debe ser :c:type:" -"`PyUnicodeObject*` que debe liberarse cuando ya no se use." +"Conversor ``ParseTuple``: decodifica objetos :class:`bytes` -- obtenidos directa o indirectamente a " +"través de la interfaz :class:`os.PathLike` -- a :class:`str` usando :c:func:" +"`PyUnicode_DecodeFSDefaultAndSize`; los objetos :class:`str` se generan tal cual. *result* debe " +"ser :c:expr:`PyUnicodeObject*` que debe liberarse cuando ya no se use." #: ../Doc/c-api/unicode.rst:825 msgid "Decode a string from the :term:`filesystem encoding and error handler`." msgstr "" -"Decodifica una cadena desde el :term:`codificador de sistema de archivos y " -"gestor de errores `." +"Decodifica una cadena desde el :term:`codificador de sistema de archivos y gestor de errores " +"`." #: ../Doc/c-api/unicode.rst:827 -#, fuzzy msgid "" "If you need to decode a string from the current locale encoding, use :c:func:" "`PyUnicode_DecodeLocaleAndSize`." msgstr "" -":c:data:`Py_FileSystemDefaultEncoding` se inicializa al inicio desde la " -"codificación local y no se puede modificar más tarde. Si se necesita " -"decodificar una cadena de caracteres de la codificación local actual, " -"utilice :c:func:`PyUnicode_DecodeLocaleAndSize`." +"Si necesita decodificar una cadena desde la codificación de configuración regional actual, use :c:" +"func:`PyUnicode_DecodeLocaleAndSize`." -#: ../Doc/c-api/unicode.rst:834 ../Doc/c-api/unicode.rst:847 -#: ../Doc/c-api/unicode.rst:867 -#, fuzzy -msgid "" -"The :term:`filesystem error handler ` " -"is now used." +#: ../Doc/c-api/unicode.rst:834 ../Doc/c-api/unicode.rst:847 ../Doc/c-api/unicode.rst:867 +msgid "The :term:`filesystem error handler ` is now used." msgstr "" -"Decodifica una cadena desde el :term:`codificador de sistema de archivos y " -"gestor de errores `." +"Ahora se usa el :term:`manejador de errores del sistema de archivos `." #: ../Doc/c-api/unicode.rst:841 -msgid "" -"Decode a null-terminated string from the :term:`filesystem encoding and " -"error handler`." +msgid "Decode a null-terminated string from the :term:`filesystem encoding and error handler`." msgstr "" -"Decodifica una cadena terminada en nulo desde el :term:`codificador de " -"sistema de archivos y gestor de errores `." +"Decodifica una cadena terminada en nulo desde el :term:`codificador de sistema de archivos y gestor " +"de errores `." #: ../Doc/c-api/unicode.rst:844 -#, fuzzy -msgid "" -"If the string length is known, use :c:func:" -"`PyUnicode_DecodeFSDefaultAndSize`." -msgstr "" -"Utilice :c:func:`PyUnicode_DecodeFSDefaultAndSize` si conoce la longitud de " -"la cadena." +msgid "If the string length is known, use :c:func:`PyUnicode_DecodeFSDefaultAndSize`." +msgstr "Si se conoce la longitud de la cadena, utilice :c:func:`PyUnicode_DecodeFSDefaultAndSize`." #: ../Doc/c-api/unicode.rst:854 -#, fuzzy msgid "" -"Encode a Unicode object to the :term:`filesystem encoding and error " -"handler`, and return :class:`bytes`. Note that the resulting :class:`bytes` " -"object can contain null bytes." +"Encode a Unicode object to the :term:`filesystem encoding and error handler`, and return :class:" +"`bytes`. Note that the resulting :class:`bytes` object can contain null bytes." msgstr "" -"Codifica un objeto Unicode para :c:data:`Py_FileSystemDefaultEncoding` con " -"el manejador de errores :c:data:`Py_FileSystemDefaultEncodeErrors`, y " -"retorna :class:`bytes`. Tenga en cuenta que el objeto resultante :class:" -"`bytes` puede contener bytes nulos." +"Codifica un objeto Unicode al :term:`codificador de sistema de archivos y gestor de errores " +"`, y retorna :class:`bytes`. Tenga en cuenta que el objeto " +"resultante :class:`bytes` puede contener bytes nulos." #: ../Doc/c-api/unicode.rst:858 -#, fuzzy msgid "" -"If you need to encode a string to the current locale encoding, use :c:func:" -"`PyUnicode_EncodeLocale`." +"If you need to encode a string to the current locale encoding, use :c:func:`PyUnicode_EncodeLocale`." msgstr "" -":c:data:`Py_FileSystemDefaultEncoding` se inicializa al inicio desde la " -"codificación local y no se puede modificar más tarde. Si necesita codificar " -"una cadena a la codificación local actual, utilice :c:func:" -"`PyUnicode_EncodeLocale`." +"Si necesitas codificar una cadena en la codificación de la configuración regional actual, utiliza :" +"c:func:`PyUnicode_EncodeLocale`." #: ../Doc/c-api/unicode.rst:872 msgid "wchar_t Support" msgstr "soporte wchar_t" #: ../Doc/c-api/unicode.rst:874 -#, fuzzy msgid ":c:type:`wchar_t` support for platforms which support it:" msgstr "soporte :c:type:`wchar_t` para plataformas que lo soportan:" #: ../Doc/c-api/unicode.rst:878 -#, fuzzy msgid "" -"Create a Unicode object from the :c:type:`wchar_t` buffer *wstr* of the " -"given *size*. Passing ``-1`` as the *size* indicates that the function must " -"itself compute the length, using :c:func:`!wcslen`. Return ``NULL`` on " -"failure." +"Create a Unicode object from the :c:type:`wchar_t` buffer *wstr* of the given *size*. Passing " +"``-1`` as the *size* indicates that the function must itself compute the length, using :c:func:`!" +"wcslen`. Return ``NULL`` on failure." msgstr "" -"Crea un objeto Unicode a partir del búfer :c:type:`wchar_t` *w* del tamaño " -"*size* dado. Pasar ``-1`` como *size* indica que la función debe calcular la " -"longitud, usando ``wcslen``. Retorna ``NULL`` en caso de falla." +"Crea un objeto Unicode a partir del búfer :c:type:`wchar_t` *wstr* del tamaño *size* dado. Pasar " +"``-1`` como *size* indica que la función debe calcular la longitud, usando :c:func:`!wcslen`. " +"Retorna ``NULL`` en caso de falla." #: ../Doc/c-api/unicode.rst:886 msgid "" -"Copy the Unicode object contents into the :c:type:`wchar_t` buffer *wstr*. " -"At most *size* :c:type:`wchar_t` characters are copied (excluding a possibly " -"trailing null termination character). Return the number of :c:type:" -"`wchar_t` characters copied or ``-1`` in case of an error." +"Copy the Unicode object contents into the :c:type:`wchar_t` buffer *wstr*. At most *size* :c:type:" +"`wchar_t` characters are copied (excluding a possibly trailing null termination character). Return " +"the number of :c:type:`wchar_t` characters copied or ``-1`` in case of an error." msgstr "" +"Copiar el contenido del objeto Unicode en el búfer :c:type:`wchar_t` *wstr*. Como máximo se copian " +"*size* caracteres :c:type:`wchar_t` (excluyendo un posible carácter de terminación nulo al final). " +"Devolver el número de caracteres :c:type:`wchar_t` copiados o ``-1`` en caso de error." #: ../Doc/c-api/unicode.rst:891 msgid "" -"When *wstr* is ``NULL``, instead return the *size* that would be required to " -"store all of *unicode* including a terminating null." +"When *wstr* is ``NULL``, instead return the *size* that would be required to store all of *unicode* " +"including a terminating null." msgstr "" +"Cuando *wstr* es ``NULL``, retornar en su lugar el *size* que sería necesario para almacenar todo " +"*unicode*, incluyendo un nulo de terminación." #: ../Doc/c-api/unicode.rst:894 -#, fuzzy -msgid "" -"Note that the resulting :c:expr:`wchar_t*` string may or may not be null-" -"terminated. It is the responsibility of the caller to make sure that the :c:" -"expr:`wchar_t*` string is null-terminated in case this is required by the " -"application. Also, note that the :c:expr:`wchar_t*` string might contain " -"null characters, which would cause the string to be truncated when used with " -"most C functions." -msgstr "" -"Copie el contenido del objeto Unicode en el búfer :c:expr:`wchar_t` *w*. " -"Como mucho, se copian los caracteres *size* :c:expr:`wchar_t` (excluyendo un " -"posible carácter de terminación final null). Retorna el número de :c:expr:" -"`wchar_t` caracteres copiados o ``-1`` en caso de un error. Tenga en cuenta " -"que la cadena resultante :c:expr:`wchar_t*` puede o no terminar en null. Es " -"responsabilidad de la persona que llama asegurarse de que la cadena :c:expr:" -"`wchar_t*` tenga una terminación null en caso de que la aplicación lo " -"requiera. Además, tenga en cuenta que la cadena :c:expr:`wchar_t*` podría " -"contener caracteres null, lo que haría que la cadena se truncara cuando se " -"usa con la mayoría de las funciones de C." +msgid "" +"Note that the resulting :c:expr:`wchar_t*` string may or may not be null-terminated. It is the " +"responsibility of the caller to make sure that the :c:expr:`wchar_t*` string is null-terminated in " +"case this is required by the application. Also, note that the :c:expr:`wchar_t*` string might " +"contain null characters, which would cause the string to be truncated when used with most C " +"functions." +msgstr "" +"Tenga en cuenta que la cadena :c:expr:`wchar_t*` resultante puede o no terminar en nulo. Es " +"responsabilidad del llamador asegurarse de que la cadena :c:expr:`wchar_t*` termine en nulo en caso " +"de que la aplicación lo requiera. Además, tenga en cuenta que la cadena :c:expr:`wchar_t*` podría " +"contener caracteres nulos, lo que provocaría que la cadena se truncara cuando se utiliza con la " +"mayoría de las funciones de C." #: ../Doc/c-api/unicode.rst:904 -#, fuzzy -msgid "" -"Convert the Unicode object to a wide character string. The output string " -"always ends with a null character. If *size* is not ``NULL``, write the " -"number of wide characters (excluding the trailing null termination " -"character) into *\\*size*. Note that the resulting :c:type:`wchar_t` string " -"might contain null characters, which would cause the string to be truncated " -"when used with most C functions. If *size* is ``NULL`` and the :c:expr:" -"`wchar_t*` string contains null characters a :exc:`ValueError` is raised." -msgstr "" -"Convierte el objeto Unicode en una cadena de caracteres ancha. La cadena de " -"salida siempre termina con un carácter nulo. Si *size* no es ``NULL``, " -"escribe el número de caracteres anchos (excluyendo el carácter de " -"terminación nulo final) en *\\*size*. Tenga en cuenta que la cadena " -"resultante :c:type:`wchar_t` podría contener caracteres nulos, lo que " -"provocaría que la cadena se truncara cuando se usara con la mayoría de las " -"funciones de C. Si *size* es ``NULL`` y la cadena :c:type:`wchar_t*` " +msgid "" +"Convert the Unicode object to a wide character string. The output string always ends with a null " +"character. If *size* is not ``NULL``, write the number of wide characters (excluding the trailing " +"null termination character) into *\\*size*. Note that the resulting :c:type:`wchar_t` string might " +"contain null characters, which would cause the string to be truncated when used with most C " +"functions. If *size* is ``NULL`` and the :c:expr:`wchar_t*` string contains null characters a :exc:" +"`ValueError` is raised." +msgstr "" +"Convierte el objeto Unicode en una cadena de caracteres ancha. La cadena de salida siempre termina " +"con un carácter nulo. Si *size* no es ``NULL``, escribe el número de caracteres anchos (excluyendo " +"el carácter de terminación nulo final) en *\\*size*. Tenga en cuenta que la cadena resultante :c:" +"type:`wchar_t` podría contener caracteres nulos, lo que provocaría que la cadena se truncara cuando " +"se usara con la mayoría de las funciones de C. Si *size* es ``NULL`` y la cadena :c:expr:`wchar_t*` " "contiene caracteres nulos un :exc:`ValueError` aparece." #: ../Doc/c-api/unicode.rst:912 -#, fuzzy msgid "" -"Returns a buffer allocated by :c:macro:`PyMem_New` (use :c:func:`PyMem_Free` " -"to free it) on success. On error, returns ``NULL`` and *\\*size* is " -"undefined. Raises a :exc:`MemoryError` if memory allocation is failed." +"Returns a buffer allocated by :c:macro:`PyMem_New` (use :c:func:`PyMem_Free` to free it) on " +"success. On error, returns ``NULL`` and *\\*size* is undefined. Raises a :exc:`MemoryError` if " +"memory allocation is failed." msgstr "" -"Retorna un búfer asignado por :c:func:`PyMem_Alloc` (utilice :c:func:" -"`PyMem_Free` para liberarlo) en caso de éxito. En caso de error, retorna " -"``NULL`` y *\\*size* no está definido. Provoca un :exc:`MemoryError` si " -"falla la asignación de memoria." +"Retorna un búfer asignado por :c:macro:`PyMem_New` (utilice :c:func:`PyMem_Free` para liberarlo) en " +"caso de éxito. En caso de error, retorna ``NULL`` y *\\*size* no está definido. Lanza un :exc:" +"`MemoryError` si falla la asignación de memoria." #: ../Doc/c-api/unicode.rst:919 -#, fuzzy msgid "" -"Raises a :exc:`ValueError` if *size* is ``NULL`` and the :c:expr:`wchar_t*` " -"string contains null characters." +"Raises a :exc:`ValueError` if *size* is ``NULL`` and the :c:expr:`wchar_t*` string contains null " +"characters." msgstr "" -"Provoca un :exc:`ValueError` si *size* es ``NULL`` y la cadena :c:type:" -"`wchar_t*` contiene caracteres nulos." +"Lanza un :exc:`ValueError` si *size* es ``NULL`` y la cadena :c:expr:`wchar_t*` contiene caracteres " +"nulos." #: ../Doc/c-api/unicode.rst:927 msgid "Built-in Codecs" @@ -1514,59 +1326,48 @@ msgstr "Códecs incorporados" #: ../Doc/c-api/unicode.rst:929 msgid "" -"Python provides a set of built-in codecs which are written in C for speed. " -"All of these codecs are directly usable via the following functions." +"Python provides a set of built-in codecs which are written in C for speed. All of these codecs are " +"directly usable via the following functions." msgstr "" -"Python proporciona un conjunto de códecs integrados que están escritos en C " -"para mayor velocidad. Todos estos códecs se pueden usar directamente a " -"través de las siguientes funciones." +"Python proporciona un conjunto de códecs integrados que están escritos en C para mayor velocidad. " +"Todos estos códecs se pueden usar directamente a través de las siguientes funciones." #: ../Doc/c-api/unicode.rst:932 msgid "" -"Many of the following APIs take two arguments encoding and errors, and they " -"have the same semantics as the ones of the built-in :func:`str` string " -"object constructor." +"Many of the following APIs take two arguments encoding and errors, and they have the same semantics " +"as the ones of the built-in :func:`str` string object constructor." msgstr "" -"Muchas de las siguientes API toman dos argumentos de *encoding* y *errors*, " -"y tienen la misma semántica que las del constructor de objetos de cadena " -"incorporado :func:`str`." +"Muchas de las siguientes API toman dos argumentos de *encoding* y *errors*, y tienen la misma " +"semántica que las del constructor de objetos de cadena incorporado :func:`str`." #: ../Doc/c-api/unicode.rst:936 -#, fuzzy -msgid "" -"Setting encoding to ``NULL`` causes the default encoding to be used which is " -"UTF-8. The file system calls should use :c:func:`PyUnicode_FSConverter` for " -"encoding file names. This uses the :term:`filesystem encoding and error " -"handler` internally." -msgstr "" -"Establecer la codificación en ``NULL`` hace que se use la codificación " -"predeterminada, que es ASCII. Las llamadas al sistema de archivos deben " -"usar :c:func:`PyUnicode_FSConverter` para codificar nombres de archivos. " -"Esto utiliza la variable :c:data:`Py_FileSystemDefaultEncoding` " -"internamente. Esta variable debe tratarse como de solo lectura: en algunos " -"sistemas, será un puntero a una cadena de caracteres estática, en otros, " -"cambiará en tiempo de ejecución (como cuando la aplicación invoca " -"*setlocale*)." +msgid "" +"Setting encoding to ``NULL`` causes the default encoding to be used which is UTF-8. The file " +"system calls should use :c:func:`PyUnicode_FSConverter` for encoding file names. This uses the :" +"term:`filesystem encoding and error handler` internally." +msgstr "" +"Establecer la codificación en ``NULL`` hace que se use la codificación predeterminada, que es " +"UTF-8. Las llamadas al sistema de archivos deben usar :c:func:`PyUnicode_FSConverter` para " +"codificar nombres de archivos. Esto utiliza el :term:`codificador de sistema de archivos y gestor " +"de errores ` internamente." #: ../Doc/c-api/unicode.rst:941 msgid "" -"Error handling is set by errors which may also be set to ``NULL`` meaning to " -"use the default handling defined for the codec. Default error handling for " -"all built-in codecs is \"strict\" (:exc:`ValueError` is raised)." +"Error handling is set by errors which may also be set to ``NULL`` meaning to use the default " +"handling defined for the codec. Default error handling for all built-in codecs is \"strict\" (:exc:" +"`ValueError` is raised)." msgstr "" -"El manejo de errores se establece mediante *errors* que también pueden " -"establecerse en ``NULL``, lo que significa usar el manejo predeterminado " -"definido para el códec. El manejo de errores predeterminado para todos los " -"códecs integrados es \"estricto\" (se lanza :exc:`ValueError`)." +"El manejo de errores se establece mediante *errors* que también pueden establecerse en ``NULL``, lo " +"que significa usar el manejo predeterminado definido para el códec. El manejo de errores " +"predeterminado para todos los códecs integrados es \"estricto\" (se lanza :exc:`ValueError`)." #: ../Doc/c-api/unicode.rst:945 -#, fuzzy msgid "" -"The codecs all use a similar interface. Only deviations from the following " -"generic ones are documented for simplicity." +"The codecs all use a similar interface. Only deviations from the following generic ones are " +"documented for simplicity." msgstr "" -"Todos los códecs usan una interfaz similar. Solo la desviación de las " -"siguientes genéricas se documenta por simplicidad." +"Todos los códecs usan una interfaz similar. Solo las desviaciones de los siguientes genéricos se " +"documentan por simplicidad." #: ../Doc/c-api/unicode.rst:950 msgid "Generic Codecs" @@ -1577,33 +1378,28 @@ msgid "These are the generic codec APIs:" msgstr "Estas son las APIs de códecs genéricos:" #: ../Doc/c-api/unicode.rst:958 -#, fuzzy -msgid "" -"Create a Unicode object by decoding *size* bytes of the encoded string " -"*str*. *encoding* and *errors* have the same meaning as the parameters of " -"the same name in the :func:`str` built-in function. The codec to be used is " -"looked up using the Python codec registry. Return ``NULL`` if an exception " -"was raised by the codec." -msgstr "" -"Crea un objeto Unicode decodificando *size* bytes de la cadena codificada " -"*s*. *encoding* y *errors* tienen el mismo significado que los parámetros " -"del mismo nombre en la función incorporada :func:`str`. El códec que se " -"utilizará se busca utilizando el registro de códec Python. Retorna ``NULL`` " -"si el códec provocó una excepción." +msgid "" +"Create a Unicode object by decoding *size* bytes of the encoded string *str*. *encoding* and " +"*errors* have the same meaning as the parameters of the same name in the :func:`str` built-in " +"function. The codec to be used is looked up using the Python codec registry. Return ``NULL`` if " +"an exception was raised by the codec." +msgstr "" +"Crea un objeto Unicode decodificando *size* bytes de la cadena codificada *str*. *encoding* y " +"*errors* tienen el mismo significado que los parámetros del mismo nombre en la función incorporada :" +"func:`str`. El códec que se utilizará se busca utilizando el registro de códec Python. Retorna " +"``NULL`` si el códec provocó una excepción." #: ../Doc/c-api/unicode.rst:968 msgid "" -"Encode a Unicode object and return the result as Python bytes object. " -"*encoding* and *errors* have the same meaning as the parameters of the same " -"name in the Unicode :meth:`~str.encode` method. The codec to be used is " -"looked up using the Python codec registry. Return ``NULL`` if an exception " -"was raised by the codec." +"Encode a Unicode object and return the result as Python bytes object. *encoding* and *errors* have " +"the same meaning as the parameters of the same name in the Unicode :meth:`~str.encode` method. The " +"codec to be used is looked up using the Python codec registry. Return ``NULL`` if an exception was " +"raised by the codec." msgstr "" -"Codifica un objeto Unicode y retorna el resultado como un objeto de bytes de " -"Python. *encoding* y *errors* tienen el mismo significado que los parámetros " -"del mismo nombre en el método Unicode :meth:`~str.encode`. El códec que se " -"utilizará se busca utilizando el registro de códec Python. Retorna ``NULL`` " -"si el códec provocó una excepción." +"Codifica un objeto Unicode y retorna el resultado como un objeto de bytes de Python. *encoding* y " +"*errors* tienen el mismo significado que los parámetros del mismo nombre en el método Unicode :meth:" +"`~str.encode`. El códec que se utilizará se busca utilizando el registro de códec Python. Retorna " +"``NULL`` si el códec provocó una excepción." #: ../Doc/c-api/unicode.rst:976 msgid "UTF-8 Codecs" @@ -1614,83 +1410,72 @@ msgid "These are the UTF-8 codec APIs:" msgstr "Estas son las APIs del códec UTF-8:" #: ../Doc/c-api/unicode.rst:983 -#, fuzzy msgid "" -"Create a Unicode object by decoding *size* bytes of the UTF-8 encoded string " -"*str*. Return ``NULL`` if an exception was raised by the codec." +"Create a Unicode object by decoding *size* bytes of the UTF-8 encoded string *str*. Return ``NULL`` " +"if an exception was raised by the codec." msgstr "" -"Crea un objeto Unicode decodificando *size* bytes de la cadena codificada " -"UTF-8 *s*. Retorna ``NULL`` si el códec provocó una excepción." +"Crea un objeto Unicode decodificando *size* bytes de la cadena codificada UTF-8 *str*. Retorna " +"``NULL`` si el códec provocó una excepción." #: ../Doc/c-api/unicode.rst:990 msgid "" -"If *consumed* is ``NULL``, behave like :c:func:`PyUnicode_DecodeUTF8`. If " -"*consumed* is not ``NULL``, trailing incomplete UTF-8 byte sequences will " -"not be treated as an error. Those bytes will not be decoded and the number " -"of bytes that have been decoded will be stored in *consumed*." +"If *consumed* is ``NULL``, behave like :c:func:`PyUnicode_DecodeUTF8`. If *consumed* is not " +"``NULL``, trailing incomplete UTF-8 byte sequences will not be treated as an error. Those bytes " +"will not be decoded and the number of bytes that have been decoded will be stored in *consumed*." msgstr "" -"Si *consumed* es ``NULL``, se comporta como :c:func:`PyUnicode_DecodeUTF8`. " -"Si *consumed* no es ``NULL``, las secuencias de bytes UTF-8 incompletas no " -"se tratarán como un error. Esos bytes no serán decodificados y la cantidad " -"de bytes que han sido decodificados se almacenará en *consumed*." +"Si *consumed* es ``NULL``, se comporta como :c:func:`PyUnicode_DecodeUTF8`. Si *consumed* no es " +"``NULL``, las secuencias de bytes UTF-8 incompletas no se tratarán como un error. Esos bytes no " +"serán decodificados y la cantidad de bytes que han sido decodificados se almacenará en *consumed*." #: ../Doc/c-api/unicode.rst:998 msgid "" -"Encode a Unicode object using UTF-8 and return the result as Python bytes " -"object. Error handling is \"strict\". Return ``NULL`` if an exception was " -"raised by the codec." +"Encode a Unicode object using UTF-8 and return the result as Python bytes object. Error handling " +"is \"strict\". Return ``NULL`` if an exception was raised by the codec." msgstr "" -"Codifica un objeto Unicode usando UTF-8 y retorna el resultado como un " -"objeto de bytes de Python. El manejo de errores es \"estricto\". Retorna " -"``NULL`` si el códec provocó una excepción." +"Codifica un objeto Unicode usando UTF-8 y retorna el resultado como un objeto de bytes de Python. " +"El manejo de errores es \"estricto\". Retorna ``NULL`` si el códec provocó una excepción." #: ../Doc/c-api/unicode.rst:1002 ../Doc/c-api/unicode.rst:1017 -msgid "" -"The function fails if the string contains surrogate code points (``U+D800`` " -"- ``U+DFFF``)." -msgstr "" +msgid "The function fails if the string contains surrogate code points (``U+D800`` - ``U+DFFF``)." +msgstr "La función falla si la cadena contiene puntos de código sustitutos (``U+D800`` - ``U+DFFF``)." #: ../Doc/c-api/unicode.rst:1008 msgid "" -"Return a pointer to the UTF-8 encoding of the Unicode object, and store the " -"size of the encoded representation (in bytes) in *size*. The *size* " -"argument can be ``NULL``; in this case no size will be stored. The returned " -"buffer always has an extra null byte appended (not included in *size*), " -"regardless of whether there are any other null code points." +"Return a pointer to the UTF-8 encoding of the Unicode object, and store the size of the encoded " +"representation (in bytes) in *size*. The *size* argument can be ``NULL``; in this case no size " +"will be stored. The returned buffer always has an extra null byte appended (not included in " +"*size*), regardless of whether there are any other null code points." msgstr "" -"Retorna un puntero a la codificación UTF-8 del objeto Unicode y almacena el " -"tamaño de la representación codificada (en bytes) en *size*. El argumento " -"*size* puede ser ``NULL``; en este caso no se almacenará el tamaño. El búfer " -"retornado siempre tiene un byte nulo adicional agregado (no incluido en " -"*size*), independientemente de si hay otros puntos de código nulo." +"Retorna un puntero a la codificación UTF-8 del objeto Unicode y almacena el tamaño de la " +"representación codificada (en bytes) en *size*. El argumento *size* puede ser ``NULL``; en este " +"caso no se almacenará el tamaño. El búfer retornado siempre tiene un byte nulo adicional agregado " +"(no incluido en *size*), independientemente de si hay otros puntos de código nulo." #: ../Doc/c-api/unicode.rst:1014 -msgid "" -"On error, set an exception, set *size* to ``-1`` (if it's not NULL) and " -"return ``NULL``." +msgid "On error, set an exception, set *size* to ``-1`` (if it's not NULL) and return ``NULL``." msgstr "" +"En caso de error, establecer una excepción, establecer *size* en ``-1`` (si no es NULL) y devolver " +"``NULL``." #: ../Doc/c-api/unicode.rst:1020 -#, fuzzy msgid "" -"This caches the UTF-8 representation of the string in the Unicode object, " -"and subsequent calls will return a pointer to the same buffer. The caller " -"is not responsible for deallocating the buffer. The buffer is deallocated " -"and pointers to it become invalid when the Unicode object is garbage " +"This caches the UTF-8 representation of the string in the Unicode object, and subsequent calls will " +"return a pointer to the same buffer. The caller is not responsible for deallocating the buffer. " +"The buffer is deallocated and pointers to it become invalid when the Unicode object is garbage " "collected." msgstr "" -"Esto almacena en caché la representación UTF-8 de la cadena en el objeto " -"Unicode, y las llamadas posteriores retornarán un puntero al mismo búfer. La " -"persona que llama no es responsable de desasignar el búfer." +"Esto almacena en caché la representación UTF-8 de la cadena en el objeto Unicode, y las llamadas " +"posteriores retornarán un puntero al mismo búfer. El llamador no es responsable de desasignar el " +"búfer. El búfer se desasigna y los punteros al mismo se invalidan cuando el objeto Unicode es " +"recolectado por el recolector de basura." #: ../Doc/c-api/unicode.rst:1027 ../Doc/c-api/unicode.rst:1040 msgid "The return type is now ``const char *`` rather of ``char *``." msgstr "El tipo de retorno ahora es ``const char *`` en lugar de ``char *``." #: ../Doc/c-api/unicode.rst:1030 -#, fuzzy msgid "This function is a part of the :ref:`limited API `." -msgstr "Esta función es parte de la :ref:`API limitada `." +msgstr "Esta función es parte de la :ref:`API limitada `." #: ../Doc/c-api/unicode.rst:1036 msgid "As :c:func:`PyUnicode_AsUTF8AndSize`, but does not store the size." @@ -1706,21 +1491,18 @@ msgstr "Estas son las APIs de códecs para UTF-32:" #: ../Doc/c-api/unicode.rst:1053 msgid "" -"Decode *size* bytes from a UTF-32 encoded buffer string and return the " -"corresponding Unicode object. *errors* (if non-``NULL``) defines the error " -"handling. It defaults to \"strict\"." +"Decode *size* bytes from a UTF-32 encoded buffer string and return the corresponding Unicode " +"object. *errors* (if non-``NULL``) defines the error handling. It defaults to \"strict\"." msgstr "" -"Decodifica *size* bytes de una cadena de búfer codificada UTF-32 y retorna " -"el objeto Unicode correspondiente. *errors* (si no es ``NULL``) define el " -"manejo de errores. Su valor predeterminado es \"estricto\"." +"Decodifica *size* bytes de una cadena de búfer codificada UTF-32 y retorna el objeto Unicode " +"correspondiente. *errors* (si no es ``NULL``) define el manejo de errores. Su valor predeterminado " +"es \"estricto\"." #: ../Doc/c-api/unicode.rst:1057 ../Doc/c-api/unicode.rst:1107 -msgid "" -"If *byteorder* is non-``NULL``, the decoder starts decoding using the given " -"byte order::" +msgid "If *byteorder* is non-``NULL``, the decoder starts decoding using the given byte order::" msgstr "" -"Si *byteorder* no es ``NULL``, el decodificador comienza a decodificar " -"utilizando el orden de bytes dado::" +"Si *byteorder* no es ``NULL``, el decodificador comienza a decodificar utilizando el orden de bytes " +"dado::" #: ../Doc/c-api/unicode.rst:1060 ../Doc/c-api/unicode.rst:1110 msgid "" @@ -1728,32 +1510,30 @@ msgid "" "*byteorder == 0: native order\n" "*byteorder == 1: big endian" msgstr "" +"*byteorder == -1: little endian\n" +"*byteorder == 0: native order\n" +"*byteorder == 1: big endian" #: ../Doc/c-api/unicode.rst:1064 msgid "" -"If ``*byteorder`` is zero, and the first four bytes of the input data are a " -"byte order mark (BOM), the decoder switches to this byte order and the BOM " -"is not copied into the resulting Unicode string. If ``*byteorder`` is " -"``-1`` or ``1``, any byte order mark is copied to the output." +"If ``*byteorder`` is zero, and the first four bytes of the input data are a byte order mark (BOM), " +"the decoder switches to this byte order and the BOM is not copied into the resulting Unicode " +"string. If ``*byteorder`` is ``-1`` or ``1``, any byte order mark is copied to the output." msgstr "" -"Si ``*byteorder`` es cero, y los primeros cuatro bytes de los datos de " -"entrada son una marca de orden de bytes (BOM), el decodificador cambia a " -"este orden de bytes y la BOM no se copia en la cadena de caracteres Unicode " -"resultante. Si ``*byteorder`` es ``-1`` o ``1``, cualquier marca de orden de " -"bytes se copia en la salida." +"Si ``*byteorder`` es cero, y los primeros cuatro bytes de los datos de entrada son una marca de " +"orden de bytes (BOM), el decodificador cambia a este orden de bytes y la BOM no se copia en la " +"cadena de caracteres Unicode resultante. Si ``*byteorder`` es ``-1`` o ``1``, cualquier marca de " +"orden de bytes se copia en la salida." #: ../Doc/c-api/unicode.rst:1069 -msgid "" -"After completion, *\\*byteorder* is set to the current byte order at the end " -"of input data." +msgid "After completion, *\\*byteorder* is set to the current byte order at the end of input data." msgstr "" -"Una vez completado, *\\*byteorder* se establece en el orden de bytes actual " -"al final de los datos de entrada." +"Una vez completado, *\\*byteorder* se establece en el orden de bytes actual al final de los datos " +"de entrada." #: ../Doc/c-api/unicode.rst:1072 ../Doc/c-api/unicode.rst:1123 msgid "If *byteorder* is ``NULL``, the codec starts in native order mode." -msgstr "" -"Si *byteorder* es ``NULL``, el códec se inicia en modo de orden nativo." +msgstr "Si *byteorder* es ``NULL``, el códec se inicia en modo de orden nativo." #: ../Doc/c-api/unicode.rst:1074 ../Doc/c-api/unicode.rst:1125 msgid "Return ``NULL`` if an exception was raised by the codec." @@ -1761,28 +1541,25 @@ msgstr "Retorna ``NULL`` si el códec provocó una excepción." #: ../Doc/c-api/unicode.rst:1080 msgid "" -"If *consumed* is ``NULL``, behave like :c:func:`PyUnicode_DecodeUTF32`. If " -"*consumed* is not ``NULL``, :c:func:`PyUnicode_DecodeUTF32Stateful` will not " -"treat trailing incomplete UTF-32 byte sequences (such as a number of bytes " -"not divisible by four) as an error. Those bytes will not be decoded and the " -"number of bytes that have been decoded will be stored in *consumed*." +"If *consumed* is ``NULL``, behave like :c:func:`PyUnicode_DecodeUTF32`. If *consumed* is not " +"``NULL``, :c:func:`PyUnicode_DecodeUTF32Stateful` will not treat trailing incomplete UTF-32 byte " +"sequences (such as a number of bytes not divisible by four) as an error. Those bytes will not be " +"decoded and the number of bytes that have been decoded will be stored in *consumed*." msgstr "" -"Si *consumed* es ``NULL``, se comporta como :c:func:`PyUnicode_DecodeUTF32`. " -"Si *consumed* no es ``NULL``, :c:func:`PyUnicode_DecodeUTF32Stateful` no " -"tratará las secuencias de bytes UTF-32 incompletas finales (como un número " -"de bytes no divisible por cuatro) como un error. Esos bytes no serán " -"decodificados y la cantidad de bytes que han sido decodificados se " -"almacenará en *consumed*." +"Si *consumed* es ``NULL``, se comporta como :c:func:`PyUnicode_DecodeUTF32`. Si *consumed* no es " +"``NULL``, :c:func:`PyUnicode_DecodeUTF32Stateful` no tratará las secuencias de bytes UTF-32 " +"incompletas finales (como un número de bytes no divisible por cuatro) como un error. Esos bytes no " +"serán decodificados y la cantidad de bytes que han sido decodificados se almacenará en *consumed*." #: ../Doc/c-api/unicode.rst:1089 msgid "" -"Return a Python byte string using the UTF-32 encoding in native byte order. " -"The string always starts with a BOM mark. Error handling is \"strict\". " -"Return ``NULL`` if an exception was raised by the codec." +"Return a Python byte string using the UTF-32 encoding in native byte order. The string always " +"starts with a BOM mark. Error handling is \"strict\". Return ``NULL`` if an exception was raised " +"by the codec." msgstr "" -"Retorna una cadena de bytes de Python usando la codificación UTF-32 en orden " -"de bytes nativo. La cadena siempre comienza con una marca BOM. El manejo de " -"errores es \"estricto\". Retorna ``NULL`` si el códec provocó una excepción." +"Retorna una cadena de bytes de Python usando la codificación UTF-32 en orden de bytes nativo. La " +"cadena siempre comienza con una marca BOM. El manejo de errores es \"estricto\". Retorna ``NULL`` " +"si el códec provocó una excepción." #: ../Doc/c-api/unicode.rst:1095 msgid "UTF-16 Codecs" @@ -1794,64 +1571,53 @@ msgstr "Estas son las APIs de códecs para UTF-16:" #: ../Doc/c-api/unicode.rst:1103 msgid "" -"Decode *size* bytes from a UTF-16 encoded buffer string and return the " -"corresponding Unicode object. *errors* (if non-``NULL``) defines the error " -"handling. It defaults to \"strict\"." +"Decode *size* bytes from a UTF-16 encoded buffer string and return the corresponding Unicode " +"object. *errors* (if non-``NULL``) defines the error handling. It defaults to \"strict\"." msgstr "" -"Decodifica *size* bytes de una cadena de caracteres de búfer codificada " -"UTF-16 y retorna el objeto Unicode correspondiente. *errors* (si no es " -"``NULL``) define el manejo de errores. Su valor predeterminado es " -"\"estricto\"." +"Decodifica *size* bytes de una cadena de caracteres de búfer codificada UTF-16 y retorna el objeto " +"Unicode correspondiente. *errors* (si no es ``NULL``) define el manejo de errores. Su valor " +"predeterminado es \"estricto\"." #: ../Doc/c-api/unicode.rst:1114 msgid "" -"If ``*byteorder`` is zero, and the first two bytes of the input data are a " -"byte order mark (BOM), the decoder switches to this byte order and the BOM " -"is not copied into the resulting Unicode string. If ``*byteorder`` is " -"``-1`` or ``1``, any byte order mark is copied to the output (where it will " -"result in either a ``\\ufeff`` or a ``\\ufffe`` character)." +"If ``*byteorder`` is zero, and the first two bytes of the input data are a byte order mark (BOM), " +"the decoder switches to this byte order and the BOM is not copied into the resulting Unicode " +"string. If ``*byteorder`` is ``-1`` or ``1``, any byte order mark is copied to the output (where " +"it will result in either a ``\\ufeff`` or a ``\\ufffe`` character)." msgstr "" -"Si ``*byteorder`` es cero, y los primeros dos bytes de los datos de entrada " -"son una marca de orden de bytes (BOM), el decodificador cambia a este orden " -"de bytes y la BOM no se copia en la cadena de caracteres Unicode resultante. " -"Si ``*byteorder`` es ``-1`` o ``1``, cualquier marca de orden de bytes se " -"copia en la salida (donde dará como resultado un ``\\ufeff`` o un carácter " -"``\\ufffe``)." +"Si ``*byteorder`` es cero, y los primeros dos bytes de los datos de entrada son una marca de orden " +"de bytes (BOM), el decodificador cambia a este orden de bytes y la BOM no se copia en la cadena de " +"caracteres Unicode resultante. Si ``*byteorder`` es ``-1`` o ``1``, cualquier marca de orden de " +"bytes se copia en la salida (donde dará como resultado un ``\\ufeff`` o un carácter ``\\ufffe``)." #: ../Doc/c-api/unicode.rst:1120 -#, fuzzy -msgid "" -"After completion, ``*byteorder`` is set to the current byte order at the end " -"of input data." +msgid "After completion, ``*byteorder`` is set to the current byte order at the end of input data." msgstr "" -"Una vez completado, *\\*byteorder* se establece en el orden de bytes actual " -"al final de los datos de entrada." +"Una vez completado, *\\*byteorder* se establece en el orden de bytes actual al final de los datos " +"de entrada." #: ../Doc/c-api/unicode.rst:1131 msgid "" -"If *consumed* is ``NULL``, behave like :c:func:`PyUnicode_DecodeUTF16`. If " -"*consumed* is not ``NULL``, :c:func:`PyUnicode_DecodeUTF16Stateful` will not " -"treat trailing incomplete UTF-16 byte sequences (such as an odd number of " -"bytes or a split surrogate pair) as an error. Those bytes will not be " -"decoded and the number of bytes that have been decoded will be stored in " -"*consumed*." +"If *consumed* is ``NULL``, behave like :c:func:`PyUnicode_DecodeUTF16`. If *consumed* is not " +"``NULL``, :c:func:`PyUnicode_DecodeUTF16Stateful` will not treat trailing incomplete UTF-16 byte " +"sequences (such as an odd number of bytes or a split surrogate pair) as an error. Those bytes will " +"not be decoded and the number of bytes that have been decoded will be stored in *consumed*." msgstr "" -"Si *consumed* es ``NULL``, se comporta como :c:func:`PyUnicode_DecodeUTF16`. " -"Si *consumed* no es ``NULL``, :c:func:`PyUnicode_DecodeUTF16Stateful` no " -"tratará las secuencias de bytes UTF-16 incompletas finales (como un número " -"impar de bytes o un par sustituto dividido) como un error. Esos bytes no " -"serán decodificados y la cantidad de bytes que han sido decodificados se " -"almacenará en *consumed*." +"Si *consumed* es ``NULL``, se comporta como :c:func:`PyUnicode_DecodeUTF16`. Si *consumed* no es " +"``NULL``, :c:func:`PyUnicode_DecodeUTF16Stateful` no tratará las secuencias de bytes UTF-16 " +"incompletas finales (como un número impar de bytes o un par sustituto dividido) como un error. Esos " +"bytes no serán decodificados y la cantidad de bytes que han sido decodificados se almacenará en " +"*consumed*." #: ../Doc/c-api/unicode.rst:1140 msgid "" -"Return a Python byte string using the UTF-16 encoding in native byte order. " -"The string always starts with a BOM mark. Error handling is \"strict\". " -"Return ``NULL`` if an exception was raised by the codec." +"Return a Python byte string using the UTF-16 encoding in native byte order. The string always " +"starts with a BOM mark. Error handling is \"strict\". Return ``NULL`` if an exception was raised " +"by the codec." msgstr "" -"Retorna una cadena de bytes de Python usando la codificación UTF-16 en orden " -"de bytes nativo. La cadena siempre comienza con una marca BOM. El manejo de " -"errores es \"estricto\". Retorna ``NULL`` si el códec provocó una excepción." +"Retorna una cadena de bytes de Python usando la codificación UTF-16 en orden de bytes nativo. La " +"cadena siempre comienza con una marca BOM. El manejo de errores es \"estricto\". Retorna ``NULL`` " +"si el códec provocó una excepción." #: ../Doc/c-api/unicode.rst:1146 msgid "UTF-7 Codecs" @@ -1862,25 +1628,22 @@ msgid "These are the UTF-7 codec APIs:" msgstr "Estas son las APIs del códec UTF-7:" #: ../Doc/c-api/unicode.rst:1153 -#, fuzzy msgid "" -"Create a Unicode object by decoding *size* bytes of the UTF-7 encoded string " -"*str*. Return ``NULL`` if an exception was raised by the codec." +"Create a Unicode object by decoding *size* bytes of the UTF-7 encoded string *str*. Return " +"``NULL`` if an exception was raised by the codec." msgstr "" -"Crea un objeto Unicode decodificando *size* bytes de la cadena de caracteres " -"codificada UTF-7 *s*. Retorna ``NULL`` si el códec provocó una excepción." +"Crea un objeto Unicode decodificando *size* bytes de la cadena de caracteres codificada UTF-7 " +"*str*. Retorna ``NULL`` si el códec provocó una excepción." #: ../Doc/c-api/unicode.rst:1160 msgid "" -"If *consumed* is ``NULL``, behave like :c:func:`PyUnicode_DecodeUTF7`. If " -"*consumed* is not ``NULL``, trailing incomplete UTF-7 base-64 sections will " -"not be treated as an error. Those bytes will not be decoded and the number " -"of bytes that have been decoded will be stored in *consumed*." +"If *consumed* is ``NULL``, behave like :c:func:`PyUnicode_DecodeUTF7`. If *consumed* is not " +"``NULL``, trailing incomplete UTF-7 base-64 sections will not be treated as an error. Those bytes " +"will not be decoded and the number of bytes that have been decoded will be stored in *consumed*." msgstr "" -"Si *consumed* es ``NULL``, se comporta como :c:func:`PyUnicode_DecodeUTF7`. " -"Si *consumed* no es ``NULL``, las secciones UTF-7 base-64 incompletas no se " -"tratarán como un error. Esos bytes no serán decodificados y la cantidad de " -"bytes que han sido decodificados se almacenará en *consumed*." +"Si *consumed* es ``NULL``, se comporta como :c:func:`PyUnicode_DecodeUTF7`. Si *consumed* no es " +"``NULL``, las secciones UTF-7 base-64 incompletas no se tratarán como un error. Esos bytes no serán " +"decodificados y la cantidad de bytes que han sido decodificados se almacenará en *consumed*." #: ../Doc/c-api/unicode.rst:1167 msgid "Unicode-Escape Codecs" @@ -1891,25 +1654,21 @@ msgid "These are the \"Unicode Escape\" codec APIs:" msgstr "Estas son las APIs de códecs para Unicode escapado:" #: ../Doc/c-api/unicode.rst:1175 -#, fuzzy msgid "" -"Create a Unicode object by decoding *size* bytes of the Unicode-Escape " -"encoded string *str*. Return ``NULL`` if an exception was raised by the " -"codec." +"Create a Unicode object by decoding *size* bytes of the Unicode-Escape encoded string *str*. " +"Return ``NULL`` if an exception was raised by the codec." msgstr "" -"Crea un objeto Unicode decodificando *size* bytes de la cadena codificada " -"Unicode escapada (*Unicode-Escape*) *s*. Retorna ``NULL`` si el códec " -"provocó una excepción." +"Crea un objeto Unicode decodificando *size* bytes de la cadena codificada Unicode escapada " +"(*Unicode-Escape*) *str*. Retorna ``NULL`` si el códec provocó una excepción." #: ../Doc/c-api/unicode.rst:1181 msgid "" -"Encode a Unicode object using Unicode-Escape and return the result as a " -"bytes object. Error handling is \"strict\". Return ``NULL`` if an " -"exception was raised by the codec." +"Encode a Unicode object using Unicode-Escape and return the result as a bytes object. Error " +"handling is \"strict\". Return ``NULL`` if an exception was raised by the codec." msgstr "" -"Codifica un objeto Unicode usando Unicode escapado (*Unicode-Escape*) y " -"retorna el resultado como un objeto de bytes. El manejo de errores es " -"\"estricto\". Retorna ``NULL`` si el códec provocó una excepción." +"Codifica un objeto Unicode usando Unicode escapado (*Unicode-Escape*) y retorna el resultado como " +"un objeto de bytes. El manejo de errores es \"estricto\". Retorna ``NULL`` si el códec provocó una " +"excepción." #: ../Doc/c-api/unicode.rst:1187 msgid "Raw-Unicode-Escape Codecs" @@ -1917,29 +1676,24 @@ msgstr "Códecs para Unicode escapado en bruto" #: ../Doc/c-api/unicode.rst:1189 msgid "These are the \"Raw Unicode Escape\" codec APIs:" -msgstr "" -"Estas son las API del códec Unicode escapado en bruto (*Raw Unicode Escape*):" +msgstr "Estas son las API del códec Unicode escapado en bruto (*Raw Unicode Escape*):" #: ../Doc/c-api/unicode.rst:1195 -#, fuzzy msgid "" -"Create a Unicode object by decoding *size* bytes of the Raw-Unicode-Escape " -"encoded string *str*. Return ``NULL`` if an exception was raised by the " -"codec." +"Create a Unicode object by decoding *size* bytes of the Raw-Unicode-Escape encoded string *str*. " +"Return ``NULL`` if an exception was raised by the codec." msgstr "" -"Crea un objeto Unicode decodificando *size* bytes de la cadena de caracteres " -"codificada Unicode escapada en bruto (*Raw-Unicode-Escape*) *s*. Retorna " -"``NULL`` si el códec provocó una excepción." +"Crea un objeto Unicode decodificando *size* bytes de la cadena de caracteres codificada Unicode " +"escapada en bruto (*Raw-Unicode-Escape*) *str*. Retorna ``NULL`` si el códec provocó una excepción." #: ../Doc/c-api/unicode.rst:1201 msgid "" -"Encode a Unicode object using Raw-Unicode-Escape and return the result as a " -"bytes object. Error handling is \"strict\". Return ``NULL`` if an " -"exception was raised by the codec." +"Encode a Unicode object using Raw-Unicode-Escape and return the result as a bytes object. Error " +"handling is \"strict\". Return ``NULL`` if an exception was raised by the codec." msgstr "" -"Codifica un objeto Unicode usando Unicode escapado en bruto (*Raw-Unicode-" -"Escape*) y retorna el resultado como un objeto de bytes. El manejo de " -"errores es \"estricto\". Retorna ``NULL`` si el códec provocó una excepción." +"Codifica un objeto Unicode usando Unicode escapado en bruto (*Raw-Unicode-Escape*) y retorna el " +"resultado como un objeto de bytes. El manejo de errores es \"estricto\". Retorna ``NULL`` si el " +"códec provocó una excepción." #: ../Doc/c-api/unicode.rst:1207 msgid "Latin-1 Codecs" @@ -1947,32 +1701,27 @@ msgstr "Códecs Latin-1" #: ../Doc/c-api/unicode.rst:1209 msgid "" -"These are the Latin-1 codec APIs: Latin-1 corresponds to the first 256 " -"Unicode ordinals and only these are accepted by the codecs during encoding." +"These are the Latin-1 codec APIs: Latin-1 corresponds to the first 256 Unicode ordinals and only " +"these are accepted by the codecs during encoding." msgstr "" -"Estas son las API del códec Latin-1: Latin-1 corresponde a los primeros 256 " -"ordinales Unicode y solo estos son aceptados por los códecs durante la " -"codificación." +"Estas son las API del códec Latin-1: Latin-1 corresponde a los primeros 256 ordinales Unicode y " +"solo estos son aceptados por los códecs durante la codificación." #: ../Doc/c-api/unicode.rst:1215 -#, fuzzy msgid "" -"Create a Unicode object by decoding *size* bytes of the Latin-1 encoded " -"string *str*. Return ``NULL`` if an exception was raised by the codec." +"Create a Unicode object by decoding *size* bytes of the Latin-1 encoded string *str*. Return " +"``NULL`` if an exception was raised by the codec." msgstr "" -"Crea un objeto Unicode decodificando *size* bytes de la cadena de caracteres " -"codificada en latin-1 *s*. Retorna ``NULL`` si el códec provocó una " -"excepción." +"Crea un objeto Unicode decodificando *size* bytes de la cadena de caracteres codificada en latin-1 " +"*str*. Retorna ``NULL`` si el códec provocó una excepción." #: ../Doc/c-api/unicode.rst:1221 msgid "" -"Encode a Unicode object using Latin-1 and return the result as Python bytes " -"object. Error handling is \"strict\". Return ``NULL`` if an exception was " -"raised by the codec." +"Encode a Unicode object using Latin-1 and return the result as Python bytes object. Error handling " +"is \"strict\". Return ``NULL`` if an exception was raised by the codec." msgstr "" -"Codifica un objeto Unicode usando Latin-1 y retorna el resultado como un " -"objeto de bytes Python. El manejo de errores es \"estricto\". Retorna " -"``NULL`` si el códec provocó una excepción." +"Codifica un objeto Unicode usando Latin-1 y retorna el resultado como un objeto de bytes Python. El " +"manejo de errores es \"estricto\". Retorna ``NULL`` si el códec provocó una excepción." #: ../Doc/c-api/unicode.rst:1227 msgid "ASCII Codecs" @@ -1980,106 +1729,89 @@ msgstr "Códecs ASCII" #: ../Doc/c-api/unicode.rst:1229 msgid "" -"These are the ASCII codec APIs. Only 7-bit ASCII data is accepted. All " -"other codes generate errors." +"These are the ASCII codec APIs. Only 7-bit ASCII data is accepted. All other codes generate errors." msgstr "" -"Estas son las API del códec ASCII. Solo se aceptan datos ASCII de 7 bits. " -"Todos los demás códigos generan errores." +"Estas son las API del códec ASCII. Solo se aceptan datos ASCII de 7 bits. Todos los demás códigos " +"generan errores." #: ../Doc/c-api/unicode.rst:1235 -#, fuzzy msgid "" -"Create a Unicode object by decoding *size* bytes of the ASCII encoded string " -"*str*. Return ``NULL`` if an exception was raised by the codec." +"Create a Unicode object by decoding *size* bytes of the ASCII encoded string *str*. Return " +"``NULL`` if an exception was raised by the codec." msgstr "" -"Crea un objeto Unicode decodificando *size* bytes de la cadena de caracteres " -"codificada ASCII *s*. Retorna ``NULL`` si el códec provocó una excepción." +"Crea un objeto Unicode decodificando *size* bytes de la cadena de caracteres codificada ASCII " +"*str*. Retorna ``NULL`` si el códec provocó una excepción." #: ../Doc/c-api/unicode.rst:1241 msgid "" -"Encode a Unicode object using ASCII and return the result as Python bytes " -"object. Error handling is \"strict\". Return ``NULL`` if an exception was " -"raised by the codec." +"Encode a Unicode object using ASCII and return the result as Python bytes object. Error handling " +"is \"strict\". Return ``NULL`` if an exception was raised by the codec." msgstr "" -"Codifica un objeto Unicode usando ASCII y retorna el resultado como un " -"objeto de bytes de Python. El manejo de errores es \"estricto\". Retorna " -"``NULL`` si el códec provocó una excepción." +"Codifica un objeto Unicode usando ASCII y retorna el resultado como un objeto de bytes de Python. " +"El manejo de errores es \"estricto\". Retorna ``NULL`` si el códec provocó una excepción." #: ../Doc/c-api/unicode.rst:1247 msgid "Character Map Codecs" msgstr "Códecs de mapa de caracteres" #: ../Doc/c-api/unicode.rst:1249 -#, fuzzy -msgid "" -"This codec is special in that it can be used to implement many different " -"codecs (and this is in fact what was done to obtain most of the standard " -"codecs included in the :mod:`!encodings` package). The codec uses mappings " -"to encode and decode characters. The mapping objects provided must support " -"the :meth:`~object.__getitem__` mapping interface; dictionaries and " -"sequences work well." -msgstr "" -"Este códec es especial porque puede usarse para implementar muchos códecs " -"diferentes (y esto es lo que se hizo para obtener la mayoría de los códecs " -"estándar incluidos en el paquete :mod:`encodings`). El códec utiliza mapeo " -"para codificar y decodificar caracteres. Los objetos de mapeo provistos " -"deben soportar la interfaz de mapeo :meth:`__getitem__`; Los diccionarios y " -"las secuencias funcionan bien." +msgid "" +"This codec is special in that it can be used to implement many different codecs (and this is in " +"fact what was done to obtain most of the standard codecs included in the :mod:`!encodings` " +"package). The codec uses mappings to encode and decode characters. The mapping objects provided " +"must support the :meth:`~object.__getitem__` mapping interface; dictionaries and sequences work " +"well." +msgstr "" +"Este códec es especial en el sentido de que puede usarse para implementar muchos códecs diferentes " +"(y de hecho así se hizo para obtener la mayoría de los códecs estándar incluidos en el paquete :mod:" +"`!encodings`). El códec utiliza mapeos para codificar y decodificar caracteres. Los objetos de " +"mapeo proporcionados deben admitir la interfaz de mapeo :meth:`~object.__getitem__`; los " +"diccionarios y las secuencias funcionan bien." #: ../Doc/c-api/unicode.rst:1255 msgid "These are the mapping codec APIs:" msgstr "Estos son las API de códec de mapeo:" #: ../Doc/c-api/unicode.rst:1260 -#, fuzzy msgid "" -"Create a Unicode object by decoding *size* bytes of the encoded string *str* " -"using the given *mapping* object. Return ``NULL`` if an exception was " -"raised by the codec." +"Create a Unicode object by decoding *size* bytes of the encoded string *str* using the given " +"*mapping* object. Return ``NULL`` if an exception was raised by the codec." msgstr "" -"Crea un objeto Unicode decodificando *size* bytes de la cadena de caracteres " -"codificada *s* usando el objeto *mapping* dado. Retorna ``NULL`` si el códec " -"provocó una excepción." +"Crea un objeto Unicode decodificando *size* bytes de la cadena de caracteres codificada *str* " +"usando el objeto *mapping* dado. Retorna ``NULL`` si el códec provocó una excepción." #: ../Doc/c-api/unicode.rst:1264 msgid "" -"If *mapping* is ``NULL``, Latin-1 decoding will be applied. Else *mapping* " -"must map bytes ordinals (integers in the range from 0 to 255) to Unicode " -"strings, integers (which are then interpreted as Unicode ordinals) or " -"``None``. Unmapped data bytes -- ones which cause a :exc:`LookupError`, as " -"well as ones which get mapped to ``None``, ``0xFFFE`` or ``'\\ufffe'``, are " -"treated as undefined mappings and cause an error." -msgstr "" -"Si *mapping* es ``NULL``, se aplicará la decodificación Latin-1. De lo " -"contrario, *mapping* debe asignar bytes ordinales (enteros en el rango de 0 " -"a 255) a cadenas de caracteres Unicode, enteros (que luego se interpretan " -"como ordinales Unicode) o ``None``. Los bytes de datos sin asignar - los que " -"causan un :exc:`LookupError`, así como los que se asignan a ``None``, " -"``0xFFFE`` o ``'\\ ufffe'``, se tratan como asignaciones indefinidas y " -"causan un error." +"If *mapping* is ``NULL``, Latin-1 decoding will be applied. Else *mapping* must map bytes ordinals " +"(integers in the range from 0 to 255) to Unicode strings, integers (which are then interpreted as " +"Unicode ordinals) or ``None``. Unmapped data bytes -- ones which cause a :exc:`LookupError`, as " +"well as ones which get mapped to ``None``, ``0xFFFE`` or ``'\\ufffe'``, are treated as undefined " +"mappings and cause an error." +msgstr "" +"Si *mapping* es ``NULL``, se aplicará la decodificación Latin-1. De lo contrario, *mapping* debe " +"asignar bytes ordinales (enteros en el rango de 0 a 255) a cadenas de caracteres Unicode, enteros " +"(que luego se interpretan como ordinales Unicode) o ``None``. Los bytes de datos sin asignar - los " +"que causan un :exc:`LookupError`, así como los que se asignan a ``None``, ``0xFFFE`` o ``'\\ " +"ufffe'``, se tratan como asignaciones indefinidas y causan un error." #: ../Doc/c-api/unicode.rst:1275 msgid "" -"Encode a Unicode object using the given *mapping* object and return the " -"result as a bytes object. Error handling is \"strict\". Return ``NULL`` if " -"an exception was raised by the codec." +"Encode a Unicode object using the given *mapping* object and return the result as a bytes object. " +"Error handling is \"strict\". Return ``NULL`` if an exception was raised by the codec." msgstr "" -"Codifica un objeto Unicode usando el objeto *mapping* dado y retorna el " -"resultado como un objeto de bytes. El manejo de errores es \"estricto\". " -"Retorna ``NULL`` si el códec provocó una excepción." +"Codifica un objeto Unicode usando el objeto *mapping* dado y retorna el resultado como un objeto de " +"bytes. El manejo de errores es \"estricto\". Retorna ``NULL`` si el códec provocó una excepción." #: ../Doc/c-api/unicode.rst:1279 msgid "" -"The *mapping* object must map Unicode ordinal integers to bytes objects, " -"integers in the range from 0 to 255 or ``None``. Unmapped character " -"ordinals (ones which cause a :exc:`LookupError`) as well as mapped to " -"``None`` are treated as \"undefined mapping\" and cause an error." +"The *mapping* object must map Unicode ordinal integers to bytes objects, integers in the range from " +"0 to 255 or ``None``. Unmapped character ordinals (ones which cause a :exc:`LookupError`) as well " +"as mapped to ``None`` are treated as \"undefined mapping\" and cause an error." msgstr "" -"El objeto *mapping* debe asignar enteros ordinales Unicode a objetos de " -"bytes, enteros en el rango de 0 a 255 o ``None``. Los ordinales de " -"caracteres no asignados (los que causan un :exc:`LookupError`), así como los " -"asignados a ``Ninguno``, se tratan como \"mapeo indefinido\" y causan un " -"error." +"El objeto *mapping* debe asignar enteros ordinales Unicode a objetos de bytes, enteros en el rango " +"de 0 a 255 o ``None``. Los ordinales de caracteres no asignados (los que causan un :exc:" +"`LookupError`), así como los asignados a ``Ninguno``, se tratan como \"mapeo indefinido\" y causan " +"un error." #: ../Doc/c-api/unicode.rst:1285 msgid "The following codec API is special in that maps Unicode to Unicode." @@ -2087,41 +1819,37 @@ msgstr "La siguiente API de códec es especial en que asigna Unicode a Unicode." #: ../Doc/c-api/unicode.rst:1289 msgid "" -"Translate a string by applying a character mapping table to it and return " -"the resulting Unicode object. Return ``NULL`` if an exception was raised by " -"the codec." +"Translate a string by applying a character mapping table to it and return the resulting Unicode " +"object. Return ``NULL`` if an exception was raised by the codec." msgstr "" -"Traduce una cadena de caracteres aplicando una tabla de mapeo y retornando " -"el objeto Unicode resultante. Retorna ``NULL`` cuando el códec provocó una " -"excepción." +"Traduce una cadena de caracteres aplicando una tabla de mapeo y retornando el objeto Unicode " +"resultante. Retorna ``NULL`` cuando el códec provocó una excepción." #: ../Doc/c-api/unicode.rst:1293 msgid "" -"The mapping table must map Unicode ordinal integers to Unicode ordinal " -"integers or ``None`` (causing deletion of the character)." +"The mapping table must map Unicode ordinal integers to Unicode ordinal integers or ``None`` " +"(causing deletion of the character)." msgstr "" -"La tabla de mapeo debe mapear enteros ordinales Unicode a enteros ordinales " -"Unicode o ``None`` (causando la eliminación del carácter)." +"La tabla de mapeo debe mapear enteros ordinales Unicode a enteros ordinales Unicode o ``None`` " +"(causando la eliminación del carácter)." #: ../Doc/c-api/unicode.rst:1296 -#, fuzzy msgid "" -"Mapping tables need only provide the :meth:`~object.__getitem__` interface; " -"dictionaries and sequences work well. Unmapped character ordinals (ones " -"which cause a :exc:`LookupError`) are left untouched and are copied as-is." +"Mapping tables need only provide the :meth:`~object.__getitem__` interface; dictionaries and " +"sequences work well. Unmapped character ordinals (ones which cause a :exc:`LookupError`) are left " +"untouched and are copied as-is." msgstr "" -"Las tablas de mapeo solo necesitan proporcionar la interfaz :meth:" -"`__getitem__`; Los diccionarios y las secuencias funcionan bien. Los " -"ordinales de caracteres no asignados (los que causan un :exc:`LookupError`) " -"se dejan intactos y se copian tal cual." +"Las tablas de mapeo solo necesitan proporcionar la interfaz :meth:`__getitem__`; los diccionarios y " +"las secuencias funcionan bien. Los ordinales de caracteres no asignados (los que causan un :exc:" +"`LookupError`) se dejan intactos y se copian tal cual." #: ../Doc/c-api/unicode.rst:1300 msgid "" -"*errors* has the usual meaning for codecs. It may be ``NULL`` which " -"indicates to use the default error handling." +"*errors* has the usual meaning for codecs. It may be ``NULL`` which indicates to use the default " +"error handling." msgstr "" -"*errors* tiene el significado habitual para los códecs. Puede ser ``NULL``, " -"lo que indica que debe usar el manejo de errores predeterminado." +"*errors* tiene el significado habitual para los códecs. Puede ser ``NULL``, lo que indica que debe " +"usar el manejo de errores predeterminado." #: ../Doc/c-api/unicode.rst:1305 msgid "MBCS codecs for Windows" @@ -2129,59 +1857,50 @@ msgstr "Códecs MBCS para Windows" #: ../Doc/c-api/unicode.rst:1307 msgid "" -"These are the MBCS codec APIs. They are currently only available on Windows " -"and use the Win32 MBCS converters to implement the conversions. Note that " -"MBCS (or DBCS) is a class of encodings, not just one. The target encoding " -"is defined by the user settings on the machine running the codec." +"These are the MBCS codec APIs. They are currently only available on Windows and use the Win32 MBCS " +"converters to implement the conversions. Note that MBCS (or DBCS) is a class of encodings, not " +"just one. The target encoding is defined by the user settings on the machine running the codec." msgstr "" -"Estas son las API de códec MBCS. Actualmente solo están disponibles en " -"Windows y utilizan los convertidores Win32 MBCS para implementar las " -"conversiones. Tenga en cuenta que MBCS (o DBCS) es una clase de " -"codificaciones, no solo una. La codificación de destino está definida por la " +"Estas son las API de códec MBCS. Actualmente solo están disponibles en Windows y utilizan los " +"convertidores Win32 MBCS para implementar las conversiones. Tenga en cuenta que MBCS (o DBCS) es " +"una clase de codificaciones, no solo una. La codificación de destino está definida por la " "configuración del usuario en la máquina que ejecuta el códec." #: ../Doc/c-api/unicode.rst:1314 -#, fuzzy msgid "" -"Create a Unicode object by decoding *size* bytes of the MBCS encoded string " -"*str*. Return ``NULL`` if an exception was raised by the codec." +"Create a Unicode object by decoding *size* bytes of the MBCS encoded string *str*. Return ``NULL`` " +"if an exception was raised by the codec." msgstr "" -"Crea un objeto Unicode decodificando *size* bytes de la cadena de caracteres " -"codificada con MBCS *s*. Retorna ``NULL`` si el códec provocó una excepción." +"Crea un objeto Unicode decodificando *size* bytes de la cadena de caracteres codificada con MBCS " +"*str*. Retorna ``NULL`` si el códec provocó una excepción." #: ../Doc/c-api/unicode.rst:1321 msgid "" -"If *consumed* is ``NULL``, behave like :c:func:`PyUnicode_DecodeMBCS`. If " -"*consumed* is not ``NULL``, :c:func:`PyUnicode_DecodeMBCSStateful` will not " -"decode trailing lead byte and the number of bytes that have been decoded " -"will be stored in *consumed*." +"If *consumed* is ``NULL``, behave like :c:func:`PyUnicode_DecodeMBCS`. If *consumed* is not " +"``NULL``, :c:func:`PyUnicode_DecodeMBCSStateful` will not decode trailing lead byte and the number " +"of bytes that have been decoded will be stored in *consumed*." msgstr "" -"Si *consumed* es ``NULL``, se comporta como :c:func:`PyUnicode_DecodeMBCS`. " -"Si *consumed* no es ``NULL``, :c:func:`PyUnicode_DecodeMBCSStateful` no " -"decodificará el byte inicial y el número de bytes que se han decodificado se " -"almacenará en *consumed*." +"Si *consumed* es ``NULL``, se comporta como :c:func:`PyUnicode_DecodeMBCS`. Si *consumed* no es " +"``NULL``, :c:func:`PyUnicode_DecodeMBCSStateful` no decodificará el byte inicial y el número de " +"bytes que se han decodificado se almacenará en *consumed*." #: ../Doc/c-api/unicode.rst:1329 msgid "" -"Encode a Unicode object using MBCS and return the result as Python bytes " -"object. Error handling is \"strict\". Return ``NULL`` if an exception was " -"raised by the codec." +"Encode a Unicode object using MBCS and return the result as Python bytes object. Error handling is " +"\"strict\". Return ``NULL`` if an exception was raised by the codec." msgstr "" -"Codifica un objeto Unicode usando MBCS y retorna el resultado como un objeto " -"de bytes de Python. El manejo de errores es \"estricto\". Retorna ``NULL`` " -"si el códec provocó una excepción." +"Codifica un objeto Unicode usando MBCS y retorna el resultado como un objeto de bytes de Python. El " +"manejo de errores es \"estricto\". Retorna ``NULL`` si el códec provocó una excepción." #: ../Doc/c-api/unicode.rst:1336 -#, fuzzy msgid "" -"Encode the Unicode object using the specified code page and return a Python " -"bytes object. Return ``NULL`` if an exception was raised by the codec. Use :" -"c:macro:`!CP_ACP` code page to get the MBCS encoder." +"Encode the Unicode object using the specified code page and return a Python bytes object. Return " +"``NULL`` if an exception was raised by the codec. Use :c:macro:`!CP_ACP` code page to get the MBCS " +"encoder." msgstr "" -"Codifica el objeto Unicode utilizando la página de códigos especificada y " -"retorna un objeto de bytes de Python. Retorna ``NULL`` si el códec provocó " -"una excepción. Use la página de códigos :c:data:`CP_ACP` para obtener el " -"codificador MBCS." +"Codifica el objeto Unicode utilizando la página de códigos especificada y retorna un objeto de " +"bytes de Python. Retorna ``NULL`` si el códec provocó una excepción. Use la página de códigos :c:" +"macro:`!CP_ACP` para obtener el codificador MBCS." #: ../Doc/c-api/unicode.rst:1344 msgid "Methods & Slots" @@ -2193,13 +1912,12 @@ msgstr "Métodos y funciones de ranura (*Slot*)" #: ../Doc/c-api/unicode.rst:1352 msgid "" -"The following APIs are capable of handling Unicode objects and strings on " -"input (we refer to them as strings in the descriptions) and return Unicode " -"objects or integers as appropriate." +"The following APIs are capable of handling Unicode objects and strings on input (we refer to them " +"as strings in the descriptions) and return Unicode objects or integers as appropriate." msgstr "" -"Las siguientes API son capaces de manejar objetos Unicode y cadenas de " -"caracteres en la entrada (nos referimos a ellos como cadenas de caracteres " -"en las descripciones) y retorna objetos Unicode o enteros según corresponda." +"Las siguientes API son capaces de manejar objetos Unicode y cadenas de caracteres en la entrada " +"(nos referimos a ellos como cadenas de caracteres en las descripciones) y retorna objetos Unicode o " +"enteros según corresponda." #: ../Doc/c-api/unicode.rst:1356 msgid "They all return ``NULL`` or ``-1`` if an exception occurs." @@ -2207,303 +1925,263 @@ msgstr "Todos retornan ``NULL`` o ``-1`` si ocurre una excepción." #: ../Doc/c-api/unicode.rst:1361 msgid "Concat two strings giving a new Unicode string." -msgstr "" -"Une dos cadenas de caracteres que dan una nueva cadena de caracteres Unicode." +msgstr "Une dos cadenas de caracteres que dan una nueva cadena de caracteres Unicode." #: ../Doc/c-api/unicode.rst:1366 msgid "" -"Split a string giving a list of Unicode strings. If *sep* is ``NULL``, " -"splitting will be done at all whitespace substrings. Otherwise, splits " -"occur at the given separator. At most *maxsplit* splits will be done. If " -"negative, no limit is set. Separators are not included in the resulting " +"Split a string giving a list of Unicode strings. If *sep* is ``NULL``, splitting will be done at " +"all whitespace substrings. Otherwise, splits occur at the given separator. At most *maxsplit* " +"splits will be done. If negative, no limit is set. Separators are not included in the resulting " "list." msgstr "" -"Divide una cadena de caracteres dando una lista de cadenas de caracteres " -"Unicode. Si *sep* es ``NULL``, la división se realizará en todas las " -"subcadenas de espacios en blanco. De lo contrario, las divisiones ocurren en " -"el separador dado. A lo sumo se realizarán *maxsplit* divisiones. Si es " -"negativo, no se establece ningún límite. Los separadores no están incluidos " -"en la lista resultante." +"Divide una cadena de caracteres dando una lista de cadenas de caracteres Unicode. Si *sep* es " +"``NULL``, la división se realizará en todas las subcadenas de espacios en blanco. De lo contrario, " +"las divisiones ocurren en el separador dado. A lo sumo se realizarán *maxsplit* divisiones. Si es " +"negativo, no se establece ningún límite. Los separadores no están incluidos en la lista resultante." #: ../Doc/c-api/unicode.rst:1374 -#, fuzzy msgid "" -"Split a Unicode string at line breaks, returning a list of Unicode strings. " -"CRLF is considered to be one line break. If *keepends* is ``0``, the Line " -"break characters are not included in the resulting strings." +"Split a Unicode string at line breaks, returning a list of Unicode strings. CRLF is considered to " +"be one line break. If *keepends* is ``0``, the Line break characters are not included in the " +"resulting strings." msgstr "" -"Divide una cadena de caracteres Unicode en los saltos de línea, retornando " -"una lista de cadenas de caracteres Unicode. CRLF se considera un salto de " -"línea. Si *keepend* es ``0``, los caracteres de salto de línea no se " -"incluyen en las cadenas de caracteres resultantes." +"Divide una cadena de caracteres Unicode en los saltos de línea, retornando una lista de cadenas de " +"caracteres Unicode. CRLF se considera un salto de línea. Si *keepends* es ``0``, los caracteres de " +"salto de línea no se incluyen en las cadenas de caracteres resultantes." #: ../Doc/c-api/unicode.rst:1381 msgid "" -"Join a sequence of strings using the given *separator* and return the " -"resulting Unicode string." +"Join a sequence of strings using the given *separator* and return the resulting Unicode string." msgstr "" -"Une una secuencia de cadenas de caracteres usando el *separator* dado y " -"retorna la cadena de caracteres Unicode resultante." +"Une una secuencia de cadenas de caracteres usando el *separator* dado y retorna la cadena de " +"caracteres Unicode resultante." #: ../Doc/c-api/unicode.rst:1388 -#, fuzzy msgid "" -"Return ``1`` if *substr* matches ``unicode[start:end]`` at the given tail " -"end (*direction* == ``-1`` means to do a prefix match, *direction* == ``1`` " -"a suffix match), ``0`` otherwise. Return ``-1`` if an error occurred." +"Return ``1`` if *substr* matches ``unicode[start:end]`` at the given tail end (*direction* == " +"``-1`` means to do a prefix match, *direction* == ``1`` a suffix match), ``0`` otherwise. Return " +"``-1`` if an error occurred." msgstr "" -"Retorna ``1`` si *substr* coincide con ``str[start:end]`` en el final de " -"cola dado (*direction* == ``-1`` significa hacer una coincidencia de " -"prefijo, *direction* == ``1`` una coincidencia de sufijo), ``0`` de lo " -"contrario. retorne ``-1`` si ocurrió un error." +"Retorna ``1`` si *substr* coincide con ``unicode[start:end]`` en el final de cola dado (*direction* " +"== ``-1`` significa hacer una coincidencia de prefijo, *direction* == ``1`` una coincidencia de " +"sufijo), ``0`` de lo contrario. Retorna ``-1`` si ocurrió un error." #: ../Doc/c-api/unicode.rst:1396 -#, fuzzy msgid "" -"Return the first position of *substr* in ``unicode[start:end]`` using the " -"given *direction* (*direction* == ``1`` means to do a forward search, " -"*direction* == ``-1`` a backward search). The return value is the index of " -"the first match; a value of ``-1`` indicates that no match was found, and " -"``-2`` indicates that an error occurred and an exception has been set." +"Return the first position of *substr* in ``unicode[start:end]`` using the given *direction* " +"(*direction* == ``1`` means to do a forward search, *direction* == ``-1`` a backward search). The " +"return value is the index of the first match; a value of ``-1`` indicates that no match was found, " +"and ``-2`` indicates that an error occurred and an exception has been set." msgstr "" -"Retorna la primera posición de *substr* en ``str[start:end]`` usando la " -"*direction* dada (*direction* == ``1`` significa hacer una búsqueda hacia " -"adelante, *direction* == ``-1`` una búsqueda hacia atrás). El valor de " -"retorno es el índice de la primera coincidencia; un valor de ``-1`` indica " -"que no se encontró ninguna coincidencia, y ``-2`` indica que se produjo un " -"error y se ha establecido una excepción." +"Retorna la primera posición de *substr* en ``unicode[start:end]`` usando la *direction* dada " +"(*direction* == ``1`` significa hacer una búsqueda hacia adelante, *direction* == ``-1`` una " +"búsqueda hacia atrás). El valor de retorno es el índice de la primera coincidencia; un valor de " +"``-1`` indica que no se encontró ninguna coincidencia, y ``-2`` indica que se produjo un error y se " +"ha establecido una excepción." #: ../Doc/c-api/unicode.rst:1406 -#, fuzzy -msgid "" -"Return the first position of the character *ch* in ``unicode[start:end]`` " -"using the given *direction* (*direction* == ``1`` means to do a forward " -"search, *direction* == ``-1`` a backward search). The return value is the " -"index of the first match; a value of ``-1`` indicates that no match was " -"found, and ``-2`` indicates that an error occurred and an exception has been " -"set." -msgstr "" -"Retorna la primera posición del carácter *ch* en ``str[inicio:fin]`` usando " -"la *direction* dada (*direction* == ``1`` significa hacer una búsqueda hacia " -"adelante, *direction* == ``-1`` una búsqueda hacia atrás). El valor de " -"retorno es el índice de la primera coincidencia; un valor de ``-1`` indica " -"que no se encontró ninguna coincidencia, y ``-2`` indica que se produjo un " -"error y se ha establecido una excepción." - -#: ../Doc/c-api/unicode.rst:1414 -#, fuzzy msgid "" -"*start* and *end* are now adjusted to behave like ``unicode[start:end]``." +"Return the first position of the character *ch* in ``unicode[start:end]`` using the given " +"*direction* (*direction* == ``1`` means to do a forward search, *direction* == ``-1`` a backward " +"search). The return value is the index of the first match; a value of ``-1`` indicates that no " +"match was found, and ``-2`` indicates that an error occurred and an exception has been set." msgstr "" -"*start* y *end* ahora están ajustados para comportarse como ``str[start:" -"end]``." +"Retorna la primera posición del carácter *ch* en ``unicode[start:end]`` usando la *direction* dada " +"(*direction* == ``1`` significa hacer una búsqueda hacia adelante, *direction* == ``-1`` una " +"búsqueda hacia atrás). El valor de retorno es el índice de la primera coincidencia; un valor de " +"``-1`` indica que no se encontró ninguna coincidencia, y ``-2`` indica que se produjo un error y se " +"ha establecido una excepción." + +#: ../Doc/c-api/unicode.rst:1414 +msgid "*start* and *end* are now adjusted to behave like ``unicode[start:end]``." +msgstr "*start* y *end* ahora están ajustados para comportarse como ``unicode[start:end]``." #: ../Doc/c-api/unicode.rst:1421 -#, fuzzy msgid "" -"Return the number of non-overlapping occurrences of *substr* in " -"``unicode[start:end]``. Return ``-1`` if an error occurred." +"Return the number of non-overlapping occurrences of *substr* in ``unicode[start:end]``. Return " +"``-1`` if an error occurred." msgstr "" -"Retorna el número de ocurrencias no superpuestas de *substr* en ``str[start:" -"end]``. Retorna ``-1`` si ocurrió un error." +"Retorna el número de ocurrencias no superpuestas de *substr* en ``unicode[start:end]``. Retorna " +"``-1`` si ocurrió un error." #: ../Doc/c-api/unicode.rst:1428 -#, fuzzy msgid "" -"Replace at most *maxcount* occurrences of *substr* in *unicode* with " -"*replstr* and return the resulting Unicode object. *maxcount* == ``-1`` " -"means replace all occurrences." +"Replace at most *maxcount* occurrences of *substr* in *unicode* with *replstr* and return the " +"resulting Unicode object. *maxcount* == ``-1`` means replace all occurrences." msgstr "" -"Reemplaza como máximo *maxcount* ocurrencias de *substr* en *str* con " -"*replstr* y retorna el objeto Unicode resultante. *maxcount* == ``-1`` " -"significa reemplazar todas las ocurrencias." +"Reemplaza como máximo *maxcount* ocurrencias de *substr* en *unicode* con *replstr* y retorna el " +"objeto Unicode resultante. *maxcount* == ``-1`` significa reemplazar todas las ocurrencias." #: ../Doc/c-api/unicode.rst:1435 msgid "" -"Compare two strings and return ``-1``, ``0``, ``1`` for less than, equal, " -"and greater than, respectively." +"Compare two strings and return ``-1``, ``0``, ``1`` for less than, equal, and greater than, " +"respectively." msgstr "" -"Compara dos cadenas de caracteres y retorna ``-1``, ``0``, ``1`` para menor " -"que, igual y mayor que, respectivamente." +"Compara dos cadenas de caracteres y retorna ``-1``, ``0``, ``1`` para menor que, igual y mayor que, " +"respectivamente." #: ../Doc/c-api/unicode.rst:1438 msgid "" -"This function returns ``-1`` upon failure, so one should call :c:func:" -"`PyErr_Occurred` to check for errors." +"This function returns ``-1`` upon failure, so one should call :c:func:`PyErr_Occurred` to check for " +"errors." msgstr "" -"Esta función retorna ``-1`` en caso de falla, por lo que se debe llamar a :c:" -"func:`PyErr_Occurred` para verificar si hay errores." +"Esta función retorna ``-1`` en caso de falla, por lo que se debe llamar a :c:func:`PyErr_Occurred` " +"para verificar si hay errores." #: ../Doc/c-api/unicode.rst:1444 msgid "" -"Compare a Unicode object with a char buffer which is interpreted as being " -"UTF-8 or ASCII encoded and return true (``1``) if they are equal, or false " -"(``0``) otherwise. If the Unicode object contains surrogate code points " -"(``U+D800`` - ``U+DFFF``) or the C string is not valid UTF-8, false (``0``) " -"is returned." +"Compare a Unicode object with a char buffer which is interpreted as being UTF-8 or ASCII encoded " +"and return true (``1``) if they are equal, or false (``0``) otherwise. If the Unicode object " +"contains surrogate code points (``U+D800`` - ``U+DFFF``) or the C string is not valid UTF-8, false " +"(``0``) is returned." msgstr "" +"Compara un objeto Unicode con un búfer de caracteres que se interpreta como codificado en UTF-8 o " +"ASCII y retorna verdadero (``1``) si son iguales, o falso (``0``) en caso contrario. Si el objeto " +"Unicode contiene puntos de código subrogados (``U+D800`` - ``U+DFFF``) o la cadena C no es UTF-8 " +"válida, se retorna falso (``0``)." #: ../Doc/c-api/unicode.rst:1451 ../Doc/c-api/unicode.rst:1472 msgid "This function does not raise exceptions." msgstr "Esta función no lanza excepciones." #: ../Doc/c-api/unicode.rst:1458 -#, fuzzy msgid "" -"Similar to :c:func:`PyUnicode_EqualToUTF8AndSize`, but compute *string* " -"length using :c:func:`!strlen`. If the Unicode object contains null " -"characters, false (``0``) is returned." +"Similar to :c:func:`PyUnicode_EqualToUTF8AndSize`, but compute *string* length using :c:func:`!" +"strlen`. If the Unicode object contains null characters, false (``0``) is returned." msgstr "" -"Similar a :c:func:`PyUnicode_DecodeLocaleAndSize`, pero calcula la longitud " -"de la cadena de caracteres usando :c:func:`strlen`." +"Similar a :c:func:`PyUnicode_EqualToUTF8AndSize`, pero calcula la longitud de *string* usando :c:" +"func:`!strlen`. Si el objeto Unicode contiene caracteres nulos, se retorna falso (``0``)." #: ../Doc/c-api/unicode.rst:1467 -#, fuzzy msgid "" -"Compare a Unicode object, *unicode*, with *string* and return ``-1``, ``0``, " -"``1`` for less than, equal, and greater than, respectively. It is best to " -"pass only ASCII-encoded strings, but the function interprets the input " -"string as ISO-8859-1 if it contains non-ASCII characters." +"Compare a Unicode object, *unicode*, with *string* and return ``-1``, ``0``, ``1`` for less than, " +"equal, and greater than, respectively. It is best to pass only ASCII-encoded strings, but the " +"function interprets the input string as ISO-8859-1 if it contains non-ASCII characters." msgstr "" -"Compare un objeto Unicode, *uni*, con *string* y retorna ``-1``, ``0``, " -"``1`` para menor que, igual y mayor que, respectivamente. Es mejor pasar " -"solo cadenas de caracteres codificadas en ASCII, pero la función interpreta " -"la cadena de entrada como ISO-8859-1 si contiene caracteres no ASCII." +"Compara un objeto Unicode, *unicode*, con *string* y retorna ``-1``, ``0``, ``1`` para menor que, " +"igual y mayor que, respectivamente. Es mejor pasar solo cadenas de caracteres codificadas en ASCII, " +"pero la función interpreta la cadena de entrada como ISO-8859-1 si contiene caracteres no ASCII." #: ../Doc/c-api/unicode.rst:1477 msgid "Rich compare two Unicode strings and return one of the following:" -msgstr "" -"Comparación enriquecida de dos cadenas de caracteres Unicode y retorna uno " -"de los siguientes:" +msgstr "Comparación enriquecida de dos cadenas de caracteres Unicode y retorna uno de los siguientes:" #: ../Doc/c-api/unicode.rst:1479 msgid "``NULL`` in case an exception was raised" msgstr "``NULL`` en caso de que se produzca una excepción" #: ../Doc/c-api/unicode.rst:1480 -#, fuzzy msgid ":c:data:`Py_True` or :c:data:`Py_False` for successful comparisons" -msgstr ":const:`Py_True` o :const:`Py_False` para comparaciones exitosas" +msgstr ":c:data:`Py_True` o :c:data:`Py_False` para comparaciones exitosas" #: ../Doc/c-api/unicode.rst:1481 -#, fuzzy msgid ":c:data:`Py_NotImplemented` in case the type combination is unknown" -msgstr "" -":const:`Py_NotImplemented` en caso que se desconozca la combinación de tipos" +msgstr ":c:data:`Py_NotImplemented` en caso que se desconozca la combinación de tipos" #: ../Doc/c-api/unicode.rst:1483 -#, fuzzy msgid "" -"Possible values for *op* are :c:macro:`Py_GT`, :c:macro:`Py_GE`, :c:macro:" -"`Py_EQ`, :c:macro:`Py_NE`, :c:macro:`Py_LT`, and :c:macro:`Py_LE`." +"Possible values for *op* are :c:macro:`Py_GT`, :c:macro:`Py_GE`, :c:macro:`Py_EQ`, :c:macro:" +"`Py_NE`, :c:macro:`Py_LT`, and :c:macro:`Py_LE`." msgstr "" -"Los posibles valores para *op* son :const:`Py_GT`, :const:`Py_GE`, :const:" -"`Py_EQ`, :const:`Py_NE`, :const:`Py_LT`, y :const:`Py_LE`." +"Los posibles valores para *op* son :c:macro:`Py_GT`, :c:macro:`Py_GE`, :c:macro:`Py_EQ`, :c:macro:" +"`Py_NE`, :c:macro:`Py_LT`, y :c:macro:`Py_LE`." #: ../Doc/c-api/unicode.rst:1489 -msgid "" -"Return a new string object from *format* and *args*; this is analogous to " -"``format % args``." +msgid "Return a new string object from *format* and *args*; this is analogous to ``format % args``." msgstr "" -"Retorna un nuevo objeto de cadena de caracteres desde *format* y *args*; " -"esto es análogo al ``format % args``." +"Retorna un nuevo objeto de cadena de caracteres desde *format* y *args*; esto es análogo al " +"``format % args``." #: ../Doc/c-api/unicode.rst:1495 -#, fuzzy -msgid "" -"Check whether *substr* is contained in *unicode* and return true or false " -"accordingly." +msgid "Check whether *substr* is contained in *unicode* and return true or false accordingly." msgstr "" -"Comprueba si *element* está contenido en *container* y retorna verdadero o " -"falso en consecuencia." +"Comprueba si *substr* está contenido en *unicode* y retorna verdadero o falso en consecuencia." #: ../Doc/c-api/unicode.rst:1498 -#, fuzzy msgid "" -"*substr* has to coerce to a one element Unicode string. ``-1`` is returned " -"if there was an error." +"*substr* has to coerce to a one element Unicode string. ``-1`` is returned if there was an error." msgstr "" -"*element* tiene que convertir a una cadena de caracteres Unicode. Se retorna " -"``-1`` si hubo un error." +"*substr* tiene que convertirse a una cadena Unicode de un solo elemento. Se retorna ``-1`` si hubo " +"un error." #: ../Doc/c-api/unicode.rst:1504 -#, fuzzy -msgid "" -"Intern the argument :c:expr:`*p_unicode` in place. The argument must be the " -"address of a pointer variable pointing to a Python Unicode string object. " -"If there is an existing interned string that is the same as :c:expr:" -"`*p_unicode`, it sets :c:expr:`*p_unicode` to it (releasing the reference to " -"the old string object and creating a new :term:`strong reference` to the " -"interned string object), otherwise it leaves :c:expr:`*p_unicode` alone and " -"interns it." -msgstr "" -"Interna el argumento *\\*string* en su lugar. El argumento debe ser la " -"dirección de una variable de puntero que apunta a un objeto Unicode de " -"cadena de caracteres Python. Si hay una cadena de caracteres interna " -"existente que es igual a *\\*string*, establece *\\*string* (disminuyendo el " -"recuento de referencias del objeto de cadena de caracteres anterior e " -"incrementando el recuento de referencias del objeto de cadena de caracteres " -"interna), de lo contrario deja solo *\\*string* y lo interna (incrementando " -"su recuento de referencias). (Aclaración: a pesar de que se habla mucho " -"sobre el recuento de referencias, piense en esta función como neutral de " -"recuento de referencia; usted es el propietario del objeto después de la " -"llamada si y solo si lo tenía antes de la llamada)." +msgid "" +"Intern the argument :c:expr:`*p_unicode` in place. The argument must be the address of a pointer " +"variable pointing to a Python Unicode string object. If there is an existing interned string that " +"is the same as :c:expr:`*p_unicode`, it sets :c:expr:`*p_unicode` to it (releasing the reference to " +"the old string object and creating a new :term:`strong reference` to the interned string object), " +"otherwise it leaves :c:expr:`*p_unicode` alone and interns it." +msgstr "" +"Interna el argumento :c:expr:`*p_unicode` en su lugar. El argumento debe ser la dirección de una " +"variable de puntero que apunta a un objeto de cadena Unicode de Python. Si existe una cadena " +"internada que es igual a :c:expr:`*p_unicode`, la establece en :c:expr:`*p_unicode` (liberando la " +"referencia al objeto de cadena anterior y creando una nueva :term:`referencia fuerte` al objeto de " +"cadena internada), de lo contrario, deja :c:expr:`*p_unicode` tal cual y lo interna." #: ../Doc/c-api/unicode.rst:1511 msgid "" -"(Clarification: even though there is a lot of talk about references, think " -"of this function as reference-neutral. You must own the object you pass in; " -"after the call you no longer own the passed-in reference, but you newly own " -"the result.)" +"(Clarification: even though there is a lot of talk about references, think of this function as " +"reference-neutral. You must own the object you pass in; after the call you no longer own the passed-" +"in reference, but you newly own the result.)" msgstr "" +"(Aclaración: aunque se habla mucho de referencias, piense en esta función como de referencia " +"neutral. Debe poseer el objeto que pasa; después de la llamada, ya no posee la referencia pasada, " +"pero ahora posee el resultado)." #: ../Doc/c-api/unicode.rst:1516 msgid "" -"This function never raises an exception. On error, it leaves its argument " -"unchanged without interning it." +"This function never raises an exception. On error, it leaves its argument unchanged without " +"interning it." msgstr "" +"Esta función nunca lanza una excepción. En caso de error, deja su argumento inalterado sin " +"internarlo." #: ../Doc/c-api/unicode.rst:1519 msgid "" -"Instances of subclasses of :py:class:`str` may not be interned, that is, :c:" -"expr:`PyUnicode_CheckExact(*p_unicode)` must be true. If it is not, then -- " -"as with any other error -- the argument is left unchanged." +"Instances of subclasses of :py:class:`str` may not be interned, that is, :c:expr:" +"`PyUnicode_CheckExact(*p_unicode)` must be true. If it is not, then -- as with any other error -- " +"the argument is left unchanged." msgstr "" +"Las instancias de subclases de :py:class:`str` pueden no ser internadas, es decir, :c:expr:" +"`PyUnicode_CheckExact(*p_unicode)` debe ser verdadero. Si no lo es, entonces, como con cualquier " +"otro error, el argumento se deja sin cambios." #: ../Doc/c-api/unicode.rst:1523 msgid "" -"Note that interned strings are not “immortal”. You must keep a reference to " -"the result to benefit from interning." +"Note that interned strings are not “immortal”. You must keep a reference to the result to benefit " +"from interning." msgstr "" +"Tenga en cuenta que las cadenas internadas no son “inmortales”. Debe mantener una referencia al " +"resultado para beneficiarse de la internación." #: ../Doc/c-api/unicode.rst:1529 msgid "" -"A combination of :c:func:`PyUnicode_FromString` and :c:func:" -"`PyUnicode_InternInPlace`, meant for statically allocated strings." +"A combination of :c:func:`PyUnicode_FromString` and :c:func:`PyUnicode_InternInPlace`, meant for " +"statically allocated strings." msgstr "" +"Una combinación de :c:func:`PyUnicode_FromString` y :c:func:`PyUnicode_InternInPlace`, destinada a " +"cadenas asignadas estáticamente." #: ../Doc/c-api/unicode.rst:1532 -#, fuzzy msgid "" -"Return a new (\"owned\") reference to either a new Unicode string object " -"that has been interned, or an earlier interned string object with the same " -"value." +"Return a new (\"owned\") reference to either a new Unicode string object that has been interned, or " +"an earlier interned string object with the same value." msgstr "" -"Una combinación de :c:func:`PyUnicode_FromString` y :c:func:" -"`PyUnicode_InternInPlace`, que retorna un nuevo objeto de cadena de " -"caracteres Unicode que ha sido creado internamente o una nueva " -"referencia(\"propia\") a un objeto de cadena de caracteres interno anterior " -"con el mismo valor." +"Retorna una nueva referencia (\"owned\") a un nuevo objeto de cadena Unicode que ha sido internado, " +"o a un objeto de cadena previamente internado con el mismo valor." #: ../Doc/c-api/unicode.rst:1536 msgid "" -"Python may keep a reference to the result, or make it :term:`immortal`, " -"preventing it from being garbage-collected promptly. For interning an " -"unbounded number of different strings, such as ones coming from user input, " -"prefer calling :c:func:`PyUnicode_FromString` and :c:func:" +"Python may keep a reference to the result, or make it :term:`immortal`, preventing it from being " +"garbage-collected promptly. For interning an unbounded number of different strings, such as ones " +"coming from user input, prefer calling :c:func:`PyUnicode_FromString` and :c:func:" "`PyUnicode_InternInPlace` directly." msgstr "" +"Python puede conservar una referencia al resultado o hacerlo :term:`immortal`, evitando que sea " +"recolectado por el recolector de basura de forma inmediata. Para internar un número no acotado de " +"cadenas diferentes, como las que provienen de la entrada del usuario, se recomienda llamar " +"directamente a :c:func:`PyUnicode_FromString` y :c:func:`PyUnicode_InternInPlace`." #: ../Doc/c-api/unicode.rst:1544 msgid "Strings interned this way are made :term:`immortal`." -msgstr "" +msgstr "Las cadenas internadas de esta manera se vuelven :term:`immortal`." 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/_base.txt b/dictionaries/_base.txt index b60c7f9046..dd8c582056 100644 --- a/dictionaries/_base.txt +++ b/dictionaries/_base.txt @@ -6,6 +6,7 @@ Adam Addison Adler Adviértase +agen Ahlstrom aleatoriamente aleatorizar diff --git a/dictionaries/c-api_unicode.txt b/dictionaries/c-api_unicode.txt index cbab1f6b63..8a689279d5 100644 --- a/dictionaries/c-api_unicode.txt +++ b/dictionaries/c-api_unicode.txt @@ -1 +1,3 @@ +owned void +xD 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/reference_datamodel.txt b/dictionaries/reference_datamodel.txt index 54eab3418d..35dcacf833 100644 --- a/dictionaries/reference_datamodel.txt +++ b/dictionaries/reference_datamodel.txt @@ -1,4 +1,5 @@ argcount +attributes awaitable classcell consts 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/extending/embedding.po b/extending/embedding.po index d3008101d8..d60419a8dd 100644 --- a/extending/embedding.po +++ b/extending/embedding.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: 2020-06-24 23:14+0200\n" +"PO-Revision-Date: 2024-11-30 20:35-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.5\n" #: ../Doc/extending/embedding.rst:8 msgid "Embedding Python in Another Application" @@ -160,6 +161,40 @@ msgid "" " Py_ExitStatusException(status);\n" "}" msgstr "" +"#define PY_SSIZE_T_CLEAN\n" +"#include \n" +"\n" +"int\n" +"main(int argc, char *argv[])\n" +"{\n" +" PyStatus status;\n" +" PyConfig config;\n" +" PyConfig_InitPythonConfig(&config);\n" +"\n" +" /* optional but recommended */\n" +" status = PyConfig_SetBytesString(&config, &config.program_name, " +"argv[0]);\n" +" if (PyStatus_Exception(status)) {\n" +" goto exception;\n" +" }\n" +"\n" +" status = Py_InitializeFromConfig(&config);\n" +" if (PyStatus_Exception(status)) {\n" +" goto exception;\n" +" }\n" +" PyConfig_Clear(&config);\n" +"\n" +" PyRun_SimpleString(\"from time import time,ctime\\n\"\n" +" \"print('Today is', ctime(time()))\\n\");\n" +" if (Py_FinalizeEx() < 0) {\n" +" exit(120);\n" +" }\n" +" return 0;\n" +"\n" +" exception:\n" +" PyConfig_Clear(&config);\n" +" Py_ExitStatusException(status);\n" +"}" #: ../Doc/extending/embedding.rst:92 msgid "" @@ -168,9 +203,12 @@ msgid "" "3.13, but we keep it here for backward compatibility. See :ref:`arg-parsing-" "string-and-buffers` for a description of this macro." msgstr "" +"``#define PY_SSIZE_T_CLEAN`` se usaba para indicar que ``Py_ssize_t`` debería " +"usarse en algunas APIs en lugar de ``int``. No es necesario desde Python " +"3.13, pero lo mantenemos aquí por compatibilidad. Ver :ref:`arg-parsing-" +"string-and-buffers` para una descripción de esta macro." #: ../Doc/extending/embedding.rst:97 -#, fuzzy msgid "" "Setting :c:member:`PyConfig.program_name` should be called before :c:func:" "`Py_InitializeFromConfig` to inform the interpreter about paths to Python " @@ -184,16 +222,16 @@ msgid "" "`PyRun_SimpleFile` function, which saves you the trouble of allocating " "memory space and loading the file contents." msgstr "" -"La función :c:func:`Py_SetProgramName` debe llamarse antes de :c:func:" -"`Py_Initialize` para informar al intérprete sobre las rutas a las " -"bibliotecas de tiempo de ejecución de Python. A continuación, el intérprete " -"de Python se inicializa con :c:func:`Py_Initialize`, seguido de la ejecución " -"de un script Python codificado que imprime la fecha y la hora. Luego, la " -"llamada :c:func:`Py_FinalizeEx` cierra el intérprete, seguido por el final " -"del programa. En un programa real, es posible que desee obtener el script de " -"Python de otra fuente, tal vez una rutina de editor de texto, un archivo o " -"una base de datos. Obtener el código Python de un archivo se puede hacer " -"mejor usando la función :c:func:`PyRun_SimpleFile`, que le ahorra la " +"La configuración :c:member:`PyConfig.program_name` debe llamarse antes de :c:" +"func:`Py_InitializeFromConfig` para informar al intérprete sobre las rutas a " +"las bibliotecas de tiempo de ejecución de Python. A continuación, el " +"intérprete de Python se inicializa con :c:func:`Py_Initialize`, seguido de " +"la ejecución de un script Python codificado que imprime la fecha y la hora. " +"Luego, la llamada :c:func:`Py_FinalizeEx` cierra el intérprete, seguido por " +"el final del programa. En un programa real, es posible que desee obtener el " +"script de Python de otra fuente, tal vez una rutina de editor de texto, un " +"archivo o una base de datos. Obtener el código Python de un archivo se puede " +"hacer mejor usando la función :c:func:`PyRun_SimpleFile`, que le ahorra la " "molestia de asignar espacio de memoria y cargar el contenido del archivo." #: ../Doc/extending/embedding.rst:112 @@ -383,6 +421,78 @@ msgid "" " return 0;\n" "}\n" msgstr "" +"#define PY_SSIZE_T_CLEAN\n" +"#include \n" +"\n" +"int\n" +"main(int argc, char *argv[])\n" +"{\n" +" PyObject *pName, *pModule, *pFunc;\n" +" PyObject *pArgs, *pValue;\n" +" int i;\n" +"\n" +" if (argc < 3) {\n" +" fprintf(stderr,\"Usage: call pythonfile funcname [args]\\n\");\n" +" return 1;\n" +" }\n" +"\n" +" Py_Initialize();\n" +" pName = PyUnicode_DecodeFSDefault(argv[1]);\n" +" /* Error checking of pName left out */\n" +"\n" +" pModule = PyImport_Import(pName);\n" +" Py_DECREF(pName);\n" +"\n" +" if (pModule != NULL) {\n" +" pFunc = PyObject_GetAttrString(pModule, argv[2]);\n" +" /* pFunc is a new reference */\n" +"\n" +" if (pFunc && PyCallable_Check(pFunc)) {\n" +" pArgs = PyTuple_New(argc - 3);\n" +" for (i = 0; i < argc - 3; ++i) {\n" +" pValue = PyLong_FromLong(atoi(argv[i + 3]));\n" +" if (!pValue) {\n" +" Py_DECREF(pArgs);\n" +" Py_DECREF(pModule);\n" +" fprintf(stderr, \"Cannot convert argument\\n\");\n" +" return 1;\n" +" }\n" +" /* pValue reference stolen here: */\n" +" PyTuple_SetItem(pArgs, i, pValue);\n" +" }\n" +" pValue = PyObject_CallObject(pFunc, pArgs);\n" +" Py_DECREF(pArgs);\n" +" if (pValue != NULL) {\n" +" printf(\"Result of call: %ld\\n\", PyLong_AsLong(pValue));\n" +" Py_DECREF(pValue);\n" +" }\n" +" else {\n" +" Py_DECREF(pFunc);\n" +" Py_DECREF(pModule);\n" +" PyErr_Print();\n" +" fprintf(stderr,\"Call failed\\n\");\n" +" return 1;\n" +" }\n" +" }\n" +" else {\n" +" if (PyErr_Occurred())\n" +" PyErr_Print();\n" +" fprintf(stderr, \"Cannot find function \\\"%s\\\"\\n\", " +"argv[2]);\n" +" }\n" +" Py_XDECREF(pFunc);\n" +" Py_DECREF(pModule);\n" +" }\n" +" else {\n" +" PyErr_Print();\n" +" fprintf(stderr, \"Failed to load \\\"%s\\\"\\n\", argv[1]);\n" +" return 1;\n" +" }\n" +" if (Py_FinalizeEx() < 0) {\n" +" return 120;\n" +" }\n" +" return 0;\n" +"}\n" #: ../Doc/extending/embedding.rst:165 msgid "" @@ -407,6 +517,12 @@ msgid "" " c = c + b\n" " return c" msgstr "" +"def multiply(a,b):\n" +" print(\"Will compute\", a, \"times\", b)\n" +" c = 0\n" +" for i in range(0, a):\n" +" c = c + b\n" +" return c" #: ../Doc/extending/embedding.rst:180 msgid "then the result should be:" @@ -418,6 +534,9 @@ msgid "" "Will compute 3 times 2\n" "Result of call: 6" msgstr "" +"$ call multiply multiply 3 2\n" +"Will compute 3 times 2\n" +"Result of call: 6" #: ../Doc/extending/embedding.rst:188 msgid "" @@ -437,6 +556,10 @@ msgid "" "/* Error checking of pName left out */\n" "pModule = PyImport_Import(pName);" msgstr "" +"Py_Initialize();\n" +"pName = PyUnicode_DecodeFSDefault(argv[1]);\n" +"/* Error checking of pName left out */\n" +"pModule = PyImport_Import(pName);" #: ../Doc/extending/embedding.rst:197 msgid "" @@ -460,6 +583,13 @@ msgid "" "}\n" "Py_XDECREF(pFunc);" msgstr "" +"pFunc = PyObject_GetAttrString(pModule, argv[2]);\n" +"/* pFunc is a new reference */\n" +"\n" +"if (pFunc && PyCallable_Check(pFunc)) {\n" +" ...\n" +"}\n" +"Py_XDECREF(pFunc);" #: ../Doc/extending/embedding.rst:210 msgid "" @@ -477,7 +607,7 @@ msgstr "" #: ../Doc/extending/embedding.rst:216 msgid "pValue = PyObject_CallObject(pFunc, pArgs);" -msgstr "" +msgstr "pValue = PyObject_CallObject(pFunc, pArgs);" #: ../Doc/extending/embedding.rst:218 msgid "" @@ -544,6 +674,33 @@ msgid "" " return PyModule_Create(&EmbModule);\n" "}" msgstr "" +"static int numargs=0;\n" +"\n" +"/* Return the number of arguments of the application command line */\n" +"static PyObject*\n" +"emb_numargs(PyObject *self, PyObject *args)\n" +"{\n" +" if(!PyArg_ParseTuple(args, \":numargs\"))\n" +" return NULL;\n" +" return PyLong_FromLong(numargs);\n" +"}\n" +"\n" +"static PyMethodDef EmbMethods[] = {\n" +" {\"numargs\", emb_numargs, METH_VARARGS,\n" +" \"Return the number of arguments received by the process.\"},\n" +" {NULL, NULL, 0, NULL}\n" +"};\n" +"\n" +"static PyModuleDef EmbModule = {\n" +" PyModuleDef_HEAD_INIT, \"emb\", NULL, -1, EmbMethods,\n" +" NULL, NULL, NULL, NULL\n" +"};\n" +"\n" +"static PyObject*\n" +"PyInit_emb(void)\n" +"{\n" +" return PyModule_Create(&EmbModule);\n" +"}" #: ../Doc/extending/embedding.rst:265 msgid "" @@ -559,16 +716,17 @@ msgid "" "numargs = argc;\n" "PyImport_AppendInittab(\"emb\", &PyInit_emb);" msgstr "" +"numargs = argc;\n" +"PyImport_AppendInittab(\"emb\", &PyInit_emb);" #: ../Doc/extending/embedding.rst:271 -#, fuzzy msgid "" "These two lines initialize the ``numargs`` variable, and make the :func:`!" "emb.numargs` function accessible to the embedded Python interpreter. With " "these extensions, the Python script can do things like" msgstr "" "Estas dos líneas inicializan la variable ``numargs`` y hacen que la función :" -"func:`emb.numargs` sea accesible para el intérprete de Python incorporado. " +"func:`!emb.numargs` sea accesible para el intérprete de Python incorporado. " "Con estas extensiones, el script de Python puede hacer cosas como" #: ../Doc/extending/embedding.rst:275 @@ -576,6 +734,8 @@ msgid "" "import emb\n" "print(\"Number of arguments\", emb.numargs())" msgstr "" +"import emb\n" +"print(\"Number of arguments\", emb.numargs())" #: ../Doc/extending/embedding.rst:280 msgid "" @@ -647,14 +807,17 @@ msgid "" "-I/opt/include/python3.11 -I/opt/include/python3.11 -Wsign-compare -DNDEBUG " "-g -fwrapv -O3 -Wall" msgstr "" +"$ /opt/bin/python3.11-config --cflags\n" +"-I/opt/include/python3.11 -I/opt/include/python3.11 -Wsign-compare -DNDEBUG " +"-g -fwrapv -O3 -Wall" #: ../Doc/extending/embedding.rst:323 -#, fuzzy msgid "" "``pythonX.Y-config --ldflags --embed`` will give you the recommended flags " "when linking:" msgstr "" -"``pythonX.Y-config --ldflags`` le dará las banderas recomendadas al vincular:" +"``pythonX.Y-config --ldflags --embed`` le dará las banderas recomendadas al " +"vincular:" #: ../Doc/extending/embedding.rst:326 msgid "" @@ -662,6 +825,9 @@ msgid "" "-L/opt/lib/python3.11/config-3.11-x86_64-linux-gnu -L/opt/lib -lpython3.11 -" "lpthread -ldl -lutil -lm" msgstr "" +"$ /opt/bin/python3.11-config --ldflags --embed\n" +"-L/opt/lib/python3.11/config-3.11-x86_64-linux-gnu -L/opt/lib -lpython3.11 -" +"lpthread -ldl -lutil -lm" #: ../Doc/extending/embedding.rst:332 msgid "" @@ -703,3 +869,8 @@ msgid "" ">>> sysconfig.get_config_var('LINKFORSHARED')\n" "'-Xlinker -export-dynamic'" msgstr "" +">>> import sysconfig\n" +">>> sysconfig.get_config_var('LIBS')\n" +"'-lpthread -ldl -lutil'\n" +">>> sysconfig.get_config_var('LINKFORSHARED')\n" +"'-Xlinker -export-dynamic'" 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/reference/datamodel.po b/reference/datamodel.po index 4fa9d52c2e..00b47edc63 100644 --- a/reference/datamodel.po +++ b/reference/datamodel.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 23:44-0300\n" -"Last-Translator: Cristián Maureira-Fredes \n" -"Language: es\n" +"PO-Revision-Date: 2026-02-15 16:32-0300\n" +"Last-Translator: Carlos A. Crespo \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.0.1\n" #: ../Doc/reference/datamodel.rst:6 msgid "Data model" @@ -43,7 +44,6 @@ msgstr "" "representado por objetos.)" #: ../Doc/reference/datamodel.rst:35 -#, fuzzy msgid "" "Every object has an identity, a type and a value. An object's *identity* " "never changes once it has been created; you may think of it as the object's " @@ -53,7 +53,7 @@ msgid "" msgstr "" "Cada objeto tiene una identidad, un tipo y un valor. La *identidad* de un " "objeto nunca cambia una vez que ha sido creado; puede pensar en ello como la " -"dirección del objeto en la memoria. El operador ':keyword:`is`' compara la " +"dirección del objeto en la memoria. El operador :keyword:`is` compara la " "identidad de dos objetos; la función :func:`id` retorna un número entero que " "representa su identidad." @@ -138,7 +138,6 @@ msgstr "" "inalcanzables (por lo que siempre debe cerrar los archivos explícitamente)." #: ../Doc/reference/datamodel.rst:82 -#, fuzzy msgid "" "Note that the use of the implementation's tracing or debugging facilities " "may keep objects alive that would normally be collectable. Also note that " @@ -148,11 +147,10 @@ msgstr "" "Tenga en cuenta que el uso de las funciones de rastreo o depuración de la " "implementación puede mantener activos los objetos que normalmente serían " "coleccionables. También tenga en cuenta que la captura de una excepción con " -"una sentencia ':keyword:`try`...\\ :keyword:`except`' puede mantener objetos " +"una sentencia :keyword:`try`...\\ :keyword:`except` puede mantener objetos " "activos." #: ../Doc/reference/datamodel.rst:87 -#, fuzzy msgid "" "Some objects contain references to \"external\" resources such as open files " "or windows. It is understood that these resources are freed when the object " @@ -168,9 +166,10 @@ msgstr "" "objeto es eliminado por el recolector de basura, pero como no se garantiza " "que la recolección de basura suceda, dichos objetos también proporcionan una " "forma explícita de liberar el recurso externo, generalmente un método :meth:" -"`close`. Se recomienda encarecidamente a los programas cerrar explícitamente " -"dichos objetos. La declaración ':keyword:`try`...\\ :keyword:`finally`' y la " -"declaración ':keyword:`with`' proporcionan formas convenientes de hacer esto." +"`!close`. Se recomienda encarecidamente a los programas cerrar " +"explícitamente dichos objetos. La declaración :keyword:`try` ... \\ :keyword:" +"`finally` y la declaración :keyword:`with` proporcionan formas convenientes " +"de hacer esto." #: ../Doc/reference/datamodel.rst:97 msgid "" @@ -194,7 +193,6 @@ msgstr "" "cambia si se cambia ese objeto mutable." #: ../Doc/reference/datamodel.rst:106 -#, fuzzy msgid "" "Types affect almost all aspects of object behavior. Even the importance of " "object identity is affected in some sense: for immutable types, operations " @@ -215,12 +213,15 @@ msgstr "" "sentido: para los tipos inmutables, las operaciones que calculan nuevos " "valores en realidad pueden retornar una referencia a cualquier objeto " "existente con el mismo tipo y valor, mientras que para los objetos mutables " -"esto no está permitido. Por ejemplo, al hacer ``a = 1; b = 1``, ``a`` y " -"``b`` puede o no referirse al mismo objeto con el valor 1, dependiendo de la " -"implementación, pero al hacer ``c = []; d = []``, ``c`` y ``d`` se garantiza " -"que se refieren a dos listas vacías diferentes, únicas y recién creadas. " -"(Tenga en cuenta que ``c = d = []`` asigna el mismo objeto a ambos ``c`` y " -"``d``.)" +"esto no está permitido. Por ejemplo, al hacer ``a = 1; b = 1``, *a* y *b* " +"puede o no referirse al mismo objeto con el valor 1, dependiendo de la " +"implementación. Esto se debe a que :class:`int` es un tipo inmutable, así " +"que la referencia a ``1`` se puede reusar. Este comportamiento depende de la " +"implementación utilizada, así que no se debe confiar en ello, pero es algo " +"que hay que tener en cuenta al utilizar pruebas de identidad de objetos. Sin " +"embargo, al hacer ``c = []; d = []``, *c* y *d* se garantiza que se refieren " +"a dos listas vacías diferentes, únicas y recién creadas. (Tenga en cuenta " +"que ``e = f = []`` asigna el *mismo* objeto a ambos *e* y *f*.)" #: ../Doc/reference/datamodel.rst:124 msgid "The standard type hierarchy" @@ -277,7 +278,6 @@ msgid "NotImplemented" msgstr "NotImplemented" #: ../Doc/reference/datamodel.rst:165 -#, fuzzy msgid "" "This type has a single value. There is a single object with this value. " "This object is accessed through the built-in name :data:`NotImplemented`. " @@ -287,10 +287,10 @@ msgid "" "the operator.) It should not be evaluated in a boolean context." msgstr "" "Este tipo tiene un solo valor. Hay un solo objeto con este valor. Se accede " -"a este objeto a través del nombre integrado ``NotImplemented``. Los métodos " -"numéricos y los métodos de comparación enriquecidos deben retornar este " -"valor si no implementan la operación para los operandos proporcionados. (El " -"intérprete intentará entonces la operación reflejada, o alguna otra " +"a este objeto a través del nombre integrado :data:`NotImplemented`. Los " +"métodos numéricos y los métodos de comparación enriquecidos deben retornar " +"este valor si no implementan la operación para los operandos proporcionados. " +"(El intérprete intentará entonces la operación reflejada, o alguna otra " "alternativa, dependiendo del operador). No debe evaluarse en un contexto " "booleano." @@ -299,14 +299,13 @@ msgid "See :ref:`implementing-the-arithmetic-operations` for more details." msgstr "Vea :ref:`implementing-the-arithmetic-operations` para más detalles." #: ../Doc/reference/datamodel.rst:176 -#, fuzzy msgid "" "Evaluating :data:`NotImplemented` in a boolean context is deprecated. While " "it currently evaluates as true, it will emit a :exc:`DeprecationWarning`. It " "will raise a :exc:`TypeError` in a future version of Python." msgstr "" -"La evaluación de ``NotImplemented`` en un contexto booleano está en desuso. " -"Si bien actualmente se evalúa como verdadero, lanzará un :exc:" +"La evaluación de :data:`NotImplemented` en un contexto booleano está en " +"desuso. Si bien actualmente se evalúa como verdadero, emitirá un :exc:" "`DeprecationWarning`. Lanzará un :exc:`TypeError` en una versión futura de " "Python." @@ -386,7 +385,6 @@ msgid "A sign is shown only when the number is negative." msgstr "Solo se muestra un signo cuando el número es negativo." #: ../Doc/reference/datamodel.rst:222 -#, fuzzy msgid "" "Python distinguishes between integers, floating-point numbers, and complex " "numbers:" @@ -464,7 +462,6 @@ msgid ":class:`numbers.Real` (:class:`float`)" msgstr ":class:`numbers.Real` (:class:`float`)" #: ../Doc/reference/datamodel.rst:271 -#, fuzzy msgid "" "These represent machine-level double precision floating-point numbers. You " "are at the mercy of the underlying machine architecture (and C or Java " @@ -488,7 +485,6 @@ msgid ":class:`numbers.Complex` (:class:`complex`)" msgstr ":class:`numbers.Complex` (:class:`complex`)" #: ../Doc/reference/datamodel.rst:287 -#, fuzzy msgid "" "These represent complex numbers as a pair of machine-level double precision " "floating-point numbers. The same caveats apply as for floating-point " @@ -506,7 +502,6 @@ msgid "Sequences" msgstr "Secuencias" #: ../Doc/reference/datamodel.rst:303 -#, fuzzy msgid "" "These represent finite ordered sets indexed by non-negative numbers. The " "built-in function :func:`len` returns the number of items of a sequence. " @@ -520,10 +515,12 @@ msgstr "" "negativos. La función incorporada :func:`len` retorna el número de elementos " "de una secuencia. Cuando la longitud de una secuencia es *n*, el conjunto de " "índices contiene los números 0, 1, ..., *n*-1. El elemento *i* de la " -"secuencia *a* se selecciona mediante ``a[i]``." +"secuencia *a* se selecciona mediante ``a[i]``. Algunas secuencias, incluidas " +"las secuencias integradas, interpretan los subíndices negativos sumando la " +"longitud de la secuencia. Por ejemplo, ``a[-2]`` es igual a ``a[n-2]``, el " +"penúltimo elemento de la secuencia a con longitud ``n``." #: ../Doc/reference/datamodel.rst:313 -#, fuzzy msgid "" "Sequences also support slicing: ``a[i:j]`` selects all items with index *k* " "such that *i* ``<=`` *k* ``<`` *j*. When used as an expression, a slice is " @@ -531,10 +528,10 @@ msgid "" "applies to negative slice positions." msgstr "" "Las secuencias también admiten segmentación: ``a[i:j]`` selecciona todos los " -"elementos con índice *k* de modo que *i* ``<=`` *k* ``<`` *j*. Cuando se " -"usa como una expresión, un segmento es una secuencia del mismo tipo. Esto " -"implica que el conjunto de índices se vuelve a enumerar para que comience en " -"0." +"elementos con índice *k* de modo que *i* ``<=`` *k* ``<`` *j*. Cuando se usa " +"como una expresión, un segmento es una secuencia del mismo tipo. El " +"comentario anterior sobre los índices negativos también aplica a las " +"posiciones de segmento negativas." #: ../Doc/reference/datamodel.rst:318 msgid "" @@ -626,7 +623,6 @@ msgid "Bytes" msgstr "Bytes" #: ../Doc/reference/datamodel.rst:378 -#, fuzzy msgid "" "A bytes object is an immutable array. The items are 8-bit bytes, " "represented by integers in the range 0 <= x < 256. Bytes literals (like " @@ -635,8 +631,8 @@ msgid "" "`~bytes.decode` method." msgstr "" "Un objeto de bytes es una colección inmutable. Los elementos son bytes de 8 " -"bits, representados por enteros en el rango 0 <= x <256. Literales de bytes " -"(como ``b'abc'``) y el constructor incorporado :func:`bytes()` se puede " +"bits, representados por enteros en el rango 0 <= x < 256. Literales de bytes " +"(como ``b'abc'``) y el constructor incorporado :func:`bytes` se puede " "utilizar para crear objetos de bytes. Además, los objetos de bytes se pueden " "decodificar en cadenas de caracteres a través del método :meth:`~bytes." "decode`." @@ -827,12 +823,11 @@ msgstr "" "lugar de mantener su lugar anterior." #: ../Doc/reference/datamodel.rst:499 -#, fuzzy msgid "" "Dictionaries are mutable; they can be created by the ``{}`` notation (see " "section :ref:`dict`)." msgstr "" -"Los diccionarios son mutables; pueden ser creados por la notación ``{...}`` " +"Los diccionarios son mutables; pueden ser creados por la notación ``{}`` " "(vea la sección :ref:`dict`)." #: ../Doc/reference/datamodel.rst:506 @@ -884,9 +879,8 @@ msgstr "" #: ../Doc/reference/datamodel.rst:545 ../Doc/reference/datamodel.rst:1206 #: ../Doc/reference/datamodel.rst:1403 -#, fuzzy msgid "Special read-only attributes" -msgstr "Atributos especiales:" +msgstr "Atributos especiales de solo lectura" #: ../Doc/reference/datamodel.rst:555 ../Doc/reference/datamodel.rst:589 #: ../Doc/reference/datamodel.rst:981 @@ -899,25 +893,22 @@ msgid "Meaning" msgstr "Significado" #: ../Doc/reference/datamodel.rst:559 -#, fuzzy msgid "" "A reference to the :class:`dictionary ` that holds the function's :ref:" "`global variables ` -- the global namespace of the module in which " "the function was defined." msgstr "" -"Una referencia al diccionario que contiene las variables globales de la " -"función --- el espacio de nombres global del módulo en el que se definió la " -"función." +"Una referencia al :class:`dictionary ` que contiene las :ref:`global " +"variables ` de la función -- el espacio de nombres global del módulo " +"en el que se definió la función." #: ../Doc/reference/datamodel.rst:564 -#, fuzzy msgid "" "``None`` or a :class:`tuple` of cells that contain bindings for the " "function's free variables." msgstr "" -"``None`` o una tupla de celdas que contienen enlaces para las variables " -"libres de la función. Vea a continuación para obtener información sobre el " -"atributo ``cell_contents``." +"``None`` o una :class:`tuple` de celdas que contienen enlaces para las " +"variables libres de la función." #: ../Doc/reference/datamodel.rst:567 msgid "" @@ -928,34 +919,33 @@ msgstr "" "para obtener el valor de la celda, así como para establecer el valor." #: ../Doc/reference/datamodel.rst:571 ../Doc/reference/datamodel.rst:1445 -#, fuzzy msgid "Special writable attributes" -msgstr "Atributos especiales:" +msgstr "Atributos especiales de escritura" #: ../Doc/reference/datamodel.rst:584 -#, fuzzy msgid "Most of these attributes check the type of the assigned value:" -msgstr "" -"La mayoría de los atributos etiquetados \"Escribible\" verifican el tipo del " -"valor asignado." +msgstr "La mayoría de estos atributos verifican el tipo del valor asignado:" #: ../Doc/reference/datamodel.rst:593 -#, fuzzy msgid "The function's documentation string, or ``None`` if unavailable." msgstr "" -"El texto de documentación del módulo, o ``None`` si no está disponible." +"El texto de documentación de la función, o ``None`` si no está disponible." #: ../Doc/reference/datamodel.rst:596 msgid "" "The function's name. See also: :attr:`__name__ attributes `." msgstr "" +"El nombre de la función. Vea también: :attr:`atributos __name__ `." #: ../Doc/reference/datamodel.rst:600 msgid "" "The function's :term:`qualified name`. See also: :attr:`__qualname__ " "attributes `." msgstr "" +"El :term:`qualified name` de la función. Vea también :attr:`atributos " +"__qualname__ `." #: ../Doc/reference/datamodel.rst:606 msgid "" @@ -966,63 +956,60 @@ msgstr "" "disponible." #: ../Doc/reference/datamodel.rst:610 -#, fuzzy msgid "" "A :class:`tuple` containing default :term:`parameter` values for those " "parameters that have defaults, or ``None`` if no parameters have a default " "value." msgstr "" -"Una tupla que contiene valores de argumento predeterminados para aquellos " -"argumentos que tienen valores predeterminados, o ``None`` si ningún " -"argumento tiene un valor predeterminado." +"Una :class:`tuple` que contiene valores de :term:`parameter` predeterminados " +"para aquellos argumentos que tienen valores predeterminados, o ``None`` si " +"ningún parámetro tiene un valor predeterminado." #: ../Doc/reference/datamodel.rst:615 -#, fuzzy msgid "" "The :ref:`code object ` representing the compiled function " "body." -msgstr "El objeto de código que representa el cuerpo de la función compilada." +msgstr "" +"El :ref:`objeto de código ` que representa el cuerpo de la " +"función compilada." #: ../Doc/reference/datamodel.rst:619 -#, fuzzy msgid "" "The namespace supporting arbitrary function attributes. See also: :attr:" "`__dict__ attributes `." -msgstr "El espacio de nombres que admite atributos de funciones arbitrarias." +msgstr "" +"El espacio de nombres que admite atributos de funciones arbitrarias. Vea " +"también: :attr:`atributos __dict__ `." #: ../Doc/reference/datamodel.rst:623 -#, fuzzy msgid "" "A :class:`dictionary ` containing annotations of :term:`parameters " "`. The keys of the dictionary are the parameter names, and " "``'return'`` for the return annotation, if provided. See also: :ref:" "`annotations-howto`." msgstr "" -"Un diccionario que contiene anotaciones de parámetros. Las claves del dict " -"son los nombres de los parámetros, y ``'return'`` para la anotación de " -"retorno, si se proporciona. Para más información sobre trabajar con este " -"atributo, ve :ref:`annotations-howto`." +"Un :class:`diccionario ` que contiene anotaciones de :term:`parámetros " +"`. Las claves del diccionario son los nombres de los parámetros, " +"y ``'return'`` para la anotación de retorno, si se proporciona. Para más " +"información sobre trabajar con este atributo, ve :ref:`annotations-howto`." #: ../Doc/reference/datamodel.rst:630 -#, fuzzy msgid "" "A :class:`dictionary ` containing defaults for keyword-only :term:" "`parameters `." msgstr "" -"Un diccionario que contiene valores predeterminados para parámetros de solo " -"palabras clave." +"Un :class:`diccionario ` que contiene valores predeterminados para :" +"term:`parámetros ` de solo palabras clave." #: ../Doc/reference/datamodel.rst:634 -#, fuzzy msgid "" "A :class:`tuple` containing the :ref:`type parameters ` of a :" "ref:`generic function `." msgstr "" -"Una tupla que contiene el :ref:`type parameters ` de un :ref:" -"`generic function `." +"Un objeto :class:`tuple` que contiene los :ref:`parámetros de tipo ` de una :ref:`función genérica `." #: ../Doc/reference/datamodel.rst:639 -#, fuzzy msgid "" "Function objects also support getting and setting arbitrary attributes, " "which can be used, for example, to attach metadata to functions. Regular " @@ -1031,10 +1018,7 @@ msgstr "" "Los objetos de función también admiten la obtención y configuración de " "atributos arbitrarios, que se pueden usar, por ejemplo, para adjuntar " "metadatos a funciones. La notación de puntos de atributo regular se utiliza " -"para obtener y establecer dichos atributos. *Tenga en cuenta que la " -"implementación actual solo admite atributos de función en funciones " -"definidas por el usuario. Los atributos de función en funciones integradas " -"pueden ser compatibles en el futuro.*" +"para obtener y establecer dichos atributos." #: ../Doc/reference/datamodel.rst:645 msgid "" @@ -1042,6 +1026,9 @@ msgid "" "defined functions. Function attributes on :ref:`built-in functions ` may be supported in the future." msgstr "" +"La implementación actual de CPython solo admite atributos de función en " +"funciones definidas por el usuario. Los atributos de función en :ref:" +"`funciones incorporadas ` se pueden soportar en el futuro." #: ../Doc/reference/datamodel.rst:650 msgid "" @@ -1049,6 +1036,9 @@ msgid "" "its :ref:`code object ` (accessible via the :attr:`~function." "__code__` attribute)." msgstr "" +"Se puede obtener información adicional sobre la definición de una función a " +"partir de su :ref:`código de objeto ` (accesible a través del " +"atributo :attr:`~function.__code__`)." #: ../Doc/reference/datamodel.rst:658 msgid "Instance methods" @@ -1063,19 +1053,21 @@ msgstr "" "cualquier objeto invocable (normalmente una función definida por el usuario)." #: ../Doc/reference/datamodel.rst:675 ../Doc/reference/datamodel.rst:1541 -#, fuzzy msgid "Special read-only attributes:" -msgstr "Atributos especiales:" +msgstr "Atributos especiales de solo lectura:" #: ../Doc/reference/datamodel.rst:680 msgid "" "Refers to the class instance object to which the method is :ref:`bound " "`" msgstr "" +"Hace referencia al objeto de instancia de la clase al que está :ref:" +"`vinculado ` el método" #: ../Doc/reference/datamodel.rst:684 msgid "Refers to the original :ref:`function object `" msgstr "" +"Hace referencia al :ref:`objeto de función ` original" #: ../Doc/reference/datamodel.rst:687 msgid "" @@ -1083,32 +1075,35 @@ msgid "" "__doc__>`). A :class:`string ` if the original function had a " "docstring, else ``None``." msgstr "" +"La documentación del método (igual que :attr:`method.__func__.__doc__ " +"`). Una :class:`cadena de caracteres ` si la función " +"original tenía un docstring, de lo contrario ``None``." #: ../Doc/reference/datamodel.rst:693 msgid "" "The name of the method (same as :attr:`method.__func__.__name__ `)" msgstr "" +"El nombre del método (igual que :attr:`method.__func__.__name__ `)" #: ../Doc/reference/datamodel.rst:697 -#, fuzzy msgid "" "The name of the module the method was defined in, or ``None`` if unavailable." msgstr "" -"El nombre del módulo en el que se definió la función, o ``None`` si no está " +"El nombre del módulo en el que se definió el método, o ``None`` si no está " "disponible." #: ../Doc/reference/datamodel.rst:700 -#, fuzzy msgid "" "Methods also support accessing (but not setting) the arbitrary function " "attributes on the underlying :ref:`function object `." msgstr "" "Los métodos también admiten obtener (más no establecer) los atributos " -"arbitrarios de la función en el objeto de función subyacente." +"arbitrarios de la función en el :ref:`objeto de función ` subyacente." #: ../Doc/reference/datamodel.rst:703 -#, fuzzy msgid "" "User-defined method objects may be created when getting an attribute of a " "class (perhaps via an instance of that class), if that attribute is a user-" @@ -1117,11 +1112,10 @@ msgid "" msgstr "" "Los objetos de métodos definidos por usuarios pueden ser creados al obtener " "el atributo de una clase (probablemente a través de la instancia de dicha " -"clase), si tal atributo es el objeto de una función definida por el usuario " -"o el objeto del método de una clase." +"clase), si tal atributo es un :ref:`objeto de función ` " +"definido por el usuario o un objeto :class:`classmethod`." #: ../Doc/reference/datamodel.rst:710 -#, fuzzy msgid "" "When an instance method object is created by retrieving a user-defined :ref:" "`function object ` from a class via one of its " @@ -1129,27 +1123,25 @@ msgid "" "method object is said to be *bound*. The new method's :attr:`~method." "__func__` attribute is the original function object." msgstr "" -"Cuando un objeto de instancia de método es creado al obtener un objeto de " -"función definida por el usuario desde una clase a través de una de sus " -"instancias, su atributo :attr:`__self__` es la instancia, y el objeto de " -"método se dice que está enlazado. El nuevo atributo de método :attr:" -"`__func__` es el objeto de función original." +"Cuando un objeto de instancia de método es creado al obtener un :ref:`objeto " +"de función ` definida por el usuario desde una clase a " +"través de una de sus instancias, su atributo :attr:`~method.__self__` es la " +"instancia, y el objeto de método se dice que está *enlazado*. El nuevo " +"atributo de método :attr:`__func__` es el objeto de función original." #: ../Doc/reference/datamodel.rst:716 -#, fuzzy msgid "" "When an instance method object is created by retrieving a :class:" "`classmethod` object from a class or instance, its :attr:`~method.__self__` " "attribute is the class itself, and its :attr:`~method.__func__` attribute is " "the function object underlying the class method." msgstr "" -"Cuando un objeto de instancia de método es creado al obtener un objeto de " -"método de clase a partir de una clase o instancia, su atributo :attr:" -"`__self__` es la clase misma, y su atributo :attr:`__func__` es el objeto de " -"función subyacente al método de la clase." +"Cuando un objeto de instancia de método es creado al obtener un objeto :" +"class:`classmethod` a partir de una clase o instancia, su atributo :attr:" +"`~method.__self__` es la clase misma, y su atributo :attr:`~method.__func__` " +"es el objeto de función subyacente al método de la clase." #: ../Doc/reference/datamodel.rst:721 -#, fuzzy msgid "" "When an instance method object is called, the underlying function (:attr:" "`~method.__func__`) is called, inserting the class instance (:attr:`~method." @@ -1159,14 +1151,13 @@ msgid "" "f(x, 1)``." msgstr "" "Cuando el objeto de la instancia de método es invocado, la función " -"subyacente (:attr:`__func__`) es llamada, insertando la instancia de clase (:" -"attr:`__self__`) delante de la lista de argumentos. Por ejemplo, cuando :" -"class:`C` es una clase que contiene la definición de una función :meth:`f`, " -"y ``x`` es una instancia de :class:`C`, invocar ``x.f(1)`` es equivalente a " -"invocar ``C.f(x, 1)``." +"subyacente (:attr:`~method.__func__`) es llamada, insertando la instancia de " +"clase (:attr:`~method.__self__`) delante de la lista de argumentos. Por " +"ejemplo, cuando :class:`!C` es una clase que contiene la definición de una " +"función :meth:`!f`, y ``x`` es una instancia de :class:`!C`, invocar ``x." +"f(1)`` es equivalente a invocar ``C.f(x, 1)``." #: ../Doc/reference/datamodel.rst:728 -#, fuzzy msgid "" "When an instance method object is derived from a :class:`classmethod` " "object, the \"class instance\" stored in :attr:`~method.__self__` will " @@ -1174,10 +1165,11 @@ msgid "" "f(1)`` is equivalent to calling ``f(C,1)`` where ``f`` is the underlying " "function." msgstr "" -"Cuando el objeto de instancia de método es derivado del objeto del método de " -"clase, la “instancia de clase” almacenada en :attr:`__self__` en realidad " -"será la clase misma, de manera que invocar ya sea ``x.f(1)`` o ``C.f(1)`` es " -"equivalente a invocar ``f(C,1)`` donde ``f`` es la función subyacente." +"Cuando el objeto de instancia de método es derivado del objeto :class:" +"`classmethod`, la \"instancia de clase\" almacenada en :attr:`~method." +"__self__` en realidad será la clase misma, de manera que invocar ya sea ``x." +"f(1)`` o ``C.f(1)`` es equivalente a invocar ``f(C,1)`` donde ``f`` es la " +"función subyacente." #: ../Doc/reference/datamodel.rst:733 msgid "" @@ -1185,6 +1177,9 @@ msgid "" "a class instance are not converted to bound methods; this *only* happens " "when the function is an attribute of the class." msgstr "" +"Es importante señalar que las funciones definidas por el usuario que son " +"atributos de una instancia de una clase no se convierten en métodos " +"enlazados; esto *solo* ocurre cuando la función es un atributo de la clase." #: ../Doc/reference/datamodel.rst:740 msgid "Generator functions" @@ -1270,7 +1265,6 @@ msgid "Built-in functions" msgstr "Funciones incorporadas" #: ../Doc/reference/datamodel.rst:803 -#, fuzzy msgid "" "A built-in function object is a wrapper around a C function. Examples of " "built-in functions are :func:`len` and :func:`math.sin` (:mod:`math` is a " @@ -1278,49 +1272,43 @@ msgid "" "determined by the C function. Special read-only attributes:" msgstr "" "Un objeto de función incorporada es un envoltorio (wrapper) alrededor de una " -"función C. Ejemplos de funciones incorporadas son :func:`len` y :func:`math." +"función C. Ejemplos de funciones incorporadas son :func:`len` y :func:`math." "sin` (:mod:`math` es un módulo estándar incorporado). El número y tipo de " "argumentos son determinados por la función C. Atributos especiales de solo " -"lectura: :attr:`__doc__` es la cadena de documentación de la función, o " -"``None`` si no se encuentra disponible; :attr:`~definition.__name__` es el " -"nombre de la función; :attr:`__init__` es establecido como ``None`` (sin " -"embargo ver el siguiente elemento); :attr:`__module__` es el nombre del " -"módulo en el que la función fue definida o ``None`` si no se encuentra " -"disponible." +"lectura:" #: ../Doc/reference/datamodel.rst:808 -#, fuzzy msgid "" ":attr:`!__doc__` is the function's documentation string, or ``None`` if " "unavailable. See :attr:`function.__doc__`." msgstr "" -"El texto de documentación de la función, o ``None`` si no está disponible; " -"no heredado por subclases." +":attr:`!__doc__` es el texto de documentación de la función, o ``None`` si " +"no está disponible. Vea :attr:`function.__doc__`." #: ../Doc/reference/datamodel.rst:810 msgid "" ":attr:`!__name__` is the function's name. See :attr:`function.__name__`." msgstr "" +":attr:`!__name__` es el nombre de la función. Vea :attr:`function.__name__`." #: ../Doc/reference/datamodel.rst:811 msgid ":attr:`!__self__` is set to ``None`` (but see the next item)." msgstr "" +":attr:`!__self__` se establece en ``None`` (pero vea el siguiente punto)." #: ../Doc/reference/datamodel.rst:812 -#, fuzzy msgid "" ":attr:`!__module__` is the name of the module the function was defined in or " "``None`` if unavailable. See :attr:`function.__module__`." msgstr "" -"El nombre del módulo en el que se definió la función, o ``None`` si no está " -"disponible." +":attr:`!__module__` es el nombre del módulo en el que se definió la función " +"o ``None`` si no está disponible. Vea :attr:`function.__module__`." #: ../Doc/reference/datamodel.rst:820 msgid "Built-in methods" msgstr "Métodos incorporados" #: ../Doc/reference/datamodel.rst:827 -#, fuzzy msgid "" "This is really a different disguise of a built-in function, this time " "containing an object passed to the C function as an implicit extra " @@ -1332,17 +1320,17 @@ msgid "" msgstr "" "Éste es realmente un disfraz distinto de una función incorporada, esta vez " "teniendo un objeto que se pasa a la función C como un argumento extra " -"implícito. Un ejemplo de un método incorporado es ``alist.append()``, " +"implícito. Un ejemplo de un método incorporado es ``alist.append()``, " "asumiendo que *alist* es un objeto de lista. En este caso, el atributo " -"especial de solo lectura :attr:`__self__` es establecido al objeto indicado " -"por *alist*." +"especial de solo lectura :attr:`!__self__` es establecido al objeto indicado " +"por *alist*. (El atributo tiene la misma semántica que con :attr:`otros " +"métodos de instancia `.)" #: ../Doc/reference/datamodel.rst:837 msgid "Classes" msgstr "Clases" #: ../Doc/reference/datamodel.rst:839 -#, fuzzy msgid "" "Classes are callable. These objects normally act as factories for new " "instances of themselves, but variations are possible for class types that " @@ -1353,7 +1341,7 @@ msgstr "" "Las clases son invocables. Estos objetos normalmente actúan como fábricas " "para nuevas instancias de sí mismos, pero son posibles variaciones para los " "tipos de clases que anulan :meth:`~object.__new__`. Los argumentos de la " -"llamada se pasan a :meth:`__new__` y, en el caso típico, a :meth:`~object." +"llamada se pasan a :meth:`!__new__` y, en el caso típico, a :meth:`~object." "__init__` para inicializar la nueva instancia." #: ../Doc/reference/datamodel.rst:847 @@ -1373,7 +1361,6 @@ msgid "Modules" msgstr "Módulos" #: ../Doc/reference/datamodel.rst:860 -#, fuzzy msgid "" "Modules are a basic organizational unit of Python code, and are created by " "the :ref:`import system ` as invoked either by the :keyword:" @@ -1388,16 +1375,16 @@ msgid "" "done)." msgstr "" "Los módulos son una unidad básica organizacional en código Python, y son " -"creados por el :ref:`import system ` al ser invocados ya sea " -"por la declaración :keyword:`import`, o invocando funciones como :func:" -"`importlib.import_module` y la incorporada :func:`__import__`. Un objeto de " -"módulo tiene un espacio de nombres implementado por un objeto de diccionario " -"(éste es el diccionario al que hace referencia el atributo de funciones " -"``__globals__`` definido en el módulo). Las referencias de atributos son " -"traducidas a búsquedas en este diccionario, p. ej., ``m.x`` es equivalente a " -"``m.__dict__[“x”]``. Un objeto de módulo no contiene el objeto de código " -"utilizado para iniciar el módulo (ya que no es necesario una vez que la " -"inicialización es realizada)." +"creados por el :ref:`sistema de importación ` al ser invocados " +"ya sea por la declaración :keyword:`import`, o invocando funciones como :" +"func:`importlib.import_module` y la incorporada :func:`__import__`. Un " +"objeto de módulo tiene un espacio de nombres implementado por un objeto :" +"class:`diccionario ` (éste es el diccionario al que hace referencia el " +"atributo de funciones :attr:`~function.__globals__` definido en el módulo). " +"Las referencias de atributos son traducidas a búsquedas en este diccionario, " +"p. ej., ``m.x`` es equivalente a ``m.__dict__[\"x\"]``. Un objeto de módulo " +"no contiene el objeto de código utilizado para iniciar el módulo (ya que no " +"es necesario una vez que la inicialización es realizada)." #: ../Doc/reference/datamodel.rst:873 msgid "" @@ -1488,7 +1475,6 @@ msgid "Custom classes" msgstr "Clases personalizadas" #: ../Doc/reference/datamodel.rst:925 -#, fuzzy msgid "" "Custom class types are typically created by class definitions (see section :" "ref:`class`). A class has a namespace implemented by a dictionary object. " @@ -1503,21 +1489,19 @@ msgid "" "found at :ref:`python_2.3_mro`." msgstr "" "Los tipos de clases personalizadas son normalmente creadas por definiciones " -"de clases (ver sección :ref:`class`). Una clase tiene implementado un " +"de clases (ver sección :ref:`class`). Una clase tiene implementado un " "espacio de nombres por un objeto de diccionario. Las referencias de " "atributos de clase son traducidas a búsquedas en este diccionario, p. ej., " -"``C.x`` es traducido a ``C.__dict__[“x”]`` (aunque hay una serie de enlaces " -"que permiten la ubicación de atributos por otros medios). Cuando el nombre " -"de atributo no es encontrado ahí, la búsqueda de atributo continúa en las " -"clases base. Esta búsqueda de las clases base utiliza la orden de resolución " -"de métodos C3 que se comporta correctamente aún en la presencia de " -"estructuras de herencia ‘diamante’ donde existen múltiples rutas de herencia " -"que llevan a un ancestro común. Detalles adicionales en el MRO C3 utilizados " -"por Python pueden ser encontrados en la documentación correspondiente a la " -"versión 2.3 en https://www.python.org/download/releases/2.3/mro/." +"``C.x`` es traducido a ``C.__dict__[\"x\"]`` (aunque hay una serie de " +"enlaces que permiten la ubicación de atributos por otros medios). Cuando el " +"nombre de atributo no es encontrado ahí, la búsqueda de atributo continúa en " +"las clases base. Esta búsqueda de las clases base utiliza la orden de " +"resolución de métodos C3 que se comporta correctamente aún en la presencia " +"de estructuras de herencia 'diamante' donde existen múltiples rutas de " +"herencia que llevan a un ancestro común. Detalles adicionales en el MRO C3 " +"utilizados por Python pueden ser encontrados en :ref:`python_2.3_mro`." #: ../Doc/reference/datamodel.rst:946 -#, fuzzy msgid "" "When a class attribute reference (for class :class:`!C`, say) would yield a " "class method object, it is transformed into an instance method object whose :" @@ -1528,13 +1512,13 @@ msgid "" "contained in its :attr:`~object.__dict__`." msgstr "" "Cuando la referencia de un atributo de clase (digamos, para la clase :class:" -"`C`) produce un objeto de método de clase, éste es transformado a un objeto " -"de método de instancia cuyo atributo :attr:`__self__` es :class:`C`. Cuando " -"produce un objeto de un método estático, éste es transformado al objeto " -"envuelto por el objeto de método estático. Ver sección :ref:`descriptors` " -"para otra manera en la que los atributos obtenidos de una clase pueden " -"diferir de los que en realidad están contenidos en su :attr:`~object." -"__dict__`." +"`!C`) produce un objeto de método de clase, éste es transformado a un objeto " +"de método de instancia cuyo atributo :attr:`~method.__self__` es :class:`!" +"C`. Cuando produce un objeto :class:`staticmethod`, éste es transformado al " +"objeto envuelto por el objeto de método estático. Ver sección :ref:" +"`descriptors` para otra manera en la que los atributos obtenidos de una " +"clase pueden diferir de los que en realidad están contenidos en su :attr:" +"`~object.__dict__`." #: ../Doc/reference/datamodel.rst:957 msgid "" @@ -1553,21 +1537,24 @@ msgstr "" "instancia de clase (ver a continuación)." #: ../Doc/reference/datamodel.rst:965 ../Doc/reference/datamodel.rst:1112 -#, fuzzy msgid "Special attributes" -msgstr "Atributos especiales:" +msgstr "Atributos especiales" #: ../Doc/reference/datamodel.rst:985 msgid "" "The class's name. See also: :attr:`__name__ attributes `." msgstr "" +"El nombre de la clase. Vea también: :attr:`atributos __name__ `." #: ../Doc/reference/datamodel.rst:989 msgid "" "The class's :term:`qualified name`. See also: :attr:`__qualname__ attributes " "`." msgstr "" +"El :term:`qualified name` de la clase. Vea también: :attr:`atributos " +"__qualname__ `." #: ../Doc/reference/datamodel.rst:993 msgid "The name of the module in which the class was defined." @@ -1579,6 +1566,9 @@ msgid "" "of the class's namespace. See also: :attr:`__dict__ attributes `." msgstr "" +"Un :class:`proxy de mapeo ` que proporciona una " +"vista de solo lectura del espacio de nombres de la clase. Vea también: :attr:" +"`atributos __dict__ `." #: ../Doc/reference/datamodel.rst:1001 msgid "" @@ -1586,26 +1576,27 @@ msgid "" "defined as ``class X(A, B, C)``, ``X.__bases__`` will be exactly equal to " "``(A, B, C)``." msgstr "" +"Un objeto :class:`tuple` que contiene las bases de la clase. En la mayoría " +"de los casos, para una clase definida como ``class X(A, B, C)``, ``X." +"__bases__`` será exactamente igual a ``(A, B, C)``." #: ../Doc/reference/datamodel.rst:1006 -#, fuzzy msgid "" "The class's documentation string, or ``None`` if undefined. Not inherited by " "subclasses." msgstr "" -"El texto de documentación de la función, o ``None`` si no está disponible; " -"no heredado por subclases." +"El texto de documentación de la clase, o ``None`` si no está disponible. No " +"heredado por subclases." #: ../Doc/reference/datamodel.rst:1010 -#, fuzzy msgid "" "A dictionary containing :term:`variable annotations ` " "collected during class body execution. For best practices on working with :" "attr:`!__annotations__`, please see :ref:`annotations-howto`." msgstr "" -"Un diccionario conteniendo el :term:`variable annotations ` recopilados durante la ejecución del cuerpo de la clase. Para " -"buenas prácticas sobre trabajar con :attr:`__annotations__`, por favor ve :" +"buenas prácticas sobre trabajar con :attr:`!__annotations__`, por favor ve :" "ref:`annotations-howto`." #: ../Doc/reference/datamodel.rst:1017 @@ -1615,21 +1606,26 @@ msgid "" "attribute may not exist for some classes. Use :func:`inspect." "get_annotations` to retrieve class annotations safely." msgstr "" +"Acceder directamente al atributo :attr:`!__annotations__` de un objeto de " +"clase puede producir resultados incorrectos en la presencia de metaclases. " +"Además, el atributo puede no existir para algunas clases. Use :func:`inspect." +"get_annotations` para recuperar anotaciones de clase de forma segura." #: ../Doc/reference/datamodel.rst:1024 -#, fuzzy msgid "" "A :class:`tuple` containing the :ref:`type parameters ` of a :" "ref:`generic class `." msgstr "" -"Una tupla que contiene el :ref:`type parameters ` de un :ref:" -"`generic class `." +"Una objeto :class:`tuple` que contiene :ref:`parámetros de tipo ` de una :ref:`clase genérica `." #: ../Doc/reference/datamodel.rst:1030 msgid "" "A :class:`tuple` containing names of attributes of this class which are " "assigned through ``self.X`` from any function in its body." msgstr "" +"Un objeto :class:`tuple` que contiene nombres de atributos de esta clase que " +"se asignan a través de ``self.X`` desde cualquier función en su cuerpo." #: ../Doc/reference/datamodel.rst:1036 msgid "" @@ -1637,23 +1633,29 @@ msgid "" "decorators. Setting the :attr:`__module__` attribute removes the :attr:`!" "__firstlineno__` item from the type's dictionary." msgstr "" +"El número de línea de la primer línea de la definición de clase, incluidos " +"los decoradores. Al establecer el atributo :attr:`__module__` se elimina el " +"elemento :attr:`!__firstlineno__` del diccionario del tipo." #: ../Doc/reference/datamodel.rst:1044 msgid "" "The :class:`tuple` of classes that are considered when looking for base " "classes during method resolution." msgstr "" +"El objeto :class:`tuple` de clases que se consideran al buscar clases base " +"durante la resolución del métodos." #: ../Doc/reference/datamodel.rst:1049 -#, fuzzy msgid "Special methods" -msgstr "Nombres especiales de método" +msgstr "Métodos especiales" #: ../Doc/reference/datamodel.rst:1051 msgid "" "In addition to the special attributes described above, all Python classes " "also have the following two methods available:" msgstr "" +"Además de los atributos especiales descritos anteriormente, todas las clases " +"de Python también tienen los siguientes dos métodos disponibles:" #: ../Doc/reference/datamodel.rst:1056 msgid "" @@ -1661,6 +1663,9 @@ msgid "" "resolution order for its instances. It is called at class instantiation, " "and its result is stored in :attr:`~type.__mro__`." msgstr "" +"Este método se puede anular por una metaclase para personalizar el orden de " +"resolución de métodos para sus instancias. Se llama en la instanciación de " +"la clase, y su resultado se almacena en :attr:`~type.__mro__`." #: ../Doc/reference/datamodel.rst:1062 msgid "" @@ -1668,6 +1673,9 @@ msgid "" "method returns a list of all those references still alive. The list is in " "definition order. Example:" msgstr "" +"Cada clase mantiene una lista de referencias débiles a sus subclases " +"inmediatas. Este método retorna una lista de todas esas referencias aún " +"vivas. La lista está en orden de definición. Ejemplo:" #: ../Doc/reference/datamodel.rst:1066 msgid "" @@ -1676,13 +1684,16 @@ msgid "" ">>> A.__subclasses__()\n" "[]" msgstr "" +">>> class A: pass\n" +">>> class B(A): pass\n" +">>> A.__subclasses__()\n" +"[]" #: ../Doc/reference/datamodel.rst:1074 msgid "Class instances" msgstr "Instancias de clase" #: ../Doc/reference/datamodel.rst:1082 -#, fuzzy msgid "" "A class instance is created by calling a class object (see above). A class " "instance has a namespace implemented as a dictionary which is the first " @@ -1705,14 +1716,14 @@ msgstr "" "instancia tiene un atributo con ese nombre, la búsqueda continúa con los " "atributos de la clase. Si se encuentra un atributo de clase que es un objeto " "de función definido por el usuario, se transforma en un objeto de método de " -"instancia cuyo atributo :attr:`__self__` es la instancia. Los objetos de " -"métodos estáticos y de clases también se transforman; consulte más arriba en " -"\"Clases\". Consulte la sección :ref:`descriptors` para conocer otra forma " -"en la que los atributos de una clase recuperados a través de sus instancias " -"pueden diferir de los objetos realmente almacenados en el :attr:`~object." -"__dict__` de la clase. Si no se encuentra ningún atributo de clase y la " -"clase del objeto tiene un método :meth:`~object.__getattr__`, se llama para " -"satisfacer la búsqueda." +"instancia cuyo atributo :attr:`~method.__self__` es la instancia. Los " +"objetos de métodos estáticos y de clases también se transforman; consulte " +"más arriba en \"Clases\". Consulte la sección :ref:`descriptors` para " +"conocer otra forma en la que los atributos de una clase recuperados a través " +"de sus instancias pueden diferir de los objetos realmente almacenados en el :" +"attr:`~object.__dict__` de la clase. Si no se encuentra ningún atributo de " +"clase y la clase del objeto tiene un método :meth:`~object.__getattr__`, se " +"llama para satisfacer la búsqueda." #: ../Doc/reference/datamodel.rst:1098 msgid "" @@ -1737,7 +1748,7 @@ msgstr "" #: ../Doc/reference/datamodel.rst:1120 msgid "The class to which a class instance belongs." -msgstr "" +msgstr "La clase a la que pertenece una instancia de clase." #: ../Doc/reference/datamodel.rst:1124 msgid "" @@ -1745,6 +1756,9 @@ msgid "" "attributes. Not all instances have a :attr:`!__dict__` attribute; see the " "section on :ref:`slots` for more details." msgstr "" +"Un diccionario u otro objeto de mapeo utilizado para almacenar los atributos " +"(escribibles) de un objeto. No todas las instancias tienen un atributo :attr:" +"`!__dict__`; vea la sección sobre :ref:`slots` para más detalles." #: ../Doc/reference/datamodel.rst:1130 msgid "I/O objects (also known as file objects)" @@ -1818,14 +1832,12 @@ msgstr "" "objetos mutables." #: ../Doc/reference/datamodel.rst:1211 -#, fuzzy msgid "The function name" -msgstr "El nombre de la función." +msgstr "El nombre de la función" #: ../Doc/reference/datamodel.rst:1214 -#, fuzzy msgid "The fully qualified function name" -msgstr "El nombre de la función." +msgstr "El nombre de la función completamente calificado" #: ../Doc/reference/datamodel.rst:1219 msgid "" @@ -1833,91 +1845,118 @@ msgid "" "positional-only parameters and parameters with default values) that the " "function has" msgstr "" +"El número total de :term:`parámetros ` posicionales (incluye los " +"parámetros solo posicionales y los parámetros con valores predeterminados) " +"que tiene la función" #: ../Doc/reference/datamodel.rst:1224 msgid "" "The number of positional-only :term:`parameters ` (including " "arguments with default values) that the function has" msgstr "" +"El número de :term:`parámetros ` solo posicionales (incluye " +"argumentos con valores predeterminados) que tiene la función" #: ../Doc/reference/datamodel.rst:1228 msgid "" "The number of keyword-only :term:`parameters ` (including " "arguments with default values) that the function has" msgstr "" +"El número de :term:`parámetros ` de solo palabras clave (incluye " +"argumentos con valores predeterminados) que tiene la función" #: ../Doc/reference/datamodel.rst:1232 msgid "" "The number of :ref:`local variables ` used by the function " "(including parameters)" msgstr "" +"El número de :ref:`variables locales ` utilizadas por la función " +"(incluye los parámetros)" #: ../Doc/reference/datamodel.rst:1236 msgid "" "A :class:`tuple` containing the names of the local variables in the function " "(starting with the parameter names)" msgstr "" +"Un objeto :class:`tuple` que contiene los nombres de las variables locales " +"en la función (empezando por los nombres de los parámetros)" #: ../Doc/reference/datamodel.rst:1240 msgid "" "A :class:`tuple` containing the names of :ref:`local variables ` " "that are referenced by nested functions inside the function" msgstr "" +"Un objeto :class:`tuple` que contiene los nombres de las :ref:`variables " +"locales ` a las que hacen referencia las funciones anidadas dentro " +"de la función" #: ../Doc/reference/datamodel.rst:1244 msgid "A :class:`tuple` containing the names of free variables in the function" msgstr "" +"Un objeto :class:`tuple` que contiene los nombres de las variables libres en " +"la función" #: ../Doc/reference/datamodel.rst:1247 msgid "" "A string representing the sequence of :term:`bytecode` instructions in the " "function" msgstr "" +"Una cadena de caracteres que representa la secuencia de instrucciones :term:" +"`bytecode` en la función" #: ../Doc/reference/datamodel.rst:1251 msgid "" "A :class:`tuple` containing the literals used by the :term:`bytecode` in the " "function" msgstr "" +"Un objeto :class:`tuple` que contiene los literales utilizados por :term:" +"`bytecode` en la función" #: ../Doc/reference/datamodel.rst:1255 msgid "" "A :class:`tuple` containing the names used by the :term:`bytecode` in the " "function" msgstr "" +"Un objeto :class:`tuple` que contiene los nombres utilizados por :term:" +"`bytecode` en la función" #: ../Doc/reference/datamodel.rst:1259 -#, fuzzy msgid "The name of the file from which the code was compiled" -msgstr "El nombre del módulo en el que se definió la clase." +msgstr "El nombre del archivo en el que se compiló el código" #: ../Doc/reference/datamodel.rst:1262 msgid "The line number of the first line of the function" -msgstr "" +msgstr "El número de línea de la primer línea de la función" #: ../Doc/reference/datamodel.rst:1265 msgid "" "A string encoding the mapping from :term:`bytecode` offsets to line numbers. " "For details, see the source code of the interpreter." msgstr "" +"Una cadena de caracteres que codifica la asignación de los desplazamientos " +"de :term:`bytecode` a los números de línea. Para obtener más detalles, vea " +"el código fuente del intérprete." #: ../Doc/reference/datamodel.rst:1268 msgid "" "This attribute of code objects is deprecated, and may be removed in Python " "3.14." msgstr "" +"Este atributo de los objetos de código está obsoleto, y puede ser eliminado " +"en Python 3.14." #: ../Doc/reference/datamodel.rst:1273 msgid "The required stack size of the code object" -msgstr "" +msgstr "El tamaño de pila requerido del objeto de código" #: ../Doc/reference/datamodel.rst:1276 msgid "" "An :class:`integer ` encoding a number of flags for the interpreter." msgstr "" +"Un :class:`entero ` que codifica un número de banderas para el " +"intérprete." #: ../Doc/reference/datamodel.rst:1281 -#, fuzzy msgid "" "The following flag bits are defined for :attr:`~codeobject.co_flags`: bit " "``0x04`` is set if the function uses the ``*arguments`` syntax to accept an " @@ -1927,15 +1966,16 @@ msgid "" "`inspect-module-co-flags` for details on the semantics of each flags that " "might be present." msgstr "" -"Los siguientes bits de bandera son definidos por :attr:`co_flags` : bit " -"``0x04`` es establecido si la función utiliza la sintaxis ``*arguments`` " -"para aceptar un número arbitrario de argumentos posicionales; bit ``0x08`` " -"es establecido si la función utiliza la sintaxis ``**keywords`` para aceptar " -"argumentos de palabras clave arbitrarios; bit ``0x20`` es establecido si la " -"función es un generador." +"Los siguientes bits de bandera son definidos por :attr:`~codeobject." +"co_flags`: el bit ``0x04`` es establecido si la función utiliza la sintaxis " +"``*arguments`` para aceptar un número arbitrario de argumentos posicionales; " +"el bit ``0x08`` es establecido si la función utiliza la sintaxis " +"``**keywords`` para aceptar argumentos de palabras clave arbitrarios; el bit " +"``0x20`` es establecido si la función es un generador. Vea :ref:`inspect-" +"module-co-flags` para más detalles sobre la semántica de cada bandera que " +"pueda estar presente." #: ../Doc/reference/datamodel.rst:1289 -#, fuzzy msgid "" "Future feature declarations (``from __future__ import division``) also use " "bits in :attr:`~codeobject.co_flags` to indicate whether a code object was " @@ -1944,56 +1984,52 @@ msgid "" "``0x1000`` were used in earlier versions of Python." msgstr "" "Declaraciones de características futuras (``from __future__ import " -"division``) también utiliza bits en :attr:`co_flags` para indicar si el " -"objeto de código fue compilado con alguna característica particular " -"habilitada: el bit ``0x2000`` es establecido si la función fue compilada con " -"división futura habilitada; los bits ``0x10`` y ``0x1000`` fueron utilizados " -"en versiones previas de Python." +"division``) también utiliza bits en :attr:`~codeobject.co_flags` para " +"indicar si el objeto de código fue compilado con alguna característica " +"particular habilitada: el bit ``0x2000`` es establecido si la función fue " +"compilada con división futura habilitada; los bits ``0x10`` y ``0x1000`` " +"fueron utilizados en versiones previas de Python." #: ../Doc/reference/datamodel.rst:1295 -#, fuzzy msgid "" "Other bits in :attr:`~codeobject.co_flags` are reserved for internal use." -msgstr "Otros bits en :attr:`co_flags` son reservados para uso interno." +msgstr "" +"Otros bits en :attr:`~codeobject.co_flags` son reservados para uso interno." #: ../Doc/reference/datamodel.rst:1299 -#, fuzzy msgid "" "If a code object represents a function, the first item in :attr:`~codeobject." "co_consts` is the documentation string of the function, or ``None`` if " "undefined." msgstr "" "Si un objeto de código representa una función, el primer elemento en :attr:" -"`co_consts` es la cadena de documentación de la función, o ``None`` si no " -"está definido." +"`~codeobject.co_consts` es la cadena de documentación de la función, o " +"``None`` si no está definido." #: ../Doc/reference/datamodel.rst:1304 -#, fuzzy msgid "Methods on code objects" -msgstr "Objetos de código" +msgstr "Métodos en objetos de código" #: ../Doc/reference/datamodel.rst:1308 -#, fuzzy msgid "" "Returns an iterable over the source code positions of each :term:`bytecode` " "instruction in the code object." msgstr "" "Retorna un iterable sobre las posiciones del código fuente de cada " -"instrucción de código de bytes en el objeto de código." +"instrucción de :term:`bytecode` en el objeto de código." #: ../Doc/reference/datamodel.rst:1311 -#, fuzzy msgid "" "The iterator returns :class:`tuple`\\s containing the ``(start_line, " "end_line, start_column, end_column)``. The *i-th* tuple corresponds to the " "position of the source code that compiled to the *i-th* code unit. Column " "information is 0-indexed utf-8 byte offsets on the given source line." msgstr "" -"El iterador retorna tuplas que contienen ``(start_line, end_line, " -"start_column, end_column)``. La tupla *i-th* corresponde a la posición del " -"código fuente que se compiló en la instrucción *i-th*. La información de la " -"columna son compensaciones de utf-8 bytes indexadas en 0 en la línea de " -"origen dada." +"El iterador retorna objetos :class:`tuple` que contienen ``(start_line, " +"end_line, start_column, end_column)``. La tupla *i-ésima* corresponde a la " +"posición del código fuente que se compiló en la unidad de código *i-ésima*. " +"La información de la columna son desplazamientos de bytes utf-8 indexados en " +"0 en la línea de origen dada." #: ../Doc/reference/datamodel.rst:1317 msgid "" @@ -2055,18 +2091,25 @@ msgid "" "`bytecode`\\s. Each item yielded is a ``(start, end, lineno)`` :class:" "`tuple`:" msgstr "" +"Retorna un iterador que produce información sobre rangos sucesivos de " +"objetos :term:`bytecode`. Cada elemento que se produjo es un objeto :class:" +"`tuple` ``(start, end, lineno)``:" #: ../Doc/reference/datamodel.rst:1345 msgid "" "``start`` (an :class:`int`) represents the offset (inclusive) of the start " "of the :term:`bytecode` range" msgstr "" +"``start`` (un objeto :class:`int`) representa el desplazamiento (inclusivo) " +"del inicio del rango de :term:`bytecode`" #: ../Doc/reference/datamodel.rst:1347 msgid "" "``end`` (an :class:`int`) represents the offset (exclusive) of the end of " "the :term:`bytecode` range" msgstr "" +"``end`` (un objeto :class:`int`) representa el desplazamiento (exclusivo) " +"del final del rango de :term:`bytecode`" #: ../Doc/reference/datamodel.rst:1349 msgid "" @@ -2074,14 +2117,17 @@ msgid "" "`bytecode` range, or ``None`` if the bytecodes in the given range have no " "line number" msgstr "" +"``lineno`` es un objeto :class:`int` que representa el número de línea del " +"rango de :term:`bytecode`, o ``None`` si los códigos de bytes en el rango " +"dado no tienen número de línea" #: ../Doc/reference/datamodel.rst:1353 msgid "The items yielded will have the following properties:" -msgstr "" +msgstr "Los elementos producidos tendrán las siguientes propiedades:" #: ../Doc/reference/datamodel.rst:1355 msgid "The first range yielded will have a ``start`` of 0." -msgstr "" +msgstr "El primer rango producido tendrá un elemento ``start`` de 0." #: ../Doc/reference/datamodel.rst:1356 msgid "" @@ -2089,16 +2135,21 @@ msgid "" "for any pair of :class:`tuple`\\s, the ``start`` of the second will be equal " "to the ``end`` of the first." msgstr "" +"Los rangos ``(start, end)`` serán no decrecientes y consecutivos. Esto es, " +"para cualquier par de objetos :class:`tuple`, el elemento ``start`` del " +"segundo será igual al elemento ``end`` del primero." #: ../Doc/reference/datamodel.rst:1359 msgid "No range will be backwards: ``end >= start`` for all triples." -msgstr "" +msgstr "Ningún rango será inverso: ``end >= start`` para todas las tripletas." #: ../Doc/reference/datamodel.rst:1360 msgid "" "The last :class:`tuple` yielded will have ``end`` equal to the size of the :" "term:`bytecode`." msgstr "" +"El último objeto :class:`tuple` producido tendrá el elemento ``end`` igual " +"al tamaño de :term:`bytecode`." #: ../Doc/reference/datamodel.rst:1363 msgid "" @@ -2106,38 +2157,45 @@ msgid "" "are used for lines that are present in the source code, but have been " "eliminated by the :term:`bytecode` compiler." msgstr "" +"Se permiten rangos de ancho cero, donde ``start == end``. Los rangos de " +"ancho cero se utilizan para las líneas que están presentes en el código " +"fuente, pero que han sido eliminadas por el compilador :term:`bytecode`." #: ../Doc/reference/datamodel.rst:1371 msgid ":pep:`626` - Precise line numbers for debugging and other tools." msgstr "" +":pep:`626` - Números de línea precisos para depuración y otras herramientas." #: ../Doc/reference/datamodel.rst:1372 msgid "The PEP that introduced the :meth:`!co_lines` method." -msgstr "" +msgstr "El PEP que introdujo el método :meth:`!co_lines`." #: ../Doc/reference/datamodel.rst:1376 msgid "" "Return a copy of the code object with new values for the specified fields." msgstr "" +"Retorna una copia del objeto de código con nuevos valores para los campos " +"especificados." #: ../Doc/reference/datamodel.rst:1378 msgid "" "Code objects are also supported by the generic function :func:`copy.replace`." msgstr "" +"Los objetos de código también son compatibles con la función genérica :func:" +"`copy.replace`." #: ../Doc/reference/datamodel.rst:1386 msgid "Frame objects" msgstr "Objetos de marco" #: ../Doc/reference/datamodel.rst:1390 -#, fuzzy msgid "" "Frame objects represent execution frames. They may occur in :ref:`traceback " "objects `, and are also passed to registered trace " "functions." msgstr "" -"Los objetos de marco representan marcos de ejecución. Pueden ocurrir en " -"objetos de rastreo (ver a continuación), y son también pasados hacia " +"Los objetos de marco representan marcos de ejecución. Pueden ocurrir en :ref:" +"`objetos de rastreo `, y son también pasados hacia " "funciones de rastreo registradas." #: ../Doc/reference/datamodel.rst:1408 @@ -2145,103 +2203,109 @@ msgid "" "Points to the previous stack frame (towards the caller), or ``None`` if this " "is the bottom stack frame" msgstr "" +"Apunta al marco de pila anterior (hacia el que hace la llamada), o ``None`` " +"si este es el marco de pila inferior" #: ../Doc/reference/datamodel.rst:1412 -#, fuzzy msgid "" "The :ref:`code object ` being executed in this frame. " "Accessing this attribute raises an :ref:`auditing event ` ``object." "__getattr__`` with arguments ``obj`` and ``\"f_code\"``." msgstr "" -"Para ciertos accesos a atributos sensibles, lanza un :ref:`evento de " -"auditoría ` ``object.__getattr__`` con los argumentos ``obj`` y " -"``name``." +"El :ref:`objeto de código ` que se está ejecutando en este " +"marco. Al acceder a este atributo se lanza un :ref:`evento de auditoría " +"` ``object.__getattr__`` con los argumentos ``obj`` y " +"``\"f_code\"``." +# Cómo puede quedar esta traducción, para que no quede como: "hace referencia a un :term:`optimized scope`"? #: ../Doc/reference/datamodel.rst:1417 msgid "" "The mapping used by the frame to look up :ref:`local variables `. If " "the frame refers to an :term:`optimized scope`, this may return a write-" "through proxy object." msgstr "" +"La asignación que utiliza el marco para buscar :ref:`variables locales " +"`. Si el marco hace referencia a un :term:`ámbito optimizado " +"`, esto puede retornar un objeto proxy de escritura directa." #: ../Doc/reference/datamodel.rst:1422 msgid "Return a proxy for optimized scopes." -msgstr "" +msgstr "Retorna un proxy para ámbitos optimizados." #: ../Doc/reference/datamodel.rst:1426 msgid "" "The dictionary used by the frame to look up :ref:`global variables `" msgstr "" +"El diccionario utilizado por el marco para buscar :ref:`variables globales " +"`" #: ../Doc/reference/datamodel.rst:1430 msgid "" "The dictionary used by the frame to look up :ref:`built-in (intrinsic) names " "`" msgstr "" +"El diccionario utilizado por el marco para buscar :ref:`nombres incorporados " +"(intrínsecos) `" #: ../Doc/reference/datamodel.rst:1434 msgid "" "The \"precise instruction\" of the frame object (this is an index into the :" "term:`bytecode` string of the :ref:`code object `)" msgstr "" +"La \"instrucción precisa\" del objeto de marco (es un índice en la cadena :" +"term:`bytecode` del :ref:`objeto de código `)" #: ../Doc/reference/datamodel.rst:1450 -#, fuzzy msgid "" "If not ``None``, this is a function called for various events during code " "execution (this is used by debuggers). Normally an event is triggered for " "each new source line (see :attr:`~frame.f_trace_lines`)." msgstr "" -"Atributos especiales escribibles: :attr:`f_trace`, de lo contrario ``None``, " -"es una función llamada por distintos eventos durante la ejecución del código " -"(éste es utilizado por el depurador). Normalmente un evento es desencadenado " -"por cada una de las líneas fuente - esto puede ser deshabilitado " -"estableciendo :attr:`f_trace_lines` a :const:`False`." +"Si no es ``None``, esta es una función llamada por distintos eventos durante " +"la ejecución del código (esto es utilizado por depuradores). Normalmente un " +"evento es desencadenado por cada nueva línea fuente (vea :attr:`~frame." +"f_trace_lines`)." #: ../Doc/reference/datamodel.rst:1455 msgid "" "Set this attribute to :const:`False` to disable triggering a tracing event " "for each source line." msgstr "" +"Establece este atributo a :const:`False` para deshabilitar la activación de " +"un evento de seguimiento para cada línea de origen." #: ../Doc/reference/datamodel.rst:1459 -#, fuzzy msgid "" "Set this attribute to :const:`True` to allow per-opcode events to be " "requested. Note that this may lead to undefined interpreter behaviour if " "exceptions raised by the trace function escape to the function being traced." msgstr "" -"Las implementaciones *pueden* permitir que eventos por código de operación " -"sean solicitados estableciendo :attr:`f_trace_opcodes` a :const:`True`. " -"Tenga en cuenta que esto puede llevar a un comportamiento indefinido del " -"intérprete si se levantan excepciones por la función de rastreo escape hacia " -"la función que está siendo rastreada." +"Establece este atributo a :const:`True` para permitir que se soliciten " +"eventos por código de operación. Tenga en cuenta que esto puede llevar a un " +"comportamiento indefinido del intérprete si se levantan excepciones por la " +"función de rastreo escape hacia la función que está siendo rastreada." #: ../Doc/reference/datamodel.rst:1465 -#, fuzzy msgid "" "The current line number of the frame -- writing to this from within a trace " "function jumps to the given line (only for the bottom-most frame). A " "debugger can implement a Jump command (aka Set Next Statement) by writing to " "this attribute." msgstr "" -":attr:`f_lineno` es el número de línea actual del marco --- escribiendo a " -"esta forma dentro de una función de rastreo salta a la línea dada (solo para " -"el último marco). Un depurador puede implementar un comando de salto " -"(*Jump*) (también conocido como *Set Next Statement*) al escribir en " -"f_lineno." +"El número de línea actual del marco -- escribiendo a esta forma dentro de " +"una función de rastreo salta a la línea dada (solo para el último marco). Un " +"depurador puede implementar un comando de salto (*Jump*) (también conocido " +"como *Set Next Statement*) al escribir en este atributo." #: ../Doc/reference/datamodel.rst:1471 -#, fuzzy msgid "Frame object methods" -msgstr "Objetos de marco" +msgstr "Métodos de objeto de marco" #: ../Doc/reference/datamodel.rst:1473 msgid "Frame objects support one method:" msgstr "Objetos de marco soportan un método:" #: ../Doc/reference/datamodel.rst:1477 -#, fuzzy msgid "" "This method clears all references to :ref:`local variables ` held by " "the frame. Also, if the frame belonged to a :term:`generator`, the " @@ -2249,51 +2313,51 @@ msgid "" "objects (for example when catching an :ref:`exception ` " "and storing its :ref:`traceback ` for later use)." msgstr "" -"Este método limpia todas las referencias a variables locales mantenidas por " -"el marco. También, si el marco pertenecía a un generador, éste es " -"finalizado. Esto ayuda a interrumpir los ciclos de referencia que involucran " -"objetos de marco (por ejemplo al detectar una excepción y almacenando su " -"rastro para uso posterior)." +"Este método limpia todas las referencias a :ref:`variables locales ` " +"mantenidas por el marco. También, si el marco pertenecía a un :term:" +"`generator`, éste es finalizado. Esto ayuda a interrumpir los ciclos de " +"referencia que involucran objetos de marco (por ejemplo al detectar una :ref:" +"`excepción ` y almacenando su :ref:`rastro ` para uso posterior)." #: ../Doc/reference/datamodel.rst:1483 -#, fuzzy msgid "" ":exc:`RuntimeError` is raised if the frame is currently executing or " "suspended." -msgstr ":exc:`RuntimeError` es lanzado si el marco se encuentra en ejecución." +msgstr "" +":exc:`RuntimeError` es lanzado si el marco se encuentra actualmente en " +"ejecución o suspendido." #: ../Doc/reference/datamodel.rst:1488 msgid "" "Attempting to clear a suspended frame raises :exc:`RuntimeError` (as has " "always been the case for executing frames)." msgstr "" +"Al intentar borrar un marco suspendido lanza :exc:`RuntimeError` (como " +"siempre ha sido el caso con los marcos en ejecución)." #: ../Doc/reference/datamodel.rst:1496 msgid "Traceback objects" msgstr "Objetos de seguimiento de pila (traceback)" #: ../Doc/reference/datamodel.rst:1509 -#, fuzzy msgid "" "Traceback objects represent the stack trace of an :ref:`exception `. A traceback object is implicitly created when an exception occurs, " "and may also be explicitly created by calling :class:`types.TracebackType`." msgstr "" "Los objetos de seguimiento de pila representan el trazo de pila (*stack " -"trace*) de una excepción. Un objeto de rastreo es creado de manera implícita " -"cuando se da una excepción, y puede ser creada de manera explícita al " -"llamar :class:`types.TracebackType`." +"trace*) de una :ref:`excepción `. Un objeto de rastreo es creado " +"de manera implícita cuando se da una excepción, y puede ser creada de manera " +"explícita al llamar :class:`types.TracebackType`." #: ../Doc/reference/datamodel.rst:1514 -#, fuzzy msgid "Traceback objects can now be explicitly instantiated from Python code." msgstr "" "Los objetos de seguimiento de pila ya pueden ser instanciados de manera " -"explícita desde código de Python, y el atributo ``tb_next`` de instancias " -"existentes puede ser actualizado." +"explícita desde código de Python." #: ../Doc/reference/datamodel.rst:1517 -#, fuzzy msgid "" "For implicitly created tracebacks, when the search for an exception handler " "unwinds the execution stack, at each unwound level a traceback object is " @@ -2308,11 +2372,11 @@ msgstr "" "en cada nivel de desenvolvimiento se inserta un objeto de rastreo al frente " "del rastreo actual. Cuando se entra a un manejo de excepción, la pila de " "rastreo se vuelve disponible para el programa. (Ver sección :ref:`try`.) Es " -"accesible como el tercer elemento de la tupla retornada por ``sys." -"exc_info()``, y como el atributo ``__traceback__`` de la excepción capturada." +"accesible como el tercer elemento de la tupla retornada por :func:`sys." +"exc_info`, y como el atributo :attr:`~BaseException.__traceback__` de la " +"excepción capturada." #: ../Doc/reference/datamodel.rst:1526 -#, fuzzy msgid "" "When the program contains no suitable handler, the stack trace is written " "(nicely formatted) to the standard error stream; if the interpreter is " @@ -2320,74 +2384,66 @@ msgid "" "last_traceback`." msgstr "" "Cuando el programa no contiene un gestor apropiado, el trazo de pila es " -"escrito (muy bien formateado) a la secuencia de error estándar; si el " -"intérprete es interactivo, también se vuelve disponible al usuario como " -"``sys.last_traceback``." +"escrito (muy bien formateado) en el flujo de error estándar; si el " +"intérprete es interactivo, también se vuelve disponible al usuario como :" +"data:`sys.last_traceback`." #: ../Doc/reference/datamodel.rst:1531 -#, fuzzy msgid "" "For explicitly created tracebacks, it is up to the creator of the traceback " "to determine how the :attr:`~traceback.tb_next` attributes should be linked " "to form a full stack trace." msgstr "" "Para seguimientos de pila creados de forma explícita, depende de su creador " -"determinar cómo los atributos ``tb_next`` deberían ser ligados para formar " -"un trazo de pila completo (*full stack trace*)." +"determinar cómo los atributos :attr:`~traceback.tb_next` deberían ser " +"ligados para formar un trazo de pila completo (*full stack trace*)." #: ../Doc/reference/datamodel.rst:1546 msgid "" "Points to the execution :ref:`frame ` of the current level." -msgstr "" +msgstr "Apunta al :ref:`marco ` de ejecución del nivel actual." #: ../Doc/reference/datamodel.rst:1549 -#, fuzzy msgid "" "Accessing this attribute raises an :ref:`auditing event ` ``object." "__getattr__`` with arguments ``obj`` and ``\"tb_frame\"``." msgstr "" -"Acceder a ``tb_frame`` lanza un objeto :ref:`evento de auditoría ` " -"``.__getattr__`` con argumentos ``obj`` y ``tb_frame``." +"Acceder a este atributo lanza un objeto :ref:`evento de auditoría " +"` ``object.__getattr__`` con argumentos ``obj`` y ``\"tb_frame\"``." #: ../Doc/reference/datamodel.rst:1554 msgid "Gives the line number where the exception occurred" -msgstr "" +msgstr "Indica el número de línea en la que se ha producido la excepción" #: ../Doc/reference/datamodel.rst:1557 msgid "Indicates the \"precise instruction\"." -msgstr "" +msgstr "Indica la \"instrucción precisa\"." #: ../Doc/reference/datamodel.rst:1559 -#, fuzzy msgid "" "The line number and last instruction in the traceback may differ from the " "line number of its :ref:`frame object ` if the exception " "occurred in a :keyword:`try` statement with no matching except clause or " "with a :keyword:`finally` clause." msgstr "" -"Atributos especiales de solo lectura: :attr:`tb_frame` apunta al marco de " -"ejecución del nivel actual; :attr:`tb_lineno` da el número de línea donde " -"ocurrió la excepción; :attr:`tb_lasti` indica la instrucción precisa. El " -"número de línea y la última instrucción en el seguimiento de pila puede " -"diferir del número de línea de su objeto de marco si la excepción ocurrió en " -"una declaración :keyword:`try` sin una cláusula de excepción (except) " -"correspondiente o con una cláusula *finally*." +"El número de línea y la última instrucción en el seguimiento de pila puede " +"diferir del número de línea de su :ref:`objeto de marco ` si " +"la excepción ocurrió en una declaración :keyword:`try` sin una cláusula de " +"excepción (except) correspondiente o con una cláusula :keyword:`finally`." #: ../Doc/reference/datamodel.rst:1570 -#, fuzzy msgid "" "The special writable attribute :attr:`!tb_next` is the next level in the " "stack trace (towards the frame where the exception occurred), or ``None`` if " "there is no next level." msgstr "" -"Atributo especial escribible: :attr:`tb_next` es el siguiente nivel en el " +"El atributo especial escribible :attr:`!tb_next` es el siguiente nivel en el " "trazo de pila (hacia el marco en donde ocurrió la excepción), o ``None`` si " "no existe un siguiente nivel." #: ../Doc/reference/datamodel.rst:1574 -#, fuzzy msgid "This attribute is now writable" -msgstr "El atributo de módulo ``__class__`` es ahora escribible." +msgstr "Este atributo es ahora escribible" #: ../Doc/reference/datamodel.rst:1579 msgid "Slice objects" @@ -2462,7 +2518,6 @@ msgid "Class method objects" msgstr "Objetos de método de clase" #: ../Doc/reference/datamodel.rst:1623 -#, fuzzy msgid "" "A class method object, like a static method object, is a wrapper around " "another object that alters the way in which that object is retrieved from " @@ -2475,9 +2530,9 @@ msgstr "" "envoltorio (wrapper) alrededor de otro objeto que altera la forma en la que " "el objeto es obtenido desde las clases y las instancias de clase. El " "comportamiento de los objetos de método de clase sobre tal obtención es " -"descrita más arriba, debajo de “Métodos definidos por usuario”. Objetos de " -"clase de método son creados por el constructor incorporado :func:" -"`classmethod`." +"descrita más arriba, debajo de :ref:`\"métodos de instancia\" `. Objetos de clase de método son creados por el constructor " +"incorporado :func:`classmethod`." #: ../Doc/reference/datamodel.rst:1633 msgid "Special method names" @@ -2667,7 +2722,6 @@ msgstr "" "actual únicamente lo llama una vez." #: ../Doc/reference/datamodel.rst:1735 -#, fuzzy msgid "" "It is not guaranteed that :meth:`__del__` methods are called for objects " "that still exist when the interpreter exits. :class:`weakref.finalize` " @@ -2675,7 +2729,9 @@ msgid "" "when an object is garbage collected." msgstr "" "No está garantizado que los métodos :meth:`__del__` sean llamados para " -"objetos que aún existen cuando el intérprete se cierra." +"objetos que aún existen cuando el intérprete se cierra. :class:`weakref." +"finalize` proporciona una forma directa de registrar una función de limpieza " +"para ser llamada cuando un objeto es recogido de la basura." #: ../Doc/reference/datamodel.rst:1742 msgid "" @@ -2884,7 +2940,6 @@ msgstr "" "llama ``x.__gt__(y)``, y ``x>=y`` llama ``x.__ge__(y)``." #: ../Doc/reference/datamodel.rst:1876 -#, fuzzy msgid "" "A rich comparison method may return the singleton :data:`NotImplemented` if " "it does not implement the operation for a given pair of arguments. By " @@ -2894,17 +2949,16 @@ msgid "" "statement), Python will call :func:`bool` on the value to determine if the " "result is true or false." msgstr "" -"Un método de comparación *rich* puede retornar el único ``NotImplemented`` " -"si no implementa la operación para un par de argumentos dados. Por " -"convención, ``False`` y ``True`` son retornados para una comparación " -"exitosa. Sin embargo, estos métodos pueden retornar cualquier valor, así que " -"si el operador de comparación es utilizado en un contexto Booleano (p. ej. " -"en la condición de una sentencia ``if``), Python llamará :func:`bool` en " -"dicho valor para determinar si el resultado es verdadero (*true*) o falso " -"(*false*)." +"Un método de comparación enriquecido puede retornar el único :data:" +"`NotImplemented` si no implementa la operación para un par de argumentos " +"dados. Por convención, ``False`` y ``True`` son retornados para una " +"comparación exitosa. Sin embargo, estos métodos pueden retornar cualquier " +"valor, así que si el operador de comparación es utilizado en un contexto " +"Booleano (p. ej. en la condición de una sentencia ``if``), Python llamará :" +"func:`bool` en dicho valor para determinar si el resultado es verdadero " +"(*true*) o falso (*false*)." #: ../Doc/reference/datamodel.rst:1883 -#, fuzzy msgid "" "By default, ``object`` implements :meth:`__eq__` by using ``is``, returning :" "data:`NotImplemented` in the case of a false comparison: ``True if x is y " @@ -2915,14 +2969,14 @@ msgid "" "``x<=y``. To automatically generate ordering operations from a single root " "operation, see :func:`functools.total_ordering`." msgstr "" -"Por defecto, ``object`` implementa :meth:`__eq__` usando ``is``, retornando " -"``NotImplemented`` en el caso de una comparación falsa: ``True if x is y " +"Por defecto, ``object`` implementa :meth:`__eq__` usando ``is``, retornando :" +"data:`NotImplemented` en el caso de una comparación falsa: ``True if x is y " "else NotImplemented``. Para :meth:`__ne__`, por defecto delega a :meth:" -"`__eq__` e invierte el resultado a menos que sea ``NotImplemented``. No hay " -"otras relaciones implícitas entre los operadores de comparación o " -"implementaciones predeterminadas; por ejemplo, la verdad de ``(x `. Ver :ref:`special-" +"lookup`." #: ../Doc/reference/datamodel.rst:2052 ../Doc/reference/datamodel.rst:2054 msgid "" @@ -3285,13 +3342,12 @@ msgstr "" "``name``." #: ../Doc/reference/datamodel.rst:2090 -#, fuzzy msgid "" "Called when :func:`dir` is called on the object. An iterable must be " "returned. :func:`dir` converts the returned iterable to a list and sorts it." msgstr "" -"Es llamado cuando :func:`dir` es llamado en el objeto. Una secuencia debe " -"ser retornada. :func:`dir` convierte la secuencia retornada a una lista y la " +"Es llamado cuando :func:`dir` es llamado en el objeto. Un iterable debe ser " +"retornado. :func:`dir` convierte el iterable retornado a una lista y la " "ordena." #: ../Doc/reference/datamodel.rst:2095 @@ -3320,15 +3376,14 @@ msgstr "" "el nombre de atributo y el resultado es retornado." #: ../Doc/reference/datamodel.rst:2111 -#, fuzzy msgid "" "The ``__dir__`` function should accept no arguments, and return an iterable " "of strings that represents the names accessible on module. If present, this " "function overrides the standard :func:`dir` search on a module." msgstr "" -"La función ``__dir__`` debe no aceptar argumentos y retornar una secuencia " -"de cadena de caracteres que representan los nombres accesibles en el módulo. " -"De existir, esta función anula la búsqueda estándar :func:`dir` en un módulo." +"La función ``__dir__`` no debe aceptar argumentos y retorna un iterable de " +"cadena de caracteres que representan los nombres accesibles en el módulo. De " +"existir, esta función anula la búsqueda estándar :func:`dir` en un módulo." #: ../Doc/reference/datamodel.rst:2115 msgid "" @@ -3356,6 +3411,18 @@ msgid "" "\n" "sys.modules[__name__].__class__ = VerboseModule" msgstr "" +"import sys\n" +"from types import ModuleType\n" +"\n" +"class VerboseModule(ModuleType):\n" +" def __repr__(self):\n" +" return f'Verbose {self.__name__}'\n" +"\n" +" def __setattr__(self, attr, value):\n" +" print(f'Setting {attr}...')\n" +" super().__setattr__(attr, value)\n" +"\n" +"sys.modules[__name__].__class__ = VerboseModule" #: ../Doc/reference/datamodel.rst:2133 msgid "" @@ -3474,9 +3541,10 @@ msgid "" "Instances of descriptors may also have the :attr:`!__objclass__` attribute " "present:" msgstr "" +"Las instancias de descriptores también pueden tener presente el atributo :" +"attr:`!__objclass__`:" #: ../Doc/reference/datamodel.rst:2199 -#, fuzzy msgid "" "The attribute :attr:`!__objclass__` is interpreted by the :mod:`inspect` " "module as specifying the class where this object was defined (setting this " @@ -3486,13 +3554,13 @@ msgid "" "argument (for example, CPython sets this attribute for unbound methods that " "are implemented in C)." msgstr "" -"El atributo :attr:`__objclass__` es interpretado por el módulo :mod:" +"El atributo :attr:`!__objclass__` es interpretado por el módulo :mod:" "`inspect` como la especificación de la clase donde el objeto fue definido " "(establecer esto adecuadamente puede ayudar en introspección de atributos " "dinámicos de clases en tiempo de ejecución). Para invocables, puede indicar " "que una instancia de un tipo (o subclase) dado es esperado o requerido como " -"el primero argumento posicional (por ejemplo, CPython establece este " -"atributo para métodos independientes que son implementados en C)." +"el primer argumento posicional (por ejemplo, CPython establece este atributo " +"para métodos independientes que son implementados en C)." #: ../Doc/reference/datamodel.rst:2210 msgid "Invoking Descriptors" @@ -3598,7 +3666,6 @@ msgstr "" "cambios." #: ../Doc/reference/datamodel.rst:2281 -#, fuzzy msgid "" "For instance bindings, the precedence of descriptor invocation depends on " "which descriptor methods are defined. A descriptor can define any " @@ -3615,20 +3682,20 @@ msgid "" "dictionary. In contrast, non-data descriptors can be overridden by " "instances." msgstr "" -"Por ejemplo, enlaces, la precedencia de la invocación de descriptores " -"depende de qué métodos de descriptores están definidos. Un descriptor puede " -"definir cualquier combinación de :meth:`~object.__get__`, :meth:`~object." -"__set__` y :meth:`~object.__delete__`. Si no define :meth:`__get__`, acceder " -"al atributo retornará el objeto descriptor en sí, a menos que haya un valor " -"en el diccionario de instancia del objeto. Si el descriptor define :meth:" -"`__set__` y/o :meth:`__delete__`, es un descriptor de datos; si no define " -"ninguno de los dos, es un descriptor que no es de datos. Normalmente, los " -"descriptores de datos definen tanto :meth:`__get__` como :meth:`__set__`, " -"mientras que los descriptores que no son de datos tienen solo el método :" -"meth:`__get__`. Los descriptores de datos con :meth:`__get__` y :meth:" -"`__set__` (y/o :meth:`__delete__`) definidos siempre anulan una redefinición " -"en un diccionario de instancia. Por el contrario, las instancias pueden " -"anular los descriptores que no son datos." +"En el caso de los enlaces de instancias, la precedencia de la invocación de " +"descriptores depende de qué métodos de descriptores están definidos. Un " +"descriptor puede definir cualquier combinación de :meth:`~object.__get__`, :" +"meth:`~object.__set__` y :meth:`~object.__delete__`. Si no define :meth:`!" +"__get__`, acceder al atributo retornará el objeto descriptor en sí, a menos " +"que haya un valor en el diccionario de instancia del objeto. Si el " +"descriptor define :meth:`!__set__` y/o :meth:`!__delete__`, es un descriptor " +"de datos; si no define ninguno de los dos, es un descriptor que no es de " +"datos. Normalmente, los descriptores de datos definen tanto :meth:`!__get__` " +"como :meth:`!__set__`, mientras que los descriptores que no son de datos " +"tienen solo el método :meth:`!__get__`. Los descriptores de datos con :meth:" +"`!__get__` y :meth:`!__set__` (y/o :meth:`!__delete__`) definidos siempre " +"anulan una redefinición en un diccionario de instancia. Por el contrario, " +"las instancias pueden anular los descriptores que no son datos." #: ../Doc/reference/datamodel.rst:2296 msgid "" @@ -3691,7 +3758,7 @@ msgstr "" #: ../Doc/reference/datamodel.rst:2329 msgid "Notes on using *__slots__*:" -msgstr "Notas sobre el uso de *__slots__*" +msgstr "Notas sobre el uso de *__slots__*:" #: ../Doc/reference/datamodel.rst:2331 msgid "" @@ -3743,7 +3810,6 @@ msgstr "" "de clase sobrescribiría la asignación del descriptor." #: ../Doc/reference/datamodel.rst:2354 -#, fuzzy msgid "" "The action of a *__slots__* declaration is not limited to the class where it " "is defined. *__slots__* declared in parents are available in child classes. " @@ -3752,10 +3818,11 @@ msgid "" "only contain names of any *additional* slots)." msgstr "" "La acción de una declaración *__slots__* no se limita a la clase donde se " -"define. *__slots__* declarado en padres está disponible en clases " -"secundarias. Sin embargo, las subclases secundarias obtendrán :attr:`~object." -"__dict__` y *__weakref__* a menos que también definan *__slots__* (que solo " -"debe contener nombres de cualquier ranura *additional*)." +"define. *__slots__* declarado en clases principales está disponible en " +"clases secundarias. Sin embargo, las subclases secundarias obtendrán :attr:" +"`~object.__dict__` y *__weakref__* a menos que las subclases también definan " +"*__slots__* (que solo debe contener nombres de cualquier ranura " +"*additional*)." #: ../Doc/reference/datamodel.rst:2360 msgid "" @@ -3803,12 +3870,11 @@ msgstr "" "func:`help`." #: ../Doc/reference/datamodel.rst:2377 -#, fuzzy msgid "" ":attr:`~object.__class__` assignment works only if both classes have the " "same *__slots__*." msgstr "" -"La asignación de :attr:`~instance.__class__` solo funciona si ambas clases " +"La asignación de :attr:`~object.__class__` solo funciona si ambas clases " "tienen el mismo *__slots__*." #: ../Doc/reference/datamodel.rst:2380 @@ -3866,7 +3932,6 @@ msgstr "" "clase." #: ../Doc/reference/datamodel.rst:2409 -#, fuzzy msgid "" "Keyword arguments which are given to a new class are passed to the parent " "class's ``__init_subclass__``. For compatibility with other classes using " @@ -3889,6 +3954,13 @@ msgid "" "class AustralianPhilosopher(Philosopher, default_name=\"Bruce\"):\n" " pass" msgstr "" +"class Philosopher:\n" +" def __init_subclass__(cls, /, default_name, **kwargs):\n" +" super().__init_subclass__(**kwargs)\n" +" cls.default_name = default_name\n" +"\n" +"class AustralianPhilosopher(Philosopher, default_name=\"Bruce\"):\n" +" pass" #: ../Doc/reference/datamodel.rst:2423 msgid "" @@ -3932,6 +4004,8 @@ msgid "" "class A:\n" " x = C() # Automatically calls: x.__set_name__(A, 'x')" msgstr "" +"class A:\n" +" x = C() # Llama automáticamente: x.__set_name__(A, 'x')" #: ../Doc/reference/datamodel.rst:2447 msgid "" @@ -3952,6 +4026,12 @@ msgid "" "A.x = c # The hook is not called\n" "c.__set_name__(A, 'x') # Manually invoke the hook" msgstr "" +"class A:\n" +" pass\n" +"\n" +"c = C()\n" +"A.x = c # No se llama el enlace\n" +"c.__set_name__(A, 'x') # Invoca manualmente el enlace" #: ../Doc/reference/datamodel.rst:2458 msgid "See :ref:`class-object-creation` for more details." @@ -3994,6 +4074,14 @@ msgid "" "class MySubclass(MyClass):\n" " pass" msgstr "" +"class Meta(type):\n" +" pass\n" +"\n" +"class MyClass(metaclass=Meta):\n" +" pass\n" +"\n" +"class MySubclass(MyClass):\n" +" pass" #: ../Doc/reference/datamodel.rst:2491 msgid "" @@ -4294,7 +4382,6 @@ msgstr "" "el espacio de nombres local como la clase definida." #: ../Doc/reference/datamodel.rst:2640 -#, fuzzy msgid "" "When a new class is created by ``type.__new__``, the object provided as the " "namespace parameter is copied to a new ordered mapping and the original " @@ -4302,10 +4389,10 @@ msgid "" "becomes the :attr:`~type.__dict__` attribute of the class object." msgstr "" "Cuando una nueva clase es creada por ``type.__new__``, el objeto " -"proporcionado como el parámetro de espacio de nombres es copiado a un " +"proporcionado como el parámetro de espacio de nombres es copiado a un nuevo " "trazado ordenado y el objeto original es descartado. La nueva copia es " "*envuelta* en un proxy de solo lectura, que se convierte en el atributo :" -"attr:`~object.__dict__` del objeto de clase." +"attr:`~type.__dict__` del objeto de clase." #: ../Doc/reference/datamodel.rst:2647 msgid ":pep:`3135` - New super" @@ -4394,7 +4481,6 @@ msgstr "" ":pep:`3119` - Introducción a Clases Base Abstractas (*Abstract Base Classes*)" #: ../Doc/reference/datamodel.rst:2693 -#, fuzzy msgid "" "Includes the specification for customizing :func:`isinstance` and :func:" "`issubclass` behavior through :meth:`~type.__instancecheck__` and :meth:" @@ -4403,8 +4489,8 @@ msgid "" "language." msgstr "" "Incluye la especificación para personalizar el comportamiento de :func:" -"`isinstance` y :func:`issubclass` a través de :meth:`~class." -"__instancecheck__` y :meth:`~class.__subclasscheck__`, con motivación para " +"`isinstance` y :func:`issubclass` a través de :meth:`~type." +"__instancecheck__` y :meth:`~type.__subclasscheck__`, con motivación para " "esta funcionalidad en el contexto de agregar Clases Base Abstractas (ver el " "módulo :mod:`abc`) al lenguaje." @@ -4583,6 +4669,28 @@ msgid "" " f\"'{class_of_obj.__name__}' object is not subscriptable\"\n" " )" msgstr "" +"from inspect import isclass\n" +"\n" +"def subscribe(obj, x):\n" +" \"\"\"Retorna el resultado de la expresión 'obj[x]'\"\"\"\n" +"\n" +" class_of_obj = type(obj)\n" +"\n" +" # Si la clase de obj define __getitem__,\n" +" # llama class_of_obj.__getitem__(obj, x)\n" +" if hasattr(class_of_obj, '__getitem__'):\n" +" return class_of_obj.__getitem__(obj, x)\n" +"\n" +" # De lo contrario, si obj es una clase y define __class_getitem__,\n" +" # llama obj.__class_getitem__(x)\n" +" elif isclass(obj) and hasattr(obj, '__class_getitem__'):\n" +" return obj.__class_getitem__(x)\n" +"\n" +" # De lo contrario, lanza una excepción\n" +" else:\n" +" raise TypeError(\n" +" f\"'{class_of_obj.__name__}' object is not subscriptable\"\n" +" )" #: ../Doc/reference/datamodel.rst:2793 msgid "" @@ -4614,6 +4722,18 @@ msgid "" ">>> type(list[int])\n" "" msgstr "" +">>> # list tiene la clase \"type\" como su metaclase, como la mayoría de las " +"clases:\n" +">>> type(list)\n" +"\n" +">>> type(dict) == type(list) == type(tuple) == type(str) == type(bytes)\n" +"True\n" +">>> # \"list[int]\" llama \"list.__class_getitem__(int)\"\n" +">>> list[int]\n" +"list[int]\n" +">>> # list.__class_getitem__ retorna un objeto GenericAlias:\n" +">>> type(list[int])\n" +"" #: ../Doc/reference/datamodel.rst:2812 msgid "" @@ -4645,6 +4765,22 @@ msgid "" ">>> type(Menu['SPAM'])\n" "" msgstr "" +">>> from enum import Enum\n" +">>> class Menu(Enum):\n" +"... \"\"\"Un menú de desayuno\"\"\"\n" +"... SPAM = 'spam'\n" +"... BACON = 'bacon'\n" +"...\n" +">>> # Las clases de enumeración tienen una metaclase personalizada:\n" +">>> type(Menu)\n" +"\n" +">>> # EnumMeta define __getitem__,\n" +">>> # por lo que no se llama __class_getitem__,\n" +">>> # y el resultado no es un objeto GenericAlias:\n" +">>> Menu['SPAM']\n" +"\n" +">>> type(Menu['SPAM'])\n" +"" #: ../Doc/reference/datamodel.rst:2837 msgid ":pep:`560` - Core Support for typing module and generic types" @@ -4680,7 +4816,6 @@ msgid "Emulating container types" msgstr "Emulando tipos de contenedores" #: ../Doc/reference/datamodel.rst:2860 -#, fuzzy msgid "" "The following methods can be defined to implement container objects. " "Containers usually are :term:`sequences ` (such as :class:`lists " @@ -4716,39 +4851,39 @@ msgid "" "should iterate through the values." msgstr "" "Se pueden definir los siguientes métodos para implementar objetos " -"contenedores. Los contenedores suelen ser :term:`sequences ` " -"(como :class:`lists ` o :class:`tuples `) o :term:`mappings " -"` (como :class:`dictionaries `), pero también pueden " -"representar otros contenedores. El primer conjunto de métodos se utiliza " -"para emular una secuencia o un mapeo; la diferencia es que para una " -"secuencia, las claves permitidas deben ser los números enteros *k* para los " -"cuales ``0 <= k < N`` donde *N* es la longitud de la secuencia, u objetos :" -"class:`slice`, que definen un rango de elementos. También se recomienda que " -"las asignaciones proporcionen los métodos :meth:`keys`, :meth:`values`, :" -"meth:`items`, :meth:`get`, :meth:`clear`, :meth:`setdefault`, :meth:`pop`, :" -"meth:`popitem`, :meth:`!copy` y :meth:`update` que se comportan de manera " -"similar a los de los objetos :class:`dictionary ` estándar de Python. " -"El módulo :mod:`collections.abc` proporciona un :class:`~collections.abc." -"MutableMapping` :term:`abstract base class` para ayudar a crear esos métodos " -"a partir de un conjunto básico de :meth:`~object.__getitem__`, :meth:" -"`~object.__setitem__`, :meth:`~object.__delitem__` y :meth:`keys`. Las " -"secuencias mutables deben proporcionar los métodos :meth:`append`, :meth:" -"`count`, :meth:`index`, :meth:`extend`, :meth:`insert`, :meth:`pop`, :meth:" -"`remove`, :meth:`reverse` y :meth:`sort`, como los objetos :class:`list` " -"estándar de Python. Finalmente, los tipos de secuencia deben implementar la " -"suma (es decir, concatenación) y la multiplicación (es decir, repetición) " -"definiendo los métodos :meth:`~object.__add__`, :meth:`~object.__radd__`, :" -"meth:`~object.__iadd__`, :meth:`~object.__mul__`, :meth:`~object.__rmul__` " -"y :meth:`~object.__imul__` que se describen a continuación; no deben definir " -"otros operadores numéricos. Se recomienda que tanto las asignaciones como " -"las secuencias implementen el método :meth:`~object.__contains__` para " -"permitir el uso eficiente del operador ``in``; para asignaciones, ``in`` " -"debería buscar las claves de la asignación; para secuencias, debe buscar " -"entre los valores. Se recomienda además que tanto las asignaciones como las " -"secuencias implementen el método :meth:`~object.__iter__` para permitir una " -"iteración eficiente a través del contenedor; para asignaciones, :meth:" -"`__iter__` debe iterar a través de las claves del objeto; para secuencias, " -"debe iterar a través de los valores." +"contenedores. Los contenedores suelen ser :term:`secuencias ` " +"(como :class:`listas ` o :class:`tuplas `) o :term:" +"`asignaciones ` (como :class:`diccionarios `), pero también " +"pueden representar otros contenedores. El primer conjunto de métodos se " +"utiliza para emular una secuencia o para emular un mapeo; la diferencia es " +"que para una secuencia, las claves permitidas deben ser los números enteros " +"*k* para los cuales ``0 <= k < N`` donde *N* es la longitud de la secuencia, " +"u objetos :class:`slice`, que definen un rango de elementos. También se " +"recomienda que las asignaciones proporcionen los métodos :meth:`!keys`, :" +"meth:`!values`, :meth:`!items`, :meth:`!get`, :meth:`!clear`, :meth:`!" +"setdefault`, :meth:`!pop`, :meth:`!popitem`, :meth:`!copy` y :meth:`!update` " +"que se comportan de manera similar a los de los objetos :class:`diccionario " +"` estándar de Python. El módulo :mod:`collections.abc` proporciona un :" +"class:`~collections.abc.MutableMapping` :term:`abstract base class` para " +"ayudar a crear esos métodos a partir de un conjunto básico de :meth:`~object." +"__getitem__`, :meth:`~object.__setitem__`, :meth:`~object.__delitem__` y :" +"meth:`!keys`. Las secuencias mutables deben proporcionar los métodos :meth:`!" +"append`, :meth:`!count`, :meth:`!index`, :meth:`!extend`, :meth:`!insert`, :" +"meth:`!pop`, :meth:`!remove`, :meth:`!reverse` y :meth:`!sort`, como los " +"objetos :class:`list` estándar de Python. Finalmente, los tipos de secuencia " +"deben implementar la suma (es decir, concatenación) y la multiplicación (es " +"decir, repetición) definiendo los métodos :meth:`~object.__add__`, :meth:" +"`~object.__radd__`, :meth:`~object.__iadd__`, :meth:`~object.__mul__`, :meth:" +"`~object.__rmul__` y :meth:`~object.__imul__` que se describen a " +"continuación; no deben definir otros operadores numéricos. Se recomienda que " +"tanto las asignaciones como las secuencias implementen el método :meth:" +"`~object.__contains__` para permitir el uso eficiente del operador ``in``; " +"para asignaciones, ``in`` debería buscar las claves de la asignación; para " +"secuencias, debe buscar entre los valores. Se recomienda además que tanto " +"las asignaciones como las secuencias implementen el método :meth:`~object." +"__iter__` para permitir una iteración eficiente a través del contenedor; " +"para asignaciones, :meth:`!__iter__` debe iterar a través de las claves del " +"objeto; para secuencias, debe iterar a través de los valores." #: ../Doc/reference/datamodel.rst:2901 msgid "" @@ -4777,7 +4912,6 @@ msgstr "" "definir un método :meth:`~object.__bool__`." #: ../Doc/reference/datamodel.rst:2917 -#, fuzzy msgid "" "Called to implement :func:`operator.length_hint`. Should return an estimated " "length for the object (which may be greater or less than the actual length). " @@ -4789,7 +4923,7 @@ msgstr "" "Es llamado para implementar :func:`operator.length_hint`. Debe retornar una " "longitud estimada para el objeto (que puede ser mayor o menor que la " "longitud actual). La longitud debe ser un entero ``>=`` 0. El valor de " -"retorno también debe ser :const:`NotImplemented` el cual es tratado de igual " +"retorno también debe ser :data:`NotImplemented`, el cual es tratado de igual " "forma a que si el método ``__length_hint__`` no existiera en absoluto. Este " "método es puramente una optimización y nunca es requerido para precisión." @@ -4802,7 +4936,7 @@ msgstr "" #: ../Doc/reference/datamodel.rst:2933 msgid "a[1:2] = b" -msgstr "" +msgstr "a[1:2] = b" #: ../Doc/reference/datamodel.rst:2935 msgid "is translated to ::" @@ -4810,7 +4944,7 @@ msgstr "es traducido a ::" #: ../Doc/reference/datamodel.rst:2937 msgid "a[slice(1, 2, None)] = b" -msgstr "" +msgstr "a[slice(1, 2, None)] = b" #: ../Doc/reference/datamodel.rst:2939 msgid "and so forth. Missing slice items are always filled in with ``None``." @@ -4818,7 +4952,6 @@ msgstr "" "etcétera. Elementos faltantes de segmentos siempre son llenados con ``None``." #: ../Doc/reference/datamodel.rst:2944 -#, fuzzy msgid "" "Called to implement evaluation of ``self[key]``. For :term:`sequence` types, " "the accepted keys should be integers. Optionally, they may support :class:" @@ -4830,11 +4963,10 @@ msgid "" "`KeyError` should be raised." msgstr "" "Llamado a implementar evaluación de ``self[key]``. Para los tipos :term:" -"`sequence`, las claves aceptadas deben ser números enteros y objetos de " -"segmento. Tenga en cuenta que la interpretación especial de los índices " -"negativos (si la clase desea emular un tipo :term:`sequence`) depende del " -"método :meth:`__getitem__`. Si *key* es de un tipo inadecuado, es posible " -"que se genere :exc:`TypeError`; si se trata de un valor fuera del conjunto " +"`sequence`, las claves aceptadas deben ser números enteros. Opcionalmente, " +"también puede soportar objetos :class:`slice`. La compatibilidad con índices " +"negativos también es opcional. Si *key* es de un tipo inadecuado, es posible " +"que se genere :exc:`TypeError`; si *key* es de un valor fuera del conjunto " "de índices de la secuencia (después de cualquier interpretación especial de " "valores negativos), se debe generar :exc:`IndexError`. Para los tipos :term:" "`mapping`, si falta *key* (no en el contenedor), se debe generar :exc:" @@ -5013,16 +5145,14 @@ msgstr "" "de la función incorporada :func:`pow`." #: ../Doc/reference/datamodel.rst:3071 -#, fuzzy msgid "" "If one of those methods does not support the operation with the supplied " "arguments, it should return :data:`NotImplemented`." msgstr "" "Si alguno de esos métodos no permiten la operación con los argumentos " -"suministrados, debe retornar ``NotImplemented``." +"suministrados, debe retornar :data:`NotImplemented`." #: ../Doc/reference/datamodel.rst:3094 -#, fuzzy msgid "" "These methods are called to implement the binary arithmetic operations " "(``+``, ``-``, ``*``, ``@``, ``/``, ``//``, ``%``, :func:`divmod`, :func:" @@ -5042,7 +5172,7 @@ msgstr "" "diferentes tipos. [#]_ Por ejemplo, para evaluar la expresión ``x - y``, " "donde *y* es una instancia de una clase que tiene un método :meth:" "`__rsub__`, se llama a ``type(y).__rsub__(y, x)`` si ``type(x).__sub__(x, " -"y)`` retorna *NotImplemented*." +"y)`` retorna :data:`NotImplemented`." #: ../Doc/reference/datamodel.rst:3106 msgid "" @@ -5068,7 +5198,6 @@ msgstr "" "operaciones de sus predecesores." #: ../Doc/reference/datamodel.rst:3132 -#, fuzzy msgid "" "These methods are called to implement the augmented arithmetic assignments " "(``+=``, ``-=``, ``*=``, ``@=``, ``/=``, ``//=``, ``%=``, ``**=``, ``<<=``, " @@ -5090,14 +5219,15 @@ msgstr "" "``**=``, ``<<=``, ``>>=``, ``&=``, ``^=``, ``|=``). Estos métodos deben " "intentar realizar la operación *in-place* (modificando *self*) y retornar el " "resultado (que puede, pero no tiene que ser *self*). Si un método específico " -"no es definido, la asignación aumentada regresa a los métodos normales. Por " -"ejemplo, si *x* es la instancia de una clase con el método :meth:`__iadd__`, " -"``x += y`` es equivalente a ``x = x.__iadd__(y)``. De lo contrario ``x." -"__add__(y)`` y ``y.__radd__(x)`` se consideran al igual que con la " -"evaluación de ``x + y``. En ciertas situaciones, asignaciones aumentadas " -"pueden resultar en errores no esperados (ver :ref:`faq-augmented-assignment-" -"tuple-error`), pero este comportamiento es en realidad parte del modelo de " -"datos." +"no es definido o si ese método retorna :data:`NotImplemented`, la asignación " +"aumentada regresa a los métodos normales. Por ejemplo, si *x* es la " +"instancia de una clase con el método :meth:`__iadd__`, ``x += y`` es " +"equivalente a ``x = x.__iadd__(y)``. Si :meth:`__iadd__` no existe o si ``x." +"__iadd__(y)`` retorna :data:`!NotImplemented`, ``x.__add__(y)`` y ``y." +"__radd__(x)`` se consideran al igual que con la evaluación de ``x + y``. En " +"ciertas situaciones, asignaciones aumentadas pueden resultar en errores no " +"esperados (ver :ref:`faq-augmented-assignment-tuple-error`), pero este " +"comportamiento es en realidad parte del modelo de datos." #: ../Doc/reference/datamodel.rst:3155 msgid "" @@ -5236,14 +5366,13 @@ msgstr "" "método." #: ../Doc/reference/datamodel.rst:3245 -#, fuzzy msgid "" "Note that :meth:`~object.__exit__` methods should not reraise the passed-in " "exception; this is the caller's responsibility." msgstr "" -"Se debe tomar en cuenta que los métodos :meth:`__exit__` no deben lanzar de " -"nuevo la excepción que se pasa; esto es la responsabilidad de quien hace el " -"llamado." +"Se debe tomar en cuenta que los métodos :meth:`~object.__exit__` no deben " +"lanzar de nuevo la excepción que se pasa; esto es la responsabilidad de " +"quien hace el llamado." #: ../Doc/reference/datamodel.rst:3252 msgid ":pep:`343` - The \"with\" statement" @@ -5416,6 +5545,15 @@ msgid "" " File \"\", line 1, in \n" "TypeError: object of type 'C' has no len()" msgstr "" +">>> class C:\n" +"... pass\n" +"...\n" +">>> c = C()\n" +">>> c.__len__ = lambda: 5\n" +">>> len(c)\n" +"Traceback (most recent call last):\n" +" File \"\", line 1, in \n" +"TypeError: object of type 'C' has no len()" #: ../Doc/reference/datamodel.rst:3349 msgid "" @@ -5440,6 +5578,12 @@ msgid "" " File \"\", line 1, in \n" "TypeError: descriptor '__hash__' of 'int' object needs an argument" msgstr "" +">>> 1 .__hash__() == hash(1)\n" +"True\n" +">>> int.__hash__() == hash(int)\n" +"Traceback (most recent call last):\n" +" File \"\", line 1, in \n" +"TypeError: descriptor '__hash__' of 'int' object needs an argument" #: ../Doc/reference/datamodel.rst:3363 msgid "" @@ -5458,6 +5602,10 @@ msgid "" ">>> type(int).__hash__(int) == hash(int)\n" "True" msgstr "" +">>> type(1).__hash__(1) == hash(1)\n" +"True\n" +">>> type(int).__hash__(int) == hash(int)\n" +"True" #: ../Doc/reference/datamodel.rst:3372 msgid "" @@ -5493,6 +5641,28 @@ msgid "" ">>> len(c) # Implicit lookup\n" "10" msgstr "" +">>> class Meta(type):\n" +"... def __getattribute__(*args):\n" +"... print(\"Metaclass getattribute invoked\")\n" +"... return type.__getattribute__(*args)\n" +"...\n" +">>> class C(object, metaclass=Meta):\n" +"... def __len__(self):\n" +"... return 10\n" +"... def __getattribute__(*args):\n" +"... print(\"Class getattribute invoked\")\n" +"... return object.__getattribute__(*args)\n" +"...\n" +">>> c = C()\n" +">>> c.__len__() # Búsqueda explícita a través de la " +"instancia\n" +"Class getattribute invoked\n" +"10\n" +">>> type(c).__len__(c) # Búsqueda explícita a través de type\n" +"Metaclass getattribute invoked\n" +"10\n" +">>> len(c) # Búsqueda implícita\n" +"10" #: ../Doc/reference/datamodel.rst:3398 msgid "" @@ -5602,7 +5772,6 @@ msgstr "" "Es un error :exc:`RuntimeError` esperar a una corrutina más de una vez." #: ../Doc/reference/datamodel.rst:3467 -#, fuzzy msgid "" "Starts or resumes execution of the coroutine. If *value* is ``None``, this " "is equivalent to advancing the iterator returned by :meth:`~object." @@ -5617,7 +5786,7 @@ msgstr "" "*value* no es ``None``, este método delega en el método :meth:`~generator." "send` del iterador que provocó la suspensión de la rutina. El resultado " "(valor de retorno, :exc:`StopIteration` u otra excepción) es el mismo que " -"cuando se itera sobre el valor de retorno :meth:`__await__`, descrito " +"cuando se itera sobre el valor de retorno :meth:`!__await__`, descrito " "anteriormente." #: ../Doc/reference/datamodel.rst:3478 @@ -5721,6 +5890,18 @@ msgid "" " raise StopAsyncIteration\n" " return val" msgstr "" +"class Reader:\n" +" async def readline(self):\n" +" ...\n" +"\n" +" def __aiter__(self):\n" +" return self\n" +"\n" +" async def __anext__(self):\n" +" val = await self.readline()\n" +" if val == b'':\n" +" raise StopAsyncIteration\n" +" return val" #: ../Doc/reference/datamodel.rst:3541 msgid "" @@ -5763,22 +5944,20 @@ msgstr "" "declaración :keyword:`async with`." #: ../Doc/reference/datamodel.rst:3563 -#, fuzzy msgid "" "Semantically similar to :meth:`~object.__enter__`, the only difference being " "that it must return an *awaitable*." msgstr "" -"Semánticamente similar a :meth:`__enter__`, siendo la única diferencia que " -"debe retorna un *esperable*." +"Semánticamente similar a :meth:`~object.__enter__`, siendo la única " +"diferencia que debe retornar un *esperable*." #: ../Doc/reference/datamodel.rst:3568 -#, fuzzy msgid "" "Semantically similar to :meth:`~object.__exit__`, the only difference being " "that it must return an *awaitable*." msgstr "" -"Semánticamente similar a :meth:`__exit__`, siendo la única diferencia que " -"debe retornar un *esperable*." +"Semánticamente similar a :meth:`~object.__exit__`, siendo la única " +"diferencia que debe retornar un *esperable*." #: ../Doc/reference/datamodel.rst:3571 msgid "An example of an asynchronous context manager class::" @@ -5793,6 +5972,12 @@ msgid "" " async def __aexit__(self, exc_type, exc, tb):\n" " await log('exiting context')" msgstr "" +"class AsyncContextManager:\n" +" async def __aenter__(self):\n" +" await log('entering context')\n" +"\n" +" async def __aexit__(self, exc_type, exc, tb):\n" +" await log('exiting context')" #: ../Doc/reference/datamodel.rst:3584 msgid "Footnotes" @@ -5809,7 +5994,6 @@ msgstr "" "llevar a un comportamiento bastante extraño de no ser tratado correctamente." #: ../Doc/reference/datamodel.rst:3589 -#, fuzzy msgid "" "The :meth:`~object.__hash__`, :meth:`~object.__iter__`, :meth:`~object." "__reversed__`, :meth:`~object.__contains__`, :meth:`~object." @@ -5818,24 +6002,23 @@ msgid "" "by relying on the behavior that ``None`` is not callable." msgstr "" "Los métodos :meth:`~object.__hash__`, :meth:`~object.__iter__`, :meth:" -"`~object.__reversed__` y :meth:`~object.__contains__` tienen un manejo " -"especial para esto; otros seguirán generando un :exc:`TypeError`, pero " -"pueden hacerlo confiando en el comportamiento de que ``None`` no es " -"invocable." +"`~object.__reversed__`, :meth:`~object.__contains__`, :meth:`~object." +"__class_getitem__` y :meth:`~os.PathLike.__fspath__` tienen un manejo " +"especial para esto. Otros seguirán lanzando un :exc:`TypeError`, pero pueden " +"hacerlo confiando en el comportamiento de que ``None`` no es invocable." #: ../Doc/reference/datamodel.rst:3596 -#, fuzzy msgid "" "\"Does not support\" here means that the class has no such method, or the " "method returns :data:`NotImplemented`. Do not set the method to ``None`` if " "you want to force fallback to the right operand's reflected method—that will " "instead have the opposite effect of explicitly *blocking* such fallback." msgstr "" -"“No soporta” aquí significa que la clase no tiene tal método, o el método " -"retorna ``NotImplemented``. No establecer el método a ``None`` si se quiere " -"forzar el retroceso al método reflejado del operando correcto—eso, por el " -"contrario, tendrá un efecto opuesto de bloquear explícitamente dicho " -"retroceso." +"\"No soporta\" aquí significa que la clase no tiene tal método, o el método " +"retorna :data:`NotImplemented`. No establecer el método a ``None`` si se " +"quiere forzar el retroceso al método reflejado del operando correcto—eso, " +"por el contrario, tendrá un efecto opuesto de *bloquear* explícitamente " +"dicho retroceso." #: ../Doc/reference/datamodel.rst:3602 msgid "" @@ -5865,11 +6048,11 @@ msgstr "" #: ../Doc/reference/datamodel.rst:1388 ../Doc/reference/datamodel.rst:1498 #: ../Doc/reference/datamodel.rst:1912 ../Doc/reference/datamodel.rst:2927 msgid "object" -msgstr "Objetos" +msgstr "object" #: ../Doc/reference/datamodel.rst:14 ../Doc/reference/datamodel.rst:126 msgid "data" -msgstr "datos" +msgstr "data" #: ../Doc/reference/datamodel.rst:23 ../Doc/reference/datamodel.rst:296 #: ../Doc/reference/datamodel.rst:343 ../Doc/reference/datamodel.rst:427 @@ -5882,67 +6065,67 @@ msgstr "datos" #: ../Doc/reference/datamodel.rst:3153 ../Doc/reference/datamodel.rst:3163 #: ../Doc/reference/datamodel.rst:3191 msgid "built-in function" -msgstr "Funciones incorporadas" +msgstr "built-in function" #: ../Doc/reference/datamodel.rst:23 msgid "id" -msgstr "identificación" +msgstr "id" #: ../Doc/reference/datamodel.rst:23 ../Doc/reference/datamodel.rst:126 #: ../Doc/reference/datamodel.rst:2468 msgid "type" -msgstr "Tipos" +msgstr "type" #: ../Doc/reference/datamodel.rst:23 msgid "identity of an object" -msgstr "identidad de un objeto" +msgstr "identity of an object" #: ../Doc/reference/datamodel.rst:23 msgid "value of an object" -msgstr "valor de un objeto" +msgstr "value of an object" #: ../Doc/reference/datamodel.rst:23 msgid "type of an object" -msgstr "Tipos de objeto" +msgstr "type of an object" #: ../Doc/reference/datamodel.rst:23 msgid "mutable object" -msgstr "Objetos mutables" +msgstr "mutable object" #: ../Doc/reference/datamodel.rst:23 msgid "immutable object" -msgstr "Objetos inmutables" +msgstr "immutable object" #: ../Doc/reference/datamodel.rst:60 msgid "garbage collection" -msgstr "recolección de basura" +msgstr "garbage collection" #: ../Doc/reference/datamodel.rst:60 msgid "reference counting" -msgstr "conteo de referencias" +msgstr "reference counting" #: ../Doc/reference/datamodel.rst:60 msgid "unreachable object" -msgstr "objetos que no se pueden acceder" +msgstr "unreachable object" #: ../Doc/reference/datamodel.rst:95 ../Doc/reference/datamodel.rst:937 msgid "container" -msgstr "contenedores" +msgstr "container" #: ../Doc/reference/datamodel.rst:126 msgid "hierarchy" -msgstr "jerarquía" +msgstr "hierarchy" #: ../Doc/reference/datamodel.rst:126 msgid "extension" -msgstr "extensión" +msgstr "extension" #: ../Doc/reference/datamodel.rst:126 ../Doc/reference/datamodel.rst:400 #: ../Doc/reference/datamodel.rst:401 ../Doc/reference/datamodel.rst:502 #: ../Doc/reference/datamodel.rst:856 ../Doc/reference/datamodel.rst:876 #: ../Doc/reference/datamodel.rst:1132 msgid "module" -msgstr "Módulo" +msgstr "module" #: ../Doc/reference/datamodel.rst:126 ../Doc/reference/datamodel.rst:265 #: ../Doc/reference/datamodel.rst:798 @@ -5952,21 +6135,21 @@ msgstr "C" #: ../Doc/reference/datamodel.rst:126 ../Doc/reference/datamodel.rst:265 #: ../Doc/reference/datamodel.rst:798 msgid "language" -msgstr "lenguaje" +msgstr "language" #: ../Doc/reference/datamodel.rst:139 ../Doc/reference/datamodel.rst:937 #: ../Doc/reference/datamodel.rst:955 ../Doc/reference/datamodel.rst:1076 #: ../Doc/reference/datamodel.rst:1096 msgid "attribute" -msgstr "atributo" +msgstr "attribute" #: ../Doc/reference/datamodel.rst:139 msgid "special" -msgstr "especial" +msgstr "special" #: ../Doc/reference/datamodel.rst:139 msgid "generic" -msgstr "genérico" +msgstr "generic" #: ../Doc/reference/datamodel.rst:184 msgid "..." @@ -5974,41 +6157,40 @@ msgstr "..." #: ../Doc/reference/datamodel.rst:184 msgid "ellipsis literal" -msgstr "elipsis literal" +msgstr "ellipsis literal" #: ../Doc/reference/datamodel.rst:196 ../Doc/reference/datamodel.rst:1103 msgid "numeric" -msgstr "numérico" +msgstr "numeric" #: ../Doc/reference/datamodel.rst:229 ../Doc/reference/datamodel.rst:235 #: ../Doc/reference/datamodel.rst:343 msgid "integer" -msgstr "entero" +msgstr "integer" #: ../Doc/reference/datamodel.rst:235 msgid "representation" -msgstr "representación" +msgstr "representation" #: ../Doc/reference/datamodel.rst:250 msgid "Boolean" -msgstr "booleano" +msgstr "Boolean" #: ../Doc/reference/datamodel.rst:250 msgid "False" -msgstr "Falso" +msgstr "False" #: ../Doc/reference/datamodel.rst:250 msgid "True" -msgstr "Verdad" +msgstr "True" #: ../Doc/reference/datamodel.rst:265 -#, fuzzy msgid "floating-point" -msgstr "punto flotante" +msgstr "floating-point" #: ../Doc/reference/datamodel.rst:265 ../Doc/reference/datamodel.rst:283 msgid "number" -msgstr "número" +msgstr "number" #: ../Doc/reference/datamodel.rst:265 msgid "Java" @@ -6016,7 +6198,7 @@ msgstr "Java" #: ../Doc/reference/datamodel.rst:283 ../Doc/reference/datamodel.rst:3163 msgid "complex" -msgstr "complejo" +msgstr "complex" #: ../Doc/reference/datamodel.rst:296 ../Doc/reference/datamodel.rst:427 #: ../Doc/reference/datamodel.rst:466 ../Doc/reference/datamodel.rst:2897 @@ -6025,41 +6207,41 @@ msgstr "len" #: ../Doc/reference/datamodel.rst:296 ../Doc/reference/datamodel.rst:1103 msgid "sequence" -msgstr "Secuencias" +msgstr "sequence" #: ../Doc/reference/datamodel.rst:296 msgid "index operation" -msgstr "operación de índice" +msgstr "index operation" #: ../Doc/reference/datamodel.rst:296 msgid "item selection" -msgstr "selección de artículos" +msgstr "item selection" #: ../Doc/reference/datamodel.rst:296 ../Doc/reference/datamodel.rst:388 #: ../Doc/reference/datamodel.rst:466 msgid "subscription" -msgstr "suscripción" +msgstr "subscription" #: ../Doc/reference/datamodel.rst:311 ../Doc/reference/datamodel.rst:388 msgid "slicing" -msgstr "rebanar" +msgstr "slicing" #: ../Doc/reference/datamodel.rst:328 msgid "immutable sequence" -msgstr "Secuencia inmutable" +msgstr "immutable sequence" #: ../Doc/reference/datamodel.rst:328 msgid "immutable" -msgstr "inmutable" +msgstr "immutable" #: ../Doc/reference/datamodel.rst:339 ../Doc/reference/datamodel.rst:1798 #: ../Doc/reference/datamodel.rst:1828 msgid "string" -msgstr "cadenas de caracteres" +msgstr "string" #: ../Doc/reference/datamodel.rst:339 msgid "immutable sequences" -msgstr "secuencias inmutables" +msgstr "immutable sequences" #: ../Doc/reference/datamodel.rst:343 msgid "chr" @@ -6071,7 +6253,7 @@ msgstr "ord" #: ../Doc/reference/datamodel.rst:343 msgid "character" -msgstr "caracter" +msgstr "character" #: ../Doc/reference/datamodel.rst:343 msgid "Unicode" @@ -6079,15 +6261,15 @@ msgstr "Unicode" #: ../Doc/reference/datamodel.rst:363 msgid "tuple" -msgstr "tupla" +msgstr "tuple" #: ../Doc/reference/datamodel.rst:363 msgid "singleton" -msgstr "único" +msgstr "singleton" #: ../Doc/reference/datamodel.rst:363 msgid "empty" -msgstr "vacío" +msgstr "empty" #: ../Doc/reference/datamodel.rst:376 ../Doc/reference/datamodel.rst:1823 msgid "bytes" @@ -6099,7 +6281,7 @@ msgstr "byte" #: ../Doc/reference/datamodel.rst:388 msgid "mutable sequence" -msgstr "secuencia mutable" +msgstr "mutable sequence" #: ../Doc/reference/datamodel.rst:388 msgid "mutable" @@ -6108,50 +6290,50 @@ msgstr "mutable" #: ../Doc/reference/datamodel.rst:388 ../Doc/reference/datamodel.rst:955 #: ../Doc/reference/datamodel.rst:1096 msgid "assignment" -msgstr "asignación" +msgstr "assignment" #: ../Doc/reference/datamodel.rst:388 ../Doc/reference/datamodel.rst:856 #: ../Doc/reference/datamodel.rst:1535 ../Doc/reference/datamodel.rst:1717 #: ../Doc/reference/datamodel.rst:3218 msgid "statement" -msgstr "declaración" +msgstr "statement" #: ../Doc/reference/datamodel.rst:400 msgid "array" -msgstr "arreglo" +msgstr "array" #: ../Doc/reference/datamodel.rst:401 msgid "collections" -msgstr "colecciones" +msgstr "collections" #: ../Doc/reference/datamodel.rst:409 msgid "list" -msgstr "lista" +msgstr "list" #: ../Doc/reference/datamodel.rst:416 msgid "bytearray" -msgstr "arreglo de bytes" +msgstr "bytearray" #: ../Doc/reference/datamodel.rst:427 msgid "set type" -msgstr "tipo conjunto" +msgstr "set type" #: ../Doc/reference/datamodel.rst:447 msgid "set" -msgstr "conjunto" +msgstr "set" #: ../Doc/reference/datamodel.rst:455 msgid "frozenset" -msgstr "conjunto congelado" +msgstr "frozenset" #: ../Doc/reference/datamodel.rst:466 ../Doc/reference/datamodel.rst:1103 msgid "mapping" -msgstr "mapeos" +msgstr "mapping" #: ../Doc/reference/datamodel.rst:483 ../Doc/reference/datamodel.rst:937 #: ../Doc/reference/datamodel.rst:1912 msgid "dictionary" -msgstr "diccionario" +msgstr "dictionary" #: ../Doc/reference/datamodel.rst:502 msgid "dbm.ndbm" @@ -6163,42 +6345,42 @@ msgstr "dbm.gnu" #: ../Doc/reference/datamodel.rst:519 msgid "callable" -msgstr "invocable" +msgstr "callable" #: ../Doc/reference/datamodel.rst:519 ../Doc/reference/datamodel.rst:534 #: ../Doc/reference/datamodel.rst:742 ../Doc/reference/datamodel.rst:760 #: ../Doc/reference/datamodel.rst:773 ../Doc/reference/datamodel.rst:798 msgid "function" -msgstr "función" +msgstr "function" #: ../Doc/reference/datamodel.rst:519 ../Doc/reference/datamodel.rst:937 #: ../Doc/reference/datamodel.rst:960 ../Doc/reference/datamodel.rst:2849 msgid "call" -msgstr "llamada" +msgstr "call" #: ../Doc/reference/datamodel.rst:519 msgid "invocation" -msgstr "invocación" +msgstr "invocation" #: ../Doc/reference/datamodel.rst:519 msgid "argument" -msgstr "argumento" +msgstr "argument" #: ../Doc/reference/datamodel.rst:534 ../Doc/reference/datamodel.rst:660 msgid "user-defined" -msgstr "definida por el usuario" +msgstr "user-defined" #: ../Doc/reference/datamodel.rst:534 msgid "user-defined function" -msgstr "función definida por el usuario" +msgstr "user-defined function" #: ../Doc/reference/datamodel.rst:547 msgid "__closure__ (function attribute)" -msgstr "__closure__ (atributo función)" +msgstr "__closure__ (function attribute)" #: ../Doc/reference/datamodel.rst:547 msgid "__globals__ (function attribute)" -msgstr "__globals__ (atributo función)" +msgstr "__globals__ (function attribute)" #: ../Doc/reference/datamodel.rst:547 msgid "global" @@ -6206,193 +6388,191 @@ msgstr "global" #: ../Doc/reference/datamodel.rst:547 ../Doc/reference/datamodel.rst:876 msgid "namespace" -msgstr "espacio de nombre" +msgstr "namespace" #: ../Doc/reference/datamodel.rst:573 msgid "__doc__ (function attribute)" -msgstr "__doc__ (atributo función)" +msgstr "__doc__ (function attribute)" #: ../Doc/reference/datamodel.rst:573 msgid "__name__ (function attribute)" -msgstr "__name__ (atributo función)" +msgstr "__name__ (function attribute)" #: ../Doc/reference/datamodel.rst:573 msgid "__module__ (function attribute)" -msgstr "__module__ (atributo función)" +msgstr "__module__ (function attribute)" #: ../Doc/reference/datamodel.rst:573 msgid "__dict__ (function attribute)" -msgstr "__dict__ (atributo función)" +msgstr "__dict__ (function attribute)" #: ../Doc/reference/datamodel.rst:573 msgid "__defaults__ (function attribute)" -msgstr "__defaults__ (atributo función)" +msgstr "__defaults__ (function attribute)" #: ../Doc/reference/datamodel.rst:573 msgid "__code__ (function attribute)" -msgstr "__code__ (atributo función)" +msgstr "__code__ (function attribute)" #: ../Doc/reference/datamodel.rst:573 msgid "__annotations__ (function attribute)" -msgstr "__annotations__ (atributo función)" +msgstr "__annotations__ (function attribute)" #: ../Doc/reference/datamodel.rst:573 msgid "__kwdefaults__ (function attribute)" -msgstr "__kwdefaults__ (atributo función)" +msgstr "__kwdefaults__ (function attribute)" #: ../Doc/reference/datamodel.rst:573 msgid "__type_params__ (function attribute)" -msgstr "__type_params__ (atributo función)" +msgstr "__type_params__ (function attribute)" #: ../Doc/reference/datamodel.rst:660 ../Doc/reference/datamodel.rst:822 msgid "method" -msgstr "método" +msgstr "method" #: ../Doc/reference/datamodel.rst:660 msgid "user-defined method" -msgstr "método definido por el usuario" +msgstr "user-defined method" #: ../Doc/reference/datamodel.rst:668 msgid "__func__ (method attribute)" -msgstr "__func__ (atributo método)" +msgstr "__func__ (method attribute)" #: ../Doc/reference/datamodel.rst:668 msgid "__self__ (method attribute)" -msgstr "__self__ (atributo método)" +msgstr "__self__ (method attribute)" #: ../Doc/reference/datamodel.rst:668 msgid "__doc__ (method attribute)" -msgstr "__doc__ (atributo método)" +msgstr "__doc__ (method attribute)" #: ../Doc/reference/datamodel.rst:668 msgid "__name__ (method attribute)" -msgstr "__name__ (atributo método)" +msgstr "__name__ (method attribute)" #: ../Doc/reference/datamodel.rst:668 msgid "__module__ (method attribute)" -msgstr "__module__ (atributo método)" +msgstr "__module__ (method attribute)" #: ../Doc/reference/datamodel.rst:742 ../Doc/reference/datamodel.rst:1279 msgid "generator" -msgstr "generador" +msgstr "generator" #: ../Doc/reference/datamodel.rst:742 msgid "iterator" -msgstr "iterador" +msgstr "iterator" #: ../Doc/reference/datamodel.rst:760 ../Doc/reference/datamodel.rst:3405 msgid "coroutine" -msgstr "corrutina" +msgstr "coroutine" #: ../Doc/reference/datamodel.rst:773 msgid "asynchronous generator" -msgstr "generador asíncrono" +msgstr "asynchronous generator" #: ../Doc/reference/datamodel.rst:773 msgid "asynchronous iterator" -msgstr "iterador asíncrono" +msgstr "asynchronous iterator" #: ../Doc/reference/datamodel.rst:822 msgid "built-in method" -msgstr "método incorporado" +msgstr "built-in method" #: ../Doc/reference/datamodel.rst:822 msgid "built-in" -msgstr "incorporado" +msgstr "built-in" #: ../Doc/reference/datamodel.rst:856 msgid "import" -msgstr "importar" +msgstr "import" #: ../Doc/reference/datamodel.rst:876 msgid "__name__ (module attribute)" -msgstr "__name__ (atributo módulo)" +msgstr "__name__ (module attribute)" #: ../Doc/reference/datamodel.rst:876 msgid "__doc__ (module attribute)" -msgstr "__doc__ (atributo módulo)" +msgstr "__doc__ (module attribute)" #: ../Doc/reference/datamodel.rst:876 msgid "__file__ (module attribute)" -msgstr "__file__ (atributo módulo)" +msgstr "__file__ (module attribute)" #: ../Doc/reference/datamodel.rst:876 msgid "__annotations__ (module attribute)" -msgstr "__annotations__ (atributo módulo)" +msgstr "__annotations__ (module attribute)" #: ../Doc/reference/datamodel.rst:907 msgid "__dict__ (module attribute)" -msgstr "__dict__ (atributo módulo)" +msgstr "__dict__ (module attribute)" #: ../Doc/reference/datamodel.rst:937 ../Doc/reference/datamodel.rst:955 #: ../Doc/reference/datamodel.rst:1076 ../Doc/reference/datamodel.rst:1700 #: ../Doc/reference/datamodel.rst:2579 msgid "class" -msgstr "clase" +msgstr "class" #: ../Doc/reference/datamodel.rst:937 ../Doc/reference/datamodel.rst:1076 #: ../Doc/reference/datamodel.rst:1096 msgid "class instance" -msgstr "instancia de clase" +msgstr "class instance" #: ../Doc/reference/datamodel.rst:937 ../Doc/reference/datamodel.rst:1076 #: ../Doc/reference/datamodel.rst:2849 msgid "instance" -msgstr "instancia" +msgstr "instance" #: ../Doc/reference/datamodel.rst:937 ../Doc/reference/datamodel.rst:960 msgid "class object" -msgstr "objeto de clase" +msgstr "class object" #: ../Doc/reference/datamodel.rst:967 msgid "__name__ (class attribute)" -msgstr "__name__ (atributo de clase)" +msgstr "__name__ (class attribute)" #: ../Doc/reference/datamodel.rst:967 msgid "__module__ (class attribute)" -msgstr "__module__ (atributo de clase)" +msgstr "__module__ (class attribute)" #: ../Doc/reference/datamodel.rst:967 msgid "__dict__ (class attribute)" -msgstr "__dict__ (atributo de clase)" +msgstr "__dict__ (class attribute)" #: ../Doc/reference/datamodel.rst:967 msgid "__bases__ (class attribute)" -msgstr "__bases__ (atributo de clase)" +msgstr "__bases__ (class attribute)" #: ../Doc/reference/datamodel.rst:967 msgid "__doc__ (class attribute)" -msgstr "__doc__ (atributo de clase)" +msgstr "__doc__ (class attribute)" #: ../Doc/reference/datamodel.rst:967 msgid "__annotations__ (class attribute)" -msgstr "__annotations__ (atributo de clase)" +msgstr "__annotations__ (class attribute)" #: ../Doc/reference/datamodel.rst:967 msgid "__type_params__ (class attribute)" -msgstr "__type_params__ (atributo de clase)" +msgstr "__type_params__ (class attribute)" #: ../Doc/reference/datamodel.rst:967 -#, fuzzy msgid "__static_attributes__ (class attribute)" -msgstr "__dict__ (atributo de clase)" +msgstr "__static_attributes__ (class attribute)" #: ../Doc/reference/datamodel.rst:967 -#, fuzzy msgid "__firstlineno__ (class attribute)" -msgstr "__name__ (atributo de clase)" +msgstr "__firstlineno__ (class attribute)" #: ../Doc/reference/datamodel.rst:1114 msgid "__dict__ (instance attribute)" -msgstr "__dict__ (atributo de instancia)" +msgstr "__dict__ (instance attribute)" #: ../Doc/reference/datamodel.rst:1114 msgid "__class__ (instance attribute)" -msgstr "__class__ (atributo de instancia)" +msgstr "__class__ (instance attribute)" #: ../Doc/reference/datamodel.rst:1132 msgid "open" -msgstr "abrir" +msgstr "open" #: ../Doc/reference/datamodel.rst:1132 msgid "io" @@ -6400,11 +6580,11 @@ msgstr "io" #: ../Doc/reference/datamodel.rst:1132 msgid "popen() (in module os)" -msgstr "popen() (en el módulo os)" +msgstr "popen() (in module os)" #: ../Doc/reference/datamodel.rst:1132 msgid "makefile() (socket method)" -msgstr "makefile() (método de socket)" +msgstr "makefile() (socket method)" #: ../Doc/reference/datamodel.rst:1132 msgid "sys.stdin" @@ -6424,23 +6604,23 @@ msgstr "stdio" #: ../Doc/reference/datamodel.rst:1132 msgid "stdin (in module sys)" -msgstr "stdin (en el módulo sys)" +msgstr "stdin (in module sys)" #: ../Doc/reference/datamodel.rst:1132 msgid "stdout (in module sys)" -msgstr "stdout (en el módulo sys)" +msgstr "stdout (in module sys)" #: ../Doc/reference/datamodel.rst:1132 msgid "stderr (in module sys)" -msgstr "stderr (en el módulo sys)" +msgstr "stderr (in module sys)" #: ../Doc/reference/datamodel.rst:1161 msgid "internal type" -msgstr "tipo interno" +msgstr "internal type" #: ../Doc/reference/datamodel.rst:1161 msgid "types, internal" -msgstr "tipos, interno" +msgstr "types, internal" #: ../Doc/reference/datamodel.rst:1175 msgid "bytecode" @@ -6452,79 +6632,79 @@ msgstr "code" #: ../Doc/reference/datamodel.rst:1175 msgid "code object" -msgstr "objeto de código" +msgstr "code object" #: ../Doc/reference/datamodel.rst:1186 msgid "co_argcount (code object attribute)" -msgstr "co_argcount (atributo de objeto de código)" +msgstr "co_argcount (code object attribute)" #: ../Doc/reference/datamodel.rst:1186 msgid "co_posonlyargcount (code object attribute)" -msgstr "co_posonlyargcount (atributo de objeto de código)" +msgstr "co_posonlyargcount (code object attribute)" #: ../Doc/reference/datamodel.rst:1186 msgid "co_kwonlyargcount (code object attribute)" -msgstr "co_kwonlyargcount (atributo de objeto de código)" +msgstr "co_kwonlyargcount (code object attribute)" #: ../Doc/reference/datamodel.rst:1186 msgid "co_code (code object attribute)" -msgstr "co_code (atributo de objeto de código)" +msgstr "co_code (code object attribute)" #: ../Doc/reference/datamodel.rst:1186 msgid "co_consts (code object attribute)" -msgstr "co_consts (atributo de objeto de código)" +msgstr "co_consts (code object attribute)" #: ../Doc/reference/datamodel.rst:1186 msgid "co_filename (code object attribute)" -msgstr "co_filename (atributo de objeto de código)" +msgstr "co_filename (code object attribute)" #: ../Doc/reference/datamodel.rst:1186 msgid "co_firstlineno (code object attribute)" -msgstr "co_firstlineno (atributo de objeto de código)" +msgstr "co_firstlineno (code object attribute)" #: ../Doc/reference/datamodel.rst:1186 msgid "co_flags (code object attribute)" -msgstr "co_flags (atributo de objeto de código)" +msgstr "co_flags (code object attribute)" #: ../Doc/reference/datamodel.rst:1186 msgid "co_lnotab (code object attribute)" -msgstr "co_lnotab (atributo de objeto de código)" +msgstr "co_lnotab (code object attribute)" #: ../Doc/reference/datamodel.rst:1186 msgid "co_name (code object attribute)" -msgstr "co_name (atributo de objeto de código)" +msgstr "co_name (code object attribute)" #: ../Doc/reference/datamodel.rst:1186 msgid "co_names (code object attribute)" -msgstr "co_names (atributo de objeto de código)" +msgstr "co_names (code object attribute)" #: ../Doc/reference/datamodel.rst:1186 msgid "co_nlocals (code object attribute)" -msgstr "co_nlocals (atributo de objeto de código)" +msgstr "co_nlocals (code object attribute)" #: ../Doc/reference/datamodel.rst:1186 msgid "co_stacksize (code object attribute)" -msgstr "co_stacksize (atributo de objeto de código)" +msgstr "co_stacksize (code object attribute)" #: ../Doc/reference/datamodel.rst:1186 msgid "co_varnames (code object attribute)" -msgstr "co_varnames (atributo de objeto de código)" +msgstr "co_varnames (code object attribute)" #: ../Doc/reference/datamodel.rst:1186 msgid "co_cellvars (code object attribute)" -msgstr "co_cellvars (atributo de objeto de código)" +msgstr "co_cellvars (code object attribute)" #: ../Doc/reference/datamodel.rst:1186 msgid "co_freevars (code object attribute)" -msgstr "co_freevars (atributo de objeto de código)" +msgstr "co_freevars (code object attribute)" #: ../Doc/reference/datamodel.rst:1186 msgid "co_qualname (code object attribute)" -msgstr "co_qualname (atributo de objeto de código)" +msgstr "co_qualname (code object attribute)" #: ../Doc/reference/datamodel.rst:1297 msgid "documentation string" -msgstr "cadena de caracteres de documentación" +msgstr "documentation string" #: ../Doc/reference/datamodel.rst:1388 msgid "frame" @@ -6532,43 +6712,43 @@ msgstr "frame" #: ../Doc/reference/datamodel.rst:1394 msgid "f_back (frame attribute)" -msgstr "f_back (atributo de frame)" +msgstr "f_back (frame attribute)" #: ../Doc/reference/datamodel.rst:1394 msgid "f_code (frame attribute)" -msgstr "f_code (atributo de frame)" +msgstr "f_code (frame attribute)" #: ../Doc/reference/datamodel.rst:1394 msgid "f_globals (frame attribute)" -msgstr "f_globals (atributo de frame)" +msgstr "f_globals (frame attribute)" #: ../Doc/reference/datamodel.rst:1394 msgid "f_locals (frame attribute)" -msgstr "f_locals (atributo de frame)" +msgstr "f_locals (frame attribute)" #: ../Doc/reference/datamodel.rst:1394 msgid "f_lasti (frame attribute)" -msgstr "f_lasti (atributo de frame)" +msgstr "f_lasti (frame attribute)" #: ../Doc/reference/datamodel.rst:1394 msgid "f_builtins (frame attribute)" -msgstr "f_builtins (atributo de frame)" +msgstr "f_builtins (frame attribute)" #: ../Doc/reference/datamodel.rst:1438 msgid "f_trace (frame attribute)" -msgstr "f_trace (atributo de frame)" +msgstr "f_trace (frame attribute)" #: ../Doc/reference/datamodel.rst:1438 msgid "f_trace_lines (frame attribute)" -msgstr "f_trace_lines (atributo de frame)" +msgstr "f_trace_lines (frame attribute)" #: ../Doc/reference/datamodel.rst:1438 msgid "f_trace_opcodes (frame attribute)" -msgstr "f_trace_opcodes (atributo de frame)" +msgstr "f_trace_opcodes (frame attribute)" #: ../Doc/reference/datamodel.rst:1438 msgid "f_lineno (frame attribute)" -msgstr "f_lineno (atributo de frame)" +msgstr "f_lineno (frame attribute)" #: ../Doc/reference/datamodel.rst:1498 msgid "traceback" @@ -6584,11 +6764,11 @@ msgstr "trace" #: ../Doc/reference/datamodel.rst:1498 msgid "exception" -msgstr "excepción" +msgstr "exception" #: ../Doc/reference/datamodel.rst:1498 msgid "handler" -msgstr "manejador" +msgstr "handler" #: ../Doc/reference/datamodel.rst:1498 msgid "execution" @@ -6596,11 +6776,11 @@ msgstr "execution" #: ../Doc/reference/datamodel.rst:1498 msgid "exc_info (in module sys)" -msgstr "exc_info (en el módulo sys)" +msgstr "exc_info (in module sys)" #: ../Doc/reference/datamodel.rst:1498 msgid "last_traceback (in module sys)" -msgstr "last_traceback (en el módulo sys)" +msgstr "last_traceback (in module sys)" #: ../Doc/reference/datamodel.rst:1498 msgid "sys.exc_info" @@ -6616,15 +6796,15 @@ msgstr "sys.last_traceback" #: ../Doc/reference/datamodel.rst:1535 msgid "tb_frame (traceback attribute)" -msgstr "tb_frame (atributo de traceback)" +msgstr "tb_frame (traceback attribute)" #: ../Doc/reference/datamodel.rst:1535 msgid "tb_lineno (traceback attribute)" -msgstr "tb_lineno (atributo de traceback)" +msgstr "tb_lineno (traceback attribute)" #: ../Doc/reference/datamodel.rst:1535 msgid "tb_lasti (traceback attribute)" -msgstr "tb_lasti (atributo de traceback)" +msgstr "tb_lasti (traceback attribute)" #: ../Doc/reference/datamodel.rst:1535 msgid "try" @@ -6632,7 +6812,7 @@ msgstr "try" #: ../Doc/reference/datamodel.rst:1565 msgid "tb_next (traceback attribute)" -msgstr "tb_next (atributo de traceback)" +msgstr "tb_next (traceback attribute)" #: ../Doc/reference/datamodel.rst:1581 ../Doc/reference/datamodel.rst:2927 msgid "slice" @@ -6640,35 +6820,35 @@ msgstr "slice" #: ../Doc/reference/datamodel.rst:1587 msgid "start (slice object attribute)" -msgstr "comienzo (atributo de objeto slice)" +msgstr "start (slice object attribute)" #: ../Doc/reference/datamodel.rst:1587 msgid "stop (slice object attribute)" -msgstr "stop (atributo de objeto slice)" +msgstr "stop (slice object attribute)" #: ../Doc/reference/datamodel.rst:1587 msgid "step (slice object attribute)" -msgstr "step (atributo de objeto slice)" +msgstr "step (slice object attribute)" #: ../Doc/reference/datamodel.rst:1635 msgid "operator" -msgstr "operador" +msgstr "operator" #: ../Doc/reference/datamodel.rst:1635 msgid "overloading" -msgstr "sobrecarga" +msgstr "overloading" #: ../Doc/reference/datamodel.rst:1635 msgid "__getitem__() (mapping object method)" -msgstr "__getitem__() (método de objeto mapping)" +msgstr "__getitem__() (mapping object method)" #: ../Doc/reference/datamodel.rst:1671 msgid "subclassing" -msgstr "subclase" +msgstr "subclassing" #: ../Doc/reference/datamodel.rst:1671 msgid "immutable types" -msgstr "tipos inmutables" +msgstr "immutable types" #: ../Doc/reference/datamodel.rst:1700 msgid "constructor" @@ -6680,7 +6860,7 @@ msgstr "destructor" #: ../Doc/reference/datamodel.rst:1717 msgid "finalizer" -msgstr "finalizador" +msgstr "finalizer" #: ../Doc/reference/datamodel.rst:1717 msgid "del" @@ -6688,31 +6868,31 @@ msgstr "del" #: ../Doc/reference/datamodel.rst:1781 msgid "repr() (built-in function)" -msgstr "repr() (función incorporada)" +msgstr "repr() (built-in function)" #: ../Doc/reference/datamodel.rst:1781 msgid "__repr__() (object method)" -msgstr "__repr__() (método objeto)" +msgstr "__repr__() (object method)" #: ../Doc/reference/datamodel.rst:1798 msgid "__str__() (object method)" -msgstr "__str__() (método objeto)" +msgstr "__str__() (object method)" #: ../Doc/reference/datamodel.rst:1798 msgid "format() (built-in function)" -msgstr "format() (función incorporada)" +msgstr "format() (built-in function)" #: ../Doc/reference/datamodel.rst:1798 msgid "print() (built-in function)" -msgstr "print() (función incorporada)" +msgstr "print() (built-in function)" #: ../Doc/reference/datamodel.rst:1828 msgid "__format__() (object method)" -msgstr "__format__() (método objeto)" +msgstr "__format__() (object method)" #: ../Doc/reference/datamodel.rst:1828 msgid "conversion" -msgstr "conversión" +msgstr "conversion" #: ../Doc/reference/datamodel.rst:1828 msgid "print" @@ -6720,7 +6900,7 @@ msgstr "print" #: ../Doc/reference/datamodel.rst:1867 msgid "comparisons" -msgstr "comparaciones" +msgstr "comparisons" #: ../Doc/reference/datamodel.rst:1912 msgid "hash" @@ -6728,55 +6908,55 @@ msgstr "hash" #: ../Doc/reference/datamodel.rst:1993 msgid "__len__() (mapping object method)" -msgstr "__len__() (método objeto mapping)" +msgstr "__len__() (mapping object method)" #: ../Doc/reference/datamodel.rst:2097 msgid "__getattr__ (module attribute)" -msgstr "__getattr__ (atributo de módulo)" +msgstr "__getattr__ (module attribute)" #: ../Doc/reference/datamodel.rst:2097 msgid "__dir__ (module attribute)" -msgstr "__dir__ (atributo de módulo)" +msgstr "__dir__ (module attribute)" #: ../Doc/reference/datamodel.rst:2097 msgid "__class__ (module attribute)" -msgstr "__class__ (atributo de módulo)" +msgstr "__class__ (module attribute)" #: ../Doc/reference/datamodel.rst:2468 msgid "metaclass" -msgstr "metaclases" +msgstr "metaclass" #: ../Doc/reference/datamodel.rst:2468 msgid "= (equals)" -msgstr "= (es igual a)" +msgstr "= (equals)" #: ../Doc/reference/datamodel.rst:2468 msgid "class definition" -msgstr "definición de clase" +msgstr "class definition" #: ../Doc/reference/datamodel.rst:2532 msgid "metaclass hint" -msgstr "pista de metaclase" +msgstr "metaclass hint" #: ../Doc/reference/datamodel.rst:2555 msgid "__prepare__ (metaclass method)" -msgstr "__prepare__ (método de metaclase)" +msgstr "__prepare__ (metaclass method)" #: ../Doc/reference/datamodel.rst:2579 msgid "body" -msgstr "cuerpo" +msgstr "body" #: ../Doc/reference/datamodel.rst:2599 msgid "__class__ (method cell)" -msgstr "__class__ (celda de método)" +msgstr "__class__ (method cell)" #: ../Doc/reference/datamodel.rst:2599 msgid "__classcell__ (class namespace entry)" -msgstr "__classcell;__ (entrada de espacio de nombre de clase)" +msgstr "__classcell__ (class namespace entry)" #: ../Doc/reference/datamodel.rst:2897 msgid "__bool__() (object method)" -msgstr "__bool__() (método objeto)" +msgstr "__bool__() (object method)" #: ../Doc/reference/datamodel.rst:3055 ../Doc/reference/datamodel.rst:3090 msgid "divmod" @@ -6809,4 +6989,4 @@ msgstr "with" #: ../Doc/reference/datamodel.rst:3218 msgid "context manager" -msgstr "gestor de contexto" +msgstr "context manager" diff --git a/reference/expressions.po b/reference/expressions.po index f760b2a0bc..894a740223 100644 --- a/reference/expressions.po +++ b/reference/expressions.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-21 17:49+0100\n" -"Last-Translator: Cristián Maureira-Fredes \n" -"Language: es\n" +"PO-Revision-Date: 2025-10-24 18:37+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.7\n" #: ../Doc/reference/expressions.rst:6 msgid "Expressions" @@ -73,12 +74,11 @@ msgstr "" "a complejo;" #: ../Doc/reference/expressions.rst:36 -#, fuzzy msgid "" "otherwise, if either argument is a floating-point number, the other is " "converted to floating point;" msgstr "" -"de otra forma, si cualquier de los argumentos es un número de punto " +"de otra forma, si cualquiera de los argumentos es un número de punto " "flotante, el otro es convertido a punto flotante;" #: ../Doc/reference/expressions.rst:39 @@ -130,13 +130,13 @@ msgid "" "object. When a name is not bound, an attempt to evaluate it raises a :exc:" "`NameError` exception." msgstr "" -"Cuando el nombre es vinculado a un objeto, la evaluación del átomo yields " +"Cuando el nombre es vinculado a un objeto, la evaluación del átomo genera " "ese objeto. Cuando un nombre no es vinculado, un intento de evaluarlo genera " "una excepción :exc:`NameError`." #: ../Doc/reference/expressions.rst:87 msgid "Private name mangling" -msgstr "" +msgstr "Alteración de nombre privado" #: ../Doc/reference/expressions.rst:89 msgid "" @@ -144,10 +144,13 @@ msgid "" "two or more underscore characters and does not end in two or more " "underscores, it is considered a :dfn:`private name` of that class." msgstr "" +"Cuando un identificador que ocurre textualmente en una definición de clase " +"comienza con dos o más caracteres de guión bajo y no termina en dos o más " +"guiones bajos, es considerado un :dfn:`private name` de esa clase." #: ../Doc/reference/expressions.rst:95 msgid "The :ref:`class specifications `." -msgstr "" +msgstr "La :ref:`class specifications `." #: ../Doc/reference/expressions.rst:97 msgid "" @@ -155,24 +158,35 @@ msgid "" "is generated for them. If the transformed name is longer than 255 " "characters, implementation-defined truncation may happen." msgstr "" +"Más concretamente, los nombres privados son transformados a una forma más " +"larga antes de que se genere código para ellos. Si el nombre transformado " +"tiene más de 255 caracteres, puede producirse un truncamiento definido por " +"la implementación." #: ../Doc/reference/expressions.rst:101 msgid "" "The transformation is independent of the syntactical context in which the " "identifier is used but only the following private identifiers are mangled:" msgstr "" +"La transformación es independiente del contexto sintáctico en el que se " +"utilice el identificador, pero sólo se alteran los siguientes " +"identificadores privados:" #: ../Doc/reference/expressions.rst:104 msgid "" "Any name used as the name of a variable that is assigned or read or any name " "of an attribute being accessed." msgstr "" +"Cualquier nombre utilizado como nombre de una variable que se asigna o se " +"lee o cualquier nombre de un atributo al que se accede." #: ../Doc/reference/expressions.rst:107 msgid "" "The :attr:`~definition.__name__` attribute of nested functions, classes, and " "type aliases is however not mangled." msgstr "" +"Sin embargo, el atributo :attr:`~definition.__name__` de funciones " +"anidadas, clases y alias de tipo no son alterados." #: ../Doc/reference/expressions.rst:110 msgid "" @@ -180,15 +194,21 @@ msgid "" "module is part of a package (i.e., its name contains a dot), the name is " "*not* mangled, e.g., the ``__foo`` in ``import __foo.bar`` is not mangled." msgstr "" +"El nombre de módulos importados, por ejemplo ``__spam`` en ``import " +"__spam``. Si el módulo es parte de un paquete (por ejemplo, si su nombre " +"contiene un punto), el nombre *no* es alterado. Por ejemplo, ``__foo`` en " +"``import __foo.bar`` no es alterado." #: ../Doc/reference/expressions.rst:115 msgid "" "The name of an imported member, e.g., ``__f`` in ``from spam import __f``." msgstr "" +"El nombre de un miembro importado, por ejemplo ``__f`` en ``from spam import " +"__f``." #: ../Doc/reference/expressions.rst:117 msgid "The transformation rule is defined as follows:" -msgstr "" +msgstr "La norma de transformación se define de la siguiente forma:" #: ../Doc/reference/expressions.rst:119 msgid "" @@ -197,6 +217,10 @@ msgid "" "identifier ``__spam`` occurring in a class named ``Foo``, ``_Foo`` or " "``__Foo`` is transformed to ``_Foo__spam``." msgstr "" +"El nombre de la clase, con los caracteres de guión bajo iniciales eliminados " +"y un único caracter de guión bajo inicial insertado, se inserta delante del " +"identificador. Por ejemplo, el identificador ``__spam`` que aparece en la " +"clase llamada ``Foo``, ``_Foo`` o ``__Foo`` se transforma en ``_Foo__spam``." #: ../Doc/reference/expressions.rst:124 msgid "" @@ -204,6 +228,9 @@ msgid "" "identity, e.g., the identifier ``__spam`` occurring in a class named ``_`` " "or ``__`` is left as is." msgstr "" +"Si el nombre de la clase consiste únicamente en caracteres de guión bajo, la " +"transformación es la identidad. Por ejemplo, el identificador ``__spam`` que " +"aparece en una clase llamada ``_`` o ``__`` permanece igual." #: ../Doc/reference/expressions.rst:131 msgid "Literals" @@ -216,7 +243,6 @@ msgstr "" "numéricos:" #: ../Doc/reference/expressions.rst:141 -#, fuzzy msgid "" "Evaluation of a literal yields an object of the given type (string, bytes, " "integer, floating-point number, complex number) with the given value. The " @@ -260,9 +286,9 @@ msgid "" "if the list contains at least one comma, it yields a tuple; otherwise, it " "yields the single expression that makes up the expression list." msgstr "" -"Una expresión entre paréntesis yields lo que la lista de expresión yields: " +"Una expresión entre paréntesis produce lo que la lista de expresión *yield*: " "si la lista contiene al menos una coma, produce una tupla; en caso " -"contrario, yields la única expresión que que forma la lista de expresiones." +"contrario, produce la única expresión que que forma la lista de expresiones." #: ../Doc/reference/expressions.rst:177 msgid "" @@ -270,9 +296,9 @@ msgid "" "immutable, the same rules as for literals apply (i.e., two occurrences of " "the empty tuple may or may not yield the same object)." msgstr "" -"Un par de paréntesis vacío yields un objeto de tupla vacío. Debido a que las " -"tuplas son inmutables, se aplican las mismas reglas que aplican para " -"literales (ej., dos ocurrencias de una tupla vacía puede o no yields el " +"Un par de paréntesis vacío produce un objeto de tupla vacío. Debido a que " +"las tuplas son inmutables, se aplican las mismas reglas que aplican para " +"literales (ej., dos ocurrencias de una tupla vacía puede o no produce el " "mismo objeto)." #: ../Doc/reference/expressions.rst:185 @@ -374,7 +400,6 @@ msgstr "" "alcance implícitamente anidado." #: ../Doc/reference/expressions.rst:244 -#, fuzzy msgid "" "Since Python 3.6, in an :keyword:`async def` function, an :keyword:`!async " "for` clause may be used to iterate over a :term:`asynchronous iterator`. A " @@ -387,13 +412,8 @@ msgstr "" "cláusula :keyword:`!async for` para iterar sobre un :term:`asynchronous " "iterator`. Una comprensión en una función :keyword:`!async def` puede " "consistir en una cláusula :keyword:`!for` o :keyword:`!async for` después de " -"la expresión inicial, puede contener cláusulas :keyword:`!for` o :keyword:`!" -"async for` adicionales y también puede usar expresiones :keyword:`await`. Si " -"una comprensión contiene cláusulas :keyword:`!async for` o expresiones :" -"keyword:`!await` u otras comprensiones asíncronas, se denomina :dfn:" -"`comprensión asíncrona`. Una comprensión asíncrona puede suspender la " -"ejecución de la función de rutina en la que aparece. Véase también :pep:" -"`530`." +"la expresión inicial, puede contener cláusulas adicionales :keyword:`!for` " +"o :keyword:`!async for` y también puede usar expresiones :keyword:`await`." #: ../Doc/reference/expressions.rst:251 msgid "" @@ -404,6 +424,12 @@ msgid "" "comprehension may suspend the execution of the coroutine function in which " "it appears. See also :pep:`530`." msgstr "" +"Si una comprensión contiene cláusulas :keyword:`!async for` or si contiene " +"expresiones :keyword:`!await` u otra comprensión asíncrona en cualquier " +"sitio excepto la expresión iterable en la cláusula :keyword:`!for` más a la " +"izquierda, se le llama una :dfn:`asynchronous comprehension`. Una " +"comprensión asíncrona podría suspender la ejecución de la función de " +"corutina en la que aparece. Consulte también :pep:`530`." #: ../Doc/reference/expressions.rst:258 msgid "Asynchronous comprehensions were introduced." @@ -671,7 +697,7 @@ msgstr "" #: ../Doc/reference/expressions.rst:446 msgid "Yield expressions" -msgstr "Expresiones yield" +msgstr "Expresiones *yield*" #: ../Doc/reference/expressions.rst:459 msgid "" @@ -682,12 +708,12 @@ msgid "" "keyword:`async def` function's body causes that coroutine function to be an " "asynchronous generator function. For example::" msgstr "" -"La expresión yield se usa al definir una función :term:`generator` o una " +"La expresión *yield* se usa al definir una función :term:`generator` o una " "función :term:`asynchronous generator` y, por lo tanto, solo se puede usar " -"en el cuerpo de una definición de función. El uso de una expresión yield en " -"el cuerpo de una función hace que esa función sea una función generadora, y " -"su uso en el cuerpo de una función :keyword:`async def` hace que la función " -"corrutina sea una función generadora asíncrona. Por ejemplo::" +"en el cuerpo de una definición de función. El uso de una expresión *yield* " +"en el cuerpo de una función hace que esa función sea una función generadora, " +"y su uso en el cuerpo de una función :keyword:`async def` hace que la " +"función corrutina sea una función generadora asíncrona. Por ejemplo::" #: ../Doc/reference/expressions.rst:466 msgid "" @@ -697,6 +723,10 @@ msgid "" "async def agen(): # defines an asynchronous generator function\n" " yield 123" msgstr "" +"def gen(): # define una función generadora\n" +" yield 123\n" +"\n" +"async def agen(): # define una función generadora asíncrona" #: ../Doc/reference/expressions.rst:472 msgid "" @@ -714,7 +744,7 @@ msgid "" "Yield expressions prohibited in the implicitly nested scopes used to " "implement comprehensions and generator expressions." msgstr "" -"Expresiones yield prohibidas en los ámbitos anidados implícitamente " +"Expresiones *yield* prohibidas en los ámbitos anidados implícitamente " "utilizados para implementar comprensiones y expresiones de generador." #: ../Doc/reference/expressions.rst:480 @@ -728,7 +758,6 @@ msgstr "" "sección :ref:`asynchronous-generator-functions`." #: ../Doc/reference/expressions.rst:484 -#, fuzzy msgid "" "When a generator function is called, it returns an iterator known as a " "generator. That generator then controls the execution of the generator " @@ -748,24 +777,24 @@ msgid "" "`None`. Otherwise, if :meth:`~generator.send` is used, then the result will " "be the value passed in to that method." msgstr "" -"Cuando se llama a una función generadora, devuelve un iterador conocido como " +"Cuando se llama a una función generadora, retorna un iterador conocido como " "generador. Ese generador luego controla la ejecución de la función del " "generador. La ejecución comienza cuando se llama a uno de los métodos del " -"generador. En ese momento, la ejecución continúa con la primera expresión de " -"rendimiento, donde se suspende nuevamente, devolviendo el valor de :token:" -"`~python-grammar:expression_list` al llamador del generador, o ``None`` si :" -"token:`~python-grammar:expression_list` se omite. Por suspendido queremos " -"decir que se retiene todo el estado local, incluidos los enlaces actuales de " -"las variables locales, el puntero de instrucción, la pila de evaluación " -"interna y el estado de cualquier manejo de excepciones. Cuando se reanuda la " +"generador. En ese momento, la ejecución procede con la primera expresión " +"*yield*, donde se suspende nuevamente, retornando el valor de :token:" +"`~python-grammar:yield_list` a quien llame al generador, o ``None`` si :" +"token:`~python-grammar:yield_list` se omite. Por suspendido entiéndase que " +"se retiene todo el estado local, incluyendo los enlaces actuales de las " +"variables locales, el puntero de instrucción, la pila de evaluación interna " +"y el estado de cualquier manejo de excepciones. Cuando se reanuda la " "ejecución llamando a uno de los métodos del generador, la función puede " -"continuar exactamente como si la expresión de rendimiento fuera simplemente " -"otra llamada externa. El valor de la expresión de rendimiento después de la " -"reanudación depende del método que reanudó la ejecución. Si se utiliza :meth:" -"`~generator.__next__` (normalmente a través de un :keyword:`for` o el " -"integrado :func:`next`), el resultado es :const:`None`. De lo contrario, si " -"se utiliza :meth:`~generator.send`, el resultado será el valor pasado a ese " -"método." +"continuar exactamente como si la expresión *yield* fuera simplemente otra " +"llamada externa. El valor de la expresión *yield* después de la reanudación " +"depende del método que reanudó la ejecución. Si se utiliza :meth:`~generator." +"__next__` (normalmente a través de un :keyword:`for` o la función " +"incorporada :func:`next`), el resultado es :const:`None`. De lo contrario, " +"si se utiliza :meth:`~generator.send`, el resultado será el valor pasado a " +"ese método." #: ../Doc/reference/expressions.rst:504 msgid "" @@ -775,11 +804,11 @@ msgid "" "function cannot control where the execution should continue after it yields; " "the control is always transferred to the generator's caller." msgstr "" -"Todo este hace a las funciones generadores similar a las corrutinas; yield " -"múltiples veces, tienen más de un punto de entrada y su ejecución puede ser " -"suspendida. La única diferencia es que una función generadora no puede " -"controlar si la ejecución debe continuar después de yield; el control " -"siempre es transferido al invocador del generador." +"Todo este hace a las funciones generadores similar a las corrutinas; " +"producen múltiples veces, tienen más de un punto de entrada y su ejecución " +"puede ser suspendida. La única diferencia es que una función generadora no " +"puede controlar si la ejecución debe continuar después de que ceda; el " +"control siempre es transferido al invocador del generador." #: ../Doc/reference/expressions.rst:510 msgid "" @@ -789,11 +818,11 @@ msgid "" "meth:`~generator.close` method will be called, allowing any pending :keyword:" "`finally` clauses to execute." msgstr "" -"Las expresiones yield están permitidas en cualquier lugar en un constructo :" -"keyword:`try`. Si el generador no es reanudado antes de finalizar " -"(alcanzando un recuento de referencia cero o colectando basura), el método " -"generador-iterador :meth:`~generator.close` será invocado, permitiendo la " -"ejecución de cualquier cláusula :keyword:`finally` pendiente." +"Las expresiones *yield* están permitidas en cualquier lugar en un " +"constructo :keyword:`try`. Si el generador no es reanudado antes de " +"finalizar (alcanzando un recuento de referencia cero o colectando basura), " +"el método generador-iterador :meth:`~generator.close` será invocado, " +"permitiendo la ejecución de cualquier cláusula :keyword:`finally` pendiente." #: ../Doc/reference/expressions.rst:519 msgid "" @@ -825,7 +854,7 @@ msgid "" msgstr "" "Cuando el iterador subyacente está completo, el atributo :attr:" "`~StopIteration.value` de la instancia :exc:`StopIteration` generada se " -"convierte en el valor de la expresión yield. Puede ser establecido " +"convierte en el valor de la expresión *yield*. Puede ser establecido " "explícitamente al generar :exc:`StopIteration` o automáticamente cuando el " "subiterador es un generador (retornando un valor del subgenerador)." @@ -840,7 +869,7 @@ msgid "" "The parentheses may be omitted when the yield expression is the sole " "expression on the right hand side of an assignment statement." msgstr "" -"Los paréntesis pueden ser omitidos cuando la expresión yield es la única " +"Los paréntesis pueden ser omitidos cuando la expresión *yield* es la única " "expresión en el lado derecho de una sentencia de asignación." #: ../Doc/reference/expressions.rst:543 @@ -913,7 +942,6 @@ msgstr "" "excepción :exc:`ValueError`." #: ../Doc/reference/expressions.rst:574 -#, fuzzy msgid "" "Starts the execution of a generator function or resumes it at the last " "executed yield expression. When a generator function is resumed with a :" @@ -926,12 +954,12 @@ msgid "" msgstr "" "Inicia la ejecución de una función generadora o la reanuda en la última " "expresión de rendimiento ejecutada. Cuando se reanuda una función de " -"generador con un método :meth:`~generator.__next__`, la expresión de " -"rendimiento actual siempre se evalúa como :const:`None`. Luego, la ejecución " -"continúa con la siguiente expresión de rendimiento, donde el generador se " -"suspende nuevamente y el valor de :token:`~python-grammar:expression_list` " -"se devuelve a la persona que llama de :meth:`__next__`. Si el generador sale " -"sin generar otro valor, se genera una excepción :exc:`StopIteration`." +"generador con un método :meth:`~generator.send`, la expresión de rendimiento " +"actual siempre se evalúa como :const:`None`. Luego, la ejecución continúa " +"con la siguiente expresión de rendimiento, donde el generador se suspende " +"nuevamente y el valor de :token:`~python-grammar:yield_list` se retorna a la " +"aquello que llame :meth:`__next__`. Si el generador sale sin generar otro " +"valor, se lanza una excepción :exc:`StopIteration`." #: ../Doc/reference/expressions.rst:583 msgid "" @@ -952,7 +980,7 @@ msgid "" "expression that could receive the value." msgstr "" "Reanuda la ejecución y \"envía\" un valor dentro de la función generadora. " -"El argumento *value* se convierte en el resultado de la expresión yield " +"El argumento *value* se convierte en el resultado de la expresión *yield* " "actual. El método :meth:`send` retorna el siguiente valor producido por el " "generador o genera :exc:`StopIteration` si el generador termina sin producir " "otro valor. Cuando se ejecuta :meth:`send` para comenzar el generador, debe " @@ -967,7 +995,7 @@ msgid "" "If the generator function does not catch the passed-in exception, or raises " "a different exception, then that exception propagates to the caller." msgstr "" -"Genera una excepción en el punto donde se pausó el generador y devuelve el " +"Genera una excepción en el punto donde se pausó el generador y retorna el " "siguiente valor generado por la función del generador. Si el generador sale " "sin generar otro valor, se genera una excepción :exc:`StopIteration`. Si la " "función generadora no detecta la excepción pasada o genera una excepción " @@ -1009,7 +1037,6 @@ msgstr "" "puede eliminarse en una versión futura de Python." #: ../Doc/reference/expressions.rst:629 -#, fuzzy msgid "" "Raises a :exc:`GeneratorExit` at the point where the generator function was " "paused. If the generator function catches the exception and returns a " @@ -1021,19 +1048,23 @@ msgid "" "exited due to an exception or normal exit, :meth:`close` returns :const:" "`None` and has no other effect." msgstr "" -"Genera :exc:`GeneratorExit` en el punto donde la función generadora fue " -"pausada. Si la función generadora termina sin errores, está ya cerrada o " -"genera :exc:`GeneratorExit` (sin cazar la excepción), close retorna a su " -"invocador. Si el generador produce un valor, se genera un :exc:" -"`RuntimeError`. Si el generador genera cualquier otra excepción, es " -"propagado al invocador. :meth:`close` no hace nada si el generador ya fue " -"terminado debido a una excepción o una salida normal." +"Lanza la excepción :exc:`GeneratorExit` en el punto donde la función " +"generadora fue pausada. Si la función generadora atrapa la excepción y " +"retorna un valor, este valor se retorna de :meth:`close`. Si la función " +"generadora ya está ya cerrada o lanza :exc:`GeneratorExit` (sin atrapar la " +"excepción), :meth:`close` retorna :const:`None`. Si el generador produce un " +"valor, se lanza un :exc:`RuntimeError`. Si el generador lanza cualquier otra " +"excepción, es propagado al invocador. Si el generador ya fue terminado " +"debido a una excepción o una salida normal, :meth:`close` retorna :const:" +"`None` y no tiene otro efecto." #: ../Doc/reference/expressions.rst:641 msgid "" "If a generator returns a value upon being closed, the value is returned by :" "meth:`close`." msgstr "" +"Si un generador retorna un valor al cerrarse, el valor es retornado por :" +"meth:`close`." #: ../Doc/reference/expressions.rst:647 msgid "Examples" @@ -1074,6 +1105,30 @@ msgid "" ">>> generator.close()\n" "Don't forget to clean up when 'close()' is called." msgstr "" +">>> def echo(value=None):\n" +"... print(\"Execution starts when 'next()' is called for the first time." +"\")\n" +"... try:\n" +"... while True:\n" +"... try:\n" +"... value = (yield value)\n" +"... except Exception as e:\n" +"... value = e\n" +"... finally:\n" +"... print(\"Don't forget to clean up when 'close()' is called.\")\n" +"...\n" +">>> generator = echo(1)\n" +">>> print(next(generator))\n" +"Execution starts when 'next()' is called for the first time.\n" +"1\n" +">>> print(next(generator))\n" +"None\n" +">>> print(generator.send(2))\n" +"2\n" +">>> generator.throw(TypeError, \"spam\")\n" +"TypeError('spam',)\n" +">>> generator.close()\n" +"Don't forget to clean up when 'close()' is called." #: ../Doc/reference/expressions.rst:676 msgid "" @@ -1093,9 +1148,9 @@ msgid "" "keyword:`async def` further defines the function as an :term:`asynchronous " "generator` function." msgstr "" -"La presencia de una expresión yield en una función o método definido usando :" -"keyword:`async def` adicionalmente define la función como una función :term:" -"`asynchronous generator`." +"La presencia de una expresión *yield* en una función o método definido " +"usando :keyword:`async def` adicionalmente define la función como una " +"función :term:`asynchronous generator`." #: ../Doc/reference/expressions.rst:688 msgid "" @@ -1114,7 +1169,6 @@ msgstr "" "sentencia :keyword:`for`." #: ../Doc/reference/expressions.rst:695 -#, fuzzy msgid "" "Calling one of the asynchronous generator's methods returns an :term:" "`awaitable` object, and the execution starts when this object is awaited on. " @@ -1131,21 +1185,21 @@ msgid "" "then the result is :const:`None`. Otherwise, if :meth:`~agen.asend` is used, " "then the result will be the value passed in to that method." msgstr "" -"Llamar a uno de los métodos del generador asíncrono devuelve un objeto :term:" +"Llamar a uno de los métodos del generador asíncrono retorna un objeto :term:" "`awaitable` y la ejecución comienza cuando se espera este objeto. En ese " -"momento, la ejecución procede a la primera expresión yield, donde se " -"suspende nuevamente, devolviendo el valor de :token:`~python-grammar:" -"expression_list` a la rutina en espera. Al igual que con un generador, la " +"momento, la ejecución procede a la primera expresión *yield*, donde se " +"suspende nuevamente, retornando el valor de :token:`~python-grammar:" +"yield_list` a la corutina en espera. Al igual que con un generador, la " "suspensión significa que se retiene todo el estado local, incluidos los " "enlaces actuales de las variables locales, el puntero de instrucción, la " "pila de evaluación interna y el estado de cualquier manejo de excepción. " -"Cuando se reanuda la ejecución esperando el siguiente objeto devuelto por " +"Cuando se reanuda la ejecución esperando el siguiente objeto retornado por " "los métodos del generador asíncrono, la función puede proceder exactamente " -"como si la expresión yield fuera simplemente otra llamada externa. El valor " -"de la expresión yield después de reanudar depende del método que reanudó la " -"ejecución. Si se utiliza :meth:`~agen.__anext__`, el resultado es :const:" -"`None`. De lo contrario, si se usa :meth:`~agen.asend`, el resultado será el " -"valor pasado a ese método." +"como si la expresión *yield* fuera simplemente otra llamada externa. El " +"valor de la expresión *yield* después de reanudar depende del método que " +"reanudó la ejecución. Si se utiliza :meth:`~agen.__anext__`, el resultado " +"es :const:`None`. De lo contrario, si se usa :meth:`~agen.asend`, el " +"resultado será el valor pasado a ese método." #: ../Doc/reference/expressions.rst:710 msgid "" @@ -1182,11 +1236,11 @@ msgid "" "the resulting coroutine object, thus allowing any pending :keyword:`!" "finally` clauses to execute." msgstr "" -"En una función generadora asincrónica, las expresiones yield están " +"En una función generadora asincrónica, las expresiones *yield* están " "permitidas en cualquier lugar de un constructo :keyword:`try`. Sin embargo, " "si un generador asincrónico no es reanudado antes de finalizar (alcanzando " "un contador de referencia cero o recogiendo basura), entonces una expresión " -"yield dentro de un constructo :keyword:`!try` podría fallar al ejecutar " +"*yield* dentro de un constructo :keyword:`!try` podría fallar al ejecutar " "cláusulas :keyword:`finally` pendientes. En este caso, es responsabilidad " "del bucle de eventos o del planificador ejecutando el generador asincrónico " "invocar el método :meth:`~agen.aclose` del generador-iterador asincrónico y " @@ -1236,7 +1290,6 @@ msgstr "" "los cuales son usados para controlar la ejecución de una función generadora." #: ../Doc/reference/expressions.rst:757 -#, fuzzy msgid "" "Returns an awaitable which when run starts to execute the asynchronous " "generator or resumes it at the last executed yield expression. When an " @@ -1250,17 +1303,17 @@ msgid "" "`StopAsyncIteration` exception, signalling that the asynchronous iteration " "has completed." msgstr "" -"Devuelve un valor en espera que, cuando se ejecuta, comienza a ejecutar el " -"generador asíncrono o lo reanuda en la última expresión de rendimiento " -"ejecutada. Cuando se reanuda una función de generador asíncrono con un " -"método :meth:`~agen.__anext__`, la expresión de rendimiento actual siempre " -"se evalúa como :const:`None` en el valor awaitable devuelto, que cuando se " -"ejecute continuará con la siguiente expresión de rendimiento. El valor de :" -"token:`~python-grammar:expression_list` de la expresión de rendimiento es el " -"valor de la excepción :exc:`StopIteration` generada por la rutina de " -"finalización. Si el generador asincrónico sale sin generar otro valor, " -"awaitable genera una excepción :exc:`StopAsyncIteration`, lo que indica que " -"la iteración asincrónica se ha completado." +"Retorna un aguardable que, cuando se ejecuta, comienza a ejecutar el " +"generador asíncrono o lo reanuda en la última expresión *yield* ejecutada. " +"Cuando se reanuda una función de generador asíncrono con un método :meth:" +"`~agen.__anext__`, la expresión *yield* actual siempre se evalúa como :const:" +"`None` en el aguardable retornado, que cuando se ejecute continuará con la " +"siguiente expresión *yield*. El valor de :token:`~python-grammar:yield_list` " +"de la expresión *yield* es el valor de la excepción :exc:`StopIteration` " +"generada por la corutina de finalización. Si el generador asincrónico " +"finaliza sin generar otro valor, el aguardable genera una excepción :exc:" +"`StopAsyncIteration`, lo que indica que la iteración asincrónica se ha " +"completado." #: ../Doc/reference/expressions.rst:769 msgid "" @@ -1270,7 +1323,6 @@ msgstr "" "`async for`." #: ../Doc/reference/expressions.rst:774 -#, fuzzy msgid "" "Returns an awaitable which when run resumes the execution of the " "asynchronous generator. As with the :meth:`~generator.send` method for a " @@ -1284,16 +1336,16 @@ msgid "" "`None` as the argument, because there is no yield expression that could " "receive the value." msgstr "" -"Retorna un esperable el cual cuando corre reanuda la ejecución del generador " -"asincrónico. Como el método :meth:`~generator.send()` para un generador, " -"este \"envía\" un valor a la función generadora asincrónica y el argumento " -"*value* se convierte en el resultado de la expresión yield actual. El " -"esperable retornado por el método :meth:`asend` retornará el siguiente valor " -"producido por el generador como el valor de la :exc:`StopIteration` generada " -"o genera :exc:`StopAsyncIteration` si el generador asincrónico termina sin " -"yield otro valor. Cuando se invoca :meth:`asend` para empezar el generador " -"asincrónico, debe ser invocado con :const:`None` como argumento, porque no " -"hay expresión yield que pueda recibir el valor." +"Retorna un aguardable el cual ejecuta cuando se reanude la ejecución del " +"generador asincrónico. Como el método :meth:`~generator.send` para un " +"generador, este \"envía\" un valor a la función generadora asincrónica y el " +"argumento *value* se convierte en el resultado de la expresión *yield* " +"actual. El aguardable retornado por el método :meth:`asend` retornará el " +"siguiente valor producido por el generador como el valor de la :exc:" +"`StopIteration` generada o genera :exc:`StopAsyncIteration` si el generador " +"asincrónico termina sin generar otro valor. Cuando se invoca :meth:`asend` " +"para empezar el generador asincrónico, debe ser invocado con :const:`None` " +"como argumento, porque no hay expresión *yield* que pueda recibir el valor." #: ../Doc/reference/expressions.rst:790 msgid "" @@ -1306,14 +1358,14 @@ msgid "" "exception, or raises a different exception, then when the awaitable is run " "that exception propagates to the caller of the awaitable." msgstr "" -"Retorna un esperable que genera una excepción de tipo ``type`` en el punto " +"Retorna un aguardable que genera una excepción de tipo ``type`` en el punto " "donde el generador asincrónico fue pausado y retorna el siguiente valor " -"yield por la función generadora como el valor de la excepción :exc:" -"`StopIteration` generada. Si el generador asincrónico termina sin yield otro " -"valor, el esperable genera una excepción :exc:`StopAsyncIteration`. Si la " -"función generadora no caza la excepción pasada o genera una excepción " -"diferente, entonces cuando se ejecuta el esperable esa excepción se propaga " -"al invocador del esperable." +"producido por la función generadora como el valor de la excepción :exc:" +"`StopIteration` generada. Si el generador asincrónico termina sin producir " +"otro valor, el aguardable genera una excepción :exc:`StopAsyncIteration`. Si " +"la función generadora no caza la excepción pasada o genera una excepción " +"diferente, entonces cuando se ejecuta el aguardable esa excepción se propaga " +"al invocador del aguardable." #: ../Doc/reference/expressions.rst:810 msgid "" @@ -1330,18 +1382,18 @@ msgid "" "due to an exception or normal exit, then further calls to :meth:`aclose` " "will return an awaitable that does nothing." msgstr "" -"Retorna un esperable que cuando corre lanza un :exc:`GeneratorExit` a la " +"Retorna un aguardable que cuando corre lanza un :exc:`GeneratorExit` a la " "función generadora asincrónica en el punto donde fue pausada. Si la función " -"generadora asincrónica termina exitosamente, ya está cerrada o genera :exc:" -"`GeneratorExit` (sin cazar la excepción), el esperable retornado lanzará una " -"excepción :exc:`StopIteration`. Otros esperables retornados por subsecuentes " -"invocaciones al generador asincrónico lanzarán una excepción :exc:" -"`StopAsyncIteration`. Si el generador asincrónico yield un valor, el " -"esperable genera un :exc:`RuntimeError`. Si el generador asincrónico genera " -"cualquier otra excepción, esta es propagada al invocador del esperable. Si " +"generadora asincrónica termina exitosamente, ya está cerrada o genera :exc:" +"`GeneratorExit` (sin cazar la excepción), el aguardable retornado lanzará " +"una excepción :exc:`StopIteration`. Otros aguardables retornados por " +"subsecuentes invocaciones al generador asincrónico lanzarán una excepción :" +"exc:`StopAsyncIteration`. Si el generador asincrónico produce un valor, el " +"aguardable genera un :exc:`RuntimeError`. Si el generador asincrónico genera " +"cualquier otra excepción, esta es propagada al invocador del aguardable. Si " "el generador asincrónico ha terminado debido a una excepción o una " "terminación normal, entonces futuras invocaciones a :meth:`aclose` " -"retornarán un esperable que no hace nada." +"retornarán un aguardable que no hace nada." #: ../Doc/reference/expressions.rst:826 msgid "Primaries" @@ -1365,7 +1417,6 @@ msgstr "" "Una referencia de atributo es un primario seguido de un punto y un nombre:" #: ../Doc/reference/expressions.rst:856 -#, fuzzy msgid "" "The primary must evaluate to an object of a type that supports attribute " "references, which most objects do. This object is then asked to produce the " @@ -1375,12 +1426,10 @@ msgid "" msgstr "" "El primario debe evaluar a un objeto de un tipo que soporte referencias de " "atributos, lo cual la mayoría de los objetos soportan. Luego se le pide a " -"este objeto que produzca el atributo cuyo nombre es el identificador. Esta " -"producción puede ser personalizada sobrescribiendo el método :meth:" -"`__getattr__`. Si este atributo no es esperable, se genera la excepción :exc:" -"`AtributeError`. De otra forma, el tipo y el valor del objeto producido es " -"determinado por el objeto. Múltiples evaluaciones la misma referencia de " -"atributo pueden yield diferentes objetos." +"este objeto que produzca el atributo cuyo nombre es el identificador. Este " +"tipo y valor producidos son determinados por el objeto. Múltiples " +"evaluaciones sobre la misma referencia de atributo pueden producir objetos " +"diferentes." #: ../Doc/reference/expressions.rst:862 msgid "" @@ -1389,12 +1438,18 @@ msgid "" "meth:`!__getattribute__` method is called first and either returns a value " "or raises :exc:`AttributeError` if the attribute is not available." msgstr "" +"Esta producción puede ser personalizada al sobreescribir el método :meth:" +"`~object.__getattribute__` o :meth:`~object.__getattr__`. El método :meth:`!" +"__getattribute__` es llamado primero y retorna un valor o se genera la " +"excepción :exc:`AttributeError` si el atributo no está disponible." #: ../Doc/reference/expressions.rst:868 msgid "" "If an :exc:`AttributeError` is raised and the object has a :meth:`!" "__getattr__` method, that method is called as a fallback." msgstr "" +"Si se genera una excepción :exc:`AttributeError` y el objeto tiene un " +"método :meth:`!__getattr__`, dicho método es llamado como respaldo." #: ../Doc/reference/expressions.rst:874 msgid "Subscriptions" @@ -1409,7 +1464,7 @@ msgid "" msgstr "" "La suscripción de una instancia de un :ref:`container class ` generalmente seleccionará un elemento del contenedor. La suscripción " -"de un :term:`generic class ` generalmente devolverá un objeto :" +"de un :term:`generic class ` generalmente retornará un objeto :" "ref:`GenericAlias `." #: ../Doc/reference/expressions.rst:897 @@ -1438,14 +1493,14 @@ msgstr "" "`classgetitem-versus-getitem`." #: ../Doc/reference/expressions.rst:907 -#, fuzzy msgid "" "If the expression list contains at least one comma, or if any of the " "expressions are starred, the expression list will evaluate to a :class:" "`tuple` containing the items of the expression list. Otherwise, the " "expression list will evaluate to the value of the list's sole member." msgstr "" -"Si la lista de expresiones contiene al menos una coma, se evaluará como un :" +"Si la lista de expresiones contiene al menos una coma o si alguna de las " +"expresiones está destacada, la lista de expresiones se evaluará como un :" "class:`tuple` que contiene los elementos de la lista de expresiones. De lo " "contrario, la lista de expresiones evaluará el valor del único miembro de la " "lista." @@ -1453,6 +1508,8 @@ msgstr "" #: ../Doc/reference/expressions.rst:912 msgid "Expressions in an expression list may be starred. See :pep:`646`." msgstr "" +"Las expresiones en una lista de expresiones pueden ser destacadas. See :pep:" +"`646`." #: ../Doc/reference/expressions.rst:915 msgid "" @@ -1488,7 +1545,6 @@ msgstr "" "incluyen las clases :class:`str`, :class:`list` y :class:`tuple`." #: ../Doc/reference/expressions.rst:927 -#, fuzzy msgid "" "The formal syntax makes no special provision for negative indices in :term:" "`sequences `. However, built-in sequences all provide a :meth:" @@ -1509,9 +1565,9 @@ msgstr "" "resultante debe ser un número entero no negativo menor que el número de " "elementos de la secuencia, y la suscripción selecciona el elemento cuyo " "índice es ese valor (contando desde cero). Dado que la compatibilidad con " -"los índices negativos y el corte se produce en el método :meth:`__getitem__` " -"del objeto, las subclases que sobrescriban este método deberán agregar " -"explícitamente esa compatibilidad." +"los índices negativos y la segmentación se produce en el método :meth:" +"`~object.__getitem__` del objeto, las subclases que sobrescriban este método " +"deberán agregar explícitamente esa compatibilidad." #: ../Doc/reference/expressions.rst:941 msgid "" @@ -1556,7 +1612,6 @@ msgstr "" "segmento adecuado)." #: ../Doc/reference/expressions.rst:988 -#, fuzzy msgid "" "The semantics for a slicing are as follows. The primary is indexed (using " "the same :meth:`~object.__getitem__` method as normal subscription) with a " @@ -1571,17 +1626,17 @@ msgid "" "missing expressions." msgstr "" "Las semánticas para un segmento son las siguientes. El primario es indexado " -"(usando el mismo método :meth:`__getitem__` de una subscripción normal) con " -"una clave que se construye del segmento de lista, tal como sigue. Si el " -"segmento de lista contiene al menos una coma, la clave es una tupla que " -"contiene la conversión de los elementos del segmento; de otra forma, la " -"conversión del segmento de lista solitario es la clave. La conversión de un " -"elemento de segmento que es una expresión es esa expresión. La conversión de " -"un segmento apropiado es un objeto segmento (ver sección :ref:`types`) cuyos " -"atributos :attr:`~slice.start`, :attr:`~slice.stop` y :attr:`~slice.step` " -"son los valores de las expresiones dadas como límite inferior, límite " -"superior y paso, respectivamente, substituyendo ``None`` para las " -"expresiones faltantes." +"(usando el mismo método :meth:`~object.__getitem__` de una subscripción " +"normal) con una clave que se construye del segmento de lista, tal como " +"sigue. Si el segmento de lista contiene al menos una coma, la clave es una " +"tupla que contiene la conversión de los elementos del segmento; en caso " +"contrario, la conversión del segmento de lista solitario es la clave. La " +"conversión de un elemento de segmento que es una expresión es esa expresión. " +"La conversión de un segmento apropiado es un objeto segmento (ver sección :" +"ref:`types`) cuyos atributos :attr:`~slice.start`, :attr:`~slice.stop` y :" +"attr:`~slice.step` son los valores de las expresiones dadas como límite " +"inferior, límite superior y paso, respectivamente, substituyendo ``None`` " +"para las expresiones faltantes." #: ../Doc/reference/expressions.rst:1012 msgid "Calls" @@ -1604,7 +1659,6 @@ msgstr "" "posicionales y de palabra clave pero no afecta a las semánticas." #: ../Doc/reference/expressions.rst:1037 -#, fuzzy msgid "" "The primary must evaluate to a callable object (user-defined functions, " "built-in functions, methods of built-in objects, class objects, methods of " @@ -1616,10 +1670,10 @@ msgstr "" "La clave primaria debe evaluar a un objeto invocable (funciones definidas " "por el usuario, funciones incorporadas, métodos de objetos incorporados, " "métodos de instancias de clases y todos los objetos que tienen un método :" -"meth:`__call__` son invocables). Todas las expresiones de argumento son " -"evaluadas antes de que la invocación sea intentada. Por favor, refiera a la " -"sección :ref:`function` para la sintaxis formal de listas de :term:" -"`parameter`." +"meth:`~object.__call__` son invocables). Todas las expresiones de argumento " +"son evaluadas antes de que la invocación sea intentada. Por favor, consulte " +"la sección :ref:`function` para saber más sobre la sintaxis de listas :term:" +"`parameter` formales." #: ../Doc/reference/expressions.rst:1045 msgid "" @@ -1748,6 +1802,10 @@ msgid "" ">>> f(1, *(2,))\n" "1 2" msgstr "" +">>> def f(a, b):\n" +"... print(a, b)\n" +"...\n" +">>> f(b=1, *(2,))" #: ../Doc/reference/expressions.rst:1111 msgid "" @@ -1885,13 +1943,12 @@ msgid "a class instance:" msgstr "una instancia de clase:" #: ../Doc/reference/expressions.rst:1197 -#, fuzzy msgid "" "The class must define a :meth:`~object.__call__` method; the effect is then " "the same as if that method was called." msgstr "" -"La clase debe definir un método :meth:`__call__`; el efecto es entonces el " -"mismo que si ese método fuera invocado." +"La clase debe definir un método :meth:`~object.__call__` ; el efecto es " +"entonces el mismo que si ese método fuera invocado." #: ../Doc/reference/expressions.rst:1205 ../Doc/reference/expressions.rst:2004 msgid "Await expression" @@ -1937,7 +1994,7 @@ msgid "" "converted to a common type, and the result is of that type." msgstr "" "El operador de potencia tiene las mismas semánticas que la función " -"incorporada :func:`pow` cuando se invoca con dos argumentos: este yield su " +"incorporada :func:`pow` cuando se invoca con dos argumentos: este produce su " "argumento de la izquierda elevado a la potencia de su argumento de la " "derecha. Los argumentos numéricos se convierten primero en un tipo común y " "el resultado es de ese tipo." @@ -1966,13 +2023,12 @@ msgstr "" "un :exc:`ValueError`.)" #: ../Doc/reference/expressions.rst:1249 -#, fuzzy msgid "" "This operation can be customized using the special :meth:`~object.__pow__` " "and :meth:`~object.__rpow__` methods." msgstr "" "Esta operación se puede personalizar utilizando los métodos especiales :meth:" -"`__mul__` y :meth:`__rmul__`." +"`~object.__pow__` y :meth:`~object.__rpow__`." #: ../Doc/reference/expressions.rst:1255 msgid "Unary arithmetic and bitwise operations" @@ -1985,36 +2041,35 @@ msgstr "" "prioridad:" #: ../Doc/reference/expressions.rst:1272 -#, fuzzy msgid "" "The unary ``-`` (minus) operator yields the negation of its numeric " "argument; the operation can be overridden with the :meth:`~object.__neg__` " "special method." msgstr "" -"El operador unario ``-`` (menos) yield la negación de su argumento numérico; " -"la operación se puede anular con el método especial :meth:`__neg__`." +"El operador unario ``-`` (menos) genera la negación de su argumento " +"numérico; la operación se puede sobreescribir con el método especial :meth:" +"`~object.__neg__`." #: ../Doc/reference/expressions.rst:1280 -#, fuzzy msgid "" "The unary ``+`` (plus) operator yields its numeric argument unchanged; the " "operation can be overridden with the :meth:`~object.__pos__` special method." msgstr "" -"El operador unario ``+`` (más) yield su argumento numérico sin cambios; la " -"operación se puede anular con el método especial :meth:`__pos__`." +"El operador unario ``+`` (más) genera su argumento numérico sin cambios; la " +"operación se puede sobreescribir con el método especial :meth:`~object." +"__pos__`." #: ../Doc/reference/expressions.rst:1287 -#, fuzzy msgid "" "The unary ``~`` (invert) operator yields the bitwise inversion of its " "integer argument. The bitwise inversion of ``x`` is defined as ``-(x+1)``. " "It only applies to integral numbers or to custom objects that override the :" "meth:`~object.__invert__` special method." msgstr "" -"El operador unario ``~`` (invertir) yield la inversión bit a bit de su " +"El operador unario ``~`` (invertir) genera la inversión bit a bit de su " "argumento entero. La inversión bit a bit de ``x`` se define como ``-(x+1)``. " "Solo se aplica a números enteros o a objetos personalizados que anulan el " -"método especial :meth:`__invert__`." +"método especial :meth:`~object.__invert__`." #: ../Doc/reference/expressions.rst:1296 msgid "" @@ -2049,21 +2104,20 @@ msgid "" "case, sequence repetition is performed; a negative repetition factor yields " "an empty sequence." msgstr "" -"El operador ``*`` (multiplicación) yield el producto de sus argumentos. Los " +"El operador ``*`` (multiplicación) genera el producto de sus argumentos. Los " "argumentos pueden ser ambos números, o un argumento debe ser un entero y el " "otro debe ser una secuencia. En el primer caso, los números se convierten a " "un tipo común y luego son multiplicados. En el segundo caso, se realiza una " -"repetición de secuencia; un factor de repetición negativo yield una " +"repetición de secuencia; un factor de repetición negativo produce una " "secuencia vacía." #: ../Doc/reference/expressions.rst:1328 -#, fuzzy msgid "" "This operation can be customized using the special :meth:`~object.__mul__` " "and :meth:`~object.__rmul__` methods." msgstr "" "Esta operación se puede personalizar utilizando los métodos especiales :meth:" -"`__mul__` y :meth:`__rmul__`." +"`~object.__mul__` y :meth:`~object.__rmul__`." #: ../Doc/reference/expressions.rst:1335 msgid "" @@ -2074,13 +2128,12 @@ msgstr "" "matrices. Ningún tipo incorporado en Python implementa este operador." #: ../Doc/reference/expressions.rst:1338 -#, fuzzy msgid "" "This operation can be customized using the special :meth:`~object." "__matmul__` and :meth:`~object.__rmatmul__` methods." msgstr "" "Esta operación se puede personalizar utilizando los métodos especiales :meth:" -"`__mul__` y :meth:`__rmul__`." +"`~object.__matmul__` y :meth:`~object.__rmatmul__`." #: ../Doc/reference/expressions.rst:1349 msgid "" @@ -2106,9 +2159,12 @@ msgid "" "operation can be customized using the special :meth:`~object.__floordiv__` " "and :meth:`~object.__rfloordiv__` methods." msgstr "" +"La operación de división se puede personalizar usando los métodos " +"especiales :meth:`~object.__truediv__` y :meth:`~object.__rtruediv__`. La " +"operación de división entera se puede personalizar usando los métodos " +"especiales :meth:`~object.__floordiv__` y :meth:`~object.__rfloordiv__`." #: ../Doc/reference/expressions.rst:1365 -#, fuzzy msgid "" "The ``%`` (modulo) operator yields the remainder from the division of the " "first argument by the second. The numeric arguments are first converted to " @@ -2119,12 +2175,12 @@ msgid "" "zero); the absolute value of the result is strictly smaller than the " "absolute value of the second operand [#]_." msgstr "" -"El operador ``%`` (módulo) yield el resto de la división del primer " +"El operador ``%`` (módulo) genera el resto de la división del primer " "argumento entre el segundo. Los argumentos numéricos son primero convertidos " -"a un tipo común. Un argumento a la derecha cero genera la excepción :exc:" +"a un tipo común. Un argumento de cero a la derecha genera la excepción :exc:" "`ZeroDivisionError`. Los argumentos pueden ser números de punto flotante, " "ej., ``3.14%0.7`` es igual a ``0.34`` (ya que ``3.14`` es igual a ``4*0.7 + " -"0.34``.) El operador módulo siempre yield un resultado con el mismo signo " +"0.34``.) El operador módulo siempre genera un resultado con el mismo signo " "que su segundo operando (o cero); el valor absoluto del resultado es " "estrictamente más pequeño que el valor absoluto del segundo operando [#]_." @@ -2155,16 +2211,14 @@ msgstr "" "Biblioteca de Python, sección :ref:`old-string-formatting`." #: ../Doc/reference/expressions.rst:1384 -#, fuzzy msgid "" "The *modulo* operation can be customized using the special :meth:`~object." "__mod__` and :meth:`~object.__rmod__` methods." msgstr "" -"Esta operación se puede personalizar utilizando los métodos especiales :meth:" -"`__mul__` y :meth:`__rmul__`." +"La operación *_modulo_* se puede personalizar utilizando los métodos " +"especiales :meth:`~object.__mod__` y :meth:`~object.__rmod__`." #: ../Doc/reference/expressions.rst:1387 -#, fuzzy msgid "" "The floor division operator, the modulo operator, and the :func:`divmod` " "function are not defined for complex numbers. Instead, convert to a " @@ -2173,7 +2227,7 @@ msgstr "" "El operador de división entera a la baja, el operador de módulo y la " "función :func:`divmod` no están definidas para números complejos. En su " "lugar, convierta a un número de punto flotante usando la función :func:`abs` " -"si es apropiado." +"si es necesario." #: ../Doc/reference/expressions.rst:1396 msgid "" @@ -2182,36 +2236,34 @@ msgid "" "type. In the former case, the numbers are converted to a common type and " "then added together. In the latter case, the sequences are concatenated." msgstr "" -"El operador ``+`` (adición) yield la suma de sus argumentos. Los argumentos " +"El operador ``+`` (adición) genera la suma de sus argumentos. Los argumentos " "deben ser ambos números o ambos secuencias del mismo tipo. En el primer " "caso, los números son convertidos a un tipo común y luego sumados. En el " "segundo caso, las secuencias son concatenadas." #: ../Doc/reference/expressions.rst:1401 -#, fuzzy msgid "" "This operation can be customized using the special :meth:`~object.__add__` " "and :meth:`~object.__radd__` methods." msgstr "" "Esta operación se puede personalizar utilizando los métodos especiales :meth:" -"`__add__` y :meth:`__radd__`." +"`~object.__add__` y :meth:`~object.__radd__`." #: ../Doc/reference/expressions.rst:1409 msgid "" "The ``-`` (subtraction) operator yields the difference of its arguments. " "The numeric arguments are first converted to a common type." msgstr "" -"El operador ``-`` (resta) yield la diferencia de sus argumentos. Los " +"El operador ``-`` (sustracción) genera la diferencia de sus argumentos. Los " "argumentos numéricos son primero convertidos a un tipo común." #: ../Doc/reference/expressions.rst:1412 -#, fuzzy msgid "" "This operation can be customized using the special :meth:`~object.__sub__` " "and :meth:`~object.__rsub__` methods." msgstr "" "Esta operación se puede personalizar utilizando los métodos especiales :meth:" -"`__mul__` y :meth:`__rmul__`." +"`~object.__sub__` y :meth:`~object.__rsub__`." #: ../Doc/reference/expressions.rst:1419 msgid "Shifting operations" @@ -2240,6 +2292,11 @@ msgid "" "operation can be customized using the special :meth:`~object.__rshift__` " "and :meth:`~object.__rrshift__` methods." msgstr "" +"Las operaciones de desplazamiento a la izquierda se pueden personalizar " +"usando los métodos especiales :meth:`~object.__lshift__` y :meth:`~object." +"__rlshift__`. Las operaciones de desplazamiento a la derecha se pueden " +"personalizar usando los métodos especiales :meth:`~object.__rshift__` y :" +"meth:`~object.__rrshift__`." #: ../Doc/reference/expressions.rst:1441 msgid "" @@ -2261,38 +2318,37 @@ msgstr "" "prioridad:" #: ../Doc/reference/expressions.rst:1463 -#, fuzzy msgid "" "The ``&`` operator yields the bitwise AND of its arguments, which must be " "integers or one of them must be a custom object overriding :meth:`~object." "__and__` or :meth:`~object.__rand__` special methods." msgstr "" -"El operador ``&`` yield el AND bit a bit de sus argumentos, que deben ser " -"números enteros o uno de ellos debe ser un objeto personalizado que anule " -"los métodos especiales :meth:`__and__` o :meth:`__rand__`." +"El operador ``&`` genera el AND bit a bit de sus argumentos, que deben ser " +"números enteros o uno de ellos debe ser un objeto personalizado que " +"sobreescriba los métodos especiales :meth:`~object.__and__` o :meth:`~object." +"__rand__`." #: ../Doc/reference/expressions.rst:1472 -#, fuzzy msgid "" "The ``^`` operator yields the bitwise XOR (exclusive OR) of its arguments, " "which must be integers or one of them must be a custom object overriding :" "meth:`~object.__xor__` or :meth:`~object.__rxor__` special methods." msgstr "" -"El operador ``^`` yield el XOR bit a bit (OR exclusivo) de sus argumentos, " +"El operador ``^`` genera el XOR bit a bit (OR exclusivo) de sus argumentos, " "que deben ser números enteros o uno de ellos debe ser un objeto " -"personalizado que anule los métodos especiales :meth:`__xor__` o :meth:" -"`__rxor__`." +"personalizado que sobreescriba los métodos especiales :meth:`~object." +"__xor__` o :meth:`~object.__rxor__`." #: ../Doc/reference/expressions.rst:1481 -#, fuzzy msgid "" "The ``|`` operator yields the bitwise (inclusive) OR of its arguments, which " "must be integers or one of them must be a custom object overriding :meth:" "`~object.__or__` or :meth:`~object.__ror__` special methods." msgstr "" -"El operador ``|`` yield el OR bit a bit (inclusive) de sus argumentos, que " +"El operador ``|`` genera el OR bit a bit (inclusive) de sus argumentos, que " "deben ser números enteros o uno de ellos debe ser un objeto personalizado " -"que anule los métodos especiales :meth:`__or__` o :meth:`__ror__`." +"que sobreescriba los métodos especiales :meth:`~object.__or__` o :meth:" +"`~object.__ror__`." #: ../Doc/reference/expressions.rst:1489 msgid "Comparisons" @@ -2316,10 +2372,10 @@ msgid "" "comparison methods` may return non-boolean values. In this case Python will " "call :func:`bool` on such value in boolean contexts." msgstr "" -"Las comparaciones yield valores booleanos: ``True`` o ``False``. " -"Personalizado: dfn: los `métodos de comparación enriquecidos` pueden " -"retornar valores no booleanos. En este caso, Python llamará a :func:`bool` " -"en dicho valor en contextos booleanos." +"Las comparaciones generan valores booleanos: ``True`` o ``False``.: dfn: los " +"`Métodos de comparación enriquecidos` personalizados pueden retornar valores " +"no booleanos. En este caso, Python llamará a :func:`bool` en dicho valor en " +"contextos booleanos." #: ../Doc/reference/expressions.rst:1517 msgid "" @@ -2389,7 +2445,6 @@ msgstr "" "de comparación." #: ../Doc/reference/expressions.rst:1547 -#, fuzzy msgid "" "Because all types are (direct or indirect) subtypes of :class:`object`, they " "inherit the default comparison behavior from :class:`object`. Types can " @@ -2399,8 +2454,8 @@ msgstr "" "Debido a que todos los tipos son subtipos (directos o indirectos) de :class:" "`object`, ellos heredan el comportamiento de comparación predeterminado " "desde :class:`object`. Los tipos pueden personalizar su comportamiento de " -"comparación implementando :dfn:`rich comparison methods` como :meth:" -"`__lt__`, descritos en :ref:`customization`." +"comparación implementando :dfn:`rich comparison methods` como :meth:`~object." +"__lt__`, descritos en :ref:`customization`." #: ../Doc/reference/expressions.rst:1553 msgid "" @@ -2485,15 +2540,14 @@ msgstr "" "Este comportamiento cumple con IEEE 754." #: ../Doc/reference/expressions.rst:1587 -#, fuzzy msgid "" "``None`` and :data:`NotImplemented` are singletons. :PEP:`8` advises that " "comparisons for singletons should always be done with ``is`` or ``is not``, " "never the equality operators." msgstr "" -"``None`` y ``NotImplemented`` son singletons. :PEP:`8` avisa que las " -"comparaciones para singletons deben ser realizadas siempre con ``is`` o ``is " -"not``, nunca los operadores de igualdad." +"``None`` y :data:`NotImplemented` son singletons. :PEP:`8` recomienda que " +"las comparaciones para singletons deben ser realizadas siempre con ``is`` o " +"``is not``, nunca los operadores de igualdad." #: ../Doc/reference/expressions.rst:1591 msgid "" @@ -2781,18 +2835,16 @@ msgstr "" "\"abc\"`` retornará ``True``." #: ../Doc/reference/expressions.rst:1714 -#, fuzzy msgid "" "For user-defined classes which define the :meth:`~object.__contains__` " "method, ``x in y`` returns ``True`` if ``y.__contains__(x)`` returns a true " "value, and ``False`` otherwise." msgstr "" "Para clases definidas por el usuario las cuales definen el método :meth:" -"`__contains__`, ``x in y`` retorna ``True`` si ``y.__contains__(x)`` retorna " -"un valor verdadero y ``False`` si no." +"`~object.__contains__`, ``x in y`` retorna ``True`` si ``y.__contains__(x)`` " +"retorna un valor verdadero y ``False`` en caso contrario." #: ../Doc/reference/expressions.rst:1718 -#, fuzzy msgid "" "For user-defined classes which do not define :meth:`~object.__contains__` " "but do define :meth:`~object.__iter__`, ``x in y`` is ``True`` if some value " @@ -2800,15 +2852,14 @@ msgid "" "while iterating over ``y``. If an exception is raised during the iteration, " "it is as if :keyword:`in` raised that exception." msgstr "" -"Para clases definidas por el usuario las cuales no definen :meth:" -"`__contains__` pero definen :meth:`__iter__`, ``x in y`` es ``True`` si " -"algún valor ``z``, para el cual la expresión ``x is z or x == z`` es " -"verdadera, es producido iterando sobre ``y``. Si una excepción es generada " -"durante la iteración, es como si :keyword:`in` hubiera generado esa " +"Para clases definidas por el usuario las cuales no definen :meth:`~object." +"__contains__` pero sí definen :meth:`~object.__iter__`, ``x in y`` es " +"``True`` si algún valor ``z``, para el cual la expresión ``x is z or x == " +"z`` es verdadera, es producido iterando sobre ``y``. Si una excepción es " +"generada durante la iteración, es como si :keyword:`in` hubiera generado esa " "excepción." #: ../Doc/reference/expressions.rst:1724 -#, fuzzy msgid "" "Lastly, the old-style iteration protocol is tried: if a class defines :meth:" "`~object.__getitem__`, ``x in y`` is ``True`` if and only if there is a non-" @@ -2817,11 +2868,11 @@ msgid "" "exception is raised, it is as if :keyword:`in` raised that exception)." msgstr "" "Por último, se intenta el protocolo de iteración al estilo antiguo: si una " -"clase define :meth:`__getitem__`, ``x in y`` es ``True`` si y sólo si hay un " -"índice entero no negativo *i* tal que ``x is y[i] or x == y[i]`` y ningún " -"entero menor genera la excepción :exc:`IndexError`. (Si cualquier otra " -"excepción es generada, es como si :keyword:`in` hubiera generado esa " -"excepción)." +"clase define :meth:`~object.__getitem__`, ``x in y`` es ``True`` si y sólo " +"si hay un índice entero no negativo *i* tal que ``x is y[i] or x == y[i]`` y " +"ningún índice entero menor genera la excepción :exc:`IndexError`. (Si " +"cualquier otra excepción es generada, es como si :keyword:`in` hubiera " +"generado esa excepción)." #: ../Doc/reference/expressions.rst:1736 msgid "" @@ -2845,7 +2896,7 @@ msgstr "" "Los operadores :keyword:`is` y :keyword:`is not` comprueban la identidad de " "un objeto. ``x is y`` es verdadero si y sólo si *x* e *y* son el mismo " "objeto. La identidad de un Objeto se determina usando la función :meth:`id`. " -"``x is not y`` yield el valor de veracidad inverso. [#]_" +"``x is not y`` produce el valor de veracidad inverso. [#]_" #: ../Doc/reference/expressions.rst:1763 msgid "Boolean operations" @@ -2875,7 +2926,7 @@ msgid "" "The operator :keyword:`not` yields ``True`` if its argument is false, " "``False`` otherwise." msgstr "" -"El operador :keyword:`not` yield ``True`` si su argumento es falso, " +"El operador :keyword:`not` produce ``True`` si su argumento es falso, " "``False`` si no." #: ../Doc/reference/expressions.rst:1788 @@ -2908,7 +2959,7 @@ msgstr "" "el tipo que retornan a ``False`` y ``True``, sino retornan el último " "argumento evaluado. Esto es útil a veces, ej., si ``s`` es una cadena de " "caracteres que debe ser remplazada por un valor predeterminado si está " -"vacía, la expresión ``s or 'foo'`` yield el valor deseado. Debido a que :" +"vacía, la expresión ``s or 'foo'`` produce el valor deseado. Debido a que :" "keyword:`not` tiene que crear un nuevo valor, retorna un valor booleano " "indiferentemente del tipo de su argumento (por ejemplo, ``not 'foo'`` " "produce ``False`` en lugar de ``''``.)" @@ -2926,7 +2977,7 @@ msgid "" msgstr "" "Una expresión de asignación (a veces también llamada \"expresión con " "nombre\" o \"morsa\") asigna un :token:`~python-grammar:expression` a un :" -"token:`~python-grammar:identifier`, al mismo tiempo que devuelve el valor de " +"token:`~python-grammar:identifier`, al mismo tiempo que retorna el valor de " "el :token:`~python-grammar:expresión`." #: ../Doc/reference/expressions.rst:1823 @@ -2939,6 +2990,8 @@ msgid "" "if matching := pattern.search(data):\n" " do_something(matching)" msgstr "" +"if matching := pattern.search(data):\n" +" do_something(matching)" #: ../Doc/reference/expressions.rst:1830 msgid "Or, when processing a file stream in chunks:" @@ -2949,9 +3002,10 @@ msgid "" "while chunk := file.read(9000):\n" " process(chunk)" msgstr "" +"while chunk := file.read(9000):\n" +" process(chunk)" #: ../Doc/reference/expressions.rst:1837 -#, fuzzy msgid "" "Assignment expressions must be surrounded by parentheses when used as " "expression statements and when used as sub-expressions in slicing, " @@ -2961,10 +3015,11 @@ msgid "" "and ``while`` statements." msgstr "" "Las expresiones de asignación deben estar entre paréntesis cuando se usan " -"como subexpresiones en expresiones de división, condicional, lambda, " -"argumento de palabra clave y comprensión si y en declaraciones ``assert`` y " -"``with``. En todos los demás lugares donde se pueden usar, no se requieren " -"paréntesis, incluidas las declaraciones ``if`` y ``while``." +"como expresiones de sentencia y cuando se usan como subexpresiones en " +"expresiones de segmentación, condicional, lambda, argumento de palabra clave " +"y expresiones de comprensión-condicional y en sentencias ``assert``, " +"``with`` y ``assignment``. En todos los demás lugares donde se pueden usar, " +"no se requieren paréntesis, incluidas las sentencias ``if`` y ``while``." #: ../Doc/reference/expressions.rst:1845 msgid "See :pep:`572` for more details about assignment expressions." @@ -3009,14 +3064,16 @@ msgid "" msgstr "" "Las expresiones lambda (a veces denominadas formas lambda) son usadas para " "crear funciones anónimas. La expresión ``lambda parameters: expression`` " -"yield un objeto de función. El objeto sin nombre se comporta como un objeto " -"función con:" +"produce un objeto de función. El objeto sin nombre se comporta como un " +"objeto función con:" #: ../Doc/reference/expressions.rst:1893 msgid "" "def (parameters):\n" " return expression" msgstr "" +"def (parameters):\n" +" return expression" #: ../Doc/reference/expressions.rst:1898 msgid "" @@ -3039,7 +3096,7 @@ msgid "" "expressions in the list. The expressions are evaluated from left to right." msgstr "" "Excepto cuando son parte de un despliegue de lista o conjunto, una lista de " -"expresión conteniendo al menos una coma yield una tupla. El largo de la " +"expresión conteniendo al menos una coma produce una tupla. El largo de la " "tupla es el número de expresiones en la lista. Las expresiones son evaluadas " "de izquierda a derecha." @@ -3063,14 +3120,12 @@ msgstr "" "por :pep:`488`." #: ../Doc/reference/expressions.rst:1939 -#, fuzzy msgid "Any item in an expression list may be starred. See :pep:`646`." msgstr "" -"Desempaquetado iterable en listas de expresiones, originalmente propuesto " -"por :pep:`488`." +"Cualquier elemento en una lista de expresiones puede ser destacado. Vea :pep:" +"`646`." #: ../Doc/reference/expressions.rst:1944 -#, fuzzy msgid "" "A trailing comma is required only to create a one-item tuple, such as ``1," "``; it is optional in all other cases. A single expression without a " @@ -3078,11 +3133,10 @@ msgid "" "expression. (To create an empty tuple, use an empty pair of parentheses: " "``()``.)" msgstr "" -"La coma final sólo es requerida para crear una tupla única (también " -"denominada un *singleton*); es opcional en todos los otros casos. Una única " -"expresión sin una coma final no crea una tupla, si no yield el valor de esa " -"expresión. (Para crear una tupla vacía, usa un par de paréntesis vacío: " -"``()``.)" +"La coma final sólo es requerida para crear una tupla de un único elemento, " +"como ``1,``; es opcional en otros casos. Una única expresión sin una coma " +"final no crea una tupla, si no genera el valor de esa expresión. (Para crear " +"una tupla vacía, usa un par de paréntesis vacío: ``()``.)" #: ../Doc/reference/expressions.rst:1955 msgid "Evaluation order" @@ -3115,6 +3169,12 @@ msgid "" "expr1(expr2, expr3, *expr4, **expr5)\n" "expr3, expr4 = expr1, expr2" msgstr "" +"expr1, expr2, expr3, expr4\n" +"(expr1, expr2, expr3, expr4)\n" +"{expr1: expr2, expr3: expr4}\n" +"expr1 + expr2 * (expr3 - expr4)\n" +"expr1(expr2, expr3, *expr4, **expr5)\n" +"expr3, expr4 = expr1, expr2" #: ../Doc/reference/expressions.rst:1976 msgid "Operator precedence" @@ -3512,7 +3572,7 @@ msgstr "object" #: ../Doc/reference/expressions.rst:162 msgid "parenthesized form" -msgstr "Formas entre paréntesis" +msgstr "formas entre paréntesis" #: ../Doc/reference/expressions.rst:162 ../Doc/reference/expressions.rst:393 #: ../Doc/reference/expressions.rst:1001 @@ -3684,7 +3744,7 @@ msgstr "corutina" #: ../Doc/reference/expressions.rst:516 msgid "yield from expression" -msgstr "yield de expresión" +msgstr "yield from expression" #: ../Doc/reference/expressions.rst:569 msgid "StopIteration" @@ -3980,7 +4040,7 @@ msgstr "operador binario" #: ../Doc/reference/expressions.rst:1404 msgid "subtraction" -msgstr "Suscripciones" +msgstr "sustracción" #: ../Doc/reference/expressions.rst:1421 msgid "shifting" @@ -4132,9 +4192,8 @@ msgid "named expression" msgstr "expresión con nombre" #: ../Doc/reference/expressions.rst:1805 -#, fuzzy msgid "assignment" -msgstr "argumento" +msgstr "asignación" #: ../Doc/reference/expressions.rst:1854 msgid "conditional" diff --git a/reference/grammar.po b/reference/grammar.po index 576c444ca4..6186002af8 100644 --- a/reference/grammar.po +++ b/reference/grammar.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 19:28+0200\n" +"PO-Revision-Date: 2026-01-06 16:26+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.8\n" #: ../Doc/reference/grammar.rst:4 msgid "Full Grammar specification" @@ -37,7 +38,6 @@ msgstr "" "de código y la recuperación de errores." #: ../Doc/reference/grammar.rst:11 -#, fuzzy, python-format msgid "" "The notation is a mixture of `EBNF `_ and `PEG `_ y `PEG `_. En particular, ``&`` seguido de un símbolo, " -"token o grupo entre paréntesis indica una anticipación positiva (es decir, " -"se requiere que coincida pero no se consume), mientras que ``!`` Indica una " -"anticipación negativa (es decir, se requiere _no_ para coincidir). Usamos el " +"token o grupo entre paréntesis indica una anticipación positiva (es decir, se " +"requiere que coincida pero no se consume), mientras que ``!`` Indica una " +"anticipación negativa (es decir, se requiere *no* para coincidir). Usamos el " "separador ``|`` para referirnos a la \"elección ordenada\" de PEG (escrito " -"como ``/`` en las gramáticas tradicionales de PEG)." +"como ``/`` en las gramáticas tradicionales de PEG). Consulta :pep:`617` para " +"más detalles sobre la sintaxis de la gramática." +#, fuzzy #: ../Doc/reference/grammar.rst:21 -#, python-format msgid "" "# PEG grammar for Python\n" "\n" @@ -158,8 +159,7 @@ msgid "" "# ==============\n" "\n" "file[mod_ty]: a=[statements] ENDMARKER { _PyPegen_make_module(p, a) }\n" -"interactive[mod_ty]: a=statement_newline { _PyAST_Interactive(a, p-" -">arena) }\n" +"interactive[mod_ty]: a=statement_newline { _PyAST_Interactive(a, p->arena) }\n" "eval[mod_ty]: a=expressions NEWLINE* ENDMARKER { _PyAST_Expression(a, p-" ">arena) }\n" "func_type[mod_ty]: '(' a=[type_expressions] ')' '->' b=expression NEWLINE* " @@ -188,8 +188,7 @@ msgid "" "a) } # Not needed, there for speedup\n" " | a[asdl_stmt_seq*]=';'.simple_stmt+ [';'] NEWLINE { a }\n" "\n" -"# NOTE: assignment MUST precede expression, else parsing a simple " -"assignment\n" +"# NOTE: assignment MUST precede expression, else parsing a simple assignment\n" "# will throw a SyntaxError.\n" "simple_stmt[stmt_ty] (memo):\n" " | assignment\n" @@ -265,8 +264,8 @@ msgid "" " | 'return' a=[star_expressions] { _PyAST_Return(a, EXTRA) }\n" "\n" "raise_stmt[stmt_ty]:\n" -" | 'raise' a=expression b=['from' z=expression { z }] { _PyAST_Raise(a, " -"b, EXTRA) }\n" +" | 'raise' a=expression b=['from' z=expression { z }] { _PyAST_Raise(a, b, " +"EXTRA) }\n" " | 'raise' { _PyAST_Raise(NULL, NULL, EXTRA) }\n" "\n" "global_stmt[stmt_ty]: 'global' a[asdl_expr_seq*]=','.NAME+ {\n" @@ -294,13 +293,11 @@ msgid "" "# Import statements\n" "# -----------------\n" "\n" -"import_name[stmt_ty]: 'import' a=dotted_as_names { _PyAST_Import(a, " -"EXTRA) }\n" +"import_name[stmt_ty]: 'import' a=dotted_as_names { _PyAST_Import(a, EXTRA) }\n" "# note below: the ('.' | '...') is necessary because '...' is tokenized as " "ELLIPSIS\n" "import_from[stmt_ty]:\n" -" | 'from' a=('.' | '...')* b=dotted_name 'import' c=import_from_targets " -"{\n" +" | 'from' a=('.' | '...')* b=dotted_name 'import' c=import_from_targets {\n" " _PyAST_ImportFrom(b->v.Name.id, c, _PyPegen_seq_count_dots(a), " "EXTRA) }\n" " | 'from' a=('.' | '...')+ 'import' b=import_from_targets {\n" @@ -315,15 +312,15 @@ msgid "" " | a[asdl_alias_seq*]=','.import_from_as_name+ { a }\n" "import_from_as_name[alias_ty]:\n" " | a=NAME b=['as' z=NAME { z }] { _PyAST_alias(a->v.Name.id,\n" -" (b) ? ((expr_ty) b)->v.Name." -"id : NULL,\n" +" (b) ? ((expr_ty) b)-" +">v.Name.id : NULL,\n" " EXTRA) }\n" "dotted_as_names[asdl_alias_seq*]:\n" " | a[asdl_alias_seq*]=','.dotted_as_name+ { a }\n" "dotted_as_name[alias_ty]:\n" " | a=dotted_name b=['as' z=NAME { z }] { _PyAST_alias(a->v.Name.id,\n" -" (b) ? ((expr_ty) b)->v." -"Name.id : NULL,\n" +" (b) ? ((expr_ty) b)-" +">v.Name.id : NULL,\n" " EXTRA) }\n" "dotted_name[expr_ty]:\n" " | a=dotted_name '.' b=NAME { _PyPegen_join_names_with_dot(p, a, b) }\n" @@ -340,8 +337,8 @@ msgid "" " | simple_stmts\n" " | invalid_block\n" "\n" -"decorators[asdl_expr_seq*]: a[asdl_expr_seq*]=('@' f=named_expression " -"NEWLINE { f })+ { a }\n" +"decorators[asdl_expr_seq*]: a[asdl_expr_seq*]=('@' f=named_expression NEWLINE " +"{ f })+ { a }\n" "\n" "# Class definitions\n" "# -----------------\n" @@ -463,17 +460,17 @@ msgid "" "param_with_default[NameDefaultPair*]:\n" " | a=param c=default ',' tc=TYPE_COMMENT? { _PyPegen_name_default_pair(p, " "a, c, tc) }\n" -" | a=param c=default tc=TYPE_COMMENT? &')' " -"{ _PyPegen_name_default_pair(p, a, c, tc) }\n" +" | a=param c=default tc=TYPE_COMMENT? &')' { _PyPegen_name_default_pair(p, " +"a, c, tc) }\n" "param_maybe_default[NameDefaultPair*]:\n" -" | a=param c=default? ',' tc=TYPE_COMMENT? " -"{ _PyPegen_name_default_pair(p, a, c, tc) }\n" +" | a=param c=default? ',' tc=TYPE_COMMENT? { _PyPegen_name_default_pair(p, " +"a, c, tc) }\n" " | a=param c=default? tc=TYPE_COMMENT? &')' " "{ _PyPegen_name_default_pair(p, a, c, tc) }\n" "param[arg_ty]: a=NAME b=annotation? { _PyAST_arg(a->v.Name.id, b, NULL, " "EXTRA) }\n" -"param_star_annotation[arg_ty]: a=NAME b=star_annotation { _PyAST_arg(a->v." -"Name.id, b, NULL, EXTRA) }\n" +"param_star_annotation[arg_ty]: a=NAME b=star_annotation { _PyAST_arg(a-" +">v.Name.id, b, NULL, EXTRA) }\n" "annotation[expr_ty]: ':' a=expression { a }\n" "star_annotation[expr_ty]: ':' a=star_expression { a }\n" "default[expr_ty]: '=' a=expression { a } | invalid_default\n" @@ -486,8 +483,8 @@ msgid "" " | 'if' a=named_expression ':' b=block c=elif_stmt {\n" " _PyAST_If(a, b, CHECK(asdl_stmt_seq*, _PyPegen_singleton_seq(p, c)), " "EXTRA) }\n" -" | 'if' a=named_expression ':' b=block c=[else_block] { _PyAST_If(a, b, " -"c, EXTRA) }\n" +" | 'if' a=named_expression ':' b=block c=[else_block] { _PyAST_If(a, b, c, " +"EXTRA) }\n" "elif_stmt[stmt_ty]:\n" " | invalid_elif_stmt\n" " | 'elif' a=named_expression ':' b=block c=elif_stmt {\n" @@ -504,8 +501,8 @@ msgid "" "\n" "while_stmt[stmt_ty]:\n" " | invalid_while_stmt\n" -" | 'while' a=named_expression ':' b=block c=[else_block] " -"{ _PyAST_While(a, b, c, EXTRA) }\n" +" | 'while' a=named_expression ':' b=block c=[else_block] { _PyAST_While(a, " +"b, c, EXTRA) }\n" "\n" "# For statement\n" "# -------------\n" @@ -517,8 +514,8 @@ msgid "" " _PyAST_For(t, ex, b, el, NEW_TYPE_COMMENT(p, tc), EXTRA) }\n" " | 'async' 'for' t=star_targets 'in' ~ ex=star_expressions ':' " "tc=[TYPE_COMMENT] b=block el=[else_block] {\n" -" CHECK_VERSION(stmt_ty, 5, \"Async for loops are\", " -"_PyAST_AsyncFor(t, ex, b, el, NEW_TYPE_COMMENT(p, tc), EXTRA)) }\n" +" CHECK_VERSION(stmt_ty, 5, \"Async for loops are\", _PyAST_AsyncFor(t, " +"ex, b, el, NEW_TYPE_COMMENT(p, tc), EXTRA)) }\n" " | invalid_for_target\n" "\n" "# With statement\n" @@ -543,8 +540,8 @@ msgid "" " | invalid_with_stmt\n" "\n" "with_item[withitem_ty]:\n" -" | e=expression 'as' t=star_target &(',' | ')' | ':') " -"{ _PyAST_withitem(e, t, p->arena) }\n" +" | e=expression 'as' t=star_target &(',' | ')' | ':') { _PyAST_withitem(e, " +"t, p->arena) }\n" " | invalid_with_item\n" " | e=expression { _PyAST_withitem(e, NULL, p->arena) }\n" "\n" @@ -674,8 +671,8 @@ msgid "" " | imag=NUMBER { _PyPegen_ensure_imaginary(p, imag) }\n" "\n" "capture_pattern[pattern_ty]:\n" -" | target=pattern_capture_target { _PyAST_MatchAs(NULL, target->v.Name." -"id, EXTRA) }\n" +" | target=pattern_capture_target { _PyAST_MatchAs(NULL, target->v.Name.id, " +"EXTRA) }\n" "\n" "pattern_capture_target[expr_ty]:\n" " | !\"_\" name=NAME !('.' | '(' | '=') {\n" @@ -802,8 +799,8 @@ msgid "" " CHECK_VERSION(asdl_type_param_seq *, 12, \"Type parameter lists " "are\", t) }\n" "\n" -"type_param_seq[asdl_type_param_seq*]: a[asdl_type_param_seq*]=','." -"type_param+ [','] { a }\n" +"type_param_seq[asdl_type_param_seq*]: a[asdl_type_param_seq*]=','.type_param+ " +"[','] { a }\n" "\n" "type_param[type_param_ty] (memo):\n" " | a=NAME b=[type_param_bound] c=[type_param_default] { _PyAST_TypeVar(a-" @@ -813,8 +810,8 @@ msgid "" " ? \"cannot use constraints with TypeVarTuple\"\n" " : \"cannot use bound with TypeVarTuple\")\n" " }\n" -" | '*' a=NAME b=[type_param_starred_default] { _PyAST_TypeVarTuple(a->v." -"Name.id, b, EXTRA) }\n" +" | '*' a=NAME b=[type_param_starred_default] { _PyAST_TypeVarTuple(a-" +">v.Name.id, b, EXTRA) }\n" " | '**' a=NAME colon=':' e=expression {\n" " RAISE_SYNTAX_ERROR_STARTING_FROM(colon, e->kind == Tuple_kind\n" " ? \"cannot use constraints with ParamSpec\"\n" @@ -834,8 +831,8 @@ msgid "" "\n" "expressions[expr_ty]:\n" " | a=expression b=(',' c=expression { c })+ [','] {\n" -" _PyAST_Tuple(CHECK(asdl_expr_seq*, _PyPegen_seq_insert_in_front(p, " -"a, b)), Load, EXTRA) }\n" +" _PyAST_Tuple(CHECK(asdl_expr_seq*, _PyPegen_seq_insert_in_front(p, a, " +"b)), Load, EXTRA) }\n" " | a=expression ',' { _PyAST_Tuple(CHECK(asdl_expr_seq*, " "_PyPegen_singleton_seq(p, a)), Load, EXTRA) }\n" " | expression\n" @@ -854,8 +851,8 @@ msgid "" "\n" "star_expressions[expr_ty]:\n" " | a=star_expression b=(',' c=star_expression { c })+ [','] {\n" -" _PyAST_Tuple(CHECK(asdl_expr_seq*, _PyPegen_seq_insert_in_front(p, " -"a, b)), Load, EXTRA) }\n" +" _PyAST_Tuple(CHECK(asdl_expr_seq*, _PyPegen_seq_insert_in_front(p, a, " +"b)), Load, EXTRA) }\n" " | a=star_expression ',' { _PyAST_Tuple(CHECK(asdl_expr_seq*, " "_PyPegen_singleton_seq(p, a)), Load, EXTRA) }\n" " | star_expression\n" @@ -864,8 +861,8 @@ msgid "" " | '*' a=bitwise_or { _PyAST_Starred(a, Load, EXTRA) }\n" " | expression\n" "\n" -"star_named_expressions[asdl_expr_seq*]: a[asdl_expr_seq*]=','." -"star_named_expression+ [','] { a }\n" +"star_named_expressions[asdl_expr_seq*]: " +"a[asdl_expr_seq*]=','.star_named_expression+ [','] { a }\n" "\n" "star_named_expression[expr_ty]:\n" " | '*' a=bitwise_or { _PyAST_Starred(a, Load, EXTRA) }\n" @@ -931,12 +928,12 @@ msgid "" "a=bitwise_or {_PyPegen_cmpop_expr_pair(p, NotEq, a) }\n" "lte_bitwise_or[CmpopExprPair*]: '<=' a=bitwise_or " "{ _PyPegen_cmpop_expr_pair(p, LtE, a) }\n" -"lt_bitwise_or[CmpopExprPair*]: '<' a=bitwise_or " -"{ _PyPegen_cmpop_expr_pair(p, Lt, a) }\n" +"lt_bitwise_or[CmpopExprPair*]: '<' a=bitwise_or { _PyPegen_cmpop_expr_pair(p, " +"Lt, a) }\n" "gte_bitwise_or[CmpopExprPair*]: '>=' a=bitwise_or " "{ _PyPegen_cmpop_expr_pair(p, GtE, a) }\n" -"gt_bitwise_or[CmpopExprPair*]: '>' a=bitwise_or " -"{ _PyPegen_cmpop_expr_pair(p, Gt, a) }\n" +"gt_bitwise_or[CmpopExprPair*]: '>' a=bitwise_or { _PyPegen_cmpop_expr_pair(p, " +"Gt, a) }\n" "notin_bitwise_or[CmpopExprPair*]: 'not' 'in' a=bitwise_or " "{ _PyPegen_cmpop_expr_pair(p, NotIn, a) }\n" "in_bitwise_or[CmpopExprPair*]: 'in' a=bitwise_or " @@ -1114,8 +1111,7 @@ msgid "" "NULL) }\n" " | a=lambda_param c=default? &':' { _PyPegen_name_default_pair(p, a, c, " "NULL) }\n" -"lambda_param[arg_ty]: a=NAME { _PyAST_arg(a->v.Name.id, NULL, NULL, " -"EXTRA) }\n" +"lambda_param[arg_ty]: a=NAME { _PyAST_arg(a->v.Name.id, NULL, NULL, EXTRA) }\n" "\n" "# LITERALS\n" "# ========\n" @@ -1134,8 +1130,7 @@ msgid "" "conv_token, conv) }\n" "fstring_full_format_spec[ResultTokenWithMetadata*]:\n" " | colon=':' spec=fstring_format_spec* " -"{ _PyPegen_setup_full_format_spec(p, colon, (asdl_expr_seq *) spec, " -"EXTRA) }\n" +"{ _PyPegen_setup_full_format_spec(p, colon, (asdl_expr_seq *) spec, EXTRA) }\n" "fstring_format_spec[expr_ty]:\n" " | t=FSTRING_MIDDLE { _PyPegen_decoded_constant_from_token(p, t) }\n" " | fstring_replacement_field\n" @@ -1247,15 +1242,15 @@ msgid "" "kwarg_or_starred[KeywordOrStarred*]:\n" " | invalid_kwarg\n" " | a=NAME '=' b=expression {\n" -" _PyPegen_keyword_or_starred(p, CHECK(keyword_ty, _PyAST_keyword(a->v." -"Name.id, b, EXTRA)), 1) }\n" +" _PyPegen_keyword_or_starred(p, CHECK(keyword_ty, _PyAST_keyword(a-" +">v.Name.id, b, EXTRA)), 1) }\n" " | a=starred_expression { _PyPegen_keyword_or_starred(p, a, 0) }\n" "\n" "kwarg_or_double_starred[KeywordOrStarred*]:\n" " | invalid_kwarg\n" " | a=NAME '=' b=expression {\n" -" _PyPegen_keyword_or_starred(p, CHECK(keyword_ty, _PyAST_keyword(a->v." -"Name.id, b, EXTRA)), 1) }\n" +" _PyPegen_keyword_or_starred(p, CHECK(keyword_ty, _PyAST_keyword(a-" +">v.Name.id, b, EXTRA)), 1) }\n" " | '**' a=expression { _PyPegen_keyword_or_starred(p, CHECK(keyword_ty, " "_PyAST_keyword(NULL, a, EXTRA)), 1) }\n" "\n" @@ -1269,8 +1264,8 @@ msgid "" "star_targets[expr_ty]:\n" " | a=star_target !',' { a }\n" " | a=star_target b=(',' c=star_target { c })* [','] {\n" -" _PyAST_Tuple(CHECK(asdl_expr_seq*, _PyPegen_seq_insert_in_front(p, " -"a, b)), Store, EXTRA) }\n" +" _PyAST_Tuple(CHECK(asdl_expr_seq*, _PyPegen_seq_insert_in_front(p, a, " +"b)), Store, EXTRA) }\n" "\n" "star_targets_list_seq[asdl_expr_seq*]: a[asdl_expr_seq*]=','.star_target+ " "[','] { a }\n" @@ -1287,8 +1282,8 @@ msgid "" " | target_with_star_atom\n" "\n" "target_with_star_atom[expr_ty] (memo):\n" -" | a=t_primary '.' b=NAME !t_lookahead { _PyAST_Attribute(a, b->v.Name." -"id, Store, EXTRA) }\n" +" | a=t_primary '.' b=NAME !t_lookahead { _PyAST_Attribute(a, b->v.Name.id, " +"Store, EXTRA) }\n" " | a=t_primary '[' b=slices ']' !t_lookahead { _PyAST_Subscript(a, b, " "Store, EXTRA) }\n" " | star_atom\n" @@ -1306,14 +1301,14 @@ msgid "" " | '(' a=single_target ')' { a }\n" "\n" "single_subscript_attribute_target[expr_ty]:\n" -" | a=t_primary '.' b=NAME !t_lookahead { _PyAST_Attribute(a, b->v.Name." -"id, Store, EXTRA) }\n" +" | a=t_primary '.' b=NAME !t_lookahead { _PyAST_Attribute(a, b->v.Name.id, " +"Store, EXTRA) }\n" " | a=t_primary '[' b=slices ']' !t_lookahead { _PyAST_Subscript(a, b, " "Store, EXTRA) }\n" "\n" "t_primary[expr_ty]:\n" -" | a=t_primary '.' b=NAME &t_lookahead { _PyAST_Attribute(a, b->v.Name." -"id, Load, EXTRA) }\n" +" | a=t_primary '.' b=NAME &t_lookahead { _PyAST_Attribute(a, b->v.Name.id, " +"Load, EXTRA) }\n" " | a=t_primary '[' b=slices ']' &t_lookahead { _PyAST_Subscript(a, b, " "Load, EXTRA) }\n" " | a=t_primary b=genexp &t_lookahead {\n" @@ -1334,10 +1329,10 @@ msgid "" "del_targets[asdl_expr_seq*]: a[asdl_expr_seq*]=','.del_target+ [','] { a }\n" "\n" "del_target[expr_ty] (memo):\n" -" | a=t_primary '.' b=NAME !t_lookahead { _PyAST_Attribute(a, b->v.Name." -"id, Del, EXTRA) }\n" -" | a=t_primary '[' b=slices ']' !t_lookahead { _PyAST_Subscript(a, b, " +" | a=t_primary '.' b=NAME !t_lookahead { _PyAST_Attribute(a, b->v.Name.id, " "Del, EXTRA) }\n" +" | a=t_primary '[' b=slices ']' !t_lookahead { _PyAST_Subscript(a, b, Del, " +"EXTRA) }\n" " | del_t_atom\n" "\n" "del_t_atom[expr_ty]:\n" @@ -1384,15 +1379,15 @@ msgid "" "# From here on, there are rules for invalid syntax with specialised error " "messages\n" "invalid_arguments:\n" -" | ((','.(starred_expression | ( assignment_expression | expression !':" -"=') !'=')+ ',' kwargs) | kwargs) a=',' ','.(starred_expression !'=')+ {\n" +" | ((','.(starred_expression | ( assignment_expression | " +"expression !':=') !'=')+ ',' kwargs) | kwargs) a=',' ','." +"(starred_expression !'=')+ {\n" " RAISE_SYNTAX_ERROR_STARTING_FROM(a, \"iterable argument unpacking " "follows keyword argument unpacking\") }\n" -" | a=expression b=for_if_clauses ',' [args | expression for_if_clauses] " -"{\n" +" | a=expression b=for_if_clauses ',' [args | expression for_if_clauses] {\n" " RAISE_SYNTAX_ERROR_KNOWN_RANGE(a, " -"_PyPegen_get_last_comprehension_item(PyPegen_last_item(b, " -"comprehension_ty)), \"Generator expression must be parenthesized\") }\n" +"_PyPegen_get_last_comprehension_item(PyPegen_last_item(b, comprehension_ty)), " +"\"Generator expression must be parenthesized\") }\n" " | a=NAME b='=' expression for_if_clauses {\n" " RAISE_SYNTAX_ERROR_KNOWN_RANGE(a, b, \"invalid syntax. Maybe you " "meant '==' or ':=' instead of '='?\")}\n" @@ -1402,8 +1397,8 @@ msgid "" " | a=args b=for_if_clauses { _PyPegen_nonparen_genexp_in_call(p, a, b) }\n" " | args ',' a=expression b=for_if_clauses {\n" " RAISE_SYNTAX_ERROR_KNOWN_RANGE(a, " -"_PyPegen_get_last_comprehension_item(PyPegen_last_item(b, " -"comprehension_ty)), \"Generator expression must be parenthesized\") }\n" +"_PyPegen_get_last_comprehension_item(PyPegen_last_item(b, comprehension_ty)), " +"\"Generator expression must be parenthesized\") }\n" " | a=args ',' args { _PyPegen_arguments_parsing_error(p, a) }\n" "invalid_kwarg:\n" " | a[Token*]=('True'|'False'|'None') b='=' {\n" @@ -1414,14 +1409,14 @@ msgid "" "meant '==' or ':=' instead of '='?\")}\n" " | !(NAME '=') a=expression b='=' {\n" " RAISE_SYNTAX_ERROR_KNOWN_RANGE(\n" -" a, b, \"expression cannot contain assignment, perhaps you meant " -"\\\"==\\\"?\") }\n" +" a, b, \"expression cannot contain assignment, perhaps you meant \\" +"\"==\\\"?\") }\n" " | a='**' expression '=' b=expression {\n" " RAISE_SYNTAX_ERROR_KNOWN_RANGE(a, b, \"cannot assign to keyword " "argument unpacking\") }\n" "\n" -"# IMPORTANT: Note that the \"_without_invalid\" suffix causes the rule to " -"not call invalid rules under it\n" +"# IMPORTANT: Note that the \"_without_invalid\" suffix causes the rule to not " +"call invalid rules under it\n" "expression_without_invalid[expr_ty]:\n" " | a=disjunction 'if' b=disjunction 'else' c=expression { _PyAST_IfExp(b, " "a, c, EXTRA) }\n" @@ -1431,18 +1426,18 @@ msgid "" " | a=NAME !'(' b=star_expressions {\n" " _PyPegen_check_legacy_stmt(p, a) ? RAISE_SYNTAX_ERROR_KNOWN_RANGE(a, " "b,\n" -" \"Missing parentheses in call to '%U'. Did you mean %U(...)?\", " -"a->v.Name.id, a->v.Name.id) : NULL}\n" +" \"Missing parentheses in call to '%U'. Did you mean %U(...)?\", a-" +">v.Name.id, a->v.Name.id) : NULL}\n" "\n" "invalid_expression:\n" " # !(NAME STRING) is not matched so we don't show this error with some " "invalid string prefixes like: kf\"dsfsdf\"\n" " # Soft keywords need to also be ignored because they can be parsed as " "NAME NAME\n" -" | !(NAME STRING | SOFT_KEYWORD) a=disjunction " -"b=expression_without_invalid {\n" -" _PyPegen_check_legacy_stmt(p, a) ? NULL : p->tokens[p->mark-1]-" -">level == 0 ? NULL :\n" +" | !(NAME STRING | SOFT_KEYWORD) a=disjunction b=expression_without_invalid " +"{\n" +" _PyPegen_check_legacy_stmt(p, a) ? NULL : p->tokens[p->mark-1]->level " +"== 0 ? NULL :\n" " RAISE_SYNTAX_ERROR_KNOWN_RANGE(a, b, \"invalid syntax. Perhaps you " "forgot a comma?\") }\n" " | a=disjunction 'if' b=disjunction !('else'|':') " @@ -1474,8 +1469,8 @@ msgid "" " _PyPegen_get_expr_name(a)\n" " )}\n" " | a=star_named_expression ',' star_named_expressions* ':' expression {\n" -" RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, \"only single target (not " -"tuple) can be annotated\") }\n" +" RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, \"only single target (not tuple) " +"can be annotated\") }\n" " | a=expression ':' expression {\n" " RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, \"illegal target for " "annotation\") }\n" @@ -1542,8 +1537,8 @@ msgid "" "\"named arguments must follow bare *\") }\n" " | '*' ',' TYPE_COMMENT { RAISE_SYNTAX_ERROR(\"bare * has associated type " "comment\") }\n" -" | '*' param a='=' { RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, \"var-" -"positional argument cannot have default value\") }\n" +" | '*' param a='=' { RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, \"var-positional " +"argument cannot have default value\") }\n" " | '*' (param_no_default | ',') param_maybe_default* a='*' " "(param_no_default | ',') {\n" " RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, \"* argument may appear only " @@ -1654,14 +1649,14 @@ msgid "" " | a='try' ':' NEWLINE !INDENT {\n" " RAISE_INDENTATION_ERROR(\"expected an indented block after 'try' " "statement on line %d\", a->lineno) }\n" -" | 'try' ':' block !('except' | 'finally') " -"{ RAISE_SYNTAX_ERROR(\"expected 'except' or 'finally' block\") }\n" +" | 'try' ':' block !('except' | 'finally') { RAISE_SYNTAX_ERROR(\"expected " +"'except' or 'finally' block\") }\n" " | 'try' ':' block* except_block+ a='except' b='*' expression ['as' NAME] " "':' {\n" " RAISE_SYNTAX_ERROR_KNOWN_RANGE(a, b, \"cannot have both 'except' and " "'except*' on the same 'try'\") }\n" -" | 'try' ':' block* except_star_block+ a='except' [expression ['as' " -"NAME]] ':' {\n" +" | 'try' ':' block* except_star_block+ a='except' [expression ['as' NAME]] " +"':' {\n" " RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, \"cannot have both 'except' and " "'except*' on the same 'try'\") }\n" "invalid_except_stmt:\n" @@ -1700,8 +1695,8 @@ msgid "" " RAISE_INDENTATION_ERROR(\"expected an indented block after 'case' " "statement on line %d\", a->lineno) }\n" "invalid_as_pattern:\n" -" | or_pattern 'as' a=\"_\" { RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, " -"\"cannot use '_' as a target\") }\n" +" | or_pattern 'as' a=\"_\" { RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, \"cannot " +"use '_' as a target\") }\n" " | or_pattern 'as' !NAME a=expression " "{ RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, \"invalid pattern target\") }\n" "invalid_class_pattern:\n" @@ -1714,8 +1709,7 @@ msgid "" " | [positional_patterns ','] keyword_patterns ',' a=positional_patterns " "{ a }\n" "invalid_if_stmt:\n" -" | 'if' named_expression NEWLINE { RAISE_SYNTAX_ERROR(\"expected " -"':'\") }\n" +" | 'if' named_expression NEWLINE { RAISE_SYNTAX_ERROR(\"expected ':'\") }\n" " | a='if' a=named_expression ':' NEWLINE !INDENT {\n" " RAISE_INDENTATION_ERROR(\"expected an indented block after 'if' " "statement on line %d\", a->lineno) }\n" @@ -1743,12 +1737,12 @@ msgid "" " RAISE_INDENTATION_ERROR(\"expected an indented block after 'for' " "statement on line %d\", a->lineno) }\n" "invalid_def_raw:\n" -" | ['async'] a='def' NAME [type_params] '(' [params] ')' ['->' " -"expression] ':' NEWLINE !INDENT {\n" +" | ['async'] a='def' NAME [type_params] '(' [params] ')' ['->' expression] " +"':' NEWLINE !INDENT {\n" " RAISE_INDENTATION_ERROR(\"expected an indented block after function " "definition on line %d\", a->lineno) }\n" -" | ['async'] 'def' NAME [type_params] &&'(' [params] ')' ['->' " -"expression] &&':' [func_type_comment] block\n" +" | ['async'] 'def' NAME [type_params] &&'(' [params] ')' ['->' expression] " +"&&':' [func_type_comment] block\n" "invalid_class_def_raw:\n" " | 'class' NAME [type_params] ['(' [arguments] ')'] NEWLINE " "{ RAISE_SYNTAX_ERROR(\"expected ':'\") }\n" @@ -1805,8 +1799,8 @@ msgid "" "string: expecting '}'\") }\n" "\n" "invalid_conversion_character:\n" -" | '!' &(':' | '}') { RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN(\"f-string: " -"missing conversion character\") }\n" +" | '!' &(':' | '}') { RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN(\"f-string: missing " +"conversion character\") }\n" " | '!' !NAME { RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN(\"f-string: invalid " "conversion character\") }\n" "\n" @@ -1824,3 +1818,1759 @@ msgid "" " token, \n" " \"Type parameter list cannot be empty\")}\n" msgstr "" +"# PEG grammar for Python\n" +"\n" +"@trailer '''\n" +"void *\n" +"_PyPegen_parse(Parser *p)\n" +"{\n" +" // Initialize keywords\n" +" p->keywords = reserved_keywords;\n" +" p->n_keyword_lists = n_keyword_lists;\n" +" p->soft_keywords = soft_keywords;\n" +"\n" +" // Run parser\n" +" void *result = NULL;\n" +" if (p->start_rule == Py_file_input) {\n" +" result = file_rule(p);\n" +" } else if (p->start_rule == Py_single_input) {\n" +" result = interactive_rule(p);\n" +" } else if (p->start_rule == Py_eval_input) {\n" +" result = eval_rule(p);\n" +" } else if (p->start_rule == Py_func_type_input) {\n" +" result = func_type_rule(p);\n" +" }\n" +"\n" +" return result;\n" +"}\n" +"'''\n" +"\n" +"# ========================= START OF THE GRAMMAR =========================\n" +"\n" +"# General grammatical elements and rules:\n" +"#\n" +"# * Strings with double quotes (\") denote SOFT KEYWORDS\n" +"# * Strings with single quotes (') denote KEYWORDS\n" +"# * Upper case names (NAME) denote tokens in the Grammar/Tokens file\n" +"# * Rule names starting with \"invalid_\" are used for specialized syntax " +"errors\n" +"# - These rules are NOT used in the first pass of the parser.\n" +"# - Only if the first pass fails to parse, a second pass including the " +"invalid\n" +"# rules will be executed.\n" +"# - If the parser fails in the second phase with a generic syntax error, " +"the\n" +"# location of the generic failure of the first pass will be used (this " +"avoids\n" +"# reporting incorrect locations due to the invalid rules).\n" +"# - The order of the alternatives involving invalid rules matter\n" +"# (like any rule in PEG).\n" +"#\n" +"# Grammar Syntax (see PEP 617 for more information):\n" +"#\n" +"# rule_name: expression\n" +"# Optionally, a type can be included right after the rule name, which\n" +"# specifies the return type of the C or Python function corresponding to " +"the\n" +"# rule:\n" +"# rule_name[return_type]: expression\n" +"# If the return type is omitted, then a void * is returned in C and an Any " +"in\n" +"# Python.\n" +"# e1 e2\n" +"# Match e1, then match e2.\n" +"# e1 | e2\n" +"# Match e1 or e2.\n" +"# The first alternative can also appear on the line after the rule name " +"for\n" +"# formatting purposes. In that case, a | must be used before the first\n" +"# alternative, like so:\n" +"# rule_name[return_type]:\n" +"# | first_alt\n" +"# | second_alt\n" +"# ( e )\n" +"# Match e (allows also to use other operators in the group like '(e)*')\n" +"# [ e ] or e?\n" +"# Optionally match e.\n" +"# e*\n" +"# Match zero or more occurrences of e.\n" +"# e+\n" +"# Match one or more occurrences of e.\n" +"# s.e+\n" +"# Match one or more occurrences of e, separated by s. The generated parse " +"tree\n" +"# does not include the separator. This is otherwise identical to (e (s " +"e)*).\n" +"# &e\n" +"# Succeed if e can be parsed, without consuming any input.\n" +"# !e\n" +"# Fail if e can be parsed, without consuming any input.\n" +"# ~\n" +"# Commit to the current alternative, even if it fails to parse.\n" +"# &&e\n" +"# Eager parse e. The parser will not backtrack and will immediately \n" +"# fail with SyntaxError if e cannot be parsed.\n" +"#\n" +"\n" +"# STARTING RULES\n" +"# ==============\n" +"\n" +"file[mod_ty]: a=[statements] ENDMARKER { _PyPegen_make_module(p, a) }\n" +"interactive[mod_ty]: a=statement_newline { _PyAST_Interactive(a, p->arena) }\n" +"eval[mod_ty]: a=expressions NEWLINE* ENDMARKER { _PyAST_Expression(a, p-" +">arena) }\n" +"func_type[mod_ty]: '(' a=[type_expressions] ')' '->' b=expression NEWLINE* " +"ENDMARKER { _PyAST_FunctionType(a, b, p->arena) }\n" +"\n" +"# GENERAL STATEMENTS\n" +"# ==================\n" +"\n" +"statements[asdl_stmt_seq*]: a=statement+ " +"{ (asdl_stmt_seq*)_PyPegen_seq_flatten(p, a) }\n" +"\n" +"statement[asdl_stmt_seq*]: a=compound_stmt " +"{ (asdl_stmt_seq*)_PyPegen_singleton_seq(p, a) } | " +"a[asdl_stmt_seq*]=simple_stmts { a }\n" +"\n" +"statement_newline[asdl_stmt_seq*]:\n" +" | a=compound_stmt NEWLINE { (asdl_stmt_seq*)_PyPegen_singleton_seq(p, " +"a) }\n" +" | simple_stmts\n" +" | NEWLINE { (asdl_stmt_seq*)_PyPegen_singleton_seq(p, CHECK(stmt_ty, " +"_PyAST_Pass(EXTRA))) }\n" +" | ENDMARKER { _PyPegen_interactive_exit(p) }\n" +"\n" +"simple_stmts[asdl_stmt_seq*]:\n" +" | a=simple_stmt !';' NEWLINE { (asdl_stmt_seq*)_PyPegen_singleton_seq(p, " +"a) } # Not needed, there for speedup\n" +" | a[asdl_stmt_seq*]=';'.simple_stmt+ [';'] NEWLINE { a }\n" +"\n" +"# NOTE: assignment MUST precede expression, else parsing a simple assignment\n" +"# will throw a SyntaxError.\n" +"simple_stmt[stmt_ty] (memo):\n" +" | assignment\n" +" | &\"type\" type_alias\n" +" | e=star_expressions { _PyAST_Expr(e, EXTRA) }\n" +" | &'return' return_stmt\n" +" | &('import' | 'from') import_stmt\n" +" | &'raise' raise_stmt\n" +" | 'pass' { _PyAST_Pass(EXTRA) }\n" +" | &'del' del_stmt\n" +" | &'yield' yield_stmt\n" +" | &'assert' assert_stmt\n" +" | 'break' { _PyAST_Break(EXTRA) }\n" +" | 'continue' { _PyAST_Continue(EXTRA) }\n" +" | &'global' global_stmt\n" +" | &'nonlocal' nonlocal_stmt\n" +"\n" +"compound_stmt[stmt_ty]:\n" +" | &('def' | '@' | 'async') function_def\n" +" | &'if' if_stmt\n" +" | &('class' | '@') class_def\n" +" | &('with' | 'async') with_stmt\n" +" | &('for' | 'async') for_stmt\n" +" | &'try' try_stmt\n" +" | &'while' while_stmt\n" +" | match_stmt\n" +"\n" +"# SIMPLE STATEMENTS\n" +"# =================\n" +"\n" +"# NOTE: annotated_rhs may start with 'yield'; yield_expr must start with " +"'yield'\n" +"assignment[stmt_ty]:\n" +" | a=NAME ':' b=expression c=['=' d=annotated_rhs { d }] {\n" +" CHECK_VERSION(\n" +" stmt_ty,\n" +" 6,\n" +" \"Variable annotation syntax is\",\n" +" _PyAST_AnnAssign(CHECK(expr_ty, _PyPegen_set_expr_context(p, a, " +"Store)), b, c, 1, EXTRA)\n" +" ) }\n" +" | a=('(' b=single_target ')' { b }\n" +" | single_subscript_attribute_target) ':' b=expression c=['=' " +"d=annotated_rhs { d }] {\n" +" CHECK_VERSION(stmt_ty, 6, \"Variable annotations syntax is\", " +"_PyAST_AnnAssign(a, b, c, 0, EXTRA)) }\n" +" | a[asdl_expr_seq*]=(z=star_targets '=' { z })+ b=(yield_expr | " +"star_expressions) !'=' tc=[TYPE_COMMENT] {\n" +" _PyAST_Assign(a, b, NEW_TYPE_COMMENT(p, tc), EXTRA) }\n" +" | a=single_target b=augassign ~ c=(yield_expr | star_expressions) {\n" +" _PyAST_AugAssign(a, b->kind, c, EXTRA) }\n" +" | invalid_assignment\n" +"\n" +"annotated_rhs[expr_ty]: yield_expr | star_expressions\n" +"\n" +"augassign[AugOperator*]:\n" +" | '+=' { _PyPegen_augoperator(p, Add) }\n" +" | '-=' { _PyPegen_augoperator(p, Sub) }\n" +" | '*=' { _PyPegen_augoperator(p, Mult) }\n" +" | '@=' { CHECK_VERSION(AugOperator*, 5, \"The '@' operator is\", " +"_PyPegen_augoperator(p, MatMult)) }\n" +" | '/=' { _PyPegen_augoperator(p, Div) }\n" +" | '%=' { _PyPegen_augoperator(p, Mod) }\n" +" | '&=' { _PyPegen_augoperator(p, BitAnd) }\n" +" | '|=' { _PyPegen_augoperator(p, BitOr) }\n" +" | '^=' { _PyPegen_augoperator(p, BitXor) }\n" +" | '<<=' { _PyPegen_augoperator(p, LShift) }\n" +" | '>>=' { _PyPegen_augoperator(p, RShift) }\n" +" | '**=' { _PyPegen_augoperator(p, Pow) }\n" +" | '//=' { _PyPegen_augoperator(p, FloorDiv) }\n" +"\n" +"return_stmt[stmt_ty]:\n" +" | 'return' a=[star_expressions] { _PyAST_Return(a, EXTRA) }\n" +"\n" +"raise_stmt[stmt_ty]:\n" +" | 'raise' a=expression b=['from' z=expression { z }] { _PyAST_Raise(a, b, " +"EXTRA) }\n" +" | 'raise' { _PyAST_Raise(NULL, NULL, EXTRA) }\n" +"\n" +"global_stmt[stmt_ty]: 'global' a[asdl_expr_seq*]=','.NAME+ {\n" +" _PyAST_Global(CHECK(asdl_identifier_seq*, _PyPegen_map_names_to_ids(p, " +"a)), EXTRA) }\n" +"\n" +"nonlocal_stmt[stmt_ty]: 'nonlocal' a[asdl_expr_seq*]=','.NAME+ {\n" +" _PyAST_Nonlocal(CHECK(asdl_identifier_seq*, _PyPegen_map_names_to_ids(p, " +"a)), EXTRA) }\n" +"\n" +"del_stmt[stmt_ty]:\n" +" | 'del' a=del_targets &(';' | NEWLINE) { _PyAST_Delete(a, EXTRA) }\n" +" | invalid_del_stmt\n" +"\n" +"yield_stmt[stmt_ty]: y=yield_expr { _PyAST_Expr(y, EXTRA) }\n" +"\n" +"assert_stmt[stmt_ty]: 'assert' a=expression b=[',' z=expression { z }] " +"{ _PyAST_Assert(a, b, EXTRA) }\n" +"\n" +"import_stmt[stmt_ty]:\n" +" | invalid_import\n" +" | import_name\n" +" | import_from\n" +"\n" +"# Import statements\n" +"# -----------------\n" +"\n" +"import_name[stmt_ty]: 'import' a=dotted_as_names { _PyAST_Import(a, EXTRA) }\n" +"# note below: the ('.' | '...') is necessary because '...' is tokenized as " +"ELLIPSIS\n" +"import_from[stmt_ty]:\n" +" | 'from' a=('.' | '...')* b=dotted_name 'import' c=import_from_targets {\n" +" _PyAST_ImportFrom(b->v.Name.id, c, _PyPegen_seq_count_dots(a), " +"EXTRA) }\n" +" | 'from' a=('.' | '...')+ 'import' b=import_from_targets {\n" +" _PyAST_ImportFrom(NULL, b, _PyPegen_seq_count_dots(a), EXTRA) }\n" +"import_from_targets[asdl_alias_seq*]:\n" +" | '(' a=import_from_as_names [','] ')' { a }\n" +" | import_from_as_names !','\n" +" | '*' { (asdl_alias_seq*)_PyPegen_singleton_seq(p, CHECK(alias_ty, " +"_PyPegen_alias_for_star(p, EXTRA))) }\n" +" | invalid_import_from_targets\n" +"import_from_as_names[asdl_alias_seq*]:\n" +" | a[asdl_alias_seq*]=','.import_from_as_name+ { a }\n" +"import_from_as_name[alias_ty]:\n" +" | a=NAME b=['as' z=NAME { z }] { _PyAST_alias(a->v.Name.id,\n" +" (b) ? ((expr_ty) b)-" +">v.Name.id : NULL,\n" +" EXTRA) }\n" +"dotted_as_names[asdl_alias_seq*]:\n" +" | a[asdl_alias_seq*]=','.dotted_as_name+ { a }\n" +"dotted_as_name[alias_ty]:\n" +" | a=dotted_name b=['as' z=NAME { z }] { _PyAST_alias(a->v.Name.id,\n" +" (b) ? ((expr_ty) b)-" +">v.Name.id : NULL,\n" +" EXTRA) }\n" +"dotted_name[expr_ty]:\n" +" | a=dotted_name '.' b=NAME { _PyPegen_join_names_with_dot(p, a, b) }\n" +" | NAME\n" +"\n" +"# COMPOUND STATEMENTS\n" +"# ===================\n" +"\n" +"# Common elements\n" +"# ---------------\n" +"\n" +"block[asdl_stmt_seq*] (memo):\n" +" | NEWLINE INDENT a=statements DEDENT { a }\n" +" | simple_stmts\n" +" | invalid_block\n" +"\n" +"decorators[asdl_expr_seq*]: a[asdl_expr_seq*]=('@' f=named_expression NEWLINE " +"{ f })+ { a }\n" +"\n" +"# Class definitions\n" +"# -----------------\n" +"\n" +"class_def[stmt_ty]:\n" +" | a=decorators b=class_def_raw { _PyPegen_class_def_decorators(p, a, " +"b) }\n" +" | class_def_raw\n" +"\n" +"class_def_raw[stmt_ty]:\n" +" | invalid_class_def_raw\n" +" | 'class' a=NAME t=[type_params] b=['(' z=[arguments] ')' { z }] ':' " +"c=block {\n" +" _PyAST_ClassDef(a->v.Name.id,\n" +" (b) ? ((expr_ty) b)->v.Call.args : NULL,\n" +" (b) ? ((expr_ty) b)->v.Call.keywords : NULL,\n" +" c, NULL, t, EXTRA) }\n" +"\n" +"# Function definitions\n" +"# --------------------\n" +"\n" +"function_def[stmt_ty]:\n" +" | d=decorators f=function_def_raw { _PyPegen_function_def_decorators(p, " +"d, f) }\n" +" | function_def_raw\n" +"\n" +"function_def_raw[stmt_ty]:\n" +" | invalid_def_raw\n" +" | 'def' n=NAME t=[type_params] '(' params=[params] ')' a=['->' " +"z=expression { z }] ':' tc=[func_type_comment] b=block {\n" +" _PyAST_FunctionDef(n->v.Name.id,\n" +" (params) ? params : CHECK(arguments_ty, " +"_PyPegen_empty_arguments(p)),\n" +" b, NULL, a, NEW_TYPE_COMMENT(p, tc), t, EXTRA) }\n" +" | 'async' 'def' n=NAME t=[type_params] '(' params=[params] ')' a=['->' " +"z=expression { z }] ':' tc=[func_type_comment] b=block {\n" +" CHECK_VERSION(\n" +" stmt_ty,\n" +" 5,\n" +" \"Async functions are\",\n" +" _PyAST_AsyncFunctionDef(n->v.Name.id,\n" +" (params) ? params : CHECK(arguments_ty, " +"_PyPegen_empty_arguments(p)),\n" +" b, NULL, a, NEW_TYPE_COMMENT(p, tc), t, EXTRA)\n" +" ) }\n" +"\n" +"# Function parameters\n" +"# -------------------\n" +"\n" +"params[arguments_ty]:\n" +" | invalid_parameters\n" +" | parameters\n" +"\n" +"parameters[arguments_ty]:\n" +" | a=slash_no_default b[asdl_arg_seq*]=param_no_default* " +"c=param_with_default* d=[star_etc] {\n" +" CHECK_VERSION(arguments_ty, 8, \"Positional-only parameters are\", " +"_PyPegen_make_arguments(p, a, NULL, b, c, d)) }\n" +" | a=slash_with_default b=param_with_default* c=[star_etc] {\n" +" CHECK_VERSION(arguments_ty, 8, \"Positional-only parameters are\", " +"_PyPegen_make_arguments(p, NULL, a, NULL, b, c)) }\n" +" | a[asdl_arg_seq*]=param_no_default+ b=param_with_default* c=[star_etc] " +"{\n" +" _PyPegen_make_arguments(p, NULL, NULL, a, b, c) }\n" +" | a=param_with_default+ b=[star_etc] { _PyPegen_make_arguments(p, NULL, " +"NULL, NULL, a, b)}\n" +" | a=star_etc { _PyPegen_make_arguments(p, NULL, NULL, NULL, NULL, a) }\n" +"\n" +"# Some duplication here because we can't write (',' | &')'),\n" +"# which is because we don't support empty alternatives (yet).\n" +"\n" +"slash_no_default[asdl_arg_seq*]:\n" +" | a[asdl_arg_seq*]=param_no_default+ '/' ',' { a }\n" +" | a[asdl_arg_seq*]=param_no_default+ '/' &')' { a }\n" +"slash_with_default[SlashWithDefault*]:\n" +" | a=param_no_default* b=param_with_default+ '/' ',' " +"{ _PyPegen_slash_with_default(p, (asdl_arg_seq *)a, b) }\n" +" | a=param_no_default* b=param_with_default+ '/' &')' " +"{ _PyPegen_slash_with_default(p, (asdl_arg_seq *)a, b) }\n" +"\n" +"star_etc[StarEtc*]:\n" +" | invalid_star_etc\n" +" | '*' a=param_no_default b=param_maybe_default* c=[kwds] {\n" +" _PyPegen_star_etc(p, a, b, c) }\n" +" | '*' a=param_no_default_star_annotation b=param_maybe_default* c=[kwds] " +"{\n" +" _PyPegen_star_etc(p, a, b, c) }\n" +" | '*' ',' b=param_maybe_default+ c=[kwds] {\n" +" _PyPegen_star_etc(p, NULL, b, c) }\n" +" | a=kwds { _PyPegen_star_etc(p, NULL, NULL, a) }\n" +"\n" +"kwds[arg_ty]:\n" +" | invalid_kwds\n" +" | '**' a=param_no_default { a }\n" +"\n" +"# One parameter. This *includes* a following comma and type comment.\n" +"#\n" +"# There are three styles:\n" +"# - No default\n" +"# - With default\n" +"# - Maybe with default\n" +"#\n" +"# There are two alternative forms of each, to deal with type comments:\n" +"# - Ends in a comma followed by an optional type comment\n" +"# - No comma, optional type comment, must be followed by close paren\n" +"# The latter form is for a final parameter without trailing comma.\n" +"#\n" +"\n" +"param_no_default[arg_ty]:\n" +" | a=param ',' tc=TYPE_COMMENT? { _PyPegen_add_type_comment_to_arg(p, a, " +"tc) }\n" +" | a=param tc=TYPE_COMMENT? &')' { _PyPegen_add_type_comment_to_arg(p, a, " +"tc) }\n" +"param_no_default_star_annotation[arg_ty]:\n" +" | a=param_star_annotation ',' tc=TYPE_COMMENT? " +"{ _PyPegen_add_type_comment_to_arg(p, a, tc) }\n" +" | a=param_star_annotation tc=TYPE_COMMENT? &')' " +"{ _PyPegen_add_type_comment_to_arg(p, a, tc) }\n" +"param_with_default[NameDefaultPair*]:\n" +" | a=param c=default ',' tc=TYPE_COMMENT? { _PyPegen_name_default_pair(p, " +"a, c, tc) }\n" +" | a=param c=default tc=TYPE_COMMENT? &')' { _PyPegen_name_default_pair(p, " +"a, c, tc) }\n" +"param_maybe_default[NameDefaultPair*]:\n" +" | a=param c=default? ',' tc=TYPE_COMMENT? { _PyPegen_name_default_pair(p, " +"a, c, tc) }\n" +" | a=param c=default? tc=TYPE_COMMENT? &')' " +"{ _PyPegen_name_default_pair(p, a, c, tc) }\n" +"param[arg_ty]: a=NAME b=annotation? { _PyAST_arg(a->v.Name.id, b, NULL, " +"EXTRA) }\n" +"param_star_annotation[arg_ty]: a=NAME b=star_annotation { _PyAST_arg(a-" +">v.Name.id, b, NULL, EXTRA) }\n" +"annotation[expr_ty]: ':' a=expression { a }\n" +"star_annotation[expr_ty]: ':' a=star_expression { a }\n" +"default[expr_ty]: '=' a=expression { a } | invalid_default\n" +"\n" +"# If statement\n" +"# ------------\n" +"\n" +"if_stmt[stmt_ty]:\n" +" | invalid_if_stmt\n" +" | 'if' a=named_expression ':' b=block c=elif_stmt {\n" +" _PyAST_If(a, b, CHECK(asdl_stmt_seq*, _PyPegen_singleton_seq(p, c)), " +"EXTRA) }\n" +" | 'if' a=named_expression ':' b=block c=[else_block] { _PyAST_If(a, b, c, " +"EXTRA) }\n" +"elif_stmt[stmt_ty]:\n" +" | invalid_elif_stmt\n" +" | 'elif' a=named_expression ':' b=block c=elif_stmt {\n" +" _PyAST_If(a, b, CHECK(asdl_stmt_seq*, _PyPegen_singleton_seq(p, c)), " +"EXTRA) }\n" +" | 'elif' a=named_expression ':' b=block c=[else_block] { _PyAST_If(a, b, " +"c, EXTRA) }\n" +"else_block[asdl_stmt_seq*]:\n" +" | invalid_else_stmt\n" +" | 'else' &&':' b=block { b }\n" +"\n" +"# While statement\n" +"# ---------------\n" +"\n" +"while_stmt[stmt_ty]:\n" +" | invalid_while_stmt\n" +" | 'while' a=named_expression ':' b=block c=[else_block] { _PyAST_While(a, " +"b, c, EXTRA) }\n" +"\n" +"# For statement\n" +"# -------------\n" +"\n" +"for_stmt[stmt_ty]:\n" +" | invalid_for_stmt\n" +" | 'for' t=star_targets 'in' ~ ex=star_expressions ':' tc=[TYPE_COMMENT] " +"b=block el=[else_block] {\n" +" _PyAST_For(t, ex, b, el, NEW_TYPE_COMMENT(p, tc), EXTRA) }\n" +" | 'async' 'for' t=star_targets 'in' ~ ex=star_expressions ':' " +"tc=[TYPE_COMMENT] b=block el=[else_block] {\n" +" CHECK_VERSION(stmt_ty, 5, \"Async for loops are\", _PyAST_AsyncFor(t, " +"ex, b, el, NEW_TYPE_COMMENT(p, tc), EXTRA)) }\n" +" | invalid_for_target\n" +"\n" +"# With statement\n" +"# --------------\n" +"\n" +"with_stmt[stmt_ty]:\n" +" | invalid_with_stmt_indent\n" +" | 'with' '(' a[asdl_withitem_seq*]=','.with_item+ ','? ')' ':' " +"tc=[TYPE_COMMENT] b=block {\n" +" _PyAST_With(a, b, NEW_TYPE_COMMENT(p, tc), EXTRA) }\n" +" | 'with' a[asdl_withitem_seq*]=','.with_item+ ':' tc=[TYPE_COMMENT] " +"b=block {\n" +" _PyAST_With(a, b, NEW_TYPE_COMMENT(p, tc), EXTRA) }\n" +" | 'async' 'with' '(' a[asdl_withitem_seq*]=','.with_item+ ','? ')' ':' " +"b=block {\n" +" CHECK_VERSION(stmt_ty, 5, \"Async with statements are\", " +"_PyAST_AsyncWith(a, b, NULL, EXTRA)) }\n" +" | 'async' 'with' a[asdl_withitem_seq*]=','.with_item+ ':' " +"tc=[TYPE_COMMENT] b=block {\n" +" CHECK_VERSION(stmt_ty, 5, \"Async with statements are\", " +"_PyAST_AsyncWith(a, b, NEW_TYPE_COMMENT(p, tc), EXTRA)) }\n" +" | invalid_with_stmt\n" +"\n" +"with_item[withitem_ty]:\n" +" | e=expression 'as' t=star_target &(',' | ')' | ':') { _PyAST_withitem(e, " +"t, p->arena) }\n" +" | invalid_with_item\n" +" | e=expression { _PyAST_withitem(e, NULL, p->arena) }\n" +"\n" +"# Try statement\n" +"# -------------\n" +"\n" +"try_stmt[stmt_ty]:\n" +" | invalid_try_stmt\n" +" | 'try' &&':' b=block f=finally_block { _PyAST_Try(b, NULL, NULL, f, " +"EXTRA) }\n" +" | 'try' &&':' b=block ex[asdl_excepthandler_seq*]=except_block+ " +"el=[else_block] f=[finally_block] { _PyAST_Try(b, ex, el, f, EXTRA) }\n" +" | 'try' &&':' b=block ex[asdl_excepthandler_seq*]=except_star_block+ " +"el=[else_block] f=[finally_block] {\n" +" CHECK_VERSION(stmt_ty, 11, \"Exception groups are\",\n" +" _PyAST_TryStar(b, ex, el, f, EXTRA)) }\n" +"\n" +"\n" +"# Except statement\n" +"# ----------------\n" +"\n" +"except_block[excepthandler_ty]:\n" +" | invalid_except_stmt_indent\n" +" | 'except' e=expression t=['as' z=NAME { z }] ':' b=block {\n" +" _PyAST_ExceptHandler(e, (t) ? ((expr_ty) t)->v.Name.id : NULL, b, " +"EXTRA) }\n" +" | 'except' ':' b=block { _PyAST_ExceptHandler(NULL, NULL, b, EXTRA) }\n" +" | invalid_except_stmt\n" +"except_star_block[excepthandler_ty]:\n" +" | invalid_except_star_stmt_indent\n" +" | 'except' '*' e=expression t=['as' z=NAME { z }] ':' b=block {\n" +" _PyAST_ExceptHandler(e, (t) ? ((expr_ty) t)->v.Name.id : NULL, b, " +"EXTRA) }\n" +" | invalid_except_stmt\n" +"finally_block[asdl_stmt_seq*]:\n" +" | invalid_finally_stmt\n" +" | 'finally' &&':' a=block { a }\n" +"\n" +"# Match statement\n" +"# ---------------\n" +"\n" +"match_stmt[stmt_ty]:\n" +" | \"match\" subject=subject_expr ':' NEWLINE INDENT " +"cases[asdl_match_case_seq*]=case_block+ DEDENT {\n" +" CHECK_VERSION(stmt_ty, 10, \"Pattern matching is\", " +"_PyAST_Match(subject, cases, EXTRA)) }\n" +" | invalid_match_stmt\n" +"\n" +"subject_expr[expr_ty]:\n" +" | value=star_named_expression ',' values=star_named_expressions? {\n" +" _PyAST_Tuple(CHECK(asdl_expr_seq*, _PyPegen_seq_insert_in_front(p, " +"value, values)), Load, EXTRA) }\n" +" | named_expression\n" +"\n" +"case_block[match_case_ty]:\n" +" | invalid_case_block\n" +" | \"case\" pattern=patterns guard=guard? ':' body=block {\n" +" _PyAST_match_case(pattern, guard, body, p->arena) }\n" +"\n" +"guard[expr_ty]: 'if' guard=named_expression { guard }\n" +"\n" +"patterns[pattern_ty]:\n" +" | patterns[asdl_pattern_seq*]=open_sequence_pattern {\n" +" _PyAST_MatchSequence(patterns, EXTRA) }\n" +" | pattern\n" +"\n" +"pattern[pattern_ty]:\n" +" | as_pattern\n" +" | or_pattern\n" +"\n" +"as_pattern[pattern_ty]:\n" +" | pattern=or_pattern 'as' target=pattern_capture_target {\n" +" _PyAST_MatchAs(pattern, target->v.Name.id, EXTRA) }\n" +" | invalid_as_pattern\n" +"\n" +"or_pattern[pattern_ty]:\n" +" | patterns[asdl_pattern_seq*]='|'.closed_pattern+ {\n" +" asdl_seq_LEN(patterns) == 1 ? asdl_seq_GET(patterns, 0) : " +"_PyAST_MatchOr(patterns, EXTRA) }\n" +"\n" +"closed_pattern[pattern_ty] (memo):\n" +" | literal_pattern\n" +" | capture_pattern\n" +" | wildcard_pattern\n" +" | value_pattern\n" +" | group_pattern\n" +" | sequence_pattern\n" +" | mapping_pattern\n" +" | class_pattern\n" +"\n" +"# Literal patterns are used for equality and identity constraints\n" +"literal_pattern[pattern_ty]:\n" +" | value=signed_number !('+' | '-') { _PyAST_MatchValue(value, EXTRA) }\n" +" | value=complex_number { _PyAST_MatchValue(value, EXTRA) }\n" +" | value=strings { _PyAST_MatchValue(value, EXTRA) }\n" +" | 'None' { _PyAST_MatchSingleton(Py_None, EXTRA) }\n" +" | 'True' { _PyAST_MatchSingleton(Py_True, EXTRA) }\n" +" | 'False' { _PyAST_MatchSingleton(Py_False, EXTRA) }\n" +"\n" +"# Literal expressions are used to restrict permitted mapping pattern keys\n" +"literal_expr[expr_ty]:\n" +" | signed_number !('+' | '-')\n" +" | complex_number\n" +" | strings\n" +" | 'None' { _PyAST_Constant(Py_None, NULL, EXTRA) }\n" +" | 'True' { _PyAST_Constant(Py_True, NULL, EXTRA) }\n" +" | 'False' { _PyAST_Constant(Py_False, NULL, EXTRA) }\n" +"\n" +"complex_number[expr_ty]:\n" +" | real=signed_real_number '+' imag=imaginary_number {\n" +" _PyAST_BinOp(real, Add, imag, EXTRA) }\n" +" | real=signed_real_number '-' imag=imaginary_number {\n" +" _PyAST_BinOp(real, Sub, imag, EXTRA) }\n" +"\n" +"signed_number[expr_ty]:\n" +" | NUMBER\n" +" | '-' number=NUMBER { _PyAST_UnaryOp(USub, number, EXTRA) }\n" +"\n" +"signed_real_number[expr_ty]:\n" +" | real_number\n" +" | '-' real=real_number { _PyAST_UnaryOp(USub, real, EXTRA) }\n" +"\n" +"real_number[expr_ty]:\n" +" | real=NUMBER { _PyPegen_ensure_real(p, real) }\n" +"\n" +"imaginary_number[expr_ty]:\n" +" | imag=NUMBER { _PyPegen_ensure_imaginary(p, imag) }\n" +"\n" +"capture_pattern[pattern_ty]:\n" +" | target=pattern_capture_target { _PyAST_MatchAs(NULL, target->v.Name.id, " +"EXTRA) }\n" +"\n" +"pattern_capture_target[expr_ty]:\n" +" | !\"_\" name=NAME !('.' | '(' | '=') {\n" +" _PyPegen_set_expr_context(p, name, Store) }\n" +"\n" +"wildcard_pattern[pattern_ty]:\n" +" | \"_\" { _PyAST_MatchAs(NULL, NULL, EXTRA) }\n" +"\n" +"value_pattern[pattern_ty]:\n" +" | attr=attr !('.' | '(' | '=') { _PyAST_MatchValue(attr, EXTRA) }\n" +"\n" +"attr[expr_ty]:\n" +" | value=name_or_attr '.' attr=NAME {\n" +" _PyAST_Attribute(value, attr->v.Name.id, Load, EXTRA) }\n" +"\n" +"name_or_attr[expr_ty]:\n" +" | attr\n" +" | NAME\n" +"\n" +"group_pattern[pattern_ty]:\n" +" | '(' pattern=pattern ')' { pattern }\n" +"\n" +"sequence_pattern[pattern_ty]:\n" +" | '[' patterns=maybe_sequence_pattern? ']' " +"{ _PyAST_MatchSequence(patterns, EXTRA) }\n" +" | '(' patterns=open_sequence_pattern? ')' " +"{ _PyAST_MatchSequence(patterns, EXTRA) }\n" +"\n" +"open_sequence_pattern[asdl_seq*]:\n" +" | pattern=maybe_star_pattern ',' patterns=maybe_sequence_pattern? {\n" +" _PyPegen_seq_insert_in_front(p, pattern, patterns) }\n" +"\n" +"maybe_sequence_pattern[asdl_seq*]:\n" +" | patterns=','.maybe_star_pattern+ ','? { patterns }\n" +"\n" +"maybe_star_pattern[pattern_ty]:\n" +" | star_pattern\n" +" | pattern\n" +"\n" +"star_pattern[pattern_ty] (memo):\n" +" | '*' target=pattern_capture_target {\n" +" _PyAST_MatchStar(target->v.Name.id, EXTRA) }\n" +" | '*' wildcard_pattern {\n" +" _PyAST_MatchStar(NULL, EXTRA) }\n" +"\n" +"mapping_pattern[pattern_ty]:\n" +" | '{' '}' {\n" +" _PyAST_MatchMapping(NULL, NULL, NULL, EXTRA) }\n" +" | '{' rest=double_star_pattern ','? '}' {\n" +" _PyAST_MatchMapping(NULL, NULL, rest->v.Name.id, EXTRA) }\n" +" | '{' items=items_pattern ',' rest=double_star_pattern ','? '}' {\n" +" _PyAST_MatchMapping(\n" +" CHECK(asdl_expr_seq*, _PyPegen_get_pattern_keys(p, items)),\n" +" CHECK(asdl_pattern_seq*, _PyPegen_get_patterns(p, items)),\n" +" rest->v.Name.id,\n" +" EXTRA) }\n" +" | '{' items=items_pattern ','? '}' {\n" +" _PyAST_MatchMapping(\n" +" CHECK(asdl_expr_seq*, _PyPegen_get_pattern_keys(p, items)),\n" +" CHECK(asdl_pattern_seq*, _PyPegen_get_patterns(p, items)),\n" +" NULL,\n" +" EXTRA) }\n" +"\n" +"items_pattern[asdl_seq*]:\n" +" | ','.key_value_pattern+\n" +"\n" +"key_value_pattern[KeyPatternPair*]:\n" +" | key=(literal_expr | attr) ':' pattern=pattern {\n" +" _PyPegen_key_pattern_pair(p, key, pattern) }\n" +"\n" +"double_star_pattern[expr_ty]:\n" +" | '**' target=pattern_capture_target { target }\n" +"\n" +"class_pattern[pattern_ty]:\n" +" | cls=name_or_attr '(' ')' {\n" +" _PyAST_MatchClass(cls, NULL, NULL, NULL, EXTRA) }\n" +" | cls=name_or_attr '(' patterns=positional_patterns ','? ')' {\n" +" _PyAST_MatchClass(cls, patterns, NULL, NULL, EXTRA) }\n" +" | cls=name_or_attr '(' keywords=keyword_patterns ','? ')' {\n" +" _PyAST_MatchClass(\n" +" cls, NULL,\n" +" CHECK(asdl_identifier_seq*, _PyPegen_map_names_to_ids(p,\n" +" CHECK(asdl_expr_seq*, _PyPegen_get_pattern_keys(p, " +"keywords)))),\n" +" CHECK(asdl_pattern_seq*, _PyPegen_get_patterns(p, keywords)),\n" +" EXTRA) }\n" +" | cls=name_or_attr '(' patterns=positional_patterns ',' " +"keywords=keyword_patterns ','? ')' {\n" +" _PyAST_MatchClass(\n" +" cls,\n" +" patterns,\n" +" CHECK(asdl_identifier_seq*, _PyPegen_map_names_to_ids(p,\n" +" CHECK(asdl_expr_seq*, _PyPegen_get_pattern_keys(p, " +"keywords)))),\n" +" CHECK(asdl_pattern_seq*, _PyPegen_get_patterns(p, keywords)),\n" +" EXTRA) }\n" +" | invalid_class_pattern\n" +"\n" +"positional_patterns[asdl_pattern_seq*]:\n" +" | args[asdl_pattern_seq*]=','.pattern+ { args }\n" +"\n" +"keyword_patterns[asdl_seq*]:\n" +" | ','.keyword_pattern+\n" +"\n" +"keyword_pattern[KeyPatternPair*]:\n" +" | arg=NAME '=' value=pattern { _PyPegen_key_pattern_pair(p, arg, " +"value) }\n" +"\n" +"# Type statement\n" +"# ---------------\n" +"\n" +"type_alias[stmt_ty]:\n" +" | \"type\" n=NAME t=[type_params] '=' b=expression {\n" +" CHECK_VERSION(stmt_ty, 12, \"Type statement is\",\n" +" _PyAST_TypeAlias(CHECK(expr_ty, _PyPegen_set_expr_context(p, n, " +"Store)), t, b, EXTRA)) }\n" +"\n" +"# Type parameter declaration\n" +"# --------------------------\n" +"\n" +"type_params[asdl_type_param_seq*]: \n" +" | invalid_type_params\n" +" | '[' t=type_param_seq ']' {\n" +" CHECK_VERSION(asdl_type_param_seq *, 12, \"Type parameter lists " +"are\", t) }\n" +"\n" +"type_param_seq[asdl_type_param_seq*]: a[asdl_type_param_seq*]=','.type_param+ " +"[','] { a }\n" +"\n" +"type_param[type_param_ty] (memo):\n" +" | a=NAME b=[type_param_bound] c=[type_param_default] { _PyAST_TypeVar(a-" +">v.Name.id, b, c, EXTRA) }\n" +" | '*' a=NAME colon=':' e=expression {\n" +" RAISE_SYNTAX_ERROR_STARTING_FROM(colon, e->kind == Tuple_kind\n" +" ? \"cannot use constraints with TypeVarTuple\"\n" +" : \"cannot use bound with TypeVarTuple\")\n" +" }\n" +" | '*' a=NAME b=[type_param_starred_default] { _PyAST_TypeVarTuple(a-" +">v.Name.id, b, EXTRA) }\n" +" | '**' a=NAME colon=':' e=expression {\n" +" RAISE_SYNTAX_ERROR_STARTING_FROM(colon, e->kind == Tuple_kind\n" +" ? \"cannot use constraints with ParamSpec\"\n" +" : \"cannot use bound with ParamSpec\")\n" +" }\n" +" | '**' a=NAME b=[type_param_default] { _PyAST_ParamSpec(a->v.Name.id, b, " +"EXTRA) }\n" +"\n" +"type_param_bound[expr_ty]: ':' e=expression { e }\n" +"type_param_default[expr_ty]: '=' e=expression {\n" +" CHECK_VERSION(expr_ty, 13, \"Type parameter defaults are\", e) }\n" +"type_param_starred_default[expr_ty]: '=' e=star_expression {\n" +" CHECK_VERSION(expr_ty, 13, \"Type parameter defaults are\", e) }\n" +"\n" +"# EXPRESSIONS\n" +"# -----------\n" +"\n" +"expressions[expr_ty]:\n" +" | a=expression b=(',' c=expression { c })+ [','] {\n" +" _PyAST_Tuple(CHECK(asdl_expr_seq*, _PyPegen_seq_insert_in_front(p, a, " +"b)), Load, EXTRA) }\n" +" | a=expression ',' { _PyAST_Tuple(CHECK(asdl_expr_seq*, " +"_PyPegen_singleton_seq(p, a)), Load, EXTRA) }\n" +" | expression\n" +"\n" +"expression[expr_ty] (memo):\n" +" | invalid_expression\n" +" | invalid_legacy_expression\n" +" | a=disjunction 'if' b=disjunction 'else' c=expression { _PyAST_IfExp(b, " +"a, c, EXTRA) }\n" +" | disjunction\n" +" | lambdef\n" +"\n" +"yield_expr[expr_ty]:\n" +" | 'yield' 'from' a=expression { _PyAST_YieldFrom(a, EXTRA) }\n" +" | 'yield' a=[star_expressions] { _PyAST_Yield(a, EXTRA) }\n" +"\n" +"star_expressions[expr_ty]:\n" +" | a=star_expression b=(',' c=star_expression { c })+ [','] {\n" +" _PyAST_Tuple(CHECK(asdl_expr_seq*, _PyPegen_seq_insert_in_front(p, a, " +"b)), Load, EXTRA) }\n" +" | a=star_expression ',' { _PyAST_Tuple(CHECK(asdl_expr_seq*, " +"_PyPegen_singleton_seq(p, a)), Load, EXTRA) }\n" +" | star_expression\n" +"\n" +"star_expression[expr_ty] (memo):\n" +" | '*' a=bitwise_or { _PyAST_Starred(a, Load, EXTRA) }\n" +" | expression\n" +"\n" +"star_named_expressions[asdl_expr_seq*]: " +"a[asdl_expr_seq*]=','.star_named_expression+ [','] { a }\n" +"\n" +"star_named_expression[expr_ty]:\n" +" | '*' a=bitwise_or { _PyAST_Starred(a, Load, EXTRA) }\n" +" | named_expression\n" +"\n" +"assignment_expression[expr_ty]:\n" +" | a=NAME ':=' ~ b=expression {\n" +" CHECK_VERSION(expr_ty, 8, \"Assignment expressions are\",\n" +" _PyAST_NamedExpr(CHECK(expr_ty, _PyPegen_set_expr_context(p, a, " +"Store)), b, EXTRA)) }\n" +"\n" +"named_expression[expr_ty]:\n" +" | assignment_expression\n" +" | invalid_named_expression\n" +" | expression !':='\n" +"\n" +"disjunction[expr_ty] (memo):\n" +" | a=conjunction b=('or' c=conjunction { c })+ { _PyAST_BoolOp(\n" +" Or,\n" +" CHECK(asdl_expr_seq*, _PyPegen_seq_insert_in_front(p, a, b)),\n" +" EXTRA) }\n" +" | conjunction\n" +"\n" +"conjunction[expr_ty] (memo):\n" +" | a=inversion b=('and' c=inversion { c })+ { _PyAST_BoolOp(\n" +" And,\n" +" CHECK(asdl_expr_seq*, _PyPegen_seq_insert_in_front(p, a, b)),\n" +" EXTRA) }\n" +" | inversion\n" +"\n" +"inversion[expr_ty] (memo):\n" +" | 'not' a=inversion { _PyAST_UnaryOp(Not, a, EXTRA) }\n" +" | comparison\n" +"\n" +"# Comparison operators\n" +"# --------------------\n" +"\n" +"comparison[expr_ty]:\n" +" | a=bitwise_or b=compare_op_bitwise_or_pair+ {\n" +" _PyAST_Compare(\n" +" a,\n" +" CHECK(asdl_int_seq*, _PyPegen_get_cmpops(p, b)),\n" +" CHECK(asdl_expr_seq*, _PyPegen_get_exprs(p, b)),\n" +" EXTRA) }\n" +" | bitwise_or\n" +"\n" +"compare_op_bitwise_or_pair[CmpopExprPair*]:\n" +" | eq_bitwise_or\n" +" | noteq_bitwise_or\n" +" | lte_bitwise_or\n" +" | lt_bitwise_or\n" +" | gte_bitwise_or\n" +" | gt_bitwise_or\n" +" | notin_bitwise_or\n" +" | in_bitwise_or\n" +" | isnot_bitwise_or\n" +" | is_bitwise_or\n" +"\n" +"eq_bitwise_or[CmpopExprPair*]: '==' a=bitwise_or " +"{ _PyPegen_cmpop_expr_pair(p, Eq, a) }\n" +"noteq_bitwise_or[CmpopExprPair*]:\n" +" | (tok='!=' { _PyPegen_check_barry_as_flufl(p, tok) ? NULL : tok}) " +"a=bitwise_or {_PyPegen_cmpop_expr_pair(p, NotEq, a) }\n" +"lte_bitwise_or[CmpopExprPair*]: '<=' a=bitwise_or " +"{ _PyPegen_cmpop_expr_pair(p, LtE, a) }\n" +"lt_bitwise_or[CmpopExprPair*]: '<' a=bitwise_or { _PyPegen_cmpop_expr_pair(p, " +"Lt, a) }\n" +"gte_bitwise_or[CmpopExprPair*]: '>=' a=bitwise_or " +"{ _PyPegen_cmpop_expr_pair(p, GtE, a) }\n" +"gt_bitwise_or[CmpopExprPair*]: '>' a=bitwise_or { _PyPegen_cmpop_expr_pair(p, " +"Gt, a) }\n" +"notin_bitwise_or[CmpopExprPair*]: 'not' 'in' a=bitwise_or " +"{ _PyPegen_cmpop_expr_pair(p, NotIn, a) }\n" +"in_bitwise_or[CmpopExprPair*]: 'in' a=bitwise_or " +"{ _PyPegen_cmpop_expr_pair(p, In, a) }\n" +"isnot_bitwise_or[CmpopExprPair*]: 'is' 'not' a=bitwise_or " +"{ _PyPegen_cmpop_expr_pair(p, IsNot, a) }\n" +"is_bitwise_or[CmpopExprPair*]: 'is' a=bitwise_or " +"{ _PyPegen_cmpop_expr_pair(p, Is, a) }\n" +"\n" +"# Bitwise operators\n" +"# -----------------\n" +"\n" +"bitwise_or[expr_ty]:\n" +" | a=bitwise_or '|' b=bitwise_xor { _PyAST_BinOp(a, BitOr, b, EXTRA) }\n" +" | bitwise_xor\n" +"\n" +"bitwise_xor[expr_ty]:\n" +" | a=bitwise_xor '^' b=bitwise_and { _PyAST_BinOp(a, BitXor, b, EXTRA) }\n" +" | bitwise_and\n" +"\n" +"bitwise_and[expr_ty]:\n" +" | a=bitwise_and '&' b=shift_expr { _PyAST_BinOp(a, BitAnd, b, EXTRA) }\n" +" | shift_expr\n" +"\n" +"shift_expr[expr_ty]:\n" +" | a=shift_expr '<<' b=sum { _PyAST_BinOp(a, LShift, b, EXTRA) }\n" +" | a=shift_expr '>>' b=sum { _PyAST_BinOp(a, RShift, b, EXTRA) }\n" +" | invalid_arithmetic\n" +" | sum\n" +"\n" +"# Arithmetic operators\n" +"# --------------------\n" +"\n" +"sum[expr_ty]:\n" +" | a=sum '+' b=term { _PyAST_BinOp(a, Add, b, EXTRA) }\n" +" | a=sum '-' b=term { _PyAST_BinOp(a, Sub, b, EXTRA) }\n" +" | term\n" +"\n" +"term[expr_ty]:\n" +" | a=term '*' b=factor { _PyAST_BinOp(a, Mult, b, EXTRA) }\n" +" | a=term '/' b=factor { _PyAST_BinOp(a, Div, b, EXTRA) }\n" +" | a=term '//' b=factor { _PyAST_BinOp(a, FloorDiv, b, EXTRA) }\n" +" | a=term '%' b=factor { _PyAST_BinOp(a, Mod, b, EXTRA) }\n" +" | a=term '@' b=factor { CHECK_VERSION(expr_ty, 5, \"The '@' operator " +"is\", _PyAST_BinOp(a, MatMult, b, EXTRA)) }\n" +" | invalid_factor\n" +" | factor\n" +"\n" +"factor[expr_ty] (memo):\n" +" | '+' a=factor { _PyAST_UnaryOp(UAdd, a, EXTRA) }\n" +" | '-' a=factor { _PyAST_UnaryOp(USub, a, EXTRA) }\n" +" | '~' a=factor { _PyAST_UnaryOp(Invert, a, EXTRA) }\n" +" | power\n" +"\n" +"power[expr_ty]:\n" +" | a=await_primary '**' b=factor { _PyAST_BinOp(a, Pow, b, EXTRA) }\n" +" | await_primary\n" +"\n" +"# Primary elements\n" +"# ----------------\n" +"\n" +"# Primary elements are things like \"obj.something.something\", " +"\"obj[something]\", \"obj(something)\", \"obj\" ...\n" +"\n" +"await_primary[expr_ty] (memo):\n" +" | 'await' a=primary { CHECK_VERSION(expr_ty, 5, \"Await expressions " +"are\", _PyAST_Await(a, EXTRA)) }\n" +" | primary\n" +"\n" +"primary[expr_ty]:\n" +" | a=primary '.' b=NAME { _PyAST_Attribute(a, b->v.Name.id, Load, " +"EXTRA) }\n" +" | a=primary b=genexp { _PyAST_Call(a, CHECK(asdl_expr_seq*, " +"(asdl_expr_seq*)_PyPegen_singleton_seq(p, b)), NULL, EXTRA) }\n" +" | a=primary '(' b=[arguments] ')' {\n" +" _PyAST_Call(a,\n" +" (b) ? ((expr_ty) b)->v.Call.args : NULL,\n" +" (b) ? ((expr_ty) b)->v.Call.keywords : NULL,\n" +" EXTRA) }\n" +" | a=primary '[' b=slices ']' { _PyAST_Subscript(a, b, Load, EXTRA) }\n" +" | atom\n" +"\n" +"slices[expr_ty]:\n" +" | a=slice !',' { a }\n" +" | a[asdl_expr_seq*]=','.(slice | starred_expression)+ [','] " +"{ _PyAST_Tuple(a, Load, EXTRA) }\n" +"\n" +"slice[expr_ty]:\n" +" | a=[expression] ':' b=[expression] c=[':' d=[expression] { d }] " +"{ _PyAST_Slice(a, b, c, EXTRA) }\n" +" | a=named_expression { a }\n" +"\n" +"atom[expr_ty]:\n" +" | NAME\n" +" | 'True' { _PyAST_Constant(Py_True, NULL, EXTRA) }\n" +" | 'False' { _PyAST_Constant(Py_False, NULL, EXTRA) }\n" +" | 'None' { _PyAST_Constant(Py_None, NULL, EXTRA) }\n" +" | &(STRING|FSTRING_START) strings\n" +" | NUMBER\n" +" | &'(' (tuple | group | genexp)\n" +" | &'[' (list | listcomp)\n" +" | &'{' (dict | set | dictcomp | setcomp)\n" +" | '...' { _PyAST_Constant(Py_Ellipsis, NULL, EXTRA) }\n" +"\n" +"group[expr_ty]:\n" +" | '(' a=(yield_expr | named_expression) ')' { a }\n" +" | invalid_group\n" +"\n" +"# Lambda functions\n" +"# ----------------\n" +"\n" +"lambdef[expr_ty]:\n" +" | 'lambda' a=[lambda_params] ':' b=expression {\n" +" _PyAST_Lambda((a) ? a : CHECK(arguments_ty, " +"_PyPegen_empty_arguments(p)), b, EXTRA) }\n" +"\n" +"lambda_params[arguments_ty]:\n" +" | invalid_lambda_parameters\n" +" | lambda_parameters\n" +"\n" +"# lambda_parameters etc. duplicates parameters but without annotations\n" +"# or type comments, and if there's no comma after a parameter, we expect\n" +"# a colon, not a close parenthesis. (For more, see parameters above.)\n" +"#\n" +"lambda_parameters[arguments_ty]:\n" +" | a=lambda_slash_no_default b[asdl_arg_seq*]=lambda_param_no_default* " +"c=lambda_param_with_default* d=[lambda_star_etc] {\n" +" CHECK_VERSION(arguments_ty, 8, \"Positional-only parameters are\", " +"_PyPegen_make_arguments(p, a, NULL, b, c, d)) }\n" +" | a=lambda_slash_with_default b=lambda_param_with_default* " +"c=[lambda_star_etc] {\n" +" CHECK_VERSION(arguments_ty, 8, \"Positional-only parameters are\", " +"_PyPegen_make_arguments(p, NULL, a, NULL, b, c)) }\n" +" | a[asdl_arg_seq*]=lambda_param_no_default+ b=lambda_param_with_default* " +"c=[lambda_star_etc] {\n" +" _PyPegen_make_arguments(p, NULL, NULL, a, b, c) }\n" +" | a=lambda_param_with_default+ b=[lambda_star_etc] " +"{ _PyPegen_make_arguments(p, NULL, NULL, NULL, a, b)}\n" +" | a=lambda_star_etc { _PyPegen_make_arguments(p, NULL, NULL, NULL, NULL, " +"a) }\n" +"\n" +"lambda_slash_no_default[asdl_arg_seq*]:\n" +" | a[asdl_arg_seq*]=lambda_param_no_default+ '/' ',' { a }\n" +" | a[asdl_arg_seq*]=lambda_param_no_default+ '/' &':' { a }\n" +"\n" +"lambda_slash_with_default[SlashWithDefault*]:\n" +" | a=lambda_param_no_default* b=lambda_param_with_default+ '/' ',' " +"{ _PyPegen_slash_with_default(p, (asdl_arg_seq *)a, b) }\n" +" | a=lambda_param_no_default* b=lambda_param_with_default+ '/' &':' " +"{ _PyPegen_slash_with_default(p, (asdl_arg_seq *)a, b) }\n" +"\n" +"lambda_star_etc[StarEtc*]:\n" +" | invalid_lambda_star_etc\n" +" | '*' a=lambda_param_no_default b=lambda_param_maybe_default* " +"c=[lambda_kwds] {\n" +" _PyPegen_star_etc(p, a, b, c) }\n" +" | '*' ',' b=lambda_param_maybe_default+ c=[lambda_kwds] {\n" +" _PyPegen_star_etc(p, NULL, b, c) }\n" +" | a=lambda_kwds { _PyPegen_star_etc(p, NULL, NULL, a) }\n" +"\n" +"lambda_kwds[arg_ty]:\n" +" | invalid_lambda_kwds\n" +" | '**' a=lambda_param_no_default { a }\n" +"\n" +"lambda_param_no_default[arg_ty]:\n" +" | a=lambda_param ',' { a }\n" +" | a=lambda_param &':' { a }\n" +"lambda_param_with_default[NameDefaultPair*]:\n" +" | a=lambda_param c=default ',' { _PyPegen_name_default_pair(p, a, c, " +"NULL) }\n" +" | a=lambda_param c=default &':' { _PyPegen_name_default_pair(p, a, c, " +"NULL) }\n" +"lambda_param_maybe_default[NameDefaultPair*]:\n" +" | a=lambda_param c=default? ',' { _PyPegen_name_default_pair(p, a, c, " +"NULL) }\n" +" | a=lambda_param c=default? &':' { _PyPegen_name_default_pair(p, a, c, " +"NULL) }\n" +"lambda_param[arg_ty]: a=NAME { _PyAST_arg(a->v.Name.id, NULL, NULL, EXTRA) }\n" +"\n" +"# LITERALS\n" +"# ========\n" +"\n" +"fstring_middle[expr_ty]:\n" +" | fstring_replacement_field\n" +" | t=FSTRING_MIDDLE { _PyPegen_constant_from_token(p, t) }\n" +"fstring_replacement_field[expr_ty]:\n" +" | '{' a=annotated_rhs debug_expr='='? conversion=[fstring_conversion] " +"format=[fstring_full_format_spec] rbrace='}' {\n" +" _PyPegen_formatted_value(p, a, debug_expr, conversion, format, " +"rbrace, EXTRA) }\n" +" | invalid_replacement_field\n" +"fstring_conversion[ResultTokenWithMetadata*]:\n" +" | conv_token=\"!\" conv=NAME { _PyPegen_check_fstring_conversion(p, " +"conv_token, conv) }\n" +"fstring_full_format_spec[ResultTokenWithMetadata*]:\n" +" | colon=':' spec=fstring_format_spec* " +"{ _PyPegen_setup_full_format_spec(p, colon, (asdl_expr_seq *) spec, EXTRA) }\n" +"fstring_format_spec[expr_ty]:\n" +" | t=FSTRING_MIDDLE { _PyPegen_decoded_constant_from_token(p, t) }\n" +" | fstring_replacement_field\n" +"fstring[expr_ty]:\n" +" | a=FSTRING_START b=fstring_middle* c=FSTRING_END " +"{ _PyPegen_joined_str(p, a, (asdl_expr_seq*)b, c) }\n" +"\n" +"string[expr_ty]: s[Token*]=STRING { _PyPegen_constant_from_string(p, s) }\n" +"strings[expr_ty] (memo): a[asdl_expr_seq*]=(fstring|string)+ " +"{ _PyPegen_concatenate_strings(p, a, EXTRA) }\n" +"\n" +"list[expr_ty]:\n" +" | '[' a=[star_named_expressions] ']' { _PyAST_List(a, Load, EXTRA) }\n" +"\n" +"tuple[expr_ty]:\n" +" | '(' a=[y=star_named_expression ',' z=[star_named_expressions] " +"{ _PyPegen_seq_insert_in_front(p, y, z) } ] ')' {\n" +" _PyAST_Tuple(a, Load, EXTRA) }\n" +"\n" +"set[expr_ty]: '{' a=star_named_expressions '}' { _PyAST_Set(a, EXTRA) }\n" +"\n" +"# Dicts\n" +"# -----\n" +"\n" +"dict[expr_ty]:\n" +" | '{' a=[double_starred_kvpairs] '}' {\n" +" _PyAST_Dict(\n" +" CHECK(asdl_expr_seq*, _PyPegen_get_keys(p, a)),\n" +" CHECK(asdl_expr_seq*, _PyPegen_get_values(p, a)),\n" +" EXTRA) }\n" +" | '{' invalid_double_starred_kvpairs '}'\n" +"\n" +"double_starred_kvpairs[asdl_seq*]: a=','.double_starred_kvpair+ [','] { a }\n" +"\n" +"double_starred_kvpair[KeyValuePair*]:\n" +" | '**' a=bitwise_or { _PyPegen_key_value_pair(p, NULL, a) }\n" +" | kvpair\n" +"\n" +"kvpair[KeyValuePair*]: a=expression ':' b=expression " +"{ _PyPegen_key_value_pair(p, a, b) }\n" +"\n" +"# Comprehensions & Generators\n" +"# ---------------------------\n" +"\n" +"for_if_clauses[asdl_comprehension_seq*]:\n" +" | a[asdl_comprehension_seq*]=for_if_clause+ { a }\n" +"\n" +"for_if_clause[comprehension_ty]:\n" +" | 'async' 'for' a=star_targets 'in' ~ b=disjunction " +"c[asdl_expr_seq*]=('if' z=disjunction { z })* {\n" +" CHECK_VERSION(comprehension_ty, 6, \"Async comprehensions are\", " +"_PyAST_comprehension(a, b, c, 1, p->arena)) }\n" +" | 'for' a=star_targets 'in' ~ b=disjunction c[asdl_expr_seq*]=('if' " +"z=disjunction { z })* {\n" +" _PyAST_comprehension(a, b, c, 0, p->arena) }\n" +" | 'async'? 'for' (bitwise_or (',' bitwise_or)* [',']) !'in' {\n" +" RAISE_SYNTAX_ERROR(\"'in' expected after for-loop variables\") }\n" +" | invalid_for_target\n" +"\n" +"listcomp[expr_ty]:\n" +" | '[' a=named_expression b=for_if_clauses ']' { _PyAST_ListComp(a, b, " +"EXTRA) }\n" +" | invalid_comprehension\n" +"\n" +"setcomp[expr_ty]:\n" +" | '{' a=named_expression b=for_if_clauses '}' { _PyAST_SetComp(a, b, " +"EXTRA) }\n" +" | invalid_comprehension\n" +"\n" +"genexp[expr_ty]:\n" +" | '(' a=( assignment_expression | expression !':=') b=for_if_clauses ')' " +"{ _PyAST_GeneratorExp(a, b, EXTRA) }\n" +" | invalid_comprehension\n" +"\n" +"dictcomp[expr_ty]:\n" +" | '{' a=kvpair b=for_if_clauses '}' { _PyAST_DictComp(a->key, a->value, " +"b, EXTRA) }\n" +" | invalid_dict_comprehension\n" +"\n" +"# FUNCTION CALL ARGUMENTS\n" +"# =======================\n" +"\n" +"arguments[expr_ty] (memo):\n" +" | a=args [','] &')' { a }\n" +" | invalid_arguments\n" +"\n" +"args[expr_ty]:\n" +" | a[asdl_expr_seq*]=','.(starred_expression | ( assignment_expression | " +"expression !':=') !'=')+ b=[',' k=kwargs {k}] {\n" +" _PyPegen_collect_call_seqs(p, a, b, EXTRA) }\n" +" | a=kwargs { _PyAST_Call(_PyPegen_dummy_name(p),\n" +" CHECK_NULL_ALLOWED(asdl_expr_seq*, " +"_PyPegen_seq_extract_starred_exprs(p, a)),\n" +" CHECK_NULL_ALLOWED(asdl_keyword_seq*, " +"_PyPegen_seq_delete_starred_exprs(p, a)),\n" +" EXTRA) }\n" +"\n" +"kwargs[asdl_seq*]:\n" +" | a=','.kwarg_or_starred+ ',' b=','.kwarg_or_double_starred+ " +"{ _PyPegen_join_sequences(p, a, b) }\n" +" | ','.kwarg_or_starred+\n" +" | ','.kwarg_or_double_starred+\n" +"\n" +"starred_expression[expr_ty]:\n" +" | invalid_starred_expression\n" +" | '*' a=expression { _PyAST_Starred(a, Load, EXTRA) }\n" +" | '*' { RAISE_SYNTAX_ERROR(\"Invalid star expression\") }\n" +"\n" +"kwarg_or_starred[KeywordOrStarred*]:\n" +" | invalid_kwarg\n" +" | a=NAME '=' b=expression {\n" +" _PyPegen_keyword_or_starred(p, CHECK(keyword_ty, _PyAST_keyword(a-" +">v.Name.id, b, EXTRA)), 1) }\n" +" | a=starred_expression { _PyPegen_keyword_or_starred(p, a, 0) }\n" +"\n" +"kwarg_or_double_starred[KeywordOrStarred*]:\n" +" | invalid_kwarg\n" +" | a=NAME '=' b=expression {\n" +" _PyPegen_keyword_or_starred(p, CHECK(keyword_ty, _PyAST_keyword(a-" +">v.Name.id, b, EXTRA)), 1) }\n" +" | '**' a=expression { _PyPegen_keyword_or_starred(p, CHECK(keyword_ty, " +"_PyAST_keyword(NULL, a, EXTRA)), 1) }\n" +"\n" +"# ASSIGNMENT TARGETS\n" +"# ==================\n" +"\n" +"# Generic targets\n" +"# ---------------\n" +"\n" +"# NOTE: star_targets may contain *bitwise_or, targets may not.\n" +"star_targets[expr_ty]:\n" +" | a=star_target !',' { a }\n" +" | a=star_target b=(',' c=star_target { c })* [','] {\n" +" _PyAST_Tuple(CHECK(asdl_expr_seq*, _PyPegen_seq_insert_in_front(p, a, " +"b)), Store, EXTRA) }\n" +"\n" +"star_targets_list_seq[asdl_expr_seq*]: a[asdl_expr_seq*]=','.star_target+ " +"[','] { a }\n" +"\n" +"star_targets_tuple_seq[asdl_expr_seq*]:\n" +" | a=star_target b=(',' c=star_target { c })+ [','] { (asdl_expr_seq*) " +"_PyPegen_seq_insert_in_front(p, a, b) }\n" +" | a=star_target ',' { (asdl_expr_seq*) _PyPegen_singleton_seq(p, a) }\n" +"\n" +"star_target[expr_ty] (memo):\n" +" | '*' a=(!'*' star_target) {\n" +" _PyAST_Starred(CHECK(expr_ty, _PyPegen_set_expr_context(p, a, " +"Store)), Store, EXTRA) }\n" +" | target_with_star_atom\n" +"\n" +"target_with_star_atom[expr_ty] (memo):\n" +" | a=t_primary '.' b=NAME !t_lookahead { _PyAST_Attribute(a, b->v.Name.id, " +"Store, EXTRA) }\n" +" | a=t_primary '[' b=slices ']' !t_lookahead { _PyAST_Subscript(a, b, " +"Store, EXTRA) }\n" +" | star_atom\n" +"\n" +"star_atom[expr_ty]:\n" +" | a=NAME { _PyPegen_set_expr_context(p, a, Store) }\n" +" | '(' a=target_with_star_atom ')' { _PyPegen_set_expr_context(p, a, " +"Store) }\n" +" | '(' a=[star_targets_tuple_seq] ')' { _PyAST_Tuple(a, Store, EXTRA) }\n" +" | '[' a=[star_targets_list_seq] ']' { _PyAST_List(a, Store, EXTRA) }\n" +"\n" +"single_target[expr_ty]:\n" +" | single_subscript_attribute_target\n" +" | a=NAME { _PyPegen_set_expr_context(p, a, Store) }\n" +" | '(' a=single_target ')' { a }\n" +"\n" +"single_subscript_attribute_target[expr_ty]:\n" +" | a=t_primary '.' b=NAME !t_lookahead { _PyAST_Attribute(a, b->v.Name.id, " +"Store, EXTRA) }\n" +" | a=t_primary '[' b=slices ']' !t_lookahead { _PyAST_Subscript(a, b, " +"Store, EXTRA) }\n" +"\n" +"t_primary[expr_ty]:\n" +" | a=t_primary '.' b=NAME &t_lookahead { _PyAST_Attribute(a, b->v.Name.id, " +"Load, EXTRA) }\n" +" | a=t_primary '[' b=slices ']' &t_lookahead { _PyAST_Subscript(a, b, " +"Load, EXTRA) }\n" +" | a=t_primary b=genexp &t_lookahead {\n" +" _PyAST_Call(a, CHECK(asdl_expr_seq*, " +"(asdl_expr_seq*)_PyPegen_singleton_seq(p, b)), NULL, EXTRA) }\n" +" | a=t_primary '(' b=[arguments] ')' &t_lookahead {\n" +" _PyAST_Call(a,\n" +" (b) ? ((expr_ty) b)->v.Call.args : NULL,\n" +" (b) ? ((expr_ty) b)->v.Call.keywords : NULL,\n" +" EXTRA) }\n" +" | a=atom &t_lookahead { a }\n" +"\n" +"t_lookahead: '(' | '[' | '.'\n" +"\n" +"# Targets for del statements\n" +"# --------------------------\n" +"\n" +"del_targets[asdl_expr_seq*]: a[asdl_expr_seq*]=','.del_target+ [','] { a }\n" +"\n" +"del_target[expr_ty] (memo):\n" +" | a=t_primary '.' b=NAME !t_lookahead { _PyAST_Attribute(a, b->v.Name.id, " +"Del, EXTRA) }\n" +" | a=t_primary '[' b=slices ']' !t_lookahead { _PyAST_Subscript(a, b, Del, " +"EXTRA) }\n" +" | del_t_atom\n" +"\n" +"del_t_atom[expr_ty]:\n" +" | a=NAME { _PyPegen_set_expr_context(p, a, Del) }\n" +" | '(' a=del_target ')' { _PyPegen_set_expr_context(p, a, Del) }\n" +" | '(' a=[del_targets] ')' { _PyAST_Tuple(a, Del, EXTRA) }\n" +" | '[' a=[del_targets] ']' { _PyAST_List(a, Del, EXTRA) }\n" +"\n" +"# TYPING ELEMENTS\n" +"# ---------------\n" +"\n" +"# type_expressions allow */** but ignore them\n" +"type_expressions[asdl_expr_seq*]:\n" +" | a=','.expression+ ',' '*' b=expression ',' '**' c=expression {\n" +" (asdl_expr_seq*)_PyPegen_seq_append_to_end(\n" +" p,\n" +" CHECK(asdl_seq*, _PyPegen_seq_append_to_end(p, a, b)),\n" +" c) }\n" +" | a=','.expression+ ',' '*' b=expression " +"{ (asdl_expr_seq*)_PyPegen_seq_append_to_end(p, a, b) }\n" +" | a=','.expression+ ',' '**' b=expression " +"{ (asdl_expr_seq*)_PyPegen_seq_append_to_end(p, a, b) }\n" +" | '*' a=expression ',' '**' b=expression {\n" +" (asdl_expr_seq*)_PyPegen_seq_append_to_end(\n" +" p,\n" +" CHECK(asdl_seq*, _PyPegen_singleton_seq(p, a)),\n" +" b) }\n" +" | '*' a=expression { (asdl_expr_seq*)_PyPegen_singleton_seq(p, a) }\n" +" | '**' a=expression { (asdl_expr_seq*)_PyPegen_singleton_seq(p, a) }\n" +" | a[asdl_expr_seq*]=','.expression+ {a}\n" +"\n" +"func_type_comment[Token*]:\n" +" | NEWLINE t=TYPE_COMMENT &(NEWLINE INDENT) { t } # Must be followed by " +"indented block\n" +" | invalid_double_type_comments\n" +" | TYPE_COMMENT\n" +"\n" +"# ========================= END OF THE GRAMMAR ===========================\n" +"\n" +"\n" +"\n" +"# ========================= START OF INVALID RULES =======================\n" +"\n" +"# From here on, there are rules for invalid syntax with specialised error " +"messages\n" +"invalid_arguments:\n" +" | ((','.(starred_expression | ( assignment_expression | " +"expression !':=') !'=')+ ',' kwargs) | kwargs) a=',' ','." +"(starred_expression !'=')+ {\n" +" RAISE_SYNTAX_ERROR_STARTING_FROM(a, \"iterable argument unpacking " +"follows keyword argument unpacking\") }\n" +" | a=expression b=for_if_clauses ',' [args | expression for_if_clauses] {\n" +" RAISE_SYNTAX_ERROR_KNOWN_RANGE(a, " +"_PyPegen_get_last_comprehension_item(PyPegen_last_item(b, comprehension_ty)), " +"\"Generator expression must be parenthesized\") }\n" +" | a=NAME b='=' expression for_if_clauses {\n" +" RAISE_SYNTAX_ERROR_KNOWN_RANGE(a, b, \"invalid syntax. Maybe you " +"meant '==' or ':=' instead of '='?\")}\n" +" | (args ',')? a=NAME b='=' &(',' | ')') {\n" +" RAISE_SYNTAX_ERROR_KNOWN_RANGE(a, b, \"expected argument value " +"expression\")}\n" +" | a=args b=for_if_clauses { _PyPegen_nonparen_genexp_in_call(p, a, b) }\n" +" | args ',' a=expression b=for_if_clauses {\n" +" RAISE_SYNTAX_ERROR_KNOWN_RANGE(a, " +"_PyPegen_get_last_comprehension_item(PyPegen_last_item(b, comprehension_ty)), " +"\"Generator expression must be parenthesized\") }\n" +" | a=args ',' args { _PyPegen_arguments_parsing_error(p, a) }\n" +"invalid_kwarg:\n" +" | a[Token*]=('True'|'False'|'None') b='=' {\n" +" RAISE_SYNTAX_ERROR_KNOWN_RANGE(a, b, \"cannot assign to %s\", " +"PyBytes_AS_STRING(a->bytes)) }\n" +" | a=NAME b='=' expression for_if_clauses {\n" +" RAISE_SYNTAX_ERROR_KNOWN_RANGE(a, b, \"invalid syntax. Maybe you " +"meant '==' or ':=' instead of '='?\")}\n" +" | !(NAME '=') a=expression b='=' {\n" +" RAISE_SYNTAX_ERROR_KNOWN_RANGE(\n" +" a, b, \"expression cannot contain assignment, perhaps you meant \\" +"\"==\\\"?\") }\n" +" | a='**' expression '=' b=expression {\n" +" RAISE_SYNTAX_ERROR_KNOWN_RANGE(a, b, \"cannot assign to keyword " +"argument unpacking\") }\n" +"\n" +"# IMPORTANT: Note that the \"_without_invalid\" suffix causes the rule to not " +"call invalid rules under it\n" +"expression_without_invalid[expr_ty]:\n" +" | a=disjunction 'if' b=disjunction 'else' c=expression { _PyAST_IfExp(b, " +"a, c, EXTRA) }\n" +" | disjunction\n" +" | lambdef\n" +"invalid_legacy_expression:\n" +" | a=NAME !'(' b=star_expressions {\n" +" _PyPegen_check_legacy_stmt(p, a) ? RAISE_SYNTAX_ERROR_KNOWN_RANGE(a, " +"b,\n" +" \"Missing parentheses in call to '%U'. Did you mean %U(...)?\", a-" +">v.Name.id, a->v.Name.id) : NULL}\n" +"\n" +"invalid_expression:\n" +" # !(NAME STRING) is not matched so we don't show this error with some " +"invalid string prefixes like: kf\"dsfsdf\"\n" +" # Soft keywords need to also be ignored because they can be parsed as " +"NAME NAME\n" +" | !(NAME STRING | SOFT_KEYWORD) a=disjunction b=expression_without_invalid " +"{\n" +" _PyPegen_check_legacy_stmt(p, a) ? NULL : p->tokens[p->mark-1]->level " +"== 0 ? NULL :\n" +" RAISE_SYNTAX_ERROR_KNOWN_RANGE(a, b, \"invalid syntax. Perhaps you " +"forgot a comma?\") }\n" +" | a=disjunction 'if' b=disjunction !('else'|':') " +"{ RAISE_SYNTAX_ERROR_KNOWN_RANGE(a, b, \"expected 'else' after 'if' " +"expression\") }\n" +" | a='lambda' [lambda_params] b=':' &FSTRING_MIDDLE {\n" +" RAISE_SYNTAX_ERROR_KNOWN_RANGE(a, b, \"f-string: lambda expressions " +"are not allowed without parentheses\") }\n" +"\n" +"invalid_named_expression(memo):\n" +" | a=expression ':=' expression {\n" +" RAISE_SYNTAX_ERROR_KNOWN_LOCATION(\n" +" a, \"cannot use assignment expressions with %s\", " +"_PyPegen_get_expr_name(a)) }\n" +" | a=NAME '=' b=bitwise_or !('='|':=') {\n" +" RAISE_SYNTAX_ERROR_KNOWN_RANGE(a, b, \"invalid syntax. Maybe you " +"meant '==' or ':=' instead of '='?\") }\n" +" | !(list|tuple|genexp|'True'|'None'|'False') a=bitwise_or b='=' " +"bitwise_or !('='|':=') {\n" +" RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, \"cannot assign to %s here. " +"Maybe you meant '==' instead of '='?\",\n" +" _PyPegen_get_expr_name(a)) }\n" +"\n" +"invalid_assignment:\n" +" | a=invalid_ann_assign_target ':' expression {\n" +" RAISE_SYNTAX_ERROR_KNOWN_LOCATION(\n" +" a,\n" +" \"only single target (not %s) can be annotated\",\n" +" _PyPegen_get_expr_name(a)\n" +" )}\n" +" | a=star_named_expression ',' star_named_expressions* ':' expression {\n" +" RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, \"only single target (not tuple) " +"can be annotated\") }\n" +" | a=expression ':' expression {\n" +" RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, \"illegal target for " +"annotation\") }\n" +" | (star_targets '=')* a=star_expressions '=' {\n" +" RAISE_SYNTAX_ERROR_INVALID_TARGET(STAR_TARGETS, a) }\n" +" | (star_targets '=')* a=yield_expr '=' " +"{ RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, \"assignment to yield expression not " +"possible\") }\n" +" | a=star_expressions augassign annotated_rhs {\n" +" RAISE_SYNTAX_ERROR_KNOWN_LOCATION(\n" +" a,\n" +" \"'%s' is an illegal expression for augmented assignment\",\n" +" _PyPegen_get_expr_name(a)\n" +" )}\n" +"invalid_ann_assign_target[expr_ty]:\n" +" | list\n" +" | tuple\n" +" | '(' a=invalid_ann_assign_target ')' { a }\n" +"invalid_del_stmt:\n" +" | 'del' a=star_expressions {\n" +" RAISE_SYNTAX_ERROR_INVALID_TARGET(DEL_TARGETS, a) }\n" +"invalid_block:\n" +" | NEWLINE !INDENT { RAISE_INDENTATION_ERROR(\"expected an indented " +"block\") }\n" +"invalid_comprehension:\n" +" | ('[' | '(' | '{') a=starred_expression for_if_clauses {\n" +" RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, \"iterable unpacking cannot be " +"used in comprehension\") }\n" +" | ('[' | '{') a=star_named_expression ',' b=star_named_expressions " +"for_if_clauses {\n" +" RAISE_SYNTAX_ERROR_KNOWN_RANGE(a, PyPegen_last_item(b, expr_ty),\n" +" \"did you forget parentheses around the comprehension target?\") }\n" +" | ('[' | '{') a=star_named_expression b=',' for_if_clauses {\n" +" RAISE_SYNTAX_ERROR_KNOWN_RANGE(a, b, \"did you forget parentheses " +"around the comprehension target?\") }\n" +"invalid_dict_comprehension:\n" +" | '{' a='**' bitwise_or for_if_clauses '}' {\n" +" RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, \"dict unpacking cannot be used " +"in dict comprehension\") }\n" +"invalid_parameters:\n" +" | a=\"/\" ',' {\n" +" RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, \"at least one argument must " +"precede /\") }\n" +" | (slash_no_default | slash_with_default) param_maybe_default* a='/' {\n" +" RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, \"/ may appear only once\") }\n" +" | slash_no_default? param_no_default* invalid_parameters_helper " +"a=param_no_default {\n" +" RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, \"parameter without a default " +"follows parameter with a default\") }\n" +" | param_no_default* a='(' param_no_default+ ','? b=')' {\n" +" RAISE_SYNTAX_ERROR_KNOWN_RANGE(a, b, \"Function parameters cannot be " +"parenthesized\") }\n" +" | (slash_no_default | slash_with_default)? param_maybe_default* '*' (',' " +"| param_no_default) param_maybe_default* a='/' {\n" +" RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, \"/ must be ahead of *\") }\n" +" | param_maybe_default+ '/' a='*' {\n" +" RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, \"expected comma between / and " +"*\") }\n" +"invalid_default:\n" +" | a='=' &(')'|',') { RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, \"expected " +"default value expression\") }\n" +"invalid_star_etc:\n" +" | a='*' (')' | ',' (')' | '**')) { RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, " +"\"named arguments must follow bare *\") }\n" +" | '*' ',' TYPE_COMMENT { RAISE_SYNTAX_ERROR(\"bare * has associated type " +"comment\") }\n" +" | '*' param a='=' { RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, \"var-positional " +"argument cannot have default value\") }\n" +" | '*' (param_no_default | ',') param_maybe_default* a='*' " +"(param_no_default | ',') {\n" +" RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, \"* argument may appear only " +"once\") }\n" +"invalid_kwds:\n" +" | '**' param a='=' { RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, \"var-keyword " +"argument cannot have default value\") }\n" +" | '**' param ',' a=param { RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, " +"\"arguments cannot follow var-keyword argument\") }\n" +" | '**' param ',' a[Token*]=('*'|'**'|'/') " +"{ RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, \"arguments cannot follow var-keyword " +"argument\") }\n" +"invalid_parameters_helper: # This is only there to avoid type errors\n" +" | a=slash_with_default { _PyPegen_singleton_seq(p, a) }\n" +" | param_with_default+\n" +"invalid_lambda_parameters:\n" +" | a=\"/\" ',' {\n" +" RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, \"at least one argument must " +"precede /\") }\n" +" | (lambda_slash_no_default | lambda_slash_with_default) " +"lambda_param_maybe_default* a='/' {\n" +" RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, \"/ may appear only once\") }\n" +" | lambda_slash_no_default? lambda_param_no_default* " +"invalid_lambda_parameters_helper a=lambda_param_no_default {\n" +" RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, \"parameter without a default " +"follows parameter with a default\") }\n" +" | lambda_param_no_default* a='(' ','.lambda_param+ ','? b=')' {\n" +" RAISE_SYNTAX_ERROR_KNOWN_RANGE(a, b, \"Lambda expression parameters " +"cannot be parenthesized\") }\n" +" | (lambda_slash_no_default | lambda_slash_with_default)? " +"lambda_param_maybe_default* '*' (',' | lambda_param_no_default) " +"lambda_param_maybe_default* a='/' {\n" +" RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, \"/ must be ahead of *\") }\n" +" | lambda_param_maybe_default+ '/' a='*' {\n" +" RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, \"expected comma between / and " +"*\") }\n" +"invalid_lambda_parameters_helper:\n" +" | a=lambda_slash_with_default { _PyPegen_singleton_seq(p, a) }\n" +" | lambda_param_with_default+\n" +"invalid_lambda_star_etc:\n" +" | '*' (':' | ',' (':' | '**')) { RAISE_SYNTAX_ERROR(\"named arguments " +"must follow bare *\") }\n" +" | '*' lambda_param a='=' { RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, \"var-" +"positional argument cannot have default value\") }\n" +" | '*' (lambda_param_no_default | ',') lambda_param_maybe_default* a='*' " +"(lambda_param_no_default | ',') {\n" +" RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, \"* argument may appear only " +"once\") }\n" +"invalid_lambda_kwds:\n" +" | '**' lambda_param a='=' { RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, \"var-" +"keyword argument cannot have default value\") }\n" +" | '**' lambda_param ',' a=lambda_param " +"{ RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, \"arguments cannot follow var-keyword " +"argument\") }\n" +" | '**' lambda_param ',' a[Token*]=('*'|'**'|'/') " +"{ RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, \"arguments cannot follow var-keyword " +"argument\") }\n" +"invalid_double_type_comments:\n" +" | TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT {\n" +" RAISE_SYNTAX_ERROR(\"Cannot have two type comments on def\") }\n" +"invalid_with_item:\n" +" | expression 'as' a=expression &(',' | ')' | ':') {\n" +" RAISE_SYNTAX_ERROR_INVALID_TARGET(STAR_TARGETS, a) }\n" +"\n" +"invalid_for_target:\n" +" | 'async'? 'for' a=star_expressions {\n" +" RAISE_SYNTAX_ERROR_INVALID_TARGET(FOR_TARGETS, a) }\n" +"\n" +"invalid_group:\n" +" | '(' a=starred_expression ')' {\n" +" RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, \"cannot use starred expression " +"here\") }\n" +" | '(' a='**' expression ')' {\n" +" RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, \"cannot use double starred " +"expression here\") }\n" +"invalid_import:\n" +" | a='import' ','.dotted_name+ 'from' dotted_name {\n" +" RAISE_SYNTAX_ERROR_STARTING_FROM(a, \"Did you mean to use 'from ... " +"import ...' instead?\") }\n" +" | 'import' token=NEWLINE { \n" +" RAISE_SYNTAX_ERROR_STARTING_FROM(token, \"Expected one or more names " +"after 'import'\") }\n" +"\n" +"invalid_import_from_targets:\n" +" | import_from_as_names ',' NEWLINE {\n" +" RAISE_SYNTAX_ERROR(\"trailing comma not allowed without surrounding " +"parentheses\") }\n" +" | token=NEWLINE { \n" +" RAISE_SYNTAX_ERROR_STARTING_FROM(token, \"Expected one or more names " +"after 'import'\") }\n" +"\n" +"invalid_with_stmt:\n" +" | ['async'] 'with' ','.(expression ['as' star_target])+ NEWLINE " +"{ RAISE_SYNTAX_ERROR(\"expected ':'\") }\n" +" | ['async'] 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' " +"NEWLINE { RAISE_SYNTAX_ERROR(\"expected ':'\") }\n" +"invalid_with_stmt_indent:\n" +" | ['async'] a='with' ','.(expression ['as' star_target])+ ':' NEWLINE !" +"INDENT {\n" +" RAISE_INDENTATION_ERROR(\"expected an indented block after 'with' " +"statement on line %d\", a->lineno) }\n" +" | ['async'] a='with' '(' ','.(expressions ['as' star_target])+ ','? ')' " +"':' NEWLINE !INDENT {\n" +" RAISE_INDENTATION_ERROR(\"expected an indented block after 'with' " +"statement on line %d\", a->lineno) }\n" +"\n" +"invalid_try_stmt:\n" +" | a='try' ':' NEWLINE !INDENT {\n" +" RAISE_INDENTATION_ERROR(\"expected an indented block after 'try' " +"statement on line %d\", a->lineno) }\n" +" | 'try' ':' block !('except' | 'finally') { RAISE_SYNTAX_ERROR(\"expected " +"'except' or 'finally' block\") }\n" +" | 'try' ':' block* except_block+ a='except' b='*' expression ['as' NAME] " +"':' {\n" +" RAISE_SYNTAX_ERROR_KNOWN_RANGE(a, b, \"cannot have both 'except' and " +"'except*' on the same 'try'\") }\n" +" | 'try' ':' block* except_star_block+ a='except' [expression ['as' NAME]] " +"':' {\n" +" RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, \"cannot have both 'except' and " +"'except*' on the same 'try'\") }\n" +"invalid_except_stmt:\n" +" | 'except' '*'? a=expression ',' expressions ['as' NAME ] ':' {\n" +" RAISE_SYNTAX_ERROR_STARTING_FROM(a, \"multiple exception types must " +"be parenthesized\") }\n" +" | a='except' '*'? expression ['as' NAME ] NEWLINE " +"{ RAISE_SYNTAX_ERROR(\"expected ':'\") }\n" +" | a='except' NEWLINE { RAISE_SYNTAX_ERROR(\"expected ':'\") }\n" +" | a='except' '*' (NEWLINE | ':') { RAISE_SYNTAX_ERROR(\"expected one or " +"more exception types\") }\n" +"invalid_finally_stmt:\n" +" | a='finally' ':' NEWLINE !INDENT {\n" +" RAISE_INDENTATION_ERROR(\"expected an indented block after 'finally' " +"statement on line %d\", a->lineno) }\n" +"invalid_except_stmt_indent:\n" +" | a='except' expression ['as' NAME ] ':' NEWLINE !INDENT {\n" +" RAISE_INDENTATION_ERROR(\"expected an indented block after 'except' " +"statement on line %d\", a->lineno) }\n" +" | a='except' ':' NEWLINE !INDENT { RAISE_INDENTATION_ERROR(\"expected an " +"indented block after 'except' statement on line %d\", a->lineno) }\n" +"invalid_except_star_stmt_indent:\n" +" | a='except' '*' expression ['as' NAME ] ':' NEWLINE !INDENT {\n" +" RAISE_INDENTATION_ERROR(\"expected an indented block after 'except*' " +"statement on line %d\", a->lineno) }\n" +"invalid_match_stmt:\n" +" | \"match\" subject_expr NEWLINE { CHECK_VERSION(void*, 10, \"Pattern " +"matching is\", RAISE_SYNTAX_ERROR(\"expected ':'\") ) }\n" +" | a=\"match\" subject=subject_expr ':' NEWLINE !INDENT {\n" +" RAISE_INDENTATION_ERROR(\"expected an indented block after 'match' " +"statement on line %d\", a->lineno) }\n" +"invalid_case_block:\n" +" | \"case\" patterns guard? NEWLINE { RAISE_SYNTAX_ERROR(\"expected " +"':'\") }\n" +" | a=\"case\" patterns guard? ':' NEWLINE !INDENT {\n" +" RAISE_INDENTATION_ERROR(\"expected an indented block after 'case' " +"statement on line %d\", a->lineno) }\n" +"invalid_as_pattern:\n" +" | or_pattern 'as' a=\"_\" { RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, \"cannot " +"use '_' as a target\") }\n" +" | or_pattern 'as' !NAME a=expression " +"{ RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, \"invalid pattern target\") }\n" +"invalid_class_pattern:\n" +" | name_or_attr '(' a=invalid_class_argument_pattern " +"{ RAISE_SYNTAX_ERROR_KNOWN_RANGE(\n" +" PyPegen_first_item(a, pattern_ty),\n" +" PyPegen_last_item(a, pattern_ty),\n" +" \"positional patterns follow keyword patterns\") }\n" +"invalid_class_argument_pattern[asdl_pattern_seq*]:\n" +" | [positional_patterns ','] keyword_patterns ',' a=positional_patterns " +"{ a }\n" +"invalid_if_stmt:\n" +" | 'if' named_expression NEWLINE { RAISE_SYNTAX_ERROR(\"expected ':'\") }\n" +" | a='if' a=named_expression ':' NEWLINE !INDENT {\n" +" RAISE_INDENTATION_ERROR(\"expected an indented block after 'if' " +"statement on line %d\", a->lineno) }\n" +"invalid_elif_stmt:\n" +" | 'elif' named_expression NEWLINE { RAISE_SYNTAX_ERROR(\"expected " +"':'\") }\n" +" | a='elif' named_expression ':' NEWLINE !INDENT {\n" +" RAISE_INDENTATION_ERROR(\"expected an indented block after 'elif' " +"statement on line %d\", a->lineno) }\n" +"invalid_else_stmt:\n" +" | a='else' ':' NEWLINE !INDENT {\n" +" RAISE_INDENTATION_ERROR(\"expected an indented block after 'else' " +"statement on line %d\", a->lineno) }\n" +"invalid_while_stmt:\n" +" | 'while' named_expression NEWLINE { RAISE_SYNTAX_ERROR(\"expected " +"':'\") }\n" +" | a='while' named_expression ':' NEWLINE !INDENT {\n" +" RAISE_INDENTATION_ERROR(\"expected an indented block after 'while' " +"statement on line %d\", a->lineno) }\n" +"invalid_for_stmt:\n" +" | ['async'] 'for' star_targets 'in' star_expressions NEWLINE " +"{ RAISE_SYNTAX_ERROR(\"expected ':'\") }\n" +" | ['async'] a='for' star_targets 'in' star_expressions ':' NEWLINE !" +"INDENT {\n" +" RAISE_INDENTATION_ERROR(\"expected an indented block after 'for' " +"statement on line %d\", a->lineno) }\n" +"invalid_def_raw:\n" +" | ['async'] a='def' NAME [type_params] '(' [params] ')' ['->' expression] " +"':' NEWLINE !INDENT {\n" +" RAISE_INDENTATION_ERROR(\"expected an indented block after function " +"definition on line %d\", a->lineno) }\n" +" | ['async'] 'def' NAME [type_params] &&'(' [params] ')' ['->' expression] " +"&&':' [func_type_comment] block\n" +"invalid_class_def_raw:\n" +" | 'class' NAME [type_params] ['(' [arguments] ')'] NEWLINE " +"{ RAISE_SYNTAX_ERROR(\"expected ':'\") }\n" +" | a='class' NAME [type_params] ['(' [arguments] ')'] ':' NEWLINE !INDENT " +"{\n" +" RAISE_INDENTATION_ERROR(\"expected an indented block after class " +"definition on line %d\", a->lineno) }\n" +"\n" +"invalid_double_starred_kvpairs:\n" +" | ','.double_starred_kvpair+ ',' invalid_kvpair\n" +" | expression ':' a='*' bitwise_or { RAISE_SYNTAX_ERROR_STARTING_FROM(a, " +"\"cannot use a starred expression in a dictionary value\") }\n" +" | expression a=':' &('}'|',') { RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, " +"\"expression expected after dictionary key and ':'\") }\n" +"invalid_kvpair:\n" +" | a=expression !(':') {\n" +" RAISE_ERROR_KNOWN_LOCATION(p, PyExc_SyntaxError, a->lineno, a-" +">end_col_offset - 1, a->end_lineno, -1, \"':' expected after dictionary " +"key\") }\n" +" | expression ':' a='*' bitwise_or { RAISE_SYNTAX_ERROR_STARTING_FROM(a, " +"\"cannot use a starred expression in a dictionary value\") }\n" +" | expression a=':' &('}'|',') {RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, " +"\"expression expected after dictionary key and ':'\") }\n" +"invalid_starred_expression:\n" +" | a='*' expression '=' b=expression { RAISE_SYNTAX_ERROR_KNOWN_RANGE(a, " +"b, \"cannot assign to iterable argument unpacking\") }\n" +"\n" +"invalid_replacement_field:\n" +" | '{' a='=' { RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, \"f-string: valid " +"expression required before '='\") }\n" +" | '{' a='!' { RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, \"f-string: valid " +"expression required before '!'\") }\n" +" | '{' a=':' { RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, \"f-string: valid " +"expression required before ':'\") }\n" +" | '{' a='}' { RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, \"f-string: valid " +"expression required before '}'\") }\n" +" | '{' !annotated_rhs { RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN(\"f-string: " +"expecting a valid expression after '{'\")}\n" +" | '{' annotated_rhs !('=' | '!' | ':' | '}') {\n" +" PyErr_Occurred() ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN(\"f-" +"string: expecting '=', or '!', or ':', or '}'\") }\n" +" | '{' annotated_rhs '=' !('!' | ':' | '}') {\n" +" PyErr_Occurred() ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN(\"f-" +"string: expecting '!', or ':', or '}'\") }\n" +" | '{' annotated_rhs '='? invalid_conversion_character\n" +" | '{' annotated_rhs '='? ['!' NAME] !(':' | '}') {\n" +" PyErr_Occurred() ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN(\"f-" +"string: expecting ':' or '}'\") }\n" +" | '{' annotated_rhs '='? ['!' NAME] ':' fstring_format_spec* !'}' {\n" +" PyErr_Occurred() ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN(\"f-" +"string: expecting '}', or format specs\") }\n" +" | '{' annotated_rhs '='? ['!' NAME] !'}' {\n" +" PyErr_Occurred() ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN(\"f-" +"string: expecting '}'\") }\n" +"\n" +"invalid_conversion_character:\n" +" | '!' &(':' | '}') { RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN(\"f-string: missing " +"conversion character\") }\n" +" | '!' !NAME { RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN(\"f-string: invalid " +"conversion character\") }\n" +"\n" +"invalid_arithmetic:\n" +" | sum ('+'|'-'|'*'|'/'|'%'|'//'|'@') a='not' b=inversion " +"{ RAISE_SYNTAX_ERROR_KNOWN_RANGE(a, b, \"'not' after an operator must be " +"parenthesized\") }\n" +"invalid_factor:\n" +" | ('+' | '-' | '~') a='not' b=factor { RAISE_SYNTAX_ERROR_KNOWN_RANGE(a, " +"b, \"'not' after an operator must be parenthesized\") }\n" +"\n" +"invalid_type_params:\n" +" | '[' token=']' {\n" +" RAISE_SYNTAX_ERROR_STARTING_FROM(\n" +" token, \n" +" \"Type parameter list cannot be empty\")}\n" 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 diff --git a/scripts/format_differences.py b/scripts/format_differences.py index 55a7039177..3280006b04 100644 --- a/scripts/format_differences.py +++ b/scripts/format_differences.py @@ -1,56 +1,111 @@ import collections -import os -import glob - +import re +import sys +from pathlib import Path from pprint import pprint - -import polib # fades - -PO_DIR = os.path.abspath( - os.path.join( - os.path.dirname(__file__), - '..', - )) - - - -DELIMITERS = ("``", "*") - -def has_delimiters(x): - for d in DELIMITERS: - if d in x: - return True - return False - -def main(): - files_with_differences = collections.defaultdict(list) - - for i, pofilename in enumerate(glob.glob(PO_DIR + '**/**/*.po')): +from typing import List + +import polib + +_patterns = [ + ":c:func:`[^`]+`", + ":c:type:`[^`]+`", + ":c:macro:`[^`]+`", + ":c:member:`[^`]+`", + ":c:data:`[^`]+`", + ":py:data:`[^`]+`", + ":py:mod:`[^`]+`", + ":func:`[^`]+`", + ":mod:`[^`]+`", + ":ref:`[^`]+`", + ":class:`[^`]+`", + ":pep:`[^`]+`", + ":data:`[^`]+`", + ":exc:`[^`]+`", + ":term:`[^`]+`", + ":meth:`[^`]+`", + ":envvar:`[^`]+`", + ":file:`[^`]+`", + ":attr:`[^`]+`", + ":const:`[^`]+`", + ":issue:`[^`]+`", + ":opcode:`[^`]+`", + ":option:`[^`]+`", + ":program:`[^`]+`", + ":keyword:`[^`]+`", + ":RFC:`[^`]+`", + ":rfc:`[^`]+`", + ":doc:`[^`]+`", + "``[^`]+``", + "`[^`]+`__", + "`[^`]+`_", + r"\*\*[^\*]+\*\*", # bold text between ** + r"\*[^\*]+\*", # italic text between * +] + +_exps = [re.compile(e) for e in _patterns] + + +def get_sphinx_directives(s: str) -> List[str]: + """ + Parameters: + string containing the text to translate + + Returns: + dictionary containing all the placeholder text as keys + and the correct value. + """ + + output: List[str] = [] + for exp in _exps: + matches = exp.findall(s) + for match in matches: + output.append(match) + # remove the found pattern from the original string + s = s.replace(match, "") + return output + +def ind(level=0): + return f"{' ' * 4 * level}" + +if __name__ == "__main__": + PO_DIR = Path(__file__).resolve().parent.parent + VENV_DIR = PO_DIR / "venv" + + if len(sys.argv) > 1: + filename = sys.argv[1] + files = [] + if filename: + if Path(filename).is_dir(): + files = [i for i in PO_DIR.glob(f"{filename}/*.po") if not i.is_relative_to(VENV_DIR)] + elif not Path(filename).is_file(): + print(f"File not found: '{filename}'") + sys.exit(-1) + else: + files = [filename] + else: + files = [i for i in PO_DIR.glob("**/**/*.po") if not i.is_relative_to(VENV_DIR)] + + for pofilename in files: + print(f"\n> Processing {pofilename}") po = polib.pofile(pofilename) - if po.percent_translated() < 85: - continue for entry in po: - words = [] - wordsid = wordsstr = list() - - if has_delimiters(entry.msgid): - wordsid = [word for word in entry.msgid.split() if has_delimiters(word)] - - if has_delimiters(entry.msgstr): - wordsstr = [word for word in entry.msgstr.split() if has_delimiters(word)] - if len(wordsid) != len(wordsstr): - key = pofilename.replace(PO_DIR, '') - files_with_differences[key].append({ - 'occurrences': entry.occurrences, - 'words': { - 'original': wordsid, - 'translated': wordsstr, - }, - }) + directives_id = get_sphinx_directives(entry.msgid) + directives_str = get_sphinx_directives(entry.msgstr) - return files_with_differences + # Check if any of them is not empty + if directives_id or directives_str: + # Check if the directives are the same + for ori, dst in zip(directives_id, directives_str): + if ori == dst: + continue -pprint(main()) + if ori != dst: + occs = [f"{ind(2)}{t[0]}:{t[1]}" for t in entry.occurrences] + print(f"\n{ind(1)}{pofilename}:{entry.linenum}") + print(f"\n".join(occs)) + print(f"{ind(3)}{ori}") + print(f"{ind(3)}{dst}") diff --git a/tutorial/controlflow.po b/tutorial/controlflow.po index 3fc22ab863..e1369d1587 100644 --- a/tutorial/controlflow.po +++ b/tutorial/controlflow.po @@ -277,20 +277,17 @@ msgstr "" "más detalle sobre la :func:`list`." #: ../Doc/tutorial/controlflow.rst:164 -#, fuzzy msgid ":keyword:`!break` and :keyword:`!continue` Statements" msgstr "" -"Las sentencias :keyword:`break`, :keyword:`continue`, y :keyword:`else` en " -"bucles" +"Las sentencias :keyword:`!break` y :keyword:`!continue`" #: ../Doc/tutorial/controlflow.rst:166 -#, fuzzy msgid "" "The :keyword:`break` statement breaks out of the innermost enclosing :" "keyword:`for` or :keyword:`while` loop::" msgstr "" "La sentencia :keyword:`break` termina el bucle :keyword:`for` o :keyword:" -"`while` más anidado." +"`while` envolvente más interno::" #: ../Doc/tutorial/controlflow.rst:169 #, python-format @@ -308,13 +305,12 @@ msgid "" msgstr "" #: ../Doc/tutorial/controlflow.rst:180 -#, fuzzy msgid "" "The :keyword:`continue` statement continues with the next iteration of the " "loop::" msgstr "" -"La declaración :keyword:`continue`, también tomada de C, continua con la " -"siguiente iteración del ciclo::" +"La sentencia :keyword:`continue`, también tomada de C, continúa con la " +"siguiente iteración del bucle::" #: ../Doc/tutorial/controlflow.rst:183 msgid "" @@ -335,9 +331,8 @@ msgid "" msgstr "" #: ../Doc/tutorial/controlflow.rst:201 -#, fuzzy msgid ":keyword:`!else` Clauses on Loops" -msgstr "La sentencia :keyword:`pass`" +msgstr "Cláusulas :keyword:`!else` en bucles" #: ../Doc/tutorial/controlflow.rst:203 msgid "" @@ -348,13 +343,12 @@ msgid "" msgstr "" #: ../Doc/tutorial/controlflow.rst:207 -#, fuzzy msgid "" "In a :keyword:`for` loop, the :keyword:`!else` clause is executed after the " "loop finishes its final iteration, that is, if no break occurred." msgstr "" "En un bucle :keyword:`for`, la cláusula :keyword:`!else` se ejecuta después " -"de que el bucle alcance su iteración final." +"de que el bucle termine su iteración final, es decir, si no ocurrió un break." #: ../Doc/tutorial/controlflow.rst:210 msgid "" @@ -365,7 +359,6 @@ msgstr "" "bucle se vuelva falsa." #: ../Doc/tutorial/controlflow.rst:212 -#, fuzzy msgid "" "In either kind of loop, the :keyword:`!else` clause is **not** executed if " "the loop was terminated by a :keyword:`break`. Of course, other ways of " @@ -373,7 +366,9 @@ msgid "" "will also skip execution of the :keyword:`else` clause." msgstr "" "En cualquier tipo de bucle, la cláusula :keyword:`!else` **no** se ejecuta " -"si el bucle ha finalizado con :keyword:`break`." +"si el bucle terminó con un :keyword:`break`. Por supuesto, otras formas de " +"terminar el bucle anticipadamente, como un :keyword:`return` o una excepción " +"lanzada, también omitirán la ejecución de la cláusula :keyword:`else`." #: ../Doc/tutorial/controlflow.rst:217 msgid "" @@ -406,13 +401,12 @@ msgid "" msgstr "" #: ../Doc/tutorial/controlflow.rst:238 -#, fuzzy msgid "" "(Yes, this is the correct code. Look closely: the ``else`` clause belongs " "to the ``for`` loop, **not** the ``if`` statement.)" msgstr "" -"(Sí, este es el código correcto. Fíjate bien: el ``else`` pertenece al " -"ciclo :keyword:`for`, **no** al :keyword:`if`.)" +"(Sí, este es el código correcto. Fíjate bien: la cláusula ``else`` pertenece " +"al bucle ``for``, **no** a la sentencia ``if``.)" #: ../Doc/tutorial/controlflow.rst:241 msgid "" @@ -424,7 +418,6 @@ msgid "" msgstr "" #: ../Doc/tutorial/controlflow.rst:247 -#, fuzzy msgid "" "When used with a loop, the ``else`` clause has more in common with the " "``else`` clause of a :keyword:`try` statement than it does with that of " @@ -433,12 +426,13 @@ msgid "" "occurs. For more on the ``try`` statement and exceptions, see :ref:`tut-" "handling`." msgstr "" -"Cuando se usa con un bucle, la cláusula ``else`` tiene más en común con el " -"``else`` de una sentencia :keyword:`try` que con el de un :keyword:`if`: en " -"una sentencia :keyword:`try` la cláusula ``else`` se ejecuta cuando no se " -"genera ninguna excepción, y el ``else`` de un bucle se ejecuta cuando no hay " -"ningún ``break``. Para más sobre la declaración :keyword:`!try` y " -"excepciones, mira :ref:`tut-handling`." +"Cuando se usa con un bucle, la cláusula ``else`` tiene más en común con la " +"cláusula ``else`` de una sentencia :keyword:`try` que con la de sentencias " +"``if`` la cláusula ``else`` de una sentencia ``try`` se " +"ejecuta cuando no ocurre ninguna excepción, y la cláusula ``else`` de un " +"bucle se ejecuta cuando no ocurre ningún ``break``. Para más información " +"sobre la sentencia :keyword:`!try` y las excepciones, consulta :ref:`tut-" +"handling`." #: ../Doc/tutorial/controlflow.rst:256 msgid ":keyword:`!pass` Statements"