From d18b12ef29fecd1908a6f1c1083022285e4c4c7e Mon Sep 17 00:00:00 2001 From: "Hector F. Jimenez" Date: Sat, 24 Oct 2020 17:17:49 -0500 Subject: [PATCH 01/18] Posix.po Translation for Review --- TRANSLATORS | 1 + library/posix.po | 64 +++++++++++++++++++++++++++++++++++++++++------- 2 files changed, 56 insertions(+), 9 deletions(-) diff --git a/TRANSLATORS b/TRANSLATORS index f674793d49..1fe395d70e 100644 --- a/TRANSLATORS +++ b/TRANSLATORS @@ -112,3 +112,4 @@ María Saiz Muñoz (@mariasm87) Sofia Carballo (@sofiacarballo) Alan Verdugo Muñoz (@alanverdugo) Alcides Rivarola (@alcides29) +Héctor Fabio Jimenez Saldarriaga (@h3ct0rjs) diff --git a/library/posix.po b/library/posix.po index 419aab2456..3cd549fcf7 100644 --- a/library/posix.po +++ b/library/posix.po @@ -6,23 +6,25 @@ # Check https://github.com/python/python-docs-es/blob/3.8/TRANSLATORS to # get the list of volunteers # -#, fuzzy msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-05-05 12:54+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-10-24 17:12-0500\n" "Language-Team: python-doc-es\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.8.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Last-Translator: \n" +"Language: es\n" +"X-Generator: Poedit 2.4.1\n" #: ../Doc/library/posix.rst:2 msgid ":mod:`posix` --- The most common POSIX system calls" -msgstr "" +msgstr ":mod:`posix` --- Las llamadas más comunes al sistema POSIX" #: ../Doc/library/posix.rst:10 msgid "" @@ -30,6 +32,9 @@ msgid "" "standardized by the C Standard and the POSIX standard (a thinly disguised " "Unix interface)." msgstr "" +"Este modulo provee acceso a funcionalidades del sistema operativo que están " +"estandarizados por el estándar C y el estándar POSIX (Una interfaz finamente " +"implementada)." #: ../Doc/library/posix.rst:16 msgid "" @@ -43,16 +48,29 @@ msgid "" "such as automatically calling :func:`~os.putenv` when an entry in ``os." "environ`` is changed." msgstr "" +"**No importe este modulo directamente.** En su lugar importe el modulo :mod:" +"`os`, el cual provee una versión *portable* de esta interfaz. En sistemas " +"operativos Unix, el modulo :mod:`os` provee un conjunto de la interfaz :mod:" +"`posix`. En sistemas operativos no Unix el modulo :mod:`posix` no esta " +"disponible, pero un subconjunto esta siempre disponible a través de la " +"interfaz del modulo :mod:`os`. Una vez importado el modulo :mod:`os`, *no* " +"hay perdida de desempeño en vez de utilizar el modulo :mod:`posix`. Además, " +"el modulo :mod:`os` proporciona algunas funcionalidades adicionales, tales " +"como el llamado automatico de :func:`~os.putenv` cuando una entrada en``os." +"environ`` es modificada." #: ../Doc/library/posix.rst:25 msgid "" "Errors are reported as exceptions; the usual exceptions are given for type " "errors, while errors reported by the system calls raise :exc:`OSError`." msgstr "" +"Los errores son notificados como excepciones; las excepción comunes son " +"proporcionadas por el tipo de errores, mientras que los errores notificados " +"por las llamadas al sistema generan :exc:`OSError`." #: ../Doc/library/posix.rst:32 msgid "Large File Support" -msgstr "" +msgstr "Soporte de archivos grandes" #: ../Doc/library/posix.rst:40 msgid "" @@ -62,6 +80,12 @@ msgid "" "accomplished by defining the relevant size and offset types as 64-bit " "values. Such files are sometimes referred to as :dfn:`large files`." msgstr "" +"Varios sistemas operativos(incluyendo AIX, HP-UX, Irix y Solaris) " +"proporcionan soporte para archivos superiores a 2GiB en un modelo de " +"programación C donde :c:type:`int` y :c:type:`long` son valores de 32-bits. " +"Esto se logra normalmente definiendo el tamaño relevante y los tipos de " +"desplazamientos como vlaores de 64bits. Tales archivos se conocen aveces " +"como :dfn:`large files`." #: ../Doc/library/posix.rst:46 msgid "" @@ -72,20 +96,28 @@ msgid "" "enabled by default with recent versions of Irix, but with Solaris 2.6 and " "2.7 you need to do something like::" msgstr "" +"La compatibilidad con archivos grandes esta habilitada en Python cuando el " +"tamaño de un :c:type:`off_t` is mayor que un :c:type:`long` y :c:type:`long " +"long` es al menos tan grande como un :c:type:`off_t`. Puede ser necesario " +"configurar y compilar Python con ciertos flags del compilador para habilitar " +"este modo. Por ejemplo, esta habilitado por defecto con las versiones de " +"Irix, pero con Solaris 2.6 y 2.7 debe hacer algo como::" #: ../Doc/library/posix.rst:56 msgid "On large-file-capable Linux systems, this might work::" -msgstr "" +msgstr "En sistemas Linux para archivos grandes, esto podría funcionar:" #: ../Doc/library/posix.rst:65 msgid "Notable Module Contents" -msgstr "" +msgstr "Contenidos notables del módulo" #: ../Doc/library/posix.rst:67 msgid "" "In addition to many functions described in the :mod:`os` module " "documentation, :mod:`posix` defines the following data item:" msgstr "" +"Además de muchas funciones descritas en la documentación del módulo :mod:" +"`os`, , :mod:`posix` define los siguientes elementos de datos:" #: ../Doc/library/posix.rst:72 msgid "" @@ -94,6 +126,10 @@ msgid "" "example, ``environ[b'HOME']`` (``environ['HOME']`` on Windows) is the " "pathname of your home directory, equivalent to ``getenv(\"HOME\")`` in C." msgstr "" +"A dictionary representing the string environment at the time the interpreter " +"was started. Keys and values are bytes on Unix and str on Windows. For " +"example, ``environ[b'HOME']`` (``environ['HOME']`` on Windows) is the " +"pathname of your home directory, equivalent to ``getenv(\"HOME\")`` in C." #: ../Doc/library/posix.rst:77 msgid "" @@ -103,10 +139,15 @@ msgid "" "variable assignments and export statements to the command string for :func:" "`~os.system` or :func:`~os.popen`." msgstr "" +"La modificación de este diccionario no afecta las variables de entorno en :" +"func:`~os.execv`, :func:`~os.popen` o :func:`~os.system`; si necesitas " +"cambiar el entorno, cambien ``environ`` to :func:`~os.execve` o agregue una " +"variable de asignación y exporte las sentencias y cadenas para :func:`~os." +"system` ó :func:`~os.popen`." #: ../Doc/library/posix.rst:83 msgid "On Unix, keys and values are bytes." -msgstr "" +msgstr "En Unix, las llaves y valores son bytes." #: ../Doc/library/posix.rst:88 msgid "" @@ -116,3 +157,8 @@ msgid "" "module version of this is recommended over direct access to the :mod:`posix` " "module." msgstr "" +"El módulo :mod:`os` proporciona una implementación de ``environ`` que " +"actualiza el entorno en cada modificación. Nótese que también actualizar :" +"data:`os.environ` hará que este diccionario sea obsoleto. El Use de la " +"versión del modulo :mod:`os` es recomendado en vez del acceso directo al " +"modulo :mod:`posix`." From 9f7889fdb7f825763583a8ae8b648b1156ce4a31 Mon Sep 17 00:00:00 2001 From: "Hector F. Jimenez" Date: Sun, 25 Oct 2020 12:18:05 -0500 Subject: [PATCH 02/18] Fix Posix.po with review --- dictionaries/library_posix.txt | 1 + library/posix.po | 59 +++++++++++++++++----------------- 2 files changed, 31 insertions(+), 29 deletions(-) create mode 100644 dictionaries/library_posix.txt diff --git a/dictionaries/library_posix.txt b/dictionaries/library_posix.txt new file mode 100644 index 0000000000..70d6fa96de --- /dev/null +++ b/dictionaries/library_posix.txt @@ -0,0 +1 @@ +Irix diff --git a/library/posix.po b/library/posix.po index 3cd549fcf7..24d0fcc4bd 100644 --- a/library/posix.po +++ b/library/posix.po @@ -11,7 +11,7 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-05-05 12:54+0200\n" -"PO-Revision-Date: 2020-10-24 17:12-0500\n" +"PO-Revision-Date: 2020-10-25 12:17-0500\n" "Language-Team: python-doc-es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -32,9 +32,9 @@ msgid "" "standardized by the C Standard and the POSIX standard (a thinly disguised " "Unix interface)." msgstr "" -"Este modulo provee acceso a funcionalidades del sistema operativo que están " -"estandarizados por el estándar C y el estándar POSIX (Una interfaz finamente " -"implementada)." +"Este módulo provee acceso a funcionalidades del sistema operativo que están " +"estandarizados por el estándar C y el estándar POSIX (Una interfaz Unix " +"finamente implementada)." #: ../Doc/library/posix.rst:16 msgid "" @@ -48,15 +48,15 @@ msgid "" "such as automatically calling :func:`~os.putenv` when an entry in ``os." "environ`` is changed." msgstr "" -"**No importe este modulo directamente.** En su lugar importe el modulo :mod:" +"**No importe este módulo directamente.** En su lugar importe el módulo :mod:" "`os`, el cual provee una versión *portable* de esta interfaz. En sistemas " -"operativos Unix, el modulo :mod:`os` provee un conjunto de la interfaz :mod:" -"`posix`. En sistemas operativos no Unix el modulo :mod:`posix` no esta " +"operativos Unix, el módulo :mod:`os` provee un conjunto de la interfaz :mod:" +"`posix`. En sistemas operativos no Unix el módulo :mod:`posix` no está " "disponible, pero un subconjunto esta siempre disponible a través de la " -"interfaz del modulo :mod:`os`. Una vez importado el modulo :mod:`os`, *no* " -"hay perdida de desempeño en vez de utilizar el modulo :mod:`posix`. Además, " -"el modulo :mod:`os` proporciona algunas funcionalidades adicionales, tales " -"como el llamado automatico de :func:`~os.putenv` cuando una entrada en``os." +"interfaz del módulo :mod:`os`. Una vez importado el módulo :mod:`os`, *No* " +"hay pérdida de desempeño en vez de utilizar el módulo :mod:`posix`. Además, " +"el módulo :mod:`os` proporciona algunas funcionalidades adicionales, tales " +"como el llamado automático de :func:`~os.putenv` cuando una entrada en``os." "environ`` es modificada." #: ../Doc/library/posix.rst:25 @@ -64,7 +64,7 @@ msgid "" "Errors are reported as exceptions; the usual exceptions are given for type " "errors, while errors reported by the system calls raise :exc:`OSError`." msgstr "" -"Los errores son notificados como excepciones; las excepción comunes son " +"Los errores son notificados como excepciones; las excepciones comunes son " "proporcionadas por el tipo de errores, mientras que los errores notificados " "por las llamadas al sistema generan :exc:`OSError`." @@ -84,7 +84,7 @@ msgstr "" "proporcionan soporte para archivos superiores a 2GiB en un modelo de " "programación C donde :c:type:`int` y :c:type:`long` son valores de 32-bits. " "Esto se logra normalmente definiendo el tamaño relevante y los tipos de " -"desplazamientos como vlaores de 64bits. Tales archivos se conocen aveces " +"desplazamientos como valores de 64bits. Tales archivos se conocen a veces " "como :dfn:`large files`." #: ../Doc/library/posix.rst:46 @@ -96,12 +96,12 @@ msgid "" "enabled by default with recent versions of Irix, but with Solaris 2.6 and " "2.7 you need to do something like::" msgstr "" -"La compatibilidad con archivos grandes esta habilitada en Python cuando el " -"tamaño de un :c:type:`off_t` is mayor que un :c:type:`long` y :c:type:`long " -"long` es al menos tan grande como un :c:type:`off_t`. Puede ser necesario " -"configurar y compilar Python con ciertos flags del compilador para habilitar " -"este modo. Por ejemplo, esta habilitado por defecto con las versiones de " -"Irix, pero con Solaris 2.6 y 2.7 debe hacer algo como::" +"La compatibilidad con archivos grandes está habilitada en Python cuando el " +"tamaño de un :c:type:`off_t` es mayor que un :c:type:`long` y un :c:type:" +"`long long` es al menos tan grande como un :c:type:`off_t`. Puede ser " +"necesario configurar y compilar Python con ciertos flags del compilador para " +"habilitar este modo. Por ejemplo, está habilitado por defecto con las " +"versiones de Irix, pero con Solaris 2.6 y 2.7 debe hacer algo como::" #: ../Doc/library/posix.rst:56 msgid "On large-file-capable Linux systems, this might work::" @@ -117,7 +117,7 @@ msgid "" "documentation, :mod:`posix` defines the following data item:" msgstr "" "Además de muchas funciones descritas en la documentación del módulo :mod:" -"`os`, , :mod:`posix` define los siguientes elementos de datos:" +"`os`, :mod:`posix` define los siguientes elementos de datos:" #: ../Doc/library/posix.rst:72 msgid "" @@ -126,10 +126,11 @@ msgid "" "example, ``environ[b'HOME']`` (``environ['HOME']`` on Windows) is the " "pathname of your home directory, equivalent to ``getenv(\"HOME\")`` in C." msgstr "" -"A dictionary representing the string environment at the time the interpreter " -"was started. Keys and values are bytes on Unix and str on Windows. For " -"example, ``environ[b'HOME']`` (``environ['HOME']`` on Windows) is the " -"pathname of your home directory, equivalent to ``getenv(\"HOME\")`` in C." +"Un diccionario que representa el entorno por una cadena en el momento en que " +"se inició el intérprete. Las llaves y valores son bytes en Unix y str en " +"Windows. Por ejemplo, `environ[b'HOME']`` (``environ['HOME']`` en Windows) " +"es el nombre de la ruta absoluta de acceso de su directorio principal, " +"equivalente a ``getenv(\"HOME\")`` en C." #: ../Doc/library/posix.rst:77 msgid "" @@ -141,9 +142,9 @@ msgid "" msgstr "" "La modificación de este diccionario no afecta las variables de entorno en :" "func:`~os.execv`, :func:`~os.popen` o :func:`~os.system`; si necesitas " -"cambiar el entorno, cambien ``environ`` to :func:`~os.execve` o agregue una " -"variable de asignación y exporte las sentencias y cadenas para :func:`~os." -"system` ó :func:`~os.popen`." +"cambiar el entorno, pase ``environ`` a la función :func:`~os.execve` o " +"agregue una variable de asignación y exporte las sentencias y cadenas para :" +"func:`~os.system` ó :func:`~os.popen`." #: ../Doc/library/posix.rst:83 msgid "On Unix, keys and values are bytes." @@ -160,5 +161,5 @@ msgstr "" "El módulo :mod:`os` proporciona una implementación de ``environ`` que " "actualiza el entorno en cada modificación. Nótese que también actualizar :" "data:`os.environ` hará que este diccionario sea obsoleto. El Use de la " -"versión del modulo :mod:`os` es recomendado en vez del acceso directo al " -"modulo :mod:`posix`." +"versión del módulo :mod:`os` es recomendado en vez del acceso directo al " +"módulo :mod:`posix`." From 111a15a27e58db8e9bbab84b8ab724cbddb9f570 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A9ctor=20F=2E=20Jim=C3=A9nez?= Date: Mon, 26 Oct 2020 20:10:27 -0500 Subject: [PATCH 03/18] Update posix.po --- library/posix.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/library/posix.po b/library/posix.po index 24d0fcc4bd..f44a7bfc9c 100644 --- a/library/posix.po +++ b/library/posix.po @@ -126,7 +126,7 @@ msgid "" "example, ``environ[b'HOME']`` (``environ['HOME']`` on Windows) is the " "pathname of your home directory, equivalent to ``getenv(\"HOME\")`` in C." msgstr "" -"Un diccionario que representa el entorno por una cadena en el momento en que " +"Un diccionario que representa el entorno por una cadena de caracteres en el momento en que " "se inició el intérprete. Las llaves y valores son bytes en Unix y str en " "Windows. Por ejemplo, `environ[b'HOME']`` (``environ['HOME']`` en Windows) " "es el nombre de la ruta absoluta de acceso de su directorio principal, " @@ -143,7 +143,7 @@ msgstr "" "La modificación de este diccionario no afecta las variables de entorno en :" "func:`~os.execv`, :func:`~os.popen` o :func:`~os.system`; si necesitas " "cambiar el entorno, pase ``environ`` a la función :func:`~os.execve` o " -"agregue una variable de asignación y exporte las sentencias y cadenas para :" +"agregue una variable de asignación y exporte las sentencias y cadenas de caracteres para :" "func:`~os.system` ó :func:`~os.popen`." #: ../Doc/library/posix.rst:83 From 54e3c099ecb6dd3c48dd859ea03afb8d1ec35274 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A9ctor=20F=2E=20Jim=C3=A9nez?= Date: Mon, 26 Oct 2020 20:14:12 -0500 Subject: [PATCH 04/18] Update posix.po mobile commit test --- library/posix.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/posix.po b/library/posix.po index f44a7bfc9c..8b715026ee 100644 --- a/library/posix.po +++ b/library/posix.po @@ -65,7 +65,7 @@ msgid "" "errors, while errors reported by the system calls raise :exc:`OSError`." msgstr "" "Los errores son notificados como excepciones; las excepciones comunes son " -"proporcionadas por el tipo de errores, mientras que los errores notificados " +"proporcionadas por errores de tipo, mientras que los errores notificados " "por las llamadas al sistema generan :exc:`OSError`." #: ../Doc/library/posix.rst:32 From efd996b4b005bdca577bc13f1e33c413f5f2b486 Mon Sep 17 00:00:00 2001 From: fjsevilla Date: Tue, 27 Oct 2020 11:45:38 +0100 Subject: [PATCH 05/18] =?UTF-8?q?Traducci=C3=B3n=20unittest.mock=20(#933)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dictionaries/library_unittest.mock.txt | 27 + library/unittest.mock.po | 1196 ++++++++++++++++++++++-- 2 files changed, 1138 insertions(+), 85 deletions(-) create mode 100644 dictionaries/library_unittest.mock.txt diff --git a/dictionaries/library_unittest.mock.txt b/dictionaries/library_unittest.mock.txt new file mode 100644 index 0000000000..04768a2701 --- /dev/null +++ b/dictionaries/library_unittest.mock.txt @@ -0,0 +1,27 @@ +adjuntarlos +Aserta +asertar +autospec +autoespecificación +Autoespecificación +backport +configurarlos +desparchear +django +introspeccionará +MagicMock +mock +parcheadores +Parcheadores +patch +Patch +preconfigurados +refactorizas +seal +Seal +settings +síncronas +sizeof +start +stop +stubs diff --git a/library/unittest.mock.po b/library/unittest.mock.po index db04d04cd8..522abced7a 100644 --- a/library/unittest.mock.po +++ b/library/unittest.mock.po @@ -6,27 +6,29 @@ # Check https://github.com/python/python-docs-es/blob/3.8/TRANSLATORS to # get the list of volunteers # -#, fuzzy msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-05-05 12:54+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-10-03 23:50+0200\n" "Language-Team: python-doc-es\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.8.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Last-Translator: Francisco Jesús Sevilla García \n" +"Language: es\n" +"X-Generator: Poedit 2.4.1\n" #: ../Doc/library/unittest.mock.rst:3 msgid ":mod:`unittest.mock` --- mock object library" -msgstr "" +msgstr ":mod:`unittest.mock` --- Biblioteca de objetos simulados" #: ../Doc/library/unittest.mock.rst:13 msgid "**Source code:** :source:`Lib/unittest/mock.py`" -msgstr "" +msgstr "**Source code:** :source:`Lib/unittest/mock.py`" #: ../Doc/library/unittest.mock.rst:17 msgid "" @@ -34,6 +36,9 @@ msgid "" "replace parts of your system under test with mock objects and make " "assertions about how they have been used." msgstr "" +":mod:`unittest.mock` es una biblioteca para pruebas de software en Python. " +"Te permite reemplazar partes del sistema bajo prueba con objetos simulados y " +"hacer aserciones sobre cómo se han utilizado." #: ../Doc/library/unittest.mock.rst:21 msgid "" @@ -43,6 +48,12 @@ msgid "" "and arguments they were called with. You can also specify return values and " "set needed attributes in the normal way." msgstr "" +"El módulo :mod:`unittest.mock` proporciona una clase principal :class:`Mock` " +"eliminando la necesidad de crear una gran cantidad de stubs en todo el " +"conjunto de pruebas. Después de realizar una determinada acción, puedes " +"hacer aserciones sobre qué métodos/atributos se usaron y los argumentos con " +"los que se llamaron. También puedes especificar valores de retorno y " +"establecer los atributos necesarios de la forma habitual." #: ../Doc/library/unittest.mock.rst:27 msgid "" @@ -52,6 +63,11 @@ msgid "" "some examples of how to use :class:`Mock`, :class:`MagicMock` and :func:" "`patch`." msgstr "" +"Además, mock proporciona un decorador :func:`patch` que puede manejar el " +"parcheo de atributos a nivel de clase y de módulo dentro del ámbito de una " +"prueba, junto con :const:`sentinel` para crear objetos únicos. Consulta " +"`quick guide`_ para ver algunos ejemplos de cómo utilizar :class:`Mock`, :" +"class:`MagicMock` y :func:`patch`." #: ../Doc/library/unittest.mock.rst:33 msgid "" @@ -59,16 +75,22 @@ msgid "" "is based on the 'action -> assertion' pattern instead of 'record -> replay' " "used by many mocking frameworks." msgstr "" +"Mock es muy fácil de usar y está diseñado para ser utilizado junto a :mod:" +"`unittest`. Mock se basa en el patrón 'acción -> aserción' en lugar de usar " +"el patrón 'grabación -> reproducción' utilizado por muchos frameworks de " +"simulación." #: ../Doc/library/unittest.mock.rst:37 msgid "" "There is a backport of :mod:`unittest.mock` for earlier versions of Python, " "available as `mock on PyPI `_." msgstr "" +"Hay un backport del módulo :mod:`unittest.mock` para versiones anteriores de " +"Python `disponible en PyPI `_." #: ../Doc/library/unittest.mock.rst:42 msgid "Quick Guide" -msgstr "" +msgstr "Guía rápida" #: ../Doc/library/unittest.mock.rst:60 msgid "" @@ -77,12 +99,19 @@ msgid "" "can configure them, to specify return values or limit what attributes are " "available, and then make assertions about how they have been used:" msgstr "" +"Los objetos de las clases :class:`Mock` y :class:`MagicMock` van creando " +"todos los atributos y métodos a medida que se accede a ellos y almacenan " +"detalles de cómo se han utilizado. Puedes configurarlos para especificar " +"valores de retorno o limitar qué atributos están disponibles y " +"posteriormente hacer aserciones sobre cómo han sido utilizados:" #: ../Doc/library/unittest.mock.rst:72 msgid "" ":attr:`side_effect` allows you to perform side effects, including raising an " "exception when a mock is called:" msgstr "" +":attr:`side_effect` te permite implementar efectos colaterales, lo que " +"incluye lanzar una excepción cuando se llama a un objeto simulado:" #: ../Doc/library/unittest.mock.rst:92 msgid "" @@ -91,6 +120,11 @@ msgid "" "from another object. Attempting to access attributes or methods on the mock " "that don't exist on the spec will fail with an :exc:`AttributeError`." msgstr "" +"Existen muchas otras formas de configurar y controlar el comportamiento de " +"Mock. Por ejemplo, el argumento *spec* configura el objeto simulado para que " +"tome su especificación de otro objeto. Cualquier intento de acceder a " +"atributos o métodos en el objeto simulado que no existan en la " +"especificación fallará lanzando una excepción :exc:`AttributeError`." #: ../Doc/library/unittest.mock.rst:97 msgid "" @@ -99,6 +133,10 @@ msgid "" "with a mock (or other object) during the test and restored when the test " "ends::" msgstr "" +"El decorador / gestor de contexto :func:`patch` facilita la simulación de " +"clases u objetos en un módulo bajo prueba. El objeto que especifiques será " +"reemplazado por un objeto simulado (u otro objeto) durante la prueba y será " +"restaurado cuando esta finalice:" #: ../Doc/library/unittest.mock.rst:116 msgid "" @@ -107,6 +145,11 @@ msgid "" "decorators are applied). This means from the bottom up, so in the example " "above the mock for ``module.ClassName1`` is passed in first." msgstr "" +"Cuando anidas decoradores patch, los objetos simulados se pasan a la función " +"decorada en el mismo orden en el que fueron aplicados (el orden normal en el " +"que se aplican los decoradores en *Python*). Esto significa de abajo hacia " +"arriba, por lo que en el ejemplo anterior se pasa primero el objeto simulado " +"para ``module.ClassName1``." #: ../Doc/library/unittest.mock.rst:121 msgid "" @@ -114,12 +157,17 @@ msgid "" "they are looked up. This is normally straightforward, but for a quick guide " "read :ref:`where to patch `." msgstr "" +"Al usar :func:`patch` es importante que parchees los objetos en el espacio " +"de nombres donde son buscados. Esto normalmente es sencillo, pero para una " +"guía rápida, lee :ref:`dónde parchear `." #: ../Doc/library/unittest.mock.rst:125 msgid "" "As well as a decorator :func:`patch` can be used as a context manager in a " "with statement:" msgstr "" +"Además de decorador, la función :func:`patch` se puede usar como gestor de " +"contexto en una declaración with:" #: ../Doc/library/unittest.mock.rst:135 msgid "" @@ -127,6 +175,9 @@ msgid "" "during a scope and restoring the dictionary to its original state when the " "test ends:" msgstr "" +"También existe la función :func:`patch.dict` que permite establecer valores " +"en un diccionario dentro de un ámbito y restaurar el diccionario a su estado " +"original cuando finaliza la prueba:" #: ../Doc/library/unittest.mock.rst:146 msgid "" @@ -134,6 +185,9 @@ msgid "" "The easiest way of using magic methods is with the :class:`MagicMock` class. " "It allows you to do things like:" msgstr "" +"Mock admite la simulación de los :ref:`métodos mágicos ` de " +"Python. La forma más sencilla de utilizar métodos mágicos es mediante la " +"clase :class:`MagicMock`. Te permite hacer cosas como:" #: ../Doc/library/unittest.mock.rst:156 msgid "" @@ -142,12 +196,19 @@ msgid "" "is just a Mock variant that has all of the magic methods pre-created for you " "(well, all the useful ones anyway)." msgstr "" +"Mock también permite asignar funciones (u otras instancias de Mock) a " +"métodos mágicos y se asegura de que serán llamadas de forma apropiada. La " +"clase :class:`MagicMock` es solo una variante de Mock con la diferencia de " +"que tiene todos los métodos mágicos previamente creados para ti (bueno, " +"todos los que son útiles)." #: ../Doc/library/unittest.mock.rst:161 msgid "" "The following is an example of using magic methods with the ordinary Mock " "class:" msgstr "" +"El siguiente es un ejemplo de uso de métodos mágicos utilizando la clase " +"Mock ordinaria:" #: ../Doc/library/unittest.mock.rst:169 msgid "" @@ -159,12 +220,22 @@ msgid "" "replacing, and any functions and methods (including constructors) have the " "same call signature as the real object." msgstr "" +"Para asegurarte de que los objetos simulados en tus pruebas tienen " +"exactamente la misma API que los objetos que están reemplazando, puedes " +"usar :ref:`autoespecificación `. La autoespecificación se " +"puede realizar a través del argumento *autospec* de patch, o mediante la " +"función :func:`create_autospec`. La autoespecificación crea objetos " +"simulados que tienen los mismos atributos y métodos que los objetos que " +"están reemplazando, y todas las función y métodos (incluidos los " +"constructores) tienen la misma firma de llamada que los objetos reales." #: ../Doc/library/unittest.mock.rst:177 msgid "" "This ensures that your mocks will fail in the same way as your production " "code if they are used incorrectly:" msgstr "" +"Esto asegura que tus simulaciones fallarán, si se utilizan incorrectamente, " +"de la misma manera que lo haría tu código en producción:" #: ../Doc/library/unittest.mock.rst:193 msgid "" @@ -172,10 +243,13 @@ msgid "" "signature of the ``__init__`` method, and on callable objects where it " "copies the signature of the ``__call__`` method." msgstr "" +":func:`create_autospec` también se puede usar en clases, donde copia la " +"firma del método ``__init__``, y en objetos invocables, donde copia la firma " +"del método ``__call__``." #: ../Doc/library/unittest.mock.rst:200 msgid "The Mock Class" -msgstr "" +msgstr "La clase Mock" #: ../Doc/library/unittest.mock.rst:211 msgid "" @@ -185,6 +259,12 @@ msgid "" "attribute will always return the same mock. Mocks record how you use them, " "allowing you to make assertions about what your code has done to them." msgstr "" +":class:`Mock` es un objeto simulado flexible, destinado a reemplazar el uso " +"de stubs y dobles de prueba en todo tu código. Los objetos Mock son " +"invocables y crean atributos en el mismo momento que se accede a ellos como " +"nuevos objetos Mock [#]_. Acceder al mismo atributo siempre retornará el " +"mismo objeto Mock. Además, registran cómo los usas, lo que te permite hacer " +"aserciones sobre cómo tu código ha interaccionado con ellos." #: ../Doc/library/unittest.mock.rst:217 msgid "" @@ -193,6 +273,10 @@ msgid "" "when you are mocking out objects that aren't callable: :class:" "`NonCallableMock` and :class:`NonCallableMagicMock`" msgstr "" +":class:`MagicMock` es una subclase de :class:`Mock` con todos los métodos " +"mágicos creados previamente y listos para ser usados. También hay variantes " +"no invocables, útiles cuando se están simulando objetos que no se pueden " +"llamar: :class:`NonCallableMock` y :class:`NonCallableMagicMock`" #: ../Doc/library/unittest.mock.rst:222 msgid "" @@ -201,12 +285,19 @@ msgid "" "will create a :class:`MagicMock` for you. You can specify an alternative " "class of :class:`Mock` using the *new_callable* argument to :func:`patch`." msgstr "" +"Los decoradores :func:`patch` facilitan la sustitución temporal de clases en " +"un módulo en particular con un objeto :class:`Mock`. Por defecto, :func:" +"`patch` creará un objeto :class:`MagicMock` automáticamente. Se puede " +"especificar una clase alternativa a :class:`Mock` usando el argumento " +"*new_callable* de :func:`patch`." #: ../Doc/library/unittest.mock.rst:230 msgid "" "Create a new :class:`Mock` object. :class:`Mock` takes several optional " "arguments that specify the behaviour of the Mock object:" msgstr "" +"Crea un nuevo objeto :class:`Mock`. :class:`Mock` toma varios argumentos " +"opcionales que especifican el comportamiento del objeto Mock:" #: ../Doc/library/unittest.mock.rst:233 msgid "" @@ -216,6 +307,12 @@ msgid "" "(excluding unsupported magic attributes and methods). Accessing any " "attribute not in this list will raise an :exc:`AttributeError`." msgstr "" +"*spec*: Puede ser una lista de cadenas de caracteres o un objeto existente " +"previamente (una clase o una instancia) que actúa como la especificación del " +"objeto simulado. Si pasas un objeto, se forma una lista de cadenas llamando " +"a la función *dir* en el objeto (excluyendo los métodos y atributos mágicos " +"no admitidos). Acceder a cualquier atributo que no esté en esta lista " +"generará una excepción :exc:`AttributeError`." #: ../Doc/library/unittest.mock.rst:239 msgid "" @@ -223,6 +320,9 @@ msgid "" "__class__` returns the class of the spec object. This allows mocks to pass :" "func:`isinstance` tests." msgstr "" +"Si *spec* es un objeto (en lugar de una lista de cadenas de caracteres), :" +"attr:`~instance.__class__` retorna la clase del objeto especificado. Esto " +"permite que los objetos simulados pasen las pruebas de :func:`isinstance`." #: ../Doc/library/unittest.mock.rst:243 msgid "" @@ -230,6 +330,10 @@ msgid "" "get an attribute on the mock that isn't on the object passed as *spec_set* " "will raise an :exc:`AttributeError`." msgstr "" +"*spec_set*: Una variante más estricta de *spec*. Si se utiliza, cualquier " +"intento de *establecer* u obtener un atributo del objeto simulado que no " +"esté en el objeto pasado como *spec_set* lanzará una excepción :exc:" +"`AttributeError`." #: ../Doc/library/unittest.mock.rst:247 msgid "" @@ -239,22 +343,32 @@ msgid "" "arguments as the mock, and unless it returns :data:`DEFAULT`, the return " "value of this function is used as the return value." msgstr "" +"*side_effect*: Una función que se llamará cada vez que el objeto simulado " +"sea invocado. Consultar el atributo :attr:`~Mock.side_effect` para más " +"información. Es útil para lanzar excepciones o para cambiar dinámicamente " +"valores de retorno. La función se llama con los mismos argumentos que el " +"objeto simulado, y a menos que retorne :data:`DEFAULT`, su valor de retorno " +"se utiliza como valor de retorno del propio objeto simulado." #: ../Doc/library/unittest.mock.rst:253 msgid "" "Alternatively *side_effect* can be an exception class or instance. In this " "case the exception will be raised when the mock is called." msgstr "" +"Alternativamente *side_effect* puede ser una clase o instancia de excepción. " +"En este caso, se lanza la excepción cuando se llama al objeto simulado." #: ../Doc/library/unittest.mock.rst:256 msgid "" "If *side_effect* is an iterable then each call to the mock will return the " "next value from the iterable." msgstr "" +"Si *side_effect* es un iterable, cada llamada al objeto simulado retornará " +"el siguiente valor del iterable." #: ../Doc/library/unittest.mock.rst:259 msgid "A *side_effect* can be cleared by setting it to ``None``." -msgstr "" +msgstr "Un *side_effect* se puede desactivar estableciéndolo en ``None``." #: ../Doc/library/unittest.mock.rst:261 msgid "" @@ -262,6 +376,9 @@ msgid "" "is a new Mock (created on first access). See the :attr:`return_value` " "attribute." msgstr "" +"*return_value*: El valor retornado cuando se llama al objeto simulado. Por " +"defecto, este es una nueva instancia de la clase Mock (creada en el primer " +"acceso). Consultar el atributo :attr:`return_value` para más detalles." #: ../Doc/library/unittest.mock.rst:265 msgid "" @@ -269,6 +386,10 @@ msgid "" "raise an :exc:`AttributeError`. Passing ``unsafe=True`` will allow access to " "these attributes." msgstr "" +"*unsafe*: Por defecto, si cualquier atributo comienza con *assert* o " +"*assret* y se intenta acceder a él, se lanza una excepción :exc:" +"`AttributeError`. Pasar ``unsafe=True`` permitirá el acceso a estos " +"atributos." #: ../Doc/library/unittest.mock.rst:271 msgid "" @@ -279,18 +400,30 @@ msgid "" "to access an attribute that doesn't exist will raise an :exc:" "`AttributeError`)." msgstr "" +"*wraps*: objeto a envolver (simular) por la instancia de Mock. Si *wraps* no " +"es ``None``, al llamar al objeto Mock se pasa la llamada a través del objeto " +"envuelto (retornando el resultado real). Acceder a un atributo del objeto " +"simulado retornará otro objeto Mock que envuelve al atributo correspondiente " +"del objeto real envuelto (de modo que intentar acceder a un atributo que no " +"existe lanzará una excepción :exc:`AttributeError`)." #: ../Doc/library/unittest.mock.rst:278 msgid "" "If the mock has an explicit *return_value* set then calls are not passed to " "the wrapped object and the *return_value* is returned instead." msgstr "" +"Si el objeto simulado tiene un *return_value* explícito establecido, las " +"llamadas no se pasan al objeto envuelto y *return_value* se retorna en su " +"lugar." #: ../Doc/library/unittest.mock.rst:281 msgid "" "*name*: If the mock has a name then it will be used in the repr of the mock. " "This can be useful for debugging. The name is propagated to child mocks." msgstr "" +"*name*: Si el objeto simulado tiene un nombre, será utilizado en la " +"representación imprimible del mismo. Esto puede ser útil para la depuración. " +"El nombre se propaga a los objetos simulados hijos." #: ../Doc/library/unittest.mock.rst:285 msgid "" @@ -298,30 +431,39 @@ msgid "" "used to set attributes on the mock after it is created. See the :meth:" "`configure_mock` method for details." msgstr "" +"Los objetos simulados también pueden ser invocados con argumentos por " +"palabra clave arbitrarios. Estos serán utilizados para establecer atributos " +"en el objeto simulado una vez creado. Consultar el método :meth:" +"`configure_mock` para más detalles." #: ../Doc/library/unittest.mock.rst:291 msgid "Assert that the mock was called at least once." -msgstr "" +msgstr "Aserta si el objeto simulado se ha invocado al menos una vez." #: ../Doc/library/unittest.mock.rst:302 msgid "Assert that the mock was called exactly once." -msgstr "" +msgstr "Aserta si el objeto simulado se ha invocado exactamente una vez." #: ../Doc/library/unittest.mock.rst:320 msgid "" "This method is a convenient way of asserting that the last call has been " "made in a particular way:" msgstr "" +"Este método es una manera apropiada de asertar si la última llamada se ha " +"realizado de una manera particular:" #: ../Doc/library/unittest.mock.rst:330 msgid "" "Assert that the mock was called exactly once and that that call was with the " "specified arguments." msgstr "" +"Aserta si el objeto simulado se ha invocado exactamente una vez y si esa " +"llamada se realizó con los argumentos especificados." #: ../Doc/library/unittest.mock.rst:345 msgid "assert the mock has been called with the specified arguments." msgstr "" +"Aserta si el objeto simulado se ha invocado con los argumentos especificados." #: ../Doc/library/unittest.mock.rst:347 msgid "" @@ -330,36 +472,51 @@ msgid "" "the call is the most recent one, and in the case of :meth:" "`assert_called_once_with` it must also be the only call." msgstr "" +"La aserción pasa si el objeto simulado se ha invocado *en algún momento*, a " +"diferencia de :meth:`assert_called_with` y :meth:`assert_called_once_with`, " +"con los que sólo pasa la aserción si la llamada es la más reciente, y en el " +"caso de :meth:`assert_called_once_with` también debe ser la única llamada " +"realizada." #: ../Doc/library/unittest.mock.rst:360 msgid "" "assert the mock has been called with the specified calls. The :attr:" "`mock_calls` list is checked for the calls." msgstr "" +"Aserta si el objeto simulado se ha invocado con las llamadas especificadas. " +"La lista :attr:`mock_calls` se compara con la lista de llamadas." #: ../Doc/library/unittest.mock.rst:363 msgid "" "If *any_order* is false then the calls must be sequential. There can be " "extra calls before or after the specified calls." msgstr "" +"Si *any_order* es falso entonces las llamadas deben ser secuenciales. No " +"puede haber llamadas adicionales antes o después de las llamadas " +"especificadas." #: ../Doc/library/unittest.mock.rst:367 msgid "" "If *any_order* is true then the calls can be in any order, but they must all " "appear in :attr:`mock_calls`." msgstr "" +"Si *any_order* es verdadero, las llamadas pueden estar en cualquier orden, " +"pero deben aparecer todas en :attr:`mock_calls`." #: ../Doc/library/unittest.mock.rst:382 msgid "Assert the mock was never called." -msgstr "" +msgstr "Aserta si el objeto simulado nunca fue invocado." #: ../Doc/library/unittest.mock.rst:397 msgid "The reset_mock method resets all the call attributes on a mock object:" msgstr "" +"El método *reset_mock* restablece todos los atributos de llamada en un " +"objeto simulado:" #: ../Doc/library/unittest.mock.rst:407 msgid "Added two keyword only argument to the reset_mock function." msgstr "" +"Se añadieron dos argumentos por palabra clave a la función *reset_mock*." #: ../Doc/library/unittest.mock.rst:410 msgid "" @@ -370,20 +527,35 @@ msgid "" "`side_effect`, then pass the corresponding parameter as ``True``. Child " "mocks and the return value mock (if any) are reset as well." msgstr "" +"Esto puede ser útil cuando se quiere hacer una serie de aserciones que " +"reutilizan el mismo objeto. Ten en cuenta que por defecto :meth:`reset_mock` " +"*no* borra el valor de retorno, :attr:`side_effect`, ni cualquier atributo " +"hijo que hayas establecido mediante asignación normal. En caso de que " +"quieras restablecer *return_value* o :attr:`side_effect`, debes pasar el " +"parámetro correspondiente como ``True``. Los objetos simulados hijos y el " +"objeto simulado que conforma el valor de retorno (si los hay) se restablecen " +"también." #: ../Doc/library/unittest.mock.rst:418 msgid "*return_value*, and :attr:`side_effect` are keyword only argument." msgstr "" +"*return_value* y :attr:`side_effect` son argumentos por palabra clave " +"exclusivamente." #: ../Doc/library/unittest.mock.rst:424 msgid "" "Add a spec to a mock. *spec* can either be an object or a list of strings. " "Only attributes on the *spec* can be fetched as attributes from the mock." msgstr "" +"Agrega una especificación a un objeto simulado. *spec* puede ser un objeto o " +"una lista de cadenas de caracteres. Sólo los atributos presentes en *spec* " +"pueden ser obtenidos desde el objeto simulado." #: ../Doc/library/unittest.mock.rst:428 msgid "If *spec_set* is true then only attributes on the spec can be set." msgstr "" +"Si *spec_set* es verdadero, solo los atributos de la especificación pueden " +"ser establecidos." #: ../Doc/library/unittest.mock.rst:433 msgid "" @@ -391,26 +563,39 @@ msgid "" "Calls to the attached mock will be recorded in the :attr:`method_calls` and :" "attr:`mock_calls` attributes of this one." msgstr "" +"Adjunta otro objeto simulado como un atributo de la instancia actual, " +"substituyendo su nombre y su padre. Las llamadas al objeto simulado " +"adjuntado se registrarán en los atributos :attr:`method_calls` y :attr:" +"`mock_calls` del padre." #: ../Doc/library/unittest.mock.rst:440 msgid "Set attributes on the mock through keyword arguments." msgstr "" +"Establece los atributos del objeto simulado por medio de argumentos por " +"palabra clave." #: ../Doc/library/unittest.mock.rst:442 msgid "" "Attributes plus return values and side effects can be set on child mocks " "using standard dot notation and unpacking a dictionary in the method call:" msgstr "" +"Los atributos, los valores de retorno y los efectos de colaterales se pueden " +"configurar en los objetos simulados hijos usando la notación de punto " +"estándar y desempaquetando un diccionario en la llamada al método:" #: ../Doc/library/unittest.mock.rst:456 msgid "The same thing can be achieved in the constructor call to mocks:" msgstr "" +"Lo mismo se puede lograr en la llamada al constructor de los objetos " +"simulados:" #: ../Doc/library/unittest.mock.rst:469 msgid "" ":meth:`configure_mock` exists to make it easier to do configuration after " "the mock has been created." msgstr "" +":meth:`configure_mock` existe con el fin de facilitar la configuración " +"después de que el objeto simulado haya sido creado." #: ../Doc/library/unittest.mock.rst:475 msgid "" @@ -418,12 +603,17 @@ msgid "" "results. For mocks with a *spec* this includes all the permitted attributes " "for the mock." msgstr "" +"Los objetos :class:`Mock` limitan los resultados de ``dir(some_mock)`` a " +"resultados útiles. Para los objetos simulados con una especificación " +"(*spec*), esto incluye todos los atributos permitidos para el mismo." #: ../Doc/library/unittest.mock.rst:479 msgid "" "See :data:`FILTER_DIR` for what this filtering does, and how to switch it " "off." msgstr "" +"Consultar :data:`FILTER_DIR` para conocer que hace este filtrado y la forma " +"de desactivarlo." #: ../Doc/library/unittest.mock.rst:485 msgid "" @@ -431,40 +621,56 @@ msgid "" "mocks will be the same type as the parent. Subclasses of Mock may want to " "override this to customize the way child mocks are made." msgstr "" +"Crea los objetos simulados hijos para los atributos y el valor de retorno. " +"Por defecto los objetos simulados hijos serán del mismo tipo que el padre. " +"Las subclases de Mock pueden redefinir este método para personalizar la " +"forma en la que se construye el objeto simulado hijo." #: ../Doc/library/unittest.mock.rst:490 msgid "" "For non-callable mocks the callable variant will be used (rather than any " "custom subclass)." msgstr "" +"Para objetos simulados no invocables la variante invocable será utilizada " +"(en lugar de cualquier subclase personalizada)." #: ../Doc/library/unittest.mock.rst:496 msgid "A boolean representing whether or not the mock object has been called:" msgstr "" +"Un booleano que representa si el objeto simulado ha sido invocado o no:" #: ../Doc/library/unittest.mock.rst:507 msgid "An integer telling you how many times the mock object has been called:" msgstr "" +"Un entero que le indica cuántas veces el objeto simulado ha sido invocado:" #: ../Doc/library/unittest.mock.rst:519 msgid "Set this to configure the value returned by calling the mock:" msgstr "" +"Establece este atributo para configurar el valor a retornar cuando se llama " +"al objeto simulado:" #: ../Doc/library/unittest.mock.rst:526 msgid "" "The default return value is a mock object and you can configure it in the " "normal way:" msgstr "" +"El valor de retorno por defecto es otro objeto simulado y se puede " +"configurar de forma habitual:" #: ../Doc/library/unittest.mock.rst:535 msgid ":attr:`return_value` can also be set in the constructor:" msgstr "" +":attr:`return_value` también se puede establecer directamente en el " +"constructor:" #: ../Doc/library/unittest.mock.rst:546 msgid "" "This can either be a function to be called when the mock is called, an " "iterable or an exception (class or instance) to be raised." msgstr "" +"Este atributo puede ser una función a ser llamada cuando se llame al objeto " +"simulado, un iterable o una excepción (clase o instancia) para ser lanzada." #: ../Doc/library/unittest.mock.rst:549 msgid "" @@ -474,6 +680,11 @@ msgid "" "returns :data:`DEFAULT` then the mock will return its normal value (from " "the :attr:`return_value`)." msgstr "" +"Si pasas una función, será llamada con los mismos argumentos que el objeto " +"simulado y, a menos que la función retorne el singleton :data:`DEFAULT`, la " +"llamada al objeto simulado retornará lo mismo que retorna la función. En " +"cambio, si la función retorna :data:`DEFAULT`, entonces el objeto simulado " +"retornará su valor normal (el del atributo :attr:`return_value`)." #: ../Doc/library/unittest.mock.rst:555 msgid "" @@ -482,30 +693,39 @@ msgid "" "to be raised, or a value to be returned from the call to the mock (:data:" "`DEFAULT` handling is identical to the function case)." msgstr "" +"Si pasas un iterable, se utiliza para obtener un iterador a partir del mismo " +"que debe producir un valor en cada llamada. Este valor puede ser una " +"instancia de la excepción a ser lanzada o un valor a retornar al llamar al " +"objeto simulado (el manejo de :data:`DEFAULT` es igual que en el caso en el " +"que se pasa una función)." #: ../Doc/library/unittest.mock.rst:560 msgid "" "An example of a mock that raises an exception (to test exception handling of " "an API):" msgstr "" +"Un ejemplo de un objeto simulado que genera una excepción (para probar el " +"manejo de excepciones de una API):" #: ../Doc/library/unittest.mock.rst:570 msgid "Using :attr:`side_effect` to return a sequence of values:" -msgstr "" +msgstr "Usando :attr:`side_effect` para retornar una secuencia de valores:" #: ../Doc/library/unittest.mock.rst:577 msgid "Using a callable:" -msgstr "" +msgstr "Usando un objeto invocable:" #: ../Doc/library/unittest.mock.rst:587 msgid "" ":attr:`side_effect` can be set in the constructor. Here's an example that " "adds one to the value the mock is called with and returns it:" msgstr "" +":attr:`side_effect` se puede establecer en el constructor. Aquí hay un " +"ejemplo que suma uno al valor del objeto simulado invocado y lo retorna:" #: ../Doc/library/unittest.mock.rst:597 msgid "Setting :attr:`side_effect` to ``None`` clears it:" -msgstr "" +msgstr "Establecer :attr:`side_effect` en ``None`` lo desactiva:" #: ../Doc/library/unittest.mock.rst:611 msgid "" @@ -516,6 +736,14 @@ msgid "" "second member, which can also be accessed through the ``kwargs`` property, " "is any keyword arguments (or an empty dictionary)." msgstr "" +"Este atributo es ``None`` (si el objeto simulado no ha sido invocado) o los " +"argumentos con los que se llamó por última vez. En este último caso, será " +"una tupla con dos elementos: el primer miembro, que también es accesible a " +"través de la propiedad ``args``, son los argumentos posicionales con los que " +"el objeto simulado se llamó (o una tupla vacía si no se pasó ninguno) y el " +"segundo miembro, que también es accesible mediante la propiedad ``kwargs``, " +"son los argumento por palabra clave pasados (o un diccionario vacío si no se " +"pasó ninguno)." #: ../Doc/library/unittest.mock.rst:644 msgid "" @@ -524,6 +752,12 @@ msgid "" "are tuples, so they can be unpacked to get at the individual arguments and " "make more complex assertions. See :ref:`calls as tuples `." msgstr "" +"El atributo :attr:`call_args`, junto con los miembros de las listas :attr:" +"`call_args_list`, :attr:`method_calls` y :attr:`mock_calls` son objetos :" +"data:`call`. Estos objetos son tuplas, con la finalidad de que puedan ser " +"desempaquetadas para acceder a los argumentos individuales y hacer " +"aserciones más complejas. Consultar :ref:`objetos call como tuplas ` para más información." #: ../Doc/library/unittest.mock.rst:653 msgid "" @@ -533,6 +767,12 @@ msgid "" "used for conveniently constructing lists of calls to compare with :attr:" "`call_args_list`." msgstr "" +"Este argumento es una lista de todas las llamadas consecutivas realizadas al " +"objeto simulado (por lo que la longitud de la lista es el número de veces " +"que se ha invocado). Previamente a que se hayan realizado llamadas es una " +"lista vacía. El objeto :data:`call` se puede utilizar para construir " +"convenientemente las listas de llamadas a comparar con :attr:" +"`call_args_list`." #: ../Doc/library/unittest.mock.rst:669 msgid "" @@ -540,12 +780,19 @@ msgid "" "unpacked as tuples to get at the individual arguments. See :ref:`calls as " "tuples `." msgstr "" +"Los miembros de :attr:`call_args_list` son objetos :data:`call`. Estos " +"pueden ser desempaquetados como tuplas para acceder a los argumentos " +"individuales. Consultar :ref:`objetos call como tuplas ` " +"para más información." #: ../Doc/library/unittest.mock.rst:676 msgid "" "As well as tracking calls to themselves, mocks also track calls to methods " "and attributes, and *their* methods and attributes:" msgstr "" +"Igual que realizan un seguimiento de las llamadas hechas a sí mismos, los " +"objetos simulados también realizan un seguimiento a *sus* métodos y " +"atributos, así como de las llamadas hechas a los mismos:" #: ../Doc/library/unittest.mock.rst:687 msgid "" @@ -553,12 +800,18 @@ msgid "" "unpacked as tuples to get at the individual arguments. See :ref:`calls as " "tuples `." msgstr "" +"Los miembros de :attr:`method_calls` son objetos :data:`call`. Estos pueden " +"ser desempaquetados como tuplas para acceder a los atributos individuales. " +"Consultar :ref:`objetos call como tuplas ` para más " +"información." #: ../Doc/library/unittest.mock.rst:694 msgid "" ":attr:`mock_calls` records *all* calls to the mock object, its methods, " "magic methods *and* return value mocks." msgstr "" +":attr:`mock_calls` registra *todas* las llamadas al objeto simulado, sus " +"métodos, métodos mágicos *y* objetos simulados del valor de retorno." #: ../Doc/library/unittest.mock.rst:712 msgid "" @@ -566,6 +819,10 @@ msgid "" "unpacked as tuples to get at the individual arguments. See :ref:`calls as " "tuples `." msgstr "" +"Los miembros de :attr:`mock_calls` son objetos :data:`call`. Estos pueden " +"ser desempaquetados como tuplas para acceder a los argumentos individuales. " +"Consultar :ref:`objetos call como tuplas ` para más " +"información." #: ../Doc/library/unittest.mock.rst:718 msgid "" @@ -573,6 +830,9 @@ msgid "" "made, the parameters of ancestor calls are not recorded and so will always " "compare equal:" msgstr "" +"La forma como se registra el atributo :attr:`mock_calls` implica que cuando " +"se realizan llamadas anidadas, los parámetros de las llamadas previas no se " +"registran, por lo que siempre resultan iguales al comparar:" #: ../Doc/library/unittest.mock.rst:732 msgid "" @@ -581,12 +841,20 @@ msgid "" "instead. This allows mock objects to pass :func:`isinstance` tests for the " "object they are replacing / masquerading as:" msgstr "" +"Normalmente, el atributo de un objeto :attr:`__class__` retornará su tipo. " +"Para un objeto simulado con un :attr:`spec`, ``__class__`` retorna la clase " +"especificada en su lugar. Esto permite a los objetos simulados pasar los " +"test de :func:`isinstance` para el objeto que están reemplazando / " +"enmascarando:" #: ../Doc/library/unittest.mock.rst:741 msgid "" ":attr:`__class__` is assignable to, this allows a mock to pass an :func:" "`isinstance` check without forcing you to use a spec:" msgstr "" +"El atributo :attr:`__class__` es asignable, esto permite al objeto simulado " +"pasar una verificación de :func:`isinstance` sin verse forzado a utilizar " +"una especificación:" #: ../Doc/library/unittest.mock.rst:751 msgid "" @@ -594,18 +862,27 @@ msgid "" "same meaning of :class:`Mock`, with the exception of *return_value* and " "*side_effect* which have no meaning on a non-callable mock." msgstr "" +"Una versión no invocable de :class:`Mock`. Los parámetros del constructor " +"tienen el mismo significado que en :class:`Mock`, con la excepción de " +"*return_value* y *side_effect* que no tienen sentido en un objeto simulado " +"no invocable." #: ../Doc/library/unittest.mock.rst:755 msgid "" "Mock objects that use a class or an instance as a :attr:`spec` or :attr:" "`spec_set` are able to pass :func:`isinstance` tests:" msgstr "" +"Los objetos simulados que usan una clase o una instancia como :attr:`spec` " +"o :attr:`spec_set` son capaces de pasar los test de :func:`isinstance`:" #: ../Doc/library/unittest.mock.rst:765 msgid "" "The :class:`Mock` classes have support for mocking magic methods. See :ref:" "`magic methods ` for the full details." msgstr "" +"Las clases :class:`Mock` tienen soporte para simular los métodos mágicos. " +"Consultar la sección dedicada a los :ref:`métodos mágicos ` " +"para ver los detalles." #: ../Doc/library/unittest.mock.rst:768 msgid "" @@ -614,6 +891,11 @@ msgid "" "are passed to the constructor of the mock being created. The keyword " "arguments are for configuring attributes of the mock:" msgstr "" +"Las clases simuladas y los decoradores :func:`patch` aceptan todas " +"argumentos por palabra clave arbitrarios para la configuración. En los " +"decoradores :func:`patch` los argumentos por palabra clave se pasan al " +"constructor del objeto simulado creado. Estos argumentos se usan para " +"configurar los atributos del propio objeto simulado:" #: ../Doc/library/unittest.mock.rst:779 msgid "" @@ -621,6 +903,11 @@ msgid "" "using dotted notation. As you can't use dotted names directly in a call you " "have to create a dictionary and unpack it using ``**``:" msgstr "" +"Tanto el valor de retorno como el efecto colateral del objeto simulado " +"pueden ser establecidos de la misma manera, mediante notación de punto. En " +"cambio, si se quieren establecer mediante el constructor, dado que no se " +"puede utilizar notación de punto directamente en una llamada, se tiene que " +"crear un diccionario y desempaquetarlo usando ``**``:" #: ../Doc/library/unittest.mock.rst:794 msgid "" @@ -629,6 +916,11 @@ msgid "" "mock. Therefore, it can match the actual call's arguments regardless of " "whether they were passed positionally or by name::" msgstr "" +"Un objeto simulado invocable que fue creado con un *spec* (o un *spec_set*) " +"introspeccionará la firma del objeto de la especificación en el momento de " +"emparejar las llamadas al objeto simulado. Esto le permite hacer coincidir " +"sus argumentos con los argumentos de la llamada real, independientemente de " +"si se pasaron por posición o por nombre:" #: ../Doc/library/unittest.mock.rst:807 msgid "" @@ -637,10 +929,16 @@ msgid "" "assert_any_call`. When :ref:`auto-speccing`, it will also apply to method " "calls on the mock object." msgstr "" +"Esto se aplica a :meth:`~Mock.assert_called_with`, :meth:`~Mock." +"assert_called_once_with`, :meth:`~Mock.assert_has_calls` y :meth:`~Mock." +"assert_any_call`. Cuando se hace uso de :ref:`auto-speccing`, también se " +"aplicará a las llamadas a los métodos del objeto simulado." #: ../Doc/library/unittest.mock.rst:812 msgid "Added signature introspection on specced and autospecced mock objects." msgstr "" +"Se añadió introspección de firma en objetos simulados especificados y " +"autoespecificados." #: ../Doc/library/unittest.mock.rst:818 msgid "" @@ -648,12 +946,19 @@ msgid "" "class:`PropertyMock` provides :meth:`__get__` and :meth:`__set__` methods so " "you can specify a return value when it is fetched." msgstr "" +"Un objeto simulado destinado a ser utilizado en una clase como una " +"propiedad, u otro descriptor. La clase :class:`PropertyMock` proporciona los " +"métodos :meth:`__get__` y :meth:`__set__`, por lo que puedes especificar un " +"valor de retorno para cuando su valor es requerido." #: ../Doc/library/unittest.mock.rst:822 msgid "" "Fetching a :class:`PropertyMock` instance from an object calls the mock, " "with no args. Setting it calls the mock with the value being set. ::" msgstr "" +"La obtención de una instancia :class:`PropertyMock` desde un objeto ocasiona " +"una llamada al objeto simulado, sin argumentos. Establecer su valor también " +"llama al objeto simulado, con el valor a establecer como argumento." #: ../Doc/library/unittest.mock.rst:843 msgid "" @@ -661,6 +966,9 @@ msgid "" "class:`PropertyMock` to a mock object. Instead you can attach it to the mock " "type object::" msgstr "" +"Debido a la forma en que se almacenan los atributos simulados, no es posible " +"conectar directamente un :class:`PropertyMock` a un objeto simulado. En su " +"lugar se puede conectar al tipo (type) del objeto simulado:" #: ../Doc/library/unittest.mock.rst:857 msgid "" @@ -668,24 +976,34 @@ msgid "" "behave so the object is recognized as an async function, and the result of a " "call is an awaitable." msgstr "" +"Una versión asíncrona de :class:`Mock`. El objeto :class:`AsyncMock` se " +"comportará de tal modo que el objeto es reconocido como una función " +"asíncrona y el resultado de su llamada es un objeto aguardable (awaitable)." #: ../Doc/library/unittest.mock.rst:867 msgid "" "The result of ``mock()`` is an async function which will have the outcome of " "``side_effect`` or ``return_value`` after it has been awaited:" msgstr "" +"El resultado de ``mock()`` es una función asíncrona que proporcionará el " +"resultado de ``side_effect`` o de ``return_value`` después de haber sido " +"aguardada:" #: ../Doc/library/unittest.mock.rst:870 msgid "" "if ``side_effect`` is a function, the async function will return the result " "of that function," msgstr "" +"si ``side_effect`` es una función, la función asíncrona retornará el " +"resultado de esa función," #: ../Doc/library/unittest.mock.rst:872 msgid "" "if ``side_effect`` is an exception, the async function will raise the " "exception," msgstr "" +"si ``side_effect`` es una excepción, la función asíncrona lanzará la " +"excepción," #: ../Doc/library/unittest.mock.rst:874 msgid "" @@ -693,6 +1011,9 @@ msgid "" "value of the iterable, however, if the sequence of result is exhausted, " "``StopAsyncIteration`` is raised immediately," msgstr "" +"si ``side_effect`` es un iterable, la función asíncrona retornará el " +"siguiente valor del iterable, sin embargo, si se agota la secuencia de " +"resultados, se lanza una excepción ``StopAsyncIteration`` inmediatamente," #: ../Doc/library/unittest.mock.rst:877 msgid "" @@ -700,12 +1021,18 @@ msgid "" "defined by ``return_value``, hence, by default, the async function returns a " "new :class:`AsyncMock` object." msgstr "" +"si ``side_effect`` no está definido, la función asíncrona retornará el valor " +"definido por ``return_value``, por lo tanto, la función asíncrona retorna un " +"nuevo objeto :class:`AsyncMock` por defecto." #: ../Doc/library/unittest.mock.rst:882 msgid "" "Setting the *spec* of a :class:`Mock` or :class:`MagicMock` to an async " "function will result in a coroutine object being returned after calling." msgstr "" +"Establecer el argumento *spec* de un objeto :class:`Mock` o :class:" +"`MagicMock` en una función asíncrona resultará en que un objeto corrutina " +"será retornado después de la llamada al objeto." #: ../Doc/library/unittest.mock.rst:894 msgid "" @@ -716,63 +1043,89 @@ msgid "" "or :class:`Mock` (if the parent mock is :class:`Mock`). All asynchronous " "functions will be :class:`AsyncMock`." msgstr "" +"Establecer el argumento *spec* de un objeto :class:`Mock`, :class:" +"`MagicMock` o :class:`AsyncMock` en una clase que tiene simultáneamente " +"funciones asíncronas y síncronas hará que se detecten automáticamente las " +"funciones sincrónicas y las establecerá como :class:`MagicMock` (si el " +"objeto simulado padre es :class:`AsyncMock` o :class:`MagicMock`) o :class:" +"`Mock` (si el objeto simulado padre es :class:`Mock`) . Todas las funciones " +"asíncronas serán :class:`AsyncMock`." #: ../Doc/library/unittest.mock.rst:922 msgid "" "Assert that the mock was awaited at least once. Note that this is separate " "from the object having been called, the ``await`` keyword must be used:" msgstr "" +"Aserta si el objeto simulado fue aguardado al menos una vez. Ten en cuenta " +"que, independientemente del objeto que ha sido invocado, la palabra clave " +"``await`` debe ser utilizada:" #: ../Doc/library/unittest.mock.rst:941 msgid "Assert that the mock was awaited exactly once." -msgstr "" +msgstr "Aserta si el objeto simulado fue aguardado exactamente una vez." #: ../Doc/library/unittest.mock.rst:957 msgid "Assert that the last await was with the specified arguments." msgstr "" +"Aserta si el último aguardo (await) fue con los argumentos especificados." #: ../Doc/library/unittest.mock.rst:974 msgid "" "Assert that the mock was awaited exactly once and with the specified " "arguments." msgstr "" +"Aserta si que el objeto simulado se ha aguardado exactamente una vez y con " +"los argumentos especificados." #: ../Doc/library/unittest.mock.rst:991 msgid "Assert the mock has ever been awaited with the specified arguments." msgstr "" +"Aserta si el objeto simulado nunca se ha aguardado con los argumentos " +"especificados." #: ../Doc/library/unittest.mock.rst:1007 msgid "" "Assert the mock has been awaited with the specified calls. The :attr:" "`await_args_list` list is checked for the awaits." msgstr "" +"Aserta si el objeto simulado ha sido aguardado con las llamadas " +"especificadas. Para comprobar los aguardos (awaits) se utiliza la lista :" +"attr:`await_args_list`." #: ../Doc/library/unittest.mock.rst:1010 msgid "" "If *any_order* is false then the awaits must be sequential. There can be " "extra calls before or after the specified awaits." msgstr "" +"Si *any_order* es falso, los aguardos (awaits) deben ser secuenciales. No " +"puede haber llamadas adicionales antes o después de los aguardos " +"especificados." #: ../Doc/library/unittest.mock.rst:1014 msgid "" "If *any_order* is true then the awaits can be in any order, but they must " "all appear in :attr:`await_args_list`." msgstr "" +"Si *any_order* es verdadero, entonces los aguardos (awaits) pueden estar en " +"cualquier orden, pero deben aparecer todos en :attr:`await_args_list`." #: ../Doc/library/unittest.mock.rst:1034 msgid "Assert that the mock was never awaited." -msgstr "" +msgstr "Aserta si el objeto simulado nunca ha sido aguardado." #: ../Doc/library/unittest.mock.rst:1041 msgid "" "See :func:`Mock.reset_mock`. Also sets :attr:`await_count` to 0, :attr:" "`await_args` to None, and clears the :attr:`await_args_list`." msgstr "" +"Consultar :func:`Mock.reset_mock`. Además, también establece :attr:" +"`await_count` a 0, :attr:`await_args` a None y borra :attr:`await_args_list`." #: ../Doc/library/unittest.mock.rst:1046 msgid "" "An integer keeping track of how many times the mock object has been awaited." msgstr "" +"Un registro entero de cuántas veces se ha aguardado el objeto simulado." #: ../Doc/library/unittest.mock.rst:1061 msgid "" @@ -780,6 +1133,9 @@ msgid "" "that the mock was last awaited with. Functions the same as :attr:`Mock." "call_args`." msgstr "" +"Este atributo es ``None`` (si el objeto simulado no se ha aguardado) o los " +"argumentos con los que fue aguardado la última vez. Su funcionamiento es " +"idéntico al de :attr:`Mock.call_args`." #: ../Doc/library/unittest.mock.rst:1079 msgid "" @@ -787,10 +1143,14 @@ msgid "" "length of the list is the number of times it has been awaited). Before any " "awaits have been made it is an empty list." msgstr "" +"Es una lista de todas los aguardos (awaits) realizados en el objeto simulado " +"de forma secuencial (por lo que la longitud de la lista es el número de " +"veces que se ha aguardado el objeto). Si no se han realizado aguardos " +"previos, es una lista vacía." #: ../Doc/library/unittest.mock.rst:1098 msgid "Calling" -msgstr "" +msgstr "Llamar a los objetos simulados" #: ../Doc/library/unittest.mock.rst:1100 msgid "" @@ -800,12 +1160,20 @@ msgid "" "explicitly or by calling the Mock) - but it is stored and the same one " "returned each time." msgstr "" +"Los objetos Mock son invocables. La llamada a uno retornará el valor " +"establecido en el atributo :attr:`~Mock.return_value`. El valor de retorno " +"por defecto es un nuevo objeto Mock, el cual se crea la primera vez que se " +"accede al valor de retorno (ya sea explícitamente o llamando al objeto " +"Mock). Una vez creado, se almacena y el mismo objeto es retornado cada vez " +"que se solicita." #: ../Doc/library/unittest.mock.rst:1106 msgid "" "Calls made to the object will be recorded in the attributes like :attr:" "`~Mock.call_args` and :attr:`~Mock.call_args_list`." msgstr "" +"Las llamadas realizadas al objeto serán registradas en los atributos :attr:" +"`~Mock.call_args` y :attr:`~Mock.call_args_list`." #: ../Doc/library/unittest.mock.rst:1109 msgid "" @@ -813,12 +1181,18 @@ msgid "" "has been recorded, so if :attr:`side_effect` raises an exception the call is " "still recorded." msgstr "" +"Si :attr:`~Mock.side_effect` se establece, será invocado después de que la " +"llamada haya sido registrada, por lo que la llamada se registra aunque :attr:" +"`side_effect` lance una excepción." #: ../Doc/library/unittest.mock.rst:1113 msgid "" "The simplest way to make a mock raise an exception when called is to make :" "attr:`~Mock.side_effect` an exception class or instance:" msgstr "" +"La forma más sencilla de hacer que un objeto simulado lance de una excepción " +"cuando sea invocado es establecer su atributo :attr:`~Mock.side_effect` como " +"una clase o instancia de excepción:" #: ../Doc/library/unittest.mock.rst:1131 msgid "" @@ -827,6 +1201,11 @@ msgid "" "with the same arguments as the mock. This allows you to vary the return " "value of the call dynamically, based on the input:" msgstr "" +"Si :attr:`side_effect` es una función, la llamada al objeto simulado " +"retornará lo que sea que esta función retorne. La función establecida en :" +"attr:`side_effect` se llama con los mismos argumentos con los que el objeto " +"simulado ha sido invocado. Esto te permite variar el valor de retorno de la " +"llamada dinámicamente, en función de la entrada:" #: ../Doc/library/unittest.mock.rst:1147 msgid "" @@ -835,12 +1214,18 @@ msgid "" "return :attr:`mock.return_value` from inside :attr:`side_effect`, or return :" "data:`DEFAULT`:" msgstr "" +"Si se desea que el objeto simulado aún retorne el valor por defecto (un " +"nuevo objeto simulado), o cualquier valor de retorno establecido, entonces " +"existen dos maneras de proceder. Se puede retornar tanto el atributo :attr:" +"`mock.return_value` como :data:`DEFAULT` desde :attr:`side_effect`:" #: ../Doc/library/unittest.mock.rst:1166 msgid "" "To remove a :attr:`side_effect`, and return to the default behaviour, set " "the :attr:`side_effect` to ``None``:" msgstr "" +"Para eliminar un :attr:`side_effect`, volviendo al comportamiento " +"predeterminado, establece el atributo :attr:`side_effect` en ``None``:" #: ../Doc/library/unittest.mock.rst:1180 msgid "" @@ -848,22 +1233,30 @@ msgid "" "the mock will return values from the iterable (until the iterable is " "exhausted and a :exc:`StopIteration` is raised):" msgstr "" +"El atributo :attr:`side_effect` también puede ser cualquier objeto iterable. " +"En este caso, las llamadas repetidas al objeto simulado irán retornando " +"valores del iterable (hasta que el iterable se agote, momento en el que se " +"lanza una excepción :exc:`StopIteration`):" #: ../Doc/library/unittest.mock.rst:1196 msgid "" "If any members of the iterable are exceptions they will be raised instead of " "returned::" msgstr "" +"Si cualquier miembro del iterable es una excepción, se lanzará en lugar de " +"retornarse:" #: ../Doc/library/unittest.mock.rst:1214 msgid "Deleting Attributes" -msgstr "" +msgstr "Eliminar atributos" #: ../Doc/library/unittest.mock.rst:1216 msgid "" "Mock objects create attributes on demand. This allows them to pretend to be " "objects of any type." msgstr "" +"Los objetos simulados crean atributos en demanda. Esto les permite hacerse " +"pasar por objetos de cualquier tipo." #: ../Doc/library/unittest.mock.rst:1219 msgid "" @@ -872,16 +1265,23 @@ msgid "" "by providing an object as a :attr:`spec` for a mock, but that isn't always " "convenient." msgstr "" +"Es posible que desees que un objeto simulado retorne ``False`` al llamar a :" +"func:`hasattr`, o que lance una excepción :exc:`AttributeError` cuando se " +"intenta obtener un atributo. Puedes hacer todo esto proporcionando un objeto " +"adecuado al atributo :attr:`spec` del objeto simulado, pero no siempre es " +"conveniente." #: ../Doc/library/unittest.mock.rst:1223 msgid "" "You \"block\" attributes by deleting them. Once deleted, accessing an " "attribute will raise an :exc:`AttributeError`." msgstr "" +"Puedes \"bloquear\" atributos eliminándolos. Una vez eliminado, el acceso a " +"un atributo lanzará una excepción :exc:`AttributeError`." #: ../Doc/library/unittest.mock.rst:1240 msgid "Mock names and the name attribute" -msgstr "" +msgstr "Los nombres de los objetos simulados y el atributo *name*" #: ../Doc/library/unittest.mock.rst:1242 msgid "" @@ -890,16 +1290,22 @@ msgid "" "creation time. There are two alternatives. One option is to use :meth:`~Mock." "configure_mock`::" msgstr "" +"Dado que \"name\" es un argumento para el constructor de la clase :class:" +"`Mock`, si quieres que tu objeto simulado tenga un atributo \"name\", no " +"puedes simplemente pasarlo al constructor en tiempo de creación. Hay dos " +"alternativas. Una opción es usar el método :meth:`~Mock.configure_mock`:" #: ../Doc/library/unittest.mock.rst:1252 msgid "" "A simpler option is to simply set the \"name\" attribute after mock " "creation::" msgstr "" +"Una opción más sencilla es simplemente establecer el atributo \"name\" " +"después de la creación del objeto simulado:" #: ../Doc/library/unittest.mock.rst:1259 msgid "Attaching Mocks as Attributes" -msgstr "" +msgstr "Adjuntar objetos simulados como atributos" #: ../Doc/library/unittest.mock.rst:1261 msgid "" @@ -911,12 +1317,23 @@ msgid "" "calls to the children and allows you to make assertions about the order of " "calls between mocks:" msgstr "" +"Cuando se adjunta un objeto simulado como un atributo de otro objeto " +"simulado (o como su valor de retorno) se convierte en un \"hijo\" del mismo. " +"Las llamadas a los hijos se registran en los atributos :attr:`~Mock." +"method_calls` y :attr:`~Mock.mock_calls` del padre. Esto es útil para " +"configurar objetos simulados hijos para después adjuntarlos al padre, o para " +"adjuntar objetos simulados a un padre que se encargará de registrar todas " +"las llamadas a los hijos, permitiéndote hacer aserciones sobre el orden de " +"las llamadas entre objetos simulados:" #: ../Doc/library/unittest.mock.rst:1279 msgid "" "The exception to this is if the mock has a name. This allows you to prevent " "the \"parenting\" if for some reason you don't want it to happen." msgstr "" +"La excepción a lo anterior es si el objeto simulado tiene un nombre. Esto te " +"permite evitar el comportamiento de \"parentesco\" explicado previamente, si " +"por alguna razón no deseas que suceda." #: ../Doc/library/unittest.mock.rst:1290 msgid "" @@ -924,6 +1341,9 @@ msgid "" "attach mocks that have names to a parent you use the :meth:`~Mock." "attach_mock` method::" msgstr "" +"Los objetos simulados creados automáticamente por la función :func:`patch` " +"también reciben nombres automáticamente. Para adjuntar un objeto simulado " +"con nombre a un padre debes utilizar el método :meth:`~Mock.attach_mock`:" #: ../Doc/library/unittest.mock.rst:1308 msgid "" @@ -934,10 +1354,17 @@ msgid "" "a new Mock object when it expects a magic method. If you need magic method " "support see :ref:`magic methods `." msgstr "" +"Las únicas excepciones son los métodos y atributos mágicos (aquellos que " +"tienen doble subrayado al principio y al final). Mock no los crea " +"automáticamente, sino que lanza una excepción :exc:`AttributeError`. Esto se " +"debe a que el intérprete a menudo solicitará implícitamente estos métodos y " +"terminaría *muy* confundido si obtiene un nuevo objeto Mock cuando espera un " +"método mágico. Si necesitas soporte para métodos mágicos, consulta :ref:" +"`métodos mágicos `." #: ../Doc/library/unittest.mock.rst:1317 msgid "The patchers" -msgstr "" +msgstr "Parcheadores" #: ../Doc/library/unittest.mock.rst:1319 msgid "" @@ -946,16 +1373,24 @@ msgid "" "you, even if exceptions are raised. All of these functions can also be used " "in with statements or as class decorators." msgstr "" +"Los decoradores patch se utilizan para parchear los objetos sólo dentro del " +"ámbito de la función que decoran. Se encargan automáticamente de desparchear " +"una vez terminada la prueba, incluso si se lanzan excepciones. Todas estas " +"funciones también se pueden utilizar con declaraciones o como decoradores de " +"clase." #: ../Doc/library/unittest.mock.rst:1326 msgid "patch" -msgstr "" +msgstr "patch" #: ../Doc/library/unittest.mock.rst:1330 msgid "" ":func:`patch` is straightforward to use. The key is to do the patching in " "the right namespace. See the section `where to patch`_." msgstr "" +"La función :func:`patch` es sencilla de usar. La clave es realizar la " +"aplicación de parches en el espacio de nombres correcto. Consulta la sección " +"`where to patch`_ para más detalles." #: ../Doc/library/unittest.mock.rst:1335 msgid "" @@ -964,6 +1399,11 @@ msgid "" "patched with a *new* object. When the function/with statement exits the " "patch is undone." msgstr "" +":func:`patch` actúa como decorador de función, decorador de clase o como " +"gestor de contexto. Ya sea en el interior del cuerpo de una función o dentro " +"de una declaración with, *target* es parcheado con un objeto *new*. Cuando " +"la función / declaración with termina su ejecución el parche se deshace " +"automáticamente." #: ../Doc/library/unittest.mock.rst:1340 msgid "" @@ -974,6 +1414,13 @@ msgid "" "If :func:`patch` is used as a context manager the created mock is returned " "by the context manager." msgstr "" +"Si se omite *new*, entonces el objetivo se reemplaza por un objeto :class:" +"`AsyncMock` si el objeto parcheado es una función asíncrona, o con un " +"objeto :class:`MagicMock` en caso contrario. Si se utiliza :func:`patch` " +"como decorador y se omite *new*, el objeto simulado creado se pasa como un " +"argumento adicional a la función decorada. Si se utiliza :func:`patch` como " +"un gestor de contexto, el objeto simulado creado es retornado por el gestor " +"de contexto." #: ../Doc/library/unittest.mock.rst:1348 msgid "" @@ -983,18 +1430,28 @@ msgid "" "calling :func:`patch` from. The target is imported when the decorated " "function is executed, not at decoration time." msgstr "" +"*target* debe ser una cadena de la forma ``'paquete.modulo." +"NombreDeLaClase'``. *target* es importado y el objeto especificado " +"reemplazado por el objeto *new*, por lo que *target* debe ser importable " +"desde el entorno desde el cual estás llamando a :func:`patch`. Hay que tener " +"presente que *target* es importado cuando se ejecuta la función decorada, no " +"en tiempo de decoración." #: ../Doc/library/unittest.mock.rst:1354 msgid "" "The *spec* and *spec_set* keyword arguments are passed to the :class:" "`MagicMock` if patch is creating one for you." msgstr "" +"Los argumentos *spec* y *spec_set* se pasan a :class:`MagicMock` si patch " +"está creando automáticamente uno para ti." #: ../Doc/library/unittest.mock.rst:1357 msgid "" "In addition you can pass ``spec=True`` or ``spec_set=True``, which causes " "patch to pass in the object being mocked as the spec/spec_set object." msgstr "" +"Además, puedes pasar ``spec=True`` o ``spec_set=True``, lo que causa que " +"patch pase el objeto que está siendo simulado como el objeto spec/spec_set." #: ../Doc/library/unittest.mock.rst:1360 msgid "" @@ -1002,6 +1459,10 @@ msgid "" "that will be called to create the *new* object. By default :class:" "`AsyncMock` is used for async functions and :class:`MagicMock` for the rest." msgstr "" +"*new_callable* te permite especificar una clase diferente, o un objeto " +"invocable, que será invocada para crear el objeto *new*. Por defecto se " +"utiliza :class:`AsyncMock` para las funciones asíncronas y :class:" +"`MagicMock` para el resto." #: ../Doc/library/unittest.mock.rst:1364 msgid "" @@ -1014,12 +1475,25 @@ msgid "" "return value (the 'instance') will have the same spec as the class. See the :" "func:`create_autospec` function and :ref:`auto-speccing`." msgstr "" +"Una variante más poderosa de *spec* es *autospec*. Si estableces " +"``autospec=True`` el objeto simulado se creará con una especificación del " +"objeto que está siendo reemplazado. Todos los atributos del objeto simulado " +"también tendrán la especificación del atributo correspondiente del objeto " +"que está siendo reemplazado. Los argumentos de los métodos y funciones " +"simulados son comprobados y se lanzará una excepción :exc:`TypeError` si se " +"les llama con la firma incorrecta. Para los objetos simulados que sustituyen " +"a una clase, su valor de retorno (la 'instancia') tendrá la misma " +"especificación que la clase. Consultar la función :func:`create_autospec` y :" +"ref:`auto-speccing` para más detalles." #: ../Doc/library/unittest.mock.rst:1374 msgid "" "Instead of ``autospec=True`` you can pass ``autospec=some_object`` to use an " "arbitrary object as the spec instead of the one being replaced." msgstr "" +"En lugar de ``autospec=True``, puedes pasar ``autospec=some_object`` para " +"utilizar un objeto arbitrario como especificación en lugar del objeto " +"reemplazado." #: ../Doc/library/unittest.mock.rst:1377 msgid "" @@ -1031,12 +1505,22 @@ msgid "" "off by default because it can be dangerous. With it switched on you can " "write passing tests against APIs that don't actually exist!" msgstr "" +"Por defecto, :func:`patch` fallará al intentar reemplazar atributos que no " +"existen. Si pasas ``create=True`` y no existe el atributo, patch crea el " +"atributo cuando la función se llama y lo elimina de nuevo en cuanto termina " +"de ejecutarse . Esto es útil para implementar pruebas para atributos que tu " +"código de producción crea en tiempo de ejecución. Está desactivado por " +"defecto, ya que puede ser peligroso. ¡Al activarlo se pueden implementar " +"pruebas que validen APIs que en realidad no existen!" #: ../Doc/library/unittest.mock.rst:1387 msgid "" "If you are patching builtins in a module then you don't need to pass " "``create=True``, it will be added by default." msgstr "" +"Si estás parcheando objetos incorporados (builtins) en un módulo, no es " +"necesario pasar ``create=True``, ya que en este caso se agrega de forma " +"predeterminada." #: ../Doc/library/unittest.mock.rst:1391 msgid "" @@ -1048,6 +1532,14 @@ msgid "" "tests. You can specify an alternative prefix by setting ``patch." "TEST_PREFIX``." msgstr "" +"Patch puede ser usado como un decorador de la clase :class:`TestCase`. " +"Funciona decorando cada uno de los métodos de prueba presentes en la clase. " +"Esto reduce el código repetitivo cuando tus métodos de prueba comparten un " +"conjunto de parcheo común. :func:`patch` encuentra las pruebas mediante la " +"búsqueda de métodos cuyos nombres comienzan con ``patch.TEST_PREFIX``. Por " +"defecto es ``'test'``, que coincide con la forma en que :mod:`unittest` " +"busca las pruebas. Se puede especificar un prefijo alternativo estableciendo " +"un nuevo valor para el atributo ``patch.TEST_PREFIX``." #: ../Doc/library/unittest.mock.rst:1398 msgid "" @@ -1056,24 +1548,35 @@ msgid "" "\"as\" then the patched object will be bound to the name after the \"as\"; " "very useful if :func:`patch` is creating a mock object for you." msgstr "" +"Patch puede ser usado como un gestor de contexto, con la declaración with. " +"En este caso el parcheo se aplica al bloque sangrado inmediatamente después " +"de la declaración with. Si utilizas \"as\", el objeto parcheado será " +"enlazado al nombre especificado después de \"as\"; muy útil si :func:`patch` " +"está creando un objeto simulado automáticamente." #: ../Doc/library/unittest.mock.rst:1403 msgid "" ":func:`patch` takes arbitrary keyword arguments. These will be passed to " "the :class:`Mock` (or *new_callable*) on construction." msgstr "" +":func:`patch` toma argumentos por palabra clave arbitrarios. Estos serán " +"pasados ​​a :class:`Mock` (o a *new_callable*) durante la construcción." #: ../Doc/library/unittest.mock.rst:1406 msgid "" "``patch.dict(...)``, ``patch.multiple(...)`` and ``patch.object(...)`` are " "available for alternate use-cases." msgstr "" +"``patch.dict(...)``, ``patch.multiple(...)`` y ``patch.object(...)`` están " +"disponibles para casos de uso alternativos." #: ../Doc/library/unittest.mock.rst:1409 msgid "" ":func:`patch` as function decorator, creating the mock for you and passing " "it into the decorated function::" msgstr "" +":func:`patch` como decorador de función, crea el objeto simulado por ti y lo " +"pasa a la función decorada:" #: ../Doc/library/unittest.mock.rst:1419 msgid "" @@ -1081,6 +1584,9 @@ msgid "" "the class is instantiated in the code under test then it will be the :attr:" "`~Mock.return_value` of the mock that will be used." msgstr "" +"Parchear una clase sustituye a la clase por una *instancia* de :class:" +"`MagicMock`. Si la clase se instancia en el código bajo prueba, el atributo :" +"attr:`~Mock.return_value` del objeto simulado será el utilizado." #: ../Doc/library/unittest.mock.rst:1423 msgid "" @@ -1088,18 +1594,27 @@ msgid "" "side_effect` to return a new mock each time. Alternatively you can set the " "*return_value* to be anything you want." msgstr "" +"Si la clase se instancia en múltiples ocasiones, puedes utilizar el " +"atributo :attr:`~Mock.side_effect` para retornar un nuevo objeto simulado " +"cada vez. O también puedes establecer *return_value* para que sea lo que tu " +"quieras." #: ../Doc/library/unittest.mock.rst:1427 msgid "" "To configure return values on methods of *instances* on the patched class " "you must do this on the :attr:`return_value`. For example::" msgstr "" +"Para configurar valores de retorno de métodos en *instancias* de la clase " +"parcheada debes hacer uso del atributo :attr:`return_value`. Por ejemplo:" #: ../Doc/library/unittest.mock.rst:1441 msgid "" "If you use *spec* or *spec_set* and :func:`patch` is replacing a *class*, " "then the return value of the created mock will have the same spec. ::" msgstr "" +"Si utilizas *spec* o *spec_set* y :func:`patch` está reemplazando una " +"*clase*, el valor de retorno del objeto simulado creado tendrá las mismas " +"especificaciones:" #: ../Doc/library/unittest.mock.rst:1451 msgid "" @@ -1107,12 +1622,18 @@ msgid "" "class to the default :class:`MagicMock` for the created mock. For example, " "if you wanted a :class:`NonCallableMock` to be used::" msgstr "" +"El argumento *new_callable* es útil cuando deseas utilizar una clase por " +"defecto alternativa a :class:`MagicMock` para el objeto simulado creado. Por " +"ejemplo, si quieres que se use una clase :class:`NonCallableMock` por " +"defecto:" #: ../Doc/library/unittest.mock.rst:1464 msgid "" "Another use case might be to replace an object with an :class:`io.StringIO` " "instance::" msgstr "" +"Otro caso de uso podría ser la sustitución de un objeto por una instancia " +"de :class:`io.StringIO`:" #: ../Doc/library/unittest.mock.rst:1477 msgid "" @@ -1121,6 +1642,11 @@ msgid "" "can be done in the call to patch. Any arbitrary keywords you pass into the " "call will be used to set attributes on the created mock::" msgstr "" +"Cuando :func:`patch` crea un objeto simulado para ti, a menudo lo primero " +"que tienes que hacer es configurar el objeto simulado recién creado. Parte " +"de la configuración se puede hacer en la propia llamada a patch. Cualquier " +"palabra clave arbitraria que pases a la llamada será utilizada para " +"establecer los atributos del objeto simulado creado:" #: ../Doc/library/unittest.mock.rst:1489 msgid "" @@ -1130,6 +1656,13 @@ msgid "" "arguments, but a dictionary with these as keys can still be expanded into a :" "func:`patch` call using ``**``::" msgstr "" +"Los atributos de los objetos simulados hijos, como :attr:`~Mock." +"return_value` y :attr:`~Mock.side_effect`, también puede ser configurados en " +"la llamada, dado que los objetos simulados hijos son atributos en si mismos " +"del objeto simulado padre creado. Eso si, estos no son sintácticamente " +"válidos para ser pasados directamente como argumentos por palabras clave a " +"la función patch, pero un diccionario con ellos como claves si que puede ser " +"expandido en una llama a :func:`patch` usando ``**``:" #: ../Doc/library/unittest.mock.rst:1505 msgid "" @@ -1137,28 +1670,37 @@ msgid "" "attribute in a class) that does not exist will fail with :exc:" "`AttributeError`::" msgstr "" +"Por defecto, el intento de parchear una función en un módulo (o un método o " +"atributo en una clase) que no existe fallará lanzando una excepción :exc:" +"`AttributeError`:" #: ../Doc/library/unittest.mock.rst:1517 msgid "" "but adding ``create=True`` in the call to :func:`patch` will make the " "previous example work as expected::" msgstr "" +"pero añadir ``create=True`` en la llamada a :func:`patch` hará que el " +"ejemplo previo funcione como se esperaba:" #: ../Doc/library/unittest.mock.rst:1528 msgid "" ":func:`patch` now returns an :class:`AsyncMock` if the target is an async " "function." msgstr "" +":func:`patch` ahora retorna una instancia de :class:`AsyncMock` si el " +"objetivo es una función asíncrona." #: ../Doc/library/unittest.mock.rst:1532 msgid "patch.object" -msgstr "" +msgstr "patch.object" #: ../Doc/library/unittest.mock.rst:1536 msgid "" "patch the named member (*attribute*) on an object (*target*) with a mock " "object." msgstr "" +"parchea el miembro *attribute* invocado de un objeto *target* con un objeto " +"simulado." #: ../Doc/library/unittest.mock.rst:1539 msgid "" @@ -1168,12 +1710,20 @@ msgid "" "`patch`, :func:`patch.object` takes arbitrary keyword arguments for " "configuring the mock object it creates." msgstr "" +":func:`patch.object` se puede utilizar como un decorador, decorador de clase " +"o un gestor de contexto. Los argumentos *new*, *spec*, *create*, *spec_set*, " +"*autospec* y *new_callable* tienen el mismo significado que en la función :" +"func:`patch`. Al igual que :func:`patch`, :func:`patch.object` toma " +"argumentos por palabras clave arbitrarios para la configuración del objeto " +"simulado que crea." #: ../Doc/library/unittest.mock.rst:1545 msgid "" "When used as a class decorator :func:`patch.object` honours ``patch." "TEST_PREFIX`` for choosing which methods to wrap." msgstr "" +"Cuando se utiliza como un decorador de clase :func:`patch.object` se rige " +"por ``patch.TEST_PREFIX`` a la hora de elegir los métodos a envolver." #: ../Doc/library/unittest.mock.rst:1548 msgid "" @@ -1181,6 +1731,9 @@ msgid "" "arguments. The three argument form takes the object to be patched, the " "attribute name and the object to replace the attribute with." msgstr "" +"Puedes llamar a :func:`patch.object` con tres argumentos o con dos " +"argumentos. La forma de tres argumento toma el objeto a parchear, el nombre " +"del atributo y el objeto con el que reemplazar el atributo." #: ../Doc/library/unittest.mock.rst:1552 msgid "" @@ -1188,22 +1741,29 @@ msgid "" "a mock is created for you and passed in as an extra argument to the " "decorated function:" msgstr "" +"Al llamar usando la variante de dos argumento se omite el objeto de " +"sustitución, por lo tanto se crea un objeto simulado automáticamente y se " +"pasa como argumento adicional a la función decorada:" #: ../Doc/library/unittest.mock.rst:1563 msgid "" "*spec*, *create* and the other arguments to :func:`patch.object` have the " "same meaning as they do for :func:`patch`." msgstr "" +"*spec*, *create* y el resto de argumentos de :func:`patch.object` tienen el " +"mismo significado que en la función :func:`patch`." #: ../Doc/library/unittest.mock.rst:1568 msgid "patch.dict" -msgstr "" +msgstr "patch.dict" #: ../Doc/library/unittest.mock.rst:1572 msgid "" "Patch a dictionary, or dictionary like object, and restore the dictionary to " "its original state after the test." msgstr "" +"Parchea un diccionario o un objeto similar a un diccionario y posteriormente " +"lo restaura a su estado original una vez terminada la prueba." #: ../Doc/library/unittest.mock.rst:1575 msgid "" @@ -1211,48 +1771,69 @@ msgid "" "mapping then it must at least support getting, setting and deleting items " "plus iterating over keys." msgstr "" +"*in_dict* puede ser un diccionario o un contenedor similar a uno. Si se " +"trata de un objeto similar a un diccionario, debe soportar como mínimo el " +"establecimiento, la obtención y la eliminación de elementos, además de " +"permitir la iteración sobre las claves." #: ../Doc/library/unittest.mock.rst:1579 msgid "" "*in_dict* can also be a string specifying the name of the dictionary, which " "will then be fetched by importing it." msgstr "" +"*in_dict* también puede ser una cadena que especifique el nombre del " +"diccionario a parchear, el nombre es usado para obtener el diccionario " +"mediante importación." #: ../Doc/library/unittest.mock.rst:1582 msgid "" "*values* can be a dictionary of values to set in the dictionary. *values* " "can also be an iterable of ``(key, value)`` pairs." msgstr "" +"*values* puede ser otro diccionario con valores para ser añadidos al " +"diccionario. *values* también puede ser un iterable de parejas ``(clave, " +"valor)``." #: ../Doc/library/unittest.mock.rst:1585 msgid "" "If *clear* is true then the dictionary will be cleared before the new values " "are set." msgstr "" +"Si *clear* es verdadero, el contenido del diccionario se borrará antes de " +"establecer los nuevos valores." #: ../Doc/library/unittest.mock.rst:1588 msgid "" ":func:`patch.dict` can also be called with arbitrary keyword arguments to " "set values in the dictionary." msgstr "" +"La función :func:`patch.dict` también puede ser invocada con argumentos por " +"palabra clave arbitrarios para establecer los valores en el diccionario." #: ../Doc/library/unittest.mock.rst:1593 msgid "" ":func:`patch.dict` now returns the patched dictionary when used as a context " "manager." msgstr "" +"La función :func:`patch.dict` ahora retorna el diccionario parcheado cuando " +"se utiliza como gestor de contexto." #: ../Doc/library/unittest.mock.rst:1596 msgid "" ":func:`patch.dict` can be used as a context manager, decorator or class " "decorator:" msgstr "" +":func:`patch.dict` se puede utilizar como gestor de contexto, decorador o " +"decorador de clase:" #: ../Doc/library/unittest.mock.rst:1606 msgid "" "When used as a class decorator :func:`patch.dict` honours ``patch." "TEST_PREFIX`` (default to ``'test'``) for choosing which methods to wrap:" msgstr "" +"Cuando se utiliza :func:`patch.dict` como decorador de clase, se rige por " +"``patch.TEST_PREFIX`` (por defecto ``'test'``) a la hora de elegir qué " +"métodos envolver:" #: ../Doc/library/unittest.mock.rst:1617 msgid "" @@ -1260,6 +1841,10 @@ msgid "" "patchers of the different prefix by setting ``patch.TEST_PREFIX``. For more " "details about how to change the value of see :ref:`test-prefix`." msgstr "" +"Si deseas utilizar un prefijo diferente para tu prueba, puede informar a los " +"parcheadores del nuevo prefijo a usar estableciendo ``patch.TEST_PREFIX``. " +"Para más detalles sobre cómo cambiar el valor del atributo consultar :ref:" +"`test-prefix`." #: ../Doc/library/unittest.mock.rst:1621 msgid "" @@ -1267,12 +1852,17 @@ msgid "" "a test change a dictionary, and ensure the dictionary is restored when the " "test ends." msgstr "" +":func:`patch.dict` puede utilizarse para agregar miembros a un diccionario, " +"o simplemente para dejar que una prueba modifique un diccionario y " +"asegurarte de que el diccionario será restablecido cuando finalice la misma." #: ../Doc/library/unittest.mock.rst:1642 msgid "" "Keywords can be used in the :func:`patch.dict` call to set values in the " "dictionary:" msgstr "" +"Se pueden utilizar argumentos por palabra clave en la llamada a :func:`patch." +"dict` para establecer valores en el diccionario:" #: ../Doc/library/unittest.mock.rst:1652 msgid "" @@ -1282,10 +1872,16 @@ msgid "" "to the magic methods :meth:`__getitem__`, :meth:`__setitem__`, :meth:" "`__delitem__` and either :meth:`__iter__` or :meth:`__contains__`." msgstr "" +":func:`patch.dict` se puede utilizar con objetos similares a un diccionario, " +"que no son realmente diccionarios. Estos objetos como mínimo deben permitir " +"obtener, establecer y borrar elementos, además de soportar la iteración o la " +"prueba de pertenencia. Dichas funcionalidades se corresponden a los métodos " +"mágicos :meth:`__getitem__`, :meth:`__setitem__`, :meth:`__delitem__` e :" +"meth:`__iter__` o :meth:`__contains__`." #: ../Doc/library/unittest.mock.rst:1681 msgid "patch.multiple" -msgstr "" +msgstr "patch.multiple" #: ../Doc/library/unittest.mock.rst:1685 msgid "" @@ -1293,6 +1889,10 @@ msgid "" "(either as an object or a string to fetch the object by importing) and " "keyword arguments for the patches::" msgstr "" +"Realiza múltiples parches en una sola llamada. Se toma el objeto a ser " +"parcheado (ya sea como un objeto o una cadena de caracteres con el nombre " +"del mismo para obtener el objeto mediante importación) y los argumentos por " +"palabras clave para los parches:" #: ../Doc/library/unittest.mock.rst:1692 msgid "" @@ -1301,6 +1901,11 @@ msgid "" "decorated function by keyword, and a dictionary is returned when :func:" "`patch.multiple` is used as a context manager." msgstr "" +"Usa :data:`DEFAULT` como valor si deseas que la función :func:`patch." +"multiple` cree objetos simulados automáticamente por ti. En este caso, los " +"objetos simulados creados son pasados ​​a la función decorada mediante palabra " +"clave y se retorna un diccionario cuando :func:`patch.multiple` se utiliza " +"como gestor de contexto." #: ../Doc/library/unittest.mock.rst:1697 msgid "" @@ -1309,12 +1914,19 @@ msgid "" "*new_callable* have the same meaning as for :func:`patch`. These arguments " "will be applied to *all* patches done by :func:`patch.multiple`." msgstr "" +"La función :func:`patch.multiple` se puede utilizar como un decorador, " +"decorador de clase o como gestor de contexto. La argumentos *spec*, " +"*spec_set*, *create*, *autospec* y *new_callable* tienen el mismo " +"significado que en la función :func:`patch`. Estos argumentos se aplicarán a " +"*todos* los parches realizados por :func:`patch.multiple`." #: ../Doc/library/unittest.mock.rst:1702 msgid "" "When used as a class decorator :func:`patch.multiple` honours ``patch." "TEST_PREFIX`` for choosing which methods to wrap." msgstr "" +"Cuando se utiliza como decorador de clase, :func:`patch.multiple` se rige " +"por ``patch.TEST_PREFIX`` a la hora de elegir qué métodos envolver." #: ../Doc/library/unittest.mock.rst:1705 msgid "" @@ -1323,6 +1935,10 @@ msgid "" "decorator then the created mocks are passed into the decorated function by " "keyword. ::" msgstr "" +"Si deseas que :func:`patch.multiple` cree objetos simulados automáticamente " +"por ti, puedes utilizar :data:`DEFAULT` como valor. Si utilizas :func:`patch." +"multiple` como decorador, entonces los objetos simulados creados se pasan a " +"la función decorada por palabra clave:" #: ../Doc/library/unittest.mock.rst:1719 msgid "" @@ -1330,6 +1946,9 @@ msgid "" "put arguments passed by keyword *after* any of the standard arguments " "created by :func:`patch`::" msgstr "" +":func:`patch.multiple` se puede anidar junto a otros decoradores ``patch``, " +"pero los argumentos pasados ​​por palabra clave se deben agregar *después* de " +"cualquier argumento estándar creado por :func:`patch`:" #: ../Doc/library/unittest.mock.rst:1731 msgid "" @@ -1337,10 +1956,13 @@ msgid "" "by the context manager is a dictionary where created mocks are keyed by " "name::" msgstr "" +"Si :func:`patch.multiple` se utiliza como un gestor de contexto, el valor " +"retornado por el mismo es un diccionario en el que los objetos simulados " +"creados son almacenados, usando sus nombres como claves:" #: ../Doc/library/unittest.mock.rst:1745 msgid "patch methods: start and stop" -msgstr "" +msgstr "Métodos start y stop de patch" #: ../Doc/library/unittest.mock.rst:1747 msgid "" @@ -1348,6 +1970,9 @@ msgid "" "simpler to do patching in ``setUp`` methods or where you want to do multiple " "patches without nesting decorators or with statements." msgstr "" +"Todos los parcheadores tienen los métodos :meth:`start` y :meth:`stop`. Esto " +"facilita parchear en los métodos ``setUp`` o cuando deseas hacer múltiples " +"parches sin usar decoradores anidados o declaraciones with." #: ../Doc/library/unittest.mock.rst:1751 msgid "" @@ -1356,18 +1981,26 @@ msgid "" "then call :meth:`start` to put the patch in place and :meth:`stop` to undo " "it." msgstr "" +"Para utilizar estos métodos, llama a :func:`patch`, :func:`patch.object` o :" +"func:`patch.dict` como haces normalmente y mantén una referencia al objeto " +"``patcher`` retornado. A continuación, puedes llamar al método :meth:`start` " +"para aplicar el parche y a :meth:`stop` para deshacerlo." #: ../Doc/library/unittest.mock.rst:1755 msgid "" "If you are using :func:`patch` to create a mock for you then it will be " "returned by the call to ``patcher.start``. ::" msgstr "" +"Si estás utilizando :func:`patch` para crear un objeto simulado " +"automáticamente, este será retornado por la llamada a ``patcher.start``:" #: ../Doc/library/unittest.mock.rst:1769 msgid "" "A typical use case for this might be for doing multiple patches in the " "``setUp`` method of a :class:`TestCase`::" msgstr "" +"Un uso típico de esto podría ser realizar múltiples parches en el método " +"``setUp`` de un :class:`TestCase`:" #: ../Doc/library/unittest.mock.rst:1791 msgid "" @@ -1376,36 +2009,49 @@ msgid "" "exception is raised in the ``setUp`` then ``tearDown`` is not called. :meth:" "`unittest.TestCase.addCleanup` makes this easier::" msgstr "" +"Si se utiliza esta técnica debes asegurarte de que el parcheo está \"sin " +"aplicar\" llamando a ``stop``. Esto puede ser más complicado de lo que " +"parece, ya que si se produce una excepción en el ``setUp`` no se llama a " +"``tearDown`` a continuación. :meth:`unittest.TestCase.addCleanup` hace que " +"esto sea más fácil:" #: ../Doc/library/unittest.mock.rst:1806 msgid "" "As an added bonus you no longer need to keep a reference to the ``patcher`` " "object." msgstr "" +"Como beneficio adicional, ya no es necesario mantener una referencia al " +"objeto ``patcher``." #: ../Doc/library/unittest.mock.rst:1809 msgid "" "It is also possible to stop all patches which have been started by using :" "func:`patch.stopall`." msgstr "" +"También es posible detener todos los parches que han sido iniciados usando :" +"func:`patch.stopall`." #: ../Doc/library/unittest.mock.rst:1814 msgid "Stop all active patches. Only stops patches started with ``start``." msgstr "" +"Detiene todos los parches activos. Sólo se detienen parches iniciados con " +"``start``." #: ../Doc/library/unittest.mock.rst:1820 msgid "patch builtins" -msgstr "" +msgstr "Parchear objetos incorporados (builtins)" #: ../Doc/library/unittest.mock.rst:1821 msgid "" "You can patch any builtins within a module. The following example patches " "builtin :func:`ord`::" msgstr "" +"Puedes parchear cualquier objeto incorporado dentro de un módulo. El " +"siguiente ejemplo parchea la función incorporada :func:`ord`:" #: ../Doc/library/unittest.mock.rst:1836 msgid "TEST_PREFIX" -msgstr "" +msgstr "TEST_PREFIX" #: ../Doc/library/unittest.mock.rst:1838 msgid "" @@ -1414,6 +2060,11 @@ msgid "" "that start with ``'test'`` as being test methods. This is the same way that " "the :class:`unittest.TestLoader` finds test methods by default." msgstr "" +"Todos los parcheadores se puede utilizar como decoradores de clase. Cuando " +"se usan de esta forma, todos los métodos a probar en la clase son envueltos. " +"Los parcheadores reconocen los métodos que comienzan con ``'test'`` como " +"métodos a probar. Esta es la misma forma que la clase :class:`unittest." +"TestLoader` usa para encontrar métodos de prueba por defecto." #: ../Doc/library/unittest.mock.rst:1843 msgid "" @@ -1421,20 +2072,24 @@ msgid "" "can inform the patchers of the different prefix by setting ``patch." "TEST_PREFIX``::" msgstr "" +"Cabe la posibilidad de que desees utilizar un prefijo diferente para las " +"pruebas. Puedes informar a los parcheadores del cambio de prefijo " +"estableciendo el atributo ``patch.TEST_PREFIX``:" #: ../Doc/library/unittest.mock.rst:1866 msgid "Nesting Patch Decorators" -msgstr "" +msgstr "Anidando decoradores patch" #: ../Doc/library/unittest.mock.rst:1868 msgid "" "If you want to perform multiple patches then you can simply stack up the " "decorators." msgstr "" +"Si deseas aplicar múltiples parches, solo tienes que apilar los decoradores." #: ../Doc/library/unittest.mock.rst:1871 msgid "You can stack up multiple patch decorators using this pattern:" -msgstr "" +msgstr "Puede apilar múltiples decoradores patch usando el siguiente patrón:" #: ../Doc/library/unittest.mock.rst:1887 msgid "" @@ -1442,10 +2097,14 @@ msgid "" "standard way that Python applies decorators. The order of the created mocks " "passed into your test function matches this order." msgstr "" +"Ten en cuenta que los decoradores se aplican desde abajo hacia arriba. Esta " +"es la manera estándar de Python para aplicar decoradores. El orden en el que " +"los objetos simulados generados se pasan a la función de prueba coincide con " +"este orden." #: ../Doc/library/unittest.mock.rst:1895 msgid "Where to patch" -msgstr "" +msgstr "Dónde parchear" #: ../Doc/library/unittest.mock.rst:1897 msgid "" @@ -1454,6 +2113,11 @@ msgid "" "individual object, so for patching to work you must ensure that you patch " "the name used by the system under test." msgstr "" +":func:`patch` funciona cambiando (temporalmente) el objeto al que apunta " +"*name* con otro. Puede haber muchos nombres apuntando a cualquier objeto " +"individual, por lo que para que el parcheo funcione, debes asegurarte de " +"parchear el nombre utilizado para el objeto por el sistema concreto bajo " +"prueba." #: ../Doc/library/unittest.mock.rst:1902 msgid "" @@ -1461,11 +2125,16 @@ msgid "" "is not necessarily the same place as where it is defined. A couple of " "examples will help to clarify this." msgstr "" +"El principio básico es parchear donde un objeto es *buscado*, que no es " +"necesariamente el mismo lugar donde está definido. Un par de ejemplos " +"ayudarán a aclarar esto." #: ../Doc/library/unittest.mock.rst:1906 msgid "" "Imagine we have a project that we want to test with the following structure::" msgstr "" +"Imaginemos que tenemos un proyecto, que queremos probar, con la siguiente " +"estructura:" #: ../Doc/library/unittest.mock.rst:1915 msgid "" @@ -1476,6 +2145,13 @@ msgid "" "module b already has a reference to the *real* ``SomeClass`` and it looks " "like our patching had no effect." msgstr "" +"Ahora queremos probar ``some_function``, pero queremos simular ``SomeClass`` " +"utilizando :func:`patch`. El problema es que cuando importamos el módulo b, " +"lo cual tenemos que hacer obligatoriamente, se importa ``SomeClass`` del " +"módulo a. Si utilizamos :func:`patch` para simular ``a.SomeClass``, no " +"tendrá ningún efecto en nuestra prueba; el módulo b ya tiene una referencia " +"a la ``SomeClass`` *real*, por lo que parece que nuestro parcheo no tuvo " +"ningún efecto." #: ../Doc/library/unittest.mock.rst:1922 msgid "" @@ -1484,6 +2160,9 @@ msgid "" "``SomeClass`` in module b, where we have imported it. The patching should " "look like::" msgstr "" +"La clave es parchear ``SomeClass`` donde se utiliza (o donde es buscado). En " +"este caso ``some_function`` realmente va a buscar ``SomeClass`` en el módulo " +"b, donde lo hemos importado. La aplicación de parches debe ser similar a:" #: ../Doc/library/unittest.mock.rst:1928 msgid "" @@ -1493,10 +2172,15 @@ msgid "" "we want to patch is being looked up in the module and so we have to patch " "``a.SomeClass`` instead::" msgstr "" +"Sin embargo, ten en cuenta el escenario alternativo donde en el módulo b en " +"lugar de ``from a import SomeClass`` se hace ``import a`` y " +"``some_function`` usa ``a.SomeClass``. Ambas formas de importación son " +"comunes. En este caso, la clase que queremos parchear está siendo buscada en " +"el módulo, por lo que tenemos que parchear ``a.SomeClass``:" #: ../Doc/library/unittest.mock.rst:1937 msgid "Patching Descriptors and Proxy Objects" -msgstr "" +msgstr "Parcheando descriptores y objetos proxy" #: ../Doc/library/unittest.mock.rst:1939 msgid "" @@ -1506,14 +2190,21 @@ msgid "" "proxy attribute access, like the `django settings object `_." msgstr "" +"Tanto patch_ como patch.object_ parchean descriptores correctamente y los " +"restauran posteriormente: métodos de clase, métodos estáticos y propiedades. " +"Los descriptores deben ser parcheados en la *clase* y no en una instancia. " +"También funcionan con *algunos* objetos que actúan como proxy en el acceso a " +"atributos, como el objeto de configuraciones de django (`django settings " +"object `_)." #: ../Doc/library/unittest.mock.rst:1947 msgid "MagicMock and magic method support" -msgstr "" +msgstr "MagicMock y el soporte de métodos mágicos" #: ../Doc/library/unittest.mock.rst:1952 msgid "Mocking Magic Methods" -msgstr "" +msgstr "Simular métodos mágicos" #: ../Doc/library/unittest.mock.rst:1954 msgid "" @@ -1521,6 +2212,10 @@ msgid "" "\"magic methods\". This allows mock objects to replace containers or other " "objects that implement Python protocols." msgstr "" +":class:`Mock` soporta la simulación de los métodos de protocolo de Python, " +"también conocidos como \"métodos mágicos\". Esto permite a los objetos " +"simulados reemplazar contenedores u otros objetos que implementan protocolos " +"de Python." #: ../Doc/library/unittest.mock.rst:1958 msgid "" @@ -1529,6 +2224,11 @@ msgid "" "magic methods are supported. The supported list includes *almost* all of " "them. If there are any missing that you need please let us know." msgstr "" +"Dado que los métodos mágicos se buscan de manera diferente a los métodos " +"normales [#]_, este soporte ha sido especialmente implementado. Esto " +"significa que sólo es compatible con métodos mágicos específicos. La lista " +"de métodos soportados incluye *casi* todos los existentes. Si hay alguno que " +"falta y que consideras necesario, por favor háznoslo saber." #: ../Doc/library/unittest.mock.rst:1963 msgid "" @@ -1536,18 +2236,25 @@ msgid "" "function or a mock instance. If you are using a function then it *must* take " "``self`` as the first argument [#]_." msgstr "" +"Puedes simular métodos mágicos estableciendo el método que te interesa en " +"una función o en una instancia simulada. Si utilizas una función, *debe* " +"aceptar ``self`` como primer argumento [#]_." #: ../Doc/library/unittest.mock.rst:1986 msgid "" "One use case for this is for mocking objects used as context managers in a :" "keyword:`with` statement:" msgstr "" +"Un caso de uso para esto es simular objetos usados ​​como gestores de contexto " +"en una declaración :keyword:`with`:" #: ../Doc/library/unittest.mock.rst:1998 msgid "" "Calls to magic methods do not appear in :attr:`~Mock.method_calls`, but they " "are recorded in :attr:`~Mock.mock_calls`." msgstr "" +"Las llamadas a métodos mágicos no aparecen registradas en :attr:`~Mock." +"method_calls`, aunque si se registran en :attr:`~Mock.mock_calls`." #: ../Doc/library/unittest.mock.rst:2003 msgid "" @@ -1555,28 +2262,33 @@ msgid "" "set a magic method that isn't in the spec will raise an :exc:" "`AttributeError`." msgstr "" +"Si se utiliza el argumento por palabra clave *spec* para crear un objeto " +"simulado, intentar después establecer un método mágico que no está en la " +"especificación lanzará una excepción :exc:`AttributeError`." #: ../Doc/library/unittest.mock.rst:2006 msgid "The full list of supported magic methods is:" -msgstr "" +msgstr "La lista completa de los métodos mágicos soportados es la siguiente:" #: ../Doc/library/unittest.mock.rst:2008 msgid "``__hash__``, ``__sizeof__``, ``__repr__`` and ``__str__``" -msgstr "" +msgstr "``__hash__``, ``__sizeof__``, ``__repr__`` y ``__str__``" #: ../Doc/library/unittest.mock.rst:2009 msgid "``__dir__``, ``__format__`` and ``__subclasses__``" -msgstr "" +msgstr "``__dir__``, ``__format__`` y ``__subclasses__``" #: ../Doc/library/unittest.mock.rst:2010 msgid "``__round__``, ``__floor__``, ``__trunc__`` and ``__ceil__``" -msgstr "" +msgstr "``__round__``, ``__floor__``, ``__trunc__`` y ``__ceil__``" #: ../Doc/library/unittest.mock.rst:2011 msgid "" "Comparisons: ``__lt__``, ``__gt__``, ``__le__``, ``__ge__``, ``__eq__`` and " "``__ne__``" msgstr "" +"Comparaciones: ``__lt__``, ``__gt__``, ``__le__``, ``__ge__``, ``__eq__`` y " +"``__ne__``" #: ../Doc/library/unittest.mock.rst:2013 msgid "" @@ -1584,16 +2296,21 @@ msgid "" "``__contains__``, ``__len__``, ``__iter__``, ``__reversed__`` and " "``__missing__``" msgstr "" +"Métodos de contenedores: ``__getitem__``, ``__setitem__``, ``__delitem__``, " +"``__contains__``, ``__len__``, ``__iter__``, ``__reversed__`` y " +"``__missing__``" #: ../Doc/library/unittest.mock.rst:2016 msgid "" "Context manager: ``__enter__``, ``__exit__``, ``__aenter__`` and " "``__aexit__``" msgstr "" +"Administrador de contexto: ``__enter__``, ``__exit__``, ``__aenter__`` y " +"``__aexit__``" #: ../Doc/library/unittest.mock.rst:2017 msgid "Unary numeric methods: ``__neg__``, ``__pos__`` and ``__invert__``" -msgstr "" +msgstr "Métodos numéricos unarios: ``__neg__``, ``__pos__`` y ``__invert__``" #: ../Doc/library/unittest.mock.rst:2018 msgid "" @@ -1603,65 +2320,82 @@ msgid "" "``__lshift__``, ``__rshift__``, ``__and__``, ``__xor__``, ``__or__``, and " "``__pow__``" msgstr "" +"Los métodos numéricos (incluyendo los métodos estándar y las variantes in-" +"place): ``__add__``, ``__sub__``, ``__mul__``, ``__matmul__``, ``__div__``, " +"``__truediv__``, ``__floordiv__``, ``__mod__``, ``__divmod__``, " +"``__lshift__``, ``__rshift__``, ``__and__``, ``__xor__``, ``__or__``, y " +"``__pow__``" #: ../Doc/library/unittest.mock.rst:2022 msgid "" "Numeric conversion methods: ``__complex__``, ``__int__``, ``__float__`` and " "``__index__``" msgstr "" +"Métodos de conversión numérica: ``__complex__``, ``__int__``, ``__float__`` " +"y ``__index__``" #: ../Doc/library/unittest.mock.rst:2024 msgid "Descriptor methods: ``__get__``, ``__set__`` and ``__delete__``" -msgstr "" +msgstr "Métodos de descriptores: ``__get__``, ``__set__`` y ``__delete__``" #: ../Doc/library/unittest.mock.rst:2025 msgid "" "Pickling: ``__reduce__``, ``__reduce_ex__``, ``__getinitargs__``, " "``__getnewargs__``, ``__getstate__`` and ``__setstate__``" msgstr "" +"Pickling: ``__reduce__``, ``__reduce_ex__``, ``__getinitargs__``, " +"``__getnewargs__``, ``__getstate__`` y ``__setstate__``" #: ../Doc/library/unittest.mock.rst:2027 msgid "File system path representation: ``__fspath__``" -msgstr "" +msgstr "Representación de rutas del sistema de archivos: ``__fspath__``" #: ../Doc/library/unittest.mock.rst:2028 msgid "Asynchronous iteration methods: ``__aiter__`` and ``__anext__``" -msgstr "" +msgstr "Métodos de iteración asíncronos: ``__aiter__`` y ``__anext__``" #: ../Doc/library/unittest.mock.rst:2030 msgid "Added support for :func:`os.PathLike.__fspath__`." -msgstr "" +msgstr "Se añadió soporte para :func:`os.PathLike.__fspath__`." #: ../Doc/library/unittest.mock.rst:2033 msgid "" "Added support for ``__aenter__``, ``__aexit__``, ``__aiter__`` and " "``__anext__``." msgstr "" +"Se añadió soporte para ``__aenter__``, ``__aexit__``, ``__aiter__`` y " +"``__anext__``." #: ../Doc/library/unittest.mock.rst:2037 msgid "" "The following methods exist but are *not* supported as they are either in " "use by mock, can't be set dynamically, or can cause problems:" msgstr "" +"Los siguientes métodos existen pero *no* están soportados, ya sea porque son " +"usados por el propio objeto simulado, porque no se pueden establecer " +"dinámicamente o porque pueden causar problemas:" #: ../Doc/library/unittest.mock.rst:2040 msgid "``__getattr__``, ``__setattr__``, ``__init__`` and ``__new__``" -msgstr "" +msgstr "``__getattr__``, ``__setattr__``, ``__init__`` y ``__new__``" #: ../Doc/library/unittest.mock.rst:2041 msgid "" "``__prepare__``, ``__instancecheck__``, ``__subclasscheck__``, ``__del__``" msgstr "" +"``__prepare__``, ``__instancecheck__``, ``__subclasscheck__`` y ``__del__``" #: ../Doc/library/unittest.mock.rst:2046 msgid "Magic Mock" -msgstr "" +msgstr "Magic Mock" #: ../Doc/library/unittest.mock.rst:2048 msgid "" "There are two ``MagicMock`` variants: :class:`MagicMock` and :class:" "`NonCallableMagicMock`." msgstr "" +"Hay dos variantes de ``MagicMock``: :class:`MagicMock` y :class:" +"`NonCallableMagicMock`." #: ../Doc/library/unittest.mock.rst:2053 msgid "" @@ -1669,20 +2403,28 @@ msgid "" "most of the magic methods. You can use ``MagicMock`` without having to " "configure the magic methods yourself." msgstr "" +"``MagicMock`` es una subclase de :class:`Mock` con implementaciones por " +"defecto de la mayoría de los métodos mágicos. Puedes utilizar ``MagicMock`` " +"para crear objetos simulados sin tener que establecer los métodos mágicos " +"por ti mismo." #: ../Doc/library/unittest.mock.rst:2057 msgid "The constructor parameters have the same meaning as for :class:`Mock`." msgstr "" +"Los parámetros del constructor tienen el mismo significado que en :class:" +"`Mock`." #: ../Doc/library/unittest.mock.rst:2059 msgid "" "If you use the *spec* or *spec_set* arguments then *only* magic methods that " "exist in the spec will be created." msgstr "" +"Si utilizas los argumentos *spec* o *spec_set* entonces *solo* los métodos " +"mágicos que existan en la especificación serán creados." #: ../Doc/library/unittest.mock.rst:2065 msgid "A non-callable version of :class:`MagicMock`." -msgstr "" +msgstr "Una versión no invocable de :class:`MagicMock`." #: ../Doc/library/unittest.mock.rst:2067 msgid "" @@ -1690,12 +2432,17 @@ msgid "" "with the exception of *return_value* and *side_effect* which have no meaning " "on a non-callable mock." msgstr "" +"Los parámetros del constructor tienen el mismo significado que en :class:" +"`MagicMock`, con la excepción de *return_value* y *side_effect* que no " +"tienen significado en un objeto simulado no invocable." #: ../Doc/library/unittest.mock.rst:2071 msgid "" "The magic methods are setup with :class:`MagicMock` objects, so you can " "configure them and use them in the usual way:" msgstr "" +"Los métodos mágicos están implementados mediante objetos :class:`MagicMock`, " +"por lo que puedes configurarlos y utilizarlos de la forma habitual:" #: ../Doc/library/unittest.mock.rst:2081 msgid "" @@ -1705,82 +2452,88 @@ msgid "" "interested in the return value. You can still *set* the return value " "manually if you want to change the default." msgstr "" +"Por defecto, muchos de los métodos de protocolo están obligados a retornar " +"objetos de un tipo específico. Estos métodos están preconfigurados con un " +"valor de retorno por defecto, de manera que puedan ser utilizados sin tener " +"que hacer nada más, siempre que no estés interesado en el valor de retorno. " +"En todo caso, puedes *establecer* el valor de retorno de forma manual si " +"deseas cambiar el valor predeterminado." #: ../Doc/library/unittest.mock.rst:2087 msgid "Methods and their defaults:" -msgstr "" +msgstr "Métodos y sus valores por defecto:" #: ../Doc/library/unittest.mock.rst:2089 msgid "``__lt__``: ``NotImplemented``" -msgstr "" +msgstr "``__lt__``: ``NotImplemented``" #: ../Doc/library/unittest.mock.rst:2090 msgid "``__gt__``: ``NotImplemented``" -msgstr "" +msgstr "``__gt__``: ``NotImplemented``" #: ../Doc/library/unittest.mock.rst:2091 msgid "``__le__``: ``NotImplemented``" -msgstr "" +msgstr "``__le__``: ``NotImplemented``" #: ../Doc/library/unittest.mock.rst:2092 msgid "``__ge__``: ``NotImplemented``" -msgstr "" +msgstr "``__ge__``: ``NotImplemented``" #: ../Doc/library/unittest.mock.rst:2093 msgid "``__int__``: ``1``" -msgstr "" +msgstr "``__int__``: ``1``" #: ../Doc/library/unittest.mock.rst:2094 msgid "``__contains__``: ``False``" -msgstr "" +msgstr "``__contains__``: ``False``" #: ../Doc/library/unittest.mock.rst:2095 msgid "``__len__``: ``0``" -msgstr "" +msgstr "``__len__``: ``0``" #: ../Doc/library/unittest.mock.rst:2096 msgid "``__iter__``: ``iter([])``" -msgstr "" +msgstr "``__iter__``: ``iter([])``" #: ../Doc/library/unittest.mock.rst:2097 msgid "``__exit__``: ``False``" -msgstr "" +msgstr "``__exit__``: ``False``" #: ../Doc/library/unittest.mock.rst:2098 msgid "``__aexit__``: ``False``" -msgstr "" +msgstr "``__aexit__``: ``False``" #: ../Doc/library/unittest.mock.rst:2099 msgid "``__complex__``: ``1j``" -msgstr "" +msgstr "``__complex__``: ``1j``" #: ../Doc/library/unittest.mock.rst:2100 msgid "``__float__``: ``1.0``" -msgstr "" +msgstr "``__float__``: ``1.0``" #: ../Doc/library/unittest.mock.rst:2101 msgid "``__bool__``: ``True``" -msgstr "" +msgstr "``__bool__``: ``True``" #: ../Doc/library/unittest.mock.rst:2102 msgid "``__index__``: ``1``" -msgstr "" +msgstr "``__index__``: ``1``" #: ../Doc/library/unittest.mock.rst:2103 msgid "``__hash__``: default hash for the mock" -msgstr "" +msgstr "``__hash__``: hash predeterminado del objeto simulado" #: ../Doc/library/unittest.mock.rst:2104 msgid "``__str__``: default str for the mock" -msgstr "" +msgstr "``__str__``: str predeterminado del objeto simulado" #: ../Doc/library/unittest.mock.rst:2105 msgid "``__sizeof__``: default sizeof for the mock" -msgstr "" +msgstr "``__sizeof__``: sizeof predeterminado del objeto simulado" #: ../Doc/library/unittest.mock.rst:2107 msgid "For example:" -msgstr "" +msgstr "Por ejemplo:" #: ../Doc/library/unittest.mock.rst:2119 msgid "" @@ -1789,18 +2542,26 @@ msgid "" "side_effect` attribute, unless you change their return value to return " "something else::" msgstr "" +"Los dos métodos de igualdad, :meth:`__eq__` y :meth:`__ne__`, son " +"especiales. Realizan la comparación de igualdad predeterminada basada en la " +"identidad, utilizando el atributo :attr:`~Mock.side_effect`, a menos que " +"cambies su valor de retorno para que retorne alguna otra cosa:" #: ../Doc/library/unittest.mock.rst:2133 msgid "" "The return value of :meth:`MagicMock.__iter__` can be any iterable object " "and isn't required to be an iterator:" msgstr "" +"El valor de retorno de :meth:`MagicMock.__iter__` puede ser cualquier objeto " +"iterable, no se requiere que sea un iterador:" #: ../Doc/library/unittest.mock.rst:2143 msgid "" "If the return value *is* an iterator, then iterating over it once will " "consume it and subsequent iterations will result in an empty list:" msgstr "" +"Si el valor de retorno *es* un iterador, iterar sobre él una vez que se " +"consume, y cualquier iteración posterior, resultará en una lista vacía:" #: ../Doc/library/unittest.mock.rst:2152 msgid "" @@ -1808,42 +2569,49 @@ msgid "" "some of the obscure and obsolete ones. You can still set these up if you " "want." msgstr "" +"``MagicMock`` tiene todos los métodos mágicos soportados configurados a " +"excepción de algunos de los más oscuros y obsoletos. De todas formas, puedes " +"configurar estos también si lo deseas." #: ../Doc/library/unittest.mock.rst:2155 msgid "" "Magic methods that are supported but not setup by default in ``MagicMock`` " "are:" msgstr "" +"Los métodos mágicos que son compatibles, pero que no están configurados por " +"defecto en ``MagicMock`` son:" #: ../Doc/library/unittest.mock.rst:2157 msgid "``__subclasses__``" -msgstr "" +msgstr "``__subclasses__``" #: ../Doc/library/unittest.mock.rst:2158 msgid "``__dir__``" -msgstr "" +msgstr "``__dir__``" #: ../Doc/library/unittest.mock.rst:2159 msgid "``__format__``" -msgstr "" +msgstr "``__format__``" #: ../Doc/library/unittest.mock.rst:2160 msgid "``__get__``, ``__set__`` and ``__delete__``" -msgstr "" +msgstr "``__get__``, ``__set__`` y ``__delete__``" #: ../Doc/library/unittest.mock.rst:2161 msgid "``__reversed__`` and ``__missing__``" -msgstr "" +msgstr "``__reversed__`` y ``__missing__``" #: ../Doc/library/unittest.mock.rst:2162 msgid "" "``__reduce__``, ``__reduce_ex__``, ``__getinitargs__``, ``__getnewargs__``, " "``__getstate__`` and ``__setstate__``" msgstr "" +"``__reduce__``, ``__reduce_ex__``, ``__getinitargs__``, ``__getnewargs__``, " +"``__getstate__`` y ``__setstate__``" #: ../Doc/library/unittest.mock.rst:2164 msgid "``__getformat__`` and ``__setformat__``" -msgstr "" +msgstr "``__getformat__`` y ``__setformat__``" #: ../Doc/library/unittest.mock.rst:2168 msgid "" @@ -1851,26 +2619,34 @@ msgid "" "Different versions of Python are inconsistent about applying this rule. The " "supported protocol methods should work with all supported versions of Python." msgstr "" +"Los métodos mágicos *deben* ser buscados en la clase en lugar de en la " +"instancia. Diferentes versiones de Python son inconsistentes sobre la " +"aplicación de esta regla. Los métodos de protocolo soportados deben trabajar " +"con todas las versiones de Python." #: ../Doc/library/unittest.mock.rst:2172 msgid "" "The function is basically hooked up to the class, but each ``Mock`` instance " "is kept isolated from the others." msgstr "" +"La función está básicamente conectada a la clase, pero cada instancia " +"``Mock`` se mantiene aislada de las demás." #: ../Doc/library/unittest.mock.rst:2177 msgid "Helpers" -msgstr "" +msgstr "Ayudantes" #: ../Doc/library/unittest.mock.rst:2180 msgid "sentinel" -msgstr "" +msgstr "sentinel" #: ../Doc/library/unittest.mock.rst:2184 msgid "" "The ``sentinel`` object provides a convenient way of providing unique " "objects for your tests." msgstr "" +"El objeto ``sentinel`` proporciona una manera conveniente de proporcionar " +"objetos únicos para tus pruebas." #: ../Doc/library/unittest.mock.rst:2187 msgid "" @@ -1878,12 +2654,18 @@ msgid "" "same attribute will always return the same object. The objects returned have " "a sensible repr so that test failure messages are readable." msgstr "" +"Los atributos se crean a demanda, en el instante en el que se accede a ellos " +"por su nombre por primera vez. El acceso al mismo atributo siempre retornará " +"el mismo objeto. Los objetos retornados tienen una reproducción (repr) " +"apropiada para que los mensajes de error de la prueba sean legibles." #: ../Doc/library/unittest.mock.rst:2191 msgid "" "The ``sentinel`` attributes now preserve their identity when they are :mod:" "`copied ` or :mod:`pickled `." msgstr "" +"Los atributos ``sentinel`` ahora preservan su identidad cuando son :mod:" +"`copiados ` o :mod:`serializados con pickle `." #: ../Doc/library/unittest.mock.rst:2195 msgid "" @@ -1892,16 +2674,23 @@ msgid "" "sentinel objects to test this. :data:`sentinel` provides a convenient way of " "creating and testing the identity of objects like this." msgstr "" +"A veces, cuando implementas pruebas, necesitas probar que un determinado " +"objeto se pasa como argumento a otro método, o se retorna. Crear objetos " +"centinela con un nombre para probar esto puede ser una práctica común. :data:" +"`sentinel` proporciona una manera conveniente de crear y probar la identidad " +"de este tipo de objetos." #: ../Doc/library/unittest.mock.rst:2200 msgid "" "In this example we monkey patch ``method`` to return ``sentinel." "some_object``:" msgstr "" +"En el siguiente ejemplo, parcheamos ``method`` para retornar ``sentinel." +"some_object``:" #: ../Doc/library/unittest.mock.rst:2212 msgid "DEFAULT" -msgstr "" +msgstr "DEFAULT" #: ../Doc/library/unittest.mock.rst:2217 msgid "" @@ -1909,10 +2698,13 @@ msgid "" "DEFAULT``). It can be used by :attr:`~Mock.side_effect` functions to " "indicate that the normal return value should be used." msgstr "" +"El objeto :data:`DEFAULT` es un centinela pre-creado (actualmente ``sentinel." +"DEFAULT``). Puede ser usado por las funciones :attr:`~Mock.side_effect` para " +"indicar que el valor de retorno normal debe ser utilizado." #: ../Doc/library/unittest.mock.rst:2223 msgid "call" -msgstr "" +msgstr "call" #: ../Doc/library/unittest.mock.rst:2227 msgid "" @@ -1921,12 +2713,19 @@ msgid "" "mock_calls` and :attr:`~Mock.method_calls`. :func:`call` can also be used " "with :meth:`~Mock.assert_has_calls`." msgstr "" +":func:`call` es un objeto ayudante que puede usarse para hacer aserciones " +"simples, para comparar con :attr:`~Mock.call_args`, :attr:`~Mock." +"call_args_list`, :attr:`~Mock.mock_calls` y :attr:`~Mock.method_calls`. :" +"func:`call` y también se puede utilizar con :meth:`~Mock.assert_has_calls`." #: ../Doc/library/unittest.mock.rst:2240 msgid "" "For a call object that represents multiple calls, :meth:`call_list` returns " "a list of all the intermediate calls as well as the final call." msgstr "" +"Para un objeto call que representa múltiples llamadas, el método :meth:" +"`call_list` retorna una lista con todas las llamadas intermedias, así como " +"la llamada final." #: ../Doc/library/unittest.mock.rst:2244 msgid "" @@ -1935,12 +2734,19 @@ msgid "" "in multiple entries in :attr:`~Mock.mock_calls` on a mock. Manually " "constructing the sequence of calls can be tedious." msgstr "" +"``call_list`` es particularmente útil para hacer aserciones sobre \"llamadas " +"encadenadas\". Una llamada encadenada es varias llamadas en una sola línea " +"de código. Esto resulta en múltiples entradas en el atributo :attr:`~Mock." +"mock_calls` de un objeto simulado. Construir manualmente la secuencia de " +"llamadas puede ser tedioso." #: ../Doc/library/unittest.mock.rst:2249 msgid "" ":meth:`~call.call_list` can construct the sequence of calls from the same " "chained call:" msgstr "" +":meth:`~call.call_list` puede construir la secuencia de llamadas desde la " +"misma llamada encadenada:" #: ../Doc/library/unittest.mock.rst:2266 msgid "" @@ -1951,6 +2757,14 @@ msgid "" "call_args_list` and :attr:`Mock.mock_calls` attributes can be introspected " "to get at the individual arguments they contain." msgstr "" +"Un objeto ``call``, dependiendo de cómo fuera construido, puede ser una " +"tupla de la forma (argumentos posicionales, argumentos por palabras clave) o " +"bien de la forma (nombre, argumentos posicionales, argumentos por palabras " +"clave). Esto no es particularmente interesante cuando los construyes por ti " +"mismo, pero la introspección de los objetos ``call`` que conforman los " +"atributos :attr:`Mock.call_args`, :attr:`Mock.call_args_list` y :attr:`Mock." +"mock_calls` si pueden ser de utilidad para para acceder a los argumentos " +"individuales que contienen." #: ../Doc/library/unittest.mock.rst:2273 msgid "" @@ -1960,6 +2774,11 @@ msgid "" "construct yourself, are three-tuples of (name, positional args, keyword " "args)." msgstr "" +"Los objetos ``call`` en :attr:`Mock.call_args` y :attr:`Mock.call_args_list` " +"están conformados por dos tuplas (argumentos posicionales, argumentos por " +"palabra clave) mientras que los objetos ``call`` en :attr:`Mock.mock_calls`, " +"junto con los que construyas por ti mismo, constan de tres tuplas (nombre, " +"argumentos posicionales, argumentos por palabra clave)." #: ../Doc/library/unittest.mock.rst:2278 msgid "" @@ -1968,28 +2787,39 @@ msgid "" "tuple (an empty tuple if there are no positional arguments) and the keyword " "arguments are a dictionary:" msgstr "" +"Puedes utilizar esta presentación en forma de tuplas para obtener los " +"argumentos individuales, con la finalidad de llevar a cabo introspección y " +"aserciones más complejas. Los argumentos posicionales son una tupla (vacía " +"si no hay ninguno) y los argumentos por palabra clave son un diccionario:" #: ../Doc/library/unittest.mock.rst:2311 msgid "create_autospec" -msgstr "" +msgstr "create_autospec" #: ../Doc/library/unittest.mock.rst:2315 msgid "" "Create a mock object using another object as a spec. Attributes on the mock " "will use the corresponding attribute on the *spec* object as their spec." msgstr "" +"Crea un nuevo objeto simulado utilizando otro objeto (*spec*) como " +"especificación. Los atributos del objeto simulado utilizarán el atributo " +"correspondiente del objeto *spec* como su especificación." #: ../Doc/library/unittest.mock.rst:2319 msgid "" "Functions or methods being mocked will have their arguments checked to " "ensure that they are called with the correct signature." msgstr "" +"Los argumentos de las funciones o métodos simulados se validarán para " +"asegurarse de que son invocados con la firma correcta." #: ../Doc/library/unittest.mock.rst:2322 msgid "" "If *spec_set* is ``True`` then attempting to set attributes that don't exist " "on the spec object will raise an :exc:`AttributeError`." msgstr "" +"Si *spec_set* es ``True``, tratar de establecer atributos que no existen en " +"el objeto especificado lanzará una excepción :exc:`AttributeError`." #: ../Doc/library/unittest.mock.rst:2325 msgid "" @@ -1998,28 +2828,40 @@ msgid "" "an instance object by passing ``instance=True``. The returned mock will only " "be callable if instances of the mock are callable." msgstr "" +"Si se utiliza una clase como especificación, el valor de retorno del objeto " +"simulado (la instancia de la clase) tendrá la misma especificación. Se puede " +"utilizar una clase como especificación de una instancia pasando " +"``instance=True``. El objeto simulado retornado sólo será invocable si las " +"instancias del objeto simulado son también invocables." #: ../Doc/library/unittest.mock.rst:2330 msgid "" ":func:`create_autospec` also takes arbitrary keyword arguments that are " "passed to the constructor of the created mock." msgstr "" +":func:`create_autospec` también acepta argumentos por palabra clave " +"arbitrarios, que son pasados al constructor del objeto simulado creado." #: ../Doc/library/unittest.mock.rst:2333 msgid "" "See :ref:`auto-speccing` for examples of how to use auto-speccing with :func:" "`create_autospec` and the *autospec* argument to :func:`patch`." msgstr "" +"Consultar :ref:`auto-speccing` para ver ejemplos de cómo utilizar la " +"autoespecificación mediante :func:`create_autospec` y el argumento " +"*autospec* de :func:`patch`." #: ../Doc/library/unittest.mock.rst:2339 msgid "" ":func:`create_autospec` now returns an :class:`AsyncMock` if the target is " "an async function." msgstr "" +":func:`create_autospec` ahora retorna un objeto :class:`AsyncMock` si el " +"objetivo a simular es una función asíncrona." #: ../Doc/library/unittest.mock.rst:2344 msgid "ANY" -msgstr "" +msgstr "ANY" #: ../Doc/library/unittest.mock.rst:2348 msgid "" @@ -2028,6 +2870,10 @@ msgid "" "pull them individually out of :attr:`~Mock.call_args` and make more complex " "assertions on them." msgstr "" +"A veces puede que necesites hacer aserciones sobre *algunos* de los " +"argumentos de una llamada al objeto simulado, pero sin preocuparte por el " +"resto, o puede que quieras hacer uso de ellos de forma individual fuera de :" +"attr:`~Mock.call_args` y hacer aserciones más complejas con ellos." #: ../Doc/library/unittest.mock.rst:2353 msgid "" @@ -2035,16 +2881,22 @@ msgid "" "*everything*. Calls to :meth:`~Mock.assert_called_with` and :meth:`~Mock." "assert_called_once_with` will then succeed no matter what was passed in." msgstr "" +"Para ignorar ciertos argumentos puedes pasar objetos que se comparan como " +"iguales con *cualquier cosa*. En este caso, las llamadas a :meth:`~Mock." +"assert_called_with` y :meth:`~Mock.assert_called_once_with` tendrán éxito " +"sin importar lo que se haya pasado realmente." #: ../Doc/library/unittest.mock.rst:2362 msgid "" ":data:`ANY` can also be used in comparisons with call lists like :attr:" "`~Mock.mock_calls`:" msgstr "" +":data:`ANY` también se puede utilizar en las comparaciones con las listas de " +"llamadas, como :attr:`~Mock.mock_calls`:" #: ../Doc/library/unittest.mock.rst:2375 msgid "FILTER_DIR" -msgstr "" +msgstr "FILTER_DIR" #: ../Doc/library/unittest.mock.rst:2379 msgid "" @@ -2054,6 +2906,13 @@ msgid "" "useful members. If you dislike this filtering, or need to switch it off for " "diagnostic purposes, then set ``mock.FILTER_DIR = False``." msgstr "" +":data:`FILTER_DIR` es una variable definida a nivel de módulo que controla " +"la forma en la que los objetos simulados responden a :func:`dir` (sólo para " +"Python 2.6 y en adelante). El valor predeterminado es ``True``, que utiliza " +"el filtrado descrito a continuación, con la finalidad de mostrar solo los " +"miembros considerados como útiles. Si no te gusta este filtrado, o necesitas " +"desactivarlo con fines de diagnóstico, simplemente establece ``mock." +"FILTER_DIR = False``." #: ../Doc/library/unittest.mock.rst:2385 msgid "" @@ -2063,6 +2922,11 @@ msgid "" "attributes from the original are shown, even if they haven't been accessed " "yet:" msgstr "" +"Con el filtrado activado, ``dir(some_mock)`` mostrará solo atributos útiles " +"y además incluirá cualquier atributo creado dinámicamente, que normalmente " +"no se mostraría. Si el objeto simulado fue creado con un *spec* (o " +"*autospec*) se muestran todos los atributos del objeto original, incluso si " +"no se ha accedido a ellos todavía:" #: ../Doc/library/unittest.mock.rst:2412 msgid "" @@ -2072,6 +2936,12 @@ msgid "" "dislike this behaviour you can switch it off by setting the module level " "switch :data:`FILTER_DIR`:" msgstr "" +"Muchos de los atributos con subrayado y doble subrayado no muy útiles " +"(atributos privados de :class:`Mock` y no del objeto real que se está " +"simulando) se han filtrado del resultado de llamar a :func:`dir` en un " +"objeto :class:`Mock`. Si no te gusta este comportamiento, puedes " +"desactivarlo estableciendo el modificador a nivel de módulo :data:" +"`FILTER_DIR`:" #: ../Doc/library/unittest.mock.rst:2433 msgid "" @@ -2079,16 +2949,23 @@ msgid "" "``dir(type(my_mock))`` (type members) to bypass the filtering irrespective " "of :data:`mock.FILTER_DIR`." msgstr "" +"Como alternativa, puedes usar ``vars(my_mock)`` (miembros de instancia) y " +"``dir(type(my_mock))`` (miembros de tipo) para omitir el filtrado con " +"independencia del valor de :data:`mock.FILTER_DIR`." #: ../Doc/library/unittest.mock.rst:2439 msgid "mock_open" -msgstr "" +msgstr "mock_open" #: ../Doc/library/unittest.mock.rst:2443 msgid "" "A helper function to create a mock to replace the use of :func:`open`. It " "works for :func:`open` called directly or used as a context manager." msgstr "" +"Una función auxiliar que permite crear un objeto simulado con la finalidad " +"de reemplazar el uso de :func:`open`. Funciona para simular llamadas " +"directas a :func:`open` y para aquellos casos en los que es utilizada como " +"gestor de contexto." #: ../Doc/library/unittest.mock.rst:2446 msgid "" @@ -2096,6 +2973,9 @@ msgid "" "default) then a :class:`MagicMock` will be created for you, with the API " "limited to methods or attributes available on standard file handles." msgstr "" +"El argumento *mock* es el objeto simulado a configurar. Si es ``None`` (por " +"defecto) un objeto :class:`MagicMock` se creará para ti, con la API limitada " +"a métodos o atributos disponibles en los gestores de fichero estándares." #: ../Doc/library/unittest.mock.rst:2450 msgid "" @@ -2109,6 +2989,17 @@ msgid "" "in-memory filesystem packages on `PyPI `_ can offer a " "realistic filesystem for testing." msgstr "" +"*read_data* es una cadena de caracteres para los métodos :meth:`~io.IOBase." +"read`, :meth:`~io.IOBase.readline` y :meth:`~io.IOBase.readlines` del gestor " +"de fichero a retornar. Las llamadas a los métodos tomarán datos de " +"*read_data* hasta que se agote. El objeto simulado de estos métodos es " +"bastante simple: cada vez que el *mock* se llama, *read_data* se rebobina " +"hasta el principio. Si necesitas más control sobre los datos que estás " +"proporcionando al código de prueba tendrás que personalizar el objeto " +"simulado. Cuando eso no sea suficiente, alguno de los paquetes que " +"implementan sistemas de archivos en memoria disponible en `PyPI `_ puede ofrecer un sistema de archivos realista para usar en las " +"pruebas." #: ../Doc/library/unittest.mock.rst:2460 msgid "" @@ -2116,22 +3007,30 @@ msgid "" "The mock of :meth:`~io.IOBase.read` changed to consume *read_data* rather " "than returning it on each call." msgstr "" +"Se añadió soporte para :meth:`~io.IOBase.readline` y :meth:`~io.IOBase." +"readlines`. El objeto simulado de :meth:`~io.IOBase.read` ahora consume " +"datos de *read_data*, en lugar de retornarlo en cada llamada." #: ../Doc/library/unittest.mock.rst:2465 msgid "*read_data* is now reset on each call to the *mock*." -msgstr "" +msgstr "*read_data* ahora es restablecido en cada llamada al *mock*." #: ../Doc/library/unittest.mock.rst:2468 msgid "" "Added :meth:`__iter__` to implementation so that iteration (such as in for " "loops) correctly consumes *read_data*." msgstr "" +"Se añadió el método :meth:`__iter__` a la implementación, de manera que la " +"iteración (como ocurre en los bucles) consume apropiadamente *read_data*." #: ../Doc/library/unittest.mock.rst:2472 msgid "" "Using :func:`open` as a context manager is a great way to ensure your file " "handles are closed properly and is becoming common::" msgstr "" +"Usar :func:`open` como gestor de contexto es una buena manera de asegurarse " +"de que los gestores de archivos se cierren correctamente al terminar y se " +"está convirtiendo en una práctica común:" #: ../Doc/library/unittest.mock.rst:2478 msgid "" @@ -2139,20 +3038,25 @@ msgid "" "*returned object* that is used as a context manager (and has :meth:" "`__enter__` and :meth:`__exit__` called)." msgstr "" +"El problema es que, incluso si simulas la llamada a :func:`open`, es el " +"*objeto retornado* el que se utiliza como gestor de contexto (lo que " +"conlleva que sus métodos :meth:`__enter__` y :meth:`__exit__` son invocados)." #: ../Doc/library/unittest.mock.rst:2482 msgid "" "Mocking context managers with a :class:`MagicMock` is common enough and " "fiddly enough that a helper function is useful. ::" msgstr "" +"Simular gestores de contexto con un :class:`MagicMock` es lo suficientemente " +"común y complicado como para que una función auxiliar sea útil:" #: ../Doc/library/unittest.mock.rst:2499 msgid "And for reading files::" -msgstr "" +msgstr "Y para la lectura de archivos:" #: ../Doc/library/unittest.mock.rst:2512 msgid "Autospeccing" -msgstr "" +msgstr "Autoespecificación" #: ../Doc/library/unittest.mock.rst:2514 msgid "" @@ -2163,10 +3067,19 @@ msgid "" "methods have the same call signature as the original so they raise a :exc:" "`TypeError` if they are called incorrectly." msgstr "" +"La autoespecificación se basa en la característica :attr:`spec` ya existente " +"en el objeto simulado. Limita la API de los objetos simulados a la API del " +"objeto original (la especificación), pero es recursiva (implementada de " +"forma perezosa), de modo que los atributos del objeto simulado sólo tienen " +"la misma API que los atributos de la especificación. Además, las funciones / " +"métodos simuladas tienen la misma firma de llamada que la original y lanzan " +"una excepción :exc:`TypeError` si se les llama incorrectamente." #: ../Doc/library/unittest.mock.rst:2521 msgid "Before I explain how auto-speccing works, here's why it is needed." msgstr "" +"Antes de explicar cómo funciona la autoespecificación, he aquí por qué se " +"necesita." #: ../Doc/library/unittest.mock.rst:2523 msgid "" @@ -2175,6 +3088,10 @@ msgid "" "these flaws is specific to the :class:`Mock` api and the other is a more " "general problem with using mock objects." msgstr "" +":class:`Mock` es un objeto muy potente y flexible, pero adolece de dos " +"defectos cuando se utiliza para simular objetos de un sistema bajo prueba. " +"Uno de estos defectos es específico de la API de :class:`Mock` y el otro es " +"un problema más genérico referente al uso de objetos simulados." #: ../Doc/library/unittest.mock.rst:2528 msgid "" @@ -2182,6 +3099,9 @@ msgid "" "methods that are extremely handy: :meth:`~Mock.assert_called_with` and :meth:" "`~Mock.assert_called_once_with`." msgstr "" +"En primer lugar, el problema específico a :class:`Mock`. :class:`Mock` tiene " +"dos métodos de aserción que son extremadamente útiles: :meth:`~Mock." +"assert_called_with` y :meth:`~Mock.assert_called_once_with`." #: ../Doc/library/unittest.mock.rst:2541 msgid "" @@ -2189,10 +3109,16 @@ msgid "" "with arbitrary arguments, if you misspell one of these assert methods then " "your assertion is gone:" msgstr "" +"Debido a que los objetos simulados crean automáticamente atributos según " +"demanda y además permiten que se les llame con argumentos arbitrarios, si " +"escribes mal uno de estos métodos de aserción, la utilidad de esa aserción " +"desaparece:" #: ../Doc/library/unittest.mock.rst:2551 msgid "Your tests can pass silently and incorrectly because of the typo." msgstr "" +"Tus pruebas pueden pasar silenciosamente y de forma incorrecta debido al " +"error tipográfico." #: ../Doc/library/unittest.mock.rst:2553 msgid "" @@ -2201,6 +3127,12 @@ msgid "" "*old api* but uses mocks instead of the real objects will still pass. This " "means your tests can all pass even though your code is broken." msgstr "" +"El segundo problema es algo más general en las simulaciones. Si refactorizas " +"parte de tu código, cambias el nombre de los miembros, etc., las pruebas " +"para el código que siguen utilizando la *antigua API*, pero utilizan objetos " +"simulados en lugar de los objetos reales, todavía pasarán las pruebas. Esto " +"significa que tus pruebas pueden validarlo todo sin problemas, a pesar de " +"que el código esté roto." #: ../Doc/library/unittest.mock.rst:2558 msgid "" @@ -2209,6 +3141,11 @@ msgid "" "you don't test how your units are \"wired together\" there is still lots of " "room for bugs that tests might have caught." msgstr "" +"Ten en cuenta que esta es otra razón por la que necesitas pruebas de " +"integración además de pruebas unitarias. Probar todo de forma aislada está " +"muy bien, pero si no pruebas cómo están \"conectadas entre sí\" tus " +"unidades, todavía hay mucho espacio para errores que las pruebas deberían " +"haber detectado." #: ../Doc/library/unittest.mock.rst:2563 msgid "" @@ -2216,12 +3153,18 @@ msgid "" "If you use a class or instance as the :attr:`spec` for a mock then you can " "only access attributes on the mock that exist on the real class:" msgstr "" +":mod:`mock` ya proporciona una característica para ayudar con esto, llamada " +"especificación. Si se utiliza una clase o instancia como atributo :attr:" +"`spec` de un objeto simulado, entonces solo puedes acceder a los atributos " +"del mismo que existe en la clase real:" #: ../Doc/library/unittest.mock.rst:2574 msgid "" "The spec only applies to the mock itself, so we still have the same issue " "with any methods on the mock:" msgstr "" +"La especificación sólo se aplica al propio objeto simulado, por lo que aún " +"tenemos el mismo problema con cualquiera de los métodos del mismo:" #: ../Doc/library/unittest.mock.rst:2583 msgid "" @@ -2234,10 +3177,20 @@ msgid "" "complex or deeply nested objects (like modules that import modules that " "import modules) without a big performance hit." msgstr "" +"La autoespecificación resuelve este problema. Puedes pasar ``autospec=True`` " +"a :func:`patch` / :func:`patch.object` o utilizar la función :func:" +"`create_autospec` para crear un objeto simulado con una especificación. Si " +"utilizas el argumento ``autospec=True`` de :func:`patch`, el objeto que se " +"va a reemplazar se utiliza como objeto de especificación. Debido a que la " +"especificación se hace \"perezosamente\" (la especificación se crea en el " +"instante en el que se accede a los atributos del objeto simulado, no antes), " +"se puede utilizar con objetos muy complejos o anidadas (como módulos que " +"importan módulos que, a su vez, importan otros módulos) sin un gran impacto " +"en el rendimiento." #: ../Doc/library/unittest.mock.rst:2592 msgid "Here's an example of it in use::" -msgstr "" +msgstr "He aquí un ejemplo de ello en acción:" #: ../Doc/library/unittest.mock.rst:2602 msgid "" @@ -2245,12 +3198,18 @@ msgid "" "Request` takes two arguments in the constructor (one of which is *self*). " "Here's what happens if we try to call it incorrectly::" msgstr "" +"Se puede ver que :class:`request.Request` tiene una especificación. :class:" +"`request.Request` toma dos argumentos en el constructor (uno de los cuales " +"es *self*). Esto es lo que sucede si tratamos de llamarlo de forma " +"incorrecta:" #: ../Doc/library/unittest.mock.rst:2611 msgid "" "The spec also applies to instantiated classes (i.e. the return value of " "specced mocks)::" msgstr "" +"La especificación también se aplica a las clases instanciadas (es decir, el " +"valor de retorno de los objetos simulados especificados):" #: ../Doc/library/unittest.mock.rst:2618 msgid "" @@ -2259,6 +3218,11 @@ msgid "" "mock. With the spec in place any typos in our asserts will raise the correct " "error::" msgstr "" +"Los objetos de la clase :class:`Request` no son invocables, por lo que el " +"valor de retorno de una instancia de nuestro objeto simulado de :class:" +"`request.Request` no es invocable. Con la especificación, en cambio, " +"cualquier error tipográfico en nuestras aserciones generará el error " +"correcto:" #: ../Doc/library/unittest.mock.rst:2630 msgid "" @@ -2266,12 +3230,18 @@ msgid "" "existing :func:`patch` calls and then be protected against bugs due to typos " "and api changes." msgstr "" +"En muchos casos, podrás simplemente añadir ``autospec=True`` a tus llamadas :" +"func:`patch` existentes y así estar protegido contra errores tipográficos y " +"cambios de la API." #: ../Doc/library/unittest.mock.rst:2634 msgid "" "As well as using *autospec* through :func:`patch` there is a :func:" "`create_autospec` for creating autospecced mocks directly:" msgstr "" +"Además de poder usar *autospec* a través de :func:`patch`, existe la " +"función :func:`create_autospec` para crear directamente objetos simulados " +"autoespecificados:" #: ../Doc/library/unittest.mock.rst:2642 msgid "" @@ -2284,6 +3254,16 @@ msgid "" "be able to use autospec. On the other hand it is much better to design your " "objects so that introspection is safe [#]_." msgstr "" +"Sin embargo, este no es el comportamiento predeterminado, ya que no está " +"exento de advertencias y restricciones. Con el fin de conocer qué atributos " +"están disponibles en el objeto especificado, autospec tiene que hacer uso de " +"introspección sobre la especificación (acceder a los atributos). A medida " +"que recorres los atributos en el objeto simulado, se produce paralelamente y " +"de forma soterrada un recorrido del objeto original. Si alguno de tus " +"objetos especificados tienen propiedades o descriptores que puedan " +"desencadenar la ejecución de código, quizás no deberías utilizar la " +"autoespecificación. De todas formas, es siempre mucho mejor diseñar tus " +"objetos de modo que la introspección sea segura [#]_." #: ../Doc/library/unittest.mock.rst:2651 msgid "" @@ -2292,6 +3272,10 @@ msgid "" "*autospec* can't know about any dynamically created attributes and restricts " "the api to visible attributes. ::" msgstr "" +"Un problema más serio es que es común que los atributos de instancia sean " +"creados en el método :meth:`__init__` y que no existan a nivel de clase. " +"*autospec* no puede tener conocimiento de ningún atributo creado " +"dinámicamente, por lo que restringe la API a atributos visibles:" #: ../Doc/library/unittest.mock.rst:2668 msgid "" @@ -2301,6 +3285,11 @@ msgid "" "you to fetch attributes that don't exist on the spec it doesn't prevent you " "setting them::" msgstr "" +"Hay diferentes formas de resolver este problema. La forma más sencilla, pero " +"no necesariamente la menos molesta, es simplemente establecer los atributos " +"necesarios en el objeto simulado después de la creación del mismo. El hecho " +"de que *autospec* no te permita buscar atributos que no existen en la " +"especificación no impide que los establezcas manualmente después:" #: ../Doc/library/unittest.mock.rst:2679 msgid "" @@ -2309,6 +3298,10 @@ msgid "" "ensure your code only *sets* valid attributes too, but obviously it prevents " "this particular scenario:" msgstr "" +"Existe una versión más agresiva de *spec* y *autospec* que impide establecer " +"atributos inexistentes. Esto es útil si deseas asegurarte de que tu código " +"solo *establece* atributos válidos, pero obviamente evitando este escenario " +"en particular:" #: ../Doc/library/unittest.mock.rst:2692 msgid "" @@ -2318,6 +3311,12 @@ msgid "" "providing them via class attributes (shared between instances of course) is " "faster too. e.g." msgstr "" +"Probablemente la mejor manera de resolver el problema es añadir atributos de " +"clase como valores por defecto para los miembros de instancia inicializados " +"en el método :meth:`__init__`. Ten en cuenta que, si sólo estás " +"estableciendo atributos predeterminados en :meth:`__init__`, proporcionarlos " +"a través de atributos de clase (que , por supuesto, son compartidos entre " +"instancias) también es más rápido." #: ../Doc/library/unittest.mock.rst:2702 msgid "" @@ -2329,6 +3328,15 @@ msgid "" "type, autospec doesn't use a spec for members that are set to ``None``. " "These will just be ordinary mocks (well - MagicMocks):" msgstr "" +"Esto nos plantea otro problema. Es relativamente común proporcionar un valor " +"predeterminado de ``None`` para los miembros que posteriormente se " +"convertirán en objetos de un tipo diferente. ``None`` es inútil como " +"especificación dado que no permite acceder a *ningún* atributo o método. " +"Como ``None`` *nunca* será útil como especificación, y probablemente indica " +"un miembro que normalmente será de algún otro tipo en el futuro, la " +"autoespecificación no usa una especificación para aquellos miembros " +"configurados con ``None`` como valor. Estos serán simplemente objetos " +"simulados ordinarios (MagicMocks en realidad):" #: ../Doc/library/unittest.mock.rst:2717 msgid "" @@ -2340,6 +3348,14 @@ msgid "" "the spec. Thankfully :func:`patch` supports this - you can simply pass the " "alternative object as the *autospec* argument::" msgstr "" +"Si modificar tus clases en producción para agregar valores predeterminados " +"no es de tu agrado, dispones de otras opciones. Una de ellas es simplemente " +"usar una instancia como especificación en lugar de la clase. La otra es " +"crear una subclase de la clase en producción y agregar los valores " +"predeterminados a la subclase, sin afectar a la clase en producción. Ambas " +"alternativas requieren que uses un objeto alternativo como especificación. " +"Afortunadamente :func:`patch` admite esto, simplemente tienes que pasar el " +"objeto alternativo mediante el argumento *autospec*:" #: ../Doc/library/unittest.mock.rst:2738 msgid "" @@ -2347,10 +3363,14 @@ msgid "" "mocked class to create a mock instance *does not* create a real instance. It " "is only attribute lookups - along with calls to :func:`dir` - that are done." msgstr "" +"Esto sólo se aplica a las clases u objetos ya instanciados. Llamar a una " +"clase simulada para crear una instancia simulada *no* crea una instancia " +"real. Solo se llevan a cabo las búsqueda de atributos (mediante llamadas a :" +"func:`dir`)." #: ../Doc/library/unittest.mock.rst:2743 msgid "Sealing mocks" -msgstr "" +msgstr "Sellar objetos simulados" #: ../Doc/library/unittest.mock.rst:2752 msgid "" @@ -2358,6 +3378,9 @@ msgid "" "attribute of the mock being sealed or any of its attributes that are already " "mocks recursively." msgstr "" +"Seal desactivará la creación automática de objetos simulados al acceder a un " +"atributo del objeto simulado que está siendo sellado, o a cualquiera de sus " +"atributos que ya sean objetos simulados de forma recursiva." #: ../Doc/library/unittest.mock.rst:2755 msgid "" @@ -2365,3 +3388,6 @@ msgid "" "won't be considered in the sealing chain. This allows one to prevent seal " "from fixing part of the mock object. ::" msgstr "" +"Si una instancia simulada con un nombre o una especificación es asignada a " +"un atributo no será considerada en la cadena de sellado. Esto permite evitar " +"que seal fije partes del objeto simulado. ::" From c3fbcecafbedd99f4ab9919d8e6d171ad8f9b930 Mon Sep 17 00:00:00 2001 From: 0-Arngerdur-1 <71467991+0-Arngerdur-1@users.noreply.github.com> Date: Tue, 27 Oct 2020 04:50:27 -0600 Subject: [PATCH 06/18] Traducido archivo library/tkinter.scrolledtext (#1110) --- library/tkinter.scrolledtext.po | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/library/tkinter.scrolledtext.po b/library/tkinter.scrolledtext.po index b310760ad9..2a294eff82 100644 --- a/library/tkinter.scrolledtext.po +++ b/library/tkinter.scrolledtext.po @@ -1,29 +1,31 @@ # Copyright (C) 2001-2020, Python Software Foundation # This file is distributed under the same license as the Python package. -# Maintained by the python-doc-es workteam. +# Maintained by the python-doc-es workteam. # docs-es@python.org / https://mail.python.org/mailman3/lists/docs-es.python.org/ # Check https://github.com/python/python-docs-es/blob/3.8/TRANSLATORS to get the list of volunteers # -#, fuzzy msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-05-06 11:59-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-10-26 10:44-0600\n" "Language-Team: python-doc-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" +"Last-Translator: \n" +"Language: es\n" +"X-Generator: Poedit 2.4.1\n" #: ../Doc/library/tkinter.scrolledtext.rst:2 msgid ":mod:`tkinter.scrolledtext` --- Scrolled Text Widget" -msgstr "" +msgstr ":mod:`tkinter.scrolledtext` --- Widget de texto desplazado" #: ../Doc/library/tkinter.scrolledtext.rst:10 msgid "**Source code:** :source:`Lib/tkinter/scrolledtext.py`" -msgstr "" +msgstr "**Código fuente:** :source:`Lib/tkinter/scrolledtext.py`" #: ../Doc/library/tkinter.scrolledtext.rst:14 msgid "" @@ -33,6 +35,12 @@ msgid "" "is a lot easier than setting up a text widget and scroll bar directly. The " "constructor is the same as that of the :class:`tkinter.Text` class." msgstr "" +"El módulo :mod:`tkinter.scrolledtext` proporciona una clase del mismo nombre " +"la cual implementa un widget de texto básico que tiene una barra de " +"desplazamiento vertical para hacer lo \"correcto.\" Usar la clase :class:" +"`ScrolledText` es mucho más fácil que configurar un widget de texto y una " +"barra de desplazamiento directamente. El constructor es el mismo que el de " +"la clase :class:`tkinter.Text`." #: ../Doc/library/tkinter.scrolledtext.rst:20 msgid "" @@ -42,17 +50,25 @@ msgid "" "`ScrolledText` widget to be used directly to achieve most normal geometry " "management behavior." msgstr "" +"El widget de texto y la barra de desplazamiento se empaquetan juntos en un :" +"class:`Frame`, y los métodos de los administradores de geometría :class:" +"`Grid` y :class:`Pack` se adquieren del objeto :class:`Frame`. Esto permite " +"que el widget :class:`ScrolledText` sea usado directamente para lograr el " +"funcionamiento más normal del administrador de geometría." #: ../Doc/library/tkinter.scrolledtext.rst:25 msgid "" "Should more specific control be necessary, the following attributes are " "available:" msgstr "" +"Si fuera necesario un control más específico, los siguientes atributos están " +"disponibles:" #: ../Doc/library/tkinter.scrolledtext.rst:31 msgid "The frame which surrounds the text and scroll bar widgets." msgstr "" +"El marco que rodea el texto y los widgets de la barra de desplazamiento." #: ../Doc/library/tkinter.scrolledtext.rst:36 msgid "The scroll bar widget." -msgstr "" +msgstr "El widget de la barra de desplazamiento." From 62b533846217af2040882b5188cde4de4d0c165a Mon Sep 17 00:00:00 2001 From: Ric Date: Tue, 27 Oct 2020 08:02:10 -0400 Subject: [PATCH 07/18] =?UTF-8?q?Traducci=C3=B3n=20library/urllib.error.po?= =?UTF-8?q?=20(#1109)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- library/urllib.error.po | 40 +++++++++++++++++++++++++++++++++++----- 1 file changed, 35 insertions(+), 5 deletions(-) diff --git a/library/urllib.error.po b/library/urllib.error.po index 7ed8de2205..4b2850b66e 100644 --- a/library/urllib.error.po +++ b/library/urllib.error.po @@ -1,29 +1,32 @@ # Copyright (C) 2001-2020, Python Software Foundation # This file is distributed under the same license as the Python package. -# Maintained by the python-doc-es workteam. +# Maintained by the python-doc-es workteam. # docs-es@python.org / https://mail.python.org/mailman3/lists/docs-es.python.org/ # Check https://github.com/python/python-docs-es/blob/3.8/TRANSLATORS to get the list of volunteers # -#, fuzzy msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-05-06 11:59-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-10-26 06:52-0400\n" "Language-Team: python-doc-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" +"Last-Translator: \n" +"Language: es\n" +"X-Generator: Poedit 2.4.1\n" #: ../Doc/library/urllib.error.rst:2 msgid ":mod:`urllib.error` --- Exception classes raised by urllib.request" msgstr "" +":mod:`urllib.error` --- Clases de excepción lanzadas por urllib.request" #: ../Doc/library/urllib.error.rst:10 msgid "**Source code:** :source:`Lib/urllib/error.py`" -msgstr "" +msgstr "**Código fuente:** :source:`Lib/urllib/error.py`" #: ../Doc/library/urllib.error.rst:14 msgid "" @@ -31,29 +34,40 @@ msgid "" "raised by :mod:`urllib.request`. The base exception class is :exc:" "`URLError`." msgstr "" +"El módulo :mod:`urllib.error` define las clases de excepción para las " +"excepciones lanzadas por :mod:`urllib.request`. La clase de excepción base " +"es :exc:`URLError`." #: ../Doc/library/urllib.error.rst:17 msgid "" "The following exceptions are raised by :mod:`urllib.error` as appropriate:" msgstr "" +"Las siguientes excepciones son lanzadas por :mod:`urllib.error` según sea " +"apropiado:" #: ../Doc/library/urllib.error.rst:21 msgid "" "The handlers raise this exception (or derived exceptions) when they run into " "a problem. It is a subclass of :exc:`OSError`." msgstr "" +"Los gestores lanzan esta excepción (o excepciones derivadas) cuando " +"encuentran un problema. Es una subclase de :exc:`OSError`." #: ../Doc/library/urllib.error.rst:26 msgid "" "The reason for this error. It can be a message string or another exception " "instance." msgstr "" +"El motivo de este error. Puede ser una cadena de mensaje u otra instancia de " +"una excepción." #: ../Doc/library/urllib.error.rst:29 msgid "" ":exc:`URLError` has been made a subclass of :exc:`OSError` instead of :exc:" "`IOError`." msgstr "" +"Se ha convertido a :exc:`URLError` en una subclase de :exc:`OSError` en " +"lugar de :exc:`IOError`." #: ../Doc/library/urllib.error.rst:36 msgid "" @@ -62,6 +76,11 @@ msgid "" "(the same thing that :func:`~urllib.request.urlopen` returns). This is " "useful when handling exotic HTTP errors, such as requests for authentication." msgstr "" +"A pesar de ser una excepción (una subclase de :exc:`URLError`), un :exc:" +"`HTTPError` también puede funcionar como un valor de retorno no excepcional " +"de tipo archivo (lo mismo que retorna :func:`~urllib.request.urlopen`). Esto " +"es útil para gestionar errores HTTP exóticos, como peticiones de " +"autentificación." #: ../Doc/library/urllib.error.rst:44 msgid "" @@ -69,16 +88,23 @@ msgid "" "corresponds to a value found in the dictionary of codes as found in :attr:" "`http.server.BaseHTTPRequestHandler.responses`." msgstr "" +"Un código de estado HTTP como los definidos en :rfc:`2616`. Este valor " +"numérico se corresponde con un valor de un diccionario de códigos como el " +"que hay en :attr:`http.server.BaseHTTPRequestHandler.responses`." #: ../Doc/library/urllib.error.rst:50 msgid "This is usually a string explaining the reason for this error." msgstr "" +"Normalmente esto es una cadena de caracteres que explica el motivo de este " +"error." #: ../Doc/library/urllib.error.rst:54 msgid "" "The HTTP response headers for the HTTP request that caused the :exc:" "`HTTPError`." msgstr "" +"Las cabeceras de la respuesta HTTP de la petición HTTP que causó el :exc:" +"`HTTPError`." #: ../Doc/library/urllib.error.rst:61 msgid "" @@ -87,3 +113,7 @@ msgid "" "expected amount (given by the *Content-Length* header). The :attr:`content` " "attribute stores the downloaded (and supposedly truncated) data." msgstr "" +"Esta excepción se lanza cuando la función :func:`~urllib.request." +"urlretrieve` detecta que la cantidad de datos descargados es menor que la " +"esperada (dada por la cabecera *Content-Length*). El atributo :attr:" +"`content` almacena los datos descargados (y supuestamente truncados)." From e267b4853a1d0fa5d455524af267233c39f1c750 Mon Sep 17 00:00:00 2001 From: Ric Date: Tue, 27 Oct 2020 10:04:51 -0400 Subject: [PATCH 08/18] =?UTF-8?q?Traducci=C3=B3n=20library/binary.po=20(#1?= =?UTF-8?q?112)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- library/binary.po | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/library/binary.po b/library/binary.po index fe09b17137..03112dc3d8 100644 --- a/library/binary.po +++ b/library/binary.po @@ -1,25 +1,27 @@ # Copyright (C) 2001-2020, Python Software Foundation # This file is distributed under the same license as the Python package. -# Maintained by the python-doc-es workteam. +# Maintained by the python-doc-es workteam. # docs-es@python.org / https://mail.python.org/mailman3/lists/docs-es.python.org/ # Check https://github.com/python/python-docs-es/blob/3.8/TRANSLATORS to get the list of volunteers # -#, fuzzy msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-05-06 11:59-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-10-27 07:04-0400\n" "Language-Team: python-doc-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" +"Last-Translator: \n" +"Language: es\n" +"X-Generator: Poedit 2.4.1\n" #: ../Doc/library/binary.rst:5 msgid "Binary Data Services" -msgstr "" +msgstr "Servicios de datos binarios" #: ../Doc/library/binary.rst:7 msgid "" @@ -28,6 +30,10 @@ msgid "" "specifically in relation to file formats and network protocols, are " "described in the relevant sections." msgstr "" +"Los módulos descritos en este capítulo proporcionan algunas operaciones " +"básicas de servicios para la manipulación de datos binarios. Otras " +"operaciones sobre datos binarios específicamente relacionadas con formatos " +"de archivo y protocolos de red están descritas en las secciones relevantes." #: ../Doc/library/binary.rst:12 msgid "" @@ -35,9 +41,14 @@ msgid "" "ASCII-compatible binary formats (for example, :mod:`re`) or all binary data " "(for example, :mod:`difflib`)." msgstr "" +"Algunas bibliotecas descritas bajo :ref:`textservices` también funcionan o " +"bien sobre formatos binarios compatibles con ASCII (por ejemplo :mod:`re`), " +"o bien sobre todos los datos binarios (por ejemplo :mod:`difflib`)." #: ../Doc/library/binary.rst:16 msgid "" "In addition, see the documentation for Python's built-in binary data types " "in :ref:`binaryseq`." msgstr "" +"Adicionalmente, véase la documentación para los tipos de datos binarios " +"incorporados en Python en :ref:`binaryseq`." From ed9ccdd7bb038c80942177064f8d0b3ee0d9ce58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Melissa=20Escobar=20Guti=C3=A9rrez?= <42422967+m3lissaeg@users.noreply.github.com> Date: Thu, 29 Oct 2020 12:50:56 -0500 Subject: [PATCH 09/18] traduccion library/persistence.po (#1119) --- library/persistence.po | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/library/persistence.po b/library/persistence.po index b034e512f3..df738ec71d 100644 --- a/library/persistence.po +++ b/library/persistence.po @@ -1,25 +1,27 @@ # Copyright (C) 2001-2020, Python Software Foundation # This file is distributed under the same license as the Python package. -# Maintained by the python-doc-es workteam. +# Maintained by the python-doc-es workteam. # docs-es@python.org / https://mail.python.org/mailman3/lists/docs-es.python.org/ # Check https://github.com/python/python-docs-es/blob/3.8/TRANSLATORS to get the list of volunteers # -#, fuzzy msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-05-06 11:59-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-10-28 15:17-0500\n" "Language-Team: python-doc-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" +"Last-Translator: \n" +"Language: es_CO\n" +"X-Generator: Poedit 2.4.1\n" #: ../Doc/library/persistence.rst:5 msgid "Data Persistence" -msgstr "" +msgstr "Persistencia de datos" #: ../Doc/library/persistence.rst:7 msgid "" @@ -29,7 +31,13 @@ msgid "" "objects from the bytes. The various DBM-related modules support a family of " "hash-based file formats that store a mapping of strings to other strings." msgstr "" +"Los módulos descritos en este capítulo soportan el almacenamiento de datos " +"de Python de forma persistente en el disco. Los módulos :mod:`pickle` y :mod:" +"`marshal` pueden convertir muchos tipos de datos de Python en un flujo de " +"bytes y luego recrear los objetos a partir de los bytes. Los diversos " +"módulos relacionados con DBM admiten una familia de formatos de archivo " +"basados en hash que almacenan un mapeo de cadenas a otras cadenas." #: ../Doc/library/persistence.rst:13 msgid "The list of modules described in this chapter is:" -msgstr "" +msgstr "La lista de módulos descritos en este capítulo es:" From 14bfebad1382b42b5a9c9a6b27c1800bec80bdb3 Mon Sep 17 00:00:00 2001 From: Maria Jose Molina Contreras <32220621+mjmolina@users.noreply.github.com> Date: Sat, 31 Oct 2020 01:00:48 +0100 Subject: [PATCH 10/18] Traduccion howto/regex (#1123) --- dictionaries/howto_regex.txt | 16 + howto/regex.po | 1028 ++++++++++++++++++++++++++++++---- 2 files changed, 929 insertions(+), 115 deletions(-) create mode 100644 dictionaries/howto_regex.txt diff --git a/dictionaries/howto_regex.txt b/dictionaries/howto_regex.txt new file mode 100644 index 0000000000..0ed84fe8d0 --- /dev/null +++ b/dictionaries/howto_regex.txt @@ -0,0 +1,16 @@ +metacarácteres +metacarácter +colocándolos +intentémoslo +reduccionista +enciérrelo +subexpresión +subgrupos +anidarlo +hexadecimales +colocándolas +reemplácelas +comprenderlas +precediéndolos +precederlos +uniéndolos \ No newline at end of file diff --git a/howto/regex.po b/howto/regex.po index 77d17b2d48..f99f626fce 100644 --- a/howto/regex.po +++ b/howto/regex.po @@ -6,34 +6,37 @@ # Check https://github.com/python/python-docs-es/blob/3.8/TRANSLATORS to # get the list of volunteers # -#, fuzzy msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-05-05 12:54+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-10-28 22:57+0100\n" "Language-Team: python-doc-es\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.8.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Last-Translator: \n" +"Language: es\n" +"X-Generator: Poedit 2.3.1\n" +"X-Poedit-SourceCharset: UTF-8\n" #: ../Doc/howto/regex.rst:5 msgid "Regular Expression HOWTO" -msgstr "" +msgstr "Expresiones regulares COMOS (*HOWTO*)" #: ../Doc/howto/regex.rst msgid "Author" -msgstr "" +msgstr "Autor" #: ../Doc/howto/regex.rst:7 msgid "A.M. Kuchling " -msgstr "" +msgstr "*A.M. Kuchling *" msgid "Abstract" -msgstr "" +msgstr "Resumen" #: ../Doc/howto/regex.rst:18 msgid "" @@ -41,10 +44,14 @@ msgid "" "Python with the :mod:`re` module. It provides a gentler introduction than " "the corresponding section in the Library Reference." msgstr "" +"Este documento es un tutorial de introducción al uso de expresiones " +"regulares en Python con el módulo :mod:`re`. Proporciona una introducción " +"más apacible que la sección correspondiente en la Referencia de la " +"Biblioteca." #: ../Doc/howto/regex.rst:24 msgid "Introduction" -msgstr "" +msgstr "Introducción" #: ../Doc/howto/regex.rst:26 msgid "" @@ -58,6 +65,17 @@ msgid "" "match for the pattern anywhere in this string?\". You can also use REs to " "modify a string or to split it apart in various ways." msgstr "" +"Las expresiones regulares (llamadas RE, o regex, o patrones de regex) son " +"esencialmente en un lenguaje de programación diminuto y altamente " +"especializado incrustado dentro de Python y disponible a través del módulo :" +"mod:`re`. Usando este pequeño lenguaje, especificas las reglas para el " +"conjunto de cadenas de caracteres posibles que deseas hacer coincidir; este " +"conjunto puede contener frases en inglés, o direcciones de correo " +"electrónico, o comandos TeX, o cualquier cosa que desee. A continuación, " +"puede hacer preguntas como \"¿Coincide esta cadena con el patrón?\" o \"¿Hay " +"alguna coincidencia con el patrón en alguna parte de esta cadena?\". También " +"puede utilizar RE para modificar una cadena de caracteres o dividirla de " +"varias formas." #: ../Doc/howto/regex.rst:35 msgid "" @@ -69,6 +87,13 @@ msgid "" "requires that you have a good understanding of the matching engine's " "internals." msgstr "" +"Los patrones de expresiones regulares se compilan en una serie de códigos de " +"bytes que luego son ejecutados por un motor de coincidencia escrito en C. " +"Para un uso avanzado, puede ser necesario prestar mucha atención a cómo el " +"motor ejecutará una RE dado y escribir la RE en un de cierta manera para " +"producir un código de bytes que se ejecute más rápido. La optimización no se " +"trata en este documento, porque requiere que tenga un buen conocimiento de " +"los componentes internos del motor de coincidencia." #: ../Doc/howto/regex.rst:42 msgid "" @@ -80,10 +105,18 @@ msgid "" "be slower than an elaborate regular expression, it will also probably be " "more understandable." msgstr "" +"El lenguaje de expresiones regulares es relativamente pequeño y restringido, " +"por lo que no todas las posibles tareas de procesamiento de cadenas de " +"caracteres se pueden realizar utilizando expresiones regulares. También hay " +"tareas que *se pueden* hacer con expresiones regulares, pero las expresiones " +"resultan ser muy complicadas. En estos casos, es mejor que escriba código " +"Python para realizar el procesamiento; Si bien el código Python será más " +"lento que una expresión regular elaborada, probablemente también será más " +"comprensible." #: ../Doc/howto/regex.rst:51 msgid "Simple Patterns" -msgstr "" +msgstr "Patrones simples" #: ../Doc/howto/regex.rst:53 msgid "" @@ -91,6 +124,10 @@ msgid "" "Since regular expressions are used to operate on strings, we'll begin with " "the most common task: matching characters." msgstr "" +"Comenzaremos aprendiendo sobre las expresiones regulares más simples " +"posibles. Dado que las expresiones regulares se utilizan para operar en " +"cadenas de caracteres, comenzaremos con la tarea más común: hacer coincidir " +"caracteres." #: ../Doc/howto/regex.rst:57 msgid "" @@ -98,10 +135,14 @@ msgid "" "expressions (deterministic and non-deterministic finite automata), you can " "refer to almost any textbook on writing compilers." msgstr "" +"Para obtener una explicación detallada de la informática que subyace a las " +"expresiones regulares (autómatas finitos deterministas y no deterministas), " +"puede consultar casi cualquier libro de texto sobre la escritura de " +"compiladores." #: ../Doc/howto/regex.rst:63 msgid "Matching Characters" -msgstr "" +msgstr "Coincidencia de Caracteres (*Matching Characters*)" #: ../Doc/howto/regex.rst:65 msgid "" @@ -110,6 +151,11 @@ msgid "" "can enable a case-insensitive mode that would let this RE match ``Test`` or " "``TEST`` as well; more about this later.)" msgstr "" +"La mayoría de letras y caracteres simplemente coincidirán. Por ejemplo, la " +"expresión regular ``test`` coincidirá exactamente con la cadena ``test``. " +"(Puede habilitar un modo que no distinga entre mayúsculas y minúsculas que " +"permitiría que este RE coincida con ``test`` o ``TEST`` también; más sobre " +"esto más adelante.)" #: ../Doc/howto/regex.rst:70 msgid "" @@ -120,12 +166,19 @@ msgid "" "this document is devoted to discussing various metacharacters and what they " "do." msgstr "" +"Hay excepciones a esta regla; algunos caracteres son especiales :dfn:" +"`metacharacters`, y no coinciden. En cambio, señalan que debe coincidir con " +"algo fuera de lo común, o afectan otras partes de la RE repitiéndolos o " +"cambiando su significado. Gran parte de este documento está dedicado a " +"discutir varios metacarácteres y lo que hacen." #: ../Doc/howto/regex.rst:76 msgid "" "Here's a complete list of the metacharacters; their meanings will be " "discussed in the rest of this HOWTO." msgstr "" +"Aquí hay una lista completa de los metacarácteres; sus significados se " +"discutirán en el resto de este COMO (*HOWTO*)." #: ../Doc/howto/regex.rst:83 msgid "" @@ -138,6 +191,14 @@ msgid "" "characters. If you wanted to match only lowercase letters, your RE would be " "``[a-z]``." msgstr "" +"Los primeros metacarácteres que veremos son ``[`` and ``]``. Se utilizan " +"para especificar una clase de carácter, que es un conjunto de caracteres que " +"desea hacer coincidir. Los caracteres se pueden enumerar individualmente, o " +"se puede indicar un rango de caracteres dando dos caracteres y separándolos " +"con un ``'-'``. Por ejemplo, ``[abc]`` coincidirá con cualquiera de los " +"caracteres ``a``, ``b`` o ``c``; esto es lo mismo que ``[a-c]``, que usa un " +"rango para expresar el mismo conjunto de caracteres. Si quisiera hacer " +"coincidir solo letras minúsculas, su RE sería ``[a-c]``." #: ../Doc/howto/regex.rst:92 msgid "" @@ -146,6 +207,10 @@ msgid "" "is usually a metacharacter, but inside a character class it's stripped of " "its special nature." msgstr "" +"Los metacarácteres no están activos dentro de las clases. Por ejemplo, ``[akm" +"$]`` coincidirá con cualquiera de los caracteres ``'a'``, ``'k'``, ``'m'``, " +"or ``'$'``; ``'$'`` suele ser un metacarácter, pero dentro de una clase de " +"carácter se le quita su naturaleza especial." #: ../Doc/howto/regex.rst:97 msgid "" @@ -156,6 +221,12 @@ msgid "" "does not have special meaning. For example: ``[5^]`` will match either a " "``'5'`` or a ``'^'``." msgstr "" +"Puede hacer coincidir los caracteres que no figuran en la clase mediante el " +"conjunto :dfn:`complementing`. Esto se indica mediante la inclusión de un " +"``'^'`` como primer carácter de la clase. Por ejemplo, ``[^5]`` coincidirá " +"con cualquier carácter excepto con ``'5'``. Si el símbolo de intercalación " +"aparece en otra parte de una clase de caracter, no tiene un significado " +"especial. Por ejemplo: ``[5^] `` coincidirá con un ``'5'`` o un ``'^'``." #: ../Doc/howto/regex.rst:103 msgid "" @@ -166,6 +237,13 @@ msgid "" "need to match a ``[`` or ``\\``, you can precede them with a backslash to " "remove their special meaning: ``\\[`` or ``\\\\``." msgstr "" +"Quizás el metacarácter más importante es la barra invertida, ``\\``. Al " +"igual que en los literales de cadena de Python, la barra invertida puede ir " +"seguida de varios caracteres para señalar varias secuencias especiales. " +"También se usa para escapar de todos los metacarácteres, de modo que aún " +"pueda emparejarlos en patrones; por ejemplo, si necesita hacer coincidir un " +"``[`` o ``\\``, puede precederlos con una barra invertida para eliminar su " +"significado especial: ``\\[`` o ``\\\\``." #: ../Doc/howto/regex.rst:110 msgid "" @@ -173,6 +251,10 @@ msgid "" "sets of characters that are often useful, such as the set of digits, the set " "of letters, or the set of anything that isn't whitespace." msgstr "" +"Algunas de las secuencias especiales que comienzan con ``'\\'`` representan " +"conjuntos predefinidos de caracteres que a menudo son útiles, como el " +"conjunto de dígitos, el conjunto de letras o el conjunto de cualquier cosa " +"que no sea un espacio en blanco." #: ../Doc/howto/regex.rst:115 msgid "" @@ -184,6 +266,14 @@ msgid "" "in a string pattern by supplying the :const:`re.ASCII` flag when compiling " "the regular expression." msgstr "" +"Tomemos un ejemplo: ``\\w`` coincide con cualquier carácter alfanumérico. Si " +"el patrón de expresiones regulares se expresa en bytes, esto es equivalente " +"a la clase ``[a-zA-Z0-9_]``. Si el patrón de expresiones regulares es una " +"cadena de caracteres, ``\\w`` coincidirá con todos los caracteres marcados " +"como letras en la base de datos Unicode proporcionada por el módulo :mod:" +"`unicodedata`. Puede usar la definición más restringida de ``\\w`` en un " +"patrón de cadena proporcionando el indicador :const:`re.ASCII` al compilar " +"la expresión regular." #: ../Doc/howto/regex.rst:123 msgid "" @@ -193,63 +283,81 @@ msgid "" "Standard Library reference. In general, the Unicode versions match any " "character that's in the appropriate category in the Unicode database." msgstr "" +"La siguiente lista de secuencias especiales no está completa. Para obtener " +"una lista completa de secuencias y definiciones de clases expandidas para " +"patrones de cadenas Unicode, consulte la última parte de :ref:`Regular " +"Expression Syntax ` en la referencia de la biblioteca estándar. " +"En general, las versiones Unicode coinciden con cualquier carácter que esté " +"en la categoría apropiada en la base de datos Unicode." #: ../Doc/howto/regex.rst:131 msgid "``\\d``" -msgstr "" +msgstr "``\\d``" #: ../Doc/howto/regex.rst:131 msgid "Matches any decimal digit; this is equivalent to the class ``[0-9]``." msgstr "" +"Coincide con cualquier dígito decimal; esto es equivalente a la clase " +"``[0-9]``." #: ../Doc/howto/regex.rst:134 msgid "``\\D``" -msgstr "" +msgstr "``\\D``" #: ../Doc/howto/regex.rst:134 msgid "" "Matches any non-digit character; this is equivalent to the class ``[^0-9]``." msgstr "" +"Coincide con cualquier carácter que no sea un dígito; esto es equivalente a " +"la clase ``[^0-9]``." #: ../Doc/howto/regex.rst:138 msgid "``\\s``" -msgstr "" +msgstr "``\\s``" #: ../Doc/howto/regex.rst:137 msgid "" "Matches any whitespace character; this is equivalent to the class ``[ \\t\\n" "\\r\\f\\v]``." msgstr "" +"Coincide con cualquier carácter de espacio en blanco; esto es equivalente a " +"la clase ``[ \\t\\n\\r\\f\\v]``." #: ../Doc/howto/regex.rst:142 msgid "``\\S``" -msgstr "" +msgstr "``\\S``" #: ../Doc/howto/regex.rst:141 msgid "" "Matches any non-whitespace character; this is equivalent to the class ``[^ " "\\t\\n\\r\\f\\v]``." msgstr "" +"Coincide con cualquier carácter que no sea un espacio en blanco; esto es " +"equivalente a la clase ``[^ \\t\\n\\r\\f\\v]``." #: ../Doc/howto/regex.rst:146 msgid "``\\w``" -msgstr "" +msgstr "``\\w``" #: ../Doc/howto/regex.rst:145 msgid "" "Matches any alphanumeric character; this is equivalent to the class ``[a-zA-" "Z0-9_]``." msgstr "" +"Coincide con cualquier carácter alfanumérico; esto es equivalente a la clase " +"``[a-zA-Z0-9_]``." #: ../Doc/howto/regex.rst:150 msgid "``\\W``" -msgstr "" +msgstr "``\\W``" #: ../Doc/howto/regex.rst:149 msgid "" "Matches any non-alphanumeric character; this is equivalent to the class " "``[^a-zA-Z0-9_]``." msgstr "" +"Coincide con cualquier carácter no alfanumérico; esto es equivalente a la " +"clase ``[^a-zA-Z0-9_]``." #: ../Doc/howto/regex.rst:152 msgid "" @@ -257,6 +365,9 @@ msgid "" "``[\\s,.]`` is a character class that will match any whitespace character, " "or ``','`` or ``'.'``." msgstr "" +"Estas secuencias se pueden incluir dentro de una clase de carácter. Por " +"ejemplo, ``[\\s,.]`` es una clase de carácter que coincidirá con cualquier " +"carácter de espacio en blanco, o ``','`` o ``'.'``." #: ../Doc/howto/regex.rst:156 msgid "" @@ -265,10 +376,14 @@ msgid "" "DOTALL`) where it will match even a newline. ``.`` is often used where you " "want to match \"any character\"." msgstr "" +"El metacarácter final en esta sección es ``.``. Coincide con cualquier cosa " +"excepto un carácter de nueva línea, y hay un modo alternativo (:const:`re." +"DOTALL`) donde coincidirá incluso con una nueva línea. ``.`` se usa a menudo " +"cuando se desea hacer coincidir \"cualquier carácter\"." #: ../Doc/howto/regex.rst:163 msgid "Repeating Things" -msgstr "" +msgstr "Repitiendo cosas" #: ../Doc/howto/regex.rst:165 msgid "" @@ -278,6 +393,12 @@ msgid "" "they wouldn't be much of an advance. Another capability is that you can " "specify that portions of the RE must be repeated a certain number of times." msgstr "" +"Ser capaz de hacer coincidir diferentes conjuntos de caracteres es lo " +"primero que pueden hacer las expresiones regulares que ya no es posible con " +"los métodos disponibles en cadenas de caracteres. Sin embargo, si esa fuera " +"la única capacidad adicional de las expresiones regulares, no serían un gran " +"avance. Otra capacidad es que puede especificar que partes de la RE deben " +"repetirse un cierto número de veces." #: ../Doc/howto/regex.rst:171 msgid "" @@ -286,12 +407,18 @@ msgid "" "that the previous character can be matched zero or more times, instead of " "exactly once." msgstr "" +"El primer metacarácter para repetir cosas que veremos es ``*``. ``*`` no " +"coincide con el carácter literal ``'*'``; en cambio, especifica que el " +"carácter anterior puede coincidir cero o más veces, en lugar de exactamente " +"una vez." #: ../Doc/howto/regex.rst:175 msgid "" "For example, ``ca*t`` will match ``'ct'`` (0 ``'a'`` characters), ``'cat'`` " "(1 ``'a'``), ``'caaat'`` (3 ``'a'`` characters), and so forth." msgstr "" +"Por ejemplo, ``ca*t`` coincidirá con ``'ct'`` (0 ``'a'`` caracteres), " +"``'cat'`` (1 ``'a'``), ``'caaat'`` (3 ``'a'`` caracteres), etc." #: ../Doc/howto/regex.rst:178 msgid "" @@ -300,6 +427,10 @@ msgid "" "portions of the pattern don't match, the matching engine will then back up " "and try again with fewer repetitions." msgstr "" +"Las repeticiones como ``*`` son :dfn:`greedy`; al repetir una RE, el motor " +"de emparejamiento intentará repetirlo tantas veces como sea posible. Si las " +"partes posteriores del patrón no coinciden, el motor de coincidencia hará " +"una copia de seguridad y volverá a intentarlo con menos repeticiones." #: ../Doc/howto/regex.rst:183 msgid "" @@ -308,98 +439,114 @@ msgid "" "letters from the class ``[bcd]``, and finally ends with a ``'b'``. Now " "imagine matching this RE against the string ``'abcbd'``." msgstr "" +"Un ejemplo paso a paso hará que esto sea más obvio. Consideremos la " +"expresión ``a[bcd]*b``. Esto coincide con la letra ``'a'``, cero o más " +"letras de la clase ``[bcd]``, y finalmente termina con una ``'b'``. Ahora " +"imagina hacer coincidir este RE con la cadena de caracteres ``'abcbd'``." #: ../Doc/howto/regex.rst:189 msgid "Step" -msgstr "" +msgstr "Pasos" #: ../Doc/howto/regex.rst:189 msgid "Matched" -msgstr "" +msgstr "Coincidencias" #: ../Doc/howto/regex.rst:189 msgid "Explanation" -msgstr "" +msgstr "Explicación" #: ../Doc/howto/regex.rst:191 msgid "1" -msgstr "" +msgstr "1" #: ../Doc/howto/regex.rst:191 msgid "``a``" -msgstr "" +msgstr "``a``" #: ../Doc/howto/regex.rst:191 msgid "The ``a`` in the RE matches." -msgstr "" +msgstr "La ``a`` en las RE coincide." #: ../Doc/howto/regex.rst:193 msgid "2" -msgstr "" +msgstr "2" #: ../Doc/howto/regex.rst:193 msgid "``abcbd``" -msgstr "" +msgstr "``abcbd``" #: ../Doc/howto/regex.rst:193 msgid "" "The engine matches ``[bcd]*``, going as far as it can, which is to the end " "of the string." msgstr "" +"El motor coincide con ``[bcd]*``, yendo tan lejos como puede, que es hasta " +"el final de la cadena de caracteres." #: ../Doc/howto/regex.rst:197 msgid "3" -msgstr "" +msgstr "3" #: ../Doc/howto/regex.rst:197 ../Doc/howto/regex.rst:205 msgid "*Failure*" -msgstr "" +msgstr "*Failure*" #: ../Doc/howto/regex.rst:197 msgid "" "The engine tries to match ``b``, but the current position is at the end of " "the string, so it fails." msgstr "" +"El motor intenta hacer coincidir ``b``, pero la posición actual está al " +"final de la cadena de caracteres, por lo que falla." #: ../Doc/howto/regex.rst:202 msgid "4" -msgstr "" +msgstr "4" #: ../Doc/howto/regex.rst:202 ../Doc/howto/regex.rst:213 msgid "``abcb``" -msgstr "" +msgstr "``abcb``" #: ../Doc/howto/regex.rst:202 msgid "Back up, so that ``[bcd]*`` matches one less character." msgstr "" +"Hace una copia de seguridad para que ``[bcd]*`` coincida con un carácter " +"menos." #: ../Doc/howto/regex.rst:205 msgid "5" -msgstr "" +msgstr "5" #: ../Doc/howto/regex.rst:205 msgid "" "Try ``b`` again, but the current position is at the last character, which is " "a ``'d'``." msgstr "" +"Intente ``b`` de nuevo, pero la posición actual está en el último caracter, " +"que es un ``'d'``." #: ../Doc/howto/regex.rst:209 ../Doc/howto/regex.rst:213 msgid "6" -msgstr "" +msgstr "6" #: ../Doc/howto/regex.rst:209 msgid "``abc``" -msgstr "" +msgstr "``abc``" #: ../Doc/howto/regex.rst:209 msgid "Back up again, so that ``[bcd]*`` is only matching ``bc``." msgstr "" +"Haga una copia de seguridad de nuevo, de modo que ``[bcd]*`` solo coincida " +"con ``bc``." #: ../Doc/howto/regex.rst:213 msgid "" "Try ``b`` again. This time the character at the current position is " "``'b'``, so it succeeds." msgstr "" +"Intente ``b`` de nuevo. Esta vez, el carácter en la posición actual es " +"``'b'``, por lo que tiene éxito." #: ../Doc/howto/regex.rst:219 msgid "" @@ -410,6 +557,13 @@ msgid "" "``[bcd]*``, and if that subsequently fails, the engine will conclude that " "the string doesn't match the RE at all." msgstr "" +"Se ha alcanzado el final de la RE y ha coincidido con ``'abcb'``. Esto " +"demuestra cómo el motor de coincidencias llega tan lejos como puede al " +"principio, y si no se encuentra ninguna coincidencia, retrocederá " +"progresivamente y volverá a intentar de la RE una y otra vez. Hará una copia " +"de seguridad hasta que haya probado cero coincidencias para ``[bcd]*``, y si " +"eso falla posteriormente, el motor concluirá que la cadena no coincide con " +"la RE en absoluto." #: ../Doc/howto/regex.rst:226 msgid "" @@ -420,6 +574,12 @@ msgid "" "similar example, ``ca+t`` will match ``'cat'`` (1 ``'a'``), ``'caaat'`` (3 " "``'a'``\\ s), but won't match ``'ct'``." msgstr "" +"Otro metacarácter que se repite es ``+``, que coincide una o más veces. " +"Preste especial atención a la diferencia entre ``*`` and ``+``; coincide con " +"*cero* o más veces, por lo que cualquier cosa que se repita puede no estar " +"presente en absoluto, mientras que ``+`` requiere al menos *one* aparición. " +"Para usar un ejemplo similar, ``'cat'`` (1 ``'a'``), ``'caaat'`` (3 ``'a'``" +"\\ s), pero no coincidirá con ``'ct'``." #: ../Doc/howto/regex.rst:233 msgid "" @@ -428,6 +588,10 @@ msgid "" "something as being optional. For example, ``home-?brew`` matches either " "``'homebrew'`` or ``'home-brew'``." msgstr "" +"Hay dos calificadores más que se repiten. El carácter de signo de " +"interrogación, ``?``, Coincide una vez o cero veces; puede pensar en ello " +"como si marcara algo como opcional. Por ejemplo, ``home-?brew`` coincide con " +"``'homebrew'`` o ``'home-brew'``." #: ../Doc/howto/regex.rst:238 msgid "" @@ -437,6 +601,11 @@ msgid "" "b'``, ``'a//b'``, and ``'a///b'``. It won't match ``'ab'``, which has no " "slashes, or ``'a////b'``, which has four." msgstr "" +"El calificador repetido más complicado es ``{m,n}``, donde *m* y *n* son " +"enteros decimales. Este calificador significa que debe haber al menos *m* " +"repeticiones y como máximo *n*. Por ejemplo, ``a/{1,3}b`` coincidirá con``'a/" +"b'``, ``'a//b'``, and ``'a///b'``. No coincidirá con `` 'ab' ', que no tiene " +"barras, ni con ``'a////b'``, que tiene cuatro." #: ../Doc/howto/regex.rst:244 msgid "" @@ -444,6 +613,9 @@ msgid "" "for the missing value. Omitting *m* is interpreted as a lower limit of 0, " "while omitting *n* results in an upper bound of infinity." msgstr "" +"Puede omitir *m* o *n*; en ese caso, se asume un valor razonable para el " +"valor faltante. Omitir *m* se interpreta como un límite inferior de 0, " +"mientras que omitir *n* da como resultado un límite superior de infinito." #: ../Doc/howto/regex.rst:248 msgid "" @@ -453,10 +625,15 @@ msgid "" "better to use ``*``, ``+``, or ``?`` when you can, simply because they're " "shorter and easier to read." msgstr "" +"Los lectores de una inclinación reduccionista pueden notar que los otros " +"tres calificativos pueden expresarse usando esta notación. ``{0,}`` es lo " +"mismo que ``*``, ``{1,}`` es equivalente a ``+``, y ``{0,1}`` es lo mismo " +"que ``?``. Es mejor usar ``*``, ``+``, o ``?`` cuando pueda, simplemente " +"porque son más cortos y fáciles de leer." #: ../Doc/howto/regex.rst:256 msgid "Using Regular Expressions" -msgstr "" +msgstr "Usando Expresiones Regulares" #: ../Doc/howto/regex.rst:258 msgid "" @@ -465,17 +642,25 @@ msgid "" "regular expression engine, allowing you to compile REs into objects and then " "perform matches with them." msgstr "" +"Ahora que hemos visto algunas expresiones regulares simples, ¿cómo las " +"usamos realmente en Python? El módulo :mod:`re` proporciona una interfaz " +"para el motor de expresiones regulares, lo que le permite compilar RE en " +"objetos y luego realizar coincidencias con ellos." #: ../Doc/howto/regex.rst:265 msgid "Compiling Regular Expressions" -msgstr "" +msgstr "Compilando Expresiones regulares" #: ../Doc/howto/regex.rst:267 +#, fuzzy msgid "" "Regular expressions are compiled into pattern objects, which have methods " "for various operations such as searching for pattern matches or performing " "string substitutions. ::" msgstr "" +"Las expresiones regulares se compilan en objetos de patrón, que tienen " +"métodos para diversas operaciones, como buscar coincidencias de patrones o " +"realizar sustituciones de cadenas de caracteres. ::" #: ../Doc/howto/regex.rst:276 msgid "" @@ -483,6 +668,10 @@ msgid "" "various special features and syntax variations. We'll go over the available " "settings later, but for now a single example will do::" msgstr "" +":func:`re.compile` también acepta un argumento opcional *flags*, usado para " +"habilitar varias características especiales y variaciones de sintaxis. " +"Repasaremos las configuraciones disponibles más adelante, pero por ahora un " +"solo ejemplo servirá:" #: ../Doc/howto/regex.rst:282 msgid "" @@ -494,16 +683,25 @@ msgid "" "simply a C extension module included with Python, just like the :mod:" "`socket` or :mod:`zlib` modules." msgstr "" +"La RE se pasa a :func:`re.compile` como una cadena de caracteres. Las RE se " +"manejan como cadenas de caracteres porque las expresiones regulares no son " +"parte del lenguaje central de Python y no se creó una sintaxis especial para " +"expresarlas. (Hay aplicaciones que no necesitan RE en absoluto, por lo que " +"no hay necesidad de aumentar la especificación del lenguaje incluyéndolas). " +"En cambio, el módulo :mod:`re` es simplemente un módulo de extensión C " +"incluido en Python, al igual que los módulos :mod:`socket` o :mod:`zlib`." #: ../Doc/howto/regex.rst:289 msgid "" "Putting REs in strings keeps the Python language simpler, but has one " "disadvantage which is the topic of the next section." msgstr "" +"Poner RE en cadenas de caracteres mantiene el lenguaje Python más simple, " +"pero tiene una desventaja que es el tema de la siguiente sección." #: ../Doc/howto/regex.rst:296 msgid "The Backslash Plague" -msgstr "" +msgstr "La plaga de la barra invertida (*The Backslash Plague*)" #: ../Doc/howto/regex.rst:298 msgid "" @@ -512,6 +710,11 @@ msgid "" "used without invoking their special meaning. This conflicts with Python's " "usage of the same character for the same purpose in string literals." msgstr "" +"Como se indicó anteriormente, las expresiones regulares usan el carácter de " +"barra invertida (``'\\'``) para indicar formas especiales o para permitir " +"que se usen caracteres especiales sin invocar su significado especial. Esto " +"entra en conflicto con el uso de Python del mismo carácter para el mismo " +"propósito en cadenas literales." #: ../Doc/howto/regex.rst:303 msgid "" @@ -524,38 +727,47 @@ msgid "" "to express this as a Python string literal, both backslashes must be escaped " "*again*." msgstr "" +"Supongamos que desea escribir una RE que coincida con la cadena de " +"caracteres ``\\section``, que podría encontrarse en un archivo LaTeX. Para " +"averiguar qué escribir en el código del programa, comience con la cadena " +"deseada para que coincida. A continuación, debe escapar de las barras " +"invertidas y otros metacarácteres precediéndolos con una barra invertida, lo " +"que da como resultado la cadena ``\\\\section``. La cadena resultante que " +"debe pasarse a :func:`re.compile` debe ser ``\\\\section``. Sin embargo, " +"para expresar esto como una cadena literal de Python, ambas barras " +"invertidas deben escaparse *nuevamente*." #: ../Doc/howto/regex.rst:312 msgid "Characters" -msgstr "" +msgstr "Caracteres" #: ../Doc/howto/regex.rst:312 msgid "Stage" -msgstr "" +msgstr "Explicación" #: ../Doc/howto/regex.rst:314 msgid "``\\section``" -msgstr "" +msgstr "``\\section``" #: ../Doc/howto/regex.rst:314 msgid "Text string to be matched" -msgstr "" +msgstr "Cadena de texto que debe coincidir" #: ../Doc/howto/regex.rst:316 msgid "``\\\\section``" -msgstr "" +msgstr "``\\\\section``" #: ../Doc/howto/regex.rst:316 msgid "Escaped backslash for :func:`re.compile`" -msgstr "" +msgstr "Barra invertida de escape para :func:`re.compile`" #: ../Doc/howto/regex.rst:318 ../Doc/howto/regex.rst:345 msgid "``\"\\\\\\\\section\"``" -msgstr "" +msgstr "``\"\\\\\\\\section\"``" #: ../Doc/howto/regex.rst:318 msgid "Escaped backslashes for a string literal" -msgstr "" +msgstr "Barra invertida de escape para un literal de cadena de caracteres" #: ../Doc/howto/regex.rst:321 msgid "" @@ -565,6 +777,12 @@ msgid "" "literal. In REs that feature backslashes repeatedly, this leads to lots of " "repeated backslashes and makes the resulting strings difficult to understand." msgstr "" +"En resumen, para hacer coincidir una barra invertida literal, uno tiene que " +"escribir ``'\\\\\\\\'`` como la cadena RE, porque la expresión regular debe " +"ser ``\\\\``, y cada barra invertida debe expresarse como ``\\\\`` dentro de " +"un literal de cadena Python normal. En las RE que presentan barras " +"invertidas repetidamente, esto genera muchas barras invertidas repetidas y " +"dificulta la comprensión de las cadenas resultantes." #: ../Doc/howto/regex.rst:327 msgid "" @@ -575,6 +793,13 @@ msgid "" "newline. Regular expressions will often be written in Python code using this " "raw string notation." msgstr "" +"La solución es utilizar la notación de cadena de caracteres sin formato de " +"Python para expresiones regulares; las barras invertidas no se manejan de " +"ninguna manera especial en una cadena literal con el prefijo ``'r'``, por lo " +"que ``r\"\\n\"`` es una cadena de dos caracteres que contiene ``'\\'`` y " +"``'n'``, mientras que ``\"\\n\"`` es una cadena de un carácter que contiene " +"una nueva línea. Las expresiones regulares a menudo se escribirán en código " +"Python utilizando esta notación de cadena sin formato." #: ../Doc/howto/regex.rst:333 msgid "" @@ -584,38 +809,44 @@ msgid "" "means the sequences will be invalid if raw string notation or escaping the " "backslashes isn't used." msgstr "" +"Además, las secuencias de escape especiales que son válidas en expresiones " +"regulares, pero no válidas como literales de cadena de Python, ahora dan " +"como resultado :exc:`DeprecationWarning` y eventualmente se convertirán en :" +"exc:`SyntaxError`, lo que significa que las secuencias no serán válidas. si " +"no se utiliza la notación de cadena sin formato o el escape de las barras " +"invertidas." #: ../Doc/howto/regex.rst:341 msgid "Regular String" -msgstr "" +msgstr "Cadena de caracteres regulares" #: ../Doc/howto/regex.rst:341 msgid "Raw string" -msgstr "" +msgstr "Cadena de caracteres crudas (*Raw string*)" #: ../Doc/howto/regex.rst:343 msgid "``\"ab*\"``" -msgstr "" +msgstr "``\"ab*\"``" #: ../Doc/howto/regex.rst:343 msgid "``r\"ab*\"``" -msgstr "" +msgstr "``r\"ab*\"``" #: ../Doc/howto/regex.rst:345 msgid "``r\"\\\\section\"``" -msgstr "" +msgstr "``r\"\\\\section\"``" #: ../Doc/howto/regex.rst:347 msgid "``\"\\\\w+\\\\s+\\\\1\"``" -msgstr "" +msgstr "``\"\\\\w+\\\\s+\\\\1\"``" #: ../Doc/howto/regex.rst:347 msgid "``r\"\\w+\\s+\\1\"``" -msgstr "" +msgstr "``r\"\\w+\\s+\\1\"``" #: ../Doc/howto/regex.rst:352 msgid "Performing Matches" -msgstr "" +msgstr "Realizando coincidencias" #: ../Doc/howto/regex.rst:354 msgid "" @@ -624,50 +855,60 @@ msgid "" "the most significant ones will be covered here; consult the :mod:`re` docs " "for a complete listing." msgstr "" +"Una vez que tiene un objeto que representa una expresión regular compilada, " +"¿qué hace con él? Los objetos de patrón tienen varios métodos y atributos. " +"Aquí solo se cubrirán los más importantes; consulte los documentos :mod:`re` " +"para obtener una lista completa." #: ../Doc/howto/regex.rst:360 ../Doc/howto/regex.rst:418 #: ../Doc/howto/regex.rst:1064 msgid "Method/Attribute" -msgstr "" +msgstr "Método/atributo" #: ../Doc/howto/regex.rst:360 ../Doc/howto/regex.rst:418 #: ../Doc/howto/regex.rst:1064 msgid "Purpose" -msgstr "" +msgstr "Objetivo" #: ../Doc/howto/regex.rst:362 msgid "``match()``" -msgstr "" +msgstr "``match()``" #: ../Doc/howto/regex.rst:362 msgid "Determine if the RE matches at the beginning of the string." msgstr "" +"Determina si la RE coincide con el comienzo de la cadena de caracteres." #: ../Doc/howto/regex.rst:365 msgid "``search()``" -msgstr "" +msgstr "``search()``" #: ../Doc/howto/regex.rst:365 msgid "Scan through a string, looking for any location where this RE matches." msgstr "" +"Escanea una cadena, buscando cualquier ubicación donde coincida este RE." #: ../Doc/howto/regex.rst:368 msgid "``findall()``" -msgstr "" +msgstr "``findall()``" #: ../Doc/howto/regex.rst:368 msgid "Find all substrings where the RE matches, and returns them as a list." msgstr "" +"Encuentra todas las subcadenas de caracteres donde coincide la RE y las " +"retorna como una lista." #: ../Doc/howto/regex.rst:371 msgid "``finditer()``" -msgstr "" +msgstr "``finditer()``" #: ../Doc/howto/regex.rst:371 msgid "" "Find all substrings where the RE matches, and returns them as an :term:" "`iterator`." msgstr "" +"Encuentra todas las subcadenas donde la RE coincide y las retorna como un " +"término iterado :term:`iterator`." #: ../Doc/howto/regex.rst:375 msgid "" @@ -676,6 +917,11 @@ msgid "" "objects>` instance is returned, containing information about the match: " "where it starts and ends, the substring it matched, and more." msgstr "" +":meth:`~re.Pattern.match` y :meth:`~re.Pattern.search` retornan ``None`` si " +"la coincidencia no puede ser encontrada. Si tienen éxito, se retorna una " +"instancia :ref:`match object `, que contiene información " +"sobre la coincidencia: dónde comienza y termina, la subcadena de caracteres " +"con la que coincidió, y más." #: ../Doc/howto/regex.rst:380 msgid "" @@ -686,12 +932,21 @@ msgid "" "whether the RE matches or fails. :file:`redemo.py` can be quite useful when " "trying to debug a complicated RE." msgstr "" +"Puede aprender sobre esto experimentando interactivamente con el módulo :mod:" +"`re`. Si tiene :mod:`tkinter` disponible, también puede consultar :source:" +"`Tools/demo/redemo.py`, un programa de demostración incluido con la " +"distribución de Python. Le permite ingresar RE y cadenas de caracteres, y " +"muestra si la RE coincide o falla. :file:`redemo.py` puede ser bastante útil " +"cuando se intenta depurar una RE complicado." #: ../Doc/howto/regex.rst:387 msgid "" "This HOWTO uses the standard Python interpreter for its examples. First, run " "the Python interpreter, import the :mod:`re` module, and compile a RE::" msgstr "" +"Este CÓMO (*HOWTO*) utiliza el intérprete estándar de Python para sus " +"ejemplos. Primero, ejecute el intérprete de Python, importe el módulo :mod:" +"`re` y compile en RE::" #: ../Doc/howto/regex.rst:395 msgid "" @@ -701,6 +956,12 @@ msgid "" "which will cause the interpreter to print no output. You can explicitly " "print the result of :meth:`!match` to make this clear. ::" msgstr "" +"Ahora, puede intentar hacer coincidir varias cadenas con la RE ``[a-z]+``. " +"Una cadena de caracteres vacía no debería coincidir en absoluto, ya que ``" +"+`` significa que 'una o más repeticiones'. :meth:`~re.Pattern.match` " +"debería retornar ``None`` en este caso, lo que hará que el intérprete no " +"imprima ningún resultado. Puede imprimir explícitamente el resultado de :" +"meth:`!match` para aclarar esto. ::" #: ../Doc/howto/regex.rst:405 msgid "" @@ -708,6 +969,10 @@ msgid "" "this case, :meth:`~re.Pattern.match` will return a :ref:`match object `, so you should store the result in a variable for later use. ::" msgstr "" +"Ahora, intentémoslo en una cadena de caracteres que debería coincidir, como " +"``tempo``.En este caso , :meth:`~re.Pattern.match` retornará un :ref:`match " +"object `, por lo que debe almacenar el resultado en una " +"variable para su posterior uso. ::" #: ../Doc/howto/regex.rst:413 msgid "" @@ -715,42 +980,47 @@ msgid "" "about the matching string. Match object instances also have several methods " "and attributes; the most important ones are:" msgstr "" +"Ahora puede consultar :ref:`match object ` para obtener " +"información sobre la cadena coincidente. Las instancias de objetos " +"coincidentes también tienen varios métodos y atributos; los más importantes " +"son:" #: ../Doc/howto/regex.rst:420 msgid "``group()``" -msgstr "" +msgstr "``group()``" #: ../Doc/howto/regex.rst:420 msgid "Return the string matched by the RE" -msgstr "" +msgstr "Retorna la cadena de caracteres que coincide con la RE" #: ../Doc/howto/regex.rst:422 msgid "``start()``" -msgstr "" +msgstr "``start()``" #: ../Doc/howto/regex.rst:422 msgid "Return the starting position of the match" -msgstr "" +msgstr "Retorna la posición de inicio de la coincidencia" #: ../Doc/howto/regex.rst:424 msgid "``end()``" -msgstr "" +msgstr "``end()``" #: ../Doc/howto/regex.rst:424 msgid "Return the ending position of the match" -msgstr "" +msgstr "Retorna la posición final de la coincidencia" #: ../Doc/howto/regex.rst:426 msgid "``span()``" -msgstr "" +msgstr "``span()``" #: ../Doc/howto/regex.rst:426 msgid "Return a tuple containing the (start, end) positions of the match" msgstr "" +"Retorna una tupla que contiene (inicio, final) las posiciones de coincidencia" #: ../Doc/howto/regex.rst:430 msgid "Trying these methods will soon clarify their meaning::" -msgstr "" +msgstr "Probando estos métodos pronto aclarará sus significados::" #: ../Doc/howto/regex.rst:439 msgid "" @@ -763,6 +1033,15 @@ msgid "" "scans through the string, so the match may not start at zero in that " "case. ::" msgstr "" +":meth:`~re.Match.group` retorna la subcadena de caracteres que coincide con " +"la RE. :meth:`~re.Match.start` y :meth:`~re.Match.end` retornan el índice " +"inicial y final de la coincidencia. :meth:`~re.Match.span` retorna el índice " +"inicial y final en una única tupla. Dado que el método :meth:`~re.Pattern." +"match` solo verifica si la RE coincide al comienzo de una cadena de " +"caracteres, :meth:`!start` siempre será cero. Sin embargo, el método de " +"patrones :meth:`~re.Pattern.search` escanea a través de la cadena de " +"caracteres, por lo que es posible que la coincidencia no comience en cero en " +"ese caso. ::" #: ../Doc/howto/regex.rst:456 msgid "" @@ -770,12 +1049,18 @@ msgid "" "` in a variable, and then check if it was ``None``. This " "usually looks like::" msgstr "" +"En programas reales, el estilo más común es almacenar :ref:`match object " +"` en una variable, y luego verificar si era ``None``. Esto " +"generalmente se ve así::" #: ../Doc/howto/regex.rst:467 msgid "" "Two pattern methods return all of the matches for a pattern. :meth:`~re." "Pattern.findall` returns a list of matching strings::" msgstr "" +"Dos métodos de patrón retornan todas las coincidencias de un patrón. :meth:" +"`~re.Pattern.findall` retorna una lista de cadenas de caracteres " +"coincidentes::" #: ../Doc/howto/regex.rst:474 msgid "" @@ -785,6 +1070,12 @@ msgid "" "in a :exc:`DeprecationWarning` and will eventually become a :exc:" "`SyntaxError`. See :ref:`the-backslash-plague`." msgstr "" +"El prefijo ``r``, que convierte al literal en una cadena de caracteres " +"literal sin formato, es necesario en este ejemplo porque las secuencias de " +"escape en un cadena de caracteres literal \"cocinado\" normal que no son " +"reconocidas por Python, a diferencia de las expresiones regulares, ahora dan " +"como resultado :exc:`DeprecationWarning` y eventualmente se convertirá en :" +"exc:`SyntaxError`. Ver :ref:`the-backslash-plague`." #: ../Doc/howto/regex.rst:480 msgid "" @@ -793,10 +1084,14 @@ msgid "" "sequence of :ref:`match object ` instances as an :term:" "`iterator`::" msgstr "" +":meth:`~re.Pattern.findall` tiene que crear la lista completa antes de que " +"pueda retornarse como resultado. El método :meth:`~re.Pattern.finditer` " +"retorna una secuencia de :ref:`match object ` instancias como " +"iterados :term:`iterator`::" #: ../Doc/howto/regex.rst:496 msgid "Module-Level Functions" -msgstr "" +msgstr "Funciones a nivel de módulo" #: ../Doc/howto/regex.rst:498 msgid "" @@ -807,6 +1102,13 @@ msgid "" "with the RE string added as the first argument, and still return either " "``None`` or a :ref:`match object ` instance. ::" msgstr "" +"No es necesario crear un objeto patrón y llamar a sus métodos; el módulo :" +"mod:`re` también proporciona funciones de nivel superior llamadas :func:`~re." +"match` , :func:`~re.search` , :func:`~re.findall` , :func:`~re.sub`, y así " +"sucesivamente. Estas funciones toman los mismos argumentos que el método de " +"patrón correspondiente con la cadena de RE agregada como primer argumento, y " +"aún así retornan una instancia de ``None`` o :ref:`match object `. ::" #: ../Doc/howto/regex.rst:510 msgid "" @@ -815,6 +1117,10 @@ msgid "" "cache, so future calls using the same RE won't need to parse the pattern " "again and again." msgstr "" +"Bajo el capó (*hood*), estas funciones simplemente crean un objeto patrón " +"para usted y llaman al método apropiado en él. También almacenan el objeto " +"compilado en un caché, por lo que las futuras llamadas que usen el mismo RE " +"no necesitarán analizar el patrón una y otra vez." #: ../Doc/howto/regex.rst:515 msgid "" @@ -823,10 +1129,15 @@ msgid "" "pre-compiling it will save a few function calls. Outside of loops, there's " "not much difference thanks to the internal cache." msgstr "" +"¿Debería utilizar estas funciones a nivel de módulo o debería obtener el " +"patrón y llamar a sus métodos usted mismo? Si está accediendo a una " +"expresión regular dentro de un bucle, la compilación previa guardará algunas " +"llamadas a funciones. Fuera de los bucles, no hay mucha diferencia gracias " +"al caché interno." #: ../Doc/howto/regex.rst:523 msgid "Compilation Flags" -msgstr "" +msgstr "Los Flags de compilación" #: ../Doc/howto/regex.rst:525 msgid "" @@ -839,71 +1150,86 @@ msgid "" "them; ``re.I | re.M`` sets both the :const:`I` and :const:`M` flags, for " "example." msgstr "" +"Las flags de compilación le permiten modificar algunos aspectos de cómo " +"funcionan las expresiones regulares. Las flags están disponibles en el " +"módulo :mod:`re` con dos nombres, un nombre largo como :const:`IGNORECASE` y " +"una forma corta de una letra como :const:`I`. (Si está familiarizado con los " +"modificadores de patrones de Perl, las formas de una letra usan las mismas " +"letras; la forma corta de :const:`re.VERBOSE` es :const:`re.X`, por ejemplo)." +"Se pueden especificar varios indicadores uniéndolos con *OR* bit a bit; ``re." +"I | re.M`` establece los flags :const:`I` and :const:`M`, por ejemplo." #: ../Doc/howto/regex.rst:533 msgid "" "Here's a table of the available flags, followed by a more detailed " "explanation of each one." msgstr "" +"Aquí hay una tabla de las flags disponibles, seguida de una explicación más " +"detallada de cada una." #: ../Doc/howto/regex.rst:537 msgid "Flag" -msgstr "" +msgstr "Flag" #: ../Doc/howto/regex.rst:537 msgid "Meaning" -msgstr "" +msgstr "Significado" #: ../Doc/howto/regex.rst:539 msgid ":const:`ASCII`, :const:`A`" -msgstr "" +msgstr ":const:`ASCII`, :const:`A`" #: ../Doc/howto/regex.rst:539 msgid "" "Makes several escapes like ``\\w``, ``\\b``, ``\\s`` and ``\\d`` match only " "on ASCII characters with the respective property." msgstr "" +"Hace que varios escapes como ``\\w``, ``\\b``, ``\\s`` y ``\\d`` coincidan " +"solo en caracteres ASCII con la propiedad respectiva." #: ../Doc/howto/regex.rst:543 msgid ":const:`DOTALL`, :const:`S`" -msgstr "" +msgstr ":const:`DOTALL`, :const:`S`" #: ../Doc/howto/regex.rst:543 msgid "Make ``.`` match any character, including newlines." msgstr "" +"Hace que ``.`` coincida con cualquier caracter, incluidas las nuevas líneas." #: ../Doc/howto/regex.rst:546 msgid ":const:`IGNORECASE`, :const:`I`" -msgstr "" +msgstr ":const:`IGNORECASE`, :const:`I`" #: ../Doc/howto/regex.rst:546 msgid "Do case-insensitive matches." -msgstr "" +msgstr "Hace coincidencias que no distingan entre mayúsculas y minúsculas." #: ../Doc/howto/regex.rst:548 msgid ":const:`LOCALE`, :const:`L`" -msgstr "" +msgstr ":const:`LOCALE`, :const:`L`" #: ../Doc/howto/regex.rst:548 msgid "Do a locale-aware match." -msgstr "" +msgstr "Hace una coincidencia con reconocimiento de configuración regional." #: ../Doc/howto/regex.rst:550 msgid ":const:`MULTILINE`, :const:`M`" -msgstr "" +msgstr ":const:`MULTILINE`, :const:`M`" #: ../Doc/howto/regex.rst:550 msgid "Multi-line matching, affecting ``^`` and ``$``." -msgstr "" +msgstr "Coincidencia de varias líneas, que afecta a ``^`` y ``$``." #: ../Doc/howto/regex.rst:553 msgid ":const:`VERBOSE`, :const:`X` (for 'extended')" -msgstr "" +msgstr ":const:`VERBOSE`, :const:`X` (for 'extended')" #: ../Doc/howto/regex.rst:553 msgid "" "Enable verbose REs, which can be organized more cleanly and understandably." msgstr "" +"Habilite RE detallados, que se pueden organizar de manera más limpia y " +"comprensible." #: ../Doc/howto/regex.rst:562 msgid "" @@ -920,12 +1246,30 @@ msgid "" "lowercasing doesn't take the current locale into account; it will if you " "also set the :const:`LOCALE` flag." msgstr "" +"Realiza una coincidencia que no distinga entre mayúsculas y minúsculas; la " +"clase de caracteres y las cadenas de caracteres literales coincidirán con " +"las letras ignorando las mayúsculas. Por ejemplo, ``[A-Z]`` también " +"coincidirá con letras minúsculas. La coincidencia completa de Unicode " +"también funciona a menos que se utilice la flag :const:`ASCII` para " +"deshabilitar las coincidencias que no sean ASCII. Cuando los patrones " +"Unicode ``[a-z]`` o ``[A-Z]`` se utilizan en combinación con el indicador :" +"const:`IGNORECASE` , coincidirán con las 52 letras ASCII y 4 letras " +"adicionales no ASCII 'İ' (U+0130, letra mayúscula latina I con un punto " +"arriba), 'ı' (U+0131, letra minúscula latina sin punto i),'ſ' (U+017F, letra " +"minúscula latina larga s) y 'K' (U+212A, signo de Kelvin). ``Spam`` " +"coincidirá ``'Spam'``, ``'spam'``, ``'spAM'``, o ``'ſpam'`` (este último " +"solo coincide en modo Unicode). Estas minúsculas no tiene en cuenta la " +"configuración regional actual; lo hará si también establece la flag :const:" +"`LOCALE` ." #: ../Doc/howto/regex.rst:580 msgid "" "Make ``\\w``, ``\\W``, ``\\b``, ``\\B`` and case-insensitive matching " "dependent on the current locale instead of the Unicode database." msgstr "" +"Hace que ``\\w``, ``\\W``, ``\\b``, ``\\B`` y la coincidencia que no " +"distinga entre mayúsculas y minúsculas dependan de la configuración regional " +"actual en lugar de la base de datos Unicode." #: ../Doc/howto/regex.rst:583 msgid "" @@ -945,12 +1289,32 @@ msgid "" "matching is already enabled by default in Python 3 for Unicode (str) " "patterns, and it is able to handle different locales/languages." msgstr "" +"Las configuraciones regionales son una característica de la biblioteca C " +"destinada a ayudar a escribir programas que tengan en cuenta las diferencias " +"de idioma. Por ejemplo, si está procesando texto en francés codificado, " +"querrá poder escribir ``\\w+`` para que coincida con las palabras, pero ``" +"\\w`` solo coincide con la clase de caracteres ``[A-Za-z]`` en patrones de " +"bytes; no coincidirá con los bytes correspondientes a ``é`` or ``ç``. Si su " +"sistema está configurado correctamente y se selecciona una configuración " +"regional francesa, ciertas funciones de C le dirán al programa que el byte " +"correspondiente a ``é`` también debe considerarse una letra. Establecer el " +"indicador :const:`LOCALE` al compilar una expresión regular hará que el " +"objeto compilado resultante use estas funciones C para ``\\w``; esto es más " +"lento, pero también permite que ``\\w+`` coincida con las palabras en " +"francés como era de esperar. Se desaconseja el uso de esta flag en Python 3 " +"ya que el mecanismo de configuración regional es muy poco confiable, solo " +"maneja una “cultura” a la vez y solo funciona con configuraciones regionales " +"de 8 bits. La coincidencia Unicode ya está habilitada de forma " +"predeterminada en Python 3 para patrones Unicode (str), y puede manejar " +"diferentes configuraciones regionales/idiomas." #: ../Doc/howto/regex.rst:605 msgid "" "(``^`` and ``$`` haven't been explained yet; they'll be introduced in " "section :ref:`more-metacharacters`.)" msgstr "" +"(``^`` y ``$`` aún no se han explicado; se presentarán en la sección :ref:" +"`more-metacharacters`.)" #: ../Doc/howto/regex.rst:608 msgid "" @@ -962,12 +1326,23 @@ msgid "" "matches either at the end of the string and at the end of each line " "(immediately preceding each newline)." msgstr "" +"Por lo general, ``^`` coincide solo al principio de la cadena de caracteres, " +"y ``$`` solo coincide con el final de la cadena de caracteres e " +"inmediatamente antes del salto de línea (si existe) al final de la cadena de " +"caracteres. Cuando se especifica esta bandera, ``^`` coincide al principio " +"de la cadena y al comienzo de cada línea dentro de la cadena, inmediatamente " +"después de cada nueva línea. De manera similar, el metacarácter ``$`` " +"coincide al final de la cadena de caracteres y al final de cada línea " +"(inmediatamente antes de cada nueva línea)." #: ../Doc/howto/regex.rst:621 msgid "" "Makes the ``'.'`` special character match any character at all, including a " "newline; without this flag, ``'.'`` will match anything *except* a newline." msgstr "" +"Hace que el carácter especial ``'.'`` coincida con cualquier carácter, " +"incluida una nueva línea; sin esta bandera, ``'.'`` coincidirá con cualquier " +"cosa *except* una nueva línea." #: ../Doc/howto/regex.rst:629 msgid "" @@ -975,6 +1350,10 @@ msgid "" "only matching instead of full Unicode matching. This is only meaningful for " "Unicode patterns, and is ignored for byte patterns." msgstr "" +"Haga que ``\\w``, ``\\W``, ``\\b``, ``\\B``, ``\\s`` y ``\\S`` realicen una " +"coincidencia solo en ASCII en lugar de una coincidencia Unicode completa. " +"Esto solo es significativo para los patrones Unicode y se ignora para los " +"patrones de bytes." #: ../Doc/howto/regex.rst:638 msgid "" @@ -987,16 +1366,28 @@ msgid "" "comments are marked by a ``'#'`` that's neither in a character class or " "preceded by an unescaped backslash." msgstr "" +"Esta flag le permite escribir expresiones regulares que son más legibles al " +"otorgarle más flexibilidad en cómo puede formatearlas. Cuando se ha " +"especificado esta flag, los espacios en blanco dentro de la cadena de " +"caracteres de la RE se ignoran, excepto cuando el espacio en blanco está en " +"una clase de caracteres o está precedido por una barra invertida sin escape; " +"esto le permite organizar e indentar la RE más claramente. Esta flag también " +"le permite poner comentarios dentro de una RE que serán ignorados por el " +"motor (*engine*); los comentarios están marcados con un ``'#'`` que no está " +"en una clase de carácter ni está precedido por una barra invertida sin " +"escape." #: ../Doc/howto/regex.rst:647 msgid "" "For example, here's a RE that uses :const:`re.VERBOSE`; see how much easier " "it is to read? ::" msgstr "" +"Por ejemplo, aquí hay una RE que usa :const:`re.VERBOSE`; ¿Ves lo fácil que " +"es leer? ::" #: ../Doc/howto/regex.rst:660 msgid "Without the verbose setting, the RE would look like this::" -msgstr "" +msgstr "Sin la configuración detallada, la RE se vería así::" #: ../Doc/howto/regex.rst:666 msgid "" @@ -1004,10 +1395,14 @@ msgid "" "has been used to break up the RE into smaller pieces, but it's still more " "difficult to understand than the version using :const:`re.VERBOSE`." msgstr "" +"En el ejemplo anterior, la concatenación automática de cadenas de caracteres " +"literales de Python se ha utilizado para dividir la RE en partes más " +"pequeñas, pero aún es más difícil de entender que la versión que usa :const:" +"`re.VERBOSE`." #: ../Doc/howto/regex.rst:672 msgid "More Pattern Power" -msgstr "" +msgstr "Más poder de patrones" #: ../Doc/howto/regex.rst:674 msgid "" @@ -1015,16 +1410,21 @@ msgid "" "this section, we'll cover some new metacharacters, and how to use groups to " "retrieve portions of the text that was matched." msgstr "" +"Hasta ahora solo hemos cubierto una parte de las características de las " +"expresiones regulares. En esta sección, cubriremos algunos metacarácteres " +"nuevos y cómo usar grupos para recuperar partes del texto que coincidió." #: ../Doc/howto/regex.rst:682 msgid "More Metacharacters" -msgstr "" +msgstr "Más metacarácteres" #: ../Doc/howto/regex.rst:684 msgid "" "There are some metacharacters that we haven't covered yet. Most of them " "will be covered in this section." msgstr "" +"Hay algunos metacarácteres que aún no hemos cubierto. La mayoría de ellos se " +"tratarán en esta sección." #: ../Doc/howto/regex.rst:687 msgid "" @@ -1037,10 +1437,18 @@ msgid "" "once at a given location, they can obviously be matched an infinite number " "of times." msgstr "" +"Algunos de los metacarácteres restantes que se discutirán son :dfn:`zero-" +"width assertions`. No hacen que el motor avance a través de la cadena de " +"caracteres; en cambio, no consumen caracteres en absoluto y simplemente " +"tienen éxito o fracasan. Por ejemplo, ``\\b`` es una flag de que la posición " +"actual se encuentra en el límite de una palabra; la posición no cambia por " +"la ``\\b`` en absoluto. Esto significa que las aserciones de ancho cero " +"nunca deben repetirse, porque si coinciden una vez en una ubicación " +"determinada, obviamente pueden coincidir un número infinito de veces." #: ../Doc/howto/regex.rst:703 msgid "``|``" -msgstr "" +msgstr "``|``" #: ../Doc/howto/regex.rst:696 msgid "" @@ -1051,16 +1459,24 @@ msgid "" "``'Crow'`` or ``'Servo'``, not ``'Cro'``, a ``'w'`` or an ``'S'``, and " "``'ervo'``." msgstr "" +"Alternancia, o el operador \"or\". Si *A* y *B* son expresiones regulares, " +"``A|B`` coincidirá con cualquier cadena de caracteres que coincida con *A* o " +"*B*. ``|`` tiene una precedencia muy baja para que funcione razonablemente " +"cuando está alternando cadenas de varios caracteres. ``Crow|Servo`` " +"coincidirá con `'Crow'`` o ``'Servo'``, no ``'Cro'``, un ``'w'`` o un " +"``'S'``, y ``'ervo'``." #: ../Doc/howto/regex.rst:702 msgid "" "To match a literal ``'|'``, use ``\\|``, or enclose it inside a character " "class, as in ``[|]``." msgstr "" +"Para hacer coincidir un literal ``'|'``, use ``\\|``, o enciérrelo dentro de " +"una clase de carácter, como en ``[|]``." #: ../Doc/howto/regex.rst:718 msgid "``^``" -msgstr "" +msgstr "``^``" #: ../Doc/howto/regex.rst:706 msgid "" @@ -1069,36 +1485,46 @@ msgid "" "`MULTILINE` mode, this also matches immediately after each newline within " "the string." msgstr "" +"Coincide con el comienzo de las líneas. A menos que se haya establecido la " +"flag :const:`MULTILINE` , esto solo coincidirá al principio de la cadena de " +"caracteres. En modo :const:`MULTILINE` , esto también coincide " +"inmediatamente después de cada nueva línea dentro de la cadena." #: ../Doc/howto/regex.rst:710 msgid "" "For example, if you wish to match the word ``From`` only at the beginning of " "a line, the RE to use is ``^From``. ::" msgstr "" +"Por ejemplo, si desea hacer coincidir la palabra ``From`` solo al principio " +"de una línea, la RE que debe usar es ``^From``. ::" #: ../Doc/howto/regex.rst:718 msgid "To match a literal ``'^'``, use ``\\^``." -msgstr "" +msgstr "Para una coincidencia literal ``'^'``, usar ``\\^``." #: ../Doc/howto/regex.rst:732 msgid "``$``" -msgstr "" +msgstr "``$``" #: ../Doc/howto/regex.rst:721 msgid "" "Matches at the end of a line, which is defined as either the end of the " "string, or any location followed by a newline character. ::" msgstr "" +"Coincide con el final de una línea, que se define como el final de la cadena " +"o cualquier ubicación seguida de un carácter de nueva línea. ::" #: ../Doc/howto/regex.rst:731 msgid "" "To match a literal ``'$'``, use ``\\$`` or enclose it inside a character " "class, as in ``[$]``." msgstr "" +"Para hacer coincidir un literal ``'$'``, usar ``\\$`` o enciérrelo dentro de " +"una clase de carácter, como en ``[$]``." #: ../Doc/howto/regex.rst:738 msgid "``\\A``" -msgstr "" +msgstr "``\\A``" #: ../Doc/howto/regex.rst:735 msgid "" @@ -1108,18 +1534,23 @@ msgid "" "string, but ``^`` may match at any location inside the string that follows a " "newline character." msgstr "" +"Coincide solo al comienzo de la cadena de caracteres. Cuando no está en el " +"modo :const:`MULTILINE`,``\\A`` y ``^`` son efectivamente lo mismo. En el " +"modo :const:`MULTILINE`, son diferentes: ``\\A`` todavía coincide solo al " +"principio de la cadena, pero ``^`` puede coincidir en cualquier ubicación " +"dentro de la cadena de caracteres que sigue a un carácter de nueva línea." #: ../Doc/howto/regex.rst:741 msgid "``\\Z``" -msgstr "" +msgstr "``\\Z``" #: ../Doc/howto/regex.rst:741 msgid "Matches only at the end of the string." -msgstr "" +msgstr "Coincidencias solo al final de la cadena de caracteres." #: ../Doc/howto/regex.rst:776 msgid "``\\b``" -msgstr "" +msgstr "``\\b``" #: ../Doc/howto/regex.rst:744 msgid "" @@ -1128,12 +1559,18 @@ msgid "" "characters, so the end of a word is indicated by whitespace or a non-" "alphanumeric character." msgstr "" +"Límite de palabra. Esta es una aserción de ancho cero que coincide solo al " +"principio o al final de una palabra. Una palabra se define como una " +"secuencia de caracteres alfanuméricos, por lo que el final de una palabra se " +"indica mediante un espacio en blanco o un carácter no alfanumérico." #: ../Doc/howto/regex.rst:749 msgid "" "The following example matches ``class`` only when it's a complete word; it " "won't match when it's contained inside another word. ::" msgstr "" +"El siguiente ejemplo coincide con ``class`` solo cuando es una palabra " +"completa; no coincidirá cuando esté contenido dentro de otra palabra. ::" #: ../Doc/howto/regex.rst:760 msgid "" @@ -1145,6 +1582,15 @@ msgid "" "won't match as you expect it to. The following example looks the same as our " "previous RE, but omits the ``'r'`` in front of the RE string. ::" msgstr "" +"Hay dos sutilezas que debe recordar al usar esta secuencia especial. " +"Primero, esta es la peor colisión entre las cadenas literales de caracteres " +"de Python y las secuencias de expresiones regulares. En las cadenas de " +"caracteres literales de Python, ``\\b`` es el carácter de retroceso " +"(*backspace*), valor ASCII 8. Si no está utilizando cadenas de caracteres " +"sin procesar, Python convertirá la ``\\b`` en una linea de retroceso, y su " +"RE no lo hará coincidir como lo espera. El siguiente ejemplo tiene el mismo " +"aspecto que nuestra RE anterior, pero omite la ``'r'`` delante de la cadena " +"de caracteres de RE. ::" #: ../Doc/howto/regex.rst:774 msgid "" @@ -1152,20 +1598,25 @@ msgid "" "\\b`` represents the backspace character, for compatibility with Python's " "string literals." msgstr "" +"En segundo lugar, dentro de una clase de caracteres, donde no hay uso para " +"esta aserción, ``\\b`` representa el carácter de retroceso, por " +"compatibilidad con las cadenas de caracteres literales de Python." #: ../Doc/howto/regex.rst:781 msgid "``\\B``" -msgstr "" +msgstr "``\\B``" #: ../Doc/howto/regex.rst:779 msgid "" "Another zero-width assertion, this is the opposite of ``\\b``, only matching " "when the current position is not at a word boundary." msgstr "" +"Otra flag de ancho cero, esto es lo opuesto a ``\\b``, solo coincide cuando " +"la posición actual no está en el límite de una palabra." #: ../Doc/howto/regex.rst:784 msgid "Grouping" -msgstr "" +msgstr "Agrupando" #: ../Doc/howto/regex.rst:786 msgid "" @@ -1175,6 +1626,12 @@ msgid "" "of interest. For example, an RFC-822 header line is divided into a header " "name and a value, separated by a ``':'``, like this:" msgstr "" +"Con frecuencia, necesita obtener más información que solo si la RE coincide " +"o no. Las expresiones regulares se utilizan a menudo para diseccionar " +"cadenas de caracteres escribiendo una RE dividido en varios subgrupos que " +"coinciden con diferentes componentes de interés. Por ejemplo, una línea de " +"encabezado RFC-822 se divide en un nombre de encabezado y un valor, " +"separados por un ``':'``, así:" #: ../Doc/howto/regex.rst:799 msgid "" @@ -1182,6 +1639,9 @@ msgid "" "header line, and has one group which matches the header name, and another " "group which matches the header's value." msgstr "" +"Esto se puede manejar escribiendo una expresión regular que coincida con una " +"línea de encabezado completa y que tenga un grupo que coincida con el nombre " +"del encabezado y otro grupo que coincida con el valor del encabezado." #: ../Doc/howto/regex.rst:803 msgid "" @@ -1192,6 +1652,12 @@ msgid "" "+``, ``?``, or ``{m,n}``. For example, ``(ab)*`` will match zero or more " "repetitions of ``ab``. ::" msgstr "" +"Los grupos están marcados por los ``'('``, ``')'`` metacarácteres. ``'('`` y " +"``')'`` tienen el mismo significado que en las expresiones matemáticas; " +"agrupan las expresiones contenidas en ellos, y puedes repetir el contenido " +"de un grupo con un calificador repetitivo, como ``*``, ``+``, ``?``, o ``{m," +"n}``. Por ejemplo, ``(ab)*`` coincidirá con cero o más repeticiones de " +"``ab``. ::" #: ../Doc/howto/regex.rst:814 msgid "" @@ -1204,6 +1670,14 @@ msgid "" "we'll see how to express groups that don't capture the span of text that " "they match. ::" msgstr "" +"Los grupos indicados con ``'('``, ``')'`` también capturan el índice inicial " +"y final del texto que coinciden; esto se puede recuperar pasando un " +"argumento a :meth:`~re.Match.group`, :meth:`~re.Match.start`, :meth:`~re." +"Match.end`, y :meth:`~re.Match.span`. Los grupos se numeran empezando por 0. " +"El grupo 0 siempre está presente; es todo las RE, entonces todos los " +"métodos :ref:`match object ` tienen el grupo 0 como argumento " +"predeterminado. Más adelante veremos cómo expresar grupos que no capturan el " +"espacio de texto que coinciden. ::" #: ../Doc/howto/regex.rst:830 msgid "" @@ -1211,6 +1685,9 @@ msgid "" "nested; to determine the number, just count the opening parenthesis " "characters, going from left to right. ::" msgstr "" +"Los subgrupos están numerados de izquierda a derecha, de 1 en adelante. Los " +"grupos se pueden anidar; para determinar el número, simplemente cuente los " +"caracteres del paréntesis de apertura, de izquierda a derecha. ::" #: ../Doc/howto/regex.rst:843 msgid "" @@ -1218,12 +1695,18 @@ msgid "" "which case it will return a tuple containing the corresponding values for " "those groups. ::" msgstr "" +":meth:`~re.Match.group` se pueden pasar varios números de grupo a la vez, en " +"cuyo caso retornará una tupla que contiene los valores correspondientes para " +"esos grupos. ::" #: ../Doc/howto/regex.rst:849 msgid "" "The :meth:`~re.Match.groups` method returns a tuple containing the strings " "for all the subgroups, from 1 up to however many there are. ::" msgstr "" +"El método :meth:`~re.Match.groups` retorna una tupla que contiene las " +"cadenas de caracteres de todos los subgrupos, desde 1 hasta la cantidad que " +"haya. ::" #: ../Doc/howto/regex.rst:855 msgid "" @@ -1235,10 +1718,20 @@ msgid "" "including arbitrary characters in a string, so be sure to use a raw string " "when incorporating backreferences in a RE." msgstr "" +"Las referencias inversas en un patrón le permiten especificar que el " +"contenido de un grupo de captura anterior también debe encontrarse en la " +"ubicación actual en la cadena. Por ejemplo,``\\1`` tendrá éxito si el " +"contenido exacto del grupo 1 se puede encontrar en la posición actual y " +"falla en caso contrario. Recuerde que las cadenas de caracteres literales de " +"Python también usan una barra invertida seguida de números para permitir la " +"inclusión de caracteres arbitrarios en una cadena de caracteres, así que " +"asegúrese de usar una cadena de caracteres sin procesar al incorporar " +"referencias inversas en una RE." #: ../Doc/howto/regex.rst:863 msgid "For example, the following RE detects doubled words in a string. ::" msgstr "" +"Por ejemplo, la siguiente RE detecta palabras duplicadas en una cadena. ::" #: ../Doc/howto/regex.rst:869 msgid "" @@ -1247,10 +1740,14 @@ msgid "" "you'll soon find out that they're *very* useful when performing string " "substitutions." msgstr "" +"Las referencias inversas como esta no suelen ser útiles para buscar a través " +"de una cadena --- hay pocos formatos de texto que repiten datos de esta " +"manera --- pero pronto descubrirá que son *muy* útiles al realizar " +"sustituciones de cadenas de caracteres." #: ../Doc/howto/regex.rst:875 msgid "Non-capturing and Named Groups" -msgstr "" +msgstr "Grupos con nombre y sin captura" #: ../Doc/howto/regex.rst:877 msgid "" @@ -1260,6 +1757,12 @@ msgid "" "help with this problem. Both of them use a common syntax for regular " "expression extensions, so we'll look at that first." msgstr "" +"Las RE elaboradas pueden utilizar muchos grupos, tanto para capturar " +"subcadenas de caracteres de interés como para agrupar y estructurar la " +"propia RE. En las RE complejas, resulta difícil realizar un seguimiento de " +"los números de los grupos. Hay dos funciones que ayudan con este problema. " +"Ambos usan una sintaxis común para las extensiones de expresiones regulares, " +"así que veremos eso primero." #: ../Doc/howto/regex.rst:883 msgid "" @@ -1271,6 +1774,14 @@ msgid "" "expressions would be assuming that ``&`` was a regular character and " "wouldn't have escaped it by writing ``\\&`` or ``[&]``." msgstr "" +"Perl 5 es bien conocido por sus poderosas adiciones a las expresiones " +"regulares estándar. Para estas nuevas características, los desarrolladores " +"de Perl no podían elegir nuevos metacarácteres de una sola pulsación de " +"tecla o nuevas secuencias especiales que comienzan con ``\\`` sin hacer que " +"las expresiones regulares de Perl sean confusamente diferentes de las RE " +"estándar. Si eligieran ``&`` como un nuevo metacarácter, por ejemplo, las " +"expresiones antiguas supondrían que ``&`` era un carácter regular y no se " +"habría escapado escribiendo ``\\&`` o ``[&]``." #: ../Doc/howto/regex.rst:890 msgid "" @@ -1282,6 +1793,14 @@ msgid "" "positive lookahead assertion) and ``(?:foo)`` is something else (a non-" "capturing group containing the subexpression ``foo``)." msgstr "" +"La solución elegida por los desarrolladores de Perl fue utilizar ``(?...)`` " +"como sintaxis de extensión. ``?`` inmediatamente después de un paréntesis " +"había un error de sintaxis porque el ``?`` no tendría nada que repetir, por " +"lo que esto no introdujo ningún problema de compatibilidad. Los caracteres " +"inmediatamente después de ``?`` Indican qué extensión se está utilizando, " +"por lo que ``(?=foo)`` es una cosa (una flag de anticipación positiva) y " +"``(?:foo)`` es otra cosa (un grupo de no captura que contiene la " +"subexpresión ``foo``)." #: ../Doc/howto/regex.rst:898 msgid "" @@ -1289,12 +1808,18 @@ msgid "" "Perl's extension syntax. If the first character after the question mark is " "a ``P``, you know that it's an extension that's specific to Python." msgstr "" +"Python admite varias de las extensiones de Perl y agrega una sintaxis de " +"extensión a la sintaxis de extensión de Perl. Si el primer carácter después " +"del signo de interrogación es una ``P``, sabrá que es una extensión " +"específica de Python." #: ../Doc/howto/regex.rst:903 msgid "" "Now that we've looked at the general extension syntax, we can return to the " "features that simplify working with groups in complex REs." msgstr "" +"Ahora que hemos visto la sintaxis de la extensión general, podemos volver a " +"las características que simplifican el trabajo con grupos en RE complejos." #: ../Doc/howto/regex.rst:906 msgid "" @@ -1303,6 +1828,11 @@ msgid "" "can make this fact explicit by using a non-capturing group: ``(?:...)``, " "where you can replace the ``...`` with any other regular expression. ::" msgstr "" +"A veces querrá usar un grupo para denotar una parte de una expresión " +"regular, pero no está interesado en recuperar el contenido del grupo. Puede " +"hacer que este hecho sea explícito utilizando un grupo de no captura: " +"``(?:...)``, donde puede reemplazar el ``...`` con cualquier otra expresión " +"regular. ::" #: ../Doc/howto/regex.rst:918 msgid "" @@ -1316,12 +1846,24 @@ msgid "" "performance difference in searching between capturing and non-capturing " "groups; neither form is any faster than the other." msgstr "" +"Excepto por el hecho de que no puede recuperar el contenido de lo que " +"coincide con el grupo, un grupo que no captura se comporta exactamente igual " +"que un grupo que captura; puede poner cualquier cosa dentro de él, repetirlo " +"con un metacarácter de repetición como ``*`` y anidarlo dentro de otros " +"grupos (capturando o no capturando). ``(?:...)`` es particularmente útil " +"cuando se modifica un patrón existente, ya que puede agregar nuevos grupos " +"sin cambiar cómo se numeran todos los demás grupos. Cabe mencionar que no " +"hay diferencia de rendimiento en la búsqueda entre grupos de captura y no " +"captura; ninguna forma es más rápida que la otra." #: ../Doc/howto/regex.rst:927 msgid "" "A more significant feature is named groups: instead of referring to them by " "numbers, groups can be referenced by a name." msgstr "" +"Una característica más significativa son los grupos nombrados: en lugar de " +"referirse a ellos por números, los grupos pueden ser referenciados por un " +"nombre." #: ../Doc/howto/regex.rst:930 msgid "" @@ -1334,12 +1876,22 @@ msgid "" "still given numbers, so you can retrieve information about a group in two " "ways::" msgstr "" +"La sintaxis de un grupo con nombre es una de las extensiones específicas de " +"Python: ``(?P...)``. *name* es, obviamente, el nombre del grupo. Los " +"grupos con nombre se comportan exactamente como los grupos de captura y, " +"además, asocian un nombre con un grupo. Los métodos :ref:`match object " +"` que tratan con la captura de grupos aceptan enteros que se " +"refieren al grupo por número o cadenas de caracteres que contienen el nombre " +"del grupo deseado. Los grupos con nombre todavía reciben números, por lo que " +"puede recuperar información sobre un grupo de dos maneras:" #: ../Doc/howto/regex.rst:945 msgid "" "Additionally, you can retrieve named groups as a dictionary with :meth:`~re." "Match.groupdict`::" msgstr "" +"Además, puede recuperar grupos nombrados como un diccionario con :meth:`~re." +"Match.groupdict`::" #: ../Doc/howto/regex.rst:952 msgid "" @@ -1347,12 +1899,17 @@ msgid "" "instead of having to remember numbers. Here's an example RE from the :mod:" "`imaplib` module::" msgstr "" +"Los grupos con nombre son útiles porque le permiten usar nombres fáciles de " +"recordar, en lugar de tener que recordar números. Aquí hay un ejemplo de RE " +"del módulo :mod:`imaplib`::" #: ../Doc/howto/regex.rst:963 msgid "" "It's obviously much easier to retrieve ``m.group('zonem')``, instead of " "having to remember to retrieve group 9." msgstr "" +"Obviamente, es mucho más fácil recuperar ``m.group('zonem')``, en lugar de " +"tener que recordar recuperar el grupo 9." #: ../Doc/howto/regex.rst:966 msgid "" @@ -1364,10 +1921,17 @@ msgid "" "words, ``\\b(\\w+)\\s+\\1\\b`` can also be written as ``\\b(?P\\w+)\\s" "+(?P=word)\\b``::" msgstr "" +"La sintaxis de las referencias inversas en una expresión como ``(...)\\1`` " +"se refiere al número del grupo. Naturalmente, existe una variante que usa el " +"nombre del grupo en lugar del número. Esta es otra extensión de Python: ``(?" +"P=name)`` indica que el contenido del grupo llamado *name* debe coincidir " +"nuevamente en el punto actual. La expresión regular para encontrar palabras " +"duplicadas, ``\\b(\\w+)\\s+\\1\\b`` también se puede escribir como ``\\b(?" +"P\\w+)\\s+(?P=word)\\b``::" #: ../Doc/howto/regex.rst:979 msgid "Lookahead Assertions" -msgstr "" +msgstr "Aserciones Anticipadas" #: ../Doc/howto/regex.rst:981 msgid "" @@ -1375,10 +1939,13 @@ msgid "" "assertions are available in both positive and negative form, and look like " "this:" msgstr "" +"Otra aserción de ancho cero es la aserción de anticipación. Las afirmaciones " +"anticipadas están disponibles tanto en forma positiva como negativa, y " +"tienen este aspecto:" #: ../Doc/howto/regex.rst:989 msgid "``(?=...)``" -msgstr "" +msgstr "``(?=...)``" #: ../Doc/howto/regex.rst:985 msgid "" @@ -1388,10 +1955,15 @@ msgid "" "tried, the matching engine doesn't advance at all; the rest of the pattern " "is tried right where the assertion started." msgstr "" +"Aserción de anticipación positiva. Esto tiene éxito si la expresión regular " +"contenida, representada aquí por ``...``, coincide con éxito en la ubicación " +"actual y falla en caso contrario. Pero, una vez que se ha probado la " +"expresión contenida, el motor de comparación no avanza en absoluto; el resto " +"del patrón se intenta justo donde comenzó la aserción." #: ../Doc/howto/regex.rst:994 msgid "``(?!...)``" -msgstr "" +msgstr "``(?!...)``" #: ../Doc/howto/regex.rst:992 msgid "" @@ -1399,6 +1971,9 @@ msgid "" "assertion; it succeeds if the contained expression *doesn't* match at the " "current position in the string." msgstr "" +"Aserción de anticipación negativa. Esto es lo opuesto a la flag positiva; " +"tiene éxito si la expresión contenida *no* coincide con la posición actual " +"en la cadena." #: ../Doc/howto/regex.rst:996 msgid "" @@ -1407,14 +1982,19 @@ msgid "" "name and an extension, separated by a ``.``. For example, in ``news.rc``, " "``news`` is the base name, and ``rc`` is the filename's extension." msgstr "" +"Para que esto sea concreto, veamos un caso en el que una búsqueda anticipada " +"es útil. Considere un patrón simple para hacer coincidir un nombre de " +"archivo y dividirlo en un nombre base y una extensión, separados por un ``." +"``. Por ejemplo, en ``news.rc``, ``news`` es el nombre base y ``rc`` es la " +"extensión del nombre del archivo." #: ../Doc/howto/regex.rst:1001 msgid "The pattern to match this is quite simple:" -msgstr "" +msgstr "El patrón para que coincida con esto es bastante simple:" #: ../Doc/howto/regex.rst:1003 msgid "``.*[.].*$``" -msgstr "" +msgstr "``.*[.].*$``" #: ../Doc/howto/regex.rst:1005 msgid "" @@ -1425,12 +2005,21 @@ msgid "" "expression matches ``foo.bar`` and ``autoexec.bat`` and ``sendmail.cf`` and " "``printers.conf``." msgstr "" +"Tenga en cuenta que el ``.`` Debe tratarse especialmente porque es un " +"metacarácter, por lo que está dentro de una clase de carácter para coincidir " +"solo con ese carácter específico. También observe el final ``$``; esto se " +"agrega para garantizar que todo el resto de la cadena deba incluirse en la " +"extensión. Esta expresión regular coincide con ``foo.bar`` y ``autoexec." +"bat`` y ``sendmail.cf`` y ``printers.conf``." #: ../Doc/howto/regex.rst:1012 msgid "" "Now, consider complicating the problem a bit; what if you want to match " "filenames where the extension is not ``bat``? Some incorrect attempts:" msgstr "" +"Ahora, considere complicar un poco el problema; ¿Qué sucede si desea hacer " +"coincidir los nombres de archivo donde la extensión no es ``bat``? Algunos " +"intentos incorrectos:" #: ../Doc/howto/regex.rst:1015 msgid "" @@ -1438,10 +2027,13 @@ msgid "" "requiring that the first character of the extension is not a ``b``. This is " "wrong, because the pattern also doesn't match ``foo.bar``." msgstr "" +"``.*[.][^b].*$`` El primer intento anterior intenta excluir ``bat`` " +"requiriendo que el primer carácter de la extensión no sea una ``b``. Esto " +"está mal, porque el patrón tampoco coincide ``foo.bar``." #: ../Doc/howto/regex.rst:1019 msgid "``.*[.]([^b]..|.[^a].|..[^t])$``" -msgstr "" +msgstr "``.*[.]([^b]..|.[^a].|..[^t])$``" #: ../Doc/howto/regex.rst:1021 msgid "" @@ -1453,10 +2045,17 @@ msgid "" "with a two-letter extension such as ``sendmail.cf``. We'll complicate the " "pattern again in an effort to fix it." msgstr "" +"La expresión se vuelve más desordenada cuando intenta parchear la primera " +"solución requiriendo que coincida uno de los siguientes casos: el primer " +"carácter de la extensión no es ``b``; el segundo carácter no es ``a``; o el " +"tercer carácter no es ``t``. Esto acepta ``foo.bar`` y rechaza ``autoexec." +"bat``, pero requiere una extensión de tres letras y no acepta un nombre de " +"archivo con una extensión de dos letras como ``sendmail.cf``. Complicaremos " +"el patrón nuevamente en un esfuerzo por arreglarlo." #: ../Doc/howto/regex.rst:1029 msgid "``.*[.]([^b].?.?|.[^a]?.?|..?[^t]?)$``" -msgstr "" +msgstr "``.*[.]([^b].?.?|.[^a]?.?|..?[^t]?)$``" #: ../Doc/howto/regex.rst:1031 msgid "" @@ -1464,6 +2063,9 @@ msgid "" "order to allow matching extensions shorter than three characters, such as " "``sendmail.cf``." msgstr "" +"En el tercer intento, la segunda y tercera letras se hacen opcionales para " +"permitir extensiones coincidentes de menos de tres caracteres, como " +"``sendmail.cf``." #: ../Doc/howto/regex.rst:1035 msgid "" @@ -1472,10 +2074,14 @@ msgid "" "``bat`` and ``exe`` as extensions, the pattern would get even more " "complicated and confusing." msgstr "" +"El patrón se está volviendo realmente complicado ahora, lo que dificulta su " +"lectura y comprensión. Peor aún, si el problema cambia y desea excluir tanto " +"``bat`` y ``exe`` como extensiones, el patrón se volvería aún más complicado " +"y confuso." #: ../Doc/howto/regex.rst:1040 msgid "A negative lookahead cuts through all this confusion:" -msgstr "" +msgstr "Una mirada anticipada negativa atraviesa toda esta confusión:" #: ../Doc/howto/regex.rst:1042 msgid "" @@ -1486,6 +2092,12 @@ msgid "" "starts with ``bat``, will be allowed. The ``[^.]*`` makes sure that the " "pattern works when there are multiple dots in the filename." msgstr "" +"``.*[.](?!bat$)[^.]*$`` La búsqueda anticipada negativa significa: si la " +"expresión ``bat`` no coincide en este punto, pruebe el resto del patrón; si " +"``bat$`` coincide, todo el patrón fallará. El ``$`` final es necesario para " +"garantizar que se permita algo como ``sample.batch``, donde la extensión " +"solo comienza con ``bat``. El ``[^.]*`` asegura que el patrón funcione " +"cuando hay varios puntos en el nombre del archivo." #: ../Doc/howto/regex.rst:1049 msgid "" @@ -1493,14 +2105,17 @@ msgid "" "alternative inside the assertion. The following pattern excludes filenames " "that end in either ``bat`` or ``exe``:" msgstr "" +"Ahora es fácil excluir otra extensión de nombre de archivo; simplemente " +"agréguelo como una alternativa dentro de la aserción. El siguiente patrón " +"excluye los nombres de archivo que terminan en ``bat`` o ``exe``:" #: ../Doc/howto/regex.rst:1053 msgid "``.*[.](?!bat$|exe$)[^.]*$``" -msgstr "" +msgstr "``.*[.](?!bat$|exe$)[^.]*$``" #: ../Doc/howto/regex.rst:1057 msgid "Modifying Strings" -msgstr "" +msgstr "Modificando cadenas de caracteres" #: ../Doc/howto/regex.rst:1059 msgid "" @@ -1508,38 +2123,48 @@ msgid "" "Regular expressions are also commonly used to modify strings in various " "ways, using the following pattern methods:" msgstr "" +"Hasta este punto, simplemente hemos realizado búsquedas en una cadena de " +"caracteres estática. Las expresiones regulares también se utilizan " +"comúnmente para modificar cadenas de varias formas, utilizando los " +"siguientes métodos de patrón:" #: ../Doc/howto/regex.rst:1066 msgid "``split()``" -msgstr "" +msgstr "``split()``" #: ../Doc/howto/regex.rst:1066 msgid "Split the string into a list, splitting it wherever the RE matches" msgstr "" +"Divida la cadena de caracteres en una lista, dividiéndola donde coincida la " +"RE" #: ../Doc/howto/regex.rst:1069 msgid "``sub()``" -msgstr "" +msgstr "``sub()``" #: ../Doc/howto/regex.rst:1069 msgid "" "Find all substrings where the RE matches, and replace them with a different " "string" msgstr "" +"Encuentra todas las subcadenas de caracteres donde coincida la RE y las " +"reemplaza con una cadena de caracteres diferente" #: ../Doc/howto/regex.rst:1072 msgid "``subn()``" -msgstr "" +msgstr "``subn()``" #: ../Doc/howto/regex.rst:1072 msgid "" "Does the same thing as :meth:`!sub`, but returns the new string and the " "number of replacements" msgstr "" +"Hace lo mismo que :meth:`!sub`, pero retorna la nueva cadena de caracteres y " +"el número de reemplazos" #: ../Doc/howto/regex.rst:1079 msgid "Splitting Strings" -msgstr "" +msgstr "Separando cadenas de caracteres" #: ../Doc/howto/regex.rst:1081 msgid "" @@ -1550,6 +2175,13 @@ msgid "" "splitting by whitespace or by a fixed string. As you'd expect, there's a " "module-level :func:`re.split` function, too." msgstr "" +"El método :meth:`~re.Pattern.split` de un patrón que divide una cadena de " +"caracteres donde la RE coincide, retornando una lista de las piezas. Es " +"similar al método de cadenas de caracteres :meth:`~str.split` pero " +"proporciona mucha más generalidad en los delimitadores por los que puede " +"dividir; cadena de caracteres :meth:`!split` solo admite la división por " +"espacios en blanco o por una cadena fija. Como era de esperar, también hay " +"una función a nivel de módulo :func:`re.split`." #: ../Doc/howto/regex.rst:1092 msgid "" @@ -1558,6 +2190,10 @@ msgid "" "part of the resulting list. If *maxsplit* is nonzero, at most *maxsplit* " "splits are performed." msgstr "" +"Dividir *string* por las coincidencias de la expresión regular. Si se " +"utilizan paréntesis de captura en la RE, su contenido también se retornará " +"como parte de la lista resultante. Si *maxsplit* es distinto de cero, se " +"realizan como máximo divisiones *maxsplit* ." #: ../Doc/howto/regex.rst:1097 msgid "" @@ -1567,6 +2203,11 @@ msgid "" "the following example, the delimiter is any sequence of non-alphanumeric " "characters. ::" msgstr "" +"Puede limitar el número de divisiones realizadas, pasando un valor para " +"*maxsplit*. Cuando *maxsplit* es distinto de cero, se realizarán como máximo " +"*maxsplit* divisiones, y el resto de la cadena de caracteres se retorna como " +"el elemento final de la lista. En el siguiente ejemplo, el delimitador es " +"cualquier secuencia de caracteres no alfanuméricos. ::" #: ../Doc/howto/regex.rst:1109 msgid "" @@ -1575,16 +2216,22 @@ msgid "" "used in the RE, then their values are also returned as part of the list. " "Compare the following calls::" msgstr "" +"A veces, no solo le interesa cuál es el texto entre delimitadores, sino que " +"también necesita saber cuál era el delimitador. Si se utilizan paréntesis de " +"captura en la RE, sus valores también se retornan como parte de la lista. " +"Compare las siguientes llamadas:" #: ../Doc/howto/regex.rst:1121 msgid "" "The module-level function :func:`re.split` adds the RE to be used as the " "first argument, but is otherwise the same. ::" msgstr "" +"La función de nivel de módulo :func:`re.split` agrega la RE que se usará " +"como primer argumento, pero por lo demás es el mismo. ::" #: ../Doc/howto/regex.rst:1133 msgid "Search and Replace" -msgstr "" +msgstr "Búsqueda y Remplazo" #: ../Doc/howto/regex.rst:1135 msgid "" @@ -1593,6 +2240,10 @@ msgid "" "replacement value, which can be either a string or a function, and the " "string to be processed." msgstr "" +"Otra tarea común es encontrar todas las coincidencias para un patrón y " +"reemplazarlas con una cadena de caracteres diferente. El método :meth:`~re." +"Pattern.sub` toma un valor de reemplazo, que puede ser una cadena de " +"caracteres o una función, y la cadena de caracteres a procesar." #: ../Doc/howto/regex.rst:1142 msgid "" @@ -1600,6 +2251,10 @@ msgid "" "occurrences of the RE in *string* by the replacement *replacement*. If the " "pattern isn't found, *string* is returned unchanged." msgstr "" +"Retorna la cadena de caracteres obtenida al reemplazar las apariciones no " +"superpuestas del extremo izquierdo de la RE en *string* por el remplazo " +"*replacement*. Si no se encuentra el patrón, el *string* se retorna sin " +"cambios." #: ../Doc/howto/regex.rst:1146 msgid "" @@ -1607,12 +2262,17 @@ msgid "" "to be replaced; *count* must be a non-negative integer. The default value " "of 0 means to replace all occurrences." msgstr "" +"El argumento opcional *count* es el número máximo de ocurrencias de patrones " +"que se reemplazarán; *count* debe ser un número entero no negativo. El valor " +"predeterminado de 0 significa reemplazar todas las ocurrencias." #: ../Doc/howto/regex.rst:1150 msgid "" "Here's a simple example of using the :meth:`~re.Pattern.sub` method. It " "replaces colour names with the word ``colour``::" msgstr "" +"Aquí hay un ejemplo simple del uso del método :meth:`~re.Pattern.sub`. " +"Reemplaza los nombres de los colores con la palabra ``colour``::" #: ../Doc/howto/regex.rst:1159 msgid "" @@ -1620,12 +2280,17 @@ msgid "" "tuple containing the new string value and the number of replacements that " "were performed::" msgstr "" +"El método :meth:`~re.Pattern.subn` hace el mismo trabajo, pero retorna una " +"tupla de 2 que contiene el nuevo valor de cadena de caracteres y el número " +"de reemplazos que se realizaron::" #: ../Doc/howto/regex.rst:1168 msgid "" "Empty matches are replaced only when they're not adjacent to a previous " "empty match. ::" msgstr "" +"Las coincidencias vacías se reemplazan solo cuando no son adyacentes a una " +"coincidencia vacía anterior. ::" #: ../Doc/howto/regex.rst:1175 msgid "" @@ -1637,12 +2302,21 @@ msgid "" "incorporate portions of the original text in the resulting replacement " "string." msgstr "" +"Si *replacement* es una cadena, se procesan los escapes de barra invertida " +"que contenga. Es decir, ``\\n`` se convierte en un solo carácter de nueva " +"línea, ``\\r`` se convierte en una REtorno de carro, y así sucesivamente. " +"Los escapes desconocidos como ``\\&`` se dejan en paz. Las referencias " +"inversas, como ``\\6``, se reemplazan con la subcadena de caracteres que " +"coincide con el grupo correspondiente a la RE. Esto le permite incorporar " +"partes del texto original en la cadena de reemplazo resultante." #: ../Doc/howto/regex.rst:1182 msgid "" "This example matches the word ``section`` followed by a string enclosed in " "``{``, ``}``, and changes ``section`` to ``subsection``::" msgstr "" +"Este ejemplo hace coincidir la palabra ``section`` seguida de una cadena " +"encerrada entre ``{``, ``}``, y cambia ``section`` a ``subsection``::" #: ../Doc/howto/regex.rst:1189 msgid "" @@ -1655,6 +2329,15 @@ msgid "" "literal character ``'0'``.) The following substitutions are all equivalent, " "but use all three variations of the replacement string. ::" msgstr "" +"También hay una sintaxis para hacer referencia a grupos con nombre según lo " +"definido por la sintaxis ``(?P…)``syntax. ``\\g`` usará la " +"subcadena de caracteres que coincide con el grupo llamado ``name``, y ``" +"\\g`` usa el número de grupo correspondiente. ``\\g<2>`` es " +"equivalente a ``\\2``, pero no es ambiguo en una cadena de reemplazo como ``" +"\\g<2>0``. (``\\20`` se interpretaría como una referencia al grupo 20, no " +"como una referencia al grupo 2 seguido del carácter literal ``'0'``.) Las " +"siguientes sustituciones son todas equivalentes, pero use las tres " +"variaciones de la cadena de reemplazo. ::" #: ../Doc/howto/regex.rst:1206 msgid "" @@ -1664,12 +2347,20 @@ msgid "" "a :ref:`match object ` argument for the match and can use " "this information to compute the desired replacement string and return it." msgstr "" +"*replacement* también puede ser una función, lo que le brinda aún más " +"control. Si *replacement* es una función, la función se llama para cada " +"ocurrencia no superpuesta de *pattern*. En cada llamada, a la función se le " +"pasa un argumento :ref:`match object ` para la coincidencia y " +"puede usar esta información para calcular la cadena de reemplazo deseada y " +"retornarla." #: ../Doc/howto/regex.rst:1212 msgid "" "In the following example, the replacement function translates decimals into " "hexadecimal::" msgstr "" +"En el siguiente ejemplo, la función de reemplazo traduce decimales a " +"hexadecimales::" #: ../Doc/howto/regex.rst:1224 msgid "" @@ -1680,10 +2371,16 @@ msgid "" "pattern string, e.g. ``sub(\"(?i)b+\", \"x\", \"bbbb BBBB\")`` returns ``'x " "x'``." msgstr "" +"Cuando se usa la función *module-level* :func:`re.sub`, el patrón se pasa " +"como primer argumento. El patrón puede proporcionarse como un objeto o como " +"una cuerda; Si necesita especificar marcas de expresión regular, debe usar " +"un objeto de patrón como primer parámetro o usar modificadores incrustados " +"en la cadena de patrón, por ejemplo ``sub(\"(?i)b+\", \"x\", \"bbbb BBBB" +"\")`` retorna ``'x x'``." #: ../Doc/howto/regex.rst:1232 msgid "Common Problems" -msgstr "" +msgstr "Problemas comunes" #: ../Doc/howto/regex.rst:1234 msgid "" @@ -1692,10 +2389,14 @@ msgid "" "you may expect them to. This section will point out some of the most common " "pitfalls." msgstr "" +"Las expresiones regulares son una herramienta poderosa para algunas " +"aplicaciones, pero de alguna manera su comportamiento no es intuitivo y, a " +"veces, no se comportan de la forma esperada. Esta sección señalará algunos " +"de los errores más comunes." #: ../Doc/howto/regex.rst:1240 msgid "Use String Methods" -msgstr "" +msgstr "Uso de métodos de cadenas de caracteres" #: ../Doc/howto/regex.rst:1242 msgid "" @@ -1708,6 +2409,15 @@ msgid "" "for the purpose, instead of the large, more generalized regular expression " "engine." msgstr "" +"A veces, usar el módulo :mod:`re` es un error. Si está haciendo coincidir " +"una cadena de caracteres fija, o una clase de un solo caracter, y no está " +"usando ninguna característica :mod:`re` como la marca :const:`~re." +"IGNORECASE`, entonces todo el poder de las expresiones regulares puede que " +"no sea necesario. Las cadenas tienen varios métodos para realizar " +"operaciones con cadenas fijas y, por lo general, son mucho más rápidas, " +"porque la implementación es un único bucle C pequeño que se ha optimizado " +"para este propósito, en lugar del motor de expresión regular más grande y " +"generalizado." #: ../Doc/howto/regex.rst:1250 msgid "" @@ -1721,6 +2431,15 @@ msgid "" "``word`` have a word boundary on either side. This takes the job beyond :" "meth:`!replace`'s abilities.)" msgstr "" +"Un ejemplo podría ser reemplazar una sola cadena fija por otra; por ejemplo, " +"puede reemplazar ``word`` por ``deed``. :func:`re.sub` parece la función a " +"utilizar para esto, pero considere el método :meth:`~str.replace`. Tenga en " +"cuenta que :meth:`!replace` también reemplazará ``word`` dentro de las " +"palabras, convirtiendo ``swordfish`` en ``sdeedfish``, pero la RE naíf " +"``word`` también lo habría hecho. (Para evitar realizar la sustitución en " +"partes de palabras, el patrón tendría que ser ``\\bword\\b``, para requerir " +"que ``word`` tenga un límite de palabra en cada lado. Esto lleva el trabajo " +"más allá de las habilidades de :meth:`!replace`.)" #: ../Doc/howto/regex.rst:1259 msgid "" @@ -1730,16 +2449,23 @@ msgid "" "capable of doing both tasks and will be faster than any regular expression " "operation can be." msgstr "" +"Otra tarea común es eliminar cada aparición de un solo carácter de una " +"cadena o reemplazarlo con otro solo carácter. Puede hacer esto con algo como " +"``re.sub('\\n', ' ', S)``, pero :meth:`~str.translate` es capaz de realizar " +"ambas tareas y será más rápido que cualquier expresión regular la operación " +"puede ser." #: ../Doc/howto/regex.rst:1265 msgid "" "In short, before turning to the :mod:`re` module, consider whether your " "problem can be solved with a faster and simpler string method." msgstr "" +"En resumen, antes de pasar al módulo :mod:`re`, considere si su problema " +"puede resolverse con un método de cadena de caracteres más rápido y simple." #: ../Doc/howto/regex.rst:1270 msgid "match() versus search()" -msgstr "" +msgstr "*match() versus search()*" #: ../Doc/howto/regex.rst:1272 msgid "" @@ -1750,12 +2476,20 @@ msgid "" "start at 0; if the match wouldn't start at zero, :func:`!match` will *not* " "report it. ::" msgstr "" +"La función :func:`~re.match` solo verifica si la RE coincide con el comienzo " +"de la cadena de caracteres, mientras que :func:`~re.search` buscará una " +"coincidencia en la cadena de caracteres. Es importante tener en cuenta esta " +"distinción. Recuerde :func:`!match` solo informará una coincidencia exitosa " +"que comenzará en 0; si la coincidencia no comienza en cero, :func:`!match` " +"*no* lo informará. ::" #: ../Doc/howto/regex.rst:1283 msgid "" "On the other hand, :func:`~re.search` will scan forward through the string, " "reporting the first match it finds. ::" msgstr "" +"Por otro lado, :func:`~re.search` escaneará hacia adelante a través de la " +"cadena de caracteres, informando la primera coincidencia que encuentre. ::" #: ../Doc/howto/regex.rst:1291 msgid "" @@ -1768,6 +2502,15 @@ msgid "" "analysis lets the engine quickly scan through the string looking for the " "starting character, only trying the full match if a ``'C'`` is found." msgstr "" +"A veces, tendrá la tentación de seguir usando :func:`re.match`, y " +"simplemente agregar ``.*`` al frente de su RE. Resista esta tentación y use :" +"func:`re.search` en su lugar. El compilador de expresiones regulares realiza " +"un análisis de las RE para acelerar el proceso de búsqueda de coincidencias. " +"Uno de esos análisis determina cuál debe ser el primer carácter de una " +"coincidencia; por ejemplo, un patrón que comienza con ``Crow`` debe " +"coincidir con una ``'C'``.El análisis permite que el motor escanee " +"rápidamente a través de la cadena en busca del carácter inicial, solo " +"probando la coincidencia completa si se encuentra una ``'C'``." #: ../Doc/howto/regex.rst:1300 msgid "" @@ -1775,10 +2518,13 @@ msgid "" "the string and then backtracking to find a match for the rest of the RE. " "Use :func:`re.search` instead." msgstr "" +"Agregar ``.*`` anula esta optimización, lo que requiere escanear hasta el " +"final de la cadena y luego retroceder para encontrar una coincidencia para " +"el resto de la RE. Utilice :func:`re.search` en su lugar." #: ../Doc/howto/regex.rst:1306 msgid "Greedy versus Non-Greedy" -msgstr "" +msgstr "Codiciosa versus no codiciosa (*Greedy versus Non-Greedy*)" #: ../Doc/howto/regex.rst:1308 msgid "" @@ -1788,6 +2534,12 @@ msgid "" "brackets surrounding an HTML tag. The naive pattern for matching a single " "HTML tag doesn't work because of the greedy nature of ``.*``. ::" msgstr "" +"Al repetir una expresión regular, como en ``a*``, la acción resultante es " +"consumir la mayor cantidad posible del patrón. Este hecho suele molestarle " +"cuando intenta hacer coincidir un par de delimitadores equilibrados, como " +"los corchetes angulares que rodean una etiqueta HTML. El patrón ingenuo para " +"hacer coincidir una sola etiqueta HTML no funciona debido a la naturaleza " +"codiciosa de ``.*``. ::" #: ../Doc/howto/regex.rst:1322 msgid "" @@ -1798,6 +2550,13 @@ msgid "" "The final match extends from the ``'<'`` in ``''`` to the ``'>'`` in " "``''``, which isn't what you want." msgstr "" +"La RE coincide con el ``'<'`` en ``''``, y el ``.*`` consume el resto " +"de la cadena de caracteres. Sin embargo, aún queda más en la RE y el ``>`` " +"no puede coincidir al final de la cadena de caracteres, por lo que el motor " +"de la expresión regular tiene que retroceder carácter por carácter hasta que " +"encuentre una coincidencia para el “. La coincidencia final se extiende " +"desde el `'<'`` en ``''`` al ``'>'`` en ``''``, que no es lo " +"que queremos." #: ../Doc/howto/regex.rst:1329 msgid "" @@ -1807,6 +2566,12 @@ msgid "" "matches, and when it fails, the engine advances a character at a time, " "retrying the ``'>'`` at every step. This produces just the right result::" msgstr "" +"En este caso, la solución es utilizar los calificadores no codiciosos ``*?" +"``, ``+?``, ``??``, o ``{m,n}?``, Que coinciden como *poco* texto como sea " +"posible. En el ejemplo anterior, el ``'>'`` se prueba inmediatamente después " +"de las primeras coincidencias ``'<'``, y cuando falla, el motor avanza un " +"carácter a la vez, volviendo a intentar el ``'>'`` en cada paso. Esto " +"produce el resultado correcto:" #: ../Doc/howto/regex.rst:1338 msgid "" @@ -1817,10 +2582,16 @@ msgid "" "patterns will be *very* complicated. Use an HTML or XML parser module for " "such tasks.)" msgstr "" +"(Tenga en cuenta que analizar HTML o XML con expresiones regulares es " +"doloroso. Los patrones rápidos y sucios manejarán casos comunes, pero HTML y " +"XML tienen casos especiales que romperán la expresión regular obvia; para " +"cuando haya escrito una expresión regular que maneja todos los casos " +"posibles, los patrones serán *muy* complicados. Utilice un módulo analizador " +"HTML o XML para tales tareas.)" #: ../Doc/howto/regex.rst:1346 msgid "Using re.VERBOSE" -msgstr "" +msgstr "Usando re.VERBOSE" #: ../Doc/howto/regex.rst:1348 msgid "" @@ -1829,6 +2600,10 @@ msgid "" "become lengthy collections of backslashes, parentheses, and metacharacters, " "making them difficult to read and understand." msgstr "" +"Probablemente ya haya notado que las expresiones regulares son una notación " +"muy compacta, pero no son muy legibles. Las RE de complejidad moderada " +"pueden convertirse en largas colecciones de barras invertidas, paréntesis y " +"metacarácteres, lo que dificulta su lectura y comprensión." #: ../Doc/howto/regex.rst:1353 msgid "" @@ -1836,6 +2611,9 @@ msgid "" "regular expression can be helpful, because it allows you to format the " "regular expression more clearly." msgstr "" +"Para tales RE, especificar el flag :const:`re.VERBOSE` al compilar la " +"expresión regular puede ser útil, porque le permite formatear la expresión " +"regular con mayor claridad." #: ../Doc/howto/regex.rst:1357 msgid "" @@ -1847,14 +2625,24 @@ msgid "" "extend from a ``#`` character to the next newline. When used with triple-" "quoted strings, this enables REs to be formatted more neatly::" msgstr "" +"La flag ``re.VERBOSE`` tiene varios efectos. Los espacios en blanco en la " +"expresión regular que *no están* dentro de una clase de caracteres se " +"ignoran. Esto significa que una expresión como ``dog | cat`` es equivalente " +"al menos legible ``dog | cat``, pero ``[a b]`` seguirá coincidiendo con los " +"caracteres ``'a'``, ``'b'`` o un espacio. Además, también puede poner " +"comentarios dentro de una RE; los comentarios se extienden desde un carácter " +"``#`` hasta la siguiente línea nueva. Cuando se usa con cadenas entre " +"comillas triples, esto permite que las REs sean formateados de manera más " +"ordenada:" #: ../Doc/howto/regex.rst:1374 msgid "This is far more readable than::" -msgstr "" +msgstr "Esto es mas legible que::" #: ../Doc/howto/regex.rst:1380 +#, fuzzy msgid "Feedback" -msgstr "" +msgstr "Sus comentarios" #: ../Doc/howto/regex.rst:1382 msgid "" @@ -1863,6 +2651,9 @@ msgid "" "encountered that weren't covered here? If so, please send suggestions for " "improvements to the author." msgstr "" +"Las expresiones regulares son un tema complicado. ¿Le ayudó este documento a " +"comprenderlas? ¿Hubo partes que no estaban claras o problemas que encontró " +"que no se trataron aquí? Si es así, envíe sugerencias de mejora al autor." #: ../Doc/howto/regex.rst:1387 msgid "" @@ -1874,3 +2665,10 @@ msgid "" "edition covered Python's now-removed :mod:`!regex` module, which won't help " "you much.) Consider checking it out from your library." msgstr "" +"El libro más completo sobre expresiones regulares es casi con certeza " +"*Mastering Regular Expressions de Jeffrey Friedl*, publicado por *O'Reilly*. " +"Desafortunadamente, se concentra exclusivamente en los tipos de expresiones " +"regulares de Perl y Java, y no contiene ningún material de Python, por lo " +"que no será útil como referencia para la programación en Python. (La primera " +"edición cubría el módulo :mod:`!regex` de Python, ahora eliminado, que no le " +"ayudará mucho.) Considere sacarlo de su biblioteca." From 0ff5890388fe78dcf52a08460210518b02145b93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Melissa=20Escobar=20Guti=C3=A9rrez?= <42422967+m3lissaeg@users.noreply.github.com> Date: Fri, 30 Oct 2020 19:25:47 -0500 Subject: [PATCH 11/18] =?UTF-8?q?Traducci=C3=B3n=20al=20espa=C3=B1ol=20de?= =?UTF-8?q?=20library/custominterp.po=20(#1125)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- library/custominterp.po | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/library/custominterp.po b/library/custominterp.po index b933a09ab9..9583fe13e2 100644 --- a/library/custominterp.po +++ b/library/custominterp.po @@ -1,25 +1,27 @@ # Copyright (C) 2001-2020, Python Software Foundation # This file is distributed under the same license as the Python package. -# Maintained by the python-doc-es workteam. +# Maintained by the python-doc-es workteam. # docs-es@python.org / https://mail.python.org/mailman3/lists/docs-es.python.org/ # Check https://github.com/python/python-docs-es/blob/3.8/TRANSLATORS to get the list of volunteers # -#, fuzzy msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-05-06 11:59-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-10-30 12:17-0500\n" "Language-Team: python-doc-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" +"Last-Translator: \n" +"Language: es_CO\n" +"X-Generator: Poedit 2.4.1\n" #: ../Doc/library/custominterp.rst:5 msgid "Custom Python Interpreters" -msgstr "" +msgstr "Intérpretes de Python personalizados" #: ../Doc/library/custominterp.rst:7 msgid "" @@ -29,7 +31,13 @@ msgid "" "look at the :mod:`code` module. (The :mod:`codeop` module is lower-level, " "used to support compiling a possibly-incomplete chunk of Python code.)" msgstr "" +"Los módulos descritos en este capítulo permiten escribir interfaces " +"similares al intérprete interactivo de Python. Si desea un intérprete de " +"Python que admita alguna característica especial además del lenguaje Python, " +"debe mirar el módulo :mod:`code`. (El módulo :mod:`codeop` es de más bajo " +"nivel y se utiliza para soportar la compilación de un fragmento posiblemente " +"incompleto de código Python)." #: ../Doc/library/custominterp.rst:13 msgid "The full list of modules described in this chapter is:" -msgstr "" +msgstr "La lista completa de módulos descritos en este capítulo es:" From 84828fb870376305ae0a4d6115d5f1562cda003d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adolfo=20Hristo=20David=20Roque=20G=C3=A1mez?= <42866358+aroquega@users.noreply.github.com> Date: Sat, 31 Oct 2020 08:59:03 -0500 Subject: [PATCH 12/18] =?UTF-8?q?Traducci=C3=B3n=20library/asyncio-subproc?= =?UTF-8?q?ess=20(#939)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dictionaries/library_asyncio_subprocess.txt | 2 + library/asyncio-subprocess.po | 193 ++++++++++++++++---- 2 files changed, 163 insertions(+), 32 deletions(-) create mode 100644 dictionaries/library_asyncio_subprocess.txt diff --git a/dictionaries/library_asyncio_subprocess.txt b/dictionaries/library_asyncio_subprocess.txt new file mode 100644 index 0000000000..dab11958ce --- /dev/null +++ b/dictionaries/library_asyncio_subprocess.txt @@ -0,0 +1,2 @@ +redireccionados +Process \ No newline at end of file diff --git a/library/asyncio-subprocess.po b/library/asyncio-subprocess.po index d7f13c9241..72a738063b 100644 --- a/library/asyncio-subprocess.po +++ b/library/asyncio-subprocess.po @@ -6,45 +6,53 @@ # Check https://github.com/python/python-docs-es/blob/3.8/TRANSLATORS to # get the list of volunteers # -#, fuzzy msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-05-05 12:54+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-10-30 20:40-0500\n" "Language-Team: python-doc-es\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.8.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Last-Translator: Adolfo Hristo David Roque Gámez \n" +"Language: es\n" +"X-Generator: Poedit 2.4\n" #: ../Doc/library/asyncio-subprocess.rst:7 msgid "Subprocesses" -msgstr "" +msgstr "Sub-procesos" #: ../Doc/library/asyncio-subprocess.rst:9 msgid "" "**Source code:** :source:`Lib/asyncio/subprocess.py`, :source:`Lib/asyncio/" "base_subprocess.py`" msgstr "" +"**Código fuente:** :source:`Lib/asyncio/subprocess.py`, :source:`Lib/asyncio/" +"base_subprocess.py`" #: ../Doc/library/asyncio-subprocess.rst:14 msgid "" "This section describes high-level async/await asyncio APIs to create and " "manage subprocesses." msgstr "" +"Esta sección describe APIs de alto nivel de *async/await* de asyncio para " +"crear y gestionar sub-procesos." #: ../Doc/library/asyncio-subprocess.rst:19 msgid "" "Here's an example of how asyncio can run a shell command and obtain its " "result::" msgstr "" +"Aquí podemos encontrar un ejemplo de cómo asyncio puede ejecutar un comando " +"de *shell* y obtener su resultado::" #: ../Doc/library/asyncio-subprocess.rst:40 msgid "will print::" -msgstr "" +msgstr "mostrará en pantalla:" #: ../Doc/library/asyncio-subprocess.rst:46 msgid "" @@ -53,18 +61,23 @@ msgid "" "monitor multiple subprocesses in parallel. It is indeed trivial to modify " "the above example to run several commands simultaneously::" msgstr "" +"Ya que todos las funciones de sub-procesos de asyncio son asíncronas y " +"asyncio proporciona herramientas para trabajar con tales funciones, es fácil " +"ejecutar y monitorear múltiples subprocesos en paralelo. De hecho es " +"trivial modificar los ejemplos de arriba para ejecutar varios comandos " +"simultáneamente::" #: ../Doc/library/asyncio-subprocess.rst:58 msgid "See also the `Examples`_ subsection." -msgstr "" +msgstr "Véase también la subsección `Examples`_." #: ../Doc/library/asyncio-subprocess.rst:62 msgid "Creating Subprocesses" -msgstr "" +msgstr "Creando sub-procesos" #: ../Doc/library/asyncio-subprocess.rst:68 msgid "Create a subprocess." -msgstr "" +msgstr "Crea un sub-proceso." #: ../Doc/library/asyncio-subprocess.rst:70 #: ../Doc/library/asyncio-subprocess.rst:89 @@ -73,30 +86,37 @@ msgid "" "wrappers for :attr:`Process.stdout` and :attr:`Process.stderr` (if :attr:" "`subprocess.PIPE` is passed to *stdout* and *stderr* arguments)." msgstr "" +"El argumento *limit* establece el límite del buffer para los envoltorios :" +"class:`StreamReader` para :attr:`Process.stdout` y :attr:`Process.stderr` " +"(si se pasa :attr:`subprocess.PIPE` a los argumentos *stdout* y *stderr*)." #: ../Doc/library/asyncio-subprocess.rst:74 #: ../Doc/library/asyncio-subprocess.rst:93 msgid "Return a :class:`~asyncio.subprocess.Process` instance." -msgstr "" +msgstr "Retorna una instancia de :class:`~asyncio.subprocess.Process`." #: ../Doc/library/asyncio-subprocess.rst:76 msgid "" "See the documentation of :meth:`loop.subprocess_exec` for other parameters." msgstr "" +"Véase la documentación de :meth:`loop.subprocess_exec` para los otros " +"parámetros." #: ../Doc/library/asyncio-subprocess.rst:81 #: ../Doc/library/asyncio-subprocess.rst:109 msgid "The *loop* parameter." -msgstr "" +msgstr "El parámetro *loop*." #: ../Doc/library/asyncio-subprocess.rst:87 msgid "Run the *cmd* shell command." -msgstr "" +msgstr "Ejecuta el comando de shell *cmd*." #: ../Doc/library/asyncio-subprocess.rst:95 msgid "" "See the documentation of :meth:`loop.subprocess_shell` for other parameters." msgstr "" +"Véase la documentación de :meth:`loop.subprocess_shell` para los otros " +"parámetros." #: ../Doc/library/asyncio-subprocess.rst:100 msgid "" @@ -107,6 +127,13 @@ msgid "" "escape whitespace and special shell characters in strings that are going to " "be used to construct shell commands." msgstr "" +"Es la responsabilidad de la aplicación asegurarse que todos los espacios en " +"blanco y caracteres especiales estén citados apropiadamente para evitar " +"vulnerabilidades de `inyección de instrucciones `_. La " +"función :func:`shlex.quote` puede ser usada para escapar caracteres en " +"blanco y caracteres especiales de *shell* en cadenas de caracteres a ser " +"usadas para construir comandos de *shell*." #: ../Doc/library/asyncio-subprocess.rst:113 msgid "" @@ -115,6 +142,10 @@ msgid "" "`ProactorEventLoop` is used. See :ref:`Subprocess Support on Windows " "` for details." msgstr "" +"La implementación del bucle de eventos de asyncio por defecto en **Windows** " +"no admite sub-procesos. Los sub-procesos están disponibles para Windows si " +"un :class:`ProactorEventLoop` es usado. Véase :ref:`Soporte de Sub-procesos " +"en Windows ` para los detalles." #: ../Doc/library/asyncio-subprocess.rst:121 msgid "" @@ -124,14 +155,20 @@ msgid "" "`Subprocess Transports ` and :ref:`Subprocess " "Protocols `." msgstr "" +"asyncio también tiene las siguientes APIs de *bajo nivel* para trabajar con " +"sub-procesos: :meth:`loop.subprocess_exec`, :meth:`loop.subprocess_shell`, :" +"meth:`loop.connect_read_pipe`, :meth:`loop.connect_write_pipe`, así como " +"también los :ref:`Sub-procesos de Transportes ` y los :ref:`Sub-procesos de Protocolos `." #: ../Doc/library/asyncio-subprocess.rst:129 msgid "Constants" -msgstr "" +msgstr "Constantes" #: ../Doc/library/asyncio-subprocess.rst:133 msgid "Can be passed to the *stdin*, *stdout* or *stderr* parameters." -msgstr "" +msgstr "Se le puede pasar a los parámetros *stding*, *stdout* o *stderr*." #: ../Doc/library/asyncio-subprocess.rst:135 msgid "" @@ -139,6 +176,9 @@ msgid "" "subprocess.Process.stdin>` attribute will point to a :class:`StreamWriter` " "instance." msgstr "" +"Si se le pasa *PIPE* al argumento *stdin*, el atributo :attr:`Process.stdin " +"` apuntará a la instancia :class:" +"`StreamWriter`." #: ../Doc/library/asyncio-subprocess.rst:139 msgid "" @@ -147,12 +187,18 @@ msgid "" "` attributes will point to :class:" "`StreamReader` instances." msgstr "" +"Si se pasa *PIPE* a los argumentos *stdout* o *stderr*, los atributos :attr:" +"`Process.stdout ` y :attr:`Process.stderr " +"` apuntarán a las instancias :class:" +"`StreamReader`." #: ../Doc/library/asyncio-subprocess.rst:146 msgid "" "Special value that can be used as the *stderr* argument and indicates that " "standard error should be redirected into standard output." msgstr "" +"Un valor especial que puede ser usado como el argumento de *stderr* e indica " +"que los errores estándar deben ser redireccionados en la salida estándar." #: ../Doc/library/asyncio-subprocess.rst:151 msgid "" @@ -160,10 +206,14 @@ msgid "" "to process creation functions. It indicates that the special file :data:`os." "devnull` will be used for the corresponding subprocess stream." msgstr "" +"Un valor especial que puede ser usado como el argumento de *stdin*, " +"*stdout*, *stderr* para procesar funciones de creación. Indica que el " +"archivo especial :data:`os.devnull` será usado para la correspondiente " +"transmisión del sub-proceso." #: ../Doc/library/asyncio-subprocess.rst:157 msgid "Interacting with Subprocesses" -msgstr "" +msgstr "Interactuando con Subprocesos" #: ../Doc/library/asyncio-subprocess.rst:159 msgid "" @@ -172,24 +222,34 @@ msgid "" "level wrapper that allows communicating with subprocesses and watching for " "their completion." msgstr "" +"Las dos funciones :func:`create_subprocess_exec` y :func:" +"`create_subprocess_shell` retornan instancias de la clase *Process*. " +"*Process* es un envoltorio de alto nivel que permite comunicarse con los " +"subprocesos y estar atento a sus términos." #: ../Doc/library/asyncio-subprocess.rst:166 msgid "" "An object that wraps OS processes created by the :func:" "`create_subprocess_exec` and :func:`create_subprocess_shell` functions." msgstr "" +"Un objeto que envuelve procesos del SO creados por las funciones :func:" +"`create_subprocess_exec` y :func:`create_subprocess_shell`." #: ../Doc/library/asyncio-subprocess.rst:170 msgid "" "This class is designed to have a similar API to the :class:`subprocess." "Popen` class, but there are some notable differences:" msgstr "" +"Esta clase está diseñada para tener un API similar a la clase :class:" +"`subprocess.Popen`, pero hay algunas diferencias notables:" #: ../Doc/library/asyncio-subprocess.rst:174 msgid "" "unlike Popen, Process instances do not have an equivalent to the :meth:" "`~subprocess.Popen.poll` method;" msgstr "" +"a diferencia de Popen, las instancias de Process no tiene un equivalente del " +"método :meth:`~subprocess.Popen.poll`;" #: ../Doc/library/asyncio-subprocess.rst:177 msgid "" @@ -197,6 +257,9 @@ msgid "" "subprocess.Process.wait` methods don't have a *timeout* parameter: use the :" "func:`wait_for` function;" msgstr "" +"los métodos :meth:`~asyncio.subprocess.Process.communicate` y :meth:" +"`~asyncio.subprocess.Process.wait` no tienen un parámetro *timeout*: use la " +"función :func:`wait_for`;" #: ../Doc/library/asyncio-subprocess.rst:181 msgid "" @@ -204,28 +267,35 @@ msgid "" "asynchronous, whereas :meth:`subprocess.Popen.wait` method is implemented as " "a blocking busy loop;" msgstr "" +"el método :meth:`Process.wait() ` es " +"asíncrono, mientras que el método :meth:`subprocess.Popen.wait` es " +"implementado como un bucle de espera activa;" #: ../Doc/library/asyncio-subprocess.rst:185 msgid "the *universal_newlines* parameter is not supported." -msgstr "" +msgstr "el parámetro *universal_newlines* no es compatible." #: ../Doc/library/asyncio-subprocess.rst:187 msgid "This class is :ref:`not thread safe `." msgstr "" +"Esta clase no es segura para subprocesos (:ref:`not thread safe `)." #: ../Doc/library/asyncio-subprocess.rst:189 msgid "" "See also the :ref:`Subprocess and Threads ` " "section." msgstr "" +"Véase también la sección :ref:`Subprocesos e Hilos `." #: ../Doc/library/asyncio-subprocess.rst:194 msgid "Wait for the child process to terminate." -msgstr "" +msgstr "Espera a que el proceso hijo termine." #: ../Doc/library/asyncio-subprocess.rst:196 msgid "Set and return the :attr:`returncode` attribute." -msgstr "" +msgstr "Define y retorna el atributo :attr:`returncode`." #: ../Doc/library/asyncio-subprocess.rst:200 msgid "" @@ -234,32 +304,38 @@ msgid "" "pipe buffer to accept more data. Use the :meth:`communicate` method when " "using pipes to avoid this condition." msgstr "" +"Este método puede bloquearse cuando usa ``stdout=PIPE`` o ``stderr=PIPE`` y " +"el proceso hijo genera tanta salida que se bloquea esperando a que la " +"tubería de búfer del SO acepte más datos. Use el método :meth:`communicate` " +"cuando use tuberías para evitar esta condición." #: ../Doc/library/asyncio-subprocess.rst:208 msgid "Interact with process:" -msgstr "" +msgstr "Interactuar con el proceso:" #: ../Doc/library/asyncio-subprocess.rst:210 msgid "send data to *stdin* (if *input* is not ``None``);" -msgstr "" +msgstr "envía datos a *stdin* (si *input* no es ``None``);" #: ../Doc/library/asyncio-subprocess.rst:211 msgid "read data from *stdout* and *stderr*, until EOF is reached;" -msgstr "" +msgstr "lee datos desde *stdout* y *stderr*, hasta que el llegue al EOF;" #: ../Doc/library/asyncio-subprocess.rst:212 msgid "wait for process to terminate." -msgstr "" +msgstr "espera a que el proceso termine." #: ../Doc/library/asyncio-subprocess.rst:214 msgid "" "The optional *input* argument is the data (:class:`bytes` object) that will " "be sent to the child process." msgstr "" +"El argumento opcional *input* son los datos (objetos :class:`bytes`) que " +"serán enviados a los procesos hijos." #: ../Doc/library/asyncio-subprocess.rst:217 msgid "Return a tuple ``(stdout_data, stderr_data)``." -msgstr "" +msgstr "Retorna una tupla ``(stdout_data, stderr_data)``." #: ../Doc/library/asyncio-subprocess.rst:219 msgid "" @@ -268,6 +344,10 @@ msgid "" "condition occurs when the process exits before all data are written into " "*stdin*." msgstr "" +"Si se levanta la excepción :exc:`BrokenPipeError` o :exc:" +"`ConnectionResetError` cuando se escribe *input* en *stdin*, la excepción es " +"ignorada. Esta condición ocurre cuando el proceso finaliza antes de que " +"todos los datos sean escritos en *stdin*." #: ../Doc/library/asyncio-subprocess.rst:224 msgid "" @@ -276,16 +356,22 @@ msgid "" "``None`` in the result tuple, the process has to be created with " "``stdout=PIPE`` and/or ``stderr=PIPE`` arguments." msgstr "" +"Si se desea enviar datos al *stdin* del proceso, el proceso necesita ser " +"creado con ``stdin=PIPE``. De manera similar, para obtener cualquier cosa " +"excepto ``None`` en la tupla del resultado, el proceso tiene que ser creado " +"con los argumentos ``stdout=PIPE`` y/o ``stderr=PIPE``." #: ../Doc/library/asyncio-subprocess.rst:230 msgid "" "Note, that the data read is buffered in memory, so do not use this method if " "the data size is large or unlimited." msgstr "" +"Tenga en cuenta que los datos leídos son almacenados en memoria, por lo que " +"no utilice este método si el tamaño de los datos es más grande o ilimitado." #: ../Doc/library/asyncio-subprocess.rst:235 msgid "Sends the signal *signal* to the child process." -msgstr "" +msgstr "Envíe la señal *signal* al proceso hijo." #: ../Doc/library/asyncio-subprocess.rst:239 msgid "" @@ -293,53 +379,67 @@ msgid "" "``CTRL_C_EVENT`` and ``CTRL_BREAK_EVENT`` can be sent to processes started " "with a *creationflags* parameter which includes ``CREATE_NEW_PROCESS_GROUP``." msgstr "" +"En Windows, :py:data:`SIGTERM` es un alias para :meth:`terminate`. Se puede " +"enviar ``CTRL_C_EVENT`` y ``CTRL_BREAK_EVENT`` a procesos iniciados con un " +"parámetro *creationflags* que incluye ``CREATE_NEW_PROCESS_GROUP``." #: ../Doc/library/asyncio-subprocess.rst:246 msgid "Stop the child process." -msgstr "" +msgstr "Para al proceso hijo." #: ../Doc/library/asyncio-subprocess.rst:248 msgid "" "On POSIX systems this method sends :py:data:`signal.SIGTERM` to the child " "process." msgstr "" +"En sistemas POSIX este método envía :py:data:`signal.SIGNTERM` al proceso " +"hijo." #: ../Doc/library/asyncio-subprocess.rst:251 msgid "" "On Windows the Win32 API function :c:func:`TerminateProcess` is called to " "stop the child process." msgstr "" +"En Windows, la función de la API de Win32 :c:func:`TerminateProcess` es " +"llamado para parar a los procesos hijos." #: ../Doc/library/asyncio-subprocess.rst:256 msgid "Kill the child." -msgstr "" +msgstr "Termina el proceso hijo." #: ../Doc/library/asyncio-subprocess.rst:258 msgid "" "On POSIX systems this method sends :py:data:`SIGKILL` to the child process." msgstr "" +"En sistemas POSIX, este método envía :py:data:`SIGKILL` al proceso hijo." #: ../Doc/library/asyncio-subprocess.rst:261 msgid "On Windows this method is an alias for :meth:`terminate`." -msgstr "" +msgstr "En Windows este método es un alias para :meth:`terminate`." #: ../Doc/library/asyncio-subprocess.rst:265 msgid "" "Standard input stream (:class:`StreamWriter`) or ``None`` if the process was " "created with ``stdin=None``." msgstr "" +"Flujo de entrada estándar (:class:`StreamWriter`) o ``None`` si el proceso " +"fue creado con ``stdin=None``." #: ../Doc/library/asyncio-subprocess.rst:270 msgid "" "Standard output stream (:class:`StreamReader`) or ``None`` if the process " "was created with ``stdout=None``." msgstr "" +"Flujo de salida estándar (:class:`SreamReader`) o ``None`` si el proceso fue " +"creado con ``stdout=None``." #: ../Doc/library/asyncio-subprocess.rst:275 msgid "" "Standard error stream (:class:`StreamReader`) or ``None`` if the process was " "created with ``stderr=None``." msgstr "" +"Flujo de salida estándar (:class:`StreamReader`) o ``None`` si el proceso " +"fue creado con ``stderr=None``." #: ../Doc/library/asyncio-subprocess.rst:280 msgid "" @@ -348,80 +448,103 @@ msgid "" "process.stderr.read `. This avoids deadlocks due to streams pausing " "reading or writing and blocking the child process." msgstr "" +"Utilice el método :meth:`communicate` en vez de :attr:`process.stdin.write() " +"`, :attr:`await process.stdout.read() ` o :attr:`await " +"process.stderr.read `. Esto evita bloqueos debido a que los flujos " +"pausan la lectura o escritura y bloqueando al proceso hijo." #: ../Doc/library/asyncio-subprocess.rst:289 msgid "Process identification number (PID)." -msgstr "" +msgstr "Número de identificación del Proceso (PID por sus siglas en inglés)." #: ../Doc/library/asyncio-subprocess.rst:291 msgid "" "Note that for processes created by the :func:`create_subprocess_shell` " "function, this attribute is the PID of the spawned shell." msgstr "" +"Tenga en cuenta que para procesos creados por la función :func:`create­" +"_subprocess_shell`, este atributo es el PID del shell generado." #: ../Doc/library/asyncio-subprocess.rst:296 msgid "Return code of the process when it exits." -msgstr "" +msgstr "Código de retorno del proceso cuando finaliza." #: ../Doc/library/asyncio-subprocess.rst:298 msgid "A ``None`` value indicates that the process has not terminated yet." -msgstr "" +msgstr "Un valor ``None`` indica que el proceso todavía no ha finalizado." #: ../Doc/library/asyncio-subprocess.rst:300 msgid "" "A negative value ``-N`` indicates that the child was terminated by signal " "``N`` (POSIX only)." msgstr "" +"Un valor negativo ``-N`` indica que el hijo ha finalizado por la señal ``N`` " +"(sólo para POSIX)." #: ../Doc/library/asyncio-subprocess.rst:307 msgid "Subprocess and Threads" -msgstr "" +msgstr "Subprocesos y Hilos" #: ../Doc/library/asyncio-subprocess.rst:309 msgid "" "Standard asyncio event loop supports running subprocesses from different " "threads by default." msgstr "" +"Por defecto el bucle de eventos de asyncio estándar permite correr " +"subprocesos desde hilos diferentes." #: ../Doc/library/asyncio-subprocess.rst:312 msgid "" "On Windows subprocesses are provided by :class:`ProactorEventLoop` only " "(default), :class:`SelectorEventLoop` has no subprocess support." msgstr "" +"En Windows, sólo :class:`ProactorEventLoop` proporciona subprocesos (por " +"defecto), :class:`SelectorEventLoop` no es compatible con subprocesos." #: ../Doc/library/asyncio-subprocess.rst:315 msgid "" "On UNIX *child watchers* are used for subprocess finish waiting, see :ref:" "`asyncio-watchers` for more info." msgstr "" +"En UNIX, los *observadores de hijos* son usados para la espera de " +"finalización de subprocesos, véase :ref:`asyncio-watchers` para más " +"información." #: ../Doc/library/asyncio-subprocess.rst:321 msgid "" "UNIX switched to use :class:`ThreadedChildWatcher` for spawning subprocesses " "from different threads without any limitation." msgstr "" +"UNIX cambió para usar :class:`ThreadedChildWatcher` para generar subprocesos " +"de hilos diferentes sin ninguna limitación." #: ../Doc/library/asyncio-subprocess.rst:324 msgid "" "Spawning a subprocess with *inactive* current child watcher raises :exc:" "`RuntimeError`." msgstr "" +"Crear un subproceso con el observador del hijo *inactivo* lanza un :exc:" +"`RuntimeError`." #: ../Doc/library/asyncio-subprocess.rst:327 msgid "" "Note that alternative event loop implementations might have own limitations; " "please refer to their documentation." msgstr "" +"Tenga en cuenta que implementaciones alternativas del bucle de eventos " +"pueden tener limitaciones propias; por favor consulte su documentación." #: ../Doc/library/asyncio-subprocess.rst:332 msgid "" "The :ref:`Concurrency and multithreading in asyncio ` section." msgstr "" +"La sección :ref:`Concurrencia y multihilos en asyncio `." #: ../Doc/library/asyncio-subprocess.rst:337 msgid "Examples" -msgstr "" +msgstr "Ejemplos" #: ../Doc/library/asyncio-subprocess.rst:339 msgid "" @@ -429,14 +552,20 @@ msgid "" "subprocess and the :class:`StreamReader` class to read from its standard " "output." msgstr "" +"Un ejemplo usando la clase :class:`~asyncio.subprocess.Process` para " +"controlar un subproceso y la clase :class:`StreamReader` para leer de su " +"salida estándar." #: ../Doc/library/asyncio-subprocess.rst:345 msgid "" "The subprocess is created by the :func:`create_subprocess_exec` function::" msgstr "" +"El subproceso es creado por la función :func:`create_subprocess_exec`::" #: ../Doc/library/asyncio-subprocess.rst:372 msgid "" "See also the :ref:`same example ` written " "using low-level APIs." msgstr "" +"Véase también los :ref:`ejemplos de prueba " +"` escritos usando APIs de bajo nivel." From e1dea3bb8e45a1a4450b7fb63ddf17c1a5db0112 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adolfo=20Hristo=20David=20Roque=20G=C3=A1mez?= <42866358+aroquega@users.noreply.github.com> Date: Sat, 31 Oct 2020 09:00:21 -0500 Subject: [PATCH 13/18] Reparado links equivocados en .overrides (#1111) --- .overrides/reviewers-guide.rst | 4 ++-- .../tools/templates/customsourcelink.html | 21 ++++++++++++++++--- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/.overrides/reviewers-guide.rst b/.overrides/reviewers-guide.rst index 1fc821ca9c..056eacdf09 100644 --- a/.overrides/reviewers-guide.rst +++ b/.overrides/reviewers-guide.rst @@ -33,11 +33,11 @@ Para esto, Github te ofrece opciones para afrontar una PR (ver botón *Review Ch * PRs de más de 1000 líneas: Te sugerimos hacer un comentario al principio del PR para indicar hasta qué línea haz hecho el review y qué hay que revisar hasta ese hito. También si tú mismo vas a continuar la review, pero no puedes hacerla de una sola vez, es útil para saber donde retomar tu trabajo. * El uso de la opción "Needs work" en poedit genera en la línea anterior al párrafo un comentario "#, fuzzy" para que el traductor revise esa línea. Se puede usar cuando la traducción necesita revisión y en ese momento no puedes sugerir una traducción alternativa. Ten en cuenta que los párrafos con esa marca no aparecerán traducidos en el build. Como revisor, también podrías incluir ese comentario tu mismo como sugerencia. -* Al igual que cuando uno traduce, en el proceso de revisión puedes consultar y emplear las herramientas que tenemos. Por ejemplo, si no estás seguro sobre la traducción de un término sobre el que puede que ya hayamos tomado una decisión consensuada, puedes consultar la memoria de traducción [,](https://github.com/python/python-docs-es/blob/3.8/.overrides/translation-memory.rst) usar `scripts/find_in_po.py` o incluso comentarlo en nuestro grupo de Telegram. +* Al igual que cuando uno traduce, en el proceso de revisión puedes consultar y emplear las herramientas que tenemos. Por ejemplo, si no estás seguro sobre la traducción de un término sobre el que puede que ya hayamos tomado una decisión consensuada, puedes consultar la :doc:`memoria de traducción ` usar `scripts/find_in_po.py` o incluso comentarlo en nuestro grupo de Telegram. El costado técnico ================== -Al revisar una traducción, deberás tener en cuenta ciertos aspectos propios de una traducción técnica de esta índole. Además de que debe entenderse el texto en español y que debes respetar el contenido de la documentación original (ver "A tener en cuenta" en la `Guía para contribuir en la traducción `_), contamos con herramientas en este proyecto que pueden fallar en ciertos casos, y que como revisor/a deberás tener en cuenta. +Al revisar una traducción, deberás tener en cuenta ciertos aspectos propios de una traducción técnica de esta índole. Además de que debe entenderse el texto en español y que debes respetar el contenido de la documentación original (ver "A tener en cuenta" en la :doc:`Guía para contribuir en la traducción `), contamos con herramientas en este proyecto que pueden fallar en ciertos casos, y que como revisor/a deberás tener en cuenta. Tres razones por las que puede fallar el *build* de Travis: diff --git a/.overrides/tools/templates/customsourcelink.html b/.overrides/tools/templates/customsourcelink.html index c88cec71f8..b4f4aa9e2e 100644 --- a/.overrides/tools/templates/customsourcelink.html +++ b/.overrides/tools/templates/customsourcelink.html @@ -4,9 +4,24 @@

{{ _('This Page') }}

From e2d9252f94cafaa51154d3c1fde68dc3d2316044 Mon Sep 17 00:00:00 2001 From: willian593 <55642712+willian593@users.noreply.github.com> Date: Sat, 31 Oct 2020 09:03:06 -0500 Subject: [PATCH 14/18] Traduccion reference/toplevel_components (#1127) --- .../reference_toplevel_components.txt | 1 + reference/toplevel_components.po | 61 +++++++++++++++---- 2 files changed, 50 insertions(+), 12 deletions(-) create mode 100644 dictionaries/reference_toplevel_components.txt diff --git a/dictionaries/reference_toplevel_components.txt b/dictionaries/reference_toplevel_components.txt new file mode 100644 index 0000000000..d6ed7f90f2 --- /dev/null +++ b/dictionaries/reference_toplevel_components.txt @@ -0,0 +1 @@ +mínimamente \ No newline at end of file diff --git a/reference/toplevel_components.po b/reference/toplevel_components.po index d091176578..d1cf42178a 100644 --- a/reference/toplevel_components.po +++ b/reference/toplevel_components.po @@ -1,25 +1,27 @@ # Copyright (C) 2001-2020, Python Software Foundation # This file is distributed under the same license as the Python package. -# Maintained by the python-doc-es workteam. +# Maintained by the python-doc-es workteam. # docs-es@python.org / https://mail.python.org/mailman3/lists/docs-es.python.org/ # Check https://github.com/python/python-docs-es/blob/3.8/TRANSLATORS to get the list of volunteers # -#, fuzzy msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-05-06 11:59-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-10-18 16:24-0500\n" "Language-Team: python-doc-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" +"Last-Translator: \n" +"Language: es\n" +"X-Generator: Poedit 2.4.1\n" #: ../Doc/reference/toplevel_components.rst:6 msgid "Top-level components" -msgstr "" +msgstr "Componentes de nivel superior" #: ../Doc/reference/toplevel_components.rst:10 msgid "" @@ -28,10 +30,14 @@ msgid "" "interactively, from a module source file, etc. This chapter gives the " "syntax used in these cases." msgstr "" +"El intérprete de Python puede obtener su entrada de varias fuentes: de un " +"script que se le pasa como entrada estándar o como argumento del programa, " +"escrito interactivamente, de un archivo fuente de módulo, etc. Este capítulo " +"proporciona la sintaxis utilizada en estos casos." #: ../Doc/reference/toplevel_components.rst:19 msgid "Complete Python programs" -msgstr "" +msgstr "Programas completos de Python" #: ../Doc/reference/toplevel_components.rst:28 msgid "" @@ -44,12 +50,22 @@ msgid "" "`__main__`. The latter is used to provide the local and global namespace " "for execution of the complete program." msgstr "" +"Si bien una especificación de lenguaje no necesita prescribir cómo se invoca " +"al intérprete de lenguaje, es útil tener una noción de un programa completo " +"de Python. Un programa completo de Python se ejecuta en un entorno " +"mínimamente inicializado: todos los módulos estándar e integrados están " +"disponibles, pero ninguno ha sido inicializado, excepto :mod:`sys` (varios " +"servicios del sistema), :mod:`builtins` (funciones integradas, excepciones y " +"``Ninguno``) y :mod:`__main__`. Este último se utiliza para proporcionar el " +"espacio de nombres local y global para la ejecución del programa completo." #: ../Doc/reference/toplevel_components.rst:36 msgid "" "The syntax for a complete Python program is that for file input, described " "in the next section." msgstr "" +"La sintaxis de un programa completo de Python es la entrada de archivos, que " +"se describe en la siguiente sección." #: ../Doc/reference/toplevel_components.rst:43 msgid "" @@ -59,6 +75,11 @@ msgid "" "identical to that of a complete program; each statement is executed in the " "namespace of :mod:`__main__`." msgstr "" +"El intérprete también puede invocarse en modo interactivo; en este caso, no " +"lee ni ejecuta un programa completo, sino que lee y ejecuta una instrucción " +"(posiblemente compuesta) a la vez. El entorno inicial es idéntico al de un " +"programa completo; cada instrucción se ejecuta en el espacio de nombres de :" +"mod:`__main__`." #: ../Doc/reference/toplevel_components.rst:55 msgid "" @@ -68,38 +89,48 @@ msgid "" "is a tty device, the interpreter enters interactive mode; otherwise, it " "executes the file as a complete program." msgstr "" +"Se puede pasar un programa completo al intérprete en tres formas: con la " +"opción :option:`-c` *string* de línea de comando, como un archivo pasado " +"como primer argumento de línea de comando o como entrada estándar. Si el " +"archivo o la entrada estándar es un dispositivo tty, el intérprete ingresa " +"al modo interactivo; de lo contrario, ejecuta el archivo como un programa " +"completo." #: ../Doc/reference/toplevel_components.rst:65 msgid "File input" -msgstr "" +msgstr "Entrada de archivo" #: ../Doc/reference/toplevel_components.rst:67 msgid "All input read from non-interactive files has the same form:" msgstr "" +"Todas las entradas leídas de archivos no interactivos tienen la misma forma:" #: ../Doc/reference/toplevel_components.rst:72 msgid "This syntax is used in the following situations:" -msgstr "" +msgstr "Esta sintaxis se utiliza en las siguientes situaciones:" #: ../Doc/reference/toplevel_components.rst:74 msgid "when parsing a complete Python program (from a file or from a string);" msgstr "" +"al analizar un programa completo de Python (desde un archivo o desde una " +"cadena);" #: ../Doc/reference/toplevel_components.rst:76 msgid "when parsing a module;" -msgstr "" +msgstr "al analizar un módulo;" #: ../Doc/reference/toplevel_components.rst:78 msgid "when parsing a string passed to the :func:`exec` function;" -msgstr "" +msgstr "al analizar una cadena pasada a la función: :func:`exec`;" #: ../Doc/reference/toplevel_components.rst:84 msgid "Interactive input" -msgstr "" +msgstr "Entrada interactiva" #: ../Doc/reference/toplevel_components.rst:86 msgid "Input in interactive mode is parsed using the following grammar:" msgstr "" +"La entrada en modo interactivo se analiza utilizando la siguiente gramática:" #: ../Doc/reference/toplevel_components.rst:91 msgid "" @@ -107,13 +138,19 @@ msgid "" "in interactive mode; this is needed to help the parser detect the end of the " "input." msgstr "" +"Tenga en cuenta que una declaración compuesta (de nivel superior) debe ir " +"seguida de una línea en blanco en modo interactivo; esto es necesario para " +"ayudar al analizador sintáctico a detectar el final de la entrada." #: ../Doc/reference/toplevel_components.rst:98 msgid "Expression input" -msgstr "" +msgstr "Entrada de expresión" #: ../Doc/reference/toplevel_components.rst:103 msgid "" ":func:`eval` is used for expression input. It ignores leading whitespace. " "The string argument to :func:`eval` must have the following form:" msgstr "" +":func:`eval` se utiliza para la entrada de expresiones. Ignora los espacios " +"en blanco iniciales. El argumento de cadena para :func:`eval` debe tener la " +"siguiente forma:" From d978e722a2def5a8c7fcbc33d0a87f07d4f6c641 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Mond=C3=A9jar?= Date: Sat, 31 Oct 2020 15:08:13 +0100 Subject: [PATCH 15/18] =?UTF-8?q?Traducci=C3=B3n=20library/hashlib=20(#112?= =?UTF-8?q?2)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dictionaries/library_hashlib.txt | 11 + library/hashlib.po | 382 ++++++++++++++++++++++++++----- 2 files changed, 337 insertions(+), 56 deletions(-) create mode 100644 dictionaries/library_hashlib.txt diff --git a/dictionaries/library_hashlib.txt b/dictionaries/library_hashlib.txt new file mode 100644 index 0000000000..8cddd11b89 --- /dev/null +++ b/dictionaries/library_hashlib.txt @@ -0,0 +1,11 @@ +paralelización +configurables +indiferenciabilidad +remplazamiento +Hashlib +scrypt +Creative +Commons +Public +Domain +Dedication diff --git a/library/hashlib.po b/library/hashlib.po index fc1f1d3463..161979c1b2 100644 --- a/library/hashlib.po +++ b/library/hashlib.po @@ -1,29 +1,30 @@ # Copyright (C) 2001-2020, Python Software Foundation # This file is distributed under the same license as the Python package. -# Maintained by the python-doc-es workteam. +# Maintained by the python-doc-es workteam. # docs-es@python.org / https://mail.python.org/mailman3/lists/docs-es.python.org/ # Check https://github.com/python/python-docs-es/blob/3.8/TRANSLATORS to get the list of volunteers # -#, fuzzy msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-05-06 11:59-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-10-29 14:39+0100\n" +"Last-Translator: Álvaro Mondéjar \n" "Language-Team: python-doc-es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: es\n" +"X-Generator: Poedit 2.4.1\n" #: ../Doc/library/hashlib.rst:2 msgid ":mod:`hashlib` --- Secure hashes and message digests" -msgstr "" +msgstr ":mod:`hashlib` --- Hashes seguros y resúmenes de mensajes" #: ../Doc/library/hashlib.rst:10 msgid "**Source code:** :source:`Lib/hashlib.py`" -msgstr "" +msgstr "**Código fuente:** :source:`Lib/hashlib.py`" #: ../Doc/library/hashlib.rst:23 msgid "" @@ -34,22 +35,33 @@ msgid "" "hash\" and \"message digest\" are interchangeable. Older algorithms were " "called message digests. The modern term is secure hash." msgstr "" +"Este módulo implementa una interfaz común a diferentes algoritmos de hash y " +"resúmenes de mensajes seguros. Están incluidos los algoritmos de hash FIPS " +"seguros SHA1, SHA224, SHA226, SHA384 y SHA512 (definidos en FIPS 180-2) " +"además del algoritmo MD5 de RSA (definido en Internet :rfc:`1321`). Los " +"términos \"hash seguro\" y \"resumen de mensaje\" son intercambiables. Los " +"algoritmos más antiguos fueron denominados resúmenes de mensajes. El término " +"moderno es hash seguro." #: ../Doc/library/hashlib.rst:32 msgid "" "If you want the adler32 or crc32 hash functions, they are available in the :" "mod:`zlib` module." msgstr "" +"Si quieres las funciones de hash adler32 o crc32, están disponibles en el " +"módulo :mod:`zlib`." #: ../Doc/library/hashlib.rst:37 msgid "" "Some algorithms have known hash collision weaknesses, refer to the \"See also" "\" section at the end." msgstr "" +"Algunos algoritmos tienen conocidas debilidades de colisión de hash, " +"consulte la sección \"Ver también\" al final." #: ../Doc/library/hashlib.rst:44 msgid "Hash algorithms" -msgstr "" +msgstr "Algoritmos de hash" #: ../Doc/library/hashlib.rst:46 msgid "" @@ -61,18 +73,29 @@ msgid "" "`digest` of the concatenation of the data fed to it so far using the :meth:" "`digest` or :meth:`hexdigest` methods." msgstr "" +"Hay un método constructor nombrado para cada tipo de :dfn:`hash`. Todos " +"retornan un objeto de hash con la misma interfaz simple. Por ejemplo, usa :" +"func:`sha256` para crear un objeto de hash SHA-256. Ahora puedes alimentar " +"este objeto con :term:`objetos como bytes ` (normalmente :" +"class:`bytes`) usando el método :meth:`update`. En cualquier punto puedes " +"pedir el resumen (:dfn:`digest`) de la concatenación de los datos " +"alimentados al mismo usando los métodos :meth:`digest` o :meth:`hexdigest`." #: ../Doc/library/hashlib.rst:56 msgid "" "For better multithreading performance, the Python :term:`GIL` is released " "for data larger than 2047 bytes at object creation or on update." msgstr "" +"Para un rendimiento multihilo mejor, el :term:`GIL` de Python es liberado " +"para datos superiores a 2047 bytes en la creación o actualización de objetos." #: ../Doc/library/hashlib.rst:61 msgid "" "Feeding string objects into :meth:`update` is not supported, as hashes work " "on bytes, not on characters." msgstr "" +"La alimentación de objetos de cadenas en :meth:`update` no está soportada, " +"ya que los hashes funcionan en bytes, no en caracteres." #: ../Doc/library/hashlib.rst:66 msgid "" @@ -85,26 +108,39 @@ msgid "" "most platforms the :func:`sha3_224`, :func:`sha3_256`, :func:`sha3_384`, :" "func:`sha3_512`, :func:`shake_128`, :func:`shake_256` are also available." msgstr "" +"Los constructores para algoritmos de hash siempre presentes en este módulo " +"son :func:`sha1`, :func:`sha224`, :func:`sha256`, :func:`sha384`, :func:" +"`sha512`, :func:`blake2b` y :func:`blake2s`. :func:`md5` también está " +"disponible normalmente, aunque puede faltar si estás usando una construcción " +"de Python que cumple de forma rara con los requisitos FIPS. Algoritmos " +"adicionales también pueden estar disponibles dependiendo de la biblioteca " +"OpenSSL que Python usa en tu plataforma. En la mayoría de plataformas las " +"funciones :func:`sha3_224`, :func:`sha3_256`, :func:`sha3_384`, :func:" +"`sha3_512`, :func:`shake_128` y :func:`shake_256` también están disponibles." #: ../Doc/library/hashlib.rst:76 msgid "" "SHA3 (Keccak) and SHAKE constructors :func:`sha3_224`, :func:`sha3_256`, :" "func:`sha3_384`, :func:`sha3_512`, :func:`shake_128`, :func:`shake_256`." msgstr "" +"Constructores SHA3 (Keccak) y SHAKE :func:`sha3_224`, :func:`sha3_256`, :" +"func:`sha3_384`, :func:`sha3_512`, :func:`shake_128`, :func:`shake_256`." #: ../Doc/library/hashlib.rst:80 msgid ":func:`blake2b` and :func:`blake2s` were added." -msgstr "" +msgstr "Fueron añadidas :func:`blake2b` y :func:`blake2s`." #: ../Doc/library/hashlib.rst:83 msgid "" "For example, to obtain the digest of the byte string ``b'Nobody inspects the " "spammish repetition'``::" msgstr "" +"Por ejemplo, para obtener el resumen de la cadena de bytes ``b'Nobody " +"inspects the spammish repetition'``::" #: ../Doc/library/hashlib.rst:97 msgid "More condensed:" -msgstr "" +msgstr "Más resumido:" #: ../Doc/library/hashlib.rst:104 msgid "" @@ -114,14 +150,19 @@ msgid "" "library may offer. The named constructors are much faster than :func:`new` " "and should be preferred." msgstr "" +"Es un constructor genérico que toma la cadena *name* del algoritmo deseado " +"como su primer parámetro. También existe para permitir acceso a los hashes " +"arriba listados así como cualquiera de los otros algoritmos que tu " +"biblioteca OpenSSL puede ofrecer. Los constructores nombrados son mucho más " +"rápidos que :func:`new` y deberían preferirse." #: ../Doc/library/hashlib.rst:110 msgid "Using :func:`new` with an algorithm provided by OpenSSL:" -msgstr "" +msgstr "Usando :func:`new` con un algoritmo provisto por OpenSSL:" #: ../Doc/library/hashlib.rst:117 msgid "Hashlib provides the following constant attributes:" -msgstr "" +msgstr "Hashlib provee los siguientes atributos constantes:" #: ../Doc/library/hashlib.rst:121 msgid "" @@ -130,6 +171,10 @@ msgid "" "some upstream vendors offering an odd \"FIPS compliant\" Python build that " "excludes it." msgstr "" +"Un conjunto que contiene los nombres de los algoritmos garantizados a ser " +"soportados por este módulo en todas las plataformas. Ten en cuenta que 'md5' " +"se encuentra en esta lista a pesar de que algunos proveedores ofrecen una " +"extraña construcción Python \"compatible con FIPS\" que la excluye." #: ../Doc/library/hashlib.rst:130 msgid "" @@ -139,30 +184,39 @@ msgid "" "same algorithm may appear multiple times in this set under different names " "(thanks to OpenSSL)." msgstr "" +"Un conjunto que contiene los nombres de los algoritmos de hash que están " +"disponibles en el intérprete de Python en ejecución. Estos nombres serán " +"reconocidos cuando sean pasados a :func:`new`. :attr:`algorithms_guaranteed` " +"siempre será un subconjunto. El mismo algoritmo puede aparecer múltiples " +"veces en este conjunto bajo diferentes nombres (gracias a OpenSSL)." #: ../Doc/library/hashlib.rst:138 msgid "" "The following values are provided as constant attributes of the hash objects " "returned by the constructors:" msgstr "" +"Los siguientes valores son provistos como atributos constantes de los " +"objetos hash retornados por los constructores:" #: ../Doc/library/hashlib.rst:144 msgid "The size of the resulting hash in bytes." -msgstr "" +msgstr "El tamaño del hash resultante en bytes." #: ../Doc/library/hashlib.rst:148 msgid "The internal block size of the hash algorithm in bytes." -msgstr "" +msgstr "El tamaño del bloque interno del algoritmo de hash en bytes." #: ../Doc/library/hashlib.rst:150 msgid "A hash object has the following attributes:" -msgstr "" +msgstr "Un objeto hash tiene los siguientes atributos:" #: ../Doc/library/hashlib.rst:154 msgid "" "The canonical name of this hash, always lowercase and always suitable as a " "parameter to :func:`new` to create another hash of this type." msgstr "" +"El nombre canónico de este hash, siempre en minúsculas y siempre adecuado " +"como un parámetro a :func:`new` para crear otro hash de este tipo." #: ../Doc/library/hashlib.rst:157 msgid "" @@ -170,10 +224,13 @@ msgid "" "until Python 3.4 was not formally specified, so may not exist on some " "platforms." msgstr "" +"El atributo *name* ha estado presente en CPython desde su inicio, pero desde " +"Python 3.4 no fue especificado formalmente, por lo que puede no existir en " +"algunas plataformas." #: ../Doc/library/hashlib.rst:162 msgid "A hash object has the following methods:" -msgstr "" +msgstr "Un objeto hash tiene los siguientes métodos:" #: ../Doc/library/hashlib.rst:167 msgid "" @@ -181,6 +238,10 @@ msgid "" "are equivalent to a single call with the concatenation of all the arguments: " "``m.update(a); m.update(b)`` is equivalent to ``m.update(a+b)``." msgstr "" +"Actualiza el objeto de hash con el :term:`bytes-like object`. Invocaciones " +"repetidas son equivalentes a una única invocación con la concatenación de " +"todos los argumentos: ``m.update(a); m.update(b)`` es equivalente a ``m." +"update(a+b)``." #: ../Doc/library/hashlib.rst:172 msgid "" @@ -188,6 +249,9 @@ msgid "" "on data larger than 2047 bytes is taking place when using hash algorithms " "supplied by OpenSSL." msgstr "" +"El GIL de Python es liberado para permitir a otros hilos ejecutarse mientras " +"ocurren actualizaciones de hash en datos con tamaños superiores a 2047 bytes " +"cuando se usan algoritmos de hash suministrados por OpenSSL." #: ../Doc/library/hashlib.rst:180 msgid "" @@ -195,6 +259,9 @@ msgid "" "This is a bytes object of size :attr:`digest_size` which may contain bytes " "in the whole range from 0 to 255." msgstr "" +"Retorna el resumen de los datos pasados al método :meth:`update` hasta el " +"momento. Este es un objeto de bytes de tamaño :attr:`digest_size` el cual " +"puede contener bytes en el rango completo desde 0 a 255." #: ../Doc/library/hashlib.rst:187 ../Doc/library/hashlib.rst:215 msgid "" @@ -202,16 +269,23 @@ msgid "" "double length, containing only hexadecimal digits. This may be used to " "exchange the value safely in email or other non-binary environments." msgstr "" +"Como :meth:`digest` excepto que el resumen es retornado como un objeto de " +"cadena del doble de largo, conteniendo sólo dígitos hexadecimales. Este " +"puede ser usado para intercambiar el valor de forma segura en correos " +"electrónicos u otros entornos no binarios." #: ../Doc/library/hashlib.rst:194 msgid "" "Return a copy (\"clone\") of the hash object. This can be used to " "efficiently compute the digests of data sharing a common initial substring." msgstr "" +"Retorna una copia (\"clon\") del objeto hash. Este puede ser usado para " +"calcular eficientemente los resúmenes de datos compartiendo una subcadena " +"inicial común." #: ../Doc/library/hashlib.rst:199 msgid "SHAKE variable length digests" -msgstr "" +msgstr "Resúmenes SHAKE de largo variable" #: ../Doc/library/hashlib.rst:201 msgid "" @@ -220,6 +294,10 @@ msgid "" "such, their digest methods require a length. Maximum length is not limited " "by the SHAKE algorithm." msgstr "" +"Los algoritmos :func:`shake_128` y :func:`shake_256` proveen resúmenes de " +"largo variable con largo_en_bits//2 hasta 128 ó 256 bits de seguridad. Como " +"tales, sus métodos de resumen requieren un largo. El largo máximo no está " +"limitado por el algoritmo SHAKE." #: ../Doc/library/hashlib.rst:208 msgid "" @@ -227,10 +305,13 @@ msgid "" "This is a bytes object of size *length* which may contain bytes in the whole " "range from 0 to 255." msgstr "" +"Retorna el resumen de los datos pasados al método :meth:`update` hasta el " +"momento. Este es un objeto de bytes de tamaño *length* el cual puede " +"contener bytes en el rango completo desde 0 a 255." #: ../Doc/library/hashlib.rst:221 msgid "Key derivation" -msgstr "" +msgstr "Derivación de clave" #: ../Doc/library/hashlib.rst:223 msgid "" @@ -240,12 +321,19 @@ msgid "" "be tunable, slow, and include a `salt `_." msgstr "" +"Los algoritmos de derivación de clave y estiramiento de clave están " +"diseñados para el cifrado seguro de contraseña. Algoritmos ingenuos como " +"``sha1(password)`` no son resistentes contra ataques de fuerza bruta. Una " +"buena función hash de contraseña debe ser afinable, lenta e incluir una `sal " +"`_." #: ../Doc/library/hashlib.rst:231 msgid "" "The function provides PKCS#5 password-based key derivation function 2. It " "uses HMAC as pseudorandom function." msgstr "" +"La función provee contraseñas PKCS#5 basadas en función de derivación de " +"clave 2. Usa HMAC como función de pseudoaleatoriedad." #: ../Doc/library/hashlib.rst:234 msgid "" @@ -255,6 +343,11 @@ msgid "" "sensible length (e.g. 1024). *salt* should be about 16 or more bytes from a " "proper source, e.g. :func:`os.urandom`." msgstr "" +"La cadena *hash_name* es el nombre deseado del algoritmo de resumen de hash " +"para HMAC, ej. 'sha1' o 'sha256'. *password* y *salt* son interpretados como " +"búferes de bytes. Aplicaciones y bibliotecas deberían limitar *password* a " +"un largo razonable (ej. 1024). *salt* debería ser sobre 16 o más bytes desde " +"una fuente adecuada, ej. :func:`os.urandom`." #: ../Doc/library/hashlib.rst:240 msgid "" @@ -262,12 +355,18 @@ msgid "" "computing power. As of 2013, at least 100,000 iterations of SHA-256 are " "suggested." msgstr "" +"El número de *iterations* debería ser elegido basado en el algoritmo de hash " +"y el poder de cómputo. A partir del 2013, se sugiere al menos 100,000 " +"iteraciones de SHA-256." #: ../Doc/library/hashlib.rst:244 msgid "" "*dklen* is the length of the derived key. If *dklen* is ``None`` then the " "digest size of the hash algorithm *hash_name* is used, e.g. 64 for SHA-512." msgstr "" +"*dklen* es el largo de la clave derivada. Si *dklen* es ``None`` entonces el " +"tamaño de resumen del algoritmo de hash *hash_name* es usado, ej. 64 para " +"SHA-512." #: ../Doc/library/hashlib.rst:256 msgid "" @@ -275,12 +374,17 @@ msgid "" "Python implementation uses an inline version of :mod:`hmac`. It is about " "three times slower and doesn't release the GIL." msgstr "" +"Una implementación rápida de *pbkdf2_hmac* está disponible con OpenSSL. La " +"implementación Python usa una versión en línea de :mod:`hmac`. Es " +"aproximadamente tres veces más lenta y no libera el GIL." #: ../Doc/library/hashlib.rst:262 msgid "" "The function provides scrypt password-based key derivation function as " "defined in :rfc:`7914`." msgstr "" +"La función provee una contraseña scrypt basada en una función derivación de " +"clave como es definida en :rfc:`7914`." #: ../Doc/library/hashlib.rst:265 msgid "" @@ -289,6 +393,10 @@ msgid "" "length (e.g. 1024). *salt* should be about 16 or more bytes from a proper " "source, e.g. :func:`os.urandom`." msgstr "" +"*password* y *salt* deben ser :term:`objetos de bytes `. " +"Aplicaciones y bibliotecas deberían limitar *password* a un largo razonable " +"(ej. 1024). *salt* debería ser aproximadamente 16 o más bytes de una fuente " +"adecuada, ej. :func:`os.unrandom`." #: ../Doc/library/hashlib.rst:270 msgid "" @@ -296,134 +404,159 @@ msgid "" "factor and *maxmem* limits memory (OpenSSL 1.1.0 defaults to 32 MiB). " "*dklen* is the length of the derived key." msgstr "" +"*n* es el factor de coste de CPU/Memoria, *r* el tamaño de bloque, *p* el " +"factor de paralelización y *maxmem* limita la memoria (OpenSSL 1.1.0 por " +"defecto a 32 MiB). *dklen* es el largo de la clave derivada." #: ../Doc/library/hashlib.rst:275 msgid ":ref:`Availability `: OpenSSL 1.1+." -msgstr "" +msgstr ":ref:`Disponibilidad `: OpenSSL 1.1+." #: ../Doc/library/hashlib.rst:280 msgid "BLAKE2" -msgstr "" +msgstr "BLAKE2" #: ../Doc/library/hashlib.rst:287 msgid "" "BLAKE2_ is a cryptographic hash function defined in :rfc:`7693` that comes " "in two flavors:" msgstr "" +"BLAKE2_ es una función de hash criptográfico definida en :rfc:`7693` que " +"viene en dos sabores:" #: ../Doc/library/hashlib.rst:290 msgid "" "**BLAKE2b**, optimized for 64-bit platforms and produces digests of any size " "between 1 and 64 bytes," msgstr "" +"**BLAKE2b**, optimizada para plataformas de 64 bits y produce resúmenes de " +"cualquier tamaño entre 1 y 64 bytes," #: ../Doc/library/hashlib.rst:293 msgid "" "**BLAKE2s**, optimized for 8- to 32-bit platforms and produces digests of " "any size between 1 and 32 bytes." msgstr "" +"**BLAKE2s**, optimizada para plataformas de 8 a 32 bits y produce resúmenes " +"de cualquier tamaño entre 1 y 32 bytes." #: ../Doc/library/hashlib.rst:296 msgid "" "BLAKE2 supports **keyed mode** (a faster and simpler replacement for HMAC_), " "**salted hashing**, **personalization**, and **tree hashing**." msgstr "" +"BLAKE2 proporciona el **modo keyed** (un remplazamiento más simple rápido " +"para HMAC_), **cifrado salado** (*salted hashing*), **personalización** y " +"**cifrado de árbol**." #: ../Doc/library/hashlib.rst:299 msgid "" "Hash objects from this module follow the API of standard library's :mod:" "`hashlib` objects." msgstr "" +"Los objetos hash de este módulo siguen los estándares de los objetos de la " +"biblioteca :mod:`hashlib`." #: ../Doc/library/hashlib.rst:304 msgid "Creating hash objects" -msgstr "" +msgstr "Creando objetos hash" #: ../Doc/library/hashlib.rst:306 msgid "New hash objects are created by calling constructor functions:" -msgstr "" +msgstr "Se crean nuevos objetos hash invocando a las funciones de constructor:" #: ../Doc/library/hashlib.rst:318 msgid "" "These functions return the corresponding hash objects for calculating " "BLAKE2b or BLAKE2s. They optionally take these general parameters:" msgstr "" +"Estas funciones retornan los objetos hash correspondientes para calcular " +"BLAKE2b o BLAKE2s. Ellas toman opcionalmente estos parámetros generales:" #: ../Doc/library/hashlib.rst:321 msgid "" "*data*: initial chunk of data to hash, which must be :term:`bytes-like " "object`. It can be passed only as positional argument." msgstr "" +"*data*: trozo inicial de datos a cifrar, el cual debe ser un :term:`bytes-" +"like object`. Puede ser pasado sólo como argumento posicional." #: ../Doc/library/hashlib.rst:324 msgid "*digest_size*: size of output digest in bytes." -msgstr "" +msgstr "*digest_size*: tamaño del resumen de salida en bytes." #: ../Doc/library/hashlib.rst:326 msgid "" "*key*: key for keyed hashing (up to 64 bytes for BLAKE2b, up to 32 bytes for " "BLAKE2s)." msgstr "" +"*key*: clave para el cifrado de clave (*keyed hashing*) (hasta 64 bytes para " +"BLAKE2b, hasta 32 bytes para BLAKE2s)." #: ../Doc/library/hashlib.rst:329 msgid "" "*salt*: salt for randomized hashing (up to 16 bytes for BLAKE2b, up to 8 " "bytes for BLAKE2s)." msgstr "" +"*salt*: sal para el cifrado aleatorio (hasta 16 bytes para BLAKE2b, hasta 8 " +"bytes para BLAKE2s)." #: ../Doc/library/hashlib.rst:332 msgid "" "*person*: personalization string (up to 16 bytes for BLAKE2b, up to 8 bytes " "for BLAKE2s)." msgstr "" +"*person*: cadena de personalización (hasta 16 bytes para BLAKE2b, hasta 8 " +"bytes para BLAKE2s)." #: ../Doc/library/hashlib.rst:335 msgid "The following table shows limits for general parameters (in bytes):" msgstr "" +"La siguiente tabla muestra los límites para parámetros generales (en bytes):" #: ../Doc/library/hashlib.rst:338 msgid "Hash" -msgstr "" +msgstr "Cifrado" #: ../Doc/library/hashlib.rst:338 msgid "digest_size" -msgstr "" +msgstr "digest_size" #: ../Doc/library/hashlib.rst:338 msgid "len(key)" -msgstr "" +msgstr "len(key)" #: ../Doc/library/hashlib.rst:338 msgid "len(salt)" -msgstr "" +msgstr "len(salt)" #: ../Doc/library/hashlib.rst:338 msgid "len(person)" -msgstr "" +msgstr "len(person)" #: ../Doc/library/hashlib.rst:340 msgid "BLAKE2b" -msgstr "" +msgstr "BLAKE2b" #: ../Doc/library/hashlib.rst:340 msgid "64" -msgstr "" +msgstr "64" #: ../Doc/library/hashlib.rst:340 msgid "16" -msgstr "" +msgstr "16" #: ../Doc/library/hashlib.rst:341 msgid "BLAKE2s" -msgstr "" +msgstr "BLAKE2s" #: ../Doc/library/hashlib.rst:341 msgid "32" -msgstr "" +msgstr "32" #: ../Doc/library/hashlib.rst:341 msgid "8" -msgstr "" +msgstr "8" #: ../Doc/library/hashlib.rst:346 msgid "" @@ -434,89 +567,118 @@ msgid "" "example, ``b'salt'`` and ``b'salt\\x00'`` is the same value. (This is not " "the case for *key*.)" msgstr "" +"La especificación BLAKE2 define largos constantes para los parámetros de sal " +"y personalización, sin embargo, por conveniencia, esta implementación acepta " +"cadenas de bytes de cualquier tamaño hasta el largo especificado. Si el " +"largo del parámetro es menor que el especificado, es acolchado con ceros, " +"por lo tanto, por ejemplo, ``b'salt'`` y ``b'salt\\x00'`` es el mismo valor. " +"(Este no es el caso para *key*.)" #: ../Doc/library/hashlib.rst:353 msgid "These sizes are available as module `constants`_ described below." msgstr "" +"Estos tamaños están disponibles como `constantes`_ del módulo descritas " +"abajo." #: ../Doc/library/hashlib.rst:355 msgid "" "Constructor functions also accept the following tree hashing parameters:" msgstr "" +"Las funciones constructoras también aceptan los siguientes parámetros de " +"cifrado de árbol:" #: ../Doc/library/hashlib.rst:357 msgid "*fanout*: fanout (0 to 255, 0 if unlimited, 1 in sequential mode)." msgstr "" +"*fanout*: despliegue en abanico (0 a 255, 0 si ilimitado, 1 en modo " +"secuencial)." #: ../Doc/library/hashlib.rst:359 msgid "" "*depth*: maximal depth of tree (1 to 255, 255 if unlimited, 1 in sequential " "mode)." msgstr "" +"*depth*: profundidad máxima del árbol (1 a 255, 255 si ilimitado, 1 en modo " +"secuencial)." #: ../Doc/library/hashlib.rst:362 msgid "" "*leaf_size*: maximal byte length of leaf (0 to 2**32-1, 0 if unlimited or in " "sequential mode)." msgstr "" +"*leaf_size*: tamaño máximo en bytes de hoja (0 a 2**32-1, 0 si ilimitado o " +"en modo secuencial)." #: ../Doc/library/hashlib.rst:365 msgid "" "*node_offset*: node offset (0 to 2**64-1 for BLAKE2b, 0 to 2**48-1 for " "BLAKE2s, 0 for the first, leftmost, leaf, or in sequential mode)." msgstr "" +"*node_offset*: desplazamiento del nodo (0 a 2**64-1 para BLAKE2b, 0 a 2**48 " +"para BLAKE2s, 0 para la primera, la hoja más a la izquierda o en modo " +"secuencial)." #: ../Doc/library/hashlib.rst:368 msgid "" "*node_depth*: node depth (0 to 255, 0 for leaves, or in sequential mode)." msgstr "" +"*node_depth*: profundidad de nodo (0 a 255, 0 para hojas o en modo " +"secuencial)." #: ../Doc/library/hashlib.rst:370 msgid "" "*inner_size*: inner digest size (0 to 64 for BLAKE2b, 0 to 32 for BLAKE2s, 0 " "in sequential mode)." msgstr "" +"*inner_size*: tamaño interno del resumen (0 a 64 para BLAKE2b, 0 a 32 para " +"BLAKE2s, 0 en modo secuencial)." #: ../Doc/library/hashlib.rst:373 msgid "" "*last_node*: boolean indicating whether the processed node is the last one " "(`False` for sequential mode)." msgstr "" +"*last_node*: booleano indicando si el nodo procesado es el último (`False` " +"para modo secuencial)." #: ../Doc/library/hashlib.rst:379 msgid "" "See section 2.10 in `BLAKE2 specification `_ for comprehensive review of tree hashing." msgstr "" +"Consulta la sección 2.10 en la `especificación BLAKE2 ` para una revisión integral del cifrado en árbol." #: ../Doc/library/hashlib.rst:385 msgid "Constants" -msgstr "" +msgstr "Constantes" #: ../Doc/library/hashlib.rst:390 msgid "Salt length (maximum length accepted by constructors)." -msgstr "" +msgstr "Largo de sal (largo máximo aceptado por los constructores)." #: ../Doc/library/hashlib.rst:396 msgid "" "Personalization string length (maximum length accepted by constructors)." msgstr "" +"Largo de cadena de personalización (largo máximo aceptado por los " +"constructores)." #: ../Doc/library/hashlib.rst:402 msgid "Maximum key size." -msgstr "" +msgstr "Tamaño máximo de clave." #: ../Doc/library/hashlib.rst:408 msgid "Maximum digest size that the hash function can output." -msgstr "" +msgstr "Tamaño máximo de resumen que puede producir la función hash." #: ../Doc/library/hashlib.rst:412 msgid "Examples" -msgstr "" +msgstr "Ejemplos" #: ../Doc/library/hashlib.rst:415 msgid "Simple hashing" -msgstr "" +msgstr "Cifrado simple" #: ../Doc/library/hashlib.rst:417 msgid "" @@ -526,22 +688,32 @@ msgid "" "object, and, finally, get the digest out of the object by calling :meth:" "`digest` (or :meth:`hexdigest` for hex-encoded string)." msgstr "" +"Para calcular el hash de algunos datos, primero debes construir un objeto " +"hash invocando a la función del constructor apropiada (:func:`blake2b` o :" +"func:`blake2s`), entonces actualizarlo con los datos invocando :meth:" +"`update` en el objeto y, finalmente, obtener el resumen del objeto " +"invocando :meth:`digest` (o :meth:`hexdigest` para una cadena codificada en " +"hexadecimal)." #: ../Doc/library/hashlib.rst:430 msgid "" "As a shortcut, you can pass the first chunk of data to update directly to " "the constructor as the positional argument:" msgstr "" +"Como atajo, puedes pasar el primer trozo de datos para actualizar " +"directamente el constructor como el argumento posicional:" #: ../Doc/library/hashlib.rst:437 msgid "" "You can call :meth:`hash.update` as many times as you need to iteratively " "update the hash:" msgstr "" +"Puedes invocar :meth:`hash.update` tantas veces como necesites para " +"actualizar el hash iterativamente:" #: ../Doc/library/hashlib.rst:450 msgid "Using different digest sizes" -msgstr "" +msgstr "Usar diferentes tamaños de resumen" #: ../Doc/library/hashlib.rst:452 msgid "" @@ -549,6 +721,10 @@ msgid "" "32 bytes for BLAKE2s. For example, to replace SHA-1 with BLAKE2b without " "changing the size of output, we can tell BLAKE2b to produce 20-byte digests:" msgstr "" +"BLAKE2 tiene tamaño de resúmenes configurables de hasta 64 bytes para " +"BLAKE2b y 32 bytes para BLAKE2s. Por ejemplo, para remplazar SHA-1 con " +"BLAKE2b sin cambiar el tamaño de la salida, puedes decirle a BLAKE2b que " +"produzca resúmenes de 20 bytes:" #: ../Doc/library/hashlib.rst:466 msgid "" @@ -556,10 +732,14 @@ msgid "" "(shorter hashes are *not* prefixes of longer hashes); BLAKE2b and BLAKE2s " "produce different outputs even if the output length is the same:" msgstr "" +"Objetos hash con diferentes tamaños de resumen tienen salidas completamente " +"diferentes (hashes más cortos *no* son prefijos de hashes más largos); " +"BLAKE2b y BLAKE2s producen salidas diferentes incluso si el largo de salida " +"es el mismo:" #: ../Doc/library/hashlib.rst:482 msgid "Keyed hashing" -msgstr "" +msgstr "Cifrado de clave" #: ../Doc/library/hashlib.rst:484 msgid "" @@ -569,28 +749,41 @@ msgid "" "can be securely used in prefix-MAC mode thanks to the indifferentiability " "property inherited from BLAKE." msgstr "" +"El cifrado de clave puede ser usado para autentificación como remplazo más " +"rápido y simple para `Código de autentificación de mensajes en clave-hash " +"`_ (HMAC). BLAKE2 puede ser usado de " +"forma segura en modo de prefijo MAC gracias a la propiedad de " +"indiferenciabilidad heredada de BLAKE." #: ../Doc/library/hashlib.rst:490 msgid "" "This example shows how to get a (hex-encoded) 128-bit authentication code " "for message ``b'message data'`` with key ``b'pseudorandom key'``::" msgstr "" +"Este ejemplo muestra como obtener un código de autentificación (codificado " +"como hexadecimal) de 128 bits para el mensaje ``b'message data'`` con la " +"clave ``b'pseudorandom key'``::" #: ../Doc/library/hashlib.rst:500 msgid "" "As a practical example, a web application can symmetrically sign cookies " "sent to users and later verify them to make sure they weren't tampered with::" msgstr "" +"Como ejemplo práctico, una aplicación web puede firmar simétricamente " +"cookies enviadas a los usuarios y verificarlas más tarde para asegurar que " +"no fueron manipuladas con::" #: ../Doc/library/hashlib.rst:529 msgid "" "Even though there's a native keyed hashing mode, BLAKE2 can, of course, be " "used in HMAC construction with :mod:`hmac` module::" msgstr "" +"Incluso aunque hay un modo de cifrado de claves nativo, BLAKE2 puede, por " +"supuesto, ser usado en construcción de HMAC con el módulo :mod:`hmac`::" #: ../Doc/library/hashlib.rst:540 msgid "Randomized hashing" -msgstr "" +msgstr "Cifrado aleatorio" #: ../Doc/library/hashlib.rst:542 msgid "" @@ -598,6 +791,9 @@ msgid "" "function. Randomized hashing is useful for protecting against collision " "attacks on the hash function used in digital signatures." msgstr "" +"Definiendo el parámetro *salt* los usuarios pueden introducir aleatoriedad a " +"la función hash. El cifrado aleatorio es útil para proteger contra ataques " +"de colisión en la función hash usada en firmas digitales." #: ../Doc/library/hashlib.rst:546 msgid "" @@ -619,18 +815,42 @@ msgid "" "hashing may reduce the amount of security provided by a digital signature " "when all portions of the message are prepared by the signer." msgstr "" +"El cifrado aleatorio está diseñado para situaciones en las que una parte, el " +"preparador del mensaje, genera todo o parte de un mensaje para ser firmado " +"por una segunda parte, el firmante del mensaje. Si el preparador del mensaje " +"es capaz de encontrar colisiones de funciones hash criptográficas (ej., dos " +"mensajes produciendo el mismo valor de hash), entonces ellos pueden preparar " +"versiones significativas del mensaje que producirían el mismo valor de hash " +"y firma digital, pero con diferentes resultados (ej., transfiriendo " +"1,000,000 $ a una cuenta, en lugar de 10 $), Las funciones de hash " +"criptográfico han sido diseñadas con resistencia de colisión como objetivo " +"principal, pero la concentración actual en el ataque a las funciones hash " +"criptográficas puede resultar en una función hash criptográfica dada que " +"provea menor resistencia de colisión de la esperada. El cifrado aleatorio " +"ofrece al firmante protección adicional reduciendo la probabilidad de que un " +"preparador puede generar dos o más mensajes que en última instancia producen " +"el mismo valor hash durante el proceso de generación de la firma digital, " +"--- incluso si es práctico encontrar colisiones para la función hash. Sin " +"embargo, el uso de cifrado aleatorio puede reducir la cantidad de seguridad " +"provista por una firma digital cuando todas las porciones del mensaje son " +"preparadas por el firmante." #: ../Doc/library/hashlib.rst:565 msgid "" "(`NIST SP-800-106 \"Randomized Hashing for Digital Signatures\" `_)" msgstr "" +"(`NIST SP-800-106 \"Randomized Hashing for Digital Signatures\" `_)" #: ../Doc/library/hashlib.rst:568 msgid "" "In BLAKE2 the salt is processed as a one-time input to the hash function " "during initialization, rather than as an input to each compression function." msgstr "" +"En BLAKE2 la sal es procesada como una entrada de una vez a la función hash " +"durante la inicialización, en lugar de como una entrada para cada función de " +"compresión." #: ../Doc/library/hashlib.rst:573 msgid "" @@ -638,10 +858,14 @@ msgid "" "cryptographic hash function, such as SHA-256, is not suitable for hashing " "passwords. See `BLAKE2 FAQ `_ for more information." msgstr "" +"El *cifrado salado* (o sólo cifrado) con BLAKE2 o cualquier otra función de " +"hash criptográfico de propósito general, como SHA-256, no son aptas para " +"cifrar contraseñas. Ver `BLAKE2 FAQ `_ para más " +"información." #: ../Doc/library/hashlib.rst:596 msgid "Personalization" -msgstr "" +msgstr "Personalización" #: ../Doc/library/hashlib.rst:598 msgid "" @@ -649,6 +873,9 @@ msgid "" "for the same input for different purposes. Quoting the authors of the Skein " "hash function:" msgstr "" +"A veces es útil forzar a la función hash para producir diferentes resúmenes " +"para la misma entrada para diferentes propósitos. Citando a los autores de " +"la función hash Skein:" #: ../Doc/library/hashlib.rst:602 msgid "" @@ -659,40 +886,53 @@ msgid "" "force the application to make the hash inputs the same. Personalizing each " "hash function used in the protocol summarily stops this type of attack." msgstr "" +"Recomendamos que todos los diseñadores de aplicaciones consideren seriamente " +"hacer esto; hemos visto muchos protocolos donde un hash que es calculado en " +"una parte del protocolo puede ser usado en una parte completamente diferente " +"porque dos cálculos hash fueron realizados en datos similares o " +"relacionados, y el atacante puede forzar a la aplicación a hacer las " +"entradas hash iguales. Personalizar cada función hash usada en el protocolo " +"resumidamente detiene este tipo de ataque." #: ../Doc/library/hashlib.rst:609 msgid "" "(`The Skein Hash Function Family `_, p. 21)" msgstr "" +"(`The Skein Hash Function Family `_, p. 21)" #: ../Doc/library/hashlib.rst:613 msgid "BLAKE2 can be personalized by passing bytes to the *person* argument::" -msgstr "" +msgstr "BLAKE2 puede ser personalizado pasando bytes al argumento *person*::" #: ../Doc/library/hashlib.rst:627 msgid "" "Personalization together with the keyed mode can also be used to derive " "different keys from a single one." msgstr "" +"Se puede usar también personalización en conjunto con el modo de clave para " +"derivar diferentes claves desde una sola." #: ../Doc/library/hashlib.rst:641 msgid "Tree mode" -msgstr "" +msgstr "Modo de árbol" #: ../Doc/library/hashlib.rst:643 msgid "Here's an example of hashing a minimal tree with two leaf nodes::" -msgstr "" +msgstr "Aquí hay un ejemplo de cifrar un árbol mínimo con dos nodos de hoja::" #: ../Doc/library/hashlib.rst:649 msgid "" "This example uses 64-byte internal digests, and returns the 32-byte final " "digest::" msgstr "" +"Este ejemplo usa resúmenes internos de 64 bytes, y retorna el resumen final " +"de 32 bytes::" #: ../Doc/library/hashlib.rst:679 msgid "Credits" -msgstr "" +msgstr "Créditos" #: ../Doc/library/hashlib.rst:681 msgid "" @@ -701,12 +941,18 @@ msgid "" "created by *Jean-Philippe Aumasson*, *Luca Henzen*, *Willi Meier*, and " "*Raphael C.-W. Phan*." msgstr "" +"BLAKE2_ fue diseñado por *Jean-Philippe Aumasson*, *Samuel Neves*, *Zooko " +"Wilcox-O'Hearn* y *Christian Winnerlein* basado en el SHA-3_ finalista " +"BLAKE_ creado por *Jean-Philippe Aumasson*, *Luca Henzen*, *Willi Meier* y " +"*Raphael C.-W. Phan*." #: ../Doc/library/hashlib.rst:686 msgid "" "It uses core algorithm from ChaCha_ cipher designed by *Daniel J. " "Bernstein*." msgstr "" +"Usa el algoritmo núcleo del cifrado ChaCha_ diseñado por *Daniel J. " +"Bernstein*." #: ../Doc/library/hashlib.rst:688 msgid "" @@ -714,16 +960,24 @@ msgid "" "*Dmitry Chestnykh* based on C implementation written by *Samuel Neves*. The " "documentation was copied from pyblake2_ and written by *Dmitry Chestnykh*." msgstr "" +"La implementación stdlib está basada en el módulo pyblake2_. Fue escrita por " +"*Dmitry Chestnykh* basada en la implementación C escrita por *Samuel Neves*. " +"La documentación fue copiada desde pyblake2_ y escrita por *Dmitry " +"Chestnykh*." #: ../Doc/library/hashlib.rst:692 msgid "The C code was partly rewritten for Python by *Christian Heimes*." msgstr "" +"El código C fue parcialmente reescrito para Python por *Christian Heimes*." #: ../Doc/library/hashlib.rst:694 msgid "" "The following public domain dedication applies for both C hash function " "implementation, extension code, and this documentation:" msgstr "" +"La siguiente dedicación de dominio público aplica tanto para la " +"implementación de la función hash C, el código de extensión y su " +"documentación:" #: ../Doc/library/hashlib.rst:697 msgid "" @@ -731,6 +985,9 @@ msgid "" "and related and neighboring rights to this software to the public domain " "worldwide. This software is distributed without any warranty." msgstr "" +"En la medida en que la ley lo permite, el/los autor/es han dedicado todos " +"los derechos de autor y los derechos relacionados y vecinos de este software " +"al dominio público mundial. Este software se distribuye sin ninguna garantía." #: ../Doc/library/hashlib.rst:701 msgid "" @@ -738,6 +995,9 @@ msgid "" "with this software. If not, see https://creativecommons.org/publicdomain/" "zero/1.0/." msgstr "" +"Deberías haber recibido una copia de la Dedicación CC0 de Dominio Público " +"junto a este software. Si no, consulta https://creativecommons.org/" +"publicdomain/zero/1.0/." #: ../Doc/library/hashlib.rst:705 msgid "" @@ -745,61 +1005,71 @@ msgid "" "changes to the project and the public domain according to the Creative " "Commons Public Domain Dedication 1.0 Universal:" msgstr "" +"Las siguientes personas han ayudado con el desarrollo o contribuyeron con " +"sus cambios al proyecto y el dominio público de acuerdo a Creative Commons " +"Public Domain Dedication 1.0 Universal:" #: ../Doc/library/hashlib.rst:709 msgid "*Alexandr Sokolovskiy*" -msgstr "" +msgstr "*Alexandr Sokolovskiy*" #: ../Doc/library/hashlib.rst:723 msgid "Module :mod:`hmac`" -msgstr "" +msgstr "Módulo :mod:`hmac`" #: ../Doc/library/hashlib.rst:723 msgid "A module to generate message authentication codes using hashes." msgstr "" +"Un módulo para generar mensajes de códigos de autentificación usando hashes." #: ../Doc/library/hashlib.rst:726 msgid "Module :mod:`base64`" -msgstr "" +msgstr "Módulo :mod:`base64`" #: ../Doc/library/hashlib.rst:726 msgid "Another way to encode binary hashes for non-binary environments." -msgstr "" +msgstr "Otra forma de codificar hashes binarios para entornos no binarios." #: ../Doc/library/hashlib.rst:729 msgid "https://blake2.net" -msgstr "" +msgstr "https://blake2.net" #: ../Doc/library/hashlib.rst:729 msgid "Official BLAKE2 website." -msgstr "" +msgstr "Sitio web oficial de BLAKE2." #: ../Doc/library/hashlib.rst:732 msgid "" "https://csrc.nist.gov/csrc/media/publications/fips/180/2/archive/2002-08-01/" "documents/fips180-2.pdf" msgstr "" +"https://csrc.nist.gov/csrc/media/publications/fips/180/2/archive/2002-08-01/" +"documents/fips180-2.pdf" #: ../Doc/library/hashlib.rst:732 msgid "The FIPS 180-2 publication on Secure Hash Algorithms." -msgstr "" +msgstr "La publicación FIPS 180-2 sobre Algoritmos de Cifrado Seguros." #: ../Doc/library/hashlib.rst:736 msgid "" "https://en.wikipedia.org/wiki/" "Cryptographic_hash_function#Cryptographic_hash_algorithms" msgstr "" +"https://en.wikipedia.org/wiki/" +"Cryptographic_hash_function#Cryptographic_hash_algorithms" #: ../Doc/library/hashlib.rst:735 msgid "" "Wikipedia article with information on which algorithms have known issues and " "what that means regarding their use." msgstr "" +"Artículo de Wikipedia con información sobre cuáles algoritmos tienen errores " +"conocidos y lo que eso significa con respecto a su uso." #: ../Doc/library/hashlib.rst:738 msgid "https://www.ietf.org/rfc/rfc2898.txt" -msgstr "" +msgstr "https://www.ietf.org/rfc/rfc2898.txt" #: ../Doc/library/hashlib.rst:739 msgid "PKCS #5: Password-Based Cryptography Specification Version 2.0" -msgstr "" +msgstr "PKCS #5: Password-Based Cryptography Specification Version 2.0" From 8ccdd81e1e845419ca88f6e5da66893be7c0fdf6 Mon Sep 17 00:00:00 2001 From: Maria Jose Molina Contreras <32220621+mjmolina@users.noreply.github.com> Date: Sat, 31 Oct 2020 20:57:41 +0100 Subject: [PATCH 16/18] arreglando comillas (#1128) --- howto/regex.po | 6 +++--- library/email.headerregistry.po | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/howto/regex.po b/howto/regex.po index f99f626fce..942851ac1a 100644 --- a/howto/regex.po +++ b/howto/regex.po @@ -1303,8 +1303,8 @@ msgstr "" "lento, pero también permite que ``\\w+`` coincida con las palabras en " "francés como era de esperar. Se desaconseja el uso de esta flag en Python 3 " "ya que el mecanismo de configuración regional es muy poco confiable, solo " -"maneja una “cultura” a la vez y solo funciona con configuraciones regionales " -"de 8 bits. La coincidencia Unicode ya está habilitada de forma " +"maneja una \"cultura\" a la vez y solo funciona con configuraciones " +"regionales de 8 bits. La coincidencia Unicode ya está habilitada de forma " "predeterminada en Python 3 para patrones Unicode (str), y puede manejar " "diferentes configuraciones regionales/idiomas." @@ -2554,7 +2554,7 @@ msgstr "" "de la cadena de caracteres. Sin embargo, aún queda más en la RE y el ``>`` " "no puede coincidir al final de la cadena de caracteres, por lo que el motor " "de la expresión regular tiene que retroceder carácter por carácter hasta que " -"encuentre una coincidencia para el “. La coincidencia final se extiende " +"encuentre una coincidencia para el ``>``. La coincidencia final se extiende " "desde el `'<'`` en ``''`` al ``'>'`` en ``''``, que no es lo " "que queremos." diff --git a/library/email.headerregistry.po b/library/email.headerregistry.po index 20fb364a26..420952ddd3 100644 --- a/library/email.headerregistry.po +++ b/library/email.headerregistry.po @@ -281,7 +281,7 @@ msgstr "" ":rfc:`5322` especifica un formato muy específico para las fechas dentro de " "los encabezados de correo electrónico. El analizador ``DateHeader`` reconoce " "ese formato de fecha, además de reconocer una serie de formas variantes que " -"a veces se encuentran “en la naturaleza” (*“in the wild”*)." +"a veces se encuentran \"en la naturaleza\" (*\"in the wild\"*)." #: ../Doc/library/email.headerregistry.rst:146 #: ../Doc/library/email.headerregistry.rst:188 @@ -381,7 +381,7 @@ msgstr "" "individuales del valor del encabezado. Si el valor del encabezado contiene " "algún grupo, las direcciones individuales del grupo se incluyen en la lista " "en el punto donde el grupo aparece en el valor (es decir, la lista de " -"direcciones se “aplana” (*“flattened”*) en una lista unidimensional)." +"direcciones se \"aplana\" (*\"flattened\"*) en una lista unidimensional)." #: ../Doc/library/email.headerregistry.rst:207 msgid "" From 5cb540fb9c072f7b5a442a6e22cd95c0181c455d Mon Sep 17 00:00:00 2001 From: Maria Jose Molina Contreras <32220621+mjmolina@users.noreply.github.com> Date: Sat, 31 Oct 2020 21:50:31 +0100 Subject: [PATCH 17/18] fixing spanish quotes (#1129) --- library/argparse.po | 6 +++--- library/enum.po | 4 ++-- library/itertools.po | 6 +++--- library/multiprocessing.po | 2 +- library/ossaudiodev.po | 17 +++++++++-------- library/profile.po | 4 ++-- 6 files changed, 20 insertions(+), 19 deletions(-) diff --git a/library/argparse.po b/library/argparse.po index 7663463d69..08feaa3d7d 100644 --- a/library/argparse.po +++ b/library/argparse.po @@ -1405,7 +1405,7 @@ msgid "" msgstr "" "Cuando :class:`ArgumentParser` genera mensajes de ayuda, necesita alguna " "forma de referirse a cada argumento esperado. Por defecto, los objetos " -"*ArgumentParser* utilizan el valor dest_ como \"nombre” de cada objeto. Por " +"*ArgumentParser* utilizan el valor dest_ como \"nombre\" de cada objeto. Por " "defecto, para las acciones de argumento posicional, el valor dest_ se " "utiliza directamente, y para las acciones de argumento opcional, el valor " "dest_ está en mayúsculas. Así, un único argumento posicional con " @@ -2034,8 +2034,8 @@ msgid "" "`add_argument_group` method::" msgstr "" "Por defecto, :class:`ArgumentParser` agrupa los argumentos de la línea de " -"comandos en “argumentos de posición” y “argumentos opcionales” al mostrar " -"los mensajes de ayuda. Cuando hay una mejor agrupación conceptual de " +"comandos en \"argumentos de posición\" y \"argumentos opcionales\" al " +"mostrar los mensajes de ayuda. Cuando hay una mejor agrupación conceptual de " "argumentos que esta predeterminada, se pueden crear grupos apropiados usando " "el método :meth:`add_argument_group`::" diff --git a/library/enum.po b/library/enum.po index 7e263a54eb..608b215fea 100644 --- a/library/enum.po +++ b/library/enum.po @@ -791,8 +791,8 @@ msgid "" "Giving a name to the \"no flags set\" condition does not change its boolean " "value::" msgstr "" -"Dar un nombre a la condición “sin banderas establecidas” no cambia su valor " -"booleano::" +"Dar un nombre a la condición \"sin banderas establecidas\" no cambia su " +"valor booleano::" #: ../Doc/library/enum.rst:704 msgid "" diff --git a/library/itertools.po b/library/itertools.po index daaa7b7e00..94e4ab21fc 100644 --- a/library/itertools.po +++ b/library/itertools.po @@ -46,8 +46,8 @@ msgid "" msgstr "" "El módulo estandariza un conjunto base de herramientas rápidas y eficientes " "en memoria, útiles por sí mismas o en combinación con otras. Juntas, forman " -"un “álbegra de iteradores”, haciendo posible la construcción de herramientas " -"especializadas, sucintas y eficientes, en Python puro." +"un \"álgebra de iteradores\", haciendo posible la construcción de " +"herramientas especializadas, sucintas y eficientes, en Python puro." #: ../Doc/library/itertools.rst:25 msgid "" @@ -1008,5 +1008,5 @@ msgstr "" "procesar los elementos uno a uno, y no cargando el iterable entero en " "memoria. El volumen de código se mantiene bajo al enlazar las herramientas " "en estilo funcional, eliminando variables temporales. La alta velocidad se " -"retiene al preferir piezas “vectorizadas” sobre el uso de bucles `for` y :" +"retiene al preferir piezas \"vectorizadas\" sobre el uso de bucles `for` y :" "term:`generator`\\s que puedan incurrir en costos extra." diff --git a/library/multiprocessing.po b/library/multiprocessing.po index c7d42ade61..7d47cbfcdb 100644 --- a/library/multiprocessing.po +++ b/library/multiprocessing.po @@ -236,7 +236,7 @@ msgstr "" "programa. Cuando todos los procesos han salido, el rastreador de recursos " "desvincula cualquier objeto rastreado restante. Por lo general, no debería " "haber ninguno, pero si un proceso fue eliminado por una señal, puede haber " -"algunos recursos “filtrados”. (Ni los semáforos filtrados ni los segmentos " +"algunos recursos \"filtrados\". (Ni los semáforos filtrados ni los segmentos " "de memoria compartida se desvincularán automáticamente hasta el próximo " "reinicio. Esto es problemático para ambos objetos porque el sistema solo " "permite un número limitado de semáforos con nombre, y los segmentos de " diff --git a/library/ossaudiodev.po b/library/ossaudiodev.po index e395ce021c..37700910d6 100644 --- a/library/ossaudiodev.po +++ b/library/ossaudiodev.po @@ -426,7 +426,7 @@ msgstr "" "`getfmts` para obtener una lista. Retorna el formato de audio en el que se " "configuró el dispositivo, que puede no ser el formato solicitado. También se " "puede utilizar para retornar el formato de audio actual. Haga esto pasando " -"un “formato de audio” de :const:`AFMT_QUERY`." +"un \"formato de audio\" de :const:`AFMT_QUERY`." #: ../Doc/library/ossaudiodev.rst:241 msgid "" @@ -600,7 +600,8 @@ msgstr "Cadena que contiene el nombre del archivo del dispositivo." #: ../Doc/library/ossaudiodev.rst:347 msgid "The I/O mode for the file, either ``\"r\"``, ``\"rw\"``, or ``\"w\"``." -msgstr "El modo de E/S para el archivo, ya sea ``”r”``, ``”rw”``, o ``”w”``." +msgstr "" +"El modo de E/S para el archivo, ya sea ``\"r\"``, ``\"rw\"``, o ``\"w\"``." #: ../Doc/library/ossaudiodev.rst:353 msgid "Mixer Device Objects" @@ -643,12 +644,12 @@ msgid "" "mixer object supports a PCM mixer, use the following Python code::" msgstr "" "Este método retorna una máscara de bits que especifica los controles del " -"mezclador disponibles (“Control” es un “canal” mezclable específico, como :" -"const:`SOUND_MIXER_PCM` o :const:`SOUND_MIXER_SYNTH`). Esta máscara de bits " -"indica un subconjunto de todos los controles de mezclador disponibles --- " -"las constantes :const:`SOUND_MIXER_\\*` definidas a nivel de módulo. Para " -"determinar si, por ejemplo, el objeto mezclador actual admite un mezclador " -"PCM, utilice el siguiente código Python::" +"mezclador disponibles (\"Control\" es un \"canal\" mezclable específico, " +"como :const:`SOUND_MIXER_PCM` o :const:`SOUND_MIXER_SYNTH`). Esta máscara de " +"bits indica un subconjunto de todos los controles de mezclador disponibles " +"--- las constantes :const:`SOUND_MIXER_\\*` definidas a nivel de módulo. " +"Para determinar si, por ejemplo, el objeto mezclador actual admite un " +"mezclador PCM, utilice el siguiente código Python::" #: ../Doc/library/ossaudiodev.rst:389 msgid "" diff --git a/library/profile.po b/library/profile.po index bd5d6f4d92..0fffeacaa3 100644 --- a/library/profile.po +++ b/library/profile.po @@ -556,8 +556,8 @@ msgid "" "*filename* (or list of filenames) or from a :class:`Profile` instance. " "Output will be printed to the stream specified by *stream*." msgstr "" -"Este constructor de clase crea una instancia de un \\“objeto de estadísticas" -"\\” a partir de un *filename* (o una lista de nombres de archivo) o de una " +"Este constructor de clase crea una instancia de un \"objeto de estadísticas" +"\" a partir de un *filename* (o una lista de nombres de archivo) o de una " "instancia :class:`Profile`. La salida se imprimirá en la secuencia " "especificada por *stream*." From bc29127bdc07997279868a9f81b669d5eb62b509 Mon Sep 17 00:00:00 2001 From: "Hector F. Jimenez" Date: Sat, 31 Oct 2020 19:10:16 -0500 Subject: [PATCH 18/18] Powrap applied --- library/posix.po | 159 ++++++++++++++++++++++------------------------- 1 file changed, 73 insertions(+), 86 deletions(-) diff --git a/library/posix.po b/library/posix.po index 8b715026ee..8165e7034e 100644 --- a/library/posix.po +++ b/library/posix.po @@ -11,7 +11,7 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-05-05 12:54+0200\n" -"PO-Revision-Date: 2020-10-25 12:17-0500\n" +"PO-Revision-Date: 2020-10-31 19:07-0500\n" "Language-Team: python-doc-es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -28,45 +28,40 @@ msgstr ":mod:`posix` --- Las llamadas más comunes al sistema POSIX" #: ../Doc/library/posix.rst:10 msgid "" -"This module provides access to operating system functionality that is " -"standardized by the C Standard and the POSIX standard (a thinly disguised " -"Unix interface)." +"This module provides access to operating system functionality that is standardized by the " +"C Standard and the POSIX standard (a thinly disguised Unix interface)." msgstr "" -"Este módulo provee acceso a funcionalidades del sistema operativo que están " -"estandarizados por el estándar C y el estándar POSIX (Una interfaz Unix " -"finamente implementada)." +"Este módulo provee acceso a funcionalidades del sistema operativo que están estandarizados " +"por el estándar C y el estándar POSIX (Una interfaz Unix finamente implementada)." #: ../Doc/library/posix.rst:16 msgid "" -"**Do not import this module directly.** Instead, import the module :mod:" -"`os`, which provides a *portable* version of this interface. On Unix, the :" -"mod:`os` module provides a superset of the :mod:`posix` interface. On non-" -"Unix operating systems the :mod:`posix` module is not available, but a " -"subset is always available through the :mod:`os` interface. Once :mod:`os` " -"is imported, there is *no* performance penalty in using it instead of :mod:" -"`posix`. In addition, :mod:`os` provides some additional functionality, " -"such as automatically calling :func:`~os.putenv` when an entry in ``os." -"environ`` is changed." +"**Do not import this module directly.** Instead, import the module :mod:`os`, which " +"provides a *portable* version of this interface. On Unix, the :mod:`os` module provides a " +"superset of the :mod:`posix` interface. On non-Unix operating systems the :mod:`posix` " +"module is not available, but a subset is always available through the :mod:`os` " +"interface. Once :mod:`os` is imported, there is *no* performance penalty in using it " +"instead of :mod:`posix`. In addition, :mod:`os` provides some additional functionality, " +"such as automatically calling :func:`~os.putenv` when an entry in ``os.environ`` is " +"changed." msgstr "" -"**No importe este módulo directamente.** En su lugar importe el módulo :mod:" -"`os`, el cual provee una versión *portable* de esta interfaz. En sistemas " -"operativos Unix, el módulo :mod:`os` provee un conjunto de la interfaz :mod:" -"`posix`. En sistemas operativos no Unix el módulo :mod:`posix` no está " -"disponible, pero un subconjunto esta siempre disponible a través de la " -"interfaz del módulo :mod:`os`. Una vez importado el módulo :mod:`os`, *No* " -"hay pérdida de desempeño en vez de utilizar el módulo :mod:`posix`. Además, " -"el módulo :mod:`os` proporciona algunas funcionalidades adicionales, tales " -"como el llamado automático de :func:`~os.putenv` cuando una entrada en``os." -"environ`` es modificada." +"**No importe este módulo directamente.** En su lugar importe el módulo :mod:`os`, el cual " +"provee una versión *portable* de esta interfaz. En sistemas operativos Unix, el módulo :" +"mod:`os` provee un conjunto de la interfaz :mod:`posix`. En sistemas operativos no Unix " +"el módulo :mod:`posix` no está disponible, pero un subconjunto está siempre disponible a " +"través de la interfaz del módulo :mod:`os`. Una vez importado el módulo :mod:`os`, *No* " +"hay pérdida de desempeño en vez de utilizar el módulo :mod:`posix`. Además, el módulo :" +"mod:`os` proporciona algunas funcionalidades adicionales, tales como el llamado automático " +"de :func:`~os.putenv` cuando una entrada en``os.environ`` es modificada." #: ../Doc/library/posix.rst:25 msgid "" -"Errors are reported as exceptions; the usual exceptions are given for type " -"errors, while errors reported by the system calls raise :exc:`OSError`." +"Errors are reported as exceptions; the usual exceptions are given for type errors, while " +"errors reported by the system calls raise :exc:`OSError`." msgstr "" -"Los errores son notificados como excepciones; las excepciones comunes son " -"proporcionadas por errores de tipo, mientras que los errores notificados " -"por las llamadas al sistema generan :exc:`OSError`." +"Los errores son notificados como excepciones; las excepciones comunes son proporcionadas " +"por errores de tipo, mientras que los errores notificados por las llamadas al sistema " +"generan :exc:`OSError`." #: ../Doc/library/posix.rst:32 msgid "Large File Support" @@ -74,34 +69,31 @@ msgstr "Soporte de archivos grandes" #: ../Doc/library/posix.rst:40 msgid "" -"Several operating systems (including AIX, HP-UX, Irix and Solaris) provide " -"support for files that are larger than 2 GiB from a C programming model " -"where :c:type:`int` and :c:type:`long` are 32-bit values. This is typically " -"accomplished by defining the relevant size and offset types as 64-bit " -"values. Such files are sometimes referred to as :dfn:`large files`." +"Several operating systems (including AIX, HP-UX, Irix and Solaris) provide support for " +"files that are larger than 2 GiB from a C programming model where :c:type:`int` and :c:" +"type:`long` are 32-bit values. This is typically accomplished by defining the relevant " +"size and offset types as 64-bit values. Such files are sometimes referred to as :dfn:" +"`large files`." msgstr "" -"Varios sistemas operativos(incluyendo AIX, HP-UX, Irix y Solaris) " -"proporcionan soporte para archivos superiores a 2GiB en un modelo de " -"programación C donde :c:type:`int` y :c:type:`long` son valores de 32-bits. " -"Esto se logra normalmente definiendo el tamaño relevante y los tipos de " -"desplazamientos como valores de 64bits. Tales archivos se conocen a veces " -"como :dfn:`large files`." +"Varios sistemas operativos(incluyendo AIX, HP-UX, Irix y Solaris) proporcionan soporte " +"para archivos superiores a 2GiB en un modelo de programación C donde :c:type:`int` y :c:" +"type:`long` son valores de 32-bits. Esto se logra normalmente definiendo el tamaño " +"relevante y los tipos de desplazamientos como valores de 64bits. Tales archivos se conocen " +"a veces como :dfn:`large files`." #: ../Doc/library/posix.rst:46 msgid "" -"Large file support is enabled in Python when the size of an :c:type:`off_t` " -"is larger than a :c:type:`long` and the :c:type:`long long` is at least as " -"large as an :c:type:`off_t`. It may be necessary to configure and compile " -"Python with certain compiler flags to enable this mode. For example, it is " -"enabled by default with recent versions of Irix, but with Solaris 2.6 and " -"2.7 you need to do something like::" +"Large file support is enabled in Python when the size of an :c:type:`off_t` is larger than " +"a :c:type:`long` and the :c:type:`long long` is at least as large as an :c:type:`off_t`. " +"It may be necessary to configure and compile Python with certain compiler flags to enable " +"this mode. For example, it is enabled by default with recent versions of Irix, but with " +"Solaris 2.6 and 2.7 you need to do something like::" msgstr "" -"La compatibilidad con archivos grandes está habilitada en Python cuando el " -"tamaño de un :c:type:`off_t` es mayor que un :c:type:`long` y un :c:type:" -"`long long` es al menos tan grande como un :c:type:`off_t`. Puede ser " -"necesario configurar y compilar Python con ciertos flags del compilador para " -"habilitar este modo. Por ejemplo, está habilitado por defecto con las " -"versiones de Irix, pero con Solaris 2.6 y 2.7 debe hacer algo como::" +"La compatibilidad con archivos grandes está habilitada en Python cuando el tamaño de un :c:" +"type:`off_t` es mayor que un :c:type:`long` y un :c:type:`long long` es al menos tan " +"grande como un :c:type:`off_t`. Puede ser necesario configurar y compilar Python con " +"ciertos flags del compilador para habilitar este modo. Por ejemplo, está habilitado por " +"defecto con las versiones de Irix, pero con Solaris 2.6 y 2.7 debe hacer algo como::" #: ../Doc/library/posix.rst:56 msgid "On large-file-capable Linux systems, this might work::" @@ -113,38 +105,35 @@ msgstr "Contenidos notables del módulo" #: ../Doc/library/posix.rst:67 msgid "" -"In addition to many functions described in the :mod:`os` module " -"documentation, :mod:`posix` defines the following data item:" +"In addition to many functions described in the :mod:`os` module documentation, :mod:" +"`posix` defines the following data item:" msgstr "" -"Además de muchas funciones descritas en la documentación del módulo :mod:" -"`os`, :mod:`posix` define los siguientes elementos de datos:" +"Además de muchas funciones descritas en la documentación del módulo :mod:`os`, :mod:" +"`posix` define los siguientes elementos de datos:" #: ../Doc/library/posix.rst:72 msgid "" -"A dictionary representing the string environment at the time the interpreter " -"was started. Keys and values are bytes on Unix and str on Windows. For " -"example, ``environ[b'HOME']`` (``environ['HOME']`` on Windows) is the " -"pathname of your home directory, equivalent to ``getenv(\"HOME\")`` in C." +"A dictionary representing the string environment at the time the interpreter was started. " +"Keys and values are bytes on Unix and str on Windows. For example, ``environ[b'HOME']`` " +"(``environ['HOME']`` on Windows) is the pathname of your home directory, equivalent to " +"``getenv(\"HOME\")`` in C." msgstr "" "Un diccionario que representa el entorno por una cadena de caracteres en el momento en que " -"se inició el intérprete. Las llaves y valores son bytes en Unix y str en " -"Windows. Por ejemplo, `environ[b'HOME']`` (``environ['HOME']`` en Windows) " -"es el nombre de la ruta absoluta de acceso de su directorio principal, " -"equivalente a ``getenv(\"HOME\")`` en C." +"se inició el intérprete. Las llaves y valores son bytes en Unix y str en Windows. Por " +"ejemplo, `environ[b'HOME']`` (``environ['HOME']`` en Windows) es el nombre de la ruta " +"absoluta de acceso de su directorio principal, equivalente a ``getenv(\"HOME\")`` en C." #: ../Doc/library/posix.rst:77 msgid "" -"Modifying this dictionary does not affect the string environment passed on " -"by :func:`~os.execv`, :func:`~os.popen` or :func:`~os.system`; if you need " -"to change the environment, pass ``environ`` to :func:`~os.execve` or add " -"variable assignments and export statements to the command string for :func:" -"`~os.system` or :func:`~os.popen`." +"Modifying this dictionary does not affect the string environment passed on by :func:`~os." +"execv`, :func:`~os.popen` or :func:`~os.system`; if you need to change the environment, " +"pass ``environ`` to :func:`~os.execve` or add variable assignments and export statements " +"to the command string for :func:`~os.system` or :func:`~os.popen`." msgstr "" -"La modificación de este diccionario no afecta las variables de entorno en :" -"func:`~os.execv`, :func:`~os.popen` o :func:`~os.system`; si necesitas " -"cambiar el entorno, pase ``environ`` a la función :func:`~os.execve` o " -"agregue una variable de asignación y exporte las sentencias y cadenas de caracteres para :" -"func:`~os.system` ó :func:`~os.popen`." +"La modificación de este diccionario no afecta las variables de entorno en :func:`~os." +"execv`, :func:`~os.popen` o :func:`~os.system`; si necesitas cambiar el entorno, pase " +"``environ`` a la función :func:`~os.execve` o agregue una variable de asignación y exporte " +"las sentencias y cadenas de caracteres para :func:`~os.system` ó :func:`~os.popen`." #: ../Doc/library/posix.rst:83 msgid "On Unix, keys and values are bytes." @@ -152,14 +141,12 @@ msgstr "En Unix, las llaves y valores son bytes." #: ../Doc/library/posix.rst:88 msgid "" -"The :mod:`os` module provides an alternate implementation of ``environ`` " -"which updates the environment on modification. Note also that updating :data:" -"`os.environ` will render this dictionary obsolete. Use of the :mod:`os` " -"module version of this is recommended over direct access to the :mod:`posix` " -"module." +"The :mod:`os` module provides an alternate implementation of ``environ`` which updates the " +"environment on modification. Note also that updating :data:`os.environ` will render this " +"dictionary obsolete. Use of the :mod:`os` module version of this is recommended over " +"direct access to the :mod:`posix` module." msgstr "" -"El módulo :mod:`os` proporciona una implementación de ``environ`` que " -"actualiza el entorno en cada modificación. Nótese que también actualizar :" -"data:`os.environ` hará que este diccionario sea obsoleto. El Use de la " -"versión del módulo :mod:`os` es recomendado en vez del acceso directo al " -"módulo :mod:`posix`." +"El módulo :mod:`os` proporciona una implementación de ``environ`` que actualiza el entorno " +"en cada modificación. Nótese que también actualizar :data:`os.environ` hará que este " +"diccionario sea obsoleto. El Use de la versión del módulo :mod:`os` es recomendado en vez " +"del acceso directo al módulo :mod:`posix`."