diff --git a/dictionaries/whatsnew_2.5.txt b/dictionaries/whatsnew_2.5.txt new file mode 100644 index 0000000000..5034b1dcc2 --- /dev/null +++ b/dictionaries/whatsnew_2.5.txt @@ -0,0 +1,75 @@ +Alan +Antti +Bell +Biondi +Bjorn +Blais +Bland +Broytmann +Chang +Coroutines +Coverity +Dooms +Dörwald +Ehresman +Evan +Games +Grosse +Grégoire +Harris +Holger +Hotshot +Hye +Iain +Immisch +Installer +Johnson +Jones +Kaiser +Kiendl +Krekel +Kurt +Louko +Lowe +Lynn +Netlink +Oleg +Optik +Pedroni +Pettenò +Philippe +Prevent +Pryor +Ralf +Reikiavik +Rigo +Robert +Rovner +Samuele +Schroeder +Shik +Spoerri +Sugalski +Summer +Tillenius +Walter +Wd +Weikart +asignadoras +autodetectada +contextlib +coroutines +direccionar +elinks +hook +maildir +netlink +obmalloc +pybench +reelaborado +reutilizándolo +sprint +sprints +ssize +tripleta +wsgiref diff --git a/whatsnew/2.5.po b/whatsnew/2.5.po index bdfbbb0193..fe126d76bc 100644 --- a/whatsnew/2.5.po +++ b/whatsnew/2.5.po @@ -6,31 +6,33 @@ # 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: 2021-10-03 10:57-0300\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: Claudia Millan \n" +"Language: es\n" +"X-Generator: Poedit 2.4.2\n" #: ../Doc/whatsnew/2.5.rst:3 msgid "What's New in Python 2.5" -msgstr "" +msgstr "Novedades de Python 2.5" #: ../Doc/whatsnew/2.5.rst msgid "Author" -msgstr "" +msgstr "Autor" #: ../Doc/whatsnew/2.5.rst:5 msgid "A.M. Kuchling" -msgstr "" +msgstr "A.M. Kuchling" #: ../Doc/whatsnew/2.5.rst:12 msgid "" @@ -38,6 +40,9 @@ msgid "" "Python 2.5 is scheduled for August 2006; :pep:`356` describes the planned " "release schedule." msgstr "" +"Este artículo explica las nuevas características de Python 2.5. La versión " +"final de Python 2.5 está prevista para agosto de 2006; :pep:`356` describe " +"el calendario de publicación previsto." #: ../Doc/whatsnew/2.5.rst:16 msgid "" @@ -48,6 +53,12 @@ msgid "" "SQLite database module (:mod:`sqlite`), and the :mod:`ctypes` module for " "calling C functions." msgstr "" +"Los cambios en Python 2.5 son una interesante mezcla de mejoras en el " +"lenguaje y en las bibliotecas. Las mejoras de la biblioteca serán más " +"importantes para la comunidad de usuarios de Python, creo, porque se han " +"añadido varios paquetes muy útiles. Los nuevos módulos incluyen ElementTree " +"para el procesamiento de XML (:mod:`xml.etree`), el módulo de base de datos " +"SQLite (:mod:`sqlite`), y el módulo :mod:`ctypes` para llamar a funciones C." #: ../Doc/whatsnew/2.5.rst:23 msgid "" @@ -63,6 +74,18 @@ msgid "" "to one specific language feature or another; none of them are broad " "modifications to Python's semantics." msgstr "" +"Los cambios en el lenguaje son de mediana importancia. Se han añadido " +"algunas características nuevas y agradables, pero la mayoría de ellas no son " +"características que vaya a utilizar todos los días. Las expresiones " +"condicionales fueron finalmente añadidas al lenguaje usando una nueva " +"sintaxis; ver sección :ref:`pep-308`. La nueva sentencia ':keyword:`with`' " +"facilitará la escritura de código de limpieza (sección :ref:`pep-343`). " +"Ahora se pueden pasar valores a los generadores (sección :ref:`pep-342`). " +"Las importaciones son ahora visibles como absolutas o relativas (sección :" +"ref:`pep-328`). Se han mejorado algunos casos de manejo de excepciones " +"(sección :ref:`pep-341`). Todas estas mejoras merecen la pena, pero son " +"mejoras de una u otra característica específica del lenguaje; ninguna de " +"ellas es una modificación amplia de la semántica de Python." #: ../Doc/whatsnew/2.5.rst:34 msgid "" @@ -71,6 +94,11 @@ msgid "" "change logs finds there were 353 patches applied and 458 bugs fixed between " "Python 2.4 and 2.5. (Both figures are likely to be underestimates.)" msgstr "" +"Además de las adiciones al lenguaje y a la biblioteca, se han realizado " +"otras mejoras y correcciones de errores en todo el árbol de código fuente. " +"Una búsqueda en los registros de cambios del SVN revela que se aplicaron 353 " +"parches y se corrigieron 458 errores entre Python 2.4 y 2.5. (Es probable " +"que ambas cifras estén subestimadas)" #: ../Doc/whatsnew/2.5.rst:39 msgid "" @@ -81,16 +109,25 @@ msgid "" "implementation and design rationale, refer to the PEP for a particular new " "feature." msgstr "" +"Este artículo no pretende ser una especificación completa de las nuevas " +"características; en su lugar, los cambios se introducen brevemente " +"utilizando ejemplos útiles. Para obtener todos los detalles, siempre debes " +"consultar la documentación de Python 2.5 en https://docs.python.org. Si " +"quieres entender la implementación completa y los fundamentos del diseño, " +"consulta el PEP de una nueva característica en particular." #: ../Doc/whatsnew/2.5.rst:45 msgid "" "Comments, suggestions, and error reports for this document are welcome; " "please e-mail them to the author or open a bug in the Python bug tracker." msgstr "" +"Son bienvenidos los comentarios, las sugerencias y los informes de errores " +"para este documento; por favor, envíelos por correo electrónico al autor o " +"abra un error en el rastreador de errores de Python." #: ../Doc/whatsnew/2.5.rst:54 msgid "PEP 308: Conditional Expressions" -msgstr "" +msgstr "PEP 308: Expresiones condicionales" #: ../Doc/whatsnew/2.5.rst:56 msgid "" @@ -100,6 +137,11 @@ msgid "" "you write a single assignment statement that has the same effect as the " "following::" msgstr "" +"Durante mucho tiempo, la gente ha solicitado una forma de escribir " +"expresiones condicionales, que son expresiones que devuelven el valor A o el " +"valor B dependiendo de si un valor booleano es verdadero o falso. Una " +"expresión condicional le permite escribir una única sentencia de asignación " +"que tiene el mismo efecto que la siguiente::" #: ../Doc/whatsnew/2.5.rst:66 msgid "" @@ -109,10 +151,16 @@ msgid "" "was preferred by a clear majority. Candidates included C's ``cond ? true_v : " "false_v``, ``if cond then true_v else false_v``, and 16 other variations." msgstr "" +"Ha habido interminables y tediosas discusiones sobre la sintaxis tanto en " +"python-dev como en comp.lang.python. Incluso se llevó a cabo una votación " +"en la que se descubrió que la mayoría de los votantes querían expresiones " +"condicionales de alguna forma, pero no había ninguna sintaxis que fuera " +"preferida por una clara mayoría. Los candidatos incluían ``cond ? true_v : " +"false_v``, ``if cond then true_v else false_v``, y otras 16 variaciones." #: ../Doc/whatsnew/2.5.rst:72 msgid "Guido van Rossum eventually chose a surprising syntax::" -msgstr "" +msgstr "Guido van Rossum eligió finalmente una sintaxis sorprendente::" #: ../Doc/whatsnew/2.5.rst:76 msgid "" @@ -122,6 +170,11 @@ msgid "" "condition was true. Similarly, the *false_value* expression is only " "evaluated when the condition is false." msgstr "" +"La evaluación sigue siendo perezosa como en las expresiones booleanas " +"existentes, por lo que el orden de evaluación salta un poco. La expresión " +"*condición* del medio se evalúa primero, y la expresión *valor_verdadero* se " +"evalúa sólo si la condición es verdadera. Del mismo modo, la expresión " +"*valor_falso* sólo se evalúa cuando la condición es falsa." #: ../Doc/whatsnew/2.5.rst:82 msgid "" @@ -134,6 +187,14 @@ msgid "" "when the condition isn't met. The conditional syntax makes this pattern a " "bit more obvious::" msgstr "" +"Esta sintaxis puede parecer extraña y retrógrada; ¿por qué la condición va " +"en el *medio* de la expresión, y no en la parte delantera como en ``c ? x : " +"y`` de C? La decisión se comprobó aplicando la nueva sintaxis a los módulos " +"de la biblioteca estándar y viendo cómo se leía el código resultante. En " +"muchos casos en los que se utiliza una expresión condicional, un valor " +"parece ser el \"caso común\" y otro valor es un \"caso excepcional\", " +"utilizado sólo en las raras ocasiones en las que no se cumple la condición. " +"La sintaxis condicional hace que este patrón sea un poco más obvio::" #: ../Doc/whatsnew/2.5.rst:92 msgid "" @@ -142,6 +203,10 @@ msgid "" "an empty string is returned.\" I doubt I will use conditional expressions " "very often where there isn't a clear common and uncommon case." msgstr "" +"Leo la afirmación anterior en el sentido de que \"aquí se asigna a " +"*contents* un valor de ``doc+'\\n'``; a veces *doc* está vacío, en cuyo caso " +"especial se devuelve una cadena vacía\" Dudo que use expresiones " +"condicionales muy a menudo donde no hay un caso común y no común claro." #: ../Doc/whatsnew/2.5.rst:97 msgid "" @@ -150,6 +215,11 @@ msgid "" "require parentheses in the Python language's grammar, but as a matter of " "style I think you should always use them. Consider these two statements::" msgstr "" +"Hubo alguna discusión sobre si el lenguaje debería requerir rodear las " +"expresiones condicionales con paréntesis. Se tomó la decisión de *no* " +"requerir paréntesis en la gramática del lenguaje Python, pero como una " +"cuestión de estilo creo que siempre deberías usarlos. Considere estas dos " +"declaraciones::" #: ../Doc/whatsnew/2.5.rst:108 msgid "" @@ -159,6 +229,11 @@ msgid "" "better, in my opinion, because it makes it clear that the assignment is " "always performed and the choice is being made between two values." msgstr "" +"En la primera versión, creo que el ojo de un lector podría agrupar la " +"sentencia en 'nivel = 1', 'si registro', 'si no 0', y pensar que la " +"condición decide si se realiza la asignación a *nivel*. La segunda versión " +"se lee mejor, en mi opinión, porque deja claro que la asignación se realiza " +"siempre y que se está eligiendo entre dos valores." #: ../Doc/whatsnew/2.5.rst:114 msgid "" @@ -167,26 +242,34 @@ msgid "" "expressions. See :pep:`308` for some examples. If you put parentheses " "around your conditional expressions, you won't run into this case." msgstr "" +"Otra razón para incluir los paréntesis: algunas combinaciones extrañas de " +"comprensiones de listas y lambdas podrían parecer expresiones condicionales " +"incorrectas. Véase :pep:`308` para algunos ejemplos. Si pone paréntesis " +"alrededor de sus expresiones condicionales, no se encontrará con este caso." #: ../Doc/whatsnew/2.5.rst:123 msgid ":pep:`308` - Conditional Expressions" -msgstr "" +msgstr ":pep:`308` - Expresiones condicionales" #: ../Doc/whatsnew/2.5.rst:123 msgid "" "PEP written by Guido van Rossum and Raymond D. Hettinger; implemented by " "Thomas Wouters." msgstr "" +"PEP escrito por Guido van Rossum y Raymond D. Hettinger; implementado por " +"Thomas Wouters." #: ../Doc/whatsnew/2.5.rst:132 msgid "PEP 309: Partial Function Application" -msgstr "" +msgstr "PEP 309: Aplicación parcial de funciones" #: ../Doc/whatsnew/2.5.rst:134 msgid "" "The :mod:`functools` module is intended to contain tools for functional-" "style programming." msgstr "" +"El módulo :mod:`functools` está destinado a contener herramientas para la " +"programación de estilo funcional." #: ../Doc/whatsnew/2.5.rst:137 msgid "" @@ -197,6 +280,12 @@ msgid "" "c)`` that was equivalent to ``f(1, b, c)``. This is called \"partial " "function application\"." msgstr "" +"Una herramienta útil de este módulo es la función :func:`partial`. Para los " +"programas escritos en un estilo funcional, a veces querrá construir " +"variantes de funciones existentes que tengan algunos de los parámetros " +"rellenados. Considere una función Python ``f(a, b, c)``; podría crear una " +"nueva función ``g(b, c)`` que fuera equivalente a ``f(1, b, c)``. Esto se " +"llama \"aplicación parcial de funciones\"." #: ../Doc/whatsnew/2.5.rst:144 msgid "" @@ -204,10 +293,13 @@ msgid "" "kwarg1=value1, kwarg2=value2)``. The resulting object is callable, so you " "can just call it to invoke *function* with the filled-in arguments." msgstr "" +":func:`parcial` toma los argumentos ``(function, arg1, arg2, ... " +"kwarg1=valor1, kwarg2=valor2)``. El objeto resultante es invocable, por lo " +"que puedes llamarlo para invocar la *función* con los argumentos rellenados." #: ../Doc/whatsnew/2.5.rst:148 msgid "Here's a small but realistic example::" -msgstr "" +msgstr "He aquí un pequeño pero realista ejemplo::" #: ../Doc/whatsnew/2.5.rst:160 msgid "" @@ -216,6 +308,11 @@ msgid "" "provided for the menu option is a partially applied version of the :meth:" "`open_item` method, where the first argument has been provided. ::" msgstr "" +"Aquí hay otro ejemplo, de un programa que utiliza PyGTK. Aquí se está " +"construyendo dinámicamente un menú emergente sensible al contexto. El " +"callback proporcionado para la opción de menú es una versión parcialmente " +"aplicada del método :meth:`open_item`, donde se ha proporcionado el primer " +"argumento ::" #: ../Doc/whatsnew/2.5.rst:173 msgid "" @@ -225,6 +322,12 @@ msgid "" "docstring attribute to a wrapper function so that tracebacks inside the " "wrapped function are easier to understand. For example, you might write::" msgstr "" +"Otra función del módulo :mod:`functools` es la función " +"``update_wrapper(wrapper, wrapped)`` que le ayuda a escribir decoradores con " +"un buen comportamiento. :func:`update_wrapper` copia el nombre, el módulo y " +"el atributo docstring a una función wrapper para que las trazas dentro de la " +"función envuelta sean más fáciles de entender. Por ejemplo, puedes " +"escribir::" #: ../Doc/whatsnew/2.5.rst:186 msgid "" @@ -232,20 +335,25 @@ msgid "" "copy the wrapped function's information. An alternate version of the " "previous example would be::" msgstr "" +":func:`wraps` es un decorador que se puede utilizar dentro de sus propios " +"decoradores para copiar la información de la función envuelta. Una versión " +"alternativa del ejemplo anterior sería::" #: ../Doc/whatsnew/2.5.rst:201 msgid ":pep:`309` - Partial Function Application" -msgstr "" +msgstr ":pep:`309` - Aplicación parcial de funciones" #: ../Doc/whatsnew/2.5.rst:201 msgid "" "PEP proposed and written by Peter Harris; implemented by Hye-Shik Chang and " "Nick Coghlan, with adaptations by Raymond Hettinger." msgstr "" +"PEP propuesto y escrito por Peter Harris; implementado por Hye-Shik Chang y " +"Nick Coghlan, con adaptaciones de Raymond Hettinger." #: ../Doc/whatsnew/2.5.rst:210 msgid "PEP 314: Metadata for Python Software Packages v1.1" -msgstr "" +msgstr "PEP 314: Metadatos para paquetes de software Python v1.1" #: ../Doc/whatsnew/2.5.rst:212 msgid "" @@ -255,6 +363,11 @@ msgid "" "command, the dependency information will be recorded in the :file:`PKG-INFO` " "file." msgstr "" +"Se ha añadido a Distutils un sencillo soporte de dependencias. La función :" +"func:`setup` ahora tiene parámetros de palabras clave ``requires``, " +"``provides`` y ``obsoletes``. Cuando se construye una distribución de " +"origen utilizando el comando ``sdist``, la información de las dependencias " +"se registrará en el archivo :file:`PKG-INFO`." #: ../Doc/whatsnew/2.5.rst:217 msgid "" @@ -263,6 +376,10 @@ msgid "" "an entry in the package index, determine the dependencies for a package, and " "download the required packages. ::" msgstr "" +"Otro nuevo parámetro de palabra clave es ``download_url``, que debe " +"establecerse como una URL para el código fuente del paquete. Esto significa " +"que ahora es posible buscar una entrada en el índice de paquetes, determinar " +"las dependencias de un paquete y descargar los paquetes necesarios. ::" #: ../Doc/whatsnew/2.5.rst:231 msgid "" @@ -270,6 +387,9 @@ msgid "" "storing source and binary archives for a package. The new :command:`upload` " "Distutils command will upload a package to the repository." msgstr "" +"Otra nueva mejora en el índice de paquetes de Python en https://pypi.org es " +"el almacenamiento de archivos fuente y binarios de un paquete. El nuevo " +"comando :command:`upload` de Distutils subirá un paquete al repositorio." #: ../Doc/whatsnew/2.5.rst:236 msgid "" @@ -279,25 +399,33 @@ msgid "" "Optionally you can GPG-sign the package by supplying the :option:`!--sign` " "and :option:`!--identity` options." msgstr "" +"Antes de poder subir un paquete, debes ser capaz de construir una " +"distribución usando el comando :command:`sdist` de Distutils. Una vez que " +"funcione, puedes ejecutar ``python setup.py upload`` para añadir tu paquete " +"al archivo PyPI. Opcionalmente puedes firmar el paquete con GPG " +"suministrando las opciones :option:`!--sign` y :option:`!--identity`." #: ../Doc/whatsnew/2.5.rst:242 msgid "" "Package uploading was implemented by Martin von Löwis and Richard Jones." msgstr "" +"La carga de paquetes fue implementada por Martin von Löwis y Richard Jones." #: ../Doc/whatsnew/2.5.rst:248 msgid ":pep:`314` - Metadata for Python Software Packages v1.1" -msgstr "" +msgstr ":pep:`314` - Metadatos para paquetes de software Python v1.1" #: ../Doc/whatsnew/2.5.rst:248 msgid "" "PEP proposed and written by A.M. Kuchling, Richard Jones, and Fred Drake; " "implemented by Richard Jones and Fred Drake." msgstr "" +"PEP propuesto y redactado por A.M. Kuchling, Richard Jones y Fred Drake; " +"aplicado por Richard Jones y Fred Drake." #: ../Doc/whatsnew/2.5.rst:257 msgid "PEP 328: Absolute and Relative Imports" -msgstr "" +msgstr "PEP 328: Importaciones absolutas y relativas" #: ../Doc/whatsnew/2.5.rst:259 msgid "" @@ -306,6 +434,10 @@ msgid "" "``from ... import ...`` statement, making it easier to import many different " "names." msgstr "" +"La parte más sencilla de :pep:`328` se implementó en Python 2.4: los " +"paréntesis podían utilizarse ahora para encerrar los nombres importados de " +"un módulo utilizando la sentencia ``from ... import ...``, facilitando la " +"importación de muchos nombres diferentes." #: ../Doc/whatsnew/2.5.rst:263 msgid "" @@ -314,16 +446,22 @@ msgid "" "plan is to move toward making absolute imports the default in future " "versions of Python." msgstr "" +"La parte más complicada se ha implementado en Python 2.5: la importación de " +"un módulo puede especificarse para utilizar importaciones absolutas o " +"relativas al paquete. El plan es hacer que las importaciones absolutas sean " +"el valor por defecto en futuras versiones de Python." #: ../Doc/whatsnew/2.5.rst:267 msgid "Let's say you have a package directory like this::" -msgstr "" +msgstr "Digamos que tienes un directorio de paquetes como este::" #: ../Doc/whatsnew/2.5.rst:274 msgid "" "This defines a package named :mod:`pkg` containing the :mod:`pkg.main` and :" "mod:`pkg.string` submodules." msgstr "" +"Esto define un paquete llamado :mod:`pkg` que contiene los submódulos :mod:" +"`pkg.main` y :mod:`pkg.string`." #: ../Doc/whatsnew/2.5.rst:277 msgid "" @@ -334,6 +472,12 @@ msgid "" "`pkg.string` module, and that module is bound to the name ``string`` in the :" "mod:`pkg.main` module's namespace." msgstr "" +"Considera el código del módulo :file:`main.py`. ¿Qué ocurre si ejecuta la " +"sentencia ``importar cadena``? En Python 2.4 y anteriores, primero buscará " +"en el directorio del paquete para realizar una importación relativa, " +"encuentra :file:`pkg/string.py`, importa el contenido de ese archivo como el " +"módulo :mod:`pkg.string`, y ese módulo se vincula al nombre ``string`` en el " +"espacio de nombres del módulo :mod:`pkg.main`." #: ../Doc/whatsnew/2.5.rst:284 msgid "" @@ -345,6 +489,14 @@ msgid "" "imports from the standard library, ``import py; py.std.string.join()``, but " "that package isn't available on all Python installations." msgstr "" +"Eso está bien si :mod:`pkg.string` era lo que querías. ¿Pero qué pasa si " +"quieres el módulo estándar de Python :mod:`string`? No hay una forma limpia " +"de ignorar :mod:`pkg.string` y buscar el módulo estándar; generalmente " +"tienes que mirar el contenido de ``sys.modules``, lo cual es ligeramente " +"sucio. El paquete :mod:`py.std` de Holger Krekel proporciona una forma " +"más ordenada de realizar importaciones desde la biblioteca estándar, " +"``import py; py.std.string.join()``, pero ese paquete no está disponible en " +"todas las instalaciones de Python." #: ../Doc/whatsnew/2.5.rst:292 msgid "" @@ -355,6 +507,13 @@ msgid "" "submodules, but you can't protect against having your submodule's name being " "used for a new module added in a future version of Python." msgstr "" +"La lectura de código que depende de importaciones relativas también es menos " +"clara, porque un lector puede confundirse sobre qué módulo, :mod:`cadena` o :" +"mod:`cadena.pkg`, se pretende utilizar. Los usuarios de Python aprendieron " +"pronto a no duplicar los nombres de los módulos de la biblioteca estándar en " +"los nombres de los submódulos de sus paquetes, pero no puedes protegerte de " +"que el nombre de tu submódulo se utilice para un nuevo módulo añadido en una " +"futura versión de Python." #: ../Doc/whatsnew/2.5.rst:299 msgid "" @@ -366,12 +525,23 @@ msgid "" "that users should begin using absolute imports as much as possible, so it's " "preferable to begin writing ``from pkg import string`` in your code." msgstr "" +"En Python 2.5, puedes cambiar el comportamiento de :keyword:`import` a " +"importaciones absolutas usando una directiva ``from __future__ import " +"absolute_import``. Este comportamiento de importación absoluta será el " +"predeterminado en una versión futura (probablemente Python 2.7). Una vez " +"que las importaciones absolutas sean el valor por defecto, ``import string`` " +"siempre encontrará la versión de la biblioteca estándar. Se sugiere que los " +"usuarios comiencen a usar importaciones absolutas tanto como sea posible, " +"así que es preferible comenzar a escribir ``de pkg import string`` en su " +"código." #: ../Doc/whatsnew/2.5.rst:307 msgid "" "Relative imports are still possible by adding a leading period to the " "module name when using the ``from ... import`` form::" msgstr "" +"Las importaciones relativas siguen siendo posibles añadiendo un punto " +"inicial al nombre del módulo cuando se utiliza la forma ``from ... import``::" #: ../Doc/whatsnew/2.5.rst:315 msgid "" @@ -381,33 +551,41 @@ msgid "" "from the parent of the current package. For example, code in the :mod:`A.B." "C` module can do::" msgstr "" +"Esto importa el módulo :mod:`string` relativo al paquete actual, así que en :" +"mod:`pkg.main` esto importará *nombre1* y *nombre2* de :mod:`pkg.string`. " +"Los puntos iniciales adicionales realizan la importación relativa empezando " +"por el padre del paquete actual. Por ejemplo, el código en el módulo :mod:" +"`A.B.C` puede hacer::" #: ../Doc/whatsnew/2.5.rst:324 msgid "" "Leading periods cannot be used with the ``import modname`` form of the " "import statement, only the ``from ... import`` form." msgstr "" +"Los puntos suspensivos no pueden usarse con la forma ``importar nombre de " +"modelo`` de la sentencia import, sólo con la forma ``de ... import``." #: ../Doc/whatsnew/2.5.rst:331 msgid ":pep:`328` - Imports: Multi-Line and Absolute/Relative" -msgstr "" +msgstr ":pep:`328` - Importaciones: Multilínea y Absoluto/Relativo" #: ../Doc/whatsnew/2.5.rst:331 msgid "PEP written by Aahz; implemented by Thomas Wouters." -msgstr "" +msgstr "PEP escrito por Aahz; implementado por Thomas Wouters." #: ../Doc/whatsnew/2.5.rst:333 msgid "https://pylib.readthedocs.io/" -msgstr "" +msgstr "https://pylib.readthedocs.io/" #: ../Doc/whatsnew/2.5.rst:334 msgid "" "The py library by Holger Krekel, which contains the :mod:`py.std` package." msgstr "" +"La biblioteca py de Holger Krekel, que contiene el paquete :mod:`py.std`." #: ../Doc/whatsnew/2.5.rst:342 msgid "PEP 338: Executing Modules as Scripts" -msgstr "" +msgstr "PEP 338: Ejecutando Módulos como Scripts" #: ../Doc/whatsnew/2.5.rst:344 msgid "" @@ -416,6 +594,10 @@ msgid "" "the Python interpreter, the switch now uses an implementation in a new " "module, :mod:`runpy`." msgstr "" +"El conmutador :option:`-m` añadido en Python 2.4 para ejecutar un módulo " +"como un script ganó algunas habilidades más. En lugar de estar implementado " +"en código C dentro del intérprete de Python, el interruptor ahora utiliza " +"una implementación en un nuevo módulo, :mod:`runpy`." #: ../Doc/whatsnew/2.5.rst:349 msgid "" @@ -426,18 +608,24 @@ msgid "" "to ``sys.path`` and then use the :option:`-m` switch to execute code from " "the archive." msgstr "" +"El módulo :mod:`runpy` implementa un mecanismo de importación más " +"sofisticado de forma que ahora es posible ejecutar módulos en un paquete " +"como :mod:`pychecker.checker`. El módulo también soporta mecanismos de " +"importación alternativos como el módulo :mod:`zipimport`. Esto significa " +"que puede añadir la ruta de un archivo .zip a ``sys.path`` y luego utilizar " +"el modificador :option:`-m` para ejecutar el código del archivo." #: ../Doc/whatsnew/2.5.rst:359 msgid ":pep:`338` - Executing modules as scripts" -msgstr "" +msgstr ":pep:`338` - Ejecución de módulos como scripts" #: ../Doc/whatsnew/2.5.rst:360 msgid "PEP written and implemented by Nick Coghlan." -msgstr "" +msgstr "PEP escrito e implementado por Nick Coghlan." #: ../Doc/whatsnew/2.5.rst:368 msgid "PEP 341: Unified try/except/finally" -msgstr "" +msgstr "PEP 341: Try/except/finally unificados" #: ../Doc/whatsnew/2.5.rst:370 msgid "" @@ -449,6 +637,13 @@ msgid "" "complicated and it wasn't clear what the semantics of the combined statement " "should be." msgstr "" +"Hasta la versión 2.5 de Python, la sentencia :keyword:`try` tenía dos " +"variantes. Podías usar un bloque :keyword:`finally` para asegurarte de que " +"el código se ejecutaba siempre, o uno o más bloques :keyword:`except` para " +"capturar excepciones específicas. No podías combinar ambos bloques :keyword:" +"`!except` y un bloque :keyword:`!finally`, porque generar el bytecode " +"correcto para la versión combinada era complicado y no estaba claro cuál " +"debía ser la semántica de la sentencia combinada." #: ../Doc/whatsnew/2.5.rst:377 msgid "" @@ -457,6 +652,10 @@ msgid "" "block, and this clarified what the statement should mean. In Python 2.5, " "you can now write::" msgstr "" +"Guido van Rossum pasó algún tiempo trabajando con Java, que sí soporta el " +"equivalente de combinar bloques :keyword:`except` y un bloque :keyword:" +"`finally`, y esto aclaró lo que debería significar la declaración. En " +"Python 2.5, ahora se puede escribir::" #: ../Doc/whatsnew/2.5.rst:393 msgid "" @@ -466,6 +665,11 @@ msgid "" "class:`Exception2`, *handler-2* is executed, and so forth. If no exception " "is raised, the *else-block* is executed." msgstr "" +"Se ejecuta el código del *bloque-1*. Si el código lanza una excepción, se " +"comprueban los distintos bloques :keyword:`except`: si la excepción es de " +"clase :class:`Exception1`, se ejecuta *handler-1*; en caso contrario, si es " +"de clase :class:`Exception2`, se ejecuta *handler-2*, y así sucesivamente. " +"Si no se produce ninguna excepción, se ejecuta el bloque *else*." #: ../Doc/whatsnew/2.5.rst:399 msgid "" @@ -474,18 +678,23 @@ msgid "" "error in an exception handler or the *else-block* and a new exception is " "raised, the code in the *final-block* is still run." msgstr "" +"No importa lo que haya sucedido previamente, el *bloque final* se ejecuta " +"una vez que el bloque de código se ha completado y se han manejado las " +"excepciones planteadas. Incluso si hay un error en un manejador de " +"excepciones o en el *bloque else* y se lanza una nueva excepción, el código " +"del *bloque final* se sigue ejecutando." #: ../Doc/whatsnew/2.5.rst:407 msgid ":pep:`341` - Unifying try-except and try-finally" -msgstr "" +msgstr ":pep:`341` - Unificar try-except y try-finally" #: ../Doc/whatsnew/2.5.rst:408 msgid "PEP written by Georg Brandl; implementation by Thomas Lee." -msgstr "" +msgstr "PEP escrito por Georg Brandl; implementación por Thomas Lee." #: ../Doc/whatsnew/2.5.rst:416 msgid "PEP 342: New Generator Features" -msgstr "" +msgstr "PEP 342: Nuevas funciones del generador" #: ../Doc/whatsnew/2.5.rst:418 msgid "" @@ -498,10 +707,20 @@ msgid "" "changing the global variable's value, or passing in some mutable object that " "callers then modify." msgstr "" +"Python 2.5 añade una forma sencilla de pasar valores *a* un generador. Tal y " +"como se introdujo en Python 2.3, los generadores sólo producen salida; una " +"vez que se invoca el código de un generador para crear un iterador, no hay " +"forma de pasar ninguna información nueva a la función cuando se reanuda su " +"ejecución. A veces, la capacidad de pasar alguna información sería útil. " +"Las soluciones más ingeniosas para esto incluyen hacer que el código del " +"generador mire a una variable global y luego cambie el valor de la variable " +"global, o pasar algún objeto mutable que los llamadores luego modifiquen." #: ../Doc/whatsnew/2.5.rst:426 msgid "To refresh your memory of basic generators, here's a simple example::" msgstr "" +"Para refrescar la memoria de los generadores básicos, he aquí un ejemplo " +"sencillo::" #: ../Doc/whatsnew/2.5.rst:434 msgid "" @@ -512,6 +731,12 @@ msgid "" "the iterator's :meth:`next` method, picking up after the :keyword:`!yield` " "statement." msgstr "" +"Cuando se llama a ``contador(10)``, el resultado es un iterador que devuelve " +"los valores de 0 a 9. Al encontrar la sentencia :keyword:`yield`, el " +"iterador devuelve el valor proporcionado y suspende la ejecución de la " +"función, preservando las variables locales. La ejecución se reanuda en la " +"siguiente llamada al método :meth:`next` del iterador, retomando después de " +"la sentencia :keyword:`!yield`." #: ../Doc/whatsnew/2.5.rst:440 msgid "" @@ -519,6 +744,10 @@ msgid "" "value. In 2.5, :keyword:`!yield` is now an expression, returning a value " "that can be assigned to a variable or otherwise operated on::" msgstr "" +"En Python 2.3, :keyword:`yield` era una declaración; no devolvía ningún " +"valor. En 2.5, :keyword:`!yield` es ahora una expresión, que devuelve un " +"valor que se puede asignar a una variable o que se puede operar de otra " +"manera::" #: ../Doc/whatsnew/2.5.rst:446 msgid "" @@ -527,6 +756,10 @@ msgid "" "above example. The parentheses aren't always necessary, but it's easier to " "always add them instead of having to remember when they're needed." msgstr "" +"Te recomiendo que siempre pongas paréntesis alrededor de una expresión :" +"keyword:`yield` cuando estés haciendo algo con el valor devuelto, como en el " +"ejemplo anterior. Los paréntesis no siempre son necesarios, pero es más " +"fácil añadirlos siempre en lugar de tener que recordar cuándo son necesarios." #: ../Doc/whatsnew/2.5.rst:451 msgid "" @@ -536,6 +769,11 @@ msgid "" "can write ``val = yield i`` but have to use parentheses when there's an " "operation, as in ``val = (yield i) + 12``.)" msgstr "" +"(:pep:`342` explica las reglas exactas, que consisten en que una expresión :" +"keyword:`yield`\\ debe ir siempre entre paréntesis, excepto cuando ocurre en " +"la expresión de nivel superior en el lado derecho de una asignación. Esto " +"significa que puedes escribir ``val = yield i`` pero tienes que usar " +"paréntesis cuando hay una operación, como en ``val = (yield i) + 12``)" #: ../Doc/whatsnew/2.5.rst:458 msgid "" @@ -544,16 +782,22 @@ msgid "" "the specified *value*. If the regular :meth:`next` method is called, the :" "keyword:`!yield` returns :const:`None`." msgstr "" +"Los valores se envían a un generador llamando a su método ``send(value)``. " +"El código del generador se reanuda y la expresión :keyword:`yield` devuelve " +"el *valor* especificado. Si se llama al método regular :meth:`next`, la " +"expresión :keyword:`!yield` devuelve :const:`None`." #: ../Doc/whatsnew/2.5.rst:463 msgid "" "Here's the previous example, modified to allow changing the value of the " "internal counter. ::" msgstr "" +"Aquí está el ejemplo anterior, modificado para permitir cambiar el valor del " +"contador interno. ::" #: ../Doc/whatsnew/2.5.rst:476 msgid "And here's an example of changing the counter::" -msgstr "" +msgstr "Y aquí hay un ejemplo de cambio de contador::" #: ../Doc/whatsnew/2.5.rst:493 msgid "" @@ -562,11 +806,16 @@ msgid "" "sure that the :meth:`send` method will be the only method used to resume " "your generator function." msgstr "" +":keyword:`yield` normalmente devolverá :const:`None`, por lo que siempre " +"debes comprobar este caso. No utilices su valor en las expresiones sin más, " +"a menos que estés seguro de que el método :meth:`send` será el único " +"utilizado para reanudar tu función generadora." #: ../Doc/whatsnew/2.5.rst:498 msgid "" "In addition to :meth:`send`, there are two other new methods on generators:" msgstr "" +"Además de :meth:`send`, hay otros dos nuevos métodos en los generadores:" #: ../Doc/whatsnew/2.5.rst:500 msgid "" @@ -574,6 +823,9 @@ msgid "" "inside the generator; the exception is raised by the :keyword:`yield` " "expression where the generator's execution is paused." msgstr "" +"``throw(type, value=None, traceback=None)`` se utiliza para lanzar una " +"excepción dentro del generador; la excepción es lanzada por la expresión :" +"keyword:`yield` donde la ejecución del generador se pausa." #: ../Doc/whatsnew/2.5.rst:504 msgid "" @@ -586,6 +838,14 @@ msgid "" "meth:`close` will also be called by Python's garbage collector when the " "generator is garbage-collected." msgstr "" +":meth:`close` lanza una nueva excepción :exc:`GeneratorExit` dentro del " +"generador para terminar la iteración. Al recibir esta excepción, el código " +"del generador debe lanzar :exc:`GeneratorExit` o :exc:`StopIteration`. " +"Capturar la excepción :exc:`GeneratorExit` y devolver un valor es ilegal y " +"provocará un :exc:`RuntimeError`; si la función lanza alguna otra excepción, " +"esa excepción se propaga a quien la llama. :meth:`close` también será " +"llamado por el recolector de basura de Python cuando el generador sea " +"recolectado." #: ../Doc/whatsnew/2.5.rst:512 msgid "" @@ -593,12 +853,18 @@ msgid "" "suggest using a ``try: ... finally:`` suite instead of catching :exc:" "`GeneratorExit`." msgstr "" +"Si necesitas ejecutar código de limpieza cuando se produce un :exc:" +"`GeneratorExit`, te sugiero que utilices un conjunto ``try: ... finally:`` " +"en lugar de atrapar :exc:`GeneratorExit`." #: ../Doc/whatsnew/2.5.rst:515 msgid "" "The cumulative effect of these changes is to turn generators from one-way " "producers of information into both producers and consumers." msgstr "" +"El efecto acumulativo de estos cambios es que los generadores pasan de ser " +"productores unidireccionales de información a ser tanto productores como " +"consumidores." #: ../Doc/whatsnew/2.5.rst:518 msgid "" @@ -609,6 +875,12 @@ msgid "" "statements). We'll have to figure out patterns for using coroutines " "effectively in Python." msgstr "" +"Los generadores también se convierten en *corutinas*, una forma más " +"generalizada de subrutinas. Las subrutinas se introducen en un punto y se " +"salen en otro (la parte superior de la función, y una declaración :keyword:" +"`return`), pero las coroutines pueden introducirse, salirse y reanudarse en " +"muchos puntos diferentes (las declaraciones :keyword:`yield`). Tendremos que " +"descubrir patrones para usar coroutines de forma efectiva en Python." #: ../Doc/whatsnew/2.5.rst:524 msgid "" @@ -624,6 +896,19 @@ msgid "" "necessary in order to implement the :keyword:`with` statement described by :" "pep:`343`. I'll look at this new statement in the following section." msgstr "" +"La adición del método :meth:`close` tiene un efecto secundario que no es " +"obvio. :meth:`close` es llamado cuando un generador es recogido por la " +"basura, lo que significa que el código del generador tiene una última " +"oportunidad de ejecutarse antes de que el generador sea destruido. Esta " +"última oportunidad significa que ahora se puede garantizar que las " +"sentencias ``intentar...finalmente`` en los generadores funcionen; la " +"cláusula :keyword:`finally` ahora siempre tendrá una oportunidad de " +"ejecutarse. Por lo tanto, se ha eliminado la restricción sintáctica que " +"impedía mezclar sentencias :keyword:`yield` con un conjunto ``try..." +"finally``. Esto parece una trivialidad menor del lenguaje, pero el uso de " +"generadores y ``try...finally`` es realmente necesario para implementar la " +"sentencia :keyword:`with` descrita por :pep:`343`. Veré esta nueva " +"sentencia en la siguiente sección." #: ../Doc/whatsnew/2.5.rst:536 msgid "" @@ -632,44 +917,54 @@ msgid "" "possible for :attr:`gi_frame` to be ``None`` once the generator has been " "exhausted." msgstr "" +"Otro efecto aún más esotérico de este cambio: antes, el atributo :attr:" +"`gi_frame` de un generador era siempre un objeto frame. Ahora es posible " +"que :attr:`gi_frame` sea ``None`` una vez que el generador se ha agotado." #: ../Doc/whatsnew/2.5.rst:549 msgid ":pep:`342` - Coroutines via Enhanced Generators" -msgstr "" +msgstr ":pep:`342` - Coroutines mediante generadores mejorados" #: ../Doc/whatsnew/2.5.rst:545 msgid "" "PEP written by Guido van Rossum and Phillip J. Eby; implemented by Phillip " "J. Eby. Includes examples of some fancier uses of generators as coroutines." msgstr "" +"PEP escrito por Guido van Rossum y Phillip J. Eby; implementado por Phillip " +"J. Eby. Incluye ejemplos de algunos usos más sofisticados de los " +"generadores como coroutines." #: ../Doc/whatsnew/2.5.rst:548 msgid "" "Earlier versions of these features were proposed in :pep:`288` by Raymond " "Hettinger and :pep:`325` by Samuele Pedroni." msgstr "" +"Versiones anteriores de estas características fueron propuestas en :pep:" +"`288` por Raymond Hettinger y :pep:`325` por Samuele Pedroni." #: ../Doc/whatsnew/2.5.rst:552 msgid "https://en.wikipedia.org/wiki/Coroutine" -msgstr "" +msgstr "https://en.wikipedia.org/wiki/Coroutine" #: ../Doc/whatsnew/2.5.rst:552 msgid "The Wikipedia entry for coroutines." -msgstr "" +msgstr "La entrada de Wikipedia para las coroutines." #: ../Doc/whatsnew/2.5.rst:554 msgid "http://www.sidhe.org/~dan/blog/archives/000178.html" -msgstr "" +msgstr "http://www.sidhe.org/~dan/blog/archivos/000178.html" #: ../Doc/whatsnew/2.5.rst:555 msgid "" "An explanation of coroutines from a Perl point of view, written by Dan " "Sugalski." msgstr "" +"Una explicación de las coroutines desde el punto de vista de Perl, escrita " +"por Dan Sugalski." #: ../Doc/whatsnew/2.5.rst:563 msgid "PEP 343: The 'with' statement" -msgstr "" +msgstr "PEP 343: La declaración \"con" #: ../Doc/whatsnew/2.5.rst:565 msgid "" @@ -679,12 +974,19 @@ msgid "" "next section, I'll examine the implementation details and show how to write " "objects for use with this statement." msgstr "" +"La sentencia ':keyword:`with`' aclara el código que antes utilizaba bloques " +"``try...finally``' para asegurar que se ejecuta el código de limpieza. En " +"esta sección, hablaré de la sentencia tal y como se utiliza habitualmente. " +"En la siguiente sección, examinaré los detalles de la implementación y " +"mostraré cómo escribir objetos para usar con esta sentencia." #: ../Doc/whatsnew/2.5.rst:571 msgid "" "The ':keyword:`with`' statement is a new control-flow structure whose basic " "structure is::" msgstr "" +"La declaración ':keyword:`with`' es una nueva estructura de flujo de control " +"cuya estructura básica es::" #: ../Doc/whatsnew/2.5.rst:577 msgid "" @@ -692,6 +994,9 @@ msgid "" "the context management protocol (that is, has :meth:`__enter__` and :meth:" "`__exit__` methods." msgstr "" +"La expresión se evalúa y debe dar como resultado un objeto que soporte el " +"protocolo de gestión de contextos (es decir, que tenga los métodos :meth:" +"`__enter__` y :meth:`__exit__`)." #: ../Doc/whatsnew/2.5.rst:581 msgid "" @@ -700,6 +1005,11 @@ msgid "" "the name *variable*, if given. (Note carefully that *variable* is *not* " "assigned the result of *expression*.)" msgstr "" +"El :meth:`__enter__` del objeto es llamado antes de que se ejecute *with-" +"block* y por lo tanto puede ejecutar código de configuración. También puede " +"devolver un valor ligado al nombre *variable*, si se da. (Observe " +"cuidadosamente que a *variable* no se le asigna el resultado de la " +"*expresión*)" #: ../Doc/whatsnew/2.5.rst:586 msgid "" @@ -707,16 +1017,21 @@ msgid "" "`__exit__` method is called, even if the block raised an exception, and can " "therefore run clean-up code." msgstr "" +"Una vez finalizada la ejecución del *with-block*, se llama al método :meth:" +"`__exit__` del objeto, incluso si el bloque lanzó una excepción, y por lo " +"tanto puede ejecutar código de limpieza." #: ../Doc/whatsnew/2.5.rst:590 msgid "" "To enable the statement in Python 2.5, you need to add the following " "directive to your module::" msgstr "" +"Para habilitar la declaración en Python 2.5, debe añadir la siguiente " +"directiva a su módulo::" #: ../Doc/whatsnew/2.5.rst:595 msgid "The statement will always be enabled in Python 2.6." -msgstr "" +msgstr "La declaración siempre estará habilitada en Python 2.6." #: ../Doc/whatsnew/2.5.rst:597 msgid "" @@ -724,6 +1039,9 @@ msgid "" "can be used with the ':keyword:`with`' statement. File objects are one " "example::" msgstr "" +"Algunos objetos estándar de Python soportan ahora el protocolo de gestión de " +"contextos y pueden utilizarse con la sentencia ':keyword:`with`''. Los " +"objetos de archivo son un ejemplo::" #: ../Doc/whatsnew/2.5.rst:605 msgid "" @@ -731,24 +1049,33 @@ msgid "" "automatically closed, even if the :keyword:`for` loop raised an exception " "part-way through the block." msgstr "" +"Después de que esta sentencia se haya ejecutado, el objeto archivo en *f* se " +"habrá cerrado automáticamente, incluso si el bucle :keyword:`for` lanzó una " +"excepción a mitad del bloque." #: ../Doc/whatsnew/2.5.rst:611 msgid "" "In this case, *f* is the same object created by :func:`open`, because :meth:" "`file.__enter__` returns *self*." msgstr "" +"En este caso, *f* es el mismo objeto creado por :func:`open`, porque :meth:" +"`file.__enter__` devuelve *self*." #: ../Doc/whatsnew/2.5.rst:614 msgid "" "The :mod:`threading` module's locks and condition variables also support " "the ':keyword:`with`' statement::" msgstr "" +"Los bloqueos y las variables de condición del módulo :mod:`threading` " +"también soportan la sentencia ':keyword:`with`'::" #: ../Doc/whatsnew/2.5.rst:622 msgid "" "The lock is acquired before the block is executed and always released once " "the block is complete." msgstr "" +"El bloqueo se adquiere antes de que se ejecute el bloque y siempre se libera " +"una vez que el bloque se ha completado." #: ../Doc/whatsnew/2.5.rst:625 msgid "" @@ -756,10 +1083,13 @@ msgid "" "easy to save and restore the current decimal context, which encapsulates the " "desired precision and rounding characteristics for computations::" msgstr "" +"La nueva función :func:`localcontext` del módulo :mod:`decimal` facilita el " +"guardado y la restauración del contexto decimal actual, que encapsula las " +"características de precisión y redondeo deseadas para los cálculos::" #: ../Doc/whatsnew/2.5.rst:644 msgid "Writing Context Managers" -msgstr "" +msgstr "Redacción de Gestores de Contexto" #: ../Doc/whatsnew/2.5.rst:646 msgid "" @@ -769,10 +1099,17 @@ msgid "" "if you like. Authors of new objects will need to understand the details of " "the underlying implementation and should keep reading." msgstr "" +"Bajo el capó, la sentencia ':keyword:`with`' es bastante complicada. La " +"mayoría de la gente sólo utilizará ':keyword:`!with`' en compañía de objetos " +"existentes y no necesita conocer estos detalles, así que puedes saltarte el " +"resto de esta sección si quieres. Los autores de nuevos objetos necesitarán " +"entender los detalles de la implementación subyacente y deberían seguir " +"leyendo." #: ../Doc/whatsnew/2.5.rst:652 msgid "A high-level explanation of the context management protocol is:" msgstr "" +"Una explicación de alto nivel del protocolo de gestión del contexto es:" #: ../Doc/whatsnew/2.5.rst:654 msgid "" @@ -780,6 +1117,9 @@ msgid "" "\"context manager\". The context manager must have :meth:`__enter__` and :" "meth:`__exit__` methods." msgstr "" +"La expresión se evalúa y debe dar como resultado un objeto llamado \"gestor " +"de contexto\". El gestor de contexto debe tener métodos :meth:`__enter__` " +"y :meth:`__exit__`." #: ../Doc/whatsnew/2.5.rst:658 msgid "" @@ -787,10 +1127,13 @@ msgid "" "returned is assigned to *VAR*. If no ``'as VAR'`` clause is present, the " "value is simply discarded." msgstr "" +"Se llama al método :meth:`__enter__` del gestor de contexto. El valor " +"devuelto se asigna a *VAR*. Si no está presente la cláusula ``'as VAR'``, " +"el valor simplemente se descarta." #: ../Doc/whatsnew/2.5.rst:662 msgid "The code in *BLOCK* is executed." -msgstr "" +msgstr "Se ejecuta el código en *BLOQUE*." #: ../Doc/whatsnew/2.5.rst:664 msgid "" @@ -802,18 +1145,31 @@ msgid "" "if you do the author of the code containing the ':keyword:`with`' statement " "will never realize anything went wrong." msgstr "" +"Si *BLOCK* lanza una excepción, se llama a ``__exit__(type, value, " +"traceback)`` con los detalles de la excepción, los mismos valores devueltos " +"por :func:`sys.exc_info`. El valor de retorno del método controla si la " +"excepción se vuelve a lanzar: cualquier valor falso vuelve a lanzar la " +"excepción, y ``True`` resultará en suprimirla. Sólo en raras ocasiones " +"querrá suprimir la excepción, porque si lo hace el autor del código que " +"contiene la declaración ':keyword:`with`' nunca se dará cuenta de que algo " +"ha ido mal." #: ../Doc/whatsnew/2.5.rst:672 msgid "" "If *BLOCK* didn't raise an exception, the :meth:`__exit__` method is still " "called, but *type*, *value*, and *traceback* are all ``None``." msgstr "" +"Si *BLOCK* no lanzó una excepción, el método :meth:`__exit__` sigue siendo " +"llamado, pero *type*, *value*, y *traceback* son todos ``None``." #: ../Doc/whatsnew/2.5.rst:675 msgid "" "Let's think through an example. I won't present detailed code but will only " "sketch the methods necessary for a database that supports transactions." msgstr "" +"Pensemos en un ejemplo. No presentaré un código detallado, sino que sólo " +"esbozaré los métodos necesarios para una base de datos que soporte " +"transacciones." #: ../Doc/whatsnew/2.5.rst:678 msgid "" @@ -823,12 +1179,21 @@ msgid "" "rolled back, meaning that the changes are all discarded and the database is " "unchanged. See any database textbook for more information.)" msgstr "" +"(Para quienes no estén familiarizados con la terminología de las bases de " +"datos: un conjunto de cambios en la base de datos se agrupa en una " +"transacción. Las transacciones pueden ser confirmadas, lo que significa que " +"todos los cambios se escriben en la base de datos, o revertidas, lo que " +"significa que todos los cambios se descartan y la base de datos no se " +"modifica. Consulte cualquier libro de texto sobre bases de datos para " +"obtener más información)" #: ../Doc/whatsnew/2.5.rst:684 msgid "" "Let's assume there's an object representing a database connection. Our goal " "will be to let the user write code like this::" msgstr "" +"Supongamos que hay un objeto que representa una conexión a la base de datos. " +"Nuestro objetivo será permitir que el usuario escriba código como este::" #: ../Doc/whatsnew/2.5.rst:693 msgid "" @@ -836,6 +1201,9 @@ msgid "" "or rolled back if there's an exception. Here's the basic interface for :" "class:`DatabaseConnection` that I'll assume::" msgstr "" +"La transacción debe ser confirmada si el código en el bloque se ejecuta sin " +"problemas o revertida si hay una excepción. Aquí está la interfaz básica " +"para :class:`DatabaseConnection` que voy a asumir::" #: ../Doc/whatsnew/2.5.rst:706 msgid "" @@ -845,6 +1213,11 @@ msgid "" "cursor`` to their ':keyword:`with`' statement to bind the cursor to a " "variable name. ::" msgstr "" +"El método :meth:`__enter__` es bastante sencillo, ya que sólo hay que " +"iniciar una nueva transacción. Para esta aplicación el objeto cursor " +"resultante sería un resultado útil, por lo que el método lo devolverá. El " +"usuario puede entonces añadir ``as cursor`` a su sentencia ':keyword:`with`' " +"para ligar el cursor a un nombre de variable. ::" #: ../Doc/whatsnew/2.5.rst:718 msgid "" @@ -853,6 +1226,10 @@ msgid "" "occurred. If there was no exception, the transaction is committed. The " "transaction is rolled back if there was an exception." msgstr "" +"El método :meth:`__exit__` es el más complicado porque es donde hay que " +"hacer la mayor parte del trabajo. El método tiene que comprobar si se " +"produjo una excepción. Si no hubo ninguna excepción, la transacción es " +"confirmada. La transacción es revertida si hubo una excepción." #: ../Doc/whatsnew/2.5.rst:723 msgid "" @@ -861,10 +1238,15 @@ msgid "" "exception will be re-raised automatically. If you wished, you could be more " "explicit and add a :keyword:`return` statement at the marked location. ::" msgstr "" +"En el código de abajo, la ejecución simplemente caerá al final de la " +"función, devolviendo el valor por defecto de ``None``. ``None`` es falso, " +"por lo que la excepción se volverá a lanzar automáticamente. Si lo desea, " +"puede ser más explícito y añadir una declaración :keyword:`return` en el " +"lugar marcado. ::" #: ../Doc/whatsnew/2.5.rst:743 msgid "The contextlib module" -msgstr "" +msgstr "El módulo contextlib" #: ../Doc/whatsnew/2.5.rst:745 msgid "" @@ -872,6 +1254,9 @@ msgid "" "that are useful for writing objects for use with the ':keyword:`with`' " "statement." msgstr "" +"El nuevo módulo :mod:`contextlib` proporciona algunas funciones y un " +"decorador que son útiles para escribir objetos para usar con la sentencia ':" +"keyword:`with`'." #: ../Doc/whatsnew/2.5.rst:748 msgid "" @@ -885,12 +1270,23 @@ msgid "" "exception raised in the block will be raised by the :keyword:`!yield` " "statement." msgstr "" +"El decorador se llama :func:`contextmanager`, y permite escribir una única " +"función generadora en lugar de definir una nueva clase. El generador debe " +"producir exactamente un valor. El código hasta la palabra clave :keyword:" +"`yield` se ejecutará como el método :meth:`__enter__`, y el valor producido " +"será el valor de retorno del método que se vinculará a la variable en la " +"cláusula :keyword:`with` de la sentencia :keyword:`!as`, si existe. El " +"código después de :keyword:`yield` se ejecutará en el método :meth:" +"`__exit__`. Cualquier excepción lanzada en el bloque será lanzada por la " +"sentencia :keyword:`!yield`." #: ../Doc/whatsnew/2.5.rst:757 msgid "" "Our database example from the previous section could be written using this " "decorator as::" msgstr "" +"Nuestro ejemplo de base de datos de la sección anterior podría escribirse " +"utilizando este decorador como::" #: ../Doc/whatsnew/2.5.rst:777 msgid "" @@ -900,16 +1296,24 @@ msgid "" "with`' statement both starts a database transaction and acquires a thread " "lock::" msgstr "" +"El módulo :mod:`contextlib` también tiene una función ``anidada(mgr1, " +"mgr2, ...)`` que combina varios gestores de contexto para que no sea " +"necesario escribir sentencias ':keyword:`with`' anidadas. En este ejemplo, " +"la única sentencia ':keyword:`!with`` inicia una transacción de base de " +"datos y adquiere un bloqueo de hilo::" #: ../Doc/whatsnew/2.5.rst:786 msgid "" "Finally, the ``closing(object)`` function returns *object* so that it can be " "bound to a variable, and calls ``object.close`` at the end of the block. ::" msgstr "" +"Por último, la función ``closing(object)`` devuelve el *objeto* para que " +"pueda ser vinculado a una variable, y llama a ``object.close`` al final del " +"bloque. ::" #: ../Doc/whatsnew/2.5.rst:803 msgid ":pep:`343` - The \"with\" statement" -msgstr "" +msgstr ":pep:`343` - La declaración \"con\"" #: ../Doc/whatsnew/2.5.rst:800 msgid "" @@ -918,14 +1322,18 @@ msgid "" "':keyword:`with`' statement, which can be helpful in learning how the " "statement works." msgstr "" +"PEP escrito por Guido van Rossum y Nick Coghlan; implementado por Mike " +"Bland, Guido van Rossum y Neal Norwitz. El PEP muestra el código generado " +"para una sentencia ':keyword:`with`', que puede ser útil para aprender cómo " +"funciona la sentencia." #: ../Doc/whatsnew/2.5.rst:805 msgid "The documentation for the :mod:`contextlib` module." -msgstr "" +msgstr "La documentación del módulo :mod:`contextlib`." #: ../Doc/whatsnew/2.5.rst:813 msgid "PEP 352: Exceptions as New-Style Classes" -msgstr "" +msgstr "PEP 352: Las excepciones como clases de nuevo estilo" #: ../Doc/whatsnew/2.5.rst:815 msgid "" @@ -934,12 +1342,18 @@ msgid "" "exceptions (:exc:`NameError`, :exc:`ValueError`, etc.) are now new-style " "classes." msgstr "" +"Las clases de excepción ahora pueden ser clases de nuevo estilo, no sólo " +"clases clásicas, y la clase incorporada :exc:`Exception` y todas las " +"excepciones incorporadas estándar (:exc:`NameError`, :exc:`ValueError`, " +"etc.) son ahora clases de nuevo estilo." #: ../Doc/whatsnew/2.5.rst:819 msgid "" "The inheritance hierarchy for exceptions has been rearranged a bit. In 2.5, " "the inheritance relationships are::" msgstr "" +"La jerarquía de herencia de las excepciones se ha reordenado un poco. En " +"2.5, las relaciones de herencia son::" #: ../Doc/whatsnew/2.5.rst:828 msgid "" @@ -951,6 +1365,14 @@ msgid "" "exc:`KeyboardInterrupt` and :exc:`SystemExit` in order to re-raise them. " "The usual pattern is::" msgstr "" +"Esta reorganización se hizo porque la gente a menudo quiere atrapar todas " +"las excepciones que indican errores del programa. :exc:`KeyboardInterrupt` " +"y :exc:`SystemExit` no son errores, sin embargo, y por lo general " +"representan una acción explícita como el usuario pulsando :kbd:`Control-C` o " +"el código llamando a :func:`sys.exit`. Una simple ``except:`` atrapará " +"todas las excepciones, por lo que comúnmente se necesita listar :exc:" +"`KeyboardInterrupt` y :exc:`SystemExit` para volver a lanzarlas. El patrón " +"habitual es::" #: ../Doc/whatsnew/2.5.rst:843 msgid "" @@ -959,6 +1381,11 @@ msgid "" "leaving :exc:`KeyboardInterrupt` and :exc:`SystemExit` alone. As in " "previous versions, a bare ``except:`` still catches all exceptions." msgstr "" +"En Python 2.5, ahora puedes escribir ``except Exception`` para conseguir el " +"mismo resultado, capturando todas las excepciones que suelen indicar errores " +"pero dejando :exc:`KeyboardInterrupt` y :exc:`SystemExit` en paz. Como en " +"versiones anteriores, un ``except:`` desnudo sigue capturando todas las " +"excepciones." #: ../Doc/whatsnew/2.5.rst:848 msgid "" @@ -970,6 +1397,13 @@ msgid "" "``except:`` form should be removed in Python 3.0, but Guido van Rossum " "hasn't decided whether to do this or not." msgstr "" +"El objetivo de Python 3.0 es requerir que cualquier clase lanzada como " +"excepción derive de :exc:`BaseException` o de algún descendiente de :exc:" +"`BaseException`, y las futuras versiones de la serie Python 2.x pueden " +"empezar a imponer esta restricción. Por lo tanto, sugiero que empieces a " +"hacer que todas tus clases de excepción deriven de :exc:`Exception` ahora. " +"Se ha sugerido que la forma desnuda ``except:`` sea eliminada en Python 3.0, " +"pero Guido van Rossum no ha decidido si hacerlo o no." #: ../Doc/whatsnew/2.5.rst:856 msgid "" @@ -977,20 +1411,26 @@ msgid "" "occurred\"``, is deprecated in Python 2.5 and will trigger a warning. The " "aim is to be able to remove the string-exception feature in a few releases." msgstr "" +"El lanzamiento de cadenas como excepciones, como en la declaración ``raise " +"\"Error occurred\"``, está obsoleto en Python 2.5 y provocará una " +"advertencia. El objetivo es poder eliminar la función de excepción de " +"cadena en algunas versiones." #: ../Doc/whatsnew/2.5.rst:863 msgid ":pep:`352` - Required Superclass for Exceptions" -msgstr "" +msgstr ":pep:`352` - Superclase necesaria para las excepciones" #: ../Doc/whatsnew/2.5.rst:864 msgid "" "PEP written by Brett Cannon and Guido van Rossum; implemented by Brett " "Cannon." msgstr "" +"PEP escrito por Brett Cannon y Guido van Rossum; implementado por Brett " +"Cannon." #: ../Doc/whatsnew/2.5.rst:872 msgid "PEP 353: Using ssize_t as the index type" -msgstr "" +msgstr "PEP 353: Uso de ssize_t como tipo de índice" #: ../Doc/whatsnew/2.5.rst:874 msgid "" @@ -999,6 +1439,10 @@ msgid "" "handle more data on 64-bit platforms. This change doesn't affect Python's " "capacity on 32-bit platforms." msgstr "" +"Un amplio cambio en la API C de Python, que utiliza una nueva definición de " +"tipo :c:type:`Py_ssize_t` en lugar de :c:type:`int`, permitirá al intérprete " +"manejar más datos en plataformas de 64 bits. Este cambio no afecta a la " +"capacidad de Python en plataformas de 32 bits." #: ../Doc/whatsnew/2.5.rst:879 msgid "" @@ -1011,6 +1455,16 @@ msgid "" "www.unix.org/version2/whatsnew/lp64_wp.html for a discussion -- but the most " "commonly available model leaves :c:type:`int` as 32 bits.)" msgstr "" +"Varias partes del intérprete de Python utilizaban el tipo :c:type:`int` de C " +"para almacenar tamaños o recuentos; por ejemplo, el número de elementos de " +"una lista o tupla se almacenaba en un :c:type:`int`. Los compiladores de C " +"para la mayoría de las plataformas de 64 bits siguen definiendo :c:type:" +"`int` como un tipo de 32 bits, lo que significa que las listas sólo pueden " +"contener hasta ``2**31 - 1`` = 2147483647 elementos. (En realidad, hay " +"algunos modelos de programación diferentes que los compiladores de C de 64 " +"bits pueden utilizar -- véase http://www.unix.org/version2/whatsnew/lp64_wp." +"html para una discusión -- pero el modelo más comúnmente disponible deja :c:" +"type:`int` como de 32 bits)" #: ../Doc/whatsnew/2.5.rst:888 msgid "" @@ -1020,6 +1474,12 @@ msgid "" "type:`PyObject` representing the item. 2147483647\\*4 is already more bytes " "than a 32-bit address space can contain." msgstr "" +"Un límite de 2147483647 elementos no importa realmente en una plataforma de " +"32 bits porque te quedarás sin memoria antes de alcanzar el límite de " +"longitud. Cada elemento de la lista requiere espacio para un puntero, que es " +"de 4 bytes, más espacio para un :c:type:`PyObject` que representa el " +"elemento. 2147483647*4 ya son más bytes de los que puede contener un " +"espacio de direcciones de 32 bits." #: ../Doc/whatsnew/2.5.rst:894 msgid "" @@ -1033,6 +1493,17 @@ msgid "" "users is still relatively small. (In 5 or 10 years, we may *all* be on 64-" "bit machines, and the transition would be more painful then.)" msgstr "" +"Sin embargo, es posible direccionar esa cantidad de memoria en una " +"plataforma de 64 bits. Los punteros para una lista de ese tamaño sólo " +"requerirían 16 GiB de espacio, por lo que no es descabellado que los " +"programadores de Python puedan construir listas tan grandes. Por lo tanto, " +"el intérprete de Python tuvo que ser cambiado para usar algún tipo diferente " +"a :c:type:`int`, y este será un tipo de 64 bits en plataformas de 64 bits. " +"El cambio causará incompatibilidades en las máquinas de 64 bits, por lo que " +"se consideró que valía la pena hacer la transición ahora, mientras el número " +"de usuarios de 64 bits es todavía relativamente pequeño. (En 5 o 10 años, " +"puede que *todos* estemos en máquinas de 64 bits, y la transición sería " +"entonces más dolorosa)" #: ../Doc/whatsnew/2.5.rst:904 msgid "" @@ -1042,6 +1513,12 @@ msgid "" "now return :c:type:`Py_ssize_t`. Code in extension modules may therefore " "need to have some variables changed to :c:type:`Py_ssize_t`." msgstr "" +"Este cambio afecta en mayor medida a los autores de módulos de extensión de " +"C. Las cadenas de Python y los tipos contenedores como las listas y las " +"tuplas utilizan ahora :c:type:`Py_ssize_t` para almacenar su tamaño. " +"Funciones como :c:func:`PyList_Size` ahora devuelven :c:type:`Py_ssize_t`. " +"Por lo tanto, el código de los módulos de extensión puede necesitar cambiar " +"algunas variables a :c:type:`Py_ssize_t`." #: ../Doc/whatsnew/2.5.rst:910 msgid "" @@ -1051,24 +1528,32 @@ msgid "" "default, but you can define the macro :c:macro:`PY_SSIZE_T_CLEAN` before " "including :file:`Python.h` to make them return :c:type:`Py_ssize_t`." msgstr "" +"Las funciones :c:func:`PyArg_ParseTuple` y :c:func:`Py_BuildValue` tienen un " +"nuevo código de conversión, ``n``, para :c:type:`Py_ssize_t`. Las " +"funciones :c:func:`PyArg_ParseTuple` ``s#`` y ``t#`` siguen devolviendo :c:" +"type:`int` por defecto, pero puedes definir la macro :c:macro:" +"`PY_SSIZE_T_CLEAN` antes de incluir :file:`Python.h` para que devuelvan :c:" +"type:`Py_ssize_t`." #: ../Doc/whatsnew/2.5.rst:916 msgid "" ":pep:`353` has a section on conversion guidelines that extension authors " "should read to learn about supporting 64-bit platforms." msgstr "" +":pep:`353` tiene una sección sobre directrices de conversión que los autores " +"de extensiones deberían leer para aprender a soportar plataformas de 64 bits." #: ../Doc/whatsnew/2.5.rst:922 msgid ":pep:`353` - Using ssize_t as the index type" -msgstr "" +msgstr ":pep:`353` - Uso de ssize_t como tipo de índice" #: ../Doc/whatsnew/2.5.rst:923 msgid "PEP written and implemented by Martin von Löwis." -msgstr "" +msgstr "PEP escrito y aplicado por Martin von Löwis." #: ../Doc/whatsnew/2.5.rst:931 msgid "PEP 357: The '__index__' method" -msgstr "" +msgstr "PEP 357: El método '__index__'" #: ../Doc/whatsnew/2.5.rst:933 msgid "" @@ -1080,6 +1565,14 @@ msgid "" "8, 16, 32, and 64 bits, but there was no way to signal that these types " "could be used as slice indexes." msgstr "" +"Los desarrolladores de NumPy tenían un problema que sólo podía resolverse " +"añadiendo un nuevo método especial, :meth:`__index__`. Cuando se utiliza la " +"notación de trozos, como en ``[start:stop:step]``, los valores de los " +"índices *start*, *stop* y *step* deben ser todos enteros o enteros largos. " +"NumPy define una variedad de tipos de enteros especializados que " +"corresponden a enteros sin signo y con signo de 8, 16, 32 y 64 bits, pero no " +"había forma de señalar que estos tipos pudieran usarse como índices de " +"trozos." #: ../Doc/whatsnew/2.5.rst:941 msgid "" @@ -1088,6 +1581,11 @@ msgid "" "meth:`__int__`, floating-point numbers would also become legal slice indexes " "and that's clearly an undesirable behaviour." msgstr "" +"El rebanado no puede utilizar el método :meth:`__int__` existente porque ese " +"método también se utiliza para implementar la coerción a enteros. Si el " +"rebanado utilizara :meth:`__int__`, los números de punto flotante también se " +"convertirían en índices de rebanada legales y eso es claramente un " +"comportamiento indeseable." #: ../Doc/whatsnew/2.5.rst:946 msgid "" @@ -1095,6 +1593,9 @@ msgid "" "no arguments and returns an integer giving the slice index to use. For " "example::" msgstr "" +"En su lugar, se ha añadido un nuevo método especial llamado :meth:" +"`__index__`. No toma argumentos y devuelve un entero que da el índice de " +"corte a utilizar. Por ejemplo::" #: ../Doc/whatsnew/2.5.rst:953 msgid "" @@ -1102,6 +1603,9 @@ msgid "" "interpreter will check that the type returned is correct, and raises a :exc:" "`TypeError` if this requirement isn't met." msgstr "" +"El valor devuelto debe ser un entero de Python o un entero largo. El " +"intérprete comprobará que el tipo devuelto es correcto, y lanza un :exc:" +"`TypeError` si no se cumple este requisito." #: ../Doc/whatsnew/2.5.rst:957 msgid "" @@ -1110,24 +1614,31 @@ msgid "" "``PyNumber_Index(obj)`` can be used in extension code to call the :meth:" "`__index__` function and retrieve its result." msgstr "" +"Se ha añadido la correspondiente ranura :attr:`nb_index` a la estructura :c:" +"type:`PyNumberMethods` de nivel C para que las extensiones C puedan " +"implementar este protocolo. El código de la extensión puede utilizar " +"``PyNumber_Index(obj)`` para llamar a la función :meth:`__index__` y obtener " +"su resultado." #: ../Doc/whatsnew/2.5.rst:965 msgid ":pep:`357` - Allowing Any Object to be Used for Slicing" -msgstr "" +msgstr ":pep:`357` - Permitir el uso de cualquier objeto para rebanar" #: ../Doc/whatsnew/2.5.rst:966 msgid "PEP written and implemented by Travis Oliphant." -msgstr "" +msgstr "PEP escrito e implementado por Travis Oliphant." #: ../Doc/whatsnew/2.5.rst:974 msgid "Other Language Changes" -msgstr "" +msgstr "Otros cambios lingüísticos" #: ../Doc/whatsnew/2.5.rst:976 msgid "" "Here are all of the changes that Python 2.5 makes to the core Python " "language." msgstr "" +"Estos son todos los cambios que Python 2.5 introduce en el núcleo del " +"lenguaje Python." #: ../Doc/whatsnew/2.5.rst:978 msgid "" @@ -1138,12 +1649,22 @@ msgid "" "`collections` module. The following example defines a dictionary that " "returns zero for any missing key::" msgstr "" +"El tipo :class:`dict` tiene un nuevo gancho para permitir que las subclases " +"proporcionen un valor por defecto cuando una clave no está contenida en el " +"diccionario. Cuando no se encuentre una clave, se llamará al método " +"``missing__(key)`` del diccionario. Este hook se utiliza para implementar " +"la nueva clase :class:`defaultdict` en el módulo :mod:`collections`. El " +"siguiente ejemplo define un diccionario que devuelve cero para cualquier " +"clave que falte::" #: ../Doc/whatsnew/2.5.rst:993 msgid "" "Both 8-bit and Unicode strings have new ``partition(sep)`` and " "``rpartition(sep)`` methods that simplify a common use case." msgstr "" +"Tanto las cadenas de 8 bits como las de Unicode tienen nuevos métodos " +"``partition(sep)`` y ``rpartition(sep)`` que simplifican un caso de uso " +"común." #: ../Doc/whatsnew/2.5.rst:996 msgid "" @@ -1157,25 +1678,37 @@ msgid "" "tuple but starts searching from the end of the string; the ``r`` stands for " "'reverse'." msgstr "" +"El método ``find(S)`` se utiliza a menudo para obtener un índice que luego " +"se utiliza para cortar la cadena y obtener las piezas que están antes y " +"después del separador. El método ``partition(sep)`` condensa este patrón en " +"una sola llamada al método que devuelve una tripleta que contiene la " +"subcadena antes del separador, el propio separador y la subcadena después " +"del separador. Si no se encuentra el separador, el primer elemento de la " +"tupla es la cadena completa y los otros dos elementos están vacíos. " +"``rpartition(sep)`` también devuelve una tupla de 3 elementos, pero empieza " +"a buscar desde el final de la cadena; la ``r`` significa \"al revés\"." #: ../Doc/whatsnew/2.5.rst:1005 msgid "Some examples::" -msgstr "" +msgstr "Algunos ejemplos::" #: ../Doc/whatsnew/2.5.rst:1018 msgid "" "(Implemented by Fredrik Lundh following a suggestion by Raymond Hettinger.)" msgstr "" +"(Implementado por Fredrik Lundh tras una sugerencia de Raymond Hettinger)" #: ../Doc/whatsnew/2.5.rst:1020 msgid "" "The :meth:`startswith` and :meth:`endswith` methods of string types now " "accept tuples of strings to check for. ::" msgstr "" +"Los métodos :meth:`startswith` y :meth:`endswith` de los tipos de cadena " +"aceptan ahora tuplas de cadenas para su comprobación. ::" #: ../Doc/whatsnew/2.5.rst:1026 msgid "(Implemented by Georg Brandl following a suggestion by Tom Lynn.)" -msgstr "" +msgstr "(Implementado por Georg Brandl tras una sugerencia de Tom Lynn)" #: ../Doc/whatsnew/2.5.rst:1030 msgid "" @@ -1186,10 +1719,16 @@ msgid "" "with the smallest/largest return value from this function. For example, to " "find the longest string in a list, you can do::" msgstr "" +"Las funciones incorporadas :func:`min` y :func:`max` han ganado un parámetro " +"de palabra clave ``key`` análogo al argumento ``key`` de :meth:`sort`. Este " +"parámetro proporciona una función que toma un único argumento y es llamada " +"para cada valor de la lista; :func:`min`/:func:`max` devolverá el elemento " +"con el valor de retorno más pequeño/más grande de esta función. Por ejemplo, " +"para encontrar la cadena más larga de una lista, puede hacer::" #: ../Doc/whatsnew/2.5.rst:1043 msgid "(Contributed by Steven Bethard and Raymond Hettinger.)" -msgstr "" +msgstr "(Contribución de Steven Bethard y Raymond Hettinger)" #: ../Doc/whatsnew/2.5.rst:1045 msgid "" @@ -1200,6 +1739,12 @@ msgid "" "values returned by the iterator evaluate as true. (Suggested by Guido van " "Rossum, and implemented by Raymond Hettinger.)" msgstr "" +"Dos nuevas funciones incorporadas, :func:`any` y :func:`all`, evalúan si un " +"iterador contiene algún valor verdadero o falso. :func:`any` devuelve :const:" +"`True` si cualquier valor devuelto por el iterador es verdadero; en caso " +"contrario devolverá :const:`False`. :func:`all` devuelve :const:`True` sólo " +"si todos los valores devueltos por el iterador se evalúan como verdaderos. " +"(Sugerido por Guido van Rossum, e implementado por Raymond Hettinger)" #: ../Doc/whatsnew/2.5.rst:1052 msgid "" @@ -1210,6 +1755,13 @@ msgid "" "return non-negative numbers, and users often seem to use ``id(self)`` in :" "meth:`__hash__` methods (though this is discouraged)." msgstr "" +"El resultado del método :meth:`__hash__` de una clase puede ser ahora un " +"entero largo o un entero normal. Si se devuelve un entero largo, se toma el " +"hash de ese valor. En versiones anteriores se requería que el valor del " +"hash fuera un entero regular, pero en 2.5 el built-in :func:`id` se cambió " +"para devolver siempre números no negativos, y los usuarios parecen utilizar " +"a menudo ``id(self)`` en los métodos :meth:`__hash__` (aunque esto se " +"desaconseja)." #: ../Doc/whatsnew/2.5.rst:1061 msgid "" @@ -1219,6 +1771,12 @@ msgid "" "error. See :pep:`263` for how to declare a module's encoding; for example, " "you might add a line like this near the top of the source file::" msgstr "" +"ASCII es ahora la codificación por defecto para los módulos. Ahora es un " +"error de sintaxis si un módulo contiene literales de cadena con caracteres " +"de 8 bits pero no tiene una declaración de codificación. En Python 2.4 esto " +"provocaba una advertencia, no un error de sintaxis. Vea en :pep:`263` cómo " +"declarar la codificación de un módulo; por ejemplo, puede añadir una línea " +"como ésta cerca de la parte superior del fichero fuente::" #: ../Doc/whatsnew/2.5.rst:1069 msgid "" @@ -1227,6 +1785,10 @@ msgid "" "Unicode using the default ASCII encoding. The result of the comparison is " "false::" msgstr "" +"Una nueva advertencia, :class:`UnicodeWarning`, se activa cuando se intenta " +"comparar una cadena Unicode y una cadena de 8 bits que no se puede convertir " +"a Unicode utilizando la codificación ASCII por defecto. El resultado de la " +"comparación es falso::" #: ../Doc/whatsnew/2.5.rst:1081 msgid "" @@ -1237,6 +1799,13 @@ msgid "" "resulted in this exception being raised instead of suppressed by the code " "in :file:`dictobject.c` that implements dictionaries." msgstr "" +"Anteriormente, esto lanzaba una excepción :class:`UnicodeDecodeError`, pero " +"en 2.5 esto podía dar lugar a problemas desconcertantes al acceder a un " +"diccionario. Si se buscaba ``unichr(128)`` y se utilizaba ``chr(128)`` como " +"clave, se producía una excepción :class:`UnicodeDecodeError`. Otros cambios " +"en la versión 2.5 hicieron que esta excepción se lanzara en lugar de ser " +"suprimida por el código de :file:`dictobject.c` que implementa los " +"diccionarios." #: ../Doc/whatsnew/2.5.rst:1088 msgid "" @@ -1244,10 +1813,13 @@ msgid "" "change might have broken code, so instead :class:`UnicodeWarning` was " "introduced." msgstr "" +"Lanzar una excepción para tal comparación es estrictamente correcto, pero el " +"cambio podría haber roto el código, así que en su lugar se introdujo :class:" +"`UnicodeWarning`." #: ../Doc/whatsnew/2.5.rst:1091 msgid "(Implemented by Marc-André Lemburg.)" -msgstr "" +msgstr "(Implementado por Marc-André Lemburg.)" #: ../Doc/whatsnew/2.5.rst:1093 msgid "" @@ -1261,20 +1833,32 @@ msgid "" "running the Python executable to display the warning message. (Implemented " "by Thomas Wouters.)" msgstr "" +"Un error que a veces cometen los programadores de Python es olvidarse de " +"incluir un módulo :file:`__init__.py` en el directorio de un paquete. " +"Depurar este error puede ser confuso, y normalmente requiere ejecutar Python " +"con el modificador :option:`-v` para registrar todas las rutas buscadas. En " +"Python 2.5, una nueva advertencia :exc:`ImportWarning` se activa cuando una " +"importación habría recogido un directorio como paquete pero no se encontró " +"ningún :file:`__init__.py`. Esta advertencia se ignora silenciosamente por " +"defecto; proporcione la opción :option:`-Wd <-W>` cuando ejecute el " +"ejecutable de Python para mostrar el mensaje de advertencia. (Implementado " +"por Thomas Wouters)" #: ../Doc/whatsnew/2.5.rst:1102 msgid "" "The list of base classes in a class definition can now be empty. As an " "example, this is now legal::" msgstr "" +"La lista de clases base en una definición de clase ahora puede estar " +"vacía. Como ejemplo, esto es ahora legal::" #: ../Doc/whatsnew/2.5.rst:1108 msgid "(Implemented by Brett Cannon.)" -msgstr "" +msgstr "(Implementado por Brett Cannon.)" #: ../Doc/whatsnew/2.5.rst:1116 msgid "Interactive Interpreter Changes" -msgstr "" +msgstr "Cambios en el intérprete interactivo" #: ../Doc/whatsnew/2.5.rst:1118 msgid "" @@ -1282,6 +1866,9 @@ msgid "" "strings so that new users get a somewhat helpful message when they try to " "quit::" msgstr "" +"En el intérprete interactivo, ``quit`` y ``exit`` han sido durante mucho " +"tiempo cadenas para que los nuevos usuarios obtengan un mensaje algo útil " +"cuando intenten salir::" #: ../Doc/whatsnew/2.5.rst:1124 msgid "" @@ -1290,6 +1877,10 @@ msgid "" "``quit()`` or ``exit()`` will now exit the interpreter as they expect. " "(Implemented by Georg Brandl.)" msgstr "" +"En Python 2.5, ``quit`` y ``exit`` son ahora objetos que siguen produciendo " +"representaciones de cadena de sí mismos, pero también son invocables. Los " +"novatos que prueben ``quit()`` o ``exit()`` ahora saldrán del intérprete " +"como se espera. (Implementado por Georg Brandl.)" #: ../Doc/whatsnew/2.5.rst:1129 msgid "" @@ -1297,10 +1888,13 @@ msgid "" "help` and :option:`--version`; on Windows, it also accepts the :option:`/? " "<-?>` option for displaying a help message. (Implemented by Georg Brandl.)" msgstr "" +"El ejecutable de Python ahora acepta las opciones largas estándar :option:`--" +"help` y :option:`--version`; en Windows, también acepta la opción :option:" +"`/? <-?>` para mostrar un mensaje de ayuda. (Implementado por Georg Brandl)" #: ../Doc/whatsnew/2.5.rst:1139 msgid "Optimizations" -msgstr "" +msgstr "Optimizaciones" #: ../Doc/whatsnew/2.5.rst:1141 msgid "" @@ -1310,6 +1904,12 @@ msgid "" "LLC with local support from CCP Games. Those optimizations added at this " "sprint are specially marked in the following list." msgstr "" +"Varias de las optimizaciones se desarrollaron en el sprint NeedForSpeed, un " +"evento celebrado en Reikiavik, Islandia, del 21 al 28 de mayo de 2006. El " +"sprint se centró en las mejoras de velocidad de la implementación de CPython " +"y fue financiado por EWT LLC con el apoyo local de CCP Games. Las " +"optimizaciones añadidas en este sprint están especialmente marcadas en la " +"siguiente lista." #: ../Doc/whatsnew/2.5.rst:1147 msgid "" @@ -1319,6 +1919,11 @@ msgid "" "and as a result sets will use a third less memory and are somewhat faster. " "(Implemented by Raymond Hettinger.)" msgstr "" +"Cuando se introdujeron en Python 2.4, los tipos incorporados :class:`set` y :" +"class:`frozenset` se construyeron sobre el tipo diccionario de Python. En " +"2.5 la estructura de datos interna se ha personalizado para implementar " +"conjuntos, y como resultado los conjuntos utilizarán un tercio menos de " +"memoria y son algo más rápidos. (Implementado por Raymond Hettinger)" #: ../Doc/whatsnew/2.5.rst:1153 msgid "" @@ -1328,6 +1933,12 @@ msgid "" "Andrew Dalke at the NeedForSpeed sprint. Character maps were improved by " "Walter Dörwald and Martin von Löwis.)" msgstr "" +"Se ha mejorado la velocidad de algunas operaciones Unicode, como la búsqueda " +"de subcadenas, la división de cadenas y la codificación y decodificación de " +"mapas de caracteres. (Las mejoras en la búsqueda de subcadenas y la división " +"fueron añadidas por Fredrik Lundh y Andrew Dalke en el sprint NeedForSpeed. " +"Los mapas de caracteres fueron mejorados por Walter Dörwald y Martin von " +"Löwis)" #: ../Doc/whatsnew/2.5.rst:1161 msgid "" @@ -1336,6 +1947,10 @@ msgid "" "around 800--1000 digits where the function is 6 times faster. (Contributed " "by Alan McIntyre and committed at the NeedForSpeed sprint.)" msgstr "" +"La función ``long(str, base)`` es ahora más rápida en cadenas de dígitos " +"largos porque se calculan menos resultados intermedios. El máximo es para " +"cadenas de alrededor de 800-1000 dígitos, donde la función es 6 veces más " +"rápida. (Aportado por Alan McIntyre y comprometido en el sprint NeedForSpeed)" #: ../Doc/whatsnew/2.5.rst:1168 msgid "" @@ -1347,22 +1962,35 @@ msgid "" "methods will now trigger a :exc:`ValueError` from the :meth:`read\\*` " "method. (Implemented by Thomas Wouters.)" msgstr "" +"Ahora es ilegal mezclar la iteración sobre un fichero con ``for line in " +"file`` y llamar a los métodos :meth:`read`/:meth:`readline`/:meth:" +"`readlines` del objeto fichero. La iteración utiliza un buffer interno y " +"los métodos :meth:`read\\*` no utilizan ese buffer. En su lugar, " +"devolverán los datos que siguen al buffer, haciendo que los datos aparezcan " +"desordenados. Mezclar la iteración y estos métodos provocará ahora un :exc:" +"`ValueError` del método :meth:`read\\*`. (Implementado por Thomas Wouters)" -#: ../Doc/whatsnew/2.5.rst:1178 -#, python-format +#: ../Doc/whatsnew/2.5.rst:1178, python-format msgid "" "The :mod:`struct` module now compiles structure format strings into an " -"internal representation and caches this representation, yielding a " -"20% speedup. (Contributed by Bob Ippolito at the NeedForSpeed sprint.)" +"internal representation and caches this representation, yielding a 20% " +"speedup. (Contributed by Bob Ippolito at the NeedForSpeed sprint.)" msgstr "" +"El módulo :mod:`struct` ahora compila cadenas de formato de estructura en " +"una representación interna y almacena en caché esta representación, lo que " +"supone una mejora del 20% s. (Contribuido por Bob Ippolito en el sprint " +"NeedForSpeed)" -#: ../Doc/whatsnew/2.5.rst:1182 -#, python-format +#: ../Doc/whatsnew/2.5.rst:1182, python-format msgid "" "The :mod:`re` module got a 1 or 2% speedup by switching to Python's " "allocator functions instead of the system's :c:func:`malloc` and :c:func:" "`free`. (Contributed by Jack Diederich at the NeedForSpeed sprint.)" msgstr "" +"El módulo :mod:`re` obtuvo un 1 o 2% s de velocidad al cambiar a las " +"funciones asignadoras de Python en lugar de las :c:func:`malloc` y :c:func:" +"`free` del sistema. (Contribuido por Jack Diederich en el sprint " +"NeedForSpeed)" #: ../Doc/whatsnew/2.5.rst:1186 msgid "" @@ -1371,6 +1999,11 @@ msgid "" "will do the arithmetic and produce code corresponding to ``a = 5``. " "(Proposed and implemented by Raymond Hettinger.)" msgstr "" +"El optimizador de la mirilla del generador de código realiza ahora un simple " +"plegado de constantes en las expresiones. Si escribes algo como ``a = " +"2+3``, el generador de código hará la aritmética y producirá el código " +"correspondiente a ``a = 5``. (Propuesto e implementado por Raymond " +"Hettinger)" #: ../Doc/whatsnew/2.5.rst:1191 msgid "" @@ -1382,15 +2015,27 @@ msgid "" "may improve cache locality and reduce memory usage a bit. (Contributed by " "Neal Norwitz.)" msgstr "" +"Las llamadas a funciones son ahora más rápidas porque los objetos de código " +"guardan ahora el último fotograma terminado (un \"fotograma zombi\") en un " +"campo interno del objeto de código, reutilizándolo la próxima vez que se " +"invoque el objeto de código. (Parche original de Michael Hudson, modificado " +"por Armin Rigo y Richard Jones; confirmado en el sprint NeedForSpeed) Los " +"objetos marco son también ligeramente más pequeños, lo que puede mejorar la " +"localidad de la caché y reducir un poco el uso de la memoria. (Contribución " +"de Neal Norwitz)" -#: ../Doc/whatsnew/2.5.rst:1201 -#, python-format +#: ../Doc/whatsnew/2.5.rst:1201, python-format msgid "" "Python's built-in exceptions are now new-style classes, a change that speeds " "up instantiation considerably. Exception handling in Python 2.5 is " "therefore about 30% faster than in 2.4. (Contributed by Richard Jones, Georg " "Brandl and Sean Reifschneider at the NeedForSpeed sprint.)" msgstr "" +"Las excepciones incorporadas en Python son ahora clases de nuevo estilo, un " +"cambio que acelera considerablemente la instanciación. El manejo de " +"excepciones en Python 2.5 es, por tanto, un 30% f más rápido que en 2.4. " +"(Contribución de Richard Jones, Georg Brandl y Sean Reifschneider en el " +"sprint NeedForSpeed)" #: ../Doc/whatsnew/2.5.rst:1206 msgid "" @@ -1398,10 +2043,13 @@ msgid "" "so that the interpreter makes fewer :c:func:`open` and :c:func:`stat` calls " "on startup. (Contributed by Martin von Löwis and Georg Brandl.)" msgstr "" +"La importación ahora almacena en caché las rutas intentadas, registrando si " +"existen o no para que el intérprete haga menos llamadas a :c:func:`open` y :" +"c:func:`stat` al iniciar. (Contribución de Martin von Löwis y Georg Brandl)" #: ../Doc/whatsnew/2.5.rst:1218 msgid "New, Improved, and Removed Modules" -msgstr "" +msgstr "Módulos nuevos, mejorados y eliminados" #: ../Doc/whatsnew/2.5.rst:1220 msgid "" @@ -1411,12 +2059,21 @@ msgid "" "more complete list of changes, or look through the SVN logs for all the " "details." msgstr "" +"La biblioteca estándar ha recibido muchas mejoras y correcciones de errores " +"en Python 2.5. Aquí hay una lista parcial de los cambios más notables, " +"ordenados alfabéticamente por el nombre del módulo. Consulte el archivo :" +"file:`Misc/NEWS` en el árbol de fuentes para obtener una lista más completa " +"de los cambios, o busque en los registros de SVN para obtener todos los " +"detalles." #: ../Doc/whatsnew/2.5.rst:1225 msgid "" "The :mod:`audioop` module now supports the a-LAW encoding, and the code for " "u-LAW encoding has been improved. (Contributed by Lars Immisch.)" msgstr "" +"El módulo :mod:`audioop` soporta ahora la codificación a-LAW, y se ha " +"mejorado el código para la codificación u-LAW. (Contribución de Lars " +"Immisch)" #: ../Doc/whatsnew/2.5.rst:1228 msgid "" @@ -1431,6 +2088,17 @@ msgid "" "module documentation for details. (Designed and implemented by Walter " "Dörwald.)" msgstr "" +"El módulo :mod:`codecs` ha ganado soporte para códecs incrementales. La " +"función :func:`codec.lookup` devuelve ahora una instancia de :class:" +"`CodecInfo` en lugar de una tupla. Las instancias de :class:`CodecInfo` se " +"comportan como una cuádruple tupla para preservar la compatibilidad con " +"versiones anteriores, pero también tienen los atributos :attr:`encode`, :" +"attr:`decode`, :attr:`incrementalencoder`, :attr:`incrementaldecoder`, :attr:" +"`streamwriter` y :attr:`streamreader`. Los códecs incrementales pueden " +"recibir la entrada y producir la salida en varios trozos; la salida es la " +"misma que si la entrada completa fuera alimentada por el códec no " +"incremental. Consulte la documentación del módulo :mod:`codecs` para más " +"detalles. (Diseñado e implementado por Walter Dörwald)" #: ../Doc/whatsnew/2.5.rst:1240 msgid "" @@ -1439,6 +2107,11 @@ msgid "" "like a dictionary but constructs a default value when a key isn't present, " "automatically adding it to the dictionary for the requested key value." msgstr "" +"El módulo :mod:`collections` ha ganado un nuevo tipo, :class:`defaultdict`, " +"que subclasifica el tipo estándar :class:`dict`. El nuevo tipo se comporta " +"principalmente como un diccionario pero construye un valor por defecto " +"cuando una clave no está presente, añadiéndolo automáticamente al " +"diccionario para el valor de la clave solicitada." #: ../Doc/whatsnew/2.5.rst:1245 msgid "" @@ -1448,14 +2121,20 @@ msgid "" "constructors such as :func:`list` or :func:`int`. For example, you can " "make an index of words based on their initial letter like this::" msgstr "" +"El primer argumento del constructor de :class:`defaultdict` es una función " +"de fábrica que se llama cada vez que se solicita una clave pero no se " +"encuentra. Esta función de fábrica no recibe argumentos, por lo que puede " +"utilizar constructores de tipo incorporado como :func:`list` o :func:`int`. " +"Por ejemplo, puedes hacer un índice de palabras basado en su letra inicial " +"así::" #: ../Doc/whatsnew/2.5.rst:1261 msgid "Printing ``index`` results in the following output::" -msgstr "" +msgstr "Al imprimir ``index`` se obtiene la siguiente salida::" #: ../Doc/whatsnew/2.5.rst:1269 msgid "(Contributed by Guido van Rossum.)" -msgstr "" +msgstr "(Contribución de Guido van Rossum.)" #: ../Doc/whatsnew/2.5.rst:1271 msgid "" @@ -1464,6 +2143,10 @@ msgid "" "first occurrence of *value* in the queue, raising :exc:`ValueError` if the " "value isn't found. (Contributed by Raymond Hettinger.)" msgstr "" +"El tipo de cola doble :class:`deque` suministrado por el módulo :mod:" +"`collections` tiene ahora un método ``remove(value)`` que elimina la primera " +"aparición de *value* en la cola, lanzando :exc:`ValueError` si no se " +"encuentra el valor. (Contribución de Raymond Hettinger)" #: ../Doc/whatsnew/2.5.rst:1276 msgid "" @@ -1471,6 +2154,9 @@ msgid "" "with the new ':keyword:`with`' statement. See section :ref:`contextlibmod` " "for more about this module." msgstr "" +"Nuevo módulo: El módulo :mod:`contextlib` contiene funciones de ayuda para " +"usar con la nueva sentencia ':keyword:`with`'. Consulte la sección :ref:" +"`contextlibmod` para obtener más información sobre este módulo." #: ../Doc/whatsnew/2.5.rst:1280 msgid "" @@ -1482,6 +2168,14 @@ msgid "" "the :mod:`profile` module's interface, will continue to be maintained in " "future versions of Python. (Contributed by Armin Rigo.)" msgstr "" +"Nuevo módulo: El módulo :mod:`cProfile` es una implementación en C del " +"módulo existente :mod:`profile` que tiene una sobrecarga mucho menor. La " +"interfaz del módulo es la misma que la de :mod:`profile`: se ejecuta " +"``cProfile.run('main()')`` para perfilar una función, se pueden guardar los " +"datos del perfil en un archivo, etc. Todavía no se sabe si el perfilador " +"Hotshot, que también está escrito en C pero no coincide con la interfaz del " +"módulo :mod:`profile`, seguirá manteniéndose en futuras versiones de " +"Python. (Contribución de Armin Rigo.)" #: ../Doc/whatsnew/2.5.rst:1288 msgid "" @@ -1490,6 +2184,10 @@ msgid "" "*stream* argument to the :class:`Stats` constructor. (Contributed by Skip " "Montanaro.)" msgstr "" +"Además, el módulo :mod:`pstats` para analizar los datos medidos por el " +"perfilador ahora soporta dirigir la salida a cualquier objeto archivo " +"suministrando un argumento *stream* al constructor :class:`Stats`. " +"(Contribución de Skip Montanaro)" #: ../Doc/whatsnew/2.5.rst:1292 msgid "" @@ -1502,6 +2200,15 @@ msgid "" "the source; records can span multiple physical lines, so :attr:`line_num` is " "not the same as the number of records read." msgstr "" +"El módulo :mod:`csv`, que analiza archivos en formato de valores separados " +"por comas, ha recibido varias mejoras y una serie de correcciones de " +"errores. Ahora se puede establecer el tamaño máximo en bytes de un campo " +"llamando a la función ``csv.field_size_limit(new_limit)``; si se omite el " +"argumento *new_limit* se devolverá el límite establecido actualmente. La " +"clase :class:`reader` tiene ahora un atributo :attr:`line_num` que cuenta el " +"número de líneas físicas leídas de la fuente; los registros pueden abarcar " +"varias líneas físicas, por lo que :attr:`line_num` no es lo mismo que el " +"número de registros leídos." #: ../Doc/whatsnew/2.5.rst:1301 msgid "" @@ -1514,10 +2221,19 @@ msgid "" "fields are important, the input should be split into lines in a manner that " "preserves the newline characters." msgstr "" +"El analizador CSV es ahora más estricto con los campos entrecomillados de " +"varias líneas. Anteriormente, si una línea terminaba dentro de un campo " +"entre comillas sin un carácter de nueva línea final, se insertaba una nueva " +"línea en el campo devuelto. Este comportamiento causaba problemas cuando se " +"leían archivos que contenían caracteres de retorno de carro dentro de los " +"campos, por lo que se cambió el código para devolver el campo sin insertar " +"nuevas líneas. Como consecuencia, si las nuevas líneas incrustadas dentro de " +"los campos son importantes, la entrada debe dividirse en líneas de manera " +"que se conserven los caracteres de nueva línea." #: ../Doc/whatsnew/2.5.rst:1309 msgid "(Contributed by Skip Montanaro and Andrew McNamara.)" -msgstr "" +msgstr "(Contribución de Skip Montanaro y Andrew McNamara)" #: ../Doc/whatsnew/2.5.rst:1311 msgid "" @@ -1526,6 +2242,10 @@ msgid "" "by Josh Spoerri. It uses the same format characters as :func:`time.strptime` " "and :func:`time.strftime`::" msgstr "" +"La clase :class:`~datetime.datetime` del módulo :mod:`datetime` tiene ahora " +"un método ``strptime(string, format)`` para analizar cadenas de fechas, " +"aportado por Josh Spoerri. Utiliza los mismos caracteres de formato que :" +"func:`time.strptime` y :func:`time.strftime`::" #: ../Doc/whatsnew/2.5.rst:1321 msgid "" @@ -1534,6 +2254,11 @@ msgid "" "subsequences. Previously, the algorithm would occasionally break a block of " "matching elements into two list entries. (Enhancement by Tim Peters.)" msgstr "" +"El método :meth:`SequenceMatcher.get_matching_blocks` del módulo :mod:" +"`difflib` garantiza ahora la devolución de una lista mínima de bloques que " +"describen subsecuencias coincidentes. Anteriormente, el algoritmo rompía " +"ocasionalmente un bloque de elementos coincidentes en dos entradas de la " +"lista. (Mejora realizada por Tim Peters)" #: ../Doc/whatsnew/2.5.rst:1326 msgid "" @@ -1541,6 +2266,10 @@ msgid "" "from being executed at all. This is intended for code snippets that are " "usage examples intended for the reader and aren't actually test cases." msgstr "" +"El módulo :mod:`doctest` ha ganado una opción ``SKIP`` que impide que un " +"ejemplo se ejecute en absoluto. Esto está pensado para los fragmentos de " +"código que son ejemplos de uso destinados al lector y que no son realmente " +"casos de prueba." #: ../Doc/whatsnew/2.5.rst:1330 msgid "" @@ -1549,12 +2278,18 @@ msgid "" "easier to use non-ASCII characters in tests contained within a docstring. " "(Contributed by Bjorn Tillenius.)" msgstr "" +"Se ha añadido un parámetro *encoding* a la función :func:`testfile` y a la " +"clase :class:`DocFileSuite` para especificar la codificación del archivo. " +"Esto facilita el uso de caracteres no ASCII en las pruebas contenidas en un " +"docstring. (Contribución de Bjorn Tillenius)" #: ../Doc/whatsnew/2.5.rst:1337 msgid "" "The :mod:`email` package has been updated to version 4.0. (Contributed by " "Barry Warsaw.)" msgstr "" +"El paquete :mod:`email` ha sido actualizado a la versión 4.0. (Contribución " +"de Barry Warsaw.)" #: ../Doc/whatsnew/2.5.rst:1345 msgid "" @@ -1567,6 +2302,15 @@ msgid "" "`fileno` returns the file descriptor for the currently opened file. " "(Contributed by Georg Brandl.)" msgstr "" +"El módulo :mod:`fileinput` se ha hecho más flexible. Ahora se soportan los " +"nombres de archivo Unicode, y se ha añadido un parámetro *mode* que por " +"defecto es ``\"r\"`` a la función :func:`input` para permitir la apertura de " +"archivos en modo binario o :term:`universal newlines`. Otro nuevo " +"parámetro, *openhook*, permite utilizar una función distinta de :func:`open` " +"para abrir los ficheros de entrada. Una vez que se itera sobre el conjunto " +"de archivos, el nuevo :meth:`fileno` del objeto :class:`FileInput` devuelve " +"el descriptor de archivo del archivo actualmente abierto. (Contribuido por " +"Georg Brandl.)" #: ../Doc/whatsnew/2.5.rst:1354 msgid "" @@ -1578,6 +2322,13 @@ msgid "" "*generation* argument of 0, 1, or 2 to specify which generation to collect. " "(Contributed by Barry Warsaw.)" msgstr "" +"En el módulo :mod:`gc`, la nueva función :func:`get_count` devuelve una 3-" +"tupla que contiene los recuentos de recolección actuales para las tres " +"generaciones de GC. Se trata de información contable para el recolector de " +"basura; cuando estos recuentos alcanzan un umbral especificado, se realiza " +"un barrido de recolección de basura. La función :func:`gc.collect` " +"existente ahora toma un argumento opcional *generación* de 0, 1 o 2 para " +"especificar qué generación recoger. (Contribución de Barry Warsaw)" #: ../Doc/whatsnew/2.5.rst:1361 msgid "" @@ -1586,10 +2337,14 @@ msgid "" "by the :func:`min`/:func:`max` functions and the :meth:`sort` methods. For " "example::" msgstr "" +"Las funciones :func:`nsmallest` y :func:`nlargest` del módulo :mod:`heapq` " +"soportan ahora un parámetro de palabra clave ``key`` similar al " +"proporcionado por las funciones :func:`min`/:func:`max` y los métodos :meth:" +"`sort`. Por ejemplo::" #: ../Doc/whatsnew/2.5.rst:1373 ../Doc/whatsnew/2.5.rst:1382 msgid "(Contributed by Raymond Hettinger.)" -msgstr "" +msgstr "(Contribución de Raymond Hettinger.)" #: ../Doc/whatsnew/2.5.rst:1375 msgid "" @@ -1597,15 +2352,19 @@ msgid "" "step arguments. This makes it more compatible with the attributes of slice " "objects, so that you can now write the following::" msgstr "" +"La función :func:`itertools.islice` ahora acepta ``None`` para los " +"argumentos de inicio y paso. Esto la hace más compatible con los atributos " +"de los objetos slice, por lo que ahora se puede escribir lo siguiente::" #: ../Doc/whatsnew/2.5.rst:1384 msgid "" "The :func:`format` function in the :mod:`locale` module has been modified " "and two new functions were added, :func:`format_string` and :func:`currency`." msgstr "" +"Se ha modificado la función :func:`format` del módulo :mod:`locale` y se han " +"añadido dos nuevas funciones, :func:`format_string` y :func:`currency`." -#: ../Doc/whatsnew/2.5.rst:1387 -#, python-format +#: ../Doc/whatsnew/2.5.rst:1387, python-format msgid "" "The :func:`format` function's *val* parameter could previously be a string " "as long as no more than one %char specifier appeared; now the parameter must " @@ -1614,24 +2373,34 @@ msgid "" "locale's rules for formatting currency in placing a separator between groups " "of three digits." msgstr "" +"El parámetro *val* de la función :func:`format` podía ser antes una cadena " +"siempre que no apareciera más de un especificador %char; ahora el parámetro " +"debe ser exactamente un especificador %char sin texto alrededor. También se " +"ha añadido un parámetro opcional *monetario* que, si es ``Verdadero``, " +"utilizará las reglas de la configuración regional para formatear la moneda " +"al colocar un separador entre grupos de tres dígitos." -#: ../Doc/whatsnew/2.5.rst:1393 -#, python-format +#: ../Doc/whatsnew/2.5.rst:1393, python-format msgid "" "To format strings with multiple %char specifiers, use the new :func:" "`format_string` function that works like :func:`format` but also supports " "mixing %char specifiers with arbitrary text." msgstr "" +"Para formatear cadenas con múltiples especificadores %char, utilice la nueva " +"función :func:`format_string` que funciona como :func:`format` pero que " +"también permite mezclar especificadores %char con texto arbitrario." #: ../Doc/whatsnew/2.5.rst:1397 msgid "" "A new :func:`currency` function was also added that formats a number " "according to the current locale's settings." msgstr "" +"También se ha añadido una nueva función :func:`currency` que formatea un " +"número de acuerdo con la configuración local actual." #: ../Doc/whatsnew/2.5.rst:1400 msgid "(Contributed by Georg Brandl.)" -msgstr "" +msgstr "(Contribución de Georg Brandl.)" #: ../Doc/whatsnew/2.5.rst:1404 msgid "" @@ -1643,12 +2412,21 @@ msgid "" "unlock the mailbox. The following example converts a maildir-format mailbox " "into an mbox-format one::" msgstr "" +"El módulo :mod:`mailbox` ha sido reestructurado de forma masiva para añadir " +"la capacidad de modificar los buzones además de leerlos. Un nuevo conjunto " +"de clases que incluyen :class:`mbox`, :class:`MH`, y :class:`Maildir` se " +"utilizan para leer buzones, y tienen un método ``add(message)`` para añadir " +"mensajes, ``remove(key)`` para eliminar mensajes, y :meth:`lock`/:meth:" +"`unlock` para bloquear/desbloquear el buzón. El siguiente ejemplo convierte " +"un buzón con formato maildir en uno con formato mbox::" #: ../Doc/whatsnew/2.5.rst:1422 msgid "" "(Contributed by Gregory K. Johnson. Funding was provided by Google's 2005 " "Summer of Code.)" msgstr "" +"(Contribución de Gregory K. Johnson. La financiación fue proporcionada por " +"el Summer of Code 2005 de Google)" #: ../Doc/whatsnew/2.5.rst:1425 msgid "" @@ -1656,6 +2434,9 @@ msgid "" "file:`.msi` files and CAB files. Some support for reading the :file:`.msi` " "database is also included. (Contributed by Martin von Löwis.)" msgstr "" +"Nuevo módulo: el módulo :mod:`msilib` permite crear archivos :file:`.msi` de " +"Microsoft Installer y archivos CAB. También se incluye soporte para la " +"lectura de la base de datos :file:`.msi`. (Contribución de Martin von Löwis)" #: ../Doc/whatsnew/2.5.rst:1429 msgid "" @@ -1663,6 +2444,9 @@ msgid "" "default domain by supplying a *domain* argument to the :func:`nis.match` " "and :func:`nis.maps` functions. (Contributed by Ben Bell.)" msgstr "" +"El módulo :mod:`nis` soporta ahora el acceso a dominios distintos del " +"dominio por defecto del sistema proporcionando un argumento *dominio* a las " +"funciones :func:`nis.match` y :func:`nis.maps`. (Contribución de Ben Bell)" #: ../Doc/whatsnew/2.5.rst:1433 msgid "" @@ -1673,6 +2457,12 @@ msgid "" "method's ``key`` parameter lets you easily sort lists using multiple " "fields. (Contributed by Raymond Hettinger.)" msgstr "" +"Las funciones :mod:`operator` del módulo :func:`itemgetter` y :func:" +"`attrgetter` ahora soportan múltiples campos. Una llamada como ``operator." +"attrgetter('a', 'b')`` devolverá una función que recupera los atributos :" +"attr:`a` y :attr:`b`. La combinación de esta nueva función con el parámetro " +"``key`` del método :meth:`sort` permite ordenar fácilmente las listas " +"utilizando varios campos. (Contribución de Raymond Hettinger)" #: ../Doc/whatsnew/2.5.rst:1440 msgid "" @@ -1682,6 +2472,11 @@ msgid "" "method to break reference cycles created by the object. (Contributed by Greg " "Ward.)" msgstr "" +"El módulo :mod:`optparse` se ha actualizado a la versión 1.5.1 de la " +"biblioteca Optik. La clase :class:`OptionParser` obtuvo un atributo :attr:" +"`epilog`, una cadena que se imprimirá después del mensaje de ayuda, y un " +"método :meth:`destroy` para romper los ciclos de referencia creados por el " +"objeto. (Contribuido por Greg Ward.)" #: ../Doc/whatsnew/2.5.rst:1445 msgid "" @@ -1691,6 +2486,12 @@ msgid "" "that :func:`os.stat` will return times that are precise to fractions of a " "second; not all systems support such precision.)" msgstr "" +"El módulo :mod:`os` ha sufrido varios cambios. La variable :attr:" +"`stat_float_times` ahora está predeterminada a true, lo que significa que :" +"func:`os.stat` ahora devolverá los valores de tiempo como flotantes. (Esto " +"no significa necesariamente que :func:`os.stat` devolverá tiempos con una " +"precisión de fracciones de segundo; no todos los sistemas soportan dicha " +"precisión)" #: ../Doc/whatsnew/2.5.rst:1451 msgid "" @@ -1699,6 +2500,10 @@ msgid "" "function. Two new constants for locking are :attr:`os.O_SHLOCK` and :attr:" "`os.O_EXLOCK`." msgstr "" +"Se han añadido las constantes :attr:`os.SEEK_SET`, :attr:`os.SEEK_CUR` y :" +"attr:`os.SEEK_END`, que son los parámetros de la función :func:`os.lseek`. " +"Dos nuevas constantes para el bloqueo son :attr:`os.O_SHLOCK` y :attr:`os." +"O_EXLOCK`." #: ../Doc/whatsnew/2.5.rst:1456 msgid "" @@ -1711,6 +2516,15 @@ msgid "" "the :func:`resource.getrusage` function. ``wait4(pid)`` does take a process " "ID. (Contributed by Chad J. Schroeder.)" msgstr "" +"Se han añadido dos nuevas funciones, :func:`wait3` y :func:`wait4`. Son " +"similares a la función :func:`waitpid` que espera la salida de un proceso " +"hijo y devuelve una tupla con el ID del proceso y su estado de salida, pero :" +"func:`wait3` y :func:`wait4` devuelven información adicional. :func:`wait3` " +"no toma un ID de proceso como entrada, por lo que espera a que cualquier " +"proceso hijo salga y devuelve una tupla de *id de proceso*, *estado de " +"salida*, *uso de recursos* tal y como se devuelve desde la función :func:" +"`resource.getrusage`. ``wait4(pid)`` toma un ID de proceso. (Contribuido por " +"Chad J. Schroeder.)" #: ../Doc/whatsnew/2.5.rst:1465 msgid "" @@ -1719,6 +2533,10 @@ msgid "" "`st_birthtime`. The :attr:`st_flags` attribute is also available, if the " "platform supports it. (Contributed by Antti Louko and Diego Pettenò.)" msgstr "" +"En FreeBSD, la función :func:`os.stat` devuelve ahora tiempos con resolución " +"de nanosegundos, y el objeto devuelto tiene ahora :attr:`st_gen` y :attr:" +"`st_birthtime`. El atributo :attr:`st_flags` también está disponible, si la " +"plataforma lo soporta. (Contribución de Antti Louko y Diego Pettenò)" #: ../Doc/whatsnew/2.5.rst:1472 msgid "" @@ -1729,6 +2547,13 @@ msgid "" "can include commands that resume execution, such as ``continue`` or " "``next``. (Contributed by Grégoire Dooms.)" msgstr "" +"El depurador de Python proporcionado por el módulo :mod:`pdb` puede ahora " +"almacenar listas de comandos a ejecutar cuando se alcanza un punto de " +"ruptura y se detiene la ejecución. Una vez creado el punto de interrupción " +"nº 1, introduzca ``comandos 1`` e introduzca una serie de comandos a " +"ejecutar, terminando la lista con ``end``. La lista de comandos puede " +"incluir comandos que reanuden la ejecución, como ``continue`` o ``next``. " +"(Contribución de Grégoire Dooms.)" #: ../Doc/whatsnew/2.5.rst:1481 msgid "" @@ -1737,6 +2562,10 @@ msgid "" "tuple of arguments instead. The ability to return ``None`` was deprecated " "in Python 2.4, so this completes the removal of the feature." msgstr "" +"Los módulos :mod:`pickle` y :mod:`cPickle` ya no aceptan un valor de retorno " +"de ``None`` del método :meth:`__reduce__`; el método debe devolver una tupla " +"de argumentos. La capacidad de devolver ``None`` fue obsoleta en Python " +"2.4, así que esto completa la eliminación de la función." #: ../Doc/whatsnew/2.5.rst:1486 msgid "" @@ -1745,6 +2574,10 @@ msgid "" "works for packages stored in ZIP-format archives. (Contributed by Phillip J. " "Eby.)" msgstr "" +"El módulo :mod:`pkgutil`, que contiene varias funciones de utilidad para " +"encontrar paquetes, fue mejorado para soportar los ganchos de importación " +"de :pep:`302` y ahora también funciona para paquetes almacenados en archivos " +"con formato ZIP. (Contribución de Phillip J. Eby)" #: ../Doc/whatsnew/2.5.rst:1490 msgid "" @@ -1756,12 +2589,22 @@ msgid "" "numeric operations, instead of performing many different operations and " "reducing the result to a single number as :file:`pystone.py` does." msgstr "" +"El conjunto de pruebas pybench de Marc-André Lemburg se incluye ahora en el " +"directorio :file:`Tools/pybench`. El conjunto de pruebas pybench es una " +"mejora del programa :file:`pystone.py` de uso común, ya que pybench " +"proporciona una medición más detallada de la velocidad del intérprete. " +"Calcula el tiempo de determinadas operaciones como las llamadas a funciones, " +"el corte de tuplas, las búsquedas de métodos y las operaciones numéricas, en " +"lugar de realizar muchas operaciones diferentes y reducir el resultado a un " +"único número como hace :file:`pystone.py`." #: ../Doc/whatsnew/2.5.rst:1498 msgid "" "The :mod:`pyexpat` module now uses version 2.0 of the Expat parser. " "(Contributed by Trent Mick.)" msgstr "" +"El módulo :mod:`pyexpat` utiliza ahora la versión 2.0 del analizador " +"sintáctico Expat. (Contribución de Trent Mick)" #: ../Doc/whatsnew/2.5.rst:1501 msgid "" @@ -1772,6 +2615,12 @@ msgid "" "processing for an item has been completed. (Contributed by Raymond " "Hettinger.)" msgstr "" +"La clase :class:`~queue.Queue` proporcionada por el módulo :mod:`Queue` ha " +"ganado dos nuevos métodos. :meth:`join` bloquea hasta que todos los " +"elementos de la cola han sido recuperados y todo el trabajo de procesamiento " +"de los elementos ha sido completado. Los hilos de trabajo llaman al otro " +"método nuevo, :meth:`task_done`, para indicar que el procesamiento de un " +"elemento ha finalizado. (Contribución de Raymond Hettinger)" #: ../Doc/whatsnew/2.5.rst:1507 msgid "" @@ -1779,6 +2628,9 @@ msgid "" "ever since Python 2.0, have finally been deleted. Other deleted modules: :" "mod:`statcache`, :mod:`tzparse`, :mod:`whrandom`." msgstr "" +"Los antiguos módulos :mod:`regex` y :mod:`regsub`, obsoletos desde Python " +"2.0, han sido finalmente eliminados. Otros módulos eliminados: :mod:" +"`statcache`, :mod:`tzparse`, :mod:`whrandom`." #: ../Doc/whatsnew/2.5.rst:1511 msgid "" @@ -1787,6 +2639,11 @@ msgid "" "the default ``sys.path``, so unless your programs explicitly added the " "directory to ``sys.path``, this removal shouldn't affect your code." msgstr "" +"También se ha eliminado el directorio :file:`lib-old`, que incluye módulos " +"antiguos como :mod:`dircmp` y :mod:`ni`. :file:`lib-old` no estaba en el " +"directorio por defecto ``sys.path``, así que a menos que tus programas " +"añadan explícitamente el directorio a ``sys.path``, esta eliminación no " +"debería afectar a tu código." #: ../Doc/whatsnew/2.5.rst:1516 msgid "" @@ -1794,6 +2651,9 @@ msgid "" "`readline` module and therefore now works on non-Unix platforms. (Patch from " "Robert Kiendl.)" msgstr "" +"El módulo :mod:`rlcompleter` ya no depende de la importación del módulo :mod:" +"`readline` y, por lo tanto, ahora funciona en plataformas no Unix. (Parche " +"de Robert Kiendl.)" #: ../Doc/whatsnew/2.5.rst:1522 msgid "" @@ -1803,6 +2663,11 @@ msgid "" "RPC2'``. Setting :attr:`rpc_paths` to ``None`` or an empty tuple disables " "this path checking." msgstr "" +"Las clases :mod:`SimpleXMLRPCServer` y :mod:`DocXMLRPCServer` tienen ahora " +"un atributo :attr:`rpc_paths` que restringe las operaciones XML-RPC a un " +"conjunto limitado de rutas URL; por defecto sólo se permiten ``'/'`` y ``'/" +"RPC2'``. Establecer :attr:`rpc_paths` como ``None`` o una tupla vacía " +"desactiva esta comprobación de rutas." #: ../Doc/whatsnew/2.5.rst:1529 msgid "" @@ -1813,6 +2678,13 @@ msgid "" "linuxjournal.com/article/7356. In Python code, netlink addresses are " "represented as a tuple of 2 integers, ``(pid, group_mask)``." msgstr "" +"El módulo :mod:`socket` ahora soporta sockets :const:`AF_NETLINK` en Linux, " +"gracias a un parche de Philippe Biondi. Los sockets Netlink son un " +"mecanismo específico de Linux para las comunicaciones entre un proceso en el " +"espacio del usuario y el código del kernel; hay un artículo introductorio " +"sobre ellos en https://www.linuxjournal.com/article/7356. En el código " +"Python, las direcciones de netlink se representan como una tupla de 2 " +"enteros, ``(pid, group_mask)``." #: ../Doc/whatsnew/2.5.rst:1536 msgid "" @@ -1822,6 +2694,11 @@ msgid "" "This means you can put the data directly into an array or a memory-mapped " "file." msgstr "" +"Dos nuevos métodos en objetos socket, ``recv_into(buffer)`` y " +"``recvrom_into(buffer)``, almacenan los datos recibidos en un objeto que " +"soporta el protocolo de buffer en lugar de devolver los datos como una " +"cadena. Esto significa que puedes poner los datos directamente en un array " +"o en un archivo mapeado en memoria." #: ../Doc/whatsnew/2.5.rst:1541 msgid "" @@ -1829,12 +2706,18 @@ msgid "" "`getproto` accessor methods to retrieve the family, type, and protocol " "values for the socket." msgstr "" +"Los objetos Socket también han ganado métodos de acceso :meth:`getfamily`, :" +"meth:`gettype` y :meth:`getproto` para recuperar los valores de familia, " +"tipo y protocolo del socket." #: ../Doc/whatsnew/2.5.rst:1545 msgid "" "New module: the :mod:`spwd` module provides functions for accessing the " "shadow password database on systems that support shadow passwords." msgstr "" +"Nuevo módulo: el módulo :mod:`spwd` proporciona funciones para acceder a la " +"base de datos de contraseñas en la sombra en sistemas que soportan " +"contraseñas en la sombra." #: ../Doc/whatsnew/2.5.rst:1548 msgid "" @@ -1845,6 +2728,13 @@ msgid "" "func:`unpack` functions; they'll create :class:`Struct` objects and cache " "them. Or you can use :class:`Struct` instances directly::" msgstr "" +"El módulo :mod:`struct` es ahora más rápido porque compila cadenas de " +"formato en objetos :class:`Struct` con métodos :meth:`pack` y :meth:" +"`unpack`. Esto es similar a cómo el módulo :mod:`re` permite crear objetos " +"de expresión regular compilados. Puede seguir utilizando las funciones :" +"func:`pack` y :func:`unpack` a nivel de módulo; éstas crearán objetos :class:" +"`Struct` y los almacenarán en caché. O puede utilizar directamente las " +"instancias de :class:`Struct`::" #: ../Doc/whatsnew/2.5.rst:1560 msgid "" @@ -1853,6 +2743,10 @@ msgid "" "offset)`` methods. This lets you store data directly into an array or a " "memory-mapped file." msgstr "" +"También puedes empaquetar y desempaquetar datos hacia y desde objetos buffer " +"directamente usando los métodos ``pack_into(buffer, offset, v1, v2, ...)`` y " +"``unpack_from(buffer, offset)``. Esto te permite almacenar datos " +"directamente en un array o en un archivo mapeado en memoria." #: ../Doc/whatsnew/2.5.rst:1565 msgid "" @@ -1860,6 +2754,9 @@ msgid "" "NeedForSpeed sprint. Support for buffer objects was added by Martin Blais, " "also at the NeedForSpeed sprint.)" msgstr "" +"(:class:`Struct` objects fueron implementados por Bob Ippolito en el sprint " +"NeedForSpeed. El soporte para los objetos buffer fue añadido por Martin " +"Blais, también en el sprint NeedForSpeed)" #: ../Doc/whatsnew/2.5.rst:1569 msgid "" @@ -1869,6 +2766,12 @@ msgid "" "name, revision-range)``. For example, at the time of writing my copy of 2.5 " "was reporting ``('CPython', 'trunk', '45313:45315')``." msgstr "" +"Los desarrolladores de Python cambiaron de CVS a Subversion durante el " +"proceso de desarrollo de la versión 2.5. La información sobre la versión " +"exacta de construcción está disponible como la variable ``sys.subversion``, " +"una 3-tupla de ``(nombre del intérprete, nombre de la rama, rango de " +"revisión)``. Por ejemplo, en el momento de escribir esto, mi copia de 2.5 " +"informaba de ``('CPython', 'trunk', '45313:45315')``." #: ../Doc/whatsnew/2.5.rst:1575 msgid "" @@ -1877,6 +2780,10 @@ msgid "" "this: ``\"trunk:45355:45356M, Apr 13 2006, 07:42:19\"``. (Contributed by " "Barry Warsaw.)" msgstr "" +"Esta información también está disponible para las extensiones de C a través " +"de la función :c:func:`Py_GetBuildInfo` que devuelve una cadena de " +"información de compilación como esta ``\"trunk:45355:45356M, Apr 13 2006, " +"07:42:19\"``. (Contribuido por Barry Warsaw.)" #: ../Doc/whatsnew/2.5.rst:1580 msgid "" @@ -1885,6 +2792,11 @@ msgid "" "the topmost stack frame currently active in that thread at the time the " "function is called. (Contributed by Tim Peters.)" msgstr "" +"Otra nueva función, :func:`sys._current_frames`, devuelve los marcos de pila " +"actuales para todos los hilos en ejecución como un diccionario que asigna " +"los identificadores de los hilos al marco de pila superior actualmente " +"activo en ese hilo en el momento en que se llama a la función. (Contribuido " +"por Tim Peters.)" #: ../Doc/whatsnew/2.5.rst:1585 msgid "" @@ -1894,12 +2806,20 @@ msgid "" "as the extraction target, and to unpack only a subset of the archive's " "members." msgstr "" +"La clase :class:`TarFile` del módulo :mod:`tarfile` tiene ahora un método :" +"meth:`extractall` que extrae todos los miembros del archivo en el directorio " +"de trabajo actual. También es posible establecer un directorio diferente " +"como destino de la extracción, y desempaquetar sólo un subconjunto de los " +"miembros del archivo." #: ../Doc/whatsnew/2.5.rst:1590 msgid "" "The compression used for a tarfile opened in stream mode can now be " "autodetected using the mode ``'r|*'``. (Contributed by Lars Gustäbel.)" msgstr "" +"La compresión utilizada para un archivo tar abierto en modo stream puede " +"ahora ser autodetectada utilizando el modo ``'r|*'``. (Contribución de Lars " +"Gustäbel)" #: ../Doc/whatsnew/2.5.rst:1595 msgid "" @@ -1909,6 +2829,12 @@ msgid "" "sets a new value. Not all platforms support changing the stack size, but " "Windows, POSIX threading, and OS/2 all do. (Contributed by Andrew MacIntyre.)" msgstr "" +"El módulo :mod:`threading` permite ahora establecer el tamaño de la pila " +"utilizado cuando se crean nuevos hilos. La función ``stack_size([*size*])`` " +"devuelve el tamaño de pila actualmente configurado, y suministrando el " +"parámetro opcional *size* establece un nuevo valor. No todas las " +"plataformas soportan el cambio del tamaño de la pila, pero Windows, POSIX " +"threading y OS/2 lo hacen. (Contribución de Andrew MacIntyre)" #: ../Doc/whatsnew/2.5.rst:1603 msgid "" @@ -1916,6 +2842,10 @@ msgid "" "Unicode character database. Version 3.2.0 is required by some " "specifications, so it's still available as :attr:`unicodedata.ucd_3_2_0`." msgstr "" +"El módulo :mod:`unicodedata` ha sido actualizado para utilizar la versión " +"4.1.0 de la base de datos de caracteres Unicode. La versión 3.2.0 es " +"requerida por algunas especificaciones, por lo que sigue estando disponible " +"como :attr:`unicodedata.ucd_3_2_0`." #: ../Doc/whatsnew/2.5.rst:1607 msgid "" @@ -1928,10 +2858,18 @@ msgid "" "UUIDs are not specified in :rfc:`4122` and are not supported by this " "module.) ::" msgstr "" +"Nuevo módulo: el módulo :mod:`uuid` genera identificadores únicos " +"universales (UUID) de acuerdo con :rfc:`4122`. El RFC define varias " +"versiones diferentes de UUID que se generan a partir de una cadena inicial, " +"de propiedades del sistema o de forma puramente aleatoria. Este módulo " +"contiene una clase :class:`UUID` y funciones llamadas :func:`uuid1`, :func:" +"`uuid3`, :func:`uuid4`, y :func:`uuid5` para generar diferentes versiones de " +"UUID. (Los UUID de la versión 2 no se especifican en :rfc:`4122` y no están " +"soportados por este módulo) ::" #: ../Doc/whatsnew/2.5.rst:1632 msgid "(Contributed by Ka-Ping Yee.)" -msgstr "" +msgstr "(Contribución de Ka-Ping Yee.)" #: ../Doc/whatsnew/2.5.rst:1634 msgid "" @@ -1942,6 +2880,12 @@ msgid "" "`itervaluerefs` and :meth:`valuerefs` were added to :class:" "`WeakValueDictionary`. (Contributed by Fred L. Drake, Jr.)" msgstr "" +"Los tipos :mod:`weakref` del módulo :class:`WeakKeyDictionary` y :class:" +"`WeakValueDictionary` han obtenido nuevos métodos para iterar sobre las " +"referencias débiles contenidas en el diccionario. Se han añadido los " +"métodos :meth:`iterkeyrefs` y :meth:`keyrefs` a :class:`WeakKeyDictionary`, " +"y :meth:`itervaluerefs` y :meth:`valuerefs` a :class:`WeakValueDictionary`. " +"(Contribución de Fred L. Drake, Jr.)" #: ../Doc/whatsnew/2.5.rst:1641 msgid "" @@ -1956,6 +2900,17 @@ msgid "" "supported list such as Firefox, Opera, Konqueror, and elinks. (Contributed " "by Oleg Broytmann and Georg Brandl.)" msgstr "" +"El módulo :mod:`webbrowser` ha recibido una serie de mejoras. Ahora se puede " +"utilizar como un script con ``python -m webbrowser``, tomando una URL como " +"argumento; hay una serie de interruptores para controlar el comportamiento (:" +"option:`!-n` para una nueva ventana del navegador, :option:`!-t` para una " +"nueva pestaña). Se han añadido nuevas funciones a nivel de módulo, :func:" +"`open_new` y :func:`open_new_tab`, para soportar esto. La función :func:" +"`open` del módulo soporta una característica adicional, un parámetro " +"*autoraise* que señala si se debe levantar la ventana abierta cuando sea " +"posible. Se añadieron varios navegadores adicionales a la lista de " +"soportados, como Firefox, Opera, Konqueror y elinks. (Contribución de Oleg " +"Broytmann y Georg Brandl)" #: ../Doc/whatsnew/2.5.rst:1653 msgid "" @@ -1964,6 +2919,11 @@ msgid "" "to the :func:`loads` function or the :class:`Unmarshaller` class to enable " "this feature. (Contributed by Skip Montanaro.)" msgstr "" +"El módulo :mod:`xmlrpclib` ahora soporta la devolución de objetos :class:" +"`~datetime.datetime` para el tipo de fecha XML-RPC. Proporcione " +"``use_datetime=True`` a la función :func:`loads` o a la clase :class:" +"`Unmarshaller` para activar esta característica. (Contribución de Skip " +"Montanaro)" #: ../Doc/whatsnew/2.5.rst:1660 msgid "" @@ -1971,6 +2931,10 @@ msgid "" "meaning that a .zip archive can now be larger than 4 GiB and can contain " "individual files larger than 4 GiB. (Contributed by Ronald Oussoren.)" msgstr "" +"El módulo :mod:`zipfile` ahora soporta la versión ZIP64 del formato, lo que " +"significa que un archivo .zip ahora puede ser mayor de 4 GiB y puede " +"contener archivos individuales mayores de 4 GiB. (Contribución de Ronald " +"Oussoren)" #: ../Doc/whatsnew/2.5.rst:1666 msgid "" @@ -1979,10 +2943,14 @@ msgid "" "internal state and returns a new :class:`Compress` or :class:`Decompress` " "object. (Contributed by Chris AtLee.)" msgstr "" +"Los objetos :class:`zlib` y :class:`Decompress` del módulo :mod:`zlib` " +"soportan ahora un método :meth:`copy` que realiza una copia del estado " +"interno del objeto y devuelve un nuevo objeto :class:`Compress` o :class:" +"`Decompress`. (Contribución de Chris AtLee)" #: ../Doc/whatsnew/2.5.rst:1679 msgid "The ctypes package" -msgstr "" +msgstr "El paquete ctypes" #: ../Doc/whatsnew/2.5.rst:1681 msgid "" @@ -1992,6 +2960,12 @@ msgid "" "module, which provides functions for loading shared libraries and calling " "functions in them. The :mod:`ctypes` package is much fancier." msgstr "" +"El paquete :mod:`ctypes`, escrito por Thomas Heller, se ha añadido a la " +"biblioteca estándar. :mod:`ctypes` permite llamar a funciones arbitrarias en " +"bibliotecas compartidas o DLL. Los usuarios veteranos recordarán el módulo :" +"mod:`dl`, que proporciona funciones para cargar bibliotecas compartidas y " +"llamar a las funciones que contienen. El paquete :mod:`ctypes` es mucho más " +"sofisticado." #: ../Doc/whatsnew/2.5.rst:1687 msgid "" @@ -2000,6 +2974,10 @@ msgid "" "that's done, you can call arbitrary functions by accessing them as " "attributes of the :class:`CDLL` object. ::" msgstr "" +"Para cargar una biblioteca compartida o DLL, debes crear una instancia de la " +"clase :class:`CDLL` y proporcionar el nombre o la ruta de la biblioteca " +"compartida o DLL. Una vez hecho esto, puedes llamar a funciones arbitrarias " +"accediendo a ellas como atributos del objeto :class:`CDLL`. ::" #: ../Doc/whatsnew/2.5.rst:1697 msgid "" @@ -2012,6 +2990,15 @@ msgid "" "constructor. (And I mean *must*; getting it wrong will often result in the " "interpreter crashing with a segmentation fault.)" msgstr "" +"Se proporcionan constructores de tipos para los distintos tipos de C: :func:" +"`c_int`, :func:`c_float`, :func:`c_double`, :func:`c_char_p` (equivalente a :" +"c:type:`char \\*`), etc. A diferencia de los tipos de Python, las versiones " +"de C son todas mutables; puedes asignar a su atributo :attr:`value` para " +"cambiar el valor envuelto. Los enteros y las cadenas de Python se " +"convertirán automáticamente a los tipos C correspondientes, pero para otros " +"tipos debes llamar al constructor de tipo correcto. (Y quiero decir *debe*; " +"si se equivoca, a menudo el intérprete se bloquea con un fallo de " +"segmentación)" #: ../Doc/whatsnew/2.5.rst:1706 msgid "" @@ -2020,12 +3007,20 @@ msgid "" "be immutable; breaking this rule will cause puzzling bugs. When you need a " "modifiable memory area, use :func:`create_string_buffer`::" msgstr "" +"No debería usar :func:`c_char_p` con una cadena de Python cuando la función " +"C vaya a modificar el área de memoria, porque se supone que las cadenas de " +"Python son inmutables; romper esta regla causará errores desconcertantes. " +"Cuando necesite un área de memoria modificable, utilice :func:" +"`create_string_buffer`::" #: ../Doc/whatsnew/2.5.rst:1715 msgid "" "C functions are assumed to return integers, but you can set the :attr:" "`restype` attribute of the function object to change this::" msgstr "" +"Se supone que las funciones en C devuelven números enteros, pero se puede " +"establecer el atributo :attr:`restype` del objeto de la función para cambiar " +"esto::" #: ../Doc/whatsnew/2.5.rst:1724 msgid "" @@ -2036,12 +3031,20 @@ msgid "" "constructor that will create a :c:type:`PyObject \\*` pointer. A simple " "usage::" msgstr "" +":mod:`ctypes` también proporciona una envoltura para la API de C de Python " +"como el objeto ``ctypes.pythonapi``. Este objeto *no* libera el bloqueo " +"global del intérprete antes de llamar a una función, porque el bloqueo debe " +"mantenerse cuando se llama al código del intérprete. Hay un constructor de " +"tipo :class:`py_object()` que creará un puntero :c:type:`PyObject \\*`. Un " +"uso sencillo::" #: ../Doc/whatsnew/2.5.rst:1737 msgid "" "Don't forget to use :class:`py_object()`; if it's omitted you end up with a " "segmentation fault." msgstr "" +"No olvides usar :class:`py_object()`; si se omite acabas con un fallo de " +"segmentación." #: ../Doc/whatsnew/2.5.rst:1740 msgid "" @@ -2051,22 +3054,29 @@ msgid "" "wrappers atop a library accessed through :mod:`ctypes` instead of extension " "modules, now that :mod:`ctypes` is included with core Python." msgstr "" +":mod:`ctypes` existe desde hace tiempo, pero la gente sigue escribiendo y " +"distribuyendo módulos de extensión codificados a mano porque no se puede " +"confiar en que :mod:`ctypes` esté presente. Quizás los desarrolladores " +"empiecen a escribir envoltorios de Python sobre una biblioteca a la que se " +"accede a través de :mod:`ctypes` en lugar de módulos de extensión, ahora " +"que :mod:`ctypes` está incluido en el núcleo de Python." #: ../Doc/whatsnew/2.5.rst:1750 msgid "http://starship.python.net/crew/theller/ctypes/" -msgstr "" +msgstr "http://starship.python.net/crew/theller/ctypes/" #: ../Doc/whatsnew/2.5.rst:1750 msgid "The ctypes web page, with a tutorial, reference, and FAQ." msgstr "" +"La página web de ctypes, con un tutorial, referencias y preguntas frecuentes." #: ../Doc/whatsnew/2.5.rst:1752 msgid "The documentation for the :mod:`ctypes` module." -msgstr "" +msgstr "La documentación del módulo :mod:`ctypes`." #: ../Doc/whatsnew/2.5.rst:1760 msgid "The ElementTree package" -msgstr "" +msgstr "El paquete ElementTree" #: ../Doc/whatsnew/2.5.rst:1762 msgid "" @@ -2076,6 +3086,11 @@ msgid "" "ElementTree 1.2.6. The :mod:`cElementTree` accelerator module is also " "included." msgstr "" +"Un subconjunto de la biblioteca ElementTree de Fredrik Lundh para el " +"procesamiento de XML se ha añadido a la biblioteca estándar como :mod:`xml." +"etree`. Los módulos disponibles son :mod:`ElementTree`, :mod:`ElementPath` " +"y :mod:`ElementInclude` de ElementTree 1.2.6. También se incluye el " +"módulo acelerador :mod:`cElementTree`." #: ../Doc/whatsnew/2.5.rst:1768 msgid "" @@ -2083,6 +3098,9 @@ msgid "" "Full documentation for ElementTree is available at http://effbot.org/zone/" "element-index.htm." msgstr "" +"El resto de esta sección proporcionará una breve descripción del uso de " +"ElementTree. La documentación completa de ElementTree está disponible en " +"http://effbot.org/zone/element-index.htm." #: ../Doc/whatsnew/2.5.rst:1772 msgid "" @@ -2092,6 +3110,11 @@ msgid "" "the Document Object Model; in the DOM there are many different types of " "node, including :class:`TextNode`.)" msgstr "" +"ElementTree representa un documento XML como un árbol de nodos de elementos. " +"El contenido de texto del documento se almacena como los atributos :attr:" +"`text` y :attr:`tail` de (Esta es una de las principales diferencias entre " +"ElementTree y el Modelo de Objetos del Documento; en el DOM hay muchos tipos " +"diferentes de nodo, incluyendo :class:`TextNode`)" #: ../Doc/whatsnew/2.5.rst:1778 msgid "" @@ -2099,12 +3122,17 @@ msgid "" "a string (assumed to contain a filename) or a file-like object and returns " "an :class:`ElementTree` instance::" msgstr "" +"La función de análisis más utilizada es :func:`parse`, que toma una cadena " +"(se supone que contiene un nombre de archivo) o un objeto similar a un " +"archivo y devuelve una instancia de :class:`ElementTree`::" #: ../Doc/whatsnew/2.5.rst:1790 msgid "" "Once you have an :class:`ElementTree` instance, you can call its :meth:" "`getroot` method to get the root :class:`Element` node." msgstr "" +"Una vez que tengas una instancia de :class:`ElementTree`, puedes llamar a su " +"método :meth:`getroot` para obtener el nodo raíz de :class:`Element`." #: ../Doc/whatsnew/2.5.rst:1793 msgid "" @@ -2113,6 +3141,10 @@ msgid "" "provides a tidy way to incorporate XML fragments, approaching the " "convenience of an XML literal::" msgstr "" +"También hay una función :func:`XML` que toma un literal de cadena y devuelve " +"un nodo :class:`Element` (no un :class:`ElementTree`). Esta función " +"proporciona una forma ordenada de incorporar fragmentos XML, acercándose a " +"la comodidad de un literal XML::" #: ../Doc/whatsnew/2.5.rst:1803 msgid "" @@ -2120,110 +3152,114 @@ msgid "" "methods. Dictionary-like operations are used to access attribute values, " "and list-like operations are used to access child nodes." msgstr "" +"Cada elemento XML admite algunos métodos de acceso tipo diccionario y otros " +"tipo lista. Las operaciones tipo diccionario se utilizan para acceder a los " +"valores de los atributos, y las operaciones tipo lista se utilizan para " +"acceder a los nodos hijos." #: ../Doc/whatsnew/2.5.rst:1808 msgid "Operation" -msgstr "" +msgstr "Operación" #: ../Doc/whatsnew/2.5.rst:1808 msgid "Result" -msgstr "" +msgstr "Resultado" #: ../Doc/whatsnew/2.5.rst:1810 msgid "``elem[n]``" -msgstr "" +msgstr "``elem[n]``" #: ../Doc/whatsnew/2.5.rst:1810 msgid "Returns n'th child element." -msgstr "" +msgstr "Devuelve el elemento hijo enésimo." #: ../Doc/whatsnew/2.5.rst:1812 msgid "``elem[m:n]``" -msgstr "" +msgstr "``elem[m:n]``" #: ../Doc/whatsnew/2.5.rst:1812 msgid "Returns list of m'th through n'th child elements." -msgstr "" +msgstr "Devuelve la lista de m's a n's elementos hijos." #: ../Doc/whatsnew/2.5.rst:1815 msgid "``len(elem)``" -msgstr "" +msgstr "``len(elem)``" #: ../Doc/whatsnew/2.5.rst:1815 msgid "Returns number of child elements." -msgstr "" +msgstr "Devuelve el número de elementos hijos." #: ../Doc/whatsnew/2.5.rst:1817 msgid "``list(elem)``" -msgstr "" +msgstr "``lista(elem)``" #: ../Doc/whatsnew/2.5.rst:1817 msgid "Returns list of child elements." -msgstr "" +msgstr "Devuelve la lista de elementos hijos." #: ../Doc/whatsnew/2.5.rst:1819 msgid "``elem.append(elem2)``" -msgstr "" +msgstr "``elem.append(elem2)``" #: ../Doc/whatsnew/2.5.rst:1819 msgid "Adds *elem2* as a child." -msgstr "" +msgstr "Añade *elemento2* como hijo." #: ../Doc/whatsnew/2.5.rst:1821 msgid "``elem.insert(index, elem2)``" -msgstr "" +msgstr "``elem.insert(index, elem2)``" #: ../Doc/whatsnew/2.5.rst:1821 msgid "Inserts *elem2* at the specified location." -msgstr "" +msgstr "Inserta *elemento2* en el lugar especificado." #: ../Doc/whatsnew/2.5.rst:1823 msgid "``del elem[n]``" -msgstr "" +msgstr "``del elem[n]``" #: ../Doc/whatsnew/2.5.rst:1823 msgid "Deletes n'th child element." -msgstr "" +msgstr "Elimina el elemento hijo enésimo." #: ../Doc/whatsnew/2.5.rst:1825 msgid "``elem.keys()``" -msgstr "" +msgstr "``elem.keys()``" #: ../Doc/whatsnew/2.5.rst:1825 msgid "Returns list of attribute names." -msgstr "" +msgstr "Devuelve la lista de nombres de atributos." #: ../Doc/whatsnew/2.5.rst:1827 msgid "``elem.get(name)``" -msgstr "" +msgstr "``elem.get(name)``" #: ../Doc/whatsnew/2.5.rst:1827 msgid "Returns value of attribute *name*." -msgstr "" +msgstr "Devuelve el valor del atributo *nombre*." #: ../Doc/whatsnew/2.5.rst:1829 msgid "``elem.set(name, value)``" -msgstr "" +msgstr "``elem.set(nombre, valor)``" #: ../Doc/whatsnew/2.5.rst:1829 msgid "Sets new value for attribute *name*." -msgstr "" +msgstr "Establece el nuevo valor del atributo *nombre*." #: ../Doc/whatsnew/2.5.rst:1831 msgid "``elem.attrib``" -msgstr "" +msgstr "``elem.attrib``" #: ../Doc/whatsnew/2.5.rst:1831 msgid "Retrieves the dictionary containing attributes." -msgstr "" +msgstr "Recupera el diccionario que contiene los atributos." #: ../Doc/whatsnew/2.5.rst:1834 msgid "``del elem.attrib[name]``" -msgstr "" +msgstr "``del elem.attrib[name]``" #: ../Doc/whatsnew/2.5.rst:1834 msgid "Deletes attribute *name*." -msgstr "" +msgstr "Borra el atributo *nombre*." #: ../Doc/whatsnew/2.5.rst:1837 msgid "" @@ -2231,6 +3267,9 @@ msgid "" "`Element` nodes. To check if a node is a comment or processing " "instructions::" msgstr "" +"Los comentarios y las instrucciones de procesamiento también se representan " +"como nodos :class:`Element`. Para comprobar si un nodo es un comentario o " +"unas instrucciones de procesamiento::" #: ../Doc/whatsnew/2.5.rst:1845 msgid "" @@ -2238,6 +3277,9 @@ msgid "" "method. Like :func:`parse`, it can take either a string or a file-like " "object::" msgstr "" +"Para generar una salida XML, debes llamar al método :meth:`ElementTree." +"write`. Al igual que :func:`parse`, puede tomar una cadena o un objeto tipo " +"archivo::" #: ../Doc/whatsnew/2.5.rst:1855 msgid "" @@ -2248,24 +3290,34 @@ msgid "" "Therefore, it's best to specify a different encoding such as UTF-8 that can " "handle any Unicode character.)" msgstr "" +"(Atención: la codificación por defecto utilizada para la salida es ASCII. " +"Para el trabajo general de XML, donde el nombre de un elemento puede " +"contener caracteres Unicode arbitrarios, ASCII no es una codificación muy " +"útil porque lanzará una excepción si el nombre de un elemento contiene " +"cualquier carácter con valores superiores a 127. Por lo tanto, es mejor " +"especificar una codificación diferente, como UTF-8, que puede manejar " +"cualquier carácter Unicode)" #: ../Doc/whatsnew/2.5.rst:1862 msgid "" "This section is only a partial description of the ElementTree interfaces. " "Please read the package's official documentation for more details." msgstr "" +"Esta sección es sólo una descripción parcial de las interfaces de " +"ElementTree. Por favor, lee la documentación oficial del paquete para más " +"detalles." #: ../Doc/whatsnew/2.5.rst:1868 msgid "http://effbot.org/zone/element-index.htm" -msgstr "" +msgstr "http://effbot.org/zone/element-index.htm" #: ../Doc/whatsnew/2.5.rst:1869 msgid "Official documentation for ElementTree." -msgstr "" +msgstr "Documentación oficial de ElementTree." #: ../Doc/whatsnew/2.5.rst:1877 msgid "The hashlib package" -msgstr "" +msgstr "El paquete hashlib" #: ../Doc/whatsnew/2.5.rst:1879 msgid "" @@ -2275,6 +3327,11 @@ msgid "" "available, the module uses OpenSSL for fast platform optimized " "implementations of algorithms." msgstr "" +"Se ha añadido un nuevo módulo :mod:`hashlib`, escrito por Gregory P. Smith, " +"para sustituir a los módulos :mod:`md5` y :mod:`sha`. :mod:`hashlib` añade " +"soporte para hashes seguros adicionales (SHA-224, SHA-256, SHA-384 y " +"SHA-512). Cuando está disponible, el módulo utiliza OpenSSL para " +"implementaciones rápidas de algoritmos optimizados para la plataforma." #: ../Doc/whatsnew/2.5.rst:1885 msgid "" @@ -2284,6 +3341,11 @@ msgid "" "significant difference is that the constructor functions for creating new " "hashing objects are named differently. ::" msgstr "" +"Los antiguos módulos :mod:`md5` y :mod:`sha` siguen existiendo como " +"envoltorios de hashlib para preservar la compatibilidad hacia atrás. La " +"interfaz del nuevo módulo es muy parecida a la de los módulos antiguos, pero " +"no es idéntica. La diferencia más significativa es que las funciones " +"constructoras para crear nuevos objetos hashing tienen un nombre diferente ::" #: ../Doc/whatsnew/2.5.rst:1914 msgid "" @@ -2293,14 +3355,19 @@ msgid "" "binary string or a string of hex digits, and :meth:`copy` returns a new " "hashing object with the same digest state." msgstr "" +"Una vez que se ha creado un objeto hash, sus métodos son los mismos que " +"antes: ``actualizar(cadena)`` convierte la cadena especificada en el estado " +"de resumen actual, :meth:`digest` y :meth:`hexdigest` devuelven el valor de " +"resumen como una cadena binaria o una cadena de dígitos hexadecimales, y :" +"meth:`copiar` devuelve un nuevo objeto hash con el mismo estado de resumen." #: ../Doc/whatsnew/2.5.rst:1923 msgid "The documentation for the :mod:`hashlib` module." -msgstr "" +msgstr "La documentación del módulo :mod:`hashlib`." #: ../Doc/whatsnew/2.5.rst:1931 msgid "The sqlite3 package" -msgstr "" +msgstr "El paquete sqlite3" #: ../Doc/whatsnew/2.5.rst:1933 msgid "" @@ -2308,6 +3375,9 @@ msgid "" "embedded database, has been added to the standard library under the package " "name :mod:`sqlite3`." msgstr "" +"El módulo pysqlite (http://www.pysqlite.org), una envoltura para la base de " +"datos incrustada SQLite, se ha añadido a la biblioteca estándar bajo el " +"nombre de paquete :mod:`sqlite3`." #: ../Doc/whatsnew/2.5.rst:1937 msgid "" @@ -2318,12 +3388,21 @@ msgid "" "application using SQLite and then port the code to a larger database such as " "PostgreSQL or Oracle." msgstr "" +"SQLite es una biblioteca en C que proporciona una base de datos ligera " +"basada en disco que no requiere un proceso de servidor independiente y " +"permite acceder a la base de datos utilizando una variante no estándar del " +"lenguaje de consulta SQL. Algunas aplicaciones pueden utilizar SQLite para " +"el almacenamiento interno de datos. También es posible crear un prototipo " +"de una aplicación utilizando SQLite y luego portar el código a una base de " +"datos más grande como PostgreSQL u Oracle." #: ../Doc/whatsnew/2.5.rst:1944 msgid "" "pysqlite was written by Gerhard Häring and provides a SQL interface " "compliant with the DB-API 2.0 specification described by :pep:`249`." msgstr "" +"pysqlite fue escrito por Gerhard Häring y proporciona una interfaz SQL que " +"cumple con la especificación DB-API 2.0 descrita por :pep:`249`." #: ../Doc/whatsnew/2.5.rst:1947 msgid "" @@ -2333,6 +3412,11 @@ msgid "" "the build process will compile the module when the necessary headers are " "available." msgstr "" +"Si estás compilando el código fuente de Python tú mismo, ten en cuenta que " +"el árbol de código fuente no incluye el código de SQLite, sólo el módulo " +"envolvente. Necesitarás tener las librerías y cabeceras de SQLite instaladas " +"antes de compilar Python, y el proceso de construcción compilará el módulo " +"cuando las cabeceras necesarias estén disponibles." #: ../Doc/whatsnew/2.5.rst:1952 msgid "" @@ -2340,18 +3424,25 @@ msgid "" "represents the database. Here the data will be stored in the :file:`/tmp/" "example` file::" msgstr "" +"Para utilizar el módulo, primero hay que crear un objeto :class:`Connection` " +"que represente la base de datos. Aquí los datos se almacenarán en el " +"archivo :file:`/tmp/example`::" #: ../Doc/whatsnew/2.5.rst:1958 msgid "" "You can also supply the special name ``:memory:`` to create a database in " "RAM." msgstr "" +"También puede suministrar el nombre especial ``:memory:`` para crear una " +"base de datos en la RAM." #: ../Doc/whatsnew/2.5.rst:1960 msgid "" "Once you have a :class:`Connection`, you can create a :class:`Cursor` " "object and call its :meth:`execute` method to perform SQL commands::" msgstr "" +"Una vez que tengas una :class:`Connection`, puedes crear un objeto :class:" +"`Cursor` y llamar a su método :meth:`execute` para realizar comandos SQL::" #: ../Doc/whatsnew/2.5.rst:1974 msgid "" @@ -2360,9 +3451,12 @@ msgid "" "doing so is insecure; it makes your program vulnerable to an SQL injection " "attack." msgstr "" +"Normalmente tus operaciones SQL necesitarán usar valores de variables de " +"Python. No deberías montar tu consulta usando las operaciones de cadena de " +"Python porque hacerlo es inseguro; hace que tu programa sea vulnerable a un " +"ataque de inyección SQL." -#: ../Doc/whatsnew/2.5.rst:1978 -#, python-format +#: ../Doc/whatsnew/2.5.rst:1978, python-format msgid "" "Instead, use the DB-API's parameter substitution. Put ``?`` as a " "placeholder wherever you want to use a value, and then provide a tuple of " @@ -2370,6 +3464,11 @@ msgid "" "(Other database modules may use a different placeholder, such as ``%s`` or " "``:1``.) For example::" msgstr "" +"En su lugar, utilice la sustitución de parámetros de la DB-API. Ponga ``?`` " +"como marcador de posición donde quiera usar un valor, y luego proporcione " +"una tupla de valores como segundo argumento al método :meth:`execute` del " +"cursor. (Otros módulos de base de datos pueden utilizar un marcador de " +"posición diferente, como ``%s`` o ``:1``) Por ejemplo::" #: ../Doc/whatsnew/2.5.rst:1998 msgid "" @@ -2378,50 +3477,58 @@ msgid "" "retrieve a single matching row, or call :meth:`fetchall` to get a list of " "the matching rows." msgstr "" +"Para recuperar datos después de ejecutar una sentencia SELECT, puede tratar " +"el cursor como un iterador, llamar al método :meth:`fetchone` del cursor " +"para recuperar una sola fila que coincida, o llamar a :meth:`fetchall` para " +"obtener una lista de las filas que coincidan." #: ../Doc/whatsnew/2.5.rst:2003 msgid "This example uses the iterator form::" -msgstr "" +msgstr "Este ejemplo utiliza la forma del iterador::" #: ../Doc/whatsnew/2.5.rst:2016 msgid "" "For more information about the SQL dialect supported by SQLite, see https://" "www.sqlite.org." msgstr "" +"Para más información sobre el dialecto SQL soportado por SQLite, consulte " +"https://www.sqlite.org." #: ../Doc/whatsnew/2.5.rst:2023 msgid "http://www.pysqlite.org" -msgstr "" +msgstr "http://www.pysqlite.org" #: ../Doc/whatsnew/2.5.rst:2023 msgid "The pysqlite web page." -msgstr "" +msgstr "La página web de pysqlite." #: ../Doc/whatsnew/2.5.rst:2027 msgid "https://www.sqlite.org" -msgstr "" +msgstr "https://www.sqlite.org" #: ../Doc/whatsnew/2.5.rst:2026 msgid "" "The SQLite web page; the documentation describes the syntax and the " "available data types for the supported SQL dialect." msgstr "" +"La página web de SQLite; la documentación describe la sintaxis y los tipos " +"de datos disponibles para el dialecto SQL soportado." #: ../Doc/whatsnew/2.5.rst:2029 msgid "The documentation for the :mod:`sqlite3` module." -msgstr "" +msgstr "La documentación del módulo :mod:`sqlite3`." #: ../Doc/whatsnew/2.5.rst:2031 msgid ":pep:`249` - Database API Specification 2.0" -msgstr "" +msgstr ":pep:`249` - Especificación de la API de la base de datos 2.0" #: ../Doc/whatsnew/2.5.rst:2032 msgid "PEP written by Marc-André Lemburg." -msgstr "" +msgstr "PEP escrito por Marc-André Lemburg." #: ../Doc/whatsnew/2.5.rst:2040 msgid "The wsgiref package" -msgstr "" +msgstr "El paquete wsgiref" #: ../Doc/whatsnew/2.5.rst:2042 msgid "" @@ -2430,6 +3537,10 @@ msgid "" "`333`. The :mod:`wsgiref` package is a reference implementation of the WSGI " "specification." msgstr "" +"La Interfaz de Pasarela del Servidor Web (WSGI) v1.0 define una interfaz " +"estándar entre los servidores web y las aplicaciones web de Python y se " +"describe en :pep:`333`. El paquete :mod:`wsgiref` es una implementación de " +"referencia de la especificación WSGI." #: ../Doc/whatsnew/2.5.rst:2049 msgid "" @@ -2437,30 +3548,36 @@ msgid "" "this server is useful for debugging but isn't intended for production use. " "Setting up a server takes only a few lines of code::" msgstr "" +"El paquete incluye un servidor HTTP básico que ejecutará una aplicación " +"WSGI; este servidor es útil para la depuración pero no está pensado para su " +"uso en producción. La configuración de un servidor sólo requiere unas pocas " +"líneas de código::" #: ../Doc/whatsnew/2.5.rst:2069 msgid "http://www.wsgi.org" -msgstr "" +msgstr "http://www.wsgi.org" #: ../Doc/whatsnew/2.5.rst:2069 msgid "A central web site for WSGI-related resources." -msgstr "" +msgstr "Un sitio web central para los recursos relacionados con WSGI." #: ../Doc/whatsnew/2.5.rst:2071 msgid ":pep:`333` - Python Web Server Gateway Interface v1.0" -msgstr "" +msgstr ":pep:`333` - Interfaz del servidor web Python v1.0" #: ../Doc/whatsnew/2.5.rst:2072 msgid "PEP written by Phillip J. Eby." -msgstr "" +msgstr "PEP escrito por Phillip J. Eby." #: ../Doc/whatsnew/2.5.rst:2080 msgid "Build and C API Changes" -msgstr "" +msgstr "Cambios en la API de construcción y C" #: ../Doc/whatsnew/2.5.rst:2082 msgid "Changes to Python's build process and to the C API include:" msgstr "" +"Los cambios en el proceso de construcción de Python y en la API de C " +"incluyen:" #: ../Doc/whatsnew/2.5.rst:2084 msgid "" @@ -2468,6 +3585,10 @@ msgid "" "migration procedure that was supervised and flawlessly carried out by Martin " "von Löwis. The procedure was developed as :pep:`347`." msgstr "" +"El árbol de fuentes de Python fue convertido de CVS a Subversion, en un " +"complejo procedimiento de migración que fue supervisado y llevado a cabo de " +"forma impecable por Martin von Löwis. El procedimiento se desarrolló como :" +"pep:`347`." #: ../Doc/whatsnew/2.5.rst:2088 msgid "" @@ -2477,6 +3598,12 @@ msgid "" "were refcounting problems, often occurring in error-handling code. See " "https://scan.coverity.com for the statistics." msgstr "" +"Coverity, una empresa que comercializa una herramienta de análisis de código " +"fuente llamada Prevent, proporcionó los resultados de su examen del código " +"fuente de Python. El análisis encontró alrededor de 60 errores que fueron " +"rápidamente corregidos. Muchos de los errores eran problemas de recuento, " +"que a menudo se producen en el código de gestión de errores. Consulte las " +"estadísticas en https://scan.coverity.com." #: ../Doc/whatsnew/2.5.rst:2094 msgid "" @@ -2485,6 +3612,10 @@ msgid "" "`int`. See the earlier section :ref:`pep-353` for a discussion of this " "change." msgstr "" +"El mayor cambio en la API de C proviene de :pep:`353`, que modifica el " +"intérprete para utilizar una definición de tipo :c:type:`Py_ssize_t` en " +"lugar de :c:type:`int`. Vea la sección anterior :ref:`pep-353` para una " +"discusión de este cambio." #: ../Doc/whatsnew/2.5.rst:2099 msgid "" @@ -2493,6 +3624,11 @@ msgid "" "converted to an abstract syntax tree (or AST), and it is the abstract " "syntax tree that's traversed to produce the bytecode." msgstr "" +"El diseño del compilador de código de bytes ha cambiado mucho, ya no genera " +"código de bytes recorriendo el árbol de análisis sintáctico. En su lugar, " +"el árbol de análisis se convierte en un árbol de sintaxis abstracta (o AST), " +"y es el árbol de sintaxis abstracta el que se recorre para producir el " +"código de bytes." #: ../Doc/whatsnew/2.5.rst:2104 msgid "" @@ -2500,6 +3636,9 @@ msgid "" "`compile` built-in and specifying ``_ast.PyCF_ONLY_AST`` as the value of " "the *flags* parameter::" msgstr "" +"Es posible que el código Python obtenga objetos AST utilizando el built-in :" +"func:`compile` y especificando ``_ast.PyCF_ONLY_AST`` como valor del " +"parámetro *flags*::" #: ../Doc/whatsnew/2.5.rst:2117 msgid "" @@ -2514,6 +3653,16 @@ msgid "" "`PyAST_Compile`. For more information, read the source code, and then ask " "questions on python-dev." msgstr "" +"Todavía no se ha escrito ninguna documentación oficial para el código AST, " +"pero :pep:`339` discute el diseño. Para empezar a conocer el código, lea la " +"definición de los distintos nodos AST en :file:`Parser/Python.asdl`. Un " +"script de Python lee este archivo y genera un conjunto de definiciones de " +"estructuras C en :file:`Include/Python-ast.h`. Las funciones :c:func:" +"`PyParser_ASTFromString` y :c:func:`PyParser_ASTFromFile`, definidas en :" +"file:`Include/pythonrun.h`, toman el código fuente de Python como entrada y " +"devuelven la raíz de un AST que representa el contenido. Este AST puede " +"convertirse en un objeto de código mediante :c:func:`PyAST_Compile`. Para " +"más información, lea el código fuente, y luego haga preguntas en python-dev." #: ../Doc/whatsnew/2.5.rst:2127 msgid "" @@ -2523,6 +3672,11 @@ msgid "" "Schemenauer, plus the participants in a number of AST sprints at conferences " "such as PyCon." msgstr "" +"El código de la AST fue desarrollado bajo la dirección de Jeremy Hylton, e " +"implementado por (en orden alfabético) Brett Cannon, Nick Coghlan, Grant " +"Edwards, John Ehresman, Kurt Kaiser, Neal Norwitz, Tim Peters, Armin Rigo y " +"Neil Schemenauer, además de los participantes en varios sprints de la AST en " +"conferencias como la PyCon." #: ../Doc/whatsnew/2.5.rst:2136 msgid "" @@ -2534,6 +3688,14 @@ msgid "" "the memory may be returned to the operating system. (Implemented by Evan " "Jones, and reworked by Tim Peters.)" msgstr "" +"Se aplicó el parche de Evan Jones a obmalloc, descrito por primera vez en " +"una charla en la PyCon DC 2005. Python 2.4 asignaba objetos pequeños en " +"arenas de 256K, pero nunca liberaba arenas. Con este parche, Python " +"liberará arenas cuando estén vacías. El efecto neto es que en algunas " +"plataformas, cuando se asignan muchos objetos, el uso de la memoria de " +"Python puede realmente caer cuando se borran y la memoria puede ser devuelta " +"al sistema operativo. (Implementado por Evan Jones, y reelaborado por Tim " +"Peters)" #: ../Doc/whatsnew/2.5.rst:2144 msgid "" @@ -2545,6 +3707,14 @@ msgid "" "`PyObject_Realloc`, and :c:func:`PyObject_Free` are another family that's " "supposed to be used for creating Python objects." msgstr "" +"Tenga en cuenta que este cambio significa que los módulos de extensión deben " +"ser más cuidadosos al asignar memoria. La API de Python tiene muchas " +"funciones diferentes para asignar memoria que se agrupan en familias. Por " +"ejemplo, :c:func:`PyMem_Malloc`, :c:func:`PyMem_Realloc`, y :c:func:" +"`PyMem_Free` son una familia que asigna memoria en bruto, mientras que :c:" +"func:`PyObject_Malloc`, :c:func:`PyObject_Realloc`, y :c:func:" +"`PyObject_Free` son otra familia que se supone que se utiliza para crear " +"objetos de Python." #: ../Doc/whatsnew/2.5.rst:2152 msgid "" @@ -2556,6 +3726,14 @@ msgid "" "probably result in a segfault. You should carefully test your C extension " "modules with Python 2.5." msgstr "" +"Anteriormente estas diferentes familias se reducían a las funciones :c:func:" +"`malloc` y :c:func:`free` de la plataforma. Esto significaba que no " +"importaba si te equivocabas y asignabas memoria con la función :c:func:" +"`PyMem` pero la liberabas con la función :c:func:`PyObject`. Con los " +"cambios de la versión 2.5 en obmalloc, estas familias hacen ahora cosas " +"diferentes y los desajustes probablemente darán lugar a un fallo de " +"seguridad. Deberías probar cuidadosamente tus módulos de extensión C con " +"Python 2.5." #: ../Doc/whatsnew/2.5.rst:2159 msgid "" @@ -2565,6 +3743,11 @@ msgid "" "`PySet_Contains` and :c:func:`PySet_Size` to examine the set's state. " "(Contributed by Raymond Hettinger.)" msgstr "" +"Los tipos de conjuntos incorporados tienen ahora una API oficial en C. " +"Llame a :c:func:`PySet_New` y :c:func:`PyFrozenSet_New` para crear un nuevo " +"conjunto, :c:func:`PySet_Add` y :c:func:`PySet_Discard` para añadir y " +"eliminar elementos, y :c:func:`PySet_Contains` y :c:func:`PySet_Size` para " +"examinar el estado del conjunto. (Contribución de Raymond Hettinger)" #: ../Doc/whatsnew/2.5.rst:2165 msgid "" @@ -2573,6 +3756,11 @@ msgid "" "a string of build information like this: ``\"trunk:45355:45356M, Apr 13 " "2006, 07:42:19\"``. (Contributed by Barry Warsaw.)" msgstr "" +"El código C puede ahora obtener información sobre la revisión exacta del " +"intérprete de Python llamando a la función :c:func:`Py_GetBuildInfo` que " +"devuelve una cadena de información de compilación como esta ``" +"\"trunk:45355:45356M, Apr 13 2006, 07:42:19\"``. (Contribuido por Barry " +"Warsaw.)" #: ../Doc/whatsnew/2.5.rst:2170 msgid "" @@ -2587,12 +3775,24 @@ msgid "" "optimizations actually make the code faster. (Contributed by Fredrik Lundh " "at the NeedForSpeed sprint.)" msgstr "" +"Se pueden utilizar dos nuevas macros para indicar las funciones C que son " +"locales al fichero actual, de modo que se pueda utilizar una convención de " +"llamada más rápida. ``Py_LOCAL(type)`` declara que la función devuelve un " +"valor del *tipo* especificado y utiliza un calificador de llamada rápida. " +"``Py_LOCAL_INLINE(type)`` hace lo mismo y también solicita que la función " +"sea inline. Si :c:func:`PY_LOCAL_AGGRESSIVE` se define antes de que se " +"incluya :file:`python.h`, se habilita un conjunto de optimizaciones más " +"agresivas para el módulo; debería comparar los resultados para averiguar si " +"estas optimizaciones realmente hacen el código más rápido. (Contribuido por " +"Fredrik Lundh en el sprint NeedForSpeed)" #: ../Doc/whatsnew/2.5.rst:2181 msgid "" "``PyErr_NewException(name, base, dict)`` can now accept a tuple of base " "classes as its *base* argument. (Contributed by Georg Brandl.)" msgstr "" +"``PyErr_NewException(name, base, dict)`` ahora puede aceptar una tupla de " +"clases base como su argumento *base*. (Contribuido por Georg Brandl.)" #: ../Doc/whatsnew/2.5.rst:2184 msgid "" @@ -2602,6 +3802,12 @@ msgid "" "A *stacklevel* of 1 is the function calling :c:func:`PyErr_WarnEx`, 2 is the " "function above that, and so forth. (Added by Neal Norwitz.)" msgstr "" +"La función :c:func:`PyErr_Warn` para emitir avisos está ahora obsoleta en " +"favor de ``PyErr_WarnEx(category, message, stacklevel)`` que permite " +"especificar el número de marcos de pila que separan esta función y la que la " +"llama. Un *stacklevel* de 1 es la función que llama a :c:func:" +"`PyErr_WarnEx`, 2 es la función que está por encima, y así sucesivamente. " +"(Añadido por Neal Norwitz.)" #: ../Doc/whatsnew/2.5.rst:2190 msgid "" @@ -2609,6 +3815,9 @@ msgid "" "compiled with a C++ compiler without errors. (Implemented by Anthony " "Baxter, Martin von Löwis, Skip Montanaro.)" msgstr "" +"El intérprete de CPython sigue estando escrito en C, pero el código ahora " +"puede ser compilado con un compilador de C++ sin errores. (Implementado " +"por Anthony Baxter, Martin von Löwis, Skip Montanaro)" #: ../Doc/whatsnew/2.5.rst:2194 msgid "" @@ -2617,16 +3826,22 @@ msgid "" "unlikely case that your extensions were using it, you can replace it by " "something like the following::" msgstr "" +"Se ha eliminado la función :c:func:`PyRange_New`. Nunca se documentó, nunca " +"se utilizó en el código del núcleo, y tenía una comprobación de errores " +"peligrosamente laxa. En el improbable caso de que sus extensiones la " +"utilizaran, puede sustituirla por algo como lo siguiente::" #: ../Doc/whatsnew/2.5.rst:2208 msgid "Port-Specific Changes" -msgstr "" +msgstr "Cambios específicos en los puertos" #: ../Doc/whatsnew/2.5.rst:2210 msgid "" "MacOS X (10.3 and higher): dynamic loading of modules now uses the :c:func:" "`dlopen` function instead of MacOS-specific functions." msgstr "" +"MacOS X (10.3 y superior): la carga dinámica de módulos utiliza ahora la " +"función :c:func:`dlopen` en lugar de funciones específicas de MacOS." #: ../Doc/whatsnew/2.5.rst:2213 msgid "" @@ -2635,6 +3850,10 @@ msgid "" "binary able to run on both PowerPC and Intel processors. (Contributed by " "Ronald Oussoren; :issue:`2573`.)" msgstr "" +"MacOS X: se ha añadido una opción :option:`!--enable-universalsdk` al " +"script :program:`configure` que compila el intérprete como un binario " +"universal capaz de funcionar tanto en procesadores PowerPC como Intel. " +"(Contribución de Ronald Oussoren; :issue:`2573`.)" #: ../Doc/whatsnew/2.5.rst:2218 msgid "" @@ -2642,16 +3861,21 @@ msgid "" "extension modules. :file:`.pyd` is now the only filename extension that " "will be searched for." msgstr "" +"Windows: :file:`.dll` ya no se admite como extensión de nombre de archivo " +"para los módulos de extensión. :file:`.pyd` es ahora la única extensión de " +"nombre de archivo que se buscará." #: ../Doc/whatsnew/2.5.rst:2228 msgid "Porting to Python 2.5" -msgstr "" +msgstr "Adaptación a Python 2.5" #: ../Doc/whatsnew/2.5.rst:2230 msgid "" "This section lists previously described changes that may require changes to " "your code:" msgstr "" +"Esta sección enumera los cambios descritos anteriormente que pueden requerir " +"cambios en su código:" #: ../Doc/whatsnew/2.5.rst:2233 msgid "" @@ -2660,6 +3884,10 @@ msgid "" "encoding declaration. In Python 2.4 this triggered a warning, not a syntax " "error." msgstr "" +"ASCII es ahora la codificación por defecto para los módulos. Ahora es un " +"error de sintaxis si un módulo contiene literales de cadena con caracteres " +"de 8 bits pero no tiene una declaración de codificación. En Python 2.4 esto " +"provocaba una advertencia, no un error de sintaxis." #: ../Doc/whatsnew/2.5.rst:2238 msgid "" @@ -2667,6 +3895,9 @@ msgid "" "object. Because of the :pep:`342` changes described in section :ref:" "`pep-342`, it's now possible for :attr:`gi_frame` to be ``None``." msgstr "" +"Anteriormente, el atributo :attr:`gi_frame` de un generador era siempre un " +"objeto frame. Debido a los cambios de :pep:`342` descritos en la sección :" +"ref:`pep-342`, ahora es posible que :attr:`gi_frame` sea ``None``." #: ../Doc/whatsnew/2.5.rst:2242 msgid "" @@ -2675,6 +3906,11 @@ msgid "" "Unicode using the default ASCII encoding. Previously such comparisons would " "raise a :class:`UnicodeDecodeError` exception." msgstr "" +"Una nueva advertencia, :class:`UnicodeWarning`, se lanza cuando se intenta " +"comparar una cadena Unicode y una cadena de 8 bits que no puede ser " +"convertida a Unicode utilizando la codificación ASCII por defecto. " +"Anteriormente estas comparaciones lanzaban una excepción :class:" +"`UnicodeDecodeError`." #: ../Doc/whatsnew/2.5.rst:2247 msgid "" @@ -2683,15 +3919,22 @@ msgid "" "should be split into lines in a manner which preserves the newline " "characters." msgstr "" +"Biblioteca: el módulo :mod:`csv` es ahora más estricto con los campos " +"citados en varias líneas. Si sus archivos contienen nuevas líneas " +"incrustadas dentro de los campos, la entrada debe dividirse en líneas de " +"manera que se conserven los caracteres de nueva línea." -#: ../Doc/whatsnew/2.5.rst:2251 -#, python-format +#: ../Doc/whatsnew/2.5.rst:2251, python-format msgid "" "Library: the :mod:`locale` module's :func:`format` function's would " "previously accept any string as long as no more than one %char specifier " "appeared. In Python 2.5, the argument must be exactly one %char specifier " "with no surrounding text." msgstr "" +"Biblioteca: la función :func:`format` del módulo :mod:`locale` aceptaba " +"antes cualquier cadena siempre que no apareciera más de un especificador " +"%char. En Python 2.5, el argumento debe ser exactamente un especificador " +"%char sin texto alrededor." #: ../Doc/whatsnew/2.5.rst:2256 msgid "" @@ -2700,6 +3943,10 @@ msgid "" "return a tuple of arguments instead. The modules also no longer accept the " "deprecated *bin* keyword parameter." msgstr "" +"Biblioteca: Los módulos :mod:`pickle` y :mod:`cPickle` ya no aceptan un " +"valor de retorno de ``None`` del método :meth:`__reduce__`; el método debe " +"devolver una tupla de argumentos. Los módulos tampoco aceptan ya el " +"parámetro obsoleto de la palabra clave *bin*." #: ../Doc/whatsnew/2.5.rst:2261 msgid "" @@ -2709,6 +3956,11 @@ msgid "" "RPC2'``. Setting :attr:`rpc_paths` to ``None`` or an empty tuple disables " "this path checking." msgstr "" +"Biblioteca: Las clases :mod:`SimpleXMLRPCServer` y :mod:`DocXMLRPCServer` " +"tienen ahora un atributo :attr:`rpc_paths` que restringe las operaciones XML-" +"RPC a un conjunto limitado de rutas URL; por defecto sólo se permiten " +"``'/'`` y ``'/RPC2'``. Establecer :attr:`rpc_paths` como ``None`` o una " +"tupla vacía desactiva esta comprobación de rutas." #: ../Doc/whatsnew/2.5.rst:2267 msgid "" @@ -2717,6 +3969,11 @@ msgid "" "to make the same change to avoid warnings and to support 64-bit machines. " "See the earlier section :ref:`pep-353` for a discussion of this change." msgstr "" +"API C: Muchas funciones utilizan ahora :c:type:`Py_ssize_t` en lugar de :c:" +"type:`int` para permitir el procesamiento de más datos en máquinas de 64 " +"bits. Es posible que el código de las extensiones tenga que hacer el mismo " +"cambio para evitar advertencias y soportar máquinas de 64 bits. Véase la " +"sección anterior :ref:`pep-353` para una discusión de este cambio." #: ../Doc/whatsnew/2.5.rst:2272 msgid "" @@ -2725,10 +3982,15 @@ msgid "" "Memory allocated with one family's :c:func:`\\*_Malloc` must be freed with " "the corresponding family's :c:func:`\\*_Free` function." msgstr "" +"C API: Los cambios en obmalloc significan que debe tener cuidado de no " +"mezclar el uso de las familias de funciones :c:func:`PyMem_\\*` y :c:func:" +"`PyObject_\\*`. La memoria asignada con la función :c:func:`\\*_Malloc` de " +"una familia debe ser liberada con la función :c:func:`\\*_Free` de la " +"familia correspondiente." #: ../Doc/whatsnew/2.5.rst:2281 msgid "Acknowledgements" -msgstr "" +msgstr "Agradecimientos" #: ../Doc/whatsnew/2.5.rst:2283 msgid "" @@ -2740,3 +4002,9 @@ msgid "" "Paul Prescod, James Pryor, Mike Rovner, Scott Weikart, Barry Warsaw, Thomas " "Wouters." msgstr "" +"El autor desea agradecer a las siguientes personas sus sugerencias, " +"correcciones y ayuda en varios borradores de este artículo: Georg Brandl, " +"Nick Coghlan, Phillip J. Eby, Lars Gustäbel, Raymond Hettinger, Ralf W. " +"Grosse-Kunstleve, Kent Johnson, Iain Lowe, Martin von Löwis, Fredrik Lundh, " +"Andrew McNamara, Skip Montanaro, Gustavo Niemeyer, Paul Prescod, James " +"Pryor, Mike Rovner, Scott Weikart, Barry Warsaw, Thomas Wouters." pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy