diff --git a/dictionaries/whatsnew_2.2.txt b/dictionaries/whatsnew_2.2.txt index 66da58123c..948f4e3e15 100644 --- a/dictionaries/whatsnew_2.2.txt +++ b/dictionaries/whatsnew_2.2.txt @@ -1,5 +1,61 @@ +An +Baxter +Bolen +Bremmer +Briggs +Carel Common +Corp +Donnell +Edward Eiffel +Fellinger +Gerhard +Hagino +Hansen +Hetland +Häring +Icon +Itamar +Jens +Joonas +Jun +Keith +Labs +Language +Lauder +Magnus +Mathewson +Michel +Moore +Overview +Paalasma +Pelletier +Piers +Programming +Quade +Reinhardt +Romberg +Shtull +Solutions +Stephen +Stolk +Tom +Trauring +Ward +What +Wise +descomentarlos +desocuparlos +dev +generización +hackeando +ichiro +itojun +memberst +must +ndiff +of +reanudables subclasificarse -Corp -dev \ No newline at end of file +uu diff --git a/whatsnew/2.2.po b/whatsnew/2.2.po index 73d8cc19b4..53d3b97ff1 100644 --- a/whatsnew/2.2.po +++ b/whatsnew/2.2.po @@ -9,15 +9,15 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-05-06 11:59-0400\n" -"PO-Revision-Date: 2021-04-28 21:33-0500\n" +"PO-Revision-Date: 2021-08-07 10:12+0100\n" "Language-Team: python-doc-es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Last-Translator: José Luis Salgado Banda\n" -"Language: es_MX\n" -"X-Generator: Poedit 2.4.3\n" +"Last-Translator: Claudia Millan \n" +"Language: es\n" +"X-Generator: Poedit 3.0\n" #: ../Doc/whatsnew/2.2.rst:3 msgid "What's New in Python 2.2" @@ -745,7 +745,7 @@ msgstr "" #: ../Doc/whatsnew/2.2.rst:421 msgid "PEP 234: Iterators" -msgstr "" +msgstr "PEP 234: Iteradores" #: ../Doc/whatsnew/2.2.rst:423 msgid "" @@ -753,12 +753,18 @@ msgid "" "and Python levels. Objects can define how they can be looped over by " "callers." msgstr "" +"Otra adición significativa a la versión 2.2 es una interfaz de iteración " +"tanto a nivel de C como de Python. Los objetos pueden definir cómo pueden " +"ser iterados por quienes los llaman." #: ../Doc/whatsnew/2.2.rst:426 msgid "" "In Python versions up to 2.1, the usual way to make ``for item in obj`` work " "is to define a :meth:`__getitem__` method that looks something like this::" msgstr "" +"En las versiones de Python hasta la 2.1, la forma habitual de hacer que " +"funcione ``for item in obj`` es definir un método :meth:`__getitem__` que se " +"parezca a esto::" #: ../Doc/whatsnew/2.2.rst:432 msgid "" @@ -772,6 +778,16 @@ msgid "" "`__getitem__` method doesn't mean that using ``file[5]`` to randomly access " "the sixth element will work, though it really should." msgstr "" +":meth:`__getitem__` se utiliza más adecuadamente para definir una operación " +"de indexación en un objeto, de modo que se puede escribir ``obj[5]`` para " +"recuperar el sexto elemento. Es un poco engañoso cuando se utiliza esto " +"sólo para soportar bucles :keyword:`for`. Considere algún objeto tipo " +"archivo que quiera ser revisado en bucle; el parámetro *index* no tiene " +"sentido, ya que la clase probablemente asume que se hará una serie de " +"llamadas a :meth:`__getitem__` con *index* incrementándose en uno cada vez. " +"En otras palabras, la presencia del método :meth:`__getitem__` no significa " +"que el uso de ``file[5]`` para acceder al azar al sexto elemento vaya a " +"funcionar, aunque realmente debería hacerlo." #: ../Doc/whatsnew/2.2.rst:442 msgid "" @@ -783,6 +799,14 @@ msgid "" "``iter(C, sentinel)`` returns an iterator that will invoke the callable " "object *C* until it returns *sentinel* to signal that the iterator is done." msgstr "" +"En Python 2.2, la iteración puede implementarse por separado, y los métodos :" +"meth:`__getitem__` pueden limitarse a las clases que realmente soportan el " +"acceso aleatorio. La idea básica de los iteradores es simple. Una nueva " +"función incorporada, ``iter(obj)`` o ``iter(C, sentinel)``, se utiliza para " +"obtener un iterador. ``iter(obj)`` retorna un iterador para el objeto *obj*, " +"mientras que ``iter(C, sentinel)`` retorna un iterador que invocará al " +"objeto invocable *C* hasta que retorne *sentinel* para señalar que el " +"iterador ha terminado." #: ../Doc/whatsnew/2.2.rst:450 msgid "" @@ -794,6 +818,14 @@ msgid "" "extension types that want to behave as iterators can define a :c:member:" "`~PyTypeObject.tp_iternext` function." msgstr "" +"Las clases de Python pueden definir un método :meth:`__iter__`, que debe " +"crear y retornar un nuevo iterador para el objeto; si el objeto es su propio " +"iterador, este método puede simplemente retornar ``self``. En particular, " +"los iteradores suelen ser sus propios iteradores. Los tipos de extensión " +"implementados en C pueden implementar una función :c:member:`~PyTypeObject." +"tp_iter` para retornar un iterador, y los tipos de extensión que quieran " +"comportarse como iteradores pueden definir una función :c:member:" +"`~PyTypeObject.tp_iternext`." #: ../Doc/whatsnew/2.2.rst:457 msgid "" @@ -802,6 +834,10 @@ msgid "" "When there are no more values to be returned, calling :meth:`next` should " "raise the :exc:`StopIteration` exception. ::" msgstr "" +"Entonces, después de todo esto, ¿qué hacen realmente los iteradores? Tienen " +"un método obligatorio, :meth:`next`, que no toma argumentos y retorna el " +"siguiente valor. Cuando no hay más valores que retornar, la llamada a :meth:" +"`next` debería lanzar la excepción :exc:`StopIteration`. ::" #: ../Doc/whatsnew/2.2.rst:478 msgid "" @@ -814,6 +850,14 @@ msgid "" "changed to use the iterator protocol. This means you can do things like " "this::" msgstr "" +"En 2.2, la sentencia :keyword:`for` de Python ya no espera una secuencia; " +"espera algo para lo que :func:`iter` retornará un iterador. Por " +"compatibilidad y comodidad, se construye automáticamente un iterador para " +"las secuencias que no implementan :meth:`__iter__` o una ranura :c:member:" +"`~PyTypeObject.tp_iter`, por lo que ``for i in [1,2,3]`` seguirá " +"funcionando. Dondequiera que el intérprete de Python haga un bucle sobre " +"una secuencia, se ha cambiado para utilizar el protocolo de los iteradores. " +"Esto significa que puedes hacer cosas como esta::" #: ../Doc/whatsnew/2.2.rst:492 msgid "" @@ -821,6 +865,9 @@ msgid "" "func:`iter` on a dictionary will return an iterator which loops over its " "keys::" msgstr "" +"Se ha añadido soporte de iteradores a algunos de los tipos básicos de " +"Python. Llamar a :func:`iter` sobre un diccionario retornará un iterador " +"que hace un bucle sobre sus claves::" #: ../Doc/whatsnew/2.2.rst:512 msgid "" @@ -830,6 +877,12 @@ msgid "" "iterator. In a minor related change, the :keyword:`in` operator now works on " "dictionaries, so ``key in dict`` is now equivalent to ``dict.has_key(key)``." msgstr "" +"Este es el comportamiento por defecto. Si quieres iterar sobre claves, " +"valores o pares clave/valor, puedes llamar explícitamente a los métodos :" +"meth:`iterkeys`, :meth:`itervalues` o :meth:`iteritems` para obtener un " +"iterador apropiado. En un cambio menor relacionado, el operador :keyword:" +"`in` ahora funciona en los diccionarios, por lo que ``key in dict`` es ahora " +"equivalente a ``dict.has_key(key)``." #: ../Doc/whatsnew/2.2.rst:518 msgid "" @@ -837,6 +890,9 @@ msgid "" "until there are no more lines in the file. This means you can now read each " "line of a file using code like this::" msgstr "" +"Los archivos también proporcionan un iterador, que llama al método :meth:" +"`readline` hasta que no hay más líneas en el archivo. Esto significa que " +"ahora puede leer cada línea de un archivo utilizando un código como este::" #: ../Doc/whatsnew/2.2.rst:526 msgid "" @@ -845,26 +901,34 @@ msgid "" "object could provide such additional capabilities, but the iterator protocol " "only requires a :meth:`next` method." msgstr "" +"Tenga en cuenta que sólo puede avanzar en un iterador; no hay forma de " +"obtener el elemento anterior, reiniciar el iterador o hacer una copia del " +"mismo. Un objeto iterador podría proporcionar estas capacidades adicionales, " +"pero el protocolo iterador sólo requiere un método :meth:`next`." #: ../Doc/whatsnew/2.2.rst:535 msgid ":pep:`234` - Iterators" -msgstr "" +msgstr ":pep:`234` - Iteradores" #: ../Doc/whatsnew/2.2.rst:535 msgid "" "Written by Ka-Ping Yee and GvR; implemented by the Python Labs crew, mostly " "by GvR and Tim Peters." msgstr "" +"Escrito por Ka-Ping Yee y GvR; implementado por el equipo de Python Labs, " +"principalmente por GvR y Tim Peters." #: ../Doc/whatsnew/2.2.rst:542 msgid "PEP 255: Simple Generators" -msgstr "" +msgstr "PEP 255: Generadores simples" #: ../Doc/whatsnew/2.2.rst:544 msgid "" "Generators are another new feature, one that interacts with the introduction " "of iterators." msgstr "" +"Los generadores son otra novedad que interactúa con la introducción de los " +"iteradores." #: ../Doc/whatsnew/2.2.rst:547 msgid "" @@ -878,10 +942,20 @@ msgid "" "This is what generators provide; they can be thought of as resumable " "functions." msgstr "" +"Sin duda estás familiarizado con cómo funcionan las llamadas a funciones en " +"Python o C. Cuando llamas a una función, ésta obtiene un espacio de nombres " +"privado donde se crean sus variables locales. Cuando la función llega a una " +"declaración :keyword:`return`, las variables locales se destruyen y el valor " +"resultante se retorna a quien la llamó. Una llamada posterior a la misma " +"función obtendrá un nuevo conjunto de variables locales. Pero, ¿qué pasaría " +"si las variables locales no se tiraran al salir de una función? ¿Qué pasaría " +"si pudieras reanudar la función donde la dejaste? Esto es lo que " +"proporcionan los generadores; se puede pensar en ellos como funciones " +"reanudables." #: ../Doc/whatsnew/2.2.rst:556 msgid "Here's the simplest example of a generator function::" -msgstr "" +msgstr "Este es el ejemplo más sencillo de una función generadora::" #: ../Doc/whatsnew/2.2.rst:562 msgid "" @@ -893,6 +967,15 @@ msgid "" "import generators`` statement near the top of the module's source code. In " "Python 2.3 this statement will become unnecessary." msgstr "" +"Se ha introducido una nueva palabra clave, :keyword:`yield`, para los " +"generadores. Cualquier función que contenga una declaración :keyword:`!" +"yield` es una función generadora; esto es detectado por el compilador de " +"código de bits de Python que compila la función especialmente como " +"resultado. Debido a la introducción de una nueva palabra clave, los " +"generadores deben ser explícitamente habilitados en un módulo incluyendo una " +"declaración ``from __future__ import generators`` cerca de la parte superior " +"del código fuente del módulo. En Python 2.3 esta declaración será " +"innecesaria." #: ../Doc/whatsnew/2.2.rst:570 msgid "" @@ -909,16 +992,31 @@ msgid "" "`try`...\\ :keyword:`finally` statement; read :pep:`255` for a full " "explanation of the interaction between :keyword:`!yield` and exceptions.)" msgstr "" +"Cuando se llama a una función generadora, ésta no retorna un único valor, " +"sino que retorna un objeto generador que soporta el protocolo de los " +"iteradores. Al ejecutar la sentencia :keyword:`yield`, el generador retorna " +"el valor de ``i``, de forma similar a una sentencia :keyword:`return`. La " +"gran diferencia entre :keyword:`!yield` y una sentencia :keyword:`!return` " +"es que al llegar a una sentencia :keyword:`!yield` se suspende el estado de " +"ejecución del generador y se conservan las variables locales. En la " +"siguiente llamada al método ``next()`` del generador, la función se " +"reanudará la ejecución inmediatamente después de la sentencia :keyword:`!" +"yield`. (Por razones complicadas, la sentencia :keyword:`!yield` no está " +"permitida dentro del bloque :keyword:`!try` de una sentencia :keyword:" +"`try`...`\\ :keyword:`finally`; lea :pep:`255` para una explicación completa " +"de la interacción entre :keyword:`!yield` y las excepciones)" #: ../Doc/whatsnew/2.2.rst:583 msgid "Here's a sample usage of the :func:`generate_ints` generator::" -msgstr "" +msgstr "Este es un ejemplo de uso del generador :func:`generate_ints`::" #: ../Doc/whatsnew/2.2.rst:600 msgid "" "You could equally write ``for i in generate_ints(5)``, or ``a,b,c = " "generate_ints(3)``." msgstr "" +"También podrías escribir ``for i in generate_ints(5)``, o ``a,b,c = " +"generate_ints(3)``." #: ../Doc/whatsnew/2.2.rst:603 msgid "" @@ -930,6 +1028,13 @@ msgid "" "indicated by raising :exc:`StopIteration` manually, or by just letting the " "flow of execution fall off the bottom of the function." msgstr "" +"Dentro de una función generadora, la sentencia :keyword:`return` sólo puede " +"usarse sin un valor, y señala el final de la procesión de valores; después " +"el generador no puede retornar más valores. :keyword:`!return` con un valor, " +"como ``return 5``, es un error de sintaxis dentro de una función " +"generadora. El final de los resultados del generador también puede " +"indicarse levantando manualmente :exc:`StopIteration`, o simplemente dejando " +"que el flujo de ejecución caiga en el fondo de la función." #: ../Doc/whatsnew/2.2.rst:611 msgid "" @@ -943,6 +1048,15 @@ msgid "" "The simplest one implements an in-order traversal of a tree using generators " "recursively. ::" msgstr "" +"Puedes conseguir el efecto de los generadores manualmente escribiendo tu " +"propia clase y almacenando todas las variables locales del generador como " +"variables de instancia. Por ejemplo, la lución de una lista de enteros " +"podría hacerse estableciendo ``self.count`` a 0, y haciendo que el método :" +"meth:`next` incremente ``self.count`` y lo retorne. Sin embargo, para un " +"generador medianamente complicado, escribir la clase correspondiente sería " +"mucho más complicado. :file:`Lib/test/test_generators.py` contiene varios " +"ejemplos más interesantes. El más sencillo implementa un recorrido en orden " +"de un árbol utilizando generadores de forma recursiva ::" #: ../Doc/whatsnew/2.2.rst:629 msgid "" @@ -952,6 +1066,11 @@ msgid "" "knight to every square of an $NxN$ chessboard without visiting any square " "twice)." msgstr "" +"Otros dos ejemplos en :file:`Lib/test/test_generators.py` producen " +"soluciones para el problema de las N reinas (colocar $N$ reinas en un " +"tablero de ajedrez $NxN$ de forma que ninguna reina amenace a otra) y el " +"recorrido del caballero (una ruta que lleva a un caballo a cada casilla de " +"un tablero de ajedrez $NxN$ sin visitar ninguna casilla dos veces)." #: ../Doc/whatsnew/2.2.rst:634 msgid "" @@ -962,6 +1081,12 @@ msgid "" "\" at https://www.cs.arizona.edu/icon/docs/ipd266.htm gives an idea of what " "this looks like::" msgstr "" +"La idea de los generadores proviene de otros lenguajes de programación, " +"especialmente de Icon (https://www.cs.arizona.edu/icon/), donde la idea de " +"los generadores es fundamental. En Icon, cada expresión y llamada a una " +"función se comporta como un generador. Un ejemplo de \"*An Overview of the " +"Icon Programming Language*\" en https://www.cs.arizona.edu/icon/docs/ipd266." +"htm da una idea de cómo es esto::" #: ../Doc/whatsnew/2.2.rst:644 msgid "" @@ -971,6 +1096,12 @@ msgid "" "Icon retries it with the second value of 23. 23 is greater than 5, so the " "comparison now succeeds, and the code prints the value 23 to the screen." msgstr "" +"En Icon la función :func:`find` retorna los índices en los que se encuentra " +"la subcadena \"o\": 3, 23, 33. En la sentencia :keyword:`if`, a ``i`` se le " +"asigna primero un valor de 3, pero 3 es menor que 5, por lo que la " +"comparación falla, e Icon la reintenta con el segundo valor de 23. 23 es " +"mayor que 5, por lo que la comparación ahora tiene éxito, y el código " +"imprime el valor 23 en la pantalla." #: ../Doc/whatsnew/2.2.rst:650 msgid "" @@ -982,10 +1113,18 @@ msgid "" "represented as a concrete object (the iterator) that can be passed around to " "other functions or stored in a data structure." msgstr "" +"Python no va tan lejos como Icon en la adopción de generadores como concepto " +"central. Los generadores se consideran una nueva parte del núcleo del " +"lenguaje Python, pero aprenderlos o utilizarlos no es obligatorio; si no " +"resuelven ningún problema que tengas, siéntete libre de ignorarlos. Una " +"característica novedosa de la interfaz de Python en comparación con la de " +"Icon es que el estado de un generador se representa como un objeto concreto " +"(el iterador) que puede pasarse a otras funciones o almacenarse en una " +"estructura de datos." #: ../Doc/whatsnew/2.2.rst:662 msgid ":pep:`255` - Simple Generators" -msgstr "" +msgstr ":pep:`255` - Generadores simples" #: ../Doc/whatsnew/2.2.rst:662 msgid "" @@ -993,10 +1132,13 @@ msgid "" "mostly by Neil Schemenauer and Tim Peters, with other fixes from the Python " "Labs crew." msgstr "" +"Escrito por Neil Schemenauer, Tim Peters, Magnus Lie Hetland. Implementado " +"principalmente por Neil Schemenauer y Tim Peters, con otras correcciones del " +"equipo de Python Labs." #: ../Doc/whatsnew/2.2.rst:669 msgid "PEP 237: Unifying Long Integers and Integers" -msgstr "" +msgstr "PEP 237: Unificación de enteros largos y enteros" #: ../Doc/whatsnew/2.2.rst:671 msgid "" @@ -1010,6 +1152,16 @@ msgid "" "be used as a slice index, and ``'abc'[1L:]`` would raise a :exc:`TypeError` " "exception with the message 'slice index must be int'." msgstr "" +"En versiones recientes, la distinción entre enteros regulares, que son " +"valores de 32 bits en la mayoría de las máquinas, y enteros largos, que " +"pueden tener un tamaño arbitrario, se estaba convirtiendo en una molestia. " +"Por ejemplo, en las plataformas que soportan archivos de más de ``2**32`` " +"bytes, el método :meth:`tell` de los objetos archivo tiene que retornar un " +"entero largo. Sin embargo, había varias partes de Python que esperaban " +"números enteros simples y que daban un error si se proporcionaba un número " +"entero largo en su lugar. Por ejemplo, en Python 1.5, sólo podían usarse " +"enteros normales como índice de corte, y ``'abc'[1L:]`` lanzaba una " +"excepción :exc:`TypeError` con el mensaje 'slice index must be int'." #: ../Doc/whatsnew/2.2.rst:681 msgid "" @@ -1021,6 +1173,13 @@ msgid "" "to raise an :exc:`OverflowError` will now return a long integer as their " "result. For example::" msgstr "" +"Python 2.2 cambiará los valores de enteros cortos a enteros largos según sea " +"necesario. El sufijo 'L' ya no es necesario para indicar un literal entero " +"largo, ya que ahora el compilador elegirá el tipo apropiado. (El uso del " +"sufijo 'L' se desaconsejará en futuras versiones 2.x de Python, provocando " +"una advertencia en Python 2.4, y probablemente se eliminará en Python 3.0) " +"Muchas operaciones que solían lanzar un :exc:`OverflowError` ahora " +"retornarán un entero largo como resultado. Por ejemplo::" #: ../Doc/whatsnew/2.2.rst:694 msgid "" @@ -1028,20 +1187,25 @@ msgid "" "You can still distinguish them with the :func:`type` built-in function, but " "that's rarely needed." msgstr "" +"En la mayoría de los casos, los enteros y los enteros largos se tratarán " +"ahora de forma idéntica. Todavía se pueden distinguir con la función " +"incorporada :func:`type`, pero rara vez se necesita." #: ../Doc/whatsnew/2.2.rst:702 msgid ":pep:`237` - Unifying Long Integers and Integers" -msgstr "" +msgstr ":pep:`237` - Unificación de enteros largos y enteros" #: ../Doc/whatsnew/2.2.rst:702 msgid "" "Written by Moshe Zadka and Guido van Rossum. Implemented mostly by Guido " "van Rossum." msgstr "" +"Escrito por Moshe Zadka y Guido van Rossum. Implementado principalmente por " +"Guido van Rossum." #: ../Doc/whatsnew/2.2.rst:709 msgid "PEP 238: Changing the Division Operator" -msgstr "" +msgstr "PEP 238: Cambio del operador de división" #: ../Doc/whatsnew/2.2.rst:711 msgid "" @@ -1055,6 +1219,16 @@ msgid "" "the two operands and because Python is dynamically typed, it can be " "difficult to determine the possible types of the operands." msgstr "" +"El cambio más controvertido de Python 2.2 anuncia el inicio de un esfuerzo " +"por arreglar un viejo defecto de diseño que ha estado en Python desde el " +"principio. Actualmente, el operador de división de Python, ``/``, se " +"comporta como el operador de división de C cuando se le presentan dos " +"argumentos enteros: retorna un resultado entero que se trunca cuando hay una " +"parte fraccionaria. Por ejemplo, ``3/2`` es 1, no 1,5, y ``(-1)/2`` es -1, " +"no -0,5. Esto significa que los resultados de la división pueden variar " +"inesperadamente dependiendo del tipo de los dos operandos y, como Python " +"está tipado dinámicamente, puede ser difícil determinar los posibles tipos " +"de los operandos." #: ../Doc/whatsnew/2.2.rst:721 msgid "" @@ -1065,6 +1239,13 @@ msgid "" "either side here and will stick to describing what's implemented in 2.2. " "Read :pep:`238` for a summary of arguments and counter-arguments.)" msgstr "" +"(La controversia se centra en si esto es *realmente* un defecto de diseño, y " +"si vale la pena romper el código existente para arreglarlo. Ha provocado " +"interminables discusiones en python-dev, y en julio de 2001 estalló una " +"tormenta de publicaciones ácidamente sarcásticas en :newsgroup:`comp.lang." +"python`. No argumentaré aquí a favor de ninguno de los dos bandos y me " +"limitaré a describir lo que se ha implementado en la 2.2. Lea :pep:`238` " +"para un resumen de los argumentos y contra-argumentos)" #: ../Doc/whatsnew/2.2.rst:728 msgid "" @@ -1072,6 +1253,9 @@ msgid "" "Python 2.2 begins the transition, but the switch won't be complete until " "Python 3.0." msgstr "" +"Debido a que este cambio podría romper el código, se está introduciendo de " +"forma muy gradual. Python 2.2 comienza la transición, pero el cambio no será " +"completo hasta Python 3.0." #: ../Doc/whatsnew/2.2.rst:732 msgid "" @@ -1084,10 +1268,20 @@ msgid "" "operands are integers, and returns the result of true division when one of " "the operands is a floating-point number." msgstr "" +"En primer lugar, tomaré prestada alguna terminología de :pep:`238`. La " +"\"división verdadera\" es la división con la que la mayoría de los no " +"programadores están familiarizados: 3/2 es 1,5, 1/4 es 0,25, y así " +"sucesivamente. La \"división por el piso\" es lo que hace actualmente el " +"operador ``/`` de Python cuando se le dan operandos enteros; el resultado es " +"el piso del valor retornado por la división verdadera. La \"división clásica" +"\" es el comportamiento mixto actual de ``/``; retorna el resultado de la " +"división por el suelo cuando los operandos son enteros, y retorna el " +"resultado de la división verdadera cuando uno de los operandos es un número " +"de punto flotante." #: ../Doc/whatsnew/2.2.rst:740 msgid "Here are the changes 2.2 introduces:" -msgstr "" +msgstr "Estos son los cambios que introduce la versión 2.2:" #: ../Doc/whatsnew/2.2.rst:742 msgid "" @@ -1096,12 +1290,18 @@ msgid "" "no matter what the types of its operands are, so ``1 // 2`` is 0 and " "``1.0 // 2.0`` is also 0.0." msgstr "" +"Un nuevo operador, ``//``, es el operador de división por el suelo. (Sí, ya " +"sabemos que se parece al símbolo de comentario de C++.) ``//`` *siempre* " +"realiza la división por el suelo sin importar los tipos de sus operandos, " +"así que ``1 // 2`` es 0 y ``1.0 // 2.0`` también es 0.0." #: ../Doc/whatsnew/2.2.rst:747 msgid "" "``//`` is always available in Python 2.2; you don't need to enable it using " "a ``__future__`` statement." msgstr "" +"``//` está siempre disponible en Python 2.2; no es necesario habilitarlo " +"mediante una sentencia ``__future__``." #: ../Doc/whatsnew/2.2.rst:750 msgid "" @@ -1110,6 +1310,11 @@ msgid "" "is 0.5. Without the ``__future__`` statement, ``/`` still means classic " "division. The default meaning of ``/`` will not change until Python 3.0." msgstr "" +"Al incluir una declaración ``from __future__ import division`` en un módulo, " +"el operador ``/`` se cambiará para retornar el resultado de la división " +"verdadera, por lo que ``1/2`` es 0,5. Sin la declaración ``__future__``, ``/" +"`` sigue significando la división clásica. El significado por defecto de ``/" +"`` no cambiará hasta Python 3.0." #: ../Doc/whatsnew/2.2.rst:755 msgid "" @@ -1118,6 +1323,10 @@ msgid "" "there are also slots in the :c:type:`PyNumberMethods` structure so extension " "types can define the two operators." msgstr "" +"Las clases pueden definir métodos llamados :meth:`__truediv__` y :meth:" +"`__floordiv__` para sobrecargar los dos operadores de división. En el nivel " +"C, también hay ranuras en la estructura :c:type:`PyNumberMethods` para que " +"los tipos de extensión puedan definir los dos operadores." #: ../Doc/whatsnew/2.2.rst:760 msgid "" @@ -1128,20 +1337,29 @@ msgid "" "and fix it. By default, Python 2.2 will simply perform classic division " "without a warning; the warning will be turned on by default in Python 2.3." msgstr "" +"Python 2.2 admite algunos argumentos de línea de comandos para comprobar si " +"el código funcionará con la semántica de división modificada. Ejecutar " +"python con :option:`!-Q warn` hará que se emita una advertencia cada vez que " +"se aplique la división a dos enteros. Puedes usar esto para encontrar el " +"código que está afectado por el cambio y arreglarlo. Por defecto, Python " +"2.2 simplemente realizará la división clásica sin una advertencia; la " +"advertencia se activará por defecto en Python 2.3." #: ../Doc/whatsnew/2.2.rst:770 msgid ":pep:`238` - Changing the Division Operator" -msgstr "" +msgstr ":pep:`238` - Cambio del operador de división" #: ../Doc/whatsnew/2.2.rst:771 msgid "" "Written by Moshe Zadka and Guido van Rossum. Implemented by Guido van " "Rossum.." msgstr "" +"Escrito por Moshe Zadka y Guido van Rossum. Implementado por Guido van " +"Rossum.." #: ../Doc/whatsnew/2.2.rst:777 msgid "Unicode Changes" -msgstr "" +msgstr "Cambios en Unicode" #: ../Doc/whatsnew/2.2.rst:779 msgid "" @@ -1152,6 +1370,13 @@ msgid "" "script. (It's also possible to specify :option:`!--disable-unicode` to " "completely disable Unicode support.)" msgstr "" +"El soporte de Unicode de Python se ha mejorado un poco en la versión 2.2. " +"Las cadenas Unicode se almacenan normalmente como UCS-2, como enteros sin " +"signo de 16 bits. Python 2.2 también puede ser compilado para usar UCS-4, " +"enteros sin signo de 32 bits, como su codificación interna suministrando :" +"option:`!--enable-unicode=ucs4` al script de configuración. (También es " +"posible especificar :option:`!--disable-unicode` para desactivar " +"completamente el soporte de Unicode)" #: ../Doc/whatsnew/2.2.rst:786 msgid "" @@ -1163,6 +1388,14 @@ msgid "" "exception. This is all described in :pep:`261`, \"Support for 'wide' Unicode " "characters\"; consult it for further details." msgstr "" +"Cuando se compila para usar UCS-4 (un \"Python amplio\"), el intérprete " +"puede manejar de forma nativa caracteres Unicode desde U+000000 hasta U" +"+110000, por lo que el rango de valores legales para la función :func:" +"`unichr` se expande en consecuencia. Utilizando un intérprete compilado " +"para usar UCS-2 (un \"Python estrecho\"), los valores mayores de 65535 " +"seguirán provocando que :func:`unichr` lance una excepción :exc:" +"`ValueError`. Todo esto se describe en :pep:`261`, \"Soporte para caracteres " +"Unicode 'anchos'\"; consúltelo para más detalles." #: ../Doc/whatsnew/2.2.rst:794 msgid "" @@ -1174,6 +1407,13 @@ msgid "" "specified encoding and decodes it, returning whatever is returned by the " "codec." msgstr "" +"Otro cambio es más sencillo de explicar. Desde su introducción, las cadenas " +"Unicode han soportado un método :meth:`encode` para convertir la cadena a " +"una codificación seleccionada como UTF-8 o Latin-1. Un método simétrico " +"``decode([*encoding*])`` ha sido añadido a las cadenas de 8 bits (aunque no " +"a las cadenas Unicode) en 2.2. :meth:`decode` asume que la cadena está en la " +"codificación especificada y la decodifica, retornando lo que sea retornado " +"por el códec." #: ../Doc/whatsnew/2.2.rst:801 msgid "" @@ -1181,12 +1421,18 @@ msgid "" "related to Unicode. For example, codecs have been added for uu-encoding, " "MIME's base64 encoding, and compression with the :mod:`zlib` module::" msgstr "" +"Gracias a esta nueva función, se han añadido códecs para tareas no " +"relacionadas directamente con Unicode. Por ejemplo, se han añadido códecs " +"para la codificación uu, la codificación base64 de MIME y la compresión con " +"el módulo :mod:`zlib`::" #: ../Doc/whatsnew/2.2.rst:822 msgid "" "To convert a class instance to Unicode, a :meth:`__unicode__` method can be " "defined by a class, analogous to :meth:`__str__`." msgstr "" +"Para convertir una instancia de clase a Unicode, se puede definir un método :" +"meth:`__unicode__` por clase, análogo a :meth:`__str__`." #: ../Doc/whatsnew/2.2.rst:825 msgid "" @@ -1194,18 +1440,21 @@ msgid "" "Marc-André Lemburg. The changes to support using UCS-4 internally were " "implemented by Fredrik Lundh and Martin von Löwis." msgstr "" +":meth:`encode`, :meth:`decode`, y :meth:`__unicode__` fueron implementados " +"por Marc-André Lemburg. Los cambios para soportar el uso de UCS-4 " +"internamente fueron implementados por Fredrik Lundh y Martin von Löwis." #: ../Doc/whatsnew/2.2.rst:832 msgid ":pep:`261` - Support for 'wide' Unicode characters" -msgstr "" +msgstr ":pep:`261` - Soporte para caracteres Unicode 'anchos'" #: ../Doc/whatsnew/2.2.rst:833 msgid "Written by Paul Prescod." -msgstr "" +msgstr "Escrito por Paul Prescod." #: ../Doc/whatsnew/2.2.rst:839 msgid "PEP 227: Nested Scopes" -msgstr "" +msgstr "PEP 227: Ámbitos anidados" #: ../Doc/whatsnew/2.2.rst:841 msgid "" @@ -1216,6 +1465,13 @@ msgid "" "scopes from my \"What's New in Python 2.1\" document; if you read it when " "2.1 came out, you can skip the rest of this section." msgstr "" +"En Python 2.1, los ámbitos anidados estáticamente se añadieron como una " +"característica opcional, que se activaba mediante una directiva ``from " +"__future__ import nested_scopes``. En 2.2 los ámbitos anidados ya no " +"necesitan ser habilitados especialmente, y ahora están siempre presentes. " +"El resto de esta sección es una copia de la descripción de los ámbitos " +"anidados de mi documento \"What's New in Python 2.1\"; si lo leíste cuando " +"salió la 2.1, puedes saltarte el resto de esta sección." #: ../Doc/whatsnew/2.2.rst:848 msgid "" @@ -1226,6 +1482,12 @@ msgid "" "their intuitive expectations. For example, a nested recursive function " "definition doesn't work::" msgstr "" +"El mayor cambio introducido en Python 2.1, y completado en 2.2, es el de las " +"reglas de alcance de Python. En Python 2.0, en cualquier momento hay como " +"máximo tres espacios de nombres utilizados para buscar nombres de variables: " +"local, a nivel de módulo y el espacio de nombres incorporado. Esto a menudo " +"sorprendía a la gente porque no coincidía con sus expectativas intuitivas. " +"Por ejemplo, una definición de función recursiva anidada no funciona::" #: ../Doc/whatsnew/2.2.rst:862 msgid "" @@ -1238,12 +1500,22 @@ msgid "" "find local variables being copied by passing them as the default values of " "arguments. ::" msgstr "" +"La función :func:`g` siempre lanzará una excepción :exc:`NameError`, porque " +"el enlace del nombre ``g`` no está ni en su espacio de nombres local ni en " +"el espacio de nombres a nivel de módulo. Esto no es un gran problema en la " +"práctica (¿con qué frecuencia se definen recursivamente funciones interiores " +"como ésta?), pero esto también hacía más torpe el uso de la expresión :" +"keyword:`lambda`, y esto era un problema en la práctica. En el código que " +"utiliza :keyword:`!lambda` a menudo se pueden encontrar variables locales " +"que se copian al pasarlas como valores por defecto de los argumentos. ::" #: ../Doc/whatsnew/2.2.rst:876 msgid "" "The readability of Python code written in a strongly functional style " "suffers greatly as a result." msgstr "" +"La legibilidad del código Python escrito en un estilo fuertemente funcional " +"sufre mucho como resultado." #: ../Doc/whatsnew/2.2.rst:879 msgid "" @@ -1256,6 +1528,15 @@ msgid "" "local namespace of the enclosing scope. A more detailed explanation of the " "rules, and a dissection of the implementation, can be found in the PEP." msgstr "" +"El cambio más significativo de Python 2.2 es que se ha añadido al lenguaje " +"el ámbito estático para solucionar este problema. Como primer efecto, el " +"argumento por defecto ``name=name`` es ahora innecesario en el ejemplo " +"anterior. En pocas palabras, cuando a un nombre de variable dado no se le " +"asigna un valor dentro de una función (mediante una asignación, o las " +"sentencias :keyword:`def`, :keyword:`class`, o :keyword:`import`), las " +"referencias a la variable se buscarán en el espacio de nombres local del " +"ámbito que la rodea. Puede encontrar una explicación más detallada de las " +"reglas y una disección de la implementación en el PEP." #: ../Doc/whatsnew/2.2.rst:888 msgid "" @@ -1265,6 +1546,11 @@ msgid "" "rather unlikely though, since such code would have been pretty confusing to " "read in the first place." msgstr "" +"Este cambio puede causar algunos problemas de compatibilidad para el código " +"en el que el mismo nombre de variable se utiliza tanto a nivel de módulo " +"como de variable local dentro de una función que contiene otras definiciones " +"de función. Sin embargo, esto parece bastante improbable, ya que dicho " +"código habría sido bastante confuso de leer en primer lugar." #: ../Doc/whatsnew/2.2.rst:894 msgid "" @@ -1281,10 +1567,25 @@ msgid "" "function definitions or :keyword:`lambda` expressions with free variables, " "the compiler will flag this by raising a :exc:`SyntaxError` exception." msgstr "" +"Un efecto secundario del cambio es que las sentencias ``from module import " +"*`` y ``exec`` se han hecho ilegales dentro del ámbito de una función bajo " +"ciertas condiciones. El manual de referencia de Python ha dicho todo el " +"tiempo que ``from module import *`` sólo es legal en el nivel superior de un " +"módulo, pero el intérprete de CPython nunca ha aplicado esto antes. Como " +"parte de la implementación de los ámbitos anidados, el compilador que " +"convierte el código fuente de Python en bytecodes tiene que generar un " +"código diferente para acceder a las variables de un ámbito contenedor. Los " +"códigos ``from module import *`` y ``exec`` hacen que el compilador no pueda " +"averiguar esto, porque añaden nombres al espacio de nombres local que son " +"desconocidos en tiempo de compilación. Por lo tanto, si una función contiene " +"definiciones de funciones o expresiones :keyword:`lambda` con variables " +"libres, el compilador lo señalará lanzando una excepción :exc:`SyntaxError`." #: ../Doc/whatsnew/2.2.rst:907 msgid "To make the preceding explanation a bit clearer, here's an example::" msgstr "" +"Para que la explicación anterior quede un poco más clara, he aquí un " +"ejemplo::" #: ../Doc/whatsnew/2.2.rst:916 msgid "" @@ -1292,6 +1593,9 @@ msgid "" "would define a new local variable named ``x`` whose value should be accessed " "by :func:`g`." msgstr "" +"La línea 4 que contiene la sentencia ``exec`` es un error de sintaxis, ya " +"que ``exec`` definiría una nueva variable local llamada ``x`` cuyo valor " +"debería ser accedido por :func:`g`." #: ../Doc/whatsnew/2.2.rst:920 msgid "" @@ -1299,18 +1603,21 @@ msgid "" "most Python code (and when it is used, it's often a sign of a poor design " "anyway)." msgstr "" +"Esto no debería ser una gran limitación, ya que ``exec`` rara vez se utiliza " +"en la mayoría del código de Python (y cuando se utiliza, a menudo es un " +"signo de un mal diseño de todos modos)." #: ../Doc/whatsnew/2.2.rst:927 msgid ":pep:`227` - Statically Nested Scopes" -msgstr "" +msgstr ":pep:`227` - Ámbitos anidados estáticamente" #: ../Doc/whatsnew/2.2.rst:928 msgid "Written and implemented by Jeremy Hylton." -msgstr "" +msgstr "Escrito e implementado por Jeremy Hylton." #: ../Doc/whatsnew/2.2.rst:934 msgid "New and Improved Modules" -msgstr "" +msgstr "Módulos nuevos y mejorados" #: ../Doc/whatsnew/2.2.rst:936 msgid "" @@ -1320,6 +1627,12 @@ msgid "" "example, the following snippet retrieves a list of RSS channels from the " "O'Reilly Network, and then lists the recent headlines for one channel::" msgstr "" +"El módulo :mod:`xmlrpclib` fue aportado a la biblioteca estándar por Fredrik " +"Lundh, proporcionando soporte para escribir clientes XML-RPC. XML-RPC es un " +"sencillo protocolo de llamada a procedimientos remotos construido sobre HTTP " +"y XML. Por ejemplo, el siguiente fragmento recupera una lista de canales RSS " +"de la red O'Reilly y, a continuación, muestra los titulares recientes de un " +"canal::" #: ../Doc/whatsnew/2.2.rst:959 msgid "" @@ -1327,12 +1640,17 @@ msgid "" "XML-RPC servers. See http://xmlrpc.scripting.com/ for more information " "about XML-RPC." msgstr "" +"El módulo :mod:`SimpleXMLRPCServer` facilita la creación de servidores XML-" +"RPC sencillos. Consulte http://xmlrpc.scripting.com/ para obtener más " +"información sobre XML-RPC." #: ../Doc/whatsnew/2.2.rst:962 msgid "" "The new :mod:`hmac` module implements the HMAC algorithm described by :rfc:" "`2104`. (Contributed by Gerhard Häring.)" msgstr "" +"El nuevo módulo :mod:`hmac` implementa el algoritmo HMAC descrito por :rfc:" +"`2104`. (Contribución de Gerhard Häring)" #: ../Doc/whatsnew/2.2.rst:965 msgid "" @@ -1343,6 +1661,12 @@ msgid "" "mod:`os` module, and :func:`localtime`, :func:`gmtime`, and :func:`strptime` " "in the :mod:`time` module." msgstr "" +"Varias funciones que originalmente retornaban tuplas largas ahora retornan " +"pseudo-secuencias que siguen comportándose como tuplas pero que también " +"tienen atributos mnemónicos como memberst_mtime o :attr:`tm_year`. Las " +"funciones mejoradas incluyen :func:`stat`, :func:`fstat`, :func:`statvfs` y :" +"func:`fstatvfs` en el módulo :mod:`os`, y :func:`localtime`, :func:`gmtime` " +"y :func:`strptime` en el módulo :mod:`time`." #: ../Doc/whatsnew/2.2.rst:972 msgid "" @@ -1351,10 +1675,14 @@ msgid "" "now this can be written more clearly as ``file_size = os.stat(filename)." "st_size``." msgstr "" +"Por ejemplo, para obtener el tamaño de un archivo utilizando las antiguas " +"tuplas, se terminaba escribiendo algo como ``tamaño_de_archivo = os." +"stat(nombre_de_archivo)[stat.ST_SIZE]``, pero ahora se puede escribir más " +"claramente como ``tamaño_de_archivo = os.stat(nombre_de_archivo).st_size``." #: ../Doc/whatsnew/2.2.rst:976 msgid "The original patch for this feature was contributed by Nick Mathewson." -msgstr "" +msgstr "El parche original para esta función fue aportado por Nick Mathewson." #: ../Doc/whatsnew/2.2.rst:978 msgid "" @@ -1362,6 +1690,9 @@ msgid "" "output have been corrected. (Contributed by Fred L. Drake, Jr. and Tim " "Peters.)" msgstr "" +"El perfilador de Python ha sido ampliamente revisado y se han corregido " +"varios errores en su salida. (Contribución de Fred L. Drake, Jr. y Tim " +"Peters)" #: ../Doc/whatsnew/2.2.rst:981 msgid "" @@ -1369,6 +1700,9 @@ msgid "" "option:`!--enable-ipv6` option to Python's configure script. (Contributed " "by Jun-ichiro \"itojun\" Hagino.)" msgstr "" +"El módulo :mod:`socket` puede ser compilado para soportar IPv6; especifica " +"la opción :option:`!--enable-ipv6` al script configure de Python. " +"(Contribución de Jun-ichiro \"itojun\" Hagino)" #: ../Doc/whatsnew/2.2.rst:985 msgid "" @@ -1377,6 +1711,11 @@ msgid "" "for a signed 64-bit integer, and ``Q`` is for an unsigned one. The value is " "returned in Python's long integer type. (Contributed by Tim Peters.)" msgstr "" +"Se han añadido dos nuevos caracteres de formato al módulo :mod:`struct` para " +"enteros de 64 bits en plataformas que soportan el tipo C :c:type:`long " +"long`. ``q`` es para un entero de 64 bits con signo, y ``Q`` es para uno " +"sin signo. El valor se retorna en el tipo entero largo de Python. " +"(Contribuido por Tim Peters.)" #: ../Doc/whatsnew/2.2.rst:990 msgid "" @@ -1388,6 +1727,12 @@ msgid "" "their help text. (Contributed by Guido van Rossum, using Ka-Ping Yee's :mod:" "`pydoc` module.)" msgstr "" +"En el modo interactivo del intérprete, hay una nueva función incorporada :" +"func:`help` que utiliza el módulo :mod:`pydoc` introducido en Python 2.1 " +"para proporcionar ayuda interactiva. :func:`help` sin ningún argumento te " +"sitúa en una utilidad de ayuda online, donde puedes introducir los nombres " +"de las funciones, clases o módulos para leer su texto de ayuda. (Contribuido " +"por Guido van Rossum, usando el módulo :mod:`pydoc` de Ka-Ping Yee)" #: ../Doc/whatsnew/2.2.rst:998 msgid "" @@ -1399,6 +1744,14 @@ msgid "" "the non-overlapping matches in a given string. (SRE is maintained by " "Fredrik Lundh. The BIGCHARSET patch was contributed by Martin von Löwis.)" msgstr "" +"Se han realizado varias correcciones de errores y mejoras de rendimiento en " +"el motor SRE subyacente al módulo :mod:`re`. Por ejemplo, las funciones :" +"func:`re.sub` y :func:`re.split` han sido reescritas en C. Otro parche " +"contribuido acelera ciertos rangos de caracteres Unicode por un factor de " +"dos, y un nuevo método :meth:`finditer` que retorna un iterador sobre todas " +"las coincidencias no superpuestas en una cadena dada. (El mantenimiento de " +"SRE corre a cargo de Fredrik Lundh. El parche BIGCHARSET fue aportado por " +"Martin von Löwis)" #: ../Doc/whatsnew/2.2.rst:1006 msgid "" @@ -1407,6 +1760,11 @@ msgid "" "program and the mail transport agent being handed a message. :mod:`smtplib` " "also supports SMTP authentication. (Contributed by Gerhard Häring.)" msgstr "" +"El módulo :mod:`smtplib` soporta ahora :rfc:`2487`, \"Secure SMTP over TLS" +"\", por lo que ahora es posible cifrar el tráfico SMTP entre un programa " +"Python y el agente de transporte de correo que recibe un mensaje. :mod:" +"`smtplib` también soporta la autenticación SMTP. (Contribución de Gerhard " +"Häring)" #: ../Doc/whatsnew/2.2.rst:1011 msgid "" @@ -1415,6 +1773,9 @@ msgid "" "SORT, GETACL and SETACL. (Contributed by Anthony Baxter and Michel " "Pelletier.)" msgstr "" +"El módulo :mod:`imaplib`, mantenido por Piers Lauder, tiene soporte para " +"varias extensiones nuevas: la extensión NAMESPACE definida en :rfc:`2342`, " +"SORT, GETACL y SETACL. (Contribución de Anthony Baxter y Michel Pelletier)" #: ../Doc/whatsnew/2.2.rst:1015 msgid "" @@ -1424,6 +1785,12 @@ msgid "" "added for parsing and generating e-mail messages. (Contributed by Barry " "Warsaw, and arising out of his work on Mailman.)" msgstr "" +"El módulo :mod:`rfc822` que analiza las direcciones de correo electrónico " +"cumple ahora con :rfc:`2822`, una actualización de :rfc:`822`. (El nombre " +"del módulo *no* se va a cambiar a ``rfc2822``.) También se ha añadido un " +"nuevo paquete, :mod:`email`, para analizar y generar mensajes de correo " +"electrónico. (Contribuido por Barry Warsaw, y surgido de su trabajo en " +"Mailman)" #: ../Doc/whatsnew/2.2.rst:1021 msgid "" @@ -1435,6 +1802,13 @@ msgid "" "contributed by David Goodger, from ndiff.py code by Tim Peters who then did " "the generatorization.)" msgstr "" +"El módulo :mod:`difflib` contiene ahora una nueva clase :class:`Differ` para " +"producir listas legibles por humanos de cambios (un \"delta\") entre dos " +"secuencias de líneas de texto. También hay dos funciones generadoras, :func:" +"`ndiff` y :func:`restore`, que retornan respectivamente un delta de dos " +"secuencias, o una de las secuencias originales de un delta. (Trabajo de " +"gruñido contribuido por David Goodger, a partir del código ndiff.py de Tim " +"Peters que luego hizo la generización)" #: ../Doc/whatsnew/2.2.rst:1028 msgid "" @@ -1447,6 +1821,15 @@ msgid "" "fixed to use :const:`ascii_letters` instead. (Reported by an unknown person; " "fixed by Fred L. Drake, Jr.)" msgstr "" +"Se han añadido las nuevas constantes :const:`ascii_letters`, :const:" +"`ascii_lowercase` y :const:`ascii_uppercase` al módulo :mod:`string`. Había " +"varios módulos en la biblioteca estándar que utilizaban :const:`string." +"letters` para referirse a los rangos A-Za-z, pero esa suposición es " +"incorrecta cuando se utilizan locales, porque :const:`string.letters` varía " +"dependiendo del conjunto de caracteres legales definidos por el local " +"actual. Los módulos con errores se han corregido para que utilicen :const:" +"`ascii_letters` en su lugar. (Informado por una persona desconocida; " +"corregido por Fred L. Drake, Jr.)" #: ../Doc/whatsnew/2.2.rst:1037 msgid "" @@ -1454,6 +1837,10 @@ msgid "" "databases by the addition of a :class:`MimeTypes` class, which takes a list " "of filenames to be parsed. (Contributed by Fred L. Drake, Jr.)" msgstr "" +"El módulo :mod:`mimetypes` facilita ahora el uso de bases de datos de tipos " +"MIME alternativos mediante la adición de una clase :class:`MimeTypes`, que " +"toma una lista de nombres de archivo para ser analizados. (Contribución de " +"Fred L. Drake, Jr.)" #: ../Doc/whatsnew/2.2.rst:1041 msgid "" @@ -1461,10 +1848,13 @@ msgid "" "scheduling an activity to happen at some future time. (Contributed by " "Itamar Shtull-Trauring.)" msgstr "" +"Se ha añadido una clase :class:`Timer` al módulo :mod:`threading` que " +"permite programar una actividad para que ocurra en algún momento futuro. " +"(Contribución de Itamar Shtull-Trauring)" #: ../Doc/whatsnew/2.2.rst:1049 msgid "Interpreter Changes and Fixes" -msgstr "" +msgstr "Cambios y correcciones en el intérprete" #: ../Doc/whatsnew/2.2.rst:1051 msgid "" @@ -1474,6 +1864,11 @@ msgid "" "write Python code, none of the changes described here will affect you very " "much." msgstr "" +"Algunos de los cambios sólo afectan a la gente que trata con el intérprete " +"de Python a nivel de C porque están escribiendo módulos de extensión de " +"Python, incrustando el intérprete, o simplemente hackeando el propio " +"intérprete. Si sólo escribes código Python, ninguno de los cambios descritos " +"aquí te afectará mucho." #: ../Doc/whatsnew/2.2.rst:1056 msgid "" @@ -1486,6 +1881,15 @@ msgid "" "exist, and have simply been changed to use the new C-level interface. " "(Contributed by Fred L. Drake, Jr.)" msgstr "" +"Las funciones de perfilado y rastreo pueden implementarse ahora en C, que " +"puede operar a velocidades mucho mayores que las funciones basadas en Python " +"y debería reducir la sobrecarga de perfilado y rastreo. Esto será de " +"interés para los autores de entornos de desarrollo para Python. Se han " +"añadido dos nuevas funciones en C a la API de Python, :c:func:" +"`PyEval_SetProfile` y :c:func:`PyEval_SetTrace`. Las funciones :func:`sys." +"setprofile` y :func:`sys.settrace` existentes siguen existiendo, y " +"simplemente se han cambiado para utilizar la nueva interfaz de nivel C. " +"(Contribución de Fred L. Drake, Jr.)" #: ../Doc/whatsnew/2.2.rst:1065 msgid "" @@ -1497,6 +1901,13 @@ msgid "" "looping over all the thread states for a given interpreter. (Contributed by " "David Beazley.)" msgstr "" +"Se ha añadido otra API de bajo nivel, principalmente de interés para los " +"implementadores de depuradores y herramientas de desarrollo de Python. :c:" +"func:`PyInterpreterState_Head` y :c:func:`PyInterpreterState_Next` permiten " +"al usuario recorrer todos los objetos intérpretes existentes; :c:func:" +"`PyInterpreterState_ThreadHead` y :c:func:`PyThreadState_Next` permiten " +"recorrer todos los estados de los hilos de un intérprete dado. " +"(Contribución de David Beazley)" #: ../Doc/whatsnew/2.2.rst:1072 msgid "" @@ -1508,41 +1919,57 @@ msgid "" "collection, so updating them for 2.2 should be considered fairly high " "priority." msgstr "" +"La interfaz a nivel de C para el recolector de basura ha sido cambiada para " +"facilitar la escritura de tipos de extensión que soporten la recolección de " +"basura y para depurar los malos usos de las funciones. Varias funciones " +"tienen una semántica ligeramente diferente, por lo que hubo que cambiar el " +"nombre de un montón de funciones. Las extensiones que utilizan la antigua " +"API seguirán compilando pero *no* participarán en la recolección de basura, " +"por lo que actualizarlas para la 2.2 debería considerarse de alta prioridad." #: ../Doc/whatsnew/2.2.rst:1079 msgid "" "To upgrade an extension module to the new API, perform the following steps:" msgstr "" +"Para actualizar un módulo de extensión a la nueva API, realice los " +"siguientes pasos:" #: ../Doc/whatsnew/2.2.rst:1081 msgid "Rename :c:func:`Py_TPFLAGS_GC` to :c:func:`PyTPFLAGS_HAVE_GC`." msgstr "" +"Cambia el nombre de :c:func:`Py_TPFLAGS_GC` a :c:func:`PyTPFLAGS_HAVE_GC`." #: ../Doc/whatsnew/2.2.rst:1084 msgid "" "Use :c:func:`PyObject_GC_New` or :c:func:`PyObject_GC_NewVar` to allocate" msgstr "" +"Utilice :c:func:`PyObject_GC_New` o :c:func:`PyObject_GC_NewVar` para asignar" #: ../Doc/whatsnew/2.2.rst:1084 msgid "objects, and :c:func:`PyObject_GC_Del` to deallocate them." -msgstr "" +msgstr "objetos, y :c:func:`PyObject_GC_Del` para desocuparlos." #: ../Doc/whatsnew/2.2.rst:1087 msgid "Rename :c:func:`PyObject_GC_Init` to :c:func:`PyObject_GC_Track` and" msgstr "" +"Cambiar el nombre de :c:func:`PyObject_GC_Init` a :c:func:" +"`PyObject_GC_Track` y" #: ../Doc/whatsnew/2.2.rst:1087 msgid ":c:func:`PyObject_GC_Fini` to :c:func:`PyObject_GC_UnTrack`." -msgstr "" +msgstr ":c:func:`PyObject_GC_Fini` a :c:func:`PyObject_GC_UnTrack`." #: ../Doc/whatsnew/2.2.rst:1089 msgid "Remove :c:func:`PyGC_HEAD_SIZE` from object size calculations." msgstr "" +"Eliminar :c:func:`PyGC_HEAD_SIZE` del cálculo del tamaño de los objetos." #: ../Doc/whatsnew/2.2.rst:1091 msgid "" "Remove calls to :c:func:`PyObject_AS_GC` and :c:func:`PyObject_FROM_GC`." msgstr "" +"Eliminar las llamadas a :c:func:`PyObject_AS_GC` y :c:func:" +"`PyObject_FROM_GC`." #: ../Doc/whatsnew/2.2.rst:1093 msgid "" @@ -1555,6 +1982,15 @@ msgid "" "converts them to the specified new encoding. (Contributed by M.-A. Lemburg, " "and used for the MBCS support on Windows described in the following section.)" msgstr "" +"Se ha añadido una nueva secuencia de formato ``et`` a :c:func:" +"`PyArg_ParseTuple`; ``et`` toma tanto un parámetro como un nombre de " +"codificación, y convierte el parámetro a la codificación dada si el " +"parámetro resulta ser una cadena Unicode, o lo deja solo si es una cadena de " +"8 bits, asumiendo que ya está en la codificación deseada. Esto difiere del " +"carácter de formato ``es``, que asume que las cadenas de 8 bits están en la " +"codificación ASCII por defecto de Python y las convierte a la nueva " +"codificación especificada. (Contribuido por M.-A. Lemburg, y utilizado para " +"el soporte de MBCS en Windows descrito en la siguiente sección)" #: ../Doc/whatsnew/2.2.rst:1102 msgid "" @@ -1564,6 +2000,12 @@ msgid "" "expected, and a set of pointers to :c:type:`PyObject\\*` variables that will " "be filled in with argument values." msgstr "" +"Se ha añadido una función de análisis de argumentos diferente, :c:func:" +"`PyArg_UnpackTuple`, que es más sencilla y presumiblemente más rápida. En " +"lugar de especificar una cadena de formato, la persona que llama simplemente " +"da el número mínimo y máximo de argumentos esperados, y un conjunto de " +"punteros a variables :c:type:`PyObject\\*` que se rellenarán con los valores " +"de los argumentos." #: ../Doc/whatsnew/2.2.rst:1108 msgid "" @@ -1574,6 +2016,13 @@ msgid "" "`METH_VARARGS`. Also, the old :const:`METH_OLDARGS` style of writing C " "methods is now officially deprecated." msgstr "" +"Dos nuevos indicadores :const:`METH_NOARGS` y :const:`METH_O` están " +"disponibles en las tablas de definición de métodos para simplificar la " +"implementación de métodos sin argumentos o con un único argumento no tipado. " +"Llamar a estos métodos es más eficiente que llamar a un método " +"correspondiente que utilice :const:`METH_VARARGS`. Además, el antiguo " +"estilo :const:`METH_OLDARGS` de escribir métodos en C está oficialmente en " +"desuso." #: ../Doc/whatsnew/2.2.rst:1114 msgid "" @@ -1584,6 +2033,13 @@ msgid "" "the Python versions check the bounds of the buffer used to protect against " "buffer overruns. (Contributed by M.-A. Lemburg.)" msgstr "" +"Se han añadido dos nuevas funciones de envoltura, :c:func:`PyOS_snprintf` y :" +"c:func:`PyOS_vsnprintf` para proporcionar implementaciones multiplataforma " +"para las relativamente nuevas APIs de la biblioteca C :c:func:`snprintf` y :" +"c:func:`vsnprintf`. A diferencia de las funciones estándar :c:func:`sprintf` " +"y :c:func:`vsprintf`, las versiones de Python comprueban los límites del " +"búfer utilizado para protegerse de los desbordamientos del mismo. " +"(Contribución de M.-A. Lemburg.)" #: ../Doc/whatsnew/2.2.rst:1121 msgid "" @@ -1592,10 +2048,14 @@ msgid "" "can simply be discarded when porting code from earlier versions to Python " "2.2." msgstr "" +"La función :c:func:`_PyTuple_Resize` ha perdido un parámetro que no se " +"utilizaba, por lo que ahora toma 2 parámetros en lugar de 3. El tercer " +"argumento nunca se utilizaba, y puede descartarse simplemente al portar el " +"código de versiones anteriores a Python 2.2." #: ../Doc/whatsnew/2.2.rst:1129 msgid "Other Changes and Fixes" -msgstr "" +msgstr "Otros cambios y correcciones" #: ../Doc/whatsnew/2.2.rst:1131 msgid "" @@ -1605,10 +2065,16 @@ msgid "" "2.2; 2.2.1 applied 139 patches and fixed 143 bugs; 2.2.2 applied 106 patches " "and fixed 82 bugs. These figures are likely to be underestimates." msgstr "" +"Como es habitual, hubo un montón de otras mejoras y correcciones de errores " +"repartidas por todo el árbol de fuentes. Una búsqueda en los registros de " +"cambios de CVS revela que se aplicaron 527 parches y se corrigieron 683 " +"errores entre Python 2.1 y 2.2; en 2.2.1 se aplicaron 139 parches y se " +"corrigieron 143 errores; en 2.2.2 se aplicaron 106 parches y se corrigieron " +"82 errores. Es probable que estas cifras estén subestimadas." #: ../Doc/whatsnew/2.2.rst:1137 msgid "Some of the more notable changes are:" -msgstr "" +msgstr "Algunos de los cambios más notables son:" #: ../Doc/whatsnew/2.2.rst:1139 msgid "" @@ -1616,6 +2082,9 @@ msgid "" "kept in the main Python CVS tree, and many changes have been made to support " "MacOS X." msgstr "" +"El código del puerto MacOS para Python, mantenido por Jack Jansen, se " +"mantiene ahora en el árbol CVS principal de Python, y se han realizado " +"muchos cambios para soportar MacOS X." #: ../Doc/whatsnew/2.2.rst:1142 msgid "" @@ -1630,6 +2099,16 @@ msgid "" "application, porting the MacPython IDE, possibly using Python as a standard " "OSA scripting language and much more.\"" msgstr "" +"El cambio más significativo es la capacidad de construir Python como un " +"marco de trabajo, que se activa proporcionando la opción :option:`!--enable-" +"framework` al script de configuración cuando se compila Python. Según Jack " +"Jansen, \"Esto instala una instalación autónoma de Python más el \"pegamento" +"\" del framework de OS X en :file:`/Library/Frameworks/Python.framework` (o " +"en otra ubicación de su elección). Por ahora hay poco beneficio inmediato " +"añadido a esto (en realidad, existe la desventaja de que tienes que cambiar " +"tu PATH para poder encontrar Python), pero es la base para crear una " +"aplicación Python completa, portar el IDE de MacPython, posiblemente usar " +"Python como un lenguaje de scripting estándar de OSA y mucho más.\"" #: ../Doc/whatsnew/2.2.rst:1153 msgid "" @@ -1638,6 +2117,11 @@ msgid "" "been left commented out in :file:`setup.py`. People who want to experiment " "with these modules can uncomment them manually." msgstr "" +"La mayoría de los módulos de la caja de herramientas de MacPython, que " +"interactúan con las APIs de MacOS como ventanas, QuickTime, scripts, etc. " +"han sido portados a OS X, pero se han dejado comentados en :file:`setup." +"py`. Las personas que quieran experimentar con estos módulos pueden " +"descomentarlos manualmente." #: ../Doc/whatsnew/2.2.rst:1176 msgid "" @@ -1645,6 +2129,9 @@ msgid "" "cause a :exc:`TypeError` exception to be raised, with the message " "\"*function* takes no keyword arguments\"." msgstr "" +"Los argumentos de palabras clave pasados a funciones incorporadas que no los " +"aceptan ahora provocan una excepción :exc:`TypeError`, con el mensaje " +"\"*function* no acepta argumentos de palabras clave\"." #: ../Doc/whatsnew/2.2.rst:1180 msgid "" @@ -1653,6 +2140,11 @@ msgid "" "The :exc:`ReferenceError` exception has therefore moved from the :mod:" "`weakref` module to become a built-in exception." msgstr "" +"Las referencias débiles, añadidas en Python 2.1 como un módulo de extensión, " +"son ahora parte del núcleo porque se utilizan en la implementación de clases " +"de nuevo estilo. Por lo tanto, la excepción :exc:`ReferenceError` se ha " +"movido del módulo :mod:`weakref` para convertirse en una excepción " +"incorporada." #: ../Doc/whatsnew/2.2.rst:1185 msgid "" @@ -1660,6 +2152,9 @@ msgid "" "automatically removes obsolete ``__future__`` statements from Python source " "code." msgstr "" +"Un nuevo script, :file:`Tools/scripts/cleanfuture.py` de Tim Peters, elimina " +"automáticamente las sentencias ``__future__`` obsoletas del código fuente de " +"Python." #: ../Doc/whatsnew/2.2.rst:1189 msgid "" @@ -1669,6 +2164,11 @@ msgid "" "other development environments. This is described in :pep:`264`. " "(Contributed by Michael Hudson.)" msgstr "" +"Se ha añadido un argumento adicional *flags* a la función incorporada :func:" +"`compile`, por lo que el comportamiento de las sentencias ``__future__`` " +"puede ahora observarse correctamente en shells simulados, como los " +"presentados por IDLE y otros entornos de desarrollo. Esto se describe en :" +"pep:`264`. (Contribución de Michael Hudson)" #: ../Doc/whatsnew/2.2.rst:1195 msgid "" @@ -1679,6 +2179,13 @@ msgid "" "BSD license, same as it always was. The license changes were also applied " "to the Python 2.0.1 and 2.1.1 releases." msgstr "" +"La nueva licencia introducida con Python 1.6 no era compatible con la GPL. " +"Esto se ha solucionado con algunos cambios textuales menores en la licencia " +"2.2, de modo que ahora es legal volver a incrustar Python dentro de un " +"programa con licencia GPL. Tenga en cuenta que Python en sí mismo no es " +"GPL, sino que está bajo una licencia que es esencialmente equivalente a la " +"licencia BSD, igual que siempre. Los cambios en la licencia también se " +"aplicaron a las versiones 2.0.1 y 2.1.1 de Python." #: ../Doc/whatsnew/2.2.rst:1202 msgid "" @@ -1690,17 +2197,29 @@ msgid "" "was contributed by Mark Hammond with assistance from Marc-André Lemburg. " "Unix support was added by Martin von Löwis.)" msgstr "" +"Cuando se presenta un nombre de archivo Unicode en Windows, Python ahora lo " +"convertirá en una cadena codificada en MBCS, como la que utilizan las APIs " +"de archivos de Microsoft. Como las APIs de archivos utilizan explícitamente " +"MBCS, la elección de Python de ASCII como codificación por defecto resulta " +"ser una molestia. En Unix, se utiliza el juego de caracteres de la " +"localización si ``locale.nl_langinfo(CODESET)`` está disponible. (El " +"soporte de Windows fue contribuido por Mark Hammond con la ayuda de Marc-" +"André Lemburg. El soporte para Unix fue añadido por Martin von Löwis)" #: ../Doc/whatsnew/2.2.rst:1210 msgid "" "Large file support is now enabled on Windows. (Contributed by Tim Peters.)" msgstr "" +"La compatibilidad con archivos de gran tamaño ya está activada en Windows. " +"(Contribución de Tim Peters.)" #: ../Doc/whatsnew/2.2.rst:1212 msgid "" "The :file:`Tools/scripts/ftpmirror.py` script now parses a :file:`.netrc` " "file, if you have one. (Contributed by Mike Romberg.)" msgstr "" +"El script :file:`Tools/scripts/ftpmirror.py` ahora analiza un archivo :file:" +"`.netrc`, si tiene uno. (Contribución de Mike Romberg)" #: ../Doc/whatsnew/2.2.rst:1215 msgid "" @@ -1713,6 +2232,15 @@ msgid "" "attributes are also being deprecated. At the C level, the fourth argument " "to the :c:func:`PyRange_New` function, ``repeat``, has also been deprecated." msgstr "" +"Algunas características del objeto retornado por la función :func:`xrange` " +"están ahora obsoletas, y provocan advertencias cuando se accede a ellas; " +"desaparecerán en Python 2.3. Los objetos :class:`xrange` intentaban fingir " +"que eran tipos de secuencia completos soportando el troceado, la " +"multiplicación de secuencias y el operador :keyword:`in`, pero estas " +"características se utilizaban raramente y, por lo tanto, tenían errores. El " +"método :meth:`tolist` y los atributos :attr:`start`, :attr:`stop` y :attr:" +"`step` también han quedado obsoletos. A nivel de C, el cuarto argumento de " +"la función :c:func:`PyRange_New`, ``repeat``, también ha quedado obsoleto." #: ../Doc/whatsnew/2.2.rst:1224 msgid "" @@ -1723,6 +2251,12 @@ msgid "" "case that dumped core, Tim Peters fixing the bug, Michael finding another " "case, and round and round it went." msgstr "" +"Hubo un montón de parches para la implementación del diccionario, sobre todo " +"para arreglar posibles vertidos del núcleo si un diccionario contiene " +"objetos que cambian furtivamente su valor hash, o mutan el diccionario que " +"contienen. Durante un tiempo python-dev cayó en un suave ritmo de Michael " +"Hudson encontrando un caso que volcaba el núcleo, Tim Peters corrigiendo el " +"error, Michael encontrando otro caso, y así sucesivamente." #: ../Doc/whatsnew/2.2.rst:1231 msgid "" @@ -1730,6 +2264,9 @@ msgid "" "patches contributed by Stephen Hansen, though the result isn't fully " "functional yet. (But this *is* progress...)" msgstr "" +"En Windows, Python puede ahora compilarse con Borland C gracias a una serie " +"de parches aportados por Stephen Hansen, aunque el resultado aún no es " +"totalmente funcional. (Pero esto *es* un progreso...)" #: ../Doc/whatsnew/2.2.rst:1235 msgid "" @@ -1738,6 +2275,10 @@ msgid "" "installers used Wise 5.0a, which was beginning to show its age. (Packaged " "up by Tim Peters.)" msgstr "" +"Otra mejora de Windows: Wise Solutions ofreció generosamente a PythonLabs el " +"uso de su sistema InstallerMaster 8.1. Los anteriores instaladores de " +"PythonLabs para Windows utilizaban Wise 5.0a, que estaba empezando a mostrar " +"su edad. (Empaquetado por Tim Peters)" #: ../Doc/whatsnew/2.2.rst:1239 msgid "" @@ -1748,6 +2289,12 @@ msgid "" "such scripts, in case they're also usable as modules. (Implemented by David " "Bolen.)" msgstr "" +"Los archivos que terminan en ``.pyw`` pueden importarse ahora en Windows. ``." +"pyw`` es algo exclusivo de Windows, que se utiliza para indicar que un " +"script debe ejecutarse utilizando PYTHONW.EXE en lugar de PYTHON.EXE para " +"evitar que aparezca una consola DOS para mostrar la salida. Este parche " +"hace posible la importación de tales scripts, en caso de que también se " +"puedan utilizar como módulos. (Implementado por David Bolen)" #: ../Doc/whatsnew/2.2.rst:1245 msgid "" @@ -1756,6 +2303,10 @@ msgid "" "`dlopen` using the :func:`sys.getdlopenflags` and :func:`sys.setdlopenflags` " "functions. (Contributed by Bram Stolk.)" msgstr "" +"En las plataformas en las que Python utiliza la función C :c:func:`dlopen` " +"para cargar módulos de extensión, ahora es posible establecer las banderas " +"utilizadas por :c:func:`dlopen` utilizando las funciones :func:`sys." +"getdlopenflags` y :func:`sys.setdlopenflags`. (Contribución de Bram Stolk.)" #: ../Doc/whatsnew/2.2.rst:1250 msgid "" @@ -1765,10 +2316,15 @@ msgid "" "result varies unpredictably depending on the platform. A call such as " "``pow(2.0, 8.0, 7.0)`` will now raise a :exc:`TypeError` exception." msgstr "" +"La función incorporada :func:`pow` ya no admite 3 argumentos cuando se " +"suministran números de punto flotante. ``pow(x, y, z)`` retorna ``(x**y) % " +"z``, pero esto nunca es útil para números de punto flotante, y el resultado " +"final varía de forma impredecible dependiendo de la plataforma. Una llamada " +"como ``pow(2.0, 8.0, 7.0)`` lanzará ahora una excepción :exc:`TypeError`." #: ../Doc/whatsnew/2.2.rst:1260 msgid "Acknowledgements" -msgstr "" +msgstr "Agradecimientos" #: ../Doc/whatsnew/2.2.rst:1262 msgid "" @@ -1781,3 +2337,11 @@ msgid "" "Paalasma, Tim Peters, Jens Quade, Tom Reinhardt, Neil Schemenauer, Guido van " "Rossum, Greg Ward, Edward Welbourne." msgstr "" +"El autor desea agradecer a las siguientes personas sus sugerencias, " +"correcciones y ayuda en varios borradores de este artículo: Fred Bremmer, " +"Keith Briggs, Andrew Dalke, Fred L. Drake, Jr, Carel Fellinger, David " +"Goodger, Mark Hammond, Stephen Hansen, Michael Hudson, Jack Jansen, Marc-" +"André Lemburg, Martin von Löwis, Fredrik Lundh, Michael McLay, Nick " +"Mathewson, Paul Moore, Gustavo Niemeyer, Don O'Donnell, Joonas Paalasma, Tim " +"Peters, Jens Quade, Tom Reinhardt, Neil Schemenauer, Guido van Rossum, Greg " +"Ward, Edward Welbourne."