From 4e73143ae14a7653672c0f2ca041d1bada477ab6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cristi=C3=A1n=20Maureira-Fredes?= Date: Sat, 23 Nov 2024 23:31:17 +0100 Subject: [PATCH] Translate whatsnew/2.5 Closes #3174 --- dictionaries/whatsnew_2.5.txt | 56 +++ whatsnew/2.5.po | 647 ++++++++++++++++++++++++++-------- 2 files changed, 563 insertions(+), 140 deletions(-) diff --git a/dictionaries/whatsnew_2.5.txt b/dictionaries/whatsnew_2.5.txt index 5034b1dcc2..f5c30bff98 100644 --- a/dictionaries/whatsnew_2.5.txt +++ b/dictionaries/whatsnew_2.5.txt @@ -32,6 +32,7 @@ Kurt Louko Lowe Lynn +Nel Netlink Oleg Optik @@ -55,21 +56,76 @@ Tillenius Walter Wd Weikart +aee asignadoras autodetectada +baf +buf +cammin +chr contextlib coroutines +db direccionar +diritta +download +eb +ee elinks +execute +fada hook +httpd +ih +jpg +kwds +localcontext +longest +lower maildir +medium +menu +mezzo +my +nel netlink +nostra +nsmallest +numarray obmalloc +popup +prec +price +px pybench +pythonapi +qty reelaborado reutilizándolo +ritrovai +row +rpartition +share +smarrita sprint sprints +sqrt +src ssize +still +stocks +strfry +subsystem +svg +symbol +trans +transaction tripleta +ts +unichr +via +where +wraps +wsgi wsgiref +zerodict diff --git a/whatsnew/2.5.po b/whatsnew/2.5.po index a6a5db1ada..2e2165471e 100644 --- a/whatsnew/2.5.po +++ b/whatsnew/2.5.po @@ -13,12 +13,12 @@ msgstr "" "POT-Creation-Date: 2024-11-21 16:38-0300\n" "PO-Revision-Date: 2022-11-24 11:54+0100\n" "Last-Translator: Claudia Millan \n" -"Language: es\n" "Language-Team: python-doc-es\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Generated-By: Babel 2.16.0\n" #: ../Doc/whatsnew/2.5.rst:3 @@ -150,6 +150,10 @@ msgid "" "else:\n" " x = false_value" msgstr "" +"Si la condición es:\n" +"x = valor_verdadero\n" +"De lo contrario:\n" +"x = valor_falso" #: ../Doc/whatsnew/2.5.rst:66 msgid "" @@ -172,7 +176,7 @@ msgstr "Guido van Rossum eligió finalmente una sintaxis sorprendente::" #: ../Doc/whatsnew/2.5.rst:74 msgid "x = true_value if condition else false_value" -msgstr "" +msgstr "x = valor_verdadero si condición de lo contrario valor_falso" #: ../Doc/whatsnew/2.5.rst:76 msgid "" @@ -210,7 +214,7 @@ msgstr "" #: ../Doc/whatsnew/2.5.rst:90 msgid "contents = ((doc + '\\n') if doc else '')" -msgstr "" +msgstr "contenido = ((doc + '\\n') si doc si no '')" #: ../Doc/whatsnew/2.5.rst:92 msgid "" @@ -245,6 +249,11 @@ msgid "" "# Second version -- with parens\n" "level = (1 if logging else 0)" msgstr "" +"# Primera versión: sin paréntesis\n" +"nivel = 1 si se registra, de lo contrario, 0\n" +"\n" +"# Segunda versión: con paréntesis\n" +"nivel = (1 si se registra, de lo contrario, 0)" #: ../Doc/whatsnew/2.5.rst:108 msgid "" @@ -339,6 +348,15 @@ msgid "" "server_log = functools.partial(log, subsystem='server')\n" "server_log('Unable to open socket')" msgstr "" +"import functools\n" +"\n" +"def log (message, subsystem):\n" +"\"Escribe el contenido de 'message' en el subsistema especificado\".\n" +"print '%s: %s' % (subsystem, message)\n" +"...\n" +"\n" +"server_log = functools.partial(log, subsystem='server')\n" +"server_log('No se puede abrir el socket')" #: ../Doc/whatsnew/2.5.rst:160 msgid "" @@ -363,6 +381,13 @@ msgid "" " open_func = functools.partial(self.open_item, item_path)\n" " popup_menu.append( (\"Open\", open_func, 1) )" msgstr "" +"...\n" +"class Application:\n" +" def open_item(self, path):\n" +" ...\n" +" def init (self):\n" +" open_func = functools.partial(self.open_item, item_path)\n" +" popup_menu.append( (\"Open\", open_func, 1) )" #: ../Doc/whatsnew/2.5.rst:173 msgid "" @@ -388,6 +413,12 @@ msgid "" " functools.update_wrapper(wrapper, f)\n" " return wrapper" msgstr "" +"def my_decorator(f):\n" +" def wrapper(*args, **kwds):\n" +" print 'Calling decorated function'\n" +" return f(*args, **kwds)\n" +" functools.update_wrapper(wrapper, f)\n" +" return wrapper" #: ../Doc/whatsnew/2.5.rst:186 msgid "" @@ -408,6 +439,12 @@ msgid "" " return f(*args, **kwds)\n" " return wrapper" msgstr "" +"def my_decorator(f):\n" +" @functools.wraps(f)\n" +" def wrapper(*args, **kwds):\n" +" print 'Calling decorated function'\n" +" return f(*args, **kwds)\n" +" return wrapper" #: ../Doc/whatsnew/2.5.rst:201 msgid ":pep:`309` - Partial Function Application" @@ -463,6 +500,14 @@ msgid "" " % VERSION),\n" " )" msgstr "" +"VERSION = '1.0'\n" +"setup(name='PyPackage',\n" +" version=VERSION,\n" +" requires=['numarray', 'zlib (>=1.1.4)'],\n" +" obsoletes=['OldPackage']\n" +" download_url=('http://www.example.com/pypackage/dist/pkg-%s.tar.gz'\n" +" % VERSION),\n" +" )" #: ../Doc/whatsnew/2.5.rst:231 msgid "" @@ -545,6 +590,10 @@ msgid "" "pkg/main.py\n" "pkg/string.py" msgstr "" +"pkg/\n" +"pkg/__init__.py\n" +"pkg/main.py\n" +"pkg/string.py" #: ../Doc/whatsnew/2.5.rst:274 msgid "" @@ -641,6 +690,10 @@ msgid "" "# Import pkg.string\n" "from . import string" msgstr "" +"# Import names from pkg.string\n" +"from .string import name1, name2\n" +"# Import pkg.string\n" +"from . import string" #: ../Doc/whatsnew/2.5.rst:315 msgid "" @@ -662,6 +715,9 @@ msgid "" "from .. import E # Imports A.E\n" "from ..F import G # Imports A.F.G" msgstr "" +"from . import D # Imports A.B.D\n" +"from .. import E # Imports A.E\n" +"from ..F import G # Imports A.F.G" #: ../Doc/whatsnew/2.5.rst:324 msgid "" @@ -776,6 +832,16 @@ msgid "" "finally:\n" " final-block" msgstr "" +"try:\n" +" block-1 ...\n" +"except Exception1:\n" +" handler-1 ...\n" +"except Exception2:\n" +" handler-2 ...\n" +"else:\n" +" else-block\n" +"finally:\n" +" final-block" #: ../Doc/whatsnew/2.5.rst:393 msgid "" @@ -850,6 +916,11 @@ msgid "" " yield i\n" " i += 1" msgstr "" +"def counter (maximum):\n" +" i = 0\n" +" while i < maximum:\n" +" yield i\n" +" i += 1" #: ../Doc/whatsnew/2.5.rst:434 msgid "" @@ -880,7 +951,7 @@ msgstr "" #: ../Doc/whatsnew/2.5.rst:444 msgid "val = (yield i)" -msgstr "" +msgstr "val = (rendimiento i)" #: ../Doc/whatsnew/2.5.rst:446 msgid "" @@ -940,6 +1011,15 @@ msgid "" " else:\n" " i += 1" msgstr "" +"def counter (maximum):\n" +" i = 0\n" +" while i < maximum:\n" +" val = (yield i)\n" +" # If value provided, change counter\n" +" if val is not None:\n" +" i = val\n" +" else:\n" +" i += 1" #: ../Doc/whatsnew/2.5.rst:476 msgid "And here's an example of changing the counter::" @@ -962,6 +1042,20 @@ msgid "" " print it.next()\n" "StopIteration" msgstr "" +">>> it = counter(10)\n" +">>> print it.next()\n" +"0\n" +">>> print it.next()\n" +"1\n" +">>> print it.send(8)\n" +"8\n" +">>> print it.next()\n" +"9\n" +">>> print it.next()\n" +"Traceback (most recent call last):\n" +" File \"t.py\", line 15, in ?\n" +" print it.next()\n" +"StopIteration" #: ../Doc/whatsnew/2.5.rst:493 msgid "" @@ -1161,42 +1255,41 @@ msgid "" "with expression [as variable]:\n" " with-block" msgstr "" +"with expression [as variable]:\n" +" with-block" #: ../Doc/whatsnew/2.5.rst:577 -#, fuzzy msgid "" "The expression is evaluated, and it should result in an object that supports " "the context management protocol (that is, has :meth:`~object.__enter__` and :" "meth:`~object.__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__`)." +"Se evalúa la expresión y debería dar como resultado un objeto que admita el " +"protocolo de gestión de contexto (es decir, que tenga los métodos :meth:" +"`~object.__enter__` y :meth:`~object.__exit__`)." #: ../Doc/whatsnew/2.5.rst:581 -#, fuzzy msgid "" "The object's :meth:`~object.__enter__` is called before *with-block* is " "executed and therefore can run set-up code. It also may return a value that " "is bound to 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*)" +"El objeto :meth:`~object.__enter__` se llama antes de que se ejecute *with-" +"block* y, por lo tanto, puede ejecutar el código de configuración. También " +"puede devolver un valor vinculado al nombre *variable*, si se proporciona. " +"(Tenga en cuenta que *variable* es *not* al que se le asigna el resultado de " +"*expression*)." #: ../Doc/whatsnew/2.5.rst:586 -#, fuzzy msgid "" "After execution of the *with-block* is finished, the object's :meth:`~object." "__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." +"Una vez finalizada la ejecución de *with-block*, se llama al método :meth:" +"`~object.__exit__` del objeto, incluso si el bloque generó una excepción y, " +"por lo tanto, puede ejecutar código de limpieza." #: ../Doc/whatsnew/2.5.rst:590 msgid "" @@ -1208,7 +1301,7 @@ msgstr "" #: ../Doc/whatsnew/2.5.rst:593 msgid "from __future__ import with_statement" -msgstr "" +msgstr "desde __future__ importar con_declaración" #: ../Doc/whatsnew/2.5.rst:595 msgid "The statement will always be enabled in Python 2.6." @@ -1231,6 +1324,10 @@ msgid "" " print line\n" " ... more processing code ..." msgstr "" +"with open('/etc/passwd', 'r') as f:\n" +" for line in f:\n" +" print line\n" +" ... more processing code ..." #: ../Doc/whatsnew/2.5.rst:605 msgid "" @@ -1243,13 +1340,12 @@ msgstr "" "excepción a mitad del bloque." #: ../Doc/whatsnew/2.5.rst:611 -#, fuzzy msgid "" "In this case, *f* is the same object created by :func:`open`, because :meth:" "`~object.__enter__` returns *self*." msgstr "" "En este caso, *f* es el mismo objeto creado por :func:`open`, porque :meth:" -"`file.__enter__` devuelve *self*." +"`~object.__enter__` devuelve *self*." #: ../Doc/whatsnew/2.5.rst:614 msgid "" @@ -1266,6 +1362,10 @@ msgid "" " # Critical section of code\n" " ..." msgstr "" +"lock = threading.Lock()\n" +"with lock:\n" +" # Critical section of code\n" +" ..." #: ../Doc/whatsnew/2.5.rst:622 msgid "" @@ -1298,6 +1398,16 @@ msgid "" " # The original context is restored on exiting the block.\n" " print v.sqrt()" msgstr "" +"from decimal import Decimal, Context, localcontext\n" +"\n" +"# Displays with default precision of 28 digits\n" +"v = Decimal('578')\n" +"print v.sqrt()\n" +"\n" +"with localcontext(Context(prec=16)):\n" +" # All code in this block uses a precision of 16 digits.\n" +" # The original context is restored on exiting the block.\n" +" print v.sqrt()" #: ../Doc/whatsnew/2.5.rst:644 msgid "Writing Context Managers" @@ -1324,26 +1434,24 @@ msgstr "" "Una explicación de alto nivel del protocolo de gestión del contexto es:" #: ../Doc/whatsnew/2.5.rst:654 -#, fuzzy msgid "" "The expression is evaluated and should result in an object called a " "\"context manager\". The context manager must have :meth:`~object." "__enter__` and :meth:`~object.__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__`." +"La expresión se evalúa y debería generar un objeto denominado " +"\"administrador de contexto\". El administrador de contexto debe tener los " +"métodos :meth:`~object.__enter__` y :meth:`~object.__exit__`." #: ../Doc/whatsnew/2.5.rst:658 -#, fuzzy msgid "" "The context manager's :meth:`~object.__enter__` method is called. The value " "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." +"Se llama al método :meth:`~object.__enter__` del administrador de contexto. " +"El valor devuelto se asigna a *VAR*. Si no hay ninguna cláusula ``'as " +"VAR'``, el valor simplemente se descarta." #: ../Doc/whatsnew/2.5.rst:662 msgid "The code in *BLOCK* is executed." @@ -1369,13 +1477,12 @@ msgstr "" "ha ido mal." #: ../Doc/whatsnew/2.5.rst:672 -#, fuzzy msgid "" "If *BLOCK* didn't raise an exception, the :meth:`~object.__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``." +"Si *BLOCK* no generó una excepción, aún se llama al método :meth:`~object." +"__exit__`, pero *type*, *value* y *traceback* son todos ``None``." #: ../Doc/whatsnew/2.5.rst:675 msgid "" @@ -1418,6 +1525,11 @@ msgid "" " cursor.execute('delete from ...')\n" " # ... more operations ..." msgstr "" +"db_connection = DatabaseConnection()\n" +"with db_connection as cursor:\n" +" cursor.execute('insert into ...')\n" +" cursor.execute('delete from ...')\n" +" # ... more operations ..." #: ../Doc/whatsnew/2.5.rst:693 msgid "" @@ -1440,9 +1552,16 @@ msgid "" " def rollback (self):\n" " \"Rolls back current transaction\"" msgstr "" +"class DatabaseConnection:\n" +" # Database interface\n" +" def cursor (self):\n" +" \"Returns a cursor object and starts a new transaction\"\n" +" def commit (self):\n" +" \"Commits current transaction\"\n" +" def rollback (self):\n" +" \"Rolls back current transaction\"" #: ../Doc/whatsnew/2.5.rst:706 -#, fuzzy msgid "" "The :meth:`~object.__enter__` method is pretty easy, having only to start a " "new transaction. For this application the resulting cursor object would be " @@ -1450,11 +1569,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. ::" +"El método :meth:`~object.__enter__` es bastante sencillo, ya que solo 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 declaración ':keyword:" +"`with`' para vincular el cursor a un nombre de variable. ::" #: ../Doc/whatsnew/2.5.rst:711 msgid "" @@ -1465,19 +1584,24 @@ msgid "" " cursor = self.cursor()\n" " return cursor" msgstr "" +"class DatabaseConnection:\n" +" ...\n" +" def __enter__ (self):\n" +" # Code to start a new transaction\n" +" cursor = self.cursor()\n" +" return cursor" #: ../Doc/whatsnew/2.5.rst:718 -#, fuzzy msgid "" "The :meth:`~object.__exit__` method is the most complicated because it's " "where most of the work has to be done. The method has to check if an " "exception 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." +"El método :meth:`~object.__exit__` es el más complicado porque es donde se " +"debe realizar la mayor parte del trabajo. El método debe verificar si se " +"produjo una excepción. Si no hubo excepción, se confirma la transacción. Si " +"hubo una excepción, se revierte la transacción." #: ../Doc/whatsnew/2.5.rst:723 msgid "" @@ -1505,6 +1629,16 @@ msgid "" " self.rollback()\n" " # return False" msgstr "" +"class DatabaseConnection:\n" +" ...\n" +" def __exit__ (self, type, value, tb):\n" +" if tb is None:\n" +" # No exception, so commit\n" +" self.commit()\n" +" else:\n" +" # Exception occurred, so rollback.\n" +" self.rollback()\n" +" # return False" #: ../Doc/whatsnew/2.5.rst:743 msgid "The contextlib module" @@ -1521,7 +1655,6 @@ msgstr "" "keyword:`with`'." #: ../Doc/whatsnew/2.5.rst:748 -#, fuzzy msgid "" "The decorator is called :func:`contextmanager`, and lets you write a single " "generator function instead of defining a new class. The generator should " @@ -1533,15 +1666,15 @@ msgid "" "method. Any 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`." +"El decorador se llama :func:`contextmanager` y le permite escribir una única " +"función generadora en lugar de definir una nueva clase. El generador debería " +"generar exactamente un valor. El código hasta :keyword:`yield` se ejecutará " +"como el método :meth:`~object.__enter__` y el valor generado será el valor " +"de retorno del método que se vinculará a la variable en la cláusula :keyword:" +"`!as` de la declaración ':keyword:`with`', si la hay. El código después de :" +"keyword:`yield` se ejecutará en el método :meth:`~object.__exit__`. " +"Cualquier excepción generada en el bloque será generada por la declaración :" +"keyword:`!yield`." #: ../Doc/whatsnew/2.5.rst:757 msgid "" @@ -1570,6 +1703,22 @@ msgid "" "with db_transaction(db) as cursor:\n" " ..." msgstr "" +"from contextlib import contextmanager\n" +"\n" +"@contextmanager\n" +"def db_transaction (connection):\n" +" cursor = connection.cursor()\n" +" try:\n" +" yield cursor\n" +" except:\n" +" connection.rollback()\n" +" raise\n" +" else:\n" +" connection.commit()\n" +"\n" +"db = DatabaseConnection()\n" +"with db_transaction(db) as cursor:\n" +" ..." #: ../Doc/whatsnew/2.5.rst:777 msgid "" @@ -1591,6 +1740,9 @@ msgid "" "with nested (db_transaction(db), lock) as (cursor, locked):\n" " ..." msgstr "" +"lock = threading.Lock()\n" +"con anidado (db_transaction(db), lock) como (cursor, bloqueado):\n" +"..." #: ../Doc/whatsnew/2.5.rst:786 msgid "" @@ -1610,6 +1762,12 @@ msgid "" " for line in f:\n" " sys.stdout.write(line)" msgstr "" +"import urllib, sys\n" +"from contextlib import closing\n" +"\n" +"with closing(urllib.urlopen('http://www.yahoo.com')) as f:\n" +" for line in f:\n" +" sys.stdout.write(line)" #: ../Doc/whatsnew/2.5.rst:803 msgid ":pep:`343` - The \"with\" statement" @@ -1663,6 +1821,11 @@ msgid "" "|- Exception\n" " |- (all other current built-in exceptions)" msgstr "" +"BaseException # New in Python 2.5\n" +"|- KeyboardInterrupt\n" +"|- SystemExit\n" +"|- Exception\n" +" |- (all other current built-in exceptions)" #: ../Doc/whatsnew/2.5.rst:828 msgid "" @@ -1693,6 +1856,13 @@ msgid "" " # Log error...\n" " # Continue running program..." msgstr "" +"try:\n" +" ...\n" +"except (KeyboardInterrupt, SystemExit):\n" +" raise\n" +"except:\n" +" # Log error...\n" +" # Continue running program..." #: ../Doc/whatsnew/2.5.rst:843 msgid "" @@ -1922,6 +2092,9 @@ msgid "" " def __index__ (self):\n" " return self.value" msgstr "" +"class C:\n" +" def __index__ (self):\n" +" return self.value" #: ../Doc/whatsnew/2.5.rst:953 msgid "" @@ -1993,6 +2166,13 @@ msgid "" "print d[1], d[2] # Prints 1, 2\n" "print d[3], d[4] # Prints 0, 0" msgstr "" +"class zerodict (dict):\n" +" def __missing__ (self, key):\n" +" return 0\n" +"\n" +"d = zerodict({1:1, 2:2})\n" +"print d[1], d[2] # Prints 1, 2\n" +"print d[3], d[4] # Prints 0, 0" #: ../Doc/whatsnew/2.5.rst:993 msgid "" @@ -2042,6 +2222,16 @@ msgid "" ">>> 'www.python.org'.rpartition(':')\n" "('', '', 'www.python.org')" msgstr "" +">>> ('http://www.python.org').partition('://')\n" +"('http', '://', 'www.python.org')\n" +">>> ('file:/usr/share/doc/index.html').partition('://')\n" +"('file:/usr/share/doc/index.html', '', '')\n" +">>> (u'Subject: a quick question').partition(':')\n" +"(u'Subject', u':', u' a quick question')\n" +">>> 'www.python.org'.rpartition('.')\n" +"('www.python', '.', 'org')\n" +">>> 'www.python.org'.rpartition(':')\n" +"('', '', 'www.python.org')" #: ../Doc/whatsnew/2.5.rst:1018 msgid "" @@ -2062,6 +2252,8 @@ msgid "" "def is_image_file (filename):\n" " return filename.endswith(('.gif', '.jpg', '.tiff'))" msgstr "" +"def is_image_file (nombre_archivo):\n" +"return nombre_archivo.endswith(('.gif', '.jpg', '.tiff'))" #: ../Doc/whatsnew/2.5.rst:1026 msgid "(Implemented by Georg Brandl following a suggestion by Tom Lynn.)" @@ -2091,6 +2283,11 @@ msgid "" "# Prints 'short', because lexicographically 'short' has the largest value\n" "print max(L)" msgstr "" +"L = ['medium', 'longest', 'short']\n" +"# Prints 'longest'\n" +"print max(L, key=len)\n" +"# Prints 'short', because lexicographically 'short' has the largest value\n" +"print max(L)" #: ../Doc/whatsnew/2.5.rst:1043 msgid "(Contributed by Steven Bethard and Raymond Hettinger.)" @@ -2146,7 +2343,7 @@ msgstr "" #: ../Doc/whatsnew/2.5.rst:1067 msgid "# -*- coding: latin1 -*-" -msgstr "" +msgstr "#-*- coding: latin1 -*-" #: ../Doc/whatsnew/2.5.rst:1069 msgid "" @@ -2170,6 +2367,13 @@ msgid "" ">>> chr(127) == unichr(127) # chr(127) can be converted\n" "True" msgstr "" +">>> chr(128) == unichr(128) # Can't convert chr(128) to Unicode\n" +"__main__:1: UnicodeWarning: Unicode equal comparison failed\n" +" to convert both arguments to Unicode - interpreting them\n" +" as being unequal\n" +"False\n" +">>> chr(127) == unichr(127) # chr(127) can be converted\n" +"True" #: ../Doc/whatsnew/2.5.rst:1081 msgid "" @@ -2238,6 +2442,8 @@ msgid "" "class C():\n" " pass" msgstr "" +"clase C():\n" +" pass" #: ../Doc/whatsnew/2.5.rst:1108 msgid "(Implemented by Brett Cannon.)" @@ -2262,6 +2468,8 @@ msgid "" ">>> quit\n" "'Use Ctrl-D (i.e. EOF) to exit.'" msgstr "" +">>> salir\n" +"'Utilice Ctrl-D (es decir, EOF) para salir.'" #: ../Doc/whatsnew/2.5.rst:1124 msgid "" @@ -2346,7 +2554,6 @@ msgstr "" "rápida. (Aportado por Alan McIntyre y comprometido en el sprint NeedForSpeed)" #: ../Doc/whatsnew/2.5.rst:1168 -#, fuzzy msgid "" "It's now illegal to mix iterating over a file with ``for line in file`` and " "calling the file object's :meth:`read`/:meth:`readline`/:meth:`readlines` " @@ -2356,13 +2563,14 @@ msgid "" "iteration and these 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 " +"Ahora es ilegal mezclar la iteración sobre un archivo 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)" +"`readlines` del objeto de archivo. La iteración utiliza un búfer interno y " +"los métodos :meth:`!read\\*` no utilizan ese búfer. En su lugar, devolverían " +"los datos después del búfer, lo que haría que los datos aparecieran " +"desordenados. Mezclar la iteración y estos métodos ahora activará un :exc:" +"`ValueError` desde el método :meth:`!read\\*`. (Implementado por Thomas " +"Wouters)." #: ../Doc/whatsnew/2.5.rst:1178 #, python-format @@ -2464,14 +2672,13 @@ msgstr "" "detalles." #: ../Doc/whatsnew/2.5.rst:1225 -#, fuzzy 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)" +"El módulo :mod:`!audioop` ahora admite 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 "" @@ -2538,6 +2745,15 @@ msgid "" " init_letter = w[0]\n" " index[init_letter].append(w)" msgstr "" +"palabras = \"\"\"Nel mezzo del cammin di nuestra vita\n" +"mi ritrovai per una selva oscura\n" +"che la diritta via era smarrita\"\"\".lower().split()\n" +"\n" +"índice = dictamen predeterminado (lista)\n" +"\n" +"para w en palabras:\n" +" letra_inicial = w[0]\n" +" índice[letra_inicio].append(w)" #: ../Doc/whatsnew/2.5.rst:1261 msgid "Printing ``index`` results in the following output::" @@ -2551,6 +2767,11 @@ msgid "" " 'p': ['per'], 's': ['selva', 'smarrita'],\n" " 'r': ['ritrovai'], 'u': ['una'], 'v': ['vita', 'via']}" msgstr "" +"defaultdict(, {'c': ['cammin', 'che'], 'e': ['era'],\n" +" 'd': ['del', 'di', 'diritta'], 'm': ['mezzo', 'mi'],\n" +" 'l': ['la'], 'o': ['oscura'], 'n': ['nel', 'nostra'],\n" +" 'p': ['per'], 's': ['selva', 'smarrita'],\n" +" 'r': ['ritrovai'], 'u': ['una'], 'v': ['vita', 'via']}" #: ../Doc/whatsnew/2.5.rst:1269 msgid "(Contributed by Guido van Rossum.)" @@ -2674,6 +2895,10 @@ msgid "" "ts = datetime.strptime('10:13:15 2006-03-07',\n" " '%H:%M:%S %Y-%m-%d')" msgstr "" +"from datetime import datetime\n" +"\n" +"ts = datetime.strptime('10:13:15 2006-03-07',\n" +" '%H:%M:%S %Y-%m-%d')" #: ../Doc/whatsnew/2.5.rst:1321 msgid "" @@ -2720,7 +2945,6 @@ msgstr "" "de Barry Warsaw.)" #: ../Doc/whatsnew/2.5.rst:1345 -#, fuzzy msgid "" "The :mod:`fileinput` module was made more flexible. Unicode filenames are " "now supported, and a *mode* parameter that defaults to ``\"r\"`` was added " @@ -2731,15 +2955,15 @@ msgid "" "`~fileinput.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.)" +"El módulo :mod:`fileinput` se hizo más flexible. Ahora se admiten los " +"nombres de archivo Unicode y se agregó un parámetro *mode* que tiene como " +"valor predeterminado ``\"r\"`` a la función :func:`input` para permitir la " +"apertura de archivos en modo binario o :term:`universal newlines`. Otro " +"parámetro nuevo, *openhook*, le permite usar una función distinta de :func:" +"`open` para abrir los archivos de entrada. Una vez que esté iterando sobre " +"el conjunto de archivos, el nuevo :meth:`~fileinput.fileno` del objeto :" +"class:`FileInput` devuelve el descriptor de archivo para el archivo abierto " +"actualmente. (Contribuido por Georg Brandl.)" #: ../Doc/whatsnew/2.5.rst:1354 msgid "" @@ -2780,6 +3004,12 @@ msgid "" ">>> heapq.nsmallest(2, L, key=len) # Return two shortest elements\n" "['short', 'medium']" msgstr "" +">>> import heapq\n" +">>> L = [\"short\", 'medium', 'longest', 'longer still']\n" +">>> heapq.nsmallest(2, L) # Return two lowest elements, lexicographically\n" +"['longer still', 'longest']\n" +">>> heapq.nsmallest(2, L, key=len) # Return two shortest elements\n" +"['short', 'medium']" #: ../Doc/whatsnew/2.5.rst:1373 ../Doc/whatsnew/2.5.rst:1382 msgid "(Contributed by Raymond Hettinger.)" @@ -2800,6 +3030,8 @@ msgid "" "s = slice(5) # Create slice object\n" "itertools.islice(iterable, s.start, s.stop, s.step)" msgstr "" +"s = slice(5) # Crear objeto slice\n" +"itertools.islice(iterable, s.start, s.stop, s.step)" #: ../Doc/whatsnew/2.5.rst:1384 msgid "" @@ -2879,6 +3111,15 @@ msgid "" "for msg in src:\n" " dest.add(msg)" msgstr "" +"importar buzón\n" +"\n" +"# 'factory=None' utiliza email.Message.Message como la clase que representa\n" +"# los mensajes individuales.\n" +"src = mailbox.Maildir('maildir', factory=None)\n" +"dest = mailbox.mbox('/tmp/mbox')\n" +"\n" +"para msg en src:\n" +"dest.add(msg)" #: ../Doc/whatsnew/2.5.rst:1422 msgid "" @@ -2889,26 +3130,26 @@ msgstr "" "el Summer of Code 2005 de Google)" #: ../Doc/whatsnew/2.5.rst:1425 -#, fuzzy msgid "" "New module: the :mod:`!msilib` module allows creating Microsoft Installer :" "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)" +"Nuevo módulo: el módulo :mod:`!msilib` permite crear archivos :file:`.msi` y " +"archivos CAB de Microsoft Installer. También se incluye cierta " +"compatibilidad para leer la base de datos :file:`.msi`. (Contribución de " +"Martin von Löwis)." #: ../Doc/whatsnew/2.5.rst:1429 -#, fuzzy msgid "" "The :mod:`!nis` module now supports accessing domains other than the system " "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)" +"El módulo :mod:`!nis` ahora permite acceder a dominios distintos del dominio " +"predeterminado del sistema mediante el suministro de un argumento *domain* a " +"las funciones :func:`!nis.match` y :func:`!nis.maps`. (Contribuido por Ben " +"Bell)." #: ../Doc/whatsnew/2.5.rst:1433 msgid "" @@ -3018,17 +3259,17 @@ msgstr "" "(Contribución de Grégoire Dooms.)" #: ../Doc/whatsnew/2.5.rst:1481 -#, fuzzy msgid "" "The :mod:`pickle` and :mod:`!cPickle` modules no longer accept a return " "value of ``None`` from the :meth:`~object.__reduce__` method; the method " "must return a 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." +"Los módulos :mod:`pickle` y :mod:`!cPickle` ya no aceptan un valor de " +"retorno de ``None`` del método :meth:`~object.__reduce__`; en su lugar, el " +"método debe devolver una tupla de argumentos. La capacidad de devolver " +"``None`` quedó obsoleta en Python 2.4, por lo que esto completa la " +"eliminación de la función." #: ../Doc/whatsnew/2.5.rst:1486 msgid "" @@ -3119,7 +3360,6 @@ msgstr "" "de Robert Kiendl.)" #: ../Doc/whatsnew/2.5.rst:1522 -#, fuzzy msgid "" "The :mod:`SimpleXMLRPCServer ` and :mod:`DocXMLRPCServer " "` classes now have a :attr:`rpc_paths` attribute that " @@ -3127,11 +3367,12 @@ msgid "" "to allow only ``'/'`` and ``'/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." +"Las clases :mod:`SimpleXMLRPCServer ` y :mod:`DocXMLRPCServer " +"` ahora tienen un atributo :attr:`rpc_paths` que restringe " +"las operaciones XML-RPC a un conjunto limitado de rutas URL; el valor " +"predeterminado es permitir solo ``'/'`` y ``'/RPC2'``. Si se configura :attr:" +"`rpc_paths` en ``None`` o en una tupla vacía, se deshabilita esta " +"verificación de ruta." #: ../Doc/whatsnew/2.5.rst:1529 msgid "" @@ -3175,14 +3416,13 @@ msgstr "" "tipo y protocolo del socket." #: ../Doc/whatsnew/2.5.rst:1545 -#, fuzzy 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." +"Nuevo módulo: el módulo :mod:`!spwd` proporciona funciones para acceder a la " +"base de datos de contraseñas ocultas en sistemas que admiten contraseñas " +"ocultas." #: ../Doc/whatsnew/2.5.rst:1548 msgid "" @@ -3208,6 +3448,10 @@ msgid "" "data = s.pack(1972, 187, 'abc')\n" "year, number, name = s.unpack(data)" msgstr "" +"s = struct.Struct('ih3s')\n" +"\n" +"data = s.pack(1972, 187, 'abc')\n" +"year, number, name = s.unpack(data)" #: ../Doc/whatsnew/2.5.rst:1560 msgid "" @@ -3359,6 +3603,22 @@ msgid "" ">>> uuid.uuid5(uuid.NAMESPACE_DNS, 'python.org')\n" "UUID('886313e1-3b8a-5372-9b90-0c9aee199e5d')" msgstr "" +">>> import uuid\n" +">>> # make a UUID based on the host ID and current time\n" +">>> uuid.uuid1()\n" +"UUID('a8098c1a-f86e-11da-bd1a-00112444be1e')\n" +"\n" +">>> # make a UUID using an MD5 hash of a namespace UUID and a name\n" +">>> uuid.uuid3(uuid.NAMESPACE_DNS, 'python.org')\n" +"UUID('6fa459ea-ee8a-3ca4-894e-db77e160355e')\n" +"\n" +">>> # make a random UUID\n" +">>> uuid.uuid4()\n" +"UUID('16fd2706-8baf-433b-82eb-8c7fada847da')\n" +"\n" +">>> # make a UUID using a SHA-1 hash of a namespace UUID and a name\n" +">>> uuid.uuid5(uuid.NAMESPACE_DNS, 'python.org')\n" +"UUID('886313e1-3b8a-5372-9b90-0c9aee199e5d')" #: ../Doc/whatsnew/2.5.rst:1632 msgid "(Contributed by Ka-Ping Yee.)" @@ -3406,7 +3666,6 @@ msgstr "" "Broytmann y Georg Brandl)" #: ../Doc/whatsnew/2.5.rst:1653 -#, fuzzy msgid "" "The :mod:`xmlrpclib ` module now supports returning :class:" "`~datetime.datetime` objects for the XML-RPC date type. Supply " @@ -3414,11 +3673,11 @@ msgid "" "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)" +"El módulo :mod:`xmlrpclib ` ahora admite la devolución de " +"objetos :class:`~datetime.datetime` para el tipo de fecha XML-RPC. " +"Proporcione ``use_datetime=True`` a la función :func:`~xmlrpc.client.loads` " +"o a la clase :class:`!Unmarshaller` para habilitar esta función. " +"(Contribuido por Skip Montanaro)." #: ../Doc/whatsnew/2.5.rst:1660 msgid "" @@ -3448,7 +3707,6 @@ msgid "The ctypes package" msgstr "El paquete ctypes" #: ../Doc/whatsnew/2.5.rst:1681 -#, fuzzy msgid "" "The :mod:`ctypes` package, written by Thomas Heller, has been added to the " "standard library. :mod:`ctypes` lets you call arbitrary functions in " @@ -3458,10 +3716,10 @@ msgid "" 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." +"bibliotecas compartidas o DLL. Los usuarios habituales pueden recordar el " +"módulo :mod:`!dl`, que proporciona funciones para cargar bibliotecas " +"compartidas y llamar a funciones en ellas. El paquete :mod:`ctypes` es mucho " +"más sofisticado." #: ../Doc/whatsnew/2.5.rst:1687 msgid "" @@ -3482,6 +3740,10 @@ msgid "" "libc = ctypes.CDLL('libc.so.6')\n" "result = libc.printf(\"Line of output\\n\")" msgstr "" +"import ctypes\n" +"\n" +"libc = ctypes.CDLL('libc.so.6')\n" +"result = libc.printf(\"Line of output\\n\")" #: ../Doc/whatsnew/2.5.rst:1697 msgid "" @@ -3523,6 +3785,9 @@ msgid "" "buf = ctypes.create_string_buffer(s)\n" "libc.strfry(buf)" msgstr "" +"s = \"this is a string\"\n" +"buf = ctypes.create_string_buffer(s)\n" +"libc.strfry(buf)" #: ../Doc/whatsnew/2.5.rst:1715 msgid "" @@ -3541,9 +3806,13 @@ msgid "" ">>> libc.atof('2.71828')\n" "2.71828" msgstr "" +">>> libc.atof('2.71828')\n" +"-1783957616\n" +">>> libc.atof.restype = ctypes.c_double\n" +">>> libc.atof('2.71828')\n" +"2.71828" #: ../Doc/whatsnew/2.5.rst:1724 -#, fuzzy msgid "" ":mod:`ctypes` also provides a wrapper for Python's C API as the ``ctypes." "pythonapi`` object. This object does *not* release the global interpreter " @@ -3553,10 +3822,10 @@ msgid "" "usage::" msgstr "" ":mod:`ctypes` también proporciona un contenedor para la API C de Python como " -"objeto ``ctypes.pythonapi``. Este objeto *not* libera el bloqueo del " -"intérprete global 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:expr:`PyObject *`. Un uso " +"el objeto ``ctypes.pythonapi``. Este objeto libera el bloqueo global del " +"intérprete antes de llamar a una función, porque el bloqueo debe mantenerse " +"al llamar al código del intérprete. Hay un constructor de tipo :class:" +"`~ctypes.py_object` que creará un puntero :c:expr:`PyObject *`. Un uso " "simple::" #: ../Doc/whatsnew/2.5.rst:1730 @@ -3568,15 +3837,20 @@ msgid "" " ctypes.py_object(\"abc\"), ctypes.py_object(1))\n" "# d is now {'abc', 1}." msgstr "" +"import ctypes\n" +"\n" +"d = {}\n" +"ctypes.pythonapi.PyObject_SetItem(ctypes.py_object(d),\n" +" ctypes.py_object(\"abc\"), ctypes.py_object(1))\n" +"# d is now {'abc', 1}." #: ../Doc/whatsnew/2.5.rst:1737 -#, fuzzy msgid "" "Don't forget to use :func:`~ctypes.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." +"No olvide utilizar :func:`~ctypes.py_object`; si lo omite, terminará con un " +"error de segmentación." #: ../Doc/whatsnew/2.5.rst:1740 msgid "" @@ -3674,6 +3948,13 @@ msgid "" " 'http://planet.python.org/rss10.xml')\n" "tree = ET.parse(feed)" msgstr "" +"from xml.etree import ElementTree as ET\n" +"\n" +"tree = ET.parse('ex-1.xml')\n" +"\n" +"feed = urllib.urlopen(\n" +" 'http://planet.python.org/rss10.xml')\n" +"tree = ET.parse(feed)" #: ../Doc/whatsnew/2.5.rst:1790 msgid "" @@ -3702,6 +3983,10 @@ msgid "" "svg.set('height', '320px')\n" "svg.append(elem1)" msgstr "" +"svg = ET.XML(\"\"\"\n" +" \"\"\")\n" +"svg.set('height', '320px')\n" +"svg.append(elem1)" #: ../Doc/whatsnew/2.5.rst:1803 msgid "" @@ -3835,6 +4120,10 @@ msgid "" "elif elem.tag is ET.ProcessingInstruction:\n" " ..." msgstr "" +"if elem.tag is ET.Comment:\n" +" ...\n" +"elif elem.tag is ET.ProcessingInstruction:\n" +" ..." #: ../Doc/whatsnew/2.5.rst:1845 msgid "" @@ -3855,6 +4144,12 @@ msgid "" "f = open('output.xml', 'w')\n" "tree.write(f, encoding='utf-8')" msgstr "" +"# Encoding is US-ASCII\n" +"tree.write('output.xml')\n" +"\n" +"# Encoding is UTF-8\n" +"f = open('output.xml', 'w')\n" +"tree.write(f, encoding='utf-8')" #: ../Doc/whatsnew/2.5.rst:1855 msgid "" @@ -3899,7 +4194,6 @@ msgid "The hashlib package" msgstr "El paquete hashlib" #: ../Doc/whatsnew/2.5.rst:1879 -#, fuzzy msgid "" "A new :mod:`hashlib` module, written by Gregory P. Smith, has been added to " "replace the :mod:`!md5` and :mod:`!sha` modules. :mod:`hashlib` adds " @@ -3908,13 +4202,12 @@ msgid "" "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 " +"para sustituir a los módulos :mod:`!md5` y :mod:`!sha`. :mod:`hashlib` añade " +"compatibilidad con 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." +"implementaciones rápidas y optimizadas de algoritmos para plataformas." #: ../Doc/whatsnew/2.5.rst:1885 -#, fuzzy msgid "" "The old :mod:`!md5` and :mod:`!sha` modules still exist as wrappers around " "hashlib to preserve backwards compatibility. The new module's interface is " @@ -3922,11 +4215,12 @@ 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 ::" +"Los módulos antiguos :mod:`!md5` y :mod:`!sha` todavía existen como " +"contenedores de hashlib para preservar la compatibilidad con versiones " +"anteriores. La interfaz del nuevo módulo es muy similar a la de los módulos " +"antiguos, pero no idéntica. La diferencia más significativa es que las " +"funciones constructoras para crear nuevos objetos hash tienen nombres " +"diferentes. ::" #: ../Doc/whatsnew/2.5.rst:1891 msgid "" @@ -3953,6 +4247,28 @@ msgid "" "# Alternative form\n" "h = hashlib.new('md5') # Provide algorithm as a string" msgstr "" +"# Versiones anteriores\n" +"h = md5.md5()\n" +"h = md5.new()\n" +"\n" +"# Nueva versión\n" +"h = hashlib.md5()\n" +"\n" +"# Versiones anteriores\n" +"h = sha.sha()\n" +"h = sha.new()\n" +"\n" +"# Nueva versión\n" +"h = hashlib.sha1()\n" +"\n" +"# Hash que no estaban disponibles anteriormente\n" +"h = hashlib.sha224()\n" +"h = hashlib.sha256()\n" +"h = hashlib.sha384()\n" +"h = hashlib.sha512()\n" +"\n" +"# Forma alternativa\n" +"h = hashlib.new('md5') # Proporcionar algoritmo como cadena" #: ../Doc/whatsnew/2.5.rst:1914 msgid "" @@ -4037,7 +4353,7 @@ msgstr "" #: ../Doc/whatsnew/2.5.rst:1956 msgid "conn = sqlite3.connect('/tmp/example')" -msgstr "" +msgstr "conn = sqlite3.connect('/tmp/ejemplo')" #: ../Doc/whatsnew/2.5.rst:1958 msgid "" @@ -4068,6 +4384,16 @@ msgid "" "c.execute(\"\"\"insert into stocks\n" " values ('2006-01-05','BUY','RHAT',100,35.14)\"\"\")" msgstr "" +"c = conn.cursor()\n" +"\n" +"# Create table\n" +"c.execute('''create table stocks\n" +"(date text, trans text, symbol text,\n" +" qty real, price real)''')\n" +"\n" +"# Insert a row of data\n" +"c.execute(\"\"\"insert into stocks\n" +" values ('2006-01-05','BUY','RHAT',100,35.14)\"\"\")" #: ../Doc/whatsnew/2.5.rst:1974 msgid "" @@ -4114,6 +4440,20 @@ msgid "" " ):\n" " c.execute('insert into stocks values (?,?,?,?,?)', t)" msgstr "" +"# Never do this -- insecure!\n" +"symbol = 'IBM'\n" +"c.execute(\"... where symbol = '%s'\" % symbol)\n" +"\n" +"# Do this instead\n" +"t = (symbol,)\n" +"c.execute('select * from stocks where symbol=?', t)\n" +"\n" +"# Larger example\n" +"for t in (('2006-03-28', 'BUY', 'IBM', 1000, 45.00),\n" +" ('2006-04-05', 'BUY', 'MSOFT', 1000, 72.00),\n" +" ('2006-04-06', 'SELL', 'IBM', 500, 53.00),\n" +" ):\n" +" c.execute('insert into stocks values (?,?,?,?,?)', t)" #: ../Doc/whatsnew/2.5.rst:1998 msgid "" @@ -4144,6 +4484,16 @@ msgid "" "(u'2006-04-05', u'BUY', u'MSOFT', 1000, 72.0)\n" ">>>" msgstr "" +">>> c = conn.cursor()\n" +">>> c.execute('select * from stocks order by price')\n" +">>> for row in c:\n" +"... print row\n" +"...\n" +"(u'2006-01-05', u'BUY', u'RHAT', 100, 35.140000000000001)\n" +"(u'2006-03-28', u'BUY', u'IBM', 1000, 45.0)\n" +"(u'2006-04-06', u'SELL', u'IBM', 500, 53.0)\n" +"(u'2006-04-05', u'BUY', u'MSOFT', 1000, 72.0)\n" +">>>" #: ../Doc/whatsnew/2.5.rst:2016 msgid "" @@ -4223,6 +4573,14 @@ msgid "" "httpd = simple_server.make_server(host, port, wsgi_app)\n" "httpd.serve_forever()" msgstr "" +"from wsgiref import simple_server\n" +"\n" +"wsgi_app = ...\n" +"\n" +"host = ''\n" +"port = 8000\n" +"httpd = simple_server.make_server(host, port, wsgi_app)\n" +"httpd.serve_forever()" #: ../Doc/whatsnew/2.5.rst:2069 msgid "" @@ -4326,6 +4684,14 @@ msgid "" "assignment = ast.body[0]\n" "for_loop = ast.body[1]" msgstr "" +"from _ast import PyCF_ONLY_AST\n" +"ast = compile(\"\"\"a=0\n" +"for i in range(10):\n" +" a += i\n" +"\"\"\", \"\", 'exec', PyCF_ONLY_AST)\n" +"\n" +"assignment = ast.body[0]\n" +"for_loop = ast.body[1]" #: ../Doc/whatsnew/2.5.rst:2117 msgid "" @@ -4522,6 +4888,8 @@ msgid "" "range = PyObject_CallFunction((PyObject*) &PyRange_Type, \"lll\",\n" " start, stop, step);" msgstr "" +"range = PyObject_CallFunction((PyObject*) &PyRange_Type, \"lll\",\n" +" start, stop, step);" #: ../Doc/whatsnew/2.5.rst:2208 msgid "Port-Specific Changes" @@ -4630,20 +4998,18 @@ msgstr "" "%char sin texto alrededor." #: ../Doc/whatsnew/2.5.rst:2256 -#, fuzzy msgid "" "Library: The :mod:`pickle` and :mod:`!cPickle` modules no longer accept a " "return value of ``None`` from the :meth:`~object.__reduce__` method; the " "method must 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*." +"Biblioteca: Los módulos :mod:`pickle` y :mod:`!cPickle` ya no aceptan un " +"valor de retorno de ``None`` del método :meth:`~object.__reduce__`; en su " +"lugar, el método debe devolver una tupla de argumentos. Los módulos tampoco " +"aceptan el parámetro de palabra clave *bin*, que ya no se utiliza." #: ../Doc/whatsnew/2.5.rst:2261 -#, fuzzy msgid "" "Library: The :mod:`SimpleXMLRPCServer ` and :mod:" "`DocXMLRPCServer ` classes now have a :attr:`rpc_paths` " @@ -4651,11 +5017,12 @@ msgid "" "the default is to allow only ``'/'`` and ``'/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." +"Biblioteca: Las clases :mod:`SimpleXMLRPCServer ` y :mod:" +"`DocXMLRPCServer ` ahora tienen un atributo :attr:`rpc_paths` " +"que restringe las operaciones XML-RPC a un conjunto limitado de rutas URL; " +"el valor predeterminado es permitir solo ``'/'`` y ``'/RPC2'``. Si se " +"configura :attr:`rpc_paths` en ``None`` o en una tupla vacía, se deshabilita " +"esta verificación de ruta." #: ../Doc/whatsnew/2.5.rst:2267 msgid ""