From 696776b65ae5b58c5e21a5e64cd6e8d898731e16 Mon Sep 17 00:00:00 2001 From: Carlos Mena <50986837+carlosm00@users.noreply.github.com> Date: Sat, 25 Oct 2025 02:42:01 +0200 Subject: [PATCH 01/20] =?UTF-8?q?Traducci=C3=B3n=20de=20library/exceptions?= =?UTF-8?q?.po=20(#3420)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #2966 --- library/exceptions.po | 341 ++++++++++++++++++++++++++++-------------- 1 file changed, 227 insertions(+), 114 deletions(-) diff --git a/library/exceptions.po b/library/exceptions.po index 79d24555ad..5b28a1dfb9 100644 --- a/library/exceptions.po +++ b/library/exceptions.po @@ -11,15 +11,16 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: 2024-11-05 23:29+0100\n" +"PO-Revision-Date: 2025-10-24 19:09+0200\n" "Last-Translator: Carlos Mena Pérez <@carlosm00>\n" -"Language: es\n" "Language-Team: python-doc-es\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Generated-By: Babel 2.16.0\n" +"X-Generator: Poedit 3.7\n" #: ../Doc/library/exceptions.rst:4 msgid "Built-in Exceptions" @@ -38,12 +39,11 @@ msgstr "" "derive de :class:`BaseException`. En una instrucción :keyword:`try` con una " "cláusula :keyword:`except` que menciona una clase determinada, esa cláusula " "también controla las clases de excepción derivadas de esa clase (excepto las " -"clases de excepción de las que se deriva *it*). Dos clases de excepción que " +"clases de excepción de las que esta se deriva). Dos clases de excepción que " "no están relacionadas mediante subclases nunca son equivalentes, incluso si " "tienen el mismo nombre." #: ../Doc/library/exceptions.rst:19 -#, fuzzy msgid "" "The built-in exceptions listed in this chapter can be generated by the " "interpreter or built-in functions. Except where mentioned, they have an " @@ -52,13 +52,13 @@ msgid "" "and a string explaining the code). The associated value is usually passed " "as arguments to the exception class's constructor." msgstr "" -"Las excepciones predefinidas enumeradas a continuación pueden ser generadas " -"por el intérprete o funciones predefinidas. Excepto donde se mencione lo " -"contrario, tienen un *associated value* que indica la causa detallada del " -"error. Esto podría una cadena de caracteres o una tupla elementos con " -"grandes elementos de información (por ejemplo, un código de error y una " -"cadena que explica el código). El valor asociado generalmente se pasa como " -"argumentos al constructor de la clase de excepción." +"Las excepciones incorporadas enumeradas en este apartado pueden ser lanzadas " +"por el intérprete o funciones integradas. Excepto donde se mencione lo " +"contrario, tienen un \"valor asociado\" que indica la causa detallada " +"del error. Esto podría una cadena de caracteres o una tupla de varios " +"elementos de información (por ejemplo, un código de error y una cadena que " +"explica el código). El valor asociado generalmente se pasa como argumentos " +"al constructor de la clase de excepción." #: ../Doc/library/exceptions.rst:26 msgid "" @@ -98,9 +98,10 @@ msgid "" "Three attributes on exception objects provide information about the context " "in which the exception was raised:" msgstr "" +"Tres atributos en los objetos de excepción ofrecen información sobre el " +"contexto en el cual la excepción fue lanzada:" #: ../Doc/library/exceptions.rst:53 -#, fuzzy msgid "" "When raising a new exception while another exception is already being " "handled, the new exception's :attr:`!__context__` attribute is automatically " @@ -109,7 +110,7 @@ msgid "" "used." msgstr "" "Al lanzar una nueva excepción mientras otra excepción está siendo manejada, " -"el atributo :attr:`__context__` de la nueva excepción es automáticamente " +"el atributo :attr:`!__context__` de la nueva excepción es automáticamente " "asignado a la excepción manejada. Una excepción puede ser manejada cuando " "se utiliza la cláusula :keyword:`except` o :keyword:`finally`, o con la " "sentencia :keyword:`with`." @@ -124,10 +125,9 @@ msgstr "" #: ../Doc/library/exceptions.rst:63 msgid "raise new_exc from original_exc" -msgstr "" +msgstr "raise new_exc from original_exc" #: ../Doc/library/exceptions.rst:65 -#, fuzzy msgid "" "The expression following :keyword:`from` must be an exception or " "``None``. It will be set as :attr:`!__cause__` on the raised exception. " @@ -139,16 +139,15 @@ msgid "" "introspection when debugging." msgstr "" "La expresión que sigue a :keyword:`from` debe ser una excepción o " -"``None``. Se establecerá como :attr:`__cause__` en la excepción generada. La " -"configuración de :attr:`__cause__` también establece implícitamente el " -"atributo :attr:`__suppress_context__` en ``True``, de modo que el uso de " +"``None``. Se establecerá como :attr:`!__cause__` en la excepción lanzada. La " +"configuración de :attr:`!__cause__` también establece implícitamente el " +"atributo :attr:`!__suppress_context__` a ``True``, de modo que el uso de " "``raise new_exc from None`` reemplaza efectivamente la excepción anterior " "con la nueva para fines de visualización (por ejemplo, conversión de :exc:" "`KeyError` a :exc:`AttributeError`), dejando la excepción anterior " -"disponible en :attr:`__context__` para introspección durante la depuración." +"disponible en :attr:`!__context__` para introspección durante la depuración." #: ../Doc/library/exceptions.rst:74 -#, fuzzy msgid "" "The default traceback display code shows these chained exceptions in " "addition to the traceback for the exception itself. An explicitly chained " @@ -156,12 +155,12 @@ msgid "" "chained exception in :attr:`!__context__` is shown only if :attr:`!" "__cause__` is :const:`None` and :attr:`!__suppress_context__` is false." msgstr "" -"La visualización por defecto de la traza de error muestra estas excepciones " -"encadenadas además de la traza de la propia excepción. Siempre se muestra " -"una excepción encadenada explícitamente en :attr:`__cause__` cuando está " -"presente. Una excepción implícitamente encadenada en :attr:`__context__` " -"solo se muestra si :attr:`__cause__` es :const:`None` y :attr:" -"`__suppress_context__` es falso." +"La visualización por defecto de la traza de seguimiento muestra estas " +"excepciones encadenadas además de la traza de la propia excepción. Siempre " +"se muestra una excepción encadenada explícitamente en :attr:`!__cause__` " +"cuando está presente. Una excepción implícitamente encadenada en :attr:`!" +"__context__` solo se muestra si :attr:`!__cause__` es :const:`None` y :attr:" +"`!__suppress_context__` es falso." #: ../Doc/library/exceptions.rst:80 msgid "" @@ -262,10 +261,10 @@ msgstr "" "características de encadenamiento de excepciones de :pep:`3134` estuvieran " "disponibles. El siguiente ejemplo muestra cómo podemos convertir una " "instancia de ``SomeException`` en una instancia de ``OtherException`` " -"mientras se conserva el rastreo. Una vez generado, el marco actual se " -"inserta en el rastreo del ``OtherException``, como habría sucedido con el " -"rastreo del ``SomeException`` original si hubiéramos permitido que se " -"propagara al llamador. ::" +"mientras se conserva el rastreo. Una vez lanzada, el marco actual se inserta " +"en el rastreo del ``OtherException``, como habría sucedido con el rastreo " +"del ``SomeException`` original si hubiéramos permitido que se propagara al " +"llamador. ::" #: ../Doc/library/exceptions.rst:135 msgid "" @@ -275,12 +274,20 @@ msgid "" " tb = sys.exception().__traceback__\n" " raise OtherException(...).with_traceback(tb)" msgstr "" +"try:\n" +" ...\n" +"except SomeException:\n" +" tb = sys.exception().__traceback__\n" +" raise OtherException(...).with_traceback(tb)" #: ../Doc/library/exceptions.rst:143 msgid "" "A writable field that holds the :ref:`traceback object ` " "associated with this exception. See also: :ref:`raise`." msgstr "" +"Un campo escribible que mantenga los :ref:`objetos de seguimiento de pila " +"(traceback) ` asociados con esta excepción. Consulte :ref:" +"`raise` para más información." #: ../Doc/library/exceptions.rst:149 msgid "" @@ -316,7 +323,7 @@ msgid "" "arithmetic errors: :exc:`OverflowError`, :exc:`ZeroDivisionError`, :exc:" "`FloatingPointError`." msgstr "" -"La clase base para las excepciones predefinidas que se generan para varios " +"La clase base para las excepciones predefinidas que se lanzan para varios " "errores aritméticos: :exc:`OverflowError`, :exc:`ZeroDivisionError`, :exc:" "`FloatingPointError`." @@ -325,7 +332,7 @@ msgid "" "Raised when a :ref:`buffer ` related operation cannot be " "performed." msgstr "" -"Se genera cuando :ref:`buffer ` no se puede realizar una " +"Se lanza cuando :ref:`buffer ` no se puede realizar una " "operación relacionada." #: ../Doc/library/exceptions.rst:184 @@ -334,7 +341,7 @@ msgid "" "on a mapping or sequence is invalid: :exc:`IndexError`, :exc:`KeyError`. " "This can be raised directly by :func:`codecs.lookup`." msgstr "" -"La clase base para las excepciones que se generan cuando una clave o índice " +"La clase base para las excepciones que se lanzan cuando una clave o índice " "utilizado en un mapa o secuencia que no es válido: :exc:`IndexError`, :exc:" "`KeyError`. Esto se puede lanzar directamente por :func:`codecs.lookup`." @@ -345,12 +352,12 @@ msgstr "Excepciones específicas" #: ../Doc/library/exceptions.rst:192 msgid "The following exceptions are the exceptions that are usually raised." msgstr "" -"Las siguientes excepciones son las excepciones que normalmente se generan." +"Las siguientes excepciones son las excepciones que normalmente se lanzan." #: ../Doc/library/exceptions.rst:198 msgid "Raised when an :keyword:`assert` statement fails." msgstr "" -"Se genera cuando se produce un error en una instrucción :keyword:`assert`." +"Se lanza cuando se produce un error en una instrucción :keyword:`assert`." #: ../Doc/library/exceptions.rst:203 msgid "" @@ -358,9 +365,9 @@ msgid "" "assignment fails. (When an object does not support attribute references or " "attribute assignments at all, :exc:`TypeError` is raised.)" msgstr "" -"Se genera cuando se produce un error en una referencia de atributo (ver :ref:" +"Se lanza cuando se produce un error en una referencia de atributo (ver :ref:" "`attribute-references`) o la asignación falla. (Cuando un objeto no admite " -"referencias de atributos o asignaciones de atributos en absoluto, se genera :" +"referencias de atributos o asignaciones de atributos en absoluto, se lanza :" "exc:`TypeError`.)" #: ../Doc/library/exceptions.rst:207 @@ -385,7 +392,7 @@ msgid "" "without reading any data. (N.B.: the :meth:`io.IOBase.read` and :meth:`io." "IOBase.readline` methods return an empty string when they hit EOF.)" msgstr "" -"Se genera cuando la función :func:`input` alcanza una condición de fin de " +"Se lanza cuando la función :func:`input` alcanza una condición de fin de " "archivo (EOF) sin leer ningún dato. (Note que el :meth:`io. IOBase.read` y :" "meth:`io.IOBase.readline` retornan una cadena vacía cuando llegan a EOF.)" @@ -400,7 +407,7 @@ msgid "" "exc:`BaseException` instead of :exc:`Exception` since it is technically not " "an error." msgstr "" -"Se genera cuando un :term:`generator` o :term:`coroutine` está cerrado; ver :" +"Se lanza cuando un :term:`generator` o :term:`coroutine` está cerrado; ver :" "meth:`generator.close` y :meth:`coroutine.close`. Hereda directamente de :" "exc:`BaseException` en lugar de :exc:`Exception` ya que técnicamente no es " "un error." @@ -411,9 +418,9 @@ msgid "" "module. Also raised when the \"from list\" in ``from ... import`` has a " "name that cannot be found." msgstr "" -"Se genera cuando la instrucción :keyword:`import` tiene problemas al " -"intentar cargar un módulo. También se produce cuando la *from list* en " -"``from ... import`` tiene un nombre que no se puede encontrar." +"Se lanza cuando la instrucción :keyword:`import` tiene problemas al intentar " +"cargar un módulo. También se produce cuando la *from list* en ``from ... " +"import`` tiene un nombre que no se puede encontrar." #: ../Doc/library/exceptions.rst:241 msgid "" @@ -441,8 +448,8 @@ msgid "" "module could not be located. It is also raised when ``None`` is found in :" "data:`sys.modules`." msgstr "" -"Una subclase de :exc:`ImportError` que se genera mediante :keyword:`import` " -"cuando no se pudo encontrar un módulo. También se genera cuando ``None`` se " +"Una subclase de :exc:`ImportError` que se lanza mediante :keyword:`import` " +"cuando no se pudo encontrar un módulo. También se lanza cuando ``None`` se " "encuentra en :data:`sys.modules`." #: ../Doc/library/exceptions.rst:266 @@ -451,17 +458,16 @@ msgid "" "silently truncated to fall in the allowed range; if an index is not an " "integer, :exc:`TypeError` is raised.)" msgstr "" -"Se genera cuando un subíndice de secuencia está fuera del rango. (Los " -"índices de la rebanada son truncados silenciosamente para caer en el " -"intervalo permitido; si un índice no es un entero, se genera :exc:" -"`TypeError`.)" +"Se lanza cuando un subíndice de secuencia está fuera del rango. (Los índices " +"de la rebanada son truncados silenciosamente para caer en el intervalo " +"permitido; si un índice no es un entero, se lanza :exc:`TypeError`.)" #: ../Doc/library/exceptions.rst:275 msgid "" "Raised when a mapping (dictionary) key is not found in the set of existing " "keys." msgstr "" -"Se genera cuando no se encuentra una clave de asignación (diccionario) en el " +"Se lanza cuando no se encuentra una clave de asignación (diccionario) en el " "conjunto de claves existentes (mapa)." #: ../Doc/library/exceptions.rst:282 @@ -472,7 +478,7 @@ msgid "" "accidentally caught by code that catches :exc:`Exception` and thus prevent " "the interpreter from exiting." msgstr "" -"Se genera cuando el usuario pulsa la tecla de interrupción (normalmente :kbd:" +"Se lanza cuando el usuario pulsa la tecla de interrupción (normalmente :kbd:" "`Control-C` o :kbd:`Delete`). Durante la ejecución, se realiza una " "comprobación de interrupciones con regularidad. La excepción hereda de :exc:" "`BaseException` para no ser detectada de forma accidental por :exc:" @@ -503,7 +509,7 @@ msgid "" "recover from this situation; it nevertheless raises an exception so that a " "stack traceback can be printed, in case a run-away program was the cause." msgstr "" -"Se genera cuando una operación se queda sin memoria pero la situación aún " +"Se lanza cuando una operación se queda sin memoria pero la situación aún " "puede ser recuperada (eliminando algunos objetos). El valor asociado es una " "cadena que indica que tipo de operación (interna) se quedó sin memoria. " "Tenga en cuenta que debido a la arquitectura de administración de memoria " @@ -518,7 +524,7 @@ msgid "" "unqualified names. The associated value is an error message that includes " "the name that could not be found." msgstr "" -"Se genera cuando no se encuentra un nombre local o global. Esto se aplica " +"Se lanza cuando no se encuentra un nombre local o global. Esto se aplica " "solo a nombres no calificados. El valor asociado es un mensaje de error que " "incluye el nombre que no se pudo encontrar." @@ -560,21 +566,20 @@ msgstr "" "subclase, se establece en :data:`None`." #: ../Doc/library/exceptions.rst:338 -#, fuzzy msgid "" "``NotImplementedError`` and :data:`NotImplemented` are not interchangeable, " "even though they have similar names and purposes. See :data:`!" "NotImplemented` for details on when to use it." msgstr "" -"``NotImplementedError`` y ``NotImplemented`` no son intercambiables, a pesar " -"de que tienen nombres y propósitos similares. Consulte :data:" -"`NotImplemented` para obtener detalles sobre cuándo usarlo." +"``NotImplementedError`` y :data:`NotImplemented` no son intercambiables, a " +"pesar de que tienen nombres y propósitos similares. Consulte :data:`!" +"NotImplemented` para obtener detalles sobre cuándo usarlo." #: ../Doc/library/exceptions.rst:347 msgid "" "This exception is raised when a system function returns a system-related " -"error, including I/O failures such as \"file not found\" or \"disk full\" " -"(not for illegal argument types or other incidental errors)." +"error, including I/O failures such as \"file not found\" or \"disk " +"full\" (not for illegal argument types or other incidental errors)." msgstr "" "Esta excepción se produce cuando una función del sistema retorna un error " "relacionado con el sistema, que incluye fallas de E/S como ``file not " @@ -682,7 +687,6 @@ msgstr "" "atributo del constructor *filename2*." #: ../Doc/library/exceptions.rst:411 -#, fuzzy msgid "" "Raised when the result of an arithmetic operation is too large to be " "represented. This cannot occur for integers (which would rather raise :exc:" @@ -691,13 +695,13 @@ msgid "" "Because of the lack of standardization of floating-point exception handling " "in C, most floating-point operations are not checked." msgstr "" -"Se genera cuando el resultado de una operación aritmética es demasiado " -"grande para ser representado. Esto no puede ocurrir para los enteros (para " -"lo cual es mejor lanzar :exc:`MemoryError` que darse por vencido). Sin " -"embargo, por razones históricas, ``OverflowError`` a veces se genera para " -"enteros que están fuera del rango requerido. Debido a la falta de " -"estandarización del manejo de excepciones de coma flotante en C, la mayoría " -"de las operaciones de coma flotante no se verifican." +"Se lanza cuando el resultado de una operación aritmética es demasiado grande " +"para ser representado. Esto no puede ocurrir para los enteros (para lo cual " +"lanza un :exc:`MemoryError` en vez de darse por vencido). Sin embargo, por " +"razones históricas, ``OverflowError`` a veces se lanza para enteros que " +"están fuera del rango requerido. Debido a la falta de estandarización del " +"manejo de excepciones de coma flotante en C, la mayoría de las operaciones " +"de coma flotante no se verifican." #: ../Doc/library/exceptions.rst:421 msgid "" @@ -705,24 +709,29 @@ msgid "" "operation is blocked during interpreter shutdown also known as :term:`Python " "finalization `." msgstr "" +"Esta excepción es derivada de :exc:`RuntimeError`. Se lanza cuando una " +"operación es bloqueada durante el apagado del intérprete, también conocido " +"como :term:`finalización de Python `." #: ../Doc/library/exceptions.rst:425 msgid "" "Examples of operations which can be blocked with a :exc:" "`PythonFinalizationError` during the Python finalization:" msgstr "" +"Ejemplos de operaciones que pueden ser bloqueadas con un :exc:" +"`PythonFinalizationError` durante la finalización de Python:" #: ../Doc/library/exceptions.rst:428 msgid "Creating a new Python thread." -msgstr "" +msgstr "Creación de nuevos hilos de Python." #: ../Doc/library/exceptions.rst:429 msgid ":func:`os.fork`." -msgstr "" +msgstr ":func:`os.fork`." #: ../Doc/library/exceptions.rst:431 msgid "See also the :func:`sys.is_finalizing` function." -msgstr "" +msgstr "Revise también la función :func:`sys.is_finalizing`." #: ../Doc/library/exceptions.rst:433 ../Doc/library/exceptions.rst:443 msgid "Previously, a plain :exc:`RuntimeError` was raised." @@ -756,7 +765,7 @@ msgid "" "categories. The associated value is a string indicating what precisely went " "wrong." msgstr "" -"Se genera cuando se detecta un error que no corresponde a ninguna de las " +"Se lanza cuando se detecta un error que no corresponde a ninguna de las " "otras categorías. El valor asociado es una cadena que indica exactamente qué " "salió mal." @@ -766,18 +775,17 @@ msgid "" "`~iterator.__next__` method to signal that there are no further items " "produced by the iterator." msgstr "" -"Generado por la función incorporada :func:`next` y un :term:`iterator`\\'s :" +"Lanzado por la función incorporada :func:`next` y un :term:`iterator`\\'s :" "meth:`~iterator.__next__` para indicar que no hay más elementos producidos " "por el iterador." #: ../Doc/library/exceptions.rst:470 -#, fuzzy msgid "" "The exception object has a single attribute :attr:`!value`, which is given " "as an argument when constructing the exception, and defaults to :const:" "`None`." msgstr "" -"El objeto de excepción tiene un solo atributo :attr:`value`, que se " +"El objeto de excepción tiene un solo atributo :attr:`!value`, que se " "proporciona como argumento al construir la excepción, y por defecto es :" "const:`None`." @@ -788,7 +796,7 @@ msgid "" "is used as the :attr:`value` parameter to the constructor of the exception." msgstr "" "Cuando se retorna una función :term:`generator` o :term:`coroutine`, se " -"genera una nueva instancia :exc:`StopIteration`, y el valor retornado por la " +"lanza una nueva instancia :exc:`StopIteration`, y el valor retornado por la " "función se utiliza como parámetro :attr:`value` para constructor de la " "excepción." @@ -824,7 +832,7 @@ msgid "" "raised in a generator is transformed into a :exc:`RuntimeError`." msgstr "" "Habilitar :pep:`479` para todo el código por defecto: a :exc:`StopIteration` " -"generado en un generador se transforma en :exc:`RuntimeError`." +"lanzado en un generador se transforma en :exc:`RuntimeError`." #: ../Doc/library/exceptions.rst:497 msgid "" @@ -841,7 +849,7 @@ msgid "" "`compile`, :func:`exec`, or :func:`eval`, or when reading the initial script " "or standard input (also interactively)." msgstr "" -"Se genera cuando el analizador encuentra un error de sintaxis. Esto puede " +"Se lanza cuando el analizador encuentra un error de sintaxis. Esto puede " "ocurrir en una instrucción :keyword:`import`, en una llamada a las funciones " "integradas :func:`compile`, :func:`exec` o :func:`eval`, o al leer el script " "inicial o la entrada estándar (también de forma interactiva)." @@ -925,7 +933,7 @@ msgid "" "Raised when indentation contains an inconsistent use of tabs and spaces. " "This is a subclass of :exc:`IndentationError`." msgstr "" -"Se genera cuando la sangría contiene un uso inconsistente de pestañas y " +"Se lanza cuando la sangría contiene un uso inconsistente de pestañas y " "espacios. Esta es una subclase de :exc:`IndentationError`." #: ../Doc/library/exceptions.rst:563 @@ -934,7 +942,7 @@ msgid "" "not look so serious to cause it to abandon all hope. The associated value is " "a string indicating what went wrong (in low-level terms)." msgstr "" -"Se genera cuando el intérprete encuentra un error interno, pero la situación " +"Se lanza cuando el intérprete encuentra un error interno, pero la situación " "no parece tan grave como para abandonar toda esperanza. El valor asociado es " "una cadena que indica qué salió mal (a bajo nivel)." @@ -1006,7 +1014,7 @@ msgid "" "inappropriate type. The associated value is a string giving details about " "the type mismatch." msgstr "" -"Se genera cuando una operación o función se aplica a un objeto de tipo " +"Se lanza cuando una operación o función se aplica a un objeto de tipo " "inapropiado. El valor asociado es una cadena que proporciona detalles sobre " "la falta de coincidencia de tipos." @@ -1041,7 +1049,7 @@ msgid "" "but no value has been bound to that variable. This is a subclass of :exc:" "`NameError`." msgstr "" -"Se genera cuando se hace referencia a una variable local en una función o " +"Se lanza cuando se hace referencia a una variable local en una función o " "método, pero no se ha vinculado ningún valor a esa variable. Esta es una " "subclase de :exc:`NameError`." @@ -1050,7 +1058,7 @@ msgid "" "Raised when a Unicode-related encoding or decoding error occurs. It is a " "subclass of :exc:`ValueError`." msgstr "" -"Se genera cuando se produce un error de codificación o decodificación " +"Se lanza cuando se produce un error de codificación o decodificación " "relacionado con Unicode. Es una subclase de :exc:`ValueError`." #: ../Doc/library/exceptions.rst:627 @@ -1088,7 +1096,7 @@ msgid "" "Raised when a Unicode-related error occurs during encoding. It is a " "subclass of :exc:`UnicodeError`." msgstr "" -"Se genera cuando se produce un error relacionado con Unicode durante la " +"Se lanza cuando se produce un error relacionado con Unicode durante la " "codificación. Es una subclase de :exc:`UnicodeError`." #: ../Doc/library/exceptions.rst:660 @@ -1096,7 +1104,7 @@ msgid "" "Raised when a Unicode-related error occurs during decoding. It is a " "subclass of :exc:`UnicodeError`." msgstr "" -"Se genera cuando se produce un error relacionado con Unicode durante la " +"Se lanza cuando se produce un error relacionado con Unicode durante la " "codificación. Es una subclase de :exc:`UnicodeError`." #: ../Doc/library/exceptions.rst:666 @@ -1104,7 +1112,7 @@ msgid "" "Raised when a Unicode-related error occurs during translating. It is a " "subclass of :exc:`UnicodeError`." msgstr "" -"Se genera cuando se produce un error relacionado con Unicode durante la " +"Se lanza cuando se produce un error relacionado con Unicode durante la " "codificación. Es una subclase de :exc:`UnicodeError`." #: ../Doc/library/exceptions.rst:672 @@ -1113,7 +1121,7 @@ msgid "" "type but an inappropriate value, and the situation is not described by a " "more precise exception such as :exc:`IndexError`." msgstr "" -"Se genera cuando una operación o función recibe un argumento que tiene el " +"Se lanza cuando una operación o función recibe un argumento que tiene el " "tipo correcto pero un valor inapropiado, y la situación no se describe con " "una excepción más precisa como :exc:`IndexError`." @@ -1123,7 +1131,7 @@ msgid "" "The associated value is a string indicating the type of the operands and the " "operation." msgstr "" -"Se genera cuando el segundo argumento de una operación de división o módulo " +"Se lanza cuando el segundo argumento de una operación de división o módulo " "es cero. El valor asociado es una cadena que indica el tipo de operandos y " "la operación." @@ -1148,7 +1156,7 @@ msgid "" "The following exceptions are subclasses of :exc:`OSError`, they get raised " "depending on the system error code." msgstr "" -"Las siguientes excepciones son subclases de :exc:`OSError`, se generan según " +"Las siguientes excepciones son subclases de :exc:`OSError`, se lanzan según " "el código de error del sistema." #: ../Doc/library/exceptions.rst:704 @@ -1501,7 +1509,7 @@ msgstr "" "`BaseException` y puede envolver cualquier excepción, mientras que :exc:" "`ExceptionGroup` extiende a :exc:`Exception` y solo puede envolver subclases " "de :exc:`Exception`. Este diseño está pensado para que ``except Exception`` " -"capture un :exc:`ExceptionGroup` pero no :exc:`BaseExceptionGroup`" +"capture un :exc:`ExceptionGroup` pero no :exc:`BaseExceptionGroup`." #: ../Doc/library/exceptions.rst:940 msgid "" @@ -1547,9 +1555,14 @@ msgid "" "type object) that accepts an exception as its single argument and returns " "true for the exceptions that should be in the subgroup." msgstr "" +"La condición puede ser un tipo de excepción o una tupla de tipos de " +"excepción, en cuyo caso cada excepción se verifica para comprobar si " +"coincide utilizando la misma verificación que es usada en una cláusula " +"*except*. La condición también puede ser un invocable (distinto de un tipo " +"objeto) que acepte una excepción como su único argumento, y retorne *true* " +"para las excepciones que deban estar en el subgrupo." #: ../Doc/library/exceptions.rst:967 -#, fuzzy msgid "" "The nesting structure of the current exception is preserved in the result, " "as are the values of its :attr:`message`, :attr:`~BaseException." @@ -1559,8 +1572,9 @@ msgid "" msgstr "" "La estructura de anidamiento de la excepción actual se conserva en el " "resultado, así como también los valores de sus campos :attr:`message`, :attr:" -"`__traceback__`, :attr:`__cause__`, :attr:`__context__` y :attr:`__notes__`. " -"Los grupos anidados vacíos son omitidos del resultado." +"`~BaseException.__traceback__`, :attr:`~BaseException.__cause__`, :attr:" +"`~BaseException.__context__` y :attr:`~BaseException.__notes__` . Los grupos " +"anidados vacíos son omitidos del resultado." #: ../Doc/library/exceptions.rst:974 msgid "" @@ -1575,7 +1589,7 @@ msgstr "" #: ../Doc/library/exceptions.rst:978 msgid "``condition`` can be any callable which is not a type object." -msgstr "" +msgstr "``condition`` puede ser cualquier invocable que no sea un objeto tipo." #: ../Doc/library/exceptions.rst:983 msgid "" @@ -1596,19 +1610,18 @@ msgstr "" "envuelve las excepciones en ``excs``." #: ../Doc/library/exceptions.rst:992 -#, fuzzy msgid "" "This method is used by :meth:`subgroup` and :meth:`split`, which are used in " "various contexts to break up an exception group. A subclass needs to " "override it in order to make :meth:`subgroup` and :meth:`split` return " "instances of the subclass rather than :exc:`ExceptionGroup`." msgstr "" -"Este método es usado por :meth:`subgroup` y :meth:`split`. Se necesita una " +"Este método es usado por :meth:`subgroup` y :meth:`split`, los cuales se " +"usan en varios contextos para romper un grupo de excepción. Se necesita una " "subclase que lo sobrescriba para que :meth:`subgroup` y :meth:`split` " -"retornan instancias de la subclase en lugar de :exc:`ExceptionGroup`." +"retornen instancias de la subclase en lugar de :exc:`ExceptionGroup`." #: ../Doc/library/exceptions.rst:998 -#, fuzzy msgid "" ":meth:`subgroup` and :meth:`split` copy the :attr:`~BaseException." "__traceback__`, :attr:`~BaseException.__cause__`, :attr:`~BaseException." @@ -1616,10 +1629,11 @@ msgid "" "exception group to the one returned by :meth:`derive`, so these fields do " "not need to be updated by :meth:`derive`." msgstr "" -":meth:`subgroup` y :meth:`split` copian los campos :attr:`__traceback__`, :" -"attr:`__cause__`, :attr:`__context__` y :attr:`__notes__` del grupo de " -"excepción original al devuelto por :meth:`derive`, por lo que estos campos " -"no necesitan ser actualizados por :meth:`derive`. ::" +":meth:`subgroup` y :meth:`split` copian los campos :attr:`~BaseException." +"__traceback__`, :attr:`~BaseException.__cause__`, :attr:`~BaseException." +"__context__` y :attr:`~BaseException.__notes__` del grupo de excepción " +"original al retornado por :meth:`derive`, por lo que estos campos no " +"necesitan ser actualizados por :meth:`derive`." #: ../Doc/library/exceptions.rst:1005 msgid "" @@ -1649,9 +1663,33 @@ msgid "" ">>> exc.__traceback__ is match.__traceback__ is rest.__traceback__\n" "True" msgstr "" +">>> class MyGroup(ExceptionGroup):\n" +"... def derive(self, excs):\n" +"... return MyGroup(self.message, excs)\n" +"...\n" +">>> e = MyGroup(\"eg\", [ValueError(1), TypeError(2)])\n" +">>> e.add_note(\"a note\")\n" +">>> e.__context__ = Exception(\"context\")\n" +">>> e.__cause__ = Exception(\"cause\")\n" +">>> try:\n" +"... raise e\n" +"... except Exception as e:\n" +"... exc = e\n" +"...\n" +">>> match, rest = exc.split(ValueError)\n" +">>> exc, exc.__context__, exc.__cause__, exc.__notes__\n" +"(MyGroup('eg', [ValueError(1), TypeError(2)]), Exception('context'), " +"Exception('cause'), ['a note'])\n" +">>> match, match.__context__, match.__cause__, match.__notes__\n" +"(MyGroup('eg', [ValueError(1)]), Exception('context'), Exception('cause'), " +"['a note'])\n" +">>> rest, rest.__context__, rest.__cause__, rest.__notes__\n" +"(MyGroup('eg', [TypeError(2)]), Exception('context'), Exception('cause'), " +"['a note'])\n" +">>> exc.__traceback__ is match.__traceback__ is rest.__traceback__\n" +"True" #: ../Doc/library/exceptions.rst:1031 -#, fuzzy msgid "" "Note that :exc:`BaseExceptionGroup` defines :meth:`~object.__new__`, so " "subclasses that need a different constructor signature need to override that " @@ -1659,11 +1697,12 @@ msgid "" "exception group subclass which accepts an exit_code and and constructs the " "group's message from it. ::" msgstr "" -"Tenga en cuenta que :exc:`BaseExceptionGroup` define :meth:`__new__`, por lo " -"que las subclases que necesiten una firma de constructor diferente deben " -"sobrescribir ese método en lugar de :meth:`__init__`. Por ejemplo, a " -"continuación se define una subclase de grupo de excepción que acepta un " -"*exit_code* y construye el mensaje del grupo a partir del mismo. ::" +"Tenga en cuenta que :exc:`BaseExceptionGroup` define :meth:`~object." +"__new__`, por lo que las subclases que necesiten una firma de constructor " +"diferente deben sobrescribir ese método en lugar de :meth:`~object." +"__init__`. Por ejemplo, a continuación se define una subclase de grupo de " +"excepción que acepta un *exit_code* y construye el mensaje del grupo a " +"partir del mismo. ::" #: ../Doc/library/exceptions.rst:1037 msgid "" @@ -1676,6 +1715,14 @@ msgid "" " def derive(self, excs):\n" " return Errors(excs, self.exit_code)" msgstr "" +"class Errors(ExceptionGroup):\n" +" def __new__(cls, errors, exit_code):\n" +" self = super().__new__(Errors, f\"exit code: {exit_code}\", errors)\n" +" self.exit_code = exit_code\n" +" return self\n" +"\n" +" def derive(self, excs):\n" +" return Errors(excs, self.exit_code)" #: ../Doc/library/exceptions.rst:1046 msgid "" @@ -1766,6 +1813,74 @@ msgid "" " ├── UnicodeWarning\n" " └── UserWarning\n" msgstr "" +"BaseException\n" +" ├── BaseExceptionGroup\n" +" ├── GeneratorExit\n" +" ├── KeyboardInterrupt\n" +" ├── SystemExit\n" +" └── Exception\n" +" ├── ArithmeticError\n" +" │ ├── FloatingPointError\n" +" │ ├── OverflowError\n" +" │ └── ZeroDivisionError\n" +" ├── AssertionError\n" +" ├── AttributeError\n" +" ├── BufferError\n" +" ├── EOFError\n" +" ├── ExceptionGroup [BaseExceptionGroup]\n" +" ├── ImportError\n" +" │ └── ModuleNotFoundError\n" +" ├── LookupError\n" +" │ ├── IndexError\n" +" │ └── KeyError\n" +" ├── MemoryError\n" +" ├── NameError\n" +" │ └── UnboundLocalError\n" +" ├── OSError\n" +" │ ├── BlockingIOError\n" +" │ ├── ChildProcessError\n" +" │ ├── ConnectionError\n" +" │ │ ├── BrokenPipeError\n" +" │ │ ├── ConnectionAbortedError\n" +" │ │ ├── ConnectionRefusedError\n" +" │ │ └── ConnectionResetError\n" +" │ ├── FileExistsError\n" +" │ ├── FileNotFoundError\n" +" │ ├── InterruptedError\n" +" │ ├── IsADirectoryError\n" +" │ ├── NotADirectoryError\n" +" │ ├── PermissionError\n" +" │ ├── ProcessLookupError\n" +" │ └── TimeoutError\n" +" ├── ReferenceError\n" +" ├── RuntimeError\n" +" │ ├── NotImplementedError\n" +" │ ├── PythonFinalizationError\n" +" │ └── RecursionError\n" +" ├── StopAsyncIteration\n" +" ├── StopIteration\n" +" ├── SyntaxError\n" +" │ └── IndentationError\n" +" │ └── TabError\n" +" ├── SystemError\n" +" ├── TypeError\n" +" ├── ValueError\n" +" │ └── UnicodeError\n" +" │ ├── UnicodeDecodeError\n" +" │ ├── UnicodeEncodeError\n" +" │ └── UnicodeTranslateError\n" +" └── Warning\n" +" ├── BytesWarning\n" +" ├── DeprecationWarning\n" +" ├── EncodingWarning\n" +" ├── FutureWarning\n" +" ├── ImportWarning\n" +" ├── PendingDeprecationWarning\n" +" ├── ResourceWarning\n" +" ├── RuntimeWarning\n" +" ├── SyntaxWarning\n" +" ├── UnicodeWarning\n" +" └── UserWarning\n" #: ../Doc/library/exceptions.rst:6 ../Doc/library/exceptions.rst:17 #: ../Doc/library/exceptions.rst:196 @@ -1785,26 +1900,24 @@ msgid "raise" msgstr "raise" #: ../Doc/library/exceptions.rst:41 -#, fuzzy msgid "exception" -msgstr "Excepciones del sistema operativo" +msgstr "exception" #: ../Doc/library/exceptions.rst:41 -#, fuzzy msgid "chaining" -msgstr "Advertencias" +msgstr "chaining" #: ../Doc/library/exceptions.rst:41 msgid "__cause__ (exception attribute)" -msgstr "" +msgstr "__cause__ (exception attribute)" #: ../Doc/library/exceptions.rst:41 msgid "__context__ (exception attribute)" -msgstr "" +msgstr "__context__ (exception attribute)" #: ../Doc/library/exceptions.rst:41 msgid "__suppress_context__ (exception attribute)" -msgstr "" +msgstr "__suppress_context__ (exception attribute)" #: ../Doc/library/exceptions.rst:196 msgid "assert" From 2f1667c07b560ad0a21c447e54bdff007106b2b2 Mon Sep 17 00:00:00 2001 From: rtobar Date: Thu, 30 Oct 2025 13:36:06 +0800 Subject: [PATCH 02/20] =?UTF-8?q?Arregla=20ortograf=C3=ADa,=20CI=20y=20pot?= =?UTF-8?q?odo=20(#3426)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit El step de chequeo de ortografía comenzó a fallar desde que incluímos #3346. Mi intuición es que ahora que parchamos ciertos archivos .po antes de traducirlos estamos "accidentalmente" arreglando algunas entradas que antes quizás fallaban al ser parseadas, ya sea por pospell or por msgcat, y que cuya ortografía por lo tanto nunca fue chequeada. Aprovecho la oportunidad también de arreglar o mejorar un par de detalles en nuestro script de chequeo de ortografía. En el proceso también ocurrió que, por coincidencia, apareció publicada la nueva versión de potodo, la cual depreca el flag -p/--path que usábamos. Esto provocó una serie de errores que llevó a que: * Actualizara nuestra versión de potodo a la última publicada, * Removiera el flag --path * Añadiera un nuevo step en el job de CI para que la documentación construida se pueda descargar Además envié un pequeño PR a potodo: https://git.afpy.org/AFPy/potodo/pulls/30 --------- Signed-off-by: Rodrigo Tobar --- .github/workflows/main.yml | 6 ++++++ .overrides/progress.rst | 2 +- conf.py | 8 ++++++++ dictionaries/library_io.txt | 1 + dictionaries/whatsnew_2.7.txt | 1 + reference/compound_stmts.po | 2 +- requirements-own.txt | 2 +- scripts/check_spell.py | 15 ++++++++------- 8 files changed, 27 insertions(+), 10 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 18016efc2c..8b3427d1db 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -92,3 +92,9 @@ jobs: - name: Construir documentación run: | sphinx-build -j auto -W --keep-going -b html -d cpython/Doc/_build/doctree -D language=es . cpython/Doc/_build/html + + # Publica la documentación recién construida para poder descargarla de ser necesario + - uses: actions/upload-artifact@v4 + with: + path: cpython/Doc/_build/html + name: documentación-html diff --git a/.overrides/progress.rst b/.overrides/progress.rst index 7fead69417..1a6e7284cf 100644 --- a/.overrides/progress.rst +++ b/.overrides/progress.rst @@ -20,7 +20,7 @@ Muestra los porcentajes completados por directorio y solo los archivos que no es .. runblock:: console - $ potodo --path . + $ potodo . Completados diff --git a/conf.py b/conf.py index a267d02a07..59aacc661f 100644 --- a/conf.py +++ b/conf.py @@ -90,6 +90,14 @@ ] +# autorun is used, among other things, to run potodo, which generates non-ascii output +# starting with 0.30. autorun OTOH defaults to use ascii to decode console/python output. +# Let's switch to utf-8 instead. +autorun_languages = { + "console_output_encoding": "utf-8", + "pycon_output_encoding": "utf-8", +} + def setup(app): def add_contributing_banner(app, doctree): diff --git a/dictionaries/library_io.txt b/dictionaries/library_io.txt index 0a93b4a395..9da6128ac4 100644 --- a/dictionaries/library_io.txt +++ b/dictionaries/library_io.txt @@ -8,3 +8,4 @@ Reconfigura similarmente subclasifica subclasificaciones +Markdown diff --git a/dictionaries/whatsnew_2.7.txt b/dictionaries/whatsnew_2.7.txt index dab9202ed2..87a2cf05a6 100644 --- a/dictionaries/whatsnew_2.7.txt +++ b/dictionaries/whatsnew_2.7.txt @@ -103,3 +103,4 @@ values viewkeys warnings whatever +Light diff --git a/reference/compound_stmts.po b/reference/compound_stmts.po index 483661f484..5a06c0ed61 100644 --- a/reference/compound_stmts.po +++ b/reference/compound_stmts.po @@ -336,7 +336,7 @@ msgstr "" "Para una cláusula de :keyword:`!except`con una expresión, la expresión debe " "evaluar a un tipo de excepción o un tupla de tipos de excepciones. La " "excepción generada coincide con una cláusula :keyword:`!except` cuya " -"expresión evaluá a la clase o una :term:`clase base no virtual ` del objeto excepción, o una tupla que contiene dicha clase." #: ../Doc/reference/compound_stmts.rst:255 diff --git a/requirements-own.txt b/requirements-own.txt index 5f2e1c075a..cac697fa5b 100644 --- a/requirements-own.txt +++ b/requirements-own.txt @@ -2,7 +2,7 @@ pip polib pospell>=1.1 -potodo +potodo>=0.30 powrap>=1.0.2 pre-commit Pygments>=2.17.0 diff --git a/scripts/check_spell.py b/scripts/check_spell.py index d915d23849..da8738366e 100644 --- a/scripts/check_spell.py +++ b/scripts/check_spell.py @@ -4,6 +4,7 @@ """ from pathlib import Path +import shutil import sys import tempfile @@ -43,7 +44,7 @@ def check_spell(po_files=None): # Run pospell either against all files or the file given on the command line if not po_files: - po_files = Path(".").glob("*/*.po") + po_files = list(Path(".").glob("*/*.po")) # Workaround issue #3324 FIXME # It seems that all code snippets have line breaks '\n'. This causes the @@ -52,10 +53,9 @@ def check_spell(po_files=None): # Create temporary copies of the original files. po_files_tmp = [] for po_file in po_files: - with open(tempfile.mktemp(), "w") as temp_file: - # Copy content of the .po file - with open(po_file, "r", encoding="utf-8") as f: - temp_file.write(f.read()) + with open(tempfile.mktemp(), "wb") as temp_file: + with open(po_file, "rb") as original_file: + shutil.copyfileobj(original_file, temp_file) po_files_tmp.append(temp_file.name) # Don't translate probably code entries @@ -66,8 +66,9 @@ def check_spell(po_files=None): polib_temp_file.save() detected_errors = pospell.spell_check(po_files_tmp, personal_dict=output_filename, language="es_ES") - for tmp, orig in zip(po_files_tmp, po_files): - print(tmp, " == ", orig) + if detected_errors: + for tmp, orig in zip(po_files_tmp, po_files): + print(tmp, " == ", orig) return detected_errors From 2f9920ac7b8ec99105f2d06ca0b6ad3fa7dece28 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 4 Nov 2025 06:22:02 +0800 Subject: [PATCH 03/20] Bump actions/upload-artifact from 4 to 5 (#3427) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 5.
Release notes

Sourced from actions/upload-artifact's releases.

v5.0.0

What's Changed

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

New Contributors

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

v4.6.2

What's Changed

New Contributors

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

v4.6.1

What's Changed

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

v4.6.0

What's Changed

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

v4.5.0

What's Changed

New Contributors

... (truncated)

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

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

Sourced from actions/checkout's releases.

v6.0.0

What's Changed

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

v6-beta

What's Changed

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

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

v5.0.1

What's Changed

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

Changelog

Sourced from actions/checkout's changelog.

Changelog

V6.0.0

V5.0.1

V5.0.0

V4.3.1

V4.3.0

v4.2.2

v4.2.1

v4.2.0

v4.1.7

v4.1.6

v4.1.5

... (truncated)

Commits

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

Sourced from actions/upload-artifact's releases.

v6.0.0

v6 - What's new

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

Node.js 24

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

What's Changed

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

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

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/upload-artifact&package-manager=github_actions&previous-version=5&new-version=6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 941885234a..9e34309dd9 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -94,7 +94,7 @@ jobs: sphinx-build -j auto -W --keep-going -b html -d cpython/Doc/_build/doctree -D language=es . cpython/Doc/_build/html # Publica la documentación recién construida para poder descargarla de ser necesario - - uses: actions/upload-artifact@v5 + - uses: actions/upload-artifact@v6 with: path: cpython/Doc/_build/html name: documentación-html From 805b8e139886217cf510107b2f7ca2d0e8ee636c Mon Sep 17 00:00:00 2001 From: Richard Rivero Date: Tue, 6 Jan 2026 11:35:58 -0400 Subject: [PATCH 08/20] traduccion de reference/grammar.po (#3319) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #3290 --------- Co-authored-by: Manuel Kaufmann Co-authored-by: Cristián Maureira-Fredes Co-authored-by: Cristián Maureira-Fredes --- reference/grammar.po | 1974 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 1862 insertions(+), 112 deletions(-) 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" From 0b1a073819dfc3fd9166741b28757e6edcd1f2f5 Mon Sep 17 00:00:00 2001 From: Carlos Mena <50986837+carlosm00@users.noreply.github.com> Date: Tue, 6 Jan 2026 16:43:40 +0100 Subject: [PATCH 09/20] =?UTF-8?q?Traducci=C3=B3n=20reference/expressions.p?= =?UTF-8?q?o=20(#3419)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #3287 --- dictionaries/_base.txt | 1 + reference/expressions.po | 581 +++++++++++++++++++++------------------ 2 files changed, 321 insertions(+), 261 deletions(-) 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/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" From 267d9f3971dce96a546953bc37030c1503f3e72c Mon Sep 17 00:00:00 2001 From: Joseph Salgado <49181840+xooseph@users.noreply.github.com> Date: Tue, 6 Jan 2026 09:58:34 -0600 Subject: [PATCH 10/20] Traducido archivo extending/embedding (#3340) Closes #3196 --------- Co-authored-by: rtobar --- extending/embedding.po | 209 +++++++++++++++++++++++++++++++++++++---- 1 file changed, 190 insertions(+), 19 deletions(-) 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'" From 3d8428be79c1e14c36f5a023a065f659ee0908dd Mon Sep 17 00:00:00 2001 From: SebastianSilv <168685335+SebastianSilv@users.noreply.github.com> Date: Sun, 8 Feb 2026 13:55:31 -0500 Subject: [PATCH 11/20] Corregir traducciones fuzzy en tutorial/controlflow.po (#3428) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Descripción: Este PR corrige 8 traducciones marcadas como "fuzzy" en el archivo `tutorial/controlflow.po`, específicamente en la sección sobre sentencias `break`, `continue`, y cláusulas `else` en bucles. Cambios realizados: - Corregido el título de la sección de sentencias break y continue (faltaba mencionar `continue`) - Añadida traducción precisa de "innermost enclosing loop" como "bucle envolvente más interno" - Mejorada la consistencia terminológica usando "bucle" en lugar de "ciclo" y "sentencia" en lugar de "declaración" - Corregida completamente la traducción incorrecta del título "Cláusulas else en bucles" - Añadida información faltante sobre cuándo se ejecuta la cláusula else (cuando no hay break) - Completada la traducción sobre otras formas de terminar bucles anticipadamente (return, excepciones) - Mejorada la precisión en la comparación entre cláusulas else de bucles y try statements - Corregida la ortografía ("continua" → "continúa") Todas las traducciones han sido revisadas para asegurar que reflejan fielmente el significado del texto original en inglés y mantienen consistencia con el resto de la documentación. Motivación Como parte de mi proyecto final de Pasantía Profesionales en Universidad Javeriana (Cali, Colombia), estoy contribuyendo a la documentación oficial de Python en español. Teniendo en cuenta que esta contribución ayudará a miles de hispanohablantes a aprender Python con documentación más precisa y completa. Checklist - [x] He leído y seguido las guías de CONTRIBUTING.rst - [x] Las traducciones son precisas y mantienen el significado del original - [x] He usado terminología consistente con el resto de la documentación - [x] Eliminé todas las marcas `#, fuzzy` después de revisar y corregir - [x] Mantuve el formato original de los archivos .po --------- Co-authored-by: SebastianSilv Co-authored-by: Cristián Maureira-Fredes --- tutorial/controlflow.po | 42 ++++++++++++++++++----------------------- 1 file changed, 18 insertions(+), 24 deletions(-) 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" From b2d7beba1d1d9be82a690c270b611988808543b2 Mon Sep 17 00:00:00 2001 From: "Erick G. Islas-Osuna" Date: Sun, 8 Feb 2026 12:57:29 -0600 Subject: [PATCH 12/20] =?UTF-8?q?Translate=20`c-api/import.po`=20?= =?UTF-8?q?=F0=9F=A4=96=20(#3415)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Added missing translation for c-api/import.po: - PyImport_Import wrapper function description Updated Last-Translator field and Po-Revision-Date. Closes #3254 --------- Co-authored-by: Cristián Maureira-Fredes --- c-api/import.po | 275 ++++++++++++++++++++++++------------------------ 1 file changed, 138 insertions(+), 137 deletions(-) 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" From 3f1a1951e7c87e21539c120d2b91e3dcf435c92e Mon Sep 17 00:00:00 2001 From: "Erick G. Islas-Osuna" Date: Sun, 8 Feb 2026 16:20:23 -0600 Subject: [PATCH 13/20] =?UTF-8?q?Translate=20`c-api/unicode.po`=20?= =?UTF-8?q?=F0=9F=A4=96=20(#3413)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Minor translation updates for c-api/unicode.po from English to Spanish: - UTF-8 representation caching description - Py_UNICODE removal notice for Python 3.12 - Fixed fuzzy entry formatting Updated Last-Translator field and Po-Revision-Date. Closes #3265 --------- Co-authored-by: Carlos A. Crespo --- c-api/unicode.po | 2354 ++++++++++++++------------------ dictionaries/c-api_unicode.txt | 2 + 2 files changed, 1018 insertions(+), 1338 deletions(-) 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/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 From a01d2473fd174c5b55e88c59f384d28f63509841 Mon Sep 17 00:00:00 2001 From: "Erick G. Islas-Osuna" Date: Fri, 13 Feb 2026 18:15:48 -0600 Subject: [PATCH 14/20] =?UTF-8?q?Translate=20`c-api/object.po`=20?= =?UTF-8?q?=F0=9F=A4=96=20(#3412)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Translate c-api/object.po from English to Spanish following the translation memory guidelines. Added translations for: - Strong and borrowed references to constants - Constant identifier tables and values - NotImplemented singleton functionality - Print flags and object printing functions - Interpreter reference management Updated Last-Translator field and Po-Revision-Date. Closes #3266 --------- Co-authored-by: Carlos A. Crespo --- c-api/object.po | 883 +++++++++++++++++++++++++----------------------- 1 file changed, 467 insertions(+), 416 deletions(-) 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" From 48153780f17e2fdce5360c7c5071adff09dcba78 Mon Sep 17 00:00:00 2001 From: "Erick G. Islas-Osuna" Date: Fri, 13 Feb 2026 20:43:52 -0600 Subject: [PATCH 15/20] =?UTF-8?q?[WIP]=20Translate=20`c-api/init=5Fconfig.?= =?UTF-8?q?po`=20=F0=9F=A4=96=20(#3410)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Updated header information for c-api/init_config.po. File was largely translated already with only minor header updates needed. Updated Last-Translator field and Po-Revision-Date. Closes #3257 --------- Co-authored-by: Carlos A. Crespo --- c-api/init_config.po | 2346 +++++++++++++++++++----------------------- 1 file changed, 1047 insertions(+), 1299 deletions(-) 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)" From d300f54721dec99762d4eeed407b015f8da361f7 Mon Sep 17 00:00:00 2001 From: "Erick G. Islas-Osuna" Date: Sun, 15 Feb 2026 12:27:30 -0600 Subject: [PATCH 16/20] =?UTF-8?q?Translate=20`c-api/type.po`=20?= =?UTF-8?q?=F0=9F=A4=96=20(#3407)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Translate c-api/type.po from English to Spanish following the translation memory guidelines. Added translations for: - Type watcher callback functions and management - Type object internal namespace access - Heap type creation and metaclass functionality - Memory allocation and size specifications - Version tag assignment and management Updated Last-Translator field and Po-Revision-Date. Closes #3280 --------- Co-authored-by: Cristián Maureira-Fredes Co-authored-by: Carlos A. Crespo --- c-api/type.po | 712 ++++++++++++++++++-------------------------------- 1 file changed, 252 insertions(+), 460 deletions(-) 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" From 39a72c07da59d0702ea6600c27cbb4d4c550655f Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Sun, 15 Feb 2026 13:14:38 -0600 Subject: [PATCH 17/20] =?UTF-8?q?Traducci=C3=B3n=20`c-api/none`=20(#3400)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #3258 --------- Co-authored-by: rtobar Co-authored-by: Cristián Maureira-Fredes Co-authored-by: Carlos A. Crespo --- c-api/none.po | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) 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" From cc4f00854cdeeb6069196c4be95723cc3b842cf5 Mon Sep 17 00:00:00 2001 From: Joseph Salgado <49181840+xooseph@users.noreply.github.com> Date: Sun, 15 Feb 2026 13:49:17 -0600 Subject: [PATCH 18/20] Traducido archivo reference/datamodel (#3351) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #3289 --------- Co-authored-by: rtobar Co-authored-by: Cristián Maureira-Fredes Co-authored-by: Carlos A. Crespo --- dictionaries/reference_datamodel.txt | 1 + reference/datamodel.po | 1460 +++++++++++++++----------- 2 files changed, 821 insertions(+), 640 deletions(-) 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/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" From 9724243827a258045192651aa1b9e7e99a2529ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cristi=C3=A1n=20Maureira-Fredes?= Date: Sun, 15 Feb 2026 21:05:26 +0100 Subject: [PATCH 19/20] Mejorar script para encontrar diferencias de formato (#1783) Este script puede ser utilizaro en archivos, directorios, o en todo el proyecto (sin argumentos) La idea es encontrar inconsistencias en los archivos traducidos relacionados al formato de rst y sphinx. --- scripts/format_differences.py | 149 +++++++++++++++++++++++----------- 1 file changed, 102 insertions(+), 47 deletions(-) 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}") From 507e3375a87dcd76d657493632e354957818a503 Mon Sep 17 00:00:00 2001 From: "Carlos A. Crespo" Date: Wed, 25 Feb 2026 21:03:56 -0300 Subject: [PATCH 20/20] docs: update how to upgrade (#3435) Ya estamos listos para seguir este paso a paso espectacular y pasar a 3.14 :partying_face: --- .overrides/upgrade-python-version.rst | 28 +++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) 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)