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."