diff --git a/whatsnew/2.6.po b/whatsnew/2.6.po index 852739d146..c6b10ed4cd 100644 --- a/whatsnew/2.6.po +++ b/whatsnew/2.6.po @@ -13,12 +13,12 @@ msgstr "" "POT-Creation-Date: 2024-11-21 16:38-0300\n" "PO-Revision-Date: 2024-01-21 18:29+0100\n" "Last-Translator: \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.6.rst:5 @@ -170,7 +170,6 @@ msgstr "" "sea necesario." #: ../Doc/whatsnew/2.6.rst:117 -#, fuzzy msgid "" "A new command-line switch, :option:`!-3`, enables warnings about features " "that will be removed in Python 3.0. You can run code with this switch to " @@ -181,22 +180,22 @@ msgstr "" "Un nuevo modificador de línea de comandos, :option:`!-3`, habilita " "advertencias sobre características que se eliminarán en Python 3.0. Puede " "ejecutar código con este modificador para ver cuánto trabajo será necesario " -"para migrar el código a 3.0. El valor de este modificador está disponible " -"para el código Python como la variable booleana :data:`sys.py3kwarning`, y " -"para el código de extensión C como :c:data:`Py_Py3kWarningFlag`." +"para trasladar el código a la versión 3.0. El valor de este modificador está " +"disponible para el código Python como la variable booleana :data:`sys." +"py3kwarning` y para el código de extensión C como :c:data:`!" +"Py_Py3kWarningFlag`." #: ../Doc/whatsnew/2.6.rst:126 -#, fuzzy msgid "" "The 3\\ *xxx* series of PEPs, which contains proposals for Python 3.0. :pep:" "`3000` describes the development process for Python 3.0. Start with :pep:" "`3100` that describes the general goals for Python 3.0, and then explore the " "higher-numbered PEPs that propose specific features." msgstr "" -"Las series 3xxx de PEP, que contienen propuestas para Python 3.0. :pep:" -"`3000` describe el proceso de desarrollo de Python 3.0. Empiece con :pep:" -"`3100` que describe los objetivos generales de Python 3.0, y luego explore " -"los PEPS con números más altos que proponen características específicas." +"La serie 3\\ *xxx* de PEP, que contiene propuestas para Python 3.0. :pep:" +"`3000` describe el proceso de desarrollo para Python 3.0. Comience con :pep:" +"`3100`, que describe los objetivos generales para Python 3.0, y luego " +"explore los PEP de mayor número que proponen características específicas." #: ../Doc/whatsnew/2.6.rst:134 msgid "Changes to the Development Process" @@ -474,42 +473,41 @@ msgid "" "with expression [as variable]:\n" " with-block" msgstr "" +"with expression [as variable]:\n" +" with-block" #: ../Doc/whatsnew/2.6.rst:269 -#, 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 admita el " -"protocolo de administración de contexto (es decir, tiene 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.6.rst:273 -#, 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 objeto :meth:`__enter__` se llama antes de que se ejecute *with-block* y, " -"por lo tanto, se puede ejecutar código de configuración. También, si se " -"proporciona, puede retornar un valor que esté vinculado al nombre " -"*variable*. (Tenga en cuenta que a la *variable* *no* se le asigna el " -"resultado de la *expression*)." +"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.6.rst:278 -#, 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 de *with-block*, se llama al método :meth:" -"`__exit__` del objeto, incluso si el bloque generó una excepción y, por lo " -"tanto, puede ejecutar código de limpieza." +"`~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.6.rst:282 msgid "" @@ -528,6 +526,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.6.rst:290 msgid "" @@ -540,13 +542,12 @@ msgstr "" "una excepción en la mitad del bloque." #: ../Doc/whatsnew/2.6.rst:296 -#, 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__` retorna *self*." +"`~object.__enter__` retorna *self*." #: ../Doc/whatsnew/2.6.rst:299 msgid "" @@ -563,6 +564,10 @@ msgid "" " # Critical section of code\n" " ..." msgstr "" +"lock = threading.Lock()\n" +"with lock:\n" +" # Critical section of code\n" +" ..." #: ../Doc/whatsnew/2.6.rst:307 msgid "" @@ -595,6 +600,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.6.rst:329 msgid "Writing Context Managers" @@ -620,7 +635,6 @@ msgid "A high-level explanation of the context management protocol is:" msgstr "Una explicación de alto nivel del protocolo de gestor de contexto es:" #: ../Doc/whatsnew/2.6.rst:339 -#, fuzzy msgid "" "The expression is evaluated and should result in an object called a " "\"context manager\". The context manager must have :meth:`~object." @@ -628,25 +642,23 @@ msgid "" msgstr "" "La expresión se evalúa y debería dar como resultado un objeto llamado " "\"gestor de contexto\". El gestor de contexto debe tener los métodos :meth:" -"`__enter__` y :meth:`__exit__`." +"`~object.__enter__` y :meth:`~object.__exit__`." #: ../Doc/whatsnew/2.6.rst:343 -#, 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 " -"retornado se asigna a *VAR*. Si no hay una cláusula ``as VAR``, el valor " -"simplemente se descarta." +"Se llama al método :meth:`~object.__enter__` del gestor de contexto. El " +"valor retornado se asigna a *VAR*. Si no hay una cláusula ``as VAR``, el " +"valor simplemente se descarta." #: ../Doc/whatsnew/2.6.rst:347 msgid "The code in *BLOCK* is executed." msgstr "Se ejecuta el código en *BLOCK*." #: ../Doc/whatsnew/2.6.rst:349 -#, fuzzy msgid "" "If *BLOCK* raises an exception, the context manager's :meth:`~object." "__exit__` method is called with three arguments, the exception details " @@ -658,24 +670,23 @@ msgid "" "author of the code containing the ':keyword:`with`' statement will never " "realize anything went wrong." msgstr "" -"Si *BLOCK* lanza una excepción, se llama al método :meth:`__exit__` del " -"gestor de contexto con tres argumentos, los detalles de la excepción " -"(``type, value, traceback``, los mismos valores retornados por :func:`sys." -"exc_info`, que también puede ser ``None`` si no se produjo ninguna " -"excepción). El valor de retorno del método controla si se vuelve a generar " -"una excepción: cualquier valor *false* vuelve a lanzar la excepción, y " -"``True`` resultará en inhibirla. Rara vez querrá suprimir la excepción, " -"porque si lo hace, el autor del código que contenga la sentencia ':keyword:" -"`with`' nunca se dará cuenta de que algo salió mal." +"Si *BLOCK* genera una excepción, se llama al método :meth:`~object.__exit__` " +"del administrador de contexto con tres argumentos: los detalles de la " +"excepción (``type, value, traceback``, los mismos valores devueltos por :" +"func:`sys.exc_info`, que también pueden ser ``None`` si no se produjo " +"ninguna excepción). El valor de retorno del método controla si se vuelve a " +"generar una excepción: cualquier valor falso vuelve a generar la excepción y " +"``True`` provocará su supresión. Solo en raras ocasiones querrá suprimir la " +"excepción, porque si lo hace, el autor del código que contiene la " +"declaración ':keyword:`with`' nunca se dará cuenta de que algo salió mal." #: ../Doc/whatsnew/2.6.rst:358 -#, 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__` continúa " -"llamándose, pero *type*, *value* y *traceback* son todos ``None``." +"Si *BLOCK* no lanzó una excepción, el método :meth:`~object.__exit__` " +"continúa llamándose, pero *type*, *value* y *traceback* son todos ``None``." #: ../Doc/whatsnew/2.6.rst:361 msgid "" @@ -717,6 +728,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.6.rst:379 msgid "" @@ -739,9 +755,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.6.rst:392 -#, 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 " @@ -749,11 +772,11 @@ msgid "" "cursor`` to their ':keyword:`with`' statement to bind the cursor to a " "variable name. ::" msgstr "" -"El método :meth:`__enter__` es bastante fácil, ya que solo tiene 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 retornará. Luego, el " -"usuario puede agregar ``as cursor`` a su sentencia ':keyword:`with`' para " -"vincular 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.6.rst:397 msgid "" @@ -764,19 +787,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.6.rst:404 -#, 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 se debe " -"realizar la mayor parte del trabajo. El método debe verificar si ocurrió una " -"excepción. Si no hubo excepción, la transacción se confirma. La transacción " -"se revierte 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.6.rst:409 msgid "" @@ -804,6 +832,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.6.rst:429 msgid "The contextlib module" @@ -818,7 +856,6 @@ msgstr "" "son útiles al escribir objetos para usar con la sentencia ':keyword:`with`'." #: ../Doc/whatsnew/2.6.rst:434 -#, 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 " @@ -830,14 +867,14 @@ msgid "" "method. Any exception raised in the block will be raised by the :keyword:`!" "yield` statement." msgstr "" -"El decorador se llama :func:`contextmanager`, y te permite escribir una " -"única función generadora en lugar de definir una clase nueva. El generador " -"debería producir exactamente un valor. El código hasta :keyword:`yield` se " -"ejecutará como el método :meth:`__enter__`, y el valor obtenido será el " -"valor de retorno del método que se vinculará a la variable en la clausula :" -"keyword:`!as` (si la hay) de la sentencia ':keyword:`with`'. El código " -"después de :keyword:`!yield` se ejecutará en el método :meth:`__exit__` . " -"Cualquier excepción lanzada en el bloque será generada por la sentencia :" +"El decorador se llama :func:`contextmanager` y le 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 :keyword:`yield` se ejecutará " +"como el método :meth:`~object.__enter__` y el valor producido 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.6.rst:443 @@ -867,6 +904,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.6.rst:463 msgid "" @@ -888,6 +941,9 @@ msgid "" "with nested (db_transaction(db), lock) as (cursor, locked):\n" " ..." msgstr "" +"lock = threading.Lock()\n" +"with nested (db_transaction(db), lock) as (cursor, locked):\n" +" ..." #: ../Doc/whatsnew/2.6.rst:472 msgid "" @@ -908,6 +964,12 @@ msgid "" " for line in f:\n" " sys.stdout.write(line)" msgstr "" +"importar urllib, sys\n" +"desde contextlib importar closing\n" +"\n" +"con closing(urllib.urlopen('http://www.yahoo.com')) como f:\n" +"para línea en f:\n" +"sys.stdout.write(line)" #: ../Doc/whatsnew/2.6.rst:490 msgid ":pep:`343` - The \"with\" statement" @@ -1124,6 +1186,35 @@ msgid "" " result = queue.get()\n" " print 'Factorial', N, '=', result" msgstr "" +"import time\n" +"from multiprocessing import Process, Queue\n" +"\n" +"\n" +"def factorial(queue, N):\n" +" \"Compute a factorial.\"\n" +" # If N is a multiple of 4, this function will take much longer.\n" +" if (N % 4) == 0:\n" +" time.sleep(.05 * N/4)\n" +"\n" +" # Calculate the result\n" +" fact = 1L\n" +" for i in range(1, N+1):\n" +" fact = fact * i\n" +"\n" +" # Put the result on the queue\n" +" queue.put(fact)\n" +"\n" +"if __name__ == '__main__':\n" +" queue = Queue()\n" +"\n" +" N = 5\n" +"\n" +" p = Process(target=factorial, args=(queue, N))\n" +" p.start()\n" +" p.join()\n" +"\n" +" result = queue.get()\n" +" print 'Factorial', N, '=', result" #: ../Doc/whatsnew/2.6.rst:614 msgid "" @@ -1171,6 +1262,15 @@ msgid "" "for v in result:\n" " print v" msgstr "" +"from multiprocessing import Pool\n" +"\n" +"def factorial(N, dictionary):\n" +" \"Compute a factorial.\"\n" +" ...\n" +"p = Pool(5)\n" +"result = p.map(factorial, range(1, 1000, 10))\n" +"for v in result:\n" +" print v" #: ../Doc/whatsnew/2.6.rst:640 msgid "This produces the following output::" @@ -1185,6 +1285,12 @@ msgid "" "33452526613163807108170062053440751665152000000000\n" "..." msgstr "" +"1\n" +"39916800\n" +"51090942171709440000\n" +"8222838654177922817725562880000000\n" +"33452526613163807108170062053440751665152000000000\n" +"..." #: ../Doc/whatsnew/2.6.rst:649 msgid "" @@ -1242,6 +1348,37 @@ msgid "" " for k, v in sorted(d.items()):\n" " print k, v" msgstr "" +"import time\n" +"from multiprocessing import Pool, Manager\n" +"\n" +"def factorial(N, dictionary):\n" +" \"Compute a factorial.\"\n" +" # Calculate the result\n" +" fact = 1L\n" +" for i in range(1, N+1):\n" +" fact = fact * i\n" +"\n" +" # Store result in dictionary\n" +" dictionary[N] = fact\n" +"\n" +"if __name__ == '__main__':\n" +" p = Pool(5)\n" +" mgr = Manager()\n" +" d = mgr.dict() # Create shared dictionary\n" +"\n" +" # Run tasks using the pool\n" +" for N in range(1, 1000, 10):\n" +" p.apply_async(factorial, (N, d))\n" +"\n" +" # Mark pool as closed -- no more tasks can be added.\n" +" p.close()\n" +"\n" +" # Wait for tasks to exit\n" +" p.join()\n" +"\n" +" # Output results\n" +" for k, v in sorted(d.items()):\n" +" print k, v" #: ../Doc/whatsnew/2.6.rst:693 msgid "This will produce the output::" @@ -1256,6 +1393,12 @@ msgid "" "41 33452526613163807108170062053440751665152000000000\n" "51 15511187532873822802242430164693032110632597200169861120000..." msgstr "" +"1 1\n" +"11 39916800\n" +"21 51090942171709440000\n" +"31 8222838654177922817725562880000000\n" +"41 33452526613163807108170062053440751665152000000000\n" +"51 15511187532873822802242430164693032110632597200169861120000..." #: ../Doc/whatsnew/2.6.rst:704 msgid "The documentation for the :mod:`multiprocessing` module." @@ -1310,6 +1453,14 @@ msgid "" "... last_login = \"5 Mar 2008 07:20\")\n" "'User ID: root Last seen: 5 Mar 2008 07:20'" msgstr "" +">>> # Substitute positional argument 0 into the string.\n" +">>> \"User ID: {0}\".format(\"root\")\n" +"'User ID: root'\n" +">>> # Use the named keyword arguments\n" +">>> \"User ID: {uid} Last seen: {last_login}\".format(\n" +"... uid=\"root\",\n" +"... last_login = \"5 Mar 2008 07:20\")\n" +"'User ID: root Last seen: 5 Mar 2008 07:20'" #: ../Doc/whatsnew/2.6.rst:735 msgid "Curly brackets can be escaped by doubling them::" @@ -1320,6 +1471,8 @@ msgid "" ">>> \"Empty dict: {{}}\".format()\n" "\"Empty dict: {}\"" msgstr "" +">>> \"Empty dict: {{}}\".format()\n" +"\"Empty dict: {}\"" #: ../Doc/whatsnew/2.6.rst:740 msgid "" @@ -1345,6 +1498,16 @@ msgid "" ">>> 'Content-type: {0[.mp4]}'.format(mimetypes.types_map)\n" "'Content-type: video/mp4'" msgstr "" +">>> import sys\n" +">>> print 'Platform: {0.platform}\\nPython version: {0.version}'." +"format(sys)\n" +"Platform: darwin\n" +"Python version: 2.6a1+ (trunk:61261M, Mar 5 2008, 20:29:41)\n" +"[GCC 4.0.1 (Apple Computer, Inc. build 5367)]'\n" +"\n" +">>> import mimetypes\n" +">>> 'Content-type: {0[.mp4]}'.format(mimetypes.types_map)\n" +"'Content-type: video/mp4'" #: ../Doc/whatsnew/2.6.rst:754 msgid "" @@ -1382,6 +1545,15 @@ msgid "" ">>> fmt.format('Banquet', 125)\n" "'Banquet $ 125'" msgstr "" +">>> # Field 0: left justify, pad to 15 characters\n" +">>> # Field 1: right justify, pad to 6 characters\n" +">>> fmt = '{0:15} ${1:>6}'\n" +">>> fmt.format('Registration', 35)\n" +"'Registration $ 35'\n" +">>> fmt.format('Tutorial', 50)\n" +"'Tutorial $ 50'\n" +">>> fmt.format('Banquet', 125)\n" +"'Banquet $ 125'" #: ../Doc/whatsnew/2.6.rst:774 msgid "Format specifiers can reference other fields through nesting::" @@ -1399,6 +1571,13 @@ msgid "" ">>> fmt.format('Invoice #1234', width)\n" "'Invoice #1234 '" msgstr "" +">>> fmt = '{0:{1}}'\n" +">>> width = 15\n" +">>> fmt.format('Invoice #1234', width)\n" +"'Invoice #1234 '\n" +">>> width = 35\n" +">>> fmt.format('Invoice #1234', width)\n" +"'Invoice #1234 '" #: ../Doc/whatsnew/2.6.rst:784 msgid "The alignment of a field within the desired width can be specified:" @@ -1463,6 +1642,10 @@ msgid "" ">>> '{0:e}'.format(3.75)\n" "'3.750000e+00'" msgstr "" +">>> '{0:g}'.format(3.75)\n" +"'3.75'\n" +">>> '{0:e}'.format(3.75)\n" +"'3.750000e+00'" #: ../Doc/whatsnew/2.6.rst:804 msgid "" @@ -1589,6 +1772,11 @@ msgid "" " else:\n" " return str(self)" msgstr "" +"def __format__(self, format_spec):\n" +" if isinstance(format_spec, unicode):\n" +" return unicode(str(self))\n" +" else:\n" +" return str(self)" #: ../Doc/whatsnew/2.6.rst:836 msgid "" @@ -1603,6 +1791,8 @@ msgid "" ">>> format(75.6564, '.2f')\n" "'75.66'" msgstr "" +">>> format(75.6564, '.2f')\n" +"'75.66'" #: ../Doc/whatsnew/2.6.rst:847 msgid ":ref:`formatstrings`" @@ -1648,6 +1838,8 @@ msgid "" ">>> from __future__ import print_function\n" ">>> print('# of entries', len(dictionary), file=sys.stderr)" msgstr "" +">>> from __future__ import print_function\n" +">>> print('# de entradas', len(diccionario), file=sys.stderr)" #: ../Doc/whatsnew/2.6.rst:869 msgid "The signature of the new function is::" @@ -1708,6 +1900,11 @@ msgid "" "except TypeError, ValueError: # Wrong!\n" " ..." msgstr "" +"La firma de la nueva función es::" +"try:\n" +" ...\n" +"except TypeError, ValueError: # Wrong!\n" +" ..." #: ../Doc/whatsnew/2.6.rst:902 msgid "" @@ -1731,6 +1928,10 @@ msgid "" "except (TypeError, ValueError):\n" " ..." msgstr "" +"try:\n" +" ...\n" +"except (TypeError, ValueError):\n" +" ..." #: ../Doc/whatsnew/2.6.rst:914 msgid "" @@ -1759,6 +1960,10 @@ msgid "" "except TypeError as exc:\n" " ..." msgstr "" +"try:\n" +" ...\n" +"except TypeError as exc:\n" +" ..." #: ../Doc/whatsnew/2.6.rst:927 msgid "" @@ -1851,6 +2056,12 @@ msgid "" "\n" "print len(s) # 12 Unicode characters" msgstr "" +"from __future__ import unicode_literals\n" +"\n" +"s = ('\\u751f\\u3080\\u304e\\u3000\\u751f\\u3054'\n" +" '\\u3081\\u3000\\u751f\\u305f\\u307e\\u3054')\n" +"\n" +"print len(s) # 12 Unicode characters" #: ../Doc/whatsnew/2.6.rst:977 msgid "" @@ -1890,6 +2101,16 @@ msgid "" ">>> unicode(str(b), 'utf-8')\n" "u'\\u31ef \\u3244'" msgstr "" +">>> bytearray([65, 66, 67])\n" +"bytearray(b'ABC')\n" +">>> b = bytearray(u'\\u21ef\\u3244', 'utf-8')\n" +">>> b\n" +"bytearray(b'\\xe2\\x87\\xaf\\xe3\\x89\\x84')\n" +">>> b[0] = '\\xe3'\n" +">>> b\n" +"bytearray(b'\\xe3\\x87\\xaf\\xe3\\x89\\x84')\n" +">>> unicode(str(b), 'utf-8')\n" +"u'\\u31ef \\u3244'" #: ../Doc/whatsnew/2.6.rst:999 msgid "" @@ -1910,6 +2131,11 @@ msgid "" ">>> b\n" "bytearray(b'ABCde')" msgstr "" +">>> b = bytearray('ABC')\n" +">>> b.append('d')\n" +">>> b.append(ord('e'))\n" +">>> b\n" +"bytearray(b'ABCde')" #: ../Doc/whatsnew/2.6.rst:1012 msgid "" @@ -2043,7 +2269,6 @@ msgstr "" "nada en el disco." #: ../Doc/whatsnew/2.6.rst:1083 -#, fuzzy msgid "" "(In Python 2.6, :class:`io.StringIO` is implemented in pure Python, so it's " "pretty slow. You should therefore stick with the existing :mod:`!StringIO` " @@ -2051,12 +2276,11 @@ msgid "" "module will be rewritten into C for speed, and perhaps the C implementation " "will be backported to the 2.x releases.)" msgstr "" -"(En Python 2.6, :class:`io.StringIO` está implementado en Python puro, por " -"lo que es bastante lento. Por lo tanto, deberías seguir con el módulo :mod:" -"`StringIO` existente o con :mod:`cStringIO` por ahora. En algún momento el " -"módulo :mod:`io` de Python 3.0 será reescrito en C para aumentar la " -"velocidad, y quizás la implementación en C será retroalimentada a las " -"versiones 2.x)" +"(En Python 2.6, :class:`io.StringIO` se implementa en Python puro, por lo " +"que es bastante lento. Por lo tanto, debe quedarse con el módulo :mod:`!" +"StringIO` o :mod:`!cStringIO` existente por ahora. En algún momento, el " +"módulo :mod:`io` de Python 3.0 se reescribirá en C para mayor velocidad, y " +"tal vez la implementación de C se incorpore a las versiones 2.x)." #: ../Doc/whatsnew/2.6.rst:1089 msgid "" @@ -2267,6 +2491,10 @@ msgid "" "class Storage(collections.MutableMapping):\n" " ..." msgstr "" +"import collections\n" +"\n" +"class Storage(collections.MutableMapping):\n" +" ..." #: ../Doc/whatsnew/2.6.rst:1196 msgid "" @@ -2286,6 +2514,12 @@ msgid "" "\n" "collections.MutableMapping.register(Storage)" msgstr "" +"import collections\n" +"\n" +"class Storage:\n" +" ...\n" +"\n" +"collections.MutableMapping.register(Storage)" #: ../Doc/whatsnew/2.6.rst:1207 msgid "" @@ -2308,6 +2542,10 @@ msgid "" "PrintableType.register(float)\n" "PrintableType.register(str)" msgstr "" +"# Register Python's types\n" +"PrintableType.register(int)\n" +"PrintableType.register(float)\n" +"PrintableType.register(str)" #: ../Doc/whatsnew/2.6.rst:1219 msgid "" @@ -2334,6 +2572,9 @@ msgid "" " if not isinstance(d, collections.MutableMapping):\n" " raise ValueError(\"Mapping object expected, not %r\" % d)" msgstr "" +"def func(d):\n" +" if not isinstance(d, collections.MutableMapping):\n" +" raise ValueError(\"Mapping object expected, not %r\" % d)" #: ../Doc/whatsnew/2.6.rst:1230 msgid "" @@ -2378,6 +2619,22 @@ msgid "" " def draw(self, x, y, scale):\n" " ..." msgstr "" +"from abc import ABCMeta, abstractmethod\n" +"\n" +"class Drawable():\n" +" __metaclass__ = ABCMeta\n" +"\n" +" @abstractmethod\n" +" def draw(self, x, y, scale=1.0):\n" +" pass\n" +"\n" +" def draw_doubled(self, x, y):\n" +" self.draw(x, y, scale=2.0)\n" +"\n" +"\n" +"class Square(Drawable):\n" +" def draw(self, x, y, scale):\n" +" ..." #: ../Doc/whatsnew/2.6.rst:1258 msgid "" @@ -2421,6 +2678,15 @@ msgid "" "draw\n" ">>>" msgstr "" +">>> class Circle(Drawable):\n" +"... pass\n" +"...\n" +">>> c = Circle()\n" +"Traceback (most recent call last):\n" +" File \"\", line 1, in \n" +"TypeError: Can't instantiate abstract class Circle with abstract methods " +"draw\n" +">>>" #: ../Doc/whatsnew/2.6.rst:1281 msgid "" @@ -2439,6 +2705,12 @@ msgid "" "def readonly(self):\n" " return self._x" msgstr "" +"from abc import abstractproperty\n" +"...\n" +"\n" +"@abstractproperty\n" +"def readonly(self):\n" +" return self._x" #: ../Doc/whatsnew/2.6.rst:1291 msgid "Subclasses must then define a :meth:`readonly` property." @@ -2486,6 +2758,10 @@ msgid "" ">>> 0b101111\n" "47" msgstr "" +">>> 0o21, 2*8 + 1\n" +"(17, 17)\n" +">>> 0b101111\n" +"47" #: ../Doc/whatsnew/2.6.rst:1320 msgid "" @@ -2506,6 +2782,12 @@ msgid "" ">>> bin(173)\n" "'0b10101101'" msgstr "" +">>> oct(42)\n" +"'052'\n" +">>> future_builtins.oct(42)\n" +"'0o52'\n" +">>> bin(173)\n" +"'0b10101101'" #: ../Doc/whatsnew/2.6.rst:1331 msgid "" @@ -2530,6 +2812,14 @@ msgid "" ">>> int('0b1101', 0)\n" "13" msgstr "" +">>> int ('0o52', 0)\n" +"42\n" +">>> int('1101', 2)\n" +"13\n" +">>> int('0b1101', 2)\n" +"13\n" +">>> int('0b1101', 0)\n" +"13" #: ../Doc/whatsnew/2.6.rst:1349 msgid ":pep:`3127` - Integer Literal Support and Syntax" @@ -2558,6 +2848,10 @@ msgid "" "class A:\n" " pass" msgstr "" +"@foo\n" +"@bar\n" +"class A:\n" +" pass" #: ../Doc/whatsnew/2.6.rst:1367 msgid "This is equivalent to::" @@ -2570,6 +2864,10 @@ msgid "" "\n" "A = foo(bar(A))" msgstr "" +"class A:\n" +" pass\n" +"\n" +"A = foo(bar(A))" #: ../Doc/whatsnew/2.6.rst:1376 msgid ":pep:`3129` - Class Decorators" @@ -2731,17 +3029,25 @@ msgid "" ">>> a/b\n" "Fraction(5, 3)" msgstr "" +">>> from fractions import Fraction\n" +">>> a = Fraction(2, 3)\n" +">>> b = Fraction(2, 5)\n" +">>> float(a), float(b)\n" +"(0.66666666666666663, 0.40000000000000002)\n" +">>> a+b\n" +"Fraction(16, 15)\n" +">>> a/b\n" +"Fraction(5, 3)" #: ../Doc/whatsnew/2.6.rst:1455 -#, fuzzy msgid "" "For converting floating-point numbers to rationals, the float type now has " "an :meth:`as_integer_ratio` method that returns the numerator and " "denominator for a fraction that evaluates to the same floating-point value::" msgstr "" -"Para convertir números de punto flotante en racionales, el tipo float tiene " -"ahora un método :meth:`as_integer_ratio()` que devuelve el numerador y el " -"denominador de una fracción que se evalúa al mismo valor de punto flotante::" +"Para convertir números de punto flotante en racionales, el tipo float ahora " +"tiene un método :meth:`as_integer_ratio` que devuelve el numerador y el " +"denominador de una fracción que evalúa el mismo valor de punto flotante:" #: ../Doc/whatsnew/2.6.rst:1460 msgid "" @@ -2752,6 +3058,12 @@ msgid "" ">>> (1./3) .as_integer_ratio()\n" "(6004799503160661L, 18014398509481984L)" msgstr "" +">>> (2.5) .as_integer_ratio()\n" +"(5, 2)\n" +">>> (3.1415) .as_integer_ratio()\n" +"(7074029114692207L, 2251799813685248L)\n" +">>> (1./3) .as_integer_ratio()\n" +"(6004799503160661L, 18014398509481984L)" #: ../Doc/whatsnew/2.6.rst:1467 msgid "" @@ -2838,6 +3150,14 @@ msgid "" ">>> f(**ud)\n" "['a', 'b']" msgstr "" +">>> def f(**kw):\n" +"... print sorted(kw)\n" +"...\n" +">>> ud=UserDict.UserDict()\n" +">>> ud['a'] = 1\n" +">>> ud['b'] = 'string'\n" +">>> f(**ud)\n" +"['a', 'b']" #: ../Doc/whatsnew/2.6.rst:1511 msgid "(Contributed by Alexander Belopolsky; :issue:`1686487`.)" @@ -2858,7 +3178,12 @@ msgid "" "...\n" ">>> f(1,2,3, *(4,5,6), keyword=13)\n" "(1, 2, 3, 4, 5, 6) {'keyword': 13}" -msgstr "" +msgstr "" +">>> def f(*args, **kw):\n" +"... print args, kw\n" +"...\n" +">>> f(1,2,3, *(4,5,6), keyword=13)\n" +"(1, 2, 3, 4, 5, 6) {'keyword': 13}" #: ../Doc/whatsnew/2.6.rst:1522 msgid "" @@ -2897,6 +3222,11 @@ msgid "" ">>> t.count(0)\n" "2" msgstr "" +">>> t = (0,1,2,3,4,0,1,2)\n" +">>> t.index(3)\n" +"3\n" +">>> t.count(0)\n" +"2" #: ../Doc/whatsnew/2.6.rst:1540 msgid "(Contributed by Raymond Hettinger)" @@ -2950,6 +3280,27 @@ msgid "" " def x(self, value):\n" " self._x = value / 2" msgstr "" +"class C(object):\n" +" @property\n" +" def x(self):\n" +" return self._x\n" +"\n" +" @x.setter\n" +" def x(self, value):\n" +" self._x = value\n" +"\n" +" @x.deleter\n" +" def x(self):\n" +" del self._x\n" +"\n" +"class D(C):\n" +" @C.x.getter\n" +" def x(self):\n" +" return self._x * 2\n" +"\n" +" @x.setter\n" +" def x(self, value):\n" +" self._x = value / 2" #: ../Doc/whatsnew/2.6.rst:1576 msgid "" @@ -2969,6 +3320,11 @@ msgid "" ">>> s.difference('246', '789')\n" "set(['1', '0', '3', '5'])" msgstr "" +">>> s=set('1234567890')\n" +">>> s.intersection('abc123', 'cdf246') # Intersection between all inputs\n" +"set(['2'])\n" +">>> s.difference('246', '789')\n" +"set(['1', '0', '3', '5'])" #: ../Doc/whatsnew/2.6.rst:1590 ../Doc/whatsnew/2.6.rst:1875 #: ../Doc/whatsnew/2.6.rst:1896 @@ -3027,6 +3383,14 @@ msgid "" ">>> b.hex()\n" "'0x1.5555555555555p-2'" msgstr "" +">>> a = 3.75\n" +">>> a.hex()\n" +"'0x1.e000000000000p+1'\n" +">>> float.fromhex('0x1.e000000000000p+1')\n" +"3.75\n" +">>> b=1./3\n" +">>> b.hex()\n" +"'0x1.5555555555555p-2'" #: ../Doc/whatsnew/2.6.rst:1619 msgid "" @@ -3147,7 +3511,6 @@ msgstr "" "`1591665`)" #: ../Doc/whatsnew/2.6.rst:1673 -#, fuzzy msgid "" "Instance method objects have new attributes for the object and function " "comprising the method; the new synonym for :attr:`!im_self` is :attr:" @@ -3156,10 +3519,10 @@ msgid "" "3.0." msgstr "" "Los objetos de método de instancia tienen nuevos atributos para el objeto y " -"la función que comprende el método; el nuevo sinónimo de :attr:`im_self` es :" -"attr:`__self__`, y :attr:`im_func` también está disponible como :attr:" -"`__func__`. Los nombres antiguos todavía se soportan en Python 2.6, pero han " -"desaparecido en la 3.0." +"la función que componen el método; el nuevo sinónimo de :attr:`!im_self` es :" +"attr:`~method.__self__`, y :attr:`!im_func` también está disponible como :" +"attr:`~method.__func__`. Los nombres antiguos aún se admiten en Python 2.6, " +"pero ya no están disponibles en la versión 3.0." #: ../Doc/whatsnew/2.6.rst:1679 msgid "" @@ -3277,14 +3640,13 @@ msgstr "" "de la cadena Unicode." #: ../Doc/whatsnew/2.6.rst:1735 -#, fuzzy msgid "" "The ``with`` statement now stores the :meth:`~object.__exit__` method on the " "stack, producing a small speedup. (Implemented by Jeffrey Yasskin.)" msgstr "" -"La sentencia ``with`` ahora almacena el método :meth:`__exit__` en la pila, " -"produciendo un pequeño aumento de velocidad. (Implementado por Jeffrey " -"Yasskin)" +"La declaración ``with`` ahora almacena el método :meth:`~object.__exit__` en " +"la pila, lo que produce una pequeña mejora en la velocidad. (Implementado " +"por Jeffrey Yasskin)." #: ../Doc/whatsnew/2.6.rst:1738 msgid "" @@ -3378,16 +3740,15 @@ msgstr "" "detalles." #: ../Doc/whatsnew/2.6.rst:1786 -#, fuzzy msgid "" "The :mod:`!asyncore` and :mod:`!asynchat` modules are being actively " "maintained again, and a number of patches and bugfixes were applied. " "(Maintained by Josiah Carlson; see :issue:`1736190` for one patch.)" msgstr "" -"Los módulos :mod:`asyncore` y :mod:`asynchat` están siendo mantenidos " -"activamente de nuevo, y se han aplicado varios parches y correcciones de " -"errores. (Mantenido por Josiah Carlson; véase :issue:`1736190` para un " -"parche)" +"Los módulos :mod:`!asyncore` y :mod:`!asynchat` están recibiendo " +"mantenimiento activo nuevamente y se aplicaron varios parches y correcciones " +"de errores. (Mantenimiento a cargo de Josiah Carlson; consulte :issue:" +"`1736190` para obtener un parche)." #: ../Doc/whatsnew/2.6.rst:1791 msgid "" @@ -3416,30 +3777,28 @@ msgstr "" "Barnes.)" #: ../Doc/whatsnew/2.6.rst:1803 -#, fuzzy msgid "" "The :mod:`!cgi` module will now read variables from the query string of an " "HTTP POST request. This makes it possible to use form actions with URLs " "that include query strings such as \"/cgi-bin/add.py?category=1\". " "(Contributed by Alexandre Fiori and Nubis; :issue:`1817`.)" msgstr "" -"El módulo :mod:`cgi` leerá ahora las variables de la cadena de consulta de " -"una petición HTTP POST. Esto permite utilizar acciones de formulario con " -"URLs que incluyen cadenas de consulta como \"/cgi-bin/add.py?category=1\". " -"(Contribución de Alexandre Fiori y Nubis; :issue:`1817`.)" +"El módulo :mod:`!cgi` ahora leerá variables de la cadena de consulta de una " +"solicitud HTTP POST. Esto permite utilizar acciones de formulario con URL " +"que incluyen cadenas de consulta como \"/cgi-bin/add.py?category=1\". " +"(Contribuido por Alexandre Fiori y Nubis; :issue:`1817`)." #: ../Doc/whatsnew/2.6.rst:1809 -#, fuzzy msgid "" "The :func:`parse_qs` and :func:`parse_qsl` functions have been relocated " "from the :mod:`!cgi` module to the :mod:`urlparse ` module. " "The versions still available in the :mod:`!cgi` module will trigger :exc:" "`PendingDeprecationWarning` messages in 2.6 (:issue:`600362`)." msgstr "" -"Las funciones :func:`parse_qs` y :func:`parse_qsl` han sido reubicadas del " -"módulo :mod:`cgi` al módulo :mod:`urlparse`. Las versiones aún disponibles " -"en el módulo :mod:`cgi` activarán los mensajes :exc:" -"`PendingDeprecationWarning` en la versión 2.6 (:issue:`600362`)." +"Las funciones :func:`parse_qs` y :func:`parse_qsl` se han reubicado del " +"módulo :mod:`!cgi` al módulo :mod:`urlparse `. Las versiones " +"que aún están disponibles en el módulo :mod:`!cgi` activarán los mensajes :" +"exc:`PendingDeprecationWarning` en la versión 2.6 (:issue:`600362`)." #: ../Doc/whatsnew/2.6.rst:1815 msgid "" @@ -3554,6 +3913,23 @@ msgid "" ">>> v2\n" "variable(id=1, name='amplitude', type='int', size=4)" msgstr "" +">>> var_type = collections.namedtuple('variable',\n" +"... 'id name type size')\n" +">>> # Names are separated by spaces or commas.\n" +">>> # 'id, name, type, size' would also work.\n" +">>> var_type._fields\n" +"('id', 'name', 'type', 'size')\n" +"\n" +">>> var = var_type(1, 'frequency', 'int', 4)\n" +">>> print var[0], var.id # Equivalent\n" +"1 1\n" +">>> print var[2], var.type # Equivalent\n" +"int int\n" +">>> var._asdict()\n" +"{'size': 4, 'type': 'int', 'id': 1, 'name': 'frequency'}\n" +">>> v2 = var._replace(name='amplitude')\n" +">>> v2\n" +"variable(id=1, name='amplitude', type='int', size=4)" #: ../Doc/whatsnew/2.6.rst:1870 msgid "" @@ -3592,9 +3968,18 @@ msgid "" ">>> dq\n" "deque([2, 3, 4], maxlen=3)" msgstr "" +">>> from collections import deque\n" +">>> dq=deque(maxlen=3)\n" +">>> dq\n" +"deque([], maxlen=3)\n" +">>> dq.append(1); dq.append(2); dq.append(3)\n" +">>> dq\n" +"deque([1, 2, 3], maxlen=3)\n" +">>> dq.append(4)\n" +">>> dq\n" +"deque([2, 3, 4], maxlen=3)" #: ../Doc/whatsnew/2.6.rst:1898 -#, fuzzy msgid "" "The :mod:`Cookie ` module's :class:`~http.cookies.Morsel` " "objects now support an :attr:`~http.cookies.Morsel.httponly` attribute. In " @@ -3602,10 +3987,11 @@ msgid "" "manipulated by JavaScript code. (Contributed by Arvin Schnell; :issue:" "`1638033`.)" msgstr "" -"Los objetos :mod:`Cookie` del módulo :class:`Morsel` soportan ahora un " -"atributo :attr:`httponly`. En algunos navegadores, las cookies con este " -"atributo no pueden ser accedidas o manipuladas por el código JavaScript. " -"(Contribución de Arvin Schnell; :issue:`1638033`.)" +"Los objetos :class:`~http.cookies.Morsel` del módulo :mod:`Cookie ` ahora admiten un atributo :attr:`~http.cookies.Morsel.httponly`. " +"En algunos navegadores, el código JavaScript no puede acceder ni manipular " +"las cookies con este atributo establecido. (Contribuido por Arvin Schnell; :" +"issue:`1638033`)." #: ../Doc/whatsnew/2.6.rst:1903 msgid "" @@ -3623,6 +4009,9 @@ msgid "" "# and affecting the rest of the line.\n" "stdscr.chgat(0, 21, curses.A_BOLD)" msgstr "" +"# Boldface text starting at y=0,x=21\n" +"# and affecting the rest of the line.\n" +"stdscr.chgat(0, 21, curses.A_BOLD)" #: ../Doc/whatsnew/2.6.rst:1913 msgid "" @@ -3670,6 +4059,12 @@ msgid "" ">>> Decimal(1000).log10()\n" "Decimal(\"3\")" msgstr "" +">>> Decimal(1).exp()\n" +"Decimal(\"2.718281828459045235360287471\")\n" +">>> Decimal(\"2.7182818\").ln()\n" +"Decimal(\"0.9999999895305022877376682436\")\n" +">>> Decimal(1000).log10()\n" +"Decimal(\"3\")" #: ../Doc/whatsnew/2.6.rst:1935 msgid "" @@ -3770,6 +4165,8 @@ msgid "" ">>> list(heapq.merge([1, 3, 5, 9], [2, 8, 16]))\n" "[1, 2, 3, 5, 8, 9, 16]" msgstr "" +">>> list(heapq.merge([1, 3, 5, 9], [2, 8, 16]))\n" +"[1, 2, 3, 5, 8, 9, 16]" #: ../Doc/whatsnew/2.6.rst:1978 msgid "" @@ -3794,16 +4191,16 @@ msgstr "" "el método :meth:`list.sort`. (Contribución de Raymond Hettinger)" #: ../Doc/whatsnew/2.6.rst:1989 -#, fuzzy msgid "" "An optional ``timeout`` parameter, specifying a timeout measured in seconds, " "was added to the :class:`httplib.HTTPConnection ` and :class:`HTTPSConnection ` " "class constructors. (Added by Facundo Batista.)" msgstr "" -"Se ha añadido un parámetro opcional ``timeout``, que especifica un tiempo de " -"espera medido en segundos, a los constructores de las clases :class:`httplib." -"HTTPConnection` y :class:`HTTPSConnection`. (Añadido por Facundo Batista)" +"Se agregó un parámetro opcional ``timeout`` a los constructores de clases :" +"class:`httplib.HTTPConnection ` y :class:" +"`HTTPSConnection `, que especifica un tiempo de " +"espera medido en segundos. (Agregado por Facundo Batista)." #: ../Doc/whatsnew/2.6.rst:1994 msgid "" @@ -3844,6 +4241,8 @@ msgid "" ">>> tuple(itertools.izip_longest([1,2,3], [1,2,3,4,5]))\n" "((1, 1), (2, 2), (3, 3), (None, 4), (None, 5))" msgstr "" +">>> tuple(itertools.izip_longest([1,2,3], [1,2,3,4,5]))\n" +"((1, 1), (2, 2), (3, 3), (None, 4), (None, 5))" #: ../Doc/whatsnew/2.6.rst:2013 msgid "" @@ -3862,6 +4261,10 @@ msgid "" " (2, 4), (2, 5), (2, 6),\n" " (3, 4), (3, 5), (3, 6)]" msgstr "" +">>> list(itertools.product([1,2,3], [4,5,6]))\n" +"[(1, 4), (1, 5), (1, 6),\n" +" (2, 4), (2, 5), (2, 6),\n" +" (3, 4), (3, 5), (3, 6)]" #: ../Doc/whatsnew/2.6.rst:2022 msgid "" @@ -3880,6 +4283,9 @@ msgid "" "[(1, 1, 1), (1, 1, 2), (1, 2, 1), (1, 2, 2),\n" " (2, 1, 1), (2, 1, 2), (2, 2, 1), (2, 2, 2)]" msgstr "" +">>> list(itertools.product([1,2], repeat=3))\n" +"[(1, 1, 1), (1, 1, 2), (1, 2, 1), (1, 2, 2),\n" +" (2, 1, 1), (2, 1, 2), (2, 2, 1), (2, 2, 2)]" #: ../Doc/whatsnew/2.6.rst:2031 msgid "With two iterables, *2N*-tuples are returned. ::" @@ -3893,6 +4299,11 @@ msgid "" " (2, 3, 1, 3), (2, 3, 1, 4), (2, 3, 2, 3), (2, 3, 2, 4),\n" " (2, 4, 1, 3), (2, 4, 1, 4), (2, 4, 2, 3), (2, 4, 2, 4)]" msgstr "" +">>> list(itertools.product([1,2], [3,4], repeat=2))\n" +"[(1, 3, 1, 3), (1, 3, 1, 4), (1, 3, 2, 3), (1, 3, 2, 4),\n" +" (1, 4, 1, 3), (1, 4, 1, 4), (1, 4, 2, 3), (1, 4, 2, 4),\n" +" (2, 3, 1, 3), (2, 3, 1, 4), (2, 3, 2, 3), (2, 3, 2, 4),\n" +" (2, 4, 1, 3), (2, 4, 1, 4), (2, 4, 2, 3), (2, 4, 2, 4)]" #: ../Doc/whatsnew/2.6.rst:2039 msgid "" @@ -3912,6 +4323,13 @@ msgid "" "[('1', '2', '3'), ('1', '2', '4'),\n" " ('1', '3', '4'), ('2', '3', '4')]" msgstr "" +">>> list(itertools.combinations('123', 2))\n" +"[('1', '2'), ('1', '3'), ('2', '3')]\n" +">>> list(itertools.combinations('123', 3))\n" +"[('1', '2', '3')]\n" +">>> list(itertools.combinations('1234', 3))\n" +"[('1', '2', '3'), ('1', '2', '4'),\n" +" ('1', '3', '4'), ('2', '3', '4')]" #: ../Doc/whatsnew/2.6.rst:2050 msgid "" @@ -3931,6 +4349,11 @@ msgid "" " (3, 1), (3, 2), (3, 4),\n" " (4, 1), (4, 2), (4, 3)]" msgstr "" +">>> list(itertools.permutations([1,2,3,4], 2))\n" +"[(1, 2), (1, 3), (1, 4),\n" +" (2, 1), (2, 3), (2, 4),\n" +" (3, 1), (3, 2), (3, 4),\n" +" (4, 1), (4, 2), (4, 3)]" #: ../Doc/whatsnew/2.6.rst:2060 msgid "" @@ -3951,6 +4374,8 @@ msgid "" ">>> list(itertools.chain.from_iterable([[1,2,3], [4,5,6]]))\n" "[1, 2, 3, 4, 5, 6]" msgstr "" +">>> list(itertools.chain.from_iterable([[1,2,3], [4,5,6]]))\n" +"[1, 2, 3, 4, 5, 6]" #: ../Doc/whatsnew/2.6.rst:2070 msgid "(All contributed by Raymond Hettinger.)" @@ -4112,6 +4537,10 @@ msgid "" ">>> replacer('old wine in old bottles')\n" "'new wine in new bottles'" msgstr "" +">>> # Equivalent to lambda s: s.replace('old', 'new')\n" +">>> replacer = operator.methodcaller('replace', 'old', 'new')\n" +">>> replacer('old wine in old bottles')\n" +"'new wine in new bottles'" #: ../Doc/whatsnew/2.6.rst:2145 msgid "(Contributed by Georg Brandl, after a suggestion by Gregory Petrosyan.)" @@ -4135,6 +4564,12 @@ msgid "" ">>> inst_name(help)\n" "'_Helper'" msgstr "" +">>> inst_name = operator.attrgetter(\n" +"... '__class__.__name__')\n" +">>> inst_name('')\n" +"'str'\n" +">>> inst_name(help)\n" +"'_Helper'" #: ../Doc/whatsnew/2.6.rst:2157 msgid "(Contributed by Georg Brandl, after a suggestion by Barry Warsaw.)" @@ -4302,6 +4737,16 @@ msgid "" " +-- StandardError\n" " ..." msgstr "" +">>> import pkgutil\n" +">>> print pkgutil.get_data('test', 'exception_hierarchy.txt')\n" +"BaseException\n" +" +-- SystemExit\n" +" +-- KeyboardInterrupt\n" +" +-- GeneratorExit\n" +" +-- Exception\n" +" +-- StopIteration\n" +" +-- StandardError\n" +" ..." #: ../Doc/whatsnew/2.6.rst:2236 msgid "(Contributed by Paul Moore; :issue:`2439`.)" @@ -4389,15 +4834,14 @@ msgstr "" "`3487`.)" #: ../Doc/whatsnew/2.6.rst:2276 -#, fuzzy msgid "" "The :mod:`rlcompleter` module's :meth:`Completer.complete` method will now " "ignore exceptions triggered while evaluating a name. (Fixed by Lorenz " "Quack; :issue:`2250`.)" msgstr "" -"El método :meth:`Completer.complete()` del módulo :mod:`rlcompleter` ahora " -"ignorará las excepciones que se produzcan al evaluar un nombre. (Corregido " -"por Lorenz Quack; :issue:`2250`.)" +"El método :meth:`Completer.complete` del módulo :mod:`rlcompleter` ahora " +"ignorará las excepciones activadas al evaluar un nombre. (Corregido por " +"Lorenz Quack; :issue:`2250`)." #: ../Doc/whatsnew/2.6.rst:2280 msgid "" @@ -4462,6 +4906,8 @@ msgid "" "shutil.copytree('Doc/library', '/tmp/library',\n" " ignore=shutil.ignore_patterns('*~', '.svn'))" msgstr "" +"shutil.copytree('Doc/library', '/tmp/library',\n" +" ignore=shutil.ignore_patterns('*~', '.svn'))" #: ../Doc/whatsnew/2.6.rst:2310 msgid "(Contributed by Tarek Ziadé; :issue:`2663`.)" @@ -4602,7 +5048,6 @@ msgstr "" "funcione con IPv6." #: ../Doc/whatsnew/2.6.rst:2374 -#, fuzzy msgid "" "The base classes in the :mod:`SocketServer ` module now " "support calling a :meth:`~socketserver.BaseServer.handle_timeout` method " @@ -4613,13 +5058,15 @@ msgid "" "check for a shutdown request. (Contributed by Pedro Werneck and Jeffrey " "Yasskin; :issue:`742598`, :issue:`1193577`.)" msgstr "" -"Las clases base del módulo :mod:`SocketServer` ahora soportan la llamada a " -"un método :meth:`handle_timeout` después de un periodo de inactividad " -"especificado por el atributo :attr:`timeout` del servidor. (Contribuido por " -"Michael Pomraning.) El método :meth:`serve_forever` ahora toma un intervalo " -"de sondeo opcional medido en segundos, controlando la frecuencia con la que " -"el servidor comprobará si hay una solicitud de cierre. (Contribuido por " -"Pedro Werneck y Jeffrey Yasskin; :issue:`742598`, :issue:`1193577`.)" +"Las clases base del módulo :mod:`SocketServer ` ahora admiten " +"la llamada a un método :meth:`~socketserver.BaseServer.handle_timeout` " +"después de un período de inactividad especificado por el atributo :attr:" +"`~socketserver.BaseServer.timeout` del servidor. (Contribuido por Michael " +"Pomraning.) El método :meth:`~socketserver.BaseServer.serve_forever` ahora " +"utiliza un intervalo de sondeo opcional medido en segundos, que controla la " +"frecuencia con la que el servidor comprobará si hay una solicitud de " +"apagado. (Contribuido por Pedro Werneck y Jeffrey Yasskin; :issue:`742598`, :" +"issue:`1193577`.)" #: ../Doc/whatsnew/2.6.rst:2383 msgid "" @@ -4638,7 +5085,6 @@ msgstr "" "el carácter de formato ``'?'``. (Aportado por David Remahl.)" #: ../Doc/whatsnew/2.6.rst:2391 -#, fuzzy msgid "" "The :class:`~subprocess.Popen` objects provided by the :mod:`subprocess` " "module now have :meth:`~subprocess.Popen.terminate`, :meth:`~subprocess." @@ -4647,11 +5093,12 @@ msgid "" "and all these methods are aliases for the Win32 API function :c:func:`!" "TerminateProcess`. (Contributed by Christian Heimes.)" msgstr "" -"Los objetos :class:`Popen` proporcionados por el módulo :mod:`subprocess` " -"tienen ahora métodos :meth:`terminate`, :meth:`kill` y :meth:`send_signal`. " -"En Windows, :meth:`send_signal` sólo soporta la señal :const:`SIGTERM`, y " -"todos estos métodos son alias de la función de la API Win32 :c:func:" -"`TerminateProcess`. (Contribuido por Christian Heimes.)" +"Los objetos :class:`~subprocess.Popen` proporcionados por el módulo :mod:" +"`subprocess` ahora tienen los métodos :meth:`~subprocess.Popen.terminate`, :" +"meth:`~subprocess.Popen.kill` y :meth:`~subprocess.Popen.send_signal`. En " +"Windows, :meth:`!send_signal` solo admite la señal :py:const:`~signal." +"SIGTERM` y todos estos métodos son alias de la función API Win32 :c:func:`!" +"TerminateProcess`. (Contribuido por Christian Heimes)." #: ../Doc/whatsnew/2.6.rst:2398 msgid "" @@ -4748,6 +5195,8 @@ msgid "" "tar = tarfile.open(\"output.tar\", \"w\",\n" " format=tarfile.PAX_FORMAT)" msgstr "" +"tar = tarfile.open(\"output.tar\", \"w\",\n" +" format=tarfile.PAX_FORMAT)" #: ../Doc/whatsnew/2.6.rst:2444 msgid "" @@ -4787,15 +5236,14 @@ msgid "(All changes contributed by Lars Gustäbel)." msgstr "(Todos los cambios han sido aportados por Lars Gustäbel)." #: ../Doc/whatsnew/2.6.rst:2462 -#, fuzzy msgid "" "An optional ``timeout`` parameter was added to the :class:`!telnetlib." "Telnet` class constructor, specifying a timeout measured in seconds. (Added " "by Facundo Batista.)" msgstr "" "Se agregó un parámetro opcional ``timeout`` al constructor de la clase :" -"class:`telnetlib.Telnet`, especificando un tiempo de espera medido en " -"segundos. (Añadido por Facundo Batista)" +"class:`!telnetlib.Telnet`, que especifica un tiempo de espera medido en " +"segundos. (Agregado por Facundo Batista)." #: ../Doc/whatsnew/2.6.rst:2466 msgid "" @@ -4834,17 +5282,17 @@ msgstr "" "Belopolsky; :issue:`2021`.)" #: ../Doc/whatsnew/2.6.rst:2481 -#, fuzzy msgid "" "The :mod:`test.test_support ` module gained a number of " "context managers useful for writing tests. :func:`~test.support.os_helper." "EnvironmentVarGuard` is a context manager that temporarily changes " "environment variables and automatically restores them to their old values." msgstr "" -"El módulo :mod:`test.test_support` obtuvo una serie de gestores de contexto " -"útiles para escribir pruebas. :func:`EnvironmentVarGuard` es un gestor de " -"contexto que cambia temporalmente las variables de entorno y las restaura " -"automáticamente a sus valores anteriores." +"El módulo :mod:`test.test_support ` ha incorporado una serie " +"de administradores de contexto útiles para escribir pruebas. :func:`~test." +"support.os_helper.EnvironmentVarGuard` es un administrador de contexto que " +"cambia temporalmente las variables de entorno y las restaura automáticamente " +"a sus valores anteriores." #: ../Doc/whatsnew/2.6.rst:2487 msgid "" @@ -4865,6 +5313,10 @@ msgid "" " f = urllib.urlopen('https://sf.net')\n" " ..." msgstr "" +"with test_support.TransientResource(IOError,\n" +" errno=errno.ETIMEDOUT):\n" +" f = urllib.urlopen('https://sf.net')\n" +" ..." #: ../Doc/whatsnew/2.6.rst:2498 msgid "" @@ -4884,6 +5336,11 @@ msgid "" " assert str(wrec.message) == \"function is outdated\"\n" " assert len(wrec.warnings) == 1, \"Multiple warnings raised\"" msgstr "" +"with test_support.check_warnings() as wrec:\n" +" warnings.simplefilter(\"always\")\n" +" # ... code that triggers a warning ...\n" +" assert str(wrec.message) == \"function is outdated\"\n" +" assert len(wrec.warnings) == 1, \"Multiple warnings raised\"" #: ../Doc/whatsnew/2.6.rst:2508 msgid "(Contributed by Brett Cannon.)" @@ -4915,6 +5372,19 @@ msgid "" " whitespace.\n" ">>>" msgstr "" +">>> S = \"\"\"This sentence has a bunch of\n" +"... extra whitespace.\"\"\"\n" +">>> print textwrap.fill(S, width=15)\n" +"This sentence\n" +"has a bunch\n" +"of extra\n" +"whitespace.\n" +">>> print textwrap.fill(S, drop_whitespace=False, width=15)\n" +"This sentence\n" +" has a bunch\n" +" of extra\n" +" whitespace.\n" +">>>" #: ../Doc/whatsnew/2.6.rst:2529 msgid "(Contributed by Dwayne Bailey; :issue:`1581073`.)" @@ -5008,11 +5478,9 @@ msgstr "" "nuevo sistema de coordenadas." #: ../Doc/whatsnew/2.6.rst:2569 -#, fuzzy msgid "Turtles now have an :meth:`undo` method that can roll back actions." msgstr "" -"Las tortugas ahora tienen un método :meth:`undo()` que puede revertir las " -"acciones." +"Las tortugas ahora tienen un método :meth:`undo` que puede revertir acciones." #: ../Doc/whatsnew/2.6.rst:2570 msgid "" @@ -5043,7 +5511,6 @@ msgid "(:issue:`1513695`)" msgstr "(:issue:`1513695`)" #: ../Doc/whatsnew/2.6.rst:2579 -#, fuzzy msgid "" "An optional ``timeout`` parameter was added to the :func:`urllib.urlopen " "` function and the :class:`urllib.ftpwrapper` class " @@ -5051,10 +5518,11 @@ msgid "" "function. The parameter specifies a timeout measured in seconds. For " "example::" msgstr "" -"Se ha añadido un parámetro opcional ``timeout`` a la función :func:`urllib." -"urlopen` y al constructor de la clase :class:`urllib.ftpwrapper`, así como a " -"la función :func:`urllib2.urlopen`. El parámetro especifica un tiempo de " -"espera medido en segundos. Por ejemplo::" +"Se agregó un parámetro opcional ``timeout`` a la función :func:`urllib." +"urlopen ` y al constructor de la clase :class:" +"`urllib.ftpwrapper`, así como a la función :func:`urllib2.urlopen `. El parámetro especifica un tiempo de espera medido en " +"segundos. Por ejemplo:" #: ../Doc/whatsnew/2.6.rst:2585 msgid "" @@ -5065,6 +5533,12 @@ msgid "" "urllib2.URLError: \n" ">>>" msgstr "" +">>> u = urllib2.urlopen(\"http://slow.example.com\",\n" +" timeout=3)\n" +"Traceback (most recent call last):\n" +" ...\n" +"urllib2.URLError: \n" +">>>" #: ../Doc/whatsnew/2.6.rst:2592 msgid "(Added by Facundo Batista.)" @@ -5103,7 +5577,6 @@ msgstr "" "`3781`)." #: ../Doc/whatsnew/2.6.rst:2607 -#, fuzzy msgid "" "The XML-RPC :class:`SimpleXMLRPCServer ` and :class:" "`DocXMLRPCServer ` classes can now be prevented from " @@ -5114,13 +5587,14 @@ msgid "" "begin listening for connections. (Contributed by Peter Parente; :issue:" "`1599845`.)" msgstr "" -"Las clases XML-RPC :class:`SimpleXMLRPCServer` y :class:`DocXMLRPCServer` " -"pueden ahora evitar que se abran inmediatamente y se vinculen a su socket " -"pasando ``False`` como parámetro del constructor *bind_and_activate*. Esto " -"puede usarse para modificar el atributo :attr:`allow_reuse_address` de la " -"instancia antes de llamar a los métodos :meth:`server_bind` y :meth:" -"`server_activate` para abrir el socket y comenzar a escuchar conexiones. " -"(Contribuido por Peter Parente; :issue:`1599845`.)" +"Ahora es posible evitar que las clases XML-RPC :class:`SimpleXMLRPCServer " +"` y :class:`DocXMLRPCServer ` se abran y " +"enlacen inmediatamente con su socket al pasar ``False`` como parámetro del " +"constructor *bind_and_activate*. Esto se puede utilizar para modificar el " +"atributo :attr:`allow_reuse_address` de la instancia antes de llamar a los " +"métodos :meth:`server_bind` y :meth:`server_activate` para abrir el socket y " +"comenzar a escuchar conexiones. (Contribuido por Peter Parente; :issue:" +"`1599845`)." #: ../Doc/whatsnew/2.6.rst:2616 msgid "" @@ -5141,7 +5615,6 @@ msgstr "" "proyecto para el Summer of Code 2007 de Google)" #: ../Doc/whatsnew/2.6.rst:2624 -#, fuzzy msgid "" "The :mod:`xmlrpclib ` module no longer automatically " "converts :class:`datetime.date` and :class:`datetime.time` to the :class:" @@ -5153,15 +5626,15 @@ msgid "" "by using ```` in XML-RPC responses (contributed by Riku Lindblad; :issue:" "`2985`)." msgstr "" -"El módulo :mod:`xmlrpclib` ya no convierte automáticamente las instancias :" +"El módulo :mod:`xmlrpclib ` ya no convierte automáticamente :" "class:`datetime.date` y :class:`datetime.time` al tipo :class:`xmlrpclib." -"DateTime`; la semántica de conversión no era necesariamente correcta para " -"todas las aplicaciones. El código que utiliza :mod:`xmlrpclib` debe " -"convertir las instancias :class:`date` y :class:`~datetime.time`. (:issue:" -"`1330538`) El código también puede manejar fechas anteriores a 1900 " -"(contribución de Ralf Schmitt; :issue:`2014`) y enteros de 64 bits " -"representados mediante el uso de ```` en las respuestas XML-RPC " -"(contribución de Riku Lindblad; :issue:`2985`)." +"DateTime `; la semántica de conversión no era " +"necesariamente correcta para todas las aplicaciones. El código que utiliza :" +"mod:`!xmlrpclib` debería convertir las instancias :class:`date` y :class:" +"`~datetime.time`. (:issue:`1330538`) El código también puede manejar fechas " +"anteriores a 1900 (contribuido por Ralf Schmitt; :issue:`2014`) y números " +"enteros de 64 bits representados mediante el uso de ```` en respuestas " +"XML-RPC (contribuido por Riku Lindblad; :issue:`2985`)." #: ../Doc/whatsnew/2.6.rst:2634 msgid "" @@ -5185,6 +5658,14 @@ msgid "" "# Unpack all the files in the archive.\n" "z.extractall()" msgstr "" +"z = zipfile.ZipFile('python-251.zip')\n" +"\n" +"# Unpack a single file, writing it relative\n" +"# to the /tmp directory.\n" +"z.extract('Python/sysmodule.c', '/tmp')\n" +"\n" +"# Unpack all the files in the archive.\n" +"z.extractall()" #: ../Doc/whatsnew/2.6.rst:2648 msgid "(Contributed by Alan McIntyre; :issue:`467924`.)" @@ -5249,6 +5730,15 @@ msgid "" "\"\"\")\n" "print ast.dump(t)" msgstr "" +"import ast\n" +"\n" +"t = ast.parse(\"\"\"\n" +"d = {}\n" +"for i in 'abcdefghijklm':\n" +" d[i + i] = ord(i) - ord('a') + 1\n" +"print d\n" +"\"\"\")\n" +"print ast.dump(t)" #: ../Doc/whatsnew/2.6.rst:2685 msgid "This outputs a deeply nested tree::" @@ -5287,6 +5777,36 @@ msgid "" " ], nl=True)\n" " ])" msgstr "" +"Module(body=[\n" +" Assign(targets=[\n" +" Name(id='d', ctx=Store())\n" +" ], value=Dict(keys=[], values=[]))\n" +" For(target=Name(id='i', ctx=Store()),\n" +" iter=Str(s='abcdefghijklm'), body=[\n" +" Assign(targets=[\n" +" Subscript(value=\n" +" Name(id='d', ctx=Load()),\n" +" slice=\n" +" Index(value=\n" +" BinOp(left=Name(id='i', ctx=Load()), op=Add(),\n" +" right=Name(id='i', ctx=Load()))), ctx=Store())\n" +" ], value=\n" +" BinOp(left=\n" +" BinOp(left=\n" +" Call(func=\n" +" Name(id='ord', ctx=Load()), args=[\n" +" Name(id='i', ctx=Load())\n" +" ], keywords=[], starargs=None, kwargs=None),\n" +" op=Sub(), right=Call(func=\n" +" Name(id='ord', ctx=Load()), args=[\n" +" Str(s='a')\n" +" ], keywords=[], starargs=None, kwargs=None)),\n" +" op=Add(), right=Num(n=1)))\n" +" ], orelse=[])\n" +" Print(dest=None, values=[\n" +" Name(id='d', ctx=Load())\n" +" ], nl=True)\n" +" ])" #: ../Doc/whatsnew/2.6.rst:2718 msgid "" @@ -5315,6 +5835,13 @@ msgid "" " ...\n" "ValueError: malformed string" msgstr "" +">>> literal = '(\"a\", \"b\", {2:4, 3:8, 1:2})'\n" +">>> print ast.literal_eval(literal)\n" +"('a', 'b', {1: 2, 2: 4, 3: 8})\n" +">>> print ast.literal_eval('\"a\" + \"b\"')\n" +"Traceback (most recent call last):\n" +" ...\n" +"ValueError: malformed string" #: ../Doc/whatsnew/2.6.rst:2734 msgid "" @@ -5414,6 +5941,13 @@ msgid "" ">>> json.loads(in_json) # Decode into a Python object\n" "{\"spam\": \"foo\", \"parrot\": 42}" msgstr "" +">>> import json\n" +">>> data = {\"spam\": \"foo\", \"parrot\": 42}\n" +">>> in_json = json.dumps(data) # Encode the data\n" +">>> in_json\n" +"'{\"parrot\": 42, \"spam\": \"foo\"}'\n" +">>> json.loads(in_json) # Decode into a Python object\n" +"{\"spam\": \"foo\", \"parrot\": 42}" #: ../Doc/whatsnew/2.6.rst:2788 msgid "" @@ -5484,6 +6018,27 @@ msgid "" "# read/writePlist accepts file-like objects as well as paths.\n" "plistlib.writePlist(data_struct, sys.stdout)" msgstr "" +"import sys\n" +"import plistlib\n" +"import datetime\n" +"\n" +"# Create data structure\n" +"data_struct = dict(lastAccessed=datetime.datetime.now(),\n" +" version=1,\n" +" categories=('Personal','Shared','Private'))\n" +"\n" +"# Create string containing XML.\n" +"plist_str = plistlib.writePlistToString(data_struct)\n" +"new_struct = plistlib.readPlistFromString(plist_str)\n" +"print data_struct\n" +"print new_struct\n" +"\n" +"# Write data structure to a file and read it back.\n" +"plistlib.writePlist(data_struct, '/tmp/customizations.plist')\n" +"new_struct = plistlib.readPlist('/tmp/customizations.plist')\n" +"\n" +"# read/writePlist accepts file-like objects as well as paths.\n" +"plistlib.writePlist(data_struct, sys.stdout)" #: ../Doc/whatsnew/2.6.rst:2837 msgid "ctypes Enhancements" @@ -5624,15 +6179,14 @@ msgstr "" "produce un :exc:`TypeError`." #: ../Doc/whatsnew/2.6.rst:2911 -#, fuzzy msgid "" "Changes to the :class:`Exception` interface as dictated by :pep:`352` " "continue to be made. For 2.6, the :attr:`!message` attribute is being " "deprecated in favor of the :attr:`~BaseException.args` attribute." msgstr "" -"Los cambios en la interfaz :class:`Exception` dictados por :pep:`352` siguen " -"realizándose. En la versión 2.6, el atributo :attr:`message` queda obsoleto " -"en favor del atributo :attr:`args`." +"Se siguen realizando cambios en la interfaz :class:`Exception` según lo " +"dictado por :pep:`352`. En la versión 2.6, el atributo :attr:`!message` se " +"está reemplazando por el atributo :attr:`~BaseException.args`." #: ../Doc/whatsnew/2.6.rst:2916 msgid "" @@ -5646,7 +6200,6 @@ msgstr "" "se importen." #: ../Doc/whatsnew/2.6.rst:2921 -#, fuzzy msgid "" "The list of deprecated modules is: :mod:`!audiodev`, :mod:`!bgenlocations`, :" "mod:`!buildtools`, :mod:`!bundlebuilder`, :mod:`!Canvas`, :mod:`!compiler`, :" @@ -5656,76 +6209,68 @@ msgid "" "mod:`!statvfs`, :mod:`!sunaudiodev`, :mod:`!test.testall`, and :mod:`!" "toaiff`." msgstr "" -"La lista de módulos obsoletos es: :mod:`audiodev`, :mod:`bgenlocations`, :" -"mod:`buildtools`, :mod:`bundlebuilder`, :mod:`Canvas`, :mod:`compiler`, :mod:" -"`dircache`, :mod:`dl`, :mod:`fpformat`, :mod:`gensuitemodule`, :mod:" -"`ihooks`, :mod:`imageop`, :mod:`imgfile`, :mod:`linuxaudiodev`, :mod:" -"`mhlib`, :mod:`mimetools`, :mod:`multifile`, :mod:`new`, :mod:`pure`, :mod:" -"`statvfs`, :mod:`sunaudiodev`, :mod:`test.testall`, y :mod:`toaiff`." +"La lista de módulos obsoletos es: :mod:`!audiodev`, :mod:`!bgenlocations`, :" +"mod:`!buildtools`, :mod:`!bundlebuilder`, :mod:`!Canvas`, :mod:`!compiler`, :" +"mod:`!dircache`, :mod:`!dl`, :mod:`!fpformat`, :mod:`!gensuitemodule`, :mod:" +"`!ihooks`, :mod:`!imageop`, :mod:`!imgfile`, :mod:`!linuxaudiodev`, :mod:`!" +"mhlib`, :mod:`!mimetools`, :mod:`!multifile`, :mod:`!new`, :mod:`!pure`, :" +"mod:`!statvfs`, :mod:`!sunaudiodev`, :mod:`!test.testall` y :mod:`!toaiff`." #: ../Doc/whatsnew/2.6.rst:2946 -#, fuzzy msgid "The :mod:`!gopherlib` module has been removed." -msgstr "El módulo :mod:`gopherlib` ha sido eliminado." +msgstr "El módulo :mod:`!gopherlib` ha sido eliminado." #: ../Doc/whatsnew/2.6.rst:2948 -#, fuzzy msgid "" "The :mod:`!MimeWriter` module and :mod:`!mimify` module have been " "deprecated; use the :mod:`email` package instead." msgstr "" -"El módulo :mod:`MimeWriter` y el módulo :mod:`mimify` han quedado obsoletos; " -"utilice en su lugar el paquete :mod:`email`." +"El módulo :mod:`!MimeWriter` y el módulo :mod:`!mimify` han quedado " +"obsoletos; utilice en su lugar el paquete :mod:`email`." #: ../Doc/whatsnew/2.6.rst:2952 -#, fuzzy msgid "" "The :mod:`!md5` module has been deprecated; use the :mod:`hashlib` module " "instead." msgstr "" -"El módulo :mod:`md5` ha quedado obsoleto; utilice en su lugar el módulo :mod:" -"`hashlib`." +"El módulo :mod:`!md5` ha quedado obsoleto; utilice en su lugar el módulo :" +"mod:`hashlib`." #: ../Doc/whatsnew/2.6.rst:2955 -#, fuzzy msgid "" "The :mod:`!posixfile` module has been deprecated; :func:`fcntl.lockf` " "provides better locking." msgstr "" -"El módulo :mod:`posixfile` ha quedado obsoleto; :func:`fcntl.lockf` " +"El módulo :mod:`!posixfile` ha quedado obsoleto; :func:`fcntl.lockf` " "proporciona un mejor bloqueo." #: ../Doc/whatsnew/2.6.rst:2958 -#, fuzzy msgid "" "The :mod:`!popen2` module has been deprecated; use the :mod:`subprocess` " "module." msgstr "" -"El módulo :mod:`popen2` ha quedado obsoleto; utilice el módulo :mod:" +"El módulo :mod:`!popen2` ha quedado obsoleto; utilice el módulo :mod:" "`subprocess`." #: ../Doc/whatsnew/2.6.rst:2961 -#, fuzzy msgid "The :mod:`!rgbimg` module has been removed." -msgstr "Se ha eliminado el módulo :mod:`rgbimg`." +msgstr "Se ha eliminado el módulo :mod:`!rgbimg`." #: ../Doc/whatsnew/2.6.rst:2963 -#, fuzzy msgid "" "The :mod:`!sets` module has been deprecated; it's better to use the built-" "in :class:`set` and :class:`frozenset` types." msgstr "" -"El módulo :mod:`sets` ha quedado obsoleto; es mejor utilizar los tipos " +"El módulo :mod:`!sets` ha quedado obsoleto; es mejor utilizar los tipos " "incorporados :class:`set` y :class:`frozenset`." #: ../Doc/whatsnew/2.6.rst:2966 -#, fuzzy msgid "" "The :mod:`!sha` module has been deprecated; use the :mod:`hashlib` module " "instead." msgstr "" -"El módulo :mod:`sha` ha quedado obsoleto; utilice en su lugar el módulo :mod:" -"`hashlib`." +"El módulo :mod:`!sha` ha quedado obsoleto; utilice en su lugar el módulo :" +"mod:`hashlib`." #: ../Doc/whatsnew/2.6.rst:2974 msgid "Build and C API Changes" @@ -5781,6 +6326,10 @@ msgid "" "directory containing the script named by ``sys.argv[0]`` depending on the " "value of an *updatepath* parameter." msgstr "" +"Una nueva función agregada en Python 2.6.6, :c:func:`!PySys_SetArgvEx`, " +"establece el valor de ``sys.argv`` y opcionalmente puede actualizar ``sys." +"path`` para incluir el directorio que contiene el script nombrado por ``sys." +"argv[0]`` dependiendo del valor de un parámetro *updatepath*." #: ../Doc/whatsnew/2.6.rst:3000 msgid "" @@ -5792,6 +6341,14 @@ msgid "" "(say, a file named :file:`os.py`) that your application would then import " "and run." msgstr "" +"Esta función se agregó para cerrar un agujero de seguridad en las " +"aplicaciones que incorporan Python. La función anterior, :c:func:`!" +"PySys_SetArgv`, siempre actualizaba ``sys.path`` y, a veces, añadía el " +"directorio actual. Esto significaba que, si ejecutaba una aplicación que " +"incorporaba Python en un directorio controlado por otra persona, los " +"atacantes podían colocar un módulo troyano en el directorio (por ejemplo, un " +"archivo llamado :file:`os.py`) que su aplicación luego importaría y " +"ejecutaría." #: ../Doc/whatsnew/2.6.rst:3008 msgid "" @@ -5804,12 +6361,22 @@ msgid "" "and call ``PyRun_SimpleString(\"sys.path.pop(0)\\n\")`` afterwards to " "discard the first ``sys.path`` component." msgstr "" +"Si mantiene una aplicación C/C++ que incorpora Python, verifique si está " +"llamando a :c:func:`!PySys_SetArgv` y considere cuidadosamente si la " +"aplicación debería usar :c:func:`!PySys_SetArgvEx` con *updatepath* " +"configurado como falso. Tenga en cuenta que el uso de esta función romperá " +"la compatibilidad con las versiones 2.6.5 y anteriores de Python; si tiene " +"que continuar trabajando con versiones anteriores, puede dejar la llamada a :" +"c:func:`!PySys_SetArgv` y llamar a ``PyRun_SimpleString(\"sys.path." +"pop(0)\\n\")`` después para descartar el primer componente ``sys.path``." #: ../Doc/whatsnew/2.6.rst:3018 msgid "" "Security issue reported as :cve:`2008-5983`; discussed in :gh:`50003`, and " "fixed by Antoine Pitrou." msgstr "" +"Problema de seguridad informado como :cve:`2008-5983`; discutido en :gh:" +"`50003` y solucionado por Antoine Pitrou." #: ../Doc/whatsnew/2.6.rst:3021 msgid "" @@ -5876,7 +6443,6 @@ msgstr "" "genera un :exc:`ImportError`. (Contribuido por Christian Heimes.)" #: ../Doc/whatsnew/2.6.rst:3052 -#, fuzzy msgid "" "Several functions return information about the platform's floating-point " "support. :c:func:`PyFloat_GetMax` returns the maximum representable " @@ -5887,14 +6453,14 @@ msgid "" "and the next largest value representable), and several others. (Contributed " "by Christian Heimes; :issue:`1534`.)" msgstr "" -"Varias funciones devuelven información sobre el soporte de punto flotante de " -"la plataforma. :c:func:`PyFloat_GetMax` devuelve el máximo valor de punto " -"flotante representable, y :c:func:`PyFloat_GetMin` devuelve el mínimo valor " -"positivo. :c:func:`PyFloat_GetInfo` devuelve un objeto que contiene más " -"información del fichero :file:`float.h`, como ``\"mant_dig\"`` (número de " -"dígitos en la mantisa), ``\"epsilon\"`` (diferencia más pequeña entre 1.0 y " -"el siguiente valor más grande representable), y varios otros. (Contribución " -"de Christian Heimes; :issue:`1534`.)" +"Varias funciones devuelven información sobre la compatibilidad de punto " +"flotante de la plataforma. :c:func:`PyFloat_GetMax` devuelve el valor máximo " +"representable de punto flotante y :c:func:`PyFloat_GetMin` devuelve el valor " +"positivo mínimo. :c:func:`PyFloat_GetInfo` devuelve un objeto que contiene " +"más información del archivo :file:`float.h`, como ``\"mant_dig\"`` (número " +"de dígitos en la mantisa), ``\"epsilon\"`` (diferencia más pequeña entre 1.0 " +"y el siguiente valor más grande representable) y varios otros. (Contribuido " +"por Christian Heimes; :issue:`1534`.)" #: ../Doc/whatsnew/2.6.rst:3063 msgid "" @@ -6036,7 +6602,6 @@ msgstr "" "Christian Heimes con la ayuda de Amaury Forgeot d'Arc y Martin von Löwis)" #: ../Doc/whatsnew/2.6.rst:3131 -#, fuzzy msgid "" "The :mod:`msvcrt` module now supports both the normal and wide char variants " "of the console I/O API. The :func:`~msvcrt.getwch` function reads a " @@ -6044,11 +6609,11 @@ msgid "" "function. The :func:`~msvcrt.putwch` function takes a Unicode character and " "writes it to the console. (Contributed by Christian Heimes.)" msgstr "" -"El módulo :mod:`msvcrt` soporta ahora las variantes normal y wide char de la " -"API de E/S de la consola. La función :func:`getwch` lee una pulsación de " -"tecla y devuelve un valor Unicode, al igual que la función :func:`getwche`. " -"La función :func:`putwch` toma un carácter Unicode y lo escribe en la " -"consola. (Contribución de Christian Heimes)" +"El módulo :mod:`msvcrt` ahora admite las variantes de caracteres normales y " +"anchos de la API de E/S de la consola. La función :func:`~msvcrt.getwch` lee " +"una pulsación de tecla y devuelve un valor Unicode, al igual que la función :" +"func:`~msvcrt.getwche`. La función :func:`~msvcrt.putwch` toma un carácter " +"Unicode y lo escribe en la consola. (Contribuido por Christian Heimes)." #: ../Doc/whatsnew/2.6.rst:3138 msgid "" @@ -6061,18 +6626,16 @@ msgstr "" "del usuario. (Contribución de Josiah Carlson; :issue:`957650`.)" #: ../Doc/whatsnew/2.6.rst:3142 -#, fuzzy msgid "" "The :mod:`socket` module's socket objects now have an :meth:`~socket.socket." "ioctl` method that provides a limited interface to the :c:func:`WSAIoctl` " "system interface." msgstr "" -"Los objetos socket del módulo :mod:`socket` tienen ahora un método :meth:" -"`ioctl` que proporciona una interfaz limitada a la interfaz del sistema :c:" -"func:`WSAIoctl`." +"Los objetos de socket del módulo :mod:`socket` ahora tienen un método :meth:" +"`~socket.socket.ioctl` que proporciona una interfaz limitada a la interfaz " +"del sistema :c:func:`WSAIoctl`." #: ../Doc/whatsnew/2.6.rst:3146 -#, fuzzy msgid "" "The :mod:`_winreg ` module now has a function, :func:`~winreg." "ExpandEnvironmentStrings`, that expands environment variable references such " @@ -6080,15 +6643,14 @@ msgid "" "module now support the context protocol, so they can be used in :keyword:" "`with` statements. (Contributed by Christian Heimes.)" msgstr "" -"El módulo :mod:`_winreg` tiene ahora una función, :func:" -"`ExpandEnvironmentStrings`, que expande las referencias a variables de " -"entorno como ``%NAME%`` en una cadena de entrada. Los objetos handle " -"proporcionados por este módulo ahora soportan el protocolo de contexto, por " -"lo que pueden ser utilizados en sentencias :keyword:`with`. (Contribuido por " -"Christian Heimes.)" +"El módulo :mod:`_winreg ` ahora tiene una función, :func:`~winreg." +"ExpandEnvironmentStrings`, que expande las referencias de variables de " +"entorno como ``%NAME%`` en una cadena de entrada. Los objetos de control " +"proporcionados por este módulo ahora admiten el protocolo de contexto, por " +"lo que se pueden utilizar en instrucciones :keyword:`with`. (Contribuido por " +"Christian Heimes)." #: ../Doc/whatsnew/2.6.rst:3153 -#, fuzzy msgid "" ":mod:`_winreg ` also has better support for x64 systems, exposing " "the :func:`~winreg.DisableReflectionKey`, :func:`~winreg." @@ -6096,23 +6658,21 @@ msgid "" "which enable and disable registry reflection for 32-bit processes running on " "64-bit systems. (:issue:`1753245`)" msgstr "" -":mod:`_winreg` también tiene un mejor soporte para los sistemas x64, " -"exponiendo las funciones :func:`DisableReflectionKey`, :func:" -"`EnableReflectionKey`, y :func:`QueryReflectionKey`, que habilitan y " -"deshabilitan la reflexión del registro para los procesos de 32 bits que se " -"ejecutan en sistemas de 64 bits. (:issue:`1753245`)" +":mod:`_winreg ` también tiene un mejor soporte para sistemas x64, " +"exponiendo las funciones :func:`~winreg.DisableReflectionKey`, :func:" +"`~winreg.EnableReflectionKey` y :func:`~winreg.QueryReflectionKey`, que " +"habilitan y deshabilitan la reflexión del registro para procesos de 32 bits " +"que se ejecutan en sistemas de 64 bits. (:issue:`1753245`)" #: ../Doc/whatsnew/2.6.rst:3159 -#, fuzzy msgid "" "The :mod:`!msilib` module's :class:`!Record` object gained :meth:`!" "GetInteger` and :meth:`!GetString` methods that return field values as an " "integer or a string. (Contributed by Floris Bruynooghe; :issue:`2125`.)" msgstr "" -"El objeto :class:`Record` del módulo :mod:`msilib` ha ganado los métodos :" -"meth:`GetInteger` y :meth:`GetString` que devuelven los valores de los " -"campos como un entero o una cadena. (Contribución de Floris Bruynooghe; :" -"issue:`2125`.)" +"El objeto :class:`!Record` del módulo :mod:`!msilib` obtuvo los métodos :" +"meth:`!GetInteger` y :meth:`!GetString` que devuelven valores de campo como " +"un entero o una cadena. (Contribuido por Floris Bruynooghe; :issue:`2125`)." #: ../Doc/whatsnew/2.6.rst:3167 msgid "Port-Specific Changes: Mac OS X" @@ -6129,18 +6689,16 @@ msgstr "" "`!--with-framework-name=` al script :program:`configure`." #: ../Doc/whatsnew/2.6.rst:3174 -#, fuzzy msgid "" "The :mod:`!macfs` module has been removed. This in turn required the :func:" "`!macostools.touched` function to be removed because it depended on the :mod:" "`!macfs` module. (:issue:`1490190`)" msgstr "" -"Se ha eliminado el módulo :mod:`macfs`. Esto, a su vez, ha requerido la " -"eliminación de la función :func:`macostools.touched` porque dependía del " -"módulo :mod:`macfs`. (:issue:`1490190`)" +"Se ha eliminado el módulo :mod:`!macfs`. Esto a su vez requirió que se " +"eliminara la función :func:`!macostools.touched` porque dependía del módulo :" +"mod:`!macfs`. (:issue:`1490190`)" #: ../Doc/whatsnew/2.6.rst:3178 -#, fuzzy msgid "" "Many other Mac OS modules have been deprecated and will be removed in Python " "3.0: :mod:`!_builtinSuites`, :mod:`!aepack`, :mod:`!aetools`, :mod:`!" @@ -6154,23 +6712,23 @@ msgid "" "OSATerminology`, :mod:`!pimp`, :mod:`!PixMapWrapper`, :mod:`!StdSuites`, :" "mod:`!SystemEvents`, :mod:`!Terminal`, and :mod:`!terminalcommand`." msgstr "" -"Muchos otros módulos de Mac OS han quedado obsoletos y serán eliminados en " -"Python 3.0: :mod:`_builtinSuites`, :mod:`aepack`, :mod:`aetools`, :mod:" -"`aetypes`, :mod:`applesingle`, :mod:`appletrawmain`, :mod:`appletrunner`, :" -"mod:`argvemulator`, :mod:`Audio_mac`, :mod:`autoGIL`, :mod:`Carbon`, :mod:" -"`cfmfile`, :mod:`CodeWarrior`, :mod:`ColorPicker`, :mod:`EasyDialogs`, :mod:" -"`Explorer`, :mod:`Finder`, :mod:`FrameWork`, :mod:`findertools`, :mod:`ic`, :" -"mod:`icglue`, :mod:`icopen`, :mod:`macerrors`, :mod:`MacOS`, :mod:`macfs`, :" -"mod:`macostools`, :mod:`macresource`, :mod:`MiniAEFrame`, :mod:`Nav`, :mod:" -"`Netscape`, :mod:`OSATerminology`, :mod:`pimp`, :mod:`PixMapWrapper`, :mod:" -"`StdSuites`, :mod:`SystemEvents`, :mod:`Terminal`, y :mod:`terminalcommand`." +"Muchos otros módulos de Mac OS han quedado obsoletos y se eliminarán en " +"Python 3.0: :mod:`!_builtinSuites`, :mod:`!aepack`, :mod:`!aetools`, :mod:`!" +"aetypes`, :mod:`!applesingle`, :mod:`!appletrawmain`, :mod:`!appletrunner`, :" +"mod:`!argvemulator`, :mod:`!Audio_mac`, :mod:`!autoGIL`, :mod:`!Carbon`, :" +"mod:`!cfmfile`, :mod:`!CodeWarrior`, :mod:`!ColorPicker`, :mod:`!" +"EasyDialogs`, :mod:`!Explorer`, :mod:`!Finder`, :mod:`!FrameWork`, :mod:`!" +"findertools`, :mod:`!ic`, :mod:`!icglue`, :mod:`!icopen`, :mod:`!" +"macerrors`, :mod:`!MacOS`, :mod:`!macfs`, :mod:`!macostools`, :mod:`!" +"macresource`, :mod:`!MiniAEFrame`, :mod:`!Nav`, :mod:`!Netscape`, :mod:`!" +"OSATerminology`, :mod:`!pimp`, :mod:`!PixMapWrapper`, :mod:`!StdSuites`, :" +"mod:`!SystemEvents`, :mod:`!Terminal` y :mod:`!terminalcommand`." #: ../Doc/whatsnew/2.6.rst:3221 msgid "Port-Specific Changes: IRIX" msgstr "Cambios específicos en los puertos: IRIX" #: ../Doc/whatsnew/2.6.rst:3223 -#, fuzzy msgid "" "A number of old IRIX-specific modules were deprecated and will be removed in " "Python 3.0: :mod:`!al` and :mod:`!AL`, :mod:`!cd`, :mod:`!cddb`, :mod:`!" @@ -6180,13 +6738,13 @@ msgid "" "jpeg`, :mod:`!panelparser`, :mod:`!readcd`, :mod:`!SV` and :mod:`!sv`, :mod:" "`!torgb`, :mod:`!videoreader`, and :mod:`!WAIT`." msgstr "" -"Una serie de antiguos módulos específicos de IRIX fueron obsoletos y serán " -"eliminados en Python 3.0: :mod:`al` y :mod:`AL`, :mod:`cd`, :mod:`cddb`, :" -"mod:`cdplayer`, :mod:`CL` y :mod:`cl`, :mod:`DEVICE`, :mod:`ERRNO`, :mod:" -"`FILE`, :mod:`FL` y :mod:`fl`, :mod:`flp`, :mod:`fm`, :mod:`GET`, :mod:" -"`GLWS`, :mod:`GL` y :mod:`gl`, :mod:`IN`, :mod:`IOCTL`, :mod:`jpeg`, :mod:" -"`panelparser`, :mod:`readcd`, :mod:`SV` y :mod:`sv`, :mod:`torgb`, :mod:" -"`videoreader` y :mod:`WAIT`." +"Varios módulos antiguos específicos de IRIX quedaron obsoletos y se " +"eliminarán en Python 3.0: :mod:`!al` y :mod:`!AL`, :mod:`!cd`, :mod:`!" +"cddb`, :mod:`!cdplayer`, :mod:`!CL` y :mod:`!cl`, :mod:`!DEVICE`, :mod:`!" +"ERRNO`, :mod:`!FILE`, :mod:`!FL` y :mod:`!fl`, :mod:`!flp`, :mod:`!fm`, :mod:" +"`!GET`, :mod:`!GLWS`, :mod:`!GL` y :mod:`!gl`, :mod:`!IN`, :mod:`!IOCTL`, :" +"mod:`!jpeg`, :mod:`!panelparser`, :mod:`!readcd`, :mod:`!SV` y :mod:`!sv`, :" +"mod:`!torgb`, :mod:`!videoreader` y :mod:`!WAIT`." #: ../Doc/whatsnew/2.6.rst:3253 msgid "Porting to Python 2.6" @@ -6294,7 +6852,6 @@ msgstr "" "Smith; :issue:`1706815`.)" #: ../Doc/whatsnew/2.6.rst:3303 -#, fuzzy msgid "" "The :mod:`xmlrpclib ` module no longer automatically " "converts :class:`datetime.date` and :class:`datetime.time` to the :class:" @@ -6303,12 +6860,12 @@ msgid "" "xmlrpclib` should convert :class:`date` and :class:`~datetime.time` " "instances. (:issue:`1330538`)" msgstr "" -"El módulo :mod:`xmlrpclib` ya no convierte automáticamente las instancias :" +"El módulo :mod:`xmlrpclib ` ya no convierte automáticamente :" "class:`datetime.date` y :class:`datetime.time` al tipo :class:`xmlrpclib." -"DateTime`; la semántica de conversión no era necesariamente correcta para " -"todas las aplicaciones. El código que utiliza :mod:`xmlrpclib` debe " -"convertir las instancias :class:`date` y :class:`~datetime.time`. (:issue:" -"`1330538`)" +"DateTime `; la semántica de conversión no era " +"necesariamente correcta para todas las aplicaciones. El código que utiliza :" +"mod:`!xmlrpclib` debería convertir las instancias :class:`date` y :class:" +"`~datetime.time`. (:issue:`1330538`)" #: ../Doc/whatsnew/2.6.rst:3310 msgid "" @@ -6343,7 +6900,7 @@ msgstr "" #: ../Doc/whatsnew/2.6.rst:3323 msgid "For applications that embed Python:" -msgstr "" +msgstr "Para aplicaciones que incorporan Python:" #: ../Doc/whatsnew/2.6.rst:3325 msgid "" @@ -6353,6 +6910,11 @@ msgid "" "PySys_SetArgv` and carefully consider whether the application should be " "using :c:func:`!PySys_SetArgvEx` with *updatepath* set to false." msgstr "" +"La función :c:func:`!PySys_SetArgvEx` se agregó en Python 2.6.6, lo que " +"permite que las aplicaciones cierren un agujero de seguridad cuando se usa " +"la función :c:func:`!PySys_SetArgv` existente. Verifique si está llamando a :" +"c:func:`!PySys_SetArgv` y considere cuidadosamente si la aplicación debería " +"usar :c:func:`!PySys_SetArgvEx` con *updatepath* configurado como falso." #: ../Doc/whatsnew/2.6.rst:3338 msgid "Acknowledgements"